Was bedeutet das "Barrier" -Mount-Flag in Linux?


20

Das Handbuch für die Option "Barriere" lautet:

Barriere = 0 / Barriere = 1

Dies deaktiviert / aktiviert die Verwendung von Schreibbarrieren im jbd code.barrier = 0 deaktiviert, barrier = 1 aktiviert (Standard). Dies erfordert auch einen IO-Stack, der Barrieren unterstützen kann. Wenn jbd einen Fehler beim Schreiben einer Barriere erhält, werden die Barrieren mit einer Warnung wieder deaktiviert. Schreibbarrieren erzwingen eine ordnungsgemäße Anordnung der Journal-Commits auf der Festplatte, wodurch Schreibcaches für flüchtige Datenträger sicher und mit Leistungseinbußen verwendet werden können. Wenn Ihre Festplatten auf die eine oder andere Weise batteriegepuffert sind, kann das Deaktivieren von Barrieren die Leistung sicher verbessern.

Aber ich weiß nicht, was der Satz " Ordnungsgemäße Bestellung von Journal-Commits auf der Festplatte " bedeutet.

Angenommen, normale Reihenfolge - Journal 1, Daten 1; Journal 2, Daten 2.
Welches der folgenden Bestellergebnisse tritt auf, wenn ich einstelle barrier=0?

  1. Journal 2, Daten 2; Journal 1, Daten 1;
  2. Daten 1, Journal 1; Daten 2, Journal 2.


1
Wenn Sie sich mit Journaling-Dateisystemen befassen, werden Sie feststellen, dass es wichtig ist, zuerst das Journal zu schreiben und dann das Journal auszuführen, um die realen Daten auf die Festplatte zu schreiben. Die Barriere stellt sicher, dass das Journal geschrieben wird, bevor es ausgeführt wird. Ansonsten ist das Tagebuch unbrauchbar.
Strg-Alt-Delor

@richard Wenn Sie das "nobarrier" -Flag in einem BBWC-Festplatten-Raid verwenden, konnte die Festplatte nicht sicherstellen, dass das Journal geschrieben wurde, bevor die Daten ausgeführt wurden. Ist dies nicht wichtig?
Leafonsword

Ich weiß nicht genug, um zu wissen, ob es darauf ankommt. Ich würde denken, dass es im schlimmsten Fall so schlimm ist wie kein Tagebuch, aber was ich gelesen habe, scheint es nicht so schlimm zu sein, aber ich kann die Feinheiten nicht erkennen. Ich habe barrier=1und es läuft schnell genug für mich. Wenn du nicht wirklich schwere Sachen machst, würde ich es belassen. Sie haben RAM-Puffer, sodass die Daten nach Möglichkeit ohne Verzögerung für die Anwendungen ausgeschrieben werden. Und sehr wenig Verzögerung beim Schreiben auf die Festplatte. Wenn Sie wissen möchten, wie viel die RAM-Puffer beschleunigen, fügen Sie sync = 1 zu Ihrem Ausgangsverzeichnis hinzu und versuchen Sie, Ihr System ein oder zwei Tage lang zu verwenden.
Strg-Alt-Delor

Antworten:


15

Bei den meisten modernen Dateisystemen handelt es sich um Journaldateisysteme. Dies bedeutet, dass sie Änderungen, die noch nicht auf die Festplatte geschrieben wurden, in einer internen Datenstruktur, die als Journal bezeichnet wird, nachverfolgen. Im Falle eines Absturzes wird dieses Journal erneut abgespielt, um sicherzustellen, dass alle Schreibvorgänge erfolgreich durchgeführt wurden, um eine Beschädigung der Dateien zu verhindern.

Wenn die Daten tatsächlich auf die Festplatte geschrieben werden, ordnet der Schreibcache die Schreibvorgänge neu an, um den Durchsatz zu maximieren. Er muss jedoch sicherstellen, dass die eigentlichen Dateidaten vor den Metadaten auf die Festplatte geschrieben werden, um sicherzustellen, dass sie bei einem Absturz auftreten Tritt ein, sind die Metadaten mit den Daten nicht veraltet.

Das Problem ist, dass viele Festplatten eigene Caches haben, mit denen auch die Schreibvorgänge neu sortiert werden können. Einige Dateisysteme gehen davon aus, dass dies passieren wird, und zwingen die Festplatte, den Cache an bestimmten Punkten zu write barriersleeren, um dies zu verhindern. Dies wird z . B. in ext4 und Linux im Allgemeinen aufgerufen .

Bei modernen Datenträgern ist der Leistungsverlust hierfür jedoch vernachlässigbar und Sie sollten keine Schreibbarrieren deaktivieren, es sei denn, dies ist unbedingt erforderlich.


1

Aus diesem LWN-Artikel :

Der Dateisystemcode muss vor dem Schreiben des [Journaling] -Commit-Datensatzes absolut sicher sein, dass alle Transaktionsinformationen im Journal eingegangen sind. Es reicht nicht aus, die Schreibvorgänge in der richtigen Reihenfolge durchzuführen. Moderne Laufwerke verwalten große interne Caches und ordnen Vorgänge neu, um eine bessere Leistung zu erzielen. Daher muss das Dateisystem die Festplatte explizit anweisen, alle Journaldaten auf den Datenträger zu übertragen, bevor der Festschreibungsdatensatz geschrieben wird. Wenn der Festschreibungsdatensatz zuerst geschrieben wird, ist das Journal möglicherweise beschädigt. Das Block-E / A-Subsystem des Kernels stellt diese Fähigkeit durch die Verwendung von Barrieren zur Verfügung. Im Wesentlichen verbietet eine Barriere das Schreiben von Blöcken nach der Barriere, bis alle Blöcke, die vor der Barriere geschrieben wurden, an die Medien übergeben wurden. Durch die Verwendung von Barrieren,

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.