多控制器磁盘阵列及其命令处理方法

文档序号:6470191阅读:214来源:国知局
专利名称:多控制器磁盘阵列及其命令处理方法
技术领域
本发明涉及信息存储技术领域,尤其涉及多控制器磁盘阵列及其命令处理 方法。
背景技术
RAID (Redundant Array of Independent Disks ,独立》兹盘冗余阵列或简称石兹 盘阵列)是一种将多块独立的硬盘(物理硬盘)按不同方式组合成一个硬盘组 (逻辑硬盘),提供比单个硬盘更高的存储性能和数据冗余的技术。
RAID磁盘阵列一般由控制器和多块磁盘组成。用户可以通过一个控制器 登录磁盘阵列,实现管理。在多控制器情况下,如何通过任何一个控制器,方 便有效的管理其它控制器上的资源、保证管理操作的一致性就成为一个复杂的 问题。图1为多控制器多用户的情景示意图,这里以双控为例。已知用户l和 用户2都具有读写权限,且可以分别从控制器A、 B同时登录。用户l登录控 制器A,发出一个命令修改控制器A的磁盘组配置,控制器A的命令层接收 用户操作命令并转发至系统核心层进行处理,由系统核心层处理后经磁盘扩展 通道发往磁盘组,实现对磁盘组的管理。同时用户2登录控制器B,也试图对 控制器A进行相同的修改操作,控制器A和控制器B通过双通讯进行命令 交互。此时对于同一个磁盘阵列,在用户通过多个控制器进行管理时,如何让 用户待操作的控制器得到用户操作命令,现有技术中并未提供具体的实现方 案;进一步的,假设用户待操作的控制器可以得到用户操作命令,那么如何保 证用户操作命令在发出后不会发生死锁或沖突,现有技术中也未提供具体的实 现方案。

