JFFS2
Разработчик(и) | Дэвид Вудхаус |
---|---|
Полное имя | Журналирование файловой системы Flash версии 2 |
Представлено | 23 сентября 2001 г. Linux 2.4.10. | с
Функции | |
Прозрачный сжатие | zlib , рубин и rtime |
Другой | |
Поддерживается операционные системы | Линукс |
Журналируемая файловая система Flash версии 2 или JFFS2 — это файловая система с журнальной структурой для использования с устройствами флэш-памяти . [1] Это преемник JFFS . JFFS2 был включен в ядро Linux с 23 сентября 2001 года, когда он был объединен с основной веткой ядра Linux как часть версии ядра 2.4.10. JFFS2 также доступен для некоторых загрузчиков , таких как Das U-Boot , Open Firmware , eCos RTOS, RTEMS RTOS и RedBoot . Наиболее заметное использование JFFS2 происходит из OpenWrt . [2]
В качестве замены JFFS2 были разработаны как минимум три файловые системы: LogFS , UBIFS и YAFFS .
Функции
[ редактировать ]JFFS2 представил:
- Поддержка флэш-устройств NAND . Это потребовало значительного объема работы, поскольку устройства NAND имеют последовательный интерфейс ввода-вывода и не могут быть отображены в памяти для чтения.
- Жесткие ссылки. В JFFS это было невозможно из-за ограничений дискового формата.
- Сжатие. Доступно пять алгоритмов: zlib , Rubin, lzma, rtime и lzo .
- Лучшая производительность. JFFS рассматривал диск как чисто циклический журнал. Это привело к большому количеству ненужного ввода-вывода. Алгоритм мусора сборки в JFFS2 делает это практически ненужным.
Дизайн
[ редактировать ]Как и в случае с JFFS, изменения файлов и каталогов «записываются» во флэш-памяти узлов , которые бывают двух типов:
- inodes : заголовок с метаданными файла, за которым следуют полезные данные файла (если есть). Сжатые полезные данные ограничены одной страницей.
- прямые узлы: записи каталога, каждая из которых содержит имя и номер индексного дескриптора. Жесткие ссылки представлены как разные имена с одинаковым номером индексного дескриптора. Специальный индексный дескриптор с номером 0 представляет собой разрыв связи.
Как и в случае с JFFS, узлы начинают действовать как действительные при их создании и становятся устаревшими, когда где-то еще создается более новая версия.
Однако в отличие от JFFS здесь нет циклического журнала. Вместо этого JFFS2 работает с блоками — единицей того же размера, что и сегмент стирания флэш-носителя. Блоки заполняются по одному узлами снизу вверх. блок Чистый — это блок, содержащий только допустимые узлы. блок Грязный содержит как минимум один устаревший узел. блок Свободный не содержит узлов. [3]
Сборщик мусора работает в фоновом режиме, превращая грязные блоки в свободные . Это делается путем копирования действительных узлов в новый блок и пропускания устаревших . После этого он стирает грязный блок и помечает его специальным маркером, обозначающим его как свободный блок (во избежание путаницы в случае отключения питания во время операции стирания). [3]
Чтобы сделать выравнивание износа более равномерным и предотвратить чрезмерную концентрацию стираний на преимущественно статических файловых системах, сборщик мусора иногда также использует чистые блоки. [3]
Недостатки
[ редактировать ]Из-за логической структуры недостатки JFFS2 включают следующее: [3]
- Все узлы по-прежнему необходимо сканировать во время монтирования . Это происходит медленно и становится все более серьезной проблемой по мере того, как флэш-устройства масштабируются до терабайтного диапазона. Чтобы решить эту проблему, функция Erase Block Summary в версии ядра Linux 2.6.15 была введена (EBS). EBS размещается в конце каждого блока и обновляется при каждой записи в блок, суммируя содержимое блока; во время монтирования EBS читается вместо сканирования целых блоков.
- Запись большого количества небольших блоков данных может даже привести к отрицательной степени сжатия, поэтому приложениям важно использовать большие буферы записи.
- Не существует практического способа узнать, сколько полезного свободного места осталось на устройстве, поскольку это зависит как от того, насколько хорошо могут быть сжаты дополнительные данные, так и от последовательности записи.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Подсистема устройств памяти (MTD) для Linux» . www.linux-mtd.infradead.org . Проверено 15 мая 2021 г.
- ^ «Макет OpenWrt Flash — OpenWrt Wiki» . Wiki.openwrt.org . 18 января 2010 г. Проверено 4 марта 2014 г.
- ^ Перейти обратно: а б с д «Профиль программного обеспечения: журналируемая файловая система Flash, версия 2 (JFFS2)» (PDF) . micron.com. 2011. Архивировано из оригинала (PDF) 7 марта 2014 г. Проверено 4 марта 2014 г.