Если я понимаю ситуацию, современные жесткие диски несут ответственность за обнаружение и предотвращение сбойных секторов. Когда сектор записывается, он немедленно читается обратно, чтобы убедиться, что сектор исправен, а если нет, физический сектор помечается как плохой, а данные записываются в другое место, изменяя отображение между этим виртуальным сектором и его физическим сектором. ,
Все это имеет смысл, за исключением одного: откуда все эти дополнительные сектора? Есть ли просто больше физических секторов, чем виртуальных? Это единственное, что имеет смысл для меня. В противном случае такая команда, как dd if=/dev/urandom of=/dev/sda
, в конечном итоге потерпит неудачу, как только она неизбежно попадет в поврежденные сектора, которые обязательно существуют, даже на самых лучших и самых новых дисках.
Кроме того, после запуска вышеуказанной команды, насколько известно жесткому диску, используется каждый виртуальный сектор в нем. Тем не менее, на стороне программного обеспечения не возникает внезапного увеличения количества ошибок записи, как можно было бы ожидать, если бы на жестком диске не хватило места для переназначения поврежденных секторов. Поэтому на жестком диске должно быть где-то еще место для сопоставления любых новых поврежденных секторов, которые он обнаруживает, хотя, насколько известно жесткому диску, используется все виртуальное адресное пространство.
Если предположить, что физических секторов больше, чем виртуальных, как вы можете выяснить, сколько дополнительных секторов осталось и сколько осталось? Таким образом, когда запасы в дополнительном секторе заканчиваются, я могу получить какое-то предупреждение, чтобы заменить жесткий диск до его смерти.
РЕДАКТИРОВАТЬ: Оказывается, я не совсем правильно понял ситуацию. При использовании кодов исправления ошибок чтение после каждой операции записи не требуется. Это заставляет меня задуматься: неужели сектор помечается как плохой и перераспределяется каждый раз, когда нужно использовать ECC для восстановления после ошибки записи в сектор?