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.
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 Sectors
sã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:
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.
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 Sectors
se 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) :
Isso significa que todos os setores que foram Pending
realocados. 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.