论文部分内容阅读
随着互联网、移动互联网、物联网的快速发展,电子商务、社交网站、移动应用、网络教育、科研实验等各个领域产生的小文件呈几何级增长,其中最为典型的文本小文件具有数量大、数据量小、冗余性高等特点,海量文本小文件的存储为分布式存储系统带来了元数据管理难、磁盘I/O操作频繁、数据存取效率低等挑战。目前主流的分布式文件系统设计模式主要分为去中心化和中心化两类,以Ceph为代表的去中心化分布式文件系统多侧重于存储大文件而设计,虽然它的去中心化设计避免了中心节点的性能瓶颈问题,但是它的双倍写入设计和多副本备份策略为Ceph存储海量小文件带来了数据读取效率低和系统工作性能下降等问题。为此本文设计了一个小文件预处理框架和一个基于Redis数据库的动态缓存机制,在降低海量小文件存储开销的同时提高了小文件的读取速率。本文主要的创新性工作总结如下:1)针对海量小文件在Ceph中存储时带来的多I/O流问题,本文设计了一种针对海量文本小文件的预处理架构SFPS(Small File Preprocess System)。通过对文件进行两次聚类、自适应跳跃去重、相似文件合并等预处理操作,将杂乱的海量小文件整理为少量内容相关、少冗余数据的大文件进行存储以降低存储开销。2)针对海量小文件读取效率低的问题,本文引入了高效的内存数据库Redis作为缓存载体,通过将与目标文件高度关联的文件一起写入到缓存实现数据预读取功能,设计了一种基于多缓存影响因子的缓存替换优化算法BME(Based on Multiple Elements),算法综合考虑了缓存对象文件大小、访问时间间隔、访问次数等因素,用温度值对实际应用场景中缓存对象的缓存价值进行更合理的表示,给出一个三级缓存结构和动态缓存淘汰策略达到提高小文件读取速率的目的。3)给出了一个对合并后小文件进行原子性操作功能的模块,实现在不在合并后的大文件中生成空间碎片的前提下,对合并后的小文件进行增删改操作。本文综合考虑了Ceph分布式文件系统在实际应用场景中,海量小文件的存取时间、存储空间、带宽占用率和集群工作效能等因素,在实现降低海量小文件传输开销和存储开销的同时,提升了小文件的读取速率。实验结果表明本文设计的方案不仅可以有效减少数据写入时的磁盘I/O流,传输带宽及存储空间的占用,还提高了数据的读取速率。此外,本文设计的缓存替换优化算法和多级缓存动态淘汰策略有效提高了缓存命中率。