Когда проверка SMART на диске сообщает о неисправном секторе, важно иметь возможность определить файл с неисправным сектором и восстановить его из резервных копий. Ниже я покажу, как я это сделал для своего сервера Linux / ext3 VMWARE - но кто-нибудь знает, можно ли это сделать для Windows / NTFS?
Вот как я это сделал для Linux / ext3: Сначала я попросил диск выполнить аппаратное сканирование поверхности (ниже уровня ОС, с помощью цепей SMART на диске):
vserver:~# smartctl -t long /dev/sdc
Я посмотрел на результаты:
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
Итак, один сектор уже был помечен как плохой, 9 были помечены для замены из «промежуточного» сектора. Что еще более важно, первый адрес логического блока (LBA), который не читается, был 591363172.
Я нашел раздел (и смещение внутри него), на который это число «перевели»:
vserver:~# fdisk -lu /dev/sdc
Device Boot Start End Blocks Id System
/dev/sdc1 32 976773119 488386544 83 Linux
Разделение началось в секторе 32. Итак, плохой сектор был ...
vserver:~# bc -l
591363172-32+1
591363141
... со смещением 591363141 секторов от начала раздела.
Теперь я мог найти, какой файл был «скрыт»:
vserver:~# tune2fs -l /dev/sdc1 | grep Block\ size
Block size: 4096
Размер блока этой файловой системы EXT3 составлял 4096 байт, поэтому поврежденный сектор уничтожил этот блок в файловой системе:
vserver:~# bc -l
591363141*512/4096
73920392.62500000000000000000
И номер блока (73920392) соответствует этому файлу:
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
И я восстановил этот файл из своих резервных копий.
Есть ли аналогичная процедура, которой я могу следовать для Windows / NTFS?
dd
. Это заставит диск либо отремонтировать, либо перераспределить его.