क्या मैं एक डिवाइस के साथ एक सॉफ्टवेयर RAID 1 बना सकता हूं


20

मेरे पास एक एकल डिस्क है जिसे मैं एक दर्पण बनाना चाहता हूं; इस डिस्क को कॉल करते हैं sda। मैंने अभी एक और पहचान-योग्य डिस्क खरीदी है, जिसे हम कॉल कर सकते हैं sdbsdaऔर sdbएक विभाजन कहा जाता है sda1और sdb1क्रमशः।

एक छापा बनाते समय, मैं अपनी sdaसफाई नहीं करना चाहता हूं और फिर से शुरू करना चाहता हूं, मैं चाहता हूं कि इसके साथ मिरर करना शुरू करें sdb। मेरे विचार की ट्रेन थी:

mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=1 /dev/sda1

... sdbडिस्क के बिना ऐरे को बनाने के लिए , फिर कुछ ऐसा चलाएं (मैं निम्नलिखित कमांड को जोर से सोच रहा हूं, क्योंकि मुझे यकीन नहीं है कि यह कैसे प्राप्त करें)

mdadm /dev/md0 --add /dev/sdb1

नोट sdb1को इसी तरह स्वरूपित किया जाता हैsda1

क्या यह संभव है?


हाँ तुम कर सकते हो। यह उतना सीधा नहीं है --add, और आपको सावधान रहने की जरूरत है, लेकिन यह बहुत जटिल नहीं है। देखें कि उबंटू में डिस्क मिररिंग कैसे सेट करें? (नए नियमों के कारण मैं उस प्रश्न को डुप्लिकेट के रूप में प्रस्तावित नहीं कर सकता।)
गिल्स एसओ- बुराई को रोकना '

जवाबों:


28

शीर्षक में प्रश्न का सरल उत्तर "हां" है। लेकिन जो आप वास्तव में करना चाहते हैं वह अगला चरण है, जो मौजूदा डेटा को प्रतिबिंबित कर रहा है।

मेटाडेटा स्थान के कारण, मौजूदा डिस्क को परिवर्तित करना संभव है, लेकिन यह जोखिम भरा है, जैसा कि उल्लेख किया गया है। नई डिस्क के साथ एक खाली (टूटा हुआ) दर्पण बनाने के लिए बेहतर है और उस पर मौजूदा डेटा की प्रतिलिपि बनाएँ। फिर, अगर यह काम नहीं करता है, तो आप अन-मिरर मूल में वापस बूट करते हैं।

सबसे पहले, एक लापता ड्राइव के साथ /dev/sdb1नए के रूप में /dev/md0आरंभ करें और फाइल सिस्टम को इनिशियलाइज़ करें (मैं ext3 मान रहा हूं, लेकिन चुनाव आपका है)

mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 /dev/sdb1 missing
mkfs -text3 /dev/md0

अब, /dev/sda1सबसे अधिक संभावना है कि आपकी रूट फाइल सिस्टम ( /) तो सुरक्षा के लिए आपको एक लाइव सीडी, रेस्क्यू डिस्क या अन्य बूट करने योग्य सिस्टम से अगला चरण करना चाहिए जो दोनों को एक्सेस कर सकता है /dev/sda1और /dev/md0हालांकि मैंने इसे एकल उपयोगकर्ता मोड में ड्रॉप करके सफलतापूर्वक किया है।

पर फाइल सिस्टम की सारी सामग्री को कॉपी /dev/sda1करने के लिए /dev/md0। उदाहरण के लिए:

mount /dev/sda1 /mnt/a       # only do this if /dev/sda1 isn't mounted as root
mount /dev/md0 /mnt/b
cd /mnt/a                    # or "cd /" if it's the root filesystem
cp -dpRxv . /mnt/b

संपादित करें /etc/fstabया अन्यथा सुनिश्चित करें कि अगले बूट पर, /dev/md0इसके बजाय माउंट किया गया है /dev/sda1। आपका सिस्टम संभवतः बूट करने के लिए सेट है /dev/sda1और बूट पैरामीटर संभवत: इसे रूट डिवाइस के रूप में निर्दिष्ट करता है, इसलिए रिबूट करते समय आपको मैन्युअल रूप से इसे बदलना चाहिए ताकि रूट हो /dev/md0(मान लें /dev/sda1कि रूट था)। रिबूट के बाद, जांचें कि /dev/md0अब माउंट किया गया है ( df) और यह अपमानित दर्पण के रूप में चल रहा है ( cat /proc/mdstat)। /dev/sda1सरणी में जोड़ें :

