论文部分内容阅读
近年来,新兴的非易失性存储器(Non-Volatile Memory,简称NVM)具有可按字节寻址、掉电数据不丢失、读写性能接近DRAM等特点。NVM存储器的一个重要应用领域是搭建高效的分布式内存文件系统。如何扩展NVM存储容量并减少NVM的读写性能开销是一个关键问题。远程直接数据存取(Remote Direct Memory Access,简称RDMA)技术为解决这一关键问题提供了可能性。虽然现有的分布式内存文件系统利用RDMA网络和NVM存储器获得了更高的读写性能,但是仍存在冗余的数据复制和消息通信,无法充分发挥新兴硬件的优势。为此,本文提出一种基于NVM和RDMA的分布式内存文件系统Nebula,与现有的分布式内存文件系统相比,Nebula提升了数据访问性能和空间利用率。为此,本文的主要贡献如下:(1)客户端自治数据I/O机制。针对客户端对远程存储节点的数据访问请求,客户端利用元数据存储节点记录的物理地址,通过RDMA单侧读写直接访问文件数据块在数据存储节点中的物理内存,避免在数据存储节点的本地文件系统查询文件数据块索引的开销。为优化数据访问性能,Nebula利用索引预取和空间预分配将元数据保存在客户端缓存中,降低客户端请求元数据存储节点查询索引的通信频率,从而进一步提升数据访问性能。(2)多粒度内存空间管理机制。现有的分布式内存文件系统都将文件的数据块大小配置为固定值,无法在系统运行期间动态地调整文件数据块的大小,难以适应多变的文件增长模式,导致NVM空间利用率降低或元数据查询开销增加等问题。对此,Nebula提出多粒度内存空间管理机制,根据写入数据的大小动态地调整文件数据块的大小,从而在保证数据访问性能的前提下提升系统的空间利用率。(3)I/O数据负载均衡机制。各存储节点间数据分布不均衡将导致部分存储节点的访问负载过大,造成多客户端抢占有限的网卡资源,降低客户端的数据读写性能。对此,Nebula筛选出NVM存储空间使用率较高或热文件数据块较多的存储节点,将其中部分文件数据块迁移至其它存储节点,从而均衡各存储节点的空间使用率和访问负载,提升系统的整体性能。本文实现了Nebula原型系统并采用开源测试工具FIO对其读写性能进行测试。实验结果表明Nebula分布式内存文件系统的读取带宽和写入带宽最高可以分别达到5974MB/s和5993MB/s,达到RDMA网卡硬件所能提供的理论最高带宽的95%以上,与现有的分布式内存文件系统HDFS、Crail和Octopus相比,读写带宽提升了15%-200%。在空间利用率方面,Nebula分布式内存文件系统的空间利用率最高可达99%以上,远高于现有的分布式内存文件系统HDFS、Crail和Octopus的空间利用率。