मैं प्रत्येक बूट के बाद mdadm ऑटो-असेंबल RAID कैसे बना सकता हूं?


43

मैंने सफलतापूर्वक RAID (मिररिंग) का उपयोग करके बनाया mdadm। हालाँकि, मुझे प्रत्येक बूट के बाद निम्नलिखित कमांड चलाने चाहिए:

mdadm --stop --scan // to stop /dev/md127 - I don't know where the number 127 even comes from
mdadm --assemble --scan // to start /dev/md0

मैं क्या गलत कर रहा हूं / मुझे इन कमांड को बूट में चलाने की आवश्यकता क्यों है? प्रत्येक (पुनः) बूट के साथ ऑटो शुरू करने का सही तरीका क्या है?

जवाबों:


36

NB: आपको या तो रूट के रूप में लॉग इन करने की आवश्यकता है, या यह सब करने के लिए sudo का उपयोग करें ...

  • इस प्रकार से /etc/mdadm/mdadm.conf फ़ाइल बनाने या संपादित करने के लिए अपने पसंदीदा संपादक का उपयोग करें :

यदि फ़ाइल मौजूद नहीं है, तो निम्न को नई, खाली फ़ाइल में चिपकाएँ:

# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

DEVICE partitions

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays
  • फ़ाइल सहेजें

  • फ़ाइल के अंत में अपने ऐरे कॉन्फिगर के संदर्भ को जोड़ने के लिए निम्नलिखित कमांड चलाएँ:

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

यह mdadm.conf के अंत में निम्नलिखित की तरह एक पंक्ति जोड़ना चाहिए:

ARRAY / देव / md0 स्तर = raid5 संख्या-उपकरण = 3 मेटाडेटा = 00.90 UUID = a44a52e4: 0211e47f: f15bce44: 817d167c

यदि mdadm कमांड ने ARRAY लाइन के ऊपर कोई अन्य सामान जोड़ा है, तो उसे हटा दें। उदाहरण के लिए, मेरी एक मशीन पर, कमांड 'mdadm: मेटाडेटा प्रारूप 00.90 अज्ञात, अनदेखा कर देता है।' ARRAY लाइन से पहले।

आपका सरणी अब बूट पर ऑटो-बिल्ड होना चाहिए और इस प्रकार आप इसे माउंट करने के लिए / etc / fstab में एक प्रविष्टि जोड़ सकते हैं (यदि यह पहले से मौजूद है)


6
मैं शायद update-initramfs -u
जोड़ूंगा

1
mdadm --detail --scan मेरे सिस्टम पर कुछ भी प्रिंट नहीं करता है, हालांकि मैं यह सुनिश्चित करने के लिए जानता हूं कि मेरे पास दो विभाजन हैं जो एक छापे का हिस्सा हैं (दर्पण)। इस पर किसी भी सामान्य सलाह का स्वागत है।
लेनार्ट रोलैंड

1
@ LennartRolland - mdadm -Esइसके बजाय प्रयास करें ।
SLM

यह मेरे लिए काम नहीं करता था, मुझे grub-install /dev/sdaइसे काम करने के लिए करना था (आपके लिए उपयुक्त किसी भी चीज़ के लिए साडा की जगह)
gorn

वैकल्पिक रूप से आप सिर्फ कर्नेल विकल्प का उपयोग कर सकते हैं: md.auto=1... मैंने वास्तव में इसका पूरी तरह से परीक्षण नहीं किया है, लेकिन माना जाता है कि यह उनका पता लगाता है और उन्हें असेंबल करता है (या कम से कम ऐसा करने की कोशिश करता है)। लेकिन उसके बाद kernel.org/doc/html/v4.15/admin-guide/md.html उस पर थोड़ा अस्पष्ट है: जब md को कर्नेल में संकलित किया जाता है (मॉड्यूल के रूप में नहीं), तो 0xdd प्रकार के विभाजन स्कैन किए जाते हैं और स्वचालित रूप से इकट्ठे हो जाते हैं RAID सरणियों में। [...] कर्नेल २.६.९ के रूप में, केवल ० सुपरब्लॉक के साथ ड्राइव को स्वतः लोड किया जा सकता है और बूट समय पर चलाया जा सकता है। और यह md.auto (या जो कुछ भी था) को संदर्भित नहीं करता है इसलिए मुझे अब यकीन नहीं है।
प्रिफटन

7

मुझे लगता है कि यह एक पुराना सवाल है, लेकिन मेरे पास उबंटू सर्वर 12.04 के 32-बिट संस्करण पर इसके साथ निराशाजनक समय था।

रनिंग mdadm --detail --scan >> /etc/mdadm/mdadm.confने रेखा को जोड़ दिया

ARRAY / देव / md0 मेटाडेटा = 1.2 नाम = ubuntu: 0 UUID = a8a570c6: 96f61865: 05abe131: 5c2e2f7e

एक रिबूट के बाद मैं कभी नहीं देख सकता / देव / md0। mdadm --detail --scanफिर से चल रहा है (फ़ाइल में परिणाम डाले बिना) मैं देखूंगा

ARRAY / देव / md / ubuntu: 0 मेटाडेटा = 1.2 नाम = ubuntu: 0 UUID = a8a570c6: 96f61865: 05abe131: 5c2e2f7e

और मैन्युअल रूप से बढ़ते /dev/md/ubuntu:0काम करेगा। अंत में, यही मैंने fstab फाइल में भी डाला था।

मुझे यकीन नहीं है कि मुझे क्या गलत मिला, अगर यह उबंटू 12.04 में काम करता है, या यदि यह एक बुरा अभ्यास है। बस वह साझा करना चाहता था जो मेरे लिए काम करता है।


यहां भी यही समस्या। यकीन नहीं होता है कि यह एक समस्या है, हालांकि ..
क्रिस्टोफ़ डे ट्रॉयर

3

डेबियन व्हीज़ी पर एक और कदम की आवश्यकता है: /etc/default/mdadmसेट ऑटोस्टार्ट में झूठे से सच तक

#ऑटो स्टार्ट:
# mdadm को /etc/mdadm/mdadm.conf में स्वचालित रूप से सूचीबद्ध सरणियाँ शुरू करनी चाहिए
# बूट के दौरान?
AUTOSTART सच =

इसके अलावा मुझे विकल्प के mdadm -Es >>/etc/mdadm/mdadm.confबजाय उपयोग करना था --scan, क्योंकि यह मेरे लिए काम नहीं करता था।


3
sudo mdadm -Es >> /etc/mdadm/mdadm.conf

अब निम्नलिखित तरीके से /etc/mdadm/mdadm.conf में जोड़ी गई पंक्तियों को संपादित करें। सब कुछ हटाएं, लेकिन बुनियादी हिस्से। यह दिखना चाहिए

ARRAY /dev/md5 UUID=031cea92:50a7a28c:6b077fe7:8817092a
ARRAY /dev/md6 UUID=53454954:4044eb66:9169d1ed:40905643

नोट: आप अपनी सुविधा के लिए mdX में X चुन सकते हैं।

अब रिबूट करें

sudo update-initramfs -u
sudo reboot

EDIT: कमांड को सही किया गया।


मैंने thi लिखा क्योंकि Linker3000 का जवाब मेरे काम नहीं आया।
Gorn

3

मेरे पास रास्पबेरी जीएनयू / लिनक्स 8 (जेसी) चलाने वाले मेरे रास्पबेरी पाई 2 पर यह समस्या थी। मेरे पास एक RAID सरणी थी /dev/sda1और /dev/sdb1जो बूट पर इकट्ठा होने में विफल रही। मैंने अपनी /etc/mdadm/mdadm.confफाइल में एंट्री की थी

ARRAY /dev/md/0  metadata=1.2 UUID=53454954:4044eb66:9169d1ed:40905643 name=raspberrypi:0 

(आपकी संख्या भिन्न होगी। इसे प्राप्त करने के बारे में अन्य उत्तर देखें।)

मैंने अपनी /etc/fstabफाइल में एंट्री की थी

/dev/md0        /data           ext4    defaults          0       0

(और निश्चित रूप से /dataअस्तित्व में है)

ओपी की तरह, मैं बूट के बाद हाथ से RAID सरणी को इकट्ठा और माउंट कर सकता था, लेकिन मैं इसे बूट के दौरान स्वचालित रूप से होने के बावजूद इसे सही ढंग से सेट करने के बावजूद नहीं कर सका।

मैं निम्नानुसार समस्या को हल करने में सक्षम था। मैंने स्क्रिप्ट की जांच की /etc/init.d/mdadm-raidऔर डिबग कोड की एक पंक्ति डाली

ls /dev > /home/pi/devices.txt

इस फ़ाइल को रिबूट करने और जाँचने से मुझे पता चला कि डिवाइस उस समय मौजूद थे /dev/sdaऔर आरंभ में हुआ था, लेकिन विभाजन और गायब थे। मैंने फाइल को एडिट किया और लाइन डाली/dev/sdbmdadm-raid/dev/sda1/dev/sdb1/etc/init.d/mdadm-raid

partprobe

हेडर के बाद (यानी ### END INIT INFOस्क्रिप्ट शुरू होने से पहले लेकिन बाद में )। इससे विभाजन का पता लगाया गया और इसलिए mdadm-raidस्क्रिप्ट समस्या को हल करने के लिए RAID सरणी को इकट्ठा करने में सक्षम थी। आशा है कि यह किसी की मदद करता है!


0

मैं एक रास्पबेरी पाई पर बाहरी यूएसबी एचडीडी के एक जोड़े का उपयोग करके रास्पियन पर इसके साथ लड़ रहा हूं। मुझे यह सुनिश्चित करने के लिए सेवाओं के शुरू के आदेश के साथ गड़बड़ करना पड़ा कि USB ड्राइव के बाद udv द्वारा मान्यता प्राप्त है, लेकिन checkfs.sh (जो बूट समय पर फाइल सिस्टम की जांच करता है) से पहले mdadm-raid शुरू हुआ। यदि mdadm-raid बहुत जल्दी शुरू हो जाता है, तो ड्राइव उपलब्ध नहीं थे और इसलिए सरणी इकट्ठी नहीं हुई थी। इसका मतलब है कि बाद में fsck विफल हो गया और बूट प्रक्रिया एक रखरखाव प्रॉम्प्ट के लिए बाहर हो गई (क्योंकि अन्य सेवाओं के लिए RAID सरणी आवश्यक है)।

Checkroot.sh के बाद mdadm-raid शुरू करने के लिए बूट निर्भरता को संशोधित करना लेकिन checkfs.sh और चलाने से पहले update-rc.d mdadm-raid defaults, उसके बाद update-initramfs -uv -k `uname -r`(नोट बैकटिक्स के आसपास uname) इसे (अंत में) ठीक कर दिया। मेरे लिए, वैसे भी, YMMV।


ध्यान दें कि ऊपर में uname -r को बैक-टिक्स में माना जाता है, लेकिन मैं यह पता नहीं लगा सकता कि उन्हें कैसे बचाना है ताकि वे यहां छपे ...
रॉडने

रास्पबियन का कौन सा संस्करण था? मैं व्हीजी पर ठीक काम कर रहा था, लेकिन जेसी के लिए बदसूरत होने से बूट पर इकट्ठा हो गया।
नौवाथम

0

मैंने कोशिश की

mdadm --create /dev/md/abcdef ...

मैं सॉफ्टलिंक /dev/md/abcdefको रिबूट पर जारी रखता हूं और यदि सॉफ्ट लिंक के माध्यम से डिवाइस तक पहुंचने की आवश्यकता है।

क्या यह स्वीकार्य समाधान है?


0

रास्पबेरी पाई 3 होने, मेरे लिए इस समस्या rootdelay=5को /boot/cmdline.txtहल करने के लिए जोड़ना ।

इसका श्रेय यहां जाता है

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