Восстановление метаданных домена

Данная инструкция выполняется в том случае, когда бэкап был предварительно сделан, или возможности его сделать нет

1. Диагностика

Выполняется на SPM-хосте, к которому прикреплен проблемный домен:

В случае наличия файла /etc/lvm/devices/system.devices, его необходимо временно переименовать.

  1. В лог-файле /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',)
  2. В выводе команды vgscan --config 'devices{filter=["a|.|"]}' указанной *Volume group также нет

  3. В выводе команды pvscan --config 'devices{filter=["a|.|"]}' нет *PV, который принадлежал бы проблемной VG

  4. В выводе команды lsblk находим mpath устройство, которое связано с нашей Volume Group, и выполняем по нему вывод parted:

    lsblk
    Рисунок 1. Пример:
    1. Является необходимым multipath устройством, /dev/mapper/36d039ea0002b2950000011ae65580912

    2. 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 - вам необходимо будет заменять на свое
  1. Удостоверяемся, что в бэкапе lvm присутствуют все необходимые слои(logical volumes), которые используются в домене, т.к иначе метаданные по ним восстановлены не будут:

    • Файл бэкапа - /etc/lvm/backup/STORAGE_ID

    • Все слои, находящиеся в домене хранения, - /rhev/data-center/НЕ_MNT_ДИРЕКТОРИЯ/STORAGE_ID(VOLUME GROUP)/DISK_ID(Диски из вкладки Хранилище  Диски)/СЛОИ_ДИСКА(Именно они и содержат данные)

  2. Выполняем удаление раздела, если он есть:

    parted /dev/mapper/36d039ea0002b2950000011ae65580912 rm PARTITION_ID (1)
    1 PARTITION_ID номер раздела.
  3. Перезагружаем хост (В случае, если на нем есть ВМ из других доменов хранения - предварительно мигрируем их)

  4. Очищаем метаданные блочного устройства:

    wipefs --all --backup /dev/mapper/36d039ea0002b2950000011ae65580912
  5. Выполняем восстановление метаданных physical volume, предварительно необходимо получить его ID из файла бэкапа.

    1. Сверяем, что адрес найденного блочного ус-ва соответствует ус-ву, указанному в метаданных

      PVID

    2. Предварительно запускаем в тестовом режиме (Метаданные не будут изменены). Удостоверяемся, что операция прошла успешно

      pvcreate --restore-file /etc/lvm/backup/939d6cac-cc99-4216-b1dd-d34ec2fc5052 --uuid PVID /dev/mapper/36001405eaafdfb604b5400a9a69864fd --config 'devices{filter=["a|.*|"]}' -ff --pvmetadatacopies 2 --test
    3. Восстанавливаем метаданные PV

      pvcreate --restore-file /etc/lvm/backup/939d6cac-cc99-4216-b1dd-d34ec2fc5052 --uuid PVID /dev/mapper/36001405eaafdfb604b5400a9a69864fd --config 'devices{filter=["a|.*|"]}' -ff --pvmetadatacopies 2
  6. Восстанавливаем метаданные Volume Group

    Возможно, чтобы восстановленный PV был найден, понадобится выполнить следующую команду:

    pvscan --config 'devices{filter=["a|.*|"]}
    1. Запускаем в тестовом режиме.

      vgcfgrestore --file /etc/lvm/backup/939d6cac-cc99-4216-b1dd-d34ec2fc5052 939d6cac-cc99-4216-b1dd-d34ec2fc5052 --config 'devices{filter=["a|.*|"]}' --test
    2. В случае успеха - запускаем восстановление:

      vgcfgrestore --file /etc/lvm/backup/939d6cac-cc99-4216-b1dd-d34ec2fc5052 939d6cac-cc99-4216-b1dd-d34ec2fc5052 --config 'devices{filter=["a|.*|"]}'
    3. Пересканируем volume groups:

      vgscan --config 'devices{filter=["a|.*|"]}'
  7. Если все операции были выполнены успешно, проблемный домен хранения должен перейти в статус UP и все операции с ним должны проходить корректно.

    Если какой-либо из слоев будет не найден, во вкладке События могут быть сообщения следующего характера

    VDSM command SetVolumeDescriptionVDS failed: Volume does not exist: ('326303b8-9005-4632-8ab9-61a738b239ec',)