F2FS文件系统简介

背景

F2FS (Flash Friendly File System) 是专门为基于 NAND 的存储设备设计的新型开源 flash 文件系统。
特别针对 NAND 闪存存储介质做了友好设计。F2FS 于2012年12月进入 Linux 3.8 内核。目前,F2FS仅
持Linux操作系统

解决的问题

LFS(Long-strctured File System)

为管理磁盘上的大的连续的空间以便快速写入数据,将log切分成Segments,使用Segment Cleaner从重度碎片化的Segment中转移出有效的信息,然后该Segment清理干净后用于后续写入数据。

wander tree的滚雪球效应

LFS中,当文件的数据块快被更新的时候是写到log的末尾,该数据块的直接指针也因为数据位置的改变而更改,然后间接指针块也因为直接指针块的更新而更新。按照这种方式,上层的索引结构买入inode、inode map以及checkpoint block也会递归地更新。这就是所谓的wandering tree问题。为了提高性能,数据块更新的时候应该尽可能地消除或减少wandering tree的更新节点传播。

F2FS layout

暂见博客

各个结构简介

Blocks

F2FS文件系统的所有块大小都是4KB;

Segments

SuperBlock(SB)

Checkpoint(CP)

Segments Information Table(SLT)

Node Address Table(NAT)

Main Area

At runtime,F2FS manages six active logs inside “Main” area: Hot/Warm/Cold node
and Hot/Warm/Cold data:

参考文章