元のqcow2エクスポートのスナップショットであるファイルシステムタイプ「LVM2_member」のzvolパーティションをマウントします。

元のqcow2エクスポートのスナップショットであるファイルシステムタイプ「LVM2_member」のzvolパーティションをマウントします。

私は現在qcow2ファイルに保存されているいくつかの仮想マシンをZFS ZVOLに移行しようとしています。

実際にこれを行うかどうかを決定する前にやりたいことの1つは、電源がオフになっているVMのスナップショットを作成し、そのスナップショットを読み取り専用モードでホストにマウントしてナビゲートできることを確認することです。自由にファイルを表示またはコピーできます。

次のワークフローがあります。

情報を入手する:

/kvm-images $ sudo qemu-img info Ubuntu-Server-20.04.qcow2

image: Ubuntu-Server-20.04.qcow2
file format: qcow2
virtual size: 128 GiB (137438953472 bytes)
disk size: 41.4 GiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    compression type: zlib
    lazy refcounts: true
    refcount bits: 16
    corrupt: false
    extended l2: false   

ZVOLの作成

/kvm-images $ sudo zfs create -V 137438953472 tank/kvm-images/Ubuntu-Server-20.04

qcow2ファイルからZVOLに画像をエクスポートする

/kvm-images $ sudo qemu-img convert -O raw /kvm-images/Ubuntu-Server-20.04.qcow2 /dev/zvol/tank/kvm-images/Ubuntu-Server-20.04

次に、VM Virtio Disk 1 xmlを変更します。

<disk type="file" device="disk">
  <driver name="qemu" type="qcow2"/>
  <source file="/kvm-images/Ubuntu-Server-20.04.qcow2"/>
  <target dev="vda" bus="virtio"/>
  <boot order="1"/>
  <address type="pci" domain="0x0000" bus="0x03" slot="0x00" function="0x0"/>
</disk>

到着

<disk type="block" device="disk">
  <driver name="qemu" type="raw" cache="none" io="native" discard="unmap"/>
  <source dev="/dev/zvol/tank/kvm-images/Ubuntu-Server-20.04" index="2"/>
  <backingStore/>
  <target dev="vda" bus="virtio"/>
  <boot order="1"/>
  <alias name="virtio-disk0"/>
  <address type="pci" domain="0x0000" bus="0x03" slot="0x00" function="0x0"/>
</disk>

仮想マシンで起動できますが、すべてが以前と同じようです。

そのため、VMをシャットダウンしてスナップショットを作成しました。

/kvm-images $ sudo zfs snapshot tank/kvm-images/Ubuntu-Server-20.04@test-01

送信後

sudo zfs set snapdev=visible tank/kvm-images/Ubuntu-Server-20.04

スナップショットのパーティションを見ることができます/dev/zvol/tank/kvm-images

/dev/zvol/tank/kvm-images $ ls -lsah
total 0
0 drwxr-xr-x 2 root root 280 Jul 25 16:31 .
0 drwxr-xr-x 3 root root  80 Jul 25 11:47 ..
0 lrwxrwxrwx 1 root root  13 Jul 25 15:53 Ubuntu-Server-20.04 -> ../../../zd48
0 lrwxrwxrwx 1 root root  15 Jul 25 15:53 Ubuntu-Server-20.04-part1 -> ../../../zd48p1
0 lrwxrwxrwx 1 root root  15 Jul 25 15:53 Ubuntu-Server-20.04-part2 -> ../../../zd48p2
0 lrwxrwxrwx 1 root root  15 Jul 25 15:53 Ubuntu-Server-20.04-part3 -> ../../../zd48p3
0 lrwxrwxrwx 1 root root  13 Jul 25 16:31 Ubuntu-Server-20.04@test-01 -> ../../../zd64
0 lrwxrwxrwx 1 root root  15 Jul 25 16:31 Ubuntu-Server-20.04@test-01-part1 -> ../../../zd64p1
0 lrwxrwxrwx 1 root root  15 Jul 25 16:31 Ubuntu-Server-20.04@test-01-part2 -> ../../../zd64p2
0 lrwxrwxrwx 1 root root  15 Jul 25 16:31 Ubuntu-Server-20.04@test-01-part3 -> ../../../zd64p3

使ってみてもzfs mountあまり効果がなかったし、

sudo zfs mount tank/kvm-images/Ubuntu-Server-20.04@test-01

Ubuntu-Server-20.04以降は自動的に実行できず、強制的に言及されている場合

cannot open 'tank/kvm-images/Ubuntu-Server-20.04@test-01': snapshot delimiter '@' is not expected here

それで、レガシーのように手動でインストールしてみました。

sudo mount /dev/zvol/tank/kvm-images/Ubuntu-Server-20.04@test-01-part3 /mnt/snapshots/ubuntu

mount: /mnt/snapshots/ubuntu: unknown filesystem type 'LVM2_member'.

パーティション2(Ubuntu-Server-20.04@test-01-part2)はマウントおよびナビゲーションが可能で、このパーティションを含みます/boot

発行sudo vgscan --mknodes利回り

WARNING: Not using device /dev/zd64p3 for PV aaaaaa-aaaa-aaaa-aaaa-aaaa-aaaa-aaaaaa.
WARNING: PV aaaaaa-aaaa-aaaa-aaaa-aaaa-aaaa-aaaaaa prefers device /dev/zd48p3 because device is used by LV.
Found volume group "ubuntu-vg" using metadata type lvm2
WARNING: Not using device /dev/zd64p3 for PV aaaaaa-aaaa-aaaa-aaaa-aaaa-aaaa-aaaaaa.
WARNING: PV aaaaaa-aaaa-aaaa-aaaa-aaaa-aaaa-aaaaaa prefers device /dev/zd48p3 because device is used by LV.

これらの一意のID(aaa)はすべて同じです。

したがって、これらすべての結果に基づいて、次の場所にあるスナップショットファイルにどのようにアクセスしますか?/dev/zvol/tank/kvm-images/Ubuntu-Server-20.04@test-01-part3

また、私は最初にZFSに触れていました(今週はZFSについてたくさん読んでいました)、LVMの経験はまったくありません(OSインストーラがデフォルトとして使用できるようにすることを除いて)。したがって、他の方法があります。この操作の正しい方法を実行してください。

qcow2ファイルをZFSファイルシステムに移動してそこで使い続けると、スナップショットを作成するのが簡単になりますか?私はこれを行い、うまくいきましたが(テストスナップショットはありません)、これがCoWのCoWであるので避けるべきことを読んだので、このZVOLアプローチをテストしています。

関連情報