JFFS2 - JFFS2
Разработчики) | Дэвид Вудхаус |
---|---|
Полное имя | Журналирование файловой системы Flash версии 2 |
Введено | 23 сентября 2001 г.Linux 2.4.10 | с
Функции | |
Прозрачное сжатие | zlib, рубин и время |
Другой | |
Поддерживается операционные системы | Linux |
Журналирование файловой системы Flash версии 2 или же JFFS2 это файловая система с лог-структурой для использования с флэш-память устройств.[1] Это преемник JFFS. JFFS2 включен в Ядро Linux с 23 сентября 2001 г., когда он был присоединен к Основная линия ядра Linux как часть выпуска ядра версии 2.4.10. JFFS2 также доступен для некоторых загрузчики, подобно Das U-Boot, Открытая прошивка, то eCos ОСРВ, RTEMS ОСРВ и RedBoot. Наиболее известное использование JFFS2 происходит от OpenWrt.[2]
В качестве замены JFFS2 были разработаны как минимум три файловые системы: LogFS, УБИФС, и YAFFS.
Функции
JFFS2 представлена:
- Поддержка для NAND flash устройств. Это потребовало значительного объема работы, поскольку устройства NAND имеют интерфейс последовательного ввода-вывода и не могут быть отображены в памяти для чтения.
- Жесткие ссылки. Это было невозможно в JFFS из-за ограничений в формате на диске.
- Сжатие. Доступны четыре алгоритма: zlib, рубин, rtime и lzo.
- Лучшая производительность. JFFS рассматривает диск как чисто циклический журнал. Это привело к появлению большого количества ненужных операций ввода-вывода. В вывоз мусора алгоритм в JFFS2 делает это практически ненужным.
Дизайн
Как и в случае с JFFS, изменения в файлах и каталогах "регистрируются" для прошивки. узлы, из которых два типа:
- inodes: заголовок с метаданными файла, за которым следует полезная нагрузка данных файла (если есть). Сжатые полезные данные ограничены одной страницей.
- ужасный узлы: записи каталога, каждая из которых содержит имя и номер inode. Жесткие ссылки представлены как разные имена с одинаковым номером inode. Номер специального индексного дескриптора 0 означает разъединение.
Как и в случае с JFFS, узлы начинаются как действительный когда они созданы, и станут устаревший когда где-то была создана более новая версия.
Однако, в отличие от JFFS, здесь нет циклического журнала. Вместо этого JFFS2 имеет дело с блоки, блок такого же размера, как стираемый сегмент флэш-носителя. Блоки заполняются узлами по одному снизу вверх. А чистый блок - это тот, который содержит только действительный узлы. А грязный блок содержит как минимум один устаревший узел. А свободный блок не содержит узлов.[3]
В уборщик мусора бежит в фоновом режиме, поворачивая грязный блоки в свободный блоки. Это делается путем копирования действительный узлов в новый блок и пропуск устаревший ед. После этого стирается грязный блок и помечает его специальным маркером, обозначая его как свободный блокировка (для предотвращения путаницы, если питание потеряно во время операции стирания).[3]
Сделать выравнивание износа более равномерно и предотвращает чрезмерную концентрацию стирания на в основном статических файловых системах, сборщик мусора иногда также потребляет чистый блоки.[3]
Недостатки
Из-за лог-структурированного дизайна JFFS2 имеет следующие недостатки:[3]
- Все узлы по-прежнему должны сканироваться на устанавливать время. Это медленно и становится все более серьезной проблемой, поскольку флэш-устройства увеличиваются в размерах. гигабайт классифицировать. Чтобы решить эту проблему, Стереть сводку блока (EBS) был представлен в версии 2.6.15 ядра Linux. EBS помещается в конец каждого блока и обновляется при каждой записи в блок, суммируя содержимое блока; во время монтирования EBS читается вместо сканирования целых блоков.
- Запись множества небольших блоков данных может даже привести к отрицательной степени сжатия, поэтому для приложений важно использовать большие буферы записи.
- Невозможно определить, сколько полезного свободного пространства осталось на устройстве, поскольку это зависит как от того, насколько хорошо можно сжать дополнительные данные, так и от последовательности записи.
Смотрите также
внешняя ссылка
- Сайт Red Hat JFFS2
- JFFS: журналируемая файловая система Flash Дэвид Вудхаус (PDF )
- Официальный список рассылки JFFS2
- JFFS2 FAQ
Рекомендации
- ^ JFFS2, в основном предназначена для необработанной флэш-памяти, а не для блочных устройств, таких как жесткие диски, USB-накопители, CF-карты и т. Д. (Block2mtd)
- ^ «Макет OpenWrt Flash - OpenWrt Wiki». Wiki.openwrt.org. Получено 2014-03-04.
- ^ а б c d «Профиль программного обеспечения: журналирующая файловая система Flash, версия 2 (JFFS2)» (PDF). micron.com. 2011. Архивировано с оригинал (PDF) на 2014-03-07. Получено 2014-03-04.