一、F2FS文件系统简介
1、背景:
F2FS (Flash Friendly File System) 是专门为基于 NAND 的存储设备设计的新型开源 flash 文件系统。
特别针对NAND 闪存存储介质做了友好设计。F2FS 于2012年12月进入Linux 3.8 内核。目前,F2FS仅支
持Linux操作系统。
2、解决的问题:
(1)LFS(Log-strctured File System)
为管理磁盘上的大的连续的空间以便快速写入数据,将 log 切分成 Segments,使用 Segment Cleaner
从重度碎片化的 Segment 中转移出有效的信息,然后将该 Segment 清理干净用于后续写入数据。
(2)wandering tree 的滚雪球效应
在 LFS 中,当文件的数据块被更新的时候是写到 log 的末尾,该数据块的直接指针也因为数据位置的改
变而更改,然后间接指针块也因为直接指针块的更新而更新。按照这种方式,上层的索引结构,如inode、inode
map 以及 checkpoint block 也会递归地更新。这就是所谓的 wandering tree 问题。为了提高性能,数据块更新
的时候应该尽可能地消除或减少wandering tree 的更新节点传播。
二、F2FS layout:
F2FS 将整个卷切分成大量的 Segments,每个 Segment 的大小是固定的2 MB。连续的若干个Segments
构成 Section,连续的若干个