

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 di NVMe /TCP per Linux
<a name="provision-nvme-linux"></a>

FSx per ONTAP supporta Non-Volatile Memory Express over TCP (NVMe/TCP) block storage protocol. With NVMe/TCP, si utilizza il ONTAP CLI per fornire namespace e sottosistemi e quindi mappare i namespace ai sottosistemi, in modo analogo al modo in cui LUNs vengono forniti e mappati ai gruppi di iniziatori (igroup) per iSCSI. [Il protocollo NVMe /TCP è disponibile sui file system di seconda generazione con 6 o meno coppie ad alta disponibilità (HA).](HA-pairs.md)

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

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

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

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

1. Monta un NVMe dispositivo 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 per ONTAP. Per ulteriori informazioni, consulta [Creazione di file system](creating-file-systems.md).
+ Crea un' EC2 istanza che esegue Red Hat Enterprise Linux (RHEL) 9.3 nello stesso VPC del file system. Questo è l'host Linux su cui configurerete NVMe e accederete ai dati dei file usando NVMe /TCP per Linux.

  Oltre all'ambito di queste procedure, se l'host si trova in un altro VPC, è possibile utilizzare il peering VPC o concedere altri VPCs accessi AWS Transit Gateway 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 ONTAP utente con `fsxadmin` privilegi che utilizzerai per accedere a ONTAP CLI. Per ulteriori informazioni, consulta [ONTAPruoli e utenti](roles-and-users.md).
+ L'host Linux per cui configurerai NVMe e utilizzerai per accedere al file system FSx for ONTAP si trova nello stesso Account AWS VPC e.
+ È consigliabile che l' EC2 istanza si trovi nella stessa zona di disponibilità della sottorete preferita del file system.

Se l' EC2 istanza 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 usati in questa sezione sono validi per altri sistemi Linux. EC2 AMIs

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

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

**Per installare il NVMe client**

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 NVMe qualificato (NQN) dell'host Linux utilizzando il seguente comando:

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

   Registra la risposta per utilizzarla in un passaggio successivo.

## Configura 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 FSx sul file system for ONTAP su cui intendi creare il/i NVMe dispositivo/i.

1. Per accedere a 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 la ONTAP CLI](managing-resources-ontap-apps.md#fsxadmin-ontap-cli). 

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

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

1. Crea lo spazio dei NVMe nomi `ns_1` 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 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 NVMe sottosistema utilizzando il 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) NetApp ONTAP 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. Utilizzate 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 avete creato i vostri 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 iSCSI che per /TCP.

   In questo esempio, l'indirizzo IP di iscsi\$11 è 172.31.16.19 e iscsi\$12 è 172.31.26.134.

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

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

1. Alla scoperta dei NVMe nodi

1. Partizionamento del dispositivo NVMe 

1. Montaggio del NVMe dispositivo sul client

Queste sono trattate nelle seguenti procedure.

**Per scoprire i NVMe nodi di destinazione**

1. Sul tuo client Linux, usa il seguente comando per scoprire i NVMe nodi di destinazione. Sostituisci `iscsi_1` l'indirizzo IP di *`iscsi_1_IP`* with e *`client_IP`* l'indirizzo IP del client.
**Nota**  
`iscsi_1`e `iscsi_2` LIFs vengono utilizzati sia per iSCSI che per lo storage. 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 superiore a quello del client EC2 singolo Amazon (massimo 5 Gbps (\$1625 MBps) sul tuo NVMe dispositivo di file, segui le procedure descritte nella sezione [Larghezza di banda di rete delle EC2 istanze Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-network-bandwidth.html) nella Amazon Elastic Compute Cloud User Guide for Linux Instances per stabilire sessioni aggiuntive.

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

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

1. Utilizzate il comando seguente per verificare che lo NVMe stack abbia identificato e unito le sessioni multiple e configurato il multipathing. Il comando restituisce `Y` se la configurazione ha avuto successo.

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

1. Utilizzate i seguenti comandi per verificare che l'impostazione NVMe -oF `model` sia impostata su `NetApp ONTAP Controller` e che il bilanciamento del carico `iopolicy` sia impostato su `round-robin` per il rispettivo ONTAP namespace per distribuire l'I/O su tutti i 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 NVMe stack ha rilevato automaticamente il file LIF alternativo del file system, 172.31.26.134. `iscsi_2`

1. Verificate che NetApp il plug-in visualizza i valori corretti per ciascuno ONTAP dispositivo namespace:

   ```
   ~$ 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\$1name`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 NVMe dispositivo (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\$1name*Ha il formato *<device\$1name>**<partition\$1number>*. `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 NVMe dispositivo sul client Linux**

1. Crea una directory *directory\$1path* 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 correttamente un NVMe dispositivo sul tuo client Linux.