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

NVMe-oFホスト構成(Oracle Linux 8.9 with ONTAP

共同作成者

Oracle Linux 8.9 with Asymmetric Namespace Access(ANA)では、NVMe over Fibre Channel(NVMe/FC)やその他のトランスポートを含むNVMe over Fabrics(NVMe-oF)がサポートされます。NVMe-oF環境では、ANAはiSCSI環境およびFC環境のALUAマルチパスに相当し、カーネル内NVMeマルチパスで実装されます。

ONTAPを使用したOracle Linux 8.9では、NVMe-oFホスト構成が次のようにサポートされます。

  • NVMe/FCに加えて、NVMe over TCP(NVMe/TCP)もサポートされます。標準 `nvme-cli`パッケージのNetAppプラグインには、NVMe/FCとNVMe/TCP両方のネームスペースのONTAPの詳細が表示されます。

  • NVMe と SCSI の両方のトラフィックを、同じ新規のホストで実行することができます。そのため、SCSI LUNのSCSI mpathデバイスにはdm-multipathを設定できますが、NVMeマルチパスを使用してホストでNVMe-oFネームスペースデバイスを設定することができます。

  • sanlun にも対応していません。そのため、Oracle Linux 8.9ホストではNVMe-oFのホストユーティリティはサポートされません。標準 `nvme-cli`パッケージに含まれているNetAppプラグインは、すべてのNVMe-oF転送に対応しています。

サポートされる構成の詳細については、を参照してください "NetApp Interoperability Matrix Tool で確認できます"

の機能

Oracle Linux 8.9では、NVMeネームスペースに対してカーネル内NVMeマルチパスがデフォルトで有効になっているため、明示的に設定する必要はありません。

既知の制限

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

ソフトウェアのバージョンを確認します

サポートされているOracle Linux 8.9ソフトウェアの最小バージョンを確認します。

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

    # uname -r

    出力例:

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

    # rpm -qa|grep nvme-cli

    出力例:

    nvme-cli-1.16-9.el8.x86_64
  3. Oracle Linux 8.9ホストで、 hostnqn `/etc/nvme/hostnqn`次の場所の文字列を確認します。

    # cat /etc/nvme/hostnqn

    出力例:

    nqn.2014-08.org.nvmexpress:uuid:edd38060-00f7-47aa-a9dc-4d8ae0cd969a
  4. を確認します hostnqn 文字列はに一致します hostnqn ONTAP アレイ上の対応するサブシステムの文字列。

    ::> vserver nvme subsystem host show -vserver vs_nvme177

    出力例:

    Vserver     Subsystem          Host NQN
    ----------- --------------- ----------------------------------------------------------
    vs_nvme177  nvme_ss_ol_1       nqn.2014-08.org.nvmexpress:uuid:edd38060-00f7-47aa-a9dc-4d8ae0cd969a
    メモ 状況に応じて hostnqn 文字列が一致しない場合はを使用できます vserver modify コマンドを使用してを更新します hostnqn 対応するONTAP アレイサブシステムで、に一致する文字列を指定します hostnqn から文字列 /etc/nvme/hostnqn ホスト。
  5. ホストをリブートします。

    メモ

    NVMeとSCSIの両方のトラフィックを同じホストで実行する場合は、NetApp ONTAPネームスペースと dm-multipath (ONTAP LUNの場合)。つまり、ONTAPネームスペースを dm-multipath 予防するために dm-multipath ネームスペースデバイスの要求から解放されます。次を追加できます: enable_foreign に設定します /etc/multipath.conf ファイル:

    # cat /etc/multipath.conf
    
    defaults {
      enable_foreign     NONE
    }

    次のコマンドを実行してmultipathdデーモンを再起動します。 systemctl restart multipathd コマンドを実行しますこれにより、新しい設定が有効になります。

NVMe/FC を設定

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

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

    # 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 ファームウェアおよび受信トレイドライバ:

    # cat /sys/class/scsi_host/host*/fwrev
    14.2.539.16, sli-4:2:c
    14.2.539.16, sli-4:2:c
    # cat /sys/module/lpfc/version
    0:14.2.0.5

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

  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
    0x100000109b3c081f
    0x100000109b3c0820
    # 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
NVMe / FC向けMarvell/QLogic FCアダプタ
手順
  1. Oracle Linux 8.9 GAカーネルに含まれているネイティブの受信トレイqla2xxxドライバには、ONTAPのサポートに不可欠な最新の修正が含まれています。サポートされているアダプタドライバとファームウェアのバージョンが実行されていることを確認します。

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

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

1MB の I/O サイズを有効にする(オプション)

ONTAPは、Identify ControllerデータでMDT(MAX Data転送サイズ)が8であると報告します。つまり、最大I/O要求サイズは1MBです。Broadcom NVMe/FCホストにサイズ1MBのI/O要求を実行するには lpfc lpfc_sg_seg_cnt、パラメータの値をデフォルト値の64から256に増やす必要があります。

手順
  1. `lpfc_sg_seg_cnt`パラメータを256に設定します。

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

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

    # cat /sys/module/lpfc/parameters/lpfc_sg_seg_cnt
    256
メモ これはQlogic NVMe/FCホストには該当しません。

NVMe/FC を設定

NVMe/TCPには自動接続機能はありません。そのため、パスがダウンしてデフォルトのタイムアウト(10分)内に復元されないと、NVMe/TCPは自動的に再接続できません。この状況を回避するには、ストレージフェイルオーバーイベントの再試行期間を次の手順で設定します。

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

    nvme discover -t tcp -w host-traddr -a traddr
    出力例を表示します。
    #  nvme discover -t tcp -w 192.168.6.13 -a 192.168.6.15
    Discovery Log Number of Records 6, Generation counter 8
    =====Discovery Log Entry 0======
    trtype: tcp
    adrfam: ipv4
    subtype: unrecognized
    treq: not specified
    portid: 0
    trsvcid: 8009
    subnqn: nqn.1992-08.com.netapp:sn.1c6ac66338e711eda41dd039ea3ad566:discovery
    traddr: 192.168.6.17
    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.1c6ac66338e711eda41dd039ea3ad566:discovery
    traddr: 192.168.5.17
    sectype: none
    =====Discovery Log Entry 2======
    trtype: tcp
    adrfam: ipv4
    subtype: unrecognized
    treq: not specified
    portid: 2
    trsvcid: 8009
    subnqn: nqn.1992-08.com.netapp:sn.1c6ac66338e711eda41dd039ea3ad566:discovery
    traddr: 192.168.6.15
    sectype: none
    =====Discovery Log Entry 3======
    trtype: tcp
    adrfam: ipv4
    subtype: nvme subsystem
    treq: not specified
    portid: 0
    trsvcid: 4420
    subnqn: nqn.1992-08.com.netapp:sn.1c6ac66338e711eda41dd039ea3ad566:subsystem.host_95
    traddr: 192.168.6.17
    sectype: none
    ..........
  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.10
    # nvme discover -t tcp -w 192.168.6.1 -a 192.168.6.11
    # nvme discover -t tcp -w 192.168.5.1 -a 192.168.5.10
    # nvme discover -t tcp -w 192.168.5.1 -a 192.168.5.11
  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.10	-l -1
    #	nvme	connect-all	-t	tcp	-w	192.168.5.1	-a	192.168.5.11 	-l -1
    #	nvme	connect-all	-t	tcp	-w	192.168.6.1	-a	192.168.6.10	-l -1
    #	nvme	connect-all	-t	tcp	-w	192.168.6.1	-a	192.168.6.11	-l -1
    メモ NetAppでは、 ctrl-loss-tmo オプションをに設定します -1 これにより、パスが失われた場合にNVMe/TCPイニシエータが無期限に再接続を試行できるようになります。

NVMe-oF を検証します

NVMe-oFの検証には、次の手順を使用できます。

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

    # cat /sys/module/nvme_core/parameters/multipath
    Y
  2. NVMe-oFの適切な設定(など)を確認します model をに設定します NetApp ONTAP Controller 負荷分散 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
  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/FC
    # nvme list-subsys /dev/nvme0n1

    出力例:

    nvme-subsys0 - NQN=nqn.1992-08.com.netapp:sn.5f5f2c4aa73b11e9967e00a098df41bd:subsystem.nvme_ss_ol_1
    \
    +- nvme0 fc traddr=nn-0x203700a098dfdd91:pn-0x203800a098dfdd91 host_traddr=nn-0x200000109b1c1204:pn-0x100000109b1c1204 live non-optimized
    +- nvme1 fc traddr=nn-0x203700a098dfdd91:pn-0x203900a098dfdd91 host_traddr=nn-0x200000109b1c1204:pn-0x100000109b1c1204 live non-optimized
    +- 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
    NVMe/FC
    nvme list-subsys /dev/nvme1n22

    出力例

    nvme-subsys0 - NQN=nqn.1992- 08.com.netapp: sn.44986b09cadc11eeb309d039eab31e9d:subsystem.ol_nvme
    \
    +- nvme1 tcp traddr=192.168.5.11 trsvcid=4420 host_traddr=192.168.5.1 src_addr=192.168.5.1 live non-optimized
    +- nvme2 tcp traddr=192.168.5.10 trsvcid=4420 host_traddr=192.168.5.1 src_addr=192.168.5.1 live optimized
    +- nvme3 tcp traddr=192.168.6.11 trsvcid=4420 host_traddr=192.168.6.1 src_addr=192.168.6.1 live non-optimized
    +- nvme4 tcp traddr=192.168.6.10 trsvcid=4420 host_traddr=192.168.6.1 src_addr=192.168.6.1 live  optimized
  5. ネットアッププラグインで、ONTAP ネームスペースデバイスごとに正しい値が表示されていることを確認します。

    列( Column )
    # nvme netapp ontapdevices -o column

    出力例:

    Device        Vserver     Namespace Path
    ------------  ----------  -----------------
    /dev/nvme0n1	vs_nvme177	/vol/vol1/ns1
    /dev/nvme0n2	vs_nvme177	/vol/vol2/ns2
    /dev/nvme0n3	vs_nvme177	/vol/vol3/ns3
    
    
    
    NSID     UUID                                   Size
    -------- -------------------------------------- -----------
    1	       72b887b1-5fb6-47b8-be0b-33326e2542e2	  85.90GB
    2	       04bf9f6e-9031-40ea-99c7-a1a61b2d7d08	  85.90GB
    3	       264823b1-8e03-4155-80dd-e904237014a4	  85.90GB
    JSON
    # nvme netapp ontapdevices -o json

    出力例

    {
    "ONTAPdevices" : [
    {
    "Device" : "/dev/nvme0n1", "Vserver" : "vs_nvme177",
    "Namespace_Path" : "/vol/vol1/ns1",
    "NSID" : 1,
    "UUID" : "72b887b1-5fb6-47b8-be0b-33326e2542e2", "Size" : "85.90GB",
    "LBA_Data_Size" : 4096,
    "Namespace_Size" : 5242880
    },
    {
    "Device" : "/dev/nvme0n2", "Vserver" : "vs_nvme177",
    "Namespace_Path" : "/vol/vol2/ns2",
     "NSID" : 2,
    "UUID" : "04bf9f6e-9031-40ea-99c7-a1a61b2d7d08", "Size" : "85.90GB",
    "LBA_Data_Size" : 4096,
    "Namespace_Size" : 20971520
    },
    {
    "Device" : "/dev/nvme0n3", "Vserver" : "vs_nvme177",
    "Namespace_Path" : "/vol/vol3/ns3",
     "NSID" : 3,
    "UUID" : "264823b1-8e03-4155-80dd-e904237014a4", "Size" : "85.90GB",
    "LBA_Data_Size" : 4096,
    "Namespace_Size" : 20971520
    },
    ]
    }

既知の問題

Oracle Linux 8.9(ONTAPリリース)でのNVMe-oFホスト設定には、次の既知の問題があります。

NetApp バグ ID

タイトル

説明

Oracle Linux 8.9 NVMe-oFホストでPDCが重複して作成される

Oracle Linux 8.9 NVMe-oFホストでは -p、 `nvme discover`コマンドにオプションを指定することで永続的検出コントローラ(PDC)が作成されます。イニシエータとターゲットの組み合わせでは、 `nvme discover`コマンドを実行するたびに1つのPDCが作成されます。ただし、Oracle Linux 8.x以降では、NVMe-oFホストは重複して作成されます。これにより、ホストとターゲットの両方のリソースが無駄になります。