Recuperação de dados na partição raiser5 + reiserfs lvm, após problemas de raid5

2

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"?

    
por Bill 22.03.2012 / 08:29

3 respostas

1

Eu tenho uma configuração semelhante e recomendo ter um Linux completo na pequena partição de cada unidade e não espelhar essas pequenas partições, mas tê-las separadamente completamente inicializáveis.

Você pode sync da configuração excluindo alguns arquivos cruciais ( /etc/fstab , configuração do grub). Isso leva mais espaço do que apenas /boot , mas economiza muito tempo quando os problemas ocorrem.

    
por 20.11.2013 / 08:15
0

Você provavelmente não montou as unidades na mesma ordem ou usando o mesmo tamanho de bloco de antes. Você precisa descobrir qual era o pedido antes e usar a mesma ordem ao recriar o array. Em outras palavras, pode não ter sido o terceiro disco que morreu, mas o primeiro ou o segundo, você pode ter misturado sda e sdb.

    
por 22.03.2012 / 17:01
0

Como @ psusi hinted formato de metadados é o kye, como parece - agora" 1.2 "é o padrão, não" 0,9 ". É uma pena dizer, mas isso pode levar à perda de dados, já que 1,2 usa 4 offset KiB:

1, 1.0, 1.1, 1.2 default Use the new version-1 format superblock. This has fewer restrictions. It can easily be moved between hosts with different endian-ness, and a recovery operation can be checkpointed and restarted. The different sub-versions store the superblock at different locations on the device, either at the end (for 1.0), at the start (for 1.1) or 4K from the start (for 1.2).

Um conselho (infelizmente, um de final): nunca se apresse em recriar um array sem experimentá-lo com -B - build:

   -B, --build
          Build a legacy array without superblocks

UPD .: acabou -B se recusa a criar RAID-5…: - /

    
por 22.06.2012 / 04:48