快照的读写方法及装置与流程

文档序号:11261882阅读:191来源:国知局
快照的读写方法及装置与流程

本发明涉及快照领域,具体而言,涉及一种快照的读写方法及装置。



背景技术:

在快照系统中,将进行读写的逻辑卷称为源卷,实现快照增加的辅助逻辑卷称为资源卷,差异复制是建立快照中方便快捷的方式,差异复制包括两种方法,写前拷贝(copy-on-write,简称为cow)和重定向写(redirect-on-write,简称为row)。写前拷贝方法是每次接收到源卷写操作时,先将源卷中被覆盖的数据拷贝到资源卷,然后将新数据写到源卷;重定向写方法是每次接收到源卷写操作时,直接将新数据写到资源卷中,修改映射表。

在使用写前拷贝方法建立的快照中读取快照数据时,如果数据块未被修改,直接从源卷中读取,否则从资源卷中读取;在使用重定向写建立的快照中读取源数据时,如果数据未被修改时,直接从源卷中读取,否则从快照卷中读取。

目前采用lun随机分块分布模式的存储厂商基本采用row方式实现快照,其它的存储厂商采用cow,图1是相关技术中cow方式写源卷的流程图,优点是①创建快照时,创建时间几乎是瞬间完成的;②快照逻辑不影响缓存cache的实现;③其它增值功能(远程复制,lun拷贝,分裂镜像,克隆)可以与快照使用同一个框架,并且可使用快照功能实现远程复制等。缺点是当写源卷时,对于未做cow的位置必须先通过①读取旧数据,再通过②写资源卷,最后通过③完成写源卷,这个过程中,对于一个源卷写请求,需要先做一次读请求和写请求,严重影响源卷写性能。

另外一个缺点是,只有源卷和资源卷有cache的实体卷结构,快照卷并没有实体卷结构,图2是相关技术中快照时刻点快照数据块的组成示意图,如图2所示,有源卷b,资源卷r和快照卷s,当主机读快照卷的数据(s,1),(s,2),(s,3),(s,4)时,由于快照卷在cache中并没有实体结构,所以经过快照映射逻辑重映射之后,会下发读(b,1),(r,1),(b,3),(b,4)的请求,这样对于cache来讲,判断结果是非顺序读而无法启动智能顺序流识别,破坏了cache的预读;本来是针对快照卷的顺序读却无法触发cache的智能顺序流识别。

另外当前主流做法是快照与源卷是扁平的一级快照逻辑映射,不是快照迭代继承的关系,这种扁平映射机制只能针对源卷创建快照无法对快照再创建快照。

针对相关技术中的上述问题,目前尚未存在有效的解决方案。



技术实现要素:

本发明提供了一种快照的读写方法及装置,以至少解决相关技术中在源卷和资源卷有cache的实体卷结构,而快照卷没有实体卷结构情况下,对于快照卷的顺序读无法触发cache的智能顺序流识别的问题。

根据本发明的一个方面,提供了一种快照的读写方法,包括:创建与一个源卷对应的一个或多个快照卷以及与所述一个或多个快照卷分别对应的加速卷;根据创建后的加速卷对所述源卷进行读或写操作以及根据创建后的快照卷进行读或写操作。

进一步地,所述创建与一个源卷对应的一个或多个快照以及分别与所述一个或多个快照对应的加速卷包括:从存储的资源池选择逻辑卷创建所述一个或多个快照卷以及所述一个或多个加速卷,其中,已创建的快照卷为待创建的快照卷的基础卷,所述待创建的快照卷为所述已创建的快照卷的加速卷;为所述一个或多个快照卷和所述一个或多个加速卷分配位图,其中,所述位图用于记录被所述位图标记的逻辑卷是否被修改过以及在被所述位图标记的逻辑卷上是否存在写前拷贝cow的数据;为所述一个或多个快照卷和所述一个或多个加速卷之间配置相互的地址映射表;设置各逻辑卷之间的交互接口。

进一步地,根据创建后的加速卷对所述源卷进行读操作包括:在接收到对所述加速卷进行读操作的请求后,获取所述读操作的请求中待读取数据的地址;根据所述待读取数据的地址和所述映射表在所述一个或多个加速卷中查找所述待读取数据;在所述映射表中查找到所述待读取数据的地址,直接从与所述地址对应的加速卷的物理磁盘空间读取数据;在所述映射表中未查找到所述地址时,将通过所述加速卷与基础卷之间的交互接口向所述源卷读取数据;将读取的所述源卷的数据返回给对应的加速卷,并返回给主机。

进一步地,根据创建后的加速卷对所述源卷进行写操作包括:在接收到对所述加速卷进行写操作的请求后,获取所述写操作的请求中待写入数据的地址;根据所述待写入数据的地址写入待写入数据;在加速卷刷盘时,判断已写入的数据的位图是否变化;在写入数据的逻辑卷对应的基础卷的旧数据没有做过cow且没有变化时,使用所述基础卷交互接口通过读操作将待写入数据对应的旧数据读取出去;将已读取的旧数据写入加速卷,并更新所述映射表;在写入数据的逻辑卷对应的基础卷的旧数据没有做过cow时,将待写入数据写入加速卷对应的基础卷中。

进一步地,根据创建后的快照卷进行读操作包括:在接收到对所述快照卷进行读操作的请求后,获取所述读操作的请求中待读取数据的地址;根据所述待读取数据的地址在所述映射表中查找对应的地址;在所述映射表中查找到对应的地址时,从所述快照卷对应的物理磁盘空间读取数据;在所述映射表中未查找到对应的地址时,将读操作的请 求转发到与所述快照卷对应的加速卷,并执行读加速卷的操作直到完成读操作。

进一步地,根据创建后的快照卷进行写操作包括:在接收到对所述快照卷进行写操作的请求后,获取所述写操作的请求中待写入数据的地址;根据所述待写入数据的地址在所述映射表中查找对应的地址;在所述映射表中查找到对应的地址时,根据所述地址将待写入数据;在所述映射表中查未找到对应的地址时,将所述写操作的请求转发到快照卷对应的加速卷,并执行读加速卷的操作直到完成写操作;将写入加速卷的数据写入快照卷,并更新所述映射表。

进一步地,在根据创建后的加速卷对所述源卷进行读或写操作以及根据创建后的快照卷进行读或写操作之后,所述方法还包括:接收删除快照卷的请求;判断需要删除的快照卷是否为其他快照卷的基础卷;在判断结果为否时,直接删除请求的快照卷;在判断结果为是时,将需要删除的快照卷中已存在的数据复制到对应的加速卷;并删除待删除快照卷与对应基础卷之间的接口关系;回收待删除快照卷所占用的所有资源。

根据本发明的另一个方面,提供了一种快照的读写装置,包括:创建模块,用于创建与一个源卷对应的一个或多个快照卷以及与所述一个或多个快照卷分别对应的加速卷;读写模块,用于根据创建后的加速卷对所述源卷进行读或写操作以及根据创建后的快照卷进行读或写操作。

进一步地,所述创建模块包括:创建单元,用于从存储的资源池选择逻辑卷创建所述一个或多个快照卷以及所述一个或多个加速卷,其中,已创建的快照卷为待创建的快照卷的基础卷,所述待创建的快照卷为所述已创建的快照卷的加速卷;分配单元,用于为所述一个或多个快照卷和所述一个或多个加速卷分配位图,其中,所述位图用于记录被所述位图标记的逻辑卷是否被修改过以及在被所述位图标记的逻辑卷上是否存在写前拷贝cow的数据;配置单元,用于为所述一个或多个快照卷和所述一个或多个加速卷之间配置相互的地址映射表;设置单元,用于设置各逻辑卷之间的交互接口。

进一步地,所述读写模块包括:第一获取单元,用于在接收到对所述加速卷进行读操作的请求后,获取所述读操作的请求中待读取数据的地址;第一查找单元,用于根据所述待读取数据的地址和所述映射表在所述一个或多个加速卷中查找所述待读取数据;第一读取单元,用于在所述映射表中查找到所述待读取数据的地址,直接从与所述地址对应的加速卷的物理磁盘空间读取数据;第二读取单元,用于在所述映射表中未查找到所述地址时,将通过所述加速卷与基础卷之间的交互接口向所述源卷读取数据;返回单元,用于将读取的所述源卷的数据返回给对应的加速卷,并返回给主机。

进一步地,所述读写模块包括:第二获取单元,用于在接收到对所述加速卷进行写操作的请求后,获取所述写操作的请求中待写入数据的地址;第一写入单元,用于根据所述待写入数据的地址写入待写入数据;判断单元,用于在加速卷刷盘时,判断已写入的数据的位图是否变化;使用单元,用于在写入数据的逻辑卷对应的基础卷的旧数据没 有做过cow且没有变化时,使用所述基础卷交互接口通过读操作将待写入数据对应的旧数据读取出去;第一处理单元,用于将已读取的旧数据写入加速卷,并更新所述映射表;第二写入单元,用于在写入数据的逻辑卷对应的基础卷的旧数据没有做过cow时,将待写入数据写入加速卷对应的基础卷中。

