JFFS2 - JFFS2

JFFS2
Разработчики)Дэвид Вудхаус
Полное имяЖурналирование файловой системы Flash версии 2
Введено23 сентября 2001 г. (2001-09-23) с 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 читается вместо сканирования целых блоков.
  • Запись множества небольших блоков данных может даже привести к отрицательной степени сжатия, поэтому для приложений важно использовать большие буферы записи.
  • Невозможно определить, сколько полезного свободного пространства осталось на устройстве, поскольку это зависит как от того, насколько хорошо можно сжать дополнительные данные, так и от последовательности записи.

Смотрите также

внешняя ссылка

Рекомендации

  1. ^ JFFS2, в основном предназначена для необработанной флэш-памяти, а не для блочных устройств, таких как жесткие диски, USB-накопители, CF-карты и т. Д. (Block2mtd)
  2. ^ «Макет OpenWrt Flash - OpenWrt Wiki». Wiki.openwrt.org. Получено 2014-03-04.
  3. ^ а б c d «Профиль программного обеспечения: журналирующая файловая система Flash, версия 2 (JFFS2)» (PDF). micron.com. 2011. Архивировано с оригинал (PDF) на 2014-03-07. Получено 2014-03-04.