Das Linux-Kernel 6.2 wird Verbesserungen fĂŒr RAID5/6 in Btrfs enthalten.

Um das Linux-Kernel 6.2 zu aktivieren, wurden Verbesserungen an Btrfs vorgeschlagen, die sich mit dem Problem des "Write Hole" in der Implementierung von RAID 5/6 befassen. Das Hauptproblem besteht darin, dass man im Falle eines Absturzes wĂ€hrend des Schreibvorgangs nicht sofort feststellen kann, welcher Block auf welchem der RAID-GerĂ€te korrekt geschrieben wurde und welcher Schreibvorgang nicht abgeschlossen wurde. Bei dem Versuch, RAID in einer solchen Situation wiederherzustellen, kann es zu einer BeschĂ€digung der Blöcke kommen, die den nicht geschriebenen Blöcken entsprechen, da der Zustand der RAID-Blöcke desynchronisiert ist. Dieses Problem tritt in allen RAID-Arrays 1/5/6 auf, in denen keine speziellen Maßnahmen zur BekĂ€mpfung dieses Effekts ergriffen wurden.

In der RAID-Implementierung, Ă€hnlich wie RAID1 in btrfs, wird dieses Problem durch die Verwendung von PrĂŒfziffern in beiden Kopien gelöst; bei einer NichtĂŒbereinstimmung werden die Daten einfach aus der zweiten Kopie wiederhergestellt. Dieser Ansatz funktioniert auch, wenn ein GerĂ€t beginnt, fehlerhafte Daten anstelle eines vollstĂ€ndigen Ausfalls zu liefern.

Im Falle von RAID5/6 speichert das Dateisystem jedoch keine PrĂŒfziffern fĂŒr die ParitĂ€tsblöcke: In einer normalen Situation wird die Korrektheit der Blöcke durch die Tatsache ĂŒberprĂŒft, dass sie alle mit einer PrĂŒfziffer versehen sind, und der ParitĂ€tsblock kann aus den Daten rekonstruiert werden. Bei einer Teilaufzeichnung kann dieser Ansatz jedoch in bestimmten Situationen scheitern. In diesem Fall ist es bei der Wiederherstellung des Arrays nicht auszuschließen, dass die von der unvollendeten Aufzeichnung betroffenen Blöcke fehlerhaft wiederhergestellt werden.

Im Fall von btrfs ist dieses Problem am relevantesten, wenn die erzeugte Schreiboperation kleiner als der Stripe ist. In diesem Fall muss das Dateisystem die Lese-Änderungs-Schreiboperation (read-modify-write, RMW) ausfĂŒhren. Wenn dabei Blöcke mit unvollstĂ€ndigen SchreibvorgĂ€ngen getroffen werden, kann die RMW-Operation Zerstörungen verursachen, die trotz der PrĂŒfziffern nicht erkannt werden. Die Entwickler haben Änderungen vorgenommen, bei denen die RMW-Operation die PrĂŒfziffern der Blöcke ĂŒberprĂŒft, bevor diese Operation durchgefĂŒhrt wird, und im Falle einer Datenwiederherstellung auch die ÜberprĂŒfung der PrĂŒfziffern nach dem Schreiben durchfĂŒhrt. Leider fĂŒhrt dies bei der Situation mit unvollstĂ€ndigem Stripe (RMW) zu zusĂ€tzlichen Kosten fĂŒr die Berechnung der PrĂŒfziffern, erhöht jedoch erheblich die ZuverlĂ€ssigkeit. FĂŒr RAID6 ist diese Logik noch nicht bereit, aber fĂŒr einen solchen Ausfall in RAID6 muss der Schreibvorgang auf sofort 2 GerĂ€te fehlschlagen, was weniger wahrscheinlich ist.

ZusĂ€tzlich können die Empfehlungen der Entwickler zur Verwendung von RAID5/6 hervorgehoben werden, die im Wesentlichen besagen, dass im Btrfs-Speicherprofil fĂŒr Metadaten und Daten unterschiedlich sein kann. Dabei kann fĂŒr Metadaten das RAID1-Profil (Spiegelung) oder sogar RAID1C3 (3 Kopien) verwendet werden, wĂ€hrend fĂŒr Daten RAID5 oder RAID6 verwendet werden kann. Dadurch wird eine zuverlĂ€ssige Schutz der Metadaten und das Fehlen eines „Write Hole“ einerseits und eine effizientere Nutzung des Speicherplatzes, die fĂŒr RAID5/6 charakteristisch ist, andererseits gewĂ€hrleistet. Dies ermöglicht es, Zerstörungen in den Metadaten zu vermeiden, und DatenbeschĂ€digungen können behoben werden.

Es kann auch angemerkt werden, dass fĂŒr SSDs in Btrfs im Kernel 6.2 standardmĂ€ĂŸig die asynchrone AusfĂŒhrung der „Discard“-Operation (Kennzeichnung freigegebener Blöcke, die physisch nicht mehr gespeichert werden mĂŒssen) aktiviert wird. Der Vorteil dieses Modus besteht in der hohen Leistung aufgrund der effektiven Gruppierung von „Discard“-Operationen in der Warteschlange und der anschließenden Verarbeitung der Warteschlange durch den Hintergrundprozess, wodurch normale Dateisystemoperationen nicht verlangsamt werden, wie es bei der synchronen „Discard“-Operation beim Freigeben von Blöcken der Fall ist, und die SSD bessere Entscheidungen treffen kann. Andererseits ist es nicht mehr erforderlich, Dienstprogramme wie fstrim zu verwenden, da alle verfĂŒgbaren Blöcke im Dateisystem bereinigt werden, ohne dass eine zusĂ€tzliche ÜberprĂŒfung erforderlich ist und ohne die Operationen zu verlangsamen.

Quelle: opennet.ru

60GB SSD 8Gb DDR4