发明内容
本发明实施例提供一种多控制器磁盘阵列的命令处理方法,用以保证用户
待操作的控制器正确获得用户操作命令并执行,该方法包括
确定多控制器磁盘阵列中,用于控制用户操作命令执行的主控制器;
由主控制器接收用户操作命令,并控制用户操作命令的执行。
较佳的,所述确定多控制器磁盘阵列中,用于控制用户操作命令执行的主
控制器包括
在多控制器磁盘阵列以单控制器模式运行时,确定运行的单控制器为主控 制器;
在多控制器磁盘阵列以多控制器模式运行时,读取运行的多控制器中预定 义的主控制器;或,从运行的多控制器中选择一个控制器确定为主控制器。 较佳的,从运行的多控制器中选择一个控制器确定为主控制器包括 读取运行的多控制器中,每个控制器的启动时间;
在各控制器的启动时间不一致时,选择最早启动的控制器确定为主控制
器;
在各控制器的启动时间 一致时,随机选择一个控制器确定为主控制器。 较佳的,所述由主控制器接收用户操作命令包括 主控制器直接接收用户发送的用户操作命令;
或,主控制器接收多控制器磁盘阵列中其它控制器转发的用户操作命令。 较佳的,所述由主控制器控制用户操作命令的执行包括 解析用户操作命令,确定用户待操作的控制器;
在确定用户待操作的控制器是主控制器时,直接由主控制器执行用户操作 命令;
在确定用户待操作的控制器不是主控制器时,由主控制器将用户操作命令 转发至用户待操作的控制器执行。
较佳的,所述由主控制器控制用户操作命令的执行包括 在确定允许用户操作命令执行时,由主控制器控制用户操作命令的执行。
较佳的,所述确定允许用户操作命令执行包括 在用户操作命令为读命令时,确定允许用户操作命令执行; 在用户操作命令为写命令、且当前写命令的引用计数为0时,确定允许用 户操作命令执行。
较佳的,在用户操作命令为写命令、且当前写命令的引用计数为0时,所 述控制用户操作命令的执行包括
在用户操作命令执行前,将当前写命令的引用计数加1;
在用户操作命令执行后,将当前写命令的引用计数减1。
本发明实施例还提供一种多控制器磁盘阵列,用以保证用户待操作的控制 器正确获得用户操作命令并执行,该多控制器磁盘阵列包括
主控制器确定模块,用于确定多控制器磁盘阵列中,用于控制用户操作命 令执行的主控制器;
用户输入模块,用于将用户操作命令发送至主控制器;
执行控制模块,用于触发主控制器控制用户操作命令的执行。
较佳的,所述主控制器确定模块包括
运行模式确定子模块,用于确定多控制器磁盘阵列的运行模式;
第 一主控制器确定子模块,用于在多控制器磁盘阵列以单控制器模式运行 时,确定运行的单控制器为主控制器;
第二主控制器确定子模块,用于在多控制器磁盘阵列以多控制器模式运行 时,读取多控制器磁盘阵列中预定义的主控制器;或,从运行的多控制器中选 择一个控制器确定为主控制器。
较佳的,所述第二主控制器确定子模块包括
启动时间读取单元,用于读取运行的多控制器中,每个控制器的启动时间; 主控制器确定单元,用于在各控制器的启动时间不一致时,选择最早启动 的控制器确定为主控制器;在各控制器的启动时间一致时,随机选择一个控制器确定为主控制器。
较佳的,所述用户输入模块包括
第 一输入子模块,用于将用户发送的用户操作命令直接发送至主控制器; 或,第二输入子模块,用于将用户发送的用户操作命令经多控制器磁盘阵
列中其它控制器转发至主控制器。 较佳的,所述执行控制模块包括
解析子模块,用于解析用户操作命令,确定用户待操作的控制器;
第一执行控制子模块,用于在确定用户待操作的控制器是主控制器时,直 接触发主控制器执行用户操作命令;
第二执行控制子模块,用于在确定用户待操作的控制器不是主控制器时, 触发主控制器将用户操作命令转发至用户待操作的控制器执行。
较佳的,所述执行控制模块包括
许可子模块,用于确定是否允许用户操作命令执行;
第三执行控制子模块,用于在确定允许用户操作命令执行时,触发主控制 器控制用户操作命令的执行。
较佳的,所述许可子模块包括
命令类型与计数单元,用于在用户操作命令为读命令时,确定允许用户操 作命令执行;在用户操作命令为写命令、且当前写命令的引用计数为0时,确 定允许用户操作命令执行。
较佳的,所述命令类型与计数单元进一步用于在用户操作命令为写命令、 且当前写命令的引用计数为0时
在用户操作命令执行前,将当前写命令的引用计数加1;
在用户操作命令执行后,将当前写命令的引用计数减1。
本发明实施例中,确定多控制器磁盘阵列中,用于控制用户操作命令执行 的主控制器;由主控制器接收用户操作命令,并控制用户操作命令的执行,可 以在用户通过多个控制器对同一磁盘阵列进行管理时,保证用户待操作的控制
器正确获得用户操作命令并执行。
进一步的,在确定允许用户操作命令执行时,由主控制器控制用户操作命 令的执行,可以避免用户操作命令在执行时发生死锁或冲突,保证多用户多控 制器情况下磁盘数据的一致性。


图1为背景技术中多控制器多用户的情景示意图2为本发明实施例中多控制器磁盘阵列的命令处理流程图3为本发明实施例中确定主控制器的处理流程图4为本发明实施例中主控制器控制用户操作命令的执行流程图5为本发明实施例中多控制器磁盘阵列的命令处理的一个实例的流程
图6为本发明实施例中多控制器磁盘阵列的结构示意图7为本发明实施例中主控制器确定模块的结构示意图8为本发明实施例中第二主控制器确定子模块的结构示意图9为本发明实施例中用户输入模块的结构示意图10、图11为本发明实施例中执行控制模块的结构示意图12为本发明实施例中许可子模块的结构示意图。
具体实施例方式
下面结合说明书附图对本发明实施例进行详细说明。
如图2所示,本发明实施例中,多控制器磁盘阵列的命令处理流程如下
步骤201、确定多控制器磁盘阵列中,用于控制用户操作命令执行的主控
制器;
步骤202、由主控制器接收用户操作命令,并控制用户操作命令的执行。 图2所示流程中,步骤201在实施时,可以先确定多控制器》兹盘阵列的运
行模式;在多控制器磁盘阵列以单控制器模式运行时,确定运行的单控制器为 主控制器;在多控制器磁盘阵列以多控制器模式运行时,读取运行的多控制器 中预定义的主控制器;或,从运行的多控制器中选择一个控制器确定为主控制 器。
一个实施例中,从运行的多控制器中选择一个控制器确定为主控制器可以 是随机选择,也可以按是预设策略选择,例如预设策略可以是选择最早启动运 行的控制器确定为主控制器、或选择最晚启动运行的控制器确定为主控制器。 这里举一例,实施中可以包括读取运行的多控制器中,每个控制器的启动时 间;在各控制器的启动时间不一致时,选^f奪最早启动的控制器确定为主控制器; 在各控制器的启动时间 一致时,随机选择一个控制器确定为主控制器。
一个具体实例如图3所示,确定主控制器的处理流程如下
步骤301、判断多控制器磁盘阵列是以单控制器模式运行还是以多控制器 模式运行,若是以单控制器模式运行,则执行步骤302;若是以多控制器模式 运行,则执行步骤303;
步骤302、确定运行的单控制器为主控制器,设置该单控制器的标识信息 (例如名称、识别符、序列号等)为主控制器的标识信息,执行步骤308;
步骤303、判断运行的多控制器中是否有预定义的主控制器,若有,则执 行步骤304;若没有,则执行步骤305;
步骤304、读取预定义的主控制器的标识信息;
步骤305、读取运行的多控制器中,每个控制器的启动时间;
该步骤直接遍历所有运行的控制器,发出的读取命令与后续用户操作命令 的读写命令不相冲突;或者说单独有一个读取启动时间的命令,此读取命令直 接发送至各控制器,由各控制器直接执行,与用户操作命令的处理无关。
步骤306、比较各控制器的启动时间,以最早运行的控制器作为主控制器, 设置该控制器的标识信息为主控制器的标识信息;
步骤307、若各控制器的启动时间相同,则随机确定一个控制器为主控制
器,设置该控制器的标识信息为主控制器的标识信息; 步骤308、返回主控制器的标识信息。
图2所示流程中,步骤202在实施时,由主控制器接收用户操作命令可以 包括主控制器直接接收用户发送的用户操作命令;或,主控制器接收多控制 器磁盘阵列中其它控制器转发的用户操作命令。实施中,多控制器磁盘阵列运 行时,用户连接其中一个控制器,并发出用户操作命令;此时先确定主控制器, 例如可以按前述图3所示流程确定主控制器,再判断用户连接的控制器是否为 主控制器,例如可将主控制器的标识信息与用户连接的控制器的标识信息相比 较,根据两者是否一致来判断,如果用户连接的控制器不是主控制器,则需要 将用户操作命令转发至主控制器。
步骤202在实施时,由主控制器控制用户操作命令的执行可以包括解析 用户操作命令,确定用户待操作的控制器;在确定用户待操作的控制器是主控 制器时,直接由主控制器执行用户操作命令;在确定用户待操作的控制器不是 主控制器时,由主控制器将用户操作命令转发至用户待操作的控制器执行。
这里举一例来说明,假设多控制器磁盘阵列运行时,用户连接其中一个控
制器,并发出用户操作命令,用户操作命令格式可以如下 operation -controller A [-other paramaters]
所述operation是命令码;-controller A是用户待操作的控制器,其中A是 用户待操作的控制器的名称;[-other paramaters]是其它具体或可选参数。
解析上述用户操作命令,读取-controller参数,可以获得用户待操作的控 制器为控制器A;判断控制器A是否为主控制器,若是,则直接由主控制器(此 时即控制器A)执行用户操作命令;否则主控制器将用户操作命令转发至控制 器A执行。当然,前述解析实施时,也可以对用户操作命令的格式、参数等进 行合法性验证。
为了避免用户操作命令在执行时发生死锁或冲突,在主控制器控制用户操 作命令的执行之前,先确定是否允许用户操作命令执行;在确定允许用户操作
命令执行时,由主控制器控制用户操作命令的执行。
一个实施例中,在用户操作命令为读命令时,确定允许用户操作命令执行; 在用户操作命令为写命令、且当前写命令的引用计数为0时,确定允许用户操 作命令执行。在前述的例子中,可以读取命令码operation,并查询命令类型列 表以确定用户操作命令的类型是读命令还是写命令,其中,命令类型列表中可 以保存命令码与命令类型的对应关系。若用户操作命令为写命令、且当前写命 令的引用计数为O,则在用户操作命令执行前,将当前写命令的引用计数加1; 在用户操作命令执行后,将当前写命令的引用计数减1。
一个具体实例如图4所示,主控制器控制用户操作命令的执行包括 步骤401、读取命令类型列表,判断用户操作命令是读命令还是写命令; 如果是读命令,则直接控制用户操作命令的执行;如果是写命令,则执行步骤 402;
步骤402、查看写命令的引用计数,判断引用计数是否为O。如果为0,则 允许此用户操作命令继续执行,否则执行步骤403。
步骤403、提示相同的用户操作命令正在执行,稍后再试。 步骤404、将当前写命令的引用计数加1;
步骤405、在用户操作命令执行后,将当前写命令的引用计数减1。 下面举 一 例说明本发明实施例方法的实施。
本例中,多控制器磁盘阵列运行时,用户连接一个控制器,并发出用户操 作命令operation "Controller A [~other paramaters]。查找主控制器,如果用户 连接的就是主控制器,则继续执行用户操作命令,否则将用户操作命令通过远 程过程调用转发到主控制器。主控制器判断是否允许用户操作命令执行。如果 允许执行,则继续(如杲是写命令则在继续执行前先将引用计数+l)。读取 -controller A参数,如果与主控制器标识信息一致,则直接在主控制器执行用 户操作命令;否则主控制器通过远程过程调用,将用户操作命令转发到用户待 操作的控制器去执行。若用户操作命令是写命令,则在执行完毕时,将引用计
数-1。远程过程调用逐步向用户返回结果。如图5所示,本例中,多控制器磁 盘阵列的命令处理流程如下
步骤501、接收用户输入的用户操作命令。
步骤502、获得主控制器的标识信息。
步骤503、判断主控制器的标识信息是否与用户连接的控制器标识信息相 同,如果相同直接在用户连接的控制器,即此时的主控制器并执行步骤505; 如果不同,则执行步骤504。
步骤504、将用户操作命令转发到主控制器。
步骤505、读取用户操作命令。
步骤506、根据用户操作命令的类型和当前写命令的引用计数确定用户操
作命令的处理,对允许执行的写命令的引用计数加1。
步骤507、读取-controller参数,获得用户待操作的控制器为控制器A。 步骤50S、判断控制器A是否为主控制器,若是,主控器恰好是用户待操
作的控制器,则在主控制器执行步骤510;如果不同,执行步骤509。 步骤509、通过远程调用,将命令转发至用户待操作的控制器。 步骤510、用户待操作的控制器得到用户操作命令,并执行命令。 步骤511、若是写命令,则在执行完成后,将引用计数减l。 步骤512、逐步返回命令执行结果至用户。

