Dateisysteme

Als Dateisystem bezeichnet man auf einem Debian GNU/Linux (und auf allen anderen Unix-Systemen) den kompletten Verzeichnisbaum ab dem „root-“Verzeichnis /. Als Dateisystem wird aber auch die Organisationsform der Daten auf einem Medium (Festplatte, Diskette) bezeichnet, die von Betriebssystem zu Betriebssystem unterschiedlich ist.

Jedes physikalische Gerät, auf dem Sie Daten speichern wollen, müssen Sie zunächst mit einem Dateisystem versehen. Wenn Sie verschiedene Partitionen auf einem Medium erstellen, kann jede dieser Partitionen mit einem anderen Dateisystemtyp versehen werden. Jedes Betriebssystem verwendet mindestens einen eigenen Dateisystemtyp, viele verwenden auch mehrere oder können mit verschiedenen Typen umgehen.

Häufig sind im Debian GNU/Linux-Umfeld Kombinationen aus Linux und Windows-Dateisystemen anzutreffen. Debian GNU/Linux kann mit einer großen Zahl von Dateisystemen umgehen, Sie können somit sehr einfach Ihre Daten von anderen Betriebssystemen auf Ihr Debian GNU/Linux-System übernehmen.

cfdisk und mount - Einbinden eines Dateisystems

Unter Debian GNU/Linux gibt nur einen einzigen Verzeichnisbaum (beginnend mit /). In diesem sind, als Unterverzeichnisse, alle physikalischen Geräte zu finden. Es werden keine Buchstaben zu Identifikation der Geräte benutzt.

Mit Ausnahme des Root-Dateisystems (/, welches beim Systemstart automatisch angemeldet wird) müssen Sie alle weiteren Dateisysteme erst einmal in das System einbinden. Dabei kann, wie bereits beschrieben, jedes physikalische Gerät über mehrere Partitionen verfügen. Jedes dieser Dateisysteme wird im System in einem Verzeichnis (dem sogenannten „mount-point“) „eingehängt“. Das ist so einfach, wie es sich anhört, Sie können einen Mountpoint mit dem Kommando mkdir erzeugen und an dieser Stelle im Dateisystem das Medium einhängen.

Um dem System weitere Dateisysteme hinzuzufügen (dies können Sie im Normalfall nur als Superuser tun), dient das Kommando mount. Bei der Installation von Debian GNU/Linux von CD-ROM wurde das Dateisystem (/cdrom) bereits benutzt und vom Installationsprogramm ins System eingebunden. Hierbei wurde ein Link von dem entsprechenden Device auf das neue Device: /dev/cdrom angelegt. Sie müssen sich somit nicht das Device Ihres CD-ROMs merken (oder herausfinden), sondern können diesen Link benutzen. Weiterhin wurde bei der Installation das Verzeichnis /cdrom angelegt. Sie können nun eine eingelegte CD sehr leicht mit dem Kommando mount /dev/cdrom /cdrom „mounten“.

Der Mount-Point kann anstelle von /cdrom jedes andere, beliebige Verzeichnis sein. Beachten Sie jedoch, daß Verzeichnisse, an deren Stelle Sie ein Dateisystem mounten möchten, keine weiteren Dateien enthalten sollten. Das Mounten eines Dateisystems funktioniert auch, wenn sich bereits Dateien in dem Verzeichnis befinden, Sie können lediglich nicht mehr auf diese Dateien zugreifen. Die Dateien werden nicht gelöscht, sie werden praktisch von dem gemounteten Dateisystem „überlagert“.

In der Praxis reicht dieses Wissen jedoch nicht lange aus. Sicher werden Sie irgendwann den Wunsch haben, den Festplattenplatz Ihres Systems zu erweitern. Der erste Schritt ist natürlich der mechanische Einbau der Festplatte. Schon hierbei (eigentlich schon beim Kauf der Platte) müssen Sie sich für den Anschluß an einem der beiden IDE-Busse oder am SCSI-Hostadapter entscheiden.

Bei einem IDE-System notieren Sie sich, ob Sie die Platte am ersten (primary) oder am zweiten (secondary) Bus und ob die Platte als erste ( Master) oder zweite ( Slave) am jeweiligen Bus betrieben wird.

Am SCSI-Bus notieren Sie sich die ID der Platte und kontrollieren ob, und wenn ja mit welcher ID, noch weitere Geräte angeschlossen sind. Beachten Sie hierbei auch externe Geräte!

Im nächsten Schritt müssen Sie mindestens eine Partition auf der neuen Platte anlegen. Diese kann den gesamten Festplattenplatz in Anspruch nehmen, Sie können aber auch mehrere, kleine Partitionen anlegen. Unter Debian GNU/Linux haben Sie die Auswahl zwischen zwei Programmen: fdisk und cfdisk. Wir werden im folgenden cfdisk, aufgrund der ansprechenderen Oberfläche, vorstellen.

Ermitteln Sie zunächst das entsprechende Device für die neue Festplatte, mit Hilfe der zuvor notierten Daten. Für IDE-Laufwerke ist die Bezeichnung folgende:

Dabei ist unerheblich, ob es sich um eine Festplatte oder ein CD-ROM handelt.

Bei SCSI-Laufwerken ist die Bestimmung etwas anders. Zunächst ist zu beachten, daß zwischen Festplatten, CD-ROMs/CD-Brennern und anderen Geräten unterschieden wird. Die Gerätedateien für SCSI-Festplatten werden mit /dev/sdX bezeichnet, wobei X für einen Buchstaben steht, angefangen bei a und dann aufsteigend nach SCSI-ID zugeordnet. Hier ein denkbares Beispiel:

  • /dev/sda – SCSI-Platte mit der kleinsten ID (z.B.: 0)

  • /dev/sdb – SCSI-Platte mit der mittleren ID (z.B.: 2)

  • /dev/sdc – SCSI-Platte mit der größten ID (z.B.: 3)

SCSI CD-ROMs oder CD-Brenner werden ähnlich bezeichnet. Die Gerätedatei wird als /dev/scdX bezeichnet, hier steht X für eine Zahl, beginnend bei 0. Beispielsweise:

  • /dev/scd0 - SCSI CD-ROM/Brenner (z.B. ID: 3)

  • /dev/scd1 - SCSI CD-ROM/Brenner (z.B. ID: 5)

Natürlich müssen/können Sie auf einer CD-ROM kein Dateisystem anlegen, dies sollte hier nur der Anschauung dienen.

Nachdem Sie nun das Ihrer Platte entsprechende Device bestimmt haben, können Sie cfdisk mit dem entsprechenden Device als Option starten, beispielsweise: cfdisk /dev/hdb. Bei einer neuen Festplatte werden nach dem Programmstart keinerlei Partitionen angezeigt. In diesem Beispiel, mit einer 16GB-Festplatte, wurde eine einzige Partition mit einem Linux Extended 2 (ext2-) Dateisystem angelegt.

Die erste Partition wird als /dev/hdb1 angelegt, eine zweite würde /dev/hdb2 genannt werden und so weiter...

Sie können sich innerhalb von cfdisk mit den Cursortasten bewegen und mit der RETURN-Taste den ausgewählten Menüpunkt auswählen.

Wenn Sie alle gewünschten Partitionen, oder auch nur eine einzige, angelegt haben, können Sie nun das eigentliche Dateisystem auf der Partition erzeugen. Hierzu steht Ihnen unter Debian GNU/Linux das Kommando mke2fs zu Verfügung. Auch diesem Kommando müssen Sie natürlich wieder angeben, welche Festplatte und vor allem auch welche Partition Sie mit dem Dateisystem beschreiben wollen. Für unser Beispiel beginnen wir mit der ersten Partition auf unserer Platte, also dem Device /dev/hdb1:
sushi:~# mke2fs /dev/hdc1
mke2fs 1.15, 18-Jul-1999 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
128256 inodes, 256032 blocks
12801 blocks (5.00%) reserved for the super user
First data block=0
8 block groups
32768 blocks per group, 32768 fragments per group
16032 inodes per group
Superblock backups stored on blocks:
	32768, 98304, 163840, 229376

Writing inode tables: done
Writing superblocks and filesystem accounting information: done
Die bei Ihnen angezeigten Werte werden, je nach verwendeter Platte, von den hier gezeigten abweichen. (Gute Beobachter werden bemerken, daß in diesem Beispiel nicht die 16GB-Platte formatiert wurde, diese stand leider nicht zur Verfügung...)

Nun können Sie die frisch formatierte Partition zu Ihrem Dateisystem hinzufügen: mount /dev/hdb1 /mnt und mit dem Kommando df überprüfen, ob nichts schiefgelaufen ist.

Die Ausgabe könnte auf einem System mit mehreren Festplatten wie folgt aussehen:

sushi:~# df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/hda1              5767132   4352356   1121804  80% /
/dev/hdb1             16247612  14355348   1066928  94% /home/ftp
/dev/hdc1             24597980  21574360   1774080  93% /home/ftp/debian
/dev/hda2             18263244  15157492   2178016  88% /home/ftp/images
In dieser Auflistung sollten Sie dann auch die neu eingebundene Festplattenpartition finden.

