"बाइंड माउंट" क्या है? मैं एक कैसे बनाऊं? ये किस काम के लिए अच्छा है?
मुझे किसी चीज़ के लिए बाइंड माउंट का उपयोग करने के लिए कहा गया है, लेकिन मुझे समझ नहीं आ रहा है कि यह क्या है या इसका उपयोग कैसे किया जाए।
"बाइंड माउंट" क्या है? मैं एक कैसे बनाऊं? ये किस काम के लिए अच्छा है?
मुझे किसी चीज़ के लिए बाइंड माउंट का उपयोग करने के लिए कहा गया है, लेकिन मुझे समझ नहीं आ रहा है कि यह क्या है या इसका उपयोग कैसे किया जाए।
जवाबों:
एक बांध माउंट एक निर्देशिका पेड़ का एक वैकल्पिक दृश्य है। शास्त्रीय रूप से, बढ़ते निर्देशिका ट्री के रूप में संग्रहण डिवाइस का दृश्य बनाता है। इसके बजाय एक बांध माउंट एक मौजूदा निर्देशिका ट्री लेता है और इसे एक अलग बिंदु के तहत प्रतिकृति करता है। बाइंड माउंट में निर्देशिका और फाइलें मूल के समान हैं। एक तरफ किसी भी संशोधन को तुरंत दूसरी तरफ परिलक्षित किया जाता है, क्योंकि दोनों दृश्य समान डेटा दिखाते हैं।
उदाहरण के लिए, लिनक्स कमांड जारी करने के बाद
mount --bind /some/where /else/where
निर्देशिकाओं /some/where
और /else/where
एक ही सामग्री है।
एक हार्ड लिंक या प्रतीकात्मक लिंक के विपरीत, एक बाइंड माउंट फाइलसिस्टम पर संग्रहीत को प्रभावित नहीं करता है। यह लाइव सिस्टम की एक संपत्ति है।
bindfs
फाइल सिस्टम एक है फ्यूज फाइल सिस्टम है जो एक निर्देशिका वृक्ष के एक दृश्य पैदा करता है। उदाहरण के लिए, कमांड
bindfs /some/where /else/where
/else/where
एक माउंट बिंदु बनाता है जिसके तहत सामग्री /some/where
दिखाई देती है।
चूँकि bindfs एक अलग फाइल सिस्टम है, फाइलें /some/where/foo
और /else/where/foo
अनुप्रयोगों के लिए अलग-अलग फाइलों के रूप में दिखाई देती हैं (bindfs filesystem का अपना st_dev
मूल्य है)। एक तरफ कोई परिवर्तन "जादुई" है दूसरी तरफ परिलक्षित होता है, लेकिन तथ्य यह है कि फाइलें एक ही हैं केवल स्पष्ट है जब कोई जानता है कि कैसे bindfs संचालित होता है।
Bindfs को माउंट पॉइंट्स का कोई ज्ञान नहीं है, इसलिए यदि कोई माउंट पॉइंट अंडर है /some/where
, तो यह केवल एक अन्य डायरेक्ट्री के रूप में दिखाई देता है /else/where
। किसी फ़ाइल सिस्टम के नीचे माउंट या अनमाउंट करना संगत निर्देशिका के परिवर्तन के रूप में /some/where
प्रकट होता है /else/where
।
Bindfs कुछ फ़ाइल मेटाडेटा को बदल सकते हैं: यह फ़ाइलों के लिए नकली अनुमतियाँ और स्वामित्व दिखा सकता है। देखें मैनुअल जानकारी के लिए, और उदाहरण के लिए नीचे देखें।
एक bindfs फाइल सिस्टम को एक गैर-रूट उपयोगकर्ता के रूप में माउंट किया जा सकता है, आपको केवल FUSE फाइल सिस्टम को माउंट करने के लिए विशेषाधिकार की आवश्यकता होती है। आपके वितरण के आधार पर, इस fuse
समूह में होने की आवश्यकता हो सकती है या सभी उपयोगकर्ताओं को अनुमति दी जा सकती है। FUSE फ़ाइल सिस्टम को अनमाउंट fusermount -u
करने के लिए umount
, उदाहरण के लिए, का उपयोग करें
fusermount -u /else/where
FreeBSD nullfs
फाइलसिस्टम प्रदान करता है जो एक फाइलसिस्टम का एक वैकल्पिक दृश्य बनाता है। निम्नलिखित दो आदेश समतुल्य हैं:
mount -t nullfs /some/where /else/where
mount_nullfs /some/where /else/where
या तो आदेश जारी करने के बाद, /else/where
एक माउंट बिंदु बन जाता है जिस पर सामग्री /some/where
दिखाई देती है।
चूँकि nullfs एक अलग फाइल सिस्टम है, फाइलें /some/where/foo
और /else/where/foo
अनुप्रयोगों के लिए अलग-अलग फाइलों के रूप में दिखाई देती हैं (nullfs filesystem का अपना st_dev
मूल्य है)। एक तरफ कोई भी परिवर्तन "जादुई रूप से" दूसरी तरफ परिलक्षित होता है, लेकिन तथ्य यह है कि फाइलें समान हैं केवल स्पष्ट है जब कोई जानता है कि कैसे नल संचालित होता है।
FUSE बाइंडफ़ेट्स के विपरीत, जो डायरेक्टरी ट्री के स्तर पर कार्य करता है, फ़्रीबीएसडी के नुल्फ़्स कर्नेल में गहराई से कार्य करता है, इसलिए अंडर माउंट पॉइंट्स /else/where
दिखाई नहीं देते हैं: केवल उसी माउंट पॉइंट का हिस्सा है, /some/where
जैसा कि नीचे दर्शाया गया है /else/where
।
Nullfs फाइल सिस्टम अन्य BSD वेरिएंट (OS X, OpenBSD, NetBSD) के तहत उपयोग करने योग्य हो सकता है, लेकिन इसे डिफ़ॉल्ट सिस्टम के भाग के रूप में संकलित नहीं किया गया है।
लिनक्स के तहत, बाइंड माउंट एक कर्नेल सुविधा के रूप में उपलब्ध हैं। आप कमांड लाइन विकल्प या आरोह विकल्प में mount
से किसी एक को कमांड के साथ बना सकते हैं । निम्नलिखित दो आदेश समतुल्य हैं:--bind
bind
mount --bind /some/where /else/where
mount -o bind /some/where /else/where
यहां, "डिवाइस" /some/where
एक डिस्क विभाजन नहीं है, जैसे ऑन-डिस्क फाइल सिस्टम के मामले में, लेकिन मौजूदा निर्देशिका। माउंट पॉइंट /else/where
हमेशा की तरह एक मौजूदा डायरेक्टरी होना चाहिए। ध्यान दें कि कोई फ़ाइल सिस्टम प्रकार या तो निर्दिष्ट नहीं किया गया है: बाइंड माउंट बनाने से फाइल सिस्टम ड्राइवर शामिल नहीं होता है, यह कर्नेल डेटा संरचनाओं को मूल माउंट से कॉपी करता है।
mount --bind
गैर-निर्देशिका पर एक गैर-निर्देशिका बढ़ते का भी समर्थन करें: /some/where
एक नियमित फ़ाइल हो सकती है (जिस स्थिति में /else/where
एक नियमित फ़ाइल भी होने की आवश्यकता है)।
एक लिनक्स बाइंड माउंट ज्यादातर मूल से अप्रभेद्य है। कमांड df -T /else/where
एक ही डिवाइस और उसी फाइलसिस्टम के प्रकार को दिखाता है df -T /some/where
। फाइलें /some/where/foo
और /else/where/foo
अप्रभेद्य हैं, जैसे कि वे कड़ी थीं। यह अनमाउंट करना संभव है /some/where
, जिस स्थिति में /else/where
माउंटेड रहता है।
पुरानी गुठली के साथ (मुझे ठीक से पता नहीं है कि कब, मुझे कुछ 3.x तक लगता है), बाइंड माउंट्स वास्तव में मूल से अप्रभेद्य थे। हाल की कर्नेल बाइंड माउंट्स को ट्रैक करते हैं और पीआईडी / माउंटिनफो के माध्यम से जानकारी को उजागर करते हैं, जो findmnt
बाइंड माउंट को इंगित करने की अनुमति देता है ।
आप बाइंड माउंट प्रविष्टियां डाल सकते हैं /etc/fstab
। विकल्पों में बस bind
(या rbind
आदि) शामिल हैं, साथ में कोई अन्य विकल्प जो आप चाहते हैं। "डिवाइस" मौजूदा पेड़ है। फाइलसिस्टम कॉलम में समाहित हो सकता है ( none
या bind
इसे अनदेखा किया गया है, लेकिन फाइलसिस्टम नाम का उपयोग करना भ्रामक होगा)। उदाहरण के लिए:
/some/where /readonly/view none bind,ro
यदि अंडर माउंट पॉइंट्स हैं /some/where
, तो उनकी सामग्री अंडर नहीं दिखाई देती है /else/where
। इसके बजाय bind
, आप उपयोग कर सकते हैं rbind
, नीचे दिए गए आरोह बिंदु को भी दोहरा सकते हैं /some/where
। उदाहरण के लिए, यदि /some/where/mnt
माउंट बिंदु है तो
mount --rbind /some/where /else/where
के बराबर है
mount --bind /some/where /else/where
mount --bind /some/where/mnt /else/where/mnt
इसके अलावा, लिनक्स mounts को साझा , गुलाम , निजी या अविश्वसनीय के रूप में घोषित करने की अनुमति देता है । यह प्रभावित करता है कि क्या माउंट ऑपरेशन एक बाइंड माउंट के तहत परिलक्षित होता है जो माउंट बिंदु को दोहराता है। अधिक जानकारी के लिए, कर्नेल प्रलेखन देखें ।
लिनक्स mounts को स्थानांतरित करने का एक तरीका भी प्रदान करता है: जहां --bind
प्रतियां, --move
एक माउंट बिंदु को स्थानांतरित करता है ।
दो बाइंड-माउंटेड निर्देशिकाओं में विभिन्न माउंट विकल्प होना संभव है। हालांकि, एक विचित्रता है: बाइंड माउंट करना और माउंट विकल्प सेट करना परमाणु रूप से नहीं किया जा सकता है, उन्हें दो सफल संचालन होना चाहिए। (पुराने कर्नेल ने इसकी अनुमति नहीं दी।) उदाहरण के लिए, निम्नलिखित कमांड केवल-पढ़ने के लिए दृश्य बनाते हैं, लेकिन समय की एक छोटी खिड़की होती /else/where
है, जिसके दौरान रीड-राइट होता है:
mount --bind /some/where /else/where
mount -o remount,ro,bind /else/where
यदि आपका सिस्टम FUSE का समर्थन नहीं करता है, तो एनएफएस सर्वर को चलाने के लिए समान प्रभाव को प्राप्त करने के लिए एक शास्त्रीय चाल है, इसे उन फ़ाइलों को निर्यात करें जिन्हें आप बेनकाब करना चाहते हैं (एक्सेस की अनुमति देते हैं localhost
) और उन्हें एक ही मशीन पर माउंट करें। यह स्मृति और प्रदर्शन के मामले में एक महत्वपूर्ण ओवरहेड है, इसलिए बाइंड माउंट का एक निश्चित लाभ है जहां उपलब्ध है (जो FUSE के लिए सबसे अधिक यूनिक्स वेरिएंट पर है)।
यह एक फाइलसिस्टम का केवल-पढ़ने का दृश्य बनाने के लिए उपयोगी हो सकता है, सुरक्षा कारणों से या सुरक्षा की एक परत के रूप में यह सुनिश्चित करने के लिए कि आप गलती से इसे संशोधित नहीं करेंगे।
बाइंडफ़्स के साथ:
bindfs -r /some/where /mnt/readonly
लिनक्स के साथ, सरल तरीका:
mount --bind /some/where /mnt/readonly
mount -o remount,ro,bind /mnt/readonly
यह समय के एक छोटे से अंतराल को छोड़ देता है जिसके दौरान /mnt/readonly
पढ़ा-लिखा होता है। यदि यह एक सुरक्षा चिंता है, तो पहले एक निर्देशिका में बाइंड माउंट बनाएं जिसे केवल रूट एक्सेस कर सकता है, इसे केवल पढ़ने के लिए बना सकता है, फिर इसे सार्वजनिक माउंट बिंदु पर ले जा सकता है। नीचे दिए गए स्निपेट में, ध्यान दें कि यह महत्वपूर्ण है कि /root/private
(आरोह बिंदु के ऊपर की निर्देशिका) निजी है; मूल अनुमतियाँ /root/private/mnt
अप्रासंगिक हैं क्योंकि वे माउंट पॉइंट के पीछे छिपे हुए हैं।
mkdir -p /root/private/mnt
chmod 700 /root/private
mount --bind /some/where /root/private/mnt
mount -o remount,ro,bind /root/private/mnt
mount --move /root/private/mnt /mnt/readonly
फाइलसिस्टम उपयोगकर्ताओं और समूहों को उनकी संख्यात्मक आईडी द्वारा रिकॉर्ड करते हैं। कभी-कभी आप कई प्रणालियों के साथ समाप्त होते हैं जो एक ही व्यक्ति को अलग-अलग उपयोगकर्ता आईडी प्रदान करते हैं। यह नेटवर्क एक्सेस की समस्या नहीं है, लेकिन यह उपयोगकर्ता आईडी को तब बेकार कर देता है जब आप डिस्क पर एक सिस्टम से दूसरे सिस्टम पर डेटा ले जाते हैं। मान लीजिए कि आपके पास एक मल्टी-यूजर फाइल सिस्टम (जैसे ext4, btrfs, zfs, UFS,…) के साथ बनाई गई एक डिस्क है, जहां ऐलिस के पास यूजर आईडी 1000 है और बॉब के पास यूजर आईडी 1001 है, और आप उस डिस्क को सुलभ बनाना चाहते हैं ऐसी प्रणाली जहां एलिस की यूजर आईडी 1001 है और बॉब के पास यूजर आईडी 1000 है। यदि आप डिस्क को सीधे माउंट करते हैं, तो एलिस की फाइलें बॉब के स्वामित्व में दिखाई देंगी (क्योंकि उपयोगकर्ता आईडी 1001 है) और बॉब की फाइलें एलिस के स्वामित्व में दिखाई देंगी (क्योंकि यूजर आईडी 1000) है।
आप उपयोगकर्ता आईडी को रीमैप करने के लिए bindfs का उपयोग कर सकते हैं। पहले एक निजी निर्देशिका में डिस्क विभाजन को माउंट करें, जहां केवल रूट इसे एक्सेस कर सकता है। फिर एक सार्वजनिक क्षेत्र में एक बिंदास दृश्य बनाएं, जिसमें यूजर आईडी और ग्रुप आईडी रीमैपिंग हो जो कि ऐलिस और बॉब की यूजर आईडी और ग्रुप आईडी स्वैप करती है।
mkdir -p /root/private/alice_disk /media/alice_disk
chmod 700 /root/private
mount /dev/sdb1 /root/private/alice_disk
bindfs --map=1000/1001:1001/1000:@1000/1001:@1001/1000 /root/private/alice_disk /media/alice_disk
देखें कि गैर-बूट किए गए सिस्टम के उपयोगकर्ता के होम फोल्डर पर कोई अनुमन्य रूप से कैसे फाइल एक्सेस करता है? और माउंट - अन्य उपयोगकर्ता को अपने आप में एक और उदाहरण के रूप में माउंट करें ।
एक कैरोट जेल या कंटेनर सिस्टम की निर्देशिका ट्री के एक उपप्रकार में एक प्रक्रिया चलाता है। यह प्रतिबंधित पहुंच के साथ एक कार्यक्रम चलाने के लिए उपयोगी हो सकता है, उदाहरण के लिए, केवल अपनी फ़ाइलों और उन फ़ाइलों को एक्सेस करने के लिए नेटवर्क सर्वर चलाएं, जो एक ही कंप्यूटर पर संग्रहीत अन्य डेटा के लिए नहीं)। चेरोट की एक सीमा यह है कि कार्यक्रम एक उप-सीमा तक सीमित है: यह स्वतंत्र उपप्रकारों तक नहीं पहुंच सकता है। बाइंड माउंट्स उस मुख्य पेड़ पर अन्य उपप्रकारों को ग्राफ्ट करने की अनुमति देते हैं। यह उन्हें लिनक्स के तहत कंटेनरों के सबसे व्यावहारिक उपयोग के लिए मौलिक बनाता है।
उदाहरण के लिए, मान लीजिए कि एक मशीन एक सेवा चलाती है /usr/sbin/somethingd
जिसके तहत केवल डेटा तक पहुंच होनी चाहिए /var/lib/something
। सबसे छोटी डायरेक्टरी ट्री जिसमें ये दोनों फाइलें होती हैं, वह रूट है। सेवा को कैसे सीमित किया जा सकता है? एक संभावना यह है कि उन सभी फाइलों के लिए कड़ी कड़ी बनाई जाए जिनके तहत सेवा की जरूरत है (कम से कम /usr/sbin/somethingd
और कई साझा लाइब्रेरी) /var/lib/something
। लेकिन इस (हार्ड लिंक जब भी एक फ़ाइल उन्नत बनाया है अद्यतन करने की आवश्यकता) बोझिल है, और अगर काम नहीं करता है /var/lib/something
और /usr
विभिन्न फ़ाइल सिस्टम पर हैं। एक बेहतर समाधान एक तदर्थ रूट बनाने और mounts का उपयोग करने के साथ इसे आबाद करने के लिए है:
mkdir /run/something
cd /run/something
mkdir -p etc/something lib usr/lib usr/sbin var/lib/something
mount --bind /etc/something etc/something
mount --bind /lib lib
mount --bind /usr/lib usr/lib
mount --bind /usr/sbin usr/sbin
mount --bind /var/lib/something var/lib/something
mount -o remount,ro,bind etc/something
mount -o remount,ro,bind lib
mount -o remount,ro,bind usr/lib
mount -o remount,ro,bind usr/sbin
chroot . /usr/sbin/somethingd &
लिनक्स का माउंट नेमस्पेस चौराहों को सामान्य करता है। बाइंड माउंट्स हैं कि कैसे नामस्थानों को लचीले तरीकों से आबाद किया जा सकता है। देखें बनाना एक प्रक्रिया उसी फ़ाइल नाम के लिए एक अलग फ़ाइल को पढ़ने के लिए एक उदाहरण के लिए।
चेरोट्स का एक और उपयोग एक निर्देशिका में एक अलग वितरण को स्थापित करने और इससे प्रोग्राम चलाने के लिए होता है, तब भी जब उन्हें हार्ड-कोडेड पथों पर फ़ाइलों की आवश्यकता होती है जो मौजूद नहीं हैं या आधार प्रणाली पर अलग-अलग सामग्री है। यह उपयोगी हो सकता है, उदाहरण के लिए, 64-बिट सिस्टम पर 32-बिट वितरण स्थापित करने के लिए, जो मिश्रित पैकेजों का समर्थन नहीं करता है, संगतता का परीक्षण करने के लिए वितरण या अन्य वितरणों के पुराने रिलीज को स्थापित करने के लिए, परीक्षण के लिए एक नया रिलीज स्थापित करने के लिए। एक स्थिर आधार प्रणाली आदि को बनाए रखते हुए नवीनतम सुविधाएँ, देखें कि मैं 64-बिट डेबियन / उबंटू पर 32-बिट प्रोग्राम कैसे चलाऊं? डेबियन / उबंटू पर एक उदाहरण के लिए।
मान लीजिए कि आपके पास निर्देशिका के अंतर्गत आपके वितरण के नवीनतम पैकेजों की स्थापना है /f/unstable
, जहां आप उस निर्देशिका पर स्विच करके प्रोग्राम चलाते हैं chroot /f/unstable
। इस संस्थापन से होम डाइरेक्टरी उपलब्ध करने के लिए, उन्हें चुरोट में बांधें:
mount --bind /home /f/unstable/home
कार्यक्रम schroot यह स्वचालित रूप से करता है।
जब आप किसी डायरेक्टरी पर फाइलसिस्टम माउंट करते हैं, तो यह इस बात को छिपा देता है कि डायरेक्टरी के पीछे क्या है। जब तक डायरेक्टरी अनमाउंट नहीं होती तब तक उस डायरेक्टरी की फाइलें दुर्गम हो जाती हैं। क्योंकि BSD nullfs और Linux बाइंड माउंट माउंट इन्फ्रास्ट्रक्चर की तुलना में निचले स्तर पर काम करते हैं, इसलिए nullfs माउंट या फाइलसिस्टम का बाइंड माउंट उन डायरेक्ट्रीज़ को उजागर करता है जो मूल में सबमोट्स के पीछे छिपे थे।
उदाहरण के लिए, मान लीजिए कि आपके पास एक tmpfs फाइल सिस्टम है, जो माउंट किया गया है /tmp
। अगर /tmp
tmpfs फाइल सिस्टम बनाये जाने के दौरान फाइलें थीं , तो ये फाइलें अभी भी प्रभावी रूप से दुर्गम हैं, लेकिन डिस्क स्थान तक ले जा सकती हैं। Daud
mount --bind / /mnt
(लिनक्स) या
mount -t nullfs / /mnt
(FreeBSD) पर रूट फाइल सिस्टम का एक दृश्य बनाने के लिए /mnt
। निर्देशिका /mnt/tmp
रूट फ़ाइल सिस्टम से एक है।
कुछ NFS सर्वर (जैसे NFSv4 से पहले लिनक्स कर्नेल NFS सर्वर) हमेशा एक निर्देशिका निर्यात करते समय वास्तविक निर्देशिका स्थान का विज्ञापन करते हैं। अर्थात्, जब कोई ग्राहक अनुरोध करता है server:/requested/location
, तो सर्वर स्थान पर पेड़ की सेवा करता है /requested/location
। यह कभी-कभी ग्राहकों को अनुरोध करने की अनुमति देने के लिए वांछनीय होता है, /request/location
लेकिन वास्तव में इसके तहत फाइलों की सेवा करता है /actual/location
। यदि आपका NFS सर्वर वैकल्पिक स्थान की सेवा का समर्थन नहीं करता है, तो आप अपेक्षित अनुरोध के लिए बाइंड माउंट बना सकते हैं, जैसे
/requested/location *.localdomain(rw,async)
में /etc/exports
और निम्नलिखित में /etc/fstab
:
/actual/location /requested/location bind bind
कभी-कभी आप एक फ़ाइल बनाने के लिए सांकेतिक लिंक करना चाहते हैं /some/where/is/my/file
के तहत दिखाई /else/where
, लेकिन आवेदन का उपयोग करता है file
सांकेतिक लिंक का विस्तार और खारिज कर दिया /some/where/is/my/file
। एक बाँध माउंट इस को हल करने के कर सकते हैं: बाँध माउंट /some/where/is/my
करने के लिए /else/where/is/my
, और उसके बाद realpath
रिपोर्ट करेंगे /else/where/is/my/file
के नीचे होने की /else/where
, के तहत नहीं /some/where
।
यदि आप बाइंड माउंट्स का उपयोग करते हैं, तो आपको उन अनुप्रयोगों का ध्यान रखना होगा जो फाइलसिस्टम ट्री को पीछे की ओर ले जाते हैं, जैसे बैकअप और इंडेक्सिंग (जैसे एक डेटाबेस का पता लगाने के लिए )।
आमतौर पर, बाइंड माउंट को पुनरावर्ती निर्देशिका ट्रैवर्सल्स से बाहर रखा जाना चाहिए, ताकि प्रत्येक डायरेक्टरी ट्री केवल मूल स्थान पर एक बार ट्रैवर्स हो जाए। यदि संभव हो तो, इन फाइलसिस्टम प्रकारों को अनदेखा करने के लिए बाइंडफ़्स और नुल्फ़्स के साथ ट्रैवर्सल टूल को कॉन्फ़िगर करें। लिनक्स बाइंड माउंट को इस प्रकार नहीं पहचाना जा सकता है: नया स्थान मूल के बराबर है। लिनक्स बाइंड माउंट्स के साथ, या ऐसे टूल के साथ जो केवल पथों को छोड़ सकते हैं और फाइलसिस्टम प्रकारों को नहीं, आपको बाइंड माउंटों के लिए आरोह बिंदुओं को बाहर करने की आवश्यकता है।
Traversals कि फाइल सिस्टम सीमा पर रोक (जैसे find -xdev
, rsync -x
, du -x
, ...) स्वचालित रूप से, जब वे एक bindfs मुठभेड़ या nullfs माउंट बिंदु रोक क्योंकि कि माउंट बिंदु एक अलग फाइल सिस्टम है जाएगा। लिनक्स बाइंड माउंट्स के साथ, स्थिति थोड़ी अधिक जटिल है: एक फाइलसिस्टम सीमा केवल तभी होती है जब बाइंड माउंट एक अलग फाइल सिस्टम को ग्राफ्ट कर रहा है, न कि यदि यह एक ही फाइल सिस्टम के दूसरे हिस्से को ग्राफ्ट कर रहा है।
बिंद आरोह एक अलग स्थान पर एक निर्देशिका वृक्ष का दृश्य प्रदान करते हैं। वे एक ही फाइल को उजागर करते हैं, संभवतः विभिन्न माउंट विकल्पों के साथ और (bindfs के साथ) अलग-अलग स्वामित्व और अनुमतियां। फाइलसिस्टम जो एक निर्देशिका ट्री का एक परिवर्तित दृश्य प्रस्तुत करते हैं, ओवरले फाइलसिस्टम या स्टैकेबल फाइल सिस्टम कहलाते हैं । कई अन्य ओवरले फाइल सिस्टम हैं जो अधिक उन्नत रूपांतरण करते हैं। यहाँ कुछ सामान्य हैं। यदि आपका वांछित उपयोग मामला यहां कवर नहीं किया गया है, तो FUSE फाइल सिस्टम के भंडार की जांच करें ।
bindfs -r
, बस थोड़ा और हल्का।संघ आरोह - एक निर्देशिका के तहत कई फाइल सिस्टम ( शाखाओं को कहा जाता है ) प्रस्तुत करें: यदि tree1
इसमें शामिल हैं foo
और tree2
शामिल हैं, bar
तो उनके संघ दृश्य में foo
और दोनों शामिल हैं bar
। नई फाइलें एक विशिष्ट शाखा, या अधिक जटिल नियमों के अनुसार चुनी गई शाखा को लिखी जाती हैं। इस अवधारणा के कई कार्यान्वयन हैं, जिनमें शामिल हैं:
mount --bind /dir1 /dir1
है? यह उस मामले से कैसे अलग है जहां स्रोत और बढ़ते का लक्ष्य अलग हैं?
/proc/self/mountinfo
। चुरोट के रूप में, इसे अलगाव के लिए इस्तेमाल किया जा सकता है, लेकिन अपने दम पर नहीं। आपको नामस्थानों को माउंट करने की आवश्यकता नहीं है : चेरोट फाइलसिस्टम नामस्थान भाग के लिए पर्याप्त है। आपको यह सुनिश्चित करने की आवश्यकता है कि चेरोट में कोई भी प्रक्रिया चेरोट के बाहर की प्रक्रिया के समान उपयोगकर्ता के रूप में नहीं चलती है।
सरल, जब आप बाइंड माउंट का उपयोग करते हैं, तो होस्ट मशीन पर एक फ़ाइल या निर्देशिका कंटेनर में मुहिम शुरू की जाती है, इसलिए होस्ट मशीन पर फ़ाइल निर्देशिका के अंदर जो भी बदलाव होते हैं, वह स्वचालित रूप से निर्देशिका पर कंटेनर के अंदर उपलब्ध होगा।