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 de NVMe-of para SUSE Linux Enterprise Server 15 SP3 con ONTAP

Colaboradores

NVMe over Fabrics o NVMe-oF (incluidos NVMe/FC y otros transportes) es compatible con SUSE Linux Enterprise Server 15 SP3 con ANA (acceso asimétrico al espacio de nombres). ANA es el equivalente de ALUA en entornos NVMe-oF y actualmente se implementa con NVMe Multipath en el kernel. Con este procedimiento, puede habilitar NVMe-oF con NVMe Multipath en el núcleo mediante ANA en SUSE Linux Enterprise Server 15 SP3 y ONTAP como destino.

Consulte la "Matriz de interoperabilidad de NetApp" para obtener información precisa sobre las configuraciones compatibles.

Funciones

  • SUSE Linux Enterprise Server 15 SP3 es compatible con NVMe/FC y otros transportes.

  • No existe compatibilidad alguna con NVMe-of. Por lo tanto, no existe compatibilidad con LUHU para NVMe-oF en SUSE Linux Enterprise Server 15 SP3. Puede confiar en el plugin de NetApp incluido en el paquete nvme-cli nativo para NVMe-oF. Esto debería admitir todos los transportes NVMe-oF.

  • Tanto el tráfico NVMe como SCSI pueden ejecutarse en el mismo host coexistente. De hecho, se espera que sea la configuración de host instalada habitualmente para los clientes. Por lo tanto, para SCSI, puede configurar dm-multipath Como es habitual para los LUN de SCSI, que dan como resultado dispositivos mpath, mientras que es posible que se utilice NVMe multivía para configurar los dispositivos multivía en el host.

Limitaciones conocidas

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

Habilite NVMe multivía en el kernel

La opción multivía NVMe en el núcleo ya está activada de forma predeterminada en los hosts de SUSE Linux Enterprise Server, como SUSE Linux Enterprise Server 15 SP3. Por lo tanto, aquí no se requiere ningún ajuste adicional. Consulte el "Matriz de interoperabilidad de NetApp" para obtener información precisa sobre las configuraciones compatibles.

Paquetes de iniciadores NVMe-of

Consulte la "Matriz de interoperabilidad de NetApp" para obtener información precisa sobre las configuraciones compatibles.

  1. Compruebe que tiene instalados los paquetes MU de núcleo y nvme-cli necesarios en el host MU de SUSE Linux Enterprise Server 15 SP3.

    Ejemplo:

    # uname -r
    5.3.18-59.5-default
    
    # rpm -qa|grep nvme-cli
    nvme-cli-1.13-3.3.1.x86_64

    El paquete UM nvme-cli anterior ahora incluye lo siguiente:

    • Secuencias de comandos de conexión automática NVMe/FC - necesarias para la conexión automática NVMe/FC-(re)cuando se restauran las rutas subyacentes a los espacios de nombres así como durante el reinicio del host:

      # rpm -ql nvme-cli-1.13-3.3.1.x86_64
      /etc/nvme
      /etc/nvme/hostid
      /etc/nvme/hostnqn
      /usr/lib/systemd/system/nvmefc-boot-connections.service
      /usr/lib/systemd/system/nvmefc-connect.target
      /usr/lib/systemd/system/nvmefc-connect@.service
      ...
    • Regla udev de ONTAP - Nueva regla udev para garantizar que se aplica el valor predeterminado de loadbalancer round-robin multivía de NVMe a todos los espacios de nombres ONTAP:

      # rpm -ql nvme-cli-1.13-3.3.1.x86_64
      /etc/nvme
      /etc/nvme/hostid
      /etc/nvme/hostnqn
      /usr/lib/systemd/system/nvmefc-boot-connections.service
      /usr/lib/systemd/system/nvmf-autoconnect.service
      /usr/lib/systemd/system/nvmf-connect.target
      /usr/lib/systemd/system/nvmf-connect@.service
      /usr/lib/udev/rules.d/70-nvmf-autoconnect.rules
      /usr/lib/udev/rules.d/71-nvmf-iopolicy-netapp.rules
      ...
      # cat /usr/lib/udev/rules.d/71-nvmf-iopolicy-netapp.rules
      # Enable round-robin for NetApp ONTAP and NetApp E-Series
      ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{model}=="NetApp ONTAP Controller", ATTR{iopolicy}="round-robin"
      ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{model}=="NetApp E-Series", ATTR{iopolicy}="round-robin"
    • Complemento de NetApp para dispositivos ONTAP: El complemento de NetApp existente ahora se ha modificado para gestionar también espacios de nombres ONTAP.

  2. Compruebe la cadena hostnqn en /etc/nvme/hostnqn En el host y asegúrese de que coincide correctamente con la cadena hostnqn para el subsistema correspondiente en la cabina ONTAP. Por ejemplo:

    # cat /etc/nvme/hostnqn
    nqn.2014-08.org.nvmexpress:uuid:3ca559e1-5588-4fc4-b7d6-5ccfb0b9f054
    ::> vserver nvme subsystem host show -vserver vs_fcnvme_145
    Vserver     Subsystem      Host NQN
    -------     ---------      ----------------------------------
    vs_nvme_145 nvme_145_1 nqn.2014-08.org.nvmexpress:uuid:c7b07b16-a22e-41a6-a1fd-cf8262c8713f
                nvme_145_2 nqn.2014-08.org.nvmexpress:uuid:c7b07b16-a22e-41a6-a1fd-cf8262c8713f
                nvme_145_3 nqn.2014-08.org.nvmexpress:uuid:c7b07b16-a22e-41a6-a1fd-cf8262c8713f
                nvme_145_4 nqn.2014-08.org.nvmexpress:uuid:c7b07b16-a22e-41a6-a1fd-cf8262c8713f
                nvme_145_5 nqn.2014-08.org.nvmexpress:uuid:c7b07b16-a22e-41a6-a1fd-cf8262c8713f
    5 entries were displayed.

    Continúe con los pasos a continuación, según el adaptador de FC que se esté utilizando en el host.

