Как восстановить потерянный (orphaned) диск в openstack

Предпосылки для выполнения нижеперечисленных действий могут быть различными.

Вариант 1 - последствия отказов оборудования.

Чаще всего это возникает в том случае, когда была повреждена БД cinder или nova.

После восстановления из бэкапа, была частично утрачена информация о диске.

Таком образом, файл диска есть, а записи о нем в базе данных нет.

Вариант 2 - перенос диска из других систем или с другого сервера той-же системы.

Далее рассмотрим конкретный пример с реальными данными от 03.04.2020

Наш “осиротевший” диск лежит по адресу: 10.0.10.101:/tank/volumes/volume-1168fe81-c449-4ebc-96eb-58bfbf80c328

Запрос о диске в API выдает пустой результат:

$ openstack volume show 1168fe81-c449-4ebc-96eb-58bfbf80c328

No volume with a name or ID of '1168fe81-c449-4ebc-96eb-58bfbf80c328' exists.

1) Создадим новый диск с точно таким-же размером, как и “потерянный” и в том-же проекте

openstack volume create --size 252 --type nfs-storage --project df21593205114b8996502cfb05530f40 1c_cloud_spb_v7

Теперь надо записать UUID нового диска: f44b6fd3-d8d0-4740-878f-45351b3d94c9

и путь к нем в файловой системе: 10.0.10.101:/tank/volumes/volume- f44b6fd3-d8d0-4740-878f-45351b3d94c9

2) Выясним, где сейчас размещен вновь созданный диск

mysql> use cinder;
mysql> select provider_location from volumes where id="f44b6fd3-d8d0-4740-878f-45351b3d94c9";

3) Если он отличается от пути нашего orphaned диска, то заменим путь диска на фактический:

mysql> update volumes set provider_location="10.0.10.101:/tank/volumes" where id="f44b6fd3-d8d0-4740-878f-45351b3d94c9"; 

4) Переходим на сервер, где лежит осиротевший диск и переименовываем его:

root@dc-stor-01:/tank/volumes# mv volume-1168fe81-c449-4ebc-96eb-58bfbf80c328 volume-f44b6fd3-d8d0-4740-878f-45351b3d94c9

5) Проверим параметры диска

qemu-img info volume-f44b6fd3-d8d0-4740-878f-45351b3d94c9

image: volume-f44b6fd3-d8d0-4740-878f-45351b3d94c9
file format: raw
virtual size: 252G (270582939648 bytes)
disk size: 252G

6) Подключаем бывший orphaned диск к нужному инстансу через horizon или через API.

03.04.2020