मैं डिस्कलेस आर्क गाइड का पालन करते हुए इस समस्या में फंस गया था , और इसने मुझे धीमा कर दिया। मैं अपने निष्कर्षों को यहां साझा करने जा रहा हूं, क्योंकि मैं उत्सुक हूं कि क्या यह किसी और के लिए काम करेगा।
डिस्कलेस गाइड के अनुसार मेरे पास डिस्क रहित क्लाइंट की रूट फाइलसिस्टम (वास्तविक डेटा जिसे मुझे निर्यात करने की आवश्यकता है) लूपबैक इमेज में है, जिस पर आरोहित किया गया है /srv/des1
:
/srv/des1.img on /srv/des1 type btrfs (rw,relatime,compress=lzo,discard,space_cache)
मैंने तब एक माउंटपॉइंट बनाया /nfs/des1
, फिर माउंट चलाया, और पुष्टि की कि मैं सब कुछ देख सकता हूं:
# mkdir -p /nfs/des1
# mount --bind /srv/des1 /nfs/des1
# ls -l /nfs/des1
bin boot dev usr #[SNIP]
आर्क एनएफएस गाइड का जिक्र करते हुए , मैंने फिर /etc/exports
सर्वर पर निम्नलिखित बातें रखीं:
/nfs/ *(rw,no_root_squash,no_subtree_check,fsid=root)
/nfs/des1/ *{rw,no_root_squash,no_subtree_check,nohide)
मैं तब exportfs -rav
इन परिवर्तनों को लागू करने के लिए सर्वर पर चला ।
हालाँकि, मैंने तब परीक्षण क्लाइंट पर शेयर माउंट किया था: mount server:/des1 /mnt/tmp
केवल यह एक खाली निर्देशिका खोजने के लिए, जब मुझे डिस्कलेस-रूट-फाइल सिस्टम की उम्मीद थी।
इस स्तर पर मैंने हर चीज़ के बारे में तब तक कोशिश की जब तक कि कुछ मुझे exports
मैन पेज में इस विकल्प की ओर नहीं ले जाता :
crossmnt
This option is similar to nohide but it makes it possible for clients
to move from the filesystem marked with crossmnt to exported filesystems
mounted on it. Thus when a child filesystem "B" is mounted on a parent "A",
setting crossmnt on "A" has the same effect as setting "nohide" on B.
तो सब कुछ करने की कोशिश की मैं इसे चारों ओर अदला-बदली कर रहा था ताकि मेरा ऐसा /etc/exports
दिखे:
/nfs/ *(rw,no_root_squash,no_subtree_check,fsid=root,crossmnt)
/nfs/des1/ *{rw,no_root_squash,no_subtree_check)
मैन पेज प्रविष्टि को पढ़ने के बाद आपको लगता है कि यह पिछले कोड की तरह ही प्रभाव होगा, लेकिन जब मैं exportfs -rav
फिर से बदलावों को दर्ज करने के लिए दौड़ा , तो क्लाइंट से रिमाउंट करने की कोशिश की और यह काम कर गया!
/srv/foo --> /bar/foo
?