Gibt es eine Möglichkeit, die SSD vor Beschädigung durch Stromausfall zu schützen?

15

Wir haben eine Gruppe von Consumer-Terminals, auf denen Linux, ein lokaler Webserver und PostgreSQL installiert sind. Wir erhalten Erfahrungsberichte über Maschinen mit Problemen und nach einer Untersuchung scheint es, als ob ein Stromausfall aufgetreten ist und jetzt stimmt etwas mit der Festplatte nicht.

Ich war davon ausgegangen, dass das Problem nur darin besteht, dass die Datenbank beschädigt wird oder dass Dateien mit den letzten Änderungen verschlüsselt werden, aber es gibt auch andere seltsame Berichte.

  • Dateien mit den falschen Berechtigungen
  • Dateien, die zu Verzeichnissen geworden sind (z. B. index.phpist jetzt ein Verzeichnis)
  • Verzeichnisse, die zu Dateien geworden sind
  • Dateien mit verschlüsselten Daten

Es gibt Probleme mit der Datenbank, die beschädigt werden, aber das ist etwas, was ich erwarten könnte. Was mich mehr überrascht, sind die grundlegenderen Probleme mit dem Dateisystem - zum Beispiel Berechtigungen oder das Ändern einer Datei in ein Verzeichnis. Die Probleme treten auch in Dateien auf, die in letzter Zeit nicht geändert wurden (z. B. der Softwarecode und die Konfiguration).

Ist das "normal" für SSD-Korruption? Ursprünglich dachten wir, dass dies bei einigen billigen SSDs der Fall ist, aber wir haben dies bei einer bekannten Marke (Consumer Grade).

FWIW, wir machen kein autofsck beim unsauberen Booten (weiß nicht warum - ich bin neu). Wir haben USVs an einigen Orten installiert, aber manchmal funktioniert das nicht richtig usw. Dies sollte behoben werden, aber selbst dann können die Leute das Terminal unsauber herunterfahren usw. - es ist also nicht narrensicher. Das Dateisystem ist ext4.

Die Frage: Gibt es irgendetwas, was wir tun können, um das Problem auf Systemebene zu mindern?

Ich habe einige Artikel gefunden, die sich auf das Deaktivieren des Hardware-Caches oder das Aktivieren des Laufwerks im Synchronisierungsmodus beziehen, bin mir jedoch nicht sicher, ob dies in diesem Fall hilfreich sein könnte (Beschädigung von Metadaten und nicht zuletzt vorgenommene Änderungen). Ich habe auch eine Referenz zum Mounten des Dateisystems im schreibgeschützten Modus gelesen. Wir können das nicht tun, weil wir schreiben müssen, aber wir könnten eine schreibgeschützte Partition für den Code und die Konfiguration erstellen, wenn das helfen würde.

Dies ist ein Beispiel für ein Laufwerk sudo hdparm -i /dev/sda1:

