Да, есть вещь, называемая немного гнилой.
Но нет, это не затронет вас незамеченным.
Когда накопитель записывает сектор на пластины, он не просто записывает биты точно так же, как они хранятся в ОЗУ, - он использует кодировку, чтобы убедиться, что нет последовательностей того же бита, которые являются слишком длинными и добавляет коды ECC, которые позволяют исправлять ошибки, затрагивающие несколько битов, и обнаруживать ошибки, затрагивающие более нескольких битов.
Когда привод считывает сектор, он проверяет эти коды ECC и восстанавливает данные, если это необходимо и возможно. Что будет дальше, зависит от обстоятельств и встроенного программного обеспечения привода, на которое влияет его назначение.
- Если сектор может быть прочитан и у него нет проблем с ECC, он передается в ОС
- Если сектор может быть легко восстановлен, восстановленная версия может быть записана на диск, считана и проверена, чтобы определить, была ли ошибка случайной (космические лучи ...) или существует ли систематическая ошибка с носителем
- Если накопитель определяет, что произошла ошибка с носителем, он перераспределяет сектор
- Если после нескольких попыток чтения сектор не может быть ни прочитан, ни исправлен, на диске, который обозначен как диск RAID, диск откажется, перераспределит сектор и сообщит контроллеру, что возникла проблема. Он использует контроллер RAID для восстановления сектора из других участников RAID и записи его обратно на неисправный диск, который затем сохраняет его в перераспределенном секторе, который, как мы надеемся, не имеет проблемы.
- Если сектор не может быть прочитан или исправлен на настольном диске, он сделает еще больше попыток его прочитать. В зависимости от качества привода это может включать в себя изменение положения головки, проверку наличия переворачивающихся битов при повторном чтении, проверку того, какие биты являются самыми слабыми, и некоторые другие вещи. Если любая из этих попыток окажется успешной, накопитель перераспределит сектор и запишет восстановленные данные.
(Это одно из основных различий между дисками, которые продаются как диски «для настольных ПК», «NAS / RAID» или «видеонаблюдение». Дисковод RAID может просто быстро сдаться и заставить контроллер восстанавливать сектор, чтобы избежать задержки на пользовательская сторона. Диск настольного компьютера будет повторять попытки снова и снова, потому что пользователь, ожидающий несколько секунд, вероятно, лучше, чем сообщать ему, что данные потеряны. А видеодиск оценивает постоянную скорость передачи данных больше, чем восстановление после ошибок, поскольку поврежденный кадр обычно выигрывает. даже не заметили.)
В любом случае, накопитель узнает, произошел ли гниль, как правило, восстановится после него, а если не сможет, то сообщит контроллеру, который, в свою очередь, сообщит драйверу, который сообщит ОС. Затем ОС должна представить эту ошибку пользователю и действовать в соответствии с ней. Вот почему Кибернард говорит
Я никогда не видел ни единой ошибки, но видел множество жестких дисков, на которых отказали целые сектора.
привод узнает, что с сектором что-то не так, но не знает, какие биты вышли из строя. (Один бит, который потерпел неудачу, всегда будет перехвачен ECC).
Обратите внимание, что chkdsk и автоматически восстанавливающие файловые системы не решают проблему восстановления данных в файлах. Они нацелены на повреждение в структуре файловой системы; как размер файла, отличающийся между записью каталога и количеством выделенных блоков. Функция самовосстановления NTFS обнаружит структурные повреждения и предотвратит их дальнейшее воздействие на ваши данные, они не восстановят уже поврежденные данные.
Конечно, есть и другие причины, по которым данные могут быть повреждены. Например. Плохое ОЗУ на контроллере может изменить данные до того, как они будут отправлены на диск. В этом случае никакой механизм на диске не будет обнаруживать или восстанавливать данные, и это может быть одной из причин, почему структура файловой системы повреждена. Другие причины включают в себя простые программные ошибки, затемнение при записи на диск (хотя это устраняется журналированием файловой системы) или неправильные драйверы файловой системы (драйвер NTFS в Linux долгое время оставался доступным только для чтения, так как NTFS была подвергнута обратному проектированию, не документирована). и разработчики не доверяли своему собственному коду).
Однажды у меня был такой сценарий, когда приложение сохраняло все свои файлы на двух разных серверах в разных центрах обработки данных, чтобы сохранить рабочую копию, если данные при любых обстоятельствах. Через несколько месяцев мы заметили, что в одной из копий около 0,1% всех файлов не соответствуют сумме MD5, которую приложение хранит в своей базе данных. Оказалось, что неисправен оптоволоконный кабель между сервером и SAN.
По этим другим причинам некоторые файловые системы, такие как ZFS, хранят дополнительную информацию о контрольной сумме для обнаружения ошибок. Они разработаны, чтобы защитить вас от гораздо большего, что может пойти не так, как просто гниение.