基于阵列/lun的io调度方法及装置的制作方法

文档序号:6372403阅读:229来源:国知局
专利名称:基于阵列/lun的io调度方法及装置的制作方法
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于阵列/LUN的IO调度方法及装置。
背景技术
在操作系统中,对于系统中的多个存储设备,操作系统在IO (input/output,输入/输出接口)调度策略上做了居多优化,其策略是保证各设备不相互影响,防止一个设备繁忙而导致另一个设备无法继续处理10。比如在Iinux操作系统中,默认的IO调度算法是CFQ(Complete Fairness Queueing),同时可供选择的调度算法还有Noop、anticipatory和deadline。 另外,在应用中碰到如下问题低优先级别的线程拥有资源产生大量的10,IO请求在构建时没有考虑到线程优先级。也就是说IO在构建时没有上下文什么时候需要该10、该IO的紧急程度、该IO将被如何使用等,于是操作系统中引入了 IO优先级别的概念,比如 window vista,对 IO 分为如下三个级别critical (memory manager only) >high、normal、low几种10级别,其调度策略如下所有critical-priority 10必须在任何 high-priority 10 之前被处理;所有 high-priority 10 必须在任何 normal-priority10之前被处理;所有normal-priority 10必须在任何low-priority 10之前被处理;所有low-priority 10在更高一级10之后处理。同时,在该原则下需要注意饥饿no-priority10的情况,解决方法是启动定时器监控low-priority queue,至少保证每次调度一个low-priority 10。由于处理环境的不同,操作系统中的10调度同应用的处理进程密切相关,且对同一个设备的多个分区并未做到公平调度。而在独立的存储系统中,主机10通过网络下发到存储系统中,主机10的上下文信息丢失,且存在多主机的情况,那么在存储系统中需要做到公平调度,特别是系统中存在多个阵列,或是同一阵列中存在多个LUN(Logical UnitNumber,逻辑单元号)时,存在阵列相互影响或是同一个阵列中的多个LUN读写相互影响问题。综上可知,现有的阵列/LUN的10高度技术,在实际使用上显然存在不便与缺陷,所以有必要加以改进。

发明内容
针对上述的缺陷,本发明的目的在于提供一种基于阵列/LUN的10调度方法及装置,其可以实现对系统阵列/LUN的10公平调度。为了实现上述目的,本发明提供一种基于阵列/LUN的10调度方法,应用于存储系统,所述方法包括接收对所述阵列/LUN设置优先级别的命令,将所述阵列/LUN设置为若干优先级别;根据所述阵列/LUN的优先级别,对所述阵列/LUN进行10调度处理。
根据本发明的基于阵列/LUN的IO调度方法,所述方法还包括接收对所述阵列/LUN指定IO的处理命令。根据本发明的基于阵列/LUN的IO调度方法,将所述阵列/LUN设置若干优先级别步骤包括根据各所述阵列/LUN所承载数据访问频率,将所述阵列/LUN设置三个优先级别。
根据本发明的基于阵列/LUN的IO调度方法,所述三个优先级别由高到低分别为第一级别、第二级别和第三级别,所述第二级别的阵列/LUN数据在所述第三级别的阵列/LUN之前处理,所述第一级别的阵列/LUN数据在所述第二级别的阵列/LUN之前处理。根据本发明的基于阵列/LUN的IO调度方法,所述对所述阵列/LUN的IO调度处理步骤包括对同一优先级别的阵列/LUN分配相同的系统资源。根据本发明的基于阵列/LUN的IO调度方法,所述方法还包括对同一个阵列中的LUN,以时间片以及LUN的命令状态为基准进行轮转调度。根据本发明的基于阵列/LUN的IO调度方法,所述LUN的命令状态包括所述LUN当前存在未处理的命令数以及已下发的处理命令数。本发明还提供一种基于阵列/LUN的IO调度装置,应用于储存系统,所述装置包括设置模块,用于接收对所述阵列/LUN设置优先级别的命令,将所述阵列/LUN设置若干优先级别;IO调度模块,用于根据所述阵列/LUN的优先级别,对所述阵列/LUN进行IO调度处理。根据本发明的IO调度装置,所述装置还包括接收模块,用于接收对所述阵列/LUN指定IO的处理命令。根据本发明的IO调度装置,所述IO调度模块包括分配子模块,用于对同一优先级别的阵列/LUN分配相同的系统资源。本发明通过对储存系统内的阵列/LUN设置优先级别,根据该优先级别对IO进行调度处理,借此可实现对IO的更充分利用,确保系统中各阵列/LUN得到公平处理。更好的是,系统可以接受用户对阵列/LUN的IO指定处理,借此进一步包括阵列数据的公平调度。


