Могут ли данные на жестком диске ухудшаться без предупреждения Windows о том, что это произошло, когда я пытаюсь получить доступ к данным?

3396
topo morto

Возможно ли, что физическая деградация жесткого диска может привести к тому, что биты будут «переворачиваться» в содержимом файла, а ОС не «заметит» и не сообщит вам об этом при чтении файла? например, может ли «p» в текстовом файле ASCII (двоичный код 0111000 0 ) измениться на «q» (0111000 1 ), и тогда пользователь (я) сможет открыть файл и увидеть «q», не зная, что ошибка произошло?

Я заинтересован в ответах, касающихся FAT, NTFS или ReFS ... если это имеет значение.

Я хочу знать, защищает ли меня ОС от этого, или я должен проверять свои данные на неизменность между копиями / с течением времени.

29
Специально не связано, но похоже: http://superuser.com/questions/613702/what-explains-the-garbled-message-start-wandows-ngrmadly-in-text-mode Michael Frank 7 лет назад 0
Я полагаю, что поврежденная головка для чтения / записи может случайно применить к диску неправильный заряд, хотя я никогда не видел искажения данных в таком маленьком масштабе. Кроме того, я бы не стал доверять Windows, чтобы сказать мне, если диск выходит из строя или нет (сообщение при входе в систему). Я видел диски медленно умирают с течением времени без какого-либо предупреждения от Windows. CConard96 7 лет назад 0
Конечно ... данные хранятся в виде битов с относительными значениями 0 или 1, энтропия возникает во всех системах, включая магнитное и твердотельное хранилище. Все данные со временем ухудшаются. acejavelin 7 лет назад 0
@acejavelin Я знаю, что данные неизбежно ухудшаются. Что мне интересно, так это то, что контрольные суммы / другая избыточность в сочетании с тем, как работает файловая система, скорее всего предотвратят это * незаметно * (по крайней мере, при обращении к файлу). Обновленный заголовок для ясности. topo morto 7 лет назад 0
Начиная с windows 7, файловая система ntfs имеет самовосстановление ... https://technet.microsoft.com/en-us/library/cc771388 (v = ws.10) .aspx Moab 7 лет назад 0
Также ... https: //technet.microsoft.com/en-us/library/cc771388 (v = ws.10) .aspx Moab 7 лет назад 0
@Moab: я был бы более впечатлен вашим вторым ("Также ...") комментарием, если бы URL каким-либо образом отличался от URL в вашем первом комментарии. TOOGAM 7 лет назад 2
Я здесь не для того, чтобы впечатлять кого-либо Moab 7 лет назад 0
@topomorto ReFS может (опционально) хранить контрольные суммы данных и проверять их на чтение. FAT и NTFS не имеют этой функции. Другие файловые системы, обеспечивающие целостность данных, включают Btrfs и ZFS, но AFAIK они недоступны в Windows. suriv 7 лет назад 0
Если вы используете ReFS поверх тома _mirrored_ (не с четностью!) И правильно настроили его, он будет проверять как данные файла, так и метаданные файловой системы. Он будет проверен на чтение (и исправлен при необходимости), а также запланированное задание, которое будет периодически сканировать весь том на наличие обнаруженных ошибок. davidbak 7 лет назад 1

3 ответа на вопрос

24
Guntram Blohm

Да, есть вещь, называемая немного гнилой.

Но нет, это не затронет вас незамеченным.

Когда накопитель записывает сектор на пластины, он не просто записывает биты точно так же, как они хранятся в ОЗУ, - он использует кодировку, чтобы убедиться, что нет последовательностей того же бита, которые являются слишком длинными и добавляет коды ECC, которые позволяют исправлять ошибки, затрагивающие несколько битов, и обнаруживать ошибки, затрагивающие более нескольких битов.

