

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Aprovisionamiento de NVMe/TCP para Linux
<a name="provision-nvme-linux"></a>

FSx para ONTAP es compatible con el protocolo de almacenamiento en bloques de memoria no volátil y rápida a través de TCP (NVMe/TCP). Con NVMe/TCP, se utiliza la CLI de ONTAP para aprovisionar espacios de nombres y subsistemas y, a continuación, asignar los espacios de nombres a los subsistemas, de forma similar a como se aprovisionan los LUN y se asignan a los grupos de iniciadores (igroups) para iSCSI. El protocolo NVMe/TCP está disponible en los sistemas de archivos de segunda generación que tienen 6 o menos [pares de alta disponibilidad (HA)](HA-pairs.md).

**nota**  
Los sistemas de archivos de FSx para ONTAP usan los puntos de conexión iSCSI de una SVM para los protocolos de almacenamiento en bloques iSCSI y NVMe/TCP.

El proceso de configuración de NVMe/TCP en Amazon FSx para NetApp ONTAP consta de tres pasos principales, que se describen en los siguientes procedimientos:

1. Instale y configure el cliente NVMe en el host de Linux.

1. Configure NVMe en la SVM del sistema de archivos.
   + Cree un espacio de nombres NVMe.
   + Cree un subsistema NVMe.
   + Asigne el espacio de nombres al subsistema.
   + Agregue el nombre no calificado (NQN) del cliente al subsistema.

1. Monte un dispositivo NVMe en el cliente de Linux.

## Antes de empezar
<a name="nvme-tcp-linux-byb"></a>

