Xen

Xen による Linux 上での仮想化環境構築

 既に気がついている人がいると思いますが、Xen は Fedora development(開発)レポジトリで利用可能となっています。Xen は他の OS を動作させる事が出来るハイパーバイザー*1としての役割を持つだけの、かなり純粋なオペレーティング・システムです。また、Xen にはハイパーバイザーの上位階層で動作し、ゲストのオペレーティング・システムを管理するツール群も含まれています。Xen は GPL ライセンスです。Xen に関する詳しい情報は Xen virtual machine monitor (Xen 仮想マシンモニタ)のウェブサイトをご覧下さい。

 Fedora で導入されている Xen は unstable(非安定版)であり、時折不安定な動作をもたらすものの、プロジェクトがもたらす開発の成果は私たちの興味を惹き付ける存在である事に違いありません。Xen を動作させるためのセットアップ作業はごく簡単なものです。ここでは Fedora 開発システム上で Xen を単体のゲスト OS としてセットアップするための概要を述べます。利用するにあたり、次のような条件が必要となります。

  • mkinitrd 4.2.0
  • python 2.4 (言語)
  • python-twisted (フレームワーク)
  • Grub がブートローダとして稼働している事
  • 標準のセットアップ時に 256 MB のメモリ(RAM)を確保している事

 Grub は Xen ハイパーバイザーを実際に稼働させ、Linux カーネルを実行させる為にも必須です。今日では Grub が標準的なマルチ・ブート方式ですね。

 システム上のメモリ(RAM) が 256MB より少なくても、おそらく Xen をインストールすることができるでしょう。ですが、おそらく /boot/grub/grub.conf で指定する dom0_memory の値を減らさなくてはいけません。dom0 の値は mkninitrd によって 130000 と固定されています(値は変更できるよう修正予定です)が、多少は少なくしても構いません。同じく、特権のないゲスト OS の利用にあたり、Xen ハイパーバイザーは 32MB 以上のメモリを必用としています。

 また、xen および kernel-xen0 パッケージもインストールする必用があります。作業が終わったら、grub.conf の boot パラメータに xen0 カーネルの記述を追加します。これであとは再起動することで xen0 カーネルが新しく動作します。

メモ: rhbg を無効にし、ランレベルは 3 に変更しておいたほうが良いでしょう。未検証ですが X Window の動作に支障があるという報告がありました。

 再起動さえしてしてしまえば dom0 カーネルで動作しています。マシンの起動時と停止時に TLS に関する警告が表示されますが、特に心配する必用はありません。xend を起動するには、コマンド "service xend start" を実行し、ドメインの稼働状況を見られるように "xm list" と実行します。これで単純な Base Fedora システムをセットアップするための準備が整いました。まずはじめに、kernel-xenU パッケージのインストールを行わなくてはいけません(あいにく、ゲスト・ドメインはゲスト OS の外にカーネル情報を置かなくてはいけないのです)。

 次に、Fedora をインストールするための基盤となるファイルを作成します。以下の例では 1 GB のファイルを作成しています。

dd if=/dev/zero of=/root/fedora.img bs=1M count=1 seek=1024

 それから、このイメージ・ファイルに対して ext3 ファイルシステムを構築します。

mke2fs -F -j /root/fedora.img

 それから新しいファイルシステム階層を一時的に認識するために、いわゆる /mnt へ一時的にマウントさせます。

mount -o loop /root/fedora.img /mnt

 さて、これでこの chroot 環境の中にどのようなシステムでもインストールが可能となりました。設定をすすめるにあたり yum レポジトリの指定が適切なものかどうか確認をしてください。その際に、どのようなグループ群をインストールするか決めて下さい。私は Base( Base の替わりに Core を使うという方法もありますが、難しいですよ) から始めることを推奨します。次のように実行します。

yum --installroot=/mnt -y groupinstall Base

 インストールには多少の時間がかかります。コーヒーを飲んだりお菓子を食べていてください :-)

 再びコンソールに戻って来られたら作業は終わりです。/mnt に最小限のインストールを行いました。    次は xen を正しく動作させるために、若干標準とは異なった基本的なファイル階層システムをセットアップすることになります。作業では、a) initrd が使用していない /dev 配下で必用とされるデバイス・ノードを作成します。b) /etc/fstab を調整します。次のような単純な記述で動作します。

for i in console null zero ; do MAKEDEV -d /mnt/dev -x $i ; done

 /etc/fstab に対しては、次のような単純な記述で動作します:

/dev/sda1               /                       ext3    defaults 1 1
none                    /dev/pts                devpts  gid=5,mode=620 0 0
none                    /dev/shm                tmpfs   defaults 0 0
none                    /proc                   proc    defaults 0 0
none                    /sys                    sysfs   defaults 0 0

 ファイルシステム上で各種設定が終わったら /proc をアンマウントします。

umount /mnt{/proc,}

 これであとは設定ファイルを調整して準備が完了します。私のマシンの場合は /etc/xen/rawhide といった単純な設定を済ませました。

メモ: カーネルとして xenU パッケージでインストールした /boot/vmlinuz-2.6.12-1.1369_FC4xenU が代用されます。補足そておくと、デバイス名 sda1 と記述されているのは、先ほど上記 /etc/fstab で記述した際のものです。

kernel ="/boot/vmlinuz-2.6.10-1.1103_FC4xenU"
memory = 64
name = "rawhide"
nics = 1
disk = ['file:/root/fedora.img,sda1,w']
root = "/dev/sda1 ro"

 次に、新しくドメインを作成しましょう。

xm create -c rawhide

 最後にドメイン・プロンプトが表示されるかどうか確認し、root でログインできるかどうかや自由にコマンドを使えるかなど楽しんでみてください。

 以上が簡潔で粗々とした説明でしたが、使いこなす為にはまだまだ作業があります。次のステップはあなた自身がどのように Xen ゲスト環境で実際にインストールを行いゲスト・ファイルシステム上でカーネルを起動することが出来るかです。あなたはもう、そこまでたどり着いているのです(そう私は思います :) )。

 ゲスト・オペレーティング・システムは自分自身が Xen 仮想マシン上で動作していることを認識していますので、必要に応じて各種設定の調整が必用となります。Xen の利点は VM を利用するために最適化されている事です。加えて、domain 0 (自分自身のメインの事です)がサポートしていないデバイスは、ゲスト・オペレーティング・システムに対しても同様にサポートさせることができません。例えば、ehtX というネットワーク・デバイスがあるとしても、異なったドライバを使えば動作できません(xen_net には e1000 等の代替ドライバが含まれています)。現時点で Xen がゲスト・オペレーティング・システムとして動作できるのは、Linux・FreeBSD(開発中)・netBSD・Plan 9 です。現在、x86_64・ia64 アーキテクチャ上での検証作業が進行中ですが、あくまで動作するのは x86 アーキテクチャに限られています。

 さて、Xen は VMWare のような VM やユーザ・モードの Linux と何が違うのでしょうか? VMWare を利用しているユーザーの若干は、Xen のほうが有益であるとみなすでしょうし、一方で見向きもしない人もいるでしょう。VMWare は BIOS 機能を用いることで、見た感じ、香り、味までも"本当の"PC?と思わせることが出来るように完全に仮想化されたマシンです。Xen は並行仮想化(paravirtualized)されており、それ故に変更を行わなくてはいけません。(並行仮想化(paravirtualized)の意味することは、必用に応じてモジュールを導入したり、稼働中の OS に変更を加えず動作させることが出来ないという事です。)現在 Xen はユーザーモードで Linux を稼働させている事に変わりうる機能を実装できるよう開発が進められています。

 Fedore Core へ Xen を統合する作業 (integrate Xen into Feodora Core)が進行中です。宜しければ、手助け・テスト・フィードバックでも何でも飛び跳ねるくらい大歓迎します。特定の問題に関しては Bugzilla のレポートで扱います。その一方で、 fedora-devel-list (Fedora Core 開発者向けメーリングリスト)でも質問をしたりフィードバックをするための良い場所になるでしょう。メーリングリストでは非常に多くのメールが流れていますが、 Fedora コミュニティの開発が信じられないくらい促進されている状況を見たいので、私はメールを読み続けるでしょう。

 私たちは Fedora Core 4 に対して、可能な限り完全に Xen と統合された環境を提供しようと挑戦しています。たとえ完全な統合ができなかったとしても、Xen という技術を使うことで、その能力と性能に多くの人たちが興味を惹き付けられ使い始める様になるに違いないでしょう。あと一言だけ書かせてください。フィードバックは開発の原動力として技術開発の促進に役立つでしょう。


原文 Xen, Virtualization on Linux
http://www.redhat.com/magazine/004feb05/features/virtualization/

*1 In general terms, a virtual machine in computer science is software that creates an environment between the computer platform and the end user in which the end user can operate software.

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: Mon, 08 Aug 2005 21:46:07 JST (5966d)