Когда привод считывает сектор, он проверяет эти коды ECC и восстанавливает данные, если это необходимо и возможно. Что будет дальше, зависит от обстоятельств и встроенного программного обеспечения привода, на которое влияет его назначение.

  • Если сектор может быть прочитан и у него нет проблем с ECC, он передается в ОС
  • Если сектор может быть легко восстановлен, восстановленная версия может быть записана на диск, считана и проверена, чтобы определить, была ли ошибка случайной (космические лучи ...) или существует ли систематическая ошибка с носителем
  • Если накопитель определяет, что произошла ошибка с носителем, он перераспределяет сектор
  • Если после нескольких попыток чтения сектор не может быть ни прочитан, ни исправлен, на диске, который обозначен как диск RAID, диск откажется, перераспределит сектор и сообщит контроллеру, что возникла проблема. Он использует контроллер RAID для восстановления сектора из других участников RAID и записи его обратно на неисправный диск, который затем сохраняет его в перераспределенном секторе, который, как мы надеемся, не имеет проблемы.
  • Если сектор не может быть прочитан или исправлен на настольном диске, он сделает еще больше попыток его прочитать. В зависимости от качества привода это может включать в себя изменение положения головки, проверку наличия переворачивающихся битов при повторном чтении, проверку того, какие биты являются самыми слабыми, и некоторые другие вещи. Если любая из этих попыток окажется успешной, накопитель перераспределит сектор и запишет восстановленные данные.

(Это одно из основных различий между дисками, которые продаются как диски «для настольных ПК», «NAS / RAID» или «видеонаблюдение». Дисковод RAID может просто быстро сдаться и заставить контроллер восстанавливать сектор, чтобы избежать задержки на пользовательская сторона. Диск настольного компьютера будет повторять попытки снова и снова, потому что пользователь, ожидающий несколько секунд, вероятно, лучше, чем сообщать ему, что данные потеряны. А видеодиск оценивает постоянную скорость передачи данных больше, чем восстановление после ошибок, поскольку поврежденный кадр обычно выигрывает. даже не заметили.)

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

Я никогда не видел ни единой ошибки, но видел множество жестких дисков, на которых отказали целые сектора.

привод узнает, что с сектором что-то не так, но не знает, какие биты вышли из строя. (Один бит, который потерпел неудачу, всегда будет перехвачен ECC).

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

Конечно, есть и другие причины, по которым данные могут быть повреждены. Например. Плохое ОЗУ на контроллере может изменить данные до того, как они будут отправлены на диск. В этом случае никакой механизм на диске не будет обнаруживать или восстанавливать данные, и это может быть одной из причин, почему структура файловой системы повреждена. Другие причины включают в себя простые программные ошибки, затемнение при записи на диск (хотя это устраняется журналированием файловой системы) или неправильные драйверы файловой системы (драйвер NTFS в Linux долгое время оставался доступным только для чтения, так как NTFS была подвергнута обратному проектированию, не документирована). и разработчики не доверяли своему собственному коду).

Однажды у меня был такой сценарий, когда приложение сохраняло все свои файлы на двух разных серверах в разных центрах обработки данных, чтобы сохранить рабочую копию, если данные при любых обстоятельствах. Через несколько месяцев мы заметили, что в одной из копий около 0,1% всех файлов не соответствуют сумме MD5, которую приложение хранит в своей базе данных. Оказалось, что неисправен оптоволоконный кабель между сервером и SAN.

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

+1 за указание на то, что другие аппаратные проблемы, помимо ухудшения качества носителя, могут привести к считыванию и записи поврежденных данных. У меня лично была проблема с плохими кабелями в случае. И, к слову, в дополнение к ZFS, файловая система Windows ReFS (для Server 2012+) при правильной настройке и запуске поверх Storage Spaces будет проверять контрольную сумму как файловых данных, так и метаданных файловой системы и восстанавливать их, а также периодически выполнять весь том. проверка целостности для обнаружения и исправления многих таких ошибок. davidbak 7 лет назад 2
17
cybernard

