Краткий ответ: напишите что-нибудь новое для сектора (даже нули - что делает длинный формат).
Длинный ответ
Жесткие диски сегодня пытаются скрыть поврежденные сектора от хост-компьютера. Хост-компьютер просто просит диск вернуть содержимое определенного номера сектора. Обычно диск считывает сектор, возвращает его на хост-компьютер, и все в порядке.
Жесткий диск знает, является ли значение, которое он прочитал, действительным или нет, потому что диск использует код с исправлением ошибок (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 DigitalGuard от 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
Примечание . Утилита Western Life DataGuard v1.31 (последняя на 31.08.2017) не отображает текущую версию SMART.Необработанные значения счетчика правильно.
Теперь, если вы выполняете полный формат (который записывает нули в каждый сектор тома):
Это означает, что все те сектора, которые находились на 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.
Это была полная лотерея и скриншоты, которые никогда не будут прочитаны.