
In diesem Artikel werden wir über verschiedene Möglichkeiten zur Organisation von RAID-Arrays sprechen und außerdem einen der ersten Hardware-RAID-Controller mit NVMe-Unterstützung vorstellen.
Die gesamte Einsatzvielfalt der RAID-Technologie findet sich im Serverbereich. Im Client-Segment wird am häufigsten nur Software-RAID0 oder RAID1 auf zwei Festplatten verwendet.
Dieser Artikel bietet einen kurzen Überblick über die RAID-Technologie, ein kurzes Tutorial zum Erstellen von RAID-Arrays mit drei verschiedenen Tools und einen Vergleich der Leistung virtueller Festplatten mit den einzelnen Methoden.
Was ist RAID?
gibt eine umfassende Definition der RAID-Technologie:
RAID (Englisch Redundantes Array unabhängiger Festplatten - Redundantes Array unabhängiger (unabhängiger) Festplatten) - Datenvirtualisierungstechnologie zum Kombinieren mehrerer physischer Festplattengeräte zu einem logischen Modul, um Fehlertoleranz und Leistung zu erhöhen.
Die Konfiguration der Disk-Arrays und die verwendeten Technologien hängen von der Auswahl ab RAID-Level. RAID-Level sind in der Spezifikation standardisiert . Es beschreibt viele RAID-Level, die gebräuchlichsten sind jedoch RAID0, RAID1, RAID5 und RAID6.
RAID0Oder Stripesist ein RAID-Level, der zwei oder mehr physische Laufwerke zu einem logischen Laufwerk kombiniert. Das Volumen des logischen Laufwerks entspricht der Summe der Volumes der im Array enthaltenen physischen Laufwerke. Auf dieser RAID-Ebene gibt es keine Redundanz und der Ausfall eines Laufwerks kann zum Verlust aller Daten auf der virtuellen Festplatte führen.
Ebene RAID1Oder Spiegel, erstellt identische Kopien von Daten auf zwei oder mehr Festplatten. Die Größe der virtuellen Festplatte überschreitet nicht die Mindestgröße der physischen Festplatten. Die Daten auf der virtuellen RAID1-Festplatte sind verfügbar, solange mindestens eine physische Festplatte aus dem Array betriebsbereit ist. Die Verwendung von RAID1 erhöht die Redundanz, ist jedoch eine recht teure Lösung, da in Arrays aus zwei oder mehr Festplatten nur die Kapazität einer einzigen verfügbar ist.
Ebene RAID5 löst das Problem der hohen Kosten. Um ein Array mit RAID5-Level zu erstellen, benötigen Sie mindestens 3 Festplatten und das Array ist resistent gegen den Ausfall einer Festplatte. Daten in RAID5 werden in Blöcken mit Prüfsummen gespeichert. Es gibt keine strikte Trennung zwischen Datenfestplatten und Prüfsummenfestplatten. Prüfsummen in RAID5 sind das Ergebnis einer XOR-Operation, die auf N-1 Blöcke angewendet wird, die jeweils von einer anderen Festplatte stammen.
Obwohl RAID-Arrays die Redundanz erhöhen und Redundanz bereitstellen, sind sie nicht für die Speicherung von Backups geeignet.
Nach einem kurzen Ausflug in die Arten von RAID-Arrays können Sie zu Geräten und Programmen übergehen, mit denen Sie Festplatten-Arrays zusammenstellen und verwenden können.
Arten von RAID-Controllern
Es gibt zwei Möglichkeiten, RAID-Arrays zu erstellen und zu verwenden: Hardware und Software. Wir werden folgende Lösungen in Betracht ziehen:
- Linux Software-RAID.
- Intel® Virtual RAID auf der CPU.
- LSI MegaRAID 9460-8i.
Beachten Sie, dass die Intel®-Lösung auf einem Chipsatz läuft, was die Frage aufwirft, ob es sich um eine Hardware- oder Softwarelösung handelt. Beispielsweise berücksichtigt der VMWare ESXi-Hypervisor VROC-Software und unterstützt sie offiziell nicht.
Linux Software-RAID
Software-RAID-Arrays in der OS-Familie Linux – eine recht gängige Lösung sowohl im Client- als auch im Serverbereich. Zum Erstellen eines Arrays werden lediglich das Dienstprogramm mdadm und einige Blockgeräte benötigt. Die einzige Voraussetzung ist Linux Software-RAID für die verwendeten Laufwerke – als Blockgerät, auf das das System zugreifen kann.
Der Wegfall der Kosten für Ausrüstung und Software ist ein offensichtlicher Vorteil dieser Methode. Linux Software-RAID organisiert Festplatten-Arrays auf Kosten der CPU-Leistung. Eine Liste der unterstützten RAID-Level und den Status der aktuellen Festplatten-Arrays können in der Datei mdstat eingesehen werden, die sich im Stammverzeichnis von procfs befindet.
root@grindelwald:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid10]
unused devices: <none>
Unterstützung für RAID-Level wird durch den Anschluss des entsprechenden Kernelmoduls hinzugefügt, zum Beispiel:
root@grindelwald:~# modprobe raid456
root@grindelwald:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
unused devices: <none>Alle Vorgänge mit Festplatten-Arrays werden über das Befehlszeilendienstprogramm mdadm ausgeführt. Das Disk-Array wird in einem Befehl zusammengestellt:
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/nvme1n1 /dev/nvme2n1Nach der Ausführung dieses Befehls erscheint das Blockgerät /dev/md0 im System, das Sie als virtuelle Festplatte darstellt.
Intel® Virtual RAID auf der CPU
Intel® VROC Standard-Hardwareschlüssel
Intel® Virtual RAID On CPU (VROC) ist eine Hardware- und Softwaretechnologie zum Erstellen von RAID-Arrays auf Basis von Intel®-Chipsätzen. Diese Technologie ist hauptsächlich für Motherboards verfügbar, die skalierbare Intel® Xeon® Prozessoren unterstützen. Standardmäßig ist VROC nicht verfügbar. Um es zu aktivieren, müssen Sie einen VROC-Hardware-Lizenzschlüssel installieren.
Mit der Standard-VROC-Lizenz können Sie Festplatten-Arrays mit den RAID-Leveln 0, 1 und 10 erstellen. Die Premium-Version erweitert diese Liste um RAID5-Unterstützung.
Die Intel® VROC-Technologie auf modernen Motherboards arbeitet mit dem Intel® Volume Management Device (VMD) zusammen, das Hot-Swap-Fähigkeit für NVMe-Laufwerke bietet.
Intel® VROC-Standardlizenz Arrays werden über das Setup Utility konfiguriert, wenn der Server startet. Auf der Registerkarte Erweitert Das Element „Intel® Virtual RAID on CPU“ wird angezeigt, in dem Sie Festplatten-Arrays konfigurieren können.
Erstellen eines RAID1-Arrays auf zwei Laufwerken
Die Intel® VROC-Technologie hat einige Trümpfe im Ärmel. Mit VROC bestückte Festplattenarrays sind kompatibel mit Linux Software-RAID. Das bedeutet, dass der Array-Status in `/proc/mdstat` überwacht und mit `mdadm` verwaltet werden kann. Diese Funktion wird offiziell von Intel unterstützt. Nach dem Erstellen eines RAID 1 können Sie die synchronisierten Laufwerke im Betriebssystem über das Setup-Dienstprogramm einsehen.
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>Beachten Sie, dass Sie Arrays auf VROC nicht über mdadm zusammenstellen können (die zusammengestellten Arrays werden Linux SW RAID), aber man kann die Festplatten darin austauschen und die Arrays zerlegen.
LSI MegaRAID 9460-8i
Aussehen des LSI MegaRAID 9460-8i Controllers
Der RAID-Controller ist eine eigenständige Hardwarelösung. Der Controller funktioniert nur mit direkt daran angeschlossenen Laufwerken. Dieser RAID-Controller unterstützt bis zu 24 NVMe-Laufwerke. Es ist die NVMe-Unterstützung, die diesen Controller von vielen anderen unterscheidet.
Hauptmenü des Hardware-Controllers
Bei Verwendung des UEFI-Modus werden die Controller-Einstellungen in das Setup Utility integriert. Im Vergleich zu VROC sieht das Hardware-Controller-Menü deutlich komplexer aus.
Erstellen von RAID1 auf zwei Festplatten
Zu erklären, wie Festplatten-Arrays auf einem Hardware-Controller konfiguriert werden, ist ein recht heikles Thema und könnte der Grund für einen ausführlichen Artikel sein. Hier beschränken wir uns einfach auf die Erstellung von RAID0 und RAID1 mit Standardeinstellungen.
An den Hardware-Controller angeschlossene Festplatten sind für das Betriebssystem nicht sichtbar. Stattdessen „maskiert“ der Controller alle RAID-Arrays als SAS-Laufwerke. Auf Laufwerke, die mit dem Controller verbunden, aber nicht Teil des Festplatten-Arrays sind, kann das Betriebssystem nicht zugreifen.
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.Obwohl sie als SAS-Laufwerke getarnt sind, arbeiten NVMe-Arrays mit PCIe-Geschwindigkeit. Diese Funktion ermöglicht Ihnen jedoch das Booten von NVMe in Legacy.
Prüfstand
Jede Methode zur Organisation von Festplatten-Arrays hat ihre eigenen physischen Vor- und Nachteile. Aber gibt es einen Leistungsunterschied bei der Arbeit mit Disk-Arrays?
Um größtmögliche Fairness zu erreichen, werden alle Tests auf demselben Server durchgeführt. Seine Konfiguration:
- 2x Intel® Xeon® 6240;
- 12x DDR4-2666 16 GB;
- LSI MegaRAID 9460-8i;
- Intel® VROC Standard-Hardwareschlüssel;
- 4x Intel® SSD DC P4510 U.2 2TB;
- 1x Samsung 970 EVO Plus M.2 500GB.
Bei den Testgeräten handelt es sich um P4510-Systeme, bei denen jeweils eine Hälfte mit dem Motherboard und die andere mit dem RAID-Controller verbunden ist. Das Betriebssystem ist auf der M.2-SSD installiert. Ubuntu 20.04, und die Tests werden mit fio Version 3.16 durchgeführt.
Testing
Lassen Sie uns zunächst die Verzögerungen beim Arbeiten mit der Festplatte überprüfen. Der Test wird in einem Thread ausgeführt, die Blockgröße beträgt 4 KB. Jeder Test dauert 5 Minuten. Vor dem Start wird das entsprechende Blockgerät als I/O-Scheduler auf „Keine“ gesetzt. Der fio-Befehl sieht so aus:
fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio --iodepth=1 --loops=1000 --runtime=300 --rw=<mode> --filename=<blkdev>Aus den FIO-Ergebnissen gehen wir zu 99.00 % davon aus. Die Ergebnisse sind in der folgenden Tabelle aufgeführt.
Zufälliger Messwert, μs
Zufällige Aufnahme, μs
Fahren
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 Verzögerungen beim Zugriff auf Daten möchte ich auch die Leistung virtueller Laufwerke sehen und diese mit der Leistung einer physischen Festplatte vergleichen. Befehl zum Ausführen von fio:
fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio --loops=1000 --runtime=300 --iodepth=<threads> --rw=<mode> --filename=<blkdev>Die Leistung wird anhand von E/A-Vorgängen gemessen. Die Ergebnisse sind in der folgenden Tabelle dargestellt.
Zufälliges Lesen von 1 Thread, IOPS
Zufälliges Schreiben von 1 Thread, IOPS
Zufälliges Lesen von 128 Threads, IOPS
Zufälliges Schreiben von 128 Threads, IOPS
Fahren
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 die Verwendung eines Hardware-Controllers im Vergleich zu Softwarelösungen zu einer erhöhten Latenz und einem Leistungseinbruch führt.
Fazit
Der Einsatz von Hardwarelösungen zur Erstellung von Festplatten-Arrays aus zwei Festplatten erscheint irrational. Es gibt jedoch Aufgaben, bei denen der Einsatz von RAID-Controllern gerechtfertigt ist. Mit dem Aufkommen von Controllern, die die NVMe-Schnittstelle unterstützen, haben Benutzer die Möglichkeit, in ihren Projekten schnellere SSDs zu verwenden.
An der Umfrage können nur registrierte Benutzer teilnehmen. bitte.
Nutzen Sie RAID-Lösungen?
29,6%Ja, Hardwarelösungen32
50,0%Ja, Softwarelösungen54
16,7%Nr. 18
3,7%Kein RAID erforderlich4
108 Benutzer haben abgestimmt. 14 Benutzer enthielten sich der Stimme.
Source: habr.com
