एक लंबित अपठनीय क्षेत्र वह है जिसने रीड एरर लौटाया है और जिसे ड्राइव ने पहले संभावित अवसर पर रीमैपिंग के लिए चिह्नित किया है। हालाँकि, यह दो चीजों में से एक होने तक रीमैपिंग नहीं कर सकता है:
- इस क्षेत्र में सफलतापूर्वक सफलता मिली है
- सेक्टर को फिर से लिखा गया है
तब तक, सेक्टर लंबित रहता है। तो इससे निपटने के लिए आपके पास दो ही तरीके हैं:
- जब तक आप सफल नहीं हो जाते तब तक क्षेत्र को फिर से व्यवस्थित करने का प्रयास करते रहें
- नए डेटा के साथ उस क्षेत्र को अधिलेखित करें
जाहिर है, (1) गैर-विनाशकारी है, इसलिए आपको संभवतः इसे पहले प्रयास करना चाहिए, हालांकि ध्यान रखें कि यदि ड्राइव एक गंभीर तरीके से विफल होने लगी है, तो एक बुरे क्षेत्र से लगातार पढ़ने से यह बहुत जल्दी विफल होने की संभावना है । यदि आपके पास बहुत सारे लंबित क्षेत्र और अन्य त्रुटियां हैं, और आप ड्राइव पर डेटा की परवाह करते हैं, तो मैं इसे सेवा से बाहर निकालने और उत्कृष्ट डेटा ddresoscope का उपयोग करने के लिए जितना संभव हो उतना डेटा पुनर्प्राप्त करने की सलाह देता हूं । फिर ड्राइव को त्याग दें।
यदि विचाराधीन क्षेत्र में डेटा है जिसकी आपको परवाह नहीं है, या बैकअप से पुनर्स्थापित कर सकते हैं, तो यह ओवरराइटिंग शायद सबसे तेज और सरल समाधान है। फिर आप यह सुनिश्चित करने के लिए कि इस क्षेत्र का ध्यान रखा गया था, ड्राइव के लिए वास्तविक और लंबित गणना देख सकते हैं।
आपको यह कैसे पता चलेगा कि फाइल सिस्टम में सेक्टर किस से मेल खाता है? मुझे स्मार्टमोनॉल्स वेब साइट पर एक उत्कृष्ट लेख मिला , यहां , हालांकि यह काफी तकनीकी है और एक्सट्रीम 2/3/4 और रीजर फाइल सिस्टम के लिए विशिष्ट है।
एक सरल दृष्टिकोण, जो मैंने अपने स्वयं के (मैक) ड्राइव में से एक पर इस्तेमाल find / -xdev -type f -print0 | xargs -0 ...
किया, सिस्टम पर प्रत्येक फ़ाइल को पढ़ने के लिए उपयोग करना है। इसे चलाने से पहले लंबित गणना पर ध्यान दें। यदि सेक्टर किसी फाइल के अंदर है, तो आपको उस टूल से एक एरर मैसेज मिलेगा, जिसका इस्तेमाल आपने फाइल को पढ़ने के लिए किया था (जैसे md5sum) जो आपको इसका रास्ता दिखा रहा है। आप तब तक इस फ़ाइल को फिर से पढ़ने पर अपने ध्यान केंद्रित कर सकते हैं जब तक कि यह सफलतापूर्वक न पढ़े। अक्सर यह समस्या को हल करेगा, अगर यह एक अनजाने में उपयोग की जाने वाली फ़ाइल है जिसे बस कुछ ही समय में फिर से पढ़ना चाहिए। यदि त्रुटि दूर हो जाती है, या आप सभी फ़ाइलों को पढ़ने में किसी भी त्रुटि का सामना नहीं करते हैं, तो यह देखने के लिए लंबित गणना की जांच करें कि क्या यह कम हो गई है। यदि यह है, तो समस्या को पढ़ने से हल किया गया था।
यदि कई कोशिशों (जैसे 20) के बाद फ़ाइल को सफलतापूर्वक नहीं पढ़ा जा सकता है, तो आपको ड्राइव को फिर से शुरू करने की अनुमति देने के लिए, फ़ाइल या फ़ाइल के ब्लॉक को अधिलेखित करने की आवश्यकता है। आप केवल एक सेक्टर को ओवरराइट करने के लिए फ़ाइल (विभाजन के बजाए) पर ddresoscope का उपयोग कर सकते हैं, एक अस्थायी फ़ाइल की प्रतिलिपि बनाकर और फिर वापस कॉपी करके। ध्यान दें कि इस बिंदु पर केवल फ़ाइल को निकालना एक बुरा विचार है, क्योंकि खराब क्षेत्र मुक्त सूची में जाएगा जहां इसे ढूंढना कठिन होगा। पूरी तरह से ओवरराइटिंग यह बहुत बुरा है, क्योंकि फिर से सेक्टर मुफ्त सूची में जाएंगे। आपको मौजूदा ब्लॉकों को फिर से लिखना होगा। ऐसा notrunc
करने का dd
एक तरीका विकल्प है।
यदि आपके पास कोई त्रुटि नहीं है, और लंबित गणना में कमी नहीं हुई है, तो सेक्टर को फ्रीलास्टिस्ट या फाइलसिस्टम इंफ्रास्ट्रक्चर (जैसे इनोड टेबल) के हिस्से में होना चाहिए। आप सभी रिक्त स्थान को भरने का प्रयास कर सकते हैं cat /dev/zero >tempfile
, और फिर लंबित गणना की जांच कर सकते हैं। यदि यह नीचे जाता है, तो समस्या मुक्त सूची में थी और अब दूर हो गई है।
यदि क्षेत्र बुनियादी ढांचे में है, तो आपके पास एक और अधिक गंभीर समस्या है, और आप शायद निर्देशिका पेड़ पर चलने में त्रुटियों का सामना करेंगे। इस स्थिति में, मुझे लगता है कि ड्राइव को रिफॉर्म करने के लिए एकमात्र समझदार समाधान है, यदि आवश्यक हो तो डेटा को पुनर्प्राप्त करने के लिए वैकल्पिक रूप से ddresoscope का उपयोग करना।
ड्राइव पर बहुत कड़ी नजर रखें। कोयले की खदान में सेक्टर रिक्लेमेशन एक बहुत अच्छी कैनरी है , संभवतः आपको एक ड्राइव की शुरुआती चेतावनी दे रहा है जो विफल हो रही है। शुरुआती कार्रवाई करने से आप बाद में होने वाली तबाही और बहुत दर्दनाक भूस्खलन को रोक सकते हैं। मैं सुझाव नहीं दे रहा हूं कि कुछ सेक्टर रिअलोकेशन एक संकेत हैं कि आपको ड्राइव को छोड़ देना चाहिए। सभी आधुनिक ड्राइव को कुछ वास्तविककरण करने की आवश्यकता है। हालाँकि, यदि ड्राइव बहुत पुराना नहीं है (<1 yr) या आपको लगातार नए reallocations (> 1 / महीना) मिल रहे हैं तो मैं आपको इसे asap बदलने की सलाह देता हूं।
मेरे पास इसे साबित करने के लिए अनुभवजन्य साक्ष्य नहीं हैं, लेकिन मेरा अनुभव बताता है कि डिस्क की समस्याओं को एक बार में पूरी डिस्क को पढ़कर, या तो dd
कच्ची डिस्क द्वारा या हर फ़ाइल का उपयोग करके पढ़ा जा सकता है find
। पिछले कई वर्षों में मैंने लगभग सभी डिस्क समस्याओं का सामना किया है, जिनका उपयोग शायद ही कभी-कभी उपयोग की जाने वाली फ़ाइलों में, या उन मशीनों पर किया जाता है जो बहुत अधिक उपयोग नहीं की जाती हैं। इससे यह भी स्पष्ट होता है कि, यदि किसी क्षेत्र में बार-बार विस्फोट हो रहा हो, तो उस ड्राइव को फिर से चालू करने का एक मौका होता है, जब यह पहली बार उस क्षेत्र के साथ मामूली समस्या का पता लगाता है जब तक कि सेक्टर पूरी तरह से अप्राप्य न हो। ड्राइव किसी भी क्षेत्र के साथ कुछ भी करने के लिए शक्तिहीन है जब तक कि मेजबान इसे किसी भी तरह से एक्सेस नहीं करता है, या तो इसे पढ़कर या लिखकर या एसएमएआरटी परीक्षणों में से एक का संचालन करके।
मैं एक रात या साप्ताहिक क्रोन नौकरी के विचार के साथ प्रयोग करना चाहता हूं जो पूरी डिस्क को पढ़ती है। वर्तमान में मैं एक "गरीब आदमी की RAID" का उपयोग कर रहा हूं जिसमें मेरे पास मशीन में एक दूसरा हार्ड ड्राइव है और मैं हर रात इसे मुख्य डिस्क का बैकअप लेता हूं। कुछ मायनों में, यह वास्तव में RAID मिररिंग से बेहतर है, क्योंकि अगर मैं नासमझ हूं और गलती से किसी फ़ाइल को हटा देता हूं तो मुझे बैकअप डिस्क से तुरंत कल का संस्करण मिल सकता है। दूसरी ओर, मेरा मानना है कि हार्डवेयर RAID नियंत्रक पृष्ठभूमि की समस्याओं की निगरानी, रिपोर्ट करने और उन्हें ठीक करने के लिए पृष्ठभूमि में बहुत अच्छा काम करता है। मेरी वर्तमान बैकअप स्क्रिप्ट का उपयोग rsync
उन डेटा की प्रतिलिपि बनाने से बचने के लिए किया जाता है जो बदल नहीं गए हैं, लेकिन सभी क्षेत्रों को फिर से विभाजित करने की आवश्यकता के मद्देनजर शायद यह सब कुछ कॉपी करना बेहतर होगा, या एक अलग स्क्रिप्ट होगी जो हर हफ्ते पूरी कच्ची डिस्क को पढ़ती है।