Заміна несправного диска в корені 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

Примітка: Перш ніж продовжити процес заміни диска, переконайтеся, що ви правильно визначили несправний диск. Також переконайтеся, що у вас є запасний диск для заміни.

Покрокове керівництво по заміні несправного диска в корені ZFS

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

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

zpool list
Заміна несправного диска в корені ZFS

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

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

Висновок

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