一种存储双控制器间缓存同步机制的制作方法

文档序号:9326619阅读:987来源:国知局
一种存储双控制器间缓存同步机制的制作方法
【专利说明】一种存储双控制器间缓存同步机制
[0001]
技术领域
[0002]本发明涉及一种存储双控制器的技术领域,具体地说是一种存储双控制器间缓存同步机制。
【背景技术】
[0003]目前的存储系统体系结构已从传统的直接存储(DAS)发展为网络附加存储(NAS)体系结构和存储局域网络(SAN)体系结构。SAN (Storage Aera Network-存储区域网络)是一种通过网络方式连接存储设备和应用服务器的存储构架,这个网络专用于主机和存储设备之间的访问。当有数据的存取需求时,数据可以通过存储区域网络在服务器和后台存储设备之间高速传输。SAN体系结构的实现有赖于存储端SCSI Target软件,它使SCSI协议应用于高速数据传输网络成为可能。SAN体系结构存在单点故障的隐患,控制器无法处理写入失败,为提高写入可靠性,一般采用双控制器共同处理客户端读写命令。
[0004]双控制器的实现包括缓存模块及缓存同步两部分的实现。SCSI Target软件有FILE1和Block1两种读写方式,File1 一般采用文件系统中设计的缓存,而Block1没有自己的缓存,直接将数据传输至块设备层。为提高Block1性能,一般需要设计缓存模块。双控制器之间的数据备份也是基于该缓存模块进行设计,缓存同步的数据即该模块中存放的数据。
[0005]双控制器间缓存同步模式分为active-active及active-standby两种。active-active模式下两个控制器要分别备份对方控制器的缓存数据,保证缓存数据的可靠性。每个控制器本身的缓存空间分为两部分,一部分是当前控制器的缓存数据,另一部分是对方控制器的缓存备份。当其中一个控制器发生异常无法工作后,另一个接管所有的客户端数据请求,不会导致存储服务中断,并且缓存里的数据没有丢失。
[0006]active-standby模式下客户端的数据请求都由主控制器来处理,从控制器不接收数据请求也不会操作磁盘,从控制器的主要功能是缓存数据备份。主控制器所有对本地缓存的更新,都必须实时同步到从控制器的缓存中,即使主控制器故障,缓存数据也不会丢失。从控制器时刻监控主控制器是否工作正常,当主控制器发生异常状况后,客户端接收不到数据请求响应,会使用与从控制器的连接发送命令。此时从控制器代替主控制器处理请求,保证了高可用性。同时,从控制器将缓存中的备份数据作适当的处理,写入磁盘,或者直接作为缓存数据使用。
[0007]传统缓存同步实现中主控制器需要等待从控制器端同步完成才给客户端做出读写请求响应,由于主控制器大部分时间工作是正常的,从控制器端端缓存是没有必要的,因此对于正常的读写请求这种处理方式会额外增加从控制器缓存同步的开销,影响控制器处理效率。
[0008]
【发明内容】
本发明的技术任务是针对以上不足之处,提供一种存储双控制器间缓存同步机制。解决传统缓存同步实现中额外增加从控制器缓存同步的开销,影响控制器处理效率的问题。
[0009]本发明解决其技术问题所采用的技术方案是:
一种存储双控制器间缓存同步机制,存储双控制器间采用万兆网络连接,由心跳进程和缓存同步进程完成相互间的通讯,具体使用内核层的socket完成;
将缓存同步功能的实现分为缓存同步进程及心跳进程的实现;将缓存同步进程分为主从工作模式,在主工作模式下通过读写请求及读写异常触发缓存同步进程的发起,在从工作模式下,结合心跳进程进行故障检测进而转至故障接管线程的处理;对读写返回正常时不用等待从控制器缓存完成即可响应客户端请求;
缓存同步通讯协议数据包包括:命令类型、逻辑磁盘地址、物理设备号、数据大小、数据及读写返回值。
[0010]当有读写请求及异常的数据及读写返回值时,将触发缓存同步进程的启动,对于读写失败的操作,从控制器将获得实时通知并结合故障检测结果做相应处理,如果是常规故障,即主控制器可通过再次发送读写请求完成,则从控制器只做缓存同步;如果是掉电故障,从控制器需对本次读写操作进行掉电后缓存同步并接管相应读写任务;
其中从控制器端接收的缓存数据还包括数据及读写返回值,通过记录读写请求在队列中的位置正确获得读写请求内容及相应返回值;当数据及读写返回值正常时,不用等待从控制器缓存完成即可响应客户端请求;当数据及读写返回值异常时,等待从控制器缓存成功后对客户端请求响应。
[0011]双控制器间缓存同步处理流程如下:
(1)、主控制器端缓存同步进程检测到SCSITarget进程有新的读写请求时,启动缓存同步模块并读取其数据,读取的数据为读写命令的控制信息、数据及读写返回值;
(2)、将读取的数据进行封包传输至从控制器端,从控制器端缓存同步模块接收数据解包后存放到本地缓存;
(3)、主控制器端SCSITarget根据读取的数据响应客户端,当读写请求正常返回时,直接响应客户端,当读写请求异常时再次启动缓存同步进程将缓存数据发往从控制器;
(4)、从控制器端缓存同步模块将此次缓存数据与已有数据比较,如果没有则进行缓存,如果已有则更新数据及读写返回值;
(5)、对于读写请求返回值异常的缓存,从控制器根据心跳进程做故障检测,如果是常规故障,即主控制器可通过再次发送读写请求完成,则从控制器只做缓存同步;如果是掉电故障,从控制器对本次读写操作进行掉电后缓存同步并接管相应读写任务。
[0012]本发明的一种存储双控制器间缓存同步机制和现有技术相比,具有以下优点:
1、对双控制器缓存同步机制进行了重新设计,通过根据读写请求返回值做不同处理,节省读写返回正常时在从控制器端的缓存同步开销,从而提高控制器效率;
2、当读写返回值正常时,不用等待从控制器缓存完成即可响应客户端请求;当读写返回值异常时,才需等待从控制器缓存成功后对客户端请求响应;其中读写返回值如果正常,将省去从控制器端故障检测过程产生的开销;
3、缓存同步通讯协议数据包的设计,加入了对读写请求返回值的传输,如果该值正常可省去故障检测产生的开销,否则将该值与故障检测结果结合,判断是否需要进行故障接管。
【附图说明】
[0013]下面结合附图对本发明进一步说明。
[0014]附图1为一种存储双控制器间缓存同步机制的双控制器间缓存同步处理流程框图。
【具体实施方式】
[0015]下面结合附图和具体实施例对本发明作进一步说明。
[0016]实施例1:
本发明的一种存储双控制器间缓存同步机制,存储双控制器间采用万兆网络连接,由心跳进程和缓存同步进程完成相互间的通讯,具体使用内核层的socket完
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1