首页 > 编程知识 正文

设计,背景素材

时间:2023-05-06 10:10:11 阅读:153692 作者:1628

一、F2FS文件系统简介

1、背景:

闪存文件系统(f2fs )是一种新的开源闪存文件系统,专门为基于NAND的存储设备而设计。

特别针对NAND闪存介质而设计。 F2FS于2012年12月进入Linux 3.8内核。 目前,F2FS只有分支

拥有Linux。

2、解决的问题:

(1) lfs (日志文件系统) ) )。

为了管理磁盘上较大的连续空间以快速写入数据,将log划分为Segments,并使用Segment Cleaner

从严重碎片的Segment中移动有效信息,并清理该Segment以用于后续写入数据。

)2)万德树的雪人效应

在LFS中,文件的数据块被更新时被写入log的末尾,该数据块的直接指针也根据数据位置的变更而被变更

将进行更改,间接指针块也会直接通过指针块的更新来更新。 这样,inode、inode等上层索引结构

贴图和检查点块也会递归更新。 这是所谓的wandering tree问题。 为了提高性能,将更新数据块

对于,应该尽可能消除或减少wandering tree的更新节点的传播。

二、F2FS layout:

F2FS将整个卷分割为大量的Segments,每个Segment的大小为固定的2 MB。 连续的几种Segments

构成Section,连续的几个Sections构成Zone。 默认情况下,一个Zone的较大大小为一个Section,一个为

Section的大小为Segment。 F2FS将整个卷分割为6个区域,除了超级块(Superblock,SB )外,每个区域都是F2FS

区域包含多个消息。 其结构如下图所示。

三、各个结构介绍(Block/Segments......):

请参阅kernel-4.9documentationfile systemsf2fs.txt

1、Blocks:F2FS文件系统所有块大小为4KB;

2、Segments :

连续的块被合并到Segments中,一个Segment的大小为512个块(2mb ),每个Segment一个

Segment Summary Block元数据结构。 Segment中每个块的所有者(该块所属的文件和块)

在文件中的偏移)。 Segment Summary主要用于标识执行Cleaning操作时需要传输哪些块中的数据

移动到新位置,移动后如何更新Blocks索引信息。 一个块可以完全容纳512个块

summary信息,每个blocks都有1 bit的额外空间用于其他目的。

3、超级块(sb ) :

itislocatedatthebeginningofthepartition,andthereexisttwocopiestoavoidfilesystemcrash.itcontainsbasicpartitionformationation

(Checkpoint,CP )存储在两个独立的数据结构(BP和CP )中。

F2FS的f2fs_super_block存储在设备的第二个块中,并且只包含称为超级块superblock(sb )的只读数据。

创建文件系统后,SB中的信息不会更改。 SB表示文件系统的大小、Segment的大小、Section的大小、

Zone的大小、分配给每个部分的“元数据”区域的空间量以及其他详细信息的量。

SB位于文件系统分区的开头,有两个备份以避免出现文件系统crash无法恢复的情况。 包括基本的分区

信息和默认的F2FS参数。

4、checkpoint(CP ) :

itcontainsfilesysteminformation,bitmaps for valid NAT/SIT sets,orphan inode lists,andsummaryentriesofcurrentactivesegments.

址以及其他可更改

信息存储在 f2fs_checkpoint 中,称为 Checkpoint (CP)。“Checkpoint”是一种元数据类型,允许使用两个位置

(two-location)方法实现 copy-on-write——有两个相邻的 Segments,每个都存储一个 Checkpoint,但仅有一个

是当前有效使用的。Checkpoint 包含一个版本号,因而当文件系统挂载的时候,两个Checkpoint 都被读取,但

是使用的是仅有较高的版本号的Checkpoint 作为有效使用的Checkpoint。

 

5、Segment Information Table (SIT):

It contains segment information such as valid block count and bitmap for the validity of all the blocks.

  SIT 为每个 Segment 存储74字节的信息且与 Segment Summaries 分离,因为它修改的频率更高。它主要

用来跟踪哪些数据块仍然是有效的(有效块个数以及数据块有效性 bitmap),因而当 Segment 中无有效块时,就

可以回收该 Segment,或者当该 Segment 中有效数据块很少的时候进行 clean 操作。

 

6、Node Address Table (NAT)

It contains summary entries which contains the owner information of all the data and node blocks stored in Main area.

 

7、Main Area

It contains file and directory data including their indices.

8、At runtime, F2FS manages six active logs inside "Main" area: Hot/Warm/Cold node
and Hot/Warm/Cold data:

- Hot nodecontains direct node blocks of directories.- Warm nodecontains direct node blocks except hot node blocks.- Cold nodecontains indirect node blocks- Hot datacontains dentry blocks- Warm datacontains data blocks except hot and cold data blocks- Cold datacontains multimedia data or migrated data blocks

 

作者:frank_zyp
您的支持是对博主最大的鼓励,感谢您的认真阅读。
本文无所谓版权,欢迎转载。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。