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:
-
NVMe
sobre 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”. -
NVMe
sobre 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
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
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/testnqn
Sustituya testnqn por el nombre del subsistema.
Permitir que cualquier host se conecte a este objetivo:
# echo 1 > attr_allow_any_host
Configure un
namespace
:# mkdir namespaces/10 # cd namespaces/10
Sustituya 10 por el número de espacio de nombres
Establezca una ruta de acceso al dispositivo
NVMe
:#echo -n /dev/nvme0n1 > device_path
Habilitar el espacio de nombres:
# echo 1 > enable
Cree un directorio con un puerto
NVMe
:# mkdir /sys/kernel/config/nvmet/ports/1 # cd /sys/kernel/config/nvmet/ports/1
Muestra 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 forever
Establezca la dirección de transporte para el objetivo:
# echo -n 172.31.0.202 > addr_traddr
Establezca
RDMA
como tipo de transporte:# echo rdma > addr_trtype # echo 4420 > addr_trsvcid
Establezca la familia de direcciones para el puerto:
# echo ipv4 > addr_adrfam
Crear 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
NVMe
está 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
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
nvmetcli
como usuario root.
Procedimiento
Instale el paquete
nvmetcli
:# yum install nvmetcli
Descargue el archivo
rdma.json
# wget http://git.infradead.org/users/hch/nvmetcli.git/blob_plain/0a6b088db2dc2e5de11e6f23f1e890e4b54fee64:/rdma.json
-
Edite el archivo
rdma.json
y cambie el valor detraddr
por 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
NVMe
está 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
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-cli
Cargue el módulo
nvme-rdma
si no está cargado:# modprobe nvme-rdma
Descubre 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: 0x0000
Conecta 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 rdma
Sustituya 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