RAID Arrays op NVMe

RAID Arrays op NVMe
An dësem Artikel wäerte mir iwwer verschidde Weeër schwätzen fir RAID-Arrays z'organiséieren, an och ee vun den éischten Hardware RAID Controller mat NVMe Support ze weisen.

All d'Varietéit vun Uwendungen vun RAID Technologie ass am Server Segment fonnt. Am Client Segment gëtt nëmmen Software RAID0 oder RAID1 op zwee Disken am meeschten benotzt.

Dësen Artikel gëtt e kuerzen Iwwerbléck iwwer RAID Technologie, e kuerzen Tutorial fir wéi een RAID Arrays mat dräi verschiddenen Tools erstellt, an e Verglach vun der virtueller Disk Performance mat all Method.

Wat ass RAID?

Wikipedia gëtt eng ëmfaassend Definitioun vun RAID Technologie:

Razzia (Eng. Iwwerflësseg Array vun Onofhängege Scheiwen - redundante Array vun onofhängegen (onofhängegen) Disken) - Datevirtualiséierungstechnologie fir verschidde kierperlech Disk-Geräter an e logesche Modul ze kombinéieren fir d'Feeltoleranz an d'Leeschtung ze erhéijen.

D'Konfiguratioun vun Disk Arrays an d'Technologien déi benotzt ginn hänkt vun der gewielter of RAID Niveau. RAID Niveauen sinn an der Spezifizéierung standardiséiert Gemeinsam RAID Disk Data Format. Et beschreift vill RAID Niveauen, awer déi heefegst sinn RAID0, RAID1, RAID5 an RAID6.

RAID0oder Stripes, ass e RAID-Niveau deen zwee oder méi physesch Fuerderen an ee logesche Drive kombinéiert. De Volume vun der logescher Scheif ass gläich wéi d'Zomm vun de Volumen vun de physeschen Disken, déi an der Array abegraff sinn. Et gëtt keng Redundanz op dësem RAID-Niveau, an Ausfall vun engem Drive kann zu de Verloscht vun all Daten op der virtueller Scheif féieren.

Niveau RAID1oder Record, erstellt identesch Kopien vun Daten op zwee oder méi Disken. D'Gréisst vun der virtueller Scheif iwwerschreift net d'Mindestgréisst vun de kierperlechen Disken. D'Donnéeën op der RAID1 virtueller Disk wäerte verfügbar sinn soulaang op d'mannst eng kierperlech Scheif aus der Array operationell ass. D'Benotzung vun RAID1 füügt Redundanz, awer ass eng zimlech deier Léisung, well an Arrays vun zwee oder méi Disken d'Kapazitéit vun nëmmen engem verfügbar ass.

Niveau RAID5 léist de Problem vun héich Käschten. Fir eng Array mat RAID5 Niveau ze kreéieren, braucht Dir op d'mannst 3 Disken, an d'Array ass resistent géint den Echec vun enger Disk. D'Donnéeën am RAID5 ginn a Blocken mat Kontrollsumme gespäichert. Et gëtt keng strikt Divisioun tëscht Datendisken a Checksum Disks. Checksums am RAID5 sinn d'Resultat vun enger XOR-Operatioun, déi op N-1-Blöcke applizéiert gëtt, jidderee vun enger anerer Disk geholl.

Obwuel RAID-Arrays d'Redundanz erhéijen a Redundanz ubidden, si se net gëeegent fir Backups ze späicheren.

No engem kuerzen Ausfluch an d'Zorte vu RAID-Arrays, kënnt Dir op Apparater a Programmer weidergoen, déi Iech erlaben, Disk Arrays ze sammelen an ze benotzen.

Zorte vu RAID Controller

Et ginn zwou Weeër fir RAID-Arrays ze kreéieren an ze benotzen: Hardware a Software. Mir wäerten déi folgend Léisungen betruechten:

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

Bedenkt datt d'Intel® Léisung op engem Chipsatz leeft, wat d'Fro opstellt ob et eng Hardware- oder Softwareléisung ass. Zum Beispill betruecht de VMWare ESXi Hypervisor VROC Software an ënnerstëtzt se net offiziell.

