Quando un controllo SMART su un disco segnala un settore danneggiato, è importante essere in grado di identificare il file che ha il settore danneggiato e ripristinarlo dai backup. Di seguito, mostro come ho fatto questo per il mio server VMware Linux / ext3 - ma qualcuno sa se questo può essere fatto per Windows / NTFS?
Ecco come l'ho fatto per Linux / ext3: per prima cosa ho chiesto all'unità di eseguire una scansione della superficie dell'hardware (sotto il livello del sistema operativo, con i circuiti SMART sull'unità):
vserver:~# smartctl -t long /dev/sdc
Ho guardato i risultati:
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
Quindi, un settore era già contrassegnato come non valido, 9 erano contrassegnati per essere sostituiti dallo spazio del settore "stadiazione". Ancora più importante, il primo indirizzo di blocco logico (LBA) che è illeggibile, era 591363172.
Ho trovato la partizione (e l'offset al suo interno) che questo numero ha "tradotto" in:
vserver:~# fdisk -lu /dev/sdc
Device Boot Start End Blocks Id System
/dev/sdc1 32 976773119 488386544 83 Linux
La partizione è iniziata nel settore 32. Quindi, il settore danneggiato era ...
vserver:~# bc -l
591363172-32+1
591363141
... con un offset di 591363141 settori dall'inizio della partizione.
Ora sono riuscito a trovare quale file è stato "hosed":
vserver:~# tune2fs -l /dev/sdc1 | grep Block\ size
Block size: 4096
La dimensione del blocco di questo filesystem EXT3 era 4096 byte, quindi il settore danneggiato ha distrutto questo blocco nel filesystem:
vserver:~# bc -l
591363141*512/4096
73920392.62500000000000000000
E il numero di blocco (73920392) corrispondeva a questo file:
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 ho ripristinato quel file dai miei backup.
Esiste una procedura equivalente che posso seguire per Windows / NTFS?
dd
. Ciò costringerà l'unità a ripararla o riallocarla.