CN104360966A - 对块数据进行输入输出操作的方法和装置 - Google Patents
对块数据进行输入输出操作的方法和装置 Download PDFInfo
- Publication number
- CN104360966A CN104360966A CN201410677526.3A CN201410677526A CN104360966A CN 104360966 A CN104360966 A CN 104360966A CN 201410677526 A CN201410677526 A CN 201410677526A CN 104360966 A CN104360966 A CN 104360966A
- Authority
- CN
- China
- Prior art keywords
- request
- waiting list
- data block
- release
- mark
- 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
- 238000000034 method Methods 0.000 title claims abstract description 29
- 238000007599 discharging Methods 0.000 claims description 2
- 238000012163 sequencing technique Methods 0.000 claims description 2
- 238000010367 cloning Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
- G06F13/26—Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种处理输入输出冲突的方法和装置,包括接收IO请求,IO请求中包括数据块的块号,将所述数据块的块号作为IO请求的标记;如果存在和IO请求的标记对应的等待队列,根据预先设置的排列策略将IO请求添加到对应的等待队列中;按照排列顺序释放等待队列中的IO请求,并对释放的IO请求的数据块进行IO请求操作。本发明通过对IO请求进行标记,并将该IO请求添加到和该IO请求的标记对应的等待队列中,从等待队列中按照排列顺序获取IO请求进行IO请求操作,解决了对同一块数据进行IO请求操作产生冲突的问题,从而保证了块数据的完整性。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种对数据块进行输入输出(IO,InputOutput)操作的方法和装置。
背景技术
对于块数据的IO操作分为读和写两类,但由于磁盘IO处理能力远低于CPU处理能力,所以在多个功能模块同时对某块数据进行读/写操作时就会产生冲突,例如在克隆、快照等不同功能模块同时进行工作时,有可能在同一时间对同一块数据进行读写操作,比如,在克隆功能进行读取操作时,可能镜像功能正在进行写操作,这种情况下,会导致克隆功能读取的数据可能是不完整甚至是错误的。
发明内容
为了解决上述技术问题,本发明提供了一种对数据块进行输入输出操作的方法和装置,能够避免同时对同一块数据进行IO请求操作产生的冲突,从而保证块数据的完整性。
为了达到本发明目的,本发明提供了一种对数据块进行输入输出操作的方法,包括:接收IO请求,所述IO请求中包括数据块的块号;将所述数据块的块号作为IO请求的标记;如果存在和所述IO请求的标记对应的等待队列,根据预先设置的排列策略将所述IO请求添加到对应的等待队列中;按照排列顺序释放所述等待队列中的IO请求,并对释放的IO请求的数据块进行IO请求操作。
进一步地,所述将所述数据块的块号作为IO请求的标记之后还包括:判断是否存在和所述IO请求的标记对应的等待队列;如果不存在和所述IO请求的标记对应的等待队列,建立和所述IO请求的标记对应的等待队列,并根据预先设置的排列策略将所述IO请求添加到对应的等待队列中。
进一步地,所述排列策略包括:按照进入等待队列的时间顺序排列,或者,按照IO请求的数据块的优先等级排列。
进一步地,所述对释放的IO请求的数据块进行IO请求操作之后还包括:判断所述IO请求操作发生错误是否发生错误;如果所述IO请求操作发生错误,将所述等待队列中的所有IO请求置成错误并结束本流程。
进一步地,所述对释放的IO请求的数据块进行IO请求操作之后还包括:在所述IO请求操作完成后,如果所述等待队列不为空,触发所述等待队列按照排列顺序释放IO请求,如果所述等待队列为空,结束本流程。
一种对数据块进行输入输出操作的装置,包括:接收模块,用于接收IO请求,所述IO请求中包括数据块的块号;标记模块,用于将所述数据块的块号作为IO请求的标记;第一处理模块,用于如果存在和所述IO请求的标记对应的等待队列,根据预先设置的排列策略将所述IO请求添加到对应的等待队列中;第二处理模块,用于按照排列顺序释放所述等待队列中的IO请求;第三处理模块,用于对释放的IO请求的数据块进行IO请求操作。
进一步地,所述装置还包括:第一判断模块,用于判断是否存在和所述IO请求的标记对应的等待队列;所述第一处理模块,还用于在所述第一判断模块判断出不存在时,建立和所述IO请求的标记对应的等待队列,并根据预先设置的排列策略将所述IO请求添加到对应的等待队列中。
进一步地,所述装置还包括:第二判断模块,用于判断所述等待队列中是否存在其它IO请求;所述第二处理模块,还用于在所述第二判断模块判断出不存在时,释放所述IO请求。
进一步地,所述装置还包括:第三判断模块,用于判断对释放的IO请求的数据块进行的IO请求操作是否发生错误;所述第三处理模块,还用于在所述第三判断模块判断出发生错误时,将所述等待队列中的所有IO请求置成错误并结束处理。
进一步地,所述装置还包括:第四判断模块,用于在所述第三处理模块对释放的IO请求操作完成后,判断所述等待队列是否为空;第四处理模块,用于在所述第四判断模块判断出不为空时,触发所述第二处理模块按照排列顺序释放等待队列中的IO请求;在所述第四判断模块判断出为空时,结束处理。
与现有技术相比,本发明包括:接收IO请求,所述IO请求中包括数据块的块号;将所述数据块的块号作为IO请求的标记;如果存在和所述IO请求的标记对应的等待队列,根据预先设置的排列策略将所述IO请求添加到对应的等待队列中;按照排列顺序释放所述等待队列中的IO请求,并对释放的IO请求的数据块进行IO请求操作。本发明通过将对同一数据块的IO请求添加到和该IO请求的标记对应的等待队列中,从等待队列中顺序获取IO请求进行IO请求操作,解决了对同一块数据进行IO请求操作产生冲突的问题,从而保证了块数据的完整性。
附图说明
图1是本发明对数据块进行输入输出操作的方法的流程示意图。
图2是本发明对数据块进行输入输出操作的装置的结构示意图。
具体实施方式
下面结合附图对本发明进行进一步的详细说明。通过足够详细的描述这些实施示例,使得本领域技术人员能够实践本发明。在不脱离本发明的主旨和范围的情况下,可以对实施做出逻辑的、实现的和其他的改变。
图1是本发明对数据块进行输入输出操作的方法的流程示意图,如图1所示,包括:
步骤11,接收IO请求,该IO请求中包括数据块的块号。
在本步骤中,接收来自功能模块的IO请求,因为每个数据块都具有块号,该块号以逻辑单元号(LUN,Logical Unit Number)为单位,所以IO请求中包括所请求进行IO操作的数据块的块号。
步骤12,将该IO请求中数据块的块号作为该IO请求的标记。
步骤13,判断是否存在和该IO请求的标记对应的等待队列,如果不存在,进入步骤14;如果存在,进入步骤15。
步骤14,建立和该IO请求的数据块的标记对应的等待队列。
步骤15,根据预先设置的排列策略将该IO请求添加到对应的等待队列中。
在本步骤中,等待队列中的IO请求可以根据进入时间顺序排列,当然也可以有其它的排列方式,例如IO请求的数据块的优先等级等,在此不限制。
步骤16,判断等待队列中是否存在其它IO请求,如果是,进入步骤17;如果否,进入步骤18。
步骤17,按照排列顺序释放等待队列中的IO请求,进入步骤19。
步骤18,释放该IO请求;
步骤19,对释放的IO请求的数据块进行IO请求操作。
步骤20,判断该IO请求操作是否发生错误,如果是,进入步骤21;如果否,进入步骤22。
步骤21,将该等待队列中的所有IO请求置成错误,并结束本流程。
在本步骤中,如果在进行IO请求操作时发生错误,例如无法进行读操作或者写操作,需要释放等待队列中的IO请求,但因为已经发生错误,则将等待队列中的所有IO请求都置成错误,以防止发生数据不一致的问题。
步骤22,该IO请求操作完成后,判断等待队列是否为空,如果是,结束本流程;如果否,返回步骤17。
本发明通过对IO请求进行块号标记,并将该IO请求添加到和该IO请求的块号标记对应的等待队列中,从等待队列中顺序获取IO请求进行IO请求操作,解决了对同一块数据进行IO请求操作产生冲突的问题,保证了块数据的完整性。
图2是本发明对数据块进行输入输出操作的装置的结构示意图,如图2所示,包括:
接收模块,用于接收IO请求,该IO请求中包括数据块的块号。
标记模块,用于根据该数据块的块号,对该IO请求进行标记,具体地,将该IO请求中数据块的块号作为该IO请求的标记。
第一判断模块,用于判断是否存在和该IO请求的标记对应的等待队列。
第一处理模块,用于在第一判断模块判断出存在时,根据预先设置的排列策略将该IO请求添加到对应的等待队列中;在第一判断模块判断出不存在时,建立和该IO请求的数据块的标记对应的等待队列,并根据预先设置的排列策略将该IO请求添加到对应的等待队列中。
第二判断模块,用于判断等待队列中是否存在其它IO请求。
第二处理模块,用于在第二判断模块判断出不存在时,释放该IO请求;在第二判断模块判断出存在时,按照排列顺序释放所述等待队列中的IO请求。
第三判断模块,用于判断对释放的IO请求的数据块进行的IO请求操作是否发生错误。
第三处理模块,用于对释放的IO请求的数据块进行IO请求操作,如果第三判断模块判断出发生错误,将该等待队列中的所有IO请求置成错误,并结束处理。
第四判断模块,用于在对释放的IO请求操作完成后,判断等待队列是否为空。
第四处理模块,用于在第四判断模块判断出不为空时,触发第二处理模块按照排列顺序释放等待队列中的IO请求;在第四判断模块判断出为空时,结束处理。
本发明的对数据块进行输入输出操作的装置是和对数据块进行输入输出操作的方法对应的,因此,对数据块进行输入输出操作的装置具体的实现细节可参看对数据块进行输入输出操作的方法,在此不赘述。
本发明通过对IO请求进行块号标记,并将该IO请求添加到和该IO请求的块号标记对应的等待队列中,从等待队列中顺序获取IO请求进行IO请求操作,解决了对同一块数据进行IO请求操作产生冲突的问题,保证了块数据的完整性。
应当理解,虽然本说明书根据实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用于限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
Claims (10)
1.一种对数据块进行输入输出操作的方法,其特征在于,包括:
接收IO请求,所述IO请求中包括数据块的块号;
将所述数据块的块号作为IO请求的标记;
如果存在和所述IO请求的标记对应的等待队列,根据预先设置的排列策略将所述IO请求添加到对应的等待队列中;
按照排列顺序释放所述等待队列中的IO请求,并对释放的IO请求的数据块进行IO请求操作。
2.根据权利要求1所述的方法,其特征在于,所述将所述数据块的块号作为IO请求的标记之后还包括:判断是否存在和所述IO请求的标记对应的等待队列;
如果不存在和所述IO请求的标记对应的等待队列,建立和所述IO请求的标记对应的等待队列,并根据预先设置的排列策略将所述IO请求添加到对应的等待队列中。
3.根据权利要求1所述的方法,其特征在于,所述排列策略包括:按照进入等待队列的时间顺序排列,或者,按照IO请求的数据块的优先等级排列。
4.根据权利要求1~3中任一项所述的方法,其特征在于,所述对释放的IO请求的数据块进行IO请求操作之后还包括:判断所述IO请求操作发生错误是否发生错误;
如果所述IO请求操作发生错误,将所述等待队列中的所有IO请求置成错误并结束本流程。
5.根据权利要求4所述的方法,其特征在于,所述对释放的IO请求的数据块进行IO请求操作之后还包括:
在所述IO请求操作完成后,如果所述等待队列不为空,触发所述等待队列按照排列顺序释放IO请求,如果所述等待队列为空,结束本流程。
6.一种对数据块进行输入输出操作的装置,其特征在于,包括:
接收模块,用于接收IO请求,所述IO请求中包括数据块的块号;
标记模块,用于将所述数据块的块号作为IO请求的标记;
第一处理模块,用于如果存在和所述IO请求的标记对应的等待队列,根据预先设置的排列策略将所述IO请求添加到对应的等待队列中;
第二处理模块,用于按照排列顺序释放所述等待队列中的IO请求;
第三处理模块,用于对释放的IO请求的数据块进行IO请求操作。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:第一判断模块,用于判断是否存在和所述IO请求的标记对应的等待队列;
所述第一处理模块,还用于在所述第一判断模块判断出不存在时,建立和所述IO请求的标记对应的等待队列,并根据预先设置的排列策略将所述IO请求添加到对应的等待队列中。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:第二判断模块,用于判断所述等待队列中是否存在其它IO请求;
所述第二处理模块,还用于在所述第二判断模块判断出不存在时,释放所述IO请求。
9.根据权利要求6~8中任一项所述的装置,其特征在于,所述装置还包括:第三判断模块,用于判断对释放的IO请求的数据块进行的IO请求操作是否发生错误;
所述第三处理模块,还用于在所述第三判断模块判断出发生错误时,将所述等待队列中的所有IO请求置成错误并结束处理。
10.根据权利要求9中所述的装置,其特征在于,所述装置还包括:第四判断模块,用于在所述第三处理模块对释放的IO请求操作完成后,判断所述等待队列是否为空;
第四处理模块,用于在所述第四判断模块判断出不为空时,触发所述第二处理模块按照排列顺序释放等待队列中的IO请求;在所述第四判断模块判断出为空时,结束处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410677526.3A CN104360966B (zh) | 2014-11-21 | 2014-11-21 | 对块数据进行输入输出操作的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410677526.3A CN104360966B (zh) | 2014-11-21 | 2014-11-21 | 对块数据进行输入输出操作的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104360966A true CN104360966A (zh) | 2015-02-18 |
CN104360966B CN104360966B (zh) | 2017-12-12 |
Family
ID=52528230
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410677526.3A Active CN104360966B (zh) | 2014-11-21 | 2014-11-21 | 对块数据进行输入输出操作的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104360966B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105138471A (zh) * | 2015-09-01 | 2015-12-09 | 浪潮(北京)电子信息产业有限公司 | 镜像过程处理方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6539457B1 (en) * | 2000-02-21 | 2003-03-25 | Hewlett-Packard Company | Cache address conflict mechanism without store buffers |
CN1545033A (zh) * | 2003-11-14 | 2004-11-10 | 清华大学 | Fc-san存储子系统的lun cache方法 |
CN101038571A (zh) * | 2007-04-19 | 2007-09-19 | 北京理工大学 | 一种块传输的多端口存储控制器 |
CN103257935A (zh) * | 2013-04-19 | 2013-08-21 | 华中科技大学 | 一种缓存管理方法及其应用 |
CN103823636A (zh) * | 2012-11-19 | 2014-05-28 | 苏州捷泰科信息技术有限公司 | Io调度方法及装置 |
-
2014
- 2014-11-21 CN CN201410677526.3A patent/CN104360966B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6539457B1 (en) * | 2000-02-21 | 2003-03-25 | Hewlett-Packard Company | Cache address conflict mechanism without store buffers |
CN1545033A (zh) * | 2003-11-14 | 2004-11-10 | 清华大学 | Fc-san存储子系统的lun cache方法 |
CN101038571A (zh) * | 2007-04-19 | 2007-09-19 | 北京理工大学 | 一种块传输的多端口存储控制器 |
CN103823636A (zh) * | 2012-11-19 | 2014-05-28 | 苏州捷泰科信息技术有限公司 | Io调度方法及装置 |
CN103257935A (zh) * | 2013-04-19 | 2013-08-21 | 华中科技大学 | 一种缓存管理方法及其应用 |
Non-Patent Citations (1)
Title |
---|
郝玉琨: "再读simpledb之事务管理的实现(1)", 《博客园》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105138471A (zh) * | 2015-09-01 | 2015-12-09 | 浪潮(北京)电子信息产业有限公司 | 镜像过程处理方法和装置 |
CN105138471B (zh) * | 2015-09-01 | 2018-04-13 | 浪潮(北京)电子信息产业有限公司 | 镜像过程处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104360966B (zh) | 2017-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101867417B (zh) | 基于光纤多路耦合的单向传输方法 | |
CN103559098B (zh) | 智能卡测试号码控制方法、装置及系统 | |
CN104010077B (zh) | 一种信息处理方法及电子设备 | |
WO2015188586A1 (zh) | 数据传输方法及电子设备、usb设备、存储介质 | |
CN101692213B (zh) | 通用串行总线主机控制方法和通用串行总线主机控制器 | |
CN103488516A (zh) | 一种系统修复方法及电子设备 | |
CN107194658A (zh) | 微服务系统的项目迭代分支管理方法 | |
CN105243042A (zh) | 数据烧录方法和数据烧录装置 | |
CN104360966A (zh) | 对块数据进行输入输出操作的方法和装置 | |
CN109995548B (zh) | 设备管理方法、系统和数据传输方法、系统及终端设备 | |
CN109656769A (zh) | 一种Android通讯终端硬件测试方法、测试工艺以及整机测试流程 | |
CN116776788B (zh) | 上下文切换验证方法及装置 | |
CN101971562B (zh) | 控制自动运行过程执行的方法、装置及系统 | |
CN104834586A (zh) | 安卓界面自动化测试方法、装置及系统 | |
CN110515604A (zh) | 验证环境的可执行程序文件的获取方法及装置 | |
CN105872278A (zh) | 一种usb数据的无线传输方法、摄像头及系统 | |
CN105868099A (zh) | 分支提交差异检测方法及装置 | |
CN105068903A (zh) | 一种硬盘检测修复系统和装置 | |
EP2947566B1 (en) | Methods and apparatus to use an access triggered computer architecture | |
US9838229B2 (en) | Method for verifying the functionality of a digital circuit | |
CN104809038B (zh) | 一种fifo异常处理方法及装置 | |
CN106980588A (zh) | 一种设备热处理方法和装置 | |
CN103645966A (zh) | Wat测试程式的备份方法和备份装置 | |
CN104462674B (zh) | 验证芯片设计的方法 | |
CN104978208A (zh) | 一种热重启方法及其装置 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20180827 Address after: 200436 Room 411, No. three, JIANGCHANG Road, Jingan District, Shanghai, 411 Patentee after: Shanghai wave Cloud Computing Service Co., Ltd. Address before: 100085 floor 1, C 2-1, No. 2, Shang Di Road, Haidian District, Beijing. Patentee before: Electronic information industry Co.,Ltd of the tide (Beijing) |