21.16. デバイス

この XML 要素のセットすべては、ゲスト仮想マシンのドメインに提供されるデバイスを説明するために使用されます。以下のデバイスのすべては、メインデバイス要素の子として示されます。
以下の仮想デバイスがサポートされています。
  • 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 バス仮想乱数ジェネレーターデバイス

重要

ベクター番号が 33 以上の値に設定されている virtio デバイスが作成される場合、このデバイスは、Red Hat Enterprise Linux 6 上ではゼロの値に設定されているように動作しますが、Red Hat Enterprise Linux 7 ではそのように動作しません。結果として生じるベクター設定の不一致により、いずれかのプラットフォームの virtio デバイスのベクターの番号が 33 以上に設定されている場合は、移行エラーが生じます。そのため、vector の値を 33 以上に設定することは推奨されません。virtio-balloon-pci と virtio-rng-pci を除くすべての virtio デバイスが vector を受け付けます。

  ...
  <devices>
    <emulator>/usr/lib/xen/bin/qemu-dm</emulator>
  </devices>
  ...

図21.22 デバイス - 子要素

<emulator> 要素のコンテンツは、デバイスモデルエミュレーターのバイナリーへの完全修飾パスを指定します。capabilities XML は、それぞれの特定ドメインタイプ、またはアーキテクチャーの組み合わせに対して使用するための推奨されるデフォルトエミュレーターを指定します。

21.16.1. ハードドライブ、フロッピーディスク、CDROM

ドメイン XML のこのセクションは、ディスク要素でフロッピー、ハードディスク、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>
  ...

図21.23 デバイス - ハードドライブ、フロッピーディスク、CDROM

21.16.1.1. ディスク要素

<disk> 要素は、ディスクを記述するためのメインコンテナーです。属性の type<disk> 要素と共に使用できます。以下のタイプが受け入れ可能です。
  • file
  • block
  • dir
  • network
詳細は、Disk Elements を参照してください。

21.16.1.2. ソース要素

<disk type='file''> の場合、file 属性は、ディスクを保持するファイルへの完全修飾パスを指定します。<disk type='block'> の場合、dev 属性は、ディスクとして機能するホスト物理マシンへのパスを指定します。fileblock の両方の場合に、下記の 1 つ以上のオプションサブ要素 seclabel を使用して、そのソースファイルのドメインセキュリティーラベルポリシーをオーバーライドすることができます。ディスクタイプが dir の場合、dir 属性は、ディスクとして使用されるディレクトリーへの完全修飾パスを指定します。ディスクタイプが network の場合、プロトコル属性は、要求されるイメージにアクセスするためのプロトコルを指定します。使用できる値は、nbdrbdsheepdog または gluster です。
プロトコル属性が rbdsheepdog または gluster の場合、追加属性の name は、使用するボリュームおよび/またはイメージを指定するために必須となります。ディスクタイプが network の場合、source には、type='dir' および type='network' などの、接続するホスト物理マシンを指定するために使用されるゼロまたは 1 つ以上の host サブ要素が含まれる場合があります。CDROM またはフロッピー (デバイス属性) を表す file ディスクタイプの場合、ソースファイルにアクセスできない場合にディスクをどう処理するかについてのポリシーを定義することができます。これは、以下の値と共に、startupPolicy 属性を処理することによって実行されます。
  • mandatory は、何らかの理由で見当たらない場合に、失敗を生じさせます。これはデフォルトの設定です。
  • requisite は、ブート時に見つからない場合に失敗を生じさせ、移行/復元/復帰の時点で見つからない場合にドロップします。
  • optional は、開始の試行時にドロップします。

21.16.1.3. Mirrot 要素

この要素は、ハイパーバイザーが BlockCopy 操作を開始する場合に見られます。ここで、属性ファイルの <mirror> ロケーションには、最終的には、属性形式のファイル形式 (ソースの形式と異なる可能性がある) で、ソースと同じコンテンツが含まれることになります。ready 属性がある場合、ディスクはピボットできることが認識されます。それ以外の場合、ディスクはおそらくコピーを続けます。現在のところ、この要素は出力でのみ有効であり、入力では無視されます。

21.16.1.4. Target 要素

<target> 要素は、ディスクがゲスト仮想マシン OS に公開されるバス/デバイスを制御します。dev 属性は、論理デバイス名を示します。指定される実際のデバイス名がゲスト仮想マシン OS 内のデバイス名にマップされるとは限りません。オプションのバス属性は、エミュレートするディスクデバイスのタイプを指定します。使用できる値は、以下の標準的な値を含む、ドライバー固有の値になります。idescsivirtioxenusb または sata。バスタイプは、省略される場合、デバイス名のスタイルから推定されます。たとえば、'sda' という名前のデバイスは、通常 SCSI バスを使用してエクスポートされます。オプション属性の tray は、リムーバブルディスク (CDROM またはフロッピーディスクなど) のトレイ状態を示し、値は open または closed にすることができます。デフォルト設定は closed です。詳細は、target Elements を参照してください。

21.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> - 秒あたりの合計 I/O 回数です。この要素は、<read_iops_sec> または <write_iops_sec> と共に使用することができません。
  • <read_iops_sec> - 秒あたりの読み込み I/O 回数です。
  • <write_iops_sec> - 秒あたりの書き込み I/O 回数です。

21.16.1.6. driver

