Scroll to navigation

MOUNT(2) Linux-Programmierhandbuch MOUNT(2)

BEZEICHNUNG

mount - 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 Pfadname, der sich auf ein Gerät bezieht, ist; es kann aber auch der Pfadname eines Verzeichnisses oder einer Datei oder eine Platzhalterzeichenkette sein) an dem durch den Pfadnamen in target festgelegten Ort (einem Verzeichnis oder einer Datei) ein.

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

Die Werte für das Argument dateisystemtyp, die der Kernel unterstützt, werden in /proc/filesystems aufgelistet (z.B. »btrfs«, »ext4«, »jfs«, »xfs«, »vfat«, »fuse«, »tmpfs«, »cgroup«, »proc«, »mqueue«, »nfs«, »cifs«, »iso9660« ). Weitere Typen könnten verfügbar werden, wenn geeignete Module geladen sind.

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.

Ein Aufruf von mount() führt eines einer Reihe von allgemeinen Aktionsarten durch, abhängig von den in Einhängeschalter festgelegten Bits. Die Wahl der auszuführenden Aktion wird durch Testen der in Einhängeschalter gesetzten Bits bestimmt, wobei die Tests in der hier aufgeführten Reihenfolge abgearbeitet werden:

  • Eine bestehende Einhängung neu einhängen: Einhängeschalter enthält MS_REMOUNT.
  • Create a bind mount: mountflags includes MS_BIND.
  • Change the propagation type of an existing mount: mountflags includes one of MS_SHARED, MS_PRIVATE, MS_SLAVE, or MS_UNBINDABLE.
  • Eine bestehende Einhängung an einen neuen Ort verschieben: Einhängeschalter enthält MS_MOVE.
  • Eine neue Einhängung erstellen: Einhängeschalter enthält keinen der obigen Schalter.

Jede dieser Aktionen wird später auf dieser Seite genauer beschrieben. Wie weiter unten beschrieben ist, können weitere Schalter in Einhängeschalter festgelegt werden, um das Verhalten von mount() zu verändern.

Zusätzliche Einhängeschalter

Die folgende Liste beschreibt zusätzliche Schalter, die in Einhängeschalter festgelegt werden können. Beachten Sie, dass einige Aktionstypen einige oder alle dieser Schalter ignorieren, wie dies später auf dieser Seite beschrieben ist.
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)
Reduziert die Aktualiserung der Inode-Zeitstempel (Atime, Mtime, Ctime) auf der Platte, indem diese Änderungen nur im Speicher verwaltet werden. Die Zeitstempel auf der Platte werden nur aktualisiert, wenn:
(a)
der Inode aus einem anderen Grund (neben den Dateizeitstempeln) aktualisiert werden muss;
(b)
die Anwendung fsync(2), syncfs(2) oder sync(2) einsetzt;
(c)
ein wiederhergestellter Inode wird aus dem Speicher entfernt; oder
(d)
mehr als 24 Stunden vergangen sind, seitdem der Inode auf Platte geschrieben wurde.
Diese Einhängeoption reduziert die Schreibaktionen für die Aktualisierung der Inode-Zeitstempel signifikant, besonders für Mtime und Atime. Im Falle eines Systemabsturzes könnten die Atime- und Mtime-Felder allerdings bis zu 24 Stunden veraltet sein.

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
Zwingendes Sperren von Dateien auf diesem Dateisystem erlauben. (Zwingendes Sperren muss immer noch für jede Datei eingeschaltet werden, wie es in fcntl(2) beschrieben ist.) Seit Linux 4.5 benötigt diese Einhängeoption die Capability CAP_SYS_ADMIN.
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 und Datei-Capabilities nicht berücksichtigen, wenn Programme von diesem Dateisystem ausgeführt werden.
MS_RDONLY
Dateisystem nur zum Lesen einhängen.
MS_REC (seit Linux 2.4.11)
Used in conjunction with MS_BIND to create a recursive bind mount, and in conjunction with the propagation type flags to recursively change the propagation type of all of the mounts in a subtree. See below for further details.
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_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.

