मैं WD के लिए डिस्क फर्मवेयर लिखता था, और मैंने एक बार फर्मवेयर लिखा था जो खराब ब्लॉकों को फिर से असाइन करता था।
सबसे पहले, सबसे खराब ब्लॉकों को रीड्स पर पता लगाया जाता है, न कि लिखता है। राइट्स को नेत्रहीन रूप से किया जाता है, जिसका अर्थ है कि डेटा बिना जांचे लिखा है। इस प्रकार अगर मीडिया खराब है, तो आप इसे तब तक नहीं जान पाएंगे, जब तक कि मेजबान उस क्षेत्र में पढ़ता नहीं है। सेक्टर (सेक्टर हेडर) का एक छोटा हिस्सा होता है, जिसे सही सेक्टर का पता लगाने के लिए राइट्स पर पढ़ा जाता है, ताकि यदि सेक्टर हेडर को पढ़ने में कोई त्रुटि हो, तो ड्राइव सेक्टर को फिर से असाइन करेगा और प्राप्त आंकड़ों के साथ इसे लिख देगा। राइट कमांड से। लेकिन खराब ब्लॉकों के विशाल बहुमत को रीड्स पर पाया जाता है, और सिर्फ इसलिए कि एक लेखन एक क्षेत्र के लिए सफल होता है इसका मतलब यह नहीं है कि मीडिया अच्छा है या इस क्षेत्र को फिर से असाइन किया गया है।
अब खराब ब्लॉक पुनर्मूल्यांकन (जिसे रियललोकेशन भी कहा जाता है) के बारे में। हां, आमतौर पर ड्राइव एक सेक्टर को आश्वस्त करने का प्रयास करेगा यदि त्रुटि काफी खराब है (यानी, ईसीसी विफलता काफी खराब है), लेकिन ईसीसी सुधार के बाद भी ड्राइव डेटा को पुनर्प्राप्त कर सकता है। आमतौर पर यह स्वचालित रूप से किया जाता है। एकमात्र अपवाद यह है कि मेजबान पहले ड्राइव को स्वचालित वास्तविकताओं को न करने के लिए कह सकता था, लेकिन यह शायद ही कभी किया जाता है।
तो क्या होता है अगर ड्राइव एक रीड करता है और डेटा को पुनर्प्राप्त नहीं कर सकता है? कुछ भी तो नहीं। होस्ट को त्रुटि की सूचना दी जाती है, लेकिन कोई पुन: असाइनमेंट नहीं किया जाता है। समस्या यह है कि ड्राइव सेक्टर को फिर से असाइन कर सकता है, लेकिन यह थोड़ा सा भी विचार नहीं है कि नए पुन: असाइन किए गए सेक्टर में क्या डेटा लिखना है। अगर यह सिर्फ शून्य का एक समूह लिखा है, कहते हैं, और फिर क्षेत्र फिर से पढ़ा गया था, यह सभी शून्य को बिना किसी संकेत के वापस कर देगा कि डेटा मान्य नहीं था। यह अनिवार्य रूप से डेटा भ्रष्टाचार के समान ही है। ड्राइव विभिन्न कारणों से त्रुटियों की निगरानी रखने वाले मेजबान पर भरोसा नहीं कर सकता है (उदाहरण के लिए, क्या होगा यदि ड्राइव को एक नए होस्ट में स्थानांतरित किया गया था?), इसलिए कार्रवाई का सबसे अच्छा कोर्स डेटा नहीं होने पर कुछ नहीं करना है? टी बरामद किया जाएगा।
हालांकि, आधुनिक ड्राइव खराब क्षेत्र के स्थान को तब बचाएंगे, जब इसे पुनः स्थापित नहीं किया जा सकता है। वास्तविक डेटा की प्रतीक्षा कर रहे बुरे क्षेत्रों की संख्या स्मार्ट डेटा में पाई जा सकती है। क्या होता है अगर एक राइट रिक्लेमेशन का इंतजार कर रहे बुरे क्षेत्रों में से एक के लिए किया जाता है, तो रियलाइजेशन किया जाता है क्योंकि ड्राइव के पास अब रियलाइजेशन के बाद इसे लिखने के लिए वैध डेटा है। इस प्रकार जब लोग कहते हैं कि एक बुरे क्षेत्र में लेखन इसे फिर से करेगा, तो यह वास्तव में केवल आधी कहानी है। ड्राइव को पहले पढ़ा जाना चाहिए ताकि ड्राइव उन सभी खराब क्षेत्रों की खोज कर सके जिन्हें स्वचालित रूप से पुनः प्राप्त नहीं किया जा सकता है। इस प्रकार आप एक संपूर्ण ड्राइव लिख सकते हैं, और स्मार्ट डेटा कहेगा कि कोई भी खराब सेक्टर नहीं है जो वास्तविक रूप से प्रतीक्षारत है, लेकिन आपने सभी खराब क्षेत्रों की ड्राइव को साफ नहीं किया है। इसलिए यदि आप वास्तव में सभी बुरे क्षेत्रों की ड्राइव को खाली करना चाहते हैं,
खराब ब्लॉकों से निपटने के अन्य तरीके हैं, जिन्हें दोबारा लागू नहीं किया जा सकता है। यदि ड्राइव एक अनावश्यक RAID कॉन्फ़िगरेशन (यानी, कुछ भी लेकिन RAID 0) का हिस्सा है, तो RAID सॉफ़्टवेयर को अन्य ड्राइव से खराब क्षेत्र के लिए डेटा को स्वचालित रूप से पुनर्प्राप्त करना चाहिए और इसे वास्तविक क्षेत्र में लिखना चाहिए। SCSI डिस्क में एक स्पष्ट रीसाइन ब्लॉक ब्लॉक कमांड होता है, जिसका उपयोग होस्ट ब्लॉक को लिखने के लिए कोई मान्य डेटा नहीं होने पर भी पुन: असाइनमेंट को बाध्य करने के लिए कर सकता है, लेकिन इसका उपयोग काफी निम्न स्तर का होता है।