发明内容
本发明的目的在于提供一种基于在双控制器存储系统中使用两个存储控制器对同一缓存设备进行读写操作的技术方案,从而不需要每个存储控制器在其内存中先缓存部分待写入数据,也不需要在两个存储控制器之间同步数据。
根据本发明的一个方面,提供一种实现双控制器存储系统共享缓存设备的方法,所述双控制器存储系统包括缓存设备以及与所述缓存设备连接的两个存储控制器,所述方法包括:每个所述存储控制器响应来自客户机的读写数据的请求消息,对缓存设备执行数据的读写操作,并返回读写操作的结果,而不需要在执行读写前操作在其内存中缓存所述读写的数据,其中,所述缓存设备接收来自每个存储控制器的读写操作命令,在其与存储控制器相应的分区中执行数据的读写并返回读写结果。
所述缓存设备在其与存储控制器相应的分区中执行数据的读写的处理可包括:对接收的读写操作命令进行解析,以提取存储控制器的标识信息、读或写的命令类型以及目标数据;响应读写操作命令,根据所述标识信息从与存储控制器相应的分区读取目标数据或者在与存储控制器相应的分区中写入目标数据。
所述缓存设备在其与存储控制器相应的分区中执行数据的读写的处理还可包括:缓存设备根据所述标识信息建立缓存设备中的分区与存储控制器的映射表,并通过所述映射表定位存储控制器读写数据的分区。
所述双控制器存储系统可还包括相互连接的两个背板管理控制器,每个背板管理控制器分别与一个所述存储控制器连接;所述方法还包括:每个背板管理控制器用于监控其分别连接的存储控制器的运行状态,并且相互通报所述运行状态的消息。
所述两个背板管理控制器的任一个根据监控到的所述运行状态检测到其连接的存储控制器发生故障时,可向另一背板管理控制器发送其连接的存储控制器发生故障的消息,所述另一背板管理控制器在接收到存储控制器发生故障的消息后,可控制其连接的存储控制器接管发生故障的存储控制器的全部服务。
根据本发明的另一个方面,提供一种双控制器存储系统,所述系统包括缓存设备以及与所述缓存设备连接的两个存储控制器。其中,每个所述存储控制器响应来自客户机的读写数据的请求消息,对缓存设备执行数据的读写操作,并返回读写操作的结果,而不需要在执行读写操作前先在其内存中缓存所述读写的数据。其中,所述缓存设备接收来自每个存储控制器的读写操作命令,在其与存储控制器相应的分区中执行数据的读写并返回读写结果。
所述缓存设备可包括:解析单元,对接收的读写操作命令进行解析,以提取存储控制器的标识信息、读或写的命令类型以及目标数据;命令执行单元,响应读写操作命令,根据提取的所述标识信息从与存储控制器相应的分区读取目标数据或者在与存储控制器相应的分区中写入目标数据。
所述缓存设备可还包括:映射单元,根据所述标识信息建立缓存设备中的分区与存储控制器的映射表,并通过所述映射表定位存储控制器读写数据的分区。
所述双控制器存储系统可还包括相互连接的两个背板管理控制器,每个背板管理控制器分别与一个所述存储控制器连接,并且用于监控其分别连接的存储控制器的运行状态,并且相互通报所述运行状态的消息。
所述两个背板管理控制器的任一个根据监控到的所述运行状态检测到其连接的存储控制器发生故障时,向另一背板管理控制器发送其连接的存储控制器发生故障的消息,所述另一背板管理控制器在接收到存储控制器发生故障的信息后,控制其连接的存储控制器接管发生故障的存储控制器的全部服务。
具体实施方式
以下,参照附图来详细说明本发明的实施例。
本发明的双控制器存储系统基于服务器集群架构,由两个存储控制器一同提供数据存储服务。所述每个存储控制器安装有软件、硬件或两者结合实现的群集服务,从而在其中一个存储控制器发生故障的情况下,另一个存储控制器自动接管发生故障的存储控制器的所有服务。在这里,本发明的两个存储控制器都与同一个存储设备连接,并且向同一个存储设备执行数据读写操作。而每个存储控制器都有一个背板管理控制器与其连接,实时监控连接的存储控制器的运行状况。当任一背板管理控制器确定与其连接的存储控制器发生故障,不能正常进行包括数据读写等的IO操作时,该背板管理控制器通知另一背板管理控制器,由所述另一背板管理控制器通知与其连接的存储控制器主动接管发生故障的存储控制器的所有服务。从而,不需要像传统的双控制器存储系统中那样在两个存储控制器之间需要数据同步。当然,基于本发明构思的双控制器存储系统不限于两个存储控制器,通过变形和修改也适用于多个存储控制器的情形。这里,将本发明所述的存储设备称为缓存设备。
图1是示出本发明的双控制器存储系统的逻辑框图。
参照图1,本发明的基于服务器集群的双控制器存储系统包括存储控制器110A、存储控制器110B、背板管理控制器120A、背板管理控制器120B、缓存设备130。
存储控制器110A和存储控制器110B分别通过总线与同一缓存设备130连接,并且通过网络(如局域网或广域网)或者光纤通道与客户机连接。每个存储控制器包括处理器,所述处理器用于运行存储应用程序,响应来自客户机网络或光纤通道的读写数据的请求消息,并且使用专用协议对缓存设备130执行数据的读写。所述每个存储控制器安装有集群服务,从而在特定情况下,能够接管另一存储控制器的全部服务,包括IP地址或光纤通道地址以及通过网络发送给另一存储控制器的数据读写的请求消息。
存储控制器110A和存储控制器110B各配置有预定的网络地址(IP地址)或光纤通道地址。在客户机上预先配置用于缓存设备130访问的存储控制器110A或存储控制器110B的网络地址或光纤通道地址。可以配置网络上的多个客户机通过存储控制器110A或存储控制器110B进行缓存设备130的读写操作,实现负载均衡。
缓存设备130将存储单元分成多个分区,为存储控制器110A和存储控制器110B分配各自的分区,并且建立存储单元的分区与存储控制器的映射表,从而将存储控制器110A和存储控制器110B通常读写的数据存储在不同的分区内。当接收到存储控制器110A和存储控制器110B发出的数据读写命令,缓存设备130使用映射表来定位用于读写数据的存储单元的分区,在所述定位的分区内执行数据读写,并且将数据读写的结果返回给发出数据读写命令的存储控制器。缓存设备130可以动态地分配所述多个分区,以更好地实现负载均衡。
背板管理控制器120A通过总线与存储控制器110A连接,背板管理控制器120B通过总线与存储控制器110B连接,并且背板管理控制器120A和背板管理控制器120B通过总线或者私有网络接口相互连接并通信。背板管理控制器120A和背板管理控制器120B分别用于监控其管理的存储控制器110A和存储控制器110B的运行状态,并且定期地相互通报所述运行状态的信息。背板管理控制器120A和背板管理控制器120B可以通过各种方法监控存储控制器110A和存储控制器110B的运行状态。例如,当背板管理控制器检测到其管理的存储控制器发生超过预定数量的读写错误时,背板管理控制器可确定其管理的存储控制器发生故障。
以下针对存储控制器110A和背板管理控制器120A的操作进行的描述同样适用于存储控制器110B和背板管理控制器120B。在本申请的说明书中,当提及背板管理控制器时,指代背板管理控制器A或背板管理控制器B;当提及存储控制器时,指代存储控制器A或存储控制器B。此外,涉及网络地址的描述也同样适用光纤通道地址的情形。
当背板管理控制器120A检测到其管理的存储控制器110A发生异常,不能正常完成数据的读写操作时,背板管理控制器120将存储控制器110A发生故障的运行状态的消息发送给背板管理控制器120B。此时,背板管理控制器120B控制存储控制器110B接管存储控制器110A的全部服务,包括IP地址或光纤通道地址以及通过网络发送给存储控制器110A的数据读写的请求消息IP地址和数据读写服务。当从客户机接收到读写数据的请求消息时,存储控制器B使用接收的请求消息中包含的存储控制器的标识信息(如请求消息中的目标IP地址),根据存储控制器和缓存设备之间的专用协议对缓存设备130进行数据的读写。从而,存储控制器110B无论接收到发给存储控制器A的读写数据的请求消息,还是接收到本机的读写数据的请求消息,都使用请求消息中的存储控制器的标识信息对缓存设备130进行数据读写。
当背板管理控制器120A检测到其管理的存储控制器110A恢复正常操作时,背板管理控制器120A将存储控制器110A恢复正常操作的运行状态的消息发送给背板管理控制器120B。其后,背板管理控制器120B控制存储控制器110B解除接管状态。自此,存储控制器110B仅处理发送给本机的数据读写请求消息。
图2示出根据本发明的双控制器存储系统的缓存设备130的结构的逻辑框图。
参照图2,缓存设备130包括命令解析单元210、命令执行单元220、分配单元230、映射单元240和存储单元250。
命令解析单元210对接收的读写命令进行解析,提取存储控制器的标识信息、读或写的命令类型以及目标数据等。分配单元230将存储单元250分成多个分区,为存储控制器110A和存储控制器110B分配各自的分区。映射单元240建立存储单元250的分区与存储控制器的映射表,其在命令执行单元220的控制下,根据提取的存储控制器的标识信息定位执行读写的存储单元250的分区。
当缓存设备130接收到存储控制器的数据读写命令时,命令执行单元220先通过命令解析单元110对读写命令进行解析。然后,命令执行单元220根据提取的存储控制器的标识信息,通过映射单元240定位读写数据的存储单元250的分区,根据提取的命令在所述分区中执行目标数据的读写操作,并且将读写操作的结果反馈给发送读写命令的存储控制器。
所述缓存设备130可以为固态硬盘等缓存装置,存储控制器110A和存储控制器110B可以通过多条总线连接多个缓存设备,多个缓存设备彼此独立,组成RAID阵列,防止因一个缓存设备物理损坏带来的系统数据丢失,保证双控制器系统的可靠性。
由此可见,根据本发明的存储控制器和存储控制方法,两个存储控制器与同一缓存设备连接,根据用户的读写请求对同一缓存设备进行数据读写操作,并且在一个存储控制器因发生故障不能执行数据读写的情况下,与其连接的背板管理控制器将发生故障后的读写请求通过与另一存储控制器连接的背板管理控制器转给所述另一存储控制器进行处理,从而免除了在双控制器存储系统中在两个存储控制器之间进行同步以及数据恢复的处理,大大提高了存储系统的效率。
可以上述的方法和/或操作记录、存储或固化在一个或多个包括将被计算机执行的程序指令的计算机可读存储介质中,以使得处理器运行或执行这些程序指令。所述介质还可单独包括数据文件、数据结构等,或者数据文件、数据结构等与程序指令的组合。计算机可读存储介质的示例包括磁介质(如硬盘、软盘和磁带)、光介质(如CD-ROM盘和DVD)、磁光介质(如光盘)和被特殊配置存储并执行程序指令的硬件装置(如只读存储器(ROM)、随机存取存储器(RAM)、闪存等)。程序指令的示例包括如编译器生成的机器码和包含可由计算机使用解释程序执行的高级代码的文件。可以配置所述的硬件装置为一个或多个软件模块,以执行上述的操作和方法,或者配置一个或多个软件模块为硬件装置。此外,可以在通过网络连接的计算机系统当中分布计算机可读存储介质,并且以分布的方式存储和执行计算机可读代码或程序指令。
已描述了一些示例。但是,应该理解,可以进行各种修改。例如,如果以不同的次序执行所述的技术,和/或如果以不同的方式组合所述系统、架构、装置或电路中的组件,和/或用其他的组件或等同物替代或补充所述组件,能够取得适宜的结果。因而,其他的实施在所附权利要求的范围内。