进一步地,所述读写模块包括:第三获取单元,用于在接收到对所述快照卷进行读操作的请求后,获取所述读操作的请求中待读取数据的地址;第二查找单元,用于根据所述待读取数据的地址在所述映射表中查找对应的地址;第三读取单元,用于在所述映射表中查找到对应的地址时,从所述快照卷对应的物理磁盘空间读取数据;第四读取单元,用于在所述映射表中未查找到对应的地址时,将读操作的请求转发到与所述快照卷对应的加速卷,并执行读加速卷的操作直到完成读操作。

进一步地,所述读写模块包括:第四获取单元,用于在接收到对所述快照卷进行写操作的请求后,获取所述写操作的请求中待写入数据的地址;第三查找单元,用于根据所述待写入数据的地址在所述映射表中查找对应的地址;第三写入单元,用于在所述映射表中查找到对应的地址时,根据所述地址将待写入数据;第二处理单元,用于在所述映射表中查未找到对应的地址时,将所述写操作的请求转发到快照卷对应的加速卷,并执行读加速卷的操作直到完成写操作;第四写入单元,用于将写入加速卷的数据写入快照卷,并更新所述映射表。

进一步地,在根据创建后的加速卷对所述源卷进行读或写操作以及根据创建后的快照卷进行读或写操作之后,所述装置还包括:接收模块,用于接收删除快照卷的请求;判断模块,用于判断需要删除的快照卷是否为其他快照卷的基础卷;第一删除模块,用于在判断结果为否时,直接删除请求的快照卷;第二删除模块,用于在判断结果为是时,将需要删除的快照卷中已存在的数据复制到对应的加速卷;并删除待删除快照卷与对应基础卷之间的接口关系;回收模块,用于回收待删除快照卷所占用的所有资源。

在本发明中,通过创建与一个源卷对应的一个或多个快照卷以及与一个或多个快照卷分别对应的加速卷后,对创建后的加速卷对源卷进行读或写操作以及根据创建后的快照卷进行读或写操作,由于快照卷是根据源卷创建的,以及根据快照卷创建了加速卷,使得对于快照卷的读写无需依据实体卷结构,从而解决了相关技术中在源卷和资源卷有cache的实体卷结构,而快照卷没有实体卷结构情况下,对于快照卷的顺序读无法触发cache的智能顺序流识别的问题,达到了提高快照读写效率的效果。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是相关技术中cow方式写源卷的流程图;

图2是相关技术中快照时刻点快照数据块的组成示意图;

图3是根据本发明实施例的一种快照的读写方法的流程图;

图4是根据本发明实施例的快照的读写装置的结构框图;

图5是根据本发明实施例的快照的读写装置的可选结构框图一;

图6是根据本发明实施例的快照的读写装置的可选结构框图二;

图7是根据本发明实施例的快照的读写装置的可选结构框图三;

图8是根据本发明实施例的快照的读写装置的可选结构框图四;

图9是根据本发明实施例的快照的读写装置的可选结构框图五;

图10是根据本发明实施例的快照的读写装置的可选结构框图六;

图11是根据本发明可选实施例的读加速卷数据的流程示意图;

图12是根据本发明可选实施例的主机对源卷写操作的流程示意图;

图13是根据本发明可选实施例的主机对快照卷的读写访问的流程示意图;

图14是根据本发明可选实施例的主机对快照卷写访问的流程示意图;

图15是根据本发明可选实施例的主机读写源卷时通过加速卷整体示意图;

图16是根据本发明可选实施例的快照的快照数据示意图;

图17是根据本发明可选实施例的主机读写快照的快照卷时通过加速卷和快照卷加速示意图;

图18是根据本发明可选实施例的顺序预读状态示意图;

图19是根据本发明可选实施例的继承快照卷交互接口示意图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

在本实施例中提供了一种快照的读写方法,图3是根据本发明实施例的一种快照的读写方法的流程图,如图3所示,该流程包括如下步骤:

步骤s302:创建与一个源卷对应的一个或多个快照卷以及与一个或多个快照卷分 别对应的加速卷;

步骤s304:根据创建后的加速卷对源卷进行读或写操作以及根据创建后的快照卷进行读或写操作。

