Jump to content

Ф2ФС

Ф2ФС
Разработчик(и) Samsung Electronics , Motorola Mobility , Huawei и Google
Полное имя Файловая система, совместимая с Flash
Представлено v3.8, 20 декабря 2012 г. [1] с Linux
Структуры
Содержимое каталога многоуровневая хеш-таблица
Распределение файлов растровое изображение (свободное пространство), таблица
Загрузочный Да, начиная с GRUB 2.04 (05.07.2019)
Пределы
Максимальный размер тома 16 ТБ
Максимальный размер файла 3,94 ТБ
Макс нет. файлов Зависит от размера тома
Максимальная длина имени файла 255 байт [2]
Функции
Даты записи модификация (mtime), модификация атрибута (ctime), доступ (atime)
Разрешение даты 1 нс
Атрибуты POSIX, расширенные атрибуты
Файловая система
разрешения
POSIX, ACL
Прозрачный
сжатие
ЛЗО, ЛЗ4 (начиная с Linux 5.6), [3] zstd (начиная с Linux 5.7) [4]
Прозрачный
шифрование
Да
Другой
Поддерживается
операционные системы
Линукс и Андроид
Веб-сайт f2fs .неделя .ядро .org

F2FS ( Flash-Friendly File System ) — флэш-файловая система, изначально разработанная компанией Samsung Electronics для ядра Linux . [5]

Целью создания F2FS было создание файловой системы , которая с самого начала учитывала бы характеристики устройств хранения данных на основе флэш-памяти NAND (таких как твердотельные диски , eMMC и SD- карты), которые широко используются в компьютерах. системы, начиная от мобильных устройств и заканчивая серверами.

F2FS была разработана на основе файловой системы с журнальной структурой , адаптированной к новым формам хранения. Джегык Ким, главный автор F2FS, заявил, что это устраняет некоторые известные проблемы. [5] старых файловых систем с журнальной структурой, таких как эффект снежного кома блуждающих деревьев и высокие затраты на очистку. Кроме того, поскольку устройство хранения данных на основе NAND демонстрирует различные характеристики в зависимости от его внутренней геометрии или схемы управления флэш-памятью (например, уровня трансляции флэш-памяти или FTL), оно поддерживает различные параметры не только для настройки структуры диска, но и для выбор алгоритмов выделения и очистки.

Обратите внимание, что по умолчанию F2FS использует схему fsync «posix», которая несет в себе более высокий риск оставить файловую систему в «грязном» состоянии во время нечистого завершения работы (поскольку она не гарантирует атомарность операций записи) в пользу лучшей производительности. Существует более строгий метод, учитывающий аппаратные ограничения для большей безопасности за счет производительности; подробности см. в разделе «fsync_mode» в руководстве. [6]

  • Многоголовочная регистрация
  • Многоуровневая хеш-таблица для записей каталога
  • Статическое/динамическое разделение горячих и холодных данных
  • Адаптивная схема логирования
  • Конфигурируемые операционные блоки
  • Двойной КПП
  • Восстановление с откатом назад и вперед
  • Распределение блоков в стиле кучи
  • ТРИМ/ФИТРИМ Поддержка [7]
  • Онлайн- дефрагментация файловой системы /дефрагментация файлов [8]
  • Встроенные xattrs [9] /данные [10] /реж. [11]
  • Автономная проверка файловой системы (проверка и устранение несоответствий). [12] )
  • Атомарные операции [13]
  • Шифрование на уровне файловой системы [14]
  • Изменение размера в автономном режиме (уменьшение не поддерживается). [15]
  • Внутренняя периодическая очистка данных [16]
  • Экстент кэша [17]
  • Прозрачное сжатие файлов с использованием LZO или LZ4 (с Linux 5.6), [3] или zstd (с Linux 5.7) [4]

Макет на диске

[ редактировать ]

F2FS делит весь том на несколько сегментов, каждый из которых имеет фиксированный размер 2 МБ. Раздел состоит из последовательных сегментов, а зона — из набора разделов. По умолчанию размеры разделов и зон имеют одинаковый размер, но пользователи могут легко изменить размер с помощью mkfs.

F2FS делит весь том на шесть областей, и все, кроме области суперблока, состоят из нескольких сегментов, как описано ниже.

Суперблок (СБ)
SB находится в начале раздела. Существует две копии, чтобы избежать повреждения файловой системы. Он содержит основную информацию о разделах и некоторые параметры F2FS по умолчанию.
Контрольно-пропускной пункт (КП)
CP содержит информацию о файловой системе, растровые изображения для действительных наборов NAT/SIT, списки потерянных индексных дескрипторов и сводные записи текущих активных сегментов.
Информационная таблица сегмента (SIT)
SIT содержит количество действительных блоков и битовую карту достоверности всех блоков основной области.
Таблица адресов узлов (NAT)
NAT — это таблица адресов для блоков узлов основной области.
Область сводки сегмента (SSA)
SSA содержит записи, которые содержат информацию о владельце данных основной области и узловых блоков.
Основная площадь
Основная область содержит данные файлов и каталогов, а также их индексы.

Чтобы избежать несогласованности файловой системы и флэш-памяти, F2FS выравнивает адрес начального блока CP с размером сегмента. Он также выравнивает адрес начального блока основной области с размером зоны, резервируя некоторые сегменты в области SSA.

Структура метаданных

[ редактировать ]

F2FS использует схему контрольных точек для поддержания целостности файловой системы. Во время монтирования F2FS сначала пытается найти последние действительные данные контрольной точки, сканируя область CP. Чтобы сократить время сканирования, F2FS использует только две копии CP. Один из них всегда указывает последние действительные данные, что называется механизмом теневого копирования. Помимо CP, механизм теневого копирования также используют NAT и SIT. Для обеспечения согласованности файловой системы каждый CP указывает, какие копии NAT и SIT действительны.

Структура индекса

[ редактировать ]

Ключевой структурой данных является «узел». Подобно традиционным файловым структурам, F2FS имеет три типа узлов: индексный, прямой узел, косвенный узел. F2FS назначает 4 КБ блоку индексного дескриптора, который содержит 923 индекса блока данных, два прямых указателя узла, два косвенных указателя узла и один двойной косвенный указатель узла, как описано ниже. Блок прямых узлов содержит 1018 индексов блоков данных, а блок косвенных узлов содержит 1018 индексов блоков узлов. Таким образом, один блок индексного дескриптора (т. е. файл) охватывает:

4 KiB × (923 + 2×1018 + 2×10182 + 10183) = 4,228,213,756 KiB = 4,129,114.996 MiB = 4,032.338863 GiB = 3.937830921 TiB

Обратите внимание, что все блоки узлов сопоставляются с помощью NAT, а это означает, что местоположение каждого узла преобразуется с помощью NAT. Чтобы смягчить проблему блуждающего дерева, F2FS может пресекать распространение обновлений узлов, вызванное записью конечных данных.

Структура каталогов

[ редактировать ]

Запись каталога (dentry) занимает 11 байт и состоит из следующих атрибутов.

Структура записи каталога
хэш Хэш-значение имени файла
этот индексного дескриптора Номер
только Длина имени файла
тип Тип файла, например каталог, символическая ссылка и т. д.

Блок дентри состоит из 214 слотов дентри и имен файлов. Растровое изображение используется для представления того, действителен ли каждый зубец или нет. Дентри-блок занимает 4 КБ и имеет следующий состав:

Dentry Block (4 K) = bitmap (27 bytes) + reserved (3 bytes) +
                      dentries (11 * 214 bytes) + file name (8 * 214 bytes)

F2FS реализует многоуровневые хэш-таблицы для структуры каталогов. Каждый уровень имеет хеш-таблицу с выделенным количеством хеш-корзин, как показано ниже. Обратите внимание, что «A(2B)» означает, что сегмент включает в себя 2 блока данных.

Срок
A указывает на ведро
B указывает на блок
N указывает MAX_DIR_HASH_DEPTH
level #0    A(2B)
level #1    A(2B) - A(2B)
level #2    A(2B) - A(2B) - A(2B) - A(2B)
    ...
level #N/2  A(2B) - A(2B) - A(2B) - A(2B) - A(2B) - ... - A(2B)
    ...
