仮想環境

はじめに

オフィスが引越で新しいネットワークを作らなくちゃ行けないんですが,やらないといけないことがあるときには他の事をやりたくなるのが世の常.しばらく前から気になっていたxenの使い方を調べてみました.といってもOSをがしがし触れるハードが手元にないのでVMWare上での話です.まずは,centos 5.2 をVMWare上にインストールしました.basicとVirtualizationのパッケージのみ入れています.メモリは512MB割り当てました.インストールしたら,

# xm list
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0      238     1 r-----    654.1

とかやることで,xen(正確にはxend)が動いていることが確認できます.ここにDomUを作るわけですが,"xm create"コマンドを使おうとしてはまりました.HowTos/Xen/InstallingCentOSDomU - CentOS Wikiを見ながらイメージを作ってインストールしたのですが,なんだか書き込みにものすごい時間がかかる.rikenのサイトからインストールしてみていたんですが,12時間立っても終了しないんです.何かがおかしいと思ってこの方法はやめました.

virtlib

次に使ってみたコマンドは"virt-install".こちらはうまくいきました.作成コマンドはこんな感じ

# virt-install -n myserv1 -r 256 -f /srv/xen/myserv1.img -s 4 --nographics -l http://ftp.riken.jp/Linux/centos/5.2/os/i386
パラメータ
メモリ 256MB
ディスクイメージ /srv/xen/myserv1.img
ディスクサイズ 4GB
ディスプレィ ヘッドレス
ダウンロード元 http://ftp.riken.jp/Linux/centos/5.2/os/i386

という意味になります.ただし,このままで実行すると

virDomainCreateLinux() failed POST operation failed: (xend.err 'Error creating domain: I need 262144 KiB, but dom0_min_mem is 262144 and shrinking to 262144 KiB would leave only 244672 KiB free.')

というエラーが出て止まります.これは/etc/xen/xend-config.sxpの中で

# Dom0 will balloon out when needed to free memory for domU.
# dom0-min-mem is the lowest memory level (in MB) dom0 will get down to.
# If dom0-min-mem=0, dom0 will never balloon out.
(dom0-min-mem 256)

という設定がなされているからです.この数字を例えば64とかにして,"service xend restart"とコマンドすれば,必要なメモリが確保できてエラーが解消します.一旦domUを作ってshutdwonした際には

# virsh start myserv1

とすればdomUが再起動し,これのシリアルコンソールにアクセスするためには

# virsh console myserv1

とコマンドします.

Boot中にHang

上で書いたように"virsh start myserv1"とコマンドすればdomUが動き始めるんですが,loginプロンプトがでるまでに妙な時間がかかりました.そこでぐぐってみると,同じ問題にぶつかっていた人がいて,解決方法を提示してくれていました.

The most common cause of this problem is an issue with the hwclock binary which is executed during this phase of the boot process. Since this program execution is not vital to the operation of the operating system the current solution is to replace this executable with an empty shell script.

具体的にはdomUが動いた後に以下のような細工をしています.

# cd /sbin
# mv hwclock hwclock.original
# echo "exit 0" > hwclock
# chmod 755 hwclock

これでdomUがさくっと立ち上がるようになりました.あー,ネットワーク作らなきゃ…