Sicherheit des Schreibcaches auf SATA-Laufwerken mit Barrieren


13

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?


Was ist die Anwendung in Ihrer Situation? Sie übersehen die Auswirkung oder den Einfluss eines RAID-Controllers und seines Caches auf das Setup. Auf welches Betriebssystem konzentrieren Sie sich ebenfalls? Welches Dateisystem erwägen Sie?
Ewwhite

Keine spezifische Anwendung. Ich benutze Software raid1 seit Jahren, beschäftige mich aber nie mit dem Problem, das Schreibcaches darstellen. Nachdem ich mich mit btrfs befasst habe, für das es noch kein zuverlässiges fsck gibt, frage ich mich auch, was ich tun kann, um Korruption zu verhindern, wenn ich es verwenden würde.
julianjm

1
Verwenden Sie stattdessen ZFS unter Linux und koppeln Sie es mit einem speziell entwickelten ZIL-Gerät. Ich benutze das DDRDrive für ZFS-Systeme :)
ewwhite

Verwenden Sie ZFS mit FUSE?
Julianjm

2
Achten Sie darauf, eine USV zu bekommen.
Michael Hampton

Antworten:


11

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 Dateisystem wurde als unzuverlässig eingestuft, da es diesen 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 unter Windows) hatten bereits ein Engineering, um genau diesen zu . 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.


Ich verstehe, dass es unter Hardware-RAID Sache des Controllers ist, das Caching durchzuführen (hoffentlich batteriegepuffert), und es ist ratsam, den tatsächlichen Festplatten-Cache zu deaktivieren. In meinem Fall (habe es nicht erwähnt) verwende ich Software-Raid. Es scheint, dass Schreibcache nicht empfohlen wird, da dies zu Datenverlust führen wird. Vielleicht nicht katastrophal (Beschädigung des Dateisystems), aber trotzdem Datenverlust. Ich verzichte vorerst auf die Migration von softraid1 + ext4 nach btrfs + raid1. :)
Julianjm

RAID hilft hier nicht weiter, da die Daten genauso einfach in beiden Laufwerken gespeichert werden können wie in einem Laufwerk.
Psusi

@psusi Es handelt sich nicht um eine 100% ige Minderung, bietet jedoch zusätzlichen Schutz. Es ist ein Zeitproblem. Einzelne RAID-Implementierungen unterscheiden sich.
sysadmin1138

Es ist überhaupt keine Milderung. Das sekundäre Laufwerk spielt keine Rolle, da im Falle eines Absturzes das primäre Laufwerk zur Wiederherstellung über das sekundäre zurückkopiert wird. Sie sind also zurück, ob der Schreibvorgang das (erste) Laufwerk erreicht hat oder nicht.
Psusi

3

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.


Ich denke, Barrieren schützen Sie vor Journalbeschädigung (wenn das Dateisystem dies anfordert), aber ich bin mir nicht sicher, ob die Daten in den Dateien tatsächlich vorhanden sind ... Wenn Sie nach jedem Schreibvorgang einen Cache-Flush ausgeben, wird der Schreibcache unbrauchbar, oder? ?
Julianjm

@julianjm, natürlich ... zwischengespeicherte Dateidaten gehen bei einem Absturz immer verloren, mit oder ohne NCQ- oder Laufwerksschreibcaches.
Psusi
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.