Top / 雑記:2010-09-22

サーバ構築メモ#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を実行すれば、再インストールできます