23.8Verwaltung des Dateisystems (mount und /etc/fstab)

Nach der Installation von Linux müssen Sie sich normalerweise nicht um die Verwaltung des Dateisystems kümmern: Über diverse Verzeichnisse können Sie auf alle oder zumindest die meisten Datenpartitionen der Festplatte zugreifen. Beim Einlegen von DVDs bzw. beim Anschließen externer Datenträger werden deren Dateisysteme automatisch in den Verzeichnisbaum integriert. Alles funktioniert gleichsam wie von Zauberhand.

Dieser Abschnitt wirft einen Blick hinter die Kulissen und beschreibt die Kommandos mount und umount sowie die Datei /etc/fstab:

Überraschenderweise gibt es nur wenige grafische Konfigurationswerkzeuge, die beim mount-Vorgang bzw. bei einer Änderung von /etc/fstab helfen. Zu den wenigen Ausnahmen zählen das im vorigen Abschnitt kurz vorgestellte Programm gnome-disks sowie das YaST-Modul System • Partitionieren (SUSE).

Einen Sonderfall stellen externe Datenträger wie USB-Memorysticks oder Firewire-Festplatten dar: Die meisten Distributionen binden solche Datenträger automatisch in das Dateisystem ein, sobald sie mit dem Rechner verbunden werden. Details zum Umgang mit externen Datenträgern folgen in Abschnitt 23.15.

Aktuellen Zustand des Dateisystems ermitteln

Wenn Sie wissen möchten, wie Ihr Linux-System zurzeit organisiert ist, führen Sie am einfachsten das Kommando df -h aus. Dieses Kommando zeigt an, an welcher Stelle im Dateisystem Festplatten, Datenträger etc. eingebunden sind und wie viel Platz auf den einzelnen Festplatten noch frei ist.

Das Kommando mount ohne weitere Optionen liefert noch detailliertere Informationen über die eingebundenen Dateisysteme. Außerdem zeigt das Kommando alle aktiven mount-Optionen. Leider gehen die wirklich interessanten Einträge im Ergebnis oft zwischen unzähligen virtuellen Dateisystemen unter. Im folgenden Beispiel wurde die Ausgabe spaltenweise eingerückt, um die Lesbarkeit zu verbessern.

user$ mount /dev/mapper/vg-ubuntu on / type ext4 (rw,errors=remount-ro) /dev/mapper/vg-myhome on /myhome type ext4 (rw) /dev/mapper/vg-virt on /virt type ext4 (rw) /dev/sda3 on /boot type ext3 (rw) cgroup on /sys/fs/cgroup type tmpfs (rw,relatime,mode=755) proc on /proc type proc (rw) devtmpfs on /dev type devtmpfs (rw,mode=0755) tmpfs on /run type tmpfs (rw,noexec,nosuid,...) none on /run/lock type tmpfs (rw,noexec,nosuid,...) ...

Ähnliche Informationen wie mount liefern auch die Dateien /etc/mtab und /proc/mounts. Sie enthalten jeweils eine Liste aller Datenträger, die momentan eingebunden sind, zusammen mit dem Dateisystemtyp und den verwendeten mount-Optionen. /etc/mtab ändert sich jedes Mal, wenn ein Dateisystem in den Verzeichnisbaum eingebunden oder aus ihm gelöst wird. Die Syntax in mtab ist dieselbe wie in /etc/fstab (siehe unten). /proc/mounts enthält darüber hinaus auch Optionen, die in /etc/fstab bzw. beim mount-Kommando nicht explizit angegeben wurden.

Dateisysteme manuell einbinden und lösen (mount und umount)

Nach der Installation einer aktuellen Linux-Distribution ist das System so konfiguriert, dass Sie mount nur sehr selten benötigen: Alle Linux-Dateisysteme sind in den Verzeichnisbaum eingebunden. Beim Einlegen von CDs/DVDs oder beim Anschließen externer Datenträger erscheint automatisch ein neues Fenster des KDE- oder Gnome-Dateimanagers. Auch wenn es vielleicht so aussieht, als würde das Ganze wie von Zauberhand funktionieren, wird hinter den Kulissen immer wieder das Kommando mount ausgeführt, um Dateisysteme in den Verzeichnisbaum einzubinden bzw. wieder daraus zu lösen.

Die Syntax von mount sieht folgendermaßen aus:

mount [optionen] device verzeichnis

In den Optionen wird unter anderem der Dateisystemtyp angegeben (-t xxx). Der Device-Name bezeichnet die Partition bzw. das Laufwerk. Als Verzeichnis kann ein beliebiges Verzeichnis des aktuellen Dateisystems angegeben werden. Dieses Verzeichnis muss bereits existieren. Erzeugen Sie es gegebenenfalls mit mkdir!

