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

ONTAPストレージで NVMe-oF 用に Rocky Linux 8.x を構成する

共同作成者 netapp-sarajane

Rocky Linux ホストは、非対称名前空間アクセス (ANA) を備えた NVMe over Fibre Channel (NVMe/FC) および NVMe over TCP (NVMe/TCP) プロトコルをサポートします。ANA は、iSCSI および FCP 環境における非対称論理ユニット アクセス (ALUA) と同等のマルチパス機能を提供します。

Rocky Linux 8.x 用に NVMe over Fabrics (NVMe-oF) ホストを構成する方法を学習します。詳細なサポートと機能情報については、 "Rocky Linux ONTAPのサポートと機能"

Rocky Linux 8.x の NVMe-oF には、次の既知の制限があります。

  • NVMe-oF プロトコルを使用した SAN ブートは現在サポートされていません。

  • Rocky Linux 8.x の NVMe-oF ホストでは、カーネル内 NVMe マルチパスはデフォルトで無効になっているため、手動で有効にする必要があります。

  • 既知の問題のため、NVMe/TCP はテクノロジー プレビューとして利用できます。

ステップ1: Rocky LinuxとNVMeソフトウェアをインストールし、構成を確認する

NVMe-oF 用にホストを構成するには、ホストおよび NVMe ソフトウェア パッケージをインストールし、マルチパスを有効にして、ホストの NQN 構成を確認する必要があります。

手順
  1. サーバーに Rocky Linux 8.x をインストールします。インストールが完了したら、必要な Rocky Linux 8.x カーネルが実行されていることを確認します。

    uname -r

    Rocky Linux カーネルバージョンの例:

    5.14.0-570.12.1.el9_6.x86_64

<stdin> 内の未解決のディレクティブ - include::_include/nvme/linux-validate-software-version-rockylinux.adoc[]

ステップ2: NVMe/FCとNVMe/TCPを構成する

Broadcom/Emulex または Marvell/QLogic アダプタを使用して NVMe/FC を構成するか、手動の検出および接続操作を使用して NVMe/TCP を構成します。

NVMe/FC - ブロードコム/エミュレックス

