Capítulo 13. Visión general de los dispositivos NVMe sobre tejido
Non-volatile Memory Express (NVMe) es una interfaz que permite a las utilidades de software del host comunicarse con las unidades de estado sólido.
Utilice los siguientes tipos de transporte de tejido para configurar NVMe sobre dispositivos de tejido:
-
NVMesobre tejidos utilizandoRemote Direct Memory Access (RDMA). Para obtener información sobre cómo configurar NVMe/RDMA, consulte Sección 13.1, “NVMe sobre tejidos utilizando RDMA”. -
NVMesobre tejidos utilizandoFibre Channel (FC). Para obtener información sobre cómo configurarFC-NVMe, consulte Sección 13.2, “NVMe sobre tejidos utilizando FC”.
Cuando se utiliza FC y RDMA, la unidad de estado sólido no tiene que estar localizada en el sistema; puede configurarse de forma remota a través de un controlador FC o RDMA.
13.1. NVMe sobre tejidos utilizando RDMA Copiar enlaceEnlace copiado en el portapapeles!
En la configuración de NVMe/RDMA, se configura el objetivo NVMe y el iniciador NVMe.
Como administrador del sistema, complete las tareas de las siguientes secciones para desplegar el NVMe sobre tejidos utilizando RDMA (NVMe/RDMA):
13.1.1. Configuración de un objetivo NVMe/RDMA mediante configfs Copiar enlaceEnlace copiado en el portapapeles!
Utilice este procedimiento para configurar un objetivo NVMe/RDMA utilizando configfs.
Requisitos previos
-
Verifique que tiene un dispositivo de bloque para asignar al subsistema
nvmet.
Procedimiento
Cree el subsistema
nvmet-rdma:# modprobe nvmet-rdma # mkdir /sys/kernel/config/nvmet/subsystems/testnqn # cd /sys/kernel/config/nvmet/subsystems/testnqnSustituya testnqn por el nombre del subsistema.
Permitir que cualquier host se conecte a este objetivo:
# echo 1 > attr_allow_any_hostConfigure un
namespace:# mkdir namespaces/10 # cd namespaces/10Sustituya 10 por el número de espacio de nombres
Establezca una ruta de acceso al dispositivo
NVMe:#echo -n /dev/nvme0n1 > device_pathHabilitar el espacio de nombres:
# echo 1 > enableCree un directorio con un puerto
NVMe:# mkdir /sys/kernel/config/nvmet/ports/1 # cd /sys/kernel/config/nvmet/ports/1Muestra la dirección 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 foreverEstablezca la dirección de transporte para el objetivo:
# echo -n 172.31.0.202 > addr_traddrEstablezca
RDMAcomo tipo de transporte:# echo rdma > addr_trtype # echo 4420 > addr_trsvcidEstablezca la familia de direcciones para el puerto:
# echo ipv4 > addr_adrfamCrear un enlace suave:
# ln -s /sys/kernel/config/nvmet/subsystems/testnqn /sys/kernel/config/nvmet/ports/1/subsystems/testnqn
Pasos de verificación
Comprueba que el destino
NVMeestá escuchando en el puerto indicado y está preparado para recibir peticiones de conexión:# dmesg | grep "enabling port" [ 1091.413648] nvmet_rdma: enabling port 1 (172.31.0.202:4420)
Recursos adicionales
-
La página de manual
nvme.
13.1.2. Configuración del objetivo NVMe/RDMA mediante nvmetcli Copiar enlaceEnlace copiado en el portapapeles!
Utilice el nvmetcli para editar, ver e iniciar el objetivo NVMe. El nvmetcli proporciona una línea de comandos y una opción de shell interactiva. Utilice este procedimiento para configurar el objetivo NVMe/RDMA mediante nvmetcli.
Requisitos previos
-
Verifique que tiene un dispositivo de bloque para asignar al subsistema
nvmet. -
Ejecute las operaciones de
nvmetclicomo usuario root.
Procedimiento
Instale el paquete
nvmetcli:# yum install nvmetcliDescargue el archivo
rdma.json# wget http://git.infradead.org/users/hch/nvmetcli.git/blob_plain/0a6b088db2dc2e5de11e6f23f1e890e4b54fee64:/rdma.json-
Edite el archivo
rdma.jsony cambie el valor detraddrpor 172.31.0.202. Configure el objetivo cargando el archivo de configuración del objetivo NVMe:
# nvmetcli restore rdma.json
Si no se especifica el nombre del archivo de configuración del destino NVMe, nvmetcli utiliza el archivo /etc/nvmet/config.json.
Pasos de verificación
Comprueba que el destino
NVMeestá escuchando en el puerto indicado y está preparado para recibir peticiones de conexión:#dmesg | tail -1 [ 4797.132647] nvmet_rdma: enabling port 2 (172.31.0.202:4420)(Opcional) Borra el objetivo NVMe actual:
# nvmetcli clear
Recursos adicionales
-
La página de manual
nvmetcli. -
La página de manual
nvme.
13.1.3. Configuración de un cliente NVMe/RDMA Copiar enlaceEnlace copiado en el portapapeles!
Utilice este procedimiento para configurar un cliente NVMe/RDMA utilizando la herramienta de línea de comandos de gestión de NVMe (nvme-cli).
Procedimiento
Instale la herramienta
nvme-cli:# yum install nvme-cliCargue el módulo
nvme-rdmasi no está cargado:# modprobe nvme-rdmaDescubre los subsistemas disponibles en el objetivo
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: 0x0000Conecta con los subsistemas descubiertos:
# 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 rdmaSustituya testnqn por el nombre del subsistema
NVMe.Sustituya 172.31.0.202 por la dirección IP de destino.
Sustituya 4420 por el número de puerto.
Pasos de verificación
Enumera los dispositivos NVMe que están conectados actualmente:
# lista nvme(Opcional) Desconéctese del objetivo:
# 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 adicionales
-
La página de manual
nvme. - Nvme-cli Repositorio Github