本发明涉及存储技术领域,特别是涉及一种存储系统单节点故障快速恢复io的方法及装置。
背景技术:
现有节点故障恢复事件处理io中断的方式主要采用观察者模式,但是观察者模式存在以下问题,存储系统集群作为被观察者,转发层、缓存、卷、raid等子模块作为观察者:1、被观察者对象有很多的直接和间接观察者,将所有的观察者都通知到会花费很多时间。2、观察者和观察目标之间有循环依赖,观察目标会触发它们之间进行循环调用,可能导致系统崩溃。3、观察者模式没有相应的机制让观察者知道所观察的目标对象是怎么发生变化的,而仅仅只是知道观察目标发生了变化。4.观察者通知被观察者也会花费较多时间,并且被观察者需要检查是否所有的观察者已经恢复,才能通知主机恢复i/o。
技术实现要素:
本发明主要解决的技术问题是提供一种存储系统单节点故障快速恢复io的方法及装置,能够减少通信时间以及各模块交叉触发中断和恢复造成的时间差,保证中断时间最优。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种存储系统单节点故障快速恢复io的方法,包括:第一步,由业务代表查询和调用业务接口执行业务,存储业务子模块向业务代表调用接口实现响应业务,所述业务代表连接存储业务子模块和集群事件管理模块,业务代表向外统一暴露接口;第二步,业务代表管理集群事件序列化,控制事件的统一发布和响应处理。
进一步,所述第一步具体包括以下步骤:
s100、将需要处理的事件传输到业务代表的缓存中,所述缓存为创建于集群主机端与业务代表端进行数据通信的缓存;
s101、设置业务代表属性类以及状态机;
s102、控制启动状态机业务代表算法;
s103、等待集群单节点加入离开事件的发生,从业务代表的缓存中,将接收的事件读取到业务代表状态机,完成事件发布状态更新以及通知主机i/o的下发。
进一步,所述步骤s100中的缓存存放于集群配置管理中。
进一步,所述步骤s101中的状态机用于控制发布事件给子模块,以及响应各模块处理结果。
进一步,所述第二步具体包括以下步骤:
s200、节点离开时,集群生成pend,发送到业务代表端,i/o栈业务子模块存活节点保持i/o,并在业务端处理因节点离开所需的事务处理;
s201、集群boss节点切换、重构视图后生成remove事件,发送到业务代表端,业务代表判断各业务个子模块业务处理是否完成;
s202、业务代表监听i/o所有业务子模块处理完成,统一下发remove事件到各业务配置管理模块,触发i/o开始中断;
s203、io中断后,所有子模块一起进行首选节点切换,元数据更新同步操作,完成后通知业务代表;
s204、业务代表收到所有子模块配置更新完成后通知主机,立即恢复i/o;
s205、节点加入时,集群生成add/unpend/unpenddone事件;
s205、业务代表收到集群事件放到缓存中,add触发状态机通知各子模块业务层进行nodes属性更新等操作,同时存活节点保持i/o;
s207、更新完成后,通知业务代表,等待节点加入后集群unpend事件的触发,业务代表触发子业务模块进行discard操作,存活节点不做操作,继续保持i/o;
s208、集群完成视图重建操作发送unpenddone事件到业务代表;
s209、业务代表收到所有子模块配置更新完成后通知主机,立即恢复i/o。
进一步,所述步骤s205中add/unpend/unpenddone事件为节点加入、解除、解除完成事件。
进一步,所述步骤s208中各子模块已完成discard操作,业务代表统一触发各子模块配置模块中断i/o,进行首选节点切换,元数据更新和同步。
进一步,所述第二步之后减少通信或对表示层代码中的业务层代码的远程查询功能。
一种存储系统单节点故障快速恢复io的装置,包括业务代表模块、存储业务子模块和集群事件管理模块;所述业务代表模块查询和调用业务接口执行业务,存储业务子模块向业务代表调用接口实现响应业务;所述业务代表模块作为中间代表连接存储业务子模块和集群事件管理模块,业务代表模块向外统一暴露接口;所述业务代表模块管理集群事件序列化,控制事件的统一发布和响应处理。
本发明的有益效果是:本发明由一个中间代表来连接存储业务子模块和集群事件管理,减少存储业务子模块和集群事件管理的通信复杂度,集群业务实现向外统一暴露接口,由业务代表来具体查询和调用业务接口执行相关业务,而客户则只需要向业务代表调用相关简化后的接口即可实现响应业务。减少通信或对表示层代码中的业务层代码的远程查询功能,减少通信时间以及各模块交叉触发中断和恢复造成的时间差,保证中断时间最优。
附图说明
图1是本发明一种存储系统单节点故障快速恢复io的方法一较佳实施例的架构图。
图2是本发明一种存储系统单节点故障快速恢复io的装置的结构图。
具体实施方式
下面结合附图对本发明的较佳实施例进行详细阐述,以使本发明的优点和特征能更易于被本领域技术人员理解,从而对本发明的保护范围做出更为清楚明确的界定。
第一方面,请参阅图1,本发明实施例提供一种存储系统单节点故障快速恢复io的方法,包括:首先,采用业务代表模式设计,由一个中间代表来连接存储业务子模块和集群事件管理模块,减少业务子模块和集群事件管理模块的通信复杂度,业务代表实现向外统一暴露接口,由业务代表来具体查询和调用业务接口执行相关业务,而业务子模块则只需要向业务代表调用相关简化后的接口即可实现响应业务;然后,业务代表管理集群事件序列化,控制事件的统一发布和响应处理,减少因发布和响应事件造成各子模块交叉触发中断和恢复造成的时间差;最后,减少通信或对表示层代码中的业务层代码的远程查询功能,减少通信时间保证最低中断时间。
快速恢复i/o程序实现时主要包括以下几个步骤:
(1)创建集群主机端与业务代表端进行数据通信的缓存,该缓存存放集群配置管理中;
(2)将需要处理的事件传输到业务代表的缓存中;
(3)设置业务代表属性类以及状态机,用于控制发布事件给子模块,以及响应各模块处理结果;
(4)控制启动状态机业务代表算法;
(5)等待集群单节点加入/离开事件的发生,从业务代表的缓存中,将接收的事件读取到业务代表状态机,完成事件发布状态更新以及通知主机i/o的下发。
采用业务代表模式控制优化io快速恢复i/o程序主要包括以下步骤:
(1)节点离开时,集群生成pend,发送到业务代表端,i/o栈业务子模块存活节点保持i/o,并在业务端处理因节点离开所需的事务处理;
(2)集群boss节点切换、重构视图后生成remove事件,发送到业务代表端,业务代表判断各业务个子模块业务处理是否完成;
(3)业务代表监听i/o所有业务子模块处理完成,统一下发remove事件到各业务配置管理模块,触发i/o开始中断;
(4)io中断后,所有子模块一起进行首选节点切换,元数据更新同步等操作,完成后通知业务代表;
(5)业务代表收到所有子模块配置更新完成后通知主机,无需返回集群,立即恢复i/o;
(6)节点加入时,集群生成add/unpend/unpenddone事件;
(7)业务代表收到集群事件放到缓存中,add触发状态机通知各子模块业务层进行nodes属性更新等操作,同时存活节点保持i/o;
(8)更新完成后,通知业务代表,等待节点加入后集群unpend事件的触发,业务代表触发子业务模块进行discard操作,存活节点不做操作,继续保持i/o;
(9)集群完成视图重建等操作发送unpenddone事件到业务代表,此时各子模块已完成discard操作,业务代表统一触发各子模块配置模块中断i/o,进行首选节点切换,元数据更新和同步;
(10)业务代表收到所有子模块配置更新完成后通知主机,立即恢复i/o。
第二方面,基于与前述实施例中存储系统单节点故障快速恢复io的方法同样的发明构思,本说明书实施例还提供一种存储系统单节点故障快速恢复io的装置,如图2所示,包括业务代表模块、存储业务子模块和集群事件管理模块;所述业务代表模块查询和调用业务接口执行业务,存储业务子模块向业务代表模块调用接口实现响应业务;所述业务代表模块作为中间代表连接存储业务子模块和集群事件管理模块,业务代表模块向外统一暴露接口;所述业务代表模块管理集群事件序列化,控制事件的统一发布和响应处理。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。