Model=KINGSTON RBU-SMS151S364GG, FwRev=S9FM02.5, SerialNo=<deleted>
Config={ Fixed }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0
BuffType=unknown, BuffSize=unknown, MaxMultSect=16, MultSect=16
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=125045424
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes:  pio0 pio3 pio4
DMA modes:  mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6
AdvancedPM=yes: disabled (255) WriteCache=enabled
Drive conforms to: Unspecified:  ATA/ATAPI-3,4,5,6,7
Yehosef
quelle
5
Sie können bessere SSDs kaufen. Typische SSDs für Unternehmen haben Kondensatoren eingebaut, um das Gerät mit ausreichend Strom zu versorgen, damit die Daten während des Flugs bei einem Stromausfall vollständig geschrieben werden können. Das Geld, das Sie sparen, indem Sie sich nicht von einem vollständig verschlüsselten Dateisystem erholen müssen, rechtfertigt leicht die bescheidenen zusätzlichen Kosten.
Michael Hampton
1
Nun, niemand hat gesagt, Sie müssten alle ersetzen . Sie können jedoch die besseren SSDs für Ersatz- und / oder Neuinstallationen verwenden.
Michael Hampton
2
"Es ist nicht einfach, sie alle zu ersetzen" - das ist es auch. Beginnen Sie damit, dem Käufer die Kaufentscheidung mitzuteilen, die er aufgrund grober Fahrlässigkeit und Inkompetenz zu tragen hat.
TomTom
7
WriteCache=enabled. Das ist ein großes Problem. Der Schreibcache sollte niemals auf Festplatten mit einer Datenbank aktiviert werden. Einige Hersteller, beispielsweise HP, verhindern aus diesem Grund das Aktivieren des Schreibcaches für Festplatten.
Greg Askew
3
@Yehosef Beachten Sie, dass das Deaktivieren des Schreibcaches im Betriebssystem nicht die Tatsache behebt, dass Ihr Laufwerk Daten aufgrund eines Stromausfalls beschädigt. Aus Gründen einer höheren Geschwindigkeit und Haltbarkeit schreiben SSDs für Endverbraucher möglicherweise keine Daten in den nichtflüchtigen Speicher, wenn Sie in eine Datei schreiben. Leider verfügt das Laufwerk über keinen Hardwaremechanismus , um die Daten aus dem flüchtigen Cache in den nichtflüchtigen Speicher zu übertragen Stromausfall, das können nur Enterprise-SSDs. Ob Sie es glauben oder nicht, ich befand mich in einer ähnlichen Situation, in der jemand viele SSDs für Endverbraucher kaufte. Unser Lieferant, der diese Hardware zitierte, hatte keine Ahnung, dass dies passieren würde.
JRH

Antworten:

14

Bei plötzlichem Stromausfall haben MLC / TLC / QLC-SSDs zwei Fehlermodi :

  • Sie verlieren die In-Flight- und In-DRAM-Schreibvorgänge.
  • Sie können alle Daten im Ruhezustand beschädigen, die auf der unteren Seite der zu programmierenden NAND-Zelle gespeichert sind.

Die erste Fehlerbedingung ist offensichtlich: Ohne Stromschutz gehen alle Daten verloren, die sich nicht auf einem stabilen Speicher befinden (dh: NAND selbst), sondern nur auf einem flüchtigen Cache (DRAM). Dasselbe gilt für klassische mechanische Festplatten (und dies kann das Dateisystem zerstören, das fsyncs nicht ordnungsgemäß ausgibt).

Die zweite Fehlerbedingung ist eine MLC + SSD-Angelegenheit: Wenn das High-Page-Bit zum Speichern neuer Daten neu programmiert wird, kann ein unerwarteter Stromausfall auch das untere Bit (dh die zuvor festgeschriebenen Daten) zerstören / ändern .

Die einzig wahre und naheliegendste Lösung besteht darin, einen DRAM-Cache mit Stromausfallschutz (in der Regel mit Batterie / Supercaps) zu integrieren, wie dies High-End-RAID-Controller seit jeher tun. Dies erhöht jedoch die Antriebskosten / -preise. Consumer-Laufwerke haben normalerweise keine durch Stromausfall geschützten Caches. Vielmehr verwenden sie eine Reihe von wirtschaftlicheren Lösungen als:

  • teilweise geschützter Schreibcache (dh: Crucial M500 / M550 / M600 +);
  • NAND-Änderungsjournal (dh Samsung-Laufwerke, siehe SMART PoR-Attribut);
  • Spezielle SLC / Pseudo-SLC-NAND-Bereiche zum Absorbieren neuer Schreibvorgänge ohne vorherige gefährdete Daten (z. B. Sandisk, Samsung usw.).