Broadcom/Emulexアダプタ用にNVMe/FCを設定します。

  1. サポートされているアダプタモデルを使用していることを確認します。

    1. モデル名を表示します。

      cat /sys/class/scsi_host/host*/modelname

      次の出力が表示されます。

      LPe36002-M64
      LPe36002-M64
    2. モデルの説明を表示します。

      cat /sys/class/scsi_host/host*/modeldesc

      次の例のような出力が表示されます。

    Emulex LightPulse LPe36002-M64 2-Port 64Gb Fibre Channel Adapter
    Emulex LightPulse LPe36002-M64 2-Port 64Gb Fibre Channel Adapter
  2. 推奨されるBroadcomを使用していることを確認します lpfc ファームウェアおよび受信トレイドライバ:

    1. ファームウェアのバージョンを表示します。

      cat /sys/class/scsi_host/host*/fwrev

      このコマンドはファームウェアのバージョンを返します。

      14.4.317.10, sli-4:6:d
      14.4.317.10, sli-4:6:d
    2. 受信トレイのドライバーのバージョンを表示します。

      cat /sys/module/lpfc/version`

      次の例は、ドライバーのバージョンを示しています。

      0:14.4.0.2

    サポートされているアダプタドライバおよびファームウェアバージョンの最新リストについては、を参照してください"Interoperability Matrix Tool"

  3. の想定される出力がに設定されている `3`ことを確認し `lpfc_enable_fc4_type`ます。

    cat /sys/module/lpfc/parameters/lpfc_enable_fc4_type
  4. イニシエータポートを表示できることを確認します。

    cat /sys/class/fc_host/host*/port_name

    次の例はポート ID を示しています。

    0x100000109bf044b1
    0x100000109bf044b2
  5. イニシエータポートがオンラインであることを確認します。

    cat /sys/class/fc_host/host*/port_state

    次の出力が表示されます。

    Online
    Online
  6. NVMe/FCイニシエータポートが有効になっており、ターゲットポートが認識されることを確認します。

    cat /sys/class/scsi_host/host*/nvme_info
    例を示します
    NVME Initiator Enabled
    XRI Dist lpfc2 Total 6144 IO 5894 ELS 250
    NVME LPORT lpfc2 WWPN x100000109bf044b1 WWNN x200000109bf044b1 DID x022a00 ONLINE
    NVME RPORT       WWPN x202fd039eaa7dfc8 WWNN x202cd039eaa7dfc8 DID x021310 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x202dd039eaa7dfc8 WWNN x202cd039eaa7dfc8 DID x020b10 TARGET DISCSRVC ONLINE
    
    NVME Statistics
    LS: Xmt 0000000810 Cmpl 0000000810 Abort 00000000
    LS XMIT: Err 00000000  CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 000000007b098f07 Issue 000000007aee27c4 OutIO ffffffffffe498bd
            abort 000013b4 noxri 00000000 nondlp 00000058 qdepth 00000000 wqerr 00000000 err 00000000
    FCP CMPL: xb 000013b4 Err 00021443
    
    NVME Initiator Enabled
    XRI Dist lpfc3 Total 6144 IO 5894 ELS 250
    NVME LPORT lpfc3 WWPN x100000109bf044b2 WWNN x200000109bf044b2 DID x021b00 ONLINE
    NVME RPORT       WWPN x2033d039eaa7dfc8 WWNN x202cd039eaa7dfc8 DID x020110 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2032d039eaa7dfc8 WWNN x202cd039eaa7dfc8 DID x022910 TARGET DISCSRVC ONLINE
    
    NVME Statistics
    LS: Xmt 0000000840 Cmpl 0000000840 Abort 00000000
    LS XMIT: Err 00000000  CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 000000007afd4434 Issue 000000007ae31b83 OutIO ffffffffffe5d74f
            abort 000014a5 noxri 00000000 nondlp 0000006a qdepth 00000000 wqerr 00000000 err 00000000
    FCP CMPL: xb 000014a5 Err 0002149a
NVMe/FC - マーベル/QLogic

Marvell/QLogicアダプタ用にNVMe/FCを設定します。

  1. サポートされているアダプタドライバとファームウェアのバージョンが実行されていることを確認します。

    cat /sys/class/fc_host/host*/symbolic_name

    次の例は、ドライバーとファームウェアのバージョンを示しています。

    QLE2742 FW:v9.14.00 DVR:v10.02.09.200-k
    QLE2742 FW:v9.14.00 DVR:v10.02.09.200-k
  2. 確認します ql2xnvmeenable が設定されます。これにより、MarvellアダプタをNVMe/FCイニシエータとして機能させることができます。

    cat /sys/module/qla2xxx/parameters/ql2xnvmeenable

    想定される出力は1です。

NVMe/FC

NVMe/TCP プロトコルは自動接続操作をサポートしていません。代わりに、NVMe/TCPサブシステムと名前空間をNVMe/TCPコマンドで検出することができます。 `connect`または `connect-all`手動で操作します。

  1. イニシエーター ポートが、サポートされている NVMe/TCP LIF 全体で検出ログ ページ データを取得できることを確認します。

    nvme discover -t tcp -w host-traddr -a traddr
    例を示します
    nvme discover -t tcp -w 192.168.1.31 -a 192.168.1.24
    Discovery Log Number of Records 20, Generation counter 25
    =====Discovery Log Entry 0======
    trtype:  tcp
    adrfam:  ipv4
    subtype: current discovery subsystem
    treq:    not specified
    portid:  4
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.0f4ba1e74eb611ef9f50d039eab6cb6d:discovery
    traddr:  192.168.2.25
    eflags:  explicit discovery connections, duplicate discovery information
    sectype: none
    =====Discovery Log Entry 1======
    trtype:  tcp
    adrfam:  ipv4
    subtype: current discovery subsystem
    treq:    not specified
    portid:  2
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.0f4ba1e74eb611ef9f50d039eab6cb6d:discovery
    traddr:  192.168.1.25
    eflags:  explicit discovery connections, duplicate discovery information
    sectype: none
    =====Discovery Log Entry 2======
    trtype:  tcp
    adrfam:  ipv4
    subtype: current discovery subsystem
    treq:    not specified
    portid:  5
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.0f4ba1e74eb611ef9f50d039eab6cb6d:discovery
    traddr:  192.168.2.24
    eflags:  explicit discovery connections, duplicate discovery information
    sectype: none
    =====Discovery Log Entry 3======
    trtype:  tcp
    adrfam:  ipv4
    subtype: current discovery subsystem
    treq:    not specified
    portid:  1
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.0f4ba1e74eb611ef9f50d039eab6cb6d:discovery
    traddr:  192.168.1.24
    eflags:  explicit discovery connections, duplicate discovery information
    sectype: none
    =====Discovery Log Entry 4======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  4
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0f4ba1e74eb611ef9f50d039eab6cb6d:subsystem.nvme_tcp_1
    traddr:  192.168.2.25
    eflags:  none
    sectype: none
    =====Discovery Log Entry 5======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  2
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0f4ba1e74eb611ef9f50d039eab6cb6d:subsystem.nvme_tcp_1
    traddr:  192.168.1.25
    eflags:  none
    sectype: none
    =====Discovery Log Entry 6======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  5
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0f4ba1e74eb611ef9f50d039eab6cb6d:subsystem.nvme_tcp_1
    traddr:  192.168.2.24
    eflags:  none
    sectype: none
    =====Discovery Log Entry 7======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  1
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0f4ba1e74eb611ef9f50d039eab6cb6d:subsystem.nvme_tcp_1
    traddr:  192.168.1.24
    eflags:  none
    sectype: none
    =====Discovery Log Entry 8======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  4
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0f4ba1e74eb611ef9f50d039eab6cb6d:subsystem.nvme_tcp_4
    traddr:  192.168.2.25
    eflags:  none
    sectype: none
    =====Discovery Log Entry 9======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  2
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0f4ba1e74eb611ef9f50d039eab6cb6d:subsystem.nvme_tcp_4
    traddr:  192.168.1.25
    eflags:  none
    sectype: none
    =====Discovery Log Entry 10======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  5
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0f4ba1e74eb611ef9f50d039eab6cb6d:subsystem.nvme_tcp_4
    traddr:  192.168.2.24
    eflags:  none
    sectype: none
    =====Discovery Log Entry 11======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  1
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0f4ba1e74eb611ef9f50d039eab6cb6d:subsystem.nvme_tcp_4
    traddr:  192.168.1.24
    eflags:  none
    sectype: none
    =====Discovery Log Entry 12======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  4
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0f4ba1e74eb611ef9f50d039eab6cb6d:subsystem.nvme_tcp_3
    traddr:  192.168.2.25
    eflags:  none
    sectype: none
    =====Discovery Log Entry 13======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  2
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0f4ba1e74eb611ef9f50d039eab6cb6d:subsystem.nvme_tcp_3
    traddr:  192.168.1.25
    eflags:  none
    sectype: none
    =====Discovery Log Entry 14======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  5
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0f4ba1e74eb611ef9f50d039eab6cb6d:subsystem.nvme_tcp_3
    traddr:  192.168.2.24
    eflags:  none
    sectype: none
    =====Discovery Log Entry 15======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  1
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0f4ba1e74eb611ef9f50d039eab6cb6d:subsystem.nvme_tcp_3
    traddr:  192.168.1.24
    eflags:  none
    sectype: none
    =====Discovery Log Entry 16======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  4
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0f4ba1e74eb611ef9f50d039eab6cb6d:subsystem.nvme_tcp_2
    traddr:  192.168.2.25
    eflags:  none
    sectype: none
    =====Discovery Log Entry 17======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  2
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0f4ba1e74eb611ef9f50d039eab6cb6d:subsystem.nvme_tcp_2
    traddr:  192.168.1.25
    eflags:  none
    sectype: none
    =====Discovery Log Entry 18======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  5
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0f4ba1e74eb611ef9f50d039eab6cb6d:subsystem.nvme_tcp_2
    traddr:  192.168.2.24
    eflags:  none
    sectype: none
    =====Discovery Log Entry 19======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  1
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0f4ba1e74eb611ef9f50d039eab6cb6d:subsystem.nvme_tcp_2
    traddr:  192.168.1.24
    eflags:  none
    sectype: none
  2. NVMe/TCPイニシエータとターゲットLIFの他の組み合わせで検出ログページのデータを正常に取得できることを確認します。

    nvme discover -t tcp -w host-traddr -a traddr
    例を示します
    nvme discover -t tcp -w 192.168.1.31 -a 192.168.1.24
    nvme discover -t tcp -w 192.168.2.31 -a 192.168.2.24
    nvme discover -t tcp -w 192.168.1.31 -a 192.168.1.25
    nvme discover -t tcp -w 192.168.2.31 -a 192.168.2.25
  3. を実行します nvme connect-all ノード全体でサポートされているすべてのNVMe/TCPイニシエータ/ターゲットLIFを対象としたコマンド:

    nvme connect-all -t tcp -w host-traddr -a traddr
    例を示します
    nvme	connect-all	-t	tcp	-w	192.168.1.31	-a	192.168.1.24
    nvme	connect-all	-t	tcp	-w	192.168.2.31	-a	192.168.2.24
    nvme	connect-all	-t	tcp	-w	192.168.1.31	-a	192.168.1.25
    nvme	connect-all	-t	tcp	-w	192.168.2.31	-a	192.168.2.25

ステップ3: オプションでNVMe/FCの1MB I/Oを有効にする

Broadcomアダプタで構成されたNVMe/FCでは、1MBのI/Oリクエストを有効にすることができます。ONTAPは、コントローラ識別データで最大データ転送サイズ(MDTS)を8と報告します。1MBつまり、最大I/O要求サイズは1MBです。のI/Oリクエストを発行するには、lpfcの値を増やす必要があります。 `lpfc_sg_seg_cnt`パラメータをデフォルト値の 64 から 256 に変更します。

メモ この手順は、Qlogic NVMe/FCホストには適用されません。
手順
  1. `lpfc_sg_seg_cnt`パラメータを256に設定します。

    cat /etc/modprobe.d/lpfc.conf
    options lpfc lpfc_sg_seg_cnt=256
  2. コマンドを実行し dracut -f、ホストをリブートします。

  3. の値が256であることを確認し `lpfc_sg_seg_cnt`ます。

    cat /sys/module/lpfc/parameters/lpfc_sg_seg_cnt

ステップ4: マルチパス構成を確認する

カーネル内のNVMeマルチパスステータス、ANAステータス、およびONTAPネームスペースがNVMe-oF構成に対して正しいことを確認します。

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

    cat /sys/module/nvme_core/parameters/multipath

    次の出力が表示されます。

    Y
  2. 該当するONTAPネームスペースの適切なNVMe-oF設定(modelをNetApp ONTAPコントローラに設定し、load balancing iopolicyをラウンドロビンに設定するなど)がホストに正しく反映されていることを確認します。

    1. サブシステムを表示します。

      cat /sys/class/nvme-subsystem/nvme-subsys*/model

      次の出力が表示されます。

      NetApp ONTAP Controller
      NetApp ONTAP Controller
    2. ポリシーを表示します。

      cat /sys/class/nvme-subsystem/nvme-subsys*/iopolicy

      次の出力が表示されます。

    round-robin
    round-robin
  3. ネームスペースが作成され、ホストで正しく検出されたことを確認します。

    nvme list
    例を示します
    Node         SN                   Model
    ---------------------------------------------------------
    /dev/nvme4n1 81Ix2BVuekWcAAAAAAAB	NetApp ONTAP Controller
    
    
    Namespace Usage    Format             FW             Rev
    -----------------------------------------------------------
    1                 21.47 GB / 21.47 GB	4 KiB + 0 B   FFFFFFFF
  4. 各パスのコントローラの状態がliveであり、正しいANAステータスが設定されていることを確認します。

    NVMe/FC
    nvme list-subsys /dev/nvme4n5
    例を示します
    nvme-subsys4 - NQN=nqn.1992-08.com.netapp:sn.3a5d31f5502c11ef9f50d039eab6cb6d:subsystem.nvme_1
                   hostnqn=nqn.2014-08.org.nvmexpress:uuid:e6dade64-216d-
    11ec-b7bb-7ed30a5482c3
    iopolicy=round-robin\
    +- nvme1 fc traddr=nn-0x2082d039eaa7dfc8:pn-0x2088d039eaa7dfc8,host_traddr=nn-0x20000024ff752e6d:pn-0x21000024ff752e6d live optimized
    +- nvme12 fc traddr=nn-0x2082d039eaa7dfc8:pn-0x208ad039eaa7dfc8,host_traddr=nn-0x20000024ff752e6d:pn-0x21000024ff752e6d live non-optimized
    +- nvme10 fc traddr=nn-0x2082d039eaa7dfc8:pn-0x2087d039eaa7dfc8,host_traddr=nn-0x20000024ff752e6c:pn-0x21000024ff752e6c live non-optimized
    +- nvme3 fc traddr=nn-0x2082d039eaa7dfc8:pn-0x2083d039eaa7dfc8,host_traddr=nn-0x20000024ff752e6c:pn-0x21000024ff752e6c live optimized
    NVMe/FC
    nvme list-subsys /dev/nvme1n1
    例を示します
    nvme-subsys5 - NQN=nqn.1992-08.com.netapp:sn.0f4ba1e74eb611ef9f50d039eab6cb6d:subsystem.nvme_tcp_3
    hostnqn=nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0035-5910-804b-b5c04f444d33
    iopolicy=round-robin
    \
    +- nvme13 tcp traddr=192.168.2.25,trsvcid=4420,host_traddr=192.168.2.31,
    src_addr=192.168.2.31 live optimized
    +- nvme14 tcp traddr=192.168.2.24,trsvcid=4420,host_traddr=192.168.2.31,
    src_addr=192.168.2.31 live non-optimized
    +- nvme5 tcp traddr=192.168.1.25,trsvcid=4420,host_traddr=192.168.1.31,
    src_addr=192.168.1.31 live optimized
    +- nvme6 tcp traddr=192.168.1.24,trsvcid=4420,host_traddr=192.168.1.31,
    src_addr=192.168.1.31 live non-optimized
  5. ネットアッププラグインで、ONTAP ネームスペースデバイスごとに正しい値が表示されていることを確認します。

    列( Column )
    nvme netapp ontapdevices -o column
    例を示します
    Device        Vserver   Namespace Path
    ----------------------- ------------------------------
    /dev/nvme1n1     linux_tcnvme_iscsi        /vol/tcpnvme_1_0_0/tcpnvme_ns
    
    NSID       UUID                                   Size
    ------------------------------------------------------------
    1    5f7f630d-8ea5-407f-a490-484b95b15dd6   21.47GB
    JSON
    nvme netapp ontapdevices -o json
    例を示します
    {
      "ONTAPdevices":[
        {
          "Device":"/dev/nvme1n1",
          "Vserver":"linux_tcnvme_iscsi",
          "Namespace_Path":"/vol/tcpnvme_1_0_0/tcpnvme_ns",
          "NSID":1,
          "UUID":"5f7f630d-8ea5-407f-a490-484b95b15dd6",
          "Size":"21.47GB",
          "LBA_Data_Size":4096,
          "Namespace_Size":5242880
        },
    ]
    }

ステップ5: 既知の問題を確認する

既知の問題は次のとおりです:

NetApp バグ ID タイトル 説明

"1479047"

Rocky Linux 8.x NVMe-oF ホストは重複した永続的検出コントローラを作成します

NVMe-oF ホストでは、「nvme discover -p」コマンドを使用して永続検出コントローラ (PDC) を作成できます。 ただし、NVMe-oF ホストで Rocky Linux 8.x を実行している場合は、「nvme discover -p」を実行するたびに重複した PDC が作成されます。このコマンドを使用する場合、イニシエーターとターゲットの組み合わせごとに 1 つの PDC のみを作成する必要があります。ただし、Rocky Linux 8.xをNVMe-oFホストで実行している場合は、「nvme discover -p」を実行するたびに重複したPDCが作成されます。これにより、ホストとターゲットの両方でリソースが不必要に使用されることになります。