Werden Dateiänderungen unter Linux direkt auf der Festplatte gespeichert?


57

Früher dachte ich, dass Dateiänderungen direkt auf der Festplatte gespeichert werden, sobald ich die Datei schließe und mich entscheide, auf Speichern zu klicken / zu wählen. In einem kürzlich geführten Gespräch sagte mir jedoch ein Freund, dass dies normalerweise nicht der Fall ist. Das Betriebssystem (genauer gesagt, Linux-Systeme) speichert die Änderungen im Arbeitsspeicher und hat einen Daemon, der den Inhalt aus dem Arbeitsspeicher auf die Festplatte schreibt.

Er gab sogar das Beispiel externer Flash-Laufwerke an: Diese werden in das System eingebunden (in den Speicher kopiert), und manchmal kommt es zu Datenverlust, weil der Dämon den Inhalt noch nicht im Flash-Speicher gespeichert hat. Aus diesem Grund hängen wir Flash-Laufwerke aus.

Ich habe keine Kenntnisse über die Funktionsweise von Betriebssystemen und daher keine Ahnung, ob und unter welchen Umständen dies zutrifft. Meine Hauptfrage ist: Geschieht dies wie in Linux / Unix-Systemen (und möglicherweise anderen Betriebssystemen) beschrieben? Bedeutet dies beispielsweise, dass meine Änderungen höchstwahrscheinlich verloren gehen , wenn ich den Computer sofort nach dem Bearbeiten und Speichern einer Datei ausschalte ? Vielleicht hängt es vom Festplattentyp ab - traditionelle Festplatten im Vergleich zu Solid-State-Festplatten?

Die Frage bezieht sich speziell auf Dateisysteme, auf denen eine Festplatte zum Speichern der Informationen vorhanden ist, auch wenn Erläuterungen oder Vergleiche gut aufgenommen wurden.


8
FAO: Schließen Sie die Prüfer der Abstimmungswarteschlange. Dies ist keine Anforderung für Lernmaterialien. Siehe unix.meta.stackexchange.com/q/3892/22812
Anthony G - Gerechtigkeit für Monica

2
Der Cache ist für den Benutzer undurchsichtig, im besten Fall müssen Sie dies tun sync, und Anwendungen müssen flushsicherstellen, dass Caches zurückgeschrieben werden. Selbst ein erfolgreicher Vorgang syncgarantiert jedoch nicht, dass auf die physische Festplatte zurückgeschrieben wird, sondern nur, dass die Kernel-Caches auf die Festplatte zurückgeschrieben werden, was zu Latenzzeiten führen kann in der Treiber- oder Festplattenhardware (z. B. Cache auf dem Laufwerk, den Sie verlieren)
Crasic

1
Ich bin zwar nicht der Meinung, dass es sich um eine Anfrage für Lernmaterialien handelt, denke aber, dass die Frage in ihrer aktuellen Form etwas weit gefasst ist. Beschränken Sie den Umfang auf Linux-Distributionen (oder ein bestimmtes Betriebssystem) und möglicherweise auf bestimmte Speichertechnologien und Dateisysteme.
Jeff Schaller

3
Wie @AnthonyGeoghegan betonte, halte ich diese Frage nicht für eine Anfrage nach Lernmaterialien. Ich denke, es ist ziemlich spezifisch. Ich habe nicht nach einer langen und ausführlichen Erklärung oder einem Handbuch zu Linux-Dateisystemen gefragt. nur über eine kurze idee die ich ausräumen wollte.
JuanRocamonde

3
Es ist wahr, dass es, wie es ist, ein bisschen breit sein kann, @ JeffSchaller; Ich werde versuchen, es ein bisschen zu bearbeiten. Ehrlich gesagt, wenn die Site nicht für diese Art von Fragen gedacht ist, die sich direkt auf die Funktionsweise von Linux beziehen, wofür ist sie dann gedacht?
JuanRocamonde

Antworten:


70

Wenn ich den Computer sofort nach dem Bearbeiten und Speichern einer Datei ausschalte, gehen meine Änderungen höchstwahrscheinlich verloren.

Sie könnten sein. Ich würde nicht "höchstwahrscheinlich" sagen, aber die Wahrscheinlichkeit hängt von vielen Dingen ab.


