Merhfaches bind-Mount: Dateisystem wird unterm Arsch weggezogen

14/04/2009 - 15:54 von Peter Mairhofer | Report spam
Hi,

Ich habe folgenden mount in meiner fstab:

/dev/vgdata/lvhome /media/home xfs defaults,noatime 1 2

Dieser Mount soll durch nichts entfernt werden (ausser manuell durch mich).

Die Daten auf der Partition benötigen nun aber einige meiner OpenVZ VEs.
Also lautet die Lösung: mount --bind. In den mount-Scripts der
betreffenden VEs steht also folgender Befehl:

mount --bind /media/home /var/lib/vz/root/${VEID}/home

und folgereichtig in den umount-Scripts:

umount /var/lib/vz/root/${VEID}/home

Soweit, so gut. Ist nàmlich alles gestartet, so erhalte ich:

# mount | grep bind
/media/home on /var/lib/vz/root/200/home type none (rw,bind)
/media/home/system/da on /var/lib/vz/root/202/home/system/da type none
(rw,bind)
/media/home on /var/lib/vz/root/301/home type none (rw,bind)
/media/home on /var/lib/vz/root/302/home type none (rw,bind)
/media/home/intranet on /var/lib/vz/root/400/home/intranet type none
(rw,bind)

Beende ich jetzt aber eine VE, die /media/home gemountet hat, so scheint
sie implizit auch /media/home auszumounten. In der Ausgabe von mount
steht der Mount dann noch drinnen, allerdings bleibt ein "ls
/media/home" leer. Auch ein manuelles umount bestàtigt dies:

# umount /media/home
umount: /dev/mapper/vgdata-lvhome: not mounted
umount: /dev/mapper/vgdata-lvhome: not mounted

Durchs Beenden von so einer VE wird nun allen anderen VEs das ganze
Dateisystem unterm Arsch weggezogen was natürlich mehr als fatal ist.
Das Problem verschàrft sich, da gewisse Unterverzeichnisse in
/media/home ebenfalls in bestimmte VEs quergemountet sind.

Wieso ist das so? Làsst sich dieses desaströse Verhalten verhindern?

lg,
Peter
 

Lesen sie die antworten

#1 Jörg Sommer
19/04/2009 - 14:30 | Warnen spam
Hallo Peter,

Peter Mairhofer schrieb:
/dev/vgdata/lvhome /media/home xfs defaults,noatime 1 2

mount --bind /media/home /var/lib/vz/root/${VEID}/home

und folgereichtig in den umount-Scripts:

umount /var/lib/vz/root/${VEID}/home

Soweit, so gut. Ist nàmlich alles gestartet, so erhalte ich:

# mount | grep bind
/media/home on /var/lib/vz/root/200/home type none (rw,bind)
/media/home/system/da on /var/lib/vz/root/202/home/system/da type none
(rw,bind)
/media/home on /var/lib/vz/root/301/home type none (rw,bind)
/media/home on /var/lib/vz/root/302/home type none (rw,bind)
/media/home/intranet on /var/lib/vz/root/400/home/intranet type none
(rw,bind)

Beende ich jetzt aber eine VE, die /media/home gemountet hat, so scheint
sie implizit auch /media/home auszumounten. In der Ausgabe von mount
steht der Mount dann noch drinnen,



Was steht denn in /proc/mounts? An welcher Stelle wird denn der umount
für die VE gemacht? Gibt es vielleicht noch (unbeabsichtigt) eine zweite
Stelle? Das riecht nach einem Fehler an der Stelle. Man kann ja umount
sowohl mit dem Verzeichnis als auch mit dem Device verwenden, also „mount
/dev/hda1 /mnt“ làsst sich mit „umount /dev/hda1“ und mit „umount /mnt“
entfernen. Vielleicht ruft dieses Skript, dass das home aus der VE
entfernen soll „umount /media/home“ auf und knallt damit alles weg.

Ich kann bestàtigen, dass man die bind‐mounts nàmlich auch einzeln
entfernen kann. Das was Du erreichen willst, ist also möglich.

Schöne Grüße, Jörg.
Ein Mensch sieht ein und das ist wichtig,
nichts ist ganz flach und nichts ganz richtig.
(Eugen Roth)

Ähnliche fragen