每日工作汇报表详细表 工作日志系统搭建( 二 )


修改文件系统的任一系统调用都通常划分为操纵磁盘数据结构的一系列低级操作 。如果这些低级操作还没有全部完成系统就意外宕机 , 就会损坏磁盘数据 。为了防止数据损坏 , Ext3文件系统必须确保每个系统调用以原子的方式进行处理 。原子操作是对磁盘数据结构的一组低级操作 , 这组低级操作对应一个单独的高级操作 。
出于效率的原因 , JBD 层对日志的处理采用分组的方法 , 即把属于几个原子操作处理的日志记录分组放在一个单独的事务中 。此外 , 与一个处理相关的所有日志记录都必须包含在同一个事务中 。一个事务的所有日志记录都存放在日志的连续块中 。JBD层把每个事务作为整体来处理 。例如 , 只有当包含在一个事务的日志记录中的所有数据提交给文件系统时才回收该事务所使用的块 。
ReiserFSReiserFS是一个非常优秀的文件系统 , 其开发者非常有魄力 , 整个文件系统完全是从头设计的 。目前 , ReiserFS可轻松管理上百G的文件系统 , 这在企业级应用中非常重要 。ReiserFS 是根据面向对象的思想设计的 , 由语义层(semantic layer)和存储层(storage layer)组成 。语义层主要是对对象命名空间的管理及对象接口的定义 , 以确定对象的功能 。存储层主要是对磁盘空间的管理 。语义层与存储层是通过键(key)联系的 。语义层通过对对象名进行解析生成键 , 存储层通过键找到对象在磁盘上存储空间 , 键值是全局唯一的 。
3.1 语义层主要接口
1)文件接口 每个文件拥有一个接口ID , 此ID标识一个方法集 , 此方法集包含访问ReiserFS 文件的所有接口 。
2)属性接口 ReiserFS实现了一种新接口 , 把文件的每一种属性当做一个文件 , 属性的值就是此文件的内容 , 以实现对文件属性的目录式访问 。
3)hash接口 目录是文件名到文件的映射表 , ReiserFS是通过B+树来实现这张映射表 。由于文件名是变长的 , 而且有时文件名会很长 , 所以文件名不适合作为键值 , 故引入了Hash函数来产生键值 。
4)安全接口 安全接口处理所有的安全性检查 , 通常是由文件接口触发的 。下面以读文件为例:文件接口的read 方法在读入文件数据之前会调用安全接口的read chech 方法来来进行安全性检查,而后者又会调用属性文件的read方法把文件属性读入以便检查 。
5)项(Item)接口 项接口主要是一些对项进行平衡处理的方法 , 包括:项的拆分 , 项的评估 , 项的覆写 , 项的追加 , 项的删除 , 插入及查找 。
6)键分配(key Assignment)接口 当把一个键分配给一个项时 , 键分配接口就会被触发 。每一种项都有一个与其对应的键分配方法 。
3.2 存储层
ReiserFS是以B+树来存储数据的,其结构如图:
图1:ReiserFS B+ 树
在B+树中的各个结点中有一个称为项(Item)的数据结构 。项是一个数据容器 , 一个项只属于一个结点 , 是结点管理空间的基本单位 。如图所示 , 一个项包括以下内容:
1)Item_body:项的数据域
2)Item_key: 项的键值
3)Item_offset:数据域的起点在结点中的偏移量
4)Item_length: 数据域的长度
5)Item_Plugin_id:项接口ID 。
图2: ReiserFS 项结构
ReiserFS设计了多种不同的项以存储不同的数据 , 主要有以下几种:


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: