要求ルールでは、特定のストレージ デバイスへのパスを所有するマルチパス モジュールが決定されます。また、デバイスにホストが提供するマルチパス サポートの種類が定義されます。

マルチパス モジュールの詳細については、マルチパスの概念と略語を参照してください。

要求ルールはホストの /etc/vmware/esx.conf ファイルに一覧表示されます。

ルールは、次のカテゴリに分類されます。
  • コア要求ルール:これらの要求ルールでは、どのマルチパス モジュール(NMP、HPP、またはサードパーティ製のマルチパス モジュール)が特定のデバイスを要求するのかが決定されます。
  • SATP 要求ルール:デバイスのタイプによっては、これらのルールにより、ベンダー固有のマルチパスの管理を提供する特定の SATP サブモジュールがデバイスに割り当てられます。

esxcli コマンドを使用して、コアおよび SATP 要求ルールを追加または変更できます。通常、サードパーティ製の MPP をロードするか、ホストに LUN を非表示にする要求ルールを追加します。特定のデバイスのデフォルト設定が不十分な場合に、要求ルールの変更が必要となる場合があります。

PSA 要求ルールの管理に使用できるコマンドの詳細については、『ESXCLI スタート ガイド』を参照してください。

ストレージ アレイのリストと対応する SATP および PSP については、『vSphere Compatibility Guide』の「Storage/SAN」セクションを参照してください。

マルチパスの考慮事項

ストレージ マルチパス プラグインと要求ルールを管理するとき、特定の考慮事項が適用されます。

次の考慮事項がマルチパスに役立ちます。

  • 要求ルールによってデバイスに割り当てられる SATP が存在しない場合、iSCSI デバイスまたは FC デバイスのデフォルト SATP は VMW_SATP_DEFAULT_AA になります。デフォルト PSP は VMW_PSP_FIXED です。
  • システムが SATP ルールを検索して、あるデバイスの SATP を見つけ出す場合、最初にドライバ ルールを検索します。マッチしなければベンダー ルールまたはモデル ルールを検索し、最後にトランスポート ルールを検索します。マッチしなければ、NMP はそのデバイスのデフォルトの SATP を選択します。
  • VMW_SATP_ALUA が特定のストレージ デバイスに割り当てられていて、そのデバイスが ALUA 対応ではない場合、このデバイスにマッチする要求ルールはありません。そのデバイスは、デバイスのトランスポート タイプに基づき、デフォルト SATP が要求します。
  • VMW_SATP_ALUA が要求するすべてのデバイスのデフォルト PSP は VMW_PSP_MRU です。VMW_PSP_MRU は、VMW_SATP_ALUA が報告する有効/最適化状態のパス、または有効/最適化状態のパスがない場合は、有効/非最適化状態のパスを選択します。これよりも状態の良いパスが見つかるまで、このパスが使用されます (MRU)。たとえば現在 VMW_PSP_MRU が有効/非最適化状態のパスを使用していて、有効/最適化状態のパスが使用可能になったとすると、VMW_PSP_MRU は現在のパスを有効/最適化状態のパスにスイッチします。
  • デフォルトでは通常、ALUA アレイに VMW_PSP_MRU が選択されていますが、特定の ALUA ストレージ アレイでは VMW_PSP_FIXED を使用する必要があります。使用しているストレージ アレイで VMW_PSP_FIXED が必要かどうかを確認するには、『VMware 互換性ガイド』を参照するか、ストレージ ベンダーにお問い合わせください。ALUA アレイで VMW_PSP_FIXED を使用するときは、優先パスを明示的に指定する場合を除き、ESXi ホストで機能している最適なパスを選択してそのパスをデフォルトの優先パスに設定します。ホストで選択したパスが使用できなくなると、ホストは使用可能な代替パスを選択します。ただし、優先パスを明示的に設定すると、ステータスにかかわらず優先パスが使用されます。
  • デフォルトでは、PSA 要求ルール 101 は、Dell アレイ擬似デバイスをマスクします。このデバイスのマスクを解除する場合以外は、このルールを削除しないでください。

ホストのマルチパスの要求ルールの一覧表示

esxcli コマンドを使用して、使用可能なマルチパスの要求ルールをリスト表示します。

