The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Представлена LittleFS, компактная файловая система для встра..."
Отправлено opennews, 15-Янв-18 13:38 
Проект Mbed OS, в рамках которого компания ARM развивает (https://www.opennet.ru/opennews/art.shtml?num=42932) открытую ОС для устройств "Интернета вещей", представил (https://os.mbed.com/blog/entry/littlefs-high-integrity-embed... новую файловую систему LittleFS (https://github.com/geky/littlefs), оптимизированную для встраиваемых систем. Код ФС написан на языке Си и распространяется (https://github.com/ARMmbed/mbed-os/tree/master/features/file... под лицензией Apache 2.0. ФС LittleFS доступна в составе Mbed OS 5.7 (https://github.com/ARMmbed/mbed-os/tree/master/features/file... как FUSE-модуль (https://github.com/geky/littlefs-fuse) для монтирования из Linux, в форме Си-библиотеки (https://github.com/geky/littlefs) для интеграции с приложениями и как обвязка (https://github.com/geky/littlefs-js) для JavaScrpt (emscripten) для обращения к данным из браузера.


Реализация LittleFS включает  около 2000 строк кода, система не требовательна к ресурсам и может работать в условиях ограниченного размера ОЗУ. В коде не используются рекурсивные вызовы и возможна работа без динамического выделения памяти с использованием статически определённых буферов. В отличие от других ФС для Flash-накопителей, построенных на основе структур данных в форме лога, в LittleFS размер потребляемой оперативной памяти и служебных структур на накопителе всегда остаётся постоянным, не зависимо от того, что записывается в ФС и какого размера хранилище.

LittleFS включает программные средства для выравнивания износа Flash-носителей (wear leveling (https://en.wikipedia.org/wiki/Wear_leveling)), позволяющие минимизировать повторное использование блоков и равномерно распределить операции очистки блоков на Flash-памяти, контроллер которой не обеспечивает решение данной задачи.


Важной для встраиваемой техники особенностью LittleFS также является устойчивость к сбоям - ФС рассматривает случайное прекращение работы (завершение работы через отключение питания) в качестве штатной ситуации и спроектирована для гарантирования нахождения хранилища на диске в целостном состоянии в любой момент времени.  Для исключения  нарушения целости и потери данных применяется (https://github.com/geky/littlefs/blob/master/DESIGN.md) механизм copy-on-write (COW), при котором изменения не перезаписывают информацию, а сохраняются в новое место.

Структуру LittleFS составляет набор блоков директорий. Каждая директория имеет связанный список пар метаданных, которые могут обновляться атомарно через изменение указателя на активный блок метаданных. Блоки директорий включают ссылки на другие файлы или директории. Содержимое файлов представлено COW-списками CTZ, обеспечивающими уровень сложности O(1) при добавлении и O(nlogn)  при чтении. Выделение блоков осуществляется через сканирование ФС на предмет использованных блоков в области фиксированного размера, хранимой в виде битового вектора. Для упрощения сканирования все директории являются частью связанного списка, охватывающего всю файловую систему. Если при записи блока определяется ошибка, то выделяется новый блок и данные переносятся в него.


Поддерживается полный набор POSIX-подобных функций для работы с файлами и каталогами. Обеспечивается атомарность совершения таких операций, как удаление и переименование, даже в случае пропадание питания во время их выполнения. Фактически изменения файла сбрасываются на диск только после вызова sync или close. Рассогласования, вызванные операциями, которые не могут быть выполнены атомарно, решаются специальным обработчиком deorphan, который проходит по всему дереву ФС при первом распределении после загрузки.

URL: https://os.mbed.com/blog/entry/littlefs-high-integrity-embed.../
Новость: https://www.opennet.ru/opennews/art.shtml?num=47906

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру