应用于双控存储系统的缓存同步方法及系统的制作方法_2

文档序号:8905178阅读:来源:国知局
写入所述逻辑卷对应的磁盘中,将所述已写缓存中已写入所述磁盘的数据删除,并将所述第二缓存中的所述已写缓存标记清空。
[0032]作为一种可实施例,还包括第二轮询模块;
[0033]所述第一控制器,被配置以通过所述第二轮询模块轮询所述第二缓存的状态,若获得所述已写缓存标记已清空,则将所述第一缓存中与所述第二缓存中已写入所述磁盘的数据对应的数据删除,从而使所述第一缓存的数据与所述第二缓存的数据同步。
[0034]本发明的有益效果包括:
[0035]本发明的应用于双控存储系统的缓存同步方法及系统,结合了写请求信号传递的功能,不仅传递写请求信号,而且将写请求信号对应的数据缓存至本地缓存,并通过写请求信号的传递将对应的数据同步至另一缓存中,不需镜像缓存,且页面的同步只限定在缓存回写过程中,省却许多页面同步的过程,同时,写请求信号传递时对应的数据是批量写入和读出的,大大提高了双控存储系统的效率及性能。
【附图说明】
[0036]图1为本发明的应用于双控存储系统的缓存同步方法的一实施例的流程示意图;
[0037]图2为本发明的应用于双控存储系统的缓存同步方法的另一实施例的流程示意图;
[0038]图3为本发明的应用于双控存储系统的缓存同步系统的一实施例的结构示意图。
【具体实施方式】
[0039]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本发明应用于双控存储系统的缓存同步方法及系统进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0040]参见图1,本发明实施例提供一种应用于双控存储系统的缓存同步方法,包括以下步骤:
[0041]S100,主机发送写请求信号到第一控制器。
[0042]S200,判断第一控制器是否为写请求信号对应逻辑卷的预设主控制器。
[0043]S300,若第一控制器为预设主控制器,则第一控制器将写请求信号对应的数据缓存至第一控制器的第一缓存中,并将写请求信号传递到第二控制器。
[0044]S400,第二控制器接收写请求信号后,将写请求信号对应的数据写入第二控制器的第二缓存中,使得第二缓存的数据与第一缓存的数据同步,并在同步后发送确认信号到第一控制器,第一控制器接收到确认信号后返回同步完成信号到主机。
[0045]S500,若第一控制器不是预设主控制器,则第一控制器将写请求信号传递给作为逻辑卷预设主控制器的第二控制器,第二控制器将写请求信号对应的数据缓存至第二控制器的第二缓存中,发送确认信号到第一控制器。
[0046]S600,第一控制器接收确认信号后,将写请求信号对应的数据写入第一控制器的第一缓存中,使得第一缓存的数据与第二缓存的数据同步,并在同步后返回同步完成信号到主机。
[0047]本发明的应用于双控存储系统的缓存同步方法,结合了写请求信号传递的功能,不仅传递写请求信号,而且将写请求信号对应的数据缓存至其中一台控制器的本地缓存(第一缓存或第二缓存),通过写请求信号的传递将其对应的数据缓存至另一控制器的缓存中,只需同步,不需镜像缓存,且page同步只是限定在Cache Writeback(缓存回写)过程中,省却了许多page同步的流程,同时,由于写请求信号进行传递时其对应的数据是批量写入或读出的,大大提高了双控存储系统的效率及性能。
[0048]值得说明的是,双控存储系统一般运行在Linux环境下,包括两个控制器系统,两个控制器系统的配置结构相同,通过PCIe(PCI Express,总线接口)或者SAS(SerialAttached SCSI,串行连接SCSI)连接两个控制器系统的缓存同步模块进行通信,两个控制器系统各包括一个控制器,分别为第一控制器和第二控制器。该双控存储系统的两个控制器在底层都与相同的物理磁盘组连接,可以同时访问所有磁盘,其中,物理磁盘组组成磁盘阵列(RAID,Redundant Arrays of Independent Disks),双控存储系统的 LVM(LogicalVolume Manager,逻辑卷管理卷)将磁盘阵列切割为逻辑卷,由VFS(Virtual File System,虚拟文件系统)中的cache module (快取模块)从磁盘阵列中存取数据,以满足磁盘高速缓存的需求。在LVM切割磁盘阵列为逻辑卷时,设计一个磁盘阵列只属于一个控制器,虽然两个控制器都能访问所有的磁盘,但能够操作写请求信号的只有拥有此磁盘阵列的控制器。当有写请求信号发送到快取模块后,双控存储系统中的一台控制器将写请求信号经由缓存同步模块透过PCIe (或SAS)传递至另一台控制器,并将写请求信号对应的数据缓存至相应的缓存中,以达成缓存同步的需求。
[0049]双控存储系统的HA Module (High Available Module,高可用集群模块)会定期发送讯息确认另一台控制器是否存在,当超出一个预设时间没有收到讯息时,则认为另一台控制器发生故障,此时双控存储系统运作在故障转移(Failover)状态,双控存储系统可视为工作在单控制器状态。故障转移状态主要有以下几种:在Cache Sync(缓存同步)时出现故障转移,在Cache Writeback (缓存回写)时出现故障转移,在Cache Writeback End (缓存回写末端)时出现故障转移以及在Read Shipping(读传递)时出现故障转移。当系统处于FaiIback(故障恢复)状态并且Cache Sync Kernel Thread(缓存同步内核线程)又重新收到确认讯息时,代表另一台控制器又重新恢复运行,此时会让系统停止接受写请求,而另一台控制器也会进入同步模式,待两台控制器的Cache同步结束后,再恢复正常运行的状态。
[0050]作为一种可实施方式,参见图2,若第一控制器为预设主控制器,且第一控制器接收确认信号后,包括如下步骤:
[0051]S400a,第一控制器用已写缓存标记将第一缓存标记为已写缓存,并将已写缓存中与写请求信号对应的数据写入逻辑卷对应的磁盘中,将已写缓存中已写入磁盘的数据删除,并将第一缓存中的已写缓存标记清空。
[0052]Linux在使用缓存时会分为两段,第一段指的是在读写档案时,会先将数据读或写入缓存中,若是写入的情况(即为写请求),会先用已写缓存标记将缓存标记为Dirty (已写缓存),此时数据尚未写入磁盘,但对于上层的应用程序来说,写入已将完成了。第二段指的是Linux kernel会在适当的时间将已写缓存中的数据写入磁盘中,以此来完成真正的写入作业。
[0053]上述实施例为前端控制器(第一控制器)为预设主控制器的流程步骤,其完成了写请求对应数据的真正写操作,将写请求对应的数据批量写入,减小了磁盘的访问频率,大大提高双控存储系统的效率。同时,将第一缓存中已写入磁盘的写请求对应的数据删除,并将已写缓存标记清空,以清空第一缓存,使得第一缓存在存储数据时效率更高。
[0054]作为一种可实施方式,步骤S400a之后,还包括如下步骤:
[0055]S400b,第二控制器轮询第一缓存的状态,若获得已写缓存标记已清空,则第二控制器将第二缓存中与第一缓存中已写入磁盘的数据对应的数据删除,从而使第二缓存的数据与第一缓存的数据同步。
[0056]在第一控制器将写请求对应的数据写入磁盘后(即进行写请求对应数据的真正写操作后),第二控制器通过轮询的方式获取第一缓存的状态(此时第一缓存中与已写入磁盘的数据对应的数据已删除,且第一缓存中的已写缓存标记已清空),从而达到第二缓存与第一缓存同步的效果。且写请求对应的数据批量写入磁盘或删除,大大提高系统效率。其中,需要说明的是,第二控制器在轮询第一缓存的状态时,若获得第一缓存中写入磁盘的数
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1