लिनक्स सॉफ्टवेयर को विकसित करने का सबसे अच्छा तरीका है RAID 1 से RAID 10


22

mdadm लगता है कि स्तर 1 से स्तर 10 तक एक सरणी बढ़ने का समर्थन नहीं करता है।

मेरे पास दो डिस्क हैं RAID 1. मैं दो नए डिस्क जोड़ना चाहता हूं और सरणी को चार डिस्क RAID 10 सरणी में बदलना चाहता हूं।

मेरी वर्तमान रणनीति:

  1. अच्छा बैकअप बनायें।
  2. दो गायब डिस्क के साथ एक अपमानित 4 डिस्क RAID 10 सरणी बनाएं।
  3. rsync the RAID 1 array with the RAID 10 array.
  4. fail and remove RAID 1 सरणी से एक डिस्क।
  5. RAID 10 सरणी में उपलब्ध डिस्क जोड़ें और resynch के पूरा होने की प्रतीक्षा करें।
  6. RAID 1 सरणी को नष्ट करें और RAID 10 सरणी में अंतिम डिस्क जोड़ें।

समस्या चरण 5 पर अतिरेक की कमी है।

क्या कोई बेहतर तरीका है?


5
चरण ० भूल न करें ०. सब कुछ का एक अच्छा बैकअप बनाएं।
एंथनी लुईस

मेरा मानना ​​है कि आपके कदम सही हैं। आप उस अवधि के दौरान अतिरेक खो देते हैं जब आप डेटा को एक सेट से दूसरे में कॉपी कर रहे होते हैं।
केविन कुफाल

क्या एक अपमानित 4disk RAID10 बनाना संभव है?
पोस्का

1
हां, आप बस "/ देव / एचडीए लापता / देव / एचडीबी लापता" का उपयोग करते हैं, क्योंकि अन्यथा आप एक पूरी जोड़ी खो देते हैं और यह सब अलग हो जाता है। इस प्रश्न के लिए "स्वीकृत उत्तर", संयोग से, पूरी तरह से गलत है और काम नहीं करता है।
Womble

मैं यह करने के लिए एक अच्छा तरीका भी ढूंढ रहा हूं, और मुझे लगता है कि प्रश्न में वर्णित विधि सबसे अच्छा है जो मैंने अब तक पाया है। मार्क टर्नर का जवाब मदद नहीं करता है क्योंकि यह एक 2-डिवाइस ऐरे बनाता है जिसे 4 डिवाइसेस पर रीसेट नहीं किया जा सकता है (अन्य 2 को केवल पुर्जों के रूप में जोड़ा जा सकता है)। और सुरेश कुमार का उत्तर प्रश्न में वर्णित के समान है, सिवाय इसके कि यह बिल्कुल काम नहीं करेगा; अनुपलब्ध उपकरणों को 2nd और 4th होना चाहिए, न कि 3rd और 4th। प्रश्न के चरणों के बारे में: मुझे लगता है कि चरण 5 में पूर्ण अतिरेक है, और चरण 6 में आधे डेटा के लिए अतिरेक है। मैं वास्तव में कदमों को फिर से देख रहा था
aditsu

जवाबों:


8

लिनक्स के साथ आप केवल दो डिस्क के साथ एक RAID 10 सरणी बना सकते हैं।

नीचे उपयोग किए गए डिवाइस नाम:

  • md0 पुराने प्रकार के स्तर / RAID1 है।
  • md1 प्रकार / स्तर RAID10 का नया सरणी है।
  • sda1और sdb2कर रहे हैं नए , खाली विभाजन (डेटा के बिना)।
  • sda2और sdc1पुराने विभाजन (महत्वपूर्ण डेटा के साथ) हैं।

अपने उपयोग के मामले में फिट होने के लिए नाम बदलें। lsblkअपने वर्तमान लेआउट को देखने के लिए उदा का उपयोग करें ।

0) बैकअप, बैकअप, बैकअप, बैकअप ओह और बैकप

1) नया सरणी बनाएं (4 डिवाइस: 2 मौजूदा, 2 लापता):

mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda1 missing /dev/sdb2 missing

ध्यान दें कि इस उदाहरण में लेआउट sda1में एक लापता समकक्ष है और sdb2एक अन्य लापता समकक्ष है। md1इस बिंदु पर आपका डेटा सुरक्षित नहीं है (प्रभावी रूप से यह RAID0 है जब तक आप लापता सदस्य नहीं जोड़ते हैं)।

निर्मित सरणी उपयोग के लेआउट और अन्य विवरण देखने के लिए:

mdadm -D /dev/md1

ध्यान दें! आपको सरणी का लेआउट सहेजना चाहिए:

# View current mdadm config:
cat /etc/mdadm/mdadm.conf
# Add new layout (grep is to make sure you don't re-add md0):
mdadm --detail --scan | grep "/dev/md1" | tee -a /etc/mdadm/mdadm.conf
# Save config to initramfs (to be available after reboot)
update-initramfs -u

2) प्रारूप और माउंट। /dev/md1तुरंत प्रयोग करने योग्य होना चाहिए, लेकिन जरूरत प्रारूप तैयार किया जाता है और फिर रखा होगा।

3) कॉपी फाइलें। पुराने RAID 1 से नए RAID 10. से डेटा कॉपी करने के लिए उदाहरण के लिए rsync का उपयोग करें (यह केवल एक उदाहरण कमांड है, rsync के लिए मैन पेज पढ़ें)

rsync -arHx / /where/ever/you/mounted/the/RAID10

4) पुराने RAID1 (md0) के पहले भाग को विफल करें, और इसे नए RAID10 (md1) में जोड़ें

mdadm /dev/md0 --fail /dev/sda2 --remove /dev/sda2
mdadm /dev/md1 --add /dev/sda2

ध्यान दें! इससे डेटा मिटा दिया जाएगा sda2md0अभी भी प्रयोग करने योग्य होना चाहिए लेकिन केवल तभी जब अन्य छापे सदस्य पूरी तरह चालू किया गया था।

यह भी ध्यान दें कि यह प्रक्रिया को सिंक्रनाइज़ / पुनर्प्राप्ति शुरू करेगा md1। स्थिति की जांच करने के लिए नीचे दिए गए आदेशों में से एक का उपयोग करें:

# status of sync/recovery
cat /proc/mdstat
# details
mdadm -D /dev/md1

ठीक होने तक इंतजार करें

5) नए ऐरे पर GRUB स्थापित करें (मान लें कि आप इससे बूट कर रहे हैं)। कुछ लिनक्स बचाव / बूट सीडी सबसे अच्छा काम करता है।

6) नए एरे पर बूट करें। अगर यह सही ढंग से काम करता है पुराने सरणी को नष्ट और शेष डिस्क को नए सरणी में जोड़ें।

वापस न लौटने का क्षण

इस बिंदु पर आप पुराने md0 सरणी के अंतिम सदस्य के डेटा को नष्ट कर देंगे। पूरी तरह से सुनिश्चित रहें कि सब कुछ काम कर रहा है।

mdadm --stop /dev/md0
mdadm /dev/md0 --remove /dev/sdc1
mdadm /dev/md1 --add /dev/sdc1

और फिर - प्रतीक्षा करें जब तक कि वसूली md1समाप्त न हो जाए।

# status of sync/recovery
cat /proc/mdstat
# details
mdadm -D /dev/md1

7) अद्यतन mdadm विन्यास

अपडेट करना याद रखें /etc/mdadm/mdadm.conf(md0 निकालें)।

और initramfs के लिए कॉन्फिग को सेव करें (रिबूट के बाद उपलब्ध होने के लिए)

update-initramfs -u

1
इसमें चार डिस्क कहां से आए?
Womble

एह? मैं स्पष्ट रूप से 2 डिस्क के साथ सरणी बनाने के लिए कहता हूं, डेटा की प्रतिलिपि बनाता हूं, एक डिस्क को हटाकर 1 छापे को विफल करता हूं, उस डिस्क को RAID10 में जोड़ देता हूं, फिर RAID10 को बूट करता हूं, अगर यह काम करता है, तो RAID1 को नष्ट करें और उस आखिरी डिस्क को स्थानांतरित करें नए RAID ....
मार्क टर्नर

4
आपने मेरी टिप्पणी के बाद अपना जवाब संपादित किया। इसके अलावा, आपकी प्रक्रिया दो पुर्जों के साथ एक दो-डिस्क RAID-10 देती है ... शायद ही एक चार-डिस्क RAID-10। RAID -10 वॉल्यूम को या तो रद्द नहीं किया जा सकता है।
Womble

2
जैसा कि आपने उन्हें प्रदान किया था, मैंने कमांड चलाई और मैं दो डिस्क के साथ एक दो-डिस्क RAID-10 के साथ समाप्त करता हूं, जैसा कि / proc / mdstat द्वारा दिखाया गया है। यह kdd 2.6.30 पर है, mdadm v2.6.7.2 के साथ।
Womble

