प्रति निर्देशिका फ़ाइलों की संख्या


19

मेरे पास लगभग 100000 छोटी फ़ाइलों के साथ एक निर्देशिका है (प्रत्येक फ़ाइल 1-3 लाइनों से है, प्रत्येक फ़ाइल एक पाठ फ़ाइल है)। आकार में निर्देशिका बहुत बड़ी नहीं है (<2GB)। यह डेटा पेशेवर रूप से प्रशासित NFS सर्वर में रहता है। सर्वर लिनक्स चलाता है। मुझे लगता है कि फाइलसिस्टम एक्स 3 है, लेकिन मुझे यकीन नहीं है। इसके अलावा, मेरे पास सर्वर तक रूट एक्सेस नहीं है।

ये फाइलें बड़े पैमाने पर वैज्ञानिक प्रयोग का आउटपुट हैं, जिन पर मेरा नियंत्रण नहीं है। हालांकि, मुझे परिणामों का विश्लेषण करना होगा।

इस निर्देशिका में कोई भी I / O ऑपरेशन / प्रसंस्करण बहुत धीमा है। एक फ़ाइल खोलना (अजगर में फ़ोपन), एक खुली फ़ाइल से पढ़ना, एक फ़ाइल को बंद करना, सभी बहुत धीमी गति से होते हैं। Bash ls, du, आदि में काम नहीं करते।

प्रश्न है:

लिनक्स में एक डायरेक्टरी में फ़ाइलों की अधिकतम संख्या इस तरह से है कि प्रोसेसिंग, फोपेन, रीड, आदि करना व्यावहारिक है? मैं समझता हूं कि उत्तर कई चीजों पर निर्भर करता है: एफएस प्रकार, कर्नेल संस्करण, सर्वर संस्करण, हार्डवेयर, आदि। मैं सिर्फ अंगूठे का नियम चाहता हूं, यदि संभव हो तो।


6
आपके प्रत्यक्ष प्रश्न का जाइल्स द्वारा अच्छी तरह से उत्तर दिया गया था, लेकिन सभी में, लिनक्स फाइल सिस्टम डेटाबेस के लिए खराब विकल्प बनाते हैं जब आप फाइलनाम को डेटा के छोटे बिट्स के लिए कुंजी के रूप में उपयोग कर रहे होते हैं। आप पीढ़ी को नियंत्रित नहीं करते हैं, लेकिन आप डेटा को विश्लेषण के लिए अधिक उत्तरदायी रूप में पोस्ट-प्रोसेस कर सकते हैं; यदि आप नहीं करते हैं, तो आप हर चरण में फ़ाइल सिस्टम को ओवरहेड भुगतान करेंगे। आप ओवरहेड को कम कर सकते हैं लेकिन अगर आप इसे खत्म करते हैं तो आप सबसे अधिक खुश हो सकते हैं।
msw

इसके अलावा, यह देखें stackoverflow.com/questions/466521/…
क्रिस्टी

जवाबों:


22

जैसा कि आप अनुमान लगाते हैं, यह कई चीजों पर निर्भर करता है, ज्यादातर फाइल सिस्टम और विकल्प और कुछ हद तक कर्नेल संस्करण। Ext2 / ext3 / ext4 श्रृंखला में, dir_indexविकल्प दिखाई देने पर एक बड़ा सुधार हुआ (ext3 की प्रारंभिक रिलीज के कुछ समय बाद): यह निर्देशिकाओं को लीनियर सूचियों (लीनियर टाइम एक्सेस) के बजाय खोज ट्री (लॉगरिदमिक टाइम एक्सेस) के रूप में संग्रहीत करता है। )। यह ऐसा कुछ नहीं है जिसे आप NFS के ऊपर देख सकते हैं, लेकिन यदि आपके पास कुछ संपर्क हैं, तो आप उन्हें चलाने के लिए कह सकते हैं tune2fs -l /dev/something |grep features(शायद उन्हें अपग्रेड करने के लिए मना भी लें?)। केवल फाइलों की संख्या मायने रखती है, उनका आकार नहीं।

साथ ही dir_index, 100000 बड़ा लगता है। आदर्श रूप से, उस प्रोग्राम के लेखकों को प्राप्त करें जो उप-स्तरों के स्तर को जोड़ने के लिए फाइलें बनाता है। प्रदर्शन में गिरावट के लिए, मैं ext2 या ext3 के लिए प्रति निर्देशिका लगभग 1000 फ़ाइलों की सीमा की सिफारिश करूंगा dir_indexऔर 20000 के साथ dir_indexoriserfs। यदि आप यह नियंत्रित नहीं कर सकते हैं कि फाइलें कैसे बनाई जाती हैं, तो कुछ भी करने से पहले उन्हें अलग निर्देशिका में स्थानांतरित करें।

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