CN105204785B - 一种基于磁盘i/o队列的磁盘阵列写方式选择方法 - Google Patents
一种基于磁盘i/o队列的磁盘阵列写方式选择方法 Download PDFInfo
- Publication number
- CN105204785B CN105204785B CN201510681425.8A CN201510681425A CN105204785B CN 105204785 B CN105204785 B CN 105204785B CN 201510681425 A CN201510681425 A CN 201510681425A CN 105204785 B CN105204785 B CN 105204785B
- Authority
- CN
- China
- Prior art keywords
- write
- read
- mode
- queue
- disk
- 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.)
- Active
Links
Landscapes
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明公开了一种基于磁盘I/O队列的磁盘阵列写方式选择方法,特征是包括设计存储结构、计算预读请求个数、写方式选择策略和维护存储结构;在处理写请求和更新校验块时,根据下层磁盘上的I/O队列中的读请求个数和写请求个数计算最大磁盘I/O队列预算延迟,抉择写方式。与传统的磁盘阵列写方式选择相比,在保证系统可以承受的负载下避免了某一磁盘负载过多,而其他磁盘比较空闲的这种情况,增强了磁盘阵列的并行性,缩短了请求的平均响应时间,并提高了系统的带宽。
Description
技术领域
本发明属于计算机磁盘阵列技术领域,具体涉及通过磁盘输入/输出(I/O)队列实现高效磁盘阵列写方式选择方法。
背景技术
美国计算机协会出版的《1988年ACM SIGMOD国际会议上的数据管理的会议记录》(Proceedings of the 1988 ACM SIGMOD international conference on Management ofdata,1988年第1版,第109~116页)所介绍的磁盘阵列(A Case for Redundant Arrays ofInexpensive Disks(RAID))充分利用每个磁盘的并行性,并引进校验块(parity)保证数据的安全性。在实现RAID技术的Linux操作系统内核中,对每一个条带上的写方式有两种选择,分别是“读-改-写”(read-modify-write)方式和“读-重构-写”(read-construct-write)方式。自Linux 2.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 CN105204785A (zh) | 2015-12-30 |
CN105204785B true 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) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106293511B (zh) * | 2016-07-26 | 2018-12-04 | 北京理工大学 | 一种面向连续数据存储的动态局部并行数据布局方法 |
CN106406761A (zh) * | 2016-09-18 | 2017-02-15 | 安徽爱她有果电子商务有限公司 | 一种网络计算机存储系统排队方法 |
CN108628551B (zh) * | 2018-05-04 | 2021-06-15 | 深圳市茁壮网络股份有限公司 | 一种数据处理方法及装置 |
CN109062514B (zh) * | 2018-08-16 | 2021-08-31 | 郑州云海信息技术有限公司 | 一种基于命名空间的带宽控制方法、装置和存储介质 |
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 | 成都博元时代软件有限公司 | 一种安全备份数据的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105204785A (zh) | 2015-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9733844B2 (en) | Data migration method, data migration apparatus, and storage device | |
CN105204785B (zh) | 一种基于磁盘i/o队列的磁盘阵列写方式选择方法 | |
US8751699B1 (en) | Systems and methods for indication of activity status of a storage device | |
US8719645B2 (en) | Runtime dynamic performance skew elimination | |
US9256384B2 (en) | Method and system for reducing write latency in a data storage system by using a command-push model | |
US7370145B2 (en) | Write back method for RAID apparatus | |
CN101604226B (zh) | 一种基于虚拟raid构建动态缓存池提高存储系统性能的方法 | |
US20130262762A1 (en) | Storage system and storage control method | |
US10209898B2 (en) | Estimation of performance utilization of a storage device | |
US20080183871A1 (en) | Storage system comprising function for alleviating performance bottleneck | |
US10592365B2 (en) | Method and apparatus for managing storage system | |
US20180300066A1 (en) | Method and device for managing disk pool | |
WO2017092480A1 (zh) | 一种数据迁移的方法及装置 | |
US20100115205A1 (en) | System, method, and computer-readable medium for spool cache management | |
JP2006171957A (ja) | ストレージ制御装置および方法 | |
CN111124269B (zh) | 用于存储管理的方法、电子设备和计算机可读存储介质 | |
CN103577115B (zh) | 数据的排布处理方法、装置和服务器 | |
US10324794B2 (en) | Method for storage management and storage device | |
CN101840312B (zh) | 一种用于多核处理器的raid5写数据方法及装置 | |
JP5471822B2 (ja) | 入出力制御プログラム、情報処理装置および入出力制御方法 | |
CN110058960A (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
CN115617742A (zh) | 一种数据缓存的方法、系统、设备和存储介质 | |
CN103577337B (zh) | 存储系统的空间分配方法和设备 | |
JP3431581B2 (ja) | ディスク制御システムおよびデータ再配置方法 | |
US20170160784A1 (en) | Storage system bandwidth determination |
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 |