الكتلة الفائقة في نظام لينكس: ما هي، والأخطاء الشائعة وكيفية إصلاحها

  • يخزن "القطاع الفائق" في نظام لينكس معلومات بالغة الأهمية حول نظام الملفات ext، ويحتوي على نسخ احتياطية موزعة عبر القرص.
  • عادة ما يتم حل أخطاء "لا يمكن قراءة الكتلة الفائقة" باستخدام كتل فائقة بديلة مع fsck/e2fsck وأيضًا التحقق من الكتل التالفة المحتملة.
  • تتيح لك أدوات مثل dumpe2fs و badblocks و debugfs وأدوات XFS تشخيص وإصلاح وضبط أنظمة الملفات التالفة بما يتجاوز الحالة الأساسية.

الكتلة الفائقة على نظام لينكس

إذا كنت تستخدم نظام لينكس، فسترى عاجلاً أم آجلاً رسالة الخطأ المزعجة المتعلقة بـ سوبربلوك (مجمع سكني ضخم)أشياء مثل "لا يمكن قراءة الكتلة الفائقة"، أو "كتلة فائقة تالفة"، أو أخطاء في fsck يتحدثون عن وحدات تخزين بديلة. وبالطبع، في تلك اللحظة ينتابك الذعر لأن قسمك لا يُحمّل، أو يدخل النظام في وضع BusyBox، أو يبدو محرك أقراص USB الخارجي معطلاً.

والخبر السار هو ذلك تم تصميم أنظمة الملفات ext2 و ext3 و ext4 تحديداً من أجل النجاة من هذه المخاوفتُخزّن هذه الأنظمة نسخًا احتياطية من الكتلة الرئيسية (Superblock) في مواقع مختلفة على القرص، وهناك العديد من الأدوات (مثل fsck وe2fsck وdumpe2fs وdebugfs وbadblocks وغيرها) التي تُمكّنك من فحص البيانات وإصلاحها، بل واستعادتها حتى في الحالات الحرجة. في هذه المقالة، ستتعرف ببساطة على ماهية الكتلة الرئيسية، وكيفية تلفها، وكيفية استخدام نسخها الاحتياطية، وما يجب فعله في كل سيناريو واقعي، بدءًا من جهاز كمبيوتر محمول يُقلع إلى BusyBox وصولًا إلى محرك أقراص USB لا يُمكن الوصول إليه نهائيًا.

ما هو "الكتلة الفائقة" في نظام لينكس ولماذا هي مهمة للغاية؟

في نظام ملفات ext2/ext3/ext4، الكتلة الضخمة هي "العقل" من وحدة التخزين. إنها بنية بيانات يتم تخزينها على القرص وتحتوي عمليًا على جميع "المواصفات التقنية" لنظام الملفات: عدد الكتل التي تحتوي عليها، وعدد العقد، وحجم الكتلة التي تستخدمها، وعدد الكتل الحرة المتبقية، وحالة النظام، والميزات المفعلة، وأوقات التحميل والفحص، وما إلى ذلك.

الكتلة الرئيسية يتم تخزينه في بداية نظام الملفات (في الكتلة 0 أو بعد كتلة التمهيد، حسب حجم الكتلة)، لكن تصميم ext2/3/4 حكيم: فهو يخزن أيضًا نسخًا احتياطية من الكتلة الرئيسية موزعة على عدة مجموعات من الكتل. هذه النسخ الاحتياطية هي ما يسمح لنا "بإعادة إحياء" نظام الملفات عندما تتلف الكتلة الرئيسية.