オプションの <driver> 要素では、ディスク提供に使用されるハイパーバイザードライバーに関連する詳細指定が可能です。以下のオプションが使用可能です。
  • ハイパーバイザーが複数のバックエンドドライバーをサポートする場合、name 属性は、プライマリーバックエンドドライバーの名前を選択し、オプションのtype 属性はサブタイプを提供します。使用できるタイプの一覧は、Driver Elements を参照してください。
  • オプションの cache 属性は、キャッシュメカニズムを制御します。使用できる値は以下の通りです。defaultnonewritethroughwritebackdirectsync (writethrough に似ていますが、ホスト物理マシンのページキャッシュをバイパスします) および unsafe (ホスト物理マシンはすべてのディスク IO をキャッシュする可能性があり、ゲスト仮想マシンの同期要求は無視されます)。
  • オプションの error_policy 属性は、ディスクの読み込みまたは書き込みエラー時にハイパーバイザーがどのように動作するかを制御します。使用できる値は、stopreportignore、および enospace です。error_policy のデフォルト設定は report です。さらに、読み取りエラーの動作のみを制御するオプションの rerror_policy もあります。rerror_policy が指定されていない場合、error_policy が読み込みエラーと書き込みエラーの両方に使用されます。rerror_policy が指定される場合、それは読み込みエラーの error_policy をオーバーライドします。また、enospace は読み込みエラーの有効なポリシーではないことに注意してください。そのため、error_policyenospace に設定され、no rerror_policy が読み込みエラーに指定される場合、デフォルト設定の report が使用されます。
  • オプションの io 属性は、I/O 上の特定のポリシーを制御します。qemu ゲスト仮想マシンは、threads および native をサポートします。オプションの ioeventfd 属性により、ユーザーはディスクデバイスのドメイン I/O の非同期処理を設定できます。デフォルトはハイパーバイザーによって設定されます。受け入れ可能な値は、on および off です。これを有効にすることにより、別のスレッドが I/O を処理する間に、ゲスト仮想マシンを実行させることができます。通常これは、I/O 時のシステム CUP の高い使用率を経験するゲスト仮想マシンの場合に役立ちます。なお、過負荷のホスト物理マシンは、ゲスト仮想マシンの I/O 待ち時間を増やす可能性があります。io の操作が確実に必要でない限り、デフォルトの設定を変更せず、ハイパーバイザーによる設定を許可することが強く推奨されます。
  • オプションの event_idx 属性は、デバイスイベント処理のいくつかの側面を制御し、on または off のいずれかに設定できます。これが on の場合、割り込みの数が減少し、ゲスト仮想マシンに対して終了します。デフォルトはハイパーバイザーによって決定され、デフォルト設定は on になります。この動作が次善的なオプションである場合には、この属性は機能の off を強制する方法を提供します。event_idx の操作が確実に必要でない限り、デフォルトの設定を変更せずに、ハイパーバイザーによる設定を許可することが強く推奨されます。
  • オプションの copy_on_read 属性は、読み込みバッキングファイルをイメージファイルにコピーするかどうかを制御します。許可される値は、on または off のいずれかになります。copy-on-read は、同じバッキングファイルのセクターに繰り返しアクセスすることを防ぎ、バッキングファイルが速度の遅いネットワーク上にある場合に便利になります。デフォルトで、copy-on-readoff になります。

21.16.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 つの属性をサポートします。viznameporttransport および socket。これらは、ホスト名、ポート番号、トランスポートタイプおよびソケットのパスをそれぞれ指定します。この要素の意味と要素の数は、以下に示される protocol 属性によって異なります。

    追加のホスト属性

    • nbd - nbd-server を実行するサーバーを指定し、単一のホスト物理マシンにのみ使用することができます。
    • rbd - RBD タイプのサーバーを監視し、1 つ以上のホスト物理マシンに使用することができます。
    • sheepdog - sheepdog サーバーの 1 つを指定し (デフォルトは localhost:7000)、1 つのホスト物理マシンに使用できるか、またはいずれのホスト物理マシンにも使用できません。
    • gluster - glusterd デーモンを実行するサーバーを指定し、単一のホスト物理マシンにのみ使用できます。transport 属性の有効な値は tcprdma または unix です。いずれの値も指定されていない場合は、tcp が想定されます。transport が unix の場合、socket 属性は、unix ソケットへのパスを指定します。
  • <address> - ディスクをコントローラーの指定されたスロットに関連付けます。実際の <controller> デバイスを推定できることもありますが、これを明示的に指定することもできます。type 属性は必須であり、通常は pci または drive になります。pci コントローラーの場合、busslot、および function の属性が、オプションの domain および multifunction と共に存在する必要があります。multifunction はデフォルトで off になります。drive コントローラーの場合、追加属性の controllerbustarget、および unit を使用でき、それぞれのデフォルト設定は 0 になります。
  • auth - ソースにアクセスするのに必要な認証資格情報を提供します。これには、認証時に使用するユーザー名を特定する必須属性 username と、必須属性 type を持つサブ要素 secret が含まれます。詳細は、Device Elements を参照してください。
  • geometry - 配置設定をオーバーライドする機能を提供します。これは、ほとんどの場合 S390 DASD ディスクまたは古い DOS ディスクに対して役立ちます。
  • cyls - シリンダーの数を指定します。
  • heads - ヘッドの数を指定します。
  • secs - トラックあたりのセクター数を指定します。
  • trans - BIOS-Translation-Modus を指定し、nonelba または auto のいずれかを取ることができます。
  • blockio - ブロックデバイスを、以下に記載されるブロックデバイスプロパティーのいずれかでオーバーライドできるようにします。

    blockio オプション

    • logical_block_size- ゲスト仮想マシン OS にレポートし、ディスク I/O の最小単位について記述します。
    • physical_block_size - ゲスト仮想マシン OS にレポートし、ディスクデータの位置合わせに関連するディスクのハードウェアセクターサイズを記述します。