在本实施例的步骤s302和步骤s304中,通过创建与一个源卷对应的一个或多个快照卷以及与一个或多个快照卷分别对应的加速卷后,对创建后的加速卷对源卷进行读或写操作以及根据创建后的快照卷进行读或写操作,由于快照卷是根据源卷创建的,以及根据快照卷创建了加速卷,使得对于快照卷的读写无需依据实体卷结构,从而解决了相关技术中在源卷和资源卷有cache的实体卷结构,而快照卷没有实体卷结构情况下,对于快照卷的顺序读无法触发cache的智能顺序流识别的问题,达到了提高快照读写效率的效果。

对于本实施例步骤s302中涉及到的创建与一个源卷对应的一个或多个快照以及分别与一个或多个快照对应的加速卷的方式,在本实施例的可选实施方式中可以通过如下方式来实现:

步骤s302-1,从存储的资源池选择逻辑卷创建一个或多个快照卷以及一个或多个加速卷,其中,已创建的快照卷为待创建的快照卷的基础卷,待创建的快照卷为已创建的快照卷的加速卷;

步骤s302-2,为一个或多个快照卷和一个或多个加速卷分配位图,其中,位图用于记录被位图标记的逻辑卷是否被修改过以及在被位图标记的逻辑卷上是否存在写前拷贝cow的数据;

步骤s302-3,为一个或多个快照卷和一个或多个加速卷之间配置相互的地址映射表;

步骤s302-4,设置各逻辑卷之间的交互接口。

对于本实施例步骤s304中涉及到的根据创建后的加速卷对源卷进行读操作的方式,在本实施例的可选实施方式中可以通过如下方式来实现:

步骤s304-11,在接收到对加速卷进行读操作的请求后,获取读操作的请求中待读取数据的地址;

步骤s304-12,根据待读取数据的地址和映射表在一个或多个加速卷中查找待读取数据;

步骤s304-13,在映射表中查找到待读取数据的地址,直接从与地址对应的加速卷的物理磁盘空间读取数据;

步骤s304-14,在映射表中未查找到地址时,将通过加速卷与基础卷之间的交互接口向源卷读取数据;

步骤s304-15,将读取的源卷的数据返回给对应的加速卷,并返回给主机。

对于本实施例步骤s304中涉及到的根据创建后的加速卷对源卷进行写操作的方式,在本实施例的可选实施方式中可以通过如下方式来实现包括:

步骤s304-21,在接收到对加速卷进行写操作的请求后,获取写操作的请求中待写入数据的地址;

步骤s304-22,根据待写入数据的地址写入待写入数据;

步骤s304-23,在加速卷刷盘时,判断已写入的数据的位图是否变化;

步骤s304-24,在写入数据的逻辑卷对应的基础卷的旧数据没有做过cow且没有变化时,使用基础卷交互接口通过读操作将待写入数据对应的旧数据读取出去;

步骤s304-25,将已读取的旧数据写入加速卷,并更新映射表;

步骤s304-26,在写入数据的逻辑卷对应的基础卷的旧数据没有做过cow时,将待写入数据写入加速卷对应的基础卷中。

对于本实施例步骤s304中涉及到的根据创建后的快照卷进行读操作的方式,在本实施例的可选实施方式中可以通过如下方式来实现:

步骤s304-31,在接收到对快照卷进行读操作的请求后,获取读操作的请求中待读取数据的地址;

步骤s304-32,根据待读取数据的地址在映射表中查找对应的地址;

步骤s304-33,在映射表中查找到对应的地址时,从快照卷对应的物理磁盘空间读取数据;

步骤s304-34,在映射表中未查找到对应的地址时,将读操作的请求转发到与快照卷对应的加速卷,并执行读加速卷的操作直到完成读操作。

对于本实施例步骤s304中涉及到的根据创建后的快照卷进行写操作的方式,在本实施例的可选实施方式中可以通过如下方式来实现:

步骤s304-41,在接收到对快照卷进行写操作的请求后,获取写操作的请求中待写入数据的地址;

步骤s304-42,根据待写入数据的地址在映射表中查找对应的地址;

步骤s304-43,在映射表中查找到对应的地址时,根据地址将待写入数据;

步骤s304-44,在映射表中查未找到对应的地址时,将写操作的请求转发到快照卷对应的加速卷,并执行读加速卷的操作直到完成写操作;

步骤s304-45,将写入加速卷的数据写入快照卷,并更新映射表。

