Какова степень детализации жесткого диска (неустранимая ошибка чтения)?

tl; dr в случае a юр происходит на жестком диске, я потеряю 1bit, 1Byte или размер сектора (512Bytes или 4096 Bytes AF)? и если можно объяснить, почему так?

Справочная информация: Вопрос здесь возникает, когда жесткий диск имеет проблемы чтения данных. Конечно, диск может полностью потерпеть неудачу, оставив все свои данные потерянными (сбой диска), но случай Я спрашиваю здесь о заключается в том, что когда только небольшая часть ее теряется (юр, в неисправимая ошибка чтения).

хотя я искал информацию относительно Уре, я узнал немного наверняка. Это может иметь свою причину в том, что то, что происходит внутри диска, т. е. то, что скрыто от прямого взаимодействия с пользователем, например ECCs-correction, для меня трудно связать с тем, к чему я обращаюсь как пользователь - секторы.

давайте представим, что жесткий диск имеет проблемы с чтением данных.

в этой ситуации, конечно, это должно означать либо то, что:

  • (a) некоторые биты сектора не могут быть прочитаны, или
  • (b) все биты могут быть прочитаны, но они не проходят проверку контрольной суммы (конечно, ожидая проблем, сектор 4096 байт не просто 8*4096 бит, но некоторые дополнительные биты / байт для проверки/исправления ошибок (т. е. биты четности) (с) ????

Нет, я считаю, что когда мы находимся в ситуации, в которой произошла комбинация (а) и (Б) и надежная реконструция 4096 байты сектора не могут быть выполнены, тогда чрезмерно предполагать, что обязательно все они являются garpage,на самом деле, если бы мы знали о логике исправления ошибок interal hdd, мы могли бы вместо этого сказать: "посмотрите, что-то не проверяется, и с хорошим изменением, по крайней мере, 1,2,3, n бит/байт данных блока "неправильно"". Если бы мы были избыточно экономить " привет, привет....., привет " строки байтов ASCII в этом секторе у нас на самом деле все еще может быть справедливая последовательность "привет,привет...."прежде чем будет "...Уэллохелло..."(т. е. " e " - > "U").

Так что же такое гранулярность Уре?

обновление: был комментарий, в котором высказывалась идея плохого сектора (и предполагалось, что это отражает степень детализации события Уре. Это не абсурд, это и может использоваться в ответе на вопрос. Тем не менее, я просто прочитал еще один связанный с этим вопрос, касающийся ожидающих нечитаемых секторов (здесь https://unix.stackexchange.com/questions/1869/how-do-i-make-my-disk-unmap-pending-unreadable-sectors) что заставляет меня думать, что в некоторых сценариях действительно существует более размытая линия между данными, потерянными в случае Уре.

4 ответа:

исправление ошибок на жестком диске-это дополнительный блок данных, связанный с каждым аппаратным сектора. Во время записи прошивка диска вычисляет эти данные и записывает их вместе с данными пользователя. Во время чтения прошивка считывает ECC вместе с данными и проверяет их вместе.

для традиционного жесткого диска аппаратный сектор составляет 512 байт. Для диска расширенного формата это 4K байт (не имеет значения, представляет ли диск 512 байт или 4K-байтовые сектора на интерфейсе, т. е. 512e против 4kn).

результат проверки после чтения, имеет в основном три возможных результата:

  • сектор считывался без ошибок. Это на самом деле не совсем распространено на современных жестких дисках; плотность бит такова, что они зависят от работы ECC.

  • сектор считывался с исправимыми ошибками. Как подразумевалось выше, это не редкость; это ожидается. Диск возвращает данные, с исправлением ошибок применяется, к пользователю.

  • сектор был прочитан, но было слишком много "неправильных битов"; ошибки не могли быть исправлены.

в последнем случае диск обычно не возвращает никакого содержимого; он просто возвращает состояние, указывающее на ошибку. Это связано с тем, что невозможно узнать, какие биты являются подозрительными, не говоря уже о том, какими должны быть их значения. Поэтому весь сектор (биты ECC и все) ненадежен. Невозможно определить, какая часть плохого сектора плохая, не говоря уже о том, каким должно быть его содержание. ECC-это" гештальт", который вычисляется по всему содержимому сектора, и если он не соответствует, это весь сектор, который не соответствует.

SpinRite работает, просто пытаясь прочитать плохой сектор снова и снова, используя функцию "чтение обслуживания", которая возвращает данные (но без битов ECC), даже если диск говорит "неисправимая ошибка". Как сказано в описание, связанное DavidPostill, может быть успешным с безошибочным (на самом деле "исправимым" более вероятно) чтением; или он может быть в состоянии вывести, по существу, усредняя возвращенные биты вместе, разумное предположение о содержимом сектора. У него не больше возможностей точно исправлять ошибки с помощью ECC, чем у привода; это математически невозможно.

Что такое гранулярность Уре?

неисправимых ошибок чтения (на английском) по секторам читать неудачи. Если сектор не может быть прочитан без ошибок, не имеет значения, был ли это только 1 байт или все байты сектора.

степень детализации-это размер сектора.

даже если только 1 байт не ты не нормально получить любые данные из этого сектора обратно без использования специального программного обеспечения.


может данные из неисправного сектора будут восстановлены?

SpinRite говорит:

SpinRite даже в состоянии восстановить большую часть данных в секторе, который никогда не может быть полностью прочитан, и который любое другое программное обеспечение утилиты отбрасывает полностью.

посмотреть Как SpinRite Восстанавливает Нечитаемые Данные.


отказ от ответственности.

Я не связан с SpinRite в любом случае, и я никогда не использовал оно.

нет такой вещи, как" не могу прочитать немного", если у вас нет действительно серьезной аппаратной ошибки, такой как голова, не способная искать правильную дорожку, или след сервопривода поврежден, и правильный сектор не может быть найден. Очевидно, что в любом случае у вас будет, по крайней мере, целый нечитаемый сектор.

в противном случае, вы всегда получаете биты обратно, они просто возможно, некорректно бит. Здесь появляется код исправления ошибок; он добавляет некоторое число дополнительных битов ECC для каждого сектора, так что любая правильная комбинация битов данных и битов ECC соблюдает некоторое алгебраическое правило. Если все биты были прочитаны правильно, код будет проверять и данные могут быть переданы обратно напрямую. Если небольшое количество битов было прочитано неправильно, код ECC может быть использован, чтобы точно определить, какие из них, и исправить их, так что все данные передаются обратно правильно. Если большее количество битов было прочитано неправильно, код ECC может обнаружить, что там был an ошибка, но он больше не имеет достаточно информации, чтобы выяснить , который биты неверны; это неисправимая ошибка чтения. Если a очень большое количество битов считывается неправильно, тогда код может быть правильно проверен "случайно", и диск вернет поврежденные данные, но с достаточным количеством битов ECC вероятность этого может быть сделана такой маленькой, как вам нравится.

поэтому, чтобы ответить на вопрос, я думаю, вы добирались - если было частичное чтение ошибка, но достаточно информации, чтобы выяснить, где произошла ошибка, то она также может быть исправлена, и компьютер не увидит никакой ошибки вообще. На самом деле это происходит постоянно. Неисправленная ошибка возникает, когда невозможно определить, какие биты данных являются допустимыми, а какие нет, и поскольку код исправления ошибок вычисляется по сектору, это происходит при детализации сектора.

заглянув в него и вдохновившись ответом https://superuser.com/a/969917/160771 от https://superuser.com/users/337631/davidpostill

Я хотел бы ответить представить несколько расширяющийся альтернативный ответ. Во-первых, это правда, что жесткий диск и его прошивка являются источником события URE, то есть события, данные не могут быть прочитаны. Далее верно, что данные записываются на диск в секторах 512 или 4096 байт полезных данных. и около 50 или соответственно 100 байт дополнительных данных, которые должны позволить проверку и исправление ошибок.

говоря о Уре происходит поэтому естественно в контексте сектора жесткого диска. Термин плохие сектора, безусловно, несколько связаны, но не идентичны ситуации, когда у нас есть сектор Уре.

сектор с некоторыми проблемами, которые должны быть прочитаны без ошибок, не обязательно совершенно бессмысленно. Может быть, действительно все 4096 данных были повреждены, но также может быть, что только 1 бит больше, чем было исправлено надежно (через reduntant дополнительные данные ECC, добавленные в каждый сектор) был поврежден.

в casese, в котором только некоторые очень немногие байты больше, чем hdd смог исправить, были повреждены, есть изменения, которые часть 4096 байтов все еще имеют значимые данные.

пример может быть, что 4096 представляет ASCII charbytes 2 предложений. Тогда возможно, что шляпа 1 предложение или больше из совершенно неповрежден. Также возможно, что каждая 2-я или 3-я буква была удалена. Если данные 4096 потеряны в событии Уре, следовательно, до интерпретации и зависит от данных. Можно было бы представить, что сами данные имеют еще один слой оболочки ECC, что позволило бы дальнейшее восстановление.

поэтому хорошо, что большинство прошивок обрабатывают сектора Уре по-разному от плохих секторов:

Как правило, автоматическое редактирование секторы только тогда, когда сектор записывается. Логика этого, по-видимому, заключается в том, что даже если сектор не может быть прочитан нормально, он все равно может быть читаемым с помощью методов восстановления данных. (от https://en.wikipedia.org/wiki/Bad_sector)

или в какой-то степени это может быть то, что часть сектора все еще содержит полезные данные.