Краткий ответ: напишите что-то новое для сектора (даже нули - что делает длинный формат).
Длинный ответ
Жесткие диски сегодня пытаются скрыть поврежденные сектора от хост-компьютера. Хост-компьютер просто просит диск вернуть содержимое определенного номера сектора. Обычно диск считывает сектор, возвращает его на хост-компьютер, и все в порядке.
Жесткий диск знает, является ли значение, которое он прочитал, действительным или нет, потому что диск использует код с исправлением ошибок (ECC) для проверки правильности прочитанного содержимого. Если накопитель обнаружит, что содержимое сектора недопустимо, он попытается повторить чтение. Надежда состоит в том, что если он просто прочитает его снова, он может получить правильное содержимое сектора. Он будет повторять попытки до тех пор, пока не получит правильное значение или не достигнет своего предела времени (формально известного как ограничение времени выполнения команды или CCTL ).
Во время этих попыток диск будет казаться мертвым; так как он больше не отвечает на команды .
Запасные сектора
Большинство современных приводов содержат несколько «запасных» секторов (например, 1024 запасных сектора). Если диск распознает сектор как плохой, он прекратит его использование. Любые запросы на чтение или запись в этот поврежденный сектор будут прозрачно перенаправлены в резервный сектор. Это выделение поврежденного сектора и перераспределение его данных в резервный сектор называется событием перераспределения . И общее количество перераспределенных секторов (а также, сколько ваших резервных секторов было использовано) - это количество перераспределенных секторов .
В этом примере с одного из моих жестких дисков было обнаружено, что 64 сектора повреждены. Это означает, что 64 из свободных секторов привода были задействованы:
ID Current Worst Threshold Raw
============================= ======= ===== ========= ===
(05) Reallocated Sector Count 192 192 140 64
На этом же жестком диске было 4 события перераспределения . Это означает, что в четырех случаях диск помечал сектора как плохие и использовал вместо них запасные.
ID Current Worst Threshold Raw
============================= ======= ===== ========= ===
(05) Reallocated Sector Count 192 192 140 64
(C4) Reallocated Event Count 196 196 0 4
Что если он не сможет прочитать данные?
Эти действия перечитывания секторов, потребления запчастей за спиной компьютера - это хорошо. Это означает, что операционной системе хоста не приходится сталкиваться с проблемой сбойных секторов. Сам привод может обрабатывать эти детали сам.
Бонусная болтовня : в старые времена ваш жесткий диск поставлялся с наклейкой, прикрепленной к нему. Эта наклейка содержала список заводских дефектов ; список всех известных плохих мест на диске.
Если вы выполнили низкоуровневое форматирование диска, вам пришлось использовать инструмент для ввода всех местоположений « Цилиндрическая головка-сектор» в «плохих точках».
Диски SCSI имеют команду, IOCTL_DISK_REASSIGN_BLOCKS
чтобы сказать им, чтобы перераспределить плохое место на диске после того, как операционная система обнаружит его. В дисках IDE все это происходит автоматически, без необходимости вмешательства операционной системы.
В идеале диск должен распознавать сбой сектора, перемещать данные в резервный сектор и никогда больше не использовать исходный сектор. Но что произойдет, если накопитель не сможет успешно прочитать сектор?
Это то Pending Sectors
, что есть. Диск обнаружил, что сектор отказывает, и его необходимо переназначить на резервный. Но он не может этого сделать, пока не сможет успешно прочитать данные. Когда накопитель знает, что сектор неисправен, и его необходимо переназначить, но он пока не может этого сделать, потому что он ожидает, чтобы получить хорошее чтение из сектора: это называется Счетчик ожидающих секторов :
ID Current Worst Threshold Raw
============================= ======= ===== ========= ====
(05) Reallocated Sector Count 192 192 140 64
(C4) Reallocated Event Count 196 196 0 4
(C5) Current Pending Sector 100 100 0 2
Мой жесткий диск имеет 2 сектора, которые диск распознает как плохие, но пока не может быть перераспределен. Если бы вы прочитали один из этих «ожидающих секторов», диск, скорее всего, попытался бы повторить (и повторить, и повторить) и в конечном итоге возвратил бы ошибку чтения операционной системе хоста:
Откажитесь от ожидающего сектора, и он будет перераспределен
Существует два способа, которыми накопитель может наконец перераспределить сектор и использовать другой резервный сектор:
- это наконец получает хорошее чтение
- вам все равно, что в секторе больше
Если накопитель наконец прочитал сектор, то он знает, что может перераспределить сектор.
Другой способ, которым накопитель может перераспределить сектор, - это если вы дадите ему понять, что содержимое этого сектора не имеет значения; что тебе все равно, что в нем больше. Как ты это делаешь?
Написав что-то новое для сектора.
Всякий раз, когда вы читаете или записываете сектор на жестком диске, вы должны читать / записывать весь 512-байтовый сектор 1 . Вы не можете написать только часть сектора. Когда ОС записывает данные в сектор, она должна указывать все 512 байт. Если вы скажете жесткому диску, что вы хотите, чтобы это новое содержимое заменило этот поврежденный сектор, то накопитель узнает, что вам все равно, что находится в поврежденном секторе. Затем он может перераспределить неисправный сектор на одну из запчастей, и этот сектор больше не находится в состоянии ожидания .
Вот почему, когда люди спрашивают о наличии Current Pending Sectors
таких продуктов, общий совет - использовать инструмент (например, Data LifeGuard от Western Digital) для записи всех нулей на диск.
Записывая нули в каждый сектор на диске, вы сообщаете диску, что он может наконец перераспределить все эти надоедливые ожидающие секторы . После вайпа все ваши Pending Sectors
станут Reallocated Sectors
:
ID Current Worst Threshold Raw
============================= ======= ===== ========= ====
(05) Reallocated Sector Count 192 192 140 66
(C4) Reallocated Event Count 196 196 0 5
(C5) Current Pending Sector 100 100 0 0
Примечание: не обязательно использовать инструмент низкого уровня, такой как Data LifeGuard от Western Digital. Если вы дадите команду Windows выполнить полный формат тома (то есть не быстрое форматирование), она будет записывать нули в каждый сектор тома.
Система регистрации ОС поддерживает маркировку секторов как плохих
Вооружившись этими знаниями, мы рассмотрим наиболее запутанный сценарий.
До появления Integrated Drive Electronics (IDE) операционная система хоста отвечала за обнаружение поврежденных секторов, повторное считывание, перенос данных в другой сектор и маркировку старых секторов как поврежденных.
Если бы вы запускали с chkdsk /r c:
использованием операционной системы хоста, он распознал бы, что «ожидающие» сектора являются плохими, и пометил бы их как плохие сам по себе, и никогда не пытался бы использовать их снова:
> C:\Windows\system32>chkdsk /r c:
The type of the file system is NTFS.
Volume label is OS.
12 KB in bad sectors.
Таким образом, предполагая 512-байтовый секторный жесткий диск, 12 КБ «ожидающих секторов» или в этом примере 12 КБ, помеченных ОС как «поврежденные секторы», которые будут соответствовать десятичному 24 или шестнадцатеричному 0x18, как было бы показано утилитой SMART disk такие как информация о Crystal Disk:
ID Attribute Name Current Worst Threshold Raw
============================= ======= ===== ========= ====
(C5) Current Pending Sector 100 100 0 18
Примечание . Утилита Data LifeGuard v1.31 компании Western Digital (последняя на 31.08.2017), по-видимому, неправильно отображает текущие значения счетчика SMART «Raw».
Теперь, если вы выполняете полный формат (который записывает нули в каждый сектор тома) :
Это означает, что все те сектора, которые были Pending
, будут перераспределены. Теперь для файловой системы безопасно снова использовать эти сектора. Чтобы проинструктировать систему регистрации, что эти сектора больше не являются «плохими» , вы выполняете опцию, где она переоценивает плохие сектора:
>chkdsk c: /B
где в документации команды написано
/B NTFS only: Re-evaluates bad clusters on the volume
(implies /R)
Или
Согласно:
https://technet.microsoft.com/en-us/library/cc730714(v=ws.11).aspx
/B NTFS only: Clears the list of bad clusters on the volume and
rescans all allocated and free clusters for errors. /b includes
the functionality of /r. Use this parameter after imaging a
volume to a new hard disk drive.
Это была целая лотерея и скриншоты, которые никогда не будут прочитаны.