2011-11-29 25 views
19

मुझे एनएफएस क्लाइंट-साइड विशेषता कैशिंग के साथ परेशानी है। मैं कुछ सर्वर का उपयोग कर रहा हूं, एक एनएफएस सर्वर है और अन्य एनएफएस क्लाइंट सर्वर हैं।एनएफएस कैश-सफाई कमांड?

सभी सर्वर डेबियन (लेनी, 2.6.26-2-amd64 लिनक्स) हैं और संस्करण निम्न हैं।

% dpkg -l | grep nfs 
ii libnfsidmap2      0.20-1      An nfs idmapping library 
ii nfs-common       1:1.1.2-6lenny1   NFS support files common to client and server 
ii nfs-kernel-server     1:1.1.2-6lenny1   support for NFS kernel server 

एनएफएस सर्वर में,/etc/निर्यात निम्नलिखित के रूप में लिखा है:

server:/export-path  /mountpoint nfs rw,hard,intr,rsize=8192,async 0 0 

के रूप में:

/export-path 192.168.0.0/255.255.255.0(async,rw,no_subtree_check) 

एनएफएस ग्राहकों में,/etc/fstab निम्नलिखित के रूप में लिखा है आप देख सकते हैं, "async" विकल्प बहु-क्लाइंट एक्सेस प्रदर्शन के लिए उपयोग किया जाता है। हालांकि, कभी-कभी यह झूठी-कैशिंग त्रुटियों का कारण बन सकता है।

चूंकि मैं कई सर्वर बनाए रख रहा हूं (और मुझे माउंट विकल्पों को बदलने की इतनी मजबूत अनुमति नहीं है), मैं/etc/export nor/etc/fstab को संशोधित नहीं करना चाहता हूं। मुझे लगता है कि यह पर्याप्त है यदि मेरे पास एक कमांड लाइन उपकरण है जो उपयोगकर्ता अनुमति के साथ एनएफएस क्लाइंट-साइड विशेषता कैश को "साफ़ करता है"।

कृपया मुझे बताएं कि ऐसे आदेश हैं या नहीं।

धन्यवाद,


(संलग्न)

मैं "झूठी कैशिंग त्रुटि" से मतलब है,

% ls -l /data/1/kabe/foo     
ls: cannot access /data/1/kabe/foo: No such file or directory 
% ssh another-server 'touch /data/1/kabe/foo' 
% ls -l /data/1/kabe/foo 
ls: cannot access /data/1/kabe/foo: No such file or directory 

कभी-कभी ऐसे मामलों होता है। समस्या फ़ाइल सामग्री नहीं है लेकिन फ़ाइल विशेषताएँ (= दंत चिकित्सा जानकारी) क्योंकि एनएफएस का कहना है कि यह बंद-टू-ओपन स्थिरता की गारंटी देता है।

+0

मुझे इस समस्या के संभावित समाधान की जांच करते समय यह प्रश्न मिला (इसके लिए +1)। यदि एनएफएस अन्यथा स्थिरता प्रदान नहीं कर सकता है तो मैं स्थानीय कैश का कोई स्थानीय कैशिंग या बहुत छोटा समाप्ति समय पसंद करूंगा। गीगाबिट लैन में बाधा नहीं होनी चाहिए, इसलिए मुझे ऐसा करने की बहुत अधिक प्रदर्शन हानि की उम्मीद नहीं है। एक आदर्श समाधान फाइल सिस्टम में सर्वर की निगरानी में परिवर्तन होगा और ग्राहकों को सूचित करेगा जब उनके कैशों को फ्लश किया जाना चाहिए, लेकिन मुझे नहीं लगता कि एनएफएस इसका समर्थन करता है। – Tronic

+0

चूंकि बैंडविड्थ यहां महत्वपूर्ण नहीं है लेकिन * विलंबता *, गीगाबिट लैन के पास अभी भी कुछ प्रदर्शन प्रभाव है। एफडब्ल्यूआईडब्लू, 'लुकअप कैश = किसी ने' ने 'गिट क्लोन' के लिए 2.7 सेकेंड से 20 सेकंड तक समय बढ़ाया। –

उत्तर

18

"झूठी-कैशिंग त्रुटियों" से आपका क्या मतलब है, इस पर निर्भर करता है कि sync आपको जो चाहिए उसे प्राप्त कर सकता है। यह सभी फाइल सिस्टम बफर फ्लश करेगा।

यदि आवश्यक हो, तो आप /proc/sys/vm/drop_caches का उपयोग कर कर्नेल में वीएम कैश को भी साफ़ कर सकते हैं।

# To free pagecache 
echo 1 > /proc/sys/vm/drop_caches 

# To free dentries and inodes 
echo 2 > /proc/sys/vm/drop_caches 

# To free pagecache, dentries and inodes 
echo 3 > /proc/sys/vm/drop_caches 
+0

उत्तर के लिए धन्यवाद। मैंने अपने प्रश्न के लिए "झूठी-कैशिंग त्रुटियों" से मेरा क्या मतलब जोड़ा है। इस समस्या को केवल 'सिंक' द्वारा हल नहीं किया गया है। मुझे लगता है कि आपके प्रस्ताव के दूसरे आदेश हैं, इसलिए मैं बाद में कोशिश करूंगा। –

+0

यह काम किया! बहुत बहुत धन्यवाद। –

+1

मुझे एक ही समस्या है, मैं विशिष्ट फ़ोल्डर पर सिंक करना चाहता हूं, मान लीजिए कि मेरे पास रूट नहीं है, इसलिए मैं प्रस्तावित कमांड नहीं चला सकता – Zamir

1

एनएफएस सर्वर पर स्पष्ट/var/lib/nfs/rmtab फ़ाइल।

नीचे दिए गए आदेश स्मृति समस्याओं से निपटने के लिए उपयोग किए जाते हैं। और यह भी बहुत खतरनाक है। Soem बार यह उर आवेदन बॉक्स

# sync 

# To free pagecache 
echo 1 > /proc/sys/vm/drop_caches 

# To free dentries and inodes 
echo 2 > /proc/sys/vm/drop_caches 

# To free pagecache, dentries and inodes 
echo 3 > /proc/sys/vm/drop_caches 
3

AFAIK पर होस्ट दुर्घटना होगा, sync और async विकल्पों विशेषता कैशिंग के स्रोत नहीं हैं। Async सर्वर को डेटा फाइल सिस्टम में डेटा सहेजने में देरी करने की अनुमति देता है, उदा। यह एनएफएस सर्वर विफलताओं के मामले में लिखने की स्थायित्व को प्रभावित करता है, लेकिन यदि एनएफएस सर्वर स्थिर है तो async एनएफएस क्लाइंट को प्रभावित नहीं करता है।

lookupcache=positive एनएफएस माउंट विकल्प है जिसका उपयोग नकारात्मक लुकअप कैशिंग को रोकने के लिए किया जा सकता है, उदा। एनएफएस सर्वर पर वास्तव में मौजूद होने पर "ऐसी कोई फ़ाइल या निर्देशिका नहीं" लौटा रहा है। man nfs में देखें।

6

किसी दिए गए प्रक्रिया के भीतर, फ़ाइल की मूल निर्देशिका पर opendir और closir को कॉल करने से NFS कैश को अमान्य कर दिया जाता है। मैंने नौकरी शेड्यूलर प्रोग्रामिंग करते समय इसका इस्तेमाल किया। बहुत, बहुत उपयोगी। कोशिश करो!

+0

इस सुझाव के लिए आपको बहुत बहुत धन्यवाद – mob

1

आप एनएफएस के विशेषता कैश के प्रभाव देख रहे हैं। man nfs देखें, और DATA AND METADATA COHERENCE देखें।

एनएफएस डिफ़ॉल्ट कैश से 30 सेकंड (acregmin और acdirmin) की एक न्यूनतम और अधिकतम 60 सेकंड (acregmax और acdirmax) की एक अधिकतम के लिए जिम्मेदार बताते हैं। आप इन सभी को actimeo के साथ ओवरराइड कर सकते हैं, या पूरी तरह से noac के साथ विशेषता कैश अक्षम कर सकते हैं। noac माउंट विकल्प के साथ, ओपी द्वारा वर्णित व्यवहार दूर चला जाता है, लेकिन प्रदर्शन हिट करता है।

lookupcache=positive उपयोगी है अगर आप केवल नई फाइलों की उपस्थिति की तलाश में हैं, लेकिन हटाए गए गुण अभी भी विशेषता कैश से गुजरेंगे।