サーバ構築メモ#2(KVM編)(2010年09月22日)†
ubuntu10.04(lucid)で仮想化機能を搭載したサーバ構築をする際のメモ
とりあえず依存関係を解決するためにをaptで取ってくる。
$sudo apt-get install qemu-kvm
ubuntu10.04(lucid)付属のQEMU 0.12.3は2TB以上のストレージを扱うと、データ破壊する等の色々なバグがあるので
ここではubuntu10.10beta(maverick)に付属予定の、0.12.5にバージョンアップする事にします
次のファイルをダウンロードしてインストール
- libncurses5_5.7+20100626-0ubuntu1_amd64.deb
- libpci3_3.1.7-4ubuntu2_amd64.deb
- pciutils_3.1.7-4ubuntu2_amd64.deb
- qemu-common_0.12.5+noroms-0ubuntu6_all.deb
- qemu-kvm_0.12.5+noroms-0ubuntu6_amd64.deb
- kvm-pxe_5.4.4-7ubuntu2_all.deb
以下インストールするコマンド
$sudo dpkg -i libncurses5_5.7+20100626-0ubuntu1_amd64.deb
$sudo dpkg -i libpci3_3.1.7-4ubuntu2_amd64.deb
$sudo dpkg -i pciutils_3.1.7-4ubuntu2_amd64.deb
$sudo dpkg -i qemu-common_0.12.5+noroms-0ubuntu6_all.deb
$sudo dpkg -i qemu-kvm_0.12.5+noroms-0ubuntu6_amd64.deb
$sudo dpkg -i kvm-pxe_5.4.4-7ubuntu2_all.deb
/etc/network/interfacesを編集して仮想サーバとブリッジ接続出来るようにする
$sudo vi /etc/network/interfaces
auto lo
iface lo inet loopback
auto br0
iface br0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
pre-up ifconfig eth0 down
pre-up ifconfig eth0 0.0.0.0 up
pre-up brctl addbr br0
pre-up brctl addif br0 eth0
post-down brctl delif br0 eth0
post-down brctl delbr br0
post-down ifconfig eth0 down
/etc/kvm/kvm-ifup等を定義してネット接続できるようにする
$sudo touch /etc/kvm/kvm-ifup
$sudo chmod 755 /etc/kvm/kvm-ifup
$sudo vi /etc/kvm/kvm-ifup
#!/bin/sh
BRIDGE=br0
/sbin/ifconfig $1 0.0.0.0 up
/usr/sbin/brctl addif $BRIDGE $1
$sudo touch /etc/kvm/kvm-ifdown
$sudo chmod 755 /etc/kvm/kvm-ifdown
$sudo vi /etc/kvm/kvm-ifdown
#!/bin/sh
BRIDGE=br0
/usr/sbin/brctl delif $BRIDGE $1
/sbin/ifconfig $1 down
仮想マシン用HDDイメージを作る
$sudo dd if=/dev/zero of=/home/server-main.img bs=1M count=10000
$sudo dd if=/dev/zero of=/home/server-sub.img bs=1M count=100000
これでそれぞれ10G、100Gの空HDDイメージが作成されます
インストールに使用するisoイメージをダウンロード後
インストール起動スクリプトを書く
まずはイメージをダウンロードします
- ubuntu-10.04-server-i386.iso
続いて起動用スクリプトを記述
$sudo vi /home/run_main_install
#!/bin/sh
kvm -m 512 -vnc :0 -monitor telnet::4000,server,nowait -k ja -daemonize \
-drive file=/home/server-main.img,if=virtio,index=0 \
-drive file=/home/server-sub.img,if=virtio,index=1 \
-drive file=/home/iso/ubuntu-10.04-server-i386.iso,if=ide,media=cdrom,index=2 \
-net nic,model=virtio,macaddr=52:54:00:12:34:56 \
-net tap,ifname=tap0,script=/etc/kvm/kvm-ifup,downscript=/etc/kvm/kvm-ifdown \
-boot d
スクリプト実行でインストーラが開始される
VNCクライアントで接続してOSをインストールする
$sudo /home/run_main_install
インストールが終了してディスクを抜く指示が出たところで
Telnet接続でQEMUコンソールに入って仮想マシンを落とす
$telnet 127.0.0.1 4000
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
QEMU 0.12.5 monitor - type 'help' for more information
(qemu) q[Enter]←このコマンドを与えると仮想マシンが即時停止する
通常起動スクリプトを書く
$sudo vi /home/run_main
#!/bin/sh
kvm -m 512 -vnc :0 -monitor telnet::4000,server,nowait -k ja -daemonize \
-drive file=/home/server-main.img,if=virtio,index=0,boot=on \
-drive file=/home/server-sub.img,if=virtio,index=1 \
-net nic,model=virtio,macaddr=52:54:00:12:34:56 \
-net tap,ifname=tap0,script=/etc/kvm/kvm-ifup,downscript=/etc/kvm/kvm-ifdown
仮想マシンを本起動する
$sudo /home/run_main
あとはVNCで接続して適切にネットワーク設定を行えば
ホスト側からゲスト側へSSH接続などを行えるようになると思います
万が一設定に失敗してOSを破壊してしまった場合は
一旦telnet接続でQEMUコンソールに入り仮想マシンを落とす処理を行った後
run_main_installを実行すれば、再インストールできます