サーバ構築メモ#2(KVM編)(2010年09月22日)
ubuntu10.04(lucid)で仮想化機能を搭載したサーバ構築をする際のメモ
COLOR(cyan){とりあえず依存関係を解決するためにをaptで取ってくる。}
COLOR(yellow){$sudo apt-get install qemu-kvm}
COLOR(red){ubuntu10.04(lucid)付属のQEMU 0.12.3は2TB以上のストレージを扱うと、データ破壊する等の色々なバグがあるので}
COLOR(red){ここでは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
以下インストールするコマンド
COLOR(yellow){$sudo dpkg -i libncurses5_5.7+20100626-0ubuntu1_amd64.deb}
COLOR(yellow){$sudo dpkg -i libpci3_3.1.7-4ubuntu2_amd64.deb}
COLOR(yellow){$sudo dpkg -i pciutils_3.1.7-4ubuntu2_amd64.deb}
COLOR(yellow){$sudo dpkg -i qemu-common_0.12.5+noroms-0ubuntu6_all.deb}
COLOR(yellow){$sudo dpkg -i qemu-kvm_0.12.5+noroms-0ubuntu6_amd64.deb}
COLOR(yellow){$sudo dpkg -i kvm-pxe_5.4.4-7ubuntu2_all.deb}
COLOR(cyan){/etc/network/interfacesを編集して仮想サーバとブリッジ接続出来るようにする}
COLOR(yellow){$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
COLOR(cyan){/etc/kvm/kvm-ifup等を定義してネット接続できるようにする}
COLOR(yellow){$sudo touch /etc/kvm/kvm-ifup}
COLOR(yellow){$sudo chmod 755 /etc/kvm/kvm-ifup}
COLOR(yellow){$sudo vi /etc/kvm/kvm-ifup}
#!/bin/sh
BRIDGE=br0
/sbin/ifconfig $1 0.0.0.0 up
/usr/sbin/brctl addif $BRIDGE $1
COLOR(yellow){$sudo touch /etc/kvm/kvm-ifdown}
COLOR(yellow){$sudo chmod 755 /etc/kvm/kvm-ifdown}
COLOR(yellow){$sudo vi /etc/kvm/kvm-ifdown}
#!/bin/sh
BRIDGE=br0
/usr/sbin/brctl delif $BRIDGE $1
/sbin/ifconfig $1 down
COLOR(cyan){仮想マシン用HDDイメージを作る}
COLOR(yellow){$sudo dd if=/dev/zero of=/home/server-main.img bs=1M count=10000}
COLOR(yellow){$sudo dd if=/dev/zero of=/home/server-sub.img bs=1M count=100000}
これでそれぞれ10G、100Gの空HDDイメージが作成されます
COLOR(cyan){インストールに使用するisoイメージをダウンロード後}
COLOR(cyan){インストール起動スクリプトを書く}
まずはイメージをダウンロードします
- ubuntu-10.04-server-i386.iso
続いて起動用スクリプトを記述
COLOR(yellow){$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
COLOR(cyan){スクリプト実行でインストーラが開始される}
COLOR(cyan){VNCクライアントで接続してOSをインストールする}
COLOR(yellow){$sudo /home/run_main_install}
COLOR(cyan){インストールが終了してディスクを抜く指示が出たところで}
COLOR(cyan){Telnet接続でQEMUコンソールに入って仮想マシンを落とす}
COLOR(yellow){$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) qCOLOR(green){[Enter]}COLOR(yellow){←このコマンドを与えると仮想マシンが即時停止する}
COLOR(cyan){通常起動スクリプトを書く}
COLOR(yellow){$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
COLOR(cyan){仮想マシンを本起動する}
COLOR(yellow){$sudo /home/run_main}
あとはVNCで接続して適切にネットワーク設定を行えば
ホスト側からゲスト側へSSH接続などを行えるようになると思います
万が一設定に失敗してOSを破壊してしまった場合は
一旦telnet接続でQEMUコンソールに入り仮想マシンを落とす処理を行った後
run_main_installを実行すれば、再インストールできます