Matrices RAID en NVMe

Matrices RAID en NVMe
En este artículo hablaremos sobre diferentes formas de organizar matrices RAID y también mostraremos uno de los primeros controladores RAID de hardware con soporte NVMe.

Toda la variedad de aplicaciones de la tecnología RAID se encuentra en el segmento de servidores. En el segmento de clientes, sólo se utiliza con mayor frecuencia el software RAID0 o RAID1 en dos discos.

Este artículo proporcionará una breve descripción general de la tecnología RAID, un breve tutorial sobre cómo crear matrices RAID utilizando tres herramientas diferentes y una comparación del rendimiento del disco virtual utilizando cada método.

¿Qué es RAID?

Wikipedia ofrece una definición completa de la tecnología RAID:

RAID (Inglés Matriz redundante de discos independientes - matriz redundante de discos independientes (independientes) - tecnología de virtualización de datos para combinar varios dispositivos de disco físico en un módulo lógico para aumentar la tolerancia a fallas y el rendimiento.

La configuración de las matrices de discos y las tecnologías utilizadas dependen del sistema seleccionado. Nivel de RAID. Los niveles de RAID están estandarizados en la especificación. Formato de datos de disco RAID común. Describe muchos niveles de RAID, pero los más comunes son RAID0, RAID1, RAID5 y RAID6.

RAID0O Rayas, es un nivel RAID que combina dos o más unidades físicas en una unidad lógica. El volumen del disco lógico es igual a la suma de los volúmenes de los discos físicos incluidos en la matriz. No hay redundancia en este nivel RAID y la falla de una unidad puede provocar la pérdida de todos los datos del disco virtual.

Nivel RAID1O Mirror , crea copias idénticas de datos en dos o más discos. El tamaño del disco virtual no excede el tamaño mínimo de los discos físicos. Los datos del disco virtual RAID1 estarán disponibles siempre que al menos un disco físico de la matriz esté operativo. El uso de RAID1 añade redundancia, pero es una solución bastante cara, ya que en matrices de dos o más discos sólo está disponible la capacidad de uno.

Nivel RAID5 Resuelve el problema del alto costo. Para crear una matriz con nivel RAID5, necesita al menos 3 discos y la matriz es resistente a la falla de un disco. Los datos en RAID5 se almacenan en bloques con sumas de verificación. No existe una división estricta entre discos de datos y discos de suma de comprobación. Las sumas de comprobación en RAID5 son el resultado de una operación XOR aplicada a N-1 bloques, cada uno tomado de un disco diferente.

Aunque las matrices RAID aumentan la redundancia y proporcionan redundancia, no son adecuadas para almacenar copias de seguridad.

Después de una breve excursión a los tipos de matrices RAID, puede pasar a los dispositivos y programas que le permiten ensamblar y utilizar matrices de discos.

Tipos de controladores RAID

Hay dos formas de crear y utilizar matrices RAID: hardware y software. Consideraremos las siguientes soluciones:

  • RAID de software Linux.
  • RAID virtual Intel® en CPU.
  • LSI MegaRAID 9460-8i.

Tenga en cuenta que la solución Intel® se ejecuta en un chipset, lo que plantea la cuestión de si se trata de una solución de hardware o de software. Por ejemplo, el hipervisor VMWare ESXi considera software VROC y no lo admite oficialmente.

RAID de software de Linux

Las matrices de software RAID de la familia de sistemas operativos Linux son una solución bastante común tanto en el segmento de clientes como de servidores. Todo lo que necesitas para crear una matriz es la utilidad mdadm y algunos dispositivos de bloque. El único requisito que Linux Software RAID impone a las unidades que utiliza es ser un dispositivo de bloque accesible para el sistema.

La ausencia de costes de equipos y software es una ventaja obvia de este método. Linux Software RAID organiza matrices de discos a costa del tiempo de CPU. La lista de niveles RAID admitidos y el estado de las matrices de discos actuales se pueden ver en el archivo mdstat, que se encuentra en la raíz de procfs:

root@grindelwald:~# cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid10] 
unused devices: <none>

Se agrega soporte para niveles RAID conectando el módulo de kernel apropiado, por ejemplo:

root@grindelwald:~# modprobe raid456
root@grindelwald:~# cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] 
unused devices: <none>

Todas las operaciones con matrices de discos se realizan mediante la utilidad de línea de comandos mdadm. La matriz de discos se ensambla con un solo comando:

mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/nvme1n1 /dev/nvme2n1

Después de ejecutar este comando, el dispositivo de bloque /dev/md0 aparecerá en el sistema, que lo representa como un disco virtual.

RAID virtual Intel® en CPU

Matrices RAID en NVMeClave de hardware estándar Intel® VROC
Intel® Virtual RAID On CPU (VROC) es una tecnología de hardware y software para crear matrices RAID basadas en conjuntos de chips Intel®. Esta tecnología está disponible principalmente para placas base que admiten procesadores escalables Intel® Xeon®. De forma predeterminada, VROC no está disponible. Para activarlo, debe instalar una clave de licencia de hardware VROC.

La licencia VROC estándar le permite crear matrices de discos con niveles RAID 0, 1 y 10. La versión premium amplía esta lista con soporte RAID5.

La tecnología Intel® VROC en las placas base modernas funciona junto con el dispositivo de administración de volumen (VMD) Intel®, que proporciona capacidad de intercambio en caliente para unidades NVMe.

Matrices RAID en NVMeLicencia estándar Intel® VROC Los arreglos se configuran a través de la utilidad de configuración cuando se inicia el servidor. en la pestaña Avanzado Aparece el elemento Intel® Virtual RAID en CPU, donde puede configurar matrices de discos.

Matrices RAID en NVMeCrear una matriz RAID1 en dos unidades
La tecnología Intel® VROC tiene sus propios ases bajo la manga. Las matrices de discos creadas con VROC son compatibles con el software RAID de Linux. Esto significa que el estado de las matrices se puede monitorear en /proc/mdstat y administrar a través de mdadm. Esta "función" cuenta con el respaldo oficial de Intel. Después de ensamblar RAID1 en la Utilidad de configuración, puede observar la sincronización de las unidades en el sistema operativo:

root@grindelwald:~# cat /proc/mdstat 
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md126 : active raid1 nvme2n1[1] nvme1n1[0]
      1855832064 blocks super external:/md127/0 [2/2] [UU]
      [>....................]  resync =  1.3% (24207232/1855832064) finish=148.2min speed=205933K/sec
      
md127 : inactive nvme1n1[1](S) nvme2n1[0](S)
      10402 blocks super external:imsm
       
unused devices: <none>

Tenga en cuenta que no puede ensamblar matrices en VROC usando mdadm (las matrices ensambladas serán Linux SW RAID), pero puede cambiar los discos que contienen y desmontar las matrices.

LSI MegaRAID 9460-8i

Matrices RAID en NVMeAspecto del controlador LSI MegaRAID 9460-8i
El controlador RAID es una solución de hardware independiente. El controlador solo funciona con unidades conectadas directamente a él. Este controlador RAID admite hasta 24 unidades NVMe. Es la compatibilidad con NVMe lo que distingue a este controlador de muchos otros.

Matrices RAID en NVMeMenú principal del controlador de hardware
Cuando se utiliza el modo UEFI, la configuración del controlador se integra en la Utilidad de configuración. En comparación con VROC, el menú del controlador de hardware parece mucho más complejo.

Matrices RAID en NVMeCreando RAID1 en dos discos
Explicar cómo configurar matrices de discos en un controlador de hardware es un tema bastante delicado y podría ser motivo de un artículo completo. Aquí simplemente nos limitaremos a crear RAID0 y RAID1 con la configuración predeterminada.

Los discos conectados al controlador de hardware no son visibles para el sistema operativo. En cambio, el controlador “enmascara” todas las matrices RAID como unidades SAS. El sistema operativo no podrá acceder a las unidades conectadas al controlador, pero que no forman parte de la matriz de discos.

root@grindelwald:~# smartctl -i /dev/sda
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-48-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Vendor:               AVAGO
Product:              MR9460-8i
Revision:             5.14
Compliance:           SPC-3
User Capacity:        1,999,844,147,200 bytes [1.99 TB]
Logical block size:   512 bytes
Rotation Rate:        Solid State Device
Logical Unit id:      0x000000000000000000000000000000
Serial number:        00000000000000000000000000000000
Device type:          disk
Local Time is:        Sun Oct 11 16:27:59 2020 MSK
SMART support is:     Unavailable - device lacks SMART capability.

A pesar de estar disfrazados de unidades SAS, las matrices NVMe funcionarán a velocidades PCIe. Sin embargo, esta función le permite iniciar desde NVMe en Legacy.

Banco de pruebas

Cada método de organización de matrices de discos tiene sus ventajas y desventajas físicas. Pero, ¿existe alguna diferencia de rendimiento cuando se trabaja con matrices de discos?

Para lograr la máxima equidad, todas las pruebas se realizarán en el mismo servidor. Su configuración:

  • 2x Intel® Xeon® 6240;
  • 12x DDR4-2666 de 16 GB;
  • LSI MegaRAID 9460-8i;
  • Clave de hardware estándar Intel® VROC;
  • 4 unidades de estado sólido Intel® DC P4510 U.2 de 2 TB;
  • 1x Samsung 970 EVO Plus M.2 500GB.

Las unidades de prueba son P4510, la mitad de las cuales está conectada a la placa base y la otra mitad al controlador RAID. El M.2 ejecuta Ubuntu 20.04 y las pruebas se ejecutarán con la versión 3.16 de fio.

pruebas

En primer lugar, comprobemos los retrasos al trabajar con el disco. La prueba se ejecuta en un hilo, el tamaño del bloque es de 4 KB. Cada prueba tiene una duración de 5 minutos. Antes de comenzar, el dispositivo de bloque correspondiente se establece en ninguno como programador de E/S. El comando fio se ve así:

fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio  --iodepth=1 --loops=1000 --runtime=300  --rw=<mode> --filename=<blkdev>

De los resultados de fio tomamos clat 99.00%. Los resultados se muestran en la tabla de abajo.

Lectura aleatoria, μs
Grabación aleatoria, μs

disco
112
78

RAID de software de Linux, RAID0
113
45

VROC, RAID0
112
46

LSI, RAID0
122
63

RAID de software de Linux, RAID1
113
48

VROC, RAID1
113
45

LSI, RAID1
128
89

Además de los retrasos en el acceso a los datos, me gustaría ver el rendimiento de las unidades virtuales y compararlas con el rendimiento de un disco físico. Comando para ejecutar fio:

fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio  --loops=1000 --runtime=300  --iodepth=<threads> --rw=<mode> --filename=<blkdev>

El rendimiento se mide en términos de operaciones de E/S. Los resultados se presentan en la siguiente tabla.

Lectura aleatoria 1 hilo, IOPS
Escritura aleatoria 1 hilo, IOPS
Lectura aleatoria de 128 subprocesos, IOPS
Escritura aleatoria de 128 subprocesos, IOPS

disco
11300
40700
453000
105000

RAID de software de Linux, RAID0
11200
52000
429000
232000

VROC, RAID0
11200
52300
441000
162000

LSI, RAID0
10900
44200
311000
160000

RAID de software de Linux, RAID1
10000
48600
395000
147000

VROC, RAID1
10000
54400
378000
244000

LSI, RAID1
11000
34300
229000
248000

Es fácil ver que el uso de un controlador de hardware genera una mayor latencia y una reducción del rendimiento en comparación con las soluciones de software.

Conclusión

Usar soluciones de hardware para crear matrices de discos a partir de dos discos parece irracional. Sin embargo, hay tareas en las que está justificado el uso de controladores RAID. Con la llegada de controladores que admiten la interfaz NVMe, los usuarios tienen la oportunidad de utilizar SSD más rápidos en sus proyectos.

Matrices RAID en NVMe

Solo los usuarios registrados pueden participar en la encuesta. Registrarsepor favor

¿Está utilizando soluciones RAID?

  • 29,6%Sí, soluciones de hardware32

  • 50,0%Sí, soluciones de software54

  • 16,7%No18

  • 3,7%No se necesita RAID4

108 usuarios votaron. 14 usuarios se abstuvieron.

Fuente: habr.com

Añadir un comentario