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 SP6 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 15 SP6 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 SP6 con ONTAP:

  • Ejecutar tráfico NVMe y SCSI en el mismo host coexistente. Por ejemplo, es posible configurar dm-multipath para dispositivos SCSI mpath para LUN SCSI y utilizar NVMe multipath para configurar dispositivos de espacio de nombres NVMe-oF en el host.

  • Soporte para NVMe sobre TCP (NVMe/TCP) y NVMe/FC. Esto ofrece al plugin de NetApp en el paquete nativo nvme-cli la capacidad de mostrar los detalles de ONTAP de 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

  • Compatibilidad con el cifrado TLS 1,3 para NVMe/TCP

Limitaciones conocidas

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

  • La compatibilidad con la utilidad host de NetApp sanlun no está disponible para NVMe-oF en un host SUSE Linux Enterprise Server 15 SP6. En su lugar, puede confiar en el plugin de NetApp incluido en el paquete nativo nvme-cli para todos los transportes NVMe-oF.

Configure NVMe/FC

Puede configurar NVMe/FC con adaptadores FC Broadcom/Emulex o Marvell/Qlogic para una configuración SUSE Linux Enterprise Server 15 SP6 con ONTAP.

Broadcom/Emulex

Configurar NVMe/FC para un adaptador FC Broadcom/Emulex.

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

    cat /sys/class/scsi_host/host*/modelname
    Resultado de ejemplo
    LPe32002 M2
    LPe32002-M2
  2. Compruebe la descripción del modelo del adaptador:

    cat /sys/class/scsi_host/host*/modeldesc
    Resultado de ejemplo
    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
    Resultado de ejemplo
    14.2.673.40, sli-4:2:c
    14.2.673.40, sli-4:2:c
  4. Compruebe que está utilizando la versión de controlador LPFC recomendada:

    cat /sys/module/lpfc/version
    Resultado de ejemplo
    0:14.4.0.1
  5. Compruebe que puede ver los puertos de iniciador:

    cat /sys/class/fc_host/host*/port_name
    Resultado de ejemplo
    0x10000090fae0ec88
    0x10000090fae0ec89
  6. Compruebe que los puertos de iniciador estén en línea:

    cat /sys/class/fc_host/host*/port_state
    Resultado de ejemplo
    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

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

    Muestra el resultado de ejemplo
    NVME Initiator Enabled
    XRI Dist lpfc0 Total 6144 IO 5894 ELS 250
    NVME LPORT lpfc0 WWPN x10000090fae0ec88 WWNN x20000090fae0ec88 DID x0a1300 ONLINE
    NVME RPORT WWPN x2070d039ea359e4a WWNN x206bd039ea359e4a DID x0a0a05 TARGET DISCSRVC
    ONLINE
    NVME Statistics
    LS: Xmt 00000003ba Cmpl 00000003ba Abort 00000000
    LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 0000000014e3dfb8 Issue 0000000014e308db OutIO ffffffffffff2923
     abort 00000845 noxri 00000000 nondlp 00000063 qdepth 00000000 wqerr 00000003 err 00000000
    FCP CMPL: xb 00000847 Err 00027f33
    NVME Initiator Enabled
    XRI Dist lpfc1 Total 6144 IO 5894 ELS 250
    NVME LPORT lpfc1 WWPN x10000090fae0ec89 WWNN x20000090fae0ec89 DID x0a1200 ONLINE
    NVME RPORT WWPN x2071d039ea359e4a WWNN x206bd039ea359e4a DID x0a0305 TARGET DISCSRVC
    ONLINE
    NVME Statistics
    LS: Xmt 00000003ba Cmpl 00000003ba Abort 00000000
    LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 0000000014e39f78 Issue 0000000014e2b832 OutIO ffffffffffff18ba
     abort 0000082d noxri 00000000 nondlp 00000028 qdepth 00000000 wqerr 00000007 err 00000000
    FCP CMPL: xb 0000082d Err 000283bb
Marvell/QLogic

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

Configure NVMe/FC para un adaptador Marvell/QLogic.

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

    cat /sys/class/fc_host/host*/symbolic_name
    Resultado de ejemplo
    QLE2742 FW:v9.14.01 DVR: v10.02.09.200-k
    QLE2742 FW:v9.14.01 DVR: v10.02.09.200-k
  2. Compruebe que el ql2xnvmeenable el parámetro está definido en 1:

    cat /sys/module/qla2xxx/parameters/ql2xnvmeenable

    El valor esperado es 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

