छोटी फ़ाइलों की धीमी NFS हस्तांतरण प्रदर्शन


12

मैं एक HP ML370 G5, स्मार्ट ऐरे P400 पर Openfiler 2.3 का उपयोग कर रहा हूं, SAS ने RAID 1 + 0 का उपयोग करके संयुक्त किया है।

मैंने ओपनफ़ाइलर के वेब आधारित कॉन्फ़िगरेशन का उपयोग करके ext3 विभाजन से एक एनएफएस शेयर की स्थापना की, और मैं दूसरे होस्ट से शेयर को माउंट करने में सफल रहा। दोनों मेजबान समर्पित गीगाबिट लिंक का उपयोग करके जुड़े हुए हैं।

सरल बेंचमार्क का उपयोग dd:

 $ dd if=/dev/zero of=outfile bs=1000 count=2000000
 2000000+0 records in
 2000000+0 records out
 2000000000 bytes (2.0 GB) copied, 34.4737 s, 58.0 MB/s

मैं देखता हूं कि यह मध्यम हस्तांतरण की गति (58.0 एमबी / एस) प्राप्त कर सकता है।

लेकिन अगर मैं कुल आकार ~ 300 एमबी की कई छोटी फ़ाइलों ( .phpऔर .jpg, लगभग 1-4 केबी प्रति फ़ाइल) वाली निर्देशिका की प्रतिलिपि बनाता हूं , तो cpप्रक्रिया लगभग 10 मिनट में समाप्त हो जाती है।

क्या NFS उपरोक्त मामले की तरह छोटी फ़ाइल स्थानांतरण के लिए उपयुक्त नहीं है? या क्या कुछ पैरामीटर हैं जिन्हें समायोजित किया जाना चाहिए?


क्या इससे आपके सवाल का जवाब मिलता है? एनएफएस खराब लेखन प्रदर्शन
हांग्जो डबिन्स्की

जवाबों:


7

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

आप NFS माउंट में अपने rsizeऔर wsizeमापदंडों को बढ़ाने की कोशिश कर सकते हैं और देख सकते हैं कि इससे प्रदर्शन में थोड़ी मदद मिलेगी। न्यूनतम विलंबता के लिए एनएफएस को ट्यूनिंग करने पर भी इस प्रश्न की जाँच करें क्योंकि इसमें बहुत सी सहायक सलाह है जो कई छोटे फ़ाइल स्थानांतरणों के मामले में मदद करेगी।


8

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


4

क्या आपने XFS की तरह एक अलग फाइल सिस्टम के साथ प्रयास किया है? छोटे iSCSI ब्लॉक ट्रांसफ़र की चरम मात्रा में करने पर इसने मेरी सभी समस्याओं को हल कर दिया। पता नहीं क्यों।

इसके अलावा, iSCSI / NFS आमतौर पर बहुत बड़े डेटाफ्रेम (जंबो फ्रेम आदि) के लिए कॉन्फ़िगर किया गया है, यदि आप एक बार में छोटी फ़ाइलों की नकल कर रहे हैं तो यह आपको नुकसान पहुंचा सकता है। शायद टारिंग और फिर ट्रांसफर करने से आपको मदद मिलेगी।


1
हां, मेरे परीक्षण ने एक्सएफ 3 (~ 8 मिनट बनाम ~ 14 मिनट) की तुलना में एक्सएफएस का उपयोग करके कुछ सुधार दिखाया।
आरि के

1
कुछ? मैं कहता हूँ कि एक बहुत बड़ा सुधार होगा :)
pauska

1

जांचें कि आप टीसीपी कनेक्शन ( माउंट -t nfs -o tcp होस्ट: / माउंट / लक्ष्य ) का उपयोग कर रहे हैं । आधुनिक प्रणालियों पर प्रदर्शन प्रभावित नहीं होगा, लेकिन यदि आपके नेटवर्क को लोड किया जाता है तो छोटे IOs में काफी सुधार हो सकता है।

और आपको कुछ अन्य फाइल सिस्टम को भी आज़माना चाहिए; ext3 मूल रूप से सभी में सबसे धीमा है। यह ठोस, अच्छी तरह से जाना जाता है, लेकिन यह एक फ़ाइल सर्वर के लिए काफी अनुपयुक्त है। एक्सएफएस बेहतर है, और छोटे आईओएस में रीसेरफ़्स भी बेहतर है।


1

यदि आप एनएफएस के ऊपर छोटी फ़ाइलों की एक बड़ी निर्देशिका ट्री ट्रांसफर करना चाहते हैं, और आप सर्वर पर लॉग इन कर सकते हैं, तो इसका सबसे अच्छा तरीका यह है कि आप एक टार फाइल बनाएं जो कि क्लाइंट पर स्वचालित रूप से निकाली जाती है, इस प्रकार है:

tar c mydirectory | ssh user @ host tar -xf - -सी डेस्टिर

इस तरह से केवल एक ही "फाइल" पूरे नेटवर्क में स्थानांतरित हो जाती है और आपके पास तुरंत होस्ट पर आपकी सभी फाइलें होती हैं।


0

बस इवान के जवाब में जोड़ने के लिए, आपके पास प्रत्येक फ़ाइल के लिए मेटाडेटा (निर्देशिका प्रविष्टियां, आदि) बनाने की ओवरहेड भी है।


0

क्रिस के जवाब के रूप में एक समान समाधान समय-समय पर ग्राहकों के लिए आपकी फ़ाइलों को rsync करना होगा। यदि आप दो तरफा बदलाव करना चाहते हैं तो आप एकसमान उपयोग कर सकते हैं।


0

समस्या यह है कि आपका हिस्सा syncविकल्प (डिफ़ॉल्ट) के साथ निर्यात किया जाता है। asyncलिखने में तेजी लाने के लिए उपयोग करें । Nfs.sourceforge.net/nfs-howto/ar01s05.html देखें

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