Was sind Metadaten und wie helfen sie beim „fsck“ -Prozess?

8

Wenn ich es richtig verstehe, wird "fsck" in UNIX-Systemen verwendet, um die interne Konsistenz der Festplatten nach einem Absturz zu überprüfen. Ich habe mich also gefragt, wie "Metadaten" verwendet werden, um sicherzustellen, dass alles im Dateisystem konsistent ist, zum Beispiel, welche Schritte der fsck-Prozess ausführen muss, um wiederherzustellen und zu reparieren.

-> bearbeiten: Es wäre auch hilfreich, wenn jemand klären könnte, worauf sich "synchrones Durchschreiben" auch in diesem Bild bezieht.

Kaitlyn Mcmordie
quelle
Dies scheint vielleicht eher themenbezogen bei U & L zu sein.

Antworten:

13

Metadaten sind Informationen zu Daten. Wenn Sie an eine Textdatei denken, entspricht die Buchstabenfolge dieser Textdatei den tatsächlichen Daten, die die Datei enthält. Die Datei hat jedoch einen Namen, einen Eigentümer, ein Erstellungsdatum, einen Speicherort auf dem Speichermedium usw. Alle diese Informationen sind Metadaten. Beachten Sie, dass Metadaten genauso behandelt werden können wie Daten. Zum Beispiel speichert Unix Dateimetadaten in Datendateien, die als Verzeichnisse (oder Ordner in diesem neuen Zeitalter des Rechnens) bezeichnet werden :-)

Das Unix-Dateisystem verwendet eine grundlegende Speichereinheit, die als Inodes bezeichnet wird . Ein einzelner Inode kann entweder tatsächliche Dateidaten, Verzeichnisinformationen (Metadaten) enthalten oder nicht verwendet werden (kostenlos). Beachten Sie, dass beim Erstellen einer neuen Datei der Status eines Inodes von "frei" in "zugewiesen" geändert, Daten in die neue Datei geschrieben und Metadaten in eine Verzeichnisdatei geschrieben werden. Es ist möglich, dass ein Computer mitten in dieser Art von Operation abstürzt. In diesem Fall kann das Dateisystem beschädigt werden .

Die Überprüfung des Dateisystems besteht darin, alle Inodes zu lesen und zu versuchen, so viele Korruptionsprobleme wie möglich zu beheben. Angenommen, ein Inode befindet sich nicht in der Liste der freien Inodes, aber es gibt keine Verzeichniseinträge, die besagen, dass dieser Inode Teil einer Datei in einem der Verzeichnisse ist, die dem Dateisystem bekannt sind. Dieser Inode kann wieder in die Liste der freien Inodes aufgenommen werden.

Synchrones Durchschreiben ist eine Möglichkeit, das Schreiben auf die Festplatte so durchzuführen, dass im Falle eines Absturzes das Dateisystem wiederhergestellt werden kann. Wenn Sie beispielsweise eine neue Datei erstellen, müssen Sie einen Inode zuweisen, den Inode mit seinem Metadatensatz erstellen und dann die Datei mit den Verzeichnisinformationen aktualisieren. Beim synchronen Durchschreiben werden diese nacheinander als separate Aktionen in dieser Reihenfolge ausgeführt. Wenn der Absturz auftritt, bevor das Verzeichnis geschrieben wird, kann der Inode wieder in die freie Liste aufgenommen werden, und die Dateierstellung wurde nicht durchgeführt.

Andere Arten von Dateisystemprüfungen sind ebenfalls möglich.

Jay Elston
quelle
6

Im Kontext von Unix- oder Linux-Dateisystemen sind "Metadaten" Informationen zu einer Datei: Benutzer-ID, wem sie gehört, Berechtigungen, Dateityp (speziell, regulär, Named Pipe usw.) und welche Festplattenblöcke die Datei verwendet. Das alles wird normalerweise in einer On-Disk-Struktur gespeichert, die als "Inode" bezeichnet wird. Eine der Informationen in einem Inode ist, wie viele "Links" zu der Datei vorhanden sind. Eine reguläre Datei hat normalerweise 1, aber ein Verzeichnis (meistens eine Datei mit der speziellen Dateitypmarkierung "Ich bin ein Verzeichnis") enthält mindestens 2 Links. Alles, was in einem Dateisystem sichtbar ist, hat einen Link aus dem Verzeichnis, in dem es angezeigt wird, aber da jedes Verzeichnis ein "." Name sowie sein gewöhnlicher Name, sie haben 2 Links.

fsckkann die "Inode-Blöcke" eines Dateisystems (die Plattenblöcke, die die Inode-Datenstrukturen enthalten) scannen, um Inodes zu finden, deren Linkanzahl größer als 0 ist. Eine Datei, die durch einen Inode mit einer Linkanzahl größer als 0 dargestellt wird, sollte in a erscheinen Verzeichnis irgendwo. Wenn dieser Inode nicht in einem Verzeichnis fsckangezeigt wird, wird die Datei in einem bekannten Verzeichnis abgelegt, normalerweise "verloren + gefunden" oben im Dateisystem. Beachten Sie, dass Unix / Linux-Dateisysteme in einem Inode normalerweise keine Metadaten darüber enthalten, zu welchem ​​Verzeichnis der Inode gehört, sondern nur Informationen in der Verzeichnisdatei darüber, welche Dateien das Verzeichnis enthält.

fsckkann andere Metadaten verwenden, z. B. welche Plattenblöcke die Daten einer Datei enthalten. fsckkann überprüfen, ob Plattenblöcke, von denen ein Inode sagt, dass sie zu einer Datei gehören, in der "nicht zugewiesenen Liste" der Plattenblöcke des Dateisystems angezeigt werden. Möglicherweise wird fsckgeprüft, ob zwei oder mehr Inodes dieselben Plattenblöcke enthalten, was auf eine Art Beschädigung durch Mehrfachzuweisung hinweisen würde.

Die Zuordnung von Plattenblöcken zu Dateien wird in den Inodes auf der Platte angezeigt. Die Verzeichnismitgliedschaftsbaumstruktur eines Dateisystems wird in den Verzeichnissen angezeigt. Die Inodes werden nicht angezeigt und sind keinen Verzeichnissen zugeordnet. fscknutzt diese Trennung, um Reparaturen durchzuführen. Dies unterscheidet sich erheblich von Systemen wie MS-DOS oder frühen Windows-Versionen, bei denen eine "Dateizuordnungstabelle" sowohl die Baumstruktur (Verzeichnismitgliedschaft) als auch die Zuweisung von Plattenblöcken enthielt. Wenn Sie die "FAT" beschädigen, müssen Sie die Plattenblöcke scannen, um zu sehen, was sie enthalten und wie sie möglicherweise zusammenpassen.

Bruce Ediger
quelle
5

Metadaten sind "Daten über Daten".

Im Fall des * nix-Dateisystems verweisen die von fsckeinem Header in jedem Datenblock verwendeten Metadaten auf einen Verzeichniseintrag oder den nächsten Datenblock und die entsprechenden Einträge im Verzeichnis. fsckdurchsucht die Blöcke und prüft, ob die Verzeichniseinträge übereinstimmen und ob die Weiterleitungszeiger auf den nächsten Block korrekt sind.

Dies ist zwischen den Dateisystemen sehr unterschiedlich. Welche Metadaten gespeichert werden und wo sie gespeichert werden, unterscheidet die verschiedenen * nix-Dateisysteme am meisten. Die moderneren führen auch eine Protokolldatei mit Änderungen an den Verzeichnisstrukturen.

James Anderson
quelle
Nur neugierig, aber wissen Sie, wie oder wo moderne Implementierungen die Metadaten auf der Festplatte speichern?
Kaitlyn Mcmordie
1
@ KaitlynMcmordie, hängt von der fs ab. Für ext [234] werden die meisten Metadaten im Inode der Datei gespeichert. Die Namen werden in den Verzeichnissen gespeichert, dh der Datenteil von Dateien, die das Verzeichnisflag und ein bestimmtes Format für ihre Hauptdaten haben. Dateidaten werden in Datenblöcken gespeichert, und Inodes werden in den Inode-Tabellen gespeichert, die beim Formatieren des fs zugewiesen werden. Andere Daten im Inode umfassen den Eigentümer, Berechtigungen, Zugriffszeitstempel und Zeiger auf die Datenblöcke.
Psusi