RAID-aroj sur NVMe

RAID-aroj sur NVMe
En ĉi tiu artikolo ni parolos pri malsamaj manieroj organizi RAID-tabelojn, kaj ankaŭ montros unu el la unuaj aparataj RAID-regiloj kun NVMe-subteno.

Ĉiuj diversaj aplikoj de RAID-teknologio troviĝas en la servila segmento. En la klientsegmento plej ofte estas uzata nur programaro RAID0 aŭ RAID1 sur du diskoj.

Ĉi tiu artikolo provizos mallongan superrigardon de RAID-teknologio, mallongan lernilon pri kiel krei RAID-tabelojn per tri malsamaj iloj, kaj komparo de virtuala disko-efikeco per ĉiu metodo.

Kio estas RAID?

Vikipedio donas ampleksan difinon de RAID-teknologio:

RAID (Eng. Redunda Tabelo de Sendependaj Diskoj - redunda aro de sendependaj (sendependaj) diskoj) - datumvirtualiga teknologio por kombini plurajn fizikajn disk-aparatojn en logikan modulon por pliigi misfunkciadon kaj rendimenton.

La agordo de diskoj kaj la uzataj teknologioj dependas de la elektita RAID-nivelo. RAID-niveloj estas normigitaj en la specifo Ofta RAID Disk Data Format. Ĝi priskribas multajn RAID-nivelojn, sed la plej oftaj estas RAID0, RAID1, RAID5 kaj RAID6.

RAID0Strioj, estas RAID-nivelo kiu kombinas du aŭ pli da fizikaj diskoj en unu logikan diskon. La volumeno de la logika disko estas egala al la sumo de la volumoj de la fizikaj diskoj inkluzivitaj en la tabelo. Ne estas redundo ĉe ĉi tiu RAID-nivelo, kaj malsukceso de unu stirado povas rezultigi la perdon de ĉiuj datumoj en la virtuala disko.

nivelo RAID1spegulo, kreas identajn kopiojn de datumoj sur du aŭ pli da diskoj. La grandeco de la virtuala disko ne superas la minimuman grandecon de la fizikaj diskoj. La datumoj sur la virtuala disko RAID1 estos disponeblaj tiel longe kiel almenaŭ unu fizika disko de la tabelo funkcias. Uzi RAID1 aldonas redundon, sed estas sufiĉe multekosta solvo, ĉar en tabeloj de du aŭ pli da diskoj la kapacito de nur unu estas disponebla.

nivelo RAID5 solvas la problemon de alta kosto. Por krei tabelon kun RAID5-nivelo, vi bezonas almenaŭ 3 diskojn, kaj la tabelo estas imuna al la fiasko de unu disko. Datenoj en RAID5 estas stokitaj en blokoj kun ĉeksumoj. Ne estas strikta divido inter datumdiskoj kaj ĉeksumdiskoj. Kontrolsumoj en RAID5 estas la rezulto de XOR-operacio aplikita al N-1-blokoj, ĉiu prenita de malsama disko.

Kvankam RAID-aroj pliigas redundon kaj disponigas redundon, ili ne taŭgas por stoki sekurkopiojn.

Post mallonga ekskurso en la tipojn de RAID-tabeloj, vi povas pluiri al aparatoj kaj programoj, kiuj permesas vin kunmeti kaj uzi disko-tabelojn.

Tipoj de RAID-regiloj

Estas du manieroj krei kaj uzi RAID-tabelojn: aparataro kaj programaro. Ni konsideros la sekvajn solvojn:

  • Linuksa Programaro RAID.
  • Intel® Virtual RAID Sur CPU.
  • LSI MegaRAID 9460-8i.

Notu, ke la solvo Intel® funkcias per pecetaro, kio levas la demandon ĉu ĝi estas aparataro aŭ programara solvo. Ekzemple, la hiperviziero VMWare ESXi konsideras VROC-programaron kaj ne oficiale subtenas ĝin.

Linuksa Programaro RAID

Programaro RAID-tabeloj en la familio de Linukso OS estas sufiĉe ofta solvo en kaj la kliento kaj servila segmentoj. Ĉio, kion vi bezonas por krei tabelon, estas la ilo mdadm kaj kelkaj blokaj aparatoj. La nura postulo Linuksa Programaro RAID lokas sur la diskoj kiujn ĝi uzas estas esti bloka aparato alirebla al la sistemo.

La foresto de kostoj por ekipaĵo kaj programaro estas evidenta avantaĝo de ĉi tiu metodo. Linuksa Programaro RAID organizas disko-arojn koste de CPU-tempo. La listo de subtenataj RAID-niveloj kaj la statuso de la nunaj diskoj povas esti viditaj en la mdstat-dosiero, kiu situas en la procfs-radiko:

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

Subteno por RAID-niveloj estas aldonita per konekto de la taŭga kernomodulo, ekzemple:

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

Ĉiuj operacioj kun disko-tabeloj estas faritaj per la ilo de komandlinio mdadm. La disktabelo estas kunvenita en unu komando:

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

Post ekzekuto de ĉi tiu komando, la bloka aparato /dev/md0 aperos en la sistemo, kiu reprezentas vin kiel virtuala disko.

Intel® Virtual RAID Sur CPU

RAID-aroj sur NVMeIntel® VROC Norma Aparataro Ŝlosilo
Intel® Virtual RAID On CPU (VROC) estas aparataro kaj programaro teknologio por krei RAID-arojn bazitajn sur Intel® pecetaroj. Ĉi tiu teknologio haveblas ĉefe por bazplatoj kiuj subtenas Intel® Xeon® Scalable procesorojn. Defaŭlte, VROC ne estas disponebla. Por aktivigi ĝin, vi devas instali VROC-aparatan permesilon-ŝlosilon.

La norma VROC-licenco ebligas al vi krei diskajn tabelojn kun 0, 1 kaj 10 RAID-niveloj. La supera versio pligrandigas ĉi tiun liston kun RAID5-subteno.

Intel® VROC-teknologio sur modernaj baztabuloj funkcias kune kun la Intel® Volume Management Device (VMD), kiu disponigas varmŝanĝan kapablon por NVMe-diskoj.

RAID-aroj sur NVMeIntel® VROC Norma Licenco Tabeloj estas agorditaj per la Agorda Utilo kiam la servilo ekfunkciigas. Sur la langeto Altnivelaj La aĵo Intel® Virtual RAID on CPU aperas, kie vi povas agordi disko-tabelojn.

RAID-aroj sur NVMeKreante RAID1-aron sur du diskoj
Intel® VROC-teknologio havas siajn proprajn asojn en la maniko. Diskaj aroj konstruitaj per VROC estas kongruaj kun Linux Software RAID. Ĉi tio signifas, ke la stato de la tabeloj povas esti monitorita en /proc/mdstat kaj administrita per mdadm. Ĉi tiu "trajto" estas oficiale subtenata de Intel. Post kunmeti RAID1 en Setup Utility, vi povas observi la sinkronigon de diskoj en la OS:

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>

Notu, ke vi ne povas kunmeti tabelojn sur VROC uzante mdadm (la kunmetitaj tabeloj estos Linux SW RAID), sed vi povas ŝanĝi diskojn en ili kaj malmunti la tabelojn.

LSI MegaRAID 9460-8i

RAID-aroj sur NVMeApero de la regilo LSI MegaRAID 9460-8i
La RAID-regilo estas memstara aparatara solvo. La regilo funkcias nur kun diskoj konektitaj rekte al ĝi. Ĉi tiu RAID-regilo subtenas ĝis 24 NVMe-diskojn. Estas la subteno de NVMe, kiu distingas ĉi tiun regilon de multaj aliaj.

RAID-aroj sur NVMeĈefa menuo de la aparatara regilo
Kiam vi uzas UEFI-reĝimon, regilaj agordoj estas integritaj al Agorda Utilo. Kompare kun VROC, la aparatara regilo menuo aspektas multe pli kompleksa.

RAID-aroj sur NVMeKreante RAID1 sur du diskoj
Klarigi kiel agordi disko-tabelojn sur aparatara regilo estas sufiĉe delikata temo kaj povus esti la kialo de plenrajta artikolo. Ĉi tie ni simple limigos nin krei RAID0 kaj RAID1 kun defaŭltaj agordoj.

Diskoj konektitaj al la aparatara regilo ne estas videblaj al la operaciumo. Anstataŭe, la regilo "maskas" ĉiujn RAID-arojn kiel SAS-diskoj. Diskoj konektitaj al la regilo, sed ne parto de la disko-aro, ne estos alireblaj de la OS.

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.

Malgraŭ esti maskita kiel SAS-diskoj, NVMe-aroj funkcios je PCIe-rapidoj. Tamen, ĉi tiu funkcio ebligas al vi starti de NVMe en Legacy.

Testbenko

Ĉiu metodo de organizado de diskoj havas siajn proprajn fizikajn avantaĝojn kaj malavantaĝojn. Sed ĉu estas rendimento diferenco kiam oni laboras kun disko-tabeloj?

Por atingi maksimuman justecon, ĉiuj provoj estos faritaj sur la sama servilo. Ĝia agordo:

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

La testaj unuoj estas P4510, unu duono de kiu estas konektita al la baztabulo, kaj la alia duono al la RAID-regilo. La M.2 funkcias Ubuntu 20.04 kaj la testoj estos rulitaj per fio-versio 3.16.

Testado

Antaŭ ĉio, ni kontrolu la malfruojn kiam vi laboras kun la disko. La testo estas efektivigita en unu fadeno, la blokgrandeco estas 4 KB. Ĉiu provo daŭras 5 minutojn. Antaŭ komenci, la responda bloka aparato estas agordita al neniu kiel la I/O-planilo. La komando fio aspektas jene:

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

El fio-rezultoj ni prenas clat 99.00%. La rezultoj estas montritaj en la suba tabelo.

Hazarda legado, μs
Hazarda registrado, μs

disko
112
78

Linukso SW RAID, RAID0
113
45

VROC, RAID0
112
46

LSI, RAID0
122
63

Linukso SW RAID, RAID1
113
48

VROC, RAID1
113
45

LSI, RAID1
128
89

Krom prokrastoj dum aliro al datumoj, mi ŝatus vidi la agadon de virtualaj diskoj kaj kompari ilin kun la agado de fizika disko. Komando por ruli fio:

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

Efikeco estas mezurita laŭ I/O-operacioj. La rezultoj estas prezentitaj en la suba tabelo.

Hazarda legi 1 fadenon, IOPS
Hazarda skribu 1 fadenon, IOPS
Hazarda legi 128 fadenojn, IOPS
Hazarda skribu 128 fadenojn, IOPS

disko
11300
40700
453000
105000

Linukso SW RAID, RAID0
11200
52000
429000
232000

VROC, RAID0
11200
52300
441000
162000

LSI, RAID0
10900
44200
311000
160000

Linukso SW RAID, RAID1
10000
48600
395000
147000

VROC, RAID1
10000
54400
378000
244000

LSI, RAID1
11000
34300
229000
248000

Estas facile vidi, ke uzi aparatarregilon rezultigas pliigitan latentecon kaj efikecon kompare kun programaraj solvoj.

konkludo

Uzi hardvarsolvojn por krei diskotabelojn el du diskoj aspektas neracia. Tamen, ekzistas taskoj kie la uzo de RAID-regiloj estas pravigita. Kun la apero de regiloj kiuj subtenas la NVMe-interfacon, uzantoj havas la ŝancon uzi pli rapidajn SSD-ojn en siaj projektoj.

RAID-aroj sur NVMe

Nur registritaj uzantoj povas partopreni la enketon. Ensaluti, bonvolu.

Ĉu vi uzas RAID-solvojn?

  • 29,6%Jes, aparataj solvoj32

  • 50,0%Jes, softvarsolvoj54

  • 16,7%No18

  • 3,7%Neniu RAID bezonata4

108 uzantoj voĉdonis. 14 uzantoj sindetenis.

fonto: www.habr.com

Aldoni komenton