O valor do setor pendente atual deve mudar durante um formato com verificação de bloco defeituoso ativado?

0

Eu tenho uma unidade que teve alguns danos no arquivo. Parece ser devido a ficar muito quente em algum momento no passado, a temperatura máxima reportada é de 99C! Eu recuperei o máximo de dados possível com ntfsclone --rescue e montei a imagem.

A contagem do setor realocado é zero, mas a contagem atual do setor pendente é 233. Li todos os setores da unidade (partição única) com o processo de recuperação de dados, mas a unidade não alterou a contagem do setor pendente. Eu acho isso estranho, eu pensei que a unidade deveria remapear os setores pendentes ou decidir que eles estão bem.

Atualmente estou executando um formato com verificação de block inválido, o kernel está relatando erros de E / S nos mesmos blocos de antes, mas ainda assim a unidade não está realocando setores ou alterando a contagem. A saída do formato é a seguinte:

    mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
61054976 inodes, 244190000 blocks
12209500 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
7453 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848

Checking for bad blocks (read-only test):  11.06% done, 55:05 elapsed
    
por barrymac 22.02.2012 / 13:12

2 respostas

1

Eu tenho que dizer que esta é uma pergunta justa. Eu posso entender a natureza de suas expectativas e acreditar que elas sejam coerentes - em algum momento eu estava com a mesma impressão.

Primeiro, em relação à temperatura: acredito que os dados sobre 99C estão errados. Isso já é superaquecimento extremo. A temperatura normal de operação, para um disco rígido, é de cerca de 20-45 * C (55 * C para modelos de maior capacidade). Qualquer coisa acima desses limites e a mecânica da unidade começam a degradar muito mais rapidamente. O calor faz com que o metal se expanda - o primeiro a sofrer seria o HSA (HeadStackAssembly). Como as cabeças flutuam sobre o prato (devido ao rolamento de ar) em altitudes extremamente baixas (mas ainda não tocando a superfície dos pratos) - você pode ver o quanto isso pode resultar, se algo, exatamente assim, começar a deformar . É por isso que você deve sempre fornecer resfriamento adequado. Além disso, há uma diferença entre a temperatura dentro do HDA (HardDiskAssembly, basicamente o ambiente temporário próximo às cabeças) - isto é, Seagate fornece um atributo SMART apenas para isso.

Agora, responda sua pergunta. A questão é que apenas os casos mais triviais são tratados automaticamente. Normalmente, você não terá setores realocados em uma operação de leitura. Apenas em uma gravação. Se houver dificuldades em ler um setor (somas de verificação incompatíveis), mas os dados foram recuperados com êxito por ECC , ele simplesmente deixa o setor sozinho, sem fazer nada.

Então, basicamente, se você substituísse a unidade inteira com zeros - somente então o firmware da unidade teria remapeado os setores problemáticos para os reservados e diminuiria o valor do atributo SMART # 197 . O raciocínio aqui é que o mecanismo ECC da unidade tenta corrigir o erro e quando ele falha após uma série de tentativas no setor em questão (percebido como tempo limite) - ele simplesmente sinaliza o setor como UNC (incorrigível, também conhecido como bad block). O problema aqui é que ele não sabe mais como lidar com seus dados! E não deveria, como esta já é sua chamada. Você terá que tomar uma decisão - adiar e tentar de alguma forma recuperar os dados naquele setor mais tarde ou, em vez disso, substituí-los e causar realocação. Obviamente, apenas uma dessas coisas pode ser feita automaticamente e é por isso que não é.

O que você está fazendo com mkfs é apenas escrever metadata , que será colocado em setores específicos. Ele não preencherá a unidade inteira (portanto, talvez nunca encontre nenhum dos setores defeituosos atuais). No entanto, um preenchimento com zero seria.

Em suma, a unidade está se deteriorando visivelmente. Eu recomendaria uma passagem de dd (se = / dev / zero), se você ainda quiser respirar alguma (curta) vida nele.

    
por 23.02.2012 / 00:03
1

Você provavelmente deve zerar o disco, por exemplo, antes de ler o teste. Isso inibiria a realocação e esperamos que a leitura seja boa.

    
por 23.02.2012 / 00:33