Provisionamento de NVMe/TCP 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/TCP para Linux

O FSx para ONTAP é compatível com o protocolo de armazenamento em bloco Non-Volatile Memory Express over TCP (NVMe/TCP). Com o NVMe/TCP, você usa a CLI do ONTAP para provisionar namespaces e subsistemas e, em seguida, mapear os namespaces para subsistemas, da mesma forma que as LUNs são provisionadas e mapeadas para grupos de iniciadores (igroups) para iSCSI. O protocolo NVMe/TCP está disponível em sistemas de arquivos de segunda geração com até 6 pares de alta disponibilidade (HA).

nota

Os sistemas de arquivos do FSx para ONTAP usam endpoints iSCSI da SVM para protocolos de armazenamento em blocos iSCSI e NVMe/TCP.

O processo de configuração do NVMe/TCP em seu Amazon FSx para NetApp ONTAP tem três etapas principais, que são abordadas nos procedimentos a seguir:

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

  2. Configure o NVMe na 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.

Antes de começar

Antes de iniciar o processo de configuração do sistema de arquivos para NVMe/TCP, você precisa concluir os itens a seguir.

  • Crie um sistema de arquivos do FSx para ONTAP. Para obter mais informações, consulte Criar sistemas de arquivos.

  • Crie uma instância do EC2 executando o Red Hat Enterprise Linux (RHEL) 9.3 na mesma VPC do sistema de arquivos. Esse é o host Linux no qual você configurará o NVMe e acessará os dados do arquivo usando o NVMe/TCP para Linux.

    Adicionalmente ao escopo destes procedimentos, se o host estiver localizado em outra VPC, você poderá usar o emparelhamento de VPC ou o AWS Transit Gateway para permitir que outras VPCs tenham acesso aos endpoints de iSCSI do volume. Para obter mais informações, consulte Acesso a dados de fora da VPC de implantação.

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

  • Obtenha as credenciais do usuário do ONTAP com privilégios fsxadmin que você usará para acessar a CLI do ONTAP. Para obter mais informações, consulte Usuários e perfis do ONTAP.

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

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

Se sua instância do EC2 executar uma AMI do Linux que não seja do RHEL 9.3, alguns dos utilitários usados nesses procedimentos e exemplos poderão já estar instalados e talvez você use 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.

Instalar e configurar 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 Conectar-se à instância do Linux usando um cliente SSH.

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

    ~$ sudo yum install -y nvme-cli
  3. Carregue o módulo nvme-tcp 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 sistema de arquivos do FSx para ONTAP

Para configurar o NVMe no sistema de arquivos

Conecte-se à CLI do NetApp ONTAP no sistema de arquivos do FSx para ONTAP no qual você planeja criar os dispositivos NVMe.

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

    [~]$ ssh fsxadmin@management_endpoint_ip

    Para obter mais informações, consulte Como gerenciar sistemas de arquivos com a CLI do ONTAP.

  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 ns_1 usando o comando vserver nvme namespace create da CLI do NetApp ONTAP. 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/ns_1 -size 100g -ostype linux Created a namespace of size 100GB (107374182400).
  4. Crie o subsistema NVMe usando o comando vserver nvme subsystem create da CLI do NetApp ONTAP.

    ~$ vserver nvme subsystem create -vserver fsx -subsystem sub_1 -ostype linux
  5. Mapeie o namespace para o subsistema que acaba de criar.

    ::> vserver nvme subsystem map add -vserver fsx -subsystem sub_1 -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 sub_1 -host-nqn nqn.2014-08.org.nvmexpress:uuid:ec21b083-1860-d690-1f29-44528e4f4e0e -vserver fsx

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

  7. Confirme a existência do namespace 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: 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.
  8. Use o comando network interface show -vserver 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-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

    A LIF iscsi_1 é usada tanto para iSCSI quanto para NVMe/TCP.

    Neste exemplo, o endereço IP de iscsi_1 é 172.31.16.19 e de iscsi_2 é 172.31.26.134.

Monte um dispositivo NVMe no cliente Linux.

O processo de montagem do dispositivo NVMe no cliente Linux envolve três etapas:

  1. Descobrir os nós NVMe

  2. Particionar o dispositivo NVMe

  3. Montar o dispositivo NVMe no cliente

Isso é abordado nos procedimentos a seguir.

Para descobrir os nós NVMe de destino
  1. No cliente Linux, use o comando a seguir para descobrir os nós NVMe de destino. Substitua iscsi_1_IP pelo endereço IP de iscsi_1 e client_IP pelo endereço IP do cliente.

    nota

    As LIFs iscsi_1 e iscsi_2 são usadas 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) Para promover um throughput maior do que o máximo de 5 GBps (~625 MBps) de cliente único do Amazon EC2 para seu dispositivo NVMe de arquivos, siga os procedimentos descritos em Largura de banda da rede de instâncias do Amazon EC2 no Guia do usuário do Amazon Elastic Compute Cloud para instâncias Linux para estabelecer sessões adicionais.

  3. Faça login nos iniciadores de destino com um tempo limite de perda do controlador de pelo menos 1.800 segundos, mais uma vez usando o endereço IP do iscsi_1 para iscsi_1_IPe o endereço IP do cliente para client_IP. Seus dispositivos NVMe serã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 o multipathing. Se a configuração tiver sido bem-sucedida, o comando retornará Y.

    ~$ cat /sys/module/nvme_core/parameters/multipath Y
  5. Use os comandos a seguir para verificar se a configuração model de NVMe-oF está definida como NetApp ONTAP Controller e o balanceamento de carga de iopolicy está definido como round-robin para os respectivos namespaces do ONTAP para distribuir a E/S em todos os caminhos disponíveis

    ~$ 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. Use o comando a seguir para verificar 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 com o status correto de multipathing do Acesso assimétrico a namespace (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

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

  8. Verifique se o plug-in NetApp exibe os valores corretos para cada dispositivo de namespace do 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
Para particionar o dispositivo
  1. Use o comando a seguir para verificar se o caminho para device_name 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. Você pode criar várias partições usando um valor menor que o último setor (20971519, neste exemplo).

    nota

    O valor de Last sector terá variações, dependendo do tamanho do seu dispositivo NVMe (100 GB, 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. O partition_name tem o formato <device_name><partition_number>. 1 foi usado como o número da partição no comando fdisk 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 do 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) Se você quiser dar a um usuário específico a propriedade do diretório de montagem, substitua username pelo nome de usuário do proprietá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 êxito um dispositivo NVMe no cliente Linux.