Превращаем zfs пул на номерах разделов в пул на GPT метках
Jul 30, 2015 00:17
Намедни мы создавали zfs пул в nas4free 10 через вебгуй. Удалось сделать это без .nop трюков и по номеру GPT раздела. Сегодня с использованием командной строки мы превратим его в пул на GPT метках.
Напомним, что до настоящего времени zfs пулы в nas4free создавались на .nop устройствах поверх сырых дисков. В 10-ке (тестировал на крайней 10.1.0.2 - Prescience (revision 1731)) nop устройства создавать не надо, тк пулы по умолчанию создаются с ashift=12, как рекомендовано для дисков с 4K сектором. Кроме того, появилась возможность создания пулов через вебгуй не только на сырых дисках, но и на номерах GPT разделов. (Для буквоедов - на слайсах, конечно, но мне лень влезать в терминологические дебри). А с использованием небольшого бубна в любой момент пул на номерах GPT разделов (типа /dev/ada2p1) можно превратить в пул на GPT метках (типа gpt/D_Z300V84, где в качестве цифири удобно использовать серийный номер диска). Вот этот бубен и рассмотрим.
1) Вот так выглядит пул, созданный на GPT через вебгуй. Если добавить новых дисков, есть риск, что ada2 уедет, скажем, на ada4. В большинстве случаев zfs справляется с такой проблемой, но бывают и накладки. Особенно в комбинации с вебгуем. nas4free: ~# zpool status TestPool pool: TestPool state: ONLINE scan: none requested config:
NAME STATE READ WRITE CKSUM TestPool ONLINE 0 0 0 ada2p1 ONLINE 0 0 0
errors: No known data errors
nas4free: ~# zfs list TestPool NAME USED AVAIL REFER MOUNTPOINT TestPool 300K 9.63G 96K /mnt/TestPool
4) Эскпортируем пул и вновь импортируем, но уже на GPT метках nas4free: ~# zpool export TestPool nas4free: ~# zpool import -d /dev/gpt -f -a
5) Смотрим, что вышло nas4free: ~# zpool status TestPool pool: TestPool state: ONLINE scan: none requested config:
NAME STATE READ WRITE CKSUM TestPool ONLINE 0 0 0 gpt/VB763b8b793c8d656d ONLINE 0 0 0
errors: No known data errors
Замечательно - пул теперь на метках. Как ни тасуй номера дисков - метки сохранятся. Если вылетит какой-то диск - сразу видно, какой у него серийный номер. А если дисков много - это дело.
6) Сообщим о достигнутом вебгую
Идём в Disks|ZFS|Configuration|Synchronize
Нажав соседние вкладки, можно видеть, что Current (записано в конфиге) - /dev/ada2p1, а Detected (считано с пула) - gpt/VB763b8b793c8d656d
Синхронизируем конфиг с реальностью, нажав кнопку Synchronize. Для надёжности я перегрузил машину и убедился, что всё OK.
PS На всякий случай те же операции для простого raidz на 3 диска под спойлером [Код...]nas4free: ~# zpool status PoolZ pool: PoolZ state: ONLINE scan: none requested config: