От плохого сектора до «поврежденного файла» - сделал это для Linux / ext3, могу ли я сделать это для Windows / NTFS?


17

Когда проверка 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?


К вашему сведению: текущий ожидающий счет 9 означает, что есть 9 плохих секторов, а не только один. Расширенная самопроверка просто останавливается на первой найденной проверке. Перед восстановлением из резервной копии также необходимо разобраться с неисправным сектором, записав в него нули dd. Это заставит диск либо отремонтировать, либо перераспределить его.
Псуси

Да, вы правы. После восстановления я сделал еще одну проверку SMART и обнаружил, что все в порядке - поэтому запись файла, по-видимому, была записана поверх 9 + 1 поврежденных секторов (и область подготовки обеспечивала замены). Но как насчет Windows? :-)
ttsiodras

Я думаю, что ваш расчет для смещения сектора в разделе неверен. Номера секторов (отличные от физических, то есть CHS) основаны на нуле, поскольку сектор 32 - это сектор 32-32 == 0, а не 1.

Шокирующе, что никто не сказал этого еще на один год с давним вопросом: когда вы начинаете видеть плохие сектора на диске, это означает, что у вас есть так много, что автоматическое перераспределение внутренних плохих блоков диска больше не может компенсировать. Вместо восстановления из резервных копий на умирающий диск следует заменить диск и восстановить его на новый диск.
voretaq7

Ответы:


7

Я знаю, что у вас есть NTFS FS, и вы запускаете Windows на этой FS. Я не знаю, могли бы вы «загрузить» живой Linux для работы с этим драйвером или нет.

Если вы можете загрузить Linux с CD или USB, вы можете использовать ntfsprogs. смотреть на -

ntfscluster 

ntfsinfo 

Я считаю, что ntfscluster скажет вам, какой файл хранит конкретный кластер. Я надеюсь, что это направит вас в правильном направлении.


Я нашел этот пост на форуме, в котором есть служебная оболочка для разных файловых систем, а также используется ntfscluster. ubuntuforums.org/showthread.php?t=1943721
Вялость

Да, функция ddrutility: находит файлы, связанные с поврежденными секторами. Может также использовать файл со списком секторов, может быть, мы могли бы использовать «badblocks -nvs» + «ddrutility»
diyism
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.