Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
仮想化ガイド
Red Hat Enterprise Linux の為の Red Hat Virtualization ガイド決定版
エディッション 4
Jan Mark Holzer
概要
序文
1. このマニュアルについて
- システムの要件
- インストール
- 設定
- 管理
- 参照事項
- ヒントと裏技
- トラブルシューティング
2. CIO(主席インフォメーションオフィサー)の仮想化に関する観点
基本的に、仮想化はシステムでサポートされているオペレーティングシステムとサービスとアプリケーションを、特定のハードウェアから分離することにより柔軟性を増大します。これにより、共有のハードウェアプラットフォーム上で複数の仮想環境を確立することができるようになります。
仮想化はコスト削減にも利用できます。複数サーバーを統合することにより、仮想化環境の 集合を稼働する小規模でより強力なハードウェアプラットフォームのセットにする点で、 明確な利便性を得ることができます。ハードウェアの規模を減少し、未使用設備を 削減することでコストを低減するだけでなく、より強力なハードウェア上で仮想ゲストを実行することでアプリケーションのパフォーマンスは実際に向上します。
企業の特定ニーズに関係なく、この技術は間違いなく普及していくことになりますから、 仮想化をシステムとアプリケーションのポートフォリオとして研究してみるべきです。 今後はオペレーティングシステムのベンダーが仮想化を標準のコンポーネントとして含み、 ハードウェアのベンダーがそのプラットフォームに仮想化機能を組込み、仮想化のベンダーがその提供物の範囲を拡張していくと予想されます。
パート I. Red Hat Enterprise Linux での仮想化に於ける要件と制限
システムの要件、サポートの制約及び制限
第1章 システム要件
最低限のシステム要件
- 6 GB の空きディスク領域
- 2GB の RAM.
推奨されるシステム要件
- 6GB と更にゲスト毎のゲストオペレーティングシステムに推奨されるディスク容量。 ほとんどのオペレーティングシステムには、6GB 以上のディスク容量が推奨されます。
- 各仮想化 CPU 用及び hypervisor 用にプロセッサコア、又はハイパースレッド1つずつ
- 2GB の RAM と更に仮想化ゲスト用の 追加の RAM
注記
Para-virtualized ゲストは Red Hat Enterprise Linux 5 のインストールツリーを 必要とします。これは、NFS
か、FTP
か、 HTTP
のプロトコルを使用して 入手できます。
Xen Hypervisor を持つ完全仮想化は以下を必要とします:
- Intel VT 拡張を持つ Intel プロセッサ 1つ、又は
- AMD-V 拡張を持つ AMD プロセッサ 1つ、又は
- Intel Itanium プロセッサ 1つ
KVM hypervisor は以下を必要とします:
- Intel VT 及び Intel 64 拡張を持つ Intel プロセッサ 1つ、又は
- AMD-V と AMD64 拡張を持つ AMD プロセッサ 1つ
サポートのあるゲストストレージの方法は以下のようになります:
- ローカルストレージ上のファイル
- 物理ディスクのパーティション
- ローカルで接続している物理 LUN
- LVM パーティション
- iSCSI とファイバーチャンネルベースの LUN
重要
/var/lib/xen/images/
フォルダーに格納されるべきです。別のディレクトリを使用する場合は、そのディレクトリを SELinux ポリシーに追加しなければなりません。 詳細については、「SELinux と仮想化」 をご覧下さい。
第2章 Xen の制約とサポート
x86 互換のシステム上の 32 bit Red Hat Enterprise Linux kernel-xen は 16 のプロセッサコアに制限されます。
オペレーティングシステム | サポートレベル |
---|---|
Red Hat Enterprise Linux 3 x86 | 最適化 |
Red Hat Enterprise Linux 4 x86 | 最適化 |
Red Hat Enterprise Linux 5 x86 | 最適化 |
Windows Server 2000 32-Bit | サポートあり |
Windows Server 2003 32-Bit | サポートあり |
Windows XP 32-Bit | サポートあり |
Windows Vista 32-Bit | サポートあり |
オペレーティングシステム | サポートレベル |
---|---|
Red Hat Enterprise Linux 4 x86 Update 5 及びそれ以降 | 最適化 |
Red Hat Enterprise Linux 5 x86 | 最適化 |
AMD64 と Intel 64 のマシン上の kernel-xen パッケージは 以下のようなプロセッサ制限を持ちます:
- Red Hat Enterprise Linux 5.0 は 最大 32 の CPU プロセッサコアをサポートします。
- Red Hat Enterprise Linux 5.1 は最大 32 CPU のプロセッサコアをサポートします。
- Red Hat Enterprise Linux 5.2 は最大 64 CPU のプロセッサコアをサポートします。
- Red Hat Enterprise Linux 5.3 は最大 126 の CPU プロセッサコアをサポートします。
- Red Hat Enterprise Linux 5.4 は最大 256 の CPU プロセッサコアをサポートします。
オペレーティングシステム | サポートレベル |
---|---|
Red Hat Enterprise Linux 3 x86-64 | 最適化 |
Red Hat Enterprise Linux 3 x86 | 最適化 |
Red Hat Enterprise Linux 4 AMD64/Intel 64 | 最適化 |
Red Hat Enterprise Linux 4 x86 | 最適化 |
Red Hat Enterprise Linux 5 AMD64/Intel 64 | 最適化 |
Red Hat Enterprise Linux 5 x86 | 最適化 |
Windows Server 2000 32-Bit | サポートあり |
Windows Server 2003 32-Bit | サポートあり |
Windows XP 32-Bit | サポートあり |
Windows Vista 32-Bit | サポートあり |
Windows Vista 64-Bit | サポートあり |
Windows Server 2008 32-Bit | サポートあり |
Windows Server 2008 64-Bit | サポートあり |
Solaris 32 bit | サポートあり |
オペレーティングシステム | サポートレベル |
---|---|
Red Hat Enterprise Linux 4 AMD64/Intel 64 Update 5 及びそれ以降 | 最適化 |
Red Hat Enterprise Linux 4 x86 Update 5 及びそれ以降 | 5.2 と 5.3 内で技術プレビュー。5.4 とそれ以降で全面的サポート。 |
Red Hat Enterprise Linux 5 AMD64/Intel 64 | 最適化 |
Red Hat Enterprise Linux 5 x86 | 5.2 と 5.3 内で技術プレビュー。5.4 とそれ以降で全面的サポート。 |
Itanium システム上の kernel-xen パッケージは 32 の プロセッサコアまでに制限されています。
オペレーティングシステム | サポートレベル |
---|---|
Red Hat Enterprise Linux 3 Itanium | サポートあり |
Red Hat Enterprise Linux 4 Itanium | 最適化 |
Red Hat Enterprise Linux 5 Itanium | 最適化 |
Windows Server 2003、 Itanium ベースのシステム対応 | サポートあり |
オペレーティングシステム | サポートレベル |
---|---|
Red Hat Enterprise Linux 5 Itanium | 最適化 |
注記
yum
を使用して Xen hypervisor をインストール を参照して下さい。
第3章 KVM の制約とサポート
重要
オペレーティングシステム | サポートのレベル |
---|---|
Red Hat Enterprise Linux 3 x86 | para-virtualized ドライバーでの最適化 |
Red Hat Enterprise Linux 4 x86 | para-virtualized ドライバーでの最適化 |
Red Hat Enterprise Linux 4 AMD 64 及び Intel 64 | para-virtualized ドライバーでの最適化 |
Red Hat Enterprise Linux 5 x86 | para-virtualized ドライバーでの最適化 |
Red Hat Enterprise Linux 5 AMD 64 及び Intel 64 | para-virtualized ドライバーでの最適化 |
Windows Server 2003 R2 32-Bit | para-virtualized ドライバーでの最適化 |
Windows Server 2003 R2 64-Bit | para-virtualized ドライバーでの最適化 |
Windows Server 2003 Service Pack 2 32-Bit | para-virtualized ドライバーでの最適化 |
Windows Server 2003 Service Pack 2 64-Bit | para-virtualized ドライバーでの最適化 |
Windows XP 32-Bit | para-virtualized ドライバーでの最適化(ネットワークドライバーのみ) |
Windows Vista 32-Bit | サポート有り |
Windows Vista 64-Bit | サポート有り |
Windows Server 2008 32-Bit | para-virtualized ドライバーでの最適化 |
Windows Server 2008 64-Bit | サポート有り |
第4章 仮想化の制限
4.1. 仮想化に於ける一般的制限
現時点では、Xen ベースのゲストを KVM に切り替えたり、KVM ベースのゲストを Xen に 切り替えたりするアプリケーションは存在しません。ゲストはそれが作成された hypervisor のタイプ上でのみ使用できます。このタスクを自動化するようなアプリケーションの 開発がこのマニュアル作成の時点で開発中です。このアプリケーションは Red Hat Enterprise Linux の 将来のバージョンでリリースされるかも知れません。
仮想化に影響を与える他の制限や問題の全ての一覧を見るには、ご使用のバージョンの 『Red Hat Enterprise Linux リリースノート』 をお読み下さい。 『リリースノート』は現在の新しい機能や既知の問題や制限などを その更新や発見の時点で提供します。
大負荷の I/O アプリケーションを導入する前に、予期される最大負荷と仮想化ネットワークのストレスをテストすべきです。増加した I/O を使用する仮想化の影響でパフォーマンスが低下するため、ストレステストは重要になります。
4.2. KVM の制限
- 不変 TSC ビット
- 不変タイムスタンプカウンタ(Constant Time Stamp Counter)のないシステムは 追加の設定を必要とします。関連した問題を修復するためにこの不変タイムスタンプカウンタが あるかどうかを判定するための詳細には 17章KVM ゲストのタイミング管理 を参照して下さい。
- メモリーオーバーコミット
- KVM はメモリーオーバーコミットをサポートし、ゲストメモリーをスワップ内に格納 できます。ゲストは何回もスワップされると実行が遅くなります。KSM (Kernel SamePage Merging) が使用されるときは、スワップ サイズがオーバーコミット比率のサイズであることを確認して下さい。
- CPU オーバーコミット
- 物理プロセッサコア毎に10以上の仮想 CPU を持つことはサポートされていません。 そして物理プロセッサコアの数を越えたオーバーコミットの仮想 CPU の数は 特定の仮想化ゲストで問題になる可能性があります。CPU のオーバーコミットはリスクを伴い、不安定の原因になります。CPU のオーバーコミットに関する ヒントと推薦については 「KVM でオーバーコミット」 を参照して下さい。
- 仮想化 SCSI デバイス
- SCSI 模倣は現時点ではサポートされていません。仮想化 SCSI デバイスは KVM 内では 完全に無効になっています。
- 仮想化 IDE デバイス
- KVM はゲスト毎に最大6つの仮想化(模倣)IDE デバイスに制限されています。
- Para-virtualized デバイス
- Para-virtualized デバイスは
virtio
ドライバーと PCI デバイスを使用します。現時点では、ゲストは最大 32 PCI デバイスまでに 制限されています。一部の PCI デバイスはゲストの実行に重要なものであり、これらの デバイスは削除できません。デフォルトで以下のようなデバイスが必須です:- ホストブリッジ
- ISA ブリッジと usb ブリッジ(usb と isa のブリッジは同じデバイスです)
- グラフィックカード(Cirrus か qxl のドライバーを使用)
- メモリーバルーンデバイス
ゲスト用に最大利用可能な32 の PCI デバイスの内、4つは削除できません。このことは、 ゲスト毎に、28 PCI スロットのみが追加デバイス用に利用できると言うことです。それぞれの para-virtualized ネットワーク、又はブロックデバイスが1つのスロットを使用します。 そのため、各ゲストは para-virtualized ネットワークと para-virtualized ディスクデバイスと VT-d を使用している他の PCI デバイスの組合せから 28 までの追加デバイスを使用できることになります。 - 移行の制限
- ライブ移行は同じベンダー(即ち、Intel と Intel、あるいは AMD と AMD)のみからの CPU 群で 可能になります。ライブ移行には、No eXecution (NX) ビットは 両方の CPU 用にオンでもオフでもセット しなければなりません。
4.3. Xen の制限
重要
Xen ホスト (dom0) の制限
- ホスト毎に
tap:aio
ドライバーとファイルベースのデバイスを 使用する 100 のブロックデバイスまでの制限があります。para-virtualized ゲストに添付された ブロックデバイスの合計数はホスト毎に100デバイスを超過することは出来ません。
注記
phy
デバイスの使用で、もう1つはゲスト上で LVM の 使用です。
phy
デバイスの数には制限がありません。
Xen Para-virtualization の制限
- 仮想化ゲスト毎に最大合計 256 デバイス
- 仮想化ゲスト毎に最大 15 のネットワークデバイス
Xen 完全仮想化の制限
- ゲスト毎に最大 4つの仮想化(模倣)IDE デバイス完全仮想化ゲスト用に para-virtualized ドライバーを使用するデバイスは この制限を受けません。
- 仮想化した(模倣)IDE デバイスはシステムでサポートされるループバック デバイスの合計数により制限されます。Red Hat Enterprise Linux 5.4 で利用できる ループバックデバイスのデフォルトの数は 8 です。このことは、システム上の全ての 仮想化ゲストは合計で 8 つ以上の仮想化(模倣)IDE デバイスを持てないことになります。ループバックデバイスの詳細情報には、Red Hat KnowledgeBase を 参照して下さい。
注記
デフォルトでは、Red Hat Enterprise Linux は利用可能なループバックデバイスの 数を制限しています。この数はカーネルの制限を解除することにより増加することが できます。/etc/modprobe.conf
内で、以下の行を追加します:options loop max_loop=64
マシンをリブートするか、又は以下のコマンドでカーネルを更新して下さい:# rmmod loop # modprobe loop
- ホスト毎に 100 の para-virtualized ブロックデバイスの制限となります。para-virtualized ゲストに添付されたブロックデバイス(
tap:aio
ドライバーを 使用)の合計数は 100 デバイスを超過できません。 - para-virtualized ドライバーを使用して仮想化ゲスト毎に最大 256 ブロックデバイスです。
- 仮想化ゲスト毎に最大 15 のネットワークデバイス
- 仮想化ゲスト毎に最大 15 仮想化 SCSI デバイスです。
4.4. アプリケーションの制限
- kdump サーバー
- netdump サーバー
パート II. インストール
仮想化インストールのトピック
第5章 仮想化パッケージをインストール
yum
コマンドと Red Hat Network (RHN) を 使用してインストールの後にインストールすることが出来ます。
5.1. Red Hat Enterprise Linux の新規インストールで Xen を インストール
注記
- Red Hat Enterprise Linux のインストール CD-ROM、DVD、あるいは PXE から 対話式の Red Hat Enterprise Linux インストールを開始します。
- プロンプトが出たら、有効なインストール番号を入力して、仮想化と他の高度なプラットフォーム パッケージへのアクセス権を受理するようにします。
- パッケージ選択のステップまで他のステップを完了して下さい。仮想化(Virtualization) パッケージグループを選択して、 今、カスタマイズする(Customize Now) ラジオボタンを選択します。
- Virtualization パッケージグループを選択します。 Virtualization パッケージグループは Xen hypervisor、
virt-manager
、libvirt
、及びvirt-viewer
、それにインストール用のすべての依存関係を選択します。 パッケージをカスタマイズ(必要な場合)
他の仮想化パッケージが必要な場合は、Virtualization グループを カスタマイズします。閉じる をクリックしてから、次 を クリックしてインストールを継続します。
重要
このセクションでは、Xen hypervisor パッケージを用いた Red Hat Enterprise Linux のインストールに於けるキックスタートファイルの使用法を 説明します。キックスタートファイルは各システムにユーザーの手動インストール無しで 大規模な自動化したインストールを可能にします。このセクション内のステップは、仮想化パッケージを持つ Red Hat Enterprise Linux のインストールの為にユーザーが キックスタートファイルの作成とその使用をするためのお手伝いをします。
%packages
セクションで、以下のパッケージグループを追記します:
%packages @virtualization
注記
xen-ia64-guest-firmware
5.2. 既存の Red Hat Enterprise Linux システムに Xen パッケージをインストール
このセクションでは、仮想化パッケージ用の Red Hat Network (RHN) エンタイトルメントを 有効にする方法を説明します。Red Hat Enterprise Linux 上に仮想化パッケージをインストールして それを更新するのにこれらのエンタイトルメントが必要になります。Red Hat Enterprise Linux に 仮想化パッケージをインストールするためには、有効な Red Hat Network アカウントが要求されます。
rhn_register
コマンドを実行して、プロンプトに従います。
手順5.1 RHN を使用して仮想化エンタイトルメントを追加
- お持ちの RHN ユーザー名とパスワードを使用して RHN に ログインします。
- 仮想化のインストール先となるシステムを選択します。
- システムのプロパティ セクションでは、現在のシステム用の エンタイトルメントが エンタイトルメント のヘッディングの 横に一覧表示してあります。このプロパティを編集 リンクを 使用するとエンタイトルメントを変更することが出来ます。
- Virtualization チェックボックスを選択します。
yum
を使用して Xen hypervisor をインストール
Red Hat Enterprise Linux 上で仮想化を使用するには、xen
と kernel-xen
のパッケージが必要になります。xen
パッケージには 、 Xen hypervisor と 基本的仮想化の ツールが含まれています。kernel-xen
パッケージには、 Xen hypervisor 上で仮想マシンゲストとして稼働する修正した linux カーネルが含まれています。
xen
と kernel-xen
のパッケージを インストールするには、以下を実行します:
# yum install xen kernel-xen
xen-ia64-guest-firmware
) が必要になります。 このパッケージは yum
コマンドを使用して RHN から インストールすることもできます:
# yum install xen-ia64-guest-firmware
推奨される仮想化パッケージ:
python-virtinst
- 仮想マシンの作成用に
virt-install
コマンドを提供します。 libvirt
libvirt
は、hypervisor と通信する API ライブラリです。libvirt
は仮想マシンの 管理と制御の為にxm
仮想化 フレームワークとvirsh
コマンドラインツールを使用します。libvirt-python
- libvirt-python パッケージには、Python プログラミング言語内に書き込まれている アプリケーションが
libvirt
API で供給されるインターフェイスを使用できるようにするモジュールが含まれています。 virt-manager
- 仮想マシンマネージャ として知られる
virt-manager
は 仮想マシンの管理の為のグラフィカルなツールを提供します。これは、管理 API としてlibvirt
ライブラリを使用します。
# yum install virt-manager libvirt libvirt-python python-virtinst
5.3. Red Hat Enterprise Linux の新規インストールで KVM をインストール
注記
重要
- Red Hat Enterprise Linux のインストール CD-ROM、DVD、あるいは PXE から 対話式の Red Hat Enterprise Linux インストールを開始します。
- プロンプトが出たら、有効なインストール番号を入力して、仮想化と他の高度なプラットフォーム パッケージへのアクセス権を受理するようにします。
- パッケージ選択のステップまで他のステップを完了して下さい。仮想化(Virtualization) パッケージグループを選択して、 今、カスタマイズする(Customize Now) ラジオボタンを選択します。
- KVM パッケージグループを選択します。Virtualization パッケージグループを選択解除します。これでインストールのために KVM hypervisor、
virt-manager
、libvirt
、及びvirt-viewer
を選ぶことになります。 パッケージをカスタマイズ(必要な場合)
他の仮想化パッケージが必要な場合は、Virtualization グループを カスタマイズします。閉じる をクリックしてから、次 を クリックしてインストールを継続します。
重要
このセクションは KVM hypervisor パッケージを用いた Red Hat Enterprise Linux をインストールをするためのキックスタートファイルの使用法を説明します。 キックスタートファイルは、各個別のシステム用にユーザーの手動インストール無しで大規模な 自動化インストールを可能にします。このセクション内のステップは、仮想化パッケージを持つ Red Hat Enterprise Linux のインストールの為にユーザーが キックスタートファイルの作成とその使用をするためのお手伝いをします。
%packages
セクションで、以下のパッケージグループを追記します:
%packages @kvm
5.4. 既存の Red Hat Enterprise Linux システムに KVM パッケージをインストール
このセクションでは、仮想化パッケージ用の Red Hat Network (RHN) エンタイトルメントを 有効にする方法を説明します。Red Hat Enterprise Linux 上に仮想化パッケージをインストールして それを更新するのにこれらのエンタイトルメントが必要になります。Red Hat Enterprise Linux に 仮想化パッケージをインストールするためには、有効な Red Hat Network アカウントが要求されます。
rhn_register
コマンドを実行して、プロンプトに従います。
手順5.2 RHN を使用して仮想化エンタイトルメントを追加
- お持ちの RHN ユーザー名とパスワードを使用して RHN に ログインします。
- 仮想化のインストール先となるシステムを選択します。
- システムのプロパティ セクションでは、現在のシステム用の エンタイトルメントが エンタイトルメント のヘッディングの 横に一覧表示してあります。このプロパティを編集 リンクを 使用するとエンタイトルメントを変更することが出来ます。
- Virtualization チェックボックスを選択します。
yum
を使用して KVM hypervisor をインストール
Red Hat Enterprise Linux 上で仮想化を使用するには、kvm
パッケージが必要になります。kvm
パッケージには 、KVM カーネルモジュールが含まれており、 デフォルトの Red Hat Enterprise Linux カーネル上に KVM hypervisor を提供します。
kvm
パッケージをインストールするには、以下を実行します:
# yum install kvm
推奨される仮想化パッケージ:
python-virtinst
- 仮想マシンの作成用に
virt-install
コマンドを提供します。 libvirt
libvirt
は、hypervisor と通信する API ライブラリです。libvirt
は仮想マシンの 管理と制御の為にxm
仮想化 フレームワークとvirsh
コマンドラインツールを使用します。libvirt-python
- libvirt-python パッケージには、Python プログラミング言語内に書き込まれている アプリケーションが
libvirt
API で供給されるインターフェイスを使用できるようにするモジュールが含まれています。 virt-manager
- 仮想マシンマネージャ として知られる
virt-manager
は 仮想マシンの管理の為のグラフィカルなツールを提供します。これは、管理 API としてlibvirt
ライブラリを使用します。
# yum install virt-manager libvirt libvirt-python python-virtinst
第6章 仮想化ゲストインストールの概要
virt-install
を使用します。 これらの両方の方法はこの章で説明されています。
6.1. virt-install を使用してゲストを作成
virt-install
コマンドを使用して、 仮想化ゲストを作成することができます。virt-install
は 対話式か、あるいはスクリプトによる自動化で仮想マシンを作成することが できます。キックスタートファイルで virt-install
を使用すると 仮想化マシンの無人インストールが可能になります。
virt-install
ツールは、コマンドラインで渡すことのできる 多くのオプションを提供します。それらのオプションの完全一覧を見るには、次を実行します:
$ virt-install --help
virt-install
man ページはコマンドオプションと重要な変数を それぞれドキュメント化しています。
qemu-img
は関連したコマンドであり、ストレージオプションを 設定する為に virt-install
の前に使用することができます。
--vnc
オプションです。これは ゲストインストールの為にグラフィカルウィンドウを開きます。
例6.1 KVM を使用した virt-install で Red Hat Enterprise Linux 3 のゲストを作成
rhel3support
と言う名前の Red Hat Enterprise Linux 3 ゲストを作成します。この例は KVM hypervisor を使用します。
# virt-install --accelerate --hvm --connect qemu:///system \ --network network:default \ --name rhel3support --ram=756\ --file=/var/lib/libvirt/images/rhel3support.img \ --file-size=6 --vnc --cdrom=/dev/sr0
例6.2 virt-install を使用して fedora 11 ゲストを作成
# virt-install --name fedora11 --ram 512 --file=/var/lib/libvirt/images/fedora11.img \ --file-size=3 --vnc --cdrom=/var/lib/libvirt/images/fedora11.iso
6.2. virt-manager を使用してゲストを作成
virt-manager
は 仮想化ゲストの作成と管理の為のグラフィカルツールです。
手順6.1 virt-manager を使用して仮想化ゲストを作成
- virt-manager を開始するには、root として 以下のコマンドを実行します:
# virt-manager &
virt-manager
コマンドはグラフィカルユーザーインターフェイスの ウィンドウを開きます。root 権限やsudo
設定を持たないユーザーは 新規 ボタンを含む各種機能が利用できず、新しい仮想化ゲストを 作成することが出来ません。 - ファイル -> 接続開始 を開きます。以下のダイアログ ボックスが開きます。hypervisor を選択して、接続 ボタンをクリックします。
- virt-manager ウィンドウでは、新しい 仮想マシンの作成ができます。新規 ボタンを使用して 新しいゲストを作成します。これによりスクリーンショットで示してあるウィザードが 開きます。
- 新規仮想システムを作成 ウィンドウは、仮想マシンを 作成するためにユーザーが用意する必要のある情報の要約を提供します:使用するインストールの情報を再確認して、進む ボタンを クリックします。
- 仮想化の方法を選択 ウィンドウが出てきます。 Para-virtualized か 完全仮想化 の どちらかを選択して下さい。完全仮想化には、Intel® VT、又は AMD-V プロセッサが必要になります。仮想化の拡張が 存在しない場合は、完全仮想化 ラジオボタン、あるいは カーネル/ハードウェアアクセラレーションを有効にする は選択 出来ません。 Para-virtualized オプションは、
kernel-xen
が その時点のカーネルとして稼働していない場合は、灰色になって使用不可になっています。KVM hypervisor に接続すると、完全仮想化のみが利用可能になります。仮想化のタイプを選択したら、次 ボタンをクリックします。 - インストールメディアの検出 プロンプトは選択されている インストールタイプ用のインストールメディアを求めてきます。この画面は 前のステップで選択したものに依存します。
- para-virtualized のインストールには、以下のネットワークプロトコルの1つを使用して インストールツリーへのアクセスが必要になります:
HTTP
、FTP
、又はNFS
。インストールメディアの URL は Red Hat Enterprise Linux installation ツリーを含んでいなければなりません。このツリーはNFS
、FTP
、 又はHTTP
を使用してホストされています。ネットワーク サービスとファイルは、ホスト上、又は別のミラー上でネットワークサービスを使用してホストできます。CD-ROM か DVD イメージ(.iso
ファイルとしてタグ付き)を使用。 CD-ROM イメージをマウントしてマウントしたファイルを前述のプロトコルの1つでホストします。別の方法として、Red Hat Enterprise Linux のミラーからインストールツリーをコピーします。 - 完全仮想化インストールはブート可能なインストール DVD か、CD-ROM か、あるいは ブート可能なインストール DVD / CD-ROM のイメージ(ファイルタイプ .iso 又は .img)を ローカルで必要とします。Windows インストールは DVD か、 CD-ROM か、.iso ファイルを 使用します。Linux 及び UNIX-タイプのオペレーティングシステムの多くは .iso ファイルを 使用してベースシステムをインストールしてから、ネットワークベースのインストール ツリーでのインストールを終了します。
適切なインストールメディアを選択してから、進む ボタンをクリックします。 - ストレージスペースの割り当て ウィンドウが表示されます。 ゲストストレージ用のディスクパーティション、LUN、又はファイルベースイメージの作成を 選択します。全てのイメージファイルは
/var/lib/libvirt/images/
ディレクトリに格納しなければなりません。ファイルベース イメージ用としては他のディレクトリは SELinux によって禁止されています。 SELinux を強制モードで実行する場合は、「SELinux と仮想化」 でゲストインストールのための 詳細を確認して下さい。使用するゲストストレージイメージは、インストールのサイズ、追加のパッケージ、 及びアプリケーション、更にはゲストスワップファイルのサイズの合計よりも大きい ことが要求されます。インストールプロセスはゲストに割り当てられた RAM のサイズを 基にしてゲストスワップのサイズを選択します。アプリケーションや他のデータの為にゲストが追加のスペースを必要とする場合には、 余分のスペースを割り当てます。例えば、ウェブサービスはログファイルの為に追加の スペースを必要とします。選択したストレージタイプでゲスト用に適切なサイズを選びます。それから 進む ボタンをクリックします。注記
仮想マシンイメージ/var/lib/xen/images/
用には デフォルトのディレクトリを使用することが推奨されます。異なるディレクトリ (このサンプルでは例えば、/xen/images/
)を 使用している場合は、SELinux ポリシーにそれを追加して、インストールを継続 する前にラベル変更することを確認して下さい(SELinux ポリシーの変更法はドキュメントの後半で 説明してあります)。 - 「メモリーと CPU 割り当て」ウィンドウが表示されます。仮想化の CPU と RAM の 割り当てに適切な値を選択します。これらの値は、ホストとゲストのパフォーマンスに 影響します。ゲストは効率的にそして効果的に稼働するために十分な物理メモリー(RAM) を必要とします。 ゲストオペレーティングシステムとアプリケーションの要件に適したメモリーの値を選択します。 ほとんどのオペレーティングシステムは反応良く機能するのに少なくとも 512MB の RAM を 必要とします。ゲストは物理 RAM を使用することを忘れないで下さい。稼働ゲストが多すぎたり、 ホストシステム用に十分なメモリーを残さなかったりすると仮想メモリーをかなり消費してしまいます。 仮想メモリーは比較的に遅いため、システムパフォーマンスと反応性に悪影響を与えます。全ての ゲストとホストが効率的に稼働できるように十分なメモリーを割り当てることを確認して下さい。十分な仮想 CPU を仮想ゲストに割り当てます。ゲストがマルチスレッドのアプリケーションを 実行している場合は、ゲストが効率的に稼働できるのに必要な数の仮想化 CPU を割り当てます。 しかし、ホストシステム上で利用できる物理プロセッサ(又はハイパースレッド)以上の 仮想 CPU を割り当てないで下さい。仮想プロセッサを超過して割り当てることは可能ですが、 超過割り当てでは、プロセッサコンテキストがオーバーヘッドを切り替えるため、ゲストとホストに 深刻な悪影響を与えます。
- ユーザーが入力した全ての設定情報の要約を示すインストール準備完了画面が表示されます。 表示された情報を再確認して、変更したい場合は 戻る ボタンを 使用します。入力データに満足できる状態ならば、完了 ボタンをクリックして、インストールプロセスを開始させます。VNC ウィンドウが開いて、ゲストオペレーティングシステムのインストールプロセスの 開始を示します。
virt-manager
によるゲスト作成のための一般的な プロセスは終了です。7章ゲストオペレーティングシステムのインストール手順 には各種の一般的なオペレーティング システムインストールに関するステップバイステップの案内が含まれています。
6.3. PXE を使用してゲストのインストール
新規ブリッジの作成
/etc/sysconfig/network-scripts/
ディレクトリ内に新規の ネットワークスクリプトファイルを作成します。ここの例では、ifcfg-installation
と 言う名前のファイルを作成し、それがinstallation
と言う名前のブリッジを 作ります。# cd /etc/sysconfig/network-scripts/ # vim ifcfg-installation DEVICE=installation TYPE=Bridge BOOTPROTO=dhcp ONBOOT=yes
警告
TYPE=Bridge
の行は、大文字/小文字を区別します。 大文字の 'B' と小文字の 'ridge' でなければなりません。- 新規ブリッジの開始
# ifup installation
- この時点では、まだブリッジにインターフェイスが追加されていません。
brctl show
コマンドを使用してシステム上のネットワークブリッジの詳細を見ることが できます。# brctl show bridge name bridge id STP enabled interfaces installation 8000.000000000000 no virbr0 8000.000000000000 yes
virbr0
ブリッジとは、デフォルトのイーサネットデバイス上の NAT (Network Address Translation) のためのlibvirt
で使用される デフォルトのブリッジです。
新規ブリッジにインターフェイスを追加
インターフェイス用の設定ファイルを編集します。先の手順で作成されたブリッジの 名前を持つ設定ファイルへBRIDGE
パラメータを追加 します。# Intel Corporation Gigabit Network Connection DEVICE=eth1 BRIDGE=installation BOOTPROTO=dhcp HWADDR=00:13:20:F7:6E:8E ONBOOT=yes
設定ファイルの編集の後に、ネットワークを再スタートするか又はリブートします。# service network restart
brctl show
コマンドを使用してインターフェイスが添付 されていることを確認します:# brctl show bridge name bridge id STP enabled interfaces installation 8000.001320f76e8e no eth1 virbr0 8000.000000000000 yes
セキュリティの設定
iptables
を設定して全てのトラフィックがブリッジまで 転送されるようにします。# iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT # service iptables save # service iptables restart
注記
別の方法として、ブリッジ化したトラフィックがiptables
によって プロセスされるのを阻止します。/etc/sysctl.conf
内で以下の行を 追加します:net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.bridge.bridge-nf-call-arptables = 0
設定されたカーネルパラメータをsysctl
で再ロードします。# sysctl -p /etc/sysctl.conf
インストールの前に libvirt を再スタート
libvirt
デーモンの再スタート# service libvirtd reload
virt-install
に --network=bridge:installation
インストールパラメータを追記します。ここで installation
とは、該当ブリッジの名前です。PXE インストールには、--pxe
パラメータを使用します。
例6.3 virt-install を使用した PXE インストール
# virt-install --accelerate --hvm --connect qemu:///system \ --network=bridge:installation --pxe\ --name EL10 --ram=756 \ --vcpus=4 --os-type=linux --os-variant=rhel5 --file=/var/lib/libvirt/images/EL10.img \
以下の手順は、標準の virt-manager インストール手続きとは異なる手順です。 標準の手続きには 7章ゲストオペレーティングシステムのインストール手順 を参照して下さい。
PXE を選択
インストールメソッドとして PXE を選択。ブリッジの選択
物理デバイスを共有 を選択して、先の手順で作成してある ブリッジを選択します。インストールの開始
インストールの開始準備が出来ています。
第7章 ゲストオペレーティングシステムのインストール手順
7.1. Red Hat Enterprise Linux 5.0 を para-virtualized ゲストとしてインストール
kernel-xen
カーネルを必要とします。
重要
virt-manager
についての案内には 「virt-manager を使用してゲストを作成」 にある手順を参照して下さい。
virt-install
ツールを使用して para-virtualized ゲストを作成します。--vnc
オプションは、 グラフィックインストールを表示します。この例中のゲストの名前は rhel5PV であり、 ディスクイメージファイルは rhel5PV.dsk となり、Red Hat Enterprise Linux 5 のインストールツリーのローカルミラーは ftp://10.1.1.1/trees/RHEL5-B2-Server-i386/ となります。これらの値をご使用のシステムとネットワーク用に 的確なものに変更して下さい。
# virt-install -n rhel5PV -r 500 \ -f /var/lib/libvirt/images/rhel5PV.dsk -s 3 --vnc -p \ -l ftp://10.1.1.1/trees/RHEL5-B2-Server-i386/
注記
手順7.1 Para-virtualized Red Hat Enterprise Linux ゲストのインストール手順
- 言語を選択して、OK をクリックします。
- キーボードレイアウトを選択して、OK をクリックします。
- ゲストのネットワークアドレスを割り当てます。(以下のように)
DHCP
の使用を選択するか、又は 静的 IP アドレスを 使います: - DHCP を選択すると、インストールプロセスは、ここで IP アドレスの取得を 試みます:
- ゲスト用に 静的 IP アドレスを選択すると、このプロンプトが出現します。 ゲストのネットワーキング設定の詳細を入力します:
- 有効な IP アドレスを入力します。入力する IP アドレスがインストールツリーを持つ サーバーに到達するように確認して下さい。
- 有効なサブネットマスク、デフォルトのゲートウェイ、及びネームサーバーのアドレスを 入力します。
言語を選択して、OK をクリックします。 - 以下に静的 IP アドレス設定の例を示します:
- インストールプロセスはここで、必要とするファイルをサーバーから取り込みます:
手順7.2 グラフィカルインストールプロセス
- 有効な登録コードを入力します。有効な RHN サブスクリプションキーがある場合は、
Installation Number
フィールド内に それを入力します:注記
登録ステップを飛ばす場合、インストールの後でrhn_register
コマンドを使用して、Red Hat Network アカウントの詳細を 確定することができます。rhn_register
コマンドには root アクセスが必要です。 - インストールプロセスがインストールに選択した場所に格納されている全てのデータの 抹消を是認するように催促します:はい をクリックして継続します。
- ストレージ設定とパーティションレイアウトを再確認します。ゲストのストレージ用に iSCSI を使用したい場合、高度なストレージ設定を選択することができます。選択をして、それから 次 をクリックします。
- インストール用に選択したストレージを確定します。はい をクリックして継続します。
- ネットワーキングとホスト名のセッティングを構成します。これらのセッティングは 先にインストールプロセスで入力したデータで充填されます。必要であればそれを 変更して下さい。OK をクリックして継続します。
- 現在地の適切なタイムゾーンを選択します。
- ゲスト用の root パスワードを入力します。次 をクリックして継続します。
- インストールするソフトウェアパッケージを選択します。今すぐ カスタマイズ ボタンを選択します。kernel-xen パッケージを System ディレクトリにインストールする必要が あります。para-virtualization には kernel-xen パッケージが 必要です。次 をクリックします。
- 依存関係と領域の要件が算出されます。
- インストールの依存関係と領域要件が確証された後は、次 を クリックして実際のインストールを開始します。
- 選択したソフトウェアパッケージが全て自動的にインストールされます。
- インストールが完了したら、ゲストを再起動します:
- ゲストは再起動しません。代わりにシャットダウンします...
- ゲストをブートします。ゲスト名は 「Red Hat Enterprise Linux 5.0 を para-virtualized ゲストとしてインストール」 内で
virt-install
を使用した時に選択されていました。デフォルトの 例を使用した場合は、名前は rhel5PV となります。virsh
の使用でゲストの再起動ができます:# virsh reboot rhel5PV
別の方法として、virt-manager
を開いて、ゲスト用の 名前を選択し、開く をクリックします。それから 実行 をクリックします。ゲストのブートプロセスを表示する VNC ウィンドウが ここで開きます。 - ゲストをブートすると First Boot 設定の画面がスタートします。 このウィザードは使用するゲスト用にいくつかの基本的な設定選択を催促してきます。
- ライセンス同意書を読んで同意して下さい。ライセンス同意のウィンドウで 進む をクリックします。
- ファイアウォールを設定します。進む をクリックして継続します。
- ファイアウォールを無効にすると、その選択を確定するように催促されます。 はい をクリックして確定し、継続します。但し、 ご自分のファイアウォールを無効にすることは推奨できません。
- SELinux を設定します。SELinux を 強制モード で実行する ことが強く推奨されます。SELinux は許容モードで実行するか、無効にすることも 選択できます。進む をクリックして継続します。
- SELinux を無効にする選択をすると、この警告が表示されます。 はい をクリックすると SELinux が 無効になります。
- 必要であれば、
kdump
を有効にします。進む をクリックして継続します。 - ゲスト用の時刻と日付が正しいかどうか確認します。para-virtualized ゲストを インストールすると、時刻と日付は hypervisor と同期化するはずです。進む をクリックして継続します。
- ソフトウェア更新をセットアップします。Red Hat Network サブスクリプションを持っている場合、 あるいは、そのお試し版を欲しい場合は、以下の画面を使用して新規にインストールしたゲストを RHN に登録します。進む をクリックして継続します。
- RHN 用の選択を確定します。
- RHN アクセスを設定していない場合は、もう1つの画面が出てくるでしょう。 RHN アクセスが有効になっていなければ、ソフトウェア更新は受け取れません。進む ボタンをクリックします。
- root 以外のユーザーアカウントを作成します。通常の使用と強化セキュリティの為には root 以外のユーザーアカウントの作成が推奨されます。ユーザー名、氏名、及びパスワードを 入力します。進む ボタンをクリックします。
- サウンドデバイスが検出されて、サウンドが必要であれば、それを調節します。 プロセスを完了して、進む をクリックします。
- この画面を使用して、CD から又は別のレポジトリから追加のパッケージをインストールできます。 この時点では追加のソフトウェアをインストールしないで、後で
yum
コマンドを使用するか、RHN でパッケージを追加する方が効率的です。 完了 をクリックします。 - ゲストはここで、ユーザーが変更したセッティングを設定し、ブートプロセスを 継続します。
- Red Hat Enterprise Linux 5 のログイン画面が表示されます。先のステップで 作成したユーザー名を使用してログインします。
- これで、 para-virtualized Red Hat Enterprise Linux ゲストが正常にインストールされました。
7.2. Red Hat Enterprise Linux を完全仮想化ゲストとしてインストール
手順7.3 virt-manager を使用して完全仮想化 Red Hat Enterprise Linux 5 ゲストを作成
virt-manager を開く
virt-manager
を開始します。アプリケーション メニューと システムツール サブメニューから 仮想マシン マネージャ のアプリケーションを起動します。別の方法として、root になってvirt-manager
コマンドを実行することもできます。Hypervisor を選択
hypervisor を選択します。Xen か KVM がインストールされている場合は、そのいずれかを 選択します。例えば、KVM を選択する場合、現在、KVM はqemu
と命名されていることに注意して下さい。hypervisor 接続が選択されると、新規 ボタンが 利用可能になります。新規 ボタンをクリックします。新規仮想マシンウィザードを開始
新規 ボタンをクリックすると、仮想マシン作成ウィザードが スタートします。 進む をクリックして継続します。仮想マシンの命名
使用する仮想ゲストの名前を付けます。句読点と空白文字は許可されません。 進む をクリックして継続します。仮想化のメソッドを選択
仮想化ゲスト用の仮想化メソッドを選択します。インストール済みの仮想化メソッドのみを 選択できることに注意して下さい。先の手順で KVM か Xen を選択している場合、 (ステップ 4) その選択している hypervisor を使用しなければなりません。 ここの例では、KVM hypervisor を使用します。 進む をクリックして継続します。インストールメソッドの選択
Red Hat Enterprise Linux は以下の方法の1つを使用してインストールできます:- ローカルインストールメディア:ISO イメージか、又は 物理光学メディア
- Red Hat Enterprise Linux のインストールツリーが、HTTP、 FTP 、又は NFS を介して ホストされている場合は、「ネットワークインストールツリー」 を 選択します。
- Red Hat Enterprise Linux インストールメディアのブート用に PXE サーバーを設定している場合は、 PXE を使用することができます。Red Hat Enterprise Linux インストールを PXE ブートするように サーバー設定する方法はこのガイドでは言及しません。しかし、メディアブートの後はほとんどの インストール手順は同じです。
スクリーンショットで示してあるように、OS タイプ を Linux に、 そして OS 変種 を Red Hat Enterprise Linux 5 に セットします。 進む をクリックして継続します。インストールメディアの場所を指定
ISO イメージの位置、又は CD-ROM か DVD のデバイスを選択します。ここの例では、 Red Hat Enterprise Linux installation DVD の ISO ファイルイメージを使用します。- 閲覧 ボタンをクリック
- ISO ファイルの位置を検出して ISO イメージを選択します。開く を クリックして選択を確定します。
- ファイルが選択されてインストール準備ができました。 進む をクリックして継続します。
警告
ISO イメージファイルとゲストストレージイメージには、/var/lib/libvirt/images/
ディレクトリの使用が推奨されます。他の場所では、追加の SELinux 設定が必要になります。詳細には、 「SELinux と仮想化」 を参照して下さい。ストレージセットアップ
物理ストレージデバイス (ブロックデバイス) 又は ファイルベースイメージ (ファイル) を割り当てます。 ファイルベースイメージは/var/lib/libvirt/images/
ディレクトリに 格納しなければなりません。使用する仮想化ゲストには、十分なストレージを割り当てます。 仮想化ゲストとそれが必要とするアプリケーションにも十分なスペースを割り当てます。 進む をクリックして継続します。注記
ライブとオフラインの移行には、ゲストが共有のネットワークストレージにインストール されている必要があります。ゲスト用の共有ストレージの設定についての情報には、 9章共有ストレージと仮想化 を 参照して下さい。ネットワーク設定
仮想ネットワーク 又は 共有の 物理デバイス のどちらかを選択します。仮想ネットワークオプションは、NAT(Network Address Translation)を 使用してデフォルトのネットワークデバイスを仮想化ゲストと共有します。 ワイヤレスネットワークには仮想ネットワークオプションを使用します。共有の物理デバイスオプションはネットワークボンドを使用して、仮想化ゲストに ネットワークデバイスへの全面的アクセスを与えます。 進む をクリックして継続します。メモリーと CPU の割り当て
メモリーと CPU の割り当てウィンドウが表示されます。仮想化 CPU と RAM の割り当てに 適切な値を選択します。これらの値は、ホストとゲストのパフォーマンスに影響を与えます。仮想化ゲストは、効率的にそして効果的に稼働するために十分な物理メモリー (RAM) を必要とします。使用するゲストオペレーティングシステムとアプリケーションの 必要性に適合するメモリーの値を選択します。ゲストは物理 RAM を使用することを忘れないで下さい。ホストシステムに対し、過度の数のゲストを稼働したり、不十分なメモリーを設定していると、仮想メモリーとスワップをかなり使用することになります。仮想メモリーは 確実に低速であり、システムパフォーマンスと反応性の低下の原因となります。 全てのゲストとホストが効率的に稼働できるように十分なメモリーを割り当てることを確認して下さい。十分な仮想 CPU を仮想ゲストに割り当てます。ゲストがマルチスレッドのアプリケーションを実行する場合は、ゲストが効率良く実行するのに必要な仮想化 CPU の数を割り当てます。ホストシステム上で利用できる物理プロセッサ (又はハイパースレッド)の数量以上の仮想 CPU を割り当てないで下さい。仮想プロセッサの超過割り当ては可能ですが、超過割り当ては、プロセッサのコンテキストがオーバーヘッドを切り替えるため、ゲストとホストのパフォーマンスに重大な否定的影響を与えます。進む をクリックして継続します。確認してゲストインストールを開始
設定を確認します。 完了 をクリックしてゲストインストール 工程を開始します。Red Hat Enterprise Linux のインストール
Red Hat Enterprise Linux 5 のインストールシーケンスを完了します。この インストールシーケンスは、『インストールガイド』 で 説明してあります。Red Hat ドキュメント で Red Hat Enterprise Linux 『インストールガイド』 を参照して下さい。
7.3. Windows XP を完全仮想化ゲストとしてインストール
重要
virt-manager の開始
アプリケーション > システムツール > 仮想マシンマネージャ の順で開きます。ホストへの接続を開きます(ファイル > 接続を開く をクリック)。新規 ボタンをクリックして 新規仮想マシンを作成します。仮想システムの命名
システムの名前 を入力して、それから 進む ボタンを クリックします。仮想化メソッドの選択
先に KVM 又は Xen を選択(ステップ ステップ 1)している場合は、自分の選択した hypervisor を使用しなければなりません。 この例では、KVM hypervisor を使用します。Windows は完全仮想化を使用してのみインストールが可能です。インストールメソッドの選択
この画面は、ユーザーがインストールのメソッドとオペレーティング システムのタイプを指定できるようにしてくれます。CD-ROM 又は DVD でのインストールには、Windows インストールデスクが 入っているデバイスを選択します。ISO イメージの場所 を選択する場合は、Windows インストールの .iso イメージへの パスを入力して下さい。OS タイプ のリストから Windows を 選択して、OS 変種 のリストから Microsoft Windows XP を 選択します。PXE でのゲストのインストールは Red Hat Enterprise Linux 5.2 でサポートが あります。ただし PXE インストールはこの章では取り扱いません。進む をクリックして継続します。警告
ISO イメージファイルとストレージイメージには、/var/lib/libvirt/images/
ディレクトリの使用が推奨されます。他の場所では、SELinux に追加の設定が必要になります。 詳細は、「SELinux と仮想化」 を参照して下さい。- ストレージスペースの割り当て ウィンドウが表示されます。 ディスクパーティションか、LUN か、又は 「ゲストストレージ用のファイルベース イメージの作成」を選択します。全てのファイルベースゲストイメージは
/var/lib/libvirt/images/
ディレクトリに格納されるべきです。ファイルベースイメージ用には他のディレクトリは SELinux で禁止されています。SELinux を enforcing モードで実行する場合は、ゲストのインストール についての詳細を 「SELinux と仮想化」 で参照して下さい。アプリケーションや他のデータの為にゲストが追加のスペースを必要とする場合、 余分のスペースを割り当てます。例えば、ウェブサーバーはログファイル用に 追加のスペースを必要とします。選択したストレージタイプでゲスト用に適切なサイズを選びます。それから 進む ボタンをクリックします。注記
仮想マシンにはデフォルトのディレクトリ、/var/lib/libvirt/images/
の 使用が推奨されます。別の場所(この例では、/images/
)を使用している 場合は、インストールを継続する前に確実にそれが SELinux ポリシーに追加されるように して下さい(このドキュメントの後で SELinux ポリシーの変更の仕方が案内してあります)。 ネットワークのセットアップ
仮想ネットワーク 又は 共有物理デバイスを選択します。仮想ネットワークオプションは NAT(Network Address Translation)を使用して 仮想化ゲストを持つデフォルトのネットワークデバイスを共有します。ワイヤレス ネットワークには仮想ネットワークオプションを使用して下さい。共有物理デバイスオプションはネットワークボンドを使用して、仮想化ゲストが ネットワークデバイスに全面的なアクセスができるようにします。 進む をクリックして継続します。- メモリーと CPU の割り当てウィンドウが表示されます。仮想化 CPU と RAM の 割り当てに適切な値を選択します。これらの値はホストとゲストのパフォーマンスに 影響します。仮想化ゲストは、効率的にそして効果的に稼働するために十分な物理メモリー (RAM) を必要とします。使用するゲストオペレーティングシステムとアプリケーションの 必要性に適合するメモリーの値を選択します。ほとんどのオペレーティングシステムは 正常に機能するために最低でも 512MB の RAM を必要とします。ゲストは物理 RAM を 使用することを忘れないで下さい。過度の数のゲストを稼働したり、ホストシステム用に不十分なメモリーを設定 していると、仮想メモリーとスワップをかなり使用することになります。仮想メモリーは 確実に低速であり、システムパフォーマンスと反応性の低下の原因となります。 全てのゲストとホストが効率的に稼働できるように十分なメモリーを割り当てる ことを確認して下さい。十分な仮想 CPU を仮想ゲストに割り当てます。ゲストがマルチスレッドの アプリケーションを実行する場合は、最も効率良く実行するのにゲストが必要な仮想化 CPU の数を割り当てます。ホストシステム上で利用できる物理プロセッサ (又はハイパースレッド)の数量以上の仮想 CPU を割り当てないで下さい。 仮想プロセッサの超過割り当ては可能ですが、超過割り当ては、プロセッサの コンテキストがオーバーヘッドを切り替えるため、ゲストとホストのパフォーマンスに重大な悪影響を与えます。
- インストールが継続される前に、要約の画面が表示されます。完了 をクリックしてゲストインストールへと進みます。
- インストールがスタートした後に素早くコンソールウィンドウが開くように、ハードウェア選択をする必要があります。完了 をクリックして、 virt-manager 要約ウィンドウに切り替えて、新しく開始した Windows ゲストを選択します。システム名をダブルクリックするとコンソールウィンドウが 開きます。素早く F5 を数回押して、新規の
HAL
を 選択します。Windows インストールにダイアログボックスが出ると、Generic i486 Platform
タブを選択します。Up と Down の矢印で選択肢を移動します。 - インストールは標準の Windows インストールと同様に進みます。
- プロンプト時にハードドライブのパーティション設定
- ドライブがフォーマットされた後に、Windows はハードドライブへファイルのコピーを開始します。
- ファイルはストレージデバイスにコピーされて、Windows がここで再起動します。
- Windows ゲストを再起動:
# virsh start WindowsGuest
ここで、WindowsGuest とは、ご使用の仮想マシンの 名前です。 - コンソールウィンドウが開くと、Windows インストールのセットアップ段階が出てきます。
- ユーザーのインストールがセットアップ段階で止まったように見える場合、
virsh reboot WindowsGuestName
を使用してゲストを再起動して下さい。仮想マシンを再起動すると、Setup is being restarted
のメッセージが出てきます: - セットアップが終了したら、Windows のブート画面が出てきます:
- この時点で Windows インストールの標準のセットアップを継続できます:
- これでセットアッププロセスは完了です。
7.4. 完全仮想化ゲストとして Windows Server 2003 をインストール
virt-install
コマンドを使用したインストールの説明をしています。virt-install
は virt-manager の代用として使用できます。このプロセスは 「Windows XP を完全仮想化ゲストとしてインストール」 に案内してある Windows XP のインストールに似ています。
注記
- Windows ゲストのコンソールとして Windows Server 2003 のインストールに
virt-install
を使用すると、virt-viewer
ウィンドウを開きます。以下に Windows Server 2003 ゲストのインストールの為のvirt-install
の使用サンプルを示します:virt-install
コマンドでインストールを開始# virt-install -hvm -s 5 -f /var/lib/libvirt/images/windows2003spi1.dsk \ -n windows2003sp1 -cdrom=/ISOs/WIN/en_windows_server_2003_sp1.iso \ -vnc -r 1024
- ゲストがインストール時点まで起動すると、すぐに F5 を押す必要が あります。適切なタイミングで F5 を押さないと、インストールを再開始することになります。F5 を押すことにより、異なる HAL 又は、Computer Type を選択できるようになります。Computer Type として
Standard PC
を選択します。Windows Server 2003 の仮想化ゲストには Computer Type の 変更が必要になります。 - インストールの残りを完了する
- これで Windows Server 2003 が完全仮想化ゲストとしてインストールされました。
7.5. Windows Server 2008 を完全仮想化ゲストとしてインストール
手順7.4 virt-manager を使用した Windows Server 2008 のインストール
virt-manager を開く
virt-manager
を開始します。アプリケーション メニュー内の システムツール サブメニューから 仮想マシン マネージャ アプリケーションを起動します。別の方法としては、root としてvirt-manager
コマンドを実行します。Hypervisor を選択
Hypervisor を選択します。Xen か KVM がインストールされている場合は、そのいずれかを 選択します。ここでの例として KVM を選択しましょう。現在、KVM にはqemu
と言う呼称があることに注意して下さい。オプションが選択されると、新規 ボタンが使用可能に なります。そこで 新規 ボタンを押します。新規仮想マシンウィザードを開始
新規 ボタンを押して、仮想マシン作成のウィザードを 開始します。 進む を押して継続します。仮想マシンの命名
使用する仮想化ゲストに名前を付けます。句読点や空白は許可されません。 進む を押して、継続します。仮想化メソッドを選択
仮想化ゲスト用の仮想化メソッドを選択します。インストール済の仮想化メソッドのみが 選択できることに注意して下さい。先の手順(手順2)で KVM か Xen を選択した場合は、 自分が選択している hypervisor を使用しなければなりません。ここの例では KVM hypervisor を 使用しています。 進む を押して、継続します。インストールメソッドを選択
Windows の全てのバージョンには、ISO イメージか、又は物理光学メディアの いずれかの ローカルインストールメディア を使用する必要があります。Windows のネットワークインストールの為に PXE サーバーが設定されて いる場合は、PXE を使用できます。しかし、このガイドでは、PXE Windows インストールは説明していません。スクリーンショットに示してあるように、OS タイプ を Windows にセットして、 OS 変種 を Microsoft Windows 2008 にセットします。 進む を押して継続します。インストールメディアの位置を指定
ISO イメージの位置、又は CD-ROM か DVD のデバイスを選択します。この例では、 Windows Server 2008 のインストール CD 用の ISO ファイルイメージを使用します。- 閲覧 ボタンを押します。
- ISO ファイルの位置を見つけて、それを選択します。 開く を押して選択を確定します。
- ファイルが選択されて、そこからのインストール準備ができました。 進む を押して継続します。
警告
ISO イメージファイルとゲストストレージイメージには、/var/lib/libvirt/images/
ディレクトリの使用が推奨されます。他の場所では、SELinux への追加設定が必要となります。 詳細は 「SELinux と仮想化」 を参照して下さい。ストレージセットアップ
物理ストレージデバイス (ブロックデバイス)、又は ファイルベースイメージ (ファイル) を割り当てます。 ファイルベースイメージは/var/lib/libvirt/images/
ディレクトリに格納しなければなりません。 仮想化ゲストとそれが必要とするアプリケーションに十分な スペースを割り当てます。 進む を押して継続します。ネットワークセットアップ
仮想ネットワーク 又は 共有物理デバイス のいずれかを選択します。仮想ネットワークオプションは NAT (Network Address Translation) を使用して、 デフォルトのネットワークデバイスを仮想ゲストと共有します。仮想ネットワーク オプションをワイヤレスネットワークに使用して下さい。共有の物理デバイスオプションはネットワークボンドを使用して、仮想ゲストに ネットワークデバイスへの全面的アクセスを与えます。 進む を押して継続します。メモリーと CPU の割り当て
メモリーと CPU の割り当てウィンドウが表示されます。仮想化 CPU と RAM の 割り当てに適切な値を選択します。これらの値はホストとゲストのパフォーマンスに 影響します。仮想化ゲストは、効率的にそして効果的に稼働するために十分な物理メモリー (RAM) を必要とします。使用するゲストオペレーティングシステムとアプリケーションの必要性に適合するメモリーの値を選択します。ゲストは物理 RAM を使用することを忘れないで下さい。過度の数のゲストを稼働したり、ホストシステム用に不十分なメモリーを設定していると、仮想メモリーとスワップをかなり消費することになります。仮想メモリーは 確実に低速であり、システムパフォーマンスと反応性の低下の原因となります。 全てのゲストとホストが効率的に稼働できるように十分なメモリーを割り当てることを確認して下さい。十分な仮想 CPU を仮想ゲストに割り当てます。ゲストがマルチスレッドの アプリケーションを実行する場合は、ゲストが効率良く実行するのに必要な仮想化 CPU の数を割り当てます。ホストシステム上で利用できる物理プロセッサ (又はハイパースレッド)の数量以上の仮想 CPU を割り当てないで下さい。 仮想プロセッサの超過割り当ては可能ですが、超過割り当ては、プロセッサのコンテキストがオーバーヘッドを切り替えるため、ゲストとホストのパフォーマンスに重大な悪影響を与えます。進む をクリックして継続します。ゲストのインストールを確認してからスタートします。
設定を確認します。 完了 をクリックして ゲストインストールの工程を開始します。Windows のインストール
Windows Server 2008 インストールのシーケンスを完了します。インストールの シーケンスはこのガイドでは説明しておりません。Windows のインストールに 関する情報には、Microsoft の ドキュメント を参照して下さい。
パート III. 設定
Red Hat Enterprise Linux 内で仮想化を設定
第8章 仮想ブロックデバイス
8.1. 仮想化フロッピィディスクコントローラの作成
dd
コマンドを使用して作成します。 /dev/fd0 の部分は使用する フロッピィデバイスの名前とディスクの名前で入れ替えます。
# dd if=/dev/fd0 of=~/legacydrivers.img
注記
/var/lib/libvirt/images/rhel5FV.img
にイメージを 配置した完全仮想化 Red Hat Enterprise Linux のインストールを実行している virt-manager
で 作成されたゲストを使用します。Xen hypervisor がこの例で使用されています。
- 実行中のゲストで
virsh
を使用して ゲストイメージ用に XML 設定ファイルを作成します。# virsh dumpxml rhel5FV > rhel5FV.xml
これが、セッティング構成を XML ファイルとして保存して、このファイルの編集により ゲストで使用される操作とデバイスをカスタマイズ出来ます。virsh XML 設定ファイルの 使用法に関する詳細には、29章カスタムの libvirt スクリプト作成 を参照して下さい。 - ゲスト用にフロッピィディスクイメージを作成
# dd if=/dev/zero of=/var/lib/libvirt/images/rhel5FV-floppy.img bs=512 count=2880
- 以下のコンテンツを追加します。必要な箇所では使用するゲストの設定 XML ファイルに変更します。この例は、ファイルベースイメージを使用したフロッピィデバイスの 模倣です。
<disk type='file' device='floppy'> <source file='/var/lib/libvirt/images/rhel5FV-floppy.img'/> <target dev='fda'/> </disk>
- ゲストを停止します。
# virsh stop rhel5FV
- XML 設定ファイルを使用してゲストを再スタートします。
# virsh create rhel5FV.xml
8.2. ストレージデバイスをゲストに追加
- ローカルハードドライブのパーティション
- ローカルボリューム
- ファイバーチャンネル、又は ホストに直結の iSCSI
- ホストのファイルシステムに存在するファイルコンテナ
- 仮想マシンによって直接マウントされている NFS ファイルシステム
- ゲストにより直接アクセスされる iSCSI ストレージ
- クラスタファイルシステム (GFS).
ファイルベースストレージ、又はファイルベースコンテナはホストファイルシステム上の ファイルであり、仮想化ゲストの為の仮想化ハードドライブとして動作します。ファイル ベースコンテナを追加するには、以下の手順を実行します:
- 空のコンテナファイルを作成するか、又は、既存のファイルコンテナ(ISO ファイルなど)を使用。
dd
コマンドを使用して Sparse ファイルを作成します。 Sparse ファイルは、データの整合性とパフォーマンス問題のために推奨できませんが、 Sparse ファイルは より速く作成できてテストに使用できます。但し実稼働環境では使用できません。# dd if=/dev/zero of=/var/lib/libvirt/images/FileName.img bs=1M seek=4096 count=0
- 非 sparse の 事前割り当て済みのファイルがファイルベースストレージイメージ用に推奨されます。非 sparse ファイルを作成して、以下を実行します:
# dd if=/dev/zero of=/var/lib/libvirt/images/FileName.img bs=1M count=4096
これらの両方のコマンドは、仮想化ゲスト用に追加のストレージとして使用される 400MB の ファイルを作成します。 - ゲスト用の設定をダンプします。この例では、ゲストは Guest1 と 言う名前であり、ファイルはユーザーのホームディレクトリに保存されます。
# virsh dumpxml Guest1 > ~/Guest1.xml
- テキストエディタで設定ファイル (この例では、Guest1.xml) を開きます。
<disk>
エレメントを見つけて下さい。 このエレメントはストレージデバイスを記述するものです。以下にディスクエレメントの 例を示します:<disk type='file' device='disk'> <driver name='tap' type='aio'/> <source file='/var/lib/libvirt/images/Guest1.img'/> <target dev='xvda'/> </disk>
<disk>
エレメントの複製により、又は 新規の書き込みにより追加のストレージを追加します。仮想ブロックデバイス属性用のデバイス名を 指定することを確認して下さい。この属性はそれぞれのゲスト設定ファイルのために独自のもので なければなりません。以下の例では、FileName.img
と呼ばれる 追加のファイルベースストレージコンテナを含んでいる設定ファイルセクションを示しています。<disk type='file' device='disk'> <driver name='tap' type='aio'/> <source file='/var/lib/libvirt/images/Guest1.img'/> <target dev='xvda'/> </disk> <disk type='file' device='disk'> <driver name='tap' type='aio'/> <source file='/var/lib/libvirt/images/FileName.img'/> <target dev='hda'/> </disk>
- 更新された設定ファイルからゲストを再起動します。
# virsh create Guest1.xml
- 以下のステップは Linux ゲスト特有のものです。他のオペレーティングシステムは 別の方法で新規のストレージデバイスを処理します。Linux 以外のシステムではその オペレーティングシステムのドキュメントを参照して下さい。ゲストはこの時点で、ファイル
FileName.img
を/dev/hdb
と言う名のデバイスとして使用します。 このデバイスはゲストからのフォーマットを必要とします。ゲスト上では、 パーティション設定で全デバイスを 1つのプライマリパーティションに して、それからそのデバイスをフォーマットします。- 新規パーティション 用に
n
を押します。# fdisk /dev/hdb Command (m for help):
- プライマリパーティション用に
p
を押します。Command action e extended p primary partition (1-4)
- 利用可能なパーティションを1つ選択します。この例では、
1
を 入力することにより、最初のパーティションが選択されます。Partition number (1-4):
1
Enter
を押すことでデフォルトの最初の シリンダを入力します。First cylinder (1-400, default 1):
- パーティションのサイズを選択します。この例では
Enter
を 押すことによりディスク全体が割り当てられます。Last cylinder or +size or +sizeM or +sizeK (2-400, default 400):
t
を押すことにより パーティションのタイプをセットします。Command (m for help):
t
- 先のステップで作成したパーティションを選択します。この例では、 パーティション番号は
1
です。Partition number (1-4):
1
- linux パーティションとして
83
を入力します。Hex code (type L to list codes):
83
- 変更をディスクに書き込んで退出します。
Command (m for help):
w
Command (m for help):q
ext3
ファイルシステムを 使用して新規パーティションをフォーマットします。# mke2fs -j /dev/hdb
- ゲストにディスクをマウントします。
# mount /dev/hdb1 /myfiles
システム管理者は追加のハードドライブを使用して、より多くのストレージ領域を提供したり、 ユーザーデータからシステムデータを分離することができるようになります。この手順、手順8.1「物理ブロックデバイスを仮想化ゲストに追加」 はホスト上のハードドライブを 仮想化ゲストに追加する方法を示しています。
手順8.1 物理ブロックデバイスを仮想化ゲストに追加
- ハードディスクデバイスを物理的にホストに取り付けます。デフォルトでドライブが アクセス不可の場合は、ホストを設定します。
multipath
の使用でデバイスを設定して、必要であれば ホスト上で永続化します。virsh attach
コマンドを使用します。myguest をご自分のゲスト名で、それから/dev/hdb1
を追加するデバイスで、そして hdc をゲスト上のデバイスの場所でそれぞれ入れ替えます。hdc は未使用のデバイス名とする必要があります。そして、 Windows ゲストにも hd* 表記を使用します。このゲストは デバイスを正しく認識するでしょう。--type hdd
パラメータを CD-ROM 又は DVD デバイス用のコマンドに追記します。--type floppy
パラメータを フロッピィデバイス用のコマンドに追記します。# virsh attach-disk myguest
/dev/hdb1
hdc --driver tap --mode readonly- これで、ゲストは Linux 上に
/dev/hdb
と言う名の新規ハードディスクデバイスを持ち、また、Windows 上ではD: drive
かその類似名のハードディスクデバイスを持ちます。 このデバイスはフォーマットが必要かも知れません。
8.3. Red Hat Enterprise Linux 5 内に永続的ストレージを構成
この手順は、udev
を使用して LUN デバイスの永続化を実装します。この手順は、multipath
を使用していないホストのためだけに使用して下さい。
/etc/scsi_id.config
ファイルを編集します。options=-b
の行がコメントアウトしてあることを確認します。# options=-b
- 以下の行を追加します:
options=-g
このオプションは、udev
を設定して全ての付帯 SCSI デバイスが UUID を返すことを想定します。
- 任意のデバイスの UUID を表示するには、
scsi_id -g -s /block/sd*
コマンドを使用します。以下のようにします:# scsi_id -g -s /block/sd* 3600a0b800013275100000015427b625e
実際の出力は上記の例と異なるでしょう。この出力は デバイス/dev/sdc
の UUID を表示しています。 - デバイスにアクセスするコンピュータから
scsi_id -g -s /block/sd*
コマンドで UUID 出力が 同一かどうか確認します。 - デバイスを命名するルールを作成します。
/etc/udev/rules.d
ディレクトリ内に20-names.rules
と言う名のファイルを作成します。このファイルに新規のルールを 追加します。全てのルールは同じ形式を使用して同じファイルに追加されます。ルールは以下の形式に 従います:KERNEL=="sd[a-z]", BUS=="scsi", PROGRAM="/sbin/scsi_id -g -s /block/%k", RESULT="UUID", NAME="devicename"
UUIDと devicename を上記で取り込んだ UUID とそのデバイス名で入れ替えます。 以下が上記の例のためのルールです:KERNEL="sd*", BUS="scsi", PROGRAM="/sbin/scsi_id -g -s", RESULT="3600a0b800013275100000015427b625e", NAME="rack4row16"
udev
デーモンはここで、ルール内で UUID 用の/dev/sd*
と言う名の全てのデバイスを検索します。マッチするデバイスが、 システムに接続されると、デバイスはルールから名前が割り当てられます。3600a0b800013275100000015427b625e の UUID を持つデバイス内では、/dev/rack4row16
として表示されます。 /etc/rc.local
に以下の行を追記します:/sbin/start_udev
/etc/scsi_id.config
、/etc/udev/rules.d/20-names.rules
、及び/etc/rc.local
のファイル内の変化をそれぞれ全ての関連ホストにコピーします。/sbin/start_udev
multipath
パッケージはコンピュータからストレージデバイスへ 複数のパスを持つシステム用に使用されます。multipath
は障害 許容、フェイルオーバー、及びパフォーマンス強化を Red Hat Enterprise Linux システムに 付帯しているネットワークストレージデバイスに提供するものです。
multipath
環境内に LUN 永続化を実装するには マルチパスデバイス用に定義したエイリアス名が必要となります。各ストレージ デバイスは、エイリアス化した名前のキーとして機能する UUID を持っています。 scsi_id
コマンドの使用で デバイスの UUID を識別 することが出来ます。
# scsi_id -g -s /block/sdc
/dev/mpath
ディレクトリ内で 作成されます。以下の例では、4つのデバイスが /etc/multipath.conf
内で定義されています:
multipaths { multipath { wwid 3600805f30015987000000000768a0019 alias oramp1 } multipath { wwid 3600805f30015987000000000d643001a alias oramp2 } mulitpath { wwid 3600805f3001598700000000086fc001b alias oramp3 } mulitpath { wwid 3600805f300159870000000000984001c alias oramp4 } }
/dev/mpath/oramp1
、/dev/mpath/oramp2
、/dev/mpath/oramp3
、及び /dev/mpath/oramp4
と言う名前の 4つの LUN を作成します。入力されるとデバイスの WWID のそれらの新規名へのマッピングが この時点で再起動後に永続化されます。
8.4. 仮想化した CD-ROM 又は DVD デバイスをゲストに追加
virsh
コマンドを attach-disk
パラメータ付きで使用します。
# virsh attach-disk [domain-id] [source] [target] --driver file --type cdrom --mode readonlysource と target のパラメータはそれぞれホストとゲスト上のファイルとデバイス用のパスです。 source パラメータは ISO ファイルへのパス、又は
/dev
ディレクトリからのデバイスになります。
第9章 共有ストレージと仮想化
- ファイバーチャンネル
- iSCSI
- NFS
- GFS2
9.1. ゲストのストレージの為に iSCSI を使用
9.2. ゲストのストレージの為に NFS を使用
9.3. ゲストのストレージの為に GFS2 を使用
第10章 サーバーの最善使用法
- SELinux を強制モードで実行します。これは以下のコマンドを実行して達成できます。
# setenforce 1
AutoFS
,NFS
,FTP
,HTTP
,NIS
,telnetd
,sendmail
などのような不要なサービスを削除、又は 無効にします。- サーバー上でプラットフォーム管理に必要となる最低限のユーザーアカウントだけを追加し、 不要なユーザーアカウントは削除します。
- 使用中のホストでは必要でないアプリケーションの実行は避けて下さい。ホスト上で アプリケーションを実行すると、仮想マシンのパフォーマンスに影響を与えて、サーバーの 安定性にも影響します。サーバーをクラッシュする可能性のあるアプリケーションはいずれも サーバー上の全ての仮想マシンが落ちる原因にもなります。
- 仮想マシンのインストールとイメージには中心となる場所を使います。仮想マシンの イメージは
/var/lib/libvirt/images/
の下に格納すべきです。 仮想マシンのイメージ用に異なるディレクトリを使用している場合は、そのディレクトリを 確実に SELinux ポリシーに追加して、インストールを開始する前にそれを再ラベルします。 - インストールのソース、ツリー、及びイメージは中心的な場所に保存されるべき です。それは通常、ご使用の
vsftpd
サーバーの場所になります。
第11章 仮想化のセキュリティ
- ホスト上では必要なサービスのみを実行します。ホスト上で実行しているプロセスと サービスが少ない程、セキュリティとパフォーマンスのレベルが高くなります。
- hypervisor 上で SELinux を有効にします。SELinux と仮想化の使用に関する詳細には 「SELinux と仮想化」 を お読み下さい。
- ファイアウォールを使用して、dom0 へのトラフィックを制限します。デフォルトの拒否規則でファイアウォールを設定すると、dom0 への攻撃から保護をする助けになります。また、ネットワークが直面するサービスを制限することも大切です。
- 一般ユーザーには dom0 へのアクセスを禁止します。一般ユーザーに dom0 へのアクセスを許すと、dom0 を危険に曝す恐れがあります。dom0 は特権用であり、非権限者に許可をすることはセキュリティレベルを低下することになります。
11.1. SELinux と仮想化
/var/lib/libvirt/images
内に存在することを要求します。
以下のセクションは、論理ボリュームを SELinux が有効になった仮想化ゲストに 追加するサンプルです。これらの案内はハードドライブのパーティション設定にも 役に立ちます。
手順11.1 SELinux が有効になった仮想化ゲスト上で論理ボリュームの作成とマウント
- 論理ボリュームを作成します。このサンプルでは、
NewVolumeName
と言う名前の 5ギガバイトの論理ボリュームをvolumegroup
と言う名前のボリュームグループ上に 作成します。# lvcreate -n
NewVolumeName
-L5G
volumegroup
NewVolumeName
の論理ボリュームを ext3 などの 拡張属性をサポートするファイルシステムでフォーマットします。# mke2fs -j
/dev/volumegroup/NewVolumeName
- 新規の論理ボリュームをマウントする為の新規ディレクトリを作成します。この ディレクトリはユーザーファイルシステムのどこにでも置けます。しかし、それは 重要なシステムディレクトリ(
/etc
、/var
、/sys
など)や、ホームディレクトリ(/home
又は/root
)には配置しないように推奨します。 このサンプルでは、/virtstorage
と言うディレクトリを使用します。# mkdir
/virtstorage
- 論理ボリュームのマウント
# mount
/dev/volumegroup/NewVolumeName
/virtstorage
- Xen フォルダー用に 正しい SELinux のタイプをセット
semanage fcontext -a -t xen_image_t "/virtualization(/.*)?"
別の方法として、KVM のフォルダーに正しい SELinux のタイプをセットします。semanage fcontext -a -t virt_image_t "/virtualization(/.*)?"
targeted ポリシーが使用されている場合(targeted ポリシーがデフォルト)、 このコマンドは/etc/selinux/targeted/contexts/files/file_contexts.local
ファイルに1行を追加して、それがこの変更を 恒久化します。追加される1行は以下に似ているものです:/virtstorage(/.*)? system_u:object_r:xen_image_t:s0
- マウントポイント(
/virtstorage
)とその下の全てのファイルのタイプをxen_image_t
に変更するようにコマンドを実行します。(restorecon
とsetfiles
は/etc/selinux/targeted/contexts/files/
内のファイルを読み込みます)# restorecon -R -v /virtualization
11.2. SELinux の考慮
# semanage fcontext -a -t xen_image _t -f -b /dev/sda2 # restorecon /dev/sda2
xend_disable_t
はデーモンを再起動した後に xend
を規制のないモードにします。システム全体よりも単独デーモンだけの保護を無効にする方が無難です。ディレクトリを他の場所で使用する xen_image_t
として再ラベルすることは避けるように 推奨します。
第12章 ネットワークの設定
12.1. libvirt を持つ NAT(Network address translation)
全ての標準の libvirt
インストールは仮想マシンへの NAT ベースの 接続機能を配付状態のままで提供します。これがいわゆる仮想ネットワークです。コマンド virsh net-list --all
を使用すれば、その利用可能性を確認できます。
# virsh net-list --all Name State Autostart ----------------------------------------- default active yes
# virsh net-define /usr/share/libvirt/networks/default.xml
/usr/share/libvirt/networks/default.xml
で定義されています。
# virsh net-autostart default Network default marked as autostarted
# virsh net-start default Network default started
libvirt
デフォルトネットワークが 稼働始めると、孤立したブリッジデバイスを見ることができます。このデバイスは、NAT と IP 転送を使用して外部に接続するため、物理的なインターフェイスの追加はありません。新規のインターフェイスを追加しないで下さい。
# brctl show bridge name bridge id STP enabled interfaces virbr0 8000.000000000000 yes
libvirt
は、ゲストとのトラフィックを許可する iptables
ルールを追加します。このゲストは INPUT
、FORWARD
、OUTPUT
、及び POSTROUTING
のチェーン内の virbr0
デバイスに付帯しています。libvirt
はそれから、 ip_forward
パラメータの有効化を試みます。他の一部のアプリケーションが ip_forward
を無効にする可能性があるため、最善の選択肢は/etc/sysctl.conf
に以下を追加することです。
net.ipv4.ip_forward = 1
ホストの設定が完了すると、ゲストはその名前を基にした仮想ネットワークに 接続可能になります。ゲストをデフォルトの仮想ネットワークに接続するには、 ゲスト内で以下の XML を使用します:
<interface type='network'> <source network='default'/> </interface>
注記
<interface type='network'> <source network='default'/> <mac address='00:16:3e:1a:b3:4a'/> </interface>
12.2. libvirt を使用したブリッジネットワーキング
システムが Xen ブリッジを使用している場合は、/etc/xen/xend-config.sxp
への編集で以下の行を変更することにより、デフォルトの Xen ネットワーキングブリッジを 無効にすることが推奨されます:
(network-script network-bridge)
(network-script /bin/true)
NetworkManager はブリッジングをサポートしません。NetworkManager を無効にして ネットワークスクリプト(/etc/sysconfig/network-scripts/
ディレクトリ内に 存在)を介したネットワーキングを使用する必要があります。
# chkconfig NetworkManager off # chkconfig network on # service NetworkManager stop # service network start
注記
NM_CONTROLLED=no
" を サンプルで使用されている ifcfg-*
スクリプトに追加することができます。
次の2つのネットワーク設定ファイルを作成するか、 又は編集します。この手順を追加のネットワークブリッジで(別名で)繰り返します。
/etc/sysconfig/network-scripts
ディレクトリへ移動します:
# cd /etc/sysconfig/network-scripts
ifcfg-eth0
は、ブリッジの一部としてセットされている 物理ネットワークインターフェイスを定義しています:
DEVICE=eth0 # change the hardware address to match the hardware address your NIC uses HWADDR=00:16:76:D6:C9:45 ONBOOT=yes BRIDGE=br0
注記
MTU
変数を 設定ファイルの末尾に追記します。
MTU=9000
ifcfg-br0
、又はそれに似た名前のネットワークスクリプトを /etc/sysconfig/network-scripts
ディレクトリ内に作成します。 br0
とは、ブリッジの名前です。これはファイル名が DEVICE パラメータと同じであれば、どんな名前でも結構です。
DEVICE=br0 TYPE=Bridge BOOTPROTO=dhcp ONBOOT=yes DELAY=0
警告
TYPE=Bridge
の行は、大文字/小文字の区別があります。これは 大文字の「B」 と 小文字の 「ridge」 で構成れています。
# service network restart
iptables
を設定して、全てのトラフィックがブリッジを渡って 転送されるようにします。
# iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT # service iptables save # service iptables restart
注記
iptables
ルールを使って、ブリッジされた トラフィックがプロセスされることを阻止します。/etc/sysctl.conf
内で 以下の行を追記します:
net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.bridge.bridge-nf-call-arptables = 0
sysctl
の使用で設定されたカーネルパラメータを再ロードします。
# sysctl -p /etc/sysctl.conf
libvirt
デーモンを再起動
# service libvirtd reload
# brctl show bridge name bridge id STP enabled interfaces virbr0 8000.000000000000 yes br0 8000.000e0cb30550 no eth0
virbr0
ブリッジから独立しています。 物理デバイスを virbr0
に付帯する試行は しないで下さい。 virbr0
ブリッジは NAT (Network Address Translation) 接続機能だけのために あります。
第13章 Red Hat Enterprise Linux 5.4 以前の Xen ネットワーキング
virsh
(22章virsh でゲストを管理) と virt-manager
(23章仮想マシンマネージャ(virt-manager) でゲストを管理する) のための ツール特有の参照の章でも取り扱っています。これらの章では、これらのツールを使用した ネットワーキング設定の詳細説明が提供されています。
注記
13.1. 複数のゲストネットワークブリッジを設定して複数のイーサネットカードを使用
system-config-network
アプリケーションを使用して もう1つのネットワークインターフェイスを設定します。別の方法として、/etc/sysconfig/network-scripts/
ディレクトリ内にifcfg-ethX
と言う名の新しい 設定ファイルを作成します。ここでX
とは、いずれかの未使用の番号です。eth1
と言う名の2つめのネットワークインターフェイス用の サンプルの設定ファイルを以下に示します。$ cat /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 BOOTPROTO=static ONBOOT=yes USERCTL=no IPV6INIT=no PEERDNS=yes TYPE=Ethernet NETMASK=255.255.255.0 IPADDR=10.1.1.1 GATEWAY=10.1.1.254 ARP=yes
- ファイル
/etc/xen/scripts/network-bridge
を,/etc/xen/scripts/network-bridge.xen
にコピーします。 /etc/xen/xend-config.sxp
内の既存のネットワークスクリプトを コメントアウトして、(network-xen-multi-bridge)
と言う行を 追加します。- カスタムスクリプトを作成して複数のネットワークブリッジを作ります。以下に サンプルのスクリプトを示します。このサンプルスクリプトは2つの Xen ネットワーク ブリッジ(xenbr0 と xenbr1)作り、その1つは eth1 に付帯して、もう1つは eth0 に 付帯します。追加のブリッジを作成したい場合は、スクリプト内の例に従って、該当する 行をコピー/ペーストして下さい:
#!/bin/sh # network-xen-multi-bridge # Exit if anything goes wrong. set -e # First arg is the operation. OP=$1 shift script=/etc/xen/scripts/network-bridge.xen case ${OP} in start) $script start vifnum=1 bridge=xenbr1 netdev=eth1 $script start vifnum=0 bridge=xenbr0 netdev=eth0 ;; stop) $script stop vifnum=1 bridge=xenbr1 netdev=eth1 $script stop vifnum=0 bridge=xenbr0 netdev=eth0 ;; status) $script status vifnum=1 bridge=xenbr1 netdev=eth1 $script status vifnum=0 bridge=xenbr0 netdev=eth0 ;; *) echo 'Unknown command: ' ${OP} echo 'Valid commands are: start, stop, status' exit 1 esac
13.2. Red Hat Enterprise Linux 5.0 ラップトップネットワークの設定
重要
virt-manager
でゲストを作成するときに "仮想ネットワーク" アダプタを使用します。NetworkManager は Red Hat Enterprise Linux 5.1 及び それ以降でデフォルトで仮想ネットワークデバイスを使用して作動します。
<interface type='network'> <mac address='AA:AA:AA:AA:AA:AA'/> <source network='default'/> <target dev='vnet0'/> <model type='virtio'/> </interface>
xm
設定ファイル内で、仮想ネットワークデバイスは "vif
" のラベルを持ちます。
ifup
コール又は、ifdown
コールを 実行することもあります。更には、ワイヤレスネットワークカードは、 Xen の(デフォルトの)ブリッジ化したネットワーク使用の理由で、仮想化環境内では うまく機能しません。
- ユーザーはダミーのネットワークインターフェイスを設定して、それが Xen で 使用できるようにします。この例では、インターフェイスは
dummy0
と名付けます。これによりユーザーはゲストの為に隠れ IP アドレスの スペースを使用することができます。 - DHCP は DHCP 要求のためのダミーインターフェイスをリッスンしないため、静的 IPアドレスを 使用する必要があります。ユーザー自身のバージョンの DHCP をコンパイルしてダミーインターフェイスで リッスンするようにはできます。しかし、Xen 環境内で DNS、DHCP、及び tftpboot サービスの為の dnsmasq の使用を考慮してみましょう。セットアップと設定はこの章/セクションの後半で説明してあります。
- NAT と IP マスカレーディングを設定することにより、ゲストからのネットワークへの アクセスを有効にできます。
使用するホスト上で以下の設定手順を実行します:
- dummy0 のネットワークインターフェイスを作成して、それに静的 IP アドレスを割り当てます。 ここでの例では、現在の環境でルーティング問題を防止するために 10.1.1.1 を選択しています。 ダミーデバイスサポートを有効にするには、以下の行を
/etc/modprobe.conf
に追加します。alias dummy0 dummy options dummy numdummies=1
- dummy0 用のネットワーキングを設定するには、
/etc/sysconfig/network-scripts/ifcfg-dummy0
を編集/作成します:DEVICE=dummy0 BOOTPROTO=none ONBOOT=yes USERCTL=no IPV6INIT=no PEERDNS=yes TYPE=Ethernet NETMASK=255.255.255.0 IPADDR=10.1.1.1 ARP=yes
xenbr0
をdummy0
に バインドして、物理ネットワークに接続していない時でもネットワークを使用できるようにします。/etc/xen/xend-config.sxp
を編集して、netdev=dummy0
エントリを含むようにします:(network-script 'network-bridge bridge=xenbr0 netdev=dummy0')
- ゲスト内で
/etc/sysconfig/network
を開き、デフォルトのゲートウェイがdummy0
を指すように修正します。静的 IP を使用している場合は、 ゲストの IP アドレスをdummy0
と同じサブネット上で存在するように セットします。NETWORKING=yes HOSTNAME=localhost.localdomain GATEWAY=10.1.1.1 IPADDR=10.1.1.10 NETMASK=255.255.255.0
- ホスト内に NAT をセットアップすると、ワイヤレスを含むインターネットアクセスがゲストで可能になります。 そして Xen とワイヤレスカードの問題を解決します。以下のスクリプトにより、現在ユーザーの ネットワーク接続で使用されているインターフェイスを基にした NAT を有効にします。
NAT (Network address translation) を使用すると、パケットの妨害をしてそれをプライベート IP アドレスに 渡すことにより複数のネットワークアドレスが 1つの IP アドレスを介して接続できるようになります。 以下のスクリプトを /etc/init.d/xenLaptopNAT
にコピーして、/etc/rc3.d/S99xenLaptopNAT
へのソフトリンクを作成することができます。これが自動的に ブート時に NAT を開始します。
注記
#!/bin/bash PATH=/usr/bin:/sbin:/bin:/usr/sbin export PATH GATEWAYDEV=`ip route | grep default | awk {'print $5'}` iptables -F case "$1" in start) if test -z "$GATEWAYDEV"; then echo "No gateway device found" else echo "Masquerading using $GATEWAYDEV" /sbin/iptables -t nat -A POSTROUTING -o $GATEWAYDEV -j MASQUERADE fi echo "Enabling IP forwarding" echo 1 > /proc/sys/net/ipv4/ip_forward echo "IP forwarding set to `cat /proc/sys/net/ipv4/ip_forward`" echo "done." ;; *) echo "Usage: $0 {start|restart|status}" ;; esac
ラップトップ(又は、単独の安定したネットワーク接続に継っていないいずれかのコンピュータ)上で 仮想化を実行することの挑戦課題の1つは、ネットワークインターフェイスの変化と可用性です。 ダミーネットワークインターフェイスを使用すると、より安定した環境を設立できますが、それはまた、 DHCP、DNS、及び tftpboot サービスなどをユーザーの仮想化マシン/ゲストに提供することに於いて新しい挑戦を 持ち込みます。Red Hat Enterprise Linux と Fedora Core で配付されているデフォルトの DHCP デーモンは ダミーインターフェイスでリッスンしません。ユーザーの DNS 転送された情報は、異なるネットワークや VPN に 接続すると変化する可能性があります。
dnsmasq
を設定する方法についての短い説明を示します:
- ここ から最新バージョンの dnsmasq を取得します。
- dnsmasq のドキュメントは ここ で見ることができます。
- 以下で参照されている他のファイルを http://et.redhat.com/~jmh/tools/xen/ からコピーして、ファイル
dnsmasq.tgz
を取得します。この tar アーカイブには、以下のファイルが含まれています:nm-dnsmasq
は NetworkManager の為のディスパッチャスクリプトとして 使用できます。これは NetworkManager が接続に変化を検出する度に実行されて、dnsmasq の 再スタート/再ロードを強制します。これは/etc/NetworkManager/dispatcher.d/nm-dnsmasq
に コピーする必要があります。xenDNSmasq
は、/etc/init.d/xenDNSmasq
の 主要スタートアップ、又はシャットダウンのスクリプトとして使用できます。dnsmasq.conf
は/etc/dnsmasq.conf
の サンプルの設定ファイルです。dnsmasq
は/usr/local/sbin/dnsmasq
のバイナリイメージです。
- dnsmasq (デフォルトインストールは
/usr/local/sbin/dnsmasq
への バイナリ)を展開してビルドした後は、dnsmasq 設定ファイルを編集する必要があります。このファイルは/etc/dnsmaqs.conf
にあります。 - 設定を編集してユーザーのローカルニーズと要件に合うようにします。以下の パラメータはたぶんユーザーが修正すべきものでしょう:
interface
パラメータはdnsmasq
が 指定したインターフェイスのみでDHCP
とDNS
要求をリッスンするようにします。それは ダミーインターフェイスでもありえますが、ユーザーの公共インターフェイスやローカルループバックインターフェイス ではありえません。複数インターフェイスの為にもう1つのinterface
行を 追加します。interface=dummy0
は、dummy0
インターフェイスでリッスンする1つの例です。- 統合された
DHCP
サーバーを有効にするdhcp-range
には、リース及びオプションのリース期間用に 利用できるアドレスの範囲を供給する必要があります。複数のネットワークを使用している場合は、DHCP
を適用したい各ネットワーク上でこれを繰り返す 必要があります。1つの例として、dhcp-range=10.1.1.10,10.1.1.50,255.255.255.0,12h
が あります(ネットワーク 10.1.1.* 用であり、12時間のリース期間)。 - dnsmasq により供給されたデフォルトのルートを上書きするための
dhcp-option
は ルーターが dnsmasq を実行しているマシンと同じだと想定します。例としてはdhcp-option=3,10.1.1.1
があります。
- dnsmasq を設定した後は、以下にあるスクリプトを
xenDNSmasq
として、/etc/init.d
にコピーできます。 - システムブート中に自動的に dnsmasq を開始したい場合は、chkconfig(8) を使用して それを登録する必要があります:
chkconfig --add xenDNSmasq
自動スタートアップ用にそれを有効にします:chkconfig --levels 345 xenDNSmasq on
- NetworkManager が接続の変化を検出する度に 再スタートするように
dnsmasq
を設定するには、 供給されているスクリプトnm-dnsmasq
を使用すれば 達成できます。nm-dnsmasq
スクリプトを/etc/NetworkManager/dispatcher.d/
にコピーします。- NetworkManager ディスパッチャは、接続に 変化がある度にそのスクリプト(同じディレクトリ内に他のスクリプトがあるとアルファベット順)を 実行します。
dnsmasq
もまた ユーザーの/etc/resolv.conf
内の変化を検出して自動的にそれらを再ロードします (例えば VPN セッションをスタートした場合など)。- ユーザーが隠れたネットワークに仮想化ゲストを持ち、それらに公共ネットワークへの アクセスを許可している場合、
nm-dnsmasq
スクリプトとxenDNSmasq
スクリプトは両方共、NAT もセットアップします。
第14章 Xen Para-virtualized ドライバー
注記
- Red Hat Enterprise Linux 3
- Red Hat Enterprise Linux 4
- Red Hat Enterprise Linux 5
注記
- 32 bit ゲスト
- 64 bit ゲスト
- 32 bit ゲストと 64 bit ゲストの混合
14.1. システム要件
para-virtualized ドライバーをインストールする前に、以下の要件(一覧表内)が 満足されることを確認して下さい。
重要
pv-on-hvm
モジュール用のカーネル モジュールをデフォルトのカーネルパッケージ内に持っています。このことは、 para-virtualized ドライバーが Red Hat Enterprise Linux 4.7 とそれ以降、又は 5.3 とそれ以降のゲスト用に利用可能だと言う意味になります。
- Red Hat Enterprise Linux 5.1 又はそれ以降。
- Red Hat Enterprise Linux 5.1 又はそれ以降。
- Red Hat Enterprise Linux 4 Update 6 又はそれ以降。
- Red Hat Enterprise Linux 3 Update 9 又はそれ以降。
kmod-xenpv
.
kmod-xenpv
,modules-init-tools
(Red Hat Enterprise Linux 4.6z 以前のバージョンには、以下が必要:modules-init-tools-3.1-0.pre5.3.4.el4_6.1
又はそれ以降), 及びmodversions
.
kmod-xenpv
.
/lib
ファイルシステム内に必要。
14.2. Para-virtualization の制約とサポート
para-virtualized ドライバーへのサポートは、以下のオペレーティング システムとバージョンで利用可能です:
- Red Hat Enterprise Linux 5.1 及びそれ以降
- Red Hat Enterprise Linux 4 Update 6 及びそれ以降
- Red Hat Enterprise Linux 3 Update 9 及びそれ以降
# rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' kernel
表14.1 para-virtualized ドライバー用のサポートされているゲストカーネルアーキテクチャ
カーネルアーキテクチャ | Red Hat Enterprise Linux 3 | Red Hat Enterprise Linux 4 | Red Hat Enterprise Linux 5 |
---|---|---|---|
athlon | サポート有り (AMD) | ||
athlon-SMP | サポート有り (AMD) | ||
i32e | サポート有り (Intel) | ||
i686 | サポート有り (Intel) | サポート有り | サポート有り |
i686-PAE | サポート有り | ||
i686-SMP | サポート有り (Intel) | サポート有り | |
i686-HUGEMEM | サポート有り (Intel) | サポート有り | |
x86_64 | サポート有り (AMD) | サポート有り | サポート有り |
x86_64-SMP | サポート有り (AMD) | サポート有り | |
x86_64-LARGESMP | サポート有り | ||
Itanium (IA64) | サポート有り |
重要
注記
# rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' kernel
kernel-PAE-2.6.18-53.1.4.el5.i686
Para-virtualized デバイスドライバーは、ゲストオペレーティングシステムの 正常なインストールの後で、インストールできます。これらのドライバーを インストールできるようになるには、稼働中のホストとゲストが必要です。
注記
GRUB
) を 含むディスク、又はカーネルの initrd
イメージを含むディスクでは出来ません。 /boot
のディレクトリやパーティションを含んでいるディスクはいずれも、 para-virtualized ブロックデバイスドライバーを使用できないと言うことになります。
Red Hat Enterprise Linux 3 ベースのゲストオペレーティングシステムには、 以下の表で見えるように、プロセッサ特有のカーネルと para-virtualized ドライバー RPM を 使用しなければなりません。適合する para-virtualized ドライバーパッケージをインストール できないと、xen-pci-platform
モジュールのロードは失敗します。
表14.2 Intel プロセッサ用の Red Hat Enterprise Linux 3 上で para-virtualized ドライバーを使用するゲストの為の必須ホストカーネルアーキテクチャ
ゲストカーネルタイプ | 必須のホストカーネルタイプ |
---|---|
ia32e (UP と SMP) | x86_64 |
i686 | i686 |
i686-SMP | i686 |
i686-HUGEMEM | i686 |
表14.3 AMD プロセッサ用の Red Hat Enterprise Linux 3 上で para-virtualized ドライバーを使用するゲストの為の必須ホストカーネルアーキテクチャ
ゲストカーネルタイプ | 必須のホストカーネルタイプ |
---|---|
athlon | i686 |
athlon-SMP | i686 |
x86_64 | x86_64 |
x86_64-SMP | x86_64 |
14.3. Para-virtualized ドライバーのインストール
重要
注記
MBR
と ブートローダ(GRUB
)を収納 しているディスクのため、及び /boot
パーティションのために para-virtualized ドライバーを使用します。このパーティションは非常に小さいもので十分です。 その理由は、それが /boot
パーティションを保持するだけの十分な 容量があればいいからです。
/
、 /usr
)、又は論理ボリューム用に使用します。
/boot
パーティションへのアクセス のみが仮想化ブロックデバイスドライバーを使用することになります。
14.3.1. 共通のインストール手順
- 使用するハードウェアアーキテクチャ用の RPM をゲストオペレーティングシステム内の 適切な位置にコピーします。ユーザーのホームディレクトリで十分です。自分が 必要とする RPM が不明な場合は、「Para-virtualization の制約とサポート」 にある表で確認して 下さい。
rpm
コマンド、又はyum
コマンドを 使用して、パッケージをインストールします。rpm
ユーティリティは 以下の 4つの新規カーネルモジュールを/lib/modules/[%kversion][%kvariant]/extra/xenpv/%release
にインストールします:- PCI インフラストラクチャモジュール、
xen-platform-pci.ko
- バルーニングモジュール、
xen-balloon.ko
- 仮想ブロックデバイスモジュール、
xen-vbd.ko
- 及び、仮想ネットワークデバイスモジュール、
xen.vnif.ko
.
- ゲストオペレーティングシステムが para-virtualized ドライバーの自動ロードを サポートしていない場合(例えば、Red Hat Enterprise Linux 3)、必要な ポストインストールステップを実行して、そのドライバーをオペレーティングシステム 特有の場所にコピーします。
- ゲストオペレーティングシステムをシャットダウン
- ゲストオペレーティングシステムの設定ファイルをホスト上で再設定して、インストール済の para-virtualized ドライバーを使用します。
- ネットワークデバイス用の “type=ioemu” エントリを削除します。
- para-virtualized ブロックデバイスドライバー用に使用したい追加のストレージ エンティティを追加します。
- ゲストを再起動します:
# virsh start YourGuestName
ここで、YourGuestName はゲストオペレーティング システムの名前です。 - ゲストネットワークを再設定します。
14.3.2. Red Hat Enterprise Linux 3 で Para-virtualized ドライバーのインストールと 設定
注記
para-virtualized ドライバーを使用した Red Hat Enterprise Linux 3 ゲストのインストールに必要な手順を以下に示します。
- 使用しているハードウェアアーキテクチャとカーネル変種用の
kmod-xenpv
rpm を ゲストオペレーティングシステムにコピーします。 rpm
ユーティリティを使用して RPM パッケージをインストール します。使用するゲストオペレーティングシステムの変種とアーキテクチャに必要なパッケージを 正しく識別していることを確認して下さい。[root@rhel3]# rpm -ivh kmod-xenpv*
- 以下のコマンドを実行して正しい自動化した para-virtualized ドライバーのロードを 有効にします。%kvariant は、それに対して para-virtualized ドライバーがビルドされたカーネル変種であり、%release は その para-virtualized ドライバーのリリースバージョンに相当します。
[root@rhel3]# mkdir -p /lib/modules/'uname -r'/extra/xenpv [root@rhel3]# cp -R /lib/modules/2.4.21-52.EL[%kvariant]/extra/xenpv/%release \ /lib/modules/'uname -r'/extra/xenpv [root@rhel3]# cd /lib/modules/'uname -r'/extra/xenpv/%release [root@rhel3]# insmod xen-platform-pci.o [root@rhel3]# insmod xen-balloon.o` [root@rhel3]# insmod xen-vbd.o [root@rhel3]# insmod xen-vnif.o
注記
Red Hat Enterprise Linux 3 が MODVERSIONS を 有効にしているため、バイナリドライバーモジュールをインストールする時点で、insmod
が警告を生成します。これらの警告は無視 できるものです。 /etc/modules.conf
を確証して、以下のようなeth0
用のエイリアスがあることを 確認します。複数のインターフェイスを設定する予定の場合は、各インターフェイス毎に追加の 行を加えます。alias eth0 xen-vnif
/etc/rc.local
を編集して行を追加します:insmod /lib/modules/'uname -r'/extra/xenpv/%release/xen-vbd.o
注記
“%release” を 実際の para-virtualized ドライバーのリリースバージョン(例えば、0.1-5.el)で 入れ替えます。para-virtualized ドライバーRPM パッケージを更新する場合は、そのリリースバージョンを 適切なバージョンに更新することを確認して下さい。- 仮想マシンをシャットダウンします(ゲスト内で “
#shutdown -h now
” を使用)。 - 以下のようにして、
/etc/xen/YourGuestsName
内のゲスト設定ファイルを編集します:- “
vif=
” エントリから “type=ioemu
” エントリを削除します。 - 追加のディスクパーティション、ボリューム、又は LUN をゲストに追加して para-virtualized (
xen-vbd
) ゲストドライバー経由で それらにアクセスできるようにします。 - 各追加の物理デバイス、LUN、パーティション、又はボリューム用に、以下に示した ようなエントリを、ゲスト設定ファイル内の “
disk=
” セクションに追加します。オリジナルの “disk=
” エントリも 以下のエントリに似ているかも知れません。disk = [ "file:/var/lib/libvirt/images/rhel3_64_fv.dsk,hda,w"]
- 追加の物理デバイス、LUN、パーティション、又はボリュームを追加すると、 XML 設定ファイル内の para-virtualized ドライバーのエントリは以下にある エントリに似たものになります。
disk = [ "file:/var/lib/libvirt/images/rhel3_64_fv.dsk,hda,w", "tap:aio:/var/lib/libvirt/images/UserStorage.dsk,xvda,w" ]
注記
ファイルベースのイメージが使用されている場合、para-virtualized デバイス用に “tap:aio
” を使用します。
virsh
コマンドを使用して仮想マシンをブートします:# virsh start
YourGuestName
警告
weak-modules
と modversions
のサポートは Red Hat Enterprise Linux 3 で提供されていないため、 para-virtualized ドライバーはシステムへの自動的追加とロードはされません。 モジュールを挿入するには、以下のコマンドを実行します。
insmod xen-vbd.ko
xen-vbd
を使用するブロック デバイス用に特殊ファイルの手動作成が必要になります。以下の手順が、para-virtualized ブロックデバイスの作成法と登録の案内となります。
#!/bin/sh module="xvd" mode="664" major=`awk "\\$2==\"$module\" {print \\$1}" /proc/devices` # < mknod for as many or few partitions on xvd disk attached to FV guest > # change/add xvda to xvdb, xvbd, etc. for 2nd, 3rd, etc., disk added in # in xen config file, respectively. mknod /dev/xvdb b $major 0 mknod /dev/xvdb1 b $major 1 mknod /dev/xvdb2 b $major 2 chgrp disk /dev/xvd* chmod $mode /dev/xvd*
# mknod /dev/xvdc b $major 16 # mknod /dev/xvdc1 b $major 17
# mknod /dev/xvdd b $major 32 # mknod /dev/xvdd1 b $major 33
[root@rhel3]# cat /proc/partitions major minor #blocks name 3 0 10485760 hda 3 1 104391 hda1 3 2 10377990 hda2 202 0 64000 xvdb 202 1 32000 xvdb1 202 2 32000 xvdb2 253 0 8257536 dm-0 253 1 2031616 dm-1
xvdb
” がシステムに利用可能であることが判ります。
- ブロックデバイスイメージをマウントするディレクトリを作成します。
[root@rhel3]# mkdir /mnt/pvdisk_p1 [root@rhel3]# mkdir /mnt/pvdisk_p2
- デバイスを新しいフォルダにマウントします。
[root@rhel3]# mount /dev/xvdb1 /mnt/pvdisk_p1 [root@rhel3]# mount /dev/xvdb2 /mnt/pvdisk_p2
- デバイスが正常にマウントされたことを確認します。
[root@rhel3]# df /mnt/pvdisk_p1 Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvdb1 32000 15 31985 1% /mnt/pvdisk_p1
- ブートシーケンス中にデバイスがマウントされるようにゲスト内で
/etc/fstab
ファイルを更新します。以下の行を追加して下さい:/dev/xvdb1 /mnt/pvdisk_p1 ext3 defaults 1 2 /dev/xvdb2 /mnt/pvdisk_p2 ext3 defaults 1 2
注記
dom0
) を使用して 以下に見えるように、"noapic
" パラメータは仮想ゲストの /boot/grub/grub.conf
エントリ内のカーネルブート行に追加 される必要があります。ご使用のアーキテクチャとカーネルバージョンは異なるかも 知れないことを忘れないで下さい。
kernel /vmlinuz-2.6.9-67.EL ro root=/dev/VolGroup00/rhel4_x86_64 rhgb noapic
重要
14.3.3. Red Hat Enterprise Linux 4 上で Para-virtualized ドライバーのインストールと 設定
注記
para-virtualized ドライバーを使用した Red Hat Enterprise Linux 4 ゲストのインストールに必要な手順を以下に示します。
- 使用しているハードウェアアーキテクチャとカーネル変種用の
kmod-xenpv
、modules-init-tools
、及びmodversions
の RPM 群を ゲストオペレーティングシステムにコピーします。 rpm
ユーティリティを使用して RPM パッケージ群を インストールします。使用するゲストオペレーティングシステムの変種とアーキテクチャに必要な パッケージを正しく識別していることを確認して下さい。このパッケージには、更新した module-init-tools が必要となり、これは Red Hat Enterprise Linux 4-6-z カーネル、又はそれ以降で利用できます。[root@rhel4]# rpm -ivh modversions [root@rhel4]# rpm -Uvh module-init-tools [root@rhel4]# rpm -ivh kmod-xenpv*
注記
UP、SMP、Hugemem、及びアーキテクチャ用に異なるパッケージがあります。 そのため、ご使用のカーネルに適した RPM を持っていることを確認して下さい。cat /etc/modules.conf
を実行して、以下のようなeth0
用のエイリアスがあることを 確認します。複数インターフェイス設定を計画している場合は、各インターフェイス毎に 追加の行を加えます。以下のエントリに似ていない場合は変更して下さい。alias eth0 xen-vnif
- 仮想マシンをシャットダウンします(ゲスト内で “
#shutdown -h now
” を使用)。 - 以下のようにして
/etc/xen/YourGuestsName
内の ゲスト設定ファイルを編集します:- “
vif=
” エントリから “type=ioemu
” エントリを削除します。 - 追加のディスクパーティション、ボリューム、又は LUN をゲストに追加して para-virtualized (
xen-vbd
) ゲストドライバー経由で それらにアクセスできるようにします。 - 各追加の物理デバイス、LUN、パーティション、又はボリューム用に、以下に示した ようなエントリを、ゲスト設定ファイル内の “
disk=
” セクションに追加します。オリジナルの “disk=
” エントリも 以下のエントリに似ているかも知れません。disk = [ "file:/var/lib/libvirt/images/rhel4_64_fv.dsk,hda,w"]
- 追加の物理デバイス、LUN、パーティション、又はボリュームを追加すると、 XML 設定ファイル内の para-virtualized ドライバーのエントリは以下にある エントリに似たものになります。
disk = [ "file:/var/lib/libvirt/images/rhel3_64_fv.dsk,hda,w", "tap:aio:/var/lib/libvirt/images/UserStorage.dsk,xvda,w" ]
注記
ファイルベースのイメージが使用されている場合、para-virtualized デバイスに “tap:aio
” を使用します。
virsh
コマンドを使用して仮想マシンをブートします:# virsh start
YourGuestName
kudzu
がユーザーに "Realtek ネットワークデバイスを維持するか、削除する" 、及び "xen-bridge デバイスを設定する" の選択を尋ねてきます。 xen-bridge
は設定して、Realtek ネットワークデバイスは 削除すべきです。
注記
dom0
) を使用して 以下に見えるように、"noapic
" パラメータは仮想ゲストの /boot/grub/grub.conf
エントリ内のカーネルブート行に追加 される必要があります。ご使用のアーキテクチャとカーネルバージョンは異なるかも 知れないことを忘れないで下さい。
kernel /vmlinuz-2.6.9-67.EL ro root=/dev/VolGroup00/rhel4_x86_64 rhgb noapic
[root@rhel4]# cat /proc/partitions major minor #blocks name 3 0 10485760 hda 3 1 104391 hda1 3 2 10377990 hda2 202 0 64000 xvdb 202 1 32000 xvdb1 202 2 32000 xvdb2 253 0 8257536 dm-0 253 1 2031616 dm-1
xvdb
” がシステムに利用可能であることが判ります。
- ブロックデバイスイメージをマウントするディレクトリを作成します。
[root@rhel4]# mkdir /mnt/pvdisk_p1 [root@rhel4]# mkdir /mnt/pvdisk_p2
- デバイスを新しいフォルダにマウントします。
[root@rhel4]# mount /dev/xvdb1 /mnt/pvdisk_p1 [root@rhel4]# mount /dev/xvdb2 /mnt/pvdisk_p2
- デバイスが正常にマウントされたことを確認します。
[root@rhel4]# df /mnt/pvdisk_p1 Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvdb1 32000 15 31985 1% /mnt/pvdisk_p1
- ブートシーケンス中にデバイスがマウントされるようにゲスト内で
/etc/fstab
ファイルを 更新します。以下の行を追加して下さい:/dev/xvdb1 /mnt/pvdisk_p1 ext3 defaults 1 2 /dev/xvdb2 /mnt/pvdisk_p2 ext3 defaults 1 2
注記
重要
注記
xen-vbd
ドライバーは自動的にロードしない可能性が あります。以下のコマンドで %release を para-virtualized ドライバー の正しいリリースバージョンで入れ替えて、ゲスト上で実行して 下さい。
# insmod /lib/modules/'uname -r'/weak-updates/xenpv/%release/xen-vbd.ko
14.3.4. Red Hat Enterprise Linux 5 上で Para-virtualized ドライバーのインストールと 設定
注記
para-virtualized ドライバーを使用した Red Hat Enterprise Linux 5 ゲストのインストールに必要な手順を以下に示します。
- 使用しているハードウェアアーキテクチャとカーネル変種用の
kmod-xenpv
パッケージを ゲストオペレーティングシステムにコピーします。 yum
コマンドを使用してパッケージをインストールします。[root@rhel5]# yum install kmod-xenpv*
- 以下のコマンドを使用して、ゲストオペレーティングシステム内の自動ハードウェア 検出を無効にします。
[root@rhel5]# chkconfig kudzu off
cat /etc/modules.conf
を実行することにより、以下のようなeth0
用のエイリアスがあることを 確認します。複数のインターフェイスを設定する予定の場合は、各インターフェイス毎に追加の 行を加えます。以下のエントリのように見えない場合は、変更して下さい。alias eth0 xen-vnif
- 仮想マシンをシャットダウンします(ゲスト内で “
#shutdown -h now
” を使用)。 - 以下のようにして、
/etc/xen/<Your GuestsName>
内のゲスト設定ファイルを編集します。- “
vif=
” エントリから “type=ioemu
” エントリを削除します。 - 追加のディスクパーティション、ボリューム、あるいは LUN をゲストに追加して、 para-virtualized (
xen-vbd
) ディスクドライバー経由で それらにアクセスできるようにします。 - 各追加の物理デバイス、LUN、パーティション、又はボリューム用に、以下に示した ようなエントリを、ゲスト設定ファイル内の “
disk=
” セクションに追加します。オリジナルの “disk=
” エントリも 以下のエントリに似ているかも知れません。disk = [ "file:/var/lib/libvirt/images/rhel4_64_fv.dsk,hda,w"]
- 追加の物理デバイス、LUN、パーティション、又はボリュームを追加すると、 XML 設定ファイル内の para-virtualized ドライバーのエントリは以下にある エントリに似たものになります。
disk = [ "file:/var/lib/libvirt/images/rhel3_64_fv.dsk,hda,w", "tap:aio:/var/lib/libvirt/images/UserStorage.dsk,xvda,w" ]
注記
ファイルベースのイメージが使用されている場合は、para-virtualized デバイス用に “tap:aio
” を使用します。
virsh
コマンドを使用して仮想マシンをブートします:# virsh start
YourGuestName
[root@rhel5]# ifconfig eth0
[root@rhel5]# cat /proc/partitions major minor #blocks name 3 0 10485760 hda 3 1 104391 hda1 3 2 10377990 hda2 202 0 64000 xvdb 202 1 32000 xvdb1 202 2 32000 xvdb2 253 0 8257536 dm-0 253 1 2031616 dm-1
xvdb
” がシステムに利用可能であることが判ります。
- ディレクトリを作成してブロックデバイスイメージのマウント用とします。
[root@rhel5]# mkdir /mnt/pvdisk_p1 [root@rhel5]# mkdir /mnt/pvdisk_p2
- デバイスを新しいフォルダにマウントします。
[root@rhel5]# mount /dev/xvdb1 /mnt/pvdisk_p1 [root@rhel5]# mount /dev/xvdb2 /mnt/pvdisk_p2
- デバイスが正常にマウントされたことを確認します。
[root@rhel5]# df /mnt/pvdisk_p1 Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvdb1 32000 15 31985 1% /mnt/pvdisk_p1
- ゲスト内で
/etc/fstab
ファイルを更新して、ブートシーケンス中に デバイスをマウントするようにします。以下の行を追加して下さい:/dev/xvdb1 /mnt/pvdisk_p1 ext3 defaults 1 2 /dev/xvdb2 /mnt/pvdisk_p2 ext3 defaults 1 2
注記
dom0
) を使用して 以下に見えるように、"noapic
" パラメータは仮想ゲストの /boot/grub/grub.conf
エントリ内のカーネルブート行に追加 される必要があります。ご使用のアーキテクチャとカーネルバージョンは異なるかも 知れないことを忘れないで下さい。
kernel /vmlinuz-2.6.9-67.EL ro root=/dev/VolGroup00/rhel4_x86_64 rhgb noapic
14.4. Para-virtualized ネットワークドライバーの設定
virt-manager
内で、ゲスト用のコンソールウィンドウを開いて、root
としてログインします。- Red Hat Enterprise Linux 4 では、ファイル
/etc/modprobe.conf
が “alias eth0 xen-vnif
” を含んでいることを 確認します。# cat /etc/modprobe.conf alias eth0 xen-vnif
eth0
の現在の設定を表示するには、“# ifconfig eth0
” を 実行します。デバイスが存在しないことを示すエラーが出た場合は、「para-virtualized ドライバーを手動でロードする」 に 示してある手順で、手動でモジュールをロードする必要があります。ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:00:00:6A:27:3A BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:630150 errors:0 dropped:0 overruns:0 frame:0 TX packets:9 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:109336431 (104.2 MiB) TX bytes:846 (846.0 b)
- コマンド、 “
# system-config-network
” を使用して ネットワーク設定ユーティリティ(NetworkManager) を開始します。 “「進む」(Forward)” ボタンをクリックしてネットワーク 設定を開始します。 - 「Xen 仮想イーサネットカード(eth0) の作成」(Xen Virtual Ethernet Card (eth0)) エントリを選択します。そして、「進む」(Forward) を クリックします。必要に応じてネットワークを設定します。
- 「適用」(Apply) ボタンを押して設定を完了します。
- 「アクティベート」(Activate) ボタンを押して、 新しい設定を適用し、ネットワークを再開始します。
- そうすると、IP アドレスが割り当てられた新規のネットワークインターフェイスが 見えるはずです。
ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:16:3E:49:E4:E0 inet addr:192.168.78.180 Bcast:192.168.79.255 Mask:255.255.252.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:630150 errors:0 dropped:0 overruns:0 frame:0 TX packets:501209 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:109336431 (104.2 MiB) TX bytes:46265452 (44.1 MiB)
14.5. 追加の Para-virtualized ハードウェア設定
14.5.1. 仮想化ネットワークインターフェイス
/etc/xen/YourGuestName
内の YourGuestName
を 使用するゲスト名で入れ替えることで、ゲスト設定ファイルを編集します。
vif = [ "mac=00:16:3e:2e:c5:a9,bridge=xenbr0" ]
vif=
” セクションに追加します。 以下に似たものになります。
vif = [ "mac=00:16:3e:2e:c5:a9,bridge=xenbr0", "mac=00:16:3e:2f:d5:a9,bridge=xenbr0" ]
# echo 'import virtinst.util ; print virtinst.util.randomMAC()' | python
/etc/modules.conf
か、あるいは Red Hat Enterprise Linux 4 及び Red Hat Enterprise Linux 5 では /etc/modprobe.conf
に更新が追加されていることを確認します。追加した 新規のインターフェイス用に新しいエイリアスを加えます。
alias eth1 xen-vnif
# ifconfig eth1
redhat-config-network
を使用して、又は 、 Red Hat Enterprise Linux 4 と Red Hat Enterprise Linux 5 上では system-config-network
を使用してネットワークインターフェイスを設定します。
14.5.2. 仮想ストレージデバイス
/etc/xen/YourGuestName
で YourGuestName
を 使用するゲスト名で入れ替えることで、ゲストの設定ファイルを編集します。オリジナルのエントリは 以下に似ているでしょう。
disk = [ "file:/var/lib/libvirt/images/rhel5_64_fv.dsk,hda,w"]
disk=
” パラメータに加えます。para-virtualized ドライバーを使用するストレージエントリは以下のエントリに似ています。“tap:aio
” パラメータは hypervisor に対して para-virtualized ドライバーを使用するように指示します。
disk = [ "file:/var/lib/libvirt/images/rhel5_64_fv.dsk,hda,w", "tap:aio:/var/lib/libvirt/images/UserStorage1.dsk,xvda,w" ]
disk=
” セクションに追加します。
注記
xvd
デバイス用の文字を進展する必要があります。これは、 2つめのストレージエンティティの為には、xvda
ではなく、 xvdb
となります。
disk = [ "file:/var/lib/libvirt/images/rhel5_64_fv.dsk,hda,w", "tap:aio:/var/lib/libvirt/images/UserStorage1.dsk,xvda,w", "tap:aio:/var/lib/libvirt/images/UserStorage2.dsk,xvdb,w" ]
# cat /proc/partitions major minor #blocks name 3 0 10485760 hda 3 1 104391 hda1 3 2 10377990 hda2 202 0 64000 xvda 202 1 64000 xvdb 253 0 8257536 dm-0 253 1 2031616 dm-1
xvdb
” はシステムに利用可能です。
/etc/fstab
を更新することにより、 ブート時にデバイスとパーティションがマウントされます。
# mkdir /mnt/pvdisk_xvda # mkdir /mnt/pvdisk_xvdb # mount /dev/xvda /mnt/pvdisk_xvda # mount /dev/xvdb /mnt/pvdisk_xvdb # df /mnt Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvda 64000 15 63985 1% /mnt/pvdisk_xvda /dev/xvdb 64000 15 63985 1% /mnt/pvdisk_xvdb
第15章 KVM Para-virtualized ドライバー
重要
- Windows XP,
- Windows Server 2003,
- Windows Vista,
- Windows Server 2008.
15.1. KVM Windows para-virtualized ドライバーのインストール
- ネットワーク上の インストールファイルをゲストにアクセス可能にする。
- ドライバーインストールディスクの .iso ファイルの 仮想化 CD-ROM デバイスを 使用する、あるいは、
- 仮想化したフロッピィデバイスを 使用して、ブート時にドライバーをインストールする (Windows ゲスト用)。
ドライバーをダウンロード
yum
コマンドを使用して、virtio-win パッケージをダウンロードします(Red Hat Enterprise Linux Supplementary チャンネル内)。# yum install virtio-win
ドライバーは Red Hat Enterprise Linux Supplementary ディスク、又は、Microsoft ( windowsservercatalog.com) から入手することが出来ます。Red Hat Enterprise Virtualization Hypervisor 5.4 と Red Hat Enterprise Linux 5.4 は同じコードベースを基にしていることに注意して下さい。virtio-win パッケージは CD-ROM イメージ(virtio-win.iso
ファイル)を/usr/share/virtio-win/
ディレクトリ内にインストールします。para-virtualized ドライバーのインストール
デバイスを添付や修正して para-virtualized ドライバーを使用する前に、 ゲスト上にドライバーをインストールすることが推奨されます。root ファイルシステムを格納しているブロックデバイス、又はゲストのブートに必要となる 他のブロックデバイスには、ドライバーはデバイスが修正される前にインストールされなければ なりません。ゲスト上にドライバーがインストールされていなくて、ドライバーが virtio ドライバーに セットされている場合は、ゲストはブートしません。
手順15.1「Windows ゲスト用に virt-manager
を使用して CD-ROM イメージを マウント」 に従って、 virt-manager
を使用して、CD-ROM イメージを追加します。
手順15.1 Windows ゲスト用に virt-manager
を使用して CD-ROM イメージを マウント
virt-manager
を開いて、仮想マシンのリストから 使用する仮想化ゲストを選択して、詳細 ボタンを クリックします。- 詳細 パネル内の 追加 ボタンをクリック します。
- これが、新規デバイス追加のウィザードを開きます。ドロップダウンメニューから ストレージデバイス を選択して、それから 進む をクリックします。
- ファイル (ディスクイメージ) オプションを選択して、 para-virtualized ドライバーの .iso ファイルの場所をセットします。
yum
を使用して para-virtualized ドライバーパッケージをインストールした場合、 .iso ファイルは/usr/share/xenpv-win
です。ドライバーが物理 CD 内に格納されている場合は、通常のディスクパーティション オプションを使用します。デバイスタイプ を IDE cdrom にセットして 進む をクリックして継続します。 - ゲストが開始されると、ディスクが割り当てられてゲスト用に使用可能になります。 完了 をクリックして、ウィザードを閉じるか、又は 間違えた場合は戻ります。
この手続きは Windows のインストール時に para-virtualized ドライバーの インストールをします。
- 一度限りのメニューを使用して Windows VM を初めてインストールしたら、
viostor.vfd
をフロッピィとして添付します。Windows Server 2003
Windows がサードパーティドライバー用に F6 を押すように催促したら、 それを押して画面上の指示に従います。Windows Server 2008
インストーラがドライバーを催促した時には、 Load Driver をクリックして、 インストーラをドライブ A: にポイントし、使用中のゲスト OS と アーキテクチャに適合する ドライバーを選択します。
仮想化した IDE ドライバーの代わりに virtio
ドライバーを 使用するためにゲストに付けられた既存のハードディスクドライバーを修正します。 この例は、libvirt 設定ファイルを編集します。別の方法として、virt-manager
、virsh attach-disk
、あるいは、virsh attach-interface
が、 para-virtualized ドライバーを使用する新規デバイスを追加 できます。新規デバイス用に KVM para-virtualized ドライバーを使用する
- 仮想化した IDE ドライバーを使用したファイルベースのブロックデバイスを以下に示します。 これは、para-virtualized ドライバーを使用しない仮想化ゲストの標準的なエントリです。
<disk type='file' device='disk'> <source file='/var/lib/libvirt/images/disk1.img'/> <target dev='hda' bus='ide'/> </disk>
- bus= エントリを
virtio
に 変更することにより、para-virtualized デバイスを使用するためにエントリを変更します。<disk type='file' device='disk'> <source file='/var/lib/libvirt/images/disk1.img'/> <target dev='hda' bus='virtio'/> </disk>
この手続きは、virt-manager
で、KVM para-virtualized ドライバーを使用した新規デバイスの作成を示しています。
virsh attach-disk
か virsh attach-interface
のコマンドが使用できます。
重要
virt-manager
内のゲスト名をダブルクリックして 仮想化ゲストを開きます。- ハードウェア タブを開きます。
- ハードウェアを追加 をクリックします。
- 仮想ハードウェアの追加タブで、デバイスのタイプに ストレージ 又は ネットワーク を選択します。
- 新規のディスクデバイスストレージデバイスか、又はファイルベースイメージを選択します。Virtio Disk を デバイスタイプ として選び、進む をクリックします。
- 新規のネットワークデバイス仮想ネットワーク 又は 共有物理デバイス を 選択します。デバイスタイプ として virtio を 選択して、進む をクリックします。
- 完了 をクリックしてデバイスを保存します。
- ゲストをリブートします。デバイスは Windows ゲストが再スタートするまで 認識されないかも知れません。
パート IV. 管理
仮想化システムの管理
第16章 xend
を使用したゲストの管理
/etc/xen/xend-config.sxp
を編集することにより、操作パラメータを 指定する必要があります。xend-config.sxp
設定ファイルで 有効、又は無効にできるパラメータを以下に示します:
表16.1 xend の設定パラメータ
項目 | 説明 |
---|---|
(console-limit)
|
コンソールサーバーのメモリーバッファの限度を決定し、その限度をドメイン単位ベースで割り当てます。
|
(min-mem)
|
domain0 用に予約される最小限のメガバイト数を決定します(0 を入力すると値は変化しません)。
|
(dom0-cpus)
|
domain0 で使用する CPU の数量を決定します(デフォルトで、最低1つの CPU が割り当てられます)
|
(enable-dump)
|
これが有効になっている場合にクラッシュが発生すると、Xen はダンプファイルを 作成します(デフォルトは 0)。
|
(external-migration-tool)
|
外部デバイスの移行を処理するスクリプト、又はアプリケーションを決定します。スクリプトは
etc/xen/scripts/external-device-migrate ディレクトリにある必要があります。
|
(logfile)
|
ログファイルの場所を決定します (デフォルトでは、
/var/log/xend.log )。
|
(loglevel)
|
ログモードの値をフィルターにかけます: DEBUG, INFO, WARNING, ERROR, CRITICAL(デフォルトは DEBUG)。
|
(network-script)
|
ネットワーク環境を有効にするスクリプトを決定します。スクリプトは
etc/xen/scripts ディレクトリに存在する必要があります。
|
(xend-http-server)
|
http ストリームパケット管理サーバーを有効にします (デフォルトは 「no」)。
|
(xend-unix-server)
|
UNIX ドメインソケットサーバーを有効にします。ソケットサーバーは、低レベルのネットワーク接続を処理し、来信の接続を受理したり拒否したりする通信エンドポイントです。デフォルト値は 「yes」にセットされています。
|
(xend-relocation-server)
|
相互マシン移行用に移転サーバーを有効にします (デフォルトは 「no」)。
|
(xend-unix-path)
| xend-unix-server コマンドがデータを出力する場所を決定します (デフォルトでは、var/lib/xend/xend-socket )。
|
(xend-port)
|
http 管理サーバーが使用するポートを決定します (デフォルトは 8000)。
|
(xend-relocation-port)
|
移転サーバーが使用するポートを決定します (デフォルトは 8002)。
|
(xend-relocation-address)
|
移行が許可されるホストアドレスを決定します。デフォルト値は、
xend-address の値です。
|
(xend-address)
|
ドメインソケットサーバーのバインド先のアドレスを決定します。デフォルト値は 全ての接続を許可します。
|
service xend start
service xend stop
service xend restart
service xend status
注記
chkconfig
コマンドを使用して、xend
を initscript
に追加します。
chkconfig --level 345 xend
xend
は、ランレベル 3、4、及び 5 で開始します。
第17章 KVM ゲストのタイミング管理
- クロックは正確な時刻との同期から外れて、セッションを無効にしたり ネットワークに影響したりします。
- 遅くれるクロックを持つゲストは移行で問題を持つ可能性があります。
重要
ntpd
サービスを有効にして下さい:
# service ntpd start
# chkconfig ntpd on
ntpd
サービスを使用すると、全ての ケースでクロックのずれの効果を最低限に抑えることができるはずです。
constant_tsc
フラグが存在する場合は、 使用中の CPU が不変タイムスタンプカウンタを持っていることになります。 その CPU が constant_tsc
フラグを持つか どうかを判定するには、以下のコマンドを実行します:
$ cat /proc/cpuinfo | grep constant_tsc
constant_tsc
ビットを持つことになります。出力がない場合は以下の案内に 従ってください。
不変タイムスタンプカウンタを持たないシステムは追加の設定を必要とします。 パワーマネジメント機能は正確な時刻維持を邪魔するため、ゲスト用にはそれを 無効にして KVM での時刻維持を保護します。
重要
constant_tsc
ビットが無い場合、 全てのパワーマネジメント機能 (BZ#513138) を無効にして下さい。 各システムはいくつかのタイマーで時刻を維持しています。TSC はホスト上で不安定 であり、時には cpufreq
変更、deep C 状態、又は より速い TSC を持つホストへの移行により影響を受けます。 カーネルの deep C 状態 を防止するには、ホスト上で grub.conf
ファイル内のカーネルブートオプションに "processor.max_cstate=1
" を追加します:
term Red Hat Enterprise Linux Server (2.6.18-159.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-159.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet processor.max_cstate=1
constant_tsc
の無いホスト上でのみ)cpufreq
を 無効にするには、/etc/sysconfig/cpuspeed
設定ファイルの編集により、MIN_SPEED
変数と MAX_SPEED
変数を利用できる最高の周波数に変更します。 その有効な限界は /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies
ファイル内で見ることができます。
特定の Red Hat Enterprise Linux ゲストには、追加のカーネルパラメータが 必要になります。これらのパラメータは、ゲストの /boot/grub/grub.conf ファイル内の /kernel 行の末尾にそれら自身を追記することによりセットできます。
Red Hat Enterprise Linux | その他のゲストカーネルパラメータ |
---|---|
para-virtualized クロックを持つ 5.4 AMD64/Intel 64 | 追加のパラメータは無用です |
para-virtualized クロックを持たない 5.4 AMD64/Intel 64 | divider=10 notsc lpj=n |
para-virtualized クロックを持つ 5.4 x86 | 追加のパラメータは無用です |
para-virtualized クロックを持たない 5.4 x86 | divider=10 clocksource=acpi_pm lpj=n |
5.3 AMD64/Intel 64 | divider=10 notsc |
5.3 x86 | divider=10 clocksource=acpi_pm |
4.8 AMD64/Intel 64 | notsc divider=10 |
4.8 x86 | clock=pmtmr divider=10 |
3.9 AMD64/Intel 64 | 追加のパラメータは無用です |
3.9 x86 | 追加のパラメータは無用です |
Windows は RTC (Real-Time Clock) と TSC (Time Stamp Counter) の両方を 使用します。Windows ゲストには、TSC の代わりに、全ての時刻ソースのために 時刻維持問題を解決する Real-Time Clock を使用します。
boot.ini
ファイルに以下の 行を追加して下さい:
/use pmtimer
第18章 Xen ライブ移行
- オフライン移行はオリジナルホスト上の仮想化ゲストを休止して、それを目的地のホストへと 移動し、それからそのゲストが完全に転送された時点でそれを復帰します。オフライン移行は
virsh migrate
コマンドを使用します。# virsh migrate GuestName libvirtURI
- ライブ移行では、送信元のホスト上でゲストの稼働を維持しながら、ゲストを停止 せずにメモリーの移動を始めます。そのイメージが送信された後で全ての修正済み メモリーページが追跡されて目的地まで送信されます。メモリーは変更のあったページで 更新を受けます。このプロセスはそれが発見的状況に到達するまで継続します。 それは全てのページが正常にコピーされるか、又は送信元の変化が速過ぎて、送信先の ホストが進展できない状態のどちらかです。発見的状況に到達した場合、ゲストは送信元ホストで一時的に休止して、レジスタとバッファが送信されます。レジスタは送信先のホストで ロードされてゲストはそれからその新しいホスト上で復帰します。ゲストがマージ出来ない 場合(ゲストの負荷が超過している場合に発生)、ゲストは一時停止して、それからは代わりに オフライン移行が開始されます。ライブ移行には
virsh migrate
コマンドで--live
オプションを使用します。# virsh migrate--live GuestName libvirtURI
重要
/etc/xen/xend-config.sxp
の 設定ファイルにいくつかの変更が必要になります。 不正確な設定がセキュリティ問題になる可能性があるため、デフォルトでは移行は 無効になっています。移行ポートを開くと権限の無いホストが移行を開始したり、移行ポートに 接続したりできるようになります。移行要求用に認証と権限授与が設定されておらず、唯一の 制御メカニズムはホスト名と IP アドレスを基にしています。移行ポートが無許可のホストに アクセスされないように特別な注意が必要です。
重要
/etc/xen/xend-config.sxp
内で以下のエントリを修正して、 移行を有効にします。必要であれば値を修正して、以下のパラメータの前にあるコメント (#
マーク)を削除します。
(xend-relocation-server yes)
- 移行を無効にするデフォルト値は、
no
です。xend-relocation-server
の値をyes
に 変更して移行を有効にします。 (xend-relocation-port 8002)
xend-relocation-server
がyes
に セットされている場合、このパラメータ、(xend-relocation-port)
、は ポートxend
が移動インターフェイスの 為に使用されるべきことを指定します。この変数のデフォルト値は ほとんどのインストールで機能するはずです。この値を 変更する場合は、移動サーバー上で未使用のポートを使用することを確認して下さい。xend-relocation-port
パラメータでセットされたポートは両方の システムで開かれる必要があります。(xend-relocation-address '')
(xend-relocation-address)
は、xend-relocation-server
がセットされている場合に、relocation-socket
接続の移行コマンドの為に、xend
がリッスンするアドレスです。デフォルト設定は全てのアクティブインターフェイスをリッスンします。(xend-relocation-address)
パラメータは移行サーバーを制約して特定のインターフェイス だけをリッスンするようにできます。/etc/xen/xend-config.sxp
内のデフォルト値は 空の文字列 (''
) です。この値は単独の有効な IP アドレスで入れ替える必要があります。例えば:(xend-relocation-address '10.0.0.1')
(xend-relocation-hosts-allow '')
(xend-relocation-hosts-allow 'hosts')
パラメータはどのホスト名が移動ポート上で通信できるかを制御します。SSH 又は TLS を使用しているのでなければ、ゲストの仮想メモリーは暗号化の無い通信で 生の状態で転送されます。xend-relocation-hosts-allow
オプションを修正して、移行サーバーへのアクセスを制限します。単独引用句で囲まれた空の文字列で示した上のサンプルのように、その値が空である場合、全ての接続が許可されます。これは、移動サーバーがリッスンするポートとインターフェイスに接続が到着することを想定します。(上述のxend-relocation-port
とxend-relocation-address
も参照して下さい)それ以外の場合は、(xend-relocation-hosts-allow)
パラメータは空白で分離された正規表現の連続でなければなりません。 これらの正規表現の1つに一致する完全修飾ドメイン名、又は IP アドレスを持つ ホストはいずれも受理されます。(xend-relocation-hosts-allow)
属性の サンプル:(xend-relocation-hosts-allow '^localhost$ ^localhost\\.localdomain$')
# service xend restart
18.1. ライブ移行の例
et-virt07
と et-virt08
)。この両方は eth1
をそのデフォルトネットワークインターフェイスとして 使用しているため、xenbr1
をその Xen ネットワーキング ブリッジとして使用しています。この例では、et-virt07
上でローカルに取り付けた SCSI disk (/dev/sdb
) をNFS を 介して共有ストレージ用に使用しています。
移行に使用されるディレクトリを作成してマウントします:
# mkdir /var/lib/libvirt/images # mount /dev/sdb /var/lib/libvirt/images
警告
/var/lib/libvirt/images/
を エキスポートしている場合は、/var/lib/libvirt/images/
のみを エキスポートすることと、/var/lib/xen/
ではないこと を 確認して下さい。/var/lib/xen/
ディレクトリは xend
デーモンと他のツールにより使用されるものであり、このディレクトリを共有すると、 予知できない動作を起こす可能性があります。
# cat /etc/exports /var/lib/libvirt/images *(rw,async,no_root_squash)
# showmount -e et-virt07 Export list for et-virt07: /var/lib/libvirt/images *
ゲストのインストールの為に使用されるサンプルのインストールコマンド:
# virt-install -p -f /var/lib/libvirt/images/testvm1.dsk -s 5 -n\ testvm1 --vnc -r 1024 -l http://example.com/RHEL5-tree\ Server/x86-64/os/ -b xenbr1
仮想化ネットワークブリッジが正しく設定されており、両方のホスト上で同じ名前を 持つことを確認します:
[et-virt08 ~]# brctl show bridge name bridge id STP enabled interfaces xenbr1 8000.feffffffffff no peth1 vif0.1
[et-virt07 ~]# brctl show bridge name bridge id STP enabled interfaces xenbr1 8000.feffffffffff no peth1 vif0.1
[et-virt07 ~]# grep xend-relocation /etc/xen/xend-config.sxp |grep -v '#' (xend-relocation-server yes) (xend-relocation-port 8002) (xend-relocation-address '') (xend-relocation-hosts-allow '')
[et-virt08 ~]# grep xend-relocation /etc/xen/xend-config.sxp |grep -v '#' (xend-relocation-server yes) (xend-relocation-port 8002) (xend-relocation-address '') (xend-relocation-hosts-allow '')
[et-virt07 ~]# lsof -i :8002 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME python 3445 root 14u IPv4 10223 TCP *:teradataordbms (LISTEN)
[et-virt08 ~]# lsof -i :8002 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME python 3252 root 14u IPv4 10901 TCP *:teradataordbms (LISTEN)
[et-virt08 ~]# df /var/lib/libvirt/images Filesystem 1K-blocks Used Available Use% Mounted on et-virt07:/var/lib/libvirt/images 70562400 2379712 64598336 4% /var/lib/libvirt/images
[et-virt08 ~]# file /var/lib/libvirt/images/testvm1.dsk /var/lib/libvirt/images/testvm1.dsk: x86 boot sector; partition 1: ID=0x83, active, starthead 1, startsector 63, 208782 sectors; partition 2: ID=0x8e, starthead 0, startsector 208845, 10265535 sectors, code offset 0x48
[et-virt08 ~]# touch /var/lib/libvirt/images/foo [et-virt08 ~]# rm -f /var/lib/libvirt/images/foo
仮想マシンをスタートします(まだ仮想マシンがオンでない場合):
[et-virt07 ~]# virsh list Id Name State ---------------------------------- Domain-0 running
[et-virt07 ~]# virsh start testvm1 Domain testvm1 started
[et-virt07 ~]# virsh list Id Name State ---------------------------------- Domain-0 running testvm1 blocked
[et-virt07 images]# time virsh save testvm1 testvm1.sav real 0m15.744s user 0m0.188s sys 0m0.044s
[et-virt07 images]# ls -lrt testvm1.sav -rwxr-xr-x 1 root root 1075657716 Jan 12 06:46 testvm1.sav
[et-virt07 images]# virsh list Id Name State ---------------------------------- Domain-0 running
[et-virt07 images]# virsh restore testvm1.sav
[et-virt07 images]# virsh list Id Name State ---------------------------------- Domain-0 running testvm1 blocked
domain-id
のライブ移行を et-virt07
からet-virt08
へ開始します。移行先のホスト名と <domain-id> の部分は、有効な値で入れ替える必要があります。
[et-virt08 ~]# xm migrate --live domain-id
et-virt07
et-virt07
上でシャットダウンされたことを確認します。
[et-virt07 ~]# virsh list Id Name State ---------------------------------- Domain-0 running
et-virt08
に移行されたことを確認します:
[et-virt08 ~]# virsh list Id Name State ---------------------------------- Domain-0 running testvm1 blocked
仮想マシン内で以下のスクリプトを作成して、移行中に日付とホスト名をログ します。このスクリプトはゲストのファイルシステム上で I/O タスクを実行します。
#!/bin/bash while true do touch /var/tmp/$$.log echo `hostname` >> /var/tmp/$$.log echo `date` >> /var/tmp/$$.log cat /var/tmp/$$.log df /var/tmp ls -l /var/tmp/$$.log sleep 3 done
et-virt07
に移行する前に、 それが et-virt08 上で稼働していることを確認します:
[et-virt08 ~]# virsh list Id Name State ---------------------------------- Domain-0 running testvm1 blocked
et-virt07
へのライブ移行を始動します。 time
コマンドを追加すると、移行にかかる時間を見ることができます:
[et-virt08 ~]# xm migrate --live testvm1 et-virt07
# ./doit dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:26:27 EST 2007 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 2983664 2043120 786536 73% / -rw-r--r-- 1 root root 62 Jan 12 02:26 /var/tmp/2279.log dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:26:27 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:26:30 EST 2007 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 2983664 2043120 786536 73% / -rw-r--r-- 1 root root 124 Jan 12 02:26 /var/tmp/2279.log dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:26:27 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:26:30 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:26:33 EST 2007 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 2983664 2043120 786536 73% / -rw-r--r-- 1 root root 186 Jan 12 02:26 /var/tmp/2279.log Fri Jan 12 02:26:45 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:26:48 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:26:51 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:54:57 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:55:00 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:55:03 EST 2007 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 2983664 2043120 786536 73% / -rw-r--r-- 1 root root 744 Jan 12 06:55 /var/tmp/2279.log dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:26:27 EST 2007
et-virt08
上でシャットダウンされたことを確認します:
[et-virt08 ~]# virsh list Id Name State ---------------------------------- Domain-0 running
et-virt07
上でスタートしたことを確認します:
[et-virt07 images]# virsh list Id Name State ---------------------------------- Domain-0 running testvm1 blocked
et-virt07
から et-virt08
へと もう 1度移行サイクルを実行します。et-virt07
から et-virt08
への移行を以下のようにして開始します:
[et-virt07 images]# xm migrate --live testvm1 et-virt08
[et-virt07 images]# virsh list Id Name State ---------------------------------- Domain-0 running
# ./doit dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:57:53 EST 2007 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 2983664 2043120 786536 73% / -rw-r--r-- 1 root root 62 Jan 12 06:57 /var/tmp/2418.log dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:57:53 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:57:56 EST 2007 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 2983664 2043120 786536 73% / -rw-r--r-- 1 root root 124 Jan 12 06:57 /var/tmp/2418.log dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:57:53 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:57:56 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:58:00 EST 2007 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 2983664 2043120 786536 73% / -rw-r--r-- 1 root root 186 Jan 12 06:57 /var/tmp/2418.log dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:57:53 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:57:56 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:58:00 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:30:00 EST 2007 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 2983664 2043120 786536 73% / -rw-r--r-- 1 root root 248 Jan 12 02:30 /var/tmp/2418.log dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:57:53 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:57:56 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:58:00 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:30:00 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:30:03 EST 2007 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 2983664 2043120 786536 73% / -rw-r--r-- 1 root root 310 Jan 12 02:30 /var/tmp/2418.log dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:57:53 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:57:56 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 06:58:00 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:30:00 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:30:03 EST 2007 dhcp78-218.lab.boston.redhat.com Fri Jan 12 02:30:06 EST 2007 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 2983664 2043120 786536 73% / -rw-r--r-- 1 root root 372 Jan 12 02:30 /var/tmp/2418.log
et-virt07
上で完了すると、 et-virt08
上で仮想マシンがスタートしたことを 確認します:
[et-virt08 ~]# virsh list Id Name State ---------------------------------- Domain-0 running testvm1 blocked
[et-virt08 ~]# time virsh migrate --live testvm1 et-virt07 real 0m10.378s user 0m0.068s sys 0m0.052s
18.2. ゲストライブ移行の設定
xm migrate
コマンドを使用)。ライブ移行は 同じコマンドで実行できますが、その場合、xend-config
設定ファイルにいくらかの追加修正が必要になります。この例では、正しい移行を達成する為に 修正すべきエントリを識別しています:
(xend-relocation-server yes)
- このパラメータ用のデフォルトは「No」です。これは移動/移行サーバーを (信頼できるネットワーク上でない限り) 不活性にしておき、ドメイン仮想メモリーは暗号化無しに生のままで交換されます。
(xend-relocation-port 8002)
- このパラメータは、
xend
が移行用に使用するポートを設定します。使用するネットワーク環境がカスタム値を要求しない限りは、この値を使用します。コメント用の シンボルを削除して有効にします。 (xend-relocation-address )
- このパラメータは、ユーザーが
xend-relocation-server
を有効にした後に、移動ソケット接続の為にリッスンするアドレスです。Xen hypervisor は 指定されたインターフェイス上の移行ネットワークトラフィックだけをリッスンします。 (xend-relocation-hosts-allow )
- このパラメータは移動ポートと通信するホストを制御します。その値が空であれば、全ての来信接続は許可されます。これを空白で区切られた正規表現の連続に変える必要があります。例えば:
(xend-relocation-hosts-allow- '^localhost\\.localdomain$' )>
受理される値には、完全修飾ドメイン名、IP アドレス、あるいは空白で隔離した 正規表現が含まれます。
第19章 KVM ライブ移行
- ロードバランシング: あるホストが過大な負荷を持つとき、ゲストは使用度の低いホストへと 移動できます。
- ハードウェアフェイルオーバー:ホスト上のハードウェアデバイスが障害を持つと、 ゲストが安全な場所に移動して、その間にホストは電源を落として修理ができます。
- エネルギー節約:ゲストが他のホストに再分配されると、ホストシステムは 電源を落とすことによりエネルギーを節約し、使用度が低い時にはコストを 低減します。
- 地域的な移行:ゲストは、低遅延度を求めて、又は重大な状況下で 他の地域に移動することができます。
19.1. ライブ移行の要件
移行の要件
- 以下のプロトコルの1つを使用して共有ネットワークストレージにインストール された仮想化ゲスト:
- ファイバーチャンネル
- iSCSI
- NFS
- GFS2
- 同じ更新を持つ同じバージョンの 2つ又はそれ以上の Red Hat Enterprise Linux システム
- 両方のシステムは適切なポートを開いている必要があります。
- 両方のシステムは同一のネットワーク設定を持つ必要があります。全ての ブリッジとネットワーク設定は両方のホスト上で全く同じでなければなりません。
- 共有ストレージは送信元と送信先のシステム上で同じ場所でマウントしなければ なりません。そしてマウントされたディレクトリ名も同一である必要があります。
共有ストレージを設定してその共有ストレージにゲストをインストールします。 共有ストレージに関する案内には、9章共有ストレージと仮想化 を参照して下さい。
19.2. 共有ストレージサンプル: 簡単な移行のための NFS
libvirt イメージディレクトリをエキスポート
デフォルトのイメージディレクトリを/etc/exports
ファイルに 追加します:/var/lib/libvirt/images
*.example.com
(rw,no_root_squash,async)ご自分の環境に適するようにホストパラメータを変更します。NFS の開始
- NFS パッケージがインストールされていない場合は、インストールします:
# yum install nfs
iptables
で NFS 用のポートを開きます。そして NFS を/etc/hosts.allow
ファイルに追加します。- NFS サービスを開始:
# service nfs start
共有ストレージを目的地でマウントします
目的地のシステムで、/var/lib/libvirt/images
ディレクトリをマウントします:# mount
sourceURL
:/var/lib/libvirt/images /var/lib/libvirt/images警告
ゲスト用にどのディレクトリが選択されても、それはホストとゲスト上で全く 同じでなければなりません。これは、全てのタイプの共有ストレージに該当 します。ディレクトリが同じでないと、移行は失敗します。
19.3. virsh を使用した ライブ KVM 移行
virsh
コマンドを使用してゲストを別のホストに移行することが できます。migrate
コマンドは 以下の形式のパラメータを 受け付けます:
# virsh migrate --live GuestName DestinationURL
GuestName
パラメータは、移行したいゲストの 名前を表すものです。
DestinationURL
パラメータは目的地システムの URL かホスト名です。目的地システムは Red Hat Enterprise Linux の同じバージョンを 実行しなければならず、同じ hypervisor を使用して、libvirt
が 稼働している必要があります。
この例では、test1.example.com
から test2.example.com
へ移行をします。ご自分の 環境に適したホスト名に変更して下さい。この例は RHEL4test
と言う 仮想マシンを移行します。
ゲストが稼働していることを確認します
送信元のシステムtest1.example.com
からRHEL4test
が稼働していることを確認します:[root@test1 ~]# virsh list Id Name State ---------------------------------- 10 RHEL4 running
ゲストを移行
以下のコマンドを実行して、ゲストを目的地、test2.example.com
に ライブ移行します。/system
を目的地の URL の末尾に追記することで全面的アクセスが 必要であることを libvirt に伝えます。# virsh migrate --live
RHEL4test qemu+ssh://test2.example.com/system
コマンドが入力されると、目的地システムの root パスワードを催促されます。待ち時間
この移行はゲスト上の負荷とそのサイズによりいくらかの時間がかかります。virsh
は エラーを報告するだけです。このゲストは完全に移行が終了するまで送信元のホストで稼働し続けます。ゲストが目的地のホストに到着したことを確認
目的地のシステム、test2.example.com
から、RHEL4test
が稼働していることを確認します:[root@test2 ~]# virsh list Id Name State ---------------------------------- 10 RHEL4 running
注記
19.4. virt-manager での移行
virt-manager
を使用した KVM ベース ゲストの移行を取り扱います。
- 送信元を送信先のホストを接続します。ファイル メニューで、 接続を追加 をクリックすると、接続を 追加 のウィンドウが出現します。以下の詳細を入力します:
- Hypervisor: QEMU を選択。
- 接続: 接続タイプを選択します。
- ホスト名: ホスト名を入力します。
接続 をクリックします。仮想マシンマネージャのウィンドウが接続してあるホストの一覧を表示します。 - ソースとターゲットのホストに同じ NFS を使用するストレージプールを追加します。編集 メニューで、ホストの詳細 をクリックすると、「ホストの詳細」ウィンドウが表示されます。ストレージ タブをクリックします。
- 新規のストレージプールを追加します。そのウィンドウの左下コーナーで + ボタンをクリックします。「新規ストレージプールの追加」ウィンドウが表示されます。以下の詳細を入力します:
- 名前: ストレージプールの名前を入力します。
- タイプ: netfs: Network Exported ディレクトリ を選択します。
進む をクリックします。 - 以下の詳細を入力します:
- 形式: ストレージタイプを選択します。これはライブ移行用には NFS か、又は iSCSI のいずれかです。
- ホスト名: ストレージサーバーの IP アドレスか、又は 完全修飾型ドメイン名を入力します。
完了 をクリックします。 - 共有ストレージプール内で新規のボリュームを作成して、新規ボリューム をクリックします。
- 詳細を入力して、それから ボリュームの作成 をクリックします。
- 新規のボリュームで仮想マシンを作成します。その後仮想マシンを実行します。仮想マシンのウィンドウが開きます。
- 仮想マシンマネージャのウィンドウで、仮想マシン上で右クリックします。 移行 を選択してから、移行の場所をクリックします。
- はい をクリックして移行を継続します。仮想マシンマネージャは新しい場所での仮想マシンを表示します。VNC 接続はそのタイトルバーにリモートホストのアドレスを表示します。
第20章 仮想化ゲストのリモート管理
ssh
か、TLS か、あるいは SSL を 使用して仮想化ゲストをリモートで管理する方法を説明しています。
20.1. SSH を使用したリモート管理
libvirt
管理接続を使用して、リモートマシンを管理します。全ての認証は 使用中の SSH エージェントに よって収集された SSH パブリックキー暗号とパスワード、又はパスフレーズを 使用して行われます。更には、各ゲスト仮想マシンの VNC コンソールは SSH 経由でトンネル通過します。
- 仮想マシンの管理には、リモートマシンへの root ログインでアクセスする必要があります。
- 初期の接続セットアップは時間がかかるかも知れません。
- 全てのホスト、又はゲスト上でユーザーのキーを撤回するのに標準的な、あるいは平凡な方法はありません。
- ssh は多数のリモートマシン群に対してはうまく機能しません。
virt-manager
の為の SSH アクセスの設定以下の案内では、ユーザーが何もない状態からスタートしてまだ SSH キーを セットアップしていないと想定します。
virt-manager
コマンドが使用されるマシン上で、パブリックキーのペアが 必要になります。ssh
がすでに設定してある場合は、このコマンドは 無視することができます。$ ssh-keygen -t rsa
- リモートログインを許可するのに、
virt-manager
は、libvirt
を 実行している各リモートマシン上のパブリックキーをコピーする必要があります。scp
コマンドを 使用することにより、リモート管理に使用したいマシンから$HOME/.ssh/id_rsa.pub
ファイルを コピーします:$ scp $HOME/.ssh/id_rsa.pub root@somehost:/root/key-dan.pub
- ファイルコピーが終了した後は、root として
ssh
を使用して リモートマシンに接続してコピーしたファイルを認可済みキーの一覧に追加します。 リモートホストの root ユーザーがまだ認可済みキーの一覧を所有していない場合は、 ファイル権限が正しくセットされているかどうか確認して下さい。$ ssh root@somehost # mkdir /root/.ssh # chmod go-rwx /root/.ssh # cat /root/key-dan.pub >> /root/.ssh/authorized_keys # chmod go-rw /root/.ssh/authorized_keys
libvirt
デーモン (libvirtd
)
libvirt
デーモンは仮想マシンの管理用の インターフェイスを提供します。libvirtd
デーモンがインストール済みであり、それが管理したい全てのリモートホスト上で稼働して いなければなりません。Red Hat kernel-xen
パッケージの使用には、 特別なカーネルと CPU ハードウェアのサポートが必要になります。詳細は 1章システム要件 で確認して下さい。
$ ssh root@somehost # chkconfig libvirtd on # service libvirtd start
libvirtd
と SSH の設定が終了した後は、リモートで仮想マシンへ アクセスして管理できるはずです。また、この時点で VNC
を 使用してゲストへもアクセスできるはずです。
20.2. TLS と SSL を使用したリモート管理
libvirt
管理接続は 来信の接続用に TCP ポートを開きますが、それは x509 証明書を基にした安全な暗号化と認証を持っています。 更には、各ゲスト仮想マシン用の VNC コンソールは x509 証明書の認定を持つ TLS を 使うようにセットアップされます。
以下の短いガイドはユーザーが初めての試みをしていること、及び TLS/SSL 証明書の 知識を持っていないことを想定しています。ユーザーが幸運にも証明書管理サーバーを 所有している場合は、最初のステップは多分飛ばすことができるでしょう。
libvirt
サーバーセットアップ- 証明書の作成についての詳細には、libvirt website, http://libvirt.org/remote.html を参照して下さい。
- Xen VNC サーバー
- Xen VNC サーバーは設定ファイル
/etc/xen/xend-config.sxp
を 編集することにより TLS を有効にすることができます。設定ファイル内の(vnc-tls 1)
設定パラメータのコメント化を外します。/etc/xen/vnc
ディレクトリは以下の3つのファイルが必要です:これがデータチャンネルの暗号化を提供します。 クライアントが認証の形式としてそれ自身の x509 証明書を提示することを要求するのが妥当 でしょう。これを可能にするには、ca-cert.pem
- CA 証明書server-cert.pem
- CA によって署名されたサーバー証明書server-key.pem
- サーバープライベートキー
(vnc-x509-verify 1)
パラメータの コメント化を外します。 virt-manager
とvirsh
のクライアントセットアップ- クライアントのセットアップは少しここでは不均等です。TLS を介して
libvirt
管理 API を有効にするには、CA と クライアントの証明書が/etc/pki
内に 配置されなければなりません。この詳細に関しては http://libvirt.org/remote.html をご覧下さい。ホストに接続する時には、virt-manager
ユーザーインターフェイス内で、 SSL/TLS トランスポートメカニズムオプションを使用します。virsh
用に URI は以下のような形式を持ちます:- KVM 対応の
qemu://hostname.guestname/system
- Xen 対応の
xen://hostname.guestname/
.
$HOME/.pki
に入れる必要があります。それは以下の 3つのファイルです:
- CA 又は、
ca-cert.pem
- CA 証明書 libvirt-vnc
又はclientcert.pem
- CA によって署名されたクライアント証明書。libvirt-vnc
又はclientkey.pem
- クライアントのプライベートキーです。
20.3. トランスポートモード
libvirt
が以下のようなトランスポートモードをサポートします:
Transport Layer Security TLS 1.0 (SSL 3.1) で認証されて暗号化された TCP/IP ソケットは 通常、パブリックポート番号の内の1つでリッスンしています。これを使用するには、クライアントと サーバーの証明書を生成する必要があります。標準のポートは 16514 です。
Unix ドメインソケットはローカルマシーン上でのみアクセス可能です。ソケットは暗号化 されておらず、認証のために UNIX 権限又は、SELinux を使用します。標準のソケット名は /var/run/libvirt/libvirt-sock
と /var/run/libvirt/libvirt-sock-ro
(読み込み専用接続)です。
Secure Shell protocol (SSH) 接続経由でのトランスポートです。Netcat (nc パッケージ)のインストールを必要とします。 libvirt デーモン (libvirtd
) がリモートマシン上で 実行している必要があります。Port 22 が SSH アクセス用に開いていなければ なりません。なんらかの ssh キー管理(例えば、ssh-agent
ユーティリティ)を 使用する必要があり、そうでないとパスワードを要求されます。
ext
パラメータはいずれかの外部プログラム用に使用 されるものです。これは libvirt の範疇にはない手法でリモートマシンに接続をします。 このパラメータはサポートされていません。
暗号化のない TCP/IP ソケットです。実稼働使用には推奨できません。これは 通常無効になっていますが、管理者はテスト目的や、信頼できるネットワーク上で 有効にすることができます。デフォルトのポートは 16509 です。
Uniform Resource Identifier (URI) はリモートホストに接続するために
virsh
と libvirt
により使用されます。 URI はまた、virsh
コマンド用に --connect
パラメータと 一緒にリモートホスト上で単独コマンドや移行を実行するのに使用されます。
driver[+transport]://[username@][hostname][:port]/[path][?extraparameters]
リモート管理パラメータのサンプル
- SSH トランスポート及び SSH ユーザー名
ccurran
を使用してtowada
と言うホスト上のリモート Xen hypervisor に接続します。xen+ssh://ccurran@towada/
- TLS を使用して
towada
と言う名前のホスト上のリモート Xen hypervisor に接続します。xen://towada/
- TLS を使用してホスト
towada
上のリモート Xen hypervisor に 接続します。no_verify=1
は libvirt にサーバーの証明書を 検証しないように伝えます。xen://towada/?no_verify=1
- SSH を使用して、ホスト
towada
上のリモート KVM hypervisor に 接続します。qemu+ssh://towada/system
テスト用サンプル
- 標準でない UNIX ソケットを使用してローカルの KVM hypervisor に接続します。 この場合 Unix ソケットへの完全なパスは 明示的に供給されます。
qemu+unix:///system?socket=/opt/libvirt/run/libvirt/libvirt-sock
- ポート 5000 で IP アドレス 10.1.1.10 を持つ サーバーへの 暗号化のない TCP/IP 接続を 使用して libvirt デーモンへ接続します。これは、デフォルト設定を持つテストドライバーを 使用します。
test+tcp://10.1.1.10:5000/default
他のパラメータはリモート URI へ追記できます。以下の表 表20.1「その他の URI パラメータ」 は 認識されているパラメータを説明しています。その他のパラメータはすべて無視されます。 パラメータの値は、URI エスケープ(パラメータの前に疑問符 (?) が付けてあり、他の特殊文字は URI 形式に変換)してなければなりません。
表20.1 その他の URI パラメータ
名前 | トランスポートモード | 説明 | 使用法のサンプル |
---|---|---|---|
name | 全てのモード | リモート virConnectOpen 関数に渡される名前です。この名前は通常、リモート URI からトランスポート、ホスト名、 ポート番号、ユーザー名、及び余分のパラメータを削除したものですが、一部の複雑なケースでは、名前を明示的に 供給するのが適切な場合もあります。 | name=qemu:///system |
command | ssh と ext | 外部コマンドです。外部のトランスポートにはこれが必須となります。ssh 用には デフォルトは ssh です。コマンドの為に PATH が検索されます。 | command=/opt/openssh/bin/ssh |
socket | unix と ssh | UNIX ドメインソケットへのパスです。これはデフォルトを上書きします。 ssh トランスポートには、これがリモート netcat コマンドに渡されます(netcat 参照)。 | socket=/opt/libvirt/run/libvirt/libvirt-sock |
netcat | ssh | netcat コマンドはリモートシステムに接続するのに 使用できます。デフォルトの netcat パラメータは nc コマンドを 使用します。SSH トランスポート用には、libvirt が以下の形式を使用して SSH コマンドを 構築します:
port 、username 、及び hostname パラメータはリモート URI の一部として 指定できます。command 、netcat 、及び socket は他の追加のパラメータ 由来のものです。
| netcat=/opt/netcat/bin/nc |
no_verify | tls | ゼロ以外の値にセットしてある場合、これはサーバーの証明書のクライアントチェックを無効に します。クライアントの証明書か、IP アドレスのサーバーチェックを無効にするには、 libvirtd 設定を変更する必要があることに注意して下さい。 | no_verify=1 |
no_tty | ssh | ゼロ以外の値にセットしてある場合、(ssh-agent 又は同類の使用で)自動的にリモートマシンに ログインできない場合に、ssh がパスワードを要求することを止めます。例えば、 libvirt を使用するグラフィカルプログラム内のターミナルにアクセスを持たない時に これを使用します。 | no_tty=1 |
パート V. 仮想化リファレンスガイド
仮想化のコマンド、システムツール、アプリケーション、及びシステム参照
第21章 仮想化のツール
- システム管理ツール
vmstat
iostat
lsof
# lsof -i :5900 xen-vncfb 10635 root 5u IPv4 218738 TCP grumble.boston.redhat.com:5900 (LISTEN)
qemu-img
- 高度なデバッギングツール
systemTap
crash
xen-gdbserver
sysrq
sysrq t
sysrq w
sysrq c
- ネットワーキング
brtcl
# brctl show bridge name bridge id STP enabled interfaces xenbr0 8000.feffffffffff no vif13.0 pdummy0 vif0.0
# brctl showmacs xenbr0 port no mac addr is local? aging timer 1 fe:ff:ff:ff:ff:ff yes 0.00
# brctl showstp xenbr0 xenbr0 bridge id 8000.feffffffffff designated root 8000.feffffffffff root port 0 path cost 0 max age 20.00 bridge max age 20.00 hello time 2.00 bridge hello time 2.00 forward delay 0.00 bridge forward delay 0.00 aging time 300.01 hello timer 1.43 tcn timer 0.00 topology change timer 0.00 gc timer 0.02 flags vif13.0 (3) port id 8003 state forwarding designated root 8000.feffffffffff path cost 100 designated bridge 8000.feffffffffff message age timer 0.00 designated port 8003 forward delay timer 0.00 designated cost 0 hold timer 0.43 flags pdummy0 (2) port id 8002 state forwarding designated root 8000.feffffffffff path cost 100 designated bridge 8000.feffffffffff message age timer 0.00 designated port 8002 forward delay timer 0.00 designated cost 0 hold timer 0.43 flags vif0.0 (1) port id 8001 state forwarding designated root 8000.feffffffffff path cost 100 designated bridge 8000.feffffffffff message age timer 0.00 designated port 8001 forward delay timer 0.00 designated cost 0 hold timer 0.43 flags
ifconfig
tcpdump
- KVM ツール
ps
pstree
top
kvmtrace
kvm_stat
- Xen ツール
xentop
xm dmesg
xm log
第22章 virsh でゲストを管理
virsh
はゲストと hypervisor を管理するための コマンドラインインターフェイスです。
virsh
ツールは libvirt
管理 API を 土台にして構築されており、xm
コマンドとグラフィカルゲスト マネージャ (virt-manager
) への代替として機能します。 virsh
は特別権限のないユーザーにより読み込み専用モードで 使用可能です。 virsh
を使用してゲストマシン用のスクリプトを 実行することができます。
以下の表では、全ての virsh コマンドラインオプションのクイックリファレンスを 提供します。
表22.1 ゲスト管理のコマンド
コマンド | 説明 |
---|---|
help | 基本的なヘルプ情報を表示します。 |
list | 全てのゲストを一覧表示します。 |
dumpxml | ゲスト用の XML 設定ファイルを出力します。 |
create | XML 設定ファイルからゲストを作成して新規のゲストを開始します。 |
start | 停止中のゲストを開始します。 |
destroy | ゲストを強制的に停止します。 |
define | ゲスト用の XML 設定ファイルを出力します。 |
domid | ゲストの ID を表示します。 |
domuuid | ゲストの UUID を表示します。 |
dominfo | ゲスト情報を表示します。 |
domname | ゲスト名を表示します。 |
domstate | ゲストの状態を表示します。 |
quit | 対話式のターミナルを終了します。 |
reboot | ゲストを再起動します。 |
restore | ファイル内に以前に保存されているゲストを復元します。 |
resume | 休止中のゲストを復帰します。 |
save | ゲストの現在の状態をファイルに保存します。 |
シャットダウン中 | ゲストを丁寧にシャットダウンします。 |
suspend | ゲストを休止します。 |
undefine | ゲストに関連のファイルをすべて削除します。 |
migrate | ゲストを別のホストに移行します。 |
virsh
コマンドはゲストと hypervisor リソースを 管理します:
表22.2 リソース管理のオプション
コマンド | 説明 |
---|---|
setmem | ゲストのために割り当てたメモリーを設定します。 |
setmaxmem | hypervisor 用の最大メモリー限度を設定します。 |
setvcpus | ゲストに割り当てた仮想 CPU の数を変更します。 |
vcpuinfo | ゲストに関して仮想 CPU 情報を表示します。 |
vcpupin | ゲストの仮想 CPU 同類を制御します。 |
domblkstat | 実行中ゲストのブロックデバイス統計を表示します。 |
domifstat | 実行中のゲストのネットワークインターフェイス統計を表示します。 |
attach-device | XML ファイル内のデバイス定義を使用してゲストへデバイスを添付します。 |
attach-disk | 新規のディスクデバイスをゲストに添付します。 |
attach-interface | 新規のネットワークインターフェイスをゲストに添付します。 |
detach-device | ゲストからデバイスを分離し、attach-device コマンドと 同じ種類の XML 記述を提示します。 |
detach-disk | ゲストからディスクデバイスを分離します。 |
detach-interface | ゲストからネットワークインターフェイスを分離します。 |
virsh
オプションを示します:
表22.3 その他のオプション
コマンド | 説明 |
---|---|
version | virsh のバージョンを表示します。 |
nodeinfo | hypervisor に関する情報を出力します。 |
virsh
で hypervisor セッションへ接続します:
# virsh connect {hostname OR URL}
<name>
は hypervisor のマシン名です。読み込み専用の接続を開始したい場合、上記のコマンドに -readonly
を追記します。
virsh
でゲストの XML 設定ファイルを出力します:
# virsh dumpxml {domain-id, domain-name or domain-uuid}
stdout
) に 出力します。出力をファイルにパイプすることでデータを保存できます。guest.xml と言うファイルへ出力をパイプする例として:
# virsh dumpxml GuestID > guest.xmlと出来ます。このファイル
guest.xml
はゲストを再作成できるものです。 (ゲスト設定ファイルの編集 を参照) この XML 設定ファイルを編集して追加のデバイスを設定したり、 又は追加のゲストを導入したりすることも出来ます。virsh dumpxml
を使用した ファイルの修正に関する情報には、「virsh を用いた XML 設定ファイルの使用」 を参照して下さい。
virsh dumpxml
出力の例:
# virsh dumpxml r5b2-mySQL01 <domain type='xen' id='13'> <name>r5b2-mySQL01</name> <uuid>4a4c59a7ee3fc78196e4288f2862f011</uuid> <bootloader>/usr/bin/pygrub</bootloader> <os> <type>linux</type> <kernel>/var/lib/libvirt/vmlinuz.2dgnU_</kernel> <initrd>/var/lib/libvirt/initrd.UQafMw</initrd> <cmdline>ro root=/dev/VolGroup00/LogVol00 rhgb quiet</cmdline> </os> <memory>512000</memory> <vcpu>1</vcpu> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <interface type='bridge'> <source bridge='xenbr0'/> <mac address='00:16:3e:49:1d:11'/> <script path='vif-bridge'/> </interface> <graphics type='vnc' port='5900'/> <console tty='/dev/pts/4'/> </devices> </domain>
ゲストは XML 設定ファイルから作成することができます。以前に作成されているゲストから 既存の XML をコピーするか、又は dumpxml
オプションを使用します。 (仮想マシン XML ダンプ(設定ファイル)を作成 参照) virsh
を 使用して XML ファイルからゲストを作成するには:
# virsh create configuration_file.xml
dumpxml
オプション ( 仮想マシン XML ダンプ(設定ファイル)を作成 を参照) を使用する代わりに、 ゲストは、それが稼働中でも、オフライン中でも編集することができます。virsh edit
コマンドがこの機能を提供します。例えば、softwaretesting
と 言う名前のゲストを編集するには:
# virsh edit softwaretesting
$EDITOR
シェルパラメータです(デフォルトで vi
にセット)。
virsh
を使用してゲストを休止します:
# virsh suspend {domain-id, domain-name or domain-uuid}
resume
(ゲストの復帰) オプションで再開始する必要があります。
resume
オプションと共に virsh
を 使用して休止中のゲストを復帰します:
# virsh resume {domain-id, domain-name or domain-uuid}
suspend
と resume
操作用に保持されます。
virsh
コマンドを使用してゲストの現在の状態をファイルに 保存します:
# virsh save {domain-name, domain-id or domain-uuid} filename
restore
(ゲストの復帰) オプションで復帰することができます。保存は休止と似ていますが、単なる休止の代わりに ゲストの現在の状態が保存されます。
virsh save
コマンド(ゲストを保存) で以前に保存されたゲストを virsh
を使用して 復帰します:
# virsh restore filename
virsh
コマンドを使用してゲストをシャットダウンします:
# virsh shutdown {domain-id, domain-name or domain-uuid}
on_shutdown
パラメータを修正することで制御できます。
virsh
コマンドを使用してゲストを再起動します:
#virsh reboot {domain-id, domain-name or domain-uuid}
on_reboot
エレメントを修正することで制御できます。
virsh
コマンドを使用してゲストの停止を強制します:
# virsh destroy {domain-id, domain-name or domain-uuid}
virsh destroy
を使用すると、ゲストのファイルシステムを 破損するかも知れません。destroy
オプションは、ゲストが 反応しない時にのみ使用して下さい。para-virtualized ゲスト用には代わりに shutdown
オプション (ゲストのシャットダウン) を使用します。
ゲストのドメイン ID を取得するには:
# virsh domid {domain-name or domain-uuid}
ゲストのドメイン名を取得するには:
# virsh domname {domain-id or domain-uuid}
ゲストの UUID(Universally Unique Identifier)を取得するには:
# virsh domuuid {domain-id or domain-name}
virsh domuuid
の出力の例:
# virsh domuuid r5b2-mySQL01 4a4c59a7-ee3f-c781-96e4-288f2862f011
ゲストのドメイン ID、ドメイン名、あるいは UUID と共に virsh
を 使用すると、指定したゲストの情報を表示することができます:
# virsh dominfo {domain-id, domain-name or domain-uuid}
virsh dominfo
出力の例を示します:
# virsh dominfo r5b2-mySQL01 id: 13 name: r5b2-mysql01 uuid: 4a4c59a7-ee3f-c781-96e4-288f2862f011 os type: linux state: blocked cpu(s): 1 cpu time: 11.0s max memory: 512000 kb used memory: 512000 kb
ホストに関する情報を表示するには:
# virsh nodeinfo
virsh nodeinfo
出力の例 :
# virsh nodeinfo CPU model x86_64 CPU (s) 8 CPU frequency 2895 Mhz CPU socket(s) 2 Core(s) per socket 2 Threads per core: 2 Numa cell(s) 1 Memory size: 1046528 kb
virsh
コマンドを使用してゲストの一覧とその現在状態を 表示するには:
# virsh list
--inactive
オプション 。そして
--all
オプション。 例えば:
# virsh list --all Id Name State ---------------------------------- 0 Domain-0 running 1 Domain202 paused 2 Domain010 inactive 3 Domain9600 crashed
virsh list
からの出力は6つの状態の1つとして 分類されます(以下の一覧)。
running
状態は CPU 上で現在活動中のゲストを 示します。blocked
として表示してあるゲストは阻止されており、 実行していないか、又は実行不可能です。これは I/O 待ちのゲスト(旧来の wait 状態)か、 スリープモードのゲストがその要因です。paused
状態は休止中のドメインを一覧表示します。 これは、管理者がvirt-manager
、xm pause
、 又はvirsh suspend
で、pause ボタンを使用する ことで発生します。ゲストが休止している時は、メモリーとその他のリソースを消費しますが、スケジュールと hypervisor からの CPU リソースには無視できる量です。shutdown
状態は シャットダウンプロセスにある ゲスト用のものです。ゲストはシャットダウン信号を受けてその運用を丁寧に終了するプロセスに 入るべき状態です。これは全てのゲストオペレーティングシステムでは機能しないかも知れません。 一部のオペレーティングシステムはこの信号に良く反応しません。dying
状態のドメインはご臨終のプロセスにある ものです。これはドメインがシャットダウンやクラッシュを完全に終了していない状態を指します。crashed
の場合、ゲストは実行中に障害を受け、もう 実行していない状態です。この状態はクラッシュ時にゲストが再スタートしないように設定されている 場合にのみ発生します。
virsh
を使用してゲストからの仮想 CPU の情報を 表示するには:
# virsh vcpuinfo {domain-id, domain-name or domain-uuid}
virsh vcpuinfo
出力の例:
# virsh vcpuinfo r5b2-mySQL01 VCPU: 0 CPU: 0 State: blocked CPU time: 0.0s CPU Affinity: yy
物理 CPU を使用して、仮想 CPU の類似物を設定するには:
# virsh vcpupin domain-id vcpu cpulist
domain-id
パラメータはゲストの ID 番号、又は名前です。
vcpu
パラメータは、ゲストに割り当てられた仮想 CPU の数を示します。 vcpu
パラメータは必須項目です。
cpulist
パラメータは、コンマで区切られた物理 CPU の 識別子番号の一覧です。cpulist
パラメータはどの物理 CPU で VCPU が稼働するかを決定します。
virsh
を使用してゲストに割り当てられた CPU の数を 修正するには:
# virsh setvcpus {domain-name, domain-id or domain-uuid} count
count
値はゲストが作成された時に指定されたカウントを 超過することは出来ません。
virsh
を使用してゲストのメモリー割り当てを修正するには:
# virsh setmem {domain-id or domain-name} count
virsh domblkstat
を使用すると稼働中のゲストの ブロックデバイス統計が表示できます。
# virsh domblkstat GuestName block-device
virsh domifstat
を使用すると、稼働中のゲストの ネットワークインターフェイス統計が表示できます。
# virsh domifstat GuestName interface-device
ゲストは virsh
を使用して別のホストへ移行することが できます。ドメインを別のホストへ移行します。ライブ移行用には --live を追加します。 migrate
コマンドは以下の形式のパラメータを受け付けます:
# virsh migrate --live GuestName DestinationURL
--live
パラメータはオプションです。ライブ移行用には --live
パラメータを追加します。
GuestName
パラメータは移行したいゲストの名前を示します。
DestinationURL
パラメータは移行先システムの URL 又はホスト名です。移行先システムは以下を必要とします:
- Red Hat Enterprise Linux の同じバージョン
- 同じ hypervisor (KVM か Xen)、それに
libvirt
サービスが開始する必要があります。
このセクションでは、virsh
コマンドを使用した仮想化 ネットワークの管理を説明します。仮想化ネットワークを一覧表示するには:
# virsh net-list
# virsh net-list Name State Autostart ----------------------------------------- default active yes vnet1 active yes vnet2 active yes
# virsh net-dumpxml NetworkName
# virsh net-dumpxml vnet1 <network> <name>vnet1</name> <uuid>98361b46-1581-acb7-1643-85a412626e70</uuid> <forward dev='eth0'/> <bridge name='vnet0' stp='on' forwardDelay='0' /> <ip address='192.168.100.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.100.128' end='192.168.100.254' /> </dhcp> </ip> </network>
virsh
コマンドを以下に示します:
virsh net-autostart [network name]
— network-name で指定された ネットワークを自動開始します。virsh net-create XMLfile
— 既存の XML ファイルを使用して新規のネットワークを生成して開始します。virsh net-define XMLfile
— 既存の XML ファイルから新規のネットワークデバイスを生成しますが開始しません。virsh net-destroy network-name
— network-name として指定された ネットワークを破棄します。virsh net-name networkUUID
— 指定された networkUUID をネットワーク名に変換します。virsh net-uuid network-name
— 指定された network-name をネットワーク UUID に変換します。virsh net-start nameOfInactiveNetwork
— 休止中のネットワークを開始します。virsh net-undefine nameOfInactiveNetwork
— 休止中のネットワークを定義解除します。
第23章 仮想マシンマネージャ(virt-manager) でゲストを管理する
virt-manager
) ウィンドウ、ダイアログボックス、各種 GUI 制御などを説明しています。
virt-manager
はユーザーのシステム上とリモートマシン上の hypervisor とゲストのグラフィカル表示を提供します。para-virtualized と完全仮想化の両方の ゲストを定義するのにも virt-manager
を使用できます。そして virt-manager
は以下を含む、仮想化管理のタスクも演じることができます:
- メモリーの割り当て、
- 仮想 CPU の割り当て、
- 動作パフォーマンスの監視、
- 仮想化ゲストの保存と復元、休止と復帰、及びシャットダウンと開始、
- テキストとグラフィカルのコンソールへのリンク、
- ライブとオフラインの移行。
23.1. 開放接続のウィンドウ
図23.1 仮想マシンマネージャの接続ウィンドウ
23.2. 仮想マシンマネージャの主要ウィンドウ
図23.2 仮想マシンマネージャの主要ウィンドウ
23.3. 仮想マシンマネージャの詳細ウィンドウ
virt-manager
で利用できる ゲストのライブリソース活用データのグラフと統計が表示されます。UUID フィールドは 仮想マシンのグローバルな特有識別子を表示します。
図23.3 virt-manager
の詳細ウィンドウ
23.4. 仮想マシングラフィカルコンソール
図23.4 グラフィカルコンソールウィンドウ
注記
dom0
) の ループバックアドレス (127.0.0.1
) しか リッスンしません。このことが、ホスト上でシェル権限を持つ人達のみが VNC 経由で virt-manager と仮想マシンにアクセスできることを確実にしています。
virt-manager
の スティッキーキー機能を使用してこれらの組み合わせを送信することができます。まず、いずれかの援助キー(Ctrl か Alt など) を三回押して、指定キーが次の非援助キー操作までアクティブと認識されるようにします。そうすると、'Ctrl Ctrl Ctrl Alt+F1' の組み合わせを押すことで、Ctrl-Alt-F11 をゲストに送ることができます。
23.5. virt-manager の開始
virt-manager
のセッションを開始するには、 アプリケーション メニューを開いて、それから システムツール メニュー、仮想マシンマネージャ (virt-manager
) と進んで行きます。
virt-manager
の主要ウィンドウが表示されます。
図23.5 virt-manager
の開始
virt-manager
を リモートで開始することができます:
ssh -X ホストのアドレス[remotehost]# virt-manager
ssh
を使用した仮想マシンとホストの管理は 「SSH を使用したリモート管理」 でより詳細に 説明してあります。
23.6. 保存したマシンの復元
- ファイル メニューから 保存したマシンの復元 を選択します。
図23.6 仮想マシンの復元
- 仮想マシンの復元 の主要ウィンドウが出ます。
- 該当のディレクトリに移動して、保存したセッションファイルを選択します。
- 開く をクリックします。
図23.7 復元された仮想マシンマネージャのセッション
23.7. ゲストの詳細表示
- 仮想マシンマネージャの主要ウィンドウで、表示したい仮想マシンを強調表示します。
図23.8 表示する仮想マシンを選択
- 仮想マシンマネージャの 編集 メニューから、マシンの詳細 を選択します(又は、仮想マシンマネージャの主要ウィンドウの底辺にある 詳細 ボタンをクリックします)。
図23.9 仮想マシンの詳細メニューの表示
仮想マシンの詳細概要ウィンドウが現われます。このウィンドウは、指定したドメイン用の CPU とメモリーの使用量を要約表示します。図23.10 ゲストの詳細概要を表示
- 仮想マシンの詳細 ウィンドウで、ハードウェア タブをクリックします。仮想マシン詳細ハードウェア のウィンドウが現われます。
図23.11 ゲストハードウェアの詳細を表示
- ハードウェア タブで プロセッサ をクリックして、現在のプロセッサ割り当ての表示や変更をします。
図23.12 プロセッサ割り当てのパネル
- ハードウェア タブで、メモリー をクリックして、現在の RAM メモリー割り当ての表示や変更をします。
図23.13 メモリー割り当ての表示
- ハードウェア タブで ディスク をクリックして現在のハードディスク設定の表示や変更をします。
図23.14 ディスク設定の表示
- ハードウェア タブで ネットワーク をクリックして現在のネットワーク設定の表示や変更をします。
図23.15 ネットワーク設定の表示
23.8. ステータスの監視
- 編集 メニューから 個人設定 を選択します。
図23.16 ゲストの個人設定の修正
仮想マシンの個人設定ウィンドウが現われます。 - ステータス監視エリア選択ボックスから、システムに更新させる時間(秒数)を指定します。
図23.17 ステータス監視の設定
- コンソールエリアから、コンソールを開く方法と入力デバイスを指定します。
23.9. ゲスト識別子の表示
- 表示 メニューから、ドメイン ID チェックボックスを選択します。
図23.18 ゲスト ID の表示
- 仮想マシンマネージャは、システム上の全てのドメイン用のドメイン ID を一覧表示します。
図23.19 ドメイン ID の表示
23.10. ゲストステータスの表示
- 表示 メニューから、ステータス チェックボックスを選択します。
図23.20 仮想マシンステータスの選択
- 仮想マシンマネージャはシステム上の全ての仮想マシンのステータスを一覧表示します。
図23.21 仮想マシンステータスの表示
23.11. 仮想 CPU の表示
- 表示 メニューから、仮想 CPU チェックボックスを選択します。
図23.22 仮想 CPU オプションの選択
- 仮想マシンマネージャは、システム上の全ての仮想マシン用の仮想 CPU を一覧表示します。
図23.23 仮想 CPU の表示
23.12. CPU 使用量の表示
- 表示 メニューから、CPU 使用量 チェックボックスを選択します。
図23.24 CPU 使用量の選択
- 仮想マシンマネージャは、システム上の全ての仮想マシン用の CPU 使用率を一覧表示します。
図23.25 CPU 使用量の表示
23.13. メモリー使用量の表示
- 表示 メニューから、メモリー使用量 チェックボックスを選択します。
図23.26 メモリー使用量の選択
- 仮想マシンマネージャは、システム上の全ての仮想マシン用のメモリー使用量をメガバイトで一覧表示します。
図23.27 メモリー使用量の表示
23.14. 仮想ネットワークの管理
- 編集 メニューから ホストの詳細(Host Details) を選択します。
図23.28 ホスト詳細の選択
- これが ホストの詳細 メニューを開きます。 仮想ネットワーク タブをクリックします。
図23.29 仮想ネットワークの設定
- 使用できる仮想ネットワークは全て、メニューの左側ボックスに表示されています。 このボックスから一つの仮想ネットワークを選択して、必要に応じた編集をすることで その設定を変更できます。
23.15. 仮想ネットワークの作成
図23.30 仮想ネットワークの設定
そうすると、新規仮想ネットワークの作成(Create a new virtual network) メニューが開きます。進む(Forward) をクリックして 継続します。図23.31 新規仮想ネットワークの作成
- 使用する仮想ネットワークの名前を入力して、それから 進む をクリックします。
図23.32 仮想ネットワークの命名
- 使用する仮想ネットワークの IPv4 アドレスを入力して、それから 進む を クリックします。
図23.33 IPv4 のアドレススペースの選択
- IP アドレスの 開始 と 終了 の 範囲を指定して、使用したい仮想ネットワークの DHCP 幅を定義します。 進む(Forward) をクリックして継続します。
図23.34
DHCP
の範囲を選択 - 仮想ネットワークが物理ネットワークに接続する方法を選択します。
図23.35 物理ネットワークへの接続
物理ネットワークへ転送(Forwarding to physical network) を選択する場合、転送先(Destination) が いずれかの物理デバイスに NAT とすべきか、又は、物理デバイス eth0 に NAT とすべきを選びます。進む をクリックして継続します。 - これでネットワーク作成の準備ができました。ネットワークの設定を確認して、 完了(Finish) をクリックします。
図23.36 ネットワーク作成への準備終了
- 仮想ネットワークが今、ホストの詳細(Host Details) の 仮想ネットワーク タブで使用できます。
図23.37 新規の仮想ネットワークが今、使用できます。
第24章 xm コマンドのクイックリファレンス
xm
コマンドには Xen hypervisor を管理する機能があります。 ほとんどの操作は libvirt ツール、virt-manager アプリケーション、 あるいは、virsh
コマンドで実行されます。xm
コマンドは、libvirt ツールのエラーチェック機能を持ちませんので libvirt ツールのタスクには 使用すべきではありません。
xm
コマンドの 他の Xen 実装用のオプションの一部は Red Hat Enterprise Linux 5 で動作 しません。以下のリストは利用可能と利用不可能なコマンドオプションの概要を 提供します。
警告
xm
ではなく、virsh
、又は virt-manager
の使用が推奨されます。xm
コマンドはエラーチャックや設定ファイルエラーをうまく処理できないため、誤動作が 仮想マシン内のシステム不安定性やエラーを招きます。Xen 設定ファイルを手動で編集することは 危険であり、回避すべきです。この章はご自分の責任で使用判断して下さい。
一般に使用される基本的な xm
コマンド群を以下に示します:
xm help [--long]
: 使用可能なオプションとヘルプテキストを表示します。xm list
コマンドを使用して活動中のドメインをリストできます:$ xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 520 2 r----- 1275.5 r5b2-mySQL01 13 500 1 -b---- 16.1
xm create [-c] DomainName/ID
: 仮想マシンを開始します。 -c オプションが使用されると、開始プロセスはゲストのコンソールを 添付します。xm console DomainName/ID
: 仮想マシンのコンソールに添付します。xm destroy DomainName/ID
: パワーオフと同様に、仮想マシンを終了します。xm reboot DomainName/ID
: 仮想マシンをリブートして、通常のシステムシャットダウンと開始のプロセスを実行します。xm shutdown DomainName/ID
: 仮想マシンをシャットダウンして、通常のシステムシャットダウン工程を実行できます。xm pause
xm unpause
xm save
xm restore
xm migrate
次の xm
コマンド群を使用してリソースを管理することができます:
xm mem-set
xm vcpu-list
を使用して仮想化 CPU のグループをリストできます:$ xm vcpu-list Name ID VCPUs CPU State Time(s) CPU Affinity Domain-0 0 0 0 r-- 708.9 any cpu Domain-0 0 1 1 -b- 572.1 any cpu r5b2-mySQL01 13 0 1 -b- 16.1 any cpu
xm vcpu-pin
xm vcpu-set
xm sched-credit
コマンドを使用して任意のドメイン用の スケジューラパラメータを表示することができます:$ xm sched-credit -d 0 {'cap': 0, 'weight': 256} $ xm sched-credit -d 13 {'cap': 25, 'weight': 256}
監視とトラブルシューティングには、次の xm
コマンド群を 使用します:
xm top
xm dmesg
xm info
xm log
xm uptime
を使用してゲストとホストのアップタイムを表示 できます:$ xm uptime Name ID Uptime Domain-0 0 3:42:18 r5b2-mySQL01 13 0:06:27
xm sysrq
xm dump-core
xm rename
xm domid
xm domname
xm vnet-list
には、現在サポートがありません。
第25章 Xen カーネルブートパラメータの設定
/boot/grub/grub.conf
に存在) は GRUB ブートメニューインターフェイス用にオペレーティングシステムのリストを作成します。kernel-xen
RPM をインストールすると、スクリプトが kernel-xen
エントリを GRUB 設定ファイルに追加し、これがデフォルトで kernel-xen
を ブートします。 grub.conf
ファイルの編集で、デフォルトの カーネルを修正するか、又は別のカーネルパラメータを追加します。
title Red Hat Enterprise Linux Server (2.6.18-3.el5xen) root (hd0,0) kernel /xen.gz.-2.6.18-3.el5 module /vmlinuz-2.6..18-3.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet module /initrd-2.6.18-3. el5xenxen.img
initrd
イメージと Linux カーネルをロードします。カーネルエントリは他のエントリの上部にある為、カーネルが最初にメモリーにロードされます。ブートローダはコマンドライン引数を hypervisor と Linux カーネルに送り、またそれらから受理します。次の例では Dom0 linux カーネルメモリーを 800 MB に制限する方法を示しています:
title Red Hat Enterprise Linux Server (2.6.18-3.el5xen) root (hd0,0) kernel /xen.gz.-2.6.18-3.el5 dom0_mem=800M module /vmlinuz-2.6..18-3.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet module /initrd-2.6.18-3. el5xenxen.img
mem
com1=115200, 8n1
dom0_mem
dom0_max_vcpus
acpi
/* **** Linux config options: propagated to domain0 ****/ /* "acpi=off": Disables both ACPI table parsing and interpreter. */ /* "acpi=force": Overrides the disable blacklist. */ /* "acpi=strict": Disables out-of-spec workarounds. */ /* "acpi=ht": Limits ACPI from boot-time to enable HT. */ /* "acpi=noirq": Disables ACPI interrupt routing. */
noacpi
第26章 ELILO の設定
/etc/elilo.conf
にシンボルリンクがあるもので、グローバル オプションとイメージスタンザの一覧を含んでいます。kernel-xen
RPM をインストール すると、ポストインストールスクリプトが適切なイメージスタンザを elilo.conf
に追加します。
重要
- ELILO の動作と全てのエントリに影響するグローバルオプション。 標準的には,これらをデフォルト値から変更する必要はありません。
- 関連のオプションと共にブート選択を定義するイメージスタンザ。
image=vmlinuz-2.6.18-92.el5xen vmm=xen.gz-2.6.18-92.el5 label=linux initrd=initrd-2.6.18-92.el5xen.img read-only root=/dev/VolGroup00/rhel5_2 append="-- rhgb quiet"
image
パラメータはそれ以下の行が単独のブート選択に適用されることを示します。このスタンザは hypervisor (vmm
) と、initrd
と、 更に、hypervisor とカーネルへのコマンドライン引数 (read-only
、root
、及び append
) を定義します。 ブートシーケンス中に ELILO がロードされると、そのイメージには linux
のラベルが付きます。
read-only
をカーネルコマンドラインオプションの ro
と解釈して、ルートファイルシステムが読み込み専用としてマウントされる要因となります。この状態は initscripts
がルート ドライブを読み込み/書き込みとしてマウントするまで継続します。ELILO は "root
" 行を カーネルコマンドラインにコピーします。これらは "append
" 行とマージされて、以下の ような 完全なコマンド行を構成します:
"-- root=/dev/VolGroup00/rhel5_2 ro rhgb quiet"
--
シンボルは、hypervisor とカーネルの引数に 区切りを付けます。hypervisor 引数が最初に来て、それから --
デリミタで、 その後、カーネル引数が来ます。hypervisor は通常引数を取りません。
注記
--
の前にパラメータを 挿入します。hypervisor メモリー (mem
) パラメータと カーネル用の quiet
パラメータのサンプルを以下に示します:
append="dom0_mem=2G -- quiet"
パラメータ | 説明 |
---|---|
mem= | mem パラメータは hypervisor の最大 RAM 使用を定義 します。システム内の追加の RAM はいずれも無視されます。このパラメータは、B, K, M あるいは G の 接尾辞で指定でき、それぞれバイト、キロバイト、メガバイト、ギガバイトを 示します。接尾辞がない場合、デフォルトの単位はキロバイトです。 |
dom0_mem= | dom0_mem= は dom0 に割り当てる RAM のサイズをセットします。 上記の mem パラメータと同じ接尾辞が通用します。Itanium® 上での Red Hat Enterprise Linux 5.2 のデフォルトは 4G です。 |
dom0_max_vcpus= | dom0_max_vcpus= は、hypervisor に割り当てる CPU の 数量をセットします。Itanium® 上での Red Hat Enterprise Linux 5.2 のデフォルトは 4 です。 |
com1=<baud>,DPS,<io_base>,<irq> | com1= は最初のシリアル行の為のパラメータをセットします。 例えば、com1=9600,8n1,0x408,5 。io_base と irq のオプションは無視して標準のデフォルトで結構です。baud パラメータは auto にセットしてブートローダ設定がそのまま保持 されるようにします。ELILO 内か、EFI 設定内でグローバルシリアルオプションとしてシリアルパラメータが セットされている場合は、com1 パラメータは無視できます。 |
com2=<baud>,DPS,<io_base>,<irq> | 2つめのシリアル行にパラメータをセットします。上述の com1 パラメータの説明を参照して下さい。 |
console=<specifier_list> | console はコンソールオプション用のコンマで区切られた 個人設定一覧です。オプションには、vga、com1 、及び com2 が含まれます。hypervisor が EFI コンソール設定の継承を試みるため、この設定は除外されるべきです。 |
注記
image=vmlinuz-2.6.18-92.el5xen vmm=xen.gz-2.6.18-92.el5 label=linux initrd=initrd-2.6.18-92.el5xen.img read-only root=/dev/VolGroup00/rhel5_2 append="dom0_mem=2G dom0_max_vcpus=2 --"
rhgb quiet
" を削除して、カーネルと initscript
の出力がコンソールで 生成されるようにしています。append 行が hypervisor 引数として正しく解釈されるように 2つのダッシュは保持されることに注意して下さい。
第27章 Xen 設定ファイル
libvirt
設定ファイルを使用します。一部のユーザーは以下のような標準の変数を含んだ Xen 設定ファイルを 必要とするかも知れません。これらのファイル内の設定項目は単独引用句 (') で囲まなければなりません。 これらの設定ファイルは /etc/xen
ディレクトリ内に存在します。
表27.1 libvirt 設定ファイル
項目 | 説明 |
---|---|
pae
|
物理アドレス拡張子の設定データを指定します。
|
apic
|
高度なプログラム可能割り込みコントローラの設定データを指定します。
|
memory
|
メモリー容量をメガバイトで指定します。
|
vcpus
|
仮想 CPU の数量を指定します。
|
console
|
domain コンソールのエキスポート先のポート番号を指定します。
|
nic
|
仮想ネットワークインターフェイスの数量を指定します。
|
vif
|
ランダム割り当ての MAC アドレスと ドメインネットワークアドレスの使用に割り当てたブリッジを一覧表示します。
|
disk
|
ドメインにエキスポートするブロックデバイスを一覧表示して、物理デバイスを読み込み専用アクセスでドメインにエキスポートします。
|
dhcp
|
DHCP を使用してネットワークを有効にします。
|
netmask
|
設定した IP ネットマスクを指定します。
|
gateway
|
設定した IP ゲートウェイを指定します。
|
acpi
|
高度な電源インターフェイス設定の設定データを指定します。
|
xm create --help_config
からの出力をフォーマットしたものです。
表27.2 Xen 設定ファイルの参照
パラメータ
|
説明
|
---|---|
vncpasswd =NAME | HVM ドメインにある VNC コンソール用のパスワード |
vncviewer=no | yes | ドメイン内の vnc サーバーの為の vncviewer リスニングを引き起こします。 vncviewer のアドレスは、VNC_SERVER=<host>:<port> を 使用してカーネルコマンド行上のドメインへ渡されます。vnc に使用されるポートは 5500 + DISPLAY です。 フリーポートを持つ表示値は可能であれば選択されます。vnc=1 の時にのみ有効です。 |
vncconsole =no | yes | ドメインのグラフィカルコンソール用の vncviewer プロセスを引き起こします。 vnc=1 の時にのみ有効です。 |
name =NAME | ドメイン名。特有のものにします。 |
bootloader =FILE | ブートローダーへのパス |
bootargs =NAME | ブートローダーへのパスの引数 |
bootentry =NAME | 破棄されました。ブートローダーを経由したブートへのエントリ。bootargs を使用 |
kernel =FILE | カーネルイメージへのパス |
ramdisk =FILE | ramdisk へのパス |
features =FEATURES | ゲストカーネル内で有効にする機能 |
builder =FUNCTION | ドメインをビルドするために使用する関数 |
memory =MEMORY | MB 表示のドメインメモリー |
maxmem =MEMORY | MB 表示の最大ドメインメモリー |
shadow_memory =MEMORY | MB 表示のドメインシャドーメモリー |
cpu =CPU | VCPU0 を維持する CPU |
cpus =CPUS | ドメインを稼働する CPUS |
pae =PAE | HVM ドメインの PAE を有効化/無効化 |
acpi =ACPI | HVM ドメインの ACPI を有効化/無効化 |
apic =APIC | HVM ドメインの APIC を有効化/無効化 |
vcpus =VCPUs | ドメイン内の仮想 CPUS の数 |
cpu_weight =WEIGHT | 新しいドメインの cpu 量をセットします。WEIGHT は cpu に於けるドメインのシェアを制御する変動数です。 |
restart =onreboot | always | never | ドメインが 終了時に再スタートすべきかどうかを決定するものです。 - onreboot = シャットダウンコード reboot を付けて終了時に再スタート - always = 常に終了時に再スタート、終了コードを無視。 - never = 終了時に再スタートしない、終了コードを無視。 これらはすべて破棄されました。代わりにon_poweroff 、 on_reboot 、及び on_crash を使います。 |
on_poweroff =destroy | restart | preserve | destroy | ドメインが理由 'poweroff' で終了する時の動作 = - destroy : ドメインが通常にクリーンアップされる。 - restart: 古いドメインの代わりに新しいドメインがスタートする。 - preserve: ドメインが手動で破壊(例えば、xm destroy を使用)されるまではクリーンアップがされない。 - rename-restart: 古いドメインはクリーンアップされず改名されて、新しいドメインが代わりにスタートする。 |
on_reboot =destroy | restart | preserve | destroy | ドメインが理由 'reboot' で終了する時の動作 = - destroy:ドメインは普通にクリーンアップされる。 - restart: 新しいドメインが古いドメインの代わりにスタートする。 - preserve: ドメインが手動で破壊(例えば xm destroy の使用)されるまでクリーンアップはされない。 - rename-restart: 古いドメインはクリーンアップされず改名されて、新しいドメインが代わりにスタートする。 |
on_crash =destroy | restart | preserve | destroy | ドメインが理由 'crash' で終了する時の動作 = - destroy: ドメインは普通にクリーンアップされる。 - restart: 古いドメインの代わりに新しいドメインがスタートする。 - preserve: ドメインが手動で破壊(例えば xm destroy を使用)されるまでクリーンアップされない。 - rename-restart: 古いドメインはクリーンアップされず改名されて、新しいドメインが代わりにスタートする。 |
blkif =no | yes | ドメインをブロックデバイスバックエンドにする |
netif =no | yes | ドメインをネットワークインターフェイスバックエンドにする |
tpmif =no | yes | ドメインを TPM インターフェイスバックエンドにする |
disk =phy:DEV,VDEV,MODE[,DOM] | ディスクデバイスをドメインに追加します。物理デバイスは DEV となり、ドメインに対して VDEV として現れます。MODE が r の場合は、 読み込み専用で、 MODE が w の場合は、読み込み/書き込みと なります。DOM が指定されると、それはディスクの為に使用するようにバックエンドドライバー ドメインを定義します。このオプションは複数のディスクを追加するために繰り返すことができます。 |
pci =BUS:DEV.FUNC | 任意のパラメータ(16進法で)を使用して、ドメインに PCI デバイスを追加します。 例えば、pci=c0:02.1a 。このオプションは、繰り返して 複数の PCI デバイスを追加することができます。 |
ioports =FROM[-TO] | パラメータ(16進法で)使用してドメインにレガシー I/O の幅を追加します。 ioports=02f8-02ff 。このオプションは、繰り返して 複数の I/O の幅を追加することができます。 |
irq =IRQ | ドメインに IRQ(割り込みの行)を追加します。例えば、irq=7 。このオプションは繰り返して複数の IRQ を追加することができます。 |
usbport =PATH | そのポートへのパスで指定されている通りにドメインに物理 USB ポートを追加します。 このオプションは繰り返して複数のポートを追加することが出来ます。 |
vfb=type={vnc,sdl}, vncunused=1, vncdisplay=N,
vnclisten=ADDR, display=DISPLAY,
xauthority=XAUTHORITY, vncpasswd=PASSWORD,
keymap =KEYMAP
| ドメインをフレームバッファのバックエンドにします。バックエンドタイプは、sdl か vnc のいずれかにする必要があります。type=vnc では、 外部の vncviewer を接続して下さい。サーバーはポート N+5900 の ADDR (デフォルト 127.0.0.1) で リッスンします。N はデフォルトでドメインの id となります。vncunused=1 となる場合は、サーバーは 5900 以上の任意の未使用ポートを探す試みをします。type=sdl では、 該当する DISPLAY と XAUTHORITY を使用して viewer の1つが自動的にスタートし、デフォルトで現在のユーザーの設定になります。 |
vif=type=TYPE, mac=MAC, bridge=BRIDGE, ip=IPADDR,
script=SCRIPT, backend=DOM, vifname =NAME
| 該当する MAC アドレスとブリッジを使用してネットワーク インターフェイスを追加します。vif は該当する設定スクリプトを コールすることにより、設定されます。タイプが指定されていない場合は、デフォルトは netfront となり、 ioemu ではありません。MAC が指定されていない場合は、ランダムに MAC アドレスが使用されます。指定されていないと、ネットワークバックエンドはそれ自身の MAC アドレスを選択します。ブリッジが指定されていないと、最初に見付かったブリッジが使用されます。スクリプトが 指定されていないと、デフォルトのスクリプトが使用されます。バックエンドが指定されていないと、デフォルトの バックエンドドライバードメインが使用されます。vif 名が指定されていない場合は、バックエンドの仮想インターフェイスが vifD.N と言う名前を取り、この D はドメイン id であり、N がインターフェイスの id となります。このオプションは 複数の vif を追加する時に繰り返されます。vif を指定することにより、必要に応じてインターフェイスの数を増加できます。 |
vtpm=instance= INSTANCE,backend=DOM | TPM インターフェイスを追加します。バックエンド側では、該当するインスタンスを 仮想 TPM インスタンスとして使用します。与えられた数値は単に好みのインスタンス番号です。 hotplug スクリプトはどのインスタンス番号が実際にドメインに割り当てられるかを決定します。 仮想マシンと TPM インスタンス番号は /etc/xen/vtpm.db 内で見る ことが出来ます。該当するドメインにはバックエンドを使用して下さい。 |
access_control=policy= POLICY,label=LABEL | セキュリティラベルとそれを定義するセキュリティポリシー参照を追加します。 ローカルの ssid 参照は、ドメインが開始、又は復帰する時点に算出されます。この 時点で、ポリシーがアクティブなポリシーに対してチェックされます。このようにして、 「保存」又は「復元」の機能が処理されて、ローカルラベルはドメインが開始、又は 復帰するシステム上で自動的に正しく作成されます。 |
nics =NUM | 破棄されています。代わりに空の vif エントリを使用します。ネットワークインターフェイスの 数を設定します。vif オプションを使用するとインターフェイスのパラメータを定義できます。 それ以外ではデフォルトが使用されます。vif を指定することにより必要に応じてインターフェイスの 数を増加できます。 |
root =DEVICE | カーネルコマンド行に root = パラメータをセットします。 NFS root には、例えば、/dev/sda1 や /dev/nfs のようなデバイスを使用します。 |
extra =ARGS | カーネルコマンド行に追記するために余分の引数をセットします。 |
ip =IPADDR | カーネル IP インターフェイスアドレスをセットします。 |
gateway =IPADDR | カーネル IP ゲートウェイをセットします。 |
netmask =MASK | カーネル IP ネットマスクをセットします。 |
hostname =NAME | カーネル IP ホスト名をセットします。 |
interface =INTF | カーネル IP インターフェイス名をセットします。 |
dhcp =off|dhcp | カーネル dhcp オプションをセットします。 |
nfs_server =IPADDR | NFS root 用に NFS サーバーのアドレスをセットします。 |
nfs_root =PATH | root NFS ディレクトリのパスをセットします。 |
device_model =FILE | デバイスモデルプログラムへのパス |
fda =FILE | fda へのパス |
fdb =FILE | fdb へのパス |
serial =FILE | シリアルか、pty か vc へのパス |
localtime =no | yes | RTC がローカルタイムにセットされているかどうか |
keymap =FILE | 使用されるキーボードマップをセットします。 |
usb =no | yes | USB デバイスを模倣します。 |
usbdevice =NAME | 追加する USB デバイスの名前 |
stdvga =no | yes | std vga 又は Cirrus Logic
グラフィックスを 使用します。 |
isa =no | yes | ISA のみのシステムをシミュレートします |
boot =a|b|c|d | デフォルトのブートデバイス |
nographic =no | yes | デバイスモデルがグラフィックスを使用すべきか? |
soundhw =audiodev | デバイスモデルがオーディオデバイスを有効にすべきか? |
vnc | デバイスモデルが VNC を使用すべきか? |
vncdisplay | 使用する VNC 表示 |
vnclisten | リッスンする VNC サーバー用のアドレス |
vncunused | VNC サーバーには未使用のポートを見つけるようにします。vnc=1 の時にのみ有効。 |
sdl | デバイスモデルが SDL を使用すべきか? |
display =DISPLAY | 使用する X11 ディスプレイ |
xauthority =XAUTHORITY | 使用する X11 権限 |
uuid | 使用する xenstore UUID (universally unique identifier) です。このオプションが セットされていないと、ランダムに1つ生成されます。仮想ネットワークインターフェイス用の MAC アドレスと同様です。これはクラスター全域に渡って特有である必要があります。 |
表27.3 パラメータ値をセットする Python 関数
パーサー関数 | 有効な引数 |
---|---|
set_bool |
受理される値:
|
set_float |
Python の float() を使用する浮動小数点を受理します。例えば:
|
set_int |
Python の int() を使用する整数を受理します。
|
set_value |
いずれの Python 値も受理します。
|
append_value |
いずれの Python 値も受理して、アレイに格納されている以前の値に追記します。
|
表27.4 設定パラメータのデフォルト値
パラメータ | パーサー関数 | デフォルト値 |
---|---|---|
name | setter | デフォルト値 |
vncpasswd | set_value | なし |
vncviewer | set_bool | なし |
vncconsole | set_bool | なし |
name | set_value | なし |
bootloader | set_value | なし |
bootargs | set_value | なし |
bootentry | set_value | なし |
kernel | set_value | なし |
ramdisk | set_value | '' |
features | set_value | '' |
builder | set_value | 'linux' |
memory | set_int | 128 |
maxmem | set_int | なし |
shadow_memory | set_int | 0 |
cpu | set_int | なし |
cpus | set_value | なし |
pae | set_int | 0 |
acpi | set_int | 0 |
apic | set_int | 0 |
vcpus | set_int | 1 |
cpu_weight | set_float | なし |
restart | set_value | なし |
on_poweroff | set_value | なし |
on_reboot | set_value | なし |
on_crash | set_value | なし |
blkif | set_bool | 0 |
netif | set_bool | 0 |
tpmif | append_value | 0 |
disk | append_value | [] |
pci | append_value | [] |
ioports | append_value | [] |
irq | append_value | [] |
usbport | append_value | [] |
vfb | append_value | [] |
vif | append_value | [] |
vtpm | append_value | [] |
access_control | append_value | [] |
nics | set_int | -1 |
root | set_value | '' |
extra | set_value | '' |
ip | set_value | '' |
gateway | set_value | '' |
netmask | set_value | '' |
hostname | set_value | '' |
interface | set_value | "eth0" |
dhcp | set_value | 'off' |
nfs_server | set_value | なし |
nfs_root | set_value | なし |
device_model | set_value | '' |
fda | set_value | '' |
fdb | set_value | '' |
serial | set_value | '' |
localtime | set_bool | 0 |
keymap | set_value | '' |
usb | set_bool | 0 |
usbdevice | set_value | '' |
stdvga | set_bool | 0 |
isa | set_bool | 0 |
boot | set_value | 'c' |
nographic | set_bool | 0 |
soundhw | set_value | '' |
vnc | set_value | なし |
vncdisplay | set_value | なし |
vnclisten | set_value | なし |
vncunused | set_bool | 1 |
sdl | set_value | なし |
display | set_value | なし |
xauthority | set_value | なし |
uuid | set_value | なし |
パート VI. ヒントと裏技
生産性を向上する為のヒントと裏技
第28章 ヒントと裏技
28.1. 自動的にゲストを開始
virsh
を使用して、 TestServer
を 介してホストがブートする時点に自動的にスタートします。
# virsh autostart TestServer
Domain TestServer marked as autostarted
--disable
パラメータを使用します。
# virsh autostart --disable TestServer
Domain TestServer unmarked as autostarted
28.2. KVM と Xen hypervisor との間での切り替え
重要
警告
28.2.1. Xen から KVM へ
KVM パッケージをインストール
まだ kvm パッケージをインストールしていない場合、インストールします。# yum install kvm
どのカーネルが使用中かを確認
kernel-xen パッケージがインストールされている可能性があります。uname
コマンドを使用して、どのカーネルが稼働しているか判定します:$ uname -r 2.6.18-159.el5xen
現在、カーネル "2.6.18-159.el5xen
" がシステムで稼働中です。 デフォルトカーネル、"2.6.18-159.el5
" が稼働している場合は、 このサブステップは無視できます。Xen カーネルをデフォルトカーネルに変更
grub.conf
ファイルはどのカーネルがブートされるかを決定します。 デフォルトのカーネルを変更するには、/boot/grub/grub.conf
ファイルを以下のように編集します。default=1 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Red Hat Enterprise Linux Server (2.6.18-159.el5) root (hd0,0) kernel /vmlinuz-2.6.18-159.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet initrd /initrd-2.6.18-159.el5.img title Red Hat Enterprise Linux Server (2.6.18-159.el5xen) root (hd0,0) kernel /xen.gz-2.6.18-159.el5 module /vmlinuz-2.6.18-159.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet module /initrd-2.6.18-159.el5xen.img
default=1 パラメータを見てください。 これは GRUB ブートローダーに対して2つめのエントリである Xen カーネルをブートするように 指示しています。デフォルトを0
(又は、デフォルトカーネルの番号)に 変更します。default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Red Hat Enterprise Linux Server (2.6.18-159.el5) root (hd0,0) kernel /vmlinuz-2.6.18-159.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet initrd /initrd-2.6.18-159.el5.img title Red Hat Enterprise Linux Server (2.6.18-159.el5xen) root (hd0,0) kernel /xen.gz-2.6.18-159.el5 module /vmlinuz-2.6.18-159.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet module /initrd-2.6.18-159.el5xen.img
再起動して新しいカーネルをロードします。
システムを再起動します。コンピュータはデフォルトのカーネルで再スタートします。 KVM モジュールは、カーネルで自動的にロードされるはずです。KVM が稼働していることを 確認します:$ lsmod | grep kvm kvm_intel 85992 1 kvm 222368 2 ksm,kvm_intel
もし全てが正常に機能していれば、kvm
モジュールと、kvm_intel
モジュール、あるいはkvm_amd
モジュールが存在するはずです。
28.2.2. KVM から Xen へ
Xen パッケージをインストール
まだ、kernel-xen と xen の パッケージをインストールしていない場合はインストールします。# yum install kernel-xen xen
kernel-xen パッケージはインストールされていて、無効に なっている可能性があります。どのカーネルが使用中かを確認
uname
コマンドを使用すると、どのカーネルが実行中であるか 判定できます。$ uname -r 2.6.18-159.el5
現在のカーネル "2.6.18-159.el5
" はシステム上で実行中です。 これがデフォルトのカーネルです。カーネルがその末尾にxen
を 持つ場合(例えば、2.6.18-159.el5xen
)、Xen カーネルが 実行中であるため、このサブステップは無視しても結構です。デフォルトカーネルから Xen カーネルへ変更
grub.conf
ファイルはどのカーネルがブートされるかを決定します。 デフォルトのカーネルを変更するには、/boot/grub/grub.conf
ファイルを以下のように編集します。default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Red Hat Enterprise Linux Server (2.6.18-159.el5) root (hd0,0) kernel /vmlinuz-2.6.18-159.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet initrd /initrd-2.6.18-159.el5.img title Red Hat Enterprise Linux Server (2.6.18-159.el5xen) root (hd0,0) kernel /xen.gz-2.6.18-159.el5 module /vmlinuz-2.6.18-159.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet module /initrd-2.6.18-159.el5xen.img
default=0 パラメータに注意して下さい。 これは、GRUB ブートローダに対して最初のエントリ(デフォルトカーネル)をブート するように指示しています。デフォルトを1
(又は Xen カーネルの番号)に変更します:default=1 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Red Hat Enterprise Linux Server (2.6.18-159.el5) root (hd0,0) kernel /vmlinuz-2.6.18-159.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet initrd /initrd-2.6.18-159.el5.img title Red Hat Enterprise Linux Server (2.6.18-159.el5xen) root (hd0,0) kernel /xen.gz-2.6.18-159.el5 module /vmlinuz-2.6.18-159.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet module /initrd-2.6.18-159.el5xen.img
再起動して新しいカーネルをロードします。
システムを再起動します。コンピュータは Xen カーネルで再スタートするでしょう。uname
コマンドを使用して確認します:$ uname -r 2.6.18-159.el5xen
出力が末尾にxen
を示すなら、Xen カーネルが稼働しています。
28.3. qemu-img の使用
qemu-img
コマンドラインツールは、Xen と KVM で使用している 各種ファイルシステムのフォーマットに使用されます。qemu-img
は 仮想化ゲストイメージ、追加のストレージデバイス、及びネットワークストレージのフォーマットに 使用されるものです。qemu-img
のオプションと使用法は以下の一覧に 示されています。
サイズ size
と形式 format
の 新しいディスクイメージファイル名を作成します。
# qemu-img create [-6] [-e] [-b base_image] [-f format] filename [size]
認識されている形式を別のイメージ形式に変換するのには、convert
オプションが使用されます。
# qemu-img convert [-c] [-e] [-f format]filename
[-Ooutput_format
]output_filename
output_format
を使用して、ディスクイメージ filename
を ディスクイメージ output_filename
に 変換します。ディスクイメージは -e
オプションを使用して暗号化したり、 -c
オプションで圧縮したりできます。
qcow
" フォーマットのみが暗号化、又は圧縮をサポートします。 圧縮は読み込み専用です。このことは圧縮したセクターが再書き込みされると、それは 圧縮無しのデータとして再書き込みされると言う意味です。
qcow
又は cow
などの 増大する形式を使用する時には小さいイメージを取得するのに役立ちます。空のセクターは検知されて 目的地イメージから抑圧されます。
info
パラメータはディスクイメージに関する情報を 表示します。info
オプション用の形式は以下のようになります:
# qemu-img info [-f format] filename
イメージのフォーマットは通常、自動的に行われます。以下のフォーマットが サポートされています:
raw
- Raw ディスクイメージフォーマット(デフォルト)。このフォーマットは単純で、全ての 他のエミュレータに簡単にエキスポートできます。ユーザーのファイルシステムが holes(例えば、Linux での ext2 や ext3 で、Windows での NTFS で)をサポートしていれば、 書き込まれたセクターのみがスペースを保存します。
qemu-img info
を使用して、イメージ又は Unix/Linux 上でls -ls
で使用されている本当のサイズを知ることができます。 qcow2
- QEMU イメージフォーマットは最も柔軟性のあるフォーマットです。より小さなイメージ (例えば Windows で使用フィルシステムが holes をサポートしない場合)、オプションの AES 暗号化、zlib ベースの圧縮、及び 複数 VM スナップショットのサポートなどを得るのに 使用します。
qcow
- 旧来の QEMU イメージフォーマットです。古いバージョンとの互換性の為にのみ含まれています。
cow
- ユーザーモード Linux Copy On Write イメージフォーマットです。
cow
フォーマットは以前のバージョンとの互換性の為にのみ含まれています。Windows では機能しません。 vmdk
- VMware 3 と 4 の互換イメージフォーマットです。
cloop
- Linux 圧縮ループイメージは、例として Knoppix CD-ROM などに収納されている 直接圧縮 CD-ROM を再利用する時にのみ役に立ちます。
28.4. KVM でオーバーコミット
重要
ほとんどのオペレーティングシステムとアプリケーションは利用可能な RAM を常に 100% 使用することはありません。この状況を KVM で活用して使用物理メモリー 以上の仮想メモリーを仮想化ゲスト用に使用することが出来ます。
pdflush
プロセスに スワップされる仮想マシンのプロセス用に十分なスワップスペースが無いと、クリーンアッププロセスが スタートします。pdflush
は、プロセスをキルしてメモリーを開放して、 システムがクラッシュしないようにします。pdflush
はファイルシステムエラーの 原因になったり仮想化ゲストを起動不可にする可能性のある、仮想化ゲスト又は他のシステムのプロセスを 破棄します。
警告
(0.5 * RAM) + (overcommit ratio * RAM) = Recommended swap size
KVM hypervisor は仮想化 CPU のオーバーコミットをサポートします。仮想化 CPU は 仮想化ゲストが許容する負荷限度までオーバーコミットが可能です。但し、100% 近くの負荷は 要求の未処理や、使用に適しない反応時間の原因になるため、VCPU のオーバーコミットには 注意が必要です。
重要
28.5. /etc/grub.conf の修正
/etc/grub.conf
ファイルの変更をする方法を説明しています。Xen hypervisor を 使用するには、xen
カーネルを使用しなければなりません。 既存の xen
カーネルエントリのコピーにより、確実に全ての 重要な行をコピーして下さい。そうしないとシステムがブート時にパニックを起こします。 (initrd
が '0
' の連続を持つ) xen
hypervisor 特有の値を必要とする場合は、それらを grub エントリの xen
行に追記する必要があります。
grub.conf
エントリの例です。個人のシステムの grub.conf
は 異なるでしょう。以下の例の重要な部分は title
行から次の新しい行のセクションです。
#boot=/dev/sda default=0 timeout=15 #splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1 terminal --timeout=10 serial console title Red Hat Enterprise Linux Server (2.6.17-1.2519.4.21.el5xen) root (hd0,0) kernel /xen.gz-2.6.17-1.2519.4.21.el5 com1=115200,8n1 module /vmlinuz-2.6.17-1.2519.4.21.el5xen ro root=/dev/VolGroup00/LogVol00 module /initrd-2.6.17-1.2519.4.21.el5xen.img
注記
grub.conf
は異なっている可能性があります。仮想化と grub の使用に関する詳細は 25章Xen カーネルブートパラメータの設定 でご覧下さい。
grub.conf
の xen
行に dom0_mem=256M
を追記する必要があります。 以前の例の中の grub 設定ファイルの変更バージョンは以下のようになります:
#boot=/dev/sda default=0 timeout=15 #splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1 terminal --timeout=10 serial console title Red Hat Enterprise Linux Server (2.6.17-1.2519.4.21.el5xen) root (hd0,0) kernel /xen.gz-2.6.17-1.2519.4.21.el5 com1=115200,8n1 dom0_mem=256MB module /vmlinuz-2.6.17-1.2519.4.21.el5xen ro root=/dev/VolGroup00/LogVol00 module /initrd-2.6.17-1.2519.4.21.el5xen.img
28.6. 仮想化拡張を確認
注記
$ grep -E 'svm|vmx' /proc/cpuinfo
vmx
エントリを含んでおり、 Intel VT 拡張を持つ 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 lm constant_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm
svm
エントリを含んでおり、 AMD-V 拡張を持つ 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 lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8legacy ts fid vid ttp tm stc
flags:
" の内容は、システム上の各ハイパースレッド、コア、 又は CPU の複数倍として表ることがあります。
28.7. ゲストのタイプと実装を識別
#!/bin/bash declare -i IS_HVM=0 declare -i IS_PARA=0 check_hvm() { IS_X86HVM="$(strings /proc/acpi/dsdt | grep int-xen)" if [ x"${IS_X86HVM}" != x ]; then echo "Guest type is full-virt x86hvm" IS_HVM=1 fi } check_para() { if $(grep -q control_d /proc/xen/capabilities); then echo "Host is dom0" IS_PARA=1 else echo "Guest is para-virt domU" IS_PARA=1 fi } if [ -f /proc/acpi/dsdt ]; then check_hvm fi if [ ${IS_HVM} -eq 0 ]; then if [ -f /proc/xen/capabilities ] ; then check_para fi fi if [ ${IS_HVM} -eq 0 -a ${IS_PARA} -eq 0 ]; then echo "Baremetal platform" fi
注記
virsh capabilities
コマンドを 実行します。
28.8. 新規の特有 MAC アドレスを生成
macgen.py
として保存します。保存ディレクトリから、./macgen.py
を 使用してスクリプトを実行し、新規の MAC アドレスを生成します。サンプルの出力は以下のように なるでしょう:
$ ./macgen.py 00:16:3e:20:b0:11 #!/usr/bin/python # macgen.py script to generate a MAC address for virtualized guests on Xen # import random # def randomMAC(): mac = [ 0x00, 0x16, 0x3e, random.randint(0x00, 0x7f), random.randint(0x00, 0xff), random.randint(0x00, 0xff) ] return ':'.join(map(lambda x: "%02x" % x, mac)) # print randomMAC()
組込み済みのモジュール python-virtinst
を使用しても 新規 MAC アドレスと ゲスト設定ファイル用の UUID
を 生成できます。
# echo 'import virtinst.util ; print\ virtinst.util.uuidToString(virtinst.util.randomUUID())' | python # echo 'import virtinst.util ; print virtinst.util.randomMAC()' | python
#!/usr/bin/env python # -*- mode: python; -*- print "" print "New UUID:" import virtinst.util ; print virtinst.util.uuidToString(virtinst.util.randomUUID()) print "New MAC:" import virtinst.util ; print virtinst.util.randomMAC() print ""
28.9. Xen ゲスト用のネットワークバンド幅を制限
VIF
エントリの “rate
” パラメータ部分は仮想化ゲストを絞ることが出来ます。
rate
rate=
オプションは仮想マシンの 設定ファイル内のVIF=
エントリに追加して 仮想マシンのネットワークバンド幅を制限したり、又は時間ウィンドウ用に特定の 時間間隔を指定することができます。- 時間ウィンドウ
- 時間ウィンドウは
rate=
オプションへの選択肢です:デフォルトの時間ウィンドウは 50ms です。小さい時間ウィンドウは少なめの突発伝送 (burst transmission) を提供しますが、 補充レートと遅延は増加します。デフォルトの 50ms 時間ウィンドウは遅延とスループットの間の良いバランスです。 ほとんどのケースで変更は必要ないでしょう。
rate
パラメータ値と使用法の例
rate=10Mb/s
- ゲストからの発信ネットワークトラフィックを 10MB/s に制限します。
rate=250KB/s
- ゲストからの発信ネットワークトラフィックを 250KB/s に制限します。
rate=10MB/s@50ms
- バンド幅を 10MB/s に制限して 50ms 毎に 50KB のブロックをゲストに提供します。
VIF
エントリは以下のように なります:
vif = [ 'rate=10MB/s , mac=00:16:3e:7a:55:1c, bridge=xenbr1']
rate
エントリは仮想マシンのインターフェイスを 発信トラフィック用に 10MB/s に制限します。
28.10. Xen プロセッサ類似物の設定
virsh
か virt-manager
でセットできます:
virsh
を使用して CPU 類似物をセットするには、 詳細を 仮想 CPU 類似物の設定 で参照して下さい。
virt-manager
を使用して CPU 情報を設定し、表示するには、 その詳細を 「仮想 CPU の表示 」 で参照して下さい。
28.11. Xen hypervisor の修正
/boot/grub/grub.conf
への 変更がかかわってきます。複数ホストの設定ファイルの管理はその数の増加と共に難しくなってきます。 システム管理者は通常、複数の grub.conf
ファイルの編集にはカットアンド ペーストを好むものです。これを実行する場合は、仮想化エントリ内の 5つの行すべてを含めることを 忘れないで下さい(さもないと、システムエラーの原因になります)。Hypervisor 特有の値はすべて、 xen
の行にあります。この例では、正しい grub.conf
仮想化エントリを表示しています:
# boot=/dev/sda/ default=0 timeout=15 #splashimage=(hd0, 0)/grub/splash.xpm.gz hiddenmenu serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1 terminal --timeout=10 serial console title Red Hat Enterprise Linux Server (2.6.17-1.2519.4.21. el5xen) root (hd0, 0) kernel /xen.gz-2.6.17-1.2519.4.21.el5 com1=115200,8n1 module /vmlinuz-2.6.17-1.2519.4.21el5xen ro root=/dev/VolGroup00/LogVol00 module /initrd-2.6.17-1.2519.4.21.el5xen.img
'dom0_mem=256M'
を追記します。以下の例は、hypervisor のメモリーエントリを修正した grub.conf
です。
# boot=/dev/sda
default=0
timeout=15
#splashimage=(hd0,0)/grubs/splash.xpm.gz
hiddenmenu
serial --unit=0 --speed =115200 --word=8 --parity=no --stop=1
terminal --timeout=10 serial console
title Red Hat Enterprise Linux Server (2.6.17-1.2519.4.21. el5xen)
root (hd0,0)
kernel /xen.gz-2.6.17-1.2519.4.21.el5 com1=115200,8n1 dom0_mem=256MB
module /vmlinuz-2.6.17-1.2519.4.21.el5xen ro root=/dev/VolGroup00/LogVol00
module /initrd-2.6.17-1.2519.4.21.el5xen.img
28.12. 非常にセキュアな ftpd
vsftpd
は para-virtualized ゲストの インストールツリー(例えば、Red Hat Enterprise Linux 5 のレポジトリ)又は他のデータ へのアクセスを提供します。サーバーのインストール時に vsftpd
を インストールしていない場合は、インストールメディアの Server
ディレクトリから RPM パッケージを取得して、rpm -ivh vsftpd*.rpm
を 使用してインストールできます(RPM パッケージは作業中のディレクトリになければならないことに 注意して下さい)。
vsftpd
を設定するには、vipw
を 使用して/etc/passwd
を編集することにより、ftp ユーザーのホームディレクトリを para-virtualized ゲストのインストールツールの保存先となるディレクトリに変更します。ftp ユーザー用の エントリのサンプルは以下のようになります:ftp:x:14:50:FTP User:/xen/pub:/sbin/nologin
chkconfig --list vsftpd
を使用して、vsftpd
が 有効になっていないことを確認します:$ chkconfig --list vsftpd vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
chkconfig --levels 345 vsftpd on
を実行して、ランレベル 3 と 4 と 5 で vsftpd が自動的にスタートするようにします。chkconfig --list vsftpd
コマンドを使用すると、vsftpd
デーモン が システムブート時にスタートするように有効になっていることを確認できます:$ chkconfig --list vsftpd vsftpd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
service vsftpd start vsftpd
を使用して、vsftpd サービスを スタートします:$service vsftpd start vsftpd Starting vsftpd for vsftpd: [ OK ]
28.13. LUN 永続化の設定
システムがマルチパスを使用していない場合、udev
を使用して LUN 永続化を実装することができます。自分のシステムで LUN 永続化の実装をする前に、正しい UUID を取得することを確認して下さい。これらを取得した後は、/etc
ディレクトリ内にある scsi_id
ファイルを編集して LUN 永続化を設定できます。テキストエディタでこのファイルを開いたら、以下の行をコメントアウトする必要があります:
# options=-b
# options=-g
scsi_id
コマンドを使用します:
# scsi_id -g -s /block/sdc *3600a0b80001327510000015427b625e*
/etc/udev/rules.d
ディレクトリ内にある 20-names.rules
ファイルを 編集します。デバイス命名ルールは以下の形式に従います:
# KERNEL="sd*", BUS="scsi", PROGRAM="sbin/scsi_id", RESULT="UUID
", NAME="devicename
"
UUID
と devicename
を、上記の取り込んだ UUID エントリに入れ換えます。その規則は以下に似たものになります:
KERNEL="sd*
", BUS="scsi", PROGRAM="sbin/scsi_id", RESULT="3600a0b80001327510000015427b625e
", NAME="mydevicename
"
/dev/sd*
パターンに一致する全てのデバイスを有効にして、任意の UUID を検査するようになります。一致するデバイスを発見した場合、 /dev/devicename
と呼ばれるデバイスノードを作成します。この例では、デバイスノードは /dev/mydevice
にしています。最後に /etc/rc.local
ファイルに以下の行を追記します:
/sbin/start_udev
マルチパス環境内で LUN 永続化を実装するには、マルチパスデバイス用のエイリアス名を定義する必要があります。例えば、/etc/
ディレクトリ内にある multipath.conf
ファイルを編集して、四つのデバイスエイリアスを定義する必要があります。
multipath { wwid 3600a0b80001327510000015427b625e alias oramp1 } multipath { wwid 3600a0b80001327510000015427b6 alias oramp2 } multipath { wwid 3600a0b80001327510000015427b625e alias oramp3 } multipath { wwid 3600a0b80001327510000015427b625e alias oramp4 }
/dev/mpath/oramp1
、/dev/mpath/oramp2
、/dev/mpath/oramp3
、及び dev/mpath/oramp4
です。デバイスは /dev/mpath
ディレクトリ内に存在します。これらの LUN 名は、各 LUN 毎の wwid 上でエイリアス名を作成する為、再起動後にも残る永続性を持ちます。
28.14. ゲスト用の SMART ディスク監視を無効化
/sbin/service smartd stop /sbin/chkconfig --del smartd
28.15. 古い Xen 設定ファイルを整理
/var/lib/xen
内で、通常 vmlinuz.******
、及び initrd.******
と名付けられたファイルが累積してきます。これらのファイルは ブートに失敗したか、又は他の理由で失敗した仮想マシンからの initrd 及び vmlinuz ファイルです。 これらのファイルはスタートアップシーケンス中に仮想マシンのブートディスクから抽出された一時 ファイルです。これらは仮想マシンが正常にシャットダウンした後は自動的に削除されるべきものです。 その後は、このディレクトリから古い無用なコピーを安全に削除できます。
28.16. VNC サーバーの設定
vino-preferences
コマンドを実行することもできます。
~/.vnc/xstartup
ファイルを編集することで、 vncserver がスタートする時にはいつも GNOME セッションが スタートするようにします。vncserver スクリプトを初めて 実行する時は使用する VNC セッション用のパスワードを要求して来ます。xstartup
ファイルのサンプル:#!/bin/sh # Uncomment the following two lines for normal desktop: # unset SESSION_MANAGER # exec /etc/X11/xinit/xinitrc [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources #xsetroot -solid grey #vncconfig -iconic & #xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & #twm & if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then eval `dbus-launch --sh-syntax –exit-with-session` echo "D-BUS per-session daemon address is: \ $DBUS_SESSION_BUS_ADDRESS" fi exec gnome-session
28.17. ゲスト設定ファイルのクローン
uuidgen
コマンド使用)。それから、vif
エントリには、各ゲスト用に独自の MAC アドレスを定義する必要があります(既存のゲストからゲスト設定をコピーする場合は、スクリプトを作成して処理できます)。xen ブリッジの情報には、既存のゲスト設定ファイルを新規ホストに移動する場合、xenbr
エントリを更新して、ユーザーのローカルネットワーキング設定に一致させます。デバイスエントリには、'disk='
セクション内のエントリを修正して、それを正しいゲストイメージに向けます。
/etc/sysconfig/network
ファイルの HOSTNAME エントリを修正して、新しいゲストのホスト名に一致するようにしなければなりません。
/etc/sysconfig/network-scripts/ifcfg-eth0
ファイルの HWADDR
アドレスを修正して、ifconfig eth0
からの 出力に一致するようにしなければなりません。そして、静的 IP アドレスを使用している場合は、IPADDR
エントリを修正する必要があります。
28.18. 既存ゲストとその設定ファイルを複製
name
- hypervisor によって知られており、管理ユーティリティに表示されているゲストの名前です。このエントリはシステム内で特有でなければなりません。
uuid
- ゲスト用の特有の処理です。新規の UUID は
uuidgen
コマンドを 使用して再生成できます。UUID の出力のサンプルは以下のようになります:$ uuidgen a984a14f-4191-4d14-868e-329906b211e5
vif
- MAC アドレス は各ゲスト用に 特有の MAC アドレスを定義する必要があります。標準の ツールが使用されると、これは自動的に行われます。既存のゲストからゲスト設定を コピーしている場合は、スクリプト 「新規の特有 MAC アドレスを生成」 の使用で達成できます。
- 新規のホストに向けて既存のゲスト設定ファイルを移動したり複製したりする場合は、
xenbr
エントリを調節して使用中のローカル ネットワーキング設定に対応するようにしなければなりません。(brctl show
コマンドを使用すると、ブリッジ情報を取得できます)。 - デバイスエントリについては、そのエントリを
disk=
セクション内で調節して、正しいゲストイメージにポイントする ように確認します。
/etc/sysconfig/network
HOSTNAME
エントリをゲストの新しいhostname
に 合わせて変更します。/etc/sysconfig/network-scripts/ifcfg-eth0
HWADDR
アドレスをifconfig eth0
からの 出力に合わせて変更します。- 静的 IP アドレスが使用されている場合は、
IPADDR
エントリを 変更します。
第29章 カスタムの libvirt スクリプト作成
libvirt
の使用により、操作を簡単にするためのカスタムスクリプト作成を計画しているプログラマとシステム管理者に役立つ 一部の情報を提供します。
libvirt
を使用する新規のアプリケーションの作成を考慮しているプログラマに推奨される読み物です。
29.1. virsh を用いた XML 設定ファイルの使用
virsh
は XML 設定ファイルを処理できます。これを 使用することで特殊なオプションを持つ大規模な導入のスクリプトの利便性を得ることが出来るでしょう。XML ファイルで定義されているデバイスを実行中の para-virtualized ゲストに追加することができます。例えば、ISO ファイルを hdc
として実行中のゲストに追加するには、以下のような XML ファイルを作成します:
# cat satelliteiso.xml <disk type="file" device="disk"> <driver name="file"/> <source file="/var/lib/libvirt/images/rhn-satellite-5.0.1-11-redhat-linux-as-i386-4-embedded-oracle.iso"/> <target dev="hdc"/> <readonly/> </disk>
virsh attach-device
を実行して、ISO を hdc
として "satellite" と言うゲストに追加します:
# virsh attach-device satellite satelliteiso.xml
パート VII. トラブルシューティング
トラブルシューティングと問題解決への案内
注記
注記
第30章 Xen のトラブルシューティング
- Linux 及び仮想化のためのトラブルシューティングツール
- 問題判別の為のトラブルシューティング技術
- ログファイルの場所とログ内の情報の説明
30.1. Xen でのデバッギングとトラブルシューティング
トラブルシューティングの為の役に立つコマンドとアプリケーション
xentop
xentop
はホストシステムとゲストドメインに関するリアルタイムの 情報を表示します。xm
dmesg
とlog
の使用
vmstat
iostat
lsof
iostat
コマンド、mpstat
コマンド、及び sar
コマンドは全て sysstat
パッケージで用意されています。
XenOprofile
systemtap
crash
sysrq
sysrq t
sysrq w
ifconfig
tcpdump
tcpdump
は ネットワークのパケットを検査します。tcpdump
はネットワーク異常とネットワーク認証に関する 問題を見つけるのに役に立ちます。tcpdump
のグラフィカルバージョンがwireshark
と言う名前で存在します。brctl
brctl
は Virtualization linux カーネル内のイーサネットブリッジ構成を検査して設定するネットワーキングツールです。これらのサンプルコマンドを実行するには root アクセスが必要になります:# brctl show bridge-name bridge-id STP enabled interfaces ----------------------------------------------------------------------------- xenbr0 8000.feffffff no vif13.0 xenbr1 8000.ffffefff yes pddummy0 xenbr2 8000.ffffffef no vif0.0 # brctl showmacs xenbr0 port-no mac-addr local? aging timer 1 fe:ff:ff:ff:ff: yes 0.00 2 fe:ff:ff:fe:ff: yes 0.00 # brctl showstp xenbr0 xenbr0 bridge-id 8000.fefffffffff designated-root 8000.fefffffffff root-port 0 path-cost 0 max-age 20.00 bridge-max-age 20.00 hello-time 2.00 bridge-hello-time 2.00 forward-delay 0.00 bridge-forward-delay 0.00 aging-time 300.01 hello-timer 1.43 tcn-timer 0.00 topology-change-timer 0.00 gc-timer 0.02
Server
レポジトリ内で見ることが できます。
- strace は他のプロセスで受信されて使用されたシステムコールと イベントを追跡するコマンドです。
- vncviewer: 使用中のサーバー、又は仮想マシン上で 稼働している VNC サーバーに接続します。
yum install vnc
コマンドを使用すると vncviwer がインストールできます。 - vncserver: 使用するサーバー上でリモートデスクトップを 開始します。そしてユーザーがリモートセッションを通じて virt-manager などのグラフィカル ユーザーインターフェイスを実行できるようにします。vncserver の インストールには、
yum install vnc-server
コマンドを使用します。
30.2. ログファイルの概要
- Xen の設定ファイルディレクトリは
/etc/xen/
です。 このディレクトリには、xend
デーモンと他の仮想マシン設定ファイルが含まれています。ネットワークスクリプトファイルはscripts
ディレクトリ内に存在します。 - 全ての Xen ログファイルは
/var/log/xen
ディレクトリに 格納してあります。
- 全てのファイルベースイメージ用のデフォルトディレクトリは
/var/lib/libvirt/images
ディレクトリです。 - Xen カーネル情報は
/proc/xen/
ディレクトリに格納して あります。
30.3. ログファイルの説明
xend
デーモンと qemu-dm
プロセスを特長とします。これらの二つのユーティリティは複数ログファイルを /var/log/xen/
ディレクトリに書き込みます:
xend.log
はxend
デーモンにより収集された通常のシステムイベント、又はオペレータ先導のアクションのどちらでも、全てのデータを含むログファイルです。全ての仮想マシン運用 (作成、シャットダウン、破棄など) はこのログに現われます。xend.log
は通常、ユーザーがイベントやパフォーマンス問題を追跡する時に調査する最初の場所です。ここには、エラーメッセージの 詳細なエントリと状況が含まれています。xend-debug.log
はxend
と Virtualization サブシステム (フレームバッファ、Python スクリプトなど) からのイベントエラーの記録を含むログファイルです。
xen-hotplug-log
は、hotplug イベントからのデータを含むログファイルです。デバイス、又はネットワークのスクリプトがオンラインに出ない場合はイベントはここに表示されます。qemu-dm.[PID].log
は各完全仮想化ゲスト用のqemu-dm
プロセスで作成されたログファイルです。このログファイルを使用する時には、仮想マシン上のqemu-dm
プロセスを隔離する為のプロセス引数を検査するのにps
コマンドを使用することで任意のqemu-dm
プロセス PID を取り込む必要があります。この [PID] シンボルは実際の PIDqemu-dm
プロセスで入れ換えることに注意して下さい。
/.virt-manager
ディレクトリ内にある virt-manager.log
ファイルの生成データで確認することができます。仮想マシンマネージャを開始する度に既存のログファイル内容は書き変えられることに注意して下さい。システムエラーの後では、 仮想マシンマネージャを再起動する前に virt-manager.log
をバックアップすることを忘れないで下さい。
30.4. 重要ディレクトリの場所
- 仮想ゲストイメージは
/var/lib/libvirt/images
ディレクトリ内にあります。
xend
デーモンを再開始する場合、それは/var/lib/xen/xend-db
ディレクトリにあるxend-database
を更新します。
- 仮想マシンダンプ (
xm dump-core
コマンドで実行) は/var/lib/xen/dumps
ディレクトリにあります。
/etc/xen
ディレクトリには、システムリソースの管理に使用する設定ファイルが含まれています。xend
デーモン設定ファイルは/etc/xen/xend-config.sxp
です。このファイルを編集して システム全体の変更を実装し、そしてネットワーキングを設定することができます。しかし、/etc/xen/
フォルダ内でファイルを手動で編集することは推奨 できません。
proc
フォルダは、ユーザーがシステム情報を取得できるようにするもう1つのリソースです。以下の proc エントリは/proc/xen
ディレクトリにあります:
/proc/xen/capabilities
/proc/xen/balloon
/proc/xen/xenbus/
30.5. ログを使用したトラブルシューティング
xend.log
ファイルには、xm log
コマンドを実行する時と同じ基本情報があります。このログは /var/log/
ディレクトリにあります。カーネルを実行してドメインを作成するためのログエントリの例を以下にしめします:
[2006-12-27 02:23:02 xend] ERROR (SrvBase: 163) op=create: Error creating domain: (0, 'Error') Traceback (most recent call list) 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')
xend-debug.log
は、システム管理者に非常に役に立ちます。これには、 xend.log
以上の詳細情報が含まれています。以下に同じカーネルドメイン作成問題についての同じエラーデータを示します:
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
30.6. シリアルコンソールを使用したトラブルシューティング
grub.conf
ファイル内のオプションを修正して、com1
/dev/ttyS0
上の 38400-bps シリアルコンソールを有効にする必要があります:
title Red Hat Enterprise Linux (2.6.18-8.2080_xen0) root (hd0,2) kernel /xen.gz-2.6.18-8.el5 com1=38400,8n1 module /vmlinuz-2.618-8.el5xen ro root=LABEL=/rhgb quiet console=xvc console=tty xencons=xvc module /initrd-2.6.18-8.el5xen.img
sync_console
は非同期の hypervisor コンソール出力でハングの原因となる問題の判定の手助けになります。そして "pnpacpi=off"
はシリアルコンソール上で入力を破損する問題を回避します。パラメータ "console=ttyS0"
と "console=tty"
はカーネルエラーが通常の VGA コンソールと シリアルコンソールの両方でログされることを意味します。それから、 ttywatch
をインストール及び設定をして、標準の null-modem ケーブルで接続されたリモートホスト上でデータをキャプチャすることができます。例えば、リモートホスト上で以下のように入力します:
注記
ttywatch --name myhost --port /dev/ttyS0
/dev/ttyS0
からの出力をファイル /var/log/ttywatch/myhost.log
にパイプします。
30.7. Para-virtualized ゲストコンソールのアクセス
# virsh console [guest name, ID or UUID]
virt-manager
を使用して仮想テキストコンソールを 表示することができます。仮想マシンの詳細ウィンドウ内で、表示 メニューから シリアルコンソール を選択します。
30.8. 完全仮想化ゲストコンソールのアクセス
grub.conf
ファイルを修正して、'console =ttyS0 console=tty0'
パラメータを含むようにする必要があります。これにより、カーネルメッセージが仮想シリアルコンソール (及び通常のグラフィカルコンソール) に確実に送信されることになります。完全仮想化ゲスト内で仮想シリアルコンソールを使用する予定であれば、/etc/xen/
ディレクトリ内で設定ファイルを編集しなければなりません。ホストドメインで以下のコマンドを入力して、シリアルコンソールにアクセスできます:
# virsh console
virt-manager
を使用して仮想テキストコンソールを 表示することができます。仮想マシンの詳細ウィンドウ内で、表示 メニューから シリアルコンソール を選択します。
30.9. ゲストディスクイメージ上のデータにアクセス
yum install kpartx
kpartx -av /dev/xen/guest1 add map guest1p1 : 0 208782 linear /dev/xen/guest1 63 add map guest1p2: 0 16563015 linear /dev/xen/guest1 208845
vgchange -ay
コマンドを使用して そのパーティションのボリュームグループ(デフォルトで VolGroup00
) を アクティベートする必要があります:
# kpartx -a /dev/xen/guest1 #vgscan Reading all physical volumes . This may take a while... Found volume group "VolGroup00" using metadata type lvm2 # vgchange -ay VolGroup00 2 logical volumes in volume group VolGroup00 now active. # lvs LV VG Attr Lsize Origin Snap% Move Log Copy% LogVol00 VolGroup00 -wi-a- 5.06G LogVol01 VolGroup00 -wi-a- 800.00M # mount /dev/VolGroup00/LogVol00 /mnt/ .... #umount /mnt/ #vgchange -an VolGroup00 #kpartx -d /dev/xen/guest1
vgchange -an
で活動停止すること、 kpartx-d
でパーティションを削除すること、及び losetup -d
でループデバイスを削除することを忘れないで下さい。
30.10. 一般的な Xen の問題
xend
サービスを開始しようとして、何も起こらない場合、virsh list
と入力して、以下の情報を受けます:
Error: Error connecting to xend: Connection refused. Is xend running?
xend start
の実行を試みて、他のエラーも受理します:
Error: Could not obtain handle on privileged command interfaces (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 26 in ? from xen.xend import XendDomain File "/usr//lib/python2.4/site-packages/xen/xend/XendDomain.py" , line 33, in ? from xen.xend import XendDomainInfo File "/usr/lib/python2.4/site-packages/xen/xend/image.py" , line37, in ? import images File "/usr/lib/python2.4/site-packages/xen/xend/image.py" , line30, in ? xc = xen.lowlevel.xc.xc () RuntimeError: (2, 'No such file or directory' )
kernel-xen
以外のカーネルでホストを再起動したことです。これを修正するには、起動時に kernel-xen
カーネルを選択することです(又はそれを grub.conf
ファイル内でデフォルトのカーネルにセットします)。
30.11. ゲスト作成のエラー
"Invalid argument"
のエラーメッセージが出ることがあります。これは通常、ブートしようとしているカーネルイメージが hypervisor に不適合と言う意味です。例として、PAE のみの FC6 hypervisor で非 PAE FC5 カーネルを実行しようとすると、この状況が出ます。
grub.conf
デフォルトのカーネルは Virtualization カーネルではなく、生のままのカーネルに戻ることになります。
/etc/sysconfig/kernel/
ディレクトリにあるデフォルトカーネル RPM を修正する必要があります。grub.conf
ファイルの中で kernel-xen
パラメータがデフォルトのオプションとして設定されていることを確認しなければなりません。
30.12. シリアルコンソールを使用したトラブルシューティング
30.12.1. Xen 用のシリアルコンソール出力
/boot/grub/grub.conf
ファイルを修正します。
com1
にある場合は、 以下に示した位置に、com1=115200,8n1
の行、 console=tty0
の行、及び console=ttyS0,115200
の 行を挿入することにより /boot/grub/grub.conf
を変更します。
title Red Hat Enterprise Linux 5 i386 Xen (2.6.18-92.el5xen) root (hd0, 8) kernel /boot/xen.gz-2.6.18-92.el5com1=115200,8n1
module /boot/vmlinuz-2.6.18-92.el5xen ro root=LABEL=VG_i386console=tty0
console=ttyS0,115200
module /boot/initrd-2.6.18-92.el5xen.img
com2
にある場合は、 以下に示してある位置に com2=115200,8n1 console=com2L
行、 console=tty0
行、及び console=ttyS0,115200
行を挿入することにより、/boot/grub/grub.conf
を 変更します。
title Red Hat Enterprise Linux 5 i386 Xen (2.6.18-92.el5xen) root (hd0, 8) kernel /boot/xen.gz-2.6.18-92.el5 com2=115200,8n1 console=com2L module /boot/vmlinuz-2.6.18-92.el5xen ro root=LABEL=VG_i386 console=tty0 console=ttyS0,115200 module /boot/initrd-2.6.18-92.el5xen.img
com1
, com2
など)に hypervisor がシリアルデータを出力します。
com2
ポートを使用している例では、パラメータ console=ttyS0
が vmlinuz
行上で使用されています。console=ttyS0
として 使用されている各ポートの動作は標準の Linux 動作ではありません。これは Xen 環境特有の 動作です。
30.12.2. para-virtualized ゲストからの Xen シリアルコンソール出力
virsh console
" の 使用で取り込むか、あるいは virt-manager
の "シリアル" ウィンドウ内に取り込めます。以下の手順を使用して仮想シリアルコンソールのセットアップを します:
- para-virtualized ゲストへログイン
/boot/grub/grub.conf
を以下のように編集します:Red Hat Enterprise Linux 5 i386 Xen (2.6.18-92.el5xen) root (hd0, 0) kernel /boot/vmlinuz-2.6.18-92.el5xen ro root=LABEL=VG_i386 console=xvc0 initrd /boot/initrd-2.6.18-92.el5xen.img
- para-virtualized ゲストを再起動
Xen デーモン (xend
) を設定することで para-virtualized ゲストのシリアルコンソールからの出力をログすることができます。
xend
を設定するには、/etc/sysconfig/xend
を編集します。以下のようにエントリを変更します:
# Log all guest console output (cf xm console) #XENCONSOLED_LOG_GUESTS=no
# Log all guest console output (cf xm console) XENCONSOLED_LOG_GUESTS=yes
/var/log/xen/console
ファイルに格納されています。
30.12.3. 完全仮想化ゲストからのシリアルコンソール出力
virsh console
" コマンドを使用して見ることができます。
- xend を使用した出力のログは利用できません。
- 出力データは欠如するか、混乱しているかも知れません。
ttyS0
、又は Windows で COM1
と呼ばれます。
console=tty0 console=ttys0,115200
" と言う行を 挿入することで /boot/grub/grub.conf
ファイルを修正します。
title Red Hat Enterprise Linux Server (2.6.18-92.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-92.el5 ro root=/dev/volgroup00/logvol00
console=tty0 console=ttys0,115200
initrd /initrd-2.6.18-92.el5.img
virsh console
" コマンドを使用するとシリアルコンソールの メッセージを見ることができます。
重要
/var/log/xen/console
にはログされていません。
30.13. ゲスト設定ファイル
/etc/xen
ディレクトリ内に 自動的に作成されます。以下の設定ファイルの例は、標準的な para-virtualized ゲスト用です:
name = "rhel5vm01" memory = "2048" disk = ['tap:aio:/var/lib/libvirt/images/rhel5vm01.dsk,xvda,w',] vif = ["type=ieomu, mac=00:16:3e:09:f0:12 bridge=xenbr0', "type=ieomu, mac=00:16:3e:09:f0:13 ] vnc = 1 vncunused = 1 uuid = "302bd9ce-4f60-fc67-9e40-7a77d9b4e1ed" bootloader = "/usr/bin/pygrub" vcpus=2 on_reboot = "restart" on_crash = "restart"
serial="pty"
は設定ファイル用のデフォルトであることに注意して下さい。この設定ファイルの例は、完全仮想化ゲスト用です:
name = "rhel5u5-86_64" builder = "hvm" memory = 500 disk = ['/var/lib/libvirt/images/rhel5u5-x86_64.dsk.hda,w'] vif = [ 'type=ioemu, mac=00:16:3e:09:f0:12, bridge=xenbr0', 'type=ieomu, mac=00:16:3e:09:f0:13, bridge=xenbr1'] uuid = "b10372f9-91d7-ao5f-12ff-372100c99af5' device_model = "/usr/lib64/xen/bin/qemu-dm" kernel = "/usr/lib/xen/boot/hvmloader/" vnc = 1 vncunused = 1 apic = 1 acpi = 1 pae = 1 vcpus =1 serial ="pty" # enable serial console on_boot = 'restart'
注記
virsh dumpxml
と virsh create
(又は virsh edit
) を使用して libvirt
設定ファイル (xml ベース) を編集して 下さい。これらはエラーチェックとセイフティチェック機能も持っています。
30.14. Xen エラーメッセージの解釈
failed domain creation due to memory shortage, unable to balloon domain0
xend.log
ファイルを確認することになります:
[2006-12-21] 20:33:31 xend 3198] DEBUG (balloon:133) Balloon: 558432 Kib free; 0 to scrub; need 1048576; retries: 20 [2006-12-21] 20:33:31 xend. XendDomainInfo 3198] ERROR (XendDomainInfo: 202 Domain construction failed
xm list Domain0
コマンドを使うと domain0 が使用しているメモリーの量をチェックできます。domain0 が縮小しなければ、コマンド virsh setmem dom0 NewMemSize
を使用してメモリーをチェックできます。
wrong kernel image: non-PAE kernel on a PAE
# xm create -c va-base Using config file "va-base" Error: (22, 'invalid argument') [2006-12-14 14:55:46 xend.XendDomainInfo 3874] ERRORs (XendDomainInfo:202) Domain construction failed Traceback (most recent call last) File "/usr/lib/python2.4/site-packages/xen/xend/XendDomainInfo.py", line 195 in create vm.initDomain() File " /usr/lib/python2.4/site-packages/xen/xend/XendDomainInfo.py", line 1363 in initDomain raise VmError(str(exn)) VmError: (22, 'Invalid argument') [2006-12-14 14:55:46 xend.XendDomainInfo 3874] DEBUG (XenDomainInfo: 1449] XendDlomainInfo.destroy: domain=1 [2006-12-14 14:55:46 xend.XendDomainInfo 3874] DEBUG (XenDomainInfo: 1457] XendDlomainInfo.destroy:Domain(1)
Unable to open a connection to the Xen hypervisor or daemon
/etc/hosts
設定ファイル内にローカルホストのエントリがない場合に起こります。そのファイルをチェックして、ローカルホストが有効であるかどうか確認します。以下に間違えたローカルホストのエントリ例を示します:
# Do not remove the following line, or various programs # that require network functionality will fail. localhost.localdomain localhost
# Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost localhost.localdomain. localhost
xen-xend.logfile
内で) :
Bridge xenbr1 does not exist!
# xm create mySQL01 Using config file " mySQL01" Going to boot Red Hat Enterprise Linux Server (2.6.18.-1.2747 .el5xen) kernel: /vmlinuz-2.6.18-12747.el5xen initrd: /initrd-2.6.18-1.2747.el5xen.img Error: Device 0 (vif) could not be connected. Hotplug scripts not working.
xend.log
は次のエラーを表示します:
[2006-11-14 15:07:08 xend 3875] DEBUG (DevController:143) Waiting for devices vif [2006-11-14 15:07:08 xend 3875] DEBUG (DevController:149) Waiting for 0 [2006-11-14 15:07:08 xend 3875] DEBUG (DevController:464) hotplugStatusCallback /local/domain/0/backend/vif/2/0/hotplug-status [2006-11-14 15:08:09 xend.XendDomainInfo 3875] DEBUG (XendDomainInfo:1449) XendDomainInfo.destroy: domid=2 [2006-11-14 15:08:09 xend.XendDomainInfo 3875] DEBUG (XendDomainInfo:1457) XendDomainInfo.destroyDomain(2) [2006-11-14 15:07:08 xend 3875] DEBUG (DevController:464) hotplugStatusCallback /local/domain/0/backend/vif/2/0/hotplug-status
/etc/xen
ディレクトリにある ゲスト設定ファイルを開きます。例えば、ゲスト mySQL01
を 編集する場合、
# vim /etc/xen/mySQL01
vif
エントリを見つけます。xenbr0
を デフォルトブリッジとして使用していると想定すると、適切なエントリは以下に似ているはずです:
# vif = ['mac=00:16:3e:49:1d:11, bridge=xenbr0',]
# xm shutdown win2k3xen12 # xm create win2k3xen12 Using config file "win2k3xen12". /usr/lib64/python2.4/site-packages/xenxm/opts.py:520: Deprecation Warning: Non ASCII character '\xc0' in file win2k3xen12 on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details execfile (defconfig, globs, locs,) Error: invalid syntax 9win2k3xen12, line1)
30.15. ログディレクトリのレイアウト
/etc/xen/
ディレクトリは以下を含みますxend
デーモンで使用される 設定ファイル- Virtualization ネットワーキング用のスクリプトを含んでいる
scripts
ディレクトリ
/var/log/xen/
- 全ての Xen 関連のログファイルを保有しているディレクトリ
/var/lib/libvirt/images/
- 仮想マシンイメージファイル用のデフォルトディレクトリ
- 仮想マシンイメージ用に異なるディレクトリを使用している場合は、そのディレクトリを 確実に SELinux ポリシーに追加して、インストールを開始する前にそれを再ラベルします。
/proc/xen/
- /proc ファイルシステム内の xen 関連の情報
第31章 トラブルシューティング
31.1. 利用可能なストレージとパーティションを判別する
cat /proc/partitions
" を実行することで達成できます。
# cat /proc/partitions major minor #blocks name 202 16 104857600 xvdb 3 0 8175688 hda
31.2. Xen ベースのゲストを再起動した後にコンソールはフリーズ
/etc/inittab
ファイルに 追加します:
1:12345:respawn:/sbin/mingetty xvc0
31.3. 仮想化イーサネットデバイスはネットワーキングツールでは見付からない。
Xen Virtual Ethernet
ネットワーキングを識別できません。これは以下を実行することにより 確証できます(Red Hat Enterprise Linux 4 及び Red Hat Enterprise Linux 5 用):
cat /etc/modprobe.conf
cat /etc/modules.conf
alias eth0 xen-vnif
alias eth0 xen-vnif
)を ゲストの各 para-virtualized インターフェイスに追加する必要があります。
31.4. ループデバイスエラー
/etc/modprobe.conf
で 調節できます。/etc/modprobe.conf
を編集して、以下の行を追加します:
options loop max_loop=64
phy: block device
か tap:aio
コマンドを使用します。完全仮想化システム用にループデバイス支持のゲストを使用するには、phy: device
か file: file
コマンドを使用します。
31.5. メモリー不足によるドメイン作成の失敗
dom0
がスペースを提供できるように縮小していないことが 考えられます。/var/log/xen/xend.log
を見ると、サンプルの エラーメッセージがこの発生を示しています:
[2006-11-21 20:33:31 xend 3198] DEBUG (balloon:133) Balloon: 558432 KiB free; 0 to scrub; need 1048576; retries: 20. [2006-11-21 20:33:52 xend.XendDomainInfo 3198] ERROR (XendDomainInfo:202) Domain construction failed“
xm list Domain-0
” を実行すると、現在 dom0
で 使用されているメモリーの量が確認できます。dom0
が縮小されていない場合は、 “xm mem-set Domain-0 NewMemSize
” を使用して小サイズをセットできます。 ここで、NewMemSize
はより小さい値にします。
31.6. 間違えたカーネルイメージのエラー
# xm create testVM Using config file "./testVM". Going to boot Red Hat Enterprise Linux Server (2.6.18-1.2839.el5) kernel: /vmlinuz-2.6.18-1.2839.el5 initrd: /initrd-2.6.18-1.2839.el5.img Error: (22, 'Invalid argument')このエラー内で、非 kernel-xen カーネルをブートしようとしていることをカーネル行が示すのが判ります。この例での正しいエントリは、 ”
kernel: /vmlinuz-2.6.18-1.2839.el5xen
” です。
/etc/grub.conf
設定ファイル内で デフォルトカーネルになっていることを確認することです。
kernel-xen
をインストールしている場合は、 以下のようにしてゲストを開始できます:
xm create -c GuestName
GuestName
は、ゲストの名前です。先の コマンドが GRUB ブートローダ画面を提示して、 ブートするカーネルを選択できるようにします。ブート用に kernel-xen カーネルを 選択する必要があります。ゲストがブートプロセスを完了すると、ゲストにログインして、 /etc/grub.conf
の編集により、デフォルトのブートカーネルを kernel-xen に変更することができます。単に “default=X
”(X は 0
で始まる番号)の行を kernel-xen の行が持つエントリに 変更するだけです。番号付けは 0
から開始するため、kernel-xen エントリが 2つめのエントリの場合は、デフォルトとして、1
を入力することになります。 例えば、“default=1
” となります。
31.7. 間違えたカーネルイメージのエラー:PAE プラットフォーム上に非 PAE カーネル
# xm create -c va-base Using config file "va-base". Error: (22, 'Invalid argument') [2006-12-14 14:55:46 xend.XendDomainInfo 3874] ERROR (XendDomainInfo:202) Domain construction failed Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/xen/xend/XendDomainInfo.py", line 195, in create vm.initDomain() File "/usr/lib/python2.4/site-packages/xen/xend/XendDomainInfo.py", line 1363, in initDomain raise VmError(str(exn)) VmError: (22, 'Invalid argument') [2006-12-14 14:55:46 xend.XendDomainInfo 3874] DEBUG (XendDomainInfo:1449) XendDomainInfo.destroy: domid=1 [2006-12-14 14:55:46 xend.XendDomainInfo 3874] DEBUG (XendDomainInfo:1457) XendDomainInfo.destroyDomain(1)32 bit 又は、非 PAE のカーネルを実行する必要がある場合は、使用するゲストを 完全仮想化の仮想マシンとして実行する必要があります。hypervisor の互換性ルールは以下のように なります:
- para-virtualized のゲストは、使用する hypervisor のアーキテクチャタイプに一致 しなければなりません。32 bit PAE のゲストを実行するには、32 bit PAE hypervisor が 必要になります。
- 64 bit para-virtualized のゲストを実行するには、Hypervisor も 64 bit の バージョンでなければなりません。
- 完全仮想化のゲストでは、32 bit ゲスト用に hypervisor は 32 bit か 64 bit の どちらかになります。32 bit 又は 64 bit hypervisor 上で、32 bit (PAE と 非-PAE) の ゲストを実行できます。
- 64 bit の完全仮想化のゲストを実行するには、使用する hypervisor も 64 bit で ある必要があります。
31.8. 完全仮想化 64 bit ゲストが起動失敗
Your CPU does not support long mode. Use a 32 bit distribution
” のエラー表示を出した場合、問題は pae
設定の欠如、又はその間違いです。使用ゲストの設定ファイル内に “pae=1
” のエントリがあることを確認して下さい。
31.9. ローカルホストエントリの欠如が virt-manager の失敗原因
virt-manager
アプリケーションが起動を失敗して、 “Unable to open a connection to the Xen hypervisor/daemon
” と言うようなエラーメッセージを 表示する可能性があります。これは、通常 /etc/hosts
ファイル内に localhost
エントリが欠如していることが 原因です。実際に localhost
エントリが あることを確認して、それが /etc/hosts
内に存在しない場合は、 新規のエントリを挿入します。不正な /etc/hosts
の例として以下のような 状態があります:
# Do not remove the following line, or various programs # that require network functionality will fail. localhost.localdomain localhost
# Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost localhost.localdomain localhost
31.10. ゲスト起動時の Microcode エラー
Applying Intel CPU microcode update: FATAL: Module microcode not found. ERROR: Module microcode does not exist in /proc/modules仮想マシンは、仮想 CPU 上で実行しているため、microcode を 更新する意味はありません。仮想マシンの microcode 更新を無効にするとこの エラーを停止できます:
/sbin/service microcode_ctl stop /sbin/chkconfig --del microcode_ctl
31.11. 仮想マシン開始時での Python 低評価警告メッセージ
xm create
” は 作業ディレクトリ内で設定ファイルを 見て、それから /etc/xen
で見ます。
# xm shutdown win2k3xen12 # xm create win2k3xen12 Using config file "win2k3xen12". /usr/lib64/python2.4/site-packages/xen/xm/opts.py:520: DeprecationWarning: Non-ASCII character '\xc0' in file win2k3xen12 on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details execfile(defconfig, globs, locs) Error: invalid syntax (win2k3xen12, line 1)
31.12. BIOS 内で、Intel VT と AMD-V の仮想化ハードウェア拡張を有効にする
手順31.1 BIOS 内で仮想化拡張を有効にする
- コンピュータを再起動して、システムの BIOS メニューを開きます。これは通常 delete 又は Alt と F4 を押すことで達成されます。
- Restore Defaults を選択して、それから Save & Exit を選びます。
- マシンの電源を切って電源供給を止めます。
- マシンの電源をいれて、BIOS Setup Utility を開きます。 Processor セクションを開いて、Intel®Virtualization Technology、あるいは、AMD-V を有効にします。一部のマシンでは Virtualization Extensions と 言う名前になっているかもしれません。Save & Exit を選択します。
- マシンの電源を切って電源供給を止めます。
cat /proc/cpuinfo | grep vmx svm
を実行します。 このコマンドが出力を出せば、仮想化拡張はこれで有効になっています。出力が ない場合は、そのシステムに仮想化拡張が存在しない、又は正しい BIOS 設定が 有効でないことになります。
31.13. KVM ネットワーキングパフォーマンス
- ゲストオペレーティングシステムをシャットダウンします。
- ゲストの設定ファイルを
virsh
コマンドで編集します。 (ここで、GUEST
とはゲスト名です):# virsh edit
GUEST
virsh edit
コマンドは$EDITOR
シェル変数を使用して使用するエディタを決定します。 - 設定内でネットワークインターフェイスセクションを見つけます。このセクションは、 以下の snippet に似ています:
<interface type='network'> [output truncated] <model type='rtl8139' /> </interface>
- モデルエレメントのタイプ属性を
'tl8139'
から'e1000'
へ変更します。これが rtl8139 ドライバーから e1000 ドライバーへとドライバーを変換します。<interface type='network'> [output truncated] <model type=
'e1000'
/> </interface> - 変更を保存してテキストエディタを終了します。
- ゲストオペレーティングシステムを再スタートします。
- 既存の仮想マシンから XML テンプレートを作成します:
# virsh dumpxml GUEST > /tmp/guest.xml
- XML ファイルをコピーして編集により、特有のフィールドを更新します: 仮想マシン名、 UUID、ディスクイメージ、MAC アドレス、他の特有なパラメータ。UUID と MAC アドレスの 行を削除すると、virsh が UUID と MAC アドレスを生成します。
# cp /tmp/guest.xml /tmp/new-guest.xml # vi /tmp/new-guest.xml
ネットワークインターフェイスセクションにモデルの行を追加します:<interface type='network'> [output truncated] <model type='e1000' /> </interface>
- 新しい仮想マシンを作成します:
# virsh define /tmp/new-guest.xml # virsh start new-guest
第32章 Xen para-virtualized ドライバーのトラブルシューティング
32.1. Red Hat Enterprise Linux 5 仮想化のログファイルとディレクトリ
Red Hat Enterprise Linux 5 では、xend
デーモンと qemu-dm
プロセスで書き込まれる ログファイルは全て以下のディレクトリに保存されます:
/var/log/xen/
xend
デーモンと qemu-dm プロセスで生成される 全てのログファイルを保持するディレクトリです。xend.log
- このログファイルは、通常のシステムイベントか、オペレータ由来のイベントで 生成された全てのイベントをログするために xend で使用されます。
- create、shutdown、又は destroy などの仮想マシン操作は全てこの ログファイルにログされます。
- 通常、このログファイルは問題が発生した時に最初に見るべき場所です。多くの 場合、ログファイルを眺めていき、実際のエラーメッセージの直前にログされた エントリを再確認することにより根本にある原因を識別することができます。
xend-debug.log
- xend とそのサブシステム(フレームバッファと Python スクリプト)からの エラーイベントを記録します
xen-hotplug.log
- hotplug イベントからのイベントをログします。
- オンラインに来ないデバイスや、オンライン上にないネットワークブリッジからの イベント通知はこのファイルにログされます。
qemu-dm.PID.log
- このファイルは、各完全仮想化のゲストの為に開始した
qemu-dm
プロセスによって作成されます。 PID
は、関連した qemu-dm プロセスの プロセスPID
で入れ替えるべきものです。- 任意の
qemu-dm
プロセスのPID
を 取り込むには、ps
コマンドを使用して、qemu-dm
が 所属する仮想マシンを識別できるプロセスの引数を見ることで達成できます。
home
ディレクトリ内の .virt-manager
と 言うディレクトリにあります。このディレクトリは通常、~/.virt-manager/virt-manager
となります。
注記
Red Hat Enterprise Linux 5 の仮想化環境でトラブルシューティングを実行している状況での 興味深いディレクトリとファイルが他にいくつかあります:
/var/lib/libvirt/images/
- ファイルベースゲストイメージ用の標準ディレクトリ
/var/lib/xen/xend-db/
- デーモンが再開始される度に生成される xend データベースを保持するディレクトリです。
/etc/xen/
- Xen hypervisor 用に多くの設定ファイルを格納します。
/etc/xen/xend-config.sxp
は xend デーモン用の主要設定ファイルです。xend-config.sxp
ファイルは、libvirt
で設定されていない他の機能と移行を有効/無効にすることができます。 それ以外の全ての機能にはlibvirt
ツールを使用して下さい。
/var/xen/dump/
- 仮想マシンで生成されたり、
xm dump-core
コマンドを 使用した時に生成されるダンプを保管します。 /proc/xen/
- 以下のファイル内に
xen-kernel
情報を格納します:/proc/xen/capabilities
/proc/xen/privcmd
/proc/xen/balloon
/proc/xen/xenbus
/proc/xen/xsd_port
/proc/xen/xsd_kva
32.2. Para-virtualized ゲストは、Red Hat Enterprise Linux 3 のゲストオペレーティング システム上ではロードに失敗。
# insmod xen-platform-pci.o Warning: kernel-module version mismatch xen-platform-pci.o was compiled for kernel version 2.4.21-52.EL while this kernel is version 2.4.21-50.EL xen-platform-pci.o: unresolved symbol __ioremap_R9eac042a xen-platform-pci.o: unresolved symbol flush_signals_R50973be2 xen-platform-pci.o: unresolved symbol pci_read_config_byte_R0e425a9e xen-platform-pci.o: unresolved symbol __get_free_pages_R9016dd82 [...]解決策としては、 para-virtualized ドライバーを使用するハードウェアの為に 正しい RPM パッケージを使用することです。
32.3. Red Hat Enterprise Linux 3 に para-virtualized ドライバーをインストールする時点に 警告メッセージ。
Warning: kernel-module version mismatch xen-platform-pci.o was compiled for kernel version 2.4.21-52.EL while this kernel is version 2.4.21-50.EL Warning: loading xen-platform-pci.o will taint the kernel: forced load See http://www.tux.org/lkml/#export-tainted for information about tainted modules Module xen-platform-pci loaded, with warnings
32.4. para-virtualized ドライバーを手動でロードする
# cd /lib/modules/`uname -r`/ # find . -name 'xen-*.ko' -print
# insmod \ /lib/modules/'uname -r'/{LocationofPV-drivers}/xen-platform-pci.ko # insmod /lib/modules/'uname -r'/{LocationofPV-drivers}/xen-balloon.ko # insmod /lib/modules/'uname -r'/{LocationofPV-drivers}/xen-vnif.ko # insmod /lib/modules/'uname -r'/{LocationofPV-drivers}/xen-vbd.ko
32.5. para-virtualized ドライバーが正常にロードされたことを確認
/var/log/messages
にログしていることを確認します。
# grep -E "vif|vbd|xen" /var/log/messages xen_mem: Initialising balloon driver vif vif-0: 2 parsing device/vif/0/mac vbd vbd-768: 19 xlvbd_add at /local/domain/0/backend/vbd/21/76 vbd vbd-768: 19 xlvbd_add at /local/domain/0/backend/vbd/21/76 xen-vbd: registered block device major 202又は、
lsmod
コマンドを使用してロードされた para-virtualized ドライバーを一覧表示することもできます。それが xen_vnif
、 xen_vbd
、xen_platform_pci
、及び xen_balloon
のモジュールを 含む一覧を出力するはずです。
# lsmod|grep xen xen_vbd 19168 1 xen_vnif 28416 0 xen_balloon 15256 1 xen_vnif xen_platform_pci 98520 3 xen_vbd,xen_vnif,xen_balloon,[permanent]
32.6. システムは、para-virtualized ドライバーではスループットに制限があります
vif
= 行の type=ioemu
の 部分を削除します。
付録A Xen システムアーキテクチャ
domain-name
)、識別子番号 (domain-id
)、または UUID。domain-name
はゲスト設定ファイルに適用するテキストの文字列です。このドメイン名はゲストの起動に使用され、ゲストの稼動時には同じ名前が、識別と制御のために使用されます。domain-id はゲストを識別し制御できるアクティブなドメインに割り当てられる 特有であっても永続性のない番号です。UUID はゲストの設定ファイルから制御される 永続性の特有の識別子であり、これがシステム管理ツールによって常時ゲストの 識別を確実にするものです。これは実行時にゲストから認識できます。新規の UUID は、 ゲストが最初にインストールされる時にシステムツールによって各ゲストに自動的に割り当てられます。
付録B その他のリソース
B.1. オンラインリソース
- http://www.cl.cam.ac.uk/research/srg/netos/xen/ Red Hat kernel-xen パッケージの抽出元である Xen™ para-virtualization マシンマネージャの プロジェクトウェブサイトです。このサイトはアップストリームの xen プロジェクトバイナリとソース コードを維持し、また xen とその関連技術に関する情報、アーキテクチャ概要、ドキュメント、及び 関連リンクも含んでいます。
- Xen コミュニティウェブサイト
- http://www.libvirt.org/ は
libvirt
仮想化 API の為の正式ウェブサイトです。 - http://virt-manager.et.redhat.com/ 仮想マシンの管理用のグラフィカルアプリケーションである 仮想マシンマネージャ(Virtual Machine Manager) (virt-manager)のプロジェクト WEB サイトです。
- オープン仮想化センター
- Red Hat ドキュメント
- 仮想化技術概要
- Red Hat 発展技術グループ
B.2. インストール済みドキュメント
/usr/share/doc/xen-<version-number>/
このディレクトリには、Xen para-virtualization hypervisor と設定の参考例、ハードウェア特有の情報、現在の Xen のアップストリームユーザードキュメントなどを含む、関連した管理ツールに関する豊富な情報が含まれています。man virsh
と/usr/share/doc/libvirt-<version-number>
— には、virsh
仮想マシン管理ユーティリティ用のサブコマンドと オプションと、更にはlibvirt
仮想化ライブラリ API に関する 総括的な情報が含まれています。/usr/share/doc/gnome-applet-vm-<version-number>
— ローカルで実行している仮想マシンを監視して管理するGNOME グラフィカルパネルアプレット用のドキュメントがあります。/usr/share/doc/libvirt-python-<version-number>
—libvirt
ライブラリ用の Python バインディングについての詳細を提供します。libvirt-python
パッケージにより、Python の開発者はlibvirt
virtualization 管理ライブラリを持つインターフェイスのプログラムを作成することが出来るようになります。/usr/share/doc/python-virtinst-<version-number>
—virt-install
コマンドに関するドキュメントを提供します。このコマンドは仮想マシン内の Fedora と Red Hat Enterprise Linux 関連のディストリビューションのインストール開始を援助するものです。/usr/share/doc/virt-manager-<version-number>
— 仮想マシンマネージャに関するドキュメントを提供します。仮想マシンマネージャは仮想マシン管理用のグラフィカルツールです。
用語集
- dom0
- ホスト、又はホストオペレーティングシステムとしても 知られています。
dom0
とは、Hypervisor を 稼働している Red Hat Enterprise Linux のホストインスタンスを指します。Virtualization-Hypervisor は ゲストオペレーティングシステムの仮想化を促進します。Dom0 は物理ハードウェア上で稼働して、そのハードウェアを管理して、それ自身とゲストオペレーティングシステムの為にリソースを割り当てます。 - domU
domU
とは、ホストシステム上で稼働するゲストオペレーティング システムを指します (ドメイン)。- Hypervisor
- hypervisor とは、ハードウェアをオペレーティングシステムから抽出して、複数の オペレーティングシステムが同じハードウェア上で稼働できるようにするソフトウェア です。hypervisor はホストオペレーティングシステム上で稼働し、他の仮想化 オペレーティングシステム群がそのホストのハードウェア上で稼働できるように します。
- I/O
- 入力/出力(input/output)の短縮形です(発音:アイオー)。I/O と言う用語は データをコンピュータと周辺機器との間で転送する全てのプログラム、操作、あるいは デバイスを示します。全ての転送は1つのデバイスからの出力であり、別のデバイスへの 入力となります。キーボードやマウスなどのデバイスは入力のみのデバイスであり、プリンター などのデバイスは出力のみとなります。書き込み可能な CD ROM は入力と出力両方のデバイス です。
- Itanium®
- Intel Itanium® プロセッサアーキテクチャ
- Kernel SamePage Merging
- Kernel SamePage Merging (KSM) モジュールは、KVM ゲストが同一のメモリーページ群を共有 できるようにする KVM hypervisor によって使用されます。共有されるページは通常、共通の ライブラリか、又は他の同一の使用頻度の高いデータです。KSM は各種のゲストと 増加続けるゲスト密集のためにキャッシュ内にこれらのライブラリを維持することにより、 特定のゲストのパフォーマンスを増強できます。
- LUN
- LUN(Logical Unit Number)は論理ユニット(SCSI プロトコルエンティティ)に 割り当てられた番号です。
- MAC アドレス
- MAC(Media Access Control)アドレスはネットワークインターフェイスコントローラの ハードウェアアドレスです。仮想化のコンテキストでは、MAC アドレスは、ローカルドメイン上の 各 MAC が特有である状態で仮想ネットワークインターフェイス用に生成されなければなりません。
- Para-virtualization
- Para-virtualization とは、時として xen カーネル、又は kernel-xen パッケージと呼ばれる特殊なカーネルを使用します。Para-virtualized ゲストカーネルは、ホストの ライブラリとデバイスを使用しながら、ホスト上で並行して実行されます。Para-virtualization の インストールは、セキュリティ設定(SELinux とファイル制御)で制限可能なシステム上で全ての デバイスへの完全なアクセスを持っています。完全仮想化よりも Para-virtualization の方が高速です。 Para-virtualization はロードバランシング、プロビジョニング、セキュリティ、及び統合性利便に 於いて効果的に使用できます。Fedora 9 の時点で、特別なカーネルはもう必要なくなりました。このパッチが 基幹の Linux ツリーに受け入れられてから、このバージョン以降の全ての Linux カーネルは para-virtualization 認識ができて利用可能になっています。
- Para-virtualized
- Para-virtualized のドライバー
- Para-virtualized のドライバーとは、完全仮想化の Linux ゲスト上で 動作するデバイスドライバーです。これらのドライバーは完全仮想化の ゲスト用にネットワークとブロックデバイスのパフォーマンスを大幅に 向上します。
- Security Enhanced Linux
- Security Enhanced Linux の省略名である、SELinux は LSM (Linux Security Modules) を Linux カーネル内で使用して、セキュリティポリシーに必要な各種の最低限特権を提供します。
- Universally Unique Identifier
- UUID (Universally Unique Identifier) とは、分散型コンピューティング環境の中で デバイス、システム、及び特定のソフトウェアオブジェクトの為の標準化した番号付け 手段です。仮想化の中での UUID のタイプとしては、
ext2
とext3
のファイルシステムの識別子、 RAID デバイス識別子、iSCSI と LUN の識別子、MAC アドレスと仮想マシンの識別子が あります。 - Xen
- Red Hat Enterprise Linux は Xen hypervisor 及び KVM hypervisor をサポートします。 (カーネルベース仮想マシン を参照) この2つのハイパバイザーは異なるアーキテクチャと開発アプローチを持ちます。 Xen hypervisor は 主要ホスト管理システムリソース及び 仮想化 API として 機能する Red Hat Enterprise Linux オペレーティングシステム下で動作します。 ホストは時には、dom0 とか、Domain0 と 呼ばれます。
- カーネルベース仮想マシン
- KVM (Kernel-based Virtual Machine カーネルベースの仮想マシン) とは、AMD64 と Intel 64 のハードウェア上の Linux 用 完全仮想化 ソリューションです。VM は 標準の Red Hat Enterprise Linux カーネル用に構築された Linux カーネルモジュールです。KVM は 仮想化ゲストとしての Windows と Linux のオペレーティングシステムを無修正で複数実行できます。KVM は hypervisor で あり、これは libvirt 仮想化ツール (virt-manager 及び virsh) を使用します。KVM は Linux カーネルモジュールの集合であり、デバイス、メモリー、及び Hypervisor モジュール自身の為の API 管理を管理します。仮想化ゲストは これらのモジュールに制御される Linux のプロセスとスレッドとして実行 されます。
- ゲストシステム
- ゲスト、仮想マシン、あるいは domU としても知られています。
- ドメイン
- domU と ドメイン は両方共ドメインです。 ドメインは Hypervisor 上で稼働します。 ドメインと言う用語は 仮想マシン に 似た意味を持ち、その双方は技術的に交換可能です。ドメインは仮想マシンです。
- ハードウェア仮想マシン
- 参照 完全仮想化
- ベアメタル
- この用語、ベアメタルとはコンピュータの背後にある物理的アーキテクチャを指す言葉です。 ベアメタル上でオペレーティングシステムを実行すると言うことは、言い方を変えると、物理的 ハードウェア上で無修正のオペレーティングシステムを実行すると言うことです。ベアメタル上で 実行しているオペレーティングシステムの例としては dom0 、又は通常にインストールされたオペレーティングシステムがあります。
- ホスト
- ホストオペレーティングシステム。別名、dom0ホストオペレーティングシステム環境は 完全仮想化した と Para-virtualized の両ゲストシステムの為に仮想化ソフトウェアを 実行します。
- 仮想マシン
- 仮想マシンとは、物理マシンのソフトウェア実装、あるいはプログラミング 言語です(例えば、Java ランタイム環境や LISP)。仮想化のコンテキストでは、仮想マシンは仮想化したハードウェア上で稼働しているオペレーティングシステムと 言う意味になります。
- 仮想化
- 仮想化とは、ソフトウェア実行の為の幅広い意味のコンピューティング用語です。通常は、1つのシステム上で他のプログラムと並行していて、且つ分離しているオペレーティングシステムのことです。仮想化のほとんどの既存実装は、hypervisor を 使用します。hypervisor はオペレーティングシステム上にあるソフトウェアレイヤーで あり、ハードウェアを抽出するためのものです。hypervisor は ゲストオペレーティング システムに仮想化ハードウェアを与えることによって複数のオペレーティング システムが同じ物理システム上で稼働できるようにします。オペレーティングシステムを 仮想化する方法は以下のように各種存在します:
- ハードウェアで支援された仮想化として、Xen と KVM を使用した 完全仮想化があります。(定義:完全仮想化)
- Para-virtualization は Linux ゲストを実行するために Xen で使用される技術です。 (定義:Para-virtualization)
- ソフトウェア仮想化、又は模倣。ソフトウェア仮想化はバイナリトランスレーションと 他の模倣技術を使用して無修正のオペレーティングシステムを実行します。ソフトウェア 仮想化はハードウェア支援の仮想化や para-virtualization よりもかなり遅くなります。 ソフトウェア仮想化は、QEMU の形式であり、Red Hat Enterprise Linux ではサポートが ありません。
- 仮想化 CPU
- システムは、物理プロセッサコアの数に比較して数多くの仮想 CPU (VCPU) を持ちます。 仮想 CPU の数量は有限であり、ゲスト仮想マシンに割り当て可能な仮想 CPU の 全数を示します。
- 完全仮想化
- Xen と KVM は完全仮想化を使用できます。完全仮想化はプロセッサのハードウェア機能を 使用して、背後にある物理システム (ベアメタル) の 全面的抽出を提供して、ゲストオペレーティングシステムが稼働できる新規の仮想システムを 作成します。このゲストオペレーティングシステムには修正の必要がありません。ゲスト オペレーティングシステムとゲスト上のアプリケーションはいずれも仮想環境の認識がなく、 通常通りに稼働します。Para-virtualization は Linux オペレーティングシステムの修正版を 必要とします。
- 完全仮想化した
- 完全仮想化 を参照
- 移行
- 移行(Migration)とは、仮想化ゲストを1つのホストから別のホストに移動する プロセスの呼び名です。移行はオフラインでも実施できます(ゲストは休止してそれから 移動)。又はライブでも可能です(ゲストは休止せずに移動)。Xen 完全仮想化ゲスト、 Xen para-virtualized ゲスト、及び KVM 完全仮想ゲストは全て移行できます。移行は仮想化の基幹機能です。ここではソフトウェアが完全にハードウェアから 分離されています。移行は以下の部分で役に立ちます:
- ロードバランシング:ホストがロード超過になった時点で、ゲストは使用度の低い 別のホストへと移動されます。
- ハードウェアフェイルオーバー:ホスト上のハードウェアデバイスがスタートに 失敗すると、ゲストは移動してホストが安全に停止と修理をできるようになります。
- 節電:低使用の期間にはゲスト群は他のホスト群に分配できるため、主ホストシステムは 電力を落として、節電とコスト低減ができます。
- 地域的な移行:より少ない遅延の為や、重大な事態の場合にはゲストは他の 場所に移動できます。
共有のネットワークストレージがゲストイメージの保存に使用されます。共有 ストレージ無しでは移行は不可能です。オフライン移行はゲストを休止して、それからゲストのメモリーのイメージを 移動先のホストに移動します。ゲストは移動先ホスト上で再開始されて、移動前の ホスト上でゲストが使用したメモリーは開放されます。オフライン移行にかかる時間はネットワークのバンド幅と遅延により変化します。 2GB のメモリーを持つゲストは、1 Gbit のイーサネットリンク上で数秒かかる でしょう。ライブ移行は移動元のホストでゲストを稼働状態に保ち、ゲストを停止せずに メモリーの移動を開始します。修正されたメモリーページは全て追跡されて イメージが送信された後に、目的地に送信されます。そのメモリーは変更のあったページで更新されます。このプロセスは、なんらかの発見的手法に到達するまで継続されます:それは全てのページが正常にコピーされるとか、又は 移動元の変更が速過ぎて、目的地のホストが進展できない状態などです。発見的手法に到達すると、ゲストは移動元のホスト上で一時停止して、レジスターとバッファが 送信されます。レジスターは目的地のホスト上でロードされて、ゲストはそれから その新しいホスト上で復帰します。ゲストがマージできない場合(ゲストがロード超過の時など 発生)、ゲストは一時停止して、それからオフライン移行が代理として開始されます。ライブ移行にかかる時間はネットワークのバンド幅と遅延度と、更にはゲスト上の 活動にも影響されます。ゲストがかなりの量の I/O 又は CPU を使用している場合、 移行にはより時間がかかります。
付録C 改訂履歴
改訂履歴 | |||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
改訂 4-74.400 | 2013-10-31 | Rüdiger Landmann | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 4-74 | 2012-07-18 | Anthony Towns | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-72 | Fri Nov 06 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-64 | Wed Oct 07 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-61 | Wed Sep 23 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-59 | Thu Sep 17 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-58 | Tue Sep 15 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-55 | Fri Sep 11 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-53 | Tue Sep 08 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-51 | Tue Aug 25 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-48 | Thu Aug 20 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-47 | Wed Aug 19 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-46 | Thu Aug 13 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-45 | Mon Aug 10 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-44 | Thu Aug 06 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-42 | Tue Aug 04 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-41 | Mon Aug 03 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-38 | Thu Jul 30 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-36 | Thu Jul 30 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-35 | Wed Jul 29 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-33 | Tue Jul 28 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-32 | Mon Jul 27 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-31 | Fri Jul 24 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-29 | Thu Jul 23 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-26 | Fri Jul 17 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-24 | Wed Jun 24 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-23 | Mon May 11 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.4-20 | Mon Mar 09 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.3-19 | Mon Feb 23 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.2-18 | Tue Jan 20 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.2-16 | Mon Jan 19 2009 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.2-14 | Tue Nov 18 2008 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.2-11 | Fri Aug 01 2008 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.2-10 | Wed May 14 2008 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.2-9 | Mon Apr 7 2008 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.2-7 | Mon Mar 31 2008 | Christopher Curran | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
改訂 5.2-5 | Wed Mar 19 2008 | Christopher Curran | |||||||||||||||||||||||||||||||||||
|
付録D Colophon
- Don Dutile は para-virtualized ドライバーセクションの技術編集に貢献。
- Barry Donahue は para-virtualized ドライバーセクションの技術編集に貢献。
- Rick Ring は仮想マシンマネージャセクションの技術編集に貢献。
- Michael Kearey は virsh 及び 仮想化フロッピードライブでの XML 設定ファイル使用に関する セクションの 技術編集に貢献。
- Marco Grigull は ソフトウエア互換性とパフォーマンスセクションの技術編集に貢献。
- Eugene Teo は virsh セクションでのゲスト管理の技術編集に貢献。
- 簡体中国語
- Leah Wei Liu
- 繁体中国語
- Chester Cheng
- Terry Chuang
- 日本語
- Kiyoto Hashida
- 韓国語
- Eun-ju Kim
- フランス語
- Sam Friedmann
- ドイツ語
- Hedda Peters
- イタリア語
- Francesco Valente
- ブラジル系ポルトガル語
- Glaucia de Freitas
- Leticia de Lima
- スペイン語
- Angela Garcia
- Gladys Guerrero
- ロシア語
- Yuliya Poyarkova