基于非易失内存设备的数据去冗余系统技术方案

技术编号:15540516 阅读:205 留言:0更新日期:2017-06-05 10:21
本发明专利技术涉及一种基于非易失内存设备的数据去冗余系统,包括基于NVRAM的新型内核文件系统模块,为一制定文件系统,位于内核的文件系统层次;用户空间文件系统模块,为一个位于用户空间中的特殊进程,可以向其他进程提供与NVRAM进行交互的中间层或者虚拟层;数据去冗余方法及其系统整合方式模块,提供具体的去冗余逻辑给所述的用户空间文件系统。NVRAM的新型内核文件系统模块用于改进传统文件系统对于NVRAM存储介质的性能次优性;用户空间文件系统用于以一种较低代价并友好的方式来接入去冗余功能;数据去冗余方法及其系统整合方式模块将具体的去冗余逻辑加入到了FUSE中,在CPU+NVRAM架构上产生了真正的数据去冗余效果。

Data redundancy method and system based on nonvolatile memory device

The invention relates to a nonvolatile memory device based on data redundancy system, including a new kernel module based on NVRAM file system, a file system is established, a file system hierarchy in the core; user space file system module, a special process in user space, can provide virtual or intermediate layer NVRAM to interact with other processes; module of data deduplication method and system integration, to provide specific redundancy logic to the user space file system. A new kernel NVRAM file system module is used to improve the traditional file system for the performance of suboptimality of the NVRAM storage medium; user space file system for a low cost and friendly way to access to the redundant function; data redundancy method and system integration module will be specific to the redundancy logic is added to the FUSE, in CPU+NVRAM architecture produces real data redundancy effect.

