Como ativar a inicialização RAID1 degradada no 16.04LTS?

12

Nas versões anteriores do Ubuntu, a adição de BOOT_DEGRADED=true a /etc/initramfs-tools/conf.d/mdadm permitia que o sistema inicializasse automaticamente quando o sistema de arquivos raiz estava em uma matriz degradada. Isso não parece mais funcionar em 16.04 LTS.

A documentação ( link ) parece estar desatualizada; sudo dpkg-reconfigure mdadm não pede mais permissão para inicializações degradadas e o argumento bootdegraded=true do kernel também parece não funcionar mais. O sistema sempre inicializa no initramfs quando a matriz do sistema de arquivos raiz é degradada. A partir daí, mdadm -IRs permite que o sistema inicialize.

Como faço para ativar a inicialização automática quando o sistema de arquivos raiz está em uma matriz RAID1 degradada no 16.04LTS?

    
por vdyvp 22.06.2016 / 00:48

4 respostas

9

O bug mencionado aparece no mdadm 3.3-2ubuntu7 e foi corrigido em 3.4-2.

A versão mais recente do mdadm para yakkety (16.10) 3.4-4 já contém a correção e está disponível para 16.10, mas não (ainda?) para 16.04LTS.

Assim eu atualizei o mdadm do meu 16.04LTS manualmente:

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

Para verificar eu

  • desligue o computador
  • desconectado de um dos discos / ssd
  • Ligue o computador

Observando o console: Inicializa a partir de uma matriz de raid degradada !

Bug: link link

    
por Jan Dev 29.12.2016 / 21:20
1

Parece que a causa raiz é /usr/share/initramfs-tools/scripts/local-top/mdadm de ausência de script - no Debian-8 ele está incluso no mdadm package, mas foi perdido no mesmo pacote para o Ubuntu-16.04; - (

Então, depois que eu criei sua versão de hackagem suja e recriou initramfs - o meu servidor LTS Ubuntu-16.04 foi capaz de inicializar usando o único segundo disco rígido do array 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
    
por Andrey Kopeyko 13.07.2016 / 17:57
0

Eu tive o mesmo problema com o 16.04, o array RAID simples se recusou a ficar ativo em seu modo degradado.

aqui é uma solução fácil:

  1. crie um novo arquivo: /etc/initramfs-tools / scripts / init-premount / delay_mounting (lembre-se de definir o + x)

adicione

sleep 20 (ou qualquer segundo que você preferir)

  1. crie um novo arquivo: /etc/initramfs-tools / scripts / local-top / mdadm (lembre-se de definir o + x)

adicione o seguinte (force start array, se você tiver / dev / md0, / dev / md1 e / dev / md2)

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

então

update-initramfs -k all -u , então está tudo pronto.

Por favor, note que apenas 1) é necessário para 14.04, mas não faz mal fazer ambos. além de você pode ver alguma mensagem de aviso como:

mdadm: falha ao executar matriz / dev / md0: dispositivo ou recurso ocupado

que é inofensivo, já que diz apenas que / dev / md0 está ativo, você pode escrever scripts mais inteligentes e executar --run quando necessário.

    
por Ying-Hung Chen 10.08.2016 / 02:19
0

As outras respostas aqui têm soluções alternativas para corrigir o problema, mas isso é um bug com o Ubuntu e deve ser corrigido. Aqui está o erro: link

Foi corrigido anteriormente: link

    
por Grant Slater 22.10.2016 / 18:49

Tags