RAID tömbök az NVMe-n

RAID tömbök az NVMe-n
Ebben a cikkben a RAID-tömbök rendszerezésének különböző módjairól fogunk beszélni, és bemutatjuk az egyik első NVMe-támogatással rendelkező hardveres RAID-vezérlőt.

A RAID technológia minden alkalmazási változata megtalálható a szerverszegmensben. Az ügyfélszegmensben leggyakrabban csak a két lemezen lévő RAID0 vagy RAID1 szoftvert használják.

Ez a cikk rövid áttekintést nyújt a RAID technológiáról, egy rövid oktatóanyagot a RAID-tömbök három különböző eszközzel történő létrehozásáról, valamint a virtuális lemezek teljesítményének összehasonlítását az egyes módszerek használatával.

Mi az a RAID?

Wikipedia a RAID technológia átfogó meghatározását adja:

RAID (Magyar Független lemezek felesleges tömbje - független (független) lemezek redundáns tömbje) - adatvirtualizációs technológia több fizikai lemezeszköz logikai modullá való kombinálására a hibatűrés és a teljesítmény növelése érdekében.

A lemeztömbök konfigurációja és a használt technológiák a kiválasztotttól függenek RAID szint. A RAID-szintek szabványosítva vannak a specifikációban Általános RAID-lemez adatformátum. Számos RAID szintet ír le, de a leggyakoribbak a RAID0, RAID1, RAID5 és RAID6.

RAID0Vagy Stripes, egy RAID-szint, amely két vagy több fizikai meghajtót egyesít egyetlen logikai meghajtóban. A logikai lemez térfogata megegyezik a tömbben lévő fizikai lemezek köteteinek összegével. Ezen a RAID-szinten nincs redundancia, és egy meghajtó meghibásodása a virtuális lemez összes adatának elvesztéséhez vezethet.

Szint RAID1Vagy Tükör, azonos másolatokat hoz létre két vagy több lemezen. A virtuális lemez mérete nem haladja meg a fizikai lemezek minimális méretét. A RAID1 virtuális lemezen lévő adatok mindaddig elérhetők lesznek, amíg a tömbből legalább egy fizikai lemez működik. A RAID1 használata növeli a redundanciát, de meglehetősen költséges megoldás, mivel két vagy több lemezből álló tömbökben csak egy kapacitás áll rendelkezésre.

Szint RAID5 megoldja a magas költségek problémáját. Egy RAID5 szintű tömb létrehozásához legalább 3 lemezre van szükség, és a tömb ellenáll egy lemez meghibásodásának. A RAID5-ben lévő adatok blokkban, ellenőrző összegekkel vannak tárolva. Nincs szigorú felosztás az adatlemezek és az ellenőrzőösszegű lemezek között. A RAID5 ellenőrzőösszegei egy XOR művelet eredménye, amelyet N-1 blokkra alkalmaznak, mindegyik más-más lemezről.

Bár a RAID tömbök növelik a redundanciát és redundanciát biztosítanak, nem alkalmasak biztonsági mentések tárolására.

A RAID-tömbök típusainak rövid ismertetése után áttérhet azokra az eszközökre és programokra, amelyek lehetővé teszik lemeztömbök összeállítását és használatát.

A RAID vezérlők típusai

A RAID-tömbök létrehozásának és használatának két módja van: hardver és szoftver. A következő megoldásokat fogjuk mérlegelni:

  • Linux szoftver RAID.
  • Intel® Virtuális RAID CPU-n.
  • LSI MegaRAID 9460-8i.

Vegye figyelembe, hogy az Intel® megoldás chipkészleten fut, ami felveti a kérdést, hogy hardveres vagy szoftveres megoldásról van-e szó. Például a VMWare ESXi hypervisor figyelembe veszi a VROC szoftvert, és hivatalosan nem támogatja azt.

Linux szoftver RAID

A Linux OS család szoftveres RAID tömbjei meglehetősen gyakori megoldások mind a kliens, mind a szerver szegmensben. Egy tömb létrehozásához mindössze az mdadm segédprogramra és néhány blokkeszközre van szüksége. A Linux Software RAID egyetlen követelménye az általa használt meghajtókon, hogy a rendszer számára elérhető blokkeszköz legyen.

Ennek a módszernek a nyilvánvaló előnye a berendezések és szoftverek költségeinek hiánya. A Linux Software RAID rendszerezi a lemeztömböket CPU-idő árán. A támogatott RAID szintek listája és az aktuális lemeztömbök állapota az mdstat fájlban tekinthető meg, amely a procfs gyökérben található:

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

A RAID-szintek támogatása a megfelelő kernelmodul csatlakoztatásával érhető el, például:

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

A lemeztömbökkel végzett összes művelet az mdadm parancssori segédprogramon keresztül történik. A lemeztömb egyetlen paranccsal van összeállítva:

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

A parancs végrehajtása után a /dev/md0 blokkeszköz megjelenik a rendszerben, amely virtuális lemezként képviseli Önt.

Intel® Virtuális RAID CPU-n

RAID tömbök az NVMe-nIntel® VROC szabványos hardverkulcs
Az Intel® Virtual RAID On CPU (VROC) egy hardver- és szoftvertechnológia az Intel® lapkakészleteken alapuló RAID-tömbök létrehozására. Ez a technológia elsősorban az Intel® Xeon® Scalable processzorokat támogató alaplapokhoz érhető el. Alapértelmezés szerint a VROC nem érhető el. Az aktiváláshoz telepítenie kell egy VROC hardver licenckulcsot.

A szabványos VROC licenc lehetővé teszi 0, 1 és 10 RAID szintű lemeztömbök létrehozását. A prémium verzió ezt a listát RAID5 támogatással bővíti.

Az Intel® VROC technológia a modern alaplapokon együtt működik az Intel® Volume Management Device (VMD) eszközzel, amely üzem közbeni cserét biztosít az NVMe meghajtók számára.

RAID tömbök az NVMe-nIntel® VROC szabványos licenc A tömbök beállítása a Setup Utility segítségével történik a kiszolgáló indításakor. A lapon Részletes Megjelenik az Intel® Virtual RAID on CPU elem, ahol konfigurálhatja a lemeztömböket.

RAID tömbök az NVMe-nRAID1 tömb létrehozása két meghajtón
Az Intel® VROC technológia saját ászokkal rendelkezik. A VROC segítségével épített lemeztömbök kompatibilisek a Linux Software RAID-del. Ez azt jelenti, hogy a tömbök állapota figyelhető a /proc/mdstat fájlban, és az mdadm-en keresztül adminisztrálható. Ezt a „funkciót” az Intel hivatalosan is támogatja. Miután összeállította a RAID1-et a Setup Utility programban, megfigyelheti a meghajtók szinkronizálását az operációs rendszerben:

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>

Vegye figyelembe, hogy nem állíthat össze tömböket a VROC-n az mdadm használatával (az összeállított tömbök Linux SW RAID-ek lesznek), de cserélheti bennük a lemezeket, és szétszerelheti a tömböket.

LSI MegaRAID 9460-8i

RAID tömbök az NVMe-nAz LSI MegaRAID 9460-8i vezérlő megjelenése
A RAID-vezérlő egy önálló hardvermegoldás. A vezérlő csak közvetlenül csatlakoztatott meghajtókkal működik. Ez a RAID-vezérlő legfeljebb 24 NVMe-meghajtót támogat. Ezt a vezérlőt az NVMe támogatás különbözteti meg sok mástól.

RAID tömbök az NVMe-nA hardvervezérlő főmenüje
UEFI mód használatakor a vezérlő beállításai a Setup Utility programba vannak integrálva. A VROC-hoz képest a hardvervezérlő menüje sokkal összetettebbnek tűnik.

RAID tömbök az NVMe-nRAID1 létrehozása két lemezen
A lemeztömbök hardvervezérlőn történő konfigurálásának elmagyarázása meglehetősen kényes téma, és ez lehet az oka egy teljes értékű cikknek. Itt egyszerűen csak a RAID0 és RAID1 létrehozására szorítkozunk az alapértelmezett beállításokkal.

A hardvervezérlőhöz csatlakoztatott lemezek nem láthatók az operációs rendszer számára. Ehelyett a vezérlő az összes RAID-tömböt SAS-meghajtóként „maszkolja”. A vezérlőhöz csatlakoztatott meghajtók, amelyek nem részei a lemeztömbnek, nem lesznek elérhetők az operációs rendszer számára.

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.

Annak ellenére, hogy SAS-meghajtóknak álcázzák őket, az NVMe tömbök PCIe-sebességgel működnek. Ez a funkció azonban lehetővé teszi a rendszerindítást az NVMe-ről a Legacy rendszerben.

Próbapad

A lemeztömbök rendezésének minden módszerének megvannak a maga fizikai előnyei és hátrányai. De van-e teljesítménybeli különbség a lemeztömbök használatakor?

A maximális igazságosság érdekében minden tesztet ugyanazon a szerveren hajtanak végre. A konfigurációja:

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

A tesztegységek a P4510, amelyek egyik fele az alaplaphoz, a másik fele a RAID vezérlőhöz csatlakozik. Az M.2-n az Ubuntu 20.04 fut, és a tesztek a fio 3.16-os verziójával futnak majd.

tesztelés

Először is nézzük meg a késéseket a lemezzel való munka során. A teszt egy szálban fut, a blokk mérete 4 KB. Minden teszt 5 percig tart. Indítás előtt a megfelelő blokkeszköz nincs beállítva I/O ütemezőként. A fio parancs így néz ki:

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

A fio eredményekből clat 99.00%-ot vesszük. Az eredményeket az alábbi táblázat mutatja.

Véletlenszerű leolvasás, μs
Véletlenszerű felvétel, μs

korong
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

Az adatokhoz való hozzáférés késése mellett szeretném látni a virtuális meghajtók teljesítményét, és összehasonlítani őket egy fizikai lemez teljesítményével. Parancs a fio futtatásához:

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

A teljesítményt az I/O műveletekkel mérik. Az eredményeket az alábbi táblázat mutatja be.

Véletlenszerű olvasás 1 szál, IOPS
Véletlenszerű írás 1 szál, IOPS
Véletlenszerű olvasás 128 szál, IOPS
Véletlenszerű írás 128 szál, IOPS

korong
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

Könnyen belátható, hogy a hardveres vezérlő használata megnövekedett késleltetést és teljesítménycsökkenést eredményez a szoftveres megoldásokhoz képest.

Következtetés

A hardveres megoldások használata két lemezből lemeztömbök létrehozására irracionálisnak tűnik. Vannak azonban olyan feladatok, ahol a RAID vezérlők használata indokolt. Az NVMe felületet támogató vezérlők megjelenésével a felhasználóknak lehetőségük nyílik gyorsabb SSD-ket használni projektjeikben.

RAID tömbök az NVMe-n

A felmérésben csak regisztrált felhasználók vehetnek részt. Bejelentkezés, kérem.

RAID megoldásokat használ?

  • 29,6%Igen, hardveres megoldások32

  • 50,0%Igen, szoftveres megoldások54

  • 16,7%No18

  • 3,7%Nincs szükség RAID-re 4

108 felhasználó szavazott. 14 felhasználó tartózkodott.

Forrás: will.com

Hozzászólás