Làm cách nào để kích hoạt khởi động RAID1 xuống cấp trong 16.04LTS?


14

Trong các phiên bản Ubuntu trước đây, việc thêm BOOT_DEGRADED=truevào /etc/initramfs-tools/conf.d/mdadmcho phép hệ thống tự động khởi động khi hệ thống tập tin gốc nằm trên một mảng bị xuống cấp. Điều này dường như không còn hoạt động trong 16.04 LTS.

Tài liệu ( https://help.ubfox.com/lts/serverguide/advified-installation.html ) có vẻ đã lỗi thời; sudo dpkg-reconfigure mdadmkhông còn yêu cầu cho phép khởi động xuống cấp và bootdegraded=trueđối số kernel dường như không còn hoạt động. Hệ thống luôn khởi động vào initramfs khi mảng hệ thống tập tin gốc bị xuống cấp. Từ đó, mdadm -IRscho phép hệ thống khởi động.

Làm cách nào để bật tự động khởi động khi hệ thống tập tin gốc nằm trên mảng RAID1 bị suy giảm trong 16.04LTS?


Lỗi cấu hình thực tế dường như đã được sửa nhưng tài liệu vẫn không chính xác theo lỗi.launchpad.net / serverguide / +orms / 1310162 Theo tôi hiểu, không cần cấu hình thêm nữa để cho phép khởi động với RAID bị xuống cấp (18.04).
Diego

Câu trả lời:


9

Lỗi được đề cập xuất hiện trong mdadm 3.3-2ubfox7 và đã được sửa trong 3.4-2.

Bản phát hành mdadm mới nhất cho yakkety (16.10) 3.4-4 đã có bản sửa lỗi và có sẵn cho 16.10 nhưng chưa (chưa?) Cho 16.04LTS.

Do đó, tôi đã nâng cấp mdadm trong số 16.04LTS của mình bằng tay:

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

Để xác minh tôi

  • tắt máy tính
  • rút một trong các đĩa / ssd
  • Bật máy tính

Quan sát bàn điều khiển: Khởi động từ mảng đột kích xuống cấp hoạt động !

Lỗi: https://bugs.launchpad.net/ubfox/+source/mdadm/+orms/1635049 https://bugs.debian.org/cgi-bin/ormsreport.cgi?orms=784070


Bạn vừa giải quyết được 1 tuần tìm kiếm của tôi ... Cảm ơn người đàn ông.
Fahad Ahammed

Lỗi đó là một đọc chán nản.
Kevin Lyda

1

Có vẻ như nguyên nhân gốc là /usr/share/initramfs-tools/scripts/local-top/mdadmsự vắng mặt của tập lệnh - trên Debian-8, nó được bao gồm trong mdadmgói, nhưng đã bị mất trong cùng gói cho Ubuntu-16.04 ;-(

Vì vậy, sau khi tôi tạo phiên bản hack-bẩn và được tạo lại initramfs- máy chủ Ubuntu-16.04 LTS thử nghiệm của tôi đã có thể khởi động hoàn toàn bằng cách sử dụng ổ cứng thứ hai duy nhất từ ​​mảng 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
Bạn đặt đoạn script này vào /usr/share/initramfs-tools/scripts/local-top/mdadmrồi cài đặt update-initramfs -k all -u. Tuy nhiên, nó sẽ tạo ra một cảnh báo. để vô hiệu hóa cảnh báo đặt case ${1:-} in prereqs) echo "multipath"; exit 0;; esactrước . /scripts/functionsdòng.
Kevin Lyda

Vâng, nó tạo ra một cảnh báo - nhưng cảnh báo này là vô hại. Tôi nghĩ rằng hack functionskhông phải là một ý tưởng tốt vì các tác dụng phụ có thể xảy ra. Vì vậy, tôi chỉ đơn giản là bỏ qua cảnh báo này.
Andrey Kopeyko

0

Tôi gặp vấn đề tương tự với 16.04, mảng đột kích đơn giản từ chối hoạt động ở chế độ xuống cấp.

đây là một cách giải quyết dễ dàng:

  1. tạo tệp mới: / etc / initramfs-tools / scripts / init-Premount / delay_mounting (nhớ đặt + x)

thêm vào

ngủ 20 (hoặc bất cứ giây nào bạn thích)

  1. tạo tập tin mới: / etc / initramfs-tools / scripts / local-top / mdadm (nhớ đặt + x)

thêm phần sau (bắt đầu mảng, nếu bạn có / dev / md0, / dev / md1 và / dev / md2)

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

sau đó

update-initramfs -k all -u , sau đó bạn đã thiết lập xong.

Xin lưu ý rằng, chỉ có 1) là bắt buộc cho 14.04, nhưng sẽ không hại gì khi thực hiện cả hai. ngoài những gì bạn có thể thấy một số thông báo cảnh báo như:

mdadm: không thể chạy mảng / dev / md0: Thiết bị hoặc tài nguyên bận

Điều này là vô hại, vì nó chỉ nói rằng vì / dev / md0 đang hoạt động, bạn chắc chắn có thể viết tập lệnh thông minh hơn chỉ thực thi --an khi cần.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.