Online-Laufwerksersatz: BTRFS mit RAID 6

698
Oliver R.

Auf einer Testmaschine habe ich vier Festplatten installiert, die als RAID6 konfiguriert sind. Für einen Test habe ich eines der Laufwerke (/ dev / sdk) entfernt, während das Volume angehängt war und Daten darauf geschrieben wurden. Das funktionierte gut, soweit ich sehen kann. Einige E / A-Fehler wurden in / var / log / syslog geschrieben, der Datenträger funktionierte jedoch weiterhin. Leider hat der Befehl "btrfs fi sh" keine fehlenden Laufwerke angezeigt. Also habe ich das Volume im degradierten Modus gemountet: "mount -t btrfs / dev / sdx1 -o remount, rw, degraded, noatime / mnt". Auf diese Weise wurde das betreffende Laufwerk als vermisst gemeldet. Dann habe ich die Festplatte wieder eingesteckt (es ist natürlich wieder / dev / sdk) und ein Balancing gestartet: "btrfs filesystem balance start / mnt". Nun sieht der Band so aus:

$ btrfs fi sh Label: none uuid: 28410e37-77c1-4c01-8075-0d5068d9ffc2 Total devices 4 FS bytes used 257.05GiB devid 1 size 465.76GiB used 262.03GiB path /dev/sdi1 devid 2 size 465.76GiB used 262.00GiB path /dev/sdj1 devid 3 size 465.76GiB used 261.03GiB path /dev/sdh1 devid 4 size 465.76GiB used 0.00 path /dev/sdk1 

Wie kann ich / dev / sdk1 erneut initiieren? Das Ausführen von "$ btrfs fi ba start / mnt" hilft nicht. Ich habe versucht, die Festplatte zu entfernen, aber

$ btrfs de de /dev/sdk1 /mnt/ ERROR: error removing the device '/dev/sdk1' - unable to go below four devices on raid6  

Ein Ersatz funktioniert auch nicht so:

$ btrfs replace start -f -r /dev/sdk1 /dev/sdk1 /mnt /dev/sdk1 is mounted 

Gibt es andere Möglichkeiten, die Festplatte zu ersetzen / neu zu starten und anschließend auf RAID 5 umzustellen?

1
Soll ich dies besser auf ServerFault veröffentlichen? Wenn ja, kann ein Administrator diese Frage bitte verschieben? Oliver R. vor 9 Jahren 0
Was sagt btrfs scrub? basic6 vor 8 Jahren 1

1 Antwort auf die Frage

1
basic6

Ich habe diesen Test auf einem Testsystem mit Kernel 4.3 wiederholt.

Wie Sie habe ich ein BTRFS RAID-6-Array mit 4 Laufwerken erstellt:

# mkfs.btrfs -m raid6 -d raid6 /dev/sdb /dev/sdc /dev/sdd /dev/sde 

Ich habe es dann gemountet und angefangen, Daten darauf zu schreiben.

Während des Vorgangs entfernte ich eines der Laufwerke. Dies führte natürlich zu einer Vielzahl von Fehlermeldungen im Protokoll und überall. Wie erwartet wurde der Schreibvorgang jedoch nicht unterbrochen und es wurden keine Dateien beschädigt.

Noch wichtiger ist, dass BTRFS die Fehleranzahl ( dev stats) für Schreib- und Löschfehler erhöht hat . Wenn es sich also um ein Produktionssystem handelt, würde es überwacht, ein Cronjob wie dieser hätte eine Benachrichtigungs-E-Mail generiert:

MAILTO=admin@myserver.com @hourly /sbin/btrfs device stats /mnt/tmp | grep -vE ' 0$' 

Dann, ich habe nicht ein Gleichgewicht laufen, aber ein Peeling, weil ich BTRFS wollte das gesamte Dateisystem scannen und alle Fehler beheben, das ist genau das, was ein Peeling tut.

# btrfs scrub start -B /mnt/tmp 

Schließlich setze ich die BTRFS-Fehler zurück auf null (dies würde die Warnmeldungen stoppen, wenn dieses Dateisystem überwacht wird):

# btrfs device stats -z /mnt/tmp 

Bei einem anderen Scrub wurden keine Fehler mehr gefunden.

Und die Datei, die ich während des Tests geschrieben habe, ist korrekt. Ihre MD5-Summe stimmt mit dem Original überein.

Natürlich ist jeder Test anders. Wenn dem 3. Laufwerk ( sdd) ein neuer Name zugewiesen wird sdf, können Sie es durch sich selbst ersetzen und es effektiv neu belichten:

# btrfs replace start 3 /dev/sdf /mnt/tmp 

Sie haben übrigens erwähnt, dass Sie ein Laufwerk entfernt haben. Sie müssen das nicht tun, es wird nur Ihre Geräte verwechseln und ist ineffizient. Der Befehl zum Ersetzen war schon immer da.

Übrigens In einem Fall führte BTRFS dazu, dass das Testsystem abstürzte, während ich vor dem Ausführen des Scrub-Vorgangs versuchte, aus dem beschädigten Dateisystem zu lesen. Im Gegensatz zu den meisten Teilen dieses Dateisystems wird BTRFS RAID-5 / RAID-6 immer noch als experimentell betrachtet (obwohl es ständig verbessert wird, kann diese Aussage veraltet sein, dies gilt für 4.3). Dies war jedoch nur ein einziges Mal, ich habe den Test wiederholt und der Test ist dann nicht abgestürzt. Dies besagt auch, dass BTRFS RAID-6 zwar während des Versuchsabsturzes abstürzen kann, Ihre Daten jedoch geschützt sind und ein Scrub zuverlässig bei Fehlern anzeigt, da die gespeicherten Prüfsummen zur Überprüfung der Dateien verwendet werden.

Ich habe den Test auch wiederholt und auf zwei Laufwerken Fehler verursacht. Dies ist ein RAID-6, daher funktionierte es auch wie erwartet. Nach einem Peeling war alles in Ordnung.