问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Ext3的Ext3日志文件系统特点

发布网友 发布时间:2022-04-28 10:55

我来回答

2个回答

懂视网 时间:2022-04-08 13:36

Ext3介绍

对于ext3文件系统,磁盘空间划分一系列block groups,每个group有位图来跟踪inode和data块的分配和范围。其物理布局如下:

Superblock:位于group内第0个block,为了保证兼容,前1024B字节为0,SB从1024B偏移处存储,大小1024B。存储的是文件系统相关信息,在多个group中有备份(0,1,3,5,7,9,25,37,49,81等)。大部分信息在格式化时确定,并只读。可以用dumpe2fs命令查看;

Group Descriptor:位于group内第1个block,描述group信息,如inode bitmap,data blockbitmap等位置信息。group描述符在多个group中有备份。为了保证文件再写入的时候,尽量在一个连续的空间上,ext3文件系统将32768(0x8000)个block组成一个group,group通过Group Descriptor描述,所有的Group Descriptor存在Group Descriptor Table中,整个 desc table 总大小不能超过 1个 block 的大小,对于4096B的block,则最多1024B*4 / 32B = 128个group;

block bitmap:占用1个block,描述block的使用情况;用于group内block的分配;

inode bitmap:占用1个block,描述inode的使用情况;用于group内inode的分配;

inode table:占用多个block,存放inode信息。每个inode 128Byte ,inode是描述数据的数据,即文件系统元数据,是最重要的一部分,包含了文件的权限,拥有者,时间信息,数据存储在哪些 block 上等信息;inode通过多级索引表对block进行管理;inode分配后,会更新到inode bitmap中;

data block:占用多个block,存放数据信息。block分配后,会更新到inode的block索引表和block bitmap中;

 技术分享

 

JBD介绍

Ext3文件系统作为日志文件系统,其本身不处理日志,而是利用日志块设备(Journaling Block Device)或叫JBD 的通用内核层。JDB有3个核心概念:日志记录,原子操作和事务。

日志记录(journal):本质上是文件系统将要发出的低级操作的描述。在某些日志文件系统中,日志记录只包括操作所修改的字节范围及字节在文件系统中的起始位置。然而,JDB 层使用的日志记录由低级操作所修改的整个缓冲区组成。这种方式可能浪费很多日志空间(例如,当低级操作仅仅改变位图的一个位时),但是,它还是相当快的,因为JBD 层直接对缓冲区和缓冲区首部进行操作。

原子操作(handle):修改文件系统的任一系统调用都通常划分为操纵磁盘数据结构的一系列低级操作。如果这些低级操作还没有全部完成系统就意外宕机,就会损坏磁盘数据。为了防止数据损坏,Ext3文件系统必须确保每个系统调用以原子的方式进行处理。需要原子地完成的一组修改或写操作,叫做原子操作。

事务(transaction):将每个原子操作都写入到日志之中可能不那么高效。为了更高的性能,JBD 将一组原子操作打包为一个事务,并将事务一次写入日志。一个事务的所有日志记录都存放在日志的连续块中。JDB的操作单位是事务。

 

当事务正在提交时,它的生命周期经历了下面的一系列状态:

  1. 运行(running):事务当前在内存中,还可以接受新的原子操作。在一个系统中,仅有一个事务可以处于运行状态。
  2. 锁定(locked):事务不再接受新的原子操作,但现有原子操作们还没有完成。一旦所有原子操作都完成了,事务将进入下一个状态。
  3. 写入(flush):事务中的所有原子操作都完成了,事务正在写入日志。
  4. 提交(commit):事务已写入日志。事务会写一个提交块,指示事务log已写入日志。
  5. 完成(Finished):事务写到日志之后,它会留在那直到所有的块都被更新到磁盘上的实际位置。

Ext3日志模式

Ext3既可以只对元数据做日志,也可以同时对文件数据块做日志。

日志写入分3个阶段:

  • Journal Write:事务写入到日志空间;
  • Journal Commit:写入commit块;一个完整commit到日志区的事务以JFS_DESCRIPTOR_BLOCK开始,以JFS_COMMIT_BLOCK结束;
  • CheckPoint Write:事务写入到磁盘空间,并且其在日志的空间被回收。CheckPointing的触发场景较多,如文件系统缓存达到阈值,日志剩余空间达到阈值,定时器超时等等。
  •  技术分享

    同时,Ext3提供三种日志模式:

  • Writeback
  •     只有对文件系统元数据的改变才记入日志,也是最快的模式。数据块直接写入磁盘上的真实位置(fixed location),这种模式不保证日志和数据的写入顺序。回写模式是三种模式中一致性最差的,它只保证文件系统元数据的一致性,不保证数据的一致性。

  • Ordered
  •     只有文件系统元数据才写入日志。但是数据会保证在元数据写入到日志前写入真正存储位置。相比于writeback模式,这种模式提供了更高的一致性保护:数据和元数据都保证一致性。

  • Journal
  •     文件系统所有数据和元数据的改变都记入日志。这意味着所有数据块会被写2次,一次写入日志,然后再写入磁盘上的真实位置(fixed location)。和ordered一样,data模式提供了相同强度的一致性保护。

     

    日志模式对比分析:

  • 相较于无日志文件系统,日志模式在随机写场景下性能较高;
  • writeback和ordered在大文件顺序写场景下性能较高;
  • data将乱序转换为顺序,获取顺序的高性能;所以data在异步小文件随机写场景下性能较高;
  • data和ordered提供相同的一致性保护;
  • 有些场景下data性能较高,有些场景下ordered性能较高;
  • ordered模式下,fixed data write, journal inode write,journal commit write依次顺序写入。当日志存于独立的设备上时,这种限制会不必要的降低性能;
  • 大量临时文件的场景下,data和ordered的性能较低,因为定时器刷新元数据到日志时,相应的数据也必须写入,不必要的临时文件写入,增加IO负荷。
  •  

    Ext3日志视图

    日志是管理一个块设备的更新的内部记录(log)。更新首先会放到日志之中,然后再写到它们在磁盘上的真实位置。Ext3的日志(journal)可以看做一个文件,其inode固定为8,位于第一个group中,,其物理布局如下,包含超级块、描述块、提交块等。

     技术分享

    Ext3日志的详细内部视图如下,首先是日志的superblock,然后是每个事务描述块,最后是数据块。完整的事务分3部分:事务开始块,数据索引项,事务提交块。

     技术分享

     

    参考文献:

    Linux Kernel 2.6.32

    Analysis and Evolution of Journaling File Systems

    ext3 journaling filesystem (stephen c. tweedie)

    journal block device源代码分析

     --EOF--

     

    Ext3文件系统及JDB介绍

    标签:

    热心网友 时间:2022-04-08 10:44

    1、高可用性
    系统使用了ext3文件系统后,即使在非正常关机后,系统也不需要检查文件系统。宕机发生后,恢复ext3文件系统的时间只要数十秒钟。
    2、数据的完整性
    ext3文件系统能够极大地提高文件系统的完整性,避免了意外宕机对文件系统的破坏。在保证数据完整性方面,ext3文件系统有2种模式可供选择。其中之一就是“同时保持文件系统及数据的一致性”模式。采用这种方式,你永远不再会看到由于非正常关机而存储在磁盘上的垃圾文件。
    3、文件系统的速度
    尽管使用ext3文件系统时,有时在存储数据时可能要多次写数据,但是,从总体上看来,ext3比ext2的性能还要好一些。这是因为ext3的日志功能对磁盘的驱动器读写头进行了优化。所以,文件系统的读写性能较之Ext2文件系统并来说,性能并没有降低。
    4、数据转换
    由ext2文件系统转换成ext3文件系统非常容易,只要简单地键入两条命令即可完成整个转换过程,用户不用花时间备份、恢复、格式化分区等。用一个ext3文件系统提供的小工具tune2fs,它可以将ext2文件系统轻松转换为ext3日志文件系统。另外,ext3文件系统可以不经任何更改,而直接加载成为ext2文件系统。
    5、多种日志模式
    Ext3有多种日志模式,一种工作模式是对所有的文件数据及metadata(定义文件系统中数据的数据,即数据的数据)进行日志记录(data=journal模式);另一种工作模式则是只对metadata记录日志,而不对数据进行日志记录,也即所谓data=ordered或者data=writeback模式。系统管理人员可以根据系统的实际工作要求,在系统的工作速度与文件数据的一致性之间作出选择。

    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    ...乙肝表面抗体和乙肝核心抗体同显阳性,其余三项为阴性说明了什么... 确认劳动关系原告可以是多人吗 华为p7_l09的时间如何调整 什么地方卖毛线 如何订购毛线 顾景舟石瓢壶多少价 ...这个日期什么格式 Java 中怎么日期 转换成这样子呢如:2013-06-27... java中用正则表达式匹配并输出的时间怎样拿到别的方法里进行计算。例... Java程序 题目:星期计算器的实现。实现要点:输入一个2013-05-01后的日... 半夜敷面膜这些星座就是这样被吓死的 这是什么刀﹖刀片怎么换﹖ 公租房申请下来,通知去交款,是不是交款同时就分房子? 哪些地方可以养殖海参?最好的是哪? 公租房里公家都有什么配置 公租房甲方应给乙方提供什么的房屋标准? 北京公租房如果是临时用电达到交房标准吗 北京公租房里有家具吗 北辛安公租房什么情况交房? 北京公租房有什么配套设施 大地Ghostwin7sp1装机版贺岁2011如何重装 公租房的交房标准是什么 普通话考等级划分 普通话考试一乙是多少分? 《普通话水平测试等级标准》讲普通话水平划分为几级几等 2020全国普通话考试多少分及格?普通话等级如何划分? 普通话考试,哪一个级别是最高的?哪一个级别是最好的? 普通话考试等级的划分 普通话级别分为哪些,从高到低是怎么排列的? 普通话分为几个等级? 普通话成绩等级划分是什么? 想要个项目管理和工作日志管理在一起的管理系统,有好的推荐没?谢谢 基于多级文件目录的文件管理系统设计的设计原理是什么?有着什么样的... 请问windows的日志文件在哪个文件夹? 有谁用过KASS文件管理系统 七夕节该送什么样的祝福语给女朋友呀 七夕情人节怎么发个一个女生祝福语,我们是刚认识还没有确定恋爱关系那种... 情人节到了,有哪些祝福的短信可以发给女朋友? 七夕送女朋友的祝福语? 七夕情人节送女朋友什么好呢?语音祝福 征求七夕零点祝福短信!给女朋友的! 求:送给暗恋的女孩七夕节祝福短信 马上七夕情人节了,想对老婆发条短信该怎么写? 七夕祝福语,给女朋友的 七夕情人节送给女朋友祝福语 情人节对心仪的女生说的祝福语? 自考行政管理专业属于经济类还是工学类 自考本科专业:行政管理学(不是行政管理)。在公招中属于什么专业类别? 我想自考本科“行政管理学专业”,我是读师范综合文科教育毕业的学生,算是*类专业毕业生吗?.. 自考行政管理学属于工程类吗 行政管理学属于哪个?自考的话,只有初中毕业证,能考什么?