Como corrigir o setor defeituoso do disco rígido

17

Tentei consertar meu disco rígido usando o Ubuntu, mas encontrei uma mensagem de erro e não sabia como proceder. Eu preciso consertar meus setores defeituosos

fsck /dev/sdb  
fsck from util-linux 2.20.1  
e2fsck 1.42.5 (29-Jul-2012)  
fsck.ext2: Permission denied while trying to open /dev/sdb  
You must have r/w access to the filesystem or be root  
user122095
fonte
1
O texto que você colou não parece relacionado à sua pergunta. Você pode esclarecer?
thomasrutter

Respostas:

22

Um setor defeituoso em uma unidade é um sinal de dano permanente à unidade. A menos que você tenha motivos para acreditar que sua unidade marcou esses setores como incorretos incorretamente, não é possível "consertá-los".

Isso significa que uma parte da sua unidade está danificada na medida em que não pode mais ser lida e / ou gravada de maneira confiável.

Seu sistema pode continuar usando a unidade marcando esse setor como inutilizável, mas você pode considerar uma substituição de unidade de qualquer maneira, pois um setor ruim pode ser um sinal de que mais setores ou a unidade inteira poderão falhar em breve.

Embora possa haver maneiras de forçar a unidade a desmarcar um setor como ruim, permitindo que você o use novamente, essa provavelmente não é uma boa ideia. O setor pode permanecer bom, mas provavelmente se tornará ruim novamente. Alguns dados podem ser perdidos ou corrompidos, dependendo de como eles falham.

Agora, quanto à mensagem de erro que você colou na sua pergunta (no momento em que escrevi isso), esse erro não tem nada a ver com setores defeituosos. Isso significa que você não tem acesso à unidade. Ser sudopode lhe dar acesso, portanto:

sudo fsck /dev/sdb

No entanto, isso provavelmente ainda não é o que você deseja, porque / dev / sdb se refere à unidade inteira, enquanto fsckfoi projetado para funcionar em sistemas de arquivos , que geralmente são (mas nem sempre, e você pode ter uma exceção aqui) colocados em partições . Se o procedimento acima não funcionou, você pode fazer isso com a 1ª partição nessa unidade:

sudo fsck /dev/sdb1

Você pode obter uma lista de partições por unidade com:

sudo fdisk -l
thomasrutter
fonte
7
Provavelmente é apenas um bloco ruim. Não consegue ler os dados, é tudo. Depois de remapear o bloco, a unidade provavelmente ficará boa por mais três anos. Então vai a minha experiência.
Zan Lynx
Um disco rígido com um setor defeituoso tem muito mais probabilidade de falhar a qualquer momento do que um que nunca teve um setor defeituoso. Em quantas unidades sua experiência se baseia? Eu ainda diria que é uma aposta maior.
precisa saber é o seguinte
Mais provável? Certo. Mas não está imediatamente condenado. Tanta coisa depende de por que esse bloco deu errado. Como eu disse, tive unidades que remapearam lentamente alguns blocos ruins ao longo da vida e continuaram trabalhando.
Zan Lynx
it isn't immediately doomed- você não tem como saber ou garantir isso. Em alguns casos, pode ser. So much depends on why that block went bad- seria impossível descobrir com segurança o porquê, sem abri-lo e destruí-lo efetivamente. Como eu disse, é sempre um risco aumentado. Se você está absolutamente bem com esse risco, não tenho problema com isso. Na maioria das vezes, talvez até> 90% das vezes, a unidade não falha rapidamente depois que um setor defeituoso é encontrado e, em alguns casos, pode até durar anos depois. Mantenha bons backups e qualquer falha futura não será tão prejudicial.
thomasrutter
1
Diz que "o disco está montado" e não faz nada.
Dims 24/03
21

Em resumo : inicialize um sistema de resgate e use badblocks :

badblocks -svn /dev/sda

para que o controlador do disco rígido substitua blocos defeituosos por blocos sobressalentes.

Eu respondi a mesma pergunta em detalhes aqui .

user228505
fonte
4
Você provavelmente deseja usar isso indiretamente com a -copção do fsck . O AFAIK, usando o badblocksautônomo, nunca mudará o comportamento de nada, apenas informará onde estão os blocos defeituosos. Obviamente, o firmware da unidade pode modificar transparentemente seu comportamento quando colocado sob os padrões de uso característicos de badblocks, mas certamente isso depende da unidade?
amoe
1
Como novo usuário, você primeiro precisa obter "reputação" antes de poder realizar determinadas atividades neste site. Portanto, não foi possível duplicar isso. Ainda a pergunta merecia uma resposta. Como os blocos defeituosos são um problema do disco físico (confira os valores SMART, o sistema de arquivos não é afetado diretamente. Pode sofrer corrupção devido à perda de dados. Portanto, fazer um fsck também é uma boa idéia. Como a pergunta original era sobre como "reparação" bad blocks esta foi a resposta.
user228505
@amoe a documentação supõe que o comportamento mudará, aqui: "Execute sudo badblocks -n em um nome de dispositivo para executá-lo sozinho e relate badblocks diretamente no seu terminal. Você pode usar a opção -w para usar um teste no modo de gravação, mas não use as opções -n e -w juntas, pois elas são mutuamente exclusivas. Você nunca deve usar a opção -w em um volume que possua dados, pois isso apagará tudo que estiver limpo. opção, pois preservará seus dados nesse caso. A opção -w é adequada para volumes que você não se importa de apagar. "
Webwoman 17/07
13

Antigamente, você costumava tomar nota dos badblocks que foram escritos na unidade e inseri-los na lista de defeitos antes de formatar a unidade, porque as superfícies do disco rígido nunca eram "perfeitas", o fabricante ficou ciente disso porque as pessoas os discos de compra examinariam a tabela de defeitos impressa no disco e comprariam aqueles com a menor quantidade de defeitos ...

Agora avance 20 anos ou mais e os fabricantes de disco rígido ocultam o fato de um disco novo ter blocos defeituosos com o firmware; quando você compra um disco novo, ele já terá provavelmente todos os blocos defeituosos, o firmware detectará os novos bloqueios e os mapeia a partir de um conjunto de cilindros sobressalentes que possui, mas isso só acontece quando ocorre uma operação de gravação nesse setor e o algoritmo ECC detecta falha de bit; somente então ele mapeia o bloco. Então, voltando ao ponto, você pode forçar uma unidade a mapear os badblocks simplesmente usando DD, ou seja, / [edit: o exemplo a seguir foi editado para evitar a destruição acidental da unidade: caractere curinga removido, substituído por X]

dd if=/dev/zero of=/dev/sdX bs=1M 

obviamente altere o destino of = para refletir a unidade que você deseja zerar. Essa é a maneira mais rápida de re-mapear os defeitos de uma unidade; também é a maneira mais rápida de eliminar totalmente a instalação do Linux, errando a unidade de destino. depois verifique novamente antes de pressionar a tecla Enter. Você pode aumentar o tamanho do tamanho do bloco no comando dd para otimizar a leitura / gravação e talvez acelerar as coisas, mas há retornos decrescentes após um ponto. Acho que qualquer coisa entre 1 milhão e 8 milhões funciona melhor para mim

Você pode fazer com que o DD escreva apenas um setor, o ruim ... para remapeá-lo, para que você não precise fazer backup da sua unidade, mas essa é uma chaleira totalmente diferente de peixe e roleta russa, se você não sabe exatamente o que você está fazendo .....

Este comando destruirá tudo no seu disco rígido, incluindo todas as partições. Mas forçará o esforço a mapear quaisquer setores defeituosos que possam ter.

É perfeitamente aceitável que um disco tenha setores defeituosos, desde que não estejam no setor de inicialização, se estiverem, a unidade será inútil; se você notar alguns meses depois que sua unidade desenvolveu mais setores defeituosos, chegou a hora para começar a comprar um substituto.

Revivi centenas de unidades como essa e elas sobreviveram por muitos anos depois, um setor ruim não é necessariamente o ponto final da unidade.

Derek Brabrook
fonte
Eu usei esse método antes, mas nunca soube por que funcionou. De um punhado, a maioria das unidades durou anos após a limpeza superficial da unidade, conforme prescrito.
MER
Ack !! Para os não iniciados, POR FAVOR, NÃO COPIAR E COLAR ESTA LINHA. Seu shell expandirá o curinga '?' com os nomes reais do dispositivo em / dev. Se você pressionar acidentalmente enter antes de substituir o?, Poderá limpar a unidade errada. Se você tiver mais de um dispositivo, o dd poderá gerar um erro, mas não estou disposto a testá-lo na minha máquina.
TiberiusKirk