Como forçar um remapeamento de setores relatados no SMART C5 (contagem atual de setores pendentes)?


38

O valor SMART C5 do meu disco rígido Samsung HM640JJ (em um laptop HP Pavilion dv6) é "status amarelo = cuidado"

C5 tinha 10 ontem e hoje são 21.

C4 (Reallocation Event Count) = 0 e 05 (Reallocated Sectors Count) = 0

Como forçar o firmware para realocá-los?

  • Eu removi as partições, as recriei novamente e formatei a unidade inteira.
  • Irã chkdsk /r /f
  • Executei o utilitário de verificação de disco do BIOS e outras ferramentas de diagnóstico / reparo

Eu uso o disco de inicialização spinrite6 no nível 2 para fazer isso ... grc.com/intro.htm
Moab

Respostas:


118

Resposta curta: escreva algo novo para o setor (mesmo zeros - que é um formato longo).

Resposta longa

Hoje, os discos rígidos tentam ocultar setores defeituosos do computador host. O computador host simplesmente pede que a unidade retorne o conteúdo de um número de setor específico. Normalmente, a unidade lê o setor, retorna para a máquina host e está tudo bem.

O disco rígido sabe se o valor que leu é válido ou não, porque usa o código de correção de erros (ECC) para validar se o conteúdo lido está correto. Se a unidade detectar que o conteúdo do setor é inválido, tentará novamente a leitura. A esperança é que, se simplesmente o ler novamente, poderá obter o conteúdo correto do setor. Ele continuará tentando novamente até obter um bom valor ou atingir seu limite de tempo (formalmente conhecido como limite de tempo de conclusão do comando ou CCTL ).

Durante essas tentativas, a unidade aparecerá morta; como ele não está mais respondendo aos comandos .

Setores Sobressalentes

As unidades mais modernas contêm vários setores "sobressalentes" (por exemplo, 1.024 setores sobressalentes). Se a unidade reconhecer um setor como ruim, ele irá parar de usá-lo. Quaisquer solicitações de leitura ou gravação nesse setor danificado serão redirecionadas de forma transparente para um setor sobressalente. Essa marcação de um setor defeituoso e a realocação de seus dados para um setor sobressalente é chamada de Evento de Realocação . E o número total de setores que foram realocados (e quantos dos seus setores de reposição foram usados) é a Contagem de setores realocados .

Neste exemplo, em um dos meus próprios discos rígidos, 64 setores foram considerados ruins. Isso significa que 64 dos setores sobressalentes da unidade foram usados:

ID                             Current  Worst  Threshold  Raw  
=============================  =======  =====  =========  ===
(05) Reallocated Sector Count  192      192    140        64

Nesse mesmo disco rígido, ocorreram 4 eventos de realocação . Isso significa que houve quatro ocasiões em que a unidade marcou setores como ruins e usou setores sobressalentes.

ID                             Current  Worst  Threshold  Raw  
=============================  =======  =====  =========  ===
(05) Reallocated Sector Count  192      192    140         64
(C4) Reallocated Event Count   196      196    0            4

E se ele nunca puder ler os dados?

Essas ações de reler setores, consumir peças de reposição, tudo pelas costas do computador é uma coisa boa. Isso significa que o sistema operacional host não precisa lidar com o problema de setores defeituosos. A própria unidade pode lidar com esses detalhes.

Conversação de bônus : antigamente, seu disco rígido era enviado com um adesivo preso a ele. Este adesivo continha a Lista de defeitos de fábrica ; a lista de todos os pontos negativos conhecidos na unidade.

insira a descrição da imagem aqui

Se você executou uma formatação de baixo nível da unidade, você tinha que usar uma ferramenta para digitar todos os Cilindro-Head do setor localizações dos pontos ruins.
As unidades SCSI têm um comando IOCTL_DISK_REASSIGN_BLOCKS,, para solicitar a realocação de um ponto ruim na unidade depois que o sistema operacional a detectar. Nas unidades IDE, tudo isso acontece automaticamente, sem a necessidade de intervenção do sistema operacional.

