论文部分内容阅读
进入信息时代,计算机面对的数据量持续增长,并且伴随着人类对信息的逐渐依赖,大数据处理成为当前信息处理系统的重要需求。大数据处理对存储系统提出了更高的要求,主要集中在带宽、延迟和可靠性等方面。长期以来,由于内存的价格、容量、可持久性等因素限制,大容量的持久化数据往往需要存储到磁盘等介质中,从而形成了从cache、主存到磁盘、磁带的层次化存储系统。由于磁盘等持久性存储的性能受限,各种基于局部性原理的优化技术试图填补外存和内存之间的鸿沟。但以非易失内存为代表的新型存储器件的快速发展,使得持久性存储的性能得到极大提升,有望融合内存和外存的优点,提高存储系统的整体性能。另一方面,新型存储器件也给存储系统的设计带来了新的挑战。为了适配持久性内存并充分发挥其大容量、低延迟、持久性等特性,传统的系统软件需要作出相应调整。本文面向大数据处理和数据密集型应用,对基于持久性内存的存储系统进行研究,主要通过对操作系统中的内存管理系统和文件系统进行设计和优化,提高数据处理的效率。本文主要关注系统软件层次,涉及存储管理、文件系统、进程管理和系统可靠性等方面。本文的主要工作和创新如下:(1)提出了一种面向持久性内存的的文件索引机制传统文件系统中大量文件的组织一般是通过目录文件,并在此基础上进行优化。传统的索引方式及其优化,如B树和缓存哈希表等,要么面临批量访问和随机访问的折衷,要么因为只面向磁盘优化而无法应用到持久性内存场景中。更重要的是,基于目录文件的层次化组织方式,需要文件系统进行层次化解析,这带来了不可小觑的软件开销。本文针对传统索引方式的不足,面向持久性内存,提出通过页表组织和索引文件,并通过全路径名字解析,利用MMU硬件加速文件定位,从而降低文件访问延迟的机制。实验表明,使用该机制改进的文件系统,在延迟方面有66%到6.7倍左右的性能提升。(2)提出了一种面向持久性内存的存储管理方案由于持久性内存在性能和寿命等方面的缺陷,它将会长期与传统内存并存。在这种存储结构中,如何标识和管理持久性内存将是系统软件设计者的一个问题。本文利用Linux系统中内存管理系统管理持久性内存,首先为持久性内存分配固定的虚拟地址空间,该空间是从64位系统的地址空间中的用户空间保留的,这样一来用户访问文件只需要读取内核页表并修改权限,而无需逐页映射,从而提高了访问性能,并便于文件共享和后续的用户态直接访问的设计。为了实现该方案,需要配套地调整进程初始化和缺页异常处理等机制。除此之外,本文设计了新的memory zone用于管理持久性内存,对持久性内存进行单独分配和统计。(3)设计并实现了一种将传统文件系统移植到持久性内存的方案基于新的文件索引机制,本文设计了将传统文件系统移植到持久性内存的方案,即使用新型索引机制替代传统文件系统中的目录机制,同时改进内核虚拟文件系统中的解析过程和缓存过程。本文基于该方案实现了一个内核库——libptree。实验表明,传统文件系统可以通过该库进行方便的移植,例如ext2系统的移植成本仅为约200行内核代码。