2010-07-08 13 views
9

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

  • दो सर्वर माउंट ही एनएफएस
  • ग्राहक आवेदन 1 सर्वर पर फ़ाइलों की संख्या के साथ साझा संग्रहण कुछ फ़ाइलों
  • क्लाइंट एप्लिकेशन को हटा देता है 2 सर्वर हटाई गई फ़ाइलें का उपयोग करने की कोशिश करता है और साथ में विफल रहता है पर: बासी एनएफएस फ़ाइल हैंडल (अजीब कुछ भी नहीं, त्रुटि अपेक्षित है)

(यह भी जानना उपयोगी हो सकता है कि प्रदर्शन कारणों से दोनों सर्वरों पर कैश माउंट विकल्प बहुत अधिक हैं)।

क्या मैं समझने की कोशिश कर रहा हूँ है:

  • वहाँ विश्वसनीय जाँच करने के लिए विधि है, उस फ़ाइल मौजूद है? फाइल पर lstat ऊपर दिए गए परिदृश्य में सफलता देता है और फ़ाइल फ़ाइल को स्थानांतरित करने के बाद ही विफल हो जाती है।
  • मैं क्लाइंट पर सर्वर के साथ मैन्युअल रूप से निर्देशिका की सामग्री कैसे सिंक कर सकता हूं?
  • कुछ सामान्य सलाह देते हैं कि एनएफएस के मामले में विश्वसनीय फ़ाइल प्रबंधन कोड कैसे लिखें?

धन्यवाद।

उत्तर

11
  • क्या जांच करने के लिए कोई विश्वसनीय तरीका है, वह फ़ाइल मौजूद है? फाइल पर lstat ऊपर दिए गए परिदृश्य में सफलता देता है और फ़ाइल फ़ाइल को स्थानांतरित करने के बाद ही विफल हो जाती है।

यह सामान्य एनएफएस व्यवहार है।

  • कैसे मैं मैन्युअल रूप से सर्वर के साथ क्लाइंट पर निर्देशिका की सामग्री समन्वयित कर सकते हैं?

कि असंभव है मैन्युअल रूप से करना है, के बाद से एनएफएस एक सामान्य POSIX अनुरूप फाइल सिस्टम होने का दिखावा।

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

आज तक एनएफएस के साथ मेरा अनुभव यह है कि आप कुछ भी नहीं कर सकते हैं। महत्वपूर्ण कोड पथों में मैंने बस उस फ़ाइल ऑपरेशन को पुनः प्रयास करने के लिए कोड किया जो ESTALE लौटाता है।

  • कैसे एनएफएस के मामले में विश्वसनीय फ़ाइल प्रबंधन कोड लिखने के लिए पर कुछ सामान्य सलाह?

मॉड मुझे नीचे सभी आप चाहते हैं, लेकिन अगर अपने ग्राहकों को विश्वसनीयता चाहते हैं तो वे एनएफएस उपयोग नहीं करना चाहिए।

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

एनएफएस में कोहेरेंसी हासिल की जा सकती है, लेकिन प्रदर्शन की लागत पर, एनएफएस मुश्किल से उपयोग करने योग्य बनाते हैं। (इसके माउंट विकल्प देखें।) एनएफएस इस तथ्य को छिपाने के लिए पागल की तरह कैशिंग है कि यह एक सर्वर फाइल सिस्टम है। सभी परिचालनों को सुसंगत बनाने के लिए, स्थानीय कैश को छोड़कर, एनएफएस क्लाइंट को प्रत्येक छोटे ऑपरेशन के लिए सिंक्रनाइज़ रूप से एनएफएस सर्वर पर जाना होगा। और वह कभी तेज नहीं होगा।

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

+0

धन्यवाद। आपने अपने अधिकांश एनएफएस शोध परिणामों की पुष्टि की है। मान लीजिए कि मैं ईएसटीएएल चेक का एक गुच्छा कोड दूंगा, क्योंकि हमारे पास किसी अन्य स्टोरेज में माइग्रेट करने की योजना नहीं है।मैं अब इस जवाब को स्वीकार नहीं करूंगा, आशा करता हूं कि कोई विषय पर अधिक जानकारी के साथ आएगा। – begray

4

आप आदमी NFS से '' Noac '' माउंट विकल्प

की कोशिश कर सकते:

कैशिंग फ़ाइल विशेषताओं से ग्राहक को रोकने के अलावा, Noac विकल्प बलों आवेदन को लिखते हैं सिंक्रोनस बनें ताकि स्थानीय फ़ाइल में परिवर्तन पर तुरंत सर्वर पर दिखाई दे। इस तरह, अन्य क्लाइंट हाल ही में लिखते हैं जब वे फ़ाइल के गुणों की जांच करते हैं।

Noac विकल्प का उपयोग एनएफएस क्लाइंट उन्हीं फ़ाइलों तक पहुँचने के बीच अधिक से अधिक कैश जुटना प्रदान करता है, लेकिन यह एक महत्वपूर्ण प्रदर्शन दंड निकालता है। इस प्रकार, फ़ाइल लॉकिंग का न्यायसंगत उपयोग इसके बजाय प्रोत्साहित किया जाता है।

आपके पास दो माउंट हो सकते हैं, एक महत्वपूर्ण तेजी से बदलते डेटा के लिए जो आपको सिंक्रनाइज़ करने की आवश्यकता है और अन्य डेटा के लिए एक और माउंट है।

इसके अलावा, NFS locking and its limitations पर देखें।

सामान्य सलाह के लिए के रूप में:

एक तरह से एक फ़ाइल है कि समवर्ती एकाधिक मेजबान से पढ़ी जाती काटना rename कि अंतिम स्थान के लिए दायर एक अस्थायी फ़ाइल में सामग्री लिखने के लिए और उसके बाद।

उसी फाइल सिस्टम पर यह ऑपरेशन परमाणु होना चाहिए।

+0

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

+0

लिंक किए गए एनएफएस लॉकिंग आलेख अब चले गए हैं, क्या आपके पास प्रतिस्थापन होता है? –

1

मुझे निर्देशिका में ls -l करने के साथ सफलता मिली है जिसमें फ़ाइल है।

संबंधित मुद्दे