ONTAPストレージを使用したUbuntu 24.04のNVMe-oF設定
Ubuntu 24.04およびAsymmetric Namespace Access(ANA)では、NVMe over Fibre Channel(NVMe/FC)やその他のトランスポートを含むNVMe over Fabrics(NVMe-oF)がサポートされます。NVMe-oF環境では、ANAはiSCSI環境およびFC環境のALUAマルチパスに相当し、カーネル内NVMeマルチパスで実装されます。
Ubuntu 24.04 で NVMe over Fabrics (NVMe-oF) ホストを構成する方法を学びます。詳細なサポートと機能情報については、"Ubuntu ONTAP のサポートと機能"を参照してください。
Ubuntu 24.04 の NVMe-oF には、次の既知の制限があります:
-
NVMe-oFプロトコルを使用したSANブートは、ONTAPを搭載したUbuntu 24.04では現在サポートされていません。
サポートされる構成の詳細については、を参照してください"Interoperability Matrix Tool"。
ステップ1:UbuntuとNVMeソフトウェアをインストールし、構成を確認する
NVMe-oF 用にホストを構成するには、ホストおよび NVMe ソフトウェア パッケージをインストールし、マルチパスを有効にして、ホストの NQN 構成を確認する必要があります。
-
Ubuntu 24.04をサーバにインストールします。インストールが完了したら、指定したUbuntu 24.04カーネルを実行していることを確認します。
uname -rUbuntu カーネルバージョンの例:
6.8.0-31-generic
-
「 nvme-cli 」パッケージをインストールします。
apt list | grep nvme次の例は、 `nvme-cli`パッケージバージョン:
nvme-cli/noble-updates 2.8-1ubuntu0.1 amd64
-
Ubuntu 24.04ホストで、hostnqn文字列を確認し `/etc/nvme/hostnqn`ます。
cat /etc/nvme/hostnqn次の例は、 `hostnqn`バージョン:
nqn.2014-08.org.nvmexpress:uuid:ace1xxxx-1f5a-xxxx-b0c3-3a6xxxx1a6ff
-
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`コマンドを使用して、対応するONTAPストレージシステムサブシステム上の `hostnqn`文字列をホスト上の `/etc/nvme/hostnqn`からの `hostnqn`文字列と一致するように更新してください。
ステップ2: NVMe/FCとNVMe/TCPを構成する
Broadcom/Emulex または Marvell/Qlogic アダプタ用に NVMe/FC を設定するか、手動検出および接続操作を使用して NVMe/TCP を設定します。
Broadcom/Emulexアダプタ用にNVMe/FCを設定します。
-
サポートされているアダプタモデルを使用していることを確認します。
-
モデル名を表示します。
cat /sys/class/scsi_host/host*/modelname次の出力が表示されます。
LPe36002-M64 LPe36002-M64
-
モデルの説明を表示します。
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
-
-
推奨されているBroadcom `lpfc`ファームウェアと受信トレイドライバーを使用していることを確認してください:
-
ファームウェアのバージョンを表示します。
cat /sys/class/scsi_host/host*/fwrevこのコマンドはファームウェアのバージョンを返します。
14.4.317.10, sli-4:6:d 14.4.317.10, sli-4:6:d
-
受信トレイのドライバーのバージョンを表示します。
cat /sys/module/lpfc/version次の例は、ドライバーのバージョンを示しています。
0:14.2.0.17
+ サポートされているアダプタドライバおよびファームウェアバージョンの最新リストについては、を参照してください"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次のような出力が表示されます:
0x100000109bf0447b 0x100000109bf0447c
-
イニシエータポートがオンラインであることを確認します。
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 x100000109bf0447b WWNN x200000109bf0447b DID x022600 ONLINE NVME RPORT WWPN x200fd039eaa8138b WWNN x200ad039eaa8138b DID x021006 TARGET DISCSRVC ONLINE NVME Statistics LS: Xmt 0000000187 Cmpl 0000000187 Abort 00000000 LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000 Total FCP Cmpl 0000000014096514 Issue 000000001407fcd6 OutIO fffffffffffe97c2 abort 00000048 noxri 00000000 nondlp 0000001c qdepth 00000000 wqerr 00000000 err 00000000 FCP CMPL: xb 00000048 Err 00000077 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 x2010d039eaa8138b WWNN x200ad039eaa8138b DID x021106 TARGET DISCSRVC ONLINE NVME Statistics LS: Xmt 0000000187 Cmpl 0000000187 Abort 00000000 LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000 Total FCP Cmpl 00000000140970ed Issue 00000000140813da OutIO fffffffffffea2ed abort 00000047 noxri 00000000 nondlp 0000002b qdepth 00000000 wqerr 00000000 err 00000000 FCP CMPL: xb 00000047 Err 00000075
Ubuntu 24.04 GAカーネルに含まれているネイティブの受信トレイqla2xxxドライバには、最新のアップストリーム修正が含まれています。これらの修正は、ONTAPのサポートに不可欠です。
Marvell/QLogicアダプタ用にNVMe/FCを設定します。
-
サポートされているアダプタ ドライバーとファームウェア バージョンを使用していることを確認します。
cat /sys/class/fc_host/host*/symbolic_name次の例は、ドライバーとファームウェアのバージョンを示しています。
QLE2872 FW: v9.15.00 DVR: v10.02.09.100-k QLE2872 FW: v9.15.00 DVR: v10.02.09.100-k
-
確認します
ql2xnvmeenableが設定されます。これにより、MarvellアダプタをNVMe/FCイニシエータとして機能させることができます。cat /sys/module/qla2xxx/parameters/ql2xnvmeenable想定される出力は1です。
NVMe/TCP は自動接続操作をサポートしていません。代わりに、NVMe/TCP `connect`または `connect-all`操作を手動で実行することで、NVMe/TCP サブシステムと名前空間を検出できます。
-
イニシエーターポートが、サポートされている NVMe/TCP LIF 全体で検出ログページデータを取得できることを確認します:
nvme discover -t tcp -w <host-traddr> -a <traddr>例を示します
# nvme discover -t tcp -w 192.168.167.150 -a 192.168.167.155 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: 4 trsvcid: 8009 subnqn: nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:discovery traddr: 192.168.167.156 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: 2 trsvcid: 8009 subnqn: nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:discovery traddr: 192.168.166.156 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: 3 trsvcid: 8009 subnqn: nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:discovery traddr: 192.168.167.155 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: 1 trsvcid: 8009 subnqn: nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:discovery traddr: 192.168.166.155 eflags: explicit discovery connections, duplicate discovery information* sectype: none =====Discovery Log Entry 4====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 4 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:subsystem.ubuntu_24.04_tcp_211 traddr: 192.168.167.156 eflags: none sectype: none =====Discovery Log Entry 5====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 2 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:subsystem.ubuntu_24.04_tcp_211 traddr: 192.168.166.156 eflags: none sectype: none =====Discovery Log Entry 6====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 3 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:subsystem.ubuntu_24.04_tcp_211 traddr: 192.168.167.155 eflags: none sectype: none =====Discovery Log Entry 7====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 1 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:subsystem.ubuntu_24.04_tcp_211 traddr: 192.168.166.155 eflags: none sectype: none
-
他の NVMe/TCP イニシエーターとターゲット LIF の組み合わせで検出ログ ページ データを正常に取得できることを確認します。
nvme discover -t tcp -w <host-traddr> -a <traddr>出力例を表示します。
#nvme discover -t tcp -w 192.168.167.150 -a 192.168.167.155 #nvme discover -t tcp -w 192.168.167.150 -a 192.168.167.156 #nvme discover -t tcp -w 192.168.166.150 -a 192.168.166.155 #nvme discover -t tcp -w 192.168.166.150 -a 192.168.166.156
-
を実行します
nvme connect-allノード全体でサポートされているすべてのNVMe/TCPイニシエータ/ターゲットLIFを対象としたコマンド:nvme connect-all -t tcp -w <host-traddr> -a <traddr>例を示します
#nvme connect-all -t tcp -w 192.168.167.150 -a 192.168.167.155 #nvme connect-all -t tcp -w 192.168.167.150 -a 192.168.167.156 #nvme connect-all -t tcp -w 192.168.166.150 -a 192.168.166.155 #nvme connect-all -t tcp -w 192.168.166.150 -a 192.168.166.156
Ubuntu 24.04以降では、NVMe/TCPのctrl_loss_tmoタイムアウトのデフォルト設定がオフになっています。つまり、再試行回数に制限はなく(無期限の再試行)、コマンドまたは nvme connect-all`コマンド(オプション-l)を使用するときに、特定のCtrl_LOSS_TMOタイムアウト期間を手動で設定する必要はありません `nvme connect。このデフォルトの動作では、パスで障害が発生しても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ホストには適用されません。 |
-
`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
ステップ4:マルチパス構成を確認する
カーネル内のNVMeマルチパスステータス、ANAステータス、およびONTAPネームスペースがNVMe-oF構成に対して正しいことを確認します。
-
それぞれのONTAP名前空間の適切な NVMe-oF 設定 (モデルがNetApp ONTAPコントローラに設定され、負荷分散 iopolicy がラウンドロビンに設定されているなど) がホストに正しく表示されていることを確認します。
-
カーネル内NVMeマルチパスが有効になっていることを確認します。
cat /sys/module/nvme_core/parameters/multipath想定される出力は「Y」です。
-
サブシステムを表示します。
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
-
-
ネームスペースが作成され、ホストで正しく検出されたことを確認します。
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
-
各パスのコントローラの状態がliveであり、正しいANAステータスが設定されていることを確認します。
NVMe/FCnvme list-subsys /dev/nvme0n1出力例を表示します。
nvme-subsys4 - NQN=nqn.1992-08.com.netapp:sn.8763d311b2ac11ed950ed039ea951c46:subsystem. ubuntu_24.04 \ +- 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/FCnvme list-subsys /dev/nvme1n1出力例を表示します。
nvme-subsys0 - NQN=nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:subsystem.ubuntu_24.04_tcp_211 hostnqn=nqn.2014-08.org.nvmexpress:uuid:4c4cxxxx-0050-xxxx-8035-c3cxxxxa5933 iopolicy=round-robin +- nvme0 tcp traddr=192.168.166.155,trsvcid=4420,host_traddr=192.168.166.150,src_addr=192.168.166.150 live optimized +- nvme1 tcp traddr=192.168.167.155,trsvcid=4420,host_traddr=192.168.167.150,src_addr=192.168.167.150 live optimized +- nvme2 tcp traddr=192.168.166.156,trsvcid=4420,host_traddr=192.168.166.150,src_addr=192.168.166.150 live non-optimized +- nvme3 tcp traddr=192.168.167.156,trsvcid=4420,host_traddr=192.168.167.150,src_addr=192.168.167.150 live non-optimized-
ネットアッププラグインで、ONTAP ネームスペースデバイスごとに正しい値が表示されていることを確認します。
-
nvme netapp ontapdevices -o column
出力例を表示します。
Device Vserver Namespace Path NSID UUID Size ------------- ------------- ----------------------- ---- -------------------------------------- --------- /dev/nvme0n1 vs_211_tcp /vol/tcpvol1/ns1 1 1cc7bc78-8d7b-4d8e-a3c4-750f9461a6e9 21.47GB
nvme netapp ontapdevices -o json
出力例を表示します。
{
"ONTAPdevices" : [
{
"Device":"/dev/nvme0n9",
"Vserver":"vs_211_tcp",
"Namespace_Path":"/vol/tcpvol9/ns9",
"NSID":9,
"UUID":"99640dd9-8463-4c12-8282-b525b39fc10b",
"Size":"21.47GB",
"LBA_Data_Size":4096,
"Namespace_Size":5242880
}
]
}
== ステップ5:既知の問題を確認する
ONTAPリリースのUbuntu 24.04でのNVMe-oFホスト構成に関する既知の問題はありません。