mount kann im Regelfall nur von root ausgeführt werden. Es besteht aber die Möglichkeit, dass /etc/fstab für einzelne Partitionen allen Benutzern erlaubt, mount auszuführen (Option user bzw. users).

Am einfachsten ist mount anhand einiger Beispiele zu verstehen: Das erste Beispiel ermöglicht den Zugriff auf die Daten einer Windows-Partition über das Verzeichnis /windows:

root# mkdir /windows root# mount -t ntfs /dev/sda2 /windows

Das folgende Kommando bindet eine Daten-CD (ISO-9660-Dateisystem) im Verzeichnis /media/cdrom in das Dateisystem ein. Je nach Distribution müssen Sie statt /dev/sdc0 das Device /dev/sr0 angeben.

root# mount -t iso9660 /dev/scd0 /media/cdrom

Mit mount -o remount können Sie Optionen eines bereits eingebundenen Dateisystems verändern. Das folgende Kommando aktiviert beispielsweise die exec-Option für eine DVD, sodass darauf enthaltene Programme ausgeführt werden können:

root# mount /media/dvd -o remount,exec

Falls beim Einbinden der Systempartition während des Rechnerstarts Probleme auftreten, wird die Partition nur read-only eingebunden. Um die Fehlerursache – etwa einen falschen Eintrag in /etc/fstab – zu beheben, ist es aber oft erforderlich, Änderungen im Dateisystem durchzuführen. Dazu führen Sie das folgende Kommando aus. Mit ihm wird die Systempartition neu eingebunden, wobei jetzt auch Schreibzugriffe möglich sind.

root# mount -o remount,rw /

Um ein Dateisystem aus dem Verzeichnisbaum zu lösen, führen Sie umount aus:

root# umount /media/dvd

Dateisysteme automatisch einbinden (/etc/fstab)

Es wäre sehr mühsam, wenn Sie nach jedem Systemstart diverse Partitionen neu einbinden müssten, bei jedem DVD-Wechsel mount mit allen Optionen angeben müssten etc. Der Schlüssel zur Arbeitserleichterung heißt /etc/fstab: Diese Datei gibt an, welche Datenträger beim Systemstart in das Dateisystem aufgenommen werden. Auf jeden Fall muss fstab die Systempartition sowie alle zur internen Verwaltung notwendigen Dateisysteme enthalten.

Je nach Distribution kann eine minimale fstab-Datei wie folgt aussehen:

# zwei Beispielzeilen in /etc/fstab /dev/sda2 / ext4 defaults 1 1 none /proc proc defaults 0 0 ...

Durch die erste Zeile wird die zweite Partition der ersten Festplatte als Systemverzeichnis genutzt. Je nachdem, auf welcher Festplattenpartition Sie Linux installiert haben, müssen Sie statt sda2 natürlich den Device-Namen Ihrer Linux-Partition angeben!

Mit der zweiten Zeile wird das System zur Prozessverwaltung in das Dateisystem eingebunden. Die Dateien und Verzeichnisse des /proc-Verzeichnisses existieren nicht tatsächlich auf der Festplatte; es handelt sich nur um ein Abbild von Daten, die kernelintern verwaltet werden.

Die Syntax in /etc/fstab

Aus den obigen Beispielen geht bereits das prinzipielle Format von fstab hervor: Jede Zeile beschreibt in sechs Spalten einen Datenträger (eine Partition, ein Dateisystem).

Die erste Spalte enthält den Device-Namen des Datenträgers. Statt des Device-Namens können Sie auch den Volume Name oder die ID-Nummer des Dateisystems angeben. Die korrekte Syntax lautet in diesem Fall LABEL=zeichenkette oder UUID=nnn-nnn. Mit blkid ermitteln Sie den Partitionsnamen und die UUID einer Partition. Um diese Daten zu ändern, setzen Sie je nach Dateisystem unterschiedliche Werkzeuge ein, beispielsweise tune2fs.

root# blkid /dev/sda9 /dev/sda9: UUID="5a954fc1-00c6-4c25-a943-d4220eff350d" TYPE="ext4"

Der Vorteil von Labels oder UUIDs im Vergleich zu Device-Namen besteht darin, dass die Angabe selbst dann noch korrekt ist, wenn sich der Device-Name geändert hat. Das kann insbesondere bei USB-Datenträgern leicht passieren: Je nachdem, welche Datenträger vorher verwendet wurden, kann es durchaus sein, dass die externe Festplatte einmal unter /dev/sdc und das nächste Mal unter /dev/sde angesprochen wird.

