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 SUSE Linux Enterprise Server 15 SP5 con ONTAP

Collaboratori

NVMe over Fabrics (NVMe-of), incluso NVMe over Fibre Channel (NVMe/FC) e altri tipi di trasporto, è supportato da SUSE Linux Enterprise Server (SLES) 15 SP5 con Asymmetric Namespace Access (ANA). Negli ambienti NVMe-of, ANA è l'equivalente del multipathing ALUA in ambienti iSCSI e FCP e viene implementata con il multipath NVMe in-kernel.

Il seguente supporto è disponibile per la configurazione host NVMe-of per SLES 15 SP5 con ONTAP:

  • Il traffico NVMe e SCSI può essere eseguito sullo stesso host coesistente. Pertanto, per i LUN SCSI, è possibile configurare dm-multipath per i dispositivi SCSI mpath, mentre è possibile utilizzare NVMe multipath per configurare i dispositivi NVMe-of namespace sull'host.

  • Supporto per NVMe su TCP (NVMe/TCP) oltre a NVMe/FC. Il plug-in NetApp nel nativo nvme-cli Il pacchetto visualizza i dettagli ONTAP per gli spazi dei nomi NVMe/FC e NVMe/TCP.

Per ulteriori informazioni sulle configurazioni supportate, consultare "Tool di matrice di interoperabilità NetApp".

Caratteristiche

  • Supporto per l'autenticazione NVMe sicura e in-band

  • Supporto per controller di rilevamento persistente (PDC) utilizzando un NQN di rilevamento univoco

Limitazioni note

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

  • Non c'è sanlun Supporto per NVMe-of. Pertanto, il supporto dell'utility host non è disponibile per NVMe-of su un host SLES 15 SP5. Puoi fare affidamento sul plug-in NetApp incluso nel pacchetto nvme-cli nativo per tutti i trasporti NVMe-of.

Configurare NVMe/FC

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

Broadcom/Emulex
Fasi
  1. Verificare di utilizzare il modello di scheda consigliato:

    cat /sys/class/scsi_host/host*/modelname

    Output di esempio:

    LPe32002 M2
    LPe32002-M2
  2. Verificare la descrizione del modello dell'adattatore:

    cat /sys/class/scsi_host/host*/modeldesc

    Output di esempio:

    Emulex LightPulse LPe32002-M2 2-Port 32Gb Fibre Channel Adapter
    Emulex LightPulse LPe32002-M2 2-Port 32Gb Fibre Channel Adapter
  3. Verificare che si stiano utilizzando le versioni del firmware dell'HBA (host Bus Adapter) Emulex consigliate:

    cat /sys/class/scsi_host/host*/fwrev

    Output di esempio:

    14.0.639.20, sli-4:2:c
    14.0.639.20, sli-4:2:c
  4. Verificare di utilizzare la versione consigliata del driver LPFC:

    cat /sys/module/lpfc/version

    Output di esempio:

    0:14.2.0.13
  5. Verificare che sia possibile visualizzare le porte dell'iniziatore:

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

    Output di esempio:

    0x100000109b579d5e
    0x100000109b579d5f
  6. Verificare che le porte dell'iniziatore siano in linea:

    cat /sys/class/fc_host/host*/port_state

    Output di esempio:

    Online
    Online
  7. Verificare che le porte iniziatore NVMe/FC siano abilitate e che le porte di destinazione siano visibili:

    cat /sys/class/scsi_host/host*/nvme_info

    Output di esempio:

    In questo esempio, una porta iniziatore è abilitata e connessa con due LIF di destinazione.

    NVME Initiator Enabled
    XRI Dist lpfc0 Total 6144 IO 5894 ELS 250
    NVME LPORT lpfc0 WWPN x100000109b579d5e WWNN x200000109b579d5e DID x011c00 ONLINE
    NVME RPORT WWPN x208400a098dfdd91 WWNN x208100a098dfdd91 DID x011503
    TARGET DISCSRVC ONLINE
    NVME RPORT WWPN x208500a098dfdd91 WWNN x208100a098dfdd91 DID x010003
    TARGET DISCSRVC *ONLINE
    
    NVME Statistics
    LS: Xmt 0000000e49 Cmpl 0000000e49 Abort 00000000
    LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 000000003ceb594f Issue 000000003ce65dbe OutIO fffffffffffb046f
    abort 00000bd2 noxri 00000000 nondlp 00000000 qdepth 00000000 wqerr
    00000000 err 00000000
    FCP CMPL: xb 000014f4 Err 00012abd
    
    NVME Initiator Enabled
    XRI Dist lpfc1 Total 6144 IO 5894 ELS 250
    NVME LPORT lpfc1 WWPN x100000109b579d5f WWNN x200000109b579d5f DID x011b00 ONLINE
    NVME RPORT WWPN x208300a098dfdd91 WWNN x208100a098dfdd91 DID x010c03
    TARGET DISCSRVC ONLINE
    NVME RPORT WWPN x208200a098dfdd91 WWNN x208100a098dfdd91 DID x012a03
    TARGET DISCSRVC ONLINE
    
    NVME Statistics
    LS: Xmt 0000000e50 Cmpl 0000000e50 Abort 00000000
    LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 000000003c9859ca Issue 000000003c93515e OutIO fffffffffffaf794
    abort 00000b73 noxri 00000000 nondlp 00000000 qdepth 00000000 wqerr
    00000000 err 00000000
    FCP CMPL: xb 0000159d Err 000135c3
  8. Riavviare l'host.

Marvell/QLogic
Fasi
  1. Il driver inbox qla2xxx nativo incluso nel kernel SLES 15 SP5 ha le ultime correzioni essenziali per il supporto di ONTAP. Verificare che siano in esecuzione le versioni del firmware e del driver dell'adattatore supportate:

    cat /sys/class/fc_host/host*/symbolic_name

    Output di esempio:

    QLE2742 FW:v9.12.01 DVR: v10.02.08.300-k
    QLE2742 FW:v9.12.01 DVR: v10.02.08.300-k
  2. Verificare che il ql2xnvmeenable il parametro è impostato su 1:

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

Abilita dimensione i/o 1 MB (opzionale)

ONTAP riporta un MDTS (MAX Data Transfer Size) di 8 nei dati del controller di identificazione, il che significa che la dimensione massima della richiesta di i/o può essere fino a 1 MB. Tuttavia, per emettere richieste di i/o di dimensione 1 MB per un host Broadcom NVMe/FC, è necessario aumentare lpfc valore di lpfc_sg_seg_cnt parametro a 256 dal valore predefinito di 64.

Fasi
  1. Impostare lpfc_sg_seg_cnt parametro a 256.

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

  3. Verificare che lpfc_sg_seg_cnt è 256.

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

Abilitare i servizi NVMe

Il include due servizi di boot NVMe/FC nvme-cli pacchetto, tuttavia, solo nvmefc-boot-connections.service è abilitato all'avvio durante l'avvio del sistema; nvmf-autoconnect.service non è abilitato. Pertanto, è necessario attivare manualmente nvmf-autoconnect.service per l'avvio durante l'avvio del sistema.

Fasi
  1. Abilitare nvmf-autoconnect.service:

    # systemctl enable nvmf-autoconnect.service
    Created symlink /etc/systemd/system/default.target.wants/nvmf- autoconnect.service → /usr/lib/systemd/system/nvmf-autoconnect.service.
  2. Riavviare l'host.

  3. Verificare che nvmf-autoconnect.service e. nvmefc-boot-connections.service sono in esecuzione dopo l'avvio del sistema:

    Esempio di output:

    # 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; vendor preset: disabled)
    Active: inactive (dead) since Thu 2023-05-25 14:55:00 IST; 11min
    ago
    Process: 2108 ExecStartPre=/sbin/modprobe nvme-fabrics (code=exited,
    status=0/SUCCESS)
    Process: 2114 ExecStart=/usr/sbin/nvme connect-all (code=exited, status=0/SUCCESS)
    Main PID: 2114 (code=exited, status=0/SUCCESS)
    
    systemd[1]: Starting Connect NVMe-oF subsystems automatically during boot...
    nvme[2114]: traddr=nn-0x201700a098fd4ca6:pn-0x201800a098fd4ca6 is already connected
    systemd[1]: nvmf-autoconnect.service: Deactivated successfully. systemd[1]: Finished Connect NVMe-oF subsystems automatically during
    boot.
    
    # 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; vendor preset: enabled)
    Active: inactive (dead) since Thu 2023-05-25 14:55:00 IST; 11min ago Main PID: 1647 (code=exited, status=0/SUCCESS)
    
    systemd[1]: Starting Auto-connect to subsystems on FC-NVME devices found during boot...
    systemd[1]: nvmefc-boot-connections.service: Succeeded.
    systemd[1]: Finished Auto-connect to subsystems on FC-NVME devices found during boot.

Configurare NVMe/TCP

Puoi utilizzare la seguente procedura per configurare NVMe/TCP.

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

    nvme discover -t tcp -w <host-traddr> -a <traddr>

    Output di esempio:

    # nvme discover -t tcp -w 192.168.1.4 -a 192.168.1.31
    
    Discovery Log Number of Records 8, Generation counter 18
    =====Discovery Log Entry 0====== trtype: tcp
    adrfam: ipv4
    subtype: current discovery subsystem treq: not specified
    portid: 0
    trsvcid: 8009 subnqn: nqn.1992-
    08.com.netapp:sn.48391d66c0a611ecaaa5d039ea165514:discovery traddr: 192.168.2.117
    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: 1
    trsvcid: 8009 subnqn: nqn.1992-
    08.com.netapp:sn.48391d66c0a611ecaaa5d039ea165514:discovery traddr: 192.168.1.117
    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: 2
    trsvcid: 8009 subnqn: nqn.1992-
    08.com.netapp:sn.48391d66c0a611ecaaa5d039ea165514:discovery traddr: 192.168.2.116
    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: 3
    trsvcid: 8009 subnqn: nqn.1992-
    08.com.netapp:sn.48391d66c0a611ecaaa5d039ea165514:discovery traddr: 192.168.1.116
    eflags: explicit discovery connections, duplicate discovery information 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.48391d66c0a611ecaaa5d039ea165514:subsystem.subsys_CLIEN T116
    traddr: 192.168.2.117 eflags: not specified 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.48391d66c0a611ecaaa5d039ea165514:subsystem.subsys_CLIEN T116
    traddr: 192.168.1.117 eflags: not specified 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.48391d66c0a611ecaaa5d039ea165514:subsystem.subsys_CLIEN T116
    traddr: 192.168.2.116 eflags: not specified 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.48391d66c0a611ecaaa5d039ea165514:subsystem.subsys_CLIEN T116
    traddr: 192.168.1.116 eflags: not specified sectype: none
  2. Verifica che tutte le altre combinazioni di LIF iniziatore NVMe/TCP siano in grado di recuperare con successo i dati della pagina del log di rilevamento:

    nvme discover -t tcp -w <host-traddr> -a <traddr>

    Esempio di output:

    # nvme discover -t tcp -w 192.168.1.4 -a 192.168.1.32
    # nvme discover -t tcp -w 192.168.2.5 -a 192.168.2.36
    # nvme discover -t tcp -w 192.168.2.5 -a 192.168.2.37
  3. Eseguire nvme connect-all Command tra tutti i LIF target initiator NVMe/TCP supportati nei nodi:

    nvme connect-all -t tcp -w host-traddr -a traddr -l <ctrl_loss_timeout_in_seconds>

    Esempio di output:

    # nvme connect-all -t tcp -w 192.168.1.4 -a 192.168.1.31 -l -1
    # nvme connect-all -t tcp -w 192.168.1.4 -a 192.168.1.32 -l -1
    # nvme connect-all -t tcp -w 192.168.2.5 -a 192.168.1.36 -l -1
    # nvme connect-all -t tcp -w 192.168.2.5 -a 192.168.1.37 -l -1
    Nota NetApp consiglia di impostare ctrl-loss-tmo opzione a. -1 In modo che l'iniziatore NVMe/TCP tenti di riconnettersi a tempo indeterminato in caso di perdita di percorso.

Validare NVMe-of

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

Fasi
  1. Verifica che il multipath NVMe in-kernel sia abilitato:

    cat /sys/module/nvme_core/parameters/multipath
    Y
  2. Verificare che l'host disponga del modello di controller corretto per gli spazi dei nomi ONTAP NVMe:

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

    Esempio di output:

    NetApp ONTAP Controller
    NetApp ONTAP Controller
  3. Verifica della policy i/o NVMe per il rispettivo controller i/o ONTAP NVMe:

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

    Esempio di output:

    round-robin
    round-robin
  4. Verificare che gli spazi dei nomi ONTAP siano visibili all'host:

    nvme list -v

    Esempio di output:

    Subsystem        Subsystem-NQN                                                                         Controllers
    ---------------- ------------------------------------------------------------------------------------ -----------------------
    nvme-subsys0     nqn.1992- 08.com.netapp:sn.0501daf15dda11eeab68d039eaa7a232:subsystem.unidir_dhcha p	nvme0, nvme1, nvme2, nvme3
    
    
    Device   SN                   MN                                       FR       TxPort Asdress        Subsystem    Namespaces
    -------- -------------------- ---------------------------------------- -------- ---------------------------------------------
    nvme0    81LGgBUqsI3EAAAAAAAE NetApp ONTAP Controller   FFFFFFFF tcp traddr=192.168.2.214,trsvcid=4420,host_traddr=192.168.2.14 nvme-subsys0 nvme0n1
    nvme1    81LGgBUqsI3EAAAAAAAE NetApp ONTAP Controller   FFFFFFFF tcp traddr=192.168.2.215,trsvcid=4420,host_traddr=192.168.2.14 nvme-subsys0 nvme0n1
    nvme2    81LGgBUqsI3EAAAAAAAE NetApp ONTAP Controller   FFFFFFFF tcp traddr=192.168.1.214,trsvcid=4420,host_traddr=192.168.1.14 nvme-subsys0 nvme0n1
    nvme3    81LGgBUqsI3EAAAAAAAE NetApp ONTAP Controller   FFFFFFFF tcp traddr=192.168.1.215,trsvcid=4420,host_traddr=192.168.1.14 nvme-subsys0 nvme0n1
    
    
    Device       Generic      NSID       Usage                 Format         Controllers
    ------------ ------------ ---------- -------------------------------------------------------------
    /dev/nvme0n1 /dev/ng0n1   0x1     1.07  GB /   1.07  GB    4 KiB +  0 B   nvme0, nvme1, nvme2, nvme3
  5. Verificare che lo stato del controller di ciascun percorso sia attivo e che abbia lo stato ANA corretto:

    nvme list-subsys /dev/<subsystem_name>
    NVMe/FC

    Esempio di output

    # nvme list-subsys /dev/nvme1n1
    nvme-subsys1 - NQN=nqn.1992-08.com.netapp:sn.04ba0732530911ea8e8300a098dfdd91:subsystem.nvme_145_1
    \
    +- nvme2 fc traddr=nn-0x208100a098dfdd91:pn- 0x208200a098dfdd91,host_traddr=nn-0x200000109b579d5f:pn-0x100000109b579d5f live optimized
    +- nvme3 fc traddr=nn-0x208100a098dfdd91:pn- 0x208500a098dfdd91,host_traddr=nn-0x200000109b579d5e:pn-0x100000109b579d5e live optimized
    +- nvme4 fc traddr=nn-0x208100a098dfdd91:pn- 0x208400a098dfdd91,host_traddr=nn-0x200000109b579d5e:pn-0x100000109b579d5e live non-optimized
    +- nvme6 fc traddr=nn-0x208100a098dfdd91:pn- 0x208300a098dfdd91,host_traddr=nn-0x200000109b579d5f:pn-0x100000109b579d5f live non-optimized
    NVMe/TCP

    Esempio di output

    # nvme list-subsys
    nvme-subsys0 - NQN=nqn.1992-08.com.netapp:sn.0501daf15dda11eeab68d039eaa7a232:subsystem.unidir_dhchap
    hostnqn=nqn.2014-08.org.nvmexpress:uuid:e58eca24-faff-11ea-8fee-3a68dd3b5c5f
    iopolicy=round-robin
    
     +- nvme0 tcp traddr=192.168.2.214,trsvcid=4420,host_traddr=192.168.2.14 live
     +- nvme1 tcp traddr=192.168.2.215,trsvcid=4420,host_traddr=192.168.2.14 live
     +- nvme2 tcp traddr=192.168.1.214,trsvcid=4420,host_traddr=192.168.1.14 live
     +- nvme3 tcp traddr=192.168.1.215,trsvcid=4420,host_traddr=192.168.1.14 live
  6. Verificare che il plug-in NetApp visualizzi i valori corretti per ciascun dispositivo dello spazio dei nomi ONTAP:

    Colonna

    nvme netapp ontapdevices -o column

    Output di esempio:

    Device           Vserver                   Namespace Path                               NSID UUID                                   Size
    ---------------- ------------------------- -----------------------------------------------------------------------------------------------
    /dev/nvme0n1     vs_CLIENT114              /vol/CLIENT114_vol_0_10/CLIENT114_ns10       1    c6586535-da8a-40fa-8c20-759ea0d69d33   1.07GB
    JSON

    nvme netapp ontapdevices -o json

    Output di esempio:

    {
    "ONTAPdevices":[
    {
    "Device":"/dev/nvme0n1",
    "Vserver":"vs_CLIENT114",
    "Namespace_Path":"/vol/CLIENT114_vol_0_10/CLIENT114_ns10",
    "NSID":1,
    "UUID":"c6586535-da8a-40fa-8c20-759ea0d69d33",
    "Size":"1.07GB",
    "LBA_Data_Size":4096,
    "Namespace_Size":262144
    }
    ]
    }

Creare un controller di rilevamento permanente

A partire da ONTAP 9.11.1, è possibile creare un controller di rilevamento persistente (PDC) per l'host SLES 15 SP5 utilizzando la procedura seguente. È necessario un PDC per rilevare automaticamente l'aggiunta o la rimozione di scenari e le modifiche ai dati della pagina del log di rilevamento da parte del sottosistema NVMe.

Fasi
  1. Verificare che i dati della pagina del log di rilevamento siano disponibili e possano essere recuperati attraverso la combinazione di porta Initiator e LIF di destinazione:

    nvme discover -t <trtype> -w <host-traddr> -a <traddr>
    Output di esempio:
    Discovery Log Number of Records 16, Generation counter 14
    =====Discovery Log Entry 0======
    trtype:  tcp
    adrfam:  ipv4
    subtype: current discovery subsystem
    treq:    not specified
    portid:  0
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.0501daf15dda11eeab68d039eaa7a232:discovery
    traddr:  192.168.1.214
    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:  0
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.0501daf15dda11eeab68d039eaa7a232:discovery
    traddr:  192.168.1.215
    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:  0
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.0501daf15dda11eeab68d039eaa7a232:discovery
    traddr:  192.168.2.215
    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:  0
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.0501daf15dda11eeab68d039eaa7a232:discovery
    traddr:  192.168.2.214
    eflags:  explicit discovery connections, duplicate discovery information 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.0501daf15dda11eeab68d039eaa7a232:subsystem.unidir_none
    traddr:  192.168.1.214
    eflags:  none
    sectype: none
    =====Discovery Log Entry 5======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  0
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0501daf15dda11eeab68d039eaa7a232:subsystem.unidir_none
    traddr:  192.168.1.215
    eflags:  none
    sectype: none
    =====Discovery Log Entry 6======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  0
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0501daf15dda11eeab68d039eaa7a232:subsystem.unidir_none
    traddr:  192.168.2.215
    eflags:  none
    sectype: none
    =====Discovery Log Entry 7======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  0
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0501daf15dda11eeab68d039eaa7a232:subsystem.unidir_none
    traddr:  192.168.2.214
    eflags:  none
    sectype: none
    =====Discovery Log Entry 8======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  0
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0501daf15dda11eeab68d039eaa7a232:subsystem.subsys_CLIENT114
    traddr:  192.168.1.214
    eflags:  none
    sectype: none
    =====Discovery Log Entry 9======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  0
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0501daf15dda11eeab68d039eaa7a232:subsystem.subsys_CLIENT114
    traddr:  192.168.1.215
    eflags:  none
    sectype: none
    =====Discovery Log Entry 10======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  0
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0501daf15dda11eeab68d039eaa7a232:subsystem.subsys_CLIENT114
    traddr:  192.168.2.215
    eflags:  none
    sectype: none
    =====Discovery Log Entry 11======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  0
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0501daf15dda11eeab68d039eaa7a232:subsystem.subsys_CLIENT114
    traddr:  192.168.2.214
    eflags:  none
    sectype: none
    =====Discovery Log Entry 12======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  0
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0501daf15dda11eeab68d039eaa7a232:subsystem.unidir_dhchap
    traddr:  192.168.1.214
    eflags:  none
    sectype: none
    =====Discovery Log Entry 13======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  0
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0501daf15dda11eeab68d039eaa7a232:subsystem.unidir_dhchap
    traddr:  192.168.1.215
    eflags:  none
    sectype: none
    =====Discovery Log Entry 14======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  0
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0501daf15dda11eeab68d039eaa7a232:subsystem.unidir_dhchap
    traddr:  192.168.2.215
    eflags:  none
    sectype: none
    =====Discovery Log Entry 15======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  0
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.0501daf15dda11eeab68d039eaa7a232:subsystem.unidir_dhchap
    traddr:  192.168.2.214
    eflags:  none
    sectype: none
  2. Creare un PDC per il sottosistema di rilevamento:

    nvme discover -t <trtype> -w <host-traddr> -a <traddr> -p

    Esempio di output:

    nvme discover -t tcp -w 192.168.1.16 -a 192.168.1.116 -p
  3. Dal controller ONTAP, verificare che il PDC sia stato creato:

    vserver nvme show-discovery-controller -instance -vserver vserver_name

    Esempio di output:

    vserver nvme show-discovery-controller -instance -vserver vs_nvme175
    Vserver Name: vs_CLIENT116 Controller ID: 00C0h
    Discovery Subsystem NQN: nqn.1992- 08.com.netapp:sn.48391d66c0a611ecaaa5d039ea165514:discovery Logical Interface UUID: d23cbb0a-c0a6-11ec-9731-d039ea165abc Logical Interface: CLIENT116_lif_4a_1
    Node: A400-14-124
    Host NQN: nqn.2014-08.org.nvmexpress:uuid:12372496-59c4-4d1b-be09- 74362c0c1afc
    Transport Protocol: nvme-tcp
    Initiator Transport Address: 192.168.1.16
    Host Identifier: 59de25be738348f08a79df4bce9573f3 Admin Queue Depth: 32
    Header Digest Enabled: false Data Digest Enabled: false
    Vserver UUID: 48391d66-c0a6-11ec-aaa5-d039ea165514

Configurare l'autenticazione in banda protetta

A partire da ONTAP 9.12.1, l'autenticazione sicura in-band è supportata su NVMe/TCP e NVMe/FC tra l'host SLES 15 SP5 e il controller ONTAP.

Per impostare l'autenticazione protetta, ogni host o controller deve essere associato a un DH-HMAC-CHAP Key, ossia una combinazione del NQN dell'host o controller NVMe e di un segreto di autenticazione configurato dall'amministratore. Per autenticare il proprio peer, un host o un controller NVMe deve riconoscere la chiave associata al peer.

È possibile impostare un'autenticazione protetta in banda utilizzando il CLI o un file JSON di configurazione. Se è necessario specificare chiavi dhchap diverse per sottosistemi diversi, è necessario utilizzare un file di configurazione JSON.

CLI
Fasi
  1. Ottenere l'NQN dell'host:

    cat /etc/nvme/hostnqn
  2. Generare la chiave dhchap per l'host SLES15 SP5:

    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

    Nell'esempio seguente, viene generata una chiave casuale dhCHAP con HMAC impostato su 3 (SHA-512).

    # nvme gen-dhchap-key -m 3 -n nqn.2014-08.org.nvmexpress:uuid:d3ca725a- ac8d-4d88-b46a-174ac235139b
    DHHC-1:03:J2UJQfj9f0pLnpF/ASDJRTyILKJRr5CougGpGdQSysPrLu6RW1fGl5VSjbeDF1n1DEh3nVBe19nQ/LxreSBeH/bx/pU=:
  3. Sul controller ONTAP, aggiungere l'host e specificare entrambe le chiavi 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}
  4. Un host supporta due tipi di metodi di autenticazione, unidirezionale e bidirezionale. Sull'host, connettersi al controller ONTAP e specificare le chiavi dhchap in base al metodo di autenticazione scelto:

    nvme connect -t tcp -w <host-traddr> -a <tr-addr> -n <host_nqn> -S <authentication_host_secret> -C <authentication_controller_secret>
  5. Convalidare nvme connect authentication comando verificando le chiavi dhchap dell'host e del controller:

    1. Verificare le chiavi dhchap dell'host:

      $cat /sys/class/nvme-subsystem/<nvme-subsysX>/nvme*/dhchap_secret

      Esempio di output per la configurazione unidirezionale:

      # cat /sys/class/nvme-subsystem/nvme-subsys1/nvme*/dhchap_secret
      DHHC-1:03:je1nQCmjJLUKD62mpYbzlpuw0OIws86NB96uNO/t3jbvhp7fjyR9bIRjOHg8wQtye1JCFSMkBQH3pTKGdYR1OV9gx00=:
      DHHC-1:03:je1nQCmjJLUKD62mpYbzlpuw0OIws86NB96uNO/t3jbvhp7fjyR9bIRjOHg8wQtye1JCFSMkBQH3pTKGdYR1OV9gx00=:
      DHHC-1:03:je1nQCmjJLUKD62mpYbzlpuw0OIws86NB96uNO/t3jbvhp7fjyR9bIRjOHg8wQtye1JCFSMkBQH3pTKGdYR1OV9gx00=:
      DHHC-1:03:je1nQCmjJLUKD62mpYbzlpuw0OIws86NB96uNO/t3jbvhp7fjyR9bIRjOHg8wQtye1JCFSMkBQH3pTKGdYR1OV9gx00=:
    2. Verificare i tasti dhchap del controller:

      $cat /sys/class/nvme-subsystem/<nvme-subsysX>/nvme*/dhchap_ctrl_secret

      Esempio di output per la configurazione bidirezionale:

    # cat /sys/class/nvme-subsystem/nvme-subsys6/nvme*/dhchap_ctrl_secret
    DHHC-1:03:WorVEV83eYO53kV4Iel5OpphbX5LAphO3F8fgH3913tlrkSGDBJTt3crXeTUB8fCwGbPsEyz6CXxdQJi6kbn4IzmkFU=:
    DHHC-1:03:WorVEV83eYO53kV4Iel5OpphbX5LAphO3F8fgH3913tlrkSGDBJTt3crXeTUB8fCwGbPsEyz6CXxdQJi6kbn4IzmkFU=:
    DHHC-1:03:WorVEV83eYO53kV4Iel5OpphbX5LAphO3F8fgH3913tlrkSGDBJTt3crXeTUB8fCwGbPsEyz6CXxdQJi6kbn4IzmkFU=:
    DHHC-1:03:WorVEV83eYO53kV4Iel5OpphbX5LAphO3F8fgH3913tlrkSGDBJTt3crXeTUB8fCwGbPsEyz6CXxdQJi6kbn4IzmkFU=:
