Введение

Техника коррекции ошибок компьютера.

Скраббинг данных — это техника коррекции ошибок, использующая фоновую задачу для периодической проверки основной памяти или хранилища на наличие ошибок, с последующей коррекцией обнаруженных ошибок посредством избыточных данных в форме различных контрольных сумм или копий данных. Скраббинг данных снижает вероятность накопления отдельных корректируемых ошибок, что уменьшает риск возникновения некорректируемых ошибок. Целостность данных является важнейшим требованием при записи, чтении, хранении, передаче или обработке данных в компьютерных операционных системах, а также в системах хранения и передачи данных. Однако лишь немногие из существующих файловых систем обеспечивают достаточную защиту от повреждения данных. Для решения этой проблемы скраббинг данных обеспечивает регулярную проверку всех несоответствий в данных и, в целом, предотвращает аппаратные или программные сбои. Эта функция "скраббинга" обычно применяется в оперативной памяти, дисковых массивах, файловых системах или ПЛИС (FPGA) как механизм обнаружения и исправления ошибок.

РАЙД

При очистке данных контроллер RAID может периодически считывать все жесткие диски в RAID-массиве и проверять наличие дефектных блоков до того, как к ним обратятся приложения. Это снижает вероятность скрытого повреждения данных и потери данных из-за битовых ошибок. В средах Dell PowerEdge RAID функция под названием "patrol read" может выполнять очистку данных и профилактическое обслуживание. В OpenBSD утилита bioctl(8) позволяет системному администратору управлять этими патрульными чтениями через ioctl BIOCPATROL на псевдоустройстве /dev/bio; по состоянию на 2019 год эта функциональность поддерживается в некоторых драйверах устройств для контроллеров LSI Logic и Dell, включая mfi(4) с OpenBSD 5.8 (2015) и mfii(4) с OpenBSD 6.4 (2018). В FreeBSD и DragonFly BSD патрулирование можно контролировать с помощью специализированной утилиты контроллера RAID mfiutil(8) начиная с FreeBSD 8.0 (2009) и 7.3 (2010). Реализация из FreeBSD была использована разработчиками OpenBSD для добавления поддержки патрулирования в их общий фреймворк bio(4) и утилиту bioctl, что позволило избежать необходимости в отдельной утилите для контроллера. В NetBSD в 2008 году фреймворк bio(4) из OpenBSD был расширен для поддержки проверок согласованности, которые были реализованы для псевдоустройства /dev/bio с помощью команды ioctl BIOCSETSTATE, с опциями start и stop (BIOC SSCHECKSTART VOL и BIOC SSCHECKSTOP VOL соответственно); по состоянию на 2019 год это поддерживается только одним драйвером — arcmsr(4). Linux MD RAID, как программная реализация RAID, обеспечивает проверку согласованности данных и автоматическое исправление обнаруженных несоответствий. Такие процедуры обычно выполняются путем настройки еженедельного задания cron. Обслуживание выполняется путем отправки операций check, repair или idle каждому из проверяемых MD-устройств. Статусы всех выполненных операций, а также общие статусы RAID, всегда доступны.

Btrfs

В качестве файловой системы с копированием при записи (CoW) для Linux, Btrfs обеспечивает изоляцию сбоев, обнаружение и исправление повреждений, а также проверку файловой системы. Если файловая система обнаруживает расхождение контрольных сумм при чтении блока, она сначала пытается получить (или создать) корректную копию этого блока с другого устройства, если используются встроенные механизмы зеркалирования или RAID. Btrfs может инициировать онлайн-проверку всей файловой системы, запустив задание проверки файловой системы, которое выполняется в фоновом режиме. Задание проверки сканирует всю файловую систему на предмет целостности и автоматически пытается сообщить об обнаруженных поврежденных блоках и исправить их.

ЗФС

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

Память

Из-за высокой плотности интеграции современных компьютерных микросхем памяти, отдельные структуры ячеек памяти стали достаточно малыми, чтобы быть уязвимыми к космическим лучам и/или испусканию альфа-частиц. Ошибки, вызванные этими явлениями, называются случайными ошибками (soft errors). Это может быть проблемой для памяти на основе DRAM и SRAM. Очистка памяти (memory scrubbing) осуществляет обнаружение и исправление битовых ошибок в оперативной памяти компьютера, используя память ECC, другие копии данных или другие коды коррекции ошибок.

ФПГА

Скруббирование — это техника, используемая для перепрограммирования ПЛИС. Её можно применять периодически для предотвращения накопления ошибок без необходимости поиска конкретной ошибки в битовом потоке конфигурации, что упрощает разработку. Существует множество подходов к скруббированию, от простого перепрограммирования ПЛИС до частичной реконфигурации. Самый простой способ скруббирования — полностью перепрограммировать ПЛИС с определенной периодичностью (обычно в 1/10 от расчетной частоты возникновения сбоев). Однако ПЛИС не функционирует во время этого перепрограммирования, которое занимает от микросекунд до миллисекунд. Для приложений, не допускающих подобных прерываний, доступна частичная реконфигурация. Эта техника позволяет перепрограммировать ПЛИС, не прерывая его работу.