Wie aktiviere ich einen beeinträchtigten RAID1-Start in 16.04LTS?

14

In früheren Ubuntu-Versionen wurde hinzugefügt BOOT_DEGRADED=true, /etc/initramfs-tools/conf.d/mdadmdass das System automatisch gestartet werden konnte, wenn sich das Root-Dateisystem auf einem beschädigten Array befand. Dies scheint in 16.04 LTS nicht mehr zu funktionieren.

Die Dokumentation ( https://help.ubuntu.com/lts/serverguide/advanced-installation.html ) scheint veraltet zu sein. sudo dpkg-reconfigure mdadmfragt nicht mehr nach degradierten Booten und das bootdegraded=trueKernel-Argument scheint auch nicht mehr zu funktionieren. Das System bootet immer mit initramfs, wenn das Root-Dateisystem-Array beeinträchtigt ist. Von dort aus mdadm -IRskann das System gestartet werden.

Wie aktiviere ich das automatische Booten, wenn sich das Root-Dateisystem in 16.04LTS auf einem beeinträchtigten RAID1-Array befindet?

vdyvp
quelle
Der eigentliche Konfigurationsfehler scheint behoben zu sein, aber die Dokumentation ist noch immer gemäß bugs.launchpad.net/serverguide/+bug/1310162 inkorrekt. Soweit ich verstanden habe, ist keine zusätzliche Konfiguration mehr erforderlich, um ab sofort einen Start mit beeinträchtigtem RAID zu ermöglichen (18.04).
Diego

Antworten:

9

Der erwähnte Fehler erscheint in mdadm 3.3-2ubuntu7 und wurde in 3.4-2 behoben.

Das neueste mdadm-Release für yakkety (16.10) 3.4-4 enthält das Update bereits und ist für 16.10 verfügbar, aber (noch?) Nicht für 16.04LTS.

So habe ich mdadm von meinem 16.04LTS per Hand aufgerüstet:

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

Ich zu überprüfen

  • Den Computer herunterfahren
  • trennte eine der Festplatten / ssd
  • Schalte den Computer ein

Beobachtung der Konsole: Booten von einem heruntergekommenen RAID-Array funktioniert !

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

Jan Dev
quelle
Du hast gerade meine 1 Wochen Suche gelöst ... Danke Mann.
Fahad Ahammed
Dieser Bug ist eine deprimierende Lektüre.
Kevin Lyda
1

Es scheint, dass die Hauptursache das /usr/share/initramfs-tools/scripts/local-top/mdadmFehlen von Skripten ist - unter Debian-8 ist es im mdadmPaket enthalten, wurde aber im selben Paket für Ubuntu-16.04 verloren ;-(

Nachdem ich die Dirty-Hack-Version erstellt und neu erstellt habe, konnte initramfsmein Test-Ubuntu-16.04-LTS-Server mit der einzigen zweiten Festplatte eines RAID1-Arrays vollständig starten.

#!/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
quelle
1
Sie fügen dieses Skript ein /usr/share/initramfs-tools/scripts/local-top/mdadmund installieren es dann mit update-initramfs -k all -u. Es wird jedoch eine Warnung generiert. um die Warnung case ${1:-} in prereqs) echo "multipath"; exit 0;; esacvor der . /scripts/functionsZeile zu deaktivieren .
Kevin Lyda
Ja, es wird eine Warnung generiert - aber diese Warnung ist harmlos. Ich denke, Hacking functionsist wegen möglicher Nebenwirkungen keine gute Idee. Also ignoriere ich diese Warnung einfach.
Andrey Kopeyko
0

Ich hatte das gleiche Problem mit 16.04, das RAID-Array weigerte sich einfach, in seinem herabgesetzten Modus aktiv zu werden.

Hier ist eine einfache Umgehung:

  1. erstellen neue Datei: / etc / initramfs-tools / scripts / init-PREMOUNT / delay_mounting (erinnere mich an die + einstellen x)

hinzufügen

Schlaf 20 (oder was auch immer Sekunden Sie bevorzugen)

  1. erstellen neue Datei: / etc / initramfs-tools / scripts / local-top / mdadm (erinnere mich an die + x eingestellt)

Fügen Sie Folgendes hinzu (erzwingen Sie das Start-Array, wenn Sie / dev / md0, / dev / md1 und / dev / md2 haben)

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

dann

update-initramfs -k all -u , dann sind Sie fertig.

Bitte beachten Sie, dass für 14.04 nur 1) erforderlich ist, aber es nicht schadet, beides zu tun. Andere als die folgenden Warnmeldungen werden möglicherweise angezeigt:

mdadm: Fehler beim Ausführen von array / dev / md0: Gerät oder Ressource belegt

das ist harmlos, da nur gesagt wird, dass / dev / md0 aktiv ist, kann man definitiv ein schlaueres Skript schreiben, das nur ausgeführt wird, wenn es benötigt wird.

Ying-Hung Chen
quelle