Antes de iniciar el proceso de configuración del sistema de archivos para NVMe/TCP, debe completar los siguientes elementos.
+ Cree el sistema de archivos de FSx para ONTAP. Para obtener más información, consulte [Creación de sistemas de archivos](creating-file-systems.md).
+ Cree una instancia de EC2 que ejecute Red Hat Enterprise Linux (RHEL) 9.3 en la misma VPC que el sistema de archivos. Este es el host de Linux en el que configurará NVMe y accederá a los datos de sus archivos mediante NVMe/TCP para Linux.

  Más allá del alcance de estos procedimientos, si el host está ubicado en otra VPC, puede usar el emparejamiento de VPC o AWS Transit Gateway para conceder a otras VPC el acceso a los puntos de conexión iSCSI del volumen. Para obtener más información, consulte [Acceso a los datos desde fuera de la VPC de implementación](supported-fsx-clients.md#access-from-outside-deployment-vpc).
+ Configure los grupos de seguridad de VPC del host Linux para permitir el tráfico entrante y saliente, como se describe en [Control de acceso al sistema de archivos con Amazon VPC](limit-access-security-groups.md).
+ Obtenga las credenciales del usuario de ONTAP con los privilegios de `fsxadmin` que usará para acceder a la CLI de ONTAP. Para obtener más información, consulte [Usuarios y roles de ONTAP](roles-and-users.md).
+ El host de Linux que configurará para NVMe y usará para acceder al sistema de archivos de FSx para ONTAP están ubicados en la misma VPC y en la Cuenta de AWS.
+ Recomendamos que la instancia de EC2 esté en la misma zona de disponibilidad que la subred preferida del sistema de archivo.

Si la instancia de EC2 ejecuta una AMI de Linux diferente a la de RHEL 9.3, es posible que algunas de las utilidades empleadas en estos procedimientos y ejemplos ya estén instaladas y que use comandos diferentes para instalar los paquetes necesarios. Además de instalar los paquetes, los comandos utilizados en esta sección son válidos para otras AMI Linux de EC2.

**Topics**
+ [Antes de empezar](#nvme-tcp-linux-byb)
+ [Instalar y configurar NVMe en el host de Linux](#configure-nvme-on-rhel93)
+ [Configuración de NVMe en el sistema de archivos de FSx para ONTAP](#configure-nvme-on-svm)
+ [Monte un dispositivo NVMe en el cliente de Linux.](#add-nvme-on-rhel93-host)

## Instalar y configurar NVMe en el host de Linux
<a name="configure-nvme-on-rhel93"></a>

**Cómo instalar el cliente de NVMe**

1. Conexión a la instancia de Linux mediante un cliente SSH. Para obtener más información, consulte [Conéctese a la instancia de Linux desde Linux o macOS mediante SSH](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-linux-inst-ssh.html).

1. Instale `nvme-cli` con el siguiente comando:

   ```
   ~$ sudo yum install -y nvme-cli
   ```

1. Cargue el módulo `nvme-tcp` en el host:

   ```
   $ sudo modprobe nvme-tcp
   ```

1. Obtenga el nombre no calificado (NQN) de NVMe del host Linux mediante el siguiente comando:

   ```
   $ cat /etc/nvme/hostnqn
   nqn.2014-08.org.nvmexpress:uuid:9ed5b327-b9fc-4cf5-97b3-1b5d986345d1
   ```

   Registre la respuesta para su uso en un paso posterior.

## Configuración de NVMe en el sistema de archivos de FSx para ONTAP
<a name="configure-nvme-on-svm"></a>

**Cómo configurar NVMe en el sistema de archivos**

Conéctese a la CLI de ONTAP de NetApp en el sistema de archivos de FSx para ONTAP en el que planea crear los dispositivos NVMe.

1. Para acceder a la CLI de ONTAP, establezca una sesión SSH en el puerto de administración del sistema de archivos Amazon FSx para NetApp ONTAP o SVM ejecutando el siguiente comando. Reemplace `management_endpoint_ip` con la dirección IP del puerto de gestión del sistema de archivos.

   ```
   [~]$ ssh fsxadmin@management_endpoint_ip
   ```

   Para obtener más información, consulte [Administración de sistemas de archivos con la CLI de ONTAP](managing-resources-ontap-apps.md#fsxadmin-ontap-cli). 

1. Cree un volumen nuevo en la SVM que esté usando para acceder a la interfaz de NVMe.

   ```
   ::> vol create -vserver fsx -volume nvme_vol1 -aggregate aggr1 -size 1t
        [Job 597] Job succeeded: Successful
   ```

1. Cree el espacio de nombres NVMe `ns_1` mediante el comando [https://docs.netapp.com/us-en/ontap-cli-9141/vserver-nvme-namespace-create.html](https://docs.netapp.com/us-en/ontap-cli-9141/vserver-nvme-namespace-create.html) de la CLI de ONTAP de NetApp. Un espacio de nombres se asigna a los iniciadores (clientes) y controla qué iniciadores (clientes) tienen acceso a los dispositivos NVMe.

   ```
   ::> vserver nvme namespace create -vserver fsx -path /vol/nvme_vol1/ns_1 -size 100g -ostype linux
   Created a namespace of size 100GB (107374182400).
   ```

1. Cree el subsistema de NVMe mediante el comando [https://docs.netapp.com/us-en/ontap-cli-9141/vserver-nvme-subsystem-create.html](https://docs.netapp.com/us-en/ontap-cli-9141/vserver-nvme-subsystem-create.html) de la CLI de ONTAP de NetApp.

   ```
   ~$ vserver nvme subsystem create -vserver fsx -subsystem sub_1 -ostype linux
   ```

1. Asigne el espacio de nombres al subsistema que acaba de crear.

   ```
   ::> vserver nvme subsystem map add -vserver fsx -subsystem sub_1 -path /vol/nvme_vol1/ns_1
   ```

1. Agregue el cliente al subsistema mediante el NQN que recuperó anteriormente.

   ```
   ::> vserver nvme subsystem host add -subsystem sub_1 -host-nqn nqn.2014-08.org.nvmexpress:uuid:ec21b083-1860-d690-1f29-44528e4f4e0e -vserver fsx
   ```

   Si desea que los dispositivos asignados a este subsistema estén disponibles para varios hosts, puede especificar varios nombres de iniciadores en una lista separados por comas. Para obtener más información, consulte [vserver nvme subsystem host add](https://docs.netapp.com/us-en/ontap-cli-9141/vserver-nvme-subsystem-host-add.html) en los documentos de ONTAP de NetApp.

1. Confirme que el espacio de nombres existe con el comando [https://docs.netapp.com/us-en/ontap-cli-9141/vserver-nvme-namespace-show.html](https://docs.netapp.com/us-en/ontap-cli-9141/vserver-nvme-namespace-show.html):

   ```
   ::> vserver nvme namespace show -vserver fsx -instance
   Vserver Name: fsx
               Namespace Path: /vol/nvme_vol1/ns_1
                         Size: 100GB
                    Size Used: 90.59GB
                      OS Type: linux
                      Comment: 
                   Block Size: 4KB
                        State: online
            Space Reservation: false
   Space Reservations Honored: false
                 Is Read Only: false
                Creation Time: 5/20/2024 17:03:08
               Namespace UUID: c51793c0-8840-4a77-903a-c869186e74e3
                     Vdisk ID: 80d42c6f00000000187cca9
         Restore Inaccessible: false
      Inconsistent Filesystem: false
          Inconsistent Blocks: false
                       NVFail: false
   Node Hosting the Namespace: FsxId062e9bb6e05143fcb-01
                  Volume Name: nvme_vol1
                   Qtree Name: 
             Mapped Subsystem: sub_1
               Subsystem UUID: db526ec7-16ca-11ef-a612-d320bd5b74a9               
                 Namespace ID: 00000001h
                 ANA Group ID: 00000001h
                 Vserver UUID: 656d410a-1460-11ef-a612-d320bd5b74a9
                   Vserver ID: 3
                  Volume MSID: 2161388655
                  Volume DSID: 1029
                    Aggregate: aggr1
               Aggregate UUID: cfa8e6ee-145f-11ef-a612-d320bd5b74a9
    Namespace Container State: online
           Autodelete Enabled: false
             Application UUID: -
                  Application: -
     Has Metadata Provisioned: true
     
   1 entries were displayed.
   ```

1. Use el comando [https://docs.netapp.com/us-en/ontap-cli-9141/network-interface-show.html](https://docs.netapp.com/us-en/ontap-cli-9141/network-interface-show.html) para recuperar las direcciones de las interfaces de almacenamiento en bloques de la SVM en la que creó los dispositivos NVMe.

   ```
   ::> network interface show -vserver svm_name -data-protocol nvme-tcp
               Logical               Status     Network            Current                    Current Is 
   Vserver     Interface             Admin/Oper Address/Mask       Node                       Port    Home
   ----------- ----------            ---------- ------------------ -------------              ------- ----
   svm_name
               iscsi_1               up/up      172.31.16.19/20    FSxId0123456789abcdef8-01  e0e     true
               iscsi_2               up/up      172.31.26.134/20   FSxId0123456789abcdef8-02  e0e     true
   2 entries were displayed.
   ```
**nota**  
La interfaz lógica (LIF) `iscsi_1` se usa tanto para iSCSI como para NVMe/TCP.

   En este ejemplo, la dirección IP de iscsi\$11 es 172.31.16.19 y iscsi\$12 es 172.31.26.134.

## Monte un dispositivo NVMe en el cliente de Linux.
<a name="add-nvme-on-rhel93-host"></a>

El proceso de montaje del dispositivo NVMe en el cliente de Linux consta de tres pasos:

1. Descubrimiento de los nodos NVMe

1. Particionar el dispositivo NVMe

1. Montaje del dispositivo NVMe en el cliente

Analizamos los pasos en los siguientes procedimientos.

**Cómo descubrir los nodos de NVMe de destino**

1. En el cliente Linux, use el siguiente comando para detectar los nodos de NVMe de destino. Reemplace *`iscsi_1_IP`* por la dirección IP de `iscsi_1` y *`client_IP`* la dirección IP del cliente.
**nota**  
Las LIF `iscsi_1` y `iscsi_2` se usan para el almacenamiento iSCSI y NVMe.

   ```
   ~$ sudo nvme discover -t tcp -w client_IP -a iscsi_1_IP
   ```

   ```
   Discovery Log Number of Records 4, Generation counter 11
   =====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.656d410a146011efa612d320bd5b74a9:discovery
   traddr:  172.31.26.134
   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.656d410a146011efa612d320bd5b74a9:discovery
   traddr:  172.31.16.19
   eflags:  explicit discovery connections, duplicate discovery information
   sectype: none
   ```

1. (Opcional) Para lograr un rendimiento superior al del cliente único de Amazon EC2, máximo de 5 GBps (\$1625 MBps) al dispositivo NVMe del archivo, siga los procedimientos descritos en [Ancho de banda de la red de instancias de Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-network-bandwidth.html) en la guía del usuario de Amazon Elastic Compute Cloud para instancias de Linux a fin de establecer sesiones adicionales.

1. Inicie sesión en los iniciadores de destino con un tiempo de espera de pérdida del controlador de al menos 1800 segundos. De nuevo, use la dirección IP de `iscsi_1` para *`iscsi_1_IP`* y la dirección IP del cliente para *`client_IP`*. Los dispositivos NVMe se presentan como discos disponibles.

   ```
   ~$ sudo nvme connect-all -t tcp -w client_IP -a iscsi_1 -l 1800
   ```

1. Use el siguiente comando para comprobar que la pila NVMe ha identificado y fusionado las múltiples sesiones y que se han configurado las rutas múltiples. Si la configuración fue correcta, el comando devuelve `Y`.

   ```
   ~$ cat /sys/module/nvme_core/parameters/multipath
   Y
   ```

1. Use los siguientes comandos para comprobar que la configuración NVMe-oF `model` esté establecida en `NetApp ONTAP Controller` y el equilibrio de carga `iopolicy` esté establecido en `round-robin` en los respectivos espacios de nombres ONTAP para distribuir la E/S en todas las rutas disponibles

   ```
   ~$ cat /sys/class/nvme-subsystem/nvme-subsys*/model
   Amazon Elastic Block Store              
   NetApp ONTAP Controller
   ~$ cat /sys/class/nvme-subsystem/nvme-subsys*/iopolicy
   numa
   round-robin
   ```

1. Use el siguiente comando para comprobar que los espacios de nombres se han creado y que se detectan correctamente en el host:

   ```
   ~$ sudo nvme list
   Node                  Generic               SN                   Model                                    Namespace  Usage                      Format           FW Rev  
   --------------------- --------------------- -------------------- ---------------------------------------- ---------- -------------------------- ---------------- --------
   /dev/nvme0n1          /dev/ng0n1            vol05955547c003f0580 Amazon Elastic Block Store               0x1         25.77  GB /  25.77  GB    512   B +  0 B   1.0     
   /dev/nvme2n1          /dev/ng2n1            lWB12JWY/XLKAAAAAAAC NetApp ONTAP Controller                  0x1        107.37  GB / 107.37  GB      4 KiB +  0 B   FFFFFFFF
   ```

   El nuevo dispositivo de la salida es `/dev/nvme2n1`. Este esquema de nombres puede variar en función de la instalación de Linux.

1. Compruebe que el estado del controlador de cada ruta esté activo y que tenga el estado correcto de múltiples rutas de acceso asimétrico al espacio de nombres (ANA):

   ```
   ~$ nvme list-subsys /dev/nvme2n1
   nvme-subsys2 - NQN=nqn.1992-08.com.netapp:sn.656d410a146011efa612d320bd5b74a9:subsystem.rhel
                  hostnqn=nqn.2014-08.org.nvmexpress:uuid:ec2a70bf-3ab2-6cb0-f997-8730057ceb24
                  iopolicy=round-robin
   \
    +- nvme2 tcp traddr=172.31.26.134,trsvcid=4420,host_traddr=172.31.25.143,src_addr=172.31.25.143 live non-optimized
    +- nvme3 tcp traddr=172.31.16.19,trsvcid=4420,host_traddr=172.31.25.143,src_addr=172.31.25.143 live optimized
   ```

   En este ejemplo, la pila NVMe ha descubierto automáticamente la LIF alternativa del sistema de archivos, `iscsi_2`, 172.31.26.134.

1. Compruebe que el complemento NetApp muestre los valores correctos para cada dispositivo de espacio de nombres de ONTAP:

   ```
   ~$ sudo nvme netapp ontapdevices -o column
   Device           Vserver                   Namespace Path                                     NSID UUID                                   Size     
   ---------------- ------------------------- -------------------------------------------------- ---- -------------------------------------- ---------
   /dev/nvme2n1     fsx                       /vol/nvme_vol1/ns_1                                1    0441c609-3db1-4b0b-aa83-790d0d448ece   107.37GB
   ```

**Cómo particionar el dispositivo**

1. Use el siguiente comando para verificar que la ruta al nombre de dispositivo `nvme2n1` está presente.

   ```
   ~$ ls /dev/mapper/nvme2n1
   /dev/nvme2n1
   ```

1. Particione el disco usando `fdisk`. Ingresará un mensaje interactivo. Ingrese las opciones en el orden que se muestra. Puede crear varias particiones utilizando un valor menor que el último sector (`20971519` en este ejemplo).
**nota**  
El valor `Last sector` variará según el tamaño del dispositivo NVMe (100 GiB en este ejemplo).

   ```
   ~$ sudo fdisk /dev/mapper/nvme2n1
   ```

   Se inicia el mensaje interactivo `fsdisk`.

   ```
   Welcome to fdisk (util-linux 2.37.4). 
   Changes will remain in memory only, until you decide to write them. 
   Be careful before using the write command. 
   
   Device does not contain a recognized partition table. 
   Created a new DOS disklabel with disk identifier 0x66595cb0. 
   
   Command (m for help): n
   Partition type 
      p primary (0 primary, 0 extended, 4 free) 
      e extended (container for logical partitions) 
   Select (default p): p
   Partition number (1-4, default 1): 1 
   First sector (256-26214399, default 256): 
   Last sector, +sectors or +size{K,M,G,T,P} (256-26214399, default 26214399): 20971519
                                       
   Created a new partition 1 of type 'Linux' and of size 100 GiB.
   Command (m for help): w
   The partition table has been altered.
   Calling ioctl() to re-read partition table. 
   Syncing disks.
   ```

   Tras ingresar `w`, la nueva partición `/dev/nvme2n1` estará disponible. El *partition\$1name* tiene el formato *<device\$1name>**<partition\$1number>*. `1` se usó como el número de partición en el comando `fdisk` en el paso anterior.

1. Cree su sistema de archivos con `/dev/nvme2n1` como ruta.

   ```
   ~$ sudo mkfs.ext4 /dev/nvme2n1
   ```

   El sistema responde con lo siguiente:

   ```
   mke2fs 1.46.5 (30-Dec-2021)
   Found a dos partition table in /dev/nvme2n1
   Proceed anyway? (y,N) y
   Creating filesystem with 26214400 4k blocks and 6553600 inodes
   Filesystem UUID: 372fb2fd-ae0e-4e74-ac06-3eb3eabd55fb
   Superblock backups stored on blocks: 
       32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
       4096000, 7962624, 11239424, 20480000, 23887872
   
   Allocating group tables: done                            
   Writing inode tables: done                            
   Creating journal (131072 blocks): done
   Writing superblocks and filesystem accounting information: done
   ```

**Cómo montar el dispositivo NVMe en el cliente de Linux**

1. Cree un directorio *directory\$1path* como punto de montaje para el sistema de archivos en la instancia de Linux.

   ```
   ~$ sudo mkdir /directory_path/mount_point
   ```

1. Monte el sistema de archivos utilizando el siguiente comando.

   ```
   ~$ sudo mount -t ext4 /dev/nvme2n1 /directory_path/mount_point
   ```

1. (Opcional) Si desea asignar a un usuario específico la propiedad del directorio de montaje, reemplace *`username`* con el nombre de usuario del propietario.

   ```
   ~$ sudo chown username:username /directory_path/mount_point
   ```

1. (Opcional) Compruebe que puede leer y escribir datos en el sistema de archivos.

   ```
   ~$ echo "Hello world!" > /directory_path/mount_point/HelloWorld.txt
   ~$ cat directory_path/HelloWorld.txt
   Hello world!
   ```

   Ha creado y montado correctamente un dispositivo NVMe en el cliente Linux.