Как подключить QEMU диск к файловой системе хоста и получить доступ к данным.

nbd qemu-img convert

Если диск в формате RAW, сначала конвертируем его.

# qemu-img convert -f raw -O qcow2 /var/lib/cinder/shares/1/volume-1cbabd5d-1e90-48b6-85ce-38f6a8722c32 /home/sani/disk.qcow2

Все дальнейшие действия будем производить с диском в формате qcow2.

  1. Загружаем модуль ядра Network Block Device
# modprobe nbd
  1. Подключаем образ к устройству /dev/nbd0 в режиме “только чтение”
# qemu-nbd --connect /dev/nbd0 --read-only /home/sani/disk.qcow2

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

# qemu-nbd --connect /dev/nbd0 /home/sani/disk.qcow2
  1. Ищем разделы на устройстве.
# kpartx -arvs /dev/nbd0
  1. Монтируем найденный раздел (или разделы) /dev/nbd0p1 или /dev/mapper/ndb0p2
# mount /dev/nbd0p1 /mnt
  1. Делаем все, что надо с данными - смотрим, копируем и пр.

  2. Допустим, на диске есть ошибки, и он не смонтировался.

Тогда необходимо запустить лечение диска. В случае с ext4 все традиционно - fsck.

Если диск из Windows-машины, то нам понадобится утилита ntfsfix.

sudo apt-get install ntfs-3g
ntfsfix /dev/nbd0p1
mount -t ntfs-3g /dev/nbd0p1 /mnt

Иногда надо использовать ключи: 

-b: очистить список bad-секторов
-d: сброс флага "грязный том"

После окончания работ с диском, его надо корректно отмонтировать.

  1. Отмонтируем раздел
# umount /mnt
  1. Убираем устройство разделов.
# kpartx -dvs /dev/nbd0
  1. Отключаем сетевое блочное устройство qemu-nbd.
# qemu-nbd --disconnect /dev/nbd0