KVM のディスクイメージの形式を変換する (qcow2, raw)
KVM の仮想マシンのディスクイメージには、主に次の3種類のフォーマットが使用できる。
- raw
- non-sparse
- sparse
- qcow2
それぞれの違いとしては以下のような点があげられる。
- 容量をあらかじめ確保するかどうか
- スナップショットの可否
- IO パフォーマンス など
詳しくは参考文献などを参照のこと。
それで今回は、それぞれの形式を相互変換する方法をまとめる。
変換方法
qcow2, raw (non-sparse) -> raw (sparse)
$ qemu-img convert -O raw ${SRC} ${DST}
- ${SRC}: 元のファイル名
- ${DST}: 変換後のファイル名
raw (sparse) -> raw (non-spase)
$ cp --sparse=never ${SRC} ${DST}
qcow2 -> raw (non-sparse)
どうやら直接はできなさそうなので、上の2つを組み合わせる必要がありそう。
raw (sparse, non-sparse) -> qcow2
$ qemu-img convert -O qcow2 ${SRC} ${DST}
変換後の確認
ディスクイメージの実使用量やフォーマットは qemu-img info で確認できる。
$ qemu-img info ${FILE}
例) sparse な raw イメージの場合:
$ qemu-img info example.img image: example.img file format: raw virtual size: 80G (85899345920 bytes) disk size: 809M
このように、指定した容量 (virtual size) より実使用量 (disk size) が小さいことがわかる。
また、sparse なディスクイメージの実使用量は ls の -s オプションや du でも確認できる。
$ ls -lsh ${FILE}
$ du -h ${FILE}
例) sparse な raw イメージの場合:
$ ls -lsh example.img 810M -rw-r--r-- 1 root root 80G Nov 23 13:32 example.img
$ du -h example.img 810M example.img