RAID-arrays op NVMe

RAID-arrays op NVMe
In dit artikel zullen we het hebben over verschillende manieren om RAID-arrays te organiseren, en laten we ook een van de eerste hardware RAID-controllers met NVMe-ondersteuning zien.

Alle toepassingen van RAID-technologie zijn te vinden in het serversegment. In het clientsegment wordt meestal alleen software RAID0 of RAID1 op twee schijven gebruikt.

Dit artikel geeft een kort overzicht van RAID-technologie, een korte tutorial over het maken van RAID-arrays met behulp van drie verschillende tools, en een vergelijking van de prestaties van virtuele schijven met elke methode.

Wat is RAID?

Wikipedia geeft een uitgebreide definitie van RAID-technologie:

RAID (Engels Redundante reeks onafhankelijke schijven - redundante reeks onafhankelijke (onafhankelijke) schijven) - datavirtualisatietechnologie voor het combineren van verschillende fysieke schijfapparaten in een logische module om de fouttolerantie en prestaties te verhogen.

De configuratie van disk-arrays en de gebruikte technologieën zijn afhankelijk van de geselecteerde RAID-niveau. RAID-niveaus zijn gestandaardiseerd in de specificatie Algemeen RAID-schijfgegevensformaat. Het beschrijft veel RAID-niveaus, maar de meest voorkomende zijn RAID0, RAID1, RAID5 en RAID6.

RAID0Of Strepen, is een RAID-niveau dat twee of meer fysieke schijven combineert in één logische schijf. Het volume van de logische schijf is gelijk aan de som van de volumes van de fysieke schijven in de array. Er is geen redundantie op dit RAID-niveau en het uitvallen van één schijf kan resulteren in het verlies van alle gegevens op de virtuele schijf.

Niveau RAID1Of Spiegel, maakt identieke kopieën van gegevens op twee of meer schijven. De grootte van de virtuele schijf overschrijdt de minimumgrootte van de fysieke schijven niet. De gegevens op de virtuele RAID1-schijf zijn beschikbaar zolang ten minste één fysieke schijf uit de array operationeel is. Het gebruik van RAID1 voegt redundantie toe, maar is een vrij dure oplossing, omdat in arrays van twee of meer schijven de capaciteit van slechts één beschikbaar is.

Niveau RAID5 lost het probleem van de hoge kosten op. Om een ​​array met RAID5-niveau te maken, hebt u minimaal 3 schijven nodig en is de array bestand tegen het uitvallen van één schijf. Gegevens in RAID5 worden opgeslagen in blokken met checksums. Er is geen strikte scheiding tussen gegevensschijven en controlesomschijven. Controlesommen in RAID5 zijn het resultaat van een XOR-bewerking die wordt toegepast op N-1-blokken, elk afkomstig van een andere schijf.

Hoewel RAID-arrays de redundantie vergroten en redundantie bieden, zijn ze niet geschikt voor het opslaan van back-ups.

Na een korte excursie naar de soorten RAID-arrays, kunt u verdergaan met apparaten en programma's waarmee u disk-arrays kunt samenstellen en gebruiken.

Soorten RAID-controllers

Er zijn twee manieren om RAID-arrays te maken en te gebruiken: hardware en software. We zullen de volgende oplossingen overwegen:

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

Merk op dat de Intel®-oplossing op een chipset draait, wat de vraag oproept of het een hardware- of softwareoplossing is. De VMWare ESXi-hypervisor houdt bijvoorbeeld rekening met VROC-software en ondersteunt deze officieel niet.

Linux-software-RAID

Software RAID-arrays in de Linux OS-familie zijn een vrij gebruikelijke oplossing in zowel het client- als het serversegment. Het enige dat u nodig hebt om een ​​array te maken, is het hulpprogramma MDADM en een paar blokapparaten. De enige vereiste die Linux Software RAID stelt aan de schijven die het gebruikt, is dat het een blokapparaat is dat toegankelijk is voor het systeem.

Het ontbreken van kosten voor apparatuur en software is een duidelijk voordeel van deze methode. Linux Software RAID organiseert schijfarrays ten koste van CPU-tijd. De lijst met ondersteunde RAID-niveaus en de status van de huidige schijfarrays kunnen worden bekeken in het mdstat-bestand, dat zich in de procfs-root bevindt:

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

Ondersteuning voor RAID-niveaus wordt toegevoegd door de juiste kernelmodule aan te sluiten, bijvoorbeeld:

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

Alle bewerkingen met schijfarrays worden uitgevoerd via het opdrachtregelprogramma mdadm. De disk-array wordt in één opdracht samengesteld:

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

Na het uitvoeren van deze opdracht verschijnt het blokapparaat /dev/md0 in het systeem, dat u vertegenwoordigt als een virtuele schijf.

Intel® Virtual RAID op CPU

RAID-arrays op NVMeIntel® VROC standaard hardwaresleutel
Intel® Virtual RAID On CPU (VROC) is een hardware- en softwaretechnologie voor het maken van RAID-arrays op basis van Intel®-chipsets. Deze technologie is voornamelijk beschikbaar voor moederborden die Intel® Xeon® schaalbare processors ondersteunen. Standaard is VROC niet beschikbaar. Om deze te activeren, moet u een VROC-hardwarelicentiesleutel installeren.

Met de standaard VROC-licentie kunt u schijfarrays maken met 0, 1 en 10 RAID-niveaus. De premiumversie breidt deze lijst uit met RAID5-ondersteuning.

Intel® VROC-technologie op moderne moederborden werkt in combinatie met het Intel® Volume Management Device (VMD), dat hot-swap-mogelijkheden biedt voor NVMe-schijven.

RAID-arrays op NVMeIntel® VROC standaardlicentie Arrays worden geconfigureerd via het setupprogramma wanneer de server opstart. Op het tabblad Geavanceerd Het Intel® Virtual RAID op CPU-item verschijnt, waar u schijfarrays kunt configureren.

RAID-arrays op NVMeEen RAID1-array maken op twee schijven
Intel® VROC-technologie heeft zijn eigen troeven in petto. Schijfarrays die zijn gebouwd met VROC zijn compatibel met Linux Software RAID. Dit betekent dat de status van de arrays kan worden gecontroleerd in /proc/mdstat en kan worden beheerd via mdadm. Deze "functie" wordt officieel ondersteund door Intel. Na het samenstellen van RAID1 in het setupprogramma kunt u de synchronisatie van schijven in het besturingssysteem observeren:

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>

Houd er rekening mee dat u geen arrays op VROC kunt samenstellen met behulp van mdadm (de samengestelde arrays zijn Linux SW RAID), maar u kunt er wel schijven in verwisselen en de arrays demonteren.

LSI MegaRAID 9460-8i

RAID-arrays op NVMeUiterlijk van de LSI MegaRAID 9460-8i-controller
De RAID-controller is een stand-alone hardwareoplossing. De controller werkt alleen met schijven die er rechtstreeks op zijn aangesloten. Deze RAID-controller ondersteunt maximaal 24 NVMe-schijven. Het is de NVMe-ondersteuning die deze controller onderscheidt van vele anderen.

RAID-arrays op NVMeHoofdmenu van de hardwarecontroller
Bij gebruik van de UEFI-modus worden de controllerinstellingen geïntegreerd in het setupprogramma. Vergeleken met VROC ziet het hardwarecontrollermenu er veel complexer uit.

RAID-arrays op NVMeRAID1 maken op twee schijven
Uitleggen hoe je disk-arrays op een hardwarecontroller configureert is een nogal delicaat onderwerp en zou de reden kunnen zijn voor een volwaardig artikel. Hier beperken we ons eenvoudigweg tot het maken van RAID0 en RAID1 met standaardinstellingen.

Schijven die op de hardwarecontroller zijn aangesloten, zijn niet zichtbaar voor het besturingssysteem. In plaats daarvan ‘maskeert’ de controller alle RAID-arrays als SAS-schijven. Schijven die op de controller zijn aangesloten, maar geen deel uitmaken van de disk-array, zijn niet toegankelijk voor het besturingssysteem.

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.

Ondanks dat ze vermomd zijn als SAS-schijven, werken NVMe-arrays met PCIe-snelheden. Met deze functie kunt u echter opstarten vanuit NVMe in Legacy.

Testbank

Elke methode voor het organiseren van disk-arrays heeft zijn eigen fysieke voor- en nadelen. Maar is er een prestatieverschil bij het werken met disk-arrays?

Om maximale eerlijkheid te bereiken, worden alle tests op dezelfde server uitgevoerd. De configuratie:

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

De testunits zijn P4510, waarvan de ene helft is aangesloten op het moederbord en de andere helft op de RAID-controller. De M.2 draait op Ubuntu 20.04 en de tests worden uitgevoerd met fio-versie 3.16.

Testen

Laten we eerst eens kijken naar de vertragingen bij het werken met de schijf. De test wordt uitgevoerd in één thread, de blokgrootte is 4 KB. Elke test duurt 5 minuten. Voordat u begint, wordt het bijbehorende blokapparaat als I/O-planner op nul ingesteld. Het fio-commando ziet er als volgt uit:

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

Uit de fio-resultaten nemen we clat 99.00%. De resultaten worden weergegeven in de onderstaande tabel.

Willekeurige aflezing, μs
Willekeurige opname, μs

schijf
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

Naast vertragingen bij de toegang tot gegevens, zou ik graag de prestaties van virtuele schijven willen zien en deze vergelijken met de prestaties van een fysieke schijf. Commando om fio uit te voeren:

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

Prestaties worden gemeten in termen van I/O-bewerkingen. De resultaten worden weergegeven in de onderstaande tabel.

Willekeurig 1 thread lezen, IOPS
Willekeurig 1 thread schrijven, IOPS
Willekeurig gelezen 128 threads, IOPS
Willekeurig schrijven 128 threads, IOPS

schijf
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

Het is gemakkelijk in te zien dat het gebruik van een hardwarecontroller resulteert in een hogere latentie en een prestatieverlies in vergelijking met softwareoplossingen.

Conclusie

Het lijkt irrationeel om hardwareoplossingen te gebruiken om disk-arrays van twee schijven te maken. Er zijn echter taken waarbij het gebruik van RAID-controllers gerechtvaardigd is. Met de komst van controllers die de NVMe-interface ondersteunen, hebben gebruikers de mogelijkheid om snellere SSD's in hun projecten te gebruiken.

RAID-arrays op NVMe

Alleen geregistreerde gebruikers kunnen deelnemen aan het onderzoek. Inloggen, Alsjeblieft.

Maakt u gebruik van RAID-oplossingen?

  • 29,6%Ja, hardwareoplossingen32

  • 50,0%Ja, softwareoplossingen54

  • 16,7%Geen18

  • 3,7%Geen RAID nodig4

108 gebruikers hebben gestemd. 14 gebruikers onthielden zich van stemming.

Bron: www.habr.com

Voeg een reactie