既存のKVMゲストイメージをlibvirtで簡単に管理する方法。

前提

確認したのはDebian GNU/Linux Squeeze/Sidのvirt-managerのみ。バージョンは0.8.4。例えば、たまたま確認したFedora 12だとVMの新規作成画面のステップ1/5で、”import existing disk image”の項目自体が無いのでできない [1]

対象読者

qemu-imgコマンドで作成し、kvmコマンド [2] で使用していたKVMのゲストイメージをlibvirtで管理したいけど、/etc/libvirt/qemu/vmname.xmlを自分で作成するのは大変だよ、ママン、という向きにはうってつけの方法かと。シェルスクリプトで直接kvmコマンドで直接管理するから関係ないぜ、という人はスルーで。

事前準備

kvmコマンドしか使っていないとlibvirt関連のパッケージをインストールしていない可能性もあると思われるので、次のパッケージを導入しておくこと。 [3]

  • libvirt0
  • libvirt-bin
  • virt-manager
  • virt-viewer
  • virtinst
$ sudo apt-get install libvirt0 libvirt-bin virt-manager virt-viewr virtinst

libvirt関連のツール(virt-install, virt-manager, virsh)を実行するユーザは、libvirtグループに突っ込んでおくべし。

$ sudo adduser user libvirt

インポート手順

まず、管理させたいゲストイメージを、/var/lib/libvirt/imagesディレクトリに移動させる。

$ sudo mv ~/vmimg/guest1.img /var/lib/libvirt/images/

kvmコマンドを実行する場合は、kvmグループに所属していれば一般ユーザでも実行できる [4] ので、ゲストイメージのオーナー、グループ、パーミッションも実行するユーザのものにしている人もいるかと思うが、virt-managerでボリュームイメージを作成すると、root:root, 600で作成されるので合わせておいたが変更しなくても、インポート時にオーナー、グループは自動的にroot:rootに変更される。パーミッションは変更されないので、600に変更しておくとよい。

次に、virt-managerを起動する。もし、イメージファイルを移動させたときに既にvirt-managerが起動中なら再起動させる必要がある。

$ virt-manager

起動したら、”New”から新しいVMの作成を始める。VMのドメイン名にはイメージファイル名とは別にしておく。上記の用にguest1.imgというファイル名なら、ドメイン名にはguest1としないで、vm-guest1などのように別名にしておくのが良いだろう。

で、ステップ通りに設定すれば、無事起動できますよ、と。

../../../_images/20100605140557.png ../../../_images/20100605140559.png ../../../_images/20100605140556.png ../../../_images/20100605140555.png ../../../_images/20100605140554.png ../../../_images/20100605140553.png

さっきのは別に大した話では無いんだが。

先ほどの、ファイル名とは別のドメイン名にしておいた方が無難、と書いたが、単にインポートするファイル名と同じだけど、未定義の名前だからこれ使うか?というだけなので、パスの指定の後に次のダイアログが出たら”Yes”としておけば良いだけの話。

../../../_images/20100605140558.png
[1]Fedora 13がどうかは知らない。普段使わないので。
[2]ほかのディストロだとqemu-kvmコマンドだろう。
[3]今回関係ないパッケージもあるが、きっと使うでしょ、という意味で。
[4]というか、2010年6月5日現在、kvmグループに所属していないユーザでも普通にkvmコマンド実行できてしまうみたいなんだが。