المشاركة الأصلية بواسطة ماجد علي مشاهدة المشاركة
لم أعرف أين أضع الشرح ولكن عقلي قادني لهنا .
في هذا الدرس سنشرح طريقة إصلاح أقسام القرص الصلب التالفة أو المعطوبة لأنظمة الملفات من نوع ext2 و ext3
ولكن قبل أن نبدأ لا بد من أخذ بعض المعلومات عن الأقراص الصلبة ونظام الملفات .
فنظام الملفات ينقسم إلى جزئين :
1- بيانات المستخدم : وفي هذا القسم يتم تخزين بيانات المستخدم الفعلية وهي الملفات .
2- بيانات وصفية Metadata : وفي هذا القسم يتم تخزين المعلومات الهيكلية الخاصة بنظام الملفات ( مثل المجلدات و inodes و superblock ) .

وللتبسيط أكثر ، فلو كان لدينا قرص صلب بمساحة 20 جيجابيات . فسيكون هذا القرص مقسم إلى عدة كتل Blocks هذه الكتل تستخدم لغرضين :
1- أغلب هذه الـ Blocks تُستخدم لتخزين بيانات المستخدم ، وهي ما يُعرف بالملفات .
2- بعض هذه الـ Blocks يتم استخدامها لتخزين البيانات الوصفية الخاصة بنظام الملفات والتي تسمى metadata ، ولكن ما هي هذه الـ metadata .

ولتبسيط الأمور فإن هذه الـ metadata تصف هيكلية نظام الملفات وطريقة بناءه ومن هذه البيانات ( superblock, inode, directories ) .

وما يهمنا هنا هو الـ superblock . فما هي ؟
يختلف كل نظام ملفات عن الآخر فلكل نظام نوع مخصص يميزه عن الآخر كالأنواع ext2 و ext3 وغيرها . أيضاً كل نظام ملفات لابد وأن يكون له حجم محدد ( 5 جيجا أو 50 ) و لابد أيضاً أن يكون له حالة مثل حالة التموضع أو الإرساء ( mounted or unmounted ) ومن الأخير فإن الكتلة العليا أو superblock تحتوي على المعلومات التالية عن نظام الملفات :
1- نوع نظام الملفات .
2- حجم نظام الملفات .
3- حالة النظام .
4- معلومات عن بيانات وصفية ( metadata ) أخرى .
إذا تم فقد هذه البيانات ، فستضحى في مشكلة وخطر فقد بياناتك الخاصة ، لذا من عظمة وجمال نظام linux هو قيامه بنسخ نُسخ احتياطية متعددة من الكتلة العليا superblock في كل نظام ملفات .

طيب قد يسأل أحد ما ، مالذي يسبب فقدان هذه الكتلة المهمة ( superblock ) ؟
والجواب هو أنه قد تحدث عدة أمور تسبب فقدان هذه الكتلة ولكن من أشهرها وأهمها الأسباب التالية :
1- خطأ يرتكبه مدير النظام عنده تعامله مع نظام الملفات .
2- أحد درايفرات الأجهزة فقد يكون الدرايفر غير مناسب .
3- الانقطاع المفاجئ للتيار الكهربائي أثناء تعامل نظام التشغيل مع نظام الملفات .
4- العلل البرمجية في نواة النظام ( ولهذا السبب وغيره لا يستخدم مدراء الأنظمة الإنتاجية الإصدارات الأخيرة من النواة فور صدورها بل ينتظروا حتى تأخذ وقتها من الإختبار والفحص ) .

طيب ما هي الأعراض التي قد تصيب نظام الملفات عند فقدانه للكتلة العليا superblock ؟
والجواب :
1- سيرفض نظام الملفات الإرساء أو الربط mount
2- تعليق مستمر لكامل النظام .
3- حتى لو نجحت في ربط ( mount ) نظام الملفات فستلاحظ أمور غريبة عليه مثل قيام نظام التشغيل بإعادة التشغيل بدون سبب أو حروف واسماء ملفات غير مفهومة . وغيرها من التصرفات على المجلدات والملفات .

طيب ، الآن لنفترض أن أحداً واجه مشكلة فقد الـ superblock وانعطب نظام الملفات لديه فمالحل لإصلاحه ؟
فلنفترض أن التقسيم المعطوب هو
كود:
 /dev/sdb4
فأولاً إن كان مُنظم إلى مجلد ما ( mounted ) فلابد من تحريره بالأمر التالي :

كود:
 # umount /dev/sdb4

ويستحسن عمل فحص ولكنه غير ضروري ، وذلك بالأمر التالي :


كود:
 # e2fsck -f /dev/sdb4

الخيار f هو لجعل عملية الفحص إجبارية حتى ولو كان النظام سليم فلوكانت الـ superblock مفقودة من هذا النظام فستتوقف عملية الفحص مع ظهور خطأ fatal error .


الآن سنستعرض جميع الـ superblock الموجود في نظام الملفات ( الرئيسية والاحتياطية ) . وذلك عن طريق الأمر :
كود:
 # dumpe2fs /dev/sdb4 | grep -i superblock

سيتم عرض الـ superblock الرئيسية والنسخ الإحتياطية منها ، وستكون المخرجات بالشكل التالي :

كود:
 Primary superblock at 0, Group descriptors at 1-5
Backup superblock at 32768, Group descriptors at 32769-32773
Backup superblock at 98304, Group descriptors at 98305-98309
Backup superblock at 163840, Group descriptors at 163841-163845
Backup superblock at 229376, Group descriptors at 229377-229381
Backup superblock at 294912, Group descriptors at 294913-294917
Backup superblock at 819200, Group descriptors at 819201-819205
Backup superblock at 884736, Group descriptors at 884737-884741
[...]
وقد تكون المخرجات أكثر أو أقل حسب حجم القرص الصلب .
أيضاً يمكنك استخدام الأمر :
كود:
 # e2fsck -n /dev/sdb4

لنفس الغرض ولكن ستكون المخرجات بشكل مختلف قليلاً حيث سيعرض النسخ الاحتياطية للـ superblock في الأسطر الأخيرة من المخرجات وتستطيع استخدام أي نسخة منها .

طبعاً الـ superblock الرئيسية دائماً تكون عند الكتلة رقم صفر .
والآن لاسترجاع أحد النُسخ فمثلاً النسخة رقم 32768 فسنكتب الأمر التالي :

كود:
 # e2fsck -b 32768 /dev/sdb4

الخيار b يعني ( alternative-superblock ) أي نسخة superblock بديلة .

لو كان القسم المعطوب هو القسم الرئيسي للنظام / فسنحتاج إلى تشغيل النظام من Live-CD وعمل الاستعادة عن طريقه .

طبعاً من المفضل دائماً عمل نسخة احتياطية لكامل القسم المُراد إصلاحه وتكون موجودة في تقسيم آخر غير التقسيم المعطوب فلو أردنا عملها في المجلد /disk مثلاً ، عندها سننفذ الأمر بالشكل التالي :

كود:
 # dd if=/dev/sdb4 of=/disk/bakup-sdb4.iso

ملاحظة : الرمز # الموجود في الأوامر أعلاه يوضح أن الأمر يجب أن يتم تنفيذه من قبل المستخدم الجذر ولا تقم بكتابة الرمز من ضمن الأمر .
وفي الأخير يبدوا أنني أطلبت الدرس زيادة عن اللزوم ولكن أحب أن أشرح بالتفصيل الممل حتى يفهم الكل .

المراجع :
http://www.serverwatch.com/tutorials...le.php/3786971
http://www.brunolinux.com/04-The_Fil...uperblock.html
http://www.cyberciti.biz/tips/the-im...artitions.html
http://www.cyberciti.biz/tips/unders...em-part-i.html