仮想化管理ガイド
仮想環境の管理
概要
第1章 サーバーのベストプラクティス リンクのコピーリンクがクリップボードにコピーされました!
- SELinux を Enforcing モードで実行します。setenforce コマンドを使用して、SELinux が Enforcing モードで実行するように設定します。
setenforce 1
# setenforce 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - AutoFS、NFS、FTP、HTTP、NIS、telnetd、sendmail などの不要なサービスを削除または無効にします。
- サーバー上にはプラットフォームの管理に必要な最低限のユーザーアカウントのみを追加します。不要なユーザーアカウントは削除してください。
- ホストでは不必要なアプリケーションは実行しないようにしてください。ホストでアプリケーションを実行すると仮想マシンのパフォーマンスに影響を与えるため、その影響がサーバーの安定性に及ぶ可能性があります。サーバーがクラッシュする可能性のあるアプリケーションでも、サーバー上のすべての仮想マシンがダウンします。
- 仮想マシンのインストールおよびイメージには集中管理できる場所を使用します。仮想マシンのイメージは
/var/lib/libvirt/images/に格納します。仮想マシンのイメージをこれ以外のディレクトリーに格納する場合は、そのディレクトリーを SELinux ポリシーに追加し、インストールを開始する前にラベルの再設定を必ず行ってください。集中管理ができる共有可能なネットワークストレージの使用を強くお勧めします。
第2章 sVirt リンクのコピーリンクがクリップボードにコピーされました!
非仮想化環境
非仮想化環境では、ホスト物理マシンは互いに物理的に分離されており、各ホスト物理マシンには、Web サーバーや DNS サーバーなどのサービスで設定される自己完結型の環境があります。これらのサービスは、独自のユーザー空間、ホストの物理マシンのカーネルおよび物理ハードウェアに直接通信し、サービスをネットワークに直接提供します。以下のイメージは、仮想化されていない環境を表しています。
- ??????
- ユーザー空間: 全ユーザーモードのアプリケーションと一部のドライバーが実行されるメモリー領域。
- ???
- Web アプリ (Web アプリケーションサーバー): ブラウザーからアクセスできる Web コンテンツを配信します。
- ??????
- ホストカーネル: ホストの物理マシンの特権付きカーネル、カーネル拡張、およびほとんどのデバイスドライバーを実行するために厳密に予約されます。
- ???
- DNS サーバー: DNS レコードを格納し、ユーザーが IP アドレスの代わりに論理名を使用して Web ページにアクセスできるようにします。
仮想化環境
仮想化環境では、複数の仮想オペレーティングシステムを、ホスト物理マシン上にある単一のカーネルで実行できます。以下のイメージは、仮想化環境を表しています。
2.1. セキュリティーおよび仮想化 リンクのコピーリンクがクリップボードにコピーされました!
2.2. sVirt のラベル付け リンクのコピーリンクがクリップボードにコピーされました!
ps -eZ | grep qemu
# ps -eZ | grep qemu
system_u:system_r:svirt_t:s0:c87,c520 27950 ? 00:00:17 qemu-kvm
ls -lZ /var/lib/libvirt/images/*
# ls -lZ /var/lib/libvirt/images/*
system_u:object_r:svirt_image_t:s0:c87,c520 image1
| SELinux コンテキスト | タイプ/説明 |
|---|---|
| system_u:system_r:svirt_t:MCS1 | ゲスト仮想マシンのプロセス。MCS1 はランダムな MCS フィールドです。約 500,000 個のラベルがサポートされます。 |
| system_u:object_r:svirt_image_t:MCS1 | ゲスト仮想マシンのイメージ。これらのイメージの読み取り/書き込みができるのは、同じ MCS フィールドを持つ svirt_t プロセスのみです。 |
| system_u:object_r:svirt_image_t:s0 | ゲスト仮想マシンの共有の読み取り/書き込みコンテンツ。すべての svirt_t プロセスは svirt_image_t:s0 ファイルに書き込むことができます。 |
第3章 仮想マシンのクローン作成 リンクのコピーリンクがクリップボードにコピーされました!
- クローン は、1 台の仮想マシンのインスタンスです。クローンを使用すると、同じ仮想マシンのネットワークを設定したり、別の宛先に配布したりできます。
- テンプレート は、クローン作成のソースとして使用するように設計された仮想マシンのインスタンスです。テンプレートから複数のクローンを作成し、各クローンにマイナーな変更を加えることができます。これは、この変更がシステムに与える影響を確認する際に役立ちます。
- プラットフォームレベルの情報および設定には、仮想化ソリューションが仮想マシンに割り当てたものが含まれます。例には、ネットワークインターフェイスカード (NIC) の数と、その MAC アドレスが含まれます。
- ゲストオペレーティングシステムレベル情報および設定には、仮想マシン内で設定されたものが含まれます。例には SSH 鍵が含まれます。
- アプリケーションレベル情報および設定には、仮想マシンにインストールされているアプリケーションで設定したものが含まれます。例には、アクティベーションコードおよび登録情報が含まれます。注記情報およびアプローチは各アプリケーションに固有のものであるため、本章には、アプリケーションレベルの削除に関する情報は記載されていません。
3.1. クローンを作成する仮想マシンの準備 リンクのコピーリンクがクリップボードにコピーされました!
手順3.1 クローンを作成する仮想マシンの準備
仮想マシンのセットアップ
- クローンまたはテンプレートに使用する仮想マシンを構築します。
- クローンに必要なソフトウェアをインストールします。
- オペレーティングシステムに一意でない設定を設定します。
- 固有でないアプリケーション設定を設定します。
ネットワーク設定を削除します。
- 以下のコマンドを使用して、永続的な udev ルールを削除します。
rm -f /etc/udev/rules.d/70-persistent-net.rules
# rm -f /etc/udev/rules.d/70-persistent-net.rulesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記udev ルールを削除しない場合は、最初の NIC の名前が eth0 ではなく eth1 になります。 /etc/sysconfig/network-scripts/ifcfg-eth[x]で以下の編集を行い、ifcfg スクリプトから一意のネットワークの詳細を削除します。- HWADDR 行および Static 行を削除します。注記HWADDR が新しいゲストの MAC アドレスと一致しない場合、ifcfg は無視されます。したがって、ファイルから HWADDR を削除することが重要です。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - HWADDR または一意の情報が含まれていない DHCP 設定が残っていることを確認します。
DEVICE=eth[x] BOOTPROTO=dhcp ONBOOT=yes
DEVICE=eth[x] BOOTPROTO=dhcp ONBOOT=yesCopy to Clipboard Copied! Toggle word wrap Toggle overflow - ファイルに以下の行が含まれていることを確認します。
DEVICE=eth[x] ONBOOT=yes
DEVICE=eth[x] ONBOOT=yesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 以下のファイルが存在する場合は、そのファイルに同じ内容が含まれていることを確認してください。
/etc/sysconfig/networking/devices/ifcfg-eth[x]/etc/sysconfig/networking/profiles/default/ifcfg-eth[x]
注記NetworkManager または特殊な設定を仮想マシンで使用した場合は、追加の固有情報が ifcfg スクリプトから削除されていることを確認してください。
登録の詳細を削除します。
- 以下のいずれかを使用して、登録の詳細を削除します。
- Red Hat Network (RHN) 登録済みゲスト仮想マシンの場合は、以下のコマンドを実行します。
rm /etc/sysconfig/rhn/systemid
# rm /etc/sysconfig/rhn/systemidCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Red Hat Subscription Manager (RHSM) の登録済みゲスト仮想マシンの場合は、次のコマンドを使用します。
- 元の仮想マシンを使用しない場合は、以下のコマンドを実行します。
subscription-manager unsubscribe --all subscription-manager unregister subscription-manager clean
# subscription-manager unsubscribe --all # subscription-manager unregister # subscription-manager cleanCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 元の仮想マシンを使用する場合は、次のコマンドのみを実行します。
subscription-manager clean
# subscription-manager cleanCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記元の RHSM プロファイルはポータルに残ります。
その他の固有の詳細の削除
- 次のコマンドを使用して、sshd の公開鍵と秘密鍵のペアを削除します。
rm -rf /etc/ssh/ssh_host_*
# rm -rf /etc/ssh/ssh_host_*Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ssh キーを削除すると、このホストを信頼しない ssh クライアントの問題が回避されます。 - 複数のマシンで実行している場合に、競合する可能性があるその他のアプリケーション固有の識別子や設定を削除します。
次回のシステムの起動時に設定ウィザードを実行するように仮想マシンを設定します。
- 以下のいずれかの方法で、仮想マシンを次回起動したときに、関連する設定ウィザードが実行されるように設定します。
- Red Hat Enterprise Linux 6 以前の場合は、以下のコマンドを使用して、root ファイルシステムに .unconfigured という名前の空のファイルを作成します。
touch /.unconfigured
# touch /.unconfiguredCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Red Hat Enterprise Linux 7 の場合は、次のコマンドを実行して、最初の起動ウィザードおよび初期設定ウィザードを有効にします。
sed -ie 's/RUN_FIRSTBOOT=NO/RUN_FIRSTBOOT=YES/' /etc/sysconfig/firstboot systemctl enable firstboot-graphical systemctl enable initial-setup-graphical
# sed -ie 's/RUN_FIRSTBOOT=NO/RUN_FIRSTBOOT=YES/' /etc/sysconfig/firstboot # systemctl enable firstboot-graphical # systemctl enable initial-setup-graphicalCopy to Clipboard Copied! Toggle word wrap Toggle overflow
注記次回の起動時に実行するウィザードは、仮想マシンから削除された設定によって異なります。また、クローンの初回ブートでは、ホスト名を変更することが推奨されます。
3.2. 仮想マシンのクローン作成 リンクのコピーリンクがクリップボードにコピーされました!
3.2.1. virt-clone を使用したゲストのクローン作成 リンクのコピーリンクがクリップボードにコピーされました!
--orginal のみが必要です。オプションの一覧を表示するには、次のコマンドを実行します。
virt-clone --help
# virt-clone --help
例3.1 virt-clone を使用したゲストのクローン作成
virt-clone --original demo --auto-clone
# virt-clone --original demo --auto-clone
例3.2 virt-clone を使用したゲストのクローン作成
virt-clone --connect qemu:///system --original demo --name newdemo --file /var/lib/xen/images/newdemo.img --file /var/lib/xen/images/newdata.img
# virt-clone --connect qemu:///system --original demo --name newdemo --file /var/lib/xen/images/newdemo.img --file /var/lib/xen/images/newdata.img
3.2.2. virt-manager を使用したゲストのクローン作成 リンクのコピーリンクがクリップボードにコピーされました!
手順3.2 virt-manager を使用した仮想マシンのクローンの作成
virt-manager を開く
virt-manager を起動します。 メニューおよび サブメニューから アプリケーションを起動します。または、root で virt-manager を実行します。Virtual Machine Manager にあるゲスト仮想マシンの一覧から、クローンを作成するゲスト仮想マシンを選択します。クローンを作成するゲスト仮想マシンを右クリックし、 を選択します。Clone Virtual Machine ウィンドウが開きます。図3.1 Clone Virtual Machine ウィンドウ
クローンの設定
- クローンの名前を変更する場合は、クローンの新しい名前を入力します。
- ネットワーク設定を変更する場合は、Details を選択します。クローンの新しい MAC アドレスを入力します。OK をクリックします。
図3.2 Change MAC Address ウィンドウ
- クローンを作成したゲスト仮想マシンのディスクごとに、次のいずれかのオプションを選択します。
Clone this disk- ディスクは、クローンとして作成されたゲスト仮想マシンのクローンとして作成されます。Share disk with guest virtual machine name- ディスクは、クローンを作成されるゲスト仮想マシンとそのクローンで共有されます。Details- ストレージパスの変更 画面を開きます。これにより、ディスクへの新しいパスの選択が可能になります。図3.3 Change
storage pathウィンドウ
ゲスト仮想マシンのクローンを作成する
Clone をクリックします。
第4章 KVM のライブマイグレーション リンクのコピーリンクがクリップボードにコピーされました!
- 負荷分散: ゲスト仮想マシンは、ホスト物理マシンが過負荷になった場合、または別のホスト物理マシンが十分に活用されていない場合に、使用率の低いホスト物理マシンに移動できます。
- ハードウェア独立性: ホストの物理マシンでハードウェアデバイスをアップグレード、追加、または削除する必要がある場合、ゲスト仮想マシンを他のホストの物理マシンに安全に移動できます。つまり、ゲスト仮想マシンでは、ハードウェアの改善のためのダウンタイムが発生しません。
- 省エネ: ゲスト仮想マシンを他のホスト物理マシンに再配布できるため、電源をオフにして、低使用期間でエネルギーを節約し、コストを削減できます。
- 地理的な移行: 待ち時間を短縮するため、または深刻な状況では、ゲスト仮想マシンを別の場所に移動できます。
4.1. ライブマイグレーションの要件 リンクのコピーリンクがクリップボードにコピーされました!
移行の要件
- 次のいずれかのプロトコルを使用して、共有ストレージにインストールされたゲスト仮想マシン。
- ファイバーチャネルベースの LUN
- iSCSI
- FCoE
- NFS
- GFS2
- SCSI RDMA プロトコル (SCSI RCP) - Infiniband アダプターおよび 10GbE iWARP アダプターで使用されるブロックエクスポートプロトコル
- 移行プラットフォームおよびバージョンは、テーブル 表4.1「ライブマイグレーションの互換性」 に対して確認する必要があります。また、Red Hat Enterprise Linux 6 は、共有ストレージ上の raw イメージと qcow2 イメージを使用したゲスト仮想マシンのライブマイグレーションをサポートしていることにも注意してください。
- 両方のシステムで、適切な TCP/IP ポートが開いている必要があります。ファイアウォールが使用されている場合は、詳細なポート情報の https://access.redhat.com/site/documentation/ で見つかる 『Red Hat Enterprise Linux Virtualization セキュリティーガイド』 を参照してください。
- 共有ストレージメディアをエクスポートする別のシステム。ストレージは、移行に使用される 2 つのホストマシンのいずれかに配置しないでください。
- 共有ストレージは、移行元システムと移行先システムの同じ場所にマウントする必要があります。マウントするディレクトリー名は同じである必要があります。別のパスを使用してイメージを保持することもできますが、推奨されません。virt-manager を使用して移行を行う場合は、パス名が同じである必要があることに注意してください。ただし、virsh を使用して移行を実行する場合は、移行を実行するときに --xml オプションまたはプリフックを使用して、さまざまなネットワーク設定とマウントディレクトリーを使用できます。共有ストレージがなくても、オプション --copy-storage-all (非推奨) を使用して移行を成功させることができます。prehooks の詳細は、 libvirt.org を参照してください。XML オプションの詳細については、20章ドメイン XML の操作 を参照してください。
- パブリックブリッジ + タップネットワーク内の既存のゲスト仮想マシンで移行を試みる場合、移行元と移行先のホスト物理マシンは同じネットワークに配置する必要があります。この手順を行わないと、ゲストの仮想マシンネットワークが移行後に動作しません。
- Red Hat Enterprise Linux 5 および 6 では、KVM ゲスト仮想マシンのデフォルトのキャッシュモードが
noneに設定されているため、ディスクの状態に一貫性がありません。キャッシュオプションをnone(たとえば、virsh attach-disk cache none を使用) に設定すると、O_DIRECTフラグを使用してゲスト仮想マシンのファイルが開かれます (オープン システムコールを呼び出す場合)。つまり、ホストの物理マシンのキャッシュを回避し、ゲスト仮想マシンでキャッシュのみを提供します。キャッシュモードをnoneに設定すると、不整合の問題が回避され、使用すると、仮想マシンのライブマイグレーションが可能になります。キャッシュをnoneに設定する方法は、「ゲストへのストレージデバイスの追加」 を参照してください。
libvirtd サービスが有効になっていて (#chkconfig libvirtd on)、実行されている (#service libvirtd start) ことを確認してください。また、効果的に移行する機能は、/etc/libvirt/libvirtd.conf 設定ファイルのパラメーターの設定に依存することに注意してください。
手順4.1 libvirtd.conf の設定
libvirtd.confを開くには、root で次のコマンドを実行する必要があります。vim /etc/libvirt/libvirtd.conf
# vim /etc/libvirt/libvirtd.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 必要に応じてパラメーターを変更し、ファイルを保存します。
libvirtdサービスを再起動します。service libvirtd restart
# service libvirtd restartCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2. ライブマイグレーションと Red Hat Enterprise Linux バージョンの互換性 リンクのコピーリンクがクリップボードにコピーされました!
| 移行の方法 | リリースタイプ | 例 | ライブ移行のサポート | 注記 |
|---|---|---|---|---|
| 前方 | メジャーリリース | 5.x → 6.y | サポート対象外 | |
| 前方 | マイナーリリース | 5.x → 5.y (y>x, x>=4) | 完全対応 | 問題がある場合は報告する必要があります |
| 前方 | マイナーリリース | 6.x → 6.y (y>x, x>=0) | 完全対応 | 問題がある場合は報告する必要があります |
| 後方 | メジャーリリース | 6.x → 5.y | サポート対象外 | |
| 後方 | マイナーリリース | 5.x → 5.y (x>y,y>=4) | サポート対象 | 既知の問題は、移行に関する問題のトラブルシューティング を参照してください。 |
| 後方 | マイナーリリース | 6.x → 6.y (x>y, y>=0) | サポート対象 | 既知の問題は、移行に関する問題のトラブルシューティング を参照してください。 |
移行に関する問題のトラブルシューティング
- SPICE の問題: Red Hat Enterprise Linux 6.0→6.1 からの移行時に、SPICE に互換性のない変更があることが判明しました。このような場合、クライアントは切断してから再接続し、オーディオとビデオが一時的に失われる可能性があります。これは一時的なものであり、すべてのサービスが再開されます。
- USB の問題: Red Hat Enterprise Linux 6.2 は、移行サポートを含む USB 機能を追加しましたが、USB デバイスをリセットし、デバイス上で実行されているアプリケーションを中止させる特定の警告がないわけではありません。この問題は Red Hat Enterprise Linux 6.4 で修正され、今後のバージョンでは発生しません。6.4 よりも前のバージョンでこれが発生するのを防ぐには、USB デバイスが使用されている間は移行を行いません。
- 移行プロトコルの問題 - 後方移行が "unknown section error" で終了する場合は、一時的なエラーである可能性があるため、移行プロセスを繰り返すことで問題を修復できます。そうでない場合は、問題を報告してください。
ネットワークストレージの設定
共有ストレージを設定し、共有ストレージにゲスト仮想マシンをインストールします。
4.4. virsh を使用した KVM のライブ移行 リンクのコピーリンクがクリップボードにコピーされました!
virsh migrate --live GuestName DestinationURL
# virsh migrate --live GuestName DestinationURL
-live オプションが削除される可能性があることに注意してください。追加オプションは、「virsh migrate コマンドの追加オプション」 に一覧表示されています。
GuestName パラメーターは、移行するゲスト仮想マシンの名前を表します。
DestinationURL パラメーターは、移行先ホストの物理マシンの接続 URL です。移行先システムで同じバージョンの Red Hat Enterprise Linux を実行し、同じハイパーバイザーを使用し、libvirt を実行している必要があります。
DestinationURL パラメーターには、以下のセマンティクスがあります。
- 通常の移行:
DestinationURLは、ソースゲスト仮想マシンから見たターゲットホスト物理マシンの URL です。 - ピアツーピアの移行:
DestinationURLは、移行元ホストの物理マシンから表示されるターゲットホストの物理マシンの URL です。
/etc/hosts ファイルに移行先ホストの物理マシンのエントリーが必要です。次の例に示すように、宛先ホストの物理マシンの IP アドレスとホスト名をこのファイルに入力し、宛先ホストの物理マシンの IP アドレスとホスト名を置き換えます。
10.0.0.20 host2.example.com
10.0.0.20 host2.example.com
例:virsh を使用したライブマイグレーション
この例では、host1.example.com から host2.example.com に移行します。使用環境に合わせて、ホストの物理マシン名を変更します。この例では、guest1-rhel6-64 という名前の仮想マシンを移行します。
ゲスト仮想マシンが実行していることを確認します。
移行元システムで、host1.example.comを実行し、guest1-rhel6-64が実行していることを確認します。virsh list
[root@host1 ~]# virsh list Id Name State ---------------------------------- 10 guest1-rhel6-64 runningCopy to Clipboard Copied! Toggle word wrap Toggle overflow ゲスト仮想マシンの移行
次のコマンドを実行して、ゲスト仮想マシンを移行先host2.example.comにライブ移行します。リンク先の URL の末尾に/systemを追加し、フルアクセスが必要であることを libvirt に指示します。virsh migrate --live guest1-rhel6-64 qemu+ssh://host2.example.com/system
# virsh migrate --live guest1-rhel6-64 qemu+ssh://host2.example.com/systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドを入力すると、インストール先システムの root パスワードを求められます。待機
負荷やゲスト仮想マシンのサイズによっては、移行に時間がかかる場合があります。virsh はエラーのみを報告します。ゲスト仮想マシンは、完全に移行するまで、移行元ホストの物理マシンで実行し続けます。注記移行中、完了率インジケーターの数は、プロセスが完了する前に複数回減少する可能性があります。これは、移行の開始後に変更されたソースメモリーページを再度コピーする必要があるため、全体的な進行状況の再計算が原因で発生します。したがって、この動作は予期されたものであり、移行に問題があることを示すものではありません。ゲスト仮想マシンが移行先ホストに到達していることを確認する
宛先システムhost2.example.comから、guest1-rhel6-64が実行されていることを確認します。virsh list
[root@host2 ~]# virsh list Id Name State ---------------------------------- 10 guest1-rhel6-64 runningCopy to Clipboard Copied! Toggle word wrap Toggle overflow
virsh dumpxml Guest1 > Guest1.xml virsh -c qemu+ssh://<target-system-FQDN> define Guest1.xml virsh undefine Guest1
virsh dumpxml Guest1 > Guest1.xml
virsh -c qemu+ssh://<target-system-FQDN> define Guest1.xml
virsh undefine Guest1
4.4.1. virsh を使用した移行に関する追加のヒント リンクのコピーリンクがクリップボードにコピーされました!
- 手順4.1「libvirtd.conf の設定」 の説明に従って、libvirtd.conf ファイルを開きます。
- Processing controls のセクションを探します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow max_clientsおよびmax_workersパラメーターの設定を変更します。両方のパラメーターの番号が同じであることが推奨されます。max_clientsは、移行ごとに 2 つのクライアント (各側に 1 つ) を使用します。max_workersは、実行フェーズ中に移行元で 1 つのワーカーと、移行先で 0 のワーカーを使用し、終了フェーズ中に移行先でワーカーを 1 つ使用します。重要max_clientsパラメーターおよびmax_workersパラメーターの設定は、libvirtd サービスへのゲスト仮想マシンのすべての接続の影響を受けます。つまり、同じゲスト仮想マシンを使用しているユーザーで、同時に移行を実行しているすべてのユーザーは、max_clientsおよびmax_workersパラメーター設定で設定される制限にも古いことになります。このため、同時ライブマイグレーションを実行する前に、最大値を慎重に検討する必要があります。- ファイルを保存し、サービスを再起動します。注記起動したにもかかわらず認証されていない ssh セッションが多すぎるために、移行接続が切断する場合があります。デフォルトでは、
sshdで許可されるセッションは 10 セッションのみで、常に "pre-authenticated state" となります。この設定は、sshd 設定ファイル (ここでは/etc/ssh/sshd_config) のMaxStartupsパラメーターで制御されます。これには調整が必要な場合があります。この制限は DoS 攻撃 (および一般的なリソースの過剰使用) を防ぐために設定されているため、このパラメーターの調整は慎重に行ってください。この値を高く設定しすぎると、目的が無効になります。このパラメーターを変更するには、ファイル/etc/ssh/sshd_configを変更し、MaxStartups 行の先頭から#を削除して、10(デフォルト値) をより大きな数値に変更します。必ず保存して、sshdサービスを再起動してください。詳細は、sshd_configの man ページを参照してください。
4.4.2. virsh migrate コマンドの追加オプション リンクのコピーリンクがクリップボードにコピーされました!
--live のほかに、virsh migrate では以下のオプションを利用できます。
--direct- 直接移行に使用されます。--p2p- ピアツーピア移行に使用されます。--tunnelled- トンネル化された移行に使用されます。--persistent- ドメインを移行先ホストの物理マシンの永続状態に残します。--undefinesource- ソースホストの物理マシンのゲスト仮想マシンを削除します。--suspend- ドメインを移行先ホストの物理マシンの一時停止状態のままにします。--change-protection- 移行の進行中に、互換性のない設定変更がドメインに行われないように強制します。ハイパーバイザーによるサポートがある場合にこのオプションが暗黙的に有効になりますが、ハイパーバイザーに変更保護の対応がない場合に明示的に使用して移行を拒否できます。--unsafe- すべての安全手順を無視して、強制的に移行を実行します。--verbose- 移行の進行状況を表示します。--abort-on-error- 移行プロセス中にソフトエラー (I/O エラーなど) が発生すると移行を取り消します。--migrateuri: 通常省略される移行 URI です。--domain[string]- ドメイン名、ID、または uuid--desturi[string]: クライアント (通常の移行) またはソース (p2p 移行) から見た宛先ホスト物理マシンの接続 URI--migrateuri: 移行 URI。通常は省略できます。--timeout[seconds]- ライブマイグレーションカウンターが N 秒を超えるとゲスト仮想マシンを強制的に中断します。ライブマイグレーションでのみ使用できます。タイムアウトが開始されると、一時停止されたゲスト仮想マシンで移行が続行されます。--dname[string] - 移行時にゲスト仮想マシンの名前を新規の名前に変更します (サポートされている場合)。--xml- 指定されたファイル名を使用して、宛先で使用する別の XML ファイルを提供できます。このファイル名は、基となるストレージへのアクセスで、ソースと宛先の名前の相違を考慮するなど、ホスト固有のドメイン XML の部分にさらに多くの変更を加えます。このオプションは通常、省略されます。
4.5. virt-manager を使用した移行 リンクのコピーリンクがクリップボードにコピーされました!
virt-manager を開く
virt-manager を開きます。メインメニューバーから → → を選択して、virt-manager を起動します。図4.1 virt-Manager のメインメニュー
ターゲットホストの物理マシンへの接続
メニューをクリックしてターゲットホストの物理マシンに接続し、 をクリックします。図4.2 Add Connection ウィンドウの表示
接続の追加
Add Connection ウィンドウが表示されます。図4.3 ターゲットホストの物理マシンへの接続の追加
以下の詳細を入力します。- Hypervisor: を選択します。
- Method: 接続方法を選択します。
- Username: リモートホストの物理マシンのユーザー名を入力します。
- Hostname: リモートホストの物理マシンのホスト名を入力します。
ボタンをクリックします。この例では SSH 接続を使用しているため、次の手順で指定するユーザーのパスワードを入力する必要があります。図4.4 パスワードを入力
ゲスト仮想マシンの移行
ソースホスト物理マシン内のゲストのリストを開き (ホスト名の左側にある小さな三角形をクリック)、移行するゲスト (この例では guest1-rhel6-64) を右クリックして、 をクリックします。図4.5 移行するゲストの選択
フィールドで、ドロップダウンリストを使用して、ゲスト仮想マシンの移行先となるホスト物理マシンを選択し、 をクリックします。図4.6 移行先ホストの物理マシンの選択と、移行プロセスの開始
進捗ウィンドウが表示されます。図4.7 進捗ウィンドウ
virt-manager は、移行先ホストで実行されている、新しく移行されたゲスト仮想マシンを表示するようになりました。これで、ソースホストの物理マシンで実行されていたゲスト仮想マシンがシャットオフ状態で一覧表示されます。図4.8 移行先ホストの物理マシンで実行している移行ゲスト仮想マシン
オプション: ホストの物理マシンのストレージの詳細を表示します。
メニューで Connection Details をクリックすると、 ウィンドウが表示されます。タブをクリックします。移行先ホストの物理マシンの iSCSI ターゲットの詳細が表示されます。移行したゲスト仮想マシンがストレージを使用するものとして一覧表示されることに注意してください。図4.9 ストレージの詳細
このホストは、以下の XML 設定で定義されています。図4.10 宛先ホスト物理マシンの XML 設定
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第5章 ゲストのリモート管理 リンクのコピーリンクがクリップボードにコピーされました!
5.1. SSH を使用したリモート管理 リンクのコピーリンクがクリップボードにコピーされました!
- 仮想マシンを管理するには、リモートマシンへの root ログインアクセスが必要です。
- 初期接続の設定プロセスが遅くなる可能性があります。
- すべてのホストまたはゲストでユーザーのキーを取り消す標準または簡単な方法はありません。
- SSH は、リモートマシンの数が多いと適切にスケーリングされません。
- openssh
- openssh-askpass
- openssh-clients
- openssh-server
virt-manager 用にパスワードを使用しないまたはパスワードを使用したSSH アクセスの設定
以下の手順は、ゼロから開始しており、SSH キーが設定されていないことを前提としています。SSH 鍵を設定して別のシステムにコピーしている場合は、この手順をスキップできます。
オプション: ユーザーの変更
必要に応じてユーザーを変更します。この例では、ローカルの root ユーザーを使用して、その他のホストとローカルホストをリモートで管理します。su -
$ su -Copy to Clipboard Copied! Toggle word wrap Toggle overflow SSH 鍵ペアの生成
virt-manager が使用されているマシンで公開鍵ペアを生成します。この例では、~/.ssh/ディレクトリーのデフォルトの鍵の場所を使用します。ssh-keygen -t rsa
# ssh-keygen -t rsaCopy to Clipboard Copied! Toggle word wrap Toggle overflow リモートホストへの鍵のコピー
パスワードなしのリモートログイン、またはパスフレーズを使用したリモートログインでは、管理対象システムに SSH 鍵を配布する必要があります。ssh-copy-id コマンドを使用して、指定したシステムアドレス (この例ではroot@host2.example.com) の root ユーザーにキーをコピーします。ssh-copy-id -i ~/.ssh/id_rsa.pub root@host2.example.com
# ssh-copy-id -i ~/.ssh/id_rsa.pub root@host2.example.com root@host2.example.com's password:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次に、ssh root@host2.example.com コマンドを使用してマシンにログインし、.ssh/authorized_keysファイルをチェックインして予期しないキーが追加されていないことを確認します。必要に応じて、その他のシステムに対して繰り返します。オプション: パスフレーズを ssh-agent に追加します。
以下の手順では、既存の ssh-agent にパスフレーズを追加する方法について説明します。ssh-agent が実行されていない場合、実行に失敗します。エラーや競合を回避するには、SSH パラメーターが正しく設定されていることを確認してください。詳細は、『Red Hat Enterprise Linux 導入ガイド』 を参照してください。必要に応じて、SSH キーのパスフレーズを ssh-agent に追加します。ローカルホストで次のコマンドを使用して、パスフレーズ (存在する場合) を追加し、パスワードなしのログインを有効にします。ssh-add ~/.ssh/id_rsa
# ssh-add ~/.ssh/id_rsaCopy to Clipboard Copied! Toggle word wrap Toggle overflow SSH キーがリモートシステムに追加されます。
libvirt デーモン (libvirtd)
libvirt デーモンは、仮想マシンを管理するインターフェイスを提供します。管理が必要なすべてのリモートホストに libvirtd デーモンをインストールして実行する必要があります。
ssh root@somehost chkconfig libvirtd on service libvirtd start
$ ssh root@somehost
# chkconfig libvirtd on
# service libvirtd start
libvirtd と SSH を設定すると、仮想マシンにリモートでアクセスして管理できるようになります。この時点で、VNC でゲストにアクセスできるようになるはずです。
virt-manager を使用したリモートホストへのアクセス
リモートホストは、virt-manager GUI ツールで管理できます。SSH キーは、パスワードを使用しないログインを機能させるために、virt-manager を実行しているユーザーに属している必要があります。
- virt-manager を起動します。
- -> メニューを開きます。
図5.1 Add Connection メニュー
- ドロップダウンメニューを使用してハイパーバイザータイプを選択し、 チェックボックスをクリックして Connection (この場合は Remote tunnel over SSH) を開き、必要な と を入力して をクリックします。
5.2. TLS および SSL でのリモート管理 リンクのコピーリンクがクリップボードにコピーされました!
手順5.1 TLS 管理用の認証局 (CA) 鍵の作成
- 始める前に、certtool ユーティリティーがインストールされていることを確認してください。そうでない場合は、以下を行います。
yum install gnutls-utils
# yum install gnutls-utilsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 次のコマンドを使用して、秘密鍵を生成します。
certtool --generate-privkey > cakey.pem
# certtool --generate-privkey > cakey.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow - キーが生成されたら、次のステップは、キーが自己署名できるように署名ファイルを作成することです。作成するには、署名の詳細が含まれるファイルを作成し、
ca.infoという名前を付けます。このファイルには、以下の内容を記述する必要があります。vim ca.info
# vim ca.infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow cn = Name of your organization ca cert_signing_key
cn = Name of your organization ca cert_signing_keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 以下のコマンドを使用して自己署名キーを生成します。
certtool --generate-self-signed --load-privkey cakey.pem --template ca.info --outfile cacert.pem
# certtool --generate-self-signed --load-privkey cakey.pem --template ca.info --outfile cacert.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルが生成されたら、rm コマンドを使用して ca.info ファイルを削除できます。生成プロセスの結果として生成されるファイルの名前はcacert.pemです。このファイルは公開鍵 (証明書) です。読み込んだcakey.pemは秘密鍵です。このファイルは共有スペースに保存しないでください。この鍵は秘密鍵を保持します。 /etc/pki/CA/cacert.pemディレクトリー内のすべてのクライアントとサーバーにcacert.pem認証局証明書ファイルをインストールして、CA によって発行された証明書が信頼できることを通知します。このファイルの内容を表示するには、次のコマンドを実行します。certtool -i --infile cacert.pem
# certtool -i --infile cacert.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow これは、CA の設定に必要なものです。クライアントとサーバーの証明書を発行するために必要となるため、CA の秘密鍵を安全に保持します。
手順5.2 サーバー証明書の発行
qemu://mycommonname/system を使用してサーバーに接続するため、CN フィールドは同一である必要があります (mycommoname)。
- サーバーの秘密鍵を作成します。
certtool --generate-privkey > serverkey.pem
# certtool --generate-privkey > serverkey.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 最初に
server.infoというテンプレートファイルを作成して、CA の秘密鍵の署名を生成します。CN がサーバーのホスト名と同じに設定されていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 次のコマンドを使用して証明書を作成します。
certtool --generate-certificate --load-privkey serverkey.pem --load-ca-certificate cacert.pem --load-ca-privkey cakey.pem \ --template server.info --outfile servercert.pem
# certtool --generate-certificate --load-privkey serverkey.pem --load-ca-certificate cacert.pem --load-ca-privkey cakey.pem \ --template server.info --outfile servercert.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow - これにより、2 つのファイルが生成されます。
- serverkey.pem - サーバーの秘密鍵
- servercert.pem - サーバーの公開鍵
秘密鍵の場所は、秘密にしておきます。ファイルの内容を表示するには、以下のコマンドを実行します。certtool -i --inifile servercert.pem
# certtool -i --inifile servercert.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow このファイルを開く場合、CN=パラメーターは先に設定した CN と同じでなければなりません。(例:mycommonname) - 次の場所にある 2 つのファイルをインストールします。
serverkey.pem- サーバーの秘密鍵。このファイルは、/etc/pki/libvirt/private/serverkey.pemに置きます。servercert.pem- サーバーの証明書。サーバーの/etc/pki/libvirt/servercert.pemにインストールします。
手順5.3 クライアント証明書の発行
- すべてのクライアント (つまり、virt-manager などの libvirt にリンクされているプログラム) について、X.509 識別名 (DN) が適切な名前に設定された証明書を発行する必要があります。これは、企業レベルで決定する必要があります。たとえば、以下の情報が使用されます。
C=USA,ST=North Carolina,L=Raleigh,O=Red Hat,CN=name_of_client
C=USA,ST=North Carolina,L=Raleigh,O=Red Hat,CN=name_of_clientCopy to Clipboard Copied! Toggle word wrap Toggle overflow このプロセスは、以下の例外を除き、手順5.2「サーバー証明書の発行」 と非常に似ています。 - 以下のコマンドを使用して秘密鍵を作成します。
certtool --generate-privkey > clientkey.pem
# certtool --generate-privkey > clientkey.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 最初に
client.infoという名前のテンプレートファイルを作成して、CA の秘密鍵の署名を生成します。ファイルには以下の内容が含まれている必要があります (フィールドは、お住まいの地域/場所に合わせてカスタマイズする必要があります)。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 次のコマンドを使用して、証明書に署名します。
certtool --generate-certificate --load-privkey clientkey.pem --load-ca-certificate cacert.pem \ --load-ca-privkey cakey.pem --template client.info --outfile clientcert.pem
# certtool --generate-certificate --load-privkey clientkey.pem --load-ca-certificate cacert.pem \ --load-ca-privkey cakey.pem --template client.info --outfile clientcert.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow - クライアントマシンに証明書をインストールします。
cp clientkey.pem /etc/pki/libvirt/private/clientkey.pem cp clientcert.pem /etc/pki/libvirt/clientcert.pem
# cp clientkey.pem /etc/pki/libvirt/private/clientkey.pem # cp clientcert.pem /etc/pki/libvirt/clientcert.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3. トランスポートモード リンクのコピーリンクがクリップボードにコピーされました!
Transport Layer Security (TLS)
Transport Layer Security TLS 1.0 (SSL 3.1) が認証され、暗号化された TCP/IP ソケット。通常はパブリックポート番号をリッスンします。これを使用するには、クライアント証明書とサーバー証明書を生成する必要があります。標準のポートは 16514 です。
UNIX ソケット
UNIX ドメインソケットは、ローカルマシンでのみアクセスできます。ソケットは暗号化されず、UNIX の権限または SELinux を使用して認証を行います。通常のソケット名は /var/run/libvirt/libvirt-sock および /var/run/libvirt/libvirt-sock-ro です (読み取り専用接続の場合)。
SSH
SSH (Secure Shell Protocol) 接続で転送されます。Netcat が必要です (ncパッケージ) がインストールされています。libvirt デーモン (libvirtd) は、リモートマシンで実行している必要があります。SSH アクセスには、ポート 22 を開いておく必要があります。ある種の SSH キー管理 (たとえば、ssh-agentユーティリティー) を使用する必要があります。そうしないと、パスワードの入力を求められます。
ext
ext パラメーターは、libvirt のスコープ外の方法でリモートマシンに接続できる外部プログラムに使用されます。このパラメーターはサポートされていません。
TCP
暗号化されていない TCP/IP ソケット。実稼働環境での使用は推奨されていないため、これは通常無効になっていますが、管理者はこれをテストしたり、信頼できるネットワークで使用したりできます。デフォルトのポートは 16509 です。
リモート URI
URI (Uniform Resource Identifier) は、virsh および libvirt がリモートホストに接続するために使用します。URI は、virsh コマンドの --connect パラメーターとともに使用して、リモートホストで単一コマンドまたは移行を実行することもできます。リモート URI は、通常のローカル URI を取得し、ホスト名またはトランスポート名を追加することで形成されます。特別な場合として、remote の URI スキームを使用すると、リモートの libvirtd サーバーで、最適なハイパーバイザードライバーをプローブするように指示されます。これは、ローカル接続の NULL URI を渡すことに相当します。
driver[+transport]://[username@][hostname][:port]/path[?extraparameters]
driver[+transport]://[username@][hostname][:port]/path[?extraparameters]
- qemu://hostname/
- xen://hostname/
- xen+ssh://hostname/
リモート管理パラメーターの例
- SSH トランスポートと SSH ユーザー名
virtuserを使用して、host2という名前のリモート KVM ホストに接続します。それぞれの connect コマンドは connect [<name>] [--readonly] です。ここで、<name> はここで説明する有効な URI です。virsh connect コマンドの詳細については、「connect」 を参照してください。qemu+ssh://virtuser@hot2/
qemu+ssh://virtuser@hot2/Copy to Clipboard Copied! Toggle word wrap Toggle overflow - TLS を使用して、
host2という名前のホスト上のリモートの KVM ハイパーバイザーに接続します。qemu://host2/
qemu://host2/Copy to Clipboard Copied! Toggle word wrap Toggle overflow
テスト例
- 標準以外の UNIX ソケットを使用して、ローカルの KVM ハイパーバイザーに接続します。この場合は、UNIX ソケットの完全パスが明示的に指定されています。
qemu+unix:///system?socket=/opt/libvirt/run/libvirt/libvirt-sock
qemu+unix:///system?socket=/opt/libvirt/run/libvirt/libvirt-sockCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 暗号化されていない TCP/IP 接続を使用して、ポート 5000 の IP アドレス 10.1.1.10 のサーバーに libvirt デーモンを接続します。これは、デフォルト設定でテストドライバーを使用します。
test+tcp://10.1.1.10:5000/default
test+tcp://10.1.1.10:5000/defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow
追加の URI パラメーター
リモートの URI には、追加のパラメーターを追加できます。以下の表 表5.1「追加の URI パラメーター」 では、認識されるパラメーターを説明します。その他のパラメーターはすべて無視されます。パラメーター値は URI エスケープする必要があります (つまり、パラメーターおよび特殊文字が URI 形式に変換される前に疑問符 (?) が追加されることを意味します)。
| 名前 | トランスポートモード | 説明 | 使用例 |
|---|---|---|---|
| name | すべてのモード | リモートの virConnectOpen 関数に渡される名前。名前は、通常、リモートの URI から transport、hostname、port number、username、および追加のパラメーターを削除して生成されますが、非常に複雑なケースでは、名前を明示的に指定することをお勧めします。 | name=qemu:///system |
| command | ssh と ext | 外部コマンド。ext トランスポートの場合はこれが必要です。ssh の場合、デフォルトは ssh です。コマンド用に PATH が検索されます。 | command=/opt/openssh/bin/ssh |
| socket | unix と ssh | UNIX ドメインソケットへのパスで、デフォルトを上書きします。ssh トランスポートの場合は、これがリモートの netcat コマンド (netcat を参照) に渡されます。 | socket=/opt/libvirt/run/libvirt/libvirt-sock |
| netcat | ssh |
netcat コマンドを使用して、リモートシステムに接続できます。デフォルトの netcat パラメーターは nc コマンドを使用します。SSH トランスポートの場合、libvirt は以下の形式を使用して SSH コマンドを構築します。
command -p port [-l username] hostname
netcat -U ソケット
port、username、および hostname パラメーターは、リモート URI の一部として指定できます。command、netcat、および socket は、他の追加パラメーターから取得されます。
| netcat=/opt/netcat/bin/nc |
| no_verify | tls | ゼロ以外の値に設定すると、サーバーの証明書のクライアントチェックが無効になります。クライアントの証明書または IP アドレスのサーバーチェックを無効にするには、libvirtd 設定を変更する必要があります。 | no_verify=1 |
| no_tty | ssh | 0 以外の値に設定すると、リモートマシンに自動的にログインできない場合に ssh がパスワードを要求できなくなります。ターミナル へのアクセスがない場合は、これを使用します。 | no_tty=1 |
第6章 KVM でのオーバーコミット リンクのコピーリンクがクリップボードにコピーされました!
6.1. メモリーのオーバーコミット リンクのコピーリンクがクリップボードにコピーされました!
6.2. 仮想 CPU のオーバーコミット リンクのコピーリンクがクリップボードにコピーされました!
第7章 KSM リンクのコピーリンクがクリップボードにコピーされました!
qemu-kvm プロセスからメモリーのみが継承されます。ゲスト仮想マシンが実行されると、ゲストが同じオペレーティングシステムまたはアプリケーションを実行しているときに、ゲスト仮想マシンのオペレーティングシステムイメージのコンテンツを共有できます。
/sys/kernel/mm/ksm/merge_across_nodes を 0 に変更して、NUMA ノード間でページがマージされないようにします。カーネルメモリーが計算した統計情報は、ノード間での大量のマージ後にはそれぞれの間で相反する場合があります。そのため、KSM デーモンが大量のメモリーをマージすると、numad が混乱する可能性があります。システムに未使用のメモリーが大量にあると、KSM デーモンをオフにして無効にすることでパフォーマンスが高まる場合があります。NUMA の詳細は、『Red Hat Enterprise Linux パフォーマンスチューニングガイド』 を参照してください。
ksmサービスは、KSM カーネルスレッドを開始および停止します。ksmtunedサービスはksmを制御し、調整し、同じページのマージを動的に管理します。ksmtunedサービスはksmを開始し、メモリー共有が必要ない場合はksmサービスを停止します。ksmtunedサービスは、retune新しいゲストが作成または破棄されたときに実行するパラメーター。
KSM サービス
ksm サービスは qemu-kvm パッケージに含まれています。KSM は、Red Hat Enterprise Linux 6 ではデフォルトでオフになっています。ただし、Red Hat Enterprise Linux 6 を KVM ホスト物理マシンとして使用する場合は、ksm/ksmtuned サービスによってオンにされる可能性があります。
ksm サービスが開始されていない場合、KSM は 2000 ページのみを共有します。このデフォルトは低く、メモリー節約の利点は限られています。
ksm サービスが開始されると、KSM はホスト物理マシンシステムのメインメモリーの最大半分を共有します。ksm サービスを開始して、KSM がより多くのメモリーを共有できるようにしてください。
service ksm start
# service ksm start
Starting ksm: [ OK ]
ksm サービスは、デフォルトの起動シーケンスに追加できます。chkconfig コマンドを使用して、ksm サービスを永続化します。
chkconfig ksm on
# chkconfig ksm on
KSM チューニングサービス
ksmtuned サービスにはオプションがありません。ksmtuned サービスは、ksm をループして調整します。さらに、ゲスト仮想マシンが作成または破棄されると、ksmtuned サービスに libvirt から通知されます。
service ksmtuned start
# service ksmtuned start
Starting ksmtuned: [ OK ]
ksmtuned サービスは、retune パラメーターを使用して調整できます。retune パラメーターは、チューニング機能を手動で実行するように ksmtuned に指示します。
thres: アクティベーションキーのしきい値 (kbytes)KSM サイクルは、全thresプロセス RSZ の合計にシステムメモリーの合計にqemu-kvm値が追加されるとトリガーされます。このパラメーターは、KSM_THRES_COEFで定義されたパーセンテージの kbytes と同じです。
/etc/ksmtuned.conf ファイルは、ksmtuned サービスの設定ファイルです。以下のファイル出力は、デフォルトの ksmtuned.conf ファイルです。
KSM 変数とモニターリング
KSM は、監視データを /sys/kernel/mm/ksm/ ディレクトリーに保存します。このディレクトリー内のファイルは、カーネルによって更新される、KSM の使用状況と統計の正確な記録です。
/etc/ksmtuned.conf ファイルの設定可能な変数でもあります。
/sys/kernel/mm/ksm/ ファイル
- full_scans
- フルスキャンが実行されます。
- pages_shared
- 共有されたページの総数。
- pages_sharing
- 現在共有されているページ。
- pages_to_scan
- スキャンされていないページ。
- pages_unshared
- 共有されなくなったページ。
- pages_volatile
- 揮発性ページの数。
- run
- KSM プロセスが実行されているかどうか。
- sleep_millisecs
- スリープのミリ秒。
DEBUG=1 行が /etc/ksmtuned.conf ファイルに追加された場合、KSM チューニングアクティビティーは /var/log/ksmtuned ログファイルに保存されます。ログファイルの場所は、LOGFILE パラメーターを使用して変更することができます。ログファイルの場所を変更することはお勧めできません。SELinux 設定の特別な設定が必要になる場合があります。
KSM の非アクティブ化
KSM にはパフォーマンスのオーバーヘッドがあり、特定の環境またはホストの物理マシンシステムには大きすぎる可能性があります。
ksmtuned および ksm サービスを停止することで非アクティブ化できます。サービスを停止すると KSM が非アクティブになりますが、再起動後も持続しません。
chkconfig ksm off chkconfig ksmtuned off
# chkconfig ksm off
# chkconfig ksmtuned off
第8章 高度なゲスト仮想マシン管理 リンクのコピーリンクがクリップボードにコピーされました!
8.1. コントロールグループ (cgroup) リンクのコピーリンクがクリップボードにコピーされました!
8.2. Huge Page のサポート リンクのコピーリンクがクリップボードにコピーされました!
はじめに
x86 CPU は通常、4kB ページのメモリーに対応しますが、Huge Page と呼ばれる大容量のページを使用できます。KVM ゲストは、Transaction Lookaside Buffer (TLB) に対する CPU キャッシュヒットを増やすことでパフォーマンスを向上させるために、Huge Page メモリーサポートを使用してデプロイできます。特に大容量メモリーとメモリーを大量に消費するワークロードなど、Huge Page によってパフォーマンスが大幅に向上する可能性があります。Red Hat Enterprise Linux 6 は、Huge Page を使用してページサイズを大きくすることにより、大量のメモリーをより効果的に管理できます。
Transparent Huge Pages
Transparent Huge Page (THP) は、アプリケーションに必要な TLB エントリーを減らすカーネル機能です。また、すべての空きメモリーをキャッシュとして使用するようにすることで、パフォーマンスが向上します。
qemu.conf ファイルに特別な設定は必要ありません。/sys/kernel/mm/redhat_transparent_hugepage/enabled が always に設定されている場合、Huge Page はデフォルトで使用されます。
hugetlbfs 機能の使用は妨げられません。ただし、hugetlbfs が使用されていない場合、KVM は通常の 4kB ページサイズの代わりに透過的な巨大ページを使用します。
8.3. Hyper-V ハイパーバイザーでのゲスト仮想マシンとしての Red Hat Enterprise Linux の実行 リンクのコピーリンクがクリップボードにコピーされました!
- VMBUS プロトコルのアップグレード - VMBUS プロトコルが Windows 8 レベルにアップグレードされました。この作業の一環として、ゲストで利用可能な全仮想 CPU で VMBUS 割り込みを処理できるようになりました。さらに、Red Hat Enterprise Linux ゲスト仮想マシンと Windows ホストの物理マシン間のシグナルプロトコルが最適化されています。
- 合成フレームバッファードライバー - Red Hat Enterprise Linux デスクトップユーザー向けのグラフィックパフォーマンスと優れた解決策を提供します。
- ライブ仮想マシンのバックアップサポート: ライブの Red Hat Enterprise Linux ゲスト仮想マシンの中断のないバックアップサポートをプロビジョニングします。
- 固定サイズの Linux VHD 動的拡張 - ライブマウントされた固定サイズ Red Hat Enterprise Linux VHD の拡張を可能にします。
8.4. ゲスト仮想マシンのメモリー割り当て リンクのコピーリンクがクリップボードにコピーされました!
- バイトの場合は
bまたはbytesになります。 - キロバイトの場合は、
KBになります (10 3 または 1,000 バイトのブロック) - キビバイトの場合は
kまたはKiB(2 10 または 1024 バイトのブロック) MBメガバイトの場合 (10 6 または 1,000,000 バイトのブロック)- メビバイトの場合は
MまたはMiB(220 または 1,048,576 バイトのブロック) GB(ギガバイト) (109 または 1,000,000,000 バイトのブロック)- ギビバイトの場合は
GまたはGiB(30 または 1,073,741,824 バイトのブロック) - エクサバイトの場合は
TB(1012 または 1,000,000,000,000 バイト のブロック) - テビバイトの場合は
TまたはTiB(2 40 または 1,099,511,627,776 のブロック)
memory unit により決定されます。デフォルトは、測定単位としての KiB (キビバイト) になります。この値は、210 または 1024 バイトのブロックで乗算されます。
dumpCore を使用して、ゲスト仮想マシンのメモリーを、生成されるコアダンプ (dumpCore='on') に含めるか (dumpCore='off') 含まないかを制御できます。デフォルト設定はonしたがって、パラメーターがに設定されていない場合off、ゲスト仮想マシンのメモリーはコアダンプファイルに含まれます。
currentMemory 属性は、ゲスト仮想マシンの実際のメモリー割り当てを決定します。この値は最大割り当てよりも低くなり、ゲスト仮想マシンのメモリーを即座にバルーンアップすることができます。これを省略すると、デフォルトでは memory 要素と同じ値に設定されます。unit 属性の動作は、メモリーと同じです。
8.5. ゲスト仮想マシンの自動起動 リンクのコピーリンクがクリップボードにコピーされました!
TestServer を設定して、ホストの物理マシンのブート時に自動的に起動します。
virsh autostart TestServer
# virsh autostart TestServer
Domain TestServer marked as autostarted
--disable パラメーターを使用します。
virsh autostart --disable TestServer
# virsh autostart --disable TestServer
Domain TestServer unmarked as autostarted
8.6. ゲスト仮想マシンの SMART ディスク監視の無効化 リンクのコピーリンクがクリップボードにコピーされました!
service smartd stop chkconfig --del smartd
# service smartd stop
# chkconfig --del smartd
8.7. VNC サーバーの設定 リンクのコピーリンクがクリップボードにコピーされました!
~/.vnc/xstartup ファイルを作成してから編集し、vncserver が起動するたびに GNOME セッションを開始します。vncserver スクリプトの初回実行時に、VNC セッションに使用するパスワードの入力が求められます。vnc サーバーファイルの詳細は、『Red Hat Enterprise Linux インストールガイド』 を参照してください。
8.8. 新しい一意の MAC アドレスの生成 リンクのコピーリンクがクリップボードにコピーされました!
macgen.py として保存します。これで、そのディレクトリーから ./macgen.py を使用してスクリプトを実行でき、新しい MAC アドレスが生成されます。出力の例を以下に示します。
./macgen.py
$ ./macgen.py
00:16:3e:20:b0:11
8.8.1. ゲスト仮想マシン用に新しい MAC を生成する別の方法 リンクのコピーリンクがクリップボードにコピーされました!
echo 'import virtinst.util ; print\ virtinst.util.uuidToString(virtinst.util.randomUUID())' | python echo 'import virtinst.util ; print virtinst.util.randomMAC()' | python
# echo 'import virtinst.util ; print\
virtinst.util.uuidToString(virtinst.util.randomUUID())' | python
# echo 'import virtinst.util ; print virtinst.util.randomMAC()' | python
8.9. ゲスト仮想マシンの応答時間の改善 リンクのコピーリンクがクリップボードにコピーされました!
- 深刻なオーバーコミットされたメモリー。
- プロセッサーの使用率が高いオーバーコミットメモリー
- その他の (qemu-kvm プロセスではない) は、ホストの物理マシンのプロセスがビジー状態または停止している。
8.10. libvirt での仮想マシンタイマー管理 リンクのコピーリンクがクリップボードにコピーされました!
<clock> 要素は、ゲスト仮想マシンのクロックをホスト物理マシンのクロックと同期させる方法を決定するために使用されます。clock 要素には以下の属性があります。
offsetは、ゲスト仮想マシンのクロックがホストの物理マシンのクロックからどのようにオフセットされるかを決定します。offset 属性には、以下の値を使用できます。Expand 表8.1 offset 属性値 値 説明 utc ゲスト仮想マシンのクロックは、起動時に UTC に同期されます。 localtime ゲスト仮想マシンのクロックは、起動時にホストの物理マシンの設定済みタイムゾーンに同期されます (存在する場合)。 timezone ゲスト仮想マシンのクロックは、 timezone属性で指定された特定のタイムゾーンに同期されます。variable ゲスト仮想マシンクロックは UTC の任意のオフセットに同期されます。UTC との相対的なデルタは、 adjustment属性を使用して秒単位で指定します。ゲスト仮想マシンは、時間の経過とともにリアルタイムクロック (RTC) を自由に調整でき、次の再起動後にそれが受け入れられることを期待しています。これは、utcモードとは対照的に、リブートごとに RTC の調整が失われます。注記値 utc は、デフォルトで仮想マシンのクロックオフセットとして設定されます。ただし、ゲスト仮想マシンのクロックを localtime の値で実行している場合は、ゲスト仮想マシンのクロックをホスト物理マシンのクロックと同期させるため、クロックオフセットを変更して別の値にする必要があります。timezone属性は、ゲスト仮想マシンクロックに使用されるタイムゾーンを決定します。adjustment属性は、ゲスト仮想マシンのクロック同期にデルタを提供します。秒単位で、UTC との相対パスになります。
例8.1 常に UTC に同期する
<clock offset="utc" />
<clock offset="utc" />
例8.2 常にホストの物理マシンのタイムゾーンに同期する
<clock offset="localtime" />
<clock offset="localtime" />
例8.3 任意のタイムゾーンへの同期
<clock offset="timezone" timezone="Europe/Paris" />
<clock offset="timezone" timezone="Europe/Paris" />
例8.4 UTC + 任意のオフセットに同期する
<clock offset="variable" adjustment="123456" />
<clock offset="variable" adjustment="123456" />
8.10.1. クロックのタイマー子要素 リンクのコピーリンクがクリップボードにコピーされました!
name のみが必要で、他のすべての属性は任意です。
name 属性は使用する時間ソースの型を決定し、以下のいずれかになります。
| 値 | 説明 |
|---|---|
| pit | Programmable Interval Timer - 周期的な割り込みがあるタイマーです。 |
| rtc | Real Time Clock - 周期的な割り込みがある継続的に実行するタイマー。 |
| tsc | Time Stamp Counter: リセットしてからのティック数をカウント、割り込みなし。 |
| kvmclock | KVM クロック: KVM ゲスト仮想マシンの推奨されるクロックソース。KVM pvclock または kvm-clock を使用すると、ゲスト仮想マシンがホストの物理マシンのウォールクロックタイムを読み取ることができます。 |
8.10.2. track リンクのコピーリンクがクリップボードにコピーされました!
track 属性はタイマーによって追跡されるものを指定します。rtc の名前の値にのみ有効です。
| 値 | 説明 |
|---|---|
| boot | 古い ホストの物理マシン オプションに対応します。これはサポート対象外の追跡オプションです。 |
| guest | RTC は常にゲスト仮想マシンの時間を追跡します。 |
| wall | RTC は常にホスト時間を追跡します。 |
8.10.3. tickpolicy リンクのコピーリンクがクリップボードにコピーされました!
tickpolicy 属性は、ゲスト仮想マシンにティックを渡すために使用されるポリシーを割り当てます。以下の値を使用できます。
| 値 | 説明 |
|---|---|
| delay | 通常のレートで配信を継続します (ティックが遅れます)。 |
| catchup | キャッチアップするために、より高いレートで配信されます。 |
| merge | ティックが 1 つのティックにマージされます。 |
| discard | 不明なティックはすべて破棄されます。 |
8.10.4. 頻度、モード、および表示 リンクのコピーリンクがクリップボードにコピーされました!
frequency 属性は固定頻度を設定するために使用されます。Hz で測定されます。この属性は、name 要素に tsc の値がある場合にのみ関連します。他のすべてのタイマーは固定周波数 (pit、rtc) で動作します。
mode は、タイムソースがゲスト仮想マシンに公開される方法を決定します。この属性は、tsc の name 値にのみ関係します。その他のタイマーは常にエミュレートされます。コマンドは以下のようになります。<timer name='tsc' frequency='NNN' mode='auto|native|emulate|smpsafe'/>モードの定義は表に記載されます。
| 値 | 説明 |
|---|---|
| auto | TSC が不安定である場合はネイティブで、ネイティブの TSC アクセスを許可します。 |
| native | 常にネイティブ TSC アクセスを許可します。 |
| エミュレート | 常に TSC をエミュレートします。 |
| smpsafe | 常に TSC およびインロック SMP をエミュレートします。 |
present は、ゲスト仮想マシンに表示されるデフォルトのタイマーセットを上書きするために使用されます。
| 値 | 説明 |
|---|---|
| はい | このタイマーがゲスト仮想マシンに表示されるよう強制します。 |
| いいえ | このタイマーをゲスト仮想マシンに表示しないように強制します。 |
8.10.5. クロック同期の使用例 リンクのコピーリンクがクリップボードにコピーされました!
例8.5 RTC および PIT タイマーとローカルタイムに同期されるクロック
<clock offset="localtime"> <timer name="rtc" tickpolicy="catchup" track="guest virtual machine" /> <timer name="pit" tickpolicy="delay" /> </clock>
<clock offset="localtime">
<timer name="rtc" tickpolicy="catchup" track="guest virtual machine" />
<timer name="pit" tickpolicy="delay" />
</clock>
- ゲスト仮想マシンには 1 つの CPU のみを指定可能
- APIC タイマーを無効にする必要があります (noapictimer コマンドラインオプションを使用)
- ゲストで NoHZ モードを無効にする必要があります (nohz = off コマンドラインオプションを使用)
- ゲストでは高解像度タイマーモードを無効にする必要があります (highres = off コマンドラインオプションを使用)
- PIT クロックソースは、高解像度タイマーモードまたは NoHz モードと互換性がありません。
8.11. PMU を使用したゲスト仮想マシンのパフォーマンスの監視 リンクのコピーリンクがクリップボードにコピーされました!
yum install perf.
# yum install perf.
8.12. ゲスト仮想マシン電源管理 リンクのコピーリンクがクリップボードにコピーされました!
pm S3 (ディスクへのサスペンド) および S4 (メモリーへのサスペンド) ACPI スリープ状態の BIOS サポートを有効 (はい) または無効 (いいえ) にします。何も指定しないと、ハイパーバイザーはデフォルト値のままになります。
第9章 ゲスト仮想マシンデバイスの設定 リンクのコピーリンクがクリップボードにコピーされました!
- Emulated devices は、実際のハードウェアを模倣する純粋な仮想デバイスであり、未変更のゲストオペレーティングシステムは標準のインボックスドライバーを使用して動作できるようにします。Red Hat Enterprise Linux 6 は、216 virtio デバイスまで対応します。
- VirtIO devices は、仮想マシンで最適に動作するように設計された仮想デバイスです。VirtIO デバイスはエミュレートされたデバイスと似ていますが、Linux 以外の仮想マシンには、デフォルトで必要となるドライバーは含まれません。Virtual Machine Manager (virt-manager) や Red Hat Virtualization Hypervisor などの仮想化管理ソフトウェアは、サポートされている Linux 以外のゲストオペレーティングシステム用にこれらのドライバーを自動的にインストールします。Red Hat Enterprise Linux 6 は、最大 700 の scsi ディスクに対応します。
- 割り当てられたデバイス は、仮想マシンに公開される物理デバイスです。このメソッドは passthrough としても知られています。デバイスの割り当てにより、仮想マシンはさまざまなタスクで PCI デバイスに排他的にアクセスできるようになり、PCI デバイスがゲストオペレーティングシステムに物理的に接続されているかのように見え、動作します。Red Hat Enterprise Linux 6 は、仮想マシンごとに割り当てられたデバイスを最大 32 個までサポートします。
/etc/security/limits.conf で設定され、/etc/libvirt/qemu.conf でオーバーライドできます)。他の制限要因には、仮想バスで利用可能なスロット数や、sysctl で設定されたオープンファイルのシステム全体の制限が含まれます。
allow_unsafe_interrupts vfio_iommu_type1 モジュールへのオプションを使用して引き続き PCI デバイスの割り当てを許可することを選択できます。これは、以下を含む /etc/modprobe.d に .conf ファイル (local.conf など) を追加することで、永続的に実行できます。
options vfio_iommu_type1 allow_unsafe_interrupts=1
options vfio_iommu_type1 allow_unsafe_interrupts=1
echo 1 > /sys/module/vfio_iommu_type1/parameters/allow_unsafe_interrupts
# echo 1 > /sys/module/vfio_iommu_type1/parameters/allow_unsafe_interrupts
9.1. PCI デバイス リンクのコピーリンクがクリップボードにコピーされました!
手順9.1 PCI デバイス割り当てのための Intel システムの準備
Intel VT-d 仕様を有効にする
Intel VT-d 仕様では、物理デバイスを仮想マシンに直接割り当てるハードウェアサポートが提供されます。この仕様は、Red Hat Enterprise Linux で PCI デバイスの割り当てを使用するために必要です。Intel VT-d 仕様は、BIOS で有効にする必要があります。システムの製造元によっては、この仕様をデフォルトで無効にしている場合があります。これらの仕様を表示するのに使用される用語はメーカーにより異なります。適切な用語は、システムの製造元のドキュメントを参照してください。カーネルで Intel VT-d をアクティブにします。
/etc/sysconfig/grubファイル内の GRUB_CMDLINX_LINUX 行の末尾に、引用符で囲んでintel_iommu=onパラメーターおよび iommu=pt パラメーターを追加して、カーネル内で Intel VT-d をアクティブにします。以下は、Intel VT-d を有効にした修正grubです。GRUB_CMDLINE_LINUX="rd.lvm.lv=vg_VolGroup00/LogVol01 vconsole.font=latarcyrheb-sun16 rd.lvm.lv=vg_VolGroup_1/root vconsole.keymap=us $([ -x /usr/sbin/rhcrashkernel-param ] && /usr/sbin/ rhcrashkernel-param || :) rhgb quiet intel_iommu=on"
GRUB_CMDLINE_LINUX="rd.lvm.lv=vg_VolGroup00/LogVol01 vconsole.font=latarcyrheb-sun16 rd.lvm.lv=vg_VolGroup_1/root vconsole.keymap=us $([ -x /usr/sbin/rhcrashkernel-param ] && /usr/sbin/ rhcrashkernel-param || :) rhgb quiet intel_iommu=on"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定ファイルの再生成
以下を実行して /etc/grub2.cfg を再生成します。grub2-mkconfig -o /etc/grub2.cfg
grub2-mkconfig -o /etc/grub2.cfgCopy to Clipboard Copied! Toggle word wrap Toggle overflow UEFI ベースのホストを使用している場合は、ターゲットファイルが/etc/grub2-efi.cfgであることに注意してください。使用準備完了
システムを再起動して、変更を有効にします。これで、システムで PCI デバイスの割り当てが可能になります。
手順9.2 PCI デバイス割り当て用の AMD システムの準備
AMD IOMMU 仕様を有効にする
Red Hat Enterprise Linux で PCI デバイスの割り当てを使用するには、AMD IOMMU の仕様が必要です。この仕様は、BIOS で有効にする必要があります。システムの製造元によっては、この仕様をデフォルトで無効にしている場合があります。IOMMU カーネルサポートの有効化
システムの起動時に AMD IOMMU 仕様が有効になるように、/etc/sysconfig/grubの GRUB_CMDLINX_LINUX 行の末尾に引用符で囲ってamd_iommu=onを追加します。設定ファイルの再生成
以下を実行して /etc/grub2.cfg を再生成します。grub2-mkconfig -o /etc/grub2.cfg
grub2-mkconfig -o /etc/grub2.cfgCopy to Clipboard Copied! Toggle word wrap Toggle overflow UEFI ベースのホストを使用している場合は、ターゲットファイルが/etc/grub2-efi.cfgであることに注意してください。使用準備完了
システムを再起動して、変更を有効にします。これで、システムで PCI デバイスの割り当てが可能になります。
9.1.1. virsh を使用した PCI デバイスの割り当て リンクのコピーリンクがクリップボードにコピーされました!
pci_0000_01_00_0、および完全に仮想化されたゲストマシン guest1-rhel6-64 を持つ PCIe ネットワークコントローラーを使用します。
手順9.3 virsh を使用した PCI デバイスのゲスト仮想マシンへの割り当て
デバイスの識別
まず、仮想マシンへのデバイス割り当てに指定されている PCI デバイスを特定します。使用可能な PCI デバイスの一覧を表示する場合は、lspci コマンドを実行します。grep を使用して、lspci の出力を絞り込むことができます。この例では、以下の出力で強調表示されているイーサネットコントローラーを使用します。lspci | grep Ethernet
# lspci | grep Ethernet 00:19.0 Ethernet controller: Intel Corporation 82567LM-2 Gigabit Network Connection 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)Copy to Clipboard Copied! Toggle word wrap Toggle overflow このイーサネットコントローラーは、短い識別子00:19.0で表示されます。この PCI デバイスを仮想マシンに割り当てるには、virsh が使用する完全な ID を確認する必要があります。これを行うには、virsh nodedev-list コマンドを使用して、ホストマシンに接続されている特定タイプ (pci) のデバイスをすべて一覧表示します。次に、使用するデバイスの短い識別子にマップする文字列の出力を調べます。この例では、短い識別子00:19.0を使用して、イーサネットコントローラーにマップする文字列を示しています。この例では、:と.が、完全な識別子では、文字はアンダースコアに置き換えられます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用するデバイスにマップする PCI デバイス番号を記録します。これは別の手順で必要になります。デバイス情報の確認
ドメイン、バス、および機能の情報は、virsh nodedev-dumpxml コマンドの出力から取得できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記IOMMU グループは、IOMMU からの視認性とデバイスの分離に基づいて決定されます。各 IOMMU グループには、1 つ以上のデバイスを含めることができます。複数のデバイスが存在する場合は、グループ内のすべてのデバイスがゲストに割り当てられるため、IOMMU グループ内のすべてのエンドポイントが要求されます。これは、追加のエンドポイントをゲストに割り当てるか、virsh nodedev-detach を使用してホストドライバーから外すことで実行できます。1 つのグループに含まれるデバイスが複数のゲストに分割されたり、ホストとゲストが分割されたりすることはありません。PCIe root ポート、スイッチポート、ブリッジなどのエンドポイント以外のデバイスは、ホストドライバーから分離しないでください。また、エンドポイントの割り当てに影響を及ぼしません。IOMMU グループ内のデバイスは、virsh nodedev-dumpxml 出力の IOMMU グループセクションを使用して決定できます。グループの各メンバーは、別のアドレスフィールドで提供されます。この情報は、sysfs で以下を使用して取得することもできます。この出力の例を以下に示します。ls /sys/bus/pci/devices/0000:01:00.0/iommu_group/devices/
$ ls /sys/bus/pci/devices/0000:01:00.0/iommu_group/devices/Copy to Clipboard Copied! Toggle word wrap Toggle overflow ゲストに 0000.01.00.0 のみを割り当てるには、ゲストを起動する前に、使用されていないエンドポイントをホストから分離する必要があります。0000:01:00.0 0000:01:00.1
0000:01:00.0 0000:01:00.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow virsh nodedev-detach pci_0000_01_00_1
$ virsh nodedev-detach pci_0000_01_00_1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 必要な設定の詳細を決定する
設定ファイルに必要な値は、virsh nodedev-dumpxml pci_0000_00_19_0 コマンドの出力を参照してください。この例のデバイスは、bus = 0、slot = 25、および function = 0 の値を持ちます。10 進数の設定では、この 3 つの値が使用されます。bus='0' slot='25' function='0'
bus='0' slot='25' function='0'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定の詳細の追加
virsh edit を実行し、仮想マシン名を指定し、<source>セクションにデバイスエントリーを追加して、PCI デバイスをゲスト仮想マシンに割り当てます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow または、virsh attach-device を実行して、仮想マシンの名前とゲストの XML ファイルを指定します。virsh attach-device guest1-rhel6-64 file.xml
virsh attach-device guest1-rhel6-64 file.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 仮想マシンの起動
virsh start guest1-rhel6-64
# virsh start guest1-rhel6-64Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.1.2. virt-manager を使用した PCI デバイスの割り当て リンクのコピーリンクがクリップボードにコピーされました!
手順9.4 virt-manager を使用した PCI デバイスのゲスト仮想マシンへの割り当て
ハードウェア設定を開く
ゲスト仮想マシンを開き、 をクリックして、仮想マシンに新しいデバイスを追加します。図9.1 仮想マシンのハードウェア情報ウィンドウ
PCI デバイスの選択
左側の Hardware 一覧から PCI Host Device を選択します。未使用の PCI デバイスを選択します。別のゲストが使用している PCI デバイスを選択すると、エラーが発生する可能性があります。この例では、予備の 82576 ネットワークデバイスが使用されています。Finish を選択して設定を完了します。図9.2 Add new virtual hardware ウィザード
新しいデバイスの追加
セットアップが完了し、ゲスト仮想マシンが PCI デバイスに直接アクセスできるようになりました。図9.3 仮想マシンのハードウェア情報ウィンドウ
9.1.3. virt-install を使用した PCI デバイスの割り当て リンクのコピーリンクがクリップボードにコピーされました!
--host-device パラメーターを使用します。
手順9.5 virt-install を使用した、仮想マシンへの PCI デバイスの割り当て
デバイスの識別
ゲスト仮想マシンにデバイス割り当てに指定されている PCI デバイスを特定します。lspci | grep Ethernet
# lspci | grep Ethernet 00:19.0 Ethernet controller: Intel Corporation 82567LM-2 Gigabit Network Connection 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)Copy to Clipboard Copied! Toggle word wrap Toggle overflow virsh nodedev-list コマンドは、システムに接続されているすべてのデバイスの一覧を表示し、各 PCI デバイスを文字列で識別します。出力を PCI デバイスのみに制限するには、次のコマンドを実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow PCI デバイス番号を記録します。この番号は他の手順で確認する必要があります。ドメイン、バス、および機能の情報は、virsh nodedev-dumpxml コマンドの出力から取得できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記IOMMU グループに複数のエンドポイントがあり、そのすべてがゲストに割り当てられていない場合は、ゲストを起動する前に次のコマンドを実行して、ホストからその他のエンドポイントの割り当てを手動で解除する必要があります。virsh nodedev-detach pci_0000_00_19_1
$ virsh nodedev-detach pci_0000_00_19_1Copy to Clipboard Copied! Toggle word wrap Toggle overflow IOMMU グループの詳細は、「virsh を使用した PCI デバイスの割り当て」 の 注記 を参照してください。デバイスの追加
virshnodedev コマンドから出力された PCI 識別子を--host-deviceパラメーターの値として使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow インストールを完了する
ゲストのインストールを完了します。PCI デバイスはゲストに接続する必要があります。
9.1.4. 割り当てられた PCI デバイスの取り外し リンクのコピーリンクがクリップボードにコピーされました!
手順9.6 virsh を使用したゲストからの PCI デバイスの切り離し
デバイスの取り外し
次のコマンドを使用して、ゲストの XML ファイルから PCI デバイスを削除し、ゲストから PCI デバイスを切り離します。virsh detach-device name_of_guest file.xml
# virsh detach-device name_of_guest file.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow デバイスをホストに再接続します (オプション)。
デバイスがmanagedモードにある場合は、この手順を省略します。デバイスは自動的にホストに戻ります。デバイスがmanagedモードを使用していない場合は、以下のコマンドを使用して PCI デバイスをホストマシンに再接続します。virsh nodedev-reattach device
# virsh nodedev-reattach deviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、pci_0000_01_00_0デバイスーをホストコンピューターに再接続するには、次のコマンドを実行します。virsh nodedev-reattach pci_0000_01_00_0
virsh nodedev-reattach pci_0000_01_00_0Copy to Clipboard Copied! Toggle word wrap Toggle overflow これで、デバイスがホストで使用できるようになります。
手順9.7 virt-manager を使用したゲストからの PCI デバイスの切り離し
仮想ハードウェアの詳細画面を開きます。
virt-manager で、デバイスを含む仮想マシンをダブルクリックします。Show virtual hardware details ボタンを選択すると、仮想ハードウェアの一覧が表示されます。図9.4 仮想ハードウェアの詳細ボタン
デバイスを選択して削除する
左側のパネルにある仮想デバイスの一覧から、取り外す PCI デバイスを選択します。図9.5 取り外す PCI デバイスの選択
ボタンをクリックして確定します。これで、デバイスがホストで使用できるようになります。
9.1.5. PCI ブリッジの作成 リンクのコピーリンクがクリップボードにコピーされました!
9.1.6. PCI パススルー リンクのコピーリンクがクリップボードにコピーされました!
<source> 要素で指定される PCI ネットワークデバイスは、ジェネリックデバイスパススルーを使用してゲストに直接割り当てられます。このデバイスの MAC アドレスは、最初にオプションで設定された値に設定され、そのデバイスの MAC アドレスがオプションで指定された virtualport 要素を使用して 802.1Qbh 対応スイッチに関連付けられます (<type='direct'> ネットワークデバイスの場合は、上記の仮想ポートの例を参照してください)。標準的なシングルポートの PCI イーサネットカードドライバー設計の制限により、この方法で割り当てることができるのは Single Root I/O Virtualization (SR-IOV) virtual function (VF) デバイスのみとなります。標準的なシングルポートの PCI または PCIe イーサネットカードをゲストに割り当てる場合は、従来の <hostdev> デバイス定義を使用します。
<type='hostdev'> インターフェイスは name 属性を持つオプションのドライバーサブ要素を持つことができます vfio に設定します。従来の KVM デバイス割り当てを使用するには、名前を kvm に設定できます (または、現在、<driver ='kvm'> がデフォルトであるため、単に <driver> 要素を省略します)。
<hostdev> デバイスの機能と非常に似ています。相違点は、パススルーデバイスに MAC アドレスと<virtualport>を指定できることです。これらの機能が必要ない場合、SR-IOV をサポートしない標準のシングルポート PCI、PCIe、または USB ネットワークカードを使用している場合 (したがって、ゲストドメインに割り当てられた後、リセット中に設定された MAC アドレスが失われます)、または 0.9.11 より前のバージョンの libvirt を使用している場合は、<interface type='hostdev'/> の代わりに、標準の <hostdev> を使用してデバイスをゲストに割り当てる必要があります。
図9.6 PCI デバイスの割り当ての XML 例
9.1.7. SR-IOV デバイスを使用した PCI 割り当て (パススルー) の設定 リンクのコピーリンクがクリップボードにコピーされました!
<hostdev> 要素を使用して割り当てることができますが、SR-IOV VF ネットワークデバイスには永続的な一意の MAC アドレスがないため、ホストの物理マシンを再起動するたびにゲスト仮想マシンのネットワーク設定を再設定する必要があります。これを解決するには、VF をホスト物理マシンに割り当てる前に MAC アドレスを設定する必要があり、ゲスト仮想マシンが起動するたびにこれを設定する必要があります。この MAC アドレスやその他のオプションを割り当てるには、手順9.8「SR-IOV で PCI デバイスを割り当てる MAC アドレス、vLAN、および仮想ポートの設定」の手順を参照してください。
手順9.8 SR-IOV で PCI デバイスを割り当てる MAC アドレス、vLAN、および仮想ポートの設定
<mac>、<vlan>、および <virtualport> 要素は <hostdev> の有効な子ではないため、<hostdev> 要素は MAC アドレス割り当て、vLAN タグ ID 割り当て、仮想ポート割り当てなどの機能固有の項目には使用できないことに注意してください。これらは <インターフェイス> で有効であるため、新しいインターフェイスタイプのサポートが追加されました (<interface type='hostdev'>)。この新しいインターフェイスデバイスタイプは、<インターフェイス> と <hostdev> のハイブリッドとして動作します。そのため、libvirt は、ゲスト仮想マシンに PCI デバイスを割り当てる前に、ゲスト仮想マシンの XML 設定ファイルに示されているネットワーク固有のハードウェア/スイッチを初期化します (MAC アドレスの設定、vLAN タグの設定、802.1Qbh スイッチへの関連付けなど)。vLAN タグの設定に関する詳細は、「vLAN タグの設定」 を参照してください。
ゲスト仮想マシンをシャットダウンします。
virsh shutdown コマンドの使用 (「ゲスト仮想マシンのシャットダウン」 を参照)、guestVM という名前のゲスト仮想マシンをシャットダウンします。virsh shutdown guestVM
# virsh shutdown guestVMCopy to Clipboard Copied! Toggle word wrap Toggle overflow 情報の収集
<interface type='hostdev'>を使用するには、SR-IOV 対応のネットワークカード、Intel VT-d 拡張機能または AMD IOMMU 拡張機能に対応するホストの物理マシンハードウェアが必要で、割り当てる VF の PCI アドレスを把握している必要があります。編集する XML ファイルを開く
# virsh save-image-edit コマンドを実行し、XML ファイルを編集用に開きます (詳細は 「ドメイン XML 設定ファイルの編集」 を参照してください)。ゲスト仮想マシンを以前の実行状態に復元する必要があるため、この場合は--runningが使用されます。この例の設定ファイルの名前は guestVM.xml です。ゲスト仮想マシンの名前は guestVM です。virsh save-image-edit guestVM.xml --running
# virsh save-image-edit guestVM.xml --runningCopy to Clipboard Copied! Toggle word wrap Toggle overflow guestVM.xmlがデフォルトのエディターで開きます。XML ファイルの編集
設定ファイル (guestVM.xml) を更新して、以下のような<devices>エントリーが表示されるようにします。図9.7 hostdev インターフェイスタイプのサンプルドメイン XML
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MAC アドレスを指定しないと、その他のタイプのインターフェイスデバイスと同様に、MAC アドレスが自動的に生成されることに注意してください。また、<virtualport>要素は、802.11Qgh ハードウェアスイッチ(802.11Qbg)に接続する場合にのみ使用されます。"VEPA")スイッチは現在サポートされていません。ゲスト仮想マシンの再起動
virsh start コマンドを実行して、最初の手順でシャットダウンしたゲスト仮想マシンを再起動します (例では、ゲスト仮想マシンのドメイン名として guestVM を使用します)。詳細は、「定義済みドメインの開始」 を参照してください。virsh start guestVM
# virsh start guestVMCopy to Clipboard Copied! Toggle word wrap Toggle overflow ゲスト仮想マシンは起動時に、設定された MAC アドレスを持つ、物理ホストマシンのアダプターにより提供されたネットワークデバイスを認識します。この MAC アドレスは、ゲスト仮想マシンやホストの物理マシンを再起動しても変更されません。
9.1.8. SR-IOV 仮想機能のプールからの PCI デバイス割り当ての設定 リンクのコピーリンクがクリップボードにコピーされました!
- 指定の VF は、ゲスト仮想マシンが起動したときにいつでも利用できる必要があります。つまり、管理者は、各 VF を 1 つのゲスト仮想マシンに永続的に割り当てる必要があります (または、各ゲスト仮想マシンの設定ファイルを変更して、ゲスト仮想マシンが起動するたびに現在使用されていない VF の PCI アドレスを指定します)。
- ゲスト仮想マシンを別のホスト物理マシンに移動する場合は、そのホスト物理マシンのハードウェアが PCI バス上の同じ場所にある必要があります (または、ゲスト仮想マシンの設定を起動前に変更する必要があります)。
手順9.9 デバイスプールの作成
ゲスト仮想マシンをシャットダウンします。
virsh shutdown コマンドの使用 (「ゲスト仮想マシンのシャットダウン、再起動、および強制シャットダウン」 を参照)、guestVM という名前のゲスト仮想マシンをシャットダウンします。virsh shutdown guestVM
# virsh shutdown guestVMCopy to Clipboard Copied! Toggle word wrap Toggle overflow 設定ファイルの作成
任意のエディターを使用して、/tmpディレクトリーに XML ファイル (名前は passthrough.xml など) を作成します。pf dev='eth3'を、ご使用の SR-IOV デバイスの PF の netdev 名に置き換えてください。以下は、ホスト物理マシンの "eth3' にある physical function (PF) を持つ SR-IOV アダプターのすべての VF のプールを使用できるようにするネットワーク定義の例です。図9.8 サンプルのネットワーク定義ドメイン XML
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい XML ファイルの読み込み
/tmp/passthrough.xml を、前の手順で作成した XML ファイルの名前と場所に置き換え、次のコマンドを実行します。virsh net-define /tmp/passthrough.xml
# virsh net-define /tmp/passthrough.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ゲストの再起動
以下の passthrough.xml を、前の手順で作成した XML ファイルの名前に置き換えます。virsh net-autostart passthrough # virsh net-start passthrough
# virsh net-autostart passthrough # virsh net-start passthroughCopy to Clipboard Copied! Toggle word wrap Toggle overflow ゲスト仮想マシンの再起動
virsh start コマンドを実行して、最初の手順でシャットダウンしたゲスト仮想マシンを再起動します (例では、ゲスト仮想マシンのドメイン名として guestVM を使用します)。詳細は、「定義済みドメインの開始」 を参照してください。virsh start guestVM
# virsh start guestVMCopy to Clipboard Copied! Toggle word wrap Toggle overflow デバイスのパススルーの開始
表示されているデバイスは 1 つだけですが、libvirt は、ゲスト仮想マシンが次のようなドメイン XML のインターフェイス定義で初めて起動されたときに、その PF に関連付けられているすべての VF のリストを自動的に取得します。図9.9 インターフェイスネットワーク定義のサンプルドメイン XML
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 検証
ネットワークを使用する最初のゲストを起動したら、virsh net-dumpxml passthrough コマンドを実行し、これを確認できます。以下のような出力が得られます。図9.10 XML ダンプファイルのpassthroughコンテンツ
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.2. USB デバイス リンクのコピーリンクがクリップボードにコピーされました!
9.2.1. ゲスト仮想マシンへの USB デバイスの割り当て リンクのコピーリンクがクリップボードにコピーされました!
- USB パススルーを使用する - これにより、デバイスが、ゲスト仮想マシンをホストしているホストの物理マシンに物理的に接続されます。この場合は SPICE は必要ありません。ホストの USB デバイスは、コマンドラインまたは virt-manager を使用してゲストに渡すことができます。virt manager の方向については、「ゲスト仮想マシンへの USB デバイスの接続」 を参照してください。注記virt-manager は、ホットプラグまたはホットアンプラグデバイスに使用しないでください。USB デバイスをホットプラグまたはホットアンプラグする場合は、手順14.1「ゲスト仮想マシンが使用するホットプラグ USB デバイス」 を参照してください。
- USB リダイレクトの使用 - USB リダイレクトは、データセンターで実行されているホスト物理マシンがある場合に最適です。ユーザーは、ローカルマシンまたはシンクライアントからゲスト仮想マシンに接続します。このローカルマシンには SPICE クライアントがあります。ユーザーは、任意の USB デバイスをシンクライアントに接続できます。SPICE クライアントは、デバイスをデータセンターのホスト物理マシンにリダイレクトするため、シンクライアントで実行しているゲスト仮想マシンで使用できます。virt-manager を使用した USB リダイレクトの手順については、「ゲスト仮想マシンへの USB デバイスの接続」 を参照してください。TCP プロトコルを使用した USB リダイレクトはできないことに注意してください (BZ#1085318 を参照)。
9.2.2. USB デバイスリダイレクトの制限の設定 リンクのコピーリンクがクリップボードにコピーされました!
-device usb-redir に渡します。filter プロパティーは、フィルタールールで設定される文字列を取ります。ルールの形式は以下のとおりです。
<class>:<vendor>:<product>:<version>:<allow>
<class>:<vendor>:<product>:<version>:<allow>
-1 の値を使用して、特定のフィールドに任意の値を受け入れるように指定します。同じコマンドラインで、| を区切り文字として使用し、複数のルールを使用できます。
例9.1 Windows ゲスト仮想マシンを使用したリダイレクトを制限する例
- Windows 7 ゲスト仮想マシンを準備します。
- 以下のコード抜粋をゲスト仮想マシンのドメイン xml ファイルに追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ゲスト仮想マシンを起動し、次のコマンドを実行して設定の変更を確認します。
#ps -ef | grep $guest_name
#ps -ef | grep $guest_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow -device usb-redir,chardev=charredir0,id=redir0,/ filter=0x08:0x1234:0xBEEF:0x0200:1|-1:-1:-1:-1:0,bus=usb.0,port=3
-device usb-redir,chardev=charredir0,id=redir0,/ filter=0x08:0x1234:0xBEEF:0x0200:1|-1:-1:-1:-1:0,bus=usb.0,port=3Copy to Clipboard Copied! Toggle word wrap Toggle overflow - USB デバイスをホストの物理マシンに接続し、virt-manager を使用してゲスト仮想マシンに接続します。
- メニューで をクリックすると、Some USB devices are blocked by host policy というメッセージが表示されます。 をクリックして確定し、続行します。フィルターが有効になります。
- フィルターが正しくキャプチャーされていることを確認するには、USB デバイスのベンダーと製品を確認してから、USB リダイレクトを可能にするために、テストの仮想マシンのドメイン XML で次の変更を行います。
<redirfilter> <usbdev class='0x08' vendor='0x0951' product='0x1625' version='2.0' allow='yes'/> <usbdev allow='no'/> </redirfilter><redirfilter> <usbdev class='0x08' vendor='0x0951' product='0x1625' version='2.0' allow='yes'/> <usbdev allow='no'/> </redirfilter>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ゲスト仮想マシンを再起動してから、virt-viewer を使用してゲスト仮想マシンに接続します。これで、USB デバイスはトラフィックをゲスト仮想マシンにリダイレクトするようになります。
9.3. デバイスコントローラーの設定 リンクのコピーリンクがクリップボードにコピーされました!
図9.11 仮想コントローラーのドメイン XML の例
<controller type> があり、これは次のいずれかになります。
- ide
- fdc
- scsi
- sata
- usb
- ccid
- virtio-serial
- pci
<controller> 要素には必須の属性 <controller index> があります。これは、バスコントローラーが発生した順序を表す 10 進数の整数です (<address> 要素のコントローラー属性で使用されます)。<controller type ='virtio-serial'> には、追加のオプション属性 (ports および vectors) が 2 つあります。これは、コントローラーを介して接続できるデバイスの数を制御します。Red Hat Enterprise Linux 6 は、デバイスあたり 32 を超えるベクターの使用をサポートしていないことに注意してください。よりベクトルを使用すると、ゲスト仮想マシンの移行でエラーが発生します。
<controller type ='scsi'> の場合、以下の値を持つことができる任意の属性model モデルがあります。
- auto
- buslogic
- ibmvscsi
- lsilogic
- lsisas1068
- lsisas1078
- virtio-scsi
- vmpvscsi
<controller type ='usb'> の場合、以下の値を持つことができる任意の属性model モデルがあります。
- piix3-uhci
- piix4-uhci
- ehci
- ich9-ehci1
- ich9-uhci1
- ich9-uhci2
- ich9-uhci3
- vt82c686b-uhci
- pci-ohci
- nec-xhci
<model='none'> を使用できます。 .
<address> は、「デバイスのアドレスの設定」 に示したセマンティクスを使用して、コントローラーとマスターバスの正確な関係を指定できます。
<driver> は、ドライバー固有のオプションを指定できます。現在、コントローラーのキューの数を指定する属性キューのみをサポートしています。パフォーマンスを最適化するには、vCPU の数に一致する値を指定することが推奨されます。
<master> があります。コンパニオンコントローラーはマスターと同じバスにあるため、コンパニオン index は等しい値になります。
図9.12 USB コントローラーのドメイン XML の例
model 属性があります。
- pci-root
- pcie-root
- pci-bridge
- dmi-to-pci-bridge
pci-root および pcie-root) には、64 ビット PCI ホールの大きさ (キロバイト単位、または pcihole64 の unit 属性で指定された単位) を指定するオプションの pcihole64 要素があります。一部のゲスト仮想マシン (Windows Server 2003) は、unit が無効になっていない限り (0 unit='0' に設定)、クラッシュを引き起こす可能性があります。
index='0' を使用する pci-root コントローラーは自動追加され、PCI デバイスを使用する必要があります。pci-root にはアドレスがありません。PCI ブリッジは、model='pci-root' が提供する 1 つのバスに収まらないデバイスが多すぎる場合、または 0 を超える PCI バス番号が指定されている場合に自動追加されます。PCI ブリッジは手動で指定することもできますが、そのアドレスには、指定されている PCI コントローラーが提供する PCI バスのみが表示されるようにしてください。PCI コントローラーインデックスにギャップがあると、設定が無効になる場合があります。以下の XML サンプルは、<devices> セクションに追加できます。
図9.13 PCI ブリッジのドメイン XML の例
index='0' を使用する pcie-root コントローラーはドメインの設定に自動的に追加されます。pcie-root にはアドレスはありませんが、31 スロット (1-31 の番号) を提供し、PCIe デバイスの接続にのみ使用できます。pcie-root コントローラーを持つシステムで標準的な PCI デバイスを接続するには、model='dmi-to-pci-bridge' を持つ pci コントローラーが自動的に追加されます。dmi-to-pci-bridge コントローラーは、(pcie-root が提供するように) PCIe スロットに接続し、それ自体で 31 個の標準的な PCI スロットを提供します (これはホットプラグできません)。ゲストシステムにホットプラグ可能な PCI スロットを確保するために、pci-bridge コントローラーも自動的に作成され、自動作成された dmi-to-pci-bridge コントローラーのスロットの 1 つに接続されます。PCI アドレスが libvirt により自動決定されるすべてのゲストデバイスは、この pci-bridge デバイスに配置されます。
図9.14 PCIe (PCI express) のようなドメイン XML
9.4. デバイスのアドレスの設定 リンクのコピーリンクがクリップボードにコピーされました!
<address> サブ要素があります。入力でアドレス (またはアドレス内の任意の属性) が省略された場合 libvirt は適切なアドレスを生成します。レイアウトをさらに制御する必要がある場合は明示的なアドレスが必要になります。<address> 要素を含むドメイン XML デバイスの例は、図9.6「PCI デバイスの割り当ての XML 例」 を参照してください。
type があります。特定のデバイスに使用するアドレスの選択は、デバイスやゲスト仮想マシンのアーキテクチャーによって一部が制約されます。たとえば、<disk> デバイスは type='drive' を使用し、<console> デバイスは i686 または x86_64 ゲスト仮想マシンアーキテクチャー で type='pci' を使用します。各アドレスタイプには、表に記載されているように、バス上のどこにデバイスを配置するかを制御するオプションの属性がさらにあります。
| アドレスの種類 | 説明 |
|---|---|
| type='pci' | PCI アドレスには、以下の追加属性があります。
|
| type='drive' | ドライブアドレスには、以下の追加属性があります。
|
| type='virtio-serial' | 各 virtio-serial アドレスには、以下の追加属性があります。
|
| type='ccid' | スマートカード用の CCID アドレスには、以下の追加属性があります。
|
| type='usb' | USB アドレスには、以下の追加属性があります。
|
| type='isa' | ISA アドレスには、以下の追加属性があります。
|
9.5. ゲスト仮想マシンでのストレージコントローラーの管理 リンクのコピーリンクがクリップボードにコピーされました!
- virtio-scsi コントローラーを介して仮想ハードドライブまたは CD を接続します。
- QEMU scsi-block デバイスを介してホストからゲストに物理 SCSI デバイスをパススルーします。
- ゲストごとに数百台のデバイスを使用できるようにします。virtio-blk の 28 デバイスの制限からの改善。
手順9.10 仮想 SCSI コントローラーの作成
- ゲスト仮想マシン (
Guest1) の設定を表示し、以前から存在している SCSI コントローラーを検索します。virsh dumpxml Guest1 | grep controller.*scsi
# virsh dumpxml Guest1 | grep controller.*scsiCopy to Clipboard Copied! Toggle word wrap Toggle overflow デバイスコントローラーが存在する場合は、このコマンドにより、次のような行が 1 つ以上出力されます。<controller type='scsi' model='virtio-scsi' index='0'/>
<controller type='scsi' model='virtio-scsi' index='0'/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 前の手順でデバイスコントローラーが表示されなかった場合は、以下の手順に従って、新しいファイルにデバイスコントローラーの説明を作成し、仮想マシンに追加します。
- 新しいファイルに
<controller>要素を書き込んでデバイスコントローラーを作成し、このファイルに XML 拡張子で保存します。virtio-scsi-controller.xmlなど。<controller type='scsi' model='virtio-scsi'/>
<controller type='scsi' model='virtio-scsi'/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow virtio-scsi-controller.xmlで作成したデバイスコントローラーをゲスト仮想マシン (例: Guest1) に関連付けます。virsh attach-device --config Guest1 ~/virtio-scsi-controller.xml
# virsh attach-device --config Guest1 ~/virtio-scsi-controller.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、--configオプションはディスクと同じように動作します。詳細は、手順13.2「ゲストへの物理ブロックデバイスの追加」 を参照してください。
- 新しい SCSI ディスクまたは CD-ROM を追加します。新しいディスクは、「 ゲストへのファイルベースストレージの追加」 セクションおよび 「ゲストへのハードドライブおよびその他のブロックデバイスの追加」 セクションの方法を使用して追加できます。SCSI ディスクを作成する場合は、sd で始まるターゲットデバイス名を指定します。
virsh attach-disk Guest1 /var/lib/libvirt/images/FileName.img sdb --cache none
# virsh attach-disk Guest1 /var/lib/libvirt/images/FileName.img sdb --cache noneCopy to Clipboard Copied! Toggle word wrap Toggle overflow ゲスト仮想マシンのドライバーのバージョンによっては、実行中のゲスト仮想マシンで新しいディスクがすぐに検出されない場合があります。『Red Hat Enterprise Linux Storage Administration Guide』 の手順に従います。
9.6. 乱数ジェネレーター (RNG) デバイス リンクのコピーリンクがクリップボードにコピーされました!
virtio-rng は、仮想 RNG (random number generator) デバイスであり、RNG データをゲスト仮想マシンのオペレーティングシステムにフィードします。これにより、要求に応じてゲスト仮想マシンに新しいエントロピーを提供します。
virtio-rng が有効になっている場合、chardev はゲスト仮想マシンの /dev/hwrng/ の場所に作成されます。次に、この文字 dev を開いて読み取り、ホストの物理マシンからエントロピーをフェッチできます。ゲスト仮想マシンのアプリケーションが virtio-rng デバイスからのランダム性を透過的に使用することで利益を得るには、/dev/hwrng/ からの入力をゲスト仮想マシンのカーネルエントロピープールに中継する必要があります。これは、この場所の情報が rgnd デーモン (rng-tools 内に含まれている) と結合されている場合に実行できます。
/dev/random ファイルにルーティングされます。このプロセスは、Red Hat Enterprise Linux 6 ゲスト仮想マシンで手動で行います。
rngd -b -r /dev/hwrng/ -o /dev/random/
# rngd -b -r /dev/hwrng/ -o /dev/random/
viorng をインストールする必要があります。インストールが完了すると、仮想 RNG デバイスは Microsoft が提供する CNG(手動生成)API を使用して機能します。ドライバーがインストールされると、virtrng デバイスが RNG プロバイダーのリストに表示されます。
手順9.11 コマンドラインツールでの virtio-rng の実装
- ゲスト仮想マシンをシャットダウンします。
- ターミナルウィンドウで、virsh edit domain-name コマンドを使用して、目的のゲスト仮想マシンの XML ファイルを開きます。
<devices>要素を編集して、以下の内容を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第10章 qemu-img および QEMU ゲストエージェント リンクのコピーリンクがクリップボードにコピーされました!
/usr/share/doc/qemu-*/README.systemtap。
10.1. qemu-img の使用 リンクのコピーリンクがクリップボードにコピーされました!
チェック
ディスクイメージの filename で整合性チェックを実行します。
qemu-img check -f qcow2 --output=qcow2 -r all filename-img.qcow2
# qemu-img check -f qcow2 --output=qcow2 -r all filename-img.qcow2
qcow2 および vdi 形式のみが整合性チェックに対応します。
-r を使用すると、チェック中に見つかった不整合を修復しようとしますが、-r leaks クラスターのリークで使用されると修復され、-r all ですべての種類のエラーが修正されます。これには、間違った修正を選択したり、すでに発生している可能性のある破損の問題を隠したりするリスクがあることに注意してください。
Commit
指定したイメージファイル (filename) に記録された変更を、qemu-img commit コマンドでファイルのベースイメージにコミットします。オプションで、ファイルのフォーマットタイプ (format) を指定します。
qemu-img commit [-f format] [-t cache] filename
# qemu-img commit [-f format] [-t cache] filename
convert
convert オプションは、認識されているイメージ形式を別のイメージ形式に変換するために使用されます。
qemu-img convert [-c] [-p] [-f format] [-t cache] [-O output_format] [-o options] [-S sparse_size] filename output_filename
# qemu-img convert [-c] [-p] [-f format] [-t cache] [-O output_format] [-o options] [-S sparse_size] filename output_filename
-p パラメーターはコマンドの進捗を示し (すべてのコマンドではなく任意)、-S フラグは、ディスクイメージに含まれる sparse file の作成を許可します。ゼロのみを含む (何も含まない) 物理ブロックを除いて、あらゆる目的のスパースファイルは標準ファイルのように機能します。オペレーティングシステムがこのファイルを認識すると、たとえ実際にはディスクを使用していなくても、存在しているものとして扱われ、実際のディスク領域を消費します。ゲスト仮想マシン用のディスクを作成する場合に特に役立ちます。これにより、ディスクに必要なディスク領域よりもはるかに多くのディスク領域が使用されるようになります。たとえば、10Gb のディスクイメージで -S を 50Gb に設定すると、実際には 10Gb しか使用されていなくても、そのディスク領域の 10Gb は 60Gb に見えます。
filename 形式を使用して、ディスクイメージ output_filename をディスクイメージ output_format に変換します。ディスクイメージは、-c オプションで圧縮するか、-o encryption を設定して -o オプションで暗号化できます。-o パラメーターで使用できるオプションは、選択した形式とは異なることに注意してください。
qcow2 形式のみが暗号化または圧縮をサポートします。qcow2 暗号化は、安全な 128 ビット鍵で AES 形式を使用します。qcow2 圧縮は読み取り専用であるため、圧縮したセクターが qcow2 形式から変換されると、非圧縮データとして新しい形式に書き込まれます。
Create
サイズsize、フォーマットformat、新しいディスクイメージの ファイル名を作成します。
qemu-img create [-f format] [-o options] filename [size][preallocation]
# qemu-img create [-f format] [-o options] filename [size][preallocation]
-o backing_file=filename で指定されている場合は、イメージ自体とベースイメージの違いのみが記録されます。バッキングファイルは、commit コマンドを使用しない限り変更されません。この場合、サイズの指定は必要ありません。
-o preallocation=off|meta|full|falloc が含まれます。事前に割り当てられたメタデータを持つイメージは、イメージよりも大きくなります。ただし、イメージサイズが大きくなると、イメージのサイズが大きくなるとパフォーマンスが向上します。
full 割り当ての使用には、イメージのサイズが大きい場合に時間がかかる可能性があることに注意してください。完全な割り当てと時間が経つ必要がある場合、フラックを使用 falloc 時間を節約できます。
Info
info パラメーターは、ディスクイメージのfilenameに関する情報を表示します。info オプションの形式は、以下のとおりです。
qemu-img info [-f format] filename
# qemu-img info [-f format] filename
qcow2 イメージが使用している領域を表示します。これは、qemu-img を実行して行います。使用中のイメージが、qemu-img check コマンドで qemu-img info コマンドの出力と一致するイメージであることを確認できます。「qemu-img の使用」 を参照してください。
マップ
# qemu-img map [-f format] [--output=output_format] filename コマンドは、イメージファイル名のメタデータとそのバッキングファイルチェーンをダンプします。具体的には、このコマンドは、指定されたファイルのすべてのセクターの割り当て状態を、それをバッキングファイルチェーンに割り当てる最上位のファイルとともにダンプします。たとえば、c.qcow2 → b.qcow2 → a.qcow2 などのチェーンがある場合、a.qcow2 が元のファイルである場合、b.qcow2 は a.qcow2 に加えられた変更で、c.qcow2 は b.qcow2 のデルタファイルになります。このチェーンが作成されると、イメージファイルは通常のイメージデータを保存し、どのファイルの場所とそれがファイルに保存されるかに関する情報も保存されます。この情報は、イメージのメタデータと呼ばれます。-f フォーマットオプションは、指定されたイメージファイルのフォーマットです。raw、qcow2、vhdx、vmdk などの形式を使用できます。可能な出力オプションには、human と json の 2 つがあります。
humanがデフォルト設定です。人間の目に読みやすくなるように設計されているため、この形式は解析しないでください。明確さと単純さのために、デフォルトのhumanフォーマットは、ファイルの既知のゼロ以外の領域のみをダンプします。ファイルの既知のゼロの部分は完全に省略され、同様にチェーン全体に割り当てられていない部分も省略されます。コマンドが実行されると、qemu-img 出力は、データを読み取ることができるファイルと、ファイル内のオフセットを識別します。出力は、4 列のテーブルとして表示されます。最初の 3 つは 16 進数です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow json、つまり JSON (JavaScript Object Notation) は、人間が読むこともできますが、プログラミング言語であるため、解析することも前提に設計されています。たとえば、パーサーで qemu-img map の出力を解析する場合は、オプション--output=jsonを使用する必要があります。qemu-img map -f qcow2 --output=json /tmp/test.qcow2
# qemu-img map -f qcow2 --output=json /tmp/test.qcow2 [{ "start": 0, "length": 131072, "depth": 0, "zero": false, "data": true, "offset": 327680}, { "start": 131072, "length": 917504, "depth": 0, "zero": true, "data": false},Copy to Clipboard Copied! Toggle word wrap Toggle overflow JSON 形式の詳細については、qemu-img (1) の man ページを参照してください。
リベース
イメージのバッキングファイルを変更します。
qemu-img rebase [-f format] [-t cache] [-p] [-u] -b backing_file [-F backing_format] filename
# qemu-img rebase [-f format] [-t cache] [-p] [-u] -b backing_file [-F backing_format] filename
qcow2 形式のみです。
サイズの変更
サイズ sizeで作成されたかのように、ディスクイメージのfilenameを変更します。バージョンに関係なく、サイズ変更できるのは raw 形式のイメージのみです。Red Hat Enterprise Linux 6.1 以降では、qcow2 フォーマットでイメージを拡大 (縮小はしない) する機能が追加されています。
qemu-img resize filename size
# qemu-img resize filename size
+ を付けて拡大するか、- を付けてディスクイメージのサイズをそのバイト数だけ縮小します。ユニットの接尾辞を追加すると、イメージのサイズをキロバイト (K)、メガバイト (M)、ギガバイト (G)、またはテラバイト (T) で設定できます。
qemu-img resize filename [+|-]size[K|M|G|T]
# qemu-img resize filename [+|-]size[K|M|G|T]
スナップショット
イメージ (ファイル名) の既存のスナップショット (スナップショット) を一覧表示、適用、作成、または削除します。
qemu-img snapshot [ -l | -a snapshot | -c snapshot | -d snapshot ] filename
# qemu-img snapshot [ -l | -a snapshot | -c snapshot | -d snapshot ] filename
サポート対象の形式
qemu-img は、ファイルを次のいずれかのフォーマットに変換するように設計されています。
-
raw - Raw ディスクイメージ形式 (デフォルト)これは、ファイルベースで最も高速な形式になります。ファイルシステムがホールをサポートしている場合 (たとえば、Linux の ext2 または ext3、Windows の NTFS)、書き込まれたセクターのみがスペースを予約します。qemu-img info を使用して、イメージが使用する実際のサイズを取得するか、Unix/Linux の ls -ls を取得します。Raw イメージは最適なパフォーマンスを提供しますが、Raw イメージで使用できるのは非常に基本的な機能のみです (たとえば、スナップショットは使用できません)。
-
qcow2 - QEMU イメージ形式。最も汎用性が高く、機能セットが最適な形式です。これを使用して、オプションの AES 暗号化、zlib ベースの圧縮、複数の VM スナップショットのサポート、およびホールをサポートしないファイルシステム (Windows 上の非 NTFS ファイルシステム) で役立つ小さなイメージを使用します。この拡張機能セットはパフォーマンスに影響を与えることに注意してください。
raw、または qcow2 形式に変換するために、以下の形式も認識してサポートします。イメージの形式は、通常、自動的に検出されます。この形式を raw または qcow2 に変換することに加えて、raw または qcow2 から元の形式に戻すことができます。
- bochs
- Bochs ディスクイメージ形式。
- cloop
- Linux Compressed Loop イメージ。Knoppix CD-ROM などにある直接圧縮 CD-ROM イメージを再利用する場合にのみ役立ちます。
- cow
- User Mode Linux Copy On Write イメージ形式。cow 形式は、以前のバージョンとの互換性のためにのみ同梱されています。Windows では動作しません。
- dmg
- Mac ディスクイメージフォーマット。
- nbd
- ネットワークブロックデバイス。
- parallels
- Parallels 仮想化ディスクイメージフォーマット。
- qcow
- 古い QEMU イメージフォーマット。古いバージョンとの互換性にのみ含まれます。
- vdi
- Oracle VM VirtualBox ハードディスクイメージ形式。
- vmdk
- VMware 互換のイメージフォーマット (バージョン 1 および 2 の読み取り/書き込みサポート、およびバージョン 3 の読み取り専用サポート)。
- vpc
- WindowsVirtualPC のディスクイメージフォーマット。
vhd、または Microsoft 仮想ハードディスクイメージフォーマットとも呼ばれます。 - vvfat
- 仮想 VFAT ディスクイメージフォーマット。
10.2. QEMU ゲストエージェント リンクのコピーリンクがクリップボードにコピーされました!
10.2.1. ゲストエージェントをインストールして有効にする リンクのコピーリンクがクリップボードにコピーされました!
10.2.2. ゲストエージェントとホスト間の通信の設定 リンクのコピーリンクがクリップボードにコピーされました!
手順10.1 ゲストエージェントとホスト間の通信の設定
ゲスト XML を開きます
QEMU ゲストエージェント設定でゲスト XML を開きます。ファイルを開くにはゲスト名が必要です。ホストマシンでコマンド #virsh list を使用して、認識できるゲストを一覧表示します。この例では、ゲストの名前は rhel6 です。virsh edit rhel6
# virsh edit rhel6Copy to Clipboard Copied! Toggle word wrap Toggle overflow ゲスト XML ファイルを編集します
次の要素を XML ファイルに追加し、変更を保存します。図10.1 ゲスト XML を編集して QEMU ゲストエージェントを設定する
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ゲストでの QEMU ゲストエージェントの起動
まだ行っていない場合は、yum install qemu-guest-agent を使用してゲスト仮想マシンにゲストエージェントをダウンロードしてインストールします。インストールしたら、次のようにサービスを開始します。service start qemu-guest-agent
# service start qemu-guest-agentCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.3. QEMU ゲストエージェントの使用 リンクのコピーリンクがクリップボードにコピーされました!
- qemu-guest-agentは、クライアントがチャネルに接続したかどうかを検出することはできません。
- クライアントが、qemu-guest-agent がバックエンドに切断または再接続したかどうかを検出する方法はありません。
- virtio-serial デバイスがリセットされ、qemu-guest-agentチャネルに接続されていない場合 (通常、再起動またはホットプラグが原因)、クライアントからのデータはドロップされます。
- virtio-serial デバイスのリセット後に qemu-guest-agent がチャネルに接続した場合、qemu-guest-agent がまだ実行中か接続中かにかかわらず、クライアントからのデータはキューに入れられます (そして利用可能なバッファーを使い切ると最終的にスロットルに入れられます)。
10.2.4. libvirt での QEMU ゲストエージェントの使用 リンクのコピーリンクがクリップボードにコピーされました!
- virsh shutdown --mode=agent - このシャットダウン方法は、virsh shutdown --mode=acpi よりも信頼性が高くなります。QEMU ゲストエージェントで使用する virsh shutdown は、クリーンな状態で協調ゲストをシャットダウンすることが保証されます。エージェントが存在しない場合、libvirt は代わりに ACPI シャットダウンイベントの挿入に依存する必要がありますが、一部のゲストはそのイベントを無視するため、シャットダウンしません。virsh reboot と同じ構文で使用できます。
- virsh snapshot-create --quiesce - スナップショットが作成される前に、ゲストが I / O を安定した状態にフラッシュできるようにします。これにより、fsck を実行したり、データベーストランザクションの一部を失うことなくスナップショットを使用できます。ゲストエージェントは、ゲストの相互作用を提供することで、高レベルのディスクコンテンツの安定性を実現します。
- virsh setvcpus --guest - CPU をオフラインにするようにゲストに指示します。
- virsh dompmsuspend - ゲストオペレーティングシステムの電源管理機能を使用して、実行中のゲストを優雅に一時停止します。
10.2.5. ゲスト仮想マシンのディスクバックアップの作成 リンクのコピーリンクがクリップボードにコピーされました!
- ファイルシステムアプリケーション/データベースは、作業バッファーを仮想ディスクにフラッシュし、クライアント接続の受け入れを停止します。
- アプリケーションがデータファイルを一貫した状態にします。
- メインフックスクリプトが返されます。
- qemu-ga ファイルシステムをフリーズし、管理スタックがスナップショットを取得します
- スナップショットが確認されました。
- ファイルシステムの機能が再開します。
/etc/qemu-ga/fsfreeze-hook.d/ というラベルが付いた表の行の 表10.1「QEMU ゲストエージェントパッケージの内容」 に一覧表示されている restorecon -FvvR コマンドを実行した後、ファイルシステムノードへのアクセスがすぐに機能するようになります。
| File name | 説明 |
|---|---|
/etc/rc.d/init.d/qemu-ga | QEMU ゲストエージェントのサービス制御スクリプト (start/stop) |
/etc/sysconfig/qemu-ga | /etc/rc.d/init.d/qemu-ga 制御スクリプトによって読み取られる QEMU ゲストエージェントの設定ファイル。設定は、シェルスクリプトのコメントが記載されたファイルで説明されています。 |
/usr/bin/qemu-ga | QEMU ゲストエージェントのバイナリーファイル。 |
/usr/libexec/qemu-ga/ | フックスクリプトのルートディレクトリー。 |
/usr/libexec/qemu-ga/fsfreeze-hook | メインフックスクリプト。ここでは変更は必要ありません。 |
/usr/libexec/qemu-ga/fsfreeze-hook.d/ | 個々のアプリケーション固有のフックスクリプトのディレクトリー。ゲストシステム管理者は、フックスクリプトを手動でこのディレクトリーにコピーし、適切なファイルモードビットを確認してから、このディレクトリーで restorecon -FvvR を実行する必要があります。 |
/usr/share/qemu-kvm/qemu-ga/ | サンプルスクリプトを含むディレクトリー (サンプル目的のみ)ここに含まれるスクリプトは実行されません。 |
/usr/libexec/qemu-ga/fsfreeze-hook は、独自のメッセージと、アプリケーション固有のスクリプトの標準出力およびエラーメッセージを、ログファイル /var/log/qemu-ga/fsfreeze-hook.log に記録します。詳細は、wiki.qemu.org または libvirt.org にあるqemu-guest-agentwiki ページを参照してください。
10.3. Windows ゲストでの QEMU ゲストエージェントの実行 リンクのコピーリンクがクリップボードにコピーされました!
- Windows XP Service Pack 3 (VSS はサポートされていません)
- Windows Server 2003 R2 - x86 および AMD64 (VSS はサポートされていません)
- Windows Server 2008
- Windows Server 2008 R2
- Windows7 - x86 および AMD64
- Windows Server 2012
- Windows Server 2012 R2
- Windows8 - x86 および AMD64
- Windows8.1 - x86 および AMD64
手順10.2 Windows ゲストでの QEMU ゲストエージェントの設定
Red Hat Enterprise Linux ホストマシンを準備します
次のパッケージが Red Hat Enterprise Linux ホスト物理マシンにインストールされていることを確認してください。- virtio-win
usr/share/virtio-win/にあります。
Windows ゲストのドライバーをコピーするには、次のコマンドを使用して qxl ドライバーの*.isoファイルを作成します。mkisofs -o /var/lib/libvirt/images/virtiowin.iso /usr/share/virtio-win/drivers
# mkisofs -o /var/lib/libvirt/images/virtiowin.iso /usr/share/virtio-win/driversCopy to Clipboard Copied! Toggle word wrap Toggle overflow Windows ゲストを準備する
virtio-serial をインストールしますドライバーを更新するために Windows ゲストに*.isoをマウントすることにより、ゲストのドライバー。ゲストを起動し、次に示すようにドライバーの.iso ファイルをゲストに添付します ( hdb という名前のディスクを使用)。virsh attach-disk guest /var/lib/libvirt/images/virtiowin.iso hdb
# virsh attach-disk guest /var/lib/libvirt/images/virtiowin.iso hdbCopy to Clipboard Copied! Toggle word wrap Toggle overflow Windows の を使用してドライバーをインストールするには、次のメニューに移動します。- virtio-win ドライバーをインストールするには - > > を選択します。
Windows ゲスト XML 設定ファイルを更新します
Windows ゲストのゲスト XML ファイルは、Red Hat Enterprise Linux ホストマシンにあります。このファイルにアクセスするには、Windows ゲスト名が必要です。ホストマシンで #virsh list コマンドを使用して、認識できるゲストを一覧表示します。この例では、ゲストの名前は win7x86 です。#virsh edit win7x86 コマンドを使用して次の要素を XML ファイルに追加し、変更を保存します。ソースソケット名は、この例では win7x86.agent という名前で、ホスト内で一意である必要があることに注意してください。図10.2 Windows ゲスト XML を編集して QEMU ゲストエージェントを設定する
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Windows ゲストを再起動します
Windows ゲストを再起動して、変更を適用します。virsh reboot win7x86
# virsh reboot win7x86Copy to Clipboard Copied! Toggle word wrap Toggle overflow Windows ゲストで QEMU ゲストエージェントを準備します
Windows ゲストでゲストエージェントを準備するには:最新のものをインストールするvirtio-winパッケージ
Red Hat Enterprise Linux ホストの物理マシンのターミナルウィンドウで次のコマンドを実行して、インストールするファイルを見つけます。以下に示すファイルは、システムが検出したファイルと完全に同じではない場合がありますが、最新の公式バージョンである必要があることに注意してください。rpm -qa|grep virtio-win rpm -iv virtio-win-1.6.8-5.el6.noarch
# rpm -qa|grep virtio-win virtio-win-1.6.8-5.el6.noarch # rpm -iv virtio-win-1.6.8-5.el6.noarchCopy to Clipboard Copied! Toggle word wrap Toggle overflow インストールが完了したことを確認します
後に virtio-win パッケージのインストールが完了したら、/usr/share/virtio-win/guest-agent/フォルダーを確認すると、次のような qemu-ga-x64.msi または qemu-ga-x86.msi という名前のファイルが見つかります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow .msi ファイルをインストールします
Windows ゲスト (たとえば、win7x86) から、ファイルをダブルクリックして qemu-ga-x64.msi または qemu-ga-x86.msi をインストールします。インストールされると、システムマネージャー内の Windows ゲストに qemu-ga サービスとして表示されます。この同じマネージャーを使用して、サービスのステータスを監視できます。
10.3.1. Windows ゲストでの QEMUGuestAgent での libvirt コマンドの使用 リンクのコピーリンクがクリップボードにコピーされました!
- virsh shutdown --mode=agent - このシャットダウン方法は、virsh shutdown --mode=acpi よりも信頼性が高くなります。QEMU ゲストエージェントで使用する virsh shutdown は、クリーンな状態で協調ゲストをシャットダウンすることが保証されます。エージェントが存在しない場合、libvirt は代わりに ACPI シャットダウンイベントの挿入に依存する必要がありますが、一部のゲストはそのイベントを無視するため、シャットダウンしません。virsh reboot と同じ構文で使用できます。
- virsh snapshot-create --quiesce - スナップショットが作成される前に、ゲストが I / O を安定した状態にフラッシュできるようにします。これにより、fsck を実行したり、データベーストランザクションの一部を失うことなくスナップショットを使用できます。ゲストエージェントは、ゲストの相互作用を提供することで、高レベルのディスクコンテンツの安定性を実現します。
- virsh dompmsuspend - ゲストオペレーティングシステムの電源管理機能を使用して、実行中のゲストを優雅に一時停止します。
10.4. デバイスリダイレクトの制限の設定 リンクのコピーリンクがクリップボードにコピーされました!
-device usb-redir に渡します。filter プロパティーは、フィルタールールで設定される文字列を取ります。ルールの形式は次のとおりです。
<class>:<vendor>:<product>:<version>:<allow>
<class>:<vendor>:<product>:<version>:<allow>
-1 の値を使用して、特定のフィールドに任意の値を受け入れるように指定します。同じコマンドラインで、| を区切り文字として使用し、複数のルールを使用できます。デバイスがどのフィルタールールにも一致しない場合、リダイレクトは許可されないことに注意してください。
例10.1 Windows ゲスト仮想マシンによるリダイレクトの制限
- Windows 7 ゲスト仮想マシンを準備します。
- 以下のコード抜粋をゲスト仮想マシンの XML ファイルに追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ゲスト仮想マシンを起動し、次のコマンドを実行して設定の変更を確認します。
ps -ef | grep $guest_name
# ps -ef | grep $guest_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow -device usb-redir,chardev=charredir0,id=redir0,/ filter=0x08:0x1234:0xBEEF:0x0200:1|-1:-1:-1:-1:0,bus=usb.0,port=3
-device usb-redir,chardev=charredir0,id=redir0,/ filter=0x08:0x1234:0xBEEF:0x0200:1|-1:-1:-1:-1:0,bus=usb.0,port=3Copy to Clipboard Copied! Toggle word wrap Toggle overflow - USB デバイスをホストの物理マシンに接続し、virt-viewer を使用してゲスト仮想マシンに接続します。
- メニューで をクリックすると、一部の USB デバイスはホストポリシーによってブロックされていますというメッセージが表示されます。 をクリックして確定し、続行します。フィルターが有効になります。
- フィルターが正しくキャプチャーされていることを確認するには、USB デバイスのベンダーと製品を確認してから、USB リダイレクトを可能にするために、ホストの物理マシンのドメイン XML で次の変更を行います。
<redirfilter> <usbdev class='0x08' vendor='0x0951' product='0x1625' version='2.0' allow='yes'/> <usbdev allow='no'/> </redirfilter><redirfilter> <usbdev class='0x08' vendor='0x0951' product='0x1625' version='2.0' allow='yes'/> <usbdev allow='no'/> </redirfilter>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ゲスト仮想マシンを再起動してから、virt-viewer を使用してゲスト仮想マシンに接続します。これで、USB デバイスはトラフィックをゲスト仮想マシンにリダイレクトするようになります。
10.5. 仮想 NIC に接続しているホスト物理マシンまたはネットワークブリッジの動的な変更 リンクのコピーリンクがクリップボードにコピーされました!
- 次のような設定で、ゲスト仮想マシンを準備します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - インターフェイスを更新するために XML ファイルを準備します。
cat br1.xml
# cat br1.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ゲスト仮想マシンを起動し、ゲスト仮想マシンのネットワーク機能を確認して、ゲスト仮想マシンの vnetX が指定したブリッジに接続されていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 次のコマンドを使用して、新しいインターフェイスパラメーターでゲスト仮想マシンのネットワークを更新します。
virsh update-device test1 br1.xml
# virsh update-device test1 br1.xml Device updated successfullyCopy to Clipboard Copied! Toggle word wrap Toggle overflow - ゲスト仮想マシンで service network restart を実行します。ゲスト仮想マシンは、virbr1 の新しい IP アドレスを取得します。ゲスト仮想マシンの vnet0 が新しいブリッジ (virbr1) に接続されていることを確認します。
brctl show
# brctl show bridge name bridge id STP enabled interfaces virbr0 8000.5254007da9f2 yes virbr0-nic virbr1 8000.525400682996 yes virbr1-nic vnet0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第11章 ストレージの概念 リンクのコピーリンクがクリップボードにコピーされました!
11.1. ストレージプール リンクのコピーリンクがクリップボードにコピーされました!
- virtio-blk = 2^63 バイトまたは 8 エクサバイト (raw ファイルまたはディスクを使用)
- Ext4 = ~ 16TB (4KB のブロックサイズを使用)
- XFS = ~8 エクサバイト
- qcow2 およびホストのファイルシステムでは、非常に大きなイメージサイズを試行する際に、独自のメタデータとスケーラビリティーを評価/調整する必要があります。raw ディスクを使用すると、スケーラビリティーまたは最大サイズに影響を与えるレイヤーが減ります。
/var/lib/libvirt/images/ ディレクトリーをデフォルトのストレージプールとして使用します。デフォルトのストレージプールは、別のストレージプールに変更できます。
- ローカルストレージプール - ローカルストレージプールは、ホストの物理マシンサーバーに直接接続されています。ローカルストレージプールには、ローカルディレクトリー、直接接続されたディスク、物理パーティション、および LVM ボリュームグループが含まれます。これらのストレージボリュームは、ゲスト仮想マシンイメージを格納するか、追加のストレージとしてゲスト仮想マシンに接続されます。ローカルストレージプールはホストの物理マシンサーバーに直接接続されているため、移行や多数のゲスト仮想マシンを必要としない開発、テスト、および小規模な展開に役立ちます。ローカルストレージプールはライブマイグレーションをサポートしていないため、ローカルストレージプールは多くの本番環境には適していません。
- ネットワーク型 (共有) ストレージプール - ネットワーク型ストレージプールには、標準プロトコルを使用してネットワーク上で共有されるストレージデバイスが含まれます。virt-manager を使用してホスト物理マシン間で仮想マシンを移行する場合はネットワークストレージが必要ですが、virsh を使用して移行する場合は任意です。ネットワークストレージプールは libvirt によって管理されます。ネットワークストレージプールでサポートされているプロトコルは次のとおりです。
- ファイバーチャネルベースの LUN
- iSCSI
- NFS
- GFS2
- SCSI RDMA プロトコル (SCSI RCP) - InfiniBand アダプターおよび 10GbE iWARP アダプターで使用されるブロックエクスポートプロトコル
11.2. ボリューム リンクのコピーリンクがクリップボードにコピーされました!
ボリュームの参照
特定のボリュームを参照するには、次の 3 つのアプローチが可能です。
- ボリュームとストレージプールの名前
- ボリュームは、それが属するストレージプールの識別子とともに名前で参照される場合があります。virsh コマンドラインでは、
--poolstorage_pool volume_name の形式を取ります。たとえば、guest_images プールの firstimage という名前のボリュームの場合は以下のようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ホスト物理マシンシステム上のストレージへのフルパス
- ボリュームは、ファイルシステム上のフルパスによって参照される場合もあります。このアプローチを使用する場合、プール識別子を含める必要はありません。たとえば、secondimage.img という名前のボリュームは、ホスト物理マシンシステムに /images/secondimage.img として表示されます。このイメージは /images/secondimage.img として参照できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ユニークなボリュームキー
- 仮想化システムでボリュームが最初に作成されると、一意の識別子が生成され、ボリュームに割り当てられます。一意の識別子は ボリュームキー と呼ばれます。このボリュームキーの形式は、使用するストレージによって異なります。LVM などのブロックベースのストレージで使用する場合、ボリュームキーは次の形式に従う場合があります。
c3pKz4-qPVc-Xf7M-7WNM-WJc8-qSiz-mtvpGn
c3pKz4-qPVc-Xf7M-7WNM-WJc8-qSiz-mtvpGnCopy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルベースのストレージで使用する場合、ボリュームキーは代わりにボリュームストレージへのフルパスのコピーである可能性があります。/images/secondimage.img
/images/secondimage.imgCopy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、ボリュームキーが Wlvnf7-a4a3-Tlje-lJDa-9eak-PZBv-LoZuUr:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- vol-name
- ボリュームパスまたはボリュームキーが指定されている場合は、ボリューム名を返します。
virsh vol-name /dev/guest_images/firstimage virsh vol-name Wlvnf7-a4a3-Tlje-lJDa-9eak-PZBv-LoZuUr
# virsh vol-name /dev/guest_images/firstimage firstimage # virsh vol-name Wlvnf7-a4a3-Tlje-lJDa-9eak-PZBv-LoZuUrCopy to Clipboard Copied! Toggle word wrap Toggle overflow - vol-path
- ボリュームキー、またはストレージプール識別子とボリューム名が指定されている場合は、ボリュームパスを返します。
virsh vol-path Wlvnf7-a4a3-Tlje-lJDa-9eak-PZBv-LoZuUr virsh vol-path --pool guest_images firstimage
# virsh vol-path Wlvnf7-a4a3-Tlje-lJDa-9eak-PZBv-LoZuUr /dev/guest_images/firstimage # virsh vol-path --pool guest_images firstimage /dev/guest_images/firstimageCopy to Clipboard Copied! Toggle word wrap Toggle overflow - vol-key コマンド
- ボリュームパス、またはストレージプール識別子とボリューム名が指定されている場合は、ボリュームキーを返します。
virsh vol-key /dev/guest_images/firstimage virsh vol-key --pool guest_images firstimage
# virsh vol-key /dev/guest_images/firstimage Wlvnf7-a4a3-Tlje-lJDa-9eak-PZBv-LoZuUr # virsh vol-key --pool guest_images firstimage Wlvnf7-a4a3-Tlje-lJDa-9eak-PZBv-LoZuUrCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第12章 ストレージプール リンクのコピーリンクがクリップボードにコピーされました!
例12.1 NFS ストレージプール
path/to/share は /vm_data にマウントする必要があります)。プールが開始すると、libvirt は、システム管理者がログインして mount nfs.example.com:/path/to/share /vmdata を実行した場合と同じように、指定したディレクトリーに共有をマウントします。プールが自動開始するように設定されている場合、libvirt は、libvirt の開始時に指定されたディレクトリーに NFS 共有がマウントされていることを確認します。
12.1. ディスクベースのストレージプール リンクのコピーリンクがクリップボードにコピーされました!
/dev/sdb など) への書き込みアクセス権を付与しないでください。パーティション (/dev/sdb1 など) または LVM ボリュームを使用します。
12.1.1. virsh を使用したディスクベースのストレージプールの作成 リンクのコピーリンクがクリップボードにコピーされました!
ディスクに GPT ディスクラベルを作成します
ディスクには、GUID パーティションテーブル (GPT) ディスクラベルを付け直す必要があります。GPT ディスクラベルを使用すると、各デバイスに最大 128 個のパーティションを作成できます。GPT パーティションテーブルは、MS-DOS パーティションテーブルよりもはるかに多くのパーティションのパーティションデータを格納できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ストレージプール設定ファイルを作成します
新規デバイスに必要なストレージプール情報を含む一時的な XML テキストファイルを作成します。ファイルは以下に示す形式で、次のフィールドが含まれている必要があります。- <name>guest_images_disk</name>
nameパラメーターは、ストレージプールの名前を決定します。この例では、以下の例で guest_images_disk という名前を使用しています。- <device path='/dev/sdb'/>
deviceパラメーターにpath属性を指定すると、ストレージデバイスのデバイスパスが指定されます。この例では、デバイス /dev/sdb を使用しています。- <target> <path>/dev</path></target>
- ファイルシステム
targetパラメーターとpathサブパラメーターは、このストレージプールで作成されたボリュームを接続するホスト物理マシンファイルシステム上の場所を決定します。たとえば、sdb1、sdb2、sdb3 です。以下の例のように /dev/ を使用すると、このストレージプールから作成されたボリュームに /dev/sdb1、/dev/sdb2、/dev/sdb3 としてアクセスできることを意味します。 - <format type='gpt'/>
formatパラメーターは、パーティションテーブルの種類を指定します。この例では、次の例の gpt を使用して、前の手順で作成した GPT ディスクラベルタイプと一致させます。
テキストエディターを使用して、ストレージプールデバイスの XML ファイルを作成します。例12.2 ディスクベースのストレージデバイスストレージプール
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デバイスを接続します
前の手順で作成した XML 設定ファイルで virshpool-define コマンドを使用して、ストレージプール定義を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ストレージプールを起動します。
virshpool-start コマンドを使用してストレージプールを開始します。virshpool-list--all コマンドを使用してプールが開始されていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 自動起動をオンにします
オンにするautostartストレージプール用。Autostart は、サービスの開始時にストレージプールを開始するようにlibvirtdサービスを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ストレージプールの設定を確認する
ストレージプールが正しく作成され、サイズが正しく報告され、状態が次のように報告されることを確認しますrunning。Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 一時設定ファイルを削除します
必要がない場合は、一時ストレージプールの XML 設定ファイルを削除します。rm ~/guest_images_disk.xml
# rm ~/guest_images_disk.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.1.2. virsh を使用したストレージプールの削除 リンクのコピーリンクがクリップボードにコピーされました!
- 同じプールを使用している他のゲスト仮想マシンでの問題を回避するには、ストレージプールを停止し、使用中のリソースを解放することをお勧めします。
virsh pool-destroy guest_images_disk
# virsh pool-destroy guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow - ストレージプールの定義を削除します。
virsh pool-undefine guest_images_disk
# virsh pool-undefine guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.2. パーティションベースのストレージプール リンクのコピーリンクがクリップボードにコピーされました!
/dev/sdc) が 1 つの 500GB の ext4 フォーマット済みパーティション (/dev/sdc1) にパーティション化されています。以下の手順でストレージプールを設定します。
12.2.1. virt-manager を使用したパーティションベースのストレージプールの作成 リンクのコピーリンクがクリップボードにコピーされました!
手順12.1 virt-manager を使用したパーティションベースのストレージプールの作成
ストレージプールの設定を開きます
- virt-manager のグラフィカルインターフェイスで、メインウィンドウからホストの物理マシンを選択します。Edit メニューを開き、Connection Details を選択します。
図12.1 接続の詳細
- Connection Details ウィンドウの Storage タブをクリックします。
図12.2 ストレージタブ
新しいストレージプールを作成します
新しいプールの追加 (パート 1)
+ ボタン (プールの追加ボタン) を押します。Add a New Storage Pool ウィザードが表示されます。ストレージプールの を選択します。この例では、guest_images_fs という名前を使用します。 を fs: Pre-Formatted Block Device に変更します。図12.3 ストレージプールの名前とタイプ
ボタンを押して続行します。新しいプールの追加 (パート 2)
、、および フィールドを変更します。図12.4 ストレージプールのパスと形式
- ターゲットパス
- フィールドに、ストレージプールのソースデバイスをマウントする場所を入力します。場所がまだ存在しない場合は、virt-manager がディレクトリーを作成します。
- 形式
- リストからフォーマットを選択します。デバイスは選択したフォーマットでフォーマットされています。この例では、デフォルトの Red Hat Enterprise Linux ファイルシステムである ext4 ファイルシステムを使用しています。
- ソースパス
- Source Path フィールドにデバイスを入力します。この例では、/dev/sdc1 デバイスを使用しています。
詳細を確認し、 ボタンを押してストレージプールを作成します。
新しいストレージプールを確認します
新しいストレージプールは、数秒後に左側のストレージリストに表示されます。サイズが期待どおりに報告されていることを確認します。この例では 458.20 GB が空き です。 フィールドが新しいストレージプールを Active としてレポートしていることを確認します。ストレージプールを選択します。 フィールドで、 時チェックボックスをクリックします。これにより、libvirtdサービスが開始するたびにストレージデバイスが確実に開始されます。図12.5 ストレージリストの確認
これでストレージプールが作成され、Connection Details ウィンドウを閉じます。
12.2.2. virt-manager を使用したストレージプールの削除 リンクのコピーリンクがクリップボードにコピーされました!
- 同じプールを使用している他のゲスト仮想マシンでの問題を回避するには、ストレージプールを停止し、使用中のリソースを解放することをお勧めします。これを行うには、停止するストレージプールを選択し、ストレージウィンドウの下部にある赤い X アイコンをクリックします。
図12.6 停止アイコン
- ごみ箱アイコンをクリックして、ストレージプールを削除します。このアイコンは、最初にストレージプールを停止した場合にのみ有効になります。
12.2.3. virsh を使用したパーティションベースのストレージプールの作成 リンクのコピーリンクがクリップボードにコピーされました!
/dev/sdb など) として割り当てるのに使用しないでください。ゲストには、ディスク全体またはブロックデバイスへの書き込みアクセス権を付与しないでください。この方法は、パーティション (たとえば、/dev/sdb1) をストレージプールに割り当てる場合にのみ使用してください。
手順12.2 virsh を使用して事前にフォーマットされたブロックデバイスストレージプールを作成する
ストレージプール定義を作成します
virsh pool-define-as コマンドを使用して、新しいストレージプール定義を作成します。事前にフォーマットされたディスクをストレージプールとして定義するには、次の 3 つのオプションを提供する必要があります。- パーティション名
nameパラメーターは、ストレージプールの名前を決定します。この例では、以下の例で guest_images_fs という名前を使用しています。- device
deviceパラメーターにpath属性を指定すると、ストレージデバイスのデバイスパスが指定されます。この例では、パーティション /dev/sdc1 を使用しています。- mountpoint
- フォーマットされたデバイスがマウントされるローカルファイルシステム上の
mountpoint。マウントポイントディレクトリーが存在しない場合、virsh コマンドでディレクトリーを作成できます。この例では、ディレクトリー /guest_images が使用されています。
virsh pool-define-as guest_images_fs fs - - /dev/sdc1 - "/guest_images"
# virsh pool-define-as guest_images_fs fs - - /dev/sdc1 - "/guest_images" Pool guest_images_fs definedCopy to Clipboard Copied! Toggle word wrap Toggle overflow これで、新しいプールとマウントポイントが作成されました。新しいプールを確認する
現在のストレージプールを一覧表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow マウントポイントを作成します。
virsh pool-build コマンドを使用して、事前にフォーマットされたファイルシステムストレージプールのマウントポイントを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ストレージプールを起動します。
virsh pool-start コマンドを使用して、ファイルシステムをマウントポイントにマウントし、プールを使用できるようにします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 自動起動をオンにします
デフォルトでは、virsh で定義されたストレージプールは、libvirtdが起動するたびに自動的に起動するように設定されていません。これを修正するには、virsh pool-autostart コマンドで自動開始を有効にします。ストレージプールは、libvirtdが起動するたびに自動的に起動するようになりました。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ストレージプールを確認します。
ストレージプールが正しく作成され、報告されたサイズが期待どおりで、状態が running と報告されたことを確認します。ファイルシステムのマウントポイントに lost+found ディレクトリーがあり、デバイスがマウントされていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.2.4. virsh を使用したストレージプールの削除 リンクのコピーリンクがクリップボードにコピーされました!
- 同じプールを使用している他のゲスト仮想マシンでの問題を回避するには、ストレージプールを停止し、使用中のリソースを解放することをお勧めします。
virsh pool-destroy guest_images_disk
# virsh pool-destroy guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow - オプションで、ストレージプールが存在するディレクトリーを削除する場合は、次のコマンドを使用します。
virsh pool-delete guest_images_disk
# virsh pool-delete guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow - ストレージプールの定義を削除します。
virsh pool-undefine guest_images_disk
# virsh pool-undefine guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.3. ディレクトリーベースのストレージプール リンクのコピーリンクがクリップボードにコピーされました!
12.3.1. virt-manager を使用したディレクトリーベースのストレージプールの作成 リンクのコピーリンクがクリップボードにコピーされました!
ローカルディレクトリーを作成します
オプション: ストレージプール用の新しいディレクトリーを作成します
ストレージプール用のディレクトリーをホスト物理マシンに作成します。この例では、/guest virtual machine_images という名前のディレクトリーを使用しています。mkdir /guest_images
# mkdir /guest_imagesCopy to Clipboard Copied! Toggle word wrap Toggle overflow ディレクトリーの所有権を設定する
ディレクトリーのユーザーとグループの所有権を変更します。ディレクトリーは root ユーザーが所有している必要があります。chown root:root /guest_images
# chown root:root /guest_imagesCopy to Clipboard Copied! Toggle word wrap Toggle overflow ディレクトリーのアクセス許可を設定する
ディレクトリーのファイル権限を変更します。chmod 700 /guest_images
# chmod 700 /guest_imagesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 変更を確認します。
権限が変更されたことを確認します。出力には、正しく設定された空のディレクトリーが表示されます。ls -la /guest_images
# ls -la /guest_images total 8 drwx------. 2 root root 4096 May 28 13:57 . dr-xr-xr-x. 26 root root 4096 May 28 13:57 ..Copy to Clipboard Copied! Toggle word wrap Toggle overflow
SELinux ファイルコンテキストを設定する
新しいディレクトリーの正しい SELinux コンテキストを設定します。プールの名前とディレクトリーは一致している必要はないことに注意してください。ただし、ゲスト仮想マシンをシャットダウンすると、libvirt はコンテキストをデフォルト値に戻す必要があります。ディレクトリーのコンテキストによって、このデフォルト値が決まります。ディレクトリー virt_image_t に明示的にラベルを付けることは価値があります。これにより、ゲスト仮想マシンがシャットダウンされると、イメージに virt_image_t というラベルが付けられ、ホスト物理マシンで実行されている他のプロセスから分離されます。semanage fcontext -a -t virt_image_t '/guest_images(/.*)?' restorecon -R /guest_images
# semanage fcontext -a -t virt_image_t '/guest_images(/.*)?' # restorecon -R /guest_imagesCopy to Clipboard Copied! Toggle word wrap Toggle overflow ストレージプールの設定を開きます
- virt-manager のグラフィカルインターフェイスで、メインウィンドウからホストの物理マシンを選択します。Edit メニューを開き、Connection Details を選択します。
図12.7 接続詳細ウィンドウ
- Connection Details ウィンドウの Storage タブをクリックします。
図12.8 ストレージタブ
新しいストレージプールを作成します
新しいプールの追加 (パート 1)
+ ボタン (プールの追加ボタン) を押します。Add a New Storage Pool ウィザードが表示されます。ストレージプールの を選択します。この例では、guest_images という名前を使用します。 を dir: Filesystem Directory に変更します。図12.9 ストレージプールに名前を付ける
ボタンを押して続行します。新しいプールの追加 (パート 2)
フィールドを変更します。たとえば、/guest_images。詳細を確認し、 ボタンを押してストレージプールを作成します。
新しいストレージプールを確認します
新しいストレージプールは、数秒後に左側のストレージリストに表示されます。サイズが期待どおりに報告されていることを確認します。この例では 36.41 GB の空き 容量です。 フィールドが新しいストレージプールを Active としてレポートしていることを確認します。ストレージプールを選択します。 フィールドで、 チェックボックスがオンになっていることを確認します。これにより、libvirtdサービスが開始するたびにストレージプールが確実に開始されます。図12.10 ストレージプール情報を確認します
これでストレージプールが作成され、Connection Details ウィンドウを閉じます。
12.3.2. virt-manager を使用したストレージプールの削除 リンクのコピーリンクがクリップボードにコピーされました!
- 同じプールを使用している他のゲスト仮想マシンでの問題を回避するには、ストレージプールを停止し、使用中のリソースを解放することをお勧めします。これを行うには、停止するストレージプールを選択し、ストレージウィンドウの下部にある赤い X アイコンをクリックします。
図12.11 停止アイコン
- ごみ箱アイコンをクリックして、ストレージプールを削除します。このアイコンは、最初にストレージプールを停止した場合にのみ有効になります。
12.3.3. virsh を使用したディレクトリーベースのストレージプールの作成 リンクのコピーリンクがクリップボードにコピーされました!
ストレージプール定義を作成します
virsh pool-define-as コマンドを使用して、新しいストレージプールを定義します。ディレクトリーベースのストレージプールを作成するには、次の 2 つのオプションが必要です。- ストレージプールの nameこの例では、guest_images という名前を使用します。この例で使用されている以降のすべての virsh コマンドは、この名前を使用します。
- ゲストイメージファイルを保存するためのファイルシステムディレクトリーへの path。このディレクトリーが存在しない場合は、virsh が作成します。この例では、/guest_images ディレクトリーを使用しています。
virsh pool-define-as guest_images dir - - - - "/guest_images"
# virsh pool-define-as guest_images dir - - - - "/guest_images" Pool guest_images definedCopy to Clipboard Copied! Toggle word wrap Toggle overflow ストレージプールがリストされていることを確認します
ストレージプールオブジェクトが正しく作成され、状態が次のようにレポートすることを確認しますinactive。virsh pool-list --all
# virsh pool-list --all Name State Autostart ----------------------------------------- default active yes guest_images inactive noCopy to Clipboard Copied! Toggle word wrap Toggle overflow ローカルディレクトリーを作成します
次に示すように、virsh pool-build コマンドを使用して、ディレクトリー guest_images のディレクトリーベースのストレージプールを構築します (たとえば)。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ストレージプールを起動します。
virsh コマンド pool-start を使用して、ディレクトリーストレージプールを有効にします。これにより、プールのボリュームをゲストディスクイメージとして使用できるようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 自動起動をオンにします
オンにするautostartストレージプール用。Autostart は、サービスの開始時にストレージプールを開始するようにlibvirtdサービスを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ストレージプールの設定を確認する
ストレージプールが正しく作成され、サイズが正しく報告され、状態が次のようにレポートされることを確認しますrunning。ゲスト仮想マシンが実行されていない場合でもプールにアクセスできるようにするには、Persistentがyesとして報告されていることを確認します。サービス開始時にプールを自動的に起動させたい場合は、Autostartがyesと報告されていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.3.4. virsh を使用したストレージプールの削除 リンクのコピーリンクがクリップボードにコピーされました!
- 同じプールを使用している他のゲスト仮想マシンでの問題を回避するには、ストレージプールを停止し、使用中のリソースを解放することをお勧めします。
virsh pool-destroy guest_images_disk
# virsh pool-destroy guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow - オプションで、ストレージプールが存在するディレクトリーを削除する場合は、次のコマンドを使用します。
virsh pool-delete guest_images_disk
# virsh pool-delete guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow - ストレージプールの定義を削除します。
virsh pool-undefine guest_images_disk
# virsh pool-undefine guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.4. LVM ベースのストレージプール リンクのコピーリンクがクリップボードにコピーされました!
12.4.1. LVM ベースのストレージプールの作成 virt-manager を使用します。 リンクのコピーリンクがクリップボードにコピーされました!
オプション:LVM ボリューム用の新しいパーティションを作成します
これらの手順では、新しいハードディスクドライブに新しいパーティションと LVM ボリュームグループを作成する方法について説明します。警告この手順により、選択したストレージデバイスからすべてのデータが削除されます。新しいパーティションの作成
fdisk コマンドを使用して、コマンドラインから新しいディスクパーティションを作成します。次の例では、ストレージデバイス/dev/sdbにディスク全体を使用する新しいパーティションを作成しています。fdisk /dev/sdb
# fdisk /dev/sdb Command (m for help):Copy to Clipboard Copied! Toggle word wrap Toggle overflow nを押して、新しいパーティションを作成します。pを押して、プライマリーパーティションにします。Command action e extended p primary partition (1-4)
Command action e extended p primary partition (1-4)Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 使用可能なパーティション番号を選択します。この例では、最初のパーティションは次のように入力して選択されます
1。Partition number (1-4): 1
Partition number (1-4): 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow Enterを押して、デフォルトの最初のシリンダーを入力します。First cylinder (1-400, default 1):
First cylinder (1-400, default 1):Copy to Clipboard Copied! Toggle word wrap Toggle overflow - パーティションのサイズを選択します。この例では、
Enterを押してディスク全体を割り当てています。Last cylinder or +size or +sizeM or +sizeK (2-400, default 400):
Last cylinder or +size or +sizeM or +sizeK (2-400, default 400):Copy to Clipboard Copied! Toggle word wrap Toggle overflow tを押して、パーティションの種類を設定します。Command (m for help): t
Command (m for help): tCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 前の手順で作成したパーティションを選択します。この例では、パーティション番号は
1。Partition number (1-4): 1
Partition number (1-4): 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Linux LVM パーティションの場合、
8eを入力します。Hex code (type L to list codes): 8e
Hex code (type L to list codes): 8eCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更をディスクに書き込んで終了します。
Command (m for help): w Command (m for help): q
Command (m for help): w Command (m for help): qCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい LVM ボリュームグループを作成する
vgcreate コマンドを使用して新しい LVM ボリュームグループを作成します。この例では、guest_images_lvm という名前のボリュームグループを作成します。vgcreate guest_images_lvm /dev/sdb1
# vgcreate guest_images_lvm /dev/sdb1 Physical volume "/dev/vdb1" successfully created Volume group "guest_images_lvm" successfully createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
新しい LVM ボリュームグループ guest_images_lvm を、LVM ベースのストレージプールに使用できるようになりました。ストレージプールの設定を開きます
- virt-manager のグラフィカルインターフェイスで、メインウィンドウからホストを選択します。Edit メニューを開き、Connection Details を選択します。
図12.12 接続の詳細
- Storage タブをクリックします。
図12.13 ストレージタブ
新しいストレージプールを作成します
ウィザードを開始します
+ ボタン (プールの追加ボタン) を押します。Add a New Storage Pool ウィザードが表示されます。ストレージプールの を選択します。この例では、guest_images_lvm を使用します。次に、 を logical: LVM Volume Group に変更します。また、図12.14 LVM ストレージプールを追加する
ボタンを押して続行します。新しいプールの追加 (パート 2)
フィールドを変更します。この例では /guest_images を使用しています。次に、 フィールドと フィールドに入力し、 チェックボックスをオンにします。- フィールドを使用して、既存の LVM ボリュームグループを選択する か、新しいボリュームグループの名前として使用します。デフォルトの形式は
/dev/storage_pool_name。この例では、/dev/guest_images_lvm という名前の新しいボリュームグループを使用しています。 - 既存の LVM ボリュームグループが で使用されている場合、Source Path フィールドはオプションです。新しい LVM ボリュームグループの場合は、Source Path フィールドにストレージデバイスの場所を入力します。この例では、空白のパーティション /dev/sdc を使用しています。
- チェックボックスは、virt-manager に新しい LVM ボリュームグループを作成するように指示します。既存のボリュームグループを使用している場合は、 チェックボックスを選択しないでください。この例では、空白のパーティションを使用して新しいボリュームグループを作成しているため、 チェックボックスをオンにする必要があります。
図12.15 ターゲットとソースを追加する
詳細を確認し、 ボタンを押して LVM ボリュームグループをフォーマットし、ストレージプールを作成します。フォーマットするデバイスを確認します
警告メッセージが表示されます。図12.16 警告メッセージ
Yes ボタンを押して、ストレージデバイス上のすべてのデータを消去し、ストレージプールを作成します。
新しいストレージプールを確認します
新しいストレージプールは、数秒後に左側のリストに表示されます。詳細が期待どおりであることを確認します。この例では、465.76 GB が空きです。また、 フィールドが新しいストレージプールをActive としてレポートしていることを確認します。ストレージプールが libvirtd で自動的に開始されるようにするには、通常、 チェックボックスを有効にすることをお勧めします。図12.17 LVM ストレージプールの詳細を確認する
タスクが完了したら、ホストの詳細ダイアログを閉じます。
12.4.2. virt-manager を使用したストレージプールの削除 リンクのコピーリンクがクリップボードにコピーされました!
- 同じプールを使用している他のゲスト仮想マシンでの問題を回避するには、ストレージプールを停止し、使用中のリソースを解放することをお勧めします。これを行うには、停止するストレージプールを選択し、ストレージウィンドウの下部にある赤い X アイコンをクリックします。
図12.18 停止アイコン
- ごみ箱アイコンをクリックして、ストレージプールを削除します。このアイコンは、最初にストレージプールを停止した場合にのみ有効になります。
12.4.3. virsh を使用した LVM ベースのストレージプールの作成 リンクのコピーリンクがクリップボードにコピーされました!
/dev/sdc) からの guest_images_lvm という名前のプールの例を使用します。これは単なる例であり、設定は必要に応じて置き換える必要があります。
手順12.3 virsh を使用した LVM ベースのストレージプールの作成
- プール名 guest_images_lvm を定義します。
virsh pool-define-as guest_images_lvm logical - - /dev/sdc libvirt_lvm \ /dev/libvirt_lvm
# virsh pool-define-as guest_images_lvm logical - - /dev/sdc libvirt_lvm \ /dev/libvirt_lvm Pool guest_images_lvm definedCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 指定された名前に従ってプールを構築します。既存のボリュームグループを使用している場合は、この手順をスキップしてください。
virsh pool-build guest_images_lvm
# virsh pool-build guest_images_lvm Pool guest_images_lvm builtCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 新しいプールを初期化します。
virsh pool-start guest_images_lvm
# virsh pool-start guest_images_lvm Pool guest_images_lvm startedCopy to Clipboard Copied! Toggle word wrap Toggle overflow - vgs コマンドを使用してボリュームグループ情報を表示します。
vgs
# vgs VG #PV #LV #SN Attr VSize VFree libvirt_lvm 1 0 0 wz--n- 465.76g 465.76gCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 自動的に開始するようにプールを設定します。
virsh pool-autostart guest_images_lvm
# virsh pool-autostart guest_images_lvm Pool guest_images_lvm marked as autostartedCopy to Clipboard Copied! Toggle word wrap Toggle overflow - virsh コマンドを使用して、使用可能なプールを一覧表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 次のコマンドは、このプール内に 3 つのボリューム (volume1、volume2、および volume3) を作成する方法を示しています。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - virsh コマンドを使用して、このプールで使用可能なボリュームをリストします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 次の 2 つのコマンド (lvscan および lvs) は、新しく作成されたボリュームに関する詳細情報を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.4.4. virsh を使用したストレージプールの削除 リンクのコピーリンクがクリップボードにコピーされました!
- 同じプールを使用している他のゲストとの問題を回避するには、ストレージプールを停止し、使用中のリソースを解放することをお勧めします。
virsh pool-destroy guest_images_disk
# virsh pool-destroy guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow - オプションで、ストレージプールが存在するディレクトリーを削除する場合は、次のコマンドを使用します。
virsh pool-delete guest_images_disk
# virsh pool-delete guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow - ストレージプールの定義を削除します。
virsh pool-undefine guest_images_disk
# virsh pool-undefine guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.5. iSCSI ベースのストレージプール リンクのコピーリンクがクリップボードにコピーされました!
12.5.1. ソフトウェア iSCSI ターゲットの設定 リンクのコピーリンクがクリップボードにコピーされました!
手順12.4 iSCSI ターゲットの作成
必要なパッケージのインストール
scsi-target-utils パッケージと依存するすべてのパッケージをインストールします。yum install scsi-target-utils
# yum install scsi-target-utilsCopy to Clipboard Copied! Toggle word wrap Toggle overflow tgtd サービスを開始します
tgtd サービスは物理マシンの SCSI ターゲットをホストし、iSCSI プロトコルを使用して物理マシンターゲットをホストします。tgtd サービスを開始し、chkconfig コマンドで再起動した後、サービスを永続化します。service tgtd start chkconfig tgtd on
# service tgtd start # chkconfig tgtd onCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション:LVM ボリュームを作成する
LVM ボリュームは、iSCSI バッキングイメージに役立ちます。LVM スナップショットとサイズ変更は、ゲスト仮想マシンにとって有益な場合があります。この例では、iSCSI を使用してゲスト仮想マシンをホストするために、RAID5 アレイ上の virtstore という名前の新しいボリュームグループに virtimage1 という名前の LVM イメージを作成します。RAID アレイを作成する
ソフトウェア RAID5 アレイの作成については、『Red Hat Enterprise Linux デプロイメントガイド』 で説明されています。LVM ボリュームグループを作成する
vgcreate コマンドを使用して、virtstore という名前のボリュームグループを作成します。vgcreate virtstore /dev/md1
# vgcreate virtstore /dev/md1Copy to Clipboard Copied! Toggle word wrap Toggle overflow LVM 論理ボリュームを作成する
lvcreate コマンドを使用して、サイズが 20GB の virtstore ボリュームグループに virtimage1 という名前の論理ボリュームグループを作成します。lvcreate --size 20G -n virtimage1 virtstore
# lvcreate --size 20G -n virtimage1 virtstoreCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい論理ボリューム virtimage1 は、iSCSI で使用する準備ができています。
オプション: ファイルベースのイメージを作成します
テストにはファイルベースのストレージで十分ですが、実稼働環境や重要な I/O アクティビティーにはお勧めしません。このオプションの手順では、iSCSI ターゲット用に virtimage2.img という名前のファイルベースのイメージを作成します。イメージの新しいディレクトリーを作成します
イメージを保存するための新しいディレクトリーを作成します。ディレクトリーには正しい SELinux コンテキストが必要です。mkdir -p /var/lib/tgtd/virtualization
# mkdir -p /var/lib/tgtd/virtualizationCopy to Clipboard Copied! Toggle word wrap Toggle overflow イメージファイルを作成する
サイズが 10GB の virtimage2.img という名前のイメージを作成します。dd if=/dev/zero of=/var/lib/tgtd/virtualization/virtimage2.img bs=1M seek=10000 count=0
# dd if=/dev/zero of=/var/lib/tgtd/virtualization/virtimage2.img bs=1M seek=10000 count=0Copy to Clipboard Copied! Toggle word wrap Toggle overflow SELinux ファイルコンテキストを設定する
新しいイメージとディレクトリーの正しい SELinux コンテキストを設定します。restorecon -R /var/lib/tgtd
# restorecon -R /var/lib/tgtdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいファイルベースのイメージ virtimage2.img は、iSCSI で使用する準備ができています。
ターゲットを作成する
ターゲットは、XML エントリーを/etc/tgt/targets.confファイルに追加することで作成できます。target属性には、iSCSI Qualified Name (IQN) が必要です。IQN の形式は次のとおりです。iqn.yyyy-mm.reversed domain name:optional identifier text
iqn.yyyy-mm.reversed domain name:optional identifier textCopy to Clipboard Copied! Toggle word wrap Toggle overflow 詳細は以下のようになります。- yyyy-mmは、デバイスが開始された年と月を表します (例: 2010-05)。
- 逆ドメイン名 は、逆のホスト物理マシンのドメイン名です (たとえば、IQN の server1.example.com は com.example.server1 になります)。と
- オプションの識別子テキスト は、スペースを含まない任意のテキスト文字列であり、管理者がデバイスまたはハードウェアを識別するのに役立ちます。
この例では、server1.example.com のオプションの手順で作成された 2 種類のイメージの iSCSI ターゲットを、オプションの識別子 トライアル を使用して作成します。/etc/tgt/targets.confファイルに以下を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/tgt/targets.confファイルにdefault-driver iscsiドライバータイプを iSCSI として設定する行。ドライバーはデフォルトで iSCSI を使用します。重要この例では、アクセス制御なしでグローバルにアクセス可能なターゲットを作成します。安全なアクセスの実装については、scsi-target-utils を参照してください。tgtd サービスを再起動します
tgtdサービスを再起動して、設定の変更を再ロードします。service tgtd restart
# service tgtd restartCopy to Clipboard Copied! Toggle word wrap Toggle overflow iptable の設定
iptables を使用した iSCSI アクセス用にポート 3260 を開きます。iptables -I INPUT -p tcp -m tcp --dport 3260 -j ACCEPT service iptables save service iptables restart
# iptables -I INPUT -p tcp -m tcp --dport 3260 -j ACCEPT # service iptables save # service iptables restartCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいターゲットを確認します
新しいターゲットを表示して、tgt-admin--show コマンドでセットアップが成功したことを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告ACL リストは all に設定されています。これにより、ローカルネットワーク上のすべてのシステムがこのデバイスにアクセスできるようになります。実稼働環境用にホスト物理マシンアクセス ACL を設定することをお勧めします。オプション: テスト検出
新しい iSCSI デバイスが検出可能かどうかをテストします。iscsiadm --mode discovery --type sendtargets --portal server1.example.com
# iscsiadm --mode discovery --type sendtargets --portal server1.example.com 127.0.0.1:3260,1 iqn.2010-05.com.example.server1:iscsirhel6guestCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: デバイスの接続をテストします
新しいデバイス (iqn.2010-05.com.example.server1:iscsirhel6guest) を接続して、デバイスを接続できるかどうかを判断します。iscsiadm -d2 -m node --login
# iscsiadm -d2 -m node --login scsiadm: Max file limits 1024 1024 Logging in to [iface: default, target: iqn.2010-05.com.example.server1:iscsirhel6guest, portal: 10.0.0.1,3260] Login to [iface: default, target: iqn.2010-05.com.example.server1:iscsirhel6guest, portal: 10.0.0.1,3260] successful.Copy to Clipboard Copied! Toggle word wrap Toggle overflow デバイスの取り外しiscsiadm -d2 -m node --logout
# iscsiadm -d2 -m node --logout scsiadm: Max file limits 1024 1024 Logging out of session [sid: 2, target: iqn.2010-05.com.example.server1:iscsirhel6guest, portal: 10.0.0.1,3260 Logout of [sid: 2, target: iqn.2010-05.com.example.server1:iscsirhel6guest, portal: 10.0.0.1,3260] successful.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.5.2. virt-manager への iSCSI ターゲットの追加 リンクのコピーリンクがクリップボードにコピーされました!
手順12.5 virt-manager への iSCSI デバイスの追加
ホスト物理マシンのストレージタブを開きます
Connection Details ウィンドウの Storage タブを開きます。- virt-manager を開きます。
- メインの virt-manager ウィンドウからホスト物理マシンを選択します。Edit menu をクリックして、Connection Details を選択します。
図12.19 接続の詳細
- Storage タブをクリックします。
図12.20 ストレージメニュー
新しいプールの追加 (パート 1)
+ ボタン (プールの追加ボタン) を押します。Add a New Storage Pool ウィザードが表示されます。図12.21 iscsi ストレージプールの名前とタイプを追加します
ストレージプールの名前を選択し、タイプを iscsi に変更し、 を押して続行します。新しいプールの追加 (パート 2)
このメニューのフィールドを完成させるには、「iSCSI ベースのストレージプール」 と 手順12.4「iSCSI ターゲットの作成」 で使用した情報が必要です。- iSCSI ソースとターゲットを入力します。フォーマットはゲスト仮想マシンによって処理されるため、Format オプションは使用できません。Target Path を編集することはお勧めしません。デフォルトのターゲットパス値
/dev/disk/by-path/は、そのディレクトリーにドライブパスを追加します。ターゲットパスは、移行するすべてのホスト物理マシンで同じである必要があります。 - iSCSI ターゲットのホスト名または IP アドレスを入力します。この例では
host1.example.comを使用しています。 - Source Path フィールドに、iSCSI ターゲット IQN を入力します。「iSCSI ベースのストレージプール」 の 手順12.4「iSCSI ターゲットの作成」 を見ると、これは
/etc/tgt/targets.conf ファイルで追加した情報であることがわかります。この例ではiqn.2010-05.com.example.server1:iscsirhel6guestを使用しています。 - IQN チェックボックスをオンにして、イニシエータの IQN を入力します。この例では
iqn.2010-05.com.example.host1:iscsirhel6を使用しています。 - をクリックして、新しいストレージプールを作成します。
図12.22 iscsi ストレージプールを作成する
12.5.3. virt-manager を使用したストレージプールの削除 リンクのコピーリンクがクリップボードにコピーされました!
- 同じプールを使用している他のゲスト仮想マシンでの問題を回避するには、ストレージプールを停止し、使用中のリソースを解放することをお勧めします。これを行うには、停止するストレージプールを選択し、ストレージウィンドウの下部にある赤い X アイコンをクリックします。
図12.23 停止アイコン
- ごみ箱アイコンをクリックして、ストレージプールを削除します。このアイコンは、最初にストレージプールを停止した場合にのみ有効になります。
12.5.4. virsh を使用した iSCSI ベースのストレージプールの作成 リンクのコピーリンクがクリップボードにコピーされました!
pool-define-as を使用して、コマンドラインからプールを定義します
ストレージプールの定義は、virsh コマンドラインツールを使用して作成できます。virsh を使用してストレージプールを作成すると、システム管理者がスクリプトを使用して複数のストレージプールを作成する場合に役立ちます。virsh pool-define-as コマンドには、次の形式で受け入れられるいくつかのパラメーターがあります。virsh pool-define-as name type source-host source-path source-dev source-name target
virsh pool-define-as name type source-host source-path source-dev source-name targetCopy to Clipboard Copied! Toggle word wrap Toggle overflow パラメーターの説明は次のとおりです。- type
- このプールを特定のタイプ、たとえば iscsi として定義します
- name
- 一意である必要があり、ストレージプールの名前を設定します
- source-host および source-path
- それぞれホスト名と iSCSIIQN
- source-dev および source-name
- これらのパラメーターは iSCSI ベースのプールには必要ありません。フィールドを空白のままにするには、- 文字を使用します。
- target
- ホスト物理マシンに iSCSI デバイスをマウントする場所を定義します
以下の例では、前の手順と同じ iSCSI ベースのストレージプールを作成します。virsh pool-define-as --name scsirhel6guest --type iscsi \ --source-host server1.example.com \ --source-dev iqn.2010-05.com.example.server1:iscsirhel6guest# virsh pool-define-as --name scsirhel6guest --type iscsi \ --source-host server1.example.com \ --source-dev iqn.2010-05.com.example.server1:iscsirhel6guest --target /dev/disk/by-path Pool iscsirhel6guest definedCopy to Clipboard Copied! Toggle word wrap Toggle overflow ストレージプールがリストされていることを確認します
ストレージプールオブジェクトが正しく作成され、状態が次のように報告されることを確認しますinactive。virsh pool-list --all
# virsh pool-list --all Name State Autostart ----------------------------------------- default active yes iscsirhel6guest inactive noCopy to Clipboard Copied! Toggle word wrap Toggle overflow ストレージプールを起動します。
これには、virsh コマンド pool-start を使用します。pool-start は、ディレクトリーストレージプールを有効にし、ボリュームとゲスト仮想マシンに使用できるようにします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 自動起動をオンにします
オンにするautostartストレージプール用。Autostart は、サービスの開始時にストレージプールを開始するようにlibvirtdサービスを設定します。virsh pool-autostart iscsirhel6guest
# virsh pool-autostart iscsirhel6guest Pool iscsirhel6guest marked as autostartedCopy to Clipboard Copied! Toggle word wrap Toggle overflow iscsirhel6guest プールに自動開始が設定されていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ストレージプールの設定を確認する
ストレージプールが正しく作成され、サイズが正しく報告され、状態が次のように報告されることを確認しますrunning。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.5.5. virsh を使用したストレージプールの削除 リンクのコピーリンクがクリップボードにコピーされました!
- 同じプールを使用している他のゲスト仮想マシンでの問題を回避するには、ストレージプールを停止し、使用中のリソースを解放することをお勧めします。
virsh pool-destroy guest_images_disk
# virsh pool-destroy guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow - ストレージプールの定義を削除します。
virsh pool-undefine guest_images_disk
# virsh pool-undefine guest_images_diskCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.6. NFS ベースのストレージプール リンクのコピーリンクがクリップボードにコピーされました!
12.6.1. virt-manager を使用した NFS ベースのストレージプールの作成 リンクのコピーリンクがクリップボードにコピーされました!
ホスト物理マシンのストレージタブを開きます
Host Details ウィンドウで Storage タブを開きます。- virt-manager を開きます。
- メインの virt-manager ウィンドウからホスト物理マシンを選択します。Edit menu をクリックして、Connection Details を選択します。
図12.24 接続の詳細
- Storage タブをクリックします。
図12.25 ストレージタブ
新しいプールを作成する (パート 1)
+ ボタン (プールの追加ボタン) を押します。Add a New Storage Pool ウィザードが表示されます。図12.26 NFS 名とタイプを追加します
ストレージプールの名前を選択し、 を押して続行します。新しいプールを作成する (パート 2)
デバイスのターゲットパス、ホスト名、および NFS 共有パスを入力します。Format オプションを NFS または auto (タイプを検出するため) に設定します。ターゲットパスは、移行するすべてのホスト物理マシンで同一である必要があります。NFS サーバーのホスト名または IP アドレスを入力します。この例ではserver1.example.comを使用しています。NFS パスを入力します。この例では/nfstrialを使用しています。図12.27 NFS ストレージプールを作成する
を押して、新しいストレージプールを作成します。
12.6.2. virt-manager を使用したストレージプールの削除 リンクのコピーリンクがクリップボードにコピーされました!
- 同じプールを使用している他のゲストとの問題を回避するには、ストレージプールを停止し、使用中のリソースを解放することをお勧めします。これを行うには、停止するストレージプールを選択し、ストレージウィンドウの下部にある赤い X アイコンをクリックします。
図12.28 停止アイコン
- ごみ箱アイコンをクリックして、ストレージプールを削除します。このアイコンは、最初にストレージプールを停止した場合にのみ有効になります。
12.7. GlusterFS ストレージプール リンクのコピーリンクがクリップボードにコピーされました!
12.8. SCSI デバイスでの NPIV 仮想アダプター (vHBA) の使用 リンクのコピーリンクがクリップボードにコピーされました!
12.8.1. vHBA の作成 リンクのコピーリンクがクリップボードにコピーされました!
手順12.6 vHBA の作成
ホストシステムで HBA の場所を特定します。
ホストシステム上の HBA を見つけるには、ホストシステム上の SCSI デバイスを調べ、vport機能を持つscsi_hostを見つけます。以下のコマンドを実行し、scsi_hostリストを取得します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 各scsi_hostについて、次のコマンドを実行して、デバイス XML の行<capability type='vport_ops'>を調べます。これは、vportケーパビリティを持つscsi_hostを示しています。virsh nodedev-dumpxml scsi_hostN
# virsh nodedev-dumpxml scsi_hostNCopy to Clipboard Copied! Toggle word wrap Toggle overflow HBA の詳細を確認します。
virsh nodedev-dumpxml HBA_device コマンドを実行して、HBA の詳細を表示します。virsh nodedev-dumpxml コマンドからの XML 出力には、フィールドが一覧表示されます<name>、<wwnn>、と<wwpn>、vHBA の作成に使用されます。<max_vports>の値は、サポートされる vHBA の最大数を示しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、<max_vports>には、HBA 設定で使用できる仮想ポートが 127 個あることを示しています。<vports>値は、現在使用されている仮想ポートの数を示します。この値は、vHBA の作成後に更新されます。vHBA ホストデバイスの作成
vHBA ホスト用に次のような XML ファイル (この例では vhba_host3.xml という名前) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow <parent>フィールドは、この vHBA デバイスに関連付ける HBA デバイスを指定します。<device>タグの詳細は、ホスト用の新しい vHBA デバイスを作成するために、次の手順で使用されます。nodedevXML フォーマットの詳細は、http://libvirt.org/formatnode.htmlを参照してください。vHBA ホストデバイスに新しい vHBA を作成します。
vhba_host3 に vHBA を作成するには、virshnodedev-create コマンドを使用します。virsh nodedev-create vhba_host3.xml
# virsh nodedev-create vhba_host3.xml Node device scsi_host5 created from vhba_host3.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow vHBA の確認
virsh nodedev-dumpxml コマンドを使用して、新しい vHBA の詳細 (scsi_host5) を確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.8.2. vHBA を使用したストレージプールの作成 リンクのコピーリンクがクリップボードにコピーされました!
- libvirt コードは、virsh コマンドの出力を使用すると、LUN のパスを簡単に見つけることができます。また、
- 仮想マシンの移行には、ターゲットマシンで同じ vHBA 名を持つストレージプールの定義と起動のみが必要です。これを行うには、仮想マシンの XML 設定で、vHBA LUN、libvirt ストレージプール、およびボリューム名を指定する必要があります。例は、「vHBALUN を使用するように仮想マシンを設定する」 を参照してください。
SCSI ストレージプールを作成する
vHBA 設定を作成するには、まず vHBA に基づいて libvirt'scsi'ストレージプール XML ファイルを以下のフォーマットで作成します。注記手順12.6「vHBA の作成」 で作成した vHBA をホスト名として使用することを確認し、vHBA 名 scsi_hostN を hostN に修正してストレージプール設定に使用します。この例では、vHBA の名前は scsi_host5 であり、Red Hat Enterprise Linux6 libvirt ストレージプールで<adaptername='host5'/>として指定されています。<path>の値には、システム上の/dev/disk/by-{path|id|uuid|label} のいずれかの場所など、安定した場所を使用することをお勧めします。<path>および<target>内の要素の詳細は、http://libvirt.org/formatstorage.htmlを参照してください。この例では、'scsi'ストレージプールの名前は vhbapool_host3.xml です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow プールを定義する
ストレージプール (この例では vhbapool_host3 という名前) を定義するには、virshpool-define コマンドを使用します。virsh pool-define vhbapool_host3.xml
# virsh pool-define vhbapool_host3.xml Pool vhbapool_host3 defined from vhbapool_host3.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow プールを開始します
次のコマンドでストレージプールを開始します。virsh pool-start vhbapool_host3
# virsh pool-start vhbapool_host3 Pool vhbapool_host3 startedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 自動起動を有効にする
最後に、後続のホストの再起動で仮想マシンで使用する vHBA が自動的に定義されるようにするには、ストレージプールの自動開始機能を設定します (この例では、vhbapool_host3 という名前のプールに対して)。virsh pool-autostart vhbapool_host3
# virsh pool-autostart vhbapool_host3Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.8.3. vHBALUN を使用するように仮想マシンを設定する リンクのコピーリンクがクリップボードにコピーされました!
利用可能な LUN を見つける
まず、virsh vol-list コマンドを使用して、vHBA で使用可能な LUN のリストを生成します。以下に例を示します。virsh vol-list vhbapool_host3
# virsh vol-list vhbapool_host3 Name Path ------------------------------------------------------------------------------ unit:0:4:0 /dev/disk/by-path/pci-0000:10:00.0-fc-0x5006016844602198-lun-0 unit:0:5:0 /dev/disk/by-path/pci-0000:10:00.0-fc-0x5006016044602198-lun-0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 表示される LUN 名のリストは、仮想マシン設定でディスクボリュームとして使用できます。vHBALUN を仮想マシンに追加します
仮想マシンの XML で指定して、仮想マシン に vHBA LUN を追加します。<disk>パラメーターに、lunまたはdiskとしてデバイスタイプを指定し- は、
<source>パラメーターでソースデバイスを指定します。これは、/dev/sdaNとして入力することも、udev によって生成されたシンボリックリンクとして/dev/disk/by-path|by-id|by-uuid|by-labelとして入力することもできます。これは、virsh vol-list pool コマンドを実行することで見つけることができます。
以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.8.4. vHBA ストレージプールを破棄する リンクのコピーリンクがクリップボードにコピーされました!
virsh pool-destroy vhbapool_host3
# virsh pool-destroy vhbapool_host3
virsh nodedev-destroy scsi_host5
# virsh nodedev-destroy scsi_host5
virsh nodedev-list --cap scsi_host
# virsh nodedev-list --cap scsi_host
scsi_host5 結果のリストに表示されなくなります。
第13章 ボリューム リンクのコピーリンクがクリップボードにコピーされました!
13.1. ボリュームの作成 リンクのコピーリンクがクリップボードにコピーされました!
13.2. クローンボリューム リンクのコピーリンクがクリップボードにコピーされました!
--pool 引数が必要です。コマンドの残りの部分では、クローンを作成するボリューム (volume3) と、クローンを作成した新しいボリュームの名前 (clone1) を指定します。virsh vol-list コマンドは、ストレージプール (guest_images_disk) に存在するボリュームを一覧表示します。
13.3. ゲストへのストレージデバイスの追加 リンクのコピーリンクがクリップボードにコピーされました!
13.3.1. ゲストへのファイルベースストレージの追加 リンクのコピーリンクがクリップボードにコピーされました!
手順13.1 ファイルベースのストレージの追加
- ストレージファイルを作成するか、既存のファイル (IMG ファイルなど) を使用します。次のコマンドは両方とも、ゲストの追加ストレージとして使用できる 4GB のファイルを作成することに注意してください。
- ファイルベースのストレージイメージには、事前に割り当てられたファイルをお勧めします。次に示すように、次の dd コマンドを使用して、事前に割り当てられたファイルを作成します。
dd if=/dev/zero of=/var/lib/libvirt/images/FileName.img bs=1M count=4096
# dd if=/dev/zero of=/var/lib/libvirt/images/FileName.img bs=1M count=4096Copy to Clipboard Copied! Toggle word wrap Toggle overflow - または、事前に割り当てられたファイルの代わりにスパースファイルを作成します。スパースファイルははるかに高速に作成され、テストに使用できますが、データの整合性とパフォーマンスの問題があるため、実稼働環境にはお勧めしません。
dd if=/dev/zero of=/var/lib/libvirt/images/FileName.img bs=1M seek=4096 count=0
# dd if=/dev/zero of=/var/lib/libvirt/images/FileName.img bs=1M seek=4096 count=0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 新しいファイルに <disk> 要素を書き込んで、追加のストレージを作成します。この例では、このファイルは
NewStorage.xmlと呼ばれます。<disk>要素は、ディスクのソースと仮想ブロックデバイスのデバイス名を記述します。デバイス名は、ゲスト内のすべてのデバイスで一意である必要があり、ゲストが仮想ブロックデバイスを見つけるバスを識別します。次の例では、ソースがFileName.imgという名前のファイルベースのストレージコンテナーである virtio ブロックデバイスを定義しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow デバイス名は hd または sd で始めることもでき、それぞれ IDE と SCSI ディスクを識別します。設定ファイルには、新しいデバイスのバス上の位置を指定する<address>サブ要素を含めることもできます。virtio ブロックデバイスの場合、これは PCI アドレスである必要があります。<address>サブ要素を省略すると、libvirt は次に使用可能な PCI スロットを見つけて割り当てることができます。 - 次のように CD-ROM を接続します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NewStorage.xmlで定義されたデバイスをゲスト (Guest1) とともに追加します。virsh attach-device --config Guest1 ~/NewStorage.xml
# virsh attach-device --config Guest1 ~/NewStorage.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記この変更は、ゲストが破棄されて再起動された後にのみ適用されます。さらに、永続デバイスは、永続ドメイン、つまり virsh define コマンドで設定が保存されたドメインにのみ追加できます。ゲストが実行中で、ゲストが破棄されるまで新しいデバイスを一時的に追加する場合は、-configオプションを省略します。virsh attach-device Guest1 ~/NewStorage.xml
# virsh attach-device Guest1 ~/NewStorage.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記virsh コマンドを使用すると、XML ファイルを作成しなくても、より単純な構文で限られた数のパラメーターを設定できる attach-disk コマンドを使用できます。attach-disk コマンドは、次に示すように、前述の attach-device コマンドと同様の方法で使用されます。virsh attach-disk Guest1 /var/lib/libvirt/images/FileName.img vdb --cache none --driver qemu --subdriver raw
# virsh attach-disk Guest1 /var/lib/libvirt/images/FileName.img vdb --cache none --driver qemu --subdriver rawCopy to Clipboard Copied! Toggle word wrap Toggle overflow virsh attach-disk コマンドは--configオプションも受け入れることに注意してください。- ゲストマシンを起動します (現在実行されていない場合)。
virsh start Guest1
# virsh start Guest1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記次の手順は Linux ゲスト固有です。他のオペレーティングシステムは、さまざまな方法で新しいストレージデバイスを処理します。その他のシステムについては、そのオペレーティングシステムのドキュメントを参照してください。 ディスクドライブのパーティション分割
これで、ゲストには/dev/vdbというハードディスクデバイスがあります。。必要に応じて、このディスクドライブをパーティションに分割し、パーティションをフォーマットします。追加したデバイスが表示されない場合は、ゲストのオペレーティングシステムのディスクホットプラグに問題があることを示しています。- 新しいデバイスの fdisk を起動します。
fdisk /dev/vdb
# fdisk /dev/vdb Command (m for help):Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 新しいパーティションのために、
nと入力します。 - 次のように表示されます。
Command action e extended p primary partition (1-4)
Command action e extended p primary partition (1-4)Copy to Clipboard Copied! Toggle word wrap Toggle overflow プライマリーパーティションには、pと入力します。 - 使用可能なパーティション番号を選択します。この例では、
1を入力して、最初のパーティションを選択します。Partition number (1-4): 1
Partition number (1-4): 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow Enterを押して、デフォルトの最初のシリンダーを入力します。First cylinder (1-400, default 1):
First cylinder (1-400, default 1):Copy to Clipboard Copied! Toggle word wrap Toggle overflow - パーティションのサイズを選択します。この例では、Enter を押してディスク全体を割り当てます。
Last cylinder or +size or +sizeM or +sizeK (2-400, default 400):
Last cylinder or +size or +sizeM or +sizeK (2-400, default 400):Copy to Clipboard Copied! Toggle word wrap Toggle overflow - t を入力して、パーティションタイプを設定します。
Command (m for help): t
Command (m for help): tCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 前の手順で作成したパーティションを選択します。この例では、パーティションが 1 つしか作成されておらず、fdisk がパーティション 1 を自動的に選択したため、パーティション番号は 1 です。
Partition number (1-4): 1
Partition number (1-4): 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Linux パーティションの場合は 83 と入力します。
Hex code (type L to list codes): 83
Hex code (type L to list codes): 83Copy to Clipboard Copied! Toggle word wrap Toggle overflow - w と入力して変更を書き込み、終了します。
Command (m for help): w
Command (m for help): wCopy to Clipboard Copied! Toggle word wrap Toggle overflow ext3ファイルシステムで新しいパーティションをフォーマットします。mke2fs -j /dev/vdb1
# mke2fs -j /dev/vdb1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- マウントディレクトリーを作成し、ゲストにディスクをマウントします。この例では、ディレクトリーは myfiles にあります。
mkdir /myfiles mount /dev/vdb1 /myfiles
# mkdir /myfiles # mount /dev/vdb1 /myfilesCopy to Clipboard Copied! Toggle word wrap Toggle overflow これで、ゲストは追加の仮想化されたファイルベースのストレージデバイスを使用できます。ただし、ゲストの/etc/fstabファイルで定義されていない限り、このストレージは再起動後に永続的にマウントされないことに注意してください。/dev/vdb1 /myfiles ext3 defaults 0 0
/dev/vdb1 /myfiles ext3 defaults 0 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
13.3.2. ゲストへのハードドライブおよびその他のブロックデバイスの追加 リンクのコピーリンクがクリップボードにコピーされました!
手順13.2 ゲストへの物理ブロックデバイスの追加
- この手順では、ホスト物理マシン上のハードドライブをゲストに追加する方法について説明します。これは、CD-ROM、DVD、フロッピーデバイスを含むすべての物理ブロックデバイスに適用されます。ハードディスクデバイスをホストの物理マシンに物理的に接続します。ドライブにデフォルトでアクセスできない場合は、ホスト物理マシンを設定します。
- 次のいずれかを行います。
- 新しいファイルに disk 要素を書き込んで、追加のストレージを作成します。この例では、このファイルは
NewStorage.xmlと呼ばれます。次の例は、ホスト物理マシンパーティション/dev/sr0用の追加のデバイスベースのストレージコンテナーを含む設定ファイルセクションです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 前のセクションの手順に従って、デバイスをゲスト仮想マシンに接続します。または、
virsh attach-disk示されているように、コマンド:virsh attach-disk Guest1 /dev/sr0 vdc
# virsh attach-disk Guest1 /dev/sr0 vdcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のオプションが使用可能であることに注意してください。- virsh attach-disk コマンドは、図のように
--config、--type、および--modeオプションも受け付けます。virsh attach-disk Guest1 /dev/sr0 vdc --config --type cdrom --mode readonly
# virsh attach-disk Guest1 /dev/sr0 vdc --config --type cdrom --mode readonlyCopy to Clipboard Copied! Toggle word wrap Toggle overflow - さらに、
--type、デバイスがハードディスクの場合は、--type diskも受け付けます。
- ゲスト仮想マシンには、Linux では
/dev/vdc(またはゲスト仮想マシン OS が選択するものに応じて同様のもの) または Windows ではD: drive(たとえば) と呼ばれる新しいハードディスクデバイスがあります。これで、ゲスト仮想マシンのオペレーティングシステムの標準手順に従って、ゲスト仮想マシンからディスクを初期化できます。例は、手順13.1「ファイルベースのストレージの追加」 を参照してください。警告ゲストにブロックデバイスを追加するときは、セキュリティー上の考慮事項に必ず従ってください。この情報については、『Red Hat Enterprise Linux 仮想化セキュリティーガイド』 を参照してください。https://access.redhat.com/site/documentation/。重要ゲスト仮想マシンには、ディスク全域、またはブロックデバイス全域 (例:/dev/sdb) への書き込みアクセス権を付与しないでください。ブロックデバイス全域にアクセスを持つゲスト仮想マシンは、ボリュームラベルを修正できる場合があり、これがホスト物理マシンシステムの攻撃に使用される可能性があります。パーティション (例:/dev/sdb1) または LVM ボリュームを使用して、この問題を回避してください。
13.4. ボリュームの削除と削除 リンクのコピーリンクがクリップボードにコピーされました!
virsh vol-delete --pool guest_images volume1
# virsh vol-delete --pool guest_images volume1
Vol volume1 deleted
第14章 virsh を使用したゲスト仮想マシンの管理 リンクのコピーリンクがクリップボードにコピーされました!
14.1. 一般的なコマンド リンクのコピーリンクがクリップボードにコピーされました!
14.1.1. help リンクのコピーリンクがクリップボードにコピーされました!
14.1.2. 終了して終了します リンクのコピーリンクがクリップボードにコピーされました!
virsh exit
$ virsh exit
virsh quit
$ virsh quit
14.1.3. version リンクのコピーリンクがクリップボードにコピーされました!
14.1.4. 引数の表示 リンクのコピーリンクがクリップボードにコピーされました!
--shell オプションを使用すると、出力は必要に応じて一重引用符で囲まれるため、シェルコマンドでの再利用に適しています。--xml オプションを使用すると、出力は XML ファイルでの使用に適したものになります。たとえば、virsh echo --shell "hello world" というコマンドは、出力 'hello world' を送信します。
14.1.5. connect リンクのコピーリンクがクリップボードにコピーされました!
- xen:/// - ローカルの Xen ハイパーバイザーに接続します。
- qemu:///system- ルートとしてローカルで QEMU および KVM ドメインを監視するデーモンに接続します。
- xen:///session- ユーザーとしてローカルでユーザーの QEMU および KVM ドメインのセットに接続します。
- lxc:/// - ローカルの Linux コンテナーに接続します。
virsh connect {name|URI}
$ virsh connect {name|URI}
{name} は、ハイパーバイザーのマシン名 (ホスト名) または URL (virsh uri コマンドの出力) です。読み取り専用接続を開始するには、上記のコマンドに --readonly を追加します。URI の詳細については、リモート URI を参照してください。URI がわからない場合は、virsh uri コマンドを実行すると以下のようなメッセージが表示されます。
virsh uri
$ virsh uri
qemu:///session
14.1.6. 基本情報の表示 リンクのコピーリンクがクリップボードにコピーされました!
- $ hostname- ハイパーバイザーのホスト名を表示します
- $ sysinfo- 利用可能な場合、ハイパーバイザーのシステム情報の XML 表現を表示します
14.1.7. NMI の挿入 リンクのコピーリンクがクリップボードにコピーされました!
virsh inject-nmi guest-1
$ virsh inject-nmi guest-1
14.2. virsh を使用したデバイスの接続および更新 リンクのコピーリンクがクリップボードにコピーされました!
手順14.1 ゲスト仮想マシンが使用するホットプラグ USB デバイス
- 次のコマンドを使用して、接続する USB デバイスを見つけます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - XML ファイルを作成し、論理名 (
usb_device.xmlなど) を付けます。検索で表示されたとおりにベンダー ID と製品 ID をコピーしてください。図14.1 USB デバイスの XML スニペット
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 次のコマンドでデバイスを接続します。
virsh attach-device rhel6 --file usb_device.xml --config
# virsh attach-device rhel6 --file usb_device.xml --configCopy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、rhel6 はゲスト仮想マシンの名前であり、usb_device.xml は前の手順で作成したファイルです。次回の再起動時に変更を有効にする場合は、--configオプションを使用します。この変更を永続的にする場合は、--persistentオプションを使用します。変更を現在のドメインで有効にする場合は、--currentオプションを使用します。詳細については、Virsh の man ページを参照してください。 - デバイスを切り離す (ホットアンプラグ) 場合は、次のコマンドを実行します。
virsh detach-device rhel6 --file usb_device.xml
# virsh detach-device rhel6 --file usb_device.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、rhel6 はゲスト仮想マシンの名前であり、usb_device.xml は前の手順で添付したファイルです。
14.3. インターフェイスデバイスの接続 リンクのコピーリンクがクリップボードにコピーされました!
--live-- 実行中のドメインから値を取得します--config- システムの次回起動時に使用する値を取得します。--current-- 現在のドメインの状態に応じて値を取得します--persistent-- オフラインドメインの場合は--configのように動作し、実行中のドメインの場合は--liveのように動作します。--target- ゲスト仮想マシンのターゲットデバイスを示します。--mac-- これを使用して、ネットワークインターフェイスの MAC アドレスを指定します--script- これは、デフォルトのパスの代わりに、ブリッジを処理するスクリプトファイルへのパスを指定します。--model-- これを使用してモデルタイプを指定します。--inbound- インターフェイスの着信帯域幅を制御します。指定できる値は、average、peak、およびburstです。--outbound- インターフェイスのアウトバウンド帯域幅を制御します。指定できる値は、average、peak、およびburstです。
network、またはデバイスへの bridge を示すブリッジのいずれかです。source はデバイスのソースです。接続したデバイスを削除する場合は、virsh detach-device を実行します。
14.4. CDROM のメディアの変更 リンクのコピーリンクがクリップボードにコピーされました!
change-media domain path source --eject --insert --update --current --live --config --force
# change-media domain path source --eject --insert --update --current --live --config --force
--path- ディスクデバイスの完全修飾パスまたはターゲットが含まれる文字列--source- メディアのソースが含まれる文字列--eject-- メディアを排出します--insert- メディアを挿入します--update-- メディアを更新します--current---liveおよび--configのいずれかまたは両方を指定できます。これは、ハイパーバイザードライバーの実装に依存します。--live-- 実行中のドメインのライブ設定を変更します--config-- 永続的な設定を変更し、次回の起動時に影響が観察されます--force-- メディアの変更を強制します
14.5. ドメインコマンド リンクのコピーリンクがクリップボードにコピーされました!
14.5.1. 起動時に自動的に開始されるドメインの設定 リンクのコピーリンクがクリップボードにコピーされました!
--disable オプションを使用すると、自動起動が無効になります。
virsh autostart rhel6
# virsh autostart rhel6
virsh autostart rhel6 --disable
# virsh autostart rhel6 --disable
14.5.2. ゲスト仮想マシンのシリアルコンソールの接続 リンクのコピーリンクがクリップボードにコピーされました!
--force オプションは、コンソール接続を強制するか、disconnect と一緒に使用すると、接続を切断します。--safe オプションを使用すると、安全なコンソール処理がサポートされている場合にのみゲストが接続できます。
virsh console virtual_machine --safe
$ virsh console virtual_machine --safe
14.5.3. XML ファイルを使用したドメインの定義 リンクのコピーリンクがクリップボードにコピーされました!
14.5.4. ドメインの説明とタイトルの編集と表示 リンクのコピーリンクがクリップボードにコピーされました!
virsh desc [domain-name] [[--live] [--config] | [--current]] [--title] [--edit] [--new-desc New description or title message]
# virsh desc [domain-name] [[--live] [--config] | [--current]] [--title] [--edit] [--new-desc New description or title message]
--live または --config は、このコマンドがドメインのライブ定義または永続定義のどちらで機能するかを選択します。--live と --config の両方が指定されている場合、最初に --config オプションが実装され、コマンドに入力された説明が、ライブ設定と永続設定設定の両方に適用される新しい設定設定になります。--current オプションは、現在の状態の設定を変更または取得し、永続的ではありません。--live、--config、--current の いずれも指定されていない場合、--current オプションが使用されます。--edit オプションは、現在の説明またはタイトルの内容を含むエディターを開き、内容を後で保存することを指定します。--title オプションを使用すると、ドメインのタイトルフィールドのみが表示または変更され、説明は含まれません。また、コマンドで --edit も --new-desc も使用されていない場合は、説明のみが表示され、変更できません。
virsh desc testvm --current --title TestVM-4F --new-desc Guest VM on fourth floor
$ virsh desc testvm --current --title TestVM-4F --new-desc Guest VM on fourth floor
14.5.5. デバイスブロック統計の表示 リンクのコピーリンクがクリップボードにコピーされました!
--human オプションを使用します。
14.5.6. ネットワーク統計の取得 リンクのコピーリンクがクリップボードにコピーされました!
domifstat rhel6 eth0
# domifstat rhel6 eth0
14.5.7. ドメインの仮想インターフェイスのリンク状態の変更 リンクのコピーリンクがクリップボードにコピーされました!
domif-setlink [domain][interface-device][state]{--config}
# domif-setlink [domain][interface-device][state]{--config}
--config オプションを使用する必要があることに注意してください。互換性の理由から、--persistent は --config のエイリアスであることに注意してください。interface device は、インターフェイスのターゲット名または MAC アドレスにすることができます。
domif-setlink rhel6 eth0 up
# domif-setlink rhel6 eth0 up
14.5.8. ドメインの仮想インターフェイスのリンク状態の一覧表示 リンクのコピーリンクがクリップボードにコピーされました!
--config オプションを使用する必要があることに注意してください。互換性の理由から、--persistent は --config のエイリアスであることに注意してください。interface device は、インターフェイスのターゲット名または MAC アドレスにすることができます。
domif-getlink rhel6 eth0 up
# domif-getlink rhel6 eth0 up
14.5.9. ネットワークインターフェイスの帯域幅パラメーターの設定 リンクのコピーリンクがクリップボードにコピーされました!
#virsh domiftune domain interface-device [[--config] [--live] | [--current]] [--inbound average,peak,burst] [--outbound average,peak,burst]
#virsh domiftune domain interface-device [[--config] [--live] | [--current]] [--inbound average,peak,burst] [--outbound average,peak,burst]
--config、--live、--current の機能は 「スケジュールパラメーターの設定」 と同じです。制限が指定されていない場合は、現在のネットワークインターフェイス設定をクエリーします。それ以外の場合は、以下のオプションで制限を変更します。
- <interface-device> これは必須であり、ドメインのネットワークインターフェイスの帯域幅パラメーターを設定またはクエリーします。interface-device は、インターフェイスのターゲット名 (<target dev='name'/>) または MAC アドレスにすることができます。
--inboundまたは--outboundが指定されていない場合、このコマンドは帯域幅設定をクエリーして表示します。それ以外の場合は、インバウンドまたはアウトバウンドの帯域幅を設定します。average、peak、burst は、attach-interface コマンドの場合と同じです。「インターフェイスデバイスの接続」 を参照してください。
14.5.10. 実行中のドメインのメモリー統計の取得 リンクのコピーリンクがクリップボードにコピーされました!
--period オプションを使用するには、秒単位の期間が必要です。このオプションを 0 より大きい値に設定すると、バルーンドライバーは追加の統計を返します。これは、後続の domemstat コマンドにより表示されます。--period オプションを 0 に設定すると、バルーンドライバーの収集は停止しますが、バルーンドライバーの統計情報はクリアされません。バルーンドライバーの収集期間を設定するために --period オプションも設定しないと、--live、--config、--current オプションを使用することはできません。--live オプションが指定されている場合、実行中のゲストの収集期間のみが影響を受けます。--config オプションを使用すると、永続ゲストの次回の起動に影響します。--current オプションを使用すると、現在のゲストの状態に影響します
--live オプションおよび --config オプションの両方を使用できますが、--current は使用できません。オプションが指定されていない場合、ゲストの状態によって動作が異なります。
#virsh domemstat rhel6 --current
#virsh domemstat rhel6 --current
14.5.11. ブロックデバイスのエラーの表示 リンクのコピーリンクがクリップボードにコピーされました!
virsh domblkerror rhel6
# virsh domblkerror rhel6
14.5.12. ブロックデバイスのサイズの表示 リンクのコピーリンクがクリップボードにコピーされました!
virsh domblkinfo rhel6
# virsh domblkinfo rhel6
14.5.13. ドメインに関連付けられたブロックデバイスの表示 リンクのコピーリンクがクリップボードにコピーされました!
--inactive --details は、指定されたドメインに関連付けられているすべてのブロックデバイスのテーブルを表示します。
--inactive を指定すると、次回のシステムの起動時に使用されるデバイスが結果に表示されます。また、ドメインで現在使用中のデバイスは表示されません。--details を指定すると、ディスクのタイプとデバイス値がテーブルに含まれます。この表に表示される情報は、 domblkinfo および snapshot-create で使用できます。
#domblklist rhel6 --details
#domblklist rhel6 --details
14.5.14. ドメインに関連付けられた仮想インターフェイスの表示 リンクのコピーリンクがクリップボードにコピーされました!
--inactive オプションを使用できます。
--inactive を指定すると、次回のシステムの起動時に使用されるデバイスが結果に表示されます。また、ドメインで現在使用中のデバイスは表示されません。
14.5.15. blockcommit を使用してバッキングチェーンを短縮する リンクのコピーリンクがクリップボードにコピーされました!
base ← snap1 ← snap2 ← active.
base ← snap1 ← snap2 ← active.
手順14.2 virsh blockcommit
- 以下のコマンドを実行します。
virsh blockcommit $dom $disk -base snap1 -top snap2 -wait -verbose
# virsh blockcommit $dom $disk -base snap1 -top snap2 -wait -verboseCopy to Clipboard Copied! Toggle word wrap Toggle overflow snap2 の内容が snap1 に移動し、以下のような結果になります。base ← snap1 ← active.Snap2 が無効になり、削除できるようになりました。警告blockcommit は-baseオプションに依存するすべてのファイルを破壊します (-topオプションに依存するファイル以外は、それらのファイルがベースを指すようになったため)。これを回避するには、複数のゲストが共有するファイルに変更をコミットしないでください。-verboseオプションにより、進捗状況を画面上に出力することができます。
14.5.16. ブロックプルを使用してバッキングチェーンを短縮する リンクのコピーリンクがクリップボードにコピーされました!
- バッキングイメージチェーンからのデータをイメージに入力して、イメージをフラット化します。これにより、イメージファイルは自己完結型になり、背面イメージに依存しなくなり、以下のようになります。
- 前: base.img ← Active
- 後: base.img がゲストで使用されなくなり、Active にすべてのデータが含まれるようになりました。
- バッキングイメージチェーンの一部を平坦化します。これを使用すると、スナップショットをトップレベルイメージに平坦化し、以下のようになります。
- 前: base ← sn1 ←sn2 ← active
- 後: base.img ← active.アクティブには、sn1 および sn2 のすべてのデータが含まれるようになりました。また、ゲストでは sn1 も sn2 も使用されないことに注意してください。
- ディスクイメージを、ホストの新しいファイルシステムに移動します。これにより、ゲストの実行中にイメージファイルを移動できます。以下のようになります。
- 前 (元のイメージファイル) -
/fs1/base.vm.img - 後:
/fs2/active.vm.qcow2が新しいファイルシステムになり、/fs1/base.vm.imgが使用されなくなります。
- コピー後のストレージ移行を使用したライブマイグレーションに役立ちます。ディスクイメージは、ライブマイグレーションの完了後に、移行元ホストから移行先ホストにコピーされます。要するに、こういうことです: 前:
/source-host/base.vm.img後:/destination-host/active.vm.qcow2。/source-host/base.vm.imgは使用されなくなりました。
手順14.3 ブロックプルを使用してバッキングチェーンを短縮する
- blockpull を実行する前にこのコマンドを実行すると役立つ場合があります。
virsh snapshot-create-as $dom $name - disk-only
# virsh snapshot-create-as $dom $name - disk-onlyCopy to Clipboard Copied! Toggle word wrap Toggle overflow - チェーンが次のようになっている場合: base ← snap1 ← snap2 ← active 次を実行します。
virsh blockpull $dom $disk snap1
# virsh blockpull $dom $disk snap1Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、snap2 からデータをアクティブにプルすることで、snap1 のバッキングファイルをアクティブな状態にします。その結果、base ← snap1 ← active になります。 - blockpullが完了すると、チェーンに追加イメージを作成したスナップショットのlibvirt追跡は役に立ちなくなります。次のコマンドを使用して、古いスナップショットの追跡を削除します。
virsh snapshot-delete $dom $name - metadata
# virsh snapshot-delete $dom $name - metadataCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 単一のイメージをフラット化し、そのバッキングイメージチェーンからのデータを取り込むには: # virsh blockpull example-domain vda - wait
- バッキングイメージチェーンの一部をフラット化するには: # virsh blockpull example-domain vda - base /path/to/base.img - wait
- ディスクイメージをホスト上の新しいファイルシステムに移動するには: # virsh snapshot-create example-domaine - xmlfile /path/to/new.xml - disk-only に続いて # virsh blockpull example-domain vda - wait
- コピー後のストレージ移行でライブ移行を使用する
- destination 実行時:
qemu-img create -f qcow2 -o backing_file=/source-host/vm.img /destination-host/vm.qcow2
# qemu-img create -f qcow2 -o backing_file=/source-host/vm.img /destination-host/vm.qcow2Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ソース実行時:
virsh migrate example-domain
# virsh migrate example-domainCopy to Clipboard Copied! Toggle word wrap Toggle overflow - destination 実行時:
virsh blockpull example-domain vda - wait
# virsh blockpull example-domain vda - waitCopy to Clipboard Copied! Toggle word wrap Toggle overflow
14.5.17. blockresize を使用してドメインパスのサイズを変更する リンクのコピーリンクがクリップボードにコピーされました!
- 次のコマンドを実行します: blockresize [domain] [path size]。ここで、
- Domain は、サイズを変更するドメインの一意のターゲット名またはソースファイルです
- Path size はスケーリングされた整数であり、接尾辞がない場合、デフォルトで KiB (1024 バイトのブロック) になります。バイトには B の接尾辞を使用する必要があります。
14.5.18. ライブブロックコピーを使用したディスクイメージ管理 リンクのコピーリンクがクリップボードにコピーされました!
- ゲストイメージをローカルストレージから中央の場所に移動する
- メンテナーンスが必要な場合、パフォーマンスを損なうことなく、ゲストを別の場所に移動できます
- 速度と効率のためにゲストイメージの管理を可能にします
- ゲストをシャットダウンせずにイメージ形式の変換を行うことができます
例14.1 ライブブロックコピーを使用した例
- 最初のバッキングファイルチェーンは次のようになります。base ← sn1 ← sn2コンポーネントは以下のとおりです。
- ベース - 元のディスクイメージ
- sn1 - ベースディスクイメージから取得された最初のスナップショット
- sn2 - 最新のスナップショット
- アクティブ - ディスクのコピー
- イメージのコピーが sn2 の上に新しいイメージとして作成されると、結果は次のようになります。base ← sn1 ← sn2 ← active
- この時点で、読み取り権限はすべて正しい順序であり、自動的に設定されます。書き込み権限が適切に設定されていることを確認するために、ミラーメカニズムはすべての書き込みを sn2 とアクティブの両方にリダイレクトし、sn2 とアクティブがいつでも同じように読み取るようにします (このミラーメカニズムは、ライブブロックコピーとイメージストリーミングの本質的な違いです)。
- すべてのディスククラスターをループするバックグラウンドタスクが実行されます。クラスターごとに、次のケースとアクションが考えられます。
- クラスターはすでにアクティブに割り当てられており、何もする必要はありません。
- bdrv_is_allocated() を使用して、バッキングファイルチェーンを追跡します。クラスターが (共有されている) ベースから読み取られる場合、何もする必要はありません。
- bdrv_is_allocated() バリアントが実行可能でない場合は、イメージをリベースし、読み取りデータをベースの書き込みデータと比較して、コピーが必要かどうかを判断します。
- 他のすべての場合は、クラスターを
activeにコピーします
- コピーが完了すると、アクティブのバッキングファイルがベースに切り替えられます (リベースと同様)
14.5.19. グラフィック表示への接続の URI の表示 リンクのコピーリンクがクリップボードにコピーされました!
--include-password オプションを使用すると、SPICE チャネルのパスワードが URI に含まれます。
14.5.20. ドメイン取得コマンド リンクのコピーリンクがクリップボードにコピーされました!
- virsh domhostname domain は、ハイパーバイザーが公開できる場合、指定されたドメインのホスト名を表示します。
- virsh dominfo domain は、指定されたドメインに関する基本情報を表示します。
- virsh domuid domain|ID は、指定されたドメイン名または ID を UUID に変換します。
- virsh domid domain|ID は、指定されたドメイン名または UUID を ID に変換します。
- virsh domjobabort domain は、指定されたドメインで現在実行中のジョブを中止します。
- virsh domjobinfo domain は、移行統計情報など、指定されたドメインで実行されているジョブに関する情報を表示します
- virsh domname domain ID|UUID は、指定されたドメイン ID または UUID をドメイン名に変換します。
- virsh domstate domain は、指定されたドメインの状態を表示します。
--reasonオプションを使用すると、表示された状態の理由も表示されます。 - virsh domcontrol domain は、ドメインの制御に使用された VMM へのインターフェイスの状態を表示します。OK でも Error でもない状態の場合は、制御インターフェイスが表示状態に入ってから経過した秒数も出力されます。
例14.2 統計的フィードバックの例
14.5.21. QEMU 引数のドメイン XML への変換 リンクのコピーリンクがクリップボードにコピーされました!
virsh domxml-from-native qemu-argv demo.args
$ virsh domxml-from-native qemu-argv demo.args
14.5.22. ドメインのコアのダンプファイルの作成 リンクのコピーリンクがクリップボードにコピーされました!
--bypass-cache --live |--crash |--reset --verbose --memory-only を実行すると、ドメインコアが corefilepath で指定されたファイルにダンプされます。一部のハイパーバイザーが提供する場合があることに注意してください。このアクションに対する制限があり、corefilepath パラメーターで指定されたファイルとパスに対する適切なアクセス許可を手動で確認する必要がある場合があります。このコマンドは、SR-IOV デバイスやその他のパススルーデバイスでサポートされます。次のオプションがサポートされており、次の効果があります。
--bypass-cache保存されたファイルには、ファイルシステムキャッシュは含まれません。このオプションを選択すると、ダンプ操作が遅くなる可能性があることに注意してください。--liveは、ドメインの実行を継続するときにファイルを保存し、ドメインを一時停止または停止しません。--crashは、ダンプファイルの保存中にドメインを一時停止状態のままにするのではなく、クラッシュ状態にします。--resetダンプファイルが正常に保存されると、ドメインがリセットされます。--verboseは、ダンププロセスの進捗を表示します。--memory-onlyダンプファイルに保存される情報は、ドメインのメモリーと CPU 共通レジスタファイルのみです。
14.5.23. 仮想マシンの XML ダンプの作成 (設定ファイル) リンクのコピーリンクがクリップボードにコピーされました!
virsh dumpxml {guest-id, guestname or uuid}
# virsh dumpxml {guest-id, guestname or uuid}
virsh dumpxml GuestID > guest.xml
# virsh dumpxml GuestID > guest.xml
guest.xml は、ゲスト仮想マシンを再作成できます (参照 「ゲスト仮想マシンの設定ファイルの編集」。この XML 設定ファイルを編集して、追加のデバイスを設定したり、追加のゲスト仮想マシンをデプロイしたりできます。
14.5.24. 設定ファイルからのゲスト仮想マシンの作成 リンクのコピーリンクがクリップボードにコピーされました!
virsh create configuration_file.xml
# virsh create configuration_file.xml
14.6. ゲスト仮想マシンの設定ファイルの編集 リンクのコピーリンクがクリップボードにコピーされました!
rhel6 という名前のゲスト仮想マシンを編集するには、以下を実行します。
virsh edit rhel6
# virsh edit rhel6
14.6.1. KVM ゲスト仮想マシンへの複合 PCI デバイスの追加 リンクのコピーリンクがクリップボードにコピーされました!
- virsh edit [guestname] コマンドを実行して、ゲスト仮想マシンの XML 設定ファイルを編集します。
- アドレスタイプタグに、function='0x0' の multifunction='on' エントリーを追加します。これにより、ゲスト仮想マシンで多機能 PCI デバイスを使用できるようになります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 2 つの機能を持つ PCI デバイスの場合は、XML 設定ファイルを修正して、最初のデバイスと同じスロット番号と、別の機能番号 (function='0x1' など) を持つ 2 番目のデバイスを追加します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - KVM ゲスト仮想マシンからの lspci 出力は次のことを示しています。
lspci
$ lspci 00:05.0 SCSI storage controller: Red Hat, Inc Virtio block device 00:05.1 SCSI storage controller: Red Hat, Inc Virtio block deviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
14.6.2. 実行中のドメインを停止して後で再起動する リンクのコピーリンクがクリップボードにコピーされました!
--bypass-cache --running | --paused | --verbose は、実行中のドメインを保存および破棄 (停止) して、後で同じ状態から再起動できるようにします。virsh start コマンドと併用すると、この保存ポイントから自動的に開始されます。--bypass-cache オプションとともに使用すると、保存によってファイルシステムのキャッシュが回避されます。このオプションを使用すると、保存プロセスの速度が低下する可能性があることに注意してください。
--verbose は、ダンププロセスの進捗を表示します。
--running オプションを使用して、実行状態のままにする必要があることを示したり、--paused オプションを使用して、一時停止状態のままにすることを示したりして上書きできます。
14.6.3. 指定されたドメインの CPU 統計情報の表示 リンクのコピーリンクがクリップボードにコピーされました!
--total start count コマンドは、指定されたドメインの CPU 統計情報を提供します。デフォルトでは、すべての CPU の統計および合計が表示されます。--total オプションは、合計統計のみを表示します。
14.6.4. スクリーンショットの保存 リンクのコピーリンクがクリップボードにコピーされました!
--screen を使用して画面 ID を指定すると、キャプチャする画面を指定できます。複数のグラフィックカードがあり、デバイスの前にヘッドが番号付けされている場合、画面 ID5 は 2 番目のカードの 2 番目のヘッドをアドレス指定します。
14.6.5. 指定されたドメインへのキーストロークの組み合わせの送信 リンクのコピーリンクがクリップボードにコピーされました!
--codeset --holdtime keycode を使用すると、シーケンスを keycode として特定のドメインに送信できます。
virsh send-key rhel6 --holdtime 1000 0xf
# virsh send-key rhel6 --holdtime 1000 0xf
--holdtime を指定すると、各キーストロークは指定した時間 (ミリ秒単位) 保持されます。--codeset ではコードセットを指定できます。デフォルトは Linux ですが、以下のオプションを使用できます。
linux- このオプションを選択すると、シンボリック名が対応する Linux キー定数マクロ名に一致するようになります。数値は、Linux 汎用入力イベントサブシステムが提供するものになります。xt- XT キーボードコントローラーで定義する値を送信します。シンボリック名は記載されていません。atset1- 数値は、AT キーボードコントローラー、set1 (XT 互換セット) で定義されるものです。atset1 から拡張されたキーコードは、XT コードセットの拡張キーコードとは異なる場合があります。シンボリック名は記載されていません。atset2- 数値は、AT キーボードコントローラー、set 2 で定義されるものです。シンボリック名は記載されていません。atset3- 数値は、AT キーボードコントローラー、set 3 (PS/2 互換) で定義されるものです。シンボリック名は記載されていません。os_x- 数値は、OS-X キーボード入力サブシステムで定義されるものです。シンボリック名は、対応する OS-X の鍵定数マクロ名と一致します。xt_kbd- 数値は、Linux KBD デバイスーで定義されるものです。これは、元の XT コードセットのバリアントですが、拡張キーコードのエンコードが異なります。シンボリック名は記載されていません。win32- 数値は、Win32 キーボード入力サブシステムで定義されるものです。シンボリック名は、対応する Win32 鍵定数マクロ名と一致します。usb- 数値は、キーボード入力の USB HID で定義されるものです。シンボリック名は記載されていません。rfb- 数値は、raw キーコードを送信するために RFB 拡張で定義されるものです。これは XT コードセットのバリアントですが、拡張キーコードでは、最初のバイトの上位ビットではなく、2 番目のビットセットの下位ビットが使用されます。シンボリック名は記載されていません。
14.6.6. プロセス信号名を仮想プロセスに送信する リンクのコピーリンクがクリップボードにコピーされました!
virsh send-process-signal rhel6 187 kill virsh send-process-signal rhel6 187 9
# virsh send-process-signal rhel6 187 kill
# virsh send-process-signal rhel6 187 9
14.6.7. VNC ディスプレイの IP アドレスとポート番号の表示 リンクのコピーリンクがクリップボードにコピーされました!
virsh vncdisplay rhel6
# virsh vncdisplay rhel6
127.0.0.1:0
14.7. NUMA ノード管理 リンクのコピーリンクがクリップボードにコピーされました!
14.7.1. ノード情報の表示 リンクのコピーリンクがクリップボードにコピーされました!
14.7.2. NUMA パラメーターの設定 リンクのコピーリンクがクリップボードにコピーされました!
<numatune> 要素内にネストされています。オプションを使用しない場合は、現在の設定のみが表示されます。numatune domain コマンドには指定されたドメインが必要であり、次のオプションを選択できます。
--mode- モードは、strict、インターリーブ、または推奨のいずれかに設定できます。実行中のドメインは、ドメインがstrictモードで開始されていない限り、ライブ中にモードを変更することはできません。--nodesetには、ドメインを実行するためにホスト物理マシンによって使用される NUMA ノードのリストが含まれています。この一覧には、それぞれがコンマで区切られたノードが含まれ、ノード範囲に使用されるダッシュ-と、ノードの除外に使用されるカレット^も含まれています。- インスタンスごとに使用できるオプションは、次の 3 つのうち 1 つだけです。
--configは、永続ゲスト仮想マシンの次回の起動時に有効になります。--liveは、実行中のゲスト仮想マシンのスケジューラー情報を設定します。--currentは、ゲスト仮想マシンの現在の状態に影響を及ぼします。
14.7.3. NUMA セルの空きメモリー量の表示 リンクのコピーリンクがクリップボードにコピーされました!
--all オプションを使用すると、各セルの空きメモリーとマシンの合計空きメモリーが表示されます。数値引数を使用するか、セル番号とともに --cellno オプションを使用すると、指定したセルの空きメモリーが表示されます。
14.7.4. CPU リストの表示 リンクのコピーリンクがクリップボードにコピーされました!
virsh nodecpumap
$ virsh nodecpumap
CPUs present: 4
CPUs online: 1
CPU map: y
14.7.5. CPU 統計の表示 リンクのコピーリンクがクリップボードにコピーされました!
14.7.6. ホスト物理マシンの一時停止 リンクのコピーリンクがクリップボードにコピーされました!
--target オプションは、次のいずれかに設定できます。mem、disk、またhybrid。これらのオプションは、メモリー、ディスク、または 2 つの組み合わせを一時停止するように設定することを示します。--duration を設定すると、設定した期間が終了した後に起動するようにホスト物理マシンに指示します。秒単位で設定されます。継続時間は 60 秒より長くすることをお勧めします。
virsh nodesuspend disk 60
$ virsh nodesuspend disk 60
14.7.7. ノードメモリーパラメーターの設定および表示 リンクのコピーリンクがクリップボードにコピーされました!
- shm-pages-to-scan - 共有メモリーサービスがスリープ状態になる前にスキャンするページ数を設定します。
- shm-sleep-milisecs - 次のスキャンの前に共有メモリーサービスがスリープするミリ秒数を設定します
- shm-merge-across-nodes - 別の NUMA ノードのページをマージできるかどうかを指定します。許可される値は
0と1です。0に設定すると、マージ可能なページのみが、同じ NUMA ノードのメモリー領域に存在するページのみです。1に設定すると、全 NUMA ノードのページをマージすることができます。デフォルト設定は次のとおりです1。
14.7.8. ホストノードでのデバイスの作成 リンクのコピーリンクがクリップボードにコピーされました!
<デバイス> の XML の説明が含まれている必要があります。
14.7.9. ノードデバイスの切り離し リンクのコピーリンクがクリップボードにコピーされました!
<hostdev> パススルーを介してゲストが安全に使用できるようにします。このアクションは nodedev-reattach コマンドで元に戻すことができますが、マネージドサービスでは自動的に実行されます。このコマンドは、nodedev-dettach も受け入れます。
--driver オプションを使用すると、目的のバックエンドドライバーを指定できます。
14.7.10. デバイスの設定設定の取得 リンクのコピーリンクがクリップボードにコピーされました!
<デバイス>の XML 設定ファイルをダンプします。XML 設定には、デバイス名、たとえばデバイスを所有するバス、ベンダー、製品 ID などの情報が含まれます。引数の device は、デバイス名にすることも、WWNN | WWPN 形式の WWN の組み合わせにすることもできます (HBA のみ)。
14.7.11. ノード上のデバイスの一覧表示 リンクのコピーリンクがクリップボードにコピーされました!
--tree コマンドは、libvirt によって認識されているノードで使用可能なすべてのデバイスを一覧表示します。cap は、機能タイプでリストをフィルターリングするために使用されます。各タイプはコンマで区切られ、--tree と一緒に使用することはできません。--tree オプションを使用すると、次のように出力がツリー構造になります。
14.7.12. ノードのリセットのトリガー リンクのコピーリンクがクリップボードにコピーされました!
14.8. ゲスト仮想マシンの起動、一時停止、再開、保存、および復元 リンクのコピーリンクがクリップボードにコピーされました!
14.8.1. 定義済みドメインの開始 リンクのコピーリンクがクリップボードにコピーされました!
--console --paused --autodestroy --bypass-cache --force-boot --pass-fds コマンドは、定義済みで非アクティブのドメインを起動します。この仮想マシンのステータスは、最後の管理保存状態または起動直後から非アクティブになっています。このコマンドは、次のオプションを選択できます。
--console- コンソールに接続しているドメインを起動します--console- これがドライバーによってサポートされている場合、ドメインを起動してから一時停止状態にします--autodestroy- virsh セッションが閉じるか、libvirt への接続が閉じるか、それ以外の場合は終了すると、ゲスト仮想マシンは自動的に破棄されます--bypass-cache- ドメインが管理された保存状態にある場合に使用されます。これを使用すると、システムキャッシュを回避して、ゲスト仮想マシンが復元されます。これにより、復元プロセスが遅くなることに注意してください。--force-boot- managedsave オプションをすべて破棄し、新規ブートが実行されます。--pass-fds- は、ゲスト仮想マシンに渡される、コンマで区切られた追加オプションのリストです。
14.8.2. ゲスト仮想マシンの一時停止 リンクのコピーリンクがクリップボードにコピーされました!
virsh suspend {domain-id, domain-name or domain-uuid}
# virsh suspend {domain-id, domain-name or domain-uuid}
14.8.3. 実行中のドメインの一時停止 リンクのコピーリンクがクリップボードにコピーされました!
--duration --target コマンドは、実行中のドメインを取得して一時停止し、3 つの可能な状態 (S3、S4、または 2 つのハイブリッド) のいずれかに配置できるようにします。
virsh dompmsuspend rhel6 --duration 100 --target mem
# virsh dompmsuspend rhel6 --duration 100 --target mem
--duration- 状態変更の期間を秒単位で設定します--target-mem (suspend to RAM (S3))disk (suspend to disk (S4))またはhybrid (hybrid suspend)のいずれかを使用できます。
14.8.4. pmsuspend 状態からドメインをウェイクアップする リンクのコピーリンクがクリップボードにコピーされました!
dompmwakeup rhel6
# dompmwakeup rhel6
14.8.5. ドメインの定義を解除する リンクのコピーリンクがクリップボードにコピーされました!
virsh undefine domain --managed-save --snapshots-metadata --storage --remove-all-storage --wipe-storage
# virsh undefine domain --managed-save --snapshots-metadata --storage --remove-all-storage --wipe-storage
--managed-save- このオプションは、管理対象の保存イメージもクリーンアップされることを保証します。このオプションを使用しない場合、管理対象の保存イメージを使用してドメインの定義を解除しようとすると失敗します。--snapshots-metadata- このオプションは、非アクティブなドメインの定義を解除するときに、スナップショット (snapshot-list で示される) もクリーンアップされることを保証します。設定ファイルにスナップショットメタデータが含まれている非アクティブなドメインの定義を解除しようとすると失敗することに注意してください。このオプションが使用され、ドメインがアクティブである場合、それは無視されます。--storage- このオプションを使用する場合は、ボリュームターゲット名またはストレージボリュームのソースパスをコンマで区切って指定し、未定義のドメインと一緒に削除する必要があります。このアクションでは、ストレージボリュームを削除する前にそのストレージボリュームの定義が解除されます。これは、非アクティブなドメインでのみ実行できることに注意してください。これは、libvirt で管理されるストレージボリュームでのみ機能することに注意してください。--remove-all-storage- ドメインの定義を解除することに加えて、関連するすべてのストレージボリュームが削除されます。--wipe-storage- ストレージボリュームを削除する以外にも、コンテンツをワイプします。
14.8.6. ゲスト仮想マシンの再開 リンクのコピーリンクがクリップボードにコピーされました!
virsh resume {domain-id, domain-name or domain-uuid}
# virsh resume {domain-id, domain-name or domain-uuid}
14.8.7. ゲスト仮想マシンを保存する リンクのコピーリンクがクリップボードにコピーされました!
virsh save {domain-name|domain-id|domain-uuid} state-file --bypass-cache --xml --running --paused --verbose
# virsh save {domain-name|domain-id|domain-uuid} state-file --bypass-cache --xml --running --paused --verbose
--bypass-cache- 復元を実行してファイルシステムキャッシュを回避しますが、このオプションを使用すると復元動作が遅くなる可能性があることに注意してください。--xml- このオプションは、XML ファイル名とともに使用する必要があります。通常、このオプションは省略されますが、ドメイン XML のホスト固有の部分のみを変更し、復元したゲスト仮想マシンで使用するための代替 XML ファイルを提供するために使用できます。たとえば、ゲストの保存後に取得されたディスクスナップショットによる、基になるストレージのファイル名の違いを説明するために使用できます。--running- は、保存イメージに記録された状態をオーバーライドして、ドメインを実行中として開始します。--paused- 保存イメージに記録された状態をオーバーライドして、ドメインを一時停止として開始します。--verbose- 保存の進捗を表示します。
14.8.8. ゲストの復元に使用されるドメイン XML ファイルの更新 リンクのコピーリンクがクリップボードにコピーされました!
--running|--paused コマンドは、指定されたファイルが後で virsh restore コマンドで使用されるときに使用されるドメイン XML ファイルを更新します。xml 引数は、ドメイン XML のホスト物理マシン固有の部分のみが変更された代替 XML を含む XML ファイル名である必要があります。たとえば、ゲストを保存した後に、基となるストレージのディスクスナップショットを作成することで生じるファイルの命名の相違点を説明するために使用できます。ドメインを実行状態または一時停止状態に復元する必要があるかどうかを、イメージの保存で記録します。オプション --running または --paused を使用すると、使用する状態が決まります。
14.8.9. ドメイン XML ファイルの抽出 リンクのコピーリンクがクリップボードにコピーされました!
--security-info コマンドは、保存された状態ファイル (virsh save コマンドで使用) が参照されたときに有効だったドメイン XML ファイルを抽出します。--security-info オプションを使用すると、ファイルにセキュリティー上の機密情報が含まれます。
14.8.10. ドメイン XML 設定ファイルの編集 リンクのコピーリンクがクリップボードにコピーされました!
--running --paused コマンドは、virsh save コマンドによって作成された保存済み ファイルに関連付けられている XML 設定ファイルを編集します。
--running 状態または --paused 状態のどちらに復元する必要があるかが記録されることに注意してください。これらのオプションを使用しない場合、状態はファイル自体によって決定されます。--running または --paused を選択すると、virsh restore が使用する必要のある状態を上書きできます。
14.8.11. ゲスト仮想マシンを復元する リンクのコピーリンクがクリップボードにコピーされました!
virsh restore state-file
# virsh restore state-file
--bypass-cache- 復元を実行してファイルシステムキャッシュを回避しますが、このオプションを使用すると復元動作が遅くなる可能性があることに注意してください。--xml- このオプションは、XML ファイル名とともに使用する必要があります。通常、このオプションは省略されますが、ドメイン XML のホスト固有の部分のみを変更し、復元したゲスト仮想マシンで使用するための代替 XML ファイルを提供するために使用できます。たとえば、ゲストの保存後に取得されたディスクスナップショットによる、基になるストレージのファイル名の違いを説明するために使用できます。--running- は、保存イメージに記録された状態をオーバーライドして、ドメインを実行中として開始します。--paused- 保存イメージに記録された状態をオーバーライドして、ドメインを一時停止として開始します。
14.9. ゲスト仮想マシンのシャットダウン、再起動、および強制シャットダウン リンクのコピーリンクがクリップボードにコピーされました!
14.9.1. ゲスト仮想マシンのシャットダウン リンクのコピーリンクがクリップボードにコピーされました!
virsh shutdown {domain-id, domain-name or domain-uuid} [--mode method]
# virsh shutdown {domain-id, domain-name or domain-uuid} [--mode method]
14.9.2. Red Hat Enterprise Linux 7 ホストでの Red Hat Enterprise Linux 6 ゲストのシャットダウン リンクのコピーリンクがクリップボードにコピーされました!
Minimal installation を使用して Red Hat Enterprise Linux 6 ゲスト仮想マシンをインストールしても、acpid パッケージ はインストールされません。Red Hat Enterprise Linux 7 は、systemd に引き継がれたため、このパッケージを必要としなくなりました。ただし、Red Hat Enterprise Linux 7 ホストで実行されている Red Hat Enterprise Linux 6 ゲスト仮想マシンには引き続き必要です。
手順14.4 Red Hat Enterprise Linux 6 ゲストの回避策
acpid パッケージのインストール
acpid サービスは、ACPI 要求をリッスンして処理します。ゲスト仮想マシンにログインし、ゲスト仮想マシンに acpid パッケージをインストールします。yum install acpid
# yum install acpidCopy to Clipboard Copied! Toggle word wrap Toggle overflow acpid サービスを有効にする
ゲスト仮想マシンの起動シーケンス中にacpidサービスを開始するように設定し、サービスを開始します。chkconfig acpid on service acpid start
# chkconfig acpid on # service acpid startCopy to Clipboard Copied! Toggle word wrap Toggle overflow ゲストドメイン xml の準備
ドメインの XML ファイルを編集して、次の要素を追加します。virtio シリアルポートをorg.qemu.guest_agent.0に置き換え、$guestname の代わりにゲストの名前を使用します。図14.2 ゲスト XML の置き換え
Copy to Clipboard Copied! Toggle word wrap Toggle overflow QEMU ゲストエージェントのインストール
QEMU ゲストエージェント (QEMU-GA) をインストールし、指示に従ってサービスを開始します。10章qemu-img および QEMU ゲストエージェント。Windows ゲストを実行している場合は、本章にもそのための手順があります。ゲストをシャットダウンします
- 以下のコマンドを実行します。
virsh list --all - this command lists all of the known domains
# virsh list --all - this command lists all of the known domains Id Name State ---------------------------------- rhel6 runningCopy to Clipboard Copied! Toggle word wrap Toggle overflow - ゲスト仮想マシンのシャットダウン
virsh shutdown rhel6
# virsh shutdown rhel6 Domain rhel6 is being shutdownCopy to Clipboard Copied! Toggle word wrap Toggle overflow - ゲスト仮想マシンがシャットダウンするまで数秒待ちます。
virsh list --all
# virsh list --all Id Name State ---------------------------------- . rhel6 shut offCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 編集した XML ファイルを使用して、rhel6 という名前のドメインを開始します。
virsh start rhel6
# virsh start rhel6Copy to Clipboard Copied! Toggle word wrap Toggle overflow - rhel6 ゲスト仮想マシンの acpi をシャットダウンします。
virsh shutdown --mode acpi rhel6
# virsh shutdown --mode acpi rhel6Copy to Clipboard Copied! Toggle word wrap Toggle overflow - すべてのドメインを再度一覧表示し、rhel6 が一覧に含まれていることを確認し、シャットダウンしていることを示します。
virsh list --all
# virsh list --all Id Name State ---------------------------------- rhel6 shut offCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 編集した XML ファイルを使用して、rhel6 という名前のドメインを開始します。
virsh start rhel6
# virsh start rhel6Copy to Clipboard Copied! Toggle word wrap Toggle overflow - rhel6 ゲスト仮想マシンゲストエージェントをシャットダウンします。
virsh shutdown --mode agent rhel6
# virsh shutdown --mode agent rhel6Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ドメインを一覧表示します。rhel6 はまだリストに含まれており、シャットオフされていることを示しているはずです。
virsh list --all
# virsh list --all Id Name State ---------------------------------- rhel6 shut offCopy to Clipboard Copied! Toggle word wrap Toggle overflow
libvirt-guests サービスを停止することで、ゲストを自動的にシャットダウンできます。この方法に関する詳細は、「libvirt-guests 設定設定の操作」 を参照してください。
14.9.3. libvirt-guests 設定設定の操作 リンクのコピーリンクがクリップボードにコピーされました!
libvirt-guests サービスには、ゲストが適切にシャットダウンするように設定できるパラメーターがあります。これは、libvirt インストールの一部で、デフォルトでインストールされるパッケージです。このサービスは、ホストのシャットダウン時にゲストをディスクに自動的に保存し、ホストの再起動時にゲストをシャットダウン前の状態に復元します。デフォルトでは、この設定はゲストを一時停止するように設定されています。ゲストをシャットオフする場合は、libvirt-guests 設定ファイルのパラメーターの 1 つを変更する必要があります。
手順14.5 ゲストの正常なシャットダウンを可能にするための libvirt-guests サービスパラメーターの変更
設定ファイルを開きます。
設定ファイルは/etc/sysconfig/libvirt-guestsにあります。ファイルを編集し、コメントマーク (#) を削除し、ON_SHUTDOWN=suspendをON_SHUTDOWN=shutdownに変更します。変更を保存することを忘れないでください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ???
URIS- checks the specified connections for a running guest. TheDefaultsetting functions in the same manner asvirshdoes when no explicit URI is set In addition, one can explicitly set the URI from/etc/libvirt/libvirt.conf. It should be noted that when using the libvirt configuration file default setting, no probing will be used.- ???
ON_BOOT- specifies the action to be done to / on the guests when the host boots. Thestartoption starts all guests that were running prior to shutdown regardless on their autostart settings. Theignoreoption will not start the formally running guest on boot, however, any guest marked as autostart will still be automatically started by libvirtd.- ???
- The
START_DELAY- sets a delay interval in between starting up the guests. This time period is set in seconds. Use the 0 time setting to make sure there is no delay and that all guests are started simultaneously. - ???
ON_SHUTDOWN- specifies the action taken when a host shuts down. Options that can be set include:suspendwhich suspends all running guests using virsh managedsave andshutdownwhich shuts down all running guests. It is best to be careful with using theshutdownoption as there is no way to distinguish between a guest which is stuck or ignores shutdown requests and a guest that just needs a longer time to shutdown. When setting theON_SHUTDOWN=shutdown, you must also setSHUTDOWN_TIMEOUTto a value suitable for the guests.- ???
PARALLEL_SHUTDOWNDictates that the number of guests on shutdown at any time will not exceed number set in this variable and the guests will be suspended concurrently. If set to0, then guests are not shutdown concurrently.- ???
- Number of seconds to wait for a guest to shut down. If
SHUTDOWN_TIMEOUTis enabled, this timeout applies as a timeout for shutting down all guests on a single URI defined in the variable URIS. IfSHUTDOWN_TIMEOUTis set to0, then there is no time out (use with caution, as guests might not respond to a shutdown request). The default value is 300 seconds (5 minutes). - ???
BYPASS_CACHEcan have 2 values, 0 to disable and 1 to enable. If enabled it will by-pass the file system cache when guests are restored. Note that setting this may effect performance and may cause slower operation for some file systems.
libvirt-guests サービスを開始します。
サービスを起動していない場合は、libvirt-guests サービスを起動します。実行中のすべてのドメインがシャットダウンするため、サービスを再起動しないでください。
14.9.4. ゲスト仮想マシンの再起動 リンクのコピーリンクがクリップボードにコピーされました!
#virsh reboot {domain-id, domain-name or domain-uuid} [--mode method]
#virsh reboot {domain-id, domain-name or domain-uuid} [--mode method]
<on_reboot> 要素を変更することで、再起動中のゲスト仮想マシンの動作を制御できます。詳細は、「イベントの設定」 を参照してください。
--mode オプションに、initctl、acpi、agent、signal などのコンマ区切りリストを指定します。ドライバーが各モードを試行する順序は、コマンドで指定された順序とは関係ありません。順序を厳格に制御するには、一度に 1 つのモードを使用し、コマンドを繰り返します。
14.9.5. ゲスト仮想マシンの強制停止 リンクのコピーリンクがクリップボードにコピーされました!
virsh destroy {domain-id, domain-name or domain-uuid} [--graceful]
# virsh destroy {domain-id, domain-name or domain-uuid} [--graceful]
14.9.6. 仮想マシンのリセット リンクのコピーリンクがクリップボードにコピーされました!
14.10. ゲストの仮想マシン情報の取得 リンクのコピーリンクがクリップボードにコピーされました!
14.10.1. ゲスト仮想マシンのドメイン ID の取得 リンクのコピーリンクがクリップボードにコピーされました!
virsh domid {domain-name or domain-uuid}
# virsh domid {domain-name or domain-uuid}
14.10.2. ゲスト仮想マシンのドメイン名の取得 リンクのコピーリンクがクリップボードにコピーされました!
virsh domname {domain-id or domain-uuid}
# virsh domname {domain-id or domain-uuid}
14.10.3. ゲスト仮想マシンの UUID の取得 リンクのコピーリンクがクリップボードにコピーされました!
virsh domuuid {domain-id or domain-name}
# virsh domuuid {domain-id or domain-name}
virsh domuuid r5b2-mySQL01
# virsh domuuid r5b2-mySQL01
4a4c59a7-ee3f-c781-96e4-288f2862f011
14.10.4. ゲスト仮想マシン情報の表示 リンクのコピーリンクがクリップボードにコピーされました!
virsh dominfo {domain-id, domain-name or domain-uuid}
# virsh dominfo {domain-id, domain-name or domain-uuid}
14.11. ストレージプールコマンド リンクのコピーリンクがクリップボードにコピーされました!
14.11.1. ストレージプール XML の検索 リンクのコピーリンクがクリップボードにコピーされました!
pool-list [--inactive] [--all] [--persistent] [--transient] [--autostart] [--no-autostart] [--details] type
pool-list [--inactive] [--all] [--persistent] [--transient] [--autostart] [--no-autostart] [--details] type
--inactive オプションを使用すると非アクティブプールのみが表示され、--all オプションを使用するとすべてのストレージプールが一覧表示されます。
--persistent は、一覧を永続プールに制限します。--transient はリストを一時的なプールに制限し、--autostart はリストをプールの自動起動に制限し、最後に --no-autostart は、自動起動が無効になっているストレージプールにリストを制限します。
dir、fs、netfs、logical、disk、iscsi、scsi、mpath、rbd、および sheepdogが含まれます。
--details オプションは、virsh に対して、プール永続性と利用可能な容量関連の情報を追加で表示するように指示します。
14.11.2. ストレージプールの作成、定義、および起動 リンクのコピーリンクがクリップボードにコピーされました!
14.11.2.1. ストレージプールの構築 リンクのコピーリンクがクリップボードにコピーされました!
--overwrite --no-overwrite コマンドは、指定された プール名または UUIDでプールを構築します。オプション --overwrite および --no-overwriteは、タイプがファイルシステムであるプールにのみ使用できます。どちらのオプションも指定されておらず、プールがファイルシステムタイプのプールである場合、結果のビルドはディレクトリーのみを作成します。
--no-overwrite を指定すると、プローブにより、ファイルシステムがターゲットデバイスにすでに存在するかどうかを判断したり、存在する場合はエラーを返すか、存在しない場合は mkfs を使用してターゲットデバイスをフォーマットします。--overwrite を指定した場合は、mkfs コマンドが実行され、ターゲットデバイスに存在するデータがすべて上書きされます。
14.11.2.2. XML ファイルからのストレージプールの作成と定義 リンクのコピーリンクがクリップボードにコピーされました!
14.11.2.3. 生のパラメーターからストレージプールを作成して開始する リンクのコピーリンクがクリップボードにコピーされました!
pool-create-as name --print-xml type source-host source-path source-dev source-name <target> --source-format format
# pool-create-as name --print-xml type source-host source-path source-dev source-name <target> --source-format format
--print-xml が指定されている場合、プールを作成せずにストレージプールオブジェクトの XML を出力します。それ以外の場合、プールを構築するにはタイプが必要です。type を必要とするすべてのストレージプールコマンドでは、プールタイプをコンマで区切る必要があります。有効なプールタイプには、dir、fs、netfs、logical、disk、iscsi、scsi、mpath、rbd、および sheepdogが含まれます。
pool-define-as name --print-xml type source-host source-path source-dev source-name <target> --source-format format
# pool-define-as name --print-xml type source-host source-path source-dev source-name <target> --source-format format
--print-xml が指定されている場合、プールを定義せずにプールオブジェクトの XML を出力します。それ以外の場合、プールは指定されたタイプである必要があります。type を必要とするすべてのストレージプールコマンドでは、プールタイプをコンマで区切る必要があります。有効なプールタイプには、dir、fs、netfs、logical、disk、iscsi、scsi、mpath、rbd、および sheepdogが含まれます。
14.11.2.4. ストレージプールの自動起動 リンクのコピーリンクがクリップボードにコピーされました!
--disable コマンドは、ストレージプールが起動時に自動的に開始することを有効または無効にします。このコマンドには、プール名または UUID が必要です。pool-autostart コマンドを無効にするには、--disable オプションを使用します。
14.11.3. ストレージプールの停止および削除 リンクのコピーリンクがクリップボードにコピーされました!
14.11.4. ストレージプール用の XML ダンプファイルの作成 リンクのコピーリンクがクリップボードにコピーされました!
--inactive pool-or-uuid コマンドは、指定されたストレージプールオブジェクトに関する XML 情報を返します。--inactive を使用すると、現在のプール設定ではなく、プールの次回の開始時に使用される設定がダンプされます。
14.11.5. ストレージプールの設定ファイルの編集 リンクのコピーリンクがクリップボードにコピーされました!
14.11.6. ストレージプールの変換 リンクのコピーリンクがクリップボードにコピーされました!
14.12. ストレージボリュームコマンド リンクのコピーリンクがクリップボードにコピーされました!
14.12.1. ストレージボリュームの作成 リンクのコピーリンクがクリップボードにコピーされました!
--inputpool pool-or-uuid vol-name-or-key-or-path コマンドは、コンテンツのテンプレートとして別のストレージボリュームを使用して、ストレージボリュームを作成します。このコマンドは、ボリュームを作成するストレージプールの名前または UUID である pool-or-uuid を必要とします。
--inputpool pool-or-uuid オプションは、ソースボリュームが含まれるストレージプールの名前または uuid を指定します。vol-name-or-key-or-path 引数は、ソースボリュームの名前またはキーまたはパスを指定します。一部の例については、「ボリュームの作成」 を参照してください。
vol-create-as pool-or-uuid name capacity --allocation <size> --format <string> --backing-vol <vol-name-or-key-or-path> --backing-vol-format <string>
vol-create-as pool-or-uuid name capacity --allocation <size> --format <string> --backing-vol <vol-name-or-key-or-path> --backing-vol-format <string>
--allocation <size> は、ボリュームに割り当てられる初期サイズであり、デフォルトでバイトにスケーリングされた整数としても使用されます。--format <string> は、ファイルベースのストレージプールで使用され、コンマで区切られた許容可能な形式の文字列であるボリュームファイル形式を指定します。使用可能な形式には、raw、bochs、qcow、qcow2、vmdk、 --backing-vol vol-name-or-key-or-path は、既存のボリュームのスナップショットを作成する場合に使用されるソースバッキングボリュームです。--backing-vol-format string は、スナップショットバッキングボリュームのフォーマットであり、コンマで区切られたフォーマットのストリングです。許可される値は、raw、bochs、qcow、qcow2、、vmdk、および host_device です。ただし、これはファイルベースのストレージプールのみを対象としています。
14.12.1.1. XML ファイルからのストレージボリュームの作成 リンクのコピーリンクがクリップボードにコピーされました!
virsh vol-dumpxml --pool storagepool1 appvolume1 > newvolume.xml virsh edit newvolume.xml virsh vol-create differentstoragepool newvolume.xml
virsh vol-dumpxml --pool storagepool1 appvolume1 > newvolume.xml
virsh edit newvolume.xml
virsh vol-create differentstoragepool newvolume.xml
- --inactive オプションは、非アクティブなゲスト仮想マシン (つまり、定義されているが現在アクティブではないゲスト仮想マシン) を一覧表示します。
- --all オプションは、すべてのゲスト仮想マシンを一覧表示します。
14.12.1.2. ストレージボリュームのクローンの作成 リンクのコピーリンクがクリップボードにコピーされました!
--pool pool-or-uuid vol-name-or-key-or-path name コマンドは、既存のストレージボリュームのクローンを作成します。vol-create-from も使用できますが、ストレージボリュームのクローンを作成する方法としてはお勧めしません。--pool pool-or-uuid オプションは、ボリュームを作成するストレージプールの名前または UUID です。vol-name-or-key-or-path 引数は、ソースボリュームの名前またはキーまたはパスです。name 引数を使用すると、新しいボリュームの名前を参照します。
14.12.2. ストレージボリュームの削除 リンクのコピーリンクがクリップボードにコピーされました!
--pool pool-or-uuid vol-name-or-key-or-path コマンドは、指定されたボリュームを削除します。このコマンドには、特定の --pool pool-or-uuid が必要です。これは、ボリュームが存在するストレージプールの名前または UUID です。vol-name-or-key-or-path オプションは、削除するボリュームの名前またはキーまたはパスを指定します。
--pool pool-or-uuid --algorithm algorithm vol-name-or-key-or-path コマンドは、ボリュームをワイプして、以前にボリュームにあったデータが将来の読み取りにアクセスできないようにします。このコマンドには、--pool pool-or-uuid が必要です。これは、ボリュームが存在するストレージプールの名前または UUID です。vol-name-or-key-or-path には、ワイプするボリュームの名前またはキーまたはパスが含まれています。デフォルト (ストレージボリュームのすべてのセクターが値 0 で書き込まれる) の代わりに、異なるワイピングアルゴリズムを選択できることに注意してください。ワイピングアルゴリズムを指定するには、サポートされている次の アルゴリズム タイプのいずれかで --algorithm オプションを使用します。
- 1-pass all zeroeszero- 4-pass NNSA Policy Letter NAP-14.1-C (XVI-8) for sanitizing removable and non-removable hard disks: random x2, 0x00, verify.nnsa- 4-pass DoD 5220.22-M section 8-306 procedure for sanitizing removable and non-removable rigid disks: random, 0x00, 0xff, verify.dod- ドイツ情報技術セキュリティーセンター (http://www.bsi.bund.de) が推奨する 9-pass メソッド: 0xff、0xfe、0xfd、0xfb、0xf7、0xef、0xdf、0xbf、0x7f。bsi- The canonical 35-pass sequence described in Gutmann's paper.gutmann- "Applied Cryptography"(1996) の Bruce Schneier で記述される 7-pass メソッド: 0x00、0xff、random x5schneier- Roy Pfitzner's 7-random-pass method: random x7pfitzner7- Roy Pfitzner's 33-random-pass method: random x33.pfitzner33- 1-pass pattern: randomrandom
14.12.3. ストレージボリューム情報の XML ファイルへのダンプ リンクのコピーリンクがクリップボードにコピーされました!
--pool pool-or-uuid vol-name-or-key-or-path コマンドは、ボリューム情報を指定されたファイルへの XML ダンプとして取得します。
--pool pool-or-uuid が必要です。これは、ボリュームが存在するストレージプールの名前または UUID です。vol-name-or-key-or-path は、結果の XML ファイルを配置するボリュームの名前またはキーまたはパスです。
14.12.4. ボリューム情報の一覧表示 リンクのコピーリンクがクリップボードにコピーされました!
--pool pool-or-uuid vol-name-or-key-or-path コマンドは、指定されたストレージボリューム --pool に関する基本情報を一覧表示します。ここで、pool-or-uuid はボリュームが存在するストレージプールの名前または UUID です。vol-name-or-key-or-path は、情報を返すボリュームの名前またはキーまたはパスです。
--pool pool-or-uuid --details は、指定されたストレージプール内のすべてのボリュームを一覧表示します。このコマンドには、ストレージプールの名前または UUID である --pool pool-or-uuid が必要です。--details オプションは、virsh に、ボリュームタイプおよびキャパシティー関連の情報 (利用可能な場合) を追加で表示するように指示します。
14.12.5. ストレージボリュームの情報の取得 リンクのコピーリンクがクリップボードにコピーされました!
--uuid vol-key-or-path コマンドは、指定されたボリュームのプール名または UUID を返します。デフォルトでは、プール名が返されます。--uuid オプションを指定すると、代わりにプール UUID が返されます。このコマンドには、要求された情報を返すボリュームのキーまたはパスである vol-key-or-path が必要です。
--pool pool-or-uuid vol-name-or-key コマンドは、指定したボリュームのパスを返します。このコマンドには、--pool pool-or-uuid が必要です。これは、ボリュームが存在するストレージプールの名前または UUID です。また、パスが要求されているボリュームの名前または鍵である vol-name-or-key も必要です。
--pool pool-or-uuid vol-name-or-path コマンドは、指定したボリュームのボリュームキーを返します。 --pool pool-or-uuid はストレージプールの名前または UUID で、vol-name-or-path はボリュームキーを返すボリュームの名前またはパスになります。
14.12.6. ストレージボリュームのアップロードとダウンロード リンクのコピーリンクがクリップボードにコピーされました!
14.12.6.1. ストレージボリュームへのコンテンツのアップロード リンクのコピーリンクがクリップボードにコピーされました!
--pool pool-or-uuid --offset bytes --length bytes vol-name-or-key-or-path local-file コマンドは、指定された ローカルファイル の内容をストレージボリュームにアップロードします。このコマンドには、ボリュームが存在するストレージプールの名前または UUID である --pool pool-or-uuid が必要です。また、ワイプするボリュームの名前またはキーまたはパスである vol-name-or-key-or-path も必要です。--offset オプションは、データの書き込みを開始するストレージボリューム内の位置です。--length length は、アップロードされるデータ量の上限を示します。local-file が指定した --length よりも大きい場合は、エラーが発生します。
14.12.6.2. ストレージボリュームからコンテンツをダウンロードする リンクのコピーリンクがクリップボードにコピーされました!
vol-download --pool pool-or-uuid --offset bytes --length bytes vol-name-or-key-or-path local-file
# vol-download --pool pool-or-uuid --offset bytes --length bytes vol-name-or-key-or-path local-file
-pool pool-or-uuid を必要とします。また、ワイプするボリュームの名前またはキーまたはパスである vol-name-or-key-or-path も必要です。オプション --offset を使用すると、データの読み取りを開始するストレージボリューム内の位置が決まります。--length length は、ダウンロードされるデータ量の上限を示します。
14.12.7. ストレージボリュームのサイズ変更 リンクのコピーリンクがクリップボードにコピーされました!
vol-resize --pool pool-or-uuid vol-name-or-path pool-or-uuid capacity --allocate --delta --shrink
# vol-resize --pool pool-or-uuid vol-name-or-path pool-or-uuid capacity --allocate --delta --shrink
--pool pool-or-uuid が必要です。このコマンドでは、vol-name-or-key-or-path が、サイズを変更するボリュームの名前またはキーまたはパスであることも必要です。
--allocate オプションが指定されていない限り、新しい容量によって sparse file が作成される可能性があります。通常、容量は新しいサイズになりますが、--delta が存在する場合は、既存のサイズに追加されます。--shrink オプションが存在しない限り、ボリュームを縮小しようとすると失敗します。
--shrink オプションが指定されていない限り、容量を負にすることはできず、負の符号は必要ありません。capacity はスケーリングされた整数であり、接尾辞がない場合はデフォルトでバイトになります。このコマンドは、アクティブなゲストが使用していないストレージボリュームに対してのみ安全であることに注意してください。ライブのサイズ変更については、「blockresize を使用してドメインパスのサイズを変更する」 を参照してください。
14.13. ゲストごとの仮想マシン情報の表示 リンクのコピーリンクがクリップボードにコピーされました!
14.13.1. ゲスト仮想マシンの表示 リンクのコピーリンクがクリップボードにコピーされました!
virsh list
# virsh list
--inactiveオプションは、非アクティブなゲスト仮想マシン (つまり、定義されているが現在アクティブではないゲスト仮想マシン) を一覧表示します。--allオプションは、すべてのゲスト仮想マシンを一覧表示します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドを使用して表示できる 7 つの状態があります。- Running -
running状態は、CPU 上で現在アクティブなゲスト仮想マシンを指します。 - Idle -
idle状態は、ドメインがアイドル状態であり、実行されていないか、実行できない可能性があることを示します。これは、ドメインが IO (従来の待機状態) を待機しているか、他に何もすることがなかったためにスリープ状態になっていることが原因である可能性があります。 - Paused -
paused状態は、一時停止されているドメインを一覧表示します。これは、管理者が virt-manager または virsh suspend で paused ボタンを使用すると発生します。ゲスト仮想マシンが一時停止すると、メモリーとその他のリソースを消費しますが、ハイパーバイザーからのスケジューリングと CPU リソースには対応していません。 - Shutdown -
shutdown状態は、シャットダウン中のゲスト仮想マシン用です。ゲスト仮想マシンにシャットダウンシグナルが送信され、操作を正常に停止するプロセスにあるはずです。これは、すべてのゲスト仮想マシンのオペレーティングシステムでは機能しない可能性があり、一部のオペレーティングシステムはこれらのシグナルに応答しない場合があります。 - Shut off -
shut off状態は、ドメインが実行されていないことを示します。これは、ドメインが完全にシャットダウンした場合、またはドメインが開始されていない場合に発生する可能性があります。 - Crashed -
crashed状態は、ドメインがクラッシュしたことを示し、ゲスト仮想マシンがクラッシュ時に再起動しないように設定されている場合にのみ発生する可能性があります。 - Dying -
dying状態のドメインは停止中です。これは、ドメインが完全にシャットダウンまたはクラッシュしていない状態です。
--managed-saveこのオプションだけではドメインをフィルターリングしませんが、管理された保存状態が有効になっているドメインが一覧表示されます。ドメインを実際に個別にリストするには、--inactiveオプションも使用する必要があります。--nameは指定されていますドメイン名はリストに出力されます。--uuidが指定されている場合、代わりにドメインの UUID が出力されます。オプション--tableを使用すると、テーブルスタイルの出力を使用する必要があることを指定します。3 つのコマンドはすべて相互に排他的です--titleこのコマンドは--table出力とともに使用する必要があります。--titleを指定すると、短いドメインの説明 (title) を含む追加の列がテーブルに作成されます。--persistentには、リストに永続ドメインが含まれます。--transientオプションを使用します。--with-managed-saveは、管理された保存で設定されたドメインをリストします。それを指定せずにコマンドを一覧表示するには、コマンド--without-managed-saveを使用します--state-runningは、実行中のドメインを除外し、--state-pausedは一時停止されたドメインを除外し、--state-shutoffはオフになっているドメインを除外し、--state-otherはすべての状態をフォールバックとして一覧表示します。--autostartこのオプションを使用すると、自動開始ドメインが一覧表示されます。この機能が無効になっているドメインを一覧表示するには、オプション--no-autostartを使用します。--with-snapshotは、スナップショットイメージを一覧表示できるドメインを一覧表示します。スナップショットのないドメインをフィルターリングするには、オプション--without-snapshotを使用します
14.13.2. 仮想 CPU 情報の表示 リンクのコピーリンクがクリップボードにコピーされました!
virsh vcpuinfo {domain-id, domain-name or domain-uuid}
# virsh vcpuinfo {domain-id, domain-name or domain-uuid}
14.13.3. 仮想 CPU アフィニティーの設定 リンクのコピーリンクがクリップボードにコピーされました!
例14.3 vCPU のホストの物理マシンの CPU へのピニング
--vcpuには vcpu 番号が必要です。[--cpulist] >string<は、設定するホスト物理マシンの CPU 番号を一覧表示するか、オプションのクエリーを省略します--configは次回のブートに影響します。--liveは実行中のドメインに影響します--currentは現在のドメインに影響します
14.13.4. ドメインの仮想 CPU 数に関する情報の表示 リンクのコピーリンクがクリップボードにコピーされました!
--maximumは、使用可能な vCPU の最大数を表示します--activeは、現在アクティブな vCPU の数を表示します--liveは、実行中のドメインからの値を表示します--configは、ゲスト仮想マシンの次回の起動時に設定される値を表示します--currentは、現在のドメイン状態に応じた値を表示します--guestは、返されるカウントをゲストの観点から表示します
14.13.5. 仮想 CPU アフィニティーの設定 リンクのコピーリンクがクリップボードにコピーされました!
virsh vcpupin domain-id vcpu cpulist
# virsh vcpupin domain-id vcpu cpulist
--config などの追加パラメーターは次回の起動に影響しますが、--live は実行中のドメインに影響し、--current は現在のドメインに影響します。
14.13.6. 仮想 CPU 数の設定 リンクのコピーリンクがクリップボードにコピーされました!
virsh setvcpus {domain-name, domain-id or domain-uuid} count [[--config] [--live] | [--current] [--guest]
# virsh setvcpus {domain-name, domain-id or domain-uuid} count [[--config] [--live] | [--current] [--guest]
{domain-name, domain-id or domain-uuid}- 仮想マシンを指定します。count- 設定する仮想 CPU の数を指定します。注記count値は、作成時にゲスト仮想マシンに割り当てられた CPU の数を超えることはできません。また、ホストまたはハイパーバイザーによって制限される場合もあります。Xen の場合、ドメインが準仮想化されている場合にのみ、実行中のドメインの仮想 CPU を調整できます。--live- デフォルトのオプション。何も指定されていない場合に使用されます。設定の変更は、実行中のゲスト仮想マシンで有効になります。これは、vCPU の数が増加した場合は ホットプラグ と呼ばれ、減少した場合は ホットアンプラグ と呼ばれます。重要vCPU ホットアンプラグ機能はテクノロジープレビューです。したがって、これはサポートされておらず、高い値のデプロイメントでの使用は推奨されません。--config- 設定の変更は、ゲストの次回の再起動時に有効になります。ハイパーバイザーで対応している場合は、--configオプションと--liveオプションの両方を指定できます。--current- 設定の変更は、ゲスト仮想マシンの現在の状態に影響します。実行中のゲストで使用する場合、次のように機能します--live、シャットダウンされたゲストで使用される場合、次のように機能します--config。--maximum- ゲストの次回の再起動時にホットプラグできる最大 vCPU 制限を設定します。そのため、--configオプションでのみ使用する必要があり、--liveでは使用しないでください。--guest- ホットプラグまたはホットアンプラグの代わりに、QEMU ゲストエージェントは、vCPU を有効または無効にすることにより、実行中のゲストの vCPU カウントを直接変更します。このオプションは、gueet の現在の仮想 CPU 数よりも多くのcountの値とすることはできません。また、ゲストの再起動時に--guestでセットされる設定がリセットされます。
例14.4 vCPU のホットプラグとホットアンプラグ
virsh setvcpus guestVM1 2 --live
virsh setvcpus guestVM1 2 --live
--live オプションにあるように、guestVM1 の実行中に実行されます。
virsh setvcpus guestVM1 1 --live
virsh setvcpus guestVM1 1 --live
14.13.7. メモリー割り当ての設定 リンクのコピーリンクがクリップボードにコピーされました!
virsh setmem {domain-id or domain-name} count
# virsh setmem {domain-id or domain-name} count
virsh setmem vr-rhel6u1-x86_64-kvm --kilobytes 1025000
# virsh setmem vr-rhel6u1-x86_64-kvm --kilobytes 1025000
countはキロバイト単位で指定する必要があります。新しいカウント値は、ゲスト仮想マシンを作成したときに指定した量を超えることはできません。64MB 未満の値は、ほとんどのゲスト仮想マシンのオペレーティングシステムでは使用できない可能性があります。最大メモリー値を上げても、アクティブなゲスト仮想マシンには影響しません。新しい値が利用可能なメモリーよりも小さい場合は、縮小するため、ゲスト仮想マシンがクラッシュする可能性があります。
- [--domain] <string> - ドメイン名、ID、または uuid
- [--size] <number> スケーリングされた整数としての新しいメモリーサイズ (デフォルトは KiB)有効なメモリーユニットは以下のとおりです。
- バイトの場合は
bまたはbytesになります。 - キロバイトの場合は、
KBになります (10 3 または 1,000 バイトのブロック) - キビバイトの場合は
kまたはKiB(2 10 または 1024 バイトのブロック) MBメガバイトの場合 (10 6 または 1,000,000 バイトのブロック)- メビバイトの場合は
MまたはMiB(220 または 1,048,576 バイトのブロック) GB(ギガバイト) (109 または 1,000,000,000 バイトのブロック)- ギビバイトの場合は
GまたはGiB(30 または 1,073,741,824 バイトのブロック) - エクサバイトの場合は
TB(1012 または 1,000,000,000,000 バイト のブロック) - テビバイトの場合は
TまたはTiB(2 40 または 1,099,511,627,776 のブロック)
すべての値は、libvirt により、最も近い kibibyte に丸められます。また、ハイパーバイザーが対応する粒度に丸めることもできます。一部のハイパーバイザーは、4000KiB(4000 x 2 10 または 4,096,000 バイト) などの最小値も適用します。この値の単位は、オプションの属性memory unitにより決定されます。デフォルトは、測定単位としての KiB (キビバイト) になります。この値は、210 または 1024 バイトのブロックで乗算されます。 - --config - 次回の起動に影響します
- --live は実行中のドメインのメモリーを制御します
- --current は、現在のドメインのメモリーを制御します
14.13.8. ドメインのメモリー割り当ての変更 リンクのコピーリンクがクリップボードにコピーされました!
--config --live --current を使用すると、以下のように、ゲスト仮想マシンの最大メモリー割り当て量を設定できます。
virsh setmaxmem rhel6 1024 --current
virsh setmaxmem rhel6 1024 --current
--config- 次回の起動に影響します--live- 実行中のドメインのメモリーを制御します。これにより、すべてのハイパーバイザーで、最大メモリー制限のライブ変更が許可されないため、ハイパーバイザーがこの動作に対応できるようになります。--current- 現在のドメインのメモリーを制御します
14.13.9. ゲスト仮想マシンブロックのデバイス情報の表示 リンクのコピーリンクがクリップボードにコピーされました!
virsh domblkstat GuestName block-device
# virsh domblkstat GuestName block-device
14.13.10. ゲスト仮想マシンのネットワークデバイス情報の表示 リンクのコピーリンクがクリップボードにコピーされました!
virsh domifstat GuestName interface-device
# virsh domifstat GuestName interface-device
14.14. 仮想ネットワークの管理 リンクのコピーリンクがクリップボードにコピーされました!
virsh net-list
# virsh net-list
virsh net-dumpxml NetworkName
# virsh net-dumpxml NetworkName
- virsh net-autostart network-name network-name - network-name として指定したネットワークを自動的に起動します。
- virsh net-create XMLfile - 既存の XML ファイルを使用して新しいネットワークを生成して開始します。
- virsh net-define XMLfile - 既存の XML ファイルを起動せずに新しいネットワークデバイスを生成します。
- virsh net-destroy network-name - network-name として指定されたネットワークを破棄します。
- virsh net-name networkUUID - 指定された networkUUID をネットワーク名に変換します。
- virsh net-uuid network-name - 指定された ネットワーク名 をネットワーク UUID に変換します。
- virsh net-start nameOfInactiveNetwork - 非アクティブなネットワークを開始します。
- virsh net-undefine nameOfInactiveNetwork - 非アクティブなネットワークの定義を削除します。
14.15. virsh を使用したゲスト仮想マシンの移行 リンクのコピーリンクがクリップボードにコピーされました!
14.15.1. インターフェイスコマンド リンクのコピーリンクがクリップボードにコピーされました!
network サービスを使用している場合に限りサポートされます。
<interface> 要素 (システムが作成したブリッジインターフェイスなど) 内で名前で使用できますが、ホストインターフェイスが特定のゲスト設定 XML と完全に関連付けられる必要はありません。ホストインターフェイスのコマンドの多くは、ドメインに使用されるコマンドと似ており、インターフェイスに名前を付ける方法は、名前または MAC アドレスのいずれかです。ただし、iface オプションに MAC アドレスを使用する場合、そのアドレスが一意である場合にのみ機能します (多くの場合、インターフェイスとブリッジが同じ MAC アドレスを共有しており、その場合、その MAC アドレスを使用すると曖昧さによりエラーが発生し、代わりに名前を使用する必要があります)。
14.15.1.1. XML ファイルを使用したホストの物理マシンインターフェイスの定義および起動 リンクのコピーリンクがクリップボードにコピーされました!
virsh iface-define iface.xml
virsh iface-define iface.xml
14.15.1.2. ホストインターフェイスの XML 設定ファイルの編集 リンクのコピーリンクがクリップボードにコピーされました!
14.15.1.3. アクティブなホストインターフェイスの一覧表示 リンクのコピーリンクがクリップボードにコピーされました!
--inactive --all は、アクティブなホストインターフェイスのリストを表示します。--all が指定されている場合、このリストには、定義されているが非アクティブなインターフェイスも含まれます。--inactive を指定すると、非アクティブのインターフェイスのみが一覧表示されます。
14.15.1.4. MAC アドレスのインターフェイス名への変換 リンクのコピーリンクがクリップボードにコピーされました!
14.15.1.5. 特定のホスト物理マシンインターフェイスを停止する リンクのコピーリンクがクリップボードにコピーされました!
14.15.1.6. ホスト設定ファイルの表示 リンクのコピーリンクがクリップボードにコピーされました!
--inactive は、ホストインターフェイスの情報を、stdout への XML ダンプとして表示します。--inactive オプションを指定すると、出力には、次回起動したときに使用されるインターフェイスの永続的な状態が反映されます。
14.15.1.7. ブリッジデバイスの作成 リンクのコピーリンクがクリップボードにコピーされました!
virsh iface-bridge interface bridge --no-stp delay --no-start
# virsh iface-bridge interface bridge --no-stp delay --no-start
14.15.1.8. ブリッジデバイスの破損 リンクのコピーリンクがクリップボードにコピーされました!
--no-start コマンドは、指定したブリッジデバイス bridge を削除し、その基盤となるインターフェイスを通常の使用に戻し、すべての IP アドレスの設定をブリッジデバイスから基盤となるデバイスに移動します。--no-start オプションを使用しない限り、基本となるインターフェイスが再起動しますが、通常は再起動しないことを念頭に置いてください。ブリッジの作成に使用するコマンドは、「ブリッジデバイスの作成」 を参照してください。
14.15.1.9. インターフェイススナップショットの操作 リンクのコピーリンクがクリップボードにコピーされました!
14.15.2. スナップショットの管理 リンクのコピーリンクがクリップボードにコピーされました!
14.15.2.1. スナップショットの作成 リンクのコピーリンクがクリップボードにコピーされました!
snapshot-create <domain> <xmlfile> [--redefine] [--current] [--no-metadata] [--reuse-external]
# snapshot-create <domain> <xmlfile> [--redefine] [--current] [--no-metadata] [--reuse-external]
--redefineは、snapshot-dumpxml によって生成されたすべての XML 要素が有効であるかどうかを指定します。これは、スナップショット階層をあるマシンから別のマシンに移行したり、一時的なドメインがなくなって後で同じ名前と UUID で再作成された場合の階層を再作成したり、スナップショットメタデータにわずかな変更を加えたりするために使用できます (スナップショットに埋め込まれたドメイン XML のホスト固有の側面など)。このオプションが指定されている場合、xmlfile 引数は必須であり、--currentオプションも指定されていない限り、ドメインの現在のスナップショットは変更されません。--no-metadataはスナップショットを作成しますが、メタデータは即座に破棄されます (つまり、libvirt は、スナップショットを現在のものとして扱いません。また、メタデータに関する libvirt を教えるために--redefineを使用しない限り、スナップショットに戻ることはできません)。--reuse-externalを使用する場合、このオプションは、使用する既存の外部 XML スナップショットの場所を指定します。既存の外部スナップショットがまだ存在しない場合、既存のファイルの内容が失われないようにするために、コマンドはスナップショットの作成に失敗します。
14.15.2.2. 現在のドメインのスナップショットを作成する リンクのコピーリンクがクリップボードにコピーされました!
virsh snapshot-create-as domain {[--print-xml] | [--no-metadata] [--reuse-external]} [name] [description] [--diskspec] diskspec]
# virsh snapshot-create-as domain {[--print-xml] | [--no-metadata] [--reuse-external]} [name] [description] [--diskspec] diskspec]
--print-xmlは、実際にスナップショットを作成するのではなく、出力として snapshot-create に適切な XML を作成します。--diskspecオプションを使用して、--disk-onlyおよび外部チェックポイントによる外部ファイルの作成方法を制御できます。このオプションは、ドメイン XML 内の <disk> 要素の数に従って、複数回指定できます。各 <diskspec> は、disk [,snapshot=type][,driver=type][,file=name]の形式です。ディスクまたはfile=nameにリテラルのコンマを含める場合は、2 番目のコンマでエスケープします。domain、name、および description の 3 つすべてが含まれている場合を除き、ディスクスペックの前にリテラル--diskspecを指定する必要があります。たとえば、ディスクスペックが vda,snapshot=external,file=/path/to,,new の場合は、以下の XML になります。<disk name=’vda’ snapshot=’external’> <source file=’/path/to,new’/> </disk>
<disk name=’vda’ snapshot=’external’> <source file=’/path/to,new’/> </disk>Copy to Clipboard Copied! Toggle word wrap Toggle overflow --reuse-externalは、既存のファイルを宛先として再利用する外部スナップショットを作成します (このファイルが上書きされることを意味します)。この宛先が存在しない場合、既存のファイルの内容が失われないように、スナップショット要求は拒否されます。--no-metadataはスナップショットデータを作成しますが、メタデータはすぐに破棄されます (つまり、libvirt はスナップショットを最新として処理せず、また、snapshot-create が、その後、libvirt にメタデータを再度教えるために使用されない限り、スナップショットに戻ることはできません)。このオプションは--print-xmlと互換性がありません。
14.15.2.3. 現在のドメインのスナップショットを作成する リンクのコピーリンクがクリップボードにコピーされました!
virsh snapshot-current domain {[--name] | [--security-info] | [snapshotname]}
# virsh snapshot-current domain {[--name] | [--security-info] | [snapshotname]}
snapshotname が使用されていない場合、ドメインの現在のスナップショット (存在する場合) のスナップショット XML が出力として表示されます。--name を指定すると、完全な XML ではなく、現在のスナップショット名のみが出力として送信されます。--security-info を指定すると、セキュリティーの機密情報が XML に含まれます。snapshotname を使用して、libvirt は、既存の名前付きスナップショットをドメインに戻さずに、現在のスナップショットになるようにリクエストを生成します。
14.15.2.4. snapshot-edit-domain リンクのコピーリンクがクリップボードにコピーされました!
#virsh snapshot-edit domain [snapshotname] [--current] {[--rename] [--clone]}
#virsh snapshot-edit domain [snapshotname] [--current] {[--rename] [--clone]}
snapshotname と --current の両方を指定すると、編集したスナップショットが現在のスナップショットになります。snapshotname を省略する場合は、現在のスナップショットを編集するには、--current を指定する必要があります。
virsh snapshot-dumpxml dom name > snapshot.xml vi snapshot.xml [note - this can be any editor] virsh snapshot-create dom snapshot.xml --redefine [--current]
# virsh snapshot-dumpxml dom name > snapshot.xml
# vi snapshot.xml [note - this can be any editor]
# virsh snapshot-create dom snapshot.xml --redefine [--current]
--rename を指定すると、編集されたファイルは別のファイル名に保存されます。--clone を指定してスナップショット名を変更すると、スナップショットメタデータのクローンが作成されます。いずれも指定されていない場合、編集によりスナップショット名は変更されません。スナップショット名の変更には十分な注意が必要です。1 つの qcow2 ファイル内の内部スナップショットなど、一部のスナップショットの内容には、作成元のスナップショットファイル名からしかアクセスできないためです。
14.15.2.5. snapshot-info-domain リンクのコピーリンクがクリップボードにコピーされました!
snapshot-info domain {snapshot | --current}
# snapshot-info domain {snapshot | --current}
snapshot、または--current で作成中のスナップショットの基本情報を出力します。
14.15.2.6. snapshot-list-domain リンクのコピーリンクがクリップボードにコピーされました!
#virsh snapshot-list domain [{--parent | --roots | --tree}] [{[--from] snapshot | --current} [--descendants]] [--metadata] [--no-metadata] [--leaves] [--no-leaves] [--inactive] [--active] [--internal] [--external]
#virsh snapshot-list domain [{--parent | --roots | --tree}] [{[--from] snapshot | --current} [--descendants]] [--metadata] [--no-metadata] [--leaves] [--no-leaves] [--inactive] [--active] [--internal] [--external]
--parentは、各スナップショットの親の名前を示す列を、出力テーブルに追加します。このオプションは、--rootsや--treeと併用できません。--rootsは、一覧をフィルターリングして、親がないスナップショットのみを表示します。このオプションは、--parentまたは--treeでは使用できません。--treeは、スナップショット名のみを一覧表示し、出力をツリー形式で表示します。これらの 3 つのオプションは相互に排他的です。このオプションは、--rootsや--parentと併用できません。--fromは、指定したスナップショットの子であるスナップショットの一覧をフィルターリングします。または、--currentが指定されている場合は、一覧を現在のスナップショットから開始するようにします。分離時または--parentと併用する場合、--descendantsが存在しない限り、一覧は直接の子に制限されます。--treeと一緒に使用すると、--descendantsの使用が暗黙的になります。このオプションは、--rootsとは互換性がありません。--fromまたは--currentの開始点は、--treeオプションが指定されていない限り、一覧に含まれていないことに注意してください。--leavesを指定すると、この一覧は、子がないスナップショットのみを対象にフィルター処理されます。同様に、--no-leavesを指定すると、一覧は子を持つスナップショットのみにフィルターリングされます。(両方のオプションを省略するとフィルターリングはされませんが、両方のオプションを指定すると、サーバーがオプションを認識するかどうかに応じて同じリストまたはエラーが生成されることに注意してください) フィルターリングオプションは--treeと互換性がありません。--metadataが指定されている場合、リストは libvirt メタデータを含むスナップショットのみにフィルターされ、永続ドメインの定義解除を防止したり、一時ドメインの破棄時に失われたりします。同様に、--no-metadataが指定されている場合には、一覧が libvirt メタデータを必要としないスナップショットだけにフィルターリングされます。--metadataが指定されている場合、リストはドメインがシャットオフされたときに取得されたスナップショットにフィルターされます。--activeを指定すると、ドメインの実行中に取得したスナップショットに一覧がフィルターリングされ、スナップショットには、その稼働状態に戻すためのメモリーの状態が含まれます。--disk-onlyが指定されている場合、リストは、ドメインの実行中に取得されたスナップショットにフィルターされますが、スナップショットにはディスクの状態のみが含まれます。--internalを指定すると、一覧は、既存ディスクイメージの内部ストレージを使用するスナップショットにフィルターリングされます。--external を指定すると、リストは、ディスクイメージまたはメモリー状態に外部ファイルを使用するスナップショットにフィルターリングされます。
14.15.2.7. snapshot-dumpxml ドメインスナップショット リンクのコピーリンクがクリップボードにコピーされました!
virsh snapshot-dumpxml domain snapshot [--security-info]
# virsh snapshot-dumpxml domain snapshot [--security-info]
--security-info オプションには、セキュリティーの機密情報も含まれます。snapshot-current を使用すると、現行スナップショットの XML に簡単にアクセスできます。
14.15.2.8. snapshot-parent ドメイン リンクのコピーリンクがクリップボードにコピーされました!
--current で現在のスナップショットの名前を出力します。使用するには、以下を実行します
#virsh snapshot-parent domain {snapshot | --current}
#virsh snapshot-parent domain {snapshot | --current}
14.15.2.9. snapshot-revert ドメイン リンクのコピーリンクがクリップボードにコピーされました!
snapshot で指定したスナップショットか、--current で指定した現在のスナップショットに戻します。
snapshot-revert の完了後のドメインの状態は、元のスナップショット取得時のドメインの状態であることに注意してください。
snapshot-revert domain {snapshot | --current} [{--running | --paused}] [--force]
# snapshot-revert domain {snapshot | --current} [{--running | --paused}] [--force]
--running または --paused のいずれかを渡すと、状態の変更 (非アクティブなドメインの起動や、実行中のドメインの一時停止など) が行われます。一時ドメインは非アクティブの状態にできないため、一時ドメインのディスクスナップショットに戻す場合には、このオプションのいずれかを使用する必要があります。
--force を使用して続行する必要があります。1 つ目は、設定を戻すための完全なドメイン情報がないスナップショットの場合です。libvirt は、現在の設定がスナップショット時の使用状況と一致することを証明できないため、--force を提供することで、スナップショットが現在の設定と互換性があることを libvirt に保証します (一致しないとドメインの実行に失敗する可能性が高くなります)。もう 1 つは、実行中のドメインから、既存のハイパーバイザーを再利用するのではなく、新しいハイパーバイザーを作成する必要があるアクティブなドメインに戻す場合です。これは、既存の VNC 接続または Spice 接続を壊すなどの欠点を意味するからです。これは、証明可能な互換性のない設定を使用するアクティブなスナップショットと、--start フラグまたは --pause オプションを組み合わせた非アクティブなスナップショットで発生します。
14.15.2.10. snapshot-delete ドメイン リンクのコピーリンクがクリップボードにコピーされました!
virsh snapshot-delete domain {snapshot | --current} [--metadata] [{--children | --children-only}]
# virsh snapshot-delete domain {snapshot | --current} [--metadata] [{--children | --children-only}]
snapshot という名前のドメインに対するスナップショット、または --current を使用した現行スナップショットを削除します。このスナップショットに子スナップショットが含まれる場合は、このスナップショットの変更は子スナップショットにマージされます。--children を使用すると、このスナップショットと、その子スナップショットがすべて削除されます。--children-only を使用すると、このスナップショットの子はすべて削除されますが、このスナップショットはそのままになります。これらの 2 つのオプションは相互に排他的です。
--metadataを使用すると、libvirt が管理するスナップショットのメタデータが削除されます。外部ツールによるアクセス用に、スナップショットのコンテンツはそのまま残されます。それ以外の場合は、スナップショットを削除すると、その時点のデータコンテンツも削除されます。
14.16. ゲスト仮想マシンの CPU モデル設定 リンクのコピーリンクがクリップボードにコピーされました!
14.16.1. はじめに リンクのコピーリンクがクリップボードにコピーされました!
qemu32 または qemu64 という名前の一般的なモデルで表示します。このようなハイパーバイザーは、より高度なフィルターリングを実行し、すべての物理 CPU を少数のグループに分類し、ゲスト仮想マシンに提示される各グループに対してベースライン CPU モデルを 1 つ用意します。このような動作により、ホストの物理マシン間でゲスト仮想マシンを安全に移行できます。ただし、ゲスト仮想マシンすべてに、同じグループに分類される物理 CPU がある場合に限ります。libvirt は通常、ポリシー自体を適用せず、より高いレイヤーで必要なポリシーを定義するメカニズムを提供します。ホストの物理マシン間でゲスト仮想マシンの移行が正常に実行されるようにするには、CPU モデル情報を取得し、適切なゲスト仮想マシンの CPU モデルを定義する方法を理解することが重要になります。ハイパーバイザーは、認識している機能のみをエミュレートでき、ハイパーバイザーがリリースされてから作成された機能はエミュレートできない場合がある点に注意してください。
14.16.2. ホスト物理マシンの CPU モデルの学習 リンクのコピーリンクがクリップボードにコピーされました!
14.16.3. ホスト物理マシンのプールに対応するための互換性のある CPU モデルの決定 リンクのコピーリンクがクリップボードにコピーされました!
図14.3 ホストの物理マシンの CPU モデル情報をプルする
図14.4 ランダムなサーバーから CPU 説明を生成する
virsh-caps-workstation-cpu-only.xml という名前のファイルに保存されており、このファイルで virsh cpu-compare コマンドを実行できます。
virsh cpu-compare virsh-caps-workstation-cpu-only.xml
# virsh cpu-compare virsh-caps-workstation-cpu-only.xml
Host physical machine CPU is a superset of CPU described in virsh-caps-workstation-cpu-only.xml
both-cpus.xmlで virsh cpu-baseline コマンドを実行します。 # virsh cpu-baseline both-cpus.xml を実行すると、以下が行われます。
図14.5 複合 CPU ベースライン
14.17. ゲスト仮想マシンの CPU モデルの設定 リンクのコピーリンクがクリップボードにコピーされました!
match という名前の属性があります。この属性には、以下の値を指定できます。
- match='minimum' - ホストの物理マシン CPU には、ゲスト仮想マシン XML で説明されている CPU 機能が少なくとも必要です。ホストの物理マシンに、ゲスト仮想マシンの設定以外の機能がある場合は、ゲスト仮想マシンにも公開されます。
- match='exact' - ホストの物理マシンの CPU には、ゲスト仮想マシンの XML で説明されている CPU 機能が少なくとも必要です。ホストの物理マシンに、ゲスト仮想マシンの設定以外の機能がある場合は、ゲスト仮想マシンからマスクアウトされます。
- match='strict' - ホストの物理マシン CPU には、ゲスト仮想マシン XML で説明されている CPU 機能とまったく同じものが必要です。
- policy='force' - ホストの物理マシンに機能がない場合でも、ゲスト仮想マシンにその機能を公開します。通常、これはソフトウェアエミュレーションの場合にのみ役立ちます。
- policy='require' - 機能をゲスト仮想マシンに公開し、ホストの物理マシンにその機能がない場合には失敗します。これは妥当なデフォルトです。
- policy='optional' - 機能に対応している場合にゲスト仮想マシンに公開します。
- policy='disable' - ホストの物理マシンにこの機能がある場合は、ゲスト仮想マシンに表示しないようにします。
- policy='forbid' - ホストの物理マシンにこの機能がある場合は、ゲスト仮想マシンの起動に失敗して拒否されます。
14.18. ゲスト仮想マシンのリソースの管理 リンクのコピーリンクがクリップボードにコピーされました!
- memory - メモリーコントローラーにより、RAM の制限やスワップの使用量を設定し、グループ内の全プロセスの累積使用量を照会できます。
- cpuset - CPU セットコントローラーは、グループ内のプロセスを CPU セットにバインドし、CPU 間の移行を制御します。
- cpuacct - CPU アカウンティングコントローラーは、プロセスのグループに対する CPU 使用率の情報を提供します。
- cpu - CPU スケジューラーコントローラーは、グループ内のプロセスの優先順位を制御します。これは、nice レベルの権限を付与するのと似ています。
- devices - デバイスコントローラーは、文字デバイスおよびブロックデバイスのアクセス制御リストを付与します。
- freezer - フリーザーコントローラーは、グループ内のプロセスを一時停止して再開します。これは、グループ全体の SIGSTOP と似ています。
- net_cls - ネットワーククラスコントローラーは、プロセスを tc ネットワーククラスに関連付けることで、ネットワークの使用率を管理します。
/etc/fstab に追加するよりも複雑になります。ディレクトリー階層を設定し、その中にプロセスを配置する方法を決定する必要があります。これは、次の virsh コマンドで実行できます。
- schedinfo - 「スケジュールパラメーターの設定」 で説明しています。
- blkiotune - 「ブロック I/O パラメーターの表示または設定」 で説明しています。
- domiftune - 「ネットワークインターフェイスの帯域幅パラメーターの設定」 で説明しています。
- memtune - 「メモリーの調整の設定」 で説明しています。
14.19. スケジュールパラメーターの設定 リンクのコピーリンクがクリップボードにコピーされました!
#virsh schedinfo domain --set --weight --cap --current --config --live
#virsh schedinfo domain --set --weight --cap --current --config --live
- domain - これはゲスト仮想マシンドメインです
--set- ここに置かれるストリングは、呼び出されるコントローラーまたはアクションです。必要な場合には、追加のパラメーターまたは値も追加する必要があります。--current---setと一緒に使用すると、指定したset文字列を現在のスケジューラー情報として使用します。一緒に使用しない場合は、現在のスケジューラー情報が表示されます。--config- ---setと併用すると、次回のシステムの再起動時に指定したset 文字列を使用します。一緒に使用しない場合は、設定ファイルに保存されているスケジューラー情報が表示されます。--live---setと一緒に使用すると、現在実行しているゲスト仮想マシンで指定したset 文字列を使用します。一緒に使用しない場合は、実行中の仮想マシンが現在使用している設定が表示されます。
cpu_shares、vcpu_period、および vcpu_quota のいずれかのパラメーターで設定できます。
例14.5 schedinfo show
例14.6 schedinfo set
14.20. ブロック I/O パラメーターの表示または設定 リンクのコピーリンクがクリップボードにコピーされました!
virsh blkiotune domain [--weight weight] [--device-weights device-weights] [[--config] [--live] | [--current]]
# virsh blkiotune domain [--weight weight] [--device-weights device-weights] [[--config] [--live] | [--current]]
14.21. メモリーの調整の設定 リンクのコピーリンクがクリップボードにコピーされました!
14.22. 仮想ネットワークコマンド リンクのコピーリンクがクリップボードにコピーされました!
14.22.1. 仮想ネットワークの自動起動 リンクのコピーリンクがクリップボードにコピーされました!
virsh net-autostart network [--disable]
# virsh net-autostart network [--disable]
--disable オプションを受け入れます。これにより、自動開始コマンドが無効になります。
14.22.2. XML ファイルからの仮想ネットワークの作成 リンクのコピーリンクがクリップボードにコピーされました!
virsh net-create file
# virsh net-create file
14.22.3. XML ファイルからの仮想ネットワークの定義 リンクのコピーリンクがクリップボードにコピーされました!
net-define file
# net-define file
14.22.4. 仮想ネットワークの停止 リンクのコピーリンクがクリップボードにコピーされました!
net-destroy network
# net-destroy network
14.22.5. ダンプファイルの作成 リンクのコピーリンクがクリップボードにコピーされました!
--inactive を指定すると、物理機能は、関連付けられた仮想機能に展開されません。ダンプファイルを作成するには、次のコマンドを実行します。
virsh net-dumpxml network [--inactive]
# virsh net-dumpxml network [--inactive]
14.22.6. 仮想ネットワークの XML 設定ファイルの編集 リンクのコピーリンクがクリップボードにコピーされました!
virsh net-edit network
# virsh net-edit network
14.22.7. 仮想ネットワークに関する情報の取得 リンクのコピーリンクがクリップボードにコピーされました!
virsh net-info network
# virsh net-info network
14.22.8. 仮想ネットワークに関する情報の一覧表示 リンクのコピーリンクがクリップボードにコピーされました!
--all が指定されている場合は、アクティブなネットワーク一覧を返します。--inactiveが指定されている場合は、非アクティブなネットワークのみが一覧表示されます。返されたネットワークを --persistent でフィルターリングして永続的なネットワークを、--transient でフィルターリングして一時的なネットワークを、--autostart でフィルターリングして自動起動が有効になっているネットワークを、そして --no-autostart でフィルターリングして自動起動が無効になっているネットワークを一覧表示することも推奨されます。
net-list [--inactive | --all] [--persistent] [<--transient>] [--autostart] [<--no-autostart>]
# net-list [--inactive | --all] [--persistent] [<--transient>] [--autostart] [<--no-autostart>]
14.22.9. ネットワーク UUID のネットワーク名への変換 リンクのコピーリンクがクリップボードにコピーされました!
virsh net-name network-UUID
# virsh net-name network-UUID
14.22.10. (定義済みの) 非アクティブなネットワークの起動 リンクのコピーリンクがクリップボードにコピーされました!
virsh net-start network
# virsh net-start network
14.22.11. 非アクティブなネットワークの設定の定義解除 リンクのコピーリンクがクリップボードにコピーされました!
net-undefine network
# net-undefine network
14.22.12. ネットワーク名のネットワーク UUID への変換 リンクのコピーリンクがクリップボードにコピーされました!
virsh net-uuid network-name
# virsh net-uuid network-name
14.22.13. 既存のネットワーク定義ファイルの更新 リンクのコピーリンクがクリップボードにコピーされました!
<ip> 要素内に <dhcp> 要素に含まれる <host> 要素を変更します。xml は、変更するタイプの完全な xml 要素のテキストです (たとえば、<host mac="00:11:22:33:44:55' ip='192.0.2.1'/>)、または完全な xml 要素が含まれるファイルの名前です。あいまいさの除去は、提供されているテキストの最初の文字を調べて行います。最初の文字が "<" の場合は XML テキストで、最初の文字が ">" でない場合は、使用される xml テキストが含まれるファイル名になります。--parent-index オプションは、要求された要素が、複数の親要素のうちどの要素にあるのかを指定するために使用します (0-ベース)。たとえば、dhcp <host> 要素は、ネットワーク内の複数の <ip> 要素のいずれかに置くことができます。parent-index が指定されていない場合は最も適切な <ip> 要素が選択されます (通常は、<dhcp> 要素がすでに存在するものだけが対象となります)。ただし、--parent-index が指定されていると、<ip> の特定のインスタンスが修正されます。--live が指定されている場合は、実行中のネットワークに影響を及ぼします。--config を指定した場合は、次に永続的なネットワークを起動する際に影響を及ぼします。-- current が指定されている場合、現在のネットワーク状態に影響します。--live および --config オプションの両方を指定できますが、--current は排他的です。オプションを指定しない場合は、--current を指定することと同じです。
virsh net-update network command section xml [--parent-index index] [[--live] [--config] | [--current]]
# virsh net-update network command section xml [--parent-index index] [[--live] [--config] | [--current]]
第15章 Virtual Machine Manager を使用したゲストの管理 (virt-manager) リンクのコピーリンクがクリップボードにコピーされました!
- ゲストの定義と作成
- メモリーの割り当て
- 仮想 CPU の割り当て
- 運用パフォーマンスの監視
- ゲストの保存、復元、一時停止、再開、およびシャットダウンと起動
- テキストコンソールやグラフィカルコンソールへのリンク
- ライブマイグレーションおよびオフラインマイグレーション。
15.1. virt-manager の起動 リンクのコピーリンクがクリップボードにコピーされました!
図15.1 virt-manager の起動
ssh -X host's address [remotehost]# virt-manager
ssh -X host's address
[remotehost]# virt-manager
15.2. Virtual Machine Manager のメインウィンドウ リンクのコピーリンクがクリップボードにコピーされました!
図15.2 Virtual Machine Manager のメインウィンドウ
15.3. 仮想ハードウェアの詳細ウィンドウ リンクのコピーリンクがクリップボードにコピーされました!
図15.3 仮想ハードウェアの詳細アイコン
図15.4 仮想ハードウェアの詳細ウィンドウ
15.3.1. ゲスト仮想マシンへの USB デバイスの接続 リンクのコピーリンクがクリップボードにコピーされました!
手順15.1 Virt-Manager を使用した USB デバイスの接続
- ゲスト仮想マシンの Virtual Machine Details 画面を開きます。
- をクリックします。
図15.5 ハードウェアボタンの追加
- ポップアップで、 を選択し、一覧から接続するデバイスを選択して、 をクリックします。
図15.6 USB デバイスの追加
- ゲスト仮想マシンで USB デバイスを使用するには、ゲスト仮想マシンを起動します。
15.4. 仮想マシンのグラフィカルコンソール リンクのコピーリンクがクリップボードにコピーされました!
図15.7 グラフィカルコンソールウィンドウ
127.0.0.1) のみをリッスンします。これにより、ホストでシェル特権を持つユーザーのみが、VNC を介して virt-manager および仮想マシンにアクセスできるようになります。virt-manager は、他のパブリックネットワークインターフェイスをリッスンするように設定されており、別の方法を設定することもできますが、推奨されません。
15.5. リモート接続の追加 リンクのコピーリンクがクリップボードにコピーされました!
- 新規接続を作成するには、File メニューを開き、Add Connection... メニューアイテムを選択します。
- Add Connection ウィザードが表示されます。ハイパーバイザーを選択します。Red Hat Enterprise Linux 6 の場合は、システムで QEMU/KVM を選択します。ローカルシステムの Local、またはリモート接続オプションのいずれかを選択し、Connect をクリックします。この例では、SSH 経由でリモートトンネルを使用します。これは、デフォルトのインストールで機能します。リモート接続の設定の詳細は、5章ゲストのリモート管理 を参照してください。
図15.8 接続の追加
- プロンプトが表示されたら、選択したホストの root パスワードを入力します。
図15.9 メインの virt-manager ウィンドウのリモートホスト
15.6. ゲストの詳細の表示 リンクのコピーリンクがクリップボードにコピーされました!
- Virtual Machine Manager のメインウィンドウで、表示する仮想マシンを強調表示します。
図15.10 表示する仮想マシンの選択
- 仮想マシンマネージャーのEdit メニューから、Virtual Machine Details を選択します。仮想マシンの詳細ウィンドウが開くと、コンソールが表示される場合があります。これが発生した場合は、View をクリックし、Details を選択します。デフォルトでは、Overview ウィンドウが最初に開きます。このウィンドウに戻るには、左側のナビゲーションペインから Overview を選択します。Overview ビューには、ゲストの設定詳細の概要が表示されます。
図15.12 ゲストの詳細の概要の表示
- 左側のナビゲーションペインから Performance を選択します。Performance ビューには、CPU とメモリーの使用量など、ゲストのパフォーマンスの概要が表示されます。
図15.13 ゲストのパフォーマンスの詳細の表示
- 左側のナビゲーションペインから Processor を選択します。Processor ビューでは、現在のプロセッサー割り当てを表示したり、変更したりできます。仮想マシンの実行中に仮想 CPU(vCPU) の数を変更することもできます。これは、ホットプラグおよび ホットアンプラグと呼ばれます。重要ホットアンプラグ機能は、テクノロジープレビューとしてのみ使用できます。したがって、これはサポートされておらず、高い値のデプロイメントでの使用は推奨されません。
図15.14 プロセッサー割り当てパネル
- 左側のナビゲーションペインから Memory を選択します。Memory ビューでは、現在のメモリー割り当てを表示または変更できます。
図15.15 メモリー割り当ての表示
- 仮想マシンに接続されている各仮想ディスクがナビゲーションペインに表示されます。仮想ディスクをクリックして、変更または削除します。
図15.16 ディスク設定の表示
- 仮想マシンに接続されている各仮想ネットワークインターフェイスがナビゲーションペインに表示されます。仮想ネットワークインターフェイスをクリックして、変更または削除します。
図15.17 ネットワーク設定の表示
15.7. パフォーマンスのモニターリング リンクのコピーリンクがクリップボードにコピーされました!
- Edit メニューから、Preferences を選択します。
図15.18 ゲスト設定の変更
Preferences ウィンドウが表示されます。 - Stats タブから、時間を秒単位または統計ポーリングオプションで指定します。
図15.19 パフォーマンスモニターリングの設定
15.8. ゲストの CPU 使用率の表示 リンクのコピーリンクがクリップボードにコピーされました!
- View メニューから Graph を選択し、Guest CPU Usage チェックボックスをオンにします。
図15.20 ゲスト CPU 使用率統計情報グラフの有効化
- Virtual Machine Manager は、システム上のすべての仮想マシンの CPU 使用率グラフを表示します。
図15.21 ゲスト CPU 使用率グラフ
15.9. ホストの CPU 使用率の表示 リンクのコピーリンクがクリップボードにコピーされました!
- View メニューから Graph を選択し、Host CPU Usage チェックボックスをオンにします。
図15.22 ホスト CPU 使用率統計情報グラフの有効化
- Virtual Machine Manager は、システム上のホストの CPU 使用率グラフを表示します。
図15.23 ホストの CPU 使用率グラフ
15.10. ディスク I/O の表示 リンクのコピーリンクがクリップボードにコピーされました!
- ディスク I/O 統計情報の収集が有効になっていることを確認してください。これを行うには、Edit メニューから Preferences を選択し、Stats タブをクリックします。
- Disk I/O チェックボックスをオンにします。
図15.24 ディスク I/O の有効化
- ディスク I.O 表示を有効にするには、View メニューから Graph を選択し、Disk I/O チェックボックスをオンにします。選択します。
図15.25 ディスク I/O の選択
- Virtual Machine Manager は、システム上のすべての仮想マシンのディスク I/O のグラフを表示します。
図15.26 ディスク I/O の表示
15.11. ネットワーク I/O の表示 リンクのコピーリンクがクリップボードにコピーされました!
- ネットワーク I/O 統計情報の収集が有効になっていることを確認してください。これを行うには、Edit メニューから Preferences を選択し、Stats タブをクリックします。
- Network I/O チェックボックスをオンにします。
図15.27 ネットワーク I/O の有効化
- ネットワーク I/O 統計情報を表示するには、View メニューから Graph を選択し、Network I/O チェックボックスをオンにします。
図15.28 ネットワーク I/O の選択
- Virtual Machine Manager は、システム上のすべての仮想マシンのネットワーク I/O グラフを表示します。
図15.29 ネットワーク I/O の表示
第16章 オフラインツールを使用したゲスト仮想マシンのディスクアクセス リンクのコピーリンクがクリップボードにコピーされました!
16.1. はじめに リンクのコピーリンクがクリップボードにコピーされました!
- ホストの物理マシンディスクにあるファイルの表示またはダウンロード。
- ファイルを編集するか、ホストの物理マシンディスクにアップロードします。
- ホストの物理マシン設定の読み取りまたは書き込み。
- Windows ホスト物理マシンでの Windows レジストリーの読み取りまたは書き込み。
- ファイル、ディレクトリー、ファイルシステム、パーティション、論理ボリューム、およびその他のオプションを含む新しいディスクイメージの準備
- 起動に失敗した、または起動設定の変更が必要なホスト物理マシンのレスキューと修復。
- ホスト物理マシンのディスク使用量をモニターします。
- 組織のセキュリティー規格など、ホストの物理マシンのコンプライアンスを監査します。
- テンプレートのクローンを作成して変更することにより、ホスト物理マシンをデプロイします。
- CD および DVD ISO とフロッピーディスクイメージの読み取り。
virt-df -c qemu://remote/system -d Guest
virt-df -c qemu://remote/system -d Guest
- guestfish
- guestmount
- virt-alignment-scan
- virt-cat
- virt-copy-in
- virt-copy-out
- virt-df
- virt-edit
- virt-filesystems
- virt-inspector
- virt-inspector2
- virt-list-filesystems
- virt-list-partitions
- virt-ls
- virt-rescue
- virt-sysprep
- virt-tar
- virt-tar-in
- virt-tar-out
- virt-win-reg
16.2. 用語 リンクのコピーリンクがクリップボードにコピーされました!
- libguestfs (Guest file system library) - ディスクイメージを開いたり、ファイルを読み書きしたりするために使用される基本的な機能を提供する C ライブラリーです。この API に直接 C プログラムを書くことができますが、それはかなり低レベルです。
- guestfish (Guest file system interactive shell) は、コマンドラインまたはシェルスクリプトから使用できる対話式のシェルです。これは、libguestfs API のすべての機能を公開します。
- さまざまな virt ツールが libguestfs の上に構築され、コマンドラインから特定の 1 つのタスクを実行する方法を提供します。ツールには、virt-df、virt-rescue、virt-resize、および virt-edit が含まれます。
- hivex と Augeas は、それぞれ Windows レジストリーと Linux 設定ファイルを編集するためのライブラリーです。これらは libguestfs とは別のものですが、libguestfs の価値の多くは、これらのツールの組み合わせに由来します。
- guestmount は、libguestfs と FUSE との間のインターフェイスです。これは、主に、ホストの物理マシンのディスクイメージからファイルシステムをマウントするために使用されます。この機能は必須ではありませんが、便利です。
16.3. インストールシステム リンクのコピーリンクがクリップボードにコピーされました!
yum install libguestfs guestfish libguestfs-tools libguestfs-winsupport
# yum install libguestfs guestfish libguestfs-tools libguestfs-winsupport
yum install '*guestf*'
# yum install '*guestf*'
16.4. guestfish シェル リンクのコピーリンクがクリップボードにコピーされました!
guestfish --ro -a /path/to/disk/image
guestfish --ro -a /path/to/disk/image
16.4.1. guestfish を使用したファイルシステムの表示 リンクのコピーリンクがクリップボードにコピーされました!
16.4.1.1. 手動による一覧表示と表示 リンクのコピーリンクがクリップボードにコピーされました!
><fs> run ><fs> list-filesystems /dev/vda1: ntfs /dev/vda2: ntfs
><fs> run
><fs> list-filesystems
/dev/vda1: ntfs
/dev/vda2: ntfs
/dev/vda2) に示されている Windows パーティションの 1 つを使用します。この場合、これは C:\ドライブに対応することがわかっています。
16.4.1.2. guestfish 検査の使用 リンクのコピーリンクがクリップボードにコピーされました!
16.4.1.3. 名前によるゲスト仮想マシンのアクセス リンクのコピーリンクがクリップボードにコピーされました!
guestfish --ro -d GuestName -i
guestfish --ro -d GuestName -i
16.4.2. guestfish を使用したファイルの変更 リンクのコピーリンクがクリップボードにコピーされました!
/boot/grub/grub.conf ファイルーを編集する例を説明します。ゲスト仮想マシンがシャットダウンしていることを確認したら、以下のようなコマンドを使用して書き込みアクセスを取得するために --ro オプションを省略できます。
16.4.3. guestfish でのその他のアクション リンクのコピーリンクがクリップボードにコピーされました!
16.4.4. guestfish によるシェルスクリプト設定 リンクのコピーリンクがクリップボードにコピーされました!
16.4.5. Augeas スクリプトと libguestfs スクリプト リンクのコピーリンクがクリップボードにコピーされました!
- 2 番目の例では --ro オプションが削除され、ゲスト仮想マシンに書き込む機能が利用できるようになりました。
- aug-get コマンドが、フェッチではなく値を変更するように aug-set に変更されました。新しい値は"gb" (引用符を含む) になります。
- ここでは aug-save コマンドを使用しているため、Augeas は変更をディスクに書き込みます。
guestfish -N fs
guestfish -N fs
><fs> copy-out /home /tmp/home
><fs> copy-out /home /tmp/home
16.5. その他のコマンド リンクのコピーリンクがクリップボードにコピーされました!
- virt-cat は、guestfish download コマンドに似ています。ゲスト仮想マシンに 1 つのファイルをダウンロードして表示します。以下に例を示します。
virt-cat RHEL3 /etc/ntp.conf | grep ^server server 127.127.1.0 # local clock
# virt-cat RHEL3 /etc/ntp.conf | grep ^server server 127.127.1.0 # local clockCopy to Clipboard Copied! Toggle word wrap Toggle overflow - virt-edit は guestfish edit コマンドと似ています。これを使用すると、ゲスト仮想マシン内の 1 つのファイルを対話形式で編集できます。たとえば、Linux ベースのゲスト仮想マシンで、起動しない
grub.confファイルを修正する必要がある場合があります。virt-edit LinuxGuest /boot/grub/grub.conf
# virt-edit LinuxGuest /boot/grub/grub.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow virt-edit には別のモードがあり、このモードを使用すると、1 つのファイルにシンプルな非対話的な変更を加えることができます。これには、-e オプションが使用されます。たとえば、次のコマンドは、Linux ゲスト仮想マシンの root パスワードをパスワードなしに変更します。virt-edit LinuxGuest /etc/passwd -e 's/^root:.*?:/root::/'
# virt-edit LinuxGuest /etc/passwd -e 's/^root:.*?:/root::/'Copy to Clipboard Copied! Toggle word wrap Toggle overflow - virt-ls は guestfish の ls コマンド、ll コマンド、および find コマンドに似ています。これは、ディレクトリーを (再帰的に) 一覧表示するために使用されます。たとえば、以下のコマンドは、Linux ゲスト仮想マシンの /home 配下にファイルとディレクトリーを再帰的に一覧表示します。
virt-ls -R LinuxGuest /home/ | less
# virt-ls -R LinuxGuest /home/ | lessCopy to Clipboard Copied! Toggle word wrap Toggle overflow
16.6. virt-rescue: レスキューシェル リンクのコピーリンクがクリップボードにコピーされました!
16.6.1. はじめに リンクのコピーリンクがクリップボードにコピーされました!
16.6.2. virt-rescue の実行 リンクのコピーリンクがクリップボードにコピーされました!
virt-rescue GuestName
virt-rescue GuestName
virt-rescue /path/to/disk/image
virt-rescue /path/to/disk/image
><rescue> fdisk -l /dev/vda
><rescue> fdisk -l /dev/vda
/sysroot にマウントすることが推奨されます。これは、ユーザーが好きなものをマウントするためのレスキューマシンの空のディレクトリーです。/ のファイルは、レスキュー仮想マシン自体のファイルであることに注意してください。
- --ro: ゲスト仮想マシンで読み取り専用モードで操作します。変更は保存されません。これを使用して、ゲスト仮想マシンを実験できます。シェルを終了すると、変更はすべて破棄されます。
- --network: レスキューシェルからのネットワークアクセスを有効にします。たとえば、RPM またはその他のファイルをゲスト仮想マシンにダウンロードする必要がある場合に使用します。
16.7. virt-df: ディスク使用量のモニターリング リンクのコピーリンクがクリップボードにコピーされました!
16.7.1. はじめに リンクのコピーリンクがクリップボードにコピーされました!
16.7.2. virt-df の実行 リンクのコピーリンクがクリップボードにコピーされました!
virt-df /dev/vg_guests/RHEL6
# virt-df /dev/vg_guests/RHEL6
Filesystem 1K-blocks Used Available Use%
RHEL6:/dev/sda1 101086 10233 85634 11%
RHEL6:/dev/VolGroup00/LogVol00 7127864 2272744 4493036 32%
/dev/vg_guests/RHEL6 は Red Hat Enterprise Linux 6 ゲスト仮想マシンディスクイメージです。この場合のパスは、このディスクイメージが置かれているホストの物理マシンの論理ボリュームです。)
virt-df --csv WindowsGuest
# virt-df --csv WindowsGuest
Virtual Machine,Filesystem,1K-blocks,Used,Available,Use%
Win7x32,/dev/sda1,102396,24712,77684,24.1%
Win7x32,/dev/sda2,20866940,7786652,13080288,37.3%
16.8. virt-resize: ゲスト仮想マシンのオフラインでのサイズ変更 リンクのコピーリンクがクリップボードにコピーされました!
16.8.1. はじめに リンクのコピーリンクがクリップボードにコピーされました!
16.8.2. ディスクイメージの拡張 リンクのコピーリンクがクリップボードにコピーされました!
- サイズを変更するディスクイメージを探します。コマンド virsh dumpxml GuestName は、libvirt ゲスト仮想マシンに使用できます。
- ゲスト仮想マシンを拡張する方法を決定します。次の出力に示すように、ゲスト仮想マシンディスクで virt-df -h および virt-list-partitions -lh を実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 最初の (ブート) パーティションのサイズを、約 100MB から 500MB に増やします。
- ディスクの合計サイズを 8GB から 16GB に増やします。
- 2 番目のパーティションを展開して、残りの領域を埋めます。
/dev/VolGroup00/LogVol00を展開し、2 番目のパーティションの新しい領域を埋めます。
- ゲスト仮想マシンがシャットダウンしていることを確認します。
- 元のディスクの名前をバックアップとして変更します。これを行う方法は、元のディスクのホスト物理マシンのストレージ環境によって異なります。ファイルとして保存されている場合は、mv コマンドを実行します。(この例で示しているように) 論理ボリュームの場合は、lvrename を使用します。
lvrename /dev/vg_guests/RHEL6 /dev/vg_guests/RHEL6.backup
# lvrename /dev/vg_guests/RHEL6 /dev/vg_guests/RHEL6.backupCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 新しいディスクを作成します。この例の要件は、ディスクの合計サイズを最大 16GB まで拡張することです。論理ボリュームが使用されるため、以下のコマンドが使用されます。
lvcreate -L 16G -n RHEL6 /dev/vg_guests
# lvcreate -L 16G -n RHEL6 /dev/vg_guests Logical volume "RHEL6" createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 手順 2 の要件は、以下のコマンドで表されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最初の 2 つの引数は、入力ディスクと出力ディスクです。--resize /dev/sda1=500M は、最初のパーティションのサイズを最大 500MB に変更します。--expand /dev/sda2 は、残りのすべてのスペースを埋めるために 2 番目のパーティションを展開します。--LV-expand /dev/VolGroup00/LogVol00 は、ゲスト仮想マシンの論理ボリュームを拡張して、2 番目のパーティションの余分なスペースを埋めます。virt-resize は、出力で実行している処理を説明します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 仮想マシンを起動してみてください。正常に機能している場合 (および徹底的なテストを行った後) は、バックアップディスクを削除できます。失敗した場合は、仮想マシンをシャットダウンして、新しいディスクを削除し、バックアップディスクの名前を元の名前に戻します。
- virt-df または virt-list-partitions を使用して、新しいサイズを表示します。
virt-df -h /dev/vg_pin/RHEL6
# virt-df -h /dev/vg_pin/RHEL6 Filesystem Size Used Available Use% RHEL6:/dev/sda1 484.4M 10.8M 448.6M 3% RHEL6:/dev/VolGroup00/LogVol00 14.3G 2.2G 11.4G 16%Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16.9. virt-inspector: ゲスト仮想マシンの検査 リンクのコピーリンクがクリップボードにコピーされました!
16.9.1. はじめに リンクのコピーリンクがクリップボードにコピーされました!
16.9.2. インストールシステム リンクのコピーリンクがクリップボードにコピーされました!
yum install libguestfs-tools libguestfs-devel
# yum install libguestfs-tools libguestfs-devel
/usr/share/doc/libguestfs-devel-*/ にインストールされます。"*" は、libguestfs のバージョン番号に置き換えられます。
16.9.3. virt-inspector の実行 リンクのコピーリンクがクリップボードにコピーされました!
virt-inspector --xml disk.img > report.xml
virt-inspector --xml disk.img > report.xml
virt-inspector --xml GuestName > report.xml
virt-inspector --xml GuestName > report.xml
report.xml) になります。XML ファイルの主なコンポーネントは、通常、以下のように単一の <operatingsystem> 要素が含まれるトップレベルの <operatingsystems> 要素です。
virt-inspector --xml GuestName | xpath //application/name [...long list...]
virt-inspector --xml GuestName | xpath //application/name
[...long list...]
16.10. virt-win-reg: Windows レジストリーの読み取りと編集 リンクのコピーリンクがクリップボードにコピーされました!
16.10.1. はじめに リンクのコピーリンクがクリップボードにコピーされました!
16.10.2. インストールシステム リンクのコピーリンクがクリップボードにコピーされました!
yum install /usr/bin/virt-win-reg
# yum install /usr/bin/virt-win-reg
16.10.3. virt-win-reg を使用する リンクのコピーリンクがクリップボードにコピーされました!
virt-win-reg WindowsGuest \
'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall' \
| less
# virt-win-reg WindowsGuest \
'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall' \
| less
.REGファイルで使用される標準のテキストベースの形式です。
.REGファイルを転送するときに忠実度を確保する唯一の方法です。
perl -MEncode -pe's?hex\((\d+)\):(\S+)?$t=$1;$_=$2;s,\,,,g;"str($t):\"".decode(utf16le=>pack("H*",$_))."\""?eg'
perl -MEncode -pe's?hex\((\d+)\):(\S+)?$t=$1;$_=$2;s,\,,,g;"str($t):\"".decode(utf16le=>pack("H*",$_))."\""?eg'
.REG ファイルを準備する必要があります。この作業に関するドキュメントは、ここで入手できます。.REG ファイルを準備したら、次のように入力します。
virt-win-reg --merge WindowsGuest input.reg
# virt-win-reg --merge WindowsGuest input.reg
16.11. プログラミング言語からの API の使用 リンクのコピーリンクがクリップボードにコピーされました!
- C バインディングおよび C++ バインディングをインストールするには、以下のコマンドを実行します。
yum install libguestfs-devel
# yum install libguestfs-develCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Perl バインディングをインストールするには、以下のコマンドを実行します。
yum install 'perl(Sys::Guestfs)'
# yum install 'perl(Sys::Guestfs)'Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Python バインディングをインストールするには、以下のコマンドを実行します。
yum install python-libguestfs
# yum install python-libguestfsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Java バインディングをインストールするには、以下のコマンドを実行します。
yum install libguestfs-java libguestfs-java-devel libguestfs-javadoc
# yum install libguestfs-java libguestfs-java-devel libguestfs-javadocCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Ruby バインディングをインストールするには、以下のコマンドを実行します。
yum install ruby-libguestfs
# yum install ruby-libguestfsCopy to Clipboard Copied! Toggle word wrap Toggle overflow - OCaml バインディングをインストールするには、以下のコマンドを実行します。
yum install ocaml-libguestfs ocaml-libguestfs-devel
# yum install ocaml-libguestfs ocaml-libguestfs-develCopy to Clipboard Copied! Toggle word wrap Toggle overflow
guestfs_launch (g);
guestfs_launch (g);
$g->launch ()
$g->launch ()
g#launch ()
g#launch ()
- libguestfs API は同期的です。各呼び出しは、完了するまでブロックされます。非同期で呼び出しを行う場合は、スレッドを作成する必要があります。
- libguestfs の API はスレッドセーフではありません。各ハンドルは、1 つのスレッドからのみ使用する必要があります。または、スレッド間でハンドルを共有する場合は、独自のミューテックスを実装して、2 つのスレッドが同時に 1 つのハンドルでコマンドを実行できないようにします。
- 同じディスクイメージで複数のハンドルを開くことはできません。すべてのハンドルが読み取り専用である場合は許容されますが、推奨されません。
- そのディスクイメージ (たとえば、ライブ仮想マシン) を使用するものがない場合は、書き込み用にディスクイメージを追加しないでください。これを行うと、ディスクが破損します。
- 現在使用中のディスクイメージ (ライブ VM など) で読み取り専用ハンドルを開くことができます。ただし、特にディスクイメージを読み取っているときに大量に書き込まれている場合は、結果が予測できないか、一貫性がない可能性があります。
16.11.1. C プログラムを介した API との相互作用 リンクのコピーリンクがクリップボードにコピーされました!
test.c) に保存します。このプログラムをコンパイルし、以下の 2 つのコマンドを実行します。
gcc -Wall test.c -o test -lguestfs ./test
gcc -Wall test.c -o test -lguestfs
./test
disk.img と呼ばれ、現在のディレクトリーに作成されます。
- ハンドルを作成します。
- ハンドルにディスクを追加します。
- libguestfs バックエンドを起動します。
- パーティション、ファイルシステム、およびファイルを作成します。
- ハンドルを閉じて、終了します。
gcc -Wall test.c -o test -lguestfs ./test
gcc -Wall test.c -o test -lguestfs
./test
disk.img というディスクイメージが残ります。これは guestfish で調べることができます。
guestfish --ro -a disk.img -m /dev/sda1 ><fs> ll / ><fs> cat /foo/resolv.conf
guestfish --ro -a disk.img -m /dev/sda1
><fs> ll /
><fs> cat /foo/resolv.conf
16.12. virt-sysprep: 仮想マシン設定のリセット リンクのコピーリンクがクリップボードにコピーされました!
yum install libguestfs-tools-c
$ yum install libguestfs-tools-c
yum install /usr/bin/virt-sysprep
$ yum install /usr/bin/virt-sysprep
| コマンド | 説明 | 例 |
|---|---|---|
| --help | 特定のコマンドまたはパッケージ全体に関する簡単なヘルプエントリーを表示します。詳細なヘルプは、man ページの virt-sysprep を参照してください。 | $ virt-sysprep --help |
| -a [file] or --add [file] | 指定されたfileを追加します。これは、ゲスト仮想マシンからのディスクイメージである必要があります。ディスクイメージの形式は自動検出されます。これを上書きして、特定の形式に強制する場合は、--format オプションを使用します。 | $ virt-sysprep --add /dev/vms/disk.img |
| -c [URI] or --connect [URI] | libvirt を使用している場合は、指定の URI に接続します。省略した場合、KVM ハイパーバイザーを介して接続します。ゲストブロックデバイスを直接指定 (virt-sysprep -a) すると、libvirt はまったく使用されません。 | $ virt-sysprep -c qemu:///system |
| -d [guest] or --domain [guest] | 指定したゲスト仮想マシンのすべてのディスクを追加します。ドメイン名の代わりにドメイン UUID を使用できます。 | $ virt-sysprep --domain 90df2f3f-8857-5ba9-2714-7d95907b1c9e |
| -n または --dry-run または --dryrun | ゲスト仮想マシンで、読み取り専用の "dry run" sysprep 操作を実行します。これにより sysprep 操作が実行されますが、末尾のディスクに対する変更はすべて破棄されます。 | $ virt-sysprep -n |
| --enable [operations] | 指定したoperationsを有効にします。可能な操作の一覧を表示するには、--list コマンドを使用します。 | $ virt-sysprep --enable ssh-hotkeys,udev-persistent-net |
--format [raw|qcow2|auto] | -a オプションのデフォルトは、ディスクイメージの形式を自動検出することです。これを使用すると、コマンドラインに続く -a オプションのディスク形式が強制されます。--format auto を使用すると、後続の -a オプションの自動検出に戻ります (上述の -a コマンドを参照)。 | $ virt-sysprep --format raw -a disk.img は、disk.img に対して raw 形式 (自動検出なし) を強制しますが、virt-sysprep --format raw -a disk.img --format auto -a another.img は、disk.img に対して raw 形式 (自動検出なし) を強制し、another.img では自動検出に戻ります。信頼できない raw 形式のゲストディスクイメージがある場合は、このオプションを使用してディスク形式を指定する必要があります。これにより、悪意のあるゲストで発生する可能性のあるセキュリティーの問題を回避できます。 |
| --list-operations | virt-sysprep プログラムでサポートされている操作を一覧表示します。これらは、1 行に 1 つずつ表示され、1 つ以上の空白で区切られたフィールドがあります。出力の最初のフィールドは操作名であり、--enable フラグに指定できます。2 番目のフィールドは、操作がデフォルトで有効になっている場合は * 文字で、そうでない場合は空白になります。同じ行のその他のフィールドには、操作の説明が記載されています。 | $ virt-sysprep --list-operations |
| --mount-options | ゲスト仮想マシンの各マウントポイントにマウントオプションを設定します。mountpoint:options のペアのセミコロンで区切られたリストを使用します。この一覧をシェルから保護するために、この一覧の周囲に引用符を付ける必要がある場合があります。 | $ virt-sysprep --mount-options "/:notime" は、notime 操作で root ディレクトリーをマウントします。 |
| --selinux-relabel および --no-selinux-relabel | virt-sysprep は、ゲストの最初の起動時に SELinux の再ラベル付けを常にスケジュールするわけではありません。場合によっては、再ラベル付けが実行されます (たとえば、virt-sysprep がファイルを変更した場合)。ただし、すべての操作でファイルのみを削除する場合 (たとえば、--enable delete --delete /some/file を使用する場合)、再ラベル付けはスケジュールされません。--selinux-relabel オプションを使用すると、常に SELinux の再ラベル付けが強制されますが、--no-selinux-relabel が設定されている場合、再ラベル付けはスケジュールされません。--selinux-relabel を使用して、ファイルに正しい SELinux ラベルが付いていることを確認することをお勧めします。 | $ virt-sysprep --selinux-relabel |
| -q or --quiet | ログメッセージを出力しないようにします。 | $ virt-sysprep -q |
| -v or --verbose | デバッグ目的で詳細なメッセージを有効にします。 | $ virt-sysprep -v |
| -V または --version | virt-sysprep のバージョン番号を表示し、終了します。 | $ virt-sysprep -V |
| --root-password | root パスワードを設定します。新しいパスワードを明示的に指定する場合や、選択したファイルの最初の行の文字列を使用する場合に使用できます。これにより、安全性が高まります。 |
$ virt-sysprep
--root-password password:123456 -a guest.img
または
$ virt-sysprep
--root-password file:SOURCE_FILE_PATH -a guest.img
|
16.13. トラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
libguestfs-test-tool
$ libguestfs-test-tool
===== TEST FINISHED OK =====
===== TEST FINISHED OK =====
16.14. その他のドキュメントの入手先 リンクのコピーリンクがクリップボードにコピーされました!
第17章 ゲスト仮想マシン管理用のグラフィカルユーザーインターフェイスツール リンクのコピーリンクがクリップボードにコピーされました!
17.1. virt-viewer リンクのコピーリンクがクリップボードにコピーされました!
virt-viewer は、ゲスト仮想マシンのグラフィカルコンソールを表示するための最小限のコマンドラインユーティリティーです。コンソールには、VNC または SPICE プロトコルを使用してアクセスします。ゲストは、名前、ID、または UUID で参照できます。ゲストが実行していない場合は、ビューアーが起動するまで待機してからコンソールに接続するように設定できます。ビューアーはリモートホストに接続してコンソール情報を取得し、同じネットワークトランスポートを使用してリモートコンソールにも接続できます。
sudo yum install virt-viewer
# sudo yum install virt-viewer
構文
virt-viewer [OPTIONS] {guest-name|id|uuid}
# virt-viewer [OPTIONS] {guest-name|id|uuid}
ゲスト仮想マシンへの接続
virt-viewer guest-name-or-UUID
# virt-viewer guest-name-or-UUID
virt-viewer --connect qemu:///system guest-name-or-UUID
# virt-viewer --connect qemu:///system guest-name-or-UUID
virt-viewer --connect xen://example.org/ guest-name-or-UUID
# virt-viewer --connect xen://example.org/ guest-name-or-UUID
virt-viewer --direct --connect xen+ssh://root@example.org/ guest-name-or-UUID
# virt-viewer --direct --connect xen+ssh://root@example.org/ guest-name-or-UUID
Interface
図17.1 サンプルの virt-viewer インターフェイス
ホットキーの設定
--hotkeys オプションを使用します。
virt-viewer --hotkeys=action1=key-combination1[,action2=key-combination2] guest-name-or-UUID
# virt-viewer --hotkeys=action1=key-combination1[,action2=key-combination2] guest-name-or-UUID
- toggle-fullscreen
- release-cursor
- smartcard-insert
- smartcard-remove
例17.1 virt-viewer ホットキーの設定
virt-viewer --hotkeys=toggle-fullscreen=shift+f11 qemu:///system testguest
# virt-viewer --hotkeys=toggle-fullscreen=shift+f11 qemu:///system testguest
キオスクモード
-k または --kiosk オプションでゲストに接続します。
例17.2 キオスクモードでの virt-viewer の使用
virt-viewer --connect qemu:///system guest-name-or-UUID --kiosk --kiosk-quit on-disconnect
# virt-viewer --connect qemu:///system guest-name-or-UUID --kiosk --kiosk-quit on-disconnect
17.2. remote-viewer リンクのコピーリンクがクリップボードにコピーされました!
remote-viewer は、SPICE および VNC に対応するシンプルなリモートデスクトップディスプレイクライアントです。これは、機能のほとんどと制限を virt-viewer と共有します。
remote-viewer ユーティリティーをインストールするには、以下を実行します。
sudo yum install virt-viewer
# sudo yum install virt-viewer
構文
remote-viewer [OPTIONS] {guest-name|id|uuid}
# remote-viewer [OPTIONS] {guest-name|id|uuid}
ゲスト仮想マシンへの接続
例17.3 SPICE を使用したゲストディスプレイへの接続
remote-viewer spice://testguest:5900
# remote-viewer spice://testguest:5900
例17.4 VNC を使用したゲストディスプレイへの接続
testguest2 と呼ばれるマシンの VNC サーバーに接続します。
remote-viewer vnc://testguest2:5900
# remote-viewer vnc://testguest2:5900
Interface
図17.2 サンプルの remote-viewer インターフェイス
第18章 仮想ネットワーク リンクのコピーリンクがクリップボードにコピーされました!
18.1. 仮想ネットワークスイッチ リンクのコピーリンクがクリップボードにコピーされました!
図18.1 2 つのゲストを持つ仮想ネットワークスイッチ
ip addr show virbr0
$ ip addr show virbr0
3: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether 1b:c4:94:cf:fd:17 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
18.2. ブリッジモード リンクのコピーリンクがクリップボードにコピーされました!
図18.2 ブリッジモードの仮想ネットワークスイッチ
18.3. ネットワークアドレス変換モード リンクのコピーリンクがクリップボードにコピーされました!
図18.3 2 つのゲストで NAT を使用する仮想ネットワークスイッチ
iptables -j SNAT --to-source [start]-[end]
# iptables -j SNAT --to-source [start]-[end]
18.3.1. DNS および DHCP リンクのコピーリンクがクリップボードにコピーされました!
図18.4 dnsmasq を実行している仮想ネットワークスイッチ
18.4. ルーティングモード リンクのコピーリンクがクリップボードにコピーされました!
図18.5 ルーティングモードの仮想ネットワークスイッチ
18.5. 分離モード リンクのコピーリンクがクリップボードにコピーされました!
図18.6 分離モードの仮想ネットワークスイッチ
18.6. デフォルト設定 リンクのコピーリンクがクリップボードにコピーされました!
libvirtd におけるこの既定の設定を示しています。
図18.7 デフォルトの libvirt ネットワーク設定
eth0、eth1、および eth2)。これは、ルーティングモードおよび NAT モードでのみ役に立ち、新しい仮想ネットワークを作成する場合は、dev=<interface> オプション、または virt-manager で定義できます。
18.7. 一般的なシナリオの例 リンクのコピーリンクがクリップボードにコピーされました!
18.7.1. ブリッジモード リンクのコピーリンクがクリップボードにコピーされました!
- 既存ネットワークにゲスト仮想マシンをホスト物理マシンとともにデプロイすると、仮想マシンと物理マシンの違いがエンドユーザーに透過的になります。
- 既存の物理ネットワーク設定を変更せずに仮想マシンをデプロイします。
- 既存の物理ネットワークに簡単にアクセスできる必要があるゲスト仮想マシンをデプロイします。既存のブロードキャストドメイン (DHCP など) のサービスにアクセスする必要がある物理ネットワークにゲスト仮想マシンを配置します。
- VLAN が使用されている既存のネットワークにゲスト仮想マシンを接続する。
18.7.2. ルーティングモード リンクのコピーリンクがクリップボードにコピーされました!
DMZ
セキュリティー上の理由から、1 つ以上のノードが制御されたサブネットワークに配置されているネットワークを検討してください。このような特別なサブネットワークのデプロイメントは一般的な慣例であり、サブネットワークは DMZ と呼ばれています。このレイアウトの詳細は、以下の図を参照してください。
図18.8 サンプルの DMZ 設定
仮想サーバーのホスト
それぞれが 2 つの物理ネットワーク接続のある複数のホスト物理マシンを持つ仮想サーバーホスティング会社について考えてみます。管理とアカウンティングにはいずれかのインターフェイスが使用されており、もう 1 つは仮想マシンによる接続用です。各ゲストには独自のパブリック IP アドレスがありますが、ホストの物理マシンはプライベート IP アドレスを使用するため、ゲストの管理は内部管理者しか行えません。このシナリオを理解するには、以下の図を参照してください。
図18.9 仮想サーバーホスティングのサンプル設定
18.7.3. NAT モード リンクのコピーリンクがクリップボードにコピーされました!
18.7.4. 分離モード リンクのコピーリンクがクリップボードにコピーされました!
18.8. 仮想ネットワークの管理 リンクのコピーリンクがクリップボードにコピーされました!
- Edit メニューから、Connection Details を選択します。
図18.10 ホスト物理マシンの詳細の選択
- これにより、 メニューーが開きます。Virtual Networks タブをクリックします。
図18.11 仮想ネットワークの設定
- 使用可能なすべての仮想ネットワークは、メニューの左側のボックスに一覧表示されます。このボックスから仮想ネットワークを選択し、必要に応じて編集することで、仮想ネットワークの設定を編集できます。
18.9. 仮想ネットワークの作成 リンクのコピーリンクがクリップボードにコピーされました!
- Connection Details メニューから Virtual Networks タブを開きます。プラス記号 (+) のアイコンで識別される ボタンをクリックします。詳細は、「仮想ネットワークの管理」 を参照してください。
図18.12 仮想ネットワークの設定
これにより、 ウィンドウが開きます。 をクリックして続けます。図18.13 新しい仮想ネットワークの作成
- 仮想ネットワークに適切な名前を入力し、 をクリックします。
図18.14 仮想ネットワークに名前を付ける
- 仮想ネットワークの IPv4 アドレス空間を入力し、 をクリックします。
図18.15 IPv4 アドレス空間の選択
- IP アドレスの Start 範囲および End 範囲を指定して、仮想ネットワークに DHCP 範囲を定義します。 をクリックして続けます。
図18.16 DHCP 範囲の選択
- 仮想ネットワークを物理ネットワークに接続する方法を選択します。
図18.17 物理ネットワークへの接続
Forwarding to physical networkを選択した場合は、Destinationを Any physical device にするか、特定の物理デバイスにするかを選択します。また、Modeを NAT にするか、Routed にするかを選択します。をクリックして続けます。 - これで、ネットワークを作成する準備が整いました。ネットワークの設定を確認し、 をクリックします。
図18.18 ネットワークを作成する準備ができました
- 新しい仮想ネットワークが、 Connection Details ウィンドウの Virtual Networks タブで利用できるようになります。
18.10. 仮想ネットワークのゲストへの割り当て リンクのコピーリンクがクリップボードにコピーされました!
- Virtual Machine Manager ウィンドウで、ネットワークが割り当てられるゲストを強調表示します。
図18.19 表示する仮想マシンの選択
- 仮想マシンマネージャーのEdit メニューから、Virtual Machine Details を選択します。
図18.20 仮想マシンの詳細の表示
- Virtual Machine Details ウィンドウの Add Hardware ボタンをクリックします。
図18.21 仮想マシンの詳細ウィンドウ
- Add new virtual hardware ウィンドウで、左側のペインから Network を選択し、Host device メニューからネットワーク名 (この例では network1) を選択して、 をクリックします。
図18.22 Add new virtual hardware ウィンドウからネットワークを選択します
- 新しいネットワークが、起動時にゲストに表示される仮想ネットワークインターフェイスとして表示されるようになりました。
図18.23 ゲストハードウェア一覧に新しいネットワークが表示されました。
18.11. 物理インターフェイスへの仮想 NIC の直接接続 リンクのコピーリンクがクリップボードにコピーされました!
物理インターフェイスの配信モード
- VEPA
- 仮想イーサネットポートアグリゲーター (VEPA) モードでは、ゲストからのすべてのパケットが外部スイッチに送信されます。これにより、ユーザーはスイッチを介してゲストトラフィックを強制的に送信できます。VEPA モードが適切に機能するには、外部スイッチも ヘアピンモード に対応する必要があります。これにより、宛先がソースゲストと同じホストマシンのゲストであるパケットが、外部スイッチによりホストに返されます。
図18.24 VEPA モード
- bridge
- 宛先がソースゲストと同じホストマシン上にあるパケットは、ターゲットの macvtap デバイスに直接配信されます。直接配信を成功させるには、ソースデバイスとターゲットデバイスの両方がブリッジモードになっている必要があります。いずれかのデバイスが VEPA モードの場合は、ヘアピン対応の外部スイッチが必要です。
図18.25 ブリッジモード
- プライベート
- すべてのパケットは外部スイッチに送信されます。また、外部ルーターまたはゲートウェイを介して送信され、これらがホストに送り返す場合に、同じホストマシン上のターゲットゲストにのみ配信されます。プライベートモードを使用すると、1 台のホスト上にある個別の仮想マシン間での通信を阻止することができます。移行元デバイスまたは移行先デバイスのいずれかがプライベートモードの場合は、以下の手順が行われます。
図18.26 プライベートモード
- パススルー
- この機能は、移行機能を失うことなく、物理インターフェイスデバイスまたはSR-IOV 仮想機能 (VF) をゲストに直接接続します。すべてのパケットは、指定されたネットワークデバイスに直接送信されます。パススルーモードではネットワークデバイスをゲスト間で共有できないため、ネットワークデバイスは 1 つのゲストにしか渡せないことに注意してください。
図18.27 passthrough モード
Virtual Station Interface のタイプ
- managerid
- VSI Manager ID は、VSI タイプおよびインスタンス定義を含むデータベースを識別します。これは整数値で、値 0 は予約されています。
- typeid
- VSI タイプ ID は、ネットワークアクセスを特徴付ける VSI タイプを識別します。VSI の種類は通常、ネットワーク管理者が管理します。これは整数値です。
- typeidversion
- VSI タイプバージョンでは、複数のバージョンの VSI タイプが許可されます。これは整数値です。
- instanceid
- VSI インスタンス ID 識別子は、VSI インスタンス (仮想マシンの仮想インターフェイス) が作成されると生成されます。これは、グローバルに一意の識別子です。
- profileid
- プロファイル ID には、このインターフェイスに適用されるポートプロファイルの名前が含まれます。この名前は、ポートプロファイルデータベースにより、ポートプロファイルからネットワークパラメーターに解決され、これらのネットワークパラメーターはこのインターフェイスに適用されます。
18.12. ネットワークフィルターの適用 リンクのコピーリンクがクリップボードにコピーされました!
18.12.1. はじめに リンクのコピーリンクがクリップボードにコピーされました!
- network
- ethernet -- bridging モードで使用する必要があります。
- bridge
例18.1 ネットワークフィルターリングの例
例18.2 説明の拡張
18.12.2. チェーンのフィルター リンクのコピーリンクがクリップボードにコピーされました!
- root
- mac
- stp (スパニングツリープロトコル)
- vlan
- arp と rarp
- ipv4
- ipv6
例18.3 ARP トラフィックフィルターリング
18.12.3. チェーンの優先度のフィルターリング リンクのコピーリンクがクリップボードにコピーされました!
| チェーン (接頭辞) | デフォルトの優先度 |
|---|---|
| stp | -810 |
| mac | -800 |
| vlan | -750 |
| ipv4 | -700 |
| ipv6 | -600 |
| arp | -500 |
| rarp | -400 |
18.12.4. フィルターにおける変数の使用 リンクのコピーリンクがクリップボードにコピーされました!
MAC は、ネットワークインターフェイスの MAC アドレスに指定されます。この変数を参照するフィルターリングルールは、自動的にインターフェイスの MAC アドレスに置き換えられます。これは、MAC パラメーターを明示的に指定する必要なく機能します。上記の IP パラメーターに似た MAC パラメーターを指定できる場合でも、libvirt は、インターフェイスが使用する MAC アドレスを認識しているため、推奨できません。
IP は、仮想マシン内のオペレーティングシステムが、指定のインターフェイスで使用する IP アドレスを表します。パラメーターが明示的に指定されずに参照されている場合に、インターフェイスで使用されている IP アドレス (つまり IP パラメーターの値) を libvirt デーモンが判断しようとする限り、IP パラメーターは特別なものとなります。現在の IP アドレス検出の制限は、この機能の使用方法と、その使用時に想定される制限に関する「制限事項」を参照してください。「チェーンのフィルター」 に示す XML ファイルには、フィルター no-arp-spoofing が含まれています。これは、ネットワークフィルター XML を使用して MAC 変数および IP 変数を参照する例です。
$ という文字が付くことに注意してください。変数の値の形式は、XML で識別されるフィルター属性で期待されるタイプである必要があります。上記の例では、IP パラメーターは、標準形式の正しい IP アドレスを保持する必要があります。正しい構造を指定しないと、フィルター変数が値に置き換わりません。また、ホットプラグの使用時に、仮想マシンの起動が妨げられたり、インターフェイスの接続が妨げられたりします。各 XML 属性で期待されるタイプの一部を、サンプル例18.4「サンプルの変数の種類」に示します。
例18.4 サンプルの変数の種類
<rule action='accept' direction='in' priority='500'>
<tcp srpipaddr='$IP'/>
</rule>
<rule action='accept' direction='in' priority='500'>
<tcp srpipaddr='$IP'/>
</rule>
<rule action='accept' direction='in' priority='500'>
<udp dstportstart='$DSTPORTS[1]'/>
</rule>
<rule action='accept' direction='in' priority='500'>
<udp dstportstart='$DSTPORTS[1]'/>
</rule>
例18.5 さまざまな変数の使用
<rule action='accept' direction='in' priority='500'>
<ip srcipaddr='$SRCIPADDRESSES[@1]' dstportstart='$DSTPORTS[@2]'/>
</rule>
<rule action='accept' direction='in' priority='500'>
<ip srcipaddr='$SRCIPADDRESSES[@1]' dstportstart='$DSTPORTS[@2]'/>
</rule>
SRCIPADDRESSES = [ 10.0.0.1, 11.1.2.3 ] DSTPORTS = [ 80, 8080 ]
SRCIPADDRESSES = [ 10.0.0.1, 11.1.2.3 ]
DSTPORTS = [ 80, 8080 ]
- 10.0.0.1, 80
- 10.0.0.1, 8080
- 11.1.2.3, 80
- 11.1.2.3, 8080
- 10.0.0.1, 80
- 11.1.2.3, 8080
18.12.5. 自動 IP アドレス検出と DHCP スヌーピング リンクのコピーリンクがクリップボードにコピーされました!
18.12.5.1. はじめに リンクのコピーリンクがクリップボードにコピーされました!
CTRL_IP_LEARNING を使用して、使用する IP アドレスの学習方法を指定できます。有効な値は、any、dhcp、または none です。
TRL_IP_LEARNING が設定されていない場合のデフォルト設定です。この方法では、インターフェイスごとに 1 つの IP アドレスのみが検出されます。ゲスト仮想マシンの IP アドレスが検出されると、IP アドレススプーフィングがフィルターのいずれかで阻止された場合などに、そのアドレスへの IP ネットワークトラフィックがロックされます。この場合、仮想マシンのユーザーはゲスト仮想マシン内のインターフェイスで IP アドレスを変更できません。このインターフェイスは、IP アドレスのスプーフィングと見なされます。ゲスト仮想マシンが別のホスト物理マシンに移行されるか、サスペンド操作後に再開されると、ゲスト仮想マシンによって送信される最初のパケットによって、ゲスト仮想マシンが特定のインターフェイスで使用できる IP アドレスが再度決定されます。
18.12.5.2. DHCP スヌーピング リンクのコピーリンクがクリップボードにコピーされました!
DHCPSERVER を、有効な DHCP サーバーの IP アドレスに設定し、この変数を使用して着信 DHCP 応答をフィルターリングするフィルターを提供します。
例18.6 DHCP スヌーピングに対する IP のアクティブ化
18.12.6. 予約されている変数 リンクのコピーリンクがクリップボードにコピーされました!
| 変数名 | 定義 |
|---|---|
| MAC | インターフェイスの MAC アドレス |
| IP | インターフェイスで使用されている IP アドレスの一覧 |
| IPV6 | 現在実装されていません。インターフェイスで使用中の IPV6 アドレスの一覧を表示します。 |
| DHCPSERVER | 信頼できる DHCP サーバーの IP アドレスの一覧 |
| DHCPSERVERV6 | 現在実装されていない: 信頼できる DHCP サーバーの IPv6 アドレスのリスト |
| CTRL_IP_LEARNING | IP アドレス検出モードの選択 |
18.12.7. 要素と属性の概要 リンクのコピーリンクがクリップボードにコピーされました!
<filter> という名前が付けられています。name 属性は、指定されたフィルターの一意の名前を提供します。chain 属性は任意ですが、基本となるホスト物理マシンのファイアウォールサブシステムを使用すると、効率的に処理するために、特定のフィルターをより適切に編成できます。現在、システムがサポートしているのは、root、ipv4、ipv6、arp、および rarp のチェーンのみです。
18.12.8. その他のフィルターの参照 リンクのコピーリンクがクリップボードにコピーされました!
例18.7 クリーンなトラフィックフィルターの例
18.12.9. フィルタールール リンクのコピーリンクがクリップボードにコピーされました!
例18.8 ネットワークトラフィックフィルターリングの例
- action は必須で、次の値を指定できます。
- drop (ルールに一致すると、分析は行われずにパケットが静かに破棄されます)
- reject (ルールを一致させると、分析は行われずに ICMP 拒否メッセージが生成されます)
- accept (ルールを一致させるとパケットを受け付けますが、これ以上分析は行いません)
- return (ルールを一致させるとこのフィルターが渡されますが、制御を呼び出しフィルターに戻して詳細な分析を行います)
- continue (ルールの一致は次のルールに進み、詳細な分析が行われます)
- direction は必須で、次の値を指定できます。
- 着信トラフィックには in
- 送信トラフィックには out
- 着信および送信トラフィックには inout
- priority は任意です。ルールの優先度は、他のルールに関連してルールがインスタンス化される順序を制御します。値が低いルールは、値が大きいルールの前にインスタンス化されます。有効な値の範囲は、-1000 から 1000 です。この属性を指定しないと、優先度 500 がデフォルトで割り当てられます。root チェーンのフィルターリングルールは、優先順位に従って、root チェーンに接続されたフィルターでソートルールが分類されることに注意してください。これにより、フィルターリングルールとフィルターチェーンへのアクセスをインターリーブできます。詳細は、「チェーンの優先度のフィルターリング」 を参照してください。
- statematch はオプションです。設定可能な値は 0 または false で、基本的な接続状態の一致を無効にします。デフォルトの設定は true または 1 です。
18.12.10. サポートされているプロトコル リンクのコピーリンクがクリップボードにコピーされました!
srcipaddr を示しています。以下のセクションでは、どの属性が有効で、どのタイプのデータが期待されるかを示します。使用可能なデータ型は以下のとおりです。
- UINT8 : 8 ビット整数。範囲 0〜255
- UINT16 : 16 ビット整数。範囲 0〜65535
- MAC_ADDR: 00:11:22:33:44:55 などのドット付き 10 進形式の MAC アドレス
- MAC_MASK: FF:FF:FF:FC:00:00 などの MAC アドレス形式の MAC アドレスマスク
- IP_ADDR: 10.1.2.3 などのドット付き 10 進形式の IP アドレス
- P_MASK: ドット付き 10 進数形式 (255.255.248.0) または CIDR マスク (0-32) の IP アドレスマスク
- IPV6_ADDR: FFFF::1 などの数値形式の IPv6 アドレス
- IPV6_MASK: 数値形式の IPv6 マスク (FFFF:FFFF:FC00::) または CIDR マスク (0-128)
- STRING: 文字列
- BOOLEAN - 'true'、'yes'、'1'、または 'false'、'no'、'0'
- IPSETFLAGS: ipset の送信元フラグおよび宛先フラグで、パケットヘッダーの送信元部分または宛先部分から機能を選択する最大 6 つの 'src' 要素または 'dst' 要素 (例: src、src、dst) で記述されます。ここで提供する 'selectors' の数は、参照される ipset のタイプによって異なります。
IP_MASK または IPV6_MASK タイプのものを除くすべての属性は、値が no の match 属性を使用して除外できます。複数の否定属性をまとめてグループ化できます。以下の XML フラグメントは、抽象属性を使用したこのような例を示しています。
attribute1 value1と一致せず、プロトコルプロパティーattribute2は value2 と一致せず、プロトコルプロパティー attribute3 は value3 と一致します。
18.12.10.1. MAC(イーサネット) リンクのコピーリンクがクリップボードにコピーされました!
| 属性名 | データタイプ | 定義 |
|---|---|---|
| srcmacaddr | MAC_ADDR | 送信側の MAC アドレス |
| srcmacmask | MAC_MASK | 送信元の MAC アドレスに適用されるマスク |
| dstmacaddr | MAC_ADDR | 宛先の MAC アドレス |
| dstmacmask | MAC_MASK | 宛先の MAC アドレスに適用されるマスク |
| protocolid | UINT16 (0x600-0xffff), STRING | レイヤー 3 プロトコル ID。有効な文字列は、[arp, rarp, ipv4, ipv6] などです。 |
| comment | STRING | 最大 256 文字のテキスト文字列 |
[...] <mac match='no' srcmacaddr='$MAC'/> [...]
[...]
<mac match='no' srcmacaddr='$MAC'/>
[...]
18.12.10.2. VLAN (802.1Q) リンクのコピーリンクがクリップボードにコピーされました!
| 属性名 | データタイプ | 定義 |
|---|---|---|
| srcmacaddr | MAC_ADDR | 送信側の MAC アドレス |
| srcmacmask | MAC_MASK | 送信元の MAC アドレスに適用されるマスク |
| dstmacaddr | MAC_ADDR | 宛先の MAC アドレス |
| dstmacmask | MAC_MASK | 宛先の MAC アドレスに適用されるマスク |
| vlan-id | UINT16 (0x0-0xfff, 0 - 4095) | VLAN ID |
| encap-protocol | UINT16 (0x03c-0xfff), String | カプセル化レイヤー 3 プロトコル ID で、有効な文字列は arp、ipv4、ipv6 です。 |
| comment | STRING | 最大 256 文字のテキスト文字列 |
18.12.10.3. STP (スパニングツリープロトコル) リンクのコピーリンクがクリップボードにコピーされました!
| 属性名 | データタイプ | 定義 |
|---|---|---|
| srcmacaddr | MAC_ADDR | 送信側の MAC アドレス |
| srcmacmask | MAC_MASK | 送信元の MAC アドレスに適用されるマスク |
| type | UINT8 | BPDU (Bridge Protocol Data Unit) のタイプ |
| flags | UINT8 | BPDU flagdstmacmask |
| root-priority | UINT16 | root 優先度の範囲の開始 |
| root-priority-hi | UINT16 (0x0-0xfff, 0 - 4095) | root 優先度の範囲の終了 |
| root-address | MAC _ADDRESS | root の MAC アドレス |
| root-address-mask | MAC _MASK | root の MAC アドレスマスク |
| roor-cost | UINT32 | root パスコスト (範囲開始) |
| root-cost-hi | UINT32 | root パスコスト範囲の終了 |
| sender-priority-hi | UINT16 | 送信者優先度の範囲の終了 |
| sender-address | MAC_ADDRESS | BPDU 送信側 MAC アドレス |
| sender-address-mask | MAC_MASK | BPDU 送信側 MAC アドレスマスク |
| port | UINT16 | ポート識別子 (範囲開始) |
| port_hi | UINT16 | ポート識別子の範囲の終了 |
| msg-age | UINT16 | メッセージエージタイマー (範囲開始) |
| msg-age-hi | UINT16 | メッセージエージタイマーの範囲の終了 |
| max-age-hi | UINT16 | 最大エージタイマーの範囲の終了 |
| hello-time | UINT16 | Hello time タイマー (範囲開始) |
| hello-time-hi | UINT16 | Hello time タイマーの範囲の終了 |
| forward-delay | UINT16 | 転送遅延 (範囲開始) |
| forward-delay-hi | UINT16 | 転送遅延の範囲の終了 |
| comment | STRING | 最大 256 文字のテキスト文字列 |
18.12.10.4. ARP/RARP リンクのコピーリンクがクリップボードにコピーされました!
| 属性名 | データタイプ | 定義 |
|---|---|---|
| srcmacaddr | MAC_ADDR | 送信側の MAC アドレス |
| srcmacmask | MAC_MASK | 送信元の MAC アドレスに適用されるマスク |
| dstmacaddr | MAC_ADDR | 宛先の MAC アドレス |
| dstmacmask | MAC_MASK | 宛先の MAC アドレスに適用されるマスク |
| hwtype | UINT16 | ハードウェアの種類 |
| protocoltype | UINT16 | プロトコルタイプ |
| opcode | UINT16, STRING | Opcode の有効な文字列は、Request、Reply、Request_Reverse、Reply_Reverse、DRARP_Request、DRARP_Reply、DRARP_Error、InARP_Request、ARP_NAK です。 |
| arpsrcmacaddr | MAC_ADDR | ARP/RARP パケットのソース MAC アドレス |
| arpdstmacaddr | MAC _ADDR | ARP/RARP パケットの宛先 MAC アドレス |
| arpsrcipaddr | IP_ADDR | ARP/RARP パケットのソース IP アドレス |
| arpdstipaddr | IP_ADDR | ARP/RARP パケットの宛先 IP アドレス |
| gratuitous | BOOLEAN | Gratuitous ARP パケットを確認するかどうかを示すブール値 |
| comment | STRING | 最大 256 文字のテキスト文字列 |
18.12.10.5. IPv4 リンクのコピーリンクがクリップボードにコピーされました!
| 属性名 | データタイプ | 定義 |
|---|---|---|
| srcmacaddr | MAC_ADDR | 送信側の MAC アドレス |
| srcmacmask | MAC_MASK | 送信元の MAC アドレスに適用されるマスク |
| dstmacaddr | MAC_ADDR | 宛先の MAC アドレス |
| dstmacmask | MAC_MASK | 宛先の MAC アドレスに適用されるマスク |
| srcipaddr | IP_ADDR | ソース IP アドレス |
| srcipmask | IP_MASK | マスクがソース IP アドレスに適用されました。 |
| dstipaddr | IP_ADDR | 宛先 IP アドレス |
| dstipmask | IP_MASK | 宛先 IP アドレスに適用されるマスク |
| protocol | UINT8, STRING | レイヤー 4 プロトコル識別子。protocol に有効な文字列は、tcp、udp、udplite、esp、ah、icmp、igmp、sctp などです。 |
| srcportstart | UINT16 | 有効なソースポートの範囲の開始。プロトコルが必要です。 |
| srcportend | UINT16 | 有効なソースポートの範囲の終了。プロトコルが必要です。 |
| dstportstart | UNIT16 | 有効な宛先ポートの範囲の開始。プロトコルが必要です。 |
| dstportend | UNIT16 | 有効な宛先ポートの範囲の終了。プロトコルが必要です。 |
| comment | STRING | 最大 256 文字のテキスト文字列 |
18.12.10.6. IPv6 リンクのコピーリンクがクリップボードにコピーされました!
| 属性名 | データタイプ | 定義 |
|---|---|---|
| srcmacaddr | MAC_ADDR | 送信側の MAC アドレス |
| srcmacmask | MAC_MASK | 送信元の MAC アドレスに適用されるマスク |
| dstmacaddr | MAC_ADDR | 宛先の MAC アドレス |
| dstmacmask | MAC_MASK | 宛先の MAC アドレスに適用されるマスク |
| srcipaddr | IP_ADDR | ソース IP アドレス |
| srcipmask | IP_MASK | マスクがソース IP アドレスに適用されました。 |
| dstipaddr | IP_ADDR | 宛先 IP アドレス |
| dstipmask | IP_MASK | 宛先 IP アドレスに適用されるマスク |
| protocol | UINT8, STRING | レイヤー 4 プロトコル識別子。protocol に有効な文字列は、tcp、udp、udplite、esp、ah、icmpv6、sctp などです。 |
| scrportstart | UNIT16 | 有効なソースポートの範囲の開始。プロトコルが必要です。 |
| srcportend | UINT16 | 有効なソースポートの範囲の終了。プロトコルが必要です。 |
| dstportstart | UNIT16 | 有効な宛先ポートの範囲の開始。プロトコルが必要です。 |
| dstportend | UNIT16 | 有効な宛先ポートの範囲の終了。プロトコルが必要です。 |
| comment | STRING | 最大 256 文字のテキスト文字列 |
18.12.10.7. TCP/UDP/SCTP リンクのコピーリンクがクリップボードにコピーされました!
| 属性名 | データタイプ | 定義 |
|---|---|---|
| srcmacaddr | MAC_ADDR | 送信側の MAC アドレス |
| srcipaddr | IP_ADDR | ソース IP アドレス |
| srcipmask | IP_MASK | マスクがソース IP アドレスに適用されました。 |
| dstipaddr | IP_ADDR | 宛先 IP アドレス |
| dstipmask | IP_MASK | 宛先 IP アドレスに適用されるマスク |
| scripto | IP_ADDR | ソース IP アドレスの範囲の開始 |
| srcipfrom | IP_ADDR | ソース IP アドレスの範囲の終了 |
| dstipfrom | IP_ADDR | 宛先 IP アドレスの範囲の開始 |
| dstipto | IP_ADDR | 宛先 IP アドレスの範囲の終了 |
| scrportstart | UNIT16 | 有効なソースポートの範囲の開始。プロトコルが必要です。 |
| srcportend | UINT16 | 有効なソースポートの範囲の終了。プロトコルが必要です。 |
| dstportstart | UNIT16 | 有効な宛先ポートの範囲の開始。プロトコルが必要です。 |
| dstportend | UNIT16 | 有効な宛先ポートの範囲の終了。プロトコルが必要です。 |
| comment | STRING | 最大 256 文字のテキスト文字列 |
| state | STRING | NEW、ESTABLISHED、RELATED、INVALID、または NONE のコンマ区切りのリスト |
| flags | STRING | TCP のみ - mask/flags の形式で、mask と flags の各々が、SYN、ACK、URG、PSH、FIN、RST、NONE、ALL のコンマで区切りリストになります。 |
| ipset | STRING | libvirt の外部で管理される IPSet の名前 |
| ipsetflags | IPSETFLAGS | IPSet のフラグ。ipset 属性が必要です。 |
18.12.10.8. ICMP リンクのコピーリンクがクリップボードにコピーされました!
| 属性名 | データタイプ | 定義 |
|---|---|---|
| srcmacaddr | MAC_ADDR | 送信側の MAC アドレス |
| srcmacmask | MAC_MASK | 送信側の MAC アドレスに適用されるマスク |
| dstmacaddr | MAD_ADDR | 宛先の MAC アドレス |
| dstmacmask | MAC_MASK | 宛先の MAC アドレスに適用されるマスク |
| srcipaddr | IP_ADDR | ソース IP アドレス |
| srcipmask | IP_MASK | マスクがソース IP アドレスに適用されました。 |
| dstipaddr | IP_ADDR | 宛先 IP アドレス |
| dstipmask | IP_MASK | 宛先 IP アドレスに適用されるマスク |
| srcipfrom | IP_ADDR | ソース IP アドレスの範囲の開始 |
| scripto | IP_ADDR | ソース IP アドレスの範囲の終了 |
| dstipfrom | IP_ADDR | 宛先 IP アドレスの範囲の開始 |
| dstipto | IP_ADDR | 宛先 IP アドレスの範囲の終了 |
| type | UNIT16 | ICMP のタイプ |
| code | UNIT16 | ICMP コード |
| comment | STRING | 最大 256 文字のテキスト文字列 |
| state | STRING | NEW、ESTABLISHED、RELATED、INVALID、または NONE のコンマ区切りのリスト |
| ipset | STRING | libvirt の外部で管理される IPSet の名前 |
| ipsetflags | IPSETFLAGS | IPSet のフラグ。ipset 属性が必要です。 |
18.12.10.9. IGMP、ESP、AH、UDPLITE、'ALL' リンクのコピーリンクがクリップボードにコピーされました!
| 属性名 | データタイプ | 定義 |
|---|---|---|
| srcmacaddr | MAC_ADDR | 送信側の MAC アドレス |
| srcmacmask | MAC_MASK | 送信側の MAC アドレスに適用されるマスク |
| dstmacaddr | MAD_ADDR | 宛先の MAC アドレス |
| dstmacmask | MAC_MASK | 宛先の MAC アドレスに適用されるマスク |
| srcipaddr | IP_ADDR | ソース IP アドレス |
| srcipmask | IP_MASK | マスクがソース IP アドレスに適用されました。 |
| dstipaddr | IP_ADDR | 宛先 IP アドレス |
| dstipmask | IP_MASK | 宛先 IP アドレスに適用されるマスク |
| srcipfrom | IP_ADDR | ソース IP アドレスの範囲の開始 |
| scripto | IP_ADDR | ソース IP アドレスの範囲の終了 |
| dstipfrom | IP_ADDR | 宛先 IP アドレスの範囲の開始 |
| dstipto | IP_ADDR | 宛先 IP アドレスの範囲の終了 |
| comment | STRING | 最大 256 文字のテキスト文字列 |
| state | STRING | NEW、ESTABLISHED、RELATED、INVALID、または NONE のコンマ区切りのリスト |
| ipset | STRING | libvirt の外部で管理される IPSet の名前 |
| ipsetflags | IPSETFLAGS | IPSet のフラグ。ipset 属性が必要です。 |
18.12.10.10. IPV6 経由の TCP/UDP/SCTP リンクのコピーリンクがクリップボードにコピーされました!
| 属性名 | データタイプ | 定義 |
|---|---|---|
| srcmacaddr | MAC_ADDR | 送信側の MAC アドレス |
| srcipaddr | IP_ADDR | ソース IP アドレス |
| srcipmask | IP_MASK | マスクがソース IP アドレスに適用されました。 |
| dstipaddr | IP_ADDR | 宛先 IP アドレス |
| dstipmask | IP_MASK | 宛先 IP アドレスに適用されるマスク |
| srcipfrom | IP_ADDR | ソース IP アドレスの範囲の開始 |
| scripto | IP_ADDR | ソース IP アドレスの範囲の終了 |
| dstipfrom | IP_ADDR | 宛先 IP アドレスの範囲の開始 |
| dstipto | IP_ADDR | 宛先 IP アドレスの範囲の終了 |
| srcportstart | UINT16 | 有効なソースポートの範囲の開始 |
| srcportend | UINT16 | 有効なソースポートの範囲の終了 |
| dstportstart | UINT16 | 有効な宛先ポートの範囲の開始 |
| dstportend | UINT16 | 有効な宛先ポートの範囲の終了 |
| comment | STRING | 最大 256 文字のテキスト文字列 |
| state | STRING | NEW、ESTABLISHED、RELATED、INVALID、または NONE のコンマ区切りのリスト |
| ipset | STRING | libvirt の外部で管理される IPSet の名前 |
| ipsetflags | IPSETFLAGS | IPSet のフラグ。ipset 属性が必要です。 |
18.12.10.11. ICMPv6 リンクのコピーリンクがクリップボードにコピーされました!
| 属性名 | データタイプ | 定義 |
|---|---|---|
| srcmacaddr | MAC_ADDR | 送信側の MAC アドレス |
| srcipaddr | IP_ADDR | ソース IP アドレス |
| srcipmask | IP_MASK | マスクがソース IP アドレスに適用されました。 |
| dstipaddr | IP_ADDR | 宛先 IP アドレス |
| dstipmask | IP_MASK | 宛先 IP アドレスに適用されるマスク |
| srcipfrom | IP_ADDR | ソース IP アドレスの範囲の開始 |
| scripto | IP_ADDR | ソース IP アドレスの範囲の終了 |
| dstipfrom | IP_ADDR | 宛先 IP アドレスの範囲の開始 |
| dstipto | IP_ADDR | 宛先 IP アドレスの範囲の終了 |
| type | UINT16 | ICMPv6 のタイプ |
| code | UINT16 | ICMPv6 コード |
| comment | STRING | 最大 256 文字のテキスト文字列 |
| state | STRING | NEW、ESTABLISHED、RELATED、INVALID、または NONE のコンマ区切りのリスト |
| ipset | STRING | libvirt の外部で管理される IPSet の名前 |
| ipsetflags | IPSETFLAGS | IPSet のフラグ。ipset 属性が必要です。 |
18.12.10.12. IPv6 経由の IGMP, ESP, AH, UDPLITE, 'ALL' リンクのコピーリンクがクリップボードにコピーされました!
| 属性名 | データタイプ | 定義 |
|---|---|---|
| srcmacaddr | MAC_ADDR | 送信側の MAC アドレス |
| srcipaddr | IP_ADDR | ソース IP アドレス |
| srcipmask | IP_MASK | マスクがソース IP アドレスに適用されました。 |
| dstipaddr | IP_ADDR | 宛先 IP アドレス |
| dstipmask | IP_MASK | 宛先 IP アドレスに適用されるマスク |
| srcipfrom | IP_ADDR | ソース IP アドレスの範囲の開始 |
| scripto | IP_ADDR | ソース IP アドレスの範囲の終了 |
| dstipfrom | IP_ADDR | 宛先 IP アドレスの範囲の開始 |
| dstipto | IP_ADDR | 宛先 IP アドレスの範囲の終了 |
| comment | STRING | 最大 256 文字のテキスト文字列 |
| state | STRING | NEW、ESTABLISHED、RELATED、INVALID、または NONE のコンマ区切りのリスト |
| ipset | STRING | libvirt の外部で管理される IPSet の名前 |
| ipsetflags | IPSETFLAGS | IPSet のフラグ。ipset 属性が必要です。 |
18.12.11. 高度なフィルター設定のトピック リンクのコピーリンクがクリップボードにコピーされました!
18.12.11.1. 接続追跡 リンクのコピーリンクがクリップボードにコピーされました!
例18.9 TCP ポートへの接続を無効にするなどの XML
18.12.11.2. 接続数の制限 リンクのコピーリンクがクリップボードにコピーされました!
例18.10 接続に制限を設定する XML サンプルファイル
sysfs のタイムアウトを調整することです。このコマンドは、ICMP 接続トラッキングのタイムアウトを 3 秒に設定します。これは、ある ping が終了すると、別の ping が 3 秒後に開始できることになります。
18.12.11.3. コマンドラインツール リンクのコピーリンクがクリップボードにコピーされました!
nwfilter という接頭辞で始まります。以下のコマンドを使用できます。
- nwfilter-list - UUID と、すべてのネットワークフィルターの名前の一覧を表示します。
- nwfilter-define - 新しいネットワークフィルターを定義するか、既存のフィルターを更新します (名前を指定する必要があります)。
- nwfilter-undefine - 指定したネットワークフィルターを削除します (名前を指定する必要があります)。現在使用しているネットワークフィルターを削除しないでください。
- nwfilter-dumpxml - 指定したネットワークフィルターを表示します (名前を指定する必要があります)。
- nwfilter-edit - 指定したネットワークフィルターを編集します (名前を指定する必要があります)。
18.12.11.4. 既存のネットワークフィルター リンクのコピーリンクがクリップボードにコピーされました!
| Command Name | 説明 |
|---|---|
| no-arp-spoofing | ゲスト仮想マシンが ARP トラフィックをスプーフィングするのを防ぎます。このフィルターは、ARP 要求および応答メッセージのみを許可し、それらのパケットにゲスト仮想マシンの MAC アドレスと IP アドレスが含まれるようにします。 |
| allow-dhcp | ゲスト仮想マシンが DHCP 経由で (任意の DHCP サーバーから) IP アドレスを要求できるようにします。 |
| allow-dhcp-server | ゲスト仮想マシンが、指定した DHCP サーバーから IP アドレスを要求できるようにします。DHCP サーバーの、ドットで区切られた 10 進数の IP アドレスは、このフィルターを参照する必要があります。変数の名前は DHCPSERVER でなければなりません。 |
| no-ip-spoofing | ゲスト仮想マシンが、パケット内の送信元 IP アドレスとは異なる IP パケットを送信しないようにします。 |
| no-ip-multicast | ゲスト仮想マシンが IP マルチキャストパケットを送信しないようにします。 |
| clean-traffic | MAC、IP、および ARP のスプーフィングを防ぎます。このフィルターは、他のいくつかのフィルターをビルディングブロックとして参照します。 |
18.12.11.5. 独自のフィルターの作成 リンクのコピーリンクがクリップボードにコピーされました!
- mac
- stp (スパニングツリープロトコル)
- vlan (802.1Q)
- arp, rarp
- ipv4
- ipv6
例18.11 カスタムフィルターの作成
- 仮想マシンのインターフェイスによる MAC、IP、および ARP のスプーフィングの阻止
- 仮想マシンのインターフェイスの TCP ポート 22 および 80 のみを開く
- 仮想マシンがインターフェイスから ping トラフィックを送信できるようにしますが、インターフェイスで仮想マシンの ping を行わないようにします。
- 仮想マシンが DNS ルックアップ (ポート 53 への UDP) を実行できるようにします。
clean-traffic ネットワークフィルターにより満たされています。そのため、これを行う方法は、カスタムフィルターから参照することです。
test と呼ばれ、フィルターを関連付けるインターフェイスが eth0 と呼ばれていると、フィルターの名前は test-eth0 となります。
18.12.11.6. サンプルのカスタムフィルター リンクのコピーリンクがクリップボードにコピーされました!
例18.12 ネットワークインターフェイスの説明のサンプル XML
<!- - enable outgoing ICMP echo requests- ->
<rule action='accept' direction='out'>
<icmp type='8'/>
</rule>
<!- - enable outgoing ICMP echo requests- ->
<rule action='accept' direction='out'>
<icmp type='8'/>
</rule>
<!- - enable incoming ICMP echo replies- ->
<rule action='accept' direction='in'>
<icmp type='0'/>
</rule>
<!- - enable incoming ICMP echo replies- ->
<rule action='accept' direction='in'>
<icmp type='0'/>
</rule>
例18.13 2 番目の例のカスタムフィルター
- ゲスト仮想マシンのインターフェイスの MAC、IP、および ARP スプーフィングを防ぎます。
- ゲスト仮想マシンのインターフェイスで TCP ポート 22 および 80 のみを開きます。
- ゲスト仮想マシンがインターフェイスから ping トラフィックを送信できるようにしますが、インターフェイスでゲスト仮想マシンへの ping は許可しません。
- ゲスト仮想マシンが DNS ルックアップ (ポート 53 への UDP) を実行できるようにします。
- ftp サーバーを有効にし (アクティブモード)、ゲスト仮想マシン内で実行できるようにします。
- #modprobe nf_conntrack_ftp (利用可能な場合)
- #modprobe ip_conntrack_ftp (上記が利用可能でない場合)
18.12.12. 制限事項 リンクのコピーリンクがクリップボードにコピーされました!
- 仮想マシンの移行は、ゲスト仮想マシンのトップレベルフィルターが参照するフィルターツリー全体が、ターゲットホストの物理マシンで利用可能な場合にのみ対応します。たとえば、ネットワークフィルターの
clean-trafficは、すべての libvirt インストールで利用可能である必要があり、このフィルターを参照するゲスト仮想マシンの移行を有効にする必要があります。バージョンの互換性が問題ではないことを確認するには、パッケージを定期的に更新して、最新バージョンの libvirt を使用していることを確認してください。 - インターフェイスに関連付けられたネットワークトラフィックフィルターを失わないように、バージョン 0.8.1 以降の libvirt インストール間で移行を行う必要があります。
- ゲスト仮想マシンが VLAN (802.1Q) パケットを送信しても、プロトコル ID の arp、rarp、ipv4、ipv6 のルールでフィルターをかけることはできません。これらは、プロトコル ID、MAC、および VLAN でのみフィルターにかけることができます。そのため、フィルターの clean-traffic の例 例18.1「ネットワークフィルターリングの例」 は予想通りに機能しません。
18.13. トンネルの作成 リンクのコピーリンクがクリップボードにコピーされました!
18.13.1. マルチキャストトンネルの作成 リンクのコピーリンクがクリップボードにコピーされました!
<devices> 要素に以下の XML の詳細を指定します。
図18.28 マルチキャストトンネル XML の例
18.13.2. TCP トンネルの作成 リンクのコピーリンクがクリップボードにコピーされました!
<devices> 要素に配置します。
図18.29 TCP トンネルドメイン XMl の例
18.14. vLAN タグの設定 リンクのコピーリンクがクリップボードにコピーされました!
図18.30 vVLAN タグの設定 (対応しているネットワークタイプのみ)
<vlan> 要素は、このネットワークを使用してすべてのゲストのトラフィックに適用する 1 つ以上の vlan タグを指定できます (openvswitch および type='hostdev' SR-IOV ネットワークは、ゲストトラフィックの透過的な VLAN タグ付けをサポートします。標準の linux ブリッジや libvirt 自体の仮想ネットワークを含むその他の場合はすべて、これをサポートしません。802.1 Qbh (vn-link) スイッチおよび 802.1Qbg (VEPA) スイッチは、(libvirt の外部で) ゲストトラフィックを特定の vlan にタグ付けする独自の方法を提供します。) 想定どおりに、tag 属性は使用する vlan タグを指定します。ネットワークに複数の<vlan>要素が定義されている場合は、指定されたすべてのタグを使用して VLAN トランクを実行することが想定されます。単一のタグを使用した VLAN トランキングが必要な場合は、オプションの属性 trunk='yes' を VLAN 要素に追加できます。
<tag> 要素でオプションの nativeMode 属性を使用します。nativeMode は、tagged または untagged に設定できます。要素の id 属性は、ネイティブ vlan を設定します。
<vlan> 要素は、<portgroup> 要素でも指定できます。また、ドメインの <interface> 要素でも指定できます。複数の場所で vlan タグが指定されている場合は、<interface> の設定が優先され、その後にインターフェイス設定で選択した<portgroup> の設定が優先されます。<network> の<vlan> は、<portgroup> または <interface> に指定がない場合にのみ選択されます。
18.15. 仮想ネットワークへの QoS の適用 リンクのコピーリンクがクリップボードにコピーされました!
第19章 qemu-kvm コマンド、フラグ、および引数 リンクのコピーリンクがクリップボードにコピーされました!
19.1. はじめに リンクのコピーリンクがクリップボードにコピーされました!
ホワイトリスト形式
- <name> - 構文の説明で使用する場合、この文字列はユーザー定義の値に置き換える必要があります。
- [a|b|c] - 構文の説明で使用される場合、| で区切られた文字列の 1 つのみ使用されています。
- コメントが存在しない場合、オプションはすべての可能な値でサポートされます。
19.2. Basic Options リンクのコピーリンクがクリップボードにコピーされました!
エミュレートされたマシン
プロセッサータイプ
- Opteron_G5 - AMD Opteron 63xx class CPU
- Opteron_G4 - AMD Opteron 62xx class CPU
- Opteron_G3 - AMD Opteron 23xx (AMD Opteron Gen 3)
- Opteron_G2 - AMD Opteron 22xx (AMD Opteron Gen 2)
- Opteron_G1 - AMD Opteron 240 (AMD Opteron Gen 1)
- Westmere - Westmere E56xx/L56xx/X56xx (Nehalem-C)
- Haswell - Intel Core Processor (Haswell)
- SandyBridge - Intel Xeon E312xx (Sandy Bridge)
- Nehalem - Intel Core i7 9xx (Nehalem Class Core i7)
- Penryn - Intel Core 2 Duo P9xxx (Penryn Class Core 2)
- Conroe - Intel Celeron_4x0 (Conroe/Merom Class Core 2)
- cpu64-rhel5 - Red Hat Enterprise Linux 5 がサポートする QEMU 仮想 CPU バージョン
- cpu64-rhel6 - Red Hat Enterprise Linux 6 がサポートする QEMU 仮想 CPU バージョン
- default - 特別なオプションは、上記のデフォルトのオプションを使用します。
プロセッサートポロジー
NUMA システム
Memory Size
キーボードのレイアウト
ゲスト名
ゲスト UUID
19.3. ディスクオプション リンクのコピーリンクがクリップボードにコピーされました!
ジェネリックドライブ
- readonly[on|off]
- werror[enospc|report|stop|ignore]
- rerror[report|stop|ignore]
- id=<id>ドライブの ID には、if=none に対して次の制限があります。
- IDE ディスクには次の形式の <id> が必要です: drive-ide0-<BUS>-<UNIT>正しい形式の例:-drive if=none,id=drive-ide0-<BUS>-<UNIT>,... -device ide-drive,drive=drive-ide0-<BUS>-<UNIT>,bus=ide.<BUS>,unit=<UNIT>
- file=<file><file> の値は、次のルールで解析されます。
- フロッピーデバイスを <file> として渡すことはサポートされていません。
- cd-rom デバイスを <file> として渡すことは、cdrom メディアタイプ (media=cdrom) でのみ、IDE ドライブ (if=ide または if=none + -device ide-drive) としてのみサポートされます。
- <file> がブロックデバイスでも文字デバイスでもない場合は、: を含めることはできません。
- if=<interface>次のインターフェイスがサポートされています: none、ide、virtio、floppy。
- index=<index>
- media=<media>
- cache=<cache>サポートされている値: none、ライトバックまたはライトスルー。
- copy-on-read=[on|off]
- snapshot=[yes|no]
- serial=<serial>
- aio=<aio>
- 形式 =< format>このオプションは必須ではなく、省略できます。ただし、これはセキュリティーリスクを表すため、生のイメージにはお勧めしません。サポートされている形式は次のとおりです。
- qcow2
- raw
Boot Option
Snapshot Mode
19.4. 表示オプション リンクのコピーリンクがクリップボードにコピーされました!
グラフィックを無効にする
VGA カードエミュレーション
- cirrus - Cirrus Logic GD5446 ビデオカード。
- std - Bochs VBE 拡張機能を備えた標準 VGA カード。
- qxl - スパイス準仮想カード。
- none - VGA カードを無効にします。
VNC ディスプレイ
- [<host>]:<port>
- unix:<path>
- share[allow-exclusive|force-shared|ignore]
- none - 他のオプションを指定せずにサポートされます。
- to=<port>
- reverse
- password
- tls
- x509=</path/to/certificate/dir> - -tlsが指定されている場合にサポートされます。
- x509verify=</path/to/certificate/dir> - tlsが指定されている場合にサポートされます。
- sasl
- acl
スパイスデスクトップ
- port=<number>
- addr=<addr>
- ipv4ipv6
- password=<secret>
- disable-ticketing
- disable-copy-paste
- tls-port=<number>
- x509-dir=</path/to/certificate/dir>
- x509-key-file=<file>x509-key-password=<file>x509-cert-file=<file>x509-cacert-file=<file>x509-dh-key-file=<file>
- tls-cipher=<list>
- tls-channel[main|display|cursor|inputs|record|playback]plaintext-channel[main|display|cursor|inputs|record|playback]
- image-compression=<compress>
- jpeg-wan-compression=<value>zlib-glz-wan-compression=<value>
- streaming-video=[off|all|filter]
- agent-mouse=[on|off]
- playback-compression=[on|off]
- seamless-migratio=[on|off]
19.5. ネットワークオプション リンクのコピーリンクがクリップボードにコピーされました!
TAP ネットワーク
- ifname
- fd
- script
- downscript
- sndbuf
- vnet_hdr
- vhost
- vhostfd
- vhostforce
19.6. デバイスオプション リンクのコピーリンクがクリップボードにコピーされました!
一般的なデバイス
- id
- bus
- pci-assign
- host
- bootindex
- configfd
- addr
- rombar
- romfile
- multifunction
デバイスに複数の機能がある場合は、それらすべてを同じゲストに割り当てる必要があります。 - rtl8139
- mac
- netdev
- bootindex
- addr
- e1000
- mac
- netdev
- bootindex
- addr
- virtio-net-pci
- ioeventfd
- vectors
- 間接的
- event_idx
- csum
- guest_csum
- gso
- guest_tso4
- guest_tso6
- guest_ecn
- guest_ufo
- host_tso4
- host_tso6
- host_ecn
- host_ufo
- mrg_rxbuf
- status
- ctrl_vq
- ctrl_rx
- ctrl_vlan
- ctrl_rx_extra
- mac
- netdev
- bootindex
- x-txtimer
- x-txburst
- tx
- addr
- qxl
- ram_size
- vram_size
- revision
- cmdlog
- addr
- ide-drive
- unit
- のドライブ
- physical_block_size
- bootindex
- ver
- wwn
- virtio-blk-pci
- class
- のドライブ
- logical_block_size
- physical_block_size
- min_io_size
- opt_io_size
- bootindex
- ioeventfd
- vectors
- indirect_desc
- event_idx
- scsi
- addr
- virtio-scsi-pci - 6.3 のテクノロジープレビュー。6.4 以降でサポートされています。Windows ゲストの場合、テクノロジープレビューであった Windows Server 2003 は 6.5 以降サポートされなくなりました。ただし、Windows Server 2008 と 2012、および Windows デスクトップ 7 と 8 は、6.5 以降完全にサポートされています。
- vectors
- indirect_desc
- event_idx
- num_queues
- addr
- isa-debugcon
- isa-serial
- index
- iobase
- irq
- chardev
- virtserialport
- nr
- chardev
- name
- virtconsole
- nr
- chardev
- name
- virtio-serial-pci
- vectors
- class
- indirect_desc
- event_idx
- max_ports
- flow_control
- addr
- ES1370
- addr
- AC97
- addr
- intel-hda
- addr
- hda-duplex
- CAD
- hda-micro
- CAD
- hda-output
- CAD
- i6300esb
- addr
- ib700 - プロパティーなし
- sga - プロパティーなし
- virtio-balloon-pci
- indirect_desc
- event_idx
- addr
- usb-tablet
- migrate
- port
- usb-kbd
- migrate
- port
- usb-mouse
- migrate
- port
- usb-ccid - 6.2 以降でサポート
- port
- slot
- usb-host - 6.2 以降のテクノロジープレビュー
- hostbus
- hostaddr
- hostport
- vendorid
- productid
- isobufs
- port
- usb-hub - 6.2 以降でサポート
- port
- usb-ehci - 6.2 以降のテクノロジープレビュー
- freq
- maxframes
- port
- usb-storage - 6.2 以降のテクノロジープレビュー
- のドライブ
- bootindex
- serial
- removable
- port
- usb-redir - 6.3 のテクノロジープレビュー、6.4 以降サポート
- chardev
- filter
- scsi-cd - 6.3 のテクノロジープレビュー、6.4 以降サポート
- のドライブ
- logical_block_size
- physical_block_size
- min_io_size
- opt_io_size
- bootindex
- ver
- serial
- scsi-id
- lun
- channel-scsi
- wwn
- scsi-hd - 6.3 のテクノロジープレビュー、6.4 以降サポート
- のドライブ
- logical_block_size
- physical_block_size
- min_io_size
- opt_io_size
- bootindex
- ver
- serial
- scsi-id
- lun
- channel-scsi
- wwn
- scsi-block - 6.3 のテクノロジープレビュー、6.4 以降サポート
- のドライブ
- bootindex
- scsi-disk - 6.3 のテクノロジープレビュー
- drive=drive
- logical_block_size
- physical_block_size
- min_io_size
- opt_io_size
- bootindex
- ver
- serial
- scsi-id
- lun
- channel-scsi
- wwn
- piix3-usb-uhci
- piix4-usb-uhci
- ccid-card-passthru
グローバルデバイス設定
- isa-fdc
- driveA
- driveB
- bootindexA
- bootindexB
- qxl-vga
- ram_size
- vram_size
- revision
- cmdlog
- addr
キャラクターデバイス
- null,id=<id> - null device
- socket,id=<id>,port=<port>[,host=<host>][,to=<to>][,ipv4][,ipv6][,nodelay][,server][,nowait][,telnet] - tcp socket
- socket,id=<id>,path=<path>[,server][,nowait][,telnet] - unix socket
- file,id=<id>,path=<path> - trafit to file.
- stdio,id=<id> - standard i/o
- spicevmc,id=<id>,name=<name> - spice channel
USB を有効にする
19.7. Linux/Multiboot ブート リンクのコピーリンクがクリップボードにコピーされました!
カーネルファイル
Ram ディスク
コマンドラインパラメーター
19.8. エキスパートオプション リンクのコピーリンクがクリップボードにコピーされました!
KVM 仮想化
カーネルモードの PIT 再挿入を無効にする
No Shutdown
再起動しない
シリアルポート、モニター、QMP
- stdio - standard input/output
- null - null デバイス
- file:<filename> - ファイルに出力します。
- tcp:[<host>]:<port>[,server][,nowait][,nodelay] - TCP Net console.
- unix:<path>[,server][,nowait] - Unix ドメインソケット
- mon:<dev_string> - 上記のデバイス。モニターの多重化にも使用されます。
- none - disable、-serial に対してのみ有効です。
- chardev:<id> - chardev で作成された文字デバイス。
リダイレクトのモニター
手動 CPU スタート
RTC
Watchdog
Watchdog の反応
ゲストメモリーバッキング
SMBIOS エントリー
19.9. ヘルプと情報オプション リンクのコピーリンクがクリップボードにコピーされました!
Help
バージョン
Audio Help
19.10. その他のオプション リンクのコピーリンクがクリップボードにコピーされました!
移行
デフォルト設定なし
デバイス設定ファイル
ロードされた保存状態
第20章 ドメイン XML の操作 リンクのコピーリンクがクリップボードにコピーされました!
<ドメイン>要素を指します。ドメイン XML には、2 つの属性があります。type は、ドメインの実行に使用されるハイパーバイザーを指定します。許可される値はドライバー固有ですが、KVM などが含まれます。id は、実行中のゲスト仮想マシンの一意の整数識別子です。アクティブでないマシンには、id 値が設定されていません。本章のセクションでは、ドメイン XML のコンポーネントについて説明します。ドメイン XML の操作が必要な場合は、本書のその他の章を参照してください。
20.1. 一般情報およびメタデータ リンクのコピーリンクがクリップボードにコピーされました!
図20.1 ドメイン XML メタデータ
| 要素 | 説明 |
|---|---|
<name> | 仮想マシンの名前を割り当てます。この名前は英数字のみで設定され、1 台のホストの物理マシンの範囲内で固有である必要があります。永続的な設定ファイルを保存するためにファイル名を形成するためによく使用されます。 |
<uuid> | 仮想マシンのグローバルに一意識別子を割り当てます。形式は RFC4122 に準拠している必要があります (例: 3e3fce45-4f53-4fa7-bb32-11f34168b82b。新しいマシンの定義時/作成時に省略した場合は、ランダムな UUID が生成されます。sysinfo 仕様を使用して、UUID を提供することもできます。 |
<title> | title ドメインの簡単な説明のための領域を作成します。タイトルには改行を含めないでください。 |
<description> | タイトルとは異なり、このデータは libvirt によって使用されることはなく、ユーザーが表示したい情報を含めることができます。 |
<metadata> | アプリケーションで使用できるため、カスタムメタデータを XML ノード/ツリーの形式で保存できます。アプリケーションは、XML ノード/ツリーでカスタム名前空間を使用し、名前空間ごとにトップレベル要素を 1 つのみ使用する必要があります (アプリケーションが構造を必要とする場合は、その名前空間要素のサブ要素を持つ必要があります)。 |
20.2. オペレーティングシステムの起動 リンクのコピーリンクがクリップボードにコピーされました!
20.2.1. BIOS ブートローダー リンクのコピーリンクがクリップボードにコピーされました!
図20.2 BIOS ブートローダードメイン XML
| 要素 | 説明 |
|---|---|
<type> | ゲスト仮想マシンで起動するオペレーティングシステムの種類を指定します。hvm は、OS がベアメタル上で実行するように設計されているため、完全仮想化が必要であることを示しています。linux は、Xen 3 ハイパーバイザーゲスト ABI をサポートする OS を指します。オプションの属性も 2 つあります。arch は仮想化に対する CPU アーキテクチャーを指定し、machine はマシンタイプを参照します。詳細については、『ドライバー機能』を参照してください。 |
<loader> | ドメイン作成プロセスを支援するために使用されるファームウェアの一部を指します。Xen の完全仮想化ドメインを使用する場合にのみ必要です。 |
<boot> | fd、hd、cdrom、または network のいずれかの値を取り、次に検討するブートデバイスを指定するために使用されます。ブート要素を複数回繰り返して、順番に試行するブートデバイスの優先順位リストを設定できます。同じタイプの複数のデバイスは、バスの順序を維持しながら、ターゲットに従ってソートされます。ドメインを定義した後、libvirt によって (virDomainGetXMLDesc を介して) 返される XML 設定は、ソートされた順序でデバイスをリストします。ソートされると、最初のデバイスが起動可能としてマークされます。詳細は、『BIOS ブートローダー』を参照してください。 |
<bootmenu> | ゲスト仮想マシンの起動時にインタラクティブな起動メニュープロンプトを有効にするかどうかを設定します。enable 属性は、yes または no のいずれかになり ます。指定しない場合は、ハイパーバイザーのデフォルトが使用されます。 |
<smbios> | ゲスト仮想マシンで SMBIOS 情報をどのように表示するかを指定します。mode 属性は、emulate (ハイパーバイザーがすべての値を生成できるようにする)、host (UUID を除くブロック 0 とブロック 1 のすべてをホスト物理マシンの SMBIOS 値からコピーします。virConnectGetSysinfo 呼び出しを使用して、どの値がコピーされているかを確認することができます)、または sysinfo (sysinfo 要素の値を使用) のいずれかとして指定する必要があります。指定しない場合は、ハイパーバイザーのデフォルト設定が使用されます。 |
<bios> | この要素には、yes または no の値を持つ属性 useserial があります。この属性は、ユーザーがシリアルポートで BIOS メッセージを表示できるようにする Serial Graphics Adapter を有効または無効にします。したがって、シリアルポートを定義する必要があります。別の属性、rebootTimeout があることに注意してください。これは、起動が失敗した場合にゲスト仮想マシンが再度起動を開始するかどうか、および開始する期間を制御します (BIOS による)。値はミリ秒単位で、最大は 65535 で、特別な値 -1 は再起動を無効にします。 |
20.2.2. ホスト物理マシンブートローダー リンクのコピーリンクがクリップボードにコピーされました!
図20.3 ホスト物理マシンのブートローダードメイン XML
... <bootloader>/usr/bin/pygrub</bootloader> <bootloader_args>--append single</bootloader_args> ...
...
<bootloader>/usr/bin/pygrub</bootloader>
<bootloader_args>--append single</bootloader_args>
...
| 要素 | 説明 |
|---|---|
<bootloader> | ホスト物理マシン OS のブートローダー実行可能ファイルへの完全修飾パスを提供します。このブートローダーは、起動するカーネルを選択します。ブートローダーの必要な出力は、使用中のハイパーバイザーによって異なります。 |
<bootloader_args> | コマンドライン引数をブートローダーに渡すことができます (オプションのコマンド) |
20.2.3. ダイレクトカーネルブート リンクのコピーリンクがクリップボードにコピーされました!
図20.4 ダイレクトカーネルブート
| 要素 | 説明 |
|---|---|
<type> | BIOS ブートのセクションで説明されているものと同じです。 |
<loader> | BIOS ブートのセクションで説明されているものと同じです。 |
<kernel> | ホスト物理マシン OS のカーネルイメージへの完全修飾パスを指定します |
<initrd> | ホスト物理マシンの OS の (任意) ramdisk イメージへの完全修飾パスを指定します。 |
<cmdline> | システムの起動時にカーネル (またはインストーラー) に渡される引数を指定します。これは、代替のプライマリーコンソール (シリアルポートなど)、またはインストールメディアソース/キックスタートファイルを指定するためによく使用されます |
20.3. SMBIOS システム情報 リンクのコピーリンクがクリップボードにコピーされました!
図20.5 SMBIOS システム情報
<sysinfo> 要素には、サブ要素のレイアウトを決定する必須の属性typeがあり、以下のように定義されます。
smbios- サブ要素は特定の SMBIOS 値を呼び出します。これは、<os>要素の smbios サブ要素と併用するとゲスト仮想マシンに影響します。sysinfo の各サブ要素は、SMBIOS ブロックの名前を付け、その中の要素は、ブロック内のフィールドを記述するエントリー要素のリストになります。以下のブロックおよびエントリーが認識されます。bios- SMBIOS の ブロック 0 で、エントリー名はvendor、version、date、およびreleaseから取得されます。<system>- SMBIOS のブロック 1 で、エントリー名はmanufacturer、product、version、serial、uuid、sku、およびfamilyから取得します。uuidエントリーが最上位の uuid 要素とともに指定されている場合は、その 2 つの値が一致している必要があります。
20.4. CPU Allocation リンクのコピーリンクがクリップボードにコピーされました!
図20.6 CPU の割り当て
<cpu> 要素は、ゲスト仮想マシンのオペレーティングシステムに割り当てる仮想 CPU (vCPU) の最大数を定義します。この最大数は 1 から、ハイパーバイザーで対応している最大数までの間でなければなりません。この要素には、cpuset 属性を指定できます。属性は、ドメインプロセスおよび仮想 CPU をデフォルトで固定できる物理 CPU 番号のコンマ区切りのリストです。
cputune 属性を使用して個別に指定できることに注意してください。emulatorpin 属性が <cputune> で指定されている場合、<vcpu> で指定された cpuset値は無視されます。
vcpupin に値を設定した仮想 CPU では、cpuset 設定が無視されます。vcpupin が指定されていない仮想 CPU は、cpuset で指定された物理 CPU に固定されます。cpuset 一覧の各要素は、単一の CPU 番号、CPU 番号の範囲、または前の範囲から除外される CPU 番号が後に続くキャレット (^) のいずれかになります。属性 current を使用して、有効にする仮想 CPU の最大数より少ない数を指定することができます。
placement を使用して、ドメインプロセスの CPU 配置モードを指定できます。placement は、static または auto のいずれかに設定できます。<vcpu placement='auto'> を設定すると、システムは numad をクエリーし、<numatune> タグで指定された設定を使用し、<vcpu> の他の設定を無視します。<vcpu placement='static'> を設定すると、システムは <numatune> の設定ではなく、<vcpu placement> タグで指定された設定を使用します。
20.5. CPU チューニング リンクのコピーリンクがクリップボードにコピーされました!
図20.7 CPU チューニング
| 要素 | 説明 |
|---|---|
<cputune> | ドメインの CPU 調整可能パラメーターに関する詳細を提供します。これは任意です。 |
<vcpupin> | ドメイン VCPU が固定されるホスト物理マシンの物理 CPU を指定します。これを省略し、要素 <vcpu>の属性 cpusetが指定されていない場合、vCPU はデフォルトですべての物理 CPU に固定されます。これには 2 つの必須属性が含まれ、vcpu 属性は id を指定し、cpuset 属性は要素 <vcpu> の属性 cpuset と同じです。 |
<emulatorpin> | エミュレーター vcpu を含まないドメインのサブセット を固定するホスト物理マシンの CPU を指定します。これを省略し、要素 <vcpu> の属性 cpuset が指定されていない場合、emulator はデフォルトですべての物理 CPU に固定されます。これには、固定する物理 CPU を指定する 1 つの必須属性 cpuset が含まれています。要素 <vcpu> の属性 配置 が auto の場合には、emulatorpin は許可されません。 |
<共有> | ドメインの比例的な加重共有を指定します。これを省略すると、デフォルトでオペレーティングシステムに固有のデフォルト値になります。値の単位がない場合は、その他のゲスト仮想マシンの設定を基準にして計算されます。たとえば、ゲスト仮想マシンが 2048 の値で設定されている場合、1024 の値で設定されたゲスト仮想マシンの 2 倍の処理時間が得られます。 |
<period> | 施行間隔をマイクロ秒単位で指定します。period を使用することにより、ドメインの各 vcpu は、割り当てられたクォータに相当する実行時間を超えて消費することはできなくなります。この値は、以下の範囲内である必要があります: 1000-1000000。0 の値を持つ <period> は、値がないことを意味します。 |
<quota> | 最大許容帯域幅をマイクロ秒単位で指定します。quota が負の値のドメインは、ドメインの帯域幅が無限であることを示します。つまり、帯域幅は制御されません。値は次の範囲内である必要があります: 1000〜18446744073709551または 0未満。0 の値を持つquota は、値がないことを意味します。この機能を使用すると、すべての vcpu で同じ速度で実行できます。 |
<emulator_period> | 施行間隔をマイクロ秒単位で指定します。<emulator_period> 内では、ドメインのエミュレータースレッド (vcpu を除く) が、<emulator_quota> 相当の実行時間より多くを消費することはできません。<emulator_period> は、次の範囲内でなければなりません: 1000 - 1000000。0 の <emulator_period> は、値がないことを意味します。 |
<emulator_quota> | ドメインのエミュレータースレッド (vcpu を除く) で許可される最大帯域幅をマイクロ秒単位で指定します。<emulator_quota> が負の値のドメインは、ドメインがエミュレータースレッド (vcpu を除く) に無限の帯域幅を持つことを示します。これは、帯域幅が制御されないことを示しています。値は次の範囲内である必要があります: 1000〜18446744073709551、または 0未満。0 の<emulator_quota>は、値がないことを意味します。 |
20.6. メモリーバッキング リンクのコピーリンクがクリップボードにコピーされました!
<memoryBacking> 要素には、<hugepages> 要素が設定されている場合があります。これにより、ハイパーバイザーは、ゲスト仮想マシンのメモリーを通常のネイティブページサイズではなく、hugepages を使用して割り当てる必要があることを通知します。
図20.8 メモリーバッキング
20.7. メモリーの調整 リンクのコピーリンクがクリップボードにコピーされました!
図20.9 メモリーの調整
| 要素 | 説明 |
|---|---|
<memtune> | ドメインのメモリー調整可能パラメーターに関する詳細を提供します。これを省略すると、デフォルトで OS が提供するデフォルトになります。パラメーターはプロセス全体に適用されるため、制限を設定する場合は、ゲスト仮想マシン RAM、ゲスト仮想マシンビデオ RAM を合計し、メモリーオーバーヘッドを考慮に入れる必要があります。最後のピースは判断が難しいので、試行錯誤を繰り返します。調整可能パラメーターごとに、<memory> と同じ値を使用して、入力中のユニット番号を指定できます。下位互換性のために、出力は常に KiB になります。 |
<hard_limit> | ゲスト仮想マシンが使用できる最大メモリー量です。この値の 単位は、kibibytes (1024 バイトのブロック) で表されます |
<soft_limit> | メモリーの競合中に強制されるメモリー制限です。この値の 単位、は kibibytes (1024 バイトのブロック) で表されます |
<swap_hard_limit> | 最大メモリーと、ゲスト仮想マシンが使用できるスワップの合計です。この値の 単位は、kibibytes (1024 バイトのブロック) で表されます。これは、提供された <hard_limit> 値より大きくなければなりません |
<min_guarantee> | ゲスト仮想マシンに保証される最小メモリー割り当てです。この値の単位は kibibytes (1024 バイトのブロック) で表されます |
20.8. NUMA ノードのチューニング リンクのコピーリンクがクリップボードにコピーされました!
図20.10 NUMA ノードのチューニング
| 要素 | 説明 |
|---|---|
<numatune> | ドメインプロセスの NUMA ポリシーを制御することにより、NUMA ホストの物理マシンのパフォーマンスを調整する方法を説明します。 |
<memory> | NUMA ホストの物理マシンでドメインプロセスにメモリーを割り当てる方法を指定します。これにはいくつかのオプション属性が含まれます。属性 mode は、interleave、strict、または preferredのいずれかです。値が指定されていない場合、デフォルトは strict に設定されます。属性 nodeset は、要素 <vcpu> の属性 cpuset と同じ構文を使用して、NUMA ノードを指定します。属性placement は、ドメインプロセスのメモリー配置モードを示すために使用できます。その値は、static または auto のいずれかになります。属性 <nodeset>が指定されている場合、デフォルトで <vcpu>または static の <placement> になります。auto は、ドメインプロセスが numad のクエリーから返されたアドバイザリーノードセットからのみメモリーを割り当てることを示し、属性 nodeset の値が指定されている場合は無視されます。vcpu の属性 placement が auto で、<numatune> が指定されていない場合は、<placement> auto と mode strict のデフォルトの numatune が暗黙的に追加されます。 |
20.9. ブロック I/O チューニング リンクのコピーリンクがクリップボードにコピーされました!
図20.11 ブロック I/O チューニング
| 要素 | 説明 |
|---|---|
<blkiotune> | このオプション要素は、ドメインの blkio cgroup 調整可能パラメーターを調整する機能を提供します。これを省略すると、デフォルトで OS が提供するデフォルトになります。 |
<weight> | この任意の weight 要素は、ゲスト仮想マシンの全体的な I/O ウェイトです。この値は、100 - 1000 の範囲で指定してください。 |
<device> | ドメインには、ドメインが使用している各ホスト物理マシンブロックデバイスのウェイトをさらに調整する複数の<device>要素が含まれる場合があります。複数のゲスト仮想マシンのディスクが、1 つのホストの物理マシンブロックデバイスを共有できることに注意してください。また、このパラメーターは、同じホストの物理マシンファイルシステム内のファイルでバッキングされているため、各ゲスト仮想マシンのディスクデバイスに関連付けられるのではなく、グローバルドメインレベルで設定します (1 つの<disk>に適用できる <iotune> 要素との違いを確認してください)。各デバイス要素には、2 つの必須サブ要素があります。<path>はデバイスの絶対パスを表し、<weight> はそのデバイスの相対的な重みを示します。許容範囲は 100 - 1000 になります。 |
20.10. リソースのパーティション設定 リンクのコピーリンクがクリップボードにコピーされました!
<resource> 要素は、リソースのパーティション設定に関連する設定をグループ化します。現在、ドメインを配置するリソースパーティションのパスを定義するコンテンツの子要素パーティションをサポートしています。リストにパーティションがない場合は、ドメインがデフォルトパーティションに置かれます。ゲスト仮想マシンを起動する前にパーティションが存在することを確認するのは、アプリ/管理者の責任です。デフォルトでは、(ハイパーバイザー固有の) デフォルトパーティションのみが存在すると想定できます。
図20.12 リソースのパーティション設定
<resource>
<partition>/virtualmachines/production</partition>
</resource>
<resource>
<partition>/virtualmachines/production</partition>
</resource>
20.11. CPU モデルとトポロジー リンクのコピーリンクがクリップボードにコピーされました!
qemu32 と qemu64 は基本的な CPU モデルですが、他のモデル (追加機能付き) も利用できます。各モデルとそのトポロジーは、ドメイン XML の以下の要素を使用して指定されます。
図20.13 CPU モデルとトポロジーの例 1
図20.14 CPU モデルとトポロジーの例 2
<cpu mode='host-model'> <model fallback='forbid'/> <topology sockets='1' cores='2' threads='1'/> </cpu>
<cpu mode='host-model'>
<model fallback='forbid'/>
<topology sockets='1' cores='2' threads='1'/>
</cpu>
図20.15 CPU モデルとトポロジーの例 3
<cpu mode='host-passthrough'/>
<cpu mode='host-passthrough'/>
図20.16 CPU モデルとトポロジーの例 4
<cpu> <topology sockets='1' cores='2' threads='1'/> </cpu>
<cpu>
<topology sockets='1' cores='2' threads='1'/>
</cpu>
| 要素 | 説明 |
|---|---|
<cpu> | この要素には、vCPU 機能セットのすべてのパラメーターが含まれています。 |
<match> | <cpu> 要素に示されている機能が、使用可能な vCPU とどの程度一致している必要があるかを指定します。<topology> が <cpu> 要素にネストされた唯一の要素である場合は、match 属性を省略できます。match 属性に使用できる値は、以下のとおりです。
match 属性が <cpu> 要素から省略されている場合、デフォルト設定の match='exact' が使用されます。 |
<mode> | このオプション属性を使用すると、ゲスト仮想マシンの CPU を、ホストの物理マシンの CPU にできるだけ近づけるように設定できます。mode 属性に使用できる値は、以下のとおりです。
|
<model> | ゲスト仮想マシンが要求する CPU モデルを指定します。利用可能な CPU モデルとその定義の一覧は、libvirt の データディレクトリーにインストールされている cpu_map.xml ファイルを参照してください。ハイパーバイザーが、正確な CPU モデルを使用できない場合、libvirt は、CPU 機能の一覧を維持しながら、ハイパーバイザーが対応する最も近いモデルに自動的にフォールバックします。オプションの fallback 属性を使用すると、この動作を禁止できます。この場合、対応していない CPU モデルを要求するドメインを起動しようとすると失敗します。フォールバック属性で対応している値は、allow (デフォルト) と forbid です。オプションの vendor_id 属性を使用すると、ゲスト仮想マシンが認識するベンダー id を設定できます。ちょうど 12 文字の長さである必要があります。設定しない場合は、ホスト物理マシンのベンダー id が使用されます。一般的な値は、AuthenticAMD および GenuineIntel です。 |
<vendor> | ゲスト仮想マシンが要求する CPU ベンダーを指定します。この要素がないと、ゲスト仮想マシンは、ベンダーに関係なく、指定された機能と一致する CPU で実行します。サポートされているベンダーの一覧は、cpu_map.xml を参照してください。 |
<topology> | ゲスト仮想マシンに提供される仮想 CPU の要求されたトポロジーを指定します。ソケット、コア、およびスレッドには、それぞれゼロ以外の値を 3 つ指定する必要があります。つまり、CPU ソケットの合計数、ソケットごとのコア数、およびコアごとのスレッド数です。 |
<feature> | 選択した CPU モデルが提供する機能を微調整するために使用する、ゼロ以上の要素を含むことができます。既知の機能名のリストは、CPU モデルと同じファイルにあります。各機能要素の意味は、ポリシー属性により異なります。この属性は、次のいずれかの値に設定する必要があります。
|
20.11.1. ゲスト仮想マシンの NUMA トポロジー リンクのコピーリンクがクリップボードにコピーされました!
<numa> 要素とドメイン XML の以下を使用して指定できます。
図20.17 ゲスト仮想マシンの NUMA トポロジー
cpus は、ノードの一部である CPU または CPU の範囲を指定します。memory は、ノードメモリーを kibibytes (1024 バイトのブロック) で指定します。各セルまたはノードには、0 から始まる昇順で cellid または nodeid が割り当てられます。
20.12. イベントの設定 リンクのコピーリンクがクリップボードにコピーされました!
図20.18 イベントの設定
<on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <on_lockfailure>poweroff</on_lockfailure>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<on_lockfailure>poweroff</on_lockfailure>
| 状態 | 説明 |
|---|---|
<on_poweroff> | ゲスト仮想マシンがパワーオフを要求した場合に実行するアクションを指定します。使用可能な引数は、以下の 4 つです。
|
<on_reboot> | ゲスト仮想マシンが再起動を要求した場合に実行するアクションを指定します。使用可能な引数は、以下の 4 つです。
|
<on_crash> | ゲスト仮想マシンがクラッシュした場合に実行するアクションを指定します。さらに、以下の追加アクションに対応します。
|
<on_lockfailure> | ロックマネージャーがリソースロックを失ったときに実行するアクションを指定します。以下のアクションは、libvirt によって認識されますが、すべてが個々のロックマネージャーによってサポートされる必要はありません。アクションを指定しないと、各ロックマネージャーはデフォルトのアクションを実行します。以下の引数を使用できます。
|
20.13. 電源管理 リンクのコピーリンクがクリップボードにコピーされました!
図20.19 電源管理
<pm> 要素は、引数 yes を使用して有効にすることも、引数 no を使用して無効にすることもできます。BIOS サポートは、引数 suspend-to-disk を使用して S3 に実装でき、引数 suspend-to-mem スリープ状態を使用して S4 に実装できます。何も指定しないと、ハイパーバイザーはデフォルト値のままになります。
20.14. ハイパーバイザーの機能 リンクのコピーリンクがクリップボードにコピーされました!
state='on') または無効 (state='off') にできます。
図20.20 ハイパーバイザーの機能
<features> 要素に一覧表示されます。<state>を指定しないと無効になります。利用可能な機能は、capabilities XML を呼び出して確認できますが、完全仮想化ドメインの一般的な設定は次のとおりです。
| 状態 | 説明 |
|---|---|
<pae> | 物理アドレス拡張モードでは、32 ビットのゲスト仮想マシンが 4GB を超えるメモリーにアドレスを指定できます。 |
<acpi> | 電力管理に役立ちます。たとえば、KVM ゲスト仮想マシンでは、正常なシャットダウンが機能する必要があります。 |
<apic> | プログラム可能な IRQ 管理を使用できるようにします。この要素には、on および off の値を持つオプションの属性eoi があります。これは、ゲスト仮想マシンの EOI (割り込みの終了) の可用性を設定します。 |
<hap> | ハードウェアで利用可能な場合に、ハードウェア支援ページングの使用を有効にします。 |
hyperv | Microsoft Windows を実行しているゲスト仮想マシンの動作を改善するためのさまざまな機能を有効にします。値を on または off にして 緩和されたオプションの属性を使用すると、タイマーの緩和制約が有効または無効になります |
20.15. 時間管理 リンクのコピーリンクがクリップボードにコピーされました!
localtime に設定する必要があることに注意してください。
図20.21 時間管理
| 状態 | 説明 |
|---|---|
<clock> | offset 属性には 4 つの値を指定できます。これにより、ゲスト仮想マシンのクロックをホスト物理マシンに同期させる方法を詳細に制御できます。ハイパーバイザーは、常にすべてのポリシーをサポートする必要はないことに注意してください。
|
<timer> | 下記を参照してください。 |
<frequency> | これは、name="tsc" が実行される頻度を指定する符号なし整数です。 |
<mode> | mode 属性は、name = "tsc"<timer> の管理方法を制御し、auto、native、emulate、paravirt、または smpsafe に設定できます。その他のタイマーは常にエミュレートされます。 |
<あり> | ゲスト仮想マシンで特定のタイマーが使用可能であるかどうかを指定します。yes または no に設定できます。 |
<timer> 要素には name 属性が含まれている必要があり、指定された名前に応じて次の属性を持つ場合があります。
<name>- 変更するtimerを選択します。次の値が許容されます。kvmclock(QEMU-KVM),pit(QEMU-KVM)、またはrtc(QEMU-KVM)、またはtsc(libxl のみ)。platformは現在サポートされていないことに注意してください。- track - タイマートラックを指定します。次の値を使用できます:
boot、guest、またはwall。trackはname="rtc"に対してのみ有効です。 tickpolicy- ゲスト仮想マシンにティックを挿入する期限が過ぎた場合の動作を指定します。設定可能な値は、以下のとおりです。delay- 通常のレートでティックを配信し続けます。ゲスト仮想マシンの時間は、ティックの遅延により遅れます。catchup- ティックの遅れを取り戻すために、高いレートでティックを配信しますキャッチアップが完了すると、ゲスト仮想マシンの時間は表示されません。また、オプションとして、threshold、slew、limit の 3 つの属性があり、それぞれ正の整数とすることができます。merge- 遅れたティックを単一のティックにマージし、それらを挿入します。マージの実行方法によっては、ゲスト仮想マシンの時間が遅れる可能性があります。discard- 遅れたティックを破棄し、デフォルトの間隔設定で今後の挿入を続行します。失われたティックを処理する明示的なステートメントがない限り、ゲスト仮想マシンの時間が遅延する場合があります。
20.16. Devices リンクのコピーリンクがクリップボードにコピーされました!
- virtio-scsi-pci - PCI バスストレージデバイス
- virtio-9p-pci - PCI バスストレージデバイス
- virtio-blk-pci - PCI バスストレージデバイス
- virtio-net-pci - PCI バスネットワークデバイス (virtio-net としても知られる)
- virtio-serial-pci - PCI バス入力デバイス
- virtio-balloon-pci - PCI バスメモリーバルーンデバイス
- virtio-rng-pci - PCI バス仮想乱数発生器
vector の値を 32 より大きく設定することは推奨されません。virtio-balloon-pci および virtio-rng-pci を除くすべての virtio デバイスは、vector 引数を受け入れます。
図20.22 デバイス - 子要素
<emulator> 要素の内容は、デバイスモデルエミュレーターバイナリーへの完全修飾パスを指定します。capabilities XML は、各特定のドメインタイプまたはアーキテクチャーの組み合わせに使用する推奨されるデフォルトエミュレーターを指定します。
20.16.1. ハードドライブ、フロッピーディスク、CDROM リンクのコピーリンクがクリップボードにコピーされました!
図20.23 デバイス - ハードドライブ、フロッピーディスク、CDROM
20.16.1.1. ディスク要素 リンクのコピーリンクがクリップボードにコピーされました!
<disk> 要素は、ディスクを記述するための主要なコンテナーです。属性type は、<disk> 要素で使用できます。以下のタイプが許可されています。
fileblockdirnetwork
20.16.1.2. ソース要素 リンクのコピーリンクがクリップボードにコピーされました!
<disk type='file''> の場合、file 属性は、ディスクを保持しているファイルへの完全修飾パスを指定します。<disk type='block'> の場合、dev 属性は、ディスクとして機能するホスト物理マシンデバイスへのパスを指定します。file と block の両方で、以下で説明する 1 つ以上のオプションのサブ要素 seclabel を使用して、そのソースファイルのみのドメインセキュリティーラベル付けポリシーを上書きできます。ディスクタイプが dir の場合、dir 属性は、ディスクとして使用するディレクトリーへの完全修飾パスを指定します。ディスクタイプが network の場合、protocol 属性は、要求されたイメージにアクセスするためのプロトコルを指定します。可能な値は、nbd、rbd、sheepdog、または gluster です。
rbd、sheepdog、または gluster の場合、使用するボリュームやイメージを指定するには、追加の属性 name が必須です。ディスクのタイプが network の場合、source には、接続するホスト物理マシンを指定するために使用される type='dir' および type='network' を含む、ゼロ以上の host サブ要素が含まれることがあります。cdrom またはフロッピー (デバイス属性) を表すfileディスクタイプで、ソースファイルにアクセスできない場合にディスクをどうするかという動作のポリシーを定義できます。これは、startupPolicy 属性を次の値で操作することによって行われます。
mandatoryは、何らかの理由で欠落している場合に障害の原因となります。これはデフォルト設定です。requisiteは、起動時に欠落している場合は失敗し、移行/復元/復帰時に欠落している場合はドロップします。optional- 起動の試行時にない場合はドロップします。
20.16.1.3. ミラー要素 リンクのコピーリンクがクリップボードにコピーされました!
<mirror> の場所が最終的にソースと同じ内容を持ち、属性形式のファイル形式 (ソースの形式とは異なる場合あり) の場合に存在します。属性 ready が存在する場合は、ディスクがピボットする準備ができていることが分かっています。存在しない場合は、ディスクが依然としてコピー中である可能性があります。現在、この要素は出力でのみ有効で、入力では無視されます。
20.16.1.4. ターゲット要素 リンクのコピーリンクがクリップボードにコピーされました!
<target> 要素は、ディスクがゲスト仮想マシン OS に公開されるバス/デバイスを制御します。dev 属性は、論理デバイスの名前を示します。実際のデバイス名が、ゲスト仮想マシンの OS のデバイス名にマッピングされる保証はありません。オプションのバス属性では、エミュレートするディスクデバイスの種類を指定します。指定できる値はドライバー固有で、一般的な値は ide、scsi、virtio、xen、usb、または sata です。省略した場合、バスタイプはデバイス名のスタイルから推測されます。たとえば、'sda' という名前のデバイスは通常、SCSI バスを使用してエクスポートされます。オプションの属性 tray は、リムーバブルディスク (CD-ROM やフロッピーディスクなど) のトレイステータスを示します。値は open または closed のいずれかです。デフォルト設定は closed です。詳細は、ターゲット要素を参照してください。
20.16.1.5. iotune リンクのコピーリンクがクリップボードにコピーされました!
<iotune> 要素は、デバイスごとに異なる値を使用して、追加のデバイスごとの I / O チューニングを提供する機能を提供します (これを、ドメインにグローバルに適用するblkiotune要素と比較してください)。この要素には、次のオプションのサブ要素があります。指定されないか、または値 0 が指定されたサブ要素はすべて制限がないことを意味します。
<total_bytes_sec>- 合計スループット制限 (バイト/秒)。この要素は、<read_bytes_sec>または<write_bytes_sec>とは併用できません。<read_bytes_sec>- 読み取りスループットの制限 (バイト/秒)。<write_bytes_sec>- 書き込みスループットの制限 (バイト/秒)。<total_iops_sec>- 1 秒あたりの I/O 操作の合計です。この要素は、<read_iops_sec>または<write_iops_sec>とは併用できません。<read_iops_sec>- 1 秒あたりの読み取り I/O 操作数。<write_iops_sec>- 1 秒あたりの書き込み I/O 操作数。
20.16.1.6. driver リンクのコピーリンクがクリップボードにコピーされました!
<driver> 要素を使用すると、ディスクの提供に使用されるハイパーバイザードライバーに関する詳細を指定できます。以下のオプションが使用できます。
- ハイパーバイザーが複数のバックエンドドライバーをサポートする場合、
name属性はプライマリーバックエンドドライバー名を選択し、任意の type 属性はサブタイプを提供します。可能なタイプのリストについては、ドライバー要素を参照してください。 - オプションの
cache属性は、キャッシュメカニズムを制御します。使用できる値は、default、none、writethrough、writeback、directsync(writethroughと同様ですが、ホスト物理マシンのページキャッシュをバイパスします) およびunsafe(ホスト物理マシンはすべてのディスク io をキャッシュする場合があります) です。ゲスト仮想マシン仮想マシンからの同期要求は無視されます)。 - オプションの
error_policy属性は、ハイパーバイザーがディスクの読み取りまたは書き込みエラーでどのように動作するかを制御します。可能な値は、stop、report、ignore、およびenospaceです。error_policyのデフォルト設定はreportです。読み取りエラーのみに対する動作を制御するオプションのrerror_policyもあります。rerror_policyが指定されていない場合、error_policyは読み取りおよび書き込みエラーの両方に使用されます。rerror_policyが指定されている場合は、読み取りエラーのerror_policyをオーバーライドします。また、enospaceは読み取りエラーの有効なポリシーではないため、error_policyがenospaceに設定され、no rerror_policyが指定されていない場合は、読み取りエラーのデフォルト設定であるreportが使用される点に注意してください。 - オプションの
io属性は、I/O の特定のポリシーを制御します。qemuゲスト仮想マシン仮想マシンはthreadsとnativeをサポートします。オプションのioeventfd属性を使用すると、ディスクデバイスのドメイン I/O の非同期処理を設定できます。デフォルトは、ハイパーバイザーの判断に任されます。指定できる値はonとoffです。これを有効にすると、別のスレッドが I/O を処理している間にゲスト仮想マシンの仮想マシンを実行できます。通常、I/O の実行中にシステム CPU の使用率が高くなったゲスト仮想マシンの仮想マシンは、この恩恵を受けます。一方、ホストの物理マシンが過負荷になると、ゲスト仮想マシンの仮想マシンの I/O レイテンシーが増加します。ioを操作する必要があることを完全に証明している場合を除き、デフォルト設定を変更せず、ハイパーバイザーが設定を指示できるようにすることを強くお勧めします。 - オプションの
event_idx属性は、デバイスイベント処理のいくつかの側面を制御し、onまたはoffのいずれかに設定できます。on の場合、ゲスト仮想マシン仮想マシンの割り込みと終了の数を減らします。デフォルトではハイパーバイザーが決定し、デフォルトの設定はonになります。この動作が最適ではない状況がある場合、この属性は機能を強制的にoffにする方法を提供します。event_idxを操作する必要があることを完全に証明している場合を除き、デフォルト設定を変更せず、ハイパーバイザーが設定を指示できるようにすることを強くお勧めします。 - オプションの
copy_on_read属性は、リードバックファイルをイメージファイルにコピーするかどうかを制御します。使用できる値は、onまたは<off>のいずれかです。copy-on-readは、同じバッキングファイルセクターに繰り返しアクセスすることを回避し、バッキングファイルが低速のネットワーク上にある場合に役立ちます。デフォルトでは、copy-on-readはoffです。
20.16.1.7. 追加のデバイス要素 リンクのコピーリンクがクリップボードにコピーされました!
device 要素内では、以下の属性を使用できます。
<boot>- ディスクが起動可能であることを指定します。追加の起動値
<order>- システムの起動時にデバイスを試行する順序を指定します。<デバイスごと>のブート要素は、BIOS ブートローダーセクションの一般的なブート要素とは併用できません。
<encryption>- ボリュームの暗号化方法を指定します。詳細については、ストレージの暗号化ページを参照してください。<readonly>- ゲスト仮想マシンがデバイスを変更できないことを示します。この設定は、attributedevice='cdrom'を使用するディスクの既定値です。共有可能デバイスがドメイン間で共有される必要があることを示しています (ハイパーバイザーと OS が対応している場合)。shareableを使用すると、そのデバイスにcache='no'が指定されます。<transient>- デバイスのコンテンツの変更は、ゲスト仮想マシンの仮想マシンの終了時に自動的に元に戻す必要があることを示します。一部のハイパーバイザーでは、ディスクにtransientマークを付けると、ドメインが移行またはスナップショットに参加できなくなります。<serial>- ゲスト仮想マシンのハードドライブのシリアル番号を指定します。(例:<serial>WD-WMAP9A966149</serial>)<wwn>- 仮想ハードディスクまたは CD-ROM ドライブの WWN (World Wide Name) を指定します。16 桁の 16 進数で設定される必要があります。<vendor>- 仮想ハードディスクまたは CD-ROM デバイスのベンダーを指定します。印刷可能な 8 文字を超えてはなりません。<product>- 仮想ハードディスクまたは CD-ROM デバイスの製品を指定します。印刷可能な 16 文字を超えてはなりません。<host>- 4 つの属性をサポートします:viz、name、port、transport、socket。それぞれ、ホスト名、ポート番号、トランスポートタイプ、およびソケットへのパスを指定します。この要素の意味と要素数は、以下に示すようにprotocol属性により異なります。追加のホスト属性
nbd- nbd-server を実行しているサーバーを指定します。使用できるのは、1 台のホスト物理マシンだけです。rbd- RBD タイプのサーバーを監視し、1 つ以上のホスト物理マシンで使用できます。sheepdog- sheepdog サーバーのいずれかを指定し (デフォルトは localhost:7000)、ホスト物理マシンの 1 つを使用するか、またはいずれとも使用することができません。gluster- glusterd デーモンを実行しているサーバーを指定します。使用できる物理マシンは 1 つだけです。トランスポート属性の有効な値は、tcp、rdma、またはunixです。何も指定しないと、tcpが想定されます。transport がunixの場合、socket属性は unix ソケットへのパスを指定します。
<address>- ディスクを、コントローラーの指定したスロットに関連付けます。実際の<controller>デバイスは多くの場合、推測できますが、明示的に指定することもできます。type属性は必須で、通常はpciまたはdriveです。pciコントローラーの場合、bus、slot、およびfunctionの追加属性と、オプションのdomainおよびmultifunctionが存在する必要があります。multifunctionのデフォルトはoffです。driveコントローラーでは、追加の属性controller、bus、target、およびunitが利用できます。それぞれの属性のデフォルト設定は0です。auth- ソースへのアクセスに必要な認証情報を提供します。これには、認証時に使用するユーザー名を識別する必須属性usernameと、必須属性typeを持つサブ要素secretが含まれます。詳細は、デバイス要素を参照してください。geometry- ジオメトリー設定を上書きする機能を提供します。これは、主に S390 DASD ディスクまたは古い DOS ディスクに役立ちます。cyls- シリンダーの数を指定します。heads- ヘッドの数を指定します。secs- トラックごとのセクター数を指定します。trans- BIOS-Translation-Modus を指定し、none、lba、またはautoの値を設定できますblockio- ブロックデバイスを、以下のブロックデバイスプロパティーのいずれかで上書きできます。blockio オプション
logical_block_size- ゲスト仮想マシン仮想マシン OS にレポートし、ディスク I/O の最小単位を記述します。physical_block_size- ゲスト仮想マシンの仮想マシン OS を報告し、ディスクのハードウェアセクターサイズを説明します。これは、ディスクデータの調整に関連付けることができます。
20.16.2. ファイルシステム リンクのコピーリンクがクリップボードにコピーされました!
図20.24 デバイス - ファイルシステム
filesystem 属性には、次の可能な値があります。
type='mount'- ゲスト仮想マシンにマウントするホスト物理マシンディレクトリーを指定します。指定されていない場合、これがデフォルトのタイプです。このモードには、属性type='path'またはtype='handle'を持つオプションのサブ要素driverもあります。ドライバーブロックには、ホストの物理マシンページキャッシュとの相互作用をさらに制御するオプションの属性wrpolicyがあります。属性を省略するとデフォルト設定に戻りますが、値を immediate に指定すると、ゲスト仮想マシンのファイル書き込み操作中にタッチされたすべてのページに対してホスト物理マシンのライトバックが即座にトリガーされます。type='template'- OpenVZ ファイルシステムテンプレートを指定し、OpenVZ ドライバーによってのみ使用されます。type='file'- ホスト物理マシンファイルがイメージとして扱われ、ゲスト仮想マシンにマウントされることを指定します。このファイルシステム形式は自動検出され、LXC ドライバーでのみ使用されます。type='block'- ゲスト仮想マシンにマウントするホスト物理マシンブロックデバイスを指定します。ファイルシステム形式は自動検出され、LXC ドライバーでのみ使用されます。type='ram'- ホスト物理マシン OS のメモリーを使用するメモリー内ファイルシステムが使用されることを指定します。source 要素には単一の属性usageがあり、メモリー使用量の制限をキビバイト単位で指定し、LXC ドライバーでのみ使用されます。type='bind'- ゲスト仮想マシン内の別のディレクトリーにバインドされるゲスト仮想マシン内のディレクトリーを指定します。この要素は LXC ドライバーでのみ使用されます。- ソースにアクセスするためのセキュリティーモードを指定する
accessmode。現在、これは QEMU/KVM ドライバーの type='mount' でのみ機能します。以下の値を使用できます。passthrough- ゲスト仮想マシン内から設定されたユーザーのアクセス許可設定を使用してソースにアクセスすることを指定します。指定されていない場合、これがデフォルトのアクセスモードです。mapped- ハイパーバイザーの権限設定を使用してソースにアクセスすることを指定します。squash-'passthrough'と同様に、例外は、chownなどの特権操作の失敗が無視されることです。これにより、ハイパーバイザーを非ルートとして実行するユーザーがパススルーのようなモードを使用できるようになります。
<source>: ゲスト仮想マシンでアクセスされるホストの物理マシンのリソースを指定します。name属性は<type='template'>と共に使用する必要があります。dir属性は<type='mount'>と共に使用する必要があります。usage属性は、<type='ram'>とともに使用され、メモリー使用量を KB 単位で設定します。target- ゲスト仮想マシンでソースドライバーにアクセスできる場所を指定します。ほとんどのドライバーの場合、これは自動マウントポイントですが、QEMU-KVM の場合、これはマウントする場所のヒントとしてゲスト仮想マシンにエクスポートされる任意の文字列タグにすぎません。readonly- ファイルシステムをゲスト仮想マシンの読み取り専用マウントとしてエクスポートできるようにします。デフォルトでは、read-writeアクセスが許可されています。space_hard_limit- このゲスト仮想マシンのファイルシステムで使用可能な最大スペースを指定しますspace_soft_limit- このゲスト仮想マシンのファイルシステムで使用可能な最大スペースを指定します。コンテナーは、猶予期間中、ソフト制限を超えることが許可されています。その後、ハード制限が適用されます。
20.16.3. デバイスアドレス リンクのコピーリンクがクリップボードにコピーされました!
<address> サブ要素があります。入力でアドレス (またはアドレス内の任意の属性) が省略された場合、libvirt は適切なアドレスを生成します。レイアウトをさらに制御する必要がある場合は明示的なアドレスが必要になります。address 要素を含むデバイスの例は、以下を参照してください。
type があります。特定のデバイスに使用するアドレスの選択は、デバイスやゲスト仮想マシンのアーキテクチャーによって一部が制約されます。たとえば、ディスクデバイスは type='disk' を使用し、コンソールデバイスは、32 ビット AMD および Intel アーキテクチャーの type='pci'、または AMD64 と Intel 64、ゲスト仮想マシン、または PowerPC64 pseries ゲスト仮想マシンの type='spapr-vio'使用します。各アドレス<type>には、デバイスの配置先を制御する追加のオプション属性があります。追加の属性は、以下のとおりです。
type='pci'- PCI アドレスには、以下の追加属性があります。ドメイン(2 バイトの 16 進数の整数で、現在 qemu で使用されていません)bus(0 から 0xff までの 16 進数の値)slot(0x0 から 0x1f までの 16 進数の値)function(0 から 7 までの値)- また、
multi-function属性も利用できます。これは、PCI 制御レジスターの特定のスロット/機能に対して、多機能ビットをオンにすることを制御します。この多機能属性は、デフォルトでは'off'ですが、多機能を使用するスロットの機能 0 の場合は'on'に設定する必要があります。
type='drive'- drive アドレスには、以下の追加属性があります。controller- (2 桁のコントローラー番号)bus- (2 桁のバス番号)target- (2 桁のバス番号)unit- (バス上の 2 桁のユニット番号)
type='virtio-serial'- 各 virtio-serial アドレスには、以下の追加属性があります。controller- (2 桁のコントローラー番号)bus- (2 桁のバス番号)slot- (バス内の 2 桁のスロット)
type='ccid'- スマートカードに使用される CCID アドレスには、以下の追加属性があります。bus- (2 桁のバス番号)スロット属性 (バス内の 2 桁のスロット)
type='usb'- USB アドレスには、以下の追加属性があります。bus- (0 から 0xfff までの 16 進数の値)port- (1.2 または 2.1.3.1 などの最大 4 オクテットのドット表記)
type='spapr-vio'- PowerPC pseries ゲスト仮想マシンでは、SPAPR-VIO バスにデバイスを割り当てることができます。フラットな 64 ビットのアドレス空間を持ちます。通常、デバイスは 0x1000 の倍数 (ゼロ以外) で割り当てられますが、その他のアドレスは有効で、libvirt で許可されています。追加の属性: reg (開始レジスタの 16 進値アドレス) をこの属性に割り当てることができます。
20.16.4. コントローラー リンクのコピーリンクがクリップボードにコピーされました!
<controller> 要素を指定する必要がある場合があります。
図20.25 コントローラー要素
type ("ide", "fdc", "scsi", "sata", "usb", "ccid", or "virtio-serial" のいずれか) と、(address 要素のコントローラー属性で使用するために) バスコントローラーが検出される順序を表す 10 進数の整数である必須属性index があります。"virtio-serial" コントローラーには、さらに 2 つのオプション属性 (ports および vectors) があり、コントローラーを介して接続できるデバイスの数を制御します。
<controller type='scsi'> には、"auto"、"buslogic"、"ibmvscsi"、"lsilogic"、"lsias1068"、"virtio-scsi、"vmpvscsi" の 1 つであるオプションの属性 model があります。virtio-scsi コントローラーとドライバーは、KVM と Windows の両方のゲスト仮想マシンで動作することに注意してください。<controller type='scsi'> には、指定したキュー数のマルチキューサポートを有効にする属性 num_queues もあります。
"usb" コントローラーには、"piix3-uhci"、"piix4-uhci"、"ehci"、"ich9-ehci1"、"ich9-uhci1"、"ich9-uhci2"、"ich9-uhci3"、"vt82c686b-uhci"、"pci-ohci"、または、"nec-xhci" の 1 つであるオプションの属性 model があります。また、ゲスト仮想マシンで USB バスを明示的に無効にする必要がある場合は、model='none' を使用できます。PowerPC64 "spapr-vio" アドレスには、関連付けられたコントローラーがありません。
address は、上記のセマンティクスを使用して、コントローラーとマスターバスの正確な関係を指定できます。
master があります。コンパニオンコントローラーはマスターと同じバスにあるため、コンパニオンインデックスの値は同じである必要があります。
図20.26 デバイス - コントローラー - USB
20.16.5. デバイスリース リンクのコピーリンクがクリップボードにコピーされました!
図20.27 デバイス - デバイスリース
lease セクションには、以下の引数を指定できます。
lockspace- 鍵が保持されているロック領域を識別する任意の文字列です。ロックマネージャーは、ロックスペース名の形式や長さに追加の制限を課す場合があります。key- 取得するリースを一意に識別する任意の文字列。ロックマネージャーは、キーの形式や長さに追加の制限を課す場合があります。target- ロックスペースに関連付けられたファイルの完全修飾パス。オフセットは、リースがファイル内に保存される場所を指定します。ロックマネージャーがオフセットを必要としない場合は、この値を0に設定します。
20.16.6. ホスト物理マシンのデバイス割り当て リンクのコピーリンクがクリップボードにコピーされました!
20.16.6.1. USB / PCI デバイス リンクのコピーリンクがクリップボードにコピーされました!
hostdev 要素を使用してゲスト仮想マシンに渡すことができます。管理ツールを使用してホスト物理マシンを変更することにより、ドメイン xml ファイルの以下のセクションが設定されます。
図20.28 デバイス - ホスト物理マシンのデバイス割り当て
図20.29 デバイス - ホスト物理マシンのデバイス割り当ての代替案
| パラメーター | 説明 |
|---|---|
hostdev | これは、ホスト物理マシンデバイスを説明する主要なコンテナーです。USB デバイスの場合、パススルー mode は常に subsystem であり、type は USB デバイスの場合は usb、PCI デバイスの場合は pciです。PCI デバイスの managed が yes の場合、ゲスト仮想マシンに渡される前にホストの物理マシンからデタッチされ、ゲスト仮想マシンの終了後にホストの物理マシンに再割り当てられます。PCI および USB デバイスの managed が省略されるか、または no である場合、ゲスト仮想マシンを起動するか、デバイスをホットプラグする前に、virNodeDeviceDettach (または virsh nodedev-dettach) の引数を使用する必要があります。また、ゲスト仮想マシンのホットプラグまたは停止後に virNodeDeviceReAttach (または virsh nodedev-reattach) を使用します。 |
source | ホストの物理マシンから見たデバイスを説明します。USB デバイスは、vendor 要素および product 要素を使用してベンダー/プロダクト id でアドレスを指定するか、address 要素を使用して、ホスト物理マシンのデバイスのアドレスを指定します。一方、PCI デバイスは、アドレスによってのみ記述できます。USB デバイスのソース要素には、startupPolicy 属性が含まれる場合があります。これを使用すると、指定したホスト物理マシンの USB デバイスが見つからない場合の対処方法に関するルールを定義できます。この属性は、次の値を受け入れます。
|
vendor, product | このような要素には、それぞれ USB ベンダーと製品 ID を指定する id 属性があります。ID は、10 進数、16 進数 (0x で始まる)、または 8 進数 (0 で始まる) で指定できます。 |
boot | デバイスが起動可能であることを指定します。この属性の順序により、システムの起動シーケンスでデバイスが試行される順序が決定します。デバイスごとのブート要素は、BIOS ブートローダーセクションの一般的なブート要素とは併用できません。 |
rom | PCI デバイスの ROM がゲスト仮想マシンに表示される方法を変更する場合に使用されます。オプションの bar 属性は on または off に設定でき、デバイスの ROM がゲスト仮想マシンのメモリーマップで表示されるかどうかを決定します。(PCI のドキュメントでは、rombar 設定により、ROM のベースアドレスレジスターの存在が制御されます。)rom bar を指定しないと、デフォルト設定が使用されます。オプションの file 属性は、デバイスの ROM BIOS としてゲスト仮想マシンに提示されるバイナリーファイルを指定するために使用されます。これは、たとえば、sr-iov 対応イーサネットデバイスの仮想機能に PXE ブート ROM を提供する場合に役立ちます (VF にはブート ROM がありません)。 |
address | また、デバイスがホストの物理マシンに表示される USB バスとデバイス番号を指定する bus および bus 属性もあります。この属性の値は、10 進数、16 進数 (0x で始まる)、または 8 進数 (0 で始まる) で指定できます。PCI デバイスの場合、この要素は、lspci または virsh nodedev-list で検出されるデバイスを指定できるように、3 つの属性を持ちます。 |
20.16.6.2. ブロック / キャラクターデバイス リンクのコピーリンクがクリップボードにコピーされました!
hostdev要素を変更することで、ゲスト仮想マシンに渡すことができます。これは、コンテナーベースの仮想化でのみ可能であることに注意してください。
図20.30 デバイス - ホスト物理マシンのデバイス割り当てブロックキャラクターデバイス
図20.31 デバイス - ホスト物理マシンのデバイス割り当てブロックキャラクターデバイスの代替案 1
図20.32 デバイス - ホスト物理マシンのデバイス割り当てブロックキャラクターデバイスの代替案 2
| パラメーター | 説明 |
|---|---|
hostdev | これは、ホスト物理マシンデバイスを説明する主要なコンテナーです。ブロックデバイス/キャラクターデバイスの場合、パススルー mode は常に capabilities になります。ブロックデバイスの場合は type は block に、キャラクターデバイスの場合は char になります。 |
source | これは、ホストの物理マシンから見たデバイスを説明します。ブロックデバイスの場合は、ホスト物理マシンの OS のブロックデバイスへのパスが、ネストされた block 要素で提供され、キャラクターデバイスの場合は char 要素が使用されます。 |
20.16.7. リダイレクトされたデバイス リンクのコピーリンクがクリップボードにコピーされました!
図20.33 デバイス - リダイレクトされたデバイス
| パラメーター | 説明 |
|---|---|
redirdev | これは、リダイレクトされたデバイスを記述するためのメインコンテナーです。USB デバイスの場合、bus は usb である必要があります。追加の属性タイプが必要で、対応しているシリアルデバイスタイプのいずれかと一致するものが、トンネルのホスト物理マシン側の説明に使用されます。通常は、type='tcp' または type='spicevmc' (SPICE グラフィックデバイスの usbredir チャンネルを使用) です。redirdev 要素には、オプションのサブ要素 address があります。これは、デバイスを特定のコントローラーに関連付けることができます。target サブ要素は必要ありませんが、source などのサブ要素は、指定の type に応じて必要になる場合があります (キャラクターデバイスのコンシューマーはゲスト仮想マシンに表示されるデバイスではなく、ハイパーバイザー自体であるため)。 |
boot | デバイスが起動可能であることを指定します。order 属性は、システムの起動順序においてデバイスが試行される順序を決定します。デバイスごとのブート要素は、BIOS ブートローダーセクションの一般的なブート要素とは併用できません。 |
redirfilter | これは、特定のデバイスをリダイレクトから除外するフィルタールールを作成するために使用されます。サブ要素 usbdev を使用して、各フィルタールールを定義します。class 属性は USB クラスコードです。 |
20.16.8. スマートカードデバイス リンクのコピーリンクがクリップボードにコピーされました!
smartcard 要素を介してゲスト仮想マシンに提供することができます。ホストマシン上の USB スマートカードリーダーデバイスは、ホストとゲストの両方が使用できるようにすることはできず、ゲストから削除されたときにホストコンピューターをロックできるため、単純なデバイスパススルーを使用するゲストでは使用できません。したがって、一部のハイパーバイザーは、ゲスト仮想マシンにスマートカードインターフェイスを提示できる特別な仮想デバイスを提供します。これには、ホストマシンから、またはサードパーティーのスマートカードプロバイダーによって作成されたチャンネルから認証情報を取得する方法を説明するいくつかのモードがあります。キャラクターデバイスを介した USB デバイスリダイレクトのパラメーターを設定するには、ドメイン XML の次のセクションを編集します。
図20.34 デバイス - スマートカードデバイス
smartcard 要素には必須の属性mode があります。次のモードがサポートされています。各モードで、ゲスト仮想マシンは、物理 USB CCID(チップ/スマートカードインターフェイスデバイス) カードのように動作する USB バス上のデバイスを認識します。
| パラメーター | 説明 |
|---|---|
mode='host' | このモードでは、ハイパーバイザーはゲスト仮想マシンからのすべての直接アクセス要求を、NSS を介してホスト物理マシンのスマートカードに中継します。その他の属性やサブ要素は必要ありません。オプションの address サブ要素の使用方法は、以下を参照してください。 |
mode='host-certificates' | このモードでは、スマートカードをホスト物理マシンに接続させることなく、ホスト物理マシンのデータベースに存在する 3 つの NSS 証明書名を指定できます。これらの証明書は、certutil -d /etc/pki/nssdb -x -t CT,CT,CT -S -s CN=cert1 -n cert1, コマンドを使用して生成できます。生成される 3 つの証明書名は、それぞれ 3 つの certificate サブ要素の内容として提供する必要があります。追加のサブ要素の database では、代替ディレクトリーの絶対パスを指定できます (証明書の作成時の certutil コマンドの -d オプションに一致)。指定しないと /etc/pki/nssdb にデフォルトが設定されます。 |
mode='passthrough' | このモードでは、ハイパーバイザーがホスト物理マシンと直接通信するのではなく、セカンダリーキャラクターデバイスを介してすべての要求をサードパーティープロバイダーにトンネリングできます。サードパーティープロバイダーは、スマートカードと通信するか、3 つの証明書ファイルを使用します。このモードでは、トンネルのホスト物理マシン側を説明するために、対応しているシリアルデバイスタイプの 1 つに一致する追加の属性typeが必要になります。type='tcp' または type='spicevmc' (SPICE グラフィックデバイスのスマートカードチャネルを使用) が一般的です。target サブ要素は必要ありませんが、source などのサブ要素は、指定のタイプに応じて必要になる場合があります (キャラクターデバイスのコンシューマーはゲスト仮想マシンに表示されるデバイスではなく、ハイパーバイザー自体であるため)。 |
addressをサポートしています。これは、スマートカードと ccid バスコントローラーとの間の関連を微調整します (「デバイスアドレス」 を参照してください)。
20.16.9. Network Interfaces リンクのコピーリンクがクリップボードにコピーされました!
図20.35 デバイス - ネットワークインターフェイス
<interface> 要素には、属性 type='pci' を使用してインターフェイスを特定の pci スロットに関連付けることができるオプションの <address> サブ要素があります (「デバイスアドレス」 を参照してください)。
20.16.9.1. 仮想ネットワーク リンクのコピーリンクがクリップボードにコピーされました!
<ネットワーク> 定義で個別に説明されている複数ホストの物理マシン環境)。さらに、名前付きネットワーク定義によって詳細が記述されている接続を提供します。仮想ネットワークの forward mode 設定によっては、ネットワークが完全に分離している (<forward> 要素が指定されていない) 場合と、NAT を使用して明示的なネットワークデバイスまたはデフォルトルートに接続している (forward mode='nat') 場合、NAT を使用せずにルーティングしている (forward mode='route'/) 場合、またはホスト物理マシンのネットワークインターフェイス (macvtap を使用) またはブリッジデバイス (forward mode=' bridge|private|vepa|passthrough'/) のいずれかに直接接続している場合があります。
<target> 要素 (「ターゲット要素の上書き」 を参照) で上書きできます。
<direct> ネットワーク接続 (以下で説明) と同様に、タイプ network の接続は <virtualport> 要素を指定し、vepa (802.1Qbg) または 802.1Qbh 準拠のスイッチに転送される設定データと共に、Open vSwitch 仮想スイッチに転送できます。
<network> の設定によって異なる場合があるため、仮想ポートの種類の属性を省略し、複数の異なる仮想ポートの種類の属性を指定することもできます (特定の属性を除外することもできます)。ドメインの起動時に、ネットワークで定義されたタイプと属性、およびインターフェイスによって参照されるポートグループをマージすることにより、完全な <virtualport> 要素が構築されます。新しく構築された仮想ポートは、両方の組み合わせです。下位の仮想ポートの属性は、上位の仮想ポートで定義された属性に変更を加えることはできません。インターフェイスが最高の優先度を取り、ポートグループが最低の優先度を取ります。
profileid と interfaceid の両方を提供する必要があります。managerid、typeid、profileid などの仮想ポートから入力するその他の属性は任意です。
図20.36 デバイス - ネットワークインターフェイス - 仮想ネットワーク
20.16.9.2. LAN へのブリッジ リンクのコピーリンクがクリップボードにコピーされました!
<vnetN> の名前で作成された関連する tun デバイスがあります。これは <target> 要素 (「ターゲット要素の上書き」 を参照) で上書きすることもできます。<tun> デバイスは、ブリッジにスレーブされます。IP 範囲/ネットワーク設定は、LAN で使用されるものです。これにより、物理マシンと同様に、ゲスト仮想マシンの完全な着信ネットアクセスと発信ネットアクセスが提供されます。
virtualport type='openvswitch'/ を追加することで、Open vSwitch ブリッジデバイスに接続することもできます。Open vSwitch タイプ virtualport は、parameters 要素に 2 つのパラメーターを指定できます。1 つは、この特定のインターフェイスを Open vSwitch に固有に識別するために使用される標準の uuid であるinterfaceid (指定しないと、インターフェイスの最初の定義時にランダムなinterfaceidが生成されます) で、もう 1 つは Open vSwitch にインターフェイス<port-profile> として送信されるオプションのprofileid です。ブリッジを LAN 設定に設定するには、管理ツールを使用して、ドメイン XML の以下の部分を設定します。
図20.37 デバイス - ネットワークインターフェイス - LAN へのブリッジ
20.16.9.3. ポートマスカレードの範囲の設定 リンクのコピーリンクがクリップボードにコピーされました!
図20.38 ポートマスカレードの範囲
<forward mode='nat'> <address start='192.0.2.1' end='192.0.2.10'/> </forward> ...
<forward mode='nat'>
<address start='192.0.2.1' end='192.0.2.10'/>
</forward> ...
20.16.9.4. ユーザー空間の SLIRP スタック リンクのコピーリンクがクリップボードにコピーされました!
図20.39 デバイス - ネットワークインターフェイス - ユーザー空間の SLIRP スタック
20.16.9.5. 一般的なイーサネット接続 リンクのコピーリンクがクリップボードにコピーされました!
vnetN の名前で作成されたtun デバイスがありますが、target 要素で上書きすることもできます。tun デバイスを作成した後、必要なホスト物理マシンネットワーク統合を実行することが期待されるシェルスクリプトが実行されます。初期設定では、このスクリプトは /etc/qemu-ifup と呼ばれていますが、上書きできます (「ターゲット要素の上書き」 を参照)。
図20.40 デバイス - ネットワークインターフェイス - 汎用イーサネット接続
20.16.9.6. 物理インターフェイスへの直接接続 リンクのコピーリンクがクリップボードにコピーされました!
<interface type='direct'> を使用すると、仮想マシンの NIC がホスト上の指定された物理インターフェイスに接続されます。
vepa (仮想イーサネットポートアグリゲータ)。これはデフォルトのモード、bridge、または private です。
図20.41 デバイス - ネットワークインターフェイス - 物理インターフェイスへの直接接続
| 要素 | 説明 |
|---|---|
vepa | ゲスト仮想マシンのパケットはすべて外部ブリッジに送信されます。パケットの送信先が、パケットの送信元と同じホスト物理マシン上のゲスト仮想マシンであるパケットは、VEPA 対応のブリッジによりホスト物理マシンに返されます (現在のブリッジは、通常 VEPA 対応ではありません)。 |
bridge | 宛先が、送信元と同じホストの物理マシンにあるパケットは、ターゲットの macvtap デバイスに直接配信されます。直接配信する場合は、作成元デバイスと宛先デバイスの両方がブリッジモードになっている必要があります。いずれかが vepa モードにある場合は、VEPA 対応のブリッジが必要です。 |
プライベート | すべてのパケットは外部ブリッジに送信されます。また、外部ルーターまたはゲートウェイを介して送信され、そのデバイスがホストの物理マシンに返す場合は、同じホストの物理マシンのターゲット VM にのみ配信されます。移行元デバイスまたは移行先デバイスのいずれかがプライベートモードの場合は、以下の手順が行われます。 |
パススルー | この機能は、移行機能を失うことなく、SRIOV 対応 NIC の仮想機能をゲスト仮想マシンに直接接続します。すべてのパケットは、設定したネットワークデバイスの VF/IF に送信されます。デバイスの機能によっては、追加の前提条件や制限が適用される場合があります。たとえば、これにはカーネル 2.6.38 以降が必要です。 |
| 要素 | 説明 |
|---|---|
managerid | VSI Manager ID は、VSI タイプおよびインスタンス定義を含むデータベースを識別します。これは整数値で、値 0 が予約されます。 |
typeid | VSI タイプ ID は、ネットワークアクセスを特徴付ける VSI タイプを識別します。VSI の種類は通常、ネットワーク管理者が管理します。これは整数値です。 |
typeidversion | VSI タイプバージョンでは、複数のバージョンの VSI タイプが許可されます。これは整数値です。 |
instanceid | VSI インスタンス ID 識別子は、VSI インスタンス (仮想マシンの仮想インターフェイス) が作成されると生成されます。これは、グローバルに一意の識別子です。 |
profileid | プロファイル ID には、このインターフェイスに適用されるポートプロファイルの名前が含まれます。この名前は、ポートプロファイルデータベースにより、ポートプロファイルからネットワークパラメーターに解決され、これらのネットワークパラメーターはこのインターフェイスに適用されます。 |
図20.42 デバイス - ネットワークインターフェイス - 物理インターフェイスへの直接接続追加パラメーター
図20.43 デバイス - ネットワークインターフェイス - 物理インターフェイスへの直接接続、さらなる追加パラメーター
profileid 属性には、このインターフェイスに適用されるポートプロファイルの名前が含まれます。この名前は、ポートプロファイルデータベースにより、ポートプロファイルからネットワークパラメーターに解決され、これらのネットワークパラメーターはこのインターフェイスに適用されます。
20.16.9.7. PCI パススルー リンクのコピーリンクがクリップボードにコピーされました!
source 要素で指定される PCI ネットワークデバイスは、ジェネリックデバイスパススルーを使用してゲスト仮想マシンに直接割り当てられます。このデバイスの MAC アドレスは、最初にオプションで設定された値に設定され、そのデバイスの MAC アドレスがオプションで指定された virtualport 要素を使用して 802.1Qbh 対応スイッチに関連付けられます (type='direct' ネットワークデバイスの場合は、上記の仮想ポートの例を参照してください)。標準的なシングルポートの PCI イーサネットカードドライバー設計の制限により、この方法で割り当てることができるのは Single Root I/O Virtualization (SR-IOV) virtual function (VF) デバイスのみとなることに注意してください。標準的なシングルポートの PCI または PCIe イーサネットカードをゲスト仮想マシンに割り当てる場合は、従来の hostdev デバイス定義を使用します。
hostdev デバイスの機能と非常に似ています。相違点は、パススルーデバイスに MAC アドレスとvirtualportを指定できることです。この機能が不要な場合、SR-IOV に対応していない標準のシングルポート PCI カード、PCIe カード、または USB ネットワークカードがある場合 (そのため、ゲスト仮想マシンドメインに割り当てられた後にリセット中に設定済みの MAC アドレスを失います)、または 0.9.11 よりも古い libvirt のバージョンを使用している場合は、標準の hostdev を使用して、interface type='hostdev'/ の代わりに、ゲスト仮想マシンにデバイスを割り当てます。
図20.44 デバイス - ネットワークインターフェイス - PCI パススルー
20.16.9.8. マルチキャストトンネル リンクのコピーリンクがクリップボードにコピーされました!
mcast に設定/作成されます。そして、mac アドレスおよびソースアドレスを提供します。結果は、ドメイン XML に加えられた変更に表示されます。
図20.45 デバイス - ネットワークインターフェイス - マルチキャストトンネル
20.16.9.9. TCP トンネル リンクのコピーリンクがクリップボードにコピーされました!
interface type を操作し、server または client に設定/変更し、Mac と送信元アドレスを提供することによって作成されます。結果は、ドメイン XML に加えられた変更に表示されます。
図20.46 デバイス - ネットワークインターフェイス - TCP トンネル
20.16.9.10. NIC ドライバー固有のオプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
driver サブ要素の属性として設定されます。このようなオプションは、管理ツールを使用して設定し、ドメイン XML の以下のセクションを設定します。
図20.47 デバイス - ネットワークインターフェイス - NIC ドライバー固有のオプションの設定
| パラメーター | 説明 |
|---|---|
name | オプションの name 属性では、使用するバックエンドドライバーの種類が強制されます。値は、qemu (ユーザー空間のバックエンド) または vhost (カーネルにより vhost モジュールが提供されることが必要なカーネルバックエンド) のいずれかになります。カーネルサポートのない vhost ドライバーを要求しようとする場合は拒否されます。デフォルト設定は、vhost ドライバーが存在する場合は vhost になりますが、存在しない場合は警告なしに qemu に戻ります。 |
txmode | 送信バッファーが満杯になった場合にパケットの送信を処理する方法を指定します。値は、iothread または timer のいずれかになります。iothread に設定すると、パケット tx はドライバーの下半分の iothread ですべて実行されます (このオプションは、qemu コマンドラインの "-device" virtio-net-pci オプションに "tx=bh" を追加することに変換されます)。timer に設定すると、qemu で tx 処理が行われます。現在送信可能な tx データよりも多くの tx データが存在する場合は、qemu が他の処理を行うために移動する前にタイマーが設定されます。タイマーが実行されると、さらなるデータを送信するために別の試みが行われます。一般に、このオプションを変更することが絶対に必要であると確信している場合を除いて、このオプションはそのままにしておく必要があります。 |
ioeventfd | ユーザーがインターフェイスデバイスのドメイン I/O 非同期処理を設定できるようにします。デフォルトは、ハイパーバイザーの判断に任されます。許可される値は on と off です。このオプションを有効にすると、qemu は、別のスレッドが I/O を処理している間にゲスト仮想マシンを実行できます。通常、I/O の実行中にシステム CPU の使用率が高くなったゲスト仮想マシンは、この恩恵を受けます。一方、物理ホストマシンのオーバーロードは、ゲスト仮想マシンの I/O レイテンシーを増加させる可能性もあります。したがって、このオプションを変更することが絶対に必要であると確信している場合を除いて、このオプションはそのままにしておく必要があります。 |
event_idx | event_idx 属性は、デバイスイベント処理の一部の側面を制御します。値は on または off のいずれかになります。on を選択すると、ゲスト仮想マシンの割り込みと終了の数が減ります。デフォルトは on です。この動作が最適ではない状況がある場合、この属性は機能を強制的にオフにする方法を提供します。変更が絶対に必要であると確信している場合を除いて、このオプションはそのままにしておく必要があります。 |
20.16.9.11. ターゲット要素の上書き リンクのコピーリンクがクリップボードにコピーされました!
図20.48 デバイス - ネットワークインターフェイス - ターゲット要素の上書き
20.16.9.12. 起動順序の指定 リンクのコピーリンクがクリップボードにコピーされました!
図20.49 起動順序の指定
20.16.9.13. インターフェイス ROM BIOS 設定 リンクのコピーリンクがクリップボードにコピーされました!
図20.50 インターフェイス ROM BIOS 設定
bar 属性は on または off に設定でき、デバイスの ROM がゲスト仮想マシンのメモリーマップで表示されるかどうかを決定します。(PCI のドキュメントでは、rombar 設定により、ROM のベースアドレスレジスターの存在が制御されます。)ROM バーが指定されていない場合、qemu のデフォルトが使用されます (古いバージョンの qemu はデフォルトの offを使用していましたが、新しい qemus のデフォルトは onです)。オプションの file 属性は、デバイスの ROM BIOS としてゲスト仮想マシンに提示されるバイナリーファイルを指定するために使用されます。これは、ネットワークデバイスに別のブート ROM を提供する際に役立ちます。
20.16.9.14. QoS (Quality of Service) リンクのコピーリンクがクリップボードにコピーされました!
bandwidth 要素には、最大で 1 つのインバウンドおよび最大で 1 つのアウトバウンド子要素を設定できます。このような子要素のいずれかを外した場合は、トラフィックの方向に QoS が適用されません。したがって、ドメインの受信トラフィックのみを形成する場合は、受信のみを使用し、その逆も同様です。
average (または以下のような floor) が 1 つずつあります。average は、シェイプされるインターフェイスの平均ビットレートを指定します。次に、2 つのオプションの属性があります。インターフェイスがデータを送信できる最大速度を指定する peakと、ピーク速度で burst できるバイト数を指定するburst です。属性に使用できる値は整数です。
average 属性および peak 属性の単位は キロバイト/秒 で、burst はキロバイト単位でのみ設定されます。また、着信トラフィックにはfloor 属性を指定できます。これにより、シェーピングのインターフェイスでは最小限のスループットが保証されます。floor を使用する場合は、すべてのトラフィックが QoS の決定が行われる 1 つのポイントを通過する必要があります。このため、forwardタイプが route、nat、または no forward at all である interface type='network'/ の場合のみに使用できます。仮想ネットワーク内では、接続されているすべてのインターフェイスに、少なくとも着信 QoS セット (average 以上) が必要ですが、floor 属性では average を指定する必要がありません。ただし、peak 属性および burst 属性には依然としてaverage が必要です。現時点では、Ingress qdiscs にクラスがないため、floor は受信トラフィックにのみ適用でき、送信トラフィックには適用されません。
図20.51 QoS (Quality of Service)
20.16.9.15. VLAN タグの設定 (サポートされているネットワークタイプのみ) リンクのコピーリンクがクリップボードにコピーされました!
図20.52 VLAN タグの設定 (サポートされているネットワークタイプのみ)
vlan 要素でゲスト仮想マシンのネットワークトラフィックに適用する 1 つ以上の vlan タグを指定できます (openvswitch および type='hostdev' SR-IOV インターフェイスは、ゲスト仮想マシントラフィックの透過的な VLAN タグ付けをサポートします。標準の Linux ブリッジや libvirt 独自の仮想ネットワークを含む他のすべては、これをサポートしません。802.1 Qbh (vn-link) スイッチおよび 802.1Qbg (VEPA) スイッチは、(libvirt の外部で) ゲスト仮想マシンのトラフィックを特定の vlan にタグ付けする独自の方法を提供します。 複数のタグを指定できるようにするには (vlan トランクの場合)、tag サブ要素で使用する vlan タグを指定します (tag id='42'/ など)。インターフェイスに複数の vlan 要素が定義されている場合は、指定されたすべてのタグを使用して VLAN トランクを実行することが想定されます。単一のタグを使用した vlan トランキングが必要な場合は、オプションの属性 trunk='yes' をトップレベルの vlan 要素に追加できます。
20.16.9.16. 仮想リンクの状態の変更 リンクのコピーリンクがクリップボードにコピーされました!
state に指定できる値は、up および down です。値として down が指定されている場合、インターフェイスはネットワークケーブルが切断されているかのように動作します。この要素が指定されていない場合のデフォルトの動作は、リンク状態を up にすることです。
図20.53 仮想リンクの状態の変更
20.16.10. 入力デバイス リンクのコピーリンクがクリップボードにコピーされました!
図20.54 入力デバイス
<input> 要素には 1 つの必須属性があります。type は次のように設定できます: mouse または tablet。後者は絶対的なカーソル移動を提供し、前者は相対的な移動を使用します。オプションの bus 属性を使用すると、デバイスタイプを詳細に指定できます。また、xen (準仮想化)、ps2、および usb に設定できます。
<address>があります。これは、上記で説明されているように、デバイスを特定の PCI スロットに関連付けることができます。
20.16.11. ハブデバイス リンクのコピーリンクがクリップボードにコピーされました!
図20.55 ハブデバイス
...
<devices>
<hub type='usb'/>
</devices>
...
...
<devices>
<hub type='usb'/>
</devices>
...
usb のみになります。hub 要素には、type='usb' をオプションに持つオプションのサブ要素 address があり、デバイスを特定のコントローラーに関連付けることができます。
20.16.12. グラフィカルフレームバッファー リンクのコピーリンクがクリップボードにコピーされました!
図20.56 グラフィカルフレームバッファー
graphics 要素には必須のtype 属性があり、以下の説明に従って、sdl、vnc、rdp、または desktop の値をとります。
| パラメーター | 説明 |
|---|---|
sdl | これにより、ホスト物理マシンのデスクトップにウィンドウが表示されます。3 つのオプションの引数を取ることができます。使用するディスプレイの display 属性、認証 ID の xauth 属性、および yes または no の値を受け入れるオプションの fullscreen 属性です。 |
vnc | VNC サーバーを起動します。port 属性は、TCP ポート番号を指定します (-1 は、自動割り当てが必要であることを示す従来の構文)。autoport 属性は、使用する TCP ポートの自動割り当てを指定する際に推奨される新しい構文です。listen 属性は、サーバーがリッスンする IP アドレスです。passwd 属性は、クリアテキストで VNC パスワードを提供します。keymap 属性は、使用するキーマップを指定します。timestamp passwdValidTo='2010-04-09T15:51:00' が UTC であると想定し、パスワードの有効性に制限を設定することができます。connected 属性を使用すると、パスワードの変更時に接続先を制御できます。VNC は keep 値のみを受け入れます。そして、すべてのハイパーバイザーでサポートされていないことに注意してください。QEMU は、listen/port を使用する代わりに、unix ドメインソケットパスをリッスンするソケット属性をサポートします。 |
spice | SPICE サーバーを起動します。port 属性は TCP ポート番号を指定します (自動割り当ての必要があることを示す従来の構文として -1 を使用)。tlsPort は代替のセキュアポート番号を指定します。autoport 属性は、両方のポート番号の自動割り当てを指定する際に推奨される新しい構文です。listen 属性は、サーバーがリッスンする IP アドレスです。passwd 属性は、クリアテキストで SPICE パスワードを提供します。keymap 属性は、使用するキーマップを指定します。timestamp passwdValidTo='2010-04-09T15:51:00' が UTC であると想定し、パスワードの有効性に制限を設定することができます。connected 属性を使用すると、パスワードの変更時に接続先を制御できます。SPICE は、クライアントとの接続を維持するための keep、クライアントとの接続を解除する disconnect、そしてパスワードの変更に失敗する fail を受け入れます。すべてのハイパーバイザーでサポートされているわけではないことに注意してください。defaultMode 属性は、デフォルトのチャネルセキュリティーポリシーを設定します。有効な値は、secure、insecure、およびデフォルトの any になります (可能な場合は secure になりますが、安全なパスが利用できない場合にエラーになるのではなく、insecure にフォールバックします)。 |
graphics 要素内に 1 つ以上の channel 要素を追加することによって実現されます。有効なチャンネル名は、main、display、inputs、cursor、playback、record、smartcard、および usbredir などです。
図20.57 SPICE 設定
image 圧縮を設定するイメージ (auto_glz、auto_lz、quick、glz、lz、off を受け入れる)、wan 上のイメージの JPEG 圧縮用の jpeg (auto、never、always を受け入れる)、wan イメージ圧縮を設定するための zlib (auto、never、always を受け入れる) およびオーディオストリーム圧縮を有効にするための playback (on または off を受け入れる)。
streaming 要素によって設定され、その mode 属性を filterの 1 つ、all または off に設定します。
clipboard 要素により設定されます。これはデフォルトで有効になっており、copypaste プロパティーを no に設定することで無効にできます。
mouse 要素によって設定され、その mode 属性を server または client のいずれかに設定します。mode を指定しない場合は、qemu のデフォルトが使用されます (client モード)。
| パラメーター | 説明 |
|---|---|
rdp | RDP サーバーを起動します。port 属性は、TCP ポート番号を指定します (自動割り当ての必要があることを示す従来の構文として -1 を使用)。autoport 属性は、使用する TCP ポートの自動割り当てを指定する際に推奨される構文です。replaceUser 属性は、VM への複数の同時接続を許可するかどうかを決定するブール値です。新規クライアントがシングル接続モードで接続する場合に、multiUser 属性で既存の接続をドロップする必要があるか、また、新規の接続を VRDP サーバーで確立する必要があるかを指定します。 |
desktop | この値は、現時点では VirtualBox ドメイン用に予約されています。sdl と同様に、ホスト物理マシンデスクトップにウィンドウを表示しますが、VirtualBox ビューアーを使用します。sdl と同様に、オプション属性の display および fullscreen を受け入れます。 |
listen | グラフィックタイプ vnc および spice のリスニングソケットを設定するために使用されるアドレス情報を graphics に配置する代わりに、listen と呼ばれる graphics の個別のサブ要素である listen 属性を指定できます (上記の例を参照)。listen は次の属性を受け入れます。
|
20.16.13. ビデオデバイス リンクのコピーリンクがクリップボードにコピーされました!
図20.58 ビデオデバイス
graphics 要素には必須のtype 属性があり、以下の説明に従って、"sdl"、"vnc"、"rdp"、または "desktop" の値をとります。
| パラメーター | 説明 |
|---|---|
video | video 要素は、ビデオデバイスを説明するコンテナーです。後方互換性のために、動画が設定されておらず、ドメイン XML に graphics 要素がある場合は、ゲスト仮想マシンの種類に応じたデフォルトの video が追加されます。ram または vram が指定されていない場合は、デフォルト値が使用されます。 |
model | これには、利用可能なハイパーバイザー機能に応じて、vga、cirrus、vmvga、xen、vbox、または qxl の値を取る必須の type 属性があります。また、vram と、ヘッドを使用した数値を使用して、ビデオメモリーの量をキビバイト (1024 バイトのブロック) で提供することもできます。 |
| アクセラレーション | アクセラレーションに対応している場合は、acceleration 要素の accel3d 属性および accel2d 属性を使用して有効にする必要があります。 |
address | オプションの address サブ要素を使用すると、ビデオデバイスを特定の PCI スロットに関連付けることができます。 |
20.16.14. コンソール、シリアル、パラレル、およびチャネルデバイス リンクのコピーリンクがクリップボードにコピーされました!
図20.59 コンソール、シリアル、パラレル、およびチャネルデバイス
address があり、デバイスを特定のコントローラーまたは PCI スロットに関連付けることができます。
20.16.15. ゲスト仮想マシンのインターフェイス リンクのコピーリンクがクリップボードにコピーされました!
図20.60 ゲスト仮想マシンインターフェイスパラレルポート
<target> には、ポート番号を指定する port 属性を指定できます。ポートには 0 から始まる番号が付けられています。通常、0、1、または 2 つのパラレルポートがあります。
図20.61 ゲスト仮想マシンインターフェイスのシリアルポート
<target> には、ポート番号を指定する port 属性を指定できます。ポートには 0 から始まる番号が付けられています。通常、シリアルポートは 0、1、または 2 です。オプションの type 属性もあり、その値には 2 つの選択肢があります。1 つは isa-serial で、もう 1 つは usb-serial です。type がない場合は、isa-serial がデフォルトで使用されます。usb-serial の場合、type='usb' の任意のサブ要素 <address> で、上記の特定のコントローラーにデバイスを関連付けることができます。
<console> 要素は、対話式コンソールを表すために使用されます。以下のルールに従い、使用中のゲスト仮想マシンのタイプによって、コンソールは準仮想化デバイスである場合と、シリアルデバイスのクローンである場合があります。
targetType属性が設定されていない場合、デフォルトのデバイスtypeはハイパーバイザーのルールに従います。libvirt に渡された XML を再クエリーする際に、デフォルトのtypeが追加されます。完全に仮想化されたゲスト仮想マシンの場合、デフォルトのデバイスタイプは通常、シリアルポートです。targetType属性がserialで、<serial>要素が存在しない場合は、console 要素が<serial>要素にコピーされます。<serial>要素がすでに存在する場合は、console 要素は無視されます。targetType属性がserialでない場合は、通常処理されます。- 最初の
<console>要素のみが、serialのtargetTypeを使用できます。セカンダリーコンソールはすべて準仮想化する必要があります。 - s390 では、console 要素が sclp または sclplm (ラインモード) の targetType を使用できます。SCLP は、s390 のネイティブのコンソールタイプです。SCLP コンソールには関連付けられたコントローラーがありません。
図20.62 ゲスト仮想マシンインターフェイス - virtio コンソールデバイス
<target> 要素にはシリアルポートと同じ属性があります。通常、コンソールは 1 つだけです。
20.16.16. チャネル リンクのコピーリンクがクリップボードにコピーされました!
図20.63 チャネル
<channel> の特定のタイプは、<target> 要素の type 属性で指定します。各チャンネルタイプには、以下のように異なるターゲット属性があります。
guestfwd- ゲスト仮想マシンが指定の IP アドレスおよびポートに送信する TCP トラフィックが、ホスト物理マシンのチャネルデバイスに転送されることを指定します。target要素には、address 属性および port 属性が必要です。virtio- 準仮想化された virtio チャネル。<channel>は/dev/vport*の下のゲスト仮想マシンで公開され、オプションの要素nameが指定されている場合は、/dev/virtio-ports/$name(詳細は、http://fedoraproject.org/wiki/Features/VirtioSerial を参照してください)。オプションの要素addressでは、チャンネルを特定のtype='virtio-serial'コントローラーに関連付けることができます (上記を参照)。QEMU では、名前が org.qemu.guest_agent.0 の場合、libvirt は、ゲスト仮想マシンのシャットダウンやファイルシステムの静止などのアクションのために、ゲスト仮想マシンにインストールされているゲスト仮想マシンエージェントと対話できます。spicevmc- 準仮想化 SPICE チャンネル。ドメインには、グラフィックデバイスとしての SPICE サーバーも必要です。この時点で、ホストの物理マシンがメインチャネル全体でメッセージをピギーバックします。属性がtype='virtio';のtarget要素が必要です。オプションの属性nameは、ゲスト仮想マシンがチャネルにアクセスする方法を制御し、デフォルトはname='com.redhat.spice.0'になります。オプションの<address>要素は、チャンネルを特定のtype='virtio-serial'コントローラーに関連付けることができます。
20.16.17. ホストの物理マシンインターフェイス リンクのコピーリンクがクリップボードにコピーされました!
| パラメーター | 説明 | XML スニペット |
|---|---|---|
| ドメインログファイル | キャラクターデバイスのすべての入力を無効にし、仮想マシンのログファイルに出力を送信します |
<devices>
<console type='stdio'>
<target port='1'/>
</console>
</devices>
|
| デバイスログファイル | ファイルが開かれ、キャラクターデバイスに送信したすべてのデータがファイルに書き込まれます。 |
|
| 仮想コンソール | キャラクターデバイスを仮想コンソールのグラフィカルフレームバッファーに接続します。通常、これには "ctrl+alt+3" のような特別なホットキーシーケンスを介してアクセスします。 |
<devices>
<serial type='vc'>
<target port="1"/>
</serial>
</devices>
|
| Null デバイス | キャラクターデバイスをボイドに接続します。入力にデータが提供されることはありません。書き込まれたデータはすべて破棄されます。 |
<devices>
<serial type='null'>
<target port="1"/>
</serial>
</devices>
|
| 擬似 TTY | 疑似 TTY は、/dev/ptmx を使用して割り当てられます。virsh console などの適切なクライアントは、接続してローカルのシリアルポートと対話できます。 |
|
| NB 特殊ケース | NB 特殊なケースで、<console type='pty'> の場合、TTY パスもトップレベルの <console> タグの属性 tty='/dev/pts/3' として複製されます。これにより、<console> タグの構文が簡略化されました。 | |
| ホスト物理マシンのデバイスプロキシー | キャラクターデバイスは、基本となる物理キャラクターデバイスに渡されます。エミュレートシリアルポートはホスト物理マシンのシリアルポートにのみ接続するなど、デバイスの種類が一致する必要があります。シリアルポートをパラレルポートに接続しないでください。 |
|
| 名前付きパイプ | キャラクターデバイスは、名前付きパイプに出力を書き込みます。詳細については、pipe(7) の man ページを参照してください。 |
|
| TCP クライアント/サーバー | キャラクターデバイスは、リモートサーバーに接続する TCP クライアントとして機能します。 |
または、クライアント接続を待機している TCP サーバーとして機能します。
または、raw の TCP の代わりに telnet を使用できます。また、telnets (セキュアな telnet) および tls も使用できます。
|
| UDP ネットワークコンソール | キャラクターデバイスは UDP netconsole サービスとしてパケットの送受信を行います。これは不可逆のサービスです。 |
|
| UNIX ドメインソケットクライアント/サーバー | キャラクターデバイスは、UNIX ドメインソケットサーバーとして機能し、ローカルクライアントからの接続を受け入れます。 |
|
20.17. サウンドデバイス リンクのコピーリンクがクリップボードにコピーされました!
図20.64 仮想サウンドカード
...
<devices>
<sound model='es1370'/>
</devices>
...
...
<devices>
<sound model='es1370'/>
</devices>
...
model が 1 つあります。これは、実際のサウンドデバイスをエミュレートするものを指定します。有効な値は、基本となるハイパーバイザーに固有のものですが、一般的な選択肢は 'es1370'、'sb16'、'ac97'、および 'ich6' です。また、ich6 モデルセットを持つ sound 要素には、さまざまなオーディオコーデックをオーディオデバイスに割り当てるためのオプションの codec サブ要素を追加できます。指定しない場合は、再生および録画を許可するために、デフォルトのコーデックが割り当てられます。有効な値は 'duplex' (ラインインおよびラインアウトをアドバタイズ) および 'micro' (スピーカーおよびマイクをアドバタイズ) です。
図20.65 サウンドデバイス
<address>があります。このサブ要素は、デバイスを特定の PCI スロットに接続できます (上記を参照)。
20.18. ウォッチドッグデバイス リンクのコピーリンクがクリップボードにコピーされました!
<watchdog> 要素を介してゲスト仮想マシンに追加できます。ウォッチドッグデバイスには、ゲスト仮想マシンに追加のドライバーおよび管理デーモンが必要です。libvirt 設定でウォッチドッグを有効にするだけでは、それ自体では何の役にも立ちません。現在、ウォッチドッグの実行時にサポート通知はありません。
図20.66 ウォッチドッグデバイス
model- 必要なmodel属性は、実際のウォッチドッグデバイスをエミュレートするものを指定します。有効な値は、基になるハイパーバイザーに固有のものです。model属性は、以下の値をとることができます。i6300esb- 推奨されるデバイスで、PCI Intel 6300ESB をエミュレートします。ib700- ISA iBase IB700 をエミュレートします。
action- オプションのaction属性は、ウォッチドッグの期限が切れたときに行うアクションを説明します。有効な値は、基になるハイパーバイザーに固有のものです。action属性には、以下の値を指定できます。reset: デフォルト設定で、ゲスト仮想マシンを強制的にリセットします。shutdown- ゲスト仮想マシンを正常にシャットダウンします (推奨されません)。poweroff: ゲスト仮想マシンを強制的にオフにします。pause: ゲスト仮想マシンを一時停止します。none- 何も実行しません。dump- ゲスト仮想マシンを自動的にダンプします。
20.19. メモリーバルーンデバイス リンクのコピーリンクがクリップボードにコピーされました!
<memballoon> 要素として表示されます。必要に応じて自動的に追加されるため、特定の PCI スロットを割り当てる必要がない限り、ゲスト仮想マシン XML にこの要素を明示的に追加する必要はありません。memballoon デバイスを明示的に無効にする必要がある場合は、model='none' を使用できることに注意してください。
図20.67 メモリーバルーンデバイス
...
<devices>
<memballoon model='virtio'/>
</devices>
...
...
<devices>
<memballoon model='virtio'/>
</devices>
...
図20.68 手動で追加したメモリーバルーンデバイス
model 属性は、どのようなバルーンデバイスが提供されるかを指定します。有効な値は、仮想化プラットフォームに固有です。'virtio' は KVM ハイパーバイザーのデフォルト設定であり、'xen' は Xen ハイパーバイザーのデフォルト設定です。
20.20. セキュリティーラベル リンクのコピーリンクがクリップボードにコピーされました!
<seclabel> 要素により、セキュリティードライバーの動作を制御できます。基本的な動作モードは、'dynamic' で、libvirt が一意のセキュリティーラベルを自動的に生成します。'static' では、アプリケーションまたは管理者がラベルを選択します。'none' では、制限が無効になっています。動的ラベル生成では、libvirt は、仮想マシンに関連付けられたリソースに常に自動的に再ラベル付けします。静的ラベル割り当てでは、デフォルトで、管理者またはアプリケーションは、すべてのリソースにラベルが正しく設定されていることを確認する必要があります。ただし、必要に応じて自動再ラベル付けを有効にすることができます。
model を使用して定義できます。最上位のセキュリティーラベルの有効な入力 XML 設定は次のとおりです。
図20.69 セキュリティーラベル
'type' 属性が指定されていない場合は、セキュリティードライバーのデフォルト設定 ('none' または 'dynamic') が使用されます。<baselabel> を設定し、'type' を設定しないと、型が 'dynamic' であると想定されます。自動リソース再ラベル付けが有効な実行中のゲスト仮想マシンの XML を表示する場合は、追加の XML 要素 imagelabel が含まれます。これは出力専用の要素であるため、ユーザー提供の XML ドキュメントでは無視されます。
type- libvirt が一意のセキュリティーラベルを自動的に生成するかどうかを判断するために、static、dynamic、またはnoneを指定します。model- 有効なセキュリティーモデル名で、現在アクティブなセキュリティーモデルと一致しますrelabel-yesまたはnoのいずれかです。動的ラベル割り当てを使用する場合は、これを常にyesにする必要があります。静的ラベル割り当てでは、デフォルトはnoになります。<label>- 静的ラベリングを使用する場合は、仮想ドメインに割り当てる完全なセキュリティーラベルを指定する必要があります。コンテンツの形式は、使用されているセキュリティードライバーによって異なります。SELinux- SELinux のコンテキストです。AppArmor- AppArmor プロファイル。DAC- 所有者とグループをコロンで区切ります。ユーザー/グループ名または uid/gid の両方として定義できます。ドライバーはまずこれらの値を名前として解析しようとしますが、先頭にあるプラス記号を使用すると、ドライバーが値を uid または gid として解析するように強制できます。
<baselabel>- 動的ラベル付けを使用する場合は、ベースセキュリティーラベルを指定するためにオプションで使用できます。コンテンツの形式は、使用されているセキュリティードライバーによって異なります。<imagelabel>- 出力専用の要素です。仮想ドメインに関連付けられたリソースで使用されるセキュリティーラベルを示します。コンテンツの形式は、使用しているセキュリティードライバーによって異なります。再ラベル付けが有効な場合、ラベル付けを無効にすることで、特定のソースファイル名に対して行われるラベル付けを微調整することもできます (ファイルが NFS またはその他に存在する場合に便利です)。セキュリティーラベル付けがないファイルシステム) または代替ラベルの要求 (管理アプリケーションがドメイン間ですべてではないが一部のリソースを共有できるようにする特別なラベルを作成する場合に便利です)。seclabel 要素がトップレベルドメイン割り当てではなく特定のパスに割り当てられている場合は、属性の relabel または sub-element ラベルのみがサポートされます。
20.21. ドメイン XML 設定の例 リンクのコピーリンクがクリップボードにコピーされました!
図20.70 ドメイン XML 設定の例
図20.71 ドメイン XML 設定の例
第21章 トラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
21.1. デバッグおよびトラブルシューティングツール リンクのコピーリンクがクリップボードにコピーされました!
- kvm_stat - 参照 「kvm_stat」
- trace-cmd
- ftrace 『Red Hat Enterprise Linux 開発者ガイド』を参照してください。
- vmstat
- iostat
- lsof
- systemtap
- crash
- sysrq
- sysrq t
- sysrq w
- ifconfig
- tcpdumptcpdump コマンドは、ネットワークパケットをスニッフィングします。tcpdump は、ネットワーク異常やネットワーク認証の問題を見つける際に役立ちます。tcpdump のグラフィカルバージョンでは、wireshark という名前のグラフィカルバージョンがあります。
- brctlbrctlは、Linux カーネル内のイーサネットブリッジ設定を検証して設定するネットワークツールです。次のコマンド例を実行する前に、root アクセス権が必要です。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- strace は、システムコールと、別のプロセスが受信して使用したイベントを追跡するコマンドです。
- vncviewer は、サーバーまたは仮想マシンで実行している VNC サーバーに接続します。yum install tigervnc を使用して vncviwer をインストールします。
- vncserver は、サーバーでリモートデスクトップを起動します。リモートセッションを介して、virt-manager などのグラフィカルユーザーインターフェイスを実行できます。yum install tigervnc-server を使用して vncserver をインストールします。
21.2. ディザスターリカバリーの準備 リンクのコピーリンクがクリップボードにコピーされました!
/etc/libvirtディレクトリーからのすべてのファイル。/var/lib/libvirtディレクトリーから、以下の項目をバックアップします。/var/lib/libvirt/dnsmasqにある現在の dnsmasqDHCP リース/var/lib/libvirt/networkにある実行中の仮想ネットワーク設定ファイル- ゲストの現在の状態を保存するときに virt-manager によって作成されるゲスト仮想マシンファイル (存在する場合)。これらは
/var/lib/libvirt/qemu/save/ディレクトリーにあります。virsh save command を使用して仮想マシンを作成した場合、ファイルは、ユーザーが virsh save 用に指定した場所にあります。 - qemu-img create および virsh snapshot-create コマンドによって作成され、ユーザーがコマンドに指定した場所にあるゲスト仮想マシンのスナップショットファイル。
- virt-manager によって作成されたゲスト仮想マシンのディスクイメージ (存在する場合)。これは、
/var/lib/libvirt/images/ディレクトリーにあります。virsh pool-define コマンドを使用して仮想ストレージを作成した場合、イメージファイルはユーザーが virsh pool-define に指定した場所にあります。ゲストイメージファイルをバックアップする方法については、次の手順で説明されている手順を使用してください。手順21.1「ディザスターリカバリーの目的でゲスト仮想マシンのディスクイメージのバックアップを作成する」。
- ブリッジを使用している場合は、
/etc/sysconfig/network-scripts/ifcfg-<bridge_name>にあるファイルもバックアップする必要があります。 - オプションで、
/var/lib/libvirt/qemu/dumpにあるゲスト仮想マシンのコアダンプファイルをバックアップして、障害の原因を分析するために使用することもできます。ただし、一部のシステムでは、これらのファイルが非常に大きくなる可能性があることに注意してください。
手順21.1 ディザスターリカバリーの目的でゲスト仮想マシンのディスクイメージのバックアップを作成する
- ゲスト仮想マシンのディスクイメージのみをバックアップするには、
/var/lib/libvirt/imagesにあるファイルをバックアップします。LVM 論理ボリュームを使用してゲスト仮想マシンのディスクイメージをバックアップするには、次のコマンドを実行します。lvcreate --snapshot --name snap --size 8G /dev/vg0/data
# lvcreate --snapshot --name snap --size 8G /dev/vg0/dataCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、64G ボリュームの一部として 8G のサイズの snap という名前のスナップショットボリュームを作成します。 - 次のようなコマンドを使用して、スナップショットのファイルを作成します。
mkdir /mnt/virt.snapshot
# mkdir /mnt/virt.snapshotCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 次のコマンドを使用して、作成したディレクトリーとスナップショットボリュームをマウントします。
mount /dev/vg0/snap /mnt/virt.snapshot
# mount /dev/vg0/snap /mnt/virt.snapshotCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 次のいずれかのコマンドを使用して、ボリュームをバックアップします。
tar -pzc -f /mnt/backup/virt-snapshot-MM-DD-YYYY.tgz /mnt/virt.snapshot++++++++++++
# tar -pzc -f /mnt/backup/virt-snapshot-MM-DD-YYYY.tgz /mnt/virt.snapshot++++++++++++Copy to Clipboard Copied! Toggle word wrap Toggle overflow rsync -a /mnt/virt.snapshot/ /mnt/backup/virt-snapshot.MM-DD-YYYY/
# rsync -a /mnt/virt.snapshot/ /mnt/backup/virt-snapshot.MM-DD-YYYY/Copy to Clipboard Copied! Toggle word wrap Toggle overflow
21.3. virsh ダンプファイルの作成 リンクのコピーリンクがクリップボードにコピーされました!
#virsh dump <domain> <corefilepath> [--bypass-cache] { [--live] | [--crash] | [--reset] } [--verbose] [--memory-only]
#virsh dump <domain> <corefilepath> [--bypass-cache] { [--live] | [--crash] | [--reset] } [--verbose] [--memory-only]
- --live は、実行中のマシンにダンプファイルを作成し、一時停止しません。
- --crash はゲスト仮想マシンを停止し、ダンプファイルを生成します。主な違いは、ゲスト仮想マシンが停止として表示されず、理由がクラッシュしたことです。virt-manager では、ステータスが一時停止として表示されることに注意してください。
- --reset は、ダンプが成功した後にゲスト仮想マシンをリセットします。これらの 3 つのスイッチは相互に排他的であることに注意してください。
- --bypass-cache は、O_DIRECT を使用してファイルシステムキャッシュをバイパスします。
- --memory-only ダンプファイルは elf ファイルとして保存され、ドメインのメモリーと cpu の一般的なレジスター値のみが含まれます。このオプションは、ドメインがホストデバイスを直接使用する場合に非常に役立ちます。
- --verbose - ダンプの進捗を表示します。
21.4. kvm_stat リンクのコピーリンクがクリップボードにコピーされました!
kvm カーネルモジュールからランタイム統計を取得する python スクリプトです。kvm_stat コマンドは、kvm に表示されるゲストの動作を診断するために使用できます。特に、ゲストのパフォーマンスに関連する問題です。現在、報告されている統計はシステム全体を対象としており、実行中のすべてのゲストの動作が報告されます。このスクリプトを実行するには、qemu-kvm-tools パッケージをインストールする必要があります。
kvm カーネルモジュールが読み込まれ、debugfs がマウントされている必要があります。上記のいずれかの機能が有効になっていない場合は、debugfs または kvm モジュールを有効にするために必要な手順が表示されます。以下に例を示します。
kvm_stat
# kvm_stat
Please mount debugfs ('mount -t debugfs debugfs /sys/kernel/debug')
and ensure the kvm modules are loaded
mount -t debugfs debugfs /sys/kernel/debug
# mount -t debugfs debugfs /sys/kernel/debug
kvm_stat 出力
kvm_stat コマンドは、すべてのゲストとホストの統計情報を出力します。(Ctrl+c または q を使用して) コマンドが終了するまで、出力は更新されます。
変数の説明
- efer_reload
- 拡張機能イネーブルレジスタ (EFER) のリロードの数。
- 終了
- すべての
VMEXIT呼び出しの数。 - fpu_reload
VMENTRYが FPU の状態を再読み込みした回数。ゲストが浮動小数点ユニット (FPU) を使用している場合、fpu_reload は増分されます。- halt_exits
halt呼び出しによるゲストの終了数。通常、このタイプの終了は、ゲストがアイドル状態になると表示されます。- halt_wakeup
haltからのウェイクアップの数。- host_state_reload
- ホスト状態の完全なリロードの数 (現時点では tallies MSR 設定およびゲスト MSR 読み込み)。
- ハイパーコール
- ゲストハイパーバイザーサービス呼び出しの数。
- insn_emulation
- ホストによってエミュレートされたゲスト命令の数。
- insn_emulation_fail
insn_emulationの試行に失敗した回数。- io_exits
- I/O ポートアクセスから終了するゲストの数。
- irq_exits
- 外部割り込みによるゲストの終了回数。
- irq_injections
- ゲストに送信された割り込みの数。
- irq_window
- 未処理の割り込みウィンドウから終了するゲストの数。
- ラージページ
- 現在使用中の大きなページの数。
- mmio_exits
- メモリーマップ I/O(MMIO) アクセスにより、ゲストが終了する回数。
- mmu_cache_miss
- 作成された KVM MMU シャドウページの数。
- mmu_flooded
- MMU ページへの過剰な書き込み操作の検出数。これは、個々の書き込み操作ではなく、検出された書き込み操作をカウントします。
- mmu_pde_zapped
- ページディレクトリーエントリー (PDE) 破棄操作の数。
- mmu_pte_updated
- ページテーブルエントリー (PTE) 破棄操作の数。
- mmu_pte_write
- ゲストページテーブルエントリー (PTE) の書き込み操作の数。
- mmu_recycled
- 再利用できるシャドウページの数。
- mmu_shadow_zapped
- 無効化されたシャドウページの数。
- mmu_unsync
- まだリンクが解除されていない同期されていないページの数。
- nmi_injections
- ゲストへのマスク不可割り込み (NMI) インジェクションの数。
- nmi_window
- (未処理の) マスク不可割り込み (NMI) ウィンドウからのゲストの終了回数。
- pf_fixed
- 固定 (非ページング) ページテーブルエントリー (PTE) マップの数。
- pf_guest
- ゲストに挿入されたページフォールトの数。
- remote_tlb_flush
- リモート (sibling CPU) トランスレーションルックアサイドバッファー (TLB) フラッシュ要求の数。
- request_irq
- ゲスト割り込みウィンドウ要求が終了する数。
- signal_exits
- ホストからの保留中の信号によってゲストが終了する回数。
- tlb_flush
- ハイパーバイザーが実行する
tlb_flush操作の数。
/sys/kernel/debug/kvm/ ディレクトリーにある疑似ファイルとしてエクスポートされます。
21.5. ゲスト仮想マシンのシャットダウンに失敗する リンクのコピーリンクがクリップボードにコピーされました!
手順21.2 ゲスト仮想マシンでのゲストエージェントチャネルの設定
- ゲスト仮想マシンを停止します。
- ゲスト仮想マシンの ドメイン XML を開き、以下のスニペットを追加します。
図21.1 ゲストエージェントチャネルの設定
<channel type='unix'> <source mode='bind'/> <target type='virtio' name='org.qemu.guest_agent.0'/> </channel><channel type='unix'> <source mode='bind'/> <target type='virtio' name='org.qemu.guest_agent.0'/> </channel>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - virsh start [domain] を実行して、ゲスト仮想マシンを起動します。
- ゲスト仮想マシン (yum install qemu-guest-agent) に qemu-guest-agent をインストールし、システムの起動時にサービス (qemu-guest-agent.service) として自動的に実行されるようにします。詳細は、10章qemu-img および QEMU ゲストエージェント を参照してください。
21.6. シリアルコンソールのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
- 出力データは削除またはスクラブルされます。
ttyS0、Windows では COM1 と呼ばれます。
/boot/grub/grub.conf ファイルを変更します。kernel の行に console=tty0 console=ttyS0,115200 を追加します。
virsh console
# virsh console
21.7. 仮想化ログファイル リンクのコピーリンクがクリップボードにコピーされました!
- 完全に仮想化された各ゲストログは、
/var/log/libvirt/qemu/ディレクトリーにあります。各ゲストログは GuestName.log という名前で、サイズ制限に達すると定期的に圧縮されます。
21.8. ループデバイスエラー リンクのコピーリンクがクリップボードにコピーされました!
/etc/modprobe.d/ディレクトリーで調整できます。以下の行を追加します。
options loop max_loop=64
options loop max_loop=64
21.9. ライブマイグレーションエラー リンクのコピーリンクがクリップボードにコピーされました!
21.10. BIOS での Intel VT-x および AMD-V Virtualization ハードウェア拡張の有効化 リンクのコピーリンクがクリップボードにコピーされました!
手順21.3 BIOS での仮想化拡張機能の有効化
- コンピューターを再起動し、システムの BIOS メニューを開きます。通常、これは キー、F1 キー、または Alt キーと F4 キーを押して実行できます。
BIOS での仮想化拡張機能の有効化
注記以下の手順の多くは、使用しているマザーボード、プロセッサーのタイプ、チップセット、および OEM により異なる場合があります。システムの設定に関する正しい情報は、お使いのシステムの付随するドキュメントを参照してください。- Processor サブメニューを開きます。プロセッサー設定メニューは、Chipset、Chipset、または Northbridge で非表示にすることができます。
- Intel Virtualization Technology を有効にします (Intel VT-x としても知られています)。AMD-V 拡張機能は、BIOS では無効にできないため、事前に有効にしておく必要があります。仮想化拡張機能は、OEM やシステム BIOS によっては、Virtualization Extensions、Vanderpool、またはその他の名前にラベルが付けられている場合があります。
- オプションが利用できる場合は、Intel VT-d または AMD IOMMU を有効にします。PCI デバイスの割り当てには、Intel VT-d および AMD IOMMU を使用します。
- Save & Exitを選択します。
- マシンを再起動します。
- マシンが起動したら、cat /proc/cpuinfo |grep -E "vmx|svm" を実行します。
--colorの指定は任意ですが、検索用語を強調表示したい場合は便利です。コマンドが出力すると、仮想化拡張機能が有効になります。出力がない場合は、システムの仮想化拡張機能や、正しい BIOS 設定が有効になっていない可能性があります。
21.11. KVM ネットワークパフォーマンス リンクのコピーリンクがクリップボードにコピーされました!
e1000) ドライバーも、エミュレートされたドライバーとしてサポートされていることに注意してください。e1000 ドライバーを使用するには、以下の手順の virtio を e1000 に置き換えます。最適なパフォーマンスを得るには、virtio ドライバーを使用することを推奨します。
手順21.4 virtio ドライバーへの切り替え
- ゲストオペレーティングシステムをシャットダウンします。
- virsh コマンドでゲストの設定ファイルを編集します (
GUESTはゲストの名前です)。virsh edit GUEST
# virsh edit GUESTCopy to Clipboard Copied! Toggle word wrap Toggle overflow virsh edit コマンドは、$EDITOR シェル変数を使用して、使用するエディターを決定します。 - 設定のネットワークインターフェイスセクションを見つけます。このセクションは、以下のスニペットと似ています。
<interface type='network'> [output truncated] <model type='rtl8139' /> </interface>
<interface type='network'> [output truncated] <model type='rtl8139' /> </interface>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - model 要素の type 属性を
'rtl8139'から'virtio'に変更します。これにより、ドライバーが rtl8139 ドライバーから e1000 ドライバーに変更されます。<interface type='network'> [output truncated] <model type='virtio' /> </interface>
<interface type='network'> [output truncated] <model type='virtio' /> </interface>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存し、テキストエディターを終了します。
- ゲストオペレーティングシステムを再起動します。
その他のネットワークドライバーを使用した新しいゲストの作成
別のネットワークドライバーを使用して、新しいゲストを作成することもできます。ネットワーク接続でゲストをインストールするのが困難な場合に必要になることがあります。この方法では、テンプレートとして使用するために、少なくとも 1 つのゲストが作成されている (CD または DVD からインストールされている可能性あり) 必要があります。
- 既存のゲスト (この例では Guest1) から XML テンプレートを作成します。
virsh dumpxml Guest1 > /tmp/guest-template.xml
# virsh dumpxml Guest1 > /tmp/guest-template.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - XML ファイルをコピーして編集し、一意のフィールド (仮想マシン名、UUID、ディスクイメージ、MAC アドレス、およびその他の一意のパラメーター) を更新します。UUID および MAC アドレス行を削除できることに注意してください。virsh を実行すると、UUID と MAC アドレスが生成されます。
cp /tmp/guest-template.xml /tmp/new-guest.xml vi /tmp/new-guest.xml
# cp /tmp/guest-template.xml /tmp/new-guest.xml # vi /tmp/new-guest.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ネットワークインターフェイスセクションにモデル行を追加します。<interface type='network'> [output truncated] <model type='virtio' /> </interface>
<interface type='network'> [output truncated] <model type='virtio' /> </interface>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 新しい仮想マシンを作成します。
virsh define /tmp/new-guest.xml virsh start new-guest
# virsh define /tmp/new-guest.xml # virsh start new-guestCopy to Clipboard Copied! Toggle word wrap Toggle overflow
21.12. libvirt を使用して外部スナップショットを作成するための回避策 リンクのコピーリンクがクリップボードにコピーされました!
21.13. 日本語キーボードを使用したゲストコンソールでの文字の欠落 リンクのコピーリンクがクリップボードにコピーされました!
atkdb.c: Unknown key pressed (translated set 2, code 0x0 on isa0060/serio0). atkbd.c: Use 'setkeycodes 00 <keycode>' to make it known.
atkdb.c: Unknown key pressed (translated set 2, code 0x0 on isa0060/serio0).
atkbd.c: Use 'setkeycodes 00 <keycode>' to make it known.
- 影響を受けるゲストを virt-manager で開きます。
- → をクリックします。
- 一覧で Display VNC を選択します。
- Keymap プルダウンメニューで、Auto を ja に変更します。
- Apply ボタンをクリックします。
- virsh edit <target guest> を実行します。
- <graphics> タグに以下の属性を追加します。keymap='ja'。以下に例を示します。
<graphics type='vnc' port='-1' autoport='yes' keymap='ja'/>
<graphics type='vnc' port='-1' autoport='yes' keymap='ja'/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
21.14. 仮想化拡張機能の検証 リンクのコピーリンクがクリップボードにコピーされました!
- 次のコマンドを実行して、CPU 仮想化拡張機能が利用可能であることを確認します。
grep -E 'svm|vmx' /proc/cpuinfo
$ grep -E 'svm|vmx' /proc/cpuinfoCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 出力を分析します。
- 以下の出力には、Intel VT-x 拡張機能が含まれる Intel プロセッサーを示す
vmxエントリーが含まれます。flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall lm constant_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm
flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall lm constant_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lmCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 以下の出力には、AMD-V 拡張機能が含まれる AMD プロセッサーを示す
svmエントリーが含まれます。flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8legacy ts fid vid ttp tm stc
flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8legacy ts fid vid ttp tm stcCopy to Clipboard Copied! Toggle word wrap Toggle overflow
出力を受信した場合、プロセッサーにはハードウェア仮想化拡張機能があります。ただし、状況によっては、製造元が BIOS で仮想化拡張機能を無効にする場合があります。flags:出力コンテンツは、システム上のハイパースレッド、コア、または CPU ごとに 1 回ずつ、複数回表示される場合があります。BIOS で仮想化拡張機能を無効にすることができます。拡張機能が表示されない場合、または完全仮想化が機能しない場合は、手順21.3「BIOS での仮想化拡張機能の有効化」 を参照してください。 KVM サブシステムがロードされていることを確認します
追加のチェックとして、kvmモジュールがカーネルに読み込まれていることを確認します。lsmod | grep kvm
# lsmod | grep kvmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力にkvm_intelまたはkvm_amdが含まれる場合は、kvmハードウェア仮想化モジュールが読み込まれ、システムが要件を満たしています。
付録A 仮想ホストメトリクスデーモン (vhostmd) リンクのコピーリンクがクリップボードにコピーされました!
付録B 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
B.1. オンラインリソース リンクのコピーリンクがクリップボードにコピーされました!
- http://www.libvirt.org/ は、libvirt 仮想化 API の公式 Web サイトです。
- https://virt-manager.org/ は、仮想マシンを管理するグラフィカルアプリケーションである Virtual Machine Manager (virt-manager) のプロジェクトの Web サイトです。
- Red Hat Virtualization - http://www.redhat.com/products/cloud-computing/virtualization/
- Red Hat 製品ドキュメント - https://access.redhat.com/documentation/en/
- 仮想化テクノロジーの概要 - http://virt.kernelnewbies.org
B.2. インストールされているドキュメント リンクのコピーリンクがクリップボードにコピーされました!
- man virsh および
/usr/share/doc/libvirt-<version-number>- virsh 仮想マシン管理ユーティリティーのサブコマンドとオプション、およびlibvirt仮想ライブラリー API の包括的な情報が含まれます。 /usr/share/doc/gnome-applet-vm-<version-number>- ローカルで実行している仮想マシンを監視および管理する GNOME グラフィカルパネルアプレットのドキュメント。/usr/share/doc/libvirt-python-<version-number>-libvirtライブラリーの Python バインディングの詳細を説明します。libvirt-pythonパッケージにより、python の開発者は、libvirt仮想化管理ライブラリーとインターフェイスするプログラムを作成できます。/usr/share/doc/python-virtinst-<version-number>- 仮想マシン内で Fedora および Red Hat Enterprise Linux 関連のディストリビューションのインストールを開始する際に役に立つ、virt-install コマンドに関するドキュメントを提供します。/usr/share/doc/virt-manager-<version-number>- Virtual Machine Manager に関するドキュメントを提供します。このドキュメントは、仮想マシンを管理するグラフィカルツールを提供します。
付録C 更新履歴 リンクのコピーリンクがクリップボードにコピーされました!
| 改訂履歴 | |||
|---|---|---|---|
| 改訂 1-502 | Mon Mar 08 2017 | ||
| |||
| 改訂 1-501 | Mon May 02 2016 | ||
| |||
| 改訂 1-500 | Thu Mar 01 2016 | ||
| |||
| 改訂 1-449 | Thu Oct 08 2015 | ||
| |||
| 改訂 1-447 | Fri Jul 10 2015 | ||
| |||