m دادm raid5 ডাবল ডিস্ক ব্যর্থতা পুনরুদ্ধার - একটি বাঁক সহ (ড্রাইভ আদেশ)


14

আমাকে প্রথমে স্বীকার করতে দাও যে আমি ভুল করেছি এবং এই RAID- র সমস্ত ডেটা নয় তবে বেশিরভাগের জন্য আমার একটি ব্যাকআপ রয়েছে । আমি এখনও বাকি তথ্য পুনরুদ্ধার আশা করি। ড্রাইভগুলি পুনরুদ্ধার বিশেষজ্ঞ সংস্থায় নিয়ে যাওয়ার মতো ধরণের অর্থ আমার কাছে নেই।

ভুল # 0, একটি 100% ব্যাকআপ নেই। আমি জানি.

আমার কাছে mdadm4x3TB এর একটি RAID5 সিস্টেম রয়েছে। ড্রাইভ / ডেভ / এসডি [হতে], সমস্তই একটি পার্টিশন সহ /dev/sd[b-e]1। আমি সচেতন যে খুব বড় ড্রাইভের RAID5 ঝুঁকিপূর্ণ, তবুও আমি এটি যাইহোক করেছি।

সম্প্রতিক ঘটনাবলী

দুটি ড্রাইভ ব্যর্থতার পরে RAID অবনমিত হয়। একটি ড্রাইভ [/ dev / sdc] সত্যিই চলে গেছে, অন্য [/ dev / sde] একটি পাওয়ার চক্র পরে ফিরে এসেছিল, তবে স্বয়ংক্রিয়ভাবে RAID- এ পুনরায় যুক্ত হয়নি। সুতরাং আমি কেবলমাত্র 2 টি সক্রিয় ড্রাইভ [/ dev / sdb এবং / dev / sdd] সহ একটি 4 ডিভাইস RAID রেখে এসেছি।

ভুল # 1, RAID পুনরুদ্ধার করার জন্য ড্রাইভের ডিডি কপি ব্যবহার না করা। আমার ড্রাইভ বা সময় ছিল না। ভুল # 2, সুপারব্লক এবং mdadm -Eঅবশিষ্ট ড্রাইভগুলির ব্যাকআপ না করে।

পুনরুদ্ধারের প্রচেষ্টা

আমি ডিএইডিটিকে ডিগ্রিড মোডে পুনরায় জমা দিয়েছিলাম

mdadm --assemble --force /dev/md0, using /dev/sd[bde]1.

আমি তখন আমার ডেটা অ্যাক্সেস করতে পারি। আমি /dev/sdcঅতিরিক্ত দিয়ে প্রতিস্থাপন করেছি ; খালি; অভিন্ন ড্রাইভ

আমি /dev/sdc1পুরানোটিকে RAID থেকে সরিয়েছি

mdadm --fail /dev/md0 /dev/sdc1

ভুল # 3 করুন, ড্রাইভ প্রতিস্থাপনের আগে এটি করছেন না

আমি তখন নতুনটি পার্টিশন করে /dev/sdcএটিকে RAID এ যুক্ত করেছি।

mdadm --add /dev/md0 /dev/sdc1

এটি তখন RAID পুনরুদ্ধার করতে শুরু করে। ইটিএ 300 মিনিট। আমি প্রক্রিয়াটি /proc/mdstat2% এর মাধ্যমে অনুসরণ করেছি এবং তারপরে অন্যান্য স্টাফগুলি করতে গিয়েছিলাম।

ফলাফল চেক করা হচ্ছে

বেশ কয়েক ঘন্টা (তবে 300 মিনিটের কম) পরে, আমি প্রক্রিয়াটি পরীক্ষা করে দেখলাম। এটি একটি পঠন ত্রুটির কারণে বন্ধ হয়ে গিয়েছিল /dev/sde1

এখানেই সমস্যাটি শুরু হয়

আমি তখন /dev/sde1RAID থেকে সরিয়ে এটিকে আবার যুক্ত করেছি। আমি কেন এটি করেছি তা মনে করতে পারি না; এটা দেরি হয়ে গেছে.

mdadm --manage /dev/md0 --remove /dev/sde1
mdadm --manage /dev/md0 --add /dev/sde1

তবে, /dev/sde1এখন অতিরিক্ত হিসাবে চিহ্নিত করা হয়েছিল। সুতরাং আমি সিদ্ধান্ত নিয়েছিলাম - অ্য্যাসিউম-ক্লিন যা আমি সঠিক ক্রম বলে মনে করেছি তা ব্যবহার করে এবং /dev/sdc1নিখোঁজ হয়ে পুরো অ্যারেটি পুনরায় তৈরি করবো ।

mdadm --create /dev/md0 --assume-clean -l5 -n4 /dev/sdb1 missing /dev/sdd1 /dev/sde1

এটি কাজ করেছে, তবে মাউন্ট করার চেষ্টা করার সময় ফাইল সিস্টেমটি সনাক্ত করা যায়নি। (এটি EXT4 হওয়া উচিত ছিল)।

ডিভাইস অর্ডার

আমি তখন আমার কাছে থাকা একটি সাম্প্রতিক ব্যাকআপ চেক করেছিলাম /proc/mdstatএবং আমি ড্রাইভের অর্ডার পেয়েছি।

md0 : active raid5 sdb1[0] sde1[4] sdd1[2] sdc1[1]
      8790402048 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]

আমি তখন মনে করি এই র‌্যাড প্রায় এক বছর আগে ড্রাইভ ক্ষতিতে ভুগছিল এবং ত্রুটিযুক্ত ড্রাইভের অতিরিক্ত ছাড়িয়ে প্রতিস্থাপন করে এটি থেকে সেরে উঠলাম। এটি হয়ত ডিভাইসটির অর্ডারটিকে কিছুটা ঝাঁকুনিতে ফেলেছে ... সুতরাং কোনও ড্রাইভ নেই [3] তবে কেবল [0], [1], [2] এবং [4]।

আমি পারমুটে_আরলি স্ক্রিপ্ট: ড্রাইভ অর্ডারটি সন্ধান করার চেষ্টা করেছি: https :// भय.wiki.kernel.org/index.php/Permute_array.pl কিন্তু এটি সঠিক ক্রমটি খুঁজে পেল না।

প্রশ্নাবলি

আমার এখন দুটি প্রধান প্রশ্ন আছে:

  1. আমি ড্রাইভগুলিতে সমস্ত সুপারব্লকগুলি আঁকিয়েছি, তবে কেবল দিয়েছেন:

    mdadm --create --assume-clean
    

    কমান্ড (সুতরাং আমার নিজের উপর ডেটা ওভাররাইট করা উচিত ছিল না /dev/sd[bde]1I আমি কি ঠিক বলছি যে তাত্ত্বিকভাবে RAID পুনরুদ্ধার করা যেতে পারে [এক মুহুর্তের জন্য /dev/sde1যা ঠিক আছে তা ধরে নিচ্ছি]] আমি যদি সঠিক ডিভাইসের ক্রমটি পাই তবে?

  2. /dev/sde1RAID- এ ডিভাইস নম্বর [4] দেওয়া কি গুরুত্বপূর্ণ ? যখন আমি এটি দিয়ে তৈরি করি

    mdadm --create /dev/md0 --assume-clean -l5 -n4 \
      /dev/sdb1 missing /dev/sdd1 /dev/sde1
    

    এটি নম্বর দেওয়া হয়েছে [3]। আমি ভাবছি যে এটি প্যারিটি ব্লকের গণনার সাথে প্রাসঙ্গিক কিনা। যদি এটি গুরুত্বপূর্ণ হয়ে যায়, আমি কীভাবে অ্যারেটি পুনরায় তৈরি করতে পারি /dev/sdb1[0][1] /dev/sdd1[2] /dev/sde1[4]? যদি আমি এটি কাজ করতে পেতাম তবে /dev/sdc1আমি এটিকে অবনতিযুক্ত মোডে শুরু করতে এবং নতুন ড্রাইভ যুক্ত করতে এবং এটিকে আবার সংযুক্ত করতে দিতে পারি।

আপনি যদি আমার কাছে এটি উল্লেখ করতে চান তবে এটি ঠিক আছে যে এটি সম্ভবত সেরা পদক্ষেপ নাও হতে পারে তবে আপনি দেখতে পাবেন যে আমি এটি উপলব্ধি করেছি। কারও কোনও পরামর্শ থাকলে এটি দুর্দান্ত হবে।


1
+1 এটি খুব সুচিন্তিত এবং নথিভুক্ত প্রশ্ন। আমি আশা করি আপনার উত্তর আমার কাছে আছে
অনুদান

আপনার মন্তব্যের জন্য আপনাকে ধন্যবাদ, আমি অনুমান করি এটি একটি শক্ত মন্তব্য।
পিটার বোস

