Mount.nfs: उबंटू मशीनों पर बढ़ते समय सर्वर द्वारा उपयोग से इनकार कर दिया गया?


64

मेरे पास उत्पादन में तीन मशीनें हैं -

machineA    10.66.136.129
machineB    10.66.138.181
machineC    10.66.138.183

और उन सभी मशीनों में उबंटू 12.04 स्थापित है और मुझे उन सभी तीन मशीनों की जड़ प्राप्त है।

अब मैं अपनी उपरोक्त मशीनों में नीचे की बातें करने वाला हूं -

Create mount point /opt/exhibitor/conf
Mount the directory in all servers.
 sudo mount <NFS-SERVER>:/opt/exhibitor/conf /opt/exhibitor/conf/

मैंने पहले ही /opt/exhibitor/confउन सभी तीन मशीनों में निर्देशिका बनाई है जैसा कि ऊपर उल्लेख किया गया है।

अब मैं एक माउंट पॉइंट बनाने की कोशिश कर रहा हूं। इसलिए मैंने नीचे की प्रक्रिया का पालन किया -

उपरोक्त सभी तीन मशीनों में एनएफएस सपोर्ट फाइल और एनएफएस कर्नेल सर्वर स्थापित करें

$ sudo apt-get install nfs-common nfs-kernel-server

उपरोक्त तीनों मशीनों में साझा निर्देशिका बनाएं

$ mkdir /opt/exhibitor/conf/

/etc/exportsउपरोक्त सभी तीन मशीनों में इस तरह से प्रवेश किया और जोड़ा -

# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#
/opt/exhibitor/conf/     10.66.136.129(rw)
/opt/exhibitor/conf/     10.66.138.181(rw)
/opt/exhibitor/conf/     10.66.138.183(rw)

मैंने मशीनबी और मशीनसी से नीचे की तरह मशीनए पर माउंट करने की कोशिश की है और यह मुझे यह त्रुटि देता है-

root@machineB:/# sudo mount -t nfs 10.66.136.129:/opt/exhibitor/conf /opt/exhibitor/conf/
mount.nfs: access denied by server while mounting 10.66.136.129:/opt/exhibitor/conf

root@machineC:/# sudo mount -t nfs 10.66.136.129:/opt/exhibitor/conf /opt/exhibitor/conf/
mount.nfs: access denied by server while mounting 10.66.136.129:/opt/exhibitor/conf

क्या मेरी /etc/exportsफ़ाइल अच्छी लगी? मुझे पूरा यकीन है, मैंने अपनी exportsफाइल गड़बड़ कर दी है। जैसा कि मेरे पास निर्यात फ़ाइल में सभी तीन मशीनों में समान सामग्री है।

किसी भी विचार मैं यहाँ क्या गलत कर रहा हूँ? और /exportsयहाँ सही फ़ाइल क्या होगी ?


1
होस्ट / क्लाइंट पर FYI डबल चेक की अनुमति। यदि एनएफएस होस्ट की अनुमति है 0750या 0700फिर माउंट करने का प्रयास करने वाला क्लाइंट इसी त्रुटि संदेश के साथ विफल होने की बहुत संभावना है । मैं से मेजबान बदल 0750करने के लिए 0755और फिर त्रुटि दूर चला गया और सब कुछ ठीक था।
ट्रेवर बॉयड स्मिथ

जवाबों:


70

exportfs

जब आप /etc/exportsएक सर्वर पर एक फ़ाइल बनाते हैं तो आपको यह सुनिश्चित करने की आवश्यकता होती है कि आप इसे निर्यात करते हैं। आमतौर पर आप इस कमांड को चलाना चाहेंगे:

$ exportfs -a

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

showmount

दूसरी चीज़ जो मैं अक्सर करता हूँ वह है अन्य मशीनों से मैं किसी भी मशीन की जाँच करूँगा जो showmountकमांड का उपयोग करके नेटवर्क को NFS शेयर निर्यात कर रहा है ।

$ showmount -e <NFS server name>

उदाहरण

उदाहरण के लिए कहो मैं scully में लॉग इन हूं।

$ showmount -e mulder
Export list for mulder:
/export/raid1/isos     192.168.1.0/24
/export/raid1/proj     192.168.1.0/24
/export/raid1/data     192.168.1.0/24
/export/raid1/home     192.168.1.0/24
/export/raid1/packages 192.168.1.0/24

fstab

बूट पर इन माउंट करने के लिए आप इस लाइन को अपने क्लाइंट मशीनों में जोड़ देंगे जो NFS माउंट का उपभोग करना चाहते हैं।

server:/shared/dir /opt/mounted/dir nfs rsize=8192,wsize=8192,timeo=14,intr

automounting

यदि आप इन सर्वरों को रिबूट करने जा रहे हैं, तो मेरा सुझाव है कि आप autofsइन प्रविष्टियों को जोड़ने के बजाय ऑटोमाउंटिंग ( ) स्थापित करने पर ध्यान दें /etc/fstab। यह थोड़ा अधिक काम है लेकिन प्रयास के लायक है।

ऐसा करने से आप सर्वर को एक-दूसरे से अधिक स्वतंत्र रूप से रिबूट कर सकेंगे और केवल एनएफएस माउंट का निर्माण करेंगे जब यह वास्तव में आवश्यक हो और / या इसका उपयोग किया जा रहा हो। जब यह निष्क्रिय हो जाएगा तो यह बिना सोचे-समझे मिल जाएगा।

संदर्भ


सुझाव के लिए धन्यवाद। मैंने बस यही किया और अब यह ठीक है। भागने के बजाय exportfs -a, मैं भागा exportfs -rv। क्या उन दोनों के बीच कोई अंतर है? और मेरे मामले में, showmount -e 10.66.136.129मैं मशीनबी और मशीनसी से करूंगा। सही?
शस्त्रागार

1
@TechGeeky - वास्तव में नहीं। exportfs -rvबस एक reexport + क्रिया है। -aसब कुछ निर्यात करेगा। के रूप में showmount -eहाँ आप इसे उन मशीनों या एक के शेयरों की सेवा से चला सकते हैं।
slm

ओके .. थैंक्स, अबकी समझदारी .. एक आखिरी बात। मेरा मानना ​​है कि इस आरोह बिंदु चीज़, fstab फ़ाइल में एक और चीज़ है .. सही है? अब कौन सी मशीन fstab फ़ाइल, मैं संशोधित करने वाला हूँ? और मुझे वहां क्या सामग्री जोड़ने वाली है? कोई उपाय?
शस्त्रागार

@TechGeeky अपडेट देखें। आप एनएफएस शेयरों का उपभोग करने के इच्छुक ग्राहकों के लिए प्रविष्टियाँ जोड़ते हैं।
slm

1
उबंटू पर, आपको सबसे पहले निर्यात करने के लिए nfs-k गिने-सर्वर को उपलब्ध होना चाहिए। स्रोत: manpages.ubuntu.com/manpages/trusty/man8/exportfs.8.html
flickerfly

40

मैंने एक ही त्रुटि देखी ( mount.nfs: access denied by server while mounting...) और समस्या -o v3निम्नानुसार विकल्प द्वारा तय की गई थी :

$ sudo mount -o v3 a-nfs-server:/path/to/export /path/to/mount
  • सर्वर Ubuntu 14.04 64bit LTS है।
  • ग्राहक CentOS 6.5 64bit है।

2
बाकी किसी ने भी मदद नहीं की, यह समाधान था, मेरे मामले में।
उरिखीदुर

1
मैंने यह कोशिश की और मिल गया mount.nfs: Connection timed out। (क्लाइंट Ubuntu 14.04 LTS 64-बिट है। सर्वर QTS 4.0.2 2016/01/09 के साथ एक QNAP NFS है।)
स्टीव

हां, जब मैंने अपने सर्वर को Ubuntu 16 में अपग्रेड किया तो यही समस्या और समाधान था।
श्रीधर सरनोबत

2
इससे सावधान रहें। NFSv3 प्राचीन और पुराना अप्रचलित है; यह वास्तव में अब और इस्तेमाल नहीं किया जाना चाहिए (और यह तब भी सच था जब यह पोस्ट लिखा गया था)।
माइकल हैम्पटन

7

मेरे मामले में nfs4 का उपयोग करके काम करता है:

$ sudo माउंट -t nfs4 सर्वर-नाम: / / पथ / से / माउंट

में /etc/exportसर्वर पर फ़ाइल

/Path/to/export 192.168.1.0/24(rw,sync,fsid=0,no_root_squash,crossmnt,no_subtree_check,no_acl)

fsid=0/Path/to/exportजब आप शेयर माउंट करते हैं तो रूट डायरेक्टरी बनाता है ।

crossmnt, क्योंकि मेरे पास निर्यात की गई फ़ाइल सिस्टम में कुछ अन्य ड्राइव हैं, जिन्हें मैं भी एक्सेस करना चाहता हूं।

no_root_squash, क्योंकि मैं क्लाइंट की तरफ से रूट यूजर (सु) के रूप में एक्सेस करना चाहता हूं। मुझे पूरा यकीन है कि मैं केवल वही हूं जो अपने स्थानीय नेटवर्क में ऐसा कर सकता हूं।

सर्वर और क्लाइंट उबंटू 14.04 64 बिट हैं।

यदि आप nfs3 का उपयोग करना चाहते हैं, तो @ fumisky-wells का उत्तर मेरे लिए भी काम करता है।


आपने खुद को एक उत्थान किया है श्रीमान; मेरे पास एक NAS है, इसलिए / etc / निर्यात फ़ाइल को संशोधित करना एक विकल्प नहीं है, लेकिन संपूर्ण पथ को निर्दिष्ट करने से चाल चली गई। बहुत बढ़िया।
MDMoore313

4

मुझे एक ही त्रुटि संदेश मिल रहा था और मेरा मुद्दा क्लाइंट मशीन के कारण एक ही लैन से जुड़े दो नेटवर्क इंटरफेस होने के कारण निकला। सर्वर को एक विशिष्ट आईपी पते की उम्मीद करने के लिए कॉन्फ़िगर किया गया था और ट्रैफ़िक दूसरे इंटरफ़ेस पर बाहर जा रहा था जिसमें एक dhcp आईपी पता है। इसलिए मैंने सिर्फ एक स्थिर IP पता रखने के लिए दूसरा इंटरफ़ेस कॉन्फ़िगर किया और सर्वर कॉन्फ़िगरेशन में दूसरा स्थिर IP पता भी जोड़ा।


मैं चाहता हूँ कि यह ऊपर की ओर अधिक था, ठीक यही मेरे मामले में हो रहा था
ब्रायन लीशमैन

3

/etc/exportsएनएफएस सर्वर मशीन पर एडिट करने की जरूरत है , क्लाइंट्स की नहीं, जैसा कि आपने बताया कि एनएफएस सर्वर द्वारा चेक किया जाता है, जब क्लाइंट किसी शेयर को एक्सेस करने का अनुरोध करता है।

यदि आप /etc/exportsएनएफएस सर्वर पर निम्नलिखित डालते हैं , तो यह काम करना चाहिए:

/opt/exhibitor/conf 10.66.136.129(rw)
/opt/exhibitor/conf 10.66.138.181(rw)
/opt/exhibitor/conf 10.66.138.183(rw)

मेरे पास पहले से ही मशीनएए पर मेरे निर्यात फ़ाइल में है। और फिर मैं इसे मशीनबी और मशीनसी से आगे बढ़ा रहा हूं और यह किसी भी तरह से काम नहीं करता है .. क्या यह संभव है कि मैंने निर्यात फ़ाइल में सभी तीन मशीनों में एक ही जानकारी जोड़ी है, क्या यह एक समस्या होगी? मुझे केवल मशीनए में जोड़ना चाहिए?
शस्त्रागार

1
@TechGeeky क्या आपने NFS के निर्यात को पुनः करने के बाद पुनः लोड किया था exportfs -a?
क्रिस डाउन

मैंने बस यही किया और अब यह ठीक है। मैं इस पूरी बात को बेहतर तरीके से समझने की कोशिश कर रहा हूं, इसलिए मेरा पहला सवाल यह है कि मशीनए एनएफएस सर्वर है और मशीनबी और मशीनसी ग्राहक हैं .. सही है? दूसरा सवाल यह है कि यदि मशीनए मेरा एनएफएस सर्वर है, तो मशीनए के केवल / आदि / निर्यात फाइल में, मैं उपरोक्त तीन पंक्तियों को जोड़ दूंगा जैसा कि आपने अपने समाधान में उल्लेख किया है और हम मशीनबी और मशीनसी के निर्यात फ़ाइल को नहीं छूएंगे? सही बात?
शस्त्रागार

@TechGeeky जब तक आप मशीन A पर हिस्सेदारी बढ़ा रहे हैं, तब तक दोनों मामलों में यह सही है।
क्रिस डाउन

धन्यवाद। अब मैं इसे और बेहतर समझ रहा हूं। मैंने यह सवाल क्यों पूछा है क्योंकि मेरे पास भी पर्यावरण के समान सामान है। और मैंने उन तीन मशीनों को पर्यावरण के क्षेत्र में करने के लिए किया, मैंने अपने सभी / / / तीन मशीनों में निर्यात की गई तीन पंक्तियों को केवल मशीनए में जोड़ने के बजाय तीन मशीनों में जोड़ दिया लेकिन फिर भी यह ठीक काम करती है। और अब मैंने पूरी अवधारणा को और अधिक स्पष्ट रूप से समझ लिया है। सहायता के लिए धन्यवाद।
शस्त्रागार

2

अगर nfs-client linux कंटेनर के अंदर निर्यात की गई हिस्सेदारी को माउंट करने की कोशिश कर रहा है, तो कंटेनर को विशेषाधिकार प्राप्त मोड में चलना चाहिए।

कर्ता के मामले में;

$ docker run -it --rm --privileged ubuntu:14.04


2

मेरे लिए समस्या यह थी कि मैं ग्राहक के/etc/exports/ बजाय सर्वर के आईपी पते का उपयोग कर रहा था ।

बात यह है, आपको सर्वर पर पहुंच प्रदान करने वाले सभी ips लगाने चाहिए /etc/exports/


1

घंटों के लिए इसी त्रुटि संदेश से जूझने के बाद, मेरी समस्या एनएफएस होस्ट पर अच्छे पुराने जमाने की लिनक्स फाइल अनुमतियों से ज्यादा जटिल नहीं थी।

जिस फ़ोल्डर को मैं साझा करने की कोशिश कर रहा था ( /home/foo/app/share) के पास सही अनुमतियाँ थीं, लेकिन क्योंकि उपयोगकर्ता के होम डायरेक्टरी ( /home/foo) में इस 0750पर मोड था, साझा डीआईआर तक पहुंचने के लिए एनएफएस इसमें कोई बदलाव करने में सक्षम नहीं था।

जैसे ही मैंने उपयोगकर्ता के होम डायरेक्टरी को मोड पर सेट किया 0751, एनएफएस सेवा इसमें आगे बढ़ने में सक्षम थी और मैं अपने क्लाइंट मशीन से शेयर को माउंट करने में सक्षम था।


0

मेरे लिए समस्या यह थी, कि मेरे राउटर ने क्लाइंट के उपयोग किए गए आईपी-पते को बदल दिया, ताकि /etc/exportsसर्वर मशीन में प्रवेश केवल एक आईपी पते के लिए उपयोग हो सके, जिसका कोई और उपयोग नहीं किया गया था।


0

यदि आप नेटवर्क एडेप्टर के साथ वर्चुअल बॉक्स इंस्टेंस पर एनएफएस शेयर को माउंट करने का प्रयास करते हैं तो एक ही बात हो सकती है NAT

Bridged Adapterवर्चुअल मशीन नेटवर्क सेटिंग्स में चुनना इस समस्या को ठीक करता है।


0

मुझे पता है कि यह एक पुराना धागा है, लेकिन मेरी समस्या LXC और AppArmor से थी

AppArmor को मारना , या एक अपवाद प्रोफ़ाइल जोड़ना, इसे ठीक किया।


यह भी देखें कि यदि आप प्रॉक्सी का उपयोग कर रहे हैं तो unix.stackexchange.com/q/396678/231113
myrdd

0

यह त्रुटि एन्क्रिप्टेड पथ को माउंट करने का प्रयास करने के कारण भी हो सकती है। (उदाहरण के लिए अपनी गृह निर्देशिका में, यदि आपने इसे एन्क्रिप्ट करना चुना है)


0

एकमात्र समाधान जो मेरे लिए काम करता था, उसके साथ शुरू होने वाले फाइल सिस्टम को निर्यात करना था /srv। ऐसा लगता है कि यह NFSv4 की एक सीमा (या डिफ़ॉल्ट विकल्प, कम से कम) है।

चूँकि मैं एक USB ड्राइव को निर्यात करने की कोशिश कर रहा था /media, जो अपने आप ही हो जाती है , इसलिए मुझे उस 'मुहिम' के तहत आने के लिए एक रास्ता चाहिए था /srv। इसे पूरा करने के लिए:

sudo mkdir /srv/videos
sudo mount --bind /media/jim/wdportable/videos /srv/videos

और में /etc/exports:

/srv/videos 192.168.0.200(ro)

जब मैंने /media/jim/wdportable/videosसीधे निर्यात किया, तो क्लाइंट पर माउंट करने का प्रयास हमेशा किया गया mount.nfs: access denied by server

-o v3समाधान काम किया, लेकिन मैं v3 के लिए मजबूर नहीं करना चाहता था।


2
मैं लगभग गारंटी दे सकता हूं कि यह /media/jimफ़ोल्डर पर अनुमतियों के कारण होता है । यदि आप जिस निर्देशिका को साझा करने का प्रयास कर रहे हैं, वह केवल 700या 750मोड के साथ डीआईआर है (या अंदर है) , तो एनएफएस उस पर कोई निशान नहीं लगा सकेगा। यदि आप इसे बदल /media/jimदेते हैं 751, तो यह शायद काम करेगा।
डेल एंडरसन

@DaleAnderson सही है। एक सफल sudo mount -o v3 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-share(रासपी 3 बी + पर रास्पियन) के बाद, मैंने भी कोशिश की sudo chmod 751 /media/pi। बाद में, मुझे -o v3अब और ज़रूरत नहीं sudo mount 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-shareथी : काम किया (अनमाउंट करने के बाद)। @DaleAnderson को बहुत धन्यवाद।
थॉमस प्रक्सल

शायद यही समस्या है। मुझे लगता है कि मैं उन दिनों का उपयोग कर रहा हूं जब एनएफएस सर्वर सिर्फ रूट के रूप में चलता था और आँख बंद करके निर्यात किया जाता था। मैं इसका परीक्षण करूंगा।
जिम स्टीवर्ट

0

यह ध्यान दिया जाना चाहिए कि मुझे यहां ले जाने वाले एक लिंक किए गए पृष्ठ में मेरा सही उत्तर था जो कि आप निर्यात में आईपी पते में * वाइल्डकार्ड का उपयोग नहीं कर सकते हैं। यह या तो * (सभी आईपी) है या डोमेन नाम IE: * .domain.com में वाइल्डकार्ड के रूप में उपयोग किया जाता है।

जैसे: यह सही है

/Path/to/export 192.168.1.0/24(flags)

यह काम नहीं करेगा (या कम से कम गलत है), लेकिन मेरे लिए सालों तक काम किया जब तक कि मैंने फेडोरा वीएम से निर्यात को बढ़ाने की कोशिश नहीं की।

/Path/to/export 192.168.1.*(flags)


मुझे लगता है कि यह विफल होने का कारण संभवत: NFSv4 है क्योंकि मुझे पता है कि फेडोरा एज नए सामान को खून बह रहा है और मेरे पुराने वीएम ने ठीक काम किया है, लेकिन शायद पुराने एनएफएस संस्करण का उपयोग किया है। सिर्फ एक अनुमान।
FreeSoftwareServers
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.