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

ONTAPストレージ用にNVMe-oFを使用してOracle Linux 8.xを構成する

共同作成者 netapp-sarajane

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

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

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

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

  • NetApp sanlun ホスト ユーティリティのサポートは、Oracle Linux 8.x ホスト上の NVMe-oF では使用できません。代わりに、ネイティブに含まれるNetAppプラグインを利用できます。 `nvme-cli`すべての NVMe-oF トランスポート用のパッケージ。

  • Oracle Linux 8.2 以前では、ネイティブ NVMe/FC 自動接続スクリプトは nvme-cli パッケージで使用できません。 HBA ベンダーが提供する外部自動接続スクリプトを使用します。

  • Oracle Linux 8.2 以前では、NVMe マルチパスのラウンドロビン ロード バランシングはデフォルトで有効になっていません。この機能を有効にするには、udevルールの作成

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

サポートされている Oracle Linux 8.x ソフトウェアの最小バージョンを検証するには、次の手順に従います。

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

    uname -r

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

    5.15.0-206.153.7.1.el8uek.x86_64
  2. 「 nvme-cli 」パッケージをインストールします。

    rpm -qa|grep nvme-cli

    次の例は、 `nvme-cli`パッケージバージョン:

    nvme-cli-1.16-9.el8.x86_64
  3. Oracle Linux 8.2以前の場合、次の文字列を別のudevルールとして追加します。 /lib/udev/rules.d/71-nvme-iopolicy-netapp-ONTAP.rules 。これにより、NVMe マルチパスのラウンドロビン ロード バランシングが可能になります。

    cat /lib/udev/rules.d/71-nvme-iopolicy-netapp-ONTAP.rules
    Enable round-robin for NetApp ONTAP
    ACTION=="add", SUBSYSTEMS=="nvme-subsystem", ATTRS{model}=="NetApp ONTAP Controller", ATTR{iopolicy}="round-robin"
  4. Oracle Linux 8.xホストで、 hostnqn`文字列 `/etc/nvme/hostnqn:

    cat /etc/nvme/hostnqn

    次の例は、 `hostnqn`バージョン:

    nqn.2014-08.org.nvmexpress:uuid:edd38060-00f7-47aa-a9dc-4d8ae0cd969a
  5. ONTAPシステムで、 `hostnqn`文字列が一致する `hostnqn`ONTAPストレージ システム上の対応するサブシステムの文字列:

    vserver nvme subsystem host show -vserver vs_coexistence_LPE36002
    例を示します
    Vserver Subsystem Priority  Host NQN
    ------- --------- --------  ------------------------------------------------
    vs_coexistence_LPE36002
            nvme
                      regular   nqn.2014-08.org.nvmexpress:uuid:edd38060-00f7-47aa-a9dc-4d8ae0cd969a
            nvme1
                      regular   nqn.2014-08.org.nvmexpress:uuid:edd38060-00f7-47aa-a9dc-4d8ae0cd969a
            nvme2
                      regular   nqn.2014-08.org.nvmexpress:uuid:edd38060-00f7-47aa-a9dc-4d8ae0cd969a
            nvme3
                      regular   nqn.2014-08.org.nvmexpress:uuid:edd38060-00f7-47aa-a9dc-4d8ae0cd969a
    4 entries were displayed.
    メモ 文字列が一致しない場合 `hostnqn`は、コマンドを使用し `vserver modify`て、対応するONTAPアレイサブシステムの文字列をホストののの文字列 `/etc/nvme/hostnqn`と一致するように `hostnqn`更新し `hostnqn`ます。
  6. オプションとして、同じホスト上でNVMeとSCSIの共存トラフィックを実行するために、 NetAppはONTAPネームスペースにカーネル内NVMeマルチパスを使用することを推奨しています。 `dm-multipath`それぞれONTAP LUN 用です。これにより、 ONTAPネームスペースが除外されます。 `dm-multipath`防止する `dm-multipath`ONTAPネームスペースデバイスを要求できなくなります。

    1. 追加する `enable_foreign`設定する `/etc/multipath.conf`ファイル。

      cat /etc/multipath.conf
      defaults {
        enable_foreign     NONE
      }
    2. 再起動する `multipathd`新しい設定を適用するデーモン。

      systemctl restart multipathd

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

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

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 LPe36002-M64 2-Port 64Gb Fibre Channel Adapter
    Emulex 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.2.0.13

    +
    サポートされているアダプタドライバおよびファームウェアバージョンの最新リストについては、を参照してください"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 を示しています。

    0x100000109bf0449c
    0x100000109bf0449d
  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 lpfc0 Total 6144 IO 5894 ELS 250
    NVME LPORT lpfc0 WWPN x100000109bf0449c WWNN x200000109bf0449c DID x061500 ONLINE
    NVME RPORT       WWPN x200bd039eab31e9c WWNN x2005d039eab31e9c DID x020e06 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2006d039eab31e9c WWNN x2005d039eab31e9c DID x020a0a TARGET DISCSRVC ONLINE
    NVME Statistics
    LS: Xmt 000000002c Cmpl 000000002c Abort 00000000
    LS XMIT: Err 00000000  CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 000000000008ffe8 Issue 000000000008ffb9 OutIO ffffffffffffffd1
            abort 0000000c noxri 00000000 nondlp 00000000 qdepth 00000000 wqerr 00000000 err 00000000
    FCP CMPL: xb 0000000c Err 0000000c
    NVME Initiator Enabled
    XRI Dist lpfc1 Total 6144 IO 5894 ELS 250
    NVME LPORT lpfc1 WWPN x100000109bf0449d WWNN x200000109bf0449d DID x062d00 ONLINE
    NVME RPORT       WWPN x201fd039eab31e9c WWNN x2005d039eab31e9c DID x02090a TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x200cd039eab31e9c WWNN x2005d039eab31e9c DID x020d06 TARGET DISCSRVC ONLINE
    NVME Statistics
    LS: Xmt 0000000041 Cmpl 0000000041 Abort 00000000
    LS XMIT: Err 00000000  CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 00000000000936bf Issue 000000000009369a OutIO ffffffffffffffdb
            abort 00000016 noxri 00000000 nondlp 00000000 qdepth 00000000 wqerr 00000000 err 00000000
    FCP CMPL: xb 00000016 Err 00000016
FC - マーベル/QLogic

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

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

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

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

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

    cat /sys/module/qla2xxx/parameters/ql2xnvmeenable

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

TCP

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.6.1 -a 192.168.6.24 Discovery Log Number of Records 20, Generation counter 45
    =====Discovery Log Entry 0======
    trtype:  tcp
    adrfam:  ipv4
    subtype: unrecognized
    treq:    not specified
    portid:  6
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.e6c438e66ac211ef9ab8d039eab31e9d:discovery
    traddr:  192.168.6.25
    sectype: none
    =====Discovery Log Entry 1======
    trtype:  tcp
    adrfam:  ipv4
    subtype: unrecognized
    treq:    not specified
    portid:  1
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.e6c438e66ac211ef9ab8d039eab31e9d:discovery
    traddr:  192.168.5.24
    sectype: none
    =====Discovery Log Entry 2======
    trtype:  tcp
    adrfam:  ipv4
    subtype: unrecognized
    treq:    not specified
    portid:  4
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.e6c438e66ac211ef9ab8d039eab31e9d:discovery
    traddr:  192.168.6.24
    sectype: none
    =====Discovery Log Entry 3======
    trtype:  tcp
    adrfam:  ipv4
    subtype: unrecognized
    treq:    not specified
    portid:  2
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.e6c438e66ac211ef9ab8d039eab31e9d:discovery
    traddr:  192.168.5.25
    sectype: none
    =====Discovery Log Entry 4======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  6
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.e6c438e66ac211ef9ab8d039eab31e9d:subsystem.nvme_tcp_4
    traddr:  192.168.6.25
    sectype: none
    =====Discovery Log Entry 5======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  1
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.e6c438e66ac211ef9ab8d039eab31e9d:subsystem.nvme_tcp_4
    ..........
  2. NVMe/TCPイニシエータとターゲットLIFの他のすべての組み合わせで、検出ログページのデータを正常に取得できることを確認します。

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

    nvme connect-all -t tcp -w host-traddr -a traddr -l <ctrl_loss_timeout_in_seconds>
    例を示します
    nvme	connect-all	-t	tcp	-w	192.168.5.1	-a	192.168.5.24	-l -1
    nvme	connect-all	-t	tcp	-w	192.168.5.1	-a	192.168.5.25	-l -1
    nvme	connect-all	-t	tcp	-w	192.168.6.1	-a	192.168.6.24	-l -1
    nvme	connect-all	-t	tcp	-w	192.168.6.1	-a	192.168.6.25	-l -1

NetAppは、 `ctrl-loss-tmo option`に `-1`NVMe/TCP イニシエーターは、パス損失が発生した場合に無期限に再接続を試行します。

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

