RAID-arrayer pÄ NVMe

RAID-arrayer pÄ NVMe
I denna artikel kommer vi att berÀtta om olika sÀtt att organisera RAID-arrayer, samt visa en av de första hÄrdvarubaserade RAID-kontrollerna med stöd för NVMe.

Alla olika tillÀmpningar av RAID-teknologin förekommer i serversegmentet. I klientsegmentet anvÀnds oftast enbart programvarubaserad RAID0 eller RAID1 med tvÄ diskar.

I denna artikel kommer det att ges en kort översikt av RAID-teknologin, en liten instruktion för att skapa RAID-arrayer med hjÀlp av tre olika verktyg och en jÀmförelse av prestandan hos virtuella diskar vid anvÀndning av varje metod.

Vad Àr RAID?

Wikipedia ger en uttömmande definition av RAID-teknologin:

RAID (eng. Redundant Array of Independent Disks — redundant array av oberoende (sjĂ€lvstĂ€ndiga) diskar) — Ă€r en data virtualiseringsteknik för att kombinera flera fysiska lagringsenheter till en logisk modul för att öka bĂ„de redundans och prestanda.

Konfigurationen av diskarrayer och de teknologier som anvÀnds Àr beroende av den valda RAID-nivÄn (RAID level). RAID-nivÄer standardiseras i specifikationen Common RAID Disk Data Format. Den beskriver mÄnga RAID-nivÄer, men de mest förekommande anses vara RAID0, RAID1, RAID5 och RAID6.

RAID0, eller Stripes, — Ă€r en RAID-nivĂ„ som kombinerar tvĂ„ eller flera fysiska diskar till en logisk. Volymen av den logiska disken Ă€r summan av volymerna av de fysiska diskarna i arrayen. PĂ„ denna nivĂ„ av RAID finns det ingen redundans, och ett fel pĂ„ en disk kan leda till förlust av alla data pĂ„ den virtuella disken.

NivÄ RAID1, eller Mirror, skapar identiska kopior av data pÄ tvÄ eller fler diskar. Volymen av den virtuella disken överskrider inte volymen av den minsta av de fysiska diskarna. Data pÄ den virtuella disken RAID1 kommer att vara tillgÀngliga sÄ lÀnge minst en fysisk disk i arrayen fungerar. AnvÀndningen av RAID1 tillför redundans, men Àr en ganska kostsam lösning, eftersom i arrayer med tvÄ eller fler diskar Àr det endast volymen av en disk som Àr tillgÀnglig.

NivÄ RAID5 lösning pÄ kostnadsfrÄgan. För att skapa en RAID5-array behövs minst 3 enheter, och arrayen Àr motstÄndskraftig mot att en enhet gÄr sönder. Data i RAID5 lagras i block med kontrollsummor. Det finns ingen strikt uppdelning mellan enheter som lagrar data och de som innehÄller kontrollsummor. Kontrollsummorna i RAID5 Àr resultatet av en XOR-operation som tillÀmpas pÄ N-1 block, dÀr varje block tas frÄn sin egen enhet.

Även om RAID-arrayer ökar redundansen och erbjuder reservdelar, Ă€r de inte lĂ€mpliga för att lagra sĂ€kerhetskopior.

Efter en kort översikt över olika typer av RAID-arrayer kan vi gÄ vidare till enheter och program som möjliggör skapandet och anvÀndningen av diskarrayer.

Typer av RAID-kontroller

Det finns tvÄ sÀtt att skapa och anvÀnda RAID-arrayer: hÄrdvara och mjukvara. Vi kommer att titta pÄ följande lösningar:

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

Det Àr vÀrt att notera att IntelŸ-lösningen fungerar pÄ chippet, vilket vÀcker frÄgan om det Àr en hÄrdvarulösning eller en mjukvarulösning. Till exempel anser hypervisor VMWare ESXi att VROC Àr mjukvarubaserat och stöder det inte officiellt.

Linux Software RAID

Mjukvaru-RAID-arrayer inom Linux OS-familjen Àr en ganska vanlig lösning bÄde inom klientsegmentet och pÄ servrar. Allt som behövs för att skapa en array Àr verktyget mdadm och nÄgra blockenheter. Det enda krav som Linux Software RAID stÀller pÄ de anvÀnda lagringsenheterna Àr att de ska vara blockenheter tillgÀngliga för systemet.

Avsaknaden av kostnader för hÄrdvara och mjukvara Àr den uppenbara fördelen med denna metod. Linux Software RAID organiserar diskarrayer till priset av processortid. Listan över stödda RAID-nivÄer och status för aktuella diskarrayer kan ses i filen mdstat, som finns i roten av procfs:

root@grindelwald:~# cat /proc/mdstat 
Personligheter : [linear] [multipath] [raid0] [raid1] [raid10] 
 oanvÀnda enheter:

Stöd för RAID-nivÄer lÀggs till genom att koppla in den motsvarande kÀrnmodulen, till exempel:

root@grindelwald:~# modprobe raid456
root@grindelwald:~# cat /proc/mdstat 
Personligheter : [linear] [multipath] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] 
 oanvÀnda enheter:

Alla operationer med diskarrayer utförs via kommandoradsverktyget mdadm. Samlingen av en diskarray görs i ett enda kommando:

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

Efter att ha kört det hÀr kommandot kommer ett blockenhet /dev/md0 att dyka upp i systemet, vilket representerar en virtuell disk.

IntelÂź Virtuellt RAID PĂ„ CPU

RAID-arrayer pÄ NVMeIntelŸ VROC Standard HÄrdvarulicens
IntelŸ Virtuellt RAID PÄ CPU (VROC) Àr en programvaru- och hÄrdvaruteknologi för att skapa RAID-arrayer baserat pÄ IntelŸ chipset. Denna teknologi Àr frÀmst tillgÀnglig för moderkort som stöder IntelŸ XeonŸ Scalable processorer. Som standard Àr VROC inte tillgÀngligt. För att aktivera det behöver du installera en hÄrdvarulicensnyckel för VROC.

Den standardlicens för VROC möjliggör skapande av diskarrayer med nivÄer av RAID 0, 1 och 10. Den premiumversionen utökar denna lista med stöd för RAID 5.

Teknologin IntelŸ VROC pÄ moderna moderkort fungerar tillsammans med IntelŸ Volume Management Device (VMD), vilket möjliggör hot-swapping för enheter med NVMe-grÀnssnitt.

RAID-arrayer pÄ NVMeIntelŸ VROC med standardlicens Konfiguration av arrayer görs via Setup Utility vid serverns uppstart. PÄ fliken Avancerad dyker punkt IntelŸ Virtuellt RAID pÄ CPU upp, dÀr man kan konfigurera diskarrayer.

RAID-arrayer pÄ NVMeSkapande av RAID1-array med tvÄ enheter
Teknologin IntelŸ VROC har sina "trumpeter i Àrmen". Diskarrayer som skapas med VROC Àr kompatibla med Linux Software RAID. Detta innebÀr att tillstÄndet av arrayer kan spÄras i /proc/mdstat och administreras via mdadm. Denna "funktion" stöds officiellt av Intel. Efter att RAID1 har byggts i Setup Utility kan man observera synkronisering av enheterna i OS:

root@grindelwald:~# cat /proc/mdstat 
Personligheter : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md126 : aktiv raid1 nvme2n1[1] nvme1n1[0]
      1855832064 block super extern:/md127/0 [2/2] [UU]
      [>....................]  resync =  1.3% (24207232/1855832064) finish=148.2min speed=205933K/sec
      
md127 : inaktiv nvme1n1[1](S) nvme2n1[0](S)
      10402 block super extern:imsm
       
osk anvÀnda enheter:

Notera att man inte kan skapa arrayer pÄ VROC genom mdadm (skapade arrayer kommer att vara Linux SW RAID), men man kan byta ut enheter och ta isÀr arrayer.

LSI MegaRAID 9460-8i

RAID-arrayer pÄ NVMeUtseendet pÄ LSI MegaRAID 9460-8i kontrollern
RAID-kontrollern Àr en fristÄende hÄrdvarulösning. Kontrollern fungerar endast med enheter som Àr direkt anslutna till den. Denna RAID-kontroller stöder upp till 24 enheter med NVMe-grÀnssnitt. Just stödet för NVMe sÀrskiljer denna kontroller frÄn mÄnga andra.

RAID-arrayer pÄ NVMeHuvudmenyn för hÄrdvarukontrollern
NÀr UEFI-lÀget anvÀnds integreras kontrollerinstÀllningarna i Setup Utility. JÀmfört med VROC ser menyn för den hÄrdvarubaserade kontrollen betydligt mer komplicerad ut.

RAID-arrayer pÄ NVMeSkapa RAID1 med tvÄ diskar
Förklaringen av diskarrangemang pÄ den hÄrdvarubaserade kontrollen Àr ett ganska komplext Àmne och kan bli en fullstÀndig artikel. HÀr begrÀnsar vi oss till att skapa RAID0 och RAID1 med standardinstÀllningar.

Disken, som Àr ansluten till den hÄrdvarubaserade kontrollen, syns inte av operativsystemet. IstÀllet "maskerar" kontrollern alla RAID-arrayer som SAS-enheter. Enheter som Àr anslutna till kontrollern men inte ingÄr i diskarrayen kommer inte att vara tillgÀngliga för OS:et.

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

=== START AV INFORMATIONSEKTION ===
Tillverkare:           AVAGO
Produkt:              MR9460-8i
Revision:             5.14
ÖverensstĂ€mmelse:     SPC-3
AnvÀndarkapacitet:    1,999,844,147,200 bytes [1.99 TB]
Logisk blockstorlek:  512 bytes
Rotationshastighet:    Solid State-enhet
Logisk enhets-ID:     0x000000000000000000000000000000
Serienummer:          00000000000000000000000000000000
Enhetstyp:           disk
Lokal tid Àr:        Sön 11 Okt 16:27:59 2020 MSK
SMART-stöd Àr:       OtillgÀngligt - enheten saknar SMART-kapacitet.

Trots att det maskeras som SAS-enheter kommer arrays med NVMe att fungera i PCIe-hastighet. Denna funktion gör det möjligt att starta frÄn NVMe i Legacy.

TestbÀnk

Varje metod för att organisera diskarrayer har sina fysiska fördelar och nackdelar. Men finns det nÄgon skillnad i prestanda nÀr man arbetar med diskarrayer?

För att uppnÄ maximal rÀttvisa kommer alla tester att utföras pÄ samma server. Dess konfiguration:

  • 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.

Tester utförs pÄ P4510, dÀr ena halvan Àr ansluten till moderkortet och den andra till RAID-kontrollen. Operativsystemet Ubuntu 20.04 Àr installerat pÄ M.2, och testerna kommer att genomföras med hjÀlp av fio version 3.16.

Testning

Vi börjar med att kontrollera latensen vid diskoperationer. Testet utförs i en trÄd, blockstorleken Àr 4 KB. Varje test varar i 5 minuter. Innan starten sÀtts rÀtt blockenhet till none som IO-schemalÀggare. Fio-kommandot ser ut som följer:

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

FrÄn resultaten av fio tar vi clat 99.00%. Resultaten presenteras i tabellen nedan.

SlumplÀsning, ”s
Slumpskrivning, ”s

Enhet
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

Förutom fördröjningar vid Ätkomst av data vill vi se prestandan hos virtuella enheter och jÀmföra med prestandan hos en fysisk disk. Kommandot för att köra fio:

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

Prestandan mÀts i antal in- och utdataoperationer. Resultaten presenteras i tabellen nedan.

SlumplÀsning 1 trÄd, IOPS
Slumpskrivning 1 trÄd, IOPS
SlumplÀsning 128 trÄdar, IOPS
Slumpskrivning 128 trÄdar, IOPS

Enhet
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

Det Àr lÀtt att se att anvÀndning av en hÄrdvarukontroller ger ökade fördröjningar och nedgÄngar i prestanda jÀmfört med programbaserade lösningar.

Slutsats

Att anvĂ€nda hĂ„rdvarulösningar för att skapa diskarrayer av tvĂ„ diskar verkar oekonomiskt. ÄndĂ„ finns det uppgifter dĂ€r anvĂ€ndning av RAID-kontrollrar Ă€r berĂ€ttigad. Med framkomsten av kontrollerare med stöd för NVMe-grĂ€nssnitt fĂ„r anvĂ€ndarna möjlighet att anvĂ€nda snabbare SSD:er i sina projekt.

RAID-arrayer pÄ NVMe

Endast registrerade anvÀndare kan delta i omröstningen. Logga in, tack.

AnvÀnder du RAID-lösningar?

  • 29,6%Ja, hĂ„rdvarulösningar32

  • 50,0%Ja, programvarulösningar54

  • 16,7%Nej18

  • 3,7%RAID behövs inte4

108 anvÀndare har röstat. 14 anvÀndare avstod.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster