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


  1. XEN3_DOM0カーネル
  2. XenkernelとXentools
  3. デーモンの設定
  4. ブリッヂの設定
  5. /boot.cfgの編集
  6. 再起動
  7. Domain-0の確認
  8. Domain-Uの作成
    1. ディスク
    2. カーネル
    3. Domain-U用設定ファイル
    4. Domain-Uインストール
    5. 設定ファイルの編集
    6. Domain-U動作確認

XEN3_DOM0カーネル

NetBSDをインストールした直後の話とする.インストール作業については省略する.パーティションなどは特別区切っておらず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

XenkernelとXentools

pkgsrcからsysutils/xenkernel48とsysutils/xentools48をインストールする。

デーモンの設定

ここではXenに最低限必要なデーモンの設定について述べる。/usr/pkg/share/examplesディレクトリ以下にあるRCスクリプトを/etc/rc.dディレクトリにコピーし、自動起動の設定を/etc/rc.confに書く。

# 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=YES" >> /etc/rc.conf
# echo "xendomains=YES" >> /etc/rc.conf
# echo "xen-watchdog=YES" >> /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カーネルを使うようブート時の画面で指定する.

Domain-0の確認

xlコマンドを使い,ゲスト(Domain-0)とホスト(Domain-U)の状態を確認できる.

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

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(8)を使い,ブリッヂしているネットワークインタフェースの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' ]

Domain-U動作確認

ふたたび起動する。

# xl create -c /root/xen_netbsd

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

# xl create /root/xen_netbsd