RAID1 सक्रिय और अतिरिक्त विभाजन के साथ


8

मैं अपने Ubuntu सिस्टम (10.04 एलटीएस, 2.6.32-24-सर्वर के मामले में यह मामले में) पर एक RAID1 सॉफ्टवेयर छापे विभाजन के साथ निम्नलिखित समस्या हो रही है।

मेरे एक डिस्क (sdb5) ने I / O त्रुटियों की सूचना दी थी और इसलिए इसे सरणी में दोषपूर्ण चिह्नित किया गया था। तब सरणी को एक सक्रिय डिवाइस के साथ नीचा दिखाया गया था। इसलिए, मैंने हार्डडिस्क को प्रतिस्थापित किया, विभाजन तालिका को क्लोन किया और अपने छापे सरणियों में सभी नए विभाजन जोड़े। सभी विभाजनों को समन्वयित करने के बाद, 2 सक्रिय उपकरणों के साथ - उनमें से एक को छोड़कर, सभी ठीक हो गए। विभाजन जिसने पहले दोषपूर्ण डिस्क की सूचना दी थी, हालांकि, नए विभाजन को एक सक्रिय उपकरण के रूप में नहीं बल्कि एक अतिरिक्त डिस्क के रूप में शामिल किया गया था:

md3 : active raid1 sdb5[2] sda5[1]
  4881344 blocks [2/1] [_U]

एक विस्तृत रूप से पता चलता है:

root@server:~# mdadm --detail /dev/md3
[...]
Number   Major   Minor   RaidDevice State
   2       8       21        0      spare rebuilding   /dev/sdb5
   1       8        5        1      active sync   /dev/sda5

तो यहाँ सवाल यह है कि मैं अपने छापे को एक सक्रिय में स्पेयर डिस्क कैसे बदलूं? और इसे एक अतिरिक्त उपकरण के रूप में क्यों जोड़ा गया है? सरणी को फिर से बनाना या पुनः जोड़ना एक विकल्प नहीं है, क्योंकि यह मेरा मूल विभाजन है। और मुझे उस विषय में कोई भी संकेत सॉफ़्टवेयर RAID HOWTO में नहीं मिल सकता है।

किसी भी सहायता की सराहना की जाएगी।

वर्तमान समाधान

मुझे अपनी समस्या का हल मिल गया, लेकिन मुझे यकीन नहीं है कि यह ऐसा करने का वास्तविक तरीका है। मेरे छापे पर करीब से देखने पर मैंने पाया कि sdb5 को हमेशा एक स्पेयर डिवाइस के रूप में सूचीबद्ध किया गया था:

mdadm --examine /dev/sdb5
[...]
Number   Major   Minor   RaidDevice State
this     2       8       21        2      spare   /dev/sdb5

   0     0       0        0        0      removed
   1     1       8        5        1      active sync   /dev/sda5
   2     2       8       21        2      spare   /dev/sdb5

इसलिए डिवाइस md3 को सरणी md3 में पढ़ना हमेशा एक अतिरिक्त के रूप में डिवाइस को जोड़ने में समाप्त हो गया।

अंत में मैंने सिर्फ सरणी को फिर से बनाया

mdadm --create /dev/md3 --level=1 -n2 -x0 /dev/sda5 /dev/sdb5

जो काम किया।

लेकिन यह सवाल मेरे लिए खुला है: क्या सुपरब्लॉक में सारांश को हेरफेर करने और स्पेयर डिस्क से एसडीबी 5 को एक सक्रिय डिस्क में बदलने के लिए एक बेहतर तरीका है? मैं अभी भी एक उत्तर के लिए उत्सुक हूं।


"बिल्ली / खरीद / mdstat" क्या दिखाता है? क्या यह सिर्फ पुनर्निर्माण नहीं है और "स्पेयर" पुनर्निर्माण समाप्त होने पर बस गायब हो जाएगा? "Mdadm --version" क्या दिखाता है? एक पुराना बग था ... मेल-archive.com/linux-raid@vger.kernel.org/msg09818.html देखें ।
Rems

नहीं, यही समस्या है। प्रश्न में पहला स्निपेट सरणी के लिए / proc / mdstat का आउटपुट दिखाता है। डिवाइस को पहले ही सिंक किया जा चुका है, लेकिन जैसा कि आप देख सकते हैं कि सफल सिंकिंग प्रक्रिया के बाद डिवाइस एक स्पेयर के रूप में बना रहता है और एक सक्रिय में नहीं बदल जाता है।
डैनियल बैरन

जवाबों:


1

डैनियल: शुरू में, यह देखने के लिए डबल-चेक करें कि क्या स्पेयर को सरणी में एकीकृत किया जा रहा है:

cat / proc / mdstat

जो रिपोर्ट करें कि क्या कोई निर्माण प्रक्रिया चल रही है, और कब तक लेने की उम्मीद है।

यदि कोई भवन नहीं बन रहा है, तो निम्नलिखित प्रयास करें

mdadm / dev / md3 --remove / dev / sdb5

mdadm / dev / md3 --add / dev / sdb5

और वापस रिपोर्ट करें कि यह आपके लिए कैसे काम करता है। अधिक विवरण के लिए http://linux.die.net/man/8/mdadm देखें ।


आपकी मदद के लिए धन्यवाद, Rolnik। जैसा कि आप मेरे पहले स्निपेट / proc / mdstat से देख सकते हैं कि दोनों डिवाइस सरणी में हैं। समस्या के बिना डिवाइस को पहले ही (यहां नहीं दिखाया गया है) सिंक किया गया है। लेकिन रेसक्यू प्रक्रिया को पूरा करने के बाद उपकरणों को सक्रिय डिवाइस में नहीं बदल दिया गया। हटाने और फिर से जोड़ने से यह व्यवहार नहीं बदला।
डैनियल बैरन

1

काफी देर हो गई, लेकिन ऐसा करने से बस अतिरिक्त ड्राइव सक्षम हो जाएगी:

mdadm --grow /dev/md3 -n 2

जैसा कि मैनपेज कहता है:

बनाने, बनाने, या विकसित करने के लिए: -n, - भय-उपकरण = सरणी में सक्रिय उपकरणों की संख्या निर्दिष्ट करें। इसके अलावा, अतिरिक्त उपकरणों की संख्या (नीचे देखें) को घटक- उपकरणों ("लापता" डिवाइस सहित) की संख्या के बराबर होना चाहिए जो कि --create के लिए कमांड लाइन पर सूचीबद्ध हैं। 1 का मान सेट करना शायद एक गलती है और इसलिए इसकी आवश्यकता है - पहले निर्दिष्ट किया जाना चाहिए। 1 का मान फिर रैखिक, मल्टीपाथ, RAID0 और RAID1 के लिए अनुमति दी जाएगी। इसे RAID4, RAID5 या RAID6 के लिए कभी अनुमति नहीं है। इस नंबर को केवल RAID1, RAID4, RAID5 और RAID6 सरणियों के लिए --row का उपयोग करके बदला जा सकता है, और केवल गुठली पर जो आवश्यक सुपर पोर्ट प्रदान करते हैं।


0

मैं जो याद करता हूं, जब मुझे वह समस्या थी (एक अलग कारण से) तो मुझे स्पेयर ड्राइव को "ठीक से" जोड़ने के लिए - (त्रुटि स्थिति को साफ करने के लिए) का उपयोग करना पड़ा।

कुछ इस तरह (अपने प्रलेखन के साथ सत्यापित करें!):

mdadm --grow --level = दोषपूर्ण --layout = फ्लश / देव / sdb5

फिर आप डिवाइस को जोड़ सकते हैं और इसे पहचाना जाना चाहिए।

समस्या यह है कि md ड्राइवर ड्राइव बूट डेटा में प्रत्येक विभाजन की स्थिति को बचाता है। तो एक रिबूट के बाद भी यह स्थिति जानता है और दोषपूर्ण के रूप में चिह्नित विभाजन से बचा जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.