在本实施例的另一个可选方式在根据创建后的加速卷对源卷进行读或写操作以及根据创建后的快照卷进行读或写操作之后,本实施例的方法还可以包括:

步骤s306,接收删除快照卷的请求;

步骤s308,判断需要删除的快照卷是否为其他快照卷的基础卷;

步骤s309,在判断结果为否时,直接删除请求的快照卷;

步骤s310,在判断结果为是时,将需要删除的快照卷中已存在的数据复制到对应的加速卷;并删除待删除快照卷与对应基础卷之间的接口关系;

步骤s312,回收待删除快照卷所占用的所有资源。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

在本实施例中还提供了一种快照的读写装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图4是根据本发明实施例的快照的读写装置的结构框图,如图4所示,该装置包括:创建模块42,用于创建与一个源卷对应的一个或多个快照卷以及与一个或多个快照卷分别对应的加速卷;读写模块44,与创建模块42耦合连接,用于根据创建后的加速卷对源卷进行读或写操作以及根据创建后的快照卷进行读或写操作。

图5是根据本发明实施例的快照的读写装置的可选结构框图一,如图5所示,该创建模块42包括:创建单元52,用于从存储的资源池选择逻辑卷创建一个或多个快照卷以及一个或多个加速卷,其中,已创建的快照卷为待创建的快照卷的基础卷,待创建的快照卷为已创建的快照卷的加速卷;分配单元54,与创建单元52耦合连接,用于为一个或多个快照卷和一个或多个加速卷分配位图,其中,位图用于记录被位图标记的逻辑卷是否被修改过以及在被位图标记的逻辑卷上是否存在写前拷贝cow的数据;配置单元56,与分配单元54耦合连接,用于为一个或多个快照卷和一个或多个加速卷之间配置相互的地址映射表;设置单元58,与配置单元56耦合连接,用于设置各逻辑卷之间的交互接口。

图6是根据本发明实施例的快照的读写装置的可选结构框图二,如图6所示,该读写模块44包括:第一获取单元602,用于在接收到对加速卷进行读操作的请求后,获取读操作的请求中待读取数据的地址;第一查找单元604,与第一获取单元602耦合连接,用于根据待读取数据的地址和映射表在一个或多个加速卷中查找待读取数据;第一读取单元606,与第一查找单元604耦合连接,用于在映射表中查找到待读取数据的地址,直接从与地址对应的加速卷的物理磁盘空间读取数据;第二读取单元608,与第一读取单元606耦合连接,用于在映射表中未查找到地址时,将通过加速卷与基础卷之间的交互接口向源卷读取数据;返回单元610,与第二读取单元608耦合连接,用于将读取的源卷的数据返回给对应的加速卷,并返回给主机。

图7是根据本发明实施例的快照的读写装置的可选结构框图三,如图7所示,该读写模块44包括:第二获取单元702,用于在接收到对加速卷进行写操作的请求后,获取写操作的请求中待写入数据的地址;第一写入单元704,与第二获取单元702耦合连接,用于根据待写入数据的地址写入待写入数据;判断单元706,与第一写入单元704耦合连接,用于在加速卷刷盘时,判断已写入的数据的位图是否变化;使用单元708,与判断单元706耦合连接,用于在写入数据的逻辑卷对应的基础卷的旧数据没有做过cow且没有变化时,使用基础卷交互接口通过读操作将待写入数据对应的旧数据读取出去;第一处理单元710,与使用单元708耦合连接,用于将已读取的旧数据写入加速卷,并更新映射表;第二写入单元712,与第一处理单元710耦合连接,用于在写入数据的逻辑卷对应的基础卷的旧数据没有做过cow时,将待写入数据写入加速卷对应的基础卷中。

图8是根据本发明实施例的快照的读写装置的可选结构框图四,如图8所示,该读写模块44包括:第三获取单元802,用于在接收到对快照卷进行读操作的请求后,获取读操作的请求中待读取数据的地址;第二查找单元804,与第三获取单元802耦合连接,用于根据待读取数据的地址在映射表中查找对应的地址;第三读取单元806,与第二查找单元804耦合连接,用于在映射表中查找到对应的地址时,从快照卷对应的物理磁盘空间读取数据;第四读取单元808,与第三读取单元806耦合连接,用于在映射表中未查找到对应的地址时,将读操作的请求转发到与快照卷对应的加速卷,并执行读加速卷的操作直到完成读操作。

