Journaling Filesysteme unter Linux

Aufbau eines Standard-Dateisystems (UFS, Ext2fs)


[ Seminar Linux und Apache ] ... [ Inhaltsübersicht ] ... [ Was ist neu? ]

Das Second Extended Filesystem (Ext2fs) teilt den vorhandenen Plattenplatz in Blöcke gleicher Größe (z.B. 1024 Byte) ein und nummeriert diese durch. Eine bestimmte Anzahl Blöcke wird in einer Blockgruppe zusammengefasst. Der erste Block jeder dieser Gruppen ist der Superblock. Dort befinden sich notwendige Daten für die Verwaltung des Dateisystems.

Aufbau einer Blockgruppe
Block Beschreibung (Auszug)
Superblock Label, Mount Count, Check Interval, Dateisystemstatus, Anzahl Inodes, Blöcke, ...
Dateisystem-Beschreibungen Adressen der Block- und Inodes-Abbilder und Tabellen, Anzahl freier Inodes und Blöcke, Anzahl der Verzeichnisse
Block-Abbild Ein Bit-Abbild der Block-Belegung der Gruppe
Inodes-Abbild Ein Bit-Abbild der Inodes-Belegung der Gruppe
Inodes-Tabelle Verzeichnis der Inodes
Datenblöcke Daten


In dem Block-Abbild wird für jeden Datenblock ein Bit gespeichert. Dieses Bit wird gesetzt oder gelöscht jenachdem ob der Block belegt oder frei ist. In der Inodes-Tabelle steht eine feste Anzahl von Inodes (je acht Inodes können bei einer Blockgröße von 1024 Bytes in einem Block gespeichert werden). Auch für diese gibt es ein Bit-Abbild. Sind alle Bits gesetzt, so wird diese Blockgruppe als komplett belegt angesehen.
Die letzte Gruppe dient als Speicherplatz für Daten. Hier und nur hier werden die eigentlichen Daten gespeichert, die anderen fünf Gruppen sind lediglich der Verwaltungsüberbau.

Die Verwaltung von Dateien und Verzeichnissen ist sich sehr ähnlich. Ein Verzeichnis ist im Prinzip wie eine Textdatei mit mehreren Zeilen gegliedert. In jeder Zeile dieser Textdatei steht der Name eines Unterverzeichnisses oder einer Datei inklusiv der Inode-Nummer. Zusätzlich befindet sich hier ein Verweis auf sich selbst (.) und das übergeordnete Verzeichnis (..).
Anhand der Ausgabe des folgenden Kommandos wird der Unterschied zwischen verschiedenen Systemen deutlich.
Was hier auffällt ist die jeweilige Größe des leeren Verzeichnisses dir1. Bei den ersten beiden Ausgaben handelt es sich jeweils um ext2fs. Das erste wurde mit einer Blockgröße von 4096 Bytes, das zweite mit einer Größe von 1024 Bytes formatiert. Also belegen diese Verzeichnisse jeweils einen Block und somit 4096 (1024) Bytes. Die dritte Ausgabe entstand auf einem ReiserFS. Hier belegt das Verzeichnis lediglich 35 Bytes.

RedHat 6.1, ext2
www300@online:/tmp/jj > ls -lai
total 20
2556006 drwxr-xr-x	 4 www300	users	4096 Oct 18 11:06 .
 180225 drwxrwxrwt	 8 root		root	4096 Oct 18 11:04 ..
2179484 drwxr-xr-x	 2 www300	users	4096 Oct 18 11:05 dir1
2556007 drwxr-xr-x	 2 www300	users	4096 Oct 18 11:05 dir2
2556008 -rw-r--r--	 1 www300	users	   1 Oct 18 11:05 hallo.txt
Ext2 :
jj@gromit:/tmp/tmp/jj > ls -lai
insgesamt 4
223244 drwxr-xr-x	 4 jj		users	1024 Jan 21 17:00 .
180247 drwxr-xr-x	 3 jj		users	1024 Jan 21 17:03 ..
 84002 drwxr-xr-x	 2 jj		users	1024 Jan 21 17:00 dir1
223245 drwxr-xr-x	 2 jj		users	1024 Jan 21 17:01 dir2
SuSE 7.1 , ReiserFS
andi@linux:/tmp/jj > ls -lai
insgesamt 6
 153090 drwxr-xr-x	 4 andi		users	 100 Okt 18 11:56 .
     16 drwxrwxrwt	13 root		root	 511 Okt 18 11:55 ..
 153125 drwxr-xr-x	 2 andi		users	  35 Okt 18 11:56 dir1
 153126 drwxr-xr-x	 2 andi		users	  35 Okt 18 11:56 dir2
 153145 -rw-r--r--	 1 andi		users	   1 Okt 18 11:56 hallo.txt
Von links nach rechts erklärt:
Die linke Spalte gibt die Inode-Nummern an, unter der die Verweise, Unterverzeichnisse oder gegebenenfalls auch Dateien abgelegt sind. In der nächsten Spalte werden die Zugriffsrechte aufgelistet. Darauf folgt die Spalte mit der Anzahl fester Links, die auf diese Dateien oder Verzeichnisse zeigen (Hardlinks). Eine Datei hat zwar nur einen Inode, aber in diesem können mehrere Links auf diese Datei gespeichert werden. Beispielsweise ist für das Unterverzeichnis dir1 die Zahl von zwei Hardlinks angegeben. Konkret besagt dies: dir1 verweist einmal auf sich selbst und enthält einen Verweis auf das Verzeichnis eine Ebene darüber, hier jj. Die nächsten Spalten geben Benutzer- und Gruppen-ID, Verzeichnisgröße, Änderungsdatum und Namen an.

Nach oben

[ Seminar Linux und Apache ] ... [ Inhaltsübersicht ] ... [ Was ist neu? ]