Плохой сектор в вычислительной технике — это сектор диска на дисковом накопителе , который невозможно прочитать. При повреждении вся информация, хранящаяся в этом секторе, теряется. Когда плохой сектор найден и отмечен, операционная система, такая как Windows или Linux, в будущем пропустит его. Плохие сектора представляют угрозу информационной безопасности в смысле остаточной намагниченности данных .
Плохие сектора могут быть «мягкими» (логическими) или «жесткими» (аппаратными, физическими), в зависимости от того, что делает сектор недоступным. В случае потери питания, битовой порчи (чаще всего на дискетах ) или проблем с прошивкой формат на диске может быть поврежден сверх того, что может исправить код исправления ошибок . Это «мягкий» плохой сектор: запись поверх повреждения будет успешной. [1]
С другой стороны, сектора, поврежденные физически, не могут быть восстановлены: запись не удастся, что приведет к перераспределению. Новый диск может начать с некоторых безобидных плохих секторов из-за производственных дефектов. Более крупные участки возникают в процессе использования из-за сбоя головки , износа, физического удара или проникновения пыли. [2] [1]
На твердотельных накопителях износ флэш-памяти или ошибка контроллера флэш-памяти также могут привести к появлению поврежденных секторов. [3]
Плохие сектора могут быть обнаружены операционной системой или контроллером диска. Большинство файловых систем содержат положения, позволяющие секторам быть помеченными как плохие, чтобы операционная система избегала их в будущем. Утилиты диагностики дисков , такие как CHKDSK ( Microsoft Windows ), Disk Utility (в macOS ) или badblocks (в Linux ) могут активно искать плохие сектора по запросу пользователя.
С появлением контроллеров дисков с поддержкой SMART (см. ниже) бремя предотвращения плохих секторов чаще всего ложится на диск. [4] Некоторые новые файловые системы, такие как Btrfs и ZFS, вообще не имеют функции предотвращения плохих блоков. [5] Программные инструменты, которые ищут плохие блоки, все еще имеют вариант использования: выполняя запись в обнаруженных плохих секторах, можно ускорить процесс переназначения, избегая дальнейших попыток чтения плохого сектора. [6]
Когда микропрограмма контроллера диска обнаруживает, что сектор плохой или нестабильный, современный (после 1990 года) контроллер диска переназначает логический сектор на другой физический сектор. Обычно автоматическое переназначение секторов происходит только тогда, когда сектор записывается — неудачные чтения остаются помеченными как «ожидающие». При нормальной работе жесткого диска обнаружение и переназначение плохих секторов должно происходить прозрачным для остальной системы способом и заранее, до потери данных. Существует два типа переназначения аппаратным обеспечением диска: P-LIST (отображение во время заводских производственных испытаний) и G-LIST (отображение во время использования потребителем с помощью микрокода диска). [4]
Утилиты могут считывать информацию технологии самоконтроля, анализа и отчетности (SMART), чтобы определить, сколько секторов было перераспределено и сколько резервных секторов может быть у диска. [7] Поскольку операции чтения и записи из секторов G-списка автоматически перенаправляются (переназначаются) в резервные сектора, это замедляет доступ к диску, даже если данные на диске дефрагментированы. После заполнения G-списка необходимо заменить блок хранения. [8] [9]
По сравнению с ATA, набор команд SCSI обеспечивает более точное управление плохими секторами. Пользователи могут читать G-LIST, контролировать, выполняется ли автоматическое перераспределение, и использовать специальную команду REASSIGN BLOCKS для ручного перераспределения при необходимости. Набор команд также предоставляет способ выполнения низкоуровневого форматирования с помощью FORMAT UNIT . [10]
Программа Windows ATATool может использоваться для создания преднамеренных "мягких" плохих секторов путем манипуляции данными кода коррекции ошибок (ECC) сектора. Это может использоваться для проверки поддержки плохих секторов в утилитах для работы с дисками и инструментах судебной экспертизы. Например, чтобы сделать сектор 10 плохим:
ATATOOL /BADECC:10 \\.\ФизическийДиск1
hdparm имеет команду --make-bad-sector , которая работает аналогично. Для более новых дисков он может альтернативно использовать WRITE_UNCORRECTABLE_EXT , чтобы "пометить" сектор как плохой: контроллер диска не будет пытаться читать, а немедленно даст сбой. [6]
В исследовании 2007 года CERN наблюдал за 1,53 миллиона жестких дисков 30 моделей в течение 32 месяцев и проанализировал возвращенные ошибки чтения дисков. Они отметили, что 3,5% дисков выработали «скрытую ошибку чтения» (т. е. нечитаемый плохой сектор), и что диск с плохим сектором с большей вероятностью выработает больше. Плохие сектора группируются пространственно (в районе 10 МБ) и временно. Ошибки, восстановленные ECC, о которых сообщают корпоративные диски (используя набор команд SCSI), также предполагают более высокую вероятность появления плохого сектора в будущем. [11]