Коротка відповідь: Напишіть щось нове для сектора (навіть нулі - що робить довгий формат).
Довга відповідь
Сьогодні жорсткі диски намагаються приховати погані сектори від хост-комп'ютера. Хост-комп'ютер просто просить накопичувач повернути вміст певного номера сектора. Зазвичай привід зчитує сектор, повертає його на головну машину, і все добре.
Жорсткий диск знає, чи є воно прочитане значення дійсним чи ні, тому що для перевірки правильності змісту, який він читає, накопичувач використовує код для виправлення помилок (ECC) . Якщо накопичувач виявить, що вміст сектору недійсний, він повторить прочитане. Сподіваємось, що якщо він просто прочитає його знову, він може отримати правильний вміст сектора. Він буде тривати повторні спроби, поки він не отримає хорошого значення, або не буде досягнуто його часового обмеження (формально відомий як обмеження часу на виконання команд або CCTL ).
Під час цих спроб привід видаватиметься мертвим; так як він більше не відповідає на команди .
Запасні сектори
Більшість сучасних накопичувачів містять ряд «запасних» секторів (наприклад, 1,024 запасних секторів). Якщо привід визнає сектор поганим, він припинить його використовувати. Будь-які запити на читання або запис у цей пошкоджений сектор прозоро будуть перенаправлені на запасний сектор. Це відмітка поганого сектору та перенаправлення його даних у запасний сектор називається подією перерозподілу . А загальне число секторів , які були перерозподілені (і так як багато хто з ваших запасних секторів витрачено) є графом Reallocated сектора .
У цьому прикладі з одного з моїх власних жорстких дисків було виявлено погано 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
Що робити, якщо він ніколи не може прочитати дані?
Ці дії перечитування секторів, споживання запасних частин, все за спиною комп'ютера - це добре. Це означає, що хост-операційна система не повинна вирішувати питання несправних секторів. Сам привід може сам обробляти ці деталі.
Бонусна балаканина : за старих часів ваш жорсткий диск постачався із закріпленою на ньому наклейкою. Ця наклейка містила список фабричних дефектів ; список усіх відомих поганих місць на диску.
Якщо ви виконали формат накопичувача низького рівня, вам довелося скористатися інструментом для введення всіх місць поганих місць у Cylinder-Head-Sector .
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
, загальна порада - використовувати інструмент (наприклад, LifeGuard даних Digital 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 , виконати повний формат (тобто не- Швидкий формат) томи, він буде записує нулі в кожному секторі в обсязі.
Система подачі в ОС підтримує маркування секторів як поганих
Озброївшись цими знаннями, ми вивчимо часто заплутаний сценарій.
До появи інтегрованої електроніки приводу (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 наприклад, інформація про кристалічний диск:
ID Attribute Name Current Worst Threshold Raw
============================= ======= ===== ========= ====
(C5) Current Pending Sector 100 100 0 18
Примітка : Утиліта Data DigitalGuard 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.
Це було ціле написання лоти, і цілі скріншоти лоти, для чогось, що ніколи не буде прочитано.