Как стать автором
Обновить

Восстановление «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)
.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.