一种数据镜像方法及存储系统与流程

文档序号:11250738阅读:350来源:国知局
一种数据镜像方法及存储系统与流程

本发明实施例涉及存储技术领域,尤其涉及一种数据镜像方法及存储系统。



背景技术:

在镜像领域中,本地控制器分别与主机和镜像控制器通信连接,本地控制器和镜像控制器都包括缓存,每一个缓存包括镜像缓存和本地缓存,每一个缓存的所述镜像缓存和所述本地缓存的容量比例是固定的。镜像设计的流程为,本地控制器接收到主机发送的目标数据后,申请分配其自身的本地缓存中的缓存空间,并发送所述目标数据至镜像控制器;所述镜像控制器收到所述目标数据之后,申请分配其自身的镜像缓存中的缓存空间,将所述目标数据存储至其自身的镜像缓存中的缓存空间后,发送镜像完成消息至本地控制器,然后本地控制器存储所述目标数据至其自身的本地缓存的缓存空间中。采用上述镜像设计,本地控制器的本地缓存和镜像控制器的镜像缓存,分别存储主机发送至所述本地控制器的目标数据,实现目标数据在不同控制器中的镜像。

在实际应用场景中,所述镜像控制器可能同时收到一份或多份目标数据,每一份目标数据为本地控制器一次发送的目标数据。在镜像控制器收到一份或多份目标数据之后,在所述镜像控制器的镜像缓存中,如果空闲容量较少,镜像控制器申请分配的空闲容量仅能用于存储一份或多份目标数据中的一部分数据。基于现有的镜像控制器中的镜像缓存的配置,镜像控制器不能保证其接收到的所有的目标数据都可以及时的完成镜像。



技术实现要素:

本发明提供了一种数据镜像方法及存储系统,以避免镜像控制器接收到的所有的目标数据不能及时的完全镜像。

第一方面提供一种数据镜像方法,所述方法应用于存储系统中,所述存储系统包括本地控制器和镜像控制器,其中,所述本地控制器包括本地缓存,所述镜像控制器包括镜像缓存。所述方法包括:所述本地控制器接收目标数据后,当所述目标数据的数据量未超过所述本地缓存的空闲容量时,所述本地控制器判断所述目标数据的数据量是否超过预先保存的所述镜像缓存的空闲容量。当所述目标数据的数据量未超过所述预先保存的所述镜像缓存的空闲容量时,所述本地控制器发送所述目标数据至所述镜像控制器。所述镜像控制器接收所述目标数据后,将所述目标数据写入所述镜像缓存,然后发送镜像完成消息至所述本地控制器。所述本地控制器在接收所述镜像控制器发送的镜像完成消息之后,将所述目标数据写入所述本地缓存中。

在本申请中,本地控制器在发送目标数据至镜像控制器前,通过查看预先保存的镜像缓存的空闲容量,确定本地控制器未使用的镜像资源,在确保本地控制器具有充分的用来存储目标数据的镜像资源后,才发送目标数据至镜像控制器,避免镜像控制器不能存储本地控制器发送的所有目标数据,以及,确保了镜像控制器接收到的所有目标数据都可以及时存储。镜像控制器及时存储目标数据后,发送镜像完成消息至本地控制器以存储目标数据至本地控制器的本地缓存中,减少了因镜像控制器不能及时存储目标数据而及时发出镜像完成消息,导致本地控制器不能及时的保存目标数据至本地缓存中的问题,减少了本地控制器等待保存目标数据至本地缓存的等待时间。

在第一方面提供的数据镜像方法中,所述本地控制器判断所述目标数据的数据量是否超过预先保存的所述镜像缓存的空闲容量,判断后出现的一种情况,即本地控制器判断所述目标数据的数据量未超过预先保存的所述镜像缓存的空闲容量的数据镜像方法已在第一方面公开,判断后出现的另一种情况,即本地控制器判断所述目标数据的数据量超过预先保存的所述镜像缓存的空闲容量时的数据镜像方法包括:如果所述目标数据的数据量超过预先保存的所述镜像缓存的空闲容量,本地控制器在周期内等待所述镜像控制器发送的删除数据的响应消息,所述响应消息用于表示所述镜像控制器已删除所述镜像缓存中的其他数据。所述本地控制器更新所述预先保存的所述镜像缓存的空闲容量,所述更新后的镜像缓存的空闲容量为更新前的所述镜像缓存的空闲容量加上已删除的所述其他数据的数据量。然后,所述本地控制器判断所述目标数据的数据量是否超过更新后的所述镜像缓存的空闲容量;如果所述目标数据的数据量未超过所述更新后的所述镜像缓存的空闲容量,所述本地控制器发送所述目标数据至所述镜像控制器。所述镜像控制器接收所述目标数据,并将所述目标数据写入所述镜像缓存。所述本地控制器在接收所述镜像控制器发送的镜像完成消息之后,将所述目标数据写入所述本地缓存中。

在第一方面的另一种情况中,如果本地控制器判断所述目标数据的数据量超过预先保存的所述镜像缓存的空闲容量,表明本地控制器未使用的镜像资源不能及时镜像目标数据,如果周期内镜像控制器删除了镜像缓存中的数据,则清空了镜像缓存中被占用的部分存储空间,发送删除数据的响应消息,通知本地控制器回收镜像资源,进而为在周期内等待存储的目标数据提供了丰富的镜像资源,以确保接收到目标数据的镜像控制器及时存储目标数据。

在第一方面的第一种实现方式中,所述方法还包括:所述本地控制器更新所述镜像缓存的空闲容量,所述更新后的镜像缓存的空闲容量为更新前的所述镜像缓存的空闲容量减去所述目标数据的数据量。对于后续接收到的目标数据,为确保在发送目标数据至镜像控制器之后,镜像控制器可以及时的存储后续接收到的目标数据,在本地控制器确认镜像控制器存储了本地控制器上次发送的目标数据后,本地控制器及时的更新所述预先保存的所述镜像缓存的空闲容量,以避免后续发送给镜像控制器的目标数据不能被及时的存储。

结合第一方面或第一方面的第一种实现方式,在第二种实现方式中,所述存储系统还包括硬盘,所述方法还包括:所述本地控制器将所述本地缓存中的所述目标数据复制至所述硬盘;当所述本地控制器确认所述目标数据已复制至所述硬盘时,向所述镜像控制器发送删除数据消息,所述删除数据消息用于指示所述镜像控制器删除所述镜像缓存中的所述目标数据;接收所述镜像控制器发送的所述删除数据的响应消息,所述响应消息用于表示所述镜像控制器已删除所述镜像缓存中的所述目标数据;所述本地控制器删除所述本地缓存中的所述目标数据;所述本地控制器更新所述预先保存的所述镜像缓存的空闲容量,所述更新后的镜像缓存的空闲容量为更新前的所述镜像缓存的空闲容量加上所述目标数据的数据量。在完成目标数据的镜像存储后,本地控制器将目标数据复制到硬盘后,通过发送删除数据的消息,通知镜像控制器删除镜像缓存中的数据,则回收了镜像缓存中被占用的部分存储空间,发送删除数据的响应消息,通知本地控制器回收镜像资源,实现镜像资源的循环利用。