【技术实现步骤摘要】
基于非易失内存设备的数据去冗余方法及系统
本专利技术涉及计算机
,尤其涉及一种基于非易失内存设备的数据去冗余方法及系统。
技术介绍
数据去冗余的技术主要是指:在计算机的某一个存储层次,例如是在内存或者外存,通过消除具备相同数据的内存页面或者数据块,从而达到节省存储设备的空间及改善写操作性能下降现象的一种技术。首先内存去冗余技术。在这里去冗余的对象数据存在于操作系统的内存子系统当中。考虑到当前常见的DRAM(DynamicRandomAccessMemory,动态随机访问内存设备)内存设备是挥发的,因此,一般而言,处于内存中的数据是不可靠的,不具备持久性。并且,由于DRAM更加接近CPU,所以在此层次执行去冗余的操作,会较为容易地产生CPU性能敏感型的操作,这些操作容易对应用程序产生干扰。所以,在内存中想要实现去冗余的功能,一般采用离线(off-line)的方式进行。也即,当应用程序往内存中产生了新的内存页面数据后,由独立的系统模块或者例程对其进行检测,查看当前是否系统中存在一个已经包含了相同的内存页面,如果有,则保存相应的元数据信息,真实的数据不必写入一个新的内存页面,因为要写的数据在当前系统中已经存在;如果没有,则执行该内存写入操作。由于该独立模块或例程与应用程序无关,在多核环境下,通过将去冗余的逻辑与应用程序的逻辑分布在不同的CPU核心上,会具有较好的内存去冗余性能。值得注意的是,在传统的存储体系结构下,由于DRAM保存的一般为进程运行时的动态数据,例如:堆栈、打开的文件表信息等信息,因此,一般位于内存去冗余的技术只针对该类数据进行去冗余,而对于内存中的文件系统的高速页面缓存I/O数据则不予考虑,这是因为在外存中会存在另一数据副本与其对应,其属于外存去冗余技术的范围。内存去冗余代表技术最为出名的为KSM(KernelSamepageMerging,Linux相同页面合并机制)。该技术目前运行于基于Linux内核(大于或者等于版本号2.6.32)的操作系统之中,主要去冗余逻辑和程序运行于内核级,并且在扫描潜在的冗余内存页面时,为了减小扫描的开销,需要借助于高级语义的帮助,例如:一个应用程序在分配内存时,发觉它即将写入的内存数据可能会在系统中产生冗余,然后执行系统调用madvise(),以此来通知内核的KSM模块,告知后者将此被新写入数据的内存页面作为去冗余的扫描的候选对象,以此来达到缩小工作集大小而减轻系统开销的目的。从上述过程可以看出两点:(1)该去除冗余的过程并不需要应用程序进行过多的参与(仅仅需要执行系统调用madvise以通知内核),因此,该技术属于离线去冗余技术的范畴;(2)去冗余的对象仅仅针对应用进程分配的内存相关,与其将读写的文件或者IO数据没有直接联系。宋莹等人于2014年提出了一种基于KSM改进的一种低开销的高效内存去冗余方法及系统,申请号为201410231580,从该申请文档中可以开出,该方法及系统主要特征和优点是降低了KSM的运行时开销,其所面对的去冗余对象以及去冗余所在的系统层次皆和KSM相同。外存去冗余技术:和基于DRAM内存相比,在外存设备中存放的数据,例如在硬盘设备(HDD,HardDiskDrive)及固态盘设备(SSD,SolidStateDrive)存放的文件对象,具备稳定可靠的特点。并且,由于DMA(DirectMemoryAccess,直接内存访问)存在,可以使得一些CPU敏感性的操作被避免。因此,与内存去冗余技术不同,外存去冗余技术一般采用在线(in-line)的方式执行去除冗余的操作,也即:当应用程序在一块设备之上执行写入操作时,去冗余功能模块可以接管之后的操作。它首先对要进行写入的物理数据进行判定,查看是否外存设备中已经存在一物理数据与其相同,如果有,则直接使用该存在的数据用其代替此次写入的冗余数据,并更新相应的元数据信息以此表明此时发生了物理数据共享的情况。之后,有大于1个的元数据信息指向该共享的数据信息。如果没有,则针对该物理数据执行独立的外存写入操作,并产生相关新的元数据信息。值得注意的是,在传统的存储体系结构下,外存保存的是进程写入的I/O数据,例如文件。因此,一般位于外存去冗余的技术只针对该类静态数据进行去冗余,而对于内存中的进程所产生的动态数据不予考虑,后者属于内存去冗余技术的范畴。并且,由于目前操作系统在一般环境下所产生的写操作为同步写性质,其所带来的存储开销要远远大于去冗余模块检测冗余数据所产生的开销,因此,在此离线方式下进行的外存去冗余过程所产生的开销仅仅占据整个写入开销的一小部分。外存去冗余代表技术最为出名的为Dmdedup,它位于Linux的块层(Block-level),处于文件系统之下,因此,它是对不同的应用程序以及文件系统兼容的。其具体流程为:当一个应用程序的写入请求到达了块层之后,Dmdedup随即会对之后的块级写请求进行去冗余处理。首先,先判断即将写入的数据是否在当前的设备上存在一相同的数据块副本:如果是,则共享该原有数据块的数据,此次写入操作可以避免,但是要更新相应的元数据信息,以表明此处发生了数据共享;如果否,则执行此次写入操作,并产生相应的元数据来表明此次新的数据写入。除此之外,Dmdedup可以让去冗余所产生的元数据保存在三个不同的存储设备上,以适应不同的应用场景:(1)内存设备(模拟磁盘);(2)基于顺序表的磁盘设备;(3)基于B+树的磁盘设备。此外,另外一个比较有名的外存去冗余代表是iDedup,它基于WAFL(WriteAnywhereFileLayout)技术建立,位于文件系统层次(FileSystem-level),还考虑到了去冗余之后数据读取的顺序性问题。但是iDedup要借助NVRAM(Non-volatilerandom-accessmemory)来保存刚被写入到非易失介质的写入数据,以此来缓解写入的开销。严格来说,iDedup是一个离线的去冗余技术,因为其在写入操作到达非易失介质之后再执行去冗余逻辑,并且需要借助新型的存储硬件。Satori是一个针对虚拟化系统的内存页面去冗余技术。它借助了虚拟I/O块设备和物理I/O块设备之间的转换,加入了去冗余功能。特别的是,Satori监控的不在是虚拟机的写入请求,而是读写请求。每当有虚拟机的读写请求发生时,Satori会在虚拟机管理器层次对读出来的数据进行去冗余检测,如果在一个虚拟机内部或者多个虚拟机之间发生了读出的数据冗余,则表明多个虚拟机之间或者一个虚拟机内部存在数据去冗余的机会。Satori的去冗余位于虚拟机的块层,并且其所监控的对象亦为外存中存在的数据,但是,因为其去冗余的逻辑在虚拟机读取数据过程中发生,因此,该技术应该亦为在线的去冗余技术之一。现有的数据去冗余技术的最大缺点是:不适用于CPU+NVRAM的新型存储体系结构,因为当前的这些技术都只是在传统的CPU+DRAM+HDD/SSD的存储结构中发挥作用。上述NVRAM(Non-VolatileRandomAccessMemory)指代的是非易失内存。随着信息存储领域不断进步和发展,一些新型的内存设备逐渐出现,具备弥补当前内外存子系统之间各项物理属性差异的能力。这些新型存储介本文档来自技高网...
<a href="http://www.xjishu.com/zhuanli/55/201710077383.html" title="基于非易失内存设备的数据去冗余系统原文来自X技术">基于非易失内存设备的数据去冗余系统</a>

【技术保护点】
一种基于非易失内存设备的数据去冗余系统,其特征在于,包括基于NVRAM的新型内核文件系统模块,为一制定文件系统,位于内核的文件系统层次,可以改进传统文件系统在NVRAM设备上的性能不足之处和功能冗余,同时向位于用户空间的各类进程提供一套与NVRAM交互、同时兼容现有标准的读写接口;用户空间文件系统模块,为一个位于用户空间中的特殊进程,可以向其他进程提供与NVRAM进行交互的中间层或者虚拟层;数据去冗余方法及其系统整合方式模块,提供具体的去冗余逻辑给所述的用户空间文件系统。

【技术特征摘要】
1.一种基于非易失内存设备的数据去冗余系统,其特征在于,包括基于NVRAM的新型内核文件系统模块,为一制定文件系统,位于内核的文件系统层次,可以改进传统文件系统在NVRAM设备上的性能不足之处和功能冗余,同时向位于用户空间的各类进程提供一套与NVRAM交互、同时兼容现有标准的读写接口;用户空间文件系统模块,为一个位于用户空间中的特殊进程,可以向其他进程提供与NVRAM进行交互的中间层或者虚拟层;数据去冗余方法及其系统整合方式模块,提供具体的去冗余逻辑给所述的用户空间文件系统。2.根据权利要求1所述的基于非易失内存设备的数据去冗余系统,其特征在于,所述的基于NVRAM的新型内核文件系统模块可选择基于GPL协议的开源项目中的PMFS实现。3.根据权利要求1所述的基于非易失内存设备的数据去冗余系统,其特征在于,所述的用户空间文件系统模块选择用户文件系统FUSE实现。4.根据权利要求3所述的基于非易失内存设备的数据去冗余系统,其特征在于,所述的FUSE进程与某个或者多个特定的CPU物理核绑定。5.根据权利要求1所述的基于非易失内存设备的数据去冗余系统,其特征在于,所述的数据去冗余方法及其系统整合方式模块包括:数据指纹仓库,用于存储块文件数据指纹,所述的数据指纹是指块文件的哈希值;文件块表,每张文件块表代表着一个文件,每张文件块表存储着该文件所引用的块文件;文件引用数表,用于存储每个块文件的被引用数;FUSE标准读写接口,处于FUSE进程中,包含去冗余读写逻辑,与所述的数据指纹仓库、文件块表、文件引用数表和其他模块进行数据交换。6.根据权利要求5所述的基于非易失内存设备的数据去冗余系统,其特征在于,所述的读写逻辑中读取逻辑包括如下步骤:S1,根据普通进程调用的读系统调用接口中的路径参数以及具体读取位置参数,找到其想要打开的文件及其所对应的文件块表;S2,根据文件块表中的条目以及所述的具体读取位置参数,找到该文件内部在本次读取操作中所涉及到的块文件,及其文件名和大小;S3,循环读取涉及到的一个或者多个块文件,直至读取完所有要读取的数据或者是读取到文件尾;S4,将读取到的数据返回给普通进程,本次读取流程结束。7.根据权利要求5所述的基于非易失内存设备的数据去冗余系统,其特征在于,所述的读写逻辑中写入逻辑包括如下步骤:S1,根据普通进程调用的写系统调用接口中的路径参数以及起始写入位置参数,找到对应的文件及其所对应的文件块表;S2,将文件块表读取到内存链表之中,可定义为文件块链表,该链表每个节点包含着一个数...

【专利技术属性】
技术研发人员:李丁丁唐立杰田晓甲汤庸
申请(专利权)人:华南师范大学
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1