F2FS
F2FS | |
---|---|
Розробник | Samsung Electronics[1], Motorola Mobility і Huawei |
Файлова система | Flash-Friendly File System |
Дата представлення | v3.8, 2012-12-20[2] (Linux) |
Структура | |
Структура директорій | багаторівнева хеш-таблиця |
Структура файлів | bitmap (вільний простір), таблиця |
Обмеження | |
Максимальний розмір файлу | 3.94 TB |
Максимум файлів | Залежить від розміру обсягу |
Максимальна довжина імені файлу | 512 байт[3] |
Максимальний розмір тому | 16 TB |
Можливості | |
Властивості | модифікація (mtime), модифікація атрибута (ctime), доступ (atime) |
Точність збереження дати | 1 ns |
Атрибути | POSIX, розширені атрибути |
Права доступу | POSIX, ACL |
Фонова компресія | LZO, LZ4 (від Linux 5.6),[4] zstd (від Linux 5.7)[5] |
Фонове кодування | Наявне |
Підтримується ОС | Linux і Android |
F2FS (англ. Flash-Friendly File System) — файлова система, орієнтованої на використання на флеш-пам'яті, в тому числі оптимально придатна для SSD-накопичувачів, карт пам'яті (eMMC/SD) і вбудованих в різні споживчі пристрої флеш-чипів. Сирцевий код F2FS був відкритий компанією Samsung у жовтні 2012[6][7], після чого доопрацьований інженерами Samsung з урахуванням зауважень співтовариства. Додатково розвивається пакет f2fs-tools, що містить набір утиліт для обслуговування розділів F2FS (mkfs.f2fs, fsck.f2fs).
F2FS розроблена спеціально з урахуванням специфіки флеш-пам'яті і враховує такі особливості, як незмінний час доступу і обмежений ресурс з числа перезапису даних. З особливостей F2FS можна виділити:
- зберігання структур даних організовано у формі логу, а при оновленні інформації використовується підхід Copy-on-Write, при якому при зміні дані не перезаписуються, а зберігаються в новому місці. При цьому, для зниження зносу флеша дані по можливості розподіляються рівномірно, зводячи до мінімуму повторний запис в одні і ті ж блоки. Для цього використовується алгоритм послідовного заповнення накопичувача, при якому нові дані завжди записуються тільки в області, наступні після вже записаних даних без оглядки на можливу фрагментацію. Після досягнення кінця розділу запис починається з початку, займаючи, в міру можливостей, звільнені блоки. Для виключення конфліктів з логікою контролера накопичувача, в F2FS враховується специфіка роботи прошарку FTL (Flash Translation Layer), що виконує на багатьох накопичувачах подібну задачу з рівномірного заповнення;
- для забезпечення цілісності використовується модель з фіксацією контрольних точок і можливістю відкоту змін (roll-back) у разі проблем.
- Для адаптації F2FS до різних видів флеша, які відрізняються своїми характеристиками в залежності від внутрішньої геометрії і схеми управління, передбачений широкий спектр параметрів для управління структурою розподілу даних в розділі і надана можливість вибору різних алгоритмів очищення і виділення блоків;
- розділ F2FS формується із сегментів розміром 2 Мб, сегменти групуються в секції, які в свою чергу об'єднуються в зони;
- у процесі розробки F2FS враховані проблеми раніше доступних спеціалізованих файлових систем на основі структур у формі логу і докладено всіх зусиль для усунення відомих недоліків, таких як велике споживання пам'яті і високі накладні витрати при виконанні операцій очищення;
- файлова система F2FS захищена від ефекту снігової лавини, що проявляється для Wandering-дерев: у ситуації, коли замість перезапису створюються нові елементи (змінюється номер блоку), для дерев в яких батьківський вузол посилається на дочірні вузли, зміна вузла приводить до перебудови всіх вищерозміщених вузлів;
- для прискорення виконання операцій в процесі роботи основні індекси з інформацією про розподіл даних зберігаються в оперативній пам'яті;
- для виконання операцій чищення реалізований спеціальний складальник сміття, виконуваний у фоні в моменти простою системи;
- підтримується традиційна для UNIX схема розмежування доступу і такі розширені механізми, як xattr[en] і POSIX ACL.
Підтримка файлової системи F2FS включена в ядро Linux починаючи з гілки 3.8.[8][7]
Див. також
- exFAT — файлова система для флеш-пам'яті і SSD-накопичувачів від Microsoft.
Примітки
- ↑ Lee C., Sim D., Hwang J. et al. F2FS: A New File System for Flash Storage // Proceedings of the 13th USENIX Conference on File and Storage Technologies (FAST ’15) — USENIX, 2015. — 397 p. — ISBN 978-1-931971-20-1
- ↑ Michael Larabel (22 грудня 2012). F2FS File-System Merged Into Linux 3.8 Kernel. Phoronix. Архів оригіналу за 30 червня 2016. Процитовано 25 травня 2016.
- ↑ Changman Lee (3 квітня 2013). f2fs: update f2fs.txt related with discard at mkfs. Архів оригіналу за 9 березня 2021. Процитовано 12 лютого 2020.
- ↑ Michael Larabel (23 грудня 2019). F2FS Data Compression Using LZO/LZ4 + Selective File Extension Handling To Land In 2020. Phoronix. Архів оригіналу за 25 січня 2021. Процитовано 7 квітня 2020.
- ↑ Michael Larabel (7 квітня 2020). F2FS Introduces Zstd Compression Support With The Linux 5.7 Kernel. Phoronix. Архів оригіналу за 29 листопада 2020. Процитовано 7 квітня 2020.
- ↑ This is a new patch set for the f2fs file system. Архів оригіналу за 18 січня 2013. Процитовано 21 грудня 2012.
- ↑ а б Samsung открыл код F2FS, новой файловой системы для Flash-накопителей [Архівовано 30 листопада 2012 у Wayback Machine.] // opennet.ru. — 05.10.2012.
- ↑ index : kernel/git/torvalds/linux.git[недоступне посилання]
Посилання
- Новая файловая система для Flash-накопителей от Samsung и сравнение производительности / lybin // Хабр. — 24.10.2012.