CN105138471A - 镜像过程处理方法和装置 - Google Patents
镜像过程处理方法和装置 Download PDFInfo
- Publication number
- CN105138471A CN105138471A CN201510552832.9A CN201510552832A CN105138471A CN 105138471 A CN105138471 A CN 105138471A CN 201510552832 A CN201510552832 A CN 201510552832A CN 105138471 A CN105138471 A CN 105138471A
- Authority
- CN
- China
- Prior art keywords
- data
- queue
- request
- main
- pending
- 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
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种镜像处理方法和装置。涉及计算机应用领域;解决了读写操作产生IO混乱导致数据不一致的问题。该方法包括:接收IO请求;根据接收到IO请求的前后次序将IO请求所请求操作的IO数据排列到主IO队列中;依据所述主IO队列对IO数据依次进行处理。本发明提供的技术方案适用于存储设备,实现了高效可靠的IO操作。
Description
技术领域
本发明涉及计算机应用领域,尤其涉及一种镜像过程处理方法和装置。
背景技术
随着计算机技术的快速发展,数字化信息已经逐步取代纸媒数据,呈现日均指数级增长。海量数据催生了云计算、大数据和海量存储系统的发展,对存储设备和存储应用的需求也越来越高。政府行业、银行系统、电力企业等对数据的安全性和业务连续性有着较高的要求,必须提供在线的数据保护。其中常用的方法为在块设备下发IO时将此IO数据镜像到其他存储介质中,实现数据的实时保护。
块设备的IO(InputOutput,输入输出)类型主要分为读和写两类,IO镜像处理能力远低于CPU处理能力,因此在IO镜像时对同一地址进行读写时就会产生冲突。用户有可能在同一时间对同一逻辑块进行读写操作,此时默认只能进行一个操作,只有当前的操作进行完成后,才能够进行后续的操作,否则会导致对同一逻辑块的IO混乱,即后写的数据先落盘,导致某一时刻的数据不一致。另外如果采用对每个IO都要等上一个IO完成后再进行处理,对于不同逻辑块的IO操作又会降低读写效率。
发明内容
本发明提供了一种镜像过程处理方法和装置,解决了
本发明提供了一种镜像过程处理方法,包括:
优选的,根据接收到IO请求的前后次序将IO请求所请求操作的IO数据排列到主IO队列中具体为:
将新接收到的IO请求对应的IO数据添加到所述主IO队列的末尾。
优选的,在依据所述主IO队列对IO请求依次进行处理时,按照先进先出原则对所述主IO队列中的IO请求进行处理。
优选的,根据接收到IO请求的前后次序将IO请求所请求操作的IO数据排列到主IO队列中的步骤之前还包括:
在拷贝IO数据之前,将所述IO数据添加到pending队列中。
优选的,所述依据所述主IO队列对IO请求依次进行处理包括:
从所述主IO队列中取出一个待拷贝IO数据作为第一IO数据;
针对所述第一IO数据,对所述pending队列进行遍历;
对所述pending队列中目的地址与所述第一IO数据相同的一个或多个第二IO数据暂停提交操作;
在所述第一IO数据拷贝完成后,将所述第二IO数据自所述pending队列中取出并加入所述主IO队列末尾。
本发明还提供了一种镜像过程处理装置,包括:
请求接收模块,用于接收IO请求;
管理模块,用于根据接收到IO请求的前后次序将IO请求所请求操作的IO数据排列到主IO队列中;
数据处理模块,用于依据所述主IO队列对IO数据依次进行处理。
优选的,所述管理模块还用于在拷贝IO数据之前,将所述IO数据添加到pending队列中。
优选的,所述管理模块包括:
主队列管理单元,用于从所述主IO队列中取出一个待拷贝IO数据作为第一IO数据,将第二IO数据自所述pending队列中取出并加入所述主IO队列末尾;
pending队列管理单元,用于针对所述第一IO数据,对所述pending队列进行遍历,对所述pending队列中目的地址与所述第一IO数据相同的一个或多个第二IO数据暂停提交操作,在所述第一IO数据拷贝完成后,将所述第二IO数据自所述pending队列中取出。
本发明提供了一种镜像过程处理方法和装置,接收IO请求,在拷贝IO数据之前,将所述IO数据添加到pending队列中,根据接收到IO请求的前后次序将IO请求所请求操作的IO数据排列到主IO队列中,依据所述主IO队列对IO数据依次进行处理。实现了高效可靠的IO操作,解决了读写操作产生IO混乱导致数据不一致的问题。
附图说明
图1为本发明的实施例一中主IO队列入队流程的示意图;
图2为本发明的实施例一中后台IO处理工作队列的流程示意图;
图3为本发明的实施例一中拷贝完成后IO处理的流程图;
图4为本发明的实施例二提供的一种镜像过程处理方法的流程图;
图5为本发明的实施例三提供的一种镜像过程处理装置的结构示意图。
具体实施方式
IO镜像处理能力远低于CPU处理能力,因此在IO镜像时对同一地址进行读写时就会产生冲突。用户有可能在同一时间对同一逻辑块进行读写操作,此时默认只能进行一个操作,只有当前的操作进行完成后,才能够进行后续的操作,否则会导致对同一逻辑块的IO混乱,即后写的数据先落盘,导致某一时刻的数据不一致。另外如果采用对每个IO都要等上一个IO完成后再进行处理,对于不同逻辑块的IO操作又会降低读写效率。
为了解决上述问题,本发明的实施例提供了一种镜像过程处理方法和装置。下面将结合附图及实施例对本发明的技术方案进行更详细的说明。
需要说明的是,如果不冲突,本发明实施例以及实施例中的各个特征可以相互结合,均在本发明的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
通常在IO处理过程中,传统的数据冲突方法为使用任务队列和加锁,但这种处理方式牺牲了IO处理的效率。本发明中,采用主IO队列与pendingIO队列的方式,提高了IO处理效率,也保证了数据处理的正确性。
本发明的实施例中涉及的镜像系统,每个镜像关系包括拷贝的源卷和镜像卷,源卷和镜像卷的大小相同。
本发明的实施例中,将源卷与镜像卷逻辑上划分为大小相同的数据块。
首先结合附图,对本发明的实施例一进行说明。
当镜像IO时,根据IO读写的起始位置和终止位置,将IO内容对齐到数据块。数据块的范围从起始位置所在的数据块到终止位置所在的数据块
如图1所示,此为主IO队列入队操作,此步骤没有其他操作以保证下发的IO能够及时入队。
当镜像系统收到IO时,将IO直接添加到主IO队列中,唤醒工作队列处理主IO队列上的IO。
图2是工作队列处理IO的流程图,工作队列被唤醒之后需要从主队列中取出IO,首先遍历pending队列,查找是否有等待IO操作的逻辑块与所处理的IO逻辑块相同,如果找到则直接将取出的IO入队到pending队列上即可;如果未找到,则判断此IO是否拷贝过,如果拷贝过则直接提交此IO,如果未拷贝过则将此IO入队到pending队列中,然后执行镜像操作。
图3为镜像操作后的IO处理流程图,遍历pending队列,对于操作相同逻辑块的IO进行出队操作,并将IO重新入队到主队列中。
工作队列从主IO队列中出队IO,将IO操作的逻辑块与pending队列上的每个IO要操作的逻辑块进行对比,如果存在对同一逻辑块的操作,则将出队IO入队到pending队列中;如果不存在对同一个逻辑块的操作,则判断此IO是否已经拷贝过,如果拷贝过则直接提交此IO,如果未拷贝过则将此IO入队pending队列中,然后进行拷贝操作。
本发明实施例在IO拷贝结束后的回调函数中,添加处理方式,遍历pending队列,将拷贝IO所操作的逻辑块与pending队列上的IO操作的逻辑块进行比较,将相同逻辑块的IO从pending队列出队并入队到主IO队列中,并唤醒工作队列处理主IO队列上的IO。
在本发明实施例中,主IO队列为处理队列,所有IO提交操作都在主IO队列上进行,pending队列为冲突处理队列,将有冲突的IO缓存,等待拷贝IO完成后,将所有冲突IO移到主队列中继续进行处理。
下面结合附图,对本发明的实施例二进行说明。
本发明实施例提供了一种镜像过程处理方法,具体流程如图4所示,包括:
步骤401、接收IO请求;
步骤402、在拷贝IO数据之前,将所述IO数据添加到pending队列中;
步骤403、根据接收到IO请求的前后次序将IO请求所请求操作的IO数据排列到主IO队列中;
本步骤中,具体的将新接收到的IO请求对应的IO数据添加到所述主IO队列的末尾。
步骤404、依据所述主IO队列对IO数据依次进行处理;
本步骤中,在依据所述主IO队列对IO请求依次进行处理时,按照先进先出原则对所述主IO队列中的IO请求进行处理。
具体的,包括:
1、从所述主IO队列中取出一个待拷贝IO数据作为第一IO数据;
2、针对所述第一IO数据,对所述pending队列进行遍历;
3、对所述pending队列中目的地址与所述第一IO数据相同的一个或多个第二IO数据暂停提交操作;
4、在所述第一IO数据拷贝完成后,将所述第二IO数据自所述pending队列中取出并加入所述主IO队列末尾。
下面结合附图,对本发明的实施例三进行说明。
本发明实施例提供了一种镜像过程处理装置,其结构如图5所示,包括:
请求接收模块501,用于接收IO请求;
管理模块502,用于根据接收到IO请求的前后次序将IO请求所请求操作的IO数据排列到主IO队列中;
数据处理模块503,用于依据所述主IO队列对IO数据依次进行处理。
优选的,所述管理模块502,还用于在拷贝IO数据之前,将所述IO数据添加到pending队列中。
优选的,所述管理模块502包括:
主队列管理单元5021,用于从所述主IO队列中取出一个待拷贝IO数据作为第一IO数据,将第二IO数据自所述pending队列中取出并加入所述主IO队列末尾;
pending队列管理单元5022,用于针对所述第一IO数据,对所述pending队列进行遍历,对所述pending队列中目的地址与所述第一IO数据相同的一个或多个第二IO数据暂停提交操作,在所述第一IO数据拷贝完成后,将所述第二IO数据自所述pending队列中取出。
本发明的实施例提供了一种镜像过程处理方法和装置,接收IO请求,在拷贝IO数据之前,将所述IO数据添加到pending队列中,根据接收到IO请求的前后次序将IO请求所请求操作的IO数据排列到主IO队列中,依据所述主IO队列对IO数据依次进行处理。实现了高效可靠的IO操作,避免了读写操作产生IO混乱导致数据不一致,解决了IO镜像过程中后台数据拷贝效率和冲突问题。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明的权利要求的保护范围。
Claims (8)
1.一种镜像过程处理方法,其特征在于,包括:
接收IO请求;
根据接收到IO请求的前后次序将IO请求所请求操作的IO数据排列到主IO队列中;
依据所述主IO队列对IO数据依次进行处理。
2.根据权利要求1所述的镜像过程处理方法,其特征在于,根据接收到IO请求的前后次序将IO请求所请求操作的IO数据排列到主IO队列中具体为:
将新接收到的IO请求对应的IO数据添加到所述主IO队列的末尾。
3.根据所述权利要求1所述的镜像过程处理方法,其特征在于,在依据所述主IO队列对IO请求依次进行处理时,按照先进先出原则对所述主IO队列中的IO请求进行处理。
4.根据权利要求3所述的镜像过程处理方法,其特征在于,根据接收到IO请求的前后次序将IO请求所请求操作的IO数据排列到主IO队列中的步骤之前还包括:
在拷贝IO数据之前,将所述IO数据添加到pending队列中。
5.根据权利要求4所述的镜像过程处理方法,其特征在于,所述依据所述主IO队列对IO请求依次进行处理包括:
从所述主IO队列中取出一个待拷贝IO数据作为第一IO数据;
针对所述第一IO数据,对所述pending队列进行遍历;
对所述pending队列中目的地址与所述第一IO数据相同的一个或多个第二IO数据暂停提交操作;
在所述第一IO数据拷贝完成后,将所述第二IO数据自所述pending队列中取出并加入所述主IO队列末尾。
6.一种镜像过程处理装置,其特征在于,包括:
请求接收模块,用于接收IO请求;
管理模块,用于根据接收到IO请求的前后次序将IO请求所请求操作的IO数据排列到主IO队列中;
数据处理模块,用于依据所述主IO队列对IO数据依次进行处理。
7.根据权利要求6所述的镜像过程处理装置,其特征在于,
所述管理模块,还用于在拷贝IO数据之前,将所述IO数据添加到pending队列中。
8.根据权利要求7所述的镜像过程处理装置,其特征在于,所述管理模块包括:
主队列管理单元,用于从所述主IO队列中取出一个待拷贝IO数据作为第一IO数据,将第二IO数据自所述pending队列中取出并加入所述主IO队列末尾;
pending队列管理单元,用于针对所述第一IO数据,对所述pending队列进行遍历,对所述pending队列中目的地址与所述第一IO数据相同的一个或多个第二IO数据暂停提交操作,在所述第一IO数据拷贝完成后,将所述第二IO数据自所述pending队列中取出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510552832.9A CN105138471B (zh) | 2015-09-01 | 2015-09-01 | 镜像过程处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510552832.9A CN105138471B (zh) | 2015-09-01 | 2015-09-01 | 镜像过程处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105138471A true CN105138471A (zh) | 2015-12-09 |
CN105138471B CN105138471B (zh) | 2018-04-13 |
Family
ID=54723825
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510552832.9A Active CN105138471B (zh) | 2015-09-01 | 2015-09-01 | 镜像过程处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105138471B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108173892A (zh) * | 2016-12-07 | 2018-06-15 | 腾讯科技(深圳)有限公司 | 云端镜像操作方法和装置 |
CN108304272A (zh) * | 2018-01-19 | 2018-07-20 | 深圳神州数码云科数据技术有限公司 | 一种数据io请求的处理方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103823636A (zh) * | 2012-11-19 | 2014-05-28 | 苏州捷泰科信息技术有限公司 | Io调度方法及装置 |
CN104360966A (zh) * | 2014-11-21 | 2015-02-18 | 浪潮(北京)电子信息产业有限公司 | 对块数据进行输入输出操作的方法和装置 |
CN104360953A (zh) * | 2014-10-16 | 2015-02-18 | 华为技术有限公司 | 数据拷贝方法及装置 |
CN104536919A (zh) * | 2014-12-11 | 2015-04-22 | 浪潮(北京)电子信息产业有限公司 | 一种克隆系统中避免io冲突的方法和装置 |
-
2015
- 2015-09-01 CN CN201510552832.9A patent/CN105138471B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103823636A (zh) * | 2012-11-19 | 2014-05-28 | 苏州捷泰科信息技术有限公司 | Io调度方法及装置 |
CN104360953A (zh) * | 2014-10-16 | 2015-02-18 | 华为技术有限公司 | 数据拷贝方法及装置 |
CN104360966A (zh) * | 2014-11-21 | 2015-02-18 | 浪潮(北京)电子信息产业有限公司 | 对块数据进行输入输出操作的方法和装置 |
CN104536919A (zh) * | 2014-12-11 | 2015-04-22 | 浪潮(北京)电子信息产业有限公司 | 一种克隆系统中避免io冲突的方法和装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108173892A (zh) * | 2016-12-07 | 2018-06-15 | 腾讯科技(深圳)有限公司 | 云端镜像操作方法和装置 |
CN108173892B (zh) * | 2016-12-07 | 2020-11-13 | 腾讯科技(深圳)有限公司 | 云端镜像操作方法和装置 |
CN108304272A (zh) * | 2018-01-19 | 2018-07-20 | 深圳神州数码云科数据技术有限公司 | 一种数据io请求的处理方法及装置 |
CN108304272B (zh) * | 2018-01-19 | 2020-12-15 | 深圳神州数码云科数据技术有限公司 | 一种数据io请求的处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105138471B (zh) | 2018-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2554785C2 (ru) | Поддержание возможности отмены и возврата при объединениях метаданных | |
CN109241015B (zh) | 用于在分布式存储系统中写入数据的方法 | |
US20110252426A1 (en) | Processing batch transactions | |
WO2013012901A1 (en) | Method and apparatus for ssd storage access | |
CN108921552B (zh) | 一种验证证据的方法及装置 | |
CN107092835B (zh) | 一种虚拟存储盘的计算机数据加密装置及方法 | |
CN106855861A (zh) | 一种文件合并方法、装置及电子设备 | |
CN103677674A (zh) | 一种数据处理方法及装置 | |
CN104360914A (zh) | 增量快照方法和装置 | |
CN103034592A (zh) | 数据处理方法和装置 | |
WO2013029434A1 (zh) | 向生产卷写入数据的方法和装置 | |
CN104598161B (zh) | 数据读取、写入方法和装置及数据存储结构 | |
US10983930B1 (en) | Efficient non-transparent bridge (NTB) based data transport | |
CN105138471A (zh) | 镜像过程处理方法和装置 | |
CN109347899B (zh) | 在分布式存储系统中写入日志数据的方法 | |
US20240086113A1 (en) | Synchronous write method and device, storage system and electronic device | |
WO2016091124A1 (zh) | 一种文件截断方法和装置 | |
US20220050701A1 (en) | Open-channel storage device management with ftl on virtual machine | |
CN104268036A (zh) | 一种基于零拷贝的快照卷读方法 | |
CN104572638A (zh) | 数据读写方法及装置 | |
US10447607B2 (en) | System and method for dequeue optimization using conditional iteration | |
CN105260264A (zh) | 一种快照实现方法及快照系统 | |
US20230029728A1 (en) | Per-service storage of attributes | |
WO2021237704A1 (zh) | 数据同步方法及相关装置 | |
US20220083507A1 (en) | Trust chain for official data and documents |
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 |