Zurück zu Ihrer Frage: Ihre Kingstone-Laufwerke sind ultra-billig, verwenden einen nicht spezifizierten Controller und im Grunde genommen keine öffentlichen Spezifikationen. Es überrascht mich nicht, dass ein plötzlicher Stromausfall frühere Daten verfälscht hat. Leider kann Ihr Problem auch durch Deaktivieren des DRAM-Caches der Festplatte (mit dem von ihr befohlenen massiven Leistungsverlust) nicht behoben werden, da frühere Daten (dh Daten im Ruhezustand) durch unerwartete Stromausfälle beschädigt werden können und werden. Wenn sie auf dem alten Sandforce-Controller basieren, ist unter den "richtigen" Umständen sogar ein vollständiger Laufwerksblock zu erwarten.

Ich empfehle dringend, Ihre USV zu überprüfen und mittelfristig diese veralteten Laufwerke zu ersetzen.

Ein letzter Hinweis zu PostgreSQL und anderen Linux-Datenbanken: Sie werden den Cache der Festplatte nicht deaktivieren und sollten auch nicht dazu gezwungen werden. Sie geben stattdessen regelmäßig / erforderliche fsyncs / FUAs aus, um Schlüsseldaten für einen stabilen Speicher festzulegen. Dies ist die Art und Weise, wie Dinge getan werden sollten, es sei denn, es liegt ein sehr zwingender Grund vor (dh ein Antrieb, der sich mit ATA FLUSHES / FUAs befasst).

BEARBEITEN: Wenn möglich, sollten Sie eine Migration auf ein Prüfsummen-Dateisystem wie ZFS oder BTRFS in Betracht ziehen. Denken Sie zumindest an XFS, das über eine Journalprüfsumme und in letzter Zeit sogar über eine Metadatenprüfsumme verfügt. Wenn Sie gezwungen sind, EXT4 zu verwenden, sollten Sie erwägen, auto-fsck beim Start zu aktivieren (fsck.ext4 ist sehr gut bei der Reparatur von Beschädigungen).

Shodanshok
quelle
Hervorragende Antwort. Bitte sehen Sie meine verwandte Frage serverfault.com/questions/924054/… - wenn Sie diese Antwort dort kopieren / anpassen möchten, würde ich sie gerne verbessern / auswählen. Es klingt so, als würde das Deaktivieren des Schreibcaches nur für den ersten Fall helfen. Haben Sie weitere Details zum zweiten Fehlermodus? Steht es im Zusammenhang mit dem Ausgleich / der Müllabfuhr oder nur mit der Nähe?
Yehosef
1
@ Yehosef Schauen Sie hier im Abschnitt "Stromausfall" nach: anandtech.com/show/8528/…
shodanshok
1
Das Problem bei jeder Softwarelösung ist, dass viele SSDs direkt dem Betriebssystem überlassen bleiben, ob die Daten sicher gespeichert sind oder nicht, auch als Antwort auf fsync / FUA-Befehle. Für Enterprise-Laufwerke, die über einen ausreichenden Energiespeicher verfügen, um das Leeren des Caches bei Stromausfall abzuschließen, ist dies kein Problem.
BeowulfNode42
@ BeowulfNode42 ATA-Barrieren und FUAs müssen eingehalten werden . Während in den IDE / PATA-Tagen einige Laufwerks-Flushes vorgetäuscht waren, ist heutzutage ein solches "Lügner" -Laufwerk nicht SATA / SAS-kompatibel und sollte sofort weggeworfen werden.
Shodanshok
und dennoch werden diese nicht konformen Laufwerke verkauft, insbesondere im Consumer-Marktsegment.
BeowulfNode42
11

Ja. Erhalten Sie keine supergünstigen SSDs - alles, was sich außerhalb des Low-End-Verbrauchermarkts befindet, verfügt über Kondensatoren und bietet umfassenden Schutz vor Stromausfall. Amd kostet wirklich nicht viel mehr.

