CN115840540A - Raid阵列扩容方法、装置、设备、raid卡及介质 - Google Patents
Raid阵列扩容方法、装置、设备、raid卡及介质 Download PDFInfo
- Publication number
- CN115840540A CN115840540A CN202310154926.5A CN202310154926A CN115840540A CN 115840540 A CN115840540 A CN 115840540A CN 202310154926 A CN202310154926 A CN 202310154926A CN 115840540 A CN115840540 A CN 115840540A
- Authority
- CN
- China
- Prior art keywords
- pointer
- data
- stripe
- target
- raid array
- 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 91
- 230000005012 migration Effects 0.000 claims abstract description 108
- 238000013508 migration Methods 0.000 claims abstract description 108
- 238000012545 processing Methods 0.000 claims abstract description 26
- 238000005192 partition Methods 0.000 claims description 52
- 238000004590 computer program Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 8
- 239000000725 suspension Substances 0.000 claims description 8
- 230000008569 process Effects 0.000 abstract description 15
- 238000010586 diagram Methods 0.000 description 13
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 8
- 230000001133 acceleration Effects 0.000 description 6
- 238000007726 management method Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000012005 ligant binding assay Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种RAID阵列扩容方法、装置、设备、RAID卡及介质,属于分布式存储系统领域,用于对RAID阵列进行扩容。本申请中通过维护两个指针的移动便可以有序的区分已进行数据迁移的条带、正在进行数据迁移的条带以及未进行数据迁移的条带,同时提升了RAID阵列扩容的数据安全性以及处理效率,且可以在扩容过程中,基于两个指针明确各个条带的状态,从而为“扩容过程中对于RAID阵列的其他操作的执行”创造了条件。
Description
技术领域
本发明涉及分布式存储系统领域,特别是涉及一种RAID阵列扩容方法,本发明还涉及一种RAID阵列扩容装置、设备、RAID卡及计算机可读存储介质。
背景技术
物理连接层面来讲,RAID(Redundant Arrays of Independent Disks,磁盘阵列)卡就是实现将服务器连接的硬盘按照RAID级别组织成多个RAID阵列的功能板卡,RAID卡除了在处理主机下发的前台I/O(Input/Output,输入输出)任务时保证数据安全性和I/O性能外,当RAID卡中的某个RAID阵列被加入新的硬盘后,RAID卡还需要执行扩容任务,也即对“被加入新硬盘的RAID阵列”进行数据迁移,然而现有技术中缺少一种成熟的RAID阵列扩容方法,导致扩容过程中的数据安全性以及处理效率较差,且在扩容过程中无法对RAID阵列中的数据执行除扩容任务外的其他操作。
因此,如何提供一种解决上述技术问题的方案是本领域技术人员目前需要解决的问题。
发明内容
本发明的目的是提供一种RAID阵列扩容方法,通过维护两个指针的移动便可以有序的区分已进行数据迁移的条带、正在进行数据迁移的条带以及未进行数据迁移的条带,同时提升了RAID阵列扩容的数据安全性以及处理效率;本发明的另一目的是提供一种RAID阵列扩容装置、设备、RAID卡及计算机可读存储介质,通过维护两个指针的移动便可以有序的区分已进行数据迁移的条带、正在进行数据迁移的条带以及未进行数据迁移的条带,同时提升了RAID阵列扩容的数据安全性以及处理效率。
为解决上述技术问题,本发明提供了一种RAID阵列扩容方法,包括:
响应于扩容指令,将第一指针标记于目标RAID阵列当前所有硬盘中的起始条带,将第二指针标记于与所述第一指针间隔第一预设数量个条带的条带;
对位于所述第一指针以及所述第二指针之间的条带进行数据迁移;
在所述第一指针所在条带的数据迁移完成时,控制所述第一指针以及所述第二指针均向所述第二指针背离所述第一指针的方向移动一个条带;
在所述第一指针以及所述第二指针均位于所述目标RAID阵列当前所有硬盘中的终止条带时,结束对所述目标RAID阵列的扩容任务;
其中,所述目标RAID阵列当前所有硬盘中的最小逻辑分块地址LBA以及最大LBA中的一者所在的条带作为所述起始条带,另一者所在条带作为所述终止条带,所述第一指针以及所述第二指针均在移动至所述终止条带时停止移动。
优选地,所述响应于扩容指令,将第一指针标记于目标RAID阵列当前所有硬盘中的起始条带,将第二指针标记于与所述第一指针间隔第一预设数量个条带的条带具体为:
响应于扩容指令,将目标RAID阵列的读写模式设置为写通模式;
将第一指针标记于目标RAID阵列当前所有硬盘中的起始条带,将第二指针标记于与所述第一指针间隔第一预设数量个条带的条带。
优选地,所述响应于扩容指令,将第一指针标记于目标RAID阵列当前所有硬盘中的起始条带,将第二指针标记于与所述第一指针间隔第一预设数量个条带的条带之后,该RAID阵列扩容方法还包括:
判断最新接收到的待处理输入输出IO数据的目标LBA对应分块所在条带是否位于当前所述第一指针以及所述第二指针之间;
若位于,则将所述待处理IO数据加入等待队列;
在所述等待队列中的所述目标LBA对应分块所在条带不位于当前所述第一指针以及所述第二指针之间时,处理所述等待队列中与所述目标LBA对应的待处理IO数据。
优选地,所述在所述等待队列中的所述目标LBA对应分块所在条带不位于当前所述第一指针以及所述第二指针之间时,处理所述等待队列中与所述目标LBA对应的待处理IO数据具体为:
在所述第一指针所在条带的数据迁移完成时,判断当前所述等待队列中是否存在,所述目标LBA位于最新完成数据迁移的条带的所述待处理IO数据;
若存在,则处理所述等待队列中,所述目标LBA位于最新完成数据迁移的条带的所述待处理IO数据。
优选地,所述判断最新接收到的待处理IO数据的目标LBA对应分块所在条带是否位于当前所述第一指针以及所述第二指针之间之后,该RAID阵列扩容方法还包括:
若不位于,判断所述最新接收到的所述待处理IO数据的目标LBA对应分块所在条带是否进行过数据迁移;
若进行过,则根据所述目标RAID阵列当前进行数据迁移后的几何分布确定出所述目标LBA对应的目标分块;
若未进行过,则根据所述目标RAID阵列未进行数据迁移时的几何分布确定出所述目标LBA对应的目标分块;
在所述目标分块中处理所述待处理IO数据。
优选地,该RAID阵列扩容方法还包括:
确定出所述目标RAID阵列中所有条带被当前所述第一指针以及所述第二指针划分得到的三个条带分区;
确定出最新接收到的待处理IO数据的目标LBA对应分块所在条带所属的所述条带分区;
为所述最新接收到的待处理IO数据加上该待处理IO数据所属的所述条带分区对应的标识;
其中,所述第一指针以及所述第二指针之间所有的条带属于扩容区,从所述第一指针起,至所述第一指针背离所述第二指针方向的所有条带属于完成区,从所述第二指针起,至所述第二指针背离所述第一指针方向的所有条带属于挂起区;
所述判断最新接收到的待处理输入输出IO数据的目标LBA对应分块所在条带是否位于当前所述第一指针以及所述第二指针之间具体为:
判断最新接收到的待处理IO数据的标识是否为所述扩容区对应的标识;
所述判断所述最新接收到的所述待处理IO数据的目标LBA对应分块所在条带是否进行过数据迁移具体为:
判断所述最新接收到的所述待处理IO数据的标识是否为所述完成区对应的标识;
若为所述完成区对应的标识,则判定进行过数据迁移;
若不为所述完成区对应的标识,则判定未进行过数据迁移。
优选地,所述判断最新接收到的待处理IO数据的标识是否为所述扩容区对应的标识之前,该RAID阵列扩容方法还包括:
根据最新接收到的待处理IO数据的目标LBA确定出所述最新接收到的所述待处理IO数据所属的目标条带分区;
判断所述最新接收到的待处理输入输出IO数据的标识是否为所述目标条带分区对应的标识;
若是,则执行所述判断最新接收到的待处理IO数据的标识是否为所述扩容区对应的标识的步骤。
优选地,所述判断所述最新接收到的待处理输入输出IO数据的标识是否为所述目标条带分区对应的标识之后,该RAID阵列扩容方法还包括:
若否,则控制提示器提示所述最新接收到的待处理IO数据的标识错误。
优选地,所述确定出所述目标RAID阵列中所有条带被当前所述第一指针以及所述第二指针划分得到的三个条带分区之后,该RAID阵列扩容方法还包括:
将所述目标RAID阵列中的每个条带分别加上每个条带自身所属的所述条带分区对应的标识;
所述根据所述目标RAID阵列当前进行数据迁移后的几何分布确定出所述目标LBA对应的目标分块,以及所述根据所述目标RAID阵列未进行数据迁移时的几何分布确定出所述目标LBA对应的目标分块之后,所述在所述目标分块中处理所述待处理IO数据之前,该RAID阵列扩容方法还包括:
判断所述最新接收到的所述待处理IO数据的标识,与该待处理IO数据对应的所述目标分块所在条带的标识是否一致;
若一致,则执行所述在所述目标分块中处理所述待处理IO数据的步骤;
若不一致,则控制提示器提示错误。
优选地,所述判断最新接收到的待处理输入输出IO数据的目标LBA对应分块所在条带是否位于当前所述第一指针以及所述第二指针之间之后,所述将所述待处理IO数据加入等待队列之前,该RAID阵列扩容方法还包括:
若位于,判断所述最新接收到的所述待处理IO数据的标识,与该待处理IO数据的目标LBA对应分块所在条带的标识是否一致;
若一致,则执行所述将所述待处理IO数据加入等待队列的步骤;
若不一致,则控制提示器提示错误。
优选地,所述判断所述最新接收到的所述待处理IO数据的标识,与该待处理IO数据对应的所述目标分块所在条带的标识是否一致之后,所述在所述目标分块中处理所述待处理IO数据之前,该RAID阵列扩容方法还包括:
将所述最新接收到的所述待处理IO数据对应的所述目标分块所在条带锁定,以免被除所述待处理IO数据外的数据更改。
优选地,所述对位于所述第一指针以及所述第二指针之间的条带进行数据迁移具体为:
将位于所述第一指针以及所述第二指针之间的条带进行锁定;
对位于所述第一指针以及所述第二指针之间的被锁定的条带进行数据迁移。
优选地,所述第一指针以及所述第二指针均为无符号四字节数据;
所述标识均为2个比特位的数据。
优选地,所述第一指针以及所述第二指针均被维护于RAID卡中的第一硬件模块;
所述标识均被维护于RAID卡中的第二硬件模块。
优选地,该RAID阵列扩容方法还包括:
判断所述目标RAID阵列的扩容任务的持续时长是否达到预设时长;
若达到,则控制提示器提示所述扩容任务超时。
优选地,所述目标RAID阵列中的每个条带均包含第二预设数量个子条带;
所述对位于所述第一指针以及所述第二指针之间的条带进行数据迁移具体为:
通过与每个子条带一一对应的线程,同时对位于所述第一指针以及所述第二指针之间的所有子条带进行数据迁移。
为解决上述技术问题,本发明还提供了一种RAID阵列扩容装置,该RAID阵列扩容装置包括:
初始化模块,用于响应于扩容指令,将第一指针标记于目标RAID阵列当前所有硬盘中的起始条带,将第二指针标记于与所述第一指针间隔第一预设数量个条带的条带;
迁移模块,用于对位于所述第一指针以及所述第二指针之间的条带进行数据迁移;
控制模块,用于在所述第一指针所在条带的数据迁移完成时,控制所述第一指针以及所述第二指针均向所述第二指针背离所述第一指针的方向移动一个条带;
结束模块,用于在所述第一指针以及所述第二指针均位于所述目标RAID阵列当前所有硬盘中的终止条带时,结束对所述目标RAID阵列的扩容任务;
其中,所述目标RAID阵列当前所有硬盘中的最小LBA以及最大LBA中的一者所在的条带作为所述起始条带,另一者所在条带作为所述终止条带,所述第一指针以及所述第二指针均在移动至所述终止条带时停止移动。
为解决上述技术问题,本发明还提供了一种RAID阵列扩容设备,该RAID阵列扩容设备包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上所述RAID阵列扩容方法的步骤。
为解决上述技术问题,本发明还提供了一种RAID卡,包括RAID卡本体以及与所述RAID卡本体连接的如上所述的RAID阵列扩容设备。
为解决上述技术问题,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述RAID阵列扩容方法的步骤。
本发明提供了一种RAID阵列扩容方法,为了高效且有序的对RAID阵列进行扩容,本申请中可以维护第一指针以及第二指针两个指针,并在初始时刻将第一指针标记于目标RAID阵列当前所有硬盘中的起始条带,将第二指针标记于与第一指针间隔第一预设数量个条带的条带,并开始对两个指针之间的条带进行数据迁移,并在第一指针所在条带的数据迁移完成时,控制两个指针同时向第二指针背离第一指针的方向移动一个条带,并在两个指针均位于终止条带时结束扩容任务,通过维护两个指针的移动便可以有序的区分已进行数据迁移的条带、正在进行数据迁移的条带以及未进行数据迁移的条带,同时提升了RAID阵列扩容的数据安全性以及处理效率,且可以在扩容过程中,基于两个指针明确各个条带的状态,从而为“扩容过程中对于RAID阵列的其他操作的执行”创造了条件。
本发明还提供了一种RAID阵列扩容装置、设备、RAID卡及计算机可读存储介质,具有如上RAID阵列扩容方法相同的有益效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种RAID阵列扩容方法的流程示意图;
图2为RAID5阵列的扩容流程示意图;
图3为本发明提供的一种存储系统中RAID卡的结构示意图;
图4为本发明提供的一种RAID阵列的指针分区示意图;
图5为本发明提供的一种RAID阵列扩容装置的结构示意图;
图6为本发明提供的一种RAID阵列扩容设备的结构示意图;
图7为本发明提供的一种计算机可读存储介质的结构示意图。
具体实施方式
本发明的核心是提供一种RAID阵列扩容方法,通过维护两个指针的移动便可以有序的区分已进行数据迁移的条带、正在进行数据迁移的条带以及未进行数据迁移的条带,同时提升了RAID阵列扩容的数据安全性以及处理效率;本发明的另一核心是提供一种RAID阵列扩容装置、设备、RAID卡及计算机可读存储介质,通过维护两个指针的移动便可以有序的区分已进行数据迁移的条带、正在进行数据迁移的条带以及未进行数据迁移的条带,同时提升了RAID阵列扩容的数据安全性以及处理效率。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明提供的一种RAID阵列扩容方法的流程示意图,该RAID阵列扩容方法包括:
S101:响应于扩容指令,将第一指针标记于目标RAID阵列当前所有硬盘中的起始条带,将第二指针标记于与第一指针间隔第一预设数量个条带的条带;
具体的,考虑到如上背景技术中的技术问题,又结合考虑到在对目标RAID阵列的所有分块进行数据迁移的整个任务过程中,待处理的条带、正在处理的条带以及处理完成的条带这三部分条带处于动态变化的情况,为了有序的对这三部分条带进行管理,考虑到通过两个指针便可以将目标RAID阵列中的所有条带划分为三个分区,通过对条带位置的维护便可以动态管理扩容任务过程中的待处理的条带、正在处理的条带以及处理完成的条带这三部分条带,因此本发明实施例中可以响应于扩容指令,将第一指针标记于目标RAID阵列当前所有硬盘中的起始条带,将第二指针标记于与第一指针间隔第一预设数量个条带的条带,便于从起始条带这一端开始对目标RAID阵列进行扩容。
其中,第一指针以及第二指针之间的所有条带便属于扩容区的条带,而从第二指针起,向背离第一条带方向的所有区域的条带均属于待处理的条带,也即挂机区,而从第一指针起,向背离第二条带方向的所有区域的条带均属于处理完成的条带,也即完成区,初始时刻下不存在处理完成的条带,因此此时完成区的条带数为零。
具体的,第一预设数量可以进行自主设定,这可以参考执行扩容任务的线程的数量进行设定,本发明实施例在此不做限定。
为了更好地对本发明实施例进行说明,请参考图2至图4,图2为RAID5阵列的扩容流程示意图;图3为本发明提供的一种存储系统中RAID卡的结构示意图,图4为本发明提供的一种RAID阵列的指针分区示意图,图4中展示的并非初始状态下的分区情况,图中的硬盘3可以视作新插入的硬盘,图中LBA(Logical Block Address,逻辑分块地址)为X的分块所在的条带作为起始条带,而LBA为0的分块所在的条带作为终止条带。
具体的,在图2中,当用户通过命令行或图形化界面操作RAID卡进行扩容时,一种情况是RAID卡控制器选择一个RAID5阵列进行扩容,三块硬盘构成的RAID5阵列增加一块硬盘进行扩容,需要进行大量的数据迁移,例如硬盘0中的数据分块Y1需要迁移至硬盘2的Stripe0条带的横行对应分区中,然后重新计算Stripe0条带的校验分块Xp’并写入增加的硬盘3对应分区中。硬盘2中的数据分块Y2需要迁移至硬盘0的Stripe1条带横行对应分区中,硬盘1中的数据分块C1需要迁移至硬盘1的Stripe1条带横行对应分区中,硬盘2中的数据分块C2需要迁移至增加的硬盘3的Stripe1条带横行对应分区中,然后以Stripe1条带横行为单元重新由数据分块Y2、数据分块C1、数据分块C2异或运算求得校验分块Yp’并写入硬盘2的对应分区中。
S102:对位于第一指针以及第二指针之间的条带进行数据迁移;
具体的,本发明实施例中规定两个指针之间所包含的区域为扩容区域,对此区域内的条带执行数据迁移以便开展扩容任务,因此本步骤中可以对位于第一指针以及第二指针之间的条带进行数据迁移,以便有序、高效且安全的开展对于目标RAID阵列的扩容任务。
S103:在第一指针所在条带的数据迁移完成时,控制第一指针以及第二指针均向第二指针背离第一指针的方向移动一个条带;
具体的,为了通过两个指针的动态维护,在扩容任务执行的过程中准确划分三个分区,本发明实施例中可以监测第一指针所在条带的数据迁移的完成情况,在第一指针所在条带的数据迁移完成时,便可以控制第一指针以及第二指针均向第二指针背离第一指针的方向移动一个条带,从图4中可以看出,第一指针以及第二指针可以向上均移动一个条带,从而进行准确分区。
S104:在第一指针以及第二指针均位于目标RAID阵列当前所有硬盘中的终止条带时,结束对目标RAID阵列的扩容任务;
其中,目标RAID阵列当前所有硬盘中的最小逻辑分块地址LBA以及最大LBA中的一者所在的条带作为起始条带,另一者所在条带作为终止条带,第一指针以及第二指针均在移动至终止条带时停止移动。
具体的,扩容结束的判断可以由定时器线程定时判断,定时器线程可以为RAID卡上电初始化时系统拉起来的一个定时器线程,如果判断扩容没有结束则间隔定时器时间继续判断。
具体的,图4中的LBA为0便为目标RAID阵列当前所有硬盘中的最小LBA,LBA为X便为目标RAID阵列当前所有硬盘中的最大LBA,图4中此时选中LBA:0所在的条带为终止条带,因此当指针移动至终止条带时便不再移动,因此最终两个指针都会移动至终止条带,彼时所有的条带便会都处于完成区,因此本发明实施例中可以在第一指针以及第二指针均位于目标RAID阵列当前所有硬盘中的终止条带时,结束对目标RAID阵列的扩容任务。
本发明提供了一种RAID阵列扩容方法,为了高效且有序的对RAID阵列进行扩容,本申请中可以维护第一指针以及第二指针两个指针,并在初始时刻将第一指针标记于目标RAID阵列当前所有硬盘中的起始条带,将第二指针标记于与第一指针间隔第一预设数量个条带的条带,并开始对两个指针之间的条带进行数据迁移,并在第一指针所在条带的数据迁移完成时,控制两个指针同时向第二指针背离第一指针的方向移动一个条带,并在两个指针均位于终止条带时结束扩容任务,通过维护两个指针的移动便可以有序的区分已进行数据迁移的条带、正在进行数据迁移的条带以及未进行数据迁移的条带,同时提升了RAID阵列扩容的数据安全性以及处理效率,且可以在扩容过程中,基于两个指针明确各个条带的状态,从而为“扩容过程中对于RAID阵列的其他操作的执行”创造了条件。
在上述实施例的基础上:
作为一种优选的实施例,响应于扩容指令,将第一指针标记于目标RAID阵列当前所有硬盘中的起始条带,将第二指针标记于与第一指针间隔第一预设数量个条带的条带具体为:
响应于扩容指令,将目标RAID阵列的读写模式设置为写通模式;
将第一指针标记于目标RAID阵列当前所有硬盘中的起始条带,将第二指针标记于与第一指针间隔第一预设数量个条带的条带。
具体的,考虑到在扩容任务执行期间,前台的IO请求会被延迟处理或停滞,为了保证前台接收到的“IO请求是否被处理的结果”的准确性,本发明实施例中可以响应于扩容指令,将目标RAID阵列的读写模式设置为写通模式,然后再将第一指针标记于目标RAID阵列当前所有硬盘中的起始条带,将第二指针标记于与第一指针间隔第一预设数量个条带的条带,在写通模式下,只有当写入请求对应的数据完全写入硬盘,才会向前台反馈IO请求已被处理的信息,保证了信息传递的可靠性,提高了工作效率。
作为一种优选的实施例,响应于扩容指令,将第一指针标记于目标RAID阵列当前所有硬盘中的起始条带,将第二指针标记于与第一指针间隔第一预设数量个条带的条带之后,该RAID阵列扩容方法还包括:
判断最新接收到的待处理输入输出IO数据的目标LBA对应分块所在条带是否位于当前第一指针以及第二指针之间;
若位于,则将待处理IO数据加入等待队列;
在等待队列中的目标LBA对应分块所在条带不位于当前第一指针以及第二指针之间时,处理等待队列中与目标LBA对应的待处理IO数据。
具体的,为了在扩容任务的执行过程中减少对于前台发送的IO请求的影响,本发明实施例中可以判断最新接收到的待处理输入输出IO数据的目标LBA对应分块所在条带是否位于当前第一指针以及第二指针之间,在此考虑到正在进行数据迁移的分块以及条带中的数据不稳定,因此可以先将待处理IO数据加入等待队列,在等待队列中的目标LBA对应分块所在条带不位于当前第一指针以及第二指针之间时,再处理等待队列中与目标LBA对应的待处理IO数据,以便等待队列中的待处理IO数据可以在第一时间被处理,提升了工作效率。
另外,也可以在判定扩容结束后再将等待队列中的I/O任务取出后,取出后的I/O根据扩容后的RAID阵列进行落盘。
作为一种优选的实施例,在等待队列中的目标LBA对应分块所在条带不位于当前第一指针以及第二指针之间时,处理等待队列中与目标LBA对应的待处理IO数据具体为:
在第一指针所在条带的数据迁移完成时,判断当前等待队列中是否存在,目标LBA位于最新完成数据迁移的条带的待处理IO数据;
若存在,则处理等待队列中,目标LBA位于最新完成数据迁移的条带的待处理IO数据。
具体的,为了高效的对等待队列中的待处理IO数据进行处理,本发明实施例中可以在第一指针所在条带的数据迁移完成时,判断当前等待队列中是否存在,目标LBA位于最新完成数据迁移的条带的待处理IO数据;若存在,则处理等待队列中,目标LBA位于最新完成数据迁移的条带的待处理IO数据,从而避免每次都对等待队列中所有的待处理IO数据的目标LBA进行轮询,进一步提高了工作效率。
作为一种优选的实施例,判断最新接收到的待处理IO数据的目标LBA对应分块所在条带是否位于当前第一指针以及第二指针之间之后,该RAID阵列扩容方法还包括:
若不位于,判断最新接收到的待处理IO数据的目标LBA对应分块所在条带是否进行过数据迁移;
若进行过,则根据目标RAID阵列当前进行数据迁移后的几何分布确定出目标LBA对应的目标分块;
若未进行过,则根据目标RAID阵列未进行数据迁移时的几何分布确定出目标LBA对应的目标分块;
在目标分块中处理待处理IO数据。
具体的,考虑到挂起区以及完成区的分块不处于被处理状态,也即这里的分块是稳定的,因此在最新接收到的待处理IO数据的目标LBA对应的分块所在的条带属于挂起区或者完成区时,便可以立即处理该待处理IO数据,又结合考虑到若目标LBA对应的分块属于挂起区,那么其目标分块未进行数据迁移,其目标分块的LBA也未变化,因此可以根据目标RAID阵列未进行数据迁移时的几何分布确定出目标LBA对应的目标分块,而当目标LBA对应的分块属于完成区,那么其目标分块进行过数据迁移,目标分块的LBA也发生了变化,因此可以根据目标RAID阵列当前进行数据迁移后的几何分布确定出目标LBA对应的目标分块,可以准确地找到各个待处理IO数据的目标分块并进行IO处理,提高了数据处理的准确性。
其中,几何分布指的便是目标阵列中各个分块的LBA布局。
作为一种优选的实施例,该RAID阵列扩容方法还包括:
确定出目标RAID阵列中所有条带被当前第一指针以及第二指针划分得到的三个条带分区;
确定出最新接收到的待处理IO数据的目标LBA对应分块所在条带所属的条带分区;
为最新接收到的待处理IO数据加上该待处理IO数据所属的条带分区对应的标识;
其中,第一指针以及第二指针之间所有的条带属于扩容区,从第一指针起,至第一指针背离第二指针方向的所有条带属于完成区,从第二指针起,至第二指针背离第一指针方向的所有条带属于挂起区;
判断最新接收到的待处理输入输出IO数据的目标LBA对应分块所在条带是否位于当前第一指针以及第二指针之间具体为:
判断最新接收到的待处理IO数据的标识是否为扩容区对应的标识;
判断最新接收到的待处理IO数据的目标LBA对应分块所在条带是否进行过数据迁移具体为:
判断最新接收到的待处理IO数据的标识是否为完成区对应的标识;
若为完成区对应的标识,则判定进行过数据迁移;
若不为完成区对应的标识,则判定未进行过数据迁移。
具体的,为了更加明确的表示各个待处理IO数据的目标分块所在的条带分区,本发明实施例中首先可以确定出目标RAID阵列中所有条带被当前第一指针以及第二指针划分得到的三个条带分区,然后可以确定出最新接收到的待处理IO数据的目标LBA对应分块所在条带所属的条带分区,最后可以为最新接收到的待处理IO数据加上该待处理IO数据所属的条带分区对应的标识。
具体的,在有了标识后,也可以实现高效准确的确认各个待处理IO数据所在的分区,进一步提升了工作效率。
作为一种优选的实施例,判断最新接收到的待处理IO数据的标识是否为扩容区对应的标识之前,该RAID阵列扩容方法还包括:
根据最新接收到的待处理IO数据的目标LBA确定出最新接收到的待处理IO数据所属的目标条带分区;
判断最新接收到的待处理输入输出IO数据的标识是否为目标条带分区对应的标识;
若是,则执行判断最新接收到的待处理IO数据的标识是否为扩容区对应的标识的步骤。
具体的,为了保证标识的准确性,从而保证IO操作的准确性,本发明实施例中可以对待处理IO数据的标识进行再次验证,也即根据最新接收到的待处理IO数据的目标LBA确定出最新接收到的待处理IO数据所属的目标条带分区,然后判断最新接收到的待处理输入输出IO数据的标识是否为目标条带分区对应的标识,如果是,那么代表待处理IO数据的标识是准确的,而如果不是,那么便代表待处理IO数据的标识是有误的。
作为一种优选的实施例,判断最新接收到的待处理输入输出IO数据的标识是否为目标条带分区对应的标识之后,该RAID阵列扩容方法还包括:
若否,则控制提示器提示最新接收到的待处理IO数据的标识错误。
具体的,在判定待处理IO数据的标识有误的情况下,为了便于工作人员及时知晓情况并做出应对,本发明实施例中可以在这种情况下,控制提示器提示最新接收到的待处理IO数据的标识错误,有利于提升工作效率。
其中,提示器可以为多种类型,例如可以为显示器等,本发明实施例在此不做限定。
作为一种优选的实施例,确定出目标RAID阵列中所有条带被当前第一指针以及第二指针划分得到的三个条带分区之后,该RAID阵列扩容方法还包括:
将目标RAID阵列中的每个条带分别加上每个条带自身所属的条带分区对应的标识;
根据目标RAID阵列当前进行数据迁移后的几何分布确定出目标LBA对应的目标分块,以及根据目标RAID阵列未进行数据迁移时的几何分布确定出目标LBA对应的目标分块之后,在目标分块中处理待处理IO数据之前,该RAID阵列扩容方法还包括:
判断最新接收到的待处理IO数据的标识,与该待处理IO数据对应的目标分块所在条带的标识是否一致;
若一致,则执行在目标分块中处理待处理IO数据的步骤;
若不一致,则控制提示器提示错误。
具体的,为了进一步加强IO操作的可靠性,本发明实施例中还可以将目标RAID阵列中的每个条带分别加上每个条带自身所属的条带分区对应的标识,如此一来,在接收到待处理IO数据并对其进行处理时,便可以判断最新接收到的待处理IO数据的标识,与该待处理IO数据对应的目标分块所在条带的标识是否一致,如果一致才会对其进行IO操作,不一致的话说明存在问题,这种情况下可以控制提示器提示错误,以免IO操作错误的情况出现。
作为一种优选的实施例,判断最新接收到的待处理输入输出IO数据的目标LBA对应分块所在条带是否位于当前第一指针以及第二指针之间之后,将待处理IO数据加入等待队列之前,该RAID阵列扩容方法还包括:
若位于,判断最新接收到的待处理IO数据的标识,与该待处理IO数据的目标LBA对应分块所在条带的标识是否一致;
若一致,则执行将待处理IO数据加入等待队列的步骤;
若不一致,则控制提示器提示错误。
具体的,为了进一步提升IO操作可靠性,本发明实施例中可以在将待处理IO数据加入等待队列之前,也判断最新接收到的待处理IO数据的标识,与该待处理IO数据的目标LBA对应分块所在条带的标识是否一致,如果一致则可以将待处理IO数据加入等待队列,不一致则可以控制提示器提示错误,进一步提升了IO操作的可靠性。
作为一种优选的实施例,判断最新接收到的待处理IO数据的标识,与该待处理IO数据对应的目标分块所在条带的标识是否一致之后,在目标分块中处理待处理IO数据之前,该RAID阵列扩容方法还包括:
将最新接收到的待处理IO数据对应的目标分块所在条带锁定,以免被除待处理IO数据外的数据更改。
具体的,考虑到在进行数据迁移的过程中,分块不适合再被其他数据所更改,因此本发明实施例中可以在目标分块不属于扩容区时,将最新接收到的待处理IO数据对应的目标分块所在条带锁定,以免被除待处理IO数据外的数据更改。
作为一种优选的实施例,对位于第一指针以及第二指针之间的条带进行数据迁移具体为:
将位于第一指针以及第二指针之间的条带进行锁定;
对位于第一指针以及第二指针之间的被锁定的条带进行数据迁移。
具体的,考虑到在进行数据迁移时,分块同样不适合再被其他数据所更改,因此本发明实施例中可以将位于第一指针以及第二指针之间的条带进行锁定,然后对位于第一指针以及第二指针之间的被锁定的条带进行数据迁移,提升了扩容任务的安全性。
作为一种优选的实施例,第一指针以及第二指针均为两个无符号四字节数据;
标识均为2个比特位的数据。
具体的,为了减少第一指针、第二指针以及标识所占的数据量,本发明实施例中可以使用无符号四字节数据标识第一指针以及第二指针,并使用2个比特位的数据作为标识。
当然,除了该种情况下,第一指针、第二指针以及标识还可以为其他形式,本发明实施例在此不做限定。
作为一种优选的实施例,第一指针以及第二指针均被维护于RAID卡中的第一硬件模块;
标识均被维护于RAID卡中的第二硬件模块。
具体的,为了进一步提升扩容任务的效率,且有效利用RAID卡的硬件优势,本发明实施例中的RAID阵列扩容方法可以应用于RAID卡,第一指针以及第二指针均被维护于RAID卡中的第一硬件模块,标识均被维护于RAID卡中的第二硬件模块,而其他的控制部分可以执行于RAID卡控制器,通过软硬结合的方式有效提升扩容任务的工作效率。
具体的,在软RAID技术中,上述数据迁移和重算校验分块数据的复杂过程可以通过纯软件设计来实现,而在RAID卡硬RAID技术中,如果同样使用纯软件实现则无法体现硬RAID技术的优势(即RAID卡更好的数据安全性和I/O性能)。因此本发明实施例中采用了软硬件结合的方式实现了RAID阵列的扩容任务,具体请参见图3,图3中210指示条带管理硬件模块(也即上述的第一硬件模块)、220指示的引擎加速硬件模块(也即上述的第二硬件模块)。条带管理硬件模块维护两个无符号四字节数据,分别是HWP(High Water Pointer,高水位指针)和LWP(Low Water Pointer,低水位指针)。引擎加速硬件模块维护2个bit位的VID(Validation Identify,有效标识位)。RAID卡中固件层包括驱动程序、RAID卡内核、文件系统、管理监控系统、条带管理硬件模块和引擎加速硬件模块等等(其他部分在图2中没有说明),RAID卡内核和文件系统可以提供对文件和逻辑单元号LUN访问的功能,以及对这些功能的管理。RAID卡中固件层的驱动程序和处理器执行一些程序指令,用于处理主机I/O请求。
其中,第一指针以及第二指针可以分别为LWP以及HWP中的一者,图3中的230指示的磁盘组1构成1号RAID阵列,磁盘组2构成2号RAID阵列,以此类推,磁盘组N构成N号RAID阵列。1号RAID阵列、2号RAID阵列......N号RAID阵列一起构成RAID组。240指示的RAID卡控制器负责RAID卡中的软件处理功能,由RAID卡控制器专门实现软件功能,硬件模块执行一些算法、数据管理以及其他一些功能,以此实现软硬分离,硬件和软件各自独立、平行工作,通过软硬分离系统架构设计提高RAID卡扩容过程中的数据安全性和I/O性能。
为了更好的支持RAID卡在线扩容,首先准备(1)将要进行扩容的RAID组先切换至写通模式(需要将缓存cache中该RAID组的缓存数据先行落盘);其次,(2)利用条带管理硬件模块维护的高水位指针HWP和低水位指针LWP将RAID卡扩容任务划分为完成区、扩容区和挂起区,高水位指针HWP和低水位指针LWP将RAID组的逻辑存储空间分割成三个区域,分别是:
完成区:“低”于LWP区域,该区域内的RAID数据组织结构已经完成扩容;
扩容区:位于LWP和HWP之间,若干连续条带正在进行扩容操作;
挂起区:“高”于HWP区域,该区域内的RAID数据组织结构还是扩容前的。
此处I/O的LBA与LWP和HWP相比的“低”和“高”与扩容的方向相关。
如果是从LBA0开始扩容,那么LWP<HWP,所有LBA小于LWP的区域为完成区;
反之,如果是从最大LABX地址开始扩容,那么LWP>HWP,所有LBA大于LWP区域为完成区。
引擎加速模块维护2个bit位的有效标识位VID(validation identify),2bits:00b-挂起区,01b-完成区,10b-扩容区,11b-留作备用。引擎加速模块依据IO中的LBA同HWP和LWP的实时比较结果,对完整位于挂起区的IO赋值VID=00b值,对完整位于完成区的IO赋值VID=01b值,而其他所有牵扯扩容区的IO都转交给RAID卡控制器处理,RAID卡控制器在收到扩容区的IO时,赋值VID=10b。
当然,除了该种方式外,还可以通过其他硬件实现RAID阵列扩容方法,本发明实施例在此不做限定。
作为一种优选的实施例,该RAID阵列扩容方法还包括:
判断目标RAID阵列的扩容任务的持续时长是否达到预设时长;
若达到,则控制提示器提示扩容任务超时。
具体的,考虑到扩容任务通常都会在一定时间内结束,因此为了及时发现扩容任务超时的情况,本发明实施例中可以判断目标RAID阵列的扩容任务的持续时长是否达到预设时长,如果达到便可以控制提示器提示扩容任务超时,便于工作人员及时处理。
作为一种优选的实施例,目标RAID阵列中的每个条带均包含第二预设数量个子条带;
对位于第一指针以及第二指针之间的条带进行数据迁移具体为:
通过与每个子条带一一对应的线程,同时对位于第一指针以及第二指针之间的所有子条带进行数据迁移。
具体的,为了进一步提升扩容效率,本发明实施例中可以将目标RAID阵列中的每个条带均划分为第二预设数量个子条带,那么便可以通过与每个子条带一一对应的线程,同时对位于第一指针以及第二指针之间的所有子条带进行数据迁移,从而显著提升扩容效率。
具体的,为了实现更安全的扩容区移动,RAID卡控制器可以划分一个较大扩容区,并将其等分成一个扩容并发子区和一个或多个扩容预备子区,每次仅将扩容区窗口移动一个子区的大小,使用该方法可以实现更安全且更方便快捷的扩容区移动。
具体的,本发明实施例的详细设计方案中,通过新增的条带管理硬件模块、引擎加速硬件模块和RAID卡控制器实现扩容区大小的选择,具体来说就是其扩容区的大小需要是扩容前条带数据部分大小和扩容后条带数据部分大小最小公倍数的整数倍即可。同时本发明将条带切分成多个子条带,将条带切分成多个子条带的优势如下:
(1)双指针构成的水位滑动窗口可以选取更小粒度的子条带进行滑动,即水位滑动窗口在滑动过程中可以对窗口滑动进行更精确的控制。
(2)因为条带的粒度比较大,在特定业务下扩容并发子区和扩容预备子区会占用条带的一部分,在这种情况下只占用条带的一部分,因此无法使用条带的一部分构成扩容并发子区和扩容预备子区。所以本发明实施例提出使用子条带,将一个条带等分为多个子条带,可以更好的构造扩容并发子区和一个或多个扩容预备子区。
当然,除了该方式外,对位于第一指针以及第二指针之间的条带进行数据迁移还可以为其他实现方式,本发明实施例在此不做限定。
请参考图5,图5为本发明提供的一种RAID阵列扩容装置的结构示意图,该RAID阵列扩容装置包括:
初始化模块51,用于响应于扩容指令,将第一指针标记于目标RAID阵列当前所有硬盘中的起始条带,将第二指针标记于与第一指针间隔第一预设数量个条带的条带;
迁移模块52,用于对位于第一指针以及第二指针之间的条带进行数据迁移;
控制模块53,用于在第一指针所在条带的数据迁移完成时,控制第一指针以及第二指针均向第二指针背离第一指针的方向移动一个条带;
结束模块54,用于在第一指针以及第二指针均位于目标RAID阵列当前所有硬盘中的终止条带时,结束对目标RAID阵列的扩容任务;
其中,目标RAID阵列当前所有硬盘中的最小LBA以及最大LBA中的一者所在的条带作为起始条带,另一者所在条带作为终止条带,第一指针以及第二指针均在移动至终止条带时停止移动。
本发明提供了一种RAID阵列扩容装置,为了高效且有序的对RAID阵列进行扩容,本申请中可以维护第一指针以及第二指针两个指针,并在初始时刻将第一指针标记于目标RAID阵列当前所有硬盘中的起始条带,将第二指针标记于与第一指针间隔第一预设数量个条带的条带,并开始对两个指针之间的条带进行数据迁移,并在第一指针所在条带的数据迁移完成时,控制两个指针同时向第二指针背离第一指针的方向移动一个条带,并在两个指针均位于终止条带时结束扩容任务,通过维护两个指针的移动便可以有序的区分已进行数据迁移的条带、正在进行数据迁移的条带以及未进行数据迁移的条带,同时提升了RAID阵列扩容的数据安全性以及处理效率,且可以在扩容过程中,基于两个指针明确各个条带的状态,从而为“扩容过程中对于RAID阵列的其他操作的执行”创造了条件。
对于本发明实施例提供的RAID阵列扩容装置的介绍请参照前述的RAID阵列扩容方法的实施例,本发明实施例在此不再赘述。
请参考图6,图6为本发明提供的一种RAID阵列扩容设备的结构示意图,该RAID阵列扩容设备包括:
存储器61,用于存储计算机程序;
处理器62,用于执行计算机程序时实现如前述实施例中RAID阵列扩容方法的步骤。
本发明提供了一种RAID阵列扩容设备,为了高效且有序的对RAID阵列进行扩容,本申请中可以维护第一指针以及第二指针两个指针,并在初始时刻将第一指针标记于目标RAID阵列当前所有硬盘中的起始条带,将第二指针标记于与第一指针间隔第一预设数量个条带的条带,并开始对两个指针之间的条带进行数据迁移,并在第一指针所在条带的数据迁移完成时,控制两个指针同时向第二指针背离第一指针的方向移动一个条带,并在两个指针均位于终止条带时结束扩容任务,通过维护两个指针的移动便可以有序的区分已进行数据迁移的条带、正在进行数据迁移的条带以及未进行数据迁移的条带,同时提升了RAID阵列扩容的数据安全性以及处理效率,且可以在扩容过程中,基于两个指针明确各个条带的状态,从而为“扩容过程中对于RAID阵列的其他操作的执行”创造了条件。
对于本发明实施例提供的RAID阵列扩容设备的介绍请参照前述的RAID阵列扩容方法的实施例,本发明实施例在此不再赘述。
本发明还提供了一种RAID卡,包括RAID卡本体以及与RAID卡本体连接的如前述实施例中的RAID阵列扩容设备。
本发明提供了一种RAID卡,为了高效且有序的对RAID阵列进行扩容,本申请中可以维护第一指针以及第二指针两个指针,并在初始时刻将第一指针标记于目标RAID阵列当前所有硬盘中的起始条带,将第二指针标记于与第一指针间隔第一预设数量个条带的条带,并开始对两个指针之间的条带进行数据迁移,并在第一指针所在条带的数据迁移完成时,控制两个指针同时向第二指针背离第一指针的方向移动一个条带,并在两个指针均位于终止条带时结束扩容任务,通过维护两个指针的移动便可以有序的区分已进行数据迁移的条带、正在进行数据迁移的条带以及未进行数据迁移的条带,同时提升了RAID阵列扩容的数据安全性以及处理效率,且可以在扩容过程中,基于两个指针明确各个条带的状态,从而为“扩容过程中对于RAID阵列的其他操作的执行”创造了条件。
对于本发明实施例提供的RAID卡的介绍请参照前述的RAID阵列扩容方法的实施例,本发明实施例在此不再赘述。
请参考图7,图7为本发明提供的一种计算机可读存储介质的结构示意图,计算机可读存储介质70上存储有计算机程序71,计算机程序71被处理器62执行时实现如前述实施例中RAID阵列扩容方法的步骤。
本发明提供了一种计算机可读存储介质,为了高效且有序的对RAID阵列进行扩容,本申请中可以维护第一指针以及第二指针两个指针,并在初始时刻将第一指针标记于目标RAID阵列当前所有硬盘中的起始条带,将第二指针标记于与第一指针间隔第一预设数量个条带的条带,并开始对两个指针之间的条带进行数据迁移,并在第一指针所在条带的数据迁移完成时,控制两个指针同时向第二指针背离第一指针的方向移动一个条带,并在两个指针均位于终止条带时结束扩容任务,通过维护两个指针的移动便可以有序的区分已进行数据迁移的条带、正在进行数据迁移的条带以及未进行数据迁移的条带,同时提升了RAID阵列扩容的数据安全性以及处理效率,且可以在扩容过程中,基于两个指针明确各个条带的状态,从而为“扩容过程中对于RAID阵列的其他操作的执行”创造了条件。
对于本发明实施例提供的计算机可读存储介质的介绍请参照前述的RAID阵列扩容方法的实施例,本发明实施例在此不再赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (20)
1.一种RAID阵列扩容方法,其特征在于,包括:
响应于扩容指令,将第一指针标记于目标RAID阵列当前所有硬盘中的起始条带,将第二指针标记于与所述第一指针间隔第一预设数量个条带的条带;
对位于所述第一指针以及所述第二指针之间的条带进行数据迁移;
在所述第一指针所在条带的数据迁移完成时,控制所述第一指针以及所述第二指针均向所述第二指针背离所述第一指针的方向移动一个条带;
在所述第一指针以及所述第二指针均位于所述目标RAID阵列当前所有硬盘中的终止条带时,结束对所述目标RAID阵列的扩容任务;
其中,所述目标RAID阵列当前所有硬盘中的最小逻辑分块地址LBA以及最大LBA中的一者所在的条带作为所述起始条带,另一者所在条带作为所述终止条带,所述第一指针以及所述第二指针均在移动至所述终止条带时停止移动。
2.根据权利要求1所述的RAID阵列扩容方法,其特征在于,所述响应于扩容指令,将第一指针标记于目标RAID阵列当前所有硬盘中的起始条带,将第二指针标记于与所述第一指针间隔第一预设数量个条带的条带具体为:
响应于扩容指令,将目标RAID阵列的读写模式设置为写通模式;
将第一指针标记于目标RAID阵列当前所有硬盘中的起始条带,将第二指针标记于与所述第一指针间隔第一预设数量个条带的条带。
3.根据权利要求2所述的RAID阵列扩容方法,其特征在于,所述响应于扩容指令,将第一指针标记于目标RAID阵列当前所有硬盘中的起始条带,将第二指针标记于与所述第一指针间隔第一预设数量个条带的条带之后,该RAID阵列扩容方法还包括:
判断最新接收到的待处理输入输出IO数据的目标LBA对应分块所在条带是否位于当前所述第一指针以及所述第二指针之间;
若位于,则将所述待处理IO数据加入等待队列;
在所述等待队列中的所述目标LBA对应分块所在条带不位于当前所述第一指针以及所述第二指针之间时,处理所述等待队列中与所述目标LBA对应的待处理IO数据。
4.根据权利要求3所述的RAID阵列扩容方法,其特征在于,所述在所述等待队列中的所述目标LBA对应分块所在条带不位于当前所述第一指针以及所述第二指针之间时,处理所述等待队列中与所述目标LBA对应的待处理IO数据具体为:
在所述第一指针所在条带的数据迁移完成时,判断当前所述等待队列中是否存在,所述目标LBA位于最新完成数据迁移的条带的所述待处理IO数据;
若存在,则处理所述等待队列中,所述目标LBA位于最新完成数据迁移的条带的所述待处理IO数据。
5.根据权利要求3所述的RAID阵列扩容方法,其特征在于,所述判断最新接收到的待处理IO数据的目标LBA对应分块所在条带是否位于当前所述第一指针以及所述第二指针之间之后,该RAID阵列扩容方法还包括:
若不位于,判断所述最新接收到的所述待处理IO数据的目标LBA对应分块所在条带是否进行过数据迁移;
若进行过,则根据所述目标RAID阵列当前进行数据迁移后的几何分布确定出所述目标LBA对应的目标分块;
若未进行过,则根据所述目标RAID阵列未进行数据迁移时的几何分布确定出所述目标LBA对应的目标分块;
在所述目标分块中处理所述待处理IO数据。
6.根据权利要求5所述的RAID阵列扩容方法,其特征在于,该RAID阵列扩容方法还包括:
确定出所述目标RAID阵列中所有条带被当前所述第一指针以及所述第二指针划分得到的三个条带分区;
确定出最新接收到的待处理IO数据的目标LBA对应分块所在条带所属的所述条带分区;
为所述最新接收到的待处理IO数据加上该待处理IO数据所属的所述条带分区对应的标识;
其中,所述第一指针以及所述第二指针之间所有的条带属于扩容区,从所述第一指针起,至所述第一指针背离所述第二指针方向的所有条带属于完成区,从所述第二指针起,至所述第二指针背离所述第一指针方向的所有条带属于挂起区;
所述判断最新接收到的待处理输入输出IO数据的目标LBA对应分块所在条带是否位于当前所述第一指针以及所述第二指针之间具体为:
判断最新接收到的待处理IO数据的标识是否为所述扩容区对应的标识;
所述判断所述最新接收到的所述待处理IO数据的目标LBA对应分块所在条带是否进行过数据迁移具体为:
判断所述最新接收到的所述待处理IO数据的标识是否为所述完成区对应的标识;
若为所述完成区对应的标识,则判定进行过数据迁移;
若不为所述完成区对应的标识,则判定未进行过数据迁移。
7.根据权利要求6所述的RAID阵列扩容方法,其特征在于,所述判断最新接收到的待处理IO数据的标识是否为所述扩容区对应的标识之前,该RAID阵列扩容方法还包括:
根据最新接收到的待处理IO数据的目标LBA确定出所述最新接收到的所述待处理IO数据所属的目标条带分区;
判断所述最新接收到的待处理输入输出IO数据的标识是否为所述目标条带分区对应的标识;
若是,则执行所述判断最新接收到的待处理IO数据的标识是否为所述扩容区对应的标识的步骤。
8.根据权利要求7所述的RAID阵列扩容方法,其特征在于,所述判断所述最新接收到的待处理输入输出IO数据的标识是否为所述目标条带分区对应的标识之后,该RAID阵列扩容方法还包括:
若否,则控制提示器提示所述最新接收到的待处理IO数据的标识错误。
9.根据权利要求7所述的RAID阵列扩容方法,其特征在于,所述确定出所述目标RAID阵列中所有条带被当前所述第一指针以及所述第二指针划分得到的三个条带分区之后,该RAID阵列扩容方法还包括:
将所述目标RAID阵列中的每个条带分别加上每个条带自身所属的所述条带分区对应的标识;
所述根据所述目标RAID阵列当前进行数据迁移后的几何分布确定出所述目标LBA对应的目标分块,以及所述根据所述目标RAID阵列未进行数据迁移时的几何分布确定出所述目标LBA对应的目标分块之后,所述在所述目标分块中处理所述待处理IO数据之前,该RAID阵列扩容方法还包括:
判断所述最新接收到的所述待处理IO数据的标识,与该待处理IO数据对应的所述目标分块所在条带的标识是否一致;
若一致,则执行所述在所述目标分块中处理所述待处理IO数据的步骤;
若不一致,则控制提示器提示错误。
10.根据权利要求9所述的RAID阵列扩容方法,其特征在于,所述判断最新接收到的待处理输入输出IO数据的目标LBA对应分块所在条带是否位于当前所述第一指针以及所述第二指针之间之后,所述将所述待处理IO数据加入等待队列之前,该RAID阵列扩容方法还包括:
若位于,判断所述最新接收到的所述待处理IO数据的标识,与该待处理IO数据的目标LBA对应分块所在条带的标识是否一致;
若一致,则执行所述将所述待处理IO数据加入等待队列的步骤;
若不一致,则控制提示器提示错误。
11.根据权利要求9所述的RAID阵列扩容方法,其特征在于,所述判断所述最新接收到的所述待处理IO数据的标识,与该待处理IO数据对应的所述目标分块所在条带的标识是否一致之后,所述在所述目标分块中处理所述待处理IO数据之前,该RAID阵列扩容方法还包括:
将所述最新接收到的所述待处理IO数据对应的所述目标分块所在条带锁定,以免被除所述待处理IO数据外的数据更改。
12.根据权利要求1所述的RAID阵列扩容方法,其特征在于,所述对位于所述第一指针以及所述第二指针之间的条带进行数据迁移具体为:
将位于所述第一指针以及所述第二指针之间的条带进行锁定;
对位于所述第一指针以及所述第二指针之间的被锁定的条带进行数据迁移。
13.根据权利要求6所述的RAID阵列扩容方法,其特征在于,所述第一指针以及所述第二指针均为无符号四字节数据;
所述标识均为2个比特位的数据。
14.根据权利要求13所述的RAID阵列扩容方法,其特征在于,所述第一指针以及所述第二指针均被维护于RAID卡中的第一硬件模块;
所述标识均被维护于RAID卡中的第二硬件模块。
15.根据权利要求1所述的RAID阵列扩容方法,其特征在于,该RAID阵列扩容方法还包括:
判断所述目标RAID阵列的扩容任务的持续时长是否达到预设时长;
若达到,则控制提示器提示所述扩容任务超时。
16.根据权利要求1至15任一项所述的RAID阵列扩容方法,其特征在于,所述目标RAID阵列中的每个条带均包含第二预设数量个子条带;
所述对位于所述第一指针以及所述第二指针之间的条带进行数据迁移具体为:
通过与每个子条带一一对应的线程,同时对位于所述第一指针以及所述第二指针之间的所有子条带进行数据迁移。
17.一种RAID阵列扩容装置,其特征在于,包括:
初始化模块,用于响应于扩容指令,将第一指针标记于目标RAID阵列当前所有硬盘中的起始条带,将第二指针标记于与所述第一指针间隔第一预设数量个条带的条带;
迁移模块,用于对位于所述第一指针以及所述第二指针之间的条带进行数据迁移;
控制模块,用于在所述第一指针所在条带的数据迁移完成时,控制所述第一指针以及所述第二指针均向所述第二指针背离所述第一指针的方向移动一个条带;
结束模块,用于在所述第一指针以及所述第二指针均位于所述目标RAID阵列当前所有硬盘中的终止条带时,结束对所述目标RAID阵列的扩容任务;
其中,所述目标RAID阵列当前所有硬盘中的最小LBA以及最大LBA中的一者所在的条带作为所述起始条带,另一者所在条带作为所述终止条带,所述第一指针以及所述第二指针均在移动至所述终止条带时停止移动。
18.一种RAID阵列扩容设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至16任一项所述RAID阵列扩容方法的步骤。
19.一种RAID卡,其特征在于,包括RAID卡本体以及与所述RAID卡本体连接的如权利要求18所述的RAID阵列扩容设备。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至16任一项所述RAID阵列扩容方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310154926.5A CN115840540B (zh) | 2023-02-23 | 2023-02-23 | Raid阵列扩容方法、装置、设备、raid卡及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310154926.5A CN115840540B (zh) | 2023-02-23 | 2023-02-23 | Raid阵列扩容方法、装置、设备、raid卡及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115840540A true CN115840540A (zh) | 2023-03-24 |
CN115840540B CN115840540B (zh) | 2023-05-02 |
Family
ID=85580118
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310154926.5A Active CN115840540B (zh) | 2023-02-23 | 2023-02-23 | Raid阵列扩容方法、装置、设备、raid卡及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115840540B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102200892A (zh) * | 2011-04-29 | 2011-09-28 | 华中科技大学 | 一种基于动态raid系统的扩容方法 |
CN104182176A (zh) * | 2013-05-24 | 2014-12-03 | 华中科技大学 | 一种独立磁盘冗余阵列raid5的快速扩容方法 |
CN104778018A (zh) * | 2015-04-23 | 2015-07-15 | 南京道熵信息技术有限公司 | 基于非对称混合型磁盘镜像的宽条带磁盘阵列及存储方法 |
CN106648468A (zh) * | 2016-12-29 | 2017-05-10 | 郑州云海信息技术有限公司 | 一种数据迁移过程中对io请求的控制方法及系统 |
CN112114758A (zh) * | 2020-10-12 | 2020-12-22 | 苏州浪潮智能科技有限公司 | 一种独立冗余磁盘阵列扩容的方法、装置及介质 |
CN112130768A (zh) * | 2020-09-18 | 2020-12-25 | 苏州浪潮智能科技有限公司 | 磁盘阵列在线扩容方法、装置及计算机可读存储介质 |
CN112988065A (zh) * | 2021-02-08 | 2021-06-18 | 北京星网锐捷网络技术有限公司 | 数据迁移方法、装置、设备及存储介质 |
CN113535088A (zh) * | 2021-07-15 | 2021-10-22 | 深圳市安存数据技术有限公司 | 存储设备、数据处理方法和存储系统 |
-
2023
- 2023-02-23 CN CN202310154926.5A patent/CN115840540B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102200892A (zh) * | 2011-04-29 | 2011-09-28 | 华中科技大学 | 一种基于动态raid系统的扩容方法 |
CN104182176A (zh) * | 2013-05-24 | 2014-12-03 | 华中科技大学 | 一种独立磁盘冗余阵列raid5的快速扩容方法 |
CN104778018A (zh) * | 2015-04-23 | 2015-07-15 | 南京道熵信息技术有限公司 | 基于非对称混合型磁盘镜像的宽条带磁盘阵列及存储方法 |
CN106648468A (zh) * | 2016-12-29 | 2017-05-10 | 郑州云海信息技术有限公司 | 一种数据迁移过程中对io请求的控制方法及系统 |
CN112130768A (zh) * | 2020-09-18 | 2020-12-25 | 苏州浪潮智能科技有限公司 | 磁盘阵列在线扩容方法、装置及计算机可读存储介质 |
CN112114758A (zh) * | 2020-10-12 | 2020-12-22 | 苏州浪潮智能科技有限公司 | 一种独立冗余磁盘阵列扩容的方法、装置及介质 |
CN112988065A (zh) * | 2021-02-08 | 2021-06-18 | 北京星网锐捷网络技术有限公司 | 数据迁移方法、装置、设备及存储介质 |
CN113535088A (zh) * | 2021-07-15 | 2021-10-22 | 深圳市安存数据技术有限公司 | 存储设备、数据处理方法和存储系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115840540B (zh) | 2023-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9652159B2 (en) | Relocating data in tiered pool using multiple modes of moving data | |
US8688932B2 (en) | Virtual computer system and method of controlling the same | |
US7596660B2 (en) | System and method for storage system | |
JP5438827B2 (ja) | 記憶制御装置及び仮想ボリュームの制御方法 | |
JP4922496B2 (ja) | I/o要求に優先順位を与える方法 | |
US8024603B2 (en) | Data migration satisfying migration-destination requirements | |
US6931486B2 (en) | Method and apparatus for coalescing two or more transacting requests | |
JP4464378B2 (ja) | 同一データを纏める事で格納領域を節約する計算機システム、ストレージシステム及びそれらの制御方法 | |
US8639900B2 (en) | Defragmentation of data storage pools | |
US10664182B2 (en) | Storage system | |
JP2010055369A (ja) | ストレージシステム、論理記憶領域割り当て方法及び計算機システム | |
WO2012119375A1 (zh) | Raid配置信息的处理方法及装置、raid控制器 | |
US8037276B2 (en) | Computer system, storage area allocation method, and management computer | |
CN108037894B (zh) | 一种磁盘空间管理方法及装置 | |
US20170075615A1 (en) | Storage system and storage control method | |
US8572347B2 (en) | Storage apparatus and method of controlling storage apparatus | |
US8479040B2 (en) | Storage system and control method | |
CN106933496B (zh) | 管理raid的方法及装置 | |
CN115840540B (zh) | Raid阵列扩容方法、装置、设备、raid卡及介质 | |
CN116450415A (zh) | 控制器回切控制方法、装置、设备、存储系统及存储介质 | |
US9781057B1 (en) | Deadlock avoidance techniques | |
JPH09223049A (ja) | ディスクアレイ装置 | |
EP4033346B1 (en) | Affinity-based cache operation for a persistent storage device | |
CN112835521B (zh) | 一种存储空间分配方法、装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |