Jak włączyć zdegradowany rozruch RAID1 w 16.04LTS?

14

W poprzednich wersjach Ubuntu, dodając BOOT_DEGRADED=truedo /etc/initramfs-tools/conf.d/mdadmdozwolony system do automatycznego rozruchu, gdy system plików jest na zdegradowanej tablicy. Wydaje się, że to już nie działa w 16.04 LTS.

Dokumentacja ( https://help.ubuntu.com/lts/serverguide/advanced-installation.html ) wygląda na nieaktualną; sudo dpkg-reconfigure mdadmnie prosi już o zezwolenie na zdegradowane rozruchy, a bootdegraded=trueargument jądra również nie działa. System zawsze uruchamia się w initramfs, gdy tablica głównego systemu plików jest zdegradowana. Stamtąd mdadm -IRsumożliwia uruchomienie systemu.

Jak włączyć automatyczne uruchamianie, gdy główny system plików znajduje się w zdegradowanej macierzy RAID1 w wersji 16.04LTS?

vdyvp
źródło
Rzeczywisty błąd konfiguracji wydaje się być naprawiony, ale dokumentacja jest nadal niepoprawna, jak na bugs.launchpad.net/serverguide/+bug/1310162 O ile rozumiem, nie jest już wymagana żadna dodatkowa konfiguracja, aby umożliwić rozruch ze zdegradowanym RAID (18.04).
Diego

Odpowiedzi:

9

Wspomniany błąd pojawia się w mdadm 3.3-2ubuntu7 i został naprawiony w 3.4-2.

Najnowsza wersja mdadm dla yakkety (16.10) 3.4-4 zawiera już poprawkę i jest dostępna dla 16.10, ale nie (jeszcze?) Dla 16.04LTS.

W ten sposób ręcznie zaktualizowałem mdadm mojego 16.04LTS:

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

Aby zweryfikować I

  • Wyłącz komputer
  • odłączono jeden z dysków / ssd
  • Włącz komputer

Obserwacja konsoli: działa rozruch ze zdegradowanej macierzy RAID !

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

użytkownik636290
źródło
Właśnie rozwiązałeś moje 1 tygodnie poszukiwań ... Dzięki stary.
Fahad Ahammed
Ten błąd to przygnębiająca lektura.
Kevin Lyda,
1

Wydaje się, że główną przyczyną jest /usr/share/initramfs-tools/scripts/local-top/mdadmbrak skryptu - na Debian-8 jest on zawarty w mdadmpakiecie, ale zaginął w tym samym pakiecie dla Ubuntu-16.04 ;-(

Więc po tym, jak stworzyłem jego wersję „brudnego hacka” i odtworzyłem initramfs- mój testowy serwer LTS Ubuntu-16.04 był w stanie w pełni uruchomić się przy użyciu jedynego drugiego dysku twardego z macierzy 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
źródło
1
Umieszczasz ten skrypt, /usr/share/initramfs-tools/scripts/local-top/mdadma następnie instalujesz update-initramfs -k all -u. Jednak wygeneruje ostrzeżenie. aby wyłączyć ostrzeżenie umieszczone case ${1:-} in prereqs) echo "multipath"; exit 0;; esacprzed . /scripts/functionslinią.
Kevin Lyda,
Tak, generuje ostrzeżenie - ale to ostrzeżenie jest nieszkodliwe. Myślę, że hakowanie functionsnie jest dobrym pomysłem ze względu na możliwe skutki uboczne. Po prostu ignoruję to ostrzeżenie.
Andrey Kopeyko,
0

Miałem ten sam problem z 16.04, prosta tablica rajdowa odmówiła aktywacji w trybie zdegradowanym.

oto proste obejście:

  1. utwórz nowy plik: / etc / initramfs-tools / scripts / init-premount / delay_mounting (pamiętaj, aby ustawić + x)

Dodaj

spać 20 (lub dowolne sekundy, które wolisz)

  1. utwórz nowy plik: / etc / initramfs-tools / scripts / local-top / mdadm (pamiętaj, aby ustawić + x)

dodaj następujące (wymuś startową tablicę, jeśli masz / dev / md0, / dev / md1 i / dev / md2)

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

następnie

update-initramfs -k all -u , to wszystko gotowe.

Należy pamiętać, że tylko 1) jest wymagany w przypadku 14.04, ale nie zaszkodzi to zrobić obu. inne niż możesz zobaczyć komunikat ostrzegawczy, taki jak:

mdadm: nie udało się uruchomić tablicy / dev / md0: Urządzenie lub zasób zajęte

co jest nieszkodliwe, ponieważ mówi tylko, że ponieważ / dev / md0 jest aktywny, zdecydowanie możesz napisać, że mądrzejszy skrypt wykona tylko - uruchom w razie potrzeby.

Ying-Hung Chen
źródło