Configure NVMe/FC

Broadcom/Emulex

  1. Compruebe que tiene las versiones de firmware y adaptador recomendadas. Por ejemplo:

    # cat /sys/class/scsi_host/host*/modelname
    LPe32002-M2
    LPe32002-M2
    # cat /sys/class/scsi_host/host*/modeldesc
    Emulex LightPulse LPe32002-M2 2-Port 32Gb Fibre Channel Adapter
    Emulex LightPulse LPe32002-M2 2-Port 32Gb Fibre Channel Adapter
    # cat /sys/class/scsi_host/host*/fwrev
    12.8.340.8, sli-4:2:c
    12.8.840.8, sli-4:2:c
    • Los controladores lpfc más nuevos (tanto la bandeja de entrada como la bandeja de salida) ya tienen el valor predeterminado lpfc_enable_fc4_TYPE establecido en 3, por lo tanto, ya no es necesario establecer este valor explícitamente en el /etc/modprobe.d/lpfc.conf, y recrear el initrd. La lpfc nvme la compatibilidad ya está habilitada de forma predeterminada:

      # cat /sys/module/lpfc/parameters/lpfc_enable_fc4_type
      3
    • El controlador lpfc de la bandeja de entrada nativa existente ya es más reciente y compatible con NVMe/FC. Por lo tanto, no es necesario instalar el controlador lpfc oob.

      # cat /sys/module/lpfc/version
      0:12.8.0.10
  2. Compruebe que los puertos del iniciador estén en funcionamiento:

    # cat /sys/class/fc_host/host*/port_name
    0x100000109b579d5e
    0x100000109b579d5f
    # cat /sys/class/fc_host/host*/port_state
    Online
    Online
  3. Verifique que los puertos de iniciador NVMe/FC estén habilitados, pueda ver los puertos de destino y todos los puertos estén activos y funcionando. + En el ejemplo siguiente, solo hay un puerto de iniciador habilitado y conectado con dos LIF de destino:

    # cat /sys/class/scsi_host/host*/nvme_info
    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
  4. Reinicie el host.

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

ONTAP informa de UN MDT (Tamaño de transferencia MAX Data) de 8 en los datos de identificación del controlador, lo que significa que el tamaño máximo de la solicitud de E/S debe ser de hasta 1 MB. Sin embargo, para emitir solicitudes de I/o de tamaño 1 MB para el host NVMe/FC de Broadcom, el parámetro lpfc lpfc_sg_seg_cnt también se debe hacer una bontap de hasta 256 desde el valor predeterminado de 64. Utilice las siguientes instrucciones para ello:

  1. Agregue el valor 256 en las respectivas modprobe lpfc.conf archivo:

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

  3. Después de reiniciar, compruebe que se ha aplicado la configuración anterior comprobando el valor sysfs correspondiente:

    # cat /sys/module/lpfc/parameters/lpfc_sg_seg_cnt
    256

Ahora el host NVMe/FC de Broadcom debe enviar solicitudes de I/o de 1 MB en los dispositivos de espacio de nombres de ONTAP.

Marvell/QLogic

El controlador de la bandeja de entrada nativa qla2xxx incluido en el núcleo más reciente de SUSE Linux Enterprise Server 15 SP3 MU tiene las últimas correcciones anteriores. Estas correcciones son esenciales para la compatibilidad con ONTAP.

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

    # cat /sys/class/fc_host/host*/symbolic_name
    QLE2742 FW:v9.06.02 DVR:v10.02.00.106-k
    QLE2742 FW:v9.06.02 DVR:v10.02.00.106-k
  2. Verificación ql2xnvmeenable Is set que permite que el adaptador Marvell funcione como iniciador NVMe/FC:

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

Configure NVMe/TCP

A diferencia de NVMe/FC, NVMe/TCP no tiene una funcionalidad de conexión automática. Esto manifiesta dos limitaciones principales en el host NVMe/TCP de Linux:

  • No hay reconexión automática después de que las rutas se restablezcan NVMe/TCP no puede volver a conectarse automáticamente a una ruta que se reinstala más allá de la predeterminada ctrl-loss-tmo temporizador de 10 minutos después de una ruta hacia abajo.

  • Sin conexión automática durante el arranque del host NVMe/TCP no se puede conectar automáticamente durante el arranque del host también.

Es necesario configurar el periodo de reintento para eventos de conmutación por error en al menos 30 minutos para evitar los tiempos de espera. Puede aumentar el período de reintento aumentando el valor del temporizador ctrl_loss_tmo. A continuación se muestran los detalles:

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

    # nvme discover -t tcp -w 192.168.1.8 -a 192.168.1.51
    Discovery Log Number of Records 10, Generation counter 119
    =====Discovery Log Entry 0======
    trtype: tcp
    adrfam: ipv4
    subtype: nvme subsystem
    treq: not specified
    portid: 0
    trsvcid: 4420
    subnqn: nqn.1992-08.com.netapp:sn.56e362e9bb4f11ebbaded039ea165abc:subsystem.nvme_118_tcp_1
    traddr: 192.168.2.56
    sectype: none
    =====Discovery Log Entry 1======
    trtype: tcp
    adrfam: ipv4
    subtype: nvme subsystem
    treq: not specified
    portid: 1
    trsvcid: 4420
    subnqn: nqn.1992-08.com.netapp:sn.56e362e9bb4f11ebbaded039ea165abc:subsystem.nvme_118_tcp_1
    traddr: 192.168.1.51
    sectype: none
    =====Discovery Log Entry 2======
    trtype: tcp
    adrfam: ipv4
    subtype: nvme subsystem
    treq: not specified
    portid: 0
    trsvcid: 4420
    subnqn: nqn.1992-08.com.netapp:sn.56e362e9bb4f11ebbaded039ea165abc:subsystem.nvme_118_tcp_2
    traddr: 192.168.2.56
    sectype: none
    ...
  2. Compruebe que otros combinados LIF iniciador-objetivo NVMe/TCP pueden recuperar correctamente los datos de la página de registro de detección. Por ejemplo:

    # nvme discover -t tcp -w 192.168.1.8 -a 192.168.1.52
    # nvme discover -t tcp -w 192.168.2.9 -a 192.168.2.56
    # nvme discover -t tcp -w 192.168.2.9 -a 192.168.2.57
  3. Ejecución nvme connect-all Command entre todas las LIF de iniciador NVMe/TCP admitidas en los nodos. Asegúrese de establecer un valor más largo ctrl_loss_tmo período de reintento del temporizador (por ejemplo, 30 minutos, que se puede establecer a través de -l 1800) durante la conexión-todo para que vuelva a intentarlo durante un período más largo en caso de una pérdida de ruta. Por ejemplo:

    # nvme connect-all -t tcp -w 192.168.1.8 -a 192.168.1.51 -l 1800
    # nvme connect-all -t tcp -w 192.168.1.8 -a 192.168.1.52 -l 1800
    # nvme connect-all -t tcp -w 192.168.2.9 -a 192.168.2.56 -l 1800
    # nvme connect-all -t tcp -w 192.168.2.9 -a 192.168.2.57 -l 1800

Valide NVMe-of

  1. Compruebe que el acceso multivía de NVMe en el kernel esté habilitado realmente mediante la comprobación:

    # cat /sys/module/nvme_core/parameters/multipath
    Y
  2. Compruebe que la configuración de NVMe-of adecuada (como, model establezca en NetApp ONTAP Controller y.. load balancing iopolicy establezca en round-robin) Para los respectivos espacios de nombres ONTAP se reflejan correctamente en el host:

    # cat /sys/class/nvme-subsystem/nvme-subsys*/model
    NetApp ONTAP Controller
    NetApp ONTAP Controller
    
    # cat /sys/class/nvme-subsystem/nvme-subsys*/iopolicy
    round-robin
    round-robin
  3. Compruebe que los espacios de nombres de ONTAP se reflejan correctamente en el host. Por ejemplo:

    # nvme list
    Node           SN                    Model                   Namespace
    ------------   --------------------- ---------------------------------
    /dev/nvme0n1   81CZ5BQuUNfGAAAAAAAB  NetApp ONTAP Controller   1
    
    Usage                Format         FW Rev
    -------------------  -----------    --------
    85.90 GB / 85.90 GB  4 KiB + 0 B    FFFFFFFF

    Otro ejemplo:

    # nvme list
    Node           SN                    Model                   Namespace
    ------------   --------------------- ---------------------------------
    /dev/nvme0n1   81CYrBQuTHQFAAAAAAAC  NetApp ONTAP Controller   1
    
    Usage                Format         FW Rev
    -------------------  -----------    --------
    85.90 GB / 85.90 GB  4 KiB + 0 B    FFFFFFFF
  4. Compruebe que el estado de la controladora de cada ruta sea activo y que tenga el estado de ANA adecuado. Por ejemplo:

    # 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 non-optimized
    +- nvme3 fc traddr=nn-0x208100a098dfdd91:pn-0x208500a098dfdd91 host_traddr=nn-0x200000109b579d5e:pn-0x100000109b579d5e live non-optimized
    +- nvme4 fc traddr=nn-0x208100a098dfdd91:pn-0x208400a098dfdd91 host_traddr=nn-0x200000109b579d5e:pn-0x100000109b579d5e live optimized
    +- nvme6 fc traddr=nn-0x208100a098dfdd91:pn-0x208300a098dfdd91 host_traddr=nn-0x200000109b579d5f:pn-0x100000109b579d5f live optimized

    Otro ejemplo:

    #nvme list-subsys /dev/nvme0n1
    nvme-subsys0 - NQN=nqn.1992-08.com.netapp:sn.37ba7d9cbfba11eba35dd039ea165514:subsystem.nvme_114_tcp_1
    \
    +- nvme0 tcp traddr=192.168.2.36 trsvcid=4420 host_traddr=192.168.1.4 live optimized
    +- nvme1 tcp traddr=192.168.1.31 trsvcid=4420 host_traddr=192.168.1.4 live optimized
    +- nvme10 tcp traddr=192.168.2.37 trsvcid=4420 host_traddr=192.168.1.4 live non-optimized
    +- nvme11 tcp traddr=192.168.1.32 trsvcid=4420 host_traddr=192.168.1.4 live non-optimized
    +- nvme20 tcp traddr=192.168.2.36 trsvcid=4420 host_traddr=192.168.2.5 live optimized
    +- nvme21 tcp traddr=192.168.1.31 trsvcid=4420 host_traddr=192.168.2.5 live optimized
    +- nvme30 tcp traddr=192.168.2.37 trsvcid=4420 host_traddr=192.168.2.5 live non-optimized
    +- nvme31 tcp traddr=192.168.1.32 trsvcid=4420 host_traddr=192.168.2.5 live non-optimized
  5. Confirmar que el complemento de NetApp muestra los valores adecuados para cada dispositivo de espacio de nombres ONTAP. Por ejemplo:

    # nvme netapp ontapdevices -o column
    Device       Vserver          Namespace Path
    ---------    -------          --------------------------------------------------
    /dev/nvme1n1 vserver_fcnvme_145 /vol/fcnvme_145_vol_1_0_0/fcnvme_145_ns
    
    NSID  UUID                                   Size
    ----  ------------------------------         ------
    1      23766b68-e261-444e-b378-2e84dbe0e5e1  85.90GB
    
    
    # nvme netapp ontapdevices -o json
    {
    "ONTAPdevices" : [
         {
           "Device" : "/dev/nvme1n1",
           "Vserver" : "vserver_fcnvme_145",
           "Namespace_Path" : "/vol/fcnvme_145_vol_1_0_0/fcnvme_145_ns",
           "NSID" : 1,
           "UUID" : "23766b68-e261-444e-b378-2e84dbe0e5e1",
           "Size" : "85.90GB",
           "LBA_Data_Size" : 4096,
           "Namespace_Size" : 20971520
         }
      ]
    }

    Otro ejemplo:

    # nvme netapp ontapdevices -o column
    Device       Vserver          Namespace Path
    ---------    -------          --------------------------------------------------
    /dev/nvme0n1 vs_tcp_114       /vol/tcpnvme_114_1_0_1/tcpnvme_114_ns
    
    NSID  UUID                                   Size
    ----  ------------------------------         ------
    1      a6aee036-e12f-4b07-8e79-4d38a9165686  85.90GB
    
    
    # nvme netapp ontapdevices -o json
    {
         "ONTAPdevices" : [
         {
              "Device" : "/dev/nvme0n1",
               "Vserver" : "vs_tcp_114",
              "Namespace_Path" : "/vol/tcpnvme_114_1_0_1/tcpnvme_114_ns",
              "NSID" : 1,
              "UUID" : "a6aee036-e12f-4b07-8e79-4d38a9165686",
              "Size" : "85.90GB",
              "LBA_Data_Size" : 4096,
              "Namespace_Size" : 20971520
           }
      ]
    
    }

Problemas conocidos

No hay problemas conocidos.