一种处理输入输出请求的方法及设备的制造方法_2

文档序号:8282231阅读:来源:国知局
填充单元,用于将每个IO请求对应的LUN、所述每个IO请求的优先级和所述 每个IO请求的命令描述字,分别填充在所述每个IO请求对应的信息字段中,所述信息字段 包括LUN字段、优先级字段和命令描述字字段;
[0048] 第二封装单元,用于将所述每个IO请求对应的信息字段封装成一个IO指令。
[0049] 结合第二方面、第二方面的第一种可能的实现方式或第二方面的第二种可能的实 现方式,在上述第二方面的第三种可能的实现方式中,所述IO指令中还包括所述获取的多 个IO请求的数量。
[0050] 结合第二方面,在上述第二方面的第四种可能的实现方式中,所述封装模块包 括:
[0051] 划分单元,用于将所述获取的多个IO请求划分为多个IO请求组;
[0052] 选择单元,用于对于所述多个IO请求组中的任一个IO请求组,为所述IO请求组 选择一个主请求;
[0053] 第三封装单元,用于将所述IO请求组中除所述主请求之外的其他IO请求确定为 所述IO请求组的从请求,并将所述从请求封装在所述主请求的IO请求参数页中;
[0054] 第四封装单元,用于根据所述主请求对应的LUN、所述主请求的优先级和所述主请 求的命令描述字,将所述主请求封装成一个IO指令,所述IO指令中携带所述主请求的IO 请求参数页。
[0055] 结合第二方面的第四种可能的实现方式,在上述第二方面的第五种可能的实现方 式中,所述划分单元包括:
[0056] 判断子单元,用于判断获取的多个IO请求中是否存在携带参数的IO请求;
[0057] 第一划分子单元,用于如果存在,则根据携带参数的IO请求的数量,将所述获取 的多个IO请求划分为多个IO请求组,使每个IO请求组中最多包括一个携带参数的IO请 求;
[0058] 第二划分子单元,用于如果不存在,则将所述获取的多个IO请求划分为多个IO请 求组。
[0059] 结合第二方面的第四种可能的实现方式或第二方面的第五种可能的实现方式,在 上述第二方面的第六种可能的实现方式中,所述选择单元包括:
[0060] 第一确定子单元,用于如果所述IO请求组中包括携带参数的IO请求,则将携带参 数的IO请求确定为所述IO请求组的主请求;
[0061] 选择子单元,用于如果所述IO请求组中没有包括携带参数的IO请求,则从所述IO 请求组中随机选择一个IO请求,将选择的IO请求确定为所述IO请求组的主请求。
[0062] 结合第二方面的第四种可能的实现方式,在上述第二方面的第七种可能的实现方 式中,所述第三封装单元包括:
[0063] 第二确定子单元,用于将所述IO请求组中除所述主请求之外的其他IO请求确定 为所述IO请求组的从请求;
[0064] 填充子单元,用于将每个从请求对应的LUN、所述每个从请求的优先级和所述每个 从请求的命令描述字分别填充在所述每个从请求对应的IO参数列表中;
[0065] 设置子单元,用于为所述主请求的IO请求参数页设置页码和子页码,将所述页 码、所述子页码和所述每个从请求对应的参数封装在所述主请求的IO请求参数页中。
[0066] 结合第二方面的第四种可能的实现方式,在上述第二方面的第八种可能的实现方 式中,所述封装模块还包括:
[0067] 修改单元,用于如果所述主请求的命令描述字中包括参数列表长度字段,则将所 述参数列表长度字段修改为所述主请求的IO请求参数页的长度;
[0068] 设置单元,用于如果所述主请求的命令描述字中不包括参数列表长度字段,则在 所述主请求的命令描述字中增加参数列表长度字段,并设置所述参数列表长度字段为所述 主请求的IO请求参数页的长度。
[0069] 第三方面,提供了一种处理输入输出请求的设备,所述设备包括存储器和处理器, 用于执行所述一种处理输入输出请求的方法。
[0070] 在本发明实施例中,当虚拟机发出的IO请求时,获取多个IO请求;根据每个IO请 求对应的LUN、每个IO请求的优先级和每个IO请求的命令描述字,将获取的多个IO请求封 装成一个IO指令,避免了将每个LUN对应的IO请求分别封装成一个IO指令,减少了主机 与存储系统之间的IO指令数,从而避免了为大量IO指令建立连接和断开连接,提高了存储 系统的读写性能和吞吐量。
【附图说明】
[0071] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使 用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于 本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他 的附图。
[0072] 图1是本发明实施例一提供的一种处理输入输出请求的方法流程图;
[0073] 图2是本发明实施例二提供的一种处理输入输出请求的系统结构示意图;
[0074] 图3是本发明实施例二提供的一种处理输入输出请求的方法流程图;
[0075] 图4是本发明实施例三提供的一种处理输入输出请求的方法流程图;
[0076] 图5是本发明实施例四提供的一种处理输入输出请求的设备结构示意图;
[0077] 图6是本发明实施例五提供的一种处理输入输出请求的设备结构示意图。
【具体实施方式】
[0078] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方 式作进一步地详细描述。
[0079] 实施例一
[0080] 本发明实施例提供了一种处理输入输出请求的方法,参见图1,该方法包括:
[0081] 步骤101 :获取多个输入输出IO请求;
[0082] 步骤102 :根据获取的多个IO请求的参数,将获取的多个IO请求封装成一个IO指 令,该多个IO请求中的每一个IO请求的参数至少包括IO请求对应的LUN、IO请求的优先 级和IO请求的命令描述字;
[0083] 步骤103 :将该IO指令发送给存储系统,使该存储系统从该IO指令中解析出该多 个IO请求,并对该多个IO请求分别进行处理。
[0084] 其中,根据获取的多个IO请求的参数,将获取的多个IO请求封装成一个IO指令, 包括:
[0085] 将每个IO请求对应的LUN填充在IO指令的LUN字段中;
[0086] 根据该LUN字段中LUN对应的IO请求的顺序,将每个IO请求的优先级填充在该 IO指令的优先级字段中;
[0087] 根据该LUN字段中LUN对应的IO请求的顺序,将每个IO请求的命令描述字填充 在该IO指令的命令描述字字段中;
[0088] 将LUN字段、优先级字段和命令描述字段封装成一个IO指令。
[0089] 可选地,根据获取的多个IO请求的参数,将获取的多个IO请求封装成一个IO指 令,包括:
[0090] 将每个IO请求对应的LUN、每个IO请求的优先级和每个IO请求的命令描述字,分 别填充在每个IO请求对应的信息字段中,该信息字段包括LUN字段、优先级字段和命令描 述字字段;
[0091] 将每个IO请求对应的信息字段封装成一个IO指令。
[0092] 其中,该IO指令中还包括获取的多个IO请求的数量。
[0093] 其中,根据获取的多个IO请求的参数,将获取的多个IO请求封装成一个IO指令, 包括:
[0094] 将获取的多个IO请求划分为多个IO请求组;
[0095] 对于该多个IO请求组中的任一个IO请求组,为该IO请求组选择一个主请求;
[0096] 将该IO请求组中除该主请求之外的其他IO请求确定为该IO请求组的从请求,并 将该从请求封装在该主请求IO请求参数页中;
[0097] 根据该主请求对应的LUN、该主请求的优先级和该主请求的命令描述字,将该主请 求封装成一个IO指令,该IO指令中携带该主请求的IO请求参数页。
[0098] 其中,将获取的多个IO请求划分为多个IO请求组,包括:
[0099] 判断获取的多个IO请求中是否存在携带参数的IO请求;
[0100] 如果存在,则根据携带参数的IO请求的数量,将获取的多个IO请求划分为多个IO 请求组,使每个IO请求组中最多包括一个携带参数的IO请求;
[0101] 如果不存在,则将获取的多个IO请求划分为多个IO请求组。
[0102] 其中,为该IO请求组选择一个主请求,包括:
[0103] 如果该IO请求组中包括携带参数的IO请求,则将携带参数的IO请求确定为该IO 请求组的主请求;
[0104] 如果该IO请求组中没有包括携带参数的IO请求
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1