Skip to main content
ONTAP SAN Host Utilities
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

ONTAP 스토리지를 사용하여 NVMe-oF용으로 Ubuntu 24.04를 구성합니다

기여자 netapp-camdenc netapp-pcarriga netapp-sarajane

NVMe/FC(NVMe over Fibre Channel) 및 기타 전송을 포함한 NVMe-oF(NVMe over Fabrics)는 Ubuntu 24.04 및 ANA(Asymmetric Namespace Access)에서 지원됩니다. NVMe-oF 환경의 경우, ANA는 iSCSI 및 FC 환경에서 ALUA 다중 경로와 동일하며 커널 내 NVMe 다중 경로를 통해 구현됩니다.

Ubuntu 24.04용 NVMe over Fabrics(NVMe-oF) 호스트를 구성하는 방법을 알아보십시오. 자세한 지원 및 기능 정보는 "Ubuntu ONTAP 지원 및 기능"를 참조하십시오.

Ubuntu 24.04의 NVMe-oF에는 다음과 같은 알려진 제한 사항이 있습니다.

  • 현재 ONTAP에서 Ubuntu 24.04에 대해 NVMe-oF 프로토콜을 사용하여 SAN 부팅이 지원되지 않습니다.

지원되는 구성에 대한 자세한 내용은 를 "상호 운용성 매트릭스 툴"참조하십시오.

1단계: Ubuntu 및 NVMe 소프트웨어를 설치하고 구성을 확인합니다

NVMe-oF를 사용하도록 호스트를 구성하려면 호스트 및 NVMe 소프트웨어 패키지를 설치하고, 멀티패싱을 활성화하고, 호스트의 NQN 구성을 확인해야 합니다.

단계
  1. 서버에 Ubuntu 24.04를 설치합니다. 설치가 완료되면 지정된 Ubuntu 24.04 커널을 실행하고 있는지 확인합니다.

    uname -r

    Ubuntu 커널 버전 예:

    6.8.0-31-generic
  2. "NVMe-CLI" 패키지를 설치합니다.

    apt list | grep nvme

    다음 예에서는 다음을 보여줍니다. nvme-cli 패키지 버전:

    nvme-cli/noble-updates 2.8-1ubuntu0.1 amd64
  3. Ubuntu 24.04 호스트에서 다음 위치에서 hostnqn 문자열을 /etc/nvme/hostnqn 확인합니다.

    cat /etc/nvme/hostnqn

    다음 예에서는 다음을 보여줍니다. hostnqn 버전:

    nqn.2014-08.org.nvmexpress:uuid:ace1xxxx-1f5a-xxxx-b0c3-3a6xxxx1a6ff
  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 명령을 사용하여 해당 ONTAP 스토리지 시스템 서브시스템의 hostnqn 문자열을 호스트의 /etc/nvme/hostnqn`에서 가져온 `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.4.317.10, sli-4:6:d
      14.4.317.10, sli-4:6:d
    2. 받은 편지함 드라이버 버전을 표시합니다.

      cat /sys/module/lpfc/version

      다음 예에서는 드라이버 버전을 보여줍니다.

    0:14.2.0.17

    + 지원되는 어댑터 드라이버 및 펌웨어 버전의 현재 목록은 를 참조하십시오"상호 운용성 매트릭스 툴".

  3. 확인합니다 lpfc_enable_fc4_type 가 로 설정되어 있습니다 3:

    cat /sys/module/lpfc/parameters/lpfc_enable_fc4_type
  4. 이니시에이터 포트를 볼 수 있는지 확인합니다.

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

    다음과 유사한 출력이 표시됩니다.

    0x100000109bf0447b
    0x100000109bf0447c
  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 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
NVMe/FC - Marvell/QLogic

Ubuntu 24.04 GA 커널에 포함된 기본 받은 편지함 qla2xxx 드라이버에는 최신 업스트림 수정 사항이 있습니다. 이러한 수정 사항은 ONTAP 지원에 필수적입니다.

Marvell/QLogic 어댑터용 NVMe/FC를 구성합니다.

단계
  1. 지원되는 어댑터 드라이버와 펌웨어 버전을 사용하고 있는지 확인하세요.

    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
  2. 확인합니다 ql2xnvmeenable 가 설정됩니다. 그러면 Marvell 어댑터가 NVMe/FC Initiator로 작동할 수 있습니다.

    cat /sys/module/qla2xxx/parameters/ql2xnvmeenable

    예상 출력은 1입니다.

NVMe/TCP

NVMe/TCP는 자동 연결 작업을 지원하지 않습니다. 대신 NVMe/TCP connect 또는 connect-all 작업을 수동으로 수행하여 NVMe/TCP 하위 시스템 및 네임스페이스를 검색할 수 있습니다.

단계
  1. 이니시에이터 포트가 지원되는 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
  2. 다른 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
  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.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 명령(option -l)을 사용할 때 특정 Ctrl_LOSS_TMO 시간 초과 기간을 수동으로 구성할 필요가 nvme connect 없습니다. 이 기본 동작에서는 경로 장애 발생 시 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 호스트에는 적용되지 않습니다.
단계
  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. 호스트에서 각 ONTAP 네임스페이스에 대해 적절한 NVMe-oF 설정(예: 모델이 NetApp ONTAP 컨트롤러로 설정되고 로드 밸런싱 iopolicy가 라운드 로빈으로 설정됨)이 올바르게 표시되는지 확인하십시오.

    1. in-kernel NVMe multipath가 활성화되어 있는지 확인합니다.

      cat /sys/module/nvme_core/parameters/multipath

      예상 출력은 "Y"입니다.

    2. 하위 시스템을 표시합니다.

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

      다음과 같은 출력이 표시됩니다.

      NetApp ONTAP Controller
      NetApp ONTAP Controller
    3. 정책을 표시합니다.

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

      다음과 같은 출력이 표시됩니다.

    round-robin
    round-robin
  2. 호스트에서 네임스페이스가 생성되고 올바르게 검색되는지 확인합니다.

    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
  3. 각 경로의 컨트롤러 상태가 라이브이고 올바른 ANA 상태인지 확인합니다.

    NVMe/FC
    nvme 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/TCP
    nvme 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
    1. NetApp 플러그인에 각 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
JSON을 참조하십시오
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 호스트 구성에 대해 알려진 문제는 없습니다.