Qemu+KVM環境をdebian squeeze上に構築する

6年前ぐらいから使っている自宅サーバVMイメージが度重なるdebianのdist-upgradeで壊れてきて、cronが自動で起動しなくなったりイミフな状態になっている。あと外向きサーバだったはずなのにいつのまにか内向きのサービスも走ってたりしてセキュリティ的にも良くない。

また、ハードウェアの移行に耐えられるようにVMWare Server2上の仮想化で動かしているのだけれど、
仮想化コンソールがよく固まってとても気軽にVMを建てたりできる環境ではないので、最近流行のqemu+kvm環境でVMホスト環境ごと再構築する。

参考資料:
http://wiki.debian.org/KVM

VMホストは最小限のdebian stable(squeeze)をいれる。あえてvirt-managerなしでトライ。

sudo apt-get install qemu-kvm libvirt-bin
# とやるはずがqemu-kvmの代わりにkvmをインストールしてしまう。でもなんかはいった

sudo addgroup kouhei libvirt

この時点でlsmod | grep kvmするとなんかkvm_amdがロードされてることを確認。
virtinstを入れようとするがgtkがインストールされそうになるのでやめる。

http://wiki.debian.org/BridgeNetworkConnections
を参考にbr0を設定。こんなかんじ。

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth1
iface eth1 inet manual

auto br0
iface br0 inet static
	address xxxxxxxxx
	netmask xxxxxxxxx
	network xxxxxxxxx
	broadcast xxxxxxxxx
	gateway xxxxxxxxx
	dns-nameservers 8.8.8.8
	dns-search home.nyaxtstep.com
	bridge_ports eth1

パッケージでいれるとvirt-viewerがついてきていやなので、本家から適当にvirtinstだけとってきていれる

sudo apt-get install gettext # gitとかいらんもんついてきていやだけど、msgfmtがいるぽい
sudo apt-get install qemu python-libvirt python-libxml2 python-pycurl python-urlgrabber 
tar zxvf virtinst-0.500.6.tar.gz
cd virtinst-*
sudo python setup.py install

# gettextはもう用済みなので消す
sudo apt-get remove gettext
sudo apt-get autoremove

libvirtqemu+kvm設定。主にVNC関係とか

vim /etc/libvirt/qemu.conf

# vnc listen address / password

bridgeのtapデバイスlibvirt groupのユーザからいじれるように

$ sudo vim /etc/udev/rules.d/41-permissions-virt.rules 
$ cat /etc/udev/rules.d/41-permissions-virt.rules 
KERNEL=="tun", GROUP="libvirt"
$ sudo reboot

virshの接続先をqemu:///systemにする。でふぉるとのsessionだとなんかtap接続に失敗する。以下bashrcに追記

# libvirt
export VIRSH_DEFAULT_CONNECT_URI=qemu:///system

VMのディスクイメージをつくる。qcow2がいいかなとおもったけど、現在はrawがデフォルトっぽい。なのでrawで。

cd /vm
mkdir coresrv; cd /vm/coresrv
qemu-img create coresrv-root.img 5G

virt-installでインストール開始

virt-install --connect qemu:///system --name coresrv --vcpus=1 --ram 256 --disk /vm/coresrv/coresrv-root.img --cdrom /vm/isos/debian-testing-i386-businesscard.iso --network bridge=br0 --graphics vnc,port=5900 --noautoconsole

VNCで適当に接続する。インストール終わったら,/etc/libvirt/qemu/[vm名].xmlができてるので適当にインストールメディアとかのエントリを消す。

自動スタート設定とかする:

virsh autostart coresrv

virsh覚え書き

virsh list --all # 停止中含む全てのdomain表示
destroy [domain] # 強制シャットダウン
shutdown [domain] # 電源ボタンACPI
start [domain] # domain手動開始
vncdisplay [domain] # 割り当てられているVNCディスプレイ番号を表示