图9是根据本发明实施例的快照的读写装置的可选结构框图五,如图9所示,该读写模块44包括:第四获取单元902,用于在接收到对快照卷进行写操作的请求后,获取写操作的请求中待写入数据的地址;第三查找单元904,与第四获取单元902耦合连接,用于根据待写入数据的地址在映射表中查找对应的地址;第三写入单元906,与第三查找单元904耦合连接,用于在映射表中查找到对应的地址时,根据地址将待写入数据;第二处理单元908,与第三写入单元906耦合连接,用于在映射表中查未找到对应的地址时,将写操作的请求转发到快照卷对应的加速卷,并执行读加速卷的操作直到完成写操作;第四写入单元910,与第二处理单元908耦合连接,用于将写入加速卷的数据写 入快照卷,并更新映射表。

图10是根据本发明实施例的快照的读写装置的可选结构框图六,如图10所示,在根据创建后的加速卷对源卷进行读或写操作以及根据创建后的快照卷进行读或写操作之后,该装置还包括:接收模块,用于接收删除快照卷的请求;判断模块1002,用于判断需要删除的快照卷是否为其他快照卷的基础卷;第一删除模块1004,与判断模块1002耦合连接,用于在判断结果为否时,直接删除请求的快照卷;第二删除模块1006,与第一删除模块1004耦合连接,用于在判断结果为是时,将需要删除的快照卷中已存在的数据复制到对应的加速卷;并删除待删除快照卷与对应基础卷之间的接口关系;回收模块1008,与第二删除模块1006耦合连接,用于回收待删除快照卷所占用的所有资源。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述模块分别位于多个处理器中。

下面结合本发明的可选实施例对本发明进行举例说明;

本可选实施例提供了一种高效的快照继承方法,通过该方法提高了快照处理效率,减小快照流程对主机写源卷的性能损失影响,以及主机对快照顺序访问时不破坏主机io的顺序特征。此外,在本可选实施例中还提供了一种基础卷交互接口方法与继承快照卷交互接口方法该方法不仅可以支持基于快照的快照,还支持对普通卷创建快照,也可以支持对快照卷再创建快照,拓展了快照的应用方式和使用范围。

对于本可选实施例提供的高效的快照继承方法,涉及到:源卷,快照卷,加速卷;基于此,该方法的流程包括:当创建快照时,创建快照卷,不需要创建资源卷,创建快照对应的加速卷,主机读写源卷时可以进行加速。图11是根据本发明可选实施例的读加速卷数据的流程示意图,如图11所示,该流程的步骤包括:

步骤s11:当主机对源卷进行读写时,主机对源卷读;

步骤s12:先访问加速卷读缓存是否能命中,判断主机读对应位置数据是否已经在加速卷对应的物理空间中,在判断结果为是时,去磁盘读取数据;

步骤s13:在判断结果为否时,到源卷对应读缓存去读取数据,读加速卷数据a,

步骤s14:如果数据a在加速卷本地,则直接读取;如果数据a不在加速卷本地,则到源卷去读取。

图12是根据本发明可选实施例的主机对源卷写操作的流程示意图,如图12所示,该流程的步骤包括:

步骤s21,先直接写入加速卷写缓存,直接响应主机写完成;

其中,此处中需要写加速卷一次写就响应主机写完成,避免了一个源卷写请求,需 要先做一次读请求和写请求,严重影响源卷写性能的问题;

步骤s22,在第二阶段加速卷开始刷盘时,如果源卷对应位置数据已经做过cow则直接写入源卷;

步骤s23,如果没有做cow则对旧数据b做cow;

步骤s24,将数据b拷贝到加速卷对应的磁盘空间;

步骤s25,将新数据a写入源卷对应磁盘空间,并更新状态位图。

图13是根据本发明可选实施例的主机对快照卷的读写访问的流程示意图,如图13所示,该流程的步骤包括:

步骤s31,主机对快照卷读,判断状态位图;

步骤s32,如果该位置已经被写过则在快照卷对应物理空间能命中则直接返回;

其中,没有命中则走到加速卷执行步骤11,判断主机读对应位置数据是否已经在加速卷对应的物理空间中,如果是则执行步骤12去磁盘读取数据,并将数据指针返回给快照卷,相当于快照卷与加速卷共享数据指针。否则到源卷对应读缓存去读取数据执行步骤13。

图14是根据本发明可选实施例的主机对快照卷写访问的流程示意图,如图14所示,该流程的步骤包括:

