23.17. デバイス
<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
引数を許可します。
... <devices> <emulator>/usr/libexec/qemu-kvm</emulator> </devices> ...
図23.26 デバイス - 子要素
<emulator>
要素のコンテンツは、デバイスモデルエミュレーターのバイナリーへの完全修飾パスを指定します。この capabilities XML は、それぞれの特定ドメインタイプ、またはアーキテクチャーの組み合わせに対して使用するための推奨されるデフォルトエミュレーターを指定します。
23.17.1. ハードドライブ、フロッピーディスク、CD-ROM
<disk>
要素でフロッピーディスク、ハードディスク、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.27 デバイス - ハードドライブ、フロッピーディスク、CD-ROM サンプル 1
<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.28 デバイス - ハードドライブ、フロッピーディスク、CD-ROM サンプル 2
<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.29 デバイス - ハードドライブ、フロッピーディスク、CD-ROM サンプル 3
<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.30 デバイス - ハードドライブ、フロッピーディスク、CD-ROM サンプル 4
<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.31 デバイス - ハードドライブ、フロッピーディスク、CD-ROM サンプル 5
<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.32 デバイス - ハードドライブ、フロッピーディスク、CD-ROM サンプル 6
<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.33 デバイス - ハードドライブ、フロッピーディスク、CD-ROM サンプル 7
<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.34 デバイス - ハードドライブ、フロッピーディスク、CD-ROM サンプル 8
23.17.1.1. disk 要素
<disk>
要素は、ディスクを説明するためのメインコンテナーです。type
属性は <disk>
要素と使用できます。以下のタイプが許可されます。
file
block
dir
network
23.17.1.2. source 要素
<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
サブ要素を 0 個以上持つことがあります。CD-ROM やフロッピー (device 属性) を表す file
ディスクタイプでは、ソースファイルにアクセスできない場合にディスクの処理方法のポリシーを定義することが可能です。これを行うには、以下の値の 1 つを使用して startupPolicy
属性を設定します。
mandatory
は、何らかの理由でない場合に失敗します。これはデフォルトの設定です。requisite
は、ブート時にない場合に失敗します。移行/復元/復帰の時点でない場合にドロップします。optional
は、起動の試行時に見つからない場合にドロップします。
23.17.1.3. mirror 要素
BlockCopy
操作を開始する場合に見られます。ここで、属性ファイルの <mirror>
ロケーションには、最終的には、属性形式のファイル形式 (ソースの形式と異なる可能性がある) で、ソースと同じコンテンツが含まれることになります。ready 属性がある場合、ディスクはピボットできることが認識されます。それ以外の場合、ディスクはおそらく依然としてコピーを続けます。現在のところ、この要素は出力でのみ有効であり、入力では無視されます。
23.17.1.4. target 要素
<target>
要素は、ディスクがゲスト仮想マシン OS に公開されるバス/デバイスを制御します。dev
属性は、論理デバイス名を示します。指定される実際のデバイス名は、ゲスト仮想マシン OS 内のデバイス名にマップされるとは保証されません。オプションのバス属性は、エミュレートするディスクデバイスのタイプを指定します、使用できる値はドライバー固有の値で、通常は 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>
- 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 操作。
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>
要素にも含まれます。disk
XML セクションの場合は virtIO ディスク、device
XML セクションの場合は 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>
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>
- 以下の属性をサポートします。プロトコルベースの追加のホスト属性 に示すように、この要素の意味と要素の数は、name
- ホスト名を指定します。port
- ポート番号を指定します。transport
- トランスポートタイプを指定します。socket
- ソケットへのパスを指定します。
protocol
属性に応じて異なります。プロトコルベースの追加のホスト属性
nbd
-nbd-server
を実行しているサーバーを指定します。1 つのホスト物理マシンにしか使用できない場合があります。このプロトコルのデフォルトポートは 10809 です。rbd
- RBD タイプのサーバーを監視し、1 つ以上のホスト物理マシンに使用することができます。sheepdog
-sheepdog
サーバーの 1 つを指定し (デフォルトは localhost:7000)、1 つのホスト物理マシンに使用できるか、またはいずれのホスト物理マシンにも使用できません。gluster
- glusterd デーモンを実行しているサーバーを指定し、1 台のホスト物理マシンのみに使用できます。transport 属性に対する有効な値は、tcp
、rdma
、またはunix
です。指定のない場合はtcp
が仮定されます。トランスポートが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
- geometry 設定をオーバーライドする機能を提供します。ほとんどの場合 S390 DASD ディスクまたは旧式の DOS ディスクで役立ちます。以下のパラメーターを取ることができます。cyls
- シリンダーの数を設定します。heads
- ヘッドの数を指定します。secs
- トラックごとのセクター数を指定します。trans
- BIOS-Translation-Mode (変換モード) を指定し、none
、lba
、またはauto
を値とすることができます。
blockio
- 以下のブロックデバイスプロパティーによるブロックデバイスのオーバーライドを許可します。blockio オプション
logical_block_size
- ゲスト仮想マシン OS にレポートし、ディスク I/O の最小単位を記述します。physical_block_size
- ゲスト仮想マシンのオペレーティングシステムにレポートし、ディスクデータの位置合わせに関連するディスクのハードウェアセクターサイズを記述します。
23.17.2. デバイスアドレス
<address>
サブ要素があります。アドレス (またはアドレス内のオプション属性) が入力で省略される場合、libvirt は適切なアドレスを生成しますが、レイアウトにより多くの制御が必要な場合は明示的なアドレスが必要になります。address 要素を含むデバイス例について、以下を参照してください。
type
があります。指定されるデバイスに使用するアドレスを選択することは、デバイスおよびゲスト仮想マシンのアーキテクチャーによって部分的に制限されます。たとえば、ディスクデバイスは type='disk'
を使用し、32 ビット AMD および Intel、または AMD64 および Intel 64、ゲスト仮想マシンのコンソールデバイスは type='pci'
を使用します。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 コントロールレジスターの特定のスロット/機能のマルチファンクションビットをオンにするよう制御します。この 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
によって許可されています。開始レジスターの 16 進値のアドレスを決定する追加属性reg
は、この属性に割り当てることができます。
23.17.3. コントローラー
<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> ...
図23.35 コントローラー要素
type
があり、これは \"ide\"、\"fdc\"、\"scsi\"、"sata\"、\"usb\"、\"ccid\"、または \"virtio-serial\" の 1 つである必要があります。また、バスコントローラーの順番を記述する 10 進整数で、必須の属性である index
もあります (address
要素の controller 属性で使用)。"virtio-serial"
コントローラーには、コントローラーを介して接続できるデバイスの数を制御する、ports
と vectors
の 2 つのオプション属性があります。
<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> ...
図23.36 デバイス - コントローラー - USB
23.17.4. デバイスのリース
... <devices> ... <lease> <lockspace>somearea</lockspace> <key>somekey</key> <target path='/some/lease/path' offset='1024'/> </lease> ... </devices> ...
図23.37 デバイス - デバイスのリース
lease
セクションには、以下の引数を含めることができます。
lockspace
- キーが保持される lockspace を特定する任意の文字列です。ロックマネージャーは、lockspace 名の形式または長さに追加の制限を設定できます。key
- 取得されるリースを一意的に識別する任意の文字列です。ロックマネージャーは、キーの形式または長さに対して追加の制限を設定することができます。target
- lockspace に関連付けられたファイルの完全修飾パスです。オフセットは、ファイル内のどこにリースが格納されるかを指定します。ロックマネージャーがオフセットを必要としない場合、この値を0
に設定します。
23.17.5. ホスト物理マシンのデバイス割り当て
23.17.5.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> ...
図23.38 デバイス - ホスト物理マシンのデバイス割り当て
... <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.39 デバイス - ホスト物理マシン割り当ての代替
... <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> ..
図23.40 デバイス - ホスト物理マシン scsi デバイス割り当て
表23.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 資料によると、rom bar 設定は、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 で検索できるように指定することができます。 |
23.17.5.2. ブロック / キャラクターデバイス
hostdev
要素を変更することで、ゲスト仮想マシンに渡すことができます。これは、コンテナーベースの仮想化の場合にのみ可能であることに注意してください。
... <hostdev mode='capabilities' type='storage'> <source> <block>/dev/sdf1</block> </source> </hostdev> ...
図23.41 デバイス - ホスト物理マシンデバイス割り当てブロックキャラクターデバイス
... <hostdev mode='capabilities' type='misc'> <source> <char>/dev/input/event3</char> </source> </hostdev> ...
図23.42 デバイス - ホスト物理マシンデバイス割り当てブロックキャラクターデバイスの代替法 1
... <hostdev mode='capabilities' type='net'> <source> <interface>eth0</interface> </source> </hostdev> ...
図23.43 デバイス - ホスト物理マシンデバイス割り当てブロックキャラクターデバイスの代替法 2
表23.17 ブロック / キャラクターデバイス要素
パラメーター | 説明 |
---|---|
hostdev | これは、ホスト物理マシンデバイスを記述するためのメインコンテナーです。ブロック/キャラクターデバイスのパススルーの場合 mode は常に capabilities で、ブロックデバイスの場合 type は block で、キャラクターデバイスの場合 char になります。 |
source | これは、ホスト物理マシンから表示されるデバイスについて記述します。ブロックデバイスの場合、ホスト物理マシン OS のブロックデバイスへのパスは、ネスト化された block 要素に指定され、キャラクターデバイスの場合は、char 要素が使用されます。 |
23.17.6. リダイレクトされるデバイス
... <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> ...
図23.44 デバイス - リダイレクトされるデバイス
表23.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 クラスコードです。 |
23.17.7. スマートカードデバイス
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> ...
図23.45 デバイス - スマートカードデバイス
smartcard
要素には、必須属性の mode
があります。それぞれのモードでは、ゲスト仮想マシンには、物理 USB CCID (Chip/Smart Card Interface Device) カードのように動作する USB バス上にデバイスが表示されます。
表23.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 は代替ディレクトリーへの絶対パスを指定できます (証明書の作成時の -d コマンドの certutil フラグに一致)。これが表示されない場合、デフォルトは /etc/pki/nssdb になります。 |
mode='passthrough' | このモードを使用することにより、すべての要求を 2 次的なキャラクターデバイスを経由してサードパーティープロバイダーにトンネル化できます (これにより、ハイパーバイザーがホスト物理マシンと直接通信するのではなく、スマートカードと通信するか、または 3 つの認証ファイルを使用します。この操作モードでは、対応するシリアルデバイスタイプのいずれかに一致する、追加属性の type が、トンネルのホスト物理マシン側を記述するために必要になります。type='tcp' または type='spicevmc' (SPICE グラフィックスデバイスのスマートカードチャネルを使用) などが一般的な例になります。さらに、source などのサブ要素は、指定されるタイプに応じて必要になります。ただし、target サブ要素は不要です (キャラクターデバイスのコンシューマーが、ゲスト仮想マシン内に表示されるデバイスではなく、ハイパーバイザー自体であるため)。 |
address
をサポートします。これは、スマートカードと ccid バスコントローラー間の相関関係を微調整します。詳細は、「デバイスアドレス」 を参照してください。
23.17.8. ネットワークインターフェース
... <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> ...
図23.46 デバイス - ネットワークインターフェース
"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>
要素は、type='pci'
属性でインターフェースを特定の PCI スロットに関連付けできるオプションの <address>
サブ要素を取ることができます。詳細は 「デバイスアドレス」 を参照してください。
23.17.8.1. 仮想ネットワーク
<network>
定義に別個に記載される複数ホスト物理マシン環境) について推奨される設定です。さらに、これは、名前付きネットワーク定義によって詳述される接続を提供します。仮想ネットワークの forward mode
設定に応じて、ネットワークは完全に分離するか (<forward>
要素の指定なし)、明示的なネットワークデバイスまたはデフォルトルートに対して NAT を実行するか (forward mode='nat'
)、NAT なしで経路指定されるか (forward mode='route'
)、またはホスト物理マシンのネットワークインターフェースのいずれかに接続されるか (macvtap 経由)、またはブリッジデバイスに接続されます (forward mode='bridge|private|vepa|passthrough'
)。
bridge
、private
、vepa
、およびpassthrough
の 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> ...
図23.47 デバイス - ネットワークインターフェース- 仮想ネットワーク
23.17.8.2. LAN のブリッジ
tun
の名前で作成された、関連付けられた <vnetN>
デバイスがあります。この名前は、<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>
図23.48 デバイス - ネットワークインターフェース- LAN のデバイス
23.17.8.3. ポートのマスカレード範囲の設定
<forward mode='nat'> <address start='1.2.3.4' end='1.2.3.10'/> </forward> ...
図23.49 ポートのマスカレード範囲
iptables
コマンドを使用して設定する必要があります。
23.17.8.4. ユーザー領域 SLIRP スタック
... <devices> <interface type='user'/> ... <interface type='user'> <mac address="00:11:22:33:44:55"/> </interface> </devices> ...
図23.50 デバイス - ネットワークインターフェース- ユーザー領域 SLIRP スタック
23.17.8.5. 汎用イーサネット接続
vnetN
という名前で作成される <tun>
デバイスがあります。これは、<target>
要素でオーバーライドすることができます。tun
デバイスを作成した後に、シェルスクリプトが実行され、ホスト物理マシンのネットワーク統合に必要なすべてのことを実行することが予期されます。デフォルトでは、このスクリプトは /etc/qemu-ifup
と呼ばれますが、これをオーバーライドすることができます (「ターゲット要素のオーバーライド」 を参照してください)。
... <devices> <interface type='ethernet'/> ... <interface type='ethernet'> <target dev='vnet7'/> <script path='/etc/qemu-ifup-mynet'/> </interface> </devices> ...
図23.51 デバイス - ネットワークインターフェース- 汎用イーサネット接続
23.17.8.6. 物理インターフェースへの直接割り当て
mode
属性値 vepa
(「Virtual Ethernet Port Aggregator」)、bridge
または private
のいずれかは、macvtap デバイスの操作モードとして選択できます。デフォルトモードは vepa
です。
... <devices> ... <interface type='direct'> <source dev='eth0' mode='vepa'/> </interface> </devices> ...
図23.52 デバイス - ネットワークインターフェース - 物理インターフェースへの直接割り当て
表23.20 物理インターフェース要素への直接割り当て
要素 | 説明 |
---|---|
vepa | ゲスト仮想マシンのすべてのパケットは、外部ブリッジに送信されます。宛先がパケットの発信元と同じホスト物理マシン上にあるゲスト仮想マシンのパケットは、VEPA 対応ブリッジによって、ホスト物理マシンに送り戻されます (最近のブリッジは VEPA 対応でない場合が多い)。 |
bridge | 宛先が発信元と同じホスト物理マシン上にあるパケットは、ターゲットの macvtap デバイスに直接配信されます。直接配信されるようにするには、発信元および宛先デバイスの両方を bridge モードにする必要があります。これらのいずれかが vepa モードの場合は、VEPA 対応のブリッジが必要になります。 |
private | すべてのパケットは外部ブリッジに送信されます。それらが同じホスト物理マシンのターゲット VM に送信されるのは、それらが外部ルーターまたはゲートウェイ経由で送信され、そのデバイスがそれらをホスト物理マシンに送り戻す場合のみです。ソースまたは宛先デバイスのいずれかが private モードの場合に、この手順が実行されます。 |
passthrough | この機能は、SR-IOV 対応の NIC の仮想機能を、移行機能を失わずにゲスト仮想マシンに直接割り当てます。すべてのパケットは、設定されたネットワークデバイスの VF/IF に送信されます。デバイスの機能に応じて、追加の前提条件または制限が適用される場合があります。たとえば、これにはカーネル 2.6.38 以上が必要になります。 |
表23.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> ...
図23.53 デバイス - ネットワークインターフェース- 物理インターフェースの追加パラメーターへの直接割り当て
... <devices> ... <interface type='direct'> <source dev='eth0' mode='private'/> <virtualport type='802.1Qbh'> <parameters profileid='finance'/> </virtualport> </interface> </devices> ...
図23.54 デバイス - ネットワークインターフェース- 物理インターフェースの追加パラメーターへの直接割り当て
profileid
属性には、このインターフェースに適用されるポートプロファイルの名前が含まれます。この名前は、ポートプロファイルのデータベースによって、ポートプロファイルからネットワークパラメーターに解決され、それらのネットワークパラメーターはこのインターフェースに適用されます。
23.17.8.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 のバージョンを使用している場合、hostdev
ではなく、標準の interface type='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> ...
図23.55 デバイス - ネットワークインターフェース- PCI パススルー
23.17.8.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> ...
図23.56 デバイス - ネットワークインターフェース- マルチキャストトンネル
23.17.8.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> ...
図23.57 デバイス - ネットワークインターフェース- TCP トンネル
23.17.8.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> ...
図23.58 デバイス - ネットワークインターフェース- NIC ドライバー固有オプションの設定
表23.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 はデフォルトで、ゲスト仮想マシンの割り込みおよび終了の数を減らします。この動作が最適化されていない状況では、この属性はこの機能をオフに強制実行する方法を提供します。この値を変更することは推奨されません。 |
23.17.8.11. ターゲット要素のオーバーライド
... <devices> <interface type='network'> <source network='default'/> <target dev='vnet1'/> </interface> </devices> ...
図23.59 デバイス - ネットワークインターフェース- ターゲット要素のオーバーライド
vnet
または vif
のいずれでも開始することができません。これらは libvirt と一部のハイパーバイザーで予約されるプレフィックスであるためです。これらのプレフィックスを使用して手動で指定されたターゲットは無視されます。
23.17.8.12. 起動順序の指定
... <devices> <interface type='network'> <source network='default'/> <target dev='vnet1'/> <boot order='1'/> </interface> </devices> ...
図23.60 起動順序の指定
23.17.8.13. インターフェース ROM BIOS 設定
... <devices> <interface type='network'> <source network='default'/> <target dev='vnet1'/> <rom bar='on' file='/etc/fake/boot.bin'/> </interface> </devices> ...
図23.61 インターフェース ROM BIOS 設定
bar
属性は on
または off
に設定することができ、デバイスの ROM がゲスト仮想マシンのメモリーマップに表示されるかどうかを決定します (PCI 資料によると、rom bar
設定は ROM の Base Address Register の提示を制御します)。rom bar
が指定されない場合、KVM デフォルトが使用されます (古いバージョンの KVM はデフォルトの off
を使用しましたが、新しい KVM ハイパーバイザーにはデフォルトの on
が指定されます)。オプションの file
属性は、デバイスの ROM BIOS としてゲスト仮想マシンに提示されるバイナリーファイルをポイントするために使用されます。これは、ネットワークデバイスの代替ブート ROM を指定する際に便利です。
23.17.8.14. Quality of service (QoS)
bandwidth
要素には、最大で 1 つの着信、および最大で 1 つの発信の子要素を持たせることができます。これらの子のいずれかを省略すると、そのトラフィック方向に QoS が適用されなくなります。そのため、ドメインの着信トラフィックのみを設定する場合には、着信のみを使用し、逆の場合も同じようにします。
average
(または以下に説明のある floor
) があります。Average
は形成されるインターフェース上の平均ビットレートを指定します。この他に、任意の属性が 2 つあります。
peak
- この属性は、ブリッジがデータを送信できる最大レートをキロバイト単位で指定します。この実装の制限は、Linux のイングレスフィルターが outbound 要素のこの属性を認識していないため、この属性が無視されることです。burst
- ピークの速度でバーストできるバイト量を指定します。属性に使用できる値は整数です。
average
および peak
属性の単位は 1 秒あたりのキロバイトで、burst
はキロバイト単位でのみ設定されます。さらに任意で、着信トラフィックに floor
属性を指定できます。これにより、形成されたインターフェースの最低スループットが保証されます。floor
を使用するには、すべてのトラフィックが QoS の決定が行われる 1 つのポイントを経由する必要があります。そのため、これは、interface type='network'/
の forward
タイプが route
または nat
の場合や 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> ...
図23.62 QoS (Quality of Service)
23.17.8.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> ...
図23.63 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
要素に追加することができます。
23.17.8.16. 仮想リンク状態の変更
state
に使用できる値は、up
および down
です。down
が値として指定される場合、インターフェースは、ネットワークケーブルが切断されているかのように動作します。この要素が指定されていない場合のデフォルト動作では、リンク状態が up
になります。
... <devices> <interface type='network'> <source network='default'/> <target dev='vnet0'/> <link state='down'/> </interface> <devices> ...
図23.64 仮想リンク状態の変更
23.17.9. 入力デバイス
... <devices> <input type='mouse' bus='usb'/> </devices> ...
図23.65 入力デバイス
<input>
要素には、必須属性の type
があります。この属性は、mouse
または tablet
に設定できます。tablet
は、相対的なカーソル移動を使用するのに対し、mouse
は絶対的なカーソル移動を提供します。オプションの bus
属性は、正確なデバイスタイプを詳細化するために使用し、kvm
(準仮想化)、ps2
、および usb
に設定できます。
<address>
があります。
23.17.10. ハブデバイス
... <devices> <hub type='usb'/> </devices> ...
図23.66 ハブデバイス
hub
要素には 1 つの必須属性があり、type
は usb
のみに設定できます。hub
要素には、オプションのサブ要素 address
があり、これにはデバイスを特定のコントローラーに関連付けることのできる type='usb'
が付きます。
23.17.11. グラフィカルフレームバッファー
... <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> ...
図23.67 グラフィカルフレームバッファー
graphics
要素には、必須の type
属性があります。これは、以下に説明するように、値の sdl
、vnc
、rdp
、desktop
または spice
を取ります。
表23.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>
図23.68 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
モード)。
表23.24 追加のグラフィカルフレームバッファー要素
パラメーター | 説明 |
---|---|
rdp | RDP サーバーを起動します。
|
desktop | この値は、現在 VirtualBox ドメイン用に保持されます。これは sdl と同様にホスト物理マシンのデスクトップ上にウィンドウを表示しますが、VirtualBox ビューアーを使用します。sdl の場合と同様に、これはオプションの属性の display および fullscreen を受け入れます。 |
listen | グラフィックスタイプのvnc および spice 用にリッスンするソケットをセットアップするために使用されるアドレス情報を入れる代わりに、listen 属性という graphics のサブ要素を指定できます (上記の例を参照)。listen は以下の属性を受け入れます。
|
23.17.12. ビデオデバイス
... <devices> <video> <model type='vga' vram='8192' heads='1'> <acceleration accel3d='yes' accel2d='yes'/> </model> </video> </devices> ...
図23.69 ビデオデバイス
graphics
要素には必須の type
属性があり、これは、以下に説明するように値 "sdl"、"vnc"、"rdp" または "desktop" を取ります。
表23.25 グラフィカルフレームバッファー要素
パラメーター | 説明 |
---|---|
video | video 要素は、ビデオデバイスを記述するためのコンテナーです。下位互換性のため、video が設定されていないものの、ドメイン XML に graphics 要素がある場合、libvirt は、ゲスト仮想マシンタイプに基づいてデフォルトの video を追加します。"ram" または "vram" が指定されていない場合、デフォルト値が使用されます。 |
model | これには、必須の type 属性があり、この属性は、利用可能なハイパーバイザー機能に応じて、値の vga 、cirrus , vmvga 、kvm 、vbox 、または qxl を取ります。さらに、ビデオメモリーの容量は、ヘッドと共に vram および図の番号を使用して キビバイト単位 (1024 バイトのブロック) で指定できます。 |
acceleration | aceleration がサポートされる場合、accel3d 要素で accel2d と acceleration 属性を使用してこれを有効にする必要があります。 |
address | オプションの address サブ要素は、ビデオデバイスを特定の PCI スロットに関連付けるために使用することができます。 |
23.17.13. コンソール、シリアル、およびチャネルデバイス
... <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> ...
図23.70 コンソール、シリアル、およびチャネルデバイス
serial
, console
, channel
) は、ゲスト仮想マシンにデバイスがどのように提示されるかを記述します。ゲスト仮想マシンのインターフェースは、target
要素によって設定されます。ホスト物理マシンに提示されるインターフェースは、トップレベル要素の type
属性で指定されます。ホスト物理マシンのインターフェースは、source 要素によって設定されます。source
要素には、ソケットパスでラベルが実行される方法をオーバーライドするためのオプションの seclabel
が含まれます。この要素がない場合、セキュリティーラベルはドメインごとの設定から継承されます。それぞれのキャラクターデバイス要素には、オプションのサブ要素 address
が含まれ、これはデバイスを特定のコントローラーまたは PCI スロットに関連付けることができます。
注記
isa-parallel
デバイスはサポート対象外になりました。
23.17.14. ゲスト仮想マシンのインターフェース
... <devices> <serial type='pty'> <source path='/dev/pts/3'/> <target port='0'/> </serial> </devices> ...
図23.71 ゲスト仮想マシンインターフェースのシリアルポート
<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>
要素のみが、targetType
のserial
を使用できます。2 番目のコンソールはすべて準仮想化する必要があります。 - s390 では、console 要素は、
targetType
またはsclp
(ラインモード) のsclplm
を使用できます。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> ...
図23.72 ゲスト仮想マシンインターフェース - virtio コンソールデバイス
<target>
要素には、シリアルポートの場合と同じ属性があります。通常、1 つのコンソールのみが存在します。
23.17.15. チャネル
... <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> ...
図23.73 チャネル
<channel>
の特定のタイプは type
要素の <target>
属性で指定されます。異なるチャネルタイプには、以下のようにそれぞれ異なるターゲット属性があります。
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'
コントローラーに関連付けることができます。
23.17.16. ホスト物理マシンインターフェース
表23.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 パスも、トップレベルの tty='/dev/pts/3' タグ上の属性 <console> として複製されます。これは、<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 ドメインソケットサーバーとして機能し、ローカルクライアントからの接続を受け入れます。 |
|
23.17.17. サウンドデバイス
sound
要素を使用して仮想サウンドカードをホスト物理マシンに接続できます。
... <devices> <sound model='ac97'/> </devices> ...
図23.74 仮想サウンドカード
sound
要素には、必須属性の model
があります。これは、エミュレートする実際のサウンドデバイスを指定します。有効な値は、典型的なオプションとして 'sb16'
、'ac97'
、および 'ich6'
がありますが、基礎となるハイパーバイザーに特有のものとなります。さらに、sound
モデルを持つ 'ich6'
要素は、オーディオデバイスに各種の音声コーデックを割り当てるためのオプションのサブ要素 codec
を持たせることができます。指定されない場合、デフォルトのコーデックが、再生や録音を可能にするために割り当てられます。有効な値は、'duplex'
(line-in および line-out を提供) および 'micro'
(speaker および microphone を提供) です。
... <devices> <sound model='ich6'> <codec type='micro'/> <sound/> </devices> ...
図23.75 サウンドデバイス
<address>
があり、これは、上記のようにデバイスを特定の PCI スロットに関連付けることができます。
注記
23.17.18. ウォッチドッグデバイス
<watchdog>
要素でゲスト仮想マシンに追加できます。ウォッチドッグデバイスは、ゲスト仮想マシン内に追加のドライバーおよび管理デーモンを必要とします。現在、ウォッチドッグが実行された場合の通知サポートはありません。
... <devices> <watchdog model='i6300esb'/> </devices> ... ... <devices> <watchdog model='i6300esb' action='poweroff'/> </devices> ...
図23.76 ウォッチドッグデバイス
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
によって自動的に追加される例になります。
... <devices> <memballoon model='virtio'/> </devices> ...
図23.77 メモリーバルーンデバイス
... <devices> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </memballoon> </devices> ...
図23.78 手動で追加されたメモリーバルーンデバイス
model
属性は、提供されるバルーンデバイスのタイプを指定します。仮想化プラットフォームに有効な値は以下の通りです。KVM ハイパーバイザーの場合は、'virtio'
がデフォルト設定になります。
このページには機械翻訳が使用されている場合があります (詳細はこちら)。