« R3-FS (продолжение 1)BAADF00D »

R3-FS файловая система для роботов

2009-12-17

Постоянная ссылка 00:51:45, от george Email , 828 слов   Russian (RU)
Рубрики: Хроники лаборатории, R3FS

R3-FS файловая система для роботов

Сегодняшний день -- день рождения новой ФС. Предлагаю отметить его ликованием. Наконец-то мы завершили процесс разработки и уже не осталось сомнений -- файловой системе быть!

Продолжение:

Исходные данные - нашим приходится разрабатывать всевозможные измерительные системы и системы сбора данных, у которых одна особенность - они встроенные и не должны требовать вмешательства со стороны человека. Это не исключает необходимости представлять данные в удобном для человека виде. Человек с точки зрения нашего робота - явление временное, появляется редко. Данные он забирает, оставляет ценные указания. А робот всё время трудится и плодит несметное количество архивов, часть которых выкидывается потому что не привлекает внимания. Например, катится измерительная платформа из Питера в Москву и измеряет каждый сантиметр пути, по дюжине параметров. Гигабайты полученных данных складирует на носитель и стираются, если они не востребованы.

В качестве основной модели мы выбрали флеш память, со всеми её особенностями и недостатками. Мы не планируем реализацию ФС для жестких дисков. Какие жесткие диски выдержат прямое попадание камнем? Наш робот-трансформер крепится под обычной железнодорожной платформой для контейнеров. Должен выдерживать вибрации, от которых гайки и разъемы самопроизвольно выкручиваются, если не скреплены стальной проволокой.

Недостатки флеш памяти:
1. ограниченное количество циклов записи, для MLC многослойных чипов - количество циклов всего 500 для SLC заметно больше. Но если речь идет о перезаписи гигабайтов данных в час, то надежности просто не хаватает для обеспечения работы традиционных файловых систем таких как FAT. FAT просто протрет до дыр те кластеры, где живут таблицы FAT и директории.
2. Битые блоки на NAND FLASH даны от рождения, чипы продаются изначально с битыми блоками и битые блоки могут проявляться в процессе эксплуатации.
3. Большое время стирания данных и большой размер единицы стирания данных. Вообще, когда единица стирания данных (сегмент) отличается от единицы хранения (страница, блок, сектор) - не удобно.
Если носитель большого размера и файлы большого размера, то хранение таблиц FAT -- крайне не разумно с точки зрения распределения памяти, они занимают мегабайты и мегабайты. Надежность хранения данных сильно падает, поскольку при увеличении размеров файлов вероятность сбоя растет пропорционально размеру носителя и размеру файла.

Требования к фс:
Файловая система должна быть совместима с FAT, потому что доступ осуществляется через USB.
Устройство должно прикидываться Mass Storage носителем типа Флешка и давать прозрачный доступ на чтение ко всем архивам. Архивы бывают большого размера. В случае переполнения носителя архивы должны затираться по времени хранения. Некоторые архивы должны иметь возможность сохраняться дольше обычных. Как воспоминания, если полезные и важные, хранятся дольше.

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

Файловая система должна быть быстрой, абсолютно быстрой, быстрее некуда. Что такое "быстрее некуда" с точки зрения робота -- это когда для пересылки данных (сохранения архива на носитель) вообще не расходуется процессорное время. В рамках известных операционных систем это просто не реально. Обычно операционная система копирует буфер два три раза прежде чем данные попадут на носитель.
Решения:
Мы переделали обычный POSIX стиль работы с файлами, только ради одной идеи, чтобы исключить лишнее копирование буферов, совсем исключить. Способ работы с файловой системой стал таким: если файл уже создан, то распределение ресурсов памяти (выделение буферов) дело драйвера носителя, а не приложения. По сути, когда программа обращается к файловой системе на RAM диске или во встроенный флеш, то в ответ получает ссылку на память, где данные хранятся, а не новый блок заполненный данными.
Формат носителя подбирается таким образом, чтобы для операций копирования данных на носитель можно было использовать DMA (прямой доступ к памяти). Данные не должны требовать обработки. Это порождает только одно побочное требование -- контроль целостности надо выполнять аппаратно. Если целевая аппаратура поддерживает DMA и имеет встроенную поддержку ECC, то оказывается возможно достичь абсолютного показателя -- файловая система не грузит процессор.

На этом мы не остановились, надо увеличивать быстродействие носителя за счет применения технологий RAID. В современных FLASH в одном корпусе (в одной микросхеме) может быть до 4-х независимых чипов. Пока программируется один чип можно выполнять пересылку данных в другой чип. Блоики данных поочередно пишутся то в один, то в другой чип. Наращивать производительность можно также путем включения чипов Flash памяти в параллель для увеличения разрядности передачи данных, как это делается в SSD носителях.

Все эти причуды поддерживаются на уровне драйвера носителя (драйвера блочного устройства), но файловая система ориентируется именно на такой драйвер.

Требования: совместимость с FAT
Решения:
Мы создали уровень трансляции нашей файловой системы в FAT. Ничего из присущих FAT структурных элементов: загрузочного блока, шапки, таблиц FAT и директорий не существует в нашей ФС. Наша ФС по запросу с ПК синтезирует блок данных такой, как если бы данные хранились в FAT. Размещение файлов на носителе описывается не таблицей, а списком цепочек. Если цепочка непрерывная - то это всего два числа: смещение на носителе и длина цепочки кластеров. Уровень совместимости не хранит данные о сгенерированной FAT. Трюк в том, что Операционная система Linux или Windows опрашивает FAT последовательно блок за блоком. Наша ФС последовательно подсовывает хосту то, что тот хочет видеть, а не то что есть на самом деле.
На самом деле... (продолжение следует)

Трекбек адрес этой записи

URL трекбека (щелкните правой кнопкой мыши и скопируйте ссылку)

Еще нет отзывов

Оставить комментарий


Ваш email адрес не будет показан на сайте.

Ваш URL будет показан.
ПлохоПревосходно
(Заменить прерывания строк на <br />)
(Имя, email и сайт)
(Разрешить пользователям посылать вам сообщения (ваш email не отображается).)

Вы можете использовать OpenID чтобы предоставить ваше имя, email и url.

Компания "НПФ Геолаб" является разработчиком систем сбора данных и контроллеров станков с ЧПУ. Чтобы общественность была в курсе наших последних разработок, мы решили вести блог.

Поиск