আপনি কি এটি ছেড়ে দিয়েছেন, বা আপনি এখনও এটি নিয়ে কাজ করছেন? আপনি যদি এটিতে কাজ করে থাকেন, তবে আমার পরামর্শ, আপনার চারপাশে থাকা সমস্ত ড্রাইভগুলি স্ক্রাউঞ্জ করুন এবং অন্য একটি মেশিনে একটি জেবিওডি তৈরি করুন যা আপনি ডিডি চিত্রগুলি তৈরি করতে পারেন, এটি সেইভাবে মোকাবেলা করা ভাল কারণ যেহেতু আপনি বার বার চেষ্টা চালিয়ে যেতে পারেন । (এলভিএম ব্যবহার করুন এবং তারপরে এটি স্ন্যাপশটগুলি ব্যবহার শেষ করুন, যাতে আপনি স্ন্যাপশটটি মুছতে পারেন এবং পুরো জিনিসটি আবার অনুলিপি করতে না পারেন)। আমি একই ধরণের নৌকায় ছিলাম এবং বেশিরভাগ ডেটা অক্ষত রেখে আমি অ্যারেটি পুনরুদ্ধার করতে সক্ষম হয়েছিলাম।
Regan

আপনার প্রতিক্রিয়া জন্য ধন্যবাদ। কিছুক্ষণ পরে আমি এটি ছেড়ে দিলাম, নতুন দুটি দিয়ে দুটি ড্রাইভ প্রতিস্থাপন করেছি, ব্যাকআপ থেকে 98% পুনরুদ্ধার করেছি, 2% তথ্য হ্রাস গ্রহণ করেছি এবং এগিয়ে চলেছি। আমি এখন RAID-Z ব্যবহার করছি এবং আমার ব্যাকআপ-কৌশল আপডেট করেছি। এ পর্যন্ত সব ঠিকই.
পিটার বোস

উত্তর:


3

আপনার প্রশ্নের উত্তর দিতে,

  1. এটি পুনরুদ্ধার করা যাবে?

    • প্রথম জিনিসটির প্রথম - স্টপ, পিছনে বসে কিছুটা ভাবুন। হ্যাঁ, অ্যালগরিদম, খণ্ড আকার এবং ডিস্ক ক্রম সঠিকভাবে পুনরায় একত্রিত হওয়ার জন্য উপস্থিত যে কোনও ফাইল সিস্টেম উপস্থিত থাকার জন্য প্রয়োজনীয়। তবে যেহেতু আপনি সুপারব্লকগুলি ওভাররাইট করেছেন তাই এখন আপনি পরীক্ষা এবং ত্রুটি দিয়েই গেছেন।
    • দ্বিতীয়ত, পূর্ববর্তী ডিস্ক বিন্যাসটি পুনরুদ্ধার করার কোনও উপায় আছে কি? সেই ডিস্ক লেআউটটি কোথাও নিরাপদ রাখতে আমি সর্বদা একটি এমডিএমএম - ডিটেল> ব্যাকআপফায়াল করি। অভিযানে ডিস্কগুলি কীভাবে কনফিগার করা হয়েছিল তার কোনও প্রমাণের জন্য ডেমসগ, / ভার / লগ পরীক্ষা করে দেখুন।
    • শেষ অবধি, আপনি যদি পূর্ববর্তী অংশের আকার এবং ডিস্ক ক্রমের সাথে মেলে তবে আপনি এক্সট 4 সুপারব্লকটি ক্ষতিগ্রস্থ করতে পারেন - অন্যান্য সুপারব্লকগুলির জন্য চটজলদি স্ক্যান করার উপায় রয়েছে (এবং টেস্টডিস্ক নামে একটি নিফটি প্রোগ্রাম রয়েছে যা বিদ্যমান ফাইল সিস্টেমগুলির সুপারব্লকগুলি স্ক্যান করে এবং সেগুলি ব্রাউজ করার চেষ্টা করে) ম্যানুয়ালি: http://www.cgsecurity.org/wiki/Main_Page )
  2. যেহেতু এসডিসি নতুন, আমি অনুপস্থিত ধারাটির মাধ্যমে ম্যানুয়ালি একত্রিত হওয়ার চেষ্টা করব এবং হ্যাঁ, এসডিডিটিকে অবনমিত মোডে একত্রিত করার জন্য সঠিক ক্রমে থাকতে হবে। আপনি একবার সঠিক লেআউটটি খুঁজে পেলে - অ্যারের থেকে সমস্ত ডেটা অনুলিপি করুন এবং লেআউটটি ডকুমেন্ট করে আবার শুরু করুন (যাতে আপনি আবার এই সমস্যাটিতে চলে না)।

শুভকামনা


1
ext3 / 4 রিডানড্যান্ট সুপারব্লক লিখেছেন। পরিবর্তে ব্যাকআপ সুপারব্লকগুলি ব্যবহার করার জন্য আপনি মাউন্ট বা fsck এর আর্গুমেন্ট হিসাবে অফসেটটি সুপারব্লকটি পাস করতে পারেন। তবুও, একটি রেড 5 = গেমের মধ্যে দুটি ড্রাইভ ডাউন down
dmourat

1

আপনি আর কিছু না করার আগে আপনার অ্যারে থাকা প্রতিটি ড্রাইভের জন্য একটি 'mddm --examine / dev / sdX1' ক্যাপচার করুন এবং সেখান থেকে 'mddm --detail / dev / md0' নির্ধারণ করতে সক্ষম হবেন সঠিক লেআউট

একটি পৃথক প্রশ্নে একটি সিনোলজির অ্যারে পুনরুদ্ধার করার জন্য আমাকে নিজেই এটি করতে হয়েছিল:

"ই" রাজ্যে ড্রাইভ সহ সিএনোলজি এনএএস-তে একটি এমডিএডএম অ্যারে কীভাবে পুনরুদ্ধার করবেন?

সম্পাদনা: দুঃখিত, সবেমাত্র দেখেছি যে আপনি বলেছিলেন যে আপনি সমস্ত ড্রাইভে সুপারব্লক হারিয়েছেন।

আপনার পরবর্তী কমান্ডগুলি দেখতে সঠিক। সহজ বিকল্পটি প্রতিটি সম্ভাব্য ক্রম দিয়ে ক্রিয়েগুলি চালানো হতে পারে এবং তারপরে আপনি কেবলমাত্র সেগুলির মধ্যে পঠনযোগ্য ফাইল-সিস্টেমটি মাউন্ট করতে এবং অ্যাক্সেস করতে পারবেন কিনা তা দেখুন।


1

এই প্রশ্নটি পুরানো এবং আমি নিশ্চিত যে এখন কেউ আপনাকে সহায়তা করতে পারে না, তবে অন্যদের পড়ার জন্য:

আপনি যে সবচেয়ে বিপজ্জনক ভুল করেছেন তা আপনার নাম্বার করা নয়, যা চালানো হয়েছিল:

mdadm --create ...

আসল ডিস্কগুলিতে, আপনি কী করবেন তা জেনে প্রস্তুত হওয়ার আগে। এটি মেটাডেটা ওভাররাইট করেছে, সুতরাং আপনার ড্রাইভ অর্ডার, ডেটা অফসেট, খণ্ড আকার ইত্যাদির কোনও রেকর্ড নেই

এ থেকে পুনরুদ্ধার করতে, আপনাকে আবার সঠিক মান সহ ওভাররাইট করতে হবে। এটি জানার সহজতম উপায় হ'ল মেটাডেটা দেখতে, তবে আপনি এটি ইতিমধ্যে ধ্বংস করে দিয়েছেন। পরবর্তী উপায় অনুমান করা হয়। আপনি জানেন (4 ডিভাইস, স্তর 5) এবং পৃথক ডিস্ক ক্রম ব্যতীত যে কোনও বিকল্পের বিভিন্ন মান সহ এরকম একটি কমান্ডের বিভিন্ন সংমিশ্রণে অনুমান করুন:

mdadm --create /dev/md0 --assume-clean --metadata=1.2 --raid-devices=4 --level=5 --layout=... --chunk=512 --data-offset=128M /dev/sdb1 missing /dev/sdd1 /dev/sde1

তবে যেহেতু আপনি সঠিক ফলাফলটি জানেন না, আবার, আপনার মারাত্মক ভুল করে পুরানো ডিস্কগুলি এগুলি আরও ধ্বংস করে দেওয়া উচিত নয়। পরিবর্তে, একটি ওভারলে ব্যবহার করুন; উদাহরণস্বরূপ এই প্রক্রিয়াটি মূলগুলি নিরাপদ রাখতে কাজ করা উচিত।

একবার আপনি এমন কিছু যুক্তি খুঁজে পেয়েছেন যা একটি কার্যকারী অ্যারে তৈরি করে যা আপনি fsck বা মাউন্ট এবং যাচাই করতে পারেন (যেমন, একটি আইসোর মতো সমস্ত রাইড সদস্যকে ছড়িয়ে দিতে যথেষ্ট পরিমাণে ফাইলের চেকসামটি পরীক্ষা করুন যা আপনার চেকসাম / পিজিপি দিয়ে সংরক্ষণ করতে হবে) স্বাক্ষর, বা আনজিপ-টি বা গানজিপ-বৃহত্তর সংরক্ষণাগার)


ধন্যবাদ. ইতিমধ্যে, আমি জেডএফএস (RAIDZ2) ব্যবহার করতে এগিয়ে চলেছি। তবে আপনার নোটগুলি পড়ে খুব আকর্ষণীয় হয়েছিল। আমি এখন বুঝতে পারি যে তৈরি কমান্ড করেনি , মেটাডেটা ঊর্ধ্বলিপি যখন সময়ে আমি অধিকৃত এটা করত না। এছাড়াও, আমি ওভারলে ফাইলগুলি সম্পর্কে জানতাম না। আসলেই ঝরঝরে! ধন্যবাদ!
পিটার বোস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.