日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

ONTAP を使用した RHEL 8.4 用 NVMe-oF ホスト構成

寄稿者 netapp-ranuk このページの PDF をダウンロード

サポート性

NVMe over Fabrics または NVMe-oF ( NVMe/FC やその他の転送を含む)は、 ANA ( Asymmetric Namespace Access )を使用する RHEL 8.4 でサポートされます。ANA は、 NVMe-oF 環境では ALUA に相当し、現在はカーネル内 NVMe マルチパスで実装されています。RHEL 8.4 および ONTAP で ANA を使用し、カーネル内で NVMe マルチパスを使用して NVMe-oF を有効にする方法について、詳しくはこちらで説明しています。

の機能

  • RHEL 8.2 以降 'nvme-fc auto-connect' スクリプトはネイティブの 'nvme-cli' パッケージに含まれています外部ベンダーが提供する outbox 自動接続スクリプトをインストールする代わりに、これらのネイティブ自動接続スクリプトを使用できます。

  • RHEL 8.2 以降、ネイティブの udev ルールは、 NVMe マルチパスのラウンドロビンロードバランシングを可能にする「 nvme-cli 」パッケージの一部としてすでに提供されています。( RHEL 8.1 の場合と同様に)これ以上このルールを手動で作成する必要はありません。

  • RHEL 8.2 以降では、新規の同じホスト上で NVMe トラフィックと SCSI トラフィックの両方を実行できます。実際、これは、お客様に一般的に導入されるホスト構成であると想定されています。したがって、 SCSI の場合、 SCSI LUN では「 m-mmultipath 」を通常どおりに設定すると「 m path 」デバイスになりますが、 NVMe マルチパスを使用してホスト上の NVMe-oF マルチパスデバイスを設定することができます。

  • RHEL 8.2 以降、ネイティブの「 nvme-cli 」パッケージに含まれるネットアッププラグインでは、 ONTAP ネームスペースと同様に ONTAP の詳細を表示できます。

既知の制限

RHEL 8.4 では、カーネル内の NVMe マルチパスはデフォルトで無効なままになります。そのため、手動で有効にする必要があります。

設定要件

を参照してください "NetApp Interoperability Matrix を参照してください" サポートされている構成に関する正確な情報については、を参照

カーネル内 NVMe マルチパスを有効化しています

  1. サーバに RHEL 8.4 GA をインストールします。インストールが完了したら、指定した RHEL 8.4 GA カーネルを実行していることを確認します。を参照してください "NetApp Interoperability Matrix を参照してください" サポートされるバージョンの最新のリストについては、を参照してください。

  2. インストールが完了したら、指定した RHEL 8.4 カーネルを実行していることを確認します。を参照してください "NetApp Interoperability Matrix を参照してください" サポートされるバージョンの最新のリストについては、を参照してください。

    # uname -r
    4.18.0-305.el8.x86_64
  3. 「 nvme-cli 」パッケージをインストールします。

    # rpm -qa|grep nvme-cli
    nvme-cli-1.12-3.el8.x86_64
  4. カーネル内の NVMe マルチパスを有効にします。

    # grubby --args=nvme_core.multipath=Y --update-kernel /boot/vmlinuz-4.18.0-305.el8.x86_64
  5. ホストで、 /etc/nvme/hostnqn に示されたホスト NQN 文字列を確認し、 ONTAP アレイの対応するサブシステムのホスト NQN 文字列に一致することを確認します。例

    # cat /etc/nvme/hostnqn
    nqn.2014-08.org.nvmexpress:uuid:9ed5b327-b9fc-4cf5-97b3-1b5d986345d1
    ::> vserver nvme subsystem host show -vserver vs_fcnvme_141
    Vserver     Subsystem       Host NQN
    ----------- --------------- ----------------------------------------------------------
    vs_fcnvme_14 nvme_141_1     nqn.2014-08.org.nvmexpress:uuid:9ed5b327-b9fc-4cf5-97b3-1b5d986345d1
    注記 ホストの NQN 文字列が一致しない場合は、「 vserver modify 」コマンドを使用して、ホストのホスト NQN 文字列「 /etc/nvme/hostnqn 」に一致するように、対応する ONTAP サブシステムでホストの NQN 文字列を更新する必要があります。
  6. ホストをリブートします。

    注記

    NVMe と SCSI の両方のトラフィックを同じホストで同時に実行する場合は、 ONTAP ネームスペースにはカーネル内の NVMe マルチパスを、 ONTAP LUN にはそれぞれ dm-multipath を使用することを推奨します。つまり、 dm-multipath がこれらのネームスペースデバイスを要求しないように、 ONTAP ネームスペースを dm-multipath から除外する必要があります。これを行うには 'enable_foreign 設定を /etc/multipath.conf ファイルに追加します

    # cat /etc/multipath.conf
    defaults {
            enable_foreign     NONE
    }
  7. multipathd デーモンを再起動します。新しい設定が有効になるように、「 ystemctl restart multipathd 」コマンドを実行します。

