首页> 中国专利> 一种基于磁盘I/O队列的磁盘阵列写方式选择方法

一种基于磁盘I/O队列的磁盘阵列写方式选择方法

摘要

本发明公开了一种基于磁盘I/O队列的磁盘阵列写方式选择方法,特征是包括设计存储结构、计算预读请求个数、写方式选择策略和维护存储结构;在处理写请求和更新校验块时,根据下层磁盘上的I/O队列中的读请求个数和写请求个数计算最大磁盘I/O队列预算延迟,抉择写方式。与传统的磁盘阵列写方式选择相比,在保证系统可以承受的负载下避免了某一磁盘负载过多,而其他磁盘比较空闲的这种情况,增强了磁盘阵列的并行性,缩短了请求的平均响应时间,并提高了系统的带宽。

著录项

  • 公开/公告号CN105204785A

    专利类型发明专利

  • 公开/公告日2015-12-30

    原文格式PDF

  • 申请/专利权人 中国科学技术大学;

    申请/专利号CN201510681425.8

  • 申请日2015-10-15

  • 分类号G06F3/06(20060101);

  • 代理机构34101 安徽省合肥新安专利代理有限责任公司;

  • 代理人汪祥虬

  • 地址 230026 安徽省合肥市包河区金寨路96号

  • 入库时间 2023-12-18 13:14:03

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-07-06

    授权

    授权

  • 2016-01-27

    实质审查的生效 IPC(主分类):G06F3/06 申请日:20151015

    实质审查的生效

  • 2015-12-30

    公开

    公开

说明书

技术领域

本发明属于计算机磁盘阵列技术领域,具体涉及通过磁盘输入/输出(I/O)队列实 现高效磁盘阵列写方式选择方法。

背景技术

美国计算机协会出版的《1988年ACMSIGMOD国际会议上的数据管理的会议记 录》(Proceedingsofthe1988ACMSIGMODinternationalconferenceonManagementof data,1988年第1版,第109~116页)所介绍的磁盘阵列(ACaseforRedundantArrays ofInexpensiveDisks(RAID))充分利用每个磁盘的并行性,并引进校验块(parity)保 证数据的安全性。在实现RAID技术的Linux操作系统内核中,对每一个条带上的写方 式有两种选择,分别是“读-改-写”(read-modify-write)方式和“读-重构-写” (read-construct-write)方式。自Linux2.6版本发行以来,对RAID中写方式的选择一 直都是采用产生最少磁盘请求的写方式,这种方法没有考虑到磁盘上的具体请求状态, 因此可能会造成某一块磁盘负载过多,而其他磁盘比较空闲的情况,降低阵列的并行性, 产生较高的响应延迟和降低系统的带宽。

发明内容

本发明的目的是提出一种磁盘阵列写方式选择方法,以克服现有技术的上述缺陷, 在保证低开销的情况下,增强阵列的并行性,缩短请求的平均响应时间,提高系统的带 宽。

本发明基于磁盘I/O队列的磁盘阵列写方式选择方法,其特征在于包括以下步骤:

第一步:设计存储结构

采用一组结构来存放磁盘阵列中每个磁盘I/O队列中读请求个数和写请求个数,其 中,磁盘数为N的磁盘阵列中,包含N个条目存放磁盘I/O队列中读请求个数,N个 条目存放磁盘I/O队列写请求个数,每个条目占用4字节;

第二步:计算预读请求个数

当写请求的数目不足以构建一个新的条带时,计算新的校验位:根据该条带中数据 块和校验块进行异或运算得到新的校验块;统计该条带中不在内存中的块的个数,即预 读请求个数;分别计算“读-改-写”方式产生的预读请求个数Num_rmw和“读-重构- 写”方式产生的预读请求个数Num_rcw;

第三步:写方式选择策略

设定一个范围在[0,N]的阀值T表示每次进行写方式选择所造成的额外负载上限;

如果“读-改-写”方式产生的预读请求个数减去“读-重构-写”方式产生的预读请 求个数的差值大于T,则选用“读-重构-写”方式;

如果“读-重构-写”方式产生的预读请求个数减去“读-改-写”方式产生的预读请 求个数的差值大于T,则选用“读-改-写”方式;

如果“读-改-写”方式产生的预读请求个数减去“读-重构-写”方式产生的预读请 求个数的绝对值小于等于T,则按写方式分别计算相关磁盘I/O队列预算延迟:读请求 个数+写请求个数×磁盘的写延迟/读延迟的比值;计算采用“读-改-写”方式需要读取 的每个磁盘I/O队列的预算延迟,从中选取最大磁盘I/O队列预算延迟Max_rmw;再计 算采用“读-重构-写”方式需要读取的每个磁盘I/O队列的预算延迟,从中选取最大磁 盘I/O队列预算延迟Max_rcw;

在“读-改-写”方式产生的预读请求个数减去“读-重构-写”方式产生的预读请求 个数的绝对值小于等于T的情况下,若“读-改-写”方式的最大磁盘I/O队列预算延迟 大于“读-重构-写”方式的最大磁盘I/O队列预算延迟,就选用“读-重构-写”方式; 若“读-重构-写”方式的最大磁盘I/O队列预算延迟大于“读-改-写”方式的最大磁盘 I/O队列预算延迟,就选用“读-改-写”方式;若“读-改-写”方式的最大磁盘I/O队列 预算延迟等于“读-重构-写”方式的最大磁盘I/O队列预算延迟,再根据“读-改-写” 方式产生的预读请求个数和“读-重构-写”方式产生的预读请求个数的大小关系进行抉 择:当“读-改-写”方式产生的预读请求个数小于“读-重构-写”方式产生的预读请求 个数时,就选用“读-改-写”方式;当“读-改-写”方式产生的预读请求个数大于等于 “读-重构-写”方式产生的预读请求个数时,就选用“读-重构-写”方式;

第四步:维护存储结构

在选定好一种写方式后,下发读请求到对应的磁盘I/O队列中,将第一步中的存储 结构所对应的磁盘的读请求数加1。

上述本发明的基于磁盘I/O队列的磁盘阵列写方式选择方法,采取了设计存储结构、 计算预读请求个数、写方式选择策略和维护存储结构的操作步骤;由于在处理写请求和 更新校验块时,根据下层磁盘上的I/O队列中的读请求个数和写请求个数计算最大磁盘 I/O队列预算延迟来确定写方式,与传统的磁盘阵列写方式选择相比,在保证系统可以 承受的负载下避免了某一磁盘负载过多,而其他磁盘比较空闲的这种情况,增强了磁盘 阵列的并行性,缩短了请求的平均响应时间,并提高了系统的带宽。

附图说明

图1为磁盘阵列条带组织示意图。

图2表示磁盘阵列中各个磁盘的I/O队列状态示意图。

图3表示采用“读-改-写”方式更新校验块示意图。

图4表示采用“读-重构-写”方式更新校验块示意图。

图5为按照本发明方法进行磁盘阵列写方式选择的总体操作流程示意图。

具体实施方式

下面结合附图通过具体实施例对本发明基于磁盘I/O队列的磁盘阵列写方式选择方 法作进一步的详细说明。

实施例1:

本实施例基于磁盘I/O队列的磁盘阵列写方式选择方法,具体包括以下步骤:

第一步:存储结构设计

附图1给出了整个磁盘阵列的条带组织示意图。这是由8块磁盘(编号为D0~D7) 构成的RAID5阵列,磁盘采用固态硬盘,其读延迟是25微秒/页,写延迟是200微秒/ 页。每个方块表示一个块,大小为4KB,每一行代表一个条带,每个条带由8个块组 成,条带大小为32KB。对每个块进行编号<i,j>,i表示所在的磁盘编号Di,j表示所 在的条带编号,附图1中有4个条带,编号分别为0、1、2、3和4。在附图1中,编 号D0~D6的磁盘中存放条带中的数据块,编号D7磁盘存放校验块。本实施例基于附 图1的磁盘阵列结构进行基于磁盘I/O队列的磁盘阵列写方式选择方法。

附图2给出了通过本存储结构记录的磁盘阵列中各个磁盘I/O队列中待处理的读请 求个数和写请求个数的示意图。磁盘阵列中编号D0~D7磁盘的I/O队列中待处理的读 请求个数分别为10、20、12、20、30、15、23和15。磁盘阵列中编号D0~D7磁盘的 I/O队列中待处理的写请求个数分别为5、50、13、10、64、22、30和35。

第二步:计算预读请求个数

当下发的写请求数目不足以构建一个新的条带时,此时需要更新条带中的校验块, 附图3给出了由编号A、B、C、D、E、F、G和P这8个块组成的一个条带,其中编 号A、B、C、D、E、F和G的方块代表条带中的数据块,编号P的方块代表条带中的 校验块。此时有两个写请求到来,分别是将编号B的方块和编号E的方块中的数据更 新为编号B'和E'方块中的数据。为了数据的一致性,在更新数据块的同时也要更新校 验块。在更新校验块时需要读取条带中的其他方块中的数据,但是条带中的其他方块的 数据又不一定全部存放在内存中,此时需要下发预读请求,将相应的方块中的数据从磁 盘上读取到内存中以计算新的校验块。

