Bietet Linux Dateisystem-Journaling mit Btrfs an?
NTFS bietet ein sogenanntes Journal. Ich denke, es ist eine Aufzeichnung von Aktionen wie das Umbenennen / Verschieben / Löschen von Dateien, die von einer Anwendung ausgeführt werden. Kann ich ein ähnliches Journal erhalten oder mich bei Linux + BTRFS anmelden? Eine BTRFS-Partition, die nur von einer Linux-Installation verwendet wird.
Beispiel für ein NTFS-Journal in Google Images:
Antworten
Ich denke, Sie verstehen den Zweck des Tagebuchs falsch. Es ist kein Protokoll der von Anwendungen ausgeführten Aktionen und zeichnet nicht auf, welche Anwendung eine Änderung verursacht hat. Es ist nicht für Benutzer oder Administratoren gedacht. Es ist als internes Tool für das Dateisystem gedacht.
Aus Gründen der Leistung finden Festplattenschreibvorgänge nicht immer in derselben Reihenfolge statt, in der sie ausgegeben werden. Wenn das System durch einen Stromausfall oder einen Systemabsturz unterbrochen wird, bevor es Zeit hat, alles zu schreiben, befindet sich das Dateisystem möglicherweise in einem inkonsistenten Zustand. Wenn beispielsweise eine Datei von einem Verzeichnis in ein anderes verschoben wird, wurde möglicherweise bereits der Plattenblock mit dem Inhalt des alten Verzeichnisses geschrieben, aber der Plattenblock mit dem Inhalt des neuen Verzeichnisses wurde nicht geschrieben. Wenn das System gerade zu diesem Zeitpunkt angehalten wird, wird die Datei in keinem der Verzeichnisse mehr referenziert und geht effektiv verloren.
Es gibt verschiedene Techniken, um dieses Problem zu vermeiden (was normalerweise als Ausfallsicherheit beim Entwurf von Dateisystemen bezeichnet wird). Viele Dateisysteme, einschließlich NTFS, verwenden zu diesem Zweck ein Journal . Das Journal zeichnet Aktionen in der Reihenfolge auf, in der sie ausgeführt werden, und jede Aktion wird atomar hinzugefügt , sodass das Lesen des Journals immer einen konsistenten Status ergibt. Es gibt Dateisysteme, sogenannte logarithmisch strukturierte Dateisysteme , in denen im Journal alle Informationen zum Inhalt des Dateisystems aufgezeichnet werden. Bei anderen, einschließlich NTFS, werden alle Informationen möglicherweise außerhalb des Protokolls geschrieben: Das Protokoll enthält nur aktuelle Informationen, die möglicherweise noch nicht an der „normalen“ Stelle geschrieben wurden. Das Lesen einer Datei greift nicht auf das Protokoll zu, sondern direkt an der normalen Stelle auf die Daten. Das Protokoll wird nur beim Booten gelesen (genauer: beim Mounten des Dateisystems), um alle noch nicht ausgeführten Aktionen abzuschließen.
Im Allgemeinen enthält das Journal bei einem nicht protokollierten Journal-Dateisystem nur die neuesten Aktionen. Das Journal hat normalerweise nur begrenzten Speicherplatz und alte Einträge können überschrieben werden, sobald die entsprechenden Aktionen auf die Festplatte geschrieben wurden. Dies dauert normalerweise nicht länger als einige Sekunden. Möglicherweise können Sie alte Journaleinträge weiterhin anzeigen, wenn im Vergleich zur Journalgröße nicht viel Aktivität vorhanden ist, aber Sie können sich nicht darauf verlassen.
Einige Linux-Dateisysteme (z. B. ext4) verwenden ein Protokoll. Aber Btrfs ist keiner von ihnen. Btrfs erreicht Ausfallsicherheit durch Copy-on-Write . Es wird niemals ein verwendeter Plattenblock überschrieben. Um eine Aktualisierung vorzunehmen, erstellt es einen neuen Block mit den neuen Daten, erstellt dann einen neuen Block für jeden Ort, der den Speicherort des zu aktualisierenden Blocks enthält, und erstellt dann neue Blöcke für die Orte, die den Speicherort dieses Blocks enthalten. usw. Wenn es die Wurzel erreicht¹, stellt es sicher, dass alle untergeordneten Blöcke geschrieben sind, und aktualisiert dann die Wurzel. Auf diese Weise verweist die Wurzel immer auf immer gültige Blöcke.
Wenn Sie Dateivorgänge verfolgen möchten, ist ein Dateisystemjournal weder unter Linux noch unter Windows der richtige Weg. Die Hauptwerkzeuge dafür unter Linux sind LoggedFS und das Audit-Subsystem . Siehe Ist es möglich herauszufinden, welches Programm oder Skript eine bestimmte Datei erstellt hat? und Listen Sie die Dateien auf, auf die ein Programm zugreift .
¹ Das ist die Wurzel des Blockbaums, nicht die Wurzel des Verzeichnisbaums. Die Unterscheidung ist auf dieser Detailebene nicht wirklich offensichtlich.
Da btrfs ein COW-Dateisystem ist, sollte es immer in einem korrekten Zustand sein, es sei denn, es war fehlerhaft.
Journalling ist nur erforderlich, wenn Sie Daten überschreiben und das Dateisystem daher inkonsistent werden kann, wenn die Schreibreihenfolge der Idee folgt, ein Dateisystem schnell zu machen. Journalling ist eine Möglichkeit, Nicht-COW-Dateien schnell zu erstellen, ohne die Stabilität zu beeinträchtigen.