Dell R720: PERC H710, MegaCLI та порятунок ZFS
Шпаргалка з діагностики LSI/PERC контролерів, встановлення MegaCLI та створення ZFS Mirror з нерозмічених дисків "на льоту".
Теорія: ZFS поверх Hardware RAID
Найголовніше правило ZFS: Вона повинна мати прямий доступ до фізичних дисків.
Контролери на кшталт Dell PERC H710 (LSI 2208) за замовчуванням створюють апаратні масиви. Якщо ви віддаєте ZFS один логічний диск, зліплений контролером (RAID 0 або RAID 1):
- ZFS втрачає здатність самостійно виправляти пошкоджені біти (bit-rot).
- ZFS не бачить реального стану S.M.A.R.T. дисків.
- У разі поломки контролера, дані важко перенести на інший сервер.
💡 Ідеальне рішення: Прошивка RAID-контролера в IT Mode (Initiator Target Mode) (або заміна на HBA-адаптер типу H310). Це перетворює його на "тупий" міст, який віддає диски безпосередньо операційній системі. Тимчасове рішення: Створення окремого логічного масиву RAID 0 для кожного диска поштучно.
Встановлення MegaCLI (Debian / Ubuntu)
Оскільки контролери Dell PERC побудовані на чипах LSI, для керування ними використовується стандартна утиліта megacli.
wget -O /etc/apt/trusted.gpg.d/hwraid.asc [https://hwraid.le-vert.net/debian/hwraid.le-vert.net.gpg.key](https://hwraid.le-vert.net/debian/hwraid.le-vert.net.gpg.key)
echo "deb [http://hwraid.le-vert.net/debian](http://hwraid.le-vert.net/debian) bookworm main" > /etc/apt/sources.list.d/hwraid.list
apt update
apt install megacli megaclisas-status -y
Діагностика RAID-контролера
1. Перевірка батареї (BBU - Battery Backup Unit)
Перевіряє, чи жива батарейка, яка захищає кеш при раптовому знеструмленні:
megacli -AdpBbuCmd -aAll
(Шукайте Battery State: Optimal та isSOHGood: Yes).
2. Перегляд усіх фізичних дисків (PD)
Показує список дисків у корзинах, їх температуру, WWN та статус:
megacli -PDList -aALL
(Зверніть увагу на диски зі статусом Unconfigured(good) — вони підключені, але не використовуються системою).
3. Перегляд логічних дисків (LD)
megacli -LDInfo -Lall -aALL
Як додати чистий диск у ZFS Mirror "на льоту"
Якщо у вас ZFS працює на одному диску (без надмірності), і ви знайшли нерозмічений диск (Unconfigured(good)) у корзині сервера:
Крок 1: Віддаємо чистий диск операційній системі
Створюємо RAID 0 з одного диска для нового накопичувача (знайдіть його Enclosure ID та Slot Number у виводі megacli -PDList):
megacli -CfgLdAdd -r0 [[enclosure_id]:[slot_id]] -a0
Після цього виконайте lsblk, щоб переконатися, що з'явився новий диск (наприклад, sdc).
Крок 2: Знаходимо апаратний ID нового диска
Ніколи не використовуйте імена /dev/sdX у ZFS! Після перезавантаження вони можуть змінитися. Завжди використовуйте ID диска:
ls -l /dev/disk/by-id/
(Знайдіть рядок, який вказує на ваш новий диск, наприклад wwn-0x5000cca... -> ../../sdc, і скопіюйте це ім'я).
Крок 3: Прив'язуємо новий диск як дзеркало
Даємо команду ZFS підключити новий диск до старого розділу:
zpool attach [pool_name] [old_disk] /dev/disk/by-id/[new_disk_id]
Крок 4: Моніторинг процесу синхронізації (Resilvering)
ZFS автоматично почне фонове копіювання даних на новий диск. Спостерігати за прогресом можна командою:
watch -n 2 zpool status
(Дочекайтеся, поки статус scan покаже завершення процесу. Після цього ваші дані повністю захищені від виходу з ладу будь-якого з двох дисків).