ตกลง - มีบางสิ่งที่ดักฟังฉันเกี่ยวกับปัญหาของคุณดังนั้นฉันจึงสั่งให้ VM ทำงานในลักษณะที่คาดว่าจะเกิดขึ้น ฉันจะไปที่สิ่งที่กำลังดักฉันในนาที; ก่อนอื่นให้ฉันพูดสิ่งนี้:
สำรองข้อมูลไดรฟ์เหล่านี้ก่อนที่จะพยายามทำสิ่งใด !!
คุณอาจได้รับความเสียหายเกินกว่าที่ resync ทำแล้ว คุณช่วยอธิบายสิ่งที่คุณหมายถึงเมื่อคุณพูดว่า:
ตามคำแนะนำฉันทำความสะอาดซุปเปอร์บล็อกและสร้างอาร์เรย์ใหม่อีกครั้งด้วยตัวเลือก - สมมติว่าสะอาด แต่ไม่มีโชคเลย
หากคุณขับรถmdadm --misc --zero-superblock
จากนั้นคุณควรจะปรับ
อย่างไรก็ตามพยายามไล่ดิสก์ใหม่และดึงภาพปัจจุบันของพวกเขาออกมาก่อนที่จะทำอะไรก็ได้ที่อาจจะเขียนลงดิสก์เหล่านี้อีก
dd if=/dev/sdd of=/path/to/store/sdd.img
ที่ถูกกล่าวว่า .. ดูเหมือนว่าข้อมูลที่เก็บไว้ในสิ่งเหล่านี้มีความยืดหยุ่นอย่างน่าตกใจที่จะ resyncs เอาแต่ใจ อ่านต่อมีความหวังและนี่อาจเป็นวันที่ฉันได้คำตอบยาวถึงขีด จำกัด
สถานการณ์กรณีที่ดีที่สุด
ฉันได้รวม VM เพื่อสร้างสถานการณ์ของคุณใหม่ ไดรฟ์มีขนาดเพียง 100 MB ดังนั้นฉันจะไม่รอตลอดไปในการซิงค์ซ้ำแต่ละครั้ง
สร้างอาเรย์เป็นค่าเริ่มต้นและเป็นไปได้ - ชิ้นส่วนขนาด 512k, รูปแบบซ้าย - สมมาตร, ดิสก์ตามลำดับตัวอักษร .. ไม่มีอะไรพิเศษ
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
และข้อมูลสุ่ม 5MB ที่มีการแฮช SHA1 นั้น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
ระบบไฟล์ที่สมบูรณ์แบบหลังจาก resync นั่นเป็นสิ่งที่ดี ตรวจสอบไฟล์ข้อมูลของเรา:
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 ทำงานโดยใช้ parity block ที่ปกป้องพื้นที่ที่มีขนาดเท่ากับบล็อกในดิสก์อื่น ๆ ในอาเรย์ ความเท่าเทียมกันไม่ได้อยู่ในดิสก์เฉพาะเพียงแผ่นเดียวเท่านั้น แต่มันหมุนรอบดิสก์อย่างสม่ำเสมอเพื่อให้โหลดการอ่านที่ดีกว่าทั่วดิสก์ในการทำงานปกติ
การดำเนินการ XOR เพื่อคำนวณพาริตีมีลักษณะดังนี้:
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
โดยทั่วไป resync จะทำเมื่อเปลี่ยนดิสก์ที่ตายหรือหายไป นอกจากนี้ยังทำmdadm create
เพื่อรับรองว่าข้อมูลบนดิสก์สอดคล้องกับสิ่งที่รูปทรงเรขาคณิตของ RAID ควรมีลักษณะ ในกรณีนั้นดิสก์สุดท้ายในข้อมูลจำเพาะของอาเรย์คือดิสก์ที่ 'ซิงค์กับ' - ข้อมูลทั้งหมดที่มีอยู่ในดิสก์อื่นนั้นจะถูกใช้สำหรับการซิงค์
ดังนั้นข้อมูลทั้งหมดในดิสก์ 'ใหม่' จะถูกลบออกและสร้างใหม่ ไม่ว่าจะเป็นการสร้างบล็อคข้อมูลใหม่จากบล็อกพาริตีสำหรับสิ่งที่ควรมีหรือไม่ก็สร้างบล็อกแพริตีใหม่
สิ่งที่เจ๋งคือกระบวนการของทั้งสองอย่างนั้นเหมือนกันนั่นคือการดำเนินการของแฮคเกอร์ในข้อมูลจากดิสก์ส่วนที่เหลือ กระบวนการ resync ในกรณีนี้อาจมีในรูปแบบที่บล็อกบางบล็อกควรเป็นพาริตีและคิดว่ามันกำลังสร้างบล็อกพาริตีใหม่ซึ่งอันที่จริงแล้วมันกำลังสร้างบล็อกข้อมูลเก่าขึ้นใหม่ ดังนั้นแม้ว่าจะคิดว่ามันกำลังสร้างสิ่งนี้:
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>
Nope! ทำไมถึงเป็นอย่างนั้น? เพราะในขณะที่ข้อมูลมีอยู่ทั้งหมดมันอยู่ในลำดับที่ไม่ถูกต้อง สิ่งที่ครั้งหนึ่งเคยเป็น 512KB ของ A จากนั้น 512KB ของ B, A, B และอื่น ๆ ตอนนี้ถูกสับเปลี่ยนเป็น 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>
ใช่มันถูก hosed เมื่อตั้งค่าเช่นนี้ แต่เราสามารถกู้คืนได้หรือไม่
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
เราก็แค่พิสูจน์ว่า superblock zeroing นั้นไม่อันตรายจริง ๆ อย่างรวดเร็ว:
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
พร้อมข้อมูลเกี่ยวกับลำดับของไดรฟ์อัลกอริทึมขนาดก้อนและรุ่นข้อมูลเมตา คุณมีการตั้งค่าการแจ้งเตือนอีเมลของ mdadm หรือไม่? ถ้าเป็นเช่นนั้นหาคนเก่า; /var/spool/mail/root
ถ้าไม่ตรวจสอบ ตรวจสอบ~/.bash_history
เพื่อดูว่างานสร้างเดิมของคุณอยู่ในนั้นหรือไม่
ดังนั้นรายการสิ่งที่คุณควรทำ:
- สำรองดิสก์ด้วย
dd
ก่อนทำอะไร !!
- ลอง
fsck
ใช้ md ที่ใช้งานอยู่ในปัจจุบัน - คุณอาจเกิดขึ้นเพื่อสร้างในลำดับเดียวกันกับเมื่อก่อน หากคุณรู้ว่าระบบไฟล์เป็นประโยชน์ ใช้fsck
เครื่องมือเฉพาะนั้น หากเครื่องมือตัวใดตัวหนึ่งเสนอให้แก้ไขสิ่งใดอย่าปล่อยให้พวกเขาเว้นแต่คุณจะแน่ใจว่าพวกเขาได้พบระบบไฟล์ที่ถูกต้องจริง ๆ ! หากfsck
ข้อเสนอเพื่อแก้ไขบางสิ่งบางอย่างสำหรับคุณอย่าลังเลที่จะแสดงความคิดเห็นเพื่อถามว่าจริง ๆ แล้วมันกำลังช่วยเหลือหรือกำลังจะทำการดักฟังข้อมูล
- ลองสร้างอาร์เรย์ด้วยพารามิเตอร์ที่แตกต่างกัน หากคุณมีแก่
/proc/mdstat
แล้วคุณก็สามารถเลียนแบบสิ่งที่มันแสดง; ถ้าไม่เช่นนั้นคุณก็จะต้องอยู่ในความมืด - การลองคำสั่งไดรฟ์ที่แตกต่างกันทั้งหมดนั้นสมเหตุสมผล สำหรับแต่ละfsck
เพื่อดูว่าคุณจะได้รับสิ่งที่มีแนวโน้ม
นั่นคือสิ่งที่ ขออภัยในนวนิยายโปรดแสดงความคิดเห็นหากคุณมีคำถามใด ๆ และขอให้โชคดี!
เชิงอรรถ: ต่ำกว่า 22,000 ตัวอักษร; 8k + อายของการจำกัดความยาว