要求ルールは、NMP、HPP、またはサードパーティ製マルチパス モジュールが特定の物理パスを管理するかどうかを指定します。各要求ルールでは、次のパラメータに基づいてパスのセットを識別します。

  • ベンダーまたはモデルの文字列
  • SATA、IDE、ファイバ チャネルなどのトランスポート
  • アダプタ、ターゲット、または LUN の場所
  • デバイス ドライバ (たとえば Mega-RAID)

手順

  • esxcli storage core claimrule list --claimrule-class=MP コマンドを実行して、マルチパスの要求ルールを一覧表示します。
    claimrule-class オプションを使用しないは、MP ルール クラスが使用されます。

例: esxcli storage core claimrule list コマンドのサンプル出力

Rule Class  Rule   Class    Type       Plugin     Matches
MP           10    runtime  vendor     HPP        vendor=NVMe model=*              
MP           10    file     vendor     HPP        vendor=NVMe model=*              
MP           50    runtime  transport  NMP        transport=usb
MP           51    runtime  transport  NMP        transport=sata
MP           52    runtime  transport  NMP        transport=ide
MP           53    runtime  transport  NMP        transport=block
MP           54    runtime  transport  NMP        transport=unknown
MP          101    runtime  vendor     MASK_PATH  vendor=DELL model=Universal Xport
MP          101    file     vendor     MASK_PATH  vendor=DELL model=Universal Xport
MP          200    runtime  vendor     MPP_1      vendor=NewVend model=* 
MP          200    file     vendor     MPP_1      vendor=NewVend model=* 
MP          201    runtime  location   MPP_2      adapter=vmhba41 channel=* target=* lun=* 
MP          201    file     location   MPP_2      adapter=vmhba41 channel=* target=* lun=* 
MP          202    runtime  driver     MPP_3      driver=megaraid 
MP          202    file     driver     MPP_3      driver=megaraid 
MP          65535  runtime  vendor     NMP        vendor=* model=*
この例は次のような意味です。
  • NMP は、USB、SATA、IDE、およびブロック SCSI トランスポートを使用するストレージ デバイスに接続されているすべてのパスを要求します。
  • HPP、MPP_1、MPP_2、および MPP_3 のルールが追加されたため、モジュールは指定したデバイスを要求できるようになりました。たとえば、HPP はベンダー NVMe のすべてのデバイスを要求します。インボックス nvme ドライバで処理されるすべてのデバイスが、実際のベンダーに関係なく、要求されます。MPP_1 モジュールは、NewVend ストレージ アレイの任意のモデルに接続されているすべてのパスを要求します。
  • MASK_PATH モジュールを使用して、使用されていないデバイスをホストから隠します。デフォルトで、PSA 要求ルール 101 は、DELL のベンダー文字列と Universal Xport のモデル文字列で Dell アレイ擬似デバイスをマスクします。
  • 出力の Rule Class 列は、要求ルールのカテゴリを示します。カテゴリは、MP (マルチパス プラグイン)、Filter (フィルタ)、または VAAI のいずれかです。
  • Class 列は、定義されているルールとロードされているルールを示します。Class 列の file パラメータは、ルールが定義されていることを表します。runtime パラメータは、ルールがシステムにロードされたことを表します。ユーザー定義の要求ルールを有効にするには、同じルール番号の行が 2 つ存在しなければなりません。1 つは file パラメータの行で、もう 1 つは runtime の行です。いくつかのデフォルトのシステム定義要求ルールには、Class が runtime となっている行が 1 つのみあります。これらのルールは変更できません。
  • デフォルト ルール 65535 は、 要求を受けていないすべてのパスを NMP に割り当てます。このルールを削除しないでください。

マルチパスの要求ルールの追加

esxcli コマンドを使用して、マルチパス PSA 要求ルールをシステムの要求ルール セットに追加します。新規の要求ルールを有効にするには、まずルールを定義してから、使用しているシステムにロードします。

次のような場合に PSA 要求ルールを追加します。
  • 新規のサードパーティ製マルチパス モジュールをロードしており、このモジュールが要求するパスを定義する必要がある。
  • ネイティブの HPP を有効にする必要がある。
