2010年9月23日木曜日

shadow_memory

 シャドウページテーブルのサイズ(MB)を指定します。明示的に指定しない場合
は必要な容量が自働確保されます。


■ ドメイン


  • 完全仮想化ドメイン(HVM)


■ 書式

shadow_memory=<n>


■ 必要なシャドウメモリの容量


  • 準仮想化ドメイン …… 不要

  • HVM ドメイン(x86、x86_64)…… 256 ×仮想CPU 数+ 2 ×最大メモリ量(MB)ページ
      (1 ページ= 4KB)

  • HVM ドメイン(IA-64)…… 不要


■ 例

memory=1024
shadow_memory=8


■ 注意点


  • 本情報はXen 3.4.0時点の内容です



xen_platform_pci

Xen プラットフォームPCI デバイスの有効・無効を指定します。本デバイスは、Xenのパラバーチャルドライバの利用するために必要です。

■ ドメイン


  • 完全仮想化ドメイン(HVM)


■ 書式

xen_platform_pci=<n>

■ <n>の値


  • 1 …… 有効

  • 0 …… 無効


■ 例

xen_platform_pci=1


■ 注意点


  • Xen プラットフォームPCI デバイスは、HVM ドメイン上のゲストOS がXen ハイパーバ
    イザと通信するために使用するものです。



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で起動するためにも使えます。

access_control

ドメインのセキュリティポリシーおよびラベルを指定します。


■ ドメイン


  • 準仮想化ドメイン(PV)

  • 完全仮想化ドメイン(HVM)


■ 書式

access_conrtol='policy=<policy>,label=<label>'


■ パラメータ


  • policy …… ドメインに割り当てるセキュリティポリシー

  • label …… ドメインのラベル名


■ 注意点


  • 本情報はXen 3.4.0時点の内容です