2010年9月22日水曜日

PyGRUBで快適!OpenSolaris on Xenライフ

PyGRUBとは、Xenの準仮想化ドメイン(PV)で利用できるブートローダです。PyGRUBを使用すると、ドメイン起動時にゲストOSのディスクイメージ上から必要なファイル(カーネルおよびRAMディスクイメージ)を読み出して起動することができます。これにより、ドメイン起動にあたりdomain-0のファイルシステム上へゲストのカーネルファイルなどに事前準備する必要がなくなりkernel行とextra行に具体的な値を記述する必要がなくなります。


PyGRUBは多数のファイルシステムをサポートしており、最近のバージョンでは、なんとOpenSolarisのZFS上のGRUB設定ファイルを使って純仮想化ドメインを起動できます。




■ PyGRUBとpv-grub

同種のツールとしてはpv-grubがあります。PyGRUBもpv-grubも基本的にやってくれる事は同じなのですが、PyGRUBはPythonベースのもどきスクリプトであるのに対してpv-grubは準仮想化ドメイン向けにportされたGRUB(つまり、ブートローダの機能としてはx86の物理マシンで使われているものをXenに対応させたもの)である、という違いがあります。ただ、Xen 3.4.2に含まれるpv-grubではZFSを扱えないようです(しっかり確認したわけではないのですが)。

なお、現在ではPyGRUBの利用は推奨されていません。なぜなら、PyGRUBはdomain-0上で動作するプログラムであり、細工されたdomain-Uイメージを処理させることによりdomain-0への干渉を許す可能性があるためです。pv-grubはブートローダの処理自体がDomain-U上で動作するため、いくらかセキュリティ面において優位性があります。


■ OpenSolaris のブートに必要なファイルとパラメータ


OpenSolarisをPVドメインとして動作させる際に必要なものとして、下記のファイルとパラメータがあります。


unix ファイル …… OpenSolarisのカーネル

boot_archive ファイル …… RAMイメージ
ルートファイルシステムとしてマウントするファイルシステムの位置情報


カーネル、およびRAMイメージのファイルはOpenSolarisのファイルシステム上にあるものですので、これをLinuxで動作するdomain-0のファイルシステム上にコピーするのはそれほど難しいことではありません。また、ルートファイルシステムの場所は、OpenSolarisのファイルシステム上にあるGRUBの設定ファイルを見れば解決可能です。


しかし、実際に運用をはじめると、カーネルやRAMイメージをゲストのファイルシステムから適宜抽出したり、もしくはBoot Environmentを作成/更新するたびにbootfsの値をドメインの定義ファイルに書くのは煩雑な作業となります。


■ PyGRUBを使ったOpenSolarisの起動


では早速PyGRUBを使ってOpenSolarisを起動してみましょう。以下にドメイン定義ファイルの記述例を示します。


PyGRUBを使用しない場合の例(参考)

kernel="/boot/os200811/unix"
ramdisk="/boot/os200811/boot_archive"
extra= '/platform/i86xpv/kernel/amd64/unix –B 
    zfs-bootfs=rpool/52,bootpath="/xpvd/xdf@0:a"’

PyGRUBを使用する場合の例

bootloader="/usr/bin/pygrub"


いかがでしょうか?ドメイン定義ファイルの内容が非常にすっきりしたことでしょう。

この方法を使うと、OpenSolarisのPVドメインを、ゲストのファイルシステム上にある最新カーネル、およびbeadmで実際にアクティブ化されているBEから自動的に起動することが可能です。

■ Live CDの起動にも使える

PyGRUBはZFSをサポートしていますが、そのほかISO9660もサポートしていますので OpenSolaris LiveCD をPVで起動するためにも使えます。

0 件のコメント:

コメントを投稿