Eine existierende Einhängung erneut einhängen

Die existierende Einhängung kann erneut eingehängt werden, indem MS_REMOUNT in den Einhängeschalter festgelegt wird. 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 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_LAZYTIME, MS_MANDLOCK, MS_NOATIME, MS_NODEV, MS_NODIRATIME, MS_NOEXEC, MS_NOSUID, MS_RELATIME, MS_RDONLY und MS_SYNCHRONOUS. Versuche, die Einstellung des Schalters MS_DIRSYNC zu ändern, werden ohne Rückmeldung ignoriert.

Seit Linux 3.17 erhält die Neueinhänge-Aktion die bestehenden Werte der Schalter MS_NOATIME, MS_NODIRATIME, MS_RELATIME und MS_STRICTATIME, falls keiner davon explizit angegeben wurde, statt als Vorgabe MS_RELATIME zu verwenden.

Since Linux 2.6.26, this flag can also be used to make an existing bind mount read-only by specifying mountflags as:

MS_REMOUNT | MS_BIND | MS_RDONLY

Note that only the MS_RDONLY setting of the bind mount can be changed in this manner.

Creating a bind mount

If mountflags includes MS_BIND (available since Linux 2.4), then perform a bind mount. A bind mount makes a file or a directory subtree visible at another point within the single directory hierarchy. Bind mounts may cross filesystem boundaries and span chroot(2) jails.

Die Argumente Dateisystemtyp und Daten werden ignoriert.

The remaining bits in the mountflags argument are also ignored, with the exception of MS_REC. (The bind mount has the same mount options as the underlying mount point.) However, see the discussion of remounting above, for a method of making an existing bind mount read-only.

By default, when a directory is bind mounted, only that directory is mounted; if there are any submounts under the directory tree, they are not bind mounted. If the MS_REC flag is also specified, then a recursive bind mount operation is performed: all submounts under the source subtree (other than unbindable mounts) are also bind mounted at the corresponding location in the target subtree.

Changing the propagation type of an existing mount

If mountflags includes one of MS_SHARED, MS_PRIVATE, MS_SLAVE, or MS_UNBINDABLE (all available since Linux 2.6.15), then the propagation type of an existing mount is changed. If more than one of these flags is specified, an error results.

The only flags that can be used with changing the propagation type are MS_REC and MS_SILENT.

Die Argumente Quelle, Dateisystemtyp und Daten werden ignoriert.

The meanings of the propagation type flags are as follows:

MS_SHARED
Make this mount point shared. Mount and unmount events immediately under this mount point will propagate to the other mount points that are members of this mount's peer group. Propagation here means that the same mount or unmount will automatically occur under all of the other mount points in the peer group. Conversely, mount and unmount events that take place under peer mount points will propagate to this mount point.
MS_PRIVATE
Make this mount point private. Mount and unmount events do not propagate into or out of this mount point. This is the default propagation type for newly created mount points.
MS_SLAVE
If this is a shared mount point that is a member of a peer group that contains other members, convert it to a slave mount. If this is a shared mount point that is a member of a peer group that contains no other members, convert it to a private mount. Otherwise, the propagation type of the mount point is left unchanged.

When a mount point is a slave, mount and unmount events propagate into this mount point from the (master) shared peer group of which it was formerly a member. Mount and unmount events under this mount point do not propagate to any peer.

A mount point can be the slave of another peer group while at the same time sharing mount and unmount events with a peer group of which it is a member.

MS_UNBINDABLE
Make this mount unbindable. This is like a private mount, and in addition this mount can't be bind mounted. When a recursive bind mount (mount() with the MS_BIND and MS_REC flags) is performed on a directory subtree, any bind mounts within the subtree are automatically pruned (i.e., not replicated) when replicating that subtree to produce the target subtree.

By default, changing the propagation type affects only the target mount point. If the MS_REC flag is also specified in mountflags, then the propagation type of all mount points under target is also changed.

For further details regarding mount propagation types, see mount_namespaces(7).

Verschieben einer Einhängung

Falls Einhängeschalter den Schalter MS_MOVE enthält (verfügbar seit Linux 2.4.18), dann wird ein Unterbaum verschoben. quelle gibt einen existierenden Einhängepunkt und Ziel den neuen Ort an, zu dem der bestehende Einhängpunkt hin verlegt werden soll. Das Verschieben ist atomar: Das Unterbaum wird zu keinem Zeitpunkt ausgehängt.

Die verbliebenen Bits im Argument Einhängeschalter werden ignoriert, wie auch die Argumente Dateisystemtyp und Daten.

Erstellung eines neuen Einhängepunktes

Falls kein Schalter aus MS_REMOUNT, MS_BIND, MS_MOVE, MS_SHARED, MS_PRIVATE, MS_SLAVE und MS_UNBINDABLE in Einhängeschalter festgelegt ist führt mount() seine Vorgabeaktion aus: Erstellung eines neuen Einhängepunktes. Quelle legt die Quelle für den neuen Einhängepunkt fest und Ziel legt das Verzeichnis fest, an den der Einhängepunkt erstellt werden soll.

Die Argumente Dateisystemtyp und Daten werden eingesetzt und weitere Bits können in Einhängeschalter festgelegt werden, um das Verhalten des Aufrufs zu verändern.

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
Eine Komponente eines Pfades war nicht durchsuchbar. (Siehe auch path_resolution(7).)
EACCES
Es wurde versucht, ein nur-lesbares Dateisystem einzuhängen, ohne den Schalter MS_RDONLY zu verwenden.
EACCES
Das Blockgerät quelle befindet sich auf einem Dateisystem, das mit der Option MS_NODEV eingehängt wurde.
EBUSY
Quelle ist bereits eingehängt.
EBUSY
Quelle kann nicht neu nur-lesend eingehängt werden, da dort immer noch Dateien zum Schreiben offen sind.
EBUSY
Quelle 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.
EINVAL
Eine Neueinhängungsaktion (MS_REMOUNT) wurde versucht, aber source war nicht bereits auf target eingehängt.
EINVAL
Eine Verschiebeaktion (MS_MOVE) wurde versucht, aber source war kein Einhängepunkt oder war '/'.
EINVAL
mountflags enthält mehr als einen aus MS_SHARED, MS_PRIVATE, MS_SLAVE und MS_UNBINDABLE.
EINVAL
mountflags enthält MS_SHARED, MS_PRIVATE, MS_SLAVE oder MS_UNBINDABLE und enthält auch einen von MS_REC oder MS_SILENT verschiedenen Schalter.
EINVAL
An attempt was made to bind mount an unbindable mount.
ELOOP
Bei der Auflösung des Pfadnamens wurden zu viele Links gefunden.
ELOOP
A move operation was attempted, and target is a descendant of source.
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_PRIVATE, MS_REC, MS_RELATIME, MS_SHARED, MS_SLAVE, MS_STRICTATIME und MS_UNBINDABLE 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

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

Das Argument Einhängeschalter hat die Magische Zahl 0xC0ED (MS_MGC_VAL) in den oberen 16 Bits. (Alle andere in BESCHREIBUNG vorgestellten Schalter liegen in den unteren 16 Bits von Einhängeschalter.). In Kernel-Versionen vor 2.4 war die Angabe von MS_MGC_VAL notwendig, aber seit Linux 2.4 ist dies nicht mehr notwendig und wird, falls angegeben, ignoriert.

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 Kindprozess, der durch fork(2) erzeugt wurde, nutzt den Einhängenamensraum seines Elternprozesses; der Einhängenamensraum 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.

SIEHE AUCH

mountpoint(1), umount(2), mount_namespaces(7), path_resolution(7), findmnt(8), lsblk(8), mount(8), umount(8)

KOLOPHON

Diese Seite ist Teil der Veröffentlichung 4.09 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 <krd@gulu.net>, Chris Leick <c.leick@vollbio.de>, Mario Blättermann <mario.blaettermann@gmail.com> und Helge Kreutzmann <debian@helgefjell.de> 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 <debian-l10n-german@lists.debian.org>.

12. Dezember 2016 Linux