论文部分内容阅读
在现代计算机系统中,几个主要组成部分的速度存在明显差异,其中以CPU缓存、内存和硬盘最为明显。其中处理速度排序为CPU缓存>内存>硬盘。CPU缓存与内存之间,内存与硬盘之间的速度差异通常为指数级,而许多运算操作都是重复地针对某一小部分数据的,因此在各级存储器之间利用缓存技术(Cache)就可以大大提高处理速度。在操作系统层次,通常是在内存和硬盘之间使用Page Cache来提高对文件访问速度的。但随着大数据处理应用的爆炸式发展,传统cache系统已经不能满足对大数据读写的性能要求,而大数据的读写已经成为影响整个网络性能的至关重要的一环,并成为当今科研的焦点。对于依赖I/O性能的应用,典型的如数据库,一直等待新的技术出现以打破性能瓶颈。在此之前,身躯庞大的高端存储,动辄重达几吨。相比于存储里带的硬盘来说,价格贵得离谱,而存储的附加价值,在于I/O在大量硬盘之间的均衡分布,以及I/O链路的多路容灾,以及部分固件层面的优化和数据保护等。随着SSD等固态硬盘的出现,上述问题得到了缓解。SSD将硬盘存储从机械产品变成了电子产品,性能更好,功耗更小,延时更优。在这种情况下,Facebook在Linux上实现了硬盘级的Flashcache/Bcache来应对大数据存储的挑战,但这个cache系统只能为本地文件系统服务,在分布式存储的场景下对系统性能的提升无能为力。虽然在网络文件系统如NFS上也已经实现了硬盘cache系统,但此cache系统存在两个缺陷,1)它只能针对只读打开的文件。2)它只支持write-through cache而不支持write-back cache。这些限制严重制约着部署在NFS上的写密集型客户端的性能。本文提出针对网络文件系统的硬盘级write-back cache系统,并借助SSD的优良写特性来提高分布式应用的本机的写速率与所在网络的整体性能,比如大文件的备份服务和分布式MySQL数据库。