[Debian][KVM] kvm を使う

Windows 2000のサポート切れを控えて、lennyをホストOSにする仮想マシンに載せかえることにした。仮想マシンとしてはXenも試してみたが、RedHatが力を入れているkvmを採用することにした。現状では、開発段階はXenの方が上のようだが、これからに期待しよう。

bridge の導入

仮想マシンをネットワークに直接接続するには、あらかじめホストOSをブジッジ化する必要がある。

パッケージ
# aptitude install bridge-utils
/etc/network/interfaces の変更

変更前

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
	address 192.168.1.5
	netmask 255.255.255.0
	broadcast 192.168.1.255
	gateway 192.168.1.1

変更後

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
	address 192.168.1.5
	netmask 255.255.255.0
	broadcast 192.168.1.255
	gateway 192.168.1.1
	bridge_ports eth0
        bridge_fd 9
        bridge_hello 2
        bridge_maxage 12
        bridge_stp off
ifconfig の結果
br0       Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          inet addr:192.168.1.5  Bcast:192.168.1.255  Mask:255.255.255.0
          ...

eth0      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX  
          ...

ゲストOSのインストール

パッケージ
# aptitude install -t lenny-backports kvm qemu-kvm qemu
# aptitude install -t lenny-backports libvirt-bin virt-viewer virt-manager
仮想ディスクの作成
# NAME=win2k-20
# kvm-img create -f qcow2 /var/lib/libvirt/images/${NAME}.img 20G

qcow2 フォーマットは、ホストOSから見ると1個のファイルであり、ファイルサイズは公称容量より小さいので実容量が小さいうちはメリットが大きい。イメージファイルは、/var/lib/libvirt/images に作成しておくと仮想マシンマネージャで選択する際に少しだけ便利だが、絶対ではない。拡張子も img である必要はない。20G は最大容量だが、私の用途としては 30G ぐらいにしておいた方が良かった。

Windows 2000 のインストール
# kvm \
	-name ${NAME} \
	-net nic,vlan=0,macaddr=XX:XX:XX:XX:XX:XX \
	-net tap,vlan=0,ifname=tap0 \
	-boot d \
	-smp 2 \
	-m 1024 \
	-cdrom /dev/cdrom \
	-hda /var/lib/libvirt/images/${NAME}.img \
	-usb \
	-localtime \
	-monitor stdio

ゲスト用のウインドウ(640x480相当)が開き、インストールが始まる。後は通常どおり。