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

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

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

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

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

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

  • その `nvme disconnect-all`このコマンドはルートファイルシステムとデータファイルシステムの両方を切断し、システムが不安定になる可能性があります。 NVMe-TCP または NVMe-FC 名前空間を介して SAN から起動するシステムではこれを発行しないでください。

手順1:必要に応じてSANブートを有効にします。

SAN ブートを使用するようにホストを構成すると、展開が簡素化され、スケーラビリティが向上します。使用"Interoperability Matrix Tool"Linux OS、ホスト バス アダプタ (HBA)、HBA ファームウェア、HBA ブート BIOS、およびONTAPバージョンが SAN ブートをサポートしていることを確認します。

手順
  1. "NVMe名前空間を作成し、ホストにマッピングする"

  2. SAN ブート名前空間がマップされているポートに対して、サーバー BIOS で SAN ブートを有効にします。

    HBA BIOS を有効にする方法については、ベンダー固有のマニュアルを参照してください。

  3. ホストを再起動し、OS が起動して実行されていることを確認します。

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

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

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

    uname -r

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

    6.12.0-105.51.5.el9uek.x86_64
  2. 「 nvme-cli 」パッケージをインストールします。

    rpm -qa|grep nvme-cli

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

    nvme-cli-2.13-1.el9.x86_64
  3. をインストールします libnvme パッケージ:

    rpm -qa|grep libnvme

    次の例は、 `libnvme`パッケージバージョン:

    libnvme-1.13-1.el9.x86_64
  4. Oracle Linux 9.xホストで、 hostnqn`文字列 `/etc/nvme/hostnqn:

    cat /etc/nvme/hostnqn

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

    nqn.2014-08.org.nvmexpress:uuid:8397cecc-30f0-11e8-850f-7ed30aef0cc7
  5. ONTAPシステムで、 `hostnqn`文字列が一致する `hostnqn`ONTAPストレージ システム上の対応するサブシステムの文字列:

    vserver nvme subsystem host show -vserver vs_coexistence_emulex
    例を示します
    Vserver Subsystem Priority  Host NQN
    ------- --------- --------  --------------------------------------------------------------------
    vs_coexistence_emulex
            Nvme1     regular   nqn.2014-08.org.nvmexpress:uuid:8397cecc-30f0-11e8-850f-7ed30aef0cc7
            Nvme2     regular   nqn.2014-08.org.nvmexpress:uuid:8397cecc-30f0-11e8-850f-7ed30aef0cc7
    メモ 文字列が一致しない場合 hostnqn`は、コマンドを使用して、対応するONTAPアレイサブシステムの文字列を更新し、 `hostnqn`ホストののの文字列 `/etc/nvme/hostnqn`と一致させる `hostnqn`ことができます `vserver modify

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

      cat /sys/module/lpfc/version

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

    0:14.4.0.8

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

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

    0x100000620b3c089c
    0x100000620b3c089d
  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 x100000620b3c089c WWNN x200000620b3c089c DID x081300 ONLINE
    NVME RPORT       WWPN x2001d039eab0dadc WWNN x2000d039eab0dadc DID x080107 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2221d039eab0dadc WWNN x2220d039eab0dadc DID x080105 TARGET DISCSRVC ONLINE
    
    NVME Statistics
    LS: Xmt 000000713b Cmpl 000000713b Abort 00000001
    LS XMIT: Err 00000000  CMPL: xb 00000001 Err 00000001
    Total FCP Cmpl 00000000a513b8bb Issue 00000000a4f2485c OutIO ffffffffffde8fa1
            abort 00006935 noxri 000004f0 nondlp 0002e119 qdepth
    00000000 wqerr 00000000 err 00000000
    FCP CMPL: xb 0000693d Err 0009cb89
    
    NVME Initiator Enabled
    XRI Dist lpfc1 Total 6144 IO 5894 ELS 250
    NVME LPORT lpfc1 WWPN x100000620b3c089d WWNN x200000620b3c089d DID x081900 ONLINE
    NVME RPORT       WWPN x2002d039eab0dadc WWNN x2000d039eab0dadc DID x080207 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2222d039eab0dadc WWNN x2220d039eab0dadc DID x080205 TARGET DISCSRVC ONLINE
    
    
    NVME Statistics
    LS: Xmt 0000007171 Cmpl 0000007171 Abort 00000000
    LS XMIT: Err 00000000  CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 00000000a509cecc Issue 00000000a4e7ed6c OutIO ffffffffffde1ea0
            abort 000069c5 noxri 00000406 nondlp 000301e6 qdepth 00000000 wqerr 00000000 err 00000000
    FCP CMPL: xb 000069d6 Err 0009cbcds
