Red Hat Training

A Red Hat training course is available for RHEL 8

11.2.2.8. CLI で仮想マシンに vHBA デバイスを使用した SCSI ベースのストレージを作成して割り当てる手順

ここでは、vHBA デバイスを使用した SCSI ベースのストレージプールおよびストレージボリュームの作成と、仮想マシンのボリュームの割り当てを説明します。

推奨事項

N_Port ID Virtualization (NPIV) は、1 つの物理ファイバーチャンネルのホストバスアダプター (HBA) の共有を可能にするソフトウェアテクノロジーです。これにより、複数の仮想マシンが複数の物理ホストから同じストレージを認識できるため、ストレージの移行パスが容易になります。そのため、正しいストレージパスが指定されていれば、移行を使用してストレージを作成またはコピーする必要はありません。

仮想化では、仮想ホストバスアダプター (vHBA) が、仮想マシンの論理ユニット番号 (LUN) を制御します。複数の仮想マシン間でファイバーチャネルデバイスパスを共有するホストには、仮想マシンごとに vHBA を作成する必要があります。1 つの vHBA を、複数の仮想マシンで使用することはできません。

NPIV の各 vHBA は、その親 HBA と、独自の World Wide Node Name (WWNN) および World Wide Port Name (WWPN) で識別されます。ストレージのパスは、WWNN および WWPN の値で決定します。親 HBA は、scsi_host# または WWNN/WWPN ペアとして定義できます。

注記

親 HBA が scsi_host# として定義され、ハードウェアがホストマシンに追加されている場合、scsi_host# の割り当ては変更する可能性があります。したがって、WWNN/WWPN のペアを使用して親 HBA を定義することが推奨されます。

これは、vHBA 設定を保持するため、vHBA に基づいて libvirt ストレージを定義することが推奨されます。

libvirt ストレージプールを使用すると、主に以下の利点があります。

  • libvirt コードは、virsh コマンド出力から LUN のパスを簡単に検索できます。
  • 仮想マシンの移行には、ターゲットマシンで同じ vHBA 名を持つストレージプールの定義と起動のみが必要です。これを行うには、仮想マシンの XML 設定で、vHBA LUN、libvirt ストレージプール、およびボリューム名を指定する必要があります。
注記

vHBA を作成する前に、ホストの LUN でストレージアレイ (SAN) 側のゾーンを設定して、仮想マシン間の分離を提供し、データの破損を防ぐことが推奨されます。

永続的な vHBA 構成を作成するには、最初に libvirt の scsi ストレージプールの XML ファイルを作成します。XML ファイルの詳細は、「vHBA の作成」を参照してください。同じ物理 HBA 上のストレージプールを使用する 1 つの vHBA を作成する場合は、システムの /dev/disk/by-{path|id|uuid|label} のような場所など、<path> 値に安定した場所を使用することが推奨されます。

同じ物理 HBA 上でストレージプールを使用する複数の vHBA を作成する場合は、<path> フィールドの値を /dev/ のみにする必要があります。それ以外の場合は、ストレージプールボリュームが 1 つの vHBA からしか確認できず、NPIV 構成で、ホストのデバイスを複数の仮想マシンに公開することができません。

<path> と、<target> の要素の詳細は、アップストリームの libvirt ドキュメント を参照してください。

11.2.2.8.1. vHBA の作成

ここでは、仮想ホストバスアダプター (vHBA) の作成方法を説明します。

手順

  1. virsh nodedev-list --cap vports コマンドを使用して、ホストシステムの HBA を見つけます。

    以下の例は、vHBA に対応する HBA が 2 つ搭載されているホストを示しています。

    # virsh nodedev-list --cap vports
    scsi_host3
    scsi_host4
  2. virsh nodedev-dumpxml HBA_device コマンドを使用して、HBA の詳細を表示します。

    # virsh nodedev-dumpxml scsi_host3

    コマンドの出力には、vHBA の作成に使用される <name><wwnn>、および <wwpn> フィールドが一覧表示されます。<max_vports> は、サポートされる vHBA の最大数を示します。以下に例を示します。

    <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 の作成後に更新されます。

  3. vHBA ホスト用に、以下のいずれかの XML ファイルを作成します。この例では、ファイルの名前は vhba_host3.xml です。

    次の例では、scsi_host3 を使用して親 vHBA を説明します。

    <device>
      <parent>scsi_host3</parent>
      <capability type='scsi_host'>
        <capability type='fc_host'>
        </capability>
      </capability>
    </device>

    次の例では、WWNN/WWPN のペアを使用して親 vHBA を説明します。

    <device>
      <name>vhba</name>
      <parent wwnn='20000000c9848140' wwpn='10000000c9848140'/>
      <capability type='scsi_host'>
        <capability type='fc_host'>
        </capability>
      </capability>
    </device>
    注記

    WWNN および WWPN の値は、前の手順で確認した HBA の詳細の値と一致する必要があります。

    <parent> フィールドは、この vHBA デバイスに関連付ける HBA デバイスを指定します。<device> タグの詳細は、ホスト用の新しい vHBA デバイスを作成するために、次の手順で使用されます。nodedev の XML 形式の詳細は、 libvirt アップストリームページ を参照してください。

    注記

    virsh コマンドでは、parent_wwnn 属性、parent_wwpn 属性、または parent_fabric_wwn 属性を定義する方法が提供されません。

  4. virsh nodev-create コマンドを使用して、前の手順で作成した XML ファイルに基づいて VHBA を作成します。

    # virsh nodedev-create vhba_host3
    Node device scsi_host5 created from vhba_host3.xml

検証

  • virsh nodedev-dumpxml コマンドで、新しい vHBA の詳細 (scsi_host5) を確認します。

    # 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>