ONTAP 스토리지를 사용하는 NVMe-oF용 Proxmox VE 8.x 구성
Proxmox VE 8.x 호스트는 비대칭 네임스페이스 액세스(ANA)를 지원하는 NVMe over Fibre Channel(NVMe/FC) 및 NVMe over TCP(NVMe/TCP) 프로토콜을 지원합니다. ANA는 iSCSI 및 FCP 환경에서 ALUA(비대칭 논리 장치 액세스)와 동일한 다중 경로 기능을 제공합니다.
Proxmox VE 8.x용 NVMe over Fabrics(NVMe-oF) 호스트를 구성하는 방법을 알아보세요. 추가 지원 및 기능 정보는 다음을 참조하세요. "ONTAP 지원 및 기능".
Proxmox VE 8.x에서 NVMe-oF를 사용할 때 다음과 같은 알려진 제한 사항이 있습니다.
-
NVMe-FC에 대한 SAN 부팅 구성은 지원되지 않습니다.
1단계: Proxmox VE 및 NVMe 소프트웨어를 설치하고 구성을 확인합니다.
NVMe-oF를 사용하도록 호스트를 구성하려면 호스트 및 NVMe 소프트웨어 패키지를 설치하고, 멀티패싱을 활성화하고, 호스트의 NQN 구성을 확인해야 합니다.
-
서버에 Proxmox 8.x를 설치하세요. 설치가 완료되면 지정된 Proxmox 8.x 커널이 실행 중인지 확인하십시오.
uname -r다음 예시는 Proxmox 커널 버전을 보여줍니다.
6.8.12-10-pve
-
"NVMe-CLI" 패키지를 설치합니다.
apt list|grep nvme-cli다음 예에서는 다음을 보여줍니다.
nvme-cli패키지 버전:nvme-cli/oldstable,now 2.4+really2.3-3 amd64
-
를 설치합니다
libnvme패키지:apt list|grep libnvme다음 예에서는 다음을 보여줍니다.
libnvme패키지 버전:libnvme1/oldstable,now 1.3-1+deb12u1 amd64
-
호스트에서 hostnqn 문자열을 확인하세요.
/etc/nvme/hostnqn:cat /etc/nvme/hostnqn다음 예는 다음을 보여줍니다.
hostnqn값:nqn.2014-08.org.nvmexpress:uuid:1536c9a6-f954-11ea-b24d-0a94efb46eaf
-
ONTAP 시스템에서 다음 사항을 확인하십시오.
hostnqn문자열이 일치합니다hostnqnONTAP 어레이의 해당 서브시스템에 대한 문자열:::> vserver nvme subsystem host show -vserver proxmox_120_122예제 보기
Vserver Subsystem Priority Host NQN ------- --------- -------- --------- proxmox_120_122 proxmox_120_122 regular nqn.2014-08.org.nvmexpress:uuid:1536c9a6-f954-11ea-b24d-0a94efb46eaf regular nqn.2014-08.org.nvmexpress:uuid:991a7476-f9bf-11ea-8b73-0a94efb46c3b proxmox_120_122_tcp regular nqn.2014-08.org.nvmexpress:uuid:1536c9a6-f954-11ea-b24d-0a94efb46eaf regular nqn.2014-08.org.nvmexpress:uuid:991a7476-f9bf-11ea-8b73-0a94efb46c3b 2 entries were displayed.만약 hostnqn문자열이 일치하지 않으면 다음을 사용하세요.vserver modify업데이트 명령hostnqn해당 ONTAP 스토리지 시스템 하위 시스템의 문자열을 일치시키세요.hostnqn문자열에서/etc/nvme/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다음과 같은 출력이 표시됩니다.
LPe35002-M2 LPe35002-M2
-
모델 설명을 표시합니다.
cat /sys/class/scsi_host/host*/modeldesc다음 예와 비슷한 출력이 표시됩니다.
Emulex LPe35002-M2 2-Port 32Gb Fibre Channel Adapter Emulex LPe35002-M2 2-Port 32Gb Fibre Channel Adapter
-
-
권장 Broadcom을 사용하고 있는지 확인합니다
lpfc펌웨어 및 받은 편지함 드라이버:-
펌웨어 버전을 표시합니다.
cat /sys/class/scsi_host/host*/fwrev이 명령은 펌웨어 버전을 반환합니다.
14.0.505.12, sli-4:6:d 14.0.505.12, sli-4:6:d
-
받은 편지함 드라이버 버전을 표시합니다.
cat /sys/module/lpfc/version다음 예에서는 드라이버 버전을 보여줍니다.
0:14.2.0.17
지원되는 어댑터 드라이버 및 펌웨어 버전의 현재 목록은 를 참조하십시오"상호 운용성 매트릭스 툴".
-
-
확인합니다
lpfc_enable_fc4_type가 로 설정되어 있습니다3:cat /sys/module/lpfc/parameters/lpfc_enable_fc4_type -
이니시에이터 포트를 볼 수 있는지 확인합니다.
cat /sys/class/fc_host/host*/port_name다음과 유사한 출력이 표시됩니다.
0x100000109b95467e 0x100000109b95467f
-
이니시에이터 포트가 온라인 상태인지 확인합니다.
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 x10005ced8c531948 WWNN x20005ced8c531948 DID x082400 ONLINE NVME RPORT WWPN x200ed039eac79573 WWNN x200dd039eac79573 DID x060902 TARGET DISCSRVC ONLINE NVME RPORT WWPN x2001d039eac79573 WWNN x2000d039eac79573 DID x060904 TARGET DISCSRVC ONLINE NVME Statistics LS: Xmt 0000000034 Cmpl 0000000034 Abort 00000000 LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000 Total FCP Cmpl 0000000000142cfb Issue 0000000000142cfc OutIO 0000000000000001 abort 00000005 noxri 00000000 nondlp 00000000 qdepth 00000000 wqerr 00000000 err 00000000 FCP CMPL: xb 00000005 Err 00000005 NVME Initiator Enabled XRI Dist lpfc1 Total 6144 IO 5894 ELS 250 NVME LPORT lpfc1 WWPN x10005ced8c531949 WWNN x20005ced8c531949 DID x082500 ONLINE NVME RPORT WWPN x2010d039eac79573 WWNN x200dd039eac79573 DID x062902 TARGET DISCSRVC ONLINE NVME RPORT WWPN x2007d039eac79573 WWNN x2000d039eac79573 DID x062904 TARGET DISCSRVC ONLINE NVME Statistics LS: Xmt 0000000034 Cmpl 0000000034 Abort 00000000 LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000 Total FCP Cmpl 00000000000d39f1 Issue 00000000000d39f2 OutIO 0000000000000001 abort 00000005 noxri 00000000 nondlp 00000000 qdepth 00000000 wqerr 00000000 err 00000000 FCP CMPL: xb 00000005 Err 00000005
Marvell/QLogic 어댑터용 NVMe/FC를 구성합니다.
-
지원되는 어댑터 드라이버와 펌웨어 버전을 사용하고 있는지 확인하세요.
cat /sys/class/fc_host/host*/symbolic_name다음 예에서는 드라이버와 펌웨어 버전을 보여줍니다.
QLE2872 FW:v9.15.00 DVR:v10.02.09.300-k QLE2872 FW:v9.15.00 DVR:v10.02.09.300-k
-
확인합니다
ql2xnvmeenable가 설정됩니다. 그러면 Marvell 어댑터가 NVMe/FC Initiator로 작동할 수 있습니다.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.2.22 -a 192.168.2.30 Discovery Log Number of Records 12, Generation counter 13 =====Discovery Log Entry 0====== trtype: tcp adrfam: ipv4 subtype: current discovery subsystem treq: not specified portid: 10 trsvcid: 8009 subnqn: nqn.1992-08.com.netapp:sn.ae9f2d55a7ec11ef8751d039ea9e891c:discovery traddr: 192.168.2.30 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: 9 trsvcid: 8009 subnqn: nqn.1992-08.com.netapp:sn.ae9f2d55a7ec11ef8751d039ea9e891c:discovery traddr: 192.168.1.30 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: 12 trsvcid: 8009 subnqn: nqn.1992-08.com.netapp:sn.ae9f2d55a7ec11ef8751d039ea9e891c:discovery traddr: 192.168.2.25 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: 11 trsvcid: 8009 subnqn: nqn.1992-08.com.netapp:sn.ae9f2d55a7ec11ef8751d039ea9e891c:discovery traddr: 192.168.1.25 eflags: explicit discovery connections, duplicate discovery information sectype: none =====Discovery Log Entry 4====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 10 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.ae9f2d55a7ec11ef8751d039ea9e891c:subsystem.proxmox_120_122 traddr: 192.168.2.30 eflags: none sectype: none =====Discovery Log Entry 5====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 9 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.ae9f2d55a7ec11ef8751d039ea9e891c:subsystem.proxmox_120_122 traddr: 192.168.1.30 eflags: none sectype: none =====Discovery Log Entry 6====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 12 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.ae9f2d55a7ec11ef8751d039ea9e891c:subsystem.proxmox_120_122 traddr: 192.168.2.25 eflags: none sectype: none =====Discovery Log Entry 7====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 11 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.ae9f2d55a7ec11ef8751d039ea9e891c:subsystem.proxmox_120_122 traddr: 192.168.1.25 eflags: none sectype: none =====Discovery Log Entry 8====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 10 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.ae9f2d55a7ec11ef8751d039ea9e891c:subsystem.proxmox_120_122_tcp traddr: 192.168.2.30 eflags: none sectype: none =====Discovery Log Entry 9====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 9 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.ae9f2d55a7ec11ef8751d039ea9e891c:subsystem.proxmox_120_122_tcp traddr: 192.168.1.30 eflags: none sectype: none =====Discovery Log Entry 10====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 12 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.ae9f2d55a7ec11ef8751d039ea9e891c:subsystem.proxmox_120_122_tcp traddr: 192.168.2.25 eflags: none sectype: none =====Discovery Log Entry 11====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 11 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.ae9f2d55a7ec11ef8751d039ea9e891c:subsystem.proxmox_120_122_tcp traddr: 192.168.1.25 eflags: none sectype: none
-
다른 NVMe/TCP 개시자-대상 LIF 조합이 검색 로그 페이지 데이터를 성공적으로 검색할 수 있는지 확인합니다.
nvme discover -t tcp -w host-traddr -a traddr예제 보기
nvme discover -t tcp -w 192.168.1.22 -a 192.168.1.30 nvme discover -t tcp -w 192.168.2.22 -a 192.168.2.30 nvme discover -t tcp -w 192.168.1.22 -a 192.168.1.25 nvme discover -t tcp -w 192.168.2.22 -a 192.168.2.25
-
를 실행합니다
nvme connect-all노드에 걸쳐 지원되는 모든 NVMe/TCP 이니시에이터-타겟 LIF에 대한 명령:nvme connect-all -t tcp -w host-traddr -a traddr예제 보기
nvme connect-all -t tcp -w 192.168.1.22 -a 192.168.1.30 nvme connect-all -t tcp -w 192.168.2.22 -a 192.168.2.30 nvme connect-all -t tcp -w 192.168.1.22 -a 192.168.1.25 nvme connect-all -t tcp -w 192.168.2.22 -a 192.168.2.25
NVMe/TCP 설정 ctrl_loss_tmo timeout 자동으로 "꺼짐"으로 설정됩니다. 결과적으로:
-
재시도 횟수에 제한이 없습니다(무기한 재시도).
-
특정 항목을 수동으로 구성할 필요가 없습니다.
ctrl_loss_tmo timeout사용 시 지속 시간nvme connect또는nvme connect-all명령어(옵션 -l). -
NVMe/TCP 컨트롤러는 경로 장애가 발생해도 시간 초과가 발생하지 않으며 무기한 연결 상태를 유지합니다.
3단계: 선택적으로 NVMe/FC에 대해 1MB I/O를 활성화합니다.
ONTAP Identify Controller 데이터에서 최대 데이터 전송 크기(MDTS)를 8로 보고합니다. 즉, 최대 I/O 요청 크기는 1MB까지 가능합니다. 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
-
실행하세요
update-initramfs명령어를 입력하고 호스트를 재부팅합니다. -
의 값이 256인지
lpfc_sg_seg_cnt확인합니다.cat /sys/module/lpfc/parameters/lpfc_sg_seg_cnt
4단계: NVMe 부팅 서비스 확인
Proxmox 8.x에서는 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 (/lib/systemd/system/nvmf-autoconnect.service; enabled; preset: enabled) Active: inactive (dead) since Fri 2025-11-21 19:59:10 IST; 8s ago Process: 256613 ExecStartPre=/sbin/modprobe nvme-fabrics (code=exited, status=0/SUCCESS) Process: 256614 ExecStart=/usr/sbin/nvme connect-all (code=exited, status=0/SUCCESS) Main PID: 256614 (code=exited, status=0/SUCCESS) CPU: 18ms Nov 21 19:59:07 SR665-14-122.lab.eng.btc.netapp.in systemd[1]: Starting nvmf-autoconnect.service - Connect NVMe-oF subsystems automatically during boot... Nov 21 19:59:10 SR665-14-122.lab.eng.btc.netapp.in nvme[256614]: Failed to write to /dev/nvme-fabrics: Invalid argument Nov 21 19:59:10 SR665-14-122.lab.eng.btc.netapp.in nvme[256614]: Failed to write to /dev/nvme-fabrics: Invalid argument Nov 21 19:59:10 SR665-14-122.lab.eng.btc.netapp.in systemd[1]: nvmf-autoconnect.service: Deactivated successfully. Nov 21 19:59:10 SR665-14-122.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 (/lib/systemd/system/nvmefc-boot-connections.service; enabled; preset: enabled) Active: inactive (dead) since Thu 2025-11-20 17:48:29 IST; 1 day 2h ago Process: 1381 ExecStart=/bin/sh -c echo add > /sys/class/fc/fc_udev_device/nvme_discovery (code=exited, status=0/SUCCESS) Main PID: 1381 (code=exited, status=0/SUCCESS) CPU: 3ms Nov 20 17:48:29 SR665-14-122.lab.eng.btc.netapp.in systemd[1]: Starting nvmefc-boot-connections.service - Auto-connect to subsystems on FC-NVME devices found during boot.. Nov 20 17:48:29 SR665-14-122.lab.eng.btc.netapp.in systemd[1]: nvmefc-boot-connections.service: Deactivated successfully. Nov 20 17:48:29 SR665-14-122.lab.eng.btc.netapp.in systemd[1]: Finished nvmefc-boot-connections.service - Auto-connect to subsystems on FC-NVME devices found during boot...
5단계: 다중 경로 구성 확인
커널 내 NVMe 다중 경로 상태, ANA 상태 및 ONTAP 네임스페이스가 NVMe-oF 구성에 적합한지 확인합니다.
-
in-kernel NVMe multipath가 활성화되어 있는지 확인합니다.
cat /sys/module/nvme_core/parameters/multipath다음과 같은 출력이 표시됩니다.
Y
-
ONTAP 네임스페이스에 대한 적절한 NVMe-oF 설정(예: 모델을 NetApp ONTAP 컨트롤러로 설정하고 부하 분산 iopolicy를 라운드 로빈으로 설정)이 호스트에 올바르게 표시되는지 확인합니다.
-
하위 시스템을 보여주세요:
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 Generic SN Model Namespace Usage Format FW Rev --------------------- --------------------- -------------------- ---------------------------------------- ---------- -------------------------- ---------------- -------- /dev/nvme2n20 /dev/ng2n20 81K13BUDdygsAAAAAAAG NetApp ONTAP Controller 10 5.56 GB / 91.27 GB 4 KiB + 0 B 9.18.1
-
각 경로의 컨트롤러 상태가 라이브이고 올바른 ANA 상태인지 확인합니다.
NVMe/FCnvme list-subsys /dev/nvme2n20예제 보기
nvme-subsys2 - NQN= nqn.1992-08.com.netapp:sn.ae9f2d55a7ec11ef8751d039ea9e891c:subsystem.proxmox_120_122_tcp \ +- nvme1 fc traddr=nn-0x200dd039eac79573:pn-0x2010d039eac79573,host_traddr=nn-0x20005ced8c531949:pn-0x10005ced8c531949 live optimized +- nvme3 fc traddr=nn-0x200dd039eac79573:pn-0x200ed039eac79573,host_traddr=nn-0x20005ced8c531948:pn-0x10005ced8c531948 live optimized +- nvme5 fc traddr=nn-0x200dd039eac79573:pn-0x200fd039eac79573,host_traddr=nn-0x20005ced8c531949:pn-0x10005ced8c531949 live non-optimized +- nvme7 fc traddr=nn-0x200dd039eac79573:pn-0x2011d039eac79573,host_traddr=nn-0x20005ced8c531948:pn-0x10005ced8c531948 live non-optimized
NVMe/TCPnvme list-subsys /dev/nvme2n3예제 보기
nvme-subsys2 - NQN= qn.1992-08.com.netapp:sn.ae9f2d55a7ec11ef8751d039ea9e891c:subsystem.proxmox_120_122_tcp \ +- nvme2 tcp traddr=192.168.1.30,trsvcid=4420,host_traddr=192.168.1.22,src_addr=192.168.1.22 live optimized +- nvme4 tcp traddr=192.168.2.30,trsvcid=4420,host_traddr=192.168.2.22,src_addr=192.168.2.22 live optimized +- nvme6 tcp traddr=192.168.1.25,trsvcid=4420,host_traddr=192.168.1.22,src_addr=192.168.1.22 live non-optimized +- nvme8 tcp traddr=192.168.2.25,trsvcid=4420,host_traddr=192.168.2.22,src_addr=192.168.2.22 live non-optimized
-
NetApp 플러그인에 각 ONTAP 네임스페이스 장치에 대한 올바른 값이 표시되는지 확인합니다.
열nvme netapp ontapdevices -o column예제 보기
Device Vserver Namespace Path ------------- --------------------- ------------------------------ /dev/nvme2n11 proxmox_120_122 / /vol/vm120_tcp1/ns NSID UUID Size ---- ------------------------------------ -------- 1 5aefea74-f0cf-4794-a7e9-e113c4659aca 37.58GB
JSON을 참조하십시오nvme netapp ontapdevices -o json예제 보기
{ "Device":"/dev/nvme2n11", "Vserver":"proxmox_120_122", "Namespace_Path":"/vol/vm120_tcp1/ns", "NSID":1, "UUID":"5aefea74-f0cf-4794-a7e9-e113c4659aca", “Size”:”37.58GB”, "LBA_Data_Size":4096, "Namespace_Size":32212254720 } ]
6단계: 알려진 문제를 검토합니다
알려진 문제가 없습니다.