NVMe/FC を設定しています

Broadcom / Emulex

  1. サポートされているアダプタを使用していることを確認します。を参照してください "NetApp Interoperability Matrix を参照してください" サポートされているアダプタの最新のリストについては、を参照してください。

    # cat /sys/class/scsi_host/host*/modelname
    LPe32002-M2
    LPe32002-M2
    # cat /sys/class/scsi_host/host*/modeldesc
    Emulex LightPulse LPe32002-M2 2-Port 32Gb Fibre Channel Adapter
    Emulex LightPulse LPe32002-M2 2-Port 32Gb Fibre Channel Adapter
  2. 推奨される Broadcom lpfc ファームウェアとインボックスドライバを使用していることを確認します。を参照してください "NetApp Interoperability Matrix を参照してください" サポートされているアダプタドライバとファームウェアのバージョンの最新リストについては、を参照してください。

    # cat /sys/class/scsi_host/host*/fwrev
    12.8.340.8, sli-4:2:c
    12.8.340.8, sli-4:2:c
    # cat /sys/module/lpfc/version
    0:12.8.0.5
  3. lpfc_enable_fc4_type が 3 に設定されていることを確認します

    # cat /sys/module/lpfc/parameters/lpfc_enable_fc4_type
    3
  4. イニシエータポートが起動して実行中であること、およびターゲット LIF が表示されていることを確認してください。

    # cat /sys/class/fc_host/host*/port_name
    0x100000109b1c1204
    0x100000109b1c1205
    # cat /sys/class/fc_host/host*/port_state
    Online
    Online
    # cat /sys/class/scsi_host/host*/nvme_info
    NVME Initiator Enabled
    XRI Dist lpfc0 Total 6144 IO 5894 ELS 250
    NVME LPORT lpfc0 WWPN x100000109b1c1204 WWNN x200000109b1c1204 DID x011d00 ONLINE
    NVME RPORT WWPN x203800a098dfdd91 WWNN x203700a098dfdd91 DID x010c07 TARGET DISCSRVC ONLINE
    NVME RPORT WWPN x203900a098dfdd91 WWNN x203700a098dfdd91 DID x011507 TARGET DISCSRVC ONLINE
    NVME Statistics
    LS: Xmt 0000000f78 Cmpl 0000000f78 Abort 00000000
    LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 000000002fe29bba Issue 000000002fe29bc4 OutIO 000000000000000a
    abort 00001bc7 noxri 00000000 nondlp 00000000 qdepth 00000000 wqerr 00000000 err 00000000
    FCP CMPL: xb 00001e15 Err 0000d906
    NVME Initiator Enabled
    XRI Dist lpfc1 Total 6144 IO 5894 ELS 250
    NVME LPORT lpfc1 WWPN x100000109b1c1205 WWNN x200000109b1c1205 DID x011900 ONLINE
    NVME RPORT WWPN x203d00a098dfdd91 WWNN x203700a098dfdd91 DID x010007 TARGET DISCSRVC ONLINE
    NVME RPORT WWPN x203a00a098dfdd91 WWNN x203700a098dfdd91 DID x012a07 TARGET DISCSRVC ONLINE
    NVME Statistics
    LS: Xmt 0000000fa8 Cmpl 0000000fa8 Abort 00000000
    LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 000000002e14f170 Issue 000000002e14f17a OutIO 000000000000000a
    abort 000016bb noxri 00000000 nondlp 00000000 qdepth 00000000 wqerr 00000000 err 00000000
    FCP CMPL: xb 00001f50 Err 0000d9f8

1MB I/O サイズのイネーブル化(任意)

ONTAP は Identify コントローラデータに MDT ( MAX Data 転送サイズ) 8 を報告します。つまり、最大 I/O 要求サイズは最大 1 MB でなければなりません。ただし 'Broadcom NVMe/FC ホストのサイズが 1 MB の問題 I/O 要求の場合 'lpfc パラメータ 'lpfc_sg_seg_cnt' もデフォルト値の 64 から 256 までバンピングする必要があります次の手順を使用して実行します。

  1. それぞれの「 m odprobe lpfc.conf 」ファイルに「 256 」という値を追加します。

    # cat /etc/modprobe.d/lpfc.conf
    options lpfc lpfc_sg_seg_cnt=256
  2. 「 racut-f 」コマンドを実行し、ホストを再起動します。

  3. リブート後、対応する「 sysfs 」の値を確認して、上記の設定が適用されていることを確認します。

    # cat /sys/module/lpfc/parameters/lpfc_sg_seg_cnt
    256

    これで、 Broadcom FC-NVMe ホストが ONTAP ネームスペースデバイスで最大 1MB の I/O 要求を送信できるようになります。

Marvell/QLogic

RHEL 8.4 GA カーネルに含まれているネイティブインボックスの qla2xxx ドライバには、 ONTAP のサポートに不可欠な最新のアップストリーム修正が含まれています。

  • 次のコマンドを使用して、サポートされているアダプタドライバとファームウェアのバージョンを実行していることを確認します。

    # cat /sys/class/fc_host/host*/symbolic_name
    QLE2742 FW:v9.06.02 DVR:v10.02.00.104-k
    QLE2742 FW:v9.06.02 DVR:v10.02.00.104-k
  • 次のコマンドを使用して、 Marvell アダプタを NVMe/FC イニシエータとして機能できるように、「 ql2xnvmeenable 」が設定されていることを確認します。

    # cat /sys/module/qla2xxx/parameters/ql2xnvmeenable
    1

NVMe-oF を検証しています

  • カーネル内の NVMe マルチパスが有効になっていることを確認します。

    # cat /sys/module/nvme_core/parameters/multipath
    Y
  • 適切な NVMe-oF 設定である「 NetApp ONTAP Controller 」に設定された「 m odel 」と「 load balancing iopolicy 」が「 round-robin 」に設定されていることを確認し、それぞれの ONTAP ネームスペースがホストに正しく反映されるようにします。

    # cat /sys/class/nvme-subsystem/nvme-subsys*/model
    NetApp ONTAP Controller
    NetApp ONTAP Controller
    # cat /sys/class/nvme-subsystem/nvme-subsys*/iopolicy
    round-robin
    round-robin

