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

Вступні поняття

Цей документ є посібником для адміністраторів та осіб, які мають певний рівень знань про обчислювальні апаратні платформи та концепції зберігання даних, такі як RAID. Якщо ви вже маєте уявлення про загальний процес відмови, то можете перейти до розділів, присвячених заміні диска і відновленню пулу.

Ступені багатослівності

При відмові диска або виникненні помилок SmartOS записує в журнал велику кількість інформації. Щоб з'ясувати причину відмови диска, необхідне більш детальне вивчення інформації. Нижче наведено команди в порядку убування їхньої складності:

Команда 'zpool status' надає огляд стану пулу.

Команда iostat надає нам дані про кількість помилок на високому рівні, а також специфічну інформацію про пристрої.

Команда fmadm faulty допоможе точніше визначити причину відмови диска. fmadm також здатний усувати тимчасові збої;

Команда fmdump дає змогу отримати журнал подій збоїв за останні {n} днів. Крім заміни несправних дисків, ця інформація може бути дуже корисною для виявлення основної причини проблеми, якщо проблема складніша, ніж проста відмова диска.

Загальний процес відмови

У системі, коли відбувається відмова диска, ZFS не є першим компонентом, який виявляє його і реагує на нього. Замість цього відбувається такий загальний порядок подій:

1. FMA (Fault Management Architecture) виявляє і реєструє збійний диск. FMA відстежує та керує апаратними збоями в системі.

2. Після того як FMA виявляє збійний диск, операційна система вживає заходів і видаляє диск із системи.

3. Потім про зміну стану диска дізнається ZFS, яка є надійною і масштабованою файловою системою. ZFS виявляє, що диск було видалено, і реагує на це відмовою пристрою. Відмова пристрою означає, що ZFS позначає диск як несправний і вживає необхідних заходів для підтримки цілісності та доступності даних.

Цей загальний процес усунення несправностей гарантує, що будь-які відмови дисків у системі будуть своєчасно виявлені, зареєстровані та відреаговані відповідними компонентами. Спочатку FMA ідентифікує збійний диск, потім операційна система видаляє його, і, нарешті, 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