Em primeiro lugar, reconheço que cometi erros e que tenho um backup para a maioria, mas não todos os dados deste RAID. Ainda tenho esperança de recuperar o restante dos dados. Não tenho dinheiro para levar as unidades a uma empresa especialista em recuperação.
Erro nº 0, não tendo um backup 100%. Eu sei.
Eu tenho um mdadm
sistema RAID5 de 4x3TB. Drives / dev / sd [be], todos com uma partição /dev/sd[b-e]1
. Estou ciente de que o RAID5 em unidades muito grandes é arriscado, mas fiz de qualquer maneira.
Eventos recentes
O RAID fica degradado após uma falha de duas unidades. Uma unidade [/ dev / sdc] realmente desapareceu, a outra [/ dev / sde] voltou a funcionar após um ciclo de energia, mas não foi automaticamente adicionada novamente ao RAID. Então fiquei com um RAID de 4 dispositivos com apenas 2 unidades ativas [/ dev / sdb e / dev / sdd].
Erro nº 1, não usando cópias em dd das unidades para restaurar o RAID. Eu não tinha as unidades ou o tempo. Erro nº 2, não fazendo backup do superbloco e mdadm -E
das unidades restantes.
Tentativa de recuperação
Remontei o RAID no modo degradado com
mdadm --assemble --force /dev/md0, using /dev/sd[bde]1.
Eu poderia acessar meus dados. Eu substituí /dev/sdc
por um sobressalente; esvaziar; unidade idêntica.
Eu removi o antigo /dev/sdc1
do RAID
mdadm --fail /dev/md0 /dev/sdc1
Erro nº 3, não fazer isso antes de substituir a unidade
Particionei o novo /dev/sdc
e o adicionei ao RAID.
mdadm --add /dev/md0 /dev/sdc1
Em seguida, começou a restaurar o RAID. ETA 300 minutos. Eu segui o processo /proc/mdstat
até 2% e depois fui fazer outras coisas.
Verificando o resultado
Várias horas (mas menos de 300 minutos) depois, verifiquei o processo. Parou devido a um erro de leitura /dev/sde1
.
Aqui é onde o problema realmente começa
Em seguida, removi /dev/sde1
o RAID e o adicionei novamente. Não me lembro por que fiz isso; era tarde.
mdadm --manage /dev/md0 --remove /dev/sde1
mdadm --manage /dev/md0 --add /dev/sde1
No entanto, /dev/sde1
agora foi marcado como sobressalente. Por isso, decidi recriar toda a matriz usando --assume-clean usando o que eu achava que era a ordem certa e com /dev/sdc1
falta.
mdadm --create /dev/md0 --assume-clean -l5 -n4 /dev/sdb1 missing /dev/sdd1 /dev/sde1
Isso funcionou, mas o sistema de arquivos não foi reconhecido ao tentar montar. (Deveria ter sido EXT4).
Ordem do dispositivo
Em seguida, verifiquei um backup recente que tinha /proc/mdstat
e localizei a ordem da unidade.
md0 : active raid5 sdb1[0] sde1[4] sdd1[2] sdc1[1]
8790402048 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
Lembrei-me então que esse RAID havia sofrido uma perda de unidade há cerca de um ano e me recuperei ao substituir a unidade defeituosa por uma sobressalente. Isso pode ter mexido um pouco na ordem do dispositivo ... então não havia unidade [3], mas apenas [0], [1], [2] e [4].
Tentei encontrar a ordem das unidades com o script Permute_array: https://raid.wiki.kernel.org/index.php/Permute_array.pl, mas essa não encontrou a ordem correta.
Questões
Agora tenho duas perguntas principais:
Estraguei todos os superblocos nas unidades, mas só dei:
mdadm --create --assume-clean
comandos (então eu não deveria ter sobrescrito os dados
/dev/sd[bde]1
. Estou certo de que, em teoria, o RAID pode ser restaurado [supondo por um momento que/dev/sde1
seja bom] se eu apenas encontrar a ordem correta do dispositivo?É importante que
/dev/sde1
seja fornecido o número do dispositivo [4] no RAID? Quando eu crio commdadm --create /dev/md0 --assume-clean -l5 -n4 \ /dev/sdb1 missing /dev/sdd1 /dev/sde1
é atribuído o número [3]. Gostaria de saber se isso é relevante para o cálculo dos blocos de paridade. Se isso for importante, como posso recriar a matriz com
/dev/sdb1[0]
falta [1]/dev/sdd1[2]
/dev/sde1[4]
? Se eu conseguisse fazer isso funcionar, poderia iniciá-lo no modo degradado, adicionar a nova unidade/dev/sdc1
e deixá-la ressincronizar novamente.
Tudo bem se você gostaria de me dizer que esse pode não ter sido o melhor curso de ação, mas você verá que eu percebi isso. Seria ótimo se alguém tiver alguma sugestão.