Provisionamento de NVMe para Linux - FSx para ONTAP

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Provisionamento de NVMe para Linux

O FSx for ONTAP suporta o protocolo de armazenamento em bloco Non-Volatile Memory Express over TCP (NVMe/TCP). Com o NVMe/TCP, você usa a ONTAP CLI para provisionar namespaces e subsistemas e, em seguida, mapear os namespaces para subsistemas, da mesma forma que os LUNs são provisionados e mapeados para grupos de iniciadores (igroups) para iSCSI. O protocolo NVMe/TCP está disponível em sistemas de arquivos de segunda geração que têm 6 ou menos pares de alta disponibilidade (HA). .

Os exemplos apresentados nesses procedimentos demonstram como configurar o armazenamento em blocos NVMe/TCP no sistema de arquivos FSx for ONTAP e no cliente Linux e usar a seguinte configuração:

  1. Instale e configure o cliente NVMe no host Linux.

  2. Configure o NVMe no SVM do sistema de arquivos.

    • Crie um namespace NVMe.

    • Crie um subsistema NVMe.

    • Mapeie o namespace para o subsistema.

    • Adicione o NQN do cliente ao subsistema.

  3. Monte um dispositivo NVMe no cliente Linux.

  • Você já criou um FSx para o sistema de arquivos ONTAP. Para ter mais informações, consulte Como criar um LUN de iSCSI.

  • Crie uma instância EC2 executando o Red Hat Enterprise Linux (RHEL) 9.3, que será o host Linux no qual você configurará o NVMe.

  • O host Linux tem grupos de segurança de VPC configurados para permitir tráfego de entrada e saída, conforme descrito em. Controle de acesso ao sistema de arquivos com a Amazon VPC

  • Você conhece as credenciais do ONTAP usuário com fsxadmin privilégios que você usará para acessar a CLIONTAP.

  • O host Linux que você configurará para NVMe e usará para acessar o sistema de arquivos FSx for ONTAP está localizado na mesma VPC e. Conta da AWS

    Além do escopo dos exemplos apresentados neste tópico, se o host estiver localizado em outra VPC, você poderá usar o emparelhamento de VPC ou conceder a outras VPCs acesso AWS Transit Gateway aos endpoints iSCSI do volume. Para ter mais informações, consulte Acesso a dados de fora da VPC de implantação.

    Se você estiver usando uma instância do EC2 executando uma AMI Linux diferente da usada nesses procedimentos e exemplos, alguns dos utilitários instalados no host podem já estar instalados e você pode usar comandos diferentes para instalar os pacotes necessários. Além de instalar pacotes, os comandos usados nesta seção são válidos para outras AMIs do Linux do EC2.

  • Recomendamos que a instância do EC2 esteja na mesma zona de disponibilidade da sub-rede preferencial do seu sistema de arquivos.

Instale e configure o NVMe no host Linux

Para instalar o cliente NVMe
  1. Conecte-se à instância do Linux usando um cliente SSH. Para obter mais informações, consulte Conecte-se à sua instância Linux usando Linux ou macOS usando SSH.

  2. Instale o nvme-cli usando o comando a seguir:

    ~$ sudo yum install -y nvme-cli
  3. Carregue o nvme-tcp módulo no host:

    $ sudo modprobe nvme-tcp
  4. Obtenha o NVMe Qualified Name (NQN) do host Linux usando o seguinte comando:

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

    Registre a resposta para uso em uma etapa posterior.

Configurar o NVMe no FSx para o sistema de arquivos ONTAP

Para configurar o NVMe no sistema de arquivos

Conecte-se à CLI do NetApp ONTAP no sistema de arquivos FSx for ONTAP no qual você planeja criar o (s) dispositivo (s) NVMe.

  1. Para acessar a CLI do NetApp ONTAP, estabeleça uma sessão SSH na porta de gerenciamento do sistema de arquivos Amazon FSx NetApp for ONTAP executando o seguinte comando. Substitua management_endpoint_ip pelo endereço IP da porta de gerenciamento do sistema de arquivos.

    [~]$ ssh fsxadmin@management_endpoint_ip

    Para ter mais informações, consulte Gerenciando sistemas de arquivos com a ONTAP CLI.

  2. Crie um novo volume no SVM que você está usando para acessar a interface NVMe.

    ::> vol create -vserver fsx -volume nvme_vol1 -aggregate aggr1 -size 1t [Job 597] Job succeeded: Successful
  3. Crie o namespace NVMe usando o comando vserver nvme namespace create NetApp ONTAP rhel CLI. Um namespace mapeia para iniciadores (clientes) e controla quais iniciadores (clientes) têm acesso aos dispositivos NVMe.

    ::> vserver nvme namespace create -vserver fsx -path /vol/nvme_vol1/rhel -size 100g -ostype linux Created a namespace of size 100GB (107374182400).
  4. Crie o subsistema NVMe usando o comando ONTAP CLI. vserver nvme subsystem create NetApp

    ~$ vserver nvme subsystem create -vserver fsx -subsystem rhel -ostype linux
  5. Mapeie o namespace para o subsistema que você acabou de criar.

    ::> vserver nvme subsystem map add -vserver fsx -subsystem rhel -path /vol/nvme_vol1/ns_1
  6. Adicione o cliente ao subsistema usando o NQN que você recuperou anteriormente.

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

    Se quiser disponibilizar os dispositivos mapeados para esse subsistema para vários hosts, você pode especificar vários nomes de iniciadores separados por uma vírgula. Para obter mais informações, consulte vserver nvme subsystem host add na documentação do ONTAP. NetApp

  7. Confirme se o namespace existe usando o 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. Use o network interface show -vservercomando para recuperar os endereços das interfaces de armazenamento em bloco da SVM na qual você criou seus dispositivos 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.

    Observe que o iscsi_1 LIF é usado tanto para iSCSI quanto para NVMe/TCP. Neste exemplo, o endereço IP de iscsi_1 é 172.31.16.19 e iscsi_2 é 172.31.26.134.

