In erster Linie, und mir ist klar, dass es nicht einer der Begriffe aus Ihrer Frage war, müssen Sie Metadaten verstehen . Kurz gesagt, und gestohlen aus Wikipedia, sind Metadaten Daten über Daten. Das heißt, Metadaten enthalten Informationen zu einem Datenelement. Wenn ich zum Beispiel ein Auto besitze, habe ich eine Reihe von Informationen über das Auto, die aber nicht Teil des Autos selbst sind. Informationen wie Registrierungsnummer, Marke, Modell, Herstellungsjahr, Versicherungsinformationen usw. Alle diese Informationen werden zusammen als Metadaten bezeichnet. In Linux- und UNIX-Dateisystemen sind Metadaten auf mehreren Organisationsebenen vorhanden, wie Sie sehen werden.
Der Superblock besteht im Wesentlichen aus Dateisystem-Metadaten und definiert den Dateisystemtyp, die Größe, den Status und Informationen zu anderen Metadatenstrukturen (Metadaten von Metadaten). Der Superblock ist für das Dateisystem sehr kritisch und wird daher in mehreren redundanten Kopien für jedes Dateisystem gespeichert. Der Superblock ist eine sehr "übergeordnete" Metadatenstruktur für das Dateisystem. Wenn beispielsweise der Superblock einer Partition, / var, beschädigt wird, kann das betreffende Dateisystem (/ var) vom Betriebssystem nicht bereitgestellt werden. In diesem Fall müssen Sie in der Regel ausführenfsck
Dadurch wird automatisch eine alternative Sicherungskopie des Superblocks ausgewählt und versucht, das Dateisystem wiederherzustellen. Die Sicherungskopien selbst werden in Blockgruppen gespeichert, die über das Dateisystem verteilt sind. Die ersten Kopien werden mit einem Abstand von 1 Block vom Partitionsanfang gespeichert. Dies ist wichtig für den Fall, dass eine manuelle Wiederherstellung erforderlich ist. Sie können Informationen zu Superblock-Sicherungen mit dem Befehl anzeigen, dumpe2fs /dev/foo | grep -i superblock
der im Fall eines manuellen Wiederherstellungsversuchs hilfreich ist. Nehmen wir an, der Befehl dumpe2fs gibt die Zeile aus Backup superblock at 163840, Group descriptors at 163841-163841
. Wir können diese Informationen benutzen, und zusätzliches Wissen über die Dateisystemstruktur, diese Super Sicherung zu verwenden , um zu versuchen: /sbin/fsck.ext3 -b 163840 -B 1024 /dev/foo
. Bitte beachten Sie, dass ich für dieses Beispiel eine Blockgröße von 1024 Bytes angenommen habe.
Ein Inode existiert in oder auf einem Dateisystem und repräsentiert Metadaten zu einer Datei. Aus Gründen der Übersichtlichkeit sind alle Objekte in einem Linux- oder UNIX-System Dateien. tatsächliche Dateien, Verzeichnisse, Geräte usw. Bitte beachten Sie, dass es unter den in einem Inode enthaltenen Metadaten keinen Dateinamen gibt, wie es die Menschen denken. Dies wird später von Bedeutung sein. Ein Inode enthält im Wesentlichen Informationen zum Besitz (Benutzer, Gruppe), zum Zugriffsmodus (Lesen, Schreiben, Ausführen von Berechtigungen) und zum Dateityp.
Ein Dentry ist der Klebstoff, der Inodes und Dateien zusammenhält, indem Inode-Nummern mit Dateinamen verknüpft werden . Einträge spielen auch eine Rolle bei der Zwischenspeicherung von Verzeichnissen, die im Idealfall die am häufigsten verwendeten Dateien für einen schnelleren Zugriff bereithalten. Das Durchlaufen von Dateisystemen ist ein weiterer Aspekt des Eintrags, da eine Beziehung zwischen Verzeichnissen und ihren Dateien aufrechterhalten wird.
Eine Datei ist nicht nur das, woran Menschen normalerweise denken, wenn sie mit dem Wort präsentiert wird, sondern sie ist auch nur ein Block von logisch zusammenhängenden willkürlichen Daten. Vergleichsweise langweilig, wenn man bedenkt, wie viel Arbeit (oben) geleistet wurde, um den Überblick zu behalten.
Ich bin mir voll und ganz bewusst, dass einige Sätze keine vollständige Erklärung für eines dieser Konzepte liefern. Bitte fordern Sie bei Bedarf weitere Details an.
Datei
Eine Datei bedeutet nur eine Reihe von Bytes, die in einer bestimmten Reihenfolge angeordnet sind. Es ist das, was normale Leute den Inhalt einer Datei nennen. Wenn Linux eine Datei öffnet, erstellt es auch ein Dateiobjekt, das Daten darüber enthält, wo die Datei gespeichert ist und welche Prozesse sie verwenden. Das Dateiobjekt (aber nicht die Dateidaten selbst) wird beim Schließen der Datei verworfen.
Inode
Ein Inode (kurz für "Index Node") ist eine Reihe von Attributen zu einer Datei, die Linux speichert. Für jede Datei gibt es einen Inode (bei einigen Dateisystemen muss Linux jedoch eigene Inodes erstellen, da die Informationen über das Dateisystem verteilt sind). Die Inode speichert Informationen wie, wem die Datei gehört, wie groß die Datei ist und wer die Datei öffnen darf. Jeder Inode enthält außerdem eine für die Dateisystempartition eindeutige Nummer. Es ist wie eine Seriennummer für die Datei, die von dieser Inode beschrieben wird.
Dentry
Ein Eintrag (kurz für "Verzeichniseintrag") ist das, was der Linux-Kernel verwendet, um die Hierarchie der Dateien in Verzeichnissen zu verfolgen. Jeder Eintrag ordnet eine Inode-Nummer einem Dateinamen und einem übergeordneten Verzeichnis zu.
Superblock
Der Superblock ist eine eindeutige Datenstruktur in einem Dateisystem (obwohl zum Schutz vor Beschädigung mehrere Kopien vorhanden sind). Der Superblock enthält Metadaten zum Dateisystem, z. B. Inode ist das Verzeichnis der obersten Ebene und der Typ des verwendeten Dateisystems.
quelle
Superblock , der Indexknoten (oder inode ), der Verzeichniseintrag (oder dentry ) und schließlich die Datei - Objekt sind ein Teil virtuelles Dateisystem (VFS) oder ein virtuelles Dateisystem - Schalter . Der Zweck eines VFS besteht darin, Clientanwendungen den einheitlichen Zugriff auf verschiedene Arten konkreter Dateisysteme zu ermöglichen.
Beziehungen der Hauptobjekte im VFS
Ein Inode ist eine Datenstruktur in einem Unix / Linux-Dateisystem. Ein Inode speichert Metadaten zu einer regulären Datei, einem Verzeichnis oder einem anderen Dateisystemobjekt. Inode fungiert als Schnittstelle zwischen Dateien und Daten. Ein Inode kann auf eine Datei oder ein Verzeichnis oder eine symbolische Verknüpfung zu einem anderen Objekt verweisen. Es enthält eine eindeutige Nummer (die i-Nummer), die Attribute der Datei, einschließlich Name, Datum, Größe und Lese- / Schreibberechtigungen sowie einen Zeiger auf den Speicherort der Datei. Es ist das Gegenstück zur FAT-Tabelle in der DOS / Windows-Welt.
Programme, Dienste, Texte, Bilder usw. sind alles Dateien . Eingabe- und Ausgabegeräte und im Allgemeinen alle Geräte werden je nach System als Dateien betrachtet.
Der Superblock ist der Container für Metadaten auf hoher Ebene über ein Dateisystem. Der Superblock ist eine Struktur, die auf der Festplatte (tatsächlich mehrere Stellen auf der Festplatte aus Redundanzgründen) und auch im Speicher vorhanden ist. Es bietet die Grundlage für den Umgang mit dem Dateisystem auf der Festplatte, da es die Verwaltungsparameter des Dateisystems definiert (z. B. Gesamtzahl der Blöcke, freie Blöcke, Stammindexknoten).
Dentry ist die Schnittstelle zwischen Dateien und Inodes. Einträge spielen auch eine Rolle bei der Zwischenspeicherung von Verzeichnissen, die im Idealfall die am häufigsten verwendeten Dateien für einen schnelleren Zugriff bereithalten.
Quelle
quelle
Der Einfachheit halber sind Dentry und Inode dasselbe, eine Abstraktion von Datei oder Verzeichnis. Der Unterschied zwischen Dentry und Inode besteht darin, dass Dentry zur Erleichterung verzeichnisspezifischer Vorgänge verwendet wird. Inode ist lediglich eine Sammlung von Metadaten zu Dateien oder Verzeichnissen. Superblock ist die Abstraktion des Dateisystems.
struct file
wird im Linux-Kernel fälschlicherweise als "viele andere" bezeichnet (zBstruct address_space
) und ist keine Abstraktion einer echten "Datei" (zB / etc / passwd). Es steht für eine geöffnete "Datei" oder ein geöffnetes Verzeichnis.struct file
wird vonsys_open
im Kernel erstellt, daher kann ein Prozess vielestruct file
s für dieselbe Datei haben.Warum brauchen wir einen Aufpasser? Es wird verwendet, um die Übersetzung vom Pfadnamen (z. B. / etc / passwd) zum Inode zu beschleunigen. Linux-Kernel verwenden Inode, um "Datei" oder Verzeichnis zu manipulieren, nicht ihren Namen.
quelle
Beachten Sie, dass diese Begriffe nicht Linux-spezifisch, sondern dateisystemspezifisch sind. Die meisten von aktuellen Unix- und Unix-ähnlichen Systemen verwendeten Dateisysteme sind entweder von dem ursprünglichen Unix-Dateisystem abgeleitet oder inspiriert, das die Superblock- und Inode-Idiome definiert hat. Linux kann auch mehrere Dateisysteme mounten, bei denen keine Vorstellung von Superblock und / oder Inode besteht, wobei das häufigste FAT ist. Ein anderer, ZFS, verwendet keine Superblöcke, sondern Überblöcke.
quelle