web-dev-qa-db-ja.com

qcow2イメージでLinuxゲストOSファイルシステムにアクセスする

VM qcow2 imageを添付して、内部のファイルにアクセスします。

modprobe nbd max_part=63
qemu-nbd -n -c /dev/nbd0 /var/lib/libvirt/images/vm-image.qcow2

ボリュームグループのスキャンvgscan

すべての物理ボリュームを読み取ります。これは時間がかかる場合があります...
ボリュームグループが見つかりません

fdisk -l /dev/nbd0は1つのパーティションのみを表示します/dev/nbd0p1

そしてもちろん、mount /dev/nbd0p1 /mntをマウントしようとすると、次のようになります。

NTFS署名がありません。
'/ dev/nbd0p1'のマウントに失敗しました:引数が無効です
デバイス '/ dev/nbd0p1'に有効なNTFSがないようです。

一方、VM LVMパーティションが存在し、システムは問題ないように見えます。qcow2にアクセスするためのqemu-nbdベースのソリューションであるため、ホストOSは問題ないと思います。イメージは、LVMも存在する他のゲストイメージでもうまく機能します(ゲストOSは、同じLinuxディストリビューションのわずかに異なるリリースです)。

qemu-img check /var/lib/libvirt/images/vm-image.qcow2も試してみました:

画像にエラーは見つかりませんでした。

では、ゲストOSのLVMへのアクセス/アクティブ化に関する問題は何でしょうか?

1
rook

または、 guestfishguestmont または virt-copy-out (両方とも libguestfs.org )をご覧ください。

2
Martian

物理ボリュームが初期化されていない(udev)というバグがある可能性があります。これを試して:

modprobe nbd max_part=63
qemu-nbd -n -c /dev/nbd0 /var/lib/libvirt/images/vm-image.qcow2
partprobe /dev/nbd0
vgscan --cache
vgchange -ay
2
h0tw1r3