Provisioning di NVMe per Linux - FSx per ONTAP

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 per Linux

FSx for ONTAP supporta il protocollo di storage a blocchi Non-Volatile 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 protocollo NVMe/TCP è disponibile su file system di seconda generazione con 6 o meno coppie ad alta disponibilità (HA). .

Gli esempi presentati in queste procedure mostrano come configurare lo storage a blocchi NVMe/TCP sul file system FSx for ONTAP e sul client Linux e utilizzare la seguente configurazione:

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

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

  3. Monta un dispositivo NVMe sul client Linux.

  • È già stato creato un file system FSx for ONTAP. Per ulteriori informazioni, consulta Creazione di un LUN iSCSI.

  • Crea un'istanza EC2 con Red Hat Enterprise Linux (RHEL) 9.3, che sarà l'host Linux su cui configurare NVMe.

  • L'host Linux dispone di gruppi di sicurezza VPC configurati per consentire il traffico in entrata e in uscita come descritto in. Controllo degli accessi ai file system con Amazon VPC

  • Conosci le credenziali dell'ONTAPutente con fsxadmin privilegi che utilizzerai per accedere alla CLIONTAP.

  • 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

    Oltre agli esempi presentati in questo argomento, 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.

    Se utilizzi un'istanza EC2 che esegue un'AMI Linux diversa da quella utilizzata in queste procedure ed esempi, alcune delle utilità che vengono installate sull'host 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.

  • Consigliamo che l'istanza EC2 si trovi nella stessa zona di disponibilità della sottorete preferita del file system.

Installa e configura NVMe sull'host Linux

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

  2. Installa nvme-cli utilizzando il seguente comando:

    ~$ sudo yum install -y nvme-cli
  3. Carica il nvme-tcp modulo sull'host:

    $ sudo modprobe nvme-tcp
  4. 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

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 CLI NetApp ONTAP, stabilisci una sessione SSH sulla porta di gestione del file system Amazon FSx NetApp for ONTAP 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.

  2. 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
  3. Crea lo spazio dei nomi NVMe utilizzando il comando vserver nvme namespace create NetApp ONTAP rhel 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/rhel -size 100g -ostype linux Created a namespace of size 100GB (107374182400).
  4. Crea il sottosistema NVMe utilizzando il comando ONTAP vserver nvme subsystem create NetApp CLI.

    ~$ vserver nvme subsystem create -vserver fsx -subsystem rhel -ostype linux
  5. Mappa lo spazio dei nomi sul sottosistema appena creato.

    ::> vserver nvme subsystem map add -vserver fsx -subsystem rhel -path /vol/nvme_vol1/ns_1
  6. Aggiungi il client al sottosistema utilizzando il relativo NQN recuperato in precedenza.

    ::> vserver nvme subsystem host add -subsystem rhel -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 separati da una virgola. Per ulteriori informazioni, consulta vserver nvme subsystem host add nei documenti ONTAP. NetApp

  7. Verificate che lo spazio dei nomi esista utilizzando il comando vserver nvme namespace show:

    ::> 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: rhel 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.
  8. Usa il network interface show -vservercomando per recuperare gli indirizzi delle interfacce di archiviazione a blocchi per l'SVM in cui hai creato i tuoi dispositivi NVMe.

    ::> network interface show -vserver svm_name -data-protocol nvme 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.

    Si noti che il LIF iscsi_1 viene utilizzato sia per iSCSI che per NVMe/TCP. 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

Individuazione dei nodi iSCSI di destinazione
  1. Sul client Linux, utilizzare il comando seguente per individuare i nodi iSCSI di destinazione, utilizzando l'iscsi_1indirizzo IP per iscsi_1_IPe l'indirizzo IP del client per. client_IP Si noti che iscsi_1 e iscsi_2 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
  2. (Facoltativo) È possibile stabilire sessioni aggiuntive con il file system. Amazon EC2 ha un limite di larghezza di banda di 5 Gb/s (~625 MB/s) per il traffico a flusso singolo, ma puoi creare più sessioni per aumentare i livelli di throughput del tuo file system da un singolo client. Per ulteriori informazioni, consulta la larghezza di banda di rete delle istanze Amazon EC2 nella Guida per l'utente di Amazon Elastic Compute Cloud per istanze Linux.

  3. Accedi agli iniziatori di destinazione con un timeout di perdita del controller di almeno 1800 secondi, utilizzando nuovamente l'indirizzo IP di iscsi_1_IPe l'indirizzo IP iscsi_1 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
  4. Utilizzare il comando seguente per verificare che lo stack NVMe abbia identificato e unito le sessioni multiple e configurato il multipathing.

    ~$ cat /sys/module/nvme_core/parameters/multipath Y
  5. Verificate che l'impostazione NVMe-oF model sia impostata su (NetApp ONTAP Controllere il bilanciamento del carico sia impostato su) affinché i rispettivi namespace iopolicy si riflettano correttamente sull'hostround-robin. ONTAP

    ~$ 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
  6. Verifica che i namespace siano 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 in uscita è. /dev/nvme2n1 Questo schema di denominazione può variare a seconda dell'installazione Linux in uso.

  7. Verifica che lo stato del controller di ogni percorso sia attivo e abbia lo stato ANA 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

    Tieni presente che lo stack NVMe ha rilevato automaticamente il LIF alternativo del tuo file system, iscsi_2, 172.31.26.134.

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

    ~$ ls /dev/mapper/nvme2n1 /dev/nvme2n1
  2. Partiziona il disco usando. fdisk Inserirai un prompt interattivo. Inserisci le opzioni nell'ordine mostrato. Nota che il Last sector valore varierà a seconda delle dimensioni del dispositivo NVMe (100 GiB in questo esempio). È possibile creare più partizioni utilizzando un valore inferiore all'ultimo settore (20971519in 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'accessow, la nuova partizione /dev/nvme2n1 diventa disponibile. <device_name><partition_number>Il partition_name ha il formato. 1è stato utilizzato come numero di partizione nel fdisk comando del passaggio precedente.

  3. 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
  2. Monta il file system usando il seguente comando.

    ~$ sudo mount -t ext4 /dev/nvme2n1 /directory_path/mount_point
  3. (Facoltativo) È possibile modificare la proprietà della directory di montaggio per l'utente. usernameSostituiscila con il tuo nome utente.

    ~$ sudo chown username:username /directory_path/mount_point
  4. (Facoltativo) Verifica 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.