Linuxカーネルに組み込まれている仮想マシン環境として注目されている「Linux KVM」ですが,動作中の仮想マシンを別のホストに無停止で移動させる「ライブマイグレーション」もサポートされています。本稿では,2台のLinux KVMホストを使ったライブマイグレーション環境の構築方法について解説します。Linux KVM環境の基本的な構築方法は『実践!仮想化ソフトウェア 2009』の第5回『Linux KVMを使ってみよう』を参照してください。
構築する環境について
仮想マシンホスト
ライブマイグレーションは2台の仮想マシンホストの間を仮想マシンが行ったり来たりするので,最低2台の仮想マシンホストが必要になります。Linux KVMはCPUの仮想化支援機能が必要となるので,サポートされている物理マシンを2台用意する必要があります。
ストレージ
ライブマイグレーションは仮想マシンホスト間を行き来するため,仮想マシンのシステムやデータを保存している仮想ディスクの置き場所として,ローカルストレージは基本的に使用できません。できれば,仮想マシンホストとは別のストレージに格納されているのが望ましいでしょう。その場合,ホスト2台とストレージ1台の3台構成が基本構成となります。
ただし今回は,3台も用意するのが大変という方のために,2台構成でのライブマイグレーション環境を構築します。1台をNFSサーバとして稼働させ,ファイルをもう一方にNFS共有させることで,擬似的にストレージ共有を行っているように見せかける方法を行います。
使用するOS
今回は仮想マシンマネージャー(virt-manager)の機能を使用して環境を構築するため,Linux KVMがサポートされたCentOS 5.4を使用しています。
Linux KVM環境の構築
用意した2台のマシンにLinux KVM環境を構築します。基本的な構築方法は別記事の通りですが,以下のような設定を行っています。
- ①IPアドレスは固定で設定
- ②お互いに名前解決が行えるように/etc/hostsにIPアドレスとホスト名を記述
リスト1 /etc/hostsの記述例
192.168.0.21 kvm1.example.com kvm1
192.168.0.22 kvm2.example.com kvm2
- ③ファイアウォールは停止
- ④SELinuxは停止
仮想マシンの作成
仮想マシンの作成は,片方のマシン上で行います。今回の環境では,ホストkvm1上に仮想マシンを作成しました。
デフォルト状態では,仮想マシンからのネットワークは外部に対してNAT接続になっています。ライブマイグレーションを行いたいような仮想マシンは,ほとんどがサーバ的に活用することを想定しているでしょうから,あらかじめブリッジ接続へと変更しておくとよいでしょう。
仮想ディスクをNFS共有可能にする
ホストkvm1で仮想マシンを作成すると,仮想マシンの使用している仮想ディスクは/var/lib/libvirt/imagesディレクトリに作成されます。このディレクトリを,もう一方の仮想マシンホストからNFS共有で共有可能にします。
①/etc/exportsを記述
/etc/exportsに共有の設定を記述します。
リスト2 /etc/exportsの記述例
/var/lib/libvirt/images *(rw,no_root_squash)
この設定は検証用のため,セキュリティの面ではかなり甘い設定になっています。実際には,もう少し厳しい設定の適用が必要です。
仮想ディスクファイルへのアクセスにはroot権限が必要となるため,ユーザrootでのアクセスを置き換えないno_root_squashオプションの設定が必要となります。
②NFSサーバを起動
NFSサーバを起動します。また,システムの起動時にNFSサーバが自動的に起動するように設定しておきます。
# service nfs start # chkconfig nfs on
仮想マシンマネージャーで別ホストに接続
ライブマイグレーション先となるもう一方の仮想マシンホストに,仮想マシンマネージャーで接続します。
- ①「ファイル」メニュー→「接続を追加」を選択
- ②ハイパーバイザーは「QEMU」を選択
- ③接続は「SSHでのリモートトンネル」を選択
- ④ホスト名が表示されるので,接続したいホストを選択
- ⑤必要に応じて「Autoconnect 起動時」をチェック
- ⑥接続先ホストのユーザrootのパスワードを入力
- ⑦仮想マシンマネージャーにホストが登録されたことを確認
このように接続することで,リモートの仮想マシンホストも管理することができるようになります。

