Do setor defeituoso ao “arquivo danificado” - fiz para Linux / ext3, posso fazer isso para Windows / NTFS?

17

Quando uma verificação SMART em um disco relata um setor defeituoso, é importante poder identificar o arquivo que possui o setor defeituoso - e restaurá-lo a partir de backups. Abaixo, mostro como fiz isso no meu servidor Linux / ext3 VMWARE - mas alguém sabe se isso pode ser feito no Windows / NTFS?

Aqui está como eu fiz isso no Linux / ext3: primeiro solicitei à unidade que fizesse uma verificação da superfície do hardware (abaixo do nível do SO, com os circuitos SMART na unidade):

vserver:~# smartctl -t long /dev/sdc

Eu olhei para os resultados:

vserver:~# smartctl -a /dev/sdc
...
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       1
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       9
...
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed: read failure       90%     27679         591363172

Portanto, um setor já foi marcado como ruim, 9 foram marcados para substituição do espaço do setor "intermediário". Mais importante, o primeiro endereço de bloco lógico (LBA) ilegível foi 591363172.

Encontrei a partição (e o deslocamento dentro dela) que esse número "traduziu" para:

vserver:~# fdisk -lu /dev/sdc
Device Boot      Start         End      Blocks   Id  System
/dev/sdc1           32   976773119   488386544   83  Linux

A partição começou no setor 32. Então, o setor ruim era ...

vserver:~# bc -l
591363172-32+1
591363141

... em um deslocamento de 591363141 setores desde o início da partição.

Agora eu pude encontrar qual arquivo foi "hosed":

vserver:~# tune2fs -l /dev/sdc1 | grep Block\ size
Block size:               4096

O tamanho do bloco deste sistema de arquivos EXT3 era de 4096 bytes; portanto, o setor defeituoso destruiu esse bloco no sistema de arquivos:

vserver:~# bc -l
591363141*512/4096
73920392.62500000000000000000

E o número do bloco (73920392) correspondeu a este arquivo:

vserver:~# debugfs
debugfs 1.41.3 (12-Oct-2008)
debugfs:  open /dev/sdc1
testb 73920392
debugfs:  testb 73920392
Block 73920392 marked in use
debugfs:  icheck 73920392
Block           Inode number
73920392        18472967
debugfs:  ncheck 18472967
Inode           Pathname
18472967        /path/to/filewithbadsector

E eu restaurei esse arquivo dos meus backups.

Existe um procedimento equivalente que eu possa seguir para Windows / NTFS?

ttsiodras
fonte
FYI: a atual contagem pendente de 9 significa que existem 9 setores defeituosos, não apenas um. O autoteste estendido apenas para no primeiro que encontra. Antes de restaurar a partir do backup, você também deseja lidar com o setor defeituoso escrevendo zeros nele dd. Isso forçará a unidade a repará-la ou realocá-la.
Psd #
Sim, você está certo. Após a restauração, fiz outra verificação SMART e descobri que tudo estava bem - portanto, a gravação do arquivo aparentemente gravou nos 9 + 1 setores defeituosos (e a área de teste forneceu substitutos). Mas e o Windows? :-)
ttsiodras 14/09
Eu acho que seu cálculo para o deslocamento do setor em uma partição está incorreto. Os números de setor (além do físico, também conhecido como CHS) são todos baseados em zero, pois o setor 32 é o setor de partição 32-32 == 0, não 1. #
Surpreendentemente, ninguém disse isso ainda em uma pergunta de um ano ou mais: quando você começa a ver setores defeituosos na unidade, significa que você tem tantos que o remapeamento automático automático de blocos ruins da unidade não pode compensar mais. Em vez de restaurar os backups para uma unidade que está acabando, você deve substituir a unidade e restaurá-la na nova unidade.
precisa saber é o seguinte

Respostas:

7

Eu sei que você tem um FS NTFS e execute janelas nesse FS. Não sei se você "poderia" inicializar um Linux ao vivo para trabalhar nesse driver ou não.

Se você pode inicializar o Linux a partir do CD ou USB, pode usar o ntfsprogs. Olhe para a -

ntfscluster 

ntfsinfo 

Acredito que o ntfscluster diga qual arquivo um cluster específico armazena. Espero que isso coloque você na direção certa.

JM Becker
fonte
Encontrei este post do fórum que possui um wrapper utilitário para fazer isso em diferentes sistemas de arquivos e também usa o ntfscluster. ubuntuforums.org/showthread.php?t=1943721
Letargia
Sim, recurso ddrutility: Localiza os arquivos relacionados a setores defeituosos, também pode usar um arquivo com uma lista de setor, talvez pudéssemos usar "badblocks -nvs" + "ddrutility"
diyism