qemu-kvm Live Migration on Fedora10
前提条件
Fedora10 のインストール時に「仮想化」のパッケージを選択するとインストールされる qemu-kvm コマンドはバージョンが0.9.1で、
Live Migrationに必要な「-incoming」オプションをつけると
(qemu) Migration failed rc=201
となって無条件にLive Migrationが失敗してしまう(ように見えた)ので
qemu-kvmを0.10.5へバージョンアップする。
手順は上に書いた。
その他のパッケージはFedora10のデフォルトのまま。
KVMのバージョンはqemu-kvmによると(kvm-74)だそうな。
今回は
-
- hostA: 192.168.0.1
- hostB: 192.168.0.2
で行った。
今回はNFSにおいたFedora10.imgを用いた。
Live Migration作業
- hostAでVMを起動
/usr/local/bin/qemu-system_x86_64 -m 1024 -hda Fedora10.img -boot c -monitor stdio
- hostBでLive Migrationの待ち受け準備
/usr/local/bin/qemu-system_x86_64 -m 1024 -hda Fedora10.img -boot c -monitor stdio -incoming tcp:0:4444
tcp:0:4444の0はアドレス(0.0.0.0)の省略。4444ポートでhostAからのコネクションを待ち受ける
- hostAでLive Migrationに用いるNetwork帯域を設定
(qemu) migrate_set_speed 1g
どうやらこれで1GB/sまでの帯域を許可している?
- hostAでLive Migration実行
(qemu) migrate -d tcp:192.168.0.2:4444
Migrationの状態の確認
(qemu) info migrate Migration status: active
activeと出れば実行中。
失敗すると
(qemu) info migrate Migration status: failed
完了すると
(qemu) info migrate Migration status: completed
と出る。
Migration完了後はhostAのSDLウィンドウのタイトルが「QEMU」から「QEMU(Stopped)」へ変わる。
このウィンドウ(=qemu-kvmプロセス)は不要なので終了。
hostBでは逆で「QEMU(Stopped)」だったタイトルが「QEMU」へ変わり、
VMの画面が表示されるようになる。
NIC Bonding (Teaming) on Fedora10
/etc/modprobe.d ディレクトリにbondingというファイルを作る
alias bond0 bonding options bond0 miimon=100 mode=0
miimonは「MII リンク監視を行う頻度をミリ秒単位で指定する」
modeは0〜6くらいまであってact-act, act-stbなどの挙動を決めている。
詳しくは以下のページ。
http://www.pochinet.org/linux0A044.htm
または/usr/share/doc/iputils-20071127/README.bondingファイルに
「Linux Ethernet Bonding Driver HOWTO」があるのでそちらを参照。
/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0 BOOTPROTO=dhcp ONBOOT=yes
上はDHCPでアドレス取得する例。
手動で設定する場合は以下:
DEVICE=bond0 BOOTPROTO=none ONBOOT=yes NETWORK=10.0.0.0 NETMASK=255.255.255.0 IPADDR=10.0.0.2 GATEWAY=10.0.0.1
以下、bondingされる物理NICの設定。
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 ONBOOT=yes MASTER=bond0 SLAVE=yes BOOTPROTO=none
/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1 ONBOOT=yes MASTER=bond0 SLAVE=yes BOOTPROTO=none
ここまで設定して
/etc/init.d/network restart
これでeth0とeth1を結合したbond0を使える。
KVM 準仮想化ドライバ virtio for Disk I/O
ディスクIO部分を完全仮想から準仮想にしてくれるらしい。
-hda file.img -boot c
を
-drive file=file.img,if=virtio,boot=on
に変えるだけ。
fedora10(x86_64 kernel2.6.27.24-170.2.68) on fedora10(x86_64 kernel2.6.27.24-170.2.68) で動作確認。
ただし、ゲストOSのLinux Kernelのversionが2.6.25以上じゃないと動かないらしい。
ゲストがLinuxじゃない場合はどうすればよいんだろう?
ゲストのFedora10をインストール中だが、やたら遅い。。
完全仮想の方が速い気がする。
要ベンチマーク。