RAID-Arrays auf NVMe

RAID-Arrays auf NVMe
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?

Wikipedia 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 Gängiges RAID-Festplattendatenformat. 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 Linux-Betriebssystemfamilie sind sowohl im Client- als auch im Serversegment eine recht verbreitete Lösung. Alles, was Sie zum Erstellen eines Arrays benötigen, ist das Dienstprogramm mdadm und einige Blockgeräte. Die einzige Anforderung, die Linux Software RAID an die verwendeten Laufwerke stellt, besteht darin, dass es sich um ein Blockgerät handelt, auf das das System zugreifen kann.

Ein offensichtlicher Vorteil dieser Methode ist der Wegfall von Kosten für Ausrüstung und Software. Linux Software RAID organisiert Festplatten-Arrays auf Kosten der CPU-Zeit. Die Liste der unterstützten RAID-Level und der Status der aktuellen Festplatten-Arrays können in der mdstat-Datei eingesehen werden, die sich im procfs-Stammverzeichnis 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/nvme2n1

Nach 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

RAID-Arrays auf NVMeIntel® 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.

RAID-Arrays auf NVMeIntel® VROC-Standardlizenz Arrays werden über das Setup Utility konfiguriert, wenn der Server startet. Auf der Registerkarte Fortgeschrittener Das Element „Intel® Virtual RAID on CPU“ wird angezeigt, in dem Sie Festplatten-Arrays konfigurieren können.

RAID-Arrays auf NVMeErstellen eines RAID1-Arrays auf zwei Laufwerken
Die Intel® VROC-Technologie hat ihre eigenen Trümpfe im Ärmel. Mit VROC erstellte Festplatten-Arrays sind mit Linux Software RAID kompatibel. Das bedeutet, dass der Zustand der Arrays in /proc/mdstat überwacht und über mdadm verwaltet werden kann. Dieses „Feature“ wird offiziell von Intel unterstützt. Nachdem Sie RAID1 im Setup Utility zusammengestellt haben, können Sie die Synchronisierung der Laufwerke im Betriebssystem beobachten:

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 mit mdadm keine Arrays auf VROC zusammenstellen können (die zusammengestellten Arrays sind Linux SW RAID), aber Sie können die Festplatten darin wechseln und die Arrays zerlegen.

LSI MegaRAID 9460-8i

RAID-Arrays auf NVMeAussehen 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.

RAID-Arrays auf NVMeHauptmenü 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.

RAID-Arrays auf NVMeErstellen 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, von denen eine Hälfte mit dem Motherboard und die andere Hälfte mit dem RAID-Controller verbunden ist. Auf dem M.2 läuft Ubuntu 20.04 und die Tests werden mit FIO-Version 3.16 ausgefü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.

Abschluss

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.

RAID-Arrays auf NVMe

An der Umfrage können nur registrierte Benutzer teilnehmen. Einloggenbitte.

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

Kommentar hinzufügen