From Fedora Project Wiki

Revision as of 18:45, 30 May 2008 by Anubis (talk | contribs) (Fixed templates)

内容:


Xen について

Xen はオープンソースの仮想マシンシステムです。Xen に関する詳細はhttp://wiki.xensource.com/xenwiki/と Fedora Xen ページをご覧ください。

Fedora は 3.0.x Xen を追随しています。 Xen 3.0.0 は 2005年12月にリリースされました。 Xen 2.0.x リリースのゲストシステムとは互換性がありません。

クイックスタート

Fedora Core 5 で Xen とゲストシステムをセットアップするのは、 Fedora Core 4 より遙かに簡単になっているはずです。以下にシステムを Xen ホストとして設定する方法と、 Xen ゲストシステムの構築に必要な方法を紹介します。

システム必要条件

  • ご利用のFedoraのデフォルトブートローダである GRUB を使っている必要があります。[[FootNote(実際には Xen Hypervisor を起動してから Linux kernel を起動させるため、GRUBが必要になります。GRUB は MultiBoot 規格を使用してこれを行ないます。)]
  • ゲストオペレーティングシステム用に十分な空き記憶容量が必要になります。最小のコマンドライン Feodra システムは 600 MB、標準的なデスクトップ Fedora システムには 3GB 程度を要します。
  • 一般的には、インストール予定のゲストシステムあたり256MB程のRAMが要求されます。この大半はインストールに要されるメモリの必要条件に起因するので、FC5がリリースされる頃には少くなっているかもしれません。
  • x86 と x86_64 システムの両方がサポートされています。

表記上の規則

root 権限が必要なコマンドは'#'文字で始まります。root になるには、通常のユーザーで 'su' コマンドを入力して、rootパスワードを入力してください。または、 'sudo' 等をセットアップしているなら、sudoを使用してください。

Xen ソフトウェアのインストール

Fedora Core 5 を新規インストールする場合は、カーネルコマンドラインに 「xen0」を追加すると Xen をインストールするように指定できます。このようにインストールする事で、 Xen カーネル とユーザースペースのサポートパッケージがインストールされます。

もし既に Fedora Core 5 システムをインストールしているなら、 Xen カーネルを以下のコマンドでインストールする事ができます:


上記コマンドで、必要なパッケージと依存しているパッケージをインストールします。'kernel-xen0' は Xenが有効化されたホストシステム kernel (domain 0) と hypervisor をインストールします。hypervisor を操るユーザースペースツールを含んだ 'xen' パッケージもインストールされます。

インストールが完了すると、/boot/grub/grub.confxen0 カーネル を起動する為の、エントリが作成されているはずです。xen0 カーネル はデフォルトで起動するオプションにはなっていません

xen0 をデフォルトで起動するように GRUB を設定するには /boot/grub/grub.conf を編集して、 xen0 kernel をデフォルトに設定してください:[[FootNote(/etc/sysconfig/kernel を編集すれば、将来の kernel-xen0 もデフォルトで起動するように設定できます。)]

default=0
もし次回起動時にグラフィカルな起動画面(rhgb)や、 X-Window が起動に失敗するなら、グラフィカルな起動画面 (rhgb) を無効にして、 runlevel 3 (コマンドラインのみのモード)に変更しないといけないかもしれません。

ランレベル3 でホストシステムが起動するようオプションを 3 にした/boot/grub/grub.conf の例を以下に示します。:

default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.15-1.29_FC5hypervisor)
root (hd0,0)
kernel /xen.gz-2.6.15-1.29_FC5
module /vmlinuz-2.6.15-1.29_FC5xen0 ro root=/dev/VolGroup01/LogVol00 3
module /initrd-2.6.15-1.29_FC5xen0.img

Fedora Core の Xen 機能は VNC を使って、遠隔地もしくは、ローカルホストからグラフィカルインターフェースにアクセスする事ができます。Xen を管理するホストには、 vnc パッケージをインストールしてください:


これで vncviewer クライアントがインストールされます。

Xen の有効化

xen-hypervisor GRUB オプションで再起動させれば、 Xen が有効化された kernel で起動しているはずです。[[FootNote(xen0 kernel を起動させているか確認するには 'uname -r' コマンドを入力してください。 - kernel の名前に xen0 という文字列が含まれているはずです。)] . また Xen サービスも起動しているはずです。 Xen が正常に起動しているか確認するには、以下のコマンドを入力してください:


Domain-0 (Xen が有効化されたホスト) が起動しているのが確認できるはずです。

デフォルトのセットアップでは、ゲスト OS のネットワークは、ブリッジでつながる事に注意してください。この意味は、ホストと同じネットワークの IP アドレスを取得します。従って DHCP サーバでアドレスを提供している環境では、ゲストにもアドレスを与えるよう設定する必要があります。/etc/xen/xend-config.sxp を編集する事で、違うネットワークタイプに変更する事ができます。

ゲストシステムの作成

このインストラクションは、シンプルな Fedora を Xen ゲストシステムとして作成する方法を紹介します。


Fedora ゲストシステムの作成

いくつかの既知のバグはあるものの Fedora Core 5 では、 anaconda を使用したゲストシステムのインストールがサポートされています。xen パッケージにはゲストインストールを開始する為のスクリプトが含まれています。次のコマンドを入力してください。


コマンドが起動すると、作成しようとしている仮想マシンに関するいくつかの質問を聞かれます。これら情報はコマンドラインオプションとして渡す事も可能です。--helpをつければ、詳細を参照する事ができます。また kickstart オプションは-x ks=optionsで渡す事ができます。 1. What is the name of your virtual machine? (仮想マシンの名前は何ですか?)これは、複数の xm コマンドを使用した時に表示されるラベルで、/etc/xen に作成されるドメインコンフィグファイルの名前にも使用されます。 1. How much RAM should be allocated (in megabytes)? (どれだけのRAMを割り当てますか(MB単位)?)ここにはゲストインスタンスに割り当てる RAM の容量を指定します(例、256)。256MB 未満でのインストールは推奨しません (test2 では動作する可能性あり)。 1. What would you like to use as the disk (path)? (ディスクには何を使いたいですか(パス)?)ゲストのディスクイメージとして使われるファイル名をフルパスを書いてください。 (例 /home/joe/xenbox1)。 これはゲストに、ディスクとしてエクスポートされます。 1. How large would you like the disk to be (in gigabytes)? (ディスクはどれぐらいの大きさがいいですか(ギガバイト単位)?)上記の質問で指定したファイルが存在しなければ、ゲストの仮想ディスクのサイズを指定します。大きさは使用用途によって変わってきます。4.0 ギガバイトがデフォルトインストールを使用する際の適当な想定ではないかと思います。 1. What is the install location? (インストールの場所はどこですか?)anacondaによって使われるフォーマットの Fedora Core 5 インストールツリーのパスを与えてください。NFS、FTP、HTTP がサポートされています。例:

この時点で次のエラー 'The privileged domain did not balloon!' が出たら、既に起動している仮想マシンのメモリリミットをリサイズして、新しいゲスト仮想マシン用の RAM を確保する必要があります。例えば、dom0 が使用する RAM を 256 メガに制限する場合、以下のコマンドを入力します:

xm mem-set 0 256

既存のドメインを縮小したら、再度 xenguest-instally.py スクリプトを起動させてください。

この後、インストール カーネル と initrd がインストールツリーからダウンロードされ、インストーラーが起動します。

  • 全ての質問に答えると、通常の anaconda テキストスクリーンのインストールに使う言語とキーボードの選択を行う画面が表示されるはずです。日本語の選択肢も表示されますが、日本語はサポートされていない為、英語のままインストールが継続します。(その後、VNC経由でのグラフィカルインストールを選択すれば、グラフィカルな日本語インストーラーが使えます。)
  • システムに通常行うように TCP/IP の設定を行ってください。
  • ここからゲストシステムのインストールが行われます。テキストモード、もしくは VNC 経由で、グラフィカルモードでインストールを続ける事ができます。

VNC 経由でのグラフィカルモードインストール

  • Start VNC を選択してください。
  • VNC の安全な接続を行なう場合はここでパスワードを入力します。無防備

な接続でよい場合は No Password を選択します。

  • VNC サーバーの情報が表示されます。あなたの好きな VNC クライアントで接続してください。(ローカルマシンからでも、他のシステムからでも可能です。)
  • VNC は通常の Fedora グラフィカルインストールスクリーンを表示します。xen ゲストのインストールを続けてください。
  • 注記
  • xvda デバイスは install-script.py で指定したファイルです。ゲストには、単なるパーティションではなく、ディスクそのものとして見えます。従って、通常のディスクと同じようにパーティションを切ったり、 LVM を作成する事ができます。初めて使う際には、インストール中に、パーティションのフォーマットと、パーティションの設定を行う必要があります。

インストール後

インストーラーが終了したら、以下のコマンドで、ゲスト OS の電源を入れる事ができます。


foo はあなたがゲストシステムに与えた名前です。 -c は xen コンソールをあなたの仮想マシンに接続します。その他、xm で以下のようなさまざまなコマンドを使用することができます


実行できるコマンド一覧です。


は top コマンドのように仮想マシンが何をやっているか確認する事ができます。


はゲストOS foo を綺麗にシャットダウンする事ができます。foo はあなたのゲストの名前に変更してください。


はゲスト「foo」の状態を/root/foo.restoreファイルに保存します。


で、上記で保存されたゲストを復元する事ができます。

起動時にドメインを自動的にロードする

再起動時に、ドメインを自動的に起動させたい場合は、xendomains を有効にして、自動起動させたいドメインの Xen 設定ファイルを /etc/xen/auto/ ディレクトリに置いてください。

xendomains サービスを有効にするには:


/etc/init.d/xendomains スクリプトはLSB init 機能の使用の仕方と いう面から 見ると壊れているので注意してください。これは恐らく Fedora の LSB サポートのバグによるもので、 Fedora のバグジラに bug 171052bug 171056 で報告されています。後者のバグには、使用可能な改変されたバージョンの /etc/init.d/xendomains スクリプトが添付されています。

トラブルシューティング

Xen のインストールで問題がでた場合は、ホストシステムの2つのログファイルを解決に使う事ができます。 /var/log/xend.log ファイルは、 'xm log' を起動した時と同じ情報を記録しており、基本的な情報を参照する事ができます。残念な事に、ほとんどのログメッセージは短くあまり有用な情報を含んでいません。以下が、NetBSD/xen カーネルを使ったドメインを作成しようとした時にでるログです。

[2005-06-27 02:23:02 xend]  ERROR (SrvBase:163) op=create: Error creating domain:(0, 'Error')
Traceback (most recent call last):
File "/usr/lib/python2.4/site-packages/xen/xend/server/SrvBase.py", line 107, in _perform
val = op_method(op, req)
File "/usr/lib/python2.4/site-packages/xen/xend/server/SrvDomainDir.py", line 71, in op_create
raise XendError("Error creating domain: " + str(ex))
XendError: Error creating domain: (0, 'Error')

二つめのファイルは /var/log/xend-debug.log にあり、さらに詳細な情報を記録します。 NetBSD/xen kernel を起動させようとすると以下のログが記録されます:

ERROR: Will only load images built for Xen v3.0
ERROR: Actually saw: 'GUEST_OS=netbsd,GUEST_VER=2.0,XEN_VER=2.0,LOADER=generic,BSD_SYMTAB'
ERROR: Error constructing guest OS

エラーを報告する際や、 Xen のセットアップに助けが必要な場合などは、xend.logxend-debug.log の両方のメッセージを報告してください。

シリアルコンソール

さらに難しい問題の場合は、シリアルコンソールが助けになります。Xen kernel自身が落ちてしまい hypervisor がエラーを出力してしまうと、ローカルホストでエラーを記録し続ける方法がありません。シリアルコンソールはエラーをリモートホストに送る事ができます。

シリアルコンソールの出力用に Xen ホストを設定し、この出力を受け取るリ モートホストをセットアップする必要があります。コンソールアウトプットを行う為に、 /etc/grub.conf に適切なオプションを設定する必要があります。例えば:

title Fedora Core (2.6.16-1.2080_FC5xen0)
root (hd0,2)
kernel /xen.gz-2.6.16-1.2080_FC5 com1=38400,8n1 sync_console
module /vmlinuz-2.6.16-1.2080_FC5xen0 ro root=LABEL=/ rhgb quiet console=ttyS0 console=tty pnpacpi=off
module /initrd-2.6.16-1.2080_FC5xen0.img

com1 (ie. /dev/ttyS0 on Linux.)への38400-bps シリアルコンソールの場合、 "sync_console" が非同期の hypervisor コンソールアウトプットが原因のフリーズを回避し、 "pnpacpi=off" がシリアルコンソール上のインプットが壊れるのを防ぎます。 "console=ttyS0 console=tty" は kernel エラーが通常の VGA コンソールとシリアルコンソールの両方にログとして記録されるようにしています。完了したら、 ttywatch (fedora-extras) をインストールし通常のnull-modemケーブルで接続されたホストで情報をキャプチャーできるように設定してください。

ゲストディスクイメージのデータへのアクセス方法

ゲストディスクイメージの中のデータにアクセスするのを大きく助ける2つのツール (lomountkpartx) が存在します。ゲストと dom0 が同時にアクセスするとファイルシステムが壊れる可能性があるので、ゲストが起動中には行わないでください。


  • lomount

lomount は小さなディスクイメージでのみ動作し、 LVM ボリュームを扱う事はできません。従って、複雑な場合は、device-mapper-multipath RPM から提供されている kpartx を推奨します:

  • kpartx
add map guest1p1 : 0 208782 linear /dev/xen/guest1 63
add map guest1p2 : 0 16563015 linear /dev/xen/guest1 208845

これはブロックデバイスのみで機能し、通常のファイルにインストールされたイメージでは機能しません。ファイルイメージを扱うには、最初に loopback デバイスをセットアップする必要があります:

/dev/loop0
add map loop0p1 : 0 208782 linear /dev/loop0 63
add map loop0p2 : 0 12370050 linear /dev/loop0 208845

このケースでは、デフォルト Fedora インストールとしてフォーマットされたイメージを追加しました。従って、/boot とその他全部を含んだ LVMボリュームの2つのパーティションが存在します。これらは /dev/mapper からアクセスする事ができます:

brw-rw---- 1 root disk 253, 6 Jun 6 10:32 xen-guest1
brw-rw---- 1 root disk 253, 14 Jun 6 11:13 guest1p1
brw-rw---- 1 root disk 253, 15 Jun 6 11:13 guest1p2

2番めのパーティションにある LVM ボリュームにアクセスするには、"vgscan"で LVM をスキャンして、パーティション(デフォルトでは"VolGroup00"という名前)にあるボリュームグループを"vgchange -ay"で有効化する必要があります:

Reading all physical volumes. This may take a while...
Found volume group "VolGroup00" using metadata type lvm2
2 logical volume(s) in volume group "VolGroup00" now active
LV VG Attr LSize Origin Snap% Move Log Copy%
LogVol00 VolGroup00 -wi-a- 5.06G
LogVol01 VolGroup00 -wi-a- 800.00M
...
注記: 終了する際は必ずロジカルボリュームを"vgchange -an"で無効化し、パーティションを"kpartx -d"で削除し、ループデバイスを使用した場合"losetup -d"で削除してください。理由は2つあります。1つ目の理由は Fedora Core のデフォルトボリュームグループはいつも同じなため、2つのディスクイメージを同時に有効化した場合、2つの違う LVM ボリュームグループが同じ名前で存在してしまいます。LVM はこの状況でできる限り対応しますが、あなたはコマンドライン上ではこれら2つのグループを区別する事ができません。

2つ目の理由は無効化するのを忘れて、ゲストを起動させた場合 LVM がゲストと dom0 の両方で有効化される可能性があります。そして両方で有効になっているとボリュームグループもしくはファイルシステムが破壊される可能性があります。

ヒント

Q: xend サービスを起動させようとしているのですが、何もおこりません。xm list1 を行うと以下のアウトプットが表示されます:

Error: Error connecting to xend: Connection refused.  Is xend running?

また手動で xend start を行うと、以下のエラーが表示されます:

ERROR: Could not obtain handle on privileged command interface (2 = No such file or directory)
Traceback (most recent call last):
File "/usr/sbin/xend", line 33, in ?
from xen.xend.server import SrvDaemon
File "/usr/lib/python2.4/site-packages/xen/xend/server/SrvDaemon.py", line 21, in ?
import relocate
File "/usr/lib/python2.4/site-packages/xen/xend/server/relocate.py", line 26, in ?
from xen.xend import XendDomain
File "/usr/lib/python2.4/site-packages/xen/xend/XendDomain.py", line 33, in ?
import XendDomainInfo
File "/usr/lib/python2.4/site-packages/xen/xend/XendDomainInfo.py", line 37, in ?
import image
File "/usr/lib/python2.4/site-packages/xen/xend/image.py", line 30, in ?
xc = xen.lowlevel.xc.xc()
RuntimeError: (2, 'No such file or directory')

A: xen-hypervisor kernelではない kernel で再起動してしまっています。わたしもテスト中に行ってしまいました。 :)

起動時に xen-hypervisor kernel を選択するかgrub.confファイルで xen-hypervisor kernel をデフォルトに設定してください。

助けを得るには

もし上記のトラブルシューティングセクションを参照しても問題が解決しない場合は Red Hat Bugzilla で FC5 の Xen に既知のバグとして報告されていないかチェックしてください。product は "Fedora Core" で、 component は xen0 kernel に関する事は "kernel"、 ツールに関する事は "xen" になります。これらの報告は xen テスターからの有用なアドバイスと多くの場合回避方法が説明されています。

Xen の一般的な問題や、役に立つ情報は Xen プロジェクト ドキュメンテーション 、と メーリングリストアーカイブ を参照してください。

最後に Fedora Xen サポートの問題に関しては Fedora Xen メーリングリスト で議論されています。

脚注