পুনরায় ব্যবহারের পরিবর্তে নতুন অ্যারে তৈরির পরে RAID 5 ডেটা পুনরুদ্ধার করুন


35

অনুগ্রহ করে দয়া করে সহায়তা করুন - আমি হাতের মুঠোয় মাথাব্যথার সাথে একদম নতুন (পুরো ঝড়ের পরিস্থিতি)।

আমার উবুন্টু ১১.০৪ এ সফটওয়্যার রাইড হিসাবে কনফিগার করা আমার কাছে একটি 3ttb এইচডি রয়েছে that কম্পিউটার হার্ড ড্রাইভের বাইরে সম্পূর্ণ আলাদাভাবে ব্যর্থ হওয়া এবং ফেলে দেওয়া পর্যন্ত ডেটা সাপ্তাহিক অনুলিপি করা হয়েছিল। কিছুদিন আগে আমাদের বিদ্যুৎ বিভ্রাট হয়েছিল এবং পুনরায় বুট করার পরে আমার বাক্সটি অভিযানটি কাটবে না। আমার অসীম প্রজ্ঞায় আমি প্রবেশ করলাম

mdadm --create -f...

পরিবর্তে কমান্ড

mdadm --assemble

এবং যে ট্রাভ্যাসিটি আমি পরেও করেছি তা লক্ষ্য করিনি। এটি অ্যারে অবনমিত হওয়া শুরু করে এবং এটি নির্মাণ ও সিঙ্ক করে এগিয়ে যায় যা ~ 10 ঘন্টা সময় নেয়। আমি ফিরে আসার পরে আমি দেখতে পেলাম যে অ্যারেটি সফলভাবে শেষ হয়েছে এবং চলছে তবে আক্রমণটি হয় নি

আমি বলতে চাইছি পৃথক ড্রাইভগুলি পার্টিশন করা হয়েছে (পার্টিশনের ধরণ f8) তবে md0ডিভাইসটি এটি নয়। আমি যা করেছি তা ভয়াবহতায় অনুধাবন করে কিছু সমাধানের চেষ্টা করছি। আমি কেবল প্রার্থনা করি যা --createহার্ড ড্রাইভারের পুরো সামগ্রীটি ওভাররাইট করে না।

কেউ দয়া করে এটির জন্য আমাকে সাহায্য করতে পারেন - ড্রাইভে থাকা ডেটাটি অত্যন্ত গুরুত্বপূর্ণ এবং অনন্য photos 10 বছর ফটো, ডকস ইত্যাদি is

এটি কি সম্ভব যে অংশগ্রহণকারী হার্ড ড্রাইভগুলি ভুল ক্রমে নির্দিষ্ট করে mdadmসেগুলি ওভাররাইট করতে পারে ? যখন আমি করি

mdadm --examine --scan 

আমি কিছু পেতে ARRAY /dev/md/0 metadata=1.2 UUID=f1b4084a:720b5712:6d03b9e9:43afe51b name=<hostname>:0

মজার বিষয় হল পর্যাপ্ত নামটি 'রেইড' ব্যবহৃত হত এবং হোস্ট হামের সাথে: 0 টি যুক্ত হয় না।

এখানে 'স্যানিটাইজড' কনফিগারেশন এন্ট্রি রয়েছে:

DEVICE /dev/sdf1 /dev/sde1 /dev/sdd1

CREATE owner=root group=disk mode=0660 auto=yes

HOMEHOST <system>

MAILADDR root


ARRAY /dev/md0 metadata=1.2 name=tanserv:0 UUID=f1b4084a:720b5712:6d03b9e9:43afe51b


Here is the output from mdstat

cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid5 sdd1[0] sdf1[3] sde1[1]
1953517568 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>


fdisk shows the following:

fdisk -l

Disk /dev/sda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000bf62e

Device Boot Start End Blocks Id System
/dev/sda1 * 1 9443 75846656 83 Linux
/dev/sda2 9443 9730 2301953 5 Extended
/dev/sda5 9443 9730 2301952 82 Linux swap / Solaris

Disk /dev/sdb: 750.2 GB, 750156374016 bytes
255 heads, 63 sectors/track, 91201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000de8dd

Device Boot Start End Blocks Id System
/dev/sdb1 1 91201 732572001 8e Linux LVM

Disk /dev/sdc: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00056a17

Device Boot Start End Blocks Id System
/dev/sdc1 1 60801 488384001 8e Linux LVM

Disk /dev/sdd: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ca948

Device Boot Start End Blocks Id System
/dev/sdd1 1 121601 976760001 fd Linux raid autodetect

Disk /dev/dm-0: 1250.3 GB, 1250254913536 bytes
255 heads, 63 sectors/track, 152001 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/dm-0 doesn't contain a valid partition table

Disk /dev/sde: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x93a66687

Device Boot Start End Blocks Id System
/dev/sde1 1 121601 976760001 fd Linux raid autodetect

Disk /dev/sdf: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xe6edc059

Device Boot Start End Blocks Id System
/dev/sdf1 1 121601 976760001 fd Linux raid autodetect

Disk /dev/md0: 2000.4 GB, 2000401989632 bytes
2 heads, 4 sectors/track, 488379392 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes
Disk identifier: 0x00000000

Disk /dev/md0 doesn't contain a valid partition table

পরামর্শ অনুসারে আমি সুপারব্লকগুলি পরিষ্কার করেছি এবং --assume-cleanবিকল্পের সাথে অ্যারে পুনরায় তৈরি করেছি তবে কোনও ভাগ্য নেই।

এমন কোনও সরঞ্জাম আছে যা আমাকে কমপক্ষে কিছু ডেটা পুনরুদ্ধারে সহায়তা করবে? কেউ কি আমাকে বলতে পারবেন যে ডেটা ধ্বংস করতে সিঙ্ক করলে এমডিএডএম - ক্রিয়েট কী করে যাতে আমি যা-কিছু করা হয়েছিল তা আন-টু করার জন্য একটি সরঞ্জাম লিখতে পারি?

অভিযানটি পুনরায় তৈরির পরে আমি fsck.ext4 / dev / md0 চালাই এবং এখানে আউটপুট

রুট @ ট্যানজার: / ইত্যাদি / এমডিআডএম # fsck.ext4 / dev / md0 e2fsck 1.41.14 (22-ডিসেম্বর-2010) fsck.ext4: সুপারব্লক অবৈধ, ব্যাকআপ ব্লকগুলি চেষ্টা করছে ... fsck.ext4: সুপার- এ খারাপ যাদু নম্বর / dev / md0 খোলার চেষ্টা করার সময় ব্লক করুন

সুপারব্লকটি পঠন করা যায়নি বা সঠিক ext2 ফাইল সিস্টেমের বর্ণনা দেয় না। যদি ডিভাইসটি বৈধ হয় এবং এতে সত্যই একটি এক্সট 2 ফাইল সিস্টেম থাকে (এবং অদলবদল বা ইউএফএস বা অন্য কোনও কিছু না থাকে) তবে সুপারব্লকটি দুর্নীতিগ্রস্থ এবং আপনি কোনও বিকল্প সুপারব্ল্যাক সহ e2fsck চালানোর চেষ্টা করতে পারেন: e2fsck -b 8193


প্রতি শেনসের পরামর্শ আমি চেষ্টা করেছি

root@tanserv:/home/mushegh# mkfs.ext4 -n /dev/md0
mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
122101760 inodes, 488379392 blocks
24418969 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
14905 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
    102400000, 214990848

এবং প্রতিটি ব্যাকআপ ব্লক দিয়ে fsck.ext4 চালান তবে সমস্ত নিম্নলিখিতটি ফেরত দেয়:

root@tanserv:/home/mushegh# fsck.ext4 -b 214990848 /dev/md0
e2fsck 1.41.14 (22-Dec-2010)
fsck.ext4: Invalid argument while trying to open /dev/md0

The superblock could not be read or does not describe a correct ext2
filesystem.  If the device is valid and it really contains an ext2
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
    e2fsck -b 8193 <device>

কোন পরামর্শ?

শুভেচ্ছা সহ!


1
সম্ভবত একদিন লোকেরা বুঝতে পারে কেন RAID5 একটি ভয়ঙ্কর ধারণা। ততক্ষণে, 1) লোকেরা ডেটা হারাবে। 2) আমরা এই জাতীয় প্রশ্ন করব।
টম ও'কনর

11
@ টম ও'কনোর ... কারণ স্পষ্টতই, RAID5 হ'ল ব্যবহারকারীর ত্রুটির জন্য দোষ দেওয়া। : রোলিজ:
রিয়েলটি এক্সট্রাক্টর

2
আশা করা যায়, শেনের উত্তর ডেটা সংরক্ষণ করতে পারে, তবে আবারও প্রমাণ করে কেন একা RAID স্টোরেজ করার জন্য সবচেয়ে ভাল নয়। ব্যাকআপও দরকার। (তবে
ফলাফলটির

4
আমি জানি এটি প্রায়শই পুনরাবৃত্তি হয়, তবে অভিযান কোনও ব্যাকআপ সমাধান নয় । বার্তাটি সত্যই বাড়িতে চালানো দরকার।
সাইরেক্স

উত্তর:


89

ঠিক আছে - আপনার সমস্যা সম্পর্কে আমাকে কিছুটা ত্রুটিযুক্ত করেছিল, তাই আশা করা উচিত এমন আচরণে ডুব দেওয়ার জন্য আমি একটি ভিএম চালিত করেছি। আমি এক মিনিটের মধ্যে যা আমাকে বাগড করেছিলাম তা পেয়ে যাব; প্রথমে আমাকে এটি বলতে দাও:

কিছু চেষ্টা করার আগে এই ড্রাইভগুলির ব্যাকআপ দিন !!

রিসাইকটি যা করেছে তার চেয়ে বেশি আপনি ইতিমধ্যে ক্ষতি করেছেন; আপনি যখন বলেছিলেন তখন কী বোঝাতে চেয়েছিলেন তা কি আপনি স্পষ্ট করতে পারেন:

পরামর্শ অনুসারে আমি সুপারব্লকগুলি পরিষ্কার করেছি এবং অ্যারে --assume- ক্লিন অপশন দিয়ে পুনরায় তৈরি করেছি তবে কোনও ভাগ্য নেই।

আপনি যদি একটি দৌড়ে mdadm --misc --zero-superblock, তবে আপনার ভাল হওয়া উচিত।

যাইহোক, কিছু নতুন ডিস্ক আপকে ফাঁকি ফেলুন এবং কিছু করার আগে এগুলির সঠিক বর্তমান চিত্রগুলি দখল করুন যা এই ডিস্কগুলিতে আরও কোনও লেখার কাজ করতে পারে।

dd if=/dev/sdd of=/path/to/store/sdd.img

এটি বলা হচ্ছে .. দেখে মনে হচ্ছে যে এই জিনিসগুলিতে সঞ্চিত ডেটা বোকামিযুক্ত সংলাপগুলিতে মজাদারভাবে স্থিতিস্থাপক। পড়ুন, আশা আছে, এবং এই দিনটি আমি উত্তর দৈর্ঘ্যের সীমাতে পৌঁছেছি।


সেরা কেস সিনারিও

আপনার দৃশ্যটি পুনরায় তৈরি করতে আমি একটি ভিএম একসাথে ছুড়েছি। ড্রাইভগুলি মাত্র 100 মেগাবাইট তাই আমি প্রতিটি রিসাইঙ্কের জন্য চিরকালের জন্য অপেক্ষা করব না, তবে এটি অন্যথায় খুব সঠিকভাবে উপস্থাপনা হওয়া উচিত।

অ্যারে যতটা সম্ভব জেনারেটাল এবং ডিফল্ট হিসাবে তৈরি করুন - 512 কে খণ্ড, বাম-প্রতিসাম্য বিন্যাস, চিঠির ক্রমে ডিস্ক .. বিশেষ কিছু নয়।

root@test:~# mdadm --create /dev/md0 --chunk=512 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
root@test:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid5 sdd1[3] sdc1[1] sdb1[0]
      203776 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>

এ পর্যন্ত সব ঠিকই; আসুন একটি ফাইল সিস্টেম তৈরি করি এবং এটিতে কিছু ডেটা রাখি।

root@test:~# mkfs.ext4 /dev/md0
mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=512 blocks, Stripe width=1024 blocks
51000 inodes, 203776 blocks
10188 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
25 block groups
8192 blocks per group, 8192 fragments per group
2040 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729

Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
root@test:~# mkdir /mnt/raid5
root@test:~# mount /dev/md0 /mnt/raid5
root@test:~# echo "data" > /mnt/raid5/datafile
root@test:~# dd if=/dev/urandom of=/mnt/raid5/randomdata count=10000
10000+0 records in
10000+0 records out
5120000 bytes (5.1 MB) copied, 0.706526 s, 7.2 MB/s
root@test:~# sha1sum /mnt/raid5/randomdata
847685a5d42524e5b1d5484452a649e854b59064  /mnt/raid5/randomdata

ঠিক আছে. আমরা এতে একটি ফাইল সিস্টেম এবং কিছু ডেটা পেয়েছি ("ডেটা" ইন datafile, এবং সেই SHA1 হ্যাশ সহ 5MB মূল্যবান এলোমেলো ডেটা randomdata); আসুন দেখুন আমরা যখন আবার তৈরি করি তখন কী ঘটে।

root@test:~# umount /mnt/raid5
root@test:~# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
root@test:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
unused devices: <none>
root@test:~# mdadm --create /dev/md1 --chunk=512 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: /dev/sdb1 appears to be part of a raid array:
    level=raid5 devices=3 ctime=Sat Jan  7 21:07:06 2012
mdadm: /dev/sdc1 appears to be part of a raid array:
    level=raid5 devices=3 ctime=Sat Jan  7 21:07:06 2012
mdadm: /dev/sdd1 appears to be part of a raid array:
    level=raid5 devices=3 ctime=Sat Jan  7 21:07:06 2012
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
root@test:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid5 sdd1[2] sdc1[1] sdb1[0]
      203776 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>

এই ক্ষুদ্র ডিস্কগুলির সাথে পুনরায় সংযোগটি খুব দ্রুত শেষ হয়েছে, তবে এটি ঘটেছে। সুতরাং এখানে যা আমাকে আগে থেকে বাগডিং করছিল; আপনার fdisk -lআউটপুট mdডিভাইসে কোনও পার্টিশন টেবিল না থাকা কোনও সমস্যা নয়, এটি প্রত্যাশিত। আপনার ফাইল সিস্টেমটি কোনও পার্টিশন টেবিল ছাড়াই জাল ব্লক ডিভাইসে সরাসরি বসবাস করে।

root@test:~# fdisk -l
...
Disk /dev/md1: 208 MB, 208666624 bytes
2 heads, 4 sectors/track, 50944 cylinders, total 407552 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes
Disk identifier: 0x00000000

Disk /dev/md1 doesn't contain a valid partition table

হ্যাঁ, কোনও পার্টিশন টেবিল নেই। কিন্তু ...

root@test:~# fsck.ext4 /dev/md1
e2fsck 1.41.14 (22-Dec-2010)
/dev/md1: clean, 12/51000 files, 12085/203776 blocks

পুরোপুরি বৈধ ফাইল সিস্টেম, একটি পুনরায় সংযোগের পরে। সুতরাং এটি ভাল; আসুন আমাদের ডেটা ফাইলগুলি পরীক্ষা করে দেখুন:

root@test:~# mount /dev/md1 /mnt/raid5/
root@test:~# cat /mnt/raid5/datafile
data
root@test:~# sha1sum /mnt/raid5/randomdata
847685a5d42524e5b1d5484452a649e854b59064  /mnt/raid5/randomdata

সলিড - কোনও ডেটা দুর্নীতি নেই! তবে এটি ঠিক একই সেটিংস সহ, সুতরাং দুটি RAID গ্রুপের মধ্যে আলাদাভাবে কোনও ম্যাপ করা হয়নি। আমরা এটি ভাঙার চেষ্টা করার আগে এই জিনিসটি নামিয়ে দেওয়া যাক।

root@test:~# umount /mnt/raid5
root@test:~# mdadm --stop /dev/md1

একটি পদক্ষেপ ফিরে

আমরা এটি ভাঙার চেষ্টা করার আগে, এটি কেন ভাঙ্গা কঠিন তা নিয়ে কথা বলি। RAID 5 প্যারিটি ব্লক ব্যবহার করে কাজ করে যা অ্যারের প্রতিটি অন্যান্য ডিস্কে ব্লকের মতো একই আকারকে একটি অঞ্চলকে সুরক্ষিত করে। প্যারিটি কেবল একটি নির্দিষ্ট ডিস্কে নয়, এটি সাধারণ ক্রিয়াকলাপের ডিস্কগুলিতে আরও ভালভাবে পড়ার লোড আউট করার জন্য এটি ডিস্কের চারপাশে সমানভাবে ঘোরানো হয়।

প্যারিটি গণনা করার জন্য এক্সওআর অপারেশনটি দেখতে এরকম দেখাচ্ছে:

DISK1  DISK2  DISK3  DISK4  PARITY
1      0      1      1    = 1
0      0      1      1    = 0
1      1      1      1    = 0

সুতরাং, ডিস্কগুলির মধ্যে সমতা ছড়িয়ে পড়ে।

DISK1  DISK2  DISK3  DISK4  DISK5
DATA   DATA   DATA   DATA   PARITY
PARITY DATA   DATA   DATA   DATA
DATA   PARITY DATA   DATA   DATA

একটি মৃত বা অনুপস্থিত ডিস্ক প্রতিস্থাপনের সময় সাধারণত একটি পুনরায় সংযোগ করা হয়; এটি mdadm createনিশ্চিত করার জন্যও করা হয়েছিল যে ডিস্কের ডেটা RAID এর জ্যামিতির মতো দেখতে অনুভূত হয় with সেক্ষেত্রে অ্যারে স্পেকের সর্বশেষ ডিস্কটি হ'ল এটিতে 'সিঙ্ক করা' - অন্যান্য ডিস্কের বিদ্যমান সমস্ত ডেটা সিঙ্কের জন্য ব্যবহৃত হয়।

সুতরাং, 'নতুন' ডিস্কের সমস্ত ডেটা মুছে ফেলা হয়েছে এবং পুনর্নির্মাণ করা হয়েছে; হয় যা হওয়া উচিত ছিল তার জন্য প্যারিটি ব্লকের বাইরে নতুন তথ্য ব্লক তৈরি করা, অথবা অন্যথায় নতুন প্যারিটি ব্লক তৈরি করা।

কী দুর্দান্ত তা হ'ল এই দুটি জিনিসের জন্য প্রক্রিয়াটি হুবহু: বাকি ডিস্কগুলির ডেটা জুড়ে একটি এক্সওআর অপারেশন। এই ক্ষেত্রে পুনরায় সংযোগ প্রক্রিয়াটির লেআউটে থাকতে পারে একটি নির্দিষ্ট ব্লক প্যারিটি ব্লক হওয়া উচিত এবং মনে হয় এটি একটি নতুন প্যারিটি ব্লক তৈরি করছে, যখন বাস্তবে এটি পুরাতন ডেটা ব্লকটি পুনরায় তৈরি করে। এমনকি যদি এটি মনে করে যে এটি এটি তৈরি করছে :

DISK1  DISK2  DISK3  DISK4  DISK5
PARITY DATA   DATA   DATA   DATA
DATA   PARITY DATA   DATA   DATA
DATA   DATA   PARITY DATA   DATA

... এটি কেবল DISK5উপরের লেআউটটি থেকে পুনর্নির্মাণ করা হতে পারে ।

সুতরাং, অ্যারের বিল্টটি ভুল হয়ে থাকলেও তথ্যের পক্ষে ধারাবাহিক থাকা সম্ভব।


কাজের মধ্যে একটি বানর নিক্ষেপ

(একটি রেঞ্চ নয়; পুরো বানর)

পরীক্ষা 1:

আসুন ভুল ক্রমে অ্যারে করা যাক! sdcতাহলে sdd, তারপর sdb..

root@test:~# mdadm --create /dev/md1 --chunk=512 --level=5 --raid-devices=3 /dev/sdc1 /dev/sdd1 /dev/sdb1
mdadm: /dev/sdc1 appears to be part of a raid array:
    level=raid5 devices=3 ctime=Sat Jan  7 23:06:34 2012
mdadm: /dev/sdd1 appears to be part of a raid array:
    level=raid5 devices=3 ctime=Sat Jan  7 23:06:34 2012
mdadm: /dev/sdb1 appears to be part of a raid array:
    level=raid5 devices=3 ctime=Sat Jan  7 23:06:34 2012
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
root@test:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid5 sdb1[3] sdd1[1] sdc1[0]
      203776 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>

ঠিক আছে, সব ঠিক আছে। আমাদের কি ফাইল সিস্টেম আছে?

root@test:~# fsck.ext4 /dev/md1
e2fsck 1.41.14 (22-Dec-2010)
fsck.ext4: Superblock invalid, trying backup blocks...
fsck.ext4: Bad magic number in super-block while trying to open /dev/md1

The superblock could not be read or does not describe a correct ext2
filesystem.  If the device is valid and it really contains an ext2
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
    e2fsck -b 8193 <device>

নাঃ! তা কেন? কারণ ডেটা সব আছে, এটি ভুল ক্রমে; যা একবার A এর 512KB ছিল, তারপরে B, A, B এর 512KB, এবং আরও অনেক কিছু, এখন B, A, B, A. এ স্থানান্তরিত হয়েছে ডিস্কটি এখন ফাইল-সিস্টেম চেকারের কাছে জিব্বের মতো দেখাচ্ছে, এটি চলবে না। এর আউটপুট mdadm --misc -D /dev/md1আমাদের আরও বিশদ দেয়; দেখে মনে হচ্ছে:

Number   Major   Minor   RaidDevice State
   0       8       33        0      active sync   /dev/sdc1
   1       8       49        1      active sync   /dev/sdd1
   3       8       17        2      active sync   /dev/sdb1

কখন এটি দেখতে হবে:

Number   Major   Minor   RaidDevice State
   0       8       17        0      active sync   /dev/sdb1
   1       8       33        1      active sync   /dev/sdc1
   3       8       49        2      active sync   /dev/sdd1

সুতরাং, এটি সব ভাল এবং ভাল। আমরা এবার নতুন প্যারিটি ব্লক সহ পুরো ব্লক ডেটা ব্লককে ওভাররাইট করেছি। এখনই সঠিক ক্রম দিয়ে পুনরায় তৈরি করুন:

root@test:~# mdadm --stop /dev/md1
mdadm: stopped /dev/md1
root@test:~# mdadm --create /dev/md1 --chunk=512 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: /dev/sdb1 appears to be part of a raid array:
    level=raid5 devices=3 ctime=Sat Jan  7 23:11:08 2012
mdadm: /dev/sdc1 appears to be part of a raid array:
    level=raid5 devices=3 ctime=Sat Jan  7 23:11:08 2012
mdadm: /dev/sdd1 appears to be part of a raid array:
    level=raid5 devices=3 ctime=Sat Jan  7 23:11:08 2012
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
root@test:~# fsck.ext4 /dev/md1
e2fsck 1.41.14 (22-Dec-2010)
/dev/md1: clean, 12/51000 files, 12085/203776 blocks

ঝরঝরে, এখনও একটি ফাইল সিস্টেম আছে! তবুও ডেটা পেলেন?

root@test:~# mount /dev/md1 /mnt/raid5/
root@test:~# cat /mnt/raid5/datafile
data
root@test:~# sha1sum /mnt/raid5/randomdata
847685a5d42524e5b1d5484452a649e854b59064  /mnt/raid5/randomdata

সফল!

পরীক্ষা 2

ঠিক আছে, আসুন মাপের আকারটি পরিবর্তন করে দেখি যে এটি আমাদের কিছুটা দুর্বলতা পায় কিনা।

root@test:~# umount /mnt/raid5
root@test:~# mdadm --stop /dev/md1
mdadm: stopped /dev/md1
root@test:~# mdadm --create /dev/md1 --chunk=64 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: /dev/sdb1 appears to be part of a raid array:
    level=raid5 devices=3 ctime=Sat Jan  7 23:21:19 2012
mdadm: /dev/sdc1 appears to be part of a raid array:
    level=raid5 devices=3 ctime=Sat Jan  7 23:21:19 2012
mdadm: /dev/sdd1 appears to be part of a raid array:
    level=raid5 devices=3 ctime=Sat Jan  7 23:21:19 2012
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
root@test:~# fsck.ext4 /dev/md1
e2fsck 1.41.14 (22-Dec-2010)
fsck.ext4: Superblock invalid, trying backup blocks...
fsck.ext4: Bad magic number in super-block while trying to open /dev/md1

The superblock could not be read or does not describe a correct ext2
filesystem.  If the device is valid and it really contains an ext2
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
    e2fsck -b 8193 <device>

হ্যাঁ, হ্যাঁ, এটি সেট আপ করার পরে এটি হোস্ট হয়। কিন্তু, আমরা কি পুনরুদ্ধার করতে পারি?

root@test:~# mdadm --stop /dev/md1
mdadm: stopped /dev/md1
root@test:~# mdadm --create /dev/md1 --chunk=512 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: /dev/sdb1 appears to be part of a raid array:
    level=raid5 devices=3 ctime=Sat Jan  7 23:21:51 2012
mdadm: /dev/sdc1 appears to be part of a raid array:
    level=raid5 devices=3 ctime=Sat Jan  7 23:21:51 2012
mdadm: /dev/sdd1 appears to be part of a raid array:
    level=raid5 devices=3 ctime=Sat Jan  7 23:21:51 2012
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
root@test:~# fsck.ext4 /dev/md1
e2fsck 1.41.14 (22-Dec-2010)
/dev/md1: clean, 12/51000 files, 12085/203776 blocks
root@test:~# mount /dev/md1 /mnt/raid5/
root@test:~# cat /mnt/raid5/datafile
data
root@test:~# sha1sum /mnt/raid5/randomdata
847685a5d42524e5b1d5484452a649e854b59064  /mnt/raid5/randomdata

সাফল্য, আবার!

পরীক্ষা 3

এটিই আমি ভেবেছিলাম ডেটা নিশ্চিতরূপে মেরে ফেলব - আসুন একটি ভিন্ন বিন্যাস অ্যালগরিদম করি!

root@test:~# umount /mnt/raid5
root@test:~# mdadm --stop /dev/md1
mdadm: stopped /dev/md1
root@test:~# mdadm --create /dev/md1 --chunk=512 --level=5 --layout=right-asymmetric --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: /dev/sdb1 appears to be part of a raid array:
    level=raid5 devices=3 ctime=Sat Jan  7 23:32:34 2012
mdadm: /dev/sdc1 appears to be part of a raid array:
    level=raid5 devices=3 ctime=Sat Jan  7 23:32:34 2012
mdadm: /dev/sdd1 appears to be part of a raid array:
    level=raid5 devices=3 ctime=Sat Jan  7 23:32:34 2012
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
root@test:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid5 sdd1[3] sdc1[1] sdb1[0]
      203776 blocks super 1.2 level 5, 512k chunk, algorithm 1 [3/3] [UUU]

unused devices: <none>
root@test:~# fsck.ext4 /dev/md1
e2fsck 1.41.14 (22-Dec-2010)
fsck.ext4: Superblock invalid, trying backup blocks...
Superblock has an invalid journal (inode 8).

ভীতিজনক এবং খারাপ - এটি এটি কিছু খুঁজে পেয়েছে এবং কিছু ফিক্সিং করতে চায় বলে মনে করে! Ctrl+ C!

Clear<y>? cancelled!

fsck.ext4: Illegal inode number while checking ext3 journal for /dev/md1

ঠিক আছে, সঙ্কট এড়ানো গেছে। আসুন দেখা যাক ভুল লেআউটের সাথে পুনরায় সমন্বয়ের পরে ডেটাটি এখনও অক্ষত আছে:

root@test:~# mdadm --stop /dev/md1
mdadm: stopped /dev/md1
root@test:~# mdadm --create /dev/md1 --chunk=512 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: /dev/sdb1 appears to be part of a raid array:
    level=raid5 devices=3 ctime=Sat Jan  7 23:33:02 2012
mdadm: /dev/sdc1 appears to be part of a raid array:
    level=raid5 devices=3 ctime=Sat Jan  7 23:33:02 2012
mdadm: /dev/sdd1 appears to be part of a raid array:
    level=raid5 devices=3 ctime=Sat Jan  7 23:33:02 2012
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
root@test:~# fsck.ext4 /dev/md1
e2fsck 1.41.14 (22-Dec-2010)
/dev/md1: clean, 12/51000 files, 12085/203776 blocks
root@test:~# mount /dev/md1 /mnt/raid5/
root@test:~# cat /mnt/raid5/datafile
data
root@test:~# sha1sum /mnt/raid5/randomdata
847685a5d42524e5b1d5484452a649e854b59064  /mnt/raid5/randomdata

সফল!

পরীক্ষা 4

আসুন আমরা কেবল প্রমাণ করি যে সুপারব্লক শূন্যকরণ ক্ষতিকারক বাস্তব তাড়াতাড়ি নয়:

root@test:~# umount /mnt/raid5
root@test:~# mdadm --stop /dev/md1
mdadm: stopped /dev/md1
root@test:~# mdadm --misc --zero-superblock /dev/sdb1 /dev/sdc1 /dev/sdd1
root@test:~# mdadm --create /dev/md1 --chunk=512 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
root@test:~# fsck.ext4 /dev/md1
e2fsck 1.41.14 (22-Dec-2010)
/dev/md1: clean, 12/51000 files, 12085/203776 blocks
root@test:~# mount /dev/md1 /mnt/raid5/
root@test:~# cat /mnt/raid5/datafile
data
root@test:~# sha1sum /mnt/raid5/randomdata
847685a5d42524e5b1d5484452a649e854b59064  /mnt/raid5/randomdata

হ্যাঁ, কোনও বড় কথা নয়।

পরীক্ষা 5

আমরা যা পেয়েছি তা কেবল ফেলে দিন। সমস্ত 4 পূর্ববর্তী পরীক্ষা, একত্রিত।

  • ভুল ডিভাইসের অর্ডার
  • ভুল খণ্ডের আকার
  • ভুল লেআউট অ্যালগরিদম
  • জিরোড সুপারব্লকস (আমরা উভয় সৃষ্টির মধ্যে এটি করব)

অনওয়ার্ড!

root@test:~# umount /mnt/raid5
root@test:~# mdadm --stop /dev/md1
mdadm: stopped /dev/md1
root@test:~# mdadm --misc --zero-superblock /dev/sdb1 /dev/sdc1 /dev/sdd1
root@test:~# mdadm --create /dev/md1 --chunk=64 --level=5 --raid-devices=3 --layout=right-symmetric /dev/sdc1 /dev/sdd1 /dev/sdb1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
root@test:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid5 sdb1[3] sdd1[1] sdc1[0]
      204672 blocks super 1.2 level 5, 64k chunk, algorithm 3 [3/3] [UUU]

unused devices: <none>
root@test:~# fsck.ext4 /dev/md1
e2fsck 1.41.14 (22-Dec-2010)
fsck.ext4: Superblock invalid, trying backup blocks...
fsck.ext4: Bad magic number in super-block while trying to open /dev/md1

The superblock could not be read or does not describe a correct ext2
filesystem.  If the device is valid and it really contains an ext2
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
    e2fsck -b 8193 <device>
root@test:~# mdadm --stop /dev/md1
mdadm: stopped /dev/md1

রায়?

root@test:~# mdadm --misc --zero-superblock /dev/sdb1 /dev/sdc1 /dev/sdd1
root@test:~# mdadm --create /dev/md1 --chunk=512 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
root@test:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid5 sdd1[3] sdc1[1] sdb1[0]
      203776 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>

root@test:~# fsck.ext4 /dev/md1
e2fsck 1.41.14 (22-Dec-2010)
/dev/md1: clean, 13/51000 files, 17085/203776 blocks
root@test:~# mount /dev/md1 /mnt/raid5/
root@test:~# cat /mnt/raid5/datafile
data
root@test:~# sha1sum /mnt/raid5/randomdata
847685a5d42524e5b1d5484452a649e854b59064  /mnt/raid5/randomdata

কি দারুন.

সুতরাং, দেখে মনে হচ্ছে যে এগুলির কোনওটিই কোনওভাবেই ডেটা ক্ষতিগ্রস্থ করে না। এই ফলাফলটি দেখে আমি বেশ অবাক হয়েছিলাম, অকপটে; আমি শঙ্কিত আকারের পরিবর্তনের উপর ডেটা ক্ষতির মাঝারি সমস্যা এবং লেআউট পরিবর্তনের বিষয়ে কিছু সুনির্দিষ্ট ক্ষতির প্রত্যাশা করেছি। আমি আজ কিছু শিখেছি।


তো .. আমি কীভাবে আমার ডেটা পাব ??

পুরানো সিস্টেম সম্পর্কে আপনার যতটা তথ্য আপনার পক্ষে চূড়ান্ত সহায়ক। আপনি যদি ফাইল সিস্টেমের ধরণটি জানেন তবে /proc/mdstatড্রাইভ ক্রম, অ্যালগরিদম, খণ্ড আকার এবং মেটাডেটা সংস্করণ সম্পর্কিত তথ্য সহ আপনার যদি কোনও পুরানো কপি থাকে । আপনার কি এমডডেমের ইমেল সতর্কতা সেট আপ আছে? যদি তা হয় তবে কোনও পুরানো সন্ধান করুন; যদি না, চেক /var/spool/mail/root~/.bash_historyআপনার আসল বিল্ডটি সেখানে রয়েছে কিনা তা পরীক্ষা করে দেখুন।

সুতরাং, আপনার করণীয়গুলির তালিকা:

  1. ddকিছু করার আগে ডিস্কগুলির ব্যাকআপ দিন !!
  2. fsckবর্তমান, সক্রিয় এমডিতে চেষ্টা করুন - আপনি ঠিক আগের মতো একই ক্রমে তৈরি হতে পারে। আপনি যদি ফাইল সিস্টেমের প্রকারটি জানেন তবে এটি সহায়ক; যে নির্দিষ্ট fsckসরঞ্জাম ব্যবহার করুন । যদি কোনও সরঞ্জাম কোনও কিছু ঠিক করার প্রস্তাব দেয়, তবে আপনি নিশ্চিত হন যে তারা আসলেই কার্যকর ফাইল সিস্টেমটি খুঁজে পেয়েছে! যদি আপনার জন্য কোনও fsckকিছু ঠিক করার প্রস্তাব দেওয়া হয় তবে এটি আসলে সহায়তা করছে বা কেবল ডেটা নাক করে দিচ্ছে কিনা তা জানতে কোনও মন্তব্য করতে দ্বিধা করবেন না।
  3. বিভিন্ন পরামিতি দিয়ে অ্যারে তৈরি করার চেষ্টা করুন। আপনার যদি কোনও পুরানো থাকে /proc/mdstatতবে আপনি যা দেখায় তা কেবল নকল করতে পারেন; যদি তা না হয়, তবে আপনি অন্ধকারে রয়েছেন - বিভিন্ন ড্রাইভের আদেশের সব চেষ্টা করা যুক্তিসঙ্গত, তবে প্রতিটি সম্ভাব্য অর্ডারের সাথে প্রতিটি সম্ভাব্য আকার পরীক্ষা করা ব্যর্থ f প্রত্যেকের জন্য, fsckএটি প্রতিশ্রুতিবদ্ধ কিছু পান কিনা তা দেখার জন্য।

সুতরাং, যে। উপন্যাসটির জন্য দুঃখিত, আপনার যদি কোনও প্রশ্ন থাকে তবে নির্দ্বিধায় মন্তব্য করুন, এবং শুভকামনা!

পাদটীকা: 22 হাজার অক্ষরের কম; দৈর্ঘ্যের সীমা 8k + লজ্জা


8
এটি একটি আশ্চর্যজনক উত্তর।
এন্টোইন বেনেকমুন

3
আমি কী বলব জানি না ... ব্রাভো !!! শান ম্যাডেনের কাছে কুডোস। আমি ডিস্কগুলি ব্যাকআপ করতে যাচ্ছি এবং আপনার পরামর্শগুলি দিয়ে শুরু করব। ধন্যবাদ, আসলেই কোন বড় ধন্যবাদ !!!
ব্রিগেডিয়ার

3
আমি শুধু ... বাহ! উজ্জ্বল উত্তর। আমি মনে করি 30,000 চরিত্রের সীমাটি ভাঙার একমাত্র উত্তর হ'ল ইভান অ্যান্ডারসন "কীভাবে সাবনেটিং কাজ করে" প্রবন্ধটি।
সমাধি 89

3
আমি যতটা উদ্বিগ্ন এসএফ-তে সেরা উত্তর।
চপার 3

14
আপনি স্যার, ইন্টারনেট জিতুন।
মার্ক হেন্ডারসন

5

আপনি যদি ভাগ্যবান হন তবে আপনার ফাইলগুলি পুনরুদ্ধার সফ্টওয়্যার দিয়ে ফিরে পেয়ে কিছুটা সাফল্য পেতে পারে যা ভাঙা RAID-5 অ্যারে পড়তে পারে। জিরো অ্যাসম্পশন রিকভারিটি হ'ল আমি এর আগে সাফল্য পেয়েছি।

তবে, আমি নিশ্চিত নন যে নতুন অ্যারে তৈরির প্রক্রিয়াটি সমস্ত ডেটা ধ্বংস করে ফেলেছে, তাই এটি শেষ সুযোগের প্রচেষ্টা হতে পারে।


অনেক অনেক ধন্যবাদ। আমি একবার চেষ্টা করবো। আপনি কি জানেন যে এটি ড্রাইভগুলি সংশোধন করে? যদি তাই হয় তবে আমি একটি ডিস্ক অনুলিপি তৈরি করব এবং অন্যান্য সরঞ্জামগুলি দিয়ে চেষ্টা করব।
ব্রিগেডিয়ার

@ ব্রিগেডিয়ারেন - না, দুঃখিত, RAID5 কীভাবে কাজ করে তার জটিলতার সাথে আমি যথেষ্ট পরিচিত নই।
মার্ক হেন্ডারসন

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

সিঙ্কটি কী কারণে ঘটেছিল তা আমি ঠিক নিশ্চিত নই - এরিটি প্রথম স্থানে (বিদ্যুৎ বিভ্রাটের কারণে) অবনমিত হয়েছিল বা অন্য কিছু? আমি ভাবছি যে এমডিএডএম - ক্রিয়েট যদি মূলত দেওয়া থেকে আলাদাভাবে ড্রাইভের অর্ডার নির্দিষ্ট করে দেয় কিনা তা কোনও পার্থক্য করে?
ব্রিগেডিয়ার

@ ব্রিগেডিয়ার সিঙ্ক সর্বদা তৈরিতে ঘটে।
শেন ম্যাডেন

5

আমার অনুরূপ সমস্যা ছিল:
একটি সফ্টওয়্যার RAID5 অ্যারের ব্যর্থতার পরে আমি mdadm --createএটি না দিয়েই বরখাস্ত করেছি --assume-clean, এবং আর অ্যারে মাউন্ট করতে পারছি না। দুই সপ্তাহ খননের পরে অবশেষে সমস্ত ডেটা পুনরুদ্ধার করেছি। আমি আশা করি নীচের পদ্ধতিটি কারও সময় সাশ্রয় করবে।

দীর্ঘ সংক্ষিপ্ত বিবরণ

সমস্যাটি mdadm --createএকটি নতুন অ্যারে তৈরি করে যা দুটি দিক থেকে মূল থেকে আলাদা ছিল:

  • পার্টিশনের বিভিন্ন ক্রম
  • বিভিন্ন RAID তথ্য অফসেট

যেমনটি শেন ম্যাডেনের উজ্জ্বল উত্তরে প্রদর্শিত হয়েছে , mdadm --createবেশিরভাগ ক্ষেত্রে ডেটা ধ্বংস করে না! পার্টিশন অর্ডার এবং ডেটা অফসেট সন্ধানের পরে আমি অ্যারে পুনরুদ্ধার করতে এবং এটি থেকে সমস্ত ডেটা বের করতে পারতাম।

পূর্বশর্ত

আমার কাছে RAID সুপারব্লকগুলির কোনও ব্যাকআপ নেই, তাই আমি কেবলমাত্র জানতাম যে এটি ছিল জুবুন্টু 12.04.0 ইনস্টল করার সময় 8 পার্টিশনের একটি RAID5 অ্যারে। এটিতে একটি ext4 ফাইল সিস্টেম ছিল। আর একটি গুরুত্বপূর্ণ জ্ঞানের অংশ ছিল একটি ফাইলের অনুলিপি যা RAID অ্যারেতেও সংরক্ষণ করা হয়েছিল।

সরঞ্জামসমূহ

Xubuntu 12.04.1 লাইভ সিডি সমস্ত কাজ করার জন্য ব্যবহৃত হয়েছিল। আপনার পরিস্থিতির উপর নির্ভর করে আপনার নিম্নলিখিত কয়েকটি সরঞ্জামের প্রয়োজন হতে পারে:

এমডিএডএম এর সংস্করণ যা ডেটা অফসেট নির্দিষ্ট করতে দেয়

sudo apt-get install binutils-dev git
git clone -b data_offset git://neil.brown.name/mdadm
cd mdadm
make

bgrep - বাইনারি ডেটা অনুসন্ধান করা

curl -L 'https://github.com/tmbinc/bgrep/raw/master/bgrep.c' | gcc -O2 -x c -o bgrep -

hexdump, e2fsck, মাউন্ট এবং একটি হেক্সাডেসিমাল ক্যালকুলেটর - রেপোস থেকে মানক সরঞ্জাম

ফুল ব্যাকআপ দিয়ে শুরু করুন

ডিভাইস ফাইলগুলির নামকরণ, /dev/sda2 /dev/sdb2ইত্যাদি ইত্যাদি স্থির নয়, তাই আপনার ড্রাইভের দেওয়া সিরিয়াল নম্বরগুলি লিখে দেওয়া ভাল

sudo hdparm -I /dev/sda

তারপরে একটি বাহ্যিক এইচডিডি হুক করুন এবং আপনার রেড অ্যারের প্রতিটি পার্টিশনকে এভাবে ব্যাক আপ করুন:

sudo dd if=/dev/sda2 bs=4M | gzip > serial-number.gz

আসল RAID5 লেআউট নির্ধারণ করুন

বিভিন্ন লেআউটগুলি এখানে বর্ণিত হয়েছে: http://www.accs.com/p_and_p/RAID/LinuxRAID.html
মূল অ্যারেতে কীভাবে ডেটার স্ট্রিপগুলি সংগঠিত হয়েছিল তা জানতে, আপনার জানা একটি র্যান্ডম-লুকিং ফাইলের একটি অনুলিপি প্রয়োজন অ্যারেতে সঞ্চিত বর্তমানে ব্যবহৃত ডিফল্ট mdadmঅংশটি 512KB K এন পার্টিশনের একটি অ্যারের জন্য আপনার কমপক্ষে আকারের একটি ফাইলের প্রয়োজন (N + 1) * 512KB। একটি জেপিগ বা ভিডিও ভাল কারণ এটি বাইনারি ডেটার তুলনামূলকভাবে অনন্য সাবস্ট্রিং সরবরাহ করে। ধরা যাক আমাদের ফাইল ডেকে আনা হয়েছে picture.jpg। আমরা এন কে 1 পজিশনে ৩২ বাইট ডেটা 100 কেকে শুরু করে এবং 512 কে বাড়িয়ে দিচ্ছি:

hexdump -n32 -s100k -v -e '/1 "%02X"' picture.jpg ; echo
DA1DC4D616B1C71079624CDC36E3D40E7B1CFF00857C663687B6C4464D6C77D2
hexdump -n32 -s612k -v -e '/1 "%02X"' picture.jpg ; echo
AB9DDDBBB05CA915EE2289E59A116B02A26C82C8A8033DD8FA6D06A84B6501B7
hexdump -n32 -s1124k -v -e '/1 "%02X"' picture.jpg ; echo
BC31A8DC791ACDA4FA3E9D3406D5639619576AEE2E08C03C9EF5E23F0A7C5CBA
...

তারপরে আমরা আমাদের সমস্ত কাঁচা পার্টিশনের উপর এই সমস্ত বাইটস্ট্রিংয়ের উপস্থিতিগুলি অনুসন্ধান করি, সুতরাং মোট (এন + 1) * এন কমান্ড, এর মতো:

sudo ./bgrep DA1DC4D616B1C71079624CDC36E3D40E7B1CFF00857C663687B6C4464D6C77D2 /dev/sda2
sudo ./bgrep DA1DC4D616B1C71079624CDC36E3D40E7B1CFF00857C663687B6C4464D6C77D2 /dev/sdb2
...
sudo ./bgrep DA1DC4D616B1C71079624CDC36E3D40E7B1CFF00857C663687B6C4464D6C77D2 /dev/sdh2
/dev/sdh2: 52a7ff000
sudo ./bgrep AB9DDDBBB05CA915EE2289E59A116B02A26C82C8A8033DD8FA6D06A84B6501B7 /dev/sda2
/dev/sdb2: 52a87f000
...

এই কমান্ডগুলি বিভিন্ন ডিস্কের জন্য সমান্তরালভাবে চালানো যেতে পারে। 38 জিবি পার্টিশনের স্ক্যানটি প্রায় 12 মিনিট সময় নেয়। আমার ক্ষেত্রে, প্রতি 32-বাইট স্ট্রিংটি কেবলমাত্র আটটি ড্রাইভের মধ্যে পাওয়া গেছে। বিগ্রিপ দ্বারা ফিরে আসা অফসেটের তুলনা করে আপনি এর মতো একটি ছবি পেয়েছেন:

| offset \ partition | b | d | c | e | f | g | a | h |
|--------------------+---+---+---+---+---+---+---+---|
| 52a7ff000          | P |   |   |   |   |   |   | 1 |
| 52a87f000          | 2 | 3 | 4 | 5 | 6 | 7 | 8 | P |
| 52a8ff000          |   |   |   |   |   |   | P | 9 |

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

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

আসল খণ্ডের আকারটি সন্ধান করুন

আমরা picture.jpgএকে অপরের থেকে বিভিন্ন বিরতিতে 32 বাইট ডেটা পড়তে একই ফাইলটি ব্যবহার করি । আমরা উপরে থেকে জানি যে অফসেট 100 কে-তে ডেটা রয়েছে /dev/sdh2, অফসেট 612k এ রয়েছে /dev/sdb2, এবং 1124k এ রয়েছে /dev/sdd2। এটি দেখায় যে খণ্ডের আকার 512KB এর চেয়ে বড় নয়। আমরা যাচাই করেছি যে এটি 512KB এর চেয়ে ছোট নয়। এর জন্য আমরা 356 কে অফসেটে বাইস্টেরিংটি ফেলে ফেলি এবং এটি কোন পার্টিশনে বসে তা দেখুন:

hexdump -n32 -s356k -v -e '/1 "%02X"' P1080801.JPG ; echo
7EC528AD0A8D3E485AE450F88E56D6AEB948FED7E679B04091B031705B6AFA7A
sudo ./bgrep 7EC528AD0A8D3E485AE450F88E56D6AEB948FED7E679B04091B031705B6AFA7A /dev/sdb2
/dev/sdb2: 52a83f000

এটি অফসেট 612 কে হিসাবে একই পার্টিশনে রয়েছে যা ইঙ্গিত করে যে খণ্ডের আকার 256KB নয়। আমরা অনুরূপ ফ্যাশনে ছোট খণ্ড আকারগুলি অপসারণ করি। আমি 512KB খণ্ডগুলি একমাত্র সম্ভাবনা হিসাবে শেষ করেছি।

লেআউটে প্রথম পার্টিশন সন্ধান করুন

এখন আমরা পার্টিশনের ক্রম জানি, কিন্তু কোন পার্টিশনটি প্রথম হওয়া উচিত এবং কোন RAID ডেটা অফসেট ব্যবহার করা হয়েছিল তা আমরা জানি না। এই দুটি অজ্ঞাত সন্ধানের জন্য, আমরা সঠিক খণ্ড লেআউট এবং একটি ছোট ডেটা অফসেট সহ একটি RAID5 অ্যারে তৈরি করব এবং এই নতুন অ্যারেতে আমাদের ফাইল সিস্টেমের সূচনাটি অনুসন্ধান করব।

শুরুতে, আমরা পার্টিশনের সঠিক ক্রম সহ একটি অ্যারে তৈরি করি, যা আমরা আগে পেয়েছি:

sudo mdadm --stop /dev/md126
sudo mdadm --create /dev/md126 --assume-clean --raid-devices=8 --level=5  /dev/sdb2 /dev/sdd2 /dev/sdc2 /dev/sde2 /dev/sdf2 /dev/sdg2 /dev/sda2 /dev/sdh2

আমরা যাচাই করে আদেশটি মানা হয় তা যাচাই করি

sudo mdadm --misc -D /dev/md126
...
Number   Major   Minor   RaidDevice State
   0       8       18        0      active sync   /dev/sdb2
   1       8       50        1      active sync   /dev/sdd2
   2       8       34        2      active sync   /dev/sdc2
   3       8       66        3      active sync   /dev/sde2
   4       8       82        4      active sync   /dev/sdf2
   5       8       98        5      active sync   /dev/sdg2
   6       8        2        6      active sync   /dev/sda2
   7       8      114        7      active sync   /dev/sdh2

এখন আমরা রেড অ্যারেতে N + 1 পরিচিত বাইটস্ট্রিংগুলি অফসেটগুলি নির্ধারণ করি। আমি একটি রাতের জন্য স্ক্রিপ্ট চালাই (লাইভ সিডি সুডোতে পাসওয়ার্ড চাইবে না :):

#!/bin/bash
echo "1st:"
sudo ./bgrep DA1DC4D616B1C71079624CDC36E3D40E7B1CFF00857C663687B6C4464D6C77D2 /dev/md126
echo "2nd:"
sudo ./bgrep AB9DDDBBB05CA915EE2289E59A116B02A26C82C8A8033DD8FA6D06A84B6501B7 /dev/md126
echo "3rd:"
sudo ./bgrep BC31A8DC791ACDA4FA3E9D3406D5639619576AEE2E08C03C9EF5E23F0A7C5CBA /dev/md126
...
echo "9th:"
sudo ./bgrep 99B5A96F21BB74D4A630C519B463954EC096E062B0F5E325FE8D731C6D1B4D37 /dev/md126

মন্তব্য সহ ফলাফল:

1st:
/dev/md126: 2428fff000 # 1st
2nd:
/dev/md126: 242947f000 # 480000 after 1st
3rd:                   # 3rd not found
4th:
/dev/md126: 242917f000 # 180000 after 1st
5th:
/dev/md126: 24291ff000 # 200000 after 1st
6th:
/dev/md126: 242927f000 # 280000 after 1st
7th:
/dev/md126: 24292ff000 # 300000 after 1st
8th:
/dev/md126: 242937f000 # 380000 after 1st
9th:
/dev/md126: 24297ff000 # 800000 after 1st

এই তথ্যের ভিত্তিতে আমরা দেখতে পাচ্ছি যে 3 য় স্ট্রিংটি পাওয়া যায় নি। এর অর্থ /dev/sdd2হ'ল অংশটি সমতার জন্য ব্যবহৃত হয়। নতুন অ্যারেতে প্যারিটি পজিশনের একটি চিত্র এখানে দেওয়া হয়েছে:

| offset \ partition | b | d | c | e | f | g | a | h |
|--------------------+---+---+---+---+---+---+---+---|
| 52a7ff000          |   |   | P |   |   |   |   | 1 |
| 52a87f000          | 2 | P | 4 | 5 | 6 | 7 | 8 |   |
| 52a8ff000          | P |   |   |   |   |   |   | 9 |

প্যারিটি খণ্ডগুলি সঠিক জায়গায় স্থানান্তর করার জন্য আমাদের লক্ষ্যটি কোন পার্টিশনটি অ্যারে থেকে শুরু করবেন তা অনুমান করা। যেহেতু প্যারিটি দুটি অংশকে বামে স্থানান্তরিত করা উচিত, তাই পার্টিশন ক্রমটি দুটি ধাপে ডানদিকে সরানো উচিত। সুতরাং এই ডেটা অফসেটের জন্য সঠিক লেআউটটি হ'ল ahbdcefg:

sudo mdadm --stop /dev/md126
sudo mdadm --create /dev/md126 --assume-clean --raid-devices=8 --level=5  /dev/sda2 /dev/sdh2 /dev/sdb2 /dev/sdd2 /dev/sdc2 /dev/sde2 /dev/sdf2 /dev/sdg2 

এই মুহুর্তে আমাদের RAID অ্যারেটিতে সঠিক ফর্মের ডেটা রয়েছে। আপনি ভাগ্যবান হতে পারেন যাতে RAID ডেটা অফসেটটি মূল অ্যারের মতোই হয় এবং তারপরে আপনি সম্ভবত পার্টিশনটি মাউন্ট করতে সক্ষম হন। দুর্ভাগ্যক্রমে এটি আমার ক্ষেত্রে ছিল না।

ডেটা ধারাবাহিকতা যাচাই করুন

picture.jpgঅ্যারে থেকে একটি অনুলিপি বের করে আমরা যাচাই করেছি যে ডেটা খণ্ডগুলির একটি স্ট্রিপের উপরে সামঞ্জস্যপূর্ণ । এর জন্য আমরা ৩২-বাইট স্ট্রিংয়ের জন্য অফসেটটি 100k এ সনাক্ত করি:

sudo ./bgrep DA1DC4D616B1C71079624CDC36E3D40E7B1CFF00857C663687B6C4464D6C77D2 /dev/md126

তারপরে আমরা ফলাফল থেকে 100 * 1024 বিয়োগ করি এবং এর skip=জন্য প্যারামিটারে প্রাপ্ত দশমিক মান ব্যবহার করি ddcount=আকার picture.jpgবাইটে:

sudo dd if=/dev/md126 of=./extract.jpg bs=1 skip=155311300608 count=4536208

যে extract.jpgহিসাবে একই picture.jpg

RAID ডেটা অফসেট সন্ধান করুন

একটি সিডনোট: mdadmসংস্করণ 3.2.3-র জন্য অফসেটের ডিফল্ট ডেটা 2048 সেক্টর। তবে সময়ের সাথে সাথে এই মানটি পরিবর্তন করা হয়েছে। যদি মূল অ্যারেটি আপনার বর্তমানের তুলনায় একটি ছোট ডেটা অফসেট ব্যবহার করেmdadm , তবে ফাইল সিস্টেমের শুরুটি ওভাররাইট mdadm --createছাড়াই --assume-cleanকরতে পারে।

পূর্ববর্তী বিভাগে আমরা একটি RAID অ্যারে তৈরি করেছি। স্বতন্ত্র পার্টিশনের কিছু জারি করে কোন RAID ডেটা অফসেট করেছে তা যাচাই করুন:

sudo mdadm --examine /dev/sdb2
...
    Data Offset : 2048 sectors
...

2048 512-বাইট সেক্টর 1MB। যেহেতু খণ্ডের আকার 512KB, বর্তমান ডেটা অফসেটটি দুটি খণ্ড।

যদি এই মুহুর্তে আপনার একটি দ্বি-খণ্ড অফসেট থাকে তবে এটি সম্ভবত যথেষ্ট ছোট এবং আপনি এই অনুচ্ছেদটি এড়িয়ে যেতে পারেন।
আমরা একটি 512KB-हिस्सा অফসেট সহ একটি RAID5 অ্যারে তৈরি করি। এর আগে একটি অংশ শুরু করা সমতাটি বাম দিকে এক ধাপ স্থানান্তর করে, এইভাবে আমরা পার্টিশন ক্রমটি বাম দিকে এক ধাপ স্থানান্তর করে ক্ষতিপূরণ করি। সুতরাং অফসেট 512KB ডেটার জন্য, সঠিক লেআউটটি hbdcefga। আমরা mdadmঅফসেট ডেটা সমর্থন করে এমন একটি সংস্করণ ব্যবহার করি (সরঞ্জাম বিভাগ দেখুন)। এটি কিলোবাইটে অফসেট নেয়:

sudo mdadm --stop /dev/md126
sudo ./mdadm --create /dev/md126 --assume-clean --raid-devices=8 --level=5  /dev/sdh2:512 /dev/sdb2:512 /dev/sdd2:512 /dev/sdc2:512 /dev/sde2:512 /dev/sdf2:512 /dev/sdg2:512 /dev/sda2:512

এখন আমরা একটি বৈধ ext4 সুপারব্লক অনুসন্ধান করি। Superblock- র গঠন এখানে পাওয়া যাবে: https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout#The_Super_Block
আমরা যাদু সংখ্যা occurences জন্য অ্যারের শুরুতে স্ক্যান s_magicদ্বারা অনুসরণ s_stateএবং s_errors। দেখার জন্য বাইটস্ট্রিংগুলি হ'ল:

53EF01000100
53EF00000100
53EF02000100
53EF01000200
53EF02000200

উদাহরণ কমান্ড:

sudo ./bgrep 53EF01000100 /dev/md126
/dev/md126: 0dc80438

ম্যাজিক নম্বরটি 0x38 বাইটগুলি সুপারব্লকের মধ্যে শুরু করে, তাই আমরা অফসেট গণনা করতে এবং পুরো সুপারব্লকটি পরীক্ষা করতে 0x38 বিয়োগ করি:

sudo hexdump -n84 -s0xDC80400 -v /dev/md126
dc80400 2000 00fe 1480 03f8 cdd3 0032 d2b2 0119
dc80410 ab16 00f7 0000 0000 0002 0000 0002 0000
dc80420 8000 0000 8000 0000 2000 0000 b363 51bd
dc80430 e406 5170 010d ffff ef53 0001 0001 0000
dc80440 3d3a 50af 0000 0000 0000 0000 0001 0000
dc80450 0000 0000                              

এটি একটি বৈধ সুপারব্লক বলে মনে হচ্ছে। s_log_block_size0x18 এ ক্ষেত্রটি 0002, এর অর্থ হ'ল ব্লকের আকার 2 ^ (10 + 2) = 4096 বাইট।s_blocks_count_lo0x4 এ 03f81480 ব্লক যা 254 জিবি। ভাল লাগছে।

এর অনুলিপিগুলি খুঁজে পাওয়ার জন্য আমরা এখন সুপারব্লকের প্রথম বাইটগুলির উপস্থিতিগুলির জন্য স্ক্যান করি হেক্সডাম্প আউটপুটটির তুলনায় বাইট উল্টানো নোট করুন:

sudo ./bgrep 0020fe008014f803d3cd3200 /dev/md126
/dev/md126: 0dc80400    # offset by 1024 bytes from the start of the FS        
/dev/md126: 15c80000    # 32768 blocks from FS start
/dev/md126: 25c80000    # 98304
/dev/md126: 35c80000    # 163840
/dev/md126: 45c80000    # 229376
/dev/md126: 55c80000    # 294912
/dev/md126: d5c80000    # 819200
/dev/md126: e5c80000    # 884736
/dev/md126: 195c80000
/dev/md126: 295c80000

এটি ব্যাকআপ সুপারব্লকের প্রত্যাশিত অবস্থানগুলির সাথে পুরোপুরি সারিবদ্ধ:

sudo mke2fs -n /dev/md126
...
Block size=4096 (log=2)
...
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000, 7962624, 11239424, 20480000, 23887872

সুতরাং ফাইল সিস্টেমটি 0xdc80000 অফসেটে পার্টিশন থেকে 225792KB অফসেটে শুরু হয়। যেহেতু আমাদের 8 টি পার্টিশন রয়েছে যার একটি সমতুল্য, তাই আমরা অফসেটটি 7 দ্বারা ভাগ করি This এটি প্রতিটি বিভাজনে 33030144 বাইট অফসেট দেয় যা হুবহু RA৩ RAID খণ্ড। এবং যেহেতু বর্তমান RAID ডেটা অফসেটটি এক অংশ, আমরা উপসংহারে পৌঁছেছি যে মূল ডেটা অফসেটটি ছিল 64 টি বা 32768KB। hbdcefgaডানদিকে 63 বার স্থানান্তর লেআউট দেয়bdcefgah

আমরা শেষ পর্যন্ত সঠিক RAID অ্যারে তৈরি করি:

sudo mdadm --stop /dev/md126
sudo ./mdadm --create /dev/md126 --assume-clean --raid-devices=8 --level=5  /dev/sdb2:32768 /dev/sdd2:32768 /dev/sdc2:32768 /dev/sde2:32768 /dev/sdf2:32768 /dev/sdg2:32768 /dev/sda2:32768 /dev/sdh2:32768
sudo fsck.ext4 -n /dev/md126
e2fsck 1.42 (29-Nov-2011)
Warning: skipping journal recovery because doing a read-only filesystem check.
/dev/md126: clean, 423146/16654336 files, 48120270/66589824 blocks
sudo mount -t ext4 -r /dev/md126 /home/xubuntu/mp

ভাল খবর!


দুর্দান্ত ওয়াকথ্রু একটি নোট - 53EF00000100 এটি EXT4 শিরোলেখের জন্য একটি বৈধ অ্যাঙ্কর বলে মনে হচ্ছে না। Ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout এর মতে # 53EF এর পরে দুটি বাইট কেবল 0100, 0200 বা 0400 হতে পারে
ম্যাট

0

আমারও একি দশা. আমি ওবুন্টু 12.04 এর একটি পরিষ্কার ইনস্টল করে আমার ওএস / বুট ড্রাইভটি ফর্ম্যাট করে পুনরায় ইনস্টল করেছি, তারপরে এমডিএডএম - ক্রিয়েট ... কমান্ডটি চালিয়েছি এবং এটি মাউন্ট করতে পারিনি।

এটি বলেছে এটির কোনও বৈধ সুপারব্লক বা বিভাজন নেই।

তদ্ব্যতীত, আমি যখন এমডিএডএম অভিযান বন্ধ করেছি, তখন আমি আর নিয়মিত ডিভাইসটি মাউন্ট করতে পারতাম না।

আমি mke2fs এবং e2fsck দিয়ে সুপারব্লকটি মেরামত করতে সক্ষম হয়েছি:

root@blackbox:~# mke2fs -n /dev/sdc1
mke2fs 1.42 (29-Nov-2011)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
91578368 inodes, 366284000 blocks
18314200 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
11179 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
  32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
  4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
  102400000, 214990848

তারপরে দৌড়ে:

e2fsck -b 32768 -y /dev/sdc1

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

সুপারব্লক বা পার্টিশনগুলি যে বিল্ডটি ব্যবহার করেছি তা বিনষ্ট না করে অ্যারের কাজ করার জন্য:

mdadm --build /dev/md0 --level=mirror --assume-clean --raid-devices=2  /dev/sdc1 missing 

ডেটা যাচাই করার পরে, আমি অন্য ড্রাইভটি যুক্ত করব:

mdadm --add /dev/md0 /sdd1

0

আমি কেবল আগে দেওয়া কিছু তথ্য আপডেট করছি। আমার মাদারবোর্ডটি মারা যাওয়ার পরে আমার কাছে 3-ডিস্কের রাইড 5 অ্যারে ঠিক আছে। অ্যারে / dev / md2 কে / হোম পার্টিশন 1.2TB এবং / dev / md3 কে / var পার্টিশন 300GB হিসাবে ধরেছিল held

আমার কাছে "গুরুত্বপূর্ণ" জিনিসগুলির দুটি ব্যাকআপ ছিল এবং ইন্টারনেটের বিভিন্ন অংশ থেকে আমি ধরেছিলাম এমন কিছু এলোমেলো জিনিস যা আমার সত্যিকার অর্থেই বাছাই করা উচিত ছিল se বেশিরভাগ ব্যাকআপগুলি 25 ডিগ্রি বা তারও কম ফাইলের ডায়ার.gz ফাইলগুলিতে বিভক্ত ছিল এবং / ইত্যাদির একটি পৃথক অনুলিপিও ব্যাক আপ করা হয়েছিল।

বাকী ফাইলসিস্টেমটি 38 গিগাবাইটের দুটি ছোট রাইড0 ডিস্কে রাখা হয়েছিল।

আমার নতুন মেশিনটি পুরানো হার্ডওয়্যারের মতো ছিল এবং আমি পাঁচটি ডিস্ক প্লাগ ইন করে এবং পুরানো জেনেরিক কার্নেলটি নির্বাচন করে মেশিনটি উঠে এসে চালিত করেছি। সুতরাং ক্লিন ফাইল সিস্টেমগুলির সাথে আমার পাঁচটি ডিস্ক ছিল, যদিও আমি নিশ্চিত হতে পারি না যে ডিস্কগুলি সঠিক ক্রমে ছিল এবং প্রয়োজনের সময় আমি মেশিনটি আপগ্রেড করতে পারি এবং অন্যটি বাছাই করার জন্য ডিবিয়ান জেসির একটি নতুন সংস্করণ ইনস্টল করা দরকার needed সমস্যা।

দুটি রাইড0 ডিস্কে নতুন জেনেরিক সিস্টেম ইনস্টল করার সাথে সাথে আমি অ্যারেগুলি আবার একসাথে রাখতে শুরু করি। আমি নিশ্চিত হতে চেয়েছিলাম যে আমার কাছে সঠিক ক্রমে ডিস্ক রয়েছে। আমার যা করা উচিত ছিল তা ইস্যু করা:

mdadm --assemble /dev/md3 -o --no-degraded --uuid=82164ae7:9af3c5f1:f75f70a5:ba2a159a

কিন্তু আমি তা করিনি। দেখে মনে হচ্ছে m دادm বেশ স্মার্ট এবং একটি ইউইউডি দেওয়া হয়েছে, কোন ড্রাইভগুলি কোথায় গেছে তা নির্ধারণ করতে পারে। এমনকি বায়োস / ডিএডি / এসডিসি / এসডিএ হিসাবে মনোনীত করলেও এমডিএমডিএম এটি সঠিকভাবে একসাথে রাখবে (যদিও ওয়াইএমএমভি)।

পরিবর্তে আমি জারি করেছি: mdadm --create /dev/md2 without the --assume-cleanএবং / dev / sde1 এ পুনরায় সংযোগটি সম্পূর্ণ করার অনুমতি দিয়েছি। পরবর্তী ত্রুটিটি আমি করেছি / dev / md2, / sde1 এ শেষ ড্রাইভের পরিবর্তে / dev / sdc1 এ কাজ করা। যে কোনও সময় এমডিএডিএম মনে করে যে এখানে কোনও সমস্যা আছে এটি শেষ ড্রাইভ যা লাথি মেরে ফেলে বা পুনরায় সিঙ্ক হয়।

এর পরে, mddm কোনও সুপারব্লক খুঁজে পেল না, এবং e2fsck -n হয়ও না।

আমি এই পৃষ্ঠাটি সন্ধান করার পরে, ড্রাইভের ক্রমটি সন্ধান করার পদ্ধতিটি পেরিয়ে গিয়েছি (সম্পন্ন হয়েছে), বৈধ ডেটা (9MB ফাইলের 6MB যাচাই করা হয়েছে) পরীক্ষা করলাম, ডিক্সগুলি ডান অনুক্রমের মধ্যে পেয়েছি, সিডি পেয়েছে, ইউইউডিগুলি ধরেছে / এমডি 2 এবং / এমডি 3 পুরানো /etc/m دادm.conf থেকে এবং একত্র করার চেষ্টা করেছেন।

ভাল, /dev/md3শুরু হয়েছে এবং mdadm --misc -D /dev/md3তিনটি স্বাস্থ্যকর পার্টিশন এবং ডিস্কগুলি সঠিক ক্রমে দেখিয়েছে। /dev/md2আমি ফাইল সিস্টেমটি মাউন্ট করার চেষ্টা না করা অবধি ভাল লাগছিল।

# mdadm --create /dev/md2 --raid-devices=3 --level=5 --uuid=c0a644c7:e5bcf758:ecfbc8f3:ee0392b7 /dev/sdc1 /dev/sdd1 /dev/sde1
mdadm: /dev/sdc1 appears to be part of a raid array:
       level=raid5 devices=3 ctime=Wed Feb  3 14:05:36 2016
mdadm: /dev/sdd1 appears to contain an ext2fs file system
       size=585936896K  mtime=Thu Jan  1 01:00:00 1970
mdadm: /dev/sdd1 appears to be part of a raid array:
       level=raid5 devices=3 ctime=Wed Feb  3 14:05:36 2016
mdadm: /dev/sde1 appears to contain an ext2fs file system
       size=585936896K  mtime=Thu Jan  1 01:00:00 1970
mdadm: /dev/sde1 appears to be part of a raid array:
       level=raid5 devices=3 ctime=Wed Feb  3 14:05:36 2016
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md2 started.

ফাইল সিস্টেমটি মাউন্ট করা অস্বীকার করেছিল এবং e2fsck কোনও সুপারব্লক খুঁজে পেল না। তদ্ব্যতীত, উপরে বর্ণিত হিসাবে সুপারব্লকগুলি পরীক্ষা করার সময়, মোট আট নম্বর ৮৮০ 0076 or বা এ৮৮০767676 or বা 00 55০০ ১১7676 হিসাবে পাওয়া মোট ব্লক গণনাটি আমার এমডিএডিএম রিপোর্ট করেছে। এছাড়াও উপরের পোস্টগুলিতে "সুপারব্লকস" এর অবস্থানগুলির সাথে কোনও একত্র নেই।

আমি সমস্ত / var এর ব্যাক আপ রেখেছি এবং ডিস্কগুলি মুছতে প্রস্তুত। ঠিক / এমডি 2 মুছা সম্ভব হয়েছিল কিনা তা দেখার জন্য, (এই মুহুর্তে আমার কাছে হারাতে অন্য কিছুই ছিল না) আমি নিম্নলিখিতগুলি নিরস্ত করছি:

root@ced2:/home/richard# mdadm --create /dev/md2 --raid-devices=3 --level=5 --uuid=c0a644c7:e5bcf758:ecfbc8f3:ee0392b7 /dev/sdc1 /dev/sdd1 /dev/sde1
mdadm: /dev/sdc1 appears to be part of a raid array:
       level=raid5 devices=3 ctime=Wed Feb  3 14:05:36 2016
mdadm: /dev/sdd1 appears to contain an ext2fs file system
       size=585936896K  mtime=Thu Jan  1 01:00:00 1970
mdadm: /dev/sdd1 appears to be part of a raid array:
       level=raid5 devices=3 ctime=Wed Feb  3 14:05:36 2016
mdadm: /dev/sde1 appears to contain an ext2fs file system
       size=585936896K  mtime=Thu Jan  1 01:00:00 1970
mdadm: /dev/sde1 appears to be part of a raid array:
       level=raid5 devices=3 ctime=Wed Feb  3 14:05:36 2016
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md2 started.
# mkfs.ext3 /dev/md2
mke2fs 1.42.12 (29-Aug-2014)
Creating filesystem with 292902912 4k blocks and 73228288 inodes
Filesystem UUID: a54e252f-78db-4ebb-b7ca-7dcd2edf57a4
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
    102400000, 214990848

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done 


# hexdump -n84 -s0x00000400 -v /dev/md2
0000400 6000 045d 5800 1175 7799 00df 6ff0 112e
0000410 5ff5 045d 0000 0000 0002 0000 0002 0000
0000420 8000 0000 8000 0000 2000 0000 10d3 56b2
0000430 10d3 56b2 0002 ffff ef53 0001 0001 0000
0000440 0c42 56b2 0000 0000 0000 0000 0001 0000
0000450 0000 0000                              
0000454

#  ./bgrep 00605D0400587511 /dev/md2
/dev/md2: 00000400
/dev/md2: 08000000
/dev/md2: 18000000
/dev/md2: 28000000
/dev/md2: 38000000
/dev/md2: 48000000
/dev/md2: c8000000
/dev/md2: d8000000
/dev/md2: 188000000
/dev/md2: 288000000
/dev/md2: 3e8000000
/dev/md2: 798000000
/dev/md2: ab8000000
etc

ইউইডির পরিবর্তন বাদে সমস্ত কিছুই ঠিক আছে বলে মনে হয়েছিল। সুতরাং আরও কয়েকবার চেক করার পরে, আমি 600 গিগাবাইট ব্যাক আপ ডেটা / dev / md2 তে লিখেছি। তারপরে, আনমাউন্ট এবং ড্রাইভটি পুনরায় মাউন্ট করার চেষ্টা করেছে:

# mdadm --assemble /dev/md2 uuid=c0a644c7:e5bcf758:ecfbc8f3:ee0392b7
mdadm: cannot open device uuid=c0a644c7:e5bcf758:ecfbc8f3:ee0392b7: No such file or directory
mdadm: uuid=c0a644c7:e5bcf758:ecfbc8f3:ee0392b7 has no superblock - assembly aborted

তুমি কি আমার সাথে মজা করছো? ফাইলটিতে আমার 600 জিবি সম্পর্কে কি?

# mdadm --assemble /dev/md2 
mdadm: /dev/md2 not identified in config file.

আহ - সহজেই স্থির। /etc/m دادm.conf এ এক লাইন নিরবিচ্ছিন্ন

# mdadm --assemble /dev/md2 
mdadm: /dev/md2 has been started with 3 drives.

# e2fsck -n /dev/md2
e2fsck 1.42.12 (29-Aug-2014)
/dev/md2: clean, 731552/73228288 files, 182979586/292902912 blocks

কেয়াবাত্!

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