Como formatar rapidamente um HDD com setores defeituosos (no linux)?

2

Eu tenho um HDD SATA, que tem setores defeituosos. Eu não preciso dos dados e preciso formatar o disco rígido para criar um novo dispositivo.

Eu tentei reparar o problema do HDD com comandos como

fsck.ext4 -p /dev/sda1

mas leva séculos para fixar os setores. Eu formatei todo o disco rígido, mas ainda tenho os problemas. Existe uma maneira rápida de formatar o disco rígido e restaurar setores defeituosos?

    
por Googlebot 25.10.2013 / 12:01

5 respostas

5

Não, não há maneira rápida. Geralmente, quando você tem um disco com alguns setores defeituosos, você deve sobrescrever o conteúdo total do seu disco, com um comando semelhante a este:

dd bs=512k if=/dev/zero of=/dev/...

Demora algum tempo (2-3 horas normalmente). Fazer isso dará ao seu disco uma chance de lidar com setores defeituosos. Um disco moderno (feito nos últimos 15 anos) lida com setores defeituosos internamente, remapeando de forma transparente esses setores de um conjunto reservado de setores durante as gravações. Então, no final, você deve ter um disco com todos os setores utilizáveis. Se o disco não puder fazer esse remapeamento, isso geralmente significa que existem tantos setores defeituosos que ele ficou sem setores reservados. Esta é uma indicação clara de que o disco atingiu o fim de vida.

    
por 25.10.2013 / 12:29
2

Um setor defeituoso (um setor é um termo antigo, atualmente o 'bloco' é mais comumente usado) em um HDD significa que um ou mais blocos defeituosos estão fora de especificação na área de superfície magnética do disco. A única maneira de localizar esses blocos é tentar ler cada bloco em um disco rígido. Os HDDs são lentos, o que levará muito tempo.

Por exemplo, um disco rígido moderno tem taxa de leitura real em torno de 130 MB / s, então um disco moderno de 4TB levará cerca de 4000000MB / 130MB / s = 8.5h para ler o disco inteiro uma vez sem blocos defeituosos. Uma unidade com um ou mais blocos defeituosos fará com que a unidade tente reler esses blocos repetidamente para que a taxa de transferência sofra muito. Isso permitirá que você localize os blocos defeituosos que causam erros de leitura. Colocar qualquer HDD moderno para remapear um bloco ruim requer escrever algo para aquele bloco ruim.

A única maneira de realmente testar se um bloco de superfície HDD funciona é ler esse bloco, então escreva de volta, e então veja se a unidade ainda diz que tudo está bem para aquele bloco . Os blocos costumavam ter 512 bytes de comprimento, mas os discos modernos usam blocos de 4KB internamente. Uma unidade moderna de 4 TB requer testes em torno de um bilhão (1e9) de blocos de 4KB. E eu mencionei que os HDDs são lentos?

Se você tiver blocos inválidos e qualquer dado, você realmente deseja fsck.ext4 -cc . E esse vai demorar cerca de um dia ou dois no mínimo. Fazer fsck.ext4 -c permitirá que o ext4 evite os blocos defeituosos, mas não consiga consertar a unidade. A opção -c de fsck.ext4 faz com que tente ler todos os blocos da partição. A opção -cc fará com que tente ler cada bloco e o escreva o mesmo conteúdo na unidade e verifique se há erros. E mesmo os discos em que -cc falha podem ser reparados algumas vezes ... No entanto, não existe uma solução mágica para localizar os blocos defeituosos. A única maneira é digitalizar a unidade inteira e ela ficará lenta com unidades enormes.

Como você não precisa de nenhum dado, fazer sudo dd if=/dev/zero of=/dev/sdX bs=4M permitirá ignorar a parte "leia os dados" e ir diretamente para a parte "corrigir os blocos". E isso ainda levará algo entre 8 a 20 horas para ser concluído.

Observe que o firmware da unidade consertará o bloco defeituoso automaticamente quando você substituir o bloco defeituoso. Realmente não importa qual sistema operacional ou ferramenta você usa para sobrescrever um bloco defeituoso em um HDD. E os dados também não importam. Se a unidade não puder consertar nenhum bloco defeituoso, essa unidade estará concluída. Isso ocorre porque os discos rígidos modernos têm alguns blocos físicos extras na reserva que são usados para preencher os blocos defeituosos no espaço de endereço lógico. Se um bloco ruim não pode ser consertado, é somente porque todos os blocos no espaço de reserva já foram usados! A unidade já está falhando há muito tempo nesse caso.

Note que você tem que usar blocos corretos para consertar o bloco. Por exemplo, se sua unidade usa blocos físicos de 4KB e ainda permite blocos lógicos de 512B, você não pode sobrescrever um bloco defeituoso com uma gravação lógica de 512B, porque a unidade tentará tecnicamente ler o bloco real de 4KB, alterar o 512B que você gravou e -Escreva o bloco de 4KB de volta ao platter magnético. Obviamente, o "leia o 4KB real" falhará se o bloco físico de 4KB estiver ruim. A maneira de evitar isso é escrever todo o bloco de 4KB em um único comando HDD, para que nada precise ser lido a partir do disco físico. No final, você tem que escrever um bloco de 4KB corretamente alinhado para corrigir determinado bloco ruim. O comando dd acima sempre escreverá blocos de 4MB, que serão alinhados corretamente se você usar o dispositivo inteiro como of target (você pode usar qualquer múltiplo de 4 KB para gravação; o exemplo acima usa 4 MB para melhorar o desempenho). Se você usar uma única partição como destino e essa partição não estiver alinhada corretamente, esse comando ainda poderá falhar ao corrigir os blocos defeituosos se os tamanhos dos blocos lógicos e físicos não corresponderem à unidade. Tanto quanto sei, isso é verdade para a maioria dos HDDs modernos. A execução de smartctl -x /dev/sdX fornecerá informações sobre o dispositivo sdX .

Como sempre, faça man fsck.ext4 , man dd e man smartctl antes de mexer com essas coisas.

    
por 31.08.2015 / 06:59
1
Primeiro de tudo, um setor ruim, em teoria, significaria danos permanentes a partes de um disco rígido. Portanto, se você planeja usar essa unidade para dados importantes em um futuro próximo, talvez reconsidere isso. As chances de os setores ruins aumentarem são boas. Tanto quanto sei, agora há uma maneira real de consertar setores defeituosos. Apenas impeça que eles sejam usados. Além disso, você precisa ter em mente que os sistemas de arquivos podem ser escritos em partições. Para ver uma lista de partições, use o comando fdisk -l . Então você pode usar o comando e2fsck -c para evitar que blocos ruins sejam alocados em um arquivo ou diretório.

    
por 25.10.2013 / 12:46
1

Al, dependendo da unidade, faça. Você pode baixar do site do fabricante da unidade, ferramentas que podem até certo ponto reparar a unidade.

Unidades da Seagate

Western Digital

    
por 25.10.2013 / 13:03
0
badblocks -wsv -o /root/<badblocks.txt> /dev/<device>

mkfs.<filesystem-type> -l /root/<badblocks.txt> /dev/<device>

    
por 30.03.2017 / 09:14