论文部分内容阅读
随着互联网和大数据的快速发展,爆发式增长的数据给计算机系统带来了巨大的压力。新型非易失性存储器(Non-Volatile Memory,NVM)具有持久性、字节寻址和接近DRAM的读写性能等特性,是解决计算机系统“存储墙”问题的有效手段。但NVM存储设备与HDD和基于Flash的SSD等存在很大的差异,现有的存储系统I/O栈缺乏相应的优化机制,直接采用现有文件系统、驱动和应用软件难以发挥NVM存储设备的优势,因此本文以基于NVM的高并发存储系统为研究和设计目的。首先分析NVM存储设备对存储系统带来的挑战,给出了多态协作高并发NVM存储系统的结构,设计了三个主要的功能模块,分别从文件系统层、驱动层和应用层优化现有的NVM存储系统。在文件系统层,针对现有用户态与内核态NVM文件系统各自存在的局限,本文设计了多态协作的NVM文件系统。首先给出了其结构,提出了多态融合的文件系统接口,能根据I/O请求的特性,利用用户态和内核态接口各自的优势,分配合适的执行方法,优化文件系统性能;设计了多层协作的文件操作方式,通过对文件系统操作进行分类与分解,能利用用户态与内核态模块之间的协作,在提高访问NVM存储设备性能的同时,保证文件系统的完整性和安全性。并基于Intel的开源用户态文件系统pmemfile和Intel的开源NVM存储设备模拟器PMEM,实现了多态协作NVM文件系统的原型MLCFS,使用Fio和pjdfstest作为测试工具,对I/O性能和文件系统接口访问效率进行了测试与分析,实验结果表明MLCFS相比NOVA与pmemfile最高能提高43.2%和67.3%的IOPS,减少9.5%和9.1%的I/O时间开销。在驱动层,首先分析了现有基于文件系统的锁机制对NVM存储系统性能的影响,设计了基于冲突检测的高吞吐NVM存储引擎。提出了基于二维链表的访问请求管理方法,将存储系统访问请求的管理嵌入到存储设备中,利用NVM存储设备的计算能力,分析读写请求的差异并区分管理访问请求,减少访问请求之间的冲突;设计了基于冲突检测的访问请求调度算法,管理NVM存储设备中的共享访问请求,使用基于冲突检测的方法代替基于文件系统的现有锁机制,并给出了新访问请求提交和已有访问请求释放流程,由此提高操作系统执行访问请求的并发度,缓解存储设备接口的瓶颈问题。同时基于Intel的开源NVM存储设备模拟器PMEM,实现了基于冲突检测的高吞吐NVM存储引擎的原型系统HTPM,使用Filebench的多种负载和Fio,对吞吐率和I/O性能进行了测试,实验结果表明HTPM相比PMEM最大能提高31.9%的IOPS值和21.4%的I/O性能。在应用层,针对现有应用在NVM存储系统中冗长的软件栈开销和写入放大等问题,本文设计了面向NVM的多层协作复制命令解析器。提出了基于NVM的数据自主复制策略,利用设备嵌入式计算力,在设备内完成数据的复制,避免了数据的多次拷贝开销;设计了源文件和目标地址获取策略,在文件系统层直接获取源和目标文件的地址,越过页缓存直接交给NVM存储设备,缩短I/O栈,提高了命令的执行速度,并减少了NVM存储设备的写入放大问题。并基于Intel的开源NVM存储设备模拟器PMEM,实现了面向NVM的多层协作复制命令解析器原型系统NVCP,使用time等方式测试命令的执行效率,实验结果表明,NVCP相对于CP命令最大能提高47%执行速度。最后在pmemfile和PMEM的基础上,实现了多态协作高并发NVM存储系统原型MLCSS,并使用Filebench和time等工具进行了测试,实验结果表明,相对于基于NOVA的存储系统和基于EXT4的存储系统,MLCSS最大能够提升102.3%和258.8%的吞吐率,减少上层应用40.5%和77.4%的执行时间开销。