Verifique los servicios NVMe

A partir de SUSE Linux Enterprise Server 15 SP6, los nvmefc-boot-connections.service servicios de inicio y nvmf-autoconnect.service incluidos en el paquete NVMe/FC nvme-cli se activan automáticamente durante el inicio del sistema. Una vez que se complete el inicio del sistema, debe verificar que los servicios de inicio se hayan habilitado.

Pasos
  1. Compruebe que nvmf-autoconnect.service está activado:

    # systemctl status nvmf-autoconnect.service

    Muestra el resultado de ejemplo
    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 2024-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.
  2. Compruebe que nvmefc-boot-connections.service está activado:

    # systemctl status nvmefc-boot-connections.service

    Muestra el resultado de ejemplo
    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 2024-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

NVMe/TCP no dispone de la funcionalidad de conexión automática. En su lugar, puede detectar los subsistemas y los espacios de nombres NVMe/TCP ejecutando manualmente las operaciones o connect-all NVMe/TCP connect.

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>
    Muestra el resultado de ejemplo
    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: 4
    trsvcid: 8009
    subnqn: nqn.1992-08.com.netapp:sn.8b5ee9199ff411eea468d039ea36a106:discovery
    traddr: 192.168.211.67
    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.8b5ee9199ff411eea468d039ea36a106:discovery
    traddr: 192.168.111.67
    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.8b5ee9199ff411eea468d039ea36a106:discovery
    traddr: 192.168.211.66
    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.8b5ee9199ff411eea468d039ea36a106:discovery
    traddr: 192.168.111.66
    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.8b5ee9199ff411eea468d039ea36a106:subsystem.nvme_tcp_1
    traddr: 192.168.211.67
    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.8b5ee9199ff411eea468d039ea36a106:subsystem.nvme_tcp_1
    traddr: 192.168.111.67
    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.8b5ee9199ff411eea468d039ea36a106:subsystem.nvme_tcp_1
    traddr: 192.168.211.66
    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.8b5ee9199ff411eea468d039ea36a106:subsystem.nvme_tcp_1
    traddr: 192.168.111.66
    eflags: none
    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>
    Resultado de ejemplo
    #nvme discover -t tcp -w 192.168.111.79 -a 192.168.111.66
    #nvme discover -t tcp -w 192.168.111.79 -a 192.168.111.67
    #nvme discover -t tcp -w 192.168.211.79 -a 192.168.211.66
    #nvme discover -t tcp -w 192.168.211.79 -a 192.168.211.67
  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>
    Resultado de ejemplo
    # nvme connect-all -t tcp -w 192.168.111.79 -a 192.168.111.66
    # nvme connect-all -t tcp -w 192.168.111.79 -a 192.168.111.67
    # nvme connect-all -t tcp -w 192.168.211.79 -a 192.168.211.66
    # nvme connect-all -t tcp -w 192.168.211.79 -a 192.168.211.67
    Nota A partir de SUSE Linux Enterprise Server 15 SP6, la configuración predeterminada para el tiempo de espera de NVMe/TCP ctrl-loss-tmo está desactivada. Esto significa que no hay límite en el número de reintentos (reintentos indefinidos) y no es necesario configurar manualmente una duración de tiempo de espera específica ctrl-loss-tmo cuando se utilizan nvme connect los comandos o nvme connect-all (opción -l). Además, no se agotan los tiempos de espera de las controladoras NVMe/TCP en caso de un fallo de ruta y permanecen conectadas indefinidamente.

Valide NVMe-of

Utilice el siguiente procedimiento para validar NVMe-oF para una configuración de SUSE Linux Enterprise Server 15 SP6 con ONTAP.

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

    cat /sys/module/nvme_core/parameters/multipath

    El valor esperado es “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
    Resultado de ejemplo
    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
    Resultado de ejemplo
    round-robin
    round-robin
  4. Compruebe que el host pueda ver los espacios de nombres de ONTAP:

    nvme list -v
    Muestra el resultado de ejemplo
    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.111.66,trsvcid=4420,host_traddr=192.168.111.79 nvme-subsys0 nvme0n1
    nvme1    81LGgBUqsI3EAAAAAAAE NetApp ONTAP Controller   FFFFFFFF tcp traddr=192.168.111.67,trsvcid=4420,host_traddr=192.168.111.79 nvme-subsys0 nvme0n1
    nvme2    81LGgBUqsI3EAAAAAAAE NetApp ONTAP Controller   FFFFFFFF tcp traddr=192.168.211.66,trsvcid=4420,host_traddr=192.168.211.79 nvme-subsys0 nvme0n1
    nvme3    81LGgBUqsI3EAAAAAAAE NetApp ONTAP Controller   FFFFFFFF tcp traddr=192.168.211.67,trsvcid=4420,host_traddr=192.168.211.79 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/nvme2n1
    Muestra el resultado de ejemplo
    nvme-subsys2 - NQN=nqn.1992-
    08.com.netapp:sn.06303c519d8411eea468d039ea36a106:subs
    ystem.nvme
     hostnqn=nqn.2014-08.org.nvmexpress:uuid:4c4c4544-
    0056-5410-8048-c6c04f425633
     iopolicy=round-robin
    \
    +- nvme4 fc traddr=nn-0x208fd039ea359e4a:pn-0x210dd039ea359e4a,host_traddr=nn-0x2000f4c7aa0cd7ab:pn-0x2100f4c7aa0cd7ab live optimized
    +- nvme6 fc traddr=nn-0x208fd039ea359e4a:pn-0x210ad039ea359e4a,host_traddr=nn-0x2000f4c7aa0cd7aa:pn-0x2100f4c7aa0cd7aa live optimized
    NVMe/TCP
    nvme list-subsys
    Muestra el resultado de ejemplo
    nvme-subsys1 - NQN=nqn.1992-08.com.netapp:sn.8b5ee9199ff411eea468d039ea36a106:subsystem.nvme_tcp_1
     hostnqn=nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0035-5910-804b-b2c04f444d33
     iopolicy=round-robin
    \
    +- nvme4 tcp traddr=192.168.111.66,trsvcid=4420,host_traddr=192.168.111.79,src_addr=192.168.111.79 live
    +- nvme3 tcp traddr=192.168.211.66,trsvcid=4420,host_traddr=192.168.211.79,src_addr=192.168.111.79 live
    +- nvme2 tcp traddr=192.168.111.67,trsvcid=4420,host_traddr=192.168.111.79,src_addr=192.168.111.79 live
    +- nvme1 tcp traddr=192.168.211.67,trsvcid=4420,host_traddr=192.168.211.79,src_addr=192.168.111.79 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
    Resultado de ejemplo
    Device           Vserver    Namespace Path                       NSID UUID                                   Size
    ---------------- ---------- ------------------------------------ ------------------------------------------- --------
    /dev/nvme0n1     vs_192     /vol/fcnvme_vol_1_1_0/fcnvme_ns      1    c6586535-da8a-40fa-8c20-759ea0d69d33   20GB
    JSON
    nvme netapp ontapdevices -o json
    Muestra el resultado de ejemplo
    {
    "ONTAPdevices":[
    {
    "Device":"/dev/nvme0n1",
    "Vserver":"vs_192",
    "Namespace_Path":"/vol/fcnvme_vol_1_1_0/fcnvme_ns",
    "NSID":1,
    "UUID":"c6586535-da8a-40fa-8c20-759ea0d69d33",
    "Size":"20GB",
    "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 un host SUSE Linux Enterprise Server 15 SP6. Se requiere un PDC para detectar automáticamente una operación de adición o eliminación de un subsistema NVMe 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>
    Muestra el resultado de ejemplo
    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: 4
    trsvcid: 8009
    subnqn: nqn.1992-08.com.netapp:sn.8b5ee9199ff411eea468d039ea36a106:discovery
    traddr: 192.168.211.67
    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.8b5ee9199ff411eea468d039ea36a106:discovery
    traddr: 192.168.111.67
    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.8b5ee9199ff411eea468d039ea36a106:discovery
    traddr: 192.168.211.66
    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.8b5ee9199ff411eea468d039ea36a106:discovery
    traddr: 192.168.111.66
    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.8b5ee9199ff411eea468d039ea36a106:subsystem.nvme_tcp_1
    traddr: 192.168.211.67
    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.8b5ee9199ff411eea468d039ea36a106:subsystem.nvme_tcp_1
    traddr: 192.168.111.67
    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.8b5ee9199ff411eea468d039ea36a106:subsystem.nvme_tcp_1
    traddr: 192.168.211.66
    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.8b5ee9199ff411eea468d039ea36a106:subsystem.nvme_tcp_1
    traddr: 192.168.111.66
    eflags: none
    sectype: none
  2. Cree un PDC para el subsistema de detección:

    nvme discover -t <trtype> -w <host-traddr> -a <traddr> -p
    Resultado de ejemplo
    nvme discover -t tcp -w 192.168.111.79 -a 192.168.111.666 -p
  3. En el controlador ONTAP, compruebe que se ha creado el PDC:

    vserver nvme show-discovery-controller -instance -vserver <vserver_name>
    Muestra el resultado de ejemplo
    vserver nvme show-discovery-controller -instance -vserver vs_nvme79
    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 un host SUSE Linux Enterprise Server 15 SP6 y un 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

Configure la autenticación segura en banda mediante la 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 SP6.

    En el siguiente resultado, se describen gen-dhchap-key los parámetros de los comandos:

    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=:
  3. 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}
  4. 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>
  5. 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
      Mostrar ejemplo de salida para una configuración unidireccional
      # 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
      Mostrar ejemplo de salida para una configuración bidireccional
      # 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

Cuando hay varios subsistemas NVMe disponibles en la configuración de la controladora ONTAP, se puede utilizar /etc/nvme/config.json el archivo con nvme connect-all el comando.

Para generar el archivo JSON, puede usar la -o opción. Consulte las páginas del manual de NVMe connect-all para obtener más opciones de sintaxis.

Pasos
  1. Configure el archivo JSON:

    Muestra el resultado de ejemplo
    # 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.111.66 ",
                        "host_traddr":" 192.168.111.79",
                        "trsvcid":"4420",
                        "dhchap_ctrl_key":"DHHC-
    1:01:0h58bcT/uu0rCpGsDYU6ZHZvRuVqsYKuBRS0Nu0VPx5HEwaZ:"
                   },
                   {
                        "transport":"tcp",
                        "traddr":" 192.168.111.66 ",
                        "host_traddr":" 192.168.111.79",
                        "trsvcid":"4420",
                        "dhchap_ctrl_key":"DHHC-
    1:01:0h58bcT/uu0rCpGsDYU6ZHZvRuVqsYKuBRS0Nu0VPx5HEwaZ:"
                   },
                   {
                        "transport":"tcp",
                       "traddr":" 192.168.111.66 ",
                        "host_traddr":" 192.168.111.79",
                        "trsvcid":"4420",
                        "dhchap_ctrl_key":"DHHC-
    1:01:0h58bcT/uu0rCpGsDYU6ZHZvRuVqsYKuBRS0Nu0VPx5HEwaZ:"
                   },
                   {
                        "transport":"tcp",
                        "traddr":" 192.168.111.66 ",
                        "host_traddr":" 192.168.111.79",
                        "trsvcid":"4420",
                        "dhchap_ctrl_key":"DHHC-
    1:01:0h58bcT/uu0rCpGsDYU6ZHZvRuVqsYKuBRS0Nu0VPx5HEwaZ:"
                   }
               ]
           }
       ]
     }
    ]

    +

    Nota En el ejemplo anterior, dhchap_key corresponde a dhchap_secret y dhchap_ctrl_key corresponde a 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
    Muestra el resultado de ejemplo
    traddr=192.168.111.66 is already connected
    traddr=192.168.211.66 is already connected
    traddr=192.168.111.66 is already connected
    traddr=192.168.211.66 is already connected
    traddr=192.168.111.66 is already connected
    traddr=192.168.211.66 is already connected
    traddr=192.168.111.67 is already connected
    traddr=192.168.211.67 is already connected
    traddr=192.168.111.67 is already connected
    traddr=192.168.211.67 is already connected
    traddr=192.168.111.67 is already connected
    traddr=192.168.111.67 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
      Resultado de ejemplo
      DHHC-1:01:NunEWY7AZlXqxITGheByarwZdQvU4ebZg9HOjIr6nOHEkxJg:
    2. Compruebe las claves dhchap del controlador:

      # cat /sys/class/nvme-subsystem/nvme-subsys0/nvme0/dhchap_ctrl_secret
      Resultado de ejemplo
      DHHC-
      1:03:2YJinsxa2v3+m8qqCiTnmgBZoH6mIT6G/6f0aGO8viVZB4VLNLH4z8CvK7pVYxN6S5fOAtaU3DNi12rieRMfdbg3704=:

Configure la seguridad de la capa de transporte

Transport Layer Security (TLS) proporciona cifrado seguro e integral para conexiones NVMe entre los hosts NVMe-oF y una cabina ONTAP. A partir de ONTAP 9.16,1, puede configurar TLS 1,3 mediante la CLI y una clave precompartida configurada (PSK).

Acerca de esta tarea

Siga los pasos de este procedimiento en el host SUSE Linux Enterprise Server 15 SP6, excepto si especifica que debe realizar un paso en el controlador ONTAP.

Pasos
  1. Compruebe que tiene los siguientes paquetes ktls-utils, openssl y libopenssl instalados en el host:

    1. rpm -qa | grep ktls

      Resultado de ejemplo
      ktls-utils-0.10+12.gc3923f7-150600.1.2.x86_64
    2. rpm -qa | grep ssl

      Resultado de ejemplo
      openssl-3-3.1.4-150600.5.7.1.x86_64
      libopenssl1_1-1.1.1w-150600.5.3.1.x86_64
      libopenssl3-3.1.4-150600.5.7.1.x86_64
  2. Compruebe que tiene la configuración correcta para /etc/tlshd.conf:

    # cat /etc/tlshd.conf
    Muestra el resultado de ejemplo
    [debug]
    loglevel=0
    tls=0
    nl=0
    [authenticate]
    keyrings=.nvme
    [authenticate.client]
    #x509.truststore= <pathname>
    #x509.certificate= <pathname>
    #x509.private_key= <pathname>
    [authenticate.server]
    #x509.truststore= <pathname>
    #x509.certificate= <pathname>
    #x509.private_key= <pathname>
  3. Activar tlshd para iniciar en el arranque del sistema:

    # systemctl enable tlshd
  4. Compruebe que el tlshd daemon se está ejecutando:

    # systemctl status tlshd
    Muestra el resultado de ejemplo
    tlshd.service - Handshake service for kernel TLS consumers
       Loaded: loaded (/usr/lib/systemd/system/tlshd.service; enabled; preset: disabled)
       Active: active (running) since Wed 2024-08-21 15:46:53 IST; 4h 57min ago
         Docs: man:tlshd(8)
    Main PID: 961 (tlshd)
       Tasks: 1
         CPU: 46ms
       CGroup: /system.slice/tlshd.service
           └─961 /usr/sbin/tlshd
    Aug 21 15:46:54 RX2530-M4-17-153 tlshd[961]: Built from ktls-utils 0.11-dev on Mar 21 2024 12:00:00
  5. Genere el PSK de TLS mediante el `nvme gen-tls-key`comando :

    1. # cat /etc/nvme/hostnqn

      Resultado de ejemplo
      nqn.2014-08.org.nvmexpress:uuid:e58eca24-faff-11ea-8fee-3a68dd3b5c5f
    2. # nvme gen-tls-key --hmac=1 --identity=1 --subsysnqn=nqn.1992-08.com.netapp:sn.1d59a6b2416b11ef9ed5d039ea50acb3:subsystem.sles15

      Resultado de ejemplo
      NVMeTLSkey-1:01:dNcby017axByCko8GivzOO9zGlgHDXJCN6KLzvYoA+NpT1uD:
  6. En el controlador ONTAP, agregue el PSK TLS al subsistema ONTAP:

    # nvme subsystem host add -vserver sles15_tls -subsystem sles15 -host-nqn nqn.2014-08.org.nvmexpress:uuid:ffa0c815-e28b-4bb1-8d4c-7c6d5e610bfc -tls-configured-psk NVMeTLSkey-1:01:dNcby017axByCko8GivzOO9zGlgHDXJCN6KLzvYoA+NpT1uD:
  7. Inserte el PSK TLS en el anillo de claves del núcleo del host:

    # nvme check-tls-key --identity=1 --subsysnqn=nqn.2014-08.org.nvmexpress:uuid:ffa0c815-e28b-4bb1-8d4c-7c6d5e610bf --keydata=NVMeTLSkey-1:01:dNcby017axByCko8GivzOO9zGlgHDXJCN6KLzvYoA+NpT1uD: --insert
    Resultado de ejemplo
    Inserted TLS key 22152a7e
    Nota El PSK se muestra como «NVMe1R01» porque utiliza «identidad v1» del algoritmo de protocolo de enlace TLS. Identity v1 es la única versión compatible con ONTAP.
  8. Compruebe que el PSK TLS se ha insertado correctamente:

    # cat /proc/keys | grep NVMe
    Resultado de ejemplo
    22152a7e I--Q---     1 perm 3b010000     0     0 psk       NVMe1R01 nqn.2014-08.org.nvmexpress:uuid:ffa0c815-e28b-4bb1-8d4c-7c6d5e610bfc nqn.1992-08.com.netapp:sn.1d59a6b2416b11ef9ed5d039ea50acb3:subsystem.sles15 UoP9dEfvuCUzzpS0DYxnshKDapZYmvA0/RJJ8JAqmAo=: 32
  9. Conéctese al subsistema ONTAP mediante el PSK TLS insertado:

    1. # nvme connect -t tcp -w 20.20.10.80 -a 20.20.10.14 -n nqn.1992-08.com.netapp:sn.1d59a6b2416b11ef9ed5d039ea50acb3:subsystem.sles15 --tls_key=0x22152a7e --tls

      Resultado de ejemplo
      connecting to device: nvme0
    2. # nvme list-subsys

      Resultado de ejemplo
      nvme-subsys0 - NQN=nqn.1992-08.com.netapp:sn.1d59a6b2416b11ef9ed5d039ea50acb3:subsystem.sles15
                     hostnqn=nqn.2014-08.org.nvmexpress:uuid:ffa0c815-e28b-4bb1-8d4c-7c6d5e610bfc
                     iopolicy=round-robin
      \
       +- nvme0 tcp traddr=20.20.10.14,trsvcid=4420,host_traddr=20.20.10.80,src_addr=20.20.10.80 live
  10. Agregue el destino y verifique la conexión TLS al subsistema ONTAP especificado:

    # nvme subsystem controller show -vserver sles15_tls -subsystem sles15 -instance

    Muestra el resultado de ejemplo
      (vserver nvme subsystem controller show)
                           Vserver Name: sles15_tls
                              Subsystem: sles15
                          Controller ID: 0040h
                      Logical Interface: sles15t_e1a_1
                                   Node: A900-17-174
                               Host NQN: nqn.2014-08.org.nvmexpress:uuid:ffa0c815-e28b-4bb1-8d4c-7c6d5e610bfc
                     Transport Protocol: nvme-tcp
            Initiator Transport Address: 20.20.10.80
                        Host Identifier: ffa0c815e28b4bb18d4c7c6d5e610bfc
                   Number of I/O Queues: 4
                       I/O Queue Depths: 128, 128, 128, 128
                      Admin Queue Depth: 32
                  Max I/O Size in Bytes: 1048576
              Keep-Alive Timeout (msec): 5000
                           Vserver UUID: 1d59a6b2-416b-11ef-9ed5-d039ea50acb3
                         Subsystem UUID: 9b81e3c5-5037-11ef-8a90-d039ea50ac83
                 Logical Interface UUID: 8185dcac-5035-11ef-8abb-d039ea50acb3
                  Header Digest Enabled: false
                    Data Digest Enabled: false
           Authentication Hash Function: -
    Authentication Diffie-Hellman Group: -
                    Authentication Mode: none
           Transport Service Identifier: 4420
                           TLS Key Type: configured
                       TLS PSK Identity: NVMe1R01 nqn.2014-08.org.nvmexpress:uuid:ffa0c815-e28b-4bb1-8d4c-7c6d5e610bfc nqn.1992-08.com.netapp:sn.1d59a6b2416b11ef9ed5d039ea50acb3:subsystem.sles15 UoP9dEfvuCUzzpS0DYxnshKDapZYmvA0/RJJ8JAqmAo=
                             TLS Cipher: TLS-AES-128-GCM-SHA256

Problemas conocidos

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