Da sua saída do lsblk e / proc / mdstat, vejo que todos os RAIDs foram degradados. Veja [_U]
ou [U_]
? Em cada RAID apenas uma linha é preenchida (marcada com U
), a outra não é (marcada com _
).
Então, parece que meu palpite estava correto: você tem o sistema de arquivos normal / de inicialização somente em uma unidade, que agora é chamada de sdb. Seu sda tem uma partição destinada à mesma coisa, mas essa partição não parece conter um sistema de arquivos de inicialização válido e corretamente preenchido.
Se você tiver certeza de que ambos os seus discos estão bem, você poderá adicioná-los novamente aos ataques. Você precisa limpar superblocos md raid de parições não utilizadas. A ferramenta mdadm irá reclamar se você tentar limpar os rótulos das unidades ativas, mas ainda vale a pena verificar novamente seus comandos. De sua saída / proc / mdstat e fdisk, deduzimos que:
- md0 (boot) deve estar em sda1 e sdb1, mas somente sdb1 está funcionando.
- md1 (swap) deve estar em sda2 e sdb2, mas somente o sdb2 está funcionando.
- md2 (root) deve estar em sda3 e sdb3, mas somente sda3 está funcionando - o que é estranho, isso está em outro disco.
Para limpar o rótulo de sda1, sda2, sdb3 (todos não usados atualmente) que você usa:
mdadm --zero-superblock /dev/sda1
mdadm --zero-superblock /dev/sda2
mdadm --zero-superblock /dev/sdb3
Pode reclamar alguma coisa, você pode precisar adicionar --force ao comando, mas acho que isso não seria necessário. Eu falo de novo, verifique tudo para limpar marcas de ataque apenas em dispositivos não utilizados!
Depois, você adiciona esses dispositivos não usados a seus arrays:
mdadm --add /dev/md0 /dev/sda1
mdadm --add /dev/md1 /dev/sda2
mdadm --add /dev/md2 /dev/sdb3
Ele começará a ressincronizar em segundo plano. Observe também que ele detectará que todos os arrays usam os mesmos dispositivos, portanto, por exemplo, atrasará a ressincronização do md2 até que o md1 seja concluído. Você verá o progresso da ressincronização em / proc / mdstat.
Quando a ressincronização for concluída, todos os dispositivos em / proc / mdstat terão [UU]
após eles, indicando que esses arrays estão no estado ideal.
Seu / boot funciona, então o sdb1 contém um sistema de arquivos corretamente preenchido. Quando o seu / boot md0 está no estado ideal, podemos dizer que o sda1 agora tem os mesmos dados (somente o superblock é um pouco diferente, porque diferentes dispositivos de apoio na mesma matriz possuem números de linhas diferentes). Você pode reinstalar o grub manualmente:
device (hd0) /dev/sda
root (hd0,0)
setup (hd0)
Eu sugiro strongmente que você configure o mdadm para fazer verificações de matriz periodicamente (digamos, uma vez por semana ou uma vez por mês), para rastrear os erros de leitura da unidade mais cedo. Certa vez, resolvi um problema quando os dois drives RAID possuíam blocos ruins (em locais diferentes), e a verificação regular poderia evitar esse problema, ejetando o disco defeituoso mais cedo, mesmo quando o bloco defeituoso estivesse raramente usado no sistema de arquivos. Isso foi complicado. Para iniciar um teste, faça
echo "check" >> /sys/block/md127/md/sync_action
e procure por erros nos registros do dmesg e do mdmon.
NÃO simplesmente carregue o sistema de arquivos para outro dispositivo. Dois sistemas de arquivos com os mesmos rótulos e os mesmos UUIDs não são um estado normal. Isso é permitido transitoriamente durante a recuperação ou algum outro processo forense, mas não para uma execução / inicialização normalmente. O Ubuntu monta partições pelo UUID (verifique / etc / fstab), e como você vai adivinhar qual será montado na próxima vez? Não há como dizer, isso é aleatório, mas essa coisa não deve ser aleatória.
O acesso aos dispositivos de raidback é um pouco bloqueado pelo código md no kernel, então enquanto eles estão em raid, o sistema só vê md0, que é um único dispositivo e você não terá nenhum problema.
Para manter o non-raid / boot em ambos os discos, você basicamente precisa clonar o sistema de arquivos toda vez que você atualizar o boot, e então sempre mudar o UUID e o label. Isso é propenso a erros e inconveniente. É normal ter / boot como RAID1.
Eu prefiro ter o metadata 1.0 para / boot, porque neste caso os metadados são colocados no final do dispositivo, então, mesmo no caso de eu não ter suporte ao RAID, eu simplesmente monto o sistema de arquivos do partititon como se não houve nenhum ataque. Mas se funcionar para você agora, é melhor deixar as coisas como estão agora.