ক্র্যাশ হওয়া লিনাক্স এমডি RAID5 অ্যারেটি কীভাবে পুনরুদ্ধার করবেন?


17

কিছু সময় আগে আমি বাড়িতে একটি RAID5 সিস্টেম ছিল। 4 টি ডিস্কের মধ্যে একটি ব্যর্থ হয়েছে তবে এটিকে সরিয়ে ফেরা করার পরে এটি ঠিক আছে বলে মনে হয়েছিল তাই আমি পুনরায় সংযোগ শুরু করেছি। এটি শেষ হয়ে গেলে আমি বুঝতে পারি, আমার ভয়াবহতার মধ্যে 4 টির মধ্যে 3 টি ব্যর্থ হয়েছে। তবে আমি বিশ্বাস করি না এটি সম্ভব। ডিস্কে বিভিন্ন RAID অ্যারের প্রতিটি অংশে একাধিক পার্টিশন রয়েছে।

  • md0 হ'ল একটি RAID1 অ্যারে যা এসডিএ 1, এসডিবি 1, এসডিসি 1 এবং এসডিডি 1 দ্বারা গঠিত।
  • md1 হ'ল একটি RAID5 অ্যারে যা এসডিএ 2, এসডিবি 2, এসডিসি 2 এবং এসডিডি 2 সমন্বিত।
  • md2 হ'ল একটি RAID0 অ্যারে যা এসডিএ 3, এসডিবি 3, এসডিসি 3 এবং এসডিডি 3 সমন্বিত।

এমডি 0 এবং এমডি 2 সমস্ত ডিস্ক আপ রিপোর্ট করে যখন এমডি 1 রিপোর্ট 3 ব্যর্থ হয় (এসডিবি 2, এসডিসি 2, এসডিডি 2)। এটি আমার অবিশ্বাস্য যে হার্ড ড্রাইভগুলি ব্যর্থ হয়ে গেলে সমস্ত পার্টিশনগুলি শুধুমাত্র মাঝেরগুলি হারাতে হবে।

এই মুহুর্তে আমি কম্পিউটারটি বন্ধ করে দিয়েছি এবং ড্রাইভগুলি প্লাগ ইন করে রেখেছি। সেই থেকে আমি সেই কম্পিউটারটি একটি নতুন নতুন ডিস্ক দিয়ে ব্যবহার করছিলাম।

তথ্য পুনরুদ্ধারের কোন আশা আছে? আমি কি একরকম এমডিডমকে বোঝাতে পারি যে আমার ডিস্কগুলি আসলে কাজ করছে? কেবলমাত্র ডিস্কটিতে সত্যই সমস্যা থাকতে পারে এটি এসডিসি তবে এটির একটি অন্য অ্যারে দ্বারা রিপোর্ট করা হয়।

হালনাগাদ

আমি অবশেষে পুরানো ডিস্কগুলি সংযোগ করার এবং সিস্টেমআরস্কু সিডি থেকে এই মেশিনটি বুট করার সুযোগ পেয়েছি। উপরের সবকিছু স্মৃতি থেকে রচিত হয়েছিল। এখন আমার কাছে কিছু হার্ড ডেটা রয়েছে। এখানে আউটপুটmdadm --examine /dev/sd*2

/dev/sda2:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : 53eb7711:5b290125:db4a62ac:7770c5ea
  Creation Time : Sun May 30 21:48:55 2010
     Raid Level : raid5
  Used Dev Size : 625064960 (596.11 GiB 640.07 GB)
     Array Size : 1875194880 (1788.33 GiB 1920.20 GB)
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 1

    Update Time : Mon Aug 23 11:40:48 2010
          State : clean
 Active Devices : 3
Working Devices : 4
 Failed Devices : 1
  Spare Devices : 1
       Checksum : 68b48835 - correct
         Events : 53204

         Layout : left-symmetric
     Chunk Size : 64K

      Number   Major   Minor   RaidDevice State
this     0       8        2        0      active sync   /dev/sda2

   0     0       8        2        0      active sync   /dev/sda2
   1     1       8       18        1      active sync   /dev/sdb2
   2     2       8       34        2      active sync   /dev/sdc2
   3     3       0        0        3      faulty removed
   4     4       8       50        4      spare   /dev/sdd2
/dev/sdb2:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : 53eb7711:5b290125:db4a62ac:7770c5ea
  Creation Time : Sun May 30 21:48:55 2010
     Raid Level : raid5
  Used Dev Size : 625064960 (596.11 GiB 640.07 GB)
     Array Size : 1875194880 (1788.33 GiB 1920.20 GB)
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 1

    Update Time : Mon Aug 23 11:44:54 2010
          State : clean
 Active Devices : 2
Working Devices : 3
 Failed Devices : 1
  Spare Devices : 1
       Checksum : 68b4894a - correct
         Events : 53205

         Layout : left-symmetric
     Chunk Size : 64K

      Number   Major   Minor   RaidDevice State
this     1       8       18        1      active sync   /dev/sdb2

   0     0       0        0        0      removed
   1     1       8       18        1      active sync   /dev/sdb2
   2     2       8       34        2      active sync   /dev/sdc2
   3     3       0        0        3      faulty removed
   4     4       8       50        4      spare   /dev/sdd2
/dev/sdc2:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : 53eb7711:5b290125:db4a62ac:7770c5ea
  Creation Time : Sun May 30 21:48:55 2010
     Raid Level : raid5
  Used Dev Size : 625064960 (596.11 GiB 640.07 GB)
     Array Size : 1875194880 (1788.33 GiB 1920.20 GB)
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 1

    Update Time : Mon Aug 23 11:44:54 2010
          State : clean
 Active Devices : 1
Working Devices : 2
 Failed Devices : 2
  Spare Devices : 1
       Checksum : 68b48975 - correct
         Events : 53210

         Layout : left-symmetric
     Chunk Size : 64K

      Number   Major   Minor   RaidDevice State
this     2       8       34        2      active sync   /dev/sdc2

   0     0       0        0        0      removed
   1     1       0        0        1      faulty removed
   2     2       8       34        2      active sync   /dev/sdc2
   3     3       0        0        3      faulty removed
   4     4       8       50        4      spare   /dev/sdd2
/dev/sdd2:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : 53eb7711:5b290125:db4a62ac:7770c5ea
  Creation Time : Sun May 30 21:48:55 2010
     Raid Level : raid5
  Used Dev Size : 625064960 (596.11 GiB 640.07 GB)
     Array Size : 1875194880 (1788.33 GiB 1920.20 GB)
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 1

    Update Time : Mon Aug 23 11:44:54 2010
          State : clean
 Active Devices : 1
Working Devices : 2
 Failed Devices : 2
  Spare Devices : 1
       Checksum : 68b48983 - correct
         Events : 53210

         Layout : left-symmetric
     Chunk Size : 64K

      Number   Major   Minor   RaidDevice State
this     4       8       50        4      spare   /dev/sdd2

   0     0       0        0        0      removed
   1     1       0        0        1      faulty removed
   2     2       8       34        2      active sync   /dev/sdc2
   3     3       0        0        3      faulty removed
   4     4       8       50        4      spare   /dev/sdd2

দেখা যাচ্ছে যে শেষ বুট হওয়ার পরে জিনিসগুলি পরিবর্তিত হয়েছে। আমি যদি এটি সঠিকভাবে পড়ছি sda2, sdb2 এবং sdc2 কাজ করছে এবং সিঙ্ক্রোনাইজড ডেটা রয়েছে এবং এসডিডি 2 অতিরিক্ত। আমি স্পষ্টতই 3 টি ব্যর্থ ডিস্ক দেখে মনে করি তবে এটি সুসংবাদ। তবুও অ্যারে এখনও কাজ করছে না:

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md125 : inactive sda2[0](S) sdb2[1](S) sdc2[2](S)
      1875194880 blocks

md126 : inactive sdd2[4](S)
      625064960 blocks

md127 : active raid1 sda1[0] sdd1[3] sdc1[2] sdb1[1]
      64128 blocks [4/4] [UUUU]

unused devices: <none>

md0 এর নাম পরিবর্তন করে md127 এ প্রদর্শিত হবে। md125 এবং md126 খুব অদ্ভুত। তারা দুটি নয় একটি অ্যারে হওয়া উচিত। এটিকে এমডি 1 বলা হত। এমডি 2 সম্পূর্ণরূপে চলে গেছে তবে এটি আমার অদলবদ ছিল তাই আমার যত্ন নেই।

আমি বিভিন্ন নাম বুঝতে পারি এবং এটি আসলে কোনও ব্যাপার নয়। তবে 3 টি "অ্যাক্টিভ সিঙ্ক" ডিস্ক সহ একটি অ্যারে কেন অপঠনযোগ্য? এবং sdd2 একটি পৃথক অ্যারে থাকা দিয়ে কি?

হালনাগাদ

সুপারব্লকগুলি ব্যাক আপ করার পরে আমি নিম্নলিখিতটি চেষ্টা করেছি:

root@sysresccd /root % mdadm --stop /dev/md125
mdadm: stopped /dev/md125
root@sysresccd /root % mdadm --stop /dev/md126
mdadm: stopped /dev/md126

এ পর্যন্ত সব ঠিকই. যেহেতু sdd2 অতিরিক্ত, আমি এখনও এটি যুক্ত করতে চাই না।

root@sysresccd /root % mdadm --assemble /dev/md1 /dev/sd{a,b,c}2 missing 
mdadm: cannot open device missing: No such file or directory
mdadm: missing has no superblock - assembly aborted

স্পষ্টতই আমি এটি করতে পারি না।

root@sysresccd /root % mdadm --assemble /dev/md1 /dev/sd{a,b,c}2        
mdadm: /dev/md1 assembled from 1 drive - not enough to start the array.
root@sysresccd /root % cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md1 : inactive sdc2[2](S) sdb2[1](S) sda2[0](S)
      1875194880 blocks

md127 : active raid1 sda1[0] sdd1[3] sdc1[2] sdb1[1]
      64128 blocks [4/4] [UUUU]

unused devices: <none>

এটিও কাজ করেনি। আসুন সমস্ত ডিস্ক দিয়ে চেষ্টা করুন।

mdadm --stop /dev/md1
mdadm: stopped /dev/md1
root@sysresccd /root % mdadm --assemble /dev/md1 /dev/sd{a,b,c,d}2
mdadm: /dev/md1 assembled from 1 drive and 1 spare - not enough to start the array.
root@sysresccd /root % cat /proc/mdstat                           
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md1 : inactive sdc2[2](S) sdd2[4](S) sdb2[1](S) sda2[0](S)
      2500259840 blocks

md127 : active raid1 sda1[0] sdd1[3] sdc1[2] sdb1[1]
      64128 blocks [4/4] [UUUU]

unused devices: <none>

ভাগ্য নেই. এই উত্তরের ভিত্তিতে আমি চেষ্টা করার পরিকল্পনা করছি:

mdadm --create /dev/md1 --assume-clean --metadata=0.90 --bitmap=/root/bitmapfile --level=5 --raid-devices=4 /dev/sd{a,b,c}2 missing
mdadm --add /dev/md1 /dev/sdd2

এটি নিরাপদ?

হালনাগাদ

আমি আমার মন্তব্যে সেই টেবিলটি তৈরি করতে ব্যবহৃত সুপারব্লক পার্সার স্ক্রিপ্টটি প্রকাশ করি। কেউ এটি দরকারী খুঁজে পাবেন। সব আপনার সাহায্যের জন্য ধন্যবাদ।


আমার ধারণা mdadm --re-addআপনি যা খুঁজছেন তা নয়। আপনি কি সম্প্রতি একটি স্মৃতি পরীক্ষা করেছেন? আপনার অ্যারে ব্যর্থতার সাথে সম্পর্কিত কোনও লগ বার্তা আছে?
গিলস

@ গিলস: ক্র্যাশ হওয়ার আগে আমার লগ নেই কারণ সেগুলি ব্যর্থ অ্যারেতে সংরক্ষণ করা হয়েছিল। এবং আমি মনে করি না আমি এটি স্ট্যান্ডার্ড এমডিএডিএম ইন্টারফেস দিয়ে ঠিক করতে পারি। যে কোনও ক্রিয়াকলাপ যাতে পুনরায় সংযুক্ত থাকে 4 টির মধ্যে 1 টি ডিস্ক দিয়ে অসম্ভব। আমি মনে করি 3 টি "ব্যর্থ" ডিস্কগুলিতে সবকিছু পুনরুদ্ধার করার জন্য পর্যাপ্ত তথ্য রয়েছে। উদাহরণস্বরূপ আমি তাদের সাথে ডিডি পড়তে পারি। "ভাল" কোনওটি সিঙ্কের বাইরে চলে যেতে পারে। আমি একটি স্মৃতিচারণ করব তবে সেই যন্ত্রটি এখন একটি নতুন ডিস্কের সাথে নিখুঁতভাবে কাজ করছে।
stribika

2
আপনি অ্যারে বন্ধ করে এবং mdadm -A /dev/md1 /dev/sd{b,c,d}2(সম্ভবত --force) দিয়ে একটি নতুনকে পুনরায় একত্রিত করার চেষ্টা করেছিলেন ? (যদি আপনি না থাকেন তবে প্রথমে সুপারব্লোকগুলি ব্যাক আপ করুন))
গিলস 'খারাপ হয়ে যাওয়া বন্ধ করুন'

