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

linux的ext3文件系统与ext2文件系统有何不同

发布网友 发布时间:2022-04-08 09:15

我来回答

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

    Linux下的Ext2文件系统,是 GNU/Linux 系统中标准的文件系统,其特点为存取文件的性能极好,对于中小型的文件更显示出优势,这主要得利于其簇快取层的优良设计。

      其单一文件大小与文件系统本身的容量上限与文件系统本身的簇大小有关,在一般常见的 x86 电脑系统中,簇最大为 4KB, 则单一文件大小上限为 2048GB, 而文件系统的容量上限为 16384GB。

      但由于目前核心 2.4 所能使用的单一分割区最大只有 2048GB,实际上能使用的文件系统容量最多也只有 2048GB。

      至于Ext3文件系统,它属于一种日志文件系统,是对ext2系统的扩展。它兼容ext2,并且从ext2转换成ext3并不复杂。

      用来支持ext3的包都被包含在LFS基本系统里面了,所以你不用再安装其他的程序。

      当编译内核的时候,确认你编译了ext3的支持。如果你想在根分区使用ext3系统,你就需要把 ext3支持编译到内核的内嵌支持。如果不是在根分区使用,编译成模块就可以了。

      编辑/etc/fstab。把每一个你想转换成ext3的分区的条目改成类似的内容:

      /dev/hdXX /mnt_point ext3 defaults 1 0

      在上面的一行中,将 /dev/hdXX 替换成分区,例如 /dev/hda2,把 /mnt_point 替换成你想挂载的位置,例如:/home。最后的 0 保证在启动的时候这个分区不会被chechfs脚本进行一致性检查。若想这个分区肯定可以被挂载然后又不太肯定内核支持ext3的话,可以把ext3换成auto。

      启动每一个你在 /etc/fstab中改为ext3的分区的日志,运行:

      tune2fs -j /dev/hdXX 重新挂载分区或者重起系统(如果你重新编译了内核)。

      而且Ext3文件系统也是在保有目前 ext2 的格式之下再加上日志功能。目前它离实用阶段还有一段距离,

      ext3是一种日志式文件系统。日志式文件系统的优越性在于:由于文件系统都有快取层参与运作,如不使用时必须将文件系统卸下,以便将快取层的资料写回磁盘中。因此每当系统要关机时,必须将其所有的文件系统全部shutdown后才能进行关机。

      如果在文件系统尚未shutdown前就关机 (如停电) 时,下次重开机后会造成文件系统的资料不一致,故这时必须做文件系统的重整工作,将不一致与错误的地方修复。然而,此一重整的工作是相当耗时的,特别是容量大的文件系统,而且也不能百分之百保证所有的资料都不会流失。

      为了克服此问题,使用所谓‘日志式文件系统 (Journal File System) ’。此类文件系统最大的特色是,它会将整个磁盘的写入动作完整记录在磁盘的某个区域上,以便有需要时可以回朔追踪。

      由于资料的写入动作包含许多的细节,像是改变文件标头资料、搜寻磁盘可写入空间、一个个写入资料区段等等,每一个细节进行到一半若被中断,就会造成文件系统的不一致,因而需要重整。

      然而,在日志式文件系统中,由于详细纪录了每个细节,故当在某个过程中被中断时,系统可以根据这些记录直接回朔并重整被中断的部分,而不必花时间去检查其他的部分,故重整的工作速度相当快,几乎不需要花时间。

      另外Linux中还有一种专门用于交换分区的swap文件系统,Linux使用整个分区来作为交换空间,而不象Windows使用交换文件。一般这个SWAP格式的交换分区是主内存的2倍。
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    网络宣传文案心碎,句句获赞! 关于朋友圈上万人点赞转发的说说 人生看的很透彻的经典句子 超现实超扎心的说说大全2019最新 心脏血管堵塞吃什么食物 投资理财有什么前景 pp理财什么情况 P2P理财行业的前景如何? 中国目前的财富管理现状是什么情况? 呼吸皮沙发寿命多久 “皮沙发的呼吸寿命” 呼吸皮沙发寿命多久 怎么才能让QQ透明 青虾怎么做好吃简单 感恩的手抄报完成品 以前在浏览器下载的视频可以直接存本地视频,现在为什么不可以了... 如何用EXCEL对数据设置百分比,来确定数据的分布范围? ipadmini2频繁闪退怎么办 iPadmini2玩王者荣耀闪退,都已经恢复出厂设置了,还是闪退,求大神帮助。 ipad mini 2软件闪退怎么办 ipadmini2玩云上城之歌为什么老是闪退,怎么解决呢? iPadmini2总是闪退怎样解决!? 振组词。。。 振的四字组词有哪些 振字怎么组词 振作的振怎么组词 “振”字能组成哪些词? 振动的振字怎么组词 振的组词。 用"振"怎么组词? 振有什么组词 振怎么组词。 怎么样可以用蒸馏水制取氧气 制氧机里需要用什么水? 制氧机蒸馏水好,还是超纯水好? 家用制氧机能加蒸溜水吗? 蒸馏水去氧操作 制氧机里的蒸馏水时间长了还可以用吗 制氧机加什么水 我想在家用制氧机里买个蒸馏水,屈臣氏的可以么?大家多提提意见吧 制氧机加什么水? 制氧机可以用屈臣氏蓝瓶蒸溜水 制氧机用水制氧怎么个原理,其流程是怎样的,制取的氧的纯度有多高? 制氧机加水的好还是不加水的好 我梦见地上很烫 出马仙弟子梦见家里地面冒金光很烫? 出马仙弟子梦见地里冒金光很烫? 关于linux下EXT3文件系统的日志是必须的吗 昨晚梦见太阳变得很大很热一直在追我?我在逃,是什么预兆? 如何进入广州市第六中学的信息学竞赛班 广州市第六中学信息学奥赛的网址 高一就被报送北大,这位广州学生有怎样的成长密码?