Skip to main content
SAN hosts and cloud clients
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Configuración de host NVMe-oF para SUSE Linux Enterprise Server 15 SP4 con ONTAP

Colaboradores

NVMe over Fabrics (NVMe-oF), incluido NVMe over Fibre Channel (NVMe/FC) y otros transportes, es compatible con SUSE Linux Enterprise Server (SLES) 15 SP4 con acceso asimétrico a espacio de nombres (ANA). En entornos de NVMe-oF, ANA es el equivalente a la multivía ALUA en entornos iSCSI y FCP y se implementa con NVMe multivía en kernel.

La siguiente compatibilidad está disponible para la configuración de host NVMe-oF para SUSE Linux Enterprise Server 15 SP4 con ONTAP:

  • Tanto el tráfico NVMe como SCSI pueden ejecutarse en el mismo host coexistente. Por lo tanto, para LUN SCSI, es posible configurar dm-multipath para dispositivos SCSI mpath, mientras que se puede utilizar NVMe multipath para configurar dispositivos de espacio de nombres NVMe-oF en el host.

  • Compatibilidad para NVMe sobre TCP (NVMe/TCP) además de NVMe/FC. El plugin de NetApp en el paquete nvme-cli nativo muestra detalles de ONTAP para espacios de nombres NVMe/FC y NVMe/TCP.

Si quiere más información sobre las configuraciones compatibles, consulte "Herramienta de matriz de interoperabilidad de NetApp".

Funciones

  • Compatibilidad con la autenticación segura en banda de NVMe

  • Compatibilidad con controladores de detección persistente (PDCs) mediante un NQN de detección único

Limitaciones conocidas

  • Actualmente no se admite el arranque SAN mediante el protocolo NVMe-oF.

  • No hay compatibilidad de sanlun para NVMe-oF. Por lo tanto, la compatibilidad con la utilidad host no está disponible para NVMe-oF en un host SUSE Linux Enterprise Server 15 SP5. Puede confiar en el plugin de NetApp incluido en el paquete nvme-cli nativo para todos los transportes NVMe-oF.

Configure NVMe/FC

Puede configurar NVMe/FC para adaptadores FC Broadcom/Emulex o adaptadores de FC Marvell/Qlogic.

Broadcom/Emulex
Pasos
  1. Compruebe que está utilizando el modelo de adaptador recomendado:

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

    Ejemplo de salida:

    LPe32002 M2
    LPe32002-M2
  2. Compruebe la descripción del modelo del adaptador:

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

    Ejemplo de salida:

    Emulex LightPulse LPe32002-M2 2-Port 32Gb Fibre Channel Adapter
    Emulex LightPulse LPe32002-M2 2-Port 32Gb Fibre Channel Adapter
  3. Compruebe que está utilizando las versiones recomendadas del firmware del adaptador de bus de host (HBA) de Emulex:

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

    Ejemplo de salida:

    12.8.351.47, sli-4:2:c
    12.8.351.47, sli-4:2:c
  4. Compruebe que está utilizando la versión de controlador LPFC recomendada:

    cat /sys/module/lpfc/version

    Ejemplo de salida:

    0:14.2.0.6
  5. Compruebe que puede ver los puertos de iniciador:

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

    Ejemplo de salida:

    0x100000109b579d5e
    0x100000109b579d5f
  6. Compruebe que los puertos de iniciador estén en línea:

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

    Ejemplo de salida:

    Online
    Online
  7. Compruebe que los puertos de iniciador NVMe/FC estén habilitados y que los puertos de destino estén visibles:

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

    Ejemplo de salida:

    En el ejemplo siguiente, un puerto iniciador está habilitado y conectado con dos LIF de destino.

    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. Reinicie el host.

Marvell/QLogic

El controlador de la bandeja de entrada nativa qla2xxx incluido en el kernel de SUSE Linux Enterprise Server 15 SP4 tiene las últimas correcciones. Estas correcciones son esenciales para la compatibilidad con ONTAP.

