当前位置: 首页 > 专利查询>重庆大学专利>正文

一种用于内存文件系统的文件数据一致性更新方法技术方案

技术编号:13018256 阅读:82 留言:0更新日期:2016-03-16 18:24
本发明专利技术公开了一种用于内存文件系统的文件数据一致性更新方法,包括以下步骤:1,在进程初始化时,系统在内核空间为进程打开一个伪文件;2,进程请求更新“目标文件”,内存文件系统按照需要更新的数据量,一次性分配全部所需的物理内存给伪文件;3,构建伪文件中索引数据页的数据结构,称为“数据索引”;4,调用一次数据拷贝函数,把新数据一次性全部写入伪文件;5,使用一个原子操作,把伪文件的数据索引插入目标文件的数据索引中相应的位置;6,进程结束,删除该进程对应的伪文件。本发明专利技术的优点是:对于数据量较大的更新操作,避免了大量数据拷贝函数调用以及原子操作,可以在保证文件数据更新一致性的情况达到较高的性能。

【技术实现步骤摘要】

本专利技术属于计算机系统软件领域,具体涉及一种保证内存文件系统文件数据更新一致性的方法。
技术介绍
内存文件系统随着新型非易失性存储器的出现,企业界和学术界提出将存储密度大、读写速度快、可按字节寻址和抗震动的非易失性内存制作为持久性的数据存储设备,称为存储级内存(StorageClassMemory,简称SCM)。为了管理这种存储级内存,已经设计出多种内存文件系统。例如IBM设计的PMFS,“Systemsoftwareforpersistentmemory,”inProc.9thACMEuro.Conf.Comput.Syst.,pp15:1—15:15,2014,ISBN:978-1-4503-2704-6。(“面向持久性内存的系统软件”,第9届美国计算机学会欧洲计算机系统会议,第15篇1到15页,2014年,ISBN:978-1-4503-2704-6),重庆大学自主研发的SIMFS,“DesigninganEfficientPersistentIn-MemoryFileSystem”,2015IEEENon-VolatileMemorySystemandApplicationsSymposium,pp1-6,2015,DOI:10.1109/NVMSA.2015.7304365。(“高效持续性内存文件系统设计”,2015年电气和电子工程师协会非易失性内存系统及应用研讨会,第1-6页,DOI:10.1109/NVMSA.2015.7304365)。在内存文件系统SIMFS中,文件的数据都存放在物理内存页面上。这种存放文件数据的物理内存页面称为“数据页”。所有文件都使用类似系统页表的数据结构组织其数据页,该数据结构称为“文件页表”。每当进程打开内存文件系统SIMFS中的一个文件时,文件系统通过以下三步将文件映射到系统的虚拟地址空间中:1)给文件分配一段足够大的空闲系统虚拟地址空间;2)找到这段虚拟地址空间对应的系统页表项;3)把文件的文件页表插入到第2步中的系统页表项。此后,文件所管理的物理内存就直接映射到系统的虚拟地址空间,进程可以通过系统虚拟地址空间连续访问文件的数据页。传输数据的过程只需要一次数据拷贝,从而获得较高的文件系统性能。数据一致性更新技术在文件系统中更新数据时,例如用写操作向文件中写数据时,需要保证数据的一致性,即文件的元数据中引用的数据页必须属于该文件,而不是垃圾数据,或者其他文件的数据页。文件数据的一致性对文件系统的正确运行至关重要。然而,对内存文件系统而言,不仅需要保证文件数据更新的一致性,还需要利用内存文件系统的特点,尽可能地减少维持数据一致性导致的性能损耗。目前,内存文件系统中使用的数据一致性更新技术主要有两种:1.现有技术一:写时复制(Copy-on-write)技术在使用写时复制技术更新文件数据时,内存文件系统首先将新数据写到空闲的物理内存,然后使用原子操作将原文件的元数据指向新的数据页。具体而言,使用写时复制技术时,假设要更新n个数据页,内存文件系统需要重复以下步骤n次:1)分配一个空闲物理页;2)调用一次数据拷贝函数,将新数据写入步骤1)分配的空闲物理页;3)使用一次原子操作,修改原文件的数据索引结构中相应指针,指向步骤2)中的数据页。可见使用写时复制技术更新文件数据时,内存文件系统需要调用n次空闲页分配函数、n次数据拷贝函数,以及n次原子操作。每一次分配空闲页和调用原子操作都需要使用CPU指令对文件系统代码中的竞争区域加锁、解锁,每一次调用数据拷贝函数都需要检查地址范围、页面权限等操作。因此,这种操作会产生较大的开销,降低内存文件系统的性能。此外,传统的写时复制技术不只对当前更新的数据页进行更新,还必须向上传播,对新数据所影响到的文件元数据、文件系统元数据进行写时复制。最终可能导致从待更新文件数据到文件系统根目录整条路径上的所有页面全部执行写时复制。因此,写时复制技术会造成极大的性能损耗。2.现有技术二:简短影子分页(Short-circuitshadowpaging)技术“BetterI/Othroughbyte-addressable,persistentmemory.”JeremyCondit,EdmundB.Nightingale,ChristopherFrost,EnginIpek,BenjaminLee,DougBurger,andDerrickCoetzee.InProceedingsoftheACMSIGOPS22ndsymposiumonOperatingsystemsprinciples(SOSP'09),Pages133-146,2009,ISBN:978-1-60558-752-3.(“可字节寻址持久化内存上的先进I/O”,JeremyCondit,EdmundB.Nightingale,ChristopherFrost,EnginIpek,BenjaminLee,DougBurger,andDerrickCoetzee,第22届美国计算机学会操作系统原理研讨会,第133-146页,2009年,ISBN:978-1-60558-752-3)简短影子分页技术是微软在他们的内存文件系统BPFS中所使用的数据一致性更新技术。该技术类似于写时复制技术,即首先将新数据写到空闲的物理内存,然后使用原子操作将原文件的元数据指向新的数据页。不同之处在于,简短影子分页技术只更新直接受影响的数据页和文件元数据,更新操作不会传播到文件系统的其他文件或元数据。然而,简短影子分页技术和写时复制技术有同样的缺点,也就是在更新n个数据页时,要重复现有技术一中的3个步骤n次。由此产生较大的开销,降低内存文件系统的性能。
技术实现思路
针对现有技术的不足,本专利技术所要解决的技术问题是提供一种用于内存文件系统的文件数据一致性更新方法,减少数据一致性更新操作的开销,提高内存文件系统的性能。要解决的上述技术问题,本专利技术提供的一种用于内存文件系统的文件数据一致性更新方法,包括以下步骤:步骤1,在进程初始化时,系统在内核空间为进程打开一个伪文件;步骤2,进程请求更新“目标文件”,内存文件系统按照需要更新的数据量,一次性分配全部所需的物理内存给伪文件;步骤3,构建伪文件中索引数据页的数据结构,称为“数据索引”;步骤4,调用一次数据拷贝函数,把新数据一次性全部写入伪文件;步骤5,使用一个原子操作,把伪文件的数据索引插入目标文件的数据索引中相应的位置;步骤6,进程结束,删除该进程对应的伪文件。由于新数据首先写在伪文件中,如果在写的过程中系统崩溃或丢失电源,目标文件的数据不会受到影响。将新数据更新到目标文件中是由修改目标文件中的一个指针完成,整个操作仅需要一个由硬件保证完成的原子操作。因此,文件的数据不会出现一致性问题。此外,整个更新操作中只需要调用一次数据分配、数据拷贝函数和原子操作。所以,本专利技术具有如下的优点:对本文档来自技高网
...
一种用于内存文件系统的文件数据一致性更新方法

【技术保护点】
一种用于内存文件系统的文件数据一致性更新方法,其特征是,包括以下步骤:步骤1,在进程初始化时,系统在内核空间为进程打开一个伪文件;步骤2,进程请求更新“目标文件”,内存文件系统按照需要更新的数据量,一次性分配全部所需的物理内存给伪文件;步骤3,构建伪文件中索引数据页的数据结构,称为“数据索引”;步骤4,调用一次数据拷贝函数,把新数据一次性全部写入伪文件;步骤5,使用一个原子操作,把伪文件的数据索引插入目标文件的数据索引中相应的位置;步骤6,进程结束,删除该进程对应的伪文件。

【技术特征摘要】
1.一种用于内存文件系统的文件数据一致性更新方法,其特征是,包括以下步骤:
步骤1,在进程初始化时,系统在内核空间为进程打开一个伪文件;
步骤2,进程请求更新“目标文件”,内存文件系统按照需要更新的数据量,一次性分配全部所需的物理内存给伪文件;
步骤3,构建伪文件中索引数据页的数据结构,称为“数据索引”;
步骤4,调用一次数据拷贝函数,把新数据一次性全部写入伪文件;
步骤5,使用一个原子操作,把伪文件的数据索引插入目标文件的数据索引中相应的位置;
步骤6,进程结束,删除该进程对应的伪文件。
2.根据权利要求1所述的用于内存文件系统的文件数据一致性更新方法,其特征是,步骤1中打开一个伪文件包括以下步骤:
步骤1),在内核虚拟地址空间为伪文件分配一段虚拟地址空间VF;
步骤2),读取当前处理器控制寄存器中内核页表最高一级的起始物理地址,称为PGD项;该控制寄存器可以是Intel处理器中的CR3寄存器;
步骤3),根据读取的PGD项和伪文件的虚拟地址VF,用内核现有函数可以找到伪文件的虚...

【专利技术属性】
技术研发人员:沙行勉陈咸彰诸葛晴凤孙志龙陈俊熹
申请(专利权)人:重庆大学
类型:发明
国别省市:重庆;85

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

1