以通过程序来指令相关的硬件完成,该程序可以存储于一计算机可读存储介质
中,存储介质可以包括ROM、 RAM、磁盘或光盘等。
基于同一发明构思,本发明实施例还提供一种多控制器磁盘阵列,其结构 如图6所示,可以包括
主控制器确定模块601,用于确定多控制器》兹盘阵列中,用于控制用户操 作命令执行的主控制器;
用户输入模块602,用于将用户操作命令发送至主控制器;
执行控制模块603,用于触发主控制器控制用户操作命令的执行。 其中主控制器确定模块601可以有外部函数接口 ,可以读取已经预定义的
主控制器的标识信息,并支持单控/双控/多控时的主控制器确定。如图7所示,
一个实施例中,主控制器确定模块601可以包括
运行模式确定子模块701,用于确定多控制器磁盘阵列的运行模式; 第一主控制器确定子模块702,用于在多控制器磁盘阵列以单控制器模式
运行时,确定运行的单控制器为主控制器;
第二主控制器确定子模块703 ,用于在多控制器磁盘阵列以多控制器模式
运行时,读取多控制器磁盘阵列中预定义的主控制器;或,从运行的多控制器
中选择一个控制器确定为主控制器。
如图8所示, 一个实施例中,第二主控制器确定子模块703可以包括 启动时间读取单元801,用于读取运行的多控制器中,每个控制器的启动
时间;
主控制器确定单元802,用于在各控制器的启动时间不一致时,选择最早 启动的控制器确定为主控制器;在各控制器的启动时间一致时,随机选择一个 控制器确定为主控制器。
如图9所示, 一个实施例中,用户输入模块602可以包括
第一输入子模块901 ,用于将用户发送的用户操作命令直接发送至主控制
器;
或,第二输入子模块902,用于将用户发送的用户操作命令经多控制器磁
盘阵列中其它控制器转发至主控制器。
如图10所示, 一个实施例中,执行控制模块603可以包括 解析子模块IOOI,用于解析用户操作命令,确定用户待操作的控制器; 第一执行控制子模块1002,用于在确定用户待操作的控制器是主控制器
时,直接触发主控制器执行用户操作命令;
第二执行控制子模块1003,用于在确定用户待操作的控制器不是主控制器时,触发主控制器将用户操作命令转发至用户待操作的控制器执行。
如图ll所示, 一个实施例中,执行控制模块603可以包括 许可子模块1101,用于确定是否允许用户操作命令执行; 第三执行控制子模块1102,用于在确定允许用户操作命令执行时,触发主
控制器控制用户操作命令的执行。
如图12所示, 一个实施例中,许可子模块1101可以包括 命令类型与计数单元1201,用于在用户操作命令为读命令时,确定允许用
户操作命令执行;在用户操作命令为写命令、且当前写命令的引用计数为0时,
确定允许用户操作命令执行。
一个实施例中,命令类型与计数单元1201还可以用于在用户操作命令为
写命令、且当前写命令的引用计数为0时
在用户操作命令执行前,将当前写命令的引用计数加1; 在用户操作命令执行后,将当前写命令的引用计数减1。 本发明实施例中,确定多控制器磁盘阵列中,用于控制用户操作命令执行
的主控制器;由主控制器接收用户操作命令,并控制用户操作命令的执行,可
以在用户通过多个控制器对同一磁盘阵列进行管理时,保证用户待操作的控制
器正确获得用户操作命令并执行。
进一步的,在确定允许用户操作命令执行时,由主控制器控制用户操作命
令的执行,可以避免用户操作命令在执行时发生死锁或冲突,保证多用户多控
制器情况下磁盘数据的 一致性。
明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求 及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种多控制器磁盘阵列的命令处理方法,其特征在于,该方法包括:确定多控制器磁盘阵列中,用于控制用户操作命令执行的主控制器;由主控制器接收用户操作命令,并控制用户操作命令的执行。
2、 如权利要求1所述的方法,其特征在于,所述确定多控制器磁盘阵列 中,用于控制用户操作命令执行的主控制器包括在多控制器磁盘阵列以单控制器模式运行时,确定运行的单控制器为主控 制器;在多控制器磁盘阵列以多控制器模式运行时,读取运行的多控制器中预定 义的主控制器;或,从运行的多控制器中选择一个控制器确定为主控制器。
3、 如权利要求2所述的方法,其特征在于,从运行的多控制器中选择一 个控制器确定为主控制器包括读取运行的多控制器中,每个控制器的启动时间;在各控制器的启动时间不一致时,选择最早启动的控制器确定为主控制器;在各控制器的启动时间一致时,随机选择一个控制器确定为主控制器。
4、 如权利要求1所述的方法,其特征在于,所述由主控制器接收用户操 作命令包括主控制器直接接收用户发送的用户操作命令;或,主控制器接收多控制器磁盘阵列中其它控制器转发的用户操作命令。
5、 如权利要求1所述的方法,其特征在于,所述由主控制器控制用户操 作命令的执行包括解析用户操作命令,确定用户待操作的控制器;在确定用户待操作的控制器是主控制器时,直接由主控制器执行用户操作 命令; 在确定用户待操作的控制器不是主控制器时,由主控制器将用户操作命令 转发至用户待操作的控制器执行。
6、 如权利要求1所述的方法,其特征在于,所述由主控制器控制用户操 作命令的执行包括在确定允许用户操作命令执行时,由主控制器控制用户操作命令的执行。
7、 如权利要求6所述的方法,其特征在于,所述确定允许用户操作命令 执行包括在用户操作命令为读命令时,确定允许用户操作命令执行; 在用户操作命令为写命令、且当前写命令的引用计数为O时,确定允许用 户操作命令执行。
8、 如权利要求7所述的方法,其特征在于,在用户才喿作命令为写命令、 且当前写命令的引用计数为o时,所述控制用户操作命令的执行包括在用户操作命令执行前,将当前写命令的引用计数加1; 在用户操作命令执行后,将当前写命令的引用计数减1。
9、 一种多控制器^兹盘阵列,其特征在于,包括主控制器确定;f莫块,用于确定多控制器磁盘阵列中,用于控制用户操作命 令执行的主控制器;用户输入模块,用于将用户操作命令发送至主控制器; 执行控制模块,用于触发主控制器控制用户操作命令的执行。
10、 如权利要求9所述的多控制器》兹盘阵列,其特征在于,所述主控制器 确定模块包括运行模式确定子模块,用于确定多控制器磁盘阵列的运行模式;第一主控制器确定子模块,用于在多控制器石兹盘阵列以单控制器模式运行时,确定运行的单控制器为主控制器;第二主控制器确定子模块,用于在多控制器磁盘阵列以多控制器模式运行时,读取多控制器磁盘阵列中预定义的主控制器;或,从运行的多控制器中选 择一个控制器确定为主控制器。
11、 如权利要求10所述的多控制器磁盘阵列,其特征在于,所述第二主 控制器确定子模块包括启动时间读取单元,用于读取运行的多控制器中,每个控制器的启动时间; 主控制器确定单元,用于在各控制器的启动时间不一致时,选择最早启动的控制器确定为主控制器;在各控制器的启动时间一致时,随机选择一个控制器确定为主控制器。
12、 如权利要求9所述的多控制器磁盘阵列,其特征在于,所述用户输入 模块包括第一输入子模块,用于将用户发送的用户操作命令直接发送至主控制器; 或,第二输入子模块,用于将用户发送的用户操作命令经多控制器磁盘阵 列中其它控制器转发至主控制器。
13、 如权利要求9所述的多控制器磁盘阵列,其特征在于,所述执行控制 模块包括解析子模块,用于解析用户操作命令,确定用户待操作的控制器; 第一执行控制子模块,用于在确定用户待操作的控制器是主控制器时,直接触发主控制器执行用户操作命令;第二执行控制子模块,用于在确定用户待操作的控制器不是主控制器时,触发主控制器将用户操作命令转发至用户待操作的控制器执行。
14、 如权利要求9所述的多控制器磁盘阵列,其特征在于,所述执行控制 模块包括许可子才莫块,用于确定是否允许用户搡作命令执行; 第三执行控制子模块,用于在确定允许用户操作命令执行时,触发主控制 器控制用户操作命令的执行。
15、 如权利要求14所述的多控制器磁盘阵列,其特征在于,所述许可子 模块包括命令类型与计数单元,用于在用户操作命令为读命令时,确定允许用户操 作命令执行;在用户操作命令为写命令、且当前写命令的引用计数为0时,确 定允许用户操作命令执行。
16、如权利要求15所述的多控制器磁盘阵列,其特征在于,所述命令类型与计数单元进一步用于在用户操作命令为写命令、且当前写命令的引用计数为0时在用户操作命令执行前,将当前写命令的引用计数加1; 在用户操作命令执行后,将当前写命令的引用计数减1。
全文摘要
本发明公开了一种多控制器磁盘阵列的命令处理方法,该方法包括确定多控制器磁盘阵列中,用于控制用户操作命令执行的主控制器;由主控制器接收用户操作命令,并控制用户操作命令的执行。本发明同时公开一种多控制器磁盘阵列。采用本发明可以保证用户待操作的控制器正确获得用户操作命令并执行。
文档编号G06F3/06GK101373420SQ20081021556
公开日2009年2月25日 申请日期2008年9月9日 优先权日2008年9月9日
发明者高文强 申请人:创新科存储技术(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1