结合第一方面或第一方面的第一种或第二种实现方式,在第三种实现方式中,所述存储系统还包括第一主机,所述第一主机与所述本地控制器通信,所述预先保存的所述镜像缓存的空闲容量是根据所述镜像缓存的总容量,以及预定时间段内所述第一主机发送给所述本地控制器的数据的数据量确定的。本实现方式根据所述镜像缓存的总容量,以及预定时间段内所述第一主机发送给所述本地控制器的数据的数据量确定预先保存的镜像资源,实现了通过本地控制器接收第一主机发送的数据的历史业务量,自动调整符合本地控制器近期所需要的镜像资源的方法,根据历史业务量,灵活性的调整本地控制器对镜像资源的需求量。

结合第一方面的第三种实现方式,在第四种实现方式中,所述预定时间段截止于所述本地控制器查询到预先保存的所述镜像控制器的镜像缓存的空闲容量低于预设阈值时。当预先保存的镜像缓存的空闲容量低于预设阈值时,及时的调整本地控制器的镜像资源,避免没有足够的镜像资源用于镜像控制器及时的存储本地控制器发送的目标数据。

结合第一方面的第三种实现方式或第四种实现方式,在第五种实现方式中,所述存储系统还包括第二主机,所述第二主机与所述镜像控制器通信,所述预定时间段为所述本地控制器在接收所述目标数据的时刻之前的时间段;所述本地控制器接收目标数据之前,还包括:所述本地控制器统计所述预定时间段内所述本地控制器接收所述第一主机发送的所有数据的第一数据量;所述本地控制器发送调配镜像资源的请求至所述镜像控制器;所述镜像控制器获取所述预定时间段内所述镜像控制器接收所述第二主机发送的所有数据的第二数据量;所述镜像控制器获取所述第一数据量占所述第一数据量与所述第二数据量之和的镜像占比;当镜像容量小于或等于所述镜像控制器的缓存的空闲容量,所述镜像控制器反馈调配成功的响应信息至所述本地控制器,所述镜像容量是根据所述镜像占比以及所述镜像控制器的缓存的总容量确定的;所述本地控制器接收所述镜像控制器反馈的调配成功的响应信息,所述调配成功的响应信息包括所述镜像容量;所述本地控制器保存所述镜像缓存的空闲容量,所述镜像缓存的空闲容量为所述镜像容量。

第二方面,提供一种存储系统,所述存储系统包括本地控制器和镜像控制器,所述本地控制器和所述镜像控制器通信连接,其中,所述本地控制器包括本地缓存,所述镜像控制器包括镜像缓存;所述本地控制器,用于接收目标数据;当所述目标数据的数据量未超过所述本地缓存的空闲容量时,所述本地控制器还用于判断所述目标数据的数据量是否超过预先保存的所述镜像缓存的空闲容量;当所述目标数据的数据量未超过所述预先保存的所述镜像缓存的空闲容量时,所述本地控制器还用于发送所述目标数据至所述镜像控制器;所述镜像控制器,用于接收所述目标数据,并将所述目标数据写入所述镜像缓存;所述本地控制器,还用于在接收所述镜像控制器发送的镜像完成消息之后,将所述目标数据写入所述本地缓存中。

在本申请中,本地控制器在发送目标数据至镜像控制器前,通过查看预先保存的镜像缓存的空闲容量,确定本地控制器未使用的镜像资源,在确保本地控制器具有充分的用来存储目标数据的镜像资源后,才发送目标数据至镜像控制器,避免镜像控制器不能存储本地控制器发送的所有目标数据,以及,确保了镜像控制器接收到的所有目标数据都可以及时存储。镜像控制器及时存储目标数据后,发送镜像完成消息至本地控制器以存储目标数据至本地控制器的本地缓存中,减少了因镜像控制器不能及时存储目标数据而及时发出镜像完成消息,导致本地控制器不能及时的保存目标数据至本地缓存中的问题,减少了本地控制器等待保存目标数据至本地缓存的等待时间。

结合第二方面,在第一种实现方式中,所述本地控制器,还用于更新所述镜像缓存的空闲容量,所述更新后的镜像缓存的空闲容量为更新前的所述镜像缓存的空闲容量减去所述目标数据的数据量。对于后续接收到的目标数据,为确保在发送目标数据至镜像控制器之后,镜像控制器可以及时的存储后续接收到的目标数据,在本地控制器确认镜像控制器存储了本地控制器上次发送的目标数据后,本地控制器及时的更新所述预先保存的所述镜像缓存的空闲容量,以避免后续发送给镜像控制器的目标数据不能被及时的存储。

结合第二方面或第二方面的第一种实现方式,在第二种实现方式中,所述存储系统还包括硬盘;所述本地控制器,还用于将所述本地缓存中的所述目标数据复制至所述硬盘;所述本地控制器,还用于当所述本地控制器确认所述目标数据已复制至所述硬盘时,向所述镜像控制器发送删除数据消息,所述删除数据消息用于指示所述镜像控制器删除所述镜像缓存中的所述目标数据;所述镜像控制器,还用于删除所述镜像缓存中的所述目标数据;所述镜像控制器,还用于发送所述删除数据的响应消息至所述本地控制器;所述本地控制器,还用于接收所述镜像控制器发送的所述删除数据的响应消息,所述响应消息用于表示所述镜像控制器已删除所述镜像缓存中的所述目标数据;所述本地控制器,还用于删除所述本地缓存中的所述目标数据;所述本地控制器,还用于更新所述预先保存的所述镜像缓存的空闲容量,所述更新后的镜像缓存的空闲容量为更新前的所述镜像缓存的空闲容量加上所述目标数据的数据量。在完成目标数据的镜像存储后,本地控制器将目标数据复制到硬盘后,通过发送删除数据的消息,通知镜像控制器删除镜像缓存中的数据,则回收了镜像缓存中被占用的部分存储空间,发送删除数据的响应消息,通知本地控制器回收镜像资源,实现镜像资源的循环利用。

结合第二方面或第二方面的第一种或第二种实现方式,在第三种实现方式中,所述存储系统还包括第一主机,所述第一主机与所述本地控制器通信,所述预先保存的所述镜像缓存的空闲容量是根据所述镜像缓存的总容量,以及预定时间段内所述第一主机发送给所述本地控制器的数据的数据量确定的。本实现方式根据所述镜像缓存的总容量,以及预定时间段内所述第一主机发送给所述本地控制器的数据的数据量确定预先保存的镜像资源,实现了通过本地控制器接收第一主机发送的数据的历史业务量,自动调整符合本地控制器近期所需要的镜像资源的方法,根据历史业务量,灵活性的调整本地控制器对镜像资源的需求量。

结合第二方面的第三种实现方式中,在第四种实现方式中,所述预定时间段截止于所述本地控制器查询到预先保存的所述镜像控制器的镜像缓存的空闲容量低于预设阈值时。当预先保存的镜像缓存的空闲容量低于预设阈值时,及时的调整本地控制器的镜像资源,避免没有足够的镜像资源用于镜像控制器及时的存储本地控制器发送的目标数据。

结合第二方面的第三种实现方式或第四种实现方式,在第五种实现方式中,所述存储系统还包括第二主机,所述第二主机与所述镜像控制器通信,所述预定时间段为所述本地控制器在接收所述目标数据的时刻之前的时间段;所述本地控制器,还用于统计所述预定时间段内所述本地控制器接收所述第一主机发送的所有数据的第一数据量;所述本地控制器,还用于发送调配镜像资源的请求至所述镜像控制器;所述镜像控制器,还用于获取所述预定时间段内所述镜像控制器接收所述第二主机发送的所有数据的第二数据量;所述镜像控制器,还用于获取所述第一数据量占所述第一数据量与所述第二数据量之和的镜像占比;当镜像容量小于或等于所述镜像控制器的缓存的空闲容量,所述镜像控制器,还用于反馈调配成功的响应信息至所述本地控制器,所述镜像容量是根据所述镜像占比以及所述镜像控制器的缓存的总容量确定的;所述本地控制器,还用于接收所述镜像控制器反馈的调配成功的响应信息,所述调配成功的响应信息包括所述镜像容量;所述本地控制器,还用于保存所述镜像缓存的空闲容量,所述镜像缓存的空闲容量为所述镜像容量。

在本申请中,本地控制器在发送目标数据至镜像控制器前,通过查看预先保存的镜像缓存的空闲容量,确定本地控制器未使用的镜像资源,在确保本地控制器具有充分的用来存储目标数据的镜像资源后,才发送目标数据至镜像控制器,避免镜像控制器不能存储本地控制器发送的所有目标数据,以及,确保了镜像控制器接收到的所有目标数据都可以及时存储。镜像控制器及时存储目标数据后,发送镜像完成消息至本地控制器以存储目标数据至本地控制器的本地缓存中,减少了因镜像控制器不能及时存储目标数据而及时发出镜像完成消息,导致本地控制器不能及时的保存目标数据至本地缓存中的问题,减少了本地控制器等待保存目标数据至本地缓存的等待时间。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种存储系统的架构示意图;

图2为本发明实施例提供的一种本地控制器的结构示意图;

图3为本发明实施例提供的一种镜像控制器的结构示意图;

图4为本发明实施例提供的另一种存储系统的架构示意图;

图5为本发明实施例提供的一种数据镜像方法的流程图;

图6为本发明实施例提供的另一种数据镜像方法的流程图;

图7a为本发明实施例提供的另一种存储系统700的结构图;

图7b为本发明实施例提供的另一种存储系统700的结构图;

图7c为本发明实施例提供的另一种存储系统700的结构图;

图7d为本发明实施例提供的另一种存储系统700的结构图。

具体实施方式

下面将结合附图,对本发明实施例中的技术方案进行清楚、完整地描述。

请参见图1,图1为本发明实施例提供的一种存储系统的架构示意图。如图1所示,存储系统包括至少一个主机110和两个以上的控制器120,每个主机110和每一个控制器120之间可以通信,各控制器120之间也可以通信。多个主机110可与同一个控制器120分别建立主通信链路,多个主机110也可与不同的控制器120分别建立主通信链路。主机110可以是任何计算设备,如服务器、台式计算机等等。控制器120可以是任何计算器件,如微控制器、可编程控制器等等。

在存储系统中,控制器120分为本地控制器和镜像控制器,与主机110建立主通信链路的控制器为本地控制器,本地控制器选择除本地控制器之外的,其它任一个或者多个控制器为镜像控制器。在主通信链路出现故障,或者基于负载均衡的考虑,或者在用户手动选择的情况下,主机110断开与本地控制器之间的主通信链路,与除本地控制器之外的,存储系统中的其它控制器建立主通信链路。本地控制器与镜像控制器之间的链路出现故障,或者本地控制器基于负载均衡的考虑,选择其他的控制器作为新的镜像控制器。当存在多个本地控制器时,每一个本地控制器选择的镜像控制器,与其它的本地控制器选择的镜像控制器不相同。

存储系统的数据存储方式为,本地控制器上电后,预先向镜像控制器申请预设容量的镜像资源,预设容量的镜像资源为预先保存的镜像缓存的空闲容量。在申请到预设容量的镜像资源后,如果接收到主机110发送的目标数据,统计目标数据的数据量和本地缓存中的空闲容量,比较本地缓存中的空闲容量与目标数据的数据量,如果本地缓存中的空闲容量大于目标数据的数据量,本地控制器比较预设容量与目标数据的数据量,如果预设容量大于或等于目标数据的数据量,表明本地控制器具有充足的镜像资源。然后,本地控制器发送目标数据至镜像控制器,镜像控制器接收并存储目标数据,镜像控制器存储目标数据之后,会反馈镜像完成消息至本地控制器,然后,本地控制器保存目标数据至本地控制器的本地缓存中,进而实现目标数据在不同控制器中的镜像。在本地控制器收到镜像完成消息后,会更新预设容量,更新后的预设容量为,未更新之前的预设容量,与主机110发送的目标数据的数据量的差。因此,预设容量是变化的,用于表示镜像控制器的镜像缓存的空闲容量,以及用于表示本地控制器的镜像资源。

本地控制器上电后,预先向镜像控制器申请预设容量的镜像资源的方式为,本地控制器发送申请镜像资源的请求至镜像控制器,申请镜像资源的请求包括预设容量;镜像控制器比较预设容量与当前镜像控制器的镜像缓存的空闲容量的大小,当镜像缓存的空闲容量大于或者等于预设容量,镜像控制器反馈申请镜像资源成功的响应信息至本地控制器。本地控制器接收到申请镜像资源成功的响应信息,表明本地控制器的镜像资源申请成功。

预设容量为,镜像控制器的镜像缓存的总容量或者小于镜像控制器的镜像缓存的总容量。预设容量是镜像控制器的镜像缓存的空闲容量的全部或者部分。在镜像控制器中,预先配置镜像缓存的总容量占镜像控制器的缓存的总量的一半,镜像控制器的缓存包括多个容量为标准尺寸的缓存块,通过计算缓存块的数量和标准尺寸块的容量乘积,获得镜像控制器的缓存的总容量为镜像控制器的缓存包括的多个缓存块的总容量。因此,可以通过统计缓存块的数量,衡量数量对应的多个缓存块的总容量。如果需要统计镜像控制器的缓存或者镜像缓存或者本地缓存的总容量或者空闲容量或者占用容量,可以分别统计缓存或者镜像缓存或者本地缓存分别包括的总的缓存块的个数或者空闲的缓存块的个数或者占用的缓存块的个数,进而衡量缓存或者镜像缓存或者本地缓存的总容量或者空闲容量或者占用容量。以及,可以通过缓存块的预设个数衡量预设容量。

请参见图2,图2为本发明实施例提供的一种本地控制器的结构示意图。如图2所示,本实施方式提供的本地控制器200包括接口210、处理器220和缓存230,缓存230包括本地缓存231和镜像缓存232。本地缓存231和镜像缓存232分别包括多个缓存块。如图2所示,接口210,用于和主机110通信。处理器220可能是一个中央处理器(英文:centralprocessingunit,cpu)。缓存230可能是内存条或者光驱或者硬盘,用于提供处理器220实现镜像设计功能的镜像设计代码,还用于存储目标数据。

具体的,接口210,用于接收主机110发送的目标数据。

处理器220,用于统计从接口210接收的目标数据的数据量,还用于统计本地缓存231和镜像缓存232的空闲容量。

处理器220,还用于比较从接口210接收的目标数据的数据量与本地缓存231的空闲容量的大小。

本地缓存231,用于存储从接口210接收的目标数据。

处理器220,还用于发送申请镜像资源的请求至镜像控制器,还用于接收镜像控制器反馈的申请镜像资源成功的响应信息,申请镜像资源的请求包括预设容量。

处理器220,还用于比较接口210接收的目标数据的数据量与预设容量的大小。当接口210接收的目标数据的数据量小于或等于预设容量的大小,发送从接口210接收的目标数据至镜像控制器。

处理器220,还用于在本地控制器为镜像控制器提供镜像服务的情况下,接收从镜像控制器发送的数据。

镜像缓存232,用于在本地控制器为镜像控制器提供镜像服务的情况下,存储从镜像控制器发送的数据。

请参见图3,图3为本发明实施例提供的一种镜像控制器的结构示意图。如图3所示,本实施方式提供的镜像控制器300包括接口310、处理器320和缓存330,缓存330包括主机缓存331和镜像缓存332。主机缓存331和镜像缓存332分别包括多个缓存块。如图3所示,接口310,用于和主机110(与基于图2描述的实施方式中的主机110可以是同一主机,也可以是不同主机)通信。处理器320可能是一个中央处理器(英文:centralprocessingunit,cpu)。缓存330可能是内存条或者光驱或者硬盘,用于提供处理器320实现镜像设计功能的镜像设计代码,还用于存储目标数据。

具体的,接口310,用于接收与镜像控制器300建立主通信链路的主机110(与基于图2描述的实施方式中的主机110可以是同一主机,也可以是不同主机)发送的数据。

接口310,还用于接收本地控制器200发送的目标数据。

主机缓存331,用于存储与镜像控制器300建立主通信链路的主机110(与基于图2描述的实施方式中的主机110可以是同一主机,也可以是不同主机)发送的数据。

处理器320,用于保存与镜像控制器300建立主通信链路的主机110(与基于图2描述的实施方式中的主机110可以是同一主机,也可以是不同主机)发送的数据。

处理器320,用于统计主机缓存331和镜像缓存332的空闲容量。

处理器320,还用于接收本地控制器发送的申请镜像资源的请求,还用于比较预设容量与镜像缓存332的空闲容量的大小。当镜像缓存332的空闲容量大于或者等于预设容量,反馈申请镜像资源成功的响应信息至本地控制器200。

处理器320,还用于保存从接口310接收的,从本地控制器200发送的目标数据。

镜像缓存332,用于存储本地控制器200发送的目标数据。

请参见图4,图4为本发明实施例提供的另一种存储系统的架构示意图。如图4所示,在本实施方式中,以包含两个主机和两个控制器的存储系统为例,说明镜像领域中的数据镜像方法。本实施方式提供的存储系统包括主机410、主机411、本地控制器420、镜像控制器430和硬盘440,主机410和本地控制器420之间建立主通信链路,主机411和镜像控制器430建立主通信链路,本地控制器420和硬盘440之间通信,本地控制器410和镜像控制器420之间通信,镜像控制器420为本地控制器410提供镜像服务。

用户通过主机410发送目标数据给本地控制器420之前,或者本地控制器上电后,本地控制器420预先保存镜像控制器430的镜像缓存332的空闲容量。关于存储系统的数据存储方式的其他细节,可以参照基于图1所示的存储系统的描述,在这里不再赘述。

下面结合图4所示的存储系统的架构,图2所示的本地控制器200的内部结构,以及图3所示的镜像控制器300的内部结构,对本发明实施例提供的存储系统中的数据镜像方法进行具体的描述。请参见图5,图5为本发明实施例提供的一种数据镜像方法的流程图。如图5所示,本实施方式提供了,当用户通过主机410发送目标数据给本地控制器420时,本地控制器420选择镜像控制器430进行数据存储的方法,本实施方式中的本地控制器420的结构,以及其内部各部分的功能,可参考基于图2所示的本地控制器200的描述。本实施方式中的镜像控制器430的结构,以及其内部各部分的功能,可参考基于图3所示的镜像控制器300的描述。在本实施方式提供的数据镜像方法中,步骤s510由主机410的处理器执行,步骤s520、s521、s522、s523、s524和s540由本地控制器200的处理器220实现,以及步骤s530、s531由镜像控制器300的处理器320实现。本实施方式提供的数据镜像方法包括如下步骤。

s510、主机410发送目标数据至本地控制器420。

s520、本地控制器420计算目标数据的数据量。具体实现方式为,本地控制器420通过计算待存储目标数据所需的缓存块的个数,以衡量目标数据的数据量。

s521、本地控制器420统计本地缓存231的空闲容量。具体实现方式为,本地控制器420通过统计本地缓存231的空闲的缓存块的个数,以衡量本地缓存231的空闲容量。在本实施方式中,步骤s521与步骤s510及s520的执行顺序不分先后。

在本实施方式中,本地控制器420定时或者按照设定规则复制本地缓存231中的其他数据至硬盘440,设定规则例如为本地缓存231中的所有数据或者特定类型的所有数据的数据量达到一定的阈值,或者规定本地控制器420将特定的数据类型的数据存储至本地缓存231之后,将其进行复制写盘等。

当所述本地控制器420确认所述其他数据已复制至所述硬盘440时,向所述镜像控制器430发送删除数据的消息,所述删除数据的消息用于指示所述镜像控制器430删除所述镜像缓存332中的所述其他数据;所述本地控制器410接收所述镜像控制器430发送的所述删除数据的响应消息,所述响应消息用于表示所述镜像控制器430已删除所述镜像缓存332中的所述其他数据;所述本地控制器410删除所述本地缓存231中的所述其他数据;所述本地控制器410更新本地缓存231的空闲容量,所述更新后的本地缓存231的空闲容量为更新前的所述本地缓存231的空闲容量加上所述其他数据的数据量。因此,本地控制器420的本地缓存231的空闲容量是动态变化的。本实施方式中的硬盘440位于本地控制器420中或者与本地控制器420通信连接。

s522、本地控制器420比较本地缓存231的空闲容量和目标数据的数据量的大小。本地控制器420比较待存储目标数据所需的缓存块的个数与本地缓存的空闲缓存块的个数大小。如果待存储目标数据所需的缓存块的个数小于或等于本地缓存的空闲缓存块的个数,则判断本地缓存231的空闲容量大于或者等于目标数据的数据量。

s523、当本地控制器420的本地缓存231的空闲容量大于或者等于目标数据的数据量,本地控制器420比较预设容量与目标数据的数据量的大小。具体实现方式为,通过预设缓存块的个数衡量预设容量,本地控制器420比较预设缓存块的个数与待存储目标数据所需的缓存块的个数大小,如果预设缓存块的个数大于或者等于待存储目标数据所需的缓存块的个数,则表示镜像控制器430具有充足的镜像资源,用于镜像存储从本地控制器420发送的目标数据。

s524、当预设容量大于或者等于目标数据的数据量,本地控制器420发送目标数据至镜像控制器430。

s530、镜像控制器430接收并保存本地控制器420发送的目标数据至镜像缓存332。具体的,镜像控制器430从镜像缓存332中选择,与待存储目标数据所需的缓存块的个数相同的多个空闲的缓存块,用于存储本地控制器420发送的目标数据。

s531、镜像控制器430反馈镜像完成消息至本地控制器420。

s540、本地控制器420存储主机410发送的目标数据至本地控制器420的本地缓存231中。本地控制器420从本地缓存231中选择,与待存储目标数据所需的缓存块的个数相同的多个空闲的缓存块,用于存储主机410发送的目标数据。

本地控制器420在发送目标数据至镜像控制器430前,通过查看预先保存的镜像缓存332的空闲容量,确定本地控制器420未使用的镜像资源,在确保本地控制器420具有充分的用来存储目标数据的镜像资源后,才发送目标数据至镜像控制器430,避免镜像控制器430不能存储本地控制器420发送的所有目标数据,以及,确保了镜像控制器430接收到的所有目标数据都可以及时存储。镜像控制器430及时存储目标数据后,发送镜像完成消息至本地控制器420以存储目标数据至本地控制器420的本地缓存231中,减少了因镜像控制器430不能及时存储目标数据而及时发出镜像完成消息,导致本地控制器420不能及时的保存目标数据至本地缓存231中的问题,减少了本地控制器420等待保存目标数据至本地缓存231的等待时间。

基于图5实现的数据镜像方法,当预设容量大于或者等于目标数据的数据量,则表明本地控制器420具备足够的镜像资源(即镜像控制器430的镜像缓存332具备足够的空闲的缓存空间,用以存储目标数据),以缓存主机410发送的目标数据。为保证后续本地控制器420接收到新的目标数据后,能够判断本地控制器420是否有足够的镜像资源存储新的目标数据,在步骤s540之后,存储方法还包括:本地控制器420更新预设容量,更新后的预设容量为,未更新之前的预设容量,与主机410发送的目标数据的数据量的差。具体的实现方式为,本地控制器420更新预设缓存块的个数的值,更新后的预设缓存块的个数的值为,未更新之前的预设缓存块的个数,减去待存储目标数据所需的缓存块的个数。

基于图5实现的数据镜像方法,在步骤s540之后,所述方法还包括:

所述本地控制器410将所述本地缓存231中的所述目标数据复制至所述硬盘440;

当所述本地控制器410确认所述目标数据已复制至所述硬盘440时,向所述镜像控制器430发送删除数据的消息,所述删除数据的消息用于指示所述镜像控制器430删除所述镜像缓存332中的所述目标数据;

本地控制器410接收所述镜像控制器430发送的所述删除数据的响应消息,所述响应消息用于表示所述镜像控制器430已删除所述镜像缓存332中的所述目标数据;

所述本地控制器410删除所述本地缓存231中的所述目标数据;

所述本地控制器410更新预设容量,所述更新后的预设容量为更新前的预先保存的所述镜像缓存的空闲容量,即更新前的预设容量加上所述目标数据的数据量。

基于图5实现的数据镜像方法,本地控制器420保存的预设容量,即所述预先保存的所述镜像缓存332的空闲容量,有两种实现方式,下面分别描述预先保存所述镜像缓存332的空闲容量的两种实现方式。

一种实现方式是,本地控制器420通过申请镜像控制器430的镜像资源实现的,具体的申请流程为:本地控制器420发送申请镜像资源的请求至镜像控制器430,申请镜像资源的请求包括预设容量;镜像控制器430比较预设容量与当前镜像缓存332的空闲容量的大小;当镜像缓存332的空闲容量大于或者等于预设容量,镜像控制器430反馈申请镜像资源成功的响应信息至本地控制器420。

另一种实现方式为,所述预先保存的所述镜像缓存的空闲容量是根据所述镜像缓存的总容量,以及预定时间段内所述主机410发送给所述本地控制器420的数据的数据量确定的。所述预定时间段为,所述本地控制器在接收所述目标数据的时刻之前的时间段。本实施方式中,根据所述镜像缓存的总容量,以及预定时间段内所述主机410发送给所述本地控制器420的数据的数据量确定预设容量,具体包括:

所述本地控制器420统计,在接收所述目标数据的时刻之前的预定时间段内,所述本地控制器接收主机410发送的所有数据的第一数据量x。所述预定时间段可以通过定时器进行周期定时。或者本地控制器420查询到预先保存的镜像控制器430的镜像缓存332的空闲容量低于预设阈值时,所述本地控制器420统计,在接收所述目标数据的时刻之前的预定时间段内,所述本地控制器接收主机410发送的所有数据的第一数据量x,所述预定时间段截止于查询到预先保存的镜像控制器430的镜像缓存332的空闲容量低于预设阈值时。所述本地控制器420根据所述本地控制器420预先保存的接收主机410发送的业务数据的情况,统计截止于查询到预先保存的镜像控制器430的镜像缓存332的空闲容量低于预设阈值时,之前的所述预定时间段内的,所述本地控制器420接收主机410发送的所有数据的第一数据量x。

所述本地控制器420发送调配镜像资源的请求至所述镜像控制器430,以使所述镜像控制器430获取所述时刻之前的所述预定时间段内,所述镜像控制器430接收主机411发送的所有数据的第二数据量y。镜像控制器430如何确定预定时间段与本地控制器420确定预定时间段的方式相同,在这里不再赘述。所述镜像控制器430获取所述第一数据量x占所述第一数据量与所述第二数据量之和(x+y)的第一镜像占比,如果在所述镜像控制器430的缓存330中,镜像容量小于或等于当前,即更新前所述镜像控制器430的缓存330的空闲容量或者空闲容量中的部分空闲容量,所述镜像控制器430反馈调配成功的响应信息至所述本地控制器420。所述镜像容量是根据所述第一镜像占比以及所述镜像控制器430的缓存330的总容量确定的,所述镜像容量具体为第一镜像占比与镜像控制器430的缓存330的总容量的乘积。所述镜像控制器430的缓存的总容量包括镜像控制器430的镜像缓存332的总容量和主机缓存331的总容量。