NVMe/FC - マーベル/QLogic

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

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

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

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

    QLE2872 FW:v9.15.17 DVR:v10.02.09.300-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.41.7 -a 192.168.41.10
    Discovery Log Entry =====
    trtype: tcp
    adrfam: ipv4
    subtype: current discovery subsystem
    treq: not specified
    portid: 8
    trsvcid: 8009
    subnqn: nqn.1992-08.com.netapp:sn.06a49b19b3ee11f09dcad039eabac370:discovery
    traddr: 192.168.31.99
    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: 8
    trsvcid: 8009
    subnqn: nqn.1992-08.com.netapp:sn.06a49b19b3ee11f09dcad039eabac370:discovery
    traddr: 192.168.30.99
    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: 8
    trsvcid: 8009
    subnqn: nqn.1992-08.com.netapp:sn.06a49b19b3ee11f09dcad039eabac370:discovery
    traddr: 192.168.31.98
    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: 5
    trsvcid: 8009
    subnqn: nqn.1992-08.com.netapp:sn.06a49b19b3ee11f09dcad039eabac370:discovery
    traddr: 192.168.30.98
    eflags: explicit discovery connections, duplicate discovery information
    sectype: none
    
    Discovery Log Entry 4=====
    trtype: tcp
    adrfam: ipv4
    subtype: nvme subsystem
    treq: not specified
    portid: 8
    trsvcid: 4420
    subnqn: nqn.1992-08.com.netapp:sn.06a49b19b3ee11f09dcad039eabac370:subsystem
    traddr: 192.168.31.99
    eflags: none
    sectype: none
    
    Discovery Log Entry 5=====
    trtype: tcp
    adrfam: ipv4
    subtype: nvme subsystem
    treq: not specified
    portid: 6
    trsvcid: 4420
    subnqn: nqn.1992-08.com.netapp:sn.06a49b19b3ee11f09dcad039eabac370:subsystem
    traddr: 192.168.30.99
    eflags: none
    sectype: none
    
    Discovery Log Entry 6=====
    trtype: tcp
    adrfam: ipv4
    subtype: nvme subsystem
    treq: not specified
    portid: 7
    trsvcid: 4420
    subnqn: nqn.1992-08.com.netapp:sn.06a49b19b3ee11f09dcad039eabac370:subsystem
    traddr: 192.168.31.98
    eflags: none
    sectype: none
    
    Discovery Log Entry 7=====
    trtype: tcp
    adrfam: ipv4
    subtype: nvme subsystem
    treq: not specified
    portid: 5
    trsvcid: 4420
    subnqn: nqn.1992-08.com.netapp:sn.06a49b19b3ee11f09dcad039eabac370:subsystem
    traddr: 192.168.30.98
    eflags: none
    sectype: none
  2. NVMe/TCPイニシエータとターゲットLIFの他の組み合わせで、検出ログページのデータを正常に取得できることを確認します。

    nvme discover -t tcp -w host-traddr -a traddr
    例を示します
    nvme discover -t tcp -w 192.168.41.7 -a 192.168.41.10
    nvme discover -t tcp -w 192.168.41.7 -a 192.168.41.11
    nvme discover -t tcp -w 192.168.48.7 -a 192.168.48.10
    nvme discover -t tcp -w 192.168.48.7 -a 192.168.48.11
  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.41.7 -a 192.168.41.10
    nvme connect-all -t tcp -w 192.168.41.7 -a 192.168.41.11
    nvme connect-all -t tcp -w 192.168.48.7 -a 192.168.48.10
    nvme connect-all -t tcp -w 192.168.48.7 -a 192.168.48.11

Oracle Linux 9.4以降、NVMe/TCPの設定は `ctrl_loss_tmo timeout`自動的に「オフ」に設定されます。その結果、次のようになります

  • 再試行回数に制限はありません(無期限再試行)。

  • 特定の設定を手動で行う必要はありません `ctrl_loss_tmo timeout`使用時の持続時間 `nvme connect`または `nvme connect-all`コマンド(オプション -l )。

  • NVMe/TCP コントローラーは、パス障害が発生した場合でもタイムアウトが発生せず、無期限に接続されたままになります。

ステップ4: オプションとして、udevルールのiopolicyを変更します。

Oracle Linux 9.xホストはNVMe-oFのデフォルトのiopolicyを次のように設定します。 round-robin。Oracle Linux 9.6以降では、iopolicyを次のように変更できます。 queue-depth udev ルール ファイルを変更します。

手順
  1. ルート権限でテキスト エディターで udev ルール ファイルを開きます。

    /usr/lib/udev/rules.d/71-nvmf-netapp.rules

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

    vi /usr/lib/udev/rules.d/71-nvmf-netapp.rules
  2. NetApp ONTAPコントローラの iopolicy を設定する行を見つけます。

    次の例は、ルールの例を示しています。

    ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{model}=="NetApp ONTAP Controller", ATTR{iopolicy}="queue-depth"
  3. 規則を修正して `queue-depth`が `round-robin`になるようにします:

    ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{model}=="NetApp ONTAP Controller", ATTR{iopolicy}="round-robin"
  4. udev ルールを再読み込みし、変更を適用します。

    udevadm control --reload
    udevadm trigger --subsystem-match=nvme-subsystem
  5. サブシステムの現在の iopolicy を確認します。 <subsystem>を置き換えます。例: nvme-subsys0

    cat /sys/class/nvme-subsystem/<subsystem>/iopolicy

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

    round-robin
メモ 新しい iopolicy は、一致するNetApp ONTAPコントローラ デバイスに自動的に適用されます。再起動は不要です。

ステップ5: オプションで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

ステップ6: NVMeブートサービスを確認する

その `nvmefc-boot-connections.service`そして `nvmf-autoconnect.service`NVMe/FCに含まれるブートサービス `nvme-cli`パッケージはシステムの起動時に自動的に有効になります。

起動が完了したら、 `nvmefc-boot-connections.service`そして `nvmf-autoconnect.service`ブート サービスが有効になっています。

手順
  1. が有効であることを確認し `nvmf-autoconnect.service`ます。

    systemctl status nvmf-autoconnect.service
    出力例を表示します。
    nvme-autoconnect.service - Connect NVMe-oF subsystems automatically during boot
      Loaded: loaded (/usr/lib/systemd/system/nvme-autoconnect.service; enabled; preset: disabled)
      Active: inactive (dead) since Tue 2026-02-02 09:48:11 EDT; 1 week 0 days ago
      Main PID: 2620 (code=exited, status=0/SUCCESS)
           CPU: 19ms
    
    Feb 02 09:48:11 sr630-13-169 systemdStarting Connect NVMe-oF subsystems automatically during boot...
    Feb 02 09:48:11 sr630-13-169 systemdnvme-autoconnect.service: Deactivated successfully.
    Feb 02 09:48:11 sr630-13-169 systemdFinished Connect NVMe-oF subsystems automatically during boot.
  2. が有効であることを確認し `nvmefc-boot-connections.service`ます。

    systemctl status nvmefc-boot-connections.service
    出力例を表示します。
    nvmfcs-boot-connections.service - Auto-connect to subsystems on FC-NVME devices found during boot
      Loaded: loaded (/usr/lib/systemd/system/nvmfcs-bootconnections.service; enabled; preset: enabled)
      Active: inactive (dead) since Tue 2026-02-02 09:47:07 EDT; 1 week 0 days ago
      Main PID: 1651 (code=exited, status=0/SUCCESS)
           CPU: 14ms
    
    Feb 02 09:47:07 sr630-13-169 systemdStarting Auto-connect to subsystems on FC-NVME devices found during boot...
    Feb 02 09:47:07 sr630-13-169 systemdnvmfcs-bootconnections.service: Deactivated successfully.
    Feb 02 09:47:07 sr630-13-169 systemd[1]: Finished Auto-connect to subsystems on FC-NVME devices found during boot.

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

カーネル内の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

      iopolicy に設定された値が表示されます。次に例を示します。

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

    nvme list
    例を示します
    Node            Generic         SN                   Model                    Namespace  Usage                      Format         FW Rev
    --------------- --------------- -------------------- ------------------------ ---------- -------------------------- -------------  --------
    /dev/nvme102n1  /dev/ng102n1    81LLqNYTindCAAAAAAAk NetApp ONTAP Controller   0x1          2.25  GB /   5.37  GB   4 KiB +  0 B   9.17.1
    /dev/nvme102n2  /dev/ng102n2    81LLqNYTindCAAAAAAAk NetApp ONTAP Controller   0x2          2.25  GB /   5.37  GB   4 KiB +  0 B   9.17.1
    /dev/nvme106n1  /dev/ng106n1    81LLqNYTindCAAAAAAAs NetApp ONTAP Controller   0x1          2.25  GB /   5.37  GB   4 KiB +  0 B   9.17.1
    /dev/nvme106n2  /dev/ng106n2    81LLqNYTindCAAAAAAAs NetApp ONTAP Controller   0x2          2.25  GB /   5.37  GB   4 KiB +  0 B   9.17.1
  4. 各パスのコントローラの状態がliveであり、正しいANAステータスが設定されていることを確認します。

    nvme list-subsys /dev/<controller_ID>
    メモ ONTAP 9.16.1 以降、NVMe/FV および NVMe/TCP は ASA r2 システム上のすべての最適化されたパスを報告します。
    NVMe/FC

    次の出力例は、NVMe/FCを使用するAFF、FAS、ASA、またはASA r2システムの2ノードONTAPコントローラでホストされているネームスペースを示しています。

    AFF、FAS、ASA出力例を表示します。
    nvme-subsys14 - NQN=nqn.1992-08.com.netapp:sn.9e30b9760a4911f08c87d039eab67a95:subsystem.sles_161_27 hostnqn=nqn.2014-08.org.nvmexpress:uuid:f6517cae-3133-11e8-bbff-7ed30aef123f
       iopolicy=round-robin
       +- nvme114 fc traddr=nn-0x234ed039ea359e4a:pn-0x2360d039ea359e4a,host_traddr=nn-0x20000090fae0ec88:pn-0x10000090fae0ec88 live optimized
       +- nvme115 fc traddr=nn-0x234ed039ea359e4a:pn-0x2362d039ea359e4a,host_traddr=nn-0x20000090fae0ec88:pn-0x10000090fae0ec88 live non-optimized
       +- nvme116 fc traddr=nn-0x234ed039ea359e4a:pn-0x2361d039ea359e4a,host_traddr=nn-0x20000090fae0ec89:pn-0x10000090fae0ec89 live optimized
       +- nvme117 fc traddr=nn-0x234ed039ea359e4a:pn-0x2363d039ea359e4a,host_traddr=nn-0x20000090fae0ec89:pn-0x10000090fae0ec89 live non-optimized
    ASA r2 の出力例を表示
    nvme-subsys96 - NQN=nqn.1992-08.com.netapp:sn.b351b2b6777b11f0b3c2d039ea5cf9c1:subsystem.nvme24 hostnqn=nqn.2014-08.org.nvmexpress:uuid:d3b581b4-c975-11e6-8425-0894ef31a074
       +- nvme203 fc traddr=nn-0x2011d039ea5cfc90:pn-0x2015d039ea5cfc90,host_traddr=nn-0x200000109bdacc76:pn-0x100000109bdacc76 live optimized
       +- nvme25  fc traddr=nn-0x2011d039ea5cfc90:pn-0x2014d039ea5cfc90,host_traddr=nn-0x200000109bdacc75:pn-0x100000109bdacc75 live optimized
       +- nvme30  fc traddr=nn-0x2011d039ea5cfc90:pn-0x2012d039ea5cfc90,host_traddr=nn-0x200000109bdacc75:pn-0x100000109bdacc75 live optimized
       +- nvme32  fc traddr=nn-0x2011d039ea5cfc90:pn-0x2013d039ea5cfc90,host_traddr=nn-0x200000109bdacc76:pn-0x100000109bdacc76 live optimized
    NVMe/FC

    次の出力例は、NVMe/TCP を使用する AFF、FAS、ASA、または ASA r2 システムの 2 ノード ONTAP コントローラでホストされているネームスペースを示しています。

    AFF、FAS、ASA出力例を表示します。
    nvme-subsys9 - NQN=nqn.1992-08.com.netapp:sn.9927e165694211f0b4f4d039eab31e9d:subsystem.nvme10 hostnqn=nqn.2014-08.org.nvmexpress:uuid:44cc4544-0035-5910-804b-b7c04f444d33
       +- nvme105 tcp traddr=192.168.39.10,trsvcid=4420,host_traddr=192.168.39.20,src_addr=192.168.39.20 live optimized
       +- nvme153 tcp traddr=192.168.39.11,trsvcid=4420,host_traddr=192.168.39.20,src_addr=192.168.39.20 live non-optimized
       +- nvme57  tcp traddr=192.168.38.11,trsvcid=4420,host_traddr=192.168.38.20,src_addr=192.168.38.20 live non-optimized
       +- nvme9   tcp traddr=192.168.38.10,trsvcid=4420,host_traddr=192.168.38.20,src_addr=192.168.38.20 live optimized
    ASA r2 の出力例を表示
    nvme-subsys4 - NQN=nqn.1992-08.com.netapp:sn.17e32b6e8c7f11f09545d039eac03c33:subsystem.Bidirectional_DHCP_1_0 hostnqn=nqn.2014-08.org.nvmexpress:uuid:44cc4544-0054-5110-8039-c3c0f523034
       +- nvme4  tcp traddr=192.168.20.28,trsvcid=4420,host_traddr=192.168.20.21,src_addr=192.168.20.21 live optimized
       +- nvme5  tcp traddr=192.168.20.29,trsvcid=4420,host_traddr=192.168.20.21,src_addr=192.168.20.21 live optimized
       +- nvme6  tcp traddr=192.168.21.28,trsvcid=4420,host_traddr=192.168.21.21,src_addr=192.168.21.21 live optimized
       +- nvme7  tcp traddr=192.168.21.29,trsvcid=4420,host_traddr=192.168.21.21,src_addr=192.168.21.21 live optimized
  5. ネットアッププラグインで、ONTAP ネームスペースデバイスごとに正しい値が表示されていることを確認します。

    列( Column )
    nvme netapp ontapdevices -o column
    例を示します
    Device          Vserver     Namespace Path        NSID  UUID                                   Size
    --------------- ----------- --------------------- ----- -------------------------------------- ------
    /dev/nvme1n1    vs_sanboot  sanboot_169           1     58443dbc-a472-45da-a5ef-3dd27c19d04b   171.80GB
    JSON
    nvme netapp ontapdevices -o json
    例を示します
    {
      "ONTAPDevices": [
        {
          "Device": "/dev/nvme11n1",
          "Vserver": "vs_sanboot",
          "Subsystem": "sanboot_169",
          "Namespace_Path": "/vol/nvme169/ns169",
          "NSID": 1,
          "UUID": "58443dbc-a472-45da-a5ef-3dd27c19d04b",
          "LBA_Size": 4096,
          "Namespace_Size": 171798691840,
          "UsedBytes": 6016638976,
          "Version": "9.18.1"
        }
      ]
    }

