Pull to refresh

Восстановление «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
Oбнаружил, что PV есть; так же ввел команду
# pvdisplay
И она мне ничего не вернула. То есть после падения потерялись метаданные, а это значит, что физически информация сохранилась и все на месте. Один из полезных пряников LVM состоит в том что, он делает бэкапы метаданных автоматически при создании и наполнении пула, но можно делать их и в ручную коммандой
# xe pool-dump-database.
Далее проверил наличие бэкапа метаданных
# ls -lh /etc/lvm/backup/
бэкап есть, можно начинать восстановление.

Восстановление работы

И так, бэкап есть ввожу команду для восстановления метаданных VG
# vgcfgrestore VG_XenStorage-XXXX
где VG_XenStorage-XXXX — это имя файла бэкапа; но получил ошибку о том, что нет девайса с указанным uuid. Недолго думая решил сравнить PV UUID из вывода команды
# pvdisplay
C ID из файла бэкапа (блок physical_volumes) они не совпадают, но партиция совпадает. И это тоже не беда.
Удалил стратый PV
# pvremove /dev/sdXY
где X — это порядковый номер диска (используются латинские буквы a, b, c, d и т.д.), а Y — порядковый номер партиции на диске (используются цифры 1, 2, 3 и т.д.).
Далее создал новый PV в тот же раздел
# pvcreate /dev/sdXY
Nеперь заменил 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 uuid=XXXX type=lvm name-label="Local storage" content-type=user

3) Тперь надо созданить PBD из существующего PV, но для этого надо получить SCSI ID устройства, UUID хоста и SR-UUID (он уже сеть)
3.1) Узнаю SCSI ID
# ls -l /dev/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-uuid=XXX device-config:device=/dev/disk/by-id/scsi-SATA_ST380815AS_6QZ5Z1AM-part3 host-uuid=YYYY.
Команда возвращает UUID этой записи.

4) Теперь прикрутим «Local Storage» в XenServer
# xe pbd-plug uuid=ZZZZ, где ZZZZ — это и есть UUID полученный в пункте 3.3.

Теперь пул видит свой «Locale Storage», а в нем есть виртуальные диски, осталось только одно, подключить VM их диски.

Примечание: если у вас пропали имена виртуальных машин, это нестрашно. Методом перебора, подберите диск к VM и через настройки укажите им имена. Тоже касается и имени локального хранилища.

Все действия были произведены на основании документации от RadHat (LVM) и Citrix (XenServer)
.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.