Восстановить удаленный образ работающей виртуальной машины KVM
Случаи в жизни бывают разные, вот и у я удаляя тестовые образы виртуалок, удалил работаюший образ KVM.
Виртуалка при этом продолжала работать, а следовательно есть шанс хоть, что-то восстановить. Был найден и успешно применен следующий алгоритм действий:
1. Приостанавливаем работу виртуальной машины, полностью выключать нельзя.
virsh suspend test1 , где test1 имя виртуальной машины
2. Смотрим какие процессы связаны с удаленным образом нашей виртуальной машины
lsof|grep /media/data/kvm/images/test1.img, где /media/data/kvm/images/test1.img — полный путь до удаленного файла образа виртуальной машины.
получаем следующий вывод:
qemu-kvm 6233 root 13u REG 253,2 536953094144 1122412394 /media/data/kvm/images/test1.img (deleted)
qemu-kvm 6233 6260 root 13u REG 253,2 536953094144 1122412394 /media/data/kvm/images/test1.img (deleted)
CPU 6233 6262 root 13u REG 253,2 536953094144 1122412394 /media/data/kvm/images/test1.img (deleted)
CPU 6233 6263 root 13u REG 253,2 536953094144 1122412394 /media/data/kvm/images/test1.img (deleted)
……..
В этом выводе нас интересуют вторая и пятая колонки, т.е 6233 и 13u.
3. Осталось теперь сохранить образ.
а. Если место на диске достаточно даем команду
cp /proc/6233/fd/13 /media/data/kvm/images/test1.img
б. Если пространства на диске не хватает можно скопировать образ на другой сервер
scp /proc/6233/fd/13 root@server2:/media/backup/test1.img
в. Ели нет в сети серверов с достаточным дисковым пространством можно смонтировать внешний жесткий диск и сохранить образ на него.
в.1 создаем каталог для монтирования внешнего hdd
mkdir /media/hddback
в.2 смотрим как определился в системе подключенный по usb внешний жесткий диск
fdisk -l Например он определился как sdh1
в.3 Монтируем внешний hdd
mount /dev/sdh1 /media/hddback
в.4 копируем образ на внешний hdd
cp /proc/6233/fd/13 /media/hddback/test1.img
4. Останавливаем виртуальную машину
virsh shutdown test1
5. Если нужно копируем сохраненный образ на его старое место
cp /media/hddback/test1.img /media/data/kvm/images
или
scp root@server2:/media/backup/test1.img /media/data/kvm/images
6. Запускаем виртуальную машину
virsh start test1