23.17. Devices
<devices>
要素の子として示されます。
- virtio-scsi-pci - PCI バスストレージデバイス
- virtio-blk-pci - PCI バスストレージデバイス
- virtio-net-pci - PCI バスネットワークデバイス (virtio-net としても知られる)
- virtio-serial-pci - PCI バス入力デバイス
- virtio-balloon-pci - PCI バスメモリーバルーンデバイス
- virtio-rng-pci - PCI バス仮想乱数発生器
virtio-balloon-pci
および virtio-rng-pci
を除くすべての virtio デバイスは、vector
引数を受け入れます。
図23.26 デバイス - 子要素
... <devices> <emulator>/usr/libexec/qemu-kvm</emulator> </devices> ...
<emulator>
要素の内容は、デバイスモデルエミュレーターバイナリーへの完全修飾パスを指定します。capabilities XML は、各特定のドメインタイプまたはアーキテクチャーの組み合わせに使用する推奨されるデフォルトエミュレーターを指定します。
23.17.1. ハードドライブ、フロッピーディスク、および CD-ROM
<disk>
要素で指定されているフロッピーディスク、ハードディスク、CD-ROM、または準仮想化ドライバーなど、ディスクのように見えるデバイスを指定します。
図23.27 デバイス - ハードドライブ、フロッピーディスク、CD-ROM の例
<disk type='network'> <driver name="qemu" type="raw" io="threads" ioeventfd="on" event_idx="off"/> <source protocol="sheepdog" name="image_name"> <host name="hostname" port="7000"/> </source> <target dev="hdb" bus="ide"/> <boot order='1'/> <transient/> <address type='drive' controller='0' bus='1' unit='0'/> </disk>
図23.28 デバイス - ハードドライブ、フロッピーディスク、CD-ROM の例 2
<disk type='network'> <driver name="qemu" type="raw"/> <source protocol="rbd" name="image_name2"> <host name="hostname" port="7000"/> </source> <target dev="hdd" bus="ide"/> <auth username='myuser'> <secret type='ceph' usage='mypassid'/> </auth> </disk>
図23.29 デバイス - ハードドライブ、フロッピーディスク、CD-ROM の例 3
<disk type='block' device='cdrom'> <driver name='qemu' type='raw'/> <target dev='hdc' bus='ide' tray='open'/> <readonly/> </disk> <disk type='network' device='cdrom'> <driver name='qemu' type='raw'/> <source protocol="http" name="url_path"> <host name="hostname" port="80"/> </source> <target dev='hdc' bus='ide' tray='open'/> <readonly/> </disk>
図23.30 デバイス - ハードドライブ、フロッピーディスク、CD-ROM の例 4
<disk type='network' device='cdrom'> <driver name='qemu' type='raw'/> <source protocol="https" name="url_path"> <host name="hostname" port="443"/> </source> <target dev='hdc' bus='ide' tray='open'/> <readonly/> </disk> <disk type='network' device='cdrom'> <driver name='qemu' type='raw'/> <source protocol="ftp" name="url_path"> <host name="hostname" port="21"/> </source> <target dev='hdc' bus='ide' tray='open'/> <readonly/> </disk>
図23.31 デバイス - ハードドライブ、フロッピーディスク、CD-ROM の例 5
<disk type='network' device='cdrom'> <driver name='qemu' type='raw'/> <source protocol="ftps" name="url_path"> <host name="hostname" port="990"/> </source> <target dev='hdc' bus='ide' tray='open'/> <readonly/> </disk> <disk type='network' device='cdrom'> <driver name='qemu' type='raw'/> <source protocol="tftp" name="url_path"> <host name="hostname" port="69"/> </source> <target dev='hdc' bus='ide' tray='open'/> <readonly/> </disk> <disk type='block' device='lun'> <driver name='qemu' type='raw'/> <source dev='/dev/sda'/> <target dev='sda' bus='scsi'/> <address type='drive' controller='0' bus='0' target='3' unit='0'/> </disk>
図23.32 デバイス - ハードドライブ、フロッピーディスク、CD-ROM の例 6
<disk type='block' device='disk'> <driver name='qemu' type='raw'/> <source dev='/dev/sda'/> <geometry cyls='16383' heads='16' secs='63' trans='lba'/> <blockio logical_block_size='512' physical_block_size='4096'/> <target dev='hda' bus='ide'/> </disk> <disk type='volume' device='disk'> <driver name='qemu' type='raw'/> <source pool='blk-pool0' volume='blk-pool0-vol0'/> <target dev='hda' bus='ide'/> </disk> <disk type='network' device='disk'> <driver name='qemu' type='raw'/> <source protocol='iscsi' name='iqn.2013-07.com.example:iscsi-nopool/2'> <host name='example.com' port='3260'/> </source> <auth username='myuser'> <secret type='chap' usage='libvirtiscsi'/> </auth> <target dev='vda' bus='virtio'/> </disk>
図23.33 デバイス - ハードドライブ、フロッピーディスク、CD-ROM の例 7
<disk type='network' device='lun'> <driver name='qemu' type='raw'/> <source protocol='iscsi' name='iqn.2013-07.com.example:iscsi-nopool/1'> iqn.2013-07.com.example:iscsi-pool <host name='example.com' port='3260'/> </source> <auth username='myuser'> <secret type='chap' usage='libvirtiscsi'/> </auth> <target dev='sda' bus='scsi'/> </disk> <disk type='volume' device='disk'> <driver name='qemu' type='raw'/> <source pool='iscsi-pool' volume='unit:0:0:1' mode='host'/> <auth username='myuser'> <secret type='chap' usage='libvirtiscsi'/> </auth> <target dev='vda' bus='virtio'/> </disk>
図23.34 デバイス - ハードドライブ、フロッピーディスク、CD-ROM の例 8
<disk type='volume' device='disk'> <driver name='qemu' type='raw'/> <source pool='iscsi-pool' volume='unit:0:0:2' mode='direct'/> <auth username='myuser'> <secret type='chap' usage='libvirtiscsi'/> </auth> <target dev='vda' bus='virtio'/> </disk> <disk type='file' device='disk'> <driver name='qemu' type='raw' cache='none'/> <source file='/tmp/test.img' startupPolicy='optional'/> <target dev='sdb' bus='scsi'/> <readonly/> </disk> <disk type='file' device='disk'> <driver name='qemu' type='raw' discard='unmap'/> <source file='/var/lib/libvirt/images/discard1.img'/> <target dev='vdb' bus='virtio'/> <alias name='virtio-disk1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/> </disk> </devices> ...
23.17.1.1. ディスク要素
<disk>
要素は、ディスクを記述するための主要なコンテナーです。属性type
は、<disk>
要素で使用できます。以下のタイプが許可されています。
file
block
dir
network
23.17.1.2. ソース要素
<file>
-file
属性は、ディスクが置かれているファイルへの完全修飾パスを指定します。<block>
-dev
属性は、ディスクとして機能するホストデバイスへの完全修飾パスを指定します。<dir>
-dir
属性は、ディスクとして使用されるディレクトリーの完全修飾パスを指定します。<network>
-protocol
属性は、要求されたイメージへのアクセスに使用されるプロトコルを指定します。指定できる値は、nbd
、isci
、rbd
、sheepdog
、およびgluster
です。protocol
属性がrbd
、sheepdog
、またはgluster
の場合は、追加の属性であるname
が必須となります。この属性は、使用されるボリュームおよびイメージを指定します。protocol
属性がnbd
の場合、name
属性はオプションになります。protocol
属性がisci
の場合、name
属性には、ターゲットの名前とスラッシュを区切った論理ユニット番号を含めることができます。たとえば、iqn.2013-07.com.example:iscsi-pool/1 のようになります。指定しない場合、デフォルトの LUN はゼロになります。
<volume>
- 基となるディスクソースは、pool
属性およびvolume
属性で表されます。<pool>
- ディスクソースが存在するストレージプール (libvirt が管理) の名前です。<volume>
- ディスクソースとして使用されるストレージボリューム (libvirt が管理) の名前です。volume
属性の値は、virsh vol-list [pool-name] の Name 列の出力です。
network
の場合、source
には、接続するホスト物理マシンを指定するために使用される type='dir'
および type='network'
を含む、ゼロ以上の host
サブ要素が含まれることがあります。CD-ROM またはフロッピー (デバイス属性) を表すfile
ディスクタイプで、ソースファイルにアクセスできない場合にディスクを使用する動作のポリシーを定義できます。これは、次のいずれかの値で startupPolicy
属性を設定します。
mandatory
は、何らかの理由で欠落している場合に障害の原因となります。これはデフォルト設定です。requisite
は、起動時に欠落している場合は失敗し、移行、復元、または復帰時に欠落している場合はドロップします。optional
は、開始試行時に欠落している場合はドロップします。
23.17.1.3. ミラー要素
<mirror>
の場所が最終的にソースと同じ内容を持ち、属性形式のファイル形式 (ソースの形式とは異なる場合あり) の場合に存在します。属性 ready が存在する場合は、ディスクがピボットする準備ができていることが分かっています。存在しない場合は、ディスクが依然としてコピー中である可能性があります。現在、この要素は出力でのみ有効で、入力では無視されます。
23.17.1.4. ターゲット要素
<target>
要素は、ディスクがゲスト仮想マシンのオペレーティングシステムに公開されるバスまたはデバイスを制御します。dev
属性は、論理デバイスの名前を示します。実際のデバイス名が、ゲスト仮想マシンのオペレーティングシステムのデバイス名にマッピングされる保証はありません。オプションのバス属性では、エミュレートするディスクデバイスの種類を指定します。指定できる値はドライバー固有で、一般的な値は ide
、scsi
、virtio
、kvm
、usb
、または sata
です。省略した場合は、デバイス名のスタイルからバスタイプが推測されます。たとえば、'sda'
という名前のデバイスは、通常、SCSI バスを使用してエクスポートされます。オプションの属性 tray
は、リムーバブルディスク (CD-ROM やフロッピーディスクなど) のトレイステータスを示します。値はopen
または closed
のいずれかです。デフォルト設定は closed
です。
23.17.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 操作数。
23.17.1.6. ドライバー要素
<driver>
要素を使用すると、ディスクの提供に使用されるハイパーバイザードライバーに関する詳細を指定できます。以下のオプションが使用できます。
- ハイパーバイザーが複数のバックエンドドライバーをサポートする場合、
name
属性はプライマリーバックエンドドライバー名を選択し、任意の type 属性はサブタイプを提供します。 - オプションの
cache
属性は、キャッシュメカニズムを制御します。使用できる値は、default
、none
、writethrough
、writeback
、directsync
(writethrough
と同じだが、ホスト物理マシンのページキャッシュをバイパスする) およびunsafe
(ホスト物理マシンがすべてのディスク I/O をキャッシュし、ゲスト仮想マシンからの同期要求は無視される) です。 - オプションの
error_policy
属性は、ディスクの読み取りエラーまたは書き込みエラー時にハイパーバイザーがどのように動作するかを制御します。使用できる値は、stop
、report
、ignore
、およびenospace
です。error_policy
のデフォルト設定はreport
です。読み取りエラーのみに対する動作を制御するオプションのrerror_policy
もあります。rerror_policy
が指定されていない場合、error_policy
は読み取りおよび書き込みエラーの両方に使用されます。rerror_policy
が指定されている場合は、読み取りエラーのerror_policy
をオーバーライドします。また、enospace
は読み取りエラーの有効なポリシーではないため、error_policy
がenospace
に設定され、rerror_policy
が指定されていない場合は、読み取りエラーのデフォルト設定であるreport
が使用される点に注意してください。 - オプションの
io
属性は、I/O 上で特定のポリシーを制御します。kvm
ゲスト仮想マシンはthreads
およびnative
に対応します。オプションのioeventfd
属性を使用すると、virtio ディスクデバイスのドメイン I/O の非同期処理を設定できます。デフォルトはハイパーバイザーにより決定します。指定できる値はon
とoff
です。これを有効にすると、別のスレッドが I/O を処理している間にゲスト仮想マシンを実行できます。通常、I/O の実行中にシステム CPU の使用率が高くなったゲスト仮想マシンは、この恩恵を受けます。一方、ホストの物理マシンが過負荷になると、ゲスト仮想マシンの I/O レイテンシーが増加します。ただし、デフォルト設定を変更せず、ハイパーバイザーによる設定の決定を許可することが推奨されます。注記ioeventfd
属性は、disk
XML セクションの<driver>
要素と、device
XML セクションの<driver>
要素に含まれます。前者の場合は virtIO ディスク、後者の場合は SCSI ディスクに影響を及ぼします。 - オプションの
event_idx
属性は、デバイスイベント処理の一部の側面を制御するもので、on
またはoff
に設定できます。on
に設定すると、ゲスト仮想マシンの中断および終了の回数が減ります。デフォルトではハイパーバイザーが決定し、デフォルトの設定はon
になります。この動作が必要ない場合は、off
を設定すると強制的に機能が無効になります。ただし、デフォルト設定を変更せず、ハイパーバイザーによる設定の指示を許可することが強く推奨されます。 - オプションの
copy_on_read
属性は、リードバックファイルをイメージファイルにコピーするかどうかを制御します。使用できる値は、on
または<off>
のいずれかです。copy-on-read
は、同じバッキングファイルセクターに繰り返しアクセスすることを回避し、バッキングファイルが低速のネットワーク上にある場合に役立ちます。デフォルトでは、copy-on-read
はoff
です。 - この
discard='unmap'
は、破棄に対応するように設定できます。同じ行を、discard='ignore'
に置き換えて無効にすることができます。デフォルト設定は、discard='ignore'
です。
23.17.1.7. 追加のデバイス要素
device
要素内では、以下の属性を使用できます。
<boot>
- ディスクが起動可能であることを指定します。追加の起動値
<order>
- システムの起動時にデバイスを試行する順序を指定します。<per-device>
ブート要素は、BIOS ブートローダーセクションの一般的なブート要素とは併用できません。
<encryption>
- ボリュームの暗号化方法を指定します。<readonly>
- ゲスト仮想マシンがデバイスを変更できないことを示します。この設定は、attribute
<device='cdrom'>
を使用するディスクのデフォルト値です。<shareable>
デバイスがドメイン間で共有されることが期待されることを示します (ハイパーバイザーおよびオペレーティングシステムがこれに対応している場合)。shareable
を使用すると、そのデバイスにcache='no'
が指定されます。<transient>
- デバイスのコンテンツの変更は、ゲスト仮想マシンの終了時に自動的に元に戻す必要があることを示します。一部のハイパーバイザーでは、ディスクにtransient
マークを付けると、ドメインが移行またはスナップショットに参加できなくなります。<serial>
- ゲスト仮想マシンのハードドライブのシリアル番号を指定します。(例:<serial>
WD-WMAP9A966149</serial>
)<wwn>
- 仮想ハードディスクまたは CD-ROM ドライブのワールドワイドネーム (WWN) を指定します。16 桁の 16 進数で設定される必要があります。<vendor>
- 仮想ハードディスクまたは CD-ROM デバイスのベンダーを指定します。印刷可能な 8 文字を超えてはなりません。<product>
- 仮想ハードディスクまたは CD-ROM デバイスの製品を指定します。印刷可能な 16 文字を超えてはなりません。<host>
- 以下の属性をサポートします。この要素の意味と要素数は、プロトコルに基づく追加のホスト属性 に示すようにname
- ホスト名を指定します。port
- ポート番号を指定します。transport
- トランスポートの種類を指定します。socket
- ソケットのパスを指定します。
protocol
属性により異なります。プロトコルに基づく追加のホスト属性
nbd
-nbd-server
を実行しているサーバーを指定します。使用できるのは、1 台のホスト物理マシンだけです。このプロトコルのデフォルトポートは 10809 です。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-Modes を指定し、none
、lba
、またはauto
の値を設定できます。
blockio
- ブロックデバイスを、以下のブロックデバイスプロパティーのいずれかで上書きできます。blockio オプション
logical_block_size
- ゲスト仮想マシンのオペレーティングシステムを報告し、ディスク I/O の最小ユニットを説明します。physical_block_size
- ゲスト仮想マシンのオペレーティングシステムを報告し、ディスクのハードウェアセクターサイズを説明します。これは、ディスクデータの調整に関連付けることができます。
23.17.2. デバイスアドレス
<address>
サブ要素があります。入力でアドレス (またはアドレス内の任意の属性) が省略された場合、libvirt は適切なアドレスを生成します。レイアウトをさらに制御する必要がある場合は明示的なアドレスが必要になります。address 要素を含むデバイスの例は、以下を参照してください。
type
があります。特定のデバイスに使用するアドレスの選択は、デバイスやゲスト仮想マシンのアーキテクチャーによって一部が制約されます。たとえば、ディスクデバイスは type='disk'
を使用し、コンソールデバイスは、32 ビット AMD および Intel の type='pci'
、または AMD64 と Intel 64、ゲスト仮想マシン、または PowerPC64 pseries ゲスト仮想マシンの type='spapr-vio'
を使用します。各アドレス<type>
には、デバイスの配置先を制御する追加のオプション属性があります。追加の属性は、以下のとおりです。
type='pci'
- PCI アドレスには、以下の追加属性があります。domain
(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 桁のバス番号)slot
- (バス内の 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
で許可されています。開始レジスターの 16 進数のアドレスを決定する追加のreg
属性を、この属性に割り当てることができます。
23.17.3. コントローラー
<controller>
要素を指定する必要がある場合があります。
図23.35 コントローラー要素
... <devices> <controller type='ide' index='0'/> <controller type='virtio-serial' index='0' ports='16' vectors='4'/> <controller type='virtio-serial' index='1'> <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/> <controller type='scsi' index='0' model='virtio-scsi' num_queues='8'/> </controller> ... </devices> ...
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 or "vmpvscsi"
の 1 つであるオプションの属性model
があります。<controller type='scsi'>
には、指定したキュー数のマルチキューサポートを有効にする属性 num_queues
もあります。また、ioeventfd
属性を使用できます。これは、コントローラーが、SCSI ディスクで非同期処理を使用するかどうかを指定します。許可される値は "on" と "off" です。
"usb"
コントローラーには、"piix3-uhci", "piix4-uhci", "ehci", "ich9-ehci1", "ich9-uhci1", "ich9-uhci2", "ich9-uhci3", "vt82c686b-uhci", "pci-ohci" or "nec-xhci"
の 1 つであるオプションの属性model
があります。また、ゲスト仮想マシンで USB バスを明示的に無効にする必要がある場合は、model='none'
を使用できます。PowerPC64 "spapr-vio" アドレスには、関連付けられたコントローラーがありません。
address
は、上記のセマンティクスを使用して、コントローラーとマスターバスの正確な関係を指定できます。
master
があります。コンパニオンコントローラーはマスターと同じバスにあるため、コンパニオンインデックスの値は同じである必要があります。
図23.36 デバイス - コントローラー - USB
... <devices> <controller type='usb' index='0' model='ich9-ehci1'> <address type='pci' domain='0' bus='0' slot='4' function='7'/> </controller> <controller type='usb' index='0' model='ich9-uhci1'> <master startport='0'/> <address type='pci' domain='0' bus='0' slot='4' function='0' multifunction='on'/> </controller> ... </devices> ...
23.17.4. デバイスリース
図23.37 デバイス - デバイスリース
... <devices> ... <lease> <lockspace>somearea</lockspace> <key>somekey</key> <target path='/some/lease/path' offset='1024'/> </lease> ... </devices> ...
lease
セクションには、以下の引数を指定できます。
lockspace
- 鍵が保持されているロック領域を識別する任意の文字列です。ロックマネージャーは、ロックスペース名の形式や長さに追加の制限を課す場合があります。key
- 取得するリースを一意に識別する任意の文字列。ロックマネージャーは、キーの形式や長さに追加の制限を課す場合があります。target
- ロックスペースに関連付けられたファイルの完全修飾パス。オフセットは、リースがファイル内に保存される場所を指定します。ロックマネージャーがオフセットを必要としない場合は、この値を0
に設定します。
23.17.5. ホスト物理マシンのデバイス割り当て
23.17.5.1. USB / PCI デバイス
hostdev
要素を使用してゲスト仮想マシンに渡すことができます。管理ツールを使用してホスト物理マシンを変更し、ドメイン XML ファイルの以下のセクションを設定します。
図23.38 デバイス - ホスト物理マシンのデバイス割り当て
... <devices> <hostdev mode='subsystem' type='usb'> <source startupPolicy='optional'> <vendor id='0x1234'/> <product id='0xbeef'/> </source> <boot order='2'/> </hostdev> </devices> ...
図23.39 デバイス - ホスト物理マシンのデバイス割り当ての代替案
... <devices> <hostdev mode='subsystem' type='pci' managed='yes'> <source> <address bus='0x06' slot='0x02' function='0x0'/> </source> <boot order='1'/> <rom bar='on' file='/etc/fake/boot.bin'/> </hostdev> </devices> ...
図23.40 デバイス - ホスト物理マシン scsi デバイスの割り当ての代替案
... <devices> <hostdev mode='subsystem' type='scsi'> <source> <adapter name='scsi_host0'/> <address type='scsi' bus='0' target='0' unit='0'/> </source> <readonly/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </hostdev> </devices> ..
パラメーター | 説明 |
---|---|
hostdev |
これは、ホストの物理マシンデバイスを記述する主な要素です。以下のオプションを取ります。
|
比較元 | ホストの物理マシンから見たデバイスを説明します。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 のドキュメントでは、rom bar 設定により、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 つの属性を持ちます。 |
23.17.5.2. ブロック / キャラクターデバイス
hostdev
要素を変更することで、ゲスト仮想マシンに渡すことができます。これは、コンテナーベースの仮想化でのみ可能であることに注意してください。
図23.41 デバイス - ホスト物理マシンのデバイス割り当てブロックキャラクターデバイス
... <hostdev mode='capabilities' type='storage'> <source> <block>/dev/sdf1</block> </source> </hostdev> ...
図23.42 デバイス - ホスト物理マシンのデバイス割り当てブロックキャラクターデバイスの代替案 1
... <hostdev mode='capabilities' type='misc'> <source> <char>/dev/input/event3</char> </source> </hostdev> ...
図23.43 デバイス - ホスト物理マシンのデバイス割り当てブロックキャラクターデバイスの代替案 2
... <hostdev mode='capabilities' type='net'> <source> <interface>eth0</interface> </source> </hostdev> ...
パラメーター | 説明 |
---|---|
hostdev | これは、ホスト物理マシンデバイスを説明する主要なコンテナーです。ブロックデバイス/キャラクターデバイスの場合、パススルーmode は常にcapabilities になります。ブロックデバイスの場合は type は block に、キャラクターデバイスの場合は char になります。 |
比較元 | これは、ホストの物理マシンから見たデバイスを説明します。ブロックデバイスの場合は、ホスト物理マシンのオペレーティングシステムのブロックデバイスへのパスが、ネストされた block 要素で提供され、キャラクターデバイスの場合は char 要素が使用されます。 |
23.17.6. リダイレクトされたデバイス
図23.44 デバイス - リダイレクトされたデバイス
... <devices> <redirdev bus='usb' type='tcp'> <source mode='connect' host='localhost' service='4000'/> <boot order='1'/> </redirdev> <redirfilter> <usbdev class='0x08' vendor='0x1234' product='0xbeef' version='2.00' allow='yes'/> <usbdev allow='no'/> </redirfilter> </devices> ...
パラメーター | 説明 |
---|---|
redirdev | これは、リダイレクトされたデバイスを記述するためのメインコンテナーです。USB デバイスの場合、bus は usb である必要があります。追加の属性タイプが必要で、対応しているシリアルデバイスタイプのいずれかと一致するものが、トンネルのホスト物理マシン側の説明に使用されます。通常は、type='tcp' または type='spicevmc' (SPICE グラフィックデバイスの usbredir チャンネルを使用) です。redirdev 要素には、オプションのサブ要素 address があります。これは、デバイスを特定のコントローラーに関連付けることができます。source などのサブ要素は、targe サブ要素は必要ありませんが、指定のtype に応じて必要となる場合があります (キャラクターデバイスのコンシューマーはゲスト仮想マシンに表示されるデバイスではなく、ハイパーバイザー自体であるため)。 |
boot | デバイスが起動可能であることを指定します。order 属性は、システムの起動順序においてデバイスが試行される順序を決定します。デバイスごとのブート要素は、BIOS ブートローダーセクションの一般的なブート要素とは併用できません。 |
redirfilter | これは、特定のデバイスをリダイレクトから除外するフィルタールールを作成するために使用されます。サブ要素 usbdev を使用して、各フィルタールールを定義します。class 属性は USB クラスコードです。 |
23.17.7. スマートカードデバイス
smartcard
要素を介してゲスト仮想マシンに提供することができます。ホスト物理マシンにある USB スマートカードリーダーデバイスは、デバイスパススルー機能を持つゲスト仮想マシンでは使用できません。これは、ホスト物理マシンとゲスト仮想マシンの両方で使用可能にすることができず、ゲスト仮想マシンから削除された場合にホスト物理マシンコンピューターをロックすることができるためです。したがって、一部のハイパーバイザーは、ゲスト仮想マシンにスマートカードインターフェイスを提示できる特別な仮想デバイスを提供します。これには、ホストの物理マシンから、またはサードパーティーのスマートカードプロバイダーに作成されたチャンネルから認証情報を取得する方法を説明するいくつかのモードがあります。
図23.45 デバイス - スマートカードデバイス
... <devices> <smartcard mode='host'/> <smartcard mode='host-certificates'> <certificate>cert1</certificate> <certificate>cert2</certificate> <certificate>cert3</certificate> <database>/etc/pki/nssdb/</database> </smartcard> <smartcard mode='passthrough' type='tcp'> <source mode='bind' host='127.0.0.1' service='2001'/> <protocol type='raw'/> <address type='ccid' controller='0' slot='0'/> </smartcard> <smartcard mode='passthrough' type='spicevmc'/> </devices> ...
smartcard
要素には必須の属性mode
があります。各モードで、ゲスト仮想マシンは、物理 USB CCID (Chip/Smart Card Interface Device) カードのように動作する 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 バスコントローラーとの間の関連を微調整します。詳細は、「デバイスアドレス」 を参照してください。
23.17.8. ネットワークインターフェイス
図23.46 デバイス - ネットワークインターフェイス
... <devices> <interface type='direct' trustGuestRxFilters='yes'> <source dev='eth0'/> <mac address='52:54:00:5d:c7:9e'/> <boot order='1'/> <rom bar='off'/> </interface> </devices> ...
"direct"
- ゲスト仮想マシンの NIC を、ホスト物理マシンの物理 NIC に割り当てます。詳細およびサンプルは、「物理インターフェイスへの直接接続」 を参照してください。"network"
- これは、動的ネットワーク設定またはワイヤレスネットワーク設定のホスト物理マシンにおける一般的なゲスト仮想マシンの接続に推奨される設定です。詳細およびサンプルは、「仮想ネットワーク」 を参照してください。"bridge"
- 静的有線ネットワーク設定を使用するホスト物理マシンのゲスト仮想マシンの接続に推奨される設定です。詳細およびサンプルは、「LAN へのブリッジ」 を参照してください。"ethernet"
- 管理者が任意のスクリプトを実行して、ゲスト仮想マシンのネットワークを LAN に接続する手段を提供します。詳細およびサンプルは、「一般的なイーサネット接続」 を参照してください。"hostdev"
- 汎用デバイスパススルーを使用して、PCI ネットワークデバイスをゲスト仮想マシンに直接割り当てることを許可します。詳細およびサンプルは、「PCI パススルー」 を参照してください。"mcast"
- マルチキャストグループは、仮想ネットワークを表すために使用できます。詳細およびサンプルは、「マルチキャストトンネル」 を参照してください。"user"
- ユーザーオプションを使用して、ユーザー空間の SLIRP スタックパラメーターを設定すると、外界に NAT を持つ仮想 LAN が提供されます。詳細およびサンプルは、「ユーザー空間の SLIRP スタック」 を参照してください。"server"
- サーバーオプションを使用して TCP クライアントサーバーアーキテクチャーを作成し、1 つのゲスト仮想マシンがネットワークのサーバー側を提供し、他のすべてのゲスト仮想マシンがクライアントとして設定される仮想ネットワークを提供します。詳細およびサンプルは、「TCP トンネル」 を参照してください。
<interface>
要素はオプションの <trustGuestRxFilters>
属性で定義できます。これにより、ホストの物理マシンが、ゲスト仮想マシンから受信したレポートを検出して信頼できるようになります。このようなレポートは、インターフェイスがフィルターへの変更を受信するたびに送信されます。これには、プライマリー MAC アドレス、デバイスアドレスフィルター、または vlan 設定の変更が含まれます。セキュリティー上の理由から、<trustGuestRxFilters>
属性はデフォルトで無効になっています。また、この属性のサポートは、ゲストネットワークデバイスモデルや、ホストの物理マシンの接続タイプによって異なります。現在、virtio デバイスモデルと、ホストの物理マシンの macvtap 接続でのみサポートされています。オプションのパラメーター <trustGuestRxFilters>
を設定することが推奨される単純なユースケースは、ゲストによって設定されたフィルターもホストでミラーリングされるため、ゲスト仮想マシンにホストの物理マシン側フィルターを制御するパーミッションを付与する場合になります。
<interface>
要素にはオプションの <address>
サブ要素を指定できます。このサブ要素には、属性type='pci'
を使用して、インターフェイスを特定の PCI スロットに関連付けることができます。詳細は、「デバイスアドレス」 を参照してください。
23.17.8.1. 仮想ネットワーク
<ネットワーク>
定義で個別に説明されている複数ホストの物理マシン環境)。さらに、名前付きのネットワーク定義で記述されている詳細を含む接続を提供します。仮想ネットワークのforward mode
設定によっては、ネットワークが完全に分離している (<forward>
要素が指定されていない) 場合と、NAT を使用して明示的なネットワークデバイスまたはデフォルトルートに接続している (forward mode='nat'
) 場合、NAT を使用せずにルーティングしている (forward mode='route'
) 場合、またはホスト物理マシンのネットワークインターフェイス (macvtap を使用) またはブリッジデバイス (forward mode='bridge|private|vepa|passthrough'
) のいずれかに直接接続している場合があります。
bridge
、private
、vepa
、および passthrough
の転送モードを持つネットワークでは、ホストの物理マシンに、必要な DNS サービスおよび DHCP サービスが、libvirt の範囲外に設定されていることを前提とします。分離ネットワーク、nat ネットワーク、ルーティングネットワークの場合、DHCP および DNS は、libvirt により仮想ネットワークで提供され、IP 範囲は、virsh net-dumpxml [networkname] で仮想ネットワーク設定を調べることで決定できます。追加設定なしで設定された 'default' 仮想ネットワークは、NAT を使用してデフォルトルートに接続し、IP 範囲は 192.168.122.0/255.255.255.0 になります。各ゲスト仮想マシンには、vnetN という名前で作成された tun デバイスが関連付けられます。これは、<target>
要素 (「ターゲット要素の上書き」 を参照) で上書きできます。
<direct>
ネットワーク接続 (以下で説明) と同様に、network
タイプの接続では<virtualport>
要素を指定できます。設定データは、802.1Qbg または 802.1Qbh 準拠の Virtual Ethernet Port Aggregator (VEPA)switch スイッチ、あるいは Open vSwitch 仮想スイッチに転送されます。
<network>
要素の設定に依存するため、<virtualport type>
属性を省略することができます。<virtualport type>
は一度または複数回指定する必要があります。ドメインが起動すると、定義されているタイプと属性をマージして、完全な <virtualport>
要素を構築します。これにより、新たに再構築された仮想ポートが作成されます。下位の仮想ポートの属性は、上位の仮想ポートで定義された属性を変更できないことに注意してください。インターフェイスの優先度が最も高く、ポートグループの優先度が最も低くなります。
profileid
と interfaceid
の両方を提供する必要があります。managerid
、typeid
、profileid
などの仮想ポートから入力するその他の属性は任意です。
図23.47 デバイス - ネットワークインターフェイス - 仮想ネットワーク
... <devices> <interface type='network'> <source network='default'/> </interface> ... <interface type='network'> <source network='default' portgroup='engineering'/> <target dev='vnet7'/> <mac address="00:11:22:33:44:55"/> <virtualport> <parameters instanceid='09b11c53-8b5c-4eeb-8f00-d84eaa0aaa4f'/> </virtualport> </interface> </devices> ...
23.17.8.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 の以下の部分を設定します。
図23.48 デバイス - ネットワークインターフェイス - LAN へのブリッジ
... <devices> ... <interface type='bridge'> <source bridge='br0'/> </interface> <interface type='bridge'> <source bridge='br1'/> <target dev='vnet7'/> <mac address="00:11:22:33:44:55"/> </interface> <interface type='bridge'> <source bridge='ovsbr'/> <virtualport type='openvswitch'> <parameters profileid='menial' interfaceid='09b11c53-8b5c-4eeb-8f00-d84eaa0aaa4f'/> </virtualport> </interface> ... </devices>
23.17.8.3. ポートマスカレードの範囲の設定
図23.49 ポートマスカレードの範囲
<forward mode='nat'> <address start='1.2.3.4' end='1.2.3.10'/> </forward> ...
23.17.8.4. ユーザー空間の SLIRP スタック
図23.50 デバイス - ネットワークインターフェイス - ユーザー空間の SLIRP スタック
... <devices> <interface type='user'/> ... <interface type='user'> <mac address="00:11:22:33:44:55"/> </interface> </devices> ...
23.17.8.5. 一般的なイーサネット接続
vnetN
の名前で作成された<tun>
デバイスがありますが、<target>
要素で上書きすることもできます。tun
デバイスを作成すると、シェルスクリプトが実行され、必要なホスト物理マシンネットワークインテグレーションが完了します。初期設定では、このスクリプトは /etc/qemu-ifup
と呼ばれていますが、上書きできます (「ターゲット要素の上書き」 を参照)。
図23.51 デバイス - ネットワークインターフェイス - 汎用イーサネット接続
... <devices> <interface type='ethernet'/> ... <interface type='ethernet'> <target dev='vnet7'/> <script path='/etc/qemu-ifup-mynet'/> </interface> </devices> ...
23.17.8.6. 物理インターフェイスへの直接接続
mode
属性値の vepa
('Virtual Ethernet Port Aggregator')、bridge
または private
のいずれかを選択できます。デフォルトモードは vepa
です。
図23.52 デバイス - ネットワークインターフェイス - 物理インターフェイスへの直接接続
... <devices> ... <interface type='direct'> <source dev='eth0' mode='vepa'/> </interface> </devices> ...
要素 | 説明 |
---|---|
vepa | ゲスト仮想マシンのパケットはすべて外部ブリッジに送信されます。パケットの送信先が、パケットの送信元と同じホスト物理マシン上のゲスト仮想マシンであるパケットは、VEPA 対応のブリッジによりホスト物理マシンに返されます (現在のブリッジは、通常 VEPA 対応ではありません)。 |
bridge | 宛先が、送信元と同じホストの物理マシンにあるパケットは、ターゲットの macvtap デバイスに直接配信されます。直接配信する場合は、作成元デバイスと宛先デバイスの両方がブリッジモードになっている必要があります。いずれかが vepa モードにある場合は、VEPA 対応のブリッジが必要です。 |
プライベート | すべてのパケットは外部ブリッジに送信されます。また、外部ルーターまたはゲートウェイを介して送信され、そのデバイスがホストの物理マシンに返す場合は、同じホストの物理マシンのターゲット仮想マシンにのみ配信されます。移行元デバイスまたは移行先デバイスのいずれかがプライベートモードの場合は、以下の手順が行われます。 |
パススルー | この機能は、移行機能を失うことなく、SR-IOV 対応 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 には、このインターフェイスに適用されるポートプロファイルの名前が含まれます。この名前は、ポートプロファイルデータベースにより、ポートプロファイルからネットワークパラメーターに解決され、これらのネットワークパラメーターはこのインターフェイスに適用されます。 |
図23.53 デバイス - ネットワークインターフェイス - 物理インターフェイスへの直接接続追加パラメーター
... <devices> ... <interface type='direct'> <source dev='eth0.2' mode='vepa'/> <virtualport type="802.1Qbg"> <parameters managerid="11" typeid="1193047" typeidversion="2" instanceid="09b11c53-8b5c-4eeb-8f00-d84eaa0aaa4f"/> </virtualport> </interface> </devices> ...
図23.54 デバイス - ネットワークインターフェイス - 物理インターフェイスへの直接接続、さらなる追加パラメーター
... <devices> ... <interface type='direct'> <source dev='eth0' mode='private'/> <virtualport type='802.1Qbh'> <parameters profileid='finance'/> </virtualport> </interface> </devices> ...
profileid
属性には、このインターフェイスに適用されるポートプロファイルの名前が含まれます。この名前は、ポートプロファイルデータベースにより、ポートプロファイルからネットワークパラメーターに解決され、これらのネットワークパラメーターはこのインターフェイスに適用されます。
23.17.8.7. PCI パススルー
source
要素で指定される PCI ネットワークデバイスは、ジェネリックデバイスパススルーを使用してゲスト仮想マシンに直接割り当てられます。このデバイスの MAC アドレスは、最初にオプションで設定された値に設定され、そのデバイスの MAC アドレスがオプションで指定された virtualport
要素を使用して 802.1Qbh 対応スイッチに関連付けられます (type='direct'
ネットワークデバイスの場合は、上記の仮想ポートの例を参照してください)。標準のシングルポート PCI イーサネットカードドライバー設計の制限により、この方法で割り当てることができるのは SR-IOV (Single Root I/O Virtualization) デバイスのみであることに注意してください。標準のシングルポート PCI または PCIe イーサネットカードをゲスト仮想マシンに割り当てるには、従来の hostdev
デバイス定義を使用します。
hostdev
デバイスの機能と非常に似ています。相違点は、パススルーデバイスに MAC アドレスとvirtualport
を指定できることです。この機能が不要な場合、SR-IOV に対応していない標準のシングルポート PCI カード、PCIe カード、または USB ネットワークカードがある場合 (そのため、ゲスト仮想マシンドメインに割り当てられた後にリセット中に設定済みの MAC アドレスを失います)、または 0.9.11 よりも古い libvirt バージョンを使用している場合は、標準のhostdev
定義を使用して、interface type='hostdev'
の代わりに、ゲスト仮想マシンにデバイスを割り当てます。
図23.55 デバイス - ネットワークインターフェイス - PCI パススルー
... <devices> <interface type='hostdev'> <driver name='vfio'/> <source> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </source> <mac address='52:54:00:6d:90:02'> <virtualport type='802.1Qbh'> <parameters profileid='finance'/> </virtualport> </interface> </devices> ...
23.17.8.8. マルチキャストトンネル
interface type
を操作し、これを mcast
に設定して作成されます。そして、mac address
および source address
を提供します。以下に例を示します。
図23.56 デバイス - ネットワークインターフェイス - マルチキャストトンネル
... <devices> <interface type='mcast'> <mac address='52:54:00:6d:90:01'> <source address='230.0.0.1' port='5558'/> </interface> </devices> ...
23.17.8.9. TCP トンネル
interface type
を操作し、これを mcast
に設定して作成されます。そして、mac address
および source address
を提供します。以下に例を示します。
図23.57 デバイス - ネットワークインターフェイス - TCP トンネル
... <devices> <interface type='server'> <mac address='52:54:00:22:c9:42'> <source address='192.168.0.1' port='5558'/> </interface> ... <interface type='client'> <mac address='52:54:00:8b:c9:51'> <source address='192.168.0.1' port='5558'/> </interface> </devices> ...
23.17.8.10. NIC ドライバー固有のオプションの設定
driver
サブ要素の属性として設定されます。このようなオプションは、管理ツールを使用して設定し、ドメイン XML の以下のセクションを設定します。
図23.58 デバイス - ネットワークインターフェイス - NIC ドライバー固有のオプションの設定
<devices> <interface type='network'> <source network='default'/> <target dev='vnet1'/> <model type='virtio'/> <driver name='vhost' txmode='iothread' ioeventfd='on' event_idx='off'/> </interface> </devices> ...
パラメーター | 説明 |
---|---|
name | オプションの name 属性では、使用するバックエンドドライバーの種類が強制されます。値は、kvm (ユーザー空間のバックエンド) または vhost (カーネルにより vhost モジュールが提供されることが必要なカーネルバックエンド) のいずれかになります。カーネルサポートのない vhost ドライバーを要求しようとする場合は拒否されます。デフォルト設定は、vhost ドライバーが存在する場合は vhost になりますが、存在しない場合は警告なしに kvm に戻ります。 |
txmode | 送信バッファーが満杯になった場合にパケットの送信を処理する方法を指定します。値は、iothread または timer のいずれかになります。iothread に設定すると、パケット tx はドライバーの下半分の iothread ですべて実行されます (このオプションは、kvm コマンドラインの "-device" virtio-net-pci オプションに "tx=bh" を追加することに変換されます)。timer に設定すると、KVM で tx 処理が行われます。現在送信可能な tx データよりも多くの tx データが存在する場合は、KVM が他の処理を行うために移動する前にタイマーが設定されます。タイマーが実行されると、さらなるデータを送信するために別の試みが行われます。この値を変更することは推奨されません。 |
ioeventfd | インターフェイスデバイスのドメイン I/O の非同期処理を設定します。デフォルトは、ハイパーバイザーの判断に任されます。指定できる値は on と off です。このオプションを有効にすると、KVM は、別のスレッドが I/O を処理している間にゲスト仮想マシンを実行できます。通常、I/O の実行中にシステム CPU の使用率が高くなったゲスト仮想マシンは、この恩恵を受けます。一方、物理ホストマシンのオーバーロードは、ゲスト仮想マシンの I/O レイテンシーを増加させる可能性もあります。この値を変更することは推奨されません。 |
event_idx | event_idx 属性は、デバイスイベント処理の一部の側面を制御します。値は on または off のいずれかになります。on がデフォルトで、ゲスト仮想マシンの割り込みと終了の数を減らします。この動作が最適ではない状況では、この属性を使用すると機能を強制的にオフにできます。この値を変更することは推奨されません。 |
23.17.8.11. ターゲット要素の上書き
図23.59 デバイス - ネットワークインターフェイス - ターゲット要素の上書き
... <devices> <interface type='network'> <source network='default'/> <target dev='vnet1'/> </interface> </devices> ...
vnet
または vif
で始まる名前は使用できません。これらの接頭辞は、libvirt および特定のハイパーバイザーが予約するものです。この接頭辞を使用して手動で指定したターゲットは無視されます。
23.17.8.12. 起動順序の指定
図23.60 起動順序の指定
... <devices> <interface type='network'> <source network='default'/> <target dev='vnet1'/> <boot order='1'/> </interface> </devices> ...
23.17.8.13. インターフェイス ROM BIOS 設定
図23.61 インターフェイス ROM BIOS 設定
... <devices> <interface type='network'> <source network='default'/> <target dev='vnet1'/> <rom bar='on' file='/etc/fake/boot.bin'/> </interface> </devices> ...
bar
属性は on
または off
に設定でき、デバイスの ROM がゲスト仮想マシンのメモリーマップで表示されるかどうかを決定します。(PCI のドキュメントでは、rom bar
設定により、ROM のベースアドレスレジスターの存在が制御されます。)rom bar
を指定しないと、KVM のデフォルトが使用されます (古いバージョンの KVM はデフォルトで off
を使用し、新しい KVM ハイパーバイザーはデフォルトで on
を使用します)。オプションの file
属性は、デバイスの ROM BIOS としてゲスト仮想マシンに提示されるバイナリーファイルを指定するために使用されます。これは、ネットワークデバイスに別のブート ROM を提供する際に役立ちます。
23.17.8.14. QoS (Quality of Service)
bandwidth
要素には、最大 1 つのインバウンドおよび 1 つのアウトバウンド子要素を設定できます。このような子要素のいずれかを外した場合は、トラフィックの方向に QoS が適用されません。そのため、ドメインの着信トラフィックのみを形成する場合はインバウンドのみを使用し、その逆も同様にします。
average
(または以下のような floor
) が 1 つずつあります。Average
は、シェイプされるインターフェイスの平均ビットレートを指定します。さらに、オプションの属性が 2 つあります。
peak
- この属性は、ブリッジがデータを送信できる最大レートをキロバイト (秒) 単位で指定します。この実装の制限は、Linux Ingress フィルターがまだ認識していないため、アウトバウンド要素のこの属性は無視されます。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
は受信トラフィックにのみ適用でき、送信トラフィックには適用されません。
図23.62 QoS (Quality of Service)
... <devices> <interface type='network'> <source network='default'/> <target dev='vnet0'/> <bandwidth> <inbound average='1000' peak='5000' floor='200' burst='1024'/> <outbound average='128' peak='256' burst='256'/> </bandwidth> </interface> <devices> ...
23.17.8.15. VLAN タグの設定 (サポートされているネットワークタイプのみ)
図23.63 VLAN タグの設定 (サポートされているネットワークタイプのみ)
... <devices> <interface type='bridge'> <vlan> <tag id='42'/> </vlan> <source bridge='ovsbr0'/> <virtualport type='openvswitch'> <parameters interfaceid='09b11c53-8b5c-4eeb-8f00-d84eaa0aaa4f'/> </virtualport> </interface> <devices> ...
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 トランクを実行することが想定されます。タグが 1 つの VLAN トランクが必要な場合は、オプションの属性trunk='yes'
をトップレベルの vlan
要素に追加できます。
23.17.8.16. 仮想リンクの状態の変更
state
に指定できる値は、up
および down
です。down
が値として指定された場合、インターフェイスはネットワークケーブルが切断されているように動作します。この要素が指定されていない場合のデフォルトの動作はup
です。
図23.64 仮想リンクの状態の変更
... <devices> <interface type='network'> <source network='default'/> <target dev='vnet0'/> <link state='down'/> </interface> <devices> ...
23.17.9. 入力デバイス
図23.65 入力デバイス
... <devices> <input type='mouse' bus='usb'/> </devices> ...
<input>
要素には 1 つの必須属性があります: type
は mouse
または tablet
に設定するすることができます。tablet
はカーソルの絶対移動を提供しますが、mouse
は相対移動を使用します。オプションの bus
属性を使用すると、デバイスタイプを詳細に指定できます。また、kvm
(準仮想化)、ps2
、および usb
に設定できます。
<address>
があります。これは、上記で説明されているように、デバイスを特定の PCI スロットに関連付けることができます。
23.17.10. ハブデバイス
図23.66 ハブデバイス
... <devices> <hub type='usb'/> </devices> ...
hub
要素には、type
という必須属性が 1 つあります。これは、usb
にのみ設定できます。hub
要素には、type='usb'
をオプションに持つオプションのサブ要素 address
があり、デバイスを特定のコントローラーに関連付けることができます。
23.17.11. グラフィカルフレームバッファー
図23.67 グラフィカルフレームバッファー
... <devices> <graphics type='sdl' display=':0.0'/> <graphics type='vnc' port='5904'> <listen type='address' address='1.2.3.4'/> </graphics> <graphics type='rdp' autoport='yes' multiUser='yes' /> <graphics type='desktop' fullscreen='yes'/> <graphics type='spice'> <listen type='network' network='rednet'/> </graphics> </devices> ...
graphics
要素には必須のtype
属性があります。この属性は、以下の表の説明に従って、sdl
、vnc
、rdp
、desktop
、または spice
になります。
パラメーター | 説明 |
---|---|
sdl | これにより、ホストの物理マシンデスクトップにウィンドウが表示されます。これには、以下のオプション引数を使用できます。
|
vnc | VNC サーバーを起動します。
|
spice | SPICE サーバーを起動します。
|
graphics
要素内に 1 つ以上のchannel
要素を追加します。有効なチャンネル名は、main
、display
、inputs
、cursor
、playback
、record
、smartcard
、および usbredir
などです。
図23.68 SPICE 設定の例
<graphics type='spice' port='-1' tlsPort='-1' autoport='yes'> <channel name='main' mode='secure'/> <channel name='record' mode='insecure'/> <image compression='auto_glz'/> <streaming mode='filter'/> <clipboard copypaste='no'/> <mouse mode='client'/> </graphics>
compression
属性を使用して設定されます。
- イメージの圧縮を設定する
image
(auto_glz
、auto_lz
、quic
、glz
、lz
、off
を受け入れます) - WAN を介したイメージの JPEG 圧縮の
jpeg
(auto
、never
、always
を受け入れます) - WAN イメージ圧縮の設定用の
zlib
(auto
、never
、always
を受け入れます)、およびオーディオストリーム圧縮を有効にするためのplayback
(on
またはoff
を受け入れます)
streaming
要素は、ストリーミングモードを設定します。mode
属性は、filter
、all
、または off
に設定できます。
clipboard
要素により設定されます。これはデフォルトで有効になっており、copypaste
プロパティーを no
に設定することで無効にできます。
mouse
要素は、マウスモードを設定します。mode
属性は、server
または client
に設定できます。mode を指定しない場合は、KVM のデフォルトが使用されます (client
モード)。
パラメーター | 説明 |
---|---|
rdp | RDP サーバーを起動します。
|
desktop | この値は、現在 VirtualBox ドメインに予約されています。sdl と同様に、ホスト物理マシンデスクトップにウィンドウを表示しますが、VirtualBox ビューアーを使用します。sdl と同様に、オプション属性の display および fullscreen を受け入れます。 |
listen | グラフィックスタイプ vnc および spice のリッスンソケットを設定するために使用されるアドレス情報を入力する代わりに、graphics の別のサブ要素である listen 属性を指定することができます (上記の例を参照)。listen は次の属性を受け入れます。
|
23.17.12. ビデオデバイス
図23.69 ビデオデバイス
... <devices> <video> <model type='vga' vram='8192' heads='1'> <acceleration accel3d='yes' accel2d='yes'/> </model> </video> </devices> ...
graphics
要素には必須のtype
属性があり、以下の説明に従って、"sdl"、"vnc"、"rdp"、または "desktop" の値をとります。
パラメーター | 説明 |
---|---|
video | video 要素は、ビデオデバイスを説明するコンテナーです。後方互換性のために、動画が設定されておらず、ドメイン XML に graphics 要素がある場合は、ゲスト仮想マシンの種類に応じたデフォルトの video が追加されます。ram または vram が指定されていない場合は、デフォルト値が使用されます。 |
model | これには、利用可能なハイパーバイザー機能に応じて、vga 、cirrus 、vmvga 、kvm 、vbox 、または qxl の値を取る必須の type 属性があります。また、vram と、ヘッドを使用した数値を使用して、ビデオメモリーの量をキビバイト (1024 バイトのブロック) で提供することもできます。 |
アクセラレーション | アクセラレーションに対応している場合は、acceleration 要素の accel3d 属性および accel2d 属性を使用して有効にする必要があります。 |
address | オプションの address サブ要素を使用すると、ビデオデバイスを特定の PCI スロットに関連付けることができます。 |
23.17.13. コンソール、シリアル、およびチャネルデバイス
図23.70 コンソール、シリアル、およびチャネルデバイス
... <devices> <serial type='pty'> <source path='/dev/pts/3'/> <target port='0'/> </serial> <console type='pty'> <source path='/dev/pts/4'/> <target port='0'/> </console> <channel type='unix'> <source mode='bind' path='/tmp/guestfwd'/> <target type='guestfwd' address='10.0.2.1' port='4600'/> </channel> </devices> ...
serial
、console
、channel
) でデバイスがゲスト仮想マシンにどのように提示されるかを説明します。ゲスト仮想マシンインターフェイスは、target
要素で設定されます。ホスト物理マシンに提示されるインターフェイスは、トップレベル要素の type
属性で指定されます。ホスト物理マシンインターフェイスは、source 要素で設定されます。source
要素には、ソケットパスでのラベリングの実行方法を上書きするオプションのseclabel
を指定できます。この要素がない場合は、ドメインごとの設定からセキュリティーラベルが継承されます。各キャラクターデバイス要素には、オプションのサブ要素address
があり、デバイスを特定のコントローラーまたは PCI スロットに関連付けることができます。
isa-parallel
デバイスに対応しなくなりました。
23.17.14. ゲスト仮想マシンのインターフェイス
図23.71 ゲスト仮想マシンインターフェイスのシリアルポート
... <devices> <serial type='pty'> <source path='/dev/pts/3'/> <target port='0'/> </serial> </devices> ...
<target>
には、ポート番号を指定する port
属性を指定できます。ポートには 0 から始まる番号が付けられています。通常、シリアルポートは 0、1、または 2 です。オプションの type
属性もあります。この属性には、値として isa-serial
または usb-serial
の 2 つの選択肢があります。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 コンソールには関連付けられたコントローラーがありません。
/dev/hvc[0-7]
としてゲスト仮想マシンに公開されます (詳細は Fedora プロジェクトの virtio-serial ページ を参照してください)。
図23.72 ゲスト仮想マシンインターフェイス - virtio コンソールデバイス
... <devices> <console type='pty'> <source path='/dev/pts/4'/> <target port='0'/> </console> <!-- KVM virtio console --> <console type='pty'> <source path='/dev/pts/5'/> <target type='virtio' port='0'/> </console> </devices> ... ... <devices> <!-- KVM s390 sclp console --> <console type='pty'> <source path='/dev/pts/1'/> <target type='sclp' port='0'/> </console> </devices> ...
<target>
要素にはシリアルポートと同じ属性があります。通常、コンソールは 1 つだけです。
23.17.15. Channel
図23.73 Channel
... <devices> <channel type='unix'> <source mode='bind' path='/tmp/guestfwd'/> <target type='guestfwd' address='10.0.2.1' port='4600'/> </channel> <!-- KVM virtio channel --> <channel type='pty'> <target type='virtio' name='arbitrary.virtio.serial.port.name'/> </channel> <channel type='unix'> <source mode='bind' path='/var/lib/libvirt/kvm/f16x86_64.agent'/> <target type='virtio' name='org.kvm.guest_agent.0'/> </channel> <channel type='spicevmc'> <target type='virtio' name='com.redhat.spice.0'/> </channel> </devices> ...
<channel>
の特定のタイプは、<target>
要素の type
属性で指定します。各チャンネルタイプには、以下のように異なるターゲット属性があります。
guestfwd
- ゲスト仮想マシンが指定の IP アドレスおよびポートに送信する TCP トラフィックが、ホスト物理マシンのチャネルデバイスに転送されることを指定します。target
要素には、address 属性および port 属性が必要です。virtio
- 準仮想化された virtio チャネル。Linux ゲストオペレーティングシステムでは、<チャネル>
設定が/dev/vport*
ファイルの内容を変更します。オプションの要素名
を指定すると、代わりに/dev/virtio-ports/$name
ファイルが使用されます。詳細は、Fedora プロジェクトの virtio-serial ページを参照し てください。オプションの要素address
では、チャンネルを特定のtype='virtio-serial'
コントローラーに関連付けることができます (上記を参照)。KVM では、name が "org.kvm.guest_agent.0" の場合、libvirt は、ゲスト仮想マシンのシャットダウンやファイルシステムの静止などの操作で、ゲスト仮想マシンにインストールされているゲストエージェントと対話できます。spicevmc
- 準仮想化 SPICE チャンネル。ドメインには、グラフィックデバイスとしての SPICE サーバーも必要です。この時点で、ホストの物理マシンがメインチャネル全体でメッセージをピギーバックします。属性がtype='virtio';
のtarget
要素が必要です。オプションの属性name
は、ゲスト仮想マシンがチャネルにアクセスする方法を制御し、デフォルトはname='com.redhat.spice.0'
になります。オプションの<address>
要素は、チャンネルを特定のtype='virtio-serial'
コントローラーに関連付けることができます。
23.17.16. ホストの物理マシンインターフェイス
パラメーター | 説明 | XML スニペット |
---|---|---|
ドメインログファイル | キャラクターデバイスのすべての入力を無効にし、仮想マシンのログファイルに出力を送信します。 |
|
デバイスログファイル | ファイルが開かれ、キャラクターデバイスに送信したすべてのデータがファイルに書き込まれます。この設定でゲストを正常に起動するには、移行先ディレクトリーに、ゲストの virt_log_t SELinux ラベルが必要です。 |
|
仮想コンソール | キャラクターデバイスを仮想コンソールのグラフィカルフレームバッファーに接続します。通常、これには "ctrl+alt+3" のような特別なホットキーシーケンスを使用してアクセスします。 |
|
Null デバイス | キャラクターデバイスをボイドに接続します。入力にデータが提供されることはありません。書き込まれたデータはすべて破棄されます。 |
|
擬似 TTY | 疑似 TTY は、/dev/ptmx を使用して割り当てられます。virsh console などの適切なクライアントは、接続してローカルのシリアルポートと対話できます。 |
|
NB 特殊ケース | NB 特殊なケースで、<console type='pty'> の場合、TTY パスもトップレベルの <console> タグの属性 tty='/dev/pts/3' として複製されます。これにより、<console> タグの構文が簡略化されました。 | |
ホスト物理マシンのデバイスプロキシー | キャラクターデバイスは、基本となる物理キャラクターデバイスに渡されます。エミュレートシリアルポートはホスト物理マシンのシリアルポートにのみ接続するなど、デバイスの種類が一致する必要があります。シリアルポートをパラレルポートに接続しないでください。 |
|
名前付きパイプ | キャラクターデバイスは、名前付きパイプに出力を書き込みます。詳細は、man ページの pipe(7) を参照してください。 |
|
TCP クライアントサーバー | キャラクターデバイスは、リモートサーバーに接続する TCP クライアントとして機能します。 |
または、クライアント接続を待機している TCP サーバーとして機能します。
または、raw の TCP の代わりに telnet を使用できます。また、telnets (セキュアな telnet) および tls も使用できます。
|
UDP ネットワークコンソール | キャラクターデバイスは UDP netconsole サービスとしてパケットの送受信を行います。これは不可逆のサービスです。 |
|
UNIX ドメインソケット client-server | キャラクターデバイスは、UNIX ドメインソケットサーバーとして機能し、ローカルクライアントからの接続を受け入れます。 |
|
23.17.17. サウンドデバイス
sound
要素を使用してホスト物理マシンに接続できます。
図23.74 仮想サウンドカード
... <devices> <sound model='ac97'/> </devices> ...
sound
要素には、必須の属性 model
が 1 つあります。これは、実際のサウンドデバイスをエミュレートするものを指定します。有効な値は、基本となるハイパーバイザーに固有のものですが、一般的な選択肢は 'sb16'
、'ac97'
、および 'ich6'
です。また、'ich6'
モデルセットを持つ sound
要素には、さまざまなオーディオコーデックをオーディオデバイスに割り当てるためのオプションの codec
サブ要素を追加できます。指定しない場合は、再生および録画を許可するために、デフォルトのコーデックが割り当てられます。有効な値は 'duplex'
(ラインインおよびラインアウトをアドバタイズ) および 'micro'
(スピーカーおよびマイクをアドバタイズ) です。
図23.75 サウンドデバイス
... <devices> <sound model='ich6'> <codec type='micro'/> <sound/> </devices> ...
<address>
があります。このサブ要素は、デバイスを特定の PCI スロットに接続できます (上記を参照)。
23.17.18. ウォッチドッグデバイス
<watchdog>
要素を使用してゲスト仮想マシンに追加できます。ウォッチドッグデバイスには、ゲスト仮想マシンに追加のドライバーおよび管理デーモンが必要です。現在、ウォッチドッグの実行時にサポート通知はありません。
図23.76 ウォッチドッグデバイス
... <devices> <watchdog model='i6300esb'/> </devices> ... ... <devices> <watchdog model='i6300esb' action='poweroff'/> </devices> ...
model
- 必要なmodel
属性は、実際のウォッチドッグデバイスをエミュレートするものを指定します。有効な値は、基になるハイパーバイザーに固有のものです。model
属性は、以下の値をとることができます。i6300esb
- 推奨されるデバイスで、PCI Intel 6300ESB をエミュレートします。ib700
- ISA iBase IB700 をエミュレートします。
action
- オプションのaction
属性は、ウォッチドッグの期限が切れたときに行うアクションを説明します。有効な値は、基になるハイパーバイザーに固有のものです。action
属性には、以下の値を指定できます。reset
: デフォルト設定で、ゲスト仮想マシンを強制的にリセットします。shutdown
- ゲスト仮想マシンを正常にシャットダウンします (推奨されません)。poweroff
: ゲスト仮想マシンを強制的にオフにします。pause
: ゲスト仮想マシンを一時停止します。none
- 何も実行しません。dump
- ゲスト仮想マシンを自動的にダンプします。
23.17.19. パニックデバイスの設定
pvpanic
メカニズムを使用して Linux ゲスト仮想マシンカーネルパニックを検出できます。pvpanic
が起動すると、libvirtd
デーモンにメッセージを送信します。これにより、事前設定された対応が開始します。
pvpanic
デバイスを有効にするには、以下を実行します。
- ホストマシンの
/etc/libvirt/qemu.conf
ファイルにある次の行を追加またはコメント解除します。auto_dump_path = "/var/lib/libvirt/qemu/dump"
- virsh edit コマンドを実行して、指定したゲストのドメイン XML ファイルを編集し、
panic
をdevices
親要素に追加します。<devices> <panic> <address type='isa' iobase='0x505'/> </panic> </devices>
<address>
要素は、パニックのアドレスを指定します。デフォルトの ioport は 0x505 です。ほとんどの場合、アドレスを指定する必要はありません。
libvirtd
がクラッシュに反応する方法は、ドメイン XML の <on_crash>
要素により決定します。可能なアクションは以下のとおりです。
coredump-destroy
- ゲスト仮想マシンのコアダンプをキャプチャーして、ゲストをシャットダウンします。coredump-restart
- ゲスト仮想マシンのコアダンプをキャプチャーして、ゲストを再起動します。preserve
: ゲスト仮想マシンを停止して、次のアクションを待ちます。
pvpanic
の詳細は、関連するナレッジベースの記事 を参照してください。
23.17.20. メモリーバルーンデバイス
<currentMemory>
および <memory>
設定の違いにより決定します。たとえば、<memory>
を 2 GiB に設定し、<currentMemory>
を 1 GiB に設定すると、バルーンには 1 GiB が含まれます。手動設定が必要な場合は、virsh setmem コマンドを使用して<currentMemory>
値を設定し、virsh setmaxmem コマンドを使用して <memory>
値を設定できます。
<currentMemory>
の値を変更する場合には、ゲスト OS が適切に機能するように十分なメモリーを残してください。設定値を低くしすぎると、ゲストが不安定になる可能性があります。
<memballoon>
要素により表されます。メモリーバルーニングは libvirt
サービスにより管理され、必要に応じて自動的に追加されます。そのため、特定の PCI スロットを割り当てる必要がない限り、ゲスト仮想マシン XML にこの要素を明示的に追加する必要はありません。<memballoon>
デバイスを明示的に無効にする必要がある場合は、model='none'
を使用できることに留意してください。
libvirt
が自動的に追加する memballoon デバイスを示しています。
図23.77 メモリーバルーンデバイス
... <devices> <memballoon model='virtio'/> </devices> ...
図23.78 手動で追加したメモリーバルーンデバイス
... <devices> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </memballoon> </devices> ...
model
属性は、どのようなバルーンデバイスが提供されるかを指定します。有効な値は仮想プラットフォーム固有です。KVM ハイパーバイザーでは、'virtio'
がデフォルト設定です。