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


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+树来存储数据的,其结构如图:

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

文章插图
工作日志系统搭建 每日工作汇报表详细表

文章插图
工作日志系统搭建 每日工作汇报表详细表

文章插图
工作日志系统搭建 每日工作汇报表详细表

文章插图
工作日志系统搭建 每日工作汇报表详细表

文章插图
工作日志系统搭建 每日工作汇报表详细表

文章插图
工作日志系统搭建 每日工作汇报表详细表

文章插图
工作日志系统搭建 每日工作汇报表详细表

文章插图
工作日志系统搭建 每日工作汇报表详细表

文章插图
工作日志系统搭建 每日工作汇报表详细表

文章插图
工作日志系统搭建 每日工作汇报表详细表

文章插图
工作日志系统搭建 每日工作汇报表详细表

文章插图
工作日志系统搭建 每日工作汇报表详细表

文章插图
11:Bonnie++ 随机删除文件时的CPU利用率
图8至图11是Bonnie++对创建和删除文件的性能比较 , 文件数由50k增至400k 。从中可以看出:
1. 不管是创建文件 , 还是删除文件 , Ext3和ReiserFS的三种日志模式之间的性能差别可以忽略不计 。这主要是由于创建、删除文件都是对元数据的操作 , 而对元数据的操作三种模式之间本身就没有什么区别 。
2. 不管是创建文件 , 还是删除文件 , Ext3的性能都比较差;ReiserFS的性能是最好的 , 特别是文件数少于100k时 。这主要是由于Ext3是基于Ext2的 , 其目录项是线性组织的 , 而其他文件系统都是树形结构 。
3. 从CPU的利用率来看 , 除Ext3的利用率交给外 , 其他几种文件系统的利用率都很低 。
综上所述 , 我们可以得出以下结论:
1. 在小型系统 , 如:邮件系统或小规模的电子商务系统应用时 , ReiserFS和Ext3 的性能是比较好的 。但由于Ext3的目录项是线型的 , 而ReiserFS的目录项是树型的 , 故当目录下文件较多时 , ReiserFS的性能更优 。
2. 在对于上G的这种大文件做I/O时 , 各种文件系统间的性能差距很小 , 性能瓶颈往往在磁盘上 。