Bagaimana cara mengaktifkan boot RAID1 yang terdegradasi di 16.04LTS?

14

Dalam versi ubuntu sebelumnya, menambahkan BOOT_DEGRADED=trueagar /etc/initramfs-tools/conf.d/mdadmsistem dapat boot secara otomatis ketika sistem file root berada pada array yang rusak. Ini sepertinya tidak lagi berfungsi di 16,04 LTS.

Dokumentasi ( https://help.ubuntu.com/lts/serverguide/advanced-installation.html ) tampaknya sudah ketinggalan zaman; sudo dpkg-reconfigure mdadmtidak lagi meminta untuk mengizinkan boot terdegradasi dan bootdegraded=trueargumen kernel juga sepertinya tidak lagi berfungsi. Sistem selalu melakukan boot ke initramfs ketika array root filesystem terdegradasi. Dari sana, mdadm -IRsmemungkinkan sistem untuk boot.

Bagaimana cara mengaktifkan boot otomatis ketika sistem file root pada array RAID1 yang terdegradasi di 16.04LTS?

vdyvp
sumber
Bug konfigurasi aktual tampaknya sudah diperbaiki tetapi dokumentasi masih salah seperti bugs.launchpad.net/serverguide/+bug/1310162 Sejauh yang saya mengerti, tidak ada konfigurasi tambahan yang diperlukan lagi untuk memungkinkan boot dengan RAID yang terdegradasi seperti sekarang. (18,04).
Diego

Jawaban:

9

Bug yang disebutkan muncul di mdadm 3.3-2ubuntu7 dan telah diperbaiki di 3.4-2.

Rilis mdadm terbaru untuk yakkety (16.10) 3.4-4 sudah berisi perbaikan dan tersedia untuk 16.10 tetapi belum (belum?) Untuk 16.04LTS.

Jadi saya memutakhirkan mdadm 16.04LTS saya dengan tangan:

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

Untuk memverifikasi saya

  • matikan komputer
  • cabut salah satu disk / ssd
  • Nyalakan komputer

Mengamati konsol: Boot dari deretan raid yang rusak berfungsi !

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

Jan Dev
sumber
Anda baru saja menyelesaikan pencarian 1 minggu saya ... Terima kasih kawan.
Fahad Ahammed
Bug itu adalah bacaan yang menyedihkan.
Kevin Lyda
1

Tampaknya penyebab utama adalah /usr/share/initramfs-tools/scripts/local-top/mdadmtidak adanya skrip - pada Debian-8 termasuk dalam mdadmpaket, tetapi hilang dalam paket yang sama untuk Ubuntu-16.04 ;-(

Jadi, setelah saya membuat versi kotor-retas dan diciptakan kembali initramfs- server Ubuntu-16.04 LTS pengujian saya dapat sepenuhnya boot menggunakan HDD kedua hanya dari array RAID1.

#!/bin/sh
# 2016-07-13 [email protected] - 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
Andrey Kopeyko
sumber
1
Anda memasukkan skrip ini /usr/share/initramfs-tools/scripts/local-top/mdadmdan kemudian menginstal dengan update-initramfs -k all -u. Namun itu akan menghasilkan peringatan. untuk menonaktifkan peringatan case ${1:-} in prereqs) echo "multipath"; exit 0;; esacsebelum . /scripts/functionsbaris.
Kevin Lyda
Ya, itu menghasilkan peringatan - tetapi peringatan ini tidak berbahaya. Saya pikir peretasan functionsbukan ide yang baik karena kemungkinan efek samping. Jadi saya mengabaikan peringatan ini.
Andrey Kopeyko
0

Saya memiliki masalah yang sama dengan 16.04, array serangan sederhana menolak untuk aktif dalam mode terdegradasi.

di sini adalah solusi mudah:

  1. buat file baru: / etc / initramfs-tools / scripts / init-premount / delay_mounting (ingat untuk mengatur + x)

Menambahkan

tidur 20 (atau apa pun detik yang Anda suka)

  1. buat file baru: / etc / initramfs-tools / scripts / local-top / mdadm (ingat untuk mengatur + x)

tambahkan berikut ini (paksa mulai array, jika Anda memiliki / dev / md0, / dev / md1 dan / dev / md2)

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

kemudian

perbarui-initramfs -k all -u , maka Anda sudah siap.

Harap dicatat bahwa, hanya 1) diperlukan untuk 14,04, tetapi tidak ada salahnya untuk melakukan keduanya. selain Anda mungkin melihat beberapa pesan peringatan seperti:

mdadm: gagal menjalankan array / dev / md0: Perangkat atau sumber daya sibuk

yang tidak berbahaya, karena hanya mengatakan bahwa karena / dev / md0 aktif, Anda pasti dapat menulis skrip yang lebih cerdas hanya menjalankan - run ketika dibutuhkan.

Ying-Hung Chen
sumber