اوبنٹو پر mdadm Array میں ناکام ڈرائیو کی جگہ لینا
شائع شدہ: 15 فروری، 2025 کو 10:02:41 PM UTC
آخری بار اپ ڈیٹ کیا گیا: 12 جنوری، 2026 کو 8:50:07 AM UTC
اگر آپ mdadm RAID سرنی میں ڈرائیو فیل ہونے کی خوفناک صورتحال میں ہیں، تو یہ مضمون بتاتا ہے کہ اسے Ubuntu سسٹم پر صحیح طریقے سے کیسے تبدیل کیا جائے۔
Replacing a Failed Drive in an mdadm Array on Ubuntu
اس پوسٹ میں معلومات Ubuntu 18.04 پر مبنی ہے اور mdadm کا ورژن اس کے ذخیروں میں شامل ہے۔ v4.1-rc1 لکھنے کے وقت۔ یہ دوسرے ورژن کے لیے درست ہو سکتا ہے یا نہیں۔
مجھے حال ہی میں اپنے ہوم فائل سرور میں اچانک ڈرائیو کی ناکامی ہوئی تھی، جو mdadm RAID-6 سرنی میں نو ڈرائیوز پر مشتمل ہے۔ یہ ہمیشہ ہی خوفناک ہوتا ہے، لیکن میں خوش قسمتی سے ایک متبادل ڈرائیو کو تیزی سے حاصل کرنے میں کامیاب ہو گیا جو اگلے دن پہلے ہی پہنچا دی گئی تھی تاکہ میں دوبارہ تعمیر شروع کر سکوں۔
جب میں نے اصل میں فائل سرور کو سیٹ اپ کیا تو میں اعتراف سے تھوڑا بہت سستا تھا۔ ڈرائیوز میں سے صرف دو اصل NAS ڈرائیوز (سیگیٹ آئرن وولف) ہیں، جبکہ باقی ڈیسک ٹاپ ڈرائیوز (سیگیٹ باراکوڈا) ہیں۔ حیرت کی بات نہیں، یہ ڈیسک ٹاپ ڈرائیوز میں سے ایک تھی جس نے ترک کر دیا تھا (حالانکہ تقریباً تین سال کی سروس کے بعد)۔ یہ مکمل طور پر مر چکا تھا۔ اسے ڈیسک ٹاپ یو ایس بی انکلوژر میں منتقل کرنے کے بعد جو کچھ میں اس سے باہر نکلا وہ ایک بے چین آواز تھی اور نہ ہی اوبنٹو 20.04 اور نہ ہی ونڈوز 10 اس کا پتہ لگا سکے۔
اوہ ٹھیک ہے، بدلنے والے حصے کی طرف (اور ہاں، میں نے جو نئی ڈرائیو خریدی تھی وہ آئرن وولف تھی، سبق سیکھا گیا) - جتنا ڈراؤنا یہ چلتی صف میں ڈرائیو کھو رہا ہے، یہ اور بھی خوفناک ہے اگر آپ اسے تبدیل کرنے کا صحیح طریقہ کار نہیں جانتے ہیں۔ یہ پہلی بار نہیں ہے کہ مجھے ایم ڈی ڈی ایم سرنی میں ناکام ڈرائیو کو تبدیل کرنا پڑا ہے، لیکن خوش قسمتی سے یہ اتنا نایاب ہے کہ مجھے عام طور پر مناسب کمانڈز تلاش کرنے پڑتے ہیں۔ اس بار میں نے مستقبل کے حوالے کے لیے اپنا چھوٹا گائیڈ تیار کرنے کا فیصلہ کیا۔
لہذا، سب سے پہلے، جب آپ کو mdadm سے خوفناک فیل ایونٹ کا ای میل ملتا ہے، تو آپ کو یہ شناخت کرنے کی ضرورت ہوتی ہے کہ کون سی ڈرائیو ناکام ہوئی ہے۔ یقینی طور پر، یہ آپ کو ڈیوائس کا نام بتائے گا (میرے معاملے میں /dev/sdf)، لیکن یہ شاید واضح نہیں ہے کہ اصل میں کون سی فزیکل ڈرائیو ہے کیونکہ مشین کے بوٹ ہونے پر وہ نام بدل سکتے ہیں۔
اگر آپ کو یہ بھی یقین نہیں ہے کہ کون سا ڈیوائس کا نام ناکام ہو گیا ہے، تو آپ یہ معلوم کرنے کے لیے درج ذیل کمانڈ کا استعمال کر سکتے ہیں (/dev/md0 کو اپنے RAID ڈیوائس سے تبدیل کریں):
جیسا کہ ذکر کیا گیا ہے، میرے معاملے میں یہ تھا /dev/sdf، تو آئیے اس کے ساتھ جاری رکھیں۔
پھر، آپ اس کمانڈ کو جاری کرکے ناکام ڈرائیو کا سیریل نمبر تلاش کرنے کی کوشش کر سکتے ہیں:
(اگر smartctl نہیں ملتا ہے، تو آپ کو Ubuntu پر smartmontools پیکیج انسٹال کرنا ہوگا)
اس کے بعد سیریل نمبر کا موازنہ ڈرائیوز کے فزیکل لیبل پر موجود سیریل نمبروں سے کیا جا سکتا ہے تاکہ یہ معلوم کیا جا سکے کہ کون سا ناکام ہوا ہے۔
اس بار، میں اتنا خوش قسمت نہیں تھا، اگرچہ. ڈرائیو مکمل طور پر مردہ تھی اور یہاں تک کہ اس نے سمارٹ یا سیریل نمبر سمیت دیگر ڈیٹا فراہم کرنے سے انکار کر دیا۔
چونکہ مجھے سرور تک جسمانی رسائی حاصل تھی (جس کی آپ کو واقعی ضرورت ہے اگر آپ خود فزیکل ڈرائیو کو تبدیل کرنے جارہے ہیں، میرا خیال ہے کہ ؛-)) اور سرور دراصل اس وقت چل رہا تھا جب ڈسک فیل ہوگئی (اور RAID-6 فالتو پن کی بدولت ٹھیک چلتی رہی)، میں واقعی قدیم، لیکن حقیقت میں انتہائی موثر اور واضح طریقہ کے ساتھ چلا گیا، جس سے ایچ ڈی لائٹ کو دیکھنے کے لیے بڑی فائل کو کاپی کرنے کا طریقہ کار آتا ہے۔ چند لمحوں میں میں نے مجرم کو پہچان لیا تھا۔
اب، فزیکل ڈرائیو کو ختم کرنے سے پہلے، یہ کمانڈ جاری کرکے، mdadm کو باضابطہ طور پر اس ارادے سے آگاہ کرنا اچھا خیال ہے (آلہ کے ناموں کو اپنی مرضی کے مطابق تبدیل کریں):
کامیابی پر، mdadm ایک پیغام کے ساتھ جواب دے گا کہ اس نے ڈرائیو کو "ہاٹ ہٹا دیا"، بظاہر اس وجہ سے کہ اس وقت ورچوئل ریڈ ڈیوائس چل رہی ہے۔
اگر یہ "ڈیوائس یا ریسورس مصروف" کی طرح کے ایرر میسج کے ساتھ ناکام ہوجاتا ہے تو یہ ہوسکتا ہے کہ mdadm نے حقیقت میں ڈرائیو کو مکمل طور پر ناکام ہونے کے لیے رجسٹر نہیں کیا ہو۔ ایسا کرنے کے لیے، یہ کمانڈ جاری کریں (دوبارہ، یاد رکھیں کہ آلہ کے ناموں کو اپنے نام سے بدلنا مناسب ہو):
اس کے بعد، آپ کو پچھلی کمانڈ کے ساتھ آلے کو صف سے ہٹانے کے قابل ہونا چاہیے۔
اب وقت آگیا ہے کہ اصل میں ڈرائیو کو تبدیل کیا جائے۔ اگر آپ واقعی، واقعی - جیسے، واقعی - یقین رکھتے ہیں کہ آپ کی مشین اور کنٹرولر ہاٹ سویپنگ کو سپورٹ کرتا ہے، تو آپ مشین کو بند کیے بغیر ایسا کرسکتے ہیں۔ یہ حقیقی، مناسب سرور ہارڈویئر پر چلنے والے اہم پروڈکشن سسٹم پر جانے کا طریقہ ہوگا جسے آپ جانتے ہیں کہ حقیقت یہ ہے کہ وہ اسے سنبھال سکتا ہے۔ میرا ہوم فائل سرور صارفین کے گریڈ ڈیسک ٹاپ مدر بورڈ پر مبنی ہے جس میں PCIe سلاٹس میں سیمی نام کے SATA کنٹرولرز کے ایک جوڑے کے ساتھ مزید SATA پورٹس فراہم کرنے کے لیے ہیں۔
اگرچہ SATA کو عام طور پر ہاٹ سویپنگ کی حمایت کرنی چاہیے، لیکن میں اس سیٹ اپ میں کسی بھی چیز کا خطرہ مول لینے والا نہیں تھا، اس لیے میں نے ڈرائیو کو تبدیل کرتے ہوئے مشین کو بند کرنے کا انتخاب کیا۔
ایسا کرنے سے پہلے، یہ اچھا خیال ہے کہ /etc/fstab فائل میں چھاپے کے آلے پر تبصرہ کریں تاکہ Ubuntu اسے اگلے بوٹ پر خود بخود ماؤنٹ کرنے کی کوشش نہ کرے، کیونکہ یہ آپ کو ریکوری موڈ میں لٹکا سکتا ہے اور انحطاط پذیر RAID سرنی کی وجہ سے مجبور کر سکتا ہے۔ اگر یہ ڈیسک ٹاپ سسٹم ہے تو یہ کوئی بڑا مسئلہ نہیں ہوسکتا ہے، لیکن میں اس سرور کو بغیر مانیٹر یا کی بورڈ منسلک کیے بغیر چلاتا ہوں، اس لیے یہ قدرے پریشانی کا باعث ہوگا۔
چمکدار نئی ڈرائیو کے ساتھ مشین کو بوٹ کرنے کے بعد، اس کی شناخت کے لیے lsblk یا کوئی اور ذریعہ استعمال کریں۔ اگر آپ نے کوئی اور چیز تبدیل نہیں کی ہے تو، یہ شاید (لیکن ضروری نہیں کہ) وہی نام حاصل کرے گا جو آپ نے تبدیل کیا ہے۔ میرے معاملے میں ایسا ہوا، لہذا نئے کو /dev/sdf بھی کہا جاتا ہے۔
چونکہ میری صف فزیکل ڈیوائسز کے بجائے پارٹیشنز پر مبنی ہے، مجھے پارٹیشن ٹیبل کو ورکنگ ڈرائیو سے نئی ڈرائیو میں کاپی کرنے کی ضرورت تھی تاکہ یہ یقینی بنایا جا سکے کہ وہ بالکل ایک جیسے ہیں۔ اگر آپ اس کے بجائے اپنی صف کو فزیکل ڈیوائسز پر چلاتے ہیں، تو آپ اس قدم کو چھوڑ سکتے ہیں۔
میں نے اس مقصد کے لیے sgdisk کا استعمال کیا، پارٹیشن ٹیبل کو /dev/sdc سے /dev/sdf میں کاپی کیا۔ اس بات کو یقینی بنائیں کہ آلہ کے ناموں کو آپ کے اپنے ناموں سے مناسب طور پر تبدیل کریں۔
یہاں آرڈر پر غور کریں: آپ پہلے "to" ڈرائیو کی فہرست بنائیں! یہ میرے لیے قدرے متضاد ہے، لیکن صرف اس بات کو یقینی بنائیں کہ آپ اسے درست کر رہے ہیں تاکہ آپ کو صف میں ایک اور ڈرائیو کی ناکامی نہ ملے ؛-)
پھر UUID تنازعات سے بچنے کے لیے، نئی ڈرائیو کے لیے نئے UUIDs بنائیں:
اور اب آخر کار نئی ڈرائیو کو صف میں شامل کرنے اور دوبارہ تعمیراتی پارٹی شروع کرنے کا وقت آگیا ہے! (ٹھیک ہے، یہ واقعی کوئی پارٹی نہیں ہے، یہ دراصل ایک کافی سست اور بے چین کرنے والا عمل ہے جیسا کہ آپ واقعی، واقعی نہیں چاہتے کہ اس وقت ایک اور ڈرائیو ناکام ہو۔ اگرچہ بیئر مدد کر سکتی ہے)
بہر حال، نئی ڈرائیو کو صف میں شامل کرنے کے لیے، یہ کمانڈ جاری کریں (دوبارہ، اس بات کو یقینی بنائیں کہ آلہ کے ناموں کو اپنی مرضی کے مطابق تبدیل کریں):
اگر سب کچھ ٹھیک رہا تو، ڈرائیو کو بغیر کسی ہچکی کے صف میں شامل کر دیا جائے گا۔ مجھے یقین ہے کہ یہ اصل میں بطور ڈیفالٹ "ہاٹ اسپیئر" کے طور پر شامل کیا گیا ہے، لیکن چونکہ اس صف میں ایک ڈسک غائب ہے (جو ناکام ہو گئی ہے)، اسے فوری طور پر استعمال میں لایا جاتا ہے اور دوبارہ تعمیر کا عمل شروع ہو جائے گا۔
آپ اس پر اس طرح نظر رکھ سکتے ہیں:
اس میں شاید کچھ وقت لگے گا۔ میرے پست سرور پر (زیادہ تر صارفین کے گریڈ ہارڈویئر اور ڈیسک ٹاپ ڈرائیوز پر مبنی، آپ کو یاد رکھیں) یہ صرف 100 MB/sec سے کم تک پہنچنے کے قابل تھا۔ ذہن میں رکھیں کہ یہ RAID-6 ہے، اس لیے دوبارہ تعمیر کے ساتھ بہت سارے برابری کے حسابات شامل ہیں۔ RAID-10 بہت تیز ہوتا۔ اس مخصوص مشین میں AMD A10 9700E کواڈ کور CPU ہے ("E" کا مطلب یہ ہے کہ یہ ایک انڈر کلاکڈ انرجی ایفیشینٹ ماڈل ہے، یعنی انتہائی تیز نہیں)، صرف آپ کو یہ بتانے کے لیے کہ کیا توقع کی جائے۔ میرے سیٹ اپ میں نو 8 ٹی بی ڈرائیوز کے ساتھ، مکمل تعمیر نو میں صرف 24 گھنٹے لگے۔
دوبارہ تعمیر کے دوران، آپ فائل سسٹم کو صف پر ماؤنٹ کر سکتے ہیں اور اگر آپ چاہیں تو اسے معمول کی طرح استعمال کر سکتے ہیں، لیکن میں اسے دوبارہ تعمیر کرنے تک چھوڑنے کو ترجیح دیتا ہوں جب تک کہ یہ مکمل نہ ہو جائے۔ ذہن میں رکھو کہ اگر ایک ڈرائیو ناکام ہو جاتی ہے، تو دوسری جلد ہی اس کی پیروی کر سکتی ہے، لہذا آپ چاہتے ہیں کہ دوبارہ تعمیر جلد سے جلد ہو کیونکہ آپ واقعی نہیں چاہتے ہیں کہ اس دوران دوسری ڈرائیو ناکام ہو۔ لہذا، اسے دوسرے IO کے ساتھ بوجھ نہ ڈالیں جو سختی سے ضروری نہیں ہے۔
ایک بار یہ ہو جانے کے بعد، اسے اپنی /etc/fstab فائل میں شامل کریں، ریبوٹ کریں اور اپنی فائلوں سے لطف اندوز ہوں :-)
