एक निर्देशिका को लॉक करने से टूटे हुए एनएफएस माउंट को रोकें?


17

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

हालांकि मेरा मुद्दा यह है कि जब भी कोई आरोहण (सर्वर रिस्टार्ट, सर्विस रीस्टार्ट, एक्सटर्नल हार्ड ड्राइव जो सर्वर एक्सपोर्ट किया गया था, आदि) नीचे चला जाता है, तो माउंट ब्लॉक्स को हमेशा के लिए पढ़ने का कोई भी प्रयास। इसका मतलब यह भी है कि lsउस डायरेक्टरी में चलने से फ्रीज़ हो जाता है और सांबा को जोड़ने वाले यूज़र्स भी फ्रीज़ हो जाते हैं। इससे मेरी क्रोन जॉब्स में से कुछ को ब्लॉक करने का कारण भी बना है, जो लगभग सर्वर को क्रैश कर गया क्योंकि इसमें सैकड़ों अवरुद्ध प्रक्रियाएं थीं। यह बहुत कष्टप्रद हो रहा है क्योंकि मुझे आमतौर पर एक टर्मिनल लाना पड़ता है जो lsखत्म होने का इंतजार नहीं कर रहा है (इसे रद्द नहीं कर सकता है), भागो for i in *; do sudo umount -l -f $i; done;, आशा है कि यह काम करता है, समस्या को ठीक करता है, फिर सब कुछ हटा दें।

क्या एक NFS शेयर को स्टाइपुलेशन के साथ माउंट करने का एक तरीका है कि यदि कनेक्शन किसी भी कारण से विफल रहता है (अधिमानतः एक रिट्री पीरियड के साथ) तो माउंट अन-माउंट स्वयं या कम से कम ब्लॉक नहीं करता है?


क्या आप पोस्ट कर सकते हैं /etc/fstab?
कार्लसन १son

जवाबों:


19

आम तौर पर बढ़ते NFS के लिए जब यह इस तरह के झंडे सेट करने के लिए एक अच्छा विचार है:

bg,intr,soft
   bg      If  the  first  NFS  mount  attempt times out, retry the mount in the 
           background.  After a mount operation is backgrounded, all subsequent mounts
           on the same NFS  server  will  be  backgrounded immediately, without first
           attempting the mount.  A missing mount point is treated as a timeout, to
           allow for nested NFS mounts.
   soft    If  an  NFS  file operation has a major timeout then report an I/O error
           to the calling program.  The default is to continue retrying NFS file
           operations indefinitely.
   intr    If  an  NFS  file  operation  has  a major timeout and it is hard mounted,
           then allow signals to interupt the file operation and cause it to return
           EINTR to the calling program.  The default is to not allow file operations
           to be interrupted.

आप इसके अतिरिक्त सेट कर सकते हैं:

timeo=5,retrans=5,actimeo=10,retry=5

जो NFS को समय-समय पर माउंट करने की अनुमति देता है और निर्देशिका को दुर्गम बनाता है यदि NFS सर्वर कनेक्शन को छोड़ देता है, तो रिट्रीट में प्रतीक्षा कर रहा है।

एनएफएस माउंट विकल्पों के बारे में अधिक जानकारी के लिए इस लिंक पर एक नज़र डालें


केवल bg, intr, soft का उपयोग करने से फेडोरा 20 में 120 सेकंड का हैंग हो जाता है। लेकिन टाइमओ = 5, रिट्रान्स = 5, एक्टीमो = 10, रिट्री = 5 को जोड़ना यह अच्छा और त्वरित बनाता है। धन्यवाद!
ग्रेग शेरेमेटा

4
"कर्नेल 2.6.25 के बाद intr / nointr माउंट विकल्प को हटा दिया गया है। केवल SIGKILL इन कर्नेल पर लंबित NFS ऑपरेशन को बाधित कर सकता है, और यदि निर्दिष्ट किया जाता है, तो इस माउंट विकल्प को पुराने कर्नेल के साथ पीछे की संगतता प्रदान करने के लिए अनदेखा किया जाता है।" "यह विकल्प पिछड़े संगतता के लिए प्रदान किया गया है। इसे कर्नेल 2.6.25 के बाद अनदेखा किया गया है।"
डेविड सी। बिशप

1
@ DavidC.Bishop वह बोली कहाँ से है? क्या आप एक लिंक दे सकते हैं? धन्यवाद।
18

2
@becko: SIGKILL उद्धरण nfs मैन पेज से है (बस 'nointr' के लिए नीचे खोजें)। नए संस्करण, जैसे कि मेरे सिस्टम पर अब बस पढ़ा जाता है "यह विकल्प पिछड़े संगतता के लिए प्रदान किया गया है। इसे कर्नेल 2.6.25 के बाद अनदेखा किया गया है।" पंक्ति
डेविड सी। बिशप
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.