mount(2) Dateisystem einhängen

ÜBERSICHT

#include <sys/mount.h>


int mount(const char *quelle, const char *Ziel,
const char *Dateisystemtyp,
unsigned long Einhängeschalter,
const void *Daten);

BESCHREIBUNG

mount() hängt das durch Quelle angegebene Dateisystem (was oft ein Gerätename ist, aber auch ein Verzeichnisname oder ein Platzhalter sein kann) in das Verzeichnis Ziel ein.

Zum Einhängen von Dateisystemen sind geeignete Rechte erforderlich (Linux: CAP_SYS_ADMIN-Capability).

Seit Linux 2.4 kann ein einzelnes Dateisystem an mehreren Einhängepunkten sichtbar sein und mehrere Einhängungen können auf dem gleichen Einhängepunkt gestapelt werden.

Die Werte für das Argument dateisystemtyp, die der Kernel unterstützt, werden in /proc/filesystems aufgelistet (z.B. »minix«, »ext2«, »ext3«, »jfs«, »xfs«, »reiserfs«, »msdos«, »proc«, »nfs«, »iso9660«). Weitere Typen könnten verfügbar werden, wenn geeignete Module geladen sind.

Das Argument Einhängeschalter hat die Magische Zahl 0xC0ED (MS_MGC_VAL) in den oberen 16 Bit (dies wurde in den Kernel-Versionen vor 2.4 benötigt, ist aber nicht länger notwendig und wird ignoriert, falls es angegeben wird) und verschiedene Einhängeschalter in den unteren 16 Bit:

MS_BIND (Linux 2.4 aufwärts)
Ein Einhängen per »Bind« macht eine Datei oder ein Unterverzeichnis an einem anderen Punkt innerhalb eines Dateisystems sichtbar. Einhängen per »Bind« darf Dateisystemgrenzen überqueren und sich über chroot(2)-Jails erstrecken. Die Argumente Dateisystemtyp und Daten werden ignoriert. Vor Linux 2.6.26 wurden außerdem Einhängeschalter ignoriert (das Einhängen per »Bind« hat die gleichen Einhängeoptionen wie der darunterliegende Einhängepunkt).
MS_DIRSYNC (seit Linux 2.5.19)
Verzeichniswechsel auf diesem System synchron ausführen.(Diese Eigenschaft kann für einzelne Verzeichnisse oder Unterverzeichnisse durch Benutzung von chattr(1) erreicht werden.)
MS_LAZYTIME (seit Linux 4.0)
Reduce on-disk updates of inode timestamps (atime, mtime, ctime) by maintaining these changes only in memory. The on-disk timestamps are updated only when:
(a)
the inode needs to be updated for some change unrelated to file timestamps;
(b)
the application employs fsync(2), syncfs(2), or sync(2);
(c)
an undeleted inode is evicted from memory; or
(d)
more than 24 hours have passed since the inode was written to disk.
This mount option significantly reduces writes needed to update the inode's timestamps, especially mtime and atime. However, in the event of a system crash, the atime and mtime fields on disk might be out of date by up to 24 hours.

Examples of workloads where this option could be of significant benefit include frequent random writes to preallocated files, as well as cases where the MS_STRICTATIME mount option is also enabled. (The advantage of combining MS_STRICTATIME and MS_LAZYTIME is that stat(2) will return the correctly updated atime, but the atime updates will be flushed to disk only in the cases listed above.)

MS_MANDLOCK
Permit mandatory locking on files in this filesystem. (Mandatory locking must still be enabled on a per-file basis, as described in fcntl(2).) Since Linux 4.5, this mount option requires the CAP_SYS_ADMIN capability.
MS_MOVE
Ein Unterverzeichnis verschieben. quelle gibt einen existierenden Einhängepunkt und Ziel den neuen Ort an. Das Verschieben ist atomar: Das Unterverzeichnis wird zu keinem Zeitpunkt ausgehängt. Die Argumente Dateisystemtyp, Einhängeschalter und Daten werden ignoriert.
MS_NOATIME
Nicht die Zugriffszeiten für (alle Typen von) Dateien auf diesem Dateisystem aktualisieren.
MS_NODEV
Keinen Zugriff auf Geräte (Spezialdateien) auf diesem Dateisystem erlauben.
MS_NODIRATIME
Nicht die Zugriffszeiten für Verzeichnisse auf diesem Dateisystem aktualisieren. Dieser Schalter stellt eine Untermenge der Funktionalität von MS_NOATIME bereit; sprich MS_NOATIME impliziert MS_NODIRATIME.
MS_NOEXEC
Nicht erlauben, dass Programme von diesem Dateisystem ausgeführt werden.
MS_NOSUID
Die Bits set-user-ID und set-user-group-ID nicht berücksichtigen, wenn Programme von diesem Dateisystem ausgeführt werden.
MS_RDONLY
Dateisystem nur zum Lesen einhängen.
MS_RELATIME (seit Linux 2.6.20)
Wenn auf eine Datei auf diesem Dateisystem zugegriffen wird, nur die letzte Zugriffzeit der Datei (atime) aktualisieren, falls der aktuelle Wert von »atime« kleiner oder gleich der letzten Änderungszeit der Datei (mtime) oder der Zeit der letzten Statusänderung (ctime) ist. Diese Option ist für Programme wie mutt(1) sinnvoll, die wissen müssen, ob eine Datei seit der letzten Änderung gelesen wurde. Seit Linux 2.6.30 verhält sich der Kernel, wie es dieser Schalter vorgibt (falls nicht MS_NOATIME angegeben wurde) und der Schalter MS_STRICTATIME wird benötigt, um traditionelle Semantiken zu erhalten. Zusätzlich wird seit Linux 2.6.30 die letzte Zugriffszeit der Datei immer aktualisiert, wenn sie älter als einen Tag ist.
MS_REMOUNT
Eine existierende Einhängung erneut einhängen. Dies erlaubt Ihnen, die Einhängeschalter und Daten von einer existierenden Einhängung zu ändern, ohne das Dateisystem aus- und wieder einzuhängen. Ziel sollte der gleiche Wert sein, wie beim anfänglichen Aufruf von mount() angegeben wurde; Quelle und Dateisystemtyp werden ignoriert. Die Argumente Einhängeschalter und Daten sollten den im originalen mount()-Aufruf verwendeten Werten entsprechen, außer für jene Parameter, die bewusst geändert werden.