mdadm /dev/md0 --add /dev/sda1

चूंकि पुनर्निर्माण फिर से लिखना होगा /dev/sda1, जो मेटाडेटा संस्करण आप उपयोग करते हैं वह अप्रासंगिक है। हमेशा बड़े बदलाव करते समय, पूर्ण बैकअप लें (यदि संभव हो) या कम से कम यह सुनिश्चित करें कि जो कुछ भी फिर से बनाया नहीं जा सकता है वह सुरक्षित है।

आपको /dev/md0रूट (यदि /dev/sda1रूट था) के रूप में उपयोग करने के लिए अपने बूट कॉन्फिगरेशन को फिर mdadm.confसे बनाने की आवश्यकता होगी और /dev/md0हमेशा यह सुनिश्चित करने के लिए फिर से शुरू करने की आवश्यकता होगी ।


बिल्कुल सही मुझे क्या चाहिए: D
whoami

2
cpफाइल सिस्टम को कॉपी करने के लिए उपयोग न करें , आपको कुछ चीजें याद आएंगी जैसे कि हार्ड लिंक, एक्सटेंडेड फीचर्स ... उचित विकल्पों के साथ उपयोग करें tarया rsync। एक लाइव सीडी को बूट करते समय, सावधान रहें कि यूआईडी-यूजर मैपिंग अलग है (देखें - टार / rsync का -numeric- मालिक विकल्प)। क्लोनिंग एक्सटैक्स फाइल सिस्टम के लिए क्लोन 2 एफ भी देखें।
स्टीफन चेज़लस

1
cpलिंक (-d), मोड, स्वामित्व और टाइमस्टैम्प (-p) को संभालने के लिए विकल्प , इसे पुनरावर्ती (-R) करने और एक फाइलसिस्टम (-x) पर बने रहने के लिए, लेकिन मुझे लगता है कि आप हार्ड लिंक और विस्तारित के बारे में सही हो सकते हैं जिम्मेदार बताते हैं।
StarNamer

rsync -aH --delete /mnt/olddisk/ /mnt/newarray/एक अच्छा विकल्प है। -vih --progressयदि आप वास्तव में यह क्या कर रहे हैं देखना चाहते हैं तो जोड़ें ।
रुडोल्फबाइकर

4

निश्चित रूप से, आप यह निर्दिष्ट कर सकते हैं कि वर्तमान में दूसरी डिस्क है missing:

mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 missing /dev/sda1

मीठे धन्यवाद, Im संभावित रूप से यहाँ OCD जा रहा है, लेकिन वहाँ एक कारण है कि आपने / dev / sda1 से पहले लापता को जोड़ा है, क्या यह आदेश महत्वपूर्ण है?
whoami

मुझे लगता है कि आदेश मायने नहीं रखता।
इप्सुइग

3
इससे सावधान! के साथ --metadata = 1.2 (नया डिफ़ॉल्ट), RAID मेटाडेटा (1MB) प्रारंभ में डाला जाएगा (वहां की सामग्री को ओवरराइड करके)। और md सरणी की शुरुआत 1MB / dev / sda1 के भीतर शुरू होगी (/ dev / md0 1MB / dev / sda1 से छोटी होगी)। मेटाडेटा = 0.9 (पुराने डिफ़ॉल्ट) के साथ, मेटाडेटा (64kB) को अंत में यह कहते हुए डाला जाएगा कि वहां क्या है। इसलिए --metadata = 0.9 का उपयोग करें और पहले FS का आकार बदलें। जो भी करें, पहले से बैकअप ले लें।
स्टीफन चेज़लस

3

तुम यह कर सकते हो। आपको थोड़ा सावधान रहने की आवश्यकता है, लेकिन यह खतरनाक नहीं है यदि आप किसी भी चीज़ को गलत तरीके से नहीं करते हैं और यह सेटअप में किसी भी प्रकार की गड़बड़ी नहीं करता है।