Idealmente, a unidade reconheceria que o setor está falhando, moveria os dados para um setor sobressalente e nunca mais usaria o setor original. Mas o que acontece se a unidade não conseguir ler o setor com sucesso?

Isto é o que Pending Sectorssão. A unidade detectou que um setor está falhando e precisa ser remapeado para um sobressalente. Mas isso não pode ser feito até que seja possível ler os dados com êxito. Quando a unidade sabe que um setor é ruim e precisa ser remapeado, mas ainda não pode fazê-lo porque está aguardando uma boa leitura do setor: isso é chamado de Contagem de setor pendente :

ID                             Current  Worst  Threshold  Raw  
=============================  =======  =====  =========  ====
(05) Reallocated Sector Count  192      192    140          64
(C4) Reallocated Event Count   196      196    0             4
(C5) Current Pending Sector    100      100    0             2

Meu disco rígido possui 2 setores que a unidade reconhece como ruins, mas ainda não podem ser realocados. Se você lesse um desses 'setores pendentes', a unidade provavelmente tentaria novamente (e tentaria e tentaria novamente) e, eventualmente, retornaria um erro de leitura ao sistema operacional host:

insira a descrição da imagem aqui

Desista do setor pendente e ele será realocado

Há duas maneiras pelas quais a unidade pode finalmente realocar o setor e consumir outro setor sobressalente:

  • finalmente obtém uma boa leitura
  • você não se importa mais com o setor

Se a unidade finalmente ler o setor, ela saberá que pode realocá-lo.

A outra maneira pela qual a unidade pode realocar o setor é se você informar que o conteúdo desse setor é irrelevante; que você não se importa mais com o que está nele. Como você faz isso?

Escrevendo algo novo para o setor.

Sempre que você lê ou grava para um setor em um disco rígido, é necessário ler / gravar todo o setor de 512 bytes 1 . Você não pode escrever apenas parte de um setor. Quando o sistema operacional grava dados em um setor, ele precisa especificar os 512 bytes inteiros . Se você disser ao disco rígido que deseja que esse novo conteúdo substitua esse setor defeituoso, a unidade saberá que você nem se importa com o que está atualmente no setor defeituoso. Ele pode realocar um setor defeituoso para uma das peças sobressalentes e o setor não está mais pendente .

É por isso que, quando as pessoas perguntam sobre ter algumas Current Pending Sectors, o conselho comum é usar uma ferramenta (como o Data LifeGuard da Western Digital) para gravar todos os zero na unidade.

insira a descrição da imagem aqui

Ao escrever zeros em todos os setores da unidade, você está dizendo à unidade que ela pode realocar finalmente todos os setores pendentes incômodos . Após a limpeza, todo o seu Pending Sectorsse tornará Reallocated Sectors:

ID                             Current  Worst  Threshold  Raw  
=============================  =======  =====  =========  ====
(05) Reallocated Sector Count  192      192    140          66
(C4) Reallocated Event Count   196      196    0             5
(C5) Current Pending Sector    100      100    0             0

Nota: Não é estritamente necessário usar uma ferramenta de "baixo nível" como o Data LifeGuard da Western Digital. Se você instruir o Windows a executar um formato completo (ou seja, formato não rápido ) de um volume, ele gravará zeros em todos os setores do volume.

O sistema de arquivamento do sistema operacional suporta setores de marcação tão ruins

Armado com esse conhecimento, exploraremos um cenário comumente confuso.

Antes do advento da Integrated Drive Electronics (IDE), o sistema operacional host era responsável por detectar setores defeituosos, tentar novamente as leituras, mover dados para outro setor e marcar setores antigos como ruins.

Se você executasse um chkdsk /r c:usando o sistema operacional host, ele reconheceria que os setores "pendentes" são ruins e os marcou como ruins em si, e nunca tente usá-los novamente:

