Was ist der Unterschied zwischen einem Symlink und einer Bindung mit fstab?

7

In Eric Hammonds Artikel Ausführen von MySQL auf Amazon EC2 mit EBS zeigt er, wie ein zweites Laufwerk ( /vol/) hinzugefügt wird, und verschiebt dann die mysqlKonfiguration und die Daten dorthin.

/sdhwird wie /voldurch Bearbeiten fstabund Hinzufügen gemountet :

/dev/sdh /vol xfs noatime 0 0

Und als nächstes werden einige Pfade wie folgt hinzugefügt:

/vol/etc/mysql /etc/mysql     none bind

Ich habe kein Problem damit, aber ich verstehe nicht ganz, was los ist.

Ich kann dies am ehesten mit der Verwendung eines Symlinks vergleichen, etwa:

ln -s /etc/mysql /vol/etc/mysql

Ich habe einen Blick darauf geworfen, man fstabohne viele Informationen über die bindSyntax zu sehen, und kann sie auch nicht im fstabAbschnitt im Linux-Administratorhandbuch finden. Kann jemand etwas Licht in fstabdie bindSyntax bringen, wie sie funktioniert, was sie tut und wo ich weitere Informationen dazu finden sollte?

cwd
quelle

Antworten:

8

bind spiegelt ein Dateisystem wider (unter anderem ist es nützlich, wenn Sie eine Chroot festlegen, in der Sie ein "vollständiges" System benötigen (wie beim Entpacken / Installieren von Gentoo).

Einfach so, es spiegelt einen Baum von A nach B. Ich weiß nicht genau, ob es eine Option gibt, aber ich bezweifle, dass es nicht mehr tut als das Spiegeln.

Im Gegensatz zu einem Symlink, bei dem es sich um eine Datei in einem Dateisystem handelt, die auf ein anderes Dateisystem verweist und die Sie einrichten müssen, und die immer noch eine "spezielle Datei" ist, spiegelt bind den gesamten Teilbaum wirklich wider. Abhängig vom Tool funktionieren möglicherweise beide Strategien, es ist jedoch möglich, den Symlink zu erkennen, und einige Tools lösen ihn möglicherweise in den ursprünglichen Pfad auf. Der bindAnsatz ist transparenter und verhält sich wie zwei verschiedene Dateisysteme.

njsg
quelle
1
Musste das letzte Nacht einfach machen, ausgezeichnete Antwort. Dies ist die Beschreibung aus den LFS-Build-Dokumenten: .... Da dies ein neues System ist, kein Udev hat und noch nicht gestartet wurde, muss es /devmanuell bereitgestellt und ausgefüllt werden. Dies wird durch bindMounten des /devVerzeichnisses des Hostsystems erreicht . Ein Bind-Mount ist ein spezieller Mount-Typ, mit dem Sie einen Spiegel eines Verzeichnisses oder eines Mount-Punkts an einem anderen Ort
erstellen können
2
Genau. Symlinks, die auf Inodes außerhalb einer Chroot-Umgebung verweisen, funktionieren nicht. Sie können verlinken /mychroot/homeauf , /homebevor Sie chroot(2), aber nachdem Sie chroot, die Symlink unterbrochen ist ( /mychrootnicht mehr existiert , aus der Sicht der chroot - Umgebung). Bindung an die Rettung.
Alexios
1
Sie können einen schreibgeschützten Bind-Mount haben, aber Symlinks können die Berechtigungen des Ziels nicht ändern.
Psusi
1
Wenn Sie "Spiegel" sagen, geriet ich in Panik, weil ich dachte, es würde alle Dateien kopieren. Es verhält sich eher wie ein Verzeichnis-Hardlink. Die beiden Verzeichnisse sind einfach dasselbe Verzeichnis. Etwas, das in einem passiert, passiert in dem anderen, weil sie es sind das gleiche Ereignis.
ThorSummoner