मुझे पहले स्वीकार करें कि मैंने गलतियाँ की हैं, और मेरे पास इस RAID के अधिकांश डेटा के लिए बैकअप है, लेकिन सभी के लिए नहीं । मुझे अभी भी बाकी डेटा के ठीक होने की उम्मीद है। मेरे पास रिकवरी विशेषज्ञ कंपनी के पास ड्राइव करने के लिए पैसे नहीं हैं।
गलती # 0, एक 100% बैकअप नहीं है। मुझे पता है।
मेरे पास mdadm
4x3TB का एक RAID5 सिस्टम है। ड्राइव / देव / एसडी [हो], सभी एक विभाजन के साथ /dev/sd[b-e]1
। मुझे पता है कि बहुत बड़े ड्राइव पर RAID5 जोखिम भरा है, फिर भी मैंने इसे वैसे भी किया।
वतॆमान की घटनाये
दो ड्राइव की विफलता के बाद RAID अपमानित हो जाता है। एक ड्राइव [/ dev / sdc] वास्तव में चला गया है, अन्य [/ dev / sde] एक शक्ति चक्र के बाद वापस आया, लेकिन स्वचालित रूप से RAID में पुन: नहीं जोड़ा गया। तो मैं एक 4 डिवाइस RAID केवल 2 सक्रिय ड्राइव [/ dev / sdb और / dev / sdd] के साथ छोड़ दिया गया था।
RAID पुनर्स्थापित करने के लिए ड्राइव की dd प्रतियों का उपयोग न करते हुए गलती # 1। मेरे पास ड्राइव या समय नहीं था। # 2 गलती, सुपरब्लॉक और mdadm -E
शेष ड्राइव का बैकअप नहीं बना रहा है ।
वसूली का प्रयास
मैं reassembled RAID के साथ अपमानित मोड में
mdadm --assemble --force /dev/md0, using /dev/sd[bde]1.
मैं तब अपना डेटा एक्सेस कर सकता था। मैं /dev/sdc
एक स्पेयर के साथ बदल दिया ; खाली; समान ड्राइव।
मैं पुराने /dev/sdc1
से हटा दिया RAID
mdadm --fail /dev/md0 /dev/sdc1
गलती # 3, ड्राइव को बदलने से पहले ऐसा नहीं करना
मैंने तब नया विभाजन किया /dev/sdc
और इसे RAID में जोड़ा।
mdadm --add /dev/md0 /dev/sdc1
इसके बाद RAID को पुनर्स्थापित करना शुरू किया। ईटीए 300 मि। मैंने /proc/mdstat
2% तक प्रक्रिया का पालन किया और फिर अन्य सामान करने के लिए चला गया।
परिणाम की जाँच कर रहा है
कई घंटे (लेकिन कम से कम 300 मिनट) बाद में, मैंने प्रक्रिया की जांच की। पर पढ़ने में त्रुटि के कारण यह बंद हो गया था /dev/sde1
।
यहाँ वह जगह है जहाँ मुसीबत वास्तव में शुरू होती है
मैं तो /dev/sde1
RAID से हटा दिया और इसे फिर से जोड़ा। मुझे याद नहीं है कि मैंने ऐसा क्यों किया; उसमें देर हो चुकी थी।
mdadm --manage /dev/md0 --remove /dev/sde1
mdadm --manage /dev/md0 --add /dev/sde1
हालाँकि, /dev/sde1
अब स्पेयर के रूप में चिह्नित किया गया था। इसलिए मैंने जो सही सोचा था, उसका उपयोग करके और /dev/sdc1
लापता होने के साथ -समूह-स्वच्छ का उपयोग करके पूरे सरणी को फिर से बनाने का फैसला किया ।
mdadm --create /dev/md0 --assume-clean -l5 -n4 /dev/sdb1 missing /dev/sdd1 /dev/sde1
यह काम किया, लेकिन माउंट करने की कोशिश करते समय फाइल सिस्टम को मान्यता नहीं दी गई थी। (यह EXT4 होना चाहिए था)।
डिवाइस क्रम
मैंने तब एक हालिया बैकअप की जाँच की जो मेरे पास था /proc/mdstat
, और मुझे ड्राइव ऑर्डर मिला।
md0 : active raid5 sdb1[0] sde1[4] sdd1[2] sdc1[1]
8790402048 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
फिर मुझे याद आया कि इस RAID को लगभग एक साल पहले एक ड्राइव लॉस हुआ था, और एक फाल्ट ड्राइव के साथ दोषपूर्ण ड्राइव को बदलकर इसे रिकवर किया था। हो सकता है कि उसने डिवाइस के ऑर्डर को थोड़ा बढ़ा दिया हो ... इसलिए कोई ड्राइव नहीं थी [३] लेकिन केवल [०], [१], [२] और [४]।
मैंने Permute_array स्क्रिप्ट के साथ ड्राइव ऑर्डर खोजने की कोशिश की: https://raid.wiki.kernel.org/index.php/Permute_array.pl लेकिन उसे सही ऑर्डर नहीं मिला।
प्रशन
मेरे पास अब दो मुख्य प्रश्न हैं:
मैंने ड्राइव पर सभी सुपरब्लॉक खराब कर दिए, लेकिन केवल दिया:
mdadm --create --assume-clean
आज्ञाओं (इसलिए मुझे स्वयं डेटा को ओवरराइट नहीं करना चाहिए था
/dev/sd[bde]1
। क्या मैं सही हूं कि सिद्धांत में RAID को बहाल किया जा सकता है [एक पल के लिए मान/dev/sde1
लेना ठीक है] अगर मुझे सिर्फ सही डिवाइस ऑर्डर मिल जाए?क्या यह महत्वपूर्ण है कि
/dev/sde1
RAID में डिवाइस नंबर [4] दिया जाए? जब मैं इसके साथ बनाता हूंmdadm --create /dev/md0 --assume-clean -l5 -n4 \ /dev/sdb1 missing /dev/sdd1 /dev/sde1
इसे संख्या [3] सौंपी गई है। मुझे आश्चर्य है कि अगर यह समता ब्लॉकों की गणना के लिए प्रासंगिक है। यदि यह महत्वपूर्ण हो जाता है, तो मैं
/dev/sdb1[0]
लापता [1] के साथ सरणी को कैसे पुनः बना सकता हूं/dev/sdd1[2]
/dev/sde1[4]
? अगर मुझे वह काम मिल जाए तो मैं/dev/sdc1
इसे नीचा मोड में शुरू कर सकता हूं और नई ड्राइव जोड़ सकता हूं और इसे फिर से सिंक कर सकता हूं ।
यह ठीक है अगर आप मुझसे कहना चाहेंगे कि यह कार्रवाई का सबसे अच्छा कोर्स नहीं हो सकता है, लेकिन आप पाएंगे कि मुझे इसका एहसास हुआ। अगर किसी के पास कोई सुझाव हो तो बहुत अच्छा होगा।