Открыть сервис

F2FS

F2FS (Flash-Friendly File System) — это файловая система с журналированием, разработанная компанией Samsung Electronics в 2012 году специально для устройств хранения данных на основе флеш-памяти NAND, включая твердотельные накопители (SSD), карты памяти и встроенные решения (eMMC, UFS). Основное назначение F2FS — учет особенностей флеш-памяти, таких как необходимость выравнивания износа (wear leveling) и сборки мусора (garbage collection), для обеспечения высокой производительности и долговечности накопителя. Файловая система оптимизирована для работы с блоками данных на физическом уровне, что отличает её от традиционных файловых систем, разработанных для механических жёстких дисков (например, ext4 или NTFS).

История

Разработка F2FS была начата в Samsung в 2010 году как ответ на растущее распространение флеш-памяти в мобильных устройствах и серверах. Первая версия была выпущена в 2012 году для ядра Linux (начиная с версии 3.8). В 2013 году поддержка F2FS была включена в ядро Linux 3.8, что сделало её доступной для широкого круга пользователей. В 2014 году компания Google начала использовать F2FS в Android-устройствах для улучшения скорости работы флеш-памяти. С тех пор F2FS остаётся основной файловой системой для многих смартфонов на Android, особенно в сегменте высокопроизводительных моделей.

В 2016 году F2FS получила поддержку шифрования на уровне файлов (fs-encryption), что повысило её популярность в корпоративном сегменте и мобильных ОС. В 2020–2022 годах в F2FS были добавлены режимы для работы с новыми типами NAND (например, QLC, 3D NAND) и улучшен алгоритм сбора мусора.

Архитектура и принципы работы

F2FS основана на концепции «сегментированного хранения» (segment-based layout), которая позволяет адаптировать операции ввода-вывода к физическим характеристикам флеш-памяти. В отличие от традиционных файловых систем, F2FS оперирует не секторами (обычно 512 байт), а страницами (страницы NAND — от 4 КБ до 16 КБ) и блоками (от 64 КБ до 2 МБ). Структура на диске включает несколько ключевых областей:

Основные метаданные

  • Суперблок — хранит общие сведения о файловой системе (размер, версия, контрольные суммы).
  • Зона контрольных точек (Checkpoint Area) — содержит информацию о состоянии системы после каждой транзакции.
  • Главная таблица сегментов (Segment Information Table, SIT) — отслеживает, какие блоки заняты, а какие свободны.
  • Таблица адресов сегментов (Segment Address Table, SAT) — сопоставляет логические номера сегментов с физическими адресами на флеш-памяти.
  • Зона восстановления (Node Area) — хранит метаданные inode (дескрипторы файлов).

Зона данных

Данные в F2FS организованы в сегменты (обычно по 2 МБ). Каждый сегмент содержит несколько страниц. При записи новых данных F2FS использует стратегию «добавочной записи» (append-only), когда новые данные пишутся в свободные блоки, а старые версии помечаются как устаревшие. Это минимизирует операции стирания, так как флеш-память требует полного стирания блока перед повторной записью.

Особенности и преимущества

F2FS включает ряд механизмов, критических для долговечности и производительности флеш-памяти:

Выравнивание износа

F2FS использует алгоритм LFS (Log-structured File System), при котором данные и метаданные записываются последовательно в новые сегменты. Это позволяет равномерно распределять операции стирания по всем блокам NAND, что предотвращает преждевременный отказ некоторых секторов.

Сборка мусора

Файловая система имеет встроенный механизм сборки мусора (garbage collection). В фоновом режиме F2FS перераспределяет данные из сегментов с большим количеством устаревших страниц в новые сегменты, затем освобождённые блоки стираются. У пользователя есть возможность настроить порог запуска сборки мусора (например, при заполнении диска на 80–90 %).

Журналирование

F2FS поддерживает журналирование для защиты от сбоев питания. В отличие от ext4, где журнал может быть отдельным файлом или областью, в F2FS журнал интегрирован в структуру контрольных точек. Это снижает накладные расходы и повышает надёжность.

Разреженные файлы

Поддержка разреженных файлов (sparse files) позволяет создавать файлы большого размера, занимающие на диске только фактически записанные данные. Это экономит место на носителях с ограниченной ёмкостью.

Применение

F2FS широко используется в следующих областях:

  • Мобильные устройства — смартфоны и планшеты на базе Android (например, с 2015 года в устройствах Google Nexus, Samsung Galaxy и других). По данным Google на 2023 год, F2FS является стандартной файловой системой для всех новых Android-устройств с флеш-памятью UFS.
  • Встраиваемые системы — мультимедийные плееры, роутеры, умные часы, где важна долговечность NAND.
  • Серверные системы — реже, но F2FS применяется в высоконагруженных базах данных (например, MySQL, MariaDB) на SSD из-за низкой фрагментации.
  • Бытовые SSD — некоторые современные внешние накопители (особенно на базе интерфейсов USB 3.0 и NVMe) могут использовать F2FS для повышения скорости записи.

Ограничения и критика

Несмотря на преимущества, F2FS имеет ряд ограничений:

  • Задержки при сборке мусора — при высокой фрагментации данных и недостатке свободного места процесс сборки мусора может приводить к кратковременным падениям производительности (на 20–40 % по данным тестов 2019–2021 годов).
  • Потребление оперативной памяти — для обслуживания больших таблиц сегментов требуется до 5–10 % больше RAM, чем для ext4, что критично на устройствах с 1–2 ГБ ОЗУ.
  • Реализация для других ОС — в 2022–2023 годах появились версии для FreeBSD и macOS, но их стабильность ниже, чем в Linux.
  • Отсутствие поддержки дедупликации — в отличие от ZFS или Btrfs, F2FS не имеет встроенной дедупликации данных.
  • Проблемы с гибридными накопителями — на старых SSD (SATA, MLC) и картах памяти (SD, microSD) выигрыш в производительности по сравнению с ext4 не столь значителен, иногда на 5–15 % ниже при последовательных операциях.

Интересные факты

  • Название F2FS произносится как «эф-ту-эф-эс»; часто расшифровывается как «Flash-Friendly File System».
  • В 2021 году корпорация Microsoft заявила о тестировании F2FS для Windows 10 в рамках проекта поддержки альтернативных файловых систем (для IoT и мобильных устройств).
  • F2FS поддерживает 64-битные указатели, что позволяет работать с разделами объёмом до 16 ТБ (при странице 4 КБ).
  • Одна из главных тем критикой F2FS в сообществе Linux — недостаточная эффективность на файлах с высоким уровнем фрагментации (например, видеозаписи большого размера), что компенсируется включением режима «small blocks» (размер блока 1 КБ).

Источники

  • Lee, C., & Park, S. (2012). F2FS: A New File System for Flash Storage. Proceedings of the USENIX Annual Technical Conference.
  • Документация ядра Linux: Documentation/filesystems/f2fs.rst (актуально на 2023 г.).
  • Официальное руководство Samsung по F2FS (версия 1.1, 2014 г.).
  • Тесты производительности флеш-систем: LWN.net, статии от 2019–2023 гг. (архив).
  • База знаний Google Android: раздел о файловых системах (2023 г.).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →