NVMe RAID tömbök

NVMe RAID tömbök
Ebben a cikkben különböző RAID tömbök szervezési módjairól beszélünk, és bemutatjuk az egyik első hardveres RAID vezérlőt, amely támogatja az NVMe-t.

A RAID technológia felhasználásának sokfélesége a szerver szegmensben található. Az ügyfél szegmensben általában kizárólag szoftveres RAID0 vagy RAID1 használatos két lemezen.

Ebben a cikkben rövid áttekintést nyújtunk a RAID technológiáról, valamint egy rövid útmutatót adunk három különböző eszköz segítségével történő RAID tömbök létrehozásához, és összehasonlítjuk az egyes módszerek használata esetén a virtuális lemezek teljesítményét.

Mi az a RAID?

Wikipedia adtó egy kimerítő definíciót a RAID technológiáról:

RAID (angol. Redundant Array of Independent Disks — független (önálló) lemezek redundáns tömbje) — egy adatok virtualizálására szolgáló technológia, amely lehetővé teszi több fizikai tárolóeszköz logikai modulba való egyesítését a megbízhatóság és a teljesítmény növelése érdekében.

A lemez tömbök konfigurálása és az alkalmazott technológiák a választott RAID szinttőlfügg. A RAID szintek szabványosítva vannak a Common RAID Disk Data Formatspecifikációjában. Ez sok RAID szintet ír le, de a legelterjedtebbnek a RAID0, RAID1, RAID5 és RAID6 számítanak.

RAID0, vagy Csíkok, ez egy RAID szint, amely két vagy több fizikai lemezt egy logikai egységgé egyesít. A logikai lemez mérete ekkor megegyezik a tömbbe tartozó fizikai lemezek méretének összegével. Ezen a RAID szinten nincs redundancia, és ha az egyik lemez meghibásodik, akkor az összes adat elveszhet a virtuális lemezen.

Szint RAID1, vagy Tükör, az adatokat azonos másolatokban hozza létre két vagy több lemezen. A virtuális lemez mérete nem haladja meg a fizikai lemezek közül a legkisebb méretet. A RAID1 virtuális lemezen lévő adatok akkor is hozzáférhetők, ha a tömbből legalább egy fizikai lemez működik. A RAID1 használata redundanciát ad, de meglehetősen drága megoldás, mivel két vagy több lemez esetén csak egy lemez kapacitása áll rendelkezésre.

Szint RAID5 megoldja a költségesség problémáját. RAID5 szintű tömb létrehozásához legalább 3 lemez szükséges, amely esetén a tömb ellenáll egy lemez meghibásodásának. A RAID5-ben az adatok blokkokban tárolódnak ellenőrző összeggel. Nincs szigorú felosztás az adathordozók és az ellenőrző összeggel ellátott lemezek között. A RAID5-ös ellenőrző összeg az N-1 blokk XOR műveletének eredménye, amelyet mindegyik lemezről vettek.

Bár a RAID-tömbök növelik a redundanciát és biztosítanak tartalékolást, nem alkalmasak biztonsági másolatok tárolására.

Egy rövid áttekintés után a RAID-tömbök típusairól áttérhetünk a készülékekre és programokra, amelyek lehetővé teszik a lemeztömbök összegyűjtését és használatát.

RAID-vezérlők típusai

Két módja van a RAID-tömbök létrehozásának és használatának: hardveres és szoftveres. Az alábbi megoldásokat fogjuk áttekinteni:

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

Érdemes megjegyezni, hogy az Intel® megoldás egy chipkészleten működik, ezért felmerül a kérdés, hogy ez egy hardveres vagy szoftveres megoldás. Például a VMWare ESXi hypervisor szoftveresnek tekinti a VROC-ot, és hivatalosan nem támogatja.

Linux Software RAID

A szoftveres RAID-tömbök a Linux operációs rendszer családján belül elterjedt megoldásnak számítanak mind a kliens-, mind a szerver szegmensben. Ami a tömb létrehozásához szükséges, az az mdadm eszköz és néhány blokkeszköz. Az egyetlen követelmény, amelyet a Linux Software RAID támaszt a felhasznált lemezekkel szemben, hogy blokkeszköznek kell lenniük, amely elérhető a rendszer számára.

Az eszköz- és szoftverköltségek elmaradása nyilvánvaló előny ennek a megoldásnak. A Linux Software RAID a processzoridő áráért szervezi a lemeztömböket. A támogatott RAID szintjek listáját és a jelenlegi lemeztömbök állapotát az mdstat fájlban találhatjuk, amely a procfs gyökerében található:

root@grindelwald:~# cat /proc/mdstat 
Személyiségek: [linear] [multipath] [raid0] [raid1] [raid10] 
felhasználatlan eszközök:

A RAID szintek támogatásához a megfelelő kernelmodul csatlakoztatása szükséges, például:

root@grindelwald:~# modprobe raid456
root@grindelwald:~# cat /proc/mdstat 
Személyiségek: [linear] [multipath] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] 
felhasználatlan eszközök:

Minden művelet a lemeztömbökkel az mdadm parancssori eszközzel történik. A lemeztömb összeszerelése egy parancsban történik:

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

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

Intel® Virtuális RAID A CPU-n

NVMe RAID tömbökIntel® VROC Standard Hardver Kulcs
Az Intel® Virtuális RAID A CPU-n (VROC) egy szoftveres és hardveres technológia, amely RAID tömbök létrehozására szolgál az Intel® chipkészletek alapján. Ez a technológia főleg az Intel® Xeon® Skálázható processzorokat támogató alaplapokhoz érhető el. Alapértelmezés szerint a VROC nem elérhető. Aktiválásához telepíteni kell a VROC hardveres licenckulcsát.

A VROC standard licenc lehetővé teszi a 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üttműködik az Intel® Volume Management Device (VMD) szolgáltatással, amely lehetővé teszi az NVMe interfésszel rendelkező meghajtók hot swap-olását.

NVMe RAID tömbökIntel® VROC standard licenccel A tömbök beállítása a Setup Utility-n keresztül történik a szerver indításakor. A lapfülön Advanced megjelenik az Intel® Virtuális RAID A CPU-n tétel, ahol beállíthatók a lemeztömbök.

NVMe RAID tömbökRAID1 tömb létrehozása két meghajtón
Az Intel® VROC technológiának vannak „ütőkártyái”. A VROC segítségével létrehozott lemeztömbök kompatibilisek a Linux Software RAID-dal. Ez azt jelenti, hogy a tömbök állapotát a /proc/mdstat fájlban lehet nyomon követni, adminisztrálni pedig az mdadm segítségével. Ezt a „jellemzőt” az Intel hivatalosan támogatja. A RAID1 konfigurálása után a Setup Utility-ben látható a meghajtók szinkronizálása az OS-ben:

root@grindelwald:~# cat /proc/mdstat 
Személyiségek: [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md126: aktív raid1 nvme2n1[1] nvme1n1[0]
      1855832064 blokkok szuper külső: /md127/0 [2/2] [UU]
      [>....................]  resync =  1.3% (24207232/1855832064) finish=148.2min speed=205933K/sec
      
md127: inaktív nvme1n1[1](S) nvme2n1[0](S)
      10402 blokkok szuper külső: imsm
       
használaton kívüli eszközök: <none>

Megjegyzendő, hogy az mdadm nem alkalmas VROC tömbök létrehozására (a létrehozott tömbök Linux SW RAID-ként fognak működni), de a lemezek cseréje és a tömbök szétszerelése lehetséges.

LSI MegaRAID 9460-8i

NVMe RAID tömbökAz LSI MegaRAID 9460-8i vezérlő megjelenése
A RAID vezérlő egy önálló hardveres megoldás. A vezérlő csak a közvetlenül csatlakoztatott meghajtókkal működik. Ez a RAID vezérlő akár 24 NVMe interfésszel rendelkező meghajtót is támogat. Az NVMe támogatás kiemeli ezt a vezérlőt a többi közül.

NVMe RAID tömbökA hardver vezérlő főmenüje
Az UEFI üzemmód használatakor a vezérlő beállításai az Setup Utility-be integrálódnak. Az VROC-hoz képest a hardveres vezérlő menüje jelentősen bonyolultabbnak tűnik.

NVMe RAID tömbökRAID1 létrehozása két lemezen
A hardveres vezérlőn lévő lemezkészletek beállításának magyarázata meglehetősen bonyolult téma, amely teljes cikk tárgyát képezheti. Itt most csak a RAID0 és RAID1 alapértelmezett beállításokkal való létrehozására korlátozódunk.

A hardveres vezérlőhöz csatlakoztatott lemezek nem láthatók az operációs rendszer számára. Ehelyett a vezérlő „elrejti” az összes RAID-tömböt SAS-meghajtókként. A vezérlőhöz csatlakoztatott, de a lemezkészletbe nem tartozó meghajtók 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] (helyi build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== AZ INFORMÁCIÓS SZEKCIÓ KEZDETE ===
Gyártó:               AVAGO
Termék:              MR9460-8i
Változat:             5.14
Megfelelőség:        SPC-3
Felhasználói kapacitás: 1,999,844,147,200 byte [1.99 TB]
Logikai blokk mérete: 512 byte
Forgási sebesség:      Szilárdtest-meghajtó
Logikai egység azonosító: 0x000000000000000000000000000000
Sorozatszám:        00000000000000000000000000000000
Eszköztípus:          lemez
Helyi idő:        2020. október 11. Sun 16:27:59 MSK
SMART támogatás:     Nem elérhető - az eszköz nem rendelkezik SMART képességgel.

Annak ellenére, hogy SAS-meghajtókként álcázva vannak, az NVMe tömbök PCIe sebességgel működnek. Ez a tulajdonság azonban lehetővé teszi, hogy NVMe-ről indítsunk Legacy módban.

Tesztkörnyezet

A lemezkészletek szervezésének minden módjának megvannak a saját fizikai előnyei és hátrányai. De van-e különbség a teljesítményben a lemezkészletek használata során?

A maximális objektivitás érdekében minden teszt ugyanazon a szerveren fog zajlani. A konfigurációja:

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

A tesztelt eszközök a P4510, amelynek egy fele az alaplaphoz csatlakozik, míg a másik a RAID-vezérlőhöz. Az M.2 meghajtón az Ubuntu 20.04 operációs rendszer található, és a tesztek a fio 3.16 verzió használatával fognak végrehajtódni.

Tesztelés

Elsősorban a lemezkezelés késleltetését fogjuk ellenőrizni. A teszt egy szálon fut, a blokk mérete 4 KB. Minden teszt időtartama 5 perc. A teszt megkezdése előtt a megfelelő blokk eszközhöz a none beállítást adjuk I/O ütemezőként. A fio parancs a következőképpen néz ki:

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

A fenti fio eredményekből az clat 99,00%-ot vesszük. Az eredmények az alábbi táblázatban találhatók.

Véletlenszerű olvasás, μs
Véletlenszerű írás, μs

Lemez
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ési késleltetések mellett szeretnénk látni a virtuális tárolók teljesítményét és összehasonlítani a fizikai lemez teljesítményével. A fio futtatásához szükséges parancs:

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

A teljesítmény az I/O műveletek számával mérhető. Az eredmények az alábbi táblázatban találhatók.

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

Lemez
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 észlelhető, hogy a hardveres vezérlő használata késleltetéseket növel és teljesítménycsökkentést okoz a szoftveres megoldásokhoz képest.

Zárás

A hardveres megoldások használata két lemezből álló tömb létrehozására nem tűnik racionálisnak. Ennek ellenére léteznek olyan feladatok, ahol a RAID vezérlők használata indokolt. A NVMe interfészt támogató vezérlők megjelenésével a felhasználók lehetőséget kapnak, hogy gyorsabb SSD-ket használjanak projektjeikben.

NVMe RAID tömbök

Csak a regisztrált felhasználók vehetnek részt a szavazáson. Kérem, jelentkezzen be., kérem.

RAID megoldásokat használ?

  • 29,6%Igen, hardveres megoldások 32

  • 50,0%Igen, szoftveres megoldások 54

  • 16,7%Nem 18

  • 3,7%RAID-ra nincs szükség 4

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

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster