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.
[
Seminar Linux und Apache ] ... [
Inhaltsübersicht ] ... [
Was ist neu? ]