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

ONTAP ストレージを使用した NVMe-oF 用の Ubuntu 22.04 の設定

共同作成者 netapp-camdenc netapp-pcarriga netapp-sarajane

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

Ubuntu 22.04 で NVMe over Fabrics(NVMe-oF)ホストを設定する方法について説明します。サポートと機能に関する詳細については、"Ubuntu ONTAP のサポートと機能"を参照してください。

Ubuntu 22.04 の NVMe-oF には、次の既知の制限があります。

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

サポートされている構成の詳細については、"Interoperability Matrix Tool"を参照してください。

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

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

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

    # uname -r

    Ubuntu カーネルバージョンの例:

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

    # apt list | grep nvme

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

    nvme-cli/jammy-updates,now 1.16-3ubuntu0.1 amd64
  3. Ubuntu 22.04ホストで、hostnqn文字列を /etc/nvme/hostnqn

    # cat /etc/nvme/hostnqn

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

    nqn.2014-08.org.nvmexpress:uuid:063axxxx-438a-xxxx-b9b4-95axxxx6d041
  4. ONTAPシステムで、 `hostnqn`の文字列が `/etc/nvme/hostnqn`から取得したものと、ONTAPストレージシステム上の対応するサブシステムの `hostnqn`の文字列が一致していることを確認します:

    ::> vserver nvme subsystem host show -vserver vs_106_fc_nvme
    例を示します
    Vserver     Subsystem          Host NQN
    ----------- --------------- ----------------------------------------------------------
    vs_106_fc_nvme ub_106 nqn.2014-08.org.nvmexpress:uuid:c047xxxx-e91e-xxxx-9995-ba4xxxx14631
    メモ もし `hostnqn`文字列が一致しない場合は、 `vserver modify`更新するコマンド `hostnqn`対応するONTAPストレージシステムサブシステムの文字列を `hostnqn`文字列から `/etc/nvme/hostnqn`ホスト上。

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

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

Broadcom / Emulex

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.2.673.40, sli-4:6:d
      14.2.673.40, sli-4:6:d
    2. 受信トレイのドライバーのバージョンを表示します。

      cat /sys/module/lpfc/version

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

    0: 14.0.0.4

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

  3. 確認します lpfc_enable_fc4_type がに設定されます 3

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

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

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

    0x100000109bf0447c
    0x100000109bf0447b
  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 lpfc1 Total 6144 IO 5894 ELS 250
    NVME LPORT lpfc1 WWPN x100000109bf0447c WWNN x200000109bf0447c DID x022300 ONLINE
    NVME RPORT       WWPN x200cd039eaa8138b WWNN x200ad039eaa8138b DID x021509 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2010d039eaa8138b WWNN x200ad039eaa8138b DID x021108 TARGET DISCSRVC ONLINE
    
    NVME Statistics
    LS: Xmt 000000000e Cmpl 000000000e Abort 00000000
    LS XMIT: Err 00000000  CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 0000000000005238 Issue 000000000000523a OutIO 0000000000000002
            abort 00000000 noxri 00000000 nondlp 00000000 qdepth 00000000 wqerr 00000000 err 00000000
    FCP CMPL: xb 00000000 Err 00000000
    
    NVME Initiator Enabled
    XRI Dist lpfc0 Total 6144 IO 5894 ELS 250
    NVME LPORT lpfc0 WWPN x100000109bf0447b WWNN x200000109bf0447b DID x022600 ONLINE
    NVME RPORT       WWPN x200bd039eaa8138b WWNN x200ad039eaa8138b DID x021409 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x200fd039eaa8138b WWNN x200ad039eaa8138b DID x021008 TARGET DISCSRVC ONLINE
    
    NVME Statistics
    LS: Xmt 000000000e Cmpl 000000000e Abort 00000000
    LS XMIT: Err 00000000  CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 000000000000523c Issue 000000000000523e OutIO 0000000000000002
            abort 00000000 noxri 00000000 nondlp 00000000 qdepth 00000000 wqerr 00000000 err 00000000
    FCP CMPL: xb 00000000 Err 00000000
Marvell/QLogic

Ubuntu 22.04 GAカーネルに含まれているネイティブの受信トレイqla2xxxドライバには、最新のアップストリーム修正が含まれています。これらの修正は、ONTAPのサポートに不可欠です。

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

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

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

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

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

    cat /sys/module/qla2xxx/parameters/ql2xnvmeenable

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

NVMe/FC

NVMe/TCP には自動接続機能がありません。代わりに、NVMe/TCP `connect`または `connect-all`操作を手動で実行することで、NVMe/TCP サブシステムと名前空間を検出できます。

パスがダウンし、デフォルトのタイムアウト期間である10分以内に回復しない場合、NVMe/TCPは自動的に再接続できません。タイムアウトを防ぐには、フェールオーバーイベントの再試行期間を少なくとも30分に設定します。

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

    nvme discover -t tcp -w host-traddr -a traddr
    出力例を表示します。
    #nvme discover -t tcp -w 10.10.11.47-a 10.10.10.122
    Discovery Log Number of Records 8, Generation counter 10
    =====Discovery Log Entry 0======
    trtype:  tcp
    adrfam:  ipv4
    subtype: current discovery subsystem
    treq:    not specified
    portid:  0
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.bbfb4ee8dfb611edbd07d039ea165590:discovery
    traddr:  10.10.10.122
    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:  1
    trsvcid: 8009
    subnqn:  nqn.1992 08.com.netapp:sn.bbfb4ee8dfb611edbd07d039ea165590:discovery
    traddr:  10.10.10.124
    eflags:  explicit discovery connections, duplicate discovery information
    sectype: none
    =====Discovery Log Entry 2======
    trtype:  tcp
  2. NVMe/TCPイニシエータとターゲットLIFの他の組み合わせで検出ログページのデータを正常に取得できることを確認します。

    nvme discover -t tcp -w host-traddr -a traddr
    出力例を表示します。
    #nvme discover -t tcp -w 10.10.10.47 -a 10.10.10.122
    #nvme discover -t tcp -w 10.10.10.47 -a 10.10.10.124
    #nvme discover -t tcp -w 10.10.11.47 -a 10.10.11.122
    #nvme discover -t tcp -w 10.10.11.47 -a 10.10.11.
  3. ノード全体でサポートされているすべてのNVMe/TCPイニシエータとターゲットLIFでnvme connect-allコマンドを実行し、コントローラ損失のタイムアウト時間を30分または1、800秒以上設定します。

    nvme connect-all -t tcp -w host-traddr -a traddr -l 1800
    出力例を表示します。
    #nvme	connect-all	-t	tcp	-w	10.10.10.47	-a	10.10.10.122 -l	1800
    #nvme	connect-all	-t	tcp	-w	10.10.10.47	-a	10.10.10.124 -l	1800
    #nvme	connect-all	-t	tcp	-w	10.10.11.47	-a	10.10.11.122 -l	1800
    #nvme	connect-all	-t	tcp	-w	10.10.11.47	-a	10.10.11.124 -l	1800

ステップ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をラウンドロビンに設定するなど)がホストに正しく反映されていることを確認します。

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

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

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

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

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

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

    # nvme list
    出力例を表示します。
    Node         SN                   Model
    ---------------------------------------------------------
    /dev/nvme0n1 81CZ5BQuUNfGAAAAAAAB	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/nvme0n1
    出力例を表示します。
    nvme-subsys4 - NQN=nqn.1992-08.com.netapp:sn.8763d311b2ac11ed950ed039ea951c46:subsystem. ub_106 \
    +- nvme1 fc traddr=nn-0x20a6d039ea954d17:pn-0x20a7d039ea954d17,host_traddr=nn-0x200000109b1b95ef:pn-0x100000109b1b95ef live optimized
    +- nvme2 fc traddr=nn-0x20a6d039ea954d17:pn-0x20a8d039ea954d17,host_traddr=nn-0x200000109b1b95f0:pn-0x100000109b1b95f0 live optimized
    +- nvme3 fc traddr=nn-0x20a6d039ea954d17:pn-0x20aad039ea954d17,host_traddr=nn-0x200000109b1b95f0:pn-0x100000109b1b95f0 live non-optimized
    +- nvme5 fc traddr=nn-0x20a6d039ea954d17:pn-0x20a9d039ea954d17,host_traddr=nn-0x200000109b1b95ef:pn-0x100000109b1b95ef live non-optimized
    NVMe/FC
    # nvme list-subsys /dev/nvme1n1
    出力例を表示します。
    nvme-subsys1 - NQN=nqn.1992- 08.com.netapp:sn. bbfb4ee8dfb611edbd07d039ea165590:subsystem.rhel_tcp_95
    +- nvme1 tcp traddr=10.10.10.122,trsvcid=4420,host_traddr=10.10.10.47,src_addr=10.10.10.47 live
    +- nvme2 tcp traddr=10.10.10.124,trsvcid=4420,host_traddr=10.10.10.47,src_addr=10.10.10.47 live
    +- nvme3 tcp traddr=10.10.11.122,trsvcid=4420,host_traddr=10.10.11.47,src_addr=10.10.11.47 live
    +- nvme4 tcp traddr=10.10.11.124,trsvcid=4420,host_traddr=10.10.11.47,src_addr=10.10.11.47 live
  5. ネットアッププラグインで、ONTAP ネームスペースデバイスごとに正しい値が表示されていることを確認します。

    列( Column )
    # nvme netapp ontapdevices -o column
    出力例を表示します。
    Device        Vserver   Namespace Path
    ----------------------- ------------------------------
    /dev/nvme0n1 co_iscsi_tcp_ubuntu /vol/vol1/ns1
    
    
    
    NSID       UUID                                   Size
    ------------------------------------------------------------
    1          79c2c569-b7fa-42d5-b870-d9d6d7e5fa84	21.47GB
    JSON
    # nvme netapp ontapdevices -o json
    出力例を表示します。
    {
    
    "ONTAPdevices" : [
    {
    
    "Device" : "/dev/nvme0n1",
    "Vserver" : "co_iscsi_tcp_ubuntu",
    "Namespace_Path" : "/vol/nvmevol1/ns1",
    "NSID" : 1,
    "UUID" : "79c2c569-b7fa-42d5-b870-d9d6d7e5fa84",
    "Size" : "21.47GB",
    "LBA_Data_Size" : 4096,
    "Namespace_Size" : 5242880
    },
    
    ]
    }

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

Ubuntu 22.04(ONTAPリリース)のNVMe-oFホスト構成には、次の既知の問題があります。

NetApp バグ ID タイトル 説明

CONTAPEXT-2037

Ubuntu 22.04 NVMe-oFホストで重複する永続的検出コントローラが作成される

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