Leider wird fstab insbesondere bei der Verwendung von UUIDs sehr unübersichtlich. Probleme kann es auch geben, wenn mehrere Linux-Distributionen parallel installiert werden. In der Regel werden bei jeder Installation einzelne Partitionen neu formatiert. Sie erhalten bei dieser Gelegenheit neue UUIDs. Die bisher installierten Distributionen kennen diese Partitionen nun nicht mehr, und fstab muss mühsam an die neuen UUIDs angepasst werden.

Die zweite Spalte gibt an, bei welchem Verzeichnis der Datenträger in den Dateibaum eingebunden wird. Die in der zweiten Spalte angegebenen Verzeichnisse müssen bereits existieren. Die Verzeichnisse müssen nicht leer sein, allerdings können Sie nach dem Einbinden des Dateisystems auf die darin enthaltenen Dateien nicht mehr zugreifen, sondern nur auf die Dateien des eingebundenen Datenträgers.

Die dritte Spalte gibt das Dateisystem an. Tabelle 23.4 listet in alphabetischer Reihenfolge die wichtigsten Dateisysteme auf.

Dateisystem

Verwendung

auto

Dateisystem automatisch erkennen

btrfs

btrfs-Dateisystem

cifs

Windows-Netzwerkverzeichnis (Samba)

ext2, -3, -4

ext-Dateisystem Version 2, 3 und 4

iso9660

Daten-CDs

nfs

Unix-Netzwerkverzeichnis (NFS)

ntfs

Windows-Dateisystem

proc

Prozessverwaltung (/proc)

smbfs

Windows-Netzwerkverzeichnis (Samba)

swap

Swap-Partitionen oder -Dateien

sysfs

Systemverwaltung (/sys)

tmpfs

temporäres Dateisystem

udf

Universal Disk Format (DVDs, CD-RWs)

vfat

Windows-9x/ME-Dateisystem

xfs

XFS-Dateisystem

Tabelle 23.4Dateisysteme

Es ist auch zulässig, mehrere Dateisysteme durch Kommas getrennt anzugeben. Beispielsweise bietet sich iso9660,udf für CD- und DVD-Laufwerke an, weil für CDs und DVDs in der Regel nur diese beiden Dateisysteme infrage kommen. mount entscheidet sich zwischen den zur Auswahl stehenden Systemen automatisch für das richtige. Die Dateisystemnamen dürfen nicht durch Leerzeichen getrennt werden.

Die vierte Spalte bestimmt Optionen für den Zugriff auf den Datenträger.

Mehrere Optionen werden durch Kommata getrennt. Abermals dürfen keine Leerzeichen eingefügt werden! Tabelle 23.5 zählt die wichtigsten universellen mount-Optionen auf. Wenn Sie gar keine Option nutzen möchten, geben Sie defaults an.

Option

Bedeutung

defaults

Standardoptionen verwenden

dev

Kennzeichnung von Character- oder Block-Devices auswerten

discard

SSD-Trim aktivieren (ext4, btrfs, xfs und swap)

exec

Programmausführung zulassen (z.B. für CD/DVD-Laufwerke)

noauto

Datenträger nicht beim Systemstart einbinden

nodev

Kennzeichnung von Character- oder Block-Devices ignorieren

noexec

keine Programmausführung erlaubt

nosuid

Suid- und Guid-Zugriffsbits nicht auswerten

ro

Read Only (Schreibschutz)

sw

Swap (Swap-Datei oder -Partition)

suid

Suid- und Guid-Zugriffsbits auswerten

sync

Schreibzugriffe nicht puffern (sicherer, aber langsamer)

owner

Der Besitzer darf (u)mount ausführen.

user

Jeder darf mount ausführen, aber nur der Benutzer des letzten mount-Aufrufs darf umount ausführen.

users

Jeder darf mount und umount ausführen.

Tabelle 23.5mount-Optionen

Die fünfte Spalte enthält Informationen für das Programm dump und wird von Linux ignoriert. Es ist üblich, für die Systempartition 1 und für alle anderen Partitionen oder Datenträger 0 einzutragen.

Die sechste Spalte gibt an, ob und in welcher Reihenfolge die Dateisysteme beim Systemstart überprüft werden sollen. Oft wird 1 für die Systempartition und 0 für alle anderen Partitionen eingetragen. Das bedeutet, dass beim Rechnerstart nur die Systempartition auf Fehler überprüft und gegebenenfalls repariert wird.

Falls Sie möchten, dass weitere Partitionen automatisch überprüft werden, geben Sie bei diesen Partitionen die Ziffer 2 an, d.h., die Überprüfung soll nach der Kontrolle der Systempartition erfolgen. Wenn Einträge in der fünften und sechsten Spalte in /etc/fstab fehlen, wird 0 angenommen.