それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

libvirtの仮想マシンの仮想マシン用可変イメージを作る

virt-manager で qcow 作ると・・・

スパースファイルなのに、指定した容量が作られてしまう。

f:id:takuya_1st:20200308173915p:plain

割当<=最大容量なので20GBを作成するには、20GBが確保されてしまいます。

 sudo ls -lh /var/lib/libvirt/images/test.qcow2
-rw------- 1 root root 21G Mar  8 17:22 /var/lib/libvirt/images/test.qcow2

もはやこれはバグではと思いたくなるレベルなのでした。

qcow2 とは

スパースファイルです。仮想マシン用に事前に20GB確保しても、実際には使用量しか消費しません。

その代わり、実際の使用量を超えた分の書き込みは都度確保され書き込まれます、その代わりパフォーマンスに多大な影響を及ぼすことになります。

パフォーマンス劣化と言ってもCPUは十分に早くてストレージが十分に速くnvme のSSDのいまはあまり気にならないレベルなんじゃないかなと思います。

qcow2 で可変サイズなディスクイメージファイルが作れます。

ちゃんと qcow2 のイメージを作る

20GB の qcow2 のスパースファイルを作成する場合はこれ.

qemu-img create -f qcow2  my-test.qcow2 20G

作った結果を確認

仮想マシン用にディスクのイメージを作成して

takuya@:~$ qemu-img create -f qcow2  my-test.qcow2 20G
Formatting 'my-test.qcow2', fmt=qcow2 size=21474836480 cluster_size=65536 lazy_refcounts=off refcount_bits=16

作成した結果を確認します。

takuya@:~$ qemu-img info  my-test.qcow2
image: my-test.qcow2
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false

実際に利用された容量を見ます。

takuya@:~$ ls -lh   my-test.qcow2
-rw-r--r-- 1 takuya takuya 193K 2020-03-08 17:26 my-test.qcow2

うん、全然浪費してない。

結論

virt-manager 意味不明。ちゃんとコマンドから使う。

参考

KVM ディスク操作 - わすれないうちにメモしよう

https://research.sakura.ad.jp/2010/03/23/kvm-diskperf1/