Linux下海量小文件存储及检索优化技术的研究与应用

Linux下海量小文件存储及检索优化技术的研究与应用

论文摘要

随着近年来社会进入了信息时代,企事业单位、政府机构对文件服务系统的要求越来越高,文件服务系统越来越向着专业化的方向发展,体现为网络存储、集群技术、企业文件系统以及网格技术的发展。提高高性能文件服务是文件服务系统发展的必然趋势,未来的文件服务系统必将可以提供面向通用文件以及不同特征文件的文件服务,这就要求文件服务系统必须在优化通用文件存储的同时优化不同特征文件的存储。目前文件服务系统无处不在,但几乎所有的文件服务系统均面向通用文件存储服务,并不考虑系统存储文件的类型、大小、安全级别等需求,因此服务也不能提供不同内容的优化机制。文件服务系统保证对所有类型文件的存储,但无法保证对所有类型的文件的服务效率相同。文件服务系统对于某些特征的文件的存储,其性能可能非常低下。以小文件存储为例,当文件服务系统中存放的文件都是小文件(一般为几k到几十k大小),而且数量众多时,文件服务系统的性能以及文件服务的效率会急剧下降,这是由于文件列表过于庞大,传统的文件系统在检索文件时采用的线性搜索方式带来的检索效率低下导致。可能采用文件服务系统来存储小文件的应用有文件缓存服务器、网络监视服务器、代理服务器等等。本文针对文件服务系统的文件服务机制,通过多层可堆叠文件系统/文件驱动机制,研究探索文件服务系统如何保证文件服务的通用性的同时提供更高的适用性,以及通过分析不同特征文件的特性,研究不同特征文件存取的特性以及相应的优化机制。在原来的文件系统算法中,例如cookies这样大量的小文件是存放在同一个目录下的,这样造成的问题是线性搜索的效率低下,作者设想通过在VFS和实际的FS之间插入一层,即本项目的小文件文件系统SFS,起到路径转换的作用。把原来在一个目录下的大量小文件按照一定的规则分别存储与不同的目录中,路径变换时,先搜寻得到目录,然后在此目录下再搜索所需要查找的文件,这样,由于分散在不同的目录中,同一目录下的小文件数目就大大减少了,搜索效率必定会有明显的提高。在实现上,采用可堆叠文件系统技术,利用了开发可堆叠文件系统的高级语言系统FiST。即用FIST得到一个可堆叠文件系统的模型,在这个基础上做了一些与文件操作相关的修改,是基于Linux下完成的。在设计完成之后,对SFS进行了测试,测试结果表明,SFS基本达到预期的小文件存储与检索优化的目的。文中的实现成果大致与设计的过程相符,但在与预期目标相比较还存在不足,对于一些偏向极端的情况会产生不理想的结果,此项研究仍有待改进。

论文目录

  • 摘要
  • Abstract
  • 第1章 绪论
  • 1.1 研究背景
  • 1.2 国内外现状
  • 1.3 研究意义
  • 1.4 研究内容
  • 1.5 论文组织
  • 第2章 LINUX 虚拟文件系统 VFS
  • 2.1 序言
  • 2.2 VFS 概述
  • 2.3 VFS 主要数据结构
  • block(内存超级块结构)'>2.3.1 superblock(内存超级块结构)
  • 2.3.2 inode(内存i 结点结构)
  • 2.3.3 dentry(内存目录项结构)
  • 2.3.4 file(内存文件结构)
  • systemtype(内存系统类型结构)'>2.3.5 filesystemtype(内存系统类型结构)
  • struct(进程任务表)与文件系统'>2.3.6 taskstruct(进程任务表)与文件系统
  • 2.4 文件系统注册
  • 2.5 文件系统挂载和卸载
  • 2.5.1 文件系统的挂载
  • 2.5.2 文件系统的卸载
  • 2.6 从路径名到目标节点
  • 2.7 文件的打开与关闭
  • 2.7.1 文件的打开
  • 2.7.2 文件的关闭
  • 2.8 文件的写与读
  • 2.8.1 文件的写入
  • 2.8.2 文件的读取
  • 第3章 可堆叠文件系统开发平台FIST
  • 3.1 序言
  • 3.2 可堆叠文件系统
  • 3.3 FIST 系统
  • 3.4 BASEFS模板和代码分析生成器(FISTGEN)
  • 3.5 FIST 语法
  • 3.6 FIST 所涉及的操作和数据结构
  • 3.7 利用 FIST 开发文件系统的过程
  • 第4章 SFS 分析与设计
  • 4.1 序言
  • 4.2 设计思路
  • 4.3 系统设计
  • 4.3.1 SFS 系统架构
  • 4.3.2 子目录分装算法
  • 4.3.3 处理流图
  • 4.3.4 Hash 算法
  • 4.3.5 主要数据结构
  • 第5章 SFS 系统实现
  • 5.1 功能架构
  • 5.2 FIST 代码分析
  • 5.2.1 创建空模版
  • 5.2.2 FiST 生成的代码结构
  • 5.2.3 外部接口
  • 5.3 功能实现
  • 5.3.1 实现过程描述
  • 5.3.2 子目录生成与检索
  • 5.3.3 最终文件的生成与检索
  • 5.3.4 文件删除
  • 5.4 系统测试
  • 5.4.1 可堆叠层性能开销测试
  • 5.4.2 创建SFS 文件测试
  • 5.4.3 SFS 检索文件测试
  • 第6章 结论与展望
  • 6.1 功能架构
  • 6.2 展望
  • 参考文献
  • 作者简介及在读期间取得的科研成果
  • 致谢
  • 相关论文文献

    标签:;  ;  ;  ;  

    Linux下海量小文件存储及检索优化技术的研究与应用
    下载Doc文档

    猜你喜欢