Badblocks partição reiserfs!!!
Pessoal, como disse que iria dar um retorno, vamos lá:
Tentarei escrever um HowTozinho aqui, ou pelo menos passar uma idéia.
Meu problema:
Após tentar iniciar meu sistema Linux, recebi uma mensagem de I/O em /dev/hda2 na tela de inicialização do sistema. Com uma mensagem parecida com essa:
Erro try to read block {19876309}
e então nossa querida tela de:
KERNEL PANIC.
Bootando por um CD LIVE, no meu caso o "SLAX" que pode ser baixado em:
http://slax.linux-live.org/?lang=pt resolvi tentar montar minha partição,
mount /dev/hda2 /mnt/hda2
Porem recebia um erro de:
mount: wrong fs type, bad option, bad superblock on /dev/hda2,
or too many mounted file systems
Tentei também
mount -t reiserfs /dev/hda2 /mnt/hda2
e mais uma vez:
mount: wrong fs type, bad option, bad superblock on /dev/hda2,
or too many mounted file systems
Foi então que tive a certeza que minha partição ReiserFS tinha ido pro saco, ou pelo menos parte dela.
Porem existiam arquivos ali extremamente importantes que eu não podia perder de maneira nenhuma.
Ok decidi tentar falar para minha partição ReiserFS que certos blocks estavam com defeito, assim eu poderia ter uma chance de remonta-la para pegar meus dados.
Meu primeiro passo foi saber quem eram os Bad's da história.
Com o SLAX rodando e um disquete resolvi escrever todos os blocos defeituosos encontrados pela ferramenta "badblocks".
então lá fui eu:
badblocks -vv /dev/hda2 -o /mnt/floppy/bads.txt
Após exatamente 8:00 horas, minha lista estava completa. =]
com 300 badblock's
Então agora eu precisava falar para minha partição ReiserFS não usar aqueles blocos.
vamos lá:
reiserfsck --badblocks /mnt/floppy/bads.txt /dev/hda2
Isso era para funcionar, porem nesse processo descobri que outros setores não estavam conseguindo ser lidos, pois uma mensagem da ferramenta reiserfsck me retornou algo do tipo:
Parece haver algum tipo de problema de Hardware, não perca seu tempo e arquivos, é melhor você comprar um novo HD e então use a ferramenta "dd_rescue" e então usar a ferramenta reiserfsck.
não entendi porque ele fez isso, já que eu estava passando todos os blocos com defeito para ele, resolvi passar mais uma vez a ferramenta badblocks:
badblocks -vv /dev/hda2 -o /mnt/floppy/bads2.txt
porem após o termino do mesmo existiam 3000 bad's e não 300 como da primeira vez, ou seja meu HD estava com LEPRA!
percebi que realmente não tinha como fugir de comprar um novo equipamento.
E então foi exatamente oque eu fiz:
comprei um HD Samsung de 80 GB.
e comecei a me informar sobre o dd_rescue e sobre a ferramenta dd.
descobri em algum forum e sites que muitas vezes os erros da ferramenta dd era causado por um detalhe: aa partição ou os hd's não tinham tamanhos identicos: fonte, destino.
mais uma vez bootei com o SLAX e queria saber qual era o tamanho da minha partição com bad's:
fdisk /dev/hda
opção p
e consegui pegar as seguinte's informações:
bloco inicial: 71
bloco final 59760
tamanho 5973210
anotado!
então recriei exatamente isso no meu HD SAMSUNG.
fdisk /dev/hdb
bloco inicial: 71
bloco final 59760
tamanho 5973210
criei tambem um sistema de arquivo nessa partição por superstição:
mkreiserfs /dev/hdb2
sabia que agora era a hora do tudo ou nada, tinha que usar a ferramenta DD
então deixei a noite toda a ferramenta DD trabalhar, a sintax que eu usei foi:
dd if=/dev/hda2 of=/dev/hdb2 conv=noerror
FALHEI!
tentei montar a partição e nada!
mount /dev/hdb2 /mnt/hdb2 e o mesmo me retornava um erro assim:
NOT A DIRECTORY.
eu sabia que não, porem oque eu havia feito de errado????
foi então que lendo todos os man's e --h e google
que descobri uma opção do dd chamada notrunc
parece que o dd no final da copia, tenta compactar os ultimos bit's, porem isso gera erros:
então lá fui eu:
dd if=/dev/hda2 of=/dev/hdb2 conv=noerror,notrunc,sync
após o tempo de mais 8:00 horas, tentei já sem esperanças:
reiserfsck /dev/hdb2
ele me retornou uma pancada de erros, porem nenhum fatal.
terminou na boa, e me avisou que se eu deseja-se corrigir os mesmo, teria que usar a opção --rebuild-tree.
Porem já perdi uma partição com --rebuild-tree , então por desencargo de conciência resolvi tentar montar:
mount /dev/hdb2 /mnt/hdb2
:clap: :clap: :clap: :clap:
FUNCIONOU.
minha partição ReiserFS foi montada =]
tar -czvf all.tgz /
e corri para o abraço
espero que essa experiencia que tive, algum dia possa ajudar alguem =]