ステップ8: 安全なインバンド認証を設定する

Oracle Linux 9.x ホストとONTAPコントローラ間の NVMe/TCP 経由の安全なインバンド認証がサポートされます。

安全な認証を設定するには、各ホストまたはコントローラを DH-HMAC-CHAP キーに関連付ける必要があります。 DH-HMAC-CHAP キーは、NVMe ホストまたはコントローラの NQN と管理者によって設定された認証シークレットの組み合わせです。ピアを認証するには、NVMe ホストまたはコントローラはピアに関連付けられたキーを認識する必要があります。

手順

CLI または構成 JSON ファイルを使用して、安全なインバンド認証を設定します。異なるサブシステムに異なる dhchap キーを指定する必要がある場合は、構成 JSON ファイルを使用します。

CLI の使用

CLIを使用してセキュアなインバンド認証を設定します。

  1. ホストNQNを取得します。

    cat /etc/nvme/hostnqn
  2. Linux ホストの dhchap キーを生成します。

    コマンドパラメータの出力を次に示し `gen-dhchap-key`ます。

    nvme gen-dhchap-key -s optional_secret -l key_length {32|48|64} -m HMAC_function {0|1|2|3} -n host_nqn
    •	-s secret key in hexadecimal characters to be used to initialize the host key
    •	-l length of the resulting key in bytes
    •	-m HMAC function to use for key transformation
    0 = none, 1- SHA-256, 2 = SHA-384, 3=SHA-512
    •	-n host NQN to use for key transformation

    次の例では、HMACが3に設定されたランダムDHCHAPキー(SHA-512)が生成されます。

    # nvme gen-dhchap-key -m 3 -n nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0056-5410-8048-c4c04f425633
    DHHC-1:03:xhAfbAD5IVLZDxiVbmFEOA5JZ3F/ERqTXhHzZQJKgkYkTbPI9dhRyVtr4dBD+SGiAJO3by4FbnVtov1Lmk+86+nNc6k=
  3. ONTAPコントローラで、ホストを追加し、両方のDHCHAPキーを指定します。

    vserver nvme subsystem host add -vserver <svm_name> -subsystem <subsystem> -host-nqn <host_nqn> -dhchap-host-secret <authentication_host_secret> -dhchap-controller-secret <authentication_controller_secret> -dhchap-hash-function {sha-256|sha-512} -dhchap-group {none|2048-bit|3072-bit|4096-bit|6144-bit|8192-bit}
  4. ホストは、単方向と双方向の2種類の認証方式をサポートします。ホストで、ONTAPコントローラに接続し、選択した認証方式に基づいてDHCHAPキーを指定します。

    nvme connect -t tcp -w <host-traddr> -a <tr-addr> -n <host_nqn> -S <authentication_host_secret> -C <authentication_controller_secret>
  5. 検証する nvme connect authentication ホストとコントローラのDHCHAPキーを確認してコマンドを実行します。

    1. ホストDHCHAPキーを確認します。

      cat /sys/class/nvme-subsystem/<nvme-subsysX>/nvme*/dhchap_secret
      に、単方向設定の出力例を示します。
      cat /sys/class/nvme-subsystem/nvme-subsys1/nvme*/dhchap_secret
      DHHC-1:03:Y5VkkESgmtTGNdX842qemNpFK6BXYVwwnqErgt3IQKP5Fbjje\/JSBOjG5Ea3NBLRfuiAuUSDUto6eY\/GwKoRp6AwGkw=:
      DHHC-1:03:Y5VkkESgmtTGNdX842qemNpFK6BXYVwwnqErgt3IQKP5Fbjje\/JSBOjG5Ea3NBLRfuiAuUSDUto6eY\/GwKoRp6AwGkw=:
      DHHC-1:03:Y5VkkESgmtTGNdX842qemNpFK6BXYVwwnqErgt3IQKP5Fbjje\/JSBOjG5Ea3NBLRfuiAuUSDUto6eY\/GwKoRp6AwGkw=:
      DHHC-1:03:Y5VkkESgmtTGNdX842qemNpFK6BXYVwwnqErgt3IQKP5Fbjje\/JSBOjG5Ea3NBLRfuiAuUSDUto6eY\/GwKoRp6AwGkw=:
    2. コントローラのDHCHAPキーを確認します。

      cat /sys/class/nvme-subsystem/<nvme-subsysX>/nvme*/dhchap_ctrl_secret
      に、双方向設定の出力例を示します。
      cat /sys/class/nvme-subsystem/nvme-subsys6/nvme*/dhchap_ctrl_secret
      DHHC-1:03:frpLlTrnOYtcWDxPzq4ccxU1UrH2FjV7hYw5s2XEDB+lo+TjMsOwHR\/NFtM0nBBidx+gdoyUcC5s6hOOtTLDGcz0Kbs=:
      DHHC-1:03:frpLlTrnOYtcWDxPzq4ccxU1UrH2FjV7hYw5s2XEDB+lo+TjMsOwHR\/NFtM0nBBidx+gdoyUcC5s6hOOtTLDGcz0Kbs=:
      DHHC-1:03:frpLlTrnOYtcWDxPzq4ccxU1UrH2FjV7hYw5s2XEDB+lo+TjMsOwHR\/NFtM0nBBidx+gdoyUcC5s6hOOtTLDGcz0Kbs=:
      DHHC-1:03:frpLlTrnOYtcWDxPzq4ccxU1UrH2FjV7hYw5s2XEDB+lo+TjMsOwHR\/NFtM0nBBidx+gdoyUcC5s6hOOtTLDGcz0Kbs=:
JSON

ONTAPコントローラ構成で複数のNVMeサブシステムを使用できる場合は、コマンドでファイルを nvme connect-all`使用できます `/etc/nvme/config.json

使用 -o JSON ファイルを生成するオプション。その他の構文オプションについては、nvme connect - allのマニュアルページを参照してください。

  1. JSON ファイルを設定します。

    例を示します
    [
      {
        "hostnqn":"nqn.2014-08.org.nvmexpress:uuid:4c4cxxxx-0035-xxxx-804b-b7cxxxx44d33",
        "hostid":"4c4cxxxx-0035-xxxx-804b-b7cxxxx44d33",
        "dhchap_key":"DHHC-1:01:nFg06gV0FNpXqoiLOF0L+swULQpZU/PjU9v/McDeJHjTZFlF:",
        "subsystems":[
          {
            "nqn":"nqn.1992-08.com.netapp:sn.09035a8d8c8011f0ac0fd039eabac370:subsystem.subsys",
            "ports":[
              {
                "transport":"tcp",
                "traddr":"192.168.30.69",
                "host_traddr":"192.168.30.10",
                "trsvcid":"4420",
                "dhchap_ctrl_key":"DHHC-1:03:n3F8d+bvxKW/s+lEhqXaOohI2sxrQ9iLutzduuFq49JgdjjaFtTpDSO9kQl/bvZj+Bo3rdHh3xPXeP6a4xyhcRyqdds=:"
              }
            ]
          }
        ]
      }
    ]
    メモ 上記の例では、はに対応し、は dhchap_key`に対応 `dhchap_secret`し `dhchap_ctrl_key `dhchap_ctrl_secret`ます。
  2. config jsonファイルを使用してONTAPコントローラに接続します。

    nvme connect-all -J /etc/nvme/config.json
  3. 各サブシステムの各コントローラでDHCHAPシークレットが有効になっていることを確認します。

    1. ホストDHCHAPキーを確認します。

      cat /sys/class/nvme-subsystem/nvme-subsys0/nvme0/dhchap_secret

      次の例は、dhchap キーを示しています。

      DHHC-1:01:nFg06gV0FNpXqoiLOF0L+swULQpZU/PjU9v/McDeJHjTZFlF:
    2. コントローラのDHCHAPキーを確認します。

      cat /sys/class/nvme-subsystem/nvme-subsys0/nvme0/dhchap_ctrl_secret

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

    DHHC-1:03:n3F8d+bvxKW/s+lEhqXaOohI2sxrQ9iLutzduuFq49JgdjjaFtTpDSO9kQl/bvZj+Bo3rdHh3xPXeP6a4xyhcRyqdds=:

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

既知の問題はありません。