注意: 2 つの異なるプラグインが同じデバイスへのパスを要求するルールは作成できません。これらの要求ルールを作成すると失敗し、 vmkernel.log に警告が表示されます。

前提条件

ESXCLI をインストールします。ESXCLI スタート ガイドを参照してください。トラブルシューティングするには、ESXi Shellesxcli コマンドを実行します。

手順

  1. 新規の要求ルールを定義するには、次のコマンドを使用します。
    esxcli storage core claimrule add

    このコマンドには次のオプションがあります。

    オプション 説明
    -A|--adapter=<adapter> 使用するパスのアダプタ。--typelocation の場合にのみ有効です。
    -u|--autoassign 特性に基づいて要求ルールを追加します。ルール番号は不要です。
    -C|--channel=<channel> 使用するパスのチャネル。--typelocation の場合にのみ有効です。
    -c|--claimrule-class=<cl> この操作で使用する要求ルール クラス。MP(デフォルト)、Filter、または VAAI を指定できます。

    新しいアレイのハードウェア アクセラレーションを設定するには、VAAI フィルタ用と VAAI プラグイン用に 1 つずつ要求ルールを追加します。詳細については、ハードウェア アクセラレーションの要求ルールの追加を参照してください。

    -d|--device=<device_uid> デバイスの UID。--typedevice の場合にのみ有効です。
    -D|--driver=<driver> 使用するパスの HBA 用ドライバ。--typedriver の場合にのみ有効です。
    -f|--force 要求ルールで妥当性チェックを無視し、ルールを設定するように強制します。
    --force-reserved 予約済みのルール ID 範囲の保護をオーバーライドします。

    予約済みの要求ルールは、ID が 100 未満のルールです。それらを使用して、ローカル デバイスを特定のプラグインに(たとえば、NVMe デバイスを HPP に)再割り当てすることができます。

    --if-unset=<str> この上級ユーザー変数が 1 に設定されていない場合にはこのコマンドを実行します。
    -i|--iqn=<iscsi_name> ターゲットの iSCSI 修飾名。--typetarget の場合にのみ有効です。
    -L|--lun=<lun_id> パスの LUN。--typelocation の場合にのみ有効です。

    LUN ID は、詳細設定オプション /Disk/MaxLUN の値を超えないように設定します。

    -M|--model=<model> 使用するパスのモデル。--typevendor の場合にのみ有効です。

    有効な値は、SCSI INQUIRY 文字列からのモデル文字列の値です。モデル文字列の値を表示するには、各デバイスで vicfg-scsidevs <conn_options> -l を実行します。

    -P|--plugin=<plugin> 使用する PSA プラグイン。値は NMPMASK_PATH、または HPP です。サード パーティは、独自の PSA プラグインを指定することもできます。必須。
    -r|--rule=<rule_ID> 使用する ルール ID。ルール ID は、要求ルールを評価する順序を示します。ユーザー定義の要求ルールは、101 から始まる数値順に評価されます。

    使用可能なルール ID を特定するには、esxcli storage core claimrule list を実行します。

    -T|--target=<target> 使用するパスのターゲット。--typelocation の場合にのみ有効です。
    -R|--transport=<transport>

    使用するパスの転送。--typetransport の場合にのみ有効です。次の値がサポートされています。

    • block: ブロック ストレージ
    • fc: ファイバ チャネル
    • iscsivendor: iSCSI
    • iscsi: 現在使用されていません
    • ide: IDE ストレージ
    • sas: SAS ストレージ
    • sata: SATA ストレージ
    • usb: USB ストレージ
    • parallel: パラレル
    • fcoe: FCoE
    • unknown
    -t|--type=<type> 処理に使用する一致タイプ。有効な値は次のとおりです。必須。
    • vendor
    • location
    • driver
    • transport
    • device
    • target
    -V|--vendor=<vendor> 使用するパスのベンダー。--typevendor の場合にのみ有効です。

    有効な値は、SCSI INQUIRY 文字列からのベンダー文字列の値です。ベンダー文字列の値を表示するには、各デバイスで vicfg-scsidevs <conn_options> -l を実行します。

    --wwnn=<wwnn> ターゲットの WWNN (World-Wide Node Number)。
    --wwpn=<wwpn> ターゲットの WWPN (World-Wide Port Number)。
    -a|--xcopy-use-array-values アレイからレポートされた値を使用して、ストレージ アレイに送信する XCOPY コマンドを作成します。これは、VAAI の要求ルールにのみ適用されます。
    -s|--xcopy-use-multi-segs XCOPY 要求を発行する場合は、複数のセグメントを使用します。--xcopy-use-array-values が指定されている場合にのみ有効です。
    -m|--xcopy-max-transfer-size アレイからレポートされた値とは異なる転送サイズを使用する場合の最大データ転送サイズ (MB)。--xcopy-use-array-values が指定されている場合にのみ有効です。
    -k|--xcopy-max-transfer-size-kib アレイからレポートされた値とは異なる転送サイズを使用する場合の、XCOPY コマンドの最大転送サイズ (KB)。--xcopy-use-array-values が指定されている場合にのみ有効です。
  2. システムに新規の要求ルールをロードするには、次のコマンドを使用します。
    esxcli storage core claimrule load
    このコマンドは、新規作成されたマルチパスの要求ルールすべてを、 esx.conf 構成ファイルから VMkernel にロードします。このコマンドにはオプションはありません。
  3. ロードされている要求ルールを適用するには、次のコマンドを使用します。
    esxcli storage core claimrule run

    このコマンドには次のオプションがあります。

    オプション 説明
    -A|--adapter=<adapter> --typelocation の場合に、要求ルールを実行するパスの HBA の名前。すべてのアダプタからのパスで要求ルールを実行する場合は、このオプションは省略します。
    -C|--channel=<channel> --typelocation の場合は、この操作で使用するパスのチャネルを指定します。すべてのチャネル番号を持つパスで要求ルールを実行するには、このオプションを省略します。
    -c|--claimrule-class=<cl> この操作で使用する要求ルール クラス。
    -d|--device=<device_uid> デバイスの UID。
    -L|--lun=<lun_id> --typelocation の場合は、要求ルールを実行するパスの LUN を指定します。すべての LUN を持つパスで要求ルールを実行するには、このオプションを省略します。
    -p|--path=<path_uid> --typepath の場合、このオプションは、要求ルールを実行するパスの一意の識別子 (UID) またはランタイム名を示します。
    -T|--target=<target> --typelocation の場合は、要求ルールを実行するパスのターゲットを指定します。すべてのターゲット番号を持つパスで要求ルールを実行するには、このオプションを省略します。
    -t|--type=<location|path|all> 実行する要求のタイプ。デフォルトでは all が使用されます。つまり、要求ルールが特定のパスに制限されずに実行されます。有効な値は、locationpath、および all です。
    -w|--wait このオプションは、--type all も使用する場合にのみ使用できます。

    このオプションが含まれている場合、要求処理を実行する前に、パスが解決されるまで待機します。その場合、システム上のすべてのパスが検出されたと考えられるまで、システムは要求プロセスを開始しません。

    要求プロセスが開始された後、デバイスの登録が完了するまでコマンドは返されません。

    要求中または検出中にパスを追加または削除すると、このオプションが正しく機能しない場合があります。

