Eu tenho um servidor com 3 discos rígidos sata. Cada um tem 2 partições: uma pequena parte de / dev / md0, uma matriz raid1 (/ boot), resto é parte de uma matriz raid5 (/ dev / md1), que é um volume físico lvm. Dentro dele há 3 volumes lógicos (IIRC). Um deles é um reiserfs de 3.6 fs, contendo cerca de 100gigs de dados.
Ontem, este servidor falhou. Ao ligar, a SMART me disse que uma das unidades estava morta. Ele estava de fato fazendo muito barulho. Então, eu removi a unidade com falha e tentei reiniciar o sistema nos dois discos restantes. Que falhou.
Com um live cd, eu iniciei e tentei reiniciar o array. Infelizmente, o mdadm se recusou a fazê-lo, porque achava que um dos dois discos restantes também falhou.
Então, seguindo os conselhos encontrados em Como recuperar um array RAID5 do Linux md com falha? que parecia que poderia se aplicar à minha situação, eu fiz algo que provavelmente era simplesmente estúpido: eu corri
mdadm --create /dev/md1 --assume-clean -l5 -n3 -c64 /dev/sd[ab]2 missing
Agora, posso realmente iniciar essa matriz, mas as ferramentas lvm (vgscan, vgdisplay, pvck) não conseguem encontrar nada relacionado a lvm na matriz e não consigo acessar meus dados. Acabei de limpar todos os metadados lvm?
Meu sentimento é que os dados reais ainda estão lá, sem danos (além dos metadados lvm). Existe uma chance de recuperar os dados? Como?
ATUALIZAÇÃO:
Seguindo o conselho da psusi (abaixo), tentei cada uma das maneiras a seguir de recriar a matriz:
mdadm --create /dev/md1 --assume-clean -l5 -n3 -c64 /dev/sda2 /dev/sdb2 missing
mdadm --create /dev/md1 --assume-clean -l5 -n3 -c64 /dev/sdb2 /dev/sda2 missing
mdadm --create /dev/md1 --assume-clean -l5 -n3 -c64 /dev/sda2 missing /dev/sdb2
mdadm --create /dev/md1 --assume-clean -l5 -n3 -c64 /dev/sdb2 missing /dev/sda2
mdadm --create /dev/md1 --assume-clean -l5 -n3 -c64 missing /dev/sda2 /dev/sdb2
mdadm --create /dev/md1 --assume-clean -l5 -n3 -c64 missing /dev/sdb2 /dev/sda2
mdadm --create /dev/md1 --assume-clean -l5 -n3 -c512 /dev/sda2 /dev/sdb2 missing
mdadm --create /dev/md1 --assume-clean -l5 -n3 -c512 /dev/sdb2 /dev/sda2 missing
mdadm --create /dev/md1 --assume-clean -l5 -n3 -c512 /dev/sda2 missing /dev/sdb2
mdadm --create /dev/md1 --assume-clean -l5 -n3 -c512 /dev/sdb2 missing /dev/sda2
mdadm --create /dev/md1 --assume-clean -l5 -n3 -c512 missing /dev/sda2 /dev/sdb2
mdadm --create /dev/md1 --assume-clean -l5 -n3 -c512 missing /dev/sdb2 /dev/sda2
Que é basicamente todos os pedidos possíveis, ambos com -c64 e -c512. Depois de cada teste, eu corri um vgscan. Nenhum encontrou nada. Talvez eu não deva usar vgscan mas alguma outra ferramenta?
UPDATE 2:
Eu tentei reconectar o disco rígido com falha. E milagre, parece funcionar um pouco. Pelo menos, o suficiente para examiná-lo:
root@debian:~# mdadm --examine /dev/sda2
/dev/sda2:
Magic : a92b4efc
Version : 0.90.00
UUID : 1f5462ab:6945560d:019b01a5:914dd464
Creation Time : Fri Oct 17 12:40:40 2008
Raid Level : raid5
Used Dev Size : 160015360 (152.60 GiB 163.86 GB)
Array Size : 320030720 (305.21 GiB 327.71 GB)
Raid Devices : 3
Total Devices : 3
Preferred Minor : 1
Update Time : Tue Apr 12 08:15:03 2011
State : active
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Checksum : 64d514fb - correct
Events : 137
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 0 8 2 0 active sync /dev/sda2
0 0 8 2 0 active sync /dev/sda2
1 1 8 18 1 active sync /dev/sdb2
2 2 8 34 2 active sync /dev/sdc2
Então, existe uma maneira de copiar este superbloco para os outros 2 dispositivos, para que eu possa iniciar o array "propriamente"?