

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Provisioning NVMe/TCP per Linux
<a name="provision-nvme-linux"></a>

FSx for ONTAP supporta il protocollo di storage a Non-Volatile blocchi Memory Express over TCP (NVMe/TCP). Con NVMe/TCP, si utilizza la ONTAP CLI per fornire namespace e sottosistemi e quindi mappare i namespace ai sottosistemi, in modo analogo al modo in cui le LUN vengono fornite e mappate ai gruppi di iniziatori (igroup) per iSCSI. [Il NVMe/TCP protocollo è disponibile su file system di seconda generazione con 6 o meno coppie ad alta disponibilità (HA).](HA-pairs.md)

**Nota**  
I file system FSx for ONTAP utilizzano gli endpoint iSCSI di un SVM per i protocolli di storage iSCSI e a blocchi. NVMe/TCP 

Il processo di configurazione NVMe/TCP su Amazon FSx NetApp for ONTAP prevede tre passaggi principali, descritti nelle seguenti procedure:

1. Installa e configura il client NVMe sull'host Linux.

1. Configura NVMe sulla SVM del file system.
   + Crea uno spazio dei nomi NVMe.
   + Crea un sottosistema NVMe.
   + Mappa lo spazio dei nomi sul sottosistema.
   + Aggiungere il client NQN al sottosistema.

1. Monta un dispositivo NVMe sul client Linux.

## Prima di iniziare
<a name="nvme-tcp-linux-byb"></a>

Prima di iniziare il processo di configurazione del file system per NVMe/TCP, è necessario completare i seguenti elementi.
+ Crea un file system FSx for ONTAP. Per ulteriori informazioni, consulta [Creazione dei file system](creating-file-systems.md).
+ Crea un'istanza EC2 che esegue Red Hat Enterprise Linux (RHEL) 9.3 nello stesso VPC del file system. Questo è l'host Linux su cui configurerai NVMe e accederai ai dati dei file utilizzando for Linux. NVMe/TCP 

  Oltre all'ambito di queste procedure, se l'host si trova in un altro VPC, è possibile utilizzare il peering VPC o concedere AWS Transit Gateway ad altri VPC l'accesso agli endpoint iSCSI del volume. Per ulteriori informazioni, consulta [Accesso ai dati dall'esterno del VPC di implementazione](supported-fsx-clients.md#access-from-outside-deployment-vpc).
+ Configurare i gruppi di sicurezza VPC dell'host Linux per consentire il traffico in entrata e in uscita come descritto in. [Controllo degli accessi ai file system con Amazon VPC](limit-access-security-groups.md)
+ Ottieni le credenziali per l'ONTAPutente con `fsxadmin` privilegi che utilizzerai per accedere alla CLIONTAP. Per ulteriori informazioni, consulta [CONTAP ruoli e utenti](roles-and-users.md).
+ L'host Linux che configurerai per NVMe e utilizzerai per accedere al file system FSx for ONTAP si trova nello stesso VPC e. Account AWS
+ Consigliamo che l'istanza EC2 si trovi nella stessa zona di disponibilità della sottorete preferita del file system.

Se l'istanza EC2 esegue un'AMI Linux diversa da RHEL 9.3, alcune delle utilità utilizzate in queste procedure ed esempi potrebbero essere già installate e potresti utilizzare comandi diversi per installare i pacchetti richiesti. Oltre all'installazione dei pacchetti, i comandi utilizzati in questa sezione sono validi per altre AMI Linux EC2.

**Topics**
+ [Prima di iniziare](#nvme-tcp-linux-byb)
+ [Installa e configura NVMe sull'host Linux](#configure-nvme-on-rhel93)
+ [Configurazione di NVMe sul file system FSx for ONTAP](#configure-nvme-on-svm)
+ [Monta un dispositivo NVMe sul tuo client Linux](#add-nvme-on-rhel93-host)

## Installa e configura NVMe sull'host Linux
<a name="configure-nvme-on-rhel93"></a>

**Per installare il client NVMe**

1. Connect alla propria istanza Linux utilizzando un client SSH. Per ulteriori informazioni, consulta [Connect alla tua istanza Linux da Linux o macOS tramite](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-linux-inst-ssh.html) SSH.

1. Installa `nvme-cli` utilizzando il seguente comando:

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

1. Carica il `nvme-tcp` modulo sull'host:

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

1. Ottieni il nome qualificato NVMe (NQN) dell'host Linux utilizzando il seguente comando:

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

   Registrare la risposta per utilizzarla in un passaggio successivo.

## Configurazione di NVMe sul file system FSx for ONTAP
<a name="configure-nvme-on-svm"></a>

**Per configurare NVMe sul file system**

Connect alla CLI NetApp ONTAP sul file system FSx for ONTAP su cui intendi creare i dispositivi NVMe.

1. Per accedere alla ONTAP CLI, stabilisci una sessione SSH sulla porta di gestione del file system Amazon FSx for NetApp ONTAP o SVM eseguendo il comando seguente. Sostituisci `{{management_endpoint_ip}}` con l'indirizzo IP della porta di gestione del file system.

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

   Per ulteriori informazioni, consulta [Gestione dei file system con CONTAP CLI](managing-resources-ontap-apps.md#fsxadmin-ontap-cli). 

1. Crea un nuovo volume sulla SVM che stai utilizzando per accedere all'interfaccia NVMe.

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

1. Crea lo spazio dei nomi NVMe utilizzando il 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) NetApp ONTAP `ns_1` CLI. Un namespace esegue il mapping agli iniziatori (client) e controlla quali iniziatori (client) hanno accesso ai dispositivi 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. Crea il sottosistema NVMe utilizzando il comando ONTAP [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) NetApp CLI.

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

1. Mappa lo spazio dei nomi sul sottosistema appena creato.

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

1. Aggiungi il client al sottosistema utilizzando il NQN recuperato in precedenza.

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

   Se desideri rendere i dispositivi mappati su questo sottosistema disponibili a più host, puoi specificare più nomi di iniziatori in un elenco separato da virgole. Per ulteriori informazioni, consulta [vserver nvme subsystem](https://docs.netapp.com/us-en/ontap-cli-9141/vserver-nvme-subsystem-host-add.html) host add nei documenti ONTAP. NetApp 

1. Conferma che lo spazio dei nomi esista usando il 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. Usa il [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)comando per recuperare gli indirizzi delle interfacce di archiviazione a blocchi per la SVM in cui hai creato i tuoi dispositivi 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**  
Il `iscsi_1` LIF viene utilizzato sia per NVMe/TCP iSCSI che per.

   In questo esempio, l'indirizzo IP di iscsi\_1 è 172.31.16.19 e iscsi\_2 è 172.31.26.134.

## Monta un dispositivo NVMe sul tuo client Linux
<a name="add-nvme-on-rhel93-host"></a>

Il processo di montaggio del dispositivo NVMe sul client Linux prevede tre passaggi:

1. Alla scoperta dei nodi NVMe

1. Partizionamento del dispositivo NVMe

1. Montaggio del dispositivo NVMe sul client

Queste sono trattate nelle seguenti procedure.

**Per scoprire i nodi NVMe di destinazione**

1. Sul tuo client Linux, usa il seguente comando per scoprire i nodi NVMe di destinazione. Sostituisci {{`iscsi_1_IP`}} con `iscsi_1` l'indirizzo IP e {{`client_IP`}} l'indirizzo IP del client.
**Nota**  
`iscsi_1`e `iscsi_2` i LIF vengono utilizzati sia per lo storage iSCSI che per quello 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. (Facoltativo) Per ottenere un throughput più elevato rispetto al client singolo Amazon EC2 (massimo 5 Gbps) (\~625 MBps) sul tuo dispositivo NVMe a file, segui le procedure descritte nella sezione Larghezza di banda di [rete delle istanze Amazon EC2 nella Guida per l'utente di Amazon Elastic Compute Cloud per istanze](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-network-bandwidth.html) Linux per stabilire sessioni aggiuntive.

1. Accedere agli iniziatori di destinazione con un timeout di perdita del controller di almeno 1800 secondi, utilizzando nuovamente l'indirizzo IP `iscsi_1` di {{`iscsi_1_IP`}} e l'indirizzo IP del client per{{`client_IP`}}. I dispositivi NVMe vengono presentati come dischi disponibili.

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

1. Utilizzare il comando seguente per verificare che lo stack NVMe abbia identificato e unito le sessioni multiple e configurato il multipathing. Il comando viene `Y` restituito se la configurazione ha avuto esito positivo.

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

1. Utilizzate i seguenti comandi per verificare che l' NVMe-oF impostazione `model` sia impostata su `NetApp ONTAP Controller` e che il bilanciamento del carico `iopolicy` sia impostato su `round-robin` affinché i rispettivi ONTAP namespace vengano distribuiti su tutti i I/O percorsi disponibili

   ```
   ~$ 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. Utilizzate il comando seguente per verificare che i namespace vengano creati e rilevati correttamente sull'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
   ```

   Il nuovo dispositivo nell'output è. `/dev/nvme2n1` Questo schema di denominazione può variare a seconda dell'installazione Linux in uso.

1. Verifica che lo stato del controller di ogni percorso sia attivo e abbia lo stato di multipathing ANA (Asymmetric Namespace Access) corretto:

   ```
   ~$ 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
   ```

   In questo esempio, lo stack NVMe ha rilevato automaticamente il LIF alternativo del file system, 172.31.26.134. `iscsi_2`

1. Verifica che il NetApp plug-in visualizzi i valori corretti per ogni dispositivo namespace: 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
   ```

**Per partizionare il dispositivo**

1. Usa il comando seguente per verificare che sia presente il percorso del tuo device\_name`nvme2n1`.

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

1. Partiziona il disco usando. `fdisk` Inserirai un prompt interattivo. Inserisci le opzioni nell'ordine mostrato. È possibile creare più partizioni utilizzando un valore inferiore all'ultimo settore (`20971519`in questo esempio).
**Nota**  
Il `Last sector` valore varierà a seconda delle dimensioni del dispositivo NVMe (100 GiB in questo esempio).

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

   Viene avviato il prompt `fsdisk` interattivo.

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

   Dopo l'accesso`w`, la nuova partizione `/dev/nvme2n1` diventa disponibile. {{partition\_name}}Ha il formato {{<device\_name>}}{{<partition\_number>}}. `1`è stato utilizzato come numero di partizione nel `fdisk` comando del passaggio precedente.

1. Crea il tuo file system utilizzando `/dev/nvme2n1` come percorso.

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

   Il sistema risponde con il seguente output:

   ```
   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
   ```

**Per montare il dispositivo NVMe sul client Linux**

1. Crea una directory {{directory\_path}} come punto di montaggio per il tuo file system sull'istanza Linux.

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

1. Monta il file system usando il seguente comando.

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

1. (Facoltativo) Se desideri assegnare a un utente specifico la proprietà della directory di montaggio, sostituiscila {{`username`}} con il nome utente del proprietario.

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

1. (Facoltativo) Verificate di poter leggere e scrivere dati sul file system.

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

   Hai creato e montato con successo un dispositivo NVMe sul tuo client Linux.