例: マルチパスの要求ルールの定義

次の例では、ルール番号 500 を追加してロードします。このルールは、モデル文字列に NewMod およびベンダー文字列に NewVend を持つすべてのパスを NMP プラグインに要求します。

# esxcli storage core claimrule add -r 500 -t vendor -V NewVend -M NewMod -P NMP

# esxcli storage core claimrule load

esxcli storage core claimrule list コマンドを実行すると、リストに新規の要求ルールが表示されます。

次の出力は、要求ルール 500 がシステムにロードされていて、アクティブなことを示します。
Rule Class  Rule   Class    Type       Plugin     Matches
...         ...    ...      ...        ...        ...
MP          500    runtime  vendor     NMP        vendor=NewVend model=NewMod  
MP          500    file     vendor     NMP        vendor=NewVend model=NewMod 

マルチパスの要求ルールの削除

esxcli コマンドを使用して、マルチパス PSA 要求ルールをシステムの要求ルール セットから削除します。

前提条件

ESXCLI をインストールします。ESXCLI スタート ガイドを参照してください。トラブルシューティングするには、ESXi Shellesxcli コマンドを実行します。

手順

  1. ある要求ルールを要求ルール セットから削除します。
    esxcli storage core claimrule remove
    注: デフォルトでは、PSA 要求ルール 101 は、Dell アレイ擬似デバイスをマスクします。このデバイスのマスクを解除する場合以外は、このルールを削除しないでください。

    このコマンドには次のオプションがあります。

    オプション 説明
    -c|--claimrule-class=<str>

    要求ルールのクラスを指定します(MP、Filter、VAAI)。

    -P|--plugin=<str> プラグインを指定します。
    -r|--rule=<long> ルール ID を指定します。
    この手順は、File クラスから要求ルールを削除します。
  2. システムから要求ルールを削除します。
    esxcli storage core claimrule load
    この手順は、Runtime クラスから要求ルールを削除します。