मैं एक लाइव सिस्टम पर किसी भी जोड़तोड़ को नहीं करने की अत्यधिक सलाह देता हूं। यह कुछ मामलों में संभव है लेकिन अतिरिक्त देखभाल की आवश्यकता है। एक LiveCD / LiveUSB रूप में इस तरह से बूट जुदा या SystemRescueCd

सबसे पहले, आपको mdraid मेटाडेटा (सुपरब्लॉक) के लिए जगह बनाने के लिए वॉल्यूम को थोड़ा कम करना होगा। रहे हैं कई मेटाडाटा प्रारूपों , आप एक है कि डिस्क के अंत में मेटाडाटा डालता उपयोग करना चाहिए। (कुछ सेटअपों में, आपके पास शुरुआत में सुपरब्लॉक लगाने के लिए पर्याप्त जगह हो सकती है, लेकिन यह अधिक जटिल और जोखिम भरा है इसलिए मैं इसमें जाता हूं।)

आपको यह सुनिश्चित करना होगा कि सुपरब्लॉक के लिए जगह बनाने के लिए ब्लॉक डिवाइस से अंतिम 128kB अप्रयुक्त हैं। तो आपको फाइल सिस्टम को सिकोड़ना होगा /dev/sda1। यदि यह एक ext2 / ext3 / ext4 फाइल सिस्टम है, तो वर्तमान फाइलसिस्टम का आकार प्राप्त करें tune2fs /dev/sda1, फिर चलाएं resize2fs /dev/sda1 NNNजहां NNN उस आकार का माइनस 128kB है। आप इसके बजाय पार्टेड के साथ कर सकते हैं । यदि आपको extN फाइलसिस्टम को सिकोड़ने की आवश्यकता है, तो आपको पहले इसे अनमाउंट करना होगा; एक btrfs फाइल सिस्टम लाइव सिकुड़ सकता है।

एक बार जब आपने यह सुनिश्चित कर लिया है कि ब्लॉक डिवाइस का अंतिम 128kB mdadm --createएक RAID-1 वॉल्यूम बनाने के लिए कॉल करता है। यह सुपरब्लॉक से अलग वॉल्यूम के किसी भी हिस्से को नहीं छूता है। प्रारंभ में, वॉल्यूम में एक एकल घटक होगा: अन्य सभी विफल के रूप में सेट हैं। आपको पास होना चाहिए --level=1(या समकक्ष -n 1) (यह दृष्टिकोण केवल RAID-1 के लिए काम करता है) और ( --metadata=0.9या --metadata=1.0डिफ़ॉल्ट सुपरब्लॉक प्रारूप 1.2 डिवाइस की शुरुआत के पास सुपरब्लॉक डालता है, जो डेटा को अधिलेखित कर सकता है)। तर्क करने के लिए --raid-devices( -n) RAID मात्रा में घटकों के (शामिल लापता वाले) संख्या है।

mdadm --create /dev/md0 --level=1 --raid-devices=2 --metadata=1.0 /dev/sda1 missing

अब आप ऐरे को सक्रिय कर सकते हैं और अन्य घटक जोड़ सकते हैं।

mdadm --add /dev/md0 /dev/sdb1

बूटलोडर्स पर एक नोट: ग्रब 2 लिनक्स RAID -1 को समझता है और इससे बूट कर सकता है। Grub1 जैसे बूटलोडर्स जो समझ में नहीं आते हैं कि RAID मिरर वॉल्यूम से पारदर्शी रूप से पढ़ा जाता है, लेकिन अगर बूटलोडर विफल रहता है तो ड्राइव को पढ़ने से आपका सिस्टम बूट नहीं होगा। यदि RAID वॉल्यूम विभाजन पर है, तो दोनों ड्राइव पर ग्रब के बूट सेक्टर को स्थापित करना सुनिश्चित करें।

¹ बैकअप अवश्य लें। "खतरनाक नहीं" का अर्थ है "आपको शायद उनकी आवश्यकता नहीं होगी", "आपका डेटा जुआ नहीं"।

रेपोस्टेड और थोड़ा अनुकूलित से डिस्क मिररिंग कैसे सेट करें (RAID-1)

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