步骤s41,直接写入加速卷写缓存;

步骤s42,直接响应主机写完成;

通过该方式避免了对于一个源卷写请求,需要先做一次读请求和写请求,严重影响源卷写性能,此处中需要写快照卷一次写就响应主机写完成。

步骤s43,用户写请求数据先写到加速卷和快照虚拟逻辑卷里面,在逻辑卷刷盘的时候才将页面向源卷刷和快照卷物理空间刷,而刷盘的方法是由基础卷交互接口提供的,这时候可以在第一层cache刷盘的时候做cow,这样cow的时延就不会影响用户io时延。

图15是根据本发明可选实施例的主机读写源卷时通过加速卷整体示意图,如图15所示,该方式的核心就是将主机对源卷的写转换为对加速卷的写,这样避免在主机写过程中读取旧数据增加主机时延。

另外传统的将旧数据读取出来再写入快照空间,存在页面拷贝的过程;本发明改造cache的实现方式,对于用户写分配或者读出来的页面,用户加过引用之后,可以再次写入其他的cache地址域,cache只需要共享指针并不需要进行数据拷贝,相当 于一个页面可以共享挂到多棵cache地址域的红黑树上,而且省略了写分配的时间,缩短整个刷盘时延。更进一步,对于主机数据接收到一个缓存之后,将这个缓存先写入一个卷,同时再写入另外一个卷,就是典型的实克隆改进流程,在克隆过程中第二卷不需要再重新分配缓存,数据也无需再拷贝一次。

为了拓展了快照的应用方式和使用范围,需要支持对快照卷再创建快照,即需要实现快照之间的继承,图16是根据本发明可选实施例的快照的快照数据示意图,如图16所示,对已经存在的快照1再创建快照2,后者2继承前者1的数据和状态,在1的数据基础上形成增量快照2,所以快照1被称为2的基卷,快照2是继承于快照1的增量快照。快照2对应位置0,1,2的数据分别位置快照1的0,2位置和加速卷的1位置。

对加速卷的读写访问如上面所述。区别在于对快照卷1写时,先到快照卷1对应的物理空间中看是否已经写过如果写过直接写入新数据,没有写过,到快照卷1中看是否有数据,如果没有命中,则从加速卷读取到旧数据,在用新数据覆盖旧数据之前,需要将旧数据写入继承快照卷2中。

对于快照卷2的读与快照卷1的读相同,先在本地找,没有命中去快照1读,直至读加速卷。对快照卷2的写,与写快照卷1相同。图17是根据本发明可选实施例的主机读写快照的快照卷时通过加速卷和快照卷加速示意图。

如上面描述当创建多个快照时,每个快照的下层一般是cache,当然也可以是物理磁盘,核心思想是解开cache与块设备的绑定关系,即一个地址域未必下挂一个块设备,而是下挂一个逻辑设备,cache的地址域实际上好比是数据的一个版本,最新的加速卷的逻辑设备是次新加速卷,依次类推直到源卷,逻辑设备表示刷盘对象。快照的继承快照的逻辑对象是基础快照。这样多次创建快照也可以做成多级cache层叠。

图18是根据本发明可选实施例的顺序预读状态示意图,如图18所示,由于对于快照卷读写有加速卷的缓存或物理空间做为缓冲,即对于一个快照做过cow的数据块肯定在对应加速卷的物理空间中且位置与主机读取位置是对应一致,不像传统做法中资源空间中数据与快照数据位置是映射关系,不是一一对应,这样当读快照卷数据时,如果主机是顺序读取,在一定程度上可以触发cache的智能顺序流识别。

下面结合附图和具体实施对本可选实施例作进一步详细的描述:

本可选实施例中提供的一种高效的快照继承方法的步骤包括:

步骤s11,创建快照,为一个源卷创建一个或多个快照,在已有快照的基础上创建快照,前面的快照是后面快照的基础卷;同时创建针对快照的加速卷。

步骤s12,读加速卷,在快照建立完成后从源卷中读取数据。

步骤s13,写加速卷,在快照建立完成后向源卷中写入数据。

步骤s14,读快照,在快照建立完成后从快照卷中读取快照数据。

步骤s15,写快照,在快照建立完成后向快照卷中写入快照数据。

步骤s16,删除快照,回收快照所占的存储资源并维护源卷为正常数据状态。

其中,步骤s1包括以下步骤:

步骤s11-1,利用已经有的存储资源池创建新的逻辑卷,其中包括快照卷和加速卷,不同于现有方法,不需要创建资源空间或资源卷,需要分配位图,创建地址映射表,基础卷交互接口,图19是根据本发明可选实施例的继承快照卷交互接口示意图;

步骤s11-2,初始化相关位图,将位图中所有位标记为0;位图不仅记录该数据块对应的基础卷是否被修改过,还要标示cow的数据是否在本卷上。

步骤s11-3,初始化映射表,建立一个空表;

步骤s11-4,将源卷设置为快照的基础卷,设置快照卷的中的基础卷交互接口。

当创建多个快照时,将最近创建的快照卷设置为待创建快照卷的基础卷,待创建快照设置为最近创建快照的继承快照卷。

其中,步骤s12包括以下步骤:

步骤s12-1,收到读加速卷的请求后,获取到待读取数据块的位置。

步骤s12-2,根据位置块号,在加速卷映射表查找,如果找到,说明之前已经做过cow或者已经被写过或者之前被读过,数据在加速卷对应的读缓存或者物理空间中,直接从加速卷对应的物理磁盘空间读取数据,否则执行步骤s12-3。

步骤s12-3,将读请求转发到加速卷与其基础卷的交互接口,有多个加速卷时,依次重复步骤s12-2,直到将该读请求转向源卷读取数据。

步骤s12-4,源卷将数据返回给其对应的继承快照卷即加速卷,加速卷返回主机响应完成读操作。并且将该数据写入加速卷读缓存。

其中,步骤s13包括以下步骤:

步骤s13-1,收到写加速卷的请求后,获取到待读取数据块的位置。

步骤s13-2,根据位置块号,直接将新数据写入对应的位置。用户写请求数据先写到加速卷写缓存,刷盘的时候才将页面向源卷刷,而刷盘的方法是由基础卷交互接口提供的,这时候才开始做cow,这样cow的时延就不会影响用户io时延。

步骤s13-3,加速卷刷盘时,判断数据存在状态位图和基础卷数据变化位图,如果对应基础卷的旧数据没有做过cow且没有变化,则使用基础卷交互接口通过读操作将待写入数据块对应的旧数据读取出来。

步骤s13-4,将已读取的旧数据写入加速卷,并更新数据块物理空间映射表。

步骤s13-5,将待写入新数据刷入加速卷对应的基础卷中,完成写操作。

其中,步骤s14包括以下步骤:

步骤s14-1,收到读快照卷的请求后,获取到待读取数据块的位置。

步骤s14-2,根据位置块号,在快照卷映射表查找,如果找到,说明之前已经做过cow直接从快照卷对应的物理磁盘空间读取数据,否则执行步骤s14-3。

步骤s14-3,将读请求转发到该快照卷对应的加速卷接口。

步骤s14-4,加速卷收到该请求后,重复上面步骤s12读加速卷过程。最后完成读操作。

其中,步骤s15包括以下步骤:

步骤s15-1,收到写快照卷的请求后,获取到待读取数据块的位置。

步骤s15-2,根据位置块号,直接在快照卷映射表中查找,如果找到,直接将数据页面合并之后写入。否则执行下一步。

步骤s15-3,如果没有找到,说明该位置数据之前没有读写过,将写请求对应位置读请求转发到该快照卷对应的加速卷接口。

步骤s15-4,加速卷收到该请求后,重复上面步骤s12读加速卷过程。完成读操作并返回旧数据。

步骤s15-5,快照拿到旧数据之后合并数据页面,并写入快照卷,更新新数据块物理空间映射表,完成写操作。

其中,步骤s16包括以下步骤:

步骤s16-1,收到删除快照请求。

步骤s16-2,判断要删除快照是否是其它快照的基础卷,如果不是直接删除该快照卷和对应的加速卷,否则执行步骤s16-3。

步骤s16-3,如果别的快照对待删除快照有依赖,将待删除快照卷中已经存在的数据块全部复制到它所指向的继承快照卷交互接口,并更新父快照与基础卷的基础卷交互接口和继承快照卷交互接口。

步骤s16-4,消除待删除快照和其基础卷之间的接口关系。

步骤s16-5,回收待删除快照所占用的所有资源。

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可 以被设置为存储用于执行以下步骤的程序代码:

步骤s302:创建与一个源卷对应的一个或多个快照卷以及与一个或多个快照卷分别对应的加速卷;

步骤s304:根据创建后的加速卷对源卷进行读或写操作以及根据创建后的快照卷进行读或写操作。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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