RAID-Arrays auf NVMe

RAID-Arrays auf NVMe
In diesem Artikel präsentieren wir verschiedene Möglichkeiten zur Organisation von RAID-Arrays und zeigen einen der ersten Hardware-RAID-Controller mit NVMe-Unterstützung.

Die Vielfalt der Anwendungen von RAID-Technologie findet sich hauptsächlich im Serverbereich. Im Clientbereich wird häufig ausschließlich Software-RAID0 oder RAID1 mit zwei Festplatten verwendet.

Dieser Artikel enthält einen kurzen Überblick über RAID-Technologie, eine kleine Anleitung zur Erstellung von RAID-Arrays mithilfe von drei verschiedenen Werkzeugen und einen Vergleich der Leistung virtueller Laufwerke bei Verwendung jeder Methode.

Was ist RAID?

Wikipedia gibt eine umfassende Definition der RAID-Technologie:

RAID (engl. Redundant Array of Independent Disks — redundantes Array unabhängiger (eigenständiger) Festplatten — ist eine Technologie zur Virtualisierung von Daten, die mehrere physische Datenträger in ein logisches Modul zusammenfasst, um die Fehlertoleranz und Leistung zu erhöhen.

Die Konfiguration der Disk-Arrays und die verwendeten Technologien hängen vom gewählten RAID-Levelab. Die RAID-Level sind in der Spezifikation standardisiert. Common RAID Disk Data Format. Es beschreibt mehrere RAID-Level, wobei RAID0, RAID1, RAID5 und RAID6 als die gebräuchlichsten gelten.

RAID0, oder Stripes, ist ein RAID-Level, das zwei oder mehr physische Festplatten zu einem logischen zusammenfasst. Der Speicherplatz des logischen Laufwerks entspricht dabei der Summe der Kapazitäten der physischen Festplatten im Array. Auf diesem RAID-Level fehlt Redundanz, und der Ausfall einer Festplatte kann den Verlust aller Daten auf dem virtuellen Laufwerk zur Folge haben.

Niveau RAID1, oder Mirror, erstellt identische Kopien der Daten auf zwei oder mehr Festplatten. Der Speicherplatz des virtuellen Laufwerks überschreitet nicht die Kapazität der kleinsten physikalischen Festplatte. Die Daten auf dem virtuellen RAID1-Laufwerk sind verfügbar, solange mindestens eine physische Festplatte im Array funktioniert. Die Verwendung von RAID1 sorgt für Redundanz, ist jedoch eine relativ kostspielige Lösung, da in Arrays mit zwei oder mehr Festplatten nur der Speicherplatz einer Festplatte verfügbar ist.

Niveau RAID5 löst das Problem der Kosten. Um ein RAID5-Array zu erstellen, sind mindestens 3 Festplatten erforderlich, wobei das Array gegen den Ausfall einer Festplatte robust ist. Die Daten im RAID5 werden in Blöcken mit Prüfziffern gespeichert. Es gibt keine strikte Trennung zwischen Daten- und Prüfziffer-Laufwerken. Die Prüfziffern im RAID5 sind das Ergebnis der XOR-Operation, die auf N-1 Blöcke angewendet wird, wobei jeder Block von seiner eigenen Festplatte kommt.

Obwohl RAID-Arrays die Redundanz erhöhen und eine Sicherung bereitstellen, 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, Festplattenarrays zu erstellen und zu nutzen.

Arten von RAID-Controllern

Es gibt zwei Möglichkeiten, RAID-Arrays zu erstellen und zu verwenden: Hardware- und Software-basiert. Wir werden die folgenden Lösungen betrachten:

  • Linux Software RAID.
  • Intel® Virtual RAID On CPU.
  • LSI MegaRAID 9460-8i.

Es sei darauf hingewiesen, dass die Lösung von Intel® auf einem Chipsatz basiert, was die Frage aufwirft, ob es sich um eine Hardware- oder Softwarelösung handelt. So betrachtet beispielsweise 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 Serverbereich. Alles, was Sie zur Erstellung eines Arrays benötigen, ist das Dienstprogramm mdadm und einige Blockgeräte. Die einzige Anforderung, die Linux Software RAID an die verwendeten Speichergeräte stellt, ist, dass sie Blockgeräte sein müssen, die dem System zugänglich sind.

Keine Kosten für Hardware und Software ist ein offensichtlicher Vorteil dieser Methode. Linux Software RAID organisiert Speicher-Arrays als Kosten für die Prozessoreinheiten. Die Liste der unterstützten RAID-Level und der Zustand der aktuellen Speicher-Arrays können in der Datei mdstat, die sich im Stammverzeichnis von procfs befindet, eingesehen werden:

root@grindelwald:~# cat /proc/mdstat
Persönlichkeiten: [linear] [multipath] [raid0] [raid1] [raid10]
unbenutzte Geräte:

Die Unterstützung für RAID-Level wird durch das Laden des entsprechenden Kernel-Moduls hinzugefügt, beispielsweise:

root@grindelwald:~# modprobe raid456
root@grindelwald:~# cat /proc/mdstat
Persönlichkeiten: [linear] [multipath] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
unbenutzte Geräte:

Alle Operationen mit Speicher-Arrays erfolgen über das Befehlszeilen-Dienstprogramm mdadm. Der Aufbau eines Speicher-Arrays erfolgt in einem Befehl:

mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/nvme1n1 /dev/nvme2n1

Nach Ausführung dieses Befehls wird im System ein Blockgerät /dev/md0 erstellt, das als virtueller Datenträger fungiert.

Intel® Virtual RAID On CPU

RAID-Arrays auf NVMeIntel® VROC Standard Hardware Schlüssel
Intel® Virtual RAID On CPU (VROC) ist eine software-hardware Technologie zur Erstellung von RAID-Arrays auf Basis von Intel® Chipsets. Diese Technologie ist hauptsächlich für Motherboards mit Unterstützung für Intel® Xeon® Scalable Prozessoren verfügbar. Standardmäßig ist VROC nicht verfügbar. Um es zu aktivieren, muss ein hardwarebasierter VROC-Lizenzschlüssel installiert werden.

Die Standardlizenz VROC ermöglicht die Erstellung von Festplattenarrays mit den RAID-Stufen 0, 1 und 10. Die Premiumversion erweitert diese Liste um die Unterstützung von RAID 5.

Die Intel® VROC-Technologie auf modernen Motherboards funktioniert in Verbindung mit dem Intel® Volume Management Device (VMD), das Hot-Swap-Funktionalität für NVMe-Speichergeräte ermöglicht.

RAID-Arrays auf NVMeIntel® VROC mit Standardlizenz Die Konfiguration der Arrays erfolgt über das Setup Utility beim Booten des Servers. Im Tab Erweitert erscheint der Punkt Intel® Virtual RAID on CPU, in dem die Festplattenarrays konfiguriert werden können.

RAID-Arrays auf NVMeErstellung eines RAID1-Arrays auf zwei Speichermedien
Die Intel® VROC-Technologie hat ihre „Trumpfkarten“. Die mit VROC erstellten RAID-Arrays sind mit Linux Software RAID kompatibel. Das bedeutet, dass der Zustand der Arrays über /proc/mdstat überwacht werden kann und die Verwaltung über mdadm erfolgt. Dieses „Feature“ wird offiziell von Intel unterstützt. Nach dem Erstellen von RAID1 im Setup Utility kann die Synchronisierung der Laufwerke im Betriebssystem beobachtet werden:

root@grindelwald:~# cat /proc/mdstat 
Persönlichkeiten : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md126 : aktives 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:

Es ist zu beachten, dass Arrays unter VROC nicht mit mdadm erstellt werden können (erstellte Arrays sind Linux SW RAID), aber Laufwerke innerhalb dieser Arrays können geändert und abgebaut werden.

LSI MegaRAID 9460-8i

RAID-Arrays auf NVMeDas Aussehen des LSI MegaRAID 9460-8i Controllers
Der RAID-Controller ist eine eigenständige Hardwarelösung. Der Controller arbeitet nur mit Laufwerken, die direkt an ihn angeschlossen sind. Dieser RAID-Controller unterstützt bis zu 24 NVMe-Laufwerke. Vor allem die Unterstützung von NVMe hebt diesen Controller von vielen anderen ab.

RAID-Arrays auf NVMeHauptmenü des Hardware-Controllers
Im UEFI-Modus werden die Controller-Einstellungen in das Setup Utility integriert. Im Vergleich zu VROC erscheint das Menü des Hardware-Controllers deutlich komplexer.

RAID-Arrays auf NVMeRAID1 mit zwei Festplatten erstellen
Die Erklärung der Konfiguration von Speicherarrays auf dem Hardware-Controller ist ein komplexes Thema und könnte Anlass für einen ausführlichen Artikel sein. Hier beschränken wir uns lediglich auf die Erstellung von RAID0 und RAID1 mit den Standardkonfigurationen.

Festplatten, die an den Hardware-Controller angeschlossen sind, werden vom Betriebssystem nicht erkannt. Stattdessen 'maskiert' der Controller alle RAID-Arrays als SAS-Laufwerke. Laufwerke, die an den Controller angeschlossen sind, aber nicht Teil des Speicherarrays sind, stehen dem Betriebssystem nicht zur Verfügung.

root@grindelwald:~# smartctl -i /dev/sda
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-48-generic] (lokale Version)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== BEGINN DER INFORMATIONSEBENE ===
Hersteller:               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:              Festplatte
Lokale Zeit:            So 11. Okt 16:27:59 2020 MSK
SMART-Unterstützung:      Nicht verfügbar - Gerät verfügt nicht über SMART-Funktionalität.

