13.7. SCSI デバイスでの NPIV 仮想アダプター (vHBA) の使用
scsi_host# または WWNN/WWPN ペアで定義することができます。
注記
scsi_host# で定義しハードウェアがホストマシンに追加されると、scsi_host# の割り付けが変更される場合があります。したがって、親 HBA は WWNN/WWPN ペアを使って定義することが推奨されます。
注記
13.7.1. vHBA の作成
手順13.9 vHBA の作成
ホストシステム上で HBA を見つけます。
ホストシステム上で HBA を見つけるには、virsh nodedev-list --cap vportsコマンドを使用します。たとえば、以下の出力は、vHBA をサポートする 2 つの HBA を持つホストを示しています。#
virsh nodedev-list --cap vportsscsi_host3 scsi_host4HBA の詳細を確認します。
virsh nodedev-dumpxml HBA_deviceコマンドを使って HBA の詳細を確認します。virsh nodedev-dumpxmlコマンドからの XML 出力は、<name>、<wwnn>、および<wwpn>フィールドを一覧表示します。これらのフィールドは vHBA を作成するために使用されます。<max_vports>値は、サポートされる vHBA の最大数を示します。# virsh nodedev-dumpxml scsi_host3 <device> <name>scsi_host3</name> <path>/sys/devices/pci0000:00/0000:00:04.0/0000:10:00.0/host3</path> <parent>pci_0000_10_00_0</parent> <capability type='scsi_host'> <host>3</host> <unique_id>0</unique_id> <capability type='fc_host'> <wwnn>20000000c9848140</wwnn> <wwpn>10000000c9848140</wwpn> <fabric_wwn>2002000573de9a81</fabric_wwn> </capability> <capability type='vport_ops'> <max_vports>127</max_vports> <vports>0</vports> </capability> </capability> </device>この例では、<max_vports>値は HBA 設定で使用できる 127 の仮想ポートがあることを示しています。<vports>値は、現在使用中の仮想ポートの数を示します。これらの値は、vHBA 作成後に更新されます。vHBA ホストデバイスを作成します。
vHBA ホスト用に以下のどちらかのような XML ファイルを作成します (この例では、ファイル名は vhba_host3.xml です)。この例では、親 vHBA を定義するのにscsi_host#が使われています。# cat vhba_host3.xml <device> <parent>scsi_host3</parent> <capability type='scsi_host'> <capability type='fc_host'> </capability> </capability> </device>この例では、親 vHBA を定義するのに WWNN/WWPN ペアが使われています。# cat vhba_host3.xml <device> <name>vhba</name> <parent wwnn='20000000c9848140' wwpn='10000000c9848140'/> <capability type='scsi_host'> <capability type='fc_host'> </capability> </capability> </device>注記
WWNN と WWPN の値は、ステップ 2 で確認した HBA 詳細の値と一致している必要があります。<parent>フィールドでは、この vHBA デバイスに関連付ける HBA デバイスを指定します。<device>タグ内の詳細は、ホスト用に新規の vHBA デバイスを作成するために次のステップで使用します。nodedevXML 形式についての詳細は、libvirt アップストリームページ を参照してください。vHBA ホストデバイス上で新規 vHBA を作成します。
vhba_host3 上で vHBA を作成するには、virsh nodedev-createコマンドを使用します。#
virsh nodedev-create vhba_host3.xmlNode device scsi_host5 created from vhba_host3.xmlvHBA を確認します。
新規 vHBA (scsi_host5) の詳細をvirsh nodedev-dumpxmlコマンドで確認します。# virsh nodedev-dumpxml scsi_host5 <device> <name>scsi_host5</name> <path>/sys/devices/pci0000:00/0000:00:04.0/0000:10:00.0/host3/vport-3:0-0/host5</path> <parent>scsi_host3</parent> <capability type='scsi_host'> <host>5</host> <unique_id>2</unique_id> <capability type='fc_host'> <wwnn>5001a4a93526d0a1</wwnn> <wwpn>5001a4ace3ee047d</wwpn> <fabric_wwn>2002000573de9a81</fabric_wwn> </capability> </capability> </device>
13.7.2. vHBA を使用したストレージプールの作成
- libvirt コードにより、virsh コマンド出力から LUN のパスを簡単に特定できます。
- 仮想マシンの移行には、ターゲットマシン上に同じ vHBA 名を持つストレージプールを定義し、起動することのみが必要になります。これを実行するには、vHBA LUN、libvirt ストレージプールおよびボリューム名を仮想マシンの XML 設定に指定する必要があります。例については、「仮想マシンが vHBA LUN を使用するよう設定する」を参照してください。
SCSI ストレージプールを作成します。
vHBA の永続的な設定を作成するには、まず以下の形式を使用して libvirt'scsi'ストレージプール XML ファイルを作成します。同一の物理 HBA 上のストレージプールを使用する単一の vHBA を作成する場合は、システム上の/dev/disk/by-{path|id|uuid|label}の場所のいずれかにするなど、<path>値の安定した場所を使用することをお勧めします。同一の物理 HBA 上のストレージプールを使用する複数の vHBA を使用する場合、<path>フィールドの値は/dev/にしなければなりません。そうでないと、ストレージプールボリュームは vHBA のいずれかのみに表示され、ホストのデバイスを NPIV 設定で複数ゲストに表示することができなくなります。例13.3 サンプル SCSI ストレージプール SML 構文
以下の例では、'scsi'ストレージプールの名前は vhbapool_host3.xml となっています。<pool type='scsi'> <name>vhbapool_host3</name> <source> <adapter type='fc_host' wwnn='5001a4a93526d0a1' wwpn='5001a4ace3ee047d'/> </source> <target> <path>/dev/disk/by-path</path> <permissions> <mode>0700</mode> <owner>0</owner> <group>0</group> </permissions> </target> </pool>または、vhbapool_host3.xml が単一 HBA 上にある複数の vHBA の 1 つである場合に以下の構文が使用されます。<pool type='scsi'> <name>vhbapool_host3</name> <source> <adapter type='fc_host' wwnn='5001a4a93526d0a1' wwpn='5001a4ace3ee047d'/> </source> <target> <path>/dev/</path> <permissions> <mode>0700</mode> <owner>0</owner> <group>0</group> </permissions> </target> </pool>重要
どちらの場合も、プールにはtype='scsi'を使用し、ソースアダプタータイプは'fc_host'にする必要があります。ホストの再起動時に使用する永続的な設定の場合、wwnnおよびwwpn属性は、libvirt により vHBA に割り当てられる値である必要があります (この例では scsi_host5)。オプションで'parent'属性は、親 scsi_host デバイスを vHBA として特定するために<adapter>フィールドで使用できます。ここで、値はvirsh nodedev-createで作成される vHBA の scsi_host ではなく、その vHBA の親になることに注意してください。'parent'属性を指定することは、プール定義の重複の有無をを確認する際にも役立ちます。これは、'fc_host'および'scsi_host'ソースアダプタープールの両方が使用されている場合により重要になります。これにより、新規の定義が別の既存ストレージプールの同一の scsi_host を使用して重複していないことを確認できます。以下の例は、ストレージプール設定の<adapter>フィールドで使用されるオプションの'parent'属性を示しています。<adapter type='fc_host' parent='scsi_host3' wwnn='5001a4a93526d0a1' wwpn='5001a4ace3ee047d'/>
プールを定義します。
ストレージプール (この例では vhbapool_host3 という名前) を永続的に定義するには、virsh pool-defineコマンドを使用します。#
virsh pool-define vhbapool_host3.xmlPool vhbapool_host3 defined from vhbapool_host3.xmlプールを起動します。
以下のコマンドでストレージプールを起動します。#
virsh pool-start vhbapool_host3Pool vhbapool_host3 started注記
プールを起動する際に、libvirtは同じwwpn:wwnn識別子を持つ vHBA がすでに存在するかどうかを検査します。存在しない場合は、指定したwwpn:wwnnの新規 vHBA が作成されます。同様に、プールを破棄する際には、libvirt は同じwwpn:wwnnの値を使用する vHBA も破棄します。autostart を有効にします。
最後に、この後のホストの再起動で仮想マシンで使用される vHBA が自動的に定義されるようにするために、ストレージプールの autostart 機能を設定します (この例では、プールの名前は vhbapool_host3)。#
virsh pool-autostart vhbapool_host3
13.7.3. 仮想マシンが vHBA LUN を使用するよう設定する
pool および volume を <source> パラメーターに指定します。
<disk type='volume' device='disk'>
<driver name='qemu' type='raw'/>
<source pool='vhbapool_host3' volume='unit:0:4:0'/>
<target dev='hda' bus='ide'/>
</disk> disk ではなく lun デバイスを指定するには、以下の例を参照してください。
<disk type='volume' device='lun' sgio='unfiltered'>
<driver name='qemu' type='raw'/>
<source pool='vhbapool_host3' volume='unit:0:4:0' mode='host'/>
<target dev='sda' bus='scsi'/>
<shareable />
</disk>fast_io_fail_tmo および dev_loss_tmo オプションを編集することが推奨されます。詳細については、「ハードウェア故障後に公開されている LUN に再接続」を参照してください。
13.7.4. vHBA ストレージプールの破棄
virsh pool-destroy コマンドで破棄することができます。
# virsh pool-destroy vhbapool_host3
virsh pool-destroy コマンドを実行すると、「vHBA の作成」で作成された vHBA が削除されることに注意してください。
# virsh nodedev-list --cap scsi_host
scsi_host5 はリストに表示されなくなります。

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.