डेटा का 40TB कैसे घटाएं?


17

मुझे तीन फाइल सिस्टम में डेटा के ~ 40TB के साथ एक रिसर्च क्लस्टर विरासत में मिला है। डेटा लगभग 15 साल पीछे खींचता है, और डुप्लिकेट की एक अच्छी मात्रा होने की संभावना है क्योंकि शोधकर्ता एक-दूसरे के डेटा को अलग-अलग कारणों से कॉपी करते हैं और फिर सिर्फ प्रतियों को लटकाते हैं।

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

मैं अब एक 900GB पेड़ पर fdupes के साथ प्रयोग कर रहा हूँ। यह 25% है जिस तरह से और रैम का उपयोग धीरे-धीरे पूरे समय तक रेंगता रहा है, अब यह 700 एमबी पर है।

या, डिस्क-मैपेड रैम का उपयोग करने के लिए एक प्रक्रिया को निर्देशित करने का एक तरीका है इसलिए बहुत अधिक उपलब्ध है और यह सिस्टम रैम का उपयोग नहीं करता है?

मैं CentOS 6 चला रहा हूं।


यदि यह प्रासंगिक है तो फाइलसिस्टम एक्सएफएस हैं। यानी, मुझे पता है कि यह XFS जैसी डी-डुइंग क्षमताओं वाला एफएस नहीं है।
माइकल स्टॉफ़र

आप पहली बार में रैम के बारे में क्यों चिंतित हैं? ओएस का अपना मेमोरी मैनेजमेंट एल्गोरिदम है और यह तथ्य कि रैम का उपयोग "रेंगना" है इसका मतलब यह नहीं है कि यह अंततः आपके सभी रैम को खा जाएगा। मुझे पूरा यकीन है कि ऐसा नहीं होगा।
आर्ट गर्टनर

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

1
हां, समर्पित टूल हैश की गणना करता है, लेकिन पहले फाइल साइज को देखने जैसी चीजें करते हैं, और फुल हैश की मात्रा को सीमित करने के लिए केवल फाइलों की शुरुआत करते हैं, जिन्हें गणना की आवश्यकता होती है।
माइकल स्टॉफ़र

रैम के लिए, मुझे फाइलर को धीमा करने के बारे में चिंतित था - जवाब के लिए नीचे मेरी टिप्पणी देखें।
माइकल स्टॉफ़र

जवाबों:


4

या, डिस्क-मैपेड रैम का उपयोग करने के लिए एक प्रक्रिया को निर्देशित करने का एक तरीका है इसलिए बहुत अधिक उपलब्ध है और यह सिस्टम रैम का उपयोग नहीं करता है?

हां, इसे स्वैप ड्राइव कहा जाता है। आप शायद पहले से ही एक है। यदि आप रैम से बाहर निकलने के बारे में चिंतित हैं तो इसे बढ़ाना एक अच्छी जगह है। यह स्वचालित रूप से काम करता है, इसलिए कुछ विशेष करने की आवश्यकता नहीं है।

मैं fdupes के बारे में चिंता नहीं होगी। कोशिश करो, यह समस्याओं के बिना काम करना चाहिए।


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

1

हैशकी के आधार पर डुप्लिकेट ढूंढना अच्छी तरह से काम करता है और बहुत तेज है।

find -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | xargs -I{} -n1 find -type f -size {}c -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate

0

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

आप शायद इसे पाइथन (ओएस.वॉक () का उपयोग करते हुए) की बीस से तीस पंक्तियों में कर सकते हैं।

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