一种多控磁盘阵列缓存镜像方法及系统的制作方法_2

文档序号:9810387阅读:来源:国知局
]图7为本发明的缓存未命中读操作处理流程图;
[0046]图8为本发明的故障检测及处理机制图。
[0047]其中附图标记为:
[0048]步骤100为本发明整体步骤,包括:
[0049]步骤101/102/103/104。
【具体实施方式】
[0050]本发明提出了一种并行多控磁盘阵列缓存镜像方法及系统,目的在于多控磁盘阵列中解决缓存数据一致性问题,为满足平台一致性的要求,选择在SCST设备驱动中间层加入缓存镜像模块,缓存数据通过IB通道与镜像缓存进行高速同步,传输使用RDMA(RemoteDirect Memory Access,全称远程直接数据存取)协议以减少数据拷贝次数,降低对系统性能的影响。
[0051]多控磁盘阵列控制器通过SCST目标器为服务器提供统一的访问接口,服务器端通过SCST始发器发起对某一控制器中SCST目标器端的数据访问请求,SCST目标器接收到请求后,通过SCST设备中间层与Cache(缓存)模块交互,以响应访问请求。访问过程中,若Cache (缓存)数据发生变化,则缓存镜像模块通过IB适配器驱动模块与镜像缓存进行实时同步,以保证缓存数据的高可靠性。
[0052]多控磁盘阵列控制器镜像关系各控制器缓存区分为两部分:本地缓存区和镜像缓存区,本地缓存区只供本地缓存数据使用,用于与本地SCST设备中间层模块数据访问请求进行缓存数据交互;镜像缓存区用于与另一台已建立镜像对关系的多控磁盘阵列控制器的本地缓存区数据作镜像使用。当多控磁盘阵列系统启动后,每个控制器的本地缓存区均与另一个控制器的镜像缓存形成了镜像对关系,所有控制器本地缓存均有一个备份的镜像缓存区存在与另一个控制器中,最终形成的镜像对关系如图1所示。
[0053]以下为本发明方法的具体步骤,如图2所示步骤100为本发明具体步骤,包括:
[0054]步骤101,建立镜像对,最终形成的镜像对如图3所示。初始化控制器,控制器包括本地缓存区与镜像缓存区,源控制器的本地缓存区与镜像控制器的镜像缓存区建立镜像对,以下为具体实施例,如图4和图5所示:
[0055]根据配置文件参数初始化本地缓存区和镜像缓存区,并生成该控制器A(源控制器)唯一标识ID ;
[0056]通过状态检测接口检测获取其它控制器ID及配对关系状态信息(镜像对状态信息);
[0057]检查获取的控制器镜像对状态信息,若存在空闲镜像缓存的控制器,则向最先检测到的空闲镜像缓存控制器B发送请求建立镜像对关系的申请;
[0058]若对端控制器B准予镜像对关系建立,则将本控制器A的本地缓存区和对端控制器B的镜像缓存区建立缓存镜像对;
[0059]若所有控制器均无空闲的镜像缓存,则从所有探测到的控制器中选择最先响应的控制器(控制器F),向其发送重建镜像对关系申请;
[0060]控制器F收到重建镜像对关系申请后,首先取消之前已存在的本地缓存镜像到其镜像对的镜像缓存之间的镜像关系,然后建立本控制器A本地缓存到发送重建镜像对关系命令控制器镜像缓存的镜像对关系,并同意重建镜像对关系申请;
[0061 ] 控制器A收到重建镜像对关系命令成功消息后,建立本地缓存到控制器F (镜像控制器)镜像缓存的镜像对。
[0062]镜像对建成后,控制器A主动发送首次缓存同步操作申请,使控制器A中的本地缓存和控制器F中镜像缓存保持一致,成功后初始化控制器F镜像缓存差异位图。
[0063]步骤102,写入数据。当执行数据写入操作时,将数据写入到本地缓存区,同时将数据同步到与本地缓存区建立镜像对的镜像缓存区中,以下为步骤102的具体实施例,如图6所示:
[0064]缓存镜像镜像对关系建立成功之后,多控磁盘阵列控制器初始化过程完成,可通过SCST Target为前端连接的服务器提供数据访问服务,在采用写回模式的情况下,为保证镜像缓存数据的实时一致性,镜像对之间采用IBA卡的RDMA协议进行同步更新,当控制器从SCST Target模块接收到写操作请求后,SCSC中间层驱动使用RDMA将缓存差异数据送到镜像缓存中,收到镜像端接收成功确认后,再将1操作提交各底层块设备进行处理,并向上层提交数据写入成功确认消息,完成写过程,具体流程如下:
[0065]源控制器获取SCST目标器层写回操作请求,将写回数据写入本控制器本地缓存区中;
[0066]使用改变的写入数据,更新镜像缓存差异位图;
[0067]将镜像缓存差异位图中不一致的缓存数据通过RDMA数据同步通道发到镜像控制器镜像缓存区中;
[0068]获取镜像控制器远程写操作成功消息;
[0069]继续执行本地写回操作处理流程,向SCST目标器层返回写回操作执行成功消息;
[0070]在镜像控制器中,实时监控源控制器的状态,若发现源控制器发生故障,则将镜像缓存写回到磁盘中(将镜像控制器镜像缓存区的数据存储到磁盘设备中),以保证缓存数据不被丢失。
[0071]其中在步骤102中,一方面使用IB适配器的高速传输特性提高传输性能,另一方面,结合镜像缓存差异位图减少同步数据量,同步操作过程对源控制器的写操作影响很小,并且由于使用了 RDMA写功能,发送到镜像端的数据可以不用进入镜像控制器的系统核心,而是直接发送到镜像缓存区对应的虚拟地址中,因此镜像控制器的CPU可完全不参与此RDMA操作,整个同步过程对镜像控制器的性能影响很小。
[0072]步骤103,读取数据,当执行数据读取操作时,从本地缓存区读取数据,以下为步骤103的具体实施例,如图7所示:
[0073]源控制器获取SCST目标器层读操作请求,从源控制器本地缓存区中查找,若缓存命中,则直接返回缓存数据,读操作完成;
[0074]若缓存未命中,则产生缓存未命中中断处理信号,执行本地缓存读取处理流程;
[0075]本地缓存读取模块通过底层块设备从共享存储器中获取需要读取的数据,使用选定的缓存替换算法替换本地缓存区缓存数据;
[0076]更新镜像缓存差异位图;
[0077]将读操作所需数据返回给SCST目标器模块,执行读操作处理流程,完成读操作请求。
[0078]在步骤103中,仅当读操作请缓存未命中时,需要执行额外的更新镜像缓存差异位图操作,并不涉及到镜像对数据同步及其他的1操作,因此对读操作的性能影响很小。
[0079]步骤104,故障检测及处理。所述源控制器向所述镜像控制器发送状态检测命令;若所述源控制器在检测超时窗口内获取所述镜像控制器的状态正常响应,则所述镜像控制器状态正常,等待规定周期后,重新发送状态检测命令,否则设置所述镜像控制器的状态为镜像丢失,并暂停缓存1操作流程,解除与所述源控制器的镜像对,所述源控制器与其他控制器建立镜像对;恢复1操作流程,并将源控制器的状态设置为镜像正常;将所述镜像控制器的镜像缓存区的数据存储到共享存储设备中,并将所述镜像控制器的镜像缓存区设置为空闲状态,以下为步骤104的具体实施例,如图8所示:
[0080]为确保多控磁盘阵列缓存镜像的镜像关系出现异常时能正确处理,在缓存镜像中增加故障检测及恢复机制,在缓存镜像故障检测过程中,由源控制器周期性的通过状态检测接口发送镜像状态查询命令,源控制器和镜像控制器分别对故障查询命令及其响应情况进行相应的处理,以保证镜像故障能被源控制器或镜像控制器及时获知,从而可及时得到处理,现分别叙述源控制器和镜像控制器的故障检测处理流程。
[0081]以下为源控制器故障检测及处理流程,包括:
[0082]源控制器通过状态检测接口向对应镜像控制器发送状态检测命令;
[0083]若源控制器在检测超时窗口内获取到镜像控制器状态正常响应,则状态正常,等待规定周期后,重新发送状态检测命令;
[0084]若源控制器在检测超时窗口内未获取到镜像控
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1