NVMe/FC

  1. NVMe/FC ONTAP ネームスペースがホストに正しく反映されていることを確認します。

    # nvme list
    Node         SN                    Model                  Namespace Usage
    -------      -----------------     -------------          --------- ------------
    /dev/nvme0n1 814vWBNRwf9HAAAAAAAB  NetApp ONTAP Controller   1      85.90 GB / 85.90 GB
    
    Format       FW Rev
    ------       -------
    4 KiB + 0 B  FFFFFFFF
  2. 各パスのコントローラの状態がライブで、適切な ANA ステータスであることを確認します。

    # nvme list-subsys /dev/nvme0n1
    nvme-subsys0 - NQN=nqn.1992-08.com.netapp:sn.5f5f2c4aa73b11e9967e00a098df41bd:subsystem.nvme_141_1
    \
    +- nvme0 fc traddr=nn-0x203700a098dfdd91:pn-0x203800a098dfdd91 host_traddr=nn-0x200000109b1c1204:pn-0x100000109b1c1204 live inaccessible
    +- nvme1 fc traddr=nn-0x203700a098dfdd91:pn-0x203900a098dfdd91 host_traddr=nn-0x200000109b1c1204:pn-0x100000109b1c1204 live inaccessible
    +- nvme2 fc traddr=nn-0x203700a098dfdd91:pn-0x203a00a098dfdd91 host_traddr=nn-0x200000109b1c1205:pn-0x100000109b1c1205 live optimized
    +- nvme3 fc traddr=nn-0x203700a098dfdd91:pn-0x203d00a098dfdd91 host_traddr=nn-0x200000109b1c1205:pn-0x100000109b1c1205 live optimized
  3. ネットアッププラグインに ONTAP ネームスペースデバイスごとに適切な値が表示されていることを確認します。

    # nvme netapp ontapdevices -o column
    Device        Vserver         Namespace Path                            NSID
    --------     -----------      ---------------------------               -------
    /dev/nvme0n1  vs_fcnvme_141   /vol/fcnvme_141_vol_1_1_0/fcnvme_141_ns    1
    UUID                                   Size
    -----                                  --------
    72b887b1-5fb6-47b8-be0b-33326e2542e2   85.90GB
    
    # nvme netapp ontapdevices -o json
    {
    "ONTAPdevices" : [
        {
            "Device" : "/dev/nvme0n1",
            "Vserver" : "vs_fcnvme_141",
            "Namespace_Path" : "/vol/fcnvme_141_vol_1_1_0/fcnvme_141_ns",
            "NSID" : 1,
            "UUID" : "72b887b1-5fb6-47b8-be0b-33326e2542e2",
            "Size" : "85.90GB",
            "LBA_Data_Size" : 4096,
            "Namespace_Size" : 20971520
        }
      ]
    }

トラブルシューティング

NVMe/FC 障害のトラブルシューティングを開始する前に、 IMT の仕様に準拠した設定を実行していることを確認し、次の手順に進んでホスト側の問題をデバッグします。

lpfc 詳細ログ

  1. lpfc_log_sverbose' ドライバ設定を次のいずれかの値に設定して 'NVMe/FC イベントをログに記録できます

    #define LOG_NVME 0x00100000 /* NVME general events. */
    #define LOG_NVME_DISC 0x00200000 /* NVME Discovery/Connect events. */
    #define LOG_NVME_ABTS 0x00400000 /* NVME ABTS events. */
    #define LOG_NVME_IOERR 0x00800000 /* NVME IO Error events. */
  2. これらの値のいずれかを設定した後、「 dracut-f 」コマンドを実行して「 initramfs 」を再作成し、ホストを再起動します。

  3. リブート後、設定を確認します。

    # cat /etc/modprobe.d/lpfc.conf
    options lpfc lpfc_log_verbose=0xf00083
    
    # cat /sys/module/lpfc/parameters/lpfc_log_verbose
    15728771

qla2xxx 詳細ログ

lpfc ドライバの場合と同様の、 NVMe/FC 用の qla2xxx ログ機能はありません。したがって、次の手順を使用して一般的な qla2xxx ログレベルを設定できます。

  1. 対応する「 m odprobe qla2xxx conf 」ファイルに「 ql2xextended_error_logging=0x1e400000 」の値を追加します。

  2. 「 d racut-f 」コマンドを実行して「 initramfs 」を再作成し、ホストを再起動します。

  3. リブート後、次のように詳細ログが適用されていることを確認します。

    # cat /etc/modprobe.d/qla2xxx.conf
    options qla2xxx ql2xnvmeenable=1 ql2xextended_error_logging=0x1e400000
    # cat /sys/module/qla2xxx/parameters/ql2xextended_error_logging
    507510784

一般的な nvme-CLI エラーとその回避策があります

NVMe 検出、 NVMe 接続、または NVMe 接続の際に「 nvme-cli 」で表示されるエラーとその回避策を次の表に示します。

エラーは 'nvme-cli' によって表示されます 原因と考えられます 回避策

'/dev/nvme-Fabrics への書き込みに失敗しました : 引数が無効です

構文が正しくありません

上記の NVMe コマンドに正しい構文を使用していることを確認してください。

'/dev/nvme-Fabrics への書き込みに失敗しました : このようなファイルまたはディレクトリはありません

複数の問題が原因でこのエラーが発生する可能性NVMe コマンドに誤った引数を渡すことが、一般的な原因の 1 つです。

  • コマンドに正しい引数(正しい WWNN 文字列、 WWPN 文字列など)を渡したことを確認してください。

  • 引数が正しいにもかかわらずこのエラーが表示される場合は、「 /sys/class/scsi_host*/nvme_info 」の出力が正しいかどうか、 NVMe イニシエータが「 enabled 」と表示されているか、 NVMe/FC ターゲット LIF がリモートポートのセクションに正しく表示されているかどうかを確認してください。例

    # cat /sys/class/scsi_host/host*/nvme_info
    NVME Initiator Enabled
    NVME LPORT lpfc0 WWPN x10000090fae0ec9d WWNN x20000090fae0ec9d DID x012000 ONLINE
    NVME RPORT WWPN x200b00a098c80f09 WWNN x200a00a098c80f09 DID x010601 TARGET DISCSRVC ONLINE
    NVME Statistics
    LS: Xmt 0000000000000006 Cmpl 0000000000000006
    FCP: Rd 0000000000000071 Wr 0000000000000005 IO 0000000000000031
    Cmpl 00000000000000a6 Outstanding 0000000000000001
    NVME Initiator Enabled
    NVME LPORT lpfc1 WWPN x10000090fae0ec9e WWNN x20000090fae0ec9e DID x012400 ONLINE
    NVME RPORT WWPN x200900a098c80f09 WWNN x200800a098c80f09 DID x010301 TARGET DISCSRVC ONLINE
    NVME Statistics
    LS: Xmt 0000000000000006 Cmpl 0000000000000006
    FCP: Rd 0000000000000073 Wr 0000000000000005 IO 0000000000000031
    Cmpl 00000000000000a8 Outstanding 0000000000000001`
  • nvme_info の出力に上記のようにターゲット LIF が表示されない場合は、「 /var/log/messages 」および「 dmesg 」の出力で疑わしい NVMe/FC エラーがないかどうかを確認し、それに応じてレポートまたは修正してください。

' 取得する検出ログエントリがありません

一般に、「 /etc/nvme/hostnqn 」文字列がネットアップアレイの対応するサブシステムに追加されていないか、不正な hostnqn 文字列が各サブシステムに追加されています。

正確な「 /etc/nvme/hostnqn 」文字列がネットアップアレイの対応するサブシステムに追加されていることを確認します(「 vserver nvme subsystem host show 」コマンドで確認します)。

'/dev/nvme-Fabrics への書き込みに失敗しました:オペレーションはすでに進行中です

コントローラの関連付けまたは指定された処理がすでに作成されているか、または作成中であるかを示します。これは、上記にインストールされている自動接続スクリプトの一部として発生する可能性があります。

なしNVMe 検出を実行するには、しばらくしてからこのコマンドを実行してください。nvme connect および connect-all の場合は 'nvme list コマンドを実行して ' ネームスペースデバイスがすでに作成され ' ホストに表示されていることを確認します

テクニカルサポートへの連絡のタイミング

問題が解決しない場合は、次のファイルとコマンドの出力を収集し、テクニカルサポートに問い合わせてトリアージを依頼してください。

cat /sys/class/scsi_host/host*/nvme_info
/var/log/messages
dmesg
nvme discover output as in:
nvme discover --transport=fc --traddr=nn-0x200a00a098c80f09:pn-0x200b00a098c80f09 --host-traddr=nn-0x20000090fae0ec9d:pn-0x10000090fae0ec9d
nvme list
nvme list-subsys /dev/nvmeXnY