ln -s vs Mount --bind


19

उपयोग करने के बीच कोई व्यावहारिक अंतर है ln -sया mount --bind?

मैं कुछ फ़ोल्डर को अपने डेमॉन सेटिंग को बदले बिना, दूसरे फ़ोल्डर में स्थानांतरित करना चाहता हूं, और मुझे आश्चर्य है कि मुझे क्या दृष्टिकोण लेना चाहिए।

मुझे पसंद है ln -sक्योंकि इसके लिए न्यूनतम सेटअप (कोई /etc/fstabसंशोधन) की आवश्यकता नहीं है, लेकिन शायद एक कारण है कि यह आम क्यों नहीं है?

जवाबों:


25

अरे हाँ। यदि आप निष्पादित करते ln -sहैं , तो आप एक प्रतीकात्मक लिंक बनाते हैं, जो एक निश्चित फाइल सिस्टम ऑब्जेक्ट की ओर इशारा करते हुए एक इनोड है , यही वजह है कि सीमलिंक फाइल सिस्टम को आगे बढ़ा सकते हैं और हार्ड लिंक नहीं कर सकते हैं: हार्ड लिंक का अपना इनोड नहीं है।

यदि आप एक फाइलसिस्टम माउंट करते हैं --bind, तो आप एक डिवाइस या फाइलसिस्टम के लिए दूसरा माउंटपॉइंट बनाते हैं ।

यदि आप एक सिम्लिंक को रीडायरेक्ट के रूप में कल्पना करते हैं, तो --bindडेटा के लिए एक और प्रवेश द्वार बनाने के रूप में एक माउंटेड फाइल सिस्टम की कल्पना करें।

साइमलिंक और बाइंड माउंट्स एक पूरी तरह से अलग बॉलगेम हैं।

--bindमाउंट में थोड़ा और अधिक मेरे लिए मजबूत लगता है और यह शायद थोड़ा एक सिमलिंक के साथ काम करने की तुलना में तेजी है। दूसरी ओर, सीमलिंक का उपयोग करने के लिए कोई गंभीर कमियां नहीं हैं, क्योंकि प्रदर्शन हिट छोटा होगा (यदि यह बिल्कुल मौजूद है)।

संपादित करें : मैं इस बारे में सोच रहा हूं, और मेरे द्वारा मूल रूप से सोचा गया प्रदर्शन हिट थोड़ा बड़ा हो सकता है। यदि आपके पास एक एप्लिकेशन है जो बहुत सारी अलग-अलग फ़ाइलों को पढ़ता है, तो जो हर नई फ़ाइल खोली जाती है, उसे अतिरिक्त पढ़ने की आवश्यकता होती है। यहाँ कुछ शोध बताते हैं कि मेरी धारणा सही है, इसलिए यदि आपके पास कोई IO भारी एप्लिकेशन चल रहा है, --bindतो सिम्लिंक समाधान के ऊपर माउंट करने के विकल्प पर विचार करें ।

कारण यह सामान्य नहीं है, शायद यह तथ्य है कि एक सिमलिंक एक में दिखाई देता है ls, जबकि एक बाइंड माउंट केवल तब दिखता है जब / proc / mounts या / etc / mtab (जो माउंट कमांड करता है, यदि यह है तो मापदंडों के बिना निष्पादित)। इसके अलावा, मुझे नहीं लगता कि कोई मुद्दे हैं। मुझे दिलचस्पी होगी अगर वहाँ रहे हैं, हालांकि।

परिवर्धन : इसके साथ एक और मुद्दा ln -sयह है कि कुछ अनुप्रयोगों के लिए, जब मार्ग को बंद कर दिया जाता है, तो यह अनुप्रयोग को गंजा करने का कारण बन सकता है अगर यह कुछ वस्तुओं को विशिष्ट स्थानों पर होने की "उम्मीद" करता है।


स्पष्टीकरण के लिए धन्यवाद! एक छोटा सा अनुवर्ती सवाल - क्या --rbind पैरामीटर वास्तव में करता है और इसका उपयोग कैसे किया जा सकता है? मैनुअल से ऐसा लगता है कि पैरामीटर माउंटेड ट्री में उप-माउंट बढ़ते का समर्थन करता है क्या यह सही है? इसके अलावा, केवल --rbind पर्याप्त है, या मुझे करने की आवश्यकता है - तो फिर --rebind? एक बार फिर धन्यवाद।
सायेंसिटी

2
mount, जब बिना किसी तर्क के आह्वान किया जाता है, तो उन सामग्रियों को प्रिंट करता है /etc/mtab, जिनकी तुलना में थोड़ी अलग जानकारी होती है /proc/mounts। (विशेष रूप से, /proc/mounts(करने के लिए सिमलिंक /proc/self/mounts) हमेशा mountpoints प्रक्रिया इसे पढ़ने के लिए दिखाई दे दर्शाता है।)
grawity

1
@wzzrd - FAQ से "सबसे अच्छा - संपादित करें और मौजूदा प्रश्नों और उत्तरों में सुधार करें!" :) .. यह आपके उत्तर के लिए कोई मामूली मतलब नहीं है - यह अतिरिक्त जानकारी के साथ एक छोटा सा सुधार है, जिसके लिए आपको अतिरिक्त प्रतिनिधि प्राप्त होगा यदि / जब इसे वोट दिया जाता है :)
वॉरेन

1
@warren, कोई बात नहीं, मैं पागल नहीं हूँ :) यह सिर्फ तुमने कुछ ऐसा जोड़ा है जिसके बारे में मुझे कुछ पता नहीं है, ताकि थोड़ा अजीब लगे;)
wzzrd

2
@wzzrd - किसी भी पैर की उंगलियों पर कदम रखने का मतलब नहीं था :) .. एप्लिकेशन-विशिष्ट समस्या कुछ ऐसा है जिसे मैंने मुख्य उत्पाद के साथ चलाया है
वॉरेन

6

एक ln -sबाइंड माउंट के बीच एक बड़ा अंतर यह है कि आप एक रीड-ओनली फाइलसिस्टम को "संशोधित" करने के लिए बाइंड माउंट का उपयोग कर सकते हैं। उदाहरण के लिए, यदि कोई सीडी पर आरूढ़ थे /mnt/application, और आप /mnt/application/badconfigfile.confएक सही संस्करण के साथ बदलना चाहते थे , तो आप ऐसा कर सकते थे:

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

सिम्लिंक का उपयोग करके समान परिवर्तन को प्रभावित करना संभव नहीं होगा क्योंकि आप लक्ष्य फाइल सिस्टम को संशोधित करने में सक्षम नहीं हैं।

यदि आप NFS (या किसी प्रकार के क्लस्टर फ़ाइल सिस्टम) के माध्यम से सॉफ़्टवेयर का एक सामान्य सूट वितरित करते हैं, और आप एक सिस्टम पर होस्ट-विशिष्ट परिवर्तन करना चाहते हैं, तो यह अच्छा प्रभाव डालने के लिए भी उपयोग किया जा सकता है। आप बस फाइलों या निर्देशिकाओं को आवश्यक रूप से ओवरराइड करने के लिए लक्ष्य प्रणाली पर एक बाइंड माउंट का उपयोग कर सकते हैं।


सिरदर्द सेवर! (दुर्लभ मामला, लेकिन उस खास पल के लिए याद रखने लायक है)
जोनाथन कोमार

2

प्रैक्टिकल अंतर # 1 मेरे लिए ln -s और माउन्ट-बिंद के बीच:

vsftpd एक प्रतीकात्मक लिंक के माध्यम से एक निर्देशिका ब्राउज़ करने की अनुमति नहीं देता है, लेकिन माउंट होने पर अनुमति देता है।

मुझे नहीं पता कि आप किस डेमॉन का उपयोग कर रहे हैं, लेकिन यह समान व्यवहार कर सकता है।


1

एक ध्यान दें कि माउंट को बांधने के परिणामस्वरूप, जो स्वयं एक बंधन है, जो बाद में रिबाउंड है, मूल बंधन बरकरार है, यह मानते हुए कि सब कुछ शारीरिक रूप से जुड़ा हुआ है।

यही है, यदि A को B से बाँधते हैं और B को C से बाँधते हैं, और फिर D से B को बाँधते हैं, C अभी भी A. से बँधा होगा, वही हो सकता है जो आप चाहते हैं, या नहीं। यदि कोई C का अनुसरण करने की इच्छा रखता है, तो उसी लक्ष्य का उपयोग करके mount -o remount B C, या --rbindइसके बजाय का उपयोग करके रिमाउंट करें । कोई --rebindविकल्प नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.