¿Cómo habilitar el arranque RAID1 degradado en 16.04LTS?

14

En las versiones anteriores de Ubuntu, añadiendo BOOT_DEGRADED=truea /etc/initramfs-tools/conf.d/mdadmpermitido que el sistema arranque automáticamente cuando el sistema de archivos raíz está en una matriz degradada. Esto ya no parece funcionar en 16.04 LTS.

La documentación ( https://help.ubuntu.com/lts/serverguide/advanced-installation.html ) parece estar desactualizada; sudo dpkg-reconfigure mdadmya no pide permitir botas degradadas y el bootdegraded=trueargumento del núcleo tampoco parece funcionar. El sistema siempre se inicia en initramfs cuando la matriz del sistema de archivos raíz se degrada. A partir de ahí, mdadm -IRspermite que el sistema arranque.

¿Cómo habilito el arranque automático cuando el sistema de archivos raíz está en una matriz RAID1 degradada en 16.04LTS?

vdyvp
fuente
El error de configuración real parece estar solucionado, pero la documentación sigue siendo incorrecta según bugs.launchpad.net/serverguide/+bug/1310162 Hasta donde tengo entendido, ya no se necesita ninguna configuración adicional para permitir el arranque con RAID degradado a partir de ahora (18.04).
Diego

Respuestas:

9

El error mencionado aparece en mdadm 3.3-2ubuntu7 y se ha corregido en 3.4-2.

La última versión de mdadm para yakkety (16.10) 3.4-4 ya contiene la solución y está disponible para 16.10 pero no (¿todavía?) Para 16.04LTS.

Por lo tanto, actualicé mdadm de mi 16.04LTS a mano:

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

Para verificar I

  • apaga el ordenador
  • desenchufó uno de los discos / ssd
  • Enciende el ordenador

Observando la consola: ¡ Arrancar desde una matriz de banda degradada funciona !

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

Jan Dev
fuente
Acabas de resolver mi búsqueda de 1 semana ... Gracias hombre.
Fahad Ahammed
Ese error es una lectura deprimente.
Kevin Lyda
1

Parece que la causa raíz es la /usr/share/initramfs-tools/scripts/local-top/mdadmausencia de script: en Debian-8 está incluido en el mdadmpaquete, pero se perdió en el mismo paquete para Ubuntu-16.04 ;-(

Entonces, después de crear su versión de hackeo sucio y recrearla initramfs, mi servidor de prueba Ubuntu-16.04 LTS pudo arrancar completamente usando el único segundo HDD de la matriz 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
fuente
1
Pones este script /usr/share/initramfs-tools/scripts/local-top/mdadmy luego lo instalas con update-initramfs -k all -u. Sin embargo, generará una advertencia. para deshabilitar la advertencia puesta case ${1:-} in prereqs) echo "multipath"; exit 0;; esacantes de la . /scripts/functionslínea.
Kevin Lyda
Sí, genera una advertencia, pero esta advertencia es inofensiva. Creo que piratear functionsno es una buena idea debido a los posibles efectos secundarios. Así que simplemente ignoro esta advertencia.
Andrey Kopeyko
0

Tuve el mismo problema con 16.04, la matriz de incursiones simple se negó a activarse en su modo degradado.

Aquí hay una solución fácil:

  1. cree un nuevo archivo: / etc / initramfs-tools / scripts / init-premount / delay_mounting (recuerde configurar el + x)

añadir

dormir 20 (o los segundos que prefieras)

  1. cree un nuevo archivo: / etc / initramfs-tools / scripts / local-top / mdadm (recuerde configurar el + x)

agregue lo siguiente (force start array, si tiene / dev / md0, / dev / md1 y / dev / md2)

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

luego

update-initramfs -k all -u , entonces ya está todo listo.

Tenga en cuenta que solo se requiere 1) para 14.04, pero no está de más hacer ambas cosas. aparte de que puede ver algún mensaje de advertencia como:

mdadm: no se pudo ejecutar array / dev / md0: dispositivo o recurso ocupado

lo cual es inofensivo, ya que solo dice que debido a que / dev / md0 está activo, definitivamente puedes escribir un script más inteligente solo ejecutar --run cuando sea necesario.

Chen Ying-Hung
fuente