首页 > 编程知识 正文

ext4与f2fs哪个好,hadoop基础教程

时间:2023-05-04 18:27:13 阅读:153709 作者:4375

整个磁盘区域由F2FS设计为六个区域:超级块、检查点、分段信息表、节点地址表、分段摘要阵列和主阵列前五个区域称为元数据区域,包含与F2FS直接相关的元信息,最后一个区域是存储文件数据的主要区域。

元数据区域的主要作用是保持F2FS的一致性,但频繁更改元数据区域中的数据会降低性能,缩短磁盘寿命。 因此,F2FS在每个区域创建专用的数据结构来管理这些信息,并根据需要将其写入磁盘,从而提高性能并减少频繁的IO。

这些作用分别是: Superblock:记录整个文件系统的分区信息,说明共有多少块,使用了多少块的最基本的同时也是最重要的信息。 Superblock的初始化是读取用mkfs.f2fs格式化的设备的原始信息。 Superblock存储器中的相应结构是struct f2fs_sb_info。

Checkpoint: CP存储当前使用的block、node等信息,并根据需要更新元数据区域信息。 确保F2FS的完整性,例如在系统突然重新启动时。 Checkpoint的存储器中的相应数据结构是struct curseg_info和struct f2fs_checkpoint。

段信息格式(sit ) :保存每个段的信息。 例如,这个segment使用了多少个block,以及使用了哪个block。 管理这些信息已经使用的block和未使用的block,并允许系统正确分配block。sit的存储器中的相应数据结构为struct f2fs_sm_info。

Nodeaddresstable(NAT ) :创建一个存储每个Node地址信息的表。 这些Node的具体数据存储在Main Area中,如果需要查找某个Node,则通过NAT确认Node的地址,读取该地址并将Node的信息返回给调用者。 NAT的存储器中的对应数据结构是struct f2fs_nm_info。

名为segmentsummaryArea(SSA ) :的区域主要存储jounal ) sit/NAT的临时修改信息和summary (summary )记录逻辑页与物理页关系的结构)。 提供临时存储日记账并基于物理页索引逻辑页的功能。 SSA区域在内存中没有专用的数据结构。

主区域:主区域用4KB大小的块填充,这些块可以被指派给文件的数据或文件的节点,并且是F2FS的主要数据存储区域。

blocks-segment-sectionzone 1,http://www.Sina.com/: f2fs文件系统中的所有块大小为4KB; )1) F2FS文件系统的所有块大小都为4KB,F2FS代码隐式将块大小链接到系统的页面大小,因此不能在更大页面的系统(如IA64或PowerPC )上运行F2FS

)2)块地址为32位,最大文件系统为2^ ) 3212 )字节,或16TB (完全大于当前NAND flash设备的大小)。

2、Blocks:连续的块集合在一起成为Segments,一个Segment大小为512个blocks(2MB ),每个Segment一个

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

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

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

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

2MB是最佳的Segment大小,太大不合适,太小会浪费用于存储summary信息的块空间

2.1 SegmentsSSA包含许多summary条目,其中包含存储在Main区域中的所有数据和节点块(node blocks )的所有者信息

3、http://www.Sina.com/(1)连续的Segments集合成Section。 Section可以具有任意数量的segments,但在满足2的幂的缺省情况下,Section的大小与segment(2^0segments )相同。

)一个Section对应log structuring的一个区域“region”,log通常在使用下一个Section之前,自始至终将当前Section填充到数据中;

)3)清洁器Cleaner一次处理一个Section;

)4)用F2FS

中,任意时刻都有6个“打开的”Sections用于将各种不同种类的数据(元数据、数据)分别写入到各个Sections中,实现数据分离。这样便允许文件内容(数据)与其索引信息(节点,node)分离,允许F2FS文件系统根据各种启发式方法将Sections划分成三类:即“hot”、“warm”、“cold”。例如,目录数据被当做hot来对待,使其与文件数据分离,存放到“hot”Section中。Cold数据是指那些很长时间内都不会改变的数据,因而装满Cold数据的Section就不需要执行Clean操作。对于hot节点(索引信息节点),一般更新很快,一段时间之后,装满 hot 节点的Section中的有效数据(alive data)就会很少,因而选择这样的Section进行Clean操作开销就很小(因为要转移的数据很少)。

4、Zone

(1) 连续的Sections集合成Zone。一个Zone可以包含任意整数个Sections。默认是一个Zone中包含一个Section;

