Frage BBWC: In der Theorie eine gute Idee, aber hat man jemals Ihre Daten gespeichert?


Ich bin vertraut mit dem, was ein BBWC (Battery-backed write cache) machen soll - und habe sie früher auf meinen Servern auch mit guten UPS genutzt. Es gibt offensichtlich Fehler, für die es keinen Schutz bietet. Ich bin gespannt, ob es tatsächlich einen wirklichen Nutzen in der Praxis bietet.

(NB Ich suche speziell nach Antworten von Leuten, die BBWC haben und Abstürze / Misserfolge hatten und ob die BBWC zur Genesung beigetragen hat oder nicht)

Aktualisieren

Nach dem Feedback bin ich zunehmend skeptisch, ob ein BBWC einen Mehrwert bringt.

Um ein gewisses Vertrauen in die Datenintegrität zu haben, MUSS das Dateisystem wissen, wann Daten in nichtflüchtigen Speicher abgelegt wurden (nicht unbedingt der Datenträger - ein Punkt, auf den ich zurückkommen werde). Es ist erwähnenswert, dass viele Festplatten herumliegen, wenn Daten auf die Festplatte übertragen wurden (http://brad.livejournal.com/2116715.html). Während es vernünftig erscheint, anzunehmen, dass das Deaktivieren des Festplattencaches die Festplatten ehrlicher machen könnte, gibt es immer noch keine Garantie, dass dies auch der Fall ist.

Aufgrund der typischerweise großen Puffer in einem BBWC kann eine Barriere dazu führen, dass wesentlich mehr Daten auf die Platte geschrieben werden müssen, was zu Verzögerungen bei Schreibvorgängen führt. Der allgemeine Rat lautet, Barrieren zu deaktivieren, wenn ein nichtflüchtiger Rückschreib-Cache verwendet wird. Festplatten-Caching). Dies scheint jedoch die Integrität der Schreiboperation zu untergraben - nur weil mehr Daten in einem nichtflüchtigen Speicher verwaltet werden, bedeutet dies nicht, dass es konsistenter ist. In der Tat scheint es, ohne eine Abgrenzung zwischen logischen Transaktionen zu geben, weniger Möglichkeiten zu geben, Konsistenz sicherzustellen als sonst.

Wenn die BBWC an dem Punkt, an dem die Daten in den nichtflüchtigen Speicher gelangen, Barrieren anerkennen (und nicht auf die Festplatte übertragen werden), scheint es die Datenintegritätsanforderung ohne Leistungseinbußen zu erfüllen - was bedeutet, dass Barrieren weiterhin aktiviert werden sollten. Da diese Geräte jedoch im Allgemeinen ein Verhalten aufweisen, das mit dem Ausspülen der Daten auf das physikalische Gerät (bei Barrieren signifikant langsamer) übereinstimmt, und dem weit verbreiteten Rat zum Sperren von Barrieren, können sie sich daher nicht auf diese Weise verhalten. WARUM NICHT?

Wenn die E / A im Betriebssystem als eine Reihe von Datenströmen modelliert wird, gibt es einen gewissen Spielraum, um den Blockierungseffekt einer Schreibbarriere zu minimieren, wenn Schreib-Caching vom Betriebssystem verwaltet wird - da auf dieser Ebene nur die logische Transaktion (ein einzelner Datenstrom ) muss begangen werden. Auf der anderen Seite müsste ein BBWC ohne Kenntnis davon, welche Datenbits die Transaktion ausmachen, seinen gesamten Cache auf die Platte schreiben. Ob die Kernel / Dateisysteme dies tatsächlich in der Praxis umsetzen, würde viel mehr Aufwand erfordern, als ich momentan investieren möchte.

Eine Kombination von Disketten, die über das, was verübt wurde, und plötzlicher Machtverlust berichten, führt zweifellos zu Korruption - und mit einem Journalling- oder Log-strukturierten Dateisystem, das nach einem Ausfall keinen vollen fsck macht, ist es unwahrscheinlich, dass die Korruption entdeckt wird, geschweige denn ein Versuch, es zu reparieren.

Was die Ausfallarten betrifft, so treten nach meiner Erfahrung die meisten plötzlichen Stromausfälle auf, weil die Netzspannung verloren geht (leicht durch eine USV gemildert und heruntergefahren werden kann). Menschen, die das falsche Kabel aus dem Rack herausziehen, haben eine schlechte Rechenzentrumshygiene zur Folge (Etikettierung und Kabelmanagement). Es gibt einige Arten von plötzlichen Stromausfallereignissen, die durch eine USV nicht verhindert werden - Ausfall in der PSU oder im VRM ein BBWC mit Barrieren würde die Datenintegrität im Falle eines Fehlers hier bereitstellen, aber wie üblich sind solche Ereignisse? Sehr selten durch die fehlenden Antworten hier zu urteilen.

Die Verschiebung der Fehlertoleranz im Stack ist zwar deutlich teurer als die eines BBWC - die Implementierung eines Servers als Cluster bietet jedoch viele weitere Vorteile für die Leistung und Verfügbarkeit.

Ein alternativer Weg, um die Auswirkungen von plötzlichen Stromausfällen zu mildern, wäre die Implementierung eines SAN. Ein AoE macht dies zu einem praktischen Vorschlag (ich sehe den Punkt in iSCSI nicht wirklich), aber es gibt wieder höhere Kosten.


24
2018-03-12 11:31


Ursprung


NetApp-Dateiserver haben seit vielen Jahren NVRAM-Schreib-Caches, und ich hatte eine gute Anzahl von denen verlieren Macht und nicht ihre Dateisysteme trash. Es ist schwer zu beweisen, dass etwas einen rettete, denn da man gerettet wurde, geschah das Unglück nicht; Welchen Beweis würdest du suchen? - MadHatter
Man sollte auch über die Fehlermodi eines batteriegepufferten Schreibcaches gegenüber einem Schreibcache ohne Batterie nachdenken. - Stefan Lasiewski
Keine Umfrage - ich habe viel Zeit damit verbracht, dies zu untersuchen - und kann viele Informationen darüber finden, was der BBWC tun soll - aber sehr wenig Informationen darüber, welche Vorteile in der Praxis erzielt wurden. Beachten Sie, dass die einzige Antwort, die ich unten hatte, wo jemand sagt, dass ein BBWC seine Daten gespeichert hat, ist, wo es im Falle eines Stromausfalls kein verwaltetes Herunterfahren gab. Bisher hat nichts meinen Verdacht widerlegt, dass: Während ein BBWC Ihre Daten unter Umständen speichern kann, können diese Umstände auf andere Weise vermeidbar sein. - symcbean
Nein, das ist ein Beweis dafür Wenn Sie kein BBWC haben, können Ihre Daten verloren gehen. Das beweist, dass - und ich vermute, dass die meisten Langstrecken-Systemadministratoren auf diesem System Geschichten haben, in denen flüchtige Daten vorkommen war in Stromausfällen verloren; Das tue ich ganz sicher - würde das nicht beweisen Mit BBWC können Sie Ihre Daten speichern, und darum bat das OP. - MadHatter
Einige weitere Analysen und Modellierungen deuten darauf hin, dass BBWC + keine Barrieren zu unerkannter Korruption mit einem anderen IO-Scheduler als NOOP führen können (ich könnte mich diesbezüglich irren, aber ich habe mich sehr bemüht, Beweise zu finden, die etwas anderes vorschlagen). Siehe auch symcbean.blogspot.co.uk/2014/03/ ... - symcbean


Antworten:


Sicher. Ich habe batteriegepufferte Cache (BBWC) und später Flash-Backed-Write-Cache (FBWC) schützen Flugdaten nach Abstürzen und plötzlichen Stromausfall.

Auf HP ProLiant Servern lautet die typische Nachricht:

POST Error: 1792-Drive Array Reports Valid Data Found in Array Accelerator

Was bedeutet, "Hey, da sind Daten im Schreib-Cache, die den Neustart / Stromausfall überstanden haben !! Ich werde das jetzt auf die Festplatte schreiben !!"

Ein interessanter Fall war meine Autopsie eines Systems, das während eines Tornado, die Array-Sequenz war:

POST Error: 1793-Drive Array - Array Accelerator Battery Depleted - Data Loss
POST Error: 1779-Drive Array Controller Detects Replacement Drives
POST Error: 1792-Drive Array Reports Valid Data Found in Array Accelerator

Der 1793 POST-Fehler ist einzigartig. - Während das System verwendet wurde, wurde die Stromversorgung unterbrochen, während sich Daten im Array Accelerator-Speicher befanden. Aufgrund der Tatsache, dass dies ein Tornado war, wurde die Macht innerhalb von vier Tagen nicht wiederhergestellt, so dass die Array-Batterien waren erschöpft und Daten innerhalb war verloren. Der Server hatte zwei RAID-Controller. Der andere Controller hatte eine FBWC-Einheit, die viel länger als eine Batterie dauert. Dieses Laufwerk wurde ordnungsgemäß wiederhergestellt. Auf dem Array, das von der leeren Batterie unterstützt wird, kam es zu einigen Datenfehlern.


Trotz der langen Akkulaufzeiten in der Anlage war es vier Tage lang ohne Strom und gefährliche Bedingungen unmöglich, die Server sicher herunterzufahren. enter image description here


