क्या एक खराब क्षेत्र एक असफल डिस्क को इंगित करता है?


16

मेरा Ubuntu 13.10 सिस्टम पिछले दिन या तो बहुत खराब प्रदर्शन कर रहा है। कर्नेल लॉग को देखते हुए, ऐसा प्रतीत होता है कि <1yr पुरानी 3TB SATA डिस्क में एक विशेष क्षेत्र के साथ समस्याएँ हैं:

Nov  4 20:54:04 mediaserver kernel: [10893.039180] ata4.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
Nov  4 20:54:04 mediaserver kernel: [10893.039187] ata4.01: BMDMA stat 0x65
Nov  4 20:54:04 mediaserver kernel: [10893.039193] ata4.01: failed command: READ DMA EXT
Nov  4 20:54:04 mediaserver kernel: [10893.039202] ata4.01: cmd 25/00:08:f8:3f:83/00:00:af:00:00/f0 tag 0 dma 4096 in
Nov  4 20:54:04 mediaserver kernel: [10893.039202]          res 51/40:00:f8:3f:83/40:00:af:00:00/10 Emask 0x9 (media error)
Nov  4 20:54:04 mediaserver kernel: [10893.039207] ata4.01: status: { DRDY ERR }
Nov  4 20:54:04 mediaserver kernel: [10893.039211] ata4.01: error: { UNC }
Nov  4 20:54:04 mediaserver kernel: [10893.148527] ata4.00: configured for UDMA/133
Nov  4 20:54:04 mediaserver kernel: [10893.180322] ata4.01: configured for UDMA/133
Nov  4 20:54:04 mediaserver kernel: [10893.180345] sd 3:0:1:0: [sdc] Unhandled sense code
Nov  4 20:54:04 mediaserver kernel: [10893.180349] sd 3:0:1:0: [sdc]
Nov  4 20:54:04 mediaserver kernel: [10893.180353] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
Nov  4 20:54:04 mediaserver kernel: [10893.180356] sd 3:0:1:0: [sdc]
Nov  4 20:54:04 mediaserver kernel: [10893.180359] Sense Key : Medium Error [current] [descriptor]
Nov  4 20:54:04 mediaserver kernel: [10893.180371] Descriptor sense data with sense descriptors (in hex):
Nov  4 20:54:04 mediaserver kernel: [10893.180373]         72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00
Nov  4 20:54:04 mediaserver kernel: [10893.180384]         af 83 3f f8
Nov  4 20:54:04 mediaserver kernel: [10893.180389] sd 3:0:1:0: [sdc]
Nov  4 20:54:04 mediaserver kernel: [10893.180393] Add. Sense: Unrecovered read error - auto reallocate failed
Nov  4 20:54:04 mediaserver kernel: [10893.180396] sd 3:0:1:0: [sdc] CDB:
Nov  4 20:54:04 mediaserver kernel: [10893.180398] Read(16): 88 00 00 00 00 00 af 83 3f f8 00 00 00 08 00 00
Nov  4 20:54:04 mediaserver kernel: [10893.180412] end_request: I/O error, dev sdc, sector 2944614392
Nov  4 20:54:04 mediaserver kernel: [10893.180431] ata4: EH complete

kern.logफ़ाइल ज्यादातर दोहराया उपरोक्त त्रुटि से भरा 33MB के आसपास है और क्षेत्र दोहराया संदेशों में किसी भी अलग हो प्रतीत नहीं होता है।

वर्तमान में मैं परीक्षण करने के लिए अब अनमाउंट डिस्क पर निम्न कमांड चला रहा हूं और डिस्क में किसी भी समस्या को हल करने का प्रयास कर सकता हूं। मैं लगभग 12 घंटे में हूँ और यह उम्मीद करता हूँ कि एक और 24/48 घंटे लगेंगे क्योंकि डिस्क इतनी बड़ी है:

e2fsck -c -c -p -v /dev/sdc1

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

शीघ्र नवीनीकरण!

e2fsck अंत में 2 दिनों के बाद 'इन-कोड में बहुविकल्पी ब्लॉक (ओं) के साथ समाप्त हो गया।' फ़ाइल-सिस्टम को माउंट करने की कोशिश करने में त्रुटि हुई, इसे केवल पढ़ने के लिए वापस छोड़ने के लिए मजबूर किया गया:

Nov 11 08:29:05 mediaserver kernel: [211822.287758] EXT4-fs (sdc1): warning: mounting fs with errors, running e2fsck is recommended
Nov 11 08:29:05 mediaserver kernel: [211822.301699] EXT4-fs (sdc1): mounted filesystem with ordered data mode. Opts: errors=remount-ro

इस क्षेत्र को मैन्युअल रूप से पढ़ने की कोशिश कर रहा है:

sudo dd count=1 if=/dev/sdc of=/dev/null skip=2944614392
dd: reading ‘/dev/sdc’: Input/output error
0+0 records in
0+0 records out
0 bytes (0 B) copied, 5.73077 s, 0.0 kB/s

इसे लिखने की कोशिश कर रहा है:

sudo dd count=1 if=/dev/zero of=/dev/sdc seek=2944614392
dd: writing to ‘/dev/sdc’: Input/output error
1+0 records in
0+0 records out
0 bytes (0 B) copied, 2.87869 s, 0.0 kB/s

दोनों गणनाओं पर, Reallocated_Sector_Ct0 बने रहे।

ड्राइव अक्सर नींद की स्थिति में चला जाता है। मैं अब सोच रहा हूं कि यह एक फाइलसिस्टम मुद्दा हो सकता है? मैं 100% नहीं हूं।


4
यह लगभग / निश्चित रूप से / यह सुनिश्चित करने के लिए एक संकेत है कि आपके बैकअप क्रम में हैं और फिर अपने हार्डवेयर की जांच करें।
शादुर 12

हम्म। वे थोड़ा पुराने हैं, लेकिन वे परवाह किए बिना वहाँ हैं। बहुत निराशा हुई, क्योंकि इस अभियान ने एक और दोषपूर्ण को बदल दिया।
12

डिस्क में नाकाम रहने के लिए, देखें इन क्यू एंड ए के जहाँ मैं कैसे आगे बढ़ना कवर किया है: unix.stackexchange.com/search?q=user%3A7453+hdat
SLM

2
... यदि इस ड्राइव ने एक दोषपूर्ण को बदल दिया, तो संभावना है कि यह ड्राइव के बजाय नियंत्रक है।
शादुर

जवाबों:


17

खराब क्षेत्र हमेशा एक विफल HDD का संकेत होते हैं, वास्तव में जिस क्षण आप इस तरह से I / O त्रुटि देखते हैं, आप शायद पहले ही कुछ डेटा खो चुके हैं / दूषित कर चुके हैं। यदि आप पहले से ही नहीं हैं, तो एक बैकअप बनाएं, एक आत्म परीक्षण चलाएं smartctl -t long /dev/diskऔर स्मार्ट डेटा जांचें smartctl -a /dev/disk। यदि आप कर सकते हैं एक प्रतिस्थापन प्राप्त करें।

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


धन्यवाद। वास्तव में यह जानना उपयोगी है कि यह हमेशा मेरे लिए एक ग्रे क्षेत्र रहा है। मैं ड्राइव को शून्य करने जा रहा हूं और इसे वापस भेज रहा हूं, क्योंकि यह वारंटी के भीतर है।
श्रीमान नौ

1
ऐसा नहीं। बुरे सेक्टर सिर्फ एक सेक्टर को अत्यधिक उच्च यातायात का संकेत देते हैं। MOST मामलों में, यह एक विफल डिस्क को इंगित करता है। आप धीमी गति से प्रतिक्रियाओं को चिन्हित करने के लिए अपनी तलाश की गति को खराब कर सकते हैं ... हालांकि यह हमेशा कहना बहुत जटिल है।
रोबॉटहूमन

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

@frostschutz का अर्थ क्या है Get a replacement if you can.? क्या आप डिस्क की जगह लेते हैं?
विमान

10

सेक्टरों को फिर से जोड़ने के लिए ड्राइव करने के लिए, आमतौर पर आपको उनमें कुछ लिखने की जरूरत होती है। हालांकि, dd( डी ISK डी estroyer) हमेशा काम करता है, और बहुत ही असुरक्षित है: यदि आप भ्रमित skipऔर seekविकल्प, आप आसानी से अपने आप को पैर में से शूट कर सकते हैं skipपिंगN के पहले ब्लॉक /dev/zeroऔर से कि "ऑफसेट" एक ब्लॉक लेखन से अधिक आपकी हार्ड डिस्क का सेक्टर 0

यदि आप वास्तव में जानते हैं कि आप इस क्षेत्र को शून्य से अधिलेखित करने के लिए बाध्य करना चाहते हैं, तो आपको उपयोग करना चाहिए hdparm:

% sudo hdparm --read-sector 833192656 /dev/sda
/dev/sda:
reading sector 833192656: FAILED: Input/output error

हां, स्मार्ट टेस्ट में भी सेक्टर 833192656 फेल रहा। इसके लिए शून्य लिखने के लिए, उपयोग करें --write-sector:

% sudo hdparm --write-sector 833192656 /dev/sda
/dev/sda:
Use of --write-sector is VERY DANGEROUS.
You are trying to deliberately overwrite a low-level sector on the media.
This is a BAD idea, and can easily result in total data loss.
Please supply the --yes-i-know-what-i-am-doing flag if you really want this.
Program aborted.

hdparmजब तक आप --yes-i-know-what-i-am-doingस्विच को पास नहीं करते हैं, तब तक एक सुरक्षा के रूप में, वास्तव में कुछ भी नहीं लिखता है hdparm:

% sudo hdparm --yes-i-know-what-i-am-doing --write-sector 833192656 /dev/sda
/dev/sda:
re-writing sector 833192656: succeeded
% sudo hdparm --read-sector 833192656 /dev/sda                              

/dev/sda:
reading sector 833192656: succeeded
0000 0000 0000 0000 0000 0000 0000 0000
[      ... more zeroes here...        ]
0000 0000 0000 0000 0000 0000 0000 0000

%

हालांकि यह एक प्राचीन aswer है, मैं वास्तव में सोच रहा हूं कि "dd हमेशा काम नहीं करता है" से आपका क्या मतलब है। क्या आप सुझाव दे रहे हैं कि यह निर्देशानुसार डेटा लिखने में विफल हो सकता है? यह विशेष रूप से विफलता के लिए कुछ भी नहीं कर रहा है, बस चारों ओर डेटा की प्रतिलिपि बना रहा है। आप लगभग किसी भी प्रोग्रामिंग भाषा में दो लाइनों का उपयोग करके एक ही परिणाम प्राप्त कर सकते हैं।
19

7

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

आप badblocks -nप्रत्येक क्षेत्र को पढ़ने और फिर से लिखने के लिए ड्राइव पर दौड़ सकते हैं , या आपके मामले में चूंकि आप पहले से ही प्रश्न में क्षेत्र की संख्या जानते हैं, इसलिए आप ddइसे लिखने के लिए शून्य का उपयोग कर सकते हैं । आप स्मार्ट आंकड़ों की जांच कर सकते हैं smartctl -a। आपको लंबित वास्तविक गणना को देखना चाहिए कि कितने सेक्टर पढ़ने में विफल रहे हैं, और सेक्टर को लिखने का प्रयास करने के बाद, यह गिनती नीचे चली जाएगी। रियलकॉकेटेड सेक्टर की गिनती बढ़ सकती है, इस मामले में यह शारीरिक रूप से खराब था और इसे स्पेयर पूल में भेज दिया गया है, और यह एक संकेत हो सकता है कि ड्राइव अपने रास्ते पर है। यदि नहीं, तो फिर यह सिर्फ तले हुए थे और अब ठीक होना चाहिए।

पहले सेक्टर को पढ़ने की कोशिश करें:

dd count=1 if=/dev/sda of=/dev/null skip=nnnn

यदि वह विफल रहता है, तो आपके पास नंबर सही है, तो आप इसे शून्य कर सकते हैं:

dd count=1 if=/dev/zero of=/dev/sda seek=nnnn

डबल चेक करें कि आपने एंटर करने से ठीक पहले कमांड टाइप किया है।


यह दिलचस्प है कि आप ऐसा कहते हैं, क्योंकि मुझे आपकी आज्ञाओं के बाद कुछ दिलचस्प जानकारी मिली है। मैंने ऊपर अपने प्रश्न में संशोधन किया है।
MrNorm

क्या आपका ड्राइव किसी कारण से SMART का समर्थन नहीं करता है या ऐसा क्यों है कि आपने अभी तक इसकी जाँच नहीं की है?
१०

1
@frostschutz "दोनों मायने में, Reallocated_Sector_Ct 0. बना रहा।" लगता है कि ओपी ने स्मार्ट की जाँच की है।
बजे एक CVn

@ मॉर्नम, कृपया smartctl -aअपने प्रश्न में पूरा आउटपुट जोड़ें ।
Psusi

2
कृपया इसका उपयोग न करें (यह भी हमेशा काम नहीं करता है), और यदि आप स्किप को भ्रमित करते हैं और चाहते हैं तो आप अपने एमबीआर को इसके बजाय अधिलेखित कर देंगे। मेरा जवाब
एंटी हवाला
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.