Monte um dispositivo NVMe em seu cliente Linux

Descubra os nós iSCSI de destino
  1. Em seu cliente Linux, use o comando a seguir para descobrir os nós iSCSI de destino, usando iscsi_1 o endereço IP para iscsi_1_IPe o endereço IP do cliente para. client_IP Observe que iscsi_1 e iscsi_2 LIF são usados para armazenamento iSCSI e 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. (Opcional) Você pode estabelecer sessões adicionais com o sistema de arquivos. O Amazon EC2 tem um limite de largura de banda de 5 GB/s (cerca de 625 MB/s) para tráfego de fluxo único, mas você pode criar várias sessões a fim de gerar níveis mais altos de throughput para o sistema de arquivos usando um único cliente. Para obter mais informações, consulte a largura de banda de rede da instância Amazon EC2 no Guia do usuário do Amazon Elastic Compute Cloud para instâncias Linux.

  3. Faça login nos iniciadores de destino com um tempo limite de perda do controlador de pelo menos 1800 segundos, novamente usando o iscsi_1 endereço IP para iscsi_1_IPe o endereço IP do cliente para. client_IP Seus dispositivos NVMe são apresentados como discos disponíveis.

    ~$ ~$ sudo nvme connect-all -t tcp -w client_IP -a iscsi_1 -l 1800
  4. Use o comando a seguir para verificar se a pilha NVMe identificou e mesclou as várias sessões e configurou vários caminhos.

    ~$ cat /sys/module/nvme_core/parameters/multipath Y
  5. Verifique se a configuração NVMe-of está definida como (NetApp ONTAP Controllere o balanceamento iopolicy de carga model está definido comoround-robin) para que os respectivos ONTAP namespaces sejam refletidos corretamente no host.

    ~$ 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. Verifique se os namespaces foram criados e descobertos corretamente no 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

    O novo dispositivo na saída é/dev/nvme2n1. Esse esquema de nomenclatura pode ser diferente dependendo da instalação do Linux.

  7. Verifique se o estado do controlador de cada caminho está ativo e tem o status correto do 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

    Observe que a pilha NVMe descobriu automaticamente a LIF alternativa do seu sistema de arquivos, iscsi_2, 172.31.26.134.

  8. Verifique se o NetApp plug-in exibe os valores corretos para cada dispositivo de ONTAP 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
Para particionar o dispositivo
  1. Use o comando a seguir para verificar se o caminho para seu nome_do_dispositivo nvme2n1 está presente.

    ~$ ls /dev/mapper/nvme2n1 /dev/nvme2n1
  2. Particione o disco usando fdisk. Você inserirá um prompt interativo. Insira as opções na ordem mostrada. Observe que o Last sector valor variará dependendo do tamanho do seu dispositivo NVMe (100 GiB neste exemplo). Você pode criar várias partições usando um valor menor que o último setor (20971519, neste exemplo).

    ~$ sudo fdisk /dev/mapper/nvme2n1

    O prompt interativo fsdisk é iniciado.

    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.

    Após inserir w, sua nova partição /dev/nvme2n1 fica disponível. <device_name><partition_number>O partition_name tem o formato. 1foi usado como o número da partição no fdisk comando na etapa anterior.

  3. Crie seu sistema de arquivos usando /dev/nvme2n1 como caminho.

    ~$ sudo mkfs.ext4 /dev/nvme2n1

    O sistema responde com a seguinte saída:

    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
Para montar o dispositivo NVMe no cliente Linux
  1. Crie um diretório directory_path como ponto de montagem para seu sistema de arquivos na instância Linux.

    ~$ sudo mkdir /directory_path/mount_point
  2. Monte o sistema de arquivos usando o comando a seguir.

    ~$ sudo mount -t ext4 /dev/nvme2n1 /directory_path/mount_point
  3. (Opcional) Você pode alterar a propriedade do diretório de montagem para o seu usuário. Substitua username pelo seu nome do usuário.

    ~$ sudo chown username:username /directory_path/mount_point
  4. (Opcional) Verifique se pode ler e gravar dados no sistema de arquivos.

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

    Você criou e montou com sucesso um dispositivo NVMe em seu cliente Linux.