Замена диска может понадобиться при сбое, для увеличения пространства, для перехода с ssd sata 3.0 на nvme, для замены диска на более надёжный или при исчерпании ресурса диска
Процедура
- Вывести диск из массива
- Перенести разметку с оставшегося диска в массиве на новый
- Добавить новый диск в массив и дождаться синхронизации
- Скопировать загрузчик (разделы) с оставшегося в массиве диска на новый
- Радоваться результату
Пример
Собственно рассмотрим конкретный пример.
Что имеем?
- zroot — основной пул на котором размещена система, пул создан как зеркало (mirror)
- nda1, nda0 — диски zroot (nvme-диски)
- nda1p4, nda0p4 — разделы зеркала пула zroot
- nda0 — диск который меняем
- nda2 — диск на который меняем
Что делаем?
Просмотр данных о пулах zfs
#zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH
zroot 236G 94.9G 141G - - 17% 40% 1.00x ONLINE
Просмотр текущего статуса пула zroot и информации о дисках в этом пуле
#zpool status zroot
pool: zroot
state: ONLINE
status: Some supported and requested features are not enabled on the pool.
The pool can still be used, but some features are unavailable.
action: Enable all features using 'zpool upgrade'. Once this is done,
the pool may no longer be accessible by software that does not support
the features. See zpool-features(7) for details.
scan:
config:
NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
nda1p4 ONLINE 0 0 0
nda0p4 ONLINE 0 0 0
errors: No known data errors
Отключаем раздел от зеркала
#zpool detach nda0p4
Уничтожаем разметку на добавляемом диске
#gpart destroy -F nda2
Резервное копирование таблицы разделов при помощи gpart оставшегося в зеркале диска (nda1)
#gpart backup nda1 > nda1.backup
Копирование резервной таблицы разделов при помощи gpart на новый диск (nda2)
#gpart restore nda2 < nda1.backup
Копируем раздел необходимый для загрузки на новый диск
#dd if=/dev/nda1p1 of=/nda2p1
Копируем раздел необходимый для загрузки на новый диск
#dd if=/dev/nda1p2 of=/nda2p2
Добавляем новый диск в зеркало (говорим, что nda2p4 является дополнительным диском для nda1p4 и мастером будет nda1p4 при синхронизации
#zpool attach zroot nda1p4 nda2p4
Проверяем что пошла синхронизация (прогресс виден в разделе scrub: resilving)
#zpool status zroot
Дополнительно
Если вы хотите просто заменить диск в любом другом зеркале (и не обязательно в зеркале) — пропустите ту часть где копирование разделов необходимых для загрузки
UNIX