मैं अपनी डिस्क को अनप्रेडेबल क्षेत्रों में लंबित अनमैप कैसे बनाऊं


10

स्मार्ट के अनुसार मेरे पास कुछ लंबित अपठनीय क्षेत्रों के साथ एक डिस्क है। डिस्क को रीमैप करने और स्मार्ट को शिकायत करने से रोकने का सबसे आसान तरीका क्या होगा?

आज, मुझे हर घंटे इनमें से दो मिलते हैं:

सितम्बर 10 23:15:35 हिल्टन स्मार्टड [3353]: डिवाइस: / dev / sdc, 1 वर्तमान में अपठनीय (लंबित) क्षेत्र

सिस्टम एक x86 सिस्टम है जो उबंटू लिनक्स 9.10 (jaunty) पर चल रहा है। डिस्क LVM समूह का हिस्सा है। इस तरह से स्मार्टक्टेल डिस्क की पहचान करता है:

मॉडल परिवार: पश्चिमी डिजिटल कैवियार दूसरी पीढ़ी सीरियल एटीए परिवार
डिवाइस मॉडल: WDC WD5000AAKS-00TMA0
क्रमांक: WD-WCAPW4207483
फर्मवेयर संस्करण: 12.01C01
उपयोगकर्ता क्षमता: 500,107,862,016 बाइट्स

2
इस समस्या को स्वयं हल किया; डिस्क अधिक जोर से शिकायत करने लगी, इसलिए मैंने इसे बदल दिया।
dkagedal

जवाबों:


15

एक लंबित अपठनीय क्षेत्र वह है जिसने रीड एरर लौटाया है और जिसे ड्राइव ने पहले संभावित अवसर पर रीमैपिंग के लिए चिह्नित किया है। हालाँकि, यह दो चीजों में से एक होने तक रीमैपिंग नहीं कर सकता है:

  1. इस क्षेत्र में सफलतापूर्वक सफलता मिली है
  2. सेक्टर को फिर से लिखा गया है

तब तक, सेक्टर लंबित रहता है। तो इससे निपटने के लिए आपके पास दो ही तरीके हैं:

  1. जब तक आप सफल नहीं हो जाते तब तक क्षेत्र को फिर से व्यवस्थित करने का प्रयास करते रहें
  2. नए डेटा के साथ उस क्षेत्र को अधिलेखित करें

जाहिर है, (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उन डेटा की प्रतिलिपि बनाने से बचने के लिए किया जाता है जो बदल नहीं गए हैं, लेकिन सभी क्षेत्रों को फिर से विभाजित करने की आवश्यकता के मद्देनजर शायद यह सब कुछ कॉपी करना बेहतर होगा, या एक अलग स्क्रिप्ट होगी जो हर हफ्ते पूरी कच्ची डिस्क को पढ़ती है।


2
यदि आप बैकअप करते हैं (एक आंतरिक डिस्क पर rsyncing गिनती नहीं करता है;)) तो आपके सभी डेटा निश्चित समय अंतराल (आपके पूर्ण / वृद्धि बैकअप अनुसूची के आधार पर) में पढ़ा जाता है। RAID या rsync बैकअप विकल्प नहीं हैं। और btw, मुझे 'विश्वास' है कि आपको हार्डवेयर-RAID विक्रेताओं में बहुत अधिक विश्वास है। ;)
मैक्सक्लेपज़िग

@maxschlepzig: आप सही हैं। मेरे पास एक अलग बैकअप शासन भी है। हालाँकि, मेरा अनुभव यह रहा है कि एक ड्राइव के फेल होने के कारण डेटा लॉस की संभावना अन्य सभी जोखिमों को एक साथ दूर करती है (चोरी, आग इत्यादि)। आधुनिक हार्ड ड्राइव में ऐसी खराब विश्वसनीयता है कि मैं आजकल उनके बारे में पूरी तरह से पागल हूं। इसलिए मेरी दूसरी आंतरिक ड्राइव मेरी रणनीति का एक प्रमुख हिस्सा है।
मई को नील मेव्यू

मैंने डिस्क का उपयोग करके सामग्री को पढ़ा और फिर से पढ़ा है dd if=/dev/sda ...और सेक्टर अभी भी लंबित हैं, किसी भी विचार क्यों?
डेमन्सफील्ड

@dmansfield, अगर आपको कोई त्रुटि नहीं हुई, तो मुझे यकीन नहीं है कि क्यों। मैंने देखा है कि स्मार्ट आउटपुट में केवल कच्चा मूल्य ही सही है, इसलिए यदि आप केवल 'पके हुए' मूल्य को देख रहे हैं, तो हो सकता है कि आपके पास कोई लंबित क्षेत्र न हो।
नील मैय्यू


1
  1. अपने डेटा का बैकअप लें
  2. इस उपकरण को LVM समूह से निकालें
  3. dd if=/dev/zero of=/dev/sdc bs=4k- इस जाएगा सारा डेटा मिटा पर/dev/sdc
  4. इसे फिर से LVM समूह में शामिल करें
  5. अपने बैकअप को पुनर्स्थापित करें

3
0. एक बैकअप है। :-)
स्टीवन डी

लेकिन यह एक लंबित पठन त्रुटि है, तो क्या इसे केवल सभी क्षेत्रों को पढ़ने के लिए पर्याप्त नहीं होना चाहिए?
dkagedal

1
@dkagedal: नहीं, HD के फर्मवेयर ने पहले ही पता लगा लिया है कि यह इस एक सेक्टर को नहीं पढ़ सकता है। इसे पुनर्प्राप्त करने का कोई तरीका नहीं है (अपने दम पर, इसके अलावा शायद पुन: प्रयास करने और पुन: प्रयास करने के लिए और किसी बिंदु पर भाग्य है ... उम्मीद है कि यह दूषित डेटा नहीं है फिर लौटा) और इस प्रकार यह SMART त्रुटि सेट करता है। लेकिन अगर फ़र्मवेयर उस विशिष्ट सेक्टर पर एक राइट का पता लगाता है, तो वह इस सेक्टर को मैप करता है (और अब इसका उपयोग नहीं करता है) और इसके बजाय इस पते पर एक स्पेयर (काम करने वाला) सेक्टर मैप करता है।
मैक्सचेलपिजिग

@ डेडिकेडल: कभी-कभी सिर्फ एक या दो अतिरिक्त रीड सेक्टर को वापस लाएंगे। अन्य समय, कुछ भी इसे वापस नहीं लाएगा। इसके अलावा, ड्राइव आंतरिक रूप से यह तय करती है कि मूल त्रुटि की गंभीरता के आधार पर, सेक्टर को फिर से तैयार करना है या फिर से उपयोग करना है या नहीं और क्या इसे लिखने के बाद इसे सफलतापूर्वक पढ़ा जा सकता है। एकमात्र तरीका जो आप बता सकते हैं वह ड्राइव के लिए वास्तविक गणना को देखकर है। मेरा मानना ​​है कि यह सुनिश्चित करने के लिए ड्राइव काफी व्यापक चेकसमिंग का उपयोग करते हैं कि जब डेटा पढ़ा जाता है तो यह दूषित नहीं होता है, इसलिए आप किसी ऐसे सेक्टर के बारे में तर्कसंगत रूप से आश्वस्त हो सकते हैं जो वास्तविक नहीं था।
नील मैय्यूज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.