数据备份的方法和装置与流程

文档序号:16692849发布日期:2019-01-22 19:05阅读:219来源:国知局
数据备份的方法和装置与流程

本申请涉及存储领域,并且更具体地,涉及数据备份的方法和装置。



背景技术:

数据容灾技术旨在建立一个异地的数据备份存储系统,当主站点宕机之后,存储系统的备站点上保存有备份数据,以降低数据丢失带来的损失。目前,主站点和备站点之间主要通过预写日志(write-aheadlogging,wal)进行数据备份,并维护主备站点之间数据的一致性。

在传统的数据备份过程中,主站点基于wal中记录的操作请求(包括写请求或删除请求)的事务,向备站点中写数据或删除备站点中的数据,维护备站点中记录数据与主站点中记录的数据相同。例如,wal中记录第一写请求对应的事务时,主站点可以向备站点发送第二写请求,用于将第一写请求请求写入的数据写至备站点中。又例如,wal中记录第一删除请求对应的事务时,主站点可以向备站点发送第二删除请求,用于将第一删除请求请求删除的数据从备站点中删除。

然而,在上述数据备份的过程中,为了使得主站点通过读取wal能够获知wal记录的操作请求请求对数据执行的操作,需要在wal中记录操作请求对应的事务,包括操作请求请求操作的数据的信息,使得wal中记录的内容较多,导致存储wal占用的存储空间较大。



技术实现要素:

本申请提供一种数据备份的方法和装置,有利于减少存储wal占用的存储空间。

第一方面,提供了一种数据备份的方法,包括:主站点从所述主站点的存储空间中获取第一预写日志wal,所述第一wal包含第一标识,所述第一标识用于标识所述主站点接收到的至少一个目标写请求,每个目标写请求对应一个目标元数据;所述主站点使用所述第一标识,从所述主站点的硬盘存储的元数据中查找与所述第一标识对应的至少一个目标元数据;所述主站点根据所述至少一个目标元数据,从所述主站点的硬盘中查找所述至少一个目标元数据描述的至少一个写数据,每个目标元数据用于描述一个写数据;所述主站点将所述至少一个目标元数据和所述至少一个写数据发送给备站点进行备份。

上述第一wal是用于在主备站点之间进行数据备份的wal,或者可以理解为用于维护主备站点之间数据一致性的日志,即主站点通过读取wal可以明确向备站点中备份的数据以及元数据。

在本申请实施例中,通过第一wal包含的第一标识,将至少一个目标写请求请求写入的写数据以及目标数据从主站点备份至备站点,相对于传统的数据备份过程中使用的wal而言,第一wal中无需再记录写请求写入的写数据以及元数据,有利于减少第一wal中记录的内容,以减少存储第一wal占用的存储空间。

另一方面,传统的wal机制中,主站点每收到一个写请求,就会生成一个wal记录这个写请求的事务,导致主站点存储的wal的数量会非常多,占用较多的存储空间,而本申请实施例中,若上述至少一个目标写请求为多个写请求时,第一wal通过第一标识可以多个目标写请求请求写入的写数据,即,多个写请求可以复用一个wal,有利于减少wal的数量,从而减少存储wal占用的存储空间。

同时,若数据备份成功后,主站点需要删除执行成功的wal,而每删除一条wal都会带来一次io开销。在本申请实施例中,通过多个目标写请求可以复用一个wal,有利于减少wal的数量,进一步地,有利于减少在数据备份成功后,删除wal带来的io开销。

在一种可能的实现方式中,上述第一wal中禁止记录所述至少一个目标写请求包含的至少一个写数据以及至少一个元数据,所述至少一个元数据用于描述所述至少一个写数据,所述至少一个元数据与所述至少一个写数据一一对应。也就是说,在本申请实施例中的wal,通过标识标记主站点收到的操作请求,并且通过在操作请求包含的元数据中添加wal中的标识,以建立wal和元数据之间的关系。相对于传统wal而言,无需再通过在wal中添加元数据和数据的方式,建立wal和元数据、数据之间的关系,使得元数据以及数据可以不用再记录在wal中,有利于减少wal占用的存储空间。

在一种可能的实现方式中,在所述主站点获取第一wal之前,所述方法还包括:在所述主站点从所述主站点的存储空间中获取第一wal之前,所述方法还包括:所述主站点从所述主站点的存储空间中获取所述至少一个目标写请求,所述至少一个目标写请求包含所述至少一个写数据以及至少一个写数据对应的至少一个元数据,所述至少一个写数据与所述至少一个元数据一一对应;所述主站点从预先生成的wal中选择用于标识写请求的wal作为与所述至少一个目标写请求对应的第一wal;所述主站点将所述所述至少一个写数据,以及所述至少一个元数据写入所述主站点;所述主站点在所述至少一个元数据的每个元数据中添加所述第一标识,以形成所述至少一个目标元数据。

在本申请实施例中,通过从预先生成的wal中确定第一wal,避免了传统的wal机制中,生成wal的时间占用主站点处理写请求的时间,有利于降低主站点处理写请求的时延。

在一种可能的实现方式中,所述至少一个目标写请求包括连续的多个目标写请求。

在一种可能的实现方式中,上述第一wal中包含的操作类型为写操作,所述写操作用于指示将写数据以及目标数据写入备站点中。

在一种可能的实现方式中,所述方法还包括:所述主站点获取第一写请求;所述主站点从预先生成的wal中确定所述至少一个目标写请求对应的第一wal的过程中,所述主站点从预先生成的wal中确定所述第一写请求对应的第三wal;所述主站点将所述至少一个目标写请求请求写入的写数据,以及所述写数据的元数据写入所述主站点的过程中,所述主站点将所述第一写请求请求写入的第一写数据,以及所述第一写数据的元数据写入所述主站点;所述主站点在所述写数据的元数据中添加所述第一标识,以形成所述目标元数据的过程中,所述主站点在所述第一写数据的元数据中添加第三wal中记录的第三标识,以形成第一目标元数据。

在本申请实施例中,在主站点接收至少一个目标写请求的同时还接收第一写请求,主站点可以并行地向第一wal以及第三wal中记录至少一个目标写请求和第一写请求,有利于进一步减少主站点处理写请求的时延。

第二方面,提供一种数据备份的方法,包括:主站点从所述主站点的存储空间中获取第二预写日志wal,所述第二wal包含第二标识,所述第二标识用于标识所述主站点接收到的至少一个第一删除请求,每个第一删除请求对应一个目标元数据;所述主站点使用所述第二标识,从所述主站点的硬盘存储的元数据中查找与所述第二标识对应的至少一个目标元数据;所述主站点生成第二删除请求,所述第二删除请求用于请求备站点删除所述至少一个目标元数据,以及所述至少一个目标元数据中每个目标元数据描述的目标数据;所述主站点向所述备站点发送所述第二删除请求。

上述第二wal是用于进行数据备份的日志,或者上述第二wal是用于维护主备站点之间数据一致性的日志,即主站点通过读取wal可以明确需要从备站点中删除的数据以及元数据。

在本申请实施例中,主站点通过第二wal包含的第二标识,标记主站点接收到的至少一个删除请求,并根据第二标识,将至少一个删除请求请求删除的目标元数据以及目标数据从备站点中删除,相对于传统的维护数据一致性过程中使用的wal而言,第二wal中无需再记录删除请求请求删除的目标数据以及元数据,有利于减少第二wal中记录的内容,以减少存储第二wal的存储空间。

另一方面,传统的wal机制中,主站点每收到一个删除请求,就会生成一个wal记录这个删除请求的事务,导致主站点存储的wal的数量会非常多,占用较多的存储空间,而本申请实施例中,若上述至少一个删除请求为多个删除请求时,第二wal通过第二标识可以多个删除请求请求删除的目标数据,即,多个删除请求可以复用一个wal,有利于减少wal的数量,从而减少存储wal占用的存储空间。

同时,若数据备份成功后,需要删除之执行成功的wal,而每删除一条wal都会带来一次io开销。在本申请实施例中,通过多个删除请求复用一个wal,有利于减少wal的数量,进一步地,有利于减少在维护数据一致性成功后,删除wal带来的io开销。

可选地,上述第二wal中禁止记录所述至少一个第一删除请求包含的至少一个目标数据以及至少一个元数据,所述至少一个元数据用于描述所述至少一个目标数据,所述至少一个元数据与所述至少一个目标数据一一对应。也就是说,在本申请实施例中的wal,通过标识标记主站点收到的操作请求,并且通过在操作请求包含的元数据中添加wal中的标识,以建立wal和元数据之间的关系。相对于传统wal而言,无需再通过在wal中添加元数据和数据的方式,建立wal和元数据、数据之间的关系,使得元数据以及数据可以不用再记录在wal中,有利于减少wal占用的存储空间。

在一种可能的实现方式中,在所述主站点获取第一wal之前,所述方法还包括:所述主站点获取所述至少一个第一删除请求,所述至少一个第一删除请求中的每个第一删除请求包含一个元数据;所述主站点从预先生成的wal中选择用于标识删除请求的wal作为所述至少一个第一删除请求对应的第二wal;所述主站点将所述至少一个第一删除请求包含的至少一个元数据写入所述主站点;所述主站点在所述至少一个元数据中添加所述第二标识,以形成所述至少一个目标元数据。

在本申请实施例中,通过从预先生成的wal中确定第二wal,避免了传统的wal机制中,生成wal的时间占用主站点处理删除请求的时间,有利于降低主站点处理删除请求的时延。

在一种可能的实现方式中,上述第二wal中包含的操作类型为删除操作,所述删除操作用于指示从备站点以及主站点中删除目标数据以及目标数据。

在一种可能的实现方式中,所述方法还包括:所述主站点获取第一删除请求;所述主站点从预先生成的wal中确定所述至少一个删除请求对应的第二wal的过程中,所述主站点从预先生成的wal中确定所述第一删除请求对应的第四wal;所述主站点将所述至少一个删除请求请求删除的目标数据,以及所述目标数据的元数据写入所述主站点的过程中,所述主站点将所述第一删除请求请求写入的第二目标数据,以及所述第二目标数据的元数据写入所述主站点;所述主站点在所述写数据的元数据中添加所述第二标识,以形成所述目标元数据的过程中,所述主站点在所述第二目标数据的元数据中添加第四wal中记录的第四标识。

在本申请实施例中,在主站点接收至少一个第一删除请求的同时还接收第三删除请求,主站点可以并行地向第二wal以及第四wal中记录至少一个第一删除请求和第三删除请求,有利于进一步减少主站点处理删除请求的时延。

第三方面,提供一种数据备份的方法,包括:备站点接收主站点发送的第二删除请求,所述第二删除请求用于请求所述备站点删除包含第二标识的多个目标元数据,以及所述多个目标元数据中每个目标元数据对应的目标数据,所述第二标识用于标识所述主站点接收到的多个第一删除请求,所述多个第一删除请求请求所述主站点删除所述多个目标元数据以及所述多个目标元数据对应的多个目标数据;所述备站点根据所述第二删除请求,从所述备站点的硬盘中查找所述多个目标元数据以及所述多个目标数据;所述备站点删除所述多个目标元数据以及所述多个目标数据。

在本申请实施例中,备站点通过第二wal包含的第二标识,将至少一个第一删除请求对应的目标数据以及目标元数据从备站点中删除,相对于传统的数据备份过程中使用的wal而言,第二wal中无需再记录第二目标元数据以及第二数据,有利于减少第二wal中记录的内容,以减少存储第二wal占用的存储空间。

另一方面,传统的wal机制中,主站点每收到一个删除请求,就会生成一个wal记录这个删除请求的事务,导致主站点存储的wal的数量会非常多,占用较多的存储空间,而本申请实施例中,若上述至少一个删除请求为多个删除请求时,第二wal通过第二标识可以多个删除请求请求删除的目标数据,即,多个删除请求可以复用一个wal,有利于减少wal的数量,从而减少存储wal占用的存储空间。

同时,若数据备份成功后,需要删除之执行成功的wal,而每删除一条wal都会带来一次io开销。在本申请实施例中,通过多个删除请求复用一个wal,有利于减少wal的数量,进一步地,有利于减少在维护数据一致性成功后,删除wal带来的io开销。

第四方面,提供一种用于数据备份的装置,所述装置包括用于执行上述各方面中的方法的各个模块。

第五方面,提供了一种主站点,包括至少一个处理器和至少一个存储器。该至少一个存储器用于存储计算机程序,该至少一个处理器用于从至少一个存储器中调用并运行该计算机程序,使得该主站点执行上述第一方面或第二方面中的方法,主站点还包括硬盘,该硬盘用于存储所述元数据。

第六方面,提供了一种备站点,包括至少一个处理器和至少一个存储器。该至少一个存储器用于存储计算机程序,该至少一个处理器用于从存储器中调用并运行该计算机程序,使得该备站点执行上述第三方面中的方法,该备站点还包括硬盘,该硬盘用于存储多个目标元数据以及多个目标数据。

第七方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。

需要说明的是,上述计算机程序代码可以全部或者部分存储在第一存储介质上,其中第一存储介质可以与处理器封装在一起的,也可以与处理器单独封装,本申请实施例对此不作具体限定。

第八方面,提供了一种计算机可读介质,所述计算机可读介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。

附图说明

图1是本申请实施例适用的存储系统的架构图。

图2是本申请实施例的数据备份的方法的示意性流程图。

图3示出了本申请实施例的wal示意图。

图4是本申请另一实施例的数据备份的方法的示意性流程图。

图5是本申请实施例的基于wal记录操作请求的方法的流程图。

图6是本申请实施例的数据备份的装置的示意图。

图7是本申请实施例的数据备份的装置的示意图。

图8是本申请另一实施例的主站点的示意性框图。

图9是本申请实施例的数据备份的装置的示意图。

图10是本申请另一实施例的备站点的示意性框图。

具体实施方式

下面将结合附图,对本申请中的技术方案进行描述。

图1是本申请实施例适用的存储系统的架构图。图1所示的存储系统100包括主站点110和备站点120。

主站点110,用于接收客户端发送的操作请求,并先在wal中记录操作请求对应的事务,再根据操作请求修改主站点中存储的数据。

其中,上述操作请求可以是写请求或者删除请求,操作请求为写请求时,主站点可以根据写请求向主站点写数据,或者操作请求为删除请求时,主站点可以根据删除请求删除主站点中存储的数据。

备站点120,又称备份站点,用于为主站点的备份数据提供存储空间。

通常,上述主站点和备站点都可以是两个存储节点,或者两个数据中心,或者两个集群。若主站点和备站点分别为两个集群时,这两个集群可以构成双活集群。

传统的数据备份过程中,为了使得主站点通过读取wal能够获知wal记录的操作请求请求对数据执行的操作,需要在wal中记录操作请求对应的事务,包括操作请求请求操作的数据的信息(例如操作请求所请求操作的数据本身、以及操作请求所请求操作的数据的元数据;或者,操作请求所请求操作的数据的元数据),使得wal中记录的内容较多,导致存储wal占用的存储空间较大。

为了通过减少wal中记录的信息,以减少存储wal占用的存储空间,本申请实施例提供了一种数据备份的方法,在该方法中,wal中记录的操作请求的信息少于传统的wal中记录的信息,有利于减少存储wal占用的存储空间。因此,本申请实施例提出了一种新型的wal。在新型wal中,新增了“标识”这一参数,通过在wal中增加标识,用标识来标记主站点收到的操作请求,并且通过在操作请求包含的元数据中添加wal中的标识,以建立wal和元数据之间的关系。相对于传统wal而言,元数据以及数据可以不用再记录在wal中,有利于减少wal占用的存储空间。

另一方面,由于上述wal中的标记可以是直接添加在主站点存储的元数据中,而主站点原本就需要存储元数据和数据。因此,可以理解为对主站点原本就需要在硬盘中存储操作请求包含的数据以及元数据增加了额外的功能,而代价仅仅只是在主站点存储的在元数据中添加wal中记录的标识。

换句话说,现有技术中,数据和元数据一共存储了2份,一份在wal中(wal例如存储在内存中或者硬盘中),另外一份存储在另外的存储介质(例如硬盘)中。本发明实施例把现有wal中的数据和元数据取消了,以及增加一个标识,形成新型的wal,从而减小了wal所占用的存储空间,当wal需要使用数据和/或元数据时,使用标识从所述另外的储介质中获取即可。如此,相对于传统的主站点存储数据的方法而言,本申请实施例的方案并没有占用额外的存储操作请求携带的数据。

在没有特别说明的情况下,本申请后续描述中提及的“wal”均是指新型wal。

下文结合图2和图3,分别描述本申请实施例的根据写请求进行数据备份的方法流程以及基于删除请求进行数据备份的方法流程。

为了便于区分,下文中将包含第一标识的目标元数据称为“第一目标元数据”,将包含第二标识的目标元数据称为“第二目标元数据”。

图2是本申请实施例的数据备份的方法的示意性流程图。图2所示的方法包括步骤210至步骤230。

210,主站点获取第一预写日志wal,第一wal包含第一标识,第一标识用于标识主站点接收到的至少一个目标写请求,每个目标写请求对应一个第一目标元数据。

上述第一wal可以存储在主站点的存储空间中,例如主站点的内存或者主站点的硬盘中,本申请实施例对此不作具体限定。

上述第一标识可以复用wal的日志标识,或者是为标识至少一个目标写请求重新建立的标识,用于指示共用一个wal的至少一个目标写请求,可以称为切片标识(sliceid)。

主站点中可以存储有多个wal,不同的wal包含的标识标识的操作请求不同。不同的wal包含的标识标识的操作请求的操作类型也不同,例如,多个wal中的一部分wal包含的标识标识主站点接收到的写请求,另一部分wal可以通过标识标识主站点接收的删除请求,其中,wal通过wal包含的标识标识操作请求的过程会在下文中详细介绍。

例如,图3示出了本申请实施例的wal示意图,在图3所示的wal300中包括wal的日志标识310,切片标识320,以及操作类型330,其中,操作类型330用于指示wal记录的至少一个操作请求的操作类型。例如,wal为上述第一wal时,第一wal的日志标识为wal-1,第一标识为slice-1,第一wal用于记录至少一个目标写请求,那么第一wal中记录的操作类型记为写请求对应的写操作。

可选地,上述第一wal中禁止记录所述至少一个目标写请求包含的至少一个写数据以及至少一个元数据,所述至少一个元数据用于描述所述至少一个写数据,所述至少一个元数据与所述至少一个写数据一一对应。也就是说,在本申请实施例中的wal,通过标识标记主站点收到的操作请求,并且通过在操作请求包含的元数据中添加wal中的标识,以建立wal和元数据之间的关系。

220,主站点使用第一标识,从主站点的硬盘存储的元数据中查找与第一标识对应的至少一个第一目标元数据。

主站点查询第一目标元数据的方式很多,例如,主站点可以通过遍历的方式,从存储的多个元数据中,查找第一目标元数据,遍历完成主站点存储的全部元数据后,即获取了主站点中全部的第一目标元数据。又例如,主站点设置了每个wal可以通过标识标识写请求的最大数量为n,n为大于等于1的正整数,则主站点在查询第一目标元数据时,如果查询到n条第一目标元数据后,即可以认为主站点中存储的第一目标元数据查找完成,而不一定非要等到遍历完成主站点存储的全部元数据,本申请实施例对于上述查询方式不作具体限定。

230,主站点根据至少一个目标元数据,从主站点的硬盘中查找至少一个目标元数据描述的至少一个写数据,每个第一目标元数据用于描述一个写数据。

每个第一目标元数据包括一个元数据和第一wal的标识,第一目标元数据用于描述一个写数据,可以理解为,第一目标元数据通过目标元数据包含的元数据描述一个写数据。其中,第一目标元数据中包含的元数据和第一目标元数据对对应的写数据,是通过一个写请求写入主站点的。

240,主站点将至少一个第一目标元数据和至少一个写数据发送给备站点进行备份。

若主站点在将上述至少一个第一目标元数据以及至少一个写数据成功备份至备站点之后,可以删除第一wal,如果备站点备份上述第一目标元数据以及写数据的过程失败,则主站点不删除第一wal,以便主站点根据第一wal重新向备站点中写至少一个第一目标元数据以及至少一个写数据。

第一方面,在本申请实施例中,通过第一wal包含的第一标识,将至少一个目标写请求请求写入的写数据以及目标数据从主站点备份至备站点,相对于传统的数据备份过程中使用的wal而言,第一wal中无需再记录写请求写入的写数据以及元数据,有利于减少第一wal中记录的内容,以减少存储第一wal的存储空间。

第二方面,传统的wal机制中,主站点每收到一个写请求,就会生成一个wal记录这个写请求的事务,导致主站点存储的wal的数量会非常多,占用较多的存储空间,而本申请实施例中,若上述至少一个目标写请求为多个写请求时,第一wal通过第一标识可以多个写请求请求写入的写数据,即,多个写请求可以复用一个wal,有利于减少wal的数量,从而减少存储wal占用的存储空间。

第三方面,若数据备份成功后,主站点需要删除执行成功的wal,而每删除一条wal都会带来一次io开销。在本申请实施例中,通过多个写请求可以复用一个wal,有利于减少wal的数量,进一步地,有利于减少在维护数据一致性成功后,删除wal带来的io开销。

在本申请实施例中,基于wal进行数据备份的过程中,如果wal对应的数据并没有全部备份到备站点,说明基于该wal的数据备份过程失败,需要重新查询第一目标元数据,相对于传统的基于wal机制而言,查找第一目标元数据占用的时间较长,但是实际应用中,基于wal的数据备份过程失败的概率非常小,所以从存储系统的长期运行来看,结合上述三个方面的益处,本申请实施例中的wal机制相对于传统的wal而言,更加有利于提高存储系统的性能。

图4是本申请另一实施例的数据备份的方法的示意性流程图。图4所示的方法包括步骤410至步骤450。

410,主站点获取第二预写日志wal,第二wal包含第二标识,第二标识用于标识主站点接收到的至少一个删除请求,每个第一删除请求对应一个第二目标元数据。

上述第二wal可以存储在主站点的存储空间中,例如主站点的内存或者主站点的硬盘中,本申请实施例对此不作具体限定。

上述第二标识可以复用wal的日志标识,或者是为标识至少一个删除请求重新建立的标识,用于指示共用一个wal的至少一个删除请求,可以称为切片标识。

例如,图3示出了本申请实施例的wal示意图,在图3所示的wal300中包括wal的日志标识310,切片标识320,以及操作类型330,其中,操作类型330用于指示wal记录的至少一个操作请求的操作类型。例如,wal为上述第二wal时,第二wal的日志标识为wal-2,第二标识为slice-2,第二wal用于记录至少一个第一删除请求,那么第二wal中记录的操作类型记为删除请求对应的删除操作。

主站点中可以存储有多个wal,不同的wal包含的标识标识的操作请求不同。不同的wal包含的标识标识的操作请求的操作类型也不同,例如,多个wal中的一部分wal包含的标识标识主站点接收到的写请求,另一部分wal可以通过标识标识主站点接收的删除请求,其中,wal通过wal包含的标识标识操作请求的过程会在下文中详细介绍。

可选地,上述第二wal中禁止记录所述至少一个第一删除请求包含的至少一个目标数据以及至少一个元数据,所述至少一个元数据用于描述所述至少一个目标数据,所述至少一个元数据与所述至少一个目标数据一一对应。也就是说,在本申请实施例中的wal,通过标识标记主站点收到的操作请求,并且通过在操作请求包含的元数据中添加wal中的标识,以建立wal和元数据之间的关系。

420,主站点使用第二标识,从主站点的硬盘存储的元数据中查找与第二标识对应的至少一个第二目标元数据。

每个第二目标元数据包括一个元数据和第二wal的标识,第二目标元数据包括的元数据可以是第一删除请求中携带的元数据。

430,主站点生成第二删除请求,第二删除请求用于请求备站点删除至少一个第二目标元数据,以及至少一个第二目标元数据中每个目标元数据描述的目标数据。

上述第二删除请求可以携带第二标识,以便备站点可以根据第二标识确定第二删除请求请求删除的数据。备站点从存储的元数据中查找包含第二标识的目标元数据(即第二目标元数据),第二目标元数据用于描述至少一个删除请求请求删除的目标数据。备站点查找包含第二标识的第二目标元数据的具体方式可以参见步骤220,即主站点查找包含第一标识的第二目标元数据的具体方式,为了简洁,在此不再赘述。

上述第二删除请求还可以直接携带请求删除的数据,以便备站点可以直接根据第二删除请求确定第二删除请求请求删除的目标数据及第二目标元数据。

440,主站点向备站点发送第二删除请求。

450,备站点根据第二删除请求,删除目标元数据(即第二目标元数据)以及目标数据。

可选地,上述步骤450包括:备站点根据第二删除请求,从备站点的硬盘中查找多个至少一个第二目标元数据以及至少一个目标数据;备站点删除至少一个第二目标元数据以及至少一个目标数据。

上述至少一个第二目标元数据中包含的元数据用于描述至少一个目标数据,其中,至少一个第二目标元数据与所述至少一个目标数据一一对应。

需要说明的是,主站点在基于wal同步备站点中存储的数据时,是基于主站点中存储的wal进行数据同步的,而wal对应的操作请求在时间上可以是乱序的,也就是说,备站点在从存储的元数据中查找第二目标元数据时,可能会查找不到,即第二目标元数据以及目标数据还未写至备站点,此时,备站点可以通知主站点根据第二wal删除第二目标元数据以及目标数据失败,则主站点可以暂时不删除第二wal,并在本端将第二目标元数据以及目标数据标记为删除数据,并不真正删除第二目标元数据以及目标数据,直到备站点删除目标数据以及第二目标元数据成功后,主站点可以真正删除目标数据、第二目标元数据以及第二wal。

当然,如果备站点从存储的元数据中查找到第二目标元数据,并成功删除了第二目标元数据以及目标数据之后,主站点可以真正原先标记为删除数据的第二目标元数据以及目标数据,并删除第二wal。

在图2至图4所示的方法中,备站点将写写数据以及第一目标元数据的执行结果通知主站点的方式,或者备站点将删除目标数据以及第二目标元数据的执行结果通知给主站点的方式,可以通过信令交互的方式实现。例如,备站点将执行结果携带在信令中发送至主站点,或者由主站点主动从备站点获取,本申请实施例对此不作具体限定。

第一方面,在本申请实施例中,主站点通过第二wal包含的第二标识,标记主站点接收到的至少一个删除请求,并根据第二标识,将至少一个删除请求请求删除的目标元数据以及目标数据从备站点中删除,相对于传统的维护数据一致性过程中使用的wal而言,第二wal中无需再记录删除请求请求删除的目标数据以及元数据,有利于减少第二wal中记录的内容,以减少存储第二wal的存储空间。

第二方面,传统的wal机制中,主站点每收到一个删除请求,就会生成一个wal记录这个删除请求的事务,导致主站点存储的wal的数量会非常多,占用较多的存储空间,而本申请实施例中,若上述至少一个删除请求为多个删除请求时,第二wal通过第二标识可以多个删除请求请求删除的目标数据,即,多个删除请求可以复用一个wal,有利于减少wal的数量,从而减少存储wal占用的存储空间。

第三方面,若数据备份成功后,需要删除之执行成功的wal,而每删除一条wal都会带来一次io开销。在本申请实施例中,通过多个删除请求复用一个wal,有利于减少wal的数量,进一步地,有利于减少在维护数据一致性成功后,删除wal带来的io开销。

在本申请实施例中,基于wal进行数据备份的过程中,如果第二wal对应的数据并没有全部从备站点中删除,说明基于该第二wal的数据备份过程失败,需要重新查询第二目标元数据,相对于传统的基于wal机制而言,查找第二目标元数据占用的时间较长,但是实际应用中,基于wal的数据备份过程失败的概率非常小,所以从存储系统的长期运行来看,结合上述三个方面的益处,本申请实施例中的wal机制相对于传统的wal而言,更加有利于提高存储系统的性能。

上文重点介绍了第一wal和第二wal在用于数据备份的过程的应用,下文结合图5详细介绍本申请实施例的基于wal记录操作请求的方法。

图5是本申请实施例的基于wal记录操作请求的方法的流程图。图5所示的方法包括步骤510和步骤520。

510,主站点获得至少一个操作请求。

上述至少一个操作请求的操作类型相同,可以是对应写请求的写操作或者是对应删除请求的删除操作。

上述至少一个操作请求为多个操作请求时,可以是主站点连续接收到的多个操作请求,即,多个操作请求的操作类型相同,主站点可以将这多个操作请求记录在一个wal(即目标wal)中。

上述多个操作请求还可以是主站点不连续接收到的多个操作请求。多个操作请求是不连续的操作请求产生的原因可以是:主站点在接收多个操作请求期间,还接收到了与这多个操作请求的操作类型不同的其他操作请求,由于每个wal只能对应一类操作类型,那么其他操作请求可以记录在其他的wal中,如此,目标wal中记录的过个操作请求在时间上便不再连续。

上述原因还可以是为了实现并行处理。主站点同时接收了多个操作请求,即使多个操作请求对应的操作类型相同,但是为了减少主站点通过wal记录操作请求的时间,主站点可以通过不同的wal记录同时接收的多个操作请求,使得通过wal记录多个操作请求的过程可以并行处理。下文将对并行处理的具体介绍,为了简洁,在此不作具体介绍。

520,主站点确定用于记录上述至少一个操作请求的目标wal。应理解,目标wal表示记录至少一个操作请求的wal,若至少一个操作请求为写请求时,目标wal可以是第一wal;若至少一个操作请求为删除请求时,目标wal可以是第二wal。

主站点确定目标wal的方法有很多种,下文主要介绍常用的两种方式。

方式一,主站点预先生成多个wal。

所述主站点从所述主站点的存储空间中获取所述至少一个目标写请求,所述至少一个目标写请求包含所述至少一个写数据以及至少一个写数据对应的至少一个元数据,所述至少一个写数据与所述至少一个元数据一一对应;所述主站点从预先生成的wal中选择用于标识写请求的wal作为与所述至少一个目标写请求对应的第一wal;所述主站点将所述所述至少一个写数据,以及所述至少一个元数据写入所述主站点;所述主站点在所述至少一个元数据的每个元数据中添加所述第一标识,以形成所述至少一个目标元数据。

上述预先生成的wal中可以包括至少一个用于记录写请求的wal,以及至少一个用于记录删除请求的wal。其中,至少一个用于记录写请求的wal中包括上述第一wal。或者,上述预先生成的wal中可以仅仅包括至少一个用于记录写请求的wal,此时,若主站点接收到的操作请求为删除请求时,主站点可以为删除请求生成用于记录删除请求的wal,具体的生成过程可以参见方式二中的描述。

上述用于记录写请求的wal可以理解为wal中记录的操作类型为写操作。

在本申请实施例中,主站点为写请求分配预生成的wal,有利于减少主站点处理写请求的时间。避免了传统的wal机制中,主站点在接收到写请求后,才为该写请求创建wal,导致创建wal的时间占用主站点处理写请求的时间。

若至少一个操作请求为第一删除请求时,所述主站点获取所述至少一个第一删除请求,所述至少一个第一删除请求中的每个第一删除请求包含一个元数据;所述主站点从预先生成的wal中选择用于标识删除请求的wal作为所述至少一个第一删除请求对应的第二wal;所述主站点将所述至少一个第一删除请求包含的至少一个元数据写入所述主站点;所述主站点在所述至少一个元数据中添加所述第二标识,以形成所述至少一个目标元数据。

上述预先生成的wal中可以包括至少一个用于记录删除请求的wal,以及至少一个用于记录删除请求的wal。其中,至少一个用于记录删除请求的wal中包括上述第二wal。或者,上述预先生成的wal中可以仅仅包括至少一个用于记录删除请求的wal,此时,若主站点接收到的操作请求为写请求时,主站点可以为写请求生成用于记录写请求的wal,具体的生成过程可以参见方式二中的描述。

上述用于记录删除请求的wal可以理解为wal中记录的操作类型为删除操作。

在本申请实施例中,主站点为删除请求分配预生成的wal,有利于减少主站点处理删除请求的时间。避免了传统的wal机制中,主站点在接收到删除请求后,才为该删除请求创建wal,导致创建wal的时间占用主站点处理删除请求的时间。

若上述预先生成的wal中包括至少一个用于记录删除请求的wal,以及至少一个用于记录删除请求的wal,则无论主站点接收的操作请求是写请求还是删除请求,主站点都可以从预先生成的wal中,选择用于记录操作请求的wal,以减少主站点处理写请求或删除请求的时间。

在本申请实施例中,无论是第一wal还是第二wal都可以记录多个操作请求,但是,在数据备份过程中,通常通过处于完成状态的wal进行数据备份,其中处于完成状态的wal可以理解为该wal对应的多个操作请求不再变化。如果wal一直处在记录操作请求的状态,即可分配状态,那么该wal对应的操作请求是变化的,此时,如果基于处于可分配状态的wal进行数据备份,主站点可能无法确定是否将该wal对应的数据全部备份至备节点。因此,为了避免上述情况,可以为wal设定状态装换条件,即当满足该状态转换条件后,wal的状态可以由可分配状态转换为完成状态。

可选地,上述状态转换条件可以是为每个wal预先配置可以记录的操作请求的最大数量,或者为每个wal预先配置处于可分配状态的时间。本申请实施例对于上述状态转换条件的具体形式不作限定。

在本申请实施例中,若上述状态转换条件为每个wal可以记录的操作请求的最大数量时,有利于提高通过wal进行数据备份的可靠性,即主站点在通过wal进行数据备份的过程中,能够明确每个wal需要备份的数据的条目数量。

需要说明的是,上述处于可分配状态的wal可以存储在主站点的内存中,以便主站点迅速为操作请求分配上述处于可分配状态的wal。上述处于完成状态的wal可以存储在主站点的后端存储空间(例如,磁盘)中,有利于提高主站点存储上述处于完成状态的wal的可靠性。另外,为了提高主站点存储处于可分配状态的wal的可靠性,上述处于可分配状态的wal也可以在主站点的后端存储空间中备份一次。

上述预生成的多个wal中,每个wal包含一个标识,即上文中提到的第一wal中包含的第一标识,以及第二wal中包含的第二标识。其中,多个wal中记录的操作请求的操作类型不同的wal中包含的标识不同。进一步地,为了区分主站点中的每个wal,还可以为不同的wal配置不同的标识。

在主站点中,为不同的wal配置不同的标识时,可以通过为每个wal随机配置标识等方式实现。但是,为了简化生成标识的实现过程,多个wal包含的标识可以以递增的方式变化,此时,作为一种具体的实现方式,上述标识可以由主站点的标识(nodeid)以及站点内的自增变量(incrementnumber)组成,其中,自增变量可以为正整数,且以递增的方式变化。

下面以上述标识为sliceid为例,说明为多个wal配置标识的方法。上述标识为sliceid时,上述多个wal中包含日志标识以及sliceid,其中日志标识的配置过程可以参照传统的wal机制中,为wal配置日志标识的方法。sliceid可以由主站点的标识(nodeid)以及站点内的自增变量组成。假设主站点的标识为node1,自增变量为正整数,且自增变量的初始值为1,且每次递增的变量为1,则主站点内的多个wal中包含的标识可以为node1-1,node1-2,……,node1-m,其中m为主站点中存储的wal的数量。

主站点在使用过程中,偶尔会发生故障,需要重新启动,而主站点重新启动后,在为wal配置标识时,由于无法获知故障前的标识,会重新以标识的初始值(例如,初始值可以为1)开始,以递增的方式为wal配置标识,如此,主站点中wal的标识便会与故障前生成的标识重复。

为了避免上述情况,主站点可以将故障前的最后生成的wal的标识下盘,即存储在主站点的后端存储空间(例如,磁盘)中,以便主站点重启之后,可以从后端存储空间中,读取该最后生成的wal的标识,作为继续为wal配置标识的初始值,以保证主站点中的wal包含的标识唯一,且标识中自增变量按照固定的变化值严格递增。

当然,主站点故障的时间是不可控的,主站点可以周期性的将wal包含的标识下盘,有利于实现上述将故障前的最后生成的wal的标识下盘的目的。其中,周期性可以指时间上的周期性,还可以指标识递增的周期性,例如,主节点的标志每递增预设的数量后,将标识下盘。例如,标识递增50次后,将第50次变化的标识下盘,此时主节点刚好故障,如此,主节点重启后,可以在第50次变化后的标识的基础上递增。

若主站点中标识递增是伴随着wal的生成变化的,上述标识还可以指示包含该标识的wal,在主站点包含wal中的大致生成时间。另一方面,若主站点按照接收操作请求的时间与标识变化呈正相关的方式,为操作请求分配wal,则wal的标识大致上可以反映主站点接收操作请求的时间,或者说wal的标识大致上可以反映主站点中存储的数据的存储时间。如此,主站点可以按照标识递增的方式,通过标识对应的wal,在备站点中,删除或写wal对应的数据以及元数据,有利于实现主站点优先将历史数据备份至备站点。

主站点在从预生成的多个wal中,选择记录至少一个操作请求的wal时,可以逐个wal的将wal配置给至少一个操作请求,也就是说,针对相同操作类型的多个操作请求而言,只有当前wal满足上述状态转换条件后,主站点才会将操作请求分配给下一个wal。当然,为了进一步减少主站点为操作请求分配wal的时间,主站点可以同时为多个操作请求并行分配wal,此时,多个操作请求的操作类型可以相同也可以不同。

方式二,主站点为接收到的至少一个操作请求生成wal。

主站点可以在接收到上述至少一个操作请求中的第一个操作请求后,可以根据操作请求的操作类型,生成用于记录操作请求的wal。若上述至少一个操作请求的操作类型相同,且wal不满足方式一中提到的状态装换条件,则可以通过wal记录上述至少一个操作请求。

若主站点在通过wal记录至少一个操作请求后,继续接收到的操作请求与上述至少一个操作请求的操作类型不同,主站点可以为这个新接收到的操作请求重新创建wal。例如,若上述至少一个操作请求为写请求,则主站点可以为至少一个目标写请求创建第一wal,用于记录至少一个目标写请求。主站点在接收到至少一个目标写请求后,再接收到的操作请求为删除请求,则主站点可以创建第二wal,用于记录该删除请求。当然,若上述至少一个操作请求为多个操作请求,且多个操作请求中操作类型不同,主站点可以在接收到操作类型变化的操作请求后,生成新的wal,用于记录这个操作类型变化的操作请求。

需要说明的是,在方式二中,主站点存储的wal的标识,标识的变化方式,以及wal的状态的转变条件等内容,可以参照方式一中的介绍,为了简洁,在此不再赘述。

上文结合图1至图5详细介绍了本申请实施例的数据备份的方法,下文结合图6至图10详细地描述本申请实施例的用于数据备份的装置。需要说明的是,图6至图10所示的装置可以实现上述方法中各个步骤,为了简洁,在此不再赘述。

图6是本申请实施例的数据备份的装置的示意图。图6所示的装置600包括获取单元610和处理单元620。其中,装置600可以用于执行图2所示的方法,例如,获取单元610可以执行步骤210,处理单元620可以用于执行步骤220和步骤230。

获取单元610,用于从所述主站点的存储空间中获取第一预写日志wal,所述第一wal包含第一标识,所述第一标识用于标识所述主站点接收到的至少一个目标写请求,每个目标写请求对应一个目标元数据;

处理单元620,用于使用所述第一标识,从所述主站点的硬盘存储的元数据中查找与所述第一标识对应的至少一个目标元数据;

所述处理单元620,用于根据所述至少一个目标元数据,从所述主站点的硬盘中查找所述至少一个目标元数据描述的至少一个写数据,每个目标元数据用于描述一个写数据;

所述处理单元620,还用于将所述至少一个目标元数据和所述至少一个写数据发送给备站点进行备份。

在一种可能的实现方式中,所述获取单元,还用于从所述主站点的存储空间中获取所述至少一个目标写请求,所述至少一个目标写请求包含所述至少一个写数据以及至少一个写数据对应的至少一个元数据,所述至少一个写数据与所述至少一个元数据一一对应;所述处理单元,还用于从预先生成的wal中选择用于标识写请求的wal作为与所述至少一个目标写请求对应的第一wal;所述处理单元,还用于将所述至少一个写数据,以及所述至少一个元数据写入所述主站点;所述处理单元,还用于在所述至少一个元数据的每个元数据中添加所述第一标识,以形成所述至少一个目标元数据。

在一种可能的实现方式中,所述至少一个目标写请求包括连续的多个写请求。

图7是本申请实施例的数据备份的装置的示意图。图7所示的装置700包括获取单元710、处理单元720和发送单元730。其中,装置700可以用于执行图4所示的方法,例如,获取单元710可以执行步骤410,处理单元720可以用于执行步骤420,发送单元730用于执行步骤430。

获取单元710,用于从所述主站点的存储空间中获取第二预写日志wal,所述第二wal包含第二标识,所述第二标识用于标识所述主站点接收到的至少一个第一删除请求,每个第一删除请求对应一个目标元数据;

处理单元720,用于使用所述第二标识,从所述主站点的硬盘存储的元数据中查找与所述第二标识对应的至少一个目标元数据;

所述处理单元720,用于生成第二删除请求,所述第二删除请求用于请求备站点删除所述至少一个目标元数据,以及所述至少一个目标元数据中每个目标元数据描述的目标数据;

发送单元730,用于向所述备站点发送所述第二删除请求。

在一种可能的实现方式中,所述获取单元,还用于获取所述至少一个第一删除请求,所述至少一个第一删除请求中的每个第一删除请求包含一个元数据;所述处理单元,还用于从预先生成的wal中选择用于标识删除请求的wal作为所述至少一个第一删除请求对应的第二wal;所述处理单元,还用于将所述至少一个第一删除请求包含的至少一个元数据写入所述主站点;所述处理单元,还用于在所述至少一个元数据中添加所述第二标识,以形成所述至少一个目标元数据。

在可选的实施例中,上述装置600还可以是主站点800,具体地,所述处理单元620可以为处理器820,所述获取单元610可以为输入输出接口830。所述主站点800还可以包括存储器810和硬盘840,具体如图8所示。

在可选的实施例中,上述装置700还可以是主站点800,具体地,所述获取单元710以及发送单元730可以为输入输出接口830,所述处理单元720可以为处理器820。所述主站点800还可以包括存储器810和硬盘840,具体如图8所示。

图8是本申请另一实施例的主站点的示意性框图。图8所示的主站点800可以包括:存储器810、处理器820、输入/输出接口830和硬盘840。其中,存储器810、处理器820和输入/输出接口830和硬盘840通过通信连接相连,该存储器810用于存储程序指令,该处理器820用于执行该存储器820存储的程序指令,以控制输入/输出接口830接收输入的数据和信息,输出操作结果等数据,输入/输出接口830接收的数据和信息可以存储在硬盘840中,例如,硬盘840用于存储元数据。

应理解,在本申请实施例中,该处理器820可以采用通用的中央处理器(centralprocessingunit,cpu),微处理器,应用专用集成电路(applicationspecificintegratedcircuit,asic),或者一个或多个集成电路,用于执行相关程序,以实现本申请实施例所提供的技术方案。

该存储器810可以包括只读存储器和随机存取存储器,并向处理器820提供指令和数据。处理器820的一部分还可以包括非易失性随机存取存储器。例如,处理器820还可以存储设备类型的信息。

在实现过程中,上述方法的各步骤可以通过处理器820中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器810,处理器820读取存储器810中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。

图9是本申请实施例的数据备份的装置的示意图。图9所示的装置900包括接收单元910和处理单元920。

接收单元910,用于接收主站点发送的第二删除请求,所述第二删除请求用于请求所述备站点删除包含第二标识的多个目标元数据,以及所述多个目标元数据中每个目标元数据对应的目标数据,所述第二标识用于标识所述主站点接收到的多个第一删除请求,所述多个第一删除请求请求所述主站点删除所述多个目标元数据以及所述多个目标元数据对应的多个目标数据;

处理单元920,用于根据所述第二删除请求,从所述备站点的硬盘中查找所述多个目标元数据以及所述多个目标数据;

所述处理单元920,用于删除所述多个目标元数据以及所述多个目标数据。

在可选的实施例中,上述装置900还可以是备站点1000,具体地,所述获取单元910以及发送单元930可以为输入输出接口1030,所述处理单元920可以为处理器1020。所述主站点1000还可以包括存储器1010,具体如图10所示。

图10是本申请另一实施例的备站点的示意性框图。图10所示的备站点1000可以包括:存储器1010、处理器1020、输入/输出接口1030和硬盘1040。其中,存储器1010、处理器1020、输入/输出接口1030和硬盘1040通过通信连接相连,该存储器1010用于存储程序指令,该处理器1020用于执行该存储器1020存储的程序指令,以控制输入/输出接口1030接收输入的数据和信息,输出操作结果等数据,输入/输出接口1030接收的数据和信息可以存储在硬盘1040中,例如,硬盘1040用于存储目标元数据以及目标数据。

应理解,在本申请实施例中,该处理器1020可以采用通用的中央处理器(centralprocessingunit,cpu),微处理器,应用专用集成电路(applicationspecificintegratedcircuit,asic),或者一个或多个集成电路,用于执行相关程序,以实现本申请实施例所提供的技术方案。

该存储器1010可以包括只读存储器和随机存取存储器,并向处理器1020提供指令和数据。处理器1020的一部分还可以包括非易失性随机存取存储器。例如,处理器1020还可以存储设备类型的信息。

在实现过程中,上述方法的各步骤可以通过处理器1020中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1010,处理器1020读取存储器1010中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。

应理解,本申请实施例中,该处理器可以为中央处理单元(centralprocessingunit,cpu),该处理器还可以是其它通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(fieldprogrammablegatearray,fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

还应理解,本申请实施例中,硬盘(harddiskdrive,hdd)作为主站点和备站点的存储媒介之一,可以是固态硬盘(solidstatedisk,ssd)、机械硬盘(mechanicalharddisk)、混合硬盘(solidstateharddisk,sshd)等。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1