输入输出请求调度方法、存储控制器和存储阵列的制作方法

文档序号:6337926阅读:243来源:国知局
专利名称:输入输出请求调度方法、存储控制器和存储阵列的制作方法
技术领域
本发明涉及存储技术领域,具体涉及一种输入输出(10,Input Output)请求调度 方法、存储控制器和存储阵列。
背景技术
存储阵列的核心是保证有效地将数据写入或读出,以满足不同应用的需求。现有 的存储阵列中,通常按照功能划分不同的模块,然后定义各模块的边界和接口,各模块之间 通过接口进行通信。参见图1,图1是现有技术中的存储阵列结构示意图。其中,存储阵列中的功能模块通常包括目标器(Target)、缓存(Cache)模块、复制 (Replication)模块、快照(Snapshot)模块、独立冗余磁盘阵列(RAID,Redundant Array Of Independent Disk)和磁盘等其它模块,存储阵列中还包括一些驱动接口。现有的存储阵列在接收到主机发送的IO请求后,目标器中的线程将该IO请求加 入到等候队列中排队进行处理,在目标器中的线程将该IO请求处理完成后,将处理结果传 递给下层模块,比如缓存模块,该处理结果中包括偏移地址、长度等信息;缓存模块中的线 程根据接收到的处理结果按照队列方式排队处理缓存IO请求,在处理完成后将缓存IO请 求的处理结果传递给下层模块,逐层传递处理结果,实现将数据写入磁盘中或从磁盘读出。发明人在研究现有技术的过程中发现,由于各模块之间存在各自独立的线程,IO 请求在执行过程中需要进行多次上下文切换,导致IO请求的响应时间较长,影响存储阵列 的性能。

发明内容
本发明提供一种使用一个线程运行IO请求的所有阶段,从而避免和其它线程进 行上下文切换的IO请求调度方法、存储控制器以及存储阵列。本发明实施例提供的输入输出请求调度方法,包括接收主机发送的输入输出请求,所述输入输出请求中携带目标地址信息;根据所述目标地址信息调用目标器子类中的处理函数,所述目标器子类是从预置 的基类中继承得到的;根据所述目标器子类中的处理函数的输出结果调用缓存子类中的处理函数,所述 缓存子类是从预置的基类中继承得到的;根据所述缓存子类中的处理函数的输出结果调用独立冗余磁盘阵列算法子类中 的处理函数,所述独立冗余磁盘阵列算法子类是从预置的基类中继承得到的;根据所述独立冗余磁盘阵列算法子类中的处理函数的输出结果调用磁盘子类中 的处理函数,所述磁盘子类是从预置的基类中继承得到的。本发明实施例还提供一种存储控制器,包括输入输出接收单元,用于接收主机发送的输入输出请求,所述输入输出请求中携带目标地址信息;函数调用单元,用于根据所述目标地址信息调用目标器子类中的处理函数,所述 目标器子类是从预置的基类中继承得到的;所述函数调用单元还根据所述目标器子类中的处理函数的输出结果调用缓存子 类中的处理函数,所述缓存子类是从预置的基类中继承得到的;所述函数调用单元还根据所述缓存子类中的处理函数的输出结果调用阵列子类 中的处理函数,所述阵列子类是从预置的基类中继承得到的;所述函数调用单元还根据所述阵列子类中的处理函数的输出结果调用磁盘子类 中的处理函数,所述磁盘子类是从预置的基类中继承得到的。本发明实施例还提供一种存储阵列,包括如上所述的存储控制器。在本发明实施例中,存储控制器在接收到IO请求后,顺序调用从基类中继承得到 的目标器子类中的处理函数、缓存子类中的处理函数、独立冗余磁盘阵列算法子类中的处 理函数以及磁盘子类中的处理函数,只需要一个线程来执行全部调用过程,即一个线程可 以运行完IO执行的所有阶段,无需和其它线程做上下文切换,进而减少线程之间的锁竞 争,提高IO的处理速度,进而提高存储系统的性能。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可 以根据这些附图获得其他的附图。图1是现有技术中的存储阵列的结构示意图;图2是本发明实施例一提供的输入输出请求调度方法的流程图;图3是本发明实施例提供的输入输出请求调度方法中根据目标地址信息调用目 标器子类中的处理函数的实施例的流程图;图4是本发明实施例三提供的存储控制器的结构示意图;图5是本发明实施例四提供的存储控制器的结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。本发明提供了一种输入输出请求调度方法、存储阵列以及存储控制器。为了更好 的理解本发明实施例的技术方案,下面结合附图对本发明提供的实施例进行详细地描述。参见图2,图2是本发明实施例一提供的输入输出请求调度方法的流程图。本发明实施例提供的输入输出请求调度方法可以包括Al、接收主机发送的输入输出请求,输入输出请求中携带目标地址信息。具体的,存储控制器可以接收主机发送的输入输出请求,例如错误处理IO请求,定时处理IO请求等,存储控制器接收到的输入输出请求中携带目标地址信息。其中,目标 地址信息中可以包括下层对象、偏移地址、数据长度等信息。A2、根据目标地址信息调用目标器子类中的处理函数,目标器子类是从预置的基 类中继承得到的。具体的,存储控制器可以根据目标地址信息来调用目标器子类中的处理函数,目 标器子类是从预置的基类中继承得到的。其中,预置的基类是对现有RAID IO对象、复制IO对象、快照IO对象、Cache IO对 象以及Target IO对象等进行抽象得到的,基类中包括IO本身的特性(即数据部分)以及 IO操作的特性(即处理函数)。目标器子类继承了基类中的数据部分和处理函数,同时针 对目标器本身的特性又增加了其它的数据部分和处理函数。A3、根据目标器子类中的处理函数的输出结果调用缓存子类中的处理函数,缓存 子类是从预置的基类中继承得到的。具体的,存储控制器可以根据步骤A2中的目标器子类中的处理函数的输出结果 进一步调用下一级处理函数,即调用缓存子类中的处理函数,缓存子类是从预置的基类中 继承得到。其中,缓存子类中的处理函数的输出结果可以包括下层对象、偏移地址、长度等 信息。缓存子类继承了基类中的数据部分和处理函数,同时针对缓存本身的特性又增加了 其它的数据部分和处理函数。A4、根据缓存子类中的处理函数的输出结果调用独立冗余磁盘阵列算法子类中的 处理函数,独立冗余磁盘阵列算法子类是从预置的基类中继承得到的。具体的,存储控制器可以根据步骤A3中的缓存子类中的处理函数的输出结果进 一步调用下一级处理函数,即调用独立冗余磁盘阵列算法子类中的处理函数,独立冗余磁 盘阵列算法子类是从预置的基类中继承得到。独立冗余磁盘阵列算法子类继承了基类中的 数据部分和处理函数,同时针对独立冗余磁盘阵列算法模块本身的特性又增加了其它的数 据部分和处理函数。其中,独立冗余磁盘阵列算法可以包括RAIDO RAID7等多种算法。A5、根据独立冗余磁盘阵列算法子类中的处理函数的输出结果调用磁盘子类中的 处理函数,磁盘子类是从预置的基类中继承得到的。具体的,存储控制器可以根据步骤A4中的独立冗余磁盘阵列算法子类中的处理 函数的输出结果进一步调用下一级处理函数,即调用磁盘子类中的处理函数,磁盘子类是 从预置的基类中继承得到的。磁盘子类继承了基类中的数据部分和处理函数,同时针对磁 盘本身的特性增加了其它的数据部分和处理函数。磁盘子类中的处理函数进行相应的处理,完成磁盘的读写请求,磁盘子类中的处 理函数设置返回值,通知上一级模块IO请求处理完成。在本发明实施例中,存储控制器在接收到IO请求后,顺序调用从基类中继承得到 的目标器子类中的处理函数、缓存子类中的处理函数、独立冗余磁盘阵列算法子类中的处 理函数以及磁盘子类中的处理函数,只需要一个线程来执行全部调用过程,即一个线程可 以运行完IO执行的所有阶段,执行过程无需和其它线程做上下文切换,进而减少线程之间 的锁竞争,提高IO的处理速度,进而提高存储系统的性能。在本发明实施例中,基类中IO本身的特性可以包括
1)10数据发送的对象,即IO数据在存储介质中的实际地址;2) IO数据的偏移;3) IO数据的长度;4) IO之间的可能依赖关系等其它数据。
IO操作的特性可以包括1)启动IO的执行;2) IO执行完毕后的回调;3)当前的IO还存在子10,子IO执行完毕等其它处理函数。基类中参数可以如表1所示。表 权利要求
1.一种输入输出请求调度方法,其特征在于,包括接收主机发送的输入输出请求,所述输入输出请求中携带目标地址信息; 根据所述目标地址信息调用目标器子类中的处理函数,所述目标器子类是从预置的基 类中继承得到的;根据所述目标器子类中的处理函数的输出结果调用缓存子类中的处理函数,所述缓存 子类是从预置的基类中继承得到的;根据所述缓存子类中的处理函数的输出结果调用独立冗余磁盘阵列算法子类中的处 理函数,所述独立冗余磁盘阵列算法子类是从预置的基类中继承得到的;根据所述独立冗余磁盘阵列算法子类中的处理函数的输出结果调用磁盘子类中的处 理函数,所述磁盘子类是从预置的基类中继承得到的。
2.根据权利要求1所述的方法,其特征在于,在所述接收主机发送的输入输出请求之 后,还包括将接收到的输入输出请求中的定时处理输入输出请求加入到预置的定时处理队列中;所述根据目标地址信息调用目标器子类中的处理函数,包括 判断预置的定时器是否到时;若定时器到时,则获取接收到的输入输出请求中的定时处理输入输出请求; 根据所述获取的定时处理输入输出请求中携带的目标地址信息调用目标器子类中的 处理函数。
3.根据权利要求2所述的方法,其特征在于,在将定时处理输入输出请求加入到定时 处理队列之后,还包括获取接收到的输入输出请求中除定时处理请求之外的输入输出请求的优先级; 将优先级低于预置级别的输入输出请求加入到低优先级等候队列中,将优先级高于预 置级别的输入输出请求加入到高优先级等候队列中; 所述方法还包括若定时器没有到时,则判断高优先级队列中是否存在输入输出请求; 若高优先级队列中存在输入输出请求,则获取高优先级队列中的第一输入输出请求; 根据所述第一输入输出请求中携带的目标地址信息调用目标器子类中的处理函数。
4.根据权利要求3所述的方法,其特征在于,还包括若高优先级队列中不存在输入输出请求,则获取低优先级队列中的第二输入输出请求;根据所述第二输入输出请求中携带的目标地址信息调用目标器子类中的处理函数。
5.根据权利要求3或4所述的方法,其特征在于,在根据独立冗余磁盘阵列算法子类中 的处理函数的输出结果调用磁盘子类中的处理函数之后,还包括获取所述高优先级队列和所述低优先级队列当前的队列深度; 在所述低优先级队列的队列深度减去所述高优先级队列的队列深度的差大于预设值 时,降低所述预置级别的等级。
6.一种存储控制器,其特征在于,包括输入输出接收单元,用于接收主机发送的输入输出请求,所述输入输出请求中携带目标地址信息;函数调用单元,用于根据所述目标地址信息调用目标器子类中的处理函数,所述目标 器子类是从预置的基类中继承得到的;所述函数调用单元还根据所述目标器子类中的处理函数的输出结果调用缓存子类中 的处理函数,所述缓存子类是从预置的基类中继承得到的;所述函数调用单元还根据所述缓存子类中的处理函数的输出结果调用阵列子类中的 处理函数,所述阵列子类是从预置的基类中继承得到的;所述函数调用单元还根据所述阵列子类中的处理函数的输出结果调用磁盘子类中的 处理函数,所述磁盘子类是从预置的基类中继承得到的。
7.根据权利要求6所述的存储控制器,其特征在于,还包括定时请求处理单元,用于在接收到主机发送的输入输出请求之后,将接收到的输入输 出请求中的定时处理输入输出请求加入到预置的定时处理队列中; 所述函数调用单元包括 定时判断模块,用于判断预置的定时器是否到时;第一获取模块,用于在所述定时判断单元判断定时器到时,则获取接收到的输入输出 请求中的定时处理输入输出请求;函数调用模块,用于根据所述获取的定时处理输入输出请求中携带的目标地址信息调 用目标器子类中的处理函数。
8.根据权利要求7所述的存储控制器,其特征在于,还包括优先级获取单元,用于在所述定时请求处理单元将定时处理输入输出请求加入到定时 处理队列之后,获取接收到的输入输出请求中除定时处理请求之外的输入输出请求的优先 级;队列调度单元,用于将优先级低于预置级别的输入输出请求加入到低优先级等候队列 中,将优先级高于预置级别的输入输出请求加入到高优先级等候队列中; 所述函数调用单元还包括队列判断模块,用于在所述定时判断单元判断定时器没有到时,则判断高优先级队列 中是否存在输入输出请求;第二获取模块,用于在所述队列判断单元判断高优先级队列中存在输入输出请求,则 获取高优先级队列中的第一输入输出请求;所述函数调用模块还根据所述第一输入输出请求中携带的目标地址信息调用目标器 子类中的处理函数。
9.根据权利要求8所述的存储控制器,其特征在于,所述函数调用单元还包括第三获取模块,用于在所述队列判断模块判断高优先级队列中不存在输入输出请求, 则获取低优先级队列中的第二输入输出请求;所述函数调用模块还用于根据所述第二输入输出请求中携带的目标地址信息调用目 标器子类中的处理函数。
10.根据权利要求8或9所述的存储控制器,其特征在于,还包括;队列深度获取单元,用于在所述函数调用单元根据独立冗余磁盘阵列算法子类中的处 理函数的输出结果调用磁盘子类中的处理函数之后,获取所述高优先级队列和所述优先级队列当前的队列深度;预置级别调整单元,用于在所述低优先级队列的队列深度减去所述高优先级队列的队 列深度的差大于预设值时,减小所述预置级别的大小。
11. 一种存储阵列,其特征在于,包括 如权利要求5到10任一项所述的存储控制器。
全文摘要
本发明实施例公开了一种输入输出请求调度方法、存储控制器和存储阵列,该方法包括接收主机发送的输入输出请求,输入输出请求中携带目标地址信息;根据目标地址信息调用目标器子类中的处理函数,目标器子类是从预置的基类中继承得到的;根据目标器子类中的处理函数的输出结果调用缓存子类中的处理函数,缓存子类是从预置的基类中继承得到的;根据缓存子类中的处理函数的输出结果调用独立冗余磁盘阵列算法子类中的处理函数,独立冗余磁盘阵列算法子类是从预置的基类中继承得到的;根据独立冗余磁盘阵列算法子类中的处理函数的输出结果调用磁盘子类中的处理函数,磁盘子类是从预置的基类中继承得到的。本发明可以提高存储系统的性能。
文档编号G06F3/06GK102073461SQ20101057709
公开日2011年5月25日 申请日期2010年12月7日 优先权日2010年12月7日
发明者罗庆超 申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1