Red Hat Enterprise Linux 6 仮想化ホスト設定およびゲストインストール

Red Hat Enterprise Linux 6
仮想化ホスト設定およびゲストインス
トールガイド
仮想環境のインストールと設定
Tahlia Richardson
Scott Radvan
Dayle Parker
Laura Bailey
Red Hat Enterprise Linux 6 仮想化ホスト設定およびゲストインストールガ
イド
仮想環境のインストールと設定
Tahlia Richardso n
Red Hat Engineering Co ntent Services
[email protected] m
Dayle Parker
Red Hat Engineering Co ntent Services
[email protected] m
Laura Bailey
Red Hat Engineering Co ntent Services
[email protected] m
Sco tt Radvan
Red Hat Engineering Co ntent Services
[email protected] m
法律上の通知
Co pyright © 20 13 Red Hat, Inc.
This do cument is licensed by Red Hat under the Creative Co mmo ns Attributio n-ShareAlike 3.0
Unpo rted License. If yo u distribute this do cument, o r a mo dified versio n o f it, yo u must pro vide
attributio n to Red Hat, Inc. and pro vide a link to the o riginal. If the do cument is mo dified, all Red
Hat trademarks must be remo ved.
Red Hat, as the licenso r o f this do cument, waives the right to enfo rce, and agrees no t to assert,
Sectio n 4 d o f CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shado wman lo go , JBo ss, MetaMatrix, Fedo ra, the Infinity
Lo go , and RHCE are trademarks o f Red Hat, Inc., registered in the United States and o ther
co untries.
Linux ® is the registered trademark o f Linus To rvalds in the United States and o ther co untries.
Java ® is a registered trademark o f Oracle and/o r its affiliates.
XFS ® is a trademark o f Silico n Graphics Internatio nal Co rp. o r its subsidiaries in the United
States and/o r o ther co untries.
MySQL ® is a registered trademark o f MySQL AB in the United States, the Euro pean Unio n and
o ther co untries.
No de.js ® is an o fficial trademark o f Jo yent. Red Hat So ftware Co llectio ns is no t fo rmally
related to o r endo rsed by the o fficial Jo yent No de.js o pen so urce o r co mmercial pro ject.
The OpenStack ® Wo rd Mark and OpenStack Lo go are either registered trademarks/service
marks o r trademarks/service marks o f the OpenStack Fo undatio n, in the United States and o ther
co untries and are used with the OpenStack Fo undatio n's permissio n. We are no t affiliated with,
endo rsed o r spo nso red by the OpenStack Fo undatio n, o r the OpenStack co mmunity.
All o ther trademarks are the pro perty o f their respective o wners.
概要
本ガイドは、KVM パッケージ、互換性、および制限について説明します。また、ホスト設定の詳
細や異なる種類のゲスト仮想マシンのインストール手順、PCI デバイス設定および SR-IOV につい
ても説明します。
目次
目次
.前書き
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4. . . . . . . . . .
⁠1. 本書の表記規則
4
⁠1.1. 書体の表記規則
4
⁠1.2. 引用文の表記規則
5
⁠1.3. 注記および警告
6
⁠2 . ヘルプの取得とフィードバックの提出
6
⁠2 .1. ヘルプが必要ですか?
⁠2 .2. フィードバックをお願いします
6
7
. . 1. 章
⁠第
. . はじめに
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8. . . . . . . . . .
⁠1.1. このガイドについて
8
⁠1.2. ドキュメントスイート
8
. . 2. 章
⁠第
. . システム要件
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1. 0. . . . . . . . . .
. . 3章
⁠第
. . . KVM
. . . . .ゲスト仮想マシンの互換性
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1. 2. . . . . . . . . .
⁠3 .1. Red Hat Enterp ris e Linux 6 におけるサポート制限
12
⁠3 .2. 対応 CPU モデル
12
. . 4. 章
⁠第
. . 仮想化の制限
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1. 6. . . . . . . . . .
⁠4 .1. KVM の制限
⁠4 .2. アプリケーションの制限
16
18
⁠4 .3. その他の制限
19
. . 5章
⁠第
. . . 仮想化パッケージのインストール
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2. 0. . . . . . . . . .
⁠5 .1. 仮想化ホストのインストールの設定
20
⁠5 .2. 既存の Red Hat Enterp ris e Linux システム上への仮想化パッケージのインストール
24
. . 6. 章
⁠第
. . ゲスト仮想マシンのインストール概要
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2. 6. . . . . . . . . .
⁠6 .1. ゲスト仮想マシンの前提条件および留意事項
26
⁠6 .2. virt-ins tall を使用したゲストの作成
⁠6 .3. virt-manag er を使用したゲスト作成
26
27
⁠6 .4. PXE を使用したゲスト仮想マシンのインストール
34
. . 7. 章
⁠第
. . Red
. . . . Hat
. . . . Ent
. . . erprise
. . . . . . .Linux
. . . . . 6. .ホスト上での
. . . . . . . . . . .Red
. . . .Hat
. . . Ent
. . . erprise
. . . . . . .Linux
. . . . . 6. .ゲスト仮想マシンのインス
..............................
トール
41
⁠7 .1. ローカルのインストールメディアを使用した Red Hat Enterp ris e Linux 6 ゲストの作成
41
⁠7 .2. ネットワークインストールツリーを使用した Red Hat Enterp ris e Linux 6 ゲストの作成
⁠7 .3. PXE を使用した Red Hat Enterp ris e Linux 6 ゲストの作成
52
55
. . 8. 章
⁠第
. . 他のプラットフォーム上での
. . . . . . . . . . . . . . . . . . . . . . . Red
. . . . Hat
. . . .Ent
. . .erprise
. . . . . . Linux
. . . . . .の仮想化
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
...........
⁠8 .1. VMware ESX
59
⁠8 .2. Hyp er-V
59
. . 9. 章
⁠第
. . 完全仮想化
. . . . . . . . . Windows
. . . . . . . . .ゲストのインストール
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6. 1. . . . . . . . . .
⁠9 .1. virt-ins tall を使用したゲストの作成
61
. . 1. 0. 章
⁠第
. . .KVM
. . . .準仮想化
. . . . . . . (virt
. . . .io)
. . ドライバー
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6. 3. . . . . . . . . .
⁠10 .1. KVM Wind o ws virtio ドライバーのインストール
63
⁠10 .2. インストール済みの Wind o ws ゲスト仮想マシンへのドライバーのインストール
64
⁠10 .3. Wind o ws インストール中のドライバーのインストール
74
⁠10 .4. Red Hat Enterp ris e Linux 3.9 ゲストでの virtio ドライバーの使用
⁠10 .5. 既存デバイスでの KVM virtio ドライバーの使用
⁠10 .6 . KVM virtio ドライバーを使用した新規デバイスの作成
83
85
86
1
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
. . 1. 1. 章
⁠第
. . .ネットワークの設定
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9. 1. . . . . . . . . .
⁠11.1. lib virt による Netwo rk Ad d res s Trans latio n (NAT)
91
⁠11.2. vho s t-net の無効化
92
⁠11.3. lib virt を使用したブリッジネットワーキング
93
. . 1. 2. 章
⁠第
. . .PCI
. . .デバイス割り当て
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9. 4. . . . . . . . . .
⁠12.1. virs h を使用した PCI デバイスの割り当て
96
⁠12.2. virt-manag er を使用した PCI デバイスの割り当て
98
⁠12.3. virt-ins tall を使用した PCI デバイスの割り当て
10 1
⁠12.4. 割り当てた PCI デバイスの切り離し
10 3
. . 1. 3章
⁠第
. . . SR. . . .IO
. .V. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.0. 6. . . . . . . . . .
⁠13.1. はじめに
10 6
⁠13.2. SR-IO V の使用
10 7
⁠13.3. SR-IO V のトラブルシューティング
112
. . 1. 4. 章
⁠第
. . .KVM
. . . .ゲストのタイミング管理
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1. 1. 3. . . . . . . . . .
⁠14.1. 不変タイムスタンプカウンター (TSC)
⁠14.1.1. 不変 TSC を搭載していないホストの設定
⁠14.2. Red Hat Enterp ris e Linux ゲストで必要なパラメーター
113
114
114
⁠14.3. Wind o ws Server 20 0 3 および Wind o ws XP ゲストでのリアルタイムクロックの使用
115
⁠14.4. Wind o ws Server 20 0 8 、Wind o ws Server 20 0 8 R2、および Wind o ws 7 ゲストでのリアルタイムク
ロックの使用
116
⁠14.5. スチールタイムアカウンティング
116
. . 1. 5章
⁠第
. . . libvirt
. . . . . . を使用したネットワークブート
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.1. 8. . . . . . . . . .
⁠15.1. ブートサーバーの準備
118
⁠15.1.1. プライベート lib virt ネットワーク上での PXE ブートサーバー設定
⁠15.2. PXE を使用したゲストの起動
⁠15.2.1. ブリッジネットワークの使用
⁠15.2.2. プライベート lib virt ネットワークの使用
118
118
119
119
. . 1. 6. 章
⁠第
. . .Q. EMU
. . . . .ゲストエージェント
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.2. 1. . . . . . . . . .
⁠16 .1. ゲストエージェントのインストールおよび有効化
⁠16 .2. ゲストエージェントとホスト間の通信設定
121
121
. . . .KVM
Net
. . . .ドライバーパラメーター
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.2. 2. . . . . . . . . .
⁠A .1. 設定可能な NetKVM パラメーター
122
.一般的な
. . . . . . .libvirt
. . . . . エラーおよびトラブルシューティング
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1.2. 6. . . . . . . . . .
⁠B .1. lib virtd がスタート失敗
128
⁠B .2. URI がハイパーバイザー接続に失敗する
⁠B .2.1. CA 証明書を読み込めない
⁠B .2.2. Failed to c o nnec t s o c ket ... : Permis s io n d enied
129
129
130
⁠ .2.3. 他の接続エラー
B
131
⁠B .3. ゲスト仮想マシンがスタートできずエラーが発生: internal erro r g ues t CPU is no t c o mp atib le with
ho s t CPU
131
2
⁠B .4. ゲストがスタートに失敗しエラーが発生: mo nito r s o c ket d id no t s ho w up
132
⁠B .5. Internal erro r c anno t find c harac ter d evic e (null)
⁠B .6 . ゲスト仮想マシンの起動がストールしエラーが発生: No b o o t d evic e
133
133
⁠B .7. Virtual netwo rk d efault has no t b een s tarted
⁠B .8 . ゲスト上の PXE ブート (または DHCP ) が失敗
135
136
⁠B .9 . ゲストは外部ネットワークにアクセスできるが、mac vtap 使用時にはホストにアクセスできない
139
⁠B .10 . Co uld no t ad d rule to fixup DHCP res p o ns e c hec ks ums o n netwo rk ' d efault'
⁠B .11. Unab le to ad d b rid g e b r0 p o rt vnet0 : No s uc h d evic e
141
141
⁠B .12. ゲストがスタートできずエラーが発生: warning : c o uld no t o p en /d ev/net/tun
142
目次
⁠B .12. ゲストがスタートできずエラーが発生: warning : c o uld no t o p en /d ev/net/tun
142
⁠B .13. マイグレーションに失敗しエラーが発生 Erro r: unab le to res o lve ad d res s
144
⁠B .14. マイグレーションに失敗しエラーが発生: Unab le to allo w ac c es s fo r d is k p ath: No s uc h file o r
d irec to ry
145
⁠B .15. lib virtd のスタート時にゲスト仮想マシンが見当たらない
147
⁠B .16 . Unab le to c o nnec t to s erver at ' ho s t:16 50 9 ' : Co nnec tio n refus ed ... erro r: failed to c o nnec t to
the hyp ervis o r
148
⁠B .17. 一般的な XML エラー
⁠B .17.1. ドメイン定義の編集
149
149
⁠B .17.2. XML 構文エラー
150
⁠B .17.2.1. ドキュメント内の不要な <
⁠B .17.2.2. 未終了の属性
151
151
⁠B .17.2.3. 開始および終了タグのミスマッチ
152
⁠B .17.2.4. よくあるタグのエラー
⁠B .17.3. 論理および設定エラー
⁠B .17.3.1. 部分的な消滅
⁠B .17.3.2. ドライブデバイスの種類の誤り
152
153
153
154
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1. 55
改訂履歴
...........
3
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
前書き
1. 本書の表記規則
本ガイドでは、一部の単語や語句を強調して、特定の情報に対する読者の注意を促すために、以下のような
表記規則を採用しています。
1.1. 書体の表記規則
本ガイドでは、特定の単語や語句に対する注意を促すために、4 つの書体表記規則を採用しています。これ
らの表記規則および適用される状況は、以下のとおりです。
太字の等幅フォント
シェルコマンド、ファイル名、パスなど、システムへの入力を強調するために使用します。また、キー名や
キーの組み合わせを強調するのにも使用します。以下が例となります。
作業ディレクトリ内の my_next_bestsel l i ng _no vel というファイルの内容を表示す
るには、シェルプロンプトで cat my_next_bestsel l i ng _no vel というコマンドを
入力して Enter キーを押し、そのコマンドを実行します。
上記の例には、ファイル名、シェルコマンド、キー名が含まれており、すべて太字の等幅フォントで表示さ
れていますが、文脈で区別することができます。
キーの組み合わせは、プラス記号 (+) で各キーがつながれているので、個別のキーと区別することができま
す。以下が例となります。
Enter を押してコマンドを実行します。
C trl +Al t+F2 を押して仮想ターミナルに切り替えます。
第 1 の例では、押すべき特定のキー名が強調されています。第 2 の例では、3 つのキーを同時に押す、キー
の組み合わせが強調されています。
ソースコードを記載する場合、その段落で言及されるクラス名、メソッド、関数、変数名、戻り値は上記の
ように 太字の等幅フォント で表示されます。以下が例となります。
ファイル関連のクラスには、fi l esystem (ファイルシステム)、fi l e (ファイル)、d i r
(ディレクトリ) などがあります。各クラスにそれぞれ独自のパーミッションセットが関連
付けられています。
太字の可変幅フォント
この書体は、アプリケーション名、ダイアログボックスのテキスト、ラベル付きボタン、チェックボック
ス/ラジオボタンのラベル、メニュータイトル、サブメニュータイトルなど、システムで表示される単語や
語句であることを示します。以下が例となります。
メインメニューバーから システム → 設定 → マウス の順で選択し、マウスの設定 を起動し
ます。全般 タブで 左利き のラジオボタンを選択して 閉じる をクリックし、マウスの主
ボタンを左から右へ切り替えます (左利きのユーザーが使用するのに適切な設定に変更しま
す)。
g ed it ファイルに特殊文字を入力するには、メインのメニューバーからアプリケーション
→ アクセサリ → 文字マップ の順に選択します。次に 文字マップ のメニューバーから 検
索 → 検索… の順に選択して 検索 フィールドに文字名を入力し、次を検索 をクリックしま
す。検索対象の文字が 文字テーブル に強調表示されます。その文字をダブルクリックし
4
前書き
て コピーする文字列 のフィールドに表示されたら、コピー ボタンをクリックします。こ
の後に編集中のドキュメントに戻り、g ed it のメニューバーから 編集 → 貼り付け の順で
選択します。
上記のテキストには、アプリケーション名、システム全体のメニュー名と項目、アプリケーション固有のメ
ニュー名、GUI インターフェースで使用されているボタンおよびテキストが含まれており、これらはすべ
て、太字の可変幅フォントで表示されていますが、文脈で区別することができます。
太字斜体の等幅フォント または 太字斜体の可変幅フォント
太字の等幅フォントおよび太字の可変幅フォントに斜体を使用した場合には、いずれも置き換え可能な可変
テキストであることを意味します。斜体は、記載されている通りには入力しないテキスト、あるいは状況に
よって変化するテキストを示します。以下が例となります。
ssh を使用してリモートマシンに接続するには、シェルプロンプトで ssh
username@ domain.name と入力します。リモートマシンが exampl e. co m で、そのマ
シン上のユーザー名が john である場合には、ssh jo hn@ exampl e. co m と入力してく
ださい。
mo unt -o remo unt file-system のコマンドは、指定したファイルシステムを再マ
ウントします。たとえば、/ho me ファイルシステムを再マウントするコマンドはmo unt
-o remo unt /ho me となります。
現在インストール済みのパッケージのバージョンを確認するには、rpm -q package の
コマンドを使用します。その結果、次のような出力が返されます: package-versionrelease
ユーザー名、ドメイン名、ファイルシステム、パッケージ、バージョン、およびリリースが太字のイタ
リック体で表示されている点に注意してください。これらの語句はプレースホルダーで、コマンドを発行す
る際に入力するテキストまたはシステムによって表示されるテキストのいずれかです。
斜体は、著作物のタイトルを表すという標準的な用途の他に、重要な用語の初出時にも使用されます。以下
が例となります。
Publican は DocBook の出版システムです。
1.2. 引用文の表記規則
端末の出力とソースコードは、周囲のテキストとは視覚的に区切られて表示されます。
端末に送信される出力は、ローマン体の等幅フォント を使用して以下のように表示されます。
books
books_tests
Desktop
Desktop1
documentation drafts mss
downloads
images notes
photos
scripts
stuff
svgs
svn
ソースコードの表示にも ローマン体の等幅フォント が使用されますが、以下のような構文強調表示が追
加されます。
​static int kvm_vm_ioctl_deassign_device(struct kvm *kvm,
​
struct kvm_assigned_pci_dev *assigned_dev)
​
{
​
int r = 0;
​
struct kvm_assigned_dev_kernel *match;
​
mutex_lock(& kvm->lock);
​
match = kvm_find_assigned_dev(& kvm->arch.assigned_dev_head,
5
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
​
assigned_dev->assigned_dev_id);
if (!match) {
printk(KERN_INFO "%s: device hasn't been assigned
​
​
before, "
​
"so cannot be deassigned\n", __func__);
r = -EINVAL;
goto out;
​
​
​
}
​
kvm_deassign_device(kvm, match);
​
kvm_free_assigned_device(kvm, match);
​o ut:
​
mutex_unlock(& kvm->lock);
return r;
​
​}
1.3. 注記および警告
本ガイドでは、見落としがちな情報に注意を促すために、次にあげる 3 つの視覚的スタイルを使用していま
す。
注記
注記には、対象のタスクに関するヒント、ショートカット、その他のアプローチなどを記載してい
ます。注記を無視しても、悪影響はありませんが、作業を効率的に行うためのコツを見逃してしまう
可能性があります。
重要
重要の欄には、現行セッションのみに適用される設定の変更や、更新を適用するのに再起動が必要
なサービスなど、見落としがちな情報を記載しています。「重要」と記載された事項を無視しても、
データ損失などには至りませんが、作業が思ったようにスムーズに進まなくなる可能性があります。
警告
警告は、無視しないでください。警告を無視すると、データ損失が発生する可能性が非常に高くなり
ます。
2. ヘルプの取得とフィードバックの提出
2.1. ヘルプが必要ですか?
本文に説明してある手順で問題に遭遇した場合は、Red Hat カスタマーポータル
(http://access.redhat.com)をご覧ください。カスタマーポータルでは以下を行うことができます。
6
前書き
Red Hat 製品に関する技術的なサポートの記載をナレッジベースで検索、閲覧することができます。
サポートケースを Red Hat グローバルサポートサービス(GSS)に提出することができます。
他の製品ドキュメントを参照することができます。
また、Red Hat は Red Hat のソフトウェアやテクノロジーに関するディスカッションの場として多くの
メーリングリストをホストしています。公開されているメーリングリストについて
はhttps://www.redhat.com/mailman/listinfoで一覧を参照してください。メーリングリストをサブスクライ
ブする、またはメーリングリストのアーカイブを参照する場合はそのメーリングリスト名をクリックしま
す。
2.2. フィードバックをお願いします
本文に誤植を見つけられた場合や本文に関する改善案をお持ちの場合はぜひお知らせください。Bugzilla
(http://bugzilla.redhat.com/)にて、該当する製品R ed H at En t erp rise Lin u x 6 .に対しバグ報告をお願い
いたします。
バグ報告を提出される場合は、ドキュメントの識別子となるdocVirtualization_Host_Configuration_and_Guest_Installation_Guiを忘れずに添えてください。
ドキュメントに関する改善のご意見については、できるだけ具体的にお願いいたします。誤りを発見された
場合は、セクション番号および該当部分の前後の文章も含めてご報告頂くと照合が容易になります。
7
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
第1章 はじめに
1.1. このガイドについて
このガイドは、Red Hat Enterprise Linux 仮想化ホスト上における仮想化ソフトウェアのインストールおよ
びゲストマシンの設定に関する情報を提供します。
このガイドの初めの部分では、Red Hat Enterprise Linux ホストマシンによる仮想化のデプロイを可能とす
るための前提条件を説明します。システム要件や互換ハードウェア、サポート、製品の制限が詳細に説明さ
れています。 必須およびオプション仮想化パッケージを含む基本的なホスト設定は、5章仮想化パッケージのインストー
ル で説明されています。
ゲスト仮想マシンのインストールは、6章ゲスト仮想マシンのインストール概要以降で詳しく説明されてお
り、完全仮想化の Red Hat Enterprise Linux ゲストおよび virt-manager と virsh を使用した Windows 準
仮想化ゲストのインストール手順が示されています。
ネットワーキングや PCI デバイス設定、SR-IOV、KVM ゲストのタイミング管理、libvirt および SR-IOV の
トラブルシューティングのヘルプに関する詳細情報は、このガイドの後半にあります。
注記
本書では、仮想化ホスト設定およびゲストインストールについての手引きを提供しています。システ
ム設定のより詳細な情報については、Red Hat Enterprise Linux 仮想化管理ガイド を参照してくださ
い。
1.2. ドキュメントスイート
Red Hat では、様々な仮想化製品のドキュメントを豊富に提供しています。Red Hat Enterprise Linux およ
び同梱の仮想化製品のドキュメントには、以下のようなガイドが含まれます。
Red Hat Enterprise Linux 仮想化スタートガイド : 仮想化の概念、利点、ツールについて概説し、Red
Hat の仮想化関連ドキュメントおよび製品の概要を記載しています。
Red Hat Enterprise Linux 仮想化ホスト設定およびゲストインストールガイド(本書): 仮想化ホスト上に
おける仮想化ソフトウェアのインストールおよびゲストマシンの設定について記載しています。
Red Hat Enterprise Linux 仮想化管理ガイド: virt-manager または virsh のいずれかを主要設定ツールと
して使用した、ホスト、ネットワーク、ストレージ、デバイスの管理、およびゲスト管理について説明
します。このガイドには、libvirt および QEMU についての参考情報と、トラブルシューティング情報も
記載しています。
Red Hat Enterprise Linux 仮想化セキュリティーガイド: Red Hat が提供する仮想化セキュリティーのテ
クノロジーについての概要を記載しています。また、仮想化環境内のホスト、ゲスト、共有インフラス
トラクチャーおよびリソースのセキュリティーを保護するための推奨事項も記載しています。
Red Hat Enterprise Linux 仮想化のチューニングと最適化ガイド: システムおよびゲスト仮想マシンで、
仮想化パフォーマンスの機能とオプションを最大限に活用するためのヒント、コツ、アドバイスを記載
しています。
Red Hat Enterprise Linux V2V ガイド には、KVM、Xen、および VMware ESX/ESX(i) ハイパーバイザー
から Red Hat Enterprise Virtualization および libvirt で管理されている KVM への仮想マシンのイン
ポートについて記載しています。
8
⁠第1 章 はじめに
注記
これらのガイドはすべて、Red Hat カスタマーポータル
(https://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/) からご利用いただけ
ます。
9
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
第2章 システム要件
この章では、Red Hat Enterprise Linux 6 上の VM と呼ばれる仮想マシンを正常に実行するためのシステム
要件を示しています。仮想化は、Intel 64 および AMD 64 アーキテクチャー上の Red Hat Enterprise Linux
6 で利用可能です。
KVM ハイパーバイザーは、Red Hat Enterprise Linux 6 で提供されています。
仮想化パッケージのインストールに関する詳細は、5章仮想化パッケージのインストール を参照してくださ
い。
最小システム要件
6 GB の空きディスク領域
2 GB の RAM
推奨されるシステム要件
ゲスト仮想マシン内の最大数の仮想化 CPU に 1 つのプロセッサーコアまたはハイパースレッド、およ
びホストに 1 つのプロセッサーコアまたはハイパースレッド
2 GB の RAM と仮想マシン用に別の RAM
ホスト用に 6 GB のディスク領域、および各仮想マシン用に必要なディスク領域
ほとんどのゲストオペレーティングシステムは少なくとも 6GB のディスク領域を必要としますが、各
ゲストに必要な追加のストレージ領域はイメージフォーマットによって異なります。
raw イメージを使用するゲスト仮想マシンでは、ゲストが必要とする領域の合計 (to tal fo r raw
fo rmat) は、ゲストの raw イメージファイル (i mag es) で必要となる領域、ホストオペレーティン
グシステム (ho st) に必要な 6GB の領域、ゲストが必要とする swap 領域 (swap) の合計と同等もし
くはそれ以上となります。
式2.1 raw イメージを使用するゲスト仮想マシンで必要な領域の計算
total for raw format = images + host + swap
qcow イメージの場合、qcow および qcow2 イメージは必要に応じて拡大することから、ゲストの予測
される最大ストレージ要件 (to tal fo r q co w fo rmat) も計算する必要があります。この拡大を可
能にするには、まずゲストの予測される最大ストレージ要件 (expected maxi mum g uest
sto rag e) を 1.01 倍にし、これにホスト (ho st) が必要とする領域と必要な swap 領域 (swap) を加
えます。
式2.2 q co w イメージを使用するゲスト仮想マシンで必要な領域の計算
total for qcow format = (expected maximum guest storage * 1.01) + host + swap
ゲスト仮想マシン要件は、Red Hat Enterprise Linux 6 仮想化管理ガイドの第 6 章 「KVM でオーバーコミッ
トを行う」で詳しく説明されています。
10
⁠第2 章 システム要件
swap 領域の計算
swap 領域を使用することで、利用可能な物理メモリー以外の新たなメモリーを提供することが可能になり
ます。メモリーのパフォーマンス速度を上げるために使用率の低いメモリーをハードドライブにスワップす
る際に使用するのが swap パーティションです。swap パーティションのデフォルトのサイズはホストの
物理 RAM から計算します。
Red Hat ナレッジベースには、swap パーティションの適切なサイズを安全かつ効率的に確定する方法につ
いて記載した記事が掲載されています: https://access.redhat.com/site/solutions/15244
K VM 要件
KVM ハイパーバイザーには、以下が必要です。
x86 ベースシステム向けの Intel VT-x および Intel 64 拡張機能を備えた Intel プロセッサー
AMD -V および AMD 64 拡張機能を備えた AMD プロセッサー
ご使用のプロセッサーが仮想化拡張機能を備えているかどうかを判別するには、Red Hat Enterprise Linux 6
仮想化管理ガイド を参照してください。
ストレージ対応
ゲスト仮想マシンのストレージ方法は、以下の通りです。
ローカルストレージ上のファイル
物理ディスクパーティション
ローカル接続の物理 LUN
LVM パーティション
NFS 共有ファイルシステム
iSCSI
クラスター化した GFS2 ファイルシステム
ファイバーチャネルベースの LUN
イーサネット経由のファイバーチャネル (FCoE)
11
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
第3章 KVM ゲスト仮想マシンの互換性
ご使用のプロセッサーが仮想化拡張に対応しているかどうかの確認方法および仮想化拡張の有効化に関する
情報については、Red Hat Enterprise Linux 仮想化管理ガイド を参照してください。
3.1. Red Hat Ent erprise Linux 6 におけるサポート制限
Red Hat Enterprise Linux 6 サーバーには、サポートに関する制限がいくつかあります。
Red Hat Enterprise Linux のプロセッサーおよびメモリー容量の制限については、以下のサイトで説明され
ています。
ホストシステムについては http://www.redhat.com/resourcelibrary/articles/articles-red-hatenterprise-linux-6-technology-capabilities-and-limits を参照してください。
ハイパーバイザーについては、http://www.redhat.com/resourcelibrary/articles/virtualization-limitsrhel-hypervisors を参照してください。
注記
Red Hat Enterprise Linux 6.5 は、1 つの KVM ゲストあたり 4TiB のメモリーをサポートするよ
うになりました。
サポートされるオペレーティングシステムとホストおよびゲストの組み合わせの詳細な対応表については、
以下のサイトを参照してください。
http://www.redhat.com/resourcelibrary/articles/enterprise-linux-virtualization-support
3.2. 対応 CPU モデル
それぞれのハイパーバイザーには、ゲストにデフォルトで表示する CPU 機能に関して独自のポリシーがあ
ります。QEMU/KVM がゲストに表示する CPU 機能のセットはゲスト仮想マシン設定で選択される CPU モ
デルによって異なります。qemu32 と qemu64 は基本的な CPU モデルですが、他にも (追加の機能と共に)
使用できる CPU モデルがあります。
Red Hat Enterprise Linux 6 は以下のQEMU CPU モデル定義の使用に対応しています。
​< !-- This is only a partial file, only containing the CPU models. The XML
file has more information (including supported features per model) which
you can see when you open the file yourself -->
​< cpus>
​ <arch name='x86'>
​. ..
​
​
<!-- Intel-based QEMU generic CPU models -->
<model name='pentium'>
<model name='486'/>
</model>
​
<model name='pentium2'>
​
​
12
​
⁠第3章 KVM ゲスト仮想マシンの互換性
<model name='pentium'/>
</model>
​
​
<model name='pentium3'>
<model name='pentium2'/>
</model>
​
​
​
​
​
<model name='pentiumpro'>
</model>
​
​
​
​
<model name='coreduo'>
<model name='pentiumpro'/>
<vendor name='Intel'/>
</model>
​
​
​
<model name='n270'>
<model name='coreduo'/>
</model>
<model name='core2duo'>
<model name='n270'/>
</model>
​
​
​
<!-- Generic QEMU CPU models -->
<model name='qemu32'>
<model name='pentiumpro'/>
</model>
​
​
​
​
<model name='kvm32'>
<model name='qemu32'/>
</model>
​
​
​
​
​
​
<model name='cpu64-rhel5'>
<model name='kvm32'/>
</model>
<model name='cpu64-rhel6'>
<model name='cpu64-rhel5'/>
</model>
​
​
​
​
​
​
<model name='kvm64'>
<model name='cpu64-rhel5'/>
</model>
<model name='qemu64'>
<model name='kvm64'/>
</model>
​
​
​
<!-- Intel CPU models -->
<model name='Conroe'>
<model name='pentiumpro'/>
<vendor name='Intel'/>
</model>
​
​
​
​
​
​
<model name='Penryn'>
<model name='Conroe'/>
13
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
​
</model>
​
<model name='Nehalem'>
<model name='Penryn'/>
</model>
​
​
​
<model name='Westmere'>
<model name='Nehalem'/>
<feature name='aes'/>
</model>
​
​
​
​
<model name='SandyBridge'>
<model name='Westmere'/>
</model>
​
​
​
<model name='Haswell'>
<model name='SandyBridge'/>
</model>
​
​
​
<!-- AMD CPUs -->
<model name='athlon'>
<model name='pentiumpro'/>
<vendor name='AMD'/>
</model>
​
​
​
​
​
<model name='phenom'>
<model name='cpu64-rhel5'/>
<vendor name='AMD'/>
</model>
​
​
​
​
<model name='Opteron_G1'>
<model name='cpu64-rhel5'/>
<vendor name='AMD'/>
</model>
​
​
​
​
<model name='Opteron_G2'>
<model name='Opteron_G1'/>
</model>
​
​
​
<model name='Opteron_G3'>
<model name='Opteron_G2'/>
</model>
​
​
​
<model name='Opteron_G4'>
<model name='Opteron_G2'/>
</model>
​
​
​
<model name='Opteron_G5'>
<model name='Opteron_G4'/>
​
</model>
​ </arch>
​< /cpus>
​
14
⁠第3章 KVM ゲスト仮想マシンの互換性
注記
対応 CPU モデルの詳細リストと認識される CPUID フラグは、q emu-kvm -cpu ? コマンドを使
用して確認することもできます。
15
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
第4章 仮想化の制限
この章では、Red Hat Enterprise Linux 6 の仮想化パッケージにおける追加サポートと製品の制限を説明し
ています。
4 .1. KVM の制限
KVM ハイパーバイザーには、以下の制限が適用されます。
ゲストあたりの最大 vC PU 数
ゲストあたりのサポートされる仮想 CPU の最大数は、Red Hat Enterprise Linux 6 のどのマイ
ナーバージョンをホストマシンとして使用しているかによって異なります。6.0 のリリースでは
最大 64 に対応し、6.3 は最大 160 に対応しています。現在、6.6 のリリースはゲストあたり最大
160 の仮想 CPU に対応しています。
不変タイムスタンプカウンター ( T SC ) ビット
不変 TSC を搭載してないシステムは、追加設定が必要です。不変 TSC が搭載されているかどう
かを確認し、関連する問題を解決するための設定手順についての詳細は、14章KVM ゲストのタイ
ミング管理 を参照してください。
メモリーのオーバーコミット
KVM はメモリーのオーバーコミットをサポートし、ゲスト仮想マシンのメモリーを swap に保存
できます。スワップが頻繁になされると仮想マシンの実行速度が遅くなります。swap パーティ
ションのサイズを安全かつ効率的に決定する方法についての記事は、Red Hat ナレッジベースの
https://access.redhat.com/site/solutions/15244 に記載されています。メモリーのオーバーコ
ミットに KSM が使用される場合は、swap サイズがこの記事で説明されている推奨サイズにした
がっていることを確認してください。
重要
デバイス割り当てが使用されている場合、D MA を割り当てデバイスで有効にするにはすべ
ての仮想マシンメモリーが静的に事前割り当てされる必要があります。このため、メモ
リーのオーバーコミットはデバイス割り当てではサポートされません。
C PU のオーバーコミット
1 つの物理プロセッサーコアあたりに 11 個以上の仮想 CPU を割り当てることは推奨されませ
ん。CPU オーバーコミット率の決定にはキャパシティープラニングツールの使用が推奨されま
す。割合はそれぞれのワークロードによって大きく異なるため、理想的な割合を予想することは
困難です。たとえば、あるユースケースではゲスト仮想マシンが CPU を 100% 消費しますが、
別のケースでは複数のゲストが完全にアイドル状態になる場合もあります。
Red Hat は、システム上に存在する物理コアの全体数より多くの vCPU を単一ゲストで実行する
ことをサポートしていません。ハイパースレッドはコアとみなすことはできますが、そのパ
フォーマンスはシナリオによって異なり、通常のコアと同等のパフォーマンスは期待することは
できません。
CPU のオーバーコミットに関するヒントや推奨事項については、Red Hat Enterprise Linux 仮想
化管理ガイド を参照してください。
仮想化 SC SI デバイス
16
⁠第4 章 仮想化の制限
Red Hat Enterprise Linux の KVM では、SCSI エミュレーションはサポートされていません。
仮想化 ID E デバイス
KVM では、ゲスト仮想マシン 1 台あたりの仮想化 (エミュレートされた) ID E デバイスは最大 4
つまでに制限されています。
PC I デバイス
Red Hat Enterprise Linux 6 は、仮想マシン 1 台あたり 32 の PCI デバイススロットと、デバイ
ススロット 1 つあたり 8 つの PCI 機能をサポートします。つまりマルチ機能が有効化されると、
理論上はゲストあたり最大 256 の PCI 機能が提供されることになります。
しかし、この理論上の最大数は以下の制限を受けます。
それぞれの仮想マシンがサポートするのは、最大 8 つの割り当てデバイス機能です。
4 つの PCI デバイススロットは、デフォルトで 5 つのエミュレートされたデバイスに設定さ
れています。しかしユーザーは、ゲストオペレーティングシステムの操作に不要な場合、デ
フォルト設定のエミュレートされたデバイスの内 2 つを明示的に削除できます (スロット 2
のビデオアダプターデバイスと、通常はスロット 3 である一番下にある利用可能なスロット
のメモリーバルーンドライバーデバイス)。これにより、ユーザーは仮想マシン 1 台あたり最
大 30 の PCI デバイススロット機能のサポートを受けられます。
さらに PCI デバイス割り当てには、以下の制限が適用されます。
PCI デバイス割り当て (PCI デバイスの仮想マシンへのアタッチ) で PCI-e デバイスのデバイ
ス割り当てを有効にするには、ホストシステムが AMD IOMMU または Intel VT-d サポートを
備えている必要があります。
パラレル/レガシー PCI では、PCI ブリッジ内側の単一デバイスのみがサポートされていま
す。
ルート非対応の PCIe スイッチで接続されている複数 PCIe エンドポイントは、PCIe スイッ
チの PCIe ブリッジ内での ACS サポートを必要とします。この制限を無効にするに
は、/etc/l i bvi rt/q emu. co nf ファイルを編集して、以下の行を挿入します。
relaxed_acs_check=1
Red Hat Enterprise Linux 6 では、ゲストデバイスドライバーによる PCI 設定領域へのアク
セスは制限されています。この制限により、PCI 設定領域に依存するドライバーの設定が失敗
する場合があります。
Red Hat Enterprise Linux 6.2 は、割り込み再マッピングを PCI デバイス割り当て要件とし
て導入します。プラットフォームが割り込み再マッピングをサポートしない場合、コマンド
ラインプロンプトで root ユーザーとして以下のコマンドを実行して、このサポートの KVM
チェックを回避します。
# echo 1 >
/sys/module/kvm/parameters/allow_unsafe_assigned_interrupts
マイグレーションの制限
仮想マシンの排他的使用において、デバイス割り当ては仮想マシンに公開されている物理デバイ
スを参照します。デバイス割り当ては、仮想マシンが実行されている特定のホスト上のハード
ウェアを使用するため、デバイス割り当ての使用中は、マイグレーションおよび保存/復元がサ
ポートされません。ゲストオペレーティングシステムがホットプラグをサポートしている場合
17
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
は、マイグレーションまたは保存/復元操作前に割り当てデバイスを削除してこの機能を有効にで
きます。
ライブマイグレーションは、CPU タイプが同一のホスト間でのみ可能です (つまり、Intel から
Intel 、または AMD から AMD のみ)。
ライブマイグレーションでは o n または o ff で、両方のホストが No eXecution (NX) ビットの
同一値セットを備えている必要があります。
マイグレーションが動作するには、書き込みモードで開かれたすべてのブロックデバイスで
cache= no ne が特定される必要があります。
警告
cache= no ne オプションを加えない場合、ディスクの破損につながる恐れがあります。
ストレージの制限
ディスク全体やブロックデバイス全体 (/d ev/sd b など) への書き込みアクセスをゲスト仮想マ
シンに与えることには、リスクが伴います。ゲスト仮想マシンにブロックデバイス全体へのアク
セスがあると、ホストマシンとボリュームラベルやパーティションテーブルを共有できるように
なります。ホストシステムのパーティション認識コードにバグがあった場合、セキュリティーリ
スクを発生させることになります。ホストマシンがゲスト仮想マシンに割り当てたデバイスを無
視するように設定することで、このリスクを回避します。
警告
ストレージ制限に従わない場合、セキュリティーリスクにつながる恐れがあります。
SR - IO V の制限
SR-IOV は、以下のデバイスとのみ完全なテストを行っています。 (他の SR-IOV デバイスは機能
する可能性がありますが、リリース時にはテストを実施していません)
Intel® 82576NS Gigabit Ethernet Controller (i g b ドライバー)
Intel® 82576EB Gigabit Ethernet Controller (i g b ドライバー)
Intel® 82599ES 10 Gigabit Ethernet Controller (i xg be ドライバー)
Intel® 82599EB 10 Gigabit Ethernet Controller (i xg be ドライバー)
コアダンプの制限
コアダンプは現在、マイグレーションの場合と同じインフラストラクチャーに実装されているの
で、デバイス割り当ての使用中はサポートされません。
4 .2. アプリケーションの制限
仮想化には、特定の種類のアプリケーションを不安定にする側面があります。
I/O スループット要件の高いアプリケーションでは、完全仮想化ゲスト用の準仮想化ドライバーの使用をお
勧めします。準仮想化ドライバーがないと、特定のアプリケーションは I/O 負荷が高い場合に予期できない
動きをする場合があります。
18
⁠第4 章 仮想化の制限
以下のアプリケーションは、I/O 要件が高い場合に回避することをお勧めします。
kd u mp サーバー
n et d u mp サーバー
I/O を過剰に使用したり、リアルタイムのパフォーマンスが要求されるアプリケーションやツールは、慎重
に評価することをお勧めします。I/O パフォーマンスを高めるには、準仮想化ドライバーか PCI デバイス割
り当てを検討してください。完全仮想化ゲスト用の準仮想化ドライバーの詳細については、10章KVM 準仮
想化 (virtio) ドライバー を参照してください。PCI デバイス割り当ての詳細については、12章PCI デバイス
割り当て を参照してください。
仮想化環境でアプリケーションを実行すると、パフォーマンスが若干低下します。仮想化によってより新し
く速いハードウェアに統合することでパフォーマンスにどのような利点がもたらされるかを評価するには、
仮想化の使用に関連する潜在的なアプリケーションのパフォーマンス問題と比較して行うことをお勧めしま
す。
4 .3. その他の制限
仮想化に影響するその他の制限および問題の全リストは、Red Hat Enterprise Linux 6 リリースノート に記
載されています。Red Hat Enterprise Linux 6 リリースノート では、現時点での新機能と、更新または発見
された既知の問題および制限が説明されています。
19
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
第5章 仮想化パッケージのインストール
仮想化を使用する前に、コンピューターに仮想化パッケージをインストールする必要があります。仮想化
パッケージは、Subscription Manager を使用してホストのインストール時またはインストール後にインス
トールすることができます。
KVM ハイパーバイザーは、kvm カーネルモジュールを使うデフォルトの Red Hat Enterprise Linux カーネ
ルを使用します。
5.1. 仮想化ホストのインストールの設定
このセクションでは、新たに Red Hat Enterprise Linux をインストールする際の一部として、仮想化ツー
ルおよび仮想化パッケージのインストールについて説明します。
注記
https://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/ からご利用いただける
Red Hat Enterprise Linux インストールガイド は、Red Hat Enterprise Linux のインストールについ
て詳細に説明しています。
手順5.1 仮想化パッケージグループのインストール
1. R ed H at En t erp rise Lin u x 6 インストールプログラムを起動します。
Red Hat Enterprise Linux のインストール CD -ROM または D VD 、または PXE から対話形式の
Red Hat Enterprise Linux 6 インストールを開始します。
2. パッケージの選択までインストールを進めます。
パッケージ選択のステップまで完了します。
20
⁠第5章 仮想化パッケージのインストール
図5.1 R ed H at En t erp rise Lin u x パッケージ選択の画面
サーバーの役割に 仮想化ホスト を選択し、ゲスト仮想マシン用のプラットフォームをインストー
ルします。または、次に進む前に 今すぐカスタマイズ のラジオボタンが選択されていることを確
認して、個別のパッケージを指定します。
3. 仮想化 パッケージグループを選択します。
ここではインストールに qemu-kvm エミュレーター、vi rt-manag er、l i bvi rt、vi rtvi ewer を選択します。
21
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
図5.2 R ed H at En t erp rise Lin u x パッケージ選択の画面
注記
後でグラフィカルユーザーインターフェース (virt - man ag er) 内に仮想マシンを作成したい
場合は、G eneral P urpo se D eskto p パッケージグループも選択することをお勧めしま
す。
4. ⁠
パッケージのカスタマイズ ( 必要な場合)
他の仮想化パッケージが必要な場合は、仮想化 グループをカスタマイズします。
22
⁠第5章 仮想化パッケージのインストール
図5.3 R ed H at En t erp rise Lin u x パッケージ選択の画面
閉じる ボタンをクリックし、次に ボタンをクリックしてインストールを続けます。
インストールが完了したら、システムを再起動します。
重要
仮想化パッケージの更新を受信するには、有効な仮想化エンタイトルメントが必要です。
キックスタートファイルによる K VM パッケージのインストール
キックスタートファイルを使用すると、ユーザーが手作業で個別のホストシステムをインストールすること
なく、自動で大規模インストールが可能になります。このセクションでは、キックスタートファイルを作成
し、これを使用して、仮想化パッケージで Red Hat Enterprise Linux をインストールする方法を説明しま
す。
キックスタートファイルの %packag es セクションでは、以下のパッケージグループを追加します。
@ virtualization
@ virtualization-client
@ virtualization-platform
@ virtualization-tools
23
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
キックスタートファイルについてさらに詳しく
は、https://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/ からご利用いただける
Red Hat Enterprise Linux インストールガイド を参照してください。
5.2. 既存の Red Hat Ent erprise Linux システム上への仮想化パッケージのイ
ンストール
このセクションでは、動作中の Red Hat Enterprise Linux 6 またはそれ以降に KVM ハイパーバイザーをイ
ンストールするステップを説明します。
パッケージをインストールするには、マシンを登録しておく必要があります。Red Hat サブスクリプション
マネージャーで登録するには、subscri pti o n-manag er reg i ster コマンドを実行してプロンプトに
従います。
有効な Red Hat サブスクリプションをお持ちでない場合は、Red Hat オンラインストア で取得してくださ
い。
注記
Red Hat Network (RHN) は非推奨となりました。登録のタスクには Subscription Manager を使用
する必要があります。
yum を使用して仮想化パッケージをインストール
Red Hat Enterprise Linux 上で仮想化を使用するには、少なくとも q emu-kvm と q emu-i mg パッケージ
が必要になります。これらのパッケージは、ホストの Red Hat Enterprise Linux システム上にユーザーレ
ベルの KVM エミュレーターとディスクイメージマネージャーを提供します。
q emu-kvm と q emu-i mg パッケージをインストールするには、以下のコマンドを実行します。
# yum install qemu-kvm qemu-img
以下の仮想化管理パッケージも利用可能です。
推奨される仮想化パッケージ
python-virtinst
仮想マシン作成用の vi rt-i nstal l コマンドを提供
libvirt
libvirt パッケージは、サーバーとホストサイドにハイパーバイザーおよびホストシステムとの対話
用ライブラリーを提供します。libvirt パッケージは、ライブラリーコールを処理し、仮想マシンを
管理し、ハイパーバイザーを制御する l i bvi rtd デーモンを提供します。
libvirt-python
libvirt-python パッケージには、Python プログラミング言語で書かれているアプリケーションが
libvirt API で提供されるインターフェースを使用できるようにするモジュールが含まれています。
virt-manager
24
⁠第5章 仮想化パッケージのインストール
vi rt-manag er は 仮想マシンマネージャー とも呼ばれ、仮想マシンを管理するグラフィカル
ツールを提供します。これは、管理 API として libvirt-client ライブラリーを使用します。
libvirt-client
libvirt-client パッケージは、クライアント側の API とライブラリーにlibvirt サーバーへのアクセス
を提供します。libvirt-client パッケージには、コマンドラインまたは特別な仮想化シェルから仮想
マシンとハイパーバイザーを管理し、制御する vi rsh コマンドラインツールが含まれます。
これらの推奨される仮想化パッケージすべては、以下のコマンドでインストールしてください。
# yum install virt-manager libvirt libvirt-python python-virtinst
libvirt-client
仮想化パッケージグループのインストール
仮想化パッケージは、パッケージグループからもインストールできます。以下の表は、仮想化パッケージグ
ループとその役割を示したものです。
注記
q emu-i mg パッケージは、システム上ですでにインストールされていない場合に
Vi rtual i zati o n パッケージグループに依存する形でインストールされます。また、前述のyum
i nstal l q emu-i mg コマンドで手動でインストールすることも可能です。
表5.1 仮想化パッケージグループ
パッケージグループ
説明
必須パッケージ
オプションパッケージ
Virtualization
仮想化マシンのホスティ
ング環境を提供
仮想化インスタンスのイ
ンストールおよび管理ク
ライアント
仮想マシンおよびコンテ
ナーのアクセスおよび制
御インターフェースを提
供
qemu-kvm
qemu-guest-agent、
qemu-kvm-tools
virt-top
オフラインでの仮想イ
メージ管理のツール
libguestfs
Virtualization Client
Virtualization Platform
Virtualization Tools
python-virtinst、virtmanager、virt-viewer
libvirt、libvirt-client、
virt-who、virt-what
fence-virtd-libvirt、
fence-virtd-multicast、
fence-virtd-serial、
libvirt-cim、libvirtjava、libvirt-qmf、
libvirt-snmp、perl-SysVirt
libguestfs-java、
libguestfs-tools、virtv2v
パッケージグループをインストールするには、yum g ro upi nstal l <g ro upname> コマンドを実行し
ます。たとえば、Virt u aliz at io n T o o ls パッケージグループのインストールには、yum
g ro upi nstal l "Vi rtual i zati o n T o o l s" コマンドを実行します。
25
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
第6章 ゲスト仮想マシンのインストール概要
仮想化パッケージをホストシステムにインストールすると、ゲストオペレーティングシステムの作成が可能
になります。この章では、仮想マシンにゲストオペレーティングシステムをインストールする全般的なプロ
セスを説明します。ゲスト仮想マシンの作成は、virt - man ag er の新規作成 ボタンか、vi rt-i nstal l
コマンドラインインターフェースを使用します。どちらの方法も、この章で説明されています。
Red Hat Enterprise Linux および Microsoft Windows の特定バージョンの詳細なインストール方法は、こ
の後に続く章で説明されています。
6.1. ゲスト仮想マシンの前提条件および留意事項
ゲスト仮想マシンを作成する前には、様々な要素を考慮すべきです。デプロイ前に仮想マシンの役割を考え
るだけでなく、定期的な継続モニタリングと (負荷やクライアント数などの) 様々な要素に基づく評価の実行
をお勧めします。考慮に入れる要素としては、以下のものが挙げられます。
パフォーマンス
ゲスト仮想マシンは、目的のタスクに基づいてデプロイし、設定することをお勧めします。ゲス
トシステムには、パフォーマンスで特別な考慮を必要とするものもあります (たとえば、データ
ベースサーバーを実行するゲスト) 。ゲストの役割や予測されるシステム負荷によっては、ゲスト
がより多くの割り当て CPU やメモリーを必要とすることもあります。
入出力要件と入出力タイプ
ゲスト仮想マシンの中には、特別高い入出力要件があるものや、入出力タイプに基づいてさらな
る注意や予測を必要とするものもあります (たとえば、通常のディスクブロックサイズのアクセ
スやクライアント数)。
ストレージ
ゲスト仮想マシンの中には、ストレージやより高速のディスクタイプへの優先度の高いアクセス
を必要とするものもあります。ストレージのデプロイとメンテナンス時には、ゲストが使用する
ストレージ容量も定期的に監視して考慮することをお勧めします。
ネットワーク構成およびネットワークインフラストラクチャー
ゲスト仮想マシンの環境によっては、他のゲストより高速のネットワークリンクを必要とするも
のもあります。帯域幅や待ち時間はゲストのデプロイおよびメンテナンス時に考慮すべき要素で
あることが多々あり、要件や負荷が変化する際は特にそうです。
リクエスト要件
SCSI リクエストは、virtio ドライブがディスク全体をベースとし、ディスクデバイスパラメー
ターが以下の例のように l un に設定されいる場合にのみ、virtio ドライブ上のゲスト仮想マシン
に発行されます。
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='block' device='lun'>
6.2. virt -inst all を使用したゲストの作成
26
⁠第6 章 ゲスト仮想マシンのインストール概要
コマンドラインから vi rt-i nstal l コマンドを使用してゲスト仮想マシンを作成することができます。
vi rt-i nstal l は、対話形式で、または仮想マシンの自動作成するスクリプトの一部として使用されま
す。vi rt-i nstal l をキックスタートファイルと共に使用すると、仮想マシンの無人インストールが可能
になります。
vi rt-i nstal l ツールは、コマンドラインで使用可能な数多くのオプションを提供します。オプションの
リストすべてを表示するには、以下のコマンドを実行します。
# virt-install --help
vi rt-i nstal l コマンドが正しく完了するには、root 権限が必要となります。vi rt-i nstal l の man
ページも、各コマンドのオプションと重要な変数について記載しています。
q emu-i mg は、vi rt-i nstal l の前にストレージオプションを設定するために使用可能な関連コマンド
です。
--graphics は重要なオプションで、仮想マシンのグラフィカルインストールを可能にします。
例6 .1 virt - in st all を使用した R ed H at En t erp rise Lin u x 5 のゲスト仮想マシンのインストール
この例では、Red Hat Enterprise Linux 5 ゲストを作成します。
virt-install \
--name=guest1-rhel5-64 \
--file=/var/lib/libvirt/images/guest1-rhel5-64.dsk \
--file-size=8 \
--nonsparse --graphics spice \
--vcpus=2 --ram=2048 \
--location=http://example1.com/installation_tree/RHEL5.6-Serverx86_64/os \
--network bridge=br0 \
--os-type=linux \
--os-variant=rhel5.4
このコマンドを実行する際は、オペレーティングシステムで正しい os-type を選択していることを確認し
てください。
他の例については、man vi rt-i nstal l を参照してください。
注記
vi rt-i nstal l で Windows ゲストをインストールする場合は、--o s-type= windows オプ
ションが推奨されます。このオプションでは、インストール手順を実行中の再起動で CD -ROM の切
断を回避します。--o s-vari ant オプションは、特定のゲストオペレーティングシステムの設定を
さらに最適化します。
6.3. virt -manager を使用したゲスト作成
仮想マシンマネージャーとしても知られる vi rt-manag er は、ゲスト仮想マシンを作成、管理するグラ
フィカルツールです。
27
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
手順6 .1 virt - man ag er を使ったゲスト仮想マシンの作成
1. virt - man ag er を開く
vi rt-manag er を開始します。アプリケーション メニューを開き、システムツール サブメニュー
から仮想マシンマネージャー アプリケーションを起動します。または、root で vi rt-manag er
コマンドを実行します。
2. オプション: リモートハイパーバイザーを開く
ハイパーバイザーを選択し、接続 ボタンを押してリモートハイパーバイザーに接続します。
3. 新規の仮想マシンを作成
virt - man ag er ウィンドウで新規の仮想マシンを作成できます。新しい仮想マシンの作成 ボタン
(図6.1「仮想マシンマネージャーのウィンドウ」) をクリックして 新しい仮想マシン ウィザードを
開きます。
図6 .1 仮想マシンマネージャーのウィンドウ
新しい仮想マシン ウィザードでは、仮想マシン作成が 5つ のステップで行われます。
a. ゲスト仮想マシンの名前の入力とインストール方法の選択
b. インストールメディアの場所の選択と設定
c. メモリーと CPU オプションの設定
d. 仮想マシンのストレージの設定
e. ネットワーク、アーキテクチャー、他のハードウェアの設定
次に進む前に、vi rt-manag er がインストールメディアにアクセスできることを確認してくださ
い (ローカルまたはネットワーク経由) 。
4. 名前とインストール方法の特定
最初にゲスト仮想マシンに名前を付け、インストール方法を選択します。仮想マシンの名前にはア
ンダースコア (_) 、ピリオド (. ) 、ハイフン (-) を使用することができます。
28
⁠第6 章 ゲスト仮想マシンのインストール概要
図6 .2 仮想マシンに名前を付けてインストール方法を選択
仮想マシンの名前を入力し、インストール方法を選択します。
ローカルのインストールメディア ( ISO イメージまたは C D - R O M ドライブ)
この方法では、CD -ROM か D VD 、インストールディスクのイメージを使用します
(例、. i so )。
ネットワークインストール ( H T T P, FT P, または N FS)
この方法では、ミラー化された Red Hat Enterprise Linux または Fedora インストール
ツリーを使ってゲストをインストールします。インストールツリーには、HTTP または
FTP、または NFS のいずれかでアクセスできる必要があります。
ネットワークブート ( PXE)
29
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
この方法では、Preboot eXecution Environment (PXE) サーバーを使用してゲスト仮想
マシンをインストールします。PXE サーバーの設定は、導入ガイドで説明されていま
す。ネットワークブートでインストールするには、ゲストがルーティング可能な IP アド
レスまたは共有ネットワークデバイスを備えている必要があります。PXE インストール
のネットワーク設定要件に付いての情報は、「PXE を使用したゲスト仮想マシンのイン
ストール」 を参照してください。
既存のディスクイメージをインポート
この方法では、新しいゲスト仮想マシンを作成し、そこにディスクイメージ (インストー
ル済みの起動可能なオペレーティングシステムを含む) をインポートできます。
進む をクリックし、続けます。
5. インストール設定
次に、インストールする O S の種類 と バージョン を選びます。仮想マシンに適した OS の種類を
選択することを確認してください。インストール方法によっては、インストールの URL または既存
のストレージパスを指定します。
図6 .3 リモートインストールの U R L
30
⁠第6 章 ゲスト仮想マシンのインストール概要
図6 .4 ローカル ISO イメージのインストール
6. C PU およびメモリーの設定
次に、仮想マシンに割り当てる CPU の数とメモリー量を設定します。ウィザードでは、割り当て
可能な CPU の数とメモリー量が表示されます。これらを設定して、進む をクリックします。
31
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
図6 .5 C PU およびメモリーの設定
7. ストレージの設定
ゲスト仮想マシンにストレージを割り当てます。
32
⁠第6 章 ゲスト仮想マシンのインストール概要
図6 .6 仮想マシンのストレージの設定
最初のステップで既存のディスクイメージのインポートを選択した場合は、vi rt-manag er はこ
のステップを飛ばします。
仮想マシンと必要なアプリケーションに十分な領域を割り当て、進む をクリックして次に進みま
す。
8. 最終設定
仮想マシンの設定を確認し、問題がなければ完了 をクリックします。デフォルトのネットワーク
設定、仮想化の種類、アーキテクチャーで仮想マシンが作成されます。
33
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
図6 .7 設定の確認
仮想マシンのハードウェアをさらに設定したい場合は、完了 をクリックする前に インストールの
前に設定をカスタマイズする ボックスにチェックを入れます。新たなウィザードが開き、仮想マシ
ンのハードウェア設定で追加や削除、設定が可能になります。
仮想マシンのハードウェアを設定した後に 適用 をクリックします。vi rt-manag er が指定され
たハードウェア設定で仮想マシンを作成します。
6.4 . PXE を使用したゲスト仮想マシンのインストール
要件
34
⁠第6 章 ゲスト仮想マシンのインストール概要
PXE ゲストインストールでは、インストールするゲスト仮想マシンと同じサブネット上で PXE サーバーが
実行中である必要があります。この実行方法は、仮想マシンのネットワーク接続方法によって異なります。
PXE サーバーの設定でヘルプが必要な場合は、サポートに連絡してください。
virt - in st all による PXE インストール
vi rt-i nstal l PXE インストールでは、installation がブリッジ名となる -netwo rk= bri d g e: i nstal l ati o n パラメーターと、--pxe パラメーターの両方が必要となります。
デフォルトでは、ネットワークが見つからない場合、ゲスト仮想マシンは別の起動可能なデバイスから起動
を試みます。起動可能なデバイスが見つからない場合は、ゲストは一時停止します。起動可能なデバイスが
見つからない場合は、以下のような q emu - kvm ブートパラメーター reboot-timeout を使ってゲスト
の起動を再度試すことができます。
# qemu-kvm -boot reboot-timeout=1000
例6 .2 virt - in st all を使用した完全仮想化 PXE インストール
# virt-install --hvm --connect qemu:///system \
--network=bridge:installation --pxe --graphics spice \
--name rhel6-machine --ram=756 --vcpus=4 \
--os-type=linux --os-variant=rhel6 \
--disk path=/var/lib/libvirt/images/rhel6-machine.img,size=10
上記のコマンドは、テキストのみの環境では実行できないことに注意してください。完全仮想化 (-hvm) ゲストは、--graphics spice パラメーターではなく、--location と --extra-args
"console=console_type" が指定されている場合にのみ、テキストのみの環境でインストールでき
ます。
手順6 .2 virt - man ag er を使用した PXE インストール
1. ⁠
PXE の選択
インストール方法として PXE を選択し、続くステップで OS の種類やメモリー、CPU、およびス
トレージを設定します。
35
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
図6 .8 インストール方法の選択
36
⁠第6 章 ゲスト仮想マシンのインストール概要
図6 .9 インストールする O S の種類の選択
37
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
図6 .10 仮想化ハードウェア詳細の指定
38
⁠第6 章 ゲスト仮想マシンのインストール概要
図6 .11 ストレージ詳細の指定
2. ⁠
インストールの開始
インストールを開始する準備ができました。
39
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
図6 .12 仮想マシン詳細を完了
D HCP リクエストが送信され、有効な PXE サーバーが見つかるとゲスト仮想マシンのインストールプロセ
スが開始されます。
40
⁠第7 章 Red Hat Ent erprise Linux 6 ホスト上での Red Hat Ent erprise Linux 6 ゲスト仮想マシンのインストール
第7章 Red Hat Enterprise Linux 6 ホスト上での Red Hat
Enterprise Linux 6 ゲスト仮想マシンのインストール
この章では、Red Hat Enterprise Linux 6 ホスト上で Red Hat Enterprise Linux 6 ゲスト仮想マシンをイン
ストールする方法を説明します。
ここでは、KVM ハイパーバイザーと他の必要なパッケージがすべてインストールされ、ホストが仮想化用
に設定されていることを前提としています。
注記
仮想化パッケージのインストールについてさらに詳しくは、5章仮想化パッケージのインストール を
参照してください。
7.1. ローカルのインストールメディアを使用した Red Hat Ent erprise Linux
6 ゲストの作成
ここでは、ローカルに保存されているインストール D VD や D VD イメージで Red Hat Enterprise Linux 6
のゲスト仮想マシンを作成する方法を説明します。Red Hat Enterprise Linux 6 の D VD イメージ
は、http://access.redhat.com で入手できます。
手順7.1 virt - man ag er を使用した R ed H at En t erp rise Lin u x 6 ゲスト仮想マシンの作成
1. オプション: 準備
仮想マシン用のストレージ環境を準備します。ストレージの準備についてさらに詳しくは、Red Hat
Enterprise Linux 6 仮想化管理ガイド を参照してください。
重要
ゲスト仮想マシンの保存には、様々な種類のストレージが使用できます。しかし、仮想マシ
ンでマイグレーション機能を使用するには、仮想マシンをネットワーク化されたストレージ
上に作成する必要があります。
Red Hat Enterprise Linux 6 には、少なくとも 1GB のストレージ領域が必要です。しかし Red
Hat は、Red Hat Enterprise Linux 6 のインストールと本ガイドの手順に、5GB 以上のストレージ
領域を推奨します。
2. virt - man ag er を開き、ウィザードを開始する
virt-manager を開くには、root で vi rt-manag er コマンドを実行するか、または アプリケー
ション → システムツール → 仮想マシンマネージャー を開きます。
41
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
図7.1 仮想マシンマネージャーのウィンドウ
新しい仮想マシンの作成 ボタンをクリックして、新しい仮想化ゲストのウィザードを開始しま
す。
図7.2 新しい仮想マシンの作成ボタン
新しい仮想マシン ウィンドウが開きます。
3. 仮想マシンに名前を付ける
42
⁠第7 章 Red Hat Ent erprise Linux 6 ホスト上での Red Hat Ent erprise Linux 6 ゲスト仮想マシンのインストール
仮想マシンの名前には、文字、数字と、アンダースコア (_)、ピリオド (. ) 、ハイフン (-) を使用す
ることができます。仮想マシンのマイグレーションでは、名前は一意のものである必要があり、数
字のみの名前は使用できません。
ローカルのインストールメディア (ISO イメージまたは C D -R O M ドライブ ) ラジオボタン
を選択します。
図7.3 新しい仮想マシンウィンドウ - ステップ 1
進む をクリックして次に進みます。
4. インストールメディアの選択
インストールメディアを選択します
43
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
図7.4 インストールメディアの場所
A. CD -ROM または D VD からインストールする場合は、C D -R O M または D VD を使用 ラジオ
ボタンを選択し、利用可能なドライブのドロップダウンリストから適切なディスクドライブを
選択します。
B. ISO イメージからインストールする場合は、ISO イメージを使用 を選択し、参照 . . . ボタ
ンをクリックして ISO メディアボリュームの検索 ウィンドウを開きます。
使用するインストールイメージを選択し、ボリュームを選択 をクリックします。
ISO メディアボリュームの検索 ウィンドウにイメージが表示されない場合、ローカルを参
照 ボタンをクリックしてホストマシンにあるインストールイメージまたはインストールディス
クのある D VD ドライブを参照します。インストールイメージまたはインストールディスクのあ
る D VD ドライブを選択して 開く をクリックします。使用するボリュームが選択され、新しい
仮想マシンを作成 ウィザードに戻ります。
44
⁠第7 章 Red Hat Ent erprise Linux 6 ホスト上での Red Hat Ent erprise Linux 6 ゲスト仮想マシンのインストール
重要
ISO イメージファイルまたはゲストストレージファイルで推奨されるロケーション
は、/var/l i b/l i bvi rt/i mag es/ です。それ以外のロケーションは、SELinux に
よる新たな設定が必要になる可能性があります。SELinux の設定についてさらに詳しく
は、Red Hat Enterprise Linux 6 仮想化管理ガイド を参照してください。
選択したインストールメディアに合ったオペレーティングシステムの種類とバージョンを選択しま
す。
図7.5 新しい仮想マシンウィンドウ - ステップ 2
進む をクリックして次に進みます。
5. R AM および 仮想 C PU の設定
仮想 CPU と割り当てる RAM の適切な値を選択します。これらの値は、ホストとゲストのパフォー
マンスに影響します。メモリーと仮想 CPU はオーバーコミットが可能です。オーバーコミットに
ついてさらに詳しくは、Red Hat Enterprise Linux 6 仮想化管理ガイド を参照してください。
仮想マシンの効率的かつ効果的な実行には、十分な物理メモリー (RAM) が必要です。Red Hat は、
45
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
仮想マシンでは最小 512MB の RAM をサポートします。論理コアあたりでは、最小 1024MB の
RAM を推奨します。
十分な数の仮想 CPU を仮想マシンに割り当てます。仮想マシンがマルチスレッドのアプリケー
ションを実行する場合は、効率的な実行に必要な数の仮想 CPU を割り当てます。
ホストシステムで利用可能な物理プロセッサー (またはハイパースレッド) よりも多くの仮想 CPU
を割り当てることはできません。利用可能な仮想 CPU 数は、最大 X 個まで使用できます の
フィールドに表示されます。
図7.6 新しい仮想マシンウィンドウ - ステップ 3
進む をクリックして次に進みます。
6. ストレージ
ストレージを有効にして Red Hat Enterprise Linux 6 ゲスト仮想マシンに割り当てます。デスク
トップのインストールでは少なくとも 5GB を、最小構成インストールでは少なくとも 1GB を割り
当てます。
46
⁠第7 章 Red Hat Ent erprise Linux 6 ホスト上での Red Hat Ent erprise Linux 6 ゲスト仮想マシンのインストール
注記
ライブおよびオフラインマイグレーションでは、仮想マシンは共有ネットワークストレージ
にインストールされる必要があります。仮想マシン用の共有ストレージの設定についてさら
に詳しくは、Red Hat Enterprise Linux 仮想化管理ガイドを参照してください。
a. デフォルトのローカルストレージを使用
コンピューターのハードディスク上にディスクイメージを作成 ラジオボタンを選択
し、デフォルトのストレージプールである /var/l i b/l i bvi rt/i mag es/ ディレクト
リーにファイルベースのイメージを作成します。さらに、作成するディスクイメージのサ
イズを入力します。今すぐディスク全体を割り当てる チェックボックスが選択されてい
ると、指定されたサイズのディスクイメージが即座に作成されます。選択されていない場
合は、ディスクイメージは要求に応じて大きくなります。
注記
ストレージプールは仮想コンテナーであるものの、qemu-kvm によって許可される
最大サイズとホストの物理マシン上のディスクのサイズという 2 つの要素によって
制限されます。ストレージプールはホストの物理マシンのディスクのサイズを超え
ることはできません。以下が最大サイズです。
virtio-blk = 2^63 バイトまたは 8 エクサバイト (raw ファイルまたはディスクを
使用)
Ext4 = ~ 16 TB (4 KB ブロックサイズを使用)
XFS = ~8 エクサバイト
qcow2 とホストファイルシステムはそれぞれ独自のメタデータを維持し、非常
に大きなイメージサイズを使用する場合はスケーラビリティーの評価または調整
を行う必要があります。raw ディスクを使用すると、スケーラビリティーや最大
サイズに影響を与える可能性のある層の数が少なくなります。
47
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
図7.7 新しい仮想マシンウィンドウ - ステップ 4
進む をクリックしてローカルのハードドライブにディスクイメージを作成します。また
は、管理しているか、他の既存のストレージを選択する を選択し、参照 を選択して管
理しているストレージを設定します。
b. ストレージプールを使用
前のステップでストレージプールの使用に 管理しているか、他の既存のストレージを
選択する を選択し、参照 をクリックすると、ストレージボリュームの検索または作成
ウィンドウが表示されます。
48
⁠第7 章 Red Hat Ent erprise Linux 6 ホスト上での Red Hat Ent erprise Linux 6 ゲスト仮想マシンのインストール
図7.8 ストレージボリュームの検索または作成ウィンドウ
i. Sto rag e P o o l s リストからストレージプールを選択します。
ii. オプション: 新規ボリューム ボタンをクリックして新しいストレージボリューム
を作成します。ストレージボリュームを追加 スクリーンが表示されます。新規
ストレージボリュームの名前を入力します。
フォーマット ドロップダウンメニューからフォーマットのオプションを選択しま
す。フォーマットオプションには、raw、cow、qcow、qcow2、qed、vmdk、
vpc があります。他のフィールドも必要に応じて調整します。
49
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
図7.9 ストレージボリュームを追加ウィンドウ
完了 ボタンをクリックして、次に進みます。
7. 確認および終了
ウィザード中にエラーがなく、期待通りにすべてが表示されていることを確認します。
インストールの前に設定をカスタマイズする チェックボックスを選択し、ゲストのストレージ
またはネットワークデバイスを変更して準仮想化ドライバーを使用するか、または新たなデバイス
を追加します。
詳細なオプション の下向き矢印キーをクリックし、詳細なオプションを確認し、修正します。標
準的な Red Hat Enterprise Linux 6 インストールの場合、これらのオプションのいずれも修正する
必要はありません。
50
⁠第7 章 Red Hat Ent erprise Linux 6 ホスト上での Red Hat Ent erprise Linux 6 ゲスト仮想マシンのインストール
図7.10 新しい仮想マシンウィンドウ - ローカルストレージ
完了 ボタンをクリックして Red Hat Enterprise Linux インストールを続けます。Red Hat
Enterprise Linux 6 のインストールについてさらに詳しくは、Red Hat Enterprise Linux 6 インス
トールガイド を参照してください。
これで ISO インストールディスクイメージから Red Hat Enterprise Linux 6 ゲスト仮想マシンが作成され
ました。
51
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
7.2. ネットワークインストールツリーを使用した Red Hat Ent erprise Linux
6 ゲストの作成
手順7.2 virt - man ag er を使用した R ed H at En t erp rise Lin u x 6 ゲストの作成
1. オプション: 準備
ゲスト仮想マシン用のストレージ環境を準備します。ストレージの準備についてさらに詳しく
は、Red Hat Enterprise Linux 6 仮想化管理ガイド を参照してください。
重要
ゲスト仮想マシンの保存には、様々な種類のストレージが使用できます。しかし、仮想マシ
ンでマイグレーション機能を使用するには、仮想マシンをネットワーク化されたストレージ
上に作成する必要があります。
Red Hat Enterprise Linux 6 には、少なくとも 1GB のストレージ領域が必要です。しかし Red
Hat は、Red Hat Enterprise Linux 6 のインストールと本ガイドの手順に、5GB 以上のストレージ
領域を推奨します。
2. virt - man ag er を開き、ウィザードを開始する
virt-manager を開くには、root で vi rt-manag er コマンドを実行するか、または アプリケー
ション → システムツール → 仮想マシンマネージャー を開きます。
52
⁠第7 章 Red Hat Ent erprise Linux 6 ホスト上での Red Hat Ent erprise Linux 6 ゲスト仮想マシンのインストール
図7.11 virt - man ag er のメインウィンドウ
新しい仮想マシンの作成 ボタンをクリックして、新しい仮想マシンのウィザードを開始します。
図7.12 新しい仮想マシンの作成ボタン
新しい仮想マシンを作成 ウィンドウが表示されます。
3. 仮想マシンに名前を付ける
仮想マシンの名前には、文字、数字と、アンダースコア (_)、ピリオド (. ) 、ハイフン (-) を使用す
ることができます。仮想マシンのマイグレーションでは、名前は一意のものである必要があり、数
字のみの名前は使用できません。
ラジオボタンのリストからインストール方法を選択します。
53
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
図7.13 新しい仮想マシンウィンドウ - ステップ 1
進む をクリックして次に進みます。
4. インストール URL を指定します。必要に応じて、キックスタート URL およびカーネルオプション
を指定します。
54
⁠第7 章 Red Hat Ent erprise Linux 6 ホスト上での Red Hat Ent erprise Linux 6 ゲスト仮想マシンのインストール
図7.14 新しい仮想マシンウィンドウ - ステップ 2
進む をクリックして次に進みます。
5. 残りのステップは、ISO インストール手順と同じです。ISO インストール手順の ステップ 5 から
続行します。
7.3. PXE を使用した Red Hat Ent erprise Linux 6 ゲストの作成
手順7.3 virt - man ag er を使用した R ed H at En t erp rise Lin u x 6 ゲストの作成
1. オプション: 準備
仮想マシン用のストレージ環境を準備します。ストレージの準備についてさらに詳しくは、Red Hat
Enterprise Linux 6 仮想化管理ガイド を参照してください。
55
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
重要
ゲスト仮想マシンの保存には、様々な種類のストレージが使用できます。しかし、仮想マシ
ンでマイグレーション機能を使用するには、仮想マシンをネットワーク化されたストレージ
上に作成する必要があります。
Red Hat Enterprise Linux 6 には、少なくとも 1GB のストレージ領域が必要です。しかし Red
Hat は、Red Hat Enterprise Linux 6 のインストールと本ガイドの手順に、5GB 以上のストレージ
領域を推奨します。
2. virt - man ag er を開き、ウィザードを開始する
virt-manager を開くには、root で vi rt-manag er コマンドを実行するか、または アプリケー
ション → システムツール → 仮想マシンマネージャー を開きます。
図7.15 virt - man ag er のメインウィンドウ
新しい仮想マシンの作成 ボタンをクリックして、新しい仮想化ゲストのウィザードを開始しま
す。
56
⁠第7 章 Red Hat Ent erprise Linux 6 ホスト上での Red Hat Ent erprise Linux 6 ゲスト仮想マシンのインストール
図7.16 新しい仮想マシンの作成ボタン
新しい仮想マシン ウィンドウが開きます。
3. 仮想マシンに名前を付ける
仮想マシンの名前には、文字、数字と、アンダースコア (_)、ピリオド (. ) 、ハイフン (-) を使用す
ることができます。仮想マシンのマイグレーションでは、名前は一意のものである必要があり、数
字のみの名前は使用できません。
ラジオボタンのリストからインストール方法を選択します。
図7.17 新しい仮想マシンウィンドウ - ステップ 1
進む をクリックして次に進みます。
57
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
4. 残りのステップは、ISO インストール手順と同じです。ISO インストール手順の ステップ 5 から
続行します。これ以降の PXE 手順で唯一異なるのは、最後の 新しい仮想マシン 画面で インス
トール : P XE インストール フィールドが表示される点です。
図7.18 新しい仮想マシンウィンドウ - ステップ 5 - PXE インストール
58
⁠第8 章 他のプラットフォーム上での Red Hat Ent erprise Linux の仮想化
第8章 他のプラットフォーム上での Red Hat Enterprise Linux の仮
想化
この章では、他の仮想化ホスト上で Red Hat Enterprise Linux 6 を仮想化オペレーティングシステムとし
て実行する際に便利な参考資料について記載しています。
8.1. VMware ESX
Red Hat Enterprise Linux 6.0 以降では、vmw_bal l o o n ドライバーを提供しています。これは、
VMWare ホスト上で Red Hat Enterprise Linux を実行する際に使用される準仮想化メモリーバルーニング
ドライバーです。このドライバーについてさらに詳しく
は、http://kb.VMware.com/selfservice/microsites/search.do?
cmd=displayKC&docType=kc&externalId=1002586 を参照してください。
Red Hat Enterprise Linux 6.3 以降では、vmmo use_d rv ドライバーを提供しています。これは、VMware
ホスト上で Red Hat Enterprise Linux を実行する際に使用される準仮想化マウスドライバーです。このド
ライバーについてさらに詳しくは、http://kb.VMware.com/selfservice/microsites/search.do?
cmd=displayKC&docType=kc&externalId=5739104 を参照してください。
Red Hat Enterprise Linux 6.3 以降では、vmware_d rv ドライバーを提供しています。これは、VMware
ホスト上で Red Hat Enterprise Linux を実行する際に使用される準仮想化ビデオドライバーです。このド
ライバーについてさらに詳しくは、http://kb.VMware.com/selfservice/microsites/search.do?
cmd=displayKC&docType=kc&externalId=1033557 を参照してください。
Red Hat Enterprise Linux 6.3 以降では、vmxnet3 ドライバーを提供しています。これは、VMware ホス
ト上で Red Hat Enterprise Linux を実行する際に使用される準仮想化ネットワークアダプターです。この
ドライバーについてさらに詳しくは、http://kb.VMware.com/selfservice/microsites/search.do?
language=en_US&cmd=displayKC&externalId=1001805 を参照してください。
Red Hat Enterprise Linux 6.4 以降では、vmw_pvscsi ドライバーを提供しています。これは、VMware
ホスト上で Red Hat Enterprise Linux を実行する際に使用される準仮想化 SCSI アダプターです。このド
ライバーについてさらに詳しくは、http://kb.VMware.com/selfservice/microsites/search.do?
language=en_US&cmd=displayKC&externalId=1010398 を参照してください。
8.2. Hyper-V
Red Hat Enterprise Linux 6.4 以降には、Microsoft の Linux Integration Services が同梱されています。
これは、対応する仮想化オペレーティングシステムで統合デバイスサポートを有効にするドライバーセット
です。このドライバーについての詳細は、http://technet.microsoft.com/en-us/library/dn531030.aspx を
参照してください。
以下の機能強化により、Red Hat Enterprise Linux ゲスト仮想マシンの導入と管理がより簡単になりまし
た。
アップグレードされた VMBUS プロトコル - VMBUS プロトコルが Windows 8 レベルにアップグレー
ドされました。この機能強化の一環として、VMBUS 割り込みがゲストの利用可能なすべての仮想 CPU
で処理できるようになりました。さらに、Red Hat Enterprise Linux ゲスト仮想マシンと Windows ホ
スト物理マシン間のシグナルプロトコルが最適化されています。
統合フレームバッファードライバー - グラフィックスパフォーマンスを強化し、Red Hat Enterprise
Linux デスクトップのユーザーに対して優れた解像度を提供します。
ライブ仮想マシンバックアップサポート - ライブ Red Hat Enterprise Linux ゲスト仮想マシンの中断な
しのバックアップサポートを提供します。
59
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
固定サイズの Linux VHD X を動的に拡張 - ライブのマウントされている固定サイズの Red Hat
Enterprise Linux VHD X の拡張を可能にします。
UEFI を使用した起動 - UEFI (Unified Extensible Firmware Interface) を使用して Hyper-V 2012 R2 ホ
スト上で仮想マシンを起動することが可能になりました。
さらに詳しくは、以下の記事を参照してください: Enabling Linux Support on Windows Server 2012 R2
Hyper-V
60
⁠第9 章 完全仮想化 Windows ゲストのインストール
第9章 完全仮想化 Windows ゲストのインストール
この章では、コマンドライン (vi rt-i nstal l ) を使用して完全仮想化 Windows ゲストを作成する方法、
ゲスト内でオペレーティングシステムのインストーラーを起動する方法、 vi rt-vi ewer でインストー
ラーにアクセスする方法を説明します。
ゲスト上に Windows オペレーティングシステムをインストールするには、vi rt-vi ewer ツールを使用し
ます。このツールは、仮想マシンのグラフィカルコンソールを (SPICE または VNC プロトコル経由で) 表
示します。これにより、vi rt-vi ewer を使って、インストールするオペレーティングシステムのインス
トーラー (たとえば Windows XP インストーラー) で完全仮想化ゲストのオペレーティングシステムをイン
ストールできるようになります。
Windows オペレーティングシステムのインストールには、2 つのステップがあります。
1. vi rt-i nstal l または vi rt-manag er のいずれかを使用してゲスト仮想マシンを作成する。
2. vi rt-vi ewer を使用してゲスト仮想マシン上に Windows オペレーティングシステムをインス
トールする。
vi rt-i nstal l または vi rt-manag er を使用したゲスト仮想マシンの作成については、6章ゲスト仮想
マシンのインストール概要 を参照してください。
この章は、完全仮想化ゲスト上での Windows オペレーティングシステムのインストール方法を説明するも
のではなく、ゲストの作成方法とゲスト内でインストーラーを起動する方法を説明するものです。
Windows オペレーティングシステムのインストール方法については、関連する Microsoft のインストール
説明書を参照してください。
9.1. virt -inst all を使用したゲストの作成
vi rt-i nstal l コマンドを使うと、たとえば GUI を使わずにターミナルから完全仮想化ゲストを作成で
きます。
重要
ゲストを作成する前に、ゲストが KVM Windows 準仮想化ドライバーを使用する必要があるかどう
かをまず検討してください。その必要がある場合は、Windows オペレーティングシステムをゲスト
上にインストールしている 最中 または その後 にそれらを使用できることに注意してください。準仮
想化ドライバーについてさらに詳しくは、10章KVM 準仮想化 (virtio) ドライバー を参照してくださ
い。
KVM Windows 準仮想化ドライバーのインストール方法については、「KVM Windows virtio ドライ
バーのインストール」 を参照してください。
1 つのコマンドで完全仮想化ゲストを作成することも可能です。以下のプログラムで実行できます (必要に
応じて値を変更) 。
# virt-install \
--name=guest-name \
--os-type=windows \
--network network=default \
--disk path=path-to-disk,size=disk-size \
--cdrom=path-to-install-disk \
--graphics spice --ram=1024
61
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
path-to-disk はデバイス (例: /d ev/sd a3) またはイメージファイル
(/var/l i b/l i bvi rt/i mag es/name. i mg ) である必要があります。さらに、disk-size をサポート
できる十分な空き領域も必要になります。
重要
すべてのイメージファイルは、デフォルトで /var/l i b/l i bvi rt/i mag es/ に保存されます。
ファイルベースのイメージは他のディレクトリーでも保存可能ですが、SELinux 設定が必要な場合
もあります。SELinux を強制モードで実行する場合の詳細については、Red Hat Enterprise Linux 6
仮想化管理ガイド を参照してください。
vi rt-i nstal l を対話形式で実行することも可能です。以下のように、--pro mpt コマンドを使用しま
す。
# virt-install --prompt
完全仮想化ゲストが作成されると、vi rt-vi ewer がゲストを起動し、オペレーティングシステムのインス
トーラーを実行します。オペレーティングシステムのインストール方法については、関連する Microsoft の
インストール説明書を参照してください。
62
⁠第1 0 章 KVM 準仮想化 (virt io) ドライバー
第10章 KVM 準仮想化 (virtio) ドライバー
準仮想化ドライバーはゲストのパフォーマンスを強化し、I/O 待ち時間を短縮すると共に、スループットを
ベアメタルレベル近くにまで高めます。I/O 負荷の高いタスクとアプリケーションを実行する完全仮想マシ
ンには、準仮想化ドライバーの使用が推奨されます。
virtio ドライバーは、KVM ホスト上で実行中の Windows ゲスト仮想マシンで利用できる KVM の準仮想化
デバイスドライバーです。これらのドライバーは、virtio パッケージに含まれています。virtio パッケージ
は、ブロック (ストレージ) デバイスとネットワークインターフェースコントローラーに対応しています。
KVM virtio ドライバーは、以下のバージョンに自動的にロードされ、インストールされます。
Red Hat Enterprise Linux 4.8 およびそれ以降
Red Hat Enterprise Linux 5.3 およびそれ以降
Red Hat Enterprise Linux 6 およびそれ以降
Red Hat Enterprise Linux 7 およびそれ以降
2.6.27 カーネルおよびそれ以降のバージョンをベースとしたいくつかの Linux バージョン
上記リストの Red Hat Enterprise Linux バージョンは、ドライバーを検知してインストールするので、追
加のインストールステップは必要ありません。
Red Hat Enterprise Linux 3 (3.9 およびそれ以降) では、手動のインストールが必要になります。
注記
PCI デバイスは、仮想化システムアーキテクチャーによって制限されます。指定デバイスの使用時
における新たな制限については、「KVM の制限」 を参照してください。
KVM virtio ドライバーを使用すると、以下の Microsoft Windows バージョンがベアメタルベースのシステ
ムと同様の動作をすることが予想されます。
Windows XP Service Pack 3 およびそれ以降 (32 ビットのみ)
Windows Server 2003 (32 ビットおよび 64 ビット)
Windows Server 2008 (32 ビットおよび 64 ビット)
Windows Server 2008 R2 (64 ビットのみ)
Windows 7 (32 ビットおよび 64 ビット)
Windows Server 2012 (64 ビットのみ)
Windows Server 2012 R2 (64 ビットのみ)
Windows 8 (32 ビットおよび 64 ビットバージョン)
Windows 8.1 (32 ビットおよび 64 ビットバージョン)
10.1. KVM Windows virt io ドライバーのインストール
63
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
このセクションでは、KVM Windows virtio ドライバーのインストールプロセスを説明します。KVM virtio
ドライバーは、Windows のインストール時にロードしたり、ゲストのインストール後にインストールした
りすることができます。
virtio ドライバーは、以下のいずれかの方法でゲスト仮想マシンにインストールできます。
仮想マシンにアクセス可能なネットワーク上にインストールファイルをホスト
ドライバーインストールディスクの .iso ファイルの仮想化 CD -ROM デバイスを使用
CD -ROM に使用するのと同じ (指定) .ISO ファイルをマウントして USB ドライブを使用
起動時に仮想化フロッピーデバイスを使用してドライバーをインストール (XP/2003 にのみ必須および
推奨)
このガイドでは、仮想化 CD -ROM デバイスとしての準仮想化インストーラーディスクからのインストール
について説明します。
1. ドライバーのダウンロード
virtio-win パッケージには、サポート対象のすべての Windows ゲスト仮想マシン用の virtio ブロッ
クおよびネットワークドライバーが含まれます。
virtio-win パッケージをダウンロードし、ホスト上に yum コマンドでインストールします。
# yum install virtio-win
Windows オペレーティングシステム上でサポートされる virtio-win パッケージのリストと現行の
認証済みパッケージバージョンは、windowsservercatalog.com で確認できます。
Red Hat Enterprise Virtualization Hypervisor と Red Hat Enterprise Linux は、同じコードベース
上で作成されるので、同じバージョンのドライバー (たとえば、Red Hat Enterprise Virtualization
Hypervisor 3.3 と Red Hat Enterprise Linux 6.5) は両方の環境でサポートされます。
virtio-win パッケージは、/usr/share/vi rti o -wi n/ ディレクトリーに CD -ROM イメージであ
る vi rti o -wi n. i so をインストールします。
2. virt io ドライバーのインストール
virtio-win デバイスを使用する Windows ゲストを起動する場合、関連する virtio-win デバイスドラ
イバーをこのゲストにインストールしておく必要があります。virtio-win ドライバーは Microsoft
Windows インストールキットのインボックスドライバーとして提供されていないため、virtio-win
ストレージデバイス (viostor/virtio-scsi) に Windows ゲストをインストールするには、インストー
ル 時 に、vi rti o -wi n. i so から直接か、または提供される仮想フロッピーイメージvi rti o wi n<version>. vfd のいずれかにより適切なドライバーを指定する必要があります。
10.2. インストール済みの Windows ゲスト仮想マシンへのドライバーのイン
ストール
ここでは、Windows のインストール後に仮想化 CD -ROM を使用して virtio ドライバーをインストールす
る方法を説明します。
vi rt-manag er を使って CD -ROM イメージを追加してからドライバーをインストールする方法について
は、以下の手順にしたがってください。
手順10.1 virt - man ag er を使用してドライバー C D - R O M イメージからインストールする
64
⁠第1 0 章 KVM 準仮想化 (virt io) ドライバー
1. virt - man ag er とゲスト仮想マシンの開始
vi rt-manag er を開き、ゲスト名をダブルクリックしてゲスト仮想マシンを開きます。
2. ハードウェアウィンドウを開く
ウィンドウ最上部のツールバーにある電球のアイコンをクリックして仮想ハードウェアの詳細を表
示します。
図10.1 仮想ハードウェア詳細ボタン
次に、表示される新たなビューの最下部にある ハードウェアを追加 ボタンをクリックします。こ
れにより、新規デバイスを追加するためのウィザードが開きます。
3. デバイスの種類の選択 — バージョン 6 .2 より前の R ed H at En t erp rise Lin u x 6
Red Hat Enterprise Linux 6.2 またはそれ以降を使用している場合は、このステップを飛ばしてく
ださい。
バージョン 6.2 より前の Red Hat Enterprise Linux 6 では、追加するデバイスの種類を選択する必
要があります。このケースでは、ドロップダウンメニューから Sto rag e を選択します。
65
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
図10.2 R ed H at En t erp rise Lin u x 6 .1 の新たなハードウェア追加ウィザード
完了 ボタンをクリックし、次に進みます。
4. ISO ファイルの選択
管理しているストレージか、他の既存のストレージを選択する ラジオボタンを選択し、virtio
ドライバーの . i so イメージファイルを参照します。デフォルトでは、ドライバーの最新バージョ
ンは、/usr/share/vi rti o -wi n/vi rti o -wi n. i so にあります。
デバイスの種類 を ID E cd ro m に変更し、進む ボタンをクリックして次に進みます。
図10.3 新たなハードウェア追加ウィザード
5. 仮想ハードウェア追加の完了 — バージョン 6 .2 より前の R ed H at En t erp rise Lin u x 6
Red Hat Enterprise Linux 6.2 またはそれ以降を使用している場合は、このステップを飛ばしてく
ださい。
バージョン 6.2 より前の Red Hat Enterprise Linux 6 では、完了 ボタンをクリックして、仮想
ハードウェアの追加ウィザードを終了します。
66
⁠第1 0 章 KVM 準仮想化 (virt io) ドライバー
図10.4 R ed H at En t erp rise Lin u x 6 .1 の新たなハードウェア追加ウィザード
6. 再起動
ドライバーディスクを使用して仮想マシンをスタートさせるか、または再起動します。仮想マシン
が新たなデバイスを認識するには、仮想化 ID E デバイスの再起動が必要です。
ドライバーの CD -ROM がアタッチされ、仮想マシンが開始したら、手順10.2「Windows 7 仮想マシン上
への Windows インストール」 に進みます。
手順10.2 Win d o ws 7 仮想マシン上への Win d o ws インストール
ここでは、例としてドライバーを Windows 7 仮想マシンにインストールします。ご自分の Windows ゲス
トのバージョンに合わせて Windows のインストール指示にしたがってください。
1. コンピューターの管理ウィンドウを開く
Windows 仮想マシンのデスクトップ上で、画面下部にある Wi nd o ws アイコンをクリックし、ス
タートメニューを開きます。
コンピューター を右クリックし、ポップアップメニューから 管理 を選択します。
67
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
図10.5 コンピューターの管理ウィンドウ
2. デバイスマネージャーを開く
左端のペインから デバイスマネージャー を選択します。これは、コンピューターの管理 > シ
ステムツール にあります。
68
⁠第1 0 章 KVM 準仮想化 (virt io) ドライバー
図10.6 コンピューターの管理ウィンドウ
3. ドライバーアップデートウィザードの開始
a. 利用可能なシステムデバイスの表示
システムデバイス の左にある矢印をクリックして展開します。
図10.7 コンピューターの管理ウィンドウで利用可能なシステムデバイスを表示
b. 適切なデバイスの特定
最大で以下の 4 種類のドライバーが利用可能です。バルーンドライバー、シリアルドライ
バー、ネットワークドライバー、ブロックドライバー。
Bal l o o n: このバルーンドライバーは システムデバイス グループの P C I 標準 R AM
コントローラー に影響します。
vi o seri al : このシリアルドライバーは、システムデバイス グループの P C I シン
プル通信コントローラー に影響します。
NetKVM: このネットワークドライバーは、ネットワークアダプター グループに影響
します。このドライバーは、virtio NIC が設定されている場合のみ利用可能です。この
ドライバーの設定可能パラメーターは、付録A NetKVM ドライバーパラメーター で説明
されています。
vi o sto r: このブロックドライバーは、ディスクドライブ グループに影響します。こ
のドライバーは、virtio ディスクが設定されている場合のみ利用可能です。
アップデートするドライバーのデバイスを右クリックし、ポップアップメニューから ドラ
イバーソフトウェアの更新 . . . を選択します。
この例ではバルーンドライバーをインストールするので、P C I 標準 R AM コントロー
ラー を右クリックします。
69
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
図10.8 コンピューターの管理ウィンドウ
c. ドライバー更新ウィザードの開始
ドロップダウンメニューから ドライバーソフトウェアの更新 . . . を選択し、ドライ
バー更新ウィザードにアクセスします。
図10.9 ドライバー更新ウィザードの開始
4. ドライバーの検索方法の指定
ドライバー更新ウィザードの最初のページでは、ドライバーソフトウェアの検索方法を聞かれま
す。2 つ目のオプションのコンピューターを参照してドライバーソフトウェアを検索します
をクリックします。
70
⁠第1 0 章 KVM 準仮想化 (virt io) ドライバー
図10.10 ドライバー更新ウィザード
5. インストールするドライバーの選択
a. ファイルのブラウザーを開きます。
参照 . . . をクリックします。
71
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
図10.11 ドライバー更新ウィザード
b. ドライバーの場所を参照
オペレーティングシステムとアーキテクチャーの組み合わせごとに、別のドライバーが提
供されます。ドライバーは以下のように、ドライバータイプ、オペレーティングシステ
ム、インストールされるアーキテクチャーという階層で配置されま
す。driver_type/os/arch/ 。たとえば、x86 (32 ビット) アーキテクチャーの
Windows 7 オペレーティングシステム用バルーンドライバーは、Bal l o o n/w7/x86
ディレクトリーに配置されます。
図10.12 ドライバーソフトウェア参照のポップアップウィンドウ
正しい場所まで移動したら、O K をクリックします。
c. 次へ をクリックして続ける
72
⁠第1 0 章 KVM 準仮想化 (virt io) ドライバー
図10.13 ドライバーソフトウェア更新ウィザード
ドライバーのインストール中に以下の画面が表示されます。
図10.14 ドライバーソフトウェア更新ウィザード
73
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
6. インストーラーを閉じる
インストールが完了すると、以下の画面が表示されます。
図10.15 ドライバーソフトウェア更新ウィザード
閉じる ボタンをクリックして、インストーラーを閉じます。
7. 再起動
仮想マシンを再起動してドライバーのインストールを完了します。
10.3. Windows インストール中のドライバーのインストール
ここでは、Windows インストール中に virtio ドライバーをインストールする方法を説明します。
この方法では、Windows ゲスト仮想マシンは virtio ドライバーをデフォルトのストレージデバイスに使用
できます。
手順10.3 Win d o ws インストール時の virt io ドライバーのインストール
1. virtio-win パッケージをインストールします。
# yum install virtio-win
2. ゲスト仮想マシンの作成
74
⁠第1 0 章 KVM 準仮想化 (virt io) ドライバー
重要
仮想マシンを開始せずに、通常どおりに仮想マシンを作成します。以下のいずれかの手順に
したがいます。
以下のゲスト作成方法のうち、どれか 一つ を選び、指示にしたがいます。
a. virsh を使ったゲスト仮想マシンの作成
この方法では、インストール 前に virtio ドライバーフロッピーディスクを Windows ゲス
トにアタッチします。
vi rsh で XML 定義ファイルから仮想マシンが作成された場合、vi rsh create コマンド
ではなく、vi rsh d efi ne コマンドを使用してください。
i. 仮想マシンを作成します。ただし、仮想マシンを開始しないでください。vi rsh
コマンドを使用して仮想マシンを作成する方法についてさらに詳しくは、Red Hat
Enterprise Linux 仮想化管理ガイド を参照してください。
ii. vi rsh コマンドでドライバーディスクを仮想化フロッピーディスクとして追加し
ます。ゲスト仮想マシンに他の仮想化フロッピーディスクがアタッチされていない
場合に、この例を適用することができます。vm_name は仮想マシン名と置き換え
ることに注意してください。
# virsh attach-disk vm_name /usr/share/virtiowin/virtio-win.vfd fda --type floppy
ステップ 3 に進みます。
b. virt - man ag er を使用してゲスト仮想マシンを作成し、ディスクの種類を変更する
i. virt-manager ゲスト作成ウィザードの最後のステップで、インストールの前に
設定をカスタマイズする チェックボックスにチェックを入れます。
75
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
図10.16 virt - man ag er でのゲスト作成ウィザード
完了 ボタンをクリックし、続けます。
ii. ハードウェア追加ウィザード
新しいパネルの左下にある ハードウェアを追加 ボタンをクリックします。
iii. ストレージデバイスの選択
ハードウェアのタイプ のリストでは、ストレージ がデフォルトで選択されてい
ます。
76
⁠第1 0 章 KVM 準仮想化 (virt io) ドライバー
図10.17 新たなハードウェア追加ウィザード
管理しているストレージか、他の既存のストレージを選択する ラジオボタン
を選択します。参照 . . . をクリックします。
図10.18 管理しているストレージか、他の既存のストレージを選択する
新しいウィンドウが開くので、ローカルを参照 をクリックしま
す。/usr/share/vi rti o -wi n/vi rti o -wi n. vfd を選択し、開く をクリッ
クして確定します。
デバイスの種類 を Fl o ppy d i sk に変更し、完了 をクリックして続けます。
図10.19 デバイスの種類の変更
iv. 設定の確認
デバイス設定を確認します。
77
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
図10.20 仮想マシンのハードウェア情報ウィンドウ
これで、仮想マシンがアクセス可能なリムーバブルデバイスが作成されました。
v. ハードディスクの種類の変更
ハードディスクの種類を IDE Disk から Virtio Disk に変更するには、まず既存の
ハードディスクである D isk 1 を削除する必要があります。ディスクを選択し、削
除 ボタンをクリックします。
78
⁠第1 0 章 KVM 準仮想化 (virt io) ドライバー
図10.21 仮想マシンのハードウェア情報ウィンドウ
ハードウェアを追加 をクリックして、新たな仮想ストレージデバイスを追加しま
す。次に、デバイスの種類 を IDE disk から Virtio Disk に変更します。完了 をク
リックして確定します。
79
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
図10.22 仮想マシンのハードウェア情報ウィンドウ
vi. 設定が正しいことの確認
VirtIO Disk 1 の設定を確認します。
図10.23 仮想マシンのハードウェア情報ウィンドウ
設定詳細が正しければ、インストールの開始 ボタンをクリックします。
ステップ 3 に進みます。
c. virt - in st all を使ったゲスト仮想マシンの作成
vi rt-i nstal l コマンドでインストールにドライバーディスクを追加するには、以下の
パラメーターをそのまま追加します。
--disk path=/usr/share/virtio-win/virtiowin.vfd,device=floppy
80
⁠第1 0 章 KVM 準仮想化 (virt io) ドライバー
重要
追加したいデバイスが d i sk の場合 (つまり、fl o ppy や cd ro m でない場合)、-disk パラメーターの最後に bus= vi rti o オプションを加える必要もあるので、
以下のようになります。
--disk path=/usr/share/virtio-win/virtiowin.vfd,device=disk,bus=virtio
インストールする Windows のバージョンによって、vi rt-i nstal l コマンドに以下の
オプションのいずれかを追加します。
--os-variant winxp
--os-variant win2k3
--os-variant win7
ステップ 3 に進みます。
3. ⁠
ドライバーインストールの追加ステップ
インストール中に、Windows ゲストの種類によってはドライバーをインストールする追加ステッ
プが必要になります。
a. ⁠
Win d o ws Server 2003 および Win d o ws XP
サードパーティードライバーの場合、インストールのブルースクリーンで F6 を繰り返し押
します。
81
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
図10.24 Win d o ws セットアップ画面
新たなデバイスドライバーをインストールするには、S を押します。
図10.25 Win d o ws セットアップ画面
82
⁠第1 0 章 KVM 準仮想化 (virt io) ドライバー
図10.26 Win d o ws セットアップ画面
Enter を押して、インストールを続行します。
b. ⁠
Win d o ws Server 2008
Windows Server 2003 と同じ手順ですが、インストーラーがドライバーを表示した時に
は、Lo ad D ri ver をクリックし、インストーラーを D ri ve A: に向けて、ご使用のゲ
ストオペレーティングシステムとアーキテクチャーに適切なドライバーを選択します。
10.4 . Red Hat Ent erprise Linux 3.9 ゲストでの virt io ドライバーの使用
Red Hat Enterprise Linux 3.9 用の virtio ドライバーは、以下の 5 つのカーネルモジュールで構成されてい
ます。 vi rti o 、vi rti o _bl k、vi rti o _net、vi rti o _pci 、vi rti o _ri ng 。virtio ブロックおよ
びネットワークデバイスドライバーの両方を使用するには、これら 5 つのモジュールすべてをロードする
必要があります。
重要
Red Hat Enterprise Linux 3.9 ゲストでは、kmod-virtio パッケージは vi rti o モジュールの要件で
す。
注記
ネットワークデバイスドライバーのみを使用する場合は、vi rti o 、vi rti o _net、vi rti o _pci
モジュールをロードします。ブロックデバイスドライバーのみを使用する場合
は、vi rti o 、vi rti o _ri ng 、vi rti o _bl k、vi rti o _pci モジュールをロードします。
83
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
重要
virtio パッケージは、/bo o t ディレクトリーの initrd RAM ディスクファイルを変更します。オリジ
ナルの initrd ファイルは、/bo o t/i ni trd -kernel-version. i mg . vi rti o . o ri g に保存さ
れています。オリジナルの initrd ファイルは、vi rti o ドライバーモジュールを含む新たな initrd
RAM ディスクに置換されます。initrd RAM ディスクが変更されると、仮想マシンは virtio ドライ
バーを使ってストレージデバイスから起動できるようになります。別の initrd ファイルを使うには、
ドライバーが sysi ni t スクリプト (sysinit スクリプトを使用した virtio ドライバーのロード) を
使ってロードされているか、または新たな initrd RAM ディスクが作成される (virtio ドライバーを
initrd RAM ディスクに追加) 際にロードされていることを確認する必要があります。
sysin it スクリプトを使用した virt io ドライバーのロード
ここでは、Red Hat Enterprise Linux 3.9 以降の起動中に sysi ni t スクリプトを使用して virtio ドライ
バーモジュールをロードする方法を説明します。sysi ni t スクリプトを使用してモジュールがロードされ
る場合、ゲスト仮想マシンはデフォルト状態の起動ディスクには virtio ドライバーを使用できないことに注
意してください。
ドライバーは以下の順序でロードする必要があります。
1. vi rti o
2. vi rti o _ri ng
3. vi rti o _pci
4. vi rti o _bl k
5. vi rti o _net
vi rti o _net と vi rti o _bl k の順番のみ、変更が可能です。他のドライバーが異なる順番でロードされ
ると、機能しません。
次にモジュールを設定します。/etc/rc. d /rc. sysi ni t ファイルの以下のセクションを見つけます。
if [ -f /etc/rc.modules ]; then
/etc/rc.modules
fi
このセクションに以下の行を追加します。
if [ -f /etc/rc.modules ]; then
/etc/rc.modules
fi
modprobe
modprobe
modprobe
modprobe
modprobe
virtio
virtio_ring # Comment this out if you do not need block driver
virtio_blk # Comment this out if you do not need block driver
virtio_net # Comment this out if you do not need net driver
virtio_pci
ゲスト仮想マシンを再起動してカーネルモジュールをロードします。
virt io ドライバーを in it rd R AM ディスクに追加
84
⁠第1 0 章 KVM 準仮想化 (virt io) ドライバー
ここでは、initrd RAM ディスクに準仮想化モジュールを含めることで Red Hat Enterprise Linux 3.9 以降
のカーネルで virtio ドライバーのモジュールをロードする方法を説明します。mkinitrd ツールが initrd RAM
ディスクを設定して、モジュールをロードします。追加のモジュールは、mki ni trd コマンドの --with
パラメーターで指定します。カスタムの initrd RAM ディスクの作成に mki ni trd コマンドを使用する際
は、以下の一連のパラメーターをそのままの順序で追加してください。
--with virtio --with virtio_ring --with virtio_blk --with virtio_net -with virtio_pci
AMD 6 4 および In t el 6 4 の問題
AMD 64 システムには、virtio パッケージの x86 _6 4 バージョンを使用します。
Intel 64 システムには、virtio パッケージの i a32e バージョンを使用します。virtio の x86 _6 4 バージョン
を使用すると、Intel 64 システム上での起動中に ' Unreso l ved symbo l ' エラーが発生する可能性があり
ます。
ネットワークパフォーマンスの問題
virtio ネットワークドライバーを使用していてパフォーマンスが低い場合は、ホストシステムの GSO およ
び TSO 機能の設定を確認します。virtio ネットワークドライバーのパフォーマンスを最適化するには、
GSO および TSO オプションが無効になっている必要があります。
ホスト上で以下のコマンドを使用して (interface をゲストが使用するネットワークインターフェースに置
換)、GSO と TSO の設定ステータスを確認します。
# ethtool -k interface
ホスト上で以下のコマンドを使用して、GSO と TSO のオプションを無効にします。
# ethtool -K interface gso off
# ethtool -K interface tso off
virt io ドライバーの swap パーティション問題
virtio ブロックデバイスドライバーをアクティベートすると、swap パーティションが利用できない場合が
あります。この問題は、ディスクデバイス名の変更により発生する可能性があります。この問題を解決する
には、/etc/fstab ファイルを開き、以下のような swap パーティションを含む行を見つけます。
/dev/hda3
swap
swap defaults 0 0
virtio ドライバーは、/d ev/hd * 命名規則ではなく /d ev/vd * 命名規則を使用します。この問題を解決す
るには、/etc/fstab ファイルの誤った swap エントリーを /d ev/vd * 規則を使って、以下のように変
更します。
/dev/vda3 swap
swap defaults 0 0
変更を保存し、ゲスト仮想マシンを再起動します。これで仮想マシンに swap パーティションが作成されま
した。
10.5. 既存デバイスでの KVM virt io ドライバーの使用
85
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
ゲストにアタッチされている既存ハードディスクデバイスを変更して、仮想化 ID E ドライバーの代わりに
vi rti o ドライバーを使用することができます。このセクションの例では、libvirt 設定ファイルを編集しま
す。これらのステップを実行するためにゲスト仮想マシンをシャットダウンする必要はありませんが、変更
が適用されるには、ゲストを完全にシャットダウンして再起動する必要があります。
手順10.4 既存デバイスでの K VM virt io ドライバーの使用
1. この手順を実行する前に、「KVM Windows virtio ドライバーのインストール」 で説明されている
適切なドライバー (vi o sto r) がインストールされていることを確認してください。
2. root で vi rsh ed i t <g uestname> コマンドを実行し、デバイスの XML 設定ファイルを編集し
ます (例: vi rsh ed i t g uest1)。設定ファイルは、/etc/l i bvi rt/q emu にあります。
3. 以下の例は、仮想化 ID E ドライバーを使用したファイルベースのブロックデバイスです。これは、
virtio ドライバーを使用しない仮想マシンの通常のエントリーです。
<disk type='file' device='disk'>
<source file='/var/lib/libvirt/images/disk1.img'/>
<target dev='hda' bus='ide'/>
</disk>
4. virtio デバイスを使用するために、b u s= エントリーを vi rti o に変更します。ディスクが以前に
ID E だった場合は、hda や hdb、hdc などと同様のターゲットを持つことになりま
す。b u s= virt io に変更する場合は、ターゲットもそれに応じて vda や vdb、vdc に変更する必要
があります。
<disk type='file' device='disk'>
<source file='/var/lib/libvirt/images/disk1.img'/>
<target d ev= ' vd a' bus= ' vi rti o ' />
</disk>
5. d isk タグ内の ad d ress タグを削除します。これは、この手順を機能させるために必要な作業で
す。仮想マシンの次回スタート時に、libvirt が ad d ress タグを適切に再生成します。
別の方法としては、virtio ドライバーを使用して vi rt-manag er、vi rsh attach-d i sk、または
vi rsh attach-i nterface で新規デバイスを追加することもできます。
Virtio 使用方法の詳細については、libvirt の Web サイト http://www.linux-kvm.org/page/Virtio を参照して
ください。
10.6. KVM virt io ドライバーを使用した新規デバイスの作成
ここでは、KVM virtio ドライバーを使用した vi rt-manag er での新規デバイスの作成について説明しま
す。
別の方法としては、vi rsh attach-d i sk または vi rsh attach-i nterface コマンドで virtio ドライ
バーを使用して、デバイスをアタッチすることもできます。
重要
新規デバイスのインストールに進む前に、Windows ゲストにドライバーがインストールされている
ことを確認してください。ドライバーが利用可能でない場合、デバイスは認識されず、動作しませ
ん。
86
⁠第1 0 章 KVM 準仮想化 (virt io) ドライバー
手順10.5 virt io ストレージドライバーを使用してストレージデバイスを追加する
1. vi rt-manag er でゲスト名をダブルクリックしてゲスト仮想マシンを開きます
2. 電球 ボタンをクリックして 仮想ハードウェアの詳細表示 タブを開きます。
図10.27 仮想ハードウェアの詳細表示タブ
3. 仮想ハードウェアの詳細表示 タブで、ハードウェアを追加 ボタンをクリックします。
4. ハードウェアの種類を選択
ストレージ で ハードウェアの種類 を選びます。
図10.28 新たなハードウェア追加ウィザード
5. ストレージデバイスとドライバーの選択
新規ディスクイメージを作成するか、またはストレージプールボリュームを選択します。
デバイスの種類 を Vi rti o d i sk に設定して virtio ドライバーを使用します。
87
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
図10.29 新たなハードウェア追加ウィザード
完了 をクリックして終了します。
手順10.6 virt io ネットワークドライバーを使用してネットワークデバイスを追加する
1. vi rt-manag er でゲスト名をダブルクリックしてゲスト仮想マシンを開きます
2. 電球 ボタンをクリックして 仮想ハードウェアの詳細表示 タブを開きます。
図10.30 仮想ハードウェアの詳細表示タブ
3. 仮想ハードウェアの詳細表示 タブで、ハードウェアを追加 ボタンをクリックします。
4. ハードウェアの種類を選択
ハードウェアの種類 で ネットワーク を選びます。
88
⁠第1 0 章 KVM 準仮想化 (virt io) ドライバー
図10.31 新たなハードウェア追加ウィザード
5. ネットワークデバイスとドライバーの選択
D evi ce mo d el を vi rti o に設定して virtio ドライバーを使用します。必要なホストデバイス
を選択します。
89
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
図10.32 新たなハードウェア追加ウィザード
完了 をクリックして終了します。
すべての新規デバイスが追加されたら、仮想マシンを再起動します。Windows 仮想マシンは再起動するま
でデバイスを認識しない可能性があります。
90
⁠第1 1 章 ネットワークの設定
第11章 ネットワークの設定
この章では、libvirt ベースのゲスト仮想マシンが使用する一般的なネットワーク設定について説明します。
詳細な情報については、libvirt ネットワークアーキテクチャー資料 (http://libvirt.org/intro.html) を参照して
ください。
Red Hat Enterprise Linux 6 は以下の仮想化ネットワーク設定に対応しています。
Network Address Translation (NAT) を使用した仮想ネットワーク
PCI デバイス割り当てを使用して直接割り当てられた物理デバイス
PCIe SR-IOV を使用して直接割り当てられた仮想機能
ブリッジネットワーク
ゲスト仮想マシン上のネットワークサービスに外部ホストがアクセスするには、NAT またはネットワーク
ブリッジングを有効にするか、または PCI デバイスを直接割り当てる必要があります。
11.1. libvirt による Net work Address T ranslat ion (NAT )
ネットワーク接続共有の最も一般的な方法の 1 つは、Network Address Translation (NAT) 転送 (別名、仮
想ネットワーク) です。
ホスト設定
標準的な l i bvi rt インストールはすべて、デフォルトの仮想ネットワークで仮想マシンへの NAT ベース
の接続を提供します。vi rsh net-l i st --al l コマンドでこれが利用可能であること確認します。
# virsh net-list --all
Name
State
Autostart
----------------------------------------default
active
yes
存在しない場合は、サンプルのXML 設定ファイルを再度読み込んで、アクティブ化します。
# virsh net-define /usr/share/libvirt/networks/default.xml
デフォルトのネットワークは /usr/share/l i bvi rt/netwo rks/d efaul t. xml で定義されていま
す。
デフォルトのネットワークが自動的に開始するようマークします。
# virsh net-autostart default
Network default marked as autostarted
デフォルトのネットワークを開始します。
# virsh net-start default
Network default started
l i bvi rt デフォルトのネットワークが実行されると、分離されたブリッジデバイスがあることが分かりま
す。このデバイスには、物理インターフェースが追加されて いません 。新規デバイスは、NAT および IP
転送を使用して物理ネットワークに接続します。新規インターフェースを追加しないでください。
91
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
# brctl show
bridge name
virbr0
bridge id
8000.000000000000
STP enabled
yes
interfaces
l i bvi rt は i ptabl es ルールを追加します。このルール
は、INP UT 、FO R WAR D 、O UT P UT 、P O ST R O UT ING チェーンで vi rbr0 デバイスにアタッチされたゲ
スト仮想マシンから/へのトラフィックを可能にするものです。次に l i bvi rt は、i p_fo rward パラメー
ターの有効化を試みます。一部のアプリケーションが i p_fo rward を無効にする場合もあるの
で、/etc/sysctl . co nf に以下を追加することが最善の選択肢です。
net.ipv4.ip_forward = 1
ゲスト仮想マシンの設定
ホスト設定が完了したら、ゲスト仮想マシンはその名前をベースにした仮想ネットワークに接続可能になり
ます。ゲストをデフォルトの仮想ネットワークに接続するには、ゲストの
(/etc/l i bvi rtd /q emu/myg uest. xml などの) XML 設定ファイルで以下を使用します。
<interface type='network'>
<source network='default'/>
</interface>
注記
MAC アドレスの定義はオプションです。定義されない場合、MAC アドレスは自動生成され、ネット
ワークが使用するブリッジデバイスの MAC アドレスとして使用されます。MAC アドレスの手動設
定は、ご使用の環境内での一貫性や容易に参照できる状態を維持し、可能性は非常に低いものの競合
を回避するのに役立ちます。
<interface type='network'>
<source network='default'/>
<mac address='00:16:3e:1a:b3:4a'/>
</interface>
11.2. vhost -net の無効化
vho st-net モジュールは virtio ネットワーキング用のカーネルレベルのバックエンドで、virtio パケット
処理タスクをユーザー領域 (qemu プロセス) からカーネル (vho st-net ドライバー) に移すことで仮想化
オーバーヘッドを低減します。vhost-net は、virtio ネットワークインターフェースでのみ利用可能です。
vhost-net カーネルモジュールがロードされている場合、デフォルトですべての virtio インターフェース用
に有効化されています。ただし、vhost-net の使用時に特定のワークロードのパフォーマンスが低下した場
合は、インターフェース設定で無効にできます。
具体的には、UD P トラフィックがホストマシンからホスト上のゲスト仮想マシンに送信された場合、ゲス
ト仮想マシンの着信データ処理速度がホストマシンの送信速度より遅いと、パフォーマンスが低下する可能
性があります。この状況で vho st-net を有効にすると、UD P ソケットの受信バッファーをより早くオー
バーフローさせることになり、多大なパケットロスにつながります。このため、この状況ではトラフィック
を遅らせ、全体のパフォーマンスを上げるために、vho st-net を無効にすることが適切です。
92
⁠第1 1 章 ネットワークの設定
vho st-net を無効にするには、ゲスト仮想マシンの XML 設定ファイルにある<i nterface> サブ要素を
編集し、ネットワークを以下のように定義します。
<interface type="network">
...
<model type="virtio"/>
<driver name="qemu"/>
...
</interface>
ドライバー名を q emu に設定するとパケット処理を qemu ユーザー領域に強制するので、そのインスタン
スで vhost-net を事実上無効にします。
11.3. libvirt を使用したブリッジネットワーキング
ブリッジネットワーキング(別名、物理デバイス共有)は、物理デバイスを仮想マシン専用にするために使
用します。ブリッジングは多くの場合、高度なセットアップや複数のネットワークインターフェースを持
つサーバー上で使用されます。
eth0 インターフェースベースのブリッジ (br0 ) を作成するには、ホスト上で以下のコマンドを実行しま
す。
# virsh iface-bridge eth0 br0
重要
NetworkManager はブリッジングをサポートしません。ネットワークスクリプト
(/etc/sysco nfi g /netwo rk-scri pts/ ディレクトリー内にある) でネットワーキングを使用
するには、NetworkManager を無効にする必要があります。
#
#
#
#
chkconfig NetworkManager off
chkconfig network on
service NetworkManager stop
service network start
N et wo rkMan ag er を完全に無効にしたくない場合は、"NM_CONTROLLED=no" をブリッジに使用
されている i fcfg -* ネットワークスクリプトに追加します。
93
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
第12章 PCI デバイス割り当て
Red Hat Enterprise Linux 6 は、以下の 3 つのクラスのデバイスを仮想マシンに公開します。
エミュレートされたデバイス は、実際のハードウェアを模倣する純粋の仮想デバイスです。変換されて
いないゲストオペレーティングシステムは標準のインボックスドライバーを使ってこれらのデバイスと
動作できるようになります。
Virtio デバイス は、仮想マシン内で最適に動作するように設計された純粋の仮想デバイスです。Virtio デ
バイスは、エミュレートされたデバイスと似ていますが、Linux 以外の仮想マシンにはこれらデバイス
が必要とするドライバーがデフォルトで含まれていません。仮想マシンマネージャー (virt - man ag er)
や Red Hat Enterprise Virtualization Hypervisor といった仮想化管理ソフトウェアは、対応する Linux
以外のゲストオペレーティングシステムにこれらのドライバーを自動的にインストールします。
割り当てデバイス は、仮想マシンに公開されている物理デバイスです。この方法は、「パススルー」と
も呼ばれます。デバイス割り当てにより、仮想マシンは幅広いタスクで PCI デバイスへの独占アクセス
が可能になり、PCI デバイスはゲストオペレーティングシステムに物理的にアタッチされているかのよ
うに表示され、動作することが可能になります。
デバイス割り当ては、グラフィックスカードを除いて PCI Express デバイス上でサポートされていま
す。パラレル PCI デバイスは割り当てデバイスとしてのサポートが可能ですが、セキュリティーとシス
テム設定の競合により厳しい制限があります。
Red Hat Enterprise Linux 6 は、仮想マシン 1 台あたり 32 の PCI デバイススロットと、デバイススロッ
ト 1 つあたり 8 つの PCI 機能をサポートします。これにより、理論上はゲストあたり最大 256 の設定可能
な PCI 機能が提供されることになります。
しかし、この理論上の最大数は以下の制限に影響されます。
仮想マシンがサポートするのは、最大 8 つの割り当てデバイス機能です。
4 つの PCI デバイススロットは、デフォルトで 5 つのエミュレートされたデバイスに設定されていま
す。しかしユーザーは、ゲストオペレーティングシステムの操作に不要な場合、デフォルト設定のエ
ミュレートされたデバイスの内 2 つを明示的に削除できます (スロット 2 のビデオアダプターデバイス
と、通常はスロット 3 である一番下にある利用可能なスロットのメモリーバルーンドライバーデバイ
ス)。これにより、ユーザーは仮想マシン 1 台あたり最大 30 の PCI デバイススロット機能のサポートを
受けられます。
Red Hat Enterprise Linux 6.0 およびそれ以降は、仮想マシンへの割り当て PCI デバイスのホットプラグを
サポートします。しかし、PCI デバイスのホットプラグはスロットレベルで行われていることから、マルチ
機能の PCI デバイスをサポートしていません。マルチ機能の PCI デバイスは、静的デバイスの設定にのみ
推奨されます。
注記
Red Hat Enterprise Linux 6.0 では、ゲストオペレーティングシステムドライバーによるデバイスの
標準および拡張設定領域へのアクセスが制限されていました。Red Hat Enterprise Linux 6.0 での制
限は、Red Hat Enterprise Linux 6.1 で大幅に少なくなっており、より大型の PCI Express デバイ
スのセットが KVM ゲストに正常に割り当てられるようになっています。
セキュアなデバイス割り当ては、割り込み再マッピングのサポートも必要とします。プラットフォームが
割り込み再マッピングをサポートしない場合、デバイス割り当ては失敗します。開発環境で割り込み再マッ
ピングのサポートなしにデバイス割り当てを使用するには、allow_unsafe_assigned_interrupts
KVM モジュールパラメーターを 1 に設定します。
PCI デバイス割り当ては、Intel VT-d または AMD IOMMU 対応のハードウェアプラットフォーム上でのみ
94
⁠第1 2 章 PCI デバイス割り当て
利用可能です。PCI デバイス割り当てが機能するには、Intel VT-d または AMD IOMMU の仕様が BIOS で
有効化されている必要があります。
手順12.1 In t el システムでの PC I デバイス割り当て準備
1. In t el VT - d 仕様の有効化
Intel VT-d 仕様は、物理デバイスを直接仮想マシンに割り当てるためのハードウェアサポートを提
供します。これらの仕様は、Red Hat Enterprise Linux で PCI デバイス割り当てを使用するために
必要なものです。
Intel VT-d 仕様は、BIOS で有効化されている必要があります。システムメーカーの中には、これら
の仕様をデフォルトで無効としているところもあります。これらの仕様に言及するために使用され
る用語はメーカーによって異なります。該当する用語に関しては、システムメーカーの資料を参照
してください。
2. カーネル内で In t el VT - d をアクティブ化する
カーネル内で Intel VT-d をアクティブ化するには、intel_iommu=on パラメーターを
/bo o t/g rub/g rub. co nf ファイル内のカーネル行に追加します。
以下の修正例は、g rub. co nf ファイルで Intel VT-d がアクティブ化されたものです。
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.32-330.x86_645)
root (hd0,0)
kernel /vmlinuz-2.6.32-330.x86_64 ro
root=/dev/VolGroup00/LogVol00 rhgb quiet i ntel _i o mmu= o n
initrd /initrd-2.6.32-330.x86_64.img
3. 準備完了
システムを再起動して、変更を有効にします。これでシステムは、PCI デバイス割り当てに対応し
ます。
手順12.2 AMD システムでの PC I デバイス割り当て準備
1. AMD IO MMU 仕様の有効化
AMD IOMMU 仕様は、Red Hat Enterprise Linux で PCI デバイス割り当てを使用するために必要な
ものです。この仕様は、BIOS で有効化されている必要があります。システムメーカーの中には、
これらの仕様をデフォルトで無効にしているところもあります。
2. IO MMU カーネルサポートの有効化
amd_iommu=on を /bo o t/g rub/g rub. co nf 内のカーネルコマンド行に追加します。これで
AMD IOMMU 仕様は起動後に有効になります。
3. 準備完了
システムを再起動して、変更を有効にします。これでシステムは、PCI デバイス割り当てに対応し
ます。
95
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
12.1. virsh を使用した PCI デバイスの割り当て
このステップでは、KVM ハイパーバイザー上の仮想マシンに PCI デバイスを割り当てる方法を説明しま
す。
この例では、PCI 識別子コード pci _0 0 0 0 _0 1_0 0 _0 の PCIe ネットワークコントローラーと guest1rhel6-64 という名前の完全仮想化ゲストマシンを使います。
手順12.3 virsh を使用した PC I デバイスのゲスト仮想マシンへの割り当て
1. デバイスの特定
最初に、仮想マシンへのデバイス割り当てに指定されている PCI デバイスを特定します。l spci
コマンドを使用して利用可能な PCI デバイスをリストします。l spci の出力は g rep を使って絞
り込むことができます。
この例では、以下の出力で太字で表示されているイーサネットコントローラーを使用します。
# lspci | grep Ethernet
0 0 : 19 . 0 Ethernet co ntro l l er: Intel C o rpo rati o n 8256 7LM-2 G i g abi t
Netwo rk C o nnecti o n
01:00.0 Ethernet controller: Intel Corporation 82576 Gigabit
Network Connection (rev 01)
01:00.1 Ethernet controller: Intel Corporation 82576 Gigabit
Network Connection (rev 01)
このイーサネットコントローラーは、0 0 : 19 . 0 の短い識別子で表示されています。この PCI デバ
イスを仮想マシンに割り当てるには、vi rsh が使用する完全な識別子を見つける必要があります。
これを実行するには、vi rsh no d ed ev-l i st コマンドと g rep コマンドを組み合わせて使用
し、ホストマシンにアタッチされている特定の種類 (pci ) のデバイスすべてをリストします。次
に、使用するデバイスの短い識別子にマッピングされているストリングの出力を参照します。
この例では、短い識別子 0 0 : 19 . 0 でイーサネットコントローラーにマッピングされているスト
リングを太字で表示しています。完全な識別子では、: と . の文字がアンダースコアに置換されて
いることに注意してください。
# virsh nodedev-list --cap pci
pci_0000_00_00_0
pci_0000_00_01_0
pci_0000_00_03_0
pci_0000_00_07_0
pci_0000_00_10_0
pci_0000_00_10_1
pci_0000_00_14_0
pci_0000_00_14_1
pci_0000_00_14_2
pci_0000_00_14_3
pci_0000_0 0 _19 _0
pci_0000_00_1a_0
pci_0000_00_1a_1
pci_0000_00_1a_2
pci_0000_00_1a_7
pci_0000_00_1b_0
pci_0000_00_1c_0
96
⁠第1 2 章 PCI デバイス割り当て
pci_0000_00_1c_1
pci_0000_00_1c_4
pci_0000_00_1d_0
pci_0000_00_1d_1
pci_0000_00_1d_2
pci_0000_00_1d_7
pci_0000_00_1e_0
pci_0000_00_1f_0
pci_0000_00_1f_2
pci_0000_00_1f_3
pci_0000_01_00_0
pci_0000_01_00_1
pci_0000_02_00_0
pci_0000_02_00_1
pci_0000_06_00_0
pci_0000_07_02_0
pci_0000_07_03_0
使用するデバイスを呼び出す PCI デバイス番号は他のステップで必要になるので、書き留めます。
2. デバイス情報の確認
ドメインやバス、機能の情報は、vi rsh no d ed ev-d umpxml コマンドからの出力で入手できま
す。
virsh nodedev-dumpxml pci_0000_00_19_0
<device>
<name>pci_0000_00_19_0</name>
<parent>computer</parent>
<driver>
<name>e1000e</name>
</driver>
<capability type='pci'>
<domain>0</domain>
<bus>0</bus>
<slot>25</slot>
<function>0</function>
<product id='0x1502'>82579LM Gigabit Network
Connection</product>
<vendor id='0x8086'>Intel Corporation</vendor>
<capability type='virt_functions'>
</capability>
</capability>
</device>
3. 必要な設定詳細の決定
設定ファイルで必要な値については、vi rsh no d ed ev-d umpxml pci _0 0 0 0 _0 0 _19 _0 コ
マンドの出力を参照します。
別の方法では、スロットと機能の値を (10 進法から) 16 進法に変換して PCI bus アドレスを確認し
ます。出力の最初に " 0x" を加えることで、コンピューターに値が 16 進法の値であることを知らせ
ます。
サンプルのデバイスでは、以下の値となっています。bus = 0、slot = 25、function = 0。10 進法
の設定では、これらの値を使用します。
97
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
bus='0'
slot='25'
function='0'
10 進法から 16 進法に値を変換したい場合は、以下の例で示すように pri ntf ユーティリティーを
使います。
$ printf %x 0
0
$ printf %x 25
19
$ printf %x 0
0
サンプルのデバイスでは、設定ファイルで以下の 16 進法の値を使います。
bus='0x0'
slot='0x19'
function='0x0'
4. 設定詳細の追加
仮想マシン名を特定して vi rsh ed i t を実行し、<so urce> セクションにデバイスエントリーを
追加して PCI デバイスをゲスト仮想マシンに割り当てます。
# virsh edit guest1-rhel6-64
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0' bus='0x0' slot='0x19' function='0x0'/>
</source>
</hostdev>
別の方法では、仮想マシン名とゲストの XML ファイルを特定して vi rsh attach-d evi ce を実
行します。
virsh attach-device guest1-rhel6-64 fi l e. xml
5. デバイス管理の許可
SELinux boolean を設定して仮想マシンからの PCI デバイス管理を可能にします。
# setsebool -P virt_use_sysfs 1
6. 仮想マシンの開始
# virsh start guest1-rhel6-64
これで PCI デバイスは正しく仮想マシンに割り当てられ、ゲストオペレーティングシステムにアクセスで
きます。
12.2. virt -manager を使用した PCI デバイスの割り当て
98
⁠第1 2 章 PCI デバイス割り当て
PCI デバイスは、グラフィカル vi rt-manag er ツールを使ってゲスト仮想マシンに追加することができま
す。以下の手順では、Gigabit イーサネットコントローラーをゲスト仮想マシンに追加します。
手順12.4 virt - man ag er を使用した PC I デバイスのゲスト仮想マシンへの割り当て
1. ハードウェア設定を開く
ゲスト仮想マシンを開き、ハードウェアを追加 ボタンをクリックして新規デバイスを仮想マシン
に追加します。
図12.1 仮想マシンのハードウェア情報ウィンドウ
2. PC I デバイスの選択
左側の ハードウェア リストから PC I H o st D evice を選択します。
未使用の PCI デバイスを選択します。ホスト上で使用中の PCI デバイスを選択するとエラーが発生
するので注意してください。以下の例では、予備の 82576 ネットワークデバイスが使用されま
す。完了 をクリックして設定を終了します。
99
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
図12.2 新たな仮想ハードウェア追加ウィザード
3. 新規デバイスの追加
設定が完了し、ゲスト仮想マシンはこれで PCI デバイスに直接アクセスできます。
100
⁠第1 2 章 PCI デバイス割り当て
図12.3 仮想マシンのハードウェア情報ウィンドウ
12.3. virt -inst all を使用した PCI デバイスの割り当て
virt - in st all を使用して PCI デバイスを割り当てるには、--host-device パラメーターを使います。
手順12.5 virt - in st all を使用した仮想マシンへの PC I デバイス割り当て
1. デバイスの特定
ゲスト仮想マシンへのデバイス割り当てに指定されているPCI デバイスを特定します
# lspci
00:19.0
Network
01:00.0
Network
01:00.1
Network
| grep Ethernet
Ethernet controller: Intel Corporation 82567LM-2 Gigabit
Connection
Ethernet controller: Intel Corporation 82576 Gigabit
Connection (rev 01)
Ethernet controller: Intel Corporation 82576 Gigabit
Connection (rev 01)
101
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
vi rsh no d ed ev-l i st コマンドがシステムにアタッチされている全デバイスをリストし、各
PCI デバイスをストリングで特定します。出力を PCI デバイスに限定するには、以下のコマンドを
実行します。
# virsh nodedev-list --cap pci
pci_0000_00_00_0
pci_0000_00_01_0
pci_0000_00_03_0
pci_0000_00_07_0
pci_0000_00_10_0
pci_0000_00_10_1
pci_0000_00_14_0
pci_0000_00_14_1
pci_0000_00_14_2
pci_0000_00_14_3
pci_0000_00_19_0
pci_0000_00_1a_0
pci_0000_00_1a_1
pci_0000_00_1a_2
pci_0000_00_1a_7
pci_0000_00_1b_0
pci_0000_00_1c_0
pci_0000_00_1c_1
pci_0000_00_1c_4
pci_0000_00_1d_0
pci_0000_00_1d_1
pci_0000_00_1d_2
pci_0000_00_1d_7
pci_0000_00_1e_0
pci_0000_00_1f_0
pci_0000_00_1f_2
pci_0000_00_1f_3
pci_0000_01_00_0
pci_0000_01_00_1
pci_0000_02_00_0
pci_0000_02_00_1
pci_0000_06_00_0
pci_0000_07_02_0
pci_0000_07_03_0
PCI デバイス番号は他のステップで必要になるので、書き留めます。
ドメインやバス、機能の情報は、vi rsh no d ed ev-d umpxml コマンドからの出力で入手できま
す。
# virsh nodedev-dumpxml pci_0000_01_00_0
<device>
<name>pci_0000_01_00_0</name>
<parent>pci_0000_00_01_0</parent>
<driver>
<name>igb</name>
</driver>
<capability type='pci'>
<domain>0</domain>
<bus>1</bus>
<slot>0</slot>
102
⁠第1 2 章 PCI デバイス割り当て
<function>0</function>
<product id='0x10c9'>82576 Gigabit Network Connection</product>
<vendor id='0x8086'>Intel Corporation</vendor>
<capability type='virt_functions'>
</capability>
</capability>
</device>
2. デバイスの追加
vi rsh no d ed ev コマンドからの PCI 識別子の出力を --host-device パラメーターの値とし
て使います。
virt-install \
--name=guest1-rhel6-64 \
--disk path=/var/lib/libvirt/images/guest1-rhel6-64.img,size=8 \
--nonsparse --graphics spice \
--vcpus=2 --ram=2048 \
--location=http://example1.com/installation_tree/RHEL6.1-Serverx86_64/os \
--nonetworks \
--os-type=linux \
--os-variant=rhel6 \
--host-device=pci_0000_01_00_0
3. インストールの完了
これでゲストインストールが完了しました。PCI デバイスはゲストにアタッチされています。
12.4 . 割り当てた PCI デバイスの切り離し
ホストの PCI デバイスがゲストマシンに割り当てられると、ホストはこのデバイスを使用できなくなりま
す。このセクションでは、vi rsh または virt - man ag er を使ってデバイスをゲストから切り離す方法を説
明します。これによって、ホストがデバイスを使えるようになります。
手順12.6 virsh を使用した PC I デバイスのゲストからの切り離し
1. デバイスの切り離し
以下のコマンドを使ってゲストの XML ファイル内から PCI デバイスを削除することで、ゲストか
ら PCI デバイスを切り離します。
# virsh detach-device name_of_guest file.xml
2. デバイスのホストへの再アタッチ ( オプション)
デバイスが managed モードの場合は、このステップを飛ばします。デバイスは自動的にホストに
戻ります。
デバイスが managed モードを使用していない場合は、以下のコマンドを使用して PCI デバイスを
ホストマシンに再アタッチします。
# virsh nodedev-reattach device
103
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
たとえば、pci _0 0 0 0 _0 1_0 0 _0 デバイスをホストに再アタッチするには、以下のようにしま
す。
virsh nodedev-reattach pci_0000_01_00_0
これでこのデバイスはホストで使用できます。
手順12.7 virt - man ag er を使用した PC I デバイスのゲストからの切り離し
1. 仮想ハードウェアの詳細ウィンドウを開く
virt - man ag er で、対象のデバイスを含む仮想マシンをダブルクリックします。仮想ハードウェ
アの詳細表示 ボタンを選択し、仮想ハードウェアのリストを表示させます。
図12.4 仮想ハードウェア詳細ボタン
2. デバイスの選択および削除
左側パネルの仮想デバイスリストから切り離す PCI デバイスを選択します。
図12.5 切り離す PC I デバイスの選択
104
⁠第1 2 章 PCI デバイス割り当て
削除 ボタンをクリックします。これでデバイスがホストで使用可能になります。
105
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
第13章 SR-IOV
13.1. はじめに
PCI-SIG (PCI Special Interest Group) が開発したシングルルート I/O 仮想化 (SR-IOV) 仕様は、単一デバ
イスを複数の仮想マシンで共有できる PCI デバイス割り当てにおける標準です。SR-IOV は、仮想マシンの
デバイスパフォーマンスを改善します。
図13.1 SR - IO V のしくみ
SR-IOV は、シングルルート機能 (たとえば、シングルイーサネットポート) を複数の別個の物理デバイスの
ように見せることができます。SR-IOV 対応の物理デバイスは、PCI 設定領域で複数機能のように見せる設
定ができます。各デバイスには、Base Address Registers (BAR) を備えた独自の設定領域があります。
SR-IOV は、以下の 2 つの PCI 機能を使用します。
物理機能 (PF) は、SR-IOV 機能を含む完全な PCIe デバイスです。物理機能は、通常の PCI デバイスと
して検出し、管理し、設定されます。物理機能は、仮想機能を割り当てることで SR-IOV の機能性を設
定し、管理します。
仮想機能 (VF) は、I/O のみを処理する単純な PCIe 機能です。それぞれの仮想機能は、物理機能に由来
しています。デバイス 1 台に備わる仮想機能の数は、デバイスのハードウェアによって制限されます。
物理デバイスであるシングルイーサネットポートは、仮想マシンで共有可能な多くの仮想機能を呼び出
すことができます。
ハイパーバイザーは 1 つまたはそれ以上の仮想機能を仮想マシンに呼び出すことができます。仮想機能の設
定領域は、ゲストに提示された設定領域にマッピングされます。
各仮想機能は実際のハードウェアリソースを必要とするので、一度に 1 つのゲストにしかマッピングできま
せん。仮想マシンは複数の仮想機能を持つことができます。仮想機能は、通常のネットワークカードがオペ
レーティングシステムに対して表示されるのと同じ方法でネットワークカードとして表示されます。
SR-IOV ドライバーはカーネル内に実装されています。コア実装は PCI サブシステム内に内包されています
が、物理機能 (PF) と仮想機能 (VF) デバイスの両方にもドライバーサポートが必要です。SR-IOV 対応デバ
イスは、物理機能から仮想機能を割り当てることができます。仮想機能は、キューやレジスターセットなど
のリソースで物理 PCI デバイスにバックアップされている PCI デバイスのように表示されます。
106
⁠第1 3章 SR- IO V
SR - IO V の利点
SR-IOV デバイスは、1 つの物理ポートを複数の仮想マシンと共有できます。
仮想機能は、ネイティブに近いパフォーマンスを発揮し、準仮想化ドライバーやエミュレートされたアクセ
スよりも優れたパフォーマンスを提供します。仮想機能ではデータがハードウェアによって管理および制御
されるため、同一の物理サーバー上における仮想マシン間でのデータ保護が提供されます。
これらの機能により、データセンター内でのホスト上の仮想マシン密度は高くなります。
SR-IOV は、複数ゲストとのデバイスの帯域幅を有効活用できます。
13.2. SR-IOV の使用
このセクションでは、SR-IOV 対応のマルチポイントネットワークカードの仮想機能をネットワークデバイ
スとして仮想マシンに割り当てる、PCI パススルーの使い方を説明します。
vi rsh ed i t または vi rsh attach-d evi ce コマンドで <hostdev> 内のデバイスエントリーを追加
することにより、SR-IOV 仮想機能を仮想マシンに割り当てられます。しかし、通常のネットワークデバイ
スと違って SR-IOV VF は永久的な固有の MAC アドレスを持たず、ホストが再起動するたびに新たな MAC
アドレスを割り当てられるので、これは問題となります。このため、再起動後にゲストに同じ仮想機能が割
り当てられても、ホストが再起動すると、ゲストは新規の MAC アドレスを持つための新たなネットワーク
アダプターを決定します。その結果、ゲストは毎回新たなハードウェアが接続されたと考え、通常、ゲスト
のネットワークの再設定を要求することになります。
libvirt-0.9.10 およびそれ以降には、<interface type='hostdev'> インタフェースデバイスが含まれ
ています。このインタフェースデバイスを使って、lib virt は指定されたネットワーク特定のハードウェア/
スイッチの初期化をまず行います (MAC アドレスや VLAN タグ、802.1Qbh virtualport パラメーターの設
定など)。その後に、ゲストへの PCI デバイス割り当てを実行します。
<interface type='hostdev'> インタフェースデバイスの使用には、以下が必要です。
SR-IOV 対応ネットワークカード
Intel VT-d または AMD IOMMU 拡張をサポートするホストハードウェア
割り当てられる仮想機能の PCI アドレス
重要
SR-IOV デバイスを仮想マシンに割り当てるには、ホストハードウェアが Intel VT-d または AMD
IOMMU 仕様に対応している必要があります。
SR-IOV ネットワークデバイスを Intel または AMD システムにアタッチするには、以下の手順にしたがい
ます。
手順13.1 SR - IO V ネットワークデバイスを In t el または AMD システムにアタッチする
1. In t el VT - d または AMD IO MMU 仕様を B IO S およびカーネル内で有効にする
Intel システムでは、Intel VT-d が有効化されていない場合、BIOS でこれを有効にします。BIOS
およびカーネル内での Intel VT-d の有効化に関しては、手順12.1「Intel システムでの PCI デバイス
割り当て準備」 を参照してください。
Intel VT-d が有効化され、機能している場合は、このステップを飛ばしてください。
107
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
AMD システムでは、AMD IOMMU 仕様が有効化されていない場合、BIOS でこれを有効にします。
BIOS での IOMMU の有効化に関しては、手順12.2「AMD システムでの PCI デバイス割り当て準
備」 を参照してください。
2. サポートの確認
SR-IOV 対応の PCI デバイスが検出されるかどうかを確認します。この例では、SR-IOV 対応の
Intel 82576 ネットワークインタフェースカードがリストされています。l spci コマンドを使って
デバイスが検出されたかどうかを確認します。
# lspci
03:00.0
Network
03:00.1
Network
Ethernet controller: Intel Corporation 82576 Gigabit
Connection (rev 01)
Ethernet controller: Intel Corporation 82576 Gigabit
Connection (rev 01)
出力が変更されて、他のデバイスがすべて削除されたことに注意してください。
3. SR - IO V カーネルモジュールの開始
デバイスが対応していれば、ドライバーカーネルモジュールがカーネルによって自動的にロードさ
れます。オプションのパラメーターは、mo d pro be コマンドを使ってモジュールに送信できま
す。Intel 82576 ネットワークインタフェースカードは、i g b ドライバーカーネルモジュールを使
用します。
# modprobe igb [<option>=<VAL1>,<VAL2>,]
# lsmod |grep igb
igb
87592 0
dca
6708
1 igb
4. 仮想機能のアクティブ化
i g b モジュールの max_vfs パラメーターは、最大数の仮想機能を割り当てます。max_vfs パラ
メーターにより、ドライバーは最大パラメーターの値までの仮想機能を発生させます。このカード
では、有効な範囲は 0 から 7 です。
モジュールを削除して、変数を変更します。
# modprobe -r igb
max_vfs を 7 またはご使用のデバイスがサポートする最大数の仮想機能数に設定し、モジュール
を再起動します。
# modprobe igb max_vfs=7
5. 仮想機能に一貫性を持たせる
/etc/mo d pro be. d にあるすべてのファイルに o pti o ns i g b max_vfs= 7 の行を追加し、仮
想機能に一貫性を持たせます。たとえば、以下のようになります。
# echo "options igb max_vfs=7" >>/etc/modprobe.d/igb.conf
6. 新たな仮想機能の検証
108
⁠第1 3章 SR- IO V
l spci コマンドを使用して、Intel 82576 ネットワークデバイスにアタッチされ、新たに追加され
た仮想機能をリストします (別の方法では、g rep を使って Vi rtual Functi o n、または Virtual
Function をサポートするデバイスを検索します。)。
# lspci | grep 82576
0b:00.0 Ethernet controller:
Network Connection (rev 01)
0b:00.1 Ethernet controller:
Network Connection(rev 01)
0b:10.0 Ethernet controller:
Function (rev 01)
0b:10.1 Ethernet controller:
Function (rev 01)
0b:10.2 Ethernet controller:
Function (rev 01)
0b:10.3 Ethernet controller:
Function (rev 01)
0b:10.4 Ethernet controller:
Function (rev 01)
0b:10.5 Ethernet controller:
Function (rev 01)
0b:10.6 Ethernet controller:
Function (rev 01)
0b:10.7 Ethernet controller:
Function (rev 01)
0b:11.0 Ethernet controller:
Function (rev 01)
0b:11.1 Ethernet controller:
Function (rev 01)
0b:11.2 Ethernet controller:
Function (rev 01)
0b:11.3 Ethernet controller:
Function (rev 01)
0b:11.4 Ethernet controller:
Function (rev 01)
0b:11.5 Ethernet controller:
Function (rev 01)
Intel Corporation 82576 Gigabit
Intel Corporation 82576 Gigabit
Intel Corporation 82576 Virtual
Intel Corporation 82576 Virtual
Intel Corporation 82576 Virtual
Intel Corporation 82576 Virtual
Intel Corporation 82576 Virtual
Intel Corporation 82576 Virtual
Intel Corporation 82576 Virtual
Intel Corporation 82576 Virtual
Intel Corporation 82576 Virtual
Intel Corporation 82576 Virtual
Intel Corporation 82576 Virtual
Intel Corporation 82576 Virtual
Intel Corporation 82576 Virtual
Intel Corporation 82576 Virtual
PCI デバイスの識別子は、l spci コマンドの -n パラメーターで見つけます。物理機能
は、0 b: 0 0 . 0 および 0 b: 0 0 . 1 に対応しています。仮想機能にはすべて Vi rtual Functi o n
と記されています。
7. virsh を使用してデバイスの有無を確認する
デバイスを仮想マシンに追加する前に、l i bvi rt サービスはそのデバイスを認識する必要があり
ます。l i bvi rt は、l spci の出力に類似した表示を使用します。l spci の出力では、すべての
句読点とセミコロン (;) およびピリオド (. ) は、アンダースコア (_) に変換されます。
vi rsh no d ed ev-l i st コマンドと g rep コマンドを使って、利用可能なホストデバイスのリス
トから Intel 82576 ネットワークデバイスを選び出します。この例の 0b は、Intel 82576 ネット
ワークデバイスのフィルターです。これはお使いのシステムによっても異なり、結果的にデバイス
がさらに加わる場合もあります。
# virsh nodedev-list | grep 0b
pci_0000_0b_00_0
pci_0000_0b_00_1
109
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
pci_0000_0b_10_0
pci_0000_0b_10_1
pci_0000_0b_10_2
pci_0000_0b_10_3
pci_0000_0b_10_4
pci_0000_0b_10_5
pci_0000_0b_10_6
pci_0000_0b_11_7
pci_0000_0b_11_1
pci_0000_0b_11_2
pci_0000_0b_11_3
pci_0000_0b_11_4
pci_0000_0b_11_5
リストには、仮想機能と物理機能のシリアル番号が表示されます。
8. virsh を使用してデバイスの詳細を確認する
pci _0 0 0 0 _0 b_0 0 _0 は物理機能の 1 つで、pci _0 0 0 0 _0 b_10 _0 はこの物理機能に対応する
最初の仮想機能です。vi rsh no d ed ev-d umpxml コマンドを使って、両方のデバイスの詳細な
出力を表示します。
# virsh nodedev-dumpxml pci_0000_0b_00_0
<device>
<name>pci_0000_0b_00_0</name>
<parent>pci_0000_00_01_0</parent>
<driver>
<name>igb</name>
</driver>
<capability type='pci'>
<domain>0</domain>
<bus>11</bus>
<slot>0</slot>
<function>0</function>
<product id='0x10c9'>82576 Gigabit Network
Connection</product>
<vendor id='0x8086'>Intel Corporation</vendor>
</capability>
</device>
# virsh nodedev-dumpxml pci_0000_0b_10_0
<device>
<name>pci_0000_0b_10_0</name>
<parent>pci_0000_00_01_0</parent>
<driver>
<name>igbvf</name>
</driver>
<capability type='pci'>
<domain>0</domain>
<bus>11</bus>
<slot>16</slot>
<function>0</function>
110
⁠第1 3章 SR- IO V
<product id='0x10ca'>82576 Virtual Function</product>
<vendor id='0x8086'>Intel Corporation</vendor>
</capability>
</device>
この例では、仮想機能 pci _0 0 0 0 _0 b_10 _0 を ステップ 9 の仮想マシンに追加します。仮想機
能の bus、sl o t、functi o n パラメーターは、デバイスを追加するのに必要になります。
/tmp/new-i nterface. xml などの一時 XML ファイルにこれらのパラメーターをコピーしま
す。
<interface type='hostdev' managed='yes'>
<source>
<address type='pci' domain='0' bus='11' slot='16'
function='0'/>
</source>
</interface>
注記
MAC アドレスは、指定されない場合は自動生成されます。<virtualport> 要素は、
802.11Qbh ハードウェアスウィッチに接続する場合のみ使用されます。<vlan> 要素は、
Red Hat Enterprise Linux 6.4 で初めて導入されたもので、ゲストのデバイスを 42 にタグ
付けされた VLAN 上に透過的に配置します。
仮想マシンは、物理アダプターが提供し、MAC アドレスが設定されたタイプのネットワー
クデバイスをスタート時に認識します。このMAC アドレスは、ホストおよびゲストが再起動
しても変化しません。
以下の <interface> の例では、<mac address>、<virtualport>、<vlan> 要素オ
プションの構文を表示しています。実際には、<vlan> または <virtualport> を、例の
ように両方同時にではなく、どちらかを使用します。
...
<devices>
...
<interface type='hostdev' managed='yes'>
<source>
<address type='pci' domain='0' bus='11' slot='16'
function='0'/>
</source>
<mac address='52:54:00:6d:90:02'>
<vlan>
<tag id='42'/>
</vlan>
<virtualport type='802.1Qbh'>
<parameters profileid='finance'/>
</virtualport>
</interface>
...
</devices>
9. ⁠
111
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
仮想機能を仮想マシンに追加する
上記のステップで作成された一時ファイルで以下のコマンドを使用して、仮想機能を仮想マシンに
追加します。これで新規デバイスは即座にアタッチされ、これ以降のゲスト再スタートにも保存さ
れます。
virsh attach-device MyGuest /tmp/new-i nterface. xml
--config
--co nfi g オプションを使用すると、これ以降のゲスト再スタート後も新規デバイスが確実に利
用可能になります。
仮想マシンが新規ネットワークインタフェースカードを検出します。この新規カードが、SR-IOV デバイス
の仮想機能です。
13.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
このエラーは多くの場合、すでに別のゲストかホスト自体に割り当てられているデバイスが引き
起こすものです。
ゲストの移行、保存、ダンプ時のエラー
仮想マシンの移行およびダンプを試行すると、以下のようなエラーが発生する場合があります。
# virsh dump --crash 5 /tmp/vmcore
error: Failed to core dump domain 5 to /tmp/vmcore
error: internal error unable to execute QEMU command 'migrate':
An undefined
error has occurred
デバイス割り当ては、仮想マシンがスタートした特定のホスト上のハードウェアを使用するた
め、デバイス割り当ての使用中は、ゲストの移行および保存がサポートされません。現在は、同
様の制限がゲストのコアダンピングにも適用されます。これは将来、変更される可能性がありま
す。
112
⁠第1 4 章 KVM ゲストのタイミング管理
第14章 KVM ゲストのタイミング管理
仮想化では、ゲスト仮想マシンのタイミング管理に内在する各種の課題があります。仮想マシン内の割り込
みは実際の割り込みではなく、ホストマシンがゲスト仮想マシンに挿入しているものです。このため、割り
込みは常に同時かつ即座に配信できるわけではありません。ホストは別のゲスト仮想マシンを実行していた
り、別のプロセスを実行している場合もあり、割り込みに通常必要となる正確なタイミングを得ることが常
に可能とは限りません。
セッションの妥当性やマイグレーション、他のネットワークアクティビティーはタイムスタンプに依存し
て正確性を保持しているため、正確なタイミング管理機能を実行していないゲスト仮想マシンは、ネット
ワークアプリケーションおよびプロセスに関して問題が発生する可能性があります。
KVM は、ゲスト仮想マシンに準仮想化クロック (kvm- clo ck) を提供することにより、この問題に対処しま
す。しかし、時間管理が不正確な場合に影響を受ける可能性のあるアクティビティーの前には、時間をテス
トすることが依然として重要です。
注記
Red Hat Enterprise Linux 5.5 およびそれ以降、また Red Hat Enterprise Linux 6.0 およびそれ以降
は、デフォルトのクロックソースに kvm- clo ck を使用します。kvm- clo ck なしでこれらを実行す
るには特別な設定が必要になり、この方法は推奨されません。
重要
ホストとゲスト仮想マシンで、Network Time Protocol (NTP) デーモンが稼働している必要がありま
す。ntpd サービスを有効にしてください。
# service ntpd start
デフォルトの起動シーケンスに ntpd サービスを追加します。
# chkconfig ntpd on
クロックの実行速度と参照クロックソースとの違いが 0.05% 以下であれば、ntpd サービスはク
ロックスキューの影響を修正します。ntp 起動スクリプトが必要に応じて起動時のシステムクロッ
クを調整することで、参照時間からのクロックのオフセットを調整します。
14 .1. 不変タイムスタンプカウンター (T SC)
最新の Intel と AMD の CPU は、不変タイムスタンプカウンター (TSC) を提供します。不変 TSC のカウン
ト頻度は、たとえば CPU コア自体が節電ポリシーに従うために周波数を変更しても変わりません。不変
TSC の周波数を備えた CPU は、KVM ゲストで TSC をクロックソースとして使用するために必要です。
co nstant_tsc フラグが付いている場合には、CPU は 不変 TSC を搭載しています。CPU に
co nstant_tsc フラグが付いているかどうかを確認するには、以下のコマンドを実行します。
$ cat /proc/cpuinfo | grep constant_tsc
113
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
いずれかの出力が表示された場合は、CPU に co nstant_tsc ビットが搭載されていることになります。
出力が全く表示されなかった場合には、以下の手順にしたがってください。
14 .1.1. 不変 T SC を搭載していないホストの設定
不変 TSC の周波数のないシステムは、仮想マシンのクロックソースに TSC を使用できず、追加設定が必
要になります。電源管理機能により正確な時間管理が妨げられるので、KVM を使用して仮想マシンで正確
な時間を管理するには、この機能を無効にする必要があります。
重要
以下に説明する手順は、AMD リビジョン F の CPU のみが対象となります。
CPU に co nstant_tsc ビットが搭載されていない場合には、電源管理機能をすべて無効にします
(BZ #513138)。各システムには、時間管理のためのタイマーが複数あります。TSC は、ホスト上では安定
していません。これは、cpufreq の変化やディープ C ステート、より高速な TSC を搭載したホストへの
移行などが原因となる場合があります。ディープ C スリープ状態に入ると、TSC が停止する可能性があり
ます。カーネルがディープ C ステートを使用しないようにするには、ホスト上の g rub. co nf ファイルの
カーネルブートオプションに、pro cesso r. max_cstate= 1 を追記します。
title Red Hat Enterprise Linux (2.6.32-330.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-330.x86_64 ro root=/dev/VolGroup00/LogVol00 rhgb
quiet \
processor.max_cstate=1
/etc/sysco nfi g /cpuspeed 設定ファイルを編集して MIN_SP EED と MAX_SP EED の変数を使用可能
な最高の周波数に変更することにより、cpufreq を無効にします (co nstant_tsc が搭載されていないホ
ストのみ必要)。有効な上限値
は、/sys/d evi ces/system/cpu/cpu*/cpufreq /scal i ng _avai l abl e_freq uenci es ファイ
ルに記載されています。
14 .2. Red Hat Ent erprise Linux ゲストで必要なパラメーター
一部の Red Hat Enterprise Linux ゲスト仮想マシンには、追加のカーネルパラメーターが必要です。これ
らのパラメーターは、ゲスト仮想マシンの /bo o t/g rub/g rub. co nf ファイルの /kernel の行の末尾
に追記することで設定できます。
以下の表は、Red Hat Enterprise Linux のバージョンと各システムで必要となるパラメーターを表示してい
ます。
表14 .1 カーネルパラメーター要件
R ed H at En t erp rise Lin u x バージョン
ゲストの追加カーネルパラメーター
準仮想化クロック搭載の 6.0 AMD 64/Intel 64
準仮想化クロックを搭載していない 6.0
AMD 64/Intel 64
準仮想化クロック搭載の 5.5 AMD 64/Intel 64
準仮想化クロックを搭載していない 5.5
AMD 64/Intel 64
準仮想化クロック搭載の 5.5 x86
追加のパラメーターは不要
notsc lpj=n
114
追加のパラメーターは不要
notsc lpj=n
追加のパラメーターは不要
⁠第1 4 章 KVM ゲストのタイミング管理
R ed H at En t erp rise Lin u x バージョン
ゲストの追加カーネルパラメーター
準仮想化クロックを搭載していない 5.5 x86
5.4 AMD 64/Intel 64
5.4 x86
5.3 AMD 64/Intel 64
5.3 x86
4.8 AMD 64/Intel 64
4.8 x86
3.9 AMD 64/Intel 64
3.9 x86
clocksource=acpi_pm lpj=n
notsc
clocksource=acpi_pm
notsc
clocksource=acpi_pm
notsc
clock=pmtmr
追加のパラメーターは不要
追加のパラメーターは不要
注記
lpj パラメーターは、ゲスト仮想マシンが稼働する特定の CPU のloops per jiffy 値と同じ数値を必
要とします。この値が不明な場合は、lpj パラメーターを設定しないでください。
警告
divider カーネルパラメーターはこれまで、高い即応性要件のない Red Hat Enterprise Linux 4 お
よび 5 ゲスト仮想マシンやゲスト密度の高いシステム上にある Red Hat Enterprise Linux 4 および
5 ゲスト仮想マシンに推奨されていました。今では、Red Hat Enterprise Linux 4 およびバージョン
5.8 より前の Red Hat Enterprise Linux 5 を実行するゲストでのこのカーネルパラメーターの使用は
推奨されていません。
Red Hat Enterprise Linux 5 のバージョン 5.8 およびそれ以降において、divider は、タイマー割
り込みの頻度を下げることでスループットを改善できます。たとえば、HZ= 10 0 0 で、 divider
が 10 に設定されると (つまり、d i vi d er= 10 )、期間ごとのタイマーの割り込み数がデフォルト値
(1000) から 100 (デフォルト値の 1000 ÷ divider 値 10) に変わります。
BZ #698842 では、divider パラメーターによる割り込みや tick recording とのやりとりが記述さ
れています。 このバグは Red Hat Enterprise Linux 5.8 の時点で修正されています。ただし、Red
Hat Enterprise Linux 4 またはバージョン 5.8 より前の Red Hat Enterprise Linux 5 バージョンを
使用するゲストでは、依然として divider パラメーターによるカーネルパニックが発生する可能性
があります。
Red Hat Enterprise Linux 3 の場合にはこのパラメーターが実装されなかったため Red Hat
Enterprise Linux 3 のゲストへの影響はありません。
Red Hat Enterprise Linux 6 には割り込み数が固定されたクロック割り込みはありません。ティッ
クレスモード で動作し、必要に応じて動的にタイマーを使用します。したがって、 Red Hat
Enterprise Linux 6 では divider パラメーターは不要であり、Red Hat Enterprise Linux 6 のゲス
トへの影響もありません。
14 .3. Windows Server 2003 および Windows XP ゲストでのリアルタイムク
ロックの使用
115
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
Windows は、リアルタイムクロック (RTC) とタイムスタンプカウンター (TSC) の両方を使用します。
Windows ゲスト仮想マシンでは、TSC の代わりに RTC をすべてのタイムリソースに対して使用すること
ができます。これによって、ゲストのタイミング問題が解決されます。
P MT IMER クロックソース ( P MT IMER は通常 TSC を使用) に対して RTC を有効にするには、Windows
のブート設定に以下のオプションを追加します。Windows のブート設定は、boot.ini ファイルに記載され
ています。bo o t. i ni ファイルの Window ブート行の最後に以下のオプションを追加してください。
/usepmtimer
Windows のブート構成および usepmtimer オプションに関する詳しい情報は、Windows XP および
Windows Server 2003 の Boot.ini ファイルで使用可能なスイッチ オプション を参照してください。
14 .4 . Windows Server 2008、Windows Server 2008 R2、および Windows
7 ゲストでのリアルタイムクロックの使用
Windows は、リアルタイムクロック (RTC) とタイムスタンプカウンター (TSC) の両方を使用します。
Windows ゲスト仮想マシンでは、TSC の代わりに RTC をすべてのタイムリソースに対して使用すること
ができます。これによって、ゲストのタイミング問題が解決されます。
Windows Server 2008 およびそれ以降では、bo o t. i ni ファイルは使用されていません。Windows
Server 2008 と Windows Server 2008 R2、Windows 7 では、hypervi so r-present ビットが設定さ
れていると、TSC をタイムソースとして使用しません。Red Hat Enterprise Linux 6 KVM ハイパーバイ
ザーは、この CPUID ビットをデフォルトで有効化しているので、B o o t C o n f ig u rat io n D at a Ed it o r
(bcd ed i t. exe) を使用して Windows ブートパラメーターを修正する必要はなくなります。
手順14 .1 Win d o ws Server 2008 R 2 および Win d o ws 7 ゲストでのリアルタイムクロックの使用
1. Windows ゲスト仮想マシンを開きます。
2. スタート メニューの アクセサリ を開きます。コマンドプロンプト を右クリックして、管理者と
して実行 を選択します。.
3. セキュリティー例外が出てきた場合は、これを確認します。
4. ブートマネージャーでプラットホームクロックを使用するように設定します。これで Windows に
プライマリークロックソースでの PM タイマーの使用を指示します。システム UUID (以下の例で
は、{default}) がデフォルトのブートデバイスと異なる場合は、これを変更します。
C:\Windows\system32>bcdedit /set {default} USEPLATFORMCLOCK on
The operation completed successfully
この修正で、Windows Server 2008 R2 および Windows 7 のゲストの時間管理が改善されます。
Windows 2008 (R2 以外) は USEPLATFORMCLOCK パラメーターをサポートしませんが、デフォルトでリ
アルタイムクロックをすでに使用しています。
14 .5. スチールタイムアカウンティング
スチールタイムは、ゲスト仮想マシンが必要とする CPU 時間の内のホストが提供していない時間です。ス
チールタイムは、ホストがこれらのリソースを別のゲストなどの他に割り当てる場合に発生します。
スチールタイムは、/pro c/stat の CPU 時間フィールドに st としてレポートされます。to p や vmstat
などのユーティリティーが自動でレポートし、スイッチオフにすることはできません。
116
⁠第1 4 章 KVM ゲストのタイミング管理
スチールタイムが多いと CPU 競合を生じさせし、ゲストのパフォーマンス低下につながる可能性がありま
す。CPU 競合を緩和するには、ゲストの CPU 優先度または CPU 割り当てを高めるか、またはホスト上で
実行するゲスト数を減らします。
117
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
第15章 libvirt を使用したネットワークブート
ゲスト仮想マシンは、PXE が有効な場合に起動できます。PXE により、ゲスト仮想マシンを起動し、ネッ
トワーク自体から設定をロードできるようになります。このセクションでは、libvirt を使って PXE ゲスト
を設定する基本的なステップを説明します。
このセクションでは、ブートイメージの作成や PXE サーバーについては説明しません。プライベートまた
はブリッジネットワークで libvirt を設定し、PXE ブートの有効化でゲスト仮想マシンを起動する方法を説
明します。
警告
ここでの手順は、例としてのみ示されています。次に進む前に、十分なバックアップがなされてい
ることを確認してください。
15.1. ブートサーバーの準備
本章のステップを実行するには、以下が必要となります。
PXE サーバー (D HCP および TFTP) - これは libvirt 内部サーバー、手動設定の D HCP および TFTP、
dnsmasq、Cobbler 設定のサーバーその他のサーバーのいずれでも可能です。
ブートイメージ - たとえば、手動設定または Cobbler 設定の PXELINUX
15.1.1. プライベート libvirt ネットワーク上での PXE ブートサーバー設定
この例では デフォルト ネットワークを使用します。以下のステップを実行してください。
手順15.1 PXE ブートサーバーの設定
1. PXE ブートイメージと設定を /var/l i b/tftp に配置します。
2. 以下のコマンドを実行します。
# virsh net-destroy default
# virsh net-edit default
3. デフォルト ネットワークの設定ファイルで <i p> 要素を編集し、適切なアドレス、ネットワーク
マスク、D HCP アドレス範囲、およびブートファイルを含めます。BOOT_FILENAME はゲスト仮
想マシンの起動に使用するファイル名を示しています。
<ip address='192.168.122.1' netmask='255.255.255.0'>
<tftp root='/var/lib/tftp' />
<dhcp>
<range start='192.168.122.2' end='192.168.122.254' />
<bootp file='BOOT_FILENAME' />
</dhcp>
</ip>
4. PXE を使用してゲストを起動します ( 「PXE を使用したゲストの起動」 を参照) 。
15.2. PXE を使用したゲストの起動
118
⁠第1 5章 libvirt を使用したネットワークブート
15.2. PXE を使用したゲストの起動
このセクションでは、PXE を使用してゲスト仮想マシンを起動する方法を説明します。
15.2.1. ブリッジネットワークの使用
手順15.2 PXE およびブリッジネットワークを使用したゲストの起動
1. ブリッジングが有効化され、PXE ブートサーバーがネットワーク上で利用可能なことを確認しま
す。
2. PXE ブートが有効な状態でゲスト仮想マシンを起動します。以下のコマンド例のように、vi rti nstal l コマンドで PXE ブートが有効化された新規の仮想マシンを作成することができます。
virt-install --pxe --network bridge=breth0 --prompt
別の方法では、ゲストネットワークがブリッジネットワークを使用するように設定され、以下の例
のように XML ゲスト設定ファイルの <o s> 内に <bo o t d ev= ' netwo rk' /> 要素があることを
確認します。
<os>
<type arch='x86_64' machine='rhel6.2.0'>hvm</type>
<boot dev='network'/>
<boot dev='hd'/>
</os>
<interface type='bridge'>
<mac address='52:54:00:5a:ad:cb'/>
<source bridge='breth0'/>
<target dev='vnet0'/>
<alias name='net0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03'
function='0x0'/>
</interface>
15.2.2. プライベート libvirt ネットワークの使用
手順15.3 プライベート lib virt ネットワークの使用
1. 「プライベート libvirt ネットワーク上での PXE ブートサーバー設定」に示されるように libvirt 上
で PXE ブートを設定します。
2. PXE ブートが有効な状態で libvirt を使用してゲスト仮想マシンを起動します。以下のよう
に、vi rt-i nstal l コマンドを使い、PXE を使用して新規の仮想マシンを作成/インストールする
ことができます。
virt-install --pxe --network network=default --prompt
別の方法では、ゲストネットワークがブリッジネットワークを使用するように設定され、以下の例のように
XML ゲスト設定ファイルの <o s> 内に <bo o t d ev= ' netwo rk' /> 要素があることを確認します。
<os>
<type arch='x86_64' machine='rhel6.2.0'>hvm</type>
<boot dev='network'/>
<boot dev='hd'/>
119
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
</os>
また、ゲスト仮想マシンがプライベートネットワークに接続されていることを確認します。
<interface type='network'>
<mac address='52:54:00:66:79:14'/>
<source network='default'/>
<target dev='vnet0'/>
<alias name='net0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03'
function='0x0'/>
</interface>
120
⁠第1 6 章 Q EMU ゲストエージェント
第16章 QEMU ゲストエージェント
QEMU ゲストエージェントは、ホストマシンによるゲストオペレーティングシステムへのコマンド発行を
可能にします。ゲストオペレーティングシステムはその後、これらのコマンドに非同期的に応答します。
このセクションでは、ゲストが利用できるオプションとコマンドを詳細にわたって説明します。また、
フォアグラウンドでゲストエージェントを実行する方法と、バックグラウンドでデーモンとして実行する方
法を説明します。
16.1. ゲストエージェントのインストールおよび有効化
ゲストの仮想マシンに qemu-guest-agent をインストール (yum i nstal l q emu-g uest-ag ent) し、こ
れをサービス (qemu-guest-agent.service) として毎回の起動時に自動的に実行させます。
16.2. ゲストエージェントとホスト間の通信設定
ホストマシンは、ホストとゲストマシン間の VirtIO シリアル接続でゲストエージェントと通信します。
VirtIO シリアルチャンネルは、キャラクターデバイスドライバー (通常 Unix ソケット) 経由でホストに接続
し、ゲストはこのシリアルチャンネルをリッスンします。以下の手順では、ゲストエージェントが使用する
ホストおよびゲストマシンの設定方法を説明します。
手順16 .1 ホストとエージェント間の通信設定
1. キャラクターデバイスドライバーで Q EMU を起動
ゲストエージェントとの通信で必要となるキャラクターデバイスドライバーの新たな定義で QEMU
を通常の方法で起動します。
以下の例では QEMU を起動し、 Unix ソケット /tmp/q g a. so ck で通信します。
/usr/libexec/qemu-kvm [...] -chardev
socket,path=/tmp/qga.sock,server,nowait,id=qga0 \
-device virtio-serial \
-device
virtserialport,chardev=qga0,name=org.qemu.guest_agent.0
2. ゲストエージェントのスタート
ゲスト上で以下のコマンドを実行し、ゲストエージェントをスタートします。
qemu-ga --path device_path --method method
ゲストエージェントはコマンドの着信 QMP メッセージを解析し、有効であれば実行します。
--metho d または --path オプションで他のメソッドやパスが指定されていない場合、ゲスト
エージェントは /d ev/vi rti o -po rts/o rg . q emu. g uest_ag ent. 0 デバイスパスで
vi rti o -seri al をリッスンします。
これで確立されたキャラクターデバイスドライバーで有効な QMP コマンドが送信され、ゲストと通信する
ことができます。
ゲストエージェントについてさらに詳しくは、Red Hat Enterprise Linux 6 仮想化管理ガイド を参照してく
ださい。
121
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
NetKVM ドライバーパラメーター
NetKVM ドライバーは、インストール後にご使用の環境に適合するように設定できます。このセクションに
あるパラメーターは、Windows の デバイスマネージャー (d evmg mt. msc) で設定できます。
重要
ドライバーのパラメーターを修正すると、Windows はそのドライバーを再ロードします。これによ
り、既存のネットワークアクティビティーへの割り込みが生じます。
手順A.1 N et K VM パラメーターの設定
1. デバイスマネージャー を開く
スタート ボタンをクリックします。右側のペインでコンピューター を右クリックし、管理 をク
リックします。要求されたら、ユーザーアカウント制御 ウィンドウの 続行 をクリックします。
これで コンピューターの管理 ウィンドウが開きます。
コンピューターの管理 ウィンドウの左側のペインで、デバイスマネージャー をクリックしま
す。
2. 正しいデバイスの特定
コンピューターの管理 ウィンドウの中央のペインで、ネットワークアダプター の横にある +
記号をクリックします。
R ed Hat Vi rtIO Ethernet Ad apter デバイスの下にあるリストで、NetKVM をダブルク
リックします。これでそのデバイスの 設定 ウィンドウが開きます。
3. デバイスパラメーターの表示
設定 ウィンドウで 詳細 タブをクリックします。
4. デバイスパラメーターの修正
修正するパラメーターをクリックし、そのパラメーターのオプションを表示させます。
オプションを適切に修正し、O K をクリックして変更を保存します。
A.1. 設定可能な Net KVM パラメーター
ロギングパラメーター
Lo g g in g .En ab le
ロギングが有効かどうかを決定するブール値。デフォルト値は 1 (有効) 。
Lo g g in g .Level
ロギングレベルを定義する整数。この整数が増すにつれ、ログの詳細度も増します。デフォルト
値は、0 です (エラーのみ) 。1-2 は設定メッセージを追加します。3-4 はパケットフロー情報
を追加します。5-6 は割り込みおよび D PC レベル追跡情報を追加します。
122
Net KVM ドライバーパラメーター
重要
高いロギングレベルは、ゲスト仮想マシンのパフォーマンスを低下させます。
Lo g g in g .St at ist ics( sec)
ログ統計が印刷されるかどうか、および各期間の統計印刷の秒単位の間隔を定義する整数。デ
フォルト値は、0 (ロギング統計なし)。
初期パラメーター
Assig n MAC
準仮想化 NIC 用にローカルで管理された MAC アドレスを定義するストリング。デフォルトでは
設定されていません。
In it .C o n n ect io n R at e( Mb )
接続率をメガバイトで表示する整数。Windows 2008 およびそれ以降のデフォルト値は
10 0 0 0 。
In it .D o 802.1PQ
Priority/VLAN タグ取り込みおよび削除サポートを有効化するブール値。デフォルト値は 1 (有効)
。
In it .U seMerg ed B u f f ers
マージ可能な RX バッファーを有効化するブール値。デフォルト値は 1 (有効) 。
In it .U sePu b lish Even t s
公開されたイベント使用を有効化するブール値。デフォルト値は 1 (有効) 。
In it .MT U Siz e
maximum transmission unit (MTU) を定義する整数。デフォルト値は 150 0 。500 から 65500
の間の値であれば使用可能。
In it .In d irect T x
間接的なリング記述子の使用を制御。デフォルト値は D i sabl e で、これは間接的なリング記述
子の使用を無効にします。他の有効な値は Enabl e で、これは間接的なリング記述子の使用を可
能にします。また、Enabl e* は、間接的なリング記述子の条件付き使用を可能にします。
In it .MaxT xB u f f ers
割り当てられる TX リング記述子の量を表示する整数。デフォルト値は、10 24 。有効な値は、
16、32、64、128、256、512、1024 のいずれか。
In it .MaxR xB u f f ers
割り当てられる RX リング記述子の量を表示する整数。デフォルト値は、256 。有効な値は、
16、32、64、128、256、512、1024 のいずれか。
O f f lo ad .T x.C h ecksu m
TX チェックサムオフロードモードを指定。
123
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
Red Hat Enterprise Linux 6.4 およびそれ以降でのこのパラメーターの有効値は以下の通りで
す。Al l (デフォルト): IPv4 と IPv6 の両方で IP、TCP、UD P のチェックサムオフロードを有
効にします。T C P /UD P (v4 ,v6 ): IPv4 と IPv6 の両方で TCP と UD P のチェックサムオフロー
ドを有効にします。T C P /UD P (v4 ): IPv4 のみで TCP と UD P のチェックサムオフロードを有
効にします。T C P (v4 ): IPv4 のみで TCP のチェックサムオフロードだけを有効にします。
Red Hat Enterprise Linux 6.3 およびそれ以前でのこのパラメーターの有効値は以下の通りで
す。T C P /UD P (デフォルト値): TCP と UD P のチェックサムオフロードを有効にします。T C P :
TCP のチェックサムオフロードのみを有効にします。D i sabl e: TX チェックサムオフロードを
無効にします。
O f f lo ad .T x.LSO
TX TCP Large Segment Offload (LSO) を有効にするブール値。デフォルト値は 1 (有効)。
O f f lo ad .R x.C h ecksu m
RX チェックサムオフロードモードを指定
Red Hat Enterprise Linux 6.4 およびそれ以降でのこのパラメーターの有効値は以下の通りで
す。Al l (デフォルト): IPv4 と IPv6 の両方で IP、TCP、UD P のチェックサムオフロードを有
効にします。T C P /UD P (v4 ,v6 ): IPv4 と IPv6 の両方で TCP と UD P のチェックサムオフロー
ドを有効にします。T C P /UD P (v4 ): IPv4 のみで TCP と UD P のチェックサムオフロードを有
効にします。T C P (v4 ): IPv4 のみで TCP のチェックサムオフロードだけを有効にします。
Red Hat Enterprise Linux 6.3 およびそれ以前での有効値は以下の通りです。D i sabl e (デフォ
ルト値): RX チェックサムオフロードを無効にします。Al l : IP、TCP、UD P のチェックサムオ
フロードを有効にします。T C P /UD P : TCP と UD P のチェックサムオフロードを有効にしま
す。T C P : TCP のチェックサムオフロードのみを有効にします。
テストおよびデバッグパラメーター
重要
テストおよびデバッグパラメーターは、テストまたはデバッグのみに使用することをお勧めしま
す。本番環境での使用は推奨されません。
T est O n ly.D elayC o n n ect ( ms)
スタート時に接続を遅らせる時間 (ミリ秒単位)。デフォルト値は、0 。
T est O n ly.D PC C h eckin g
D PC 確認モードを設定。0 (デフォルト値) は D PC 確認を無効にします。1 は D PC 確認を有効
にします。各ハングテストは D PC アクティビティーを検証し、D PC が作成されたかのように行
動します。2 は、デバイス割り込みステータスを消去するほかは、1 と同じです。
T est O n ly.Scat t er- G at h er
スキャッター/ギャザー機能が有効かどうかを判断するブール値。デフォルト値は 1 (有効)。この
値を 0 に設定すると、スキャッター/ギャザー機能とすべての依存機能が無効になります。
T est O n ly.In t erru p t R eco very
割り込み回復が有効かどうかを決定するブール値。デフォルト値は 1 (有効)。
T est O n ly.Packet Filt er
124
Net KVM ドライバーパラメーター
パケットフィルタリングが有効かどうかを決定するブール値。デフォルト値は 1 (有効)。
T est O n ly.B at ch R eceive
パケットがバッチかまたは 1 回で受信されたかを決定するブール値。デフォルト値は 1 で、パ
ケットのバッチ受信が有効。
T est O n ly.Pro miscu o u s
プロミスキャスモードが有効かどうかを決定するブール値。デフォルト値は 0 (無効)。
T est O n ly.An alyz eIPPacket s
送信 IP パケットのチェックサムフィールドがデバッグ目的でテストされ、検証されたかどうか
を決定するブール値。デフォルト値は 0 (確認なし)。
T est O n ly.R XT h ro t t le
単一 D PC で処理される受信パケット数を決定する整数。デフォルト値は、10 0 0 。
T est O n ly.U seSwT xC h ecksu m
ハードウェアチェックサムが有効かどうかを決定するブール値。デフォルト値は 0 (無効)。
125
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
一般的な libvirt エラーおよびトラブルシューティング
この付録では、lib virt 関連の一般的な問題とエラーおよびそれらの対処法について説明します。
以下の表でエラーを特定し、So l uti o n (解決法) の対応するリンク先で詳細なトラブルシューティング情
報を参照してください。
表B .1 一般的な lib virt エラー
エラー
問題の概要
解決法
l i bvi rtd fai l ed to
start
lib virt デーモンがスタートに失
敗する
が、/var/l o g /messag es に
はこのエラーに関する情報がな
い。
URI がハイパーバイザー接続に失
敗する際に発生するエラーの 1 つ
です。
URI がハイパーバイザー接続に失
敗する際に発生するエラーの 1 つ
です。
URI がハイパーバイザー接続に失
敗する際に発生するその他のエ
ラーです。
ホストとゲストのプロセッサーが
異なるため、ゲスト仮想マシンが
スタートできない。
「lib virt d がスタート失敗」
C anno t read C A
certi fi cate
Fai l ed to co nnect
so cket . . . :
P ermi ssi o n d eni ed
他の接続エラー
「URI がハイパーバイザー接続に
失敗する」
「URI がハイパーバイザー接続に
失敗する」
「URI がハイパーバイザー接続に
失敗する」
「ゲスト仮想マシンがスタートで
きずエラーが発生: i nternal
erro r g uest C P U i s no t
co mpati bl e wi th ho st
C P U」
Fai l ed to create d o mai n ゲスト仮想マシン (またはドメイ 「ゲストがスタートに失敗しエ
fro m vm. xml erro r:
ン) がスタートに失敗し、このエ ラーが発生: mo ni to r so cket
mo ni to r so cket d i d no t ラーまたは同様のエラーを返す。 d i d no t sho w up」
sho w up. : C o nnecti o n
refused
Internal erro r canno t
このエラーは、ゲストのコンソー 「Internal erro r canno t
fi nd character d evi ce
ルに接続しようとする際に発生し fi nd character d evi ce
(nul l )
ます。ゲスト仮想マシン用に設定 (nul l )」
されたシリアルコンソールがな
い、とレポートされます。
No bo o t d evi ce
既存のディスクイメージからゲス 「ゲスト仮想マシンの起動がス
ト仮想マシンを構築した後、ゲス トールしエラーが発生: No bo o t
トの起動がストールする
d evi ce」
が、Q EMU コマンドを直接使うと
ゲストは正常にスタートできる。
T he vi rtual netwo rk
default ネットワーク (またはロー 「Virtual network default has not
"default" has no t been
カル作成された別のネットワー
been started」
started
ク) がスタートできないと、その
ネットワークを接続に使用するよ
うに設定されたすべての仮想マシ
ンもスタートに失敗する。
Internal erro r g uest
C P U i s no t co mpati bl e
wi th ho st C P U
126
一般的な libvirt エラーおよびトラブルシューティング
エラー
問題の概要
解決法
ゲスト上の PXE ブート (または
D HCP ) が失敗
ゲスト仮想マシンは正常にスター
トするが、D HCP から IP アドレ
スを取得できない、または PXE
を使用したブートができない、も
しくはその両方。この原因は多く
の場合、ブリッジでの転送遅延時
間が長く設定されている
か、iptables パッケージとカーネ
ルがチェックサム難号化ルールを
サポートしないためです。
ゲストは他のゲストと通信できる
が、macvtap (または
type='direct') ネットワーク
インターフェース使用の設定後に
はホストに接続できない。
「ゲスト上の PXE ブート (または
D HCP ) が失敗」
ゲストは外部ネットワークにア
クセスできるが、macvtap イン
ターフェースの使用時にはホス
トにアクセスできない
「ゲストは外部ネットワークにア
クセスできるが、macvtap 使用
時にはホストにアクセスできな
い」
この状況は、実際にはエラーでは
なく macvtap の定義済み動作で
す。
この警告メッセージはほとんどの
場合、無害ですが、間違って問題
の証拠と見なされることが多くあ
ります。
このエラーメッセージと、同様の
Fai l ed to ad d tap
i nterface to bri d g e
'br0': No such d evi ce と
いうメッセージは、ゲストの (ま
たはドメインの) <i nterface>
定義で指定されたブリッジデバイ
スが存在しないことを示していま
す。
Warni ng : co ul d no t
ホストシステムの
o pen /d ev/net/tun: no
type= ' ethernet' (別名、ジェ
vi rtual netwo rk
ネリックイーサネット) インター
emul ati o n q emu-kvm: フェースの設定後にゲスト仮想マ
netd ev
シンがスタートしない。このエ
tap,scri pt= /etc/myラーまたは同様のエラーが
q emu-i fup,i d = ho stnet0 : l i bvi rtd . l o g または
D evi ce ' tap' co ul d no t /var/l o g /l i bvi rt/q emu/n
be i ni ti al i zed
ame_of_guest. l o g のどちら
か、または両方に表示される。
Unabl e to reso l ve
Q EMU ゲストマイグレーション
ad d ress name_of_host
が失敗し、このエラーメッセージ
servi ce ' 4 9 155' : Name
が知らないホスト名とともに表示
o r servi ce no t kno wn
される。
Unabl e to al l o w access
lib virt がディスクイメージにア
fo r d i sk path
クセスできないため、ゲスト仮想
/var/l i b/l i bvi rt/i mag es マシンを移行できない。
/q emu. i mg : No such
fi l e o r d i recto ry
C o ul d no t ad d rul e to
fi xup D HC P respo nse
checksums o n netwo rk
'default'
Unabl e to ad d bri d g e
br0 po rt vnet0 : No such
d evi ce
「Could not add rule to fixup
D HCP response checksums on
network 'default'」
「Unable to add bridge br0
port vnet0: No such device」
「ゲストがスタートできずエラー
が発生: warni ng : co ul d
no t o pen /d ev/net/tun」
「マイグレーションに失敗しエ
ラーが発生 Erro r: unabl e
to reso l ve ad d ress」
「マイグレーションに失敗しエ
ラーが発生: Unabl e to
al l o w access fo r d i sk
path: No such fi l e o r
d i recto ry」
127
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
エラー
問題の概要
解決法
lib virt d のスタート時にゲスト
仮想マシンがない
lib virt デーモンは正常にスター
トしたが、vi rsh l i st -al l を実行してもゲスト仮想マ
シンが見当たらない
lib virt d が接続のために TCP
ポートをリッスンしている間に、
ハイパーバイザーへの接続が失敗
する。
「lib virt d のスタート時にゲス
ト仮想マシンが見当たらない」
Unabl e to co nnect to
server at ' ho st: 16 50 9 ' :
C o nnecti o n refused . . .
erro r: fai l ed to
co nnect to the
hypervi so r
一般的な XML エラー
「Unable to connect to server
at 'host:16509': Connection
refused ... error: failed to
connect to the hypervisor」
lib virt は XML ドキュメントを使 「一般的な XML エラー」
用して構造化データを保存しま
す。XML ドキュメントのエラー
のいくつかは、XML ドキュメン
トが API で lib virt に渡される際
に発生します。このエントリーで
は、ゲスト XML 定義の編集に関
する指示と、XML 構文および設
定における一般的なエラーの詳細
を提供します。
B.1. libvirt d がスタート失敗
現象
lib virt デーモンが自動的にスタートしない。手動でのlib virt デーモンのスタートも失敗
# /etc/init.d/libvirtd start
* Caching service dependencies ...
[ ok ]
* Starting libvirtd ...
/usr/sbin/libvirtd: error: Unable to initialize network sockets.
Check /var/log/messages or run without --daemon for more info.
* start-stop-daemon: failed to start `/usr/sbin/libvirtd'
[ !! ]
* ERROR: libvirtd failed to start
さらには、/var/l o g /messag es にこのエラーの ' mo re i nfo ' もない。
調査
以下の行でコメントを解除し、/etc/l i bvi rt/l i bvi rtd . co nf の lib virt のロギングを変
更します。コメントを解除するには、テキストエディターで
/etc/l i bvi rt/l i bvi rtd . co nf ファイルを開き、以下の行の先頭からハッシュ (または #)
記号を削除して、変更を保存します。
log_outputs="3:syslog:libvirtd"
128
一般的な libvirt エラーおよびトラブルシューティング
注記
この行は、lib virt が過剰なログメッセージを作成しないように、デフォルトではコメン
トアウトされています。問題の診断後には、/etc/l i bvi rt/l i bvi rtd . co nf ファイ
ルでこの行を再度コメント化することが推奨されます。
lib virt を再起動し、問題が解決されたか確認します。
l i bvi rtd がまだ正常にスタートしない場合、/var/l o g /messag es ファイルに以下と同様
のエラーが表示されます。
Feb 6 17:22:09 bart libvirtd: 17576: info : libvirt version:
0.9.9
Feb 6 17:22:09 bart libvirtd: 17576: error :
virNetTLSContextCheckCertFile:92: Cannot read CA certificate
'/etc/pki/CA/cacert.pem': No such file or directory
Feb 6 17:22:09 bart /etc/init.d/libvirtd[17573]: start-stopdaemon: failed to start `/usr/sbin/libvirtd'
Feb 6 17:22:09 bart /etc/init.d/libvirtd[17565]: ERROR: libvirtd
failed to start
lib virt d man ページには、lib virt が Li sten fo r T C P /IP co nnecti o ns モードで実行さ
れた際に、見つからない cacert. pem ファイルが TLS 認証として使用されたことが示されてい
ます。つまり、--listen パラメーターが渡されています。
解決法
lib virt デーモンを以下のいずれかの方法で設定します。
CA 証明書をインストールする。
注記
CA 証明書およびシステム認証の設定に関する詳細は、Red Hat Enterprise Linux 6 導入
ガイド の認証の設定の章を参照して下さい。
TLS を使わずにベア TCP を使用する。/etc/l i bvi rt/l i bvi rtd . co nf で
l i sten_tl s = 0 と l i sten_tcp = 1 に設定する。デフォルト値は、l i sten_tl s =
1 と l i sten_tcp = 0 。
--listen パラメーターを渡さない。/etc/sysco nfi g /l i bvi rtd . co nf で
LIBVIRTD_ARGS 変数を変更する。
B.2. URI がハイパーバイザー接続に失敗する
サーバー接続時にいくつかの異なるエラーが発生する (たとえば、vi rsh 実行時)。
B.2.1. CA 証明書を読み込めない
現象
コマンド実行中に、以下のエラー (または同様のエラー) が表示される。
129
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
$ virsh -c name_of_uri list
error: Cannot read CA certificate '/etc/pki/CA/cacert.pem': No
such file or directory
error: failed to connect to the hypervisor
調査
このエラーメッセージは、実際の原因に関して誤解を招くものです。このエラーは、誤って指定
された URI や未設定の接続など様々な要素によって起こり得ます。
解決法
誤って指定された U R I
qemu://system または qemu://session を接続 URI として指定すると、vi rsh
はそれぞれのホスト名 system または session に接続しようとします。これ
は、vi rsh が 2 つ目のスラッシュの後のテキストをホストとして認識するためです。
スラッシュを 3 つ使ってローカルホストに接続します。たとえ
ば、qemu:///system を指定すると、ローカルホスト上で lib virt d の system イン
スタンスに接続するようvi rsh に指示します。
ホスト名が指定されていると、Q EMU トランスポートがデフォルトで T LS を選択し
ます。これで証明書が作成されます。
接続が未設定
URI は正しい (たとえば、qemu[+tls]://server/system) が、マシン上で証明書
が正しく設定されていない。TLS の設定に関する詳細は、lib virt の Web サイトの
Setting up lib virt for TLS を参照してください。
B.2.2. Failed t o connect socket ... : Permission denied
現象
vi rsh コマンドの実行中に、以下のエラー (または同様のエラー) が表示される。
$ virsh -c qemu:///system list
error: Failed to connect socket to '/var/run/libvirt/libvirtsock': Permission denied
error: failed to connect to the hypervisor
調査
ホスト名が指定されていないと、Q EMU への接続にはデフォルトで UNIX ソケットが使用されま
す。root でこのコマンド実行時にエラーが発生しない場
合、/etc/l i bvi rt/l i bvi rtd . co nf のUNIX ソケットオプションの設定が間違っている可
能性があります。
解決法
root 以外のユーザーで UNIX ソケットを使用して接続するに
は、/etc/l i bvi rt/l i bvi rtd . co nf で以下のオプションを設定します。
unix_sock_group = <g ro up>
unix_sock_ro_perms = <perms>
unix_sock_rw_perms = <perms>
130
一般的な libvirt エラーおよびトラブルシューティング
注記
vi rsh を実行するユーザーは、uni x_so ck_g ro up オプションで指定された g ro up の
メンバーである必要があります。
B.2.3. 他の接続エラー
U n ab le t o co n n ect t o server at server: po rt: C o n n ect io n ref u sed
デーモンがサーバー上で動作していないか、l i sten_tcp または l i sten_tl s 設定オプション
を使用していて、リッスンしないように設定されている。
En d o f f ile wh ile read in g d at a: n c: u sin g st ream so cket : In p u t /o u t p u t erro r
ssh トランスポートが指定されている場合、デーモンはサーバー上で動作していない可能性があ
ります。デーモンがサーバー上で実行しているかどうかを確認して、このエラーを解消します。
B.3. ゲスト仮想マシンがスタートできずエラーが発生:i nternal
erro r g uest
C P U i s no t co mpati bl e wi th ho st C P U
現象
Intel Core i7 プロセッサー (virt - man ag er が Nehal em として参照。または以前の Core 2
D uo の場合は P enryn として参照) 上で動作する KVM ゲスト (またはドメイン) は、virt man ag er を使用して作成されます。インストール後に、ゲストのプロセッサーはホストの CPU
に適合するように変更されます。その後ゲストはスタートできず、以下のエラーメッセージを表
示します。
2012-02-06 17:49:15.985+0000: 20757: error :
qemuBuildCpuArgStr:3565 : internal error guest CPU is not
compatible with host CPU
さらに、virt - man ag er で C o py ho st C P U co nfi g urati o n をクリックする
と、Nehal em や P enryn ではなく、Pentium III が表示されます。
調査
/usr/share/l i bvi rt/cpu_map. xml ファイルは、各 CPU モデルを定義するフラグをリス
ト表示します。Nehal em および P enryn の定義には、以下が含まれます。
<feature name='nx'/>
その結果、CPU を Nehal em または P enryn として特定するには、NX (または No eXecute)
フラグを提示する必要があります。しかし、/pro c/cpui nfo にはこのフラグがありません。
解決法
ほとんどすべての新規 BIOSes では、No eXecute ビットの有効化や無効化が可能です。しか
し、無効にされている場合、このフラグをレポートしない CPU もあり、そのため lib virt は別の
CPU を検出します。この機能を有効にすると、lib virt に対し、正しい CPU をレポートするよう
に指示します。この問題の詳細な指示に関しては、ご使用のハードウェアの資料を参照してくだ
さい。
131
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
B.4 . ゲストがスタートに失敗しエラーが発生:mo ni to r
so cket d i d no t sho w up
現象
ゲスト仮想マシン (またはドメイン) がスタートに失敗し、以下のエラーメッセージが表示され
る。
# virsh -c qemu:///system create name_of_guest.xml error: Failed
to create domain from name_of_guest.xml error: monitor socket did
not show up.: Connection refused
調査
このエラーメッセージが示しているのは、以下の点です。
1. lib virt は動作している
2. Q EMU プロセスはスタートに失敗した
3. lib virt は Q EMU または QEMU エージェントモニターソケットに接続しようとした際
に終了した
エラーの詳細を理解するために、ゲストログを検証します。
# cat /var/log/libvirt/qemu/name_of_guest.log
LC_ALL=C PATH=/sbin:/usr/sbin:/bin:/usr/bin QEMU_AUDIO_DRV=none
/usr/bin/qemu-kvm -S -M pc -enable-kvm -m 768 -smp
1,sockets=1,cores=1,threads=1 -name name_of_guest -uuid ebfaadbee908-ba92-fdb8-3fa2db557a42 -nodefaults -chardev
socket,id=monitor,path=/var/lib/libvirt/qemu/name_of_guest.monito
r,server,nowait -mon chardev=monitor,mode=readline -no-reboot boot c -kernel /var/lib/libvirt/boot/vmlinuz -initrd
/var/lib/libvirt/boot/initrd.img -append
method=http://www.example.com/pub/product/release/version/x86_64/
os/ -drive
file=/var/lib/libvirt/images/name_of_guest.img,if=none,id=driveide0-0-0,boot=on -device ide-drive,bus=ide.0,unit=0,drive=driveide0-0-0,id=ide0-0-0 -device virtio-netpci,vlan=0,id=net0,mac=52:40:00:f4:f1:0a,bus=pci.0,addr=0x4 -net
tap,fd=42,vlan=0,name=hostnet0 -chardev pty,id=serial0 -device
isa-serial,chardev=serial0 -usb -vnc 127.0.0.1:0 -k en-gb -vga
cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,
addr=0x3
char device redirected to /dev/pts/1
qemu: could not load kernel '/var/lib/libvirt/boot/vmlinuz':
Permission denied
解決法
ゲストログには、エラーの修正に必要な詳細が含まれています。
ゲストが lib virt の 0.9.5 以前のバージョンを実行中にホストがシャットダウンした場合、libvirt
ゲストの init スクリプトはゲストの管理保存を実行しようとします。管理保存が不完全な場合 (た
とえば、管理保存イメージがディスクにフラッシュされる前に電源を喪失するなど)、保存イメー
ジは破損し、Q EMU はロードしません。古いバージョンの lib virt は破損を認識せず、問題は永
132
一般的な libvirt エラーおよびトラブルシューティング
続化します。このケースでは、ゲストログには -i nco mi ng の使用を試みたことが引数の 1 つと
して表示されます。これは、lib virt が保存状態のファイル内で移行することで Q EMU のスター
トを試みていることを意味します。
この問題は、vi rsh manag ed save-remo ve name_of_guest を実行して破損した管理保存
イメージを削除することで修正できます。新しいバージョンの lib virt は、最初の段階で破損を
回避するステップを取り、vi rsh start --fo rce-bo o t name_of_guest を追加して管理
保存イメージも迂回します。
B.5. Internal
erro r canno t fi nd character d evi ce (nul l )
現象
ゲスト仮想マシンのコンソールに接続を試みる際にこのエラーメッセージが表示されます。
# virsh console test2 Connected to domain test2 Escape character
is ^] error: internal error cannot find character device (null)
調査
このエラーメッセージは、ゲスト仮想マシン用に設定されたシリアルコンソールがないことを示
しています。
解決法
ゲストの XML ファイル内でシリアルコンソールを設定します。
手順B .1 ゲストの XML ファイル内でのシリアルコンソール設定
1. virsh ed it を使用して、以下の XML をゲストの仮想マシンの XML に追加します。
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
2. ゲストのカーネルコマンドラインにコンソールを設定します。
これを行うには、ゲスト仮想マシンにログインして /bo o t/g rub/g rub. co nf ファイ
ルを直接編集するか、または virt - ed it コマンドラインツールを使用します。ゲストの
カーネルコマンドラインに以下を追加します。
console=ttyS0,115200
3. 以下のコマンドを実行します。
# virsh start vm & & virsh console vm
B.6. ゲスト仮想マシンの起動がストールしエラーが発生:No
bo o t d evi ce
現象
133
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
既存のディスクイメージからゲスト仮想マシンを作成した後、ゲストの起動がストールし、エ
ラーメッセージ No bo o t d evi ce が表示される。ただし、Q EMU コマンドを直接使うとゲス
ト仮想マシンは正常にスタートする。
調査
既存ディスクイメージをインポートするコマンドでディスクのバスの種類が指定されていない。
# virt-install \
--connect qemu:///system \
--ram 2048 -n rhel_64 \
--os-type=linux --os-variant=rhel5 \
--disk path=/root/RHEL-Server-5.8-64virtio.qcow2,device=disk,format=qcow2 \
--vcpus=2 --graphics spice --noautoconsole --import
しかし、Q EMU を直接使用してゲスト仮想マシンを起動したコマンドラインではバスの種類に
vi rti o を使用したことを示している
# ps -ef | grep qemu
/usr/libexec/qemu-kvm -monitor stdio -drive file=/root/RHELServer-5.8-32virtio.qcow2,index=0,i f= vi rti o ,media=disk,cache=none,format=qcow2
-net nic,vlan=0,model=rtl8139,macaddr=00:30:91:aa:04:74 -net
tap,vlan=0,script=/etc/qemu-ifup,downscript=no -m 2048 -smp
2,cores=1,threads=1,sockets=2 -cpu qemu64,+sse2 -soundhw ac97 rtc-td-hack -M rhel5.6.0 -usbdevice tablet -vnc :10 -boot c -nokvm-pit-reinjection
インポートされたゲスト用に lib virt が生成した bus= がゲストの XMLにあることに注意。
<domain type='qemu'>
<name>rhel_64</name>
<uuid>6cd34d52-59e3-5a42-29e4-1d173759f3e7</uuid>
<memory>2097152</memory>
<currentMemory>2097152</currentMemory>
<vcpu>2</vcpu>
<os>
<type arch='x86_64' machine='rhel5.4.0'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='utc'>
<timer name='pit' tickpolicy='delay'/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
134
一般的な libvirt エラーおよびトラブルシューティング
<source file='/root/RHEL-Server-5.8-64-virtio.qcow2'/>
<emphasis role="bold"><target dev='hda' bus='ide'/>
</emphasis>
<address type='drive' controller='0' bus='0' unit='0'/>
</disk>
<controller type='ide' index='0'/>
<interface type='bridge'>
<mac address='54:52:00:08:3e:8c'/>
<source bridge='br0'/>
</interface>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target port='0'/>
</console>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='-1' autoport='yes' keymap='en-us'/>
<video>
<model type='cirrus' vram='9216' heads='1'/>
</video>
</devices>
</domain>
ディスクのバスの種類は ide に設定されており、これは lib virt によって設定されるデフォルト
値です。これは間違ったバスの種類で、インポートされたゲストが正常に起動できない原因と
なっています。
解決法
手順B .2 ディスクのバスの種類の訂正
1. インポートされたゲストの定義を解除し、以下のように bus=virtio を使って再度イン
ポートします。
# virsh destroy rhel_64
# virsh undefine rhel_64
# virt-install \
--connect qemu:///system \
--ram 1024 -n rhel_64 -r 2048 \
--os-type=linux --os-variant=rhel5 \
--disk path=/root/RHEL-Server-5.8-64virtio.qcow2,device=disk,bus= vi rti o ,format=qcow2 \
--vcpus=2 --graphics spice --noautoconsole --import
2. vi rsh ed i t を使ってインポートされてゲストの XML を編集し、ディスクのバスの種
類を訂正します。
B.7. Virt ual net work default has not been st art ed
現象
通常、libvirt パッケージの一部として default 名で仮想ネットワークの設定がインストールされて
おり、lib virt d のスタート時に自動スタートするように設定されています。
135
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
default ネットワーク (またはローカルで作成されたネットワーク) がスタートできない場合、接続
にそのネットワークを使うように接続されている仮想マシンもスタートに失敗し、以下のエラー
メッセージが表示されます。
Virtual network default has not been started
調査
lib virt 仮想ネットワークのスタート失敗でよくある理由の 1 つは、そのネットワーク上でクラ
イアントからの D HCP および D NS リクエストに応えるために必要な dnsmasq インスタンスが
スタートに失敗するケースです。
これが理由であることを確かめるには、root シェルから vi rsh net-start d efaul t を実行
し、default 仮想ネットワークをスタートします。
この方法で仮想ネットワークが正常にスタートしない場
合、/var/l o g /l i bvi rt/l i bvi rtd . l o g を開いて詳細なエラーログメッセージを表示しま
す。
以下と同様のメッセージが表示される場合、問題は lib virt のブリッジ上ですでにリッスンして
いるシステムワイドの dnsmasq インスタンスである可能性が高いと言えます。このインスタン
スは、lib virt の dnsmasq イスタンスがリッスンすることを妨げています。エラーメッセージで
最も注目すべき点は、d nsmasq と exi t status 2 です。
Could not start virtual network default: internal error
Child process (/usr/sbin/dnsmasq --strict-order --bind-interfaces
--pid-file=/var/run/libvirt/network/default.pid --conf-file=
--except-interface lo --listen-address 192.168.122.1
--dhcp-range 192.168.122.2,192.168.122.254
--dhcp-leasefile=/var/lib/libvirt/dnsmasq/default.leases
--dhcp-lease-max=253 --dhcp-no-override) status unexpected: exit
status 2
解決法
物理ネットワークで D HCP の応答にマシンが dnsmasq を使用していない場合は、dnsmasq を
完全に無効にします。
物理ネットワークで D HCP の応答に dnsmasq の実行が必要な場合は、/etc/d nsmasq . co nf
ファイルを編集します。最初の行と続く 2 行の内のどちらかを追加するか、またはコメントを解
除します。3 行すべての追加またはコメント解除はしないでください。
bind-interfaces
interface=name_of_physical_interface
listen-address=chosen_IP_address
この変更を加えてファイルを保存した後、システムワイドの dnsmasq サービスを再起動しま
す。
次に、default ネットワークを vi rsh net-start d efaul t コマンドでスタートします。
仮想マシンを起動します。
B.8. ゲスト上の PXE ブート (または DHCP ) が失敗
現象
136
一般的な libvirt エラーおよびトラブルシューティング
ゲスト仮想マシンは正常にスタートするが、D HCP から IP アドレスを取得できない、または
PXE を使用したブートができない、もしくはその両方。このエラーには 2 つの一般的な原因があ
ります。ブリッジでの転送遅延時間が長く設定されている場合と、iptables パッケージとカーネ
ルがチェックサム難号化ルールをサポートしない場合です。
ブリッジの転送遅延時間が長い
調査
このエラーにおける最も一般的な原因です。ゲストのネットワークインター
フェースが STP (Spanning Tree Protocol) 対応のブリッジデバイスに接続
しており、かつ長時間の転送遅延時間が設定されていると、ブリッジは少な
くともゲストがブリッジに接続してからその転送遅延時間が経過してからで
なければゲスト仮想マシンからのネットワークパケットを転送しません。こ
の遅延により、インターフェースからのトラフィックの監視、背後での MAC
アドレスの決定、ネットワークトポロジー内の転送ループ防止がブリッジ時
間で可能になります。
転送遅延がゲストの PXE や D HCP クライアントのタイムアウトよりも長い
場合、クライアントの作業は失敗し、ゲストは (PXE の場合) 起動に失敗する
か (D HCP の場合) IP アドレスの取得に失敗します。
解決法
これが原因の場合は、ブリッジにおける転送遅延を 0 に変更するか、または
ブリッジの STP を無効にします。
注記
この解決法は、ブリッジが複数のネットワーク接続に使用されておら
ず、複数のエンドポイントを単一のネットワーク接続のみ (lib virt が
使用する最も一般的なブリッジのユースケース) に使用されている場
合にだけ、適用されます。
ゲストが lib virt 管理の仮想ネットワークに接続するインターフェースを備
えている場合、そのネットワークの定義を編集し、再起動します。たとえ
ば、以下のコマンドでデフォルトのネットワークを編集します。
# virsh net-edit default
<bri d g e> 要素に以下の属性を追加します。
<name_of_bridge='virbr0' d el ay= ' 0 ' stp= ' o n' />
注記
d el ay= ' 0 ' と stp= ' o n' は、仮想ネットワークのデフォルト設
定なので、このステップは設定がデフォルトから変更されている場合
にのみ必要となります。
ゲストインターフェースが、lib virt 外で設定されているホストブリッジに
接続されている場合、遅延設定を変更します。
137
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
/etc/sysco nfi g /netwo rk-scri pts/i fcfg -name_of_bridge
ファイルで以下の行を追加または編集して、STP を on に、遅延を 0 秒にし
ます。
STP=on
DELAY=0
設定ファイルの変更後にブリッジデバイスを再起動します。
/sbin/ifdown name_of_bridge
/sbin/ifup name_of_bridge
注記
name_of_bridge がネットワークの root ブリッジでない場合、そのブ
リッジの遅延は最終的には root ブリッジで設定されている遅延時間
をリセットします。この場合の唯一の解決法は、name_of_bridge 上で
STP を完全に無効にすることです。
iptables パッケージとカーネルがチェックサム難号化ルールをサポートしない場合
調査
このメッセージは、以下の 4 つの条件すべてが該当する場合にのみ、問題と
なります。
ゲストが virt io ネットワークデバイスを使用している。
その場合、設定ファイルに mo d el type= ' vi rti o ' が含まれてい
る。
ホストに vho st-net モジュールがロードされている。
これは、l s /d ev/vho st-net が空の結果を返さない場合に該当しま
す。
ホスト上で直接実行中の D HCP サーバーからホストが IP アドレスを取得
しようとしている。
ホスト上の iptables バージョンが 1.4.10 またはそれ以降のもの。
iptables 1.4.10 は、l i bxt_C HEC KSUM 拡張を追加する最初のバージョ
ンでした。lib virt d ログに以下のメッセージが表示されると、これに該
当します。
warning: Could not add rule to fixup DHCP
response checksums on network default
warning: May need to update iptables package and
kernel to support CHECKSUM rule.
138
一般的な libvirt エラーおよびトラブルシューティング
重要
はじめの 3 つの条件すべてが該当していなければ上記の警告メッ
セージは問題を示すものではなく、無視することができます。
これらの条件が当てはまる場合は、ホストからゲストへ送信された UD P パ
ケットに未算出のチェックサムがあります。これにより、ホストの UD P パ
ケットがゲストのネットワークスタックには無効に見えるようになります。
解決法
この問題を解決するには、上記の 4 つの条件のいずれかを無効にします。最
善の解決法は、可能であればホストの iptables およびカーネルを iptables1.4.10 またはそれ以降に更新することです。別の方法としては、この特定の
ゲストの vho st-net ドライバーを無効にしてしまうことが最も的確な修正
方法です。これを行うには、以下のコマンドでゲスト設定を編集します。
virsh edit name_of_guest
<i nterface> セクションに <d ri ver> 行を変更するか、または追加しま
す。
<interface type='network'>
<model type='virtio'/>
<driver name='qemu'/>
...
</interface>
変更を保存し、ゲストをシャットダウンしてから再起動します。
これで解決されない場合、問題の原因は f irewalld とデフォルトの lib virt
ネットワークの競合である可能性があります。
これを修正するには、servi ce fi rewal l d sto p コマンドで f irewalld
を停止し、servi ce l i bvi rtd restart コマンドで lib virt を再起動し
ます。
B.9. ゲストは外部ネットワークにアクセスできるが、macvt ap 使用時にはホ
ストにアクセスできない
現象
ゲストは他のゲストと通信できるが、macvtap (別名 type='direct') ネットワークインター
フェース使用の設定後にはホストに接続できない。
調査
Virtual Ethernet Port Aggregator (VEPA) や VN-Link 対応スイッチに接続していない時でも、
macvtap インターフェースは役に立ちます。インターフェースのモードを bri d g e に設定する
と、非常に簡単な方法でゲストは物理ネットワークに直接接続することができます。従来のホス
トブリッジデバイスにつきものの設定問題 (または、NetworkManager の非互換性) がありませ
ん。
139
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
しかし、ゲスト仮想マシンが macvtap などの type='direct' ネットワークインターフェース
を使用するように設定されていると、ネットワーク上で他のゲストや他の外部ホストと通信する
機能がありながら、ゲストは自分のホストと通信できなくなります。
この状況は、実際にはエラーではなく macvtap の定義済み動作です。ホストの物理イーサネット
が macvtap ブリッジにアタッチされている方法が原因で、物理インターフェースに転送される
ゲストからそのブリッジへのトラフィックは、ホストの IP スタックに跳ね返ってくることがで
きません。さらには、物理インターフェースに送信されたホストの IP スタックからのトラ
フィックも macvtap ブリッジに跳ね返って来ず、ゲストに転送することができません。
解決法
lib virt を使って、分離したネットワークとこのネットワークに接続する各ゲスト仮想マシン用に
2 つ目のインターフェースを作成します。これでホストとゲストはこの分離したネットワーク上
で直接通信できる一方、NetworkManager との互換性も維持できます。
手順B .3 lib virt による分離ネットワークの作成
1. 以下の XML を /tmp/i so l ated . xml ファイルに追加して保存します。自分のネット
ワーク上で 192.168.254.0/24 がすでに使われている場合、別のネットワークを選びま
す。
<network>
<name>isolated</name>
<ip address='192.168.254.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.254.2' end='192.168.254.254' />
</dhcp>
</ip>
</network>
2. 以下のコマンドでネットワークを作成します: vi rsh net-d efi ne
/tmp/i so l ated . xml
3. vi rsh net-auto start i so l ated コマンドでネットワークの自動スタートを設定し
ます。
4. vi rsh net-start i so l ated コマンドでネットワークを起動します。
5. vi rsh ed i t name_of_guest を使って、ネットワーク接続に macvtap を使用する
ゲストの設定を編集し、以下と同様の新たな <interface> を <devices> セクション
に追加します。( <model type='virtio'/> 行を含めるかはオプション )
<interface type='network'>
<source network='isolated'/>
<model type='virtio'/>
</interface>
6. 各ゲストをシャットダウンし再起動します。
これでゲストは 192.168.254.1 のアドレスにあるホストにアクセスでき、ホストは各ゲストが
D HCP から取得した IP アドレスでゲストにアクセスできます (または、ゲストに手動で IP アド
レスを設定することもできます)。この新たなネットワークはこのホストとゲスト専用に分離され
ているので、ゲストからの他の通信はすべて macvtap インターフェースを使用することになりま
す。
14 0
一般的な libvirt エラーおよびトラブルシューティング
B.10. Could not add rule t o fixup DHCP response checksums on
net work 'default'
現象
以下のメッセージが表示されます。
Could not add rule to fixup DHCP response checksums on network
'default'
調査
このメッセージはエラーに見えますが、ほとんどの場合問題ありません。
解決法
ゲスト仮想マシンが D HCP から IP アドレスを取得できないという問題が発生していない限り、
このメッセージは無視してかまいません。
この問題が発生している場合は、「ゲスト上の PXE ブート (または D HCP ) が失敗」 を参照して
ください。
B.11. Unable t o add bridge br0 port vnet 0: No such device
現象
以下のエラーメッセージが表示されます。
Unable to add bridge name_of_bridge port vnet0: No such device
たとえばブリッジ名が br0 の場合、エラーメッセージは以下のようになります。
Unable to add bridge br0 port vnet0: No such device
lib virt のバージョン 0.9.6 およびそれ以前では、以下のようなメッセージになります。
Failed to add tap interface to bridge name_of_bridge: No such
device
たとえばブリッジ名が br0 の場合、エラーメッセージは以下のようになります。
Failed to add tap interface to bridge 'br0': No such device
調査
いずれのエラーメッセージも、ゲストの (またはドメインの) <i nterface> 定義で指定されたブ
リッジデバイスが存在しないことを示しています。
エラーメッセージで表示されたブリッジデバイスが存在しないことを確認するには、シェルコマ
ンド i fco nfi g br0 を使います。
以下のようなメッセージが表示されると、その名前のブリッジが存在しないことが確認できま
す。
14 1
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
br0: error fetching interface information: Device not found
存在しない場合は、解決法に進みます。
ただし、メッセージが以下のようであれば、問題は別に存在します。
br0
Link encap:Ethernet HWaddr 00:00:5A:11:70:48
inet addr:10.22.1.5 Bcast:10.255.255.255
Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:249841 errors:0 dropped:0 overruns:0 frame:0
TX packets:281948 errors:0 dropped:0 overruns:0
carrier:0
collisions:0 txqueuelen:0
RX bytes:106327234 (101.4 MiB) TX bytes:21182634 (20.2 MiB)
解決法
vi rsh で既存のブリッジを編集または新規ブリッジを作成
vi rsh を使って既存のブリッジもしくはネットワークの設定を編集するか、ブリッジ
デバイスをホストシステム設定に追加します。
vi rsh を使った既存ブリッジ設定の編集
vi rsh ed i t name_of_guest を使って既存のブリッジまたはネット
ワークを使用するための <i nterface> 定義を変更します。
たとえば、type= ' bri d g e' を type= ' netwo rk' に、<so urce
bri d g e= ' br0 ' /> を <so urce netwo rk= ' d efaul t' /> に変更しま
す。
vi rsh を使ったホストブリッジの作成
lib virt のバージョン 0.9.8 およびそれ以降では、vi rsh i face-bri d g e
コマンドでブリッジデバイスが作成できます。これで作成されるのは、eth0
のあるブリッジデバイス br0 で、ブリッジの一部として設定された物理ネッ
トワークインターフェースがアタッチされます。
virsh iface-bridge eth0 br0
オプション: このブリッジを削除して、以下のコマンドでオリジナルの eth0
設定を回復することもできます。
virsh iface-unbridge br0
ホストブリッジを手動で作成
lib virt の古いバージョンでは、ホスト上に手動でブリッジデバイスを作成することも
できます。指示に関しては 「libvirt を使用したブリッジネットワーキング」 を参照し
てください。
B.12. ゲストがスタートできずエラーが発生:warni ng :
/d ev/net/tun
現象
14 2
co ul d no t o pen
一般的な libvirt エラーおよびトラブルシューティング
ホストシステムの type= ' ethernet' (別名、ジェネリックイーサネット) インターフェースの
設定後にゲスト仮想マシンがスタートしない。以下と同様のエラーメッセージが
l i bvi rtd . l o g または /var/l o g /l i bvi rt/q emu/name_of_guest. l o g のどちらか、
または両方に表示される。
warning: could not open /dev/net/tun: no virtual network
emulation qemu-kvm: -netdev tap,script=/etc/my-qemuifup,id=hostnet0: Device 'tap' could not be initialized
調査
ジェネリックイーサネットのインターフェースタイプ (<i nterface type= ' ethernet' >) の
使用は推奨されません。これを使用するには、Q EMU およびゲストにおけるホストの潜在的なセ
キュリティーの不備に対する保護レベルを下げる必要があるからです。しかし、このタイプのイ
ンターフェースを使用して lib virt で直接サポートされていない別の機能を活用することも必要
なこともあります。たとえば、o p en vswit ch は lib virt では libvirt-0.9.11 までサポートされて
いなかったので、lib virt の古いバージョンでは <i nterface type= ' ethernet' > がゲスト
を o p en vswit ch ブリッジに接続する唯一の方法でした。
しかし、ホストシステムに他の変更を加えることなく <i nterface type= ' ethernet' > イン
ターフェースを設定すると、ゲスト仮想マシンは正常にスタートしなくなります。
この失敗の原因は、この種類のインターフェースでは、Q EMU に呼び出されるスクリプトは
タップデバイスを操作する必要があることにあります。しかし、type= ' ethernet' が設定さ
れていると、Q EMU をロックダウンする目的で、lib virt と SELinux はこれを妨げるための
チェックをいくつか確立します (通常、lib virt はタップデバイス作成および操作のすべてを実行
し、タップデバイスのオープンファイル記述子を Q EMU に渡します。)。
解決法
ホストシステムがジェネリックイーサネットインターフェースと互換性を持つように再設定しま
す。
手順B .4 ホストシステムがジェネリックイーサネットインターフェースを使用するように再設定
1. /etc/sel i nux/co nfi g で SELINUX= permi ssi ve と設定し、SELinux を
permissive に設定します。
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#
enforcing - SELinux security policy is enforced.
#
permissive - SELinux prints warnings instead of
enforcing.
#
disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of these two values:
#
targeted - Targeted processes are protected,
#
mls - Multi Level Security protection.
SELINUXTYPE=targeted
2. root シェルから setenfo rce permi ssi ve コマンドを実行します。
3. /etc/l i bvi rt/q emu. co nf で以下の行を追加または編集します。
clear_emulator_capabilities = 0
14 3
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
user = "root"
group = "root"
cgroup_device_acl = [
"/dev/null", "/dev/full", "/dev/zero",
"/dev/random", "/dev/urandom",
"/dev/ptmx", "/dev/kvm", "/dev/kqemu",
"/dev/rtc", "/dev/hpet", "/dev/net/tun",
4. l i bvi rtd を再起動します。
重要
これらのステップは Q EMU ゲストドメインに対するホストのセキュリティー保護を大幅
に低下させるので、この設定は <i nterface type= ' ethernet' > 以外に方法がない場
合にのみ使用してください。
注記
SELinux についてさらに詳しくは、Red Hat Enterprise Linux 6 Security-Enhanced Linux User Guide
を参照してください。
B.13. マイグレーションに失敗しエラーが発生 Erro r:
unabl e to reso l ve
ad d ress
現象
Q EMU ゲストマイグレーションが失敗し、以下のエラーメッセージが表示される。
# virsh migrate qemu qemu+tcp://192.168.122.12/system
error: Unable to resolve address name_of_host service '49155':
Name or service not known
たとえば、移行先のホスト名が " newyork" であるとすると、エラーメッセージは以下のようにな
ります。
# virsh migrate qemu qemu+tcp://192.168.122.12/system
error: Unable to resolve address 'newyork' service '49155': Name
or service not known
しかし、ホスト名 " newyork" はどこにも使用していないため、このエラーには違和感がありま
す。
調査
14 4
一般的な libvirt エラーおよびトラブルシューティング
マイグレーション中に、移行先ホスト上で稼働しているlib virt d はマイグレーションデータの受
信を予想しているアドレスおよびポートから URI を作成し、これをソースホスト上で稼働してい
る lib virt d に送信します。
上記の例では、移行先ホスト (19 2. 16 8. 122. 12) は名前を 'newyork' に設定していました。何
らかの理由で、そのホスト上で実行中の lib virt d は IP アドレスに対して名前を解決できず、送
信されるべきものが有効なままとなっています。このため、ソースの lib virt d が名前を解決する
ことを期待して、ホスト名 'newyork' が返されました。D NS が適切に設定されていなかった
り、/etc/ho sts にローカルループバックアドレス (127. 0 . 0 . 1) に関連するホスト名があっ
たりすると、このようなことが発生します。
マイグレーションデータに使用されるアドレスは、移行先 lib virt d への接続に使用されるアドレ
ス (たとえば、q emu+ tcp: //19 2. 16 8. 122. 12/system) から自動的に決定されることはあ
りません。これは、移行先 lib virt d と通信するために、ソースの lib virt d は (別のマシンで実行
中かもしれない) virsh が必要とするネットワークインフラストラクチャーとは別のものを使用
する必要がある場合があるためです。
解決法
最善の解決法は、D NS を正しく設定し、マイグレーションに関連するすべてのホストがすべての
ホスト名を解決できるようにすることです。
D NS をこのように設定できない場合は、各ホスト上の /etc/ho sts ファイルにマイグレーショ
ンに使用するすべてのホストのリストを手動で追加することができます。しかし、動的な環境で
はそのようなリストの一貫性の維持は困難です。
どの方法でもホスト名を解決可能にできない場合、vi rsh mi g rate はマイグレーションホスト
の特定をサポートします。
# virsh migrate qemu qemu+tcp://192.168.122.12/system
tcp://192.168.122.12
移行先 lib virt d は tcp: //19 2. 16 8. 122. 12 URI を取得し、自動生成されたポート番号を追
加します。この番号が望ましくない場合は (たとえば、ファイアウォール設定のため)、ポート番
号は以下のコマンドで指定できます。
# virsh migrate qemu qemu+tcp://192.168.122.12/system
tcp://192.168.122.12:12345
別のオプションでは、トンネル化したマイグレーションを使用します。トンネル化したマイグ
レーションでは、マイグレーションデータ用に別の接続を作成しませんが、その代わりに移行先
lib virt d との通信で使用される接続でデータをトンネルします。(たとえ
ば、q emu+ tcp: //19 2. 16 8. 122. 12/system)
# virsh migrate qemu qemu+tcp://192.168.122.12/system --p2p -tunnelled
B.14 . マイグレーションに失敗しエラーが発生:Unabl e
to al l o w access fo r
d i sk path: No such fi l e o r d i recto ry
現象
lib virt がディスクイメージにアクセスできないため、ゲスト仮想マシン (またはドメイン) を移
行できない。
14 5
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
# virsh migrate qemu qemu+tcp://name_of_host/system
error: Unable to allow access for disk path
/var/lib/libvirt/images/qemu.img: No such file or directory
たとえば、移行先のホスト名が " newyork" の場合、エラーメッセージは以下のようになります。
# virsh migrate qemu qemu+tcp://newyork/system
error: Unable to allow access for disk path
/var/lib/libvirt/images/qemu.img: No such file or directory
調査
デフォルトでは、マイグレーションで移動するのは実行中のゲストのメモリー内の状態のみです
(メモリ−または CPU 状態など)。マイグレーション中にはディスクイメージは移動しませんが、
両方のホストから同じパスでアクセスできる状態である必要があります。
解決法
両方のホストの同じ位置に共有ストレージをマウントしてセットアップします。一番簡単な方法
は、NFS を使用することです。
手順B .5 共有ストレージのセットアップ
1. ホスト上に共有ストレージとして機能する NFS サーバーをセットアップします。関連す
るすべてのホストが NFS で共有ストレージにアクセスしている限り、NFS サーバーには
マイグレーションに関与しているいずれかのホストを使用できます。
# mkdir -p /exports/images
# cat >>/etc/exports <<EOF
/exports/images
192.168.122.0/24(rw,no_root_squash)
EOF
2. lib virt を実行しているすべてのホスト上の共通の場所にエクスポートされたディレクト
リーをマウントします。たとえば、NFS サーバーの IP アドレスが 192.168.122.1 の場
合、ディレクトリーを以下のコマンドでマウントします。
# cat >>/etc/fstab <<EOF
192.168.122.1:/exports/images /var/lib/libvirt/images
auto 0 0
EOF
# mount /var/lib/libvirt/images
14 6
nfs
一般的な libvirt エラーおよびトラブルシューティング
注記
NFS を使っているホストからローカルディレクトリーをエクスポートし、別のホストの同
じパスにマウントすることはできません。ディスクイメージの保存に使われるディレクト
リーは、両方のホスト上の共有ストレージからマウントされる必要があります。これが正
確に設定されていない場合、ゲスト仮想マシンはマイグレーション中にそのディスクイ
メージへのアクセスを失う可能性があります。これは、ゲストを移行先に正常に移行した
後に、ソースホストの lib virt デーモンがディスクイメージ上のオーナーやパーミッショ
ン、SELinux ラベルを変更する可能性があるからです。
lib virt は、ディスクイメージが共有ストレージの場所からマウントされたことを検出す
ると、これらの変更を実施しません。
B.15. libvirt d のスタート時にゲスト仮想マシンが見当たらない
現象
lib virt デーモンは正常にスタートしたが、ゲスト仮想マシンが見当たらない
# virsh list --all
Id
Name
State
---------------------------------------------------#
調査
この問題の原因はいくつも考えられます。以下のテストを実施して原因を特定します。
K VM カーネルモジュールの確認
KVM カーネルモジュールがカーネルに挿入されていることを確認する。
# lsmod | grep kvm
kvm_intel
kvm
121346
328927
0
1 kvm_intel
AMD マシンを使用している場合は、root シェルで同様の l smo d | g rep
kvm_amd コマンドを使用してカーネルに kvm_amd カーネルモジュールが挿入されて
いることを確認します。
モジュールが確認されない場合、mo d pro be <modulename> コマンドを使用して挿
入します。
注記
一般的ではありませんが、KVM 仮想化サポートがカーネルにコンパイルされて
いる場合もあります。その場合は、モジュールは必要ありません。
仮想化拡張機能の確認
仮想化拡張機能がホスト上でサポートされ、有効となっていることを確認します。
14 7
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
# egrep "(vmx|svm)" /proc/cpuinfo
flags : fpu vme de pse tsc ... svm ... skinit wdt npt lbrv
svm_lock nrip_save
flags : fpu vme de pse tsc ... svm ... skinit wdt npt lbrv
svm_lock nrip_save
ご使用のハードウェアの BIOS 設定内のファームウェア設定で仮想化拡張機能を有効
にします。詳細は、ご使用のハードウェア資料を参照してください。
クライアント U R I 設定の確認
クライアントの URI が適切に設定されていることを確認します。
# virsh uri
vbox:///system
たとえば、このメッセージは URI が Q EMU ではなく Virt u alB o x ハイパーバイザー
に接続されていることを示し、本来は Q EMU ハイパーバイザーに接続するように設定
されているはずの URI の設定エラーを示しています。URI がQ EMU に正常に接続して
いる場合は、メッセージは以下のようになります。
# virsh uri
qemu:///system
他のハイパーバイザーが存在し、lib virt がこのハイパーバイザーにデフォルトで接続
する場合に、この状況が発生します。
解決法
これらのテスト実行後に、以下のコマンドでゲスト仮想マシンのリストを表示させます。
# virsh list --all
B.16. Unable t o connect t o server at 'host :16509': Connect ion refused
... error: failed t o connect t o t he hypervisor
現象
lib virt d 接続で TCP ポートをリッスンしている間に、接続が失敗する。
# virsh -c qemu+tcp://host/system
error: unable to connect to server at 'host:16509': Connection
refused
error: failed to connect to the hypervisor
/etc/l i bvi rt/l i bvi rtd . co nf で設定を変更した後でも、lib virt デーモンが TCP ポート
をリッスンしない。
# grep listen_ /etc/libvirt/libvirtd.conf
listen_tls = 1
listen_tcp = 1
listen_addr = "0.0.0.0"
14 8
一般的な libvirt エラーおよびトラブルシューティング
しかし、設定変更も lib virt の TCP ポートは開いていない。
# netstat -lntp | grep libvirtd
#
調査
lib virt デーモンが --l i sten オプションなしにスタートしたことを以下のコマンドを実行して
確認します。
# ps aux | grep libvirtd
root
27314 0.0 0.0 1000920 18304 ?
libvirtd --daemon
Sl
Feb16
1:19
出力には --l i sten は含まれません。
解決法
--l i sten オプションでデーモンをスタートします。
これを実行するには、/etc/sysco nfi g /l i bvi rtd ファイルを編集し、以下の行のコメント
解除を行います。
#LIBVIRTD_ARGS="--listen"
以下の行で lib virt d サービスを再スタートします。
# /etc/init.d/libvirtd restart
B.17. 一般的な XML エラー
lib virt ツールは XML ドキュメントを使用して構造化データを保存します。XML ドキュメントの様々なエ
ラーは、XML ドキュメントが API で lib virt に渡される際に発生します。一般的な XML エラー (XML の不
適切なフォーマットや不適切な値、要素の欠如を含む) のいくつかを以下で詳述します。
B.17.1. ドメイン定義の編集
これは推奨されませんが、ゲスト仮想マシン (またはドメイン) の XML ファイルを手動で編集することも時
には必要になります。編集目的でゲストの XML にアクセスするには、以下のコマンドを使用します。
# virsh edit name_of_guest.xml
このコマンドで、ゲスト仮想マシンの現在の定義によるファイルがテキストエディターで開かれます。編集
して変更を保存した後、XML はリロードされ、lib virt が解析します。XML が正しければ、以下のメッセー
ジが表示されます。
# virsh edit name_of_guest.xml
Domain name_of_guest.xml XML configuration edited.
14 9
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
重要
virsh で ed i t コマンドを使用して、XML ドキュメントを編集する際は、エディターを終了する前
にすべての変更を保存します。
XML ファイルの保存後に、xml l i nt コマンドで XML が整形式かどうかを確認します。または、vi rtxml -val i d ate コマンドで使用法の問題をチェックします。
# xmllint --noout config.xml
# virt-xml-validate config.xml
エラーが表示されない場合、XML 記述子は整形式で lib virt スキーマに合致しています。スキーマはすべて
の制約をキャッチしませんが、レポートされたエラーを修正することでトラブルシューティングが促進され
ます。
lib virt が保存する XML ドキュメント
これらのドキュメントには、ゲストの状態や設定の定義が含まれています。ドキュメントは自動
生成され、手動での編集は推奨されません。ドキュメントにあるエラーには、破損したドキュメ
ントのファイル名が含まれています。このファイル名は、URI によって定義されたホストマシン
上でのみ有効で、コマンドが実行されたマシンを参照する場合があります。
lib virt が作成したファイルでのエラーは稀にしかありません。エラーの原因となり得るの
は、lib virt のダウングレードです。新しいバージョンのlib virt は、古いバージョンが生成した
XML を常に読み込めるのに対して、古いバージョンの lib virt は、新しいバージョンで追加され
た XML 要素で混乱する可能性があります。
B.17.2. XML 構文エラー
構文エラーは、XML パーサーがキャッチします。エラーメッセージには、問題特定のための情報が含まれ
ています。
以下の例では、XML パーサーからのエラーメッセージは、3 行から構成されています。最初の行はエラー
メッセージを表示し、残りの 2 行にはエラーを含む XML コードのコンテキストと場所が含まれています。
3 行目には、上の行のどこにエラーがあるかのおおよその位置を示す表示が含まれています。
error: (name_of_guest.xml):6: StartTag: invalid element name
<vcpu>2</vcpu><
-----------------^
このメッセージに含まれている情報
( name_of_guest.xml)
これは、エラーを含むドキュメントのファイル名です。括弧内のファイル名は、メモ
リーから解析された XML ドキュメントを表現する象徴的な名前で、ディスク上のファ
イルに直接対応するものではありません。括弧内に含まれていないファイル名は、接続
先に配置されているローカルファイルです。
6
これは、XML ファイル内でのエラーを含む行数です。
St art T ag : in valid elemen t n ame
150
一般的な libvirt エラーおよびトラブルシューティング
これは lib xml2 パーサーからのエラーメッセージで、特定の XML エラーを記述するも
のです。
B.1 7 .2 .1 . ドキュメント内の不要な <
現象
以下のエラーが発生する。
error: (name_of_guest.xml):6: StartTag: invalid element name
<vcpu>2</vcpu><
-----------------^
調査
このエラーメッセージは、ゲストの XML ファイルの 6 行目にある < 記号の後で、パーサーが新
たな要素名を予測していることを示しています。
テキストエディターの行数表示が有効になっていることを確認します。XML ファイルを開いて、
6 行目のテキストを見つけます。
<domain type='kvm'>
<name>name_of_guest</name>
<memory>524288</memory>
<vcpu>2</vcpu><
ゲストの XML ファイルのこのスニペットには、ドキュメントの余分な < が含まれています。
解決法
余分な < を削除するか、または新たな要素を終了させます。
B.1 7 .2 .2 . 未終了の属性
現象
以下のエラーが発生する。
error: (name_of_guest.xml):2: Unescaped '<' not allowed in
attributes values
<name>name_of_guest</name>
--^
調査
ゲストの XML ファイルのこのスニペットには、未終了要素の属性値が含まれています。
<domain type='kvm>
<name>name_of_guest</name>
このケースでは、' kvm' を閉じる引用符が足りません。XML の開始および終了タグと同様に、
引用符やアポストロフィーなどの属性値のストリングは開いてから閉じる必要があります。
解決法
すべての属性値ストリングを正しく開いてから閉じます。
151
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
B.1 7 .2 .3. 開始および終了タグのミスマッチ
現象
以下のエラーが発生する。
error: (name_of_guest.xml):61: Opening and ending tag mismatch:
clock line 16 and domain
</domain>
---------^
調査
上記のエラーメッセージには、問題となっているタグを特定する 3 つのヒントがあります。
最後のコロンの後のメッセージである cl o ck l i ne 16 and d o mai n は、ドキュメントの
16 行目の <cl o ck> にタグのミスマッチがあることを示しています。最後のヒントはメッセー
ジのコンテキスト部分にあるポインターで、問題となっている 2 つ目のタグを特定しています。
ペアになっていないタグは /> で閉じる必要があります。以下のスニペットはこのルールを守っ
ていないので、上記のエラーメッセージが表示されました。
<domain type='kvm'>
...
<clock offset='utc'>
このエラーはファイル内の XML タグのミスマッチが原因で発生します。すべての XML タグは、
開始および終了タグでマッチする必要があります。
XML タグの他のミスマッチ例
以下の例では同様のエラーメッセージが生成され、XML タグのミスマッチの例が示さ
れています。
このスニペットには、閉じられていない <features> があります。
<domain type='kvm'>
...
<features>
<acpi/>
<pae/>
...
</domain>
このスニペットには、対応する開始タグのない </name> が含まれます。
<domain type='kvm'>
</name>
...
</domain>
解決法
すべての XML タグが正しく開始し、終了していることを確認します。
B.1 7 .2 .4 . よくあるタグのエラー
152
一般的な libvirt エラーおよびトラブルシューティング
現象
以下のエラーメッセージが表示されます。
error: (name_of_guest.xml):1: Specification mandate value for
attribute ty
<domain ty pe='kvm'>
-----------^
調査
XML エラーは、簡単な誤字脱字で発生します。このエラーメッセージは、XML エラー (このケー
スでは type という単語の中に余分な空白) をポインターで示しています。
<domain ty pe='kvm'>
以下の XML のサンプルは、特殊文字が足りなかったり余分な文字があったりするエラーが理由で
正確に解析されません。
<domain type 'kvm'>
<dom#ain type='kvm'>
解決法
問題のあるタグを特定するには、ファイルのコンテキストのエラーメッセージを読んで、ポイン
ターでエラーを見つけます。XML を修正し、変更を保存します。
B.17.3. 論理および設定エラー
適切にフォーマットされた XML ドキュメントには、構文が正しくても、lib virt が解析できないエラーが
含まれる場合があります。これらのエラーの多くは、以下で説明する 2 つのケースに当てはまります。
B.1 7 .3.1 . 部分的な消滅
現象
ドメインの編集または定義後に、変更箇所が表示されず、その効果も見られない。d efi ne コマ
ンドや ed i t コマンドは機能するが、XML を再度ダンプすると変更が消えてしまう。
調査
このエラーの原因となり得るのは、構築または構文が破損していて、libvirt が解析できないとい
う場合です。lib virt ツールは通常、理解できるコンストラクトのみを探し、それ以外はすべて無
視するので、lib virt が入力を解析した後に XML 変更が消滅する場合があります。
解決法
XML 入力を ed i t コマンドや d efi ne コマンドに渡す前に確認します。lib virt 開発者
は、lib virt とバンドルされている XML スキーマ一式を維持します。これは、lib virt が使用する
XML ドキュメントで許可されるコンストラクトの大半を定義するものです。
以下のコマンドを使って、lib virt XML ファイルを検証します。
# virt-xml-validate libvirt.xml
153
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
このコマンドが渡されると、多くの場合は lib virt が XML からのすべてのコンストラクトを理解
します。ただし、特定のハイパーバイザーにのみ有効なオプションをスキーマが検出できない場
合は、例外です。たとえば、vi rsh d ump コマンドの結果として lib virt が生成した XML は、
エラーなしで有効になります。
B.1 7 .3.2 . ドライブデバイスの種類の誤り
現象
CD -ROM 仮想ドライブ用のソースイメージの定義を追加したにもかかわらず、見当たらない。
# virsh dumpxml domain
<domain type='kvm'>
...
<disk type='block' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hdc' bus='ide'/>
<readonly/>
</disk>
...
</domain>
解決法
以下のように、欠けている <so urce> パラメーターを追加して XML を訂正します。
<disk type='block' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='/path/to/image.iso'/>
<target dev='hdc' bus='ide'/>
<readonly/>
</disk>
type= ' bl o ck' ディスクイメージは、ソースが物理デバイスであることを期待します。イメー
ジファイルのディスクを使用するには、代わりに type= ' fi l e' を使用します。
154
改訂履歴
改訂履歴
改訂 0.5- 31.3
校閲完了
Wed N o v 19 2014
Aiko Sasaki
改訂 0.5- 31.2
翻訳完了
T h u N o v 13 2014
Aiko Sasaki
改訂 0.5- 31.1
Su n N o v 9 2014
翻訳ファイルを XML ソースバージョン 0.5-31 と同期
Aiko Sasaki
改訂 0.5- 31
Fri O ct 10 2014
6.6 GA リリース向けバージョン
Sco t t R ad van
改訂 0.5- 30
T h u O ct 09 2014
Sco t t R ad van
Windows ゲスト移行用の古い NetKVM ドライバーについての警告を追加 (B Z #983321)。
改訂 0.5- 28
T h u O ct 09 2014
Sco t t R ad van
ゲストエージェントに関する詳細および詳細情報の参照先となる管理ガイドを追加 B
( Z #1149654)。
改訂 0.5- 27
T u e Sep 23 2014
Sco t t R ad van
CPU モデルと CPUID フラグサポートを表示するために qemu-kvm コマンドを拡張 BZ
( #1094116)。
KVM virtio ドライバーをインストールするためのエントリーを修正 B
( Z #1107954)。
改訂 0.5- 26
Mo n Sep 15 2014
ベンダー ID と製品 ID エントリーを交換 (BZ #1123934)。
Sco t t R ad van
改訂 0.5- 25
Mo n Au g u st 25 2014
vCPU 制限エラーを修正 (BZ #1092238)。
Jo d i B id d le
改訂 0.5- 24
T h u rs Au g u st 7 2014
古くなった CPU モデルの内容を削除 (BZ #1094116)。
Jo d i B id d le
改訂 0.5- 23
Wed Au g u st 6 2014
対応 CPU モデルを更新 (BZ #1094116)。
Jo d i B id d le
改訂 0.5- 22
T u e Au g u st 5 2014
Jo d i B id d le
SR-IOV の章のベンダーおよび製品 ID のエラーを修正 (B Z #1123934)。
改訂 0.5- 21
T u e Au g u st 5 2014
T ah lia R ich ard so n
Windows 2008 は USEPLATFORMCLOCK パラメーターをサポートしないが、デフォルトで RTC を使用
すると記載した行を追加 (BZ #907269)。
改訂 0.5- 20
T u e Au g u st 5 2014
Jo d i B id d le
QEMU の互換性の問題を防ぐために virtio ドライバーを最新の状態に保つことをユーザーに勧める注記を追
加 (BZ #983321)。
改訂 0.5- 19
Fri Au g u st 1 2014
T ah lia R ich ard so n
「ゲスト上の PXE ブート (または D HCP) が失敗」にある最初のソリューションについて、1 つのオプショ
ンまたはどちらか一方を使用する必要があることから「or both」を削除するように変更 (BZ #913793)。
155
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
改訂 0.5- 18
Fri Au g u st 1 2014
Jo d i B id d le
「仮想化パッケージのインストール」および「KVM 準仮想化 (virtio) ドライバー」を RHN のサポート終了
日を反映するように変更 (BZ #1107954)。
改訂 0.5- 17
Fri Ju ly 18 2014
T ah lia R ich ard so n
「KVM virtio ドライバーを使用した新規デバイスの作成」の手順を修正および再編成 B
( Z #1101859)。
改訂 0.5- 16
Wed 18 Ju n e 2014
--live オプションと注記を SR-IOV の章から削除。
T ah lia R ich ard so n
改訂 0.5- 15
T h u rs 5 Ju n e 2014
不要なスクリーンショットを削除。
T ah lia R ich ard so n
改訂 0.5- 14
Mo n 2 Ju n e 2014
virt の制限に関する章で vCPU の最大数を 240 に修正。
T ah lia R ich ard so n
改訂 0.5- 13
T h u rs 29 May 2014
管理ガイドの Hyper-V 情報を本書の Hyper-V セクションに移行。
T ah lia R ich ard so n
改訂 0.5- 12
T h u rs 29 May 2014
T ah lia R ich ard so n
Hyper-V セクションのリンクを更新、および LIS バージョン番号の言及を削除 (LIS は組み込まれることに
なったため、バージョン番号とダウンロードリンクの関連性がなくなる)。
改訂 0.5- 11
Wed 21 May 2014
T ah lia R ich ard so n
SME フィードバックに基づき KVM 準仮想化ドライバーの章を編集 (BZ #1094107)。
改訂 0.5- 10
T h u rs 15 May 2014
T ah lia R ich ard so n
「準仮想化デバイス」と「PCI デバイス割り当て制限」を「PCI デバイス」セクションの制限リストに統合
(BZ #891154)。
デフォルトデバイス設定を明確化 (BZ #918341)。
改訂 0.5- 09
T u es May 13 2014
virt-install 手順に対する若干の修正 (BZ #831157)。
重複テキストを削除 (BZ #1096501)。
T ah lia R ich ard so n
改訂 0.5- 08
T u es N o v 19 2013
6.5 GA リリース向けのバージョン
T ah lia R ich ard so n
改訂 0.5- 07
Frid ay Sep t 27 2013
誤字の修正、更新リンクその他の全般的なメンテナンス。
T ah lia R ich ard so n
改訂 0.5- 06
T h u rsd ay Sep t 19 2013
T ah lia R ich ard so n
対応 CPU モデル (BZ #1008992) および -cpu ? コマンドについての注記を追加。
BZ #1009186 からの情報を追加。
改訂 0.5- 04
Wed n esd ay Sep t 18 2013
T ah lia R ich ard so n
手順 7.1 のステップ 6a に最大ディスクサイズに関する注記を追加。
改訂 0.5- 03
Mo n d ay Sep t 16 2013
T ah lia R ich ard so n
第 3.1 章 Red Hat Enterprise Linux 6 サポート制限に対応メモリーに関する注記を追加。
改訂 0.5- 02
156
Fri Sep t 13 2013
T ah lia R ich ard so n
改訂履歴
第 8.1 章の VMware ESX で誤字を修正。
改訂 0.5- 01
Wed Ju ly 31 2013
BZ #909030 を基に VMWare ドライバーの情報を追加。
T ah lia R ich ard so n
改訂 0.4 - 54
T u es Feb 19 2013
6.4 GA リリース向けバージョン
T ah lia R ich ard so n
改訂 0.4 - 52
Fri Feb 15 2013
エラー修正のため著者タグを変更
T ah lia R ich ard so n
改訂 0.4 - 50
T h u N o v 22 2012
Lau ra B ailey
サポートされているストレージ方法のリストを訂正し、FCoE を含めて未検査のSRP を削除 BZ
( #846800
本ガイド全体でサポートされている PCI デバイスの説明を訂正 B
( Z #846800)
改訂 0.4 - 4 9
Mo n N o v 05 2012
reboot-timeout パラメーターの使用法を明確化 (BZ #853318)
Lau ra B ailey
改訂 0.4 - 4 7
Mo n O ct 29 2012
SME のフィードバックを反映 BZ #840924
Lau ra B ailey
改訂 0.4 - 4 6
T h u rs O ct 25 2012
D ayle Parker
QE および SME のフィードバックを反映 (BZ #813621, BZ #813605, BZ #753999)
改訂 0.4 - 4 2
T u e O ct 23 2012
QE フィードバックを反映 (BZ #840924)
Lau ra B ailey
改訂 0.4 - 4 1
Mo n O ct 22 2012
第 12 章に SME フィードバックを反映 (BZ #832023)
D ayle Parker
改訂 0.4 - 4 0
Fri O ct 19 2012
virsh の手順を編集、virt-manage の手順を追加 (BZ #831605)
スクリーンショットを訂正し撮り直し (BZ #734650)
スクリーンショットを編集 (BZ #753995)
第 12 章に SME フィードバックを反映 (BZ #832023)
D ayle Parker
改訂 0.4 - 39
T h u O ct 18 2012
スクリーンショットを訂正し撮り直し (BZ #753998)
スクリーンショットを訂正し撮り直し (BZ #734650)
スクリーンショットを撮り直し (BZ #753993)
QE フィードバックを反映 (BZ #866898)
D ayle Parker
改訂 0.4 - 38
T h u O ct 18 2012
Lau ra B ailey
PCI デバイスをアタッチ後に削除する方法のセクションを追加 (BZ #813605)
改訂 0.4 - 37
T h u O ct 18 2012
D ayle Parker
本ガイド全体で仮想マシン用語の一貫性を図る (BZ #813621)
仮想化パッケージグループに virt-what パッケージを追加 (BZ #831972)
最新のカーネルを更新 (BZ #753990)
「はじめに」を拡大 (BZ #831965)
157
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
改訂 0.4 - 36
Wed O ct 17 2012
Lau ra B ailey
準仮想化ドライバーの章でサポートされる Windows オペレーティングシステムのリストを訂正
(BZ #832043)
改訂 0.4 - 35
T u e O ct 16 2012
Lau ra B ailey
virsh nodedev-list の使用法とマイナーな誤字を訂正 (BZ #830097)
新たなブートパラメーターの記述を追加 (BZ #853318)
提供される VMWare ドライバーの記述を訂正 (BZ #840924)
提供される Microsoft ドライバーの記述を訂正 (BZ #840925)
改訂 0.4 - 34
Fri O ct 12 2012
Lau ra B ailey
ネットワークブリッジ作成に関する SME のフィードバックを反映、--vnc オプションの廃止、他のコンテ
ンツの一般的な更新 (BZ #853854)
改訂 0.4 - 33
Wed O ct 10 2012
Lau ra B ailey
トラブルシューティングの付録からサポート外のセクションを削除 (BZ #838410)
Hyper-V 上での RHEL VM 実行に関する詳細を追加 (BZ #840925)
PXE virt-install コマンド例を訂正 (BZ #853850)
改訂 0.4 - 32
Wed O ct 10 2012
D ayle Parker
SR-IOV の章と PCI デバイス割り当てに関する章の関連部分を編集 (BZ #832023)
改訂 0.4 - 31
Wed O ct 10 2012
Lau ra B ailey
Windows Vista に関する記述をすべて削除 (BZ #840939)
ゲストエージェントのインストールおよび設定の詳細を追加 (B Z #801269)
改訂 0.4 - 30
Mo n O ct 8 2012
D ayle Parker
スクリーンショットを置き換え、第 5 章のテキストを訂正 (BZ #753990)
改訂 0.4 - 29
Mo n O ct 8 2012
D ayle Parker
注記 re: no SR-IOV implementation for AMD を削除 (BZ #832023)
qemu-img 注記を訂正、5.3 のスクリーンショットを置き換え (BZ #831483)
改訂 0.4 - 28
T h u O ct 4 2012
D ayle Parker
仮想化スタートガイドからの設定特定詳細を 3.2.1. に移動 (BZ #842971)
改訂 0.4 - 27
Wed O ct 3 2012
SME レビューの SR-IOV セクションを訂正 (BZ #832023)
D ayle Parker
改訂 0.4 - 26
Wed O ct 3 2012
D ayle Parker
クロックオフセットに関する警告を訂正 (BZ #800748)
PCI デバイス割り当てに関する注記を訂正 (第 10 章および 12 章) (BZ #848992)
改訂 0.4 - 24
Fri Sep 28 2012
クロックスキューに関する警告を訂正 (BZ #800748)
D ayle Parker
改訂 0.4 - 23
T h u Sep 27 2012
D ayle Parker
付録のセクションを削除 (B.2.1. No connection driver available)、SME フィードバックにしたがって編
集 (BZ #838419)
第 10 章 を訂正 (BZ #831902)
158
改訂履歴
改訂 0.4 - 22
T h u Sep 27 2012
Lau ra B ailey
Offload.Rx.Checksum および Offload.Tx.Checksum パラメーターの記述を更新 (BZ #796667)
改訂 0.4 - 21
Fri Sep 21 2012
D ayle Parker
第 14 章にスチールタイムアカウンティングの箇所を追加 (BZ #800748)
以下を付録に追加。ESXi ゲストの作成 - B.7: VMWare ESXi ゲスト作成に失敗... (BZ #838415)
libvirt 付録の B.13: Guest is unable to start with error... の SELinux ガイドへの参照を追加
改訂 0.4 - 20
T h u Sep 20 2012
Lau ra B ailey
NetKVM ドライバーの設定可能なパラメーターを追加 (BZ #796667)
改訂 0.4 - 19
Wed Sep 19 2012
D ayle Parker
SME レビューにしたがって「ジェネリックイーサネット」の付録を編集し追加 (BZ #838415)
libvirt「XML エラー」の付録を明確化 (BZ #838755)
改訂 0.4 - 18
Mo n d ay Sep t emb er 17 2012 Lau ra B ailey
Windows ゲストマシンおよび TSC に関するアドバイスを修正 B
( Z #840939)
改訂 0.4 - 16
Mo n Sep 17 2012
第 5 章の仮想化パッケージグループを更新 (BZ #831972)
付録 A.4 を更新 (BZ #836891)
付録 A.1 の問題を明確化 (BZ #838429)
D ayle Parker
改訂 0.4 - 15
T h u rsd ay Sep t emb er 13 2012 Lau ra B ailey
SME フィードバックをネットワーク設定の章に反映 (BZ #560535)
改訂 0.4 - 14
Frid ay Au g u st 31 2012
D ayle Parker
手順 13.1. SR-IOV ネットワークデバイスをアタッチ のステップを訂正 (BZ #819649)
改訂 0.4 - 11
Mo n d ay Ju n e 18 2012
Lau ra B ailey
Red Hat Enterprise Linux 6.3 リリースの最後の QE フィードバックを反映
Red Hat Enterprise Linux 6.3 GA 用に再構築
改訂 0.4 - 07
Mo n d ay Ju n e 18 2012
Lau ra B ailey
Red Hat Enterprise Linux 6.3 リリースの最後の QE フィードバックを反映
改訂 0.4 - 06
訂正 (BZ #831932)
Frid ay Ju n e 15 2012
D ayle Parker
改訂 0.4 - 05
QE のフィードバックを反映
T h u rsd ay Ju n e 14 2012
Lau ra B ailey
改訂 0.4 - 04
libvirt の付録を表に再編成
T h u rsd ay May 31 2012
D ayle Parker
改訂 0.4 - 03
T u esd ay May 29 2012
libvirt のトラブルシューティングの付録を編集
D ayle Parker
改訂 0.4 - 02
T u esd ay May 08 2012
Lau ra B ailey
Intel ハードウェア上の PCI デバイス割り当てに関して、BZ #819693 と BZ #747857 の競合を解決
改訂 0.4 - 01
Wed n esd ay May 02 2012
D ayle Parker
159
Red Hat Ent erprise Linux 6 仮想化ホスト設定およびゲストインストールガイド
「lib virt エラーのトラブルシューティング」の付録を本ガイドに追加 (BZ #738250)
改訂 0.3- 33
QE のフィードバックを反映
Mo n d ay May 2 2012
Lau ra B ailey
改訂 0.3- 28
Mo n d ay Ap ril 02 2012
Lau ra B ailey
Windows VM インストールでの PV ドライバーのインストール手順を更新 B
( Z #804470)
改訂 0.3- 26
Wed n esd ay March 26 2012
Lau ra B ailey
SR-IOV 関連の手順で誤解を招いたり、不明瞭なものを多数訂正
デバイス割り当て関連の制限を多数更新 (BZ #738141)
Windows ドライバーインストール手順を更新 (BZ #804468)
virtio デバイスの作成に必要なコマンドのマイナーエラーを多数訂正 B
( Z #804470)
改訂 0.3- 20
T h u rsd ay March 22 2012
Lau ra B ailey
14章KVM ゲストのタイミング管理 の divider パラメーターについての警告を更新 (BZ #801630)
改訂 0.3- 18
Mo n d ay March 19 2012
D ayle Parker
開発者のフィードバックにしたがい、数式に関する推奨システム要件を明確化 (B Z #753988)
改訂 0.3- 17
Mo n d ay March 19 2012
divider パラメーターの記述と使用法を明確化 (BZ #801630)
Lau ra B ailey
改訂 0.3- 16
Mo n d ay March 12 2012
Lau ra B ailey
お客様および開発者のフィードバックにしたがいストレージ制限の詳細を調整 (B Z #773532)
divider パラメーターが特定の仮想ゲストに推奨されるという間違った表示を訂正 B
( Z #801630)
改訂 0.3- 15
T u esd ay March 06 2012
開発者のフィードバックにしたがい調整 (BZ #752738)
ドライバーインストールスクリーンショットを更新 (B Z #753706)
Lau ra B ailey
改訂 0.3- 13
Mo n d ay March 05 2012
SCSI 動作の変更についての詳細を追加 (BZ #790688)
Lau ra B ailey
改訂 0.3- 12
T h u rsd ay March 01 2012
D ayle Parker
PD F フォーマットのスクリーンショットサイズを調整 (BZ #772984)
改訂 0.3- 11
Wed n esd ay Feb ru ary 29 2012 D ayle Parker
手順 5.1 のステップタイトルを追加、誤字およびスタイルの問題を訂正 (B Z #773292)
手順 6.2 でスクリーンショットを表としてラベル付け (B Z #726268)
改訂 0.3- 10
T u esd ay Feb ru ary 28 2012
D ayle Parker
表および手順にラベル付け。本ガイド全体で警告の一貫性を図る (B Z #726268)
リンクの更新 (BZ #753997)
システム要件の計算に関する詳細を追加 (raw および qcow イメージ) (B Z #753988)
改訂 0.3- 9
Frid ay Feb ru ary 24 2012
仮想化管理ガイドへの相互参照リンクを削除 (BZ #753997)
D ayle Parker
改訂 0.3- 8
D ayle Parker
160
T h u rsd ay Feb ru ary 16 2012
改訂履歴
誤字を訂正、ゲストの命名規則を明確化、欠けていた表のキャプションおよびテキストオブジェクトを追加
(BZ #753706)
準仮想化のスペリングを確認、誤字を訂正、Red Hat ドキュメントのハイパーリンクを更新 B
( Z #753997
改訂 0.3- 7
T u esd ay Feb ru ary 07 2012
Lau ra B ailey
サポートされている PCI デバイスの数を訂正 (B Z #752738)
インストール手順を明確化 (BZ #649644)
手順10.2「Windows 7 仮想マシン上への Windows インストール」 の誤解を招く指示やスクリーンショッ
ト、スタイルおよび誤字を訂正 (BZ #736526)
Xen 仮想化手順を変更して完全仮想化ゲストを含める。テキストのみのインストールについての注意を追
加。フォーマットを若干調整 (BZ #629767)
改訂 0.2- 78
Frid ay D ecemb er 02 2011
Red Hat Enterprise Linux 6.2 の GA リリース
Lau ra B ailey
改訂 0.2- 6 6
BZ #734639
Wed Sep 14 2011
Sco t t R ad van
改訂 0.2- 6 2
BZ #736497
Wed Sep 14 2011
Sco t t R ad van
改訂 0.2- 6 0
T h u Sep 01 2011
SME レビューからの変更を追加 (BZ #734651)
Sco t t R ad van
改訂 0.2- 59
T h u Sep 01 2011
Sco t t R ad van
SME レビューからの変更を追加 (BZ #734647 および BZ #734653)
改訂 0.2- 03
Mo n May 30 2011
Sco t t R ad van
SR-IOV、準仮想化ドライバー、Red Hat Enterprise Linux 6 ホスト上での Red Hat Enterprise Linux 6 ゲ
スト仮想マシンのインストールを追加
改訂 0.2- 02
Mo n May 30 2011
内部プレビューサイトへの最初のプッシュ
Sco t t R ad van
改訂 0.2- 01
Sat May 28 2011
レイアウト設定、導入部テキストをインポート
Sco t t R ad van
改訂 0- 1
Publican による初版作成
Sco t t R ad van
Mo n Ap r 4 2011
161