ln -s vs mount - bağlama


19

ln -sVeya kullanımı arasında pratik bir fark var mı mount --bind?

Bazı klasörleri daemon ayarlarını değiştirmeden başka bir bölüme taşımak ve hangi yaklaşımı benim atmam gerektiğini merak ediyorum.

ln -sMinimum kurulum ( /etc/fstabdeğişiklik yok ) gerektirdiğinden tercih ediyorum , ancak belki de yaygın olmamasının bir nedeni var mı?

Yanıtlar:


25

Tabi lan. Yürütürseniz ln -sbir olan sembolik bir bağlantı oluşturmak inode sert bağlantılar kendi düğüm yok: symlinks dosya sistemlerini geçebilirler ve sert bağlantılar olamaz yüzden belli bir dosya sistemi nesne, işaret etme.

Bir dosya sistemi bağlarsanız , bir cihaz veya dosya sistemi için --bindikinci bir bağlama noktası oluşturursunuz .

Bir symlink'i yönlendirme olarak öngörürseniz, --bindbağlı bir dosya sistemini verilere başka bir ağ geçidi oluşturmayı hayal edin .

Simgeler ve bağlama bağları tamamen farklı bir top oyunudur.

--bindBağlama biraz daha sağlam bana öyle geliyor ve muhtemelen biraz daha hızlı bir sembolik bağ ile çalışan fazla. Öte yandan, performans isabeti küçük olacağından (hiç varsa), symlink'i kullanmanın ciddi bir dezavantajı yoktur.

Edit : Bunu düşünüyorum ve performans hit aslında düşündüğümden biraz daha büyük olabilir. Çok sayıda farklı dosya okuyan bir uygulamanız varsa, açılan her yeni dosya için fazladan okuma gerekir. Bazı araştırmalar burada benim varsayım, bir IO ağır uygulama orada çalışan var düşünün eğer öyleyse, doğru olduğunu göstermektedir --bindSembolik bağ çözümü yukarıda monte etmek seçeneği.

Yaygın olmamasının nedeni, muhtemelen bir symlink'in bir'de görünür olması ls, ancak bağlama bağının yalnızca / proc / mounts veya / etc / mtab'a bakıldığında görünür olması (mount komutunun yaptığı şeydir. parametresiz yürütülür). Bunun dışında herhangi bir sorun olduğunu düşünmüyorum. Yine de ilgilenirim.

Ek : başka bir sorun, ln -sbazı uygulamalar için, yolun kaydı kaldırıldığında, belirli öğelerin belirli yerlerde "olmasını" beklerse uygulamanın engellemesine neden olabilmesidir.


Açıklamalı açıklama için teşekkürler! Küçük bir takip sorusu - aslında --rbind parametresi ne işe yarar ve nasıl kullanılabilir? Kılavuzdan, alt montajların monte edilen ağaca monte edilmesini destekleyen parametre bu doğru mu? Ayrıca, sadece - rbind yeterli mi, yoksa o zaman --bind o zaman - reind Tekrar teşekkürler.
SyRenity

2
mount, herhangi bir argüman olmadan çağrıldığında, içeriğinden /etc/mtabbiraz farklı bilgilere sahip olan içeriği yazdırır /proc/mounts. (Özellikle, /proc/mounts(symlink to /proc/self/mounts) her zaman onu okuyan işlem tarafından görülebilen bağlama noktalarını gösterir.)
Grawity

1
@wzzrd - dan SSS "En iyisi - düzenle ve mevcut soru ve cevapları geliştirmek!" :) .. bu hiçbir şekilde cevabınız için hafif değildir - oy verildiğinde / oylandığında ek temsilci alacağınız ek bilgilerle küçük bir gelişmedir :)
warren

1
@warren, boşver, deli değilim :) sadece hakkında hiçbir fikrim olmayan bir şey
ekledin

2
@wzzrd - ayak parmaklarına basmak istemiyordu :) ..Uygulamaya özgü sorun, kullandığım ana ürünle karşılaştığım bir şey
warren

6

ln -sVe bağlama bağlama arasındaki en büyük farklardan biri, salt okunur bir dosya sistemini "değiştirmek" için bir bağlama bağlama parçası kullanabilmenizdir. Örneğin, üzerine takılı bir CD varsa /mnt/applicationve /mnt/application/badconfigfile.confdoğru bir sürümle değiştirmek istiyorsanız, bunu yapabilirsiniz:

mount -o bind /path/to/correct/file.conf /mnt/application/badconfigfile.conf

Hedef dosya sistemini değiştiremediğiniz için bir symlink kullanarak aynı değişikliği etkilemek mümkün olmaz.

Bu, ortak bir yazılım paketini NFS (veya bir tür küme dosya sistemi) aracılığıyla dağıtıyorsanız ve bir sistemde ana bilgisayara özgü değişiklikler yapmak istiyorsanız da iyi bir etki sağlamak için kullanılabilir. Dosyaları veya dizinleri gerektiği gibi geçersiz kılmak için hedef sistemdeki bağlama bağlamasını kullanabilirsiniz.


Baş ağrısı koruyucu! (nadir durum, ancak bu özel an için hatırlanmaya değer)
Jonathan Komar

2

Ln -s ve mount --bind arasındaki benim için 1. fark:

vsftpd, bir dizine sembolik bir bağlantı üzerinden göz atmaya izin vermez, ancak bağlandığında izin verir.

Hangi daemon'u kullandığınızı bilmiyorum, ancak benzer şekilde davranabilir.


1

Kendisi bir bağlayıcı olan, daha sonra geri tepen bir montaj parçasına bağlanmanın bir sonucu olarak, orijinal bağlamanın, her şeyin fiziksel olarak bağlı kaldığı varsayılarak, bozulmadan kaldığını not edebiliriz.

Yani, A'dan B'ye bağlanır ve B'den C'ye bağlanır ve sonra D'den B'ye bağlanırsa, C yine de A'ya bağlanır. İstediğiniz bu olabilir ya da olmayabilir. Biri C'nin B'yi takip etmesini mount -o remount B Cisterse , aynı hedefleri kullanarak, yani --rbindyerine kullanın. --rebindSeçenek yok .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.