
În acest articol, vom discuta despre diferitele moduri de organizare a RAID-urilor și vom prezenta unul dintre primele controller-e RAID hardware cu suport pentru NVMe.
Toată diversitatea aplicațiilor tehnologiei RAID este întâlnită în segmentul serverelor. În segmentul client, este utilizat cel mai frecvent RAID0 sau RAID1 software pe două discuri.
În acest articol va fi o scurtă prezentare a tehnologiei RAID, o mică instrucțiune pentru crearea RAID-urilor cu ajutorul a trei instrumente diferite și o comparație a performanței discurilor virtuale folosind fiecare dintre metode.
Ce este RAID?
oferă o definiție cuprinzătoare a tehnologiei RAID:
RAID (eng. Redundant Array of Independent Disks — un aranjament redundant de discuri independente) — tehnologia de virtualizare a datelor pentru combinarea mai multor dispozitive fizice de stocare într-un modul logic pentru a îmbunătăți reziliența și performanța.
Configurația array-urilor de discuri și tehnologiile utilizate depind de nivelul RAID ales. nivel RAID (RAID level). Nivelurile RAID sunt standardizate în specificația . Aceasta descrie multiple niveluri RAID, însă cele mai comune sunt considerate RAID0, RAID1, RAID5 și RAID6.
RAID0, sau Stripes, este un nivel de RAID care combină două sau mai multe discuri fizice într-unul logic. Volumul discului logic este egal cu suma volumelor discurilor fizice incluse în array. La acest nivel de RAID nu există redundanță, iar defectarea unui disc poate duce la pierderea tuturor datelor din discul virtual.
Nivel RAID1, sau Mirror, creează copii identice ale datelor pe două sau mai multe discuri. Volumul discului virtual nu depășește volumul celui mai mic dintre discurile fizice. Datele de pe discul virtual RAID1 vor fi accesibile atâta timp cât măcar un disc fizic din array funcționează. Utilizarea RAID1 adaugă redundanță, dar este o soluție destul de costisitoare, deoarece în array-urile cu două sau mai multe discuri, este disponibil volumul numai al unuia.
Nivel RAID5 rezolvă problema costurilor ridicate. Pentru a crea un array cu nivel RAID5 sunt necesare minimum 3 discuri, iar array-ul este rezistent la defectarea unui disc. Datele în RAID5 sunt stocate în blocuri cu sume de control. Nu există o diviziune strictă între discurile cu date și cele cu sume de control. Sumele de control în RAID5 sunt rezultatul operației XOR aplicate asupra N-1 blocuri, fiecare dintre acestea fiind preluat de pe propriul disc.
Deși array-urile RAID cresc redundanța și oferă rezervă, ele nu sunt potrivite pentru stocarea copiilor de rezervă.
După o scurtă prezentare a tipurilor de array-uri RAID, putem trece la dispozitivele și programele care permit asamblarea și utilizarea array-urilor pe discuri.
Tipuri de controlere RAID
Există două metode de a crea și utiliza array-uri RAID: hardware și software. Vom analiza următoarele soluții:
- RAID Software Linux.
- Intel® Virtual RAID On CPU.
- LSI MegaRAID 9460-8i.
Este de remarcat că soluția Intel® funcționează pe chipset, ceea ce ridică întrebarea dacă este o soluție hardware sau software. De exemplu, hypervisorul VMWare ESXi consideră VROC software și nu îl suportă oficial.
RAID Software Linux
Array-urile RAID software în familia sistemelor de operare Linux sunt o soluție destul de răspândită atât în segmentul client, cât și în cel server. Tot ce ai nevoie pentru a crea un array este utilitarul mdadm și câteva dispozitive bloc. Singura cerință pe care RAID Software Linux o are față de unitățile utilizate este că acestea să fie dispozitive bloc, accesibile sistemului.
Lipsa costurilor pentru hardware și software este un avantaj evident al acestei metode. RAID Software Linux organizează array-urile de discuri la costul timpului procesorului. Lista nivelurilor RAID suportate și starea curentă a array-urilor de discuri poate fi văzută în fișierul mdstat, care se află în rădăcina procfs:
root@grindelwald:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid10]
unused devices:
Suportul pentru nivelurile RAID se adaugă prin conectarea modulului kernel corespunzător, de exemplu:
root@grindelwald:~# modprobe raid456
root@grindelwald:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
unused devices:Toate operațiunile cu array-uri de discuri se realizează prin utilitarul de linie de comandă mdadm. Asamblarea array-ului de discuri se face într-o singură comandă:
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/nvme1n1 /dev/nvme2n1După executarea acestei comenzi, în sistem va apărea un dispozitiv bloc /dev/md0, care reprezintă un disc virtual.
Intel® Virtual RAID On CPU
Intel® VROC Standard Hardware Key
Intel® Virtual RAID On CPU (VROC) este o tehnologie software și hardware pentru crearea unor arii RAID bazate pe chipset-urile Intel®. Această tehnologie este disponibilă în principal pentru plăcile de bază care suportă procesoarele Intel® Xeon® Scalable. Implicit, VROC nu este accesibil. Pentru a-l activa, este necesar să se instaleze o cheie de licență hardware VROC.
Licența standard VROC permite crearea de arii de disc cu niveluri RAID 0, 1 și 10. Versiunea premium extinde această listă cu suport pentru RAID5.
Tehnologia Intel® VROC de pe plăcile de bază moderne funcționează împreună cu Intel® Volume Management Device (VMD), care oferă posibilitatea de schimbare la cald pentru unitățile cu interfața NVMe.
Intel® VROC cu licență standard Configurarea ariilor se face prin Setup Utility la pornirea serverului. Pe tab-ul Avansat apare opțiunea Intel® Virtual RAID on CPU, unde pot fi configurate ariile de disc.
Crearea unui arrei RAID1 pe două unități
Tehnologia Intel® VROC are propriile „trucuri” ascunse. Ariile de disc create cu ajutorul VROC sunt compatibile cu Linux Software RAID. Aceasta înseamnă că starea ariilor poate fi monitorizată în /proc/mdstat, iar administrarea se poate face prin mdadm. Această „caracteristică” este susținută oficial de Intel. După asamblarea RAID1 în Setup Utility, se poate observa sincronizarea unităților în OS:
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>Este de remarcat că prin mdadm nu se pot asambla arii pe VROC (ariile asamblate vor fi Linux SW RAID), dar unitățile pot fi schimbate și ariile pot fi descompuse.
LSI MegaRAID 9460-8i
Aspectul controlerului LSI MegaRAID 9460-8i
Controlerul RAID este o soluție hardware distinctă. Controlerul funcționează doar cu unitățile conectate direct la el. Acest controler RAID suportă până la 24 de unități cu interfața NVMe. Suportul NVMe este ceea ce diferențiază acest controler de multe altele.
Meniul principal al controlerului hardware
Când utilizați modul UEFI, setările controller-ului sunt integrate în Setup Utility. Comparativ cu VROC, meniul controller-ului hardware arată mult mai complex.
Crearea RAID1 pe două discuri
Explicarea configurării array-urilor de discuri pe un controller hardware este o temă destul de delicată și ar putea deveni subiectul unui articol pe deplin. Aici ne vom limita doar la crearea RAID0 și RAID1 cu setările implicite.
Discurile conectate la controller-ul hardware nu sunt vizibile sistemului de operare. În schimb, controller-ul "maschează" toate array-urile RAID ca unități SAS. Unitățile conectate la controller, dar care nu fac parte din array-ul de discuri, nu vor fi accesibile sistemului de operare.
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
=== ÎNCEPUTUL SECȚIUNII DE INFORMAȚII ===
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.În ciuda măștii sub unități SAS, array-urile NVMe vor funcționa la viteze PCIe. Cu toate acestea, această caracteristică permite bootarea de pe NVMe în Legacy.
Banc de testare
Fiecare dintre metodele de organizare a array-urilor de discuri are propriile avantaje și dezavantaje fizice. Dar există vreo diferență de performanță atunci când se lucrează cu array-uri de discuri?
Pentru a atinge o maximă corectitudine, toate testele vor fi efectuate pe același server. Configurația sa este:
- 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.
Discurile testate sunt P4510, jumătate dintre ele fiind conectate la placa de bază, iar cealaltă jumătate la controller-ul RAID. Pe M.2 este instalat sistemul de operare Ubuntu 20.04, iar testele vor fi efectuate folosind fio versiunea 3.16.
Testare
În primul rând, vom verifica întârzierile la lucru cu discul. Testul se desfășoară pe un singur fir, cu dimensiunea blocului de 4 KB. Fiecare test durează 5 minute. Înainte de începere, pentru dispozitivul bloc corespunzător, se setează none ca planificator I/O. Comanda fio arată astfel:
fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio --iodepth=1 --loops=1000 --runtime=300 --rw= --filename=Din rezultatele fio luăm clat 99.00%. Rezultatele sunt prezentate în tabelul de mai jos.
Citire aleatorie, μs
Scriere aleatorie, μs
Disc
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
Pe lângă întârzierile în accesarea datelor, vrem să vedem performanța unităților virtuale și să o comparăm cu performanța discului fizic. Comanda pentru a lansa fio:
fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio --loops=1000 --runtime=300 --iodepth= --rw= --filename=Performanța se măsoară în numărul de operațiuni de intrare-ieșire. Rezultatele sunt prezentate în tabelul de mai jos.
Citire aleatorie 1 fir, IOPS
Scriere aleatorie 1 fir, IOPS
Citire aleatorie 128 fire, IOPS
Scriere aleatorie 128 fire, IOPS
Disc
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
Este ușor de observat că utilizarea unui controler hardware determină creșterea întârzierilor și scăderea performanței în comparație cu soluțiile software.
Concluzie
Utilizarea soluțiilor hardware pentru a crea matrice de discuri din două discuri pare a fi irrațională. Totuși, există sarcini unde utilizarea controlerelor RAID este justificată. Odată cu apariția controlerelor cu suport pentru interfața NVMe, utilizatorii au ocazia să folosească SSD-uri mai rapide în proiectele lor.
Numai utilizatorii înregistrați pot participa la sondaj. , vă rugăm.
Folosiți soluții RAID?
29,6%Da, soluții hardware32
50,0%Da, soluții software54
16,7%Nu18
3,7%Nu am nevoie de RAID4
Au votat 108 utilizatori. S-au abținut 14 utilizatori.
Sursa: habr.com
