Повреждение данных относится к ошибкам в компьютерных данных , которые возникают во время записи, чтения, хранения, передачи или обработки, которые вносят непреднамеренные изменения в исходные данные. Компьютерные, передающие и хранящие системы используют ряд мер для обеспечения сквозной целостности данных или отсутствия ошибок.
В общем, когда происходит повреждение данных, файл, содержащий эти данные, будет выдавать неожиданные результаты при доступе к нему системы или связанного приложения. Результаты могут варьироваться от незначительной потери данных до сбоя системы. Например, если файл документа поврежден, когда человек пытается открыть этот файл с помощью редактора документов, он может получить сообщение об ошибке , таким образом, файл может не открыться или может открыться с некоторыми поврежденными данными (или в некоторых случаях полностью поврежденными, оставляя документ непонятным). Соседнее изображение представляет собой поврежденный файл изображения, в котором большая часть информации была утеряна.
Некоторые типы вредоносных программ могут намеренно повреждать файлы в качестве части своих полезных нагрузок , обычно перезаписывая их неработоспособным или мусорным кодом, в то время как невредоносный вирус может также непреднамеренно повреждать файлы при доступе к ним. Если вирусу или трояну с этим методом полезной нагрузки удается изменить файлы, критически важные для работы программного обеспечения операционной системы компьютера или физического оборудования, вся система может стать непригодной для использования.
Некоторые программы могут предложить восстановить файл автоматически (после ошибки), а некоторые программы не могут его восстановить. Это зависит от уровня повреждения и встроенной функциональности приложения для обработки ошибки. Существуют различные причины повреждения.
Существует два типа повреждения данных, связанных с компьютерными системами: необнаруженное и обнаруженное. Необнаруженное повреждение данных, также известное как скрытое повреждение данных , приводит к самым опасным ошибкам, поскольку нет никаких признаков того, что данные неверны. Обнаруженное повреждение данных может быть постоянным с потерей данных или может быть временным, когда какая-то часть системы способна обнаружить и исправить ошибку; в последнем случае повреждение данных отсутствует.
Повреждение данных может произойти на любом уровне системы, от хоста до носителя данных. Современные системы пытаются обнаружить повреждение на многих уровнях, а затем восстановить или исправить повреждение; это почти всегда успешно, но очень редко информация, поступающая в память системы, оказывается поврежденной и может привести к непредсказуемым результатам.
Повреждение данных во время передачи может иметь различные причины. Прерывание передачи данных приводит к потере информации . Условия окружающей среды могут мешать передаче данных, особенно при использовании беспроводных методов передачи. Тяжелые облака могут блокировать спутниковые передачи. Беспроводные сети подвержены помехам от таких устройств, как микроволновые печи.
Аппаратные и программные сбои являются двумя основными причинами потери данных . Фоновое излучение , сбои головок и старение или износ устройства хранения данных попадают в первую категорию, в то время как программные сбои обычно происходят из-за ошибок в коде. Космические лучи вызывают большинство мягких ошибок в DRAM. [1]
Некоторые ошибки остаются незамеченными, не обнаруживаясь прошивкой диска или операционной системой хоста; такие ошибки известны как скрытое повреждение данных . [2]
Существует множество источников ошибок за пределами самой подсистемы хранения на диске. Например, кабели могут быть слегка ослаблены, блок питания может быть ненадежным, [3] внешние вибрации, такие как громкий звук, [4] сеть может вносить необнаруженные повреждения, [5] космическое излучение и многие другие причины ошибок мягкой памяти и т. д. В 39 000 проанализированных систем хранения ошибки прошивки составляли 5–10% сбоев хранения. [6] В целом, частота ошибок, наблюдаемых в исследовании ЦЕРН по скрытому повреждению, намного выше, чем один на каждые 10 16 бит. [7] Интернет-магазин Amazon.com признал аналогичные высокие показатели повреждения данных в своих системах. [8] В 2021 году неисправные ядра процессора были определены как дополнительная причина в публикациях Google и Facebook; было обнаружено, что ядра были неисправны с частотой несколько на тысячи ядер. [9] [10]
Одна из проблем заключается в том, что емкость жестких дисков существенно увеличилась, но частота ошибок осталась неизменной. Частота повреждения данных всегда была примерно постоянной во времени, что означает, что современные диски не намного безопаснее старых. На старых дисках вероятность повреждения данных была очень мала, поскольку они хранили крошечные объемы данных. На современных дисках вероятность намного больше, поскольку они хранят гораздо больше данных, не будучи при этом более безопасными. Таким образом, тихое повреждение данных не было серьезной проблемой, пока устройства хранения оставались относительно небольшими и медленными. В наше время и с появлением более крупных дисков и очень быстрых установок RAID пользователи способны передавать 10 16 бит за достаточно короткое время, таким образом, легко достигая порогов повреждения данных. [11]
В качестве примера создатель ZFS Джефф Бонвик заявил, что быстрая база данных в Greenplum , компании-разработчике программного обеспечения для баз данных, специализирующейся на крупномасштабном хранении данных и аналитике, сталкивается с скрытым повреждением каждые 15 минут. [12] В качестве другого примера, реальное исследование, проведенное NetApp на более чем 1,5 миллионах жестких дисков в течение 41 месяца, обнаружило более 400 000 скрытых повреждений данных, из которых более 30 000 не были обнаружены аппаратным RAID-контроллером (обнаружены только во время очистки ). [13] Другое исследование, проведенное CERN в течение шести месяцев и включавшее около 97 петабайт данных, показало, что около 128 мегабайт данных были навсегда скрытно повреждены где-то на пути от сети к диску. [14]
Скрытое повреждение данных может привести к каскадным сбоям , при которых система может работать в течение определенного периода времени с необнаруженной начальной ошибкой, вызывая все больше проблем, пока она не будет в конечном итоге обнаружена. [15] Например, сбой, влияющий на метаданные файловой системы , может привести к частичному повреждению нескольких файлов или полной их недоступности, поскольку файловая система используется в поврежденном состоянии.
Когда повреждение данных происходит по закону Пуассона , где каждый бит данных имеет независимую низкую вероятность изменения, повреждение данных обычно можно обнаружить с помощью контрольных сумм и часто исправить с помощью кодов исправления ошибок (ECC).
Если обнаружено неисправимое повреждение данных, могут быть применены такие процедуры, как автоматическая повторная передача или восстановление из резервных копий . Определенные уровни дисковых массивов RAID имеют возможность хранить и оценивать биты четности для данных по всему набору жестких дисков и могут восстанавливать поврежденные данные при отказе одного или нескольких дисков, в зависимости от уровня реализованного RAID. Некоторые архитектуры ЦП используют различные прозрачные проверки для обнаружения и смягчения повреждения данных в кэшах ЦП , буферах ЦП и конвейерах инструкций ; примером является технология Intel Instruction Replay , которая доступна на процессорах Intel Itanium . [16]
Многие ошибки обнаруживаются и исправляются жесткими дисками с помощью кодов ECC [17] , которые хранятся на диске для каждого сектора. Если дисковод обнаруживает несколько ошибок чтения в секторе, он может сделать копию неисправного сектора в другой части диска, переназначив неисправный сектор диска на запасной сектор без участия операционной системы (хотя это может быть отложено до следующей записи в сектор). Это «тихое исправление» можно отслеживать с помощью SMART и инструментов, доступных для большинства операционных систем, для автоматической проверки диска на предмет надвигающихся сбоев путем отслеживания ухудшения параметров SMART.
Некоторые файловые системы , такие как Btrfs , HAMMER , ReFS и ZFS , используют внутренние контрольные суммы данных и метаданных для обнаружения скрытого повреждения данных. Кроме того, если обнаружено повреждение и файловая система использует интегрированные механизмы RAID, которые обеспечивают избыточность данных , такие файловые системы также могут прозрачным образом реконструировать поврежденные данные. [18] Такой подход позволяет улучшить защиту целостности данных, охватывающую все пути данных, что обычно известно как сквозная защита данных , по сравнению с другими подходами к целостности данных, которые не охватывают различные слои в стеке хранения и допускают повреждение данных, пока данные проходят границы между различными слоями. [19]
Очистка данных — еще один метод снижения вероятности повреждения данных, поскольку ошибки на диске обнаруживаются и восстанавливаются до того, как накопится несколько ошибок и превысит количество битов четности. Вместо проверки четности при каждом чтении, четность проверяется во время обычного сканирования диска, часто выполняемого как низкоприоритетный фоновый процесс. Операция «очистки данных» активирует проверку четности. Если пользователь просто запускает обычную программу, которая считывает данные с диска, то четность не будет проверяться, если только проверка четности при чтении не поддерживается и не включена на дисковой подсистеме.
Если для обнаружения и устранения повреждения данных используются соответствующие механизмы, целостность данных может быть сохранена. Это особенно важно в коммерческих приложениях (например, банковских ), где необнаруженная ошибка может либо повредить индекс базы данных, либо изменить данные, что радикально повлияет на баланс счета, а также при использовании зашифрованных или сжатых данных, где небольшая ошибка может сделать обширный набор данных непригодным для использования. [7]
Тихое повреждение данных (SDC), иногда называемое тихой ошибкой данных (SDE), является общеотраслевой проблемой, затрагивающей не только долго защищенную память, хранилище и сеть, но и процессоры компьютеров.