CN112306956B - 用于元数据维护的方法、装置和计算机程序产品 - Google Patents
用于元数据维护的方法、装置和计算机程序产品 Download PDFInfo
- Publication number
- CN112306956B CN112306956B CN201910700539.0A CN201910700539A CN112306956B CN 112306956 B CN112306956 B CN 112306956B CN 201910700539 A CN201910700539 A CN 201910700539A CN 112306956 B CN112306956 B CN 112306956B
- Authority
- CN
- China
- Prior art keywords
- transaction
- metadata
- sub
- transactions
- modification
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000012423 maintenance Methods 0.000 title claims abstract description 18
- 238000004590 computer program Methods 0.000 title claims abstract description 10
- 230000004048 modification Effects 0.000 claims abstract description 132
- 238000012986 modification Methods 0.000 claims abstract description 132
- 230000004044 response Effects 0.000 claims abstract description 7
- 238000012805 post-processing Methods 0.000 claims description 19
- 230000002085 persistent effect Effects 0.000 claims description 5
- 238000013507 mapping Methods 0.000 claims description 4
- 238000011010 flushing procedure Methods 0.000 claims description 3
- 230000002123 temporal effect Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 abstract description 22
- 238000013500 data storage Methods 0.000 description 28
- 230000007246 mechanism Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1865—Transactional file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
- G06F16/1767—Concurrency control, e.g. optimistic or pessimistic approaches
- G06F16/1774—Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
- G06F16/1827—Management specifically adapted to NAS
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施例提供了用基于事务的元数据维护的方法、装置和计算机程序产品。该方法包括获取当前待处理的事务,事务与对元数据的修改相关联,每个元数据包括至少一个条目,每个事务包括至少一个子事务,每个子事务指示元数据的至少一个条目的修改;基于子事务对应的记录写入类型,对事务中至少一个子事务进行排序,子事务对应的记录写入类型包括:权限控制类型和免权限控制类型;响应于获取到权限,优先针对每个对应于权限控制类型的子事务,在第一存储区域生成元数据修改记录,其中每项元数据修改记录描述子事务所指示的元数据的至少一个条目的修改;以及响应于针对所有权限控制类型的子事务生成了元数据修改记录,释放权限,以使得其它事务有机会获取权限。通过本公开的实施例,使得元数据的维护过程更加高效和可靠。
Description
技术领域
本公开的实施例涉及数据存储领域,并且更具体地,涉及用于基于事务的用于元数据维护的方法、装置以及计算机程序产品。
背景技术
现代的数据存储系统中,数据分为实际数据和元数据。实际数据对应用于户存储的真实数据(文件),诸如,文档、音频、视频、图片,等等。元数据指代用来描述实际数据的特征的数据,诸如访问权限、实际数据拥有者以及实际数据块的分布信息等等。以基于现代存储系统的文件系统为例,为了有效管理存储对象,文件系统通常创建索引节点(inode),用于存储与文件系统的存储对象(例如,文件)相关的信息。文件系统可以为存储的每个文件创建相关联的索引节点,即元数据。索引节点作为元数据是一种数据结构,其中不直接存储文件的数据,而是存储用于与文件相关的特定信息。当用户需要通过数据存储系统操作文件时,首先得到它的元数据,才能定位到文件的位置并且得到文件的内容或相关属性。因此,需要一种高效且可靠的机制,用于实现元数据的维护。
发明内容
本公开的实施例提供了一种用于元数据维护的方案。
在本公开的第一方面中,提供了一种用于元数据维护的方法。该方法包括获取当前待处理的事务,事务与对元数据的修改相关联,每个元数据包括至少一个条目,每个事务包括至少一个子事务,每个子事务指示元数据的至少一个条目的修改;基于子事务对应的记录写入类型,对事务中至少一个子事务进行排序,子事务对应的记录写入类型包括:权限控制类型和免权限控制类型;响应于获取到权限,优先针对每个对应于权限控制类型的子事务,在第一存储区域生成元数据修改记录,其中每项元数据修改记录描述子事务所指示的元数据的至少一个条目的修改;以及响应于针对所有权限控制类型的子事务生成了元数据修改记录,释放权限,以使得其它事务有机会获取权限。
在本公开的第二方面中,提供了一种用于元数据维护的装置。该装置包括处理器以及与处理器耦合的存储器,存储器具有存储于其中的指令,指令在被处理器执行时使装置执行动作。动作包括获取当前待处理的事务,事务与对元数据的修改相关联,每个元数据包括至少一个条目,每个事务包括至少一个子事务,每个子事务指示元数据的至少一个条目的修改;基于子事务对应的记录写入类型,对事务中至少一个子事务进行排序,子事务对应的记录写入类型包括:权限控制类型和免权限控制类型;响应于获取到权限,优先针对每个对应于权限控制类型的子事务,在第一存储区域生成元数据修改记录,其中每项元数据修改记录描述子事务所指示的元数据的至少一个条目的修改;以及响应于针对所有权限控制类型的子事务生成了元数据修改记录,释放权限,以使得其它事务有机会获取权限。
在本公开的第三方面中,提供了一种计算机程序产品,计算机程序产品被有形地存储在计算机可读介质上并且包括机器可执行指令,机器可执行指令在被执行时使机器执行根据第一方面的方法。
在本公开的第四方面中,提供了一种计算机可读介质,其上存储有计算机可读指令,计算机可读指令在被执行时使设备执行根据第一方面的方法。
提供发明内容部分是为了简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或主要特征,也无意限制本公开的范围。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
图1示出了本公开的实施例可以在其中被实现的数据存储系统的示意图;
图2示出了根据本公开的实施例的维护元数据的过程的流程图;
图3示出了根据本公开的实施例的排序前的事务的示例结构;
图4示出了根据本公开的实施例的排序后的事务的示例结构;以及
图5示出了可以用来实施本公开的实施例的示例设备的框图。
具体实施方式
下面将参考附图中示出的若干示例实施例来描述本公开的原理。虽然附图中显示了本公开的优选实施例,但应当理解,描述这些实施例仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
在本文中使用的术语“事务”指代系统中的执行工作的单位,其是系统执行的原子单位,事务在执行的过程中作为一个整体处于执行成功或执行失败的状态。在诸如文件系统的数据存储系统中,事务通常与系统中数据的操作(例如,对文件系统中文件的创建、修改、删除、复制、剪切、粘贴等操作)相关联。
在本文中使用的术语“子事务”指代在执行“事务”中的操作指示。一个事务可以包括至少一个子事务。
如上所讨论的,元数据的维护在数据存储系统中非常重要。在传统的方案中,当元数据发现改变时,数据存储系统在修改元数据的同时还需要以日志的形式生成对元数据的修改记录,以此实现回滚操作并提高数据存储系统的可靠性。此外,为了提高元数据修改操作的效率,在传统的方案中,针对元数据修改操作的日志首先被记录在内存/高速缓存中,并在随后通过批量处理的方式被写入/刷新至磁盘。进一步地,为提高数据存储系统在运行时的效率,内存/高速缓存中通常存在某些元数据的镜像,数据存储系统对元数据的修改操作并不是直接对磁盘中的元数据进行修改,而是修改内存/高速缓存中元数据的镜像,并将修改后的元数据记录至脏缓存区,脏缓存区的数据通过后台程序被最终写入磁盘中,以实现对元数据的修改。
元数据的修改是时间敏感性操作。因此,当根据元数据的修改日志执行回滚操作时,最新的元数据修改操作应当能够重写在先的元数据修改操作。此外,存储在脏缓存区中的将被写入/刷新至磁盘中的脏数据,应当对应最新的元数据修改操作。因此元数据的维护必须保证:
·在执行记录元数据修改的日志的操作时,在后记录的日志相较于在先的日志,应当记录更新的修改操作。
·存储在脏缓存区中脏数据,应当对应最新的元数据修改,或者当脏缓存区以先进先出的机制运行时,元数据的多个副本按照生成的时间顺序依次被写入/刷新至脏缓存区。
发明人注意到,为了确保元数据修改过程中对于时序的要求,一种的可能的实现方案是,通过一全局的日志锁,对元数据修改日志的记录过程进行控制。例如,在第一时间节点发生触发了修改元数据的事件1,事务A用于描述与事件1相关联的元数据修改操作,事务A可以包括子事务(a1,a2,a3,a4),其中子事务a1的元数据在内存/高速缓存中存在镜像;在随后的第二时间节点发生触发了修改元数据的另一事件2,事务B用于描述与事件2相关联的元数据修改操作,事务B可以包括子事务(b1,b2,b3,b4),其中子事务b2对应的元数据在内存/高速缓存中存在镜像。计算设备在执行记录元数据修改日志的操作时,事务A首先获得全局锁,依次生成针对子事务a1,a2,a3,a4的元数据修改记录,并将a1插入后置处理列表(该后置处理列表用于内存/高速缓存中的元数据镜像的修改),待事务A中的所有子事务循环结束后,事务A释放全局锁。随后,事务B获得全局锁,依次生成针对子事务b1,b2,b3,b4的元数据修改记录,并将b2插入后置处理列表(位于子事务a1之后),待事务B中的所有子事务循环结束后,事务B释放全局锁。数据存储系统可以根据后置处理列表修改内存/高速缓存中的元数据镜像。发明人注意到,以此方式虽然可以保证元数据维护过程对于时序性的要求,但是当存在多个待处理事务,并且待处理的事务包含的子事务数量较多时,元数据的修改过程将变得非常耗时,使得整个数据存储系统的执行性能不高。
发明人还注意到,在执行元数据修改的整个过程中,最耗时的操作是生成元数据修改日志的操作,因此如何改进元数据修改日志的操作,是改进数据存储系统的元数据维护过程的关键。
发明人进一步注意到,确保时序性的目的是为了避免事务间处理的冲突。而这种事务处理冲突仅存在于不同的事务间,例如,事务A和事务B均需要对相同的元数据执行修改操作。数据存储系统中运行的避免事务处理冲突的机制有很多,这些机制在一定程度上是重复的。例如,针对特定类型的子事务,数据存储系统已经为该子事务设置了控制锁(诸如文件对象读写锁、间接块访问锁等等)。因此,在针对子事务生成元数据修改日志时,并不是所有的子事务都需要全局锁,对于已经通过其他冲突避免机制保证时序性要求的子事务,用于控制生成元数据修改记录操作的全局锁就变成了一种冗余操作。
此外,发明人进一步注意到,由于事务是由一个针对元数据修改的事件所触发的,因此同一个事务内的多个子事务所描述的元数据的修改彼此不同,这使得同一个事务内的多个子事务之间不存在冲突。子事务的这一特点,允许计算设备对事务中的子事务重新排序,以按排序后的子事务顺序执行。
根据本公开的实现,提出了一种改进的用于元数据维护的方案。该方案在执行维护元数据的操作时,尤其是生成元数据的修改记录时,可以实现多个事务至少部分地并行记录元数据修改记录,缩短了生成元数据修改记录的时间,提高了数据存储系统的性能。具体地,计算设备根据子事务对应的记录写入类型对当前待事务中的子事务进行排序,当获取到权限时,优先针对每个对应于权限控制类型的子事务生成元数据修改记录,并在针对所有权限控制类型的子事务生成了元数据修改记录后,释放权限。以此方式,针对事务生成元数据修改记录的操作不再是一个绝对的串行操作,其充分利用了数据存储系统中已有的其他时序保证机制,在满足元数据修改对于时序性要求的同时,缩短了生成元数据修改记录的时间。尤其是当存在多个待处理事务,每个事务存在的子事务数量比较多时,本公开可以大幅地提高数据存储系统的运行性能。
图1示出了本公开的实施例可以在其中被实现的数据存储系统100的示意图。示例数据存储系统100包括计算设备110以及硬件存储150。
计算设备110作为数据存储系统100的核心处理设备,用于执行数据存储系统100中的各种逻辑操作。计算设备110包括第一存储区域120和第三存储区域130,分别用于存储元数据的修改记录以及元数据在计算设备110中的镜像,第一存储区域120和第三存储区域130可以为计算设备110的内存或其他可被快速访问的存储器(诸如高速缓存),以支持对存储元数据的修改记录以及元数据镜像的快速访问(例如,读出、写入等)。硬件存储150包括第二存储区域160和第四存储区域170,分别用于存储元数据的修改记录以及实际的元数据。硬件存储150可以是任何类型的能够提供数据存储空间的物理设备。硬件存储150的一些示例包括但不限于固态硬盘(SSD)、硬盘驱动器(HDD)、串行高级技术附件(SATA)盘、串行连接(SA)小型计算机系统接口(SCSI)盘SAS盘等等。第一存储区域120的盘容量可以是任意大小。
应当理解,虽然图1示出特定数目计算设备110和硬件存储150,计算设备110包括特定数目的第一存储区域120和第三存储区域130,硬件存储150包括特定数目的第二存储区域160和第四存储区域170,在其他的一些示例实施例中,计算设备、硬件存储、第一存储区域、第二存储区域、第三存储区域和第四存储区域的数量可能变化,本公开的范围在此方面不受限制。进一步地,还应当理解,计算设备110与硬件存储150之间的布置也不限于图1所示的具体示例,在其他一些示例实施例中,硬件存储150可以内置在计算设备110中,或者硬件存储150可以是远程存储设备、或者云存储设备等,本公开的范围在此方面亦不受限制。此外,还应当理解,计算设备110和硬件存储150的连接关系也可以是各种形式,例如,有线、无线或者因特网等等,本公开的范围在此方面亦不受限制。
下文将参考图2至图4来更详细地描述基于事务的用于元数据维护的过程。
图2示出了根据本公开的一些示例实施例的维护元数据的过程200的流程图。图3示出了根据本公开的一些示例实施例的排序前的事务300的示例结构。图4示出了根据本公开的一些示例实施例的排序后的事务300’的示例结构。过程200可以由图1的计算设备110来实现。为了方便讨论,将结合图1至图4来描述过程200。
在框210,计算设备110获取当前待处理的事务300,事务300与元数据的修改相关联。事务300可以用于描述一元数据修改操作。以文件系统为例,触发元数据修改的操作可以有很多,例如,创建/修改/复制/剪切/粘贴/删除一个或多个文件对象、创建/修改/复制/剪切/粘贴/删除包括多个文件的文件夹,等等,这些操作可能会引起多个元数据的修改。元数据作为描述实际数据的数据,具有一定的结构,具体可以表现为,每个元数据可以包括至少一个条目。
参见图3,描述一元数据修改操作的事务300包子事务321至326六个子事务。例如,在作为本公开的非限定性的示例实施例中,计算设备110执行删除包括文件1和文件2的文件夹的操作,该操作需要执行修改元数据A的条目a1、元数据B的条目b1、元数据C的条目c1、元数据D的条目d1、元数据E的条目e1和元数据F的条目f1。事务300中的每个子事务321、322、323、324、325和326可以指示元数据的至少一个条目的修改。结合上述具体的示例实施例,子事务321可以描述针对元数据A的条目a1的修改、子事务322可以描述针对元数据B的条目b1的修改、子事务323可以描述针对元数据C的条目c1的修改、子事务324可以描述针对元数据D的条目d1的修改、子事务325可以描述针对元数据E的条目e1的修改,以及子事务326可以描述针对元数据F的条目f1的修改。
应当理解,本公开中所描述的上述删除文件夹的操作仅仅是示例性的,不应理解为对触发元数据操作的限定。事务300可以用于描述数据存储系统中的任何与元数据修改相关的操作。还应当理解,虽然在图3中示出的事务300包括6个子事务321至326,并且6个子事务分别指示元数据A至F的不同条目的修改,在其他一些实施例中,根据与事务300相关联的元数据的修改不同,子事务的个数和描述的内容可以发生变化,本公开对此并不加以限制。
在框220,计算设备110根据子事务321至326对应的记录写入类型,对事务300中的子事务321至326进行排序。
根据本公开的一些示例实施例,子事务321至326对应的记录写入类型包括:权限控制类型和免权限控制类型。根据本公开的一些示例实施例,上述权限可以是用于控制生成元数据修改记录操作的全局锁,获得全局锁的事务即可以排他的方式生成元数据修改记录的操作。备选地,根据本公开的另外一些示例实施例,权限可以通过令牌等方式实现。继续参见图3,其中子事务321、323以及325被识别为权限控制类型,子事务322、324以及326被识别为免权限控制类型。图4示出了事务300被排序后的事务300’的示例结构,如图4所示,权限控制类型的子事务321、323以及325可以被排序在免权限控制的子事务322、324以及326之前。
根据本公开的一些示例实施例,在对子事务321至326执行排序操作前,还包括识别子事务321至326记录写入类型的操作。如之前所分析的,数据存储系统中已经存在多种时序保障机制,用以避免元数据修改操作的冲突。而如何实现子事务所指示的元数据的修改对数据存储系统而言是已知的,因此可以采用一种预先配置的方式,配置子事务对应的记录写入类型。例如,将指示针对节点索引的修改配置为免权限控制类型。这种对应关系可以以矩阵、列表等各种方式存储在计算设备110可以访问的存储设备中。计算设备110通过预先配置的对应关系,识别子事务321至326。
根据本公开的一些示例实施例,在识别子事务类型操作时,计算设备110同时判断子事务对应的元数据在内存/高速缓存中是否存在元数据镜像。当子事务对应的元数据在内存/高速缓存中是否存在元数据镜像时,将该子事务所指示的元数据的至少一个条目的修改的操作插入后置处理列表中,该后置处理列表用于实现元数据在内存/高速缓存中的镜像数据的修改。例如,参见图1以及图3,计算设备110在识别子事务321的记录写入类型时,同时判断子事务321对应的元数据是否在第三存储区域130中存在镜像,若判断结果为是,则将子事务321所指示的元数据的至少一个条目的修改的操作插入后置处理列表中。第三存储区域130可以是计算设备110的内存/高速缓存。
在框230,计算设备110判断是否获得到权限。由于事务所描述的元数据修改操作是敏感性的,因此不同的事务根据与事务相关联的元数据的修改的发生的先后顺序,依次获得权限。
根据本公开的一些示例实施例,在框230之前,计算设备110可以为事务300分配事务标识,事务标识指示与该事务相关联的元数据的修改的发生和与其它事务相关联的元数据的修改的发生之间的时间顺序。具体为,在后的事务具有更大编号的事务标识。根据本公开的一些示例实施例,事务300基于所分配的事务标识,依次获得权限。
如果事务300未获得权限(图2中未示出“否”分支),则将不会执行事务300。如果事务300获得权限,则处理流程进行到框240。
在框240,当前事务300获得权限后,计算设备110优先针对每个对应于权限控制类型的子事务,在第一存储区域120生成元数据修改记录,其中每项元数据修改记录描述子事务所指示的元数据的至少一个条目的修改。一种实现方式是,计算设备110依次循环事务300’中的子事务,参照图4,计算设备110依次在第一存储区域120生成子事务321、323以及子事务325所指示的元数据修改记录。根据本公开的一些示例实施例,第一存储区域120为位于计算设备110内的计算设备110能够快速访问的高速存储空间,例如,内存或高速缓存区等。以此方式,元数据的修改记录可以快速地记录在计算设备110上。根据本公开的一些示例实施例,第一存储区域120是断电不丢失类型的存储区域。
在框250,计算设备110判断是否已经针对所有权限控制类型的子事务生成了元数据修改记录。当框250的判断结果为“是”时,计算设备110在框260处,释放权限,以使得其它事务有机会继续获取权限。若框250的判断结果为“否”,则返回框240,继续针对还未生成元数据修改记录的子事务,在第一存储区域120上生成元数据修改记录。
继续参考图4,在该具体示例中,计算设备110判断是否已经针对子事务321、323以及325生成了元数据修改记录。根据本公开的一些示例实施例,当计算设备110确定当前待处理的子事务已经是免权限控制类型时,则确定已经针对所有权限控制类型的子事务生成了元数据修改记录。继续参见图4所述的本公开的具体示例实施例,当计算设备110检测到当前待处理子事务为子事务322时,计算设备110确定已经针对所有权限控制类型的子事务生成了元数据修改记录,则释放权限。释放的权限可以被其他事务获取。
通过该方式,计算设备110占用权限的权限被缩短,即在一个事务中权限控制类型的子事务完成后,就可以释放权限,以使得其它事务有机会获取所述权限。由此,多个事务之间在一定程度上可以以并行的方式生成元数据修改记录,缩短了元数据修改记录的操作所需的时间,提高了数据存储系统的性能。
根据本公开的一些示例实施例,计算设备110还将存储在第一存储区域120上的元数据修改记录复制至第二存储区域160,第二存储区域160为持久性存储区域。参见图1,第二存储区域160可以位于硬件存储150上。根据本公开的一些示例实施例,第一存储区域120与第二存储区域160之间存在映射关系,这种映射关系表现为,当计算设备在第一存储区域120上分配一存储空间后,在第二存储区域160中相应地保留对应的存储区域,以此方式可以保证存储在第一存储区域120中的元数据修改记录随后一定可以被写入/刷新至第二存储区域160中。通过上述方式,在实现了元数据修改记录的快速生成的同时,还确保了元数据修改记录的可靠存储。
如之前所讨论的,当子事务对应的元数据在内存/高速缓存中存在元数据镜像时,则将该子事务所指示的元数据的至少一个条目的修改的操作插入后置处理列表中。因此,根据本公开的一些示例实施例,当完成与元数据修改记录关联的操作(诸如,生成元数据的修改记录、将元数据的修改记录写入/刷新至磁盘)之后,还包括根据生成的后置处理列表,修改存储在内存/高速缓冲中的元数据镜像的操作。
计算设备110根据后置处理列表中的记录,在内存/高速缓存(例如,第三存储设备130)中查找到该元数据的镜像,根据后置处理列表修改元数据镜像,并将修改后的元数据插入脏缓存区。后台程序定期将脏缓存区中的数据写入/刷新至磁盘(例如,图1所示的第四存储区域170)。通过该方式,实现元数据真实数据的修改。在修改元数据时,通过修改元数据镜像数据而非直接修改磁盘中的实际元数据的方式,实现了对元数据的快速修改,而将修改后的元数据写入/刷新至磁盘的操作,保证了元数据存储的可靠性。
由于后置处理列表的生成过程与子事务的记录写入类型的识别过程是同步执行的,因此后置处理列表所记录的元数据修改操作同样满足时序性的要求。以此方式,本公开使得针对内存/高速缓存(例如,第三存储设备130)的元数据镜像的修改操作、以及将脏数据写入/刷新至脏缓存区的操作均满足时序性的要求。
根据本公开的元数据维护过程,在生成元数据修改记录时,针对不同类型的子事务,合理使用和释放权限,在满足元数据修改过程对于时序性要求的同时,提高了数据存储系统的执行性能。
图5示出了可以用来实施本公开的实施例的示例设备500的示意性框图。设备500可以用于实现图2的过程200。如图所示,设备500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的计算机程序指令或者从存储单元508加载到随机访问存储器(RAM)503中的计算机程序指令,来执行各种适当的动作和处理。在RAM 503中,还可存储设备500操作所需的各种程序和数据。CPU501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
设备500中的多个部件连接至I/O接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理单元501执行上文所描述的各个方法和处理,例如过程300。例如,在一些实施例中,过程300可被实现为计算机软件程序或计算机程序产品,其被有形地包含于机器可读介质,诸如非瞬态计算机可读介质,诸如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由ROM 502和/或通信单元509而被载入和/或安装到设备500上。当计算机程序加载到RAM 503并由CPU 501执行时,可以执行上文描述的过程200的一个或多个步骤。备选地,在其他实施例中,CPU 501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行过程200。
本领域的技术人员应当理解,上述本公开的方法的各个步骤可以通过通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本公开不限制于任何特定的硬件和软件结合。
应当理解,尽管在上文的详细描述中提及了设备的若干装置或子装置,但是这种划分仅仅是示例性而非强制性的。实际上,根据本公开的实施例,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
以上所述仅为本公开的可选实施例,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等效替换、改进等,均应包含在本公开的保护范围之内。
Claims (11)
1.一种基于事务的用于元数据维护的方法,包括:
获取当前待处理的事务,所述事务与所述元数据的修改相关联,每个所述元数据包括至少一个条目,每个所述事务包括多个子事务,每个所述子事务指示所述元数据的至少一个条目的修改;
根据所述多个子事务中的各个子事务与记录写入类型之间的对应关系,为所述事务的所述多个子事务中的每个单独的子事务标识所述记录写入类型,所标识的每个子事务的所述记录写入类型是以下之一:权限控制类型和免权限控制类型;
响应于对所述事务的所述多个子事务中每个子事务的所述记录写入类型的标识,判断所述元数据是否在第三存储区域中存在镜像,其中所述第三存储区域位于计算设备的缓存中,并且,响应于确定所述元数据在所述第三存储区域中具有镜像,将用于执行针对所述元数据的所述至少一个条目的修改的操作插入到后处理列表中,所述至少一个条目由所述子事务指示;
根据所识别的所述多个子事务的所述记录写入类型,对所述事务的所述多个子事务进行排序,其中对所述事务的所述多个子事务的排序对所述事务的所述多个子事务进行重新排序,使得所述权限控制类型的所有子事务在所述免权限控制类型的所有子事务之前被执行;
响应于获取到权限,优先针对每个对应于权限控制类型的所述子事务,在第一存储区域生成所述元数据修改记录,其中所述权限是用于执行在位于所述计算设备的所述缓存中的第一存储区域中生成元数据修改记录的全局锁,其中每项所述元数据修改记录描述所述子事务所指示的所述元数据的所述至少一个条目的修改;
响应于针对所有权限控制类型的所述子事务生成了所述元数据修改记录,并且响应于检测到当前待处理的子事务属于所述免权限控制类型,释放所述权限,以使得其它事务有机会获取所述权限;
将在所述第一存储区域中生成的至少一个元数据修改记录复制到第二存储区域中,所述第二存储区域是位于所述计算设备可访问的硬件存储中的持久性存储区域;以及
响应于完成将所述第一存储区域中生成的所述至少一个元数据修改记录复制到所述第二存储区域中,根据所述后处理列表中的记录找到所述第三存储区域中的所述元数据的所述镜像,根据被插入到所述后处理列表中的一个或多个操作修改所述第三存储区域中的所述元数据的所述镜像,并将所述元数据的修改后的镜像插入到脏缓冲区中,以便后续从所述脏缓冲区刷新到位于所述硬件存储中的持久性的第四存储区域。
2.根据权利要求1所述的方法,还包括:
为所述事务分配第一存储区域,所述第一存储区域与所述第二存储区域之间存在映射关系。
3.根据权利要求1所述的方法,还包括:
为所述事务分配事务标识,所述事务标识指示与所述事务相关联的所述元数据的所述修改的发生和与所述其它事务相关联的所述元数据的所述修改的发生之间的时间顺序。
4.根据权利要求3所述的方法,还包括:
根据所述事务标识,获取所述权限。
5.根据权利要求1所述的方法,其中所述子事务对应的记录写入类型是预先配置的。
6.一种用于基于事务的用于元数据维护的装置,包括:
处理器;以及
与所述处理器耦合的存储器,所述存储器具有存储于其中的指令,所述指令在被处理器执行时使所述装置执行动作,所述动作包括:
获取当前待处理的事务,所述事务与所述元数据的修改相关联,每个所述元数据包括至少一个条目,每个所述事务包括多个子事务,每个所述子事务指示所述元数据的至少一个条目的修改;
根据所述多个子事务中的各个子事务与记录写入类型之间的对应关系,为所述事务的所述多个子事务中的每个单独的子事务标识所述记录写入类型,所标识的每个子事务的所述记录写入类型是以下之一:权限控制类型和免权限控制类型;
响应于对所述事务的所述多个子事务中每个子事务的所述记录写入类型的标识,判断所述元数据是否在第三存储区域中存在镜像,其中所述第三存储区域位于计算设备的缓存中,并且,响应于确定所述元数据在所述第三存储区域中具有镜像,将用于执行针对所述元数据的所述至少一个条目的修改的操作插入到后处理列表中,所述至少一个条目由所述子事务指示;
根据所识别的所述多个子事务的所述记录写入类型,对所述事务的所述多个子事务进行排序,其中对所述事务的所述多个子事务的排序对所述事务的所述多个子事务进行重新排序,使得所述权限控制类型的所有子事务在所述免权限控制类型的所有子事务之前被执行;
响应于获取到权限,优先针对每个对应于权限控制类型的所述子事务,在第一存储区域生成所述元数据修改记录,其中所述权限是用于执行在位于所述计算设备的所述缓存中的第一存储区域中生成元数据修改记录的全局锁,其中每项所述元数据修改记录描述所述子事务所指示的所述元数据的所述至少一个条目的修改;
响应于针对所有权限控制类型的所述子事务生成了所述元数据修改记录,并且响应于检测到当前待处理的子事务属于所述免权限控制类型,释放所述权限,以使得其它事务有机会获取所述权限;
将在所述第一存储区域中生成的至少一个元数据修改记录复制到第二存储区域中,所述第二存储区域是位于所述计算设备可访问的硬件存储中的持久性存储区域;以及
响应于完成将所述第一存储区域中生成的所述至少一个元数据修改记录复制到所述第二存储区域中,根据所述后处理列表中的记录找到所述第三存储区域中的所述元数据的所述镜像,根据被插入到所述后处理列表中的一个或多个操作修改所述第三存储区域中的所述元数据的所述镜像,并将所述元数据的修改后的镜像插入到脏缓冲区中,以便后续从所述脏缓冲区刷新到位于所述硬件存储中的持久性的第四存储区域。
7.根据权利要求6所述的装置,还包括:
为所述事务分配第一存储区域,所述第一存储区域与所述第二存储区域之间存在映射关系。
8.根据权利要求6所述的装置,还包括:
为所述事务分配事务标识,所述事务标识指示与所述事务相关联的所述元数据的所述修改的发生和与所述其它事务相关联的所述元数据的所述修改的发生之间的时间顺序。
9.根据权利要求8所述的装置,还包括:
根据所述事务标识,获取所述权限。
10.根据权利要求6所述的装置,其中所述子事务对应的记录写入类型是预先配置的。
11.一种计算机程序产品,所述计算机程序产品被有形地存储在计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使机器执行根据权利要求1至5中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910700539.0A CN112306956B (zh) | 2019-07-31 | 2019-07-31 | 用于元数据维护的方法、装置和计算机程序产品 |
US16/876,451 US20210034580A1 (en) | 2019-07-31 | 2020-05-18 | Method, apparatus and computer program product for maintaining metadata |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910700539.0A CN112306956B (zh) | 2019-07-31 | 2019-07-31 | 用于元数据维护的方法、装置和计算机程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112306956A CN112306956A (zh) | 2021-02-02 |
CN112306956B true CN112306956B (zh) | 2024-04-12 |
Family
ID=74260203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910700539.0A Active CN112306956B (zh) | 2019-07-31 | 2019-07-31 | 用于元数据维护的方法、装置和计算机程序产品 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20210034580A1 (zh) |
CN (1) | CN112306956B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102460376A (zh) * | 2009-06-26 | 2012-05-16 | 英特尔公司 | 无约束事务存储器(utm)系统的优化 |
US9280578B1 (en) * | 2013-06-30 | 2016-03-08 | Emc Corporation | Combining transactions in a metadata transaction log |
CN107851061A (zh) * | 2015-05-19 | 2018-03-27 | 净睿存储股份有限公司 | 远程存储器中硬件辅助的事务提交 |
CN108984566A (zh) * | 2017-06-02 | 2018-12-11 | 伊姆西Ip控股有限责任公司 | 用于文件系统日志的方法和设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7730213B2 (en) * | 2000-12-18 | 2010-06-01 | Oracle America, Inc. | Object-based storage device with improved reliability and fast crash recovery |
US9697227B2 (en) * | 2014-10-27 | 2017-07-04 | Cohesity, Inc. | Concurrent access and transactions in a distributed file system |
US11347600B2 (en) * | 2017-09-12 | 2022-05-31 | Western Digital Technologies, Inc. | Database transaction log migration |
-
2019
- 2019-07-31 CN CN201910700539.0A patent/CN112306956B/zh active Active
-
2020
- 2020-05-18 US US16/876,451 patent/US20210034580A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102460376A (zh) * | 2009-06-26 | 2012-05-16 | 英特尔公司 | 无约束事务存储器(utm)系统的优化 |
US9280578B1 (en) * | 2013-06-30 | 2016-03-08 | Emc Corporation | Combining transactions in a metadata transaction log |
CN107851061A (zh) * | 2015-05-19 | 2018-03-27 | 净睿存储股份有限公司 | 远程存储器中硬件辅助的事务提交 |
CN108984566A (zh) * | 2017-06-02 | 2018-12-11 | 伊姆西Ip控股有限责任公司 | 用于文件系统日志的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
US20210034580A1 (en) | 2021-02-04 |
CN112306956A (zh) | 2021-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9563636B2 (en) | Allowing writes to complete without obtaining a write lock to a file | |
US8751740B1 (en) | Systems, methods, and computer readable media for performance optimization of storage allocation to virtual logical units | |
US8700585B2 (en) | Optimistic locking method and system for committing transactions on a file system | |
EP2879040B1 (en) | Data storage method, data storage apparatus, and storage device | |
US8396833B2 (en) | Inode management in redirect-on-write file system | |
US9063887B2 (en) | Restoring distributed shared memory data consistency within a recovery process from a cluster node failure | |
US11321302B2 (en) | Computer system and database management method | |
JP4916892B2 (ja) | トランザクション処理のためのログ情報管理システムおよび方法 | |
JP6445049B2 (ja) | ログの管理方法及び計算機システム | |
JP5012628B2 (ja) | メモリデータベース、メモリデータベースシステム及びメモリデータベース更新方法 | |
CN110399333B (zh) | 删除快照的方法、设备和计算机程序产品 | |
JP6245700B2 (ja) | 計算機システム、データの検査方法及び計算機 | |
CN111309799A (zh) | 数据合并的实现方法、装置、系统及存储介质 | |
CN113220490A (zh) | 异步写回持久化内存的事务持久化方法及系统 | |
US9009204B2 (en) | Storage system | |
CN112306956B (zh) | 用于元数据维护的方法、装置和计算机程序产品 | |
US20170177615A1 (en) | TRANSACTION MANAGEMENT METHOD FOR ENHANCING DATA STABILITY OF NoSQL DATABASE BASED ON DISTRIBUTED FILE SYSTEM | |
US10452496B2 (en) | System and method for managing storage transaction requests | |
US11288238B2 (en) | Methods and systems for logging data transactions and managing hash tables | |
CN114328018A (zh) | 快照的创建方法、计算设备及存储介质 | |
JP2006351040A (ja) | ノード間共用ファイル制御方法 | |
US11531474B1 (en) | Storage system and data replication method in storage system | |
JP4131579B2 (ja) | データ管理システムおよびデータ管理方法 | |
KR20170130180A (ko) | 비휘발성 메모리를 이용한 데이터처리 장치 및 방법 | |
KR101887663B1 (ko) | 더미 페이지를 이용한 데이터 처리 방법 및 장치 |
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 |