Trotz der Tarnung als SAS-Laufwerke arbeiten NVMe-Arrays mit PCIe-Geschwindigkeit. Dieses Merkmal ermöglicht jedoch das Booten von NVMe im Legacy-Modus.

Teststand

Jede Methode zur Organisation von Speicher-Arrays hat ihre eigenen physikalischen Vor- und Nachteile. Doch gibt es einen Unterschied in der Leistung beim Betrieb mit Speicher-Arrays?

Um maximale Fairness zu gewährleisten, werden alle Tests auf demselben Server durchgeführt. Seine 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.

Getestet werden die P4510, von denen die eine Hälfte an das Motherboard und die andere an den RAID-Controller angeschlossen ist. Auf dem M.2 ist das Betriebssystem Ubuntu 20.04 installiert, und die Tests werden mit fio Version 3.16 durchgeführt.

Testen

Zuerst prüfen wir die Latenz beim Arbeiten mit der Festplatte. Der Test wird in einem einzigen Thread durchgeführt, Blockgröße 4 KB. Jeder Test dauert 5 Minuten. Vor Beginn wird für das entsprechende Blockgerät none als I/O-Planer festgelegt. 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 Ergebnissen von fio entnehmen wir clat 99,00 %. Die Resultate sind in der Tabelle unten aufgeführt.