パスのマスク

ホストがストレージ デバイスや LUN にアクセスできないよう、または LUN への個々のパスを使用できないように設定できます。esxcli コマンドを使用して、パスをマスクします。パスをマスクする場合、指定したパスに MASK_PATH プラグインを割り当てる要求ルールを作成します。

前提条件

ESXCLI をインストールします。ESXCLI スタート ガイドを参照してください。トラブルシューティングするには、ESXi Shellesxcli コマンドを実行します。

手順

  1. 次に使用可能なルール ID を確認します。
    esxcli storage core claimrule list
    パスのマスクに使用する要求ルールでは、ルール ID を 101 ~ 200 の範囲とします。前述のコマンドでルール 101 と 102 があることが判明したら、追加するルールとして 103 を指定できます。
  2. プラグインの新しい要求ルールを作成し、MASK_PATH プラグインをパスに割り当てます。
    esxcli storage core claimrule add -P MASK_PATH
  3. MASK_PATH 要求ルールをシステムにロードします。
    esxcli storage core claimrule load
  4. MASK_PATH 要求ルールが正しく追加されたことを確認します。
    esxcli storage core claimrule list
  5. マスクされたパスに要求ルールがある場合は、そのルールを削除します。
    esxcli storage core claiming unclaim
  6. パス要求ルールを実行します。
    esxcli storage core claimrule run

結果

MASK_PATH プラグインをパスに割り当てると、パスの状態が不明になり、ホストで管理できなくなります。その結果、マスクされているパスの情報を表示するコマンドを使用すると、パスの状態は非活動であると表示されます。

例: LUN のマスキング

この例では、ストレージ アダプタ vmhba2 および vmhba3 を介してアクセスされるターゲット T1 および T2 の LUN 20 をマスクします。

  1. #esxcli storage core claimrule list
  2. #esxcli storage core claimrule add -P MASK_PATH -r 109 -t location -A vmhba2 -C 0 -T 1 -L 20 
    #esxcli storage core claimrule add -P MASK_PATH -r 110 -t location -A vmhba3 -C 0 -T 1 -L 20 
    #esxcli storage core claimrule add -P MASK_PATH -r 111 -t location -A vmhba2 -C 0 -T 2 -L 20 
    #esxcli storage core claimrule add -P MASK_PATH -r 112 -t location -A vmhba3 -C 0 -T 2 -L 20
  3. #esxcli storage core claimrule load
  4. #esxcli storage core claimrule list
  5. #esxcli storage core claiming unclaim -t location -A vmhba2 
    #esxcli storage core claiming unclaim -t location -A vmhba3
  6. #esxcli storage core claimrule run

パスのマスク解除

ホストがマスクされたストレージ デバイスにアクセスする必要がある場合、そのデバイスのパスのマスクを解除します。

注: デバイス ID やベンダーなどのデバイス プロパティを使用して要求解除操作を実行したとき、MASK_PATH プラグインによるパスの要求は解除されません。MASK_PATH プラグインは、要求したパスのデバイス プロパティを追跡しません。

前提条件

ESXCLI をインストールします。ESXCLI スタート ガイドを参照してください。トラブルシューティングするには、ESXi Shellesxcli コマンドを実行します。

