Passei horas lutando contra o mdadm a ponto de ter que reinstalar o Linux e lutar mais, principalmente por causa de problemas de proteção contra gravação nas unidades de alguma forma (ainda não explico), e também aparentemente porque o multi- a unidade pertence ao root por padrão (demorei um pouco). Parece que funciona agora, o mdadm está ressincronizando e posso escrever arquivos de teste.
... Mas e se for apenas fumaça e espelhos (trocadilho intencional)? Eu sei que o mdadm existe há muito tempo, mas independentemente de eu não confiar nele (o que não confio - ou pelo menos não confio no uso que faço dele) ou porque estou curioso, como faço para realmente examinar sdb1 e sdc1 sem remover as unidades do computador? Aparentemente não consigo montá-los porque o Linux não os entende agora que o mdadm adicionou um cabeçalho.
Você pode executar
mdadm --action=check /dev/mdX
e acompanhar seu progresso, por exemplowatch head /sys/block/mdX/md/mismatch_cnt /proc/mdstat
. Isso deve aparecermismatch_cnt
durante0
todo o teste. Se houver alguma incompatibilidade, os dados/espelho/paridade não estão sincronizados. Este é o método de teste quemdadm
oferece…Você também pode
mdadm --fail
dirigir (ou inicializar com qualquer uma das unidades desconectada) e ver se o RAID ainda funciona. De certa forma, este é o verdadeiro teste, já que o RAID precisa ser capaz de lidar com uma unidade completamente falhada. Se você também estiver inicializando essas unidades, também testará a configuração do bootloader junto com elas.No entanto, esse método de teste provavelmente acionará uma ressincronização completa para cada tentativa quando você adicionar novamente a unidade posteriormente.
Para RAID 1, você pode definir qualquer unidade,
write-mostly
o que significa que os dados serão lidos da outra unidade. Este é um teste não destrutivo em que qualquer unidade fornecerá os mesmos dados durante a leitura.Para a abordagem manual, você pode obter o deslocamento de dados
mdadm --examine
e montar somente leitura usandomount -o ro,loop,offset=X
. No entanto, isso deve ser feito a partir de um Live CD/quando o sistema de arquivos não estiver em uso.Você também pode comparar dados com a opção
cmp /dev/sdb1 /dev/sdc1 SKIP1 SKIP2
(ou--ignore-initial=SKIP1:SKIP2
) (definir SKIP1 SKIP2 para o deslocamento do mdadm em bytes). Se você não conseguir determinar o deslocamento exato, você também pode simplesmente iniciar$((1024*1024*1024))
bytes de 1 GiB nos dispositivos, já que o deslocamento de dados geralmente é menor.Você também pode usar
filefrag -v -e
para descobrir onde um arquivo específico está alocado e usardd
ouhexdump
com opções de pular para tentar lê-lo em qualquer unidade (com o deslocamento mdadm adicionado).