图I是本发明一实施例的IO调度装置的结构示意图;图2是本发明一实施例的调度装置的调度结构示意图;图3是本发明的IO调度方法流程图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。参见图1,本发明提供了一种基于阵列/LUN的IO调度装置,该IO调度装置100应用于储存系统,该IO调度装置100包括设置模块10、IO调度模块20和接收模块30,其中设置模块10用于接收对阵列/LUN设置优先级别的命令,将所述阵列/LUN设置为若干优先级别。具体的,用户可通过对存储系统中的性能统计工具或在部署存储系统时对数据分布的分析,获取各阵列/LUN所承载数据访问频率,并根据所述访问频率,将阵列/LUN设置为三个优先级别,且这三个优选级别从高到底依次为第一级别、第二级别和第三级另IJ。具体应用中,第二级别的阵列/LUN数据须在第三级别的阵列/LUN之前处理,第一级别的阵列/LUN数据须在第二级别的阵列/LUN之前处理。另外,为了防止出现饥饿(一段时间内第三级别阵列/LUN未得到处理)的情况出现,启用定时器监控第三级别阵列/LUN,保证该级别的阵列/LUN得到调度。IO调度模块20用于根据阵列/LUN的优先级别,对阵列/LUN进行IO调度处理。具体的,IO调度模块20包括一分配子模块21,将系统中的资源(CPU/内存等)按照阵列/LUN的优先级别进行划分,对同一优先级别的阵列/LUN分配相同的系统资源。对于第一级别的阵列,IO处理线程拥有高优先级别、阵列的cache配额较大,并且阵列的命令队列深度较大。各阵列分配好资源之后,对于同一个阵列中的LUN,以时间片以及LUN的命令状态 (该LUN当前存在未处理的命令数以及已下发的处理命令数)为基准进行轮转调度,确保系统中各阵列/LUN得到公平处理。接收模块30用于接收对阵列/LUN指定IO的处理命令。实际应用中,装置100对多个阵列进行调度时,可能会出现各种情况,比如,部分IO比较繁忙,部分IO为空闲,还有可能出现全部IO均繁忙的情况,比如多个同级别的阵列/LUN同时进行调度,则可能造成该阵列占用的IO资源较多,影响其它阵列的资源使用。本发明通过接收模块30可以接收用户指定的IO处理命令,该IO处理命令是用户指定的特殊命令,其不同于前述的优先级别调度命令,当接收模块30接收到该IO处理命令时,优先处理该命令的相关IO调度,借此可以有效的克服上述问题。图2是本发明一基于调度装置100的系统的结构示意图,各array (阵列/磁盘组)在系统中根据优先级别分配系统资源,比如处理线程优先级别、cache资源、队列深度。对于某个array中的多个LUN,根据用户设置的LUN优先级别,各LUN将分配该array所占用的资源。调度处理单元将根据LUN所在array、LUN当前命令状态选择目标LUN进行调度。存在待处理IO的LUN将进入调度装置100,调度装置100根据array优先级别,采用轮转调度的方式,第一优先级别array将多次得到调度。在选定一个array进行调度后,分析该array所有待调度LUN,根据LUN的命令分布情况(未下发命令数、已下发命令数等)、LUN优先级别确定本次调度目标LUN,同时确定目标LUN的派发命令数。参见图3,本发明提供了一种基于阵列/LUN的IO调度方法,其可以通过如图I所示的调度装置100实现,所述方法包括步骤S301,设置模块10接收对所述阵列/LUN设置优先级别的命令,将所述阵列/LUN设置为若干优先级别。本发明的实施例中,设置模块10根据各阵列/LUN所承载数据访问频率,将所述阵列/LUN设置三个优先级别,从高到底依次为第一级别、第二级别和第三级别,具体调度时,第二级别的阵列/LUN数据在第三级别的阵列/LUN之前处理,第一级别的阵列/LUN数据在第二级别的阵列/LUN之前处理。
步骤S302,IO调度模块20根据所述阵列/LUN的优先级别,对所述阵列/LUN的IO调度处理。分配子模块21,将系统中的资源(CPU/内存等)按照阵列/LUN的优先级别进行划分,对同一优先级别的阵列/LUN分配相同的系统资源。对于第一级别的阵列,IO处理线程拥有高优先级别、阵列的cache配额较大,并且阵列的命令队列深度较大。各阵列分配好资源之后,对于同一个阵列中的LUN,以时间片以及LUN的命令状态(该LUN当前存在未处理的命令数以及已下发的处理命令数)为基准进行轮转调度,确保系统中各阵列/LUN得到公平处理。更好的是,本发明还可以通过接收模块30接收用户对阵列/LUN指定IO的处理命令,借此可进一步增强对IO进行合理的调度利用。综上所述,本发明通过对储存系统内的阵列/LUN设置优先级别,根据该优先级别对IO进行调度处理,借此可实现对IO的更充分利用,确保系统中各阵列/LUN得到公平处理。更好的是,系统可以接受用户对阵列/LUN的IO指定处理,借此进一步包括阵列数据的公平调度。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1.一种基于阵列/LUN的IO调度方法,应用于存储系统,其特征在于,所述方法包括 接收对所述阵列/LUN设置优先级别的命令,将所述阵列/LUN设置为若干优先级别; 根据所述阵列/LUN的优先级别,对所述阵列/LUN进行IO调度处理。
2.根据权利要求I所述的基于阵列/LUN的IO调度方法,其特征在于,所述方法还包括接收对所述阵列/LUN指定IO的处理命令。
3.根据权利要求I所述的基于阵列/LUN的IO调度方法,其特征在于,将所述阵列/LUN设置若干优先级别步骤包括 根据各所述阵列/LUN所承载数据访问频率,将所述阵列/LUN设置三个优先级别。
4.根据权利要求3所述的基于阵列/LUN的IO调度方法,其特征在于,所述三个优先级别由高到低分别为第一级别、第二级别和第三级别,所述第二级别的阵列/LUN数据在所述第三级别的阵列/LUN之前处理,所述第一级别的阵列/LUN数据在所述第二级别的阵列/LUN之前处理。
5.根据权利要求I所述的基于阵列/LUN的IO调度方法,其特征在于,所述对所述阵列/LUN的IO调度处理步骤包括 对同一优先级别的阵列/LUN分配相同的系统资源。
6.根据权利要求5所述的基于阵列/LUN的IO调度方法,其特征在于,所述方法还包括对同一个阵列中的LUN,以时间片以及LUN的命令状态为基准进行轮转调度。
7.根据权利要求6所述的基于阵列/LUN的IO调度方法,其特征在于,所述LUN的命令状态包括所述LUN当前存在未处理的命令数以及已下发的处理命令数。
8.一种基于阵列/LUN的IO调度装置,应用于储存系统,其特征在于,所述装置包括 设置模块,用于接收对所述阵列/LUN设置优先级别的命令,将所述阵列/LUN设置若干优先级别; IO调度模块,用于根据所述阵列/LUN的优先级别,对所述阵列/LUN的IO调度处理。
9.根据权利要求8所述的IO调度装置,其特征在于,所述装置还包括接收模块,用于接收对所述阵列/LUN指定IO的处理命令。
10.根据权利要求8所述的IO调度装置,其特征在于,所述IO调度模块包括分配子模块,用于对同一优先级别的阵列/LUN分配相同的系统资源。
全文摘要
本发明适用于计算机技术领域,提供了一种基于阵列/LUN的IO调度方法,应用于存储系统,所述方法包括接收对所述阵列/LUN设置优先级别的命令,将所述阵列/LUN设置为若干优先级别;根据所述阵列/LUN的优先级别,对所述阵列/LUN进行IO调度处理。优选的是,存储系统还可以接收对所述阵列/LUN指定IO的处理命令。本发明还相应的提供一种基于阵列/LUN的IO调度装置。借此,本发明对存储系统中的阵列/LUN设置优先级别,对IO进行公平调度,有效防止阵列/LUN之间的相互影响。
文档编号G06F9/50GK102799487SQ20121022254
公开日2012年11月28日 申请日期2012年6月29日 优先权日2012年6月29日
发明者曹庭华 申请人:记忆科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1