Re: Mehrfach mounten abschalten

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Fri, 24 Mar 2006 09:07:52 +0100 (CET)

Rocco Rutte <pdmef(at)gmx.net> wrote:
> Oliver Fromme <olli(at)lurza.secnetix.de>:
> > Das ist gar kein Problem. Wieso sollte es einen Unter-
> > schied machen, ob Du ein Filesystem zweimal auf denselben
> > oder zweimal auf unterschiedliche Mountpoints mountest?
> > Sofern das Dateisystem per-se Mehrfachmounts unterstützt
> > (wie z.B. NFS), sehe ich da keinerlei Konsistenzproblem.
>
> Ich weiss ja nicht wie die Buffer funktionieren. Wenn der Kernel noch
> einen Buffer für /foo/xyz hat, wobei /foo der Mountpoint ist, dann weiss
> ich nicht, ob beim ersten _Un_mounten von /foo der Buffer geschrieben
> wird. Ich könnte mir zum Beispiel vorstellen, dass man Buffer nur beim
> "finalen" Unmounten zurückschreibt (denn solange es noch mindestens
> einmal gemountet ist, ist es ja nicht notwendig).

Für den Kernel sind das ganz einfach verschiedene Mounts.
Wenn Du denselben NFS-Pfad mehrfach mountest (egal, ob auf
denselben Mountpoint oder unterschiedliche), dann _darf_
der Kernel nicht annehmen, daß es sich um dasselbe Datei-
system handelt -- theoretisch darf der NFS-Server für beide
Mounts unterschiedliche Daten liefern. Man sieht das auch
daran, daß die beiden Mounts verschiedene Filesystem-IDs
erhalten (»mount -v« listet sie auf). Das bedeutet auch,
daß sie aus Sicht des Buffercaches unabhängig voneinander
sind.

Der Nachteil ist natürlich, daß der Buffercache weniger
effizient wird. Es ist z.B. verbreitete Praxis, daß man
per Loopback-NFS dasselbe Verzeichnis in mehrere Jails
hineinmountet. Das führt aber dazu, daß dieselben Daten
mehrfach gecacht werden, da der NFS-Client-Code davon
ausgehen muß, daß es sich um unabhängige Dateisysteme
handelt, und daß z.B. /jail1/usr/foo und /jail2/usr/foo
verschiedene Dateien sind, auch wenn sie vom selben NFS-
Server-Pfad stammen.

Dasselbe gilt natürlich ebenso, wenn man die Mounts auf
demselben Mountpoint übereinander macht. Der »obere«
Mount verdeckt dann den »unteren« und macht ihn unzugäng-
lich, sofern man nicht die Option "-o union" verwendet.

> > UFS unterstützt Mehrfachmounts natürlich nicht (weder auf
> > denselben noch auf unterschiedliche Mountpoints), d.h. dort
> > stellt sich die Frage gar nicht erst. [*]
>
> Hmm. Wo ist sowas dokumentiert?

zcat /usr/share/doc/smm/05.fastfs/paper.ascii.gz | less

Außerdem merkst Du es, wenn Du es versuchst, da Du dann
eine Fehlermeldung erhältst.

Ein Filesystem, das man mehrfach read-write (oder auch nur
einmal read-write plus mehrfach read-only) mounten können
soll, muß einen enormen Aufwand dafür treiben, daß die
Mounts untereinander konsistent bleiben (Cache-Kohärenz).
Dies nimmt bei NFS einen signifikanten Teil des Codes ein
und ist für einen Großteil der Komplexität verantwortlich.

UFS hat gar nicht den Anspruch, so etwas zu leisten.
Man könnte es theoretisch implementieren, aber der Aufwand
wäre enorm, und es hätte einen Overhead zur Folge, der
vermutlich auch »normale« Verwendung negativ beeinflussen
würde. Man sieht das auch an den Problemen, die immer
wieder mit NULLFS und UNIONFS auftauchen, die indirekt ja
so eine Funktionalität auf UFS aufpfropfen, und die bis
heute nicht 100% stabil funktionieren (obgleich sich da
schon sehr viel verbessert hat).

Gruß
   Olli

-- 
Oliver Fromme,  secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing
Dienstleistungen mit Schwerpunkt FreeBSD: http://www.secnetix.de/bsd
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
(On the statement print "42 monkeys" + "1 snake":)  By the way,
both perl and Python get this wrong.  Perl gives 43 and Python
gives "42 monkeys1 snake", when the answer is clearly "41 monkeys
and 1 fat snake".        -- Jim Fulton
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 24 Mar 2006 - 09:09:08 CET

search this site