Was ist / etc / mtab unter Linux?

Antworten:

51
% file / etc / mtab
/ etc / mtab: symbolischer Link zu ../proc/self/mounts
% file / proc / mounts
/ proc / mounts: symbolischer Link zu self / mounts
%

/etc/mtabist ein Kompatibilitätsmechanismus. Vor Jahrzehnten hatte Unix keinen Systemaufruf zum Lesen der vorhandenen Mount-Informationen. Stattdessen wurde von Programmen, die Dateisysteme mounten, erwartet, dass sie kooperativ und freiwillig eine Tabelle darüber führen, /etc/mtabwas wo gemountet wurde.

Aus offensichtlichen Gründen war dies kein idealer Mechanismus.

Linux erhielt die Vorstellung eines "procfs", und eines der Dinge, die es gewann, war eine vom Kernel gepflegte Version dieser Tabelle in Form einer mountspseudoregulären Datei. Der "Systemaufruf" zum Lesen der Mount-Informationen aus dem Kernel wurde zu einer Open-Read-Close-Sequenz für diese Datei, gefolgt vom Parsen des Ergebnisses von einer für Menschen lesbaren in eine maschinenlesbare Form (etwas, das wie Sie einige subtile Fehler aufweist) kann aus den Fehlerberichten von vor etwas mehr als vierzehn Tagen ersehen werden).

/etc/mtabDies ist im Volksmund zu einer symbolischen Verknüpfung geworden /proc/mounts, die es Programmen, die diesen Namen fest verdrahtet haben, ermöglicht, eine Mount-Tabelle aus dieser Datei zu lesen, und die Programme, die Dateisysteme gemountet und nicht gemountet haben, müssen selbst nichts mehr tun, um auf dem neuesten Stand zu bleiben. (Einige von ihnen werden es dennoch sein, wenn /etc/mtabsich herausstellt, dass es sich um eine beschreibbare reguläre Datei handelt. Und es gibt ein paar Eckfälle, in denen die normalisierten Informationen, in mountsdenen alle Nicht-Kernel-Sachen fehlen, nicht ganz das sind, was benötigt wird, obwohl sie nicht überwiegen die allgemeinen Probleme mit /etc/mtab.)

Jeder Prozess kann heute seinen eigenen Blick auf dem , was angebracht ist, und es gibt als Folge nun einzelne mountsDateien für jeden Prozess in dem procfs, die jeweils eigene Tabelle des Prozesses zugänglich , um es über die Wesen selfsymbolische Verbindung als self/mounts, und /proc/mountsist auch jetzt eine Kompatibilität Mechanismus. (Interessanterweise sind im aktuellen Linux-Dokument weder pro Prozess mountsnoch im Format mountsdokumentiert, obwohl es sich um eine ähnliche mountinfopseudoreguläre Datei handelt.)

SunOS / Solaris verfügt über einen ähnlichen Mechanismus. Die /etc/mnttabDatei ist eigentlich ein Einzeldateisystem, und zusätzlich zum Lesen der Tabelle über einen geöffneten Dateideskriptor zu dieser Datei kann man mit dem read()Systemaufruf nach Änderungen an Einhängepunkten suchen poll()und verschiedene weitere Informationen mit abrufen ioctl().

In HP-UX /etc/mnttabist dies ebenfalls der Name der Datei, aber ab Version 11 war es immer noch eine reguläre Datei, deren Inhalt kooperativ von den Systemdienstprogrammen verwaltet wurde.

AIX exportiert keine lesbare Texttabelle, die von Programmen analysiert werden muss, und es gibt keine entsprechende Datei. Ebenso haben die BSDs vollwertige Systemaufrufe getfsstat()auf FreeBSD und OpenBSD, damit Programme die Mount-Tabelle in maschinenlesbarer Form vom Kernel erhalten, ohne sie durch eine von Menschen lesbare Zwischenform zu marshallen.

Weitere Lektüre

JdeBP
quelle
In Ergänzung zu meinem Kommentar in der Frage hier ist der mtab(5)aus alten Zeiten: man.cat-v.org/unix_8th/5/mtab .
Weijun Zhou
2
nicht nur /proc/mounts, sondern /proc/self/mountsist jetzt selbst ein Kompatibilitätsmechanismus; Es wird nur eine Teilmenge der in verfügbaren Informationen angezeigt /proc/self/mountinfo. Das Format von /proc/self/mountsist proc(5)als identisch mitfstab(5)
mosvy
Zugegebenermaßen gibt fstab (5) nur an, dass Leerzeichen durch oktale Escapezeichen
am
Ich kenne Pseudodateien und reguläre Dateien, aber was ist eine Pseudodatei?
Gerrit
@ Gerrit es ist eine reguläre Datei, die Größe 0 hat, aber noch Daten enthält
;-)
12

Nach man mount:

Die Programme mount und umount haben traditionell eine Liste der aktuell gemounteten Dateisysteme in der Datei / etc / mtab gepflegt. Diese echte MTAB-Datei wird weiterhin unterstützt, aber auf aktuellen Linux-Systemen ist es besser, sie als Symlink zu / proc / mounts zu definieren, da eine reguläre MTAB-Datei, die im Userspace verwaltet wird, nicht zuverlässig mit Namespaces, Containern und anderen erweiterten Linux-Funktionen zusammenarbeitet.

Bei Montage ohne Aufnahme in /etc/mtab:

-n, --no-mtab

Mounten, ohne in / etc / mtab zu schreiben. Dies ist beispielsweise erforderlich, wenn sich / etc in einem schreibgeschützten Dateisystem befindet.

Viele weitere Nuancen finden Sie auf der Handbuchseite.

Christopher
quelle