16.04LTS में RAID1 बूट को अपमानित करने में सक्षम कैसे करें?


14

पिछले ubuntu संस्करणों में, सिस्टम को स्वचालित रूप से बूट BOOT_DEGRADED=trueकरने /etc/initramfs-tools/conf.d/mdadmकी अनुमति देने के लिए जोड़ना जब रूट फाइल सिस्टम एक अपमानित सरणी पर है। यह अब 16.04 LTS में काम नहीं करता है।

प्रलेखन ( https://help.ubuntu.com/lts/serverguide/advanced-installation.html ) पुराना लग रहा है; sudo dpkg-reconfigure mdadmअब अपमानित जूते की अनुमति देने के लिए नहीं कहता है और bootdegraded=trueकर्नेल तर्क भी अब काम नहीं करता है। सिस्टम हमेशा initramfs में बूट होता है जब रूट फाइलसिस्टम सरणी को नीचा दिखाया जाता है। वहां से, mdadm -IRsसिस्टम को बूट करने की अनुमति देता है।

जब रूट फाइल सिस्टम 16.04LTS में एक खराब RAID1 सरणी पर होता है, तो मैं स्वचालित बूटिंग को कैसे सक्षम करूं?


वास्तविक कॉन्फ़िगरेशन बग ठीक किया गया लगता है, लेकिन दस्तावेज़ अभी भी गलत है। बग्सप्लैड। Net /serverguide/+bug/1310162 के अनुसार, जहाँ तक मैं समझता था, अपमानित RAID के साथ बूट के लिए अनुमति देने के लिए अब अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता नहीं है। (18.04)।
डिएगो

जवाबों:


9

उल्लिखित बग mdadm 3.3-2ubuntu7 में दिखाई देता है और 3.4-2 में तय किया गया है।

नवीनतम mdadm रिलीज के लिए yakkety (16.10) 3.4-4 में पहले से ही फिक्स है और 16.10 के लिए उपलब्ध है (नहीं? अभी तक?) 16.04LTS के लिए।

इस प्रकार मैंने अपने 16.04LTS के mdadm को हाथ से अपग्रेड किया:

wget http://launchpadlibrarian.net/275652884/mdadm_3.4-4_amd64.deb
sudo dpkg -i mdadm_3.4-4_amd64.deb

मैं सत्यापित करने के लिए

  • कम्प्यूटर बंद कीजिए
  • डिस्क / एसएसडी में से एक को अनप्लग किया गया
  • कम्प्यूटर को चालू करें

कंसोल का अवलोकन करना: अपमानित छापे सरणी से बूट कार्य करता है !

बग: https://bugs.launchpad.net/ubuntu/+source/mdadm/+bug/1635049 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=784070


आपने अभी-अभी खोजकर मेरा 1 सप्ताह हल किया ... धन्यवाद आदमी
फहद अहमद

यह बग एक निराशाजनक रीड है।
केविन लिडा

1

ऐसा लगता है कि मूल कारण /usr/share/initramfs-tools/scripts/local-top/mdadmस्क्रिप्ट की अनुपस्थिति है - डेबियन -8 पर यह mdadmपैकेज में शामिल है , लेकिन उसी पैकेज में खो गया था -16.04-;-(

इसलिए, जब मैंने इसका गंदा-हैक संस्करण बनाया है और फिर से बनाया है initramfs- मेरा परीक्षण Ubuntu-16.04 LTS सर्वर RAID1 सरणी से केवल दूसरे HDD का उपयोग करके पूरी तरह से बूट करने में सक्षम था।

#!/bin/sh
# 2016-07-13 andrey@kopeyko.ru - missed mdadm script for Ubuntu-16.04
# see debian8_host:/usr/share/initramfs-tools/scripts/local-top/mdadm for full version

MDADM=/sbin/mdadm 
. /scripts/functions

echo "===>"
cat /proc/mdstat
echo "===>"
log_begin_msg "Assembling all MD arrays"
if $MDADM --assemble --scan --run --auto=yes
then
  log_success_msg "assembled all arrays."
else
  log_warning_msg "failed to assemble all arrays, attempting individual starts"
  for dev in $(cat /proc/mdstat | grep md | cut -d ' ' -f 1)
  do
    log_begin_msg "attempting mdadm --run $dev"
    if $MDADM --run $dev; then
      log_success_msg "started $dev"
    else
      log_failure_msg "failed to start $dev"
    fi
  done
fi
log_end_msg
echo "===>"
cat /proc/mdstat
echo "===>"

sleep 5

# TODO: run mdadm --readwrite /dev/mdN
# if array is in 'auto-read-only' mode

1
आप इस स्क्रिप्ट को डालें /usr/share/initramfs-tools/scripts/local-top/mdadmऔर फिर से इंस्टॉल करें update-initramfs -k all -u। हालाँकि यह एक चेतावनी उत्पन्न करेगा। लाइन case ${1:-} in prereqs) echo "multipath"; exit 0;; esacसे पहले चेतावनी को निष्क्रिय करने के लिए . /scripts/functions
केविन लिडा

हां, यह एक चेतावनी उत्पन्न करता है - लेकिन यह चेतावनी हानिरहित है। मुझे लगता है कि functionsसंभावित दुष्प्रभावों के कारण हैकिंग एक अच्छा विचार नहीं है। इसलिए मैं बस इस चेतावनी को नजरअंदाज करता हूं।
एंड्री कोपेयेको

0

मुझे 16.04 के साथ एक ही समस्या थी, छापे सरणी ने अपने अपमानित मोड में सक्रिय होने से इनकार कर दिया।

यहाँ एक आसान तरीका है:

  1. नई फ़ाइल बनाएँ: / etc / initramfs-tools / script / init-premount / delay_mounting (+ x सेट करने के लिए याद रखें)

जोड़ना

नींद २० (या जो भी सेकंड आपको पसंद हो)

  1. नई फ़ाइल बनाएँ: / etc / initramfs-tools / script / local-top / mdadm (+ x सेट करने के लिए याद रखें)

निम्नलिखित जोड़ें (बल आरम्भ सरणी, यदि आपके पास / dev / md0, / dev / md1 और / dev / md2 है)

mdadm --run / dev / md0
mdadm --run / dev / md1
mdadm --run / dev / md2

फिर

update-initramfs -k all -u , तो आप सभी तैयार हैं।

कृपया ध्यान दें कि, 14.04 के लिए केवल 1) आवश्यक है, लेकिन यह दोनों करने के लिए चोट नहीं करता है। आपके अलावा कुछ चेतावनी संदेश देख सकते हैं जैसे:

mdadm: सरणी / dev / md0 चलाने में विफल: डिवाइस या संसाधन व्यस्त

जो हानिरहित है, क्योंकि यह केवल यह कहता है कि क्योंकि / dev / md0 सक्रिय है, तो आप निश्चित रूप से होशियार स्क्रिप्ट को केवल तभी निष्पादित कर सकते हैं - जब जरूरत हो।


0

अन्य जवाबों में समस्या को ठीक करने के लिए वर्कअराउंड हैं, लेकिन यह उबंटू के साथ एक बग है और इसे ठीक किया जाना चाहिए। यहाँ बग है: https://bugs.launchpad.net/ubuntu/+source/mdadm/+bug/161649

यह पहले से तय था: https://wiki.ubuntu.com/ReliableRaid

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