以前、Xenで完全仮想化ができるのでAthlon64x2 を購入したのだが、
ちょっとしか試していなかった。 変な結構制約があったりで比較的安定している VMware Server を使っていた。
時は経って、Linux KVM というのが活発に開発が行われており、前途有望である。
同時に、色々な仮想化技術を統一したAPIで扱えるlibvirtも整備されてきている。
特に、virt-managerは、 VMware Server Console を彷彿し、ローカルからリモートまで管理が可能になりつつある。
なので、Ubuntu+KVM+libvirt に移行してみようと思う。
インストール
KVM と virt-manager のパッケージをインストール。
# apt-get install kvm libvirt-bin virt-manager
# addgroup <自分> libvirtd
ついでに、QEMU/KQEMU も入れとくと何かと便利かも、、、仮想化命令をサポートしないCPUを使っている場合はこっちがメインになると思う。
# apt-get install qemu kqemu-source
# module-assistant prepare
# module-assistant build kqemu
# module-assistant install kqemu
# modprobe kqemu
# echo "kqemu" >> /etc/modules
あとは、virt-managerを使うと仮想化ドメインがGUIで簡単に作れるようになる。
ブリッジの設定
何もしなければ、仮想化ドメインのネットワークは、専用のサブネットが割り当てられる。なので、NATで外に出るか、ルーティングをせっせと張ることになる。
外からサーバ用途としてアクセスしたければ、bridge が簡単でいい。
Ubuntu libvirt guide を参考にして。
そいつの設定をする
まず、現在のNetworkManager/dhcdbd等の自動ネットワーク設定機能切る。
# /etc/dbus-1/event.d/26NetworkManagerDispatcher stop
# /etc/dbus-1/event.d/25NetworkManager stop
# echo "exit" > /etc/default/NetworkManager
# echo "exit" > /etc/default/NetworkManagerDispatcher
# /etc/init.d/dhcdbd stop
# update-rc.d -f dhcdbd remove
# /etc/init.d/networking stop
固定IPアドレスと bridge の設定を行う。
/etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 192.168.1.123
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.254
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
ネットワークを有効化する。
# cat >> /etc/sysctl.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
EOF
# sysctl -p /etc/sysctl.conf
# /etc/init.d/networking start
virt-manager を使って新規の仮想化ドメインを作成時に、ブリッジが選択できるようになる。
まとめ
Linux KVM よ〜、賢くな〜れ