วิธีการเปิดใช้งานการบูท RAID1 ที่ลดระดับลงใน 16.04LTS


14

ในรุ่นก่อนหน้านี้อูบุนตูเพิ่ม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อนุญาตให้ระบบบูต

ฉันจะเปิดใช้งานการบูทอัตโนมัติได้อย่างไรเมื่อระบบไฟล์รูทอยู่ในอาร์เรย์ RAID1 ที่ลดระดับลงใน 16.04LTS


ดูเหมือนว่าข้อผิดพลาดการกำหนดค่าจริงจะได้รับการแก้ไข แต่เอกสารยังคงไม่ถูกต้องตามข้อบกพร่อง. launchpad.net/serverguide/+bug/1310162เท่าที่ฉันเข้าใจไม่จำเป็นต้องมีการตั้งค่าเพิ่มเติมอีกต่อไปเพื่อให้สามารถบู๊ตกับ RAID ที่ถูกลดระดับได้แล้วในตอนนี้ (18.04)
Diego

คำตอบ:


9

ข้อผิดพลาดที่กล่าวถึงปรากฏใน mdadm 3.3-2ubuntu7 และได้รับการแก้ไขใน 3.4-2

mdadm รีลีสล่าสุดสำหรับ yakkety (16.10) 3.4-4 มีการแก้ไขอยู่แล้วและพร้อมใช้งานสำหรับ 16.10 แต่ไม่ใช่ (ยัง?) สำหรับ 16.04LTS

ดังนั้นฉันอัพเกรด mdadm จาก 16.04LTS ของฉันด้วยมือ:

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

เพื่อตรวจสอบฉัน

  • ปิดเครื่องคอมพิวเตอร์
  • ถอดปลั๊กหนึ่งในดิสก์ / ssd
  • เปิดคอมพิวเตอร์

การสังเกตคอนโซล: บูตจากอาเรย์ RAID ที่เสื่อมโทรมใช้งานได้ !

ข้อผิดพลาด: https://bugs.launchpad.net/ubuntu/+source/mdadm/+bug/1635049 https://bugs.deunch.org/cgi-bin/bugreport.cgi?bug=784070


คุณเพิ่งแก้ไขการค้นหาของฉัน 1 สัปดาห์ ... ขอบคุณผู้ชาย
Fahad Ahammed

ข้อผิดพลาดนั่นคือการอ่านที่ตกต่ำ
Kevin Lyda

1

ดูเหมือนว่าสาเหตุที่แท้จริงคือการ/usr/share/initramfs-tools/scripts/local-top/mdadmขาดสคริปต์ - บน Debian-8 มันรวมอยู่ในmdadmแพ็คเกจ แต่หายไปในแพ็คเกจเดียวกันสำหรับ Ubuntu-16.04 ;-(

ดังนั้นหลังจากที่ฉันสร้างรุ่นแฮ็คที่สกปรกและสร้างใหม่initramfs- การทดสอบของฉันเซิร์ฟเวอร์ Ubuntu -16.04 LTS ก็สามารถบูตได้อย่างเต็มที่โดยใช้ HDD ตัวที่สองจากอาร์เรย์ RAID1

#!/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บรรทัด
Kevin Lyda

ใช่มันสร้างคำเตือน - แต่คำเตือนนี้ไม่เป็นอันตราย ฉันคิดว่าการแฮ็คfunctionsไม่ใช่ความคิดที่ดีเพราะอาจมีผลข้างเคียง ดังนั้นฉันก็ไม่สนใจคำเตือนนี้
Andrey Kopeyko

0

ฉันมีปัญหาแบบเดียวกันกับ 16.04 แถวลำดับการจู่โจมง่ายปฏิเสธที่จะทำงานในโหมดที่เสื่อมโทรม

นี่เป็นวิธีแก้ปัญหาง่ายๆ:

  1. สร้างไฟล์ใหม่: / etc / initramfs-tools / สคริปต์ / init-premount / delay_mounting (อย่าลืมตั้งค่า + x)

เพิ่ม

นอน 20 (หรืออะไรก็ได้ที่คุณต้องการ)

  1. สร้างไฟล์ใหม่: / etc / initramfs-tools / สคริปต์ / 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จากนั้นคุณจะตั้งค่าทั้งหมด

โปรดทราบว่ามีเพียง 1) ที่จำเป็นสำหรับ 14.04 แต่ไม่เจ็บที่จะทำทั้งสองอย่าง นอกเหนือจากที่คุณอาจเห็นข้อความเตือนบางอย่างเช่น:

mdadm: ไม่สามารถเรียกใช้อาร์เรย์ / dev / md0: อุปกรณ์หรือทรัพยากรไม่ว่าง

ซึ่งไม่เป็นอันตรายเนื่องจากมันบอกเพียงว่าเพราะ / dev / md0 ทำงานอยู่คุณสามารถเขียนสคริปต์ที่ชาญฉลาดได้ก็ต่อเมื่อรัน - รันเมื่อจำเป็นเท่านั้น


0

คำตอบอื่น ๆ ที่นี่มีวิธีแก้ไขปัญหาเพื่อแก้ไขปัญหา แต่นี่เป็นข้อผิดพลาดกับ Ubuntu และควรได้รับการแก้ไข นี่คือข้อผิดพลาด: https://bugs.launchpad.net/ubuntu/+source/mdadm/+bug/1635049

มันได้รับการแก้ไขก่อนหน้านี้: https://wiki.ubuntu.com/ReliableRaid

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.