33
2018-03-12 12:34



Sehr informativ, gute Arbeit, um diese Ausgaben so lange zu halten. - deed02392
Interessant! Ich frage mich, ob HP plant, den batteriefreien Cache, den sie in den P2000 legen, in die Smart-Array-Controller aufzunehmen - Gabriel Talavera
@GabrielTalavera Ja, HP verwendet seit 2010 einen Flash-Cache (Kondensatoren). Keine Batterien mehr. - ewwhite
Das gleiche hier mit Adaptec;) Keine Sorgen mehr und regelmäßigen Ersatz. - TomTom
Danke ewhite - genau die Art von Dingen, die ich suche. Eine Frage: Was passierte mit der USV? Löst Ihre USV das System nicht bei niedrigem Ladezustand? - symcbean


Ja, hatte diesen Fall.

Server "ohne UPS" in einem Rechenzentrum (mit dem Rechenzentrum mit einer USV). PDU-Fehler - System ist schwer abgestürzt. Kein Datenverlust.

Und das ist es im Grunde. Das Gute an einem BBWC ist, dass es in der Maschine ist. Habe eine UPS - glaub mir, manchmal macht jemand etwas blödes (wie das falsche Kabel ziehen). Eine USV ist extern. Oh, DAS Kabel;)


9
2018-03-12 11:59



Danke TomTom. So können Sie Ihre Daten an die nächste Barriere weiterleiten, anstatt sie auf die vorherige zurückzurollen (es sei denn, Sie verwenden keine journalling- oder log-strukturierten Dateisysteme). Dies ist einer der Schlüsselpunkte, die ich hier zu bewerten versuche. Es scheint eine geringfügig bessere Beibehaltung für eine Dateiserverrolle zu geben, hilft aber nicht bei der Integrität des Dateisystems oder der OLTP-Datenbank. - symcbean
Eigentlich würde es - OLTP ist so strukturiert, Server-Stromausfälle anmutig zu behandeln, solange die Protokoll-Schreibvorgänge akut geschrieben sind;) Und da log-IO-Geschwindigkeit begrenzt ist, geben "Fake-Writes" (gemeldet von Raid-Controller) Geschwindigkeit - aber auf Risiko Datenverlust, es sei denn, Sie haben einen nichtflüchtigen Cache. - TomTom
Ich nehme zur Kenntnis, dass RedHat der Meinung sind, dass Barrieren mit BBWC deaktiviert werden sollten - während das die Leistung verbessert, bietet es keinen Schutz im Falle eines plötzlichen Ausfalls wie Stromverlust - erk! access.redhat.com/site/documentation/de-DE/... - symcbean
@symcbean Sie sollten keinen plötzlichen Energieverlust in Ihrer Umgebung haben. Das ist eine der einfachsten Situationen, die es zu verhindern gilt. Warum sollte Ihr Server so laufen? Mist 100% der Zeit für ein relativ seltenes Auftreten? - ewwhite
Tatsächlich besteht der Grund, warum ein BBWC existiert, darin, das Problem eines plötzlichen Stromausfalls zu mildern. Daher ist es in Ordnung, keine Barrieren zu haben. - TomTom


Ich hatte 2 Fälle, in denen batteriegepufferter Cache in HW-RAID-Controllern komplett fehlschlug (in 2 separaten Unternehmen).

BBC verlässt sich auf die nicht überraschende Idee, dass die Batterie funktioniert. Der Haken ist, dass an einem bestimmten Punkt Batterie-Controller ausfällt und was verheerend ist, dass es in vielen HW RAID-Controllern fehlschlägt schweigend. Wir dachten, wir hätten einen Cache gegen Stromausfall geschützt, aber wir haben es nicht getan.

Bei einem Stromausfall war der Datenverlust des RAID-Arrays so groß, dass alle Festplatteninhalte nicht mehr wiederhergestellt werden konnten. Alles war verloren. Einer der Fälle beinhaltete eine Maschine, die ausschließlich zum Testen bestimmt war, aber immer noch.

Danach sagte ich "nie wieder", wechselte zu Software-basierten Disk Mirroring (Mdadm) in Linux + journal-basierte fs, die gute Widerstandsfähigkeit gegen Stromausfall (ext4) hat und nie zurückblickte. Zugegeben, ich habe es auf Servern verwendet, die keine extrem hohe IO-Nutzung hatten.


4
2018-03-13 12:24



