Разработчик (и) | Йорн Энгель, Прасад Джоши |
---|---|
Другое | |
Поддерживается операционные системы | Linux |
Веб-сайт | logfs.org/logfs/ на Wayback Machine (архивировано 16.06.2010) |
LogFS Linux лог-структурированная и масштабируемая файловая система флэш-памяти, предназначенная для использования на больших устройствах флэш-памяти. Он написан и частично спонсируется CE Linux Forum.
LogFS была представлена в основной ветке ядра Linux в версии 2.6.34, выпущенной 16 мая 2010 г. Она была удалена из кодовую базу во время окна слияния версии 4.10 в декабре 2016 года, поскольку она «не поддерживалась годами и, казалось, не использовалась».
По состоянию на ноябрь 2008 года LogFS была достаточно зрелой, чтобы пройти весь набор тестов, и впоследствии была включена в основное ядро Linux с пометкой в качестве «экспериментального» в версии 2.6.34, выпущенной 16 мая 2010 г. Однако он не привлек большой пользовательской базы и был удален из ядра в декабре 2016 г.
LogFS был мотивирован трудностями JFFS2 с накопителями флэш-памяти большего размера. LogFS хранит дерево inode на диске; JFFS2 этого не делает, что требует от него сканирования всего диска при монтировании и кеширования всего дерева в ОЗУ. Для больших дисков сканирование может занять несколько десятков секунд, а дерево может занять значительный объем оперативной памяти. LogFS избегает этих штрафов, но выполняет больше работы во время работы системы и использует часть дискового пространства для хранения дерева inode.
LogFS сохраняет дерево индексных дескрипторов файла на диске, что означает, что при записи в файл каждый узел-предок в дереве должен быть перезаписан. Это делается с помощью обновления «блуждающего дерева». Самый нижний узел в дереве (то есть данные) записывается первым, каждый узел записывается по возрастанию дерева, пока не обновится корневой индексный дескриптор. Запись в корень последней сохраняет атомарность обновления.
A блок флэш-памяти - это единица стирания и обычно больше, чем блок файловой системы. LogFS обрабатывает это несоответствие, упаковывая несколько блоков файловой системы в один блок флэш-памяти. Запись «сумма» в конце блока флэш-памяти записывает, какие данные хранятся в нем. Когда все блоки файловой системы блока флэш-памяти перемещены или удалены, его можно стереть и использовать для новых данных.
Для максимального использования флэш-памяти необходимо сжимать данные, чтобы блоки флэш-памяти были заполнены полезными данными. Это достигается с помощью сборки мусора. Стратегия сборки мусора LogFS основана на размещении файловых данных определенным образом в блоки флэш-памяти: блок флэш-памяти будет содержать только файловые данные с того же уровня в дереве индексных дескрипторов. LogFS может собирать мусор на верхнем уровне деревьев, используя всего 1 пустой блок флэш-памяти. Он может собирать мусор на 2 верхних уровнях деревьев, используя 2 пустых блока флэш-памяти. И может собрать мусор на всех N уровнях деревьев, используя N пустых блоков флеш-памяти. Алгоритм - экспоненциальное время в худшем случае, но худший случай встречается редко, и алгоритм требует резервирования лишь нескольких блоков флэш-памяти.
| journal =
()Файловая система logfs, которая не обслуживалась годами и, казалось бы, не использовалась, была удалена из ядра.