Eine einfache Möglichkeit, die Leistung beim Schreiben von Dateien zu steigern, besteht darin, dass das Betriebssystem nur die Daten zwischenspeichert, der Anwendung mitteilt, durch die geschrieben wurde, und den Schreibvorgang später ausführt. Dies ist besonders nützlich, wenn gleichzeitig andere Datenträgeraktivitäten stattfinden: Das Betriebssystem kann Lesevorgänge priorisieren und die Schreibvorgänge später ausführen. Es kann auch das Erfordernis eines tatsächlichen Schreibens vollständig beseitigen, z. B. in dem Fall, in dem eine temporäre Datei schnell danach entfernt wird.

Das Caching-Problem ist ausgeprägter, wenn der Speicher langsam ist. Das Kopieren von Dateien von einer schnellen SSD auf einen langsamen USB-Stick erfordert wahrscheinlich viel Schreib-Caching, da der USB-Stick einfach nicht mithalten kann. Ihr cpBefehl kehrt jedoch schneller zurück, sodass Sie weiterarbeiten und möglicherweise sogar die gerade kopierten Dateien bearbeiten können.


Natürlich hat das Zwischenspeichern den Nachteil, dass einige Daten möglicherweise verloren gehen, bevor sie tatsächlich gespeichert werden. Der Benutzer ist verärgert, wenn sein Editor ihm mitteilt, dass der Schreibvorgang erfolgreich war, die Datei sich jedoch nicht auf der Festplatte befindet. Aus diesem Grund gibt es den fsync()Systemaufruf , der erst dann zurückkehren soll, wenn die Datei tatsächlich auf die Festplatte gelangt ist. Ihr Editor kann dies verwenden, um sicherzustellen, dass die Daten in Ordnung sind, bevor er dem Benutzer meldet, dass das Schreiben erfolgreich war.

Ich sagte, "soll", da das Laufwerk selbst dem Betriebssystem die gleichen Lügen erzählen und sagen könnte, dass der Schreibvorgang abgeschlossen ist, während die Datei wirklich nur in einem flüchtigen Schreibcache innerhalb des Laufwerks vorhanden ist. Je nach Laufwerk führt möglicherweise kein Weg daran vorbei.

Neben fsync()gibt es auch die sync()und syncfs()Anrufe System , das das System fragen , um sicherzustellen , dass alle systemweite schreibt oder alle Schreibvorgänge auf einem bestimmten Dateisystem der Festplatte getroffen haben. Mit dem Dienstprogramm synckönnen diese aufgerufen werden.

Dann gibt es noch das O_DIRECTFlag toopen() , das "versuchen soll, Cache-Effekte der Ein- und Ausgabe von und zu dieser Datei zu minimieren". Das Entfernen von Caching verringert die Leistung, sodass dies hauptsächlich von Anwendungen (Datenbanken) verwendet wird, die ihr eigenes Caching durchführen und die Steuerung übernehmen möchten. ( O_DIRECTNicht ohne Probleme, die Kommentare dazu in der Manpage sind etwas amüsant.)


Was bei einem Stromausfall passiert, hängt auch vom Dateisystem ab. Es sind nicht nur die Dateidaten, um die Sie sich Sorgen machen sollten, sondern auch die Metadaten des Dateisystems. Die Dateidaten auf der Festplatte zu haben, ist nicht sehr nützlich, wenn Sie sie nicht finden können. Wenn Sie eine Datei nur auf eine größere Größe erweitern, müssen Sie neue Datenblöcke zuweisen und diese müssen an einer bestimmten Stelle markiert werden.

Wie ein Dateisystem mit Metadatenänderungen umgeht und in welcher Reihenfolge Metadaten und Daten geschrieben werden, ist sehr unterschiedlich. Zum Beispiel mit ext4, wenn Sie den Mount - Flag gesetzt data=journal, dann alle Schreibvorgänge - auch Daten schreiben - durch die Zeitschrift gehen und ziemlich sicher sein sollte. Das bedeutet auch, dass sie zweimal geschrieben werden, sodass die Leistung abnimmt. Die Standardoptionen versuchen, die Schreibvorgänge so anzuordnen, dass sich die Daten auf dem Datenträger befinden, bevor die Metadaten aktualisiert werden. Andere Optionen oder andere Dateisysteme können besser oder schlechter sein. Ich werde nicht einmal eine umfassende Studie versuchen.


In der Praxis sollte die Datei auf einem schwach geladenen System innerhalb weniger Sekunden auf dem Datenträger landen. Wenn Sie es mit einem Wechselspeicher zu tun haben, müssen Sie das Dateisystem aushängen, bevor Sie den Datenträger ziehen, um sicherzustellen, dass die Daten tatsächlich auf das Laufwerk gesendet werden und keine weiteren Aktivitäten stattfinden. (Oder lassen Sie das von Ihrer GUI-Umgebung für Sie erledigen.)


Ihr some cases whereLink sagt anscheinend nichts über solche Fälle aus. Stattdessen heißt es, dass es Probleme gab, als die Apps nicht verwendet wurden fsync. Oder sollte ich in den Kommentaren nachsehen, auf welche Fälle Sie hinweisen?
Ruslan

1
Sie können syncden Kernel auch direkt als System-Shell-Befehl verwenden, um alle Caches zu leeren.
Crasic

3
In der Praxis wird die Datei auf einem leicht geladenen System innerhalb eines Augenblicks auf die Festplatte gelangen. Nur wenn Ihr Editor fsync()nach dem Schreiben der Datei verwendet. Die Linux-Standardeinstellung für /proc/sys/vm/dirty_writeback_centisecsist 500 (5 Sekunden), und PowerTop empfiehlt, sie auf 1500 (15 Sekunden) festzulegen. ( kernel.org/doc/Documentation/sysctl/vm.txt ). Auf einem System mit geringer Auslastung lässt der Kernel es nur so lange im Page-Cache sitzen write(), bis es auf die Festplatte geschrieben wird, um es für den Fall zu optimieren, dass es bald wieder gelöscht oder geändert wird.
Peter Cordes

2
+1 für da das Laufwerk selbst die gleichen Lügen an das Betriebssystem machen könnte . Ich verstehe, dass Laufwerke, die diese Art von Caching ausführen, auch über eine ausreichende Kapazität verfügen, damit ihre Caches auch bei einem katastrophalen Stromausfall gespeichert werden können. Dies ist nicht betriebssystemspezifisch. Windows verfügt über den Mechanismus "USB sicher entfernen", mit dem ein Cache geleert werden kann, bevor der Benutzer die Verbindung trennt.
Studog

1
@studog, ich wäre mir da nicht so sicher, besonders bei Consumer-Hardware. Aber es könnte nur Paranoia sein. Es wäre jedoch interessant zu testen.
Ilkkachu

14

Es gibt eine äußerst einfache Möglichkeit, um zu beweisen, dass es nicht wahr sein kann, dass Dateibearbeitungen immer direkt auf der Festplatte gespeichert werden, nämlich die Tatsache, dass es Dateisysteme gibt, die gar nicht von einer Festplatte gesichert sind . Wenn ein Dateisystem nicht hat eine Festplatte an erster Stelle, dann ist es unmöglich , die Änderungen auf der Festplatte schreiben, immer .

Einige Beispiele sind:

  • tmpfs, ein Dateisystem, das nur im RAM (genauer gesagt im Puffercache) vorhanden ist
  • ramfs, ein Dateisystem, das nur im RAM existiert
  • Beliebiges Netzwerkdateisystem (NFS, CIFS / SMB, AFS, AFP,…)
  • jedes virtuelles Dateisystem ( sysfs, procfs, devfs, shmfs, ...)

Aber selbst für festplattengesicherte Dateisysteme ist dies normalerweise nicht der Fall. Die Seite So beschädigen Sie eine SQLite-Datenbank enthält ein Kapitel mit dem Titel " Fehler beim Synchronisieren", in dem viele verschiedene Methoden beschrieben werden, mit denen Schreibvorgänge (in diesem Fall Festschreibungen an eine SQLite-Datenbank) möglicherweise nicht auf der Festplatte eingehen. In SQLite finden Sie auch ein Whitepaper, in dem die vielen Rahmen erläutert werden, durch die Sie springen müssen, um Atomic Commit in SQLite zu gewährleisten . (Beachten Sie, dass Atomic Write ein weitaus schwierigeres Problem ist als nur Write , aber natürlich ist das Schreiben auf die Festplatte ein Unterproblem des Atomic Writing, und Sie können auch in diesem Artikel viel über dieses Problem lernen.) In diesem Artikel gibt es eine Abschnitt über Dinge, die schief gehen können, der einen Unterabschnitt über enthältIncomplete Disk Flushes , die einige Beispiele für subtile Probleme aufzeigen , die möglicherweise verhindern, dass ein Schreibzugriff auf die Festplatte erfolgt (z. B. der Festplattencontroller, der meldet, dass er auf die Festplatte geschrieben wurde, obwohl dies nicht der Fall ist - ja, es gibt Festplattenhersteller, die dies tun. und es könnte sogar legal sein gemäß der ATA-Spezifikation, weil es in dieser Hinsicht mehrdeutig formuliert ist).


10
Der erste Teil dieser Antwort ist nur besser über das genaue Wort. Ich verstehe nicht, wie es einem anderen Zweck dient, als den Benutzer zu verspotten. Offensichtlich schreibt ein Netzwerkdateisystem nicht auf eine lokale Festplatte, aber die Frage bleibt bestehen.
Rohr

3
Wie @pipe hervorhob, entscheidet die Tatsache, dass es Dateisysteme gibt, die keine Daten auf einer Festplatte speichern, da sie keine Festplatte zum Speichern von Daten verwenden, nicht, ob diejenigen, die sie haben, sie direkt speichern können oder nicht. Die Antwort sieht jedoch interessant aus
JuanRocamonde

1
@pipe Ich bin mir ziemlich sicher, dass der Begriff "besserwissering" besserwissering ist! Das als deutsche Besserwisserin mit Autorität zu sagen.
Volker Siegel

11

Es ist richtig, dass die meisten Betriebssysteme, einschließlich Unix, Linux und Windows, einen Schreibcache verwenden, um Vorgänge zu beschleunigen. Das bedeutet, dass das Ausschalten eines Computers ohne Herunterfahren eine schlechte Idee ist und zu Datenverlust führen kann. Das Gleiche gilt, wenn Sie einen USB-Speicher entfernen, bevor er entfernt werden kann.

Die meisten Systeme bieten auch die Möglichkeit, Schreibvorgänge synchron zu machen. Dies bedeutet, dass die Daten auf der Festplatte gespeichert werden, bevor eine Anwendung eine Erfolgsbestätigung erhält, und zwar auf Kosten der Verlangsamung.

Kurz gesagt, es gibt einen Grund, warum Sie Ihren Computer ordnungsgemäß herunterfahren und den USB-Speicher für das Entfernen vorbereiten sollten.


Danke für Ihre Antwort! Gibt es eine Möglichkeit, das Schreiben einer bestimmten Datei auf die Festplatte unter Linux zu erzwingen? Vielleicht ein Link zu einem Tutorial oder einer Doku-Seite, auch eine SE-Frage wäre in Ordnung :)
JuanRocamonde

4
Sie können das Schreiben der Datei mit dem fsync()Syscall von einem Programm aus erzwingen . Verwenden Sie in einer Shell einfach den syncBefehl.
RalfFriedl

2
Es gibt (oder zumindest gab) einige Dateisysteme in einigen Linux-Versionen, syncdie als No-Op implementiert wurden. Und selbst bei Dateisystemen, die ordnungsgemäß implementiert sind sync, besteht immer noch das Problem, dass einige Festplatten-Firmwares FLUSH CACHEals "no-op" implementiert sind oder sofort von ihr zurückkehren und sie im Hintergrund ausführen.
Jörg W Mittag

9

1. Flash-basierter Speicher

Kommt es auf den Festplattentyp an (herkömmliche Festplatten im Vergleich zu Solid-State-Festplatten) oder auf eine andere Variable, die mir möglicherweise nicht bekannt ist? Kommt es (wenn ja) nur unter Linux vor oder ist dies in anderen Betriebssystemen vorhanden?

Wenn Sie die Wahl haben, sollten Sie nicht zulassen, dass der Flash-basierte Speicher ohne ein sauberes Herunterfahren an Leistung verliert.

Bei kostengünstigem Speicher wie SD-Karten können Sie damit rechnen, dass ganze Löschblöcke (mehrmals größer als 4 KB) verloren gehen und Daten verloren gehen, die zu verschiedenen Dateien oder wesentlichen Strukturen des Dateisystems gehören können.

Einige teure SSDs bieten möglicherweise bessere Garantien für Stromausfälle. Tests von Drittanbietern deuten jedoch darauf hin, dass viele teure SSDs dies nicht tun. Die Ebene, die Blöcke für den "Verschleißausgleich" neu abbildet, ist komplex und urheberrechtlich geschützt. Mögliche Fehler sind der Verlust aller Daten auf dem Laufwerk.

Unter Anwendung unseres Test-Frameworks testen wir 17 Standard-SSDs von sechs verschiedenen Anbietern mit insgesamt mehr als dreitausend Fehlerinjektionszyklen. Unsere experimentellen Ergebnisse zeigen, dass 14 der 17 getesteten SSD-Geräte ein überraschendes Fehlerverhalten bei Stromausfällen aufweisen, einschließlich Bit-Korruption, Shorn-Writes, unserialisierbaren Schreibvorgängen, Metadaten-Korruption und vollständigem Geräteausfall.

2017: https://dl.acm.org/citation.cfm?id=2992782&preflayout=flat

2013: https://www.usenix.org/system/files/conference/fast13/fast13-final80.pdf?wptouch_preview_theme=enabled

2. Festplatten drehen

Drehende Festplatten haben unterschiedliche Eigenschaften. Aus Gründen der Sicherheit und Einfachheit empfehle ich, davon auszugehen, dass sie die gleichen praktischen Unsicherheiten aufweisen wie flashbasierte Speicher.

Es sei denn, Sie haben konkrete Beweise, die Sie eindeutig nicht haben. Ich habe keine Vergleichszahlen für drehende Festplatten.

Eine Festplatte hinterlässt möglicherweise einen unvollständig geschriebenen Sektor mit einer schlechten Prüfsumme, was später zu einem netten Lesefehler führt. Allgemein gesagt wird dieser Ausfallmodus von Festplatten voll und ganz erwartet. native Linux-Dateisysteme sind darauf ausgelegt. Sie zielen darauf ab, den Vertrag fsync()angesichts dieser Art von Stromausfallfehler zu bewahren . (Wir möchten dies wirklich auf SSDs garantiert sehen).

Ich bin mir jedoch nicht sicher, ob Linux-Dateisysteme dies in allen Fällen erreichen oder ob dies überhaupt möglich ist.

Der nächste Start nach diesem Fehlertyp erfordert möglicherweise eine Reparatur des Dateisystems. Da dies Linux ist, ist es möglich, dass die Dateisystemreparatur einige Fragen stellt, die Sie nicht verstehen. Dort können Sie nur Y drücken und hoffen, dass es sich von selbst regelt.

2.1 Wenn Sie nicht wissen, was der Vertrag mit fsync () ist

Der Vertrag fsync () ist sowohl eine Quelle für gute als auch für schlechte Nachrichten. Sie müssen die guten Nachrichten zuerst verstehen.

Gute Nachricht: fsync()Ist gut dokumentiert als die richtige Art, Dateidaten zu schreiben, zB wenn Sie auf "Speichern" klicken. Und es ist allgemein bekannt, dass z. B. Texteditoren vorhandene Dateien atomar ersetzen müssen, indem sie verwenden rename(). Dies soll sicherstellen, dass Sie immer entweder die alte Datei behalten oder die neue Datei erhalten (die fsync()vor dem Umbenennen bearbeitet wurde). Sie möchten nicht mit einer halbgeschriebenen Version der neuen Datei belassen werden.

Schlechte Nachrichten: Seit vielen Jahren kann der Aufruf von fsync () auf dem beliebtesten Linux-Dateisystem dazu führen, dass das gesamte System einige zehn Sekunden lang hängen bleibt. Da Anwendungen nichts dagegen tun können, war es üblich, rename () ohne fsync () zu verwenden, was auf diesem Dateisystem relativ zuverlässig zu sein schien.

Daher gibt es Anwendungen, die fsync () nicht korrekt verwenden.

Die nächste Version dieses Dateisystems hat im Allgemeinen das Aufhängen von fsync () vermieden - zur gleichen Zeit, als es begann, sich auf die korrekte Verwendung von fsync () zu verlassen.

Das ist alles ziemlich schlimm. Das Verständnis dieser Geschichte wird wahrscheinlich nicht durch den abweisenden und beleidigenden Ton unterstützt, der von vielen der widersprüchlichen Kernel-Entwickler verwendet wurde.

Die aktuelle Auflösung ist das derzeit beliebteste Linux-Dateisystem Standardmäßig wird das rename () -Muster unterstützt, ohne dass fsync () erforderlich ist.implementiert "Bug-for-Bug-Kompatibilität" mit der vorherigen Version. Dies kann mit der Mount-Option deaktiviert werden noauto_da_alloc.

Dies ist kein vollständiger Schutz. Grundsätzlich wird die ausstehende E / A beim Umbenennen () gelöscht, es wird jedoch nicht gewartet, bis die E / A abgeschlossen ist, bevor die Umbenennung erfolgt. Dies ist jedoch viel besser als zB ein 60 Sekunden langes Gefahrenfenster! Siehe auch die Antwort auf Welche Dateisysteme benötigen fsync () zur Absturzsicherung, wenn eine vorhandene Datei durch rename () ersetzt wird?

Einige weniger beliebte Dateisysteme bieten keinen Schutz. XFS lehnt dies ab. Und UBIFS hat es auch nicht implementiert, anscheinend könnte es akzeptiert werden, erfordert aber viel Arbeit, um dies zu ermöglichen. Dieselbe Seite weist darauf hin, dass UBIFS mehrere andere "TODO" -Probleme in Bezug auf die Datenintegrität aufweist, einschließlich Stromausfall. UBIFS ist ein Dateisystem, das direkt im Flash-Speicher verwendet wird. Ich stelle mir vor, dass einige der Schwierigkeiten, die UBIFS mit Flash-Speichern anführt, für die SSD-Bugs relevant sein könnten.


5

Auf einem System mit geringer Auslastung lässt der Kernel neu geschriebene Dateidaten nach a etwa 30 Sekunden im Seiten-Cache write(), bevor sie auf die Festplatte geschrieben werden, um sie für den Fall zu optimieren, dass sie bald gelöscht oder erneut geändert werden.

Die dirty_expire_centisecsStandardeinstellung von Linux ist 3000 (30 Sekunden) und steuert, wie lange es dauert , bis neu geschriebene Daten "verfallen". (Siehe https://lwn.net/Articles/322823/ ).

Unter https://www.kernel.org/doc/Documentation/sysctl/vm.txt finden Sie weitere verwandte Tunables, und unter google finden Sie viele weitere. (zB google on dirty_writeback_centisecs).

Die Linux-Standardeinstellung für /proc/sys/vm/dirty_writeback_centisecsist 500 (5 Sekunden) , und PowerTop empfiehlt, sie auf 1500 (15 Sekunden) festzulegen, um den Stromverbrauch zu senken.


Ein verzögertes Zurückschreiben gibt dem Kernel auch Zeit, um zu sehen, wie groß eine Datei sein wird, bevor mit dem Schreiben auf die Festplatte begonnen wird. Dateisysteme mit verzögerter Zuweisung (wie XFS und wahrscheinlich andere heutzutage) wählen nicht einmal, wo auf der Festplatte die Daten einer neu geschriebenen Datei abgelegt werden sollen, bis dies erforderlich ist, unabhängig von der Zuweisung von Speicherplatz für den Inode. Auf diese Weise wird die Fragmentierung verringert, indem beispielsweise vermieden wird, dass der Anfang einer großen Datei in einer Lücke von 1 Megabyte zwischen anderen Dateien liegt.

Wenn viele Daten geschrieben werden, kann das Zurückschreiben auf die Festplatte durch einen Schwellenwert für die Anzahl der fehlerhaften (noch nicht mit der Festplatte synchronisierten) Daten im Pagecache ausgelöst werden.

Wenn Sie nicht viel anderes tun, leuchtet die Aktivitätsanzeige Ihrer Festplatte für 5 (oder 15) Sekunden nicht auf, nachdem Sie auf Speichern in einer kleinen Datei geklickt haben.


Wenn Ihr Editor fsync()nach dem Schreiben der Datei verwendet wird, schreibt der Kernel diese unverzüglich auf die Festplatte. (Und fsyncwird nicht zurückkehren, bis die Daten tatsächlich auf die Festplatte gesendet wurden).


Schreib - Caching innerhalb der Platte kann auch eine Sache sein, aber Platten normalerweise versuchen , ihren Schreib-Cache in dem permanenten Speicher so schnell wie möglich zu begehen, im Gegensatz zu Linux Seite-Cache - Algorithmen. Schreib-Cache-Speicher sind eher ein Speicherpuffer, um kleine Schreib-Bursts zu absorbieren, aber möglicherweise auch, um Schreibvorgänge zugunsten von Lesevorgängen zu verzögern und der Festplatten-Firmware Raum zu geben, um ein Suchmuster zu optimieren (z. B. zwei Schreib- oder Lesevorgänge in der Nähe ausführen, anstatt eines auszuführen) , dann weit weg suchen, dann zurück suchen.)

Auf einer sich drehenden (magnetischen) Platte können einige Suchverzögerungen von jeweils 7 bis 10 ms auftreten, bevor die Daten eines SATA-Schreibbefehls tatsächlich vor dem Ausschalten geschützt sind, wenn vor dem Schreiben Lese- / Schreibvorgänge anstehen. (Einige andere Antworten auf diese Frage gehen detaillierter auf Festplattenschreibcaches und Schreibbarrieren ein, die von Journalled FSes zur Vermeidung von Korruption verwendet werden können.)

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.