论文部分内容阅读
随着我们步入大数据时代,数据量、服务器量不断增长,对存储系统的增长趋向大容量、低成本和高性能。然而,若是单独介质的存储系统,机械硬盘、固态硬盘或是非易失随机存储器都有不同的限制,不能满足我们需要的存储系统。机械硬盘容量大,价格低,然而读写性能差,固态硬盘则刚好与机械硬盘相反,读写速度快,尤其是随机性能非常优秀,非易失性随机存储器的劣势在于价格过高。在尚未发现满足容量、价格和性能的存储介质前,混合存储能充分利用机械硬盘和固态硬盘的的特性组成高效的存储系统,既有超大的容量,又能在保持合理的成本的前提下,显著提高存储系统性能。开源框架Bcache就是一种混合存储技术的实现,利用高速固态硬盘给慢速的机械硬盘加速,平衡了系统的成本和需求。本文首先介绍了混合存储技术的研究现状及其发展历程,然后分析了混合存储中的关键技术,接下来深入研究了两种基于Linux的混合存储系统的算法Flashcache和Bcache。Flashcache算法是利用Linux设备映射机制实现的,Bcache算法将SSD和HDD虚拟成一个虚拟设备,提供给上层使用。从缓存映射策略、缓存替换策略、读写处理流程和清理缓存的垃圾回收机制这四个方面详细分析了两种算法。最后,对两种算法进行仿真实验,并且通过实验验证Bcache算法优于Flashcache算法。在分析了Bcache具体实现的基础上,针对Bcache算法中存在的一些缺陷,并行中的竞争与调度、回写速率调整、回写延迟过长、随机读性能的瓶颈等问题,本章提出了一种改进的Bcache算法来解决上述缺陷。针对系统的并行性问题,对B+树的锁机制做了优化,增加了基于线程池的优化队列,提高了线程并行程度并且减小了线程之间切换浪费的系统资源。对于回写中存在的问题,对回写速率的控制算法进行了优化,提出结合了指数加权平均算法和PID控制算法的改进的速率控制算法,同时提出一种新的方法解决了回写过程中IO延迟过大的问题。对于Bcache随机读性能的瓶颈,设计了一种高效且安全的页高速缓存机制并给出了实现,可以大幅提高随机读性能。最后用不同的文件块大小和不同的IO深度对系统性能进行全面的测试。从顺序性能,随机性能,函数延迟,命中率等方面分析改进算法的效果,并且验证我们对Bcache做的优化。