
In questo articolo parleremo dei diversi modi di organizzare i RAID array e mostreremo uno dei primi controllori RAID hardware con supporto NVMe.
Tutte le varietà di applicazione della tecnologia RAID si riscontrano nel segmento dei server. Nel segmento client, viene utilizzato principalmente il RAID software RAID0 o RAID1 su due dischi.
In questo articolo ci sarà una breve panoramica della tecnologia RAID, una piccola guida alla creazione di RAID array con tre diversi strumenti e il confronto delle prestazioni dei dischi virtuali utilizzando ciascun metodo.
Che cos'è il RAID?
dà una definizione completa della tecnologia RAID:
RAID (inglese. Redundant Array of Independent Disks — array ridondante di dischi indipendenti) — è una tecnologia di virtualizzazione dei dati che consente di unire più dispositivi di archiviazione fisici in un modulo logico per migliorare l'affidabilità 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 . Essa descrive diversi livelli di 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 uno logico. La capacità del disco logico è pari alla somma delle capacità dei dischi fisici che compongono l'array. A questo livello, il RAID non ha ridondanza e il guasto di un disco può portare alla 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 disponibili finché almeno un disco fisico dell'array è operativo. L'uso del RAID1 aggiunge ridondanza, ma è una soluzione piuttosto costosa, poiché negli array con due o più dischi è disponibile solo il volume di un disco.
Livello RAID5 risolve il problema del costo. Per creare un array con livello RAID5 sono necessari almeno 3 dischi, e l'array è resistente al guasto di un disco. I dati in RAID5 sono memorizzati a blocchi con checksum. Non c'è una divisione rigorosa tra dischi contenenti dati e dischi contenenti checksum. I checksum in RAID5 sono il risultato dell'operazione XOR applicata a N-1 blocchi, ognuno dei quali proviene dal proprio disco.
Sebbene gli array RAID aumentino la ridondanza e offrano riserva, non sono adatti per la memorizzazione di backup.
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. Esamineremo le seguenti soluzioni:
- Linux Software RAID.
- Intel® Virtual RAID On CPU.
- LSI MegaRAID 9460-8i.
Va notato che la soluzione Intel® funziona su chipset, il che solleva la questione se sia una soluzione hardware o software. Ad esempio, l'iper-vvisor VMWare ESXi considera VROC come software e non lo supporta ufficialmente.
Linux Software RAID
Gli array RAID software nella famiglia dei sistemi operativi Linux sono una soluzione abbastanza comune sia nel segmento client che in quello server. Tutto ciò che è necessario per creare un array è l'utilità mdadm e alcuni dispositivi a blocchi. L'unico requisito che Linux Software RAID pone ai dispositivi di archiviazione utilizzati è che siano dispositivi a blocchi accessibili al sistema.
L'assenza di costi per l'hardware e il software è un evidente vantaggio di questo approccio. Linux Software RAID organizza gli array di dischi a costo del tempo di elaborazione. L'elenco dei livelli RAID supportati e lo stato degli attuali array di dischi possono essere visualizzati nel file mdstat, che si trova nella radice di procfs:
root@grindelwald:~# cat /proc/mdstat
Personalità : [linear] [multipath] [raid0] [raid1] [raid10]
dispositivi inutilizzati:
Il supporto per i livelli RAID viene aggiunto collegando il modulo del kernel corrispondente, per esempio:
root@grindelwald:~# modprobe raid456
root@grindelwald:~# cat /proc/mdstat
Personalità : [linear] [multipath] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
dispositivi inutilizzati:Tutte le operazioni con gli array di dischi vengono eseguite tramite l'utilità a riga di comando mdadm. L'assemblaggio di un array di dischi si effettua in un unico comando:
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/nvme1n1 /dev/nvme2n1Dopo aver eseguito questo comando, apparirà nel sistema un'unità a blocchi /dev/md0, che rappresenta un disco virtuale.
Intel® Virtual RAID On CPU
Chiave hardware standard Intel® VROC
Intel® Virtual RAID On CPU (VROC) è una tecnologia software e hardware per la creazione di array RAID basati su chipset Intel®. Questa tecnologia è principalmente disponibile per le schede madri che supportano processori Intel® Xeon® Scalable. Per impostazione predefinita, VROC non è disponibile. Per attivarlo è necessario installare una chiave di licenza hardware VROC.
La licenza standard VROC consente di creare array di dischi con livelli RAID 0, 1 e 10. La versione premium espande questo elenco con il supporto per RAID5.
La tecnologia Intel® VROC sulle moderne schede madri funziona in combinazione con Intel® Volume Management Device (VMD), che consente la sostituzione a caldo dei dispositivi con interfaccia NVMe.
Intel® VROC con licenza standard La configurazione degli array avviene tramite il Setup Utility all'avvio del server. Nella scheda Avanzato compare l'opzione Intel® Virtual RAID on CPU, dove è possibile configurare gli array di dischi.
Creazione di un array RAID1 su due dispositivi di archiviazione
La tecnologia Intel® VROC ha i suoi "assi nella manica". Gli array di dischi costruiti con VROC sono compatibili con Linux Software RAID. Ciò significa che lo stato degli array può essere monitorato in /proc/mdstat e amministrato tramite mdadm. Questa "caratteristica" è ufficialmente supportata da Intel. Dopo aver assemblato RAID1 nel Setup Utility, è possibile osservare la sincronizzazione dei dispositivi nel sistema operativo:
root@grindelwald:~# cat /proc/mdstat
Personalità : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md126 : active raid1 nvme2n1[1] nvme1n1[0]
1855832064 blocchi super esterno:/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 blocchi super esterno:imsm
dispositivi non utilizzati: <nessuno>Si noti che tramite mdadm non è possibile assemblare array su VROC (gli array assemblati saranno Linux SW RAID), ma è possibile cambiare i dischi e smontare gli array.
LSI MegaRAID 9460-8i
Aspetto del controller LSI MegaRAID 9460-8i
Il controller RAID è una soluzione hardware autonoma. Il controller funziona solo con i dispositivi di archiviazione direttamente connessi a esso. Questo controller RAID supporta fino a 24 dispositivi con interfaccia NVMe. È proprio il supporto NVMe che distingue questo controller da molti altri.
Menu principale del controller hardware
Quando si utilizza la modalità UEFI, le impostazioni del controller vengono integrate nell'Utility di Setup. Rispetto a VROC, il menu del controller hardware appare notevolmente più complesso.
Creazione di RAID1 su due dischi
La spiegazione della configurazione degli array di dischi su un controller hardware è un tema piuttosto delicato e potrebbe dar luogo a un articolo completo. Qui ci limiteremo semplicemente 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 dispositivi SAS. I dispositivi collegati al controller, ma non facenti parte dell'array di dischi, non saranno accessibili al SO.
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
Versione: 5.14
Conformità: SPC-3
Capacità utente: 1.999.844.147.200 byte [1,99 TB]
Dimensione del blocco logico: 512 byte
Velocità di rotazione: Dispositivo a stato solido
Id Unità logica: 0x000000000000000000000000000000
Numero di serie: 00000000000000000000000000000000
Tipo di dispositivo: disco
L'ora locale è: Dom Ott 11 16:27:59 2020 MSK
Supporto SMART è: Non disponibile - il dispositivo manca della funzionalità SMART.Nonostante la mascheratura come dispositivi SAS, gli array NVMe funzioneranno alla velocità PCIe. Tuttavia, questa caratteristica consente di avviarsi da NVMe in Legacy.
Banchina di test
Ognuno dei metodi di organizzazione degli array di dischi presenta vantaggi e svantaggi fisici. Ma c'è differenza nelle prestazioni quando si lavora con gli array di dischi?
Per garantire la 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 soggetti in test sono i P4510, di cui una metà è collegata alla scheda madre e l'altra a un controller RAID. Su M.2 è installato il sistema operativo Ubuntu 20.04, e i test saranno eseguiti utilizzando fio versione 3.16.
Test
Per prima cosa verifichiamo la latenza durante l'operazione con il disco. Il test viene eseguito in un singolo thread, dimensione del blocco 4 KB. Ogni test dura 5 minuti. Prima dell'inizio, per il relativo dispositivo a 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 prendiamo clat 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 ai ritardi nell'accesso ai dati, è interessante osservare le prestazioni dei dischi virtuali e confrontarle con le prestazioni del disco fisico. Il 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 numero di operazioni di input/output. I risultati sono presentati nella tabella sottostante.
Lettura casuale 1 flusso, IOPS
Scrittura casuale 1 flusso, IOPS
Lettura casuale 128 flussi, IOPS
Scrittura casuale 128 flussi, 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 dei ritardi e a un calo delle prestazioni rispetto alle soluzioni software.
Conclusione
L'uso di soluzioni hardware per creare array di dischi con due dischi sembra irrazionale. Tuttavia, ci sono compiti in cui l'uso di controller RAID è giustificato. Con l'arrivo di controller con supporto per l'interfaccia NVMe, gli utenti possono utilizzare SSD più veloci nei loro progetti.
Solo gli utenti registrati possono partecipare al sondaggio. , per favore.
Utilizzi soluzioni RAID?
29,6%Sì, soluzioni hardware32
50,0%Sì, soluzioni software54
16,7%No18
3,7%Il RAID non è necessario4
Hanno votato 108 utenti. Hanno astenuto 14 utenti.
Fonte: habr.com
