Lorsqu'un contrôle SMART sur un disque signale un mauvais secteur, il est important de pouvoir identifier le fichier qui a le mauvais secteur - et le restaurer à partir de sauvegardes. Ci-dessous, je montre comment j'ai fait cela pour mon serveur VMWARE Linux / ext3 - mais quelqu'un sait-il si cela peut être fait pour Windows / NTFS?
Voici comment je l'ai fait pour Linux / ext3: j'ai d'abord demandé au lecteur de faire une analyse de la surface matérielle (en dessous du niveau du système d'exploitation, avec les circuits SMART sur le lecteur):
vserver:~# smartctl -t long /dev/sdc
J'ai regardé les résultats:
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
Ainsi, un secteur était déjà marqué comme mauvais, 9 ont été marqués pour être remplacés à partir de l'espace du secteur "intermédiaire". Plus important encore, la première adresse de bloc logique (LBA) qui est illisible, était 591363172.
J'ai trouvé la partition (et l'offset à l'intérieur) que ce nombre a "traduit" en:
vserver:~# fdisk -lu /dev/sdc
Device Boot Start End Blocks Id System
/dev/sdc1 32 976773119 488386544 83 Linux
La partition a commencé au secteur 32. Donc, le mauvais secteur était ...
vserver:~# bc -l
591363172-32+1
591363141
... à un décalage de 591363141 secteurs depuis le début de la partition.
Maintenant, je pouvais trouver quel fichier était "arrosé":
vserver:~# tune2fs -l /dev/sdc1 | grep Block\ size
Block size: 4096
La taille de bloc de ce système de fichiers EXT3 était de 4096 octets, donc le secteur défectueux a détruit ce bloc dans le système de fichiers:
vserver:~# bc -l
591363141*512/4096
73920392.62500000000000000000
Et le numéro de bloc (73920392) correspondait à ce fichier:
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
Et j'ai restauré ce fichier à partir de mes sauvegardes.
Existe-t-il une procédure équivalente que je peux suivre pour Windows / NTFS?
dd
. Cela forcera le disque à le réparer ou à le réallouer.