دليل فحص القطاعات المعطوبة في أوبونتو عبر أداة badblocks

نظرة عامة

يُعد التدقيق الدوري لوسائط التخزين خطوة استباقية حاسمة لتفادي الانهيار المفاجئ للأقراص وحماية البيانات الحساسة من الضياع التام. ترتكز هذه المقالة على استعراض أداة badblocks المتخصصة في كشف البقع التالفة (Bad Sectors) على بيئات لينكس. سنبدأ بتجهيز بيئة تدريب افتراضية آمنة تمنع إلحاق أي ضرر بالعتاد الحقيقي، ثم نستعرض بالتفصيل أنماط الفحص المتنوعة بدءاً من القراءة البسيطة ومتابعة مؤشرات الإنجاز، وصولاً إلى استخراج السجلات واستخدام أسلوب القراءة والكتابة غير التدميري.

1. إعداد بيئة معزولة للاختبار وبدء الفحص بوضع القراءة (-v)

تحتاج أولاً إلى توفير الحزمة البرمجية e2fsprogs التي تحتوي على الأداة وضمان تحديثها على التوزيعة، وذلك عبر تنفيذ الأمر sudo apt-get update -qq && sudo apt-get install -y e2fsprogs.

تثبيت حزمة e2fsprogs وتحديث المستودعات

تفادياً للمخاطرة بفحص أقراص النظام الأساسية أثناء التدريب، يتم إنشاء صورة قرص افتراضي بسعة 50 ميجابايت لاختبار الأوامر بأمان تام عبر الأمر dd if=/dev/zero of=/tmp/disk_test.img bs=1M count=50 status=none.

إنشاء ملف صورة قرص وهمي بحجم 50 ميجابايت

لكي يتعامل نواة النظام مع ملف الصورة الافتراضي كجهاز تخزين كتل حقيقي (Block Device)، نقوم بربطه بأقرب جهاز حلقي متاح من خلال تشغيل sudo losetup -f /tmp/disk_test.img.

ربط صورة القرص بجهاز حلقي متاح

لتسهيل الإشارة إلى مسار وحدة التخزين الحلقية أثناء الأوامر اللاحقة والتأكد من نجاح التعيين، يُخزّن المسار داخل متغير بيئي باستخدام LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && echo "테스트 디바이스: $LOOP_DEV".

تحديد مسار جهاز الحلقة والتحقق منه

تعتمد آلية badblocks على قراءة مسارات وسيط التخزين قطاعاً تلو الآخر للتحقق من سلامة البنية الفيزيائية والمنطقية.
في هذا الاختبار الأولي، يُطبّق وضع القراءة الافتراضي الخالي من أي مخاطر على الملفات مع إضافة الخيار -v لعرض مجريات الفحص بصورة تفصيلية.
إذا انتهى الفحص دون إدراج أي أرقام كتل في سطر الأوامر، فهذا يؤكد سلامة الوسيط وخلوّه من الأعطاب.
⚙️ [الخيارات الحيوية للأداة]

-v : إظهار تقرير تفصيلي وشامل حول خطوات المسح وحصيلة النتائج فور انتهائها.
-w : وضع الكتابة التدميري؛ يقوم بحذف المحتويات القديمة وكتابة أنماط بيانات تجريبية على القرص ثم قراءتها للتأكد من قدرة التخزين.
-n : وضع القراءة والكتابة الآمن (غير التدميري)؛ يحتفظ بالمحتويات الأصلية مؤقتاً أثناء تدقيق الكتل ويعيدها لمكانها دون فقدان للبيانات.
-s : عرض شريط الإنجاز المباشر موضحاً النسبة المئوية وعدد الكتل التي تم فحصها حتى اللحظة.
-b : تحديد حجم الكتلة بالبايت لمطابقة هيكلية نظام الملفات المستهدف (القيمة الافتراضية 1024 بايت).
-o : تحويل مسار مخرجات الكتل التالفة ليتم حفظها مباشرة داخل ملف نصي بدلاً من عرضها على الطرفية.
-p : تكرار جولات الفحص وفق عدد محدد لاكتشاف المشكلات المتقطعة التي قد لا تظهر في الجولة الأولى.

تنفيذ فحص القراءة مع إخراج التفاصيل الكاملة

2. متابعة مؤشر التقدم وتفاصيل المسح في الوقت الفعلي (-s, -v)

عند التعامل مع وسائط ذات سعات تخزينية هائلة، يصبح الاطلاع على مقدار التقدم الزمني ضرورة ملحة؛ لذا ندمج المعاملين -s و-v عبر تنفيذ sudo badblocks -s -v $LOOP_DEV.
يمنحك المعامل -s رؤية واضحة للنسبة المئوية المنتهية وعدد القطاعات المعالجة تباعاً، بينما يتولى -v تقديم تفاصيل العمليات البرمجية ونتائجها النهائية.
تساعدك هذه المخرجات التفاعلية في تقدير الوقت المتبقي، ويعد خروج الأمر دون تسجيل أي أرقام كتل دليلاً جازماً على متانة القطاعات وسلامتها.

تشغيل فحص الأقراص مع عرض شريط التقدم والنسبة المئوية

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 على توجيه قائمة القطاعات المتضررة تلقائياً إلى المسار المحدد، لتصبح وثيقة مرجعية جاهزة للاستخدام في إجراءات الإصلاح أو العزل اللاحقة عبر أدوات الصيانة الأخرى.

فحص القرص بحجم كتلة 4096 بايت وتصدير النتائج إلى تقرير

للاطلاع على فحوى التقرير المستخرج والتحقق من نتائجه، يمكن استعراض الملف باستخدام الأمر 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 losetup -d $LOOP_DEV && rm -f /tmp/disk_test.img /tmp/badblocks_report.txt.

فصل جهاز الحلقة وحذف الملفات المؤقتة بعد انتهاء الاختبار

تناولنا خلال هذا العرض العملي أبرز آليات ومعاملات أداة badblocks على نظام أوبونتو لتقييم كفاءة وسائط التخزين ورصد الأعطال مبكراً.
احرص دائماً على جدولة هذه الفحوصات بانتظام لحماية منظومة ملفاتك وتجنب التوقفات غير المتوقعة الناتجة عن تدهور الأقراص الصلبة.