20.16. Devices
この XML 要素のセットはすべて、ゲスト仮想マシンのドメインに提供されるデバイスを説明するために使用されます。以下のデバイスはすべて、主な 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 デバイスを作成し、ベクトル数を 32 より大きい値に設定すると、デバイスは、Red Hat Enterprise Linux 6 ではゼロに設定されているかのように動作しますが、Enterprise Linux 7 では動作しません。生成されるベクトル設定の不一致により、いずれかのプラットフォームの virtio デバイスのベクトル数が 33 以上に設定されていると、移行エラーが発生します。したがって、
vector
の値を 32 より大きく設定することは推奨されません。virtio-balloon-pci および virtio-rng-pci を除くすべての virtio デバイスは、vector
引数を受け入れます。
図20.22 デバイス - 子要素
... <devices> <emulator>/usr/lib/xen/bin/qemu-dm</emulator> </devices> ...
<emulator>
要素の内容は、デバイスモデルエミュレーターバイナリーへの完全修飾パスを指定します。capabilities XML は、各特定のドメインタイプまたはアーキテクチャーの組み合わせに使用する推奨されるデフォルトエミュレーターを指定します。
20.16.1. ハードドライブ、フロッピーディスク、CDROM
ドメイン XML のこのセクションでは、フロッピー、ハードディスク、CD-ROM、準仮想化ドライバーなど、ディスクのように見えるデバイスをディスク要素で指定します。
図20.23 デバイス - ハードドライブ、フロッピーディスク、CDROM
... <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> ... <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> <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> <disk type='block' device='cdrom'> <driver name='qemu' type='raw'/> <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> <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> </devices> ...
20.16.1.1. ディスク要素
<disk>
要素は、ディスクを記述するための主要なコンテナーです。属性type
は、<disk>
要素で使用できます。以下のタイプが許可されています。
file
block
dir
network
詳細については、ディスク要素を参照してください。
20.16.1.2. ソース要素
<disk type='file''>
の場合、file
属性は、ディスクを保持しているファイルへの完全修飾パスを指定します。<disk type='block'>
の場合、dev
属性は、ディスクとして機能するホスト物理マシンデバイスへのパスを指定します。file
と block
の両方で、以下で説明する 1 つ以上のオプションのサブ要素 seclabel
を使用して、そのソースファイルのみのドメインセキュリティーラベル付けポリシーを上書きできます。ディスクタイプが dir
の場合、dir
属性は、ディスクとして使用するディレクトリーへの完全修飾パスを指定します。ディスクタイプが network
の場合、protocol 属性は、要求されたイメージにアクセスするためのプロトコルを指定します。可能な値は、nbd
、rbd
、sheepdog
、または gluster
です。
プロトコル属性が
rbd
、sheepdog
、または gluster
の場合、使用するボリュームやイメージを指定するには、追加の属性 name
が必須です。ディスクのタイプが network
の場合、source
には、接続するホスト物理マシンを指定するために使用される type='dir'
および type='network'
を含む、ゼロ以上の host
サブ要素が含まれることがあります。cdrom またはフロッピー (デバイス属性) を表すfile
ディスクタイプで、ソースファイルにアクセスできない場合にディスクをどうするかという動作のポリシーを定義できます。これは、startupPolicy
属性を次の値で操作することによって行われます。
mandatory
は、何らかの理由で欠落している場合に障害の原因となります。これはデフォルト設定です。requisite
は、起動時に欠落している場合は失敗し、移行/復元/復帰時に欠落している場合はドロップします。optional
- 起動の試行時にない場合はドロップします。
20.16.1.3. ミラー要素
この要素は、ハイパーバイザーが BlockCopy 操作を起動し、属性ファイルの
<mirror>
の場所が最終的にソースと同じ内容を持ち、属性形式のファイル形式 (ソースの形式とは異なる場合あり) の場合に存在します。属性 ready が存在する場合は、ディスクがピボットする準備ができていることが分かっています。存在しない場合は、ディスクが依然としてコピー中である可能性があります。現在、この要素は出力でのみ有効で、入力では無視されます。
20.16.1.4. ターゲット要素
<target>
要素は、ディスクがゲスト仮想マシン OS に公開されるバス/デバイスを制御します。dev 属性は、論理デバイスの名前を示します。実際のデバイス名が、ゲスト仮想マシンの OS のデバイス名にマッピングされる保証はありません。オプションのバス属性では、エミュレートするディスクデバイスの種類を指定します。指定できる値はドライバー固有で、一般的な値は ide
、scsi
、virtio
、xen
、usb
、または sata
です。省略した場合、バスタイプはデバイス名のスタイルから推測されます。たとえば、'sda'
という名前のデバイスは通常、SCSI バスを使用してエクスポートされます。オプションの属性 tray
は、リムーバブルディスク (CD-ROM やフロッピーディスクなど) のトレイステータスを示します。値は open
または closed
のいずれかです。デフォルト設定は closed
です。詳細は、ターゲット要素を参照してください。
20.16.1.5. iotune
オプションの
<iotune>
要素は、デバイスごとに異なる値を使用して、追加のデバイスごとの I / O チューニングを提供する機能を提供します (これを、ドメインにグローバルに適用するblkiotune
要素と比較してください)。この要素には、次のオプションのサブ要素があります。指定されないか、または値 0
が指定されたサブ要素はすべて制限がないことを意味します。
<total_bytes_sec>
- 合計スループット制限 (バイト/秒)。この要素は、<read_bytes_sec>
または<write_bytes_sec>
とは併用できません。<read_bytes_sec>
- 読み取りスループットの制限 (バイト/秒)。<write_bytes_sec>
- 書き込みスループットの制限 (バイト/秒)。<total_iops_sec>
- 1 秒あたりの I/O 操作の合計です。この要素は、<read_iops_sec>
または<write_iops_sec>
とは併用できません。<read_iops_sec>
- 1 秒あたりの読み取り I/O 操作数。<write_iops_sec>
- 1 秒あたりの書き込み I/O 操作数。
20.16.1.6. driver
任意の
<driver>
要素を使用すると、ディスクの提供に使用されるハイパーバイザードライバーに関する詳細を指定できます。以下のオプションが使用できます。
- ハイパーバイザーが複数のバックエンドドライバーをサポートする場合、
name
属性はプライマリーバックエンドドライバー名を選択し、任意の type 属性はサブタイプを提供します。可能なタイプのリストについては、ドライバー要素を参照してください。 - オプションの
cache
属性は、キャッシュメカニズムを制御します。使用できる値は、default
、none
、writethrough
、writeback
、directsync
(writethrough
と同様ですが、ホスト物理マシンのページキャッシュをバイパスします) およびunsafe
(ホスト物理マシンはすべてのディスク io をキャッシュする場合があります) です。ゲスト仮想マシン仮想マシンからの同期要求は無視されます)。 - オプションの
error_policy
属性は、ハイパーバイザーがディスクの読み取りまたは書き込みエラーでどのように動作するかを制御します。可能な値は、stop
、report
、ignore
、およびenospace
です。error_policy
のデフォルト設定はreport
です。読み取りエラーのみに対する動作を制御するオプションのrerror_policy
もあります。rerror_policy
が指定されていない場合、error_policy
は読み取りおよび書き込みエラーの両方に使用されます。rerror_policy
が指定されている場合は、読み取りエラーのerror_policy
をオーバーライドします。また、enospace
は読み取りエラーの有効なポリシーではないため、error_policy
がenospace
に設定され、no rerror_policy
が指定されていない場合は、読み取りエラーのデフォルト設定であるreport
が使用される点に注意してください。 - オプションの
io
属性は、I/O の特定のポリシーを制御します。qemu
ゲスト仮想マシン仮想マシンはthreads
とnative
をサポートします。オプションのioeventfd
属性を使用すると、ディスクデバイスのドメイン I/O の非同期処理を設定できます。デフォルトは、ハイパーバイザーの判断に任されます。指定できる値はon
とoff
です。これを有効にすると、別のスレッドが I/O を処理している間にゲスト仮想マシンの仮想マシンを実行できます。通常、I/O の実行中にシステム CPU の使用率が高くなったゲスト仮想マシンの仮想マシンは、この恩恵を受けます。一方、ホストの物理マシンが過負荷になると、ゲスト仮想マシンの仮想マシンの I/O レイテンシーが増加します。io
を操作する必要があることを完全に証明している場合を除き、デフォルト設定を変更せず、ハイパーバイザーが設定を指示できるようにすることを強くお勧めします。 - オプションの
event_idx
属性は、デバイスイベント処理のいくつかの側面を制御し、on
またはoff
のいずれかに設定できます。on の場合、ゲスト仮想マシン仮想マシンの割り込みと終了の数を減らします。デフォルトではハイパーバイザーが決定し、デフォルトの設定はon
になります。この動作が最適ではない状況がある場合、この属性は機能を強制的にoff
にする方法を提供します。event_idx
を操作する必要があることを完全に証明している場合を除き、デフォルト設定を変更せず、ハイパーバイザーが設定を指示できるようにすることを強くお勧めします。 - オプションの
copy_on_read
属性は、リードバックファイルをイメージファイルにコピーするかどうかを制御します。使用できる値は、on
または<off>
のいずれかです。copy-on-read
は、同じバッキングファイルセクターに繰り返しアクセスすることを回避し、バッキングファイルが低速のネットワーク上にある場合に役立ちます。デフォルトでは、copy-on-read
はoff
です。
20.16.1.7. 追加のデバイス要素
device
要素内では、以下の属性を使用できます。
<boot>
- ディスクが起動可能であることを指定します。追加の起動値
<order>
- システムの起動時にデバイスを試行する順序を指定します。<デバイスごと>
のブート要素は、BIOS ブートローダーセクションの一般的なブート要素とは併用できません。
<encryption>
- ボリュームの暗号化方法を指定します。詳細については、ストレージの暗号化ページを参照してください。<readonly>
- ゲスト仮想マシンがデバイスを変更できないことを示します。この設定は、attribute
device='cdrom'
を使用するディスクの既定値です。共有可能
デバイスがドメイン間で共有される必要があることを示しています (ハイパーバイザーと OS が対応している場合)。shareable
を使用すると、そのデバイスにcache='no'
が指定されます。<transient>
- デバイスのコンテンツの変更は、ゲスト仮想マシンの仮想マシンの終了時に自動的に元に戻す必要があることを示します。一部のハイパーバイザーでは、ディスクにtransient
マークを付けると、ドメインが移行またはスナップショットに参加できなくなります。<serial>
- ゲスト仮想マシンのハードドライブのシリアル番号を指定します。(例:<serial>
WD-WMAP9A966149</serial>
)<wwn>
- 仮想ハードディスクまたは CD-ROM ドライブの WWN (World Wide Name) を指定します。16 桁の 16 進数で設定される必要があります。<vendor>
- 仮想ハードディスクまたは CD-ROM デバイスのベンダーを指定します。印刷可能な 8 文字を超えてはなりません。<product>
- 仮想ハードディスクまたは CD-ROM デバイスの製品を指定します。印刷可能な 16 文字を超えてはなりません。<host>
- 4 つの属性をサポートします:viz
、name
、port
、transport
、socket
。それぞれ、ホスト名、ポート番号、トランスポートタイプ、およびソケットへのパスを指定します。この要素の意味と要素数は、以下に示すようにprotocol
属性により異なります。追加のホスト属性
nbd
- nbd-server を実行しているサーバーを指定します。使用できるのは、1 台のホスト物理マシンだけです。rbd
- RBD タイプのサーバーを監視し、1 つ以上のホスト物理マシンで使用できます。sheepdog
- sheepdog サーバーのいずれかを指定し (デフォルトは localhost:7000)、ホスト物理マシンの 1 つを使用するか、またはいずれとも使用することができません。gluster
- glusterd デーモンを実行しているサーバーを指定します。使用できる物理マシンは 1 つだけです。トランスポート属性の有効な値は、tcp
、rdma
、またはunix
です。何も指定しないと、tcp
が想定されます。transport がunix
の場合、socket
属性は unix ソケットへのパスを指定します。
<address>
- ディスクを、コントローラーの指定したスロットに関連付けます。実際の<controller>
デバイスは多くの場合、推測できますが、明示的に指定することもできます。type
属性は必須で、通常はpci
またはdrive
です。pci
コントローラーの場合、bus
、slot
、およびfunction
の追加属性と、オプションのdomain
およびmultifunction
が存在する必要があります。multifunction
のデフォルトはoff
です。drive
コントローラーでは、追加の属性controller
、bus
、target
、およびunit
が利用できます。それぞれの属性のデフォルト設定は0
です。auth
- ソースへのアクセスに必要な認証情報を提供します。これには、認証時に使用するユーザー名を識別する必須属性username
と、必須属性type
を持つサブ要素secret
が含まれます。詳細は、デバイス要素を参照してください。geometry
- ジオメトリー設定を上書きする機能を提供します。これは、主に S390 DASD ディスクまたは古い DOS ディスクに役立ちます。cyls
- シリンダーの数を指定します。heads
- ヘッドの数を指定します。secs
- トラックごとのセクター数を指定します。trans
- BIOS-Translation-Modus を指定し、none
、lba
、またはauto
の値を設定できますblockio
- ブロックデバイスを、以下のブロックデバイスプロパティーのいずれかで上書きできます。blockio オプション
logical_block_size
- ゲスト仮想マシン仮想マシン OS にレポートし、ディスク I/O の最小単位を記述します。physical_block_size
- ゲスト仮想マシンの仮想マシン OS を報告し、ディスクのハードウェアセクターサイズを説明します。これは、ディスクデータの調整に関連付けることができます。