内容:
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 6 での Xen とゲストのセットアップは Fedora Core 5 の時に比べて大きな変更と改善が加えられました。 以下のガイドは Xen のセットアップ方法と、コマンドラインもしくは、GUIインターフェースを使用したゲストの作成と管理方法を説明します。
システム必要構成
- Fedora のデフォルトのブートローダーである GRUB を使用している必要があります[[FootNote(Xen hypervisor を起動させてから、 Linux カーネルを起動させる必要がある為に必要になります このような起動方法を行う為に Multi
Boot standard を利用します。)]
- ゲストオペレーティングシステム用の十分な空きディスク容量 コマンドラインの最小 Fedora システムは 600MB 程度を必要とし、通常のデスクトップ Fedora システムは 3GB 程度を必要とします。
- 一般的に言って、インストール1ゲスト当たり 256 MB 以上の RAM が必要になります。
Para-virtualized guests (擬似仮想化ゲスト)
x86_64、もしくは ia64 CPU であれば、擬似仮想化ゲストがサポートされています。 i386 ゲストを起動するには PAE 拡張のついた CPU が必要になります。 多くの古いノートパソコン (特に Pentium Mobile / Centrino ベースのCPU) は PAE サポートがありません。 CPU に PAE サポートがあるか確認するには、以下のコマンドを入力してください:
$ grep pae /proc/cpuinfo flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 mmx fxsr sse syscall mmxext 3dnowext 3dnow up ts
上記の結果では CPU が PAE サポートがある事を示しています。 もし、コマンドが何の結果も返さなければ、 PAE サポートがありません。
Fully-virtualized guests (完全仮想化ゲスト) (HVM/Intel-VT/AMD-V)
完全仮想化ゲストを起動させるには、ホスト CPU のサポートが必要です。 一般的には Intel VT もしくは AMD-V と呼ばれる機能です。 Xen は、標準的な 'HVM' 層を利用して、両方の CPU ベンダをサポートしています。 Intel VT サポートをチェックするには 'vmx' フラッグがあるか確認してください。 AMD-V サポートは 'svm' フラッグがあるか確認してください:
....Intel.... flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm ....AMD.... flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8_legacy
文書のルール
root 権限が必要なコマンドは '#' で始まります。 root になるには通常ユーザーで 'su -' コマンドを入力した後、 root パスワードを入力してください。
Xen ソフトウェアのインストール
Fedora Core 6 の新規インストールを行う際に、 インストーラーで、 ベースグループの中の Xen を選択する事で Xen ソフトウェアをインストールする事ができます。
もし既に Fedora Core 6 システムがインストールされていれば、Xen カーネルとツールを以下のコマンドでインストールする事ができます:
上記コマンドで、必要なパッケージとその依存関係にあるパッケージがインストールされます。 'kernel-xen' はホストとゲスト両方の Xen が有効化されたカーネルとハイパーバイザーのカーネルを含んでいます。 また'xen' パッケージもインストールされ、このパッケージにはハイパーバイザーとのやりとりを行う、ユーザースペースのツールも含まれています。
インストールが完了すれば、xen
カーネル起動用のエントリが /boot/grub/grub.conf
ファイルに作成されているはずです。 xen
カーネルはデフォルトの起動オプションとしては設定されていません。
GRUB で kernel-xen
をデフォルトで起動させるには /boot/grub/grub.conf
を編集して、デフォルトを xen カーネルに設定してください:[[FootNote(将来の kernel-xen パッケージもデフォルトで起動するように変更するには /etc/sysconfig/kernel
を編集してください)]
以下が Xen ハイパーバイザーで起動するように設定した /boot/grub/grub.conf
の例です:
default=1 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Fedora Core (2.6.18-1.2784.fc6) root (hd0,0) kernel /boot/vmlinuz-2.6.18-1.2784.fc6 ro root=LABEL=/1 rhgb quiet initrd /boot/initrd-2.6.18-1.2784.fc6.img title Fedora Core (2.6.18-1.2784.fc6xen) root (hd0,0) kernel /boot/xen.gz-2.6.18-1.2784.fc6 module /boot/vmlinuz-2.6.18-1.2784.fc6xen root=LABEL=/1 module /boot/initrd-2.6.18-1.2784.fc6xen.img
Xen の有効化
システムが Xen カーネルで起動したら、カーネルと Xen が起動している事を確認してください:
2.6.17-1.2600.fc6xen Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 610 1 r----- 12492.1
上記の結果は xen カーネルがロードされていて、 Domain-0 (ホストオペレーティングシステム) が起動している事を表示しています。
Fedora ゲストシステムの作成
Fedora Core 6 では anaconda を利用した Fedora Core 6 Xen ゲストのインストールがサポートされています。 インストールは xenguest-install
プログラムを利用したコマンドライン、もしくは GUI プログラム virt-manager
から始める事ができます。
xenguest-install
を使用した Fedora ゲストシステムの作成
xenguest-install
プログラムを起動して、対話的なインストールプロセスを開始させます:
新しいゲストOS に関する以下の質問が聞かれます。 これらの情報はコマンドラインオプションとして渡してしまう事も可能です。詳細に関してはコマンドに --help
オプションをつけて起動させてください。 kickstart オプションを渡すには -x ks=options
を利用します。
- What is the name of your virtual machine? (仮想マシンの名前は何ですか?) これはゲストOSを識別する為のラベルです。 このラベルは たくさんの
xm
コマンドに利用され、virt-manager
や、Gnome パネルの Xen アプレットにも表示されます。 さらに ゲストの設定情報を保存している/etc/xen/<name>
ファイルの名前にも使用されます。 - How much RAM should be allocated (in megabytes)? (どれだけのRAMを割り当てますか) ゲストインスタンスに割り当てる RAM の容量をメガバイト単位で指定します。(例 256). 256 メガバイト以下でのインストールは推奨されませんので、注意してください。
- What would you like to use as the disk (path)? (ディスクとして何を使用したいですか(パス)) ゲスト用のディスクイメージとして使用されるファイルの名前と、そのファイルへのローカルパス (例 /home/joe/xenbox1)。 これは完全なディスクとして、ゲストにエキスポートされます。
- How large would you like the disk to be (in gigabytes)? (ディスクはどれぐらいの容量にしますか(ギガバイト単位で) ゲスト用の仮想ディスクの大きさ(上の質問で指定したファイルが存在しない時にのみ表示されます)。 デフォルトのインストールを行う場合、4.0 ギガバイト程度が適当でしょう。
- Would you like to enable graphics support (yes or no): Should the graphical installer be used?(グラフィックサポートを有効にしますか(yes もしくは no): グラフィカルインストーラーを使いますか
- What is the install location? (インストールロケーションは何ですか) これは anaconda が使うフォーマットのインストールツリーへのパスです。 NFS、FTP、HTTP ロケーションの全てがサポートされています。 例:
nfs:my.nfs.server.com:/path/to/test2/tree/
http://my.http.server.com/path/to/tree/
ftp://my.ftp.server.com/path/to/tree
そして、インストールが始まります。 もしグラフィックが有効であれば、VNC のウィンドウが開き、グラフィカルインストーラーが表示されます。 もしグラフィックを有効にしていなければ、通常のテキストインストーラーが表示されます。 通常のインストールと同じように進めてください。
virt-manager
を使用して、 Fedora ゲストシステムを作成
root として、以下のコマンドを入力して、GUI VIrtual Machine Manager を起動させてください。
- "Local Xen Host" を選択し、"Open Connection" ダイアログウィンドウで "Connect" をクリックしてください。
virt-manager
ウィンドウの下にある "New" をクリックして、File-->New を選択してください。xenguest-install
コマンドラインユーティリティで行うのと同じ質問がウィザード形式で表示されます。(上記セクションの説明を参照してください)。 ウィザードは、グラフィカルインストールが選択されると仮定するので、グラフィカルインストールに関する質問は行われません。- ウィザードの最後のページに "Finish" ボタンがあります。 クリックするとゲスト OS の作成が始まります。 少しすると、 VNC ウィンドウが表示されます。 通常のインストールと同じように進めてください。
インストール後
ゲストオペレーティングシステムのインストールが完了すると、GUI virt-manager
プログラム、もしくは xm
コマンドラインで管理する事ができます。
virt-manager
で仮想マシンをグラフィカルに管理する
GUI Virtual Machine Manager を以下のコマンドで起動させてください:
もし、root でなければ、 root パスワードを聞くためのプロンプトが現れます。 もしユーザーインターフェースを監視の為に読み込み専用で使いたい場合は、 Run unprivileged
(非管理者権限)を選択できます。
- "Local Xen Host" を選択して、"Open Connection" ダイアログウィンドウで、 "Connect" をクリックしてください。
- メインウィンドウに仮想マシンのリストが表示されます。 "Domain 0"; と表示されるマシンがホストコンピューターになります。
- もしマシンがリストになければ、恐らく起動していないでしょう。 マシンを起動させるには、"File-->Restore a saved machine..." を選択して、ゲストディスクとして使用しているファイルを選択してください。
- ディスプレイには各マシンのステータス、CPU とメモリ使用量が表示されます。 他の統計は "View" メニューから選択する事ができます。
- マシンの名前をダブルクリックすると、仮想コンソールが開きます。
- 仮想コンソールの、 "View-->Details" からマシンのプロパティにアクセスでき、ハードウェアの設定を変更する事ができます。
- シリアルコンソールにアクセスするには "View-->Serial Console" を選択してください。(もし、グラフィカルコンソールに問題がある場合)
virt-manager
に関する詳細は プロジェクトのウェブサイト を参照してください。
virt-manager
ツールのバグはBugZilla の 'virt-manager' コンポーネントに報告してください。
virsh
を利用して、仮想マシンをコマンドラインから管理
virsh
ユーティリティを利用して、仮想マシンをコマンドラインから管理する事ができます。 virsh
ユーティリティは libvirt マネージメントAPI を利用して作成されており、今までの Xen xm
ツールに対して、いくつかの利点が存在します:
- virsh は Xen のアップデートに渡って、シンタックスや、セマンティックスを保持できる安定的なコマンド郡があります。
- virsh は非管理者権限のユーザーが読み込み専用オペレーションに利用する事もできます。 (例 ドメインのリストの表示、情報の取得、その他)
- libvirt はハイパーバイザーの違いにとらわれない為、virsh は将来的に、Xen以外にも QEMU や VMWare を管理する事ができるようになります。
XML vm 設定から、新しい仮想マシンをスタートさせるには:
現在起動している、仮想マシンのリストを表示させるには:
ゲストを安全にシャットダウンするには:
マシンのスナップショットを選択したファイルに保存するには:
以前保存したスナップショットからリストアするには:
仮想マシンに関する設定を XML にエキスポートするには:
virsh
で使える全てのコマンドのリストを表示させるには、以下の入力してください:
もしくはマニュアルページを参照してください virsh(1)
virsh
ツールに関するバグは BugZilla の 'libvirt' コンポーネントに報告してください。
xm
で仮想マシンをコマンドラインから管理
virsh
コマンドに加えて、Xen 用の xm
ユーティリティを使用して、仮想マシンをコマンドラインから管理する事ができます。 仮想マシンのを起動させて、シリアルコンソールをアタッチさせるには以下のコマンドを使用してください:
現在起動している、仮想マシンのリストを表示させるには:
ゲストをシャットダウンするには、以下のコマンドを使用してください:
マシンのスナップショットを選択したファイルに保存するには:
以前保存したスナップショットからリストアするには:
起動してい全てのマシンの top
のような統計を表示させるには以下のコマンドを入力してください:
xm
で使える全てのコマンドを表示させるには以下のコマンドを入力してください:
xm
ツールに関するバグは BugZilla の 'xen' コンポーネントに報告してください。
トラブルシュート
ログファイル
Xen に関する問題をデバッグするのを助けてくれる2つのログファイルがホストシステムに存在します。 /var/log/xen/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/xen/xend-debug.log
には通常、さらに詳細な情報が記録されています。 NetBSD/xen カーネルを起動させようとすると、以下のアウトプットがログに記録されます:
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
エラーを報告する際には、/var/log/xen/xend.log
と /var/log/xen/xend-debug.log
の両方のアウトプットを提出してください。
もし、fully-virtualized (完全仮想化)ドメインをを起動させた場合には、有用な情報を含んだ /var/log/xen/qemu-dm*.log が作成されます。
さらに、ハイパーバイザーのログは以下のコマンドで見る事ができます。
xm dmesg
シリアルコンソール
ホストシリアルコンソールアクセス
さらに難しい問題には、シリアルコンソールが役に立ちます。 もし、 Xen カーネルそのものが死んで、ハイパーバイザーがエラーを吐いた場合には、ローカルホストに完全にエラーを記録する方法がありません。 シリアルコンソールは、エラーをリモートホストで、キャプチャーさせる事ができます。
Xen ホストにシリアルコンソールアウトプットと、リモートホストでキャプチャできるように設定する必要があります。 コンソールアウトプットをセットアップするには、/etc/grub.conf に適切なオプションを設定する必要があります。例えば:
title Fedora Core (2.6.17-1.2600.fc6xen) root (hd0,2) kernel /xen.gz-2.6.17-1.2600.fc6 com1=38400,8n1 sync_console module /vmlinuz-2.6.17-1.2600.fc6xen ro root=LABEL=/ rhgb quiet console=ttyS0 console=tty pnpacpi=off module /initrd-2.6.17-1.2600.fc6xen.img
com1 の 38400-bps シリアルコンソールには (ie. Linux の /dev/ttyS0) 非同期ハイパーバイザーアウトプットを、止まらせてしまう問題は "sync_console"で解決する事ができます。またシリアルコンソールでのインプットを止めてしまう問題は "pnpacpi=off" で解決する事ができます。 "console=ttyS0 console=tty" は、カーネルエラーが通常の VGA コンソールとシリアルコンソールの両方にログされるという意味です。 ここまでが完了したら、ttywatch ( fedora-extras から提供されています) をインストール、セットアップして、スタンダードなnull-modemケーブルを使用して、リモートホストの情報をキャプチャーする事ができます。 例えば、リモートで以下のように行うと
ログのアウトプットを /dev/ttyS0 から /var/log/ttywatch/myhost.log ファイルに記録します。
擬似仮想ゲストシリアルコンソールアクセス
擬似仮想ゲスト OS は自動的にシリアルコンソールが設定され、 Domain-0 OS につなぎこまれます。 そして、以下のコマンドでアクセスする事が可能です。
もしくは、グラフィカルな virt-manager
プログラムがシリアルコンソールを表示する事ができます。 ゲストの 'console' もしくは 'details' ウィンドウを表示させ、メニューバーの 'View -> Serial console' を選択してください。
完全仮想ゲストシリアルコンソールアクセス
完全仮想ゲスト OS はシリアルコンソールが自動的に設定されます。しかしゲストカーネルはシリアルコンソールを新規の状態で使えるように設定していません。 Linux 完全仮想ゲストでゲストコンソールを使えるようにするには、 /etc/grub.conf を編集して、ゲストのエントリに 'console=ttyS0 console=tty0' を追加してください。 上記の設定で、全てのカーネルメッセージがシリアルコンソールと、通常のグラフィカルコンソールに送信されます。 このシリアルコンソールは擬似仮想ゲストと同じようにアクセスする事ができます:
もしくは、グラフィカルな virt-manager
プログラムがシリアルコンソールを表示する事ができます。 ゲストの 'console' もしくは 'details' ウィンドウを表示させ、メニューバーの 'View -> Serial console' を選択してください。
ゲストディスクイメージのデータへのアクセス
ゲストディスクイメージへのアクセスを補助する2つのツールが存在します: lomount と kpartx です。 ゲストと起動している時には、ホスト(dom0)からディスクへのアクセスを行わないでください。ゲストとホスト(dom0)から同時にアクセスするとファイルシステムを破壊してしまう恐れがあります!
- lomount
lomount はディスクイメージが小さく LVM ボリュームでない時にのみ使用可能です。従ってもっと複雑なケースには kpartx (device-mapper-multipath RPM から提供されています) を使用してください:
- kpartx
add map guest1p1 : 0 208782 linear /dev/xen/guest1 63 add map guest1p2 : 0 16563015 linear /dev/xen/guest1 208845
このコマンドはブロックデバイスにのみ使用でき、通常のファイルにインストールされたイメージには使用できません。 ファイルイメージを扱うには、まずイメージファイル用のループバックデバイスを作成する必要があります:
/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
二つ目のパーティションに存在する LVM ボリュームにアクセスするには LVM ボリュームを "vgscan" で再スキャンして、"vgchange -ay" でパーティション(デフォルトでは"VolGroup00")をアクティベートする必要があります:
全ての物理ボリュームを読み込みます。 これには少し時間がかかります。。。。 "VolGroup00" ボリュームグループをメタデータタイプ lvm2 を使用して見つけました。 ボリュームグループ "VolGroup00" の2つのロジカルボリュームがアクティブになりました。 LV VG Attr LSize Origin Snap% Move Log Copy% LogVol00 VolGroup00 -wi-a- 5.06G LogVol01 VolGroup00 -wi-a- 800.00M ...
二つ目の理由としては、ゲストを再度立ち上げた時に、LVMがゲストと ホスト(dom0) の両方で同時に有効なってしまった場合、ボリュームグループもしくは、ファイルシステムが破壊される恐れがあります。
Frequently Asked Questions
- 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ハイパーバイザーカーネルではないカーネルで起動しています。 自分でもテストを行っている時にやってしまいました :)
起動時に xen ハイパーバイザーカーネルを選択するか、grub.conf ファイルを編集して、xen ハイパーバイザーカーネルで起動するように設定してください。
- Q. ゲストを作成している時に "Invalid argument" が表示されます。
A. このメッセージは通常ハイパーバイザーに対応していないカーネルイメージで起動させようとしている時に表示されます。 これは FC5 (PAE無効) カーネルを FC6 (これはPAE のみ可能)で起動させようとしたり、Xenが有効でない通常のカーネルで起動させようとすると表示されます。
- Q. yum update を行って、新しいカーネルをインストールすると、 grub.conf の設定が、Xenが有効でないカーネルでデフォルトに起動する設定に変わってしまいます。
A. デフォルトカーネル RPM は /etc/sysconfig/kernel で変更する事ができます。 もし、 'kernel-xen' と設定すると Xen が有効になったカーネルがいつも grub.conf のデフォルトオプションになります。
助けのえかた
もし、上記のトラブルシュートセクションでもあなたの問題が解決できない場合、 Red Hat Bugzilla のFC6 の Xen を検索してみてください。 Xenカーネルに関するバグは product は "Fedora Core"で、 component は "kernel" で検索し、ツールに関するバグは "xen" で検索してみてください。 バグリポートの中には他の Xen テスターからの役に立つアドバイスや、問題の回避方法の説明があります。
Xen に関する一般的な問題や、役に立つ情報は Xen プロジェクトのドキュメント や、メーリングリストアーカイブ を参照してください。
最後に、Fedora Xen サポートの問題に関しての議論は Fedora Xen メーリングリスト で行われています。
フートノート