TomTom
quelle
Sie sind Kingston - also weiß ich nicht, ob diese als billig oder als mangelhaft gelten. Das größere Problem ist, dass die Einheiten (~ 6k) bereits im Feld sind und die meisten nicht ausfallen (vielleicht nur, weil sie keinen Stromausfall haben). Sie zu ersetzen ist also ein teurer letzter Ausweg, den wir noch nicht getroffen haben.
Yehosef
Laufwerksinfo zur Frage hinzugefügt.
Yehosef
5
Sie sind super billig. Sie sind preisorientierte Endbenutzerantriebe. Suchen Sie nach Laufwerken für kleine Unternehmen. LESEN SIE DIE SPEZIFIKATIONEN. Im Allgemeinen entspricht der Stromausfallschutz den Spezifikationen.
TomTom
1
Hinzufügen zu @TomTom - manchmal wird es nicht als Stromausfallschutz bezeichnet - und manchmal ist der Stromausfallschutz kein wirklicher Stromausfallschutz! Sie müssen für jeden Hersteller etwas lesen und herausfinden, wie sie es für die jeweilige Marke von Enterprise-SSDs bezeichnen. (Sehen Sie , für jeden mfr, für weiße Papiere haben sie geschrieben , wie man wirklich überlegen , ihre eigenen Enterprise - SSDs sind.) Und, habe ich festgestellt , dass, zumindest für einzelne Käufe, es tut Kosten ein bisschen mehr. Aber ich mache keine Masseneinkäufe und es könnte für Mengen von 100 oder mehr anders sein, nehme ich an.
Davidbak
3
Nach dem, was ich bisher gelesen habe, haben diese Hersteller die Namen für diese Funktion wie folgt: Kingston = "Pfail" wie bei der DC400-Serie; Samsung = "Power Loss Protection"; Intel = "Erweiterter Schutz vor Stromausfall"; Sandisk = "Datenverlustschutz mit Stromausfallschutz". Ich weiß nicht, wie es andere Hersteller nennen, aber es ist erforderlich, die technischen Daten gründlich zu lesen. Beachten Sie, dass dies auch mit Firmware erreicht werden kann, wenn der Hersteller dies zur Verfügung stellt. Wenn Sie wirklich> 6000 von ihnen haben, würde ich Kingston kontaktieren und die Situation erklären und anbieten, für die Firmware pro Laufwerk zu bezahlen.
BeowulfNode42
7

Zunächst müssen die Ziele für die Wiederherstellungszeit und den Wiederherstellungspunkt definiert werden. Wie lange müssen Sie eines dieser Terminals wiederherstellen, und welcher Datenzeitpunkt ist akzeptabel? Vielleicht müssen Sie in ein paar Stunden in der Lage sein, das Backup der letzten Woche wiederherzustellen.

Alle möglichen seltsamen Dinge können mit Dateien passieren, wenn Schreibvorgänge im Flug verloren gehen. Die Priorität des Dateisystems ist die Wahrung der eigenen Metadatenkonsistenz. Möglicherweise bieten sie nicht die gleichen Garantien für Ihre Daten. Mit anderen Worten, fsckes kann nicht garantiert werden, dass Ihre Daten wiederhergestellt werden. Ihre Aufgabe ist es, Ihnen ein Dateisystem zur Verfügung zu stellen, das eingehängt werden kann.

Macht also. Installieren, konfigurieren und testen Sie, ob die USV das System ordnungsgemäß herunterfährt. Dadurch können Dateisystem-Caches und die Laufwerke selbst schreiben.

Und die Haltbarkeit der Schreibvorgänge auf den Datenträgern. Lesen Sie das Kapitel zur Zuverlässigkeit von PostgreSQL . Verwenden Sie das dort diskchecker.plverlinkte Skript, um einen Crash-Test durchzuführen und festzustellen, ob die SSDs lügen, wenn Schreibvorgänge in den nichtflüchtigen Speicher gelangen. Wenn es zu einem Verlust kommt, sollten Sie diese durch SSDs ersetzen, die bekanntermaßen einen Stromausfallschutz bieten.

