24.18. Devices
<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 バス乱数ジェネレーターデバイス
重要
virtio-balloon-pci および virtio-rng-pci を例外とするすべての virtio デバイスは vector 引数を許可します。
...
<devices>
<emulator>/usr/lib/kvm/bin/kvm-dm</emulator>
</devices>
...図24.27 デバイス - 子要素
<emulator> 要素のコンテンツは、デバイスモデルエミュレーターのバイナリーへの完全修飾パスを指定します。この capabilities XML は、それぞれの特定ドメインタイプ、またはアーキテクチャーの組み合わせに対して使用するための推奨されるデフォルトエミュレーターを指定します。
24.18.1. ハードドライブ、フロッピーディスク、CD-ROM
<disk> 要素でフロッピーディスク、ハードディスク、CD-ROM または準仮想化ドライバーが指定されている場合などの、ディスクに類するデバイスを指定します。
...
<devices>
<disk type='file' snapshot='external'>
<driver name="tap" type="aio" cache="default"/>
<source file='/var/lib/xen/images/fv0' startupPolicy='optional'>
<seclabel relabel='no'/>
</source>
<target dev='hda' bus='ide'/>
<iotune>
<total_bytes_sec>10000000</total_bytes_sec>
<read_iops_sec>400000</read_iops_sec>
<write_iops_sec>100000</write_iops_sec>
</iotune>
<boot order='2'/>
<encryption type='...'>
...
</encryption>
<shareable/>
<serial>
...
</serial>
</disk>図24.28 デバイス - ハードドライブ、フロッピーディスク、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>図24.29 デバイス - ハードドライブ、フロッピーディスク、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>図24.30 デバイス - ハードドライブ、フロッピーディスク、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>図24.31 デバイス - ハードドライブ、フロッピーディスク、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>図24.32 デバイス - ハードドライブ、フロッピーディスク、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>図24.33 デバイス - ハードドライブ、フロッピーディスク、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>図24.34 デバイス - ハードドライブ、フロッピーディスク、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>図24.35 デバイス - ハードドライブ、フロッピーディスク、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>
...図24.36 デバイス - ハードドライブ、フロッピーディスク、CD-ROM サンプル 9
24.18.1.1. disk 要素
<disk> 要素は、ディスクを記述するためのメインコンテナーです。属性の type は <disk> 要素と共に使用できます。以下のタイプが受け入れ可能です。
fileblockdirnetwork
24.18.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 には、接続するホスト物理マシンを指定するために使用されるゼロか、または 1 つ以上の host サブ要素が含まれます。これには、type='dir' および type='network' が含まれます。CD-ROM またはフロッピー (デバイス属性) を表す file ディスクタイプの場合、ソースファイルにアクセスできない場合にディスクをどう処理するかについてのポリシーを定義することができます。これは、以下の値のいずれかと共に startupPolicy 属性を設定することによって実行されます。
mandatoryは、何らかの理由で欠落が生じる場合に失敗させます。これはデフォルトの設定です。requisiteは、ブート時に欠落がある場合に失敗を生じさせ、移行/復元/復帰の時点で見つからない場合にドロップします。optionalは、開始の試行時にドロップします。
24.18.1.3. ミラー要素
BlockCopy 操作を開始する場合に見られます。ここで、属性ファイルの <mirror> ロケーションには、最終的には、属性形式のファイル形式 (ソースの形式と異なる可能性がある) で、ソースと同じコンテンツが含まれることになります。ready 属性がある場合、ディスクではピボットが可能なことが認識されます。それ以外の場合、ディスクはおそらく依然としてコピーを続けます。現在のところ、この要素は出力でのみ有効であり、入力では無視されます。
24.18.1.4. ターゲット要素
<target> 要素は、ディスクがゲスト仮想マシン OS に公開されるバス/デバイスを制御します。dev 属性は、論理デバイス名を示します。指定される実際のデバイス名は、ゲスト仮想マシン OS 内のデバイス名にマップされるとは保証されません。オプションのバス属性は、エミュレートするディスクデバイスのタイプを指定します。使用できる値は、以下の標準的な値を含む、ドライバー固有の値になります。ide、scsi、virtio、kvm、usb または sata。バスタイプは、省略される場合、デバイス名のスタイルから推定されます。たとえば、'sda' という名前のデバイスは、通常 SCSI バスを使用してエクスポートされます。オプション属性の tray は、リムーバブルディスク (CDROM またはフロッピーディスクなど) のトレイの状態を示し、値は open または closed にすることができます。デフォルト設定は closed です。
24.18.1.5. iotune 要素
<iotune> 要素は、デバイスごとに異なる可能性のある値と共に、追加のデバイスごとの I/O チューニングを提供する機能を提供します (ドメインにグローバルに適用される blkiotune 要素と比較)。この要素には、以下のオプションのサブ要素があります (全くサブ要素が指定されていないか、または 0 の値と共に指定されている場合は制限がないことを示すことに注意してください)。
<total_bytes_sec>- 1 秒あたりのバイト単位の合計スループット制限です。この要素は、<read_bytes_sec>または<write_bytes_sec>と共に使用することはできません。<read_bytes_sec>- 1 秒あたりのバイト単位の読み込みスループット制限です。<write_bytes_sec>- 1 秒あたりのバイト単位の書き込みスループット制限です。<total_iops_sec>- 1 秒あたりの合計 I/O 操作回数です。この要素は、<read_iops_sec>または<write_iops_sec>と共に使用することができません。<read_iops_sec>- 1 秒あたりの読み込み I/O 回数です。<write_iops_sec>- 1 秒あたりの書き込み I/O 操作回数です。
24.18.1.6. ドライバー要素
<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 上の特定のポリシーを制御します。kvmゲスト仮想マシンは、threadsおよびnativeをサポートします。オプションのioeventfd属性により、ユーザーは virtio ディスクデバイスのドメイン I/O の非同期処理を設定できます。デフォルトはハイパーバイザーによって設定されます。受け入れ可能な値は、onおよびoffです。これを有効にすることにより、別のスレッドが I/O を処理する間に、ゲスト仮想マシンを実行させることができます。通常これは、I/O 時のシステム CUP の高い使用率を経験するゲスト仮想マシンの場合に役立ちます。なお、過負荷のホスト物理マシンは、ゲスト仮想マシンの I/O 待ち時間を増やす可能性があります。なお、デフォルトの設定を変更せず、ハイパーバイザーに設定を決定させるようにすることを推奨します。注記
ioeventfd属性は、diskXML セクションやdeviceXML セクションの<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'がデフォルト設定です。
24.18.1.7. 追加のデバイス要素
device 要素内で使用することができます。
<boot>- ディスクが起動可能であると指定します。追加のブート値
<order>- ブートシーケンス時にデバイスが試行される順序を決定します。<per-device>boot 要素は、BIOS ブートローダーセクションの一般的な boot 要素と共に使用することができません。
<encryption>- ボリュームが暗号化される方法を指定します。<readonly>- デバイスがゲスト仮想マシンで変更できないことを示します。この設定は、attribute<device='cdrom'>の場合のディスクのデフォルトです。<shareable>デバイスがドメイン間で共有されることが予期されることを示します (ハイパーバイザーおよび 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を実行するサーバーを指定し、単一のホスト物理マシンにのみ使用することができます。rbd- RBD タイプのサーバーを監視し、1 つ以上のホスト物理マシンに使用することができます。sheepdog:sheepdogサーバーの 1 つを指定し (デフォルトは localhost:7000)、1 つのホスト物理マシンに使用できるか、またはいずれのホスト物理マシンにも使用できません。gluster- glusterd デーモンを実行するサーバーを指定し、単一のホスト物理マシンにのみ使用できます。transport 属性の有効な値は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 にレポートし、ディスクデータの位置合わせに関連するディスクのハードウェアセクターサイズを記述します。
24.18.2. ファイルシステム
[...]
<devices>
<filesystem type='template'>
<source name='my-vm-template'/>
<target dir='/'/>
</filesystem>
<filesystem type='mount' accessmode='passthrough'>
<driver type='path' wrpolicy='immediate'/>
<source dir='/export/to/guest'/>
<target dir='/import/from/host'/>
<readonly/>
</filesystem>
[...]
</devices>
[...]
図24.37 デバイス - ファイルシステム
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は、ソースのアクセス用にセキュリティーモードを指定します。現在、これは、KVM ドライバーに対してtype='mount'と指定する場合にのみ機能します。使用できる値は以下の通りです。passthrough- ゲスト仮想マシン内から設定されるユーザーの権限でソースがアクセスされることを指定します。これは、いずれも指定されていない場合にデフォルトのaccessmodeになります。mapped- ソースがハイパーバイザーの権限でアクセスされることを指定します。squash-'passthrough'に似ていますが、例外は、chownのような権限による操作の失敗が無視されることです。これにより、ハイパーバイザーを root 以外で実行するユーザーにとって、passthrough のようなモードを使いやすいものとします。
source- ゲスト仮想マシンでアクセスされるホスト物理マシン上のリソースを指定します。name属性は、<type='template'>と共に使用され、dir属性は<type='mount'>と共に使用される必要があります。usage属性は、メモリーを KB 単位で設定するために<type='ram'>と共に使用する必要があります。target- ゲスト仮想マシン内のどこでソースドライバーがアクセスできるかを決定します。大半のドライバーの場合、これは自動的なマウントポイントになりますが、KVM の場合、これは、マウントする場所のヒントとしてゲスト仮想マシンにエクスポートされる任意の文字列タグでしかありません。readonly- ゲスト仮想マシンの読み取り専用マウントとしてファイルシステムのエクスポートを有効にします。デフォルトでは、read-writeアクセスが指定されます。space_hard_limit- このゲスト仮想マシンのファイルシステムに利用可能な最大領域を指定します。space_soft_limit- このゲスト仮想マシンのファイルシステムで利用できる最大領域を指定します。コンテナーは、猶予期間についてのソフト制限を超えることが許可されます。その後にハード制限が施行されます。
24.18.3. デバイスアドレス
<address> サブ要素があります。アドレス (またはアドレス内のオプション属性) が入力で省略される場合、libvirt は適切なアドレスを生成しますが、レイアウトにより多くの制御が必要な場合は明示的なアドレスが必要になります。address 要素を含むデバイス例について、以下を参照してください。
type があります。指定されるデバイスに使用するアドレスを選択することは、デバイスおよびゲスト仮想マシンのアーキテクチャーによって部分的に制限されます。たとえば、ディスクデバイスは type='disk' を使用し、コンソールデバイスは、i686 または x86_64 ゲスト仮想マシンで type='pci' を使用するか、または PowerPC64 pseries ゲスト仮想マシンで type='spapr-vio' を使用します。各アドレスの <type> には、デバイスが置かれるバス上の場所を制御するオプション属性があります。追加属性は以下のようになります。
type='pci'- PCI アドレスには以下のような追加属性があります。domain(2 バイトの 16 進整数。KVM によって現在使用されていません)bus(0 から 0xfff までの 16 進値)slot(0x0 から 0x1ff までの 16 進値)function(0 から 7 までの値)- さらに、
multifunction属性も利用できます。これは、PCI コントロールレジスターの特定のスロット/機能のマルチファンクションビットをオンにするよう制御します。この multifunction 属性は、デフォルトで'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 によって許可されています。追加属性: reg (開始レジスターの 16 進値のアドレス) をこの属性に割り当てることができます。
24.18.4. コントローラー
<controller> 要素を指定する必要がある場合があります。
...
<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>
...図24.38 コントローラー要素
"ide"、"fdc"、"scsi"、"sata"、 "usb"、"ccid"、または "virtio-serial" のいずれかにする必要のある必須属性 type、および バスコントローラーが (address 要素のコントローラー属性で使用されるために) 表示される順序を記述する10 進整数である、必須属性の index があります。"virtio-serial" コントローラーには、コントローラーで接続できるデバイスの数を制御する、2 つの追加のオプション属性である ports と vectors があります。
<controller type='scsi'> には、以下のいずれかになるオプション属性 model があります。"auto", "buslogic", "ibmvscsi", "lsilogic", "lsias1068", "virtio-scsi または "vmpvscsi"。<controller type='scsi'> には、指定されるキューの数に対してマルチキューサポートを有効にする属性 num_queues があります。さらに、ioeventfd 属性を使用することもできます。これはコントローラーが SCSI ディスクで非同期処理を使用するかどうかを指定します。受け入れ可能な値は "on" および "off" です。
"usb" コントローラーには、以下のいずれかになるオプション属性の model があります。"piix3-uhci", "piix4-uhci", "ehci", "ich9-ehci1", "ich9-uhci1", "ich9-uhci2", "ich9-uhci3", "vt82c686b-uhci", "pci-ohci" または "nec-xhci"。さらに、USB バスがゲスト仮想マシンに対して明示的に無効にされる必要がある場合、model='none' を使用できます。PowerPC64 "spapr-vio" アドレスには、関連付けられたコントローラーがありません。
address は、上記で指定される形式を使って、コントローラーのマスターバスとの正確な関係を指定できます。
master があります。コンパニオンコントローラーは、そのマスターと同じバス上にあるため、コンパニオンのインデックス値も等しくなければなりません。
...
<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>
...図24.39 デバイス - コントローラー - USB
24.18.5. デバイスのリース
...
<devices>
...
<lease>
<lockspace>somearea</lockspace>
<key>somekey</key>
<target path='/some/lease/path' offset='1024'/>
</lease>
...
</devices>
...図24.40 デバイス - デバイスのリース
lease セクションには、以下の引数を含めることができます。
lockspace- キーが保持される lockspace を特定する任意の文字列です。ロックマネージャーは、lockspace 名の形式または長さに追加の制限を設定できます。key- 取得されるリースを一意的に識別する任意の文字列です。ロックマネージャーは、キーの形式または長さに対して追加の制限を設定することができます。target- lockspace に関連付けられたファイルの完全修飾パスです。オフセットは、ファイル内のどこにリースが格納されるかを指定します。ロックマネージャーがオフセットを必要としない場合、この値を0に設定します。
24.18.6. ホスト物理マシンのデバイス割り当て
24.18.6.1. USB / PCI デバイス
hostdev 要素を使用してゲスト仮想マシンに渡すことができます。ドメイン XML ファイルの以下のセクションが設定されます。
...
<devices>
<hostdev mode='subsystem' type='usb'>
<source startupPolicy='optional'>
<vendor id='0x1234'/>
<product id='0xbeef'/>
</source>
<boot order='2'/>
</hostdev>
</devices>
...図24.41 デバイス - ホスト物理マシンのデバイス割り当て
...
<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>
...図24.42 デバイス - ホスト物理マシン割り当ての代替
...
<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>
..
図24.43 デバイス - ホスト物理マシン scsi デバイス割り当て
表24.16 ホスト物理マシンデバイス割り当て要素
| パラメーター | 説明 |
|---|---|
hostdev |
これは、ホスト物理マシンデバイスについて説明するための主な要素です。これは以下のオプションを受け入れます。
|
source | ホスト物理マシンから表示されるデバイスについて説明します。USB デバイスは、vendor および product 要素を使用してベンダー/製品 ID によって処理されるか、または address 要素を使用してホスト物理マシン上のデバイスのアドレスによって処理されます。他方、PCI デバイスは、それらのアドレスによってのみ記述されます。USB デバイスのソース要素には、指定のホスト物理マシンの USB デバイスが見つからなかった場合の処理についてのルールを定義するために使用できる startupPolicy 属性が含まれる可能性があります。この属性は、以下の値を受け入れます。
|
vendor, product | これらの要素のそれぞれには、USB ベンダーおよび製品 ID を指定する id 属性があります。ID は、10 進数、16 進数 (0x で開始) または 8 進数 (0 で開始) の形式で指定できます。 |
boot | デバイスが起動可能であることを指定します。この属性の順序は、ブートシーケンス時にデバイスが試行される順序を決定します。デバイスごとの boot 要素は、BIOS ブートローダーセクションの一般的な boot 要素と共に使用することができません。 |
rom | PCI デバイスの ROM がゲスト仮想マシンに提示される方法を変更するために使用されます。オプションの bar 属性は、on または off に設定でき、デバイスの ROM がゲスト仮想マシンのメモリーマップに表示されるかどうかを決定します (PCI 資料によると、rombar 設定は、ROM の Base Address Register の表示を制御します)。rom bar が指定されない場合、デフォルト設定が使用されます。オプションの file 属性は、デバイスの ROM BIOS としてゲスト仮想マシンに提示されるバイナリーファイルをポイントするために使用されます。これは、たとえば SR-IOV 対応のイーサネットデバイス (VF のブート ROM を持たない) の仮想機能用に PXE ブート ROM を提供するのに便利です。 |
address | さらに、デバイスが表示されるホスト物理マシン上のUSB バスとデバイス番号を指定するための bus および device 属性があります。これらの属性の値は、10 進数、16 進数 (0x で開始) または 8 進数 (0 で開始) の形式で指定できます。PCI デバイスの場合、要素には 3 つの属性が含まれ、デバイスを lspci または virsh nodedev-list で検索できるように指定することができます。 |
24.18.6.2. ブロック / キャラクターデバイス
hostdev 要素を変更することで、ゲスト仮想マシンに渡すことができます。これは、コンテナーベースの仮想化の場合にのみ可能であることに注意してください。
...
<hostdev mode='capabilities' type='storage'>
<source>
<block>/dev/sdf1</block>
</source>
</hostdev>
...
図24.44 デバイス - ホスト物理マシンデバイス割り当てブロックキャラクターデバイス
...
<hostdev mode='capabilities' type='misc'>
<source>
<char>/dev/input/event3</char>
</source>
</hostdev>
...
図24.45 デバイス - ホスト物理マシンデバイス割り当てブロックキャラクターデバイスの代替法 1
...
<hostdev mode='capabilities' type='net'>
<source>
<interface>eth0</interface>
</source>
</hostdev>
...
図24.46 デバイス - ホスト物理マシンデバイス割り当てブロックキャラクターデバイスの代替法 2
表24.17 ブロック / キャラクターデバイス要素
| パラメーター | 説明 |
|---|---|
hostdev | これは、ホスト物理マシンデバイスを記述するためのメインコンテナーです。ブロック/キャラクターデバイスのパススルーの場合 mode は常に capabilities で、ブロックデバイスの場合 type は block で、キャラクターデバイスの場合 char になります。 |
source | これは、ホスト物理マシンから表示されるデバイスについて記述します。ブロックデバイスの場合、ホスト物理マシン OS のブロックデバイスへのパスは、ネスト化された block 要素に指定され、キャラクターデバイスの場合は、char 要素が使用されます。 |
24.18.7. リダイレクトされるデバイス
...
<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>
...図24.47 デバイス - リダイレクトされるデバイス
表24.18 リダイレクトされるデバイス要素
| パラメーター | 説明 |
|---|---|
redirdev | これは、リダイレクトされるデバイスを記述するためのメインコンテナーです。bus は、USB デバイスの場合は usb にする必要があります。トンネルのホスト物理マシン側を記述するには、サポートされるシリアルデバイスの 1 つの一致する追加属性タイプが必要になります。それらの典型例は、type='tcp' または type='spicevmc' (SPICE グラフィックスデバイスの usbredir チャネルを使用) です。redirdev 要素にはオプションのサブ要素 address があり、これは、デバイスを特定のコントローラーに関連付けます。さらに、source などのサブ要素が、指定される type に基づいて必要になる場合があります。ただし、target サブ要素は不要です (キャラクターデバイスのコンシューマーが、ゲスト仮想マシンに表示されるデバイスではなく、ハイパーバイザー自体であるため)。 |
boot | デバイスが起動可能であることを指定します。order 属性は、ブートシーケンス時にデバイスが試行される順序を決定します。デバイスごとの boot 要素は、BIOS ブートローダーセクションの一般的な boot 要素と共に使用することができません。 |
redirfilter | これは、特定のデバイスをリダイレクトからフィルター処理するためのフィルタールールを作成するために使用されます。これは、各フィルタールールを定義するためにサブ要素 usbdev を使用します。class 属性は USB クラスコードです。 |
24.18.8. スマートカードデバイス
smartcard 要素からゲスト仮想マシンに提供されます。ホスト物理マシン上の USB スマートカードリーダーデバイスは、ホスト物理マシンとゲスト仮想マシンの両方で使用できず、ゲスト仮想マシンから削除されるとホスト物理マシンのコンピューターをロックすることから、単純なデバイスパススルーではゲスト仮想マシンで使用することができません。したがって、一部のハイパーバイザーは、ゲスト仮想マシンにスマートカードインターフェースを提供できる特殊な仮想デバイスを提供します。その際、資格情報がホスト物理マシン、またはサードパーティーのスマートカードプロバイダーに対して作成されたチャネルからどのように取得されるかを記述するために複数のモードが使用されます。
...
<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>
...図24.48 デバイス - スマートカードデバイス
smartcard 要素には、必須属性の mode があります。それぞれのモードでは、ゲスト仮想マシンには、物理 USB CCID (Chip/Smart Card Interface Device) カードのように動作する USB バス上にデバイスが表示されます。
表24.19 スマートカードの mode 要素
| パラメーター | 説明 |
|---|---|
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' | このモードを使用することにより、すべての要求を 2 次的なキャラクターデバイスを経由してサードパーティープロバイダーにトンネル化できます (これにより、ハイパーバイザーがホスト物理マシンと直接通信するのではなく、スマートカードと通信するか、または 3 つの認証ファイルを使用します。この操作モードでは、対応するシリアルデバイスタイプのいずれかに一致する追加属性の type が、トンネルのホスト物理マシン側を記述するために必要になります。type='tcp' または type='spicevmc' (SPICE グラフィックスデバイスのスマートカードチャネルを使用) などが一般的な例になります。さらに、source などのサブ要素は、指定されるタイプに応じて必要になります。ただし、target サブ要素は不要です (キャラクターデバイスのコンシューマーがゲスト仮想マシン内に表示されるデバイスではなく、ハイパーバイザー自体であるため)。 |
address をサポートします。これは、スマートカードと ccid バスコントローラー間の相関関係を微調整します。詳細は、「デバイスアドレス」 を参照してください。
24.18.9. ネットワークインターフェース
...
<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>
...図24.49 デバイス - ネットワークインターフェース
"direct": ゲスト仮想マシンの NIC をホスト物理マシンの物理 NIC に割り当てます。詳細および具体例については、「物理インターフェースへの直接割り当て」 を参照してください。"network": これは動的またはワイヤレスのネットワーク設定を持つホスト物理マシン上の一般的なゲスト仮想マシンの接続に推奨される設定です。詳細および具体例については、「仮想ネットワーク」 を参照してください。"bridge"- これは静的な有線ネットワーク設定を持つホスト物理マシン上の一般的なゲスト仮想マシンの接続に推奨される設定です。詳細は、「LAN のブリッジ」 を参照してください。"ethernet": ゲスト仮想マシンのネットワークを LAN に接続するために任意のスクリプトを実行する手段を管理者に提供します。詳細および具体例については、「汎用イーサネット接続」 を参照してください。"hostdev": PCI ネットワークデバイスが汎用デバイスパススルーを使用してゲスト仮想マシンに直接割り当てられるようにします。詳細および具体例については、「PCI パススルー」 を参照してください。"mcast": 仮想ネットワークを表すためにマルチキャストグループを使用できます。詳細および具体例については、「マルチキャストトンネル」 を参照してください。"user": user オプションを使用すると、外部への NAT が指定された仮想 LAN を提供するユーザー領域 SLIRP スタックパラメーターが設定されます。詳細および具体例については、「ユーザー領域 SLIRP スタック」 を参照してください。"server": サーバーオプションを使用して、仮想ネットワークを提供するための TCP クライアントサーバーアーキテクチャーを作成します。この仮想ネットワークでは、1 台のゲスト仮想マシンがネットワークのサーバーエンドを提供し、その他すべてのゲスト仮想マシンはクライアントとして設定されます。詳細および具体例については、「TCP トンネル」 を参照してください。
<interface> 要素は、ホスト物理マシンがゲスト仮想マシンから受信されるレポートを検出し、信頼することを可能にするオプションの <trustGuestRxFilters> 属性で定義できます。これらのレポートは、インターフェースがフィルターへの変更を受信するたびに送信されます。これには、プライマリー MAC アドレス、デバイスアドレスフィルター、または vlan 設定への変更が含まれます。<trustGuestRxFilters> 属性は、セキュリティー上の理由によりデフォルトで無効にされます。また、この属性のサポートは、ホスト物理マシンの接続タイプと共にゲストネットワークデバイスモデルによって異なることに注意してください。現時点では、これはホスト物理マシンの virtio デバイスモデルおよび macvtap 接続にのみサポートされています。オプションパラメーター <trustGuestRxFilters> を設定することが推奨される単純なケースには、ゲスト仮想マシンに対してホスト物理マシンのフィルターを制御する権限を付与する必要がある場合があります。この設定により、ゲスト仮想マシンのフィルターがホストでミラー化されるためです。
<interface> 要素は、属性 type='pci' でインターフェースを特定の PCI スロットに関連付けるオプションの <address> サブ要素を取ります。詳細は、「デバイスアドレス」 を参照してください。
24.18.9.1. 仮想ネットワーク
<network> 定義に別個に記載される複数ホスト物理マシン環境) について推奨される設定です。さらに、これは、名前付きネットワーク定義によって詳述される接続を提供します。仮想ネットワークの forward mode 設定に応じて、ネットワークは完全に分離するか (<forward> 要素の指定なし)、明示的なネットワークデバイスまたはデフォルトルートに対して NAT を実行するか (forward mode='nat')、NAT なしで経路指定されるか (forward mode='route'/)、またはホスト物理マシンのネットワークインターフェースのいずれかに接続されるか (macvtap 経由)、またはブリッジデバイスに接続されます (forward mode=' bridge|private|vepa|passthrough'/)。
ブリッジ、プライベート、vepa、およびパススルー の forward モードが指定されたネットワークの場合、ホスト物理マシンの必要な DNS および DHCP サービスが libvirt 外にすでにセットアップされていることが想定されます。分離 (isolated)、nat および経路指定されるネットワークの場合、DHCP および DNS は、libvirt によって仮想ネットワーク上で提供され、IP 範囲は、virsh net-dumpxml [networkname] により仮想ネットワーク設定を検査して決定できます。デフォルトのルートに接続するために 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) スイッチまたは Open vSwitch 仮想スイッチに設定データが転送されることがあります。
<network> の設定によって変わる場合があるため、<virtualport type>属性を省略することができます。<virtualport type> は 1 回または複数回指定する必要があります。ドメインの起動時に、完全な <virtualport> 要素が、定義されるタイプと属性をマージして構成されます。これにより、仮想ポートが新たに構成されます。下位の仮想ポートからの属性は、上位の仮想ポートで定義された属性を変更することができないことに注意してください。インターフェースの優先順位が最も高くなり、ポートグループの優先順位が最も低くなります。
profileid および interfaceid の両方を指定する必要があります。さらに、managerid、typeid、または profileid などの、仮想ポートから入力される他の属性はオプションになります。
...
<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>
...図24.50 デバイス - ネットワークインターフェース- 仮想ネットワーク
24.18.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 つはオプションの profileid であり、これはインターフェース <port-profile> として Open vSwitch に送信されます。LAN 設定へのブリッジを設定するには、管理ツールを使用してドメイン XML の以下の部分を設定します。
...
<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>図24.51 デバイス - ネットワークインターフェース- LAN のデバイス
24.18.9.3. ポートのマスカレード範囲の設定
<forward mode='nat'> <address start='1.2.3.4' end='1.2.3.10'/> </forward> ...
図24.52 ポートのマスカレード範囲
iptables コマンドを使って設定される必要があります。
24.18.9.4. ユーザー領域 SLIRP スタック
...
<devices>
<interface type='user'/>
...
<interface type='user'>
<mac address="00:11:22:33:44:55"/>
</interface>
</devices>
...図24.53 デバイス - ネットワークインターフェース- ユーザー領域 SLIRP スタック
24.18.9.5. 汎用イーサネット接続
vnetN という名前で作成される <tun> デバイスがあります。これは、<target> 要素で上書きすることができます。tun デバイスを作成した後に、シェルスクリプトが実行され、ホスト物理マシンのネットワーク統合に必要なすべてのことを実行することが予期されます。デフォルトでは、このスクリプトは /etc/kvm-ifup と呼ばれますが、これを上書きすることができます (「ターゲット要素の上書き」を参照してください)。
...
<devices>
<interface type='ethernet'/>
...
<interface type='ethernet'>
<target dev='vnet7'/>
<script path='/etc/kvm-ifup-mynet'/>
</interface>
</devices>
...図24.54 デバイス - ネットワークインターフェース- 汎用イーサネット接続
24.18.9.6. 物理インターフェースへの直接割り当て
mode 属性値 vepa (「Virtual Ethernet Port Aggregator」)、bridge または private のいずれかは、macvtap デバイスの操作モードとして選択できます。デフォルトモードは vepa です。
...
<devices>
...
<interface type='direct'>
<source dev='eth0' mode='vepa'/>
</interface>
</devices>
...図24.55 デバイス - ネットワークインターフェース - 物理インターフェースへの直接割り当て
表24.20 物理インターフェース要素への直接割り当て
| 要素 | 説明 |
|---|---|
vepa | ゲスト仮想マシンのすべてのパケットは、外部ブリッジに送信されます。宛先がパケットの発信元と同じホスト物理マシン上にあるゲスト仮想マシンのパケットは、VEPA 対応ブリッジによって、ホスト物理マシンに送り戻されます (最近のブリッジは VEPA 対応でない場合が多い)。 |
bridge | 宛先が発信元と同じホスト物理マシン上にあるパケットは、ターゲットの macvtap デバイスに直接配信されます。直接配信されるようにするには、発信元および宛先デバイスの両方を bridge モードにする必要があります。これらのいずれかが vepa モードの場合は、VEPA 対応のブリッジが必要になります。 |
private | すべてのパケットは外部ブリッジに送信されます。それらが同じホスト物理マシンのターゲット VM に送信されるのは、それらが外部ルーターまたはゲートウェイ経由で送信され、そのデバイスがそれらをホスト物理マシンに送り戻す場合のみです。ソースまたは宛先デバイスのいずれかが private モードの場合に、この手順が実行されます。 |
passthrough | この機能は、SR-IOV 対応の NIC の仮想機能を、移行機能を失わずにゲスト仮想マシンに直接割り当てます。すべてのパケットは、設定されたネットワークデバイスの VF/IF に送信されます。デバイスの機能に応じて、追加の前提条件または制限が適用される場合があります。たとえば、これにはカーネル 2.6.38 以上が必要になります。 |
表24.21 物理インターフェースの追加要素への直接割り当て
| 要素 | 説明 |
|---|---|
managerid | VSI Manager ID は、VSI タイプおよびインスタンス定義を含むデータベースを特定します。これは、整数値で、値 0 は予約されています。 |
typeid | VSI Type ID で ネットワークアクセスの特性を示す VSI タイプを識別します。 VSI タイプは一般的にはネットワーク管理者によって管理されます。 整数の値になります。 |
typeidversion | VSI Type Version では VSI Type の複数のバージョンを許可します。 整数の値になります。 |
instanceid | VSI Instance ID 識別子は、VSI インスタンス (つまり、 仮想マシンの仮想インターフェース) の作成時に生成されます。これは、グローバルに固有な識別子です。 |
profileid | プロファイル ID には、 このインターフェースに適用されるポートプロファイル名が含まれます。 この名前は、 ポートプロファイルのデータベースによってポートプロファイルからネットワークパラメーターに解決され、 このネットワークパラメーターがこのインターフェースに適用されます。 |
...
<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>
...図24.56 デバイス - ネットワークインターフェース- 物理インターフェースの追加パラメーターへの直接割り当て
...
<devices>
...
<interface type='direct'>
<source dev='eth0' mode='private'/>
<virtualport type='802.1Qbh'>
<parameters profileid='finance'/>
</virtualport>
</interface>
</devices>
...図24.57 デバイス - ネットワークインターフェース- 物理インターフェースの追加パラメーターへの直接割り当て
profileid 属性には、このインターフェースに適用されるポートプロファイルの名前が含まれます。この名前はポートプロファイルのデータベースによって、ポートプロファイルからネットワークパラメーターに解決され、それらのネットワークパラメーターはこのインターフェースに適用されます。
24.18.9.7. PCI パススルー
source 要素で指定される) は、最初にオプションでデバイスの MAC アドレスを設定済みの値に設定し、オプションで指定した virtualport 要素を使用してデバイスを 802.1Qbh 対応のスイッチに関連付け (上記の仮想ポートの例にある type='direct' ネットワークデバイスを参照) た後に、汎用デバイスパススルーを使用してゲスト仮想マシンに直接割り当てます。標準の単一ポート PCI イーサネットカードドライバーの設計上の制限により、SR-IOV (単一 Root I/O 仮想化) 仮想化機能 (VF) デバイスのみについてこの方法で割り当てられることに注意してください。標準の単一ポート PCI または PCIe イーサネットカードをゲスト仮想マシンに割り当てるには、従来の hostdev デバイス定義を使用します。
hostdev デバイスの機能に非常に似ていることに注意してください。相違点は、このメソッドではパススルーデバイスの MAC アドレスと virtualport を指定することを許可する点です。これらの機能が不要な場合で、SR-IOV をサポートしない (そのため、ゲスト仮想マシンのドメインに割り当てられた後のリセット時に設定済みの MAC アドレスが失われる) 標準の単一ポート PCI、PCIe、または USB ネットワークを持つ場合や、0.9.11 より前の libvirt のバージョンを使用している場合、interface type='hostdev'/ ではなく、標準の hostdev 定義を使用してデバイスをゲスト仮想マシンに割り当てる必要があります。
...
<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>
...図24.58 デバイス - ネットワークインターフェース- PCI パススルー
24.18.9.8. マルチキャストトンネル
user mode linux ゲスト仮想マシンによって使用されるプロトコルと互換性もあります。マルチキャストトンネルは、管理ツールを使用して interface type を操作し、これを mcast に設定/変更し、さらに mac address および source address を指定することによって作成されます。
...
<devices>
<interface type='mcast'>
<mac address='52:54:00:6d:90:01'>
<source address='230.0.0.1' port='5558'/>
</interface>
</devices>
...図24.59 デバイス - ネットワークインターフェース- マルチキャストトンネル
24.18.9.9. TCP トンネル
interface type を操作し、これを mcast に設定/変更し、さらにmac address および source addressなどを指定して作成されます。
...
<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>
...図24.60 デバイス - ネットワークインターフェース- TCP トンネル
24.18.9.10. NIC ドライバー固有オプションの設定
driver サブ要素の属性として設定されます。これらのオプションは、管理ツールで ドメイン XML の以下のセクションを設定して設定されます。
<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>
...図24.61 デバイス - ネットワークインターフェース- NIC ドライバー固有オプションの設定
表24.22 virtio NIC ドライバー要素
| パラメーター | 説明 |
|---|---|
name | オプションの name 属性は、使用するバックエンドドライバーのタイプを強制します。値は、kvm (ユーザー空間バックエンド) または vhost (vhost モジュールをカーネルで指定するように要求するカーネルバックエンド) のいずれかになります。カーネルサポートなしに vhost ドライバーを要求する試みは拒否されます。vhost ドライバーが存在する場合、デフォルト設定は vhost ですが、存在しない場合はサイレントに kvm にフォールバックします。 |
txmode | 送信バッファーが一杯の場合に、パケット送信の処理方法を指定します。値は、iothread または timer のいずれかに設定できます。iothread に設定される場合、packet tx がドライバーの下半分の iothread ですべて実行されます (このオプションは、"tx=bh" を kvm コマンドラインの "-device" virtio-net-pci オプションに変換します)。timer に設定される場合、tx の作業は KVM で実行され、現行時間に送信できる以上の tx データがある場合、タイマーが KVM が他のタスクの実行に移行する前に設定されます。タイマーが切れると、さらに多くのデータを送信するための別の試行が行われます。通常、この値を変更しないことが推奨されています。 |
ioeventfd | インターフェースデバイスのドメイン I/O の非同期処理を設定します。デフォルトはハイパーバイザーに決定されます。許可される値は、on と off です。このオプションを有効にすると、別のスレッドが I/O を処理する間、KVM はゲスト仮想マシンを実行することができます。通常、I/O 時にシステム CPU の使用率が高くなるゲスト仮想マシンの場合に、この利点があります。他方、物理ホストマシンに過剰な負荷を与えると、ゲスト仮想マシンの I/O 待機時間も増えることになります。そのため、この値を変更することは推奨されません。 |
event_idx | event_idx 属性は、デバイスイベント処理の複数の側面を制御します。この値は on または off のいずれかにすることができます。on はデフォルトで、ゲスト仮想マシンの割り込みおよび終了の数を減らします。この動作が最適化されていない状況では、この属性はこの機能をオフに強制実行する方法を提供します。この値を変更することは推奨されません。 |
24.18.9.11. ターゲット要素の上書き
...
<devices>
<interface type='network'>
<source network='default'/>
<target dev='vnet1'/>
</interface>
</devices>
...図24.62 デバイス - ネットワークインターフェース- ターゲット要素の上書き
vnet または vifのいずれでも開始することができません。これらは libvirt と一部のハイパーバイザーで予約されるプレフィックスであるためです。これらのプレフィックスを使用して手動で指定されたターゲットは無視されます。
24.18.9.12. 起動順序の指定
...
<devices>
<interface type='network'>
<source network='default'/>
<target dev='vnet1'/>
<boot order='1'/>
</interface>
</devices>
...図24.63 起動順序の指定
24.18.9.13. インターフェース ROM BIOS 設定
...
<devices>
<interface type='network'>
<source network='default'/>
<target dev='vnet1'/>
<rom bar='on' file='/etc/fake/boot.bin'/>
</interface>
</devices>
...図24.64 インターフェース ROM BIOS 設定
bar 属性は on または off に設定することができ、デバイスの ROM がゲスト仮想マシンのメモリーマップに表示されるかどうかを決定します (PCI 資料によると、rom bar 設定は ROM の Base Address Register の提示を制御します)。rom bar が指定されない場合、KVM デフォルトが使用されます (古いバージョンの KVM はデフォルトの off を使用しましたが、新しい KVM ハイパーバイザーにはデフォルトの on が指定されます)。オプションの file 属性は、デバイスの ROM BIOS としてゲスト仮想マシンに提示されるバイナリーファイルをポイントするために使用されます。これは、ネットワークデバイスの代替ブート ROM を指定する際に便利です。
24.18.9.14. Quality of service (QoS)
bandwidth 要素には、最大で 1 つの着信、および最大で 1 つの発信の子要素を持たせることができます。これらの子のいずれかを省略すると、そのトラフィック方向に QoS が適用されなくなります。そのため、ドメインの着信トラフィックのみを設定する場合には、着信のみを使用し、逆の場合も同じようにします。
average (または下記の floor) があります。Average は、設定されるインターフェースの平均的なビットレートを指定します。次に、以下のような 2 つのオプション属性を持ちます。peak: この属性は、ブリッジが1 秒あたりキロバイト単位でデータを送信できる最大レートを指定します。この実装の制限としては、着信要素のこの属性は、Linux のイングレスフィルターがこれを認識しないため、無視される点にあります。burst はピークの速度でバーストできるバイト量を指定します。属性に使用できる値は整数です。
average および peak 属性の単位は 1 秒あたりキロバイトとなり、burst はキロバイト単位でのみ設定されます。さらに、着信トラフィックには、オプションで floor 属性を持たせることができます。これは、形成されるインターフェースの最小スループットを保証します。floor の使用には、すべてのトラフィックが、QoS による決定が行われる 1 つのポイントを経由することが必要になります。そのため、これは、interface type='network'/ に forward タイプの route、nat、または no forward が指定されている場合にのみ使用できます。仮想ネットワーク内で、すべての接続されたインターフェースには着信 QoS (少なくとも average) が設定される必要があるものの、floor 属性には average を指定する必要がないことに注意する必要があります。ただし、 peak および burst 属性には依然として average が必要です。現在、ingress qdiscs にはいずれのクラスも設定できないため、floor は発信トラフィックではなく、着信にのみ適用できます。
...
<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>
...図24.65 QoS (Quality of Service)
24.18.9.15. 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>
...
図24.66 VLAN タグの設定 (サポートされるネットワークタイプでのみ)
vlan 要素は、ゲスト仮想マシンのネットワークトラフィックに適用される 1 つ以上の VLAN タグを指定できます。OpenvSwitch および type='hostdev' SR-IOV インターフェースのみがゲスト仮想マシンの透過的な VLAN タグに対応します。標準的な Linux ブリッジおよび libvirt の独自ネットワークを含む他のインターフェースはこれに対応しません。802.1Qbh (vn-link) および 802.1Qbg (VEPA) スイッチは独自のメソッド (libvirt 外) を提供し、ゲスト仮想マシントラフィックを特定の VLAN にタグ付けします。複数タグの指定を許可する場合 (VLAN とランキングの場合)、tag サブ要素は使用する VLAN タグを指定します (例: tag id='42'/)。インターフェースに複数の vlan 要素が定義されている場合、ユーザーは指定されるすべてのタグを使用して VLAN トランキングの実行を必要としていることが想定されます。単一タグを持つ VLAN トランキングが必要な場合、オプションの属性 trunk='yes' を上位の vlan 要素に追加することができます。
24.18.9.16. 仮想リンク状態の変更
state に使用できる値は、up および down です。down が値として指定される場合、インターフェースは、ネットワークケーブルが切断されているかのように動作します。この要素が指定されていない場合のデフォルト動作では、リンク状態が up になります。
...
<devices>
<interface type='network'>
<source network='default'/>
<target dev='vnet0'/>
<link state='down'/>
</interface>
<devices>
...図24.67 仮想リンク状態の変更
24.18.10. 入力デバイス
...
<devices>
<input type='mouse' bus='usb'/>
</devices>
...
図24.68 入力デバイス
<input> 要素には、必須属性の type があります。この属性は mouse または tablet に設定できます。mouse は相対的なカーソル移動を使用するのに対し、tablet は絶対的なカーソル移動を提供します。オプションの bus 属性は、正確なデバイスタイプを詳細化するために使用し、kvm (準仮想化)、ps2、および usb に設定できます。
<address> があります。
24.18.11. ハブデバイス
...
<devices>
<hub type='usb'/>
</devices>
...図24.69 ハブデバイス
hub 要素には 1 つの必須属性があり、type は usb のみに設定できます。hub 要素にはオプションのサブ要素 address があり、これにはデバイスを特定のコントローラーに関連付けることのできる type='usb' が付きます。
24.18.12. グラフィカルフレームバッファー
...
<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>
...図24.70 グラフィカルフレームバッファー
graphics 要素には、必須の type 属性があります。これは、以下に説明するように、値の sdl、vnc、rdp、desktop または spice を取ります。
表24.23 グラフィカルフレームバッファーの主要な要素
| パラメーター | 説明 |
|---|---|
sdl | これは、ホスト物理マシンデスクトップのウィンドウを表示します。また、以下のオプションの引数を受け入れます。
|
vnc | VNC サーバーを起動します。
|
spice | SPICE サーバーを起動します。
|
channel 要素をメイン graphics 要素内に追加することによって実行されます。有効なチャネル名には、main、display、inputs、cursor、playback、record、smartcard、および usbredir があります。
<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>図24.71 SPICE 設定の例
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 のいずれかに設定されます。いずれのモードも指定されない場合、KVM のデフォルトが使用されます (client モード)。
表24.24 追加のグラフィカルフレームバッファー要素
| パラメーター | 説明 |
|---|---|
rdp | RDP サーバーを起動します。
|
desktop | この値は、現在 VirtualBox ドメイン用に保持されます。これは sdl と同様にホスト物理マシンのデスクトップ上にウィンドウを表示しますが、VirtualBox ビューアーを使用します。sdl の場合と同様に、これはオプションの属性の display および fullscreen を受け入れます。 |
listen | グラフィックスタイプのvnc および spice 用にリッスンするソケットをセットアップするために使用されるアドレス情報を入れる代わりに、listen 属性という graphics のサブ要素を指定できます (上記の例を参照)。listen は以下の属性を受け入れます。
|
24.18.13. ビデオデバイス
...
<devices>
<video>
<model type='vga' vram='8192' heads='1'>
<acceleration accel3d='yes' accel2d='yes'/>
</model>
</video>
</devices>
...図24.72 ビデオデバイス
graphics 要素には必須の type 属性があり、これは、以下に説明するように値 "sdl"、"vnc"、"rdp" または "desktop" を取ります。
表24.25 グラフィカルフレームバッファー要素
| パラメーター | 説明 |
|---|---|
video | video 要素は、ビデオデバイスを記述するためのコンテナーです。下位互換性のために video が設定されていないものの、ドメイン XML に graphics 要素がある場合に、libvirt はゲスト仮想マシンタイプに基づいてデフォルトの video を追加します。"ram" または "vram" が指定されていない場合、デフォルト値が使用されます。 |
model | これには必須の type 属性があり、この属性は利用可能なハイパーバイザー機能に応じて、値の vga、cirrus, vmvga、kvm、vbox、または qxl を取ります。さらに、ビデオメモリーの容量は、ヘッドと共に vram および図の番号を使用してキビバイト単位 (1024 バイトのブロック) で指定できます。 |
| acceleration | aceleration がサポートされる場合、acceleration 要素で accel3d と accel2d 属性を使用してこれを有効にする必要があります。 |
address | オプションの address サブ要素は、ビデオデバイスを特定の PCI スロットに関連付けるために使用することができます。 |
24.18.14. コンソール、シリアル、およびチャネルデバイス
...
<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>
...図24.73 コンソール、シリアル、およびチャネルデバイス
serial, console, channel) は、ゲスト仮想マシンにデバイスがどのように提示されるかを記述します。ゲスト仮想マシンのインターフェースは、target 要素によって設定されます。ホスト物理マシンに提示されるインターフェースは、トップレベル要素の type 属性で指定されます。ホスト物理マシンのインターフェースは、source 要素によって設定されます。source 要素には、ソケットパスでラベルが実行される方法を上書きするためのオプションの seclabel が含まれます。この要素がない場合、セキュリティーラベルはドメインごとの設定から継承されます。それぞれのキャラクターデバイス要素には、オプションのサブ要素 address が含まれ、これはデバイスを特定のコントローラーまたは PCI スロットに関連付けることができます。
注記
isa-parallel デバイスはサポート対象外になりました。
24.18.15. ゲスト仮想マシンのインターフェース
...
<devices>
<serial type='pty'>
<source path='/dev/pts/3'/>
<target port='0'/>
</serial>
</devices>
...図24.74 ゲスト仮想マシンインターフェースのシリアルポート
<target> には、port 属性を持たせることができます。これはポート番号を指定します。ポートは 0 から始まる番号を付けることができます。通常は、0、1 または 2 のシリアルポートがあります。さらに、オプションの type 属性があり、これは、値を選択するのに isa-serial と usb-serial の 2 つのオプションがあります。type がない場合、isa-serial がデフォルトで使用されます。usb-serial の場合、オプションのサブ要素 <address> と type='usb' は、上記のようにデバイスを特定のコントローラーに関連付けることができます。
<console> 要素は、インタラクティブなコンソールを表示するために使用されます。使用されるゲスト仮想マシンのタイプによって、また以下のルールに応じて、コンソールは準仮想化デバイスであるか、またはシリアルデバイスのクローンになる可能性があります。
targetType属性が設定されていない場合、デフォルトデバイスのtypeはハイパーバイザーのルールに基づきます。デフォルトのtypeは、libvirt にフィードされる XML を再度照会する際に追加されます。完全仮想化ゲスト仮想マシンの場合、デフォルトのデバイスタイプは通常シリアルタイプになります。targetType属性がserialの場合で、<serial>要素が存在しない場合、console 要素は<serial>要素にコピーされます。<serial>要素がすでに存在する場合、console 要素は無視されます。targetType属性がserialではない場合、それは通常の方法で処理されます。- 最初の
<console>要素のみが、serialのtargetTypeを使用できます。2 番目のコンソールはすべて準仮想化する必要があります。 - s390 では、console 要素は、
sclpまたはsclplm(ラインモード) のtargetTypeを使用できます。SCLP は s390 のネイティブのコンソールタイプです。SCLP コンソールに関連付けられたコントローラーはありません。
/dev/hvc[0-7] としてゲスト仮想マシン内で公開されています (詳細は、Fedora プロジェクトの virtio-serial ページ を参照してください)。
...
<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>
...図24.75 ゲスト仮想マシンインターフェース - virtio コンソールデバイス
<target> 要素には、シリアルポートの場合と同じ属性があります。通常、1 つのコンソールのみが存在します。
24.18.16. チャネル
...
<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>
...図24.76 チャネル
<channel> の特定のタイプは <target> 要素の type 属性で指定されます。異なるチャネルタイプには、以下のようにそれぞれ異なるターゲット属性があります。
guestfwd- 指定された IP アドレスに対してゲスト仮想マシンにより送信される TCP トラフィックを決定し、ポートはホスト物理マシン上のチャネルデバイスに転送されます。target要素には、address と port 属性があります。virtio- 準仮想化された virtio チャネルです。<channel>は、ゲスト仮想マシンの/dev/vport*の下に公開され、オプション要素のnameが指定される場合は/dev/virtio-ports/$nameに表示されます (詳細は、Fedora プロジェクトの virtio-serial ページ を参照してください)。オプション要素のaddressは、上記のように、チャネルを特定のtype='virtio-serial'コントローラーに関連付けます。KVM では、名前が "org.kvm.guest_agent.0" の場合、libvirt は、ゲスト仮想マシンのシャットダウンやファイルシステムの休止などのアクションのために、ゲスト仮想マシンにインストールされたゲストエージェントと対話することができます。spicevmc- 準仮想化された SPICE チャンネルです。ドメインには、グラフィックスデバイスとしての SPICE サーバーも必要です。ここで、ホスト物理マシンは、メインチャンネル間のメッセージをピギーバッキングできます。target要素は、属性type='virtio';と共に指定される必要があり、オプション属性nameはゲスト仮想マシンがチャンネルにアクセスする方法を制御し、デフォルトでname='com.redhat.spice.0'に設定されます。オプションの<address>要素は、チャンネルを特定のtype='virtio-serial'コントローラーに関連付けることができます。
24.18.17. ホスト物理マシンインターフェース
表24.26 キャラクターデバイス要素
| パラメーター | 説明 | XML スニペット |
|---|---|---|
| Domain logfile | キャラクターデバイスのすべての入力を無効にし、出力を仮想マシンのログファイルに送信します。 |
|
| Device logfile | ファイルが開かれ、キャラクターデバイスに送信されたすべてのデータがファイルに書き込まれます。宛先ディレクトリーには、正常に起動するために、この設定を持つゲストの virt_log_t SELinux ラベルがなければなないことに注意してください。 |
|
| Virtual console | キャラクターデバイスを仮想コンソールのグラフィカルフレームバッファーに接続します。通常、これは "ctrl+alt+3" などの特殊ホットキーシーケンスでアクセスされます。 |
|
| Null device | キャラクターデバイスを void に接続します。データは入力に提供されません。書き込まれたすべてのデータは破棄されます。 |
|
| Pseudo TTY | Pseudo TTY は、/dev/ptmx を使用して割り当てられます。virsh console などの適切なプロキシーは、シリアルポートとローカルに対話することができます。 |
|
| NB Special case | NB Special case。<console type='pty'> の場合に、TTY パスも、トップレベルの <console> タグ上の属性 tty='/dev/pts/3' として複製されます。これは、<console> タグの既存の構文との互換性を提供します。 | |
| Host physical machine device proxy | キャラクターデバイスは、基礎となる物理キャラクターデバイスに渡されます。デバイスタイプ、たとえば、エミュレートされたシリアルポートは、ホスト物理マシンのシリアルポートにのみ接続される必要があり、シリアルポートはパラレルポートに接続しないでください。 |
|
| Named pipe | キャラクターデバイスは出力を名前付きパイプに書き込みます。詳細は、pipe(7) man ページを参照してください。 |
|
| TCP client-server | キャラクターデバイスは、リモートサーバーに接続する TCP クライアントとして機能します。 |
または、クライアント接続を待機する TCP サーバーとして機能します。
または、raw TCP の代わりに telnet を使用することができます。さらに telnets (secure telnet) および tls を使用することもできます。
|
| UDP network console | キャラクターデバイスは、UDP ネットコントロールサービスとして機能し、パケットの送受信を行います。これはロスの多いサービスです。 |
|
| UNIX domain socket client-server | キャラクターデバイスは、UNIX ドメインソケットサーバーとして機能し、ローカルクライアントからの接続を受け入れます。 |
|
24.18.18. サウンドデバイス
...
<devices>
<sound model='ac97'/>
</devices>
...図24.77 仮想サウンドカード
sound 要素には、必須属性の model があります。これは、エミュレートする実際のサウンドデバイスを指定します。有効な値は、典型的なオプションとして 'sb16'、'ac97'、および 'ich6' がありますが、基礎となるハイパーバイザーに特有のものとなります。さらに、'ich6' モデルを持つ sound 要素は、オーディオデバイスに各種の音声コーデックを割り当てるためのオプションのサブ要素 codec を持たせることができます。指定されない場合、デフォルトのコーデックが、再生や録音を可能にするために割り当てられます。有効な値は、'duplex' (line-in および line-out を提供) および 'micro' (speaker および microphone を提供) です。
...
<devices>
<sound model='ich6'>
<codec type='micro'/>
<sound/>
</devices>
...図24.78 サウンドデバイス
<address> があり、これは、上記のようにデバイスを特定の PCI スロットに関連付けることができます。
注記
24.18.19. ウォッチドッグデバイス
<watchdog> 要素でゲスト仮想マシンに追加できます。ウォッチドッグデバイスは、ゲスト仮想マシン内に追加のドライバーおよび管理デーモンを必要とします。現在、ウォッチドッグが実行された場合の通知サポートはありません。
...
<devices>
<watchdog model='i6300esb'/>
</devices>
...
...
<devices>
<watchdog model='i6300esb' action='poweroff'/>
</devices>
...図24.79 ウォッチドッグデバイス
model- 必須のmodel属性は、エミュレートする実際のウォッチドッグを指定します。有効な値は、基礎となるハイパーバイザーに固有です。model属性は以下の値を取ることができます。i6300esb— 推奨されるデバイスです。PCI Intel 6300ESB をエミュレートします。ib700— ISA iBase IB700 をエミュレートします。
action- オプションのaction属性は、ウォッチドッグの有効期限が切れると取られるアクションについて記述します。有効な値は基礎となるハイパーバイザーに固有です。action属性には、以下の値を使用することができます。reset— デフォルト設定です。ゲスト仮想マシンを強制的にリセットします。shutdown— ゲスト仮想マシンを正常にシャットダウンします (推奨されません)poweroff— ゲスト仮想マシンの電源を強制的にオフにします。pause— ゲスト仮想マシンを一時停止します。none— 何も実行しません。dump— ゲスト仮想マシンを自動的にダンプします。
24.18.20. パニックデバイスの設定
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 についての詳細は、関連のナレッジベースアーティクル を参照してください。
24.18.21. メモリーバルーンデバイス
<memballoon> 要素として表示されます。これは、適切な場合に自動的に追加されるので、特定の PCI スロットを割り当てる必要がない限り、この要素をゲスト仮想マシン XML に明示的に設定する必要はありません。<memballoon> デバイスを明示的に無効にする必要がある場合は、model='none' を使用することができます。
...
<devices>
<memballoon model='virtio'/>
</devices>
...図24.80 メモリーバルーンデバイス
...
<devices>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</memballoon>
</devices>
...図24.81 手動で追加されたメモリーバルーンデバイス
model 属性は、提供されるバルーンデバイスのタイプを指定します。仮想化プラットフォームに有効な値は以下の通りです。KVM ハイパーバイザーの場合は、'virtio' がデフォルト設定になります。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.