level #N    A(4B) - A(4B) - A(4B) - A(4B) - A(4B) - ... - A(4B)

Когда F2FS находит имя файла в каталоге, сначала вычисляется хеш-значение имени файла. Затем F2FS сканирует хеш-таблицу уровня №0, чтобы найти dentry, состоящую из имени файла и номера его индексного дескриптора. Если она не найдена, F2FS сканирует следующую хэш-таблицу на уровне №1. Таким образом, F2FS сканирует хэш-таблицы на каждом уровне постепенно от 1 N. до На каждом уровне F2FS необходимо сканировать только один сегмент, определяемый следующим уравнением, которое показывает сложность O (log (количество файлов)).

 bucket number to scan in level #n = (hash value) % (# of buckets in level #n)

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

Распределение блоков по умолчанию

[ редактировать ]

Во время выполнения F2FS управляет шестью активными журналами внутри «Основной области»: узел «Горячий/Теплый/Холодный» и данные «Горячий/Теплый/Холодный».

Политика распределения блоков
Горячий узел Содержит блоки прямых узлов каталогов.
Теплый узел Содержит блоки прямых узлов, за исключением блоков «горячих» узлов.
Холодный узел Содержит косвенные блоки узлов.
Горячие данные Содержит зубные блоки.
Теплые данные Содержит блоки данных, кроме «горячих» и «холодных» блоков данных.
Холодные данные Содержит мультимедийные данные или перенесенные блоки данных.

LFS имеет две схемы управления свободным пространством: поточный журнал и копирование и сжатие. Схема копирования и сжатия, известная как очистка, хорошо подходит для устройств, демонстрирующих очень хорошую производительность последовательной записи, поскольку свободные сегменты все время используются для записи новых данных. Однако во время высокой загрузки он страдает от накладных расходов на очистку. И наоборот, схема потокового журнала страдает от случайных записей, но процесс очистки не требуется. F2FS использует гибридную схему, в которой по умолчанию применяется схема копирования и сжатия, но политика динамически меняется на схему потокового журнала в зависимости от состояния файловой системы.

Чтобы согласовать F2FS с базовым флэш-хранилищем, F2FS выделяет сегмент в единице раздела. F2FS ожидает, что размер раздела будет таким же, как размер единицы сбора мусора в FTL. Что касается детализации отображения в FTL, F2FS распределяет каждый раздел активных журналов по как можно большему количеству различных зон. FTL может записывать активные данные журнала в одну единицу распределения в соответствии с степенью детализации сопоставления.

Процесс очистки

[ редактировать ]

F2FS делает очистку как по требованию, так и в фоновом режиме. Очистка по требованию запускается, когда для обслуживания вызовов VFS недостаточно свободных сегментов. Фоновая очистка выполняется потоком ядра и запускает задание очистки, когда система простаивает.

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

Чтобы определить, действительны ли данные в сегменте жертвы, F2FS управляет растровым изображением. Каждый бит представляет достоверность блока, а битовая карта состоит из потока битов, охватывающего целые блоки в основной области.

Принятие

[ редактировать ]

Производители телефонов

[ редактировать ]

Google впервые использовал F2FS в своем Nexus 9 в 2014 году. [18] Однако другие продукты Google не использовали F2FS до Pixel 3 , когда F2FS была обновлена ​​со встроенной аппаратной поддержкой шифрования. [19]

Huawei использует F2FS начиная с Huawei P9 в 2016 году. [20] [21] OnePlus использовал F2FS в OnePlus 3T. [22]

Motorola Mobility использует F2FS в своих телефонах Moto G/E/X и Droid с 2012 года.

ZTE использует F2FS начиная с ZTE Axon 10 Pro в 2019 году. [23]

Дистрибутивы Linux

[ редактировать ]

F2FS была объединена с ядром Linux в конце 2012 года. [24] Многие дистрибутивы поддерживают его. [25] [26] [27]

См. также

[ редактировать ]
  1. ^ Майкл Ларабель (22 декабря 2012 г.). «Файловая система F2FS объединена с ядром Linux 3.8» . Фороникс . Проверено 25 мая 2016 г.
  2. ^ Джегык Ким (18 марта 2013 г.). «f2fs: привести максимальную длину имени f2fs в соответствие с файловой системой Linux» . Гитхаб . Проверено 16 мая 2023 г.
  3. ^ Jump up to: а б Майкл Ларабель (23 декабря 2019 г.). «Сжатие данных F2FS с использованием LZO/LZ4 + выборочная обработка расширений файлов выйдет в 2020 году» . Фороникс . Проверено 7 апреля 2020 г.
  4. ^ Jump up to: а б Майкл Ларабель (07.04.2020). «F2FS представляет поддержку сжатия Zstd в ядре Linux 5.7» . Фороникс . Проверено 7 апреля 2020 г.
  5. ^ Jump up to: а б Джегык Ким (5 октября 2012 г.). «f2fs: представим файловую систему, удобную для флэш-памяти» . Проверено 25 мая 2016 г.
  6. ^ f2fs: исправлено принудительное сохранение барьера записи для строгого режима fsync.
  7. ^ Джегык Ким (22 сентября 2014 г.). «f2fs: добавьте FITRIM в f2fs_ioctl» .
  8. ^ Чао Ю (26 октября 2015 г.). «f2fs: поддержка дефрагментации файлов» .
  9. ^ Джегык Ким (26 августа 2013 г.). «f2fs: добавить флаги для встроенных xattrs» .
  10. ^ Хуацзюнь Ли (10 ноября 2013 г.). «f2fs: включить поддержку встроенных данных f2fs» .
  11. ^ Чао Ю (24 сентября 2014 г.). «f2fs: поддержка встроенного каталога» .
  12. ^ Джегык Ким (20 сентября 2014 г.). «f2fs-tools: выпуск 1.4.0» .
  13. ^ Джегык Ким (25 сентября 2014 г.). «f2fs: поддержка функцииatomic_write для базы данных» .
  14. ^ Джегык Ким (24 июня 2015 г.). «обновления f2fs для версии 4.2» .
  15. ^ Джегык Ким (25 апреля 2016 г.). «resize.f2fs: поддержка увеличения размера раздела» .
  16. ^ Чао Ю (17 декабря 2015 г.). «f2fs: поддержка очистки данных в фоновом режиме» .
  17. ^ Чао Ю (25 января 2015 г.). «f2fs: включить кеш экстентов rb-дерева» .
  18. ^ Смит, Джошуа Хо, Райан. «Обзор Google Nexus 9» . www.anandtech.com . Проверено 10 мая 2019 г. {{cite web}}: CS1 maint: несколько имен: список авторов ( ссылка )
  19. ^ Фрумусану, Андрей (02.11.2018). «Обзор Google Pixel 3» . www.anandtech.com . Проверено 11 мая 2019 г.
  20. ^ Ларабель, Майкл (28 декабря 2018 г.). «F2FS получила больше исправлений в Linux 4.21 благодаря файловой системе, которая теперь поддерживается Google Pixel» . www.phoronix.com . Проверено 10 мая 2019 г.
  21. ^ Хамрик, Мэтт (12 мая 2017 г.). «Хуавэй Р10 и Р10 Плюс» . www.anandtech.com . Проверено 11 мая 2019 г.
  22. ^ Честер, Брэндон. «Обзор OnePlus 3T» . www.anandtech.com . Проверено 10 мая 2019 г.
  23. ^ «ZTE Axon 10 Pro официально представлен: первый, использующий F2FS» . Gizchina.com . 06 мая 2019 г. Проверено 10 мая 2019 г.
  24. ^ «Извлечь новую файловую систему F2FS из коммита Jaegeuk Kim» . git.kernel.org .
  25. ^ «Арх Linux Wiki» . wiki.archlinux.org . Проверено 27 июня 2021 г.
  26. ^ «Дебиан Вики» . wiki.debian.org . Проверено 27 июня 2021 г.
  27. ^ «Генту Вики» . wiki.gentoo.org . Проверено 27 июня 2021 г.
[ редактировать ]


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: dac78ffcb03edb0fa69d3f12acd4e53f__1707499560
URL1:https://arc.ask3.ru/arc/aa/da/3f/dac78ffcb03edb0fa69d3f12acd4e53f.html
Заголовок, (Title) документа по адресу, URL1:
F2FS - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)