Linux mount und umount: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
| (7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
=mount= | =mount= | ||
<code>mount</code> fügt die Dateisysteme der verschiedenen Massenspeicher zu einem einzigen Verzeichnisbaum zusammen. Die Partitionen und Laufwerke sind als Gerätedateien unter <code>/dev</code> abgebildet; <code>mount</code> setzt das Dateisystem einer Partition auf ein leeres Verzeichnis, den '''Mountpunkt'''. | |||
Die Liste der eingehängten Dateisysteme führt der Kernel unter <code>/proc/mounts</code>. <code>/etc/mtab</code> ist auf aktuellen Systemen nur noch ein Symlink darauf. Wird ein <code>mount</code>-Aufruf unvollständig angegeben, ergänzt das Kommando die fehlenden Angaben aus <code>/etc/fstab</code>. | |||
==Schema== | |||
==Schema== | |||
mount [Optionen] Gerät Mountpunkt | mount [Optionen] Gerät Mountpunkt | ||
==Wichtige Optionen== | |||
{| class="wikitable" | {| class="wikitable" | ||
! Option !! Wirkung | |||
|- | |- | ||
| -a | | <code>-a</code> || alle in <code>/etc/fstab</code> mit <code>auto</code> markierten Dateisysteme einhängen | ||
| alle | |||
|- | |- | ||
| - | | <code>-t TYP</code> || Dateisystemtyp angeben (ext4, xfs, iso9660 …); meist automatisch erkannt | ||
| | |||
|- | |- | ||
| - | | <code>-o LISTE</code> || durch Kommata getrennte Liste von Mount-Optionen | ||
| | |||
|- | |- | ||
| - | | <code>-r</code> || nur lesend einhängen (wie <code>-o ro</code>) | ||
| | |||
|- | |- | ||
| -v | | <code>-v</code> || ausführliche Ausgabe | ||
| | |||
|} | |} | ||
==Eine Partition einhängen== | |||
*mount /dev/sdb1 /mnt | |||
Mit ausdrücklichem Typ: | |||
*mount -t ext4 /dev/sdb1 /mnt | |||
Eine CD/DVD nur lesend: | |||
*mount -t iso9660 -o ro /dev/sr0 /media/cdrom | |||
*mount -t iso9660 -o ro /dev/ | |||
Ohne | ==Eingehängte Dateisysteme anzeigen== | ||
Ohne Argumente listet <code>mount</code> die aktuelle Liste auf. | |||
*mount | *mount | ||
/dev/sda1 on / type | |||
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro) | |||
/dev/sdb1 on /mnt type | /dev/sdb1 on /mnt type ext4 (rw,relatime) | ||
/dev/sr0 on /media/ | /dev/sr0 on /media/cdrom type iso9660 (ro,nosuid,nodev) | ||
Übersichtlicher – als Baum, wahlweise gefiltert nach Ziel: | |||
*findmnt /mnt | |||
=Allgemeine Mount-Optionen= | =Allgemeine Mount-Optionen= | ||
Hinter <code>-o</code> stehen die Optionen für die Partition. Diese gelten für alle Dateisystemtypen: | |||
{| | |||
{| class="wikitable" | |||
! Option | ! Option !! Erklärung | ||
! Erklärung | |||
|- | |- | ||
| | | <code>defaults</code> || Kurzform für <code>rw,suid,dev,exec,auto,nouser,async</code> | ||
| | |||
|- | |- | ||
| | | <code>rw</code> / <code>ro</code> || les-/schreibbar bzw. nur lesbar | ||
| | |||
|- | |- | ||
| | | <code>auto</code> / <code>noauto</code> || bei <code>mount -a</code> (und beim Booten) mit einhängen oder nicht | ||
| | |||
|- | |- | ||
| | | <code>exec</code> / <code>noexec</code> || Ausführen von Programmen erlauben oder verbieten | ||
| | |||
|- | |- | ||
| | | <code>suid</code> / <code>nosuid</code> || SUID-/SGID-Bits beachten oder ignorieren | ||
| | |||
|- | |- | ||
| | | <code>dev</code> / <code>nodev</code> || Gerätedateien interpretieren oder nicht | ||
| | |||
|- | |- | ||
| | | <code>user</code> / <code>nouser</code> || auch normalen Nutzern das Einhängen erlauben oder nur root | ||
| | |||
|- | |- | ||
| | | <code>atime</code> / <code>noatime</code> || Zugriffszeit bei jedem Lesen aktualisieren oder nicht (<code>noatime</code> bringt Tempo) | ||
| | |||
|- | |- | ||
| | | <code>remount</code> || bereits eingehängtes Dateisystem mit neuen Optionen neu einhängen | ||
| | |||
|- | |- | ||
| | | <code>loop</code> || eine Image-Datei über ein Loop-Gerät einhängen | ||
| | |||
|- | |- | ||
| | | <code>bind</code> || ein Verzeichnis zusätzlich an einer zweiten Stelle einblenden | ||
| | |||
|- | |- | ||
| | | <code>acl</code> || POSIX-ACLs aktivieren | ||
| | |||
|- | |||
|} | |} | ||
==Optionen im laufenden Betrieb ändern== | |||
Mit <code>remount</code> lässt sich eine Option setzen, ohne vorher auszuhängen. Beispiel: eine Partition nachträglich auf <code>noexec</code> stellen. | |||
*mount -o remount,noexec /mnt | |||
==Ein Verzeichnis an zweiter Stelle einblenden== | |||
<code>bind</code> zeigt denselben Verzeichnisinhalt an zwei Pfaden – nützlich, um einem Dienst nur einen Teilbaum sichtbar zu machen. | |||
*mount --bind /daten/web /var/www/html | |||
=umount= | =umount= | ||
{| | <code>umount</code> hängt ein Dateisystem wieder aus. Dabei läuft automatisch ein <code>sync</code>, damit alle im Cache gehaltenen Daten geschrieben werden – deshalb einen USB-Stick immer erst aushängen, bevor man ihn abzieht. | ||
! Option | |||
! | Ausgehängt werden kann nur ein '''inaktives''' Dateisystem: kein Prozess darf eine Datei darin geöffnet haben oder ein Verzeichnis darin als Arbeitsverzeichnis benutzen, und es darf kein weiteres Dateisystem darüber eingehängt sein. Sonst kommt <code>device is busy</code>. | ||
==Optionen== | |||
{| class="wikitable" | |||
! Option !! Wirkung | |||
|- | |- | ||
| - | | <code>-a</code> || alle in <code>/etc/fstab</code> aufgeführten Dateisysteme aushängen | ||
| | |||
|- | |- | ||
| -t | | <code>-t TYP</code> || nur Dateisysteme des angegebenen Typs aushängen | ||
| | |||
|- | |- | ||
| -l lazy | | <code>-l</code> || ''lazy'': den Mount sofort aus dem Baum nehmen, den Datenträger aber erst freigeben, wenn der letzte Zugriff endet | ||
|- | |- | ||
| <code>-v</code> || ausführliche Ausgabe | |||
|} | |} | ||
== | |||
==Aushängen – über Gerät oder Mountpunkt== | |||
* | Beides ist möglich und tut dasselbe. Über das Gerät: | ||
* | *umount /dev/sdb1 | ||
*mount - | Oder über den Mountpunkt: | ||
* | *umount /mnt | ||
* | =Wenn das Aushängen hängt: „device is busy"= | ||
Belegt ein Prozess das Dateisystem, verweigert <code>umount</code> den Dienst: | |||
umount: /mnt: target is busy. | |||
==Den Blockierer finden== | |||
<code>lsof</code> zeigt offene Dateien unterhalb des Mountpunkts, <code>fuser</code> die Prozesse mitsamt PID. | |||
*lsof /mnt | |||
*fuser -vm /mnt | |||
Danach den Prozess sauber beenden oder aus dem Verzeichnis herausgehen – oft ist es nur eine Shell, die noch im Mountpunkt steht. | |||
==Notausgang: lazy unmount== | |||
Lässt sich der Blockierer nicht beseitigen, nimmt <code>-l</code> den Mount sofort aus dem Baum. Der Datenträger wird freigegeben, sobald der letzte Zugriff endet. | |||
*umount -l /mnt | |||
Als grobes Mittel kann <code>fuser</code> die Blockierer auch direkt abschießen (mit Bedacht einsetzen): | |||
*fuser -km /mnt | |||
=Aufgaben= | |||
Vorbereitung: drei Datenpartitionen auf <code>/dev/sdb</code> (<code>/dev/sdb1</code> bis <code>/dev/sdb3</code>), jeweils mit einem Dateisystem. '''<code>/dev/sda</code> bleibt unberührt.''' Die Mountpunkte vorher anlegen. | |||
* Legen Sie die Mountpunkte /mnt/1part, /mnt/2part und /mnt/3part an. | |||
<!-- Lösung: mkdir -p /mnt/1part /mnt/2part /mnt/3part --> | |||
* Mounten Sie die erste Partition unter /mnt/1part. | |||
<!-- Lösung: mount /dev/sdb1 /mnt/1part --> | |||
* Mounten Sie die zweite Partition unter /mnt/2part mit der Option noatime. | |||
<!-- Lösung: mount -o noatime /dev/sdb2 /mnt/2part --> | |||
* Hängen Sie die erste Partition mit remount zusätzlich auf noexec um, ohne sie auszuhängen. | |||
<!-- Lösung: mount -o remount,noexec /mnt/1part --> | |||
* Prüfen Sie mit findmnt, ob die Optionen gesetzt sind. | |||
<!-- Lösung: findmnt /mnt/1part bzw. findmnt /mnt/2part --> | |||
* Mounten Sie die dritte Partition unter /mnt/3part nur lesend. | |||
<!-- Lösung: mount -o ro /dev/sdb3 /mnt/3part (oder: mount -r /dev/sdb3 /mnt/3part) --> | |||
* Wechseln Sie mit cd nach /mnt/2part und versuchen Sie, die Partition auszuhängen. Was passiert, und wie finden Sie den Blockierer? | |||
<!-- Lösung: umount schlägt mit "target is busy" fehl, weil die eigene Shell im Verzeichnis steht. | |||
lsof /mnt/2part oder fuser -vm /mnt/2part zeigt den Prozess. | |||
Nach cd / lässt sich die Partition aushängen. --> | |||
* Hängen Sie die zweite Partition aus – über den Mountpunkt. | |||
<!-- Lösung: umount /mnt/2part --> | |||
* Blenden Sie das Verzeichnis /mnt/1part/docs zusätzlich unter /mnt/gemeinsam ein (bind mount) und prüfen Sie das Ergebnis mit findmnt. | |||
<!-- Lösung: | |||
mkdir /mnt/gemeinsam | |||
mount --bind /mnt/1part/docs /mnt/gemeinsam | |||
findmnt /mnt/gemeinsam | |||
--> | |||
Aktuelle Version vom 20. August 2026, 05:21 Uhr
mount
mount fügt die Dateisysteme der verschiedenen Massenspeicher zu einem einzigen Verzeichnisbaum zusammen. Die Partitionen und Laufwerke sind als Gerätedateien unter /dev abgebildet; mount setzt das Dateisystem einer Partition auf ein leeres Verzeichnis, den Mountpunkt.
Die Liste der eingehängten Dateisysteme führt der Kernel unter /proc/mounts. /etc/mtab ist auf aktuellen Systemen nur noch ein Symlink darauf. Wird ein mount-Aufruf unvollständig angegeben, ergänzt das Kommando die fehlenden Angaben aus /etc/fstab.
Schema
mount [Optionen] Gerät Mountpunkt
Wichtige Optionen
| Option | Wirkung |
|---|---|
-a |
alle in /etc/fstab mit auto markierten Dateisysteme einhängen
|
-t TYP |
Dateisystemtyp angeben (ext4, xfs, iso9660 …); meist automatisch erkannt |
-o LISTE |
durch Kommata getrennte Liste von Mount-Optionen |
-r |
nur lesend einhängen (wie -o ro)
|
-v |
ausführliche Ausgabe |
Eine Partition einhängen
- mount /dev/sdb1 /mnt
Mit ausdrücklichem Typ:
- mount -t ext4 /dev/sdb1 /mnt
Eine CD/DVD nur lesend:
- mount -t iso9660 -o ro /dev/sr0 /media/cdrom
Eingehängte Dateisysteme anzeigen
Ohne Argumente listet mount die aktuelle Liste auf.
- mount
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro) /dev/sdb1 on /mnt type ext4 (rw,relatime) /dev/sr0 on /media/cdrom type iso9660 (ro,nosuid,nodev)
Übersichtlicher – als Baum, wahlweise gefiltert nach Ziel:
- findmnt /mnt
Allgemeine Mount-Optionen
Hinter -o stehen die Optionen für die Partition. Diese gelten für alle Dateisystemtypen:
| Option | Erklärung |
|---|---|
defaults |
Kurzform für rw,suid,dev,exec,auto,nouser,async
|
rw / ro |
les-/schreibbar bzw. nur lesbar |
auto / noauto |
bei mount -a (und beim Booten) mit einhängen oder nicht
|
exec / noexec |
Ausführen von Programmen erlauben oder verbieten |
suid / nosuid |
SUID-/SGID-Bits beachten oder ignorieren |
dev / nodev |
Gerätedateien interpretieren oder nicht |
user / nouser |
auch normalen Nutzern das Einhängen erlauben oder nur root |
atime / noatime |
Zugriffszeit bei jedem Lesen aktualisieren oder nicht (noatime bringt Tempo)
|
remount |
bereits eingehängtes Dateisystem mit neuen Optionen neu einhängen |
loop |
eine Image-Datei über ein Loop-Gerät einhängen |
bind |
ein Verzeichnis zusätzlich an einer zweiten Stelle einblenden |
acl |
POSIX-ACLs aktivieren |
Optionen im laufenden Betrieb ändern
Mit remount lässt sich eine Option setzen, ohne vorher auszuhängen. Beispiel: eine Partition nachträglich auf noexec stellen.
- mount -o remount,noexec /mnt
Ein Verzeichnis an zweiter Stelle einblenden
bind zeigt denselben Verzeichnisinhalt an zwei Pfaden – nützlich, um einem Dienst nur einen Teilbaum sichtbar zu machen.
- mount --bind /daten/web /var/www/html
umount
umount hängt ein Dateisystem wieder aus. Dabei läuft automatisch ein sync, damit alle im Cache gehaltenen Daten geschrieben werden – deshalb einen USB-Stick immer erst aushängen, bevor man ihn abzieht.
Ausgehängt werden kann nur ein inaktives Dateisystem: kein Prozess darf eine Datei darin geöffnet haben oder ein Verzeichnis darin als Arbeitsverzeichnis benutzen, und es darf kein weiteres Dateisystem darüber eingehängt sein. Sonst kommt device is busy.
Optionen
| Option | Wirkung |
|---|---|
-a |
alle in /etc/fstab aufgeführten Dateisysteme aushängen
|
-t TYP |
nur Dateisysteme des angegebenen Typs aushängen |
-l |
lazy: den Mount sofort aus dem Baum nehmen, den Datenträger aber erst freigeben, wenn der letzte Zugriff endet |
-v |
ausführliche Ausgabe |
Aushängen – über Gerät oder Mountpunkt
Beides ist möglich und tut dasselbe. Über das Gerät:
- umount /dev/sdb1
Oder über den Mountpunkt:
- umount /mnt
Wenn das Aushängen hängt: „device is busy"
Belegt ein Prozess das Dateisystem, verweigert umount den Dienst:
umount: /mnt: target is busy.
Den Blockierer finden
lsof zeigt offene Dateien unterhalb des Mountpunkts, fuser die Prozesse mitsamt PID.
- lsof /mnt
- fuser -vm /mnt
Danach den Prozess sauber beenden oder aus dem Verzeichnis herausgehen – oft ist es nur eine Shell, die noch im Mountpunkt steht.
Notausgang: lazy unmount
Lässt sich der Blockierer nicht beseitigen, nimmt -l den Mount sofort aus dem Baum. Der Datenträger wird freigegeben, sobald der letzte Zugriff endet.
- umount -l /mnt
Als grobes Mittel kann fuser die Blockierer auch direkt abschießen (mit Bedacht einsetzen):
- fuser -km /mnt
Aufgaben
Vorbereitung: drei Datenpartitionen auf /dev/sdb (/dev/sdb1 bis /dev/sdb3), jeweils mit einem Dateisystem. /dev/sda bleibt unberührt. Die Mountpunkte vorher anlegen.
- Legen Sie die Mountpunkte /mnt/1part, /mnt/2part und /mnt/3part an.
- Mounten Sie die erste Partition unter /mnt/1part.
- Mounten Sie die zweite Partition unter /mnt/2part mit der Option noatime.
- Hängen Sie die erste Partition mit remount zusätzlich auf noexec um, ohne sie auszuhängen.
- Prüfen Sie mit findmnt, ob die Optionen gesetzt sind.
- Mounten Sie die dritte Partition unter /mnt/3part nur lesend.
- Wechseln Sie mit cd nach /mnt/2part und versuchen Sie, die Partition auszuhängen. Was passiert, und wie finden Sie den Blockierer?
- Hängen Sie die zweite Partition aus – über den Mountpunkt.
- Blenden Sie das Verzeichnis /mnt/1part/docs zusätzlich unter /mnt/gemeinsam ein (bind mount) und prüfen Sie das Ergebnis mit findmnt.