> C:\Windows\system32>chkdsk /r c:
The type of the file system is NTFS.
Volume label is OS.

        12 KB in bad sectors.

Portanto, assumindo um disco rígido do setor de 512 bytes, 12 KB de 'Setores Pendentes' ou, neste exemplo, 12 KB marcados pelo sistema operacional como 'setores defeituosos', que corresponderiam a 24 decimais ou 0x18 hexadecimais, como seria mostrado por um utilitário de disco SMART como informações sobre o Crystal Disk:

ID   Attribute Name            Current  Worst  Threshold  Raw  
=============================  =======  =====  =========  ====
(C5) Current Pending Sector    100      100    0            18

Nota : O utilitário Data LifeGuard v1.31 da Western Digital (mais recente em 31/08/2017) não parece mostrar os valores atuais do contador SMART 'Raw' corretamente.

Agora, se você executar um formato completo (que grava zeros em todos os setores do volume) :

insira a descrição da imagem aqui

Isso significa que todos os setores que foram Pendingrealocados. Agora é seguro para o sistema de arquivamento usar esses setores novamente. Para instruir o sistema de arquivamento de que esses setores não são mais "ruins" , você executa uma opção em que reavalia setores defeituosos:

>chkdsk c: /B

onde a documentação do comando diz

/B              NTFS only: Re-evaluates bad clusters on the volume
                (implies /R)

Ou

De acordo com: https://technet.microsoft.com/en-us/library/cc730714(v=ws.11).aspx

/B              NTFS only: Clears the list of bad clusters on the volume and 
                  rescans all allocated and free clusters for errors. /b includes
                  the functionality of /r. Use this parameter after imaging a
                  volume to a new hard disk drive.

Esta foi uma grande quantidade de textos e muitas imagens de tela, para algo que nunca será lido.


Eu tenho um arquivo de 200 MB que tem um problema em 87%. Eu tenho três setores pendentes. Tentei fazer o hash do arquivo para obter boas leituras e reivindicar setores realocados, mas eles não estão sendo realocados! Resultados de hash: ok, falha, ok, ok, falha, falha. Toda vez que o sistema operacional gerava vários erros de disco no visualizador de eventos, e em hashings ok, ele pendia por meio minuto a 87%. Todos os hashes são iguais. C5 ainda é 3 e C4 ainda é 0. Qual é a sua opinião sobre isso?
Mark Jeronimus

@MarkJeronimus Tente usar um limpador de arquivos, que gravará todos os zeros (ou todos os dados aleatórios) no arquivo. Isso deve levar a unidade a perceber que você não se importa mais com esses setores.
Ian Boyd

Eu fiz um formato completo, mas ainda não mudei.
Mark Jeronimus

2
Uma coisa que eu não entendo direito: é possível (a) mostrar quais arquivos contêm os setores C5 atuais e (b) 'destruir' esses setores, ou seja, movê-los para C6 e parar de tentar lê-los? Não quero que meu disco rígido fique preso em um ciclo interminável de leitura; preferiria ocultar esses setores e excluir os arquivos em questão (restaurando-os manualmente de outra fonte, se forem importantes).
MM

11
Eu não quero zerar a unidade inteira, apenas contornar a parte ruim. Vai ter um olhar para esse programa, graças
MM

5

Você não precisa fazer nada - ainda. A contagem de realocação significa "o disco encontrou o setor defeituoso e o realocou com êxito ". O firmware já corrigiu o problema.

Você só precisa estar ciente de que a unidade está começando a falhar. Em algum momento no futuro, a unidade não terá setores sobrando para a realocação e você perderá dados. Se algum bloco importante for perdido, você poderá perder todos os dados na unidade.

Portanto, fique de olho nesse valor ou compre um novo disco imediatamente, para que você possa esquecê-lo.


3

Tive uma boa experiência com o método descrito aqui https://www.smartmontools.org/wiki/BadBlockHowto . Meu disco estava fazendo barulho e parou de funcionar, então eu uso o relatório inteligente e a fórmula para calcular o bloco defeituoso e uso o dd para limpá-lo. Tive sorte porque o smart ainda está relatando uma contagem atual do setor, mas o disco está funcionando há mais de 2 anos. Comprei um substituto, mas nunca o usei. Parece-me que inteligente também não é tão preciso.


oflag = opção direta para dd ao gravar zeros em locais ruins para forçar a realocação (como sugerido nesse link) era a parte que eu estava procurando. Obrigado!
Anton

2

Talvez você não conheça esta ferramenta: HD Sentinel

O Hard Disk Sentinel (HDSentinel) é um software de monitoramento e análise de SSD e HDD com vários sistemas operacionais. Seu objetivo é encontrar, testar, diagnosticar e reparar problemas na unidade de disco rígido, relatar e exibir a integridade do SSD e HDD, degradações e falhas de desempenho. O Hard Disk Sentinel fornece uma descrição textual completa, dicas e exibe / relata as informações mais abrangentes sobre os discos rígidos e de estado sólido dentro do computador e em gabinetes externos (discos rígidos USB / discos e-SATA). Estão disponíveis muitos alertas e opções de relatório diferentes para garantir a máxima segurança de seus dados valiosos.

Esta parece ser uma ótima ferramenta para realizar essas ações. Mas tenha cuidado, algumas opções de execução podem destruir completamente os dados.


1

Você precisa usar uma ferramenta que grave em todos os setores da unidade. Caso contrário, não há como fazê-lo. Se a unidade alocou um setor sobressalente e remapeou, que dados ele deve colocar no setor sobressalente? Não faz ideia, uma vez que sua tentativa de ler o setor existente falhou. Somente uma operação de gravação pode limpar o erro.


Formatar todo o disco rígido é uma operação de gravação para todos os setores? Eu já formatei a unidade (comando de formato baseado no Windows, sem 'formatação rápida'). Obrigado
edteke

2
Um formato rápido não é uma operação de gravação para todos os setores, geralmente é um formato regular. Você sempre pode usar DBaN . O formato regular pelo menos reduziu a contagem?
David Schwartz

Fiz um formato regular (não um formato rápido), esperava a contagem regressiva ou um remapeamento após o formato, mas o número era o mesmo. Graças
edteke

Isso é muito estranho, na verdade. A partição que você formatou tinha o tamanho de toda a unidade?
David Schwartz

@ edgh: Um formato regular não ajuda quando você tem esse erro. Eu sugiro que você tente meu método.
Gigamegs

1

Gravação zero, também conhecido como formato de baixo nível. Você só pode fazer isso com um utilitário de disco do fabricante normalmente. Se houver uma falha no disco rígido causando esse erro, ele poderá retornar quase imediatamente.


1

Experimente os CDs inicializáveis ​​Spinrite 6 ou HDD regenerator. Eles escrevem testes de superfície para limpar os setores defeituosos pendentes e aumentar a contagem realocada.


0

Para adicionar outra solução, recentemente usei o Victoria para reparar 2 discos que falharam com setores pendentes, mas o disco não os remapeava automaticamente por si próprio.

Victoria é uma interface gráfica de baixo nível para o seu disco e inclui (se você realmente quiser!) Edição real de byte a byte do disco, setor de força remapeando as falhas, suporta drives USB e os baratos USB-2-sata da baía da China adaptadores, alterar atributos e recursos inteligentes definidos de fábrica e muito mais.

A desvantagem - é desenvolvido por um desenvolvedor russo, e deixo você abrir a caixa da Pandora, se você tiver problemas com ela ...

Com Victoria, peguei o primeiro setor que não conseguiu remapear, executei uma varredura "Read" de cada setor depois disso com um remapeamento de força. Em seguida, executei uma "Verificação" de todo o disco, executei novamente a verificação inteligente e agora está tudo bem ...

... Mas eu tenho discos sobressalentes, então estou trocando-os agora. Isso foi um pouco assustador, como também estou entre as soluções de backup, de todos os tempos!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.