Linux Dateisystem Aufbau: Unterschied zwischen den Versionen
| (9 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | == | + | ==Interne '''Unix''' Dateisysteme== |
*Generell werden die Verwaltungsinformationen von den eigentlichen Daten getrennt. | *Generell werden die Verwaltungsinformationen von den eigentlichen Daten getrennt. | ||
| − | *Die Verwaltungsdaten werden in so Inodes gehalten, deren vereinfachten Aufbau diese Abbildung zeigt. | + | *Die Verwaltungsdaten werden in so genannten Inodes gehalten, deren vereinfachten Aufbau diese Abbildung zeigt. |
*Jede Datei (und das gilt für jeden Dateityp) wird durch genau einen Inode repräsentiert. | *Jede Datei (und das gilt für jeden Dateityp) wird durch genau einen Inode repräsentiert. | ||
*Innerhalb einer Partition besitzt jeder Inode eine eindeutige Nummer. | *Innerhalb einer Partition besitzt jeder Inode eine eindeutige Nummer. | ||
{{#drawio:datsys-1}} | {{#drawio:datsys-1}} | ||
| − | Im Laufe der Installation wird auf jeder Partition ein Dateisystem angelegt. Alle | + | *Im Laufe der Installation wird auf jeder Partition ein Dateisystem angelegt. |
| − | '''Unix'''-Dateisysteme lassen sich in das in dieser Abbildung skizzierte Schema | + | *Alle'''Unix'''-Dateisysteme lassen sich in das in dieser Abbildung skizzierte Schema einordnen |
| − | + | ||
==Anfang der Partition== | ==Anfang der Partition== | ||
{{#drawio:datsys-2}} | {{#drawio:datsys-2}} | ||
| − | + | ===Erläuterung=== | |
{| Border=1 Cellpadding=2 | {| Border=1 Cellpadding=2 | ||
|Bootblock | |Bootblock | ||
| Zeile 54: | Zeile 54: | ||
{{#drawio:datsys-3}} | {{#drawio:datsys-3}} | ||
| − | + | ||
| − | |||
Scheinbar besitzt das ext2 keinerlei Änlichkeit mit herkömmlichen Unix- | Scheinbar besitzt das ext2 keinerlei Änlichkeit mit herkömmlichen Unix- | ||
| Zeile 62: | Zeile 61: | ||
Gruppe mit dem Unix-Prinzip: | Gruppe mit dem Unix-Prinzip: | ||
| − | + | {{#drawio:datsys-4}} | |
| + | |||
Abbildung: Struktur einer ext2-Gruppe | Abbildung: Struktur einer ext2-Gruppe | ||
| − | Superblock, Inode-Tabelle und Datenblöcke sind hier enthalten. | + | Superblock, Inode-Tabelle und Datenblöcke sind hier enthalten. |
| − | |||
{| Border=1 Cellpadding=2 | {| Border=1 Cellpadding=2 | ||
| Zeile 99: | Zeile 98: | ||
|Hier gilt das schon in der allgemeinen Beschreibung gesagte. | |Hier gilt das schon in der allgemeinen Beschreibung gesagte. | ||
|} | |} | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
Aktuelle Version vom 11. Juni 2024, 12:26 Uhr
Interne Unix Dateisysteme
- Generell werden die Verwaltungsinformationen von den eigentlichen Daten getrennt.
- Die Verwaltungsdaten werden in so genannten Inodes gehalten, deren vereinfachten Aufbau diese Abbildung zeigt.
- Jede Datei (und das gilt für jeden Dateityp) wird durch genau einen Inode repräsentiert.
- Innerhalb einer Partition besitzt jeder Inode eine eindeutige Nummer.
- Im Laufe der Installation wird auf jeder Partition ein Dateisystem angelegt.
- AlleUnix-Dateisysteme lassen sich in das in dieser Abbildung skizzierte Schema einordnen
Anfang der Partition
Erläuterung
| Bootblock | Der erste Block jeder Partition kann einen Bootloader (zum Start eines Betriebssystems) enthalten, er wird beim Einschalten des Rechners vom BIOS gelesen. Dieser Block existiert bei allen Dateisystemen. |
| Superblock | Hier stehen Informationen zum Typ und internen Aufbau des Dateisystems. Der Inhalt ist also systemabhängig |
| Inode-Blöcke | Inodes werden innerhalb der Filesysteme in Inode-Listen geführt, und sind definierte Datenstrukturen, die eine Datei eindeutig beschreiben und verwalten können.
Im einfachsten Fall stehen alle Inodes hintereinander auf der Platte. Ist die Datei sehr klein (<= 60 Bytes), werden ihre Daten direkt im Inode gespeichert, ansonsten verweist ein Eintrag im Inode auf einen (oder mehrere) Datenblock, in dem nun der Inhalt der Datei gespeichert wird. Reichen die in einem Inode referenzierten Blöcke (maximal 12) für eine Datei nicht aus, zeigt ein Eintrag im Inode auf einen (oder mehrere) Datenblock, welcher nun die eigentlichen Verweise zu den Datenblöcken beinhaltet. Man spricht von einem einfach indirekten Block. Bis zu dreifach indirekte Blöcke sind möglich, so dass theoretisch als maximale Dateigröße 8 TByte bei einer Blockgröße von 4 KByte erzielt werden ( [ 12 + 1024 + 1024*1024 + 1024*1024*1024 ] * 4 kb ). Durch weitere Faktoren auf 32 Bit Architekturen ist dieser Wert bei Kernel 2.2 allerdings auf 2 GByte begrenz |
| Datenblöcke | Gehört ein Block zu einer normalen Datei, dann stehen hier die Daten zu dieser. Gehört der Block zu einem Verzeichniseintrag, so enthält er den
Inhalt des Verzeichnisses, also eine Tabelle aus Dateinamen und zugehöriger Inode. Ein Datenblock lässt (aus Sicht des Systems) keinen Rückschluss auf den zugehörigen Inode zu. Da die Blockgröße festliegt, wird im Falle, dass die Dateigröße diese nicht erreicht, Plattenplatz verschwendet. In Anbetracht der durchschnittlichen Dateigrößen in einem Unix-System hat sich 4096 Byte als optimale Blockgröße herausgestellt. Wählt man einen kleineren Wert, erhöht sich zwar die mittlere Auslastung der einzelnen Blöcke, allerdings benötigt man ggf. mehr indirekte Datenblöcke (sowie im konkreten Falle des Linux-Dateisystems größere Bitmaps). |
Optimierungen im Linux-Dateisystem
Schauen wir uns nun die Einteilung einer Partition im ext2 an:
Scheinbar besitzt das ext2 keinerlei Änlichkeit mit herkömmlichen Unix-
Dateisystemen. Abgesehen vom Bootblock, aber über diesen verfügt bekanntlich
jedes Dateisystem. Aber das täuscht... Vergleichen wir einmal die Struktur einer
Gruppe mit dem Unix-Prinzip:
Abbildung: Struktur einer ext2-Gruppe
Superblock, Inode-Tabelle und Datenblöcke sind hier enthalten.
| Superblock | Die Superblöcke der einzelnen Gruppen sind exakte Kopien
des Superblockes aus Gruppe 0. Er enthält in einer 1024 Bytes großen Struktur alle wichtigen Informationen zum Dateisystem, wie die Anzahl von Inodes und Datenblöcken (gesamt/frei), Blockgröße der Datenblöcke (ein Inode ist immer 128 Byte groß), Zeitpunkt des letzten Mountens, Zähler der Anzahl der Mountvorgänge, Status, Zeit der letzten Überprüfung usw. |
| Gruppendeskriptoren | Hier wurde zusätzliche Sicherheit eingebaut. Die
Deskriptoren enthalten alle notwendigen Informationen zu allen anderen Gruppen, um diese nach einem Defekt restaurieren zu können. Sind in einer Gruppe also die Verwaltungsinformationen (Superblock, Gruppendeskriptoren oder Bitmaps) zerstört worden, können diese repariert werden und die Daten sind weiterhin verfügbar |
| Bitmaps | Sie dienen dem schnellen Auffinden von freien
Inode/Datenblöcken. Ihre Größe entspricht der Datenblockgröße und beschränkt die Anzahl der Datenblöcke einer Gruppe (bei einer Blockgröße von 4096 Bytes sind es somit 32768). |
| Inodetabelle/Datenblöcke | Hier gilt das schon in der allgemeinen Beschreibung gesagte. |



