Назад | Перейти на главную страницу

Процедура получения данных из переданного гостевого образа centos-6 kvm на двух логических томах

Исходный вопрос:

Я пытаюсь восстановить данные из образа гостя kvm, переданного с несуществующего хоста centos-6: я без труда восстановил одного гостя. Второй не запускается. Единственная ошибка в /var/log/libvirt/libvirt.log:

2019-10-02 12:52:13.181+0000: 2846: error : daemonStreamHandleAbort:609 : stream aborted at client request

Симптомом является то, что виртуальная машина не загружается, а консоль подключается к сеансу, который не отвечает. Приведенная выше ошибка возникает, когда не отвечающий сеанс консоли закрывается с помощью <ctrl>]. Эта проблема возникает из-за ошибки жесткого диска при загрузке.

В отсутствие решения для запуска гостя мне нужен доступ к данным в изображениях. Образы lvm находятся на хосте, на котором работают гости kvm. Перенесенные операции расположены в:

/dev/vg_vhost02/lv_vm_inet05.harte-lyne.ca_VH2_00
/dev/vg_vhost02/lv_vm_inet05.harte-lyne.ca_VH2_01

Перенесенный гость был определен с помощью файла virsh dumpxml, созданного на исходном хосте и перенесенного на новый хост.

Я сослался на инструкции, найденные на https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/virtualization/sect-virtualization-troubleshooting_xen-accessing_data_on_guest_disk_image. На новом хосте /var/lib/libvirt/images/ изначально пусто. Когда я запускаю пример команды kpartx, приведенной в инструкциях, я вижу эту ошибку:

kpartx -a /var/lib/libvirt/images/inet05.harte-lyne.ca.img не удалось выполнить stat () /var/lib/libvirt/images/inet05.harte-lyne.ca.img

Что на самом деле должна указывать эта команда в случае, если гостевой образ разделен на два уровня? Действительно ли мне нужен kpartx, учитывая, что два уровня уже известны vg?

Если я продолжу следовать инструкциям, то вот результаты:

lvs
. . .
  lv_vm_inet05.harte-lyne.ca_VH2_00 vg_vhost02 -wi-a-----  32.00g                                                    
  lv_vm_inet05.harte-lyne.ca_VH2_01 vg_vhost02 -wi-a-----  32.00g                                                    
. . .

Когда я монтируюсь, я получаю эту ошибку:

mount /dev/vg_vhost02/lv_vm_inet05.harte-lyne.ca_VH2_00 /mnt/guestboot
mount: you must specify the filesystem type

Если я укажу тип файловой системы как ext3, что, как я полагаю, использовали все гостевые образы, я получаю следующую ошибку:

mount -t ext3 /dev/vg_vhost02/lv_vm_inet05.harte-lyne.ca_VH2_00 /mnt/inet05.lv00
mount: wrong fs type, bad option, bad superblock on /dev/mapper/vg_vhost02-lv_vm_inet05.harte--lyne.ca_VH2_00,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

Проверяя dmesg, вижу следующее:

dmesg | tail
. . .
EXT3-fs (dm-9): error: can't find ext3 filesystem on dev dm-9.

Итак, я вернулся в kpartx и сделал следующее:

kpartx -a /dev/mapper/vg_vhost02-lv_vm_inet05.harte--lyne.ca_VH2_00
[root@vhost01 ~ (master #%)]#  mount -t ext3 /dev/vg_vhost02/lv_vm_inet05.harte-lyne.ca_VH2_00 /mnt/inet05.lv00

А потом это:

mount: /dev/mapper/vg_vhost02-lv_vm_inet05.harte--lyne.ca_VH2_00 already mounted or /mnt/inet05.lv00 busy

Но mount показывает это:

mount /dev/mapper/vg_vhost02-lv_root on / type ext4 (rw) proc on /proc
type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type
devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/sda1
on /boot type ext4 (rw) /dev/mapper/vg_vhost02-lv_home on /home type
ext4 (rw) /dev/mapper/vg_vhost02-lv_tmp on /tmp type ext4 (rw)
/dev/mapper/vg_vhost02-lv_vhost01 on /var/data/vhost01 type ext4 (rw)
/dev/mapper/vg_vhost02-lv_log on /var/log type ext4 (rw) none on
/proc/sys/fs/binfmt_misc type binfmt_misc (rw)

и umount говорит это:

umount  /dev/mapper/vg_vhost02-lv_vm_inet05.harte--lyne.ca_VH2_00
umount: /dev/mapper/vg_vhost02-lv_vm_inet05.harte--lyne.ca_VH2_00: not mounted

Что мне нужно сделать, чтобы получить доступ к данным на /dev/mapper/vg_vhost02-lv_vm_inet05.harte--lyne.ca_VH2_00 и 01?