Meines Wissens nach implementieren Festplatten und SSDs einige grundlegende Fehlerkorrekturen im Laufwerk, und die meisten RAID-Konfigurationen, z. B. mdadm, hängen davon ab, um zu entscheiden, wann ein Laufwerk einen Fehler nicht behoben hat und offline geschaltet werden muss. Dies hängt jedoch davon ab, dass der Speicher in seiner Fehlerdiagnose 100% genau ist. Dies ist nicht der Fall, und eine häufig verwendete Konfiguration wie ein RAID-1-Spiegel mit zwei Laufwerken ist anfällig: Angenommen, einige Bits auf einem Laufwerk sind stillschweigend beschädigt und das Laufwerk meldet keinen Lesefehler. Daher implementieren Dateisysteme wie btrfs und ZFS ihre eigenen Prüfsummen, um fehlerhaften Firmware-Laufwerken, fehlerhaften SATA-Kabeln usw. nicht zu vertrauen.
In ähnlicher Weise kann RAM auch Zuverlässigkeitsprobleme aufweisen, und daher haben wir ECC-RAM, um dieses Problem zu lösen.
Meine Frage lautet : Wie kann die Linux-Auslagerungsdatei kanonisch vor stiller Beschädigung / Bitfäule geschützt werden, die nicht von der Laufwerksfirmware in einer Konfiguration mit zwei Festplatten (dh unter Verwendung von Hauptkernel-Treibern) erfasst wird? Es scheint mir, dass eine Konfiguration, die hier keinen End-to-End-Schutz bietet (wie die von btrfs), den durch ECC RAM verursachten Seelenfrieden etwas negiert. Ich kann mir aber keinen guten Weg vorstellen:
- btrfs unterstützt Swapfiles überhaupt nicht. Sie können ein Loop-Gerät aus einer btrfs-Datei einrichten und einen Swap durchführen. Das hat aber Probleme:
- Zufällige Schreibvorgänge funktionieren nicht gut: https://btrfs.wiki.kernel.org/index.php/Gotchas#Fragmentation
- Der dortige Vorschlag, das Kopieren beim Schreiben zu deaktivieren, deaktiviert auch die Prüfsumme - und macht damit den ganzen Punkt dieser Übung zunichte. Sie gehen davon aus, dass die Datendatei über einen eigenen internen Schutz verfügt.
- ZFS unter Linux ermöglicht die Verwendung eines ZVOL als Swap, was meiner Meinung nach funktionieren könnte: http://zfsonlinux.org/faq.html#CanIUseaZVOLforSwap. Nach meiner Lektüre erfordert ZFS jedoch normalerweise Speicherplatz und bringt ihn zum Swap -nur Anwendung klingt wie einige Arbeit, um es herauszufinden. Ich denke, das ist nicht meine erste Wahl. Warum Sie ein Out-of-Tree-Kernelmodul verwenden müssten, um einen zuverlässigen Swap zu erhalten, ist mir ein Rätsel - sicherlich gibt es heutzutage eine Möglichkeit, dies mit den meisten modernen Linux-Distributionen / -Kerneln zu erreichen?
- Es gab tatsächlich einen Thread auf einer Linux-Kernel-Mailingliste mit Patches, um Prüfsummen im Speichermanager selbst zu aktivieren, genau aus den Gründen, die ich in dieser Frage diskutiere: http://thread.gmane.org/gmane.linux.kernel/989246 - Leider ist der Patch, soweit ich das beurteilen kann, gestorben und hat ihn aus mir unbekannten Gründen nie stromaufwärts geschafft. Schade, es klang wie eine nette Funktion. Wenn Sie dagegen ein RAID-1 austauschen - wenn die Beschädigung die Reparaturfähigkeit der Prüfsumme übersteigt, möchten Sie, dass der Speichermanager versucht, vom anderen Laufwerk zu lesen, bevor er in Panik gerät oder was auch immer wahrscheinlich außerhalb des Bereichs, den ein Speichermanager tun sollte.
In Summe:
- RAM hat ECC, um Fehler zu korrigieren
- Dateien im permanenten Speicher haben btrfs, um Fehler zu korrigieren
- Tausch hat ??? <--- das ist meine Frage