Mounten: Unterschied zwischen den Versionen
Boenki (Diskussion | Beiträge) K +link |
Jewox (Diskussion | Beiträge) K /dev/pts und /dev/shm mountet rc.sysinit |
||
Zeile 32: | Zeile 32: | ||
== /etc/fstab == | == /etc/fstab == | ||
[[Bild:Vi_fstab.png|thumb|250px|Anzeige einer umfangreichen fstab in [[Vim]]]] | [[Bild:Vi_fstab.png|thumb|250px|Anzeige einer umfangreichen fstab in [[Vim]]]] | ||
In der [[fstab]] werden zeilenweise alle permanenten Mounts definiert. | 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. | 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. | ||
Zeile 80: | Zeile 77: | ||
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. | 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=6f57b2d1-08d8-4404-88dc-118f4d347030 / ext3 defaults 0 1 | ||
UUID=b5648df0-19b6-4186-9f1a-d470610e8741 /home ext3 defaults 0 2 | UUID=b5648df0-19b6-4186-9f1a-d470610e8741 /home ext3 defaults 0 2 |
Version vom 21. Juni 2011, 18:58 Uhr
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 „/etc/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 Verszeichnisses 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 „mount“-Manpage.
/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.
- Dateisystem
- Mountpoint
- Dateisystemtyp
- Mount-Optionen
- 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 „ext3“ 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 ext3 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.