Ext3

Ext3【Ext3】EXT3是第三代扩展档案系统(英语:Third extended filesystem,缩写为ext3),是一个日誌档案系统,常用于Linux作业系统 。它是很多Linux发行版的默认档案系统 。Stephen Tweedie在1999年2月的核心邮件列表中,最早显示了他使用扩展的ext2,该档案系统从2.4.15版本的核心开始,合併到核心主线中 。
基本介绍外文名:Third extended file system
简称:Ext3
介绍:一种日誌式档案系统
兼容:兼容ext2
Ext3(Third extended file system)名词释义如果在档案系统尚未shutdown前就关机如(停电)时,下次重开机后会造成档案系统的资料不一致,故这时必须做档案系统的重整工作,将不一致与错误的地方修复 。然而,此一重整的工作是相当耗时的,特别是容量大的档案系统,而且也不能百分之百保证所有的资料都不会流失 。为了克服此问题,使用所谓“日誌式档案系统 (Journal File System)”。此类档案系统最大的特色是,它会将整个磁碟的写入动作完整记录在磁碟的某个区域上,以便有需要时可以回溯追蹤 。由于资料的写入动作包含许多的细节,像是改变档案标头资料、搜寻磁碟可写入空间、一个个写入资料区段等等,每一个细节进行到

Ext3

文章插图
飞客数据恢复中心提供一半若被中断,就会造成档案系统的不一致,因而需要重整 。然而,在日誌式档案系统中,由于详细纪录了每个细节,故当在某个过程中被中断时,系统可以根据这些记录直接回溯并重整被中断的部分,而不必花时间去检查其他的部分,故重整的工作速度相当快,几乎不需要花时间 。优势虽然它的性能(速度)不如它的竞争对手,例如JFS2,ReiserFS和XFS,但它具有重要的优势,那就是它允许在适当的时候从流行的ext2档案系统升级,而无需备份和恢複数据;除此之外,它还具有比ReiserFS和XFS更低的的CPU使用率 。ext3档案系统增加的超越其前代的包括:· 日誌· 位目录跨越多个块提供基于树的目录索引· 线上系统增长如果没有这些,ext3档案系统也同时是个有效的ext2档案系统 。这样,经过良好测试的、成熟的档案系统工具来管理和修复ext2档案系统工具,可以无需大的变动,就套用于ext3档案系统 。ext2和ext3档案系统共享相同的工具集,带有fsck工具的e2fsprogs 。这种紧密的联繫也将两种档案系统之间进行转换(包括升级到ext3和降级为ext2)变得非常容易 。Linux实现的ext3档案系统,包括3个级别的日誌:日记(慢,但风险小)元数据和档案内容都在提交到主档案系统前写入 。这样将提高稳定性但性能上有所损失,因为所有的数据都要写入2次 。如果没有在/etc/fstab 中加上这个选项,修改中的档案遇上kernel panic或突然断电的时候就可能发生损毁的情况,当然,这还是得看软体是怎幺写入档案的 。顺序(中速,中等风险)顺序和写回类似,但在对应的元数据标记为提交前,强制写入档案内容 。这是很多Linux发行版默认的方式 。回写(快,但风险最大;在某种感觉上和ext2相当): 这边会写入日誌的只有 metadata 而已,档案的内容并不会跟着写入日誌里面 。这样的作法让整个效率变快了不少,不过也同样造成了档案写入时不按顺序的结果 。举例来说,档案在附加变大的同时发生了 crash 的情况,就可能造成下次挂载时档案后面就附加一堆垃圾数据的情况 。儘管ext3缺少一些当代档案系统的特点,像是动态的inode、树状的资料储放结构等等,都是被视作ext3的缺点之一,不过在这些特点之外,ext3在档案系统回复上面就有了很好的表现 。跟树状结构的档案系统相比,在ext3上面metadata是放在固定的位置,而且在写入的同时会重複写入的一些资料让ext2/3在面临资料损毁的情况下还有挽回的机会 。劣势功能当初ext3的设计目标就是提供对于ext2的高度兼容,很多磁碟上的结构和都和ext2很相似 。也因为这样,ext3缺乏很多最新设计中的功能,例如动态分配inode和可变块大小(frags或tails) 。ext3档案系统在被挂载为写入的时候,是不能进行fsck的 。ext3档案系统的倾倒作业在这个档案系统还是挂载中的时候执行可能会造成资料的损坏 。ext3不支持在其他档案系统上已经支持(例如:JFS2和ext4)的扩展 。磁碟碎片在档案系统级别上,没有线上的ext3磁碟碎片整理工具 。离线的ext2磁碟碎片整理工具e2defrag,可以用于ext3档案系统,但前提是在使用前要将档案系统转换回ext2 。但依赖于功能位在档案系统中打开,e2defrag可能会毁灭数据;目前仍然不知道如何处理新的ext3功能 。有一些用户使用的磁碟碎片整理工具,例如Shake和defrag,这些工具通过複製档案来实现新分配的档案不存在碎片 。但这只在档案系统相当空的情况下有效,并且该档案系统不经常出现碎片 。目前没有真正的用于ext3的磁碟碎片整理工具 。事实上,磁碟碎片整理完全是一种人们在单用户单进程环境下(如DOS/早期Windows)工作时养成的旧习 。在多任务环境下,磁碟碎片的出现根本是不可避免的,而且碎片化的速度非常之快 。作业系统的任务不是不负责任地给用户提供一个整理工具,而是应该在系统设计的时候消除碎片化对性能的伤害 。比如Linux的块设备操作都要经过一个I/O调度层,通过在调度层中使用带有电梯算法的调度策略来消除碎片对性能的影响 。另外,如果将来固态硬碟普及乃至取代传统硬碟,也会让磁碟碎片的概念成为历史 。反删除和ext2不同,ext3会在删除档案时把档案的节点(inode)中的块指标清除 。这样做可以在unclean载入档案系统后,重放日誌时,可以减少对档案系统的访问 。但也同样也增加了档案在反删除上面的困难 。用户唯一的补救是在硬碟中捞取数据,并且要知道档案的起始到结束的块指标 。儘管提供了比 ext2在删除档案上稍微高一些的安全性,却也无可避免的带来了不便之处 。压缩Ext3不支持透明压缩(Ext2以非官方补丁支持) 。大小限制ext3有一个相对较小的对于单个档案和整个档案系统的最大尺寸 。这些限制依赖于档案系统的块大小;下面的表格总结了这些限制:块尺寸最大档案尺寸最大档案系统尺寸1KiB16GiB2TiB2KiB256GiB8TiB4KiB2TiB16TiB8KiB16TiB32TiB8KiB块,只能用于允许8KiB页面的架构(例如alpha) 。日誌中没有校验和Ext3在写入日誌时,并不做校验和 。如果barrier=1没有作为载入参数(在档案/etc/fstab),并且如果硬体在无次序的写入快取,在崩溃时会严重损坏档案系统(该选项在大多数流行的Linux发行版中都没有被启用,所以大多数发行版的处境都很危险 。)考虑下面的情况:如果硬碟无序的做写入操作(因为现在的硬碟都使用快取机制以便摊销写入速度),那幺有可能出现在写入处理的提交块时,其他的相关的块已经被写入了 。如果电源掉电、核心panic出现在其他块写入前,那幺系统将必须重启 。在重启后,档案系统将按照正常方式重演日誌,并且重演“优胜者”(具有提交块的处理,包括上面无效的但被标记为有效的提交块的处理) 。于是,上面没有完成的磁碟写入将处理,但使用已经损坏的日誌数据 。档案系统在重演日誌的时候,将错误的使用已经损坏的数据覆盖正常数据