Danke JD: Obwohl ich nicht genau nach dem gefragt habe, was ich gefragt habe, kann ich sehen, dass dies eine große Relevanz für die Annahmen hat, die Leute über BBWC machen. Es gibt viele Diskussionen über Hardware- und Software-RAID. Ich denke, ich sollte darauf hinweisen, dass Software-RAID das nicht tut ausschließen die Verwendung eines Caching-Controllers (flüchtig oder nicht). - symcbean
IME-, Dell- und HP-RAID-Karten beschweren sich (vorausgesetzt, Sie haben ein geeignetes Überwachungssystem) über ausgefallene Batterien in einem BBWC. - mfinni
Richtige Verfahren für BBWC Muss Dazu gehören z. B. 3er-Controller, die Sie warnen, wenn die Batterie längere Zeit nicht getestet wurde, und es ist einfach zu testen, ob die Batterie noch intakt ist (der einzige Nachteil ist, dass der Schreib-Cache während des Tests deaktiviert ist) ). - iustin


Dies scheint eine zweite Antwort auf die Frage notwendig zu machen ...

Ich hatte gerade einen eigenständigen VMware ESXi-Host verloren ein Laufwerk in einem RAID 5-Array. Das degraded Array wirkte sich auf die Leistung auf VM- und Anwendungsebene aus.

Smart Array P410i in Slot 0 (Embedded)    (sn: 5001438011138950)

   array A (SAS, Unused Space: 0  MB)

      logicaldrive 1 (1.6 TB, RAID 5, Recovering, 42% complete)

      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 300 GB, OK)
      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 300 GB, Rebuilding)
      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 300 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 300 GB, OK)
      physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 300 GB, OK)
      physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 300 GB, OK)
      physicaldrive 2I:1:7 (port 2I:box 1:bay 7, SAS, 300 GB, OK)
      physicaldrive 2I:1:8 (port 2I:box 1:bay 8, SAS, 300 GB, OK, spare)

Die IT-Person in dieser Firma war sich nicht bewusst, dass ein Laufwerk fehlschlug und den Server schwer zurückgesetztum alles besser zu machen?).

Der interessante Effekt, dies zu einem kompromittierten Array mit ausgelasteten virtuellen Maschinen zu machen, war:

Details zum Cache-Status: Der aktuelle Array-Controller hatte gültige Daten   in seinem Akku / Kondensator gesichert Schreibcache das letzte Mal gespeichert   wurde zurückgesetzt oder wurde eingeschaltet. Dies zeigt an, dass das System dies möglicherweise nicht tut   wurden anmutig heruntergefahren. Der Array-Controller hat automatisch   geschrieben oder versucht hat, diese Daten auf die Laufwerke zu schreiben. Diese   Die Nachricht wird bis zum nächsten Zurücksetzen oder angezeigt   Power-Cycle des Array-Controllers.

Obwohl das System abrupt gestoppt wurde, wurden die Daten während des Fluges vom BBWC geschützt. Die virtuellen Maschinen wurden alle ordnungsgemäß wiederhergestellt, und das System ist jetzt in einem guten Zustand.


4
2018-03-22 00:11





Neben dem "Speichern Ihrer Daten" eignen sie sich auch für andere Dinge. Sie können auch Schreibvorgänge (im Cache) zwischenspeichern, um die Leistung des E / A-Subsystems zu verbessern, indem die Schreib-Schreib-Warteschlange niedrig gehalten wird. Dies ist besonders wichtig für Server, bei denen die interaktive Leistung im Vordergrund steht - beispielsweise Citrix XenApp oder Windows Terminal Services.

Dies ist weniger wichtig für einen Webserver oder einen Dateiserver. Sie werden vielleicht nicht bemerken, oder sogar daran gewöhnt sein, ein wenig Verzögerung. Wenn Sie jedoch auf ein Symbol in einer Office-Anwendung klicken, erwarten Sie Reaktionsfähigkeit. Und auch Ihr CEO.


3
2018-03-12 12:55



"Ich bin vertraut mit dem, was ein BBWC (Battery-backed write cache) tun soll" - symcbean
Sie haben auch gesagt: "Ich bin gespannt, ob es in der Praxis tatsächlich einen wirklichen Nutzen bringt." Ich habe dir (und zukünftigen Lesern) eine konkrete gegeben. Aus Ihrer Frage ging gar nicht hervor, dass Sie von diesem Vorteil wussten. Und meine Antwort ist nicht falsch. - mfinni
Wie unterscheiden sich die Punkte, die Sie gemacht haben, von einem flüchtigen Schreibcache? - symcbean
Offensichtlich das war die Funktion, die Ihnen bekannt war. Aber das hast du noch nicht klargestellt. @mfinni ist nur hilfreich. - deed02392
Bei einigen Systemen können Sie keinen flüchtigen Schreibcache aktivieren. Aber nein, wenn Sie sich nicht um die Daten kümmern und Sie können einen flüchtigen Schreib-Cache verwenden, dann gehen Sie darauf. - mfinni