Xen/XenFaq - Xen 公式 Wiki 日本語訳

開発元の Ian Pratt 氏より日本語版の翻訳および公開の許諾を頂きました。氏に感謝いたします。
この日本語訳は Xen 2.0 相当のものです。
最新版の Wiki に対応した翻訳については Xen/XenFaq - Xen 公式 Wiki 日本語訳 をご覧下さい。

Xen FAQ 公式 Wiki 日本語訳


1. General Information - 一般的な情報

1.1 Xen とは何でしょうか?

 Xen は x86 互換コンピュータの為の仮想マシンモニタ(VMM)です。Xen は1つの物理的なシステム上で動作開始から終了まで性能を落とすことなく、それぞれ独自の OS で稼働する複数の仮想マシンを安全に実行することができます。

1.2 Xen のラインセンスは何ですか?

 Xen はオープンソース・ソフトウェアです。配布ライセンスは GNU General Public License に準じます。オペレーティング・システムや Xen のハイパーコール(hypercall)インターフェースを用いるように設計されていても、動作しない場合やライセンスの相違によって実行することが許されない場合があります。

1.3 どんな OS 上で Xen は動作しますか?

 このような高性能を発揮するためには Xen が OS 上に移植されなくてはいけません。これまでのところ、Linux 2.4・Linux 2.6・NetBSD に於いて安定版が移植されています。FreeBSD と Plan 9 向けの移植も完成に近づいています。

1.4 マイクロソフト社のウインドウズは Xen で動きますか?

 残念ながら、現時点で私たちはウインドウズをサポートすることができません。私たちが Xen で用いる並行仮想化(paravirtualized)技術の手法は、これまでウインドウズに対しては直接有効に機能しませんでした。たとえ Intel 社や AMD 社によって Windows XP や 2003 Server に対応した最新のハードウェアが提供されても、近いうちに提供する事は無理でしょう。私たちはこの問題を解決できるように取り込んでおり、時間はかかりますが、新しいプロセッサでも利用可能にさせてゆくつもりです。

1.5 Xen はノート PC 上でも動作しますか?

 ほとんどのノート PC 上で Xen は動作するでしょう。ですが、現時点では APM や ACPI といった電源管理はサポートされておらず、バッテリーの寿命を減らす事になり、サスペンドやレジューム機能を無効にしてしまいます。近いうちに Linux 環境を利用していても ACPI をサポートできる事を見込んでいます。

* 1.6 Xen はどのようなアーキテクチャをサポートしますか?

 現時点で Xen でサポートしているのは x86 アーキテクチャのみです。そのなかでも "P6" 以上の新しいプロセッサを必用とします(この中には Intel 社製のものと、過去5年間に公開された AMD x86 互換 CPU も含みます)。x86/64 システムへの移植作業は進行中です。現時点で既に 32 ビットのレガシー・モード(下位互換)では動作を確認しています。付け加えておくと、IA64 アーキテクチャへの移植が完成に近づいています。可能であれば、 PPC といった他のアーキテクチャにも実装するこが出来ると見込んでいます。

2. Booting Xen - Xen の起動

2.1 Xen を実行するとエラーが出ます……(コンソール出力は "(XEN)" で始まってます)

(XEN) Initial guest OS requires too much space
(XEN) (8MB is greater than 0MB limit)

 Xen を開始させる前に dom0_mem に対するコマンドラインからのオプションが適切かどうか確認してください。dom0_mem=512M の様な指定は最近のバージョンのみ利用可能です。2.0.5 以下のバージョンではメモリの単位をキロバイトで指定する必用がありますのでご注意下さい。例:dom0_mem=524288 とキロバイト(KB)単位で指定します。

(メモ:Xen を稼働させるためには、Xen の動作の為にメモリを残しておく必用があります。上記のように 512MB のメモリを確保するのであれば、当然、システムは 512MB 以上のメモリを実装しているものと想定されます。システムのメモリ容量が少ない場合は dom0_mem を減らして動作させてください)

3. Networking Issues - ネットワーク関連の問題

3.1 新規作成したドメインに対して ssh ログインが出来ず ping も通りません。何故でしょうか?

 初期設定では domain 0 に割り当てられる Linux ブリッジ・ユーティリティを経由して仮想ネットワークがセットアップされるようになっています。ドメインを作成後(例えば domain 1 を作ったとして)、ifconfig を domain 0 に対して実行して有効にし、vif1.0 といったインターフェース名が見えるようになります。ブリッジ機能が正常に動作しているかどうかは brctl と入力して xen-br0 を参照してください。最後に、新しいドメインにコンソール(xm console)経由でログインし、IP アドレスの設定を標準的なツールである ifconfig や route を使って設定することが出来ます。

3.2 新規ドメインでは、外部に接続するまでネットワーク上の通信が通らないのですが?

 この問題は以下の状況下で発生します:

  • ドメイン作成時に MAC アドレスを任意で指定せず、ランダムに作成される MAC アドレスを使うようにした場合
  • ネットワーク上位のルーターがローカルな ARP テーブルのキャッシュを持っている場合

 ドメインを破棄すると、ホストシステム上の ARP キャッシュは存在しない仮想 NIC から MAC アドレス情報を削除します。もしドメインを復帰させても、異なった任意の MAC アドレスが割り当てられる可能性は高いです。これはホストマシンによって起こる問題ではありません。というのも、ホスト側での情報が削除されても外部のスイッチやルータ上には "古い" MAC アドレスの情報が記憶されているためです。スイッチやルータは外部向きのパケットが送られるようになると、自動的に古い ARP キャッシュ内の情報を削除しようとします。これは全くもって Xen に欠陥があるわけではありません。純粋に ARP テーブル情報の実装に関する問題なのです。

対策:手作業で VM 設定ファイルの MAC アドレスを宣言するか、2.0-testing バージョン以上にアップグレードしたら問題は解消されます。当問題については、次期のメンテナンス・リリース 2.0.4 に於いても同様に問題が解消されているでしょう。

4. Running Linux on Xen - Linux を Xen 上で稼働させる

4.1 Linux 起動時に '/lib/tls' に関する大きな警告メッセージが表示されます。何か対策をすべきでしょうか?

 メッセージ通り対策を推奨します! 若干の最新版ディストリビューションの中には glibc に含まれる 'TLS' が Xen のものと完全な互換性を持っていない為です。Xen を使用するに当たり、確実に最大の性能を発揮するためには、互換性のない glibc ライブラリを無効にしなくてはいけません。作業は /lib/tls ディレクトリを移動するという簡単にできるものです(例: mv /lib/tls /lib/tls.disabled)。

 作業をしたら、その替わりとして、Xen に対応した GLIBC をインストールしてください。詳細は XenSpecificGlibc をご覧下さい。

4.2 システムを起動すると多くのプログラムが 'Segmentation falut' とクラッシュしてしまいます。何か間違っていますか?

 前の質問に対する回答をご覧下さい。若干の環境では(例えば VMware 製品の環境内で Xen を動作させようとしたとき)、TLS ライブラリに関する厳しい問題を引き起こす場合があります。エラーによる問題が非常に多く、ログインすら出来ないような状況であれば、一時的にブート・パラメータに init=/bin/bash を指定して Linux のコマンドラインが正常に応答するかどうか確認する方法があります。

4.3 vmlinuz-xen0 で起動すると、2番目の CPu を認識しないようですが何故でしょう?

 通常通りの Linux と同じように複数の CPU を認識してくれると思っているかもしれません、が、実際には認識できないのです。正確には2つめの CPu は Xen によって認識されているのですが、私たちは今のところ複数 CPU 環境での仮想マシンをサポートしていません。それで vmlinuz-xen0 を通すと CPU が1つしか無いように見えてしまいます。もちろん、仮想マシン(VM)を作成して、もう1つの CPU 上で動作させることも可能です。マルチプロセッサ環境の仮想マシンについては準備を進めています。

4.4 9つめのドメインを仮想ディスクのループバック用ファイルとして作成しようとしましたが、"Error: vbd: Segment not found: uname=file:/path/to/image" といったメッセージが出てしまいます。どうしたら良いでしょう?

 標準の設定では、Linux では最高で8つのループバック・デバイスを有効にすることが可能です。設定によってループバックデバイスの数を Grub の domain 0 カーネルのコマンドライン上で max_loop=32 (など)の様に指定することができます。また、必要な数だけ /dev 配下にループバック用のデバイスを作成しなくてはいけません。

4.5 domain 0 上で X Window の起動を試みましたがサーバがハング(固まる)してしまいました(あるいは domain 0 パニックのエラーが発生)。何が起こっているのでしょう?

 どうやらマシンの X サーバが 2.0-testing および開発版に含まれてサポートされている agpgart を使おうとしているようです。新しい tar 形式のアーカイブを取得するか、BK レポ時取りにあるファイルのコピーを入手してください。

4.6 "Badness in local_bh_enable at kernel/softirq.c" というメッセージが出ます、どうしてこうなるの?

 これはどちらかというと Xen よりも i386 向けにネイティブにコンパイルされたモジュールによって引き起こされている模様です。Xen 環境向けのモジュールを構築する場合には make ARCH=xen を使用します……

 選択肢としては、適切な API を使うよりも、むしろ、直接割り込み可能な構造を持つドライバを書くべきなのかもしれません……

4.7 どのように初期段階で RAM ディスク(initrd)を稼働させられますか?

 GRUB の設定ファイルに外部"module"(モジュール)として domain 0 の initrd ファイルに記述を追加し、次に kernel-module 行も書きます(例: module /boot/initrd-2.6.9-xen0.img )。他のドメインの為に initrd ファイルで "ramdisk"(RAM ディスク) について記述する場合、設定ファイルに記述を追加します(例: ramdisk = path/to/initrd-2.6.9-xenU.img)。

4.8 ディストリビューションで提供されている initrd ファイルでは Xen が起動できませんでした。どのように調整したらいいですか?

 initrd イメージには様々な形式がありますが、主な2つの形式は gzip 形式で圧縮されたファイルか gzip で変換された cpio ファイルです。どちらの場合も(root ユーザ権限で動作させるとき)initrd.img を修正する必要があります。次のような手順を踏みます。

# mkdir initrd.mnt
# gzip -d -S ".img" /path/to/initrd.img
# mount -o loop /path/to/initrd initrd.mnt OR (cd initrd.mnt && cpio -ic <../path/to/initrd)
# ...edit files in directory initrd.mnt....
# umount initrd.mnt OR (cd initrd.mnt && find . | cpio -oc --quiet >../path/to/initrd)
# gzip -9 -S ".img" /path/to/initrd

 cpio を使っている場合に i ノード番号に関する警告がでますが問題ありません。これらは無視してください。

4.9 balloon ドライバーを使うとき、'top' や 'free' といったコマンドでメモリ使用量が表示されませんが、何か手を加えてますか?

 balloon ドライバは Xen から直接与えられるシステム・アロケータ情報のメモリ値を参照しています。ですが、カーネルの視点からするとメモリはシステムの一部であり、また、balloon ドライバによっても用いられているものなのです。そのため、不正確なメモリ使用値となってしまいます。

5. Building Linux for Xen - Xen の為の Linux 構築

5.1 Linux domain 0 カーネルの動作中、どうやってハードウェアの指定を行えますか?

 .config ファイルを編集し、トップレベルで型を入力することが可能です。例えば、Linux のグラフィカルな設定編集環境を用いる場合、次のようにします。

# cd linux-2.6.9-xen0 
# make ARCH=xen xconfig      (configure が必要であれば)
# cd ..
# make

 もし kernel 階層に既に .config ファイルが置かれている場合は、そのままにしておいてください。もしファイルが置かれていないのであれば、./dist/install/boot/config-2.6.9-xen0 にあるファイルを .config ファイルへコピーしてください。最終手段として arch/xen/configs/defconfig ファイルを用いる方法もあります。

5.2 ビルド時にどうして "error: isa_virt_to_bus_is_UNSUPPORTED undeclared" と表示されるのでしょうか?

 最近のドライバの中には(ISA プライマリ・デバイス) 、デバイスがメモリを確保するため Xen がメモリアドレスを参照することを制限してしまう場合があります。このようなドライバの大部分では、ランタイムを優先するために失敗させられたとエラーが表示されます。私たちは最近の x86 ハードウェアを全てサポートする事を目指しています。ですが、若干の古い NIC やディスク・コントローラーに対してはサポートから除外させてください。

6. Linux Distributions - Linux ディストリビューション

6.1 Debian では Xen 導入のために、どのようなパッケージが必要ですか?

 Xen を動作させるためには OS に含まれるバイナリ群の他に外部のパッケージは必要としません。Xen の構築にあたっては、XenLinux とソースから必要に応じてドキュメントをご覧下さい。必要となるパッケージは次の通りです:make, gcc, libc6-dev, zlib1g-dev, python, python-dev, python-twisted, bridge-utils, iproute, libcurl3, libcurl3-dev, bzip2, module-init-tools, latex, latex2html, transfig, tgif。

6.2 Fedora Core 3 で "Freeing unused kernel memory: ..." といった表示が止まりません、何故でしょう?

 Fedora Core 3 では /dev 配下のデバイスのノードを管理するために udev という新しいシステムを使っています。正常に起動して init が実行されてコンソールが画面に表示されたら、手動でデバイス・ノードを作成して initrd 実行時に認識されるようにしなくてはいけません。この問題に対する解決方法は、予めルート・ファイルシステム上からノードを作成しておくことです。次のようにします:

# mknod /path/to/dev/null c 1 3
# mknod /path/to/dev/console c 5 1

 私たちが提供するファイルの替わりに、Fedora Core 3 オリジナルの initrd ファイルを読み込むこみたい場合は、/boot ディレクトリに initrd ファイルを配置します。詳細はこちらをご覧下さい。initrd ファイルを読み込んで実行できるように変更を加えます。詳しくはこちらこちらもご覧下さい。

6.3 なぜ Fedora Core 3 や Debian Sarge では仮想マシンのインスタンスの保存や移動が出来ないのですか?ポート 111 からの接続が拒否されというエラーが出ています。

 Fedora Core 3 と Debian Sarage には /usr/lib/libcurl.so.2 がありません(2005 年 5 月 2 日の RPM 更新によって、それらは libcurl.so.3.0.0 に置き換えられました)。このエラーの原因は保存などの作業を行うための /usr/sbin/xfrd の実行に失敗しているためです。Fedora Core 3・Debian Sarge ともに libcurl.so.3.0.0 から libcurl.so.2 へのシンボリック・リンクを作成して対処してください。Debian をお使いであれば古い安定版を用いてインストールすることも可能ですが、インストールする事によってどのような影響や問題があるか、事前に認識しておいてください。

 xen-testing においては cur3 に関する問題はありません。

7. Using XEN - Xen の使用

7.1 どのようにしてコンソールの接続・切断ができますか?

 たとえば domU を開始するときは、次のようにして直接コンソールへ接続できます。

# xm create -c your-DomU-config

 コマンドを実行すると、すぐに domU への接続コンソールが開始されます。

 既に実行中の domU に対してコンソール接続をしたい場合、まずは DomU が使っている Id を調べなくてはいけません。

# xm list
Name              Id  Mem(MB)  CPU  State  Time(s)  Console
Domain-0           0      123    0  r----   2482.9
testXM1           30      127    1  -b---      4.9    9630
testXM2           32      127    1  -b---      4.7    9632
testXM3           34      128    1  -b---      0.3    9634

 例えば testXM2 という Id が 32 の domU へ接続したい場合は、次のようにします。

# xm console 32

 接続を切断したい場合はエスケープ・シーケンス <CTRL> + ']' を使います。


トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: Thu, 12 Oct 2006 00:07:13 JST (6399d)