Dies ist eine etwas theoretische Frage zu ZFS und RAID-Z. Ich werde aus Gründen der Übersichtlichkeit ein Single-Parity-Array mit drei Festplatten als Beispiel verwenden, aber das Problem kann auf eine beliebige Anzahl von Festplatten und eine beliebige Parität ausgedehnt werden.
Angenommen, wir haben die Datenträger A, B und C im Pool und sie sind sauber.
Angenommen, wir fügen jetzt Datenträger D physisch hinzu, um Datenträger C zu ersetzen, und Datenträger C funktioniert weiterhin ordnungsgemäß und wird nur aus vorbeugenden Gründen ersetzt. Einige Administratoren ziehen möglicherweise nur C und installieren D, was etwas besser organisiert ist, da Geräte die IDs nicht ändern müssen. Dadurch wird das Array jedoch vorübergehend beeinträchtigt. Nehmen wir in diesem Beispiel an, wir installieren D, ohne C. Solaris-Dokumente zu entfernen oder zu entfernen Wir können eine Festplatte ersetzen, ohne sie zuerst zu entfernen, indem wir einen Befehl wie den folgenden verwenden:
zpool replace pool C D
Dies sollte ein Resilvering auf D verursachen. Nehmen wir an, dass das Resilvering entlang eines "Cursors" "nach unten" verläuft. (Ich kenne die tatsächliche Terminologie, die in der internen Implementierung verwendet wird, nicht.)
Angenommen, auf halbem Weg durch das Resilvering fällt Festplatte A aus. Theoretisch sollte dies wiederherstellbar sein, da oberhalb des Cursors B und D eine ausreichende Parität und unterhalb des Cursors B und C eine ausreichende Parität enthalten ist. Ob dies tatsächlich wiederherstellbar ist oder nicht, hängt jedoch von internen Entwurfsentscheidungen in ZFS ab, die mir nicht bekannt sind (und die im Handbuch in bestimmten Begriffen nicht angegeben sind).
Wenn ZFS weiterhin Schreibvorgänge an C unterhalb des Cursors sendet, ist alles in Ordnung. Wenn ZFS C jedoch intern so behandelt, als wäre es weg, indem es D nur aus der Parität zwischen A und B entfernt und nur A und B unter den Cursor schreibt, stoßen wir an.
Einige Experimente könnten diese Frage beantworten, aber ich hatte gehofft, dass vielleicht jemand hier bereits weiß, wie ZFS mit dieser Situation umgeht. Vielen Dank im Voraus für jeden Einblick!