@ গিলস: আমি আপ টু ডেট তথ্য দিয়ে আমার প্রশ্ন আপডেট করেছি। আমার ঠিক কী ব্যাক আপ নেওয়া দরকার? ডিস্কগুলির প্রথম কয়েকটি ব্লক বা এটির জন্য কোনও নির্দিষ্ট সরঞ্জাম রয়েছে?
stribika

@ স্ট্রিবিকা: সুপারব্লকটি পার্টিশনের 64৪ কেবি সীমানায় সারিবদ্ধ সর্বশেষ সম্পূর্ণ 64 কেবি ব্লক। /dev/sdd2একই রকম ইউআইডি থাকা সত্ত্বেও কীভাবে আলাদা অ্যারেতে থাকতে পারে তা আমার কোনও ধারণা নেই sd{a,b,c}2
গিলস 22'19

উত্তর:


12

প্রথমে ডিস্কগুলি পরীক্ষা করুন, স্মার্ট সেলফিস্ট চালানোর চেষ্টা করুন

for i in a b c d; do
    smartctl -s on -t long /dev/sd$i
done

এটি শেষ হতে কয়েক ঘন্টা সময় নিতে পারে, তবে প্রতি কয়েক মিনিটের মধ্যে প্রতিটি ড্রাইভের পরীক্ষার স্থিতি পরীক্ষা করুন

smartctl -l selftest /dev/sda

পড়ার ত্রুটির কারণে যদি কোনও ডিস্কের স্থিতি সম্পূর্ণ না হয় তবে এই ডিস্কটিকে এমডি 1 পুনরায় অপসারণের জন্য অনিরাপদ হিসাবে বিবেচনা করা উচিত। স্বতঃস্ফূর্ত সমাপ্তির পরে, আপনি আপনার অ্যারে পুনরায় বিস্মৃত করার চেষ্টা শুরু করতে পারেন। Allyচ্ছিকভাবে, আপনি অতিরিক্ত সতর্ক হতে চাইলে চালিয়ে যাওয়ার আগে ডিস্কগুলি অন্য মেশিনে সরিয়ে নিন (কেবলমাত্র খারাপ র‌্যাম / নিয়ামক / ইত্যাদির ক্ষেত্রে)।

সম্প্রতি, আমার ঠিক এর মতো একটি মামলা হয়েছিল। একটি ড্রাইভ ব্যর্থ হয়েছে, আমি অ্যারেটিতে আবার যুক্ত করেছি তবে পুনর্নির্মাণের সময় 4 টির মধ্যে 3 ড্রাইভ পুরোপুরি ব্যর্থ হয়েছিল। / প্রোড / এমদাদম এর সামগ্রীগুলি আপনার মত একই ছিল (সম্ভবত একই ক্রমে নয়)

md1 : inactive sdc2[2](S) sdd2[4](S) sdb2[1](S) sda2[0](S)

তবে আমি ভাগ্যবান এবং এটি দিয়ে অ্যারেটিকে পুনরায় সাজিয়েছি

mdadm --assemble /dev/md1 --scan --force

আপনার প্রদত্ত - এক্সামিন আউটপুটটি দেখে, আমি নিম্নলিখিত পরিস্থিতিতেটি ঘটতে বলতে পারি: এসডিডি 2 ব্যর্থ হয়েছে, আপনি এটিকে সরিয়ে এটিকে পুনরায় যুক্ত করেছেন, সুতরাং এটি পুনর্নির্মাণের চেষ্টা করে একটি অতিরিক্ত ড্রাইভে পরিণত হয়েছিল। কিন্তু sda2 পুনর্নির্মাণের সময় ব্যর্থ হয়েছিল এবং তারপরে sdb2 ব্যর্থ হয়েছিল। সুতরাং ইভেন্টগুলির কাউন্টারটি এসডিসি 2 এবং এসডিডি 2-তে বড় যা কোন অ্যারের শেষ সক্রিয় ড্রাইভ (যদিও এসডিডি পুনর্নির্মাণের সুযোগ ছিল না এবং তাই এটি সর্বাধিক পুরানো)। ইভেন্ট কাউন্টারগুলির মধ্যে পার্থক্যগুলির কারণে, - ফোর্সগুলি প্রয়োজনীয় হবে। সুতরাং আপনি এটি চেষ্টা করতে পারে

mdadm --assemble /dev/md1 /dev/sd[abc]2 --force

উপসংহারে, আমি মনে করি যে উপরের কমান্ডটি ব্যর্থ হলে আপনার অ্যারেটি পুনরায় তৈরি করার চেষ্টা করা উচিত:

mdadm --create /dev/md1 --assume-clean -l5 -n4 -c64 /dev/sd[abc]2 missing

আপনি যদি এটি করেন --createতবে missingঅংশটি গুরুত্বপূর্ণ, অ্যারেতে চতুর্থ ড্রাইভ যুক্ত করার চেষ্টা করবেন না, কারণ এরপরে নির্মাণ শুরু হবে এবং আপনি আপনার ডেটা হারাবেন । নিখোঁজ ড্রাইভের সাথে অ্যারে তৈরি করা, এর সামগ্রীগুলি পরিবর্তন করবে না এবং আপনার অন্য কোনও অনুলিপি পাওয়ার সুযোগ থাকবে (raid5 raid1 এর মতো কাজ করে না)।

যে অ্যারের আনতে ব্যর্থ হলে, এই সমাধান (Perl স্ক্রিপ্ট) এখানে চেষ্টা একটি অ্যারের recreating

আপনি যদি শেষ পর্যন্ত অ্যারে আনার ব্যবস্থা করেন তবে ফাইল সিস্টেমটি অশুচি এবং সম্ভবত দূষিত হবে। যদি একটি ডিস্ক পুনর্নির্মাণের সময় ব্যর্থ হয় তবে আশা করা হয় যে অ্যারেটি থামবে এবং অন্য ডিস্কগুলিতে কোনও লিখন না করে স্থির হয়ে যাবে। এক্ষেত্রে দুটি ডিস্ক ব্যর্থ হয়েছে, সম্ভবত সিস্টেমটি রাইটিং অনুরোধগুলি সম্পাদন করছে যা সম্পূর্ণ করতে সক্ষম হয় নি, তাই কিছুটা ছোট সুযোগ রয়েছে যা আপনি কিছু ডেটা হারিয়েছেন, তবে এমন একটি সুযোগও যা আপনি কখনই লক্ষ্য করবেন না :-)

সম্পাদনা: কিছু স্পেসিফিকেশন যুক্ত হয়েছে।


mdadm --assemble /dev/md1 /dev/sd[abc]2 --forceকাজ করছে. ধন্যবাদ. আপনি আমার তথ্য সংরক্ষণ করেছেন! :) আমি চতুর্থ ডিস্ক যুক্ত করার চেষ্টা করব না কারণ প্রথম 3 টি আগে যেমন চেষ্টা করেছি তত ভাল নয়। স্বতঃপ্রকাশিত প্রত্যেকের কাছে 10-20 অপঠনযোগ্য ব্লক রয়েছে। আমি প্রথমে এটি পরীক্ষা না করার জন্য বোকা বোধ করি।
স্ট্রাইবিকা

একটি বিস্তৃত উত্তরের জন্য ধন্যবাদ। আমার কাছ থেকে 50 জন প্রতিদান দিয়ে পুরস্কৃত হয়েছে।
0xC0000022L

Permute_array.pl আমার জন্য দুর্দান্ত কাজ করেছে। অন্যান্য ব্যবহারকারীর জন্য নোট: ডিভাইস অ্যারেটি এটি দেখার জন্য প্রত্যাশা করে যে আপনি মুছে ফেলা কোনও ডেড ড্রাইভ সহ সমস্ত ড্রাইভ অন্তর্ভুক্ত রয়েছে।

"আপনি যদি - ক্রিয়েট করেন, অনুপস্থিত অংশটি গুরুত্বপূর্ণ, অ্যারেতে একটি চতুর্থ ড্রাইভ যুক্ত করার চেষ্টা করবেন না, কারণ তাহলে নির্মাণ শুরু হবে এবং আপনি আপনার ডেটা হারাবেন।" - বিএস আপনি নির্দিষ্ট করে --assume-clean(আপনি করেছেন) এটি না।
পোজ

1

আমি ব্যবহার করার সময় অনেক সমস্যার মুখোমুখি হয়েছি mdadm, তবে ডেটা কখনই হারাতে পারি নি। আপনার --forceবিকল্পটি এড়ানো উচিত , বা খুব সাবধানে এটি ব্যবহার করা উচিত, কারণ আপনি আপনার সমস্ত ডেটা হারাতে পারেন। আপনার পোস্ট করুন/etc/mdadm/mdadm.conf

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.