Xenで準仮想化環境を構築する

NetBSD 7.1 amd64

XEN3_DOM0カーネルに入れ替える

NetBSDをインストールした直後の話とする.インストール作業については省略する.パーティションなどは特別区切っておらず,Custom InstallationもせずFull Installationした.まずはGENERICカーネルからXen用のXEN3_DOM0カーネルへ入れ替える作業をおこなう.

# ftp ftp://ftp.jp.netbsd.org/pub/NetBSD/NetBSD-7.1/amd64/binary/sets/kern-XEN3_DOM0.tgz
# tar zxf kern-XEN3_DOM0.tgz
# mv netbsd /netbsd-XEN

sysutils/xenkernel48とsysutils/xentools48を導入する

pkgsrcから sysutils/xenkernel48sysutils/xentools48 をビルドし,インストールする.はじめにpkgsrcを /usr 以下へ展開する.

# cd /usr
# ftp ftp://ftp.jp.netbsd.org/pub/pkgsrc/stable/pkgsrc.tar.gz
# tar zxf pkgsrc.tar.gz && rm -f pkgsrc.tar.gz

目的のソフトウェアをインストールする.

# cd /usr/pkgsrc/sysutils/xenkernel48
# make install clean clean-depends
# cd /usr/pkgsrc/sysutils/xentools48
# make install clean clean-depends

デーモンの起動設定をおこなう

ここでは,Xenに必要なデーモンのみについて述べる.SSHデーモンなどの設定は必要であればおこなうこと.

# cp /usr/pkg/share/examples/rc.d/xencommons /etc/rc.d
# cp /usr/pkg/share/examples/rc.d/xendomains /etc/rc.d
# cp /usr/pkg/share/examples/rc.d/xen-watchdog /etc/rc.d
# echo "xencommons" >> /etc/rc.conf
# echo "xendomains" >> /etc/rc.conf
# echo "xen-watchdog" >> /etc/rc.conf

特に,xencommonsデーモンを有効にしておかないと,XEN3_DOM0カーネルでブートするさいにハングしてしまう.

ブリッヂの作成

Domain-U用にネットワークブリッヂを作成する. /etc/ifconfig.bridge0 に以下の内容を記述する.

create
up
!brconfig bridge0 add wm0 up

文中の wm0 は,使用しているマシンのネットワークインタフェース名に適宜置き換える.

/boot.cfgの編集

/boot.cfg に以下を追加する.

menu=Boot Xen:load /netbsd-XEN console=pc; multiboot /usr/pkg/xen48-kernel/xen.gz dom0_mem=8192M

起動時に"Boot Xen"と書かれた行の番号をタイプすると,XENカーネルが使われ,標準の"Boot normally"などであればGENERICカーネルが使われる.

再起動

再起動し,XENカーネルを使うようブート時の画面で指定する.

# reboot

Domain-0の確認

xl コマンドを使い,状態を確認する.

# xl list
Name                       ID   Mem VCPUs      State    Time(s)
Domain-0                    0  8192     1     r-----       11.3

ここではDomain-0だけが動いている.

Domain-Uの作成

ディスク

4GBのディスクを作る

# dd if=/dev/zero of=netbsd.img bs=1m count=4096

カーネル

インストール用のDOMUカーネルと通常のDOMUカーネルをダウンロードする.

# ftp ftp://ftp.jp.netbsd.org/pub/NetBSD/NetBSD-7.1/amd64/binary/kernel/netbsd-XEN3_DOMU.gz
# ftp ftp://ftp.jp.netbsd.org/pub/NetBSD/NetBSD-7.1/amd64/binary/kernel/netbsd-INSTALL_XEN3_DOMU.gz
# gzip -d netbsd-INSTALL_XEN3_DOMU.gz
# gzip -d netbsd-XEN3_DOMU.gz

Domain-U用設定ファイル

Domain-U用の設定ファイルを作る.ここでは"xen_netbsd"という名前で以下のように書いた.

kernel = "/root/netbsd-INSTALL_XEN3_DOMU"
vcpus = 2
memory = 2048
name = "NetBSD"
vif = [ 'bridge=bridge0' ]
disk = [ 'file:/root/netbsd.img,0,w' ]

仮想コアは2つ,メモリは2GBにし,ディスクには /root/netbsd.imgを指定している.vifのMACアドレスが必要であれば ifconfig を使い,ブリッヂしているネットワークインタフェースのMACアドレスを確認する.

Domain-U インストール

# xl create -c /root/xen_netbsd

sysinst の画面が出てくる.先にネットワークの設定をしてから,tarballをFTP経由でダウンロードすればよい.インストール終了後, sysinst のトップ画面から"x: Exit Install System"を選択し, halt -p で仮想マシンを落とす.

設定ファイルの編集

kernel = 行を書き換える.

kernel = "/root/netbsd-XEN3_DOMU"
vcpus = 2
memory = 2048
name = "NetBSD"
vif = [ 'bridge=bridge0' ]
disk = [ 'file:/root/netbsd.img,0,w' ]

ふたたび起動

# xl create -c /root/xen_netbsd

SSHデーモンを動かし,コンソール画面が必要ない場合は -c オプションをつけずに実行する.

# xl create /root/xen_netbsd