SWD Software Ltd. - официальный дистрибьютор QNX на территории России и стран бывшего СССР Операционная система реального времени QNX
Инструменты для создания надёжных встраиваемых систем и
интеллектуальных устройств любой сложности
QNX Software Systems - разработчик встраиваемой операционной системы QNX
Информационные брошюры
Статьи и публикации
Обзоры
Операционные системы
Графические интерфейсы
Средства разработки
Прикладные системы на базе ОС QNX
Разное
Конкурсные статьи
Техническая литература
Материалы конференций QNX-Россия
Полезные ссылки
Блог QNX
Главная страница > Материалы > Статьи и публикации > Обзоры > Новый подход к обеспечению целостности файловой системы во встраиваемых системах критического назначения Сделать страницу стартовой Послать ссылку коллеге Версия для печати

Новый подход к обеспечению целостности файловой системы во встраиваемых системах критического назначения

Поль Леру (Paul N. Leroux), аналитик по технологиям, QNX Software Systems

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

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

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

К сожалению, обычные файловые системы блочной архитектуры, применяемые в жестких или твердотельных дисках, никогда не предназначались для обеспечения целостности файлов в случае отказов электропитания или других неожиданных сбоев. Некоторые файловые системы (например: ZFS), предназначенные для корпоративных серверов высокой готовности, обеспечивают такую защиту, но они потребляют слишком много системных ресурсов, необходимых для работы встраиваемого устройства. Файловая система QNX с защитой от сбоев электропитания позволяет преодолевать эти проблемы с помощью эффективного встраиваемого решения на основе сложных серверных механизмов. Таким образом, в системе обеспечивается целостность данных, необходимая для современных встраиваемых приложений с большими объемами хранимых данных.

Отказоустойчивое оборудование решает не все

Во многих случаях во встраиваемых системах применяют твердотельную флеш-память типа NAND или NOR. Однако во многих других случаях приходится применять жесткие диски, так как они обеспечивают довольно большие объемы хранения и низкую стоимость хранения на каждый хранимый бит. К сожалению, не во всех встраиваемых системах возможно применить те методы хранения данных на жестких дисках, которые используются в мире корпоративных систем, — например, репликацию данных в нескольких хранилищах, высокую частоту резервного копирования, применение ИБП и другие. Поэтому очень важно, чтобы встраиваемые файловые системы обеспечивали специальные средства для защиты от потери или порчи данных.

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

Хотя многие существующие файловые системы можно считать надежными, они все же не защищены от отказов электропитания. Например, могут случиться следующие сценарии:

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

Обычные решения для восстановления данных

Для восстановления испорченных файлов и каталогов обычно применяют специальную утилиту для проверки и восстановления целостности файловой системы (например, chkdsk для Windows или fsck для Unix и Linux). Однако эти утилиты имеют два серьезных недостатка: 1) они проверяют только структуру файловой системы и метаданные; 2) для их выполнения требуется много времени, а также монопольный доступ к файловой системе (как правило, сразу после загрузки системы).

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

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

Для решения такого рода проблем компания QNX Software Systems предложила новую, защищенную от сбоев электропитания файловую систему. Используя технологии, изначально разработанные для корпоративных информационных систем, и оптимизировав их для встраиваемых систем с ограниченными ресурсами, компания QNX создала инновационную файловую систему на основе технологии копирования при записи (copy-on-write), которая позволяет обеспечить целостность данных. При таком подходе файловая система никогда не перезаписывает оперативные данные. Вместо этого она создает новый образ файловой системы в свободных блоках диска. Новый образ становится оперативным только после того, как все необходимые обновления надежно записаны на диск.

Новейшая файловая система QNX работает на основе технологии копирования при записи, которая позволяет защитить все данные, в том числе метаданные и пользовательские данные. Как только происходит какое-либо изменение данных, отказоустойчивая файловая система QNX выполняет следующие действия:

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

После завершения операции первоначальные данные и указатели на эти данные остаются прежними, однако теперь появляется новый индексный дескриптор, состав блоков и непрямых указателей, относящихся к модифицированным данным. На рис. 1 показана файловая система до операции записи, а на рис. 2 — файловая система после завершения операции (обновленные данные обозначены красным).


Рис. 1. Файловая система до изменения данных.


Рис. 2. Файловая система после изменения данных.

Для обеспечения высокой производительности файловая система может группировать несколько операций до их совершения, что избавляет от необходимости выполнять вышеописанную процедуру при каждом изменении какого-либо файла. В этом случае файловая система производит запись одновременно множества изменений на диск после запуска соответствующей операции (commit to disk). При этом разработчик может настроить частоту выполнения этой операции.

Сверхбыстрое восстановление

В отказоустойчивой файловой системе QNX используется концепция "суперблока" — глобального корневого блока, содержащего индексные дескрипторы для системной битовой карты и файлов индексных дескрипторов. Более того, в системе используется два суперблока: один отражает первоначальную версию всех блоков, другой отражает модифицированные данные. В случае сбоя электропитания система сможет восстановить последнее стабильное состояние файловой системы посредством простого считывания суперблоков с диска, проверки подписей и кодов CRC и определения суперблока с наибольшим порядковым номером.

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

В итоге новая отказоустойчивая файловая система QNX предоставляет встраиваемым системам следующие преимущества:

  • возможность использования больших хранилищ и жестких дисков с низкой стоимостью на бит данных;
  • возможность использования жестких дисков и твердотельных дисков на основе флеш-модулей (SSD) в системах с высоким риском сбоя электроснабжения;
  • возможность использования эффективного и низкозатратного решения для защиты от порчи или потери данных;
  • возможность реализации значительно более высокой степени готовности системы.

Источник: http://www.embedded.com/columns/technicalinsights/218500180

Рассказать друзьям:

     Рейтинг@Mail.ru