Восстановление метаданных домена
Данная инструкция выполняется в том случае, когда бэкап был предварительно сделан, или возможности его сделать нет |
1. Диагностика
Выполняется на SPM-хосте, к которому прикреплен проблемный домен:
В случае наличия файла /etc/lvm/devices/system.devices, его необходимо временно переименовать. |
-
В лог-файле /var/log/vdsm/vdsm.log наблюдаем следующее:
Cannot process volume group 939d6cac-cc99-4216-b1dd-d34ec2fc5052\']' (lvm:615) 2024-05-19 13:03:58,868+0500 INFO (jsonrpc/3) [storage.StorageDomainCache] Looking up domain 939d6cac-cc99-4216-b1dd-d34ec2fc5052: 0.11 seconds (utils:390) 2024-05-19 13:03:58,868+0500 INFO (jsonrpc/3) [vdsm.api] FINISH teardownImage error=Storage domain does not exist: ('939d6cac-cc99-4216-b1dd-d34ec2fc5052',)
-
В выводе команды
vgscan --config 'devices{filter=["a|.|"]}'
указанной *Volume group также нет -
В выводе команды
pvscan --config 'devices{filter=["a|.|"]}'
нет *PV, который принадлежал бы проблемной VG -
В выводе команды
lsblk
находим mpath устройство, которое связано с нашей Volume Group, и выполняем по нему выводparted
:Рисунок 1. Пример:-
Является необходимым multipath устройством, /dev/mapper/36d039ea0002b2950000011ae65580912
-
Volume Group, которая создана на базе этого устройства, f596e06c—2eb2—4d3f—b5a4—248f9473c7ca
parted /dev/mapper/36d039ea0002b2950000011ae65580912 print
Вывод должен быть следующим:
Error: /dev/mapper/36d039ea0002b2950000011ae65580912: unrecognised disk label Model: Linux device-mapper (multipath) (dm) Disk /dev/mapper/36d039ea0002b2950000011ae65580912: 10.7TB Sector size (logical/physical): 512B/4096B Partition Table: unknown Disk Flags:
В случае, если вывод отличается:
-
присутствует метка, таблица разделов, разделы - это и является причиной возникновения проблемы.
Ее возникновением могло послужить прикрепление блочного ус-ва к другому узлу, который выполнил разметку на нем.
-
2. Решение
Действия необходимо выполнять для каждого хоста, на котором наблюдаются проблемы с VG. |
Во время выполнения процедуры необходимо организовать простой для ВМ на данном домене хранения. |
Далее в примере будет все также использоваться блочное ус-во /dev/mapper/36d039ea0002b2950000011ae65580912 - вам необходимо будет заменять на свое |
-
Удостоверяемся, что в бэкапе lvm присутствуют все необходимые слои(logical volumes), которые используются в домене, т.к иначе метаданные по ним восстановлены не будут:
-
Файл бэкапа - /etc/lvm/backup/STORAGE_ID
-
Все слои, находящиеся в домене хранения, - /rhev/data-center/НЕ_MNT_ДИРЕКТОРИЯ/STORAGE_ID(VOLUME GROUP)/DISK_ID(Диски из вкладки
)/СЛОИ_ДИСКА(Именно они и содержат данные)
-
-
Выполняем удаление раздела, если он есть:
parted /dev/mapper/36d039ea0002b2950000011ae65580912 rm PARTITION_ID (1)
1 PARTITION_ID номер раздела. -
Перезагружаем хост (В случае, если на нем есть ВМ из других доменов хранения - предварительно мигрируем их)
-
Очищаем метаданные блочного устройства:
wipefs --all --backup /dev/mapper/36d039ea0002b2950000011ae65580912
-
Выполняем восстановление метаданных physical volume, предварительно необходимо получить его ID из файла бэкапа.
-
Сверяем, что адрес найденного блочного ус-ва соответствует ус-ву, указанному в метаданных
-
Предварительно запускаем в тестовом режиме (Метаданные не будут изменены). Удостоверяемся, что операция прошла успешно
pvcreate --restore-file /etc/lvm/backup/939d6cac-cc99-4216-b1dd-d34ec2fc5052 --uuid PVID /dev/mapper/36001405eaafdfb604b5400a9a69864fd --config 'devices{filter=["a|.*|"]}' -ff --pvmetadatacopies 2 --test
-
Восстанавливаем метаданные PV
pvcreate --restore-file /etc/lvm/backup/939d6cac-cc99-4216-b1dd-d34ec2fc5052 --uuid PVID /dev/mapper/36001405eaafdfb604b5400a9a69864fd --config 'devices{filter=["a|.*|"]}' -ff --pvmetadatacopies 2
-
-
Восстанавливаем метаданные Volume Group
Возможно, чтобы восстановленный PV был найден, понадобится выполнить следующую команду:
pvscan --config 'devices{filter=["a|.*|"]}
-
Запускаем в тестовом режиме.
vgcfgrestore --file /etc/lvm/backup/939d6cac-cc99-4216-b1dd-d34ec2fc5052 939d6cac-cc99-4216-b1dd-d34ec2fc5052 --config 'devices{filter=["a|.*|"]}' --test
-
В случае успеха - запускаем восстановление:
vgcfgrestore --file /etc/lvm/backup/939d6cac-cc99-4216-b1dd-d34ec2fc5052 939d6cac-cc99-4216-b1dd-d34ec2fc5052 --config 'devices{filter=["a|.*|"]}'
-
Пересканируем volume groups:
vgscan --config 'devices{filter=["a|.*|"]}'
-
-
Если все операции были выполнены успешно, проблемный домен хранения должен перейти в статус UP и все операции с ним должны проходить корректно.
Если какой-либо из слоев будет не найден, во вкладке События могут быть сообщения следующего характера
VDSM command SetVolumeDescriptionVDS failed: Volume does not exist: ('326303b8-9005-4632-8ab9-61a738b239ec',)