File JSON

È possibile utilizzare /etc/nvme/config.json file con nvme connect-all Comando quando sono disponibili più sottosistemi NVMe sulla configurazione del controller ONTAP.

È possibile generare il file JSON utilizzando -o opzione. Per ulteriori opzioni di sintassi, fare riferimento alle pagine man di NVMe Connect-all.

Fasi
  1. Configurare il file JSON:

    # cat /etc/nvme/config.json
    [
     {
        "hostnqn":"nqn.2014-08.org.nvmexpress:uuid:12372496-59c4-4d1b-be09-74362c0c1afc",
        "hostid":"3ae10b42-21af-48ce-a40b-cfb5bad81839",
        "dhchap_key":"DHHC-1:03:Cu3ZZfIz1WMlqZFnCMqpAgn/T6EVOcIFHez215U+Pow8jTgBF2UbNk3DK4wfk2EptWpna1rpwG5CndpOgxpRxh9m41w=:"
     },
    
     {
        "hostnqn":"nqn.2014-08.org.nvmexpress:uuid:12372496-59c4-4d1b-be09-74362c0c1afc",
        "subsystems":[
            {
                "nqn":"nqn.1992-08.com.netapp:sn.48391d66c0a611ecaaa5d039ea165514:subsystem.subsys_CLIENT116",
                "ports":[
                   {
                        "transport":"tcp",
                        "traddr":"192.168.1.117",
                        "host_traddr":"192.168.1.16",
                        "trsvcid":"4420",
                        "dhchap_ctrl_key":"DHHC-1:01:0h58bcT/uu0rCpGsDYU6ZHZvRuVqsYKuBRS0Nu0VPx5HEwaZ:"
                   },
                   {
                        "transport":"tcp",
                        "traddr":"192.168.1.116",
                        "host_traddr":"192.168.1.16",
                        "trsvcid":"4420",
                        "dhchap_ctrl_key":"DHHC-1:01:0h58bcT/uu0rCpGsDYU6ZHZvRuVqsYKuBRS0Nu0VPx5HEwaZ:"
                   },
                   {
                        "transport":"tcp",
                        "traddr":"192.168.2.117",
                        "host_traddr":"192.168.2.16",
                        "trsvcid":"4420",
                        "dhchap_ctrl_key":"DHHC-1:01:0h58bcT/uu0rCpGsDYU6ZHZvRuVqsYKuBRS0Nu0VPx5HEwaZ:"
                   },
                   {
                        "transport":"tcp",
                        "traddr":"192.168.2.116",
                        "host_traddr":"192.168.2.16",
                        "trsvcid":"4420",
                        "dhchap_ctrl_key":"DHHC-1:01:0h58bcT/uu0rCpGsDYU6ZHZvRuVqsYKuBRS0Nu0VPx5HEwaZ:"
                   }
               ]
           }
       ]
     }
    ]
    
    [NOTE]
    In the preceding example, `dhchap_key` corresponds to `dhchap_secret` and `dhchap_ctrl_key` corresponds to `dhchap_ctrl_secret`.
  2. Connettersi al controller ONTAP utilizzando il file di configurazione JSON:

    nvme connect-all -J /etc/nvme/config.json

    Output di esempio:

    traddr=192.168.2.116 is already connected
    traddr=192.168.1.116 is already connected
    traddr=192.168.2.117 is already connected
    traddr=192.168.1.117 is already connected
    traddr=192.168.2.117 is already connected
    traddr=192.168.1.117 is already connected
    traddr=192.168.2.116 is already connected
    traddr=192.168.1.116 is already connected
    traddr=192.168.2.116 is already connected
    traddr=192.168.1.116 is already connected
    traddr=192.168.2.117 is already connected
    traddr=192.168.1.117 is already connected
  3. Verificare che i segreti dhchap siano stati abilitati per i rispettivi controller per ciascun sottosistema:

    1. Verificare le chiavi dhchap dell'host:

      # cat /sys/class/nvme-subsystem/nvme-subsys0/nvme0/dhchap_secret

      Esempio di output:

      DHHC-1:01:NunEWY7AZlXqxITGheByarwZdQvU4ebZg9HOjIr6nOHEkxJg:
    2. Verificare i tasti dhchap del controller:

      # cat /sys/class/nvme-subsystem/nvme-subsys0/nvme0/dhchap_ctrl_secret

      Esempio di output:

    DHHC-
    1:03:2YJinsxa2v3+m8qqCiTnmgBZoH6mIT6G/6f0aGO8viVZB4VLNLH4z8CvK7pV YxN6S5fOAtaU3DNi12rieRMfdbg3704=:

Problemi noti

Non ci sono problemi noti per SLES 15 SP5 con la versione ONTAP.