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 и POSIX ACL.

Начиная с GRUB 2.04 (5 Июля 2019) можно использовать раздел с F2FS как загрузочный. Для ранних версий приходилось создавать отдельный загрузочный раздел на ext4 или других файловых системах, поддерживаемых GRUB.

Примечания

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.