Freebsd: ZFS — «Правильная» замена диска в зеркале (mirror)

Файловая система ZFS фактически стала основной в FreeBSD и для многодисковых систем (в том числе и на SSD). ZFS обеспечивает хорошую производительность. Это достигается даже при встроенном стандартном кешировании. Для ускорения и повышения надёжности файловых операций в высоконагруженных системах используются ZIL и l2arc.
ZFS чрезвычайно устойчива к сбоям — максимум, что грозит — это откат к предыдущей версии файла(ов). Также есть штачная система сохранения состояний — snapshots — создаёте и в случае непредвиденного восстанавливаете предыдущее состояние.
Замена накопителя может понадобиться при сбое, для увеличения пространства, для перехода с ssd sata 3.0 на nvme, для обновления устройства на более надёжное или при исчерпании его ресурса.

Замена диска может понадобиться при сбое, для увеличения пространства, для перехода с 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

Дополнительно

Если вы хотите просто заменить диск в любом другом зеркале (и не обязательно в зеркале) — пропустите ту часть где копирование разделов необходимых для загрузки

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *