Respondendo a minha pergunta alguns bons 2 anos depois ...
Acabei de exportar tudo deste servidor e formatá-lo, mas enfrentei o problema novamente recentemente e resolvi enfrentá-lo de frente.
Tudo o que estou mencionando aqui é feito com:
- CentOS 7 com
ml
kernel deELRepo
. - Os dois dispositivos foram adicionados a um
raid1
durante a instalação do SO ( como assim ) e todos partições foram montadas no topo do raid1 (/boot
,/
eswap
). O LVM ou não parece não fazer diferença em relação a este tópico. - Como nas instalações padrão do CentOS 7, ele vem com
GRUB2
em vez do legadoGRUB
, uma grande distinção, já que a maior parte da documentação encontrada on-line pertence à v1. - Minha configuração NÃO contém uma partição
EFI
. Pelo que eu descobri, a EFI não funciona em cima do RAID, então a grande atenção aqui, como o procedimento abaixo, não funcionará corretamente se você tiver EFI.
Ficou claro para mim que o problema era que o CentOS estava apenas instalando o gerenciador de inicialização (GRUB2) no primeiro dispositivo físico. Aparentemente, ele usa uma minúscula partição MSDOS
(a partição é a terminologia correta? Talvez uma 'sinalização'?) Que não pode ser executada em cima do RAID. Por causa disso, mesmo simplesmente trocar os discos faz com que o sistema não consiga inicializar, mesmo que o disco secundário tenha uma cópia completa do sistema, ele não possui o gerenciador de inicialização.
Agora, explore a solução, que esperamos que seja simples: copie o gerenciador de inicialização do disco principal para o disco secundário.
Não sabia ao certo como não sabia exatamente como o bootloader chama os dispositivos. Talvez simplesmente espelhar o bootloader do primeiro causaria conflitos, então era possível que eu tivesse que inverter as entradas para saber qual dispositivo é realmente qual.
Ao explorar isso, encontrei uma solução para usar dd
para copiar o gerenciador de inicialização no segundo disco. Eu encontrei um post de um usuário dizendo que eles sempre faziam isso e sempre funcionavam, mas para mim por qualquer razão isso não aconteceu.
Tentando entender melhor como funciona o GRUB2, descobri que ele inclui uma ferramenta de 'instalação' que adiciona facilmente o gerenciador de inicialização ao dispositivo desejado, e voila foi exatamente o que eu precisava! Tudo o que eu tive que fazer foi:
grub2-install /dev/sdb
Depois de trocar os discos, o sistema ainda é inicializado como esperado! Metade da missão cumprida.
Em seguida, depois de confirmar que ambos os dispositivos podem ser inicializados, tive de remover o disco com falha (agora 'sdb') da matriz (a documentação pode ser encontrada on-line, envolve a marcação do dispositivo como falho e, em seguida, removê-lo do array) e trocando-o pelo novo disco e, finalmente, adicionando-o de volta ao array mdadm e esperamos que ele comece a sincronizar automaticamente (você pode observar o progresso com watch cat /proc/mdstat
).
Além disso, não se esqueça de executar grub2-install
novamente no novo dispositivo depois de terminar.
Espero que isso possa ajudar alguém a enfrentar o mesmo problema.
Se você tiver uma partição EFI, provavelmente precisará encontrar uma maneira de copiá-la para o início do dispositivo secundário ( dd
deve fazer o trabalho, embora não tenha ideia de quais parâmetros você teria para dar).