F2FS
F2FS (англ. Flash-Friendly File System) — файловая система, ориентированная на использование на флеш-памяти, в том числе для использования с SSD для серверов и персональных компьютеров, с картами памяти (eMMC/SD) и со встроенными в различные потребительские устройства флеш-чипами.
F2FS | |
---|---|
Разработчик | Ким Хэ Гык (Kim Jaegeuk, кор. 김재극), Samsung Electronics, Motorola Mobility, Huawei и Google |
Файловая система | Флеш-дружелюбная файловая система (англ. Flash-Friendly File System) |
Дата представления | Февраль 2013[1] (Linux) |
Структура | |
Содержимое папок | Многоуровневая хеш-таблица |
Размещение файлов | Битовые поля (свободное место), Таблица |
Ограничения | |
Максимальный размер файла | 3,94 ТБ |
Максимум файлов | Зависит от размера тома |
Максимальная длина имени файла | 255 байт, 512 unicode для лейбла тома |
Максимальный размер тома | 16 ТБ |
Возможности | |
Свойства | время модификации (mtime), время изменения атрибута (ctime), время доступа (atime) |
Точность хранения даты | 1 нс |
Атрибуты | POSIX, расширенные атрибуты (xattrs) |
Права доступа | POSIX, ACL |
Фоновая компрессия | LZO, LZ4, zstd |
Фоновое шифрование | Есть[2] |
Поддерживается ОС | Linux и Android |
Автор — разработчик Samsung Ким Чэ Гык (Kim Jaegeuk, кор. 김재극). Исходный код системы был открыт Samsung в октябре 2012[3][4], после чего доработан инженерами «Samsung» с учётом замечаний сообщества.
Поддержка F2FS включена в ядро Linux начиная с версии 3.8[5]. Параллельно развивается пакет f2fs-tools, содержащий набор утилит для обслуживания разделов F2FS (mkfs.f2fs, fsck.f2fs).
Разработана специально с учётом специфики флеш-памяти и учитывает такие особенности, как неизменное время доступа и ограниченный ресурс количества циклов перезаписи данных.
ОсобенностиПравить
Хранение структур данных организовано в форме LSM-дерева, при обновлении информации используется механизм копирования при записи — при изменении данные не перезаписываются, а сохраняются в новом месте. Для ускорения выполнения операций в процессе работы индексы с информацией о распределении данных хранятся в оперативной памяти. Схема работы системы нацелена на продление жизни флеш-накопителей, учитывает внутреннюю геометрию расположения чипов в носителе и работу контроллера; данные по возможности распределяются равномерно, сводя к минимуму повторную запись в одни и те же блоки. С этой целью используется алгоритм последовательного заполнения накопителя, при котором новые данные всегда записываются только в области, следующие после ранее записанных данных, без оглядки на возможную фрагментацию. После достижения конца тома запись начинается с начала, занимая, по возможности, освобождённые блоки. Для исключения конфликтов с логикой контроллера накопителя в F2FS учитывается специфика работы прослойки FTL (Flash Translation Layer), выполняющего на многих накопителях подобную задачу по равномерному заполнению. Для адаптации F2FS к различным видам флеш-накопителей, различающихся своими характеристиками в зависимости от внутренней геометрии и схемы управления, предусмотрен широкий спектр параметров для управления структурой распределения данных в разделе и предоставлена возможность выбора различных алгоритмов очистки и выделения блоков.
Система защищена от «эффекта снежного кома», проявляющегося при использовании гуляющих деревьев (wandering tree): в ситуации, когда вместо перезаписи создаются новые элементы (меняется номер блока), для деревьев, в которых родительский узел ссылается на дочерние узлы, изменение узла приводит к перестройке всех вышележащих узлов. Системе необходим сборщик мусора, выполняющийся в фоне в моменты простоя системы.
Для обеспечения целостности используется модель с фиксацией точек выполнения и возможностью отката изменений (англ. rollback) к точкам сохранения в случае возникновения проблем.
Раздел F2FS формируется из сегментов размером 2 МБ, сегменты группируются в секции, которые в свою очередь объединяются в зоны.
Поддерживается как традиционная для Unix схема разграничения доступа, так и такие расширенные механизмы, как xattr[en] и POSIX ACL.
Начиная с GRUB 2.04 (5 Июля 2019) можно использовать раздел с F2FS как загрузочный. Для ранних версий приходилось создавать отдельный загрузочный раздел на ext4 или других файловых системах, поддерживаемых GRUB.
ПримечанияПравить
- ↑ Pull new F2FS filesystem from Jaegeuk Kim Архивная копия от 30 июня 2016 на Wayback Machine merged by Linus Torvalds
- ↑ Jaegeuk Kim. f2fs updates for v4.2 (неопр.) (24 июня 2015). Дата обращения: 7 октября 2020. Архивировано 17 января 2016 года.
- ↑ This is a new patch set for the f2fs file system Архивная копия от 18 января 2013 на Wayback Machine, LKML, 2012-10-05
- ↑ Samsung открыл код F2FS, новой файловой системы для Flash-накопителей Архивная копия от 18 апреля 2021 на Wayback Machine // opennet.ru, 05.10.2012
- ↑ В состав ядра Linux 3.8 войдёт файловая система F2FS, OpenNET. Архивировано 12 октября 2020 года. Дата обращения: 7 октября 2020.
СсылкиПравить
- FAST '15 — F2FS: A New File System for Flash Storage лекция от авторов (2015-02-17)
- WHAT IS Flash-Friendly File System (F2FS) документация для Linux: опции монтирования и конфигурация
- Flash Friendly File System (F2FS), Embedded Linux Conference (2013-02-22)
- LWN.net: An f2fs teardown (2012-10-10)
- eMMC/SSDFile SystemTuningMethodology сравнение с другими ФС и стратегии оптимизации (2013-05-24)