一种多控存储系统自适应IO调度方法与流程

文档序号:12007777阅读:242来源:国知局
一种多控存储系统自适应IO调度方法与流程
本发明涉及计算机应用技术领域,具体地说是一种多控存储系统自适应IO调度方法。

背景技术:
随着信息化发展,数据规模增长快速,目前存在的双通道磁盘阵列已不能满足现有大数据的需求,多控磁盘阵列应运而生。磁盘调度算法是影响系统性能的关键因素,传统的调度是由单控制器IO系统实现的集中调度,并没有多控制器间的协同调度,作为一种共享资源向外提供不同的服务。对复杂的多控存储系统,包含多个控制器,每个控制器只从自身角度优化调度,并未考虑其它环节的存在,因此,如何充分利用多控磁盘阵列的硬件资源,提高多控间的IO协调和合作,提升系统性能变成了一个重要和急需解决的问题。

技术实现要素:
本发明的目的是提供一种多控存储系统自适应IO调度方法。对来自应用层的IO请求,在多控制器间并行调度和利用适配器的多设备并发操作来提高系统的读写性能,从而提高数据的存储速度。它在两方面改进了存储的性能:一是提高了小量数据随机访问的吞吐量,二是加速了大批量数据传输的数据率。本发明的目的是按以下方式实现的,多控存储系统是由多个控制器节点通过高速互联网络组成,系统整体对外支持多协议接口,包括:FC、SRP、Iscsi、iSER存储服务,运行的存储服务采取统一的管理方式,以统一视图方式提供给系统管理者,客户端主机通过主机适配卡与多控存储系统相连,以访问存储系统提供的资源,系统包括:IO调度进程模块、IO派发进程模块、IO完成收集模块、多协议模块、缓存模块,其中:所述IO调度进程模块,与所述缓存模块相连,用以IO数据的拆分并确定将数据提交给哪个控制器执行,用于执行IO调度方法之IO派生部分,并调用IO派发进程模块发送IO请求数据,它是自适应的IO调度方法;所述IO派发进程模块,将发往不同控制器的IO请求以链表方式组织,与所述高速互联网络模块相连,用于处理提交IO请求到不同的控制器上;所述IO完成收集模块,用于处理远端控制器的完成IO请求,接收来自其它控制器的io完成处理通知,并进行计数统治,判断某一个大的IO集合的处理是否已经完成,如所有的并行处理请求完成,则通知IO调度进程模块。所述多协议模块,与缓存模块相连,用于接收来自客户端的请求,并将数据提交给缓存模块;所述缓存模块,与多协议模块和IO调度进程模块相连,用于缓存IO请求,并将IO请求提交给IO调度程序执行;来自客户端的IO处理执行流程如下:根据主机来自的SCSI命令,解释出要读写的数据块的起始位置和偏移量,按照数据求余的规则派生或根据系统负载情况,将来自主机的SCSI命令进行拆分,以256K的数据块大小为单元,按照求余的方式拆分IO数据,形成拆分数据链表,并派发到多个控制器上执行,当各控制器上的IO请求完成后,IO处理收集模块会收集相应的IO完成信息,待所有IO处理并行完成后,给主机返回应答消息。本发明的有益效果是:多控制器体系架构,各控制器间可实现负载均衡,避免单控制器故障带来的风险和性能的瓶颈,支持丰富的主机连接接口,支持iSCSI、FC、InfiniBand及万兆网络连接,同时可以为用户提供高带宽的IB及万兆网络连接,满足客户对高带宽及高性能的差异化需求。本发明涉及多控存储系统的IO调度,提出多个控制器间的IO调度方法,当多控存储系统接受来自应用层的IO请求时,能够将IO请求调度给多个控制器同时并发执行,该方法不仅给低载的控制器分配了未分配的IO请求,还能从过载的控制器上重新调度IO请求到负载较轻的控制器上,从而改善了系统中各个控制器的负载状态,完成了多控节点上的IO负载调度和均衡,充分调度了设备的潜力,提升了系统性能。附图说明图1是多控存储系统结构示意图:图2是多控存储系统IO调度模块结构示意图;图3是多控并行调度执行流程图。具体实施方式参照说明书附图对本发明的方法作以下详细地说明。附图1是多控存储系统结构图,它由多个控制器节点通过高速互联网络组成,系统整体对外支持多协议接口,如FC、SRP、Iscsi、iSER等存储服务,运行的存储服务采取统一的管理方式,以统一视图方式提供给系统管理者,系统具有高性能、高可用、高并发的特点,客户端主机通过主机适配卡与多控存储系统相连,从而访问存储系统提供的资源。结合下图2来解释来自客户端的IO处理执行流程:根据主机来自的SCSI命令,解释出要读写的数据块的起始位置和偏移量,按照数据求余的规则派生(或根据系统负载情况),将来自主机的SCSI命令进行拆分,以256K的数据块大小为单元,按照求余的方式拆分IO数据,形成拆分数据链表,并派发到多个控制器上执行。当各控制器上的IO请求完成后,IO处理收集模块会收集相应的IO完成信息,待所有IO处理并行完成后,给主机返回应答消息。本文描述的自适应IO调度方法能够改善多个控制其的负载状态,进行多控IO节点上的负载均衡,使得在多控系统的IO并行中,数据访问速度更快.其调度过程描述如下:定义以下概念:Average=总IO请求数量/N,N表示多控存储系统中控制器的总数目,其中总的IO请求数量包括了待分配的IO请求数(也即IO调度进程上的IO请求等待分配的队列)和控制器本地待处理的总IO请求数(即已分配到控制器,但是还没有得到IO节点响应处理的IO请求数);设T为未分配的IO请求数目,U(n,pending)表示能够由控制器n来提供服务的,未分配的IO请求的子集,P(n,background)为分配在控制器n上未处理的IO请求的总数。首先对多个控制器本地但是未处理的IO请求数进行排序。总共为N个控制器:对N个控制器中的每一个控制器n,如P(n,background)>average则v=P(n,background)-averageP(n,background)=P(n,background)-vT=T+v如控制器N上未处理的IO请求数<每个控制器应该服务的平均请求数,则V=min(P(n,background)+U(n,pending),average)U(n,pending)=U(n,pending)-vT=T-v下面是多控IO并发处理执行流程:如图2所示;参见图3,该图示出了本发明实施多控存储系统IO调度方法,包括IO调度进程模块、IO派发进程模块、IO完成收集模块、高速互联网络模块、缓存模块、多协议模块。所述多协议模块,用于接收来自客户端的IO请求,并将数据提交给缓存模块。所述缓存模块,用于缓存IO请求,并将IO请求提交给IO调度程序执行。所述IO调度进程模块,与所述缓存模块相连,根据自适应IO调度算法进行数据的拆分并确定将数据提交给哪个控制器执行,执行IO调度算法,并调用IO派发进程模块发送IO请求数据。所述IO派发进程模块,与所述高速互联网络模块相连,用于处理提交IO请求到不同的控制器上。所述IO完成收集模块,用于处理远端控制器的完成IO请求,并进行判断所有的并行处理请求是否完成,主要使用计数进行判断,如果完成,则通知IO调度进程模块。除说明书所述的技术特征外,均为本专业技术人员的已知技术。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1