Заміна збійного диска в корені ZFS

Покрокове керівництво по заміні диска, що вийшов з ладу в корені ZFS

Припустимо, у сервера 2 диски: /dev/sda і /dev/sdb
Один із дисків вийшов із ладу, наприклад, це /dev/sdb
Пошкоджений диск потрібно замінити.

Для початку визначимо наш пул командою:

zpool list

Перед заміною диска бажано прибрати диск із масиву:

zpool detach rpool /dev/sdb

Далі вимикаємо сервер, якщо у вас немає можливості гарячої заміни дисків, а так все нижче описане можна виконати, не зупиняючи сервер - якщо є контролер і hotswap

poweroff

Робимо фізичну заміну збійного диска.

Визначення таблиці розділів (GPT або MBR) та її перенесення на новий диск

Після заміни пошкодженого диска потрібно визначити тип таблиці розділів: GPT чи MBR.
Для цього використовується gdisk. Встановіть gdisk:

apt-get install gdisk -y

Виконайте команду:

gdisk -l /dev/sda

Де /dev/sda - справний диск, що перебуває в RAID.

Для MBR у виводі буде приблизно таке:

Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present

Для GPT приблизно таке:

Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present

Перед додаванням диска в масив на ньому потрібно створити розділи точнісінько такі самі, як і на справному диску sda. Залежно від розмітки диска це робиться по-різному.

Копіювання розмітки для GPT

Для копіювання розмітки GPT виконайте команду:

Зверніть увагу!
Першим пишеться диск, на який копіюється розмітка, а другим - з якого копіюють.
Якщо переплутати їх місцями, то розмітка на спочатку справному диску буде знищена.

sgdisk -R /dev/sdb /dev/sda

Присвойте диску новий випадковий UUID:

sgdisk -G /dev/sdb

Копирование разметки для MBR

Для копирования разметки MBR виконайте команду:

Обратите внимание!
Здесь первым пишется диск, с которого переносим разметку, а вторым — на который переносим.

sfdisk -d /dev/sda | sfdisk /dev/sdb

Якщо розділи не видно в системі, то можна перечитати таблицю розділів командою:

sfdisk -R /dev/sdb

Встановлення завантажувача

Після розмітки диска потрібно встановити на нього завантажувач:

grub-install /dev/sdb

Додавання диска

Вказуємо який диск ми збираємося замінити (у нашому випадку це /dev/sdb3):

zpool replace rpool /dev/sdb3

Додаємо диск у рейд:

zpool online rpool /dev/sdb3

Чекаємо на закінчення синхронізації масиву:

zpool status