Ich kenne die Aufgaben eines BBWC (Battery-Backed Write Cache) und habe sie bereits bei guten USV-Systemen auf meinen Servern verwendet. Es gibt offensichtliche Fehler, für die es keinen Schutz bietet. Ich bin gespannt, ob es in der Praxis tatsächlich einen echten Nutzen bringt.
(NB Ich suche speziell nach Antworten von Leuten, die BBWC haben und Abstürze / Ausfälle hatten und ob die BBWC zur Genesung beigetragen hat oder nicht.)
Aktualisieren
Nach den Rückmeldungen hier bin ich zunehmend skeptisch, ob eine BBWC einen Mehrwert bringt.
Um Vertrauen in die Datenintegrität zu haben, MUSS das Dateisystem wissen, wann Daten nichtflüchtig gespeichert wurden (nicht unbedingt die Festplatte - ein Punkt, auf den ich noch zurückkommen werde). Es ist erwähnenswert, dass viele Festplatten lügen, wenn Daten auf die Festplatte übertragen wurden ( http://brad.livejournal.com/2116715.html ). Es scheint zwar vernünftig anzunehmen, dass das Deaktivieren des Festplattencaches die Festplatten ehrlicher macht, es gibt jedoch auch keine Garantie dafür, dass dies der Fall ist.
Aufgrund der typischerweise großen Puffer in einer BBWC kann es für eine Barriere erforderlich sein, wesentlich mehr Daten auf die Festplatte zu schreiben, was zu Verzögerungen beim Schreiben führt. Der allgemeine Ratschlag lautet, Barrieren zu deaktivieren, wenn ein nichtflüchtiger Rückschreibcache verwendet wird (und On-Volatile-Write-Back-Cache zu deaktivieren). Festplatten-Caching). Dies scheint jedoch die Integrität des Schreibvorgangs zu untergraben - nur weil mehr Daten in einem nichtflüchtigen Speicher aufbewahrt werden, bedeutet dies nicht, dass diese konsistenter sind. In der Tat scheint es ohne Abgrenzung zwischen logischen Transaktionen weniger Möglichkeiten zu geben, für Konsistenz zu sorgen als sonst.
Wenn die BBWC Barrieren an dem Punkt erkennt, an dem die Daten in ihren nichtflüchtigen Speicher gelangen (anstatt auf die Festplatte übertragen zu werden), scheint dies die Datenintegritätsanforderungen ohne Leistungseinbußen zu erfüllen - was bedeutet, dass Barrieren weiterhin aktiviert sein sollten. Da diese Geräte jedoch im Allgemeinen ein Verhalten aufweisen, das mit dem Löschen der Daten auf das physische Gerät (bei Barrieren erheblich langsamer) und dem weit verbreiteten Hinweis zum Deaktivieren von Barrieren vereinbar ist, können sie sich nicht auf diese Weise verhalten. WARUM NICHT?
Wenn die E / A im Betriebssystem als eine Reihe von Streams modelliert sind, besteht ein gewisser Spielraum, um die Blockierungswirkung einer Schreibsperre zu minimieren, wenn der Schreibcache vom Betriebssystem verwaltet wird - da auf dieser Ebene nur die logische Transaktion (ein einzelner Stream) ) muss begangen werden. Andererseits müsste eine BBWC, die nicht weiß, aus welchen Datenbits die Transaktion besteht, ihren gesamten Cache auf die Festplatte übertragen. Ob der Kernel / das Dateisystem dies tatsächlich in die Praxis umsetzt, würde viel mehr Aufwand erfordern, als ich derzeit investieren möchte.
Eine Kombination von Datenträgern, die über die festgestellten Vorgänge und den plötzlichen Stromausfall Aufschluss geben, führt zweifellos zu Korruption. Bei einem Journalling- oder Protokolldateisystem, das nach einem Ausfall keine vollständige Überprüfung durchführt, ist es unwahrscheinlich, dass die Korruption entdeckt wird, geschweige denn ein Versuch, es zu reparieren.
In Bezug auf die Ausfallarten treten meines Erachtens die meisten plötzlichen Stromausfälle aufgrund eines Stromausfalls auf (der durch eine USV und ein verwaltetes Herunterfahren leicht gemildert werden kann). Leute, die das falsche Kabel aus dem Rack ziehen, implizieren eine schlechte Hygiene des Rechenzentrums (Etikettierung und Kabelmanagement). Es gibt einige Arten von plötzlichen Stromausfällen, die nicht durch eine USV verhindert werden. Ein Ausfall des Netzteils oder des VRM einer BBWC mit Barrieren würde im Falle eines Ausfalls die Datenintegrität gewährleisten. Wie häufig sind solche Ereignisse jedoch? Sehr selten, gemessen an den fehlenden Antworten.
Das Verschieben der Fehlertoleranz im Stack ist mit Sicherheit deutlich teurer als bei einer BBWC. Die Implementierung eines Servers als Cluster bietet jedoch viele weitere Vorteile für die Leistung und Verfügbarkeit.
Eine alternative Möglichkeit, die Auswirkungen eines plötzlichen Stromausfalls abzuschwächen, besteht in der Implementierung eines SAN - AoE. Dies ist ein praktischer Ansatz (ich sehe den Punkt in iSCSI nicht wirklich), aber es entstehen wiederum höhere Kosten.