主旨

F2FS中的元数据有超级块、CP、SIT、NAT、SSA。这些元数据放在随机写区域。

这里说的元数据是整个F2FS文件系统的元数据,而不是data的元数据(各种node)。

超级块

每个文件系统都有自己的超级块,超级块中存放文件系统整体的关键元数据。

详见:F2FS中的超级块(Superblock)

CP

检查点(Checkpoint)用于保持数据一致性。如果系统突然宕机,再次上电时可以通过回滚(roll back)回到上一次CP点的状态。

详见:F2FS中的检查点(Checkpoint)

SIT

Segment Info Table 占据大小由Main Area中Segment数量决定。主要用于记录Main Area中Segment的分配信息,例如哪些Segment可用,Segment最后修改时间等信息。

SIT的作用是维护每一个segment的block的使用状态以及有效无效状态,目的是便于分配block以及垃圾回收。

详见:F2FS中的SIT

NAT

用于记录Node的地址,这是解决wandering tree的关键设计。

详见:F2FS中的NAT

SSA

用于反向索引。通过SIT和NAT可以正向索引到主区域中的block。在这里可以通过block找到所属的node。也就是可以实现通过物理地址找到逻辑地址。GC的时候很有用。

同时它也具有通过journal缓存sit或者nat的操作用于数据恢复的作用。

详见:F2FS中的SSA