एनएफएस शेयरों को ठीक से निर्यात और आयात कैसे करें, जिसमें उप-बिंदुओं के साथ माउंट बिंदु भी हैं?


21

सर्वर विकल्प के साथ एनएफएस के माध्यम से Aनिर्देशिका निर्यात करता /srvहै nohide। एक उपनिर्देशिका /srv, भीतर , विकल्प की तरह /srv/fooNFS सर्वर पर किसी अन्य स्थान के लिए एक माउंट बिंदु है --bind, जैसे

server# mount --bind /bar/foo/ /srv/foo/

क्लाइंट एनएफएस का उपयोग करने पर इसे Bआयात A:/srvऔर माउंट करता है /mnt/srv। की सामग्री /mnt/srvहैं A:/srv

समस्या यह है कि /mnt/srv/fooखाली है, जबकि मैं A:/bar/foo/वहां की सामग्री को देखने की उम्मीद कर रहा हूं ।

एनएफएस शेयरों को ठीक से निर्यात और आयात कैसे करें, जिसमें उप-बिंदुओं के साथ माउंट बिंदु भी हैं?


हो सकता है कि A से सिर्फ सिम्लिंक का उपयोग करना आसान हो /srv/foo --> /bar/foo?
ckhan

1
मैंने यह कोशिश की। यह /bar/fooक्लाइंट मशीन पर प्राप्त करने की कोशिश करेगा B, सर्वर पर नहीं A
मई को mbaitoff

जवाबों:



10

मैं डिस्कलेस आर्क गाइड का पालन ​​करते हुए इस समस्या में फंस गया था , और इसने मुझे धीमा कर दिया। मैं अपने निष्कर्षों को यहां साझा करने जा रहा हूं, क्योंकि मैं उत्सुक हूं कि क्या यह किसी और के लिए काम करेगा।

डिस्कलेस गाइड के अनुसार मेरे पास डिस्क रहित क्लाइंट की रूट फाइलसिस्टम (वास्तविक डेटा जिसे मुझे निर्यात करने की आवश्यकता है) लूपबैक इमेज में है, जिस पर आरोहित किया गया है /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फिर से बदलावों को दर्ज करने के लिए दौड़ा , तो क्लाइंट से रिमाउंट करने की कोशिश की और यह काम कर गया!


8

ऐसा लगता है कि क्लाइंट के लिए दृश्यमान होने के लिए हर माउंट सब-पॉइंट को NFS सर्वर द्वारा निर्यात किया जाना चाहिए। /etc/exportsफ़ाइल के ऊपर की स्थिति में निम्नलिखित की तरह दिखना चाहिए:

/srv        *(rw,fsid=0,nohide,no_subtree_check)
/srv/foo    *(rw,nohide,no_subtree_check)

फिर, /srvविकल्प के साथ ग्राहक पर आयात करने से -t nfsदोनों /srvऔर /srv/fooठीक से उपलब्ध होंगे।

ओपी द्वारा संपादित

यह रेखा

    /srv/foo    *(rw,fsid=0,nohide,no_subtree_check)

के बजाय मेरे मामले में काम किया है

    /srv/foo    *(rw,nohide,no_subtree_check) 

1
मूल पर crossmnt?
मेफेक्ट

2

मैं वास्तव में यह भी करना चाहता था, लेकिन ऐसा लगता है कि इस विचार के साथ समस्याएं हैं क्योंकि एनएफएस क्लाइंट एकल माउंट के क्लाइंट के दृश्य के भीतर अद्वितीय होने के लिए फाइलों की इनकोड संख्याओं की अपेक्षा करते हैं ।

इस ब्लॉग पोस्ट में समस्याएं विस्तृत हैं (मेरे द्वारा नहीं): http://utcc.utoronto.ca/~cks/space/blog/unix/MultiFilesystemNFSIssue

मैंने अलग से फाइलसिस्टम माउंट करने का फैसला किया है और उन्हें एक साथ समेटना है, जो सभी एनएफएस ग्राहकों के लिए काम करना चाहिए।


1
जब भी यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, तो उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर होगा
SLM

0

नोट: केवल एकल उपयोगकर्ता सक्षम है

यह जो जोड़ता है वह सर्वर साइड और क्लाइंट साइड के संपादन का एक सेट है। सर्वर की तरफ, /etc/exportsऔर /etc/fstabक्लाइंट की तरफ।

सर्वर साइड

  • लिनक्स मिंट 18.3 सिल्विया 32-बिट
  • कर्नेल लिनक्स 4.4.0-138-जेनेरिक i686
  • आसुस eeepc

    $ cat /etc/exports 
    #insert shares (one for each mounted partition sub-folder):      
    /nfsshare/ /192.168.1.155(rw,no_root_squash,no_subtree_check,fsid=root,crossmnt)
    /nfsshare/media/ 192.168.1.155(rw,no_root_squash,no_subtree_check)
    /nfsshare/extra/ /192.168.1.155(rw,no_root_squash,no_subtree_check)   
    
    $ cat /etc/fstab  
    #shared media files on /media/ed/
    /media/ed/ /nfsshare/ nfs bind 0 0
    /media/ed/media/ /nfsshare/media/ nfs bind 0 0
    /media/ed//extra /nfsshare/extra/ nfs bind 0 0
    

ग्राहक की ओर

  • लिनक्स मिंट 19 तारा 64-बिट
  • कर्नेल लिनक्स 4.15.0-38-जेनेरिक x86_64

    $ cat /etc/fstab
    #NFS Shares line added
    192.168.1.158:/nfsshare /mnt/share nfs rw,soft,intr,noatime,x-gvfs-show
    

1
यह क्या है? क्या यह एक फाइल है? कई फाइलें? कृपया अपने उत्तर को स्पष्ट करने के लिए फ़ॉर्मेटिंग टूल का उपयोग करें । क्या आप कृपया संपादित करें और बताएं कि आपका उत्तर प्रश्न का उत्तर कैसे देता है?
terdon

(१) अपने शब्दों का प्रयोग करें। (२) यह प्रस्ताव क्या है जो पहले से प्रस्तुत नहीं किया गया है?
जी-मैन का कहना है कि 'मोनिका'

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