Es wird häufig empfohlen, den Schreibcache für einzelne Datenträger zu deaktivieren, die für Datenbanken verwendet werden, da andere Datenträger Schreibvorgänge bestätigen, die noch nicht auf der Datenträgeroberfläche ausgeführt wurden.
Dies impliziert, dass einige Datenträger Schreibvorgänge erst bestätigen, wenn sie es auf der Datenträgeroberfläche geschafft haben (Update: oder dass sie genau berichten, wenn sie aufgefordert werden, den Cache zu leeren. Wo finde ich solche Datenträger oder wo kann ich nach autorisierenden Informationen suchen? Wo finde ich solche Datenträger?
Ich richte einige DB-Server ein, die von der Verwendung des Schreibcaches wirklich profitieren würden, aber die Anwendung ist preiskritisch, und ich möchte die Kosten meines Festplattensubsystems für einen RAID-Cachecontroller lieber nicht verdoppeln, da ich nicht genügend Informationen dazu habe weiß, ob ich dem Cache in jedem Laufwerk vertrauen kann.
Antworten:
Als direkte Antwort auf Ihre Frage sind mir im Allgemeinen keine großen Marken von SATA-Laufwerken bekannt, bei denen auf dem Laufwerk selbst Fehler im Hinblick auf den ordnungsgemäßen Betrieb mit aktiviertem Schreibcache aufgetreten sind. Dies bedeutet, dass das Laufwerk nur aus Laufwerkssicht das tut, was es aus Caching-Sicht tun soll. Ich würde auch beachten , dass selbst dann , wenn die Schreib - Caching wird aktiviert, dass die Verzögerung von einer Plattenschreib auf den SATA - Kabeln an die rotierenden Medien physisch aktualisierten noch sehr kurz ist (~ 50 bis 100 ms typisch). Es ist nicht so, als ob die schmutzigen Cachedaten nur Sekunden auf einmal dort sitzen würden. Das Laufwerk versucht ständig, schmutzige Daten aus dem Cache zu holenauf das physische Medium, sobald es möglich ist. Dies ist nicht nur eine Frage der Datensicherheit, sondern auch der Bereitschaft, zukünftige Schreibvorgänge ohne Verzögerung zu akzeptieren (z. B. das Schreiben eines Beitrags).
Das Problem, das bei aktiviertem Caching auftritt, ist, dass die Schreibreihenfolge für das Laufwerk über das SATA-Kabel und die Schreibreihenfolge für das rotierende Medium nicht identisch sind. Dies kann niemals zu Problemen führen, es sei denn, Sie haben einen Stromausfall oder einen Systemabsturz, bevor alle Inhalte des Caches auf die Festplatte gelangen. Warum? ->
Das Problem, das hier auftreten kann, bezieht sich auf die Transaktionsstabilität des Dateisystems und / oder des Inhalts der Datenbankdatei in Bezug auf diese in der Reihenfolge verlorenen Schreibvorgänge. Tatsächlich können solche möglicherweise nicht ordnungsgemäßen Schreibvorgänge die Integrität der Transaktionslogik beschädigen, die andernfalls durch die Festplattenschreibvorgänge auf dem Datenträger in einer ganz bestimmten Reihenfolge garantiert worden wäre.
Die Entwickler des Dateisystems, der Datenbanken, RAID-Controller usw. sind sich dieses Phänomens im Zusammenhang mit dem Schreib-Caching bewusst (oder sollten es auf jeden Fall wissen). Das Schreib-Caching ist unter dem Gesichtspunkt der Leistung in den meisten E / A-Szenarien mit wahlfreiem Zugriff äußerst wünschenswert. Tatsächlich ist die Verfügbarkeit des Schreibcaches ein Schlüsselelement, um einen echten Nutzen für das fortschrittlichere Native Command Queuing ( NCQ) zu erzielen), die auf neueren SATA- und PATA-Implementierungen der letzten Generation unterstützt werden. Um zu bestimmten kritischen Zeiten Ordnung auf dem physischen Datenträger zu gewährleisten, kann das Dateisystem und / oder die Anwendung usw. speziell ein Leeren der Schreibcaches auf dem Datenträger anfordern. Nach Abschluss dieser Synchronisierungsanforderung befindet sich alles, was von (potenziellen) Dateipuffern, OS-Platten-Caching, physischem Platten-Caching usw. ansteht, gemäß dem Transaktionssystemdesign bei den richtigen kritischen Vorgängen auf dem Medium. Das heißt, dies geschieht korrekt, wenn die Programmierer die richtigen Aufrufe oben ausführen UND jedes Element dieser Kette von Software- und Hardwareschichten seinen Job korrekt ausgeführt hat. Dh: Es gibt diesbezüglich keine Fehler im Laufwerk, den RAID-Controllern, den Festplattentreibern, den OS-Caches, dem Dateisystem, der Datenbank-Engine usw. Dies ist eine Menge Software, die genau richtig funktionieren muss. Darüber hinaus ist die Überprüfung der Richtigkeit in dieser Hinsicht sehr schwierig, da in fast jeder Situation die Schreibreihenfolge keine Rolle spielt. Stromausfall- und Absturzszenarien sind schwierig zu konstruierende Tests. Am Ende hat "Deaktivieren des Schreib-Cachings" in einer oder mehreren der verschiedenen Ebenen und / oder Bedeutungen dieses Begriffs den Ruf, bestimmte Arten von Problemen zu "beheben". Das Abschalten des Schreib-Caching-Verhaltens des RAID-Controllers oder des Betriebssystem-Disk-Caches oder des Laufwerks usw. vermeidet in der Tat einen oder mehrere Fehler im System ..... und die Quelle solcher Überlieferungen. Stromausfall- und Crash-Szenarien sind schwierig zu konstruierende Tests. Am Ende hat "Deaktivieren des Schreib-Cachings" in einer oder mehreren der verschiedenen Ebenen und / oder Bedeutungen dieses Begriffs den Ruf, bestimmte Arten von Problemen zu "beheben". Das Abschalten des Schreib-Caching-Verhaltens des RAID-Controllers oder des Betriebssystem-Disk-Caches oder des Laufwerks usw. vermeidet in der Tat einen oder mehrere Fehler im System ..... und die Quelle solcher Überlieferungen. Stromausfall- und Crash-Szenarien sind schwierig zu konstruierende Tests. Am Ende hat "Deaktivieren des Schreib-Cachings" in einer oder mehreren der verschiedenen Ebenen und / oder Bedeutungen dieses Begriffs den Ruf, bestimmte Arten von Problemen zu "beheben". Das Abschalten des Schreib-Caching-Verhaltens des RAID-Controllers oder des Betriebssystem-Disk-Caches oder des Laufwerks usw. vermeidet in der Tat einen oder mehrere Fehler im System ..... und die Quelle solcher Überlieferungen.
Wie auch immer, kommen wir zum Kern der Frage zurück: Unter SATA ist die spezifische Behandlung aller Lese- / Schreibbefehle für die Festplatte und der Cache-Leerbefehle in den SATA-Spezifikationen genau definiert . Darüber hinaus sollten die Laufwerkhersteller eine detaillierte Dokumentation für jedes Laufwerksmodell oder jede Laufwerksfamilie haben, in der die Implementierung und Einhaltung dieser Regeln beschrieben wird, wie in diesem Beispiel für Seagate Barracuda- Laufwerke. Siehe insbesondere Einzelheiten zu den SATA- SET-FUNKTIONENDer Befehl zur Steuerung des Betriebsmodus des Laufwerks und insbesondere die Option 82h können verwendet werden, um das Zwischenspeichern von Festplatten auf Laufwerksebene zu deaktivieren, da die Standardeinstellung mit Sicherheit das Aktivieren des Schreibzwischenspeichers auf allen mir bekannten Laufwerken ist. Wenn Sie den Cache wirklich deaktivieren möchten, muss dieser Befehl zu Beginn jedes Zurücksetzens oder Hochfahrens des Laufwerks ausgeführt werden und wird normalerweise von den Festplattentreibern für Ihr Betriebssystem gesteuert. Möglicherweise können Sie Ihren Betriebssystemtreiber dazu ermutigen, diesen Modus über eine IOCTL- und / oder Registrierungseinstellung festzulegen. Dies ist jedoch sehr unterschiedlich.
quelle
Ich habe die Erfahrung gemacht, dass ein batteriegepufferter Caching-Festplattencontroller den Cache auf dem Laufwerk deaktiviert. Mir ist keine Möglichkeit bekannt, den Festplatten-Cache anderweitig zu deaktivieren. Selbst wenn Sie den Festplatten-Cache deaktivieren könnten, würde die Leistung erheblich leiden.
Für eine kostengünstige Option können Sie eine kostengünstige USV verwenden, die Ihrem System ein ordnungsgemäßes Herunterfahren signalisiert.
quelle
Ich verwende ein RAID-System mit einem Superkondensator anstelle einer Batterie, um den Cache zu verwalten. Batterien sind verbraucht, müssen überwacht, ausgetauscht werden und stellen in dieser Hinsicht eine potenzielle Fehlerquelle dar. Ein Kondensator wird beim Start aufgeladen, der Cache wird geleert, wenn die Stromversorgung der USV ausfällt, praktisch für immer besteht, keine Überwachung erforderlich ist usw. Sie sollten jedoch eine USV haben, es sei denn, Sie betreiben ein Unternehmen im Armutsbereich (heutzutage keine Seltenheit) und Software, die das System bei einem Ausfall sauber herunterfährt - ich gebe ihr normalerweise 5-15 Minuten Zeit (abhängig von der USV-Last und der verfügbaren Batterie), bevor sie herunterfährt, falls die Stromversorgung wiederhergestellt wird.
Während eines Gewitters können Sie (oder haben Sie vielleicht - Stromversorgungssysteme werden besser) sehen, dass die Lichter flackern, manchmal kurz bevor sie ausgehen. Dies ist ein Gerät, das als Wiedereinschaltgerät bezeichnet wird. Es handelt sich um einen Leistungsschalter, der bei Auslösung versucht, den geöffneten Schalter zu schließen, falls die Überlastung vorübergehend war, was die meisten sind. Wenn es nach etwa drei Versuchen nicht geschlossen bleibt, bleibt es geöffnet. Der eine arme Kerl muss im Regen rausgehen und sich darum kümmern. Tu ihm nicht zu leid, wenn du nur zweimal das machst, was du und ich tun, und zweimal, wenn es Überstunden sind, ist es gefährliche Arbeit.
quelle
Eines der Missverständnisse beim Zurückschreiben von Caches ist, dass sie nur bei Stromausfall Daten verlieren. Dies ist insbesondere bei sATA-Geräten nicht immer der Fall. Wenn auf einem sATA-Gerät ein Fehler aufgetreten ist (z. B. ein FW-Fehler in einem Eckgehäuse oder ein Controller-Fehler) und es von außen zurückgesetzt oder zurückgesetzt wird, kann nicht garantiert werden, dass die Daten im Write-Back-Cache nach dem Aufhängen noch verfügbar sind.
Dies kann zu Szenarien führen, in denen ein Gerät einen vorübergehenden Fehler aufweist, zurückgesetzt wird, ein Datenverlust beim Verlust eines verschmutzten Caches auftritt und dies über der Blockebene von Treibern stumm bleibt.
Schlimmer noch, das Deaktivieren des Laufwerk-Cache über OS-Tools geht auch beim Zurücksetzen des Geräts verloren. Selbst wenn der Cache eines Geräts zu Beginn des Tages deaktiviert ist, wird beim Zurücksetzen des Geräts das Write-Back-Caching erneut aktiviert. Bei einem erneuten Reset verliert das Gerät dann Daten.
SCSI- / SAS-Laufwerke und einige SATA-Laufwerke können den Status des Rückschreibprofils speichern, um sicherzustellen, dass bei allen Zurücksetzungen die Eigenschaft nicht verloren geht. In der Praxis wird dies jedoch nur selten verwendet.
RAID-Controller, die die Blockschicht in die oberen Schichten integrieren, können ein Zurücksetzen des Laufwerks feststellen und den Write-Back-Cache wieder deaktivieren. Standard-SATA- und SAS-Controller tun dies jedoch nicht.
Diese Einschränkung gilt auch für andere SET FEATURE-Parameter und ähnliche Parameter, die für Leistung und Zuverlässigkeit konfiguriert sind.
quelle
Wie Sie sagen, ein ordnungsgemäßer batteriegepufferter RAID-Controller ist teuer, aber Sie können Dell Perc5 / i-Controller bei eBay für 100 GBP (150 USD) finden, und besonders bei RAID5 wird Sie die Geschwindigkeit eines Controllers wie des Perc5 / i in Erstaunen versetzen. Ich habe mehrere Server mit Perc5 / is und sechs Festplatten-RAID5-Arrays und sie gehören zu den schnellsten Festplatten, die ich je gesehen habe. Insbesondere für Datenbankanwendungen verbessern schnelle Datenträger die Leistung erheblich.
Ich würde die Kugel beißen und einen RAID-Controller kaufen.
JR
quelle
Soweit ich weiß, ist fsync () eine Eigenschaft von batteriegepufferten RAID-Controllern, nicht von Laufwerken. Der RAID-Controller enthält eine Batterie, die den Schreibcache mit Strom versorgt, bis das Laufwerk wieder mit Strom versorgt und der Schreibvorgang sicher auf die Festplatte übertragen werden kann. Auf diese Weise kann der Controller sofort zum Betriebssystem zurückkehren, da eine gewisse Garantie dafür besteht, dass der Schreibvorgang auf die Festplatte geschrieben wird.
Wenn der Writeback-Cache des Laufwerks voll ist, werden Schreibvorgänge blockiert, bis der Cache auf das Laufwerk zurückgeschrieben wurde. Dies bedeutet, dass der Cache bei dauerhaften Schreibvorgängen im Allgemeinen nicht so effektiv ist.
Wie viele IOPS benötigt Ihre Anwendung? Sind Sie sicher, dass Sie durch den Schreibcache der Laufwerke eingeschränkt werden, oder dass ein kleiner (im Vergleich zum Arbeitsspeicher Ihres Servers) auf dem Laufwerk von Vorteil ist?
quelle