3
"mdadm: raid10 array / dev / md1 को रिहा नहीं किया जा सकता है।" इसका उल्लेख mdadm manpage में भी है।
Womble

9

मार्क टर्नर के रूप में एक ही प्रक्रिया का पालन करें लेकिन जब आप रेड सरणी बनाते हैं, तो 2 लापता डिस्क का उल्लेख करें

mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda1 missing /dev/sdb2 missing

और फिर अन्य चरणों के साथ आगे बढ़ें।

संक्षेप में, कुल 4 डिस्क के साथ RAID10 बनाएं (जिसमें से 2 गायब हैं), रेसक्यूंक, उसके बाद अन्य दो डिस्क जोड़ें।


6

बस दो 2TB डिस्क mdadm RAID 1 पर LVM से चार डिस्क RAID 10 (दो मूल + दो नए डिस्क) पर LVM से जा रहा है।

जैसा कि @aditsu ने उल्लेख किया है कि ड्राइव ऑर्डर सरणी बनाते समय महत्वपूर्ण है।

mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda missing /dev/sdb missing

ऊपर कोड दो अनुपलब्ध डिस्क के साथ प्रयोग करने योग्य सरणी देता है (यदि आप संपूर्ण डिस्क का उपयोग नहीं कर रहे हैं तो विभाजन संख्या जोड़ें)। जैसे ही तीसरी डिस्क जोड़ी जाएगी वह सिंक होना शुरू हो जाएगी। मैंने तीसरी डिस्क सिंक करने से पहले चौथी डिस्क को जोड़ा। तीसरी डिस्क समाप्त होने तक यह एक स्पेयर के रूप में दिखाया गया था तब यह सिंक करना शुरू कर दिया।

मेरी स्थिति के लिए कदम:

  1. अच्छा बैकअप बनायें।

  2. दो लापता डिस्क के साथ एक अपमानित 4 डिस्क RAID 10 सरणी बनाएं (हम लापता डिस्क को # 2 और 4 कहेंगे)।

  3. पत्नी को बताएं कि वह उन फाइलों को न बदले / जोड़े, जिनकी उन्हें परवाह है

  4. विफल और RAID 1 सरणी (डिस्क 4) से एक डिस्क को हटा दें।

  5. RAID 1 सरणी से RAID 10 सरणी में डिस्क 2 खाली छोड़कर भौतिक एक्सटेंशन्स को ले जाएं।

  6. सक्रिय RAID 1 सरणी को मारें, अब खाली डिस्क (डिस्क 2) को RAID 10 सरणी में जोड़ें, और resync पूरा होने की प्रतीक्षा करें।

  7. RAID 10 सरणी में RAID 1 (डिस्क 4) से हटाए गए पहले डिस्क को जोड़ें।

  8. पत्नी को आगे जाने दो।

चरण 7 में मुझे लगता है कि ड्राइव 1, 2, या 4 (बिना डिस्क 4 के रेसक्यू के दौरान) सरणी को मारे बिना विफल हो सकता है। यदि ड्राइव 3 विफल रहता है, तो सरणी पर डेटा टोस्ट है।


+1, विशेष रूप से चरण 3 के लिए;)

-1, निर्देश अस्पष्ट, कोई पत्नी नहीं है, अपना डेटा खो दें
ZAB

1

मैंने अपने छापे 1 को अब छापे 10 में स्थानांतरित कर दिया है और इस पृष्ठ ने मेरी मदद की है लेकिन ऊपर दिए गए उत्तरों में कुछ चीजें गायब हैं। विशेष रूप से मेरा उद्देश्य ext4 जन्मतिथि रखना था।

सेटअप था:

  • प्रत्येक प्रकार के msdos के 2 raid1 डिस्क और ext4 विभाजन के साथ md0 और msdos के साथ mbr
  • 2 नए नए प्राइमर नए प्राइमरी (सभी समान आकार) बन रहे हैं
  • 4 डिस्क्स छापे के परिणामस्वरूप md127 ext4 लेकिन आकार के कारण मुझे mbr से gpt पर स्विच करना पड़ा
  • इसका मेरा घर डिस्क है, इसलिए बूटमैनगर सेटअप की आवश्यकता या इरादा नहीं है
  • मेरे हर रोज़ उबंटू का उपयोग करना (इसलिए: बाहरी बचाव डिस्क का उपयोग नहीं करना)
  • gparted, dd और mdadm का उपयोग करना

जैसा कि किसी ने भी पहले कहा था: शून्य कदम बैकअप होना चाहिए और इस प्रक्रिया में कुछ गलत हो सकता है जिससे चरम डलाटॉस हो सकता है

  1. बैकअप

  2. नए छापे की स्थापना

    1. एक नया छापा बनाएँ

      mdadm -v --create /dev/md127 --level=raid10 --raid-devices=4 /dev/sdb1 missing /dev/sde1 missing
      

      (मैंने पाया है कि लेआउट महत्वपूर्ण है .. दूसरा और चौथा लगता है कि डिफ़ॉल्ट रूप से 'छापे' के पास डुप्लिकेट है)

    2. छापे का विभाजन सेट करें मैं md127 पर gparted सेटिंग का उपयोग कर रहा था और फिर पुराने के आकार का एक नया विभाजन (ext4) जोड़ रहा था या उससे अधिक
  3. विस्थापित

    1. अब डेटा प्राप्त कर रहा है ... मैं पहली बार rsync का उपयोग करने की कोशिश कर रहा था, जो काम कर रहा था, लेकिन जन्म को बनाए रखने में विफल रहा ... पुराने छापे से क्लोन को नया करने के लिए dd का उपयोग करें

      dd if=/dev/md0 of=/dev/md127p1 bs=1M conv=notrunc,noerror,sync
      

      आईटी के लिए प्रतीक्षा
      आप उस प्रक्रिया को USR1 भेजने से सलाह ले सकते

      kill -s USR1 <pid>
      
    2. तय की गई छापे को ठीक करना
      एक महान उपकरण है: आप इसे विभाजन को जांचने और ठीक करने के लिए कहते हैं और इसे केवल कुछ मूसली के साथ उस डिस्क के पूर्ण आकार में बदल सकते हैं;)

    3. उस विभाजन में एक नया uuid सेट करें और इसके साथ अपना fstab अपडेट करें (uuid बदलें)

    4. अपने छापे को गोपनीय तरीके से संग्रहीत करें

      mdadm --examine --scan  >> /etc/mdadm/mdadm.conf
      

      और पुराने को हटा दें

      vim /etc/mdadm/mdadm.conf 
      
    5. रिबूट यदि आप एक बचाव प्रणाली पर नहीं हैं
  4. पुराने को नष्ट करना

    1. पहले वाले को विफल करें और इसे नए छापे में जोड़ें

      mdadm /dev/md0 --fail /dev/sdc1 --remove /dev/sdc1
      

      फिर उस डिवाइस पर gpt बनाएं और एक नया खाली विभाजन सेट करें

      mdadm /dev/md127 --add /dev/sdc1
      

      आईटी के लिए
      आप के साथ जाँच कर सकते हैं

      cat /proc/mdstat
      
    2. दूसरा बंद करो

      mdadm --stop /dev/md0 
      

      फिर उस अंतिम डिवाइस पर gpt बनाएं और एक नया खाली विभाजन फिर से सेट करें

      mdadm /dev/md127 --add /dev/sdd1
      

      फिर से आईटी के लिए


0

मैंने इसे LVM के साथ किया। प्रारंभिक विन्यास: - sda2, sdb2 - और शीर्ष पर raid1 md1 बनाया। sda1 और sdb1 का उपयोग दूसरे RAID1 के लिए / बूट विभाजन के लिए किया गया था। - md1 वॉल्यूम ग्रुप स्पेस में pv था, इस पर कुछ lvm था।

मैंने sdc और sdd जोड़े हैं और sda / sdb जैसे विभाजन बनाए हैं।

इसलिए:

  1. बनाया गया md10 इस प्रकार है:

    mdadm - create / dev / md10 --level raid10 - डर-उपकरण = 4 / dev / sdc2 लापता / dev / sdd2

  2. इस पर vg का विस्तार करें:

    pvcreate / dev / md10 vgextend space / dev / md10

  3. md1 से md10 तक स्थानांतरित किए गए वॉल्यूम:

    pvmove -v / dev / md1 / dev / md10

(किया हुआ इंतजार) 4. वॉल्यूम समूह को कम करें:

vgreduce space /dev/md1
pvremove /dev/md1
  1. रोकें सरणी md1:

    mdadm -S / dev / md1

  2. पुराने md1 से md10 में डिस्क जोड़ें:

    mdadm -a / dev / md10 / dev / sda2 / dev / sdb2

  3. /etc/mdadm/mdadm.conf में अपडेट कॉन्फ़िगरेशन:

    mdadm -E --scan >> / dev / mdadm / mdadm.conf

(और पुराने md1 को हटा दें)

लाइव सिस्टम पर किया गया सब कुछ, kvm के लिए उपयोग किए जाने वाले सक्रिय वॉल्यूम के साथ;)

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