手順

  1. MASK_PATH 要求ルールを削除します。
    esxcli storage core claimrule remove -r rule#
  2. 要求ルールが正しく削除されたことを確認します。
    esxcli storage core claimrule list
  3. パスの要求ルールを構成ファイルから VMkernel に再ロードします。
    esxcli storage core claimrule load
  4. マスクされたストレージ デバイスへのパスごとに esxcli storage core claiming unclaim コマンドを実行します。
    例:

    esxcli storage core claiming unclaim -t location -A vmhba0 -C 0 -T 0 -L 149

  5. パス要求ルールを実行します。
    esxcli storage core claimrule run

結果

これで、ホストは、今までマスクされていたストレージ デバイスにアクセスできます。

NMP SATP ルールの定義

NMP SATP 要求ルールでは、ストレージ デバイスをどの SATP で管理するのかを定義します。通常は、ストレージ デバイスに指定されたデフォルトの SATP を使用しても問題ありません。デフォルト設定では不十分な場合は、esxcli コマンドを使用して特定のデバイスの SATP を変更します。

特定のストレージ アレイ用にサードパーティ製の SATP をインストールする場合は、SATP ルールの作成が必要な場合があります。

前提条件

ESXCLI をインストールします。ESXCLI スタート ガイドを参照してください。トラブルシューティングするには、ESXi Shellesxcli コマンドを実行します。

手順

  1. 特定の SATP 用の要求ルールを追加するには、esxcli storage nmp satp rule add コマンドを実行します。このコマンドには次のオプションがあります。
    オプション 説明
    -b|--boot このルールは、起動時に追加されるシステムのデフォルト ルールです。esx.conf を変更する、またはホスト プロファイルに追加しないでください。
    -c|--claim-option=string SATP 要求ルールを追加するときに、要求のオプション文字列を設定します。
    -e|--description=string SATP 要求ルールを追加するときに、要求ルールの説明を設定します。
    -d|--device=string SATP 要求ルールを追加するときに、デバイスを設定します。デバイスのルールは、ベンダーまたはモデルのルール、およびドライバのルールと相互に排他的です。
    -D|--driver=string SATP 要求ルールを追加するときに、ドライバ文字列を設定します。ドライバのルールは、ベンダーまたはモデルのルールと相互に排他的です。
    -f|--force 要求ルールで妥当性チェックを無視し、ルールを設定するように強制します。
    -h|--help ヘルプ メッセージを表示します。
    -M|--model=string SATP 要求ルールを追加するときに、モデル文字列を設定します。ベンダーまたはモデルのルールは、ドライバのルールと相互に排他的です。
    -o|--option=string SATP 要求ルールを追加するときに、オプション文字列を設定します。
    -P|--psp=string SATP 要求ルールのデフォルトの PSP を設定します。
    -O|--psp-option=string SATP 要求ルールの PSP オプションを設定します。
    -s|--satp=string 新規ルールを追加する SATP です。
    -R|--transport=string SATP 要求ルールを追加するときに、要求のトランスポート タイプ文字列を設定します。
    -t|--type=string SATP 要求ルールを追加するときに、要求タイプを設定します。
    -V|--vendor=string SATP 要求ルールを追加するときに、ベンダー文字列を設定します。ベンダーまたはモデルのルールは、ドライバのルールと相互に排他的です。
    注: SATP ルールを検索して、あるデバイスの SATP を見つけ出す場合、NMP は最初にドライバ ルールを検索します。マッチしなければベンダー ルールまたはモデル ルールを検索し、最後にトランスポート ルールを検索します。ここでもマッチしなければ、NMP はそのデバイスのデフォルトの SATP を選択します。
  2. ホストを再起動します。

例: NMP SATP ルールの定義

次のサンプル コマンドでは、VMW_SATP_INV プラグインを割り当て、ベンダー文字列に NewVend およびモデル文字列に NewMod を持つストレージ アレイを管理します。

# esxcli storage nmp satp rule add -V NewVend -M NewMod -s VMW_SATP_INV

esxcli storage nmp satp list -s VMW_SATP_INV コマンドを実行すると、VMW_SATP_INV ルールのリストに新しいルールが表示されます。