Kepler-1520
- 1 year ago
- 0
- 0
F2FS ( англ. Flash-Friendly File System ) — файловая система , ориентированная на использование на флеш-памяти , в том числе для использования с SSD для серверов и персональных компьютеров, с картами памяти ( eMMC / SD ) и со встроенными в различные потребительские устройства флеш-чипами.
Автор — разработчик Samsung Ким Чэ Гык (Kim Jaegeuk, кор. 김재극 ). Исходный код системы был открыт Samsung в октябре 2012 , после чего доработан инженерами «Samsung» с учётом замечаний сообщества.
Поддержка F2FS включена в ядро Linux начиная с версии 3.8 . Параллельно развивается пакет f2fs-tools, содержащий набор утилит для обслуживания разделов F2FS (mkfs.f2fs, fsck.f2fs).
Разработана специально с учётом специфики флеш-памяти и учитывает такие особенности, как неизменное и ограниченный ресурс количества циклов перезаписи данных .
Хранение структур данных организовано в форме LSM-дерева , при обновлении информации используется механизм копирования при записи — при изменении данные не перезаписываются, а сохраняются в новом месте. Для ускорения выполнения операций в процессе работы индексы с информацией о распределении данных хранятся в оперативной памяти . Схема работы системы нацелена на продление жизни флеш-накопителей, учитывает внутреннюю геометрию расположения чипов в носителе и работу контроллера; данные по возможности распределяются равномерно, сводя к минимуму повторную запись в одни и те же блоки. С этой целью используется алгоритм последовательного заполнения накопителя, при котором новые данные всегда записываются только в области, следующие после ранее записанных данных, без оглядки на возможную фрагментацию. После достижения конца тома запись начинается с начала, занимая, по возможности, освобождённые блоки. Для исключения конфликтов с логикой контроллера накопителя в F2FS учитывается специфика работы прослойки FTL ( Flash Translation Layer ), выполняющего на многих накопителях подобную задачу по равномерному заполнению. Для адаптации F2FS к различным видам флеш-накопителей, различающихся своими характеристиками в зависимости от внутренней геометрии и схемы управления, предусмотрен широкий спектр параметров для управления структурой распределения данных в разделе и предоставлена возможность выбора различных алгоритмов очистки и выделения блоков.
Система защищена от «эффекта снежного кома», проявляющегося при использовании гуляющих деревьев ( wandering tree ): в ситуации, когда вместо перезаписи создаются новые элементы (меняется номер блока), для деревьев, в которых родительский узел ссылается на дочерние узлы, изменение узла приводит к перестройке всех вышележащих узлов. Системе необходим сборщик мусора , выполняющийся в фоне в моменты простоя системы.
Для обеспечения целостности используется модель с фиксацией точек выполнения и возможностью отката изменений ( англ. rollback ) к точкам сохранения в случае возникновения проблем.
Раздел F2FS формируется из сегментов размером 2 МБ, сегменты группируются в секции, которые в свою очередь объединяются в зоны.
Поддерживается как традиционная для Unix схема разграничения доступа, так и такие расширенные механизмы, как и POSIX ACL .
Начиная с GRUB 2.04 (5 Июля 2019) можно использовать раздел с F2FS как загрузочный. Для ранних версий приходилось создавать отдельный загрузочный раздел на ext4 или других файловых системах, поддерживаемых GRUB.