Array RAID su NVMe

Array RAID su NVMe
In questo articolo parleremo dei diversi modi per organizzare gli array RAID e mostreremo uno dei primi controller RAID hardware con supporto NVMe.

La varietà di applicazioni della tecnologia RAID si incontra nel segmento server. Nel segmento client, si utilizza principalmente RAID0 o RAID1 su due dischi.

In questo articolo troverai una panoramica della tecnologia RAID, una breve guida alla creazione di array RAID con tre diversi strumenti e un confronto delle prestazioni dei dischi virtuali utilizzando ciascun metodo.

Che cos'è il RAID?

Wikipedia definisce in modo esauriente la tecnologia RAID:

RAID (inglese. Redundant Array of Independent Disks — array ridondante di dischi indipendenti — tecnologia di virtualizzazione dei dati per combinare più dispositivi di memorizzazione fisici in un modulo logico per aumentare la resilienza e le prestazioni.

La configurazione degli array di dischi e le tecnologie utilizzate dipendono dal livello RAID (RAID level). I livelli RAID sono standardizzati nella specifica Common RAID Disk Data Format. Descrive diversi livelli RAID, ma i più comuni sono considerati RAID0, RAID1, RAID5 e RAID6.

RAID0, o Stripes, è un livello RAID che unisce due o più dischi fisici in un unico logico. La capacità del disco logico è pari alla somma delle capacità dei dischi fisici che compongono l'array. A questo livello, RAID non ha ridondanza e la rottura di un disco può provocare la perdita di tutti i dati nel disco virtuale.

Livello RAID1, o Mirror, crea copie identiche dei dati su due o più dischi. La capacità del disco virtuale non supera quella del disco fisico più piccolo. I dati sul disco virtuale RAID1 saranno accessibili finché almeno un disco fisico dell'array è funzionante. L'utilizzo di RAID1 aggiunge ridondanza, ma è una soluzione piuttosto costosa, in quanto negli array di due o più dischi è disponibile solo la capacità di uno.

Livello RAID5 risolve il problema dei costi. Per creare un array RAID5 sono necessari almeno 3 dischi, e questo array è resistente al guasto di un disco. I dati in RAID5 sono memorizzati in blocchi con somme di controllo. Non c'è una netta separazione tra dischi di dati e dischi di somme di controllo. Le somme di controllo in RAID5 sono il risultato di un'operazione XOR applicata a N-1 blocchi, ciascuno preso dal proprio disco.

Sebbene gli array RAID aumentino la ridondanza e forniscano backup, non sono adatti per l'archiviazione di copie di sicurezza.

Dopo una breve panoramica sui tipi di array RAID, possiamo passare ai dispositivi e ai programmi che consentono di assemblare e utilizzare array di dischi.

Tipi di controller RAID

Ci sono due modi per creare e utilizzare array RAID: hardware e software. Considereremo le seguenti soluzioni:

  • RAID Software Linux.
  • Intel® Virtual RAID On CPU.
  • LSI MegaRAID 9460-8i.

Vale la pena notare che la soluzione Intel® opera su un chipset, il che solleva la questione se si tratti di una soluzione hardware o software. Ad esempio, l'hypervisor VMWare ESXi considera VROC software e non lo supporta ufficialmente.

RAID Software Linux

I RAID software nel sistema operativo Linux sono una soluzione abbastanza comune sia nel segmento client che in quello server. L'unico requisito per creare un array è l'utilizzo dell'utilità mdadm e di diversi dispositivi di blocco.

L'assenza di costi per hardware e software è un evidente vantaggio di questo metodo. Il Linux Software RAID organizza gli array di dischi a costo del tempo di elaborazione della CPU. Puoi consultare l'elenco dei livelli RAID supportati e lo stato degli attuali array di dischi nel file mdstat, situato nella root di procfs:

root@grindelwald:~# cat /proc/mdstat 
Personalità: [linear] [multipath] [raid0] [raid1] [raid10] 
devices non utilizzati:

Il supporto per i livelli RAID viene aggiunto collegando il modulo kernel appropriato, ad esempio:

root@grindelwald:~# modprobe raid456
root@grindelwald:~# cat /proc/mdstat 
Personalità: [linear] [multipath] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] 
devices non utilizzati:

Tutte le operazioni con gli array di dischi vengono eseguite tramite l'utilità da linea di comando mdadm. L'assemblaggio di un array di dischi avviene con un solo comando:

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

Dopo aver eseguito questo comando, nel sistema apparirà un dispositivo di blocco /dev/md0, che rappresenta un disco virtuale.

Intel® Virtual RAID On CPU

Array RAID su NVMeChiave hardware standard Intel® VROC
Intel® Virtual RAID On CPU (VROC) è una tecnologia software-hardware per la creazione di array RAID basati su chipset Intel®. Questa tecnologia è principalmente disponibile per le schede madri che supportano i processori Intel® Xeon® Scalable. Per impostazione predefinita, VROC non è disponibile. È necessario installare una chiave di licenza hardware VROC per attivarlo.

La licenza VROC standard consente di creare array con livelli RAID 0, 1 e 10. La versione premium amplia questa lista supportando RAID 5.

La tecnologia Intel® VROC nelle schede madri moderne funziona in collaborazione con Intel® Volume Management Device (VMD), che consente la sostituzione a caldo delle unità con interfaccia NVMe.

Array RAID su NVMeIntel® VROC con licenza standard La configurazione degli array viene effettuata tramite Setup Utility all'avvio del server. Nella scheda Advanced compare l'opzione Intel® Virtual RAID on CPU, in cui è possibile configurare gli array di dischi.

Array RAID su NVMeCreazione di un array RAID1 su due unità
La tecnologia Intel® VROC ha i suoi «assi nella manica». I volumi creati con VROC sono compatibili con Linux Software RAID. Ciò significa che lo stato dei volumi può essere monitorato in /proc/mdstat e amministrato tramite mdadm. Questa «funzionalità» è ufficialmente supportata da Intel. Dopo aver configurato RAID1 nell'Utility di Setup, è possibile osservare la sincronizzazione dei dischi nel sistema operativo:

root@grindelwald:~# cat /proc/mdstat 
Personalità: [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md126 : raid1 attivo nvme2n1[1] nvme1n1[0]
      1855832064 blocchi super esterno:/md127/0 [2/2] [UU]
      [>....................]  resync =  1.3% (24207232/1855832064) finito=148.2min velocità=205933K/sec
      
md127 : inattivo nvme1n1[1](S) nvme2n1[0](S)
      10402 blocchi super esterno:imsm
       
dispositivi non utilizzati:

Va notato che non è possibile creare volumi su VROC attraverso mdadm (i volumi creati saranno Linux SW RAID), ma è possibile sostituirne i dischi e smontare i volumi.

LSI MegaRAID 9460-8i

Array RAID su NVMeAspetto del controller LSI MegaRAID 9460-8i
Il controller RAID è una soluzione hardware autonoma. Il controller funziona solo con i dischi collegati direttamente ad esso. Questo RAID-controller supporta fino a 24 dischi con interfaccia NVMe. È proprio il supporto NVMe che distingue questo controller da molti altri.

Array RAID su NVMeMenu principale del controller hardware
Utilizzando la modalità UEFI, le impostazioni del controller vengono integrate nell'Utility di Configurazione. Rispetto a VROC, il menu del controller hardware appare notevolmente più complesso.

Array RAID su NVMeCreazione di RAID1 su due dischi
Spiegare la configurazione degli array disco su un controller hardware è un argomento piuttosto delicato e potrebbe meritare un articolo a parte. Qui ci limiteremo a creare RAID0 e RAID1 con le impostazioni predefinite.

I dischi collegati al controller hardware non sono visibili al sistema operativo. Invece, il controller "maschera" tutti gli array RAID come dischi SAS. I dispositivi connessi al controller ma non assegnati a un array disco non saranno accessibili dal sistema operativo.

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

=== INIZIO DELLA SEZIONE INFORMATIVA ===
Fornitore:               AVAGO
Prodotto:              MR9460-8i
Revision:             5.14
Conformità:           SPC-3
Capacità Utente:        1.999.844.147.200 bytes [1.99 TB]
Dimensione del blocco logico:   512 bytes
Velocità di rotazione:        Dispositivo a stato solido
ID Unità Logica:      0x000000000000000000000000000000
Numero di serie:        00000000000000000000000000000000
Tipo dispositivo:          disco
Ora locale:        Dom Oct 11 16:27:59 2020 MSK
Supporto SMART:     Non disponibile - dispositivo privo di funzionalità SMART.

Nonostante la mascheratura da unità SAS, i sistemi NVMe funzioneranno alla velocità di PCIe. Tuttavia, questa peculiarità consente di avviarsi da NVMe in modalità Legacy.

Banchi di prova

Ogni metodo di organizzazione degli array di dischi ha i propri vantaggi e svantaggi fisici. Ma c'è una differenza nelle prestazioni quando si lavora con gli array di dischi?

Per garantire massima equità, tutti i test saranno eseguiti sullo stesso server. La sua configurazione è:

  • 2x Intel® Xeon® 6240;
  • 12x DDR4-2666 16 GB;
  • LSI MegaRAID 9460-8i;
  • Intel® VROC Standard Hardware Key;
  • 4x Intel® SSD DC P4510 U.2 2TB;
  • 1x Samsung 970 EVO Plus M.2 500GB.

I modelli testati sono P4510, di cui una metà è collegata alla scheda madre e l'altra al controller RAID. Su M.2 è installato il sistema operativo Ubuntu 20.04, e i test saranno eseguiti utilizzando fio versione 3.16.

Test

In primis verificheremo i ritardi durante l'accesso al disco. Il test viene eseguito in un unico thread, con una dimensione del blocco di 4 KB. Ogni test dura 5 minuti. Prima dell'inizio, per il corrispondente dispositivo di blocco, viene impostato none come pianificatore I/O. Il comando fio è il seguente:

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

Dai risultati di fio otteniamo un clat del 99,00%. I risultati sono riportati nella tabella sottostante.

Lettura casuale, µs
Scrittura casuale, µ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

Oltre alle latenze nell'accesso ai dati, vogliamo vedere le prestazioni degli storage virtuali e confrontarle con quelle dei dischi fisici. Comando per avviare fio:

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

Le prestazioni sono misurate in termini di operazioni di input-output. I risultati sono presentati nella tabella sottostante.

Lettura casuale 1 thread, IOPS
Scrittura casuale 1 thread, IOPS
Lettura casuale 128 thread, IOPS
Scrittura casuale 128 thread, 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

È facile notare che l'uso di un controller hardware porta a un aumento delle latenze e a una diminuzione delle prestazioni rispetto alle soluzioni software.

Conclusione

L'uso di soluzioni hardware per creare array di dischi a partire da due dischi sembra poco razionale. Tuttavia, esistono compiti in cui l'uso di controller RAID è giustificato. Con l'arrivo dei controller che supportano l'interfaccia NVMe, gli utenti hanno la possibilità di utilizzare SSD più veloci nei propri progetti.

Array RAID su NVMe

Solo gli utenti registrati possono partecipare al sondaggio. Accedi, per favore.

Utilizzi soluzioni RAID?

  • 29,6%Sì, soluzioni hardware32

  • 50,0%Sì, soluzioni software54

  • 16,7%No18

  • 3,7%Non è necessario RAID4

Hanno votato 108 utenti. 14 utenti si sono astenuti.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster