SSD Nodes Learn Hosting plans →
Anleitungen Matt ConnorVon Matt Connor · Aktualisiert 2026-11-08

RAID 10 für VPS-Speicher erklärt: Vorteile und Grenzen

Erfahren Sie, welche Ausfälle RAID 1, 5, 6 und 10 überstehen, was ein Rebuild kostet, wie Sie /proc/mdstat lesen und warum RAID kein Backup ist.

Was RAID 10 ist und warum VPS-Hosts es einsetzen

RAID 10 ist das Speicherlayout, das die meisten VPS-Hosts auf virtualisierten NVMe-Laufwerken (non-volatile memory express) verwenden. Beim herkömmlichen Layout mit zwei Kopien wird jedes Laufwerk auf ein Partnerlaufwerk gespiegelt. Anschließend werden die Daten über diese gespiegelten Paare verteilt. Ein Laufwerk kann ausfallen, ohne dass das Array den Betrieb einstellt. Die Wiederherstellung erfolgt durch einfaches Kopieren vom noch funktionsfähigen Partner. Es ist keine Neuberechnung erforderlich, bei der jedes andere Laufwerk im Verbund gelesen wird.

RAID steht für redundant array of independent disks. RAID hat eine Aufgabe: Der Server soll weiter Dienste bereitstellen, während ein Laufwerk ausgefallen ist oder ersetzt wird. Diese Aufgabe ist die Verfügbarkeit. Verfügbarkeit ist keine Sicherheit.

RAID repliziert Ihre Schreibvorgänge. rm -rf /srv ist ein Schreibvorgang. Beide Hälften des Spiegels löschen das Verzeichnis in derselben Millisekunde, und das Array meldet sich danach weiterhin als fehlerfrei.

Merken Sie sich diesen Satz. Der restliche Abschnitt beschreibt, welchen Ausfall jede RAID-Stufe übersteht und welche Kosten sie bei jedem Schreibvorgang verursacht. Die letzten Abschnitte enthalten die Befehle, mit denen Sie den Status eines Arrays auf einem eigenen Server prüfen, sowie den Ausfall, den RAID noch nie abgedeckt hat.

Die Ebenen, mit denen ein Hosting-Käufer tatsächlich in Kontakt kommt: 1, 5, 6 und 10

Auf einer Tarifseite steht eine Zahl, mehr nicht. Die Zahl beantwortet zwei Fragen: Wie viele Laufwerke ausfallen können und was jeder Schreibvorgang kostet.

RAID 1 ist ein Spiegel. Zwei Laufwerke enthalten identische Blöcke. Jeder Schreibvorgang geht an beide Laufwerke. Von jedem Laufwerk können Lesedaten geliefert werden. Ein Laufwerk kann ohne Datenverlust ausfallen, und die Hälfte der Rohkapazität ist nutzbar. Es muss keine Parität berechnet werden, daher ist der Schreibpfad kurz.

RAID 5 verteilt Daten und verwendet pro Stripe einen Paritätsblock. Bei n Laufwerken erhalten Sie die Kapazität von n-1 Laufwerken, und das Array übersteht genau einen Ausfall. Die Parität liegt nicht auf einem dedizierten Laufwerk. Sie rotiert über alle Laufwerke, sodass jedes Laufwerk sowohl Daten als auch Parität enthält.

RAID 6 fügt jedem Stripe einen zweiten, unabhängigen Paritätsblock hinzu, der üblicherweise mit P und Q bezeichnet wird. Es übersteht den gleichzeitigen Ausfall von zwei beliebigen Laufwerken. Das ist wichtiger, als es zunächst klingt, weil der zweite Ausfall meistens während der Reparatur des ersten eintritt.

RAID 10 ist ein Stripe aus Spiegeln. Die Laufwerke werden paarweise gespiegelt, und die Daten werden über die Paare verteilt. Die nutzbare Kapazität beträgt die Hälfte der gesamten Rohkapazität, wie bei RAID 1, ergänzt um die Parallelität der Verteilung.

Sie sehen auch die Schreibweise RAID 1+0. Sie beschreibt die Anordnung korrekt: zuerst spiegeln, dann über die Spiegel verteilen. RAID 0+1 verwendet die umgekehrte Reihenfolge: zuerst verteilen und anschließend die beiden Stripes spiegeln. Das ist schlechter, weil der Ausfall eines Laufwerks einen ganzen Stripe außer Betrieb nimmt und die Reparatur die gesamte andere Seite kopieren muss.

Linux ist ein Sonderfall, den Sie kennen sollten. Das raid10 des Kernels ist eine einzelne Persönlichkeit statt zweier übereinanderliegender Ebenen. Daher läuft es mit einer ungeraden Anzahl von Laufwerken und verfügt über Layouts (near, far, offset), die eine verschachtelte Konfiguration nicht ausdrücken kann. Deshalb zeigt die Statuszeile auf einem Linux-System 2 near-copies an, statt zwei Arrays zu benennen.

DiagrammEight 1 TB drives: usable capacity and drives lost before data loss
Die Daten hinter diesem Diagramm
[
  {
    "label": "RAID 1 (eight copies)",
    "usable_tb": 1,
    "worst_case_drives_lost": 7,
    "best_case_drives_lost": 7
  },
  {
    "label": "RAID 5",
    "usable_tb": 7,
    "worst_case_drives_lost": 1,
    "best_case_drives_lost": 1
  },
  {
    "label": "RAID 6",
    "usable_tb": 6,
    "worst_case_drives_lost": 2,
    "best_case_drives_lost": 2
  },
  {
    "label": "RAID 10",
    "usable_tb": 4,
    "worst_case_drives_lost": 1,
    "best_case_drives_lost": 4
  }
]

Acht Laufwerke mit jeweils 1 TB ergeben unter RAID 5 7 TB nutzbaren Speicherplatz und unter RAID 10 4 TB. Dieser Unterschied entspricht realen Kosten. Deshalb wird Parität immer wieder vorgeschlagen. RAID 6 übersteht 2 Ausfälle in jedem beliebigen Muster. RAID 10 garantiert dagegen nur 1, weil der gefährliche zweite Ausfall das Partnerlaufwerk des bereits ausgefallenen Laufwerks treffen kann. Wenn keine zwei Ausfälle dasselbe Paar betreffen, übersteht es bis zu 4 Ausfälle. Das ist jedoch Glück und keine Eigenschaft des Designs.

Die Kosten jeder Ebene bei jedem Schreibvorgang

Ein Schreibvorgang auf ein Mirror besteht aus zwei Schreibvorgängen, die gleichzeitig an beide Mitglieder gesendet werden. Ein Schreibvorgang auf einen Paritäts-Stripe verursacht mehr Arbeit, weil der Paritätsblock dieses Stripes nun nicht mehr korrekt ist und neu berechnet werden muss.

Beim Read-Modify-Write liest der Controller zuerst die alten Daten und die alte Parität. Ein ungecachtes Überschreiben eines einzelnen Blocks auf RAID 5 wird dadurch zu Lesen, Lesen, Schreiben, Schreiben. RAID 6 verwaltet zwei Paritätsblöcke. Daher wird aus Read-Modify-Write Lesen, Lesen, Lesen, Schreiben, Schreiben, Schreiben. Linux verwendet außerdem Reconstruct-Write und liest unveränderte Daten, um die Parität zu berechnen. Bei RAID 5 mit drei Laufwerken kann dieses Überschreiben einen Datenlesevorgang und zwei Schreibvorgänge erfordern. Bei RAID 6 mit vier Laufwerken sind es ein Datenlesevorgang und drei Schreibvorgänge. Vier und sechs sind Zählwerte für Read-Modify-Write und keine festen Kosten für jeden kleinen zufälligen Schreibvorgang.

DiagrammUncached single-block read-modify-write operations, and drives read during a full rebuild
Die Daten hinter diesem Diagramm
[
  {
    "label": "RAID 1 (2 drives)",
    "write_ops_per_host_write": 2,
    "drives_read_to_rebuild": 1
  },
  {
    "label": "RAID 5 (8 drives)",
    "write_ops_per_host_write": 4,
    "drives_read_to_rebuild": 7
  },
  {
    "label": "RAID 6 (8 drives)",
    "write_ops_per_host_write": 6,
    "drives_read_to_rebuild": 7
  },
  {
    "label": "RAID 10 (8 drives, fixed mirror pairs)",
    "write_ops_per_host_write": 2,
    "drives_read_to_rebuild": 1
  }
]

Ein ungecachtes Read-Modify-Write für einen einzelnen Block verursacht bei RAID 6 6 Geräteoperationen. Beim gleichen Überschreiben auf einem RAID 10 mit zwei Kopien sind es 2. Die Zählwerte unterschätzen den Unterschied bei der Latenz. Die beiden Schreibvorgänge auf die Mirrors werden parallel ausgeführt. Der Gast wartet daher auf das langsamere der beiden Laufwerke. Der Read-Modify-Write-Pfad enthält einen Lesevorgang, der abgeschlossen sein muss, bevor die neue Parität berechnet werden kann. Der Gast wartet deshalb zuerst auf einen Lesevorgang und anschließend auf einen Schreibvorgang. Auf einem ausgelasteten Host reiht sich dieser Lesevorgang hinter den I/O-Vorgängen anderer Prozesse ein.

Es gibt eine wichtige Ausnahme. Ein Schreibvorgang, der groß genug ist, um einen vollständigen Stripe zu füllen, benötigt keine alten Daten, weil jeder Block des Stripes ersetzt wird. Die Parität wird aus den bereits im Speicher vorhandenen Daten berechnet. Der Overhead sinkt dadurch auf einen Paritäts-Schreibvorgang pro Stripe bei RAID 5 oder zwei bei RAID 6, ohne vorherige Lesevorgänge. Deshalb sieht RAID 5 in einem sequenziellen Benchmark gut aus, verhält sich aber bei einer gemischten Last aus kleinen Schreibvorgängen vieler Mandanten schlecht. Testen Sie das Muster, das Sie tatsächlich ausführen: einen VPS-Datenträger korrekt benchmarken bedeutet zufällige I/O-Vorgänge mit einer realistischen Warteschlangentiefe und nicht einen großen dd.

Warum der Wiederaufbau der gefährliche Teil ist

Ein vollständiger RAID-5-Wiederaufbau muss das fehlende Laufwerk aus allen anderen Daten rekonstruieren. Im Beispiel mit acht Laufwerken liest er daher 7 verbleibende Laufwerke vom ersten bis zum letzten Block. Bei festen Spiegelpaaren liest ein RAID-10-Wiederaufbau 1: den Spiegelpartner des ausgefallenen Laufwerks und nichts anderes. Andere Linux-RAID10-Layouts verteilen die Kopien anders. Beim Wiederaufbau eines Mitglieds im Drei-Geräte-Near-Layout werden beide verbleibenden Mitglieder gelesen.

Daraus ergeben sich zwei Kosten. Die erste ist die Zeit. Der Wiederaufbau wird durch die verbleibenden Laufwerke, den Rekonstruktionsaufwand und die Zielvorgaben für die Wiederherstellungsgeschwindigkeit begrenzt. Die zweite ist die Last. Ein Paritätswiederaufbau verteilt die I/O über die verbleibenden Laufwerke. Bei festen Spiegelpaaren konzentriert ein RAID-10-Wiederaufbau diese I/O auf ein Paar. Gemeinsame Ressourcen des Controllers und des Hosts beeinflussen weiterhin die anderen Paare.

Im selben Zeitraum besteht außerdem ein Risiko für die Datenintegrität. Ein RAID-5-Array mit einem ausgefallenen Laufwerk hat keine Redundanz mehr. Ein nicht lesbarer Sektor auf einem beliebigen verbleibenden Laufwerk kann daher nicht mehr wiederhergestellt werden. Ein Wiederaufbau ist der einzige Vorgang, der jeden Sektor liest, auch solche, auf die seit einem Jahr niemand zugegriffen hat. Veröffentlichte Datenblattangaben setzen bei Consumer-Festplatten ungefähr einen nicht wiederherstellbaren Lesefehler pro 10^14 gelesene Bits an, bei Enterprise-NVMe-Laufwerken einen pro 10^17 oder besser. Das sind Herstellerangaben und keine Messwerte. Das Verhältnis erklärt jedoch, warum die alte Warnung vor einem fehlschlagenden RAID-5-Wiederaufbau für große Festplatten mit rotierenden Magnetscheiben formuliert wurde und warum sie für NVMe deutlich weniger zutrifft. Das Argument zur Last gilt für jedes Medium.

Erkennen Sie latente Fehler, bevor ein Wiederaufbau sie findet, indem Sie ein Scrubbing durchführen. Debian und Ubuntu liefern einen periodischen Scrub für md-Arrays mit. Der Mechanismus unterscheidet sich zwischen den Releases. Prüfen Sie daher, welcher Mechanismus auf Ihrem System vorhanden ist, und starten Sie anschließend manuell einen Durchlauf.

systemctl list-timers --all | grep -i mdcheck
ls -l /etc/cron.d/mdadm
echo check | sudo tee /sys/block/md0/md/sync_action
cat /sys/block/md0/md/mismatch_cnt

sync_action wechselt nach Abschluss des Durchlaufs zurück zu idle, und mismatch_cnt sollte 0 anzeigen. Eine Zahl über null bei einem Spiegel bedeutet, dass die beiden Hälften nicht übereinstimmen und der Kernel nicht feststellen kann, welche korrekt ist, weil keine der beiden Kopien eine Prüfsumme enthält. Einige Abweichungen sind harmlos. Die häufigste Ursache sind Swap-Partitionen: Der Kernel kann eine Seite schreiben, die sich währenddessen unter ihm ändert. Ein steigender Zähler bei einem Daten-Array erfordert eine Untersuchung. Der Zähler allein identifiziert jedoch kein Laufwerk, das ersetzt werden sollte.

Warum VPS-Anbieter bei NVMe standardmäßig RAID 10 einsetzen

Ein Hypervisor-Knoten führt nicht nur eine Arbeitslast aus. Er betreibt Dutzende voneinander unabhängige Gastsysteme, deren I/O sich als Strom kleiner Schreibvorgänge ohne lokale Zusammenhänge überlagert. Genau bei diesem Zugriffsmuster verursacht der Paritätszyklus aus Lesen, Ändern und Schreiben die höchsten Kosten. Auf einem gemeinsam genutzten Knoten tritt dieses Muster den ganzen Tag auf.

Das Wiederaufbauverhalten spricht ebenfalls für diese Wahl. Der Ausfall eines Laufwerks auf einem Paritätsknoten erzeugt Rekonstruktionsarbeit auf allen verbleibenden Laufwerken. Bei festen Spiegelpaaren erzeugt ein Laufwerksausfall auf einem RAID-10-Knoten zusätzliche Rebuild-I/O nur auf einem Paar. Linux MD verlangsamt die Wiederherstellung, wenn gleichzeitig andere Aktivitäten stattfinden. Anbieter verkaufen konstante Latenz ohne Spitzen. Dafür bezahlen sie mit Kapazität: Die Hälfte der Rohkapazität der NVMe-Laufwerke wird für den Spiegel verwendet.

Auch die Laufwerksgrößen sprechen dafür. Je größer die Laufwerke werden, desto länger dauert das Rebuild. Bei RAID 5 ist dies genau der Zeitraum, in dem die Rekonstruktion zusätzliche Last erzeugt und keine Redundanz mehr vorhanden ist. RAID 6 bleibt gegen den Ausfall eines weiteren Laufwerks geschützt. Aus demselben Grund verwenden ZFS-Bereitstellungen für die Virtualisierung Pools aus gespiegelten vdevs statt breiter raidz-Konfigurationen: Ein Mirror-Resilver kopiert nur die tatsächlich verwendeten Blöcke, und zwar auf einem einzigen Paar.

Das bedeutet nicht, dass RAID 10 überall die richtige Wahl ist. Ein Backup-Ziel wird in langen sequenziellen Abschnitten beschrieben und nur selten gelesen. RAID 6 bietet dort das bessere Verhältnis. Es übersteht zwei Ausfälle und erhält den größten Teil der Kapazität. Entscheidend ist die Arbeitslast, nicht die Anzahl. Bei einem Tarif, den Sie heute auswählen, ist das Medium meist wichtiger als das darauf verwendete Layout. Der Wechsel von SATA SSD zu NVMe ist größer als jeder RAID-Unterschied auf beiden Medien.

So lesen Sie /proc/mdstat

Führen Sie diese Befehle auf einem System aus, dessen Array Sie selbst verwalten: auf einem dedizierten Server, einem Rechner zu Hause oder einer VPS mit zwei angeschlossenen Volumes, die Sie selbst eingerichtet haben. Lesen Sie Ihre eigene Ausgabe. Die folgenden Blöcke sind Beispiele, damit Sie die Form Ihrer Ausgabe vergleichen können.

cat /proc/mdstat
sudo mdadm --detail /dev/md0
lsblk -o NAME,SIZE,TYPE,MOUNTPOINTS

Ein gesundes RAID 10 mit vier Laufwerken gibt ungefähr Folgendes aus.

Personalities : [raid1] [raid10]
md0 : active raid10 nvme3n1p3[3] nvme2n1p3[2] nvme1n1p3[1] nvme0n1p3[0]
      3906764800 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
      bitmap: 0/30 pages [0KB], 65536KB chunk

unused devices: <none>

Jeder Teil dieser Ausgabe enthält Informationen.

  • Personalities listet die md-Module auf, die der laufende Kernel geladen hat. Dass raid10 dort erscheint, bedeutet nur, dass der Code verfügbar ist.
  • md0 : active raid10 bezeichnet das Array-Gerät, seinen Status und sein RAID-Level.
  • Die danach aufgeführten Namen sind die Mitglieder. Die Zahl in eckigen Klammern ist der Index des Geräts in den Array-Metadaten. Sie entspricht weder seiner Position in der Zeile noch immer seinem Steckplatz.
  • Nach dem Austausch eines Laufwerks hat das neue Mitglied normalerweise einen höheren Index als der Steckplatz, den es belegt. Daher kann nvme4n1p3[4] in Steckplatz 2 liegen. mdadm --detail gibt den tatsächlichen Steckplatz in seiner Spalte RaidDevice aus. Verwenden Sie diese Angabe, wenn der Unterschied relevant ist.
  • (F) hinter einem Mitglied bedeutet fehlerhaft. (S) bedeutet Ersatzlaufwerk: vorhanden, inaktiv und bereit, falls ein Laufwerk ausfällt.
  • 3906764800 blocks super 1.2 ist die nutzbare Größe in 1-KiB-Blöcken, gefolgt vom Metadatenformat.
  • 512K chunks 2 near-copies ist die Chunk-Größe des Stripes und das RAID-10-Layout. In diesem Beispiel liegen zwei Kopien jedes Blocks nebeneinander.
  • [4/4] ist zunächst die Anzahl der Mitglieder, die das Array erwartet, und danach die Anzahl der Mitglieder, die derzeit synchron sind.
  • [UUUU] enthält ein Zeichen pro Steckplatz in der Reihenfolge der Steckplätze. U bezeichnet einen aktiven und synchronen Steckplatz. _ bezeichnet einen Steckplatz, in dem kein funktionsfähiges Laufwerk vorhanden ist.
  • bitmap: ist die Write-Intent-Bitmap. Sie speichert, in welche Bereiche geschrieben wurde. Wenn ein Mitglied ausfällt und zurückkehrt, werden dadurch diese Bereiche und nicht das gesamte Laufwerk erneut synchronisiert.

Was [4/3] und [UU_U] bei einem Fehler bedeuten

Ein degradiertes Array sieht so aus.

md0 : active raid10 nvme3n1p3[3] nvme2n1p3[2](F) nvme1n1p3[1] nvme0n1p3[0]
      3906764800 blocks super 1.2 512K chunks 2 near-copies [4/3] [UU_U]

Lesen Sie die beiden Klammerausdrücke gemeinsam. [4/3] bedeutet, dass eines von vier Laufwerken keinen Beitrag leistet. [UU_U] zeigt welches Laufwerk, weil der Unterstrich das dritte Zeichen ist und die Steckplätze bei null beginnen. Steckplatz 2 ist also ausgefallen. Das Flag (F) bezeichnet das Gerät nur, solange das ausgefallene Laufwerk noch angeschlossen ist. Entfernen Sie es aus dem System, verschwindet der Name aus der Zeile, während der Unterstrich bleibt.

Das Array stellt den Dienst weiterhin bereit. Bei RAID 10 ist die Geschwindigkeit dabei oft nahezu unverändert. Deshalb fällt der Ausfall im Betrieb häufig nicht auf. Eine Überwachung muss Sie darüber informieren.

grep -i mailaddr /etc/mdadm/mdadm.conf
sudo mdadm --monitor --scan --oneshot --test
systemctl list-units --all | grep -i md

Das Paket mdadm installiert einen Überwachungs-Daemon, der MAILADDR aus /etc/mdadm/mdadm.conf liest. Der Name der Unit hat sich zwischen Releases geändert. Ermitteln Sie ihn daher mit dem letzten Befehl, statt ihn zu erraten. Der Aufruf --test sendet sofort eine Nachricht pro Array. Ein leeres Postfach danach bedeutet, dass der Mailversand nicht funktioniert. Die Nachricht, die Sie tatsächlich benötigen, wäre auf demselben Weg verloren gegangen.

Wenn ein Ersatzlaufwerk neu aufgebaut wird, erscheint unter dem Array eine Fortschrittszeile.

md0 : active raid10 nvme4n1p3[4] nvme3n1p3[3] nvme1n1p3[1] nvme0n1p3[0]
      3906764800 blocks super 1.2 512K chunks 2 near-copies [4/3] [UU_U]
      [==>..................]  recovery = 12.4% (242012928/1953382400) finish=63.1min speed=452000K/sec

recovery bezeichnet den Wiederaufbau auf ein Ersatzlaufwerk. resync bezeichnet eine Konsistenzprüfung, einschließlich der initialen Prüfung und der Wiederherstellung nach einem unsauberen Herunterfahren. check bezeichnet die oben gestartete Prüfung. Das Wertepaar in Klammern zeigt den Fortschritt in 1-KiB-Blöcken im Verhältnis zur gerätebezogenen Gesamtgröße. finish ist die Schätzung des Kernels für die verbleibende Zeit bei der aktuellen Geschwindigkeit. Linux MD verwendet /proc/sys/dev/raid/speed_limit_min und speed_limit_max als Zielwerte für die Wiederherstellungsgeschwindigkeit. Array-spezifische Überschreibungen werden in sync_speed_min und sync_speed_max festgelegt. Der standardmäßige maximale Zielwert beträgt 200,000 KiB/s pro Gerät. Diese Zielwerte ermöglichen es, die Wiederherstellung zugunsten der produktiven I/O zu verlangsamen. Sie sind keine festen Geschwindigkeitsbegrenzungen.

Eine vollständige mdadm --detail während eines Wiederaufbaus
/dev/md0:
           Version : 1.2
     Creation Time : Tue Mar 10 09:14:22 2026
        Raid Level : raid10
        Array Size : 3906764800 (3.64 TiB 4.00 TB)
     Used Dev Size : 1953382400 (1.82 TiB 2.00 TB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Wed Aug  5 11:02:41 2026
             State : clean, degraded, recovering
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 1

            Layout : near=2
        Chunk Size : 512K

    Rebuild Status : 12% complete

              Name : storage:0
            Events : 4184

    Number   Major   Minor   RaidDevice State
       0     259        3        0      active sync set-A   /dev/nvme0n1p3
       1     259        7        1      active sync set-B   /dev/nvme1n1p3
       4     259       11        2      spare rebuilding    /dev/nvme4n1p3
       3     259       15        3      active sync set-B   /dev/nvme3n1p3

Die Spalte Number enthält den Metadatenindex, der in den Klammern von /proc/mdstat ausgegeben wird. Die Spalte RaidDevice enthält den Steckplatz. Das ist die Position in der Zeichenfolge [UU_U]. In diesem Beispiel unterscheiden sich die Werte, weil Gerät 4 das Laufwerk ersetzt hat, das zuvor Steckplatz 2 belegt hatte. set-A und set-B bezeichnen die beiden Hälften jedes Mirrors. Ein Mitglied von Set-A und ein Mitglied von Set-B im selben Paar enthalten also dieselben Daten. Diese beiden Laufwerke dürfen Sie nicht gemeinsam verlieren.

Der Austausch eines Laufwerks in einem Array, das Sie selbst verwalten, erfordert vier Befehle. Der letzte Befehl dient zur Prüfung.

sudo mdadm --manage /dev/md0 --fail /dev/nvme2n1p3
sudo mdadm --manage /dev/md0 --remove /dev/nvme2n1p3
sudo mdadm --manage /dev/md0 --add /dev/nvme4n1p3
cat /proc/mdstat

Die Wiederherstellungszeile sollte innerhalb von ein bis zwei Sekunden erscheinen. Die Ersatzpartition muss mindestens so groß sein wie Used Dev Size aus mdadm --detail. Eine auch nur geringfügig kleinere Partition wird mit einer Meldung der Form not large enough to join array abgelehnt. Partitionieren Sie das neue Laufwerk vor dem Hinzufügen passend zum alten Laufwerk.

Was Sie innerhalb einer VPS sehen können und was nicht

Die meisten Gäste können den RAID-Verbund des Hosts nicht sehen. Das ist beabsichtigt. Der Hypervisor stellt Ihnen eine virtuelle Festplatte bereit. Ob diese Festplatte aus einem RAID-10-Pool mit NVMe-Laufwerken stammt oder auf einem einzelnen Laufwerk liegt, ist eine Eigenschaft des Hosts. Sie wird innerhalb Ihres Gasts nicht angezeigt.

systemd-detect-virt
lsblk -d -o NAME,SIZE,ROTA,MODEL
cat /proc/mdstat

systemd-detect-virt gibt bei einem KVM-Gast kvm aus, bei einem Container einen Containertyp wie lxc und auf Bare Metal none. In einem KVM-Gast sehen Sie normalerweise in lsblk nur ein einzelnes vda oder sda und in /proc/mdstat keine Arrays, weil innerhalb des Gasts keine vorhanden sind.

Bei einer containerbasierten VPS ist diese Ausgabe nicht verlässlich. Container verwenden gemeinsam den Kernel des Hosts, und Teile von /proc sind nicht per Namespace getrennt. Daher kann die Ausgabe den Host statt Ihres eigenen Bereichs beschreiben. Betrachten Sie keine dieser Angaben als Beleg für Ihren eigenen Speicher. Fragen Sie den Provider nach dem Layout. Wenn es darauf ankommt, lassen Sie sich die Antwort schriftlich geben.

Von innerhalb der VPS können Sie das Verhalten der bereitgestellten Festplatte prüfen. Prüfen, ob die VPS-Festplatte tatsächlich NVMe verwendet behandelt die Befehle, die reale Informationen liefern. Was eine SSD-VPS tatsächlich umfasst erläutert, was die Bezeichnung auf der Tarifseite aussagt.

Sollten Sie RAID innerhalb Ihrer VPS betreiben?

In der Regel nicht. Der Grund sind die Fehlerdomänen.

Wenn Sie zwei Volumes an eine VPS anbinden und sie mit mdadm spiegeln, können sich beide Volumes auf demselben physischen Array, auf demselben Node und hinter derselben Stromversorgung befinden. Sie verdoppeln damit die Kosten jedes Schreibvorgangs für eine Redundanz, die bereits vorhanden war. Außerdem verlieren Sie bei genau dem einen relevanten Fehler weiterhin beide Kopien.

Das ist sinnvoll, wenn der Provider dokumentiert, dass sich die Volumes in getrennten Fehlerdomänen befinden. Das gilt auch für einen dedizierten Server, bei dem Sie die verwendeten Laufwerke selbst festlegen können. Andernfalls ist der Aufwand besser in Kopien investiert, die den Server verlassen.

Wovor RAID Sie nicht schützt

RAID deckt einen Ausfall ab: ein Laufwerk, das nicht mehr korrekt arbeitet. Alles Folgende ist ein gültiger Schreibvorgang. Das Array wendet ihn daher auf jede Kopie an und meldet sich weiterhin als fehlerfrei.

  • Löschen. rm -rf im falschen Verzeichnis oder ein Deploy-Skript mit einer nicht gesetzten Variablen in einem Pfad. Das Array erkennt einen zulässigen Schreibvorgang und führt ihn zweimal aus.
  • Ransomware. Verschlüsselung ist ein Schreibvorgang. Ein fehlerfreies Array speichert die verschlüsselte Version auf beiden Seiten des Mirrors.
  • Eine fehlerhafte Anwendung. Ein Fehler, der unbrauchbare Daten in Ihre Datenbank schreibt, schreibt dieselben unbrauchbaren Daten auch auf das redundante Laufwerk.
  • Der gesamte Node. Ein ausgefallener Host oder ein versehentlich gesperrtes Konto. Ein Array kann fehlerfrei und gleichzeitig nicht erreichbar sein.
  • Sie selbst, eine Woche später. Die Datei, die Sie am Montag gelöscht haben, ist am Montag von jedem Laufwerk verschwunden. Nur eine vorher erstellte Kopie kann sie zurückbringen.

Snapshots auf demselben Speicher sind ebenfalls keine Lösung. Sie helfen gegen Löschvorgänge und gehen mit dem Array verloren, auf dem sie liegen. Die Eigenschaft, die ein Backup zu einem Backup macht, ist sein anderer Speicherort. Verschlüsselte Backups außerhalb des Servers mit restic bildet die andere Hälfte dieser Seite: Das Array hält den Betrieb trotz eines ausgefallenen Laufwerks aufrecht, und restic stellt Ihre Daten wieder her, wenn der Schaden durch einen Schreibvorgang entstanden ist, den das Array problemlos ausführen konnte.

FAQ

Bedeutet RAID 10, dass ich keine Backups benötige?

Nein. RAID 10 schützt vor dem Ausfall eines Laufwerks. Jeder gültige Schreibvorgang wird auf beide Hälften eines Mirrors angewendet. Daher erreicht eine Löschung oder ein Ransomware-Angriff das redundante Laufwerk im selben Moment. Das Array meldet sich anschließend als fehlerfrei, weil aus seiner Sicht nichts ausgefallen ist. Sie benötigen weiterhin Kopien außerhalb des Rechners. Außerdem sollten Sie gelegentlich eine Kopie wiederherstellen, um zu prüfen, ob sie funktioniert.

Warum wählen VPS-Anbieter RAID 10 statt RAID 5 oder RAID 6?

Dafür gibt es zwei Gründe. Beide betreffen kleine zufällige Schreibvorgänge. Bei einem nicht zwischengespeicherten Single-Block-Read-Modify-Write werden alte Daten und die Parität gelesen, bevor die neue Parität berechnet wird. Das verursacht bei RAID 5 4 Operationen und bei RAID 6 6. Ein Mirror mit zwei Kopien benötigt dagegen 2 Operationen. Bei Reconstruct-Write werden stattdessen unveränderte Daten verwendet. Bei Full-Stripe-Writes sind keine Vorablesevorgänge für alte Daten oder alte Parität erforderlich. Ein vollständiger RAID-5-Rebuild liest anschließend jedes verbliebene Laufwerk von Anfang bis Ende. Ein herkömmliches RAID 10 mit festen Mirror-Paaren kopiert dagegen vom noch verfügbaren Partner. Andere Linux-RAID10-Layouts verwenden mehrere Quellmitglieder. Linux MD begrenzt die Wiederherstellung, wenn gleichzeitig andere Aktivitäten stattfinden. Dafür zahlen die Anbieter mit Kapazität: der Hälfte der verfügbaren NVMe-Rohkapazität.

Was bedeutet [U_] oder [UU_U] in /proc/mdstat?

Jedes Zeichen steht für einen Slot im Array. Die Reihenfolge entspricht der Slot-Reihenfolge. Für jeden Slot gibt es genau ein Zeichen. U bedeutet, dass dieser Slot ein aktives und synchronisiertes Mitglied enthält. _ bedeutet, dass in diesem Slot nichts funktioniert. [U_] bedeutet bei einem Mirror mit zwei Laufwerken, dass der zweite Slot ausgefallen ist und keine Redundanz mehr vorhanden ist. Lesen Sie die Anzeige zusammen mit dem Paar davor. [4/3] gibt dort an, dass das Array vier Mitglieder erwartet und drei besitzt. Die Slot-Reihenfolge entspricht der Spalte RaidDevice von mdadm --detail und nicht der Reihenfolge, in der die Gerätenamen in der Zeile erscheinen.

Wie viele Laufwerke kann ein RAID-10-Array verlieren?

Bei einem herkömmlichen RAID 10 mit zwei Kopien und festen Mirror-Paaren übersteht das Array garantiert einen Ausfall, unabhängig davon, welches Laufwerk ausfällt. Über diesen einen Ausfall hinaus hängt es davon ab, wo die Ausfälle auftreten. Jedes Mirror-Paar kann eines seiner beiden Mitglieder verlieren. Daher übersteht ein Array mit acht Laufwerken bis zu vier Ausfälle, wenn keine zwei Ausfälle dasselbe Paar betreffen. Es fällt dagegen bei zwei Ausfällen aus, wenn beide dasselbe Paar betreffen. Planen Sie mit der garantierten Anzahl von einem Ausfall. Behandeln Sie alles darüber hinaus als Glück und nicht als Schutz.

Sollte ich zwei Volumes in meiner VPS mit mdadm spiegeln?

In der Regel nein. Zwei Volumes, die an eine VPS angebunden sind, liegen häufig auf demselben physischen Array auf demselben Host. Durch das Spiegeln verdoppeln sich dadurch die Kosten jedes Schreibvorgangs. Es schützt außerdem vor nichts, was das eigene RAID des Hosts nicht bereits abdeckt. Es lohnt sich nur, wenn der Anbieter dokumentiert, dass die Volumes in getrennten Ausfallbereichen liegen. Andernfalls sollten Sie diesen Aufwand in Backups investieren, die den Rechner verlassen.

War dieser Artikel hilfreich?