Вопрос или проблема
Когда жесткий диск записывает на диск, как он узнает, что сектор плохой, если ранее он был известен как хороший? Насколько я знаю, он не перечитывает данные, которые были записаны, он просто кладет их, правильно?
Он просто получает обратную связь о том, что напряженность магнитного поля недостаточно высока? Или это будет выявлено только в процессе следующего чтения этого сектора?
Когда жесткий диск записывает на диск, как он узнает, что сектор плохой, если ранее он был известен как хороший?
Он не узнает.
Операция записи на жестком диске выполняется без какой-либо обратной связи. Была ли фактически записана информация о секторе (с ECC) правильно, можно проверить только, подождав один оборот диска и затем выполнив операцию чтения этого сектора/адреса LBA.
Плохой блок/сектор обнаруживается только при чтении, а не при записи. Единственная ошибка при записи будет, если сектор/LBA не может быть найден. Как только нужный сектор найден, операция записи начинается вслепую. Нет измерения “напряженности магнитного поля“. Когда головка чтения/записи занята в режиме записи, она не может одновременно выполнять операцию чтения.
Насколько я знаю, он не перечитывает данные, которые были записаны, он просто кладет их, правильно?
Правильно, для обычного жесткого диска и его типичной работы.
Если бы выполнялась одновременная операция чтения, это потребовало бы дополнительной чтения головки далеко от головки записи, чтобы не быть подверженной воздействию. Это потребовало бы либо увеличения размера, веса и геометрии блока головок чтения/записи, либо использования другой, отдельной сборки головки чтения. Любое из решений подразумевает увеличение стоимости и сложности, снижая при этом общую надежность.
Реальные затраты на выполнение чтения после записи для проверки операции записи на обычном жестком диске были бы временем на ожидание одного оборота диска (дисков). Обычно эта задержка считается неприемлемым снижением производительности по сравнению с надежностью записей на жесткий диск. В целом, вероятно, причина потери данных скорее связана с какой-то другой формой отказа диска.
Или это будет выявлено только в процессе следующего чтения этого сектора?
Типичное определение плохого блока/сектора — это блок, который имеет неисправимые ошибки при чтении. Причина ошибок битов (например, слишком высокая высота головки, износ или повреждение поверхности) не имеет значения (даже если это можно было бы определить).
Файловая система или встроенный контроллер могут применять дополнительные критерии (например, последующая запись все еще не удается обеспечить корректируемое чтение), чтобы избежать пометки одноразовых отказов.
Блок, имеющий исправимые ошибки при чтении, все еще считается хорошим.
Максимальное количество битов, которые можно исправить (в блоке чтения), является внутренним свойством используемого кода ECC, кода исправления ошибок (обнаружения и исправления).
.
Ответ или решение
При работе с жесткими дисками важно понимать, что обнаружение «плохих секторов» на диске происходит, как правило, во время операций чтения, а не записи. Ваш вопрос поднимает интересный аспект работы HDD, и я постараюсь дать детальный ответ.
### Как работают жесткие диски при записи данных?
При записи на жесткий диск операция проводится без непосредственной обратной связи о том, успешна ли эта запись. Системы современного HDD не оценивают магнитную силу поля в режиме реального времени. Когда головка чтения/записи находится в режиме записи, она не способна одновременно перенаправляться в режим чтения. Это связано с конструктивными особенностями и необходимостью соблюдения приемлемого уровня производительности.
Во время записи данные укладываются на диск, и только после того, как головка записи возвращается на круг, можно прочитать данные для проверки их целостности, что может быть сделано в течение следующего цикла вращения пластины. Однако такие проверки не входят в стандартную процедуру по причинам, связанным с производительностью и сложностью.
### Когда обнаруживаются плохие сектора?
Плохие сектора, в основном, обнаруживаются во время чтения, когда данные не удается извлечь с применением встроенного кода исправления ошибок (ECC — Error Correction Code). ECC может исправить определенное количество битовых ошибок, а если ошибок слишком много, сектор помечается как плохой.
Стандартные файловые системы и системы управления HDD используют различные методики для определения того, когда сектор должен быть помечен как плохой. Например, если данные прочитаны с ошибками, которые невозможно исправить, сектор помечается как плохой. Однако, если ошибки могут быть исправлены, сектор остается рабочим.
### Что происходит при обнаружении плохого сектора?
Если в ходе операции чтения обнаруживается плохой сектор, HDD предпринимает попытку переместить данные на резервный сектор (процесс называется ремаппинг). Это позволяет избегать потери данных и продолжать эксплуатацию носителя.
### Заключение
Жесткие диски изначально разрабатывались с ориентацией на надежность, и подавляющее большинство операций записи происходит успешно без необходимости немедленной проверки записи. Инженеры сконцентрированы на обеспечении долговечности и восстановлении данных при помощи избыточных механизмов, таких как ECC, и выделенных резервных секторов.
Учитывая все вышесказанное, при работе с жесткими дисками важно использовать специальные программы для проверки и ремонта плохих секторов, а также регулярно выполнять резервное копирование данных для обеспечения их сохранности.