raid 1 da partição raiz mdadm falha intermitentemente

0

Por um tempo, tenho configurado todos os servidores com partições raiz e de inicialização RAID 1 de software para minimizar o tempo de inatividade em caso de falha de disco. Na instalação eu configurei

mdadm --create /dev/md0 --metadata 1.0 --raid-devices=2 --level=1 /dev/sd[ab]1
mdadm --create /dev/md1 --raid-devices=2 --level=1 /dev/sd[ab]2
mkfs.fat -F32 /dev/md0
mkfs.ext4 /dev/md1

e, em seguida, configure-os em fstab como / boot e /, respectivamente. É claro que a EFI não pode ler uma partição de software RAID 1, portanto, os dispositivos de inicialização EFI são / dev / sda1 e / dev / sdb1 individualmente . O initramfs está configurado para saber sobre mdadm, portanto, / é imediatamente montado como uma partição raid / dev / md1, e / dev / md0 é espelhado após a inicialização, mantendo /dev/sda1 e /dev/sdb1 sincronizados. Eu venho configurando sistemas assim há anos e nunca tive problemas.

Até recentemente, quando configurei um servidor de backup com 26 discos HBA. /dev/sdy e /dev/sdz são os discos SSD que usei para / e /boot . Na maioria das vezes o sistema inicializa bem. Intermitentemente, no entanto, ao reiniciar o sistema trava reclamando que "o superbloco em /dev/md1 está corrompido" e "tente executar e2fsck -b 8198 etc.) para corrigir o problema. No entanto, não há nada de errado com o superbloco em / dev / md1.Eu posso arrancar a partir de um stick USB e montar / dev/md1 sem nenhum problema, e e2fsck não retorna nenhum erro no dispositivo.Estou em uma perda para o que poderia estar causando isso (além de problemas de hardware intermitentes ou Resumidamente, considerei que poderia ser o grande número de discos no sistema combinado com a forma como mdadm monta os ataques por padrão (ou seja, varrendo partições procurando por superblocos RAID), mas então percebeu que essa diretiva vive em / etc / mdadm.conf, que não pode ser lido até depois / já está montado, que é o problema em primeiro lugar.

Alguém mais já viu esse problema ou sabe de uma solução?

    
por pgoetz 22.11.2016 / 19:43

1 resposta

1

Estou usando systemd-boot como meu gerenciador de inicialização UEFI ( link ), e systemd-boot requer que você forneça entradas de configuração do carregador que forneçam informações sobre o arquivo kernel / initramfs a ser inicializado, bem como as opções que são passadas como parâmetros de inicialização do kernel. Uma dessas opções especifica o dispositivo raiz:

# cat /boot/loader/entries/arch.conf
title   Arch Linux
linux   /vmlinuz-linux
initrd  /initramfs-linux.img
options root=UUID=acf7e0be-5723-478e-aad6-80af6eb82a92 rw ipv6.disable=1

Eu originalmente defini o dispositivo raiz como root=/dev/md1 , como normalmente faço, mas esse sistema inclui 26 discos HBA, e acho que o sistema estava ficando confuso sobre a nomeação de seu dispositivo de disco. Em qualquer caso, mudando a raiz para root=UUID=acf7e0be-5723-478e-aad6-80af6eb82a92 como ilustrado acima resolveu esse problema, e o sistema agora inicializa corretamente todas as vezes.

    
por 29.11.2016 / 18:38