20 मिनट से अधिक पुरानी फाइलों के स्वत: छंटनी के साथ लाखों छोटी फ़ाइलों (औसत पर 50 केबी) के लिए बड़े पैमाने पर भंडारण की अच्छी रणनीति क्या है? मुझे वेब सर्वर से उन्हें लिखना और एक्सेस करना होगा।छोटी फाइलों के बड़े पैमाने पर भंडारण के लिए रणनीति
मैं वर्तमान में ext4 का उपयोग कर रहा हूं, और हटाए जाने के दौरान (क्रॉन में निर्धारित) एचडीडी उपयोग 100% तक [स्पाश -8: 0] के साथ लोड करता है जो लोड बनाता है। यह लोड सर्वर पर अन्य अनुप्रयोगों में हस्तक्षेप करता है। जब कोई डिलीट नहीं होता है, तो अधिकतम एचडीडी उपयोग 0-5% होता है। स्थिति नेस्टेड और गैर-नेस्टेड निर्देशिका संरचनाओं के साथ समान है। सबसे बुरा हिस्सा यह है कि ऐसा लगता है कि पीक लोड के दौरान बड़े पैमाने पर हटाने सम्मिलन की दर से धीमी है, इसलिए निकालने की आवश्यकता वाली फ़ाइलों की मात्रा बड़ी और बड़ी हो जाती है।
मैंने शेड्यूलर (समय सीमा, सीएफक्यू, नोप) को बदलने की कोशिश की है, इससे मदद नहीं मिली है। मैंने स्क्रिप्ट को हटाने के लिए आयनिस सेट करने का भी प्रयास किया है, लेकिन इससे कोई मदद नहीं मिली है।
मैंने मोंगोडीबी 2.4.3 के साथ ग्रिडएफएस की कोशिश की है और यह पुरानी फाइलों के बड़े पैमाने पर हटाने के दौरान अच्छी तरह से, लेकिन भयानक प्रदर्शन करता है। मैंने जोगो डीबी को जर्नलिंग बंद कर दिया है (नोजनल) और हटाए गए और डालने के लिए लिखने की पुष्टि के बिना (डब्ल्यू = 0) और इससे मदद नहीं मिली। जब कोई डेलीट चालू नहीं होता है तो यह केवल तेज़ और चिकनी काम करता है।
मैं भी = 2GB, innodb_log_file_size = 1GB, innodb_flush_log_on_trx_commit = 2 innodb_buffer_pool उपयोग करने के लिए,, MySQL 5.5 में डेटा संग्रहीत की कोशिश की है, ब्लॉब स्तंभ में InnoDB तालिका में InnoDB इंजन सेट के साथ है, लेकिन कार्यक्षमता भी बदतर था, HDD लोड हमेशा था 80% -100% (अपेक्षित, लेकिन मुझे कोशिश करनी थी)। तालिका केवल यूएलआईडी और डेटाटाइम कॉलम पर इंडेक्स के साथ बीएलओबी कॉलम, डेटाटाइम कॉलम और CHAR (32) latin1_bin UUID का उपयोग कर रही थी, इसलिए ऑप्टिमाइज़ेशन के लिए कोई जगह नहीं थी, और सभी प्रश्न इंडेक्स का उपयोग कर रहे थे।
मैंने पीडीएफएलश सेटिंग्स (लिनक्स फ्लश प्रक्रिया जो द्रव्यमान हटाने के दौरान लोड बनाता है) में देखा है, लेकिन मूल्यों को बदलने से कुछ भी मदद नहीं मिली है, इसलिए मैं डिफ़ॉल्ट रूप से वापस आ गया।
इससे कोई फ़र्क नहीं पड़ता कि मैं कितनी बार ऑटो-प्रुनिंग स्क्रिप्ट चलाता हूं, प्रत्येक 1 सेकंड, प्रत्येक 1 मिनट, प्रत्येक 5 मिनट, प्रत्येक 30 मिनट, यह सर्वर को किसी भी तरह से बाधित कर रहा है।
मैंने इनोड मान को स्टोर करने की कोशिश की है और हटाते समय पुरानी फ़ाइलों को क्रमशः अपने इनोड नंबरों के साथ क्रमबद्ध करके हटा दिया है, लेकिन इससे मदद नहीं मिली।
का उपयोग CentOS 6. HDD एसएसडी RAID है 1.
क्या है जो स्वत: प्रूनिंग प्रदर्शन समस्या का समाधान होगा मेरे कार्य के लिए अच्छा और समझदार समाधान हो सकता है?
क्या आपने पहले से ही अपनी रचना के समय के आधार पर फ़ाइलों को 'बाल्टीटिंग' करने की कोशिश की है? शायद 'आरएम-आरएफ' के साथ पूरी निर्देशिका को हटाने में मदद मिलेगी। –
आरएम-आरएफ "तर्क सूची बहुत लंबी" त्रुटि के कारण विफल रहता है। – Atm
'rm -rf files_2013_Apr_29_0940' इतना बड़ा नहीं है, है ना? या 1 सेकंड ग्रैन्युलरिटी में सूची में 60 प्रविष्टियां होंगी। निस्संदेह किसी को फ़ाइल नाम का निर्देशिका मैपिंग पर ट्रैक रखना होगा। अंत में शायद 60+ उपनिर्देशिकाएं होंगी - 20 * 60 तक विभाजित "लाखों फाइलें" कम से कम 833 फ़ाइलें/निर्देशिका है। –