所述本地控制器420接收所述镜像控制器430反馈的调配成功的响应信息,所述调配成功的响应信息包括所述镜像容量。

所述本地控制器420保存所述镜像缓存332的空闲容量,所述镜像缓存332的空闲容量为所述镜像容量。

基于图5所示的数据镜像方法的,预先保存所述镜像缓存的空闲容量的两种实现方式的第二种实现方式,如果本地控制器420为镜像控制器430提供镜像服务,即本地控制器420与镜像控制器430相互为对方提供镜像服务,在本地控制器420申请镜像资源的同时,镜像控制器430也可以通过第一数据量x和第二数据量y,保存所述镜像缓存232的空闲容量,以申请本地控制器420为镜像控制器430提供镜像服务时的镜像资源。所述镜像控制器430保存的镜像缓存232的空闲容量为所述第二数据量y占所述第一数据量x与所述第二数据量y之和(x+y)的第二镜像占比与本地控制器420的缓存230的乘积。所述第二镜像占比与所述第一镜像占比可以相同也可以不同。然后,镜像控制器430反馈所述镜像缓存232的空闲容量至本地控制器420,本地控制器420比较本地控制器420的缓存230的空闲容量或者是空闲容量中的部分空闲容量是否大于或等于所述镜像缓存232的空闲容量,如果大于或等于所述镜像缓存232的空闲容量,则反馈调配成功的响应信息至镜像控制器430。

请参见图6,图6为本发明实施例提供的另一种数据镜像方法的流程图。如图6所示,在本实施方式中,重点描述本地控制器420的镜像资源不足(即预设容量小于存储主机410发送的目标数据的容量)的情况下,如何回收已经被使用的镜像资源,以实现数据存储的方法。如图6所示,本实施方式提供了,当用户通过主机410发送目标数据给本地控制器420时,本地控制器420选择镜像控制器430进行数据存储的方法,本实施方式中的本地控制器420的结构,以及其内部各部分的功能,可参考基于图2所示的本地控制器200的描述。本实施方式中的镜像控制器430的结构,以及其内部各部分的功能,可参考基于图3所示的镜像控制器300的描述。在本实施方式提供的数据镜像方法中,步骤s610由主机410的处理器执行,步骤s620、s621、s622、s623、s624、s625、s526、s527和s640由本地控制器200的处理器220实现,以及步骤s630、s631由镜像控制器300的处理器320实现。本实施方式提供的数据镜像方法包括如下步骤。

s610、主机410发送目标数据至本地控制器420。

s620、本地控制器420计算目标数据的数据量。与图5所示的步骤s520的实现细节类似,在这里不再赘述。

s621、本地控制器420统计其本地缓存231的空闲容量。与图5所示的步骤s521的实现细节类似,在这里不再赘述。

s622、本地控制器420比较其本地缓存231的空闲容量与目标数据的数据量的大小。与图5所示的步骤s522的实现细节类似,在这里不再赘述。

s623、当本地控制器420的本地缓存231的空闲容量大于或者等于目标数据的数据量,本地控制器420比较预设容量与目标数据的数据量的大小。预设容量为预先保存的镜像控制器430的镜像缓存332的空闲容量。具体实现方式为,通过预设缓存块的个数衡量预设容量,本地控制器420比较预设缓存块的个数与待存储目标数据所需的缓存块的个数大小,如果预设缓存块的个数大于或者等于待存储目标数据所需的缓存块的个数,则表示镜像控制器430具有充足的镜像资源,用于镜像存储从本地控制器420发送的目标数据。如果预设缓存块的个数小于待存储目标数据所需的缓存块的个数,则表示镜像控制器430不能提供充足的镜像资源镜像存储从本地控制器420发送的目标数据。

s624、如果预设容量小于目标数据的数据量,本地控制器420在周期内查询是否接收到所述镜像控制器430发送的删除数据的响应消息。所述响应消息用于表示所述镜像控制器430已删除所述镜像缓存332中的其他数据。本地控制器420在周期内查询是否接收到所述镜像控制器430发送的删除数据的响应消息的同时,本地控制器420将所述目标数据对应的写入指令加入至等待队列。

在所述镜像控制器430删除所述镜像缓存332中的其他数据之前,本地控制器420定时或者按照设定规则复制本地缓存231中的其他数据至硬盘,设定规则例如为本地缓存231中的所有数据或者特定类型的所有数据的数据量达到一定的阈值,或者规定本地控制器420将特定的数据类型的数据存储至本地缓存231之后,将其进行复制写盘等。当所述本地控制器420确认所述其他数据已复制至所述硬盘440时,向所述镜像控制器430发送删除数据的消息,所述删除数据的消息用于指示所述镜像控制器430删除所述镜像缓存332中的所述其他数据。所述镜像控制器430接收到所述删除数据的消息,删除所述镜像缓存332中的所述其他数据,然后,所述镜像控制器430发送删除数据的响应消息至所述本地控制器420。

s625、所述本地控制器420更新所述预先保存的所述镜像缓存的空闲容量,所述更新后的镜像缓存的空闲容量为更新前的所述镜像缓存的空闲容量加上已删除的其他数据的数据量。具体的实现方式为,本地控制器420更新预设缓存块的个数的值,更新后的预设缓存块的个数的值为,未更新之前的预设缓存块的个数,加上存储所述其他数据所需的缓存块的个数。

s626、所述本地控制器420判断所述目标数据的数据量是否超过更新后的所述镜像缓存的空闲容量。如果所述目标数据的数据量未超过所述更新后的所述镜像缓存332的空闲容量,执行步骤s627。具体的,通过更新后的预设缓存块的个数衡量更新后的所述镜像缓存的空闲容量,本地控制器420比较更新后的预设缓存块的个数与待存储目标数据所需的缓存块的个数大小,如果更新后的预设缓存块的个数大于或者等于待存储目标数据所需的缓存块的个数,则表示镜像控制器430具有充足的镜像资源,用于镜像存储从本地控制器420发送的目标数据。

s627、如果所述目标数据的数据量未超过所述更新后的所述镜像缓存332的空闲容量,所述本地控制器420发送所述目标数据至所述镜像控制器430。

s630、所述镜像控制器430接收所述目标数据,并将所述目标数据写入所述镜像缓存332。

s631、镜像控制器430反馈镜像完成消息至本地控制器420。

s640、所述本地控制器420在接收所述镜像控制器430发送的镜像完成消息之后,将所述目标数据写入所述本地缓存231中。本地控制器420从本地缓存231中选择,与待存储目标数据所需的缓存块的个数相同的多个空闲的缓存块,用于存储主机410发送的目标数据。

基于图6实现的数据镜像方法,当更新后的预设容量大于或者等于目标数据的数据量,则表明本地控制器420具备足够的镜像资源(即镜像控制器430的镜像缓存332具备足够的空闲的缓存空间,用以存储目标数据),以缓存主机410发送的目标数据。为保证后续本地控制器420接收到新的目标数据后,能够判断本地控制器420是否有足够的镜像资源存储新的目标数据,在步骤s640之后,存储方法还包括:本地控制器420第二次更新预设容量,第二次更新后的预设容量为,第二次更新之前的预设容量,与主机410发送的目标数据的数据量的差。具体的实现方式为,本地控制器420第二次更新预设缓存块的个数的值,第二次更新后的预设缓存块的个数的值为,第二次更新之前的预设缓存块的个数,减去待存储目标数据所需的缓存块的个数。

基于图6实现的数据镜像方法,在步骤s640之后,所述方法还包括:

所述本地控制器410将所述本地缓存231中的所述目标数据复制至所述硬盘440;

当所述本地控制器410确认所述目标数据已复制至所述硬盘440时,向所述镜像控制器430发送删除数据的消息,所述删除数据的消息用于指示所述镜像控制器430删除所述镜像缓存332中的所述目标数据;

本地控制器410接收所述镜像控制器430发送的所述删除数据的响应消息,所述响应消息用于表示所述镜像控制器430已删除所述镜像缓存332中的所述目标数据;

所述本地控制器410删除所述本地缓存231中的所述目标数据;

所述本地控制器410第三次更新预设容量,所述第三次更新后的预设容量为第三次更新前的预先保存的所述镜像缓存的空闲容量,即第三次更新前的预设容量加上所述目标数据的数据量。

基于图6实现的数据镜像方法,本地控制器420保存的预设容量,即所述预先保存的所述镜像缓存的空闲容量,有两种实现方式,下面分别描述预先保存所述镜像缓存的空闲容量的两种实现方式。

一种实现方式是,本地控制器420通过申请镜像控制器430的镜像资源实现的,具体的申请流程为:本地控制器420发送申请镜像资源的请求至镜像控制器430,申请镜像资源的请求包括预设容量;镜像控制器430比较预设容量与当前镜像缓存332的空闲容量的大小;当镜像缓存332的空闲容量大于或者等于预设容量,镜像控制器430反馈申请镜像资源成功的响应信息至本地控制器420。

另一种实现方式为,所述预先保存的所述镜像缓存的空闲容量是根据所述镜像缓存的总容量,以及预定时间段内所述主机410发送给所述本地控制器420的数据的数据量确定的。所述预定时间段为,所述本地控制器在接收所述目标数据的时刻之前的时间段。本实施方式中,根据所述镜像缓存的总容量,以及预定时间段内所述主机410发送给所述本地控制器420的数据的数据量确定预设容量,具体包括:

所述本地控制器420统计,在接收所述目标数据的时刻之前的预定时间段内,所述本地控制器420接收主机410发送的所有数据的第一数据量x。所述预定时间段可以通过定时器进行周期定时。或者,本地控制器420查询到预先保存的镜像控制器430的镜像缓存332的空闲容量低于预设阈值时,所述本地控制器420统计,在接收所述目标数据的时刻之前的预定时间段内,所述本地控制器接收主机410发送的所有数据的第一数据量x,所述预定时间段截止于查询到预先保存的镜像控制器430的镜像缓存332的空闲容量低于预设阈值时。所述本地控制器420根据所述本地控制器420预先保存的接收主机410发送的业务数据的情况,统计截止于查询到预先保存的镜像控制器430的镜像缓存332的空闲容量低于预设阈值时,之前的所述预定时间段内的,所述本地控制器420接收主机410发送的所有数据的第一数据量x。

所述本地控制器420发送调配镜像资源的请求至所述镜像控制器430,以使所述镜像控制器430获取所述时刻之前的所述预定时间段内,所述镜像控制器430接收主机411发送的所有数据的第二数据量y。镜像控制器430如何确定预定时间段与本地控制器420确定预定时间段的方式相同,在这里不再赘述。所述镜像控制器430获取所述第一数据量x占所述第一数据量与所述第二数据量之和(x+y)的第一镜像占比,如果在所述镜像控制器430的缓存330中,所述第一镜像占比的镜像容量小于或等于当前所述镜像控制器430的缓存330的空闲容量或者空闲容量中的部分空闲容量,所述镜像控制器430反馈调配成功的响应信息至所述本地控制器420。

所述本地控制器420接收所述镜像控制器430反馈的调配成功的响应信息,所述调配成功的响应信息包括,在所述镜像控制器430的缓存330中,所述镜像占比的所述镜像容量。

所述本地控制器420保存所述镜像缓存332的空闲容量,所述镜像缓存332的空闲容量为,在所述镜像控制器430的缓存330中,所述第一镜像占比的所述镜像容量。

基于图6所示的数据镜像方法的,预先保存所述镜像缓存332的空闲容量的两种实现方式的第二种实现方式,如果本地控制器420为镜像控制器430提供镜像服务,即本地控制器420与镜像控制器430相互为对方提供镜像服务,在本地控制器420申请镜像资源的同时,镜像控制器430也可以通过第一数据量x和第二数据量y,保存所述镜像缓存232的空闲容量,以申请本地控制器420为镜像控制器430提供镜像服务时的镜像资源。所述镜像控制器430保存的镜像缓存232的空闲容量为所述第二数据量y占所述第一数据量x与所述第二数据量y之和(x+y)的第二镜像占比。所述第二镜像占比与所述第一镜像占比可以相同也可以不同。然后,镜像控制器430反馈所述镜像缓存232的空闲容量至本地控制器420,本地控制器420比较本地控制器420的缓存230的空闲容量或者是空闲容量中的部分空闲容量是否大于或等于所述镜像缓存232的空闲容量,如果大于或等于所述镜像缓存232的空闲容量,则反馈调配成功的响应信息至镜像控制器430。

下面结合图5和图6所示的数据镜像方法,对本发明实施例提供的存储系统进行具体的描述。请参见图7a,图7a为本发明实施例提供的另一种存储系统700的结构图。如图7a所示,本实施例提供的存储系统700包括本地控制器710和镜像控制器720,所述本地控制器710和所述镜像控制器720通信,其中,所述本地控制器710包括本地缓存711,所述镜像控制器720包括镜像缓存721。

所述本地控制器710,用于接收目标数据;当所述目标数据的数据量未超过所述本地缓存711的空闲容量时,所述本地控制器710还用于判断所述目标数据的数据量是否超过预先保存的所述镜像缓存721的空闲容量;当所述目标数据的数据量未超过所述预先保存的所述镜像缓存721的空闲容量时,所述本地控制器710还用于发送所述目标数据至所述镜像控制器720。

所述镜像控制器720,用于接收所述目标数据,并将所述目标数据写入所述镜像缓存721。

所述本地控制器710,还用于在接收所述镜像控制器720发送的镜像完成消息之后,将所述目标数据写入所述本地缓存711中。

在本实施方式中,本地控制器710的功能和实现细节可以参照基于图2或图4或图5中所示的本地控制器420的功能,具体实现的细节不再在这里赘述。同理,在本实施方式中,镜像控制器720的功能和实现细节可参照基于图3或图4或图5所示的镜像控制器430的功能和实现细节,具体实现的细节不再在这里赘述。

作为一种可选的实施方式,所述本地控制器710,还用于更新所述镜像缓存721的空闲容量,所述更新后的镜像缓存721的空闲容量为更新前的所述镜像缓存721的空闲容量减去所述目标数据的数据量。在本实施方式中,本地控制器710的功能和实现细节可以参照基于图5中所示的本地控制器420的相关描述,具体实现的细节不再在这里赘述。

作为一种可选的实施方式,请参见图7b,图7b为本发明实施例提供的另一种存储系统700的结构图。如图7b所示,基于图7a所示的存储系统700,本实施方式提供的所述存储系统700还包括硬盘730。在本实施方式中的各个装置的功能如下描述。

所述本地控制器710,还用于将所述本地缓存711中的所述目标数据复制至所述硬盘730。

所述本地控制器710,还用于当所述本地控制器710确认所述目标数据已复制至所述硬盘730时,向所述镜像控制器720发送删除数据消息,所述删除数据消息用于指示所述镜像控制器720删除所述镜像缓存721中的所述目标数据。

所述镜像控制器720,还用于删除所述镜像缓存721中的所述目标数据。

所述镜像控制器720,还用于发送所述删除数据的响应消息至所述本地控制器710。

所述本地控制器710,还用于接收所述镜像控制器720发送的所述删除数据的响应消息,所述响应消息用于表示所述镜像控制器720已删除所述镜像缓存721中的所述目标数据。

所述本地控制器710,还用于删除所述本地缓存711中的所述目标数据。

所述本地控制器710,还用于更新所述预先保存的所述镜像缓存721的空闲容量,所述更新后的镜像缓存721的空闲容量为更新前的所述镜像缓存721的空闲容量加上所述目标数据的数据量。在本实施方式中,本地控制器710的功能和实现细节可以参照基于图5中所示的本地控制器420的相关描述,具体实现的细节不再在这里赘述。同理,在本实施方式中,镜像控制器720的功能和实现细节可以参照基于图5中所示的镜像控制器430的相关描述,具体实现的细节不再在这里赘述。

作为一种可选的实施方式,请参见图7c,图7c为本发明实施例提供的另一种存储系统700的结构图。如图7c所示,基于图7b所示的存储系统700,本实施方式提供的所述存储系统700还包括第一主机740,所述第一主机740与所述本地控制器710通信,第一主机740与本地控制器710建立主通信链路。所述预先保存的所述镜像缓存721的空闲容量是根据所述镜像缓存721的总容量,以及预定时间段内所述第一主机740发送给所述本地控制器710的数据的数据量确定的。在本实施方式中,本地控制器710的功能和实现细节可以参照基于图2或图4或图5中所示的本地控制器420的功能,具体实现的细节不再在这里赘述。同理,在本实施方式中,第一主机740的功能和实现细节,可参照基于图4或图5所示的主机410的功能和实现细节,具体的实现细节不再在这赘述。

作为一种可选的实施方式,所述预定时间段截止于所述本地控制器710查询到预先保存的所述镜像控制器720的镜像缓存721的空闲容量低于预设阈值时。

作为一种可选的实施方式,请参见图7d,图7d为本发明实施例提供的另一种存储系统700的结构图。如图7d所示,基于图7c所示的存储系统700,本实施方式提供的所述存储系统700还包括第二主机750,所述第二主机750与所述镜像控制器720通信,第二主机750与镜像控制器720建立主通信链路。所述预定时间段为所述本地控制器710在接收所述目标数据的时刻之前的时间段。在本实施方式中的各个装置的功能如下描述。

所述本地控制器710,还用于统计所述预定时间段内所述本地控制器710接收所述第一主机740发送的所有数据的第一数据量。

所述本地控制器710,还用于发送调配镜像资源的请求至所述镜像控制器720。

所述镜像控制器720,还用于获取所述预定时间段内所述镜像控制器720接收所述第二主机750发送的所有数据的第二数据量。

所述镜像控制器720,还用于获取所述第一数据量占所述第一数据量与所述第二数据量之和的镜像占比。

当镜像容量小于或等于所述镜像控制器720的缓存的空闲容量,所述镜像控制器720,还用于反馈调配成功的响应信息至所述本地控制器710,所述镜像容量是根据所述镜像占比以及所述镜像控制器720的缓存的总容量确定的。镜像控制器720的缓存的总容量包括镜像控制器的镜像缓存的总容量和主机缓存的总容量。

所述本地控制器710,还用于接收所述镜像控制器720反馈的调配成功的响应信息,所述调配成功的响应信息包括所述镜像容量。

所述本地控制器710,还用于保存所述镜像缓存721的空闲容量,所述镜像缓存721的空闲容量为所述镜像容量。在本实施方式中,本地控制器710的功能和实现细节可以参照基于图2或图4或图5中所示的本地控制器420的功能,具体实现的细节不再在这里赘述。同理,在本实施方式中,镜像控制器720的功能和实现细节可参照基于图3或图4或图5所示的镜像控制器430的功能和实现细节,具体实现的细节不再在这里赘述。同理,在本实施方式中,第一主机740的功能和实现细节,可参照基于图4或图5所示的主机410的功能和相关的实现细节,具体的实现细节不再在这赘述。同理,在本实施方式中,第二主机750的功能和实现细节,可参照基于图4或图5所示的主机411的功能和实现细节,具体的实现细节不再在这赘述。

在其他实现方式中,本地控制器710的功能和实现细节可参照基于图6中所示的本地控制器420的功能,具体实现的细节不再在这里赘述。同理,镜像控制器720的功能和实现细节可参照基于图6所示的镜像控制器430的功能和实现细节,具体实现的细节不再在这里赘述。同理,第一主机740的功能和实现细节,可参照基于图6所示的主机410的功能和实现细节,具体的实现细节不再在这赘述。同理,第二主机750的功能和实现细节,可参照基于图6所示的主机411的功能和实现细节,具体的实现细节不再在这赘述。

在本申请中,本地控制器710在发送目标数据至镜像控制器720前,通过查看预先保存的镜像缓存721的空闲容量,确定本地控制器710未使用的镜像资源,在确保本地控制器710具有充分的用来存储目标数据的镜像资源后,才发送目标数据至镜像控制器720,避免镜像控制器720不能存储本地控制器710发送的所有目标数据,以及,确保了镜像控制器720接收到的所有目标数据都可以及时存储。镜像控制器720及时存储目标数据后,发送镜像完成消息至本地控制器710以存储目标数据至本地控制器710的本地缓存711中,减少了因镜像控制器720不能及时存储目标数据而及时发出镜像完成消息,导致本地控制器710不能及时的保存目标数据至本地缓存711中的问题,减少了本地控制器710等待保存目标数据至本地缓存711的等待时间。

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

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

另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。

上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的部分步骤。而前述的存储介质包括:移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储函数代码的介质。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。

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