附图3给出了采用read-modify-write方式来更新校验块的方法,图中小方块内采用 右斜线表示的方块为需要更新的块;用十字外加圆圈的符号表示异或运算,虚线箭头表 示表示计算新的校验块所需要参加运算的块,用实线箭头表示需要将新数据更新到磁盘 上的块。在附图3中,为了计算新的校验块P',需要将编号为B、E和P的块中的数据 从磁盘上读取到内存中,再与编号B'和E'的块中的数据进行异或操作得到新的校验块 P',这样产生的预读请求个数为3个,即下发3个读请求到磁盘阵列中。

附图4给出了采用read-construct-write方式来更新校验块的方法,图中小方块内采 用右斜线表示的方块为需要更新的块;用十字外加圆圈的符号表示异或运算,虚线箭头 表示计算新的校验块所需要参加运算的块,用实线箭头表示需要将新数据更新到磁盘上 的块。在附图4中,需要将编号为A、C、D、F和G的块中的数据从磁盘上读取到内 存中,再与编号B'和E'的块中的数据进行异或操作得到新的校验块P',这样产生的预 读请求个数为5个,即下发5个读请求到磁盘阵列中。

这样可得到若采用read-modify-write方式来更新校验块,产生的预读请求个数 Num_rmw为3,若采用read-construct-write方式来更新校验块,产生的预读请求个数 Num_rcw为5。

第三步:写方式选择策略

设定一个范围在0<=T<=N的阀值T表示每次进行写方式选择所造成的额外负载上 限;附图5给出了基于磁盘I/O队列的磁盘阵列写方式选择方法示意图。附图2中的磁 盘I/O状态和第二步计算得到的预读请求个数Num_rmw和Num_rcw将为最后的写方 式选择策略提供判断条件。写请求数目不足以构建一个新的条带时,更新条带中的校验 块操作①,第二步中预读请求个数的计算过程②。这里设定阀值T为2。由于得到的预 读请求个数符合|Num_rmw-Num_rcw|<=T判断过程③中的判断条件,所以进入计算最大 队列预算延迟操作④,在计算队列预算延迟时,磁盘的写延迟/读延迟:200/25=8。预 算延迟的计算公式为:读请求个数+写请求个数×8。若采用read-modify-write方式来更 新校验块,需要下发预读请求到编号为D1、D4和D7这三个磁盘上,编号D1的磁盘 的预算延迟为420,编号D4的磁盘的预算延迟为542,编号D7的磁盘的预算延迟为 295,可得采用read-modify-write方式的最大队列预算延迟Max_rmw为542。若采用 read-construct-write方式来更新校验块,需要下发预读请求到编号D0、D2、D3、D5和 D6这5个磁盘上,对应的磁队列预算延迟分别为50、116、100、191和263,则采用 read-construct-write方式的最大队列预算延迟Max_rcw为263。当操作④的计算过程结 束后,进入Max_rmw>Max_rcw是否为真的判断过程⑤,由于Max_rmw>Max_rcw,所 以最终选择过程⑥,以“读-重构-写”方式来处理该写请求,同时更新校验块。

第四步:存储结构维护机制

由于最终采用read-construct-write方式来处理这个该写请求,预读请求发生在编号 D0、D2、D3、D5和D6的磁盘上,所以将这几个磁盘的I/O队列中的读请求数分别加 1,则磁盘阵列中编号D0~D7磁盘的I/O队列中待处理的读请求个数分别为11、20、13、 21、30、16、24和15。磁盘阵列中编号D0~D7磁盘的I/O队列中待处理的写请求个数 分别为5、50、13、10、64、22、30和35,为下一次的写方式选择提供同步的磁盘I/O 队列状态。

在本实施例中,通过基于磁盘I/O队列的磁盘阵列写方式选择方法,通过阀值T的 设定将系统的额外负载控制在系统可以承受的范围内,避免了磁盘阵列中编号D4的磁 盘的I/O队列增长过快导致请求的响应延迟过高,将预读请求的响应时间缩短了279个 读延迟时间,并且充分利用各个磁盘的并行性,平衡磁盘阵列中各个磁盘的I/O负载, 缩短请求的平均响应时间,提高系统的带宽。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号