Red Hat Training

A Red Hat training course is available for RHEL 8

Capítulo 13. Visão geral da NVMe sobre dispositivos de tecido

Non-volatile Memory Express (NVMe) é uma interface que permite que o utilitário de software hospedeiro se comunique com as unidades de estado sólido.

Use os seguintes tipos de transporte de tecido para configurar NVMe sobre dispositivos de tecido:

Ao utilizar FC e RDMA, o acionamento em estado sólido não precisa ser local para seu sistema; ele pode ser configurado remotamente através de um controlador FC ou RDMA.

13.1. NVMe sobre tecidos usando RDMA

Em NVMe/RDMA setup, NVMe target e NVMe initiator está configurado.

Como administrador do sistema, complete as tarefas nas seções seguintes para distribuir o NVMe sobre tecidos usando RDMA (NVMe/RDMA):

13.1.1. Estabelecimento de um alvo NVMe/RDMA usando configfs

Use este procedimento para configurar um alvo NVMe/RDMA usando configfs.

Pré-requisitos

  • Verifique se você tem um dispositivo de bloqueio para atribuir ao subsistema nvmet.

Procedimento

  1. Criar o subsistema nvmet-rdma:

    # modprobe nvmet-rdma
    
    # mkdir /sys/kernel/config/nvmet/subsystems/testnqn
    
    # cd /sys/kernel/config/nvmet/subsystems/testnqn

    Substituir testnqn pelo nome do subsistema.

  2. Permitir que qualquer anfitrião se conecte a este alvo:

    # echo 1 > attr_allow_any_host
  3. Configurar um namespace:

    # mkdir namespaces/10
    
    # cd namespaces/10

    Substitua 10 pelo número do namespace

  4. Estabeleça um caminho para o dispositivo NVMe:

    #echo -n /dev/nvme0n1 > device_path
  5. Habilite o espaço de nomes:

    # echo 1 > habilitar
  6. Criar um diretório com uma porta NVMe:

    # mkdir /sys/kernel/config/nvmet/ports/1
    
    # cd /sys/kernel/config/nvmet/ports/1
  7. Mostrar o endereço IP de mlx5_ib0:

    # ip addr show mlx5_ib0
    
    8: mlx5_ib0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 4092 qdisc mq state UP group default qlen 256
        link/infiniband 00:00:06:2f:fe:80:00:00:00:00:00:00:e4:1d:2d:03:00:e7:0f:f6 brd 00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff
        inet 172.31.0.202/24 brd 172.31.0.255 scope global noprefixroute mlx5_ib0
           valid_lft forever preferred_lft forever
        inet6 fe80::e61d:2d03:e7:ff6/64 scope link noprefixroute
           valid_lft forever preferred_lft forever
  8. Defina o endereço de transporte para a meta:

    # echo -n 172.31.0.202 > addr_traddr
  9. Definir RDMA como o tipo de transporte:

    # echo rdma > addr_trtype
    
    # echo 4420 > addr_trsvcid
  10. Defina a família de endereços para o porto:

    # echo ipv4 > addr_adrfam
  11. Criar um elo suave:

    # ln -s /sys/kernel/config/nvmet/subsystems/testnqn   /sys/kernel/config/nvmet/ports/1/subsystems/testnqn

Etapas de verificação

  • Verifique se o alvo NVMe está escutando na porta determinada e pronto para pedidos de conexão:

    # dmesg | grep "enabling port"
    [ 1091.413648] nvmet_rdma: enabling port 1 (172.31.0.202:4420)

Recursos adicionais

  • A página do homem nvme.

13.1.2. Estabelecendo o alvo NVMe/RDMA usando nvmetcli

Use o site nvmetcli para editar, visualizar e iniciar a meta NVMe. O nvmetcli fornece uma linha de comando e uma opção de shell interativa. Use este procedimento para configurar o alvo NVMe/RDMA por nvmetcli.

Pré-requisitos

  • Verifique se você tem um dispositivo de bloqueio para atribuir ao subsistema nvmet.
  • Executar as operações do nvmetcli como usuário root.

Procedimento

  1. Instale o pacote nvmetcli:

    # yum instalar nvmetcli
  2. Baixe o arquivo rdma.json

    # wget http://git.infradead.org/users/hch/nvmetcli.git/blob_plain/0a6b088db2dc2e5de11e6f23f1e890e4b54fee64:/rdma.json
  3. Edite o arquivo rdma.json e altere o valor traddr para 172.31.0.202.
  4. Configure o alvo carregando o arquivo de configuração do alvo NVMe:

    # nvmetcli restore rdma.json
Nota

Se o nome do arquivo de configuração do alvo NVMe não for especificado, o nvmetcli usa o arquivo /etc/nvmet/config.json.

Etapas de verificação

  • Verifique se o alvo NVMe está escutando na porta determinada e pronto para pedidos de conexão:

    #dmesg | tail -1
    [ 4797.132647] nvmet_rdma: enabling port 2 (172.31.0.202:4420)
  • (Opcional) Limpar o alvo atual da NVMe:

    # nvmetcli clear

Recursos adicionais

  • A página do homem nvmetcli.
  • A página do homem nvme.

13.1.3. Configuração de um cliente NVMe/RDMA

Use este procedimento para configurar um cliente NVMe/RDMA usando a ferramenta de linha de comando de gerenciamento NVMe (nvme-cli).

Procedimento

  1. Instale a ferramenta nvme-cli:

    # yum instalar nvme-cli
  2. Carregue o módulo nvme-rdma se não estiver carregado:

    # modprobe nvme-rdma
  3. Descubra os subsistemas disponíveis na meta NVMe:

    # nvme discover -t rdma -a 172.31.0.202 -s 4420
    
    Discovery Log Number of Records 1, Generation counter 2
    =====Discovery Log Entry 0======
    trtype:  rdma
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified, sq flow control disable supported
    portid:  1
    trsvcid: 4420
    subnqn:  testnqn
    traddr:  172.31.0.202
    rdma_prtype: not specified
    rdma_qptype: connected
    rdma_cms:    rdma-cm
    rdma_pkey: 0x0000
  4. Conectar com os subsistemas descobertos:

    # nvme connect -t rdma -n testnqn -a 172.31.0.202 -s 4420
    
    # lsblk
    NAME                         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    sda                            8:0    0 465.8G  0 disk
    ├─sda1                         8:1    0     1G  0 part /boot
    └─sda2                         8:2    0 464.8G  0 part
      ├─rhel_rdma--virt--03-root 253:0    0    50G  0 lvm  /
      ├─rhel_rdma--virt--03-swap 253:1    0     4G  0 lvm  [SWAP]
      └─rhel_rdma--virt--03-home 253:2    0 410.8G  0 lvm  /home
    nvme0n1
    
    #cat /sys/class/nvme/nvme0/transport
    rdma

    Substituir testnqn pelo nome do sub-sistema NVMe.

    Substituir 172.31.0.202 pelo endereço IP de destino.

    Substituir 4420 pelo número da porta.

Etapas de verificação

  • Liste os dispositivos NVMe que estão atualmente conectados:

    # lista nvme
  • (Opcional) Desconectar do alvo:

    # nvme disconnect -n testnqn
    NQN:testnqn disconnected 1 controller(s)
    
    # lsblk
    NAME                         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    sda                            8:0    0 465.8G  0 disk
    ├─sda1                         8:1    0     1G  0 part /boot
    └─sda2                         8:2    0 464.8G  0 part
      ├─rhel_rdma--virt--03-root 253:0    0    50G  0 lvm  /
      ├─rhel_rdma--virt--03-swap 253:1    0     4G  0 lvm  [SWAP]
      └─rhel_rdma--virt--03-home 253:2    0 410.8G  0 lvm  /home

Recursos adicionais