(2) 设置Zone的唯一目的是尽可能将6个打开的Sections位于Flash设备的不同的子设备中。理论上,Flash设备通常是由一组相互完全独立的子设备构成,每个子设备都可单独地处理I/O请求,不同子设备可并行处理I/O请求;如果Zone的大小与子设备大小对齐,6个打开的Sections可并行写入,充分利用设备的特性;

(3) Zone构成了F2FS的“主要(main)”区域。

5、Meta Area

F2FS有一个“meta”区域,包含了各种不同的元数据(如之前提到的segment summary),这一部分不是采用标准的log-structured流水线方式管理,因而更多的工作留给了FTL去做。有三种方法管理对“meta”区域的写操作:

a) 第一,有少量的只读数据(超级块)从来都不是在文件系统创建的时候立即写入;

b) 第二,对Segment Summary Block 简单采取本地更新的方法。这种本地更新可能导致文件系统奔溃后数据块“修正”内容的不确定性,但对segment summary来说这都不是问题,segment summary blocks中的数据在使用前要进行有效性验证,如果有任何信息丢失的可能,它都将会在恢复进程中从其他source中恢复。

c) 第三种方法,分配需求空间两倍大小的空间,使得每个block都有两个不同的位置:一个Primary,一个Secondary,任意时刻,两个位置的block仅有一个是live状态。因而LFS的Copy-On-Write需求就可以通过向non-live位置的block写入更新后的block内容并且更新记录哪个位置的block是live状态的方式简单实现。对于元数据来说,这种技术是实现快照功能的主要实现方法。当创建一个Checkpoint的时候,F2FS执行少量的Journaling更新到最后的组(last group),这在一定程度上减轻了FTL的工作。

6、Superblock (SB): It is located at the beginning of the partition, and there exist two copiesto avoid file system crash. It contains basic partition information and somedefault parameters of f2fs

与其他文件系统不同,F2FS 清晰地区分出传统超级块中的只读部分(Superblock,SB)和可修改部分
(Checkpoint,CP),存放在两个单独的数据结构(BP 和 CP)中。
  F2FS 的 f2fs_super_block 存储在设备的第二个块中,仅包含只读数据,称为超级块 Superblock (SB) 。
一旦文件系统创建,SB 的信息就不会再改变,SB 描述了文件系统有多大、Segment 有多大、Section有多大、
Zone 有多大以及分配了多少空间给各个部分的“元数据”区域以及其他少量的细节信息。
  SB 位于文件系统分区的开头,有两个备份以避免文件系统 crash 无法恢复的情况发生。它包含基本的分区
信息和默认的 F2FS 参数。

7、Checkpoint (CP): It contains file system information, bitmaps for valid NAT/SIT sets, orphaninode lists, and summary entries of current active segments.

文件系统超级块中的可写信息,如空闲空间总量、下一个将要写入数据的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 项。

8、Segment Information Table (SIT): It contains segment information such as valid block count and bitmap for thevalidity of all the blocks.

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

9、Node Address Table (NAT): It contains summary entries which contains the owner information of all thedata and node blocks stored in Main area.它包含摘要条目,包含存储在主区域中的所有数据和节点块的所有者信息。

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

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

10、Main Area It contains file and directory data including their indices.

Log区域(数据区域)——Main Area
Main Area 包含文件和目录结构以及它们的索引数据。

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

and Hot/Warm/Cold data:

- Hot node contains direct node blocks of directories.- Warm node contains direct node blocks except hot node blocks.- Cold node contains indirect node blocks- Hot data contains dentry blocks- Warm data contains data blocks except hot and cold data blocks- Cold data contains multimedia data or migrated data blocks 12、元数据更新

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

13、地址对齐

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

14、F2FS文件系统元数据管理

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

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

元数据区域包含以下几种元数据:

(1) NAT —— Node Address Table

(2) SSA —— Segment Summary Area

(3) SB —— Superblock

(4) CP —— Checkpoint

(5) SIT —— Segment Information Table

F2FS同时维护6个日志,每个日志的存储单位是Sections,但是默认的情况下Section大小与segment大小是相同的2MB,所以你看到的代码就是以segment为单位进行日志处理的。逻辑结构Section的想法要结合SSD或Flash设备的特性来看,以Section为单位主要是考虑到一种"对齐机制",因为SSD的不同的Die是可以并行读写的,因而只要保证6个日志要写入的数据在6个不同的Die上,那么6个log就可以并行写入了,提升了处理速度。如果不是按这种“对齐”处理的话,就会出log之间的阻塞等待,增加了处理延时。

SSD的Die是不是最小的并行写入单元,我这边不是太确定了,很早之前看过的东西,不是它就是另外一个叫做Plane的单元。

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