Да, жесткие диски могут и не работать без предупреждения от ОС. Это называется гниль . Я никогда не видел ни единой ошибки, но видел множество жестких дисков, на которых отказали целые сектора.

Windows не имеет встроенной защиты содержимого файла за пределами структуры файловой системы NTFS. Думайте о NTFS как о книге: она защищает только оглавление и проверяет соответствие. Однако, если повреждение находится в середине страницы, оно не предлагает никакой защиты. У ЖИРА нет ничего. Жесткие диски используют коррекцию ошибок ECC для каждого сектора, но диск не сообщает Windows. Некоторые типы файлов специально имеют хэши CRC, MD5 или SHA для обнаружения повреждений, но они ничего не исправляют .

Даже тогда хэш только говорит вам, что есть проблема, но он не знает, где находится ошибка.

Жесткий диск имеет SMART, который контролирует состояние жесткого диска, но если диск не находится на пороге смерти, BIOS не предупредит вас. Хуже всего то, что SMART часто отключается по умолчанию в вашем BIOS. Вы можете контролировать цифры с помощью программного обеспечения, но разные диски имеют разные проблемы. Если у вас есть куча перемещенных секторов, или ваши ошибки ECC постоянно увеличиваются. Если у вас есть 100 000 новых ECC каждый день, это плохой знак.

Многие типы файлов не имеют защиты от гниения . Мол, TXT и BMP, которые вообще не имеют защиты. Winrar имеет дополнительную опцию для добавления данных о четности в архив, что увеличивает размер файла, но он может обнаруживать (пропорционально количеству добавленных данных о четности) и исправлять ошибки такого рода.

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

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

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

Windows, chdsk и NTFS не обнаруживают битовую гниль, которая обрабатывается RAID или файловой системой с проверкой четности. Плохой раздел не является и не вызван гнилью. Я одобряю этот ответ Ramhound 7 лет назад 0
@Ramhound К сожалению, число пользователей, защищающих данные с помощью зеркалирования RAID, уровень 5 или уровень 6, вероятно, составляет менее 0,01%. cybernard 7 лет назад 1
Я знаю, что я говорил в целом. Немного гниль! = Плохие перегородки Ramhound 7 лет назад 0
@ Ramhound Вау, я так сильно борюсь с твоим первым предложением. Вы имели в виду "не имеет обнаружения"? Я предполагаю, что вы имеете в виду «плохой раздел не защищен от». В любом случае, если вращающийся бит - это 3,576-й бит от 4,080-го бита (байты 447-510) диска на основе MBR, то это повлияет на разделы. Я уверен, что у GPT есть подобные важные биты. Так что, если вы не знаете эффективный способ контролировать, какие биты гниют ... TOOGAM 7 лет назад 0
NOR = НЕ ИЛИ; используется в предложении означает, что это исключительный список; Ramhound 7 лет назад 1
У меня был этот жесткий диск на 750 ГБ, который делал подобные вещи. Прежде всего компьютер работал медленно и все время зависал. Когда я некоторые текстовые файлы часть его обнуляется или искажен. Компьютер позже перестал загружаться. Получил новый жесткий диск (я получил HDD не SSD. Я думаю, что я должен был получить SSD), и проблема ушла, и компьютер быстро Suici Doga 7 лет назад 1
Как утверждают другие ответы, существует нечто, называемое ZFS, которое может защитить от битовой гнили (например, оно может обнаруживать одиночные неисправимые битовые ошибки в файлах). Хотя большинство «файлов» не знают, что они повреждены или как их исправить, интеллектуальная файловая система может помочь уменьшить вероятность постоянной потери данных, когда один бит сбивается. phyrfox 7 лет назад 0
@phyrfox Вы хорошо разбираетесь в ZFS, но они используют окна, и я никогда не видел реализации для окон. cybernard 7 лет назад 0
2
TOOGAM

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

Подумайте о другом типе серии инструкций: книга. Что могут выполнить эти инструкции, если они написаны в книге, которая лежит на полке, и никто не потрудится открыть книгу и прочитать эти инструкции?

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

Теперь ReFS может быть спроектирован с намерением, чтобы программное обеспечение сохраняло детали о данных, и чтобы программное обеспечение сравнивало эти детали позже. Простое понятие - «контрольная сумма», где программное обеспечение добавляет определенные значения и обеспечивает соответствие этих значений ожидаемому результату. Когда аппаратное обеспечение реализует это программное обеспечение, тогда могут быть обнаружены определенные плохие результаты. Это может даже быть очень вероятно, чтобы работать. Однако, поскольку число потенциальных проблем, которые теоретически могут существовать, в основном бесконечно, нет гарантии, что программное обеспечение обязательно обнаружит каждую проблему. (Имейте в виду, что программное обеспечение представляет собой серию инструкций, которые были созданы заранее.)

Жир особенно низок на функциях. FAT12 был разработан для дискет, а FAT16 - для систем объемом до 4 ГБ (хотя большая часть реализации Microsoft FAT16, как правило, не работала выше 2 ГБ). Без расширения VFAT ни один из них не поддерживал имена файлов длиннее 11 символов (некоторые из которых были бы в части, называемой «расширением»). FAT был просто разработан для хранения данных в то время, когда способность хранить данные была новой концепцией, о которой нужно было учить взрослых. Когда FAT считался «передовой» технологией, компьютерные технологии еще не были достаточно распространенными и сложными, чтобы люди беспокоились о расширенных функциях.

В NTFS добавлена ​​поддержка некоторых дополнительных функций, возможно, в первую очередь благодаря возможности операционной системы легко отслеживать разрешения пользователей. Существуют разные версии NTFS. Например, Moab указывает, что в Windows Server 2008 добавлена ​​поддержка самовосстановления NTFS., который может обнаружить некоторые вещи. Тем не менее, эта функция была новой для Windows Server 2008, так что она совсем не поддерживается Windows XP (или Windows Server 2003, или более ранней). Тем не менее, просматривая список функций, кажется, что это связано с некоторыми метаданными, которые помогают операционной системе замечать проблемы, настолько серьезные, что диск не может быть смонтирован, или другие ключевые области диска, которые влияют на ядро ​​операционной системы. Это не выглядело так, как будто каждая отдельная часть данных в каждом отдельном файле подвержена влиянию этой конкретной функции.

Программное обеспечение для таких операционных систем вряд ли заметит такие вещи, если только они не вызывают заметных проблем для операционной системы для выполнения задач. Могут быть некоторые исключения, такие как части операционной системы, которые проверяют диски (CheckDsk / ChkDsk / ScanDisk / ScanDskW, в зависимости от операционной системы), но даже они будут довольно ограничены в том, что они могут обнаруживать, в основном потому, что файловые системы не не хранить очень большое количество данных, которые были предназначены для проверки диска.

(RAID5 может быть более склонным к обнаружению таких вещей, так как каждый бит имеет бит четности, который поможет заметить что-то необычное. Даже в этом случае реализация RAID должна быть выполнена для обнаружения проблемы. Если проблема возникла на часть диска, с которой не ведется активная работа, проблема может остаться незамеченной, пока кто-то не попытается начать использовать эти данные.)

В более недавние времена большее количество битов означало, что небольшие вероятности, такие как шансы «1 на 10 миллионов», с большей вероятностью влияли на вещи. Широкая публика также узнала о «космических лучах», которые могут оказывать небольшое влияние на вещи. Поскольку биты так плотно уложены в новых устройствах, физические требования к представлению бита меньше, поэтому даже небольшие удары с большей вероятностью будут мешать распознаванию бита. ReFS имеет некоторые функции, разработанные, чтобы помочь с их обнаружением. В статье Википедии о ReFS это называется «автоматической проверкой целостности». Поскольку это описано как заметная особенность этой файловой системы, такие функции, вероятно, более развиты, чем с NTFS (и, конечно, больше, чем FAT, который был сравнительно простым по своей природе,