仮想化ガイド - Fedora Documentation

Fedora 13
仮想化ガイド
Fedora における仮想化ガイドの決定版
Curran Christopher [FAMILY Given]
仮想化ガイド
Fedora 13 仮想化ガイド
Fedora における仮想化ガイドの決定版
エディッション 0
著者
Curran Christopher [FAMILY
Given]
[email protected]
Copyright © 2008,2009,2010 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons
Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is
available at http://creativecommons.org/licenses/by-sa/3.0/. The original authors of this document,
and Red Hat, designate the Fedora Project as the "Attribution Party" for purposes of CC-BY-SA.
In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must
provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert,
Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the Infinity
Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other
countries.
For guidelines on the permitted uses of the Fedora trademarks, refer to https://fedoraproject.org/
wiki/Legal:Trademark_guidelines.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United
States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and
other countries.
All other trademarks are the property of their respective owners.
Fedora 仮想化ガイドには、Fedora に含まれる仮想化技術のインストール、設定、管理、トラブルシューティン
グに関する情報が含まれます。
注記:このドキュメントは、まだ執筆中であり、大幅に変更すること変更される可能性があり、プレビューとして本
書を提供しています。本書の内容や説明は完全とみなすべきではなく、注意して利用してください。
序文
vii
1. About this book ........................................................................................................... vii
2. 表記方法 ....................................................................................................................... vii
2.1. 印刷における表記方法 .......................................................................................... vii
2.2. 引用における表記方法 ........................................................................................... ix
2.3. 注記および警告 .................................................................................................... ix
3. フィードバック ................................................................................................................... x
I. 要件と制限
1
1. システム要件
3
2. KVM 互換性
5
3. 仮想化の制限
3.1. 仮想化における一般的な制限 .................................................................................
3.2. KVM の制限 ........................................................................................................
3.3. アプリケーションの制限 ..........................................................................................
7
7
7
8
II. インストール
11
4. 仮想化パッケージのインストール
13
4.1. 新規 Fedora インストールでの KVM のインストール ................................................ 13
4.2. 既存の Fedora システムへの KVM パッケージのインストール .................................... 15
5. 仮想ゲストのインストールの概要
5.1. Virtualized guest prerequesites and considerations ..........................................
5.2. virt-install を用いたゲストの作成 ..........................................................................
5.3. virt-manager を用いたゲストの作成 ......................................................................
5.4. PXE を用いたゲストのインストール ........................................................................
17
17
17
18
30
6. Red Hat Enterprise Linux 5 の完全仮想化ゲストとしてのインストール
37
7. 完全仮想化ゲストとしての Windows XP のインストール
47
8. 完全仮想化ゲストとしての Windows Server 2003 のインストール
65
9. 完全仮想化ゲストとしての Windows Server 2008 のインストール
69
III. 設定
10. Virtualized storage devices
10.1. 仮想フロッピーディスクコントローラーの作成方法 ...................................................
10.2. ゲストへのストレージデバイスの追加 ....................................................................
10.3. Configuring persistent storage in Fedora ........................................................
10.4. ゲストへの仮想 CD-ROM や DVD デバイスの追加 ...............................................
81
83
83
84
87
89
11. ネットワーク設定
91
11.1. libvirt を用いた NAT (Network address translation) .......................................... 91
11.2. libvirt を使用したブリッジネットワーク ................................................................... 92
12. KVM 準仮想化ドライバー
95
12.1. KVM Windows 準仮想化ドライバーのインストール ................................................ 95
12.2. 仮想フロッピーディスクでのドライバーのインストール ............................................. 106
12.3. 既存のデバイスに KVM 準仮想化ドライバーを使用する ........................................ 107
12.4. 新規デバイス用に KVM 準仮想化ドライバーを使用する ........................................ 107
13. PCI パススルー
111
13.1. virsh での PCI デバイスの追加 ......................................................................... 112
iii
仮想化ガイド
13.2. virt-manager を用いた PCI デバイスの追加 ...................................................... 114
13.3. virt-install で用いる PCI パススルー ................................................................. 118
14. SR-IOV
14.1. はじめに ........................................................................................................
14.2. SR-IOV の使用 ..............................................................................................
14.3. SR-IOV のトラブルシューティング ......................................................................
121
121
122
125
15. USB デバイスパススルー
127
16. N_Port ID Virtualization (NPIV)
129
17. KVM ゲストのタイミング管理
131
IV. 管理
135
18. サーバーのベストプラクティス
137
19. 仮想化のためのセキュリティ
19.1. ストレージのセキュリティ問題 ............................................................................
19.2. SELinux と仮想化 ...........................................................................................
19.3. SELinux ........................................................................................................
19.4. 仮想ファイアウォールの情報 ..............................................................................
139
139
139
141
141
20. KVM ライブマイグレーション
20.1. ライブマイグレーションの要件 ............................................................................
20.2. 共有ストレージサンプル:簡単な移行のための NFS ..............................................
20.3. virsh を使用した KVM ライブマイグレーション .....................................................
20.4. virt-manager を用いたマイグレーション .............................................................
143
143
144
145
146
21. 仮想ゲストのリモート管理
21.1. SSH を用いたリモート管理 ...............................................................................
21.2. TLS と SSL を用いたリモート管理 .....................................................................
21.3. トランスポートモード ........................................................................................
157
157
158
159
22. KSM
163
23. 高度な仮想化環境の管理
23.1. ゲストのスケジューリング ..................................................................................
23.2. 高度なメモリー管理 .........................................................................................
23.3. ゲストのブロック I/O の減速 .............................................................................
23.4. ゲストのネットワーク I/O の減速 .......................................................................
165
165
165
165
165
24. Xen から KVM へのマイグレーション
167
24.1. Xen から KVM ............................................................................................... 167
24.2. KVM から KVM への古いバージョン .................................................................. 167
25. さまざまな管理作業
25.1. ゲストの自動起動 ............................................................................................
25.2. qemu-img の使用 ..........................................................................................
25.3. KVM でのオーバーコミット ...............................................................................
25.4. 仮想化拡張の確認 ..........................................................................................
25.5. Accessing data from a guest disk image .......................................................
25.6. KVM プロセッサーアフィニティの設定 .................................................................
25.7. 一意な新規 MAC アドレスの生成 ......................................................................
25.8. Very Secure ftpd ..........................................................................................
25.9. Configuring LUN Persistence ........................................................................
25.10. ゲストに対する SMART ディスクモニタリングの無効化 ........................................
25.11. VNC サーバーの設定 ....................................................................................
iv
169
169
169
170
172
173
175
179
180
181
182
182
V. 仮想ストレージの話題
26. Using shared storage with virtual disk images
26.1. Using iSCSI for storing virtual disk images ....................................................
26.2. Using NFS for storing virtual disk images ......................................................
26.3. Using GFS2 for storing virtual disk images ....................................................
26.4. Storage Pools ...............................................................................................
26.4.1. Configuring storage devices for pools ................................................
26.4.2. Mapping virtualized guests to storage pools ......................................
VI. 仮想化の参考ガイド
183
185
185
185
185
185
185
185
187
27. 仮想化のツール
189
28. Managing guests with virsh
191
29. Managing guests with the Virtual Machine Manager (virt-manager)
29.1. 接続の追加ウィンドウ .......................................................................................
29.2. 仮想マシンマネージャーのメインウィンドウ ............................................................
29.3. ゲストの概要のタブ .........................................................................................
29.4. 仮想マシングラフィカルコンソール ......................................................................
29.5. virt-manager の開始 ......................................................................................
29.6. 保存したマシンの復元 ......................................................................................
29.7. ゲストの詳細表示 ............................................................................................
29.8. ステータスの監視 ............................................................................................
29.9. ゲスト識別子の表示 ........................................................................................
29.10. ゲストの状態の表示 ......................................................................................
29.11. 仮想 CPU の表示 .........................................................................................
29.12. CPU 使用量の表示 .......................................................................................
29.13. メモリー使用量の表示 ....................................................................................
29.14. 仮想ネットワークの管理 ..................................................................................
29.15. 仮想ネットワークの作成 ..................................................................................
201
201
202
202
203
204
205
207
211
212
213
214
215
216
217
219
30. libvirt 設定の参考資料
227
31. カスタム libvirt スクリプトの作成
229
31.1. virsh とともに XML 設定ファイルの使用 ............................................................. 229
VII. トラブルシューティング
32. トラブルシューティング
32.1. デバッグとトラブルシューティングのツール ...........................................................
32.2. ログファイル ....................................................................................................
32.3. シリアルコンソールを用いたトラブルシューティング ...............................................
32.4. 仮想化ログファイル ..........................................................................................
32.5. ループデバイスのエラー ...................................................................................
32.6. BIOS における Intel VT と AMD-V の仮想化ハードウェア拡張の有効化 .................
32.7. KVM ネットワークのパフォーマンス .....................................................................
231
233
233
234
234
235
235
235
236
A. その他のリソース
239
A.1. オンラインリソース ..................................................................................................... 239
A.2. インストール済みドキュメント ....................................................................................... 239
用語集
241
B. 改訂履歴
245
C. 奥付
247
v
vi
序文
このドキュメントは Fedora 仮想化ガイドです。ガイドは Fedora に含まれる仮想化プロダクトの使用と管理に
関するすべての観点を取り扱っています。
1. About this book
This book is divided into 7 parts:
• System Requirements
• Installation
• Configuration
• Administration
• Reference
• Tips and Tricks
• Troubleshooting
Key terms and concepts used throughout this book are covered in the glossary, 用用用.
このドキュメントは Fedora に対する仮想化の話題を取り扱っています。Kernel-based Virtual Machine ハイ
パーバイザーが Fedora で提供されています。KVM ハイパーバイザーは、用用用用用をサポートしています。
2. 表記方法
本ガイドは特定の単語や語句を強調したり、 記載内容の特定部分に注意を引かせる目的で次のような表記方
法を使用しています。
1
PDF版 および印刷版では、 Liberation Fonts セットから採用した書体を使用しています。 ご使用のシステム
に Liberation Fonts セットがインストールされている場合、 HTML 版でもこのセットが使用されます。 インス
トールされていない場合は代替として同等の書体が表示されます。 注記: Red Hat Enterprise Linux 5 およ
びそれ以降のバージョンにはデフォルトで Liberation Fonts セットが収納されます。
2.1. 印刷における表記方法
特定の単語や語句に注意を引く目的で 4 種類の表記方法を使用しています。 その表記方法および適用され
る状況は以下の通りです。
等幅の太字
シェルコマンド、ファイル名、パスなどシステムへの入力を強調するために使用しています。またキー配列やキー
の組み合わせを強調するのにも使用しています。 例えば、
現在作業中のディレクトリ内のファイル my_next_bestselling_novel の内容を表示させる
には、 シェルプロンプトで cat my_next_bestselling_novel コマンドを入力してから Enter
を押してそのコマンドを実行します。
上記にはファイル名、シェルコマンド、キーが含まれています。 すべて等幅の太字で表されているため文中内で
見分けやすくなっています。
1
https://fedorahosted.org/liberation-fonts/
vii
序文
キーが 1 つの場合と複数のキーの組み合わせになる場合を区別するため、 その組み合わせを構成するキー
同士をハイフンでつないでいます。 例えば、
Enter を押してコマンドを実行します。
1 番目の仮想ターミナルに切り替えるは、 Ctrl+Alt+F2 を押します。 X-Windows セッショ
ンに戻るには、 Ctrl+Alt+F1 を押します。
最初の段落では押すべき 1 つのキーを特定して強調しています。 次の段落では同時に押すべき 3 つのキー
の組み合わせが 2 種類ありそれぞれ強調されています。
ソースコードの説明では 1 段落内で提示されるクラス名、 メソッド、 関数、 変数名、 戻り値を上記のように 等
幅の太字 で表示します。 例えば、
ファイル関連のクラス群はファイルシステムに対しては filesystem、 ファイルには file、 ディ
レクトリには dir をそれぞれ含みます。 各クラスは個別に関連する権限セットを持っていま
す。
プロポーショナルの太字
アプリケーション名、 ダイアログボックスのテキスト、ラベル付きボタン、 チェックボックスとラジオボタンのラベ
ル、 メニュータイトルとサブメニュータイトルなどシステム上で見られる単語や語句を表します。 例えば、
メインメニューバーから システム > 個人設定 > マウス の順で選択し マウスの個人設定 を
起動します。 ボタン タブ内で 左ききのマウス チェックボックスをクリックしてから 閉じる をク
リックしマウスの主要ボタンを左から右に切り替えます (マウスを左ききの人が使用するのに
適した設定にする)。
gedit ファイルに特殊な文字を挿入する場合は、 メインメニューバーから アプリケーション >
アクセサリ > 文字マップ の順で選択します。 次に 文字マップ メニューバーから 検索 > 検
索… と選択して 検索 フィールド内にその文字名を入力し 次 をクリックします。 探している
文字が 文字表 内で強調表示されます。 この強調表示された文字をダブルクリックすると コ
ピーするテキスト フィールド内に置かれるので次に コピー ボタンをクリックします。 ここでド
キュメントに戻り gedit メニューバーから 編集 > 貼り付け を選択します。
上記には、 アプリケーション名、 システム全体のメニュー名と項目、 アプリケーション固有のメニュー名、 GUI
インタフェースで見られるボタンやテキストがあります。 すべてプロポーショナルの太字で表示されているため
文中内で見分けやすくなっています。
等等等等等等等等等等 または 等等等等等等等等等等等等等等等等
等幅の太字やプロポーショナルの太字はいずれであっても斜体の場合は置換可能なテキストか変化するテキ
ストを示します。 斜体は記載されている通りには入力しないテキスト、あるいは状況に応じて変化する出力テキ
ストを表します。 例えば、
ssh を使用してリモートマシンに接続するには、 シェルプロンプトで ssh
[email protected] と入力します。 リモートマシンが example.com であり、 そのマ
シンで使用しているユーザー名が john なら ssh [email protected] と入力します。
mount -o remount file-system コマンドは指定したファイルシステムを再マウントしま
す。 例えば、 /home ファイルシステムを再マウントするコマンドは mount -o remount /home
になります。
現在インストールされているパッケージのバージョンを表示するには、 rpm -q package コ
マンドを使用します。 結果として次を返してきます、 package-version-release。
viii
引用における表記方法
上記の太字斜体の単語 — username、 domain.name、 file-system、 package、 version、 release に注目
してください。 いずれもコマンドを発行するときに入力するテキスト用のプレースホルダーかシステムにより出
力されるテキスト用のプレースホルダーになっています。
タイトル表示のような標準的な使用の他、 斜体は新しい重要な用語が初めて出現する場合にも使用されま
す。 例えば、
Publican は DocBook の発行システムです。
2.2. 引用における表記方法
端末の出力とソースコード一覧は、視覚的に周囲の文から区別されています。
端末に送信される出力は mono-spaced roman (等幅の Roman) にセットされるので以下のように表示されま
す。
books
books_tests
Desktop
Desktop1
documentation
downloads
drafts
images
mss
notes
photos
scripts
stuff
svgs
svn
ソースコードの一覧も mono-spaced roman (等幅の Roman) でセットされますが、以下のように強調表示され
ます。
package org.jboss.book.jca.ex1;
import javax.naming.InitialContext;
public class ExClient
{
public static void main(String args[])
throws Exception
{
InitialContext iniCtx = new InitialContext();
Object
ref
= iniCtx.lookup("EchoBean");
EchoHome
home
= (EchoHome) ref;
Echo
echo
= home.create();
System.out.println("Created Echo");
System.out.println("Echo.echo('Hello') = " + echo.echo("Hello"));
}
}
2.3. 注記および警告
情報が見過ごされないよう 3 種類の視覚的なスタイルを使用して注意を引いています。
注記
注記は説明している部分に対するヒントや近道あるいは代替となる手段などになります。注記を無視して
も悪影響はありませんが知っておくと便利なコツを見逃すことになるかもしれません。
ix
序文
重要
重要ボックスは見逃しやすい事項を詳細に説明しています。現在のセッションにのみ適用される設定上の
変更点、 更新を適用する前に再起動が必要なサービスなどがあります。重要ボックスを無視してもデータ
を喪失するような結果にはなりませんがイライラ感やフラストレーションが生じる可能性があります。
警告
警告は無視しないでください。警告を無視するとデータを喪失する可能性が非常に高くなります。
3. フィードバック
本ガイドに誤植を見つけられた場合や本ガイドの改善案をお持ちの場合はぜひお知らせください。 Bugzilla
http://bugzilla.redhat.com/bugzilla/ にて、 Product には Fedora Documentation. を選びレポートの提出
をお願いいたします。
バグレポートを提出される場合は、 そのガイドの識別子となる virtualization-guide を必ず明記して頂くようお
願いします。
ドキュメントに関する改善のご意見についてはできるだけ具体的にお願いいたします。 エラーを発見された場
合は、 セクション番号および該当部分の前後の文章も含めてご報告頂くと照合が容易になります。
x
パート I. 要件と制限
システム要件、サポートの制約および
Fedora を用いた仮想化に対する制限
これらの章は、システム要件、サポートの制約、および Fedora における仮想化の制限の概要を説明します。
システム要件
本章は、Fedora において仮想化を正しく実行するためのシステム要件を示します。仮想化は Fedora におい
て利用できます。
Kernel-based Virtual Machine ハイパーバイザーは Fedora で提供されています。
仮想化パッケージのインストールに関する情報は、4用用用用用用用用用用用用用用用用を読んでください。
最小システム要件
• 6GBの空きディスク容量
• 2GBのRAM
推奨システム要件
• 6GB に加えて、ゲストごとにゲストオペレーティングシステムにより推奨される必要ディスク容量。 ほとんどの
オペレーティングシステムには、6GB 以上のディスク容量が推奨されます。
• 各仮想 CPU に対して1つのプロセッサーコアもしくはハイパースレッド、およびハイパーバイザーのために1
つ
• 2GB の RAM に加えて、仮想ゲスト用の追加 RAM
KVM オーバーコミット
KVM は仮想ゲストに対して物理リソースをオーバーコミットできます。リソースのオーバーコミットとは、
ゲストにより使用される仮想 RAM とプロセッサーコアの合計が、ホストにある物理 RAM とプロセッサー
コアを超えることができるということです。KVM で安全にリソースをオーバーコミットすることに関して
は、用KVM 用用用用用用用用用用用を参照してください。
KVM の要件
KVM ハイパーバイザーは以下を必要とします:
• Intel VT および Intel 64 拡張を持つ Intel プロセッサー、もしくは
• AMD-V および AMD64 拡張を持つ AMD プロセッサー
プロセッサーが仮想化拡張に対応しているかどうかを確認するには、用用用用用用用用用用を参照してください。
ストレージのサポート
動作するゲストストレージの方式は以下のとおりです:
• ローカルストレージ上のファイル、
• 物理ディスクのパーティション、
• ローカル接続している物理 LUN、
• LVM パーティション、
• iSCSI, and
• ファイバーチャネルベースの LUN
3
第1章 システム要件
ファイルベースのゲストストレージ
ファイルベースのゲストイメージは、/var/lib/libvirt/images/ に保存されるべきです。他のディレクトリ
を使用するならば、SELinux ポリシーにそのディレクトリを追加しなければいけません。詳細は用SELinux
用用用用用を参照してください。
4
KVM 互換性
KVM ハイパーバイザーは、Intel-VT または AMD-V 仮想化拡張を持つプロセッサーを必要とします。
このリストは完全ではないことに注意してください。うまく動作したすべてをバグで提出することで、私たちが拡
張するのを手助けください。
プロセッサーが仮想化拡張をサポートしているかどうかを確認するため、および、仮想化拡張が無効な場合に、
それらを有効にすることに関する情報のために、用用用用用用用用用用を参照してください。
Fedora kvm パッケージは 256 プロセッサーコアに制限されています。
動作するはずのゲスト
オペレーティングシステム
BeOS
動作レベル
動作済み
Red Hat Enterprise Linux 3 x86 準仮想化ドライバーを用いた最適化
Red Hat Enterprise Linux 4 x86 準仮想化ドライバーを用いた最適化
Red Hat Enterprise Linux 4
AMD 64 および Intel 64
準仮想化ドライバーを用いた最適化
Red Hat Enterprise Linux 5 x86 準仮想化ドライバーを用いた最適化
Red Hat Enterprise Linux 5
AMD 64 および Intel 64
準仮想化ドライバーを用いた最適化
Red Hat Enterprise Linux 6 x86 準仮想化ドライバーを用いた最適化
Red Hat Enterprise Linux 6
AMD 64 および Intel 64
準仮想化ドライバーを用いた最適化
Fedora 12 x86
準仮想化ドライバーを用いた最適化
Fedora 12 AMD 64 および Intel
64
準仮想化ドライバーを用いた最適化
Windows Server 2003 R2 32Bit
準仮想化ドライバーを用いた最適化
Windows Server 2003 R2 64Bit
準仮想化ドライバーを用いた最適化
Windows Server 2003 Service
Pack 2 32-Bit
準仮想化ドライバーを用いた最適化
Windows Server 2003 Service
Pack 2 64-Bit
準仮想化ドライバーを用いた最適化
Windows XP 32-Bit
準仮想化ドライバーを用いた最適化
Windows Vista 32-Bit
動作するはず
Windows Vista 64-Bit
動作するはず
Windows Server 2008 32-Bit
準仮想化ドライバーを用いた最適化
Windows Server 2008 64-Bit
準仮想化ドライバーを用いた最適化
Windows 7 32-Bit
準仮想化ドライバーを用いた最適化
Windows 7 64-Bit
準仮想化ドライバーを用いた最適化
Open Solaris 10
動作済み
Open Solaris 11
動作済み
5
6
仮想化の制限
本章は、Fedora における仮想化パッケージの追加の制限を取り扱います。
3.1. 仮想化における一般的な制限
他の制限
仮想化に影響のある他の制限と問題すべての一覧は、Fedora 13 用用用用用用用を読んでください。Fedora 13
Release Notes は、新機能、基地の問題、および更新または発見された制限を取り扱います。
配備前のテスト
重たい I/O アプリケーションを配備する前に、最大の予想負荷負荷と仮想ネットワークのストレスをテストすべ
きです。I/O 使用量が増加した仮想化により引き起こされるパフォーマンスが低下するため、ストレステストは
重要です。
3.2. KVM の制限
以下の制限が KVM ハイパーバイザーに適用されます:
Constant TSC ビット
Constant Time Stamp Counter のないシステムは、追加の設定が必要です。Constant Time Stamp
Counter を持つかどうかを確認すること、および関連するすべての問題を修正するための設定手順につい
ての詳細は、17用KVM 用用用用用用用用用用用を参照してください。
メモリーオーバーコミット
KVM は、メモリーオーバーコミットをサポートし、スワップにゲストのメモリーを保存することができます。頻
繁にスワップされると、ゲストの動作が遅くなります。KSM が使われるとき、スワップ容量はオーバーコミッ
ト率の容量です。
CPU オーバーコミット
物理プロセッサーコアあたり10仮想 CPU より多く持つことは推奨されません。物理プロセッサーコアの数
を上回る量のオーバーコミットされた仮想 CPU は、特定の仮想ゲストに問題を引き起こすかもしれませ
ん。
CPU のオーバーコミットは、いくつかのリスクがあり、不安定になる可能性があります。CPU のオーバーコ
ミットに関するヒントと推奨は、用KVM 用用用用用用用用用用用を参照してください。
仮想 SCSI デバイス
SCSI エミュレーションは、16仮想(エミュレート)SCSI デバイスに制限されます。
仮想 IDE デバイス
KVM はゲストごとに最大4つの仮想(エミュレート)IDE デバイスに制限されています。
準仮想化デバイス
準仮想化デバイスは(virtioドライバを使用する)は、PCI デバイスです。今のところ、ゲストは最大 32PCI
デバイスに制限されています。いくつかの PCI デバイスは、ゲストの実行に重要であり、これらのデバイス
は削除できません。デフォルトで、必要なデバイスは以下のようなデバイスが必須です:
• ホストブリッジ、
• ISA ブリッジと USB ブリッジ(USB と ISA のブリッジは同じデバイスです)、
• グラフィックカード(Cirrus か qxl のドライバーを使用)、および
7
第3章 仮想化の制限
• メモリーバルーンデバイス。
ゲスト用に利用可能な最大32の PCI デバイスの内、4つは削除できません。このことは、ゲストごとに28の
PCI スロットのみが追加デバイス用に利用できることを意味します。それぞれの準仮想化ネットワークやブ
ロックデバイスがスロットを1つ使用します。それぞれのゲストは、準仮想化ネットワーク、準仮想化ディスク
デバイス、もしくは VT-d を用いた他の PCI デバイスの組み合わせから 28までの追加デバイスを使用で
きます。
マイグレーションの制限
ライブマイグレーションは、同じ製造元からのCPU(つまり、Intel から Intel、または AMD から AMD)とと
もに利用可能です。
No eXecution (NX) ビットは、ライブマイグレーションのために、両方の CPU に対しても、オンまたはオフ
に設定されていなければなりません。
ストレージの制限
ホストは、fstabファイル、initrd ファイルもしくはカーネルコマンドラインにより使用されるものにおいて、
ファイルシステムを識別するためにディスクラベルを使用すべきではありません。非特権ユーザが(とくに仮
想ゲスト)パーティション全体または LVM ボリュームへの書き込みアクセスできるならば、ホストシステム
は危険にさらされるでしょう。
ゲストは、ディスクやブロックデバイス全体への書き込みアクセス権を与えるべきではありません(たとえ
ば、/dev/sdb)。ブロックデバイスへのアクセス権を持つ仮想ゲストは、システムにある他のブロックデバイ
スにアクセスできるかもしれず、ホストを危険にさらすために、使われているボリュームラベルを修正するか
もしれません。この問題を避けるために、パーティション(たとえば、/dev/sdb1)または LVM ボリュームを使
用します。
PCI パススルーの制限
PCI パススルー(PCI デバイスをゲストへ接続すること)は、AMD IOMMU または Intel VT-d 技術を持つ
システムにおいて動作します。
3.3. アプリケーションの制限
特定の種類のアプリケーションに対して仮想化が不適切になるような、仮想化の側面がいくつか存在します。
高い I/O スループット要求を持つアプリケーションは、完全仮想化に対して準仮想化ドライバを使用すべきで
す。準仮想化ドライバが無いと、特定のアプリケーションは高い I/O 負荷において不安定になるかもしれませ
ん。
以下のアプリケーションは、それらの高い I/O 要求の理由から避けるべきです:
• kdump サーバー
• netdump サーバー
You should carefully evaluate databasing applications before running them on a virtualized
guest. Databases generally use network and storage I/O devices intensively. These applications
may not be suitable for a fully virtualized environment. Consider para-virtualization or paravirtualized drivers for increased I/O performance. Refer to 12用KVM 用用用用用用用用用 for more
information on the para-virtualized drivers for fully virtualized guests.
Other applications and tools which heavily utilize I/O or require real-time performance should
be evaluated carefully. Using full virtualization with the para-virtualized drivers (refer to 12用KVM
用用用用用用用用用) or para-virtualization results in better performance with I/O intensive applications.
Applications still suffer a small performance loss from running in virtualized environments. The
performance benefits of virtualization through consolidating to newer and faster hardware should
8
アプリケーションの制限
be evaluated against the potential application performance issues associated with using fully
virtualized hardware.
9
10
パート II. インストール
仮想化のインストールの話題
これらの章は、Fedora を用いてホストをセットアップし、仮想ゲストをインストールすることについて取り扱いま
す。仮想ゲストオペレーティングシステムのインストールを確実に成功させるために、これらの章を注意深く読む
ことを推奨します。
仮想化パッケージのインストール
Before you can use virtualization, the virtualization packages must be installed on your computer.
Virtualization packages can be installed either during the installation sequence or after
installation using the yum command and the Red Hat Network (RHN).
KVM ハイパーバイザーは、kvm カーネルモジュールを持つデフォルトの Fedora カーネルを使用します。
4.1. 新規 Fedora インストールでの KVM のインストール
このセクションは、新規 Fedora インストールの一部として、仮想化ツールと KVM パッケージをインストールす
ることについて取り扱います。
インストールのヘルプが必要ですか?
Fedora 13 用用用用用用用用用(http://docs.fedoraproject.orgから入手可能)が、Fedora のインストールに関す
る詳細を取り扱います。
1.
Fedora インストール CD-ROM, DVD または PXE から対話的に Fedora インストールを開始します。
2.
仮想化および他の高度なプラットフォームパッケージへのアクセスを受け取るために、プロンプトされたと
きに有効なインストール番号を入力しなければいけません。
3.
パッケージ選択のステップまで他のステップを完了します。
仮想化パッケージグループを選択して、今すぐカスタマイズするラジオボタンを選択します。
4.
KVMパッケージグループを選択します。仮想化パッケージグループを選択解除します。これでインストール
のために、KVM ハイパーバイザー、virt-manager、libvirt および virt-viewer を選択することになりま
す。
13
第4章 仮想化パッケージのインストール
5.
パッケージのカスタマイズ(必要に応じて)
他の仮想化パッケージが必要な場合は、仮想化グループをカスタマイズします。
閉じるボタンを押して、インストールを続けるために進むボタンを押します。
14
既存の Fedora システムへの KVM パッケージのインストール
Kickstart ファイルを用いた KVM パッケージのインストール
このセクションは、KVM ハイパーバイザーのパッケージを持つ Fedora をインストールするために、Kickstart
ファイルを使用する方法について記載しています。Kickstart ファイルは、個々のシステムそれぞれにユーザが手
動でインストールすることなく、大規模で、自動化されたインストールを可能にします。このセクションにある手順
は、仮想化パッケージを持つ Fedora をインストールするために、Kickstart ファイルを作成し、使用することに
ついて支援します。
使用する Kickstart ファイルの %packages セクションに、以下のパッケージグループを追加します:
%packages
@kvm
Fedora 13 用用用用用用用用用(http://docs.fedoraproject.orgから入手可能)に、Kickstart ファイルに関する詳細な
情報があります。
4.2. 既存の Fedora システムへの KVM パッケージのインストール
このセクションは、稼働中の Fedora もしくはより新しいシステムに、KVM ハイパーバイザーをインストールする
ための手順を記載しています。
yum を用いた KVM ハイパーバイザのインストール
Fedora において仮想化を使用するために、kvm パッケージが必要となります。kvm パッケージは、デフォルトの
Fedora カーネルに KVM ハイパーバイザを提供する KVM カーネルを含みます。
kvm パッケージをインストールために、以下を実行します:
# yum install kvm
ここで、追加の仮想化管理パッケージをインストールします。
推奨される仮想化パッケージ:
python-virtinst
仮想マシンの作成用に virt-install コマンドを提供します。
libvirt
libvirt is a cross platform Application Programmers Interface (API) for interacting with
hypervisors and host systems. libvirt manages systems and controls the hypervisor. The libvirt
package includes the virsh command line tool to manage and control virtualized guests and
hypervisors from the command line or a special virtualization shell.
libvirt-python
libvirt-python パッケージは、libvirt API により提供されるインターフェースを使用するために、Python プロ
グラミング言語で書かれたアプリケーションを許可するモジュールを含みます。
virt-manager
virt-manager, also known as Virtual Machine Manager, provides a graphical tool for
administering virtual machines. It uses libvirt library as the management API.
その他の推奨される仮想化パッケージをインストールします:
# yum install virt-manager libvirt libvirt-python python-virtinst
15
16
仮想ゲストのインストールの概要
仮想化パッケージをホストシステム上にインストールした後は、ゲストオペレーティングシステムの作成が可能
になります。本章は、仮想マシンにゲストオペレーティングシステムをインストールするための手順を説明しま
す。ゲストを作成するには、virt-manager 内の 新規ボタンをクリックするか、もしくはコマンドラインインターフェ
イスの virt-install を使用します。どちらの方法も本章で説明されています。
Fedora の特定バージョン、他の Linux ディストリビューション、Solaris および Windows に対するインストー
ルの詳細な説明が利用可能です。ゲストオペレーティングシステムに関連する手順を参照してください:
• Red Hat Enterprise Linux 5: 6用Red Hat Enterprise Linux 5 用用用用用用用用用用用用用用用用用用用
• Windows XP: 7用用用用用用用用用用用用用 Windows XP 用用用用用用用
• Windows Server 2003: 8用用用用用用用用用用用用用 Windows Server 2003 用用用用用用用
• Windows Server 2008: 9用用用用用用用用用用用用用 Windows Server 2008 用用用用用用用
5.1. Virtualized guest prerequesites and considerations
どんな仮想ゲストでも作成する前に、さまざまな要因を考慮すべきです。要因は、以下のものを含みます:
• パフォーマンス
• I/O の要件と I/O の種類
• ストレージ
• ネットワークとネットワークインフラストラクチャー
パフォーマンス
仮想化はパフォーマンスの影響があります。
I/O 要件とアーキテクチャー
。
ストレージ
。
ネットワークとネットワークインフラストラクチャー
。
5.2. virt-install を用いたゲストの作成
コマンドラインから仮想ゲストを作成するために、virt-install コマンドを使用できます。virt-install は、対
話型、あるいは仮想マシン作成を自動化するためのスクリプトとして使用されます。Kickstart ファイルとともに
virt-install を使用すると、仮想マシンの無人インストールが可能になります。
virt-install ツールは、コマンドラインで渡すことができる、多くのオプションを提供します。それらのオプション
の完全な一覧を見るには、次を実行します:
$ virt-install --help
17
第5章 仮想ゲストのインストールの概要
virt-install の man ページは、コマンドオプションと重要な変数をそれぞれドキュメント化しています。
qemu-img は、ストレージオプションを設定するために、virt-install を使用する前に用いられるかもしれな
い、関連したコマンドです。
重要なオプションは、ゲストインストールに対してグラフィカルウィンドウを開く、--vnc オプションです。
例5.1 Red Hat Enterprise Linux 3 ゲストの作成のための KVM を用いた virt-install の使用
この例では、仮想ネットワークと 5 GB のファイルベースブロックデバイスイメージを使用して、CD-ROM か
ら rhel3support という名前の Red Hat Enterprise Linux 3 ゲストを作成します。この例は KVM ハイ
パーバイザーを使用します。
# 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
例5.2 Fedora 11 ゲストの作成のための virt-install の使用
# virt-install --name fedora11 --ram 512 --file=/var/lib/libvirt/images/fedora11.img \
--file-size=3 --vnc --cdrom=/var/lib/libvirt/images/fedora11.iso
5.3. virt-manager を用いたゲストの作成
仮想マシンマネージャーとしても知られる virt-manager は、仮想ゲストの作成と管理のためのグラフィカル
ツールです。
手順5.1 virt-manager を用いた仮想ゲストの作成
1. virt-manager の開始
virt-manager を起動します。アプリケーションメニューのシステムツールサブメニューから仮想マシンマ
ネージャーを起動します。あるいは、root として virt-manager コマンドを実行します。
2.
18
オプション:リモートハイパーバイザのオープン
ファイル -> 接続の追加を開きます。以下のダイアログボックスが表示されます。ハイパーバイザを選択
し、接続ボタンをクリックします:
virt-manager を用いたゲストの作成
3.
新規ゲストの作成
virt-manager ウィンドウでは、新しい仮想マシンの作成ができます。新しいゲストを作成するために、新
規ボタンをクリックします。これにより、スクリーンショットにあるウィザードが開きます。
19
第5章 仮想ゲストのインストールの概要
4.
20
新規ゲストウィザード
新規仮想マシンの作成ウィンドウは、仮想マシンを作成するために与えなければいけない情報の概要を提
供します:
virt-manager を用いたゲストの作成
使用するインストールの情報を再確認して、進むボタンをクリックします。
5.
仮想マシンの命名
以下の文字がゲスト名として許容されます: '_', '.' および '-' 記号。
21
第5章 仮想ゲストのインストールの概要
続けるために進むを押します。
6.
仮想化方式の選択
仮想化方式の選択中ウィンドウが表示されます。
Full virtualization requires a processor with the AMD 64 and the AMD-V extensions or a
processor with the Intel 64 and Intel VT extensions. If the virtualization extensions are not
present, KVM will not be avilable.
22
virt-manager を用いたゲストの作成
仮想化タイプを選択し、進むボタンをクリックします。
7.
インストール方法の選択
インストール方法ウィンドウが、選択するインストールタイプを尋ねてきます。
ゲストは以下のいずれかの方法を用いてインストールできます:
ローカルメディアインストール
この方法は、CD-ROM または DVD、もしくはインストール CD-ROM や DVD のイメージ(.isoファイ
ル)を使用します。
ネットワークインストールツリー
この方法は、ゲストをインストールするためにミラーされた Fedora インストールツリーを使用します。
インストールツリーは以下のネットワークプロトコルのいずれかでアクセス可能でなければいけませ
ん。HTTP, FTP もしくは NFS。
ネットワークサービスとファイルは、ホストにおけるネットワークサービスか他のミラーを用いてホストさ
れます。
23
第5章 仮想ゲストのインストールの概要
ネットワークブート
この方法は、ゲストをインストールするために Preboot eXecution Environment (PXE) を使用しま
す。PXE サーバのセットアップについては Fedora Deployment Guide で取り扱われています。この方
法を使用するには、ルーティング可能な IP アドレスを持つゲストまたは共有ネットワークが必要となり
ます。PXE インストールに対して必要となるネットワーク設定に関する情報は、11用用用用用用用用用を参照し
てください。
OS type と OS variant を設定します。
Choose the installation method and click Forward to procede.
8.
インストールメディアの選択
このウィンドウは、前の手順で何が選択されたのかに依存します。
a.
24
ISO image or phyiscal media installation
前の手順でローカルインストールメディアが選択されると、この画面はインストールメディアと呼ばれ
ます。
virt-manager を用いたゲストの作成
ISO イメージの位置を選択します、もしくはドロップダウンリストから DVD または CD-ROM を選択し
ます。
Click the Forward button to procede.
b.
ネットワークインストールツリーからのインストール
前の手順で ネットワークインストールツリーが選択されていると、この画面はインストールソースと呼
ばれます。
ネットワークインストールは、NFS, FTP または HTTP を用いた、Linux インストールツリーのミラーのア
ドレスが必要となります。オプションとして、自動インストールのためにキックスタートファイルを指定で
きます。必要に応じて、カーネルパラメータを指定することもできます。
25
第5章 仮想ゲストのインストールの概要
Click the Forward button to procede.
c.
9.
ネットワークブート(PXE)
PXE インストールは追加の手順がありません。
ストレージのセットアップ
ストレージウィンドウが表示されます。ディスクパーティション、LUN を選択します、もしくはゲストパーティ
ション用のファイルベースのイメージを作成します。
すべてのイメージファイルは、/var/lib/libvirt/images/ ディレクトリに保存されるべきです。ファイル
ベースのイメージに対する他のディレクトリは、SELinux により禁止されています。SELinux が enforcing
mode で実行されているなら、ゲストのインストールに関する詳細は用SELinux 用用用用用を参照してくださ
い。
ゲストのストレージイメージは、インストール、追加パッケージおよびアプリケーションの容量、ならびにゲス
トのスワップファイルの容量よりも大きくなければいけません。インストールプロセスは、ゲストへ割り当てら
れた RAM 容量に基づき、ゲストのスワップ容量を選択します。
26
virt-manager を用いたゲストの作成
アプリケーションや他のデータのためにゲストが追加のスペースを必要とする場合には、追加のスペース
を割り当てます。たとえば、ウェブサービスはログファイルのために追加のスペースを必要とします。
選択したストレージタイプにおいてゲストに対して適切な容量を選びます。それから進むボタンをクリックし
ます。
注記
仮想マシンイメージに対してデフォルトのディレクトリ /var/lib/libvirt/images/ を使用することが
推奨されます。他の位置(この例にあるような/images/など)を使用する場合、インストールを始める
前に、確実に SELinux ポリシーに追加して、再ラベルします。(のちほど、このドキュメントに SELinux
ポリシーを修正する方法に関する情報があります。)
27
第5章 仮想ゲストのインストールの概要
10. ネットワークのセットアップ
仮想ネットワークまたは共有物理デバイスを選択します。
仮想ネットワークのオプションは、デフォルトのネットワークデバイスを仮想ゲストと共有する Network
Address Translation (NAT) を使用することです。無線ネットワークに対して仮想ネットワークを使用しま
す。
共有物理デバイスのオプションは、仮想ゲストにネットワークデバイスへの完全なアクセスを与える、ネット
ワークボンディングを利用することです。
続けるために進むを押します。
11. メモリと CPU の割り当て
メモリと CPU の割り当てウィンドウが表示されます。仮想 CPU と RAM の割り当てに対する適切な値を
選択します。これらの値はホストとゲストのパフォーマンスに影響を与えます。
ゲストは効率的にそして効果的に稼働するために十分な物理メモリ(RAM)を必要とします。 ゲストオペ
レーティングシステムとアプリケーションの要件に適したメモリの値を選択します。ほとんどのオペレーティ
ングシステムは反応良く機能するのに少なくとも 512MB の RAM を必要とします。ゲストは物理 RAM を
使用することを忘れないでください。稼働ゲストが多すぎたり、ホストシステム用に十分なメモリを残さな
かったりすると、仮想メモリをかなり消費してしまいます。仮想メモリは比較的遅いため、システムパフォー
28
virt-manager を用いたゲストの作成
マンスと反応性に悪影響を与えます。すべてのゲストとホストが効率的に稼働できるように十分なメモリを
割り当てることを確認してください。
十分な仮想 CPU を仮想ゲストに割り当てます。ゲストがマルチスレッドのアプリケーションを実行している
場合は、ゲストが効率的に稼働できるのに必要な数の仮想 CPU を割り当てます。しかし、ホストシステム
上で利用できる物理プロセッサ(またはハイパースレッド)以上の仮想 CPU を割り当てないでください。仮
想プロセッサを超過して割り当てることは可能ですが、超過割り当てでは、プロセッサのコンテキストスイッ
チのオーバーヘッドにより、ゲストとホストに深刻な悪影響を与えます。
続けるために進むを押します。
12. ゲストのインストールの確認と開始
The Finish Virtual MAchine Creation window presents a summary of all configuration
information you entered. Review the information presented and use the Back button to
make changes, if necessary. Once you are satisfied click the Finish button and to start the
installation process.
29
第5章 仮想ゲストのインストールの概要
VNC ウィンドウが開いて、ゲストオペレーティングシステムのインストールプロセスの開始を示します。
これは、virt-manager を用いてゲストを作成する、一般的なプロセスに結びつきます。5用用用用用用用用用用用用用用用
用は、さまざまな一般的なオペレーティングシステムをインストールするためのステップバイステップの説明を含
みます。
5.4. PXE を用いたゲストのインストール
このセクションは、PXE を使用したゲストのインストールに必要な手順を取り扱います。PXE のゲストインストー
ルには、ネットワークブリッジとして知られる共有ネットワークデバイスが必要になります。以下の手順はブリッジ
の作成方法と PXE インストール用のブリッジの有効化に必要な手順を扱っています。
1.
新規ブリッジの作成
a. /etc/sysconfig/network-scripts/ ディレクトリ内に新しいネットワークスクリプトファイルを作成し
ます。この例では、ifcfg-installation という名前のファイルを作成し、installation という名
前のブリッジを作ります。
# cd /etc/sysconfig/network-scripts/
# vim ifcfg-installation
30
PXE を用いたゲストのインストール
DEVICE=installation
TYPE=Bridge
BOOTPROTO=dhcp
ONBOOT=yes
警告
行 TYPE=Bridge は、大文字小文字を区別します。大文字 'B' と小文字 'ridge' でなければい
けません。
b.
network サービスを再起動することで、新しいブリッジを開始します。ifup installation コマンド
は、それぞれのブリッジを開始できますが、より安全にネットワーク全体が正しく再起動することを確認
できます。
# service network restart
c.
この時点では、まだブリッジにインタフェイスが追加されていません。brctl show コマンドを使用して
システム上のネットワークブリッジの詳細を見ることができます。
# brctl show
bridge name
installation
virbr0
bridge id
8000.000000000000
8000.000000000000
STP enabled
no
yes
interfaces
virbr0 ブリッジは、デフォルトのイーサネットデバイスにおいて、NAT (Network Address
Translation) のために libvirt で使用されるデフォルトのブリッジです。
2.
新規ブリッジへのインタフェイスの追加
インタフェイス用の設定ファイルを編集します。前の手順で作成されたブリッジの名前を持つ設定ファイル
に 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
installation
virbr0
bridge id
8000.001320f76e8e
8000.000000000000
STP enabled
no
yes
interfaces
eth1
31
第5章 仮想ゲストのインストールの概要
3.
セキュリティの設定
iptables を設定してすべてのトラフィックがブリッジまで転送されるようにします。
# iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT
# service iptables save
# service iptables restart
ブリッジ上の iptables の無効化
別の方法として、ブリッジ化したトラフィックが 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
4.
インストール前の libvirt の再起動
libvirt デーモンを再起動します。
# service libvirtd reload
ブリッジが設定され、インストールを開始できます。
virt-install を用いた PXE インストール
virt-install に、--network=bridge:installation インストールパラメータを追加します。ここ
で、installation はブリッジの名前です。PXE インストールには、--pxe パラメータを使用します。
例5.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 を用いた PXE インストール
以下の手順は、virt-manager の標準的なインストール手順とは異なる手順です。
1.
32
PXE の選択
インストールメソッドとして PXE の選択
PXE を用いたゲストのインストール
2.
ブリッジの選択
物理デバイスを共有を選択して、前の手順で作成したブリッジを選択します。
33
第5章 仮想ゲストのインストールの概要
3.
34
インストールの開始
インストールの開始準備ができました。
PXE を用いたゲストのインストール
DHCP 要求が送信され、有効な PXE サーバーが見つかると、ゲストのインストールプロセスが始まります。
35
36
Red Hat Enterprise Linux 5 の完全仮想化ゲストとしてのイン
ストール
このセクションは、Fedora のホストに完全仮想化の Red Hat Enterprise Linux 5 のインストールについて取
り扱います。
手順6.1 virt-manager を使用した完全仮想化の Red Hat Enterprise Linux 5 ゲストの作成
1. virt-manager を開きます
virt-manager を開始します。アプリケーション メニューと システムツール サブメニューから 仮想マシンマ
ネージャーのアプリケーションを起動します。別の方法として、root として virt-manager コマンドを実行で
きます。
2.
ハイパーバイザーを選択します
ハイパーバイザーを選択します。現在、KVM ハイパーバイザーは qemu という名前であることに注意してく
ださい。
まだ実行していないならば、ハイパーバイザーに接続します。ファイルメニューを開き、接続の追加...オプ
ションを選択します。用用用用用用用用用用用用を参照してください。
ハイパーバイザー接続が選択されると、新規ボタンが利用可能になります。新規ボタンをクリックします。
3.
新規仮想マシンウィザードを開始します
新規ボタンを押して、仮想マシン作成ウィザードを開始します。
37
第6章 Red Hat Enterprise Linux 5 の完全仮想化ゲストとしてのインストール
続けるために進むを押します。
4.
38
仮想マシンの名前をつけます
仮想ゲストに対する名前を与えます。以下の句読点と空白文字は、'_', '.' および '-' の文字に対して許可
されます。
続けるために進むを押します。
5.
仮想化の方式を選択します
仮想ゲストに対する仮想化の方式を選択します。x86_64 (64 bit) と x86 (32 bit) だけが選択できること
に注意してください。
39
第6章 Red Hat Enterprise Linux 5 の完全仮想化ゲストとしてのインストール
続けるために進むをクリックします。
6.
インストール方法を選択します
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 Type を Linux へセットし、OS Variant を Red Hat Enterprise
Linux 5 へセットします。
40
続けるために進むを押します。
7.
インストールメディアの場所を指定します
ISO イメージの位置もしくは CD-ROM または DVD のデバイスを選択します。この例では、Red Hat
Enterprise Linux installation DVD の ISO ファイルイメージを使用します。
a.
閲覧ボタンをクリックします
b.
ISO ファイルの位置を検出して ISO イメージを選択します。開く を クリックして選択を確定します。
c.
ファイルが選択され、インストールの準備ができました。
41
第6章 Red Hat Enterprise Linux 5 の完全仮想化ゲストとしてのインストール
続けるために進むを押します。
イメージファイルと SELinux
ISO イメージファイルとゲストのストレージイメージに対して、/var/lib/libvirt/images/ ディレクト
リを使うことが推奨されます。他の場所はどこでも、SELinux に対する追加の設定が必要になるかも
しれません、詳細は用SELinux 用用用用用を参照してください。
8.
42
ストレージのセットアップ
物理ストレージデバイス(Block device)またはファイルベースのイメージ(File)を割り当てます。ファイル
ベースのイメージは、/var/lib/libvirt/images/ ディレクトリに保存されなければいけません。仮想ゲス
トとゲストが必要とするすべてのアプリケーションに対して十分な容量を割り当てます。
続けるために進むを押します。
移行
Live and offline migrations require guests to be installed on shared network storage. For
information on setting up shared storage for guests refer to 用用用V用用用用用用用用用用用用.
9.
ネットワークの設定
仮想ネットワークまたは共有の物理デバイスのどちらかを選択します。
仮想ネットワークオプションは、NAT (Network Address Translation) を使用してデフォルトのネットワー
クデバイスを仮想ゲストと共有します。ワイヤレスネットワークには仮想ネットワークオプションを使用しま
す。
43
第6章 Red Hat Enterprise Linux 5 の完全仮想化ゲストとしてのインストール
共有物理デバイスオプションは、仮想ゲストにネットワークデバイスへの完全なアクセスを与えるために
ネットワークボンディングを使用します。
続けるために進むを押します。
10. メモリーと CPU の割り当て
メモリーと CPU の割り当てウィンドウが表示されます。仮想 CPU と RAM 割り当てに対する適切な値を
選択します。これらの値はホストとゲストのパフォーマンスに影響します。
仮想ゲストは、効率的にそして効果的に動作するために十分な物理メモリー(RAM)を必要とします。使用
するゲストオペレーティングシステムとアプリケーションの必要性に適合するメモリーの値を選択します。ゲ
ストは物理 RAM を使用することを忘れないで下さい。ホストシステムに対し、過度の数のゲストを実行し
たり、不十分なメモリーを設定していると、仮想メモリーとスワップをかなり使用することになります。仮想メ
モリーは確実に低速であり、システムパフォーマンスとレスポンスの低下の原因となります。全てのゲストと
ホストが効率的に稼働できるように十分なメモリーを割り当てることを確認してください。
十分な仮想 CPU を仮想ゲストに割り当てます。ゲストがマルチスレッドのアプリケーションを実行する場
合は、ゲストが効率良く実行するのに必要な仮想化 CPU の数を割り当てます。ホストシステム上で利用
できる物理プロセッサ(又はハイパースレッド)の数量以上の仮想 CPU を割り当てないでください。仮想
44
プロセッサーの超過割り当ては可能ですが、超過割り当ては、プロセッサーのコンテキストがオーバーヘッ
ドを切り替えるため、ゲストとホストのパフォーマンスに重大な悪影響を与えます。
続けるために進むを押します。
11. ゲストのインストールを検証して開始する
設定を検証します。
45
第6章 Red Hat Enterprise Linux 5 の完全仮想化ゲストとしてのインストール
ゲストのインストール手順を開始するために終了を押します。
12. Red Hat Enterprise Linux のインストール
Red Hat Enterprise Linux インストール手順を完了します。インストール手順は用用用用用用用用用で取り扱わ
1
れています、Red Hat Enterprise Linux の用用用用用用用用用のために Red Hat Documentation を参照して
ください。
これで完全仮想化 Red Hat Enterprise Linux 5 ゲストがインストールの準備ができました。
1
http://redhat.com/docs
46
完全仮想化ゲストとしての Windows XP のインストール
Windows XP は完全仮想化ゲストとしてインストールされます。このセクションは、Fedora において完全仮想
化ゲストとして Windows XP をインストールする方法を説明しています。
この手順を実行する前に、root アクセス権を持たなければいけないことを確実にします。
1.
virt-manager の開始
アプリケーション > システムツール > 仮想マシンマネージャーを開きます。ホストへの接続を開きます(ファ
イル > 接続の追加をクリックします。新規仮想マシンを作成するために新規ボタンをクリックします。
2.
ゲストの命名
システム名を入力し、進むボタンをクリックします。
3.
仮想化の方式の選択
Choosing a virtualization method ウィンドウが表示されます。
47
第7章 完全仮想化ゲストとしての Windows XP のインストール
Full virtualization requires a processor with the AMD 64 and the AMD-V extensions or a
processor with the Intel 64 and Intel VT extensions. If the virtualization extensions are not
present, KVM will not be avilable.
続けるために進むを押します。
4.
インストール方式の選択
この画面はインストール方式とオペレーティングシステムの種類を指定できます。
OS Type 一覧から Windows を、OS Variant 一覧から Microsoft Windows XP を選択します。
PXE インストールは本章では取り扱いません。
48
イメージファイルと SELinux
ISO イメージファイルとゲストストレージファイルに対して、/var/lib/libvirt/images/ ディレクトリ
を使用することが推奨されます。他の位置はすべて、SELinux に対して追加の設定が必要になるか
もしれません。詳細は用SELinux 用用用用用を参照してください。
続けるために進むを押します。
5.
インストールイメージの選択
インストールイメージまたは CD-ROM を選択します。CD-ROM または DVD インストールのため
に、Windows のインストールディスクを持つデバイスを選択します。ISO Image Location を選択するなら
ば、Windows のインストール .iso イメージへのパスを入力します。
49
第7章 完全仮想化ゲストとしての Windows XP のインストール
続けるために進むを押します。
6.
ストレージウィンドウが表示されます。ディスクパーティション、LUN を選択するか、ゲストストレージ用の
ファイルベースのイメージを作成します。
すべてのイメージファイルは、/var/lib/libvirt/images/ ディレクトリに保存すべきです。ファイルベース
のイメージに対する他のディレクトリの位置は SELinux により禁止されます。SELinux を enforcing モー
ドで実行しているならば、ゲストのインストールに関する詳細は、用SELinux 用用用用用を参照してください。
ゲストがアプリケーションや他のデータのために追加のスペースを必要とするなら、追加のスペースを割り
当てます。たとえば、ウェブサーバはログファイルのために追加のスペースを必要とします。
50
ストレージ形式を選択するときにゲストに対して適切な容量を選び、進むボタンをクリックします。
注記
仮想マシンイメージに対してデフォルトのディレクトリ、/var/lib/libvirt/images/ を使用すること
が推奨されます。違うディレクトリ(この例にある /images/ のような)を使用しているならば、インス
トールを続ける前に、確実に SELinux ポリシーに追加して再ラベルしてください。(このドキュメント
ののちほど、SELinux ポリシーを変更する方法に関する情報があります。)
7.
ネットワークのセットアップ
仮想ネットワークもしくは共有物理デバイスを選択します。
仮想ネットワークのオプションは、デフォルトのネットワークデバイスを仮想ゲストと共有するため
に、Network Address Translation (NAT) を使用します。
51
第7章 完全仮想化ゲストとしての Windows XP のインストール
共有物理デバイスのオプションは、仮想ゲストにネットワークデバイスへの完全なアクセス権を与えるため
にネットワークボンディングを使用します。
続けるために進むを押します。
8.
Memory and CPU Allocation ウィンドウが表示されます。仮想 CPU と RAM の割り当てに対して適切
な値を選択します。これらの値はホストとゲストのパフォーマンスに影響します。
仮想ゲストは、効率的かつ効果的に実行するために、十分な物理メモリ(RAM)を必要とします。ゲストオ
ペレーティングシステムとアプリケーションの要件に合うメモリ値を選択します。多くのオペレーティングシ
ステムは、反応良く動作するために少なくとも 512MB を必要とするでしょう。覚えておいてください、ゲス
トは物理 RAM を使用します。多すぎるゲストを実行し、ホストシステムに十分なメモリが残されていない
と、仮想メモリとスワップの著しい使用してしまいます。仮想メモリは、低下したシステムパフォーマンスと反
応性を引き起こすような、非常に遅いものです。操作を効果的に行うために、ゲストとホストに対して十分
なメモリを確実に割り当ててください。
仮想ゲストに対して十分な仮想 CPU を割り当てます。ゲストがマルチスレッドのアプリケーションならば、
ゲストが効率よく動作するのに必要となる仮想 CPU の数を割り当てます。ホストシステムにおいて利用可
能な物理物理プロセッサ(またはハイパースレッド)より多い仮想 CPU を割り当てないでください。仮想プ
52
ロセッサを超過割り当てすることは可能です。しかしながら、超過割り当ては、プロセッサのコンテキストス
イッチのオーバーヘッドにより、ゲストとホストにおいて、重要で良くない影響があります。
9.
インストールを続ける前に、概要画面を見ます。ゲストのインストールを続けるために終了を押します。
53
第7章 完全仮想化ゲストとしての Windows XP のインストール
10. ハードウェアを選択しなければいけないため、インストール後すぐにコンソールウィンドウが開きます。終
了をクリックし、virt-manager の概要ウィンドウへ切り替え、新しく開始した Windows ゲストを選択しま
す。システム名をダブルクリックすると、コンソールウィンドウが開きます。新しい HAL を選択するために、す
ばやく繰り返し F5 を押します。一度 Windows インストールにおいてダイアログボックスが表示されると、
'Generic i486 Platform' タブを選択します。Up と Down 矢印を用いて選択をスクロールします。
54
11. インストールは、標準的な Windows インストールを続けます。
55
第7章 完全仮想化ゲストとしての Windows XP のインストール
12. プロンプトが出たときハードディスクのパーティションを作ります。
56
13. ドライブがフォーマットされた後、Windows はファイルをディスクにコピーし始めます。
57
第7章 完全仮想化ゲストとしての Windows XP のインストール
14. ファイルはストレージデバイスへコピーされ、Windows が再起動します。
15. Windows ゲストを再起動します:
58
# virsh start WindowsGuest
ここで WindowsGuest は仮想マシンの名前です。
16. コンソールウィンドウが開いたとき、Windows インストールのセットアップ段階を見ることができます。
17. セットアップ中にインストールが動かなくなったように思われるならば、virsh reboot
WindowsGuestName を用いてゲストを再起動します。仮想マシンを再起動するとき、Setup is being
restarted というメッセージが表示されます:
59
第7章 完全仮想化ゲストとしての Windows XP のインストール
18. セットアップが完了した後、Windows ブート画面が見えます。
60
19. これで Windows インストールの標準的なセットアップを続けることができます:
61
第7章 完全仮想化ゲストとしての Windows XP のインストール
20. セットアッププロセスが完了しました。
62
63
64
完全仮想化ゲストとしての Windows Server 2003 のインス
トール
本章は、virt-install コマンドを用いて完全仮想化の Windows Server 2003 のゲストをインストールする
ことについて記載しています。virt-install は、virt-manager の代わりに使うことができます。このプロセス
は、7用用用用用用用用用用用用用 Windows XP 用用用用用用用で取り扱われている Windows XP のインストールを似ていま
す。
1.
Windows Server 2003 をインストールするために virt-install を使用すると、Windows ゲストに対す
るコンソールとして、virt-viewer ウィンドウをすぐに開きます。以下の例は、virt-install コマンドを用い
て Windows Server 2003 のゲストをインストールします。
例8.1 KVM の virt-install
# virt-install --accelerate --hvm --connect qemu:///system \
--name rhel3support \
--network network:default \
--file=/var/lib/libvirt/images/windows2003sp2.img \
--file-size=6 \
--cdrom=/var/lib/libvirt/images/ISOs/WIN/en_windows_server_2003_sp1.iso \
--vnc --ram=1024
2.
インストール中にゲストがブートすると、すばやく F5 を押さなければいけません。適切なタイミングで
F5 を押さないと、インストールを再開始する必要があるでしょう。F5 を押すことにより、違う HAL また
は Computer Type を選択できるようになります。Computer Type として Standard PC を選択しま
す。Windows Server 2003 の仮想化ゲストには、Computer Type の変更が必要になります。
3.
インストールの残りを完了します。
65
第8章 完全仮想化ゲストとしての Windows Server 2003 のインストール
66
4.
これで Windows Server 2003 が完全仮想化ゲストとしてインストールされました。
67
68
完全仮想化ゲストとしての Windows Server 2008 のインス
トール
このセクションは、Fedora において完全仮想化ゲストとして Windows Server 2008 をインストールする方法
を説明しています。
手順9.1 virt-manager を用いた Windows Server 2008 のインストール
1. virt-manager のオープン
virt-manager を開始します。アプリケーション メニュー内の システムツール サブメニューから 仮想マシ
ン マネージャ アプリケーションを起動します。別の方法としては、root として virt-manager コマンドを実
行します。
2.
ハイパーバイザの選択
ハイパーバイザを選択します。今のところ、KVM ハイパーバイザは qemu という名前であることに注意して
ください。
オプションが選択されると、新規 ボタンが使用可能になります。新規ボタンを押します。
3.
新規仮想マシンウィザードの開始
新規ボタンを押して仮想マシンの作成ウィザードを開始します。
69
第9章 完全仮想化ゲストとしての Windows Server 2008 のインストール
続けるために進むを押します。
4.
70
ゲストの命名
次の文字がゲスト名に許可されます: '_', '.' および '-' 文字。
続けるために進むをクリックします。
5.
仮想化方式の選択
Choosing a virtualization method ウィンドウが表示されます。
Full virtualization requires a processor with the AMD 64 and the AMD-V extensions or a
processor with the Intel 64 and Intel VT extensions. If the virtualization extensions are not
present, KVM will not be avilable.
71
第9章 完全仮想化ゲストとしての Windows Server 2008 のインストール
続けるために進むをクリックします。
6.
インストール方式の選択
Windows のすべてのバージョンに対して、ローカルインストールメディア(ISO イメージまたは物理光学メ
ディア)を使用します。
Windows のネットワークインストールのために PXE サーバが設定されている場合は、PXE を使用できま
す。このガイドは PXE の Windows インストールを説明していません。
以下のスクリーンショットにあるように、OS Type を Windows へ、OS Variant を Microsoft Windows
2008 へ設定します。
72
続けるために進むボタンを押します。
7.
インストールメディアの位置の指定
ISO イメージの位置、または CD-ROM か DVD のデバイスを選択します。この例では、Windows Server
2008 のインストール CD 用の ISO ファイルイメージを使用します。
a.
閲覧ボタンを押します。
b.
ISO ファイルの位置を検索し、それを選択します。
73
第9章 完全仮想化ゲストとしての Windows Server 2008 のインストール
選択を確認するために開くを押します。
c.
74
ファイルが選択され、インストールの準備ができました。
続けるために進むを押します。
イメージファイルと SELinux
ISO イメージファイルとゲストストレージファイルに対して、使用するのを推奨されるディレクトリは、/
var/lib/libvirt/images/ ディレクトリです。他の位置はすべて、SELinux に対して追加の設定が
必要になるかもしれません。詳細は用SELinux 用用用用用を参照してください。
8.
ストレージのセットアップ
物理ストレージデバイス(Block device)またはファイルベースのイメージ(File)を割り当てます。ファイル
ベースのイメージは、/var/lib/libvirt/images/ ディレクトリに保存されなければいけません。仮想ゲス
トに対して十分な容量とゲストが必要とするあらゆるアプリケーションを割り当てます。
75
第9章 完全仮想化ゲストとしての Windows Server 2008 のインストール
続けるために進むを押します。
9.
ネットワークのセットアップ
仮想ネットワークまたは共有物理デバイスのいずれかを選択します。
仮想ネットワークオプションは、NAT (Network Address Translation) を使用して、デフォルトのネット
ワークデバイスを仮想ゲストと共有します。仮想ネットワークオプションをワイヤレスネットワークに使用して
ください。
共有物理デバイスのオプションは、仮想ゲストにネットワークデバイスへの完全なアクセス権を与えるため
に、ネットワークボンディングを使用します。
76
続けるために進むを押します。
10. メモリーと CPU の割り当て
Memory and CPU Allocation ウィンドウが表示されます。仮想 CPU と RAM 割り当てに対して適切な
値を選択します。これらの値は、ホストとゲストのパフォーマンスに影響を与えます。
仮想化ゲストは、効率的にそして効果的に稼働するために十分な物理メモリ(RAM)を必要とします。使用
するゲストオペレーティングシステムとアプリケーションの必要性に適合するメモリの値を選択します。ゲス
トは物理 RAM を使用することを忘れないで下さい。過度の数のゲストを稼働したり、ホストシステム用に
不十分なメモリを設定していると、仮想メモリとスワップをかなり消費することになります。仮想メモリは確
実に低速であり、システムパフォーマンスと反応性の低下の原因となります。 すべてのゲストとホストが効
率的に稼働できるように十分なメモリを割り当てることを確認してください。
十分な仮想 CPU を仮想ゲストに割り当てます。ゲストがマルチスレッドのアプリケーションを実行する場
合は、ゲストが効率良く実行するのに必要な仮想化 CPU の数を割り当てます。ホストシステム上で利用
できる物理プロセッサ(またはハイパースレッド)の数量以上の仮想 CPU を割り当てないでください。仮想
プロセッサの超過割り当ては可能ですが、超過割り当ては、プロセッサのコンテキストスイッチのオーバー
ヘッドのため、ゲストとホストのパフォーマンスに重大な悪影響を与えます。
77
第9章 完全仮想化ゲストとしての Windows Server 2008 のインストール
続けるために進むを押します。
11. ゲストのインストールを確認して起動します。
設定を確認します。
78
ゲストのインストール手順を開始するために終了を押します。
79
第9章 完全仮想化ゲストとしての Windows Server 2008 のインストール
12. Windows のインストール
一連のWindows Server 2008インストールを完了します。インストール手順はこのガイドで取り扱われて
1
いません、Windowsのインストールに関する詳細はMicrosoftのdocumentation を参照してください。
1
http://microsoft.com/support
80
パート III. 設定
Fedora における仮想化の設定
これらの章は、さまざまな高度な仮想化の作業に対する設定手順を取り扱います。これらの作業は、ネットワー
クおよびストレージの追加、セキュリティ強化、パフォーマンス向上、および完全仮想化ゲストにおける用用用用用用用
用の使用を含んでいます。
Virtualized storage devices
This chapter covers installing and configuring storage devices in virtualized guests. The term
block devices refers to various forms of storage devices. All the procedures in this chapter work
with both Xen and KVM hypervisors.
Valid disk targets
The target variable in libvirt configuration files accepts only the following device names:
• /dev/xvd[a to z][1 to 15]
Example: /dev/xvdb13
• /dev/xvd[a to i][a to z][1 to 15]
Example: /dev/xvdbz13
• /dev/sd[a to p][1 to 15]
Example: /dev/sda1
• /dev/hd[a to t][1 to 63]
Example: /dev/hdd3
10.1. 仮想フロッピーディスクコントローラーの作成方法
Floppy disk controllers are required for a number of older operating systems, especially for
installing drivers. Presently, physical floppy disk devices cannot be accessed from virtualized
guests. However, creating and accessing floppy disk images from virtualized floppy drives is
should work. This section covers creating a virtualized floppy device.
An image file of a floppy disk is required. Create floppy disk image files with the dd command.
Replace /dev/fd0 with the name of a floppy device and name the disk appropriately.
# dd if=/dev/fd0 of=~/legacydrivers.img
This example uses a guest created with virt-manager running a fully virtualized Fedora
installation with an image located in /var/lib/libvirt/images/Fedora.img. The Xen hypervisor is
used in the example.
1.
実行中のゲストに virsh コマンドを使用してゲストイメージの XML 設定ファイルを作成します。
# virsh dumpxml Fedora > rhel5FV.xml
This saves the configuration settings as an XML file which can be edited to customize the
operations and devices used by the guest. For more information on using the virsh XML
configuration files, refer to 31用用用用用 libvirt 用用用用用用用用.
2.
ゲスト用フロッピーディスクイメージの作成
# dd if=/dev/zero of=/var/lib/libvirt/images/Fedora-floppy.img bs=512 count=2880
83
第10章 Virtualized storage devices
3.
Add the content below, changing where appropriate, to your guest's configuration XML file.
This example is an emulated floppy device using a file-based image.
<disk type='file' device='floppy'>
<source file='/var/lib/libvirt/images/Fedora-floppy.img'/>
<target dev='fda'/>
</disk>
4.
Force the guest to stop. To shut down the guest gracefully, use the virsh shutdown command
instead.
# virsh destroy Fedora
5.
XML 設定ファイルを使用してゲストを再起動します。
# virsh create Fedora.xml
フロッピーデバイスは、この時点でゲストで利用可能となり、ホストにイメージファイルとして保存されます。
10.2. ゲストへのストレージデバイスの追加
This section covers adding storage devices to virtualized guest. Additional storage can only be
added after guests are created. The might work storage devices and protocol include:
• ローカルハードディスクのパーティション
• 論理ボリューム、
• ファイバーチャネルまたは iSCSI (ホストに直接接続されたもの)。
• ホストのファイルシステムに存在するファイルコンテナー
• 仮想マシンにより直接マウントされている NFS ファイルシステム
• ゲストにより直接アクセスされる iSCSI ストレージ
• クラスターファイルシステム (GFS)
Adding file-based storage to a guest
ファイルベースのストレージやファイルベースのコンテナーは、仮想ゲストに対して仮想ハードディスクとして動
作する、ホストのファイルシステムにあるファイルです。ファイルベースのコンテナーを追加するには、以下の手順
を実行します:
1.
空のコンテナーファイルを作成するか、既存のファイルコンテナ ( ISO イメージファイルなど) を使用します。
a.
dd コマンドを使用して sparse ファイルを作成します。sparse ファイルは、データの完全性とパフォー
マンスの問題のため推奨できません。sparse ファイルは、より素早く作成され、テストに使えますが、
実動環境では使うべきではありません。
# dd if=/dev/zero of=/var/lib/libvirt/images/FileName.img bs=1M seek=4096 count=0
b.
84
Non-sparse, pre-allocated files are recommended for file-based storage images. Create a
non-sparse file, execute:
ゲストへのストレージデバイスの追加
# dd if=/dev/zero of=/var/lib/libvirt/images/FileName.img bs=1M count=4096
どちらのコマンドも仮想ゲスト用に追加のストレージとして使用できる 400MB のファイルを作成します。
2.
ゲストの設定をダンプします。この例では、ゲストは Guest1 という名前であり、ファイルはユーザーのホー
ムディレクトリに保存されます。
# virsh dumpxml Guest1 > ~/Guest1.xml
3.
Open the configuration file (Guest1.xml in this example) in a text editor. Find the <disk>
elements, these elements describe storage devices. The following is an example disk
element:
<disk type='file' device='disk'>
<driver name='tap' type='aio'/>
<source file='/var/lib/libvirt/images/Guest1.img'/>
<target dev='xvda'/>
</disk>
4.
Add the additional storage by duplicating or writing a new <disk> element. Ensure you
specify a device name for the virtual block device attributes. These attributes must be unique
for each guest configuration file. The following example is a configuration file section which
contains an additional file-based storage container named 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>
5.
更新された設定ファイルからゲストを再起動します。
# virsh create Guest1.xml
6.
The following steps are Linux guest specific. Other operating systems handle new storage
devices in different ways. For other systems, refer to that operating system's documentation
ゲストはこの時点で、ファイル FileName.img を /dev/hdb というデバイスとして使用します。このデバイス
はゲストからフォーマットする必要があります。ゲストにおいて、 デバイス全体に対して一つの基本パーティ
ションへとを設定します、そしてそのデバイスをフォーマットします。
a.
新規パーティション作成のために n を押します。
# fdisk /dev/hdb
Command (m for help):
b.
基本パーティション用に p を押します。
85
第10章 Virtualized storage devices
Command action
e
extended
p
primary partition (1-4)
c.
利用可能なパーティション番号を1つ選択します。この例では、1 を入力して、最初のパーティションが
選択されます。
Partition number (1-4): 1
d.
Enter を押してデフォルトの最初のシリンダを入力します。
First cylinder (1-400, default 1):
e.
パーティションのサイズを選択します。この例では Enter を押してディスク全体が割り当てられます。
Last cylinder or +size or +sizeM or +sizeK (2-400, default 400):
f.
t を押して パーティションのタイプをセットします。
Command (m for help): t
g.
Choose the partition you created in the previous steps. In this example, the partition
number is 1.
Partition number (1-4): 1
h.
linux パーティションとして 83 を入力します。
Hex code (type L to list codes): 83
i.
ディスクに変更を書き込み、終了します。
Command (m for help): w
Command (m for help): q
j.
ext3 ファイルシステムで新規パーティションをフォーマットします。
# mke2fs -j /dev/hdb
7.
ゲストでディスクをマウントします。
# mount /dev/hdb1 /myfiles
これでゲストは仮想化されたファイルベースのストレージデバイスを持ちます。
86
Configuring persistent storage in Fedora
ゲストへハードディスクと他のブロックデバイスの追加
System administrators use additional hard drives for to provide more storage space or to
separate system data from user data. This procedure, 用用10.1用用用用用用用用用用用用用用用用用用用用用用, describes
how to add a hard drive on the host to a virtualized guest.
この手順は、全ての物理ブロックデバイスに適用できます。これには、CD-ROM, DVD およびフロッピーディスク
が含まれます。
Block device security
The host should not use disk labels to identify file systems in the fstab file, the initrd file or
used by the kernel command line. If less privileged users, especially virtualized guests, have
write access to whole partitions or LVM volumes the host system could be compromised.
Guest should not be given write access to whole disks or block devices (for example, /dev/
sdb). Virtualized guests with access to block devices may be able to access other block
devices on the system or modify volume labels which can be used to compromise the host
system. Use partitions (for example, /dev/sdb1) or LVM volumes to prevent this issue.
手順10.1 仮想ゲストへの物理ブロックデバイスの追加
1. ハードディスクデバイスをホストへ物理的に取り付けます。ドライブがデフォルトでアクセスできない場合、
ホストを設定します。
2.
multipath を使ってデバイスを設定し、必要があればホストで永続化します。
3.
Use the virsh attach command. Replace: myguest with your guest's name, /dev/hdb1 with
the device to add, and hdc with the location for the device on the guest. The hdc must be
an unused device name. Use the hd* notation for Windows guests as well, the guest will
recognize the device correctly.
--type hdd パラメータを D-ROM や DVD デバイス用のコマンドに追加します。
--type floppyパラメータをフロッピーデバイス用のコマンドに追加します。
# virsh attach-disk myguest
/dev/hdb1
hdc --driver tap --mode readonly
4.
これで、ゲストは Linux における /dev/hdb という新規ハードディスクデバイス、もしくは Windows におけ
る D: ドライブや似たものを持ちます。このデバイスはフォーマットが必要かもしれません。
10.3. Configuring persistent storage in Fedora
このセクションは、外部もしくはネットワークのストレージを持つシステムのためです。それは、ファイバーチャネル
や iSCSI ベースのストレージデバイスです。それらのシステムはホストに対して設定された永続的な名前を持
つことが推奨されます。これが、複数の仮想システムに対して一貫したデバイス名とストレージを提供するだけ
でなく、ライブマイグレーションを助けます。
UUID (Universally Unique Identifiers) は、分散コンピューティング環境においてコンピュータとデバイスを
識別するために標準化された方式です。このセクションは iSCSI やファイバーチャネルの LUN を識別するため
に UUID を用います。UUID は、再起動、切断や装置交換の後でも持続します。UUID はデバイスにおけるラベ
ルに似ています。
87
第10章 Virtualized storage devices
Systems which are not running multipath must use 用用用用用用用用用. Systems running multipath can
use 用用用用用用用用.
シングルパスの設定
この手順は udev を使用して LUN デバイスの永続化を実装します。この手順は multipath を使用していない
ホストに対してのみ使用してください。
1.
/etc/scsi_id.config ファイルを編集します。
•
次の行を追加します。
options=--whitelisted --replace-whitespace
This sets the default options for scsi_id, ensuring returned UUIDs contains no spaces.
The IET iSCSI target otherwise returns spaces in UUIDs, which can cause problems.
2.
To display the UUID for a given device run the scsi_id --whitelisted --replace-whitespace
--device=/dev/sd* command. For example:
# scsi_id --whitelisted --replace-whitespace --device=/dev/sdc
1IET_00010001
The output may vary from the example above. The output in this example displays the UUID
of the device /dev/sdc.
3.
Verify the UUID output from the scsi_id --whitelisted --replace-whitespace --device=/
dev/sd* command is correct and as expected.
4.
デバイスの命名ルールを作成します。/etc/udev/rules.d ディレクトリに 20-names.rules というファイル
を作成します。このファイルに新規ルールを追加します。全てのルールは同じ形式を使用して同じファイル
に追加されます。ルールは以下の形式に従います:
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM="/sbin/scsi_id --whitelisted --replace-whitespace /dev/$name",
RESULT=="UUID", NAME="devicename"
Replace UUID and devicename with the UUID retrieved above, and a name for the device.
This is an example for the rule above:
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM="/sbin/scsi_id --whitelisted --replace-whitespace /dev/$name",
RESULT=="1IET_00010001", NAME="rack4row16lun1"
The udev daemon now searches all devices named /dev/sd* for the UUID in the rule. Once
a matching device is connected to the system the device is assigned the name from the
rule. In the example above, a device with a UUID of 1IET_00010001 will appear as /dev/
rack4row16lun1.
5.
Copy the changes in /etc/scsi_id.config and /etc/udev/rules.d/20-names.rules to all
relevant hosts.
ここで、設定済みのルールを持つネットワークストレージデバイスは、ファイルが更新されたすべてのホスト上で
永続化した名前を持ちます。このことは、共有ストレージを使用してホスト間でゲストをマイグレーションでき、ゲ
ストはそれらの設定ファイルにおいてストレージデバイスにアクセスできることを意味します。
88
ゲストへの仮想 CD-ROM や DVD デバイスの追加
マルチパスの設定
The multipath package is used for systems with more than one physical path from the computer
to storage devices. multipath provides fault tolerance, fail-over and enhanced performance for
network storage devices attached to Fedora systems.
Implementing LUN persistence in a multipath environment requires defined alias names for your
multipath devices. Each storage device has a UUID which acts as a key for the aliased names.
Identify a device's UUID using the scsi_id command.
# scsi_id --whitelisted --replace-whitespace --device=/dev/sdc
multipath デバイスは /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
}
}
This configuration will create 4 LUNs named /dev/mpath/oramp1, /dev/mpath/oramp2, /dev/mpath/
oramp3 and /dev/mpath/oramp4. Once entered, the mapping of the devices' WWID to their new
names are now persistent after rebooting.
10.4. ゲストへの仮想 CD-ROM や DVD デバイスの追加
To attach an ISO file to a guest while the guest is online use virsh with the attach-disk
parameter.
# virsh attach-disk [domain-id] [source] [target] --driver file --type cdrom --mode readonly
The source and target parameters are paths for the files and devices, on the host and guest
respectively. The source parameter can be a path to an ISO file or the device from the /dev
directory.
89
90
ネットワーク設定
このページは、libvirt ベースのアプリケーションによって用いられる、一般的なネットワーク設定について紹介し
ています。さらなる詳細については libvirt のネットワークアーキテクチャーのドキュメントを参照してください。
一般的な2つの設定として「仮想ネットワーク」と「共有物理デバイス」があります。前者は、すべてのディストリ
ビューションで同一であり、そのまますぐに利用できます。後者は、ディストリビューション固有の手動設定が必
要です。
仮想ゲストにおけるネットワークサービスは、デフォルトで外部のホストからアクセスできません。
11.1. libvirt を用いた NAT (Network address translation)
ネットワーク接続を共有するための最も一般的な方法の1つは、NAT (Network address translation) 転送
(別名、仮想ネットワーク)です。
ホストの設定
標準的な libvirt インストールはすべて、そのままで仮想マシンに NAT ベースの接続性を提供します。これは
いわゆる「デフォルト仮想ネットワーク」です。
# virsh net-list --all
Name
State
Autostart
----------------------------------------default
active
yes
存在しない場合は、サンプルの XML 設定ファイルを再読み込みしてアクティベートします:
# 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
Once the libvirt default network is running, you will see an isolated bridge device. This device
does not have any physical interfaces added, since it uses NAT and IP forwarding to connect to
outside world. Do not add new interfaces.
# brctl show
bridge name
virbr0
bridge id
8000.000000000000
STP enabled
yes
interfaces
libvirt は、ゲストとのトラフィックを許可する iptables ルールを追加します。このゲストは
INPUT、FORWARD、OUTPUT、および POSTROUTING のチェーン内の virbr0 デバイスに接続しています。libvirt は
それから、 ip_forward パラメーターの有効化を試みます。他の一部のアプリケーションが ip_forward を無効
にする可能性があるため、最善の選択肢は/etc/sysctl.conf に以下を追加することです。
net.ipv4.ip_forward = 1
91
第11章 ネットワーク設定
ゲストの設定
ホストの設定が完了すると、ゲストはその名前に基づき仮想ネットワークへ接続できます。ゲストを「デフォルト」
の仮想ネットワークに接続するために、以下の XML がゲストで用いられます:
<interface type='network'>
<source network='default'/>
</interface>
注記
MAC アドレスの定義はオプションです。省略すると MAC アドレスは自動的に生成されます。MAC アドレ
スの手動設定は特定の状況で役に立ちます。
<interface type='network'>
<source network='default'/>
<mac address='00:16:3e:1a:b3:4a'/>
</interface>
11.2. libvirt を使用したブリッジネットワーク
ブリッジネットワーク(別名、物理デバイス共有)は、物理デバイスを仮想マシンに専用にさせるために使用しま
す。ブリッジは多くの場合、高度なセットアップや複数のネットワークインターフェイスを持つサーバー上で使用さ
れます。
NetworkManager を無効にする
NetworkManager はブリッジをサポートしません。NetworkManager を無効にしてネットワークスクリプト(/
etc/sysconfig/network-scripts/ ディレクトリ内に存在)を介したネットワーキングを使用する必要がありま
す。
#
#
#
#
chkconfig NetworkManager off
chkconfig network on
service NetworkManager stop
service network start
注記
NetworkManager を無効にする代わりに、"NM_CONTROLLED=no" を例で使用されている ifcfg-* ス
クリプトに追加します。
Creating network initscripts
Create or edit the following two network configuration files. This step can be repeated (with
different names) for additional network bridges.
/etc/sysconfig/network-scripts ディレクトリに移動します:
# cd /etc/sysconfig/network-scripts
92
libvirt を使用したブリッジネットワーク
ブリッジに追加するデバイス用のネットワークスクリプトを開きます。この例では、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 変数を追加することで、デバイスの Maximum Transfer Unit (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
93
第11章 ネットワーク設定
ブリッジにおける iptables の無効化
別の方法としては、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
Restart the libvirt daemon.
# service libvirtd reload
You should now have a "shared physical device", which guests can be attached and have full LAN
access. Verify your new bridge:
# brctl show
bridge name
virbr0
br0
bridge id
8000.000000000000
8000.000e0cb30550
STP enabled
yes
no
interfaces
eth0
注記:このブリッジは完全に virbr0 ブリッジから独立しています。 物理デバイスを virbr0 に接続しようと 用用用
用用用用用用 virbr0 ブリッジは NAT (Network Address Translation) 接続機能だけのために あります。
94
KVM 準仮想化ドライバー
準仮想化ドライバーは、KVM ホストを稼働している 仮想化した Windows ゲストで使用できます。これらの準
仮想化ドライバーは virtio パッケージに収納されており、virtio パッケージはブロック(ストレージ) デバイスと
ネットワークインターフェイスコントローラーをサポートします。
準仮想化ドライバーは完全仮想化ゲストのパフォーマンスを強化します。 準仮想化ドライバーを使用すると、ゲ
スト I/O 遅延は減少し、スループットは ベアメタルレベル近くまで向上します。I/O が重いタスクやアプリケー
ションを実行している 完全仮想化ゲストには、準仮想化ドライバーの使用が推奨されます。
KVM 準仮想化ドライバーは、以下において自動的にロードされ、インストールされます:
• Any 2.6.27 or newer kernel.
• Newer Ubuntu, CentOS, Red Hat Enterprise Linux.
これらのバージョンの Linux はドライバーを検出してインストールするので、追加のインストール手順は必要あ
りません。
注記
PCI デバイスは仮想システムアーキテクチャによって制限されています。ゲストに対して 32 の利用可能
な PCI デバイスの中から2つは取り外し可能ではありません。これは、追加のデバイスとしてゲストあたり
30 までのPCIスロットが利用可能ということを意味します。各 PCI デバイスは 8 までのファンクションを持
てます;いくつかの PCI デバイスは複数のファンクションを持ち、スロットを1つだけ利用します。準仮想化
ネットワーク、準仮想化ディスクデバイス、もしくは VT-d を用いる他の PCI デバイスは、すべてスロットま
たはファンクションを使用します。利用可能なデバイスの正確な数は、利用可能なデバイスの数のため、
計算することは難しいです。各ゲストは、各デバイスが8までのファンクションを持つ、32までの PCI デバイ
スを使用できます。
以下の Microsoft Windows のバージョンは KVM の準仮想化ドライバーが動作します:
• Windows XP (32-bit のみ)
• Windows Server 2003 (32-bit および 64-bit バージョン)
• Windows Server 2008 (32-bit および 64-bit バージョン)
• Windows 7 (32-bit および 64-bit バージョン)
12.1. KVM Windows 準仮想化ドライバーのインストール
このセクションでは、KVM Windows 準仮想化ドライバーのインストール プロセスを取り扱います。KVM 準仮
想化ドライバーは Windows のインストール中に、 ロードするか 又はゲストのインストール後にインストールす
ることができます。
以下の方法のどれかによって、ゲストに準仮想化ドライバーをインストールできます:
• ゲストへアクセス可能なネットワークにインストールファイルを置く、
• ドライバインストールディスクの .iso ファイルを仮想 CD-ROM ドライブを利用する、もしくは
• ブートしている間にドライバをインストールするために仮想フロッピーディスクを用いる(Windows ゲストに
対して)。
95
第12章 KVM 準仮想化ドライバー
このガイドは、仮想 CD-ROM ドライブとして準仮想化インストールディスクからインストールすることについて
記載しています。
1.
ドライバーをダウンロード
virtio-win パッケージは、すべての Windows ゲストで機能するために、準仮想化ブロックドライバーとネッ
トワークドライバーを含みます。
Download the virtio-win package with the yum command.
# yum install virtio-win
1
ドライバは、Microsoft (windowsservercatalog.com ) からも手に入れられます。
virtio-win パッケージは CD-ROM イメージ(virtio-win.iso ファイル)を /usr/share/virtio-win/ ディ
レクトリ内にインストールします。
2.
準仮想化ドライバーのインストール
デバイスを添付や修正して準仮想化ドライバーを使用する前に、 ゲスト上にドライバーをインストールする
ことが推奨されます。
root ファイルシステムを格納しているブロックデバイス、またはゲストのブートに必要となる他のブロックデ
バイスには、ドライバーはデバイスが修正される前にインストールされなければなりません。ゲスト上にドラ
イバーがインストールされていなくて、ドライバーが virtio ドライバーに セットされている場合は、ゲストは
ブートしません。
仮想CD-ROMでのドライバのインストール
この手順は、Windows のインストール後に、仮想 CD-ROM で準仮想化ドライバーをインストールことを取り
扱っています。
virt-manager で CD-ROM イメージを追加するには 用用12.1用Windows 用用用用用 virt-manager 用用用用用 CDROM 用用用用用 用用用用用 に従い、ドライバーをインストールします。
手順12.1 Windows ゲスト用に virt-manager を使用して CD-ROM イメージを マウント
1. virt-manager と仮想ゲストを開きます。
virt-manager を開き、ゲスト名をダブルクリックして、リストから仮想ゲストを選択します。
2.
1
ハードウェアタブを開きます。
ハードウェアタブにあるハードウェアの追加ボタンをクリックします。
http://www.windowsservercatalog.com/results.aspx?text=Red
+Hat&bCatID=1282&avc=10&ava=0&OR=5&=Go&chtext=&cstext=&csttext=&chbtext=
96
KVM Windows 準仮想化ドライバーのインストール
3.
デバイスの種類を選択します。
これで新規デバイス追加のウィザードが開きます。ドロップダウンメニューからストレージを選択します。
97
第12章 KVM 準仮想化ドライバー
進むボタンをクリックして進めます。
4.
ISO ファイルを選択します。
ファイル(ディスクイメージ)オプションを選択し、準仮想化ドライバーの .iso イメージファイルがあるファイ
ルの場所をセットします。
ドライバーが物理 CD 内に格納されている場合は、通常のディスクパーティション オプションを使用しま
す。
デバイスの種類に IDE cdrom をセットし、進むをクリックして進みます。
98
KVM Windows 準仮想化ドライバーのインストール
5.
ディスク割り当て
ゲストが開始されると、ディスクが割り当てられ、ゲストで利用可能になります。終了をクリックしてウィザー
ドを閉じるか、間違えたならば戻ります。
99
第12章 KVM 準仮想化ドライバー
6.
再起動
新規デバイスを追加するためにゲストを再起動または開始します。仮想IDEデバイスはゲストによって認識
される前に再起動する必要があります。
ドライバを持つ CD-ROM が接続されると、ゲストが開始され、用用12.2用Windows 用用用用用用用用を始めます。
手順12.2 Windows のインストール
1. マイコンピュータを開きます。
Windows ゲストにおいて、マイコンピュータを開いて、CD-ROM ドライブを選択します。
100
KVM Windows 準仮想化ドライバーのインストール
2.
正しいインストールファイルを選択します。
ディスクにおいて利用可能なファイルが4個あります。ゲストのアーキテクチャに必要となるドライバーを選
択します:
• 準仮想化ブロックデバイスドライバー(32-bit ゲスト用の RHEV-Block.msi または 64-bit ゲスト用の
RHEV-Block64.msi)、
• 準仮想化ネットワークデバイスドライバー(32-bit ゲスト用の RHEV-Network.msi または 64-bit ゲスト
用の RHEV-Block64.msi)、
• もしくは、ブロックとネットワークのデバイスドライバ両方とも。
インストールファイルをダブルクリックしてドライバをインストールします。
3.
ブロックデバイスドライバをインストールします。
a. ブロックデバイスドライバのインストールを開始します。
RHEV-Block.msi または RHEV-Block64.msi をダブルクリックします。
101
第12章 KVM 準仮想化ドライバー
次へを押して進みます。
b.
例外を確認します。
Windows はセキュリティ例外を表示するかもしれません。
もし正しければ、はいを押します。
102
KVM Windows 準仮想化ドライバーのインストール
c.
終わりです。
終了を押してインストールを完了します。
4.
ネットワークデバイスドライバのインストール
a. ネットワークデバイスドライバのインストールを開始します。
RHEV-Network.msi または RHEV-Network64.msi をダブルクリックします。
103
第12章 KVM 準仮想化ドライバー
次へを押して進みます。
b.
パフォーマンスの設定
この画面はネットワークドライバーの高度な TCP セッティングを設定します。TCP タイムスタンプと
TCP ウィンドウスケーリングは有効または無効にできます。デフォルトは、ウィンドウスケーリングが有
効になる、1です。
2
TCP ウィンドウスケーリングは IETF RFC 1323 で取り扱われています。RFC は、受信ウィン
ドウサイズを、デフォルトの最大値の 65,535 バイトよりも大きなサイズを新しい最大値 1GB
(1,073,741,824 bytes) まで増加する方法を定義します。TCP ウィンドウスケーリングはネットワーク
が地理的により近いネットワークの帯域制限で転送することを許可します。より大きな受信ウィンドウ
は、いくつかのネットワークハードウェアやオペレーティングシステムによって動作すべきではないかも
しれません。
3
TCP タイムスタンプも IETF RFC 1323 により定義されています。TCP タイムスタンプは、パケットに
埋め込まれているタイミング情報を埋め込むことによって、Return Travel Time をより良く計算され
ます。TCP タイプスタンプは、システムがトラフィックレベルの変更を適用したり、忙しいネットワークに
おける混雑問題を避けたりするのを助けます。
値
0
1
2
3
http://tools.ietf.org/html/rfc1323
http://tools.ietf.org/html/rfc1323
104
アクション
TCP タイムスタンプとウィンドウスケーリングを無効にします。
TCP ウィンドウスケーリングを有効にします。
KVM Windows 準仮想化ドライバーのインストール
値
2
3
アクション
TCP タイムスタンプを有効にします。
TCP タイムスタンプとウィンドウスケーリングを有効にします。
次へを押して進みます。
c.
例外を確認します。
Windows はセキュリティ例外を表示するかもしれません。
105
第12章 KVM 準仮想化ドライバー
もし正しければ、はいを押します。
d.
終わりです。
終了を押してインストールを完了します。
5.
再起動
ゲストを再起動してドライバーのインストールを完了します。
準仮想化ドライバーを用いるようにデバイス設定を変更する(用用用用用用用用用 KVM 用用用用用用用用用用用用用用用)、もしく
は準仮想化ドライバーを用いる新規デバイスをインストールする(用用用用用用用用用 KVM 用用用用用用用用用用用用用用用)。
12.2. 仮想フロッピーディスクでのドライバーのインストール
この手続きは Windows のインストール時に準仮想化ドライバーの インストールをします。
•
106
一度限りのメニューを使用して Windows VM を初めてインストールしたら、 viostor.vfd をフロッピーと
して添付します。
a.
Windows Server 2003
Windows がサードパーティドライバー用に F6 を押すように促したら、それを押して画面上の指示に
従います。
b.
Windows Server 2008
インストーラーがドライバーを催促した時には、 Load Driver をクリックして、 インストーラをドライブ
A: にポイントし、使用中のゲスト OS と アーキテクチャーに適合するドライバーを選択します。
既存のデバイスに KVM 準仮想化ドライバーを使用する
12.3. 既存のデバイスに KVM 準仮想化ドライバーを使用する
ゲストに接続されている既存のハードディスクドライブを、仮想 IDE ドライバの代わりに virtio ドライバを使用
するように修正します。この例は、libvirt 設定ファイルを編集します。代わりに、virt-manager, virsh attachdisk, virsh attach-interface が準仮想化ドライバーを使用する新規デバイスを追加できます(用用用用用用用用用
KVM 用用用用用用用用用用用用用用用)。
1.
仮想化した IDE ドライバーを使用したファイルベースのブロックデバイスを以下に示します。 これは、準仮
想化ドライバーを使用しない仮想化ゲストの標準的なエントリです。
<disk type='file' device='disk'>
<source file='/var/lib/libvirt/images/disk1.img'/>
<target dev='hda' bus='ide'/>
</disk>
2.
bus= エントリを virtio に 変更することにより、準仮想化デバイスを使用するためにエントリを変更しま
す。
<disk type='file' device='disk'>
<source file='/var/lib/libvirt/images/disk1.img'/>
<target dev='hda' bus='virtio'/>
</disk>
12.4. 新規デバイス用に KVM 準仮想化ドライバーを使用する
この手続きは、virt-manager で、KVM 準仮想化ドライバーを使用した新規デバイスの作成を示しています。
別の方法として、準仮想化ドライバーを使用するデバイスを添付するために virsh attach-disk か virsh
attach-interface のコマンドが使用できます。
ドライバーを最初にインストールします
新規のデバイスをインストールする前に、Windows ゲスト上にドライバーが インストールされていること
を確認します。ドライバーが利用できない場合は、 デバイスは認識されず機能しません。
1.
virt-manager 内のゲスト名をダブルクリックして 仮想化ゲストを開きます。
2.
ハードウェア タブを開きます。
3.
ハードウェアを追加 をクリックします。
4.
仮想ハードウェアの追加タブで、デバイスのタイプに ストレージ または ネットワーク を選択します。
1. 新規ディスクデバイス
ストレージデバイスか、またはファイルベースイメージを選択します。Virtio Disk を デバイスタイプ とし
て選び、進む をクリックします。
107
第12章 KVM 準仮想化ドライバー
2. 新規ネットワークデバイス
仮想ネットワーク または 共有物理デバイス を選択します。デバイスタイプ として virtio を選択し
て、進む をクリックします。
108
新規デバイス用に KVM 準仮想化ドライバーを使用する
5.
完了 をクリックしてデバイスを保存します。
109
第12章 KVM 準仮想化ドライバー
6.
110
ゲストを再起動します。デバイスは Windows ゲストが再起動するまで認識されないかも知れません。
PCI パススルー
本章は、KVM で PCI パススルーを使用することについて取り扱っています。
KVM ハイパーバイザーは、ホストシステムの PCI デバイスを仮想ゲストへ接続することをサポートしていま
す。PCI パススルーは、ゲストが作業の範囲で PCI デバイスへ排他的アクセスを許可します。PCI パススルー
は、PCI デバイスがゲストオペレーティングシステムに物理的に接続されているかのように見えて扱われます。
PCI デバイスは仮想システムアーキテクチャーにより制限されています。ゲストに対して利用可能な PCI デバイ
ス32の中で2つは取り外しできません。つまり、1ゲストあたり追加のデバイスに対して 30 までの PCI スロット
が利用可能です。各 PCI デバイスは 8 までの機能を持てます、いくつかの PCI デバイスは複数のファンクショ
ンを持ち、スロットを1つだけ使います。準仮想化ネットワーク、準仮想化ディスクデバイスもしくは他の VT-d を
用いる PCI デバイスは、すべてスロットまたはファンクションを使用します。利用可能なデバイスの正確な数は、
利用可能なデバイスの数により計算されることは難しいです。各ゲストは、8つまでのファンクションを持つ各デ
バイスを PCI デバイスを32まで利用することができます。
VT-d または AMD IOMMU 拡張は BIOS で有効になっていなければいけません。
手順13.1 Intel システムの PCI パススルーの準備
1. Intel VT-d 拡張を有効にします。
Intel VT-d 拡張は、ハードウェアがゲストへ物理デバイスを直接割り当てることをサポートします。この特
長の主な利点はデバイスアクセスに対するネイティブとしてのパフォーマンスを向上します。
VT-d 拡張が Fedora で PCI パススルーに対して必要とされます。拡張は BIOS で有効にされなければ
いけません。いくつかのシステム製造者はデフォルトでこれらの拡張を無効にしています。
これらの拡張はしばしば製造者によって BIOS でさまざまな用語で呼ばれます。システム製造者のドキュ
メントを参照してください。
2.
カーネルでの Intel VT-d の有効化
/boot/grub/grub.conf ファイルにおいて kernel 行へ intel_iommu=on パラメーターを追加すること
によりカーネルで Intel VT-d をアクティブにします。
以下の例は Intel VT-d をアクティブにする修正をされた grub.conf ファイルです。
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora Server (2.6.18-190.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-190.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet intel_iommu=on
initrd /initrd-2.6.18-190.el5.img
3.
利用準備
変更を有効にするためにシステムを再起動します。これでシステムは PCI パススルーが使えるようになり
ます。
手順13.2 AMD システムの PCI パススルーの準備
•
AMD IOMMU 拡張の有効化
AMD IOMMU 拡張は Fedora で PCI パススルーに必要とされます。この拡張は BIOS で有効にされな
ければいけません。いくつかのシステム製造者はデフォルトでこれらの拡張を無効にしています。
AMD システムは IOMMU が BIOS で有効にされる必要があります。システムは IOMMU が有効にされると
PCI パススルーの準備ができます。
111
第13章 PCI パススルー
13.1. virsh での PCI デバイスの追加
これらのステップは、ハードウェア支援された PCI パススルーを用いて KVM ハイパーバイザーにおいて完全
仮想化ゲストにデバイスを追加します。
重要
VT-d または AMD IOMMU 拡張は BIOS で有効になっていなければいけません。
この例は、PCI 識別子コード(pci_8086_3a6c)で USB コントローラデバイスを使用します。そして、完全仮想化
ゲストは win2k3 と名づけられます。
1.
デバイスの識別
ゲストへのパススルーとして指定された PCI デバイスを識別します。virsh nodedev-list コマンドはシ
ステムに接続されたすべてのデバイスを表示します。--tree オプションは、PCI デバイス(たとえば、ディス
クコントローラーや USB コントローラー)に接続されたデバイスを識別するために有用です。
# virsh nodedev-list --tree
PCI デバイスだけを表示するために、以下のコマンドを実行します:
# virsh nodedev-list | grep pci
各 PCI デバイスは、以下の文字列により識別されます(****は4桁の16進数です):
pci_8086_****
ヒント:PCI デバイスの決定
lspci 出力と lspci -n (名前解決を無効にします)出力を比較することで、デバイスがどのデバイス
識別子コードを持つかを導き出す手助けをします。
PCI デバイス番号を記録します、番号は他のステップで必要になります。
2.
ドメイン、バスおよび機能に関する情報は、virsh nodedev-dumpxml コマンドの出力から取得できます:
# virsh nodedev-dumpxml pci_8086_3a6c
<device>
<name>pci_8086_3a6c</name>
<parent>computer</parent>
<capability type='pci'>
<domain>0</domain>
<bus>0</bus>
<slot>26</slot>
<function>7</function>
<id='0x3a6c'>82801JD/DO (ICH10 Family) USB2 EHCI Controller #2</product>
<vendor id='0x8086'>Intel Corporation</vendor>
</capability>
</device>
112
virsh での PCI デバイスの追加
3.
デバイスをシステムから切断します。接続されたデバイスは使われることができなくなり、まず切断せずに
ゲストへと接続されると、さまざまなエラーが起こるかもしれません。
# virsh nodedev-dettach pci_8086_3a6c
Device pci_8086_3a6c dettached
4.
PCI バスのアドレスを得るために、スロットとファンクションの値を(10進値)16 進値へと変換します。値が
16 進数であることをコンピューターに知らせるために "0x" を出力の最初に追加します。
たとえば、bus = 0, slot = 26 および function = 7 ならば、以下を実行します:
$ printf %x 0
0
$ printf %x 26
1a
$ printf %x 7
7
使用する値:
bus='0x00'
slot='0x1a'
function='0x7'
5.
PCI デバイスをゲストに接続するために、virsh edit (またはvirsh attach device)を実行し、デバイス
のエントリーを <devices> セクションに追加します。Fedora は今のところホットプラグ対応の PCI デバイ
スをサポートしてません。
# virsh edit win2k3
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x00' slot='0x1a' function='0x7'/>
</source>
</hostdev>
6.
Once the guest system is configured to use the PCI address, we need to tell the host system
to stop using it. The ehci driver is loaded by default for the USB PCI controller.
$ readlink /sys/bus/pci/devices/0000\:00\:1d.7/driver
../../../bus/pci/drivers/ehci_hcd
7.
デバイスを切断します:
$ virsh nodedev-dettach pci_8086_3a6c
8.
pci_stub の制御下にあることを確認します:
$ readlink /sys/bus/pci/devices/0000\:00\:1d.7/driver
../../../bus/pci/drivers/pci-stub
9.
ゲストから PCI デバイスを管理できるよう sebool をセットします:
$ setsebool -P virt_manage_sysfs 1
113
第13章 PCI パススルー
10. ゲストシステムを開始します:
# virsh start win2k3
PCI デバイスは、正常にゲストに接続され、ゲストオペレーティングシステムにアクセス可能となります。
13.2. virt-manager を用いた PCI デバイスの追加
PCI デバイスはグラフィカルな virt-manager ツールを用いてゲストへ追加できます。以下の手順は、2ポート
USB コントローラーを仮想ゲストへ追加します。
1.
デバイスの識別
ゲストへのパススルーとして指定された PCI デバイスを識別します。virsh nodedev-list コマンドはシ
ステムに接続されたすべてのデバイスを表示します。--tree オプションは、PCI デバイス(たとえば、ディス
クコントローラーや USB コントローラー)に接続されたデバイスを識別するために有用です。
# virsh nodedev-list --tree
PCI デバイスだけを表示するために、以下のコマンドを実行します:
# virsh nodedev-list | grep pci
各 PCI デバイスは、以下の文字列により識別されます(****は4桁の16進数です):
pci_8086_****
ヒント:PCI デバイスの決定
lspci 出力と lspci -n (名前解決を無効にします)出力を比較することで、デバイスがどのデバイス
識別子コードを持つかを導き出す手助けをします。
PCI デバイス番号を記録します、番号は他のステップで必要になります。
2.
PCI デバイスの切断
システムからデバイスを切断します。
# virsh nodedev-dettach pci_8086_3a6c
Device pci_8086_3a6c dettached
3.
ゲストの電源オフ
ゲストの電源を切ります。ゲストにおけるホットプラグ対応の PCI デバイスは、現在試験的であり、落ちる
かクラッシュさせるかもしれません。
4.
ハードウェア設定のオープン
仮想マシンを開いて、ハードウェアタブを選択します。ゲストへ新規デバイスを追加するためにハードウェア
の追加ボタンをクリックします。
114
virt-manager を用いた PCI デバイスの追加
5.
新規デバイスの追加
ハードウェアの種類一覧から物理ホストデバイスを選択します。物理ホストデバイスは PCI デバイスを表
現します。進むをクリックして進みます。
115
第13章 PCI パススルー
6.
116
PCI デバイスの選択
Select an unused PCI device. Note taht selecting PCI devices presently in use on the host
causes errors. In this example a PCI to USB interface device is used.
virt-manager を用いた PCI デバイスの追加
7.
新規デバイスの確認
デバイス設定を確認するために完了ボタンをクリックし、ゲストへデバイスを追加します。
117
第13章 PCI パススルー
セットアップが完了し、ゲストはいま PCI デバイスを使用できます。
13.3. virt-install で用いる PCI パススルー
virt-install のパラメーターとともに PCI パススルーを使用するために、追加の --host-device パラメー
ターを使用します。
1.
PCI デバイスを識別します
ゲストへのパススルーとして指定された PCI デバイスを識別します。virsh nodedev-list コマンドはシ
ステムに接続されたすべてのデバイスを表示します。--tree オプションは、PCI デバイス(たとえば、ディス
クコントローラーや USB コントローラー)に接続されたデバイスを識別するために有用です。
# virsh nodedev-list --tree
PCI デバイスだけを表示するために、以下のコマンドを実行します:
# virsh nodedev-list | grep pci
各 PCI デバイスは、以下の文字列により識別されます(****は4桁の16進数です):
pci_8086_****
118
virt-install で用いる PCI パススルー
ヒント:PCI デバイスの決定
lspci 出力と lspci -n (名前解決を無効にします)出力を比較することで、デバイスがどのデバイス
識別子コードを持つかを導き出す手助けをします。
2.
デバイスを追加します
--host-device パラメータに対する値として、virsh nodedev コマンドから出力される PCI 識別子を
使用します。
# virt-install \
-n hostdev-test -r 1024 --vcpus 2 \
--os-variant fedora11 -v --accelerate \
-l http://download.fedoraproject.org/pub/fedora/linux/development/x86_64/os \
-x 'console=ttyS0 vnc' --nonetworks --nographics \
--disk pool=default,size=8 \
--debug --host-device=pci_8086_10bd
3.
インストールを完了します
ゲストインストールを完了します。PCI デバイスはゲストに接続されるでしょう。
119
120
SR-IOV
14.1. はじめに
PCI-SIG (PCI Special Interest Group) は、Single Root I/O Virtualization (SR-IOV) 仕様を策定しまし
た。SR-IOV 仕様は、1つのデバイスを複数のゲストへネイティブに共有する、PCI パススルーの一種の標準で
す。SR-IOV は、仮想ゲストに対して、独立したメモリ空間、割り込み、および DMA ストリームを提供することに
より、データ転送と管理においてハイパーバイザの関与を必要としません。
SR-IOV は、Single Root Function(たとえば、1つのイーサネットポート)が、複数の、隔離した、物理的なデバ
イスとして見えることを可能にします。PCI デバイス、SR-IOV 機能を持つ物理デバイスは、複数のファンクション
として PCI 設定空間に表れるよう設定できます。各デバイスは、完全にベースアドレスレジスタ (BAR) を持つそ
れ自身の設定空間を持ちます。
SR-IOV は2つの新しい PCI ファンクションを使用します:
• 物理ファンクション(PF: Physical Functions)は、SR-IOV 機能を含む、完全な PCIe デバイスです。物理
ファンクションは、通常の PCI デバイスとして、検索され、管理され、設定されます。物理ファンクションは、仮
想ファンクションを割り当てることにより、SR-IOV 機能を設定して管理します。
• 仮想ファンクション(VF: Virtual Functions)は、I/O のみを処理する、シンプルな PCIe 機能です。各仮想
ファンクションは、物理ファンクションから派生しています。1デバイスあたりの仮想ファンクションの数は、デバ
イスのハードウェアにより制限されています。1つのイーサネットポート(物理デバイス)は、仮想ゲストへ共有
されるために、多くの仮想ファンクションへ対応付けられるかもしれません。
ハイパーバイザーは、1つかそれ以上の仮想ファンクションを仮想ゲストに対応付けられます。仮想ファンクショ
ンの設定空間は、ハイパーバイザーにより仮想ゲストへと表される設定空間へ対応付けられます。
各仮想ファンクションは、仮想ファンクションが実ハードウェアを必要とするので、一度だけ対応付けられます。仮
想ゲストは、複数の仮想ファンクションを持つことができます。仮想ファンクションは、通常のネットワークカードが
オペレーティングシステムへ表れるように、同じ方法でネットワークカードとして表れます。
SR-IOV ドライバーは、カーネルで実装されています。中心的な実装は、PCI サブシステムに含まれますが、物
理ファンクション(PF)と仮想ファンクション(VF)両方に対してドライバのサポートがなければいけません。SRIOV 機能を持つデバイスはPFから VF を割り当てることができます。VF は、リソース(キューおよびレジスタセッ
ト)により、物理 PCI デバイスに支持される PCI デバイスとして見えます。
SR-IOV の利点
SR-IOV デバイスは、複数の仮想ゲストとともに1つの物理ポートを共有できます。
仮想ファンクションは、ネイティブに近いパフォーマンスを持ち、準仮想化ドライバーやエミュレートされたアクセ
スよりは良いパフォーマンスを提供します。仮想ファンクションは、データがハードウェアにより管理されて制御さ
れるので、同じ物理サーバーにおける仮想ゲスト間でデータの保護を提供します。
これらの機能は、データセンター内のホストにおいて、仮想ゲストの密度を増大させることができます。
SR-IOV の欠点
Live migration is presently experimental. As with PCI passthrough, identical device configurations
are required for live (and offline) migrations. Without identical device configurations, guest's
cannot access the passed-through devices after migrating.
121
第14章 SR-IOV
14.2. SR-IOV の使用
このセクションは、追加のネットワークデバイスとして、仮想ファンクションをゲストへ接続することについて取り
扱います。
SR-IOV は Intel VT-d のサポートが必要です。
手順14.1 SR-IOV ネットワークデバイスを接続します。
1. BIOS とカーネルにおいて Intel VT-d を有効にします。
すでに Intel VT-d が有効で動作しているならば、この手順は飛ばしてください。
もしまだ有効にしていないならば、BIOS で Intel VT-d を有効にします。BIOS とカーネルにおいて Intel
VT-d を有効にする手順のヘルプとして、用用13.1用Intel 用用用用用 PCI 用用用用用用用用用を参照してください。
2.
サポートを確認します
SR-IOV 機能を持つ PCI デバイスが検出されるかどうかを確認します。この例は、SR-IOV をサポートする
Intel 82576 ネットワークインターフェースを表示します。デバイスが検出されたかどうかを確認するため
に、lspci コマンドを使用します。
# lspci
03:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
03:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
他のすべてのデバイスを取り除くために出力が修正されていることに注意してください。
3.
SR-IOV カーネルモジュールを起動します
If the device is should work the driver kernel module should be loaded automatically by the
kernel. Optional parameters can be passed to the module using the modprobe command. The
Intel 82576 network interface card uses the igb driver kernel module.
# modprobe igb [<option>=<VAL1>,<VAL2>,]
# lsmod |grep igb
igb
87592 0
dca
6708
1 igb
4.
仮想ファンクションを有効にする
igb モジュールの max_vfs パラメーターは 、仮想ファンクションの最大数を割り当てます。max_vfs パ
ラメーターは、ドライバーが(パラメーターの値まで)仮想ファンクションを spawn します。この特定のカー
ドに対して、有効な範囲は0から7です。
変数を変更するため、モジュールを削除します。
# modprobe -r igb
Restart the module with the max_vfs set to 1 or any number of Virtual Functions up to the
maximum should work by your device.
# modprobe igb max_vfs=1
5.
新しい仮想ファンクションを確認する
lspci コマンドを使用して、Intel 82576 ネットワークデバイスへ接続された新しく追加された仮想ファン
クションを表示します。
# lspci | grep 82576
03:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
122
SR-IOV の使用
03:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
03:10.0 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
03:10.1 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
lspci コマンドの -n パラメーターを用いて、PCI デバイスの識別を見つけられます。
# lspci
03:00.0
# lspci
03:10.0
-n | grep 03:00.0
0200: 8086:10c9 (rev 01)
-n | grep 03:10.0
0200: 8086:10ca (rev 01)
物理ファンクションは 8086:10c9 に、仮想ファンクションは 8086:10ca に一致します。
6.
virsh でデバイスを検索します
libvirt サービスは、デバイスをゲストへ追加するために、デバイスを検出する必要があります。利用可能な
ホストデバイスを表示するために virsh nodedev-list コマンドを使用します。
# virsh nodedev-list | grep 8086
pci_8086_10c9
pci_8086_10c9_0
pci_8086_10ca
pci_8086_10ca_0
[output truncated]
仮想ファンクションと物理ファンクションに対するシリアル番号が一覧にあるでしょう。
7.
高度な詳細を手に入れます
pci_8086_10c9 は物理ファンクションの1つです。また、pci_8086_10ca_0 はその物理ファンクション
に最初に対応する仮想ファンクションです。双方のデバイスに対する詳細な出力を得るために virsh
nodedev-dumpxml コマンドを使用します。
# virsh nodedev-dumpxml pci_8086_10ca
# virsh nodedev-dumpxml pci_8086_10ca_0
<device>
<name>pci_8086_10ca_0</name>
<parent>pci_8086_3408</parent>
<driver>
<name>igbvf</name>
</driver>
<capability type='pci'>
<domain>0</domain>
<bus>3</bus>
<slot>16</slot>
<function>1</function>
<product id='0x10ca'>82576 Virtual Function</product>
<vendor id='0x8086'>Intel Corporation</vendor>
</capability>
</device>
この例は、用用用用 9のゲストへと仮想ファンクション pci_8086_10ca_0 を追加します。仮想ファンクションの
bus, slot および function パラメーターは、デバイスを追加するために必要であることに注意してくださ
い。
8.
仮想ファンクションを切断します
ホストへと接続されたデバイスは、ゲストへと接続できません。Linux は新しいデバイスを自動的にホスト
へと接続します。仮想ファンクションがゲストにより使えるように、ホストから仮想ファンクションを切断しま
す。
123
第14章 SR-IOV
# virsh nodedev-dettach pci_8086_10ca
Device pci_8086_10ca dettached
# virsh nodedev-dettach pci_8086_10ca_0
Device pci_8086_10ca_0 dettached
9.
ゲストへの仮想ファンクションの追加
a. ゲストをシャットダウンします。
b.
設定ファイル用の値を計算するために、virsh nodedev-dumpxml pci_8086_10ca_0 コマンドからの
出力を使用します。PCI バスのアドレスを得るために、スロットと関数の値を(10進値から)16進値へ
と変換します。値が16進値であることをコンピュータに知らせるために、出力の最初に "0x" を付加し
ます。
例のデバイスは以下の値を持ちます:bus = 3, slot = 16 および function = 1。10進値を16進値へ
変換するために printf ユーティリティを使用します。
$ printf %x 3
3
$ printf %x 16
10
$ printf %x 1
1
この例は設定ファイルにおいて以下の値を使用します:
bus='0x03'
slot='0x10'
function='0x01'
c.
virsh edit コマンドを用いて XML 設定ファイルを開きます。この例は、MyGuest という名前のゲス
トを編集します。
# virsh edit MyGuest
d.
デフォルトのテキストエディタがゲストに対する libvirt 設定ファイルを開くでしょう。XML 設定ファイル
の devices セクションに新しいデバイスを追加します。
<hostdev mode='subsystem' type='pci'>
<source>
<address bus='0x03' slot='0x10' function='0x01'/>
</source>
</hostdev>
e.
設定を保存します。
10. 再起動します
インストールを完了するためにゲストを再起動します。
# virsh start MyGuest
ゲストは新しいネットワークインターフェースカードを正常に開始して検知しなければいけません。この新しい
カードは、SR-IOV デバイスの仮想ファンクションです。
124
SR-IOV のトラブルシューティング
14.3. SR-IOV のトラブルシューティング
このセクションは、SR-IOV に影響するかもしれない、いくつかの問題と問題への解決策を含みます。
ゲストの開始におけるエラー
設定された仮想マシンを開始して、以下のようなエラーが報告されます:
# virsh start test
error: Failed to start domain test
error: internal error unable to start guest: char device redirected to
/dev/pts/2
get_real_device: /sys/bus/pci/devices/0000:03:10.0/config: Permission denied
init_assigned_device: Error: Couldn't get real device (03:10.0)!
Failed to initialize assigned device host=03:10.0
このエラーは、デバイスが他のゲストまたはホスト自身へとすでに割り当てられている、デバイスによりしばしば
引き起こされます。
125
126
USB デバイスパススルー
placeholder
127
128
N_Port ID Virtualization (NPIV)
近日公開予定。
129
130
KVM ゲストのタイミング管理
仮想化はゲストの時間管理に対してさまざまな課題を引き起こします。いくつかの CPU はタイムスタンプカウ
ンタ (TSC:Time Stamp Counter) を持たないため、クロックのソースとしてタイムスタンプカウンターを用いる
ゲストは、タイミングの問題に苦しむかもしれません。正確な時間管理を持たないゲストは、正確な時間よりも
早かったり遅かったり実行され、同期を失うので、いくつかのネットワークアプリケーションや処理において問題
を起こすかもしれません。
KVM は、ゲストに準仮想化クロックを提供することで、この問題を回避します。それ以外にも、いくつかのゲスト
は、これらのオペレーティングシステムの将来バージョンにおいて、タイミングに対する他の x86 クロックのソー
スを使用するかもしれません。
ゲストは、不正確なクロックとカウンタによっていくつかの問題を持つ可能性があります:
• クロックが、セッションを無効にしてネットワークに影響するような、実際の時刻との同期が失われる可能性が
あります。
• より遅いクロックを持つゲストはマイグレーションの問題を持つかもしれません。
これらの問題は他の仮想化プラットフォームにおいても存在しており、タイミングは常にテストされるべきです。
NTP
NTP (Network Time Protocol) デーモンは、ホストとゲストにおいて実行している必要があります。ntpd
サービスを有効にします:
# service ntpd start
ntpd サービスをデフォルトのスタートアップシーケンスに追加します:
# chkconfig ntpd on
ntpd サービスを使用すると、すべてのケースでクロックのずれの効果を最低限に抑えることができるはず
です。
使用している CPU が Constant Time Stamp Counter を持つかどうかを判定
constant_tsc フラグが存在する場合、使用中の CPU が一定の Constant Time Stamp Counter を持って
います。CPU がconstant_tsc フラグを持つかどうかを判定するには、以下のコマンドを実行します:
$ cat /proc/cpuinfo | grep constant_tsc
なんらかの出力があると、その CPU が constant_tsc ビットを持ちます。何も出力されないならば、以下の指
示にしたがってください。
Constant Time Stamp Counter を持たないホストの設定
Constant Time Stamp Counter を持たないシステムは追加の設定を必要とします。電源管理機能は正確な
時間管理を妨害するため、KVM で時間を正確に維持するためにゲストに対して無効にしなければいけません。
131
第17章 KVM ゲストのタイミング管理
注記
これらの指示は AMD の revision F の CPU に対するものです。
CPU が constant_tsc ビットを持たないならば、すべての電源管理機能を無効にしてください
1
(BZ用513138 ) 。各システムは時間を維持するために用いるいくつかのタイマーを持ちます。TSC はホストにお
いて安定的ではありません、それは cpufreq の変更、深い C state もしくはより早い TSC を持つホストへのマ
イグレーションにより、ときどき引き起こされます。
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
/etc/sysconfig/cpuspeed 設定ファイルを編集して cpufreq を無効にし(constant_tsc がないホストにおい
てのみ必要になります)、MIN_SPEED 変数とMAX_SPEED 変数を利用可能な最高の周波数へ変更します。有効な
制限は /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies ファイルで見つけるこ
とができます。
Red Hat Enterprise Linux ゲストで準仮想化クロックの使用
特定の Red Hat Enterprise Linux ゲストには、追加のカーネルパラメーターが必要になります。これらのパラ
メーターは、ゲストの /boot/grub/grub.conf ファイル内の /kernel 行の末尾にそれらを追加することにより
セットできます。
以下の表は、Red Hat Enterprise Linux のバージョンと一定のタイムスタンプカウンターを持たないシステム
においてゲストで必要となるパラメーターを示しています。
Red Hat Enterprise Linux
5.4 準仮想化クロックを持つ
AMD64/Intel 64
1
追加のゲストカーネルパラメーター
追加のパラメーターは不要です
5.4 準仮想化クロックを持たない
AMD64/Intel 64
divider=10 notsc lpj=n
5.4 準仮想化クロックを持つ x86
追加のパラメーターは不要です
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
追加のパラメーターは不要です
https://bugzilla.redhat.com/show_bug.cgi?id=513138
132
Windows Server 2003 および Windows XP ゲストでの Real-Time Clock の使用
Windows は RTC (Real-Time Clock) と TSC (Time Stamp Counter) を両方とも使用します。Windows ゲ
ストには、ゲストのタイミング問題を解決するすべての時刻ソースのため、TSC の代わりに Real-Time Clock
が使用されます。
To enable the Real-Time Clock for the PMTIMER clocksource (the PMTIMER usually uses the
TSC) add the following line to the Windows boot settings. Windows boot settings are stored in
the boot.ini file. Add the following line to the boot.ini file:
/use pmtimer
Windows のブート設定と pmtimer オプションに関する詳細情報は、Windows XP 用用用 Windows Server
2
2003 用 Boot.ini 用用用用用用用用用用用用用用 用用用用用 を参照してください。
Windows Vista, Windows Server 2008 および Windows 7 ゲストでの Real-Time Clock の使
用
Windows は RTC (Real-Time Clock) と TSC (Time Stamp Counter) を両方とも使用します。Windows ゲ
ストには、ゲストのタイミング問題を解決するすべての時刻ソースのため、TSC の代わりに Real-Time Clock
が使用されます。
boot.ini ファイルは、Windows Vista 以降から使われなくなりました。Windows Vista, Windows Server
2008 および Windows 7 は、Windows ブートパラメータを変更するために、Boot Configuration Data
Editor (bcdedit.exe) を使用します。
もしゲストが時間管理問題を持っているときのみ、この手順が必要になります。時間管理問題はすべてのホスト
においてゲストに影響をあたえるわけではないかもしれません。
1.
Windows ゲストを開きます。
2.
スタートメニューのアクセサリを開きます。コマンドプロンプトアプリケーションで右クリックし、管理者として
実行を選択します。
3.
もし表示されたら、セキュリティ例外を確認します。
4.
プラットフォームのクロックを用いるためにブートマネージャーをセットします。これは Windows に PM
タイマーをプライマリクロックソースに対して用いるよう指示します。システム UUID(以下の例では
{default} )は、デフォルトのブートデバイスと異なっているならば変更されるべきです。
C:\Windows\system32>bcdedit /set {default} USEPLATFORMCLOCK on
The operation completed successfully
この修正により、Windows Vista, Windows Server 2008 および Windows 7 ゲストに対して、時間管理を
改善できるはずです。
2
http://support.microsoft.com/kb/833721
133
134
パート IV. 管理
仮想システムの管理
These chapters contain information for administering host and virtualized guests using tools
included in Fedora.
サーバーのベストプラクティス
以下のタスクとヒントは、Fedora ホストの信頼性を安全・確実にする手助けになるでしょう。
• SELinux を enforcing モードで実行します。以下のコマンドを実行するとできます。
# setenforce 1
• AutoFS, NFS, FTP, HTTP, NIS, telnetd, sendmail などのような不要なサービスをすべて削除もしくは無効化
します。
• サーバー上でプラットフォーム管理に必要となる最低限のユーザーアカウントだけを追加し、 不要なユー
ザーアカウントは削除します。
• ホストでは不必要なアプリケーションの実行を避けてください。ホスト上でアプリケーションを実行すると、仮
想マシンのパフォーマンスに悪影響を与えるかもしません。サーバーの安定性にも影響する可能性がありま
す。サーバーをクラッシュする可能性のあるアプリケーションはいずれもサーバー上のすべての仮想マシンが
落ちる原因にもなります。
• 仮想マシンのインストールとイメージには中心となる場所を使います。仮想マシンのイメージは /var/lib/
libvirt/images/ の下に保存するべきです。仮想マシンのイメージ用に異なるディレクトリを使用している場
合は、そのディレクトリを確実に SELinux ポリシーに追加し、インストールを開始する前にそれを再ラベルし
ます。
• インストールのソース、ツリーおよびイメージは中心となる場所、通常 vsftpd サーバーの中に保存するべき
です。
137
138
仮想化のためのセキュリティ
企業インフラストラクチャーに仮想化技術を配備するとき、ホストが危険にさらされないことを確実にしなけれ
ばいけません。ホストは、システム、デバイス、メモリおよびネットワークを仮想ゲストと同様に管理する Fedora
システムです。ホストが安全でなければ、そのシステムにあるすべてのゲストは脆弱です。仮想化を用いたシス
テムにおいてセキュリティを向上させる方法はいくつかあります。あなたやあなたの組織は、運用仕様を含む用
用用用用用を作成し、仮想ゲストとホストにおいて必要とされるサービスだけでなく、これらのサービスに対してどの
サービスが必要になるかを指定すべきです。配備計画を展開する間に考慮すべきセキュリティ問題がいくつか
あります:
• ホストにおいて必要なサービスのみを実行します。ホストにおいて実行しているプロセスとサービスが少ない
ほど、セキュリティとパフォーマンスのレベルが高くなります。
• ハイパーバイザーにおいて SELinux を有効にします。SELinux と仮想化を用いることの詳細は、用SELinux
用用用用用を参照してください。
• ファイアウォールを使用して、dom0 へのトラフィックを制限します。デフォルト拒否の規則でファイアウォール
を設定すると、dom0 への攻撃から保護をする助けになります。また、ネットワークが直面するサービスを制
限することも大切です。
• 一般ユーザーには dom0 へのアクセスを禁止します。一般ユーザーに dom0 へのアクセスを許す
と、dom0 を危険にさらす恐れがあります。dom0 は特権用であり、非特権アカウントに許可をすることはセ
キュリティレベルを低下することになります。
19.1. ストレージのセキュリティ問題
仮想ゲストの管理者は、特定の状況においてホストがブートするパーティションを変更できます。この管理者を
防ぐために、これらの推奨事項に従うべきです:
ホストは、fstab ファイル、initrd ファイルまたは kernel コマンド行により使われるファイルシステムを識別す
る目的で、ディスクラベルを使用すべきではありません。より権限の少ないユーザー(とくに仮想ゲスト)がパー
ティション全体や LVM ボリュームへ書き込みアクセスをするならば。
ゲストは、ディスク全体またはブロックデバイス(たとえば、/dev/sdb)への書き込みアクセス権を与えるべきで
はありません。パーティション(たとえば、/dev/sdb1)または LVM ボリュームを使用します。
19.2. SELinux と仮想化
Security Enhanced Linux は、NSA により開発されました。 Linux に対してより強力なセキュリティを提供す
るために、Linux コミュニティから支援があります。SELinux は、攻撃者の能力を制限し、バッファーオーバーフ
ロー攻撃や権限昇格のような多くの一般的なセキュリティ侵害を防ぐために機能します。これらの利益のため、
すべての Fedora システムは SELinux を有効にして enforcing モードで動作すべきです。
SELinux は SELinux が有効になっていて、イメージが正しいディレクトリに無い場合には、 ゲストイメージの
ロードを妨げます。SELinux はすべてのゲストイメージが /var/lib/libvirt/images 内に存在することを要求
します。
enforcing モードの SELinux で LVM ベースのストレージの追加
以下のセクションは、論理ボリュームを SELinux が有効になった仮想化ゲストに 追加するサンプルです。これ
らの案内はハードディスクのパーティション設定にも 役に立ちます。
手順19.1 SELinux が有効になった仮想化ゲスト上で論理ボリュームの作成とマウント
1. 論理ボリュームを作成します。このサンプルでは、NewVolumeName という名前の 5ギガバイトの論理ボ
リュームを volumegroup という名前のボリュームグループ上に 作成します。
139
第19章 仮想化のためのセキュリティ
# lvcreate -n NewVolumeName -L 5G volumegroup
2.
NewVolumeName の論理ボリュームを ext3 などの 拡張属性をサポートするファイルシステムでフォー
マットします。
# mke2fs -j /dev/volumegroup/NewVolumeName
3.
新規の論理ボリュームをマウントするための新規ディレクトリを作成します。この ディレクトリはユーザー
ファイルシステムのどこにでも置けます。しかし、それは 重要なシステムディレクトリ(/etc, /var, /sys な
ど)や、ホームディレクトリ(/home または /root)には配置しないように推奨します。 このサンプルでは、/
virtstorage というディレクトリを使用します。
# mkdir /virtstorage
4.
論理ボリュームのマウント
# mount /dev/volumegroup/NewVolumeName /virtstorage
5.
libvirt イメージフォルダに対して、SELinux の正しいタイプをセットします。
# semanage fcontext -a -t virt_image_t "/virtualization(/.*)?"
targeted ポリシーが使用されている場合(targeted ポリシーがデフォルト)、 このコマンドは /etc/
selinux/targeted/contexts/files/file_contexts.local ファイルに1行を追加して、それがこの変更
を永続化します。追加される1行は以下のようなものです:
/virtstorage(/.*)?
6.
system_u:object_r:virt_image_t:s0
マウントポイント(/virtstorage)とその下にあるすべてのファイルのタイプを virt_image_t へと変更する
ためにコマンドを実行します(restorecon と setfiles コマンドは /etc/selinux/targeted/contexts/
files/ にあるファイルを読み込みます)。
# restorecon -R -v /virtualization
140
SELinux
新しい属性のテスト
ファイルシステムに新しいファイルを(touch コマンドを用いて)作成します。
# touch /virtualization/newfile
以下のコマンドを用いて、ファイルが再ラベルされていることを確認します:
# sudo ls -Z /virtualization
-rw-------. root root system_u:object_r:virt_image_t:s0 newfile
出力は、新しいファイルが正しい属性 virt_image_t を持つことを示します。
19.3. SELinux
このセクションには、仮想化の導入において SELinux を使用するときに考慮すべき 事項が含まれています。シ
ステムの変更を導入したり、デバイスを追加する時は、 それに応じて SELinux ポリシーを更新する必要があり
ます。ゲスト用に LVM ボリュームを 設定するには、それぞれの背後にあるブロックデバイスとボリューム グルー
プ用に SELinux コンテキストを修正しなければなりません。
# semanage fcontext -a -t virt_image _t -f -b /dev/sda2
# restorecon /dev/sda2
KVM と SELinux
There are several SELinux booleans which affect KVM. These booleans are listed below for your
convenience.
KVM SELinux 論理値
SELinux 論理値
説明
allow_unconfined_qemu_transition
Default: off. This boolean controls whether KVM guests can be
transistioned to unconfined users.
qemu_full_network
Default: on. This boolean controls full network access to KVM
guests.
qemu_use_cifs
Default: on. This boolean controls KVM's access to CIFS or
Samba file systems.
qemu_use_comm
Default: off. This boolean controls whether KVM can access
serial or paralell communications ports.
qemu_use_nfs
Default: on. This boolean controls KVM's access to NFS file
systems.
qemu_use_usb
Default: on. This boolean allows KVM to access USB devices.
19.4. 仮想ファイアウォールの情報
Various ports are used for communication between virtualized guests and management utilites.
141
第19章 仮想化のためのセキュリティ
ゲストのネットワークサービス
仮想ゲストにおけるネットワークサービスはすべて、外部アクセスを許可するために、ゲストにおいて適用
できるオープンポートを持たなければいけません。ゲストにおけるネットワークサービスがファイアウォール
されていると、アクセスできません。常にゲストのネットワーク設定をまず確認してください。
• ICMP リクエストは受け付けられなければいけません。ICMP パケットはネットワークのテストのために使わ
れます。ICMP パケットがブロックされていると、ゲストにpingできません。
• ポート22は SSH アクセスと初期インストールのために開けなければいけません。
• ポート80または443(RHEV Manager におけるセキュリティ設定に依存します)は、ホストに関する情報をや
りとりするために、vdsm-reg サービスにより使用されます。
• ポート5643から6166は、SPICE プロトコルを用いたゲストアクセスのために使われます。
• ポート49152から49216は、KVM でのマイグレーションのために使われます。マイグレーションは、同時に実
行されるマイグレーションの数に依存して、この範囲のあるポートを使う可能性があります。
• IPフォワーディング(net.ipv4.ip_forward = 1)を有効にすることも、共有ブリッジとデフォルトのブリッジに
対して必要となります。libvirtをインストールすると、この変数は有効になるため、仮想化パッケージをインス
トールするとき、手動で無効にするまで有効になっていることに注意してください。
142
KVM ライブマイグレーション
本章では、KVM ハイパーバイザーで稼働しているゲストを別の KVM ホストに移行する方法を説明しています。
用用用用用用用用は、仮想ゲストをあるホストから他へ移動するプロセスに対してつけられた名称です。ソフトウェアが
ハードウェアから完全に分離されるので、マイグレーションは仮想化の重要な機能です。マイグレーションは以
下に対して有効です:
• ロードバランシング: あるホストが過大な負荷を持つとき、ゲストは使用度の低いホストへと移動できます。
• ハードウェアフェイルオーバー:ホスト上のハードウェアデバイスが障害を持つと、ゲストが安全な場所に移動
して、その間にホストは電源を落として修理ができます。
• エネルギー節約:ゲストが他のホストに再分配されると、ホストシステムは 電源を落とすことによりエネル
ギーを節約し、使用度が低い時にはコストを低減します。
• 地域的な移行:ゲストは、低遅延を求めて、もしくは重大な状況下で他の地域に移動することができます。
マイグレーションは、動的もしくはオフラインで実行されます。ゲストをマイグレーションするために、ストレージが
共有されなければいけません。マイグレーションはゲストのメモリーを宛先ホストへと送信することで動作しま
す。共有ストレージはゲストのデフォルトのファイルシステムに保存されます。ファイルシステムイメージはネット
ワーク経由で送信元ホストから宛先ホストへと送信されません。
オフライン移行はゲストを休止して、それからそのゲストのメモリイメージを宛先ホストに移動します。ゲストは目
的地のホストで復帰して、送信元ホスト上でゲストが使用したメモリーは開放されます。
オフライン移行が必要とする時間はネットワークの帯域幅と遅延度によります。2GB のメモリーを持つゲストで
は 1Gbit イーサネットリンクで平均して10秒くらいの時間がかかります。
ライブマイグレーションは送信元のホスト上でゲストを稼働し続け、ゲストを停止することなく、そのメモリの移動
を始めます。全ての修正されたメモリーページはその変更部を監視され、そのイメージが送信されている間に目
的地へ送信されます。メモリーは変更のあった ページで更新されます。このプロセスはゲスト用に許容された
休止時間数が、転送される最後の数ページ用の予想時間と同等になるまで継続します。KVM はその残りの時
間を推測し、仮想化ゲストの短い休止時間内に残りのページが転送できると予測できるまで送信元から送信
先まで最大量のページを転送する試みを続けます。レジスターが新規のホストにロードされて、ゲストはそれか
ら送信先のホストで復帰します。ゲストがマージできない場合(ゲストが極端な負荷を持つ時に発生)、ゲストは
休止して、それから代わりにオフライン移行が始まります。
オフライン移行にかかる時間は、ネットワークのバンド幅とその遅延度によります。ネットワークが多大な負荷を
持つ場合、又は帯域幅が小さい場合は、移行には長い時間がかかります。
20.1. ライブマイグレーションの要件
ゲストの移行には以下が必要です:
移行の要件
• 以下のプロトコルの1つを使用して共有ネットワークストレージにインストールされた仮想化ゲスト:
• ファイバーチャネル
• iSCSI
• NFS
• GFS2
• 同じアップデートを持つ同じバージョンの2つかそれ以上の Fedora システム
• 両方のシステムは適切なポートを開いている必要があります。
143
第20章 KVM ライブマイグレーション
• 両方のシステムは同一のネットワーク設定を持つ必要があります。全てのブリッジとネットワーク設定は両方
のホスト上で全く同じでなければなりません。
• 共有ストレージは送信元と送信先のシステム上で同じ場所にマウントしなければなりません。そしてマウント
されたディレクトリ名も同一である必要があります。
ネットワークストレージの継続
Configure shared storage and install a guest on the shared storage. For shared storage
instructions, refer to 用用用V用用用用用用用用用用用用.
代わりに 用用用用用用用用用用用用用用用用用用用用用用 NFS用 にある NFS の例を用いてください。
20.2. 共有ストレージサンプル:簡単な移行のための NFS
この例では、NFS を使用して他の KVM ホストと共にゲストイメージを共有しています。 この例は、大規模のイ
ンストールには実用的ではありません。これ例は、単に移行の技術を示すためのものであり、小規模の導入用
です。この例を数個の仮想化ゲスト以上の環境で移行、又は実行に使用しないでください。
For advanced and more robust shared storage instructions, refer to 用用用V用用用用用用用用用用用用
1.
libvirt イメージディレクトリのエクスポート
デフォルトのイメージディレクトリを /etc/exports ファイルに 追加します:
/var/lib/libvirt/images *.example.com(rw,no_root_squash,async)
ご自分の環境に適するようにホストパラメーターを変更します。
2.
NFS の開始
a. NFS パッケージがインストールされていない場合はインストールします:
# yum install nfs
b.
iptables で NFS 用のポートを開きます。そして NFS を /etc/hosts.allow ファイルに追加します。
c.
NFS サービスの開始:
# service nfs start
3.
共有ストレージをあて先においてマウントします
あて先システムにおいて、 /var/lib/libvirt/images ディレクトリをマウントします:
# mount sourceURL:/var/lib/libvirt/images /var/lib/libvirt/images
位置は送信元とあて先で同じにならなければなりません
ゲスト用にどのディレクトリが選択されても、それはホストとゲスト上で全く同じでなければなりませ
ん。これは、全てのタイプの共有ストレージに該当します。ディレクトリが同じでないと、移行は失敗し
ます。
144
virsh を使用した KVM ライブマイグレーション
20.3. virsh を使用した KVM ライブマイグレーション
virsh コマンドを使用してゲストを別のホストに移行することができます。migrate コマンドは以下の形式のパ
ラメーターを受け付けます:
# virsh migrate --live GuestName DestinationURL
GuestName パラメーターは、移行したいゲストの名前を表すものです。
DestinationURL パラメータは、あて先システムの URL またはホスト名です。あて先システムは同じバー
ジョンの Fedora が実行されており、同じハイパーバイザーを使用しており、動作している libvirt を持たなけ
ればいけません。
コマンドが入力されると、あて先システムの root パスワードを催促されます。
例: virsh を使用したライブマイグレーション
この例では、test1.example.com から test2.example.com へ移行をします。ご自分の環境に適したホスト名
に変更してください。この例は RHEL4test という仮想マシンを移行します。
この例は、完全に設定された共有ストレージを持ち、すべての必要条件が満たされていることを仮定しています
(ここに書かれています:用用用用用)。
1.
ゲストが稼働していることを確認します
送信元のシステム test1.example.com から RHEL4test が稼働していることを確認します:
[root@test1 ~]# virsh list
Id Name
State
---------------------------------10 RHEL4
running
2.
ゲストを移行します
以下のコマンドを実行して、ゲストを目的地、test2.example.com に ライブマイグレーションします。/
system を目的地の URL の末尾に追記することで全面的アクセスが 必要であることを libvirt に伝えま
す。
# virsh migrate --live RHEL4test qemu+ssh://test2.example.com/system
コマンドが入力されると、あて先システムの root パスワードを催促されます。
3.
待ちます
この移行はゲスト上の負荷とそのサイズによりいくらかの時間がかかります。virsh は エラーを報告する
だけです。このゲストは完全に移行が終了するまで送信元のホストで稼働し続けます。
4.
ゲストが宛先ホストに到着したことを確認します
目的地のシステム、test2.example.com から、 RHEL4test が稼働していることを確認します:
[root@test2 ~]# virsh list
Id Name
State
---------------------------------10 RHEL4
running
ライブマイグレーションはこれで完了しました。
145
第20章 KVM ライブマイグレーション
その他のネットワーク方式
libvirt は、TLS/SSL、UNIX ソケット、SSH および暗号化されない TCP を含む、さまざまなネットワーク方
式をサポートします。他の方式を用いる詳細については、21用用用用用用用用用用用用用を参照してください。
20.4. virt-manager を用いたマイグレーション
このセクションでは、virt-manager を使用した KVM ベースのゲストのマイグレーションを取り扱います。
1.
送信元を送信先のホストを接続します。ファイル メニューで、 接続を追加 をクリックすると、接続を 追加 の
ウィンドウが出現します。
以下の詳細を入力します:
• ハイパーバイザー: QEMU を選択します。
• 接続: 接続タイプを選択します。
• ホスト名: ホスト名を入力します。
接続 をクリックします。
仮想マシンマネージャのウィンドウが接続してあるホストの一覧を表示します。
146
virt-manager を用いたマイグレーション
2.
ソースとターゲットのホストに同じ NFS を使用するストレージプールを追加します。
編集 メニューで、ホストの詳細 をクリックすると、「ホストの詳細」ウィンドウが表示されます。
ストレージ タブをクリックします。
147
第20章 KVM ライブマイグレーション
3.
Add a new storage pool. In the lower left corner of the window, click the + button. The Add a
New Storage Pool window appears.
以下の詳細を入力します:
• 名前: ストレージプールの名前を入力します。
• タイプ: netfs: Network Exported ディレクトリ を選択します。
148
virt-manager を用いたマイグレーション
進む をクリックします。
4.
以下の詳細を入力します:
• 形式: ストレージタイプを選択します。これはライブマイグレーション用には NFS または iSCSI でなけれ
ばいけません。
• ホスト名: ストレージサーバーの IP アドレスか、又は 完全修飾型ドメイン名を入力します。
149
第20章 KVM ライブマイグレーション
完了 をクリックします。
5.
共有ストレージプール内で新規のボリュームを作成して、新規ボリューム をクリックします。
6.
詳細を入力して、それから ボリュームの作成 をクリックします。
7.
新規のボリュームで仮想マシンを作成します。その後仮想マシンを実行します。
150
virt-manager を用いたマイグレーション
The Virtual Machine window appears.
151
第20章 KVM ライブマイグレーション
8.
152
仮想マシンマネージャのウィンドウで、仮想マシン上で右クリックします。 移行 を選択してから、移行の場所
をクリックします。
virt-manager を用いたマイグレーション
9.
はい をクリックして移行を継続します。
仮想マシンマネージャは新しい場所での仮想マシンを表示します。
153
第20章 KVM ライブマイグレーション
VNC 接続がそのタイトルバーにリモートホストのアドレスを表示します。
154
virt-manager を用いたマイグレーション
155
156
仮想ゲストのリモート管理
このセクションでは、ssh または TLS と SSL を用いて仮想ゲストをリモートで管理する方法を説明しています。
21.1. SSH を用いたリモート管理
ssh パッケージは、リモート仮想サーバーに対して、安全に管理機能を送信できる暗号化したネットワークプロト
コルを提供します。ここに説明してある方法は SSH 接続上で安全にトンネル化された libvirt 管理接続を使
用して、リモートマシンを管理します。すべての認証は使用中の SSH エージェントによって収集された SSH 公
開鍵暗号とパスワードまたはパスフレーズを使用して行われます。さらには、各ゲスト仮想マシンの VNC コン
ソールは SSH 上でトンネル化されます。
SSH は通常、デフォルトで設定されており、ユーザーにはおそらく既に SSH キーがセットされており、管理サー
ビスや VNC コンソールにアクセスするためのさらなるファイアウォールルールは必要ないでしょう。
以下を含み、リモートで仮想マシンを管理するために SSH を用いる問題に注意してください:
• 仮想マシンの管理のために、リモートマシンへ root ログインアクセスする必要があります、
• 初回の接続セットアッププロセスは時間がかかるかもしれません、
• すべてのホストやゲストにおいて、ユーザの鍵を無効にする標準的または自明な方法はありません。そして、
• ssh は多数のリモートマシンにおいてはうまく機能しません。
パスワードなしに設定します、もしくは virt-manager 用の SSH アクセスを管理するパスワードを設
定します。
以下の指示は、スクラッチから開始しており、 SSH 鍵をセットアップしていない、と仮定しています。SSH 鍵を
セットアップして、他のシステムへコピーしているならば、この手順をスキップできます。
ユーザーはリモート管理にとって重要です。
SSH keys are user dependant. Only the user who owns the key may access that key.
virt-manager は、リモートホストへ接続するため、鍵を所有するユーザーとして実行されなければいけま
せん。つまり、リモートシステムが非 root ユーザーで管理されているならば、virt-manager は非特権モー
ドで実行されなければいけません。リモートシステムはローカルの root ユーザーによって管理されている
と、SSH 鍵は root により所有され、作成されていなければいけません。
virt-manager とともに非特権ユーザとしてローカルホストを管理できません。
1.
オプション:ユーザの変更
もし必要ならばユーザを変更します。この例は、他のホストとローカルホストをリモート管理するためにロー
カルの root ユーザを使用します。
$ su -
2.
SSH 鍵ペアの生成
virt-manager が使用されているマシンにおいて、公開鍵ペアを生成します。この例は、デフォルトの鍵位
置、~/.ssh/ ディレクトリを使用します。
$ ssh-keygen -t rsa
157
第21章 仮想ゲストのリモート管理
3.
リモートホストへの鍵のコピー
パスワードなし、またはパスフレーズありのリモートログインは、SSH 鍵が管理されるシステムへと配布さ
れている必要があります。与えられたシステムアドレス(たとえば、[email protected])において root
ユーザへ鍵をコピーするために、ssh-copy-id コマンドを使用します。
# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] [email protected]'s password: Now
try logging into the machine, with "ssh '[email protected]'", and check in: .ssh/
authorized_keys to make sure we haven't added extra keys that you weren't expecting
必要に応じて、他のシステムに対して繰り返します。
4.
オプション: ssh-agent へのパスフレーズの追加
もし必要ならば、SSH 鍵に対するパスフレーズを ssh-agent へ追加します。ローカルホストにおいて、パス
ワードなしのログインを有効にするために、(もしひとつあれば)パスフレーズを追加するために、以下のコ
マンドを用います。
# ssh-add ~/.ssh/id_rsa.pub
SSH 鍵はリモートシステムへと追加されます。
libvirt デーモン(libvirtd)
libvirt デーモンは、仮想マシンを管理するためのインターフェースを提供します。管理する必要があるすべて
のリモートホストにおいて、libvirt デーモンをインストールして実行しなければいけません。
$ ssh root@somehost
# chkconfig libvirtd on
# service libvirtd start
libvirtd と SSH が設定された後は、仮想マシンをリモートでアクセスして管理できるでしょう。また、この時点
で VNC を使用してもゲストへアクセスできるでしょう。
virt-manager を用いたリモートホストへのアクセス
リモートホストは、virt-manager GUI ツールで管理できます。SSH 鍵は、パスワードなしのログインのため
に、virt-manager を実行しているユーザーに属していなければいけません。
1.
virt-manager を開始します。
2.
ファイル->接続の追加メニューを開きます。
3.
ハイパーバイザーの種類、接続、 Connection->Remote tunnel over SSH に対する値を入力し、希望す
るホスト名を入力し、接続をクリックします。
21.2. TLS と SSL を用いたリモート管理
仮想マシンを TLS と SSL を用いて管理することができます。TLS と SSL は、より拡張性を提供しますが、SSH
よりも複雑です(用SSH 用用用用用用用用用用用参照)。TLS と SSL は、ウェブブラウザで安全な接続のために用いられ
る技術と同じものです。libvirt 管理用接続は、入力接続用の TCP ポートを開きます。各ゲストに対する VNC
コンソールに加えて、仮想マシンは x509 証明書認証とともに TLS を用いるためにセットアップされるでしょう。
この方式は、リモートマシンで管理されているシェルアカウントを必要としません。しかしながら、管理サービスま
たは VNC コンソールにアクセスするために、追加のファイアウォールルールが必要となります。
158
トランスポートモード
virt-manager 用に TLS/SSL アクセスをセットアップする手順
以下の短いガイドは、ユーザーがスクラッチから始めていること、および TLS/SSL 証明書の知識を持っていな
いことを想定しています。幸運にも証明書管理サーバを所有している場合、おそらく最初のステップは飛ばすこ
とができるでしょう。
libvirt サーバーのセットアップ
証明書の作成に関する詳細は、libvirt のウェブサイト http://libvirt.org/remote.html を参照してください。
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
VNC 用に SSL と TLS を有効にするには、CA とクライアント証明書を、$HOME/.pki に入れる必要があります。
それは以下の3つのファイルです:
• CA または ca-cert.pem - CA 証明書。
• libvirt-vnc または clientcert.pem - CA によって署名されたクライアント証明書。
• libvirt-vnc または clientkey.pem - クライアントのプライベート鍵。
21.3. トランスポートモード
リモートの管理のために、libvirt が以下のようなトランスポートモードをサポートします:
Transport Layer Security (TLS)
Transport Layer Security TLS 1.0 (SSL 3.1) で認証されて暗号化された TCP/IP ソケットは、通常パブリッ
クポート番号でリッスンしています。これを使用するには、クライアントとサーバの証明書を生成する必要があり
ます。標準のポートは 16514 です。
UNIX ソケット
Unixドメインソケットはローカルマシン上でのみアクセス可能です。ソケットは暗号化されておらず、認証のた
めに UNIX 権限または SELinux を使用します。標準のソケット名は /var/run/libvirt/libvirt-sock と /
var/run/libvirt/libvirt-sock-ro (読み込み専用の接続)です。
SSH
Secure Shell protocol (SSH) 接続上のトランスポートです。Netcat(nc パッケージ)のインストールを必要と
します。libvirt デーモン (libvirtd) がリモートマシン上で実行されている必要があります。ポート22が SSH ア
クセス用に開いていなければなりません。なんらかの ssh 鍵管理(たとえば、ssh-agent ユーティリティ)を使用
する必要があります、さもなければパスワードを要求されます。
ext
ext パラメータは、libvirt の範囲外の手段により、リモートマシンへと接続することができる、あらゆる外部プロ
グラムに対して使われます。このパラメーターは試験的です。
159
第21章 仮想ゲストのリモート管理
tcp
暗号化のない TCP/IP ソケットです。実稼働使用には推奨できません。これは通常無効になっていますが、管理
者はテスト目的や、信頼できるネットワーク上で有効にすることができます。デフォルトのポートは 16509 です。
デフォルトのトランスポートです。他に指定がない場合は tls です。
リモート URI
Uniform Resource Identifier (URI) はリモートホストに接続するために virsh と libvirt により使用されま
す。URI はまた、virsh コマンド用に --connect パラメーターと一緒にリモートホスト上で単独のコマンドや移
行を実行するのに使用されます。
libvirt URI は一般的な形式を取ります(角括弧 "[]" の中身はオプションの関数を示します):
driver[+transport]://[username@][hostname][:port]/[path][?extraparameters]
外部の場所を目標とするためにトランスポートモードまたはホスト名が与えられる必要があります。
リモート管理パラメータのサンプル
• SSH 転送と SSH ユーザ名 ccurran を用いて、server7 というリモート KVM ホストへ接続します。
qemu+ssh://ccurran@server7/
• TLS を用いて server7 という名のホストにおけるリモート KVM ハイパーバイザーへ接続します。
qemu://server7/
• TLS を用いてホスト server7 におけるリモート KVM ハイパーバイザーへ接続します。no_verify=1
は、libvirt がサーバーの証明書を検証しないよう指示します。
qemu://server7/?no_verify=1
テスト用サンプル
• 標準でない UNIX ソケットを使用してローカルの KVM ハイパーバイザーに接続します。この場合 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 パラメーター
追加のパラメーターがリモート URI へと追加されます。以下の表、用21.1用用用用用 URI 用用用用用用用は、認識される
パラメーターを扱います。他のパラメータはすべて無視されます。パラメーターは URI エスケープされなければ
いけないことに注意してください(つまり、疑問符(?)がパラメーターの前に加えられ、 特別な文字は URI 形式
へと変換されます)。
160
トランスポートモード
表21.1 その他の URI パラメーター
名前
トランスポートモード
説明
使用法のサンプル
名前
全てのモード
リモート
virConnectOpen 関数
に渡される名前です。こ
の名前は通常、リモート
URI からトランスポート、
ホスト名、 ポート番号、
ユーザー名、及び余分な
パラメーターを削除した
ものですが、一部の複雑
なケースでは、名前を明
示的に与えるのが適切
な場合もあります。
name=qemu:///
system
コマンド
ssh と ext
外部コマンドです。外部
のトランスポートにはこ
れが必須となります。ssh
用には デフォルトは ssh
です。コマンドのために
PATH が検索されます。
command=/opt/
openssh/bin/ssh
ソケット
unix と ssh
UNIX ドメインソケットへ socket=/opt/libvirt/
のパスです。これはデフォ run/libvirt/libvirt-sock
ルトを上書きします。 ssh
トランスポートには、これ
がリモート netcat コマン
ドに渡されます(netcat
参照)。
netcat
ssh
netcat コマンドはリモー netcat=/opt/netcat/
トシステムに接続するの bin/nc
に 使用できます。デフォ
ルトの netcat パラメー
タは nc コマンドを 使用
します。SSH トランスポー
ト用には、libvirt が以下
の形式を使用して SSH
コマンドを 構築します:
command -p port [-l
username] hostname
netcat -U socket
port、username、及
び hostname パラメー
タはリモート URI の一
部として 指定できま
す。command、netcat、
及び socket は他の追
加のパラメータ 由来のも
のです。
no_verify
tls
もし非ゼロの値がセッ
トされていると、サーバ
no_verify=1
161
第21章 仮想ゲストのリモート管理
名前
トランスポートモード
説明
使用法のサンプル
の証明書のクライアント
チェックを無効にします。
クライアントの証明書ま
たは IP アドレスのサー
バーチェックを無効化す
るために、libvirtd の設
定を変更しなければいけ
ません。
no_tty
162
ssh
非ゼロの値にセットして
no_tty=1
ある場合、(ssh-agent
又は同類の使用で)自
動的にリモートマシンに
ログインできない場合
に、ssh がパスワードを要
求することを止めます。例
えば、 libvirt を使用する
グラフィカルプログラム
内のターミナルにアクセ
スを持たない時に これを
使用します。
KSM
共有メモリーの概念は最近のオペレーティングシステムでは一般的です。たとえば、プログラムが初めて起動し
たときに、親プログラムとすべてのメモリを共有します。
KSM is a new Linux feature which uses this concept in reverse. KSM enables the kernel to
examine two or more already running programs and compare their memory. If any memory
regions are exactly identical, the kernel can combine the two regions into one and mark those
regions for copy on write as above.
This is useful for virtualization with KVM. When a virtualized guest virtual is started, it only
inherits the memory from the parent qemu-kvm process. Once the guest is running the contents
of the guest operating system image can be shared when guests are running the same operating
system or applications. KSM identifies these identical blocks in an anonymous way which does
not interfere with the guest or impact the secturity. KSM allows KVM to request that these
identical guest memory regions be shared.
The benefits of KSM are speed and utilization. With KSM, common data is kept in cache or in
main memory. This reduces cache misses for the KVM guests which can improve performace for
some applications and operating systems. Secondly, sharing memory reduces the overall memory
usage of guests which allows for higher densities and greater utilization of resources.
Activating KSM
To be done
KSM を無効にする
To be done
Tuning KSM
To be done
163
164
高度な仮想化環境の管理
本章は仮想化ゲストとホストのシステムリソースを細かくチューニングし、制御するための高度な管理ツールに
ついてカバーしています。
注記
本章は作成中です。後日このドキュメントを参照してください。
23.1. ゲストのスケジューリング
KVM guests function as Linux processes. By default, KVM guests are prioritised and scheduled
with the Linux Completely Fair Scheduler. Tuning the schedule for guest processes may be
required for some environments or to prioritize certain guests.
23.2. 高度なメモリー管理
ゲストが使えるメモリーの上限を課すことおよび特定のゲストにおいてオーバーコミットを防ぐこと。
23.3. ゲストのブロック I/O の減速
ゲストのブロック I/O スループットを制限する。
23.4. ゲストのネットワーク I/O の減速
ゲストのネットワーク活動を制限する。
165
166
Xen から KVM へのマイグレーション
もはや可能ではありません。
24.1. Xen から KVM
この章は、Fedora Xen ハイパーバイザのゲストから KVM ハイパーバイザを持つ Fedora へのマイグレーショ
ンを取り扱います。
24.2. KVM から KVM への古いバージョン
この章は、Fedora KVM ハイパーバイザのゲストから KVM ハイパーバイザを持つ Fedora へのマイグレー
ションを取り扱います。
167
168
さまざまな管理作業
本章は、仮想化のパフォーマンス、拡張性および安定性を向上させるために有用なヒントを含んでいます。
25.1. ゲストの自動起動
このセクションは、ホストシステムのブート中に仮想ゲストを自動的に起動させる情報について取り扱っていま
す。
この例は、virsh を用いて、ホストがブートしたときに自動的に開始するよう、ゲスト(TestServer)を設定して
います。
# virsh autostart TestServer
Domain TestServer marked as autostarted
これでゲストがホストとともに自動的に起動します。
ゲストが自動起動するのを止めるため、--disable パラメーターを使用します。
# virsh autostart --disable TestServer
Domain TestServer unmarked as autostarted
もはやゲストはホストとともに自動起動することはなくなりました。
25.2. qemu-img の使用
qemu-img コマンドラインツールは、KVM で使用されるさまざまなファイルシステムをフォーマットするために用
いられます。qemu-img は、仮想ゲストイメージ、追加のストレージデバイスおよびネットワークストレージに対して
用いられます。qemu-img のオプションと使用方法は以下に示されます。
新規イメージまたはデバイスのフォーマットおよび作成
Create the new disk image filename of size size and format format.
# qemu-img create [-6] [-e] [-b base_image] [-f format] filename [size]
base_image が指定されているならば、イメージは base_image の差分だけを記録します。この場合、容量を
指定する必要はありません。base_image は、"commit" モニタコマンドを使用しない限り、変更されません。
既存イメージから他のフォーマットへの変換
convert オプションは、認識されたフォーマットを他のイメージフォーマットへ変換するために用いられます。
コマンドフォーマット:
# qemu-img convert [-c] [-e] [-f format] filename [-O output_format] output_filename
ディスクイメージ filename を、output_format フォーマットでディスクイメージ output_filename に変
換します。ディスクイメージはオプションとして、-e オプションで暗号化されます、もしくは、-c オプションで圧縮
されます。
qcow フォーマットだけが、暗号化と圧縮をサポートしています。圧縮は読み込み専用です。もし圧縮されたセク
タを上書きしたいならば、非圧縮データとして上書きされるということを意味します。
169
第25章 さまざまな管理作業
暗号化は、非常に安全な 128-bit 鍵を持つ AES 形式を用います。最高の保護を得るために長いパスワード
(16文字以上)を使用します。
イメージ変換は、qcow や cow のような、拡張できるフォーマットを用いているときに、イメージをより小さくするた
めにも有用です。空セクタはあて先イメージから検出され、削除されます。
イメージ情報の入手
info パラメータはディスクイメージに関する情報を表示します。info オプションに対するフォーマットは以下の
とおりです:
# qemu-img info [-f format] filename
ディスクイメージのファイル名に関する情報を表示します。表示された容量と異なる可能性がある、ディスクに割
り当てられた容量を知るために用います。仮想マシンのスナップショットはディスクイメージに保存され、それも
表示されます。
サポートされるフォーマット
イメージのフォーマットは通常自動的に推測されます。以下のフォーマットがサポートされます:
raw
Raw ディスクイメージフォーマット(デフォルト)。このフォーマットは、シンプルである優位性を持ち、他のエ
ミュレータすべてへと簡単にエクスポート可能です。もしファイルシステムが hole(たとえば、Linux におけ
る ext2 や ext3 もしくは Windows における NTFS で)をサポートしているならば、書き込まれたセクタの
みが領域を割り当てます。イメージにより使用されている実容量を知るために、qemu-img info、もしくは
Unix/Linux において ls -ls を使用します。
qcow2
QEMU イメージフォーマット、もっとも多機能なフォーマット。より小さいイメージを持つために利用されます
(もしファイルシステムが hole をサポートしていないならば(たとえば、Windows において)有用です。)、
オプションとして AES 暗号化、zlib ベースの圧縮および複数の VM スナップショットがあります。
qcow
古い QEMU イメージフォーマット。古いバージョンとの互換性のためだけに含まれます。
cow
User Mode Linux の Copy On Write イメージフォーマット。cow フォーマットは以前のバージョンとの互
換性のためだけに含まれます。Windows では動作しません。
vmdk
VMware 3 および 4 互換のイメージフォーマット
cloop
Linux Compressed Loop イメージ、たとえば Knoppix CD-ROM において、圧縮された CD-ROM イ
メージを直接再利用するためだけに有用です。
25.3. KVM でのオーバーコミット
KVM ハイパーバイザーは CPU オーバーコミットとメモリーオーバーコミットをサポートします。オーバーコミット
は、システムにある物理リソースより多い仮想 CPU やメモリーを割り当てます。CPU オーバーコミットとともに
用いると、あまり使用されていない仮想サーバーやデスクトップが、より少ないサーバーで実行でき、電力や費
用を節約できます。
170
KVM でのオーバーコミット
メモリオーバーコミット
Most operating systems and applications do not use 100% of the available RAM all the time.
This behavior can be exploited with KVM to use more memory for virtualized guests than what is
physically available.
With KVM, virtual machines are Linux processes. Guests on the KVM hypervisor do not have
blocks of physical RAM assigned to them instead they function as processes. Each process is
allocated memory when it requests more memory. KVM uses this to allocate memory for guests
when the guest operating system requests more or less memory. The guest only uses slightly
more physical memory than the virtualized operating system appears to use.
When physical memory is nearly completely used or a process is inactive for some time, Linux
moves the process's memory to swap. Swap is usually a partition on a hard disk drive or solid
state drive which Linux uses to extend virtual memory. Swap is significantly slower than RAM.
As KVM virtual machines are Linux processes, memory used by virtualized guests can be put into
swap if the guest is idle or not in heavy use. Memory can be committed over the total size of the
swap and physical RAM. This can cause issues if virtualized guests use their total RAM. Without
sufficient swap space for the virtual machine processes to be swapped to the pdflush process,
the cleanup process, starts. pdflush kills processes to free memory so the system does not crash.
pdflush may destroy virtualized guests or other system processes which may cause file system
errors and may leave virtualized guests unbootable.
警告
十分なスワップが利用できないならば、ゲストオペレーティングシステムは強制的にシャットダウンされる
でしょう。これはゲストを動作不能にするかもしれません。利用可能なスワップ以上にメモリーをオーバー
コミットしないことでこれを避けます。
The swap partition is used for swapping underused memory to the hard drive to speed up
memory performance. The default size of the swap partition is calculated from amount of RAM
and overcommit ratio. It is recommended to make your swap partition larger if you intend to
overcommit memory with KVM. A recommended overcommit ratio is 50% (0.5). The formula used
is:
(0.5 * RAM) + (overcommit ratio * RAM) = Recommended swap size
1
Red Hat Knowledgebase に、スワップパーティションの容量を安全かつ効率的な決めることの記事がありま
す。
It is possible to run with an overcommit ratio of ten times the number of virtualized guests over
the amount of physical RAM in the system. This only works with certain application loads (for
example desktop virtualization with under 100% usage). Setting overcommit ratios is not a hard
formula, you must test and customize the ratio for your environment.
1
http://kbase.redhat.com/faq/docs/DOC-15252
171
第25章 さまざまな管理作業
仮想 CPU のオーバーコミット
KVM ハイパーバイザーは仮想 CPU のオーバーコミットをサポートします。仮想 CPU は仮想ゲストが許可する
負荷制限と同じくらいオーバーコミットできます。100% 近い負荷によりリクエストが廃棄されたり、レスポンス
時間が非実用的となる可能性があるので、VCPU をオーバーコミットするときに注意してください。
各仮想ゲストがシングル VCPU を持つとき、仮想 CPU は最も良くオーバーコミットされます。Linux スケ
ジューラーはこの種類の負荷に非常に効果的です。KVM は 5VCPU の比率で 100% 以下の負荷を持つゲス
トを安全にサポートするでしょう。シングル VCPU の仮想ゲストをオーバーコミットすることは問題ありません。
プロセッサーコアの物理数以上の SMP ゲストをオーバーコミットできません。たとえば、4VCPU を持つゲスト
は、デュアルコアのプロセッサを持つホストにおいて実行できません。処理コアの物理数を超えて SMP ゲストを
オーバーコミットすると、重大な性能劣化を引き起こします。
ゲスト VCPU を物理コア数まで割り当てることは、適切であり、期待したとおりに動作します。たとえば、クアッド
コアのホストにおいて 4VCPU を持つ仮想 CPU を実行すること。負荷 100% 以下のゲストはこのセットアップ
において効果的に機能します。
常にテストファースト
十分にテストされていない稼動環境において、メモリーや CPU をオーバーコミットしないでください。メモ
リーや処理リソースを 100% 使用するアプリケーションは、オーバーコミット環境において不安定になる
かもしれません。デプロイ前にテストしてください。
25.4. 仮想化拡張の確認
あなたのシステムがハードウェア仮想化拡張を持つかどうかを決めるために、このセクションを利用します。仮
想化拡張(Intel VT や AMD-V)が完全仮想化に必要です。
1.
CPU 仮想化拡張が利用可能であるかを確認するために以下のコマンドを実行します:
$ grep -E 'svm|vmx' /proc/cpuinfo
2.
出力の分析
• 以下の出力は、Intel VT 拡張を持つ Intel プロセッサーを意味する、vmx エントリを含みます。
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
• 以下の出力は、AMD-V 拡張を持つ AMD プロセッサを意味する、svm エントリを含みます。
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
もし何らかの出力が得られると、プロセッサーはハードウェア仮想化拡張を持ちます。しかし、いくつかの状
況において、製造者は BIOS で仮想化拡張を無効にしています。
"flags:" 出力内容は、システムにおける各ハイパースレッド、コアまたは CPU ごとに一度、何回も出てくる
かもしれません。
172
Accessing data from a guest disk image
仮想化拡張は BIOS で無効にされているかもしれません。拡張が表示されなかったり、完全仮想化がうま
く動作しなかったりするならば、用用32.1用BIOS 用用用用用用用用用用用用用用 を参照してください。
3.
KVM ハイパーバイザーのユーザーのために
もし kvm パッケージがインストールされているならば、追加の確認として、kvm モジュールがカーネルに
ロードされているかを確認します:
# lsmod | grep kvm
もし出力に kvm_intel や kvm_amd が含まれるならば、kvm ハードウェア仮想化モジュールがロードされて
いて、システムは要件を満たします。sudo
追加の出力
libvirt パッケージがインストールされているならば、virsh コマンドが仮想化システム互換性の完全なリス
トを出力できます。完全なリストを得るために、virsh capabilies を root として実行します。
25.5. Accessing data from a guest disk image
There are various methods for accessing the data from guest image files. One common method
is to use the kpartx tool, covered by this section, to mount the guest file system as a loop device
which can then be accessed.
The kpartx command creates device maps from partition tables. Each guest storage image has a
partition table embedded in the file.
2
The libguestfs and guestfish packages, avilable from the EPEL repository, allow advanced
modification and access to guest file systems. The libguestfs and guestfish packages are not
covered in this section at this time.
警告
Guests must be offline before their files can be read. Editing or reading files of an active
guest is not possible and may cause data loss or damage.
手順25.1 Accessing guest image data
1. Install the kpartx package.
# yum install kpartx
2.
2
Use kpartx to list partition device mappings attached to a file-based storage image. This
example uses a image file named guest1.img.
http://fedoraproject.org/wiki/EPEL
173
第25章 さまざまな管理作業
# kpartx -l /var/lib/libvirt/images/guest1.img
loop0p1 : 0 409600 /dev/loop0 63
loop0p2 : 0 10064717 /dev/loop0 409663
guest1 is a Linux guest. The first partition is the boot partition and the second partition is an
EXT3 containing the root partition.
3.
Add the partition mappings to the recognized devices in /dev/mapper/.
# kpartx -a /var/lib/libvirt/images/guest1.img
•
Test that the partition mapping worked. There should be new devices in the /dev/
mapper/ directory
# ls /dev/mapper/
loop0p1
loop0p2
The mappings for the image are named in the format loopXpY.
4.
Mount the loop device which to a directory. If required, create the directory. This example
uses /mnt/guest1 for mounting the partition.
# mkdir /mnt/guest1
# mount /dev/mapper/loop0p1 /mnt/guest1 -o loop,ro
5.
The files are now avialable for reading in the /mnt/guest1 directory. Read or copy the files.
6.
Unmount the device so the guest image can be reused by the guest. If the device is mounted
the guest cannot access the image and therefore cannot start.
# umount /mnt/tmp
7.
Disconnnect the image file from the partition mappings.
# kpartx -d /var/lib/libvirt/images/guest1.img
The guest can now be restarted.
Accessing data from guest LVM volumes
Many Linux guests use Logical Volume Management (LVM) volumes. Additional steps are
required to read data on LVM volumes on virtual storage images.
1.
Add the partition mappings for the guest1.img to the recognized devices in the /dev/
mapper/ directory.
# kpartx -a /var/lib/libvirt/images/guest1.img
2.
174
In this example the LVM volumes are on a second partition. The volumes require a rescan
with the vgscan command to find the new volume groups.
KVM プロセッサーアフィニティの設定
# vgscan
Reading all physical volumes . This may take a while...
Found volume group "VolGroup00" using metadata type lvm2
3.
Activate the volume group on the partition (called VolGroup00 by default) with the vgchange ay command.
# vgchange -ay VolGroup00
2 logical volumes in volume group VolGroup00 now active.
4.
Use the lvs command to display information about the new volumes. The volume names (the
LV column) are required to mount the volumes.
# lvs
LV VG Attr Lsize Origin Snap% Move Log Copy%
LogVol00 VolGroup00 -wi-a- 5.06G
LogVol01 VolGroup00 -wi-a- 800.00M
5.
Mount /dev/VolGroup00/LogVol00 in the /mnt/guestboot/ directory.
# mount /dev/VolGroup00/LogVol00 /mnt/guestboot
6.
The files are now avialable for reading in the /mnt/guestboot directory. Read or copy the files.
7.
Unmount the device so the guest image can be reused by the guest. If the device is mounted
the guest cannot access the image and therefore cannot start.
# umount /mnt/
8.
Disconnect the volume group VolGroup00
# vgchange -an VolGroup00
9.
Disconnnect the image file from the partition mappings.
# kpartx -d /var/lib/libvirt/images/guest1.img
The guest can now be restarted.
25.6. KVM プロセッサーアフィニティの設定
このセクションは、libvirt と KVM ゲストを用いて、プロセッサーと処理コアのアフィニティを設定することを取り
扱います。
デフォルトで、libvirt はハイパーバイザーのデフォルトポリシーを用いてゲストをセットアップします。多くのハイ
パーバイザにとって、ポリシーは利用可能な処理コアや CPU すべてにおいてゲストを実行するようになってい
ます。特に NUMA (Non-Uniform Memory Access) アーキテクチャーを持つシステムに対しては、明確なポ
リシーがより良いかもしれないときがあります。NUMA システムにおけるゲストは、メモリー配置が常に実行さ
れているノードのローカルにあるよう、処理コアを固定すべきです。
非 NUMA システムにおいて、ホストのソケット、コアおよびハイパースレッディングをまたがった明確な配置の
いくかの形式は、より効率的かもしれません。
175
第25章 さまざまな管理作業
CPU と NUMA 接続形態の識別
どのポリシーを適用するかを決める最初のステップは、ホストのメモリと CPU 接続形態を決定することで
す。virsh nodeinfo コマンドは、ホストに接続されているソケット数、コア数およびハイパースレッド数に関する
情報を提供します。
# virsh nodeinfo
CPU model:
CPU(s):
CPU frequency:
CPU socket(s):
Core(s) per socket:
Thread(s) per core:
NUMA cell(s):
Memory size:
x86_64
8
1000 MHz
2
4
1
1
8179176 kB
このシステムは 2 ソケットに 8CPU を持ち、各プロセッサが 4 コアを持ちます。
出力は、システムが NUMA アーキテクチャを持つことを示しています。NUMA は、より複雑であり、正しく解
釈されるためによりデータが必要です。CPU 設定において追加の出力データを手に入れられるように virsh
capabilities を使用してください。
# virsh capabilities
<capabilities>
<host>
<cpu>
<arch>x86_64</arch>
</cpu>
<migration_features>
<live/>
<uri_transports>
<uri_transport>tcp</uri_transport>
</uri_transports>
</migration_features>
<topology>
<cells num='2'>
<cell id='0'>
<cpus num='4'>
<cpu id='0'/>
<cpu id='1'/>
<cpu id='2'/>
<cpu id='3'/>
</cpus>
</cell>
<cell id='1'>
<cpus num='4'>
<cpu id='4'/>
<cpu id='5'/>
<cpu id='6'/>
<cpu id='7'/>
</cpus>
</cell>
</cells>
</topology>
<secmodel>
<model>selinux</model>
<doi>0</doi>
</secmodel>
</host>
[ Additional XML removed ]
</capabilities>
176
KVM プロセッサーアフィニティの設定
The output shows two NUMA nodes (also know as NUMA cells), each containing four logical
CPUs (four processing cores). This system has two sockets, therefore we can infer that each
socket is a separate NUMA node. For a guest with four virtual CPUs, it would be optimal to lock
the guest to physical CPUs 0 to 3, or 4 to 7 to avoid accessing non-local memory, which are
significantly slower than accessing local memory.
ゲストは8仮想 CPU を必要とするならば、各 NUMA ノードが4物理 CPU しか持たないので、単一の 8CPU
ゲストを使用するよりはむしろ、4仮想 CPU のゲストの組を実行し、それらの間で作業を分けることで、より良く
利用できるでしょう。
どの NUMA ノードがゲストを実行するかの決定
ゲストを特定の NUMA ノードに固定することは、そのノードがゲストに対する十分な空きメモリーを持たないな
らば、利益はありません。libvirt は各ノードにおける空きメモリーの情報を保存します。すべての NUMA ノード
における空きメモリーを表示するために、virsh freecell コマンドを使用してください。
# virsh freecell
0: 2203620 kB
1: 3354784 kB
ゲストが 3GB の RAM 割り当てを必要とするならば、ゲストは NUMA ノード(セル)1 で実行されるでしょう。
ノード0は、おそらく特定のゲストに対しては十分ではない、2.2GB の空きしかありません。
ゲストの NUMA ノードまたは物理 CPU セットへの固定
いったんゲストをどのノードで実行するか決めたら、NUMA 接続形態に関する性能データ(virsh
capabilities コマンドの出力)を参照してください。
1.
virsh capabilities 出力からの変換
<topology>
<cells num='2'>
<cell id='0'>
<cpus num='4'>
<cpu id='0'/>
<cpu id='1'/>
<cpu id='2'/>
<cpu id='3'/>
</cpus>
</cell>
<cell id='1'>
<cpus num='4'>
<cpu id='4'/>
<cpu id='5'/>
<cpu id='6'/>
<cpu id='7'/>
</cpus>
</cell>
</cells>
</topology>
2.
ノード1 (<cell id='1'>) が物理 CPU 4~7 を持つことを確認してください。
3.
ゲストは、cpuset 属性を設定ファイルにすることで、CPU の組を固定できます。
a.
ゲストがオフラインの間、virsh edit で設定ファイルを開いてください。
b.
ゲストの仮想 CPU カウントが特定される位置を見つけます。vcpus 要素を探します。
177
第25章 さまざまな管理作業
<vcpus>4</vcpus>
この例におけるゲストは 4CPU を持ちます。
c.
Add a cpuset attribute with the CPU numbers for the relevent NUMA cell.
<vcpus cpuset='4-7'>4</vcpus>
4.
設定ファイルを保存し、ゲストを再起動してください。
ゲストは CPU4~7 に固定されました。
virt-install を用いたゲストの CPU の自動固定
virt-install セットアップツールは、ゲストが作成されるときに「最も合う」 NUMA ポリシーを自動的に適用
するために簡単な方法を提供します。
virt-install への cpuset オプションは、プロセッサーの CPU セットまたはパラメーター auto を使用でき
ます。auto パラメーターは、利用可能な NUMA データを用いて最適な CPU 固定を自動的に決定します。
NUMA システムに対して、新規ゲストを作成するとき、virt-install コマンドに --cpuset=auto を使いま
す。
動作中のゲストにおける CPU アフィニティのチューニング
実行中のゲストにおいて CPU アフィニティを変更するとき、ゲストを再起動したほうが望ましい場合があるかも
しれません。virsh vcpuinfo と virsh vcpupin コマンドは、実行中にゲストにおいて CPU アフィニティを変更
できます。
virsh vcpuinfo コマンドは、各仮想 CPU がどこで動作しているかに関する情報に日付をつけることを保証し
ます。
この例では、guest1 は、KVM ホストで実行している4仮想 CPU を持つゲストです。
# virsh vcpuinfo guest1
VCPU:
0
CPU:
3
State:
running
CPU time:
0.5s
CPU Affinity:
yyyyyyyy
VCPU:
1
CPU:
1
State:
running
CPU Affinity:
yyyyyyyy
VCPU:
2
CPU:
1
State:
running
CPU Affinity:
yyyyyyyy
VCPU:
3
CPU:
2
State:
running
CPU Affinity:
yyyyyyyy
virsh vcpuinfo の出力(CPU Affinity の yyyyyyyy 値)は、現在ゲストがすべての CPU において実行でき
ることを示しています。
仮想 CPU を第2 NUMA ノード(CPU4~7)に固定するために、以下のコマンドを実行します。
178
一意な新規 MAC アドレスの生成
#
#
#
#
virsh
virsh
virsh
virsh
vcpupin
vcpupin
vcpupin
vcpupin
guest1
guest1
guest1
guest1
0
1
2
3
4
5
6
7
virsh vcpuinfo コマンドはアフィニティにおける変更を確認します。
# virsh vcpuinfo guest1
VCPU:
0
CPU:
4
State:
running
CPU time:
32.2s
CPU Affinity:
----y--VCPU:
1
CPU:
5
State:
running
CPU time:
16.9s
CPU Affinity:
-----y-VCPU:
2
CPU:
6
State:
running
CPU time:
11.9s
CPU Affinity:
------yVCPU:
3
CPU:
7
State:
running
CPU time:
14.6s
CPU Affinity:
-------y
KVM プロセスからの情報も、ゲストがいま第2 NUMA ノードにおいて実行されていることを確認できます。
# grep pid /var/run/libvirt/qemu/guest1.xml
<domstatus state='running' pid='4907'>
# grep Cpus_allowed_list /proc/4907/task/*/status
/proc/4907/task/4916/status:Cpus_allowed_list: 4
/proc/4907/task/4917/status:Cpus_allowed_list: 5
/proc/4907/task/4918/status:Cpus_allowed_list: 6
/proc/4907/task/4919/status:Cpus_allowed_list: 7
</section>
25.7. 一意な新規 MAC アドレスの生成
いくつかの場合において、ゲスト用の新しく一意な MAC 用用用用を生成する必要があるでしょう。執筆時点で、新
しい MAC アドレスを生成するために利用可能なコマンドラインツールはありません。以下に示されるスクリプ
トはゲスト用の新しい 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
#
import random
#
def randomMAC():
mac = [ 0x00, 0x16, 0x3e,
random.randint(0x00, 0x7f),
random.randint(0x00, 0xff),
179
第25章 さまざまな管理作業
random.randint(0x00, 0xff) ]
return ':'.join(map(lambda x: "%02x" % x, mac))
#
print randomMAC()
ゲスト用の新しい MAC を生成する他の方法
ゲスト設定ファイルにおいて使用する、新しい MAC アドレスと UUID を生成するために、python-virtinst の
組み込みモジュールを使用することもできます:
# 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 ""
25.8. Very Secure ftpd
vsftpdは、準仮想化ドライバー用のインストールツリー(たとえば、Fedoraリポジトリ)または他のデータへアク
セスできるようにします。サーバをインストール中にvsftpdがインストールされていなければ、インストールメディ
アのServerディレクトリからRPMパッケージを手に入れられ、rpm -ivh vsftpd*.rpmでインストールできます
(RPMパッケージはカレントディレクトリになければいけないことに注意してください。)。
1. To configure vsftpd, edit /etc/passwd using vipw and change the ftp user's home directory
to the directory where you are going to keep the installation trees for your para-virtualized
guests. An example entry for the FTP user would look like the following:
ftp:x:14:50:FTP User:/installtree/:/sbin/nologin
2. chkconfig --list vsftpd を用いて vsftpd が有効でないことを確認します:
$ chkconfig --list vsftpd
vsftpd
0:off
1:off
2:off
3:off
4:off
5:off
6:off
3. vsftpd がランレベル3、4および5で自動的に開始するよう、chkconfig --levels 345 vsftpd on を実行
します。
4. chkconfig --list vsftpd を使用して、vsftpd デーモンがシステム起動中に開始するよう有効化されて
いることを確認します:
$ chkconfig --list vsftpd
vsftpd
0:off
1:off
2:off
3:on
4:on
5:on
6:off
5. service vsftpd start vsftpd を使用して vsftpd サービスを開始します:
$service vsftpd start vsftpd
180
Configuring LUN Persistence
Starting vsftpd for vsftpd:
[
OK
]
25.9. Configuring LUN Persistence
This section covers how to implement LUN persistence in guests and on the host machine with
and without multipath.
Implementing LUN persistence without multipath
If your system is not using multipath, you can use udev to implement LUN persistence. Before
implementing LUN persistence in your system, ensure that you acquire the proper UUIDs. Once
you acquire these, you can configure LUN persistence by editing the scsi_id file that resides in
the /etc directory. Once you have this file open in a text editor, you must comment out this line:
# options=-b
Then replace it with this parameter:
# options=-g
This tells udev to monitor all system SCSI devices for returning UUIDs. To determine the system
UUIDs, use the scsi_id command:
# scsi_id -g -s /block/sdc
*3600a0b80001327510000015427b625e*
The long string of characters in the output is the UUID. The UUID does not change when you
add a new device to your system. Acquire the UUID for each device in order to create rules for
the devices. To create new device rules, edit the 20-names.rules file in the /etc/udev/rules.d
directory. The device naming rules follow this format:
# KERNEL="sd*",
BUS="scsi",
PROGRAM="sbin/scsi_id", RESULT="UUID", NAME="devicename"
Replace your existing UUID and devicename with the above UUID retrieved entry. The rule
should resemble the following:
KERNEL="sd*", BUS="scsi",
NAME="mydevicename"
PROGRAM="sbin/scsi_id", RESULT="3600a0b80001327510000015427b625e",
This enables all devices that match the /dev/sd* pattern to inspect the given UUID. When it finds
a matching device, it creates a device node called /dev/devicename. For this example, the
device node is /dev/mydevice . Finally, append the /etc/rc.local file with this line:
/sbin/start_udev
Implementing LUN persistence with multipath
To implement LUN persistence in a multipath environment, you must define the alias names
for the multipath devices. For this example, you must define four device aliases by editing the
multipath.conf file that resides in the /etc/ directory:
multipath
{
181
第25章 さまざまな管理作業
}
multipath
}
multipath
}
multipath
wwid
alias
3600a0b80001327510000015427b625e
oramp1
wwid
alias
3600a0b80001327510000015427b6
oramp2
wwid
alias
3600a0b80001327510000015427b625e
oramp3
wwid
alias
3600a0b80001327510000015427b625e
oramp4
{
{
{
}
This defines 4 LUNs: /dev/mpath/oramp1, /dev/mpath/oramp2, /dev/mpath/oramp3, and dev/mpath/
oramp4. The devices will reside in the /dev/mpath directory. These LUN names are persistent after
reboots as it creates aliased names on the wwid for each of the LUNs.
25.10. ゲストに対する SMART ディスクモニタリングの無効化
SMART disk monitoring can be disabled as we are running on virtual disks and the physical
storage is managed by the host.
/sbin/service smartd stop
/sbin/chkconfig --del smartd
25.11. VNC サーバーの設定
VNC サーバーを設定するために、システム > 設定にあるリモートデスクトップアプリケーションを使用します。
以下の手順で専用の VNC サーバーセッションをセットアップします:
1. vncserver が開始されるといつでも、GNOME セッションが開始するよう ~/.vnc/xstartup ファイルを編
集します。初めて vncserver スクリプトを実行するとき、使用したい VNC セッションのパスワードを尋ねら
れます。
2. サンプル 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
182
パート V. 仮想ストレージの話題
仮想用のストレージ管理の紹介
This part covers using shared, networked storage with virtualization on Fedora.
The following methods are working for virtualization:
• Fibre Channel
• iSCSI
• NFS
• GFS2
Networked storage is essential for live and offline guest migrations. You cannot migrate guests
without shared storage.
Using shared storage with virtual disk images
This chapter covers using various types of shared and network storage devices for virtual disks.
26.1. Using iSCSI for storing virtual disk images
This chapter covers using iSCSI-based devices to store virtualized guests.
26.2. Using NFS for storing virtual disk images
This chapter covers using NFS to store virtualized guests.
26.3. Using GFS2 for storing virtual disk images
This chapter covers using the Red Hat Global File System 2 (GFS2) to store virtualized guests.
26.4. Storage Pools
Using storage pools in RHEL
26.4.1. Configuring storage devices for pools
How to set up the device/RHEL for storage pools for iSCSI, GFS and (maybe) Fibre Channel.
26.4.2. Mapping virtualized guests to storage pools
libvirt example for mapping storage pools
185
186
パート VI. 仮想化の参考ガイド
仮想化コマンド、システムツー
ル、アプリケーションおよび
追加のシステムリファレンス
These chapters provide detailed descriptions of virtualization commands, system tools, and
applications included in Fedora. These chapters are designed for users requiring information on
advanced functionality and other features.
仮想化のツール
The following is a list of tools for virtualization administration, debugging and networking.
システム管理ツール
• vmstat
• iostat
• lsof
• qemu-img
高度なデバッグツール
• systemTap
• crash
• sysrq
• sysrq t
• sysrq w
• sysrq c
ネットワーク
brtcl
•
•
•
# brctl show
bridge name bridge id STP enabled interfaces
pan0 8000.000000000000 no
virbr0 8000.000000000000 yes
# brctl showmacs virbr0
port no mac addr is local? ageing timer
# brctl showstp virbr0
virbr0
bridge id 8000.000000000000
designated root 8000.000000000000
root port
0
path cost
0
max age
19.99
bridge max age
19.99
hello time
1.99
bridge hello time
1.99
forward delay
0.00
bridge forward delay
0.00
ageing time
299.95
hello timer
1.39
tcn timer
0.00
topology change timer
0.00
gc timer
0.39
• ifconfig
• tcpdump
KVM ツール
• ps
• pstree
189
第27章 仮想化のツール
• top
• kvmtrace
• kvm_stat
190
Managing guests with virsh
virsh is a command line interface tool for managing guests and the hypervisor.
virsh ツールは、libvirt 管理 API を基にしており、xm コマンドとグラフィカルなゲストマネージャー(virtmanager)の代替として機能します。virsh は、特権ユーザー以外は読み込み専用モードで使用できま
す。virshを使用して、ゲストマシン用のスクリプトを実行できます。
virsh コマンドのクイックリファレンス
以下の表は、すべての virsh コマンドラインオプションに対するクイックリファレンスを提供します。
表28.1 ゲストの管理コマンド
コマンド
説明
help
基本的なヘルプ情報を表示します。
list
すべてのゲストを一覧表示します。
dumpxml
ゲスト用の XML 設定ファイルを出力します。
create
XML 設定ファイルからゲストを作成し、新規ゲストを
起動します。
start
停止中のゲストを起動します。
destroy
ゲストを強制的に停止します。
define
ゲスト用の XML 設定ファイルを出力します。
domid
ゲストの ID を表示します。
domuuid
ゲストの UUID を表示します。
dominfo
ゲストの情報を表示します。
domname
ゲストの名前を表示します。
domstate
ゲストの状態を表示します。
quit
対話式のターミナルを終了します。
reboot
ゲストを再起動します。
restore
以前ファイルに保存されているゲストを復元します。
resume
一時停止中のゲストを再開します。
save
ゲストの現在の状態をファイルに保存します。
shutdown
ゲストを緩やかにシャットダウンします。
suspend
ゲストを一時停止します。
undefine
ゲストに関連するファイルをすべて削除します。
migrate
ゲストを別のホストへ移行します。
virsh コマンドの以下のオプションは、ゲストとハイパーバイザーのリソースを管理します:
表28.2 リソース管理のオプション
コマンド
説明
setmem
ゲストに対して割り当てられるメモリーを設定します。
setmaxmem
ハイパーバイザーに対するメモリーの上限を設定しま
す。
setvcpus
ゲストに割り当てた仮想 CPU の数を変更します。
vcpuinfo
ゲストに関する仮想 CPU の情報を表示します。
191
第28章 Managing guests with virsh
コマンド
説明
vcpupin
ゲストの仮想 CPU アフィニティを制御します。
domblkstat
実行中のゲストに対するブロックデバイスの統計を
表示します。
domifstat
実行中のゲストに対するネットワークインターフェイス
の統計を表示します。
attach-device
XML ファイルにおけるデバイスの定義を用いて、デ
バイスをゲストに接続します。
attach-disk
新しいディスクデバイスをゲストに接続します。
attach-interface
新しいネットワークインターフェイスをゲストに接続し
ます。
detach-device
ゲストからデバイスを切断し、attach-device コマン
ドと同じ種類の XML 記述を提示します。
detach-disk
ゲストからディスクデバイスを切断します。
detach-interface
ゲストからネットワークインターフェイスを切断します。
These are miscellaneous virsh options:
表28.3 その他のオプション
コマンド
説明
version
virsh のバージョンを表示します。
nodeinfo
ハイパーバイザーに関する情報を出力します。
ハイパーバイザーへの接続
virsh でハイパーバイザーのセッションへ接続します:
# virsh connect {hostname OR URL}
<name> のところにハイパーバイザーのマシン名が入ります。読み込み専用の接続を開始したい場合、上のコマ
ンドに -readonly を追加します。
仮想マシンの XML ダンプ(設定ファイル)の作成
virsh を用いてゲストの XML 設定ファイルを出力します:
# virsh dumpxml {guest-id, guestname or uuid}
このコマンドはゲストの XML 設定ファイルを標準出力(stdout)へ出力します。出力をパイプすることでデータ
をファイルに保存できます。guest.xml というファイルへ出力をパイプする例:
# virsh dumpxml GuestID > guest.xml
このファイル guest.xml はゲストを再作成できます(用用用用用用用用用用用用用を参照してください。)。追加デバイスを
設定したり、追加ゲストを配備したりするために、この XML 設定ファイルを編集できます。virsh dumpxml で作
成されたファイルを修正することに関する詳細は 用virsh 用用用用 XML 用用用用用用用用用用 を参照してください。
virsh dumpxml 出力の例:
# virsh dumpxml r5b2-mySQL01
192
<domain type='kvm' 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='br0'/>
<mac address='00:16:3e:49:1d:11'/>
<script path='bridge'/>
</interface>
<graphics type='vnc' port='5900'/>
<console tty='/dev/pts/4'/>
</devices>
</domain>
設定ファイルからのゲストの作成
ゲストは XML 設定ファイルから作成できます。以前作成したゲストから既存の XML をコピー、または dumpxml
オプションを使用できます(用用用用用用 XML 用用用用用用用用用用用用用用を参照してください。)。XML ファイルから virsh
でゲストを作成するために:
# 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}
ゲストが休止状態にあるとき、システム RAM を消費しますが、プロセッサ資源を消費しません。ディスクとネット
ワークの I/O は、ゲストが休止している間に発生しません。この操作は即時実行され、ゲストはresume(用用用用用
用)オプションで再開されます。
ゲストの復帰
resume オプションを用いて virsh を使用して休止中のゲストを復帰します:
193
第28章 Managing guests with 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 を用いて virsh save コマンド(用用用用用用)とともに以前保存されたゲストを復元します:
# virsh restore filename
これは、すこし時間をかけて、保存されたゲストを再起動します。ゲストの名前と UUID は保持され、新しい ID
を割り当てられます。
ゲストのシャットダウン
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}
This command does an immediate ungraceful shutdown and stops the specified guest. Using
virsh destroy can corrupt guest file systems . Use the destroy option only when the guest is
unresponsive. For para-virtualized guests, use the shutdown option(用用用用用用用用用用用) instead.
ゲストのドメイン ID の取得
ゲストのドメイン ID を取得するには:
194
# virsh domid {domain-name or domain-uuid}
ゲストのドメイン名の取得
ゲストのドメイン名を取得するには:
# virsh domname {domain-id or domain-uuid}
ゲストの 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
CPU (s)
CPU frequency
CPU socket(s)
Core(s) per socket
Threads per core:
x86_64
8
2895 Mhz
2
2
2
195
第28章 Managing guests with virsh
Numa cell(s)
Memory size:
1
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 を使用すると、これが起きます。ゲストが一時停止しているとき、メモリと他の
資源を消費します、しかしハイパーバイザーからスケジューリングと CPU 資源が必要ありません。
• shutdown 状態は、ゲストがシャットダウン過程にあることを意味します。ゲストはシャットダウン信号が送ら
れ、その動作が緩やかに停止過程に入るでしょう。これはすべてのオペレーティングシステムに動作しません、
いくつかのオペレーティングシステムはこの信号に反応しません。
• dying 状態にあるドメインは、停止過程にあることです。それは、ドメインは完全にシャットダウンしていない、も
しくはクラッシュしていない状態です。
• crashed ゲストは、実行中に落として、もはや動作させなくなります。ゲストがクラッシュにおいて再起動しな
いように設定されていなければ、この状態はできません。
仮想 CPU 情報の表示
virsh を使用してゲストから仮想 CPU の情報を表示するには:
# virsh vcpuinfo {domain-id, domain-name or domain-uuid}
virsh vcpuinfo 出力の例:
# virsh vcpuinfo r5b2-mySQL01
VCPU:
0
196
CPU:
State:
CPU time:
CPU Affinity:
0
blocked
0.0s
yy
仮想 CPU アフィニティの設定
物理 CPU とともに仮想 CPU のアフィニティを設定するには:
# virsh vcpupin domain-id vcpu cpulist
domain-id パラメーターはゲストのID番号または名前です。
vcpu パラメーターはゲストへ割り当てられた仮想 CPU の番号を示します。vcpu パラメーターは与えられなけ
ればいけません。
cpulist パラメーターは、カンマで区切られた物理 CPU 識別番号の一覧です。cpulist パラメーター
は、VCPU が実行できる物理 CPU を決めます。
仮想 CPU カウントの設定
virsh を用いてゲストに割り当てられた CPU の数を修正するには:
# virsh setvcpus {domain-name, domain-id or domain-uuid} count
新しい count 値は、ゲストが作成されたときに指定された合計を超えることはできません。
メモリー割り当ての設定
virsh を用いてゲストのメモリー割り当てを変更するために:
# virsh setmem {domain-id or domain-name} count
count をキロバイト単位で指定しなければなりません。新しいカウント値は、ゲストを作成するときに指定された
量を超えることができません。64MB より小さい値は、多くのゲストオペレーティングシステムで動作しないで
しょう。より高いメモリー上限値はアクティブなゲストに作用しません。新しい値がより小さいならば、利用可能な
メモリーは縮小され、ゲストはクラッシュするかもしれません。
ゲストブロックデバイス情報の表示
virsh domblkstat を使用すると稼働中のゲストの ブロックデバイス統計が表示できます。
# virsh domblkstat GuestName block-device
ゲストネットワークデバイス情報の表示
virsh domifstat を使用すると、稼働中のゲストの ネットワークインターフェイス統計が表示できます。
# virsh domifstat GuestName interface-device
virsh を用いたゲストの移行
ゲストは virsh を用いて他のホストへ移行できます。ドメインを他のホストへいこうします。ライブマイグレーショ
ンのために --live を追加します。migrate コマンドは以下の形式のパラメータを受け付けます。
197
第28章 Managing guests with virsh
# virsh migrate --live GuestName DestinationURL
--live パラメーターはオプションです。ライブマイグレーションのために --live パラメーターを追加します。
GuestName パラメーターは、移行したいゲストの名前を表しています。
DestinationURL パラメーターはあて先システムの URL またはホスト名です。あて先システムは次を必要と
します:
• Fedora 9 or newer,
• 同じハイパーバイザーのバージョン、そして
• libvirt サービスが開始されていなければいけません。
コマンドが入力されると、あて先システムの root パスワードを要求されます。
仮想ネットワークの管理
このセクションでは、virsh コマンドを使用した仮想化 ネットワークの管理を説明します。仮想化ネットワークを
一覧表示するには:
# virsh net-list
このコマンドは以下のような出力を出します:
# virsh net-list
Name
State
Autostart
----------------------------------------default
active
yes
vnet1
active
yes
vnet2
active
yes
特定の仮想ネットワークのためのネットワーク情報を表示するには:
# virsh net-dumpxml NetworkName
これにより、指定された仮想ネットワークに関する情報を XML 形式で表示されます:
# 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 — Autostart a network specified as network-name.
• virsh net-create XMLfile — generates and starts a new network using an existing XML file.
198
• virsh net-define XMLfile — generates a new network device from an existing XML file
without starting it.
• virsh net-destroy network-name — destroy a network specified as network-name.
• virsh net-name networkUUID — convert a specified networkUUID to a network name.
• virsh net-uuid network-name — convert a specified network-name to a network UUID.
• virsh net-start nameOfInactiveNetwork — starts an inactive network.
• virsh net-undefine nameOfInactiveNetwork — removes the definition of an inactive
network.
199
200
Managing guests with the Virtual Machine Manager (virtmanager)
This section describes the Virtual Machine Manager (virt-manager) windows, dialog boxes, and
various GUI controls.
virt-manager provides a graphical view of hypervisors and guest on your system and on remote
machines. You can use virt-manager to define both para-virtualized and fully virtualized guests.
virt-manager can perform virtualization management tasks, including:
• メモリの割り当て、
• 仮想 CPU の割り当て、
• 動作パフォーマンスの監視、
• 仮想ゲストの保存と復元、休止と復帰、およびシャットダウンと開始、
• テキストコンソールとグラフィカルコンソールへの接続、および、
• ライブマイグレーションとオフライン移行
29.1. 接続の追加ウィンドウ
このウィンドウは初めに表示され、ハイパーバイザーのセッションを選択するために使われます。非特権ユー
ザーは読み込み専用でセッションを初期化できます。root ユーザーは完全な読み書き状態でセッションを開始
できます。一般的な利用のために、KVM の QEMU オプションを選択します。
図29.1 仮想マシンマネージャーの接続ウィンドウ
201
第29章 Managing guests with the Virtual Machine Manager (virt-manager)
29.2. 仮想マシンマネージャーのメインウィンドウ
このメインウィンドウはすべての実行中のゲストとゲストにより使用されているリソースを表示します。ゲストの名
前をダブルクリックして仮想ゲストを選択します。
図29.2 仮想マシンマネージャーの主要ウィンドウ
29.3. ゲストの概要のタブ
概要タブは、virt-manager から利用可能なゲストのリソース使用量データのグラフと統計を表示しま
す。UUID フィールドは仮想マシン用のグローバルに一意な識別子を表示します。
202
仮想マシングラフィカルコンソール
図29.3 概要タブ
29.4. 仮想マシングラフィカルコンソール
This window displays a virtual machine's graphical console. Para-virtualized and fully virtualized
guests use different techniques to export their local virtual framebuffers, but both technologies
use VNC to make them available to the Virtual Machine Manager's console window. If your virtual
machine is set to require authentication, the Virtual Machine Graphical console prompts you for
a password before the display appears.
203
第29章 Managing guests with the Virtual Machine Manager (virt-manager)
図29.4 グラフィカルコンソールウィンドウ
セキュリティと VNC に関する注記
VNC は多くのセキュリティ専門家によって安全ではないと考えられています。しかしながら、いくつかの
変更は仮想化に対する VNC の安全な利用を可能にするためになされてきました。ゲストマシンは、ロー
カルホスト(dom0)のループバックアドレス(127.0.0.1)のみをリッスンします。これにより、ホストにおける
シェル権限を持つユーザのみが、virt-manager と VNC 経由の仮想マシンへとアクセスできます。
リモート管理は、21用用用用用用用用用用用用用 にある指示に従い実行されます。TLS は、ゲストとホストシステムを
管理するために、エンタープライズレベルのセキュリティを提供できます。
キーコンビネーション(たとえば、Ctrl+Alt+F11)がゲストマシンへ送られるのを妨げるために、ローカルデスク
トップはそれらを割り込む可能性があります。これらのシーケンスを送るために、virt-manager の特殊なキー
機能を使用することができます。ある修飾キー(CtrlやAlt)を3回押さなければならず、指定したキーは次の非
修飾キーが押されるまで有効であるとして扱われます。キーシーケンス 'Ctrl Ctrl Ctrl Alt+F1' を入力すること
で、Ctrl-Alt-F11 をゲストへと送ることができます。
SPICE のオープンを試みます。
29.5. virt-manager の開始
virt-manager のセッションを開始するには、 アプリケーション メニューを開いて、それから システムツール メ
ニュー、仮想マシンマネージャ (virt-manager) と進んで行きます。
virt-manager のメインウィンドウが表示されます。
204
保存したマシンの復元
図29.5 virt-manager の開始
代わりに、virt-manager は以下のコマンドで説明されているように ssh を用いてリモートで開始されます:
ssh -X host's address[remotehost]# virt-manager
仮想マシンとホストを管理するために ssh を用いることは、用SSH 用用用用用用用用用用用 においてさらに議論されてい
ます。
29.6. 保存したマシンの復元
仮想マシンマネージャーを開始した後は、システム上の全ての仮想マシンがメインウィンドウに表示されま
す。Domain0 はユーザーのホストシステムです。マシンの表示がない場合は、現在、システム上で実行中のマ
シンがないという意味になります。
以前の保存セッションを復元するには:
205
第29章 Managing guests with the Virtual Machine Manager (virt-manager)
1.
ファイル メニューから 保存したマシンの復元 を選択します。
図29.6 仮想マシンの復元
2.
仮想マシンの復元 のメインウィンドウが出ます。
3.
該当のディレクトリに移動して、保存したセッションファイルを選択します。
4.
開く をクリックします。
保存してある仮想システムが仮想マシンマネージャーの主要ウィンドウに出てきます。
図29.7 復元された仮想マシンマネージャーのセッション
206
ゲストの詳細表示
29.7. ゲストの詳細表示
仮想マシンモニターを使用して、システム上の仮想マシン用の活動データ情報を表示することができます。
仮想システムの詳細を表示するために:
1.
仮想マシンマネージャーの主要ウィンドウで、表示したい仮想マシンを強調表示します。
図29.8 表示する仮想マシンを選択
207
第29章 Managing guests with the Virtual Machine Manager (virt-manager)
2.
仮想マシンマネージャーの編集メニューから、マシンの詳細を選択します(もしくは、仮想マシンマネー
ジャーのメインウィンドウの下部にある詳細ボタンをクリックします。)。
図29.9 概要ウィンドウの表示
仮想マシンウィンドウにおいて、概要タブをクリックします。
概要タブは、指定された仮想ゲストに対する、CPU とメモリーの使用量を要約します。
図29.10 ゲストの詳細概要を表示
208
ゲストの詳細表示
3.
仮想マシンウィンドウにおいて、ハードウェアタブをクリックします。
図29.11 ゲストハードウェアの詳細を表示
4.
ハードウェア タブで プロセッサ をクリックして、現在のプロセッサー割り当ての表示や変更をします。
図29.12 プロセッサー割り当てのパネル
209
第29章 Managing guests with the Virtual Machine Manager (virt-manager)
5.
ハードウェア タブで、メモリー をクリックして、現在の RAM メモリー割り当ての表示や変更をします。
図29.13 メモリー割り当ての表示
6.
ハードウェア タブで ディスク をクリックして現在のハードディスク設定の表示や変更をします。
図29.14 ディスク設定の表示
210
ステータスの監視
7.
ハードウェアタブにおいて、現在のネットワーク設定を表示または変更するために NIC をクリックします。
図29.15 ネットワーク設定の表示
29.8. ステータスの監視
状態モニタリング設定は virt-manager の設定ウィンドウで変更されます。
状態モニタリングの設定のために:
1.
編集 メニューから 個人設定 を選択します。
図29.16 ゲストの個人設定の修正
設定ウィンドウが表示されます。
211
第29章 Managing guests with the Virtual Machine Manager (virt-manager)
2.
統計タブから、秒間回数と統計のポーリングオプションを指定します。
図29.17 ステータス監視の設定
29.9. ゲスト識別子の表示
システム上の全ての仮想マシン用のドメイン ID を表示するには:
212
ゲストの状態の表示
1.
表示 メニューから、ドメイン ID チェックボックスを選択します。
図29.18 ゲスト ID の表示
2.
仮想マシンマネージャは、システム上の全てのドメイン用のドメイン ID を一覧表示します。
図29.19 ドメイン ID の表示
29.10. ゲストの状態の表示
システム上の全ての仮想マシンのステータスを表示するには:
213
第29章 Managing guests with the Virtual Machine Manager (virt-manager)
1.
表示 メニューから、ステータス チェックボックスを選択します。
図29.20 仮想マシンの状態の選択
2.
仮想マシンマネージャーはシステム上の全ての仮想マシンのステータスを一覧表示します。
図29.21 仮想マシンの状態の表示
29.11. 仮想 CPU の表示
システム上の全ての仮想マシン用の仮想 CPU の数量を表示するには:
214
CPU 使用量の表示
1.
表示 メニューから、仮想 CPU チェックボックスを選択します。
図29.22 仮想 CPU オプションの選択
2.
仮想マシンマネージャは、システム上の全ての仮想マシン用の仮想 CPU を一覧表示します。
図29.23 仮想 CPU の表示
29.12. CPU 使用量の表示
システム上の全ての仮想マシン用の CPU 使用量を表示するには:
215
第29章 Managing guests with the Virtual Machine Manager (virt-manager)
1.
表示 メニューから、CPU 使用量 チェックボックスを選択します。
図29.24 CPU 使用量の選択
2.
仮想マシンマネージャは、システム上の全ての仮想マシン用の CPU 使用率を一覧表示します。
図29.25 CPU 使用量の表示
29.13. メモリー使用量の表示
システム上の全ての仮想マシン用のメモリー使用量を表示するには:
216
仮想ネットワークの管理
1.
表示 メニューから、メモリー使用量 チェックボックスを選択します。
図29.26 メモリー使用量の選択
2.
仮想マシンマネージャーは、システム上の全ての仮想マシン用のメモリー使用量をメガバイトで一覧表示
します。
図29.27 メモリー使用量の表示
29.14. 仮想ネットワークの管理
システム上の仮想ネットワークを設定するには:
217
第29章 Managing guests with the Virtual Machine Manager (virt-manager)
1.
編集 メニューから ホストの詳細 を選択します。
図29.28 ホストの詳細の選択
2.
これが ホストの詳細(Host Details) メニューを開きます。 仮想ネットワーク タブをクリックします。
図29.29 仮想ネットワークの設定
3.
218
使用できる仮想ネットワークは全て、メニューの左側ボックスに表示されています。 このボックスから一つの
仮想ネットワークを選択して、必要に応じた編集をすることで その設定を変更できます。
仮想ネットワークの作成
29.15. 仮想ネットワークの作成
システム上に仮想ネットワークを作成するには:
1.
ホストの詳細メニュー(用用用用用用用用用用用用用参照)を開き、追加ボタンをクリックします。
図29.30 仮想ネットワークの設定
そうすると、新規仮想ネットワークの作成(Create a new virtual network) メニューが開きます。進む
(Forward) をクリックして 継続します。
219
第29章 Managing guests with the Virtual Machine Manager (virt-manager)
図29.31 新規仮想ネットワークの作成
220
仮想ネットワークの作成
2.
使用する仮想ネットワークの名前を入力して、それから 進む をクリックします。
図29.32 仮想ネットワークの命名
221
第29章 Managing guests with the Virtual Machine Manager (virt-manager)
3.
使用する仮想ネットワークの IPv4 アドレスを入力して、それから 進む を クリックします。
図29.33 IPv4 のアドレススペースの選択
222
仮想ネットワークの作成
4.
IP アドレスの 開始 と 終了 の 範囲を指定して、使用したい仮想ネットワークの DHCP の範囲を定義しま
す。 進む(Forward) をクリックして継続します。
図29.34 DHCP の範囲を選択
223
第29章 Managing guests with the Virtual Machine Manager (virt-manager)
5.
仮想ネットワークが物理ネットワークに接続する方法を選択します。
図29.35 物理ネットワークへの接続
物理ネットワークへ転送(Forwarding to physical network) を選択 する場合、転送先(Destination)
が いずれかの物理 デバイスかに NAT か、物理デバイス eth0 に NAT かを 選びます。
進む をクリックして継続します。
224
仮想ネットワークの作成
6.
これでネットワーク作成の準備ができました。ネットワークの設定を確認して、 完了(Finish) をクリックしま
す。
図29.36 ネットワーク作成への準備終了
225
第29章 Managing guests with the Virtual Machine Manager (virt-manager)
7.
仮想ネットワークは現在、ホストの詳細(Host Details) の 仮想ネットワーク タブで使用できます。
図29.37 新規の仮想ネットワークが今、使用できます。
226
libvirt 設定の参考資料
本章は、libvirt XML 設定ファイルのさまざまなパラメーターの参考資料です。
表30.1 libvirt 設定ファイル
項目
説明
pae
物理アドレス拡張の設定データを指定します。
apic
APIC の設定データを指定します。
memory
メモリー容量を MB 単位で指定します。
vcpus
仮想 CPU 数を指定します。
console
ドメインのコンソールを設定するポート番号を指定し
ます。
nic
仮想ネットワークインタフェースの数を指定します。
vif
ドメインのネットワークアドレスに対して使われるため
に、ランダムに割り当てられた MAC アドレスとブリッ
ジを表示します。
disk
ドメインへ設定するブロックデバイスを一覧化し、物
理デバイスを読み込み専用のドメインに設定します。
dhcp
DHCP によるネットワークを有効にします。
netmask
設定された IP ネットワークを指定します。
gateway
設定された IP ゲートウェイを指定します。
acpi
ACPI の設定データを指定します。
227
228
カスタム libvirt スクリプトの作成
このセクションでは、libvirt を使用して、操作を簡単にするためのカスタムスクリプトを作成しようとしている
プログラマーとシステム管理者に役立ついくつかの情報を提供します。
25用用用用用用用用用用は、libvirt を使用する新しいアプリケーションを書こうとしているプログラマーに対して推奨
されています。
31.1. virsh とともに XML 設定ファイルの使用
virsh can handle XML configuration files. You may want to use this to your advantage for
scripting large deployments with special options. You can add devices defined in an XML file to a
running para-virtualized guest. For example, to add a ISO file as hdc to a running guest create an
XML file:
# 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>
ゲストへ hdc として "satellite" と呼ばれる ISO を接続するために virsh attach-device を実行します:
# virsh attach-device satellite satelliteiso.xml
229
230
パート VII. トラブルシューティング
トラブルシューティングと問題解決の紹介
以下の章は、仮想化を用いて遭遇するかもしれない問題をトラブルシューティングするのを支援するための情
報を提供します。
トラブルシューティング
本章は、Fedora 仮想化において一般的な問題と解決策を取り扱います。
本章は、読者であるあなたに、仮想化技術を用いた問題がどこにあるかを判断するための基礎知識を提供しま
す。トラブルシューティングは、書籍から学ぶことは難しく、実践と経験を必要とします。トラブルシューティングの
スキルを開発するために、Fedora における仮想化を経験してテストすることを推奨します。
このドキュメントで答えを得ることができなければ、仮想化コミュニティからオンラインの答えがあるかもしれま
せん。Linux 仮想化のウェブサイトの一覧は、用用用用用用用用用用用 を参照してください。
32.1. デバッグとトラブルシューティングのツール
このセクションは、システム管理アプリケーション、ネットワークユーティリティ、およびデバッグツールの概要を説
明します。トラブルシューティングを支援するために、標準的なシステム管理ツールとログを活用できます:
• vmstat
• iostat
• lsof
• systemtap
• crash
• sysrq
• sysrq t
• sysrq w
ネットワークツールは、仮想ネットワークの問題をトラブルシューティングすることを支援できます:
• ifconfig
• tcpdump
tcpdump コマンドは、ネットワークパケットを '盗聴' します。tcpdump は、ネットワークの異常やネットワーク認
証の問題を発見するために有用です。wireshark という tcpdump のグラフィカルバージョンがあります。
• brctl
brctl は、仮想化 Linux カーネルにおけるイーサネットブリッジの設定を確認したり設定したりするための
ネットワークツールです。
# brctl show
bridge-name
bridge-id
STP enabled interfaces
----------------------------------------------------------------------------virtbr0
8000.feffffff
yes
eth0
# brctl showmacs virtbr0
port-no
mac-addr
1
fe:ff:ff:ff:ff:
2
fe:ff:ff:fe:ff:
# brctl showstp virtbr0
virtbr0
bridge-id
8000.fefffffffff
designated-root
8000.fefffffffff
root-port
0
local?
yes
yes
path-cost
aging timer
0.00
0.00
0
233
第32章 トラブルシューティング
max-age
20.00
hello-time
2.00
forward-delay
0.00
aging-time
300.01
hello-timer
1.43
topology-change-timer 0.00
bridge-max-age
bridge-hello-time
bridge-forward-delay
20.00
2.00
0.00
tcn-timer
gc-timer
0.00
0.02
以下に示されたものは、仮想化をトラブルシューティングするために有用な他のいくつかのコマンドです。
• strace は、システムコールと他のプロセスにより受け取られるイベントをトレースするツールです。
• vncviewer: サーバもしくは仮想マシンにおいて実行中のVNCサーバに接続します。 yum install vnc コ
マンドを用いて vncviwer をインストールします。
• vncserver: サーバにおいてリモートのデスクトップを起動します。リモートセッション経由で virt-manager の
ようなグラフィカルユーザインタフェースを実行する能力を提供します。yum install vnc-server コマンドを
用いて vncserver をインストールします。
32.2. ログファイル
KVM はさまざまなログファイルを使用します。ログファイルはすべて、標準的な ASCII ファイルであり、テキスト
エディタを用いてアクセス可能です。
• すべてのファイルベースのイメージに対するデフォルトのディレクトリは、/var/lib/libvirt/images です。
• qemu-kvm.[PID].log は、各完全仮想化ゲストに対して、qemu-kvm プロセスにより作成されるログファイルで
す。このログファイルを使用するとき、与えられた qemu-kvm プロセスの PID を取り出さなければいけません。
これは、仮想マシンにおける qemu-kvm プロセスを分離するために、プロセスの引数を確認するための ps コ
マンドを用いることにより行います。[PID] シンボルを実際の qemu-kvm プロセスの PID で置き換えなければ
いけないことに注意してください。
仮想マシンマネージャーを用いて何かエラーに遭遇するならば、/.virt-manager ディレクトリにある virtmanager.log ファイルにおいて生成されたデータをレビューできます。仮想マシンマネージャーを起動したとき
毎回、既存のログファイルの中身が上書きされることに注意してください。システムエラーの後で仮想マシンマ
ネージャーを再起動する前に、virt-manager.log ファイルを確実にバックアップしてください。
32.3. シリアルコンソールを用いたトラブルシューティング
Linux カーネルはシリアルポートに情報を出力できます。これは、ビデオデバイスやモニタのないサーバのカー
ネルパニックやハードウェア問題をデバッグするために有用です。このセクションのサブセクションは、Fedora
仮想化カーネルとそれらの仮想ゲストを実行しているマシンに対してシリアルコンソール出力をセットアップす
ることを取り扱います。
このセクションは、完全仮想化ゲストに対してシリアルコンソール出力を有効化する方法を取り扱っています。
完全仮想化ゲストのシリアルコンソールは virsh console を用いて表示できます。
完全仮想化ゲストのシリアルコンソールはいくつかの制限があることを認識してください。現在の制限は以下を
含みます:
• 出力データは、捨てられるか、ごちゃ混ぜにされるかもしれません。
シリアルポートは、Linux において ttyS0、または Windows において COM1 と呼ばれます。
仮想オペレーティングシステムを、仮想シリアルポートに情報を出力するよう、設定しなければいけません。
完全仮想化の Linux ゲストからドメインへカーネル情報を出力するために、console=tty0
console=ttys0,115200 行を挿入することにより /boot/grub/grub.conf ファイルを修正します。
234
仮想化ログファイル
title Fedora 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
仮想テキストコンソールを表示するために virt-manager も使用できます。ゲストコンソールウィンドウにおい
て、表示メニューからシリアルコンソールを選択します。
32.4. 仮想化ログファイル
• /var/log/libvirt/qemu/GuestName.log
仮想マシンマネージャーを用いて何かエラーに遭遇するならば、/.virt-manager ディレクトリにある virtmanager.log ファイルにおいて生成されたデータをレビューできます。仮想マシンマネージャーを起動したとき
毎回、既存のログファイルの中身が上書きされることに注意してください。システムエラーの後で仮想マシンマ
ネージャーを再起動する前に、virt-manager.log ファイルを確実にバックアップしてください。
32.5. ループデバイスのエラー
ファイルベースのゲストイメージを使用する場合、設定済みのループデバイスの数量を増やさなければいけな
いかもしれません。デフォルト設定は、8つまでのループデバイスがアクティブになることを許可します。もし8より
多いファイルベースのゲスト、またはループデバイスが必要ならば、/etc/modprobe.conf で調整できる、設定
済みのループデバイスの数量を増やす必要があります。/etc/modprobe.conf を編集して、以下の行を追加し
ます:
options loop max_loop=64
This example uses 64 but you can specify another number to set the maximum loop value. You
may also have to implement loop device backed guests on your system. To employ loop device
backed guests for a para-virtualized guest, use the phy: block device or tap:aio commands. To
employ loop device backed guests for a full virtualized system, use the phy: device or file: file
commands.
32.6. BIOS における Intel VT と AMD-V の仮想化ハードウェア拡
張の有効化
このセクションは、ハードウェア仮想化拡張を識別して、無効になっている場合に BIOS でそれらを有効にする
方法を説明しています。
Intel VT 拡張は BIOS において無効にできます。特定のラップトップ製造元はそれらの CPU でデフォルトとし
て Intel VT 拡張を無効にしています。
仮想化拡張は、AMD-V に対して BIOS で無効にできません。
仮想化拡張はときどきBIOSで無効にされています(通常はラップトップ製造者により)。無効にされた仮想化拡
張を有効にするための説明は、用BIOS 用用用用 Intel VT 用 AMD-V 用用用用用用用用用用用用用用用用用を参照してください。
235
第32章 トラブルシューティング
仮想化拡張が BIOS で有効になっていることを確認します。Intel® VT や AMD-V に対する BIOS 設定は、通
常チップセットまたはプロセッサ メニューにあります。メニューの名前は、このガイドとは異なるかもしれません
が、仮想化拡張の設定はセキュリティ設定か、他の非標準的なメニュー名にあるでしょう。
手順32.1 BIOS における仮想化拡張の有効化
1. コンピュータを再起動して、システムの BIOS メニューを開きます。システムに依存して、delete キー、F1
キー、または Alt および F4 キーを押すことにより、通常は実行できます。
2.
デフォルトの復元または最適化されたデフォルトの復元を選択して、保存 & 終了を選択します。
3.
マシンの電源を切って電源供給を止めます。
4.
BIOS における仮想化拡張の有効化
注記:BIOS ステップ
以下の手順の多くは、マザーボード、プロセッサの種類、チップセットおよび OEM に依存して変わる
かもしれません。システムを設定することに関する正しい情報は、システムの付属ドキュメントを参照
してください。
a.
マシンの電源を入れて、BIOS を開きます(ステップ1のとおり)。
b.
Processor サブメニューを開きます。プロセッサ設定メニューは、Chipset、Advanced CPU
Configuration または Northbridge に隠されているかもしれません。
c.
プロセッサのブランドに依存して、Intel Virtualization Technology(Intel VTとしても知られます)ま
たは AMD-V を有効にします。仮想化拡張は、OEM とシステムの BIOS に依存して、Virtualization
Extensions、Vanderpool もしくは他のさまざまな名前でラベルされているかもしれません。
d.
オプションが利用可能ならば、Intel VT-d もしくは AMD IOMMU を有効にします。Intel VT-d と
AMD IOMMU は、PCI 用用用用用のために使用されます。
e.
保存 & 終了を選択します。
5.
マシンの電源を切って電源供給を止めます。
6.
cat /proc/cpuinfo | grep vmx svm を実行します。このコマンドが出力されれば、仮想化拡張は有効に
なっています。出力がない場合、そのシステムに仮想化拡張が存在しない、または正しい BIOS 設定が有
効でないことになります。
32.7. KVM ネットワークのパフォーマンス
デフォルトで、KVM 仮想マシンは仮想 Realtek 8139 (rtl8139) NIC (network interface controller) を割
り当てられます。
rtl8139 仮想 NIC は、ほとんどの環境で正常に機能します。しかし、このデバイスはいくつかのネットワーク(た
とえば、10 Gigabit Ethernet ネットワーク)においてパフォーマンス劣化問題を受ける可能性があります。
A workaround is to switch to a different type of virtualized NIC. For example, Intel PRO/1000
(e1000) or virtio (the para-virtualized network driver).
To switch to the e1000 driver:
1.
236
ゲストオペレーティングシステムをシャットダウンします。
KVM ネットワークのパフォーマンス
2.
virsh コマンドを用いて、ゲストの設定ファイルを編集します(ここで GUEST はゲストの名前です):
# virsh edit GUEST
virsh edit コマンドは、使用するエディタを決めるために $EDITOR シェル変数を使用します。
3.
設定のネットワークインタフェイスセクションを見つけます。このセクションは、 以下の抜粋に似ています:
<interface type='network'>
[output truncated]
<model type='rtl8139' />
</interface>
4.
Change the type attribute of the model element from 'rtl8139' to 'e1000'. This will
change the driver from the rtl8139 driver to the e1000 driver.
<interface type='network'>
[output truncated]
<model type='e1000' />
</interface>
5.
変更を保存して、テキストエディタを終了します。
6.
ゲストオペレーティングシステムを再起動します。
Alternatively, you can install new virtualized guests with a different network driver. This may be
required if you are having difficulty installing guests over a network connection. This method
requires you to have at least one virtual machine already created (possibly installed from CD or
DVD) to use as a template.
1.
Create an XML template from an existing virtual machine:
# virsh dumpxml GUEST > /tmp/guest.xml
2.
XML ファイルをコピーして編集します、また一意なフィールドを更新します: 仮想マシン名、UUID、ディス
クイメージ、MAC アドレス、その他あらゆる一意なパラメータ。UUID と MAC アドレスの 行を削除する
と、virsh が UUID と MAC アドレスを生成することに注意してください。
# cp /tmp/guest.xml /tmp/new-guest.xml
# vi /tmp/new-guest.xml
ネットワークインターフェイスのセクションに model 行を追加します:
<interface type='network'>
[output truncated]
<model type='e1000' />
</interface>
3.
新しい仮想マシンを作成します:
# virsh define /tmp/new-guest.xml
# virsh start new-guest
237
第32章 トラブルシューティング
1
The network performance should be better with the e1000 or virtio driver. (BZ用517181 )
1
https://bugzilla.redhat.com/show_bug.cgi?id=517181
238
付録A その他のリソース
仮想化と Fedora についてより詳しく学ぶために、以下のリソースを参照してください。
A.1. オンラインリソース
• http://www.libvirt.org/ は、libvirt 仮想化 API の公式ウェブサイトです。
• http://virt-manager.et.redhat.com/は、仮想マシンの管理用のグラフィカルアプリケーションである仮想マシ
ンマネージャー(virt-manager)のプロジェクトのウェブサイトです。
• オープン仮想化センター
http://www.openvirtualization.com
1
• Red Hat ドキュメント
http://www.redhat.com/docs/
• 仮想化技術概要
http://virt.kernelnewbies.org
2
• Red Hat 発展技術グループ
3
http://et.redhat.com
A.2. インストール済みドキュメント
• 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仮想
化管理ライブラリを持つインターフェイスのプログラムを作成することができるようになります。
• /usr/share/doc/python-virtinst-<version-number> — virt-install コマンドに関するドキュメ
ントを提供します。このコマンドは仮想マシン内の Fedora と Red Hat Enterprise Linux 関連のディストリ
ビューションのインストール開始を支援するものです。
• /usr/share/doc/virt-manager-<version-number> — 仮想マシンマネージャーに関するドキュメントを
提供します。仮想マシンマネージャーは仮想マシン管理用のグラフィカルツールです。
1
http://www.openvirtualization.com/
http://virt.kernelnewbies.org/
3
http://et.redhat.com/
2
239
240
用語集
この用語集はこのインストールガイドで使用されている用語を定義することを目的とします。
I/O
入力/出力(input/output)の短縮形です(発音:アイオー)。I/O という用
語はデータをコンピュータと周辺機器との間で転送する全てのプログラム、
操作、あるいはデバイスを示します。全ての転送は1つのデバイスからの出
力であり、別のデバイスへの入力となります。キーボードやマウスなどのデ
バイスは入力のみのデバイスであり、プリンター などのデバイスは出力の
みとなります。書き込み可能な CD-ROM は入力と出力両方のデバイス で
す。
Kernel SamePage Merging
The Kernel SamePage Merging (KSM) module is used by the KVM
hypervisor to allow KVM guests to share identical memory pages.
The pages shared are usually common libraries or other identical,
high-use data. KSM can increase the performance of certain
guests by keeping these libraries in cache for various guests as
well as increasing guest density.
Kernel-based Virtual
Machine
KVM (Kernel-based Virtual Machine) is a 用用用用用 solution for Linux
on AMD64 and Intel 64 hardware. VM is a Linux kernel module
built for the standard Red Hat Enterprise Linux kernel. KVM can
run multiple, unmodified virtualized guest Windows and Linux
operating systems. KVM is a hypervisor which uses the libvirt
virtualization tools (virt-manager and virsh).
KVM は Linux カーネルモジュールの集合であり、デバイス、メモリー、およ
びハイパーバイザーモジュール自身のための API 管理を管理します。仮想
化ゲストはこれらのモジュールに制御される Linux のプロセスとスレッドと
して実行 されます。
LUN
LUN (Logical Unit Number) は論理ユニット(SCSI プロトコルエンティ
ティ)に 割り当てられた番号です。
MAC アドレス
MAC (Media Access Control) アドレスはネットワークインターフェイスコ
ントローラの ハードウェアアドレスです。仮想化のコンテキストでは、MAC
アドレスは、ローカルドメイン上の 各 MAC が一意である状態で仮想ネット
ワークインターフェイス用に生成されなければなりません。
PCIパススルー
KVM ハイパーバイザーは、ホストシステムの PCI デバイスを仮想ゲストへ
接続するのをサポートします。PCIパススルーは、ゲストがタスクの範囲の
ために PCI デバイスへの排他的なアクセスを許可します。PCI パススルー
は、PCI デバイスがゲストオペレーティングシステムへと物理的に接続され
ているかのように見え、動作するのを許可します。
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 アドレスおよび仮想マシン識別
子。
241
用語集
ゲストシステム
ゲスト、仮想マシン、仮想サーバやドメインとしても知られています。
ハイパーバイザー
ハイパーバイザーは、複数のオペレーティングシステムが同じハードウェア
において実行できるように、オペレーティングシステムからハードウェアを抽
象化するソフトウェア層です。ハイパーバイザーは、他の仮想オペレーティン
グシステムがホストのハードウェアにおいて実行できるようにホストオペレー
ティングシステムにおいて実行します。
Kernel-based Virtual Machine ハイパーバイザーは Fedora で提供され
ます。
ハードウェア仮想マシン
用用用用用 を参照してください。
ベアメタル
ベアメタルという用語はコンピューターの基本的な物理アーキテクチャーを
参照します。ベアメタルでオペレーティングシステムを実行することは、物理
的なハードウェアでオペレーティングシステムの未修正バージョンを実行す
ることを参照する別の方法です。ベアメタルで実行するオペレーティングシ
ステムの例は、普通にインストールされたオペレーティングシステムです。
ホスト
ホストオペレーティングシステムが仮想ゲストを実行します。
仮想 CPU
システムは物理プロセッサのコア数に比較した数多くの仮想 CPU (VCPU)
を持ちます。仮想 CPU 数は有限であり、ゲスト仮想マシンに割り当て可能
な仮想 CPU の総数を示します。
仮想マシン
仮想マシンは、物理マシンのソフトウェア実装もしくはプログラミング言語
(たとえば、Java 実行環境や LISP )のことです。仮想化の関連における仮
想マシンは、仮想ハードウェアで稼動しているオペレーティングシステムのこ
とです。
仮想化
仮想化は、ソフトウェア(一般的に一つのシステムにおいて同時かつ他のプ
ログラムから分離されたオペレーティングシステムを実行するための幅広い
コンピュータ用語です。既存の仮想化に関する実装の多くは、ハードウェア
を仮想化するために、ハイパーバイザ(オペレーティングシステムの上位ソフ
トウェア層)を用います。ハイパーバイザは、ゲストオペレーティングシステム
に仮想ハードウェアを提供することにより、同じ物理システムにおいて複数
のオペレーティングシステムが稼動させます。仮想オペレーティングシステム
に対して、さまざまな方法があります:
• ハードウェア支援された仮想化は、KVM による完全仮想化で用いられて
いる技術です。(定義: 用用用用用)
• 準仮想化は、Linux ゲストを実行するために Xen で用いられている技術
です。(定義: 用用用用)
• ソフトウェア仮想化またはエミュレーション。ソフトウェア仮想化は、修正
されていないオペレーティングシステムを実行するために、バイナリ変換
と他のエミュレーション技術を用います。ソフトウェア仮想化はハードウェ
ア支援された仮想化や準仮想化に比べてかなり遅いです。QEMU や
BORCH の形式における、ソフトウェア仮想化は、Fedora で動作します
が、かなり遅いです。
Fedora は、ハードウェアで支援された、KVM ハイパーバイザの完全仮想
化をサポートします。
完全仮想化
242
KVM は、完全な、ハードウェア支援された仮想化を用います。完全仮想化
は、基礎となる物理システムの全体的な抽象化を提供するためにプロセッ
サーのハードウェア機能を用います、またゲストオペレーティングシステムが
実行されている新しい仮想マシンを作成します。ゲストオペレーティングシス
テムに修正は必要ありません。ゲストオペレーティングシステムやゲストのす
べてのアプリケーションは仮想環境に気がつかず、普通に動作します。準仮
想化は Linux オペレーティングシステムの修正したバージョンが必要とな
ります。
完全仮想化した
用用用用用を参照してください。
準仮想化
Para-virtualization uses a special kernel, sometimes referred to
as the Xen kernel or the kernel-xen package. Para-virtualized
guest kernels are run concurrently on the host while using the
host's libraries and devices. A para-virtualized installation can
have complete access to all devices on the system which can be
limited with security settings (SELinux and file controls). Paravirtualization is faster than full virtualization. Para-virtualization
can effectively be used for load balancing, provisioning, security
and consolidation advantages.
As of Fedora 9 a special kernel will no longer be needed. Once
this patch is accepted into the main Linux tree all Linux kernels
after that version will have para-virtualization enabled or available.
準仮想化された
用用用用 を参照してください、
準仮想化ドライバー
準仮想化ドライバーとは、完全仮想化の Linux ゲスト上で 動作するデバ
イスドライバーです。これらのドライバーは完全仮想化の ゲスト用にネット
ワークとブロックデバイスのパフォーマンスを大幅に向上します。
物理デバイス
物理デバイスパラメータはゲストが物理ディスクにアクセスするのを許可し
ます。物理デバイスは以下を含みます:
• LVM ボリューム(たとえば、/dev/VolGroup00/LogVol02)、
• ディスクパーティション(たとえば、/dev/sda5)、および
• ブロックデバイス全体(たとえば、/dev/sda)。
物理モードは、ハイパーバイザーが、デバイスの管理において柔軟性をわず
かに犠牲にする代わりに、ホストにおいてソフトウェアの余計な層を回避す
るので、最も良いパフォーマンスを提供します。
移行
マイグレーションは、仮想ゲストをあるホストから他へ移動するプロセスに対
して名づけられています。マイグレーションは、オフラインで(ゲストが停止し
てから移動します)もしくは動的に(ゲストは停止せずに移動します)実行さ
れ得ます。KVM 完全仮想化ゲストはマイグレーションされ得ます。
移行は仮想化の基幹機能です。ここではソフトウェアが完全にハードウェア
から 分離されています。移行は以下の部分で役に立ちます:
• ロードバランシング:ホストがロード超過になった時点で、ゲストは使用度
の低い別のホストへと移動されます。
• ハードウェアフェイルオーバー:ホスト上のハードウェアデバイスが起動に
失敗すると、ゲストは移動してホストが安全に停止と修理をできるように
なります。
• 節電:低使用の期間にはゲスト群は他のホスト群に分配できるため、主
ホストシステムは電力を落として、節電とコスト低減ができます。
243
用語集
• 地域的な移行:より少ない遅延のためや、重大な事態の場合にはゲスト
は他の場所に移動できます。
共有のネットワークストレージがゲストイメージの保存に使用されます。共有
ストレージ無しでは移行は不可能です。
オフライン移行はゲストを休止して、それからゲストのメモリーのイメージを
移動先のホストに移動します。ゲストは移動先ホスト上で再開始されて、移
動前の ホスト上でゲストが使用したメモリーは開放されます。
オフライン移行にかかる時間はネットワークのバンド幅と遅延により変化し
ます。 2GB のメモリーを持つゲストは、1 Gbit のイーサネットリンク上で数
秒かかるでしょう。
ライブマイグレーションは、ゲストが送信元ホストにおいて稼動し続け、ゲス
トが止まることなくメモリの移動を開始します。すべての変更されたメモリ
ページは、イメージが送られている間、変更をモニタされ、あて先に送られま
す。メモリは変更されたページで更新されます。プロセスは、ゲストに対して
許可された停止時間の最大量が、最後の数ページが転送されるために予
測された時間と同じになるまで続きます。KVM は、残り時間を見積もり、残
りページの量が仮想ゲストが停止する非常に短い時間の間に転送できるこ
とを予測できるまで、最大量のページファイルを送信元からあて先へと転送
するのを試みます。レジスタは新しいホストでロードされ、ゲストはあて先ホ
ストで停止されます。ゲストがマージできないならば(ゲストが過負荷にある
ときに起きます)、ゲストは停止され、オフラインマイグレーションが代わりに
開始されます。
ライブ移行にかかる時間はネットワークの帯域幅と遅延度と、更にはゲスト
上の 活動にも影響されます。ゲストがかなりの量の I/O 又は CPU を使用
している場合、 移行にはより時間がかかります。
244
付録B 改訂履歴
改訂 13
Wed Apr 23 2010
Curran Christopher [FAMILY Given]
[email protected]
Fedora アップデートおよび移植
245
246
付録C 奥付
このマニュアルは DocBook XML v4.3 形式で書かれています。
This book is based on the work of Jan Mark Holzer and Chris Curran.
その他の著作クレジット:
• Don Dutile は準仮想化ドライバーのセクションの技術的な編集に貢献しました。
• Barry Donahue は準仮想化ドライバーのセクションの技術的な編集に貢献しました。
• Rick Ring は仮想マシンマネージャーのセクションの技術的な編集に貢献しました。
• Michael Kearey は virsh および仮想フロッピードライブでの XML 設定ファイル使用に関するセクションの
技術的な編集に貢献しました。
• Marco Grigull はソフトウェア互換性とパフォーマンスのセクションの技術的な編集に貢献しました。
• Eugene Teo は virsh セクションでのゲスト管理の技術的な編集に貢献しました。
このマニュアルを作成した発行ツール、Publican は Jeffrey Fearn によって書かれました。
翻訳者
技術的な制限のため、このセクションにクレジットされている翻訳者は、Red Hat Enterprise Linux
Virtualization Guide と Fedora Virtualization Guide の以前のバージョンで働いていた人々です。
ガイドの最新版を翻訳した人を見つけるために、https://fedoraproject.org/wiki/
Fedora_13_Documentation_Translations_-_Contributors を訪問してください。これらの翻訳者はこのガイ
ドの以降のバージョンでクレジットされるでしょう。
• 簡体中国語
• Leah Wei Liu
• 繁体中国語
• Chester Cheng
• Terry Chuang
• 日本語
• Kiyoto Hashida, KATO Tomoyuki, Hajime Taira
• 韓国語
• Eun-ju Kim
• オランダ語
• Geert Warrink
• フランス語
• Sam Friedmann
• ドイツ語
247
付録C 奥付
• Hedda Peters
• ギリシャ語
• Nikos Charonitakis
• イタリア語
• Silvio Pierro
• Francesco Valente
• ブラジル系ポルトガル語
• Glaucia de Freitas
• Leticia de Lima
• スペイン語
• Domingo Becker
• Héctor Daniel Cabrera
• Angela Garcia
• Gladys Guerrero
• ロシア語
• Yuliya Poyarkova
248