Bearbeiten: Sie haben Details hinzugefügt, für die der Schreibcache aktiviert wurde. Sie können versuchen, Folgendes zu deaktivieren: hdparm -W0 /dev/sdaoder den entsprechenden Befehl für ein Hardware-Array. Referenz: RHEL-Speicheradministrationshandbuch .

Dateisystem-Schreibbarrieren erzwingen eine Reihenfolge von Journal-Commits. Es ist keine Garantie dafür, dass die Daten intakt sind, aber es ist sicherer für das Dateisystem mit einem flüchtigen Cache. Obwohl dies die Standardeinstellung ist, wird durch Hinzufügen der Mount-Option "Barriere" deutlich, dass Sie Wert auf Konsistenz gegenüber Leistung legen.

Endlich die letzte Verteidigungslinie. Führen Sie einen Wiederherstellungstest durch, um sicherzustellen, dass Sie Ihre Anwendung und Datenbank zum gewünschten Zeitpunkt wiederherstellen können. Dies ist nützlich für alle Arten von Datenverlust, nicht nur für Stromausfälle.

John Mahowald
quelle
Dieses Disk Write Caching ist die wahrscheinliche Antwort. Aus irgendeinem unbekannten Grund scheint Postgres den Schreibcache nicht zu deaktivieren, was eine schreckliche Standardeinstellung ist.
Greg Askew
1
Zur Verdeutlichung: Wir führen tägliche Backups durch und synchronisieren die Daten mit der Cloud, sodass das Problem weniger mit dem Verlust von Postgres-Daten zusammenhängt (dies ist ein Problem, aber ich denke, es gibt PG-Konfigurationsoptionen, die Abhilfe schaffen können.). Das besorgniserregendere Problem ist, dass die Maschine unbrauchbar wird und mit den verrückten Metadaten in Verbindung steht. FWIW, normalerweise bootet die Maschine und wir können eine Verbindung herstellen, aber die Anwendung schlägt fehl, weil ihre Dateien verschlüsselt wurden.
Yehosef
1
"Es sieht so aus, als ob Postgres das Disk Write Caching nicht deaktiviert, was eine schreckliche Standardeinstellung ist." @GregAskew Bitte demonstrieren Sie, wie der DRAM-Cache auf einer Coimsumer-SSD deaktiviert werden kann. Es kann nicht deaktiviert werden.
TomTom
4
Wegen der Art und Weise, wie SSD funktioniert. Ohne Schreibcache würden Sie die SSD viel schneller ausbrennen. SSD-Zellen sind groß und müssen immer vollständig beschrieben werden. Die Möglichkeit, mehrere kleine Schreibvorgänge zu kombinieren, ist daher für die Lebensdauer der SSD von entscheidender Bedeutung. Deshalb können Sie es NICHT auf Consumer-Laufwerken deaktivieren (die Laufwerke lügen oder lassen es nicht zu) UND nicht auf Enterprise-Laufwerken (die Laufwerke können grundsätzlich lügen, da sie nicht flüchtig sind - sie haben genug Energie, um das Dram zu schreiben raus, um zu blinken.
TomTom
3
@Yehosef Nein, nicht einmal zuverlässig Postgres hat die Fähigkeit zur Wiederherstellung, wenn Daten an das Laufwerk gesendet werden. Das Laufwerk sagt "Gut, Sie haben Ihre Daten erhalten", und dann hat das Laufwerk nie die Möglichkeit, diese Daten von seinem internen temporären flüchtigen Datenträger zu schreiben Cache zum eigentlichen nichtflüchtigen Speicher. Es ist wichtig, nur Speicher in Unternehmensqualität zu verwenden, bei denen der interne Cache des Laufwerks oder der RAID-Einheit durch eine Batterie oder einen Kondensator gesichert ist. Postgres verfügt über Funktionen (WAL-Datei usw.), die Sie vor dem Verlust von Daten schützen, die noch nicht an das Laufwerk gesendet wurden. Postgres kann jedoch keine Daten wiederherstellen, die im Laufwerk verloren gegangen sind .
Basil Bourque