ONTAPストレージでNVMe-oF用にRHEL 10.xを構成する
Red Hat Enterpirse Linux (RHEL) ホストは、非対称名前空間アクセス (ANA) を備えた NVMe over Fibre Channel (NVMe/FC) および NVMe over TCP (NVMe/TCP) プロトコルをサポートします。 ANA は、iSCSI および FCP 環境における非対称論理ユニット アクセス (ALUA) と同等のマルチパス機能を提供します。
RHEL 10.x 用の NVMe over Fabrics (NVMe-oF) ホストを構成する方法を学習します。詳細なサポートと機能情報については、 "RHEL ONTAPのサポートと機能"。
RHEL 10.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 ブートをサポートしていることを確認します。
-
SAN ブート名前空間がマップされているポートに対して、サーバー BIOS で SAN ブートを有効にします。
HBA BIOS を有効にする方法については、ベンダー固有のマニュアルを参照してください。
-
ホストを再起動し、OS が起動して実行されていることを確認します。
ステップ2: RHELとNVMeソフトウェアをインストールし、構成を確認する
NVMe-oF 用にホストを構成するには、ホストおよび NVMe ソフトウェア パッケージをインストールし、マルチパスを有効にして、ホストの NQN 構成を確認する必要があります。
-
サーバーに RHEL 10.x をインストールします。インストールが完了したら、必要な RHEL 10.x カーネルが実行されていることを確認します。
uname -rRHEL カーネルバージョンの例:
6.12.0-211.7.3.el10_2.x86_64
-
「 nvme-cli 」パッケージをインストールします。
rpm -qa|grep nvme-cli次の例は、 `nvme-cli`パッケージバージョン:
nvme-cli-2.16-2.el10.x86_64
-
をインストールします
libnvmeパッケージ:rpm -qa|grep libnvme次の例は、 `libnvme`パッケージバージョン:
libnvme-1.16.1-3.el10_2.x86_64
-
ホスト上で、hostnqn文字列を確認します。
/etc/nvme/hostnqn:cat /etc/nvme/hostnqn次の例は、 `hostnqn`バージョン:
nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0056-5410-8048-c7c04f425633
-
ONTAPシステムで、 `hostnqn`文字列が一致する `hostnqn`ONTAPストレージ システム上の対応するサブシステムの文字列:
::> vserver nvme subsystem host show -vserver vs_coexistence_QLE2872例を示します
Vserver Subsystem Priority Host NQN ------- --------- -------- ------------------------------------------------ vs_coexistence_QLE2872 subsystem_1 regular nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0056-5410-8048-c7c04f425633 subsystem_10 regular nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0056-5410-8048-c7c04f425633 subsystem_11 regular nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0056-5410-8048-c7c04f425633
|
|
もし `hostnqn`文字列が一致しない場合は、 `vserver modify`更新するコマンド `hostnqn`対応するONTAPストレージシステムサブシステムの文字列を `hostnqn`文字列から `/etc/nvme/hostnqn`ホスト上。 |
ステップ3: NVMe/FCとNVMe/TCPを構成する
Broadcom/Emulex または Marvell/QLogic アダプタを使用して NVMe/FC を構成するか、手動の検出および接続操作を使用して NVMe/TCP を構成します。
Broadcom/Emulexアダプタ用にNVMe/FCを設定します。
-
サポートされているアダプタモデルを使用していることを確認します。
-
モデル名を表示します。
cat /sys/class/scsi_host/host*/modelname次の出力が表示されます。
SN1700E2P SN1700E2P
-
モデルの説明を表示します。
cat /sys/class/scsi_host/host*/modeldesc次の例のような出力が表示されます。
HPE SN1700E 64Gb 2p FC HBA HPE SN1700E 64Gb 2p FC HBA
-
-
推奨されるBroadcomを使用していることを確認します
lpfcファームウェアおよび受信トレイドライバ:-
ファームウェアのバージョンを表示します。
cat /sys/class/scsi_host/host*/fwrevこのコマンドはファームウェアのバージョンを返します。
14.4.731.5, sli-4:6:d 14.4.731.5, sli-4:6:d
-
受信トレイのドライバーのバージョンを表示します。
cat /sys/module/lpfc/version次の例は、ドライバーのバージョンを示しています。
0:14.4.0.12
サポートされているアダプタドライバおよびファームウェアバージョンの最新リストについては、を参照してください"Interoperability Matrix Tool"。
-
-
確認します
lpfc_enable_fc4_typeがに設定されます3:cat /sys/module/lpfc/parameters/lpfc_enable_fc4_type -
イニシエータポートを表示できることを確認します。
cat /sys/class/fc_host/host*/port_name次のような出力が表示されます:
0x10005ced8c53092a 0x10005ced8c53092a
-
イニシエータポートがオンラインであることを確認します。
cat /sys/class/fc_host/host*/port_state次の出力が表示されます。
Online Online
-
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 x10005ced8c53092a WWNN x20005ced8c53092a DID x081e00 ONLINE NVME RPORT WWPN x2049d039eac0cc5b WWNN x2047d039eac0cc5b DID x082208 TARGET DISCSRVC ONLINE NVME RPORT WWPN x2008d039eac0cc5b WWNN x2007d039eac0cc5b DID x082202 TARGET DISCSRVC ONLINE NVME RPORT WWPN x2009d039eac0cc5b WWNN x2007d039eac0cc5b DID x082602 TARGET DISCSRVC ONLINE NVME RPORT WWPN x2048d039eac0cc5b WWNN x2047d039eac0cc5b DID x08260a TARGET DISCSRVC ONLINE NVME Statistics LS: Xmt 0000004553 Cmpl 0000004553 Abort 00000000 LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000 Total FCP Cmpl 000000000578fc29 Issue 000000000578fc8d OutIO 0000000000000064 abort 00004f7c noxri 00000001 nondlp 000002da qdepth 00000000 wqerr 0000168a err 00000000 FCP CMPL: xb 00005033 Err 0000aa85 NVME Initiator Enabled XRI Dist lpfc1 Total 6144 IO 5894 ELS 250 NVME LPORT lpfc1 WWPN x10005ced8c53092b WWNN x20005ced8c53092b DID x031f00 ONLINE NVME RPORT WWPN x204bd039eac0cc5b WWNN x2047d039eac0cc5b DID x03250a TARGET DISCSRVC ONLINE NVME RPORT WWPN x200ad039eac0cc5b WWNN x2007d039eac0cc5b DID x032502 TARGET DISCSRVC ONLINE NVME RPORT WWPN x204ed039eac0cc5b WWNN x2047d039eac0cc5b DID x03260a TARGET DISCSRVC ONLINE NVME RPORT WWPN x200bd039eac0cc5b WWNN x2007d039eac0cc5b DID x032602 TARGET DISCSRVC ONLINE NVME Statistics LS: Xmt 0000004509 Cmpl 0000004509 Abort 00000000 LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000 Total FCP Cmpl 000000000571ddc6 Issue 000000000571de28 OutIO 0000000000000062 abort 0000421e noxri 00000000 nondlp 00000491 qdepth 00000000 wqerr 00000120 err 00000000 FCP CMPL: xb 00004410 Err 0000995c
Marvell/QLogicアダプタ用にNVMe/FCを設定します。
-
サポートされているアダプタ ドライバーとファームウェア バージョンを使用していることを確認します。
cat /sys/class/fc_host/host*/symbolic_name次の例は、ドライバーとファームウェアのバージョンを示しています。
QLE2872 FW:v9.15.06 DVR:v10.02.10.100-k-debug QLE2872 FW:v9.15.06 DVR:v10.02.10.100-k-debug
-
確認します
ql2xnvmeenableが設定されます。これにより、MarvellアダプタをNVMe/FCイニシエータとして機能させることができます。cat /sys/module/qla2xxx/parameters/ql2xnvmeenable想定される出力は1です。
NVMe/TCP プロトコルは自動接続操作をサポートしていません。代わりに、NVMe/TCPサブシステムと名前空間をNVMe/TCPコマンドで検出することができます。 `connect`または `connect-all`手動で操作します。
-
イニシエーター ポートが、サポートされている NVMe/TCP LIF 全体で検出ログ ページ データを取得できることを確認します。
nvme discover -t tcp -w host-traddr -a traddr例を示します
nvme discover -t tcp -w 192.168.20.1 -a 192.168.20.26 Discovery Log Number of Records 196, Generation counter 245 =====Discovery Log Entry 0====== trtype: tcp adrfam: ipv4 subtype: current discovery subsystem treq: not specified portid: 9 trsvcid: 8009 subnqn: nqn.1992-08.com.netapp:sn.08818e1f130811f1b8b4d039eac0cc5b:discovery traddr: 192.168.21.26 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: 7 trsvcid: 8009 subnqn: nqn.1992-08.com.netapp:sn.08818e1f130811f1b8b4d039eac0cc5b:discovery traddr: 192.168.20.26 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: 11 trsvcid: 8009 subnqn: nqn.1992-08.com.netapp:sn.08818e1f130811f1b8b4d039eac0cc5b:discovery traddr: 192.168.20.27 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.08818e1f130811f1b8b4d039eac0cc5b:discovery traddr: 192.168.21.27 eflags: explicit discovery connections, duplicate discovery information sectype: none =====Discovery Log Entry 4====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 9 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.08818e1f130811f1b8b4d039eac0cc5b:subsystem.Bidirectional_DHCP_NONE_1_5 traddr: 192.168.21.26 eflags: none sectype: none =====Discovery Log Entry 5====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 7 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.08818e1f130811f1b8b4d039eac0cc5b:subsystem.Bidirectional_DHCP_NONE_1_5 traddr: 192.168.20.26 eflags: none sectype: none =====Discovery Log Entry 6====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 11 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.08818e1f130811f1b8b4d039eac0cc5b:subsystem.Bidirectional_DHCP_NONE_1_5 traddr: 192.168.20.27 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.08818e1f130811f1b8b4d039eac0cc5b:subsystem.Bidirectional_DHCP_NONE_1_5 traddr: 192.168.21.27 eflags: none sectype: none =====Discovery Log Entry 8====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 9 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.08818e1f130811f1b8b4d039eac0cc5b:subsystem.Unidirectional_DHCP_1_0 traddr: 192.168.21.26 eflags: none sectype: none =====Discovery Log Entry 9====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 7 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.08818e1f130811f1b8b4d039eac0cc5b:subsystem.Unidirectional_DHCP_1_0 traddr: 192.168.20.26 eflags: none sectype: none =====Discovery Log Entry 10====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 11 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.08818e1f130811f1b8b4d039eac0cc5b:subsystem.Unidirectional_DHCP_1_0 traddr: 192.168.20.27 eflags: none sectype: none =====Discovery Log Entry 11====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 5 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.08818e1f130811f1b8b4d039eac0cc5b:subsystem.Unidirectional_DHCP_1_0 traddr: 192.168.21.27 eflags: none sectype: none =====Discovery Log Entry 12====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 9 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.08818e1f130811f1b8b4d039eac0cc5b:subsystem.Unidirectional_DHCP_2_0 traddr: 192.168.21.26 eflags: none sectype: none =====Discovery Log Entry 13====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 7 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.08818e1f130811f1b8b4d039eac0cc5b:subsystem.Unidirectional_DHCP_2_0 traddr: 192.168.20.26 eflags: none sectype: none =====Discovery Log Entry 14====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 11 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.08818e1f130811f1b8b4d039eac0cc5b:subsystem.Unidirectional_DHCP_2_0 traddr: 192.168.20.27 eflags: none sectype: none =====Discovery Log Entry 15====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 5 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.08818e1f130811f1b8b4d039eac0cc5b:subsystem.Unidirectional_DHCP_2_0 traddr: 192.168.21.27 eflags: none sectype: none =====Discovery Log Entry 16====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 9 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.08818e1f130811f1b8b4d039eac0cc5b:subsystem.Unidirectional_DHCP_NONE_1_4 traddr: 192.168.21.26 eflags: none sectype: none =====Discovery Log Entry 17====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 7 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.08818e1f130811f1b8b4d039eac0cc5b:subsystem.Unidirectional_DHCP_NONE_1_4 traddr: 192.168.20.26 eflags: none sectype: none =====Discovery Log Entry 18====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 11 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.08818e1f130811f1b8b4d039eac0cc5b:subsystem.Unidirectional_DHCP_NONE_1_4 traddr: 192.168.20.27 eflags: none sectype: none =====Discovery Log Entry 19====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 5 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.08818e1f130811f1b8b4d039eac0cc5b:subsystem.Unidirectional_DHCP_NONE_1_4 traddr: 192.168.21.27 eflags: none sectype: none =====Discovery Log Entry 20====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 9 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.08818e1f130811f1b8b4d039eac0cc5b:subsystem.Unidirectional_DHCP_NONE_2_3 traddr: 192.168.21.26 eflags: none sectype: none …
-
他の NVMe/TCP イニシエーターとターゲット LIF の組み合わせで検出ログ ページ データを正常に取得できることを確認します。
nvme discover -t tcp -w host-traddr -a traddr例を示します
nvme discover -t tcp -w 192.168.20.1 -a 192.168.20.26 nvme discover -t tcp -w 192.168.21.1 -a 192.168.21.26 nvme discover -t tcp -w 192.168.20.1 -a 192.168.20.27 nvme discover -t tcp -w 192.168.21.1 -a 192.168.21.27
-
を実行します
nvme connect-allノード全体でサポートされているすべてのNVMe/TCPイニシエータ/ターゲットLIFを対象としたコマンド:nvme connect-all -t tcp -w host-traddr -a traddr例を示します
nvme connect-all -t tcp -w 192.168.20.1 -a 192.168.20.26 nvme connect-all -t tcp -w 192.168.21.1 -a 192.168.21.26 nvme connect-all -t tcp -w 192.168.20.1 -a 192.168.20.27 nvme connect-all -t tcp -w 192.168.21.1 -a 192.168.21.27
RHEL 9.4以降、NVMe/TCPの設定は `ctrl_loss_tmo timeout`自動的に「オフ」に設定されます。その結果、次のようになります
-
再試行回数に制限はありません(無期限再試行)。
-
特定の設定を手動で行う必要はありません `ctrl_loss_tmo timeout`使用時の持続時間 `nvme connect`または `nvme connect-all`コマンド(オプション -l )。
-
NVMe/TCP コントローラーは、パス障害が発生した場合でもタイムアウトが発生せず、無期限に接続されたままになります。
ステップ4: オプションとして、udevルールのiopolicyを変更します。
-
RHEL 10.1以降、デフォルトのiopolicyはqueue-depthです。
-
RHEL 10.0では、ラウンドロビンがデフォルトのiopolicyですが、queue-depthは設定可能なオプションとして利用できます。
RHEL 10.0 を使用していて、iopolicy を queue-depth に変更したい場合は、udev ルールファイルを次のように変更してください:
-
ルート権限でテキスト エディターで udev ルール ファイルを開きます。
/usr/lib/udev/rules.d/71-nvmf-netapp.rules次の出力が表示されます。
vi /usr/lib/udev/rules.d/71-nvmf-netapp.rules
-
次の例のルールに示すように、 NetApp ONTAPコントローラの iopolicy を設定する行を見つけます。
ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{model}=="NetApp ONTAP Controller", ATTR{iopolicy}="round-robin" -
ルールを修正して
round-robin`なる `queue-depth:ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{model}=="NetApp ONTAP Controller", ATTR{iopolicy}="queue-depth" -
udev ルールを再読み込みし、変更を適用します。
udevadm control --reload udevadm trigger --subsystem-match=nvme-subsystem -
サブシステムの現在の iopolicy を確認します。 <subsystem>を置き換えます。例:
nvme-subsys0。cat /sys/class/nvme-subsystem/<subsystem>/iopolicy次の出力が表示されます。
queue-depth.
|
|
新しい 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ホストには適用されません。 |
-
`lpfc_sg_seg_cnt`パラメータを256に設定します。
cat /etc/modprobe.d/lpfc.conf次の例のような出力が表示されます。
options lpfc lpfc_sg_seg_cnt=256
-
コマンドを実行し
dracut -f、ホストをリブートします。 -
の値が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`ブート サービスが有効になっています。
-
が有効であることを確認し `nvmf-autoconnect.service`ます。
systemctl status nvmf-autoconnect.service出力例を表示します。
nvmf-autoconnect.service - Connect NVMe-oF subsystems automatically during boot Loaded: loaded (/usr/lib/systemd/system/nvmf-autoconnect.service; enabled; preset: disabled) Active: inactive (dead) since Sun 2026-04-19 02:19:18 EDT; 2 days ago Invocation: 4a0dab1649ff454b957224c7fcafbe1d Main PID: 9704 (code=exited, status=0/SUCCESS) Mem peak: 3M CPU: 44ms Apr 19 02:19:18 R650-14-194.lab.eng.btc.netapp.in systemd[1]: Starting nvmf-autoconnect.service - Connect NVMe-oF subsystems automatically during boot... Apr 19 02:19:18 R650-14-194.lab.eng.btc.netapp.in systemd[1]: nvmf-autoconnect.service: Deactivated successfully. Apr 19 02:19:18 R650-14-194.lab.eng.btc.netapp.in systemd[1]: Finished nvmf-autoconnect.service - Connect NVMe-oF subsystems automatically during boot. -
が有効であることを確認し `nvmefc-boot-connections.service`ます。
systemctl status nvmefc-boot-connections.service出力例を表示します。
nvmefc-boot-connections.service - Auto-connect to subsystems on FC-NVME devices found during boot Loaded: loaded (/usr/lib/systemd/system/nvmefc-boot-connections.service; enabled; preset: enabled) Active: inactive (dead) since Sun 2026-04-19 02:19:09 EDT; 2 days ago Invocation: da450120872f454d8264f1dfa0c646e3 Main PID: 4277 (code=exited, status=0/SUCCESS) Mem peak: 2.9M CPU: 15ms Apr 19 02:19:09 R650-14-194.lab.eng.btc.netapp.in systemd[1]: Starting nvmefc-boot-connections.service - Auto-connect to subsystems on FC-NVME devices found during boot. Apr 19 02:19:09 R650-14-194.lab.eng.btc.netapp.in systemd[1]: nvmefc-boot-connections.service: Deactivated successfully. Apr 19 02:19:09 R650-14-194.lab.eng.btc.netapp.in systemd[1]: Finished nvmefc-boot-connections.service - Auto-connect to subsystems on FC-NVME devices found during boot.
ステップ7: マルチパス構成を確認する
カーネル内のNVMeマルチパスステータス、ANAステータス、およびONTAPネームスペースがNVMe-oF構成に対して正しいことを確認します。
-
それぞれのONTAP名前空間の適切な NVMe-oF 設定 (モデルをNetApp ONTAPコントローラに設定し、ロード バランシングiopolicy を queue-depth に設定するなど) がホストに正しく表示されていることを確認します。
-
サブシステムを表示します。
cat /sys/class/nvme-subsystem/nvme-subsys*/model次の出力が表示されます。
NetApp ONTAP Controller NetApp ONTAP Controller
-
ポリシーを表示します。
cat /sys/class/nvme-subsystem/nvme-subsys*/iopolicy次の出力が表示されます。
queue-depth queue-depth
-
-
ネームスペースが作成され、ホストで正しく検出されたことを確認します。
nvme list例を示します
Node Generic SN Model --------------------- --------------------- -------------------- ---------------------------------------- /dev/nvme11n1 /dev/ng11n1 81OcqJXhgWtsAAAAAAAI NetApp ONTAP Controller Namespace Usage Format FW Rev ---------- -------------------------- ---------------- -------- 0x1 951.90 MB / 21.47 GB 4 KiB + 0 B 9.18.1
-
各パスのコントローラの状態がliveであり、正しいANAステータスが設定されていることを確認します。
nvme list-subsys /dev/<controller_ID>ONTAP 9.16.1 以降、NVMe/FC および NVMe/TCP は ASA r2 システム上のすべての最適化されたパスを報告します。 NVMe/FC次の出力例は、NVMe/FC を使用する AFF、FAS、ASA システムおよび ASA r2 システム用の 2 ノード ONTAP コントローラでホストされているネームスペースを示しています。
AFF、FAS、ASA出力例を表示します。
nvme-subsys5 - NQN=nqn.1992-08.com.netapp:sn.f7565b15a66911ef9668d039ea951c46:subsystem.nvme 1 hostnqn=nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0056-5410-8048-c7c04f425633 \ +- nvme126 fc traddr=nn-0x2036d039ea951c45:pn-0x2038d039ea951c45,host_traddr=nn-0x2000f4c7aa0cd7c3:pn-0x2100f4c7aa0cd7c3 live optimized +- nvme176 fc traddr=nn-0x2036d039ea951c45:pn-0x2037d039ea951c45,host_traddr=nn-0x2000f4c7aa0cd7c2:pn-0x2100f4c7aa0cd7c2 live optimized +- nvme5 fc traddr=nn-0x2036d039ea951c45:pn-0x2039d039ea951c45,host_traddr=nn-0x2000f4c7aa0cd7c2:pn-0x2100f4c7aa0cd7c2 live non-optimized +- nvme71 fc traddr=nn-0x2036d039ea951c45:pn-0x203ad039ea951c45,host_traddr=nn-0x2000f4c7aa0cd7c3:pn-0x2100f4c7aa0cd7c3 live non-optimized
ASA r2 の出力例を表示
nvme-subsys96 - NQN=nqn.1992-08.om.netapp:sn.b351b2b6777b11f0b3c2d039ea5cfc91:subsystem.nvme2 4 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-subsys4 - NQN=nqn.1992-08.com.netapp:sn.64e65e6caae711ef9668d039ea951c46:subsystem.nvme4 hostnqn=nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0035-5910-804b-c2c04f444d33 \ +- nvme102 tcp traddr=192.168.21.20,trsvcid=4420,host_traddr=192.168.21.1,src_addr=192.168.21.1 live non-optimized +- nvme151 tcp traddr=192.168.21.21,trsvcid=4420,host_traddr=192.168.21.1,src_addr=192.168.21.1 live optimized +- nvme4 tcp traddr=192.168.20.20,trsvcid=4420,host_traddr=192.168.20.1,src_addr=192.168.20.1 live non-optimized +- nvme53 tcp traddr=192.168.20.21,trsvcid=4420,host_traddr=192.168.20.1,src_addr=192.168.20.1 live optimizedASA r2 の出力例を表示
nvme-subsys6 - NQN= nqn.1992-08.com.netapp:sn.08818e1f130811f1b8b4d039eac0cc5b:subsystem.Bidi rectional_DHCP_1_0 hostnqn=nqn.2014-08.org.nvmexpress:uuid:39313550-3033-4931-3544-30573030394c \ +- nvme4 tcp traddr=192.168.20.26,trsvcid=4420,host_traddr=192.168.20.1,src_ addr=192.168.20.1 live optimized +- nvme5 tcp traddr=192.168.20.27,trsvcid=4420,host_traddr=192.168.20.1,src_ addr=192.168.20.1 live optimized +- nvme6 tcp traddr=192.168.21.26,trsvcid=4420,host_traddr=192.168.21.1,src_ addr=192.168.21.1 live optimized +- nvme7 tcp traddr=192.168.21.27,trsvcid=4420,host_traddr=192.168.21.1,src_ addr=192.168.21.1 live optimized
-
ネットアッププラグインで、ONTAP ネームスペースデバイスごとに正しい値が表示されていることを確認します。
列( Column )nvme netapp ontapdevices -o column例を示します
Device Vserver Subsystem Namespace Path ---------------- ------------------------- ------------------------- ------------------ /dev/nvme0n1 linux_tcnvme_iscsi Bidirectional_DHCP_1_0 tcp_1 NSID UUID Size ---- -------------------------------------- --------- 1 98fdc7cc-1407-11f1-b4eb-d039eac0cc5b 322.12GB
JSONnvme netapp ontapdevices -o json例を示します
{ "ONTAPdevices":[ { "Device":"/dev/nvme0n1", "Vserver":"vs_nvme_sanboot_tcp", "Subsystem":"rhel_sanboot_tcp170", "Namespace_Path":"tcp_97", "NSID":1, "UUID":"982c0f2a-6b8b-11f0-a6c0-d039eac03c33", "LBA_Size":4096, "Namespace_Size":322122547200, "UsedBytes":16285069312, "Version":"9.18.1" } ] }
ステップ8: 安全なインバンド認証を設定する
RHEL 10.x ホストとONTAPコントローラ間の NVMe/TCP 経由の安全なインバンド認証がサポートされます。
各ホストまたはコントローラは、 `DH-HMAC-CHAP`安全な認証を設定するためのキー。 `DH-HMAC-CHAP`キーは、NVMe ホストまたはコントローラの NQN と管理者によって設定された認証シークレットの組み合わせです。ピアを認証するには、NVMeホストまたはコントローラがピアに関連付けられたキーを認識する必要があります。
CLI または設定 JSON ファイルを使用して、安全なインバンド認証を設定します。サブシステムごとに異なるDHCHAPキーを指定する必要がある場合は、config JSONファイルを使用する必要があります。
CLIを使用してセキュアなインバンド認証を設定します。
-
ホストNQNを取得します。
cat /etc/nvme/hostnqn -
RHEL 10.x ホストの 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:39313550-3033-4931-3544-30573030394c DHHC-1:03:sdLD7EmvjGj8J9CNNe+my2i9JnuI6bIjhPrtcNRs5q6sAKW2HFPh4L3MjhTh49bxZsYSZlqe39CHUvT1+/EjGfqrl0U=:
-
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} -
ホストは、単方向と双方向の2種類の認証方式をサポートします。ホストで、ONTAPコントローラに接続し、選択した認証方式に基づいてDHCHAPキーを指定します。
nvme connect -t tcp -w <host-traddr> -a <tr-addr> -n <host_nqn> -S <authentication_host_secret> -C <authentication_controller_secret> -
検証する
nvme connect authenticationホストとコントローラのDHCHAPキーを確認してコマンドを実行します。-
ホストDHCHAPキーを確認します。
cat /sys/class/nvme-subsystem/<nvme-subsysX>/nvme*/dhchap_secretに、単方向設定の出力例を示します。
cat /sys/class/nvme-subsystem/nvme-subsys5/nvme*/dhchap_secret DHHC-1:01:+qRDBvUBDK+yy7vgsH9YXY8mqfo4ss6FEER9ubjAuhs0I+gZ: DHHC-1:01:+qRDBvUBDK+yy7vgsH9YXY8mqfo4ss6FEER9ubjAuhs0I+gZ: DHHC-1:01:+qRDBvUBDK+yy7vgsH9YXY8mqfo4ss6FEER9ubjAuhs0I+gZ: DHHC-1:01:+qRDBvUBDK+yy7vgsH9YXY8mqfo4ss6FEER9ubjAuhs0I+gZ:
-
コントローラのDHCHAPキーを確認します。
cat /sys/class/nvme-subsystem/<nvme-subsysX>/nvme*/dhchap_ctrl_secretに、双方向設定の出力例を示します。
cat /sys/class/nvme-subsystem/nvme-subsys5/nvme*/dhchap_ctrl_secret DHHC-1:03:sdLD7EmvjGj8J9CNNe+my2i9JnuI6IjhPrtcNRs5q6sAKW2HFPh4L3MjhTh49bxZsYSZlqe39CHUvT1+/EjGfqrl0U=: DHHC-1:03:sdLD7EmvjGj8J9CNNe+my2i9JnuI6IjhPrtcNRs5q6sAKW2HFPh4L3MjhTh49bxZsYSZlqe39CHUvT1+/EjGfqrl0U=: DHHC-1:03:sdLD7EmvjGj8J9CNNe+my2i9JnuI6IjhPrtcNRs5q6sAKW2HFPh4L3MjhTh49bxZsYSZlqe39CHUvT1+/EjGfqrl0U=: DHHC-1:03:sdLD7EmvjGj8J9CNNe+my2i9JnuI6IjhPrtcNRs5q6sAKW2HFPh4L3MjhTh49bxZsYSZlqe39CHUvT1+/EjGfqrl0U=:
-
ONTAPコントローラ上で複数のNVMeサブシステムが利用可能な場合は、 `/etc/nvme/config.json`ファイルに `nvme connect-all`指示。
使用 `-o`JSON ファイルを生成するオプション。詳細な構文オプションについては、NVMe connect-all のマニュアル ページを参照してください。
-
JSON ファイルを設定します。
次の例では、 dhchap_key`対応する `dhchap_secret`そして `dhchap_ctrl_key`対応する `dhchap_ctrl_secret。例を示します
[ { "hostnqn":" nqn.2014-08.org.nvmexpress:uuid:39313550-3033-4931-3544-30573030394c", "hostid":"44454c4c-5400-1051-8039-c3c04f523034", "dhchap_key":" DHHC-1:01:+qRDBvUBDK+yy7vgsH9YXY8mqfo4ss6FEER9ubjAuhs0I+gZ: ", "subsystems":[ { "nqn":"nqn.1992-08.com.netapp:sn.5857c8c9b22411f08d0ed039eac03c33:subsystem.Bidi rectional_DHCP_1_0", "ports":[ { "transport":"tcp", "traddr":"192.168.20.26", "host_traddr":"192.168.20.1", "trsvcid":"4420", "dhchap_ctrl_key":" DHHC-1:03:sdLD7EmvjGj8J9CNNe+my2i9JnuI6bIjhPrtcNRs5q6sAKW2HFPh4L3MjhTh49bxZsYSZlqe39CHUvT1+/EjGfqrl0U=: " }, { "transport":"tcp", "traddr":"192.168.20.27", "host_traddr":"192.168.20.1", "trsvcid":"4420", "dhchap_ctrl_key":" DHHC-1:03:sdLD7EmvjGj8J9CNNe+my2i9JnuI6bIjhPrtcNRs5q6sAKW2HFPh4L3MjhTh49bxZsYSZlqe39CHUvT1+/EjGfqrl0U=: " }, { "transport":"tcp", "traddr":"192.168.21.26", "host_traddr":"192.168.21.1", "trsvcid":"4420", "dhchap_ctrl_key":" DHHC-1:03:sdLD7EmvjGj8J9CNNe+my2i9JnuI6bIjhPrtcNRs5q6sAKW2HFPh4L3MjhTh49bxZsYSZlqe39CHUvT1+/EjGfqrl0U=: " }, { "transport":"tcp", "traddr":"192.168.21.27", "host_traddr":"192.168.21.1", "trsvcid":"4420", "dhchap_ctrl_key":" DHHC-1:03:sdLD7EmvjGj8J9CNNe+my2i9JnuI6bIjhPrtcNRs5q6sAKW2HFPh4L3MjhTh49bxZsYSZlqe39CHUvT1+/EjGfqrl0U=: } ] } ] } ] -
config jsonファイルを使用してONTAPコントローラに接続します。
nvme connect-all -J /etc/nvme/config.json例を示します
traddr=192.168.20.26 is already connected traddr=192.168.20.27 is already connected traddr=192.168.20.26 is already connected traddr=192.168.20.27 is already connected
-
各サブシステムのそれぞれのコントローラに対して dhchap シークレットが有効になっていることを確認します。
-
ホストDHCHAPキーを確認します。
cat /sys/class/nvme-subsystem/nvme-subsys4/nvme4/dhchap_secret次の例は、dhchap キーを示しています。
DHHC-1:01:2G7lsg9PMO00h1Wf1g4QtP0XT11kREz0qVuLm2xvZdbaWR/g:
-
コントローラのDHCHAPキーを確認します。
cat /sys/class/nvme-subsystem/nvme-subsys5/nvme5/dhchap_ctrl_secret次の例のような出力が表示されます。
DHHC-1:03:sdLD7EmvjGj8J9CNNe+my2i9JnuI6bIjhPrtcNRs5q6sAKW2HFPh4L3MjhTh49bxZsYSZlqe39CHUvT1+/EjGfqrl0U=:
-
手順9:既知の問題を確認する
既知の問題はありません。