刷写元数据的方法、电子设备和计算机程序产品与流程

文档序号:33622032发布日期:2023-03-25 12:32阅读:32来源:国知局
刷写元数据的方法、电子设备和计算机程序产品与流程

1.本公开的实施例涉及文件系统的数据刷写领域,并且更具体地,涉及刷写元数据的方法、电子设备和计算机程序产品。


背景技术:

2.元数据是文件系统的支柱,大多数文件系统通过事务来更改元数据以保持元数据更改的一致性。这种事务需要在由元数据缓存进行真正的元数据更改之前,将元数据更改概要写入特殊的器件(对于大多数文件系统,将之称为日志器件)。当文件系统发生紊乱或意外关闭时(这意味着元数据缓存没有时间将元数据更改刷写到磁盘中),文件系统将进行日志回放。在日志回放中,程序读取日志器件,并且根据日志器件内部的更改概要来更改相关的元数据缓存。日志回放后,文件系统回到发生紊乱或意外关闭之前的状态。


技术实现要素:

3.在本公开的第一方面中,提供了一种在文件系统中刷写元数据的方法。该方法包括接收刷写请求,刷写请求指示将至少一个缓存区中的元数据刷写到持久性存储设备。该方法还包括获取多个目标指示符,目标指示符至少指示缓存区的类型以及缓存区中的区块,其中多个目标指示符基于多个目标指示符中的各个目标指示符所指示的缓存区的类型而被分类。该方法还包括从多个目标指示符中确定与至少一个缓存区的类型相同的至少一个目标指示符。该方法还包括对至少一个目标指示符所指示的区块中的元数据进行刷写。
4.在本公开的第二方面中,提供了一种电子设备。该电子设备包括处理器以及与处理器耦合的存储器,存储器具有存储于其中的指令,指令在被处理器执行时使设备执行动作。动作包括接收刷写请求,刷写请求指示将至少一个缓存区中的元数据刷写到持久性存储设备。动作还包括获取多个目标指示符,目标指示符至少指示缓存区的类型以及缓存区中的区块,其中多个目标指示符基于多个目标指示符中的各个目标指示符所指示的缓存区的类型而被分类。动作还包括从多个目标指示符中确定与至少一个缓存区的类型相同的至少一个目标指示符。动作还包括对至少一个目标指示符所指示的区块中的元数据进行刷写。
5.在本公开的第三方面中,提供了一种计算机程序产品,计算机程序产品被有形地存储在计算机可读介质上并且包括机器可执行指令,机器可执行指令在被执行时使机器执行根据第一方面的方法。
6.提供发明内容部分是为了简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或主要特征,也无意限制本公开的范围。
附图说明
7.通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它
目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。在附图中:
8.图1示出了本公开的实施例可以在其中被实现的示例环境的示意图;
9.图2示出了根据本公开的实施例的刷写元数据的示例方法的流程图;
10.图3a和图3b示出了根据本公开的一些实施例的元数据管理数据库的示意图;以及
11.图4示出了可以用来实施本公开的实施例的示例设备的框图。
具体实施方式
12.下面将参考附图中示出的若干示例实施例来描述本公开的原理。虽然附图中显示了本公开的优选实施例,但应当理解,描述这些实施例仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。
13.在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
14.当程序发起一个事务时,它会在完成日志器件写入后生成若干更改提示。更改提示指示要对哪个缓存进行相关元数据的更改。更改提示包括缓存的类型和缓存的元数据的索引。存在两个队列用于元数据管理:当前队列和同步队列。当事务完成时,程序会将更改提示附加到当前队列中。有几种情况可以触发元数据管理模块开始刷写元数据。例如计时器达到预定的时间、多种类型缓存中的某一缓存达到节流限制等。当元数据管理模块决定刷写时,当前队列中的更改提示将会以在当前队列中相同的时间顺序被附加到同步队列中,并且若干刷写线程被发起来处理同步队列。对于这些刷写线程,每次都会有一个更改提示被获取。刷写线程会根据更改提示内的缓存类型和索引来调用相关的缓存刷写应用程序接口(api),从而将元数据从相应的缓存刷写到盘(例如硬盘)中。在刷写前,日志器件内相应的元数据更改概要被标记为活动状态。刷写完成后,日志器件内相应的元数据更改概要将被标记为非活动状态。日志器件的日志大小指示被标记为活动状态的元数据更改概要的大小。日志大小越小越好。日志大小达到某个阈值也可以触发刷写请求。
15.上述刷写方法已实施多年。在元数据刷写压力小的情况下,这种刷写方法所产生的效果很好。而对于混合池文件系统和后台重复数据删除等高压刷写情况,则显示出如下一些弱点。
16.·
盲刷写:不管刷写请求基于哪个情况被触发,元数据管理模块将刷写所有更改提示所指示的缓存中的元数据。对不需要被刷写的缓存来说,这将付出不必要的工作量。
17.·
重复刷写:假设有两个事务改变了同一个区块,那么会有两个更改提示指向同一个区块。这两个更改指示从当前队列被附加到同步队列后,会有两个刷写请求被发起,但实际上只需要一个刷写请求就足够了。
18.本公开的实施例提出了一种元数据刷写方案,以解决上述问题和其他潜在问题中的一个或多个。根据本公开的各个实施例,指示刷写至少一个缓存区中的元数据的刷写请求被接收,基于缓存区的类型被分类的多个目标指示符被获取。目标指示符至少指示缓存
区的类型以及该缓存区中的区块。不会对所获取的每个目标指示符所指示的区块中的元数据进行刷写,而是从经分类的多个目标指示符确定与上述至少一个缓存区的类型相同的至少一个目标指示符。然后,对至少一个目标指示符所指示的区块中的元数据进行刷写。
19.根据在此描述的实施例,通过这样有针对性的刷写,可以避免对不需要被刷写的缓存区进行刷写。可以缩短对刷写请求的响应时间,同时减少对系统资源的占用。
20.以下将参考附图来说明本公开的基本原理和若干示例实现方式。应当理解,给出这些示例性实施例仅是为了使本领域技术人员能够更好地理解进而实现本公开的实施例,而并非以任何方式限制本公开的范围。
21.图1示出了本公开的实施例可以在其中被实现的示例环境的示意图。如图1所示,环境100包括元数据管理模块110、日志器件130、缓存区120-1、缓存区120-2、缓存区120-n(也可统称为或者单独称为“缓存区120”),其中n为自然数。
22.元数据管理模块110至少包括当前队列140和元数据管理数据库150。虽然当前队列140和元数据管理数据库150在图1中被图示为与元数据管理模块110一体设置,但并不限于此,当前队列140、元数据管理数据库150以及元数据管理模块110也可以分开设置。
23.元数据被存储在缓存区120中。根据所存储的元数据的类型不同,多个缓存区120的类型也不相同。相同类型的缓存区120中存储相同类型的元数据。每个缓存区120包括区块121-1、区块121-2、区块121-3、区块121-m(也可统称为或者单独称为“区块121”),其中m为自然数。元数据被存储在区块121中。
24.当程序发起一个事务,日志器件130记录事务对元数据进行的更改的概要。当事务完成时,程序将目标指示符141-r附加到当前队列140的末端,如图1所示。在当前队列140中,在目标指示符141-r之前还有目标指示符141-1、目标指示符141-2和目标指示符141-3。目标指示符141-1、目标指示符141-2、目标指示符141-3以及目标指示符141-r可以统称为或者单独称为“目标指示符141”,其中r为自然数。每个目标指示符141对应于一个事务。各个目标指示符至少指示相应事务所更改的元数据所在的缓存区的类型,并且指示发生更改的元数据被存储在该缓存区中的哪个区块。
25.如果日志器件130的日志大小达到阈值,日志器件130向元数据管理模块110发送刷写请求,该刷写请求至少指示要将哪些缓存区中的元数据刷写到持久性存储设备。如果缓存区120达到节流限制,也可以触发元数据管理模块110进行刷写,请求元数据管理模块110将本缓存区120中的元数据刷写到持久性存储设备中。或者如果计时器(未图示)达到预定的时间,也可以触发元数据管理模块110进行刷写。
26.应当理解,仅出于示例性的目的描述环境100的结构和功能,而不暗示对于本公开的范围的任何限制。例如,本公开的实施例还可以被应用到与环境100不同的环境中。另外,虽然图1中仅示出了三个缓存区和一个日志器件,但并不限于此,也可以存在更多或者更少的缓存区和日志器件。类似地,虽然图1中仅示出了各个缓存区中的四个区块,但并不限于此,各个缓存区中也可以存在更多或者更少的区块。各个缓存区中的区块数目可以彼此相同,也可以彼此不同。虽然图1中仅示出了当前队列中的四个目标指示符,但并不限于此,当前队列中也可以存在更多或者更少的目标指示符。
27.图2示出了根据本公开的实施例的刷写元数据的示例方法200的流程图。方法200例如可以由如图1所示的元数据管理模块110来执行。应当理解,方法200还可以包括未示出
的附加动作和/或可以省略所示出的动作,本公开的范围在此方面不受限制。图3a和图3b示出了根据本公开的一些实施例的元数据管理数据库150的示意图。以下结合图1与图3a和图3b来详细描述方法200。
28.在框210,刷写请求被接收。刷写请求指示将至少一个缓存区120(例如图1所示的缓存区120-1和缓存区120-n)中的元数据刷写到持久性存储设备。刷写请求可能来自如图1所示的日志器件130和/或缓存区120。
29.在框220,多个目标指示符被获取。目标指示符至少指示缓存区的类型以及该缓存区中的区块。多个目标指示符基于多个目标指示符中的各个目标指示符所指示的缓存区的类型而被分类。
30.如图1和图3a所示,在一些实施例中,来自当前队列140中的多个目标指示符141可以以如下方式被分类。基于多个目标指示符141所指示的缓存区120的类型的数目,创建与类型的数目相对应的位置队列。例如,在图1中,缓存区120-1是第一类型的缓存区,缓存区120-2是第二类型的缓存区,缓存区120-n是第三类型的缓存区。基于缓存区的类型数目为3,如图3a所示的三个位置队列310-1、位置队列310-2和位置队列310-n(也可统称为或者单独称为“位置队列310”)在元数据管理数据库150中被创建。然后基于目标指示符141-1、目标指示符141-2、目标指示符141-3和目标指示符141-r所指示的缓存区的类型,将各个目标指示符141分别放入相应类型的位置队列310中,如图3a所示。
31.如图1和图3b所示,在一些实施例中,来自当前队列140中的多个目标指示符141也可以以如下方式被分类。在元数据管理数据库150中创建存储队列320,将来自当前队列140的多个目标指示符141存储在存储队列320中。例如,目标指示符141-1、目标指示符141-2、目标指示符141-3和目标指示符141-r从当前队列140被转移到存储队列320。然后基于多个目标指示符141所指示的缓存区120的类型的数目(例如,如图1所示为3),在元数据管理数据库150中创建与类型的数目相对应的位置队列310-1、310-2和310-n。然后基于目标指示符141-1、目标指示符141-2、目标指示符141-3和目标指示符141-r所指示的缓存区的类型,将各个目标指示符141在存储队列320中的存储位置记录在相应类型的位置队列310中,如图3b所示。
32.返回图2,在框230,从多个目标指示符中确定与至少一个缓存区的类型相同的至少一个目标指示符。然后,在框240,对至少一个目标指示符所指示的区块中的元数据进行刷写。例如,与图1中的缓存区120-1的类型相同的目标指示符被确定为141-1和141-2,与图1中的缓存区120-n的类型相同的目标指示符被确定为141-3。刷写目标指示符141-1所指示的缓存区120-1的区块121-2中的数据、以及目标指示符141-2所指示的缓存区120-1的区块121-1中的数据,以完成针对缓存区120-1的刷写请求。刷写目标指示符141-3所指示的缓存区120-n的区块121-3中的数据,以完成针对缓存区120-n的刷写请求。
33.以此方式,可以避免对不需要被刷写的缓存区进行刷写。可以缩短对刷写请求的响应时间,同时减少对系统资源的占用。
34.在一些实施例中,还可以基于缓存区120中的至少一个条带来聚合目标指示符。每个条带可以包括缓存区中的连续8个区块。如图3a所示,在一些实施例中,在要对多个目标指示符141中的目标指示符141-2所指示的区块中的元数据进行刷写时,确定与目标指示符141-2位于同一位置队列310-1中的其他目标指示符141是否指示同一区块。如果是,则可以
在位置队列310-1中聚合这些目标指示符。例如可以移除与目标指示符141-2指示同一区块的其他目标指示符,在位置队列310-1中仅保留目标指示符141-2。
35.类似地,如图3b所示,在一些实施例中,在要对多个目标指示符141中的目标指示符141-2所指示的区块中的元数据进行刷写时,确定其他目标指示符141是否与目标指示符141-2指示同一区块。其他目标指示符141在存储队列320中的存储位置与目标指示符141-2在存储队列320中的存储位置被记录在同一位置队列310-1中。如果确定是,则可以在位置队列310-1中聚合这些目标指示符。例如可以从位置队列310-1中,移除关于与目标指示符141-2指示同一区块的其他目标指示符141的存储位置。
36.以此方式,即使有多个事务改变了同一个区块,生成了指向同一区块的多个目标指示符,也可以通过对目标指示符的聚合,来有效提高刷写的效率。
37.如图3a所示,在一些实施例中,在要对多个目标指示符141中的目标指示符141-1所指示的区块中的元数据进行刷写时,查看该区块所在的条带(未图示)。发现该条带中的另一区块是目标指示符141-2所指示的区块,而且目标指示符141-2与目标指示符141-1位于同一位置队列310-1中。因此可以使用同一线程来来刷写目标指示符141-1所指示的区块和目标指示符141-2所指示的区块。
38.类似地,在一些实施例中,确定至少一个目标指示符中的第一目标指示符所指示的第一区块所位于的条带中是否存在第二目标指示符所指示的第二区块,第二目标指示符在存储队列中的存储位置与第一目标指示符在存储队列中的存储位置被记录在同一位置队列中。然后响应于确定第一区块所位于的条带中存在第二目标指示符所指示的第二区块,使用同一线程来刷写第二区块中的元数据和第一区块中的元数据。
39.以此方式,可以通过一个线程的执行,刷写多个区块中的元数据。从而减少了对刷写请求的响应时间,减少了对系统资源的占用。
40.图4示出了可以用来实施本公开内容的实施例的示例设备400的示意性框图。例如,如图1所示的元数据管理模块110可以被包括在设备400中。如图4所示,设备400包括中央处理单元(cpu)401,其可以根据存储在只读存储器(rom)402中的计算机程序指令或者从存储单元408加载到随机访问存储器(ram)403中的计算机程序指令,来执行各种适当的动作和处理。在ram 403中,还可存储设备400操作所需的各种程序和数据。cpu 401、rom 402以及ram 403通过总线404彼此相连。输入/输出(i/o)接口405也连接至总线404。
41.设备400中的多个部件连接至i/o接口405,包括:输入单元406,例如键盘、鼠标等;输出单元407,例如各种类型的显示器、扬声器等;存储单元408,例如磁盘、光盘等;以及通信单元409,例如网卡、调制解调器、无线通信收发机等。通信单元409允许设备400通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
42.上文所描述的各个过程和处理,例如方法200,可由处理单元401执行。例如,在一些实施例中,方法200可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元408。在一些实施例中,计算机程序的部分或者全部可以经由rom 402和/或通信单元409而被载入和/或安装到设备400上。当计算机程序被加载到ram 403并由cpu 401执行时,可以执行上文描述的方法200的一个或多个动作。
43.本公开可以是方法、装置、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
44.计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是——但不限于——电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
45.这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
46.用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
47.这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
48.这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
49.也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产
生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
50.附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
51.以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1