f2fs 采用顺序写,因此具有适合闪存介质特性的特点。
在 LFS 中,修改一个文件的数据块会导致其位置发生变化,即追加到尾部。这就导致指向该数据块的直接指针需要修改。然而修改其指针会导致指向直接指针的间接指针也需要修改。因此 inode、inode map 和 cp block 都需要递归修改。
在F2FS中,增加了一个随机写的元数据区域。其中,引入 NAT 表记录 node 位置,切断递归更新。
F2FS中存在6个log,即{Hot, Warm, Cold}*{Node, Data}。
LFS中只有一个全局的大log,而F2FS中通过将空间划分为6个log实现了冷热数据分离。冷热数据分离就是为了减少GC开销。