Доброго дня мне самому. В продолжении описание ситуации и восстановление
Вылетел диск из raid5, вставил диск обратно в рейд. Спустя какое то время перестали загружаться ВМ в libvirt. Думаю, ну капец....
Посмотрел, а часть дисков их всего пула в статусе corrupted. Диски формата qcow2.
Сначала восстанавливал через qemu-img convert, qemu-img check, но происходила утечка памяти, либо я получал сообщение о том, что
qcow2: Image is corrupt; cannot be opened read/write
И вот, гугляя по поисковику, натыкаюсь на один комментарий, в котором было то самое спасение.
Делаем так:
ВАЖНО!!! Нельзя проводить все эти действия при запущенной виртуальной машине!!! Данные на ней будут безвозвратно потеряны!!!
Ставим пакет gddrescue;
apt install gddrescue
Включаем модуль;
modprobe nbd max_part=8
Подключаем диск
qemu-nbd --connect /dev/nbd0 /path/to/disk.qcow2
Если не подключается, то подключаем как снэпшот;
qemu-nbd -s --connect /dev/nbd0 /path/to/disk.qcow2
Теперь делаем копию с восстановлением
ddrescue /dev/nbd0 /path/to/repair_disk.raw
Обрати внимание, что размер raw диска будет равен полному объему диска ВМ. Т.е. если делали диск для виртуалки на 200Гб, то raw формат будет занимать те же 200Гб
Далее, необходимо сконвертировать диск обратно в qcow2 формат
qemu-img convert -f raw -O qcow2 /path/to/repair_disk.raw /path/to/repair_disk.qcow2
И вуаля. Подключаем диск. Радуемся, что работает. Либо плачем
Комментариев нет:
Отправить комментарий