Zufälliges Lesen, µs
Zufälliges Schreiben, µs

Диск
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 Latenzen beim Datenzugriff möchte ich die Leistung virtueller Laufwerke sehen und sie mit der Leistung physischer Festplatten vergleichen. Der Befehl zum Ausführen von fio lautet:

fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio --loops=1000 --runtime=300 --iodepth= --rw= --filename=

Die Leistung wird in Anzahl der Ein-/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

Диск
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 zu einer Erhöhung der Latenzen und einem Rückgang der Leistung im Vergleich zu Softwarelösungen führt.

Fazit

Die Verwendung von Hardwarelösungen zur Erstellung von RAID-Verbundsystemen aus zwei Festplatten scheint nicht optimal. Dennoch gibt es Situationen, in denen der Einsatz von RAID-Controllern sinnvoll ist. Mit dem Auftreten von Controllern, die den NVMe-Standard unterstützen, haben Nutzer die Möglichkeit, schnellere SSDs in ihren Projekten einzusetzen.

RAID-Arrays auf NVMe

Nur registrierte Benutzer können an der Umfrage teilnehmen. Bitte melden Sie sich an.Sind Sie an Contour interessiert?

Nutzen Sie RAID-Lösungen?

  • 29,6%Ja, Hardwarelösungen

  • 50,0%Ja, Softwarelösungen

  • 16,7%Nein18

  • 3,7%RAID wird nicht benötigt

108 Nutzer haben abgestimmt. 14 Nutzer haben sich enthalten.

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster