एनएफएस कैश: फ़ाइल सामग्री क्लाइंट पर अद्यतन नहीं जब सर्वर पर संशोधित


11

यहाँ मेरा सेट अप है: एक NFS सर्वर मशीन (v4), कई NFS क्लाइंट मशीन।

जब कोई क्लाइंट मशीन NFS माउंट के लिए फाइल लिखती है, तो अन्य क्लाइंट नई सामग्री को तुरंत देखते हैं: कोई समस्या नहीं।

लेकिन, जब सर्वर मशीन फ़ाइल की सामग्री को संशोधित करती है, तो यह नई सामग्री क्लाइंट पर तब तक नहीं दिखाई जाती जब तक मैं lsक्लाइंट से डायरेक्टरी नहीं करता।

मैं इस असंगतता पर बिल्कुल अडिग हूँ ... किसी भी मदद की बहुत सराहना की जाएगी!

इन्फोस:

  • क्लाइंट और सर्वर दोनों पर nfs 1.2.3-r1
  • acregmin, acregmax, acdirmin, acdirmax, लुकअपचे: डिफ़ॉल्ट मान

1
क्या आप अधिक जानकारी के लिए थोड़ा प्रयोग कर सकते हैं ?: ls -iसर्वर पर फ़ाइल को संपादित करने से पहले क्लाइंट पर करें, फिर बाद में। देखें कि क्या नंबर बदलते हैं। यदि वे ऐसा करते हैं क्योंकि सर्वर फ़ाइल को बदल रहा है और क्लाइंट इसे तब तक नोटिस नहीं करता है जब तक कि यह निर्देशिका को बचाता नहीं है। यदि ऐसा है तो माउंट विकल्प सेट करने का प्रयास करें lookupcache=noneऔर देखें कि क्या व्यवहार बदलता है।
पैट्रिक

2
विलंब के लिए क्षमा चाहते हैं। इनओड प्रभावी रूप से बदलता है। मैंने लुकअपचैच विकल्प जोड़ा है, यह काम करने लगता है। मैं कल फिर से जांच करूंगा।
नंबर xiii

जवाबों:


11

आपकी टिप्पणी के आधार पर उत्तर के रूप में जोड़ना।
समाधान lookupcache=noneआपके nfs आरोह विकल्पों में जोड़ने का है।

क्या होता है कि पहली बार आपका क्लाइंट उस फाइल को पढ़ता है जिसे वह एनएफएस फाइल करने के लिए एनएफएस लुकअप करता है। यह तब एनएफएस फाइलिड को कैश करता है, और जब आप फाइल को खोलने के लिए वापस जाते हैं, तो यह कैश का उपयोग करता है। आम तौर पर यह एक समस्या नहीं है जब फ़ाइल को अपडेट किया जाता है तो इसका फाइलिड वही रहता है। लेकिन किसी कारण से पुरानी फ़ाइल को हटाया जा रहा है, और एक नया बनाया गया है (या नाम बदला गया है, या जहां इसकी कोई फ़ाइल नहीं है)।
अब आमतौर पर यह एक समस्या के रूप में या तो जब आपके ग्राहक एक फ़ाइल फ़ाइल को खोलने की कोशिश करता है जो वहाँ नहीं है, तो यह सर्वर से एक त्रुटि प्राप्त करेगा और नया फाइलिड प्राप्त करने के लिए एक और लुकअप करेगा। लेकिन किसी कारण से एनएफएस सर्वर क्लाइंट को उस पुरानी फाइल को खोलने दे रहा है। शायद किसी अन्य क्लाइंट के पास फ़ाइल खुली है और इसलिए अभी तक इसे हटाया नहीं जा रहा है, मुझे नहीं पता।

किसी भी मामले में इसे हल करने का तरीका यह है कि क्लाइंट को हमेशा एनएफएसई माउंट विकल्प का उपयोग करके फ़ाइल खोलने से पहले एक nfslookup करने के लिए कहा जाए lookupcache=none। इसका नकारात्मक पक्ष यह है कि यह महंगा हो सकता है यदि आप अक्सर फाइलें खोल रहे हैं क्योंकि यह एनएफएस सर्वर में अधिक ट्रैफ़िक जोड़ता है।


आपके अन्वेषण के लिए धन्यवाद। NFS सर्वर पर, निर्यात की गई निर्देशिका का ढेर DRBD / LVM / ext4 है। हो सकता है कि यह "बग" पैदा कर रहा हो। मुझे कई क्लाइंट पर समस्या है, लेकिन कुछ अन्य पर नहीं ... मैं अपने सभी परीक्षणों को फिर से करूंगा और आपको बताऊंगा कि क्या इस विकल्प के साथ सब ठीक चल रहा है।
नंबरएक्सिआई

0

माउंट विकल्प को इसमें बदलें hard,intr। मुझे लगता है कि डिफ़ॉल्ट आपके सिस्टम में नरम हो सकता है। ये सहायता करेगा।


दुर्भाग्य से, इन माउंट विकल्पों को जोड़ने से कुछ भी नहीं बदला :(
numberxiii

अपने पहले टेस्ट के लिए, मैं एक रीमाउंट करता हूं। फिर मैंने एक अन्य ग्राहक से साफ माउंट के साथ एक परीक्षण किया है। समस्या को ठीक किया जा रहा है: हम नई सामग्री को देखने के लिए 30 की प्रतीक्षा करते हैं
xxii

मैंने जाँच करने के लिए एक नया ग्राहक (vm) बनाया है: सामग्री के साथ कोई समस्या नहीं!
नंबर xxii

1
@ johnshen64 आपको क्यों लगता है कि मुश्किल इस मुद्दे को हल करेगी? जब कनेक्शन में रुकावट की बात आती है तो मुश्किल / नरम, कैशिंग से कोई लेना-देना नहीं है।
पैट्रिक

0

आप NFS कैश को मैन्युअल रूप से रीफ़्रेश भी कर सकते हैं

sudo mount /nfs-mount -o remount

... यदि आप प्रदर्शन को कम करने के लिए कोई माउंट विकल्प नहीं जोड़ना चाहते हैं।

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