खराब क्षेत्रों को बिना फार्म के हार्ड ड्राइव पर चिह्नित करें


22

मैंने देखा है कि मेरे घर पर उबंटू सर्वर एक ड्राइव किसी कारण से ही पढ़ा जाता है। खोदने पर मैंने पाया कि यह तब हो सकता है जब हार्ड ड्राइव में त्रुटियाँ हों। मैंने त्रुटियों के लिए बैडब्लॉक का उपयोग किया, और वास्तव में मेरे पास कुछ क्षतिग्रस्त क्षेत्र हैं।

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

वहाँ एक तरीका है इन बुरे ब्लॉकों को चिह्नित करने के बिना एक hdd स्वरूपण?

जवाबों:


29

मुझे लगता है कि आप डिस्क पर भौतिक बुरे ब्लॉकों के बारे में बात कर रहे हैं और भ्रष्ट फाइल सिस्टम के बारे में नहीं।

अपनी डिस्क की भौतिक स्थिति की जाँच करने के लिए इसे स्थापित करना सबसे अच्छा है smartmontools

sudo apt-get install smartmontools

यह काम करता है क्योंकि सभी आधुनिक डिस्क SMART नामक प्रणाली का उपयोग करके अपनी स्वास्थ्य स्थिति को लॉग करते हैं

smartctrlइस स्थिति को पढ़ने के लिए कमांड का उपयोग करें । उदाहरण के लिए पहली डिस्क कॉल से सभी विशेषताओं को पढ़ने के लिए

sudo smartctl --all /dev/sda

समग्र हीथ स्थिति के बारे में बात करने वाली एक पंक्ति के लिए देखें। एक बार जब यह एक त्रुटि को इंगित करता है तो यह बहुत संभावना है कि डिस्क जल्द ही विफल हो जाएगी।

SMART overall-health self-assessment test result: PASSED

अन्य पंक्तियाँ जिन्हें आप जांचना चाहते हैं, वे लंबित क्षेत्र गणना और वास्तविक क्षेत्र हैं।

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       48
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       2

आमतौर पर कच्चे क्षेत्रों में वास्तविक सूचियाँ खराब क्षेत्रों की संख्या होती हैं जो डिस्क काम करने वालों के लिए बदली जाती हैं। लंबित वे सेक्टर हैं, जिन्हें अगली बार लिखने में विफल होने की स्थिति में पुनः प्राप्त किया जा सकता है।

आप अपने मॉडल द्वारा समर्थित होने पर डिस्क के सेल्फ टेस्ट को भी ट्रिगर कर सकते हैं

sudo smartctl -t long /dev/sda

सभी क्षेत्रों की जाँच को बाध्य करने के लिए badblocks, उस मोड में उपयोग करें जिसमें डेटा लिखा गया है। खबरदार कि सामान्य रूप से चलाने के लिए सुरक्षित होने के बावजूद, यह आपके डिस्क पर अतिरिक्त भार डाल देगा, जिसके कारण वे विफल हो सकते हैं। हमेशा अपने डेटा का बैकअप रखें।

sudo badblocks -svvn -c 262144 /dev/sda

यदि आपने अपनी डिस्क को इस तरह से पूरी तरह से संसाधित किया है, तो डिस्क नियंत्रक को सभी खराब ब्लॉकों को काम करने वालों द्वारा प्रतिस्थापित किया जाना चाहिए और वास्तविक गिनती को SMART लॉग में बढ़ाया जाएगा।


2
-c64 के डिफ़ॉल्ट की तुलना में एक समय में या दूसरे शब्दों में परीक्षण किए जाने वाले ब्लॉक की संख्या या प्रभाव क्या है ?
greole

4
डिफ़ॉल्ट बाइट का आकार 1024 बाइट्स को एक बार में 64 ब्लॉक के डिफ़ॉल्ट से गुणा करके प्रत्येक अनुरोध पर केवल 64k संसाधित किया जाता है। 150 MiB / s तक के थ्रूपुट वाले आधुनिक डिस्क के साथ यह अधिक उपरि का परिचय देता है जिससे मैं सहज महसूस करता हूं। मैं ड्राइव को बस में डेटा की प्रतीक्षा किए बिना सबसे कुशल तरीके से डेटा को संसाधित करने का मौका देना चाहता हूं।
user228505

कहते हैं: / देव / एसडीए स्पष्ट रूप से सिस्टम द्वारा उपयोग में है; बैडब्लॉक चलाना सुरक्षित नहीं है!
डिम

1
@ डिम्स यह बताता है कि इसे सक्रिय रूप से माउंटेड डिस्क पर नहीं चलाना चाहिए। पहले डिस्क को अनमाउंट करें। आपके मामले में यह आपका सिस्टम ड्राइव हो सकता है। तो पहले बचाव प्रणाली को बूट करें।
user228505

2
यदि आप इसे वैसे भी चलाना चाहते हैं तो @Dims -force विकल्प है। अर्थात सूडो बैडब्लॉक्स -svvn -c 262144 / dev / sda -force
ADR
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.