Die folgenden Einhängeschalter können geändert werden: MS_RDONLY, MS_SYNCHRONOUS, MS_MANDLOCK; vor Kernel 2.6.16 konnten außerdem die folgenden geändert werden: MS_NOATIME und MS_NODIRATIME; und zusätzlich, vor Kernel 2.4.10, konnten außerdem die folgenden geändert werden: MS_NOSUID, MS_NODEV, MS_NOEXEC.

MS_SILENT (seit Linux 2.6.17)
Die Anzeige bestimmter Warnungen (printk()) im Kernel-Protokoll unterdrücken. Dieser Schalter ersetzt den falsch benannten und veralteten Schalter MS_VERBOSE (verfügbar seit Linux 2.4.12), der die gleiche Bedeutung hat.
MS_STRICTATIME (seit Linux 2.6.30)
Die letzte Zugriffszeit (atime) immer aktualisieren, wenn auf Dateien auf diesem Dateisystem zugegriffen wird (dies war das Standardverhalten vor Linux 2.6.30). Die Angabe dieses Schalters überschreibt den Effekt der Schalter MS_NOATIME und MS_RELATIME.
MS_SYNCHRONOUS
Schreiben auf diesem Dateisystem synchronisieren (als ob der Schalter O_SYNC für open(2) für alle offenen Dateien auf diesem Dateisystem angegeben worden wäre).

Von Linux 2.4 aufwärts können die Schalter MS_NODEV, MS_NOEXEC und MS_NOSUID pro Einhängepunkt gesetzt werden. Von Linux 2.6.16 aufwärts können auch die Schalter MS_NOATIME und MS_NODIRATIME pro Einhängepunkt gesetzt werden. Außderdem kann der Schalter MS_RELATIME pro Einhängepunkt gesetzt werden.

Das Argument Daten wird von den verschiedenen Dateisystemen interpretiert. Typischerweise ist es eine Zeichenkette aus Optionen, die durch Kommata getrennt sind, und die von diesem Dateisystem verstanden werden. Lesen Sie mount(8), um weitere Einzelheiten über die verfügbaren Optionen für jeden Dateisystemtyp zu erhalten.

RÜCKGABEWERT

Bei Erfolg wird Null zurückgegeben. Bei einem Fehler wird -1 zurückgegeben und errno entsprechend gesetzt.

FEHLER

Die im Folgenden aufgeführten Fehlerwerte resultieren aus vom Dateisystemtyp unabhängigen Fehlern. Jeder Dateisystemtyp kann seine eigenen speziellen Fehler und sein eigenes spezielles Verhalten aufweisen. Lesen Sie den Linux-Kernel-Quellcode, um Einzelheiten zu erfahren.
EACCES
Ein Bestandteil eines Pfades kann nicht durchsucht werden. (Siehe auch path_resolution(7).) Oder es wurde versucht, ein Dateisystem mit reinem Lesezugriff einzuhängen, ohne den Schalter MS_RDONLY anzugeben. Oder das blockorientierte Gerät befindet sich auf einem Dateisystem, das mit der Option MS_NODEV eingehängt ist.
EBUSY
Quelle ist bereits eingehängt. Oder es kann kann nicht neu mit reinem Lesezugriff eingehängt werden, weil noch Dateien darauf mit Schreibzugriff geöffnet sind. Oder es kann nicht auf Ziel eingehängt werden, weil Ziel immer noch beschäftigt ist (es ist Arbeitsverzeichnis eines Threads, Einhängepunkt eines anderen Gerätes, hat geöffnete Dateien, etc.).
EFAULT
Eines der Zeiger-Argumente zeigt außerhalb des Adressraums der Benutzer.
EINVAL
Quelle hat einen ungültigen Superblock. Oder es wurde ein erneutes Einhängen (MS_REMOUNT) versucht, aber Quelle war bereits auf ziel eingehängt. Oder es wurde versucht, zu verschieben (MS_MOVE), Quelle war jedoch kein Einhängepunkt oder '/'.
ELOOP
Bei der Auflösung des Pfadnamens wurden zu viele Links vorgefunden. Oder es wurde versucht, zu verschieben, während Ziel unterhalb von Quelle lag.
EMFILE
(Falls kein blockorientiertes Gerät benötigt wird:) Die Tabelle der Platzhaltergeräte ist voll.
ENAMETOOLONG
Ein Pfadname war länger als MAXPATHLEN.
ENODEV
Der Dateisystemtyp ist nicht im Kernel konfiguriert.
ENOENT
Ein Pfadname war leer oder hatte eine nicht existierende Komponente.
ENOMEM
Der Kernel konnte keine freie Seite reservieren, um Dateinamen oder Daten hinein zu kopieren.
ENOTBLK
Die Quelle ist kein blockorientiertes Gerät (und ein Gerät war erforderlich).
ENOTDIR
Das Ziel oder ein Präfix der Quelle ist kein Verzeichnis.
ENXIO
Die Major-Nummer des blockorientierten Gerätes Quelle liegt außerhalb des Bereichs.
EPERM
Der Aufrufende verfügt nicht über die erforderlichen Rechte.

VERSIONEN

Die Definitionen von MS_DIRSYNC, MS_MOVE, MS_REC, MS_RELATIME und MS_STRICTATIME wurden in der Version 2.12 in die Glibc-Header aufgenommen.

KONFORM ZU

Diese Funktion ist Linux-spezifisch und sollte nicht in Programmen benutzt werden, die portabel gehalten werden sollen.

ANMERKUNGEN

Der Originalschalter MS_SYNC wurde in 1.1.69 in MS_SYNCHRONOUS umbenannt, als ein anderer MS_SYNC zu <mman.h> hinzugefügt wurde.

Vor Linux 2.4 würde ein Versuch mit EPERM fehlschlagen, ein Set-User-ID- oder Set-Group-ID-Programm auf einem Dateisystem auszuführen, das mit MS_NOSUID eingehängt ist. Seit Linux 2.4 werden die Bits Set-User-ID und Set-User-Group-ID in diesem Fall einfach stillschweigend ignoriert.

Namensräume pro Prozess

Seit Kernel 2.4.19 stellt Linux Einhänge-Namensräume pro Prozess bereit. Ein Einhänge-Namensraum ist eine Zusammenstellung von eingehängten Dateisystemen, die für einen Prozess sichtbar sind. Einhängepunkt-Namensräume können (und werden gewöhnlich) gemeinsam von mehreren Prozessen benutzt und Änderungen am Namensraum (d.h. Ein- und Aushängen) durch einen Prozess sind für alle anderen Prozesse sichtbar, die den gleichen Namensraum gemeinsam verwenden. (Die Situation in Linux vor 2.4.19 kann so betrachtet werden, als ob ein einzelner Namensraum von jedem Prozess im System gemeinsam benutzt würde.)

Ein untergeordneter Prozess, der durch fork(2) erzeugt wurde, nutzt den Einhänge-Namensraum seines übergeordneten Prozesses; der Einhänge-Namensraum wird über ein execve(2) erhalten.

Ein Prozess kann einen privat eingehängten Namensraum erhalten, falls er unter Benutzung des Schalters CLONE_NEWNS von clone(2) erstellt wurde. In diesem Fall wird sein neuer Namensraum als eine Kopie des Namensraums des Prozesses, der clone(2) aufrief, initialisiert oder er ruft unshare(2) mit dem Schalter CLONE_NEWNS auf, was veranlasst, dass der Einhänge-Namensraum des Aufrufenden eine private Kopie des Namensraums erhält, der vorher mit anderen Prozessen gemeinsam benutzt wurde, so dass zukünftiges Ein- und Aushängen durch den Aufrufenden für andere Prozesse unsichtbar ist (außer Kindprozesse, die der Aufrufende hinterher erzeugt) und umgekehrt.

Die Linux-spezifische Datei /proc/PID/mounts stellt die Liste der Einhängepunkte in dem Einhänge-Namensraum des Prozesses mit der angegebenen ID dar; lesen Sie proc(5), um Einzelheiten zu erfahren.

KOLOPHON

Diese Seite ist Teil der Veröffentlichung 4.06 des Projekts Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

Die deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother <[email protected]>, Chris Leick <[email protected]> und Mario Blättermann <[email protected]> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an <[email protected]>.