论文部分内容阅读
身处互联网时代,数据量呈现爆发式的增长,这使得存储系统成为制约计算机系统性能的关键因素之一。新型非易失性内存(Non-Volatile Memory,NVM)具有持久性、字节寻址和读写性能与DRAM相近的特性;远程直接内存访问(Remote Direct Memory Access,RDMA)具有高吞吐,低延迟的特性,结合新型存储和网络硬件是当前构建高性能存储系统的有效选择。但是在结合过程中,会在数据的一致性、非易失性内存管理效率及寿命等方面出现问题,直接使用现有的本地文件系统构建存储系统则难以发挥新型硬件的性能优势。因此本文以面向分布式非易失性内存的新型存储系统为研究和设计的目标。首先,本文从存储和网络两个方面介绍了分布式存储系统结构的发展,在分析了非易失性内存的数据不一致性和本地内存管理效率低的问题基础上,设计了面向分布式非易失性内存的新型存储系统结构。其次,非易失性内存的数据一致性依赖于CPU主动执行硬件指令刷写缓存实现,而这类指令开销极高,严重影响CPU的处理性能;RDMA在服务器端CPU不参与的情况下直接读写服务器端内存,因此服务器端CPU无法感知数据写入事件,不能及时执行数据刷写操作,一旦系统崩溃会造成数据不一致的问题。针对以上两个问题,本文提出了一种面向分布式非易失性内存文件系统的一致性机制。设计了基于操作日志的一致性保障策略,将每次操作的类型、元数据和数据的地址和大小等信息写入日志,客户端执行支持立即数的RDMA写操作,使服务器端CPU主动执行数据刷写操作,以维护系统的崩溃一致性。实现了服务器端的数据异步持久化,将服务器端的元数据、数据和日志的持久化使用异步线程执行,以提高系统的处理能力。在分布式持久性内存文件系统Octopus的基础上实现了原型系统,实验结果表明,一致性机制对性能的影响控制在1%以内。然后,针对使用RDMA代替传统网络协议时,系统软件I/O栈的开销将成为分布式存储系统性能瓶颈的问题。本文提出了本地非易失性内存管理机制,直接分配管理非易失性内存,不依赖本地文件系统,减少了I/O栈拷贝开销。设计了轻量级日志一致性保障策略,通过记录每一次操作的类型和地址等信息,并原子地修改日志尾指针,来保证系统的失败原子性。设计了混合内存的索引结构,将空闲链表存储于DRAM,提高了内存分配和释放的检索效率。设计了全局空间和线程空间相结合的管理策略,在线程空间内的操作不需要加锁,减少了线程间的资源竞争,提高了系统的可扩展性。设计了双链表磨损阈值策略,通过在线程空间内维护活跃链表和空闲链表,在内存块达到磨损阈值时,将其释放至全局空间,保证在内存占用率低的同时有效地降低了非易失性内存块的写磨损。在Glibc分配器的基础上实现了原型系统,实验结果表明,在单线程下,相比于Makalu和NVMalloc,该原型系统的分配性能分别提高了6.4%和101.5%。最后,本文实现了面向分布式非易失性内存的新型存储系统原型CCMSS,并使用Fio和TestDFSIO工具进行测试,实验结果表明,相比于NVFS、GlusterFS和Crail,CCMSS的写性能分别提高了4.1倍、2.7倍和6.7%。