
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
