数据的读取方法和***
技术领域
本发明涉及网络技术领域,特别是涉及数据的读取方法、***、计算机设备及存储介质。
背景技术
连续数据保护(CDP,Continual Data Protection)是一种基于磁盘块设备的实时备份技术。备份目标机能将IO(Input/Output,输入输出)请求封装为监控记录发送到备份服务器。与定时备份方法不同,CDP备份技术对数据的保护粒度为IO级或百万分之一秒级。另外,当发生故障或灾难时,用户可以精确选择时间点进行数据恢复,能最大程度地降低数据损失(RPO,Recovery Point Object)。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:对于采用异步模式进行增量数据读取和发送的CDP备份技术,该备份技术先构造监控记录提交到本地磁盘,然后从磁盘中提取监控记录发送到备份服务器中进行备份。磁盘上同一位置在被同步到备份服务器之前可能发生多次IO写入,进而导致所要读取或写入的增量数据与磁盘中实际的增量数据处于不一致状态。这就可能导致增量数据的读取出现错误。
发明内容
基于此,本发明实施例提供了数据的读取方法、***、计算机设备及存储介质,能提高增量数据的读取准确性。
本发明实施例的内容如下:
一种数据的读取方法,包括以下步骤:获取增量元数据;所述增量元数据用于描述增量数据;获取目标数据的一致性标记;其中,所述目标数据为所述增量元数据描述的增量数据,所述一致性标记用于描述所述目标数据与磁盘中写入的增量数据的一致性;当根据所述一致性标记确定所述目标数据与磁盘中写入的增量数据一致时,从磁盘中读取对应的增量数据。
在其中一个实施例中,所述获取增量元数据的步骤之后,还包括:将所述增量元数据添加到位于内存中的增量记录队列中;所述当根据所述一致性标记确定所述目标数据与磁盘中写入的增量数据一致时,从磁盘中读取对应的增量数据的步骤,包括:当根据所述一致性标记确定所述目标数据与磁盘中写入的增量数据一致时,从所述增量记录队列中提取所述增量元数据;根据所提取的增量元数据从磁盘中读取对应的增量数据。
在其中一个实施例中,所述增量元数据包括:磁盘偏移和数据长度;所述将所述增量元数据添加到位于内存中的增量记录队列中的步骤之前,还包括:将增量元数据写入变化扇区位图对应的扇区位上;所述对应的扇区位是根据所述磁盘偏移和数据长度确定的;当检测到所述变化扇区位图存在重叠扇区位时,将与所述重叠扇区位对应的新写入的增量元数据添加到冲突记录队列中;其中,所述重叠扇区位为变化扇区位图中新写入的增量元数据与历史增量元数据重叠的扇区位。
在其中一个实施例中,所述从磁盘中读取对应的增量数据的步骤之后,还包括:将所述重叠扇区位以及冲突记录队列中对应的增量元数据清除;遍历冲突记录队列中的冲突增量元数据,并判断所述变化扇区位图中是否存在与所述冲突增量元数据对应的重叠扇区位;当不存在时,判定所述冲突增量元数据被提前读取;将所述冲突增量元数据添加到不一致记录队列中;其中,所述不一致记录队列用于在从磁盘中读取增量数据之前进行一致性检查。
在其中一个实施例中,所述根据所提取的增量元数据从磁盘中读取对应的增量数据的步骤,包括:当不一致记录队列为空时,判定所述一致性标记为一致;根据所提取的增量元数据从磁盘中读取对应的增量数据;当不一致记录队列不为空时,判定所述一致性标记为不一致;清空所述不一致记录队列,将所述一致性标记更新为一致;并根据所提取的增量元数据从磁盘中读取对应的增量数据。
在其中一个实施例中,当不一致记录队列为空时,所述根据所提取的增量元数据从磁盘中读取对应的增量数据的步骤之前,还包括:根据当前时间更新一致性时间。
在其中一个实施例中,当不一致记录队列不为空时,所述清空所述不一致记录队列的步骤,包括:确定当前时间与一致性时间的时间差值,当所述时间差值大于预设的时间阈值时,清空所述不一致记录队列。
在其中一个实施例中,所述获取目标数据的一致性标记的步骤之前,还包括:接收写IO请求;所述写IO请求中包含有磁盘偏移;当所述一致性标记为一致时,根据所述写IO请求中的磁盘偏移确定磁盘的写入地址,将对应的增量数据写入到所述写入地址中;当所述一致性标记为不一致时,判断是否接收到睡眠结束指令;当是时,根据所述写IO请求中的磁盘偏移确定磁盘的写入地址,将对应的增量数据写入到所述写入地址中。
相应的,本发明实施例提供一种数据的读取***,包括:过滤驱动模块,用于获取增量元数据;所述增量元数据用于描述增量数据;标记获取模块,用于获取目标数据的一致性标记;其中,所述目标数据为所述增量元数据描述的增量数据,所述一致性标记用于描述所述目标数据与磁盘中写入的增量数据的一致性;以及,读取模块,用于当根据所述一致性标记确定所述目标数据与磁盘中写入的增量数据一致时,从磁盘中读取对应的增量数据。
上述数据的读取方法及***,根据一致性标记确定需要读取的增量数据与磁盘中所写入的增量数据是否一致,进而从磁盘中读取对应的增量数据,能使得目标备份机从磁盘中读取到正确的增量数据。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:获取增量元数据;所述增量元数据用于描述增量数据;获取目标数据的一致性标记;其中,所述目标数据为所述增量元数据描述的增量数据,所述一致性标记用于描述所述目标数据与磁盘中写入的增量数据的一致性;当根据所述一致性标记确定所述目标数据与磁盘中写入的增量数据一致时,从磁盘中读取对应的增量数据。
上述计算机设备,根据一致性标记确定需要读取的增量数据与磁盘中所写入的增量数据是否一致,进而从磁盘中读取对应的增量数据,能使得目标备份机从磁盘中读取到正确的增量数据。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:获取增量元数据;所述增量元数据用于描述增量数据;获取目标数据的一致性标记;其中,所述目标数据为所述增量元数据描述的增量数据,所述一致性标记用于描述所述目标数据与磁盘中写入的增量数据的一致性;当根据所述一致性标记确定所述目标数据与磁盘中写入的增量数据一致时,从磁盘中读取对应的增量数据。
上述计算机可读存储介质,根据一致性标记确定需要读取的增量数据与磁盘中所写入的增量数据是否一致,进而从磁盘中读取对应的增量数据,能使得目标备份机从磁盘中读取到正确的增量数据。
附图说明
图1为一个实施例中数据的读取方法的应用环境图;
图2为一个实施例中无本地缓存的连续数据保护方法的流程示意图;
图3为一个实施例中过滤驱动程序的工作原理示意图;
图4为一个实施例中冲突记录队列和不一致记录队列的形成原理示意图;
图5为一个实施例中增量数据的读取方法的流程示意图;
图6为一个实施例中数据的读取方法的流程示意图;
图7为另一个实施例中无本地缓存的连续数据保护方法的流程示意图;
图8为一个实施例中增量记录冲突和数据一致点检查的原理示意图;
图9为一个实施例中增量记录连续性说明示意图;
图10为一个实施例中无本地缓存的连续数据保护***的结构框图;
图11为一个实施例中增量数据的读取***的结构框图;
图12为一个实施例中数据的读取***的结构框图;
图13为另一个实施例中无本地缓存的连续数据保护***的结构框图;
图14为一个实施例中计算机设备的内部结构。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本申请提供的无本地缓存的连续数据保护方法可以应用于如图1所示的应用环境中。该应用环境中包括备份目标机101和备份服务器102,备份目标机101和备份服务器102可以通过网络进行通信。目标备份机101指的是需要进行数据备份的设备,备份服务器102是对目标备份机101上的数据进行备份的服务器。备份目标机101获取增量元数据,根据增量元数据从磁盘中读取增量数据,并发送给备份服务器102进行备份。其中,备份目标机101可以是各种存储有数据的终端、PC(personal computer)、服务器等。服务器(包括备份服务器102)可以用独立的服务器或者是多个服务器组成的服务器集群来实现。当然,对目标备份机101的数据进行备份的除了通过备份服务器实现,也可以通过其他具有备份功能的硬件设备或虚拟设备来实现。
本发明实施例提供一种无本地缓存的连续数据保护方法、***、计算机设备和存储介质。以下分别进行详细说明。
在一个实施例中,如图2所示,提供了一种无本地缓存的连续数据保护方法。以该方法应用于图1中的目标备份机端为例进行说明,包括以下步骤:
S201、获取数据备份请求;根据所述数据备份请求得到增量元数据;其中,所述增量元数据用于描述增量数据。
其中,在连续数据保护(以下简称CDP)的应用环境下,数据备份请求可以根据写IO请求触发。目标备份机拦截到上层的写IO请求时,表明目标备份机上的数据会进行写入操作且磁盘中的数据会发生变化,有必要将变化的数据备份到备份服务器中。因此目标备份机可以将写IO请求转化为对相应增量数据的数据备份请求,以触发连续数据保护。
CDP有一个初始化过程,这个过程中会把监控盘的数据完全同步到备份服务器中,初始化完成后进入实时监控过程,实时监控过程中每一次写IO请求响应相较于初始化同步都是一个增量,因此,可以将目标备份机中所写入的数据称为是增量数据。进一步地,写IO请求中可以包括增量数据的描述信息,例如:磁盘偏移、数据长度、时间戳等,这些信息可以称之为元数据。需要说明的是,备份目标机上可能有多块磁盘,目标备份机可以只截获针对某一块或某几块磁盘的写IO请求,这些被拦截的磁盘就成为监控盘,即监控盘指的是需要进行数据备份的磁盘。
本发明实施例通过增量元数据(也可以称为增量元数据记录或增量记录)来描述增量数据,增量元数据中可以包含增量数据对应的磁盘偏移、数据长度、时间戳等元数据信息。需要说明的是,增量元数据是用于描述增量数据的,它可以不包括增量数据本身。
进一步地,数据备份请求的获取可以通过内核过滤驱动程序来实现,内核过滤驱动程序实时截获上层发送的写IO请求,并转化为对相应增量数据的数据备份请求,并根据所截获的数据备份请求中的磁盘偏移、数据长度、时间戳等生成对应的增量元数据。
S202、根据所述增量元数据从磁盘中读取对应的增量数据。
增量数据可以存储在磁盘的监控盘中,并在需要进行数据备份时将增量数据从磁盘中读取出来。增量数据和增量元数据的读取可以通过内核读取例程来实现。即目标备份机中的数据读取工作都可以通过内核读取例程来实现。
S203、将所读取的增量数据发送给备份服务器,以触发所述备份服务器对所述增量数据进行备份。
目标备份机根据写IO请求对监控盘中的数据进行读写,同时目标备份机将对应的增量数据实时地发送给备份服务器,以实现连续的数据保护,可以精确选择时间点进行数据恢复,能最大程度地降低数据损失。
其中,增量数据的发送可以由内核发送例程来实现;内核读取例程将所读取的增量数据提交给内核发送例程,内核发送例程将所接收到的增量数据发送给备份服务器。
基于本地被截获的写IO请求的落盘时机,连续数据保护可以分为同步和异步两种模式。本实施例中内核读取例程和内核发送例程可以采用异步模式进行增量数据读取和发送。
其中,同步模式的基本步骤为:1、上层提交写IO请求。2、内核过滤驱动程序截获写IO请求。3、内核发送例程将监控记录发送到备份服务器。4、内核过滤驱动程序将写IO请求提交到磁盘下层驱动进行数据的写入。同步模式的优点是无需本地缓存。但由于每个写IO请求对应的数据要先发送到备份服务器才提交到本地磁盘,本地磁盘的IO性能会严重下降,每个写IO请求的耗时开销相对于无过滤驱动干涉而言增加2倍以上。另外同步模式高度依赖备份目标机和备份服务器之间的网络带宽,因此该模式通常无法应用于异地容灾,仅适用于本地备份、同城备份、高可用等场景;如果要用于异地容灾,必须架设专网。
如图3所示,异步模式的基本步骤为:S1、上层提交写IO请求。S2、内核过滤驱动程序截获写IO请求,并构造监控记录(监控记录包括{offset,length,timestamp}+data,即:磁盘偏移、数据长度、时间戳和数据)。S3、内核过滤驱动程序将监控记录提交到本地缓存盘。S4、内核过滤驱动程序将写IO请求提交到磁盘下层驱动。S5、内核读取例程从本地缓存盘中提取增量数据并发送给内核发送例程。S6、内核发送例程将增量数据发送给备份服务器。异步模式的优点是:对监控盘的IO性能影响相对较小,每个写IO请求耗时开销增加1倍左右,比同步模式的耗时开销少;且异步模式通过本地缓存盘来平滑网络带宽和磁盘速度差异,因此可以用于远距离数据备份,即能较大程度地容忍网络延迟,可以应用于异地容灾。但是,由于异步模式需要对数据进行存储,因此需要额外的本地缓存盘,如果备份目标机上没有额外的缓存盘,就无法实施连续数据保护方案或者需要借助FC、ISCSI等外置存储来提供缓存盘。另外,如果缓存盘容量太小或备份目标机与备份服务器之间的网络带宽远低于监控盘的平均数据写入速度,缓存盘很容易发生缓存溢出。
针对上述问题,本实施例提供的无本地缓存的连续数据保护方法,增量元数据所占用的空间小,目标备份机的内存足够存储。与传统基于本地缓存的连续数据保护方法相比,无需额外的磁盘作为缓存盘,也不需要FC、ISCSI等外置存储设备,可以对备份目标机和整机实施连续性数据保护。另外,与同步模式的连续数据保护相比,本发明可以容忍低带宽网络环境,支持异地数据容灾。
在一个实施例中,所述根据所述数据备份请求得到增量元数据的步骤之后,还包括:将所述增量元数据添加到位于内存中的增量记录队列中;所述根据所述增量元数据从磁盘中读取对应的增量数据的步骤,包括:从所述增量记录队列中提取所述增量元数据;根据所提取的增量元数据从磁盘中读取对应的增量数据。
其中,增量记录队列指的是用于记录增量元数据并保证内核读取例程按顺序读取增量记录队列中的增量元数据。而内核读取例程可以按照增量元数据添加到增量记录队列的先后顺序来进行增量元数据的读取。
由于内存资源有限,如果在内存中缓存IO请求对应的数据,内存很容易溢出。因此传统的CDP方案需要额外的磁盘作为缓存盘用于缓存监控数据。
本实施例中,增量元数据存储于增量记录队列中,而增量记录队列位于目标盘备份机的内存中。增量元数据所占用的空间较小(32个字节的元数据信息可以表示4K~512K的数据,空间占用仅为传统方案的1/16384~1/128),因此可以在内存缓存足够数量的增量元数据。因此本发明实施例提供的连续数据保护方法可以无本地缓存实现连续数据保护,能有效提高连续数据保护的便捷性。
在一个实施例中,所述增量元数据根据所述数据备份请求中的磁盘偏移和数据长度得到;所述将所述增量元数据添加到位于内存中的增量记录队列中的步骤之前,还包括:将增量元数据写入变化扇区位图对应的扇区位上;所述对应的扇区位是根据所述磁盘偏移和所述数据长度确定的;当检测到所述变化扇区位图存在重叠扇区位时,将与所述重叠扇区位对应的新写入的增量元数据添加到冲突记录队列中;其中,所述重叠扇区位为变化扇区位图中新写入的增量元数据与历史增量元数据所重叠的扇区位。
变化扇区位图通过一个位图(bitmap)完整映射一个监控盘,位图的每一位(bit)表示监控盘的一个扇区。初始状态下,位图的每一位都为0;设置扇区位图时,通过增量元数据对应的磁盘偏移和长度可以定位位图的起始位和结束位,然后将这一位区间设置为1。在设置为1之前还会检查位区间是否有位已经为1,如果所有位全为1,表示发生完全重叠,如果部分位为1,表示发生部分重叠。完全重叠主要用于重复扇区消重,本发明实施例主要涉及的是部分重叠的情况。这些所重叠的扇区就是上述重叠扇区,指的是被多次写入的同一扇区。
以下根据图4中的情况为例,来说明冲突记录队列中的增量元数据的添加过程:增量元数据记录(即增量元数据,如图4中的401)R2写入扇区402的S1上(如图4中带箭头的虚线),之后增量记录(即增量元数据)R5也写入扇区S1;增量记录R4写入扇区S6,之后增量记录R6也写入扇区S6;增量记录R8写入扇区S10,之后增量记录R9也写入扇区S10。也就是说,后产生的增量记录写入的扇区区域包含较早增量记录已写入的扇区,即发生扇区重叠(存在重叠扇区位),此时增量记录R5、R6、R9与其他增量记录存在IO冲突,其中增量记录R5和增量记录R2冲突,增量记录R6和增量记录R4冲突,增量记录R9和增量记录R8冲突。与增量记录R6和R9产生冲突的增量记录R4和R8尚未被读取,此时增量记录R6和R9为冲突状态,相应增量元数据记录被添加到冲突记录队列403中。
内核过滤驱动程序在构造增量元数据后,可以检查所构造的增量元数据是否与之前较早的增量元数据记录存在扇区重叠,然后将增量元数据记录添加到增量记录队列。如果存在重叠,该增量元数据记录同时被添加到冲突记录队列,表示进入冲突状态。
由于内核读取例程和内核发送例程是采用异步模式进行增量数据的读取和发送,磁盘上同一位置在被同步到备份服务器之前可能发生多次IO写入和读取,进而导致增量记录对应的增量数据处于不一致状态。本实施例,引入变化扇区位图来存储增量元数据,能表示出监控盘中某个地址的数据是否被多次写入和读取,并将其发生冲突的地方通过重叠扇区位来表示。内核读取例程通过重叠扇区位就能获知对应的地址被多次写入,且后写入的数据可能将先写入的数据覆盖,因此可以不从对应的地址上读取数据或者将所读取的数据标记为冲突数据或错误数据,能有效保证所读取的增量数据的准确性。另外,这样的操作方式能检测出增量记录对应的增量数据的不一致状态,该不一致状态可以影响磁盘数据的读取以及可能的数据恢复。
在一个实施例中,所述根据增量元数据从磁盘中读取对应的增量数据的步骤之后,还包括:将所述重叠扇区位以及冲突记录队列中对应的增量元数据清除;遍历冲突记录队列中的冲突增量元数据,并判断所述变化扇区位图中是否存在与所述冲突增量元数据对应的重叠扇区位;当不存在时,判定所述冲突增量元数据被提前读取;将所述冲突增量元数据添加到不一致记录队列中;其中,所述不一致记录队列用于在从磁盘中读取增量数据之前进行一致性检查;所述一致性检查包括确定需要读取的增量数据与磁盘中所写入的增量数据的一致性。
增量元数据存在冲突并不代表增量数据处于不一致状态,只有当发送重叠的扇区中的增量元数据被提前读取时,存在冲突的增量元数据才会由冲突状态转为不一致状态。以根据上一实施例中的例子为例,如图4所示,增量记录R5和增量记录R2冲突,当内核读取例程根据增量记录R2读取扇区S1时,扇区S1包含的数据实际是增量记录R5写入的,即增量记录R5写入的数据被提前读取,而增量记录R3对应的数据本来应该优先于增量记录R5的数据被同步到备份数据,因此增量记录R5由冲突状态转为不一致状态。相应的增量元数据需要被添加到不一致记录队列404。当不一致队列为空时,即不存在不一致增量元数据时,备份数据处于磁盘级一致状态。
另外,写入变化扇区位图中的可以是增量元数据也可以是与增量元数据对应的增量数据。进一步地,当两个增量记录写入相同的磁盘扇区,例如增量记录R1将扇区S100写入数据AAAA,在增加记录R1被读取之前,增量记录R20将扇区S100写入数据BBBB。此时增量记录R1和增量记录R20冲突,由于增量记录R1先写入,读取例程也会先处理增量记录R1。当读取例程根据R1读取数据时,实际读取到的是R20写入的数据,因此R20的数据被提前读取,因此R20转换到不一致记录队列中,直到R20被读取,数据又恢复到一致状态。
其中,在完成数据连续保护之后,如果需要进行数据恢复时;由于所备份的增量数据与增量元数据是不对应的,因此被记录为不一致的备份数据可以不用于数据恢复。而对于不一致的备份数据,可以其他的方式来重新获取,例如,不一致记录队列中的数据被独立地存放在备份服务器的某个地址区间上,通过读取这个地址区间上的数据就能实现不一致的备份数据的恢复。这样的处理方式能保证所恢复数据的准确性。
本实施例,通过设置不一致记录队列来记录被提前读取的数据,可以在内核读取例程进行数据读取时判断磁盘中的数据是否被提前读取,即所需读取的数据与磁盘中存储的数据是否一致。能实时获取到磁盘中数据的读写状态,并在增量数据被提前读取时,通过不一致记录队列中的增量元数据来控制数据的恢复,能保证所恢复数据的准确性。
在一个实施例中,所述数据备份请求包括写IO请求;所述将所述增量元数据添加到位于内存中的增量记录队列中的步骤之前,还包括:根据所述写IO请求中的磁盘偏移确定磁盘的写入地址,将对应的增量数据写入到所述写入地址中。
其中,进行增量数据的写入可以通过磁盘下层驱动来实现。下层磁盘驱动根据写IO请求对应的磁盘偏移进行寻址,然后以扇区为单位将数据写入磁盘介质(监控盘),即实现数据的落盘。需要说明的是,在本发明实施例中,将写IO请求写入到磁盘中也包括将对应的增量数据写入到磁盘中的步骤。
本实施例,将写IO请求写入的磁盘中,能对写IO请求进行保存,同时保证数据准确地写入到准确的磁盘位置上。
在一个实施例中,所述根据所述增量元数据从磁盘中读取对应的增量数据;将所读取的增量数据发送给备份服务器,以触发所述备份服务器对所述增量数据进行备份的步骤,包括:从所述增量记录队列中提取第一增量元数据,根据所述第一增量元数据判断对应的增量数据是否达到单次发送上限;若否,将所述第一增量元数据与第二增量元数据合并,得到第三增量元数据;其中,所述第二增量元数据在增量记录队列中与所述第一增量元数据相邻;根据所述第三增量元数据从磁盘中读取对应的增量数据;将所读取的增量数据添加到发送队列中,以触发所述发送队列将所述所读取的增量数据发送给备份服务器进行备份。
其中,将第一增量元数据与第二增量元数据合并的过程可以通过以下步骤实现:检查增量记录队列中第一增量元数据的下一个增量元数据(第二增量元数据)是否和当前读取位置向后相邻;如果是,则将第一增量元数据与第二增量元数据进行合并。这里的合并可以指将两个增量元数据前后放置,在进行增量数据的读取时,分别根据第一增量元数据和第二增量元数据获取对应的第一增量数据和第二增量数据。之后,将第一增量数据和第二增量数据都添加到发送队列中。
当然,第二增量元数据的个数可以为多个。即,在增量数据的长度未达到单次发送上限的情况下,可以将多个向后相邻的增量元数据合并为一个增量元数据进行读取和发送。
本实施例在不超过单次发送上限的情况下,将相邻的增量元数据进行合并,进而进行数据的备份,能够有效提高数据备份的效率,更好地实现数据的连续保护。
在一个实施例中,所述根据所述增量元数据从磁盘中读取对应的增量数据的步骤,包括:在当前读取周期中,当所述增量元数据的个数超过设定阈值时,停止从磁盘中读取增量数据,直到下一个读取周期到达。
在进行数据写入时,内核过滤驱动会构造一个增量元数据并将其缓存于内存中的增量记录队列,然后将增量数据写入到监控盘上。内核读取例程根据增量元数据从监控盘上读取增量数据提交给内核发送例程发送到备份服务器。如果IO频繁(即频繁接收到IO请求等),内核读取例程会和其他***应用会竞争磁盘资源,进而导致其他***应用的IO延时增大,为此本方案引入写性能优先机制:在IO频繁时,降低内核读取例程的工作频率(例如:内核读取例程将本次读取动作推迟到下一个读取周期处理),确保其他***应用优先获得磁盘资源完成IO操作。其中,判断写IO频繁的方法为:判断每个读取周期中写IO请求对应的增量元数据个数是否超过设定阈值;如果超过设定阈值,判定为写IO频繁。
另外,如果内核读取例程一直以低频率工作,增量元数据会不断增加,进而导致增量记录队列溢出。因此本实施例在写性能优先的基础上限定一个增量元数据记录队列的长度阈值,当达到此阈值时,内核读取例程以正常频率工作,确保增量元数据记录被尽快处理,避免增量记录队列占用过多的内存。例如,可以限定增量元数据在内存中的开销阈值。假设这个开销阈值为50M,缓存数据量为4GB~512GB。在这种情况下,当增量记录队列的内存开销达到这个开销阈值,即便IO频繁,依然读取增量数据。
在一个实施例中,如图5所示,提供了一种增量数据的读取方法,包括以下步骤:
S501、获取增量元数据;所述增量元数据用于描述增量数据。
S502、获取所述增量元数据的写状态标记;所述写状态标记用于表征对应的增量数据是否被成功写入磁盘中。
对于增量数据被成功写入磁盘的情况,写状态标记可以为写完成标记;对于增量数据未被成功写入磁盘的情况(例如,还未写入或者写入失败的情况),写状态标记可以为待完成标记。
具体地,写状态标记包括:写完成标记和待完成标记;根据所提取的增量元数据以及所述写状态标记,从磁盘中读取对应的增量数据的步骤,包括:当所述增量元数据对应的写状态标记为写完成标记时,根据所提取的增量元数据从磁盘中读取对应的增量数据;当所述增量元数据对应的写状态标记为待完成标记时,判断下一个读取周期是否到达;若是,根据所提取的增量元数据从磁盘中读取对应的增量数据。
另外,当写状态标记为待完成标记时,也可以不在下一个读取周期到达时再进行数据的读取,例如:可以实时检测写状态标记,当检测到写状态标记由待完成标记变为写完成标记时,就进行增量数据的读取。
内核读取例程根据增量元数据从磁盘中读取数据,因此在将增量元数据添加到增量记录队列之前需要先将被截获的写IO请求提交到下层磁盘驱动,否则读取例程可能会读取到旧的磁盘数据。即,获取所述增量元数据的写状态标记的步骤之前,还可以包括:接收写IO请求;所述写IO请求中包含有磁盘偏移;根据所述写IO请求中的磁盘偏移确定磁盘的写入地址,将对应的增量数据写入到所述写入地址中。
S503、当所述写状态标记为写完成标记时,根据所述增量元数据从磁盘中读取对应的增量数据。
某些版本的内核可能在过滤驱动程序下层合并IO请求,因此即便确保先提交IO请求到下层磁盘驱动,然后再根据增量元数据读取数据仍然有可能读取例程提交的读IO请求优先于先前提交的写IO请求被下层磁盘驱动响应。为此每个增量元数据记录需要增加写状态标记,该写状态标记在写IO请求对应的数据落盘后被更新。读取例程根据增量元数据记录读取数据时需要先检查该标记是否更新为完成状态,如果未完成,延迟到下一个读取周期处理。能使得目标备份机从磁盘中读取到正确的增量数据,保证连续数据保护的正常进行。
在一个实施例中,如图6所示,提供了一种数据的读取方法,包括以下步骤:
S601、获取增量元数据;所述增量元数据用于描述增量数据。
S602、获取目标数据的一致性标记;其中,所述目标数据为所述增量元数据描述的增量数据,所述一致性标记用于描述所述目标数据与磁盘中写入的增量数据的一致性。
其中,目标数据可以指磁盘中需要读取的增量数据。一致性标记可以通过前述实施例中的不一致记录队列中的信息来确定。
获取增量元数据的步骤之后,还包括:将所述增量元数据添加到位于内存中的增量记录队列中;所述当根据所述一致性标记确定所述目标数据与磁盘中写入的增量数据一致时,从磁盘中读取对应的增量数据的步骤,包括:当根据所述一致性标记确定所述目标数据与磁盘中写入的增量数据一致时,从所述增量记录队列中提取所述增量元数据;根据所提取的增量元数据从磁盘中读取对应的增量数据。
S603、当根据所述一致性标记确定所述目标数据与磁盘中写入的增量数据一致时,从磁盘中读取对应的增量数据。
这个步骤的实现过程可以包括:当不一致记录队列为空时,判定所述一致性标记为一致;根据所提取的增量元数据从磁盘中读取对应的增量数据;当不一致记录队列不为空时,判定所述一致性标记为不一致;清空所述不一致记录队列,将所述一致性标记更新为一致;并根据所提取的增量元数据从磁盘中读取对应的增量数据。
其中,清空不一致记录队列的目的是防止目标备份机长时间处于不一致状态,给目标备份机的连续数据保护造成影响。清空不一致记录队列后,原先记录在不一致记录队列中的增量元数据可以直接被删除,也可以通过内核发送例程发送给备份服务器,以存储在备份服务器某个独立的存储空间中。
本实施例根据一致性标记确定需要读取的增量数据与磁盘中所写入的增量数据是否一致,进而从磁盘中读取对应的增量数据,能使得目标备份机从磁盘中读取到正确的增量数据。
在一个实施例中,获取目标数据的一致性标记的步骤之前,还包括:接收写IO请求;所述写IO请求中包含有磁盘偏移;当所述一致性标记为一致时,根据所述写IO请求中的磁盘偏移确定磁盘的写入地址,将对应的增量数据写入到所述写入地址中;当所述一致性标记为不一致时,判断是否接收到睡眠结束指令;当是时,根据所述写IO请求中的磁盘偏移确定磁盘的写入地址,将对应的增量数据写入到所述写入地址中。本实施例只有在一致性标记为一致时,才进行写IO请求的写入。
本实施例中的过滤驱动程序每次截获到写IO请求时,需要检查一致性标记,如果进入强制一致性周期,则通过睡眠动作延缓写入操作。延缓写入操作的目的是降低增量元数据的生成速度,同时保持高速率的读取和发送,以此使得备份数据尽快进入一致状态。
当然,在其他实施例中,在进行写IO请求写入以及数据读取之前,如果确定一致性标记为不一致,除了等待下一个写入或读取周期的到来,也可以实时监测一致性标记的状态,当一致性标记变为一致时就进行相应的数据写入和读取操作。
在一个实施例中,当增量记录冲突概率较高时,备份数据可能长时间处于不一致状态。为此增加强制一致性超时机制。即,当不一致记录队列为空时,所述根据所提取的增量元数据从磁盘中读取对应的增量数据的步骤之前,还包括:根据当前时间更新一致性时间。进一步地,当不一致记录队列不为空时,所述清空所述不一致记录队列的步骤,包括:确定当前时间与一致性时间的时间差值,当所述时间差值大于预设的时间阈值时,清空所述不一致记录队列。读取例程读取数据时检查数据一致性,如果数据处于一致点,更新一致性时间为当前时间;如果处于非一致点,检查当前时间距上次一致点是否超时,如果超时则设置强制一致性标记。本实施例通过一致性超时机制能防止备份数据长时间处于不一致状态。
在一个实施例中,如图7所示,提供了一种无本地缓存的连续数据保护方法,包括以下步骤:
S701、获取多个数据备份请求,根据所述多个数据备份请求得到对应的多个初始增量元数据;其中,所述初始增量元数据用于描述增量数据。
大块连续数据写入磁盘时,内核可能会将其拆分为多个写IO请求,将这些写IO请求对应的增量元数据合并为一个读取和发送动作可以大幅提高实时备份效率。因此,在接收到多个写IO请求时,可以根据这些写IO请求转化为对应的初始增量元数据,进而对应的增量元数据。
S702、对所述多个初始增量元数据进行合并,得到增量元数据。
初始增量元数据可以根据所述数据备份请求中的磁盘偏移和数据长度得到。
本步骤可以通过以下步骤来实现:根据所述磁盘偏移和所述数据长度,对所述多个初始增量元数据进行合并。
进一步地,对所述多个初始增量元数据进行合并,得到增量元数据的步骤,包括:对所述多个初始增量元数据进行合并,得到合并初始增量元数据;获取所述合并初始增量元数据的合并长度;当所述合并长度大于预设的合并长度阈值时,结束对所述初始增量元数据的合并,将所述合并初始增量元数据确定为所述增量元数据。其中,合并长度阈值可以根据实际情况设置,例如,可以为1024个扇区。
本步骤的具体实现方式可以为:为避免单次读取和发送数据量过大,设定合并长度阈值为1024个扇区。如图8所示,增量记录连续情况包括6种场景,其中(1)、(3)、(4)为向后连续,(2)、(5)、(6)为向前连续。本实施例只考虑向后连续的情况,即OffsetA<<OffsetB,且OffsetA+LengthA>>OffsetB,且OffsetB+LengthB-OffsetA>>TLength,其中,OffsetA为当前增量记录的磁盘偏移,OffsetB为下一个增量记录的磁盘偏移,LengthA为当前增量记录的数据长度,LengthB为下一个增量记录的长度,TLength为合并长度阈值。将向后连续的初始增量元数据合并为一个增量元数据。
S703、根据所述增量元数据从磁盘中读取对应的增量数据。
关于该步骤的实现可参考上述实施的对应步骤S202,不作赘述。
S704、将所读取的增量数据发送给备份服务器,以触发所述备份服务器对所述增量数据进行备份。
关于该步骤的实现可参考上述实施的对应步骤S203,不作赘述。
本实施例,将多个数据备份请求对应的初始增量元数据进行合并,得到增量元数据,根据合并得到的增量元数据读取对应的增量数据并发送给备份服务器进行备份,能有效提高实时备份的效率。
为了更好地理解上述方法,如图9所示,以下详细阐述一个本发明无本地缓存的连续数据保护方法的应用实例。
S901、上层提交写IO请求。
S902、过滤驱动程序截获写IO请求,提取其中的磁盘偏移量、数据长度、IO时间戳等信息,并构造增量元数据记录(offset,length,timestamp)。
S903、过滤驱动程序将写IO请求提交到磁盘下层驱动,磁盘下层驱动将写IO请求写入到监控盘中。
S904、目标备份机补齐增量元数据记录,使得增量元数据记录对应的磁盘偏移和数据长度满足4KB对齐。并根据增量元数据记录对应的磁盘偏移和数据长度设置变化扇区位图,设置过程中检查是否存在重叠扇区位。
S905、将增量元数据记录添加到位于内存中的增量记录队列中。
S906、如果S904中检测到重叠扇区位,则将对应的增量元数据记录添加到冲突记录队列中。
S907、内核读取例程从增量记录队列提取一个增量元数据记录A。
S908、将重叠扇区位以及冲突记录队列中的增量元数据记录A清除;当判定冲突记录队列中的增量元数据记录A被提前读取时,将增量元数据记录A添加到不一致记录队列中。
S909、内核读取例程检查所获取的增量元数据记录对应的增量数据是否未达到单次发送上限。若未达到单次发送上限,获取一个相邻的增量元数据记录并进行增量元数据记录的合并。在通过数据一致性检查后,根据合并后的增量元数据记录从磁盘中读取增量数据。若达到单次发送上限,在通过数据一致性检查后根据增量元数据记录从磁盘中读取增量数据。
S910、内核读取例程将从磁盘中读取的增量数据添加到发送队列中。
S911、内核发送例程从发送队列提取增量数据记录并发送到备份服务器。
本实施例,增量元数据所占用的空间小,目标备份机的内存足够存储增量元数据,因此不需要额外的本地缓存,能使得连续数据的保护更加便捷。同时,通过变化扇区位图、冲突记录队列和不一致记录队列来进行冲突检测和数据一致点检查,能保证连续数据保护的有序进行。
本发明实施例中的无本地缓存的连续数据保护方法、增量数据的读取方法以及数据的读取方法中涉及到的步骤可以进行随意组合。某一步骤的具体实施方式也同样适用于其他包含相同步骤的实施例。
需要说明的是,对于前述的各方法实施例,为了简便描述,将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。
基于与上述实施例中的无本地缓存的连续数据保护方法相同的思想,本发明还提供无本地缓存的连续数据保护***,该***可用于执行上述无本地缓存的连续数据保护方法。为了便于说明,无本地缓存的连续数据保护***实施例的结构示意图中,仅仅示出了与本发明实施例相关的部分,本领域技术人员可以理解,图示结构并不构成对***的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
在一个实施例中,如图10所述,无本地缓存的连续数据保护***包括过滤驱动模块1001、读取模块1002和发送模块1003,详细说明如下:过滤驱动模块1001,用于获取数据备份请求;根据所述数据备份请求得到增量元数据;其中,所述增量元数据用于描述增量数据。读取模块1002,用于根据所述增量元数据从磁盘中读取对应的增量数据。以及,发送模块1003,用于将所读取的增量数据发送给备份服务器,以触发所述备份服务器对所述增量数据进行备份。本实施例,增量元数据所占用的空间小,目标备份机的内存足够存储增量元数据,因此不需要额外的本地缓存,能使得连续数据的保护更加便捷。
在一个实施例中,还包括:第一记录队列添加模块,用于将所述增量元数据添加到位于内存中的增量记录队列中;读取模块1002,包括:第一元数据提取子模块,用于从所述增量记录队列中提取所述增量元数据;第一数据读取子模块,用于根据所提取的增量元数据从磁盘中读取对应的增量数据。
在一个实施例中,所述增量元数据根据所述数据备份请求中的磁盘偏移和数据长度得到;还包括:扇区位图写入模块,用于将增量元数据写入变化扇区位图对应的扇区位上;所述对应的扇区位是根据所述磁盘偏移和所述数据长度确定的;第二记录队列添加模块,用于当检测到所述变化扇区位图存在重叠扇区位时,将与所述重叠扇区位对应的新写入的增量元数据添加到冲突记录队列中;其中,所述重叠扇区位为变化扇区位图中新写入的增量元数据与历史增量元数据所重叠的扇区位。
在一个实施例中,还包括:数据清除模块,用于将所述重叠扇区位以及冲突记录队列中对应的增量元数据清除;重叠判断模块,用于遍历冲突记录队列中的冲突增量元数据,并判断所述变化扇区位图中是否存在与所述冲突增量元数据对应的重叠扇区位;不一致队列添加模块,用于当不存在时,判定所述冲突增量元数据被提前读取;将所述冲突增量元数据添加到不一致记录队列中;其中,所述不一致记录队列用于在从磁盘中读取增量数据之前进行一致性检查;所述一致性检查包括确定需要读取的增量数据与磁盘中所写入的增量数据的一致性。
在一个实施例中,所述数据备份请求包括写IO请求;还包括:第一数据写入模块,用于根据所述写IO请求中的磁盘偏移确定磁盘的写入地址,将对应的增量数据写入到所述写入地址中。
在一个实施例中,还包括:发送上限判断模块,用于从所述增量记录队列中提取第一增量元数据,根据所述第一增量元数据判断对应的增量数据是否达到单次发送上限;元数据合并模块,用于若否,将所述第一增量元数据与第二增量元数据合并,得到第三增量元数据;其中,所述第二增量元数据在增量记录队列中与所述第一增量元数据相邻;第一增量数据读取模块,用于根据所述第三增量元数据从磁盘中读取对应的增量数据;数据发送模块,用于将所读取的增量数据添加到发送队列中,以触发所述发送队列将所述所读取的增量数据发送给备份服务器进行备份。
在一个实施例中,读取模块1002,还用于在当前读取周期中,当所述增量元数据的个数超过设定阈值时,停止从磁盘中读取增量数据,直到下一个读取周期到达。
在一个实施例中,如图11所述,增量数据的读取***包括过滤驱动模块1101、标记获取模块1102和读取模块1103。详细说明如下:过滤驱动模块1101,用于获取增量元数据;其中,所述增量元数据用于描述增量数据;标记获取模块1102,用于获取所述增量元数据的写状态标记;所述写状态标记用于表征对应的增量元数据是否被成功写入磁盘中;以及,读取模块1103,用于当所述写状态标记为写完成标记时,根据所述增量元数据从磁盘中读取对应的增量数据。本实施例,通过设置写状态标记,能表征对应的增量数据是否被成功写入磁盘中,因此能使得目标备份机从磁盘中读取到正确的增量数据。
在一个实施例中,还包括:IO请求接收模块,用于接收写IO请求;所述写IO请求中包含有磁盘偏移;第二数据写入模块,用于根据所述写IO请求中的磁盘偏移确定磁盘的写入地址,将对应的增量数据写入到所述写入地址中。
在一个实施例中,还包括:第三记录队列添加模块,用于将所述增量元数据添加到位于内存中的增量记录队列中;读取模块1103,包括:第二元数据提取子模块,用于从所述增量记录队列中提取所述增量元数据;第二数据读取子模块,用于根据所提取的增量元数据以及所述写状态标记,从磁盘中读取对应的增量数据。
在一个实施例中,所述写状态标记包括:写完成标记和待完成标记;读取模块1103,包括:第二增量数据读取模块,用于当所述增量元数据对应的写状态标记为写完成标记时,根据所提取的增量元数据从磁盘中读取对应的增量数据;第三增量数据读取模块,用于当所述增量元数据对应的写状态标记为待完成标记时,判断下一个读取周期是否到达;若是,根据所提取的增量元数据从磁盘中读取对应的增量数据。
在一个实施例中,如图12所述,数据的读取***包括过滤驱动模块1201、标记获取模块1202和读取模块1203。详细说明如下:过滤驱动模块1201,用于获取增量元数据;所述增量元数据用于描述增量数据;标记获取模块1202,用于获取目标数据的一致性标记;其中,所述目标数据为所述增量元数据描述的增量数据,所述一致性标记用于描述所述目标数据与磁盘中写入的增量数据的一致性;以及,读取模块1203,用于当根据所述一致性标记确定所述目标数据与磁盘中写入的增量数据一致时,从磁盘中读取对应的增量数据。本实施例,根据一致性标记确定需要读取的增量数据与磁盘中所写入的增量数据是否一致,进而从磁盘中读取对应的增量数据,能使得目标备份机从磁盘中读取到正确的增量数据。
在一个实施例中,还包括:第四记录队列添加模块,用于将所述增量元数据添加到位于内存中的增量记录队列中;读取模块1203,包括:第三元数据提取子模块,用于当根据所述一致性标记确定所述目标数据与磁盘中写入的增量数据一致时,从所述增量记录队列中提取所述增量元数据;第三数据读取子模块,用于根据所提取的增量元数据从磁盘中读取对应的增量数据。
在一个实施例中,读取模块1203,包括:第四增量数据读取模块,用于当不一致记录队列为空时,判定所述一致性标记为一致;根据所提取的增量元数据从磁盘中读取对应的增量数据;第五增量数据读取模块,用于当不一致记录队列不为空时,判定所述一致性标记为不一致;清空所述不一致记录队列,将所述一致性标记更新为一致;并根据所提取的增量元数据从磁盘中读取对应的增量数据。
在一个实施例中,当不一致记录队列为空时,还包括:一致性时间更新模块,用于根据当前时间更新一致性时间。
在一个实施例中,当不一致记录队列不为空时,第五增量数据读取模块,还用于确定当前时间与一致性时间的时间差值,当所述时间差值大于预设的时间阈值时,清空所述不一致记录队列。
在一个实施例中,如图13所述,无本地缓存的连续数据保护***包括过滤驱动模块1301、合并模块1302、读取模块1303和过滤驱动模块1301,用于获取多个数据备份请求,根据所述多个数据备份请求得到对应的多个初始增量元数据;其中,所述初始增量元数据用于描述增量数据;合并模块1302,用于对所述多个初始增量元数据进行合并,得到增量元数据;读取模块1303,用于根据所述增量元数据从磁盘中读取对应的增量数据;以及,发送模块1304,用于将所读取的增量数据发送给备份服务器,以触发所述备份服务器对所述增量数据进行备份。本实施例,将多个数据备份请求对应的初始增量元数据进行合并,得到增量元数据,根据合并得到的增量元数据读取对应的增量数据并发送给备份服务器进行备份,能有效提高实时备份的效率。
在一个实施例中,所述初始增量元数据根据所述数据备份请求中的磁盘偏移和数据长度得到;合并模块1302,还用于根据所述磁盘偏移和所述数据长度,对所述多个初始增量元数据进行合并。
在一个实施例中,合并模块1302,包括:初始元数据合并子模块,用于对所述多个初始增量元数据进行合并,得到合并初始增量元数据;合并长度获取子模块,用于获取所述合并初始增量元数据的合并长度;元数据确定模块,用于当所述合并长度大于预设的合并长度阈值时,结束对所述初始增量元数据的合并,将所述合并初始增量元数据确定为所述增量元数据。
需要说明的是,本发明的无本地缓存的连续数据保护***与本发明的无本地缓存的连续数据保护方法一一对应,在上述无本地缓存的连续数据保护方法的实施例阐述的技术特征及其有益效果均适用于无本地缓存的连续数据保护***的实施例中,具体内容可参见本发明方法实施例中的叙述,此处不再赘述,特此声明。
此外,上述示例的无本地缓存的连续数据保护***的实施方式中,各程序模块的逻辑划分仅是举例说明,实际应用中可以根据需要,例如出于相应硬件的配置要求或者软件的实现的便利考虑,将上述功能分配由不同的程序模块完成,即将所述无本地缓存的连续数据保护***的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分功能。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图14所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的数据库用于存储增量元数据、增量数据等。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种无本地缓存的连续数据保护方法。
本领域技术人员可以理解,图14中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:获取数据备份请求;根据所述数据备份请求得到增量元数据;其中,所述增量元数据用于描述增量数据;根据所述增量元数据从磁盘中读取对应的增量数据;将所读取的增量数据发送给备份服务器,以触发所述备份服务器对所述增量数据进行备份。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:获取增量元数据;所述增量元数据用于描述增量数据;获取所述增量元数据的写状态标记;所述写状态标记用于表征对应的增量数据是否被成功写入磁盘中;当所述写状态标记为写完成标记时,根据所述增量元数据从磁盘中读取对应的增量数据。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:获取增量元数据;所述增量元数据用于描述增量数据;获取目标数据的一致性标记;其中,所述目标数据为所述增量元数据描述的增量数据,所述一致性标记用于描述所述目标数据与磁盘中写入的增量数据的一致性;当根据所述一致性标记确定所述目标数据与磁盘中写入的增量数据一致时,从磁盘中读取对应的增量数据。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:获取多个数据备份请求,根据所述多个数据备份请求得到对应的多个初始增量元数据;其中,所述初始增量元数据用于描述增量数据;对所述多个初始增量元数据进行合并,得到增量元数据;根据所述增量元数据从磁盘中读取对应的增量数据;将所读取的增量数据发送给备份服务器,以触发所述备份服务器对所述增量数据进行备份。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取数据备份请求;根据所述数据备份请求得到增量元数据;其中,所述增量元数据用于描述增量数据;根据所述增量元数据从磁盘中读取对应的增量数据;将所读取的增量数据发送给备份服务器,以触发所述备份服务器对所述增量数据进行备份。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取增量元数据;所述增量元数据用于描述增量数据;获取所述增量元数据的写状态标记;所述写状态标记用于表征对应的增量数据是否被成功写入磁盘中;当所述写状态标记为写完成标记时,根据所述增量元数据从磁盘中读取对应的增量数据。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取增量元数据;所述增量元数据用于描述增量数据;获取目标数据的一致性标记;其中,所述目标数据为所述增量元数据描述的增量数据,所述一致性标记用于描述所述目标数据与磁盘中写入的增量数据的一致性;当根据所述一致性标记确定所述目标数据与磁盘中写入的增量数据一致时,从磁盘中读取对应的增量数据。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取多个数据备份请求,根据所述多个数据备份请求得到对应的多个初始增量元数据;其中,所述初始增量元数据用于描述增量数据;对所述多个初始增量元数据进行合并,得到增量元数据;根据所述增量元数据从磁盘中读取对应的增量数据;将所读取的增量数据发送给备份服务器,以触发所述备份服务器对所述增量数据进行备份。
本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,作为独立的产品销售或使用。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行***执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本发明实施例的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或(模块)单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,不能理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。