KVM in Ubuntu ServerでWindows XPをインストール

最近我が家の仮想化に凝っていまして、珍しいところとしてサーバーにWindows XPを入れて動作検証に必要なときのリモートデスクトップとして使ってみようという事で、最近イケイケのKVMでやってみました。

ちなみに、KVMをそのまま使おうとすると仮想マシンの起動も毎回ディスクの指定とかしなければならずとてもめんどくさいのでlibvirtを使います。KVMとかと一緒に適当にインストールしましょう。ちなみに、libvirt自体はKVMのためだけのものではないです。Xen仮想マシンも管理できます。

私の使い方だと同じネットワーク的に同じセグメントにあってくれないと意味が無いのでブリッジを作ります。
この辺が詳しいです。
KVM Networking - Community Ubuntu Documentation
これはUbuntuのやり方ですが、RHEL系でもinterfacesに書くようなスクリプトを適当なシェルスクリプトにしてそれを起動時に走らせれば大丈夫でしょう。多分。

んでブリッジを作成したのち、
いざインストール!
sudo virt-install \
-n europa \
--ram 1024 \
--file 仮想HDDの場所 \
-s 50 \
--vcpus 1 \
--os-type windows \
--os-variant winxp \
--network bridge=br0 \
--vnc \
--vncport 5900 \
--vnclisten 0.0.0.0 \
--cdrom installディスクの場所

インストールにはvirt-installを使います。最初にパラメータさえ与えておけば色々と良きに計らってくれます。virt-hogehoge系コマンドは覚えておくと便利です。
virt-installの各パラメータの意味はvirt-installあたりが詳しいです。もしかしたら環境によっては明示的に仮想技術を指定しなきゃいけないかもしれません。

なお、WindowsXPは自動化ディスクを作らない限りGUIが必要なインストールプロセスなので、VNCを使えるようにしておかないとインストールできません。これさえ忘れなければあとは普通です。

上記インストールコマンドを走らせたら、仮想マシンのホストの指定ポートへVNCクライアントをつなぎましょう。私はWindows7上のUltraVNCで行いました。
解像度が切り替わるタイミングでUltraVNCが毎回律儀に落ちますが、諦めずつなぎ直します。
3、4回ほど落ちればインストールが完了する頃です。
RDPが使える段階まできたらRDPの方が快適だと思います。

インストールできれば、設定ファイルが
/etc/libvirt/qemu
あたりに出来るので、眺める事でlibvirtの勉強にもなります。仮想マシンごとにXMLが1つできるので構成だけのバックアップならXMLを一つバックアップだけで済みます。とても簡単。
仮想マシン全体のバックアップをとるときでもXMLとHDDイメージをそのままコピーするか
virt-clone
でクローンをとれば一発です。とても簡単。

virt-install でインストールすると、仮想マシンの起動は
virsh start 仮想マシン
でいけます。とても簡単。

で、これだけだと特にXen Serverとかの方がもっと簡単にできて特に意味が無いんですが、Xen Serverではできなかった、パーティションやUSB-HDDをそのまま仮想マシン上でマウントして使えたり、

virsh console hogehoge

でターミナル内で仮想マシンを切り替えつつ扱えるというXen Serverにはない特徴もあります。
主流LinuxディストリビューションKVMが扱えないものはないはずだし、さらにvirtioでXenよりも準仮想化の対応範囲が広いのでパフォーマンスも高い。

KVMを知っておくと将来使えるやつになれるような気がしてます!