/etc/fstab - Dateisysteme automatisch einbinden

Vielleicht werden Sie nach einem Neustart des Systems bemerkt haben, daß die neu eingebundene Festplatte nicht automatisch ins System eingebunden wird. Wenn Sie möchten, daß bestimmte andere Partitionen zusätzlich zu / (root) ins System eingebunden werden, so müssen Sie diese in die Datei /etc/ fstab (für: „file system table“) aufnehmen. Weiterhin ist es sinnvoll, dort auch Dateisysteme einzutragen, die zwar nicht automatisch gemountet werden sollen, auf die Sie aber trotzdem schnellen Zugriff haben möchten, beispielsweise CD-ROMs, die öfter gewechselt werden.

Nach der Basisinstallation von Debian GNU/Linux sind bereits einige Einträge in der Datei /etc/fstab vorhanden:
# /etc/fstab: static file system information.
#
# <file system>     <mount point>   <type>  <options>   <dump >  <pass>
/dev/hda1            /               ext2    defaults    0       1
/dev/hda2            none            swap    sw          0       0
proc                 /proc           proc    defaults    0       0
Bei der Installation wurden (mindestens) das Root-Dateisystem (/) sowie eine Swap-Partition angelegt. Der dritte Eintrag dient dem „virtuellen“ Verzeichnis /proc, welches zur Laufzeit des Systems diverse Informationen zum System und zur Hardware enthält. Dieses verbraucht keinen Festplattenplatz.

Die erste Spalte beschreibt das Device und die zu mountende Partition. Die zweite Spalte verweist auf das Verzeichnis im Dateisystem, an der die Partition eingebunden werden soll. Beachten Sie, daß dieses Feld bei einer Swap-Partition mit dem Text „none“ anstatt eines Verzeichnisses gefüllt wird. Die dritte Spalte beschreibt den Typ des Dateisystems. Eine Beschreibung der weiteren Spalten finden Sie weiter unten, übernehmen Sie die Werte erst einmal wie gezeigt.

Um die im vorigen Abschnitt beschriebene Festplatte /dev/hdc automatisch ins System einzubinden, erweitern Sie die Datei um folgenden Eintrag:
/dev/hdc1            /mnt               ext2    defaults    0       2
Weitere nützliche Einträge sind folgende:
/dev/hdc             /cdrom          iso9660 ro          0       0
/dev/fd0             /floppy         auto    noauto,sync 0       0
Der erste Eintrag ermöglicht es Ihnen, eine CD-ROM einfach mit dem Kommando mount /cdrom anstatt mount /dev/cdrom /cdrom einzubinden. Gleiches gilt für die zweite Zeile, diesmal aber für das Diskettenlaufwerk. Um mit DOS-formatierten Disketten umzugehen, sehen Sie sich das Paket mtools an.

/etc/fstab - im Detail

Wie Sie schon gesehen haben, sind die Einträge in der Datei /etc/fstab in tabellarischer Form angeordnet:
# /etc/fstab: static file system information.
#
# <file system>     <mount point>   <type>  <options>   <dump >  <pass>
/dev/hda1            /               ext2    defaults    0       1
/dev/hda2            none            swap    sw          0       0
proc                 /proc           proc    defaults    0       0
Zeilen, die mit einem Kommentar (# - „Gartenzaun“) beginnen, können Sie ignorieren, das System tut dies auch.

Mit den ersten drei Spalten haben wir uns ja schon kurz beschäftigt, diese enthalten die Einträge für die Partition, den Mount-Punkt und den Dateisystemtyp. Die letzten drei Spalten bedürfen einiger Erklärungen.

Die fünfte Spalte wird von dem Programm dump benutzt um festzustellen, wann diese Partition gesichert werden soll. dump und restore dienen zur Sicherung von Daten.

Die sechste Spalte wird beim Systemstart von dem Programm fsck ausgewertet. Damit wird festgestellt, in welcher Reihenfolge die Dateisysteme beim Systemstart geprüft werden sollen. Die Root-Partition (/) sollte hier den Wert 1 erhalten. Dateisysteme, die nicht überprüft werden sollen, wie zum Beispiel swap oder CD-ROMs, bekommen den Wert 0, alle anderen Dateisysteme bekommen eine 2.

Nein, das ist kein Fehler im Text... zur vierten Spalte kommen wir jetzt. Diese bedarf einiger Erklärungen. Die Einträge in der vierten Spalte werden beim Mounten des Dateisystems benutzt. Sie können hier einen (im einfachsten Fall den Text: default) oder mehrere Werte angeben.