Arrays RAID en NVMe

Arrays RAID en NVMe
Neste artigo falaremos de diferentes formas de organizar matrices RAID, e tamén mostraremos un dos primeiros controladores RAID de hardware con soporte NVMe.

Toda a variedade de aplicacións da tecnoloxía RAID atópase no segmento dos servidores. No segmento de clientes, só se usa o software RAID0 ou RAID1 en dous discos.

Este artigo ofrecerá unha breve visión xeral da tecnoloxía RAID, un pequeno tutorial sobre como crear matrices RAID usando tres ferramentas diferentes e unha comparación do rendemento do disco virtual usando cada método.

Que é o RAID?

Wikipedia dá unha definición completa da tecnoloxía RAID:

RAID (Inglés Matriz redundante de discos independentes - matriz redundante de discos independentes (independentes) - tecnoloxía de virtualización de datos para combinar varios dispositivos de disco físico nun módulo lóxico para aumentar a tolerancia a fallos e o rendemento.

A configuración das matrices de discos e as tecnoloxías utilizadas dependen do seleccionado Nivel RAID. Os niveis RAID están estandarizados na especificación Formato común de datos de disco RAID. Describe moitos niveis de RAID, pero os máis comúns son RAID0, RAID1, RAID5 e RAID6.

RAID0Ou Stripes, é un nivel RAID que combina dúas ou máis unidades físicas nunha única unidade lóxica. O volume do disco lóxico é igual á suma dos volumes dos discos físicos incluídos na matriz. Non hai redundancia neste nivel RAID e a falla dunha unidade pode provocar a perda de todos os datos do disco virtual.

Nivel RAID1Ou espello, crea copias idénticas de datos en dous ou máis discos. O tamaño do disco virtual non supera o tamaño mínimo dos discos físicos. Os datos do disco virtual RAID1 estarán dispoñibles sempre que polo menos un disco físico da matriz estea operativo. Usar RAID1 engade redundancia, pero é unha solución bastante cara, xa que en matrices de dous ou máis discos só está dispoñible a capacidade dun.

Nivel RAID5 resolve o problema do alto custo. Para crear unha matriz con nivel RAID5, necesitas polo menos 3 discos e a matriz é resistente á falla dun disco. Os datos en RAID5 almacénanse en bloques con sumas de verificación. Non hai unha división estrita entre os discos de datos e os discos de suma de verificación. As sumas de comprobación en RAID5 son o resultado dunha operación XOR aplicada a N-1 bloques, cada un tomado dun disco diferente.

Aínda que as matrices RAID aumentan a redundancia e proporcionan redundancia, non son adecuadas para almacenar copias de seguridade.

Despois dunha breve excursión aos tipos de matrices RAID, podes pasar a dispositivos e programas que che permiten montar e usar matrices de discos.

Tipos de controladores RAID

Hai dúas formas de crear e usar matrices RAID: hardware e software. Consideraremos as seguintes solucións:

  • RAID de software Linux.
  • Intel® Virtual RAID na CPU.
  • LSI MegaRAID 9460-8i.

Teña en conta que a solución Intel® execútase nun conxunto de chips, o que plantexa a cuestión de se é unha solución de hardware ou software. Por exemplo, o hipervisor VMWare ESXi considera o software VROC e non o admite oficialmente.

RAID de software Linux

As matrices RAID de software da familia de sistemas operativos Linux son unha solución bastante común tanto nos segmentos de cliente como de servidor. Todo o que precisa para crear unha matriz é a utilidade mdadm e algúns dispositivos de bloque. O único requisito que Linux Software RAID coloca nas unidades que usa é ser un dispositivo de bloque accesible ao sistema.

A ausencia de custos para equipos e software é unha vantaxe obvia deste método. Linux Software RAID organiza matrices de discos ao custo do tempo da CPU. A lista dos niveis RAID admitidos e o estado das matrices de discos actuais pódense ver no ficheiro mdstat, que se atopa na raíz procfs:

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

A compatibilidade con niveis RAID engádese conectando o módulo do núcleo axeitado, por exemplo:

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

Todas as operacións con matrices de discos realízanse a través da utilidade de liña de comandos mdadm. A matriz de discos está montada nun só comando:

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

Despois de executar este comando, o dispositivo de bloque /dev/md0 aparecerá no sistema, que o representa como un disco virtual.

Intel® Virtual RAID na CPU

Arrays RAID en NVMeClave de hardware estándar Intel® VROC
Intel® Virtual RAID On CPU (VROC) é unha tecnoloxía de hardware e software para crear matrices RAID baseadas en chipsets Intel®. Esta tecnoloxía está dispoñible principalmente para placas base que admitan procesadores escalables Intel® Xeon®. Por defecto, VROC non está dispoñible. Para activalo, debes instalar unha clave de licenza de hardware VROC.

A licenza VROC estándar permítelle crear matrices de discos con niveis RAID 0, 1 e 10. A versión premium amplía esta lista co soporte RAID5.

A tecnoloxía Intel® VROC nas placas base modernas funciona en conxunto co dispositivo de xestión de volumes Intel® (VMD), que ofrece capacidade de intercambio en quente para as unidades NVMe.

Arrays RAID en NVMeLicenza estándar Intel® VROC As matrices configúranse a través da utilidade de configuración cando se inicia o servidor. Na pestana Avanzado Aparece o elemento Intel® Virtual RAID on CPU, onde pode configurar matrices de discos.

Arrays RAID en NVMeCreación dunha matriz RAID1 en dúas unidades
A tecnoloxía Intel® VROC ten os seus propios ases na manga. As matrices de discos construídas mediante VROC son compatibles co software RAID de Linux. Isto significa que o estado das matrices pódese supervisar en /proc/mdstat e administrarse a través de mdadm. Esta "función" é oficialmente compatible con Intel. Despois de montar RAID1 na utilidade de configuración, podes observar a sincronización das unidades no SO:

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>

Teña en conta que non pode montar matrices en VROC usando mdadm (as matrices ensambladas serán Linux SW RAID), pero pode cambiar os discos neles e desmontar as matrices.

LSI MegaRAID 9460-8i

Arrays RAID en NVMeAspecto do controlador LSI MegaRAID 9460-8i
O controlador RAID é unha solución de hardware autónoma. O controlador só funciona con unidades conectadas directamente a el. Este controlador RAID admite ata 24 unidades NVMe. É o soporte NVMe o que diferencia este controlador de moitos outros.

Arrays RAID en NVMeMenú principal do controlador de hardware
Cando se usa o modo UEFI, a configuración do controlador está integrada na utilidade de configuración. En comparación co VROC, o menú do controlador de hardware parece moito máis complexo.

Arrays RAID en NVMeCreando RAID1 en dous discos
Explicar como configurar matrices de discos nun controlador de hardware é un tema bastante delicado e podería ser o motivo dun artigo completo. Aquí simplemente limitarémonos a crear RAID0 e RAID1 coa configuración predeterminada.

Os discos conectados ao controlador de hardware non son visibles para o sistema operativo. Pola contra, o controlador "enmascara" todas as matrices RAID como unidades SAS. O SO non poderá acceder ás unidades conectadas ao controlador, pero que non forman parte da 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, as matrices NVMe funcionarán a velocidades PCIe. Non obstante, esta función permítelle iniciar desde NVMe en Legacy.

Banco de probas

Cada método de organización de matrices de discos ten os seus propios pros e contras físicos. Pero hai unha diferenza de rendemento cando se traballa con matrices de discos?

Para conseguir a máxima equidade, todas as probas realizaranse no mesmo servidor. A súa configuración:

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

As unidades de proba son P4510, a metade das cales está conectada á placa base e a outra metade ao controlador RAID. O M.2 está executando Ubuntu 20.04 e as probas realizaranse coa versión fio 3.16.

Probas

Primeiro de todo, imos comprobar os atrasos ao traballar co disco. A proba execútase nun fío, o tamaño do bloque é de 4 KB. Cada proba ten unha duración de 5 minutos. Antes de comezar, o dispositivo de bloque correspondente está configurado como none como programador de E/S. O comando fio ten o seguinte aspecto:

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

Dos resultados fio tomamos clat 99.00%. Os resultados móstranse na seguinte táboa.

Lectura aleatoria, μs
Gravación aleatoria, μs

disco
112
78

Linux SW RAID, RAID0
113
45

VROC, RAID0
112
46

LSI, RAID0
122
63

Linux SW RAID, RAID1
113
48

VROC, RAID1
113
45

LSI, RAID1
128
89

Ademais dos atrasos ao acceder aos datos, gustaríame ver o rendemento das unidades virtuais e comparalos co rendemento dun disco físico. Comando para executar fio:

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

O rendemento mídese en función das operacións de E/S. Os resultados preséntanse na seguinte táboa.

Lectura aleatoria 1 fío, IOPS
Escritura aleatoria 1 fío, IOPS
Lectura aleatoria 128 fíos, IOPS
Escritura aleatoria 128 subprocesos, IOPS

disco
11300
40700
453000
105000

Linux SW RAID, RAID0
11200
52000
429000
232000

VROC, RAID0
11200
52300
441000
162000

LSI, RAID0
10900
44200
311000
160000

Linux SW RAID, RAID1
10000
48600
395000
147000

VROC, RAID1
10000
54400
378000
244000

LSI, RAID1
11000
34300
229000
248000

É fácil ver que o uso dun controlador de hardware aumenta a latencia e un golpe de rendemento en comparación coas solucións de software.

Conclusión

Usar solucións de hardware para crear matrices de discos a partir de dous discos parece irracional. Non obstante, hai tarefas nas que se xustifica o uso de controladores RAID. Coa chegada dos controladores que admiten a interface NVMe, os usuarios teñen a oportunidade de usar SSD máis rápidos nos seus proxectos.

Arrays RAID en NVMe

Só os usuarios rexistrados poden participar na enquisa. Rexístrate, por favor.

Está a usar solucións RAID?

  • 29,6%Si, solucións de hardware32

  • 50,0%Si, solucións de software54

  • 16,7%No 18

  • 3,7%Non se necesita RAID 4

Votaron 108 usuarios. 14 usuarios abstivéronse.

Fonte: www.habr.com

Engadir un comentario