Очистка данных — это метод исправления ошибок , который использует фоновую задачу для периодической проверки основной памяти или хранилища на наличие ошибок, а затем исправляет обнаруженные ошибки, используя избыточные данные в виде различных контрольных сумм или копий данных. Очистка данных снижает вероятность накопления единичных исправимых ошибок, что приводит к снижению риска возникновения неисправимых ошибок.
Целостность данных является первоочередной задачей при записи, чтении, хранении, передаче или обработке компьютерных данных в компьютерных операционных системах , а также в компьютерных системах хранения и передачи данных . Однако лишь немногие из существующих и используемых в настоящее время файловых систем обеспечивают достаточную защиту от повреждения данных . [1] [2] [3]
Чтобы решить эту проблему, очистка данных обеспечивает регулярную проверку всех несоответствий в данных и, в целом, предотвращение сбоев оборудования или программного обеспечения. Эта функция «очистки» обычно встречается в памяти, дисковых массивах, файловых системах или FPGA как механизм обнаружения и исправления ошибок. [4] [5] [6]
Благодаря очистке данных контроллер RAID может периодически считывать все жесткие диски в массиве RAID и проверять наличие дефектных блоков, прежде чем приложения смогут получить к ним фактический доступ. Это снижает вероятность скрытого повреждения данных и потери данных из-за ошибок на уровне битов. [7]
В RAID-средах Dell PowerEdge функция, называемая «патрульное чтение», позволяет выполнять очистку данных и профилактическое обслуживание . [8]
В OpenBSD утилита bioctl(8)
позволяет системному администратору контролировать эти патрульные чтения через BIOCPATROL
ioctl на /dev/bio
псевдоустройстве ; по состоянию на 2019 год эта функция поддерживается в некоторых драйверах устройств для контроллеров LSI Logic и Dell — начиная mfi(4)
с OpenBSD 5.8 (2015 г.) и mfii(4)
начиная с OpenBSD 6.4 (2018 г.). [9] [10]
Во FreeBSD и DragonFly BSD патрулированием можно управлять с помощью специальной утилиты RAID-контроллераmfiutil(8)
, начиная с FreeBSD 8.0 (2009 г.) и 7.3 (2010 г.). [11] Реализация из FreeBSD использовалась разработчиками OpenBSD для добавления поддержки патрулирования в их общую структуру bio(4) и утилиту bioctl без необходимости использования отдельной утилиты для конкретного контроллера.
В NetBSD в 2008 году структура bio(4) из OpenBSD была расширена за счет поддержки проверок согласованности, которая была реализована для /dev/bio
псевдо-устройства по команде BIOCSETSTATE
ioctl , с опциями start и stop ( BIOC_SSCHECKSTART_VOL
и BIOC_SSCHECKSTOP_VOL
соответственно); по состоянию на 2019 год это поддерживается только одним драйвером — arcmsr(4)
. [12]
Linux MD RAID , как программная реализация RAID , делает доступной проверку согласованности данных и обеспечивает автоматическое исправление обнаруженных несоответствий данных. Такие процедуры обычно выполняются путем настройки еженедельного задания cron . Техническое обслуживание осуществляется путем выдачи операций проверки , ремонта или простоя каждому из проверяемых устройств MD. Статусы всех выполненных операций, а также общие статусы RAID всегда доступны. [13] [14] [15]
Будучи файловой системой копирования при записи (CoW) для Linux , Btrfs обеспечивает изоляцию ошибок, обнаружение и исправление повреждений, а также очистку файловой системы. Если файловая система обнаруживает несоответствие контрольной суммы при чтении блока, она сначала пытается получить (или создать) хорошую копию этого блока с другого устройства – если используются его методы внутреннего зеркалирования или RAID. [16]
Btrfs может инициировать онлайн-проверку всей файловой системы, запуская задание очистки файловой системы, которое выполняется в фоновом режиме. Задание очистки сканирует всю файловую систему на целостность и автоматически пытается сообщить и исправить любые поврежденные блоки, обнаруженные на этом пути. [17] [18]
Возможности ZFS, комбинированной файловой системы и диспетчера логических томов , включают проверку на предмет повреждения данных , непрерывную проверку целостности и автоматическое восстановление. Компания Sun Microsystems разработала ZFS с нуля, уделив особое внимание целостности данных и защите данных на дисках от таких проблем, как ошибки встроенного ПО диска и призрачная запись. [ не удалось пройти проверку ] [19]
ZFS предоставляет утилиту восстановления scrub
, которая исследует и устраняет скрытое повреждение данных , вызванное порчей данных и другими проблемами.
Из-за высокой плотности интеграции современных компьютерных микросхем памяти отдельные структуры ячеек памяти стали достаточно маленькими, чтобы быть уязвимыми для космических лучей и/или излучения альфа-частиц . Ошибки, вызванные этими явлениями, называются мягкими ошибками . Это может быть проблемой для памяти на основе DRAM и SRAM .
Очистка памяти выполняет обнаружение и исправление битовых ошибок в оперативной памяти компьютера с использованием памяти ECC , других копий данных или других кодов исправления ошибок .
Очистка — это метод, используемый для перепрограммирования FPGA . Его можно использовать периодически, чтобы избежать накопления ошибок без необходимости их поиска в битовом потоке конфигурации, что упрощает проектирование.
Для очистки можно использовать множество подходов: от простого перепрограммирования FPGA до частичной реконфигурации. Самый простой метод очистки — полностью перепрограммировать FPGA с некоторой периодичностью (обычно 1/10 от расчетной частоты сбоев). Однако FPGA не работает в течение этого времени перепрограммирования, порядка микросекунд или миллисекунд. В ситуациях, когда прерывание такого типа недопустимо, возможна частичная реконфигурация. Этот метод позволяет перепрограммировать FPGA, пока он еще работает. [20]
Функция Patrol Read создана в качестве превентивной меры для обеспечения работоспособности физического диска и целостности данных.
Patrol Read сканирует и устраняет потенциальные проблемы на настроенных физических дисках.