qemu-kvm の block migration を試してみたよ


KVM で livemigration を行う際、ストレージは両方のホストからアクセス出来る必要がある(NFS や iSCSI などで)ってここに書いてあった。

http://www.linux-kvm.org/page/Migration

だから前回 iSCSIで試してみたのだけれど、なんと qemu-kvm 0.12 からブロックデバイスの migration が出来るようになったらしいので早速試してみた。

block migration するのは 10G の qcow イメージ、普通に debian をインストールして 844M 使用してある。

host1:~# qemu-img info vda.qcow
image: vda.qcow
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 844M
cluster_size: 4096

このディスクイメージでゲスト起動。

host1:~# qemu --enable-kvm -m 512 \
    -drive file=vda.qcow,if=virtio,boot=on \
    -net nic,macaddr=00:16:3E:00:FF:50,model=virtio

受け入れ側で同じサイズのqcowイメージを用意してある必要があるのかな、と思ったら、単に touch するだけで良かった。

host2:~# touch vda.qcow
host2:~# qemu -enable-kvm -m 512 \
    -drive file=vda.qcow,if=virtio \
    -net nic,macaddr=00:16:3E:00:FF:50,model=virtio \
    -incoming tcp:0:4444

これで準備完了。host2 のコンソールで待ち受けておいて、host1 の monitor コンソールから migration を開始する。

(qemu) migrate -d -b tcp:host2:4444

進捗はこれで確認できる。

(qemu) info migrate
Migration status: active
transferred ram: 48 kbytes
remaining ram: 147792 kbytes
total ram: 147840 kbytes
transferred disk: 206848 kbytes
remaining disk: 10278912 kbytes
total disk: 10485760 kbytes

block migration と live migration は約 15分程度で完了した。

block migration -> live migration という流れなんだけど、 block migration 中は普通にguestは動作しているし、ファイルにもアクセスできる。オープン中のファイルも問題無し。