Pasos
  1. Compruebe que está ejecutando las versiones de firmware y controlador del adaptador compatibles:

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

    Ejemplo de salida:

    QLE2742 FW:v9.08.02 DVR:v10.02.07.800-k QLE2742 FW:v9.08.02 DVR:v10.02.07.800-k
  2. Compruebe que el ql2xnvmeenable el parámetro está definido en 1:

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

Habilitar tamaño de I/o de 1 MB (opcional)

ONTAP informa de un MDT (tamaño de transferencia de MAX Data) de 8 en los datos Identify Controller. Esto significa que el tamaño máximo de solicitud de E/S puede ser de hasta 1MB TB. Para emitir solicitudes de I/O de tamaño 1 MB para un host Broadcom NVMe/FC, debe aumentar lpfc el valor lpfc_sg_seg_cnt del parámetro a 256 con respecto al valor predeterminado de 64.

Nota Estos pasos no se aplican a los hosts Qlogic NVMe/FC.
Pasos
  1. Defina el lpfc_sg_seg_cnt parámetro en 256:

    cat /etc/modprobe.d/lpfc.conf
    options lpfc lpfc_sg_seg_cnt=256
  2. Ejecute dracut -f el comando y reinicie el host.

  3. Compruebe que el valor esperado de lpfc_sg_seg_cnt es 256:

    cat /sys/module/lpfc/parameters/lpfc_sg_seg_cnt

Habilite los servicios NVMe

Existen dos servicios de arranque NVMe/FC incluidos en la nvme-cli paquete, sin embargo, only nvmefc-boot-connections.service se activa para iniciar durante el arranque del sistema; nvmf-autoconnect.service no está habilitado. Por lo tanto, debe habilitar manualmente nvmf-autoconnect.service para iniciar durante el arranque del sistema.

Pasos
  1. Habilite 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. Reinicie el host.

  3. Compruebe que nvmf-autoconnect.service y nvmefc-boot-connections.service se están ejecutando después del arranque del sistema:

    Ejemplo de salida:

    # 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.

Configure NVMe/TCP

Es posible usar el siguiente procedimiento para configurar NVMe/TCP.

Pasos
  1. Compruebe que el puerto del iniciador pueda recuperar los datos de la página de registro de detección en las LIF NVMe/TCP admitidas:

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

    Ejemplo de salida:

    # 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. Compruebe que todas las demás combinaciones de LIF iniciador-objetivo NVMe/TCP puedan recuperar correctamente los datos de la página del registro de detección:

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

    Ejemplo de salida:

    # 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. Ejecute el nvme connect-all Comando en todos los LIF objetivo iniciador NVMe/TCP admitidos entre los nodos:

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

    Ejemplo de salida:

    # 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 recomienda configurar el ctrl-loss-tmo opción a. -1 De este modo, el iniciador NVMe/TCP intenta volver a conectarse de forma indefinida en caso de pérdida de ruta.

Valide NVMe-of

Puede usar el siguiente procedimiento para validar NVMe-oF.

Pasos
  1. Compruebe que la multivía de NVMe en kernel está habilitada:

    cat /sys/module/nvme_core/parameters/multipath
    Y
  2. Compruebe que el host tenga el modelo de controladora correcto para los espacios de nombres NVMe de ONTAP:

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

    Ejemplo de salida:

    NetApp ONTAP Controller
    NetApp ONTAP Controller
  3. Compruebe la política de I/O NVMe para la controladora de I/O NVMe de ONTAP respectiva:

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

    Ejemplo de salida:

    round-robin
    round-robin
  4. Compruebe que el host pueda ver los espacios de nombres de ONTAP:

    nvme list -v

    Ejemplo de salida:

    Subsystem        Subsystem-NQN                                                                         Controllers
    ---------------- ------------------------------------------------------------------------------------ -----------------------
    nvme-subsys0     nqn.1992-08.com.netapp:sn.0501daf15dda11eeab68d039eaa7a232:subsystem.unidir_dhchap    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. Compruebe que el estado de la controladora de cada ruta sea activo y que tenga el estado de ANA correcto:

    nvme list-subsys /dev/<subsystem_name>
    NVMe/FC
    # 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
    # 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. Confirmar que el complemento de NetApp muestra los valores correctos para cada dispositivo de espacio de nombres ONTAP:

    Columna

    nvme netapp ontapdevices -o column

    Ejemplo de salida:

    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

    Ejemplo de salida:

    {
      "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
        }
      ]
    }

Cree una controladora de detección persistente

A partir de ONTAP 9.11,1, puede crear un controlador de detección persistente (PDC) para su host SUSE Linux Enterprise Server 15 SP4. Se necesita un PDC para detectar automáticamente un subsistema NVMe para agregar o eliminar un escenario y cambios en los datos de la página de registro de detección.

Pasos
  1. Compruebe que los datos de la página de registro de detección estén disponibles y que se puedan recuperar mediante la combinación de LIF de destino y puerto iniciador:

    nvme discover -t <trtype> -w <host-traddr> -a <traddr>
    Mostrar resultado de ejemplo:
    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. Cree un PDC para el subsistema de detección:

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

    Ejemplo de salida:

    nvme discover -t tcp -w 192.168.1.16 -a 192.168.1.116 -p
  3. En el controlador ONTAP, compruebe que se ha creado el PDC:

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

    Ejemplo de salida:

    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

Configure la autenticación segura en banda

A partir de ONTAP 9.12,1, la autenticación segura en banda es compatible con NVMe/TCP y NVMe/FC entre el host SUSE Linux Enterprise Server 15 SP4 y el controlador ONTAP.

Para configurar la autenticación segura, cada host o controladora debe estar asociado con a. DH-HMAC-CHAP Clave, que es una combinación de NQN del host o de la controladora NVMe y un secreto de autenticación configurado por el administrador. Para autenticar su par, un host o una controladora NVMe deben reconocer la clave asociada con el par.

Puede configurar la autenticación segura en banda mediante la interfaz de línea de comandos o un archivo config JSON. Si necesita especificar diferentes claves dhchap para diferentes subsistemas, debe utilizar un archivo JSON de configuración.

CLI
Pasos
  1. Obtenga el NQN del host:

    cat /etc/nvme/hostnqn
  2. Genere la clave dhchap para el host SUSE Linux Enterprise Server 15 SP4:

    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

    +
    En el siguiente ejemplo, se genera una clave dhchap aleatoria con HMAC establecido en 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=:
  1. En la controladora ONTAP, añada el host y especifique ambas claves 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}
  2. Un host admite dos tipos de métodos de autenticación: Unidireccional y bidireccional. En el host, conéctese a la controladora ONTAP y especifique claves dhchap según el método de autenticación elegido:

    nvme connect -t tcp -w <host-traddr> -a <tr-addr> -n <host_nqn> -S <authentication_host_secret> -C <authentication_controller_secret>
  3. Valide el nvme connect authentication comando mediante la verificación de las claves dhchap de host y controladora:

    1. Verifique las claves dhchap del host:

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

      Ejemplo de salida para configuración unidireccional:

      SR650-14-114:~ # 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. Compruebe las claves dhchap del controlador:

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

      Ejemplo de salida para configuración bidireccional:

    SR650-14-114:~ # 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=:
Archivo JSON

Puede utilizar el /etc/nvme/config.json archivo con nvme connect-all Comando cuando hay varios subsistemas NVMe disponibles en la configuración de la controladora ONTAP.

Puede generar el archivo JSON con -o opción. Consulte las páginas del manual NVMe connect-all para obtener más opciones de sintaxis.

Pasos
  1. Configure el archivo 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. Conéctese a la controladora ONTAP mediante el archivo JSON de configuración:

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

    Ejemplo de salida:

    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. Verifique que se hayan activado los secretos dhchap para las respectivas controladoras de cada subsistema:

    1. Verifique las claves dhchap del host:

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

      Ejemplo de salida:

      DHHC-1:01:NunEWY7AZlXqxITGheByarwZdQvU4ebZg9HOjIr6nOHEkxJg:
    2. Compruebe las claves dhchap del controlador:

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

      Ejemplo de salida:

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

Problemas conocidos

No existen problemas conocidos para la versión SUSE Linux Enterprise Server 15 SP4 con ONTAP.