Atualizei recentemente um servidor do Fedora 6 para o Fedora 14. Além do disco rígido principal em que o sistema operacional está instalado, tenho 3 discos rígidos de 1 TB configurados para RAID5 (via software). Após a atualização, notei que um dos discos rígidos havia sido removido da matriz de ataques. Tentei adicioná-lo novamente com o mdadm --add, mas ele apenas o substituiu. Imaginei que voltaria mais tarde.
Então, ao executar uma reinicialização, o sistema não conseguiu montar a matriz de ataques. Eu o removi do fstab para poder inicializar o sistema e agora estou tentando recuperar o array raid.
Eu executei o seguinte:
mdadm --create /dev/md0 --assume-clean --level=5 --chunk=64 --raid-devices=3 missing /dev/sdc1 /dev/sdd1
Eu sei que meu tamanho de bloco é 64k e "ausente" é para a unidade que foi expulsa da matriz (/ dev / sdb1).
Isso pareceu funcionar, e o mdadm relata que a matriz está executando "limpa, degradada" com a unidade ausente.
No entanto, não consigo montar a matriz de ataque. Quando tento:
mount -t ext3 /dev/md0 /mnt/foo
Eu recebo:
mount: wrong fs type, bad option, bad superblock on /dev/md0,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
e / var / log / messages mostra:
EXT3-fs (md0): error: can't find ext3 filesystem on dev md0.
Alguém tem alguma idéia do que tentar em seguida?
Respostas:
Você pode estar
missing
na posição errada. Somente a posição correta das unidades emissing
funcionará. Apenas corra:Isso produzirá (entre outras coisas) as informações de qual número no RAID está realmente ausente. Procure a
this
linha:Nesse caso, é o número 0 (= primeiro dispositivo) e,
active
como meu RAID está online agora. Agora você sabe qual unidade deve ser especificada comomissing
.Mas você ainda tem duas opções: A ordem das unidades de trabalho também pode precisar ser trocada. No entanto, essas informações são perdidas porque foram substituídas pela sua tentativa de remontagem.
fonte
uma das coisas que descobri é que
mdadm --create /dev/md0 --assume-clean
só funcionará corretamente se você usar a mesma (ou fechar) versão do mdadm que foi usada para criar a matriz original. Isso porque eles usam deslocamentos diferentes para dados e metadados, mesmo que a mesma versão do superbloco (como 1.2)O problema é que a saída mdadm sempre diz que a matriz foi recriada, mas os dados contidos em / dev / md0 estarão errados.
por exemplo, o uso recente do mdadm 3.3.2 ou mesmo do 3.2.5 anterior não funcionou para mim, mas voltar ao mdadm 3.1.4 (que criou a matriz) funcionou bem.
Observe que também tomei o cuidado de especificar as unidades na ordem correta (conforme detalhado em
mdadm --examine /dev/sd?
) ao recriar a matriz e usar arquivos de sobreposição para todos os testes (para não aumentar o dano), usando as instruções em https: //raid.wiki.kernel .org / index.php / Recovering_a_failed_software_RAIDNo meu caso, o problema era o RAID5 de 6 discos, que estava sendo aumentado para 7 discos, mas não progrediu, de modo que foi interrompido e não foi mais montado
mdadm: Failed to restore critical section for reshape, sorry.
,--force
e--invalid-backup
também não estava ajudando, então tive que usar--create --assume-clean
fonte