qcow2 イメージをマウント

qemuやKVMでよく使われるqcow2イメージのマウントを行いました．

イメージの確認

$ sudo qemu-img info /var/lib/libvirt/images/Debian.qcow2
image: /var/lib/libvirt/images/Debian.qcow2
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 20G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: true
refcount bits: 16
corrupt: false

nbd モジュールの読み込み

$ sudo modprobe nbd

qcow2 イメージのバインド

$ sudo qemu-nbd -c /dev/nbd0 /var/lib/libvirt/images/Debian.qcow2
$ sudo fdisk -l /dev/nbd0
ディスク /dev/nbd0: 20 GiB, 21474836480 バイト, 41943040 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x3c0808c8

デバイス 起動 開始位置 終了位置 セクタ サイズ Id タイプ
/dev/nbd0p1 * 2048 499711 497664 243M 83 Linux
/dev/nbd0p2 501758 41940991 41439234 19.8G 5 拡張領域
/dev/nbd0p5 501760 41940991 41439232 19.8G 83 Linux

kpartx でデバイスマッピング

$ sudo kpartx /dev/nbd0
nbd0p1 : 0 497664 /dev/nbd0 2048
nbd0p2 : 0 2 /dev/nbd0 501758
nbd0p5 : 0 41439232 /dev/dm-1 2

ディスクイメージのデバイスマップが簡単に作れるkpartxを試す – matoken’s meme

dm-crypt で暗号化されているのでデバイスをオープン

$ sudo cryptsetup open /dev/nbd0p5 crypt
Enter passphrase for /dev/nbd0p5:

lvm領域なのでスキャンする

$ sudo lvmdiskscan
:
/dev/mapper/crypt [ <19.76 GiB] LVM physical volume
/dev/nbd0p5 [ <19.76 GiB]
/dev/debian-vg/root [ 18.75 GiB]
/dev/debian-vg/swap_1 [ 1.00 GiB]
:

マウントして内容確認

$ sudo mount -o ro /dev/debian-vg/root /mnt
$ ls /mnt/
bin dev home initrd.img.old lib64 media opt root sbin sys usr vmlinuz
boot etc initrd.img lib lost+found mnt proc run srv tmp var vmlinuz.old

こういうものもあるようですが未確認

vasi/qcow2-fuse: Gain access to qcow2 virtual disk images as a user-space filesystem

Table of Contents

環境

環境

$ dpkg-query -W kpartx qemu-utils fdisk cryptsetup lvm2 mount linux-image-`uname -r`
cryptsetup 2:2.0.4-2
fdisk 2.32.1-0.1
kpartx 0.7.7-1
linux-image-4.18.0-1-amd64 4.18.8-1
lvm2 2.02.176-4.1
mount 2.32.1-0.1
qemu-utils 1:2.12+dfsg-3
$ lsb_release -d
Description: Debian GNU/Linux unstable (sid)
$ uname -m
x86_64