CN111597124A - 持久化内存文件系统数据组织方法、系统及存储介质 - Google Patents
持久化内存文件系统数据组织方法、系统及存储介质 Download PDFInfo
- Publication number
- CN111597124A CN111597124A CN202010317345.5A CN202010317345A CN111597124A CN 111597124 A CN111597124 A CN 111597124A CN 202010317345 A CN202010317345 A CN 202010317345A CN 111597124 A CN111597124 A CN 111597124A
- Authority
- CN
- China
- Prior art keywords
- virtual
- page
- data
- file
- file data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
- G06F12/0261—Garbage collection, i.e. reclamation of unreferenced memory using reference counting
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种持久化内存文件系统数据组织方法、系统及存储介质,所述方法包括:当接收到文件数据操作指令时,根据所述文件数据操作指令的类型执行相应的数据操作机制;若所述文件数据操作指令的类型为覆盖写,则执行多粒度写时复制机制的数据操作机制;若所述文件数据操作指令的类型为文件启/闭,则执行零拷贝文件数据迁移的数据操作机制。本发明能够解决现有持久化文件系统在使用超级页组织文件数据时存在极大的写放大及空间严重浪费的问题,从而提高持久化内存文件系统的性能和存储空间利用率,满足了实际应用需求。
Description
技术领域
本发明涉及计算机信息存储技术领域,特别是涉及一种持久化内存文件系统数据组织方法、系统及存储介质。
背景技术
随着科学技术的不断发展,近年来,出现了诸多以持久化内存作为存储设备的持久化内存文件系统(Persistent Memory File System),例如BPFS、SCMFS、PMFS、SIMFS、NOVA和HiNFS等。这类文件系统具有持久化内存的低延迟性和可按字节寻址等优点,通过优化文件数据的组织方式和数据一致性机制,极大的提升了文件系统的性能,使得文件访问的吞吐率达到GB/s级。
众所周知的,文件系统通常使用写前日志(WAL)和写时复制(CoW)机制来保证数据一致性。其中,WAL将存储空间分为数据区和日志区,在更新数据前,先更新数据写入日志,然后在更新数据。若在修改数据的过程中发生系统崩溃或掉电,可根据日志数据重做或撤回保证数据一致性。然而WAL存在“两次写问题”,严重降低文件系统的性能。而CoW采用异地更新原则,把数据更新到新的存储位置,最后修改文件数据索引结构,降低数据一致性开销,因此通常采用CoW保证数据一致性。
其中,现有的持久化内存文件普遍使用4KB物理页来组织文件数据。然而,这种数据组织策略对大文件而言常常存在文件数据页查找和空间管理开销大的问题。因此,借鉴于现有内存超级页机制,SCMFS-LP和PMFS支持超级页(2MB或1GB)组织文件数据来降低文件数据查找和空间管理开销,同时提高TLB命中率。
因此,持久化文件系统在使用超级页作为内存管理粒度时,虽然能够提高TLB的命中率,在一定程度上能够提高访问效率,但是会产生写放大及空间严重浪费的问题。
发明内容
为了解决上述问题,本发明的目的是提供一种能够解决现有持久化文件系统在使用超级页作为内存管理粒度时存在写放大及空间严重浪费的问题,从而提高持久化内存文件系统的性能和存储空间利用率的持久化内存文件系统数据组织方法、系统、存储介质。
根据本发明提供的持久化内存文件系统数据组织方法,所述方法包括如下步骤:
当接收到文件数据操作指令时,根据所述文件数据操作指令的类型执行相应的数据操作机制;
若所述文件数据操作指令的类型为覆盖写,则执行多粒度写时复制机制的数据操作机制;
若所述文件数据操作指令的类型为文件启/闭,则执行零拷贝文件数据迁移的数据操作机制。
根据本发明提供的持久化内存文件系统数据组织方法,首先通过在执行覆盖写的文件数据操作指令时,则执行多粒度写时复制机制的数据操作机制,即根据被覆盖写的文件数据的大小及范围进行文件数据写入及映射关系的调整,以避免写放大的技术问题;通过在执行文件启/闭的数据操作时,执行零拷贝文件数据迁移的数据操作机制,即通过回收文件所占的最后一个数据页上的空闲空间来解决空间浪费的问题。本发明通过虚拟内存管理机制结合文件数据索引结构来管理文件数据,根据更新数据的大小使用修改文件数据索引结构和页表相结合的方法实现数据一致性,同时,通过修改页表的方式实现数据动态迁移,提高了混持久化内存空间的利用率,满足了实际应用需求。
另外,根据本发明上述的持久化内存文件系统数据组织方法,还可以具有如下附加的技术特征:
进一步地,在接收文件数据操作指令的步骤之前,所述方法还包括:
将持久化内存的物理地址空间映射至一连续的、大小相等的虚拟地址空间,所述虚拟地址空间内设有多个虚拟超级页;
将持久化内存的物理地址空间划分为用来记录虚拟地址到物理地址映射关系的页表区,以及用来存储文件系统数据的普通物理页区。
进一步地,执行多粒度写时复制机制的数据操作制的方法包括:
判断被覆盖写的文件数据所占用的虚拟超级页的个数;
当被覆盖写的文件数据所占用的虚拟超级页的数量为一个或多个时,则采用粗粒度的写时复制机制的数据操作机制;
当被覆盖写的文件数据所占用的虚拟超级页的数量为一个或多个虚拟超级页的部分空间时,则采用细粒度的写时复制机制的数据操作机制。
进一步地,采用粗粒度的写时复制机制的数据操作机制的方法包括:
为所需进行覆盖写的虚拟超级页分配一空闲虚拟超级页,把所需进行覆盖写的文件数据写入所述空闲虚拟超级页中,并生成对应的事务日志,其中所述空闲虚拟超级页为未使用的虚拟超级页;
将页表中虚拟超级页的文件数据索引替换为空闲虚拟超级页的文件数据索引,并回收所需进行覆盖写的虚拟超级页的数据空间。
进一步地,采用细粒度的写时复制机制的数据操作机制的方法包括:
为所需进行覆盖写的虚拟普通页分配一空闲虚拟普通页,并从页表中获取所述虚拟普通页及空闲虚拟普通页所对应的物理地址,其中所述空闲虚拟普通页为未使用的虚拟普通页,
把所需进行覆盖写的文件数据写入所述空闲虚拟普通页中,并生成对应的事务日志;
交换虚拟普通页及空闲虚拟普通页在页表区中的条目,并回收所述虚拟普通页的数据空间。
进一步地,执行多粒度写时复制机制的数据操作机制的方法还包括:
当文件系统在系统崩溃或电源故障后进行重启的过程中,检查事务日志的状态;
当存在覆盖写的过程未完成时,通过所述事务日志的日志信息判断被覆盖写文的件数据的数据一致性;
根据事务日志的使用页号和存储在事务日志中的物理地址进行页表或文件数据索引的修改,并将当前事务日志的状态更新为完成。
进一步地,执行零拷贝文件数据迁移的数据操作机制的方法包括:
当文件关闭时,回收该文件最后一个虚拟超级页中未使用的空间,同时,在文件索引节点中设置一标志位;
当该文件被重新打开以执行追加写入操作时,则分配一未使用的虚拟超级页,同时将页表中最后一个虚拟超级页所存储的虚拟普通页与未使用的虚拟超级页所存储的虚拟普通页进行条目表换;
修改文件数据索引中相应的条目,将其重定向到未使用的虚拟超级页,回收最一个虚拟超级页中所存储的虚拟普通页的空间,并将追加写入操作中所需写入的数据完全附加在未使用的虚拟超级页所存储的虚拟普通页之后。
进一步地,普通物理页区内设有多个普通物理页,每个虚拟超级页由多个虚拟普通页组成,所述虚拟普通页的大小与普通物理页的大小相等,均为4KB。
本发明的另一实施例提出一种新的持久化内存文件系统数据组织系统,解决了现有持久化文件系统在使用超级页组织文件数据时存在极大的写放大及空间严重浪费的问题,从而提高持久化内存文件系统的性能和存储空间利用率,提高了用户数据存储体验的满意度。
根据本发明实施例的持久化内存文件系统数据组织系统,包括:
指令接收模块,用于当接收到文件数据操作指令时,根据所述文件数据操作指令的类型执行相应的数据操作机制;
第一执行模块,用于若所述文件数据操作指令的类型为覆盖写,则执行多粒度写时复制机制的数据操作机制;
第二执行模块,用于若所述文件数据操作指令的类型为文件启/闭,则执行零拷贝文件数据迁移的数据操作机制。
本发明的另一个实施例还提出一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实施例了解到。
附图说明
图1是本发明第一实施例提出的持久化内存文件系统数据组织方法的流程图;
图2是虚拟超级页机制的原理结构示意图;
图3是图1中步骤S102的具体流程图;
图4是图2的具体实施结构示意图;
图5是图1的步骤S103的具体流程图;
图6是图5的具体实施结构示意图;
图7是本发明第二实施例提出的持久化内存文件系统数据组的织系统结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,本发明第一实施例提出的一种持久化内存文件系统数据组织方法,其中,包括步骤S101~S103:
步骤S101,当接收到文件数据操作指令时,根据所述文件数据操作指令的类型执行相应的数据操作机制。
本实施例中,以数据存储设备为例进行说明,但需要了解的是,本发明实施例并不限于此,本发明实施例的方法可以应用在任何数据存储设备中,即任何可进行数据存储的电子设备中。具体的,现有技术中,现有的一些持久化内存文件系统使用处理器的内存管理硬件将持久化内存管理为2MB或1GB的超级页。在这种情况下,持久内存文件系统可以有效地用更短的文件索引定位数据文件和减小大文件的空间管理的开销。而且,文件系统使用超级页比使用正常的4KB数据页具有更高的TLB命中率。所以持久化文件系统使用超级页给内存文件系统带来的好处时显而易见的,它能够加速文件索引,使得读写文件更快。然而,持久化文件系统在使用超级页作为内存管理粒度时,虽然能够提高TLB的命中率,在一定程度上能够提高访问效率,但也会产生写放大及空间浪费的问题。本发明通过交换页表中的条目来实现细粒度的写时拷贝机制和修改文件数据索引结构来实现粗粒度数据一致性机制,以实现降低覆盖写数据所产生的写放大率的目的。通过回收文件所占最后一个页面的空闲空间,使用修改页表的方式实现零拷贝数据迁移,以提高持久化内存空间的利用率。
其中,在接收文件数据操作指令的步骤之前,所述方法还包括:将持久化内存的物理地址空间映射至一连续的、大小相等的虚拟地址空间,以形成虚拟超级页机制,其中所述虚拟地址空间内设有多个虚拟超级页;将持久化内存的物理地址空间划分为用来记录虚拟地址到物理地址映射关系的页表区,以及用来存储文件系统数据的普通物理页区。此外,为了持续地存储内存空间到内核虚拟地址空间的映射关系即页表,本发明将页表存储在持久化内存中。
请参阅图2,根据虚拟超级页机制将持久化内存的物理地址空间划分为页表区和普通物理页区,即页表存储区和普通4KB物理页区域,分别用来记录虚拟地址到持久化内存的物理地址的映射关系和储存文件系统的数据(即,元数据、文件数据)。其中,页表存储区中包含四级页表:分别为页全局目录页表PGD(Page GlobalDirectory)、页上级目录页表PUD(Page Upper Directory)、页中间目录页表PMD(Page Middle Directory)及页表项页表PTE(Page Table Entry)。此外,在虚拟超级页机制中,虚拟超级页是连续虚拟地址空间的一部分,它被映射到大小相等的物理内存(普通物理页区)。其中虚拟超级页由多个虚拟普通4KB页组成,虚拟普通4KB页的大小等于物理普通4KB页,且虚拟超级页的虚拟地址是连续的,而它的物理地址不一定是连续的。
在本实施例中,通过根据文件数据操作指令的类型执行相应的数据操作机制,以便于对文件进行覆盖写所造成的写放大及进行文件启闭和追加写时所产生的空间的浪费进行针对性的处理。
步骤S102,若所述文件数据操作指令的类型为覆盖写,则执行多粒度写时复制机制的数据操作机制。
如上所述,数据一致性和崩溃恢复是文件系统中保证数据可靠性的重要组成部分。但是,当文件数据用超级页来组织时,超级页的覆盖写操作将导致严重的写放大。因此,需采用多粒度写时复制机制来保证数据的一致性,与此同时,通过有效地组织用于记录更新信息的日志,以便于在系统崩溃或电源故障后为文件系统提供快速的崩溃恢复。
请参阅图3,执行多粒度写时复制机制的数据操作制的步骤包括:
步骤S1021,判断被覆盖写的文件数据所占用的虚拟超级页的个数。
步骤S1022,当被覆盖写的文件数据所占用的虚拟超级页的数量为一个或多个时,则采用粗粒度的写时复制机制的数据操作机制。
如上所述,当被覆盖写的文件数据所占用的虚拟超级页的数量为一个或多个时,则采用粗粒度的写时复制机制进行覆盖写操作,以在写入文件的同时保证数据的一致性,同时减小文件数据进行覆盖写时所产生的写放大。
具体的,为所需进行覆盖写的虚拟超级页分配一空闲虚拟超级页,把所需进行覆盖写的文件数据写入所述空闲虚拟超级页中,并生成对应的事务日志,其中所述空闲虚拟超级页为未使用的虚拟超级页;将页表中虚拟超级页的文件数据索引替换为空闲虚拟超级页的文件数据索引,并回收所需进行覆盖写的虚拟超级页的数据空间。
步骤S1023,当被覆盖写的文件数据所占用的虚拟超级页的数量为一个或多个虚拟超级页的部分空间时,则采用细粒度的写时复制机制的数据操作机制。
如上所述,当被覆盖写的文件数据所占用的虚拟超级页的数量为一个或多个虚拟超级页的部分空间时,则采用细粒度的写时复制机制进行覆盖写操作,以在写入文件的同时保证数据的一致性,同时减小文件数据进行覆盖写时所产生的写放大。
具体的,为所需进行覆盖写的虚拟普通页分配一空闲虚拟普通页,并从页表中获取所述虚拟普通页及空闲虚拟普通页所对应的物理地址,其中所述空闲虚拟普通页为未使用的虚拟普通页,把所需进行覆盖写的文件数据写入所述空闲虚拟普通页中,并生成对应的事务日志;交换虚拟普通页及空闲虚拟普通页在页表中的条目,并回收所述虚拟普通页的数据空间。
具体实施时,当覆盖写数据的大小远远小于超级页的大小时,覆盖写操作会导致严重的写放大问题从而极大的降低文件系统性能,为此,虚拟超级页机制的持久内存空间管理为解决超级页写放大率问题提供了多粒度写时复制机制,分别通过修改文件数据索引和页表来实现粗粒度写时复制和细粒度写时复制。多粒度写时复制机制的原理图如图4所示,覆盖写的被更新数据占用两个虚拟超级页,即VSP1和VSP2,VSPi表示第i个虚拟超级页,Pi和LPi分别表示第i个普通4KB物理页和普通4KB虚拟页(即4KB连续的虚拟地址空间)。如图4(a)所示,本次需覆盖更新VSP1、LP1和LP2的数据,其中,LP1和LP2属于VSP2,分别映射到普通4KB物理页P1和P2。如图4(b)所示,多粒度写时复制机制的覆盖写流程主要包括以下步骤:
1)多粒度写时复制机制从空闲管理模块分配一个虚拟超级页(用VSP3表示)和两个虚拟普通页(用LP'1和LP'2表示)。此外,多粒度写时复制机制从页表中获取LP1、LP2、LP'1和LP'2对应的物理地址,即P1、P2、P'1和P'2的物理地址,分别用PA1、PA2、PA'1和PA'2表示。
2)多粒度写时复制机制分配一个事务日志来记录元数据的信息,例如修改的起始位置和更新数据的大小等。同时,该事务日志采用数组分别存储虚拟超级页和虚拟普通页的页替换信息。对于虚拟超级页,数组中的每个条目表示虚拟超级页的替换信息,记为<Dest_VSP_No,Src_VSP_No>,例如,如图4(b)所示,应在实务日志记录中记录两个条目,如,<<VSP3,VSP1>,<LP'1,VSP2>>,在本例中,虽然LP'1不是虚拟超级页,但是LP'1和LP'2是连续的,并且多粒度写时复制机制的崩溃恢复程序可以从LP'1找到LP'2,所以在这种情况下,LP'1被认为是虚拟超级页,对于虚拟普通页,事务日志数组的每个条目记录虚拟普通页对应的普通物理页,表示为<Dest_Physical_Addr,Src_Physical_Addr>。如图4(b)所示,数组应在事务日志数据中记录两个条目,如<<P'1,P1>,<P'2,P2>>,且事务日志数组中的条目的顺序必须严格按照文件中页面修改的顺序,设置实务日志为已成功提交日志状态并把日志写回持久化内存。
3)把要更新的数据分别写到分配好的VSP3,LP'1,LP'2三个页面中。
4)分别交换LP1,LP2和LP'1,LP'2页表中的指针,同时用VSP3来代替VSP1在这个文件中的文件数据索引。
5)回收VSP1,LP1,LP2的空间。
可以理解的,当被覆盖写的数据占用一个或多个虚拟超级页时,多粒度写时复制机制使用粗粒度的写时复制机制,通过修改文件数据索引中相应的条目来保证数据的一致性。另外,当数据只占用虚拟超级页的一部分时,多粒度写时复制机制采用细粒度写时复制机制,修改页表中相应的条目。
在此还需要说明的是,在本发明其他实施例中,执行多粒度写时复制机制的数据操作机制的方法还包括:当文件系统在系统崩溃或电源故障后进行重启的过程中,检查事务日志的状态;当存在覆盖写的过程未完成时,通过所述事务日志的日志信息判断被覆盖写的文件数据的数据一致性;根据事务日志的使用页号和存储在事务日志中的物理地址进行页表或文件数据索引的修改,并将当前事务日志的状态更新为完成。
具体实施时,如有一个8MB大小的文件,该文件的数据由2MB虚拟超级页来组织的覆盖写大小为4MB的数据,更新数据的范围为3MB到7MB-1BT。首先,根据多粒度写时复制机制所得到结论是,该文件的第2、3、4个虚拟超级页是在覆盖写过程中需要更新的。同时,在覆盖过程中更新了第2和第4个超级页中的部分数据,并更新了第3个虚拟超级页中的所有数据。具体来说,在第2个虚拟超级页中序号从256到511的虚拟正常页和在第4个虚拟超级页中从0到255的虚拟正常页都被修改了。
因此,多粒度写时复制机制的恢复程序给出的处理结果是,重写过程分别通过修改页表来保证第2个和第4个虚拟超级页的数据一致性,通过修改文件数据索引来保证第3个虚拟超级页的数据一致性。
然后,对于第3个虚拟超级页,多粒度写时复制机制的恢复过程使用存储在事务日志中的虚拟超级页号来修改文件数据索引中对应的条目。同样的,对第2和第4个虚拟超级页,多粒度写时复制机制的恢复过程为根据存储在事务日志中的物理地址更新页表中相应的条目。最后,多粒度写时复制机制的恢复机制将事务状态更新为完成,并检查下一个事务日志的状态。
步骤S103,若所述文件数据操作指令的类型为文件启/闭,则执行零拷贝迁移的数据操作机制。
如上所述,因为利用超级页来组织文件数据,在文件启闭或追加写时可能会导致严重的空间浪费,因此需通过修改页表的机制来实现文件数据的零拷贝文件数据迁移,从而为减少空间浪费提供必要准备。
请参阅图5,执行零拷贝文件数据迁移的数据操作机制的步骤包括:
步骤S1031,当文件关闭时,回收该文件最后一个虚拟超级页中未使用的空间,同时,在文件索引节点中设置一标志位。
步骤S1032,当该文件被重新打开以执行追加写入操作时,则分配一未使用的虚拟超级页,同时将页表中最后一个虚拟超级页所存储的虚拟普通页与未使用的虚拟超级页所存储的虚拟普通页进行条目表换。
步骤S1033,修改文件数据索引中相应的条目,将其重定向到未使用的虚拟超级页,回收最一个虚拟超级页中所存储的虚拟普通页的空间,并将追加写入操作中所需写入的数据完全附加在未使用的虚拟超级页所存储的虚拟普通页之后。
请参阅图6,具体实施时,如最后一个虚拟超级页只有4KB,即超级页的大小是1GB,而浪费了1GB-4KB。则执行零拷贝迁移的步骤为:
1)当文件关闭时,则回收文件最后一个虚拟超级页中未使用的空间。同时,零拷贝文件数据迁移在文件索引节点中设置一标志位,以表明该文件的最后一页没有可用空间。
2)当在该文件重新打开以执行追加写入操作时,则分配一个未使用的虚拟超级页VSP3。同时,将页表中LP1和LP2条目进行交换,实现LP1映射到P2和LP2映射到P1。
3)修改文件数据索引中相应的条目,将其重定向到VSP3并回收空间VSP2中的LP1。
4)在VSP3中将数据完全附加在LP2之后。
可以理解的,为了进一步减少页表中交换索引项的开销,本发明根据更新数据大小、虚拟超级页的大小和页面对齐情况来决定交换页表项索引项还是上一级页中间目录的索引项。例如,假设虚拟超级页的大小为1GB,本次修改需要交换513个普通4KB物理页,同时,这513个页表项索引项占用两个页表项索引页。其中,一个页表项索引页指向本次修改的512个普通4KB物理页,另一个页表项索引页包含一个索引项指向本次修改的一个普通4KB物理页。因此,本次修改仅仅交换第一个页表项索引页的上一级页中间目录的一个索引项和第二页表项索引页中的一个索引项,而不是交换513个页表项索引项,通过该方式来降低修改页表的开销,从而提高了持久化内存文件系统的性能。
根据本发明提供的持久化内存文件系统数据组织方法,首先通过在执行覆盖写的文件数据操作指令时,则执行多粒度写时复制机制的数据操作机制,即根据被覆盖写的文件数据的大小及范围进行文件数据写入及映射关系的调整,以避免写放大的技术问题;通过在执行文件启/闭的数据操作时,执行零拷贝文件数据迁移的数据操作机制,即通过回收文件所占的最后一个数据页上的空闲空间来解决空间浪费的问题。本发明通过虚拟内存管理机制结合文件数据索引结构来管理文件数据,根据更新数据的大小使用修改文件数据索引结构和页表相结合的方法实现数据一致性,同时,通过修改页表的方式实现数据动态迁移,提高了混持久化内存空间的利用率,满足了实际应用需求。
请参阅图7,基于同一发明构思,本发明第二实施例提供的一种新的持久化内存文件系统数据组织系统,包括:
指令接收模块10,用于当接收到文件数据操作指令时,根据所述文件数据操作指令的类型执行相应的数据操作机制。
指令接收模块10,还用于将持久化内存的物理地址空间映射至一连续的、大小相等的虚拟地址空间,所述虚拟地址空间内设有多个虚拟超级页;将持久化内存的物理地址空间划分为用来记录虚拟地址到物理地址映射关系的页表区,以及用来存储文件系统数据的普通物理页区。
第一执行模块20,用于若所述文件数据操作指令的类型为覆盖写,则执行多粒度写时复制机制的数据操作机制。
本实施例中,所述第一执行模块20包括:
判断单元,用于判断被覆盖写的文件数据所占用的虚拟超级页的个数。
第一操作单元,用于当被覆盖写的文件数据所占用的虚拟超级页的数量为一个或多个时,则采用粗粒度的写时复制机制的数据操作机制。
具体的,为所需进行覆盖写的虚拟超级页分配一空闲虚拟超级页,把所需进行覆盖写的文件数据写入所述空闲虚拟超级页中,并生成对应的事务日志,其中所述空闲虚拟超级页为未使用的虚拟超级页;将页表中虚拟超级页的文件数据索引替换为空闲虚拟超级页的文件数据索引,并回收所需进行覆盖写的虚拟超级页的数据空间。
第二操作单元,用于当被覆盖写的文件数据所占用的虚拟超级页的数量为一个或多个虚拟超级页的部分空间时,则采用细粒度的写时复制机制的数据操作机制。
具体的,为所需进行覆盖写的虚拟普通页分配一空闲虚拟普通页,并从页表中获取所述虚拟普通页及空闲虚拟普通页所对应的物理地址,其中所述空闲虚拟普通页为未使用的虚拟普通页,把所需进行覆盖写的文件数据写入所述空闲虚拟普通页中,并生成对应的事务日志;交换虚拟普通页及空闲虚拟普通页在页表区中的条目,并回收所述虚拟普通页的数据空间。
进一步地,所述第一执行模块20还用于当文件系统在系统崩溃或电源故障后进行重启的过程中,检查事务日志的状态;当存在覆盖写的过程未完成时,通过所述事务日志的日志信息判断被覆盖写的文件数据的数据一致性;根据事务日志的使用页号和存储在事务日志中的物理地址进行页表或文件数据索引的修改,并将当前事务日志的状态更新为完成。
第二执行模块30,用于若所述文件数据操作指令的类型为文件启/闭,则执行零拷贝文件数据迁移的数据操作机制。
本实施例中,所述第二执行模块30包括:
回收单元,用于当文件关闭时,回收该文件最后一个虚拟超级页中未使用的空间,同时,在文件索引节点中设置一标志位。
写入单元,用于当该文件被重新打开以执行追加写入操作时,则分配一未使用的虚拟超级页,同时将页表中最后一个虚拟超级页所存储的虚拟普通页与未使用的虚拟超级页所存储的虚拟普通页进行条目表换。
操作单元,用于修改文件数据索引中相应的条目,将其重定向到未使用的虚拟超级页,回收最一个虚拟超级页中所存储的虚拟普通页的空间,并将追加写入操作中所需写入的数据完全附加在未使用的虚拟超级页所存储的虚拟普通页之后。
根据本发明提供的新的持久化内存文件系统数据组织系统,首先通过在执行覆盖写的文件数据操作指令时,则执行多粒度写时复制机制的数据操作机制,即根据被覆盖写的文件数据的大小及范围进行文件数据写入及映射关系的调整,以避免写放大的技术问题;通过在执行文件启/闭的数据操作时,执行零拷贝文件数据迁移的数据操作机制,即通过回收文件所占的最后一个数据页上的空闲空间来解决空间浪费的问题。本发明通过虚拟内存管理机制结合文件数据索引结构来管理文件数据,根据更新数据的大小使用修改文件数据索引结构和页表相结合的方法实现数据一致性,同时,通过修改页表的方式实现数据动态迁移,提高了混持久化内存空间的利用率,满足了实际应用需求。
本发明实施例提出的持久化内存文件系统数据组织系统的技术特征和技术效果与本发明实施例提出的方法相同,在此不予赘述。
此外,本发明的实施例还提出一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。
此外,本发明的实施例还提出一种缓存设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现上述方法的步骤。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种持久化内存文件系统数据的组织方法,其特征在于,所述方法包括如下步骤:
当接收到文件数据操作指令时,根据所述文件数据操作指令的类型执行相应的数据操作机制;
若所述文件数据操作指令的类型为覆盖写,则执行多粒度写时复制机制的数据操作机制;
若所述文件数据操作指令的类型为文件启/闭,则执行零拷贝文件数据迁移的数据操作机制。
2.根据权利要求1所述的持久化内存文件系统的数据组织方法,其特征在于,在接收文件数据操作指令的步骤之前,所述方法还包括:
将持久化内存的物理地址空间映射至一连续的、大小相等的虚拟地址空间,所述虚拟地址空间内设有多个虚拟超级页;
将持久化内存的物理地址空间划分为用来记录虚拟地址到物理地址映射关系的页表区,以及用来存储文件系统数据的普通物理页区。
3.根据权利要求1所述的持久化内存文件系统的数据组织方法,其特征在于,执行多粒度写时复制机制的数据操作制的方法包括:
判断被覆盖写的文件数据所占用的虚拟超级页的个数;
当被覆盖写的文件数据所占用的虚拟超级页的数量为一个或多个时,则采用粗粒度的写时复制机制的数据操作机制;
当被覆盖写的文件数据所占用的虚拟超级页的数量为一个或多个虚拟超级页的部分空间时,则采用细粒度的写时复制机制的数据操作机制。
4.根据权利要求3所述的持久化内存文件系统数据组织方法,其特征在于,采用粗粒度的写时复制机制的数据操作机制的方法包括:
为所需进行覆盖写的虚拟超级页分配一空闲虚拟超级页,把所需进行覆盖写的文件数据写入所述空闲虚拟超级页中,并生成对应的事务日志,其中所述空闲虚拟超级页为未使用的虚拟超级页;
将页表中虚拟超级页的文件数据索引替换为空闲虚拟超级页的文件数据索引,并回收所需进行覆盖写的虚拟超级页的数据空间。
5.根据权利要求3所述的持久化内存文件系统数据组织方法,其特征在于,采用细粒度的写时复制机制的数据操作机制的方法包括:
为所需进行覆盖写的虚拟普通页分配一空闲虚拟普通页,并从页表中获取所述虚拟普通页及空闲虚拟普通页所对应的物理地址,其中所述空闲虚拟普通页为未使用的虚拟普通页,
把所需进行覆盖写的文件数据写入所述空闲虚拟普通页中,并生成对应的事务日志;
交换虚拟普通页及空闲虚拟普通页在页表区中的条目,并回收所述虚拟普通页的数据空间。
6.根据权利要求1所述的持久化内存文件系统数组组织方法,其特征在于,执行多粒度写时复制机制的数据操作机制的方法还包括:
当文件系统在系统崩溃或电源故障后进行重启的过程中,检查事务日志的状态;
当存在覆盖写的过程未完成时,通过所述事务日志的日志信息把被覆盖写的文件数据恢复到数据一致性状态;
根据事务日志的使用页号和存储在事务日志中的物理地址进行页表或文件数据索引的修改,并将当前事务日志的状态更新为完成。
7.根据权利要求1所述的持久化内存文件系统数据组织方法,其特征在于,执行零拷贝文件数据迁移的数据操作机制的方法包括:
当文件关闭时,回收该文件最后一个虚拟超级页中未使用的空间,同时,在文件索引节点中设置一标志位;
当该文件被重新打开以执行追加写入操作时,则分配一未使用的虚拟超级页,同时将页表中最后一个虚拟超级页所存储的虚拟普通页与未使用的虚拟超级页所存储的虚拟普通页进行条目表换;
修改文件数据索引中相应的条目,将其重定向到未使用的虚拟超级页,回收最一个虚拟超级页中所存储的虚拟普通页的空间,并将追加写入操作中所需写入的数据完全附加在未使用的虚拟超级页所存储的虚拟普通页之后。
8.根据权利要求1至7任意一项所述的持久化内存文件系统数据组织方法,其特征在于,普通物理页区内设有多个普通物理页,每个虚拟超级页由多个虚拟普通页组成,所述虚拟普通页的大小与普通物理页的大小相等,均为4KB。
9.一种新的持久化内存文件系统数据组织系统,其特征在于,所述系统包括:
指令接收模块,用于当接收到文件数据操作指令时,根据所述文件数据操作指令的类型执行相应的数据操作机制;
第一执行模块,用于若所述文件数据操作指令的类型为覆盖写,则执行多粒度写时复制机制的数据操作机制;
第二执行模块,用于若所述文件数据操作指令的类型为文件启/闭,则执行零拷贝文件数据迁移的数据操作机制。
10.一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-8任意一项所述的持久化内存文件系统数据组织方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010317345.5A CN111597124B (zh) | 2020-04-21 | 2020-04-21 | 持久化内存文件系统数据组织方法、系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010317345.5A CN111597124B (zh) | 2020-04-21 | 2020-04-21 | 持久化内存文件系统数据组织方法、系统及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111597124A true CN111597124A (zh) | 2020-08-28 |
CN111597124B CN111597124B (zh) | 2023-05-05 |
Family
ID=72185119
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010317345.5A Active CN111597124B (zh) | 2020-04-21 | 2020-04-21 | 持久化内存文件系统数据组织方法、系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111597124B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113254198A (zh) * | 2021-04-30 | 2021-08-13 | 南开大学 | 融合Linux虚拟内存系统和文件系统的持久性内存统一管理方法 |
CN113569277A (zh) * | 2021-06-25 | 2021-10-29 | 北京鼎普科技股份有限公司 | 安全文件数据检查的方法、装置和电子设备 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1560746A (zh) * | 2004-02-27 | 2005-01-05 | 中国人民解放军国防科学技术大学 | 基于操作系统反向页表的页迁移和复制方法 |
CN103488578A (zh) * | 2012-12-28 | 2014-01-01 | 晶天电子(深圳)有限公司 | 虚拟存储设备(vmd)应用/驱动器 |
US20140089608A1 (en) * | 2012-09-25 | 2014-03-27 | International Business Machines Corporation | Power savings via dynamic page type selection |
CN105579977A (zh) * | 2014-09-01 | 2016-05-11 | 华为技术有限公司 | 访问文件的方法、装置及存储系统 |
CN105988875A (zh) * | 2015-03-04 | 2016-10-05 | 华为技术有限公司 | 一种运行进程的方法及装置 |
CN106250320A (zh) * | 2016-07-19 | 2016-12-21 | 诸葛晴凤 | 一种数据一致性及磨损均衡的内存文件系统管理方法 |
CN107016100A (zh) * | 2017-04-10 | 2017-08-04 | 重庆大学 | 一种基于非易失性内存文件系统的元数据管理方法 |
CN109002706A (zh) * | 2018-06-08 | 2018-12-14 | 中国科学院计算技术研究所 | 一种基于用户级页表的进程内数据隔离保护方法和系统 |
US20190050344A1 (en) * | 2018-03-22 | 2019-02-14 | Intel Corporation | Techniques for an all persistent memory file system |
US20190065226A1 (en) * | 2017-08-23 | 2019-02-28 | Intel Corporation | Method to manage guest address space trusted by virtual machine monitor |
CN110109873A (zh) * | 2019-05-08 | 2019-08-09 | 重庆大学 | 一种用于消息队列的文件管理方法 |
CN110688345A (zh) * | 2019-09-26 | 2020-01-14 | 重庆大学 | 一种内存文件系统的多粒度结构化空间管理机制 |
CN110888827A (zh) * | 2018-09-10 | 2020-03-17 | 华为技术有限公司 | 数据传输方法、装置、设备及存储介质 |
-
2020
- 2020-04-21 CN CN202010317345.5A patent/CN111597124B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1560746A (zh) * | 2004-02-27 | 2005-01-05 | 中国人民解放军国防科学技术大学 | 基于操作系统反向页表的页迁移和复制方法 |
US20140089608A1 (en) * | 2012-09-25 | 2014-03-27 | International Business Machines Corporation | Power savings via dynamic page type selection |
CN103488578A (zh) * | 2012-12-28 | 2014-01-01 | 晶天电子(深圳)有限公司 | 虚拟存储设备(vmd)应用/驱动器 |
CN105579977A (zh) * | 2014-09-01 | 2016-05-11 | 华为技术有限公司 | 访问文件的方法、装置及存储系统 |
CN105988875A (zh) * | 2015-03-04 | 2016-10-05 | 华为技术有限公司 | 一种运行进程的方法及装置 |
CN106250320A (zh) * | 2016-07-19 | 2016-12-21 | 诸葛晴凤 | 一种数据一致性及磨损均衡的内存文件系统管理方法 |
CN107016100A (zh) * | 2017-04-10 | 2017-08-04 | 重庆大学 | 一种基于非易失性内存文件系统的元数据管理方法 |
US20190065226A1 (en) * | 2017-08-23 | 2019-02-28 | Intel Corporation | Method to manage guest address space trusted by virtual machine monitor |
US20190050344A1 (en) * | 2018-03-22 | 2019-02-14 | Intel Corporation | Techniques for an all persistent memory file system |
CN109002706A (zh) * | 2018-06-08 | 2018-12-14 | 中国科学院计算技术研究所 | 一种基于用户级页表的进程内数据隔离保护方法和系统 |
CN110888827A (zh) * | 2018-09-10 | 2020-03-17 | 华为技术有限公司 | 数据传输方法、装置、设备及存储介质 |
CN110109873A (zh) * | 2019-05-08 | 2019-08-09 | 重庆大学 | 一种用于消息队列的文件管理方法 |
CN110688345A (zh) * | 2019-09-26 | 2020-01-14 | 重庆大学 | 一种内存文件系统的多粒度结构化空间管理机制 |
Non-Patent Citations (4)
Title |
---|
EDWIN H.-M. SHA 等: "A New Design of In-Memory File System Based on File Virtual Address Framework", 《 IEEE TRANSACTIONS ON COMPUTERS》 * |
朱国梁: "面向新型非易失内存的系统软件关键技术研究", 《中国博士学位论文全文数据库信息科技辑》 * |
沙行勉 等: "面向同驻虚拟机的高效共享内存文件系统", 《计算机学报》 * |
潘巍 等: "新型非易失存储环境下事务型数据管理技术研究", 《软件学报》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113254198A (zh) * | 2021-04-30 | 2021-08-13 | 南开大学 | 融合Linux虚拟内存系统和文件系统的持久性内存统一管理方法 |
CN113254198B (zh) * | 2021-04-30 | 2022-08-05 | 南开大学 | 融合Linux虚拟内存系统和文件系统的持久性内存统一管理方法 |
CN113569277A (zh) * | 2021-06-25 | 2021-10-29 | 北京鼎普科技股份有限公司 | 安全文件数据检查的方法、装置和电子设备 |
CN113569277B (zh) * | 2021-06-25 | 2024-01-26 | 北京鼎普科技股份有限公司 | 安全文件数据检查的方法、装置和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111597124B (zh) | 2023-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8938601B2 (en) | Hybrid memory system having a volatile memory with cache and method of managing the same | |
US8892846B2 (en) | Metadata management for virtual volumes | |
US7461198B2 (en) | System and method for configuration and management of flash memory | |
US7171523B2 (en) | Information processing system for updating data in a shared network storage system | |
US8533397B2 (en) | Improving performance in a cache mechanism by way of destaging data in partial strides | |
US20140122781A1 (en) | Hierarchical flash translation layer | |
EP2017739A1 (en) | Processing system implementing variable page size memory organization | |
KR102449585B1 (ko) | 버저닝 저장 장치 및 방법 | |
CN106326229B (zh) | 一种嵌入式系统的文件存储方法和装置 | |
US20090089500A1 (en) | Memory cache sharing in hybrid hard disk | |
CN103038748A (zh) | 用于精确预测存储器存取的基于区域的技术 | |
CN111984188B (zh) | 混合内存数据的管理方法、装置及存储介质 | |
CN111597124B (zh) | 持久化内存文件系统数据组织方法、系统及存储介质 | |
CN104813293A (zh) | 使用动态分配的脏掩码空间的存储器管理 | |
US5276878A (en) | Method and system for task memory management in a multi-tasking data processing system | |
CN114546898A (zh) | 一种tlb管理方法、装置、设备及存储介质 | |
Chen et al. | A unified framework for designing high performance in-memory and hybrid memory file systems | |
WO2024108939A1 (zh) | 一种多级映射框架、数据操作请求处理方法及系统 | |
KR101153688B1 (ko) | 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템 | |
JPS6154547A (ja) | 3レベルの階層メモリを備えたデ−タ処理システム | |
KR100982440B1 (ko) | 단일 플래시 메모리의 데이터 관리시스템 | |
KR20150087990A (ko) | 완전 복제된 가상 머신의 디스크 이미지 파일 캐싱 시스템 및 방법 | |
US20090024798A1 (en) | Storing Data | |
CN112988074B (zh) | 一种存储系统管理软件适配方法及装置 | |
CN114647388B (zh) | 一种分布式块存储系统和管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |