Wenn du dein System in einem Raid fährst, geschieht die Selbstheilung on-the-fly beim Lesen. Prinzipiell wird der Hash-Abgleich ja bei JEDEM Lesevorgang durchgeführt. Man dürfte also (leider oder zum Glück) das niemals feststellen.
Das ist korrekt. Allerdings vergessen die meisten Privatanwender, dass die Parität von der CPU berechnet wird und die zusammen mit den Daten durch den RAM läuft, bevor sie auf der HDD landet. Wenn also eine Datei auf ein NAS geschrieben wird und das Bit kippt im RAM, dann wird zB eine korrekte Checksumme berechnet, aber mit den falschen Daten. Dies kann man nur mit ECC RAM verhindern, den aber die meisten Consumer-NAS gar nicht verbaut haben, so dass die Datei bereits kaputt ist, wenn sie auf die HDD geschrieben wird. Und
ein Bit kippt immerhin auf 8% aller RAM-Module pro Jahr, wobei dies durch defekte Speicherbereiche oder kosmische Strahlung resultiert (wohlgemerkt in einem Rechenzentrum von Google, die ihren RAM erstmal "einbrennen", bevor sie ihn überhaupt nutzen und alle paar Jahre durchtauschen).
BTRFS schützt also nur, wenn die Datei bereits korrekt auf der HDD liegt und auf der HDD Bits kippen. Das ist aber sehr selten der Fall, weil HDDs selbst bereits einen ECC Algorithmus enthalten, womit alle Sektoren beim Lesen abgeglichen und repariert werden. Dank
Reed-Solomon, kann die HDD dabei nicht nur ein gekipptes Bit reparieren, sondern mehrere und im Gegensatz zu einer XOR Parität, weiß die HDD Firmware auch immer, dass ein Bit gekippt ist.
Sollte es zu solchen kippenden Bits auf der HDD kommen, sieht man das über SMART bei der "Read Error Rate". Kam es zu solchen Fehlern, wird der betroffene Sektor als "Current Pending Sector" markiert. Und sollte sich beim nächsten Scan durch die HDD Firmware herausstellen, dass dieser Sektor defekt ist, wird er neu zugeordnet, was man beim "Reallocated Sector Count" sehen kann.
Bis hier hin hat die BTRFS Selbstheilung nicht geholfen, denn die HDD hat durchgehend die korrekten Daten zurückgeliefert.
Ist die Selbstheilung nun also Schlangenöl? Nein, denn es kann ja sein, dass ein Sektor komplett kaputt geht oder so viele Bits gekippt sind, dass die HDD Firmware, sie nicht mehr reparieren kann. Dann kommt es meist zu einem "Uncorrectable Sector". Jetzt kann BTRFS seinen Job machen und die kaputten Daten wiederherstellen.
Aber wie gesagt nützt das nichts, wenn man nicht sicherstellen kann, dass die geschriebenen Daten korrekt sind. Und das gilt natürlich auch immer dann, wenn man neue Platten einbaut und dadurch ALLE Daten ausgelesen und neu geschrieben werden. Ein RAM Modul ohne ECC mit defekten Speicherbereichen kann einem da schon einiges zerlegen und keiner merkt es.
Man sollte sich also bewusst sein, dass die BTRFS Selbstheilung nur einen Teil des großen Ganzen absichert. ECC RAM ist der Gurt im Auto und BTRFS der Airbag.