Відновлення «Local Storage» після падіння XenServer

Стаття складається із трьох пунктів:

  • опис причини та слідства
  • аналіз системи
  • відновлення роботи
Термінологія: LVM - Logical Volume Manager PV - Physical Volume PBD - Physical Block Device VBD - Virtual Block Device VG - Virtual Group VM - Virtual Machine SR - Storage Repository

Опис причини та наслідки

У будівлі вимкнули світло на тривалий час, після чого почали вимикатися серверні UPS'и, першим вимкнувся UPS майстра в пулі серверів.Слідство: після відновлення живлення та запуску сервера, пул розсипався.

Аналіз системи

При запуску XenServer'а пул виявився порожнім, а VM знаходилися поза пулом. Насамперед дивився логи запуску пулу, що дало таку інформацію«Internal error: there is no bootable device». Як виявилосязагубився«Local Storage». Щоб переконатися в цьому, подивився uuid диска через gui і в консолі майстра ввів# xe sr-listЦя команда виводить інформацію про всі підключені сховища. Команда нічого не вивела, далі перевірив список VBD# xe vbd-listу пунктах vdi-uuid замість uuid булоі природно команда# xe vdi-listнічого не виводить.

Вирішив повірити сховища на рівні LVM, спершу перевірив список PV командою# pvscanВиявив, що PV є; так само ввів команду# pvdisplayІ вона мені нічого не повернула. Тобто, після падіння загубилися метадані, а це означає, що фізично інформація збереглася і все на місці. Один з корисних пряників LVM полягає в тому, що він робить бекапи метаданих автоматично при створенні та наповненні пулу, але можна робити їх і в ручну командою# xe pool-dump-database. Далі перевірив наявність бекапу метаданих# ls -lh /etc/lvm/backup/бекап є, можна починати відновлення.

Відновлення роботи

І так, бекап є вводжу команду для відновлення метаданих VG# vgcfgrestore VG_XenStorage-XXXXде VG_XenStorage-XXXX - це ім'я файлу бекапу; але отримав помилку про те, що немає девайса із зазначеним uuid. Недовго думаючи вирішив порівняти PV UUID з виведення команди# pvdisplayC ID із файлу бекапу (блок physical_volumes) вони не збігаються, але партиція збігається. І це також не біда. Вилучив стратий PV# pvremove /dev/sdXYде X — це порядковий номер диска (використовуються латинські літери a, b, c, d і т.д.), а Y – порядковий номер партиції на диску (використовуються цифри 1, 2, 3 тощо). Далі створив новий PV в той же розділ# pvcreate /dev/sdXYНепер замінив ID пристрою у файлі бекапу, у блоці physical_volumes, на отриманий PV UUID нового PV. Тепер знову пробую накотити бекап метаданих# vgcfgrestore VG_XenStorage-XXXXкоманда повернула успіх.

Далі керуючись статтею від Citrix додаємо «Local Storage» до пула: 1) Виявляю SR-UUID поточного диска за допомогою# pvscanкоманда повертає VG_XenStorage-XXXX, де XXXX — це та є необхідний SR-UUID.

2) Далі вводжу SR# xe sr-introduce uu content-type=user

3) Тепер треба створити PBD з існуючого PV, але для цього треба отримати SCSI ID пристрою, UUID хоста та SR-UUID (він вже мережа) 3.1) Дізнаюся SCSI ID# ls -l /disk/by-id/Команда повернула: lrwxrwxrwx 1 root root 10 Чер 4 17:35 scsi-SATA_ST32000645NS_Z2939GCT-part3 -> ../../sdXY; Необхідний SCSI ID це "scsi-SATA_ST32000645NS_Z2939GCT-part3", якийрозташований на партиції /dev/sdXY - на якій раніше створювали PV.Примітка: SCSI ID — не збігатиметься з вашим, для прикладу я використав свій.

3.2) UUID хота, отримую наступною командою# xe host-list params=uuid; Команда виводить тільки UUID: uuid (RO): YYYY, де YYYY - це і є UUID хоста.

3.3.) Тепер коду все є створюємо PBD# xe pbd-create sr-uu & gt;. Команда повертає UUID цього запису.

4) Тепер прикрутимо «Local Storage» у XenServer# xe pbd-plug uu >, де ZZZZ - це і є UUID отриманий у пункті 3.3.

Тепер пул бачить свій "Locale Storage", а в ньому є віртуальні диски, залишилося лише одне, підключити VM їх диски.

Примітка: якщо у вас зникли імена віртуальних машин, це не страшно. Методом перебору, підберіть диск до VM і за допомогою налаштування вкажіть їм імена. Теж стосується і імені локального сховища.

Всі дії були зроблені на підставі документації від RadHat (LVM) та Citrix (XenServer) .

А у нас тут можна отримати грант на тестовий період Яндекс.Хмари. Варто лише у полі «секретний пароль» запровадити «Хабр»

Написав гарний текст – отримав запрошення.

У «Пісочниці» діє премодерація: перед публікацією всі матеріали проходять через дбайливе проміння НЛО.

З великою ймовірністю не пройдуть премодерацію: