
In diesem Artikel werden wir verschiedene Methoden zur Organisation von RAID-Arrays vorstellen und einen der ersten Hardware-RAID-Controller mit NVMe-UnterstĂŒtzung zeigen.
Die Vielfalt der Anwendungen der RAID-Technologie findet man im Serverbereich. Im Client-Bereich wird hÀufig nur Software-RAID0 oder RAID1 mit zwei Festplatten verwendet.
In diesem Artikel wird es einen kurzen Ăberblick ĂŒber die RAID-Technologie geben, eine kleine Anleitung zur Erstellung von RAID-Arrays mit drei verschiedenen Tools und einen Leistungsvergleich virtueller Laufwerke bei der Nutzung jedes Ansatzes.
Was ist RAID?
gibt eine umfassende Definition der RAID-Technologie:
RAID (engl. Redundant Array of Independent Disks â ein redundanter Array unabhĂ€ngiger (eigenstĂ€ndiger) Festplatten â ist eine Technologie zur Virtualisierung von Daten, die mehrere physische Speichermedien in ein logisches Modul zusammenfasst, um die Ausfallsicherheit und Leistung zu erhöhen.
Die Konfiguration der Speicher-Arrays und die dabei verwendeten Technologien hÀngen vom gewÀhlten RAID-Levelab. Die RAID-Level sind in der Spezifikation standardisiert. Diese beschreibt viele RAID-Level, jedoch gelten RAID0, RAID1, RAID5 und RAID6 als die am weitesten verbreiteten.
RAID0, oder Stripes, ist ein RAID-Level, das zwei oder mehr physische Festplatten zu einem logischen zusammenfasst. Das Volumen des logischen Laufwerks entspricht dabei der Summe der Volumen der im Array enthaltenen physischen Festplatten. Auf diesem RAID-Level gibt es keine Redundanz, und der Ausfall einer Festplatte kann zum Verlust aller Daten auf dem virtuellen Laufwerk fĂŒhren.
Level RAID1, oder Mirror, erstellt identische Kopien von Daten auf zwei oder mehr Festplatten. Das Volumen des virtuellen Laufwerks ĂŒberschreitet dabei nicht das Volumen der kleinsten physischen Festplatte. Daten auf dem virtuellen RAID1-Laufwerk sind verfĂŒgbar, solange mindestens eine physische Festplatte im Array funktioniert. Der Einsatz von RAID1 erhöht die Redundanz, ist jedoch eine relativ teure Lösung, da im Array aus zwei oder mehr Festplatten nur das Volumen einer Festplatte verfĂŒgbar ist.
Level RAID5 löst das Problem der Kosten. Um ein RAID5-Array zu erstellen, sind mindestens 3 Laufwerke erforderlich, wobei das Array gegen den Ausfall eines Laufwerks resistent ist. Die Daten in RAID5 werden blockweise mit Checksummen gespeichert. Es gibt keine strikte Trennung zwischen Laufwerken mit Daten und Laufwerken mit Checksummen. Die Checksummen in RAID5 sind das Ergebnis der XOR-Operation, die auf N-1 Blöcke angewendet wird, von denen jeder von einem eigenen Laufwerk stammt.
Obwohl RAID-Arrays die Redundanz erhöhen und eine Sicherung bieten, sind sie nicht fĂŒr die Speicherung von Backups geeignet.
Nach einem kurzen Ăberblick ĂŒber die Arten von RAID-Arrays können wir zu den GerĂ€ten und Programmen ĂŒbergehen, die es ermöglichen, Speicherarrays zu erstellen und zu nutzen.
Arten von RAID-Controllern
Es gibt zwei Möglichkeiten, RAID-Arrays zu erstellen und zu verwenden: hardwarebasierte und softwarebasierte. Wir werden die folgenden Lösungen betrachten:
- Linux Software RAID.
- IntelÂź Virtual RAID On CPU.
- LSI MegaRAID 9460-8i.
Es ist anzumerken, dass die IntelÂź-Lösung auf dem Chipsatz basiert, was die Frage aufwirft, ob es sich um eine Hardware- oder Softwarelösung handelt. Zum Beispiel betrachtet der Hypervisor VMWare ESXi VROC als softwarebasiert und unterstĂŒtzt es nicht offiziell.
Linux Software RAID
Software-RAID-Arrays im Linux-Betriebssystem sind eine weit verbreitete Lösung sowohl im Client- als auch im Serversegment. Alles, was zur Erstellung eines Arrays benötigt wird, ist das Hilfsprogramm mdadm und einige BlockgerĂ€te. Die einzige Anforderung, die Linux Software RAID an die verwendeten Laufwerke stellt, ist, dass sie blockbasierte GerĂ€te sein mĂŒssen, die dem System zugĂ€nglich sind.
Das Fehlen von Hardware- und Softwarekosten ist ein offensichtlicher Vorteil dieser Methode. Linux Software RAID organisiert Speicherarrays auf Kosten der Prozessorzeit. Die Liste der unterstĂŒtzten RAID-Stufen und der Zustand der aktuellen Speicherarrays kann in der Datei mdstat eingesehen werden, die im Stammverzeichnis von procfs zu finden ist:
root@grindelwald:~# cat /proc/mdstat
Persönlichkeiten: [linear] [multipath] [raid0] [raid1] [raid10]
nicht verwendete GerÀte:
Die UnterstĂŒtzung der RAID-Stufen wird durch das Laden des entsprechenden Kernelmoduls hinzugefĂŒgt, zum Beispiel:
root@grindelwald:~# modprobe raid456
root@grindelwald:~# cat /proc/mdstat
Persönlichkeiten: [linear] [multipath] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
nicht verwendete GerĂ€te:Alle Operationen mit Speicherarrays werden ĂŒber das Kommandozeilenhilfsprogramm mdadm durchgefĂŒhrt. Das Erstellen eines Speicherarrays erfolgt mit einem Befehl:
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/nvme1n1 /dev/nvme2n1Nach der AusfĂŒhrung dieses Befehls wird im System ein BlockgerĂ€t /dev/md0 erscheinen, das eine virtuelle Festplatte darstellt.
IntelÂź Virtual RAID On CPU
IntelÂź VROC Standard Hardware Key
IntelÂź Virtual RAID On CPU (VROC) ist eine software-hardwarebasierte Technologie zur Erstellung von RAID-Arrays auf der Grundlage von IntelÂź-ChipsĂ€tzen. Diese Technologie ist hauptsĂ€chlich fĂŒr Mainboards mit UnterstĂŒtzung fĂŒr IntelÂź XeonÂź Scalable-Prozessoren verfĂŒgbar. StandardmĂ€Ăig ist VROC nicht verfĂŒgbar. Um es zu aktivieren, ist die Installation eines Hardware-LizenzschlĂŒssels fĂŒr VROC erforderlich.
Die Standardlizenz fĂŒr VROC ermöglicht die Erstellung von Festplattenarrays mit RAID-Level 0, 1 und 10. Die Premium-Version erweitert diese Liste um die UnterstĂŒtzung fĂŒr RAID 5.
Die Technologie IntelÂź VROC in modernen Mainboards arbeitet gemeinsam mit dem IntelÂź Volume Management Device (VMD), das Hot-Swap-FunktionalitĂ€t fĂŒr NVMe-Speicher gewĂ€hrleistet.
IntelÂź VROC mit Standardlizenz Die Konfiguration von Arrays erfolgt ĂŒber das Setup Utility beim Booten des Servers. Auf dem Tab Advanced erscheint der Punkt IntelÂź Virtual RAID on CPU, in dem die Festplattenarrays konfiguriert werden können.
RAID1-Array auf zwei SpeichergerÀten erstellen
Die Technologie IntelÂź VROC hat ihre «Asse im Ărmel». Festplattenarrays, die mit VROC erstellt werden, sind mit Linux Software RAID kompatibel. Das bedeutet, dass der Zustand der Arrays in /proc/mdstat verfolgt werden kann und die Verwaltung ĂŒber mdadm erfolgt. Dieses «Feature» wird von Intel offiziell unterstĂŒtzt. Nach dem Aufbau von RAID1 im Setup Utility kann die Synchronisierung der Speicher in der OS beobachtet werden:
root@grindelwald:~# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md126 : aktiv raid1 nvme2n1[1] nvme1n1[0]
1855832064 Blöcke 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 Blöcke super extern:imsm
unbenutzte GerÀte: <none>Es ist zu beachten, dass mit mdadm keine Arrays auf VROC erstellt werden können (die erstellten Arrays werden als Linux SW RAID betrachtet), aber es ist möglich, die Festplatten zu wechseln und Arrays abzubauen.
LSI MegaRAID 9460-8i
Das Ă€uĂere Erscheinungsbild des LSI MegaRAID 9460-8i Controllers
Der RAID-Controller ist eine eigenstĂ€ndige Hardware-Lösung. Der Controller arbeitet nur mit SpeichergerĂ€ten, die direkt an ihn angeschlossen sind. Dieser RAID-Controller unterstĂŒtzt bis zu 24 SpeichergerĂ€te mit NVMe-Schnittstelle. Gerade die UnterstĂŒtzung von NVMe hebt diesen Controller von vielen anderen ab.
HauptmenĂŒ des Hardware-Controllers
Im UEFI-Modus werden die Kontroller-Einstellungen in das Setup-Dienstprogramm integriert. Im Vergleich zu VROC sieht das MenĂŒ des Hardware-Controllers deutlich komplexer aus.
RAID1 auf zwei Festplatten erstellen
Die ErklĂ€rung der Einrichtung von Speicherarrays auf dem Hardware-Controller ist ein recht komplexes Thema und könnte Anlass fĂŒr einen vollstĂ€ndigen Artikel geben. Hier beschrĂ€nken wir uns einfach auf die Erstellung von RAID0 und RAID1 mit den Standard-Einstellungen.
Festplatten, die an den Hardware-Controller angeschlossen sind, sind vom Betriebssystem nicht sichtbar. Stattdessen "maskiert" der Controller alle RAID-Arrays als SAS-Laufwerke. Laufwerke, die an den Controller angeschlossen sind, aber nicht Teil des Speicher-Arrays sind, werden vom Betriebssystem nicht erkannt.
root@grindelwald:~# smartctl -i /dev/sda
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-48-generic] (lokaler Build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org
=== ANFANG DES INFORMATIONSTEILS ===
Anbieter: AVAGO
Produkt: MR9460-8i
Revision: 5.14
KonformitÀt: SPC-3
BenutzerkapazitÀt: 1.999.844.147.200 Bytes [1,99 TB]
Logische BlockgröĂe: 512 Bytes
Drehzahl: Solid State Device
Logische Einheit ID: 0x000000000000000000000000000000
Seriennummer: 00000000000000000000000000000000
GerÀtetyp: Disk
Lokale Zeit: So 11. Okt 16:27:59 2020 MSK
SMART-UnterstĂŒtzung: Nicht verfĂŒgbar - GerĂ€t hat keine SMART-FunktionalitĂ€t.Trotz der Maskierung als SAS-Laufwerke werden NVMe-Arrays mit PCIe-Geschwindigkeit betrieben. Diese Eigenschaft ermöglicht jedoch das Booten von NVMe im Legacy-Modus.
Teststand
Jede der Methoden zur Organisation von Speicherarrays hat ihre eigenen physischen Vor- und Nachteile. Gibt es jedoch einen Unterschied in der Leistung bei der Arbeit mit Speicherarrays?
Um maximale Fairness zu gewĂ€hrleisten, werden alle Tests auf demselben Server durchgefĂŒhrt. Die Konfiguration lautet:
- 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.
Die getesteten sind P4510, von denen die eine HĂ€lfte an das Motherboard angeschlossen ist, wĂ€hrend die andere HĂ€lfte an den RAID-Controller angeschlossen ist. Auf M.2 ist das Betriebssystem Ubuntu 20.04 installiert, und die Tests werden mit fio Version 3.16 durchgefĂŒhrt.
Tests
Zuerst prĂŒfen wir die Latenzen beim Arbeiten mit der Festplatte. Der Test wird in einem Thread durchgefĂŒhrt, die BlockgröĂe betrĂ€gt 4 KB. Jeder Test dauert 5 Minuten. Vor Beginn wird fĂŒr das entsprechende BlockgerĂ€t der I/O-Planer auf none gesetzt. Der fio-Befehl lautet wie folgt:
fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio --iodepth=1 --loops=1000 --runtime=300 --rw= --filename=Aus den fio-Ergebnissen nehmen wir clat 99,00 %. Die Ergebnisse sind in der Tabelle unten aufgefĂŒhrt.
ZufÀlliges Lesen, ”s
ZufÀlliges Schreiben, ”s
Festplatte
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
Neben den Verzögerungen beim Datenzugriff möchten wir die Leistung virtueller Speicher und den Vergleich mit der Leistung physischer Festplatten sehen. Der Befehl zum Starten von fio:
fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio --loops=1000 --runtime=300 --iodepth= --rw= --filename=Die Leistung wird in der Anzahl der Ein- und Ausgabeoperationen gemessen. Die Ergebnisse sind in der Tabelle unten aufgefĂŒhrt.
ZufÀlliges Lesen 1 Thread, IOPS
ZufÀlliges Schreiben 1 Thread, IOPS
ZufÀlliges Lesen 128 Threads, IOPS
ZufÀlliges Schreiben 128 Threads, IOPS
Festplatte
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
Es ist leicht zu erkennen, dass der Einsatz eines Hardware-Controllers zu Verzögerungen und einem Leistungsabfall im Vergleich zu Softwarelösungen fĂŒhrt.
Fazit
Der Einsatz von Hardwarelösungen zur Erstellung von RAID-Verbundsystemen aus zwei Festplatten erscheint nicht sinnvoll. Dennoch gibt es Aufgaben, bei denen der Einsatz von RAID-Controllern gerechtfertigt ist. Mit dem Aufkommen von Controllern, die den NVMe-Standard unterstĂŒtzen, haben die Benutzer die Möglichkeit, schnellere SSDs in ihren Projekten zu verwenden.
Nur registrierte Benutzer können an der Umfrage teilnehmen. .
Verwenden Sie RAID-Lösungen?
29,6%Ja, Hardwarelösungen32
50,0%Ja, Softwarelösungen54
16,7%Nein18
3,7%RAID wird nicht benötigt4
Es haben 108 Benutzer abgestimmt. 14 Benutzer haben sich enthalten.
Quelle: habr.com
