29

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

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

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

3 ответа3

24

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

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

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

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

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

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

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

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

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

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

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

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

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

17

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

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

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

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

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

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

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

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

2

Да, это возможно. 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, который был сравнительно прост по своей природе и поэтому практически не имел таких функций).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .