CN105204785A - 一种基于磁盘i/o队列的磁盘阵列写方式选择方法 - Google Patents
一种基于磁盘i/o队列的磁盘阵列写方式选择方法 Download PDFInfo
- Publication number
- CN105204785A CN105204785A CN201510681425.8A CN201510681425A CN105204785A CN 105204785 A CN105204785 A CN 105204785A CN 201510681425 A CN201510681425 A CN 201510681425A CN 105204785 A CN105204785 A CN 105204785A
- Authority
- CN
- China
- Prior art keywords
- read
- write
- mode
- request number
- queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明公开了一种基于磁盘I/O队列的磁盘阵列写方式选择方法,特征是包括设计存储结构、计算预读请求个数、写方式选择策略和维护存储结构;在处理写请求和更新校验块时,根据下层磁盘上的I/O队列中的读请求个数和写请求个数计算最大磁盘I/O队列预算延迟,抉择写方式。与传统的磁盘阵列写方式选择相比,在保证系统可以承受的负载下避免了某一磁盘负载过多,而其他磁盘比较空闲的这种情况,增强了磁盘阵列的并行性,缩短了请求的平均响应时间,并提高了系统的带宽。
Description
技术领域
本发明属于计算机磁盘阵列技术领域,具体涉及通过磁盘输入/输出(I/O)队列实现高效磁盘阵列写方式选择方法。
背景技术
美国计算机协会出版的《1988年ACMSIGMOD国际会议上的数据管理的会议记录》(Proceedingsofthe1988ACMSIGMODinternationalconferenceonManagementofdata,1988年第1版,第109~116页)所介绍的磁盘阵列(ACaseforRedundantArraysofInexpensiveDisks(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负载,缩短请求的平均响应时间,提高系统的带宽。
Claims (1)
1.一种基于磁盘I/O队列的磁盘阵列写方式选择方法,其特征在于包括以下步骤:
第一步:设计存储结构
采用一组结构来存放磁盘阵列中每个磁盘I/O队列中读请求个数和写请求个数,其中,磁盘数为N的磁盘阵列中,包含N个条目存放磁盘I/O队列中读请求个数,N个条目存放磁盘I/O队列写请求个数,每个条目占用4字节;
第二步:计算预读请求个数
当写请求的数目不足以构建一个新的条带时,计算新的校验位:根据该条带中数据块和校验块进行异或运算得到新的校验块;统计该条带中不在内存中的块的个数,即预读请求个数;分别计算“读-改-写”方式产生的预读请求个数和“读-重构-写”方式产生的预读请求个数;
第三步:写方式选择策略
设定一个范围在[0,N]的阀值T表示每次进行写方式选择所造成的额外负载上限;
如果“读-改-写”方式产生的预读请求个数减去“读-重构-写”方式产生的预读请求个数的差值大于T,则选用“读-重构-写”方式;
如果“读-重构-写”方式产生的预读请求个数减去“读-改-写”方式产生的预读请求个数的差值大于T,则选用“读-改-写”方式;
如果“读-改-写”方式产生的预读请求个数减去“读-重构-写”方式产生的预读请求个数的绝对值小于等于T,则按写方式分别计算相关磁盘I/O队列预算延迟:读请求个数+写请求个数×磁盘的写延迟/读延迟的比值;计算采用“读-改-写”方式需要读取的每个磁盘I/O队列的预算延迟,从中选取最大磁盘I/O队列预算延迟;再计算采用“读-重构-写”方式需要读取的每个磁盘I/O队列的预算延迟,从中选取最大磁盘I/O队列预算延迟;
在“读-改-写”方式产生的预读请求个数减去“读-重构-写”方式产生的预读请求个数的绝对值小于等于T的情况下,若“读-改-写”方式的最大磁盘I/O队列预算延迟大于“读-重构-写”方式的最大磁盘I/O队列预算延迟,就选用“读-重构-写”方式;若“读-重构-写”方式的最大磁盘I/O队列预算延迟大于“读-改-写”方式的最大磁盘I/O队列预算延迟,就选用“读-改-写”方式;若“读-改-写”方式的最大磁盘I/O队列预算延迟等于“读-重构-写”方式的最大磁盘I/O队列预算延迟,再根据“读-改-写”方式产生的预读请求个数和“读-重构-写”方式产生的预读请求个数的大小关系进行抉择:当“读-改-写”方式产生的预读请求个数小于“读-重构-写”方式产生的预读请求个数时,就选用“读-改-写”方式;当“读-改-写”方式产生的预读请求个数大于等于“读-重构-写”方式产生的预读请求个数时,就选用“读-重构-写”方式;
第四步:维护存储结构
在选定好一种写方式后,下发读请求到对应的磁盘I/O队列中,将第一步中的存储结构所对应的磁盘的读请求数加1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510681425.8A CN105204785B (zh) | 2015-10-15 | 2015-10-15 | 一种基于磁盘i/o队列的磁盘阵列写方式选择方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510681425.8A CN105204785B (zh) | 2015-10-15 | 2015-10-15 | 一种基于磁盘i/o队列的磁盘阵列写方式选择方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105204785A true CN105204785A (zh) | 2015-12-30 |
CN105204785B CN105204785B (zh) | 2018-07-06 |
Family
ID=54952504
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510681425.8A Active CN105204785B (zh) | 2015-10-15 | 2015-10-15 | 一种基于磁盘i/o队列的磁盘阵列写方式选择方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105204785B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106293511A (zh) * | 2016-07-26 | 2017-01-04 | 北京理工大学 | 一种面向连续数据存储的动态局部并行数据布局 |
CN106406761A (zh) * | 2016-09-18 | 2017-02-15 | 安徽爱她有果电子商务有限公司 | 一种网络计算机存储系统排队方法 |
CN108628551A (zh) * | 2018-05-04 | 2018-10-09 | 深圳市茁壮网络股份有限公司 | 一种数据处理方法及装置 |
CN109062514A (zh) * | 2018-08-16 | 2018-12-21 | 郑州云海信息技术有限公司 | 一种基于命名空间的带宽控制方法、装置和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751295B (zh) * | 2009-12-22 | 2012-08-29 | 浙江大学 | 多核架构下核间线程迁移的实现方法 |
CN103336669A (zh) * | 2013-05-21 | 2013-10-02 | 华中科技大学 | 一种基于固态盘内部并行性的i/o调度方法及调度器 |
CN104778100A (zh) * | 2015-04-23 | 2015-07-15 | 成都博元时代软件有限公司 | 一种安全备份数据的方法 |
-
2015
- 2015-10-15 CN CN201510681425.8A patent/CN105204785B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751295B (zh) * | 2009-12-22 | 2012-08-29 | 浙江大学 | 多核架构下核间线程迁移的实现方法 |
CN103336669A (zh) * | 2013-05-21 | 2013-10-02 | 华中科技大学 | 一种基于固态盘内部并行性的i/o调度方法及调度器 |
CN104778100A (zh) * | 2015-04-23 | 2015-07-15 | 成都博元时代软件有限公司 | 一种安全备份数据的方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106293511A (zh) * | 2016-07-26 | 2017-01-04 | 北京理工大学 | 一种面向连续数据存储的动态局部并行数据布局 |
WO2018019119A1 (zh) * | 2016-07-26 | 2018-02-01 | 北京理工大学 | 一种面向连续数据存储的动态局部并行数据布局方法及装置 |
CN106293511B (zh) * | 2016-07-26 | 2018-12-04 | 北京理工大学 | 一种面向连续数据存储的动态局部并行数据布局方法 |
CN106406761A (zh) * | 2016-09-18 | 2017-02-15 | 安徽爱她有果电子商务有限公司 | 一种网络计算机存储系统排队方法 |
CN108628551A (zh) * | 2018-05-04 | 2018-10-09 | 深圳市茁壮网络股份有限公司 | 一种数据处理方法及装置 |
CN108628551B (zh) * | 2018-05-04 | 2021-06-15 | 深圳市茁壮网络股份有限公司 | 一种数据处理方法及装置 |
CN109062514A (zh) * | 2018-08-16 | 2018-12-21 | 郑州云海信息技术有限公司 | 一种基于命名空间的带宽控制方法、装置和存储介质 |
CN109062514B (zh) * | 2018-08-16 | 2021-08-31 | 郑州云海信息技术有限公司 | 一种基于命名空间的带宽控制方法、装置和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105204785B (zh) | 2018-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9256384B2 (en) | Method and system for reducing write latency in a data storage system by using a command-push model | |
CN105204785A (zh) | 一种基于磁盘i/o队列的磁盘阵列写方式选择方法 | |
US20150193154A1 (en) | Data Migration Method, Data Migration Apparatus, and Storage Device | |
US20120303929A1 (en) | Systems, methods, and physical computer storage media to optimize data placement in multi-tiered storage systems | |
CN104639661A (zh) | 分布式存储系统及文件存储和读取方法 | |
TW201235865A (en) | Data structure for tiling and packetizing a sparse matrix | |
CN112799604B (zh) | 一种基于N-Code的RAID6磁盘阵列扩容方法及数据填充方法 | |
CN103150261B (zh) | 用于同时访问多个固态盘的方法与装置 | |
CN111124269B (zh) | 用于存储管理的方法、电子设备和计算机可读存储介质 | |
Zhang et al. | Rethinking RAID-5 data layout for better scalability | |
CN115617742B (zh) | 一种数据缓存的方法、系统、设备和存储介质 | |
CN105224473A (zh) | 一种固态硬盘缓存数据的更新方法及装置 | |
CN103716375A (zh) | 基于分布式缓存的多级财政数据交互方法及系统 | |
CN110770691A (zh) | 混合数据存储阵列 | |
CN107422989A (zh) | 一种Server SAN系统多副本读取方法及存储架构 | |
CN103577337B (zh) | 存储系统的空间分配方法和设备 | |
US10621059B2 (en) | Site recovery solution in a multi-tier storage environment | |
US10572464B2 (en) | Predictable allocation latency in fragmented log structured file systems | |
CN102789370B (zh) | 一种raid阵列同步方法及装置 | |
CN104866243A (zh) | 优化输入输出负载的raid-6横向斜向校验编码及解码方法 | |
CN102103533A (zh) | 一种双盘容错磁盘阵列中单盘重构的方法 | |
CN101251789A (zh) | 廉价磁盘冗余阵列raid5卷快速扩容方法 | |
CN102929813A (zh) | 一种pci-e接口固态硬盘控制器的设计方法 | |
CN104376047A (zh) | 一种基于HBase的大表join方法 | |
CN105204787B (zh) | 一种pcie ssd阵列的数据读方法、系统及读写方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |