Skip to main content
SAN hosts and cloud clients
La versione in lingua italiana fornita proviene da una traduzione automatica. Per eventuali incoerenze, fare riferimento alla versione in lingua inglese.

Configurazione host NVMe-of per RHEL 8,7 con ONTAP

Collaboratori

NVMe over Fabrics o NVMe-of (inclusi NVMe/FC e altri trasporti) è supportato da Red Hat Enterprise Linux (RHEL) 8,7 con ANA (Asymmetric Namespace Access). ANA è l'equivalente di ALUA (Asymmetric Logical Unit Access) nell'ambiente NVMe-of ed è attualmente implementato con il multipath NVMe nel kernel. Durante questa procedura, abiliti NVMe-of con il multipath NVMe in-kernel utilizzando ANA su RHEL 8,7 e ONTAP come destinazione.

Vedere "Tool di matrice di interoperabilità NetApp" per informazioni dettagliate sulle configurazioni supportate.

Caratteristiche

RHEL 8.7 include il supporto per NVMe/TCP (come funzione Technology Preview) oltre a NVMe/FC. Il plug-in NetApp nel pacchetto nvme-cli nativo è in grado di visualizzare i dettagli ONTAP per gli spazi dei nomi NVMe/FC e NVMe/TCP.

Limitazioni note

  • Per RHEL 8.7, il multipath NVMe in-kernel rimane disattivato per impostazione predefinita. Pertanto, è necessario attivarlo manualmente.

  • NVMe/TCP su RHEL 8.7 rimane una funzione di anteprima tecnologica a causa di problemi aperti. Fare riferimento a. "Note di rilascio di RHEL 8.7" per ulteriori informazioni.

  • L'avvio SAN che utilizza il protocollo NVMe-of non è attualmente supportato.

Abilitare il multipath NVMe nel kernel

Puoi usare la seguente procedura per abilitare il multipath NVMe in-kernel.

Fasi
  1. Installare RHEL 8.7 sul server.

  2. Una volta completata l'installazione, verificare di eseguire il kernel RHEL 8.7 specificato. Vedere "Matrice di interoperabilità NetApp" per l'elenco più aggiornato delle versioni supportate.

    Esempio:

    # uname -r
    4.18.0-425.3.1.el8.x86_64
  3. Installare nvme-cli pacchetto:

    Esempio:

    # rpm -qa|grep nvme-cli
    nvme-cli-1.16-5.el8.x86_64
  4. Abilita multipath NVMe nel kernel:

    Esempio

    # grubby --args=nvme_core.multipath=Y --update-kernel
    /boot/vmlinuz-4.18.0-425.3.1.el8.x86_64
  5. Sull'host, controllare la stringa NQN host su /etc/nvme/hostnqn E verificare che corrisponda alla stringa NQN host per il sottosistema corrispondente sull'array ONTAP. Esempio:

    # cat /etc/nvme/hostnqn
    
              nqn.2014-08.org.nvmexpress:uuid:a7f7a1d4-311a-11e8-b634-            7ed30aef10b7
    
    ::> vserver nvme subsystem host show -vserver vs_nvme167
    Vserver     Subsystem       Host NQN
    ----------- --------------- ----------------
    vs_nvme167 rhel_167_LPe35002  nqn.2014-08.org.nvmexpress:uuid: a7f7a1d4-311a-11e8-b634-7ed30aef10b7
    Nota Se le stringhe NQN host non corrispondono, utilizzare vserver modify Per aggiornare la stringa NQN host nel sottosistema NVMe ONTAP corrispondente in modo che corrisponda alla stringa NQN host /etc/nvme/hostnqn sull'host.
  6. Riavviare l'host.

    Nota

    Se si intende eseguire traffico NVMe e SCSI coesistente sullo stesso host, NetApp consiglia di utilizzare NVMe multipath in-kernel per gli spazi dei nomi ONTAP e dm-multipath per le LUN ONTAP. Ciò significa che gli spazi dei nomi ONTAP devono essere esclusi da dm-multipath per impedire a dm-multipath di rivendicare questi dispositivi dello spazio dei nomi. È possibile farlo aggiungendo l'impostazione enable_Foreign al /etc/multipath.conf file:

    # cat /etc/multipath.conf
    defaults {
            enable_foreign     NONE
    }

    Riavviare il daemon multipath eseguendo un systemctl restart multipathd per rendere effettiva la nuova impostazione.

Configurare NVMe/FC

È possibile configurare NVMe/FC per gli adattatori Broadcom/Emulex o Marvell/Qlogic.

Broadcom/Emulex
Fasi
  1. Verificare di utilizzare l'adattatore supportato. Vedere "Matrice di interoperabilità NetApp" per l'elenco più aggiornato delle schede supportate.

    # cat /sys/class/scsi_host/host*/modelname
    LPe35002-M2
    LPe35002-M2
    # cat /sys/class/scsi_host/host*/modeldesc
    Emulex LightPulse LPe35002-M2 2-Port 32Gb Fibre Channel Adapter
    Emulex LightPulse LPe35002-M2 2-Port 32Gb Fibre Channel Adapter
  2. Verificare di utilizzare il firmware Broadcom lpfc e il driver della posta in arrivo consigliati. Vedere "Matrice di interoperabilità NetApp" per l'elenco più aggiornato delle versioni firmware e dei driver della scheda di rete supportati.

    # 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.0.0.15
  3. Verificare che lpfc_enable_fc4_type è impostato su 3

    # cat /sys/module/lpfc/parameters/lpfc_enable_fc4_type
    3
  4. Verificare che le porte dell'iniziatore siano attive e in esecuzione e che siano visualizzate le LIF di destinazione.

    # cat /sys/class/fc_host/host*/port_name
    0x100000109b95467c
    0x100000109b95467b
    # cat /sys/class/fc_host/host*/port_state
    Online
    Online
    # cat /sys/class/scsi_host/host*/nvme_info
    NVME Initiator Enabled
    XRI Dist lpfc1 Total 6144 IO 5894 ELS 250
    NVME LPORT lpfc1 WWPN x100000109b95467c WWNN x200000109b95467c DID x0a1500 ONLINE
    NVME RPORT       WWPN x2071d039ea36a105 WWNN x206ed039ea36a105 DID x0a0907 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2072d039ea36a105 WWNN x206ed039ea36a105 DID x0a0805 TARGET DISCSRVC ONLINE
    
    NVME Statistics
    LS: Xmt 00000001c7 Cmpl 00000001c7 Abort 00000000
    LS XMIT: Err 00000000  CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 0000000004909837 Issue 0000000004908cfc OutIO fffffffffffff4c5
    abort 0000004a noxri 00000000 nondlp 00000458 qdepth 00000000 wqerr 00000000 err 00000000
    FCP CMPL: xb 00000061 Err 00017f43
    
    NVME Initiator Enabled
    XRI Dist lpfc0 Total 6144 IO 5894 ELS 250
    NVME LPORT lpfc0 WWPN x100000109b95467b WWNN x200000109b95467b DID x0a1100 ONLINE
    NVME RPORT       WWPN x2070d039ea36a105 WWNN x206ed039ea36a105 DID x0a1007 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x206fd039ea36a105 WWNN x206ed039ea36a105 DID x0a0c05 TARGET DISCSRVC ONLINE
    
    NVME Statistics
    LS: Xmt 00000001c7 Cmpl 00000001c7 Abort 00000000
    LS XMIT: Err 00000000  CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 0000000004909464 Issue 0000000004908531 OutIO fffffffffffff0cd
    abort 0000004f noxri 00000000 nondlp 00000361 qdepth 00000000 wqerr 00000000 err 00000000
    FCP CMPL: xb 0000006b Err 00017f99
Adattatore FC Marvell/QLogic per NVMe/FC

La casella di posta in arrivo nativa qla2xxx Il driver incluso nel kernel RHEL 8,7 contiene le correzioni più recenti, essenziali per il supporto di ONTAP.

Fasi
  1. Verificare che siano in esecuzione le versioni del firmware e del driver della scheda di rete supportati utilizzando il seguente comando:

    # cat /sys/class/fc_host/host*/symbolic_name
    QLE2772 FW:v9.08.02 DVR:v10.02.07.400-k-debug
    QLE2772 FW:v9.08.02 DVR:v10.02.07.400-k-debug
  2. Verificare ql2xnvmeenable Viene impostato, che consente all'adattatore Marvell di funzionare come iniziatore NVMe/FC utilizzando il seguente comando:

    # cat /sys/module/qla2xxx/parameters/ql2xnvmeenable
    1

Abilita i/o da 1 MB (opzionale)

ONTAP riporta un MDTS (MAX Data Transfer Size) di 8 nei dati del controller di identificazione. Ciò significa che le dimensioni massime delle richieste i/o possono essere fino a 1MB MB. Per emettere richieste di i/o di dimensioni pari a 1 MB per un host Broadcom NVMe/FC, è necessario aumentare il lpfc valore del lpfc_sg_seg_cnt parametro a 256 dal valore predefinito di 64.

Fasi
  1. Impostare il lpfc_sg_seg_cnt parametro su 256:

    # cat /etc/modprobe.d/lpfc.conf
    options lpfc lpfc_sg_seg_cnt=256
  2. Eseguire un dracut -f comando e riavviare l'host:

  3. Verificare che lpfc_sg_seg_cnt sia 256:

    # cat /sys/module/lpfc/parameters/lpfc_sg_seg_cnt
    256
Nota Non applicabile agli host Qlogic NVMe/FC.

Configurare NVMe/TCP

NVMe/TCP non dispone della funzionalità di connessione automatica. Pertanto, se un percorso non viene eseguito e non viene ripristinato entro il periodo di timeout predefinito di 10 minuti, NVMe/TCP non può riconnettersi automaticamente. Per evitare un timeout, impostare il periodo di ripetizione degli eventi di failover su almeno 30 minuti.

Fasi
  1. Verificare se la porta iniziatore è in grado di recuperare i dati della pagina del registro di rilevamento attraverso le LIF NVMe/TCP supportate:

    # nvme discover -t tcp -w 192.168.211.5 -a 192.168.211.14
    
    Discovery Log Number of Records 8, Generation counter 10
    
    =====Discovery Log Entry 0======
    trtype:  tcp
    adrfam:  ipv4
    subtype: unrecognized
    treq:    not specified
    portid:  0
    trsvcid: 8009
    subnqn:  nqn.199208.com.netapp:sn.154a5833c78c11ecb069d039ea359e4b:discovery
    traddr:  192.168.211.15
    sectype: none
    =====Discovery Log Entry 1======
    trtype:  tcp
    adrfam:  ipv4
    subtype: unrecognized
    treq:    not specified
    portid:  1
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.154a5833c78c11ecb069d039ea359e4b:discovery
    traddr:  192.168.111.15
    sectype: none
    =====Discovery Log Entry 2======
    trtype:  tcp
    adrfam:  ipv4
    subtype: unrecognized
    treq:    not specified
    portid:  2
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.154a5833c78c11ecb069d039ea359e4b:discovery
    traddr:  192.168.211.14
    sectype: none
    =====Discovery Log Entry 3======
    trtype:  tcp
    adrfam:  ipv4
    subtype: unrecognized
    treq:    not specified
    portid:  3
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.154a5833c78c11ecb069d039ea359e4b:discovery
    traddr:  192.168.111.14
    sectype: none
    =====Discovery Log Entry 4======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  0
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.154a5833c78c11ecb069d039ea359e4b:subsystem.rhel_tcp_165
    traddr:  192.168.211.15
    sectype: none
    =====Discovery Log Entry 5======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  1
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.154a5833c78c11ecb069d039ea359e4b:subsystem.rhel_tcp_165
    traddr:  192.168.111.15
    sectype: none
    =====Discovery Log Entry 6======
    
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  2
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.154a5833c78c11ecb069d039ea359e4b:subsystem.rhel_tcp_165
    traddr:  192.168.211.14
    sectype: none
    
    =====Discovery Log Entry 7======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    
       portid:  3
    
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.154a5833c78c11ecb069d039ea359e4b:subsystem.rhel_tcp_165
    traddr:  192.168.111.14
    sectype: none
    [root@R650-13-79 ~]#
  2. Verificare che altre combo LIF iniziatore NVMe/TCP possano recuperare correttamente i dati della pagina del registro di rilevamento. Ad esempio:

    # nvme discover -t tcp -w 192.168.211.5 -a 192.168.211.14
    # nvme discover -t tcp -w 192.168.211.5 -a 192.168.211.15
    # nvme discover -t tcp -w 192.168.111.5 -a 192.168.111.14
    # nvme discover -t tcp -w 192.168.111.5 -a 192.168.111.15
  3. Eseguire nvme connect-all Comando tra tutti i LIF di destinazione degli iniziatori NVMe/TCP supportati nei nodi. Assicurarsi di impostare un valore più lungo ctrl_loss_tmo intervallo di ripetizione del timer (ad esempio, 30 minuti, che può essere impostato attraverso -l 1800) durante la connessione, in modo da riprovare per un periodo di tempo più lungo in caso di perdita di percorso. Ad esempio:

    # nvme connect-all -t tcp -w 192.168.211.5-a 192.168.211.14 -l 1800
    # nvme connect-all -t tcp -w 192.168.211.5 -a 192.168.211.15 -l 1800
    # nvme connect-all -t tcp -w 192.168.111.5 -a 192.168.111.14 -l 1800
    # nvme connect-all -t tcp -w 192.168.111.5 -a 192.168.111.15 -l 1800

Validare NVMe-of

È possibile utilizzare la seguente procedura per convalidare NVMe-of.

Fasi
  1. Verificare che il multipath NVMe in-kernel sia effettivamente attivato selezionando:

    # cat /sys/module/nvme_core/parameters/multipath
    Y
  2. Verificare che le impostazioni NVMe-of appropriate (ad esempio, model impostare su NetApp ONTAP Controller e bilanciamento del carico iopolicy impostare su round-robin) Per i rispettivi spazi dei nomi ONTAP riflettere correttamente sull'host:

    # 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
  3. Verificare che gli spazi dei nomi ONTAP riflettano correttamente sull'host. Ad esempio:

    # nvme list
    Node           SN                    Model                   Namespace
    ------------   --------------------- ---------------------------------
    /dev/nvme0n1   81Gx7NSiKSRNAAAAAAAB   NetApp ONTAP Controller   1
    
    Usage                Format         FW Rev
    -------------------  -----------    --------
    21.47  GB /  21.47  GB  4 KiB + 0 B    FFFFFFFF
  4. Verificare che lo stato del controller di ciascun percorso sia attivo e che lo stato ANA sia corretto. Ad esempio:

    # nvme list-subsys /dev/nvme1n1
    
    nvme-subsys0 - NQN=nqn.1992-08.com.netapp:sn.154a5833c78c11ecb069d039ea359e4b:subsystem.rhel_tcp_165
    
    \
    
     +- nvme0 tcp traddr=192.168.211.15 trsvcid=4420 host_traddr=192.168.211.5 live non-optimized
    
     +- nvme1 tcp traddr=192.168.211.14 trsvcid=4420 host_traddr=192.168.211.5 live optimized
    
     +- nvme2 tcp traddr=192.168.111.15 trsvcid=4420 host_traddr=192.168.111.5 live non-optimized
    
     +- nvme3 tcp traddr=192.168.111.14 trsvcid=4420 host_traddr=192.168.111.5 live optimized
  5. Verificare che il plug-in NetApp visualizzi i valori corretti per ciascun dispositivo dello spazio dei nomi ONTAP. Ad esempio:

    # nvme netapp ontapdevices -o column
    Device       Vserver          Namespace Path
    ---------    -------          --------------------------------------------------
    /dev/nvme0n1 vs_tcp79     /vol/vol1/ns1 
    
    NSID  UUID                                   Size
    ----  ------------------------------         ------
    1     79c2c569-b7fa-42d5-b870-d9d6d7e5fa84  21.47GB
    
    
    # nvme netapp ontapdevices -o json
    {
    
      "ONTAPdevices" : [
      {
    
          "Device" : "/dev/nvme0n1",
          "Vserver" : "vs_tcp79",
          "Namespace_Path" : "/vol/vol1/ns1",
          "NSID" : 1,
          "UUID" : "79c2c569-b7fa-42d5-b870-d9d6d7e5fa84",
          "Size" : "21.47GB",
          "LBA_Data_Size" : 4096,
          "Namespace_Size" : 5242880
        },
    
    ]
    
    }

Problemi noti

La configurazione dell'host NVMe-of per RHEL 8.7 con ONTAP presenta i seguenti problemi noti:

ID bug NetApp Titolo Descrizione

"1479047"

Gli host RHEL 8.7 NVMe-of creano controller di rilevamento persistenti duplicati

Sugli host NVMe over Fabrics (NVMe-of), è possibile utilizzare il comando "nvme Discover -p" per creare controller di rilevamento persistenti (PDC). Quando si utilizza questo comando, è necessario creare un solo PDC per ogni combinazione initiator-target. Tuttavia, se si esegue ONTAP 9.10.1 e Red Hat Enterprise Linux (RHEL) 8.7 con un host NVMe-of, viene creato un PDC duplicato ogni volta che viene eseguito "nvme Discover -p". Ciò comporta un utilizzo non necessario delle risorse sia sull'host che sulla destinazione.