
TLDR; Mein ZFS-Spiegelpool hat einige Prüfsummenfehler. Ich habe den Controller ausgetauscht, weil ich dachte, das sei die wahrscheinlichste Ursache, aber die Fehler lassen sich nicht beheben. Pool Clear setzt sie vorübergehend zurück, aber sie kommen wieder, wenn ich das nächste Mal einen Scrub ausführe. Wie kann ich sie endgültig beheben?
Die ganze Geschichte: Ich habe seit einiger Zeit einen ZFS-Mirror-0 auf Ubuntu 20.04.2 LTS eingerichtet und ausgeführt. Als eines der Laufwerke den Geist aufgab, nutzte ich den Ausfall, um beide Laufwerke durch größere zu ersetzen und eine SATA-III-PCI-Karte für die neuen Laufwerke hinzuzufügen (die alten waren an den integrierten SATA-II-Controller angeschlossen, da ich keine SATA-III-Anschlüsse mehr zur Verfügung hatte). Nachdem ZFS einige Wochen lang auf den neuen Laufwerken und dem neuen Controller lief, beschwerte es sich über Prüfsummenfehler auf beiden neuen Laufwerken und versetzte das Array infolgedessen in einen „degradierten“ Zustand.
Einige Nachforschungen führten mich zu dem Schluss, dass es sich wahrscheinlich eher um ein Problem mit dem Controller als mit den Laufwerken selbst handelte, da beide Laufwerke genau dieselbe Anzahl von Prüfsummenfehlern zeigten. Also zog ich den neuen Controller heraus und setzte die Laufwerke vorerst wieder auf den integrierten SATA-II-Controller. Ich wollte die Controllerkarte ersetzen, sobald ich überprüft hatte, dass das das Problem ist. Dann löschte ich die beiden Dateien, die zpool status -v
permanente Fehler aufwiesen, setzte zpool clear data
die Fehler zurück und führte einen Scrub aus.
Leider traten die Fehler nach dem Scrub erneut auf, nur dass jetzt -v
keine Datei mehr angezeigt wurde, sondern nur die Adresse (Inode, glaube ich), vermutlich für eine der Dateien, die ich zuvor gelöscht hatte. Ich versuchte es erneut, mit demselben Ergebnis. Jedes Mal, wenn ich einen Scrub ausführe, kommt das folgende Ergebnis zurück:
root@watchman:~# zpool status -v
pool: data
state: DEGRADED
status: One or more devices has experienced an error resulting in data
corruption. Applications may be affected.
action: Restore the file in question if possible. Otherwise restore the
entire pool from backup.
see: http://zfsonlinux.org/msg/ZFS-8000-8A
scan: scrub repaired 16K in 0 days 09:10:20 with 1 errors on Sat Jul 24 15:48:21 2021
config:
NAME STATE READ WRITE CKSUM
data DEGRADED 0 0 0
mirror-0 DEGRADED 0 0 0
ata-ST8000VE000-2P6101_WSD1M5NW DEGRADED 0 0 15 too many errors
ata-ST8000VE000-2P6101_WSD1HEJX DEGRADED 0 0 15 too many errors
errors: Permanent errors have been detected in the following files:
data:<0x380508>
Soweit ich das beurteilen kann, handelt es sich hier um dasselbe Problem, das vermutlich aufgrund des fehlerhaften Controllers bereits bestand, aber ich kann es nicht beheben. Wie kann ich meinen Spiegel wieder voll funktionsfähig machen?
UPDATE: Ich habe die Idee, die Fehler zu beheben, schließlich aufgegeben und stattdessen von vorne begonnen. Ich habe einen neuen Pool erstellt und dabei eines der Laufwerke aus dem vorhandenen Spiegel gestohlen. Dann habe ich ausgeführt, rsync
um alle Daten vom alten Pool in den neuen zu kopieren. Dabei sind zwar ein paar Fehler aufgetreten (zfs hat nicht gelogen, was die Datenfehler angeht), aber nichts Bedeutsames oder Beunruhigendes, und durch das Ausschließen der fehlerhaften Dateien konnte rsync erfolgreich abgeschlossen werden. Dann habe ich das zweite Laufwerk zum neuen Pool hinzugefügt, und nach einem Resilver sieht jetzt alles gut aus, und ein Scrub auf dem neuen Pool wurde ohne Fehler abgeschlossen.
Vorausgesetzt, dass in der nächsten Woche oder so weiterhin alles gut aussieht, kann ich wohl davon ausgehen, dass die SATA III-Karte die Ursache des Problems war, und sie durch eine bessere Marke/Option ersetzen :)