داخليًا، الكتلة الضخمة هي هيكل ضخم يضم عشرات الحقول: إجمالي عدد العقد (s_inodes_count)، إجمالي عدد الكتل (s_blocks_count_lo والجزء العلوي s_blocks_count_hi (في نظام الملفات ext4 64 بت)، الكتل المحجوزة للجذر، والكتل الحرة، والعقد، وأول كتلة بيانات، وحجم الكتلة بدءًا من s_log_block_size، عدد الكتل لكل مجموعة، عدد العقد لكل مجموعة، الختم السحري 0xEF53 والذي يحدد ext2/3/4، وعلامات الميزات المتوافقة وغير المتوافقة والقراءة فقط، وUUID، وتسمية وحدة التخزين، والمسار الذي تم فيه تركيبها آخر مرة، ومعلمات التسجيل، وأوقات التركيب والفحص الأخيرة، والحد الأقصى لعدد عمليات التركيب قبل فرض fsck، ومعلومات الخطأ، ومجموع التحقق، ودعم التشفير، وRAID، واللقطات، وما إلى ذلك.

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

الكتلة الفائقة على نظام لينكس

أين تُخزَّن نسخ الكتلة الفائقة وكيفية تحديد موقعها؟

أول شيء يجب فهمه هو ذلك تخزين نسخ الكتلة الفائقة ext2/ext3/ext4 يتم تخزينها على قطاعات مختلفة من القرص، بحيث يمكننا استخدام إحدى هذه النسخ الاحتياطية في حال تلف النسخة الرئيسية. يعتمد الموقع الدقيق على حجم القطاع وكيفية إنشاء نظام الملفات.

هناك طريقتان شائعتان للغاية لمعرفة مكان وجود تلك النسخ. باستخدام الأدوات القياسية:

  • قراءة الوثائق/دليل المستخدم e2fsck.
  • باستخدام dumpe2fs أو mke2fs في وضع "المحاكاة" (-n) لعرض قائمة الكتل التي تحتوي على نسخ من الكتلة الفائقة.

بالنسبة للأنظمة الخارجية ذات أحجام الكتل الكلاسيكية، لدينا بعض القيم "النموذجية" بالنسبة للنسخة الاحتياطية الأولى: إذا كان حجم الكتلة 1 كيلوبايت، فعادةً ما تكون النسخة الاحتياطية في الكتلة 8193؛ ومع كتل 2 كيلوبايت تكون عادةً في الكتلة 16384؛ ومع كتل 4 كيلوبايت تكون في الكتلة 32768. ولكن للتأكد، من الأفضل التحقق من حجم الكتلة الفعلي للجهاز.

لمعرفة حجم الكتلة في نظام ملفات ext يمكننا تشغيل شيء كهذا (ويكون ذلك أفضل دائمًا مع فصل القسم):

sudo dumpe2fs /dev/sdb5 | grep "Block size"

المخرج النموذجي لـ dumpe2fs يتضمن خط تصميم "حجم الكتلة: 4096"، مما يعني أن حجم الكتلة هو 4 كيلوبايت. بناءً على هذه المعلومة، نعلم الآن أن أول نسخة محتملة من الكتلة الفائقة موجودة في الكتلة 32768.

إذا أردنا أن نعرف ليس نسخة واحدة فقط، بل جميع نسخ الكتلة الفائقةالطريقة الأكثر عملية هي "محاكاة" إنشاء نظام ملفات جديد باستخدام mke2fs باستخدام الخيار -n (مهم جداً) حتى لا يؤثر على السجل الفعلي:

sudo mke2fs -b 4096 -n /dev/sdb5 | grep -A 3 "Respaldo"

الخيار -b يحدد حجم الكتلة (على سبيل المثال 4096) والخيار -n يروي mke2fs لا ينبغي للبرنامج كتابة أي شيء على القرص، بل عرض الإعدادات التي سيستخدمها فقط. في المخرجات، سترى قسمًا مثل "تم حفظ نسخة احتياطية من الكتلة الرئيسية في كتل:" متبوعًا بقائمة طويلة من أرقام الكتل: 32768، 98304، 163840، 229376، 294912، 819200، 884736، 1605632، 2654208، 4096000، 7962624، إلخ.

الأخطاء الشائعة: "لا يمكن قراءة الكتلة الفائقة" وأخطاء التجميع

من الأعراض الشائعة للغاية التي تدل على وجود خلل في الكتلة الفائقة يواجه خطأً كهذا:

mount: /dev/sdb5: Can't read superblock

تظهر هذه الرسالة عادةً عند محاولة توصيل محرك أقراص USB خارجي.محرك أقراص USB أو حتى القسم الداخلي والذي كان يعمل دون مشاكل حتى وقت قريب. في كثير من الحالات، يعني هذا أن الكتلة الرئيسية للقرص تالفة أو أن هناك تناقضات خطيرة في البيانات الوصفية.

قد تلاحظ أيضًا أخطاءً أطول عندما يحاول النظام تحميل الجذر. أثناء بدء التشغيل، ستظهر لك واجهة BusyBox (initramfs). على سبيل المثال، رسائل تشير إلى تعذر الحصول على نقاط التحميل. /sys o /proc en /rootأو أنه لا يمكن فتحه /root/dev/consoleيحدث هذا عادةً بسبب عدم إمكانية تحميل قسم الجذر نتيجة لمشاكل في الكتلة الفائقة أو نظام الملفات.

في هذا السياق، نفّذ fsck مباشرة على القسم الإشكالي قد يُظهر البرنامج أخطاءً مثل: "fsck.ext4: محاولة قراءة كتلة نظام الملفات نتج عنها قراءة قصيرة... هل يمكن أن يكون هذا قسمًا فارغًا؟". تعني هذه الرسالة عادةً أن الكتلة الفائقة التي يحاول البرنامج استخدامها غير صحيحة. fsck تالفة أو أن طاولة المكعبات لا تتناسب.

قبل أن تبدأ بمحاولة إصلاحه بشكل أعمى، من الأفضل التأكد من أن المشكلة الأمر ليس بهذه البساطة، فهو ليس مجرد مشكلة في مصدر الطاقة (وهو أمر شائع جدًا في أجهزة Raspberry Pi التي تستخدم محركات أقراص USB بدون مصدر طاقة خاص بها). عندما يكون مصدر الطاقة غير كافٍ، قد يتعطل نظام التسجيل، ويقوم النظام بتثبيت القسم كقسم ext2 للقراءة فقط لتجنب أي مشاكل. على سبيل المثال، في جهاز Raspberry Pi، قد يظهر رمز صاعقة صفراء أو مربع ملون على الشاشة للدلالة على نقص الطاقة.

إذا بعد إعادة التجميع مع sudo mount -a يعمل النظام بشكل مؤقتقد يؤدي تغيير مزود الطاقة إلى مزود طاقة بقدرة 2,5 أمبير (في حالة Raspberry Pi) إلى حل المشكلة. مع ذلك، إذا استمرت أخطاء الكتلة الرئيسية بعد فحص مزود الطاقة وإعادة تجميع النظام، فقد حان الوقت للجوء إلى خطة الإنقاذ باستخدام نسخ احتياطية من الكتلة الرئيسية وأدوات التشخيص.

لينكس fsck

استخدام fsck و e2fsck مع كتل البيانات الفائقة البديلة

الأداة القياسية لفحص وإصلاح أنظمة ext2/ext3/ext4 es e2fsckوالتي نستدعيها عادةً من خلال fsckمن الضروري دائمًا استخدامه مع القسم غير المثبت (أو المثبت للقراءة فقط) لتجنب المزيد من الضرر؛ وتؤكد الوثائق نفسها على ذلك. هذا هو تركيبها الأساسي:

sudo fsck -b 32768 -p /dev/sdb5

مع خيار -b نشير إلى رقم الكتلة التي توجد بها النسخة. من الكتلة الفائقة التي نريد استخدامها (على سبيل المثال 32768) ومع -p طلبنا إصلاحًا تلقائيًا دون الحاجة إلى تدخل في كل تغيير (الخيار القديم). -a يتم الحفاظ عليه من أجل التوافق، ولكن يُنصح باستخدامه -p).

في الأنظمة القديمة أو إذا أردنا رؤية العملية بأكملها خطوة بخطوةيمكننا الاتصال مباشرة e2fsck مع الكتلة الفائقة البديلة:

sudo e2fsck -b 32768 /dev/hda2

يتضمن الفحص عدة مراحل. عندما e2fsck ينتهي الأمر دون أخطاء جسيمة، يمكنك حاول إعادة التجميع تقسيم القرص من القرص المضغوط المباشر أو النظام العادي:

sudo mount /dev/hda2 /mnt

في كثير من الحالات، بعد إصلاح النظام باستخدام نسخة احتياطية من الكتلة الرئيسية، يعود نظام الملفات إلى حالة مستقرة ويمكنك الوصول إلى بياناتك مرة أخرى. من الحكمة بعد ذلك إجراء نسخ احتياطي لكل شيء مهم تحسبًا لظهور مشاكل لاحقًا.

فحص الكتل المعيبة والأدوات المتقدمة

عندما تبدأ أخطاء الكتلة الفائقة بالظهور، يُنصح بالتشكيك وكذلك الحالة الصحية المادية للقرص أو الجهاز. إذا وُجدت قطاعات تالفة في المناطق التي تُخزَّن فيها الكتل الرئيسية أو البيانات الوصفية الهامة، فسيتعرض نظام الملفات للتلف بشكل متكرر. هذه الأدوات مفيدة للغاية:

com.badblocks

الأداة badblocks يُستخدم هذا الجهاز للعثور على الكتل المعيبة على جهاز (عادةً قسم أو قرص كامل). يمكنه العمل في وضع القراءة فقط أو وضع الكتابة المدمرة، ويدعم خيارات مختلفة:

  • -b: حجم الكتلة بالبايت (الافتراضي 1024).
  • -e: الحد الأقصى لعدد الكتل المعيبة "المحتملة" قبل الإجهاض.
  • -i <fichero>: اقرأ قائمة بالكتل المعيبة المعروفة حتى لا تحاول استخدامها مرة أخرى.
  • -n: اختبار غير مدمر (للقراءة فقط، لا يُدمج مع -w).
  • -o <archivo>: اكتب قائمة الكتل المعيبة في ملف.
  • -s: إظهار نسبة التقدم.
  • -w: وضع الكتابة التدميرية (يستبدل البيانات).

لدمج هذه النتائج مع نظام ملفات ext وهو شائع الاستخدام e2fsck -c، والتي تستدعي داخلياً badblocks ويضيف الكتل المعيبة المكتشفة إلى قائمة "الكتل السيئة" الخاصة بالنظام، بحيث لا يتم استخدامها مرة أخرى للملفات الجديدة.

تفريغ

أداة قوية أخرى هي dumpe2fsوالذي يعرض تقريراً كاملاً من نظام ملفات ext: حجم الكتلة، وUUID، وحجم العقدة، وأوقات التحميل، والعلامات، وقائمة الكتلة الفائقة الاحتياطية، والكتل المصنفة على أنها تالفة، وما إلى ذلك. أهم خياراته هي:

  • -b: قم بإدراج القطع التي تم وضع علامة عليها بأنها معيبة فقط.
  • -o superblock=<sb>: استخدم كتلة فائقة محددة لفحص الجهاز.
  • -o blocksize=<bs>: فرض حجم كتلة محدد (مفيد في الأنظمة المتضررة بشدة).
  • -h: عرض معلومات الكتلة الفائقة فقط.

com.tune2fs

إذا كنت ترغب في ضبط معايير التشغيل فيما يتعلق بنظام ملفات ext (فترات الفحص، ونسبة الكتل المحجوزة للجذر، وإضافة التسجيل إلى ext2، وما إلى ذلك)، فإن الأداة الرئيسية هي tune2fs:

  • -c: الحد الأقصى لعدد التجميعات دون المرور fsck.
  • -C: تحديد عدد التجميعات الحالية.
  • -i <tiempo>: الحد الأقصى للفاصل الزمني بين عمليات الفحص (d، w، m).
  • -j: إضافة خاصية التسجيل إلى نظام الملفات ext2 (يحوله إلى ext3/ext4).
  • -m: نسبة الكتل المحجوزة للمستخدم الجذر (الافتراضي 5%).
  • -r: حجز عدد مطلق من الكتل.
  • -f: فرض التنفيذ حتى في حالة وجود بعض الأخطاء.
  • -g: حجز كتل لمجموعة UNIX محددة.

تصحيح الأخطاء

أما بالنسبة للعمليات الجراحية والجراحية الأقل تكلفة، فهناك debugfsمصحح أخطاء تفاعلي لأنظمة ملفات ext، يتيح لك فحص وتعديل البنى الداخلية. تتضمن بعض إمكانياته ما يلي:

  • -w: افتح نظام الملفات في وضع القراءة/الكتابة.
  • -c: فرض الفتح في وضع القراءة فقط (مفيد في حالة وجود تناقض).
  • -f <archivo>: تنفيذ قائمة من الأوامر والخروج.

دات مره بداخل debugfsلديك أوامر مثل show_super_stats / stats لعرض الكتل الضخمة، stat لعرض رقم تعريف الملف (inode)، lsdel لعرض قائمة بالعقد المحذوفة، undel لمحاولة استعادة ملف محذوف بمعرفة رقم تعريف الملف (inode)، write لاستخراج الملفات إلى نظام ملفات آخر، بالإضافة إلى ما يعادلها من cd, rm, ln, mkdirإلخ. إنها سكين متعددة الاستخدامات، ولكن يجب استخدامها بحذر شديد.

إنشاء كتل فائقة وإصلاحها على أنظمة الملفات الأخرى (XFS، أدوات متنوعة)

على الرغم من أننا ركزنا هنا على أنظمة الملفات ext2/3/4، إلا أن هناك أنظمة ملفات أخرى كما أن لديهم هياكل "الكتلة الفائقة" الخاصة بهم وأدوات محددة لإدارتها، كما هو الحال مع نظام الملفات XFS.

في نظام الملفات XFS، أهم الأدوات المساعدة لمعالجة مشاكل سلامة البيانات وهناك أنواع عديدة من البيانات الوصفية. على سبيل المثال، xfs_info يعرض معلومات تقنية حول نظام ملفات XFS المُثبَّت (على عكس الأدوات الأخرى، يجب تثبيته هنا).

لتنظيف البيانات الوصفية، هناك xfs_metadump، مما يؤدي إلى إنشاء ملف تفريغ يتم حفظ بيانات تعريف نظام الملفات في ملف لتحليلها لاحقًا. من المهم التأكيد على أن هذه ليست أداة نسخ احتياطي للبيانات، بل أداة لتصحيح الأخطاء.

  • -g: إظهار تقدم عملية التخلص من النفايات.
  • -eتجاهل أخطاء القراءة وانسخ فقط ما يمكن الوصول إليه.
  • -f: يشير إلى أن نظام الملفات موجود في ملف عادي.
  • -w: عرض الأخطاء التي تم العثور عليها على الشاشة.

لتعديل معلمات تكوين نظام ملفات XFS موجود تستخدم xfs_adminشيءٌ يُشبه ما يُعادل "المستوى الأدنى" إلى tune2fs لكن بالنسبة لنظام الملفات XFS:

  • -j: تفعيل إصدار التدوين 2.
  • -l y -u: عرض تسمية نظام الملفات ومعرف النظام الفريد (UUID).
  • -L <Etiqueta> y -U <UUID>: تغيير التسمية و UUID.

يجب عليك دائمًا فصل نظام ملفات XFS قبل تطبيق التغييرات مع xfs_admin أو إجراء فحوصات تخريبية لمنع حدوث أضرار.

للتحقق من اتساق نظام الملفات XFS، يمكنك استخدام xfs_check، والذي يفحص مدى اتساق نظام الملفات، و xfs_repair لإصلاحه. يتطلب كلا الخيارين فصل نظام الملفات، باستثناء الخيار الخاص بـ xfs_repair -d مما يسمح بإصلاح نظام مثبت في وضع القراءة فقط (مثل الجذر) ويتطلب إعادة تشغيل النظام بعد ذلك:

  • xfs_check -f <archivo.img>: تعامل مع الصورة كملف عادي.
  • xfs_check -l <log-file>: سجل خارجي.
  • xfs_check -s: عرض الأخطاء الجسيمة فقط.
  • xfs_repair -nإنه لا يصلح المشكلة، بل يشير فقط إلى الخطأ.
  • xfs_repair -P: تعطيل القراءة المسبقة لملفات inode/المجلدات.
  • xfs_repair -m <maxmem>: الحد من استخدام ذاكرة الوصول العشوائي (RAM).
  • xfs_repair -d: السماح بالإصلاح للقراءة فقط (حالة خاصة).

أدوات أخرى مثل xfs_ncheck قم بإدراج العقد وتحديدها مسارات الملفات، أو xfs_check يحدد هذا ما إذا كان النظام متسقًا. وتُعدّ هذه المجموعة الكاملة من الأدوات مفيدة للغاية عندما لا تكون المشكلة في نظام ملفات ext4، بل في نظام ملفات XFS الذي تضرر بسبب انقطاع التيار الكهربائي أو عطل في الأجهزة.

بشكل عام، فهم ماهية الكتلة الفائقة ومكان تخزين نسخها أمر ضروري. وكيفية استخدام أدوات مثل fsck, e2fsck, dumpe2fs, badblocks, debugfs أو أن أدوات XFS تضعك في وضع أفضل بكثير لتجنب الذعر عند ظهور أخطاء "الكتلة الفائقة السيئة" في نظام Linux، ولاتخاذ قرارات معقولة بين محاولة استعادة البيانات، أو الإصلاح الآمن، أو ببساطة إعادة بناء القسم من الصفر عندما لا يتبقى شيء لحفظه.

كيفية استعادة أداة تحميل تشغيل Windows بعد تثبيت Linux أو إزالته
المادة ذات الصلة:
كيفية استعادة أداة تحميل تشغيل Windows بعد تثبيت Linux أو إزالته