Miklix

استبدال محرك أقراص معطل في مجموعة mdadm على Ubuntu

نُشرت: ١٥ فبراير ٢٠٢٥ م في ١٠:٠١:١٠ م UTC

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


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

Replacing a Failed Drive in an mdadm Array on Ubuntu

تعتمد المعلومات الواردة في هذه المقالة على Ubuntu 18.04 وإصدار mdadm المضمن في مستودعاته؛ في وقت كتابة هذا المقال، الإصدار v4.1-rc1. وقد تكون هذه المعلومات صالحة لإصدارات أخرى أو لا تكون كذلك.

لقد تعرضت مؤخرًا لفشل مفاجئ في محرك الأقراص في خادم الملفات المنزلي الخاص بي، والذي يتكون من تسعة محركات أقراص في مجموعة mdadm RAID-6. هذا أمر مخيف دائمًا، ولكن لحسن الحظ تمكنت بسرعة من الحصول على محرك أقراص بديل تم تسليمه بالفعل في اليوم التالي حتى أتمكن من بدء عملية إعادة البناء.

لقد كنت بخيلاً بعض الشيء عندما قمت بإعداد خادم الملفات في البداية؛ فقط اثنان من محركات الأقراص هي محركات NAS فعلية (Seagate IronWolf)، في حين أن الباقي محركات سطح مكتب (Seagate Barracuda). ومن غير المستغرب أن يكون أحد محركات سطح المكتب قد توقف عن العمل (بعد ما يقرب من ثلاث سنوات من الخدمة، رغم ذلك). لقد كان معطلاً تمامًا؛ بعد نقله إلى حاوية USB لسطح المكتب، كل ما سمعته منه كان صوت نقرة مزعج ولم يتمكن نظام التشغيل Ubuntu 20.04 أو Windows 10 من اكتشافه.

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

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

إذا لم تكن متأكدًا من اسم الجهاز الذي فشل، فيمكنك استخدام الأمر التالي لمعرفة ذلك (استبدل /dev/md0 بجهاز RAID الخاص بك):

mdadm -–query -–detail /dev/md0

كما ذكرت، في حالتي كان /dev/sdf، لذا دعنا نستمر بذلك.

بعد ذلك، يمكنك محاولة العثور على الرقم التسلسلي لمحرك الأقراص الفاشل عن طريق إصدار هذا الأمر:

smartctl -–all /dev/sdf | grep -i 'Serial'

(إذا لم يتم العثور على smartctl، فأنت بحاجة إلى تثبيت حزمة smartmontools على Ubuntu)

ومن الممكن بعد ذلك مقارنة الرقم التسلسلي بالأرقام التسلسلية الموجودة على الملصق المادي على محركات الأقراص لمعرفة أي منها قد فشل.

ولكن هذه المرة لم أكن محظوظًا. فقد كان محرك الأقراص معطلاً تمامًا ورفض حتى توفير بيانات SMART أو غيرها من البيانات، بما في ذلك الرقم التسلسلي.

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

الآن، قبل إزالة محرك الأقراص الفعلي، من الجيد إبلاغ mdadm رسميًا بهذه النية، عن طريق إصدار هذا الأمر (استبدل أسماء الأجهزة بأسماء خاصة بك حسب الاقتضاء):

mdadm -–manage /dev/md0 -–remove /dev/sdf1

في حالة النجاح، سوف يرد برنامج mdadm برسالة تقول أنه قام بإزالة محرك الأقراص بشكل فوري، على ما يبدو لأن جهاز RAID الافتراضي يعمل بالفعل في ذلك الوقت.

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

mdadm --manage /dev/md0 --fail /dev/sdf

بعد ذلك، يجب أن تكون قادرًا على إزالة الجهاز من المصفوفة باستخدام الأمر السابق.

الآن حان الوقت لاستبدال محرك الأقراص فعليًا. إذا كنت متأكدًا حقًا من أن جهازك ووحدة التحكم الخاصة بك تدعم التبديل السريع، فيمكنك القيام بذلك دون إيقاف تشغيل الجهاز. ستكون هذه هي الطريقة المناسبة لأنظمة الإنتاج المهمة التي تعمل على أجهزة خادم حقيقية ومناسبة تعرف أنها قادرة على التعامل معها. ومع ذلك، يعتمد خادم الملفات المنزلي الخاص بي على لوحة أم سطح مكتب مخصصة للمستهلك مع زوج من وحدات تحكم SATA شبه مجهولة الاسم في فتحات PCIe لتوفير المزيد من منافذ SATA.

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

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

بعد تشغيل الجهاز مع تثبيت محرك الأقراص الجديد اللامع، استخدم lsblk أو أي وسيلة أخرى لتحديده. إذا لم تقم بتغيير أي شيء آخر، فمن المحتمل (ولكن ليس بالضرورة ) أن يحصل على نفس اسم محرك الأقراص الذي استبدلته. في حالتي، حدث هذا، لذا فإن المحرك الجديد يسمى أيضًا /dev/sdf.

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

لقد استخدمت sgdisk لهذا الغرض، حيث قمت بنسخ جدول الأقسام من /dev/sdc إلى /dev/sdf. تأكد من استبدال أسماء الأجهزة لتتوافق مع اسمك الخاص حسب الاقتضاء.

لاحظ الترتيب هنا: لقد قمت بإدراج محرك الأقراص "to" أولاً! هذا يبدو لي غير بديهي بعض الشيء، ولكن تأكد من أنك قمت بذلك بشكل صحيح حتى لا تتعرض لفشل آخر في محرك الأقراص في المصفوفة ;-)

sgdisk -R /dev/sdf /dev/sdc

ثم لتجنب تعارضات UUID، قم بإنشاء UUIDs جديدة للمحرك الجديد:

sgdisk -G /dev/sdf

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

على أية حال، لإضافة محرك الأقراص الجديد إلى المصفوفة، أصدر هذا الأمر (مرة أخرى، تأكد من استبدال أسماء الأجهزة بأسماء خاصة بك حسب الاقتضاء):

mdadm -–manage /dev/md0 -–add /dev/sdf1

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

يمكنك مراقبته على هذا النحو:

watch cat /proc/mdstat

من المحتمل أن يستغرق هذا بعض الوقت؛ ففي الخادم المتواضع الخاص بي (الذي يعتمد إلى حد كبير على الأجهزة الاستهلاكية ومحركات سطح المكتب، ضع ذلك في اعتبارك) كان قادرًا على الوصول إلى أقل من 100 ميجابايت/ثانية. ضع في اعتبارك أن هذا هو RAID-6، لذا فهناك الكثير من حسابات التكافؤ المتضمنة في إعادة البناء؛ كان RAID-10 ليكون أسرع بكثير. يحتوي هذا الجهاز على وحدة معالجة مركزية رباعية النواة AMD A10 9700E (يعني "E" أنه طراز موفر للطاقة منخفض السرعة، أي ليس سريعًا للغاية)، فقط لإعطائك فكرة عما يمكن توقعه. مع وجود تسعة محركات أقراص سعة 8 تيرابايت في إعدادي، استغرقت عملية إعادة البناء الكاملة ما يزيد قليلاً عن 24 ساعة.

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

بمجرد الانتهاء من ذلك، أضفه مرة أخرى إلى ملف /etc/fstab، وأعد التشغيل واستمتع بملفاتك :-)

شارك على بلوسكايشارك على الفيسبوكشارك على لينكدإنشارك على تمبلرشارك على إكسشارك على لينكدإنثبت على بينتريست

ميكيل بانج كريستنسن

عن المؤلف

ميكيل بانج كريستنسن
ميكيل هو مؤسس ومالك موقع miklix.com. يتمتع بخبرة تزيد عن 20 عامًا كمبرمج كمبيوتر/مطور برامج محترف ويعمل حاليًا بدوام كامل في إحدى شركات تكنولوجيا المعلومات الأوروبية الكبرى. عندما لا يقوم بالتدوين، يقضي وقت فراغه في مجموعة واسعة من الاهتمامات والهوايات والأنشطة، والتي قد تنعكس إلى حد ما في تنوع الموضوعات التي يغطيها هذا الموقع.