Comment activer le démarrage RAID1 dégradé en 16.04LTS?

14

Dans les versions précédentes d'ubuntu, l'ajout BOOT_DEGRADED=trueà /etc/initramfs-tools/conf.d/mdadmpermettait au système de démarrer automatiquement lorsque le système de fichiers racine se trouvait sur une baie dégradée. Cela ne semble plus fonctionner en 16.04 LTS.

La documentation ( https://help.ubuntu.com/lts/serverguide/advanced-installation.html ) semble obsolète; sudo dpkg-reconfigure mdadmne demande plus d'autoriser les démarrages dégradés et l' bootdegraded=trueargument du noyau ne semble plus fonctionner. Le système démarre toujours dans initramfs lorsque la baie de systèmes de fichiers racine est dégradée. À partir de là, mdadm -IRspermet au système de démarrer.

Comment activer le démarrage automatique lorsque le système de fichiers racine se trouve sur une matrice RAID1 dégradée en 16.04LTS?

vdyvp
la source
Le bug de configuration réel semble être corrigé mais la documentation est toujours incorrecte selon bugs.launchpad.net/serverguide/+bug/1310162 Pour autant que je sache , aucune configuration supplémentaire n'est plus nécessaire pour permettre le démarrage avec un RAID dégradé à partir de maintenant (18.04).
Diego

Réponses:

9

Le bogue mentionné apparaît dans mdadm 3.3-2ubuntu7 et a été corrigé dans 3.4-2.

La dernière version de mdadm pour yakkety (16.10) 3.4-4 contient déjà le correctif et est disponible pour 16.10 mais pas (encore?) Pour 16.04LTS.

J'ai donc mis à jour manuellement mdadm de mon 16.04LTS:

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

Pour vérifier que je

  • éteindre l'ordinateur
  • débranché l'un des disques / ssd
  • Allumer l'ordinateur

Observation de la console: le démarrage à partir d'un tableau de raid dégradé fonctionne !

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

Jan Dev
la source
Vous venez de résoudre mes 1 semaines de recherche ... Merci mec.
Fahad Ahammed
Ce bug est une lecture déprimante.
Kevin Lyda
1

Il semble que la cause principale soit l' /usr/share/initramfs-tools/scripts/local-top/mdadmabsence de script - sur Debian-8, il est inclus dans le mdadmpaquet, mais a été perdu dans le même paquet pour Ubuntu-16.04 ;-(

Donc, après avoir créé sa version de hack sale et recréé initramfs- mon serveur de test Ubuntu-16.04 LTS a pu démarrer complètement en utilisant le seul deuxième disque dur de la matrice 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
la source
1
Vous mettez ce script dans /usr/share/initramfs-tools/scripts/local-top/mdadmpuis installez avec update-initramfs -k all -u. Cependant, cela générera un avertissement. pour désactiver l'avertissement placé case ${1:-} in prereqs) echo "multipath"; exit 0;; esacavant la . /scripts/functionsligne.
Kevin Lyda
Oui, il génère un avertissement - mais cet avertissement est inoffensif. Je pense que le piratage functionsn'est pas une bonne idée en raison des effets secondaires possibles. J'ignore donc simplement cet avertissement.
Andrey Kopeyko
0

J'ai eu le même problème avec 16.04, le tableau RAID simple refusait de s'activer dans son mode dégradé.

voici une solution simple:

  1. créer un nouveau fichier: / etc / initramfs-tools / scripts / init-premount / delay_mounting (n'oubliez pas de régler le + x)

ajouter

dormir 20 (ou quelque secondes que vous préférez)

  1. créer un nouveau fichier: / etc / initramfs-tools / scripts / local-top / mdadm (n'oubliez pas de définir le + x)

ajoutez ce qui suit (forcer le tableau de démarrage, si vous avez / dev / md0, / dev / md1 et / dev / md2)

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

ensuite

update-initramfs -k all -u , alors vous êtes prêt.

Veuillez noter que seul 1) est requis pour 14.04, mais cela ne fait pas de mal de faire les deux. autre que vous pouvez voir un message d'avertissement tel que:

mdadm: échec de l'exécution de la baie / dev / md0: périphérique ou ressource occupé

ce qui est inoffensif, car il dit seulement que parce que / dev / md0 est actif, vous ne pouvez certainement écrire un script plus intelligent qu'exécuter --run en cas de besoin.

Ying-Hung Chen
la source