Die --write-mostly
, --write-behind
durch die behandelt md
intern Treiber. md
Behält Metadaten bei, wie die Bitmap mit Schreibabsicht (die für die Funktion zum Zurückschreiben obligatorisch ist), die im Grunde protokolliert, welche Daten noch geschrieben wurden und welche Daten noch fehlen. Dies ist erforderlich, wenn ein Stromausfall auftritt und die Daten die meist schreibbaren Geräte noch nicht erreicht haben. In diesem Fall wird der betroffene Datenbereich erneut synchronisiert (in Ihrem Fall von der SSD gelesen, auf die Festplatte geschrieben).
Aber wie wird das auf Kernel-Ebene zwischengespeichert?
Für den Write-Behind-Fall dupliziert der MD-Treiber die Schreibanforderung grundsätzlich intern. Die Master-Schreibanforderung geht an die primären Laufwerke und teilt den oberen Ebenen mit, dass "OK, das habe ich bereits getan". Die kopierte Schreibanforderung bleibt dann für die meist hinter dem Schreiben befindliche Seite des RAID bestehen und kann länger dauern, hoffentlich ohne dass es jemand merkt.
Dann unternimmt die RAID-Schicht viele Schritte, um sicherzustellen, dass keine Daten vom Schreibgerät gelesen werden, solange noch Schreibanfragen in der Warteschlange anstehen. Warum sollten Daten von einem Schreibgerät gelesen werden? Nun, die SSD ist möglicherweise ausgefallen, es ist also alles übrig, was noch übrig ist. Es ist kompliziert und das Zurückschreiben führt einige Eckfälle ein.
Das ist wahrscheinlich auch der Grund, warum es nur für RAID-1-Level unterstützt wird, nicht für die anderen. Obwohl es theoretisch sinnvoll sein könnte, SSDs im Wesentlichen als RAID-0 und zwei Paritäts-HDDs im Write-Behind-Modus zu haben, gibt es keine Unterstützung für ein solches Write-Behind-RAID-6. Es ist nur RAID-1 und wird selbst dort selten verwendet.
Die anderen Cache-Einstellungen bleiben davon unberührt. Grundsätzlich kümmert sich der gesamte Caching-Mechanismus nicht im geringsten darum, wie der md
Treiber die Dinge intern implementiert hat. Der Cache macht sein Ding und md macht sein Ding. Ein Dateisystem-Cache funktioniert also für ein Dateisystem auf md genauso wie für ein Dateisystem auf einem leeren Laufwerk. (Die Realität ist etwas komplizierter, aber Sie können sich das so vorstellen.)