2008年07月15日

CentOS on Gentoo

前回のubuntu on Gentooに引き続き、

・Domain0はGentoo
・DomainUにCentOS


という組み合わせも実現できました!
前回と同様、GentooでのXen環境は完成しているという前提で話を進めます。
(下準備については前回記事を参照してください)

まずはCentOSで使うファイルシステムを作成します。
Gentooやubuntuの時と違い、どうも/bootないと駄目っぽいので、/ に6GB、/boot に128MB、swap に512MBという構成にしました。
lvcreate -L6G -ndomU_cent_root rootvg
lvcreate -L128M -ndomU_cent_boot rootvg
lvcreate -L512M -ndomU_cent_swap rootvg

ファイルシステムはOSの導入時にフォーマットされるため、ここではLVを作るだけでOKです。

続いてvirtinstをインストールします。

…が、依存関係で一緒に導入されるlibvirtが、最新版(0.4.4 - 2008/07/16時点)だとうまく動きません。0.4.2だとうまく動くので、パッケージのmaskをしておきます。
echo ">app-emulation/libvirt-0.4.2" >> /etc/portage/package.mask

また、virtinstは普通にemergeしようとするとエラーになってしまうので、FEATURESを指定して以下のように実行します。(ついでにUSEフラグにlvmxenもセットしていますが必須かどうかイマイチ不明…)
FEATURES="-sandbox" USE="lvm xen" emerge -av virtinst

そしたらインストール…と行きたいところなのですが、Xenの設定がデフォルトのままだとインストールコマンドであるvirt-installが正常に動作しません。Xenの設定ファイルである/etc/xen/xend-config.sxpの以下のエントリを変更します。
#(xend-unix-server no)
  ↓ 変更
(xend-unix-server yes)

変更を反映するためにサーバを再起動します。

virt-installでCentOSのインストールを開始します。
virt-install -n cent5 -r 256 -f /dev/rootvg/domU_cent_boot -f /dev/rootvg/domU_cent_swap -f /dev/rootvg/domU_cent_root -b xenbr0 -p --nographics -l http://ftp.iij.ad.jp/pub/linux/centos/5/os/i386/

debootstrap(ubuntu)の時とは違い、実マシンに普通にインストールするときと同じインストーラが実行されます。なのでXenであることを特に意識せずにインストールを進めればOKです。デフォルトだとCentOSはファイルシステムにLVMを使おうとしますが、せっかくファイルシステムを3つ用意したのでLVMは使わない構成に変更します。(LVM on LVMというのも何だか効率が悪そうなので) LVM on LVMが気にならないのであれば、用意するファイルシステムを1つだけにしてディスクの構成はインストーラ任せにしてしまうのもありだと思います。

インストール時にgrubを導入するのを忘れないようにしてください。DomUなのにgrub?という気がするのですが、Gentooやubuntuのように(というよりもvirt-installの仕様だと思いますが)カーネルをDom0側に持ってきてXenからブート!という芸当が出来ません。(いや、出来ないんじゃなくて『しなくていい』と言うべきなのでしょうか) pygrubという専用のブートローダを使うためにもgrubをインストールしておく必要があります。(/bootが必要なのもこの辺の事情だと思われます)

インストールが完了したらリブートします。OSの初回起動時に"Setup Agent"なるものが起動しますが、どれも実行せずにexitしてください。実行してしまうとツール自身を終了できずに後続処理が行えなくなってしまいます。

無事にCentOSのログイン画面が出たら、rootでログインしてshutdownします。ただ、どういうわけだかshutdownしてもDomUが残ってしまうため、shutdown完了後にDom0側から強制的に削除します。
xm delete cent5

Xenの設定ファイルを記述します。
memory = 256
name = "cent5"
vif = ['mac=00:16:3e:00:00:02, bridge=xenbr0']
disk = ['phy:rootvg/domU_cent_boot,xvda,w', 'phy:rootvg/domU_cent_swap,xvdb,w', 'phy:rootvg/domU_cent_root,xvdc,w']
nographic = 1
bootloader = "/usr/bin/pygrub"

ファイル名は/etc/xen/cent5としましょう。(何でもいいんですが)

全ての準備が整いました。CentOSを起動しましょう。
xm create -c cent5

"CentOS on gentoo"環境のできあがり♪

ちなみにvirt-installを使うと、ファイルシステムは独自のフォーマットになるみたいです。なので普通にDom0からファイルシステムをマウントして使ったり出来ません。あ、もちろんDomUから見ればext3なり何なりの普通のファイルシステムですが。仮想ディスク(この場合論理ボリューム)に対してvirt-installがパーティションの定義をしてしまうため、せっかくのLVMの良さ(ボリュームの拡張が出来る)が生かし切れないのが残念なところ。LVM on LVMにすれば実現できなくもないのですが、あまり美しくないですよね。このあたりはもう少し良い方法を追求してみたいところです。

以下のサイトの情報を参考にさせていただきました。
(ありがとうございました!)

Xen特集 準仮想化ドメインの設定 VA Linux Systems Japan
http://www.valinux.co.jp/contents/tech/techlib/xen/xen_sp_0703.html

Gentoo Forums :: View topic - [Solved] xen - amd64 - virtinst emerge (sandbox error)
http://forums.gentoo.org/viewtopic-p-5105322.html?sid=f91b27d9d6dd4e9548759d6de7985959

[Xen-users] Virt-install not working - ama...@ncsu.edu - com.xensource.lists.xen-users - MarkMail
http://markmail.org/message/pwn3bfvhq4tmnbbw#query:virtinst%2Fcli.py%20getconnection+page:1+mid:hioyhr5u5q7bxf2s+state:results

libvirt - Wikipedia
http://ja.wikipedia.org/wiki/Libvirt
posted by 月水和尚 (とも) at 16:58 | Comment(0) | TrackBack(0) | Xen/仮想化全般
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。