Mounten

Aus wiki.archlinux.de

Als „mounten“ wird der Vorgang des Einhängens eines Dateisystems in die bestehende Verzeichnisstruktur bezeichnet. Dieses Einhängen ist notwendig, um mit üblichen Programmen auf Dateien eines Dateisystems zugreifen zu können. Dateisysteme werden mittels des Programms mount eingehängt. „Einhängen“ und „mounten“ werden synonym verwendet.

Man kann Dateisysteme sowohl temporär bis zum nächsten Neustart des Systems mounten, als auch die Mounts dauerhaft im System verankern. Temporäre Mounts werden mittels des mount-Befehls vorgenommen, permanente Mounts werden in die Datei fstab eingetragen.

Voraussetzungen

Damit eine Partition nutzbar gemountet werden kann, bedarf es einiger Voraussetzungen. Natürlich muss darauf ein Dateisystem existieren – eine „nackte“ Partition kann nicht ohne weiteres mit Daten beschrieben werden, wenn auf ihr kein Dateisystem existiert. Es kann allerdings auch standardmäßig kein Dateisystem erstellt werden, wenn die Partition gemountet ist. Des Weiteren muss die Partition vom System erkannt werden. Wenn man ein Dateisystem auf die Partition bringen konnte, ist dies der Fall.

Da das Mounten das System für gewöhnlich sehr beeinflusst, kann man dies nur mit root-Rechten. Man kann es zwar so konfigurieren, dass auch normale Benutzer in einem gewissen Rahmen selbständig Dateisysteme mounten dürfen – dies kann man allerdings auch nur als root einstellen. Es ist grob fahrlässig, dem User volle Mount-Rechte zuzuweisen, auch wenn dies theoretisch möglich ist.

Es wird hier davon ausgegangen, dass auf der zu mountenden Partition ein Dateisystem eingerichtet wurde, und dass die Partition für das System erkennbar und verfügbar ist.

Das Programm mount

mount gehört zum Standard-Umfang praktisch jeder Linux-Distribution es wird sowohl dazu benutzt, die temporären Mounts einzurichten, als auch die permanenten Mounts bei Systemstart aus der fstab auszulesen und einzurichten. Mittels mount werden Dateisysteme dem System an definierten Mountpoints zur Verfügung gestellt.

Im einfachsten Fall teilt man dem Programm einfach ein Device (üblicher Weise eine Partition auf einem Datenträger – es gibt allerdings noch andere „Devices“ wie z.B. NFS-Shares; siehe weiter unten) und den Mountpoint mit. Eventuell muss man auch das zu verwendende Dateisystem mit übergeben.

mount /dev/sdb1 /media/platte             # ohne Angabe des Dateisystemtyps
mount -t ext3 /dev/sdb1 /media/platte     # mit Angabe des Dateisystemtyps (hier: ext3)

Vor dem Mounten muss der Mountpoint erstellt werden. Ein Mountpoint ist dabei ein beliebiges Verzeichnis. Mountpoints werden daher also mittels mkdir erstellt. Wenn einem Dateisystem ein Verzeichnis als Mountpoint zugewiesen wird, in dem sich bereits Dateien befinden, ersetzt der Inhalt des gemounteten Dateisystems für die Dauer des Gemountet-Seins den Inhalt des Verzeichnisses, das als Mountpoint verwendet wird.

Wird das Dateisystem wieder ausgehängt, sind die Dateien des als Mountpoint verwendeten Verzeichnisses wieder verfügbar. Alle Dateien, die während der Verwendung als Mountpoint in das Verzeichnis geschrieben wurden, befinden sich dann auf dem Dateisystem, das während dieser Zeit dort gemountet war.

mount können beim Mounten verschiedene Mount-Options übergeben werden, um die Verwendung des Dateisystems zu beeinflussen. Optionen werden beim manuellen Mounten mittels Parameter -o, gefolgt von einer durch Kommata getrennten Optionen-Liste, übergeben.

Gängige Optionen sind ro (nur lesbar), noexec (es können keine Programme ausgeführt werden, die in diesem Dateisystem gespeichert sind) oder user (damit kann den Benutzern erlaubt werden, das Dateisystem zu mounten). Um das Dateisystem aus dem ersten Beispiel nur lesbar und ohne Programmausführrecht zu mounten, kann folgender Befehl verwendet werden.

mount -t ext3 -o ro,noexec /dev/sdb1 /media/platte

Damit wird das Dateisystem /dev/sdb1 als ext3 unter dem Mountpoint /media/platte eingehängt, und kann dort nur lesend verwendet werden. Weitere Optionen und Parameter befinden sich ausführlich in der Manpage zu mount.

/etc/fstab

In der fstab werden zeilenweise alle permanenten Mounts definiert.

Man sollte dort nur etwas ändern, wenn man sich über die Konsequenzen im Klaren ist, und weiß, wie man eventuell auftretende Fehler wieder beheben kann.

Des Weiteren werden ein swap-Speicher und mindestens eine Datenpartition (gemountet als root-Partition unter /) erstellt. Je nachdem, wie man sich bei der Installation entschieden hat, werden Festplatten über deren UUID, deren Label oder über den Device-Node referenziert. Diese drei Optionen haben jeweils alle Vor- und Nachteile. Was man verwendet ist letztendlich bei einem einmal eingerichteten System allerdings nicht von all zu großer Bedeutung.

Device-Nodes können sich unter gewissen Umständen ändern. Eine Partition, die unter /dev/sdb1 erreichbar ist, könnte nach einem Start zum Beispiel unter /dev/sdc1 verfügbar sein. Dies passiert für gewöhnlich allerdings nur, wenn man Partitionen (neu) einrichtet, alte Hardware um-, oder neue Hardware einbaut, oder sich die Zugriffs-Routinen ändern. Es ist allerdings immer ratsam, UUIDs oder Labels zu verwenden, weil man damit einfach auf der sicheren Seite ist.

Labels sind vergebene Bezeichnungen für Dateisysteme. Sie können bei der Einrichtung des Dateisystems oder im Nachhinein erstellt werden. Labels bleiben immer eindeutig, egal, unter welchem Device-Node ein Dateisystem dem System bekannt ist. UUIDs sind generierte eindeutige Werte für Dateisysteme und können wie Labels zur eindeutigen Identifikation unabhängig des Device-Nodes verwendet werden.

Labels können zum Beispiel mittels des Tools e2label gesetzt werden. UUIDs werden automatisch generiert, und können mittels blkid angezeigt werden. Referenzierungen über die UUID oder das Label sind allerdings geringfügig langsamer als die Referenzierung über den Device-Node. Die Reihenfolge der Angaben ist bei allen Definitionen hingegen immer identisch.

  1. Dateisystem
  2. Mountpoint
  3. Dateisystemtyp
  4. Mount-Optionen
  5. Dump- und Pass-Anweisung

Die Dump-Anweisung steht heutzutage üblicher Weise auf 0 und wurde ursprünglich zu Backup-Zwecken verwendet. Es mag vereinzelt noch Anwendungsbereiche geben, in denen mittels dump Backups erstellt werden, auf aktuellen Systemen gibt es allerdings zuverlässigere und schnellere Datensicherungsmethoden, so dass dieser Wert auf 0 belassen werden sollte.

Die Pass-Anweisung wird vom Dateisystem-Test ausgewertet und definiert, in welcher Reihenfolge die Dateisysteme geprüft werden sollen. 0 = Keine Überprüfung, 1 = wird zuerst überprüft, 2 = wird überprüft nachdem alle mit 1 markierten Dateisysteme überprüft wurden.

Beispiele

Es wird ein Dateisystem mittels UUID referenziert. Der Mountpoint für dieses Verzeichnis soll /home sein. Es wird der Dateisystemtyp ext4 verwendet. Da keine besonderen Optionen gesetzt werden sollen, wird die generische Option defaults verwendet. Der dump-Wert steht auf 0 und dieses Dateisystem soll als zweites geprüft werden.

UUID=b5648df0-19b6-4186-9f1a-d470610e8741   /home   ext4   defaults   0 2

Es wird ein DVD-Laufwerk gemountet. Dies geschieht über ein virtuelles Device, da /dev/dvd nur ein Link auf den Device-Node /dev/cd/dvd-1:0:0:0 ist. Dies spielt aber keine Rolle. Mountpoint für das DVD-Laufwerk soll /media/dvd sein. Auf einer DVD können verschiedene Dateisysteme verwendet werden, daher wird als Dateisystemtyp auto verwendet.

Da DVDs gemeinhin als nur-lesbar gelten, wird dies dem System in den Optionen mittels ro mitgeteilt. Das erspart die Fehlermeldung beim Mounten, wenn das System feststellt, dass das Dateisystem nicht beschreibbar ist. Die user-Option besagt, dass das Dateisystem auch vom Benutzer gemountet werden kann. noauto bestimmt, dass das Dateisystem nicht beim Booten automatisch gemountet werden soll, und unhide bestimmt, dass auch versteckte Dateien angezeigt werden sollen.

/dev/dvd   /media/dvd   auto   ro,user,noauto,unhide   0 0

Mittels des Samba-Dateisystems cifs, das der Nachfolger von smbfs ist, wird eine Freigabe data von einem Windows-Server srv unter /media/data gemountet. Als Dateisystem ist hier cifs angegeben, durch Samba wird alles nötige selbständig ermittelt. Die Zugangsdaten-Datei wird gemäß der cifs-Definitionen mittels credentials als Mount-Option übergeben. Pass und Dump stehen hier auf 0.

\\srv\data   /media/data   cifs   credentials=/home/user/.data   0 0

Über ein FUSE-Dateisystem wird ein SSH-Zugang für den Account user auf dem Server lin als Dateisystem unter /media/lin verfügbar gemacht. Als Dateisystemtyp wird hier fuse angegeben. sshfs kümmert sich um alles Nötige. Gemäß sshfs-Vorgaben werden als Optionen User-ID, Gruppen-ID und die umask als Optionen übergeben

sshfs#user@lin:   /media/lin   fuse   uid=user,gid=users,umask=0,allow_other   0 0

Eine vollständige fstab könnte mit den oben angegebenen Dateisystemen wie folgt aussehen. Es ist dabei nicht von Bedeutung, in welcher Reihenfolge die Angaben definiert werden, auch sind die Zwischenräume, Einrückungen, und Abstände nicht von Relevanz. Sie dienen lediglich der Optik. Um Angaben je Zeile zu trennen, bedarf es mindestens eines Leerzeichen oder eines Tabulators. Um Definitionen zu trennen, bedarf es mindestens eines Zeilenumbruchs.

UUID=6f57b2d1-08d8-4404-88dc-118f4d347030   /       ext3   defaults   0 1
UUID=b5648df0-19b6-4186-9f1a-d470610e8741   /home   ext3   defaults   0 2

/dev/dvd          /media/dvd    auto   ro,user,noauto,unhide                    0 0
\\srv\data        /media/data   cifs   credentials=/home/user/.data             0 0
sshfs#user@lin:   /media/lin    fuse   uid=user,gid=users,umask=0,allow_other   0 0

Achtung: Diese fstab entspricht zum Großteil der des Autors. Es ist nicht ratsam, die Angaben 1:1 in die eigene fstab zu übernehmen, da das System nach Übernahme eventuell nicht mehr starten wird.

Siehe auch

Weblinks