ONTAP は、識別コントローラ データで最大データ転送サイズ (MDTS) が 8 であると報告します。つまり、最大 I/O 要求サイズは 1 MB までになります。 Broadcom NVMe/FCホストに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/nvme0n1 814vWBNRwf9HAAAAAAAB NetApp ONTAP Controller
    /dev/nvme0n2 814vWBNRwf9HAAAAAAAB NetApp ONTAP Controller
    /dev/nvme0n3 814vWBNRwf9HAAAAAAAB NetApp ONTAP Controller
    
    Namespace Usage   Format               FW            Rev
    -----------------------------------------------------------
    1                 85.90 GB / 85.90 GB  4 KiB + 0 B   FFFFFFFF
    2                 85.90 GB / 85.90 GB  24 KiB + 0 B  FFFFFFFF
    3	                85.90 GB / 85.90 GB  4 KiB + 0 B   FFFFFFFF
  4. 各パスのコントローラの状態がliveであり、正しいANAステータスが設定されていることを確認します。

    nvme list-subsys /dev/nvme0n1
    NVMe/FCの例を表示
    nvme-subsys0 - NQN=nqn.1992- 08.com.netapp: 4b4d82566aab11ef9ab8d039eab31e9d:subsystem.nvme\
    +-  nvme1 fc traddr=nn-0x2038d039eab31e9c:pn-0x203ad039eab31e9c host_traddr=nn-0x200034800d756a89:pn-0x210034800d756a89 live optimized
    +-  nvme2 fc traddr=nn-0x2038d039eab31e9c:pn-0x203cd039eab31e9c host_traddr=nn-0x200034800d756a88:pn-0x210034800d756a88 live optimized
    +- nvme3 fc traddr=nn-0x2038d039eab31e9c:pn-0x203ed039eab31e9c host_traddr=nn-0x200034800d756a89:pn-0x210034800d756a89 live non-optimized
    +-  nvme7 fc traddr=nn-0x2038d039eab31e9c:pn-0x2039d039eab31e9c host_traddr=nn-0x200034800d756a88:pn-0x210034800d756a88 live non-optimized
    NVMe/TCPの例を示す
    nvme-subsys0 - NQN=nqn.1992- 08.com.netapp: sn.e6c438e66ac211ef9ab8d039eab31e9d:subsystem.nvme_tcp_4
    \
    +- nvme1 tcp traddr=192.168.5.25 trsvcid=4420 host_traddr=192.168.5.1 src_addr=192.168.5.1 live optimized
    +- nvme10 tcp traddr=192.168.6.24 trsvcid=4420 host_traddr=192.168.6.1 src_addr=192.168.6.1 live optimized
    +- nvme2 tcp traddr=192.168.5.24 trsvcid=4420 host_traddr=192.168.5.1 src_addr=192.168.5.1 live non-optimized
    +- nvme9 tcp traddr=192.168.6.25 trsvcid=4420 host_traddr=192.168.6.1 src_addr=192.168.6.1 live non-optimized
  5. ネットアッププラグインで、ONTAP ネームスペースデバイスごとに正しい値が表示されていることを確認します。

    列( Column )
    nvme netapp ontapdevices -o column
    例を示します
    Device         Vserver                  Namespace Path                NSID UUID                                  Size
    -------------- ------------------------ ----------------------------- ---- ------------------------------------- ---------
    /dev/nvme0n1   vs_coexistence_QLE2772   /vol/fcnvme_1_1_0/fcnvme_ns   1    159f9f88-be00-4828-aef6-197d289d4bd9  10.74GB
    /dev/nvme0n2   vs_coexistence_QLE2772   /vol/fcnvme_1_1_1/fcnvme_ns   2    2c1ef769-10c0-497d-86d7-e84811ed2df6  10.74GB
    /dev/nvme0n3   vs_coexistence_QLE2772   /vol/fcnvme_1_1_2/fcnvme_ns   3    9b49bf1a-8a08-4fa8-baf0-6ec6332ad5a4  10.74GB
    JSON
    nvme netapp ontapdevices -o json
    例を示します
    {
      "ONTAPdevices" : [
        {
          "Device" : "/dev/nvme0n1",
          "Vserver" : "vs_coexistence_QLE2772",
          "Namespace_Path" : "/vol/fcnvme_1_1_0/fcnvme_ns",
          "NSID" : 1,
          "UUID" : "159f9f88-be00-4828-aef6-197d289d4bd9",
          "Size" : "10.74GB",
          "LBA_Data_Size" : 4096,
          "Namespace_Size" : 2621440
        },
        {
          "Device" : "/dev/nvme0n2",
          "Vserver" : "vs_coexistence_QLE2772",
          "Namespace_Path" : "/vol/fcnvme_1_1_1/fcnvme_ns",
          "NSID" : 2,
          "UUID" : "2c1ef769-10c0-497d-86d7-e84811ed2df6",
          "Size" : "10.74GB",
          "LBA_Data_Size" : 4096,
          "Namespace_Size" : 2621440
        },
        {
          "Device" : "/dev/nvme0n4",
          "Vserver" : "vs_coexistence_QLE2772",
          "Namespace_Path" : "/vol/fcnvme_1_1_3/fcnvme_ns",
          "NSID" : 4,
          "UUID" : "f3572189-2968-41bc-972a-9ee442dfaed7",
          "Size" : "10.74GB",
          "LBA_Data_Size" : 4096,
          "Namespace_Size" : 2621440
        },

ステップ5: オプションで1MBのI/Oサイズを有効にする

ONTAP は、識別コントローラ データで最大データ転送サイズ (MDTS) が 8 であると報告します。つまり、最大 I/O 要求サイズは 1 MB までになります。 Broadcom NVMe/FCホストに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

手順6:既知の問題を確認する

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

NetApp バグ ID タイトル 説明

"1479047"

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

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