ext3文件系统的日志.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
EXT3文件系统的日志 1 基本概念和作用 1 2 日志的基本原理 1 3 日志的三种模式 2 4 日志的数据结构 4 4.1 概述 4 4.2 日志超级块 5 4.3 描述块 7 4.4 提交块 8 4.5 撤消块 8 5 实例分析 8 基本概念和作用 文件系统的一致性:块位图、inode位图、inode指向的数据块、实际的数据块,这些元素要保持一致。 向文件中写进新的内容,文件占用了更多的块,块位图更新了,但inode还没有来得及更新,导致一些块被标明已使用,但不知道是哪个文件占用的。 作用:日志文件系统在系统崩溃恢复方面更加有效率,只是简单的扫描日志文件并重做那些未完成的文件操作,就可以把文件系统恢复至一致的状态。 日志的基本原理 Ext3 文件系统本身不处理日志,而是利用日志块设备(Journaling Block Device)或叫JBD 的通用内核层。Ext3 与JDB 之间的交互本质上基于三个基本单元:日志记录,原子操作和事务。 日志记录本质上是文件系统将要发出的低级操作的描述。在某些日志文件系统中,日志记录只包括操作所修改的字节范围及字节在文件系统中的起始位置。然而,JDB 层使用的日志记录由低级操作所修改的整个缓冲区组成。这种方式可能浪费很多日志空间(例如,当低级操作仅仅改变位图的一个位时),但是,它还是相当快的,因为JBD 层直接对缓冲区和缓冲区首部进行操作。 修改文件系统的任一系统调用都通常划分为操纵磁盘数据结构的一系列低级操作。如果这些低级操作还没有全部完成系统就意外宕机,就会损坏磁盘数据。为了防止数据损坏,Ext3文件系统必须确保每个系统调用以原子的方式进行处理。原子操作是对磁盘数据结构的一组低级操作,这组低级操作对应一个单独的高级操作。 出于效率的原因,JBD 层对日志的处理采用分组的方法,即把属于几个原子操作处理的日志记录分组放在一个单独的事务中。此外,与一个处理相关的所有日志记录都必须包含在同一个事务中。一个事务的所有日志记录都存放在日志的连续块中。JBD层把每个事务作为整体来处理。例如,只有当包含在一个事务的日志记录中的所有数据提交给文件系统时才回收该事务所使用的块 如果事务数据已经写进日志之后,但在实际操作之前或期间发生系统错误,那么在下一次装载文件系统时,将会继续执行未作的操作。如果事务数据尚未写进日志就发生系统错误,则数据会丢失,但文件系统会继续保持一致性。 日志的三种模式 在Ext3文件系统中,日志由三种模式:完全、顺序、写回。 完全:将元数据和数据先写进日志,然后在写进相应的磁盘位置。既这种模式需要把数据写进磁盘两次。 顺序:先将数据写进磁盘,在把元数据写进日志、再把元数据写进磁盘。 写回:把数据写进磁盘、元数据先写进日志,再写进磁盘,但数据和元数据的写入没有固定的先后顺序。这种形式可以保证元数据的一致性,但不能保证数据的一致性。 一般情况下,性能最好的是写回,最差的是完全。但在异步随机写时,完全日志的性能会最好。因为写进日志时不需要随机写,而从日志写进文件时,随机写已经被调整成顺序写。 写回的性能比顺序稍好一点点。 日志的数据结构 概述 日志作为一个文件出现在文件系统中,默认inode为8,它存放在第一个块组中。 日志文件的第一个数据块是日志超级块,后面的块按事务分成组,一个事务包含一组块。 一个事务包含以下块:描述块、元数据块、提交块、撤消块。其中,若是FULL DATA日志模式,则元数据块包含元数据块和数据块。 日志超级块、描述块、提交块、撤消块包含相同的12字节头部信息 表1:日志文件数据块的头部数据结构 字节范围 含义 是否必须 0~3 标志(0xC03B3998) 是 4~7 块类型(见表2) 是 8~11 事务序列号 是 表2:日志数据块头部结构中的块类型 值 含义 1 描述块 2 提交块 3 第一版超级块 4 第二版超级块 5 撤消块 日志文件的数据全部是大端法表示(平台无关) 日志超级块 第一版日志默认操作是记录所有数据的变化,第二版日志仅记录元数据的变化,但通过特殊的mount选项可以强制第二版日志记录全部数据的变化。 表3:第1、2版日志超级块共有的数据结构 字节范围 含义 是否必须 0~11 标准头(见表1) 是 12~15 日志文件块大小 是 16~19 日志文件包含的总块数 是 20~23 日志的起始块 是 24~27 第一个事务的序列号 是 28~31 第一个事务的起始块 是 32~35 错误编号 否 版本1的超级块只有上表的36个字节 表4:第2版日志超级块特有的数据结构 字节范围 含义 是否必须 36~39 兼容特性 否 40~43 不兼容特性 否 44~47 只读兼容特性 否 48~63 日志的UUI

文档评论(0)

ktj823 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档