Ubuntu badblocks: डिस्क बैड सेक्टर जांचने की पूरी गाइड

अवलोकन

स्टोरेज ड्राइव में अचानक आने वाली खराबी और डेटा क्षति से बचाव के लिए डिस्क स्वास्थ्य की समय रहते जांच करना आवश्यक होता है। Linux में badblocks कमांड की मदद से स्टोरेज मीडिया पर मौजूद खराब ब्लॉक्स (Bad Sectors) की पहचान कैसे की जाती है, इस गाइड में उसका व्यावहारिक विवरण दिया गया है। एक सुरक्षित वर्चुअल लैब वातावरण तैयार करने से लेकर रीड-ओनली स्कैन, रियल-टाइम प्रोग्रेस ट्रैकिंग, परिणाम लॉगिंग और नॉन-डिस्ट्रक्टिव रीड-राइट मोड तक के महत्वपूर्ण विकल्पों को यहाँ चरणबद्ध तरीके से समझाया गया है।

1. परीक्षण वातावरण तैयार करना और बुनियादी रीड-ओनली स्कैन (-v)

सिस्टम में badblocks टूल की उपलब्धता सुनिश्चित करने के लिए रिपॉजिटरी इंडेक्स को अपडेट करते हुए e2fsprogs पैकेज स्थापित या अपग्रेड करें। इसके लिए sudo apt-get update -qq && sudo apt-get install -y e2fsprogs कमांड चलाएं:

sudo apt-get update -qq && sudo apt-get install -y e2fsprogs

सीधे भौतिक हार्ड ड्राइव पर परीक्षण करने के बजाय बिना किसी जोखिम के अभ्यास करने हेतु 50MB की एक वर्चुअल डिस्क इमेज तैयार करें। इसके लिए dd if=/dev/zero of=/tmp/disk_test.img bs=1M count=50 status=none कमांड निष्पादित करें:

dd if=/dev/zero of=/tmp/disk_test.img bs=1M count=50 status=none

निर्मित डिस्क इमेज को ऑपरेटिंग सिस्टम द्वारा एक मानक ब्लॉक स्टोरेज डिवाइस के रूप में पहचानने के लिए इसे लूप डिवाइस से संबद्ध करें। इसके लिए sudo losetup -f /tmp/disk_test.img कमांड रन करें:

sudo losetup -f /tmp/disk_test.img

संबद्ध लूप डिवाइस के पाथ को एनवायरनमेंट वेरिएबल में सुरक्षित करने और आवंटन की पुष्टि करने के लिए LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && echo "테스트 디바이스: $LOOP_DEV" चलाएं:

LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && echo “테스트 디바이스: $LOOP_DEV”

badblocks यूटिलिटी ड्राइव के प्रत्येक सेक्टर को स्कैन करके क्षतिग्रस्त या अविश्वसनीय ब्लॉक्स का पता लगाती है।
डेटा सुरक्षा को प्राथमिकता देते हुए डिफ़ॉल्ट रीड-ओनली मोड में विस्तृत आउटपुट देखने के लिए -v विकल्प जोड़कर स्कैन आरंभ किया जाता है।
परीक्षण समाप्त होने पर यदि कोई ब्लॉक नंबर आउटपुट में नहीं दिखता, तो इसका अर्थ है कि डिस्क पूरी तरह स्वस्थ है।
⚙️ [प्रमुख विकल्प]

-v : स्कैन की प्रगति और परिणामों का विस्तृत विवरण स्क्रीन पर आउटपुट करता है।
-w : स्टोरेज पर विशेष पैटर्न लिखकर पुनः पढ़ने वाला डिस्ट्रक्टिव राइट मोड चलाता है (मौजूदा डेटा पूरी तरह नष्ट हो जाता है)।
-n : डेटा को सुरक्षित रखते हुए रीड और राइट दोनों क्षमताओं का परीक्षण करने वाला गैर-विनाशकारी (non-destructive) मोड निष्पादित करता है।
-s : कुल पूर्णता प्रतिशत (%) और जाँचे गए ब्लॉक्स की संख्या रीयल-टाइम में प्रदर्शित करता है।
-b : परीक्षण के लिए ब्लॉक का आकार बाइट्स में निर्धारित करता है (डिफ़ॉल्ट मान 1024 बाइट्स है)।
-o : पहचाने गए बैड ब्लॉक्स की सूची को कंसोल के बजाय निर्दिष्ट फ़ाइल में सहेजता है।
-p : रुक-रुक कर आने वाली खामियों को पकड़ने के लिए परीक्षण को निर्दिष्ट संख्या में दोहराता है।

LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && sudo badblocks -v $LOOP_DEV

2. रीयल-टाइम प्रगति ट्रैकिंग के साथ स्कैनिंग (-s, -v)

लूप डिवाइस पाथ की पुष्टि करते हुए जांच की लाइव स्थिति देखने के लिए -s और -v फ्लैग के साथ sudo badblocks -s -v $LOOP_DEV कमांड निष्पादित करें।
-s विकल्प प्रक्रिया की पूर्णता दर (%) और स्कैन किए गए ब्लॉक्स की ताज़ा संख्या दिखाता है, जबकि -v विकल्प स्कैनिंग के प्रत्येक चरण की विस्तृत रिपोर्ट स्क्रीन पर देता है।
विशाल स्टोरेज ड्राइव्स का विश्लेषण करते समय यह संयोजन अत्यंत प्रभावी है क्योंकि इससे कार्य की प्रगति का तुरंत अनुमान लगाया जा सकता है; बिना किसी एरर कोड के प्रक्रिया पूरी होना स्वस्थ डिस्क की पुष्टि करता है।

LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && sudo badblocks -s -v $LOOP_DEV

3. कस्टम ब्लॉक आकार निर्धारण और रिपोर्ट फ़ाइल तैयार करना (-b, -o)

आधुनिक फ़ाइल प्रणालियों की मानक इकाई 4096 बाइट्स के अनुसार स्कैनिंग करने तथा निष्कर्षों को टेक्स्ट फ़ाइल में लॉग करने के लिए LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && sudo badblocks -b 4096 -v -o /tmp/badblocks_report.txt $LOOP_DEV निष्पादित करें।
-b 4096 पैरामीटर का उपयोग डिफ़ॉल्ट 1024 बाइट्स के बजाय फ़ाइल सिस्टम की वास्तविक संरचना के अनुरूप सटीक और अनुकूलित स्कैन सुनिश्चित करता है।
वहीं -o विकल्प चिन्हित किए गए दोषपूर्ण सेक्टरों की सूची एक अलग फ़ाइल में दर्ज कर देता है, जिसका उपयोग बाद में मरम्मत या सेक्टर मास्किंग के लिए किया जा सकता है।

LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && sudo badblocks -b 4096 -v -o /tmp/badblocks_report.txt $LOOP_DEV

तैयार की गई रिपोर्ट फ़ाइल का अवलोकन करने के लिए cat /tmp/badblocks_report.txt चलाएं।
दोषरहित डिस्क में कोई भी बैड सेक्टर न मिलने के कारण फ़ाइल में कोई प्रविष्टि नहीं होती और वह रिक्त दिखाई देती है।

cat /tmp/badblocks_report.txt

4. गैर-विनाशकारी रीड/राइट परीक्षण और लैब क्लीनअप (-n)

मौजूदा डेटा को सुरक्षित रखते हुए पढ़ने और लिखने दोनों प्रक्रियाओं की गहन जांच करने के लिए -n और -v विकल्पों के साथ LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && sudo badblocks -n -v $LOOP_DEV कमांड चलाएं।
-n विकल्प मूल डेटा को सुरक्षित मेमोरी में बैकअप करके टेस्ट पैटर्न लिखता है और परीक्षण के बाद मूल डेटा को जस का तस पुनर्स्थापित कर देता है, जिससे बिना डेटा हानि के संपूर्ण परीक्षण संभव होता है।
जांच परिणाम में किसी भी क्षतिग्रस्त ब्लॉक की अनुपस्थिति ड्राइव के सुचारू संचालन का प्रमाण है।

LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && sudo badblocks -n -v $LOOP_DEV

परीक्षण समाप्त होने पर उपयोग किए गए लूप डिवाइस को डिस्कनेक्ट करने तथा अस्थायी वर्चुअल इमेज और रिपोर्ट फ़ाइलों को हटाने के लिए LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && sudo losetup -d $LOOP_DEV && rm -f /tmp/disk_test.img /tmp/badblocks_report.txt चलाएं:

LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && sudo losetup -d $LOOP_DEV && rm -f /tmp/disk_test.img /tmp/badblocks_report.txt

इस गाइड में हमने Ubuntu पर badblocks कमांड के व्यावहारिक उपयोग और इसके प्रमुख विकल्पों का विस्तार से अध्ययन किया।
अपने मूल्यवान डेटा की सुरक्षा सुनिश्चित करने के लिए नियमित अंतराल पर ड्राइव्स की जांच करते रहें ताकि हार्डवेयर विफलताओं से पूर्व ही आवश्यक कदम उठाए जा सकें।