Come abilitare l'avvio RAID1 degradato in 16.04LTS?


14

Nelle precedenti versioni di Ubuntu, l'aggiunta BOOT_DEGRADED=trueper /etc/initramfs-tools/conf.d/mdadmconsentire al sistema di avviarsi automaticamente quando il filesystem di root si trova su un array degradato. Questo sembra non funzionare più in 16.04 LTS.

La documentazione ( https://help.ubuntu.com/lts/serverguide/advanced-installation.html ) sembra essere obsoleta; sudo dpkg-reconfigure mdadmnon chiede più di consentire boot degradati e anche l' bootdegraded=trueargomento del kernel sembra non funzionare più. Il sistema si avvia sempre in initramfs quando l'array del filesystem di root è degradato. Da lì, mdadm -IRsconsente al sistema di avviarsi.

Come abilitare l'avvio automatico quando il filesystem di root si trova su un array RAID1 degradato in 16.04LTS?


Il vero bug di configurazione sembra essere stato corretto, ma la documentazione non è ancora corretta secondo bugs.launchpad.net/serverguide/+bug/1310162 Per quanto ho capito, non è più necessaria alcuna configurazione aggiuntiva per consentire l'avvio con RAID degradato (18.04).
Diego,

Risposte:


9

Il bug menzionato appare in mdadm 3.3-2ubuntu7 ed è stato corretto in 3.4-2.

L'ultima versione di mdadm per yakkety (16.10) 3.4-4 contiene già la correzione ed è disponibile per 16.10 ma non (ancora?) Per 16.04LTS.

Così ho aggiornato a mano mdadm del mio 16.04LTS:

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

Per verificare I.

  • spegni il computer
  • scollegato uno dei dischi / ssd
  • Accendi il computer

Osservando la console: l' avvio dall'array raid degradato funziona !

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


Hai appena risolto la mia ricerca di 1 settimana ... Grazie amico.
Fahad Ahammed,

Quel bug è una lettura deprimente.
Kevin Lyda,

1

Sembra che la causa principale sia l' /usr/share/initramfs-tools/scripts/local-top/mdadmassenza di script - su Debian-8 è incluso nel mdadmpacchetto, ma è stato perso nello stesso pacchetto per Ubuntu-16.04 ;-(

Quindi, dopo aver creato la sua versione di hacker e ricreata initramfs, il mio server di prova Ubuntu-16.04 LTS è stato in grado di avviarsi completamente utilizzando l'unico secondo HDD dall'array 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
Inserire questo script /usr/share/initramfs-tools/scripts/local-top/mdadme quindi installarlo con update-initramfs -k all -u. Tuttavia genererà un avviso. per disabilitare l'avviso inserito case ${1:-} in prereqs) echo "multipath"; exit 0;; esacprima della . /scripts/functionsriga.
Kevin Lyda,

Sì, genera un avviso, ma questo avviso è innocuo. Penso che l'hacking functionsnon sia una buona idea a causa dei possibili effetti collaterali. Quindi ignoro semplicemente questo avviso.
Andrey Kopeyko,

0

Ho avuto lo stesso problema con 16.04, l'array raid ha semplicemente rifiutato di attivarsi nella sua modalità degradata.

ecco una soluzione semplice:

  1. crea un nuovo file: / etc / initramfs-tools / scripts / init-premount / delay_mounting (ricordati di impostare il + x)

Inserisci

dormire 20 (o qualunque secondo tu preferisca)

  1. crea un nuovo file: / etc / initramfs-tools / scripts / local-top / mdadm (ricordati di impostare il + x)

aggiungi quanto segue (forza start array, se hai / dev / md0, / dev / md1 e / dev / md2)

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

poi

update-initramfs -k all -u , allora sei pronto.

Si noti che è richiesto solo 1) per 14.04, ma non fa male fare entrambe le cose. diverso da quello che potresti vedere alcuni messaggi di avviso come:

mdadm: impossibile eseguire array / dev / md0: dispositivo o risorsa occupata

che è innocuo, dal momento che dice solo che poiché / dev / md0 è attivo, puoi sicuramente scrivere script più intelligenti eseguendo --run solo quando necessario.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.