terça-feira, março 06, 2007

Comandos que podem salvar alguns HDs

Existem, basicamente, dois métodos:
Métodos destrutivos, são mais eficientes porém apagam todos os dados do hd.
Métodos não-destrutivos, são menos eficientes, mas não apagam os dados do hd.

Nestas dicas assumo que o HD com problemas está em /dev/hda.

Problema: HD com setores defeituosos
Método destrutivo: Formatando a superfície de um disco (bit 0x00)
Os hds modernos contam com uma área reservada usada para substituir os setores defeituosos por setores bons, mas quando esta área chega ao limite alguns hds começam a apresentar problemas. Aqui vai o comando para gravar o bit 0x00 em todos os setores do disco:
dd if=/dev/zero of=/dev/hda

Método destrutivo: Formatação "física"(bit 0xaa, 0x55, 0xff, 0x00)
A formatação fisica real é impossível nos hds modernos. Os programas que prometem fazer formatação fisica na verdade gravam 4 tipos de bits em cada setor 0xaa, 0x55, 0xff, 0x00. O comando para fazer isso no Linux é:
badblocks -wv /dev/hda

Métodos não destrutivos: Checando setores legíveis
É possível checar se todos os setores estão legiveis e marcar os danificados. Este não é um teste ideal, mas resolve a maioria dos casos. Eis o comando:
badblocks -v /dev/hda

Métodos não destrutivos: Checando setores para gravação e leitura
Além de saber se os setores estão legíveis testamos se os setores estão recebendo dados adequadamente. Esse teste, evidentemente, é mais demorado que o teste anterior. Eis o comando:
badblocks -nv /dev/hda

MBR e tabela de partições
Backup da MBR
A MBR consiste nos 446 primeiros setores de um disco, usada especialmente para o carregador de boot.
A tabela de partições é seguida pelos próximos 66 setores.
Assim temos o início de um disco consistido em MBR+Tabela de partições, 446+66 = 512 setores.
Com o comando dd é possível fazer backup destes setores, e até mesmo salva-los em um backup.

Criando um backup:
dd if=/dev/hda of=mbr-backup bs=512 count=1

Restaurando MBR+Tabela de partições:
dd if=mbr-backup of=/dev/hda bs=512 count=1

Restaurando MBR sem alterar a tabela de partições:
dd if=mbr-backup of=/dev/hda bs=446 count=1

Limpando a MBR
dd if=/dev/zero of=/dev/hda bs=446 count=1