F2FS文件系统架构与原理分析(五)——元数据组织及管理

来源:互联网 发布:photoshop7.0软件下载 编辑:程序博客网 时间:2024/05/22 01:28

1. 元数据区域

元数据区域包含以下几种元数据(参见博文:F2FS文件系统架构与原理分析(二)——磁盘布局 ):

(1)    NAT —— Node Address Table

(2)    SSA —— Segment Summary Area

(3)    SB —— Superblock

(4)    CP —— Checkpoint

(5)    SIT —— Segment Information Table

2. Superblock (SB)

与其他文件系统不同,F2FS 清晰地区分出传统超级块中的只读部分(SuperblockSB)和可修改部分(CheckpointCP),存放在两个单独的数据结构(BP  CP)中。

F2FS  f2fs_super_block 存储在设备的第二个块中,仅包含只读数据,称为超级块 Superblock (SB) 。一旦文件系统创建,SB 的信息就不会再改变,SB 描述了文件系统有多大、Segment 有多大、Section有多大、Zone 有多大以及分配了多少空间给各个部分的“元数据”区域以及其他少量的细节信息。

SB 位于文件系统分区的开头,有两个备份以避免文件系统 crash 无法恢复的情况发生。它包含基本的分区信息和默认的 F2FS 参数。

3. Checkpoint (CP)

传统文件系统超级块中的可写信息,如空闲空间总量、下一个将要写入数据的Segment的地址以及其他可更改信息存储在 f2fs_checkpoint 中,称为 Checkpoint (CP)。“Checkpoint”是一种元数据类型,允许使用两个位置(two-location)方法实现 copy-on-write——有两个相邻的 Segments,每个都存储一个 Checkpoint,但仅有一个是当前有效使用的。Checkpoint 包含一个版本号,因而当文件系统挂载的时候,两个Checkpoint 都被读取,但是使用的是仅有较高的版本号的Checkpoint 作为有效使用的Checkpoint

Checkpoint 包含文件系统信息,有效NAT/SIT集的位图(bitmaps)Orphan inodes 的列表,以及当前有效 Segments  Summary 项。

4. Segment Information Table (SIT)

SIT 为每个 Segment 存储74字节的信息且与 Segment Summaries 分离,因为它修改的频率更高。它主要用来跟踪哪些数据块仍然是有效的(有效块个数以及数据块有效性 bitmap),因而当 Segment 中无有效块时,就可以回收该 Segment,或者当该 Segment 中有效数据块很少的时候进行 clean 操作。

5. Node Address Table (NAT)

存储在 Main 区域的所有节点(inode 和 索引节点)数据块的块地址表。

所有的节点(node)块由 NAT 映射,这意味着每个 node 的位置由 NAT 表来转换。考虑 wandering tree 问题,F2FS 使用这种节点映射索引方式可以切断由于叶子节点修改操作引起的节点更新传播问题,如下图两个所示,其中图(1)是传统 LFS 文件系统 wandering tree  结构叶子节点修改所引起的所有需要修改的节点(红勾表示);图(2)是传统 F2FS 文件系统采用 NAT 数据结构后叶子节点修改所引起的所有需要修改的节点(红勾表示)

(1)   传统 LFS 文件系统 wandering tree 滚雪球效应

(2)   F2FS 文件系统引入NAT消除 wandering tree 滚雪球效应

 

6. Segment Summary Area (SSA)

SSA 中包含许多 summary 项, summary 项中包含存储在 Main 区域的所有数据和节点块( node blocks)的所有者信息。

7. 元数据更新

当需要对 NAT  SIT 更新的时候,F2FS 并不是立即执行更新,而是将其存储(缓存)在内存中,直到下一个 Checkpoint 写入的时候才会真正更新NAT  SIT。如果更新相对很少,那这些更新就不会写到它们最终的位置,而是以日志的方式记录到Segment Summary Blocks 中的一些备用空间中,通常与Segment Summary Blocks 的更新同时写入。如果Segment Summary Blocks 需要更新的总量足够少,甚至没有写请求,SITNAT  SSA都与Checkpoint 一起以日志方式记录更新。因而当 F2FS 留下一些工作给 FTL 处理的时候,F2FS 试图友好地并且仅执行它不得不做的随机块更新。当 F2FS 需要做随机块更新的时候,它同时执行多个随机块的更新,这样可以减轻 FTL 的负担。

8. Log区域(数据区域)——Main Area

Main Area 包含文件和目录结构以及它们的索引数据。

9. 地址对齐

为了避免文件系统和 flash 存储之间不对齐,F2FS 使 CP 的起始块地址与 Segment 大小对齐。同时,F2FS 使 Main Area 的起始块地址与 Zone 的大小对齐,这通过在 SSA 中预留一些 Segments 来实现对齐。

10. F2FS文件系统元数据管理

F2FS 采用 Checkpoint 机制维护文件系统的一致性。在挂载文件系统的时候,F2FS 首先尝试通过扫描 CP 区域找到最新的有效的 Checkpoint。为减少扫描时间, CP仅使用两个备份,其中一个备份中包含的是最新的有效数据。这种两个备份,且仅有一个包含最新版本有效数据的技术也称为 shadow copy 机制。除了 CPNAT  SIT 也采用 shadow copy 机制保证数据一致性。

为保持文件系统一致性,每个 CP 指向有效的 NAT  SIT 备份,如下图所示:

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 长春住房公积金 四川省住房城乡建设厅首页 新乡市住房公积金管理中心 住房贷款利率计算器 邵阳市住房公积金管理中心 邵阳住房公积金 商业住房贷款利率 陕西省住房公积金管理中心 合肥住房公积金管理中心 长春市住房公积金 山东省住房城乡建设厅 2019各银行住房商贷利率一览表 住房公积金查询入口 陕西省住房和城乡建设厅网 沧州住房公积金个人查询入口 包头市住房公积金管理中心 佛山住房公积金中心 个人住房商业性贷款 住房公积金装修贷款能贷多少 邵阳住房公积金管理中心 工资4000住房公积金一般交多少 西安住房保障管理局网站 佛山住房公积金 住房城乡建设部 河南省住房和城乡建设厅网 北京住房公积金 广州住房公积金管理中心 西安住房公积金 成都住房公积金管理中心 宜春住房公积金 安徽省住房和城乡建设厅 四川城乡住房建设厅 陕西省住房公积金中心 深圳市住房和建设局 南宁市住房保障和房产管理局 住房公积金是什么 十堰住房公积金查询 广安住房公积金查询 枣庄住房公积金管理中心 南宁市住房公积金查询 陕西住房公积金查询网