Ich habe in letzter Zeit über Write-Caching, NCQ, Firmware-Fehler, Barrieren usw. in Bezug auf SATA-Laufwerke gelesen, und ich bin nicht sicher, welche Einstellung meine Daten im Falle eines Stromausfalls am besten schützt.
Soweit ich weiß, ermöglicht NCQ dem Laufwerk, die Schreibvorgänge neu zu ordnen, um die Leistung zu optimieren, und gleichzeitig den Kernel darüber zu informieren, welche Anforderungen physisch geschrieben wurden.
Durch das Schreiben in den Cache wird das Laufwerk eine Anforderung viel schneller bedienen, da es nicht darauf wartet, dass die Daten auf die physische Festplatte geschrieben werden.
Ich bin mir nicht sicher, wie sich NCQ und Write Cache hier mischen ...
Dateisysteme, insbesondere Journale, müssen sicher sein, dass eine bestimmte Anforderung notiert wurde. Außerdem erzwingt der Benutzerbereichsprozess mithilfe von fsync () das Löschen einer bestimmten Datei. Dieser Aufruf von fsync () sollte erst zurückkehren, wenn das Dateisystem sicher ist, dass die Daten auf die Festplatte geschrieben wurden.
Es gibt eine Funktion (FUA, Force Unit Access), die ich nur auf SAS-Laufwerken gesehen habe und die das Laufwerk zwingt, den Cache zu umgehen und direkt auf die Festplatte zu schreiben. Für alles andere gibt es Write Barriers, einen Mechanismus, der vom Kernel bereitgestellt wird und einen Cache-Flush auf dem Laufwerk auslösen kann. Dadurch wird der gesamte Cache und nicht nur die kritischen Daten abgeschrieben, wodurch das gesamte System bei Missbrauch verlangsamt wird, z. B. mit fsync ().
Dann gibt es Laufwerke mit Firmware-Fehlern oder die absichtlich darüber lügen, wann Daten physisch geschrieben wurden.
Allerdings gibt es mehrere Möglichkeiten, die Laufwerke / Dateisysteme einzurichten: A) NCQ und Schreibcache deaktiviert B) Nur NCQ aktiviert C) Nur Schreibcache aktiviert D) Sowohl NCQ als auch Schreibcache aktiviert
Ich gehe davon aus, dass Barrieren aktiviert sind. Übrigens, wie kann ich überprüfen, ob sie tatsächlich aktiviert sind?
Im Falle eines Stromausfalls ist die Option B (NCQ, kein Cache) beim aktiven Schreiben auf die Festplatte sowohl für das Dateisystemjournal als auch für die Daten sicher. Es kann eine Leistungsstrafe geben.
Option D (NCQ + Cache) ist bei Verwendung von Barrieren oder FUA sicher für das Dateisystemjournal und für Anwendungen, die fsync () verwenden. Es wäre schlecht für die Daten, die im Cache gewartet haben, und es liegt am Dateisystem, sie zu erkennen (Prüfsumme), und zumindest befindet sich das Dateisystem (hoffentlich) nicht in einem instabilen Zustand. In Bezug auf die Leistung sollte es besser sein.
Meine Frage steht jedoch noch ... Vermisse ich etwas? Gibt es eine andere Variable zu berücksichtigen? Gibt es ein Tool, das dies bestätigen könnte und das meine Laufwerke sich so verhalten, wie sie sollten?
quelle
Antworten:
Für Straight-Up-Enterprise-Systeme gibt es eine zusätzliche Schicht in Form des Speicheradapters (fast immer eine RAID-Karte), auf der noch eine weitere Cache-Schicht vorhanden ist. Heutzutage gibt es eine Menge Abstraktion im Speicherstapel, und ich habe dies in einer Blogserie, die ich über Know your I / O verfasst habe, ausführlich behandelt .
RAID-Karten können den Festplatten-Cache umgehen, wobei einige sogar das Umschalten dieser Funktion im RAID-BIOS ermöglichen. Dies ist ein Grund, warum Enterprise- Festplatten Enterprise sind. Ihre Firmware ermöglicht solche Dinge, die Consumer-Laufwerke ( insbesondere "grüne" Laufwerke) nicht zulassen . Diese Funktion behebt direkt den Fall, den Sie befürchten: Stromausfall bei nicht festgeschriebenen Schreibvorgängen. Der RAID-Karten-Cache, der entweder batteriegepuffert oder gepuffert sein sollte, bleibt so lange erhalten, bis die Stromversorgung wiederhergestellt wird und diese Schreibvorgänge erneut ausgeführt werden können.
Bestimmte Enterprise-SSDs verfügen über einen integrierten Kondensator mit genügend Kapazität, um den integrierten Cache vor dem vollständigen Ausschalten zu aktivieren.
Wenn Sie mit einem System arbeiten, dessen Festplatten direkt mit dem Motherboard verbunden sind, gibt es weniger Sicherheiten. Ein Stromausfall führt in der Tat zu einem Verlust, es sei denn, die Festplatten selbst können den Schreib-Cache festschreiben. Das xfs- Dateisystem wurde als unzuverlässig eingestuft, da es diesen Fehlermodus nicht überstehen kann. Es wurde entwickelt, um auf voll ausgelasteten Unternehmenssystemen mit ausgereifter Speicherüberlebensfähigkeit zu laufen.
Die Zeit ist jedoch vergangen und XFS wurde entwickelt, um dies zu überstehen. Die anderen großen Linux-Dateisysteme (sowie ntfs unter Windows) hatten bereits ein Engineering, um genau diesen Fehlermodus zu überstehen . Wie es funktionieren soll, ist, dass die verlorenen Schreibvorgänge nicht im FS-Journal angezeigt werden und dass sie nicht festgeschrieben wurden, sodass Korruption sicher erkannt und umgangen wird.
Sie weisen hier auf das eine Problem hin: die Disk-Firmware, die liegt. In diesem Fall hat das FS-Journal eine falsche Annahme gegenüber der Realität getroffen, und es kann einige Zeit dauern, bis keine Korruption festgestellt wird. Parity RAID und Mirror RAID können dies umgehen, da eine weitere festgeschriebene Kopie zum Abrufen vorhanden sein sollte. Bei Single-Disk-Setups wird diese Überprüfung jedoch nicht durchgeführt, sodass tatsächlich ein Fehler auftritt.
Sie können das Firmware-Risiko umgehen, indem Sie Laufwerke der Enterprise-Klasse verwenden, die eine wesentlich bessere Validierung erhalten (und im Vergleich zu den angenommenen Workload-Mustern getestet werden) und Ihr Speichersystem so entwerfen, dass es solche Unwahrheiten übersteht.
quelle
Das Dateisystemjournal hat ursprünglich auf den Abschluss des Schreibvorgangs gewartet, bevor der Schreibvorgang für die Metadaten ausgeführt wurde, sofern kein Laufwerksschreibcache vorhanden war. Bei aktiviertem Laufwerksschreibcache ist diese Annahme ungültig und kann zu Datenverlust führen. So wurden Barrieren geschaffen. Mit Barrieren kann das Journal sicherstellen, dass das Schreiben in das Journal abgeschlossen ist, bevor in die Metadaten geschrieben wird, auch wenn auf der Festplatte Schreibcache verwendet wird. Auf der Festplattentreiberebene erzwingt die Barriere ein Leeren des Festplattencaches, bevor nachfolgende E / A-Vorgänge heruntergesendet werden, wenn das Laufwerk meldet, dass ein Schreibcache vorhanden und aktiviert ist. Andernfalls wird dies nicht benötigt, sodass die Barriere nur die Ausgabe der nachfolgenden E / A an den Antrieb verhindert, bis die vorherige E / A abgeschlossen ist. NCQ bedeutet nur, dass es möglicherweise warten muss, bis mehr als eine ausstehende Anforderung abgeschlossen ist, bevor weitere ausgegeben werden.
quelle