Linux Software RAID

Software RAID-Arrays an der Linux OS-Famill sinn eng zimlech allgemeng Léisung a béid Client- a Serversegmenter. Alles wat Dir braucht fir en Array ze kreéieren ass d'mdadm Utility an e puer Block Geräter. Déi eenzeg Fuerderung, déi Linux Software RAID op den Drive stellt, déi se benotzt, ass e Blockapparat, deen dem System zougänglech ass.

D'Feele vu Käschten fir Ausrüstung a Software ass en offensichtleche Virdeel vun dëser Method. Linux Software RAID organiséiert Disk Arrays op Käschte vun der CPU Zäit. D'Lëscht vun den ënnerstëtzten RAID Niveauen an de Status vun den aktuellen Disk Arrays kënnen an der mdstat Datei gekuckt ginn, déi an der procfs root läit:

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

Ënnerstëtzung fir RAID Niveauen gëtt bäigefüügt andeems de passende Kernelmodul verbënnt, zum Beispill:

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

All Operatioune mat Disk Arrays ginn duerch d'mdadm Kommandozeil Utility gemaach. D'Disk Array ass an engem Kommando versammelt:

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

Nodeems Dir dëse Kommando ausgefouert hutt, erschéngt den /dev/md0 Blockapparat am System, deen Iech als virtuelle Scheif duerstellt.

Intel® Virtual RAID Op CPU

RAID Arrays op NVMeIntel® VROC Standard Hardware Schlëssel
Intel® Virtual RAID On CPU (VROC) ass eng Hardware- a Softwaretechnologie fir RAID-Arrays ze kreéieren baséiert op Intel® Chipsets. Dës Technologie ass haaptsächlech fir Motherboards verfügbar déi Intel® Xeon® Scalable Prozessoren ënnerstëtzen. Par défaut ass VROC net verfügbar. Fir et z'aktivéieren, musst Dir e VROC Hardware Lizenzschlëssel installéieren.

D'Standard VROC Lizenz erlaabt Iech Disk Arrays mat 0, 1 an 10 RAID Niveauen ze kreéieren. D'Premium Versioun erweidert dës Lëscht mat RAID5 Support.

Intel® VROC Technologie op modern Motherboards funktionnéiert a Verbindung mat dem Intel® Volume Management Device (VMD), deen Hot-Swap Kapazitéit fir NVMe Drive ubitt.

RAID Arrays op NVMeIntel® VROC Standard Lizenz Arrays ginn duerch de Setup Utility konfiguréiert wann de Server boot. Op der Tab Détailléiert Den Intel® Virtual RAID op CPU Element erschéngt, wou Dir Disk Arrays konfiguréiere kënnt.

RAID Arrays op NVMeErstellt en RAID1-Array op zwee Drive
Intel® VROC Technologie huet seng eege Aces op seng Hülse. Disk Arrays gebaut mat VROC sinn kompatibel mat Linux Software RAID. Dëst bedeit datt den Zoustand vun den Arrays an /proc/mdstat iwwerwaacht ka ginn an duerch mdadm verwalt ginn. Dës "Feature" gëtt offiziell vun Intel ënnerstëtzt. Nodeems Dir RAID1 am Setup Utility montéiert hutt, kënnt Dir d'Synchroniséierung vun de Drive am OS beobachten:

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>

Bedenkt datt Dir net Arrays op VROC benotze kënnt mat mdadm (déi versammelt Arrays wäerte Linux SW RAID sinn), awer Dir kënnt Disken an hinnen änneren an d'Arrays disassemble.

LSI MegaRAID 9460-8i

RAID Arrays op NVMeAusgesinn vum LSI MegaRAID 9460-8i Controller
Den RAID Controller ass eng Stand-alone Hardware Léisung. De Controller funktionnéiert nëmme mat Drive, déi direkt mat him verbonne sinn. Dëse RAID Controller ënnerstëtzt bis zu 24 NVMe Drive. Et ass den NVMe Support deen dëse Controller vu villen aneren ënnerscheet.

RAID Arrays op NVMeHaaptmenü vum Hardware Controller
Wann Dir UEFI Modus benotzt, sinn d'Controller Astellungen an d'Setup Utility integréiert. Am Verglach mam VROC gesäit den Hardware Controller Menü vill méi komplex aus.

RAID Arrays op NVMeErstellt RAID1 op zwee Disken
Erklären wéi Dir Disk Arrays op engem Hardware Controller konfiguréieren ass en zimlech delikat Thema a kéint de Grond fir e vollwäertege Artikel sinn. Hei wäerte mir eis einfach limitéieren fir RAID0 an RAID1 mat Standardastellungen ze kreéieren.

Disken, déi mam Hardware Controller verbonne sinn, sinn net fir de Betribssystem ze gesinn. Amplaz "maskéiert" de Controller all RAID Arrays als SAS Drive. Drives, déi mam Controller verbonne sinn, awer net Deel vun der Disk Array, wäerten net vum OS zougänglech sinn.

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.

Trotz der Verkleedung als SAS Drive, wäerten NVMe Arrays mat PCIe Geschwindegkeete funktionnéieren. Wéi och ëmmer, dës Feature erlaabt Iech vun NVMe an Legacy ze booten.

Teststand

All Method fir Disk Arrays z'organiséieren huet seng eege kierperlech Virdeeler an Nodeeler. Awer gëtt et e Performance Ënnerscheed wann Dir mat Disk Arrays schafft?

Fir maximal Fairness z'erreechen, ginn all Tester um selwechte Server duerchgefouert. Seng Konfiguratioun:

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

D'Testunitéiten sinn P4510, eng Halschent vun deenen ass mam Motherboard verbonnen, an déi aner Halschent mam RAID Controller. De M.2 leeft Ubuntu 20.04 an d'Tester ginn mat der Fio Versioun 3.16 ausgefouert.

Testen

Als éischt, loosst eis d'Verspéidungen kontrolléieren wann Dir mat der Disk schafft. Den Test gëtt an engem Fuedem ausgefouert, d'Blockgréisst ass 4 KB. All Test dauert 5 Minutten. Ier Dir ufänkt, gëtt de entspriechende Blockapparat op kee gesat als I/O Scheduler. De fio Kommando gesäit esou aus:

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

Vun fio Resultater huelen mir clat 99.00%. D'Resultater ginn an der Tabell hei ënnen gewisen.

Zoufälleg Liesung, μs
Zoufälleg Opnam, μs

Scheif
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

Zousätzlech zu Verspéidungen beim Zougang zu Daten, géif ech gär d'Performance vu virtuelle Drive gesinn an se mat der Leeschtung vun enger kierperlecher Scheif vergläichen. Kommando fir fio ze lafen:

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

D'Performance gëtt a punkto I/O Operatiounen gemooss. D'Resultater ginn an der Tabell hei ënnen presentéiert.

Zoufälleg liesen 1 thread, IOPS
Zoufälleg schreiwen 1 thread, IOPS
Zoufälleg liesen 128 thread, IOPS
Zoufälleg schreiwen 128 thread, IOPS

Scheif
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

Et ass einfach ze gesinn datt d'Benotzung vun engem Hardware Controller zu enger verstäerkter Latenz an engem Performance Hit am Verglach mat Softwareléisungen resultéiert.

Konklusioun

Hardwareléisungen ze benotzen fir Disk Arrays vun zwee Disken ze kreéieren gesäit irrational aus. Wéi och ëmmer, et ginn Aufgaben wou d'Benotzung vun RAID Controller gerechtfäerdegt ass. Mat dem Advent vu Controller déi d'NVMe Interface ënnerstëtzen, hunn d'Benotzer d'Méiglechkeet fir méi séier SSDs an hire Projeten ze benotzen.

RAID Arrays op NVMe

Nëmme registréiert Benotzer kënnen un der Ëmfro deelhuelen. Umellen, wann ech glift.

Benotzt Dir RAID Léisungen?

  • 29,6%Jo, Hardware Léisungen32

  • 50,0%Jo, Software Léisunge54

  • 16,7%Nee18

  • 3,7%Keen RAID néideg4

108 Benotzer hunn gestëmmt. 14 Benotzer hu sech enthalen.

Source: will.com

Setzt e Commentaire