ठीक है - कुछ मुझे आपके मुद्दे के बारे में गुस्सा आ रहा था, इसलिए मैंने उस व्यवहार में गोता लगाने के लिए एक वीएम को निकाल दिया जिसकी उम्मीद की जानी चाहिए। मुझे मिल जाएगा जो मुझे एक मिनट में गुस्सा दिला रहा था; पहले मुझे यह कहने दो:
कुछ भी प्रयास करने से पहले इन ड्राइव का बैकअप लें !!
आप पहले से ही नुकसान हो सकता है क्या resync से परे है; क्या आप स्पष्ट कर सकते हैं कि आपके कहने का मतलब क्या था:
मेरे सुझाव के अनुसार मैंने सुपरब्लॉक को साफ किया और सरणी को फिर से बनाया - साफ-सुथरे विकल्प के साथ, लेकिन बिना किसी भाग्य के।
यदि आप एक भाग गए mdadm --misc --zero-superblock
, तो आपको ठीक होना चाहिए।
वैसे भी, कुछ नए डिस्क को परिमार्जित करें और उनमें से कुछ भी करने से पहले उनमें से कुछ भी लिखने के लिए कुछ भी करने से पहले उनकी सटीक वर्तमान छवियों को पकड़ो।
dd if=/dev/sdd of=/path/to/store/sdd.img
कहा जा रहा है कि .. यह इन चीजों पर संग्रहीत डेटा की तरह लग रहा है चौंकाने वाला स्वच्छंद resyncs के लिए लचीला है। आगे पढ़ें, आशा है, और यह वह दिन हो सकता है कि मैंने उत्तर की लंबाई सीमा को मारा।
सबसे अच्छा मामला परिदृश्य
मैंने आपके परिदृश्य को फिर से बनाने के लिए एक वीएम को एक साथ फेंक दिया। ड्राइव सिर्फ 100 एमबी की हैं इसलिए मैं प्रत्येक रेसक्यूक्स पर हमेशा इंतजार नहीं करूंगा, लेकिन यह एक बहुत सटीक प्रतिनिधित्व होना चाहिए अन्यथा।
सरणी को सामान्य रूप से और डिफ़ॉल्ट रूप में बनाया गया - 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
, और उस 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
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 एक समता ब्लॉक का उपयोग करके काम करता है जो सरणी में हर दूसरे डिस्क पर ब्लॉक के समान क्षेत्र की सुरक्षा करता है। समता केवल एक विशिष्ट डिस्क पर नहीं है, यह सामान्य ऑपरेशन में डिस्क के पार बेहतर लोड रीड आउट के लिए समान रूप से डिस्क के चारों ओर घुमाया जाता है।
समानता की गणना करने के लिए 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
एक मृत या लापता डिस्क को प्रतिस्थापित करते समय आमतौर पर एक रीकंस्ट्रक्शन किया जाता है; यह भी 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>
नहीं! ऐसा क्यों है? क्योंकि डेटा के सभी वहाँ है, यह गलत क्रम में है; एक बार 512KB का क्या था, फिर बी, ए, बी और आगे के 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
सफलता!
परीक्षण २
ठीक है, चलो चंक आकार बदलते हैं और देखें कि क्या हमें कुछ टूट जाता है।
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
सफलता, फिर से!
परीक्षण ३
यह वह है जो मैंने सोचा था कि डेटा को निश्चित रूप से मार देगा - चलो एक अलग लेआउट एल्गोरिथ्म करते हैं!
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
हाँ, कोई बड़ी बात नहीं।
परीक्षण ५
चलो बस सब कुछ फेंक दिया है जो हमें मिला है। सभी 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 हजार पात्रों के तहत; लंबाई की 8k + शर्मीली