CN117234436B - 一种磁盘阵列的扩容方法、装置、存储***及产品 - Google Patents
一种磁盘阵列的扩容方法、装置、存储***及产品 Download PDFInfo
- Publication number
- CN117234436B CN117234436B CN202311515609.8A CN202311515609A CN117234436B CN 117234436 B CN117234436 B CN 117234436B CN 202311515609 A CN202311515609 A CN 202311515609A CN 117234436 B CN117234436 B CN 117234436B
- Authority
- CN
- China
- Prior art keywords
- data
- block
- capacity expansion
- disk array
- blocks
- 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
- 238000000034 method Methods 0.000 title claims abstract description 71
- 238000003860 storage Methods 0.000 title claims abstract description 24
- 238000009826 distribution Methods 0.000 claims abstract description 18
- 238000004590 computer program Methods 0.000 claims description 16
- 238000012795 verification Methods 0.000 claims description 8
- 230000000295 complement effect Effects 0.000 claims description 7
- 238000012545 processing Methods 0.000 abstract description 16
- 230000008569 process Effects 0.000 abstract description 15
- 230000005012 migration Effects 0.000 abstract description 12
- 238000013508 migration Methods 0.000 abstract description 12
- 238000013500 data storage Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 11
- 238000007726 management method Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 230000001502 supplementing effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000026676 system process Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本申请涉及数据存储技术领域,公开了一种磁盘阵列的扩容方法、装置、存储***及产品。该方法包括:按照阵列分块大小,将新增硬盘空间划分为多个新增数据分块,将所述多个新增数据分块添加到磁盘阵列;将所有新增数据分块标记为未扩容,保持所述磁盘阵列中原有的数据分块及校验分块的空间分布不变;当向未扩容的数据分块首次写入数据时,基于待写入数据生成满分块数据并写入所述未扩容的数据分块,更新所述数据分块所属条带的校验数据;当未扩容的数据分块首次被写入满分块数据后,将所述数据分块标记为完成扩容。采用本方法能够避免磁盘扩容时产生大量的数据迁移,加快扩容进程,提升存储***在扩容过程中对IO请求的处理性能。
Description
技术领域
本申请涉及数据存储技术领域,特别是涉及一种磁盘阵列的扩容方法、装置、存储***及产品。
背景技术
RAID(Redundant Array of Independent Disk,独立磁盘冗余阵列)是一种虚拟化技术,它将多个独立的物理磁盘按照不同的方式组合成一个虚拟磁盘组。从而解决单个磁盘容量小、性能低、可靠性差的缺点。RAID利用条带技术将主机请求的数据按照一定的拓扑分割成多个子IO(Input/Output 读数据、写数据请求)划分到不同的磁盘上,在存取数据时,阵列中的相关磁盘一起动作,大幅提升数据的访问速度及操盘空间的利用率。
用户使用存储设备时需要在RAID阵列上创建卷作为块设备,提供给前端主机进行读写操作,当卷的存储空间不足导致无法存储更多数据时,需要对卷进行扩容,如果扩容卷所在的RAID阵列有空闲的可用空间,则可以直接从RAID阵列上分配可用空间进行扩容。但是,当RAID阵列中没有空闲的可用空间时,就需要增加硬盘先对RAID进行扩容,然后再对卷进行扩容。
在对磁盘阵列进行扩容时,磁盘阵列会根据当前的硬盘数量对存储空间进行重新分配,在此过程中磁盘阵列中的数据分块及校验分块的位置发生变化,因此需要对磁盘中存储的数据进行迁移,即将数据从原来的数据分块中读到内存中,再将数据从内存写入新的数据分块。大量的数据迁移操作会严重占用***带宽,降低存储***对于前台主机业务IO(Input/Output,读取、写入请求)的处理性能,影响用户业务的正常进行。
发明内容
有鉴于此,本申请旨在提出一种磁盘阵列的扩容方法、装置、存储***及产品,以解决磁盘阵列扩容期间产生大量的数据迁移,导致存储***处理前台主机业务IO的性能严重降低的问题。
为达到上述目的,本申请的技术方案如下:
本申请实施例第一方面提供磁盘阵列的扩容方法,所述方法包括:
按照阵列分块大小,将新增硬盘空间划分为多个新增数据分块,将所述多个新增数据分块添加到磁盘阵列;所述阵列分块大小为创建所述磁盘阵列时指定的数据分块大小;
将所有新增数据分块标记为未扩容,保持所述磁盘阵列中原有的数据分块及校验分块的空间分布不变;
当向未扩容的数据分块首次写入数据时,基于待写入数据生成满分块数据并写入所述未扩容的数据分块,更新所述数据分块所属条带的校验数据;所述满分块数据占用的空间大小与所述阵列分块大小一致;
当未扩容的数据分块首次被写入满分块数据后,将所述数据分块标记为完成扩容。
可选地,所述磁盘阵列的扩容方法还包括:
根据所述磁盘阵列中新增数据分块,初始化扩容位图;所述扩容位图用于记录所述磁盘阵列是否完成扩容;
当未扩容的数据分块被首次写入满分块数据后,根据所述数据分块在所述磁盘阵列中的位置,更新所述扩容位图。
可选地,将所述多个新增数据分块添加到磁盘阵列,包括:
以硬盘为单位,将每个新增数据分块分别添加到所述磁盘阵列中每个条带的末尾,使每个条带中包含每个硬盘的一个数据分块。
可选地,基于待写入数据生成满分块数据,包括:
获取待写入数据占用的空间大小及所述阵列分块大小;使用全零数据对所述待写入数据进行补足,生成满分块数据。
可选地,基于待写入数据生成满分块数据,包括:
按照阵列分块大小,在所述磁盘阵列的内存中新建一块全零内存区域,并存储全零数据;
根据所述阵列分块大小,从所述全零内存区域中取出全零数据对所述待写入数据进行补足,使所述待写入数据占用的空间大小与所述阵列分块大小一致。
可选地,基于待写入数据生成满分块数据,还包括:
当所述待写入数据的大小等于所述阵列分块大小时,将所述待写入数据作为所述满分块数据;
当所述待写入数据占用的空间大小大于所述阵列分块大小时,根据所述阵列分块大小,将所述待写入数据进行分割;
对分割得到的每部分数据分别生成一个满分块数据,并写入不同的未扩容的数据分块。
可选地,根据所述磁盘阵列中新增数据分块,初始化扩容位图,包括:
创建扩容位图,并根据所述新增数据分块记录条带编号及条带标识,其中,条带编号与条带标识一一对应,所述条带编号指示条带的位置,所述条带标识由分块标识组成;所述分块标识包括未扩容状态及完成扩容状态,用于指示所述条带中新增数据分块是否完成扩容;
在初始化所述扩容位图时,将所有分块标识设置为未扩容状态。
可选地,根据所述数据分块在所述磁盘阵列中的位置,更新所述扩容位图,包括:
获取所述数据分块所在条带的条带编号;
确定所述数据分块在所述条带中的位置;
根据所述条带编号从所述扩容位图中确定对应的条带标识,根据所述数据分块在所述条带中的位置,将对应的位置字符设置为完成扩容状态。
可选地,所述磁盘阵列的扩容方法还包括:
当接收到写数据请求时,判断所述写数据请求操作的区域是否为新增数据分块;
若所述写数据请求操作的区域不是新增数据分块,则将数据直接写入所述区域;
若所述写数据请求操作的区域是新增数据分块,则查询所述扩容位图判断所述数据分块是否完成扩容;若所述数据分块完成扩容,则将数据直接写入所述区域。
可选地,所述磁盘阵列的扩容方法还包括:
当接收到读数据请求时,判断所述读数据请求操作的区域是否为新增数据分块;
若所述读数据请求操作的区域不是新增数据分块,则直接读取所述区域的数据;
若所述读数据请求操作的区域是新增数据分块,则查询所述扩容位图判断所述数据分块是否完成扩容;若所述数据分块已经完成扩容,则直接读取所述数据分块的数据;若所述数据分块未扩容,则不读取所述数据分块并直接返回全零数据。
可选地,将初始化完成的扩容位图存储在非易失内存中;
当所述扩容位图中所有分块标识均为完成扩容状态时,删除所述扩容位图,并释放内存。
可选地,所述磁盘阵列为带有校验分块的磁盘阵列。
根据本申请实施例的第二方面,提供一种磁盘阵列的扩容装置,实现如本申请实施例第一方面所述的方法,所述装置包括:
添加模块,被配置为按照阵列分块大小,将新增硬盘空间划分为多个新增数据分块,将所述多个新增数据分块添加到磁盘阵列;所述阵列分块大小为创建所述磁盘阵列时指定的数据分块大小;
记录模块,被配置为将所有新增数据分块标记为未扩容,保持所述磁盘阵列中原有的数据分块及校验分块的空间分布不变;
数据访问模块,被配置为当向未扩容的数据分块首次写入数据时,基于待写入数据生成满分块数据并写入所述未扩容的数据分块,根据所述满分块数据计算并更新所述数据分块所属条带的校验数据;所述满分块数据占用的空间大小与所述阵列分块大小一致;
所述记录模块,还被配置为当未扩容的数据分块首次被写入满分块数据后,将所述数据分块标记为完成扩容。
根据本申请实施例的第三方面,提供一种存储***,所述***包括:
上层单元,用于接收主机下发的访问请求或扩容指令并发送给阵列管理模块;所述访问请求包括读数据请求及写数据请求;
阵列管理单元,用于对磁盘阵列进行管理,包括:根据所述访问请求,控制对硬盘及驱动单元对所述磁盘阵列进行数据访问;根据所述扩容指令,执行如本申请实施例第一方面所述的方法,对所述磁盘阵列进行扩容;
硬盘及驱动单元,包括由多个硬盘组成的磁盘阵列,用于根据所述访问请求,执行对所述磁盘阵列的数据访问。
根据本申请实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如本申请实施例第一方面所述的方法中的步骤。
根据本申请实施例的第五方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如本申请实施例第一方面所述的方法中的步骤。
本申请提供的磁盘阵列的扩容方法,通过标记未扩容的数据分块,省去对磁盘存储空间的重新分配,进而无需进行大量的数据迁移,减少***带宽的占用。在首次对未扩容的数据分块写入数据时将待写入数据转换成满分块数据,该未扩容的数据分块进行覆盖,节省去对未扩容的数据分块进行清空的操作,减少对硬盘的访问次数,进一步提升存储***在扩容期间处理IO请求的性能。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提出的磁盘阵列的扩容方法的流程图;
图2是本申请一实施例提出的磁盘阵列的扩容装置的示意图;
图3是本申请一实施例中利用扩容位图对磁盘阵列进行扩容的流程图;
图4是本申请一实施例中磁盘阵列扩容的空间分布示意图;
图5是本申请一实施例中磁盘阵列处理IO请求的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
在本申请的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
带有校验信息的磁盘阵列如RAID5、RAID6等,相较于没有校验数据块的磁盘阵列来说更加安全可靠,因此使用广泛。当RAID中有硬盘发生故障时,可通过校验数据以及剩余硬盘中的数据对故障损坏的数据进行恢复。以RAID5为例,磁盘阵列扩容的流程如下:
(1)开启扩容操作,磁盘阵列内部开启静默暂停主机业务处理,并重新分配空间分布。磁盘阵列中每个条带的校验分块按照一定的规则排列,当新增硬盘空间之后,磁盘阵列会重新调整数据分块和校验分块的空间分布。
(2)空间分布完成,静默完成,恢复业务处理,并按照新的空间分布进行数据迁移,重新计算校验数据并写入校验块。在重新调整空间分布后,数据分块和校验分块的位置发生改变,其中存储的部分数据需要迁移到新的位置,因此涉及大量的硬盘读写操作。
(3)在数据迁移过程中,对于少量不需要被迁移入数据的新增数据分块,采用对其写入全零数据的方式进行清空。
(4)当磁盘阵列中所有的数据迁移完成,该磁盘阵列完成扩容。数据迁移过程需要将迁移的数据先从原有硬盘迁移到新分配的硬盘区域,具体就是将数据先从原盘中读取出来放到内存中,再从内存写入到另一个硬盘,之后还要重新计算条带的校验数据,即将条带中所有数据分块的数据进行异或运算得到新的校验数据。
上述扩容过程带来大量的读写与异或运算,占用了大量的***带宽资源,导致***在扩容期间对于前台主机业务IO的处理性能下降。本申请通过不进行数据迁移,记录未扩容的数据块,在首次写入数据时以采用满分块数据形式进行写入的方式,节省大量对硬盘的读写次数,节省***带宽的同时提高扩容效率。
下面将参考附图并结合实施例来详细说明本申请。
图1是本申请一实施例提出的磁盘阵列的扩容方法的流程图。如图1所示,该方法包括:
S1:按照阵列分块大小,将新增硬盘空间划分为多个新增数据分块,将所述多个新增数据分块添加到磁盘阵列;所述阵列分块大小为创建所述磁盘阵列时指定的数据分块大小。
作为本申请的一种实施方式,将所述多个新增数据分块添加到磁盘阵列,包括:
以硬盘为单位,将每个新增数据分块分别添加到所述磁盘阵列中每个条带的末尾,使每个条带中包含每个硬盘的一个数据分块。
S2:将所有新增数据分块标记为未扩容,保持所述磁盘阵列中原有的数据分块及校验分块的空间分布不变。
磁盘扩容时对新增硬盘的数量有要求,以RAID5为例,条带宽度为N的RAID5中每个条带都有一个校验分块,因此条带中实际存储数据的分块为N-1,在扩容时,新增硬盘的数量M要小于N-1。
图4是本申请一实施例中磁盘阵列扩容的空间分布示意图。如图4所示为磁盘阵列的扩容示意图,图中磁盘阵列基于4个硬盘生成,每个条带中包括D1、D2、D3三个存储用户数据的数据分块,以及一个存储校验数据的校验分块P。当新增一个硬盘(硬盘5)进行扩容时,将硬盘5划分为新增数据分块,并编入磁盘阵列末尾(如图4中的D4分块所示),保持该磁盘阵列中原始的数据分块和校验分块的空间分布不变,即磁盘阵列中初始的数据分块与校验分块的位置均保持不变。通过不改变磁盘阵列的空间分布,避免由于空间分布改变造成大量的数据迁移操作,节省***带宽资源,同时也提升了磁盘阵列扩容的效率。
当新增不止一个硬盘时,以硬盘为单位将数据分块依次编入磁盘阵列的末尾,使磁盘阵列的每个条带中包含所有硬盘的一个数据分块。如图4所示,当添加两个新增硬盘时,新增的D5数据分块依次添加在D4分块后,使每个条带中都包含:D1数据分块、D2数据分块、D3数据分块、D4数据分块、D5数据分块及校验分块P。
本实施例中,按照创建磁盘阵列时指定的阵列分块大小添加新增硬盘空间。根据指定的阵列分块大小,将新增硬盘空间以数据分块的形式添加到磁盘阵列,然后将所有新增数据分块标记为未扩容的数据分块,保持磁盘阵列扩容前的空间分布,避免磁盘阵列中产生大量的数据迁移造成对硬盘的多次访问,从而节省***带宽。
新增的硬盘中可能带有之前使用时的残留数据,当硬盘添加到磁盘阵列后,这些残留数据属于需要清除的垃圾数据,如果直接向这些数据分块写入新数据就会造成数据错误,因此在写入数据之前需要对新增数据分块进行数据清除。为了进一步减少对硬盘的读写次数,本申请中并不对新增数据分块直接写入全零数据进行数据清除,而是将所有新增数据分块标记为未扩容。在首次对未扩容的数据分块写入数据之前,将未扩容的数据分块默认为存储了全零数据。
S3:当向未扩容的数据分块首次写入数据时,基于待写入数据生成满分块数据并写入所述未扩容的数据分块,更新所述数据分块所属条带的校验数据;所述满分块数据占用的空间大小与所述阵列分块大小一致。
S4:当未扩容的数据分块首次被写入满分块数据后,将所述数据分块标记为完成扩容。
本实施例中,当向未扩容的数据分块首次写入数据时,以满分块数据的形式进行写入,满分块数据占用的空间与数据分块大小相同。例如,创建磁盘阵列时设置的阵列分块大小为256k,则在磁盘进行扩容时新增数据分块大小是按照阵列分块大小添加的,则满分块数据也是256k大小的数据。由于满分块数据能够将整个数据分块完全覆盖,因此在写入满分块数据的同时能够将该数据分块中可能存在的垃圾数据进行清除。本实施例中,通过在首次写数据时写入满分块数据,进一步减少对硬盘的访问次数,从而节省***带宽,提升***处理IO请求的性能。
当首次被写入满分块数据后,该未扩容的数据分块扩容完成,之后可对其进行正常的读写操作。本实施例中,通过将扩容完成的数据分块进行标记,来监控磁盘阵列的扩容进程。
需要说明的是,在磁盘阵列扩容时,由于条带的数据块发生改变因此需要更新每个条带中的校验数据。校验数据是通过对条带中所有数据分块的数据进行异或得到的,由于本申请中将新增数据分块默认为存储了全零数据,即将全零数据与原来的校验数据进行异或之后,校验数据保持不变,因此采用本申请的方法进行扩容时,无需重新计算每个条带的校验数据,进一步节省了***带宽。
作为本申请的一种实施方式,该方法还包括:
根据所述磁盘阵列中新增数据分块,初始化扩容位图;所述扩容位图用于记录所述磁盘阵列是否完成扩容。
在一种实施例中,通过扩容位图来记录磁盘阵列是否完成扩容。扩容位图用于记录磁盘阵列中新增数据分块是否完成扩容,当所有新增数据分块完成扩容后,该磁盘阵列完成扩容。
作为本申请的一种实施方式,初始化扩容位图包括:
创建扩容位图,并根据所述新增数据分块记录条带编号及条带标识,其中,条带编号与条带标识一一对应,所述条带编号指示条带的位置,所述条带标识由分块标识组成;所述分块标识包括未扩容状态及完成扩容状态,用于指示所述条带中新增数据分块是否完成扩容;
在初始化所述扩容位图时,将所有分块标识设置为未扩容状态。
本实施例中,创建扩容位图,以条带为单位,记录磁盘阵列中新增数据分块的扩容状态。扩容位图中存储每个条带的编号以及对应的条带标识。条带标识由一个或多个分块标识组成。分块标识指示对应位置处的新增数据分块的扩容状态。根据标识用于区分未扩容状态与完成扩容状态,在实际应用中可根据需要进行设置。例如,将未扩容状态设置为“1”,将完成扩容状态设置为“0”。当新增硬盘空间添加到磁盘阵列时初始化扩容位图,将所有条带标识中的分块标识都置为“1”,表示当前所有新增数据分块均为未扩容的数据分块。
当未扩容的数据分块被首次写入满分块数据后,根据所述数据分块在所述磁盘阵列中的位置,更新所述扩容位图。
扩容位图中的条带标识指示了当前磁盘阵列的扩容情况,当磁盘阵列中未扩容的数据分块被首次写入满分块数据后,该数据分块完成扩容,此时对应将扩容位图中的分块标识修改为完成扩容状态。
作为本申请的一种实施方式,根据所述数据分块在所述磁盘阵列中的位置,更新所述扩容位图,包括:
获取所述数据分块所在条带的条带编号;
确定所述数据分块在所述条带中的位置;
根据所述条带编号从所述扩容位图中确定对应的条带标识,根据所述数据分块在所述条带中的位置,将对应的位置字符设置为完成扩容状态。
通过条带编号从扩容位图中获取对应的条带标识,根据数据分块在条带中的位置,确定该数据分块对应的分块标识。当数据分块完成扩容后,将对应的分块标识修改为完成扩容状态。例如,将该数据分块对应位置的分块标识置“0”。
图3是本申请一实施例中利用扩容位图对磁盘阵列进行扩容的的流程图。如图3所示,对磁盘阵列进行扩容的步骤如下:
(1)创建磁盘阵列时,通过命令行指定磁盘阵列的阵列分块大小。阵列分块大小可以根据实际需要进行设置,例如,可将阵列分块大小设置为256k。
(2)当磁盘阵列检测到有扩容任务被触发时,根据当前磁盘阵列的条带信息,在磁盘阵列内初始化一个扩容位图。扩容位图用来记录当前磁盘阵列中的条带标号以及条带标识。条带标识中包括新增到磁盘阵列的数据分块的分块标识,例如扩容时新增硬盘数量为2,则条带标识由2个分块标识组成,每个分块标识分别对应一个数据分块的扩容状态。扩容位图用于记录阵列中的条带编号以及条带是否完成扩容。在扩容位图初始化时,将所有条带标识置为全1,即所有新增数据分块均未完成扩容。
如图3所示,本申请中,在新增硬盘空间后,将新增硬盘5的数据分块D4区域默认为全零区域,即,将D4区域视为存储了全零数据,但是并不向其中写入全零数据,而是通过扩容位图标记记录D4区域为未扩容状态。当接收到IO请求时,会先判断到是否有扩容位图,根据扩容位图来判断D4区域当前的扩容状态以决定后续的IO处理流程。
在将新增硬盘空间编入磁盘阵列后,需要更新条带的校验数据。校验数据的计算方式为将条带中所有数据局分块的数据进行异或计算,即:
P =(D1分块的数据)xor(D2分块的数据)xor(D3分块的数据)。
本实施例中,由于新增加D4区域后其他数据分块未进行数据迁移,因此计算新的校验数据P’的方式为:
P’=(D1分块的数据)xor(D2分块的数据)xor(D3分块的数据)xor(D4分块的数据)。其中,D4分块默认存储了全零数据,因此新的校验数据P’= P,即校验数据不需要重新计算并写入,进一步节省***带宽资源。
(3)当向磁盘阵列写入新数据时,首先判断写入的数据分块是否为未扩容的数据分块,如果是向未扩容的数据分块写入数据,则需要将待写入的数据以满分块数据的形式写入。
当未扩容的数据分块被首次写入满分块数据后,该数据分块完成扩容,将扩容位图中对应位置的分块标识置为0。
(4)直到所有的未扩容的数据分块都被覆盖写一遍,即所有未扩容的数据分块都被写过一次满分块数据后,扩容位图中所有条带标识都被置0,此时磁盘阵列扩容完成,将位图删除并释放其占用的空间。
作为本申请的一种实施方式,基于待写入数据生成满分块数据,包括:
获取待写入数据占用的空间大小及所述阵列分块大小;使用全零数据对所述待写入数据进行补足,生成满分块数据。
在一种实施例中,当向未扩容的数据分块写入数据时,通过补足全零数据的方式生成满分块数据。首先确定待写入数据占用的空间大小,然后根据阵列分块大小,也即未扩容的数据分块的大小,使用全零数据(即数据中所有字节的值都为0)将待写入数据进行补足,生成满分块数据。
例如,阵列分块大小为256k时,待写入数据为156k,则需要对该待写入数据补足100k的全零数据,生成256k的满分块数据并进行覆盖写入。
本实施例中,利用满分块数据对未扩容的数据分块进行首次写入,节省在扩容时对新增数据分块进行数据清空的操作,提高扩容效率,节省***带宽资源。
作为本申请的一种实施方式,基于待写入数据生成满分块数据,包括:
按照阵列分块大小,在所述磁盘阵列的内存中新建一块全零内存区域,并存储全零数据;
根据所述阵列分块大小,从所述全零内存区域中取出全零数据对所述待写入数据进行补足,使所述待写入数据占用的空间大小与所述阵列分块大小一致。
在一种实施例中,预先在磁盘阵列中新建一块全零内存区域,当需要生成满分块数据时,从该全零内存区域中取出需要的大小的全零数据进行补足。
具体地,在磁盘阵列创建时,获取创建RAID阵列命令行指定的阵列分块大小,比如256k。根据获取到的阵列分块大小,在磁盘阵列内部增加一块256k大小的全零内存区域。当向未扩容的数据分块首次写入数据时,从预先设置的全零内存区域中取出全零数据对待写入的数据进行补足。
本实施例中,在磁盘阵列中预先生成与阵列分块大小一致的全零数据区域,当需要生成满分块数据时,能够快速取出需要大小的全零数据补足待写入的数据缺少的部分,从而加快了磁盘阵列扩容期间处理IO请求的效率。
作为本申请的一种实施方式,基于待写入数据生成满分块数据,还包括:
当所述待写入数据的大小等于所述阵列分块大小时,将所述待写入数据作为所述满分块数据;
当所述待写入数据占用的空间大小大于所述阵列分块大小时,根据所述阵列分块大小,将所述待写入数据进行分割;
对分割得到的每部分数据分别生成一个满分块数据,并写入不同的未扩容的数据分块。
在一种实施例中,当向未扩容的数据分块首次写入数据时,需要向该数据分块写入满分块数据。具体可采用以下步骤进行:
判断待写入数据的大小,若待写入数据的大小与阵列分块大小一致(例如,待写入数据大小为256k),则该待写入数据就是满分块数据,将该数据直接写入未扩容的数据分块;
若待写入数据的大小小于阵列分块大小,则采用全零数据将待写入补足阵列分块大小,并写入;
若待写入数据的大小大于阵列分块大小,则对待写入数据进行分割,将满足满分块数据大小的部分直接作为满分块数据写入未扩容的数据分块,对于剩下的小于阵列分块大小的部分数据,采用全零数据对其进行补足,生成一个新的满分块数据写入另一个未扩容的数据分块。
作为本申请的一种实施方式,该方法还包括:
当接收到写数据请求时,判断所述写数据请求操作的区域是否为新增数据分块;
若所述写数据请求操作的区域不是新增数据分块,则将数据直接写入所述区域;
若所述写数据请求操作的区域是新增数据分块,则查询所述扩容位图判断所述数据分块是否完成扩容;若所述数据分块完成扩容,则将数据直接写入所述区域。
本实施例中,当RAID接收到IO请求时,首先判断磁盘阵列是否存在扩容位图。如果不存在扩容位图,则表示该磁盘阵列中不存在新增数据分块,即磁盘阵列中没有未扩容的数据分块。此时,正常处理该IO请求:若IO请求为写数据请求,则根据待写入数据重新计算条带的校验数据,并将待写入数据与新的校验数据分别写入数据分块和校验分块;若IO请求为读数据请求,则直接对数据分块进行读取。
图5是本申请一实施例中磁盘阵列处理IO请求的流程图。如图5所示,当IO请求为写数据请求时,***处理IO的步骤如下:
(1)判断磁盘阵列是否存在扩容位图。若不存在扩容位图,则直接对数据分块进行写数据操作。
(2)当存在扩容位图时,判断写数据请求是否向新增数据分块进行数据写入。若写数据请求并非向新增数据分块写入数据,则可以将待写入数据直接写入数据分块;若是向新增数据分块写入数据,则需要进一步从扩容位图查询该新增数据分块是否完成扩容。具体地,若位图中对应位置的分块标识为1,则说明该数据分块未完成扩容,若位图中对应位置的分块标识为0,则说明该数据分块完成扩容。
(3)对完成扩容的数据分块按照正常写数据的方式写入数据并重新计算校验数据。对于未完成扩容的数据分块,则采用首次对未扩容的数据分块写数据的方式,即,将待写入数据补足全零数据生成满分块数据,以满分块数据的形式写入该数据分块,并更新校验数据。
(4)当对未扩容的数据分块写入满分块数据后,将扩容位图中对应位置的分块标识置为完成扩容状态,即置0。
作为本申请的一种实施方式,该方法还包括:
当接收到读数据请求时,判断所述读数据请求操作的区域是否为新增数据分块;
若所述读数据请求操作的区域不是新增数据分块,则直接读取所述区域的数据;
若所述读数据请求操作的区域是新增数据分块,则查询所述扩容位图判断所述数据分块是否完成扩容;若所述数据分块已经完成扩容,则直接读取所述数据分块的数据;若所述数据分块未扩容,则不读取所述数据分块并直接返回全零数据。
在上述实施例中,如图5所示,当IO请求为读数据请求时,***处理IO的步骤如下:
(1)判断磁盘阵列是否存在扩容位图。若不存在扩容位图,则直接对数据分块进行读数据操作。
(2)当存在扩容位图时,判断写数据请求是否从新增数据分块读取数据。若写数据请求并非从新增数据分块读取数据,则可以直接对该数据分块进行读取;若是从新增数据分块读取数据,则需要进一步从扩容位图查询该新增数据分块是否完成扩容。具体地,若位图中对应位置的分块标识为1,则说明该数据分块未完成扩容,若位图中对应位置的分块标识为0,则说明该数据分块完成扩容。
(3)对完成扩容的数据分块,按照正常读取数据的方式直接进行数据读取。对于未完成扩容的数据分块,则不直接读取该数据分块,而是默认该数据分块存储了全零数据,因此直接返回全零数据作为读取结果。
本实施例中,将未扩容的数据分块视为存储了全零数据,在对未扩容的数据分块进行读数据请求时,不需要实际读取硬盘,而是直接返回全零数据作为读取结果,减少了对硬盘的访问次数,同时避免读取到未扩容的数据分块中可能残留的垃圾数据造成数据错误。
作为本申请的一种实施方式,该方法还包括:
将初始化完成的扩容位图存储在非易失内存中;
当所述扩容位图中所有分块标识均为完成扩容状态时,删除所述扩容位图,并释放内存。
在一种实施例中,为了防止***掉电导致磁盘阵列中数据分块的扩容状态丢失,可将扩容位图存储在非易失内存中。当磁盘阵列中所有新增数据分块都被写入过满分块数据后,对应的扩容位图中所有条带标识均为0,此时磁盘阵列扩容完成,可将扩容位图删除,并释放其占用的内存。
作为本申请的一种实施方式,更新所述数据分块所属条带的校验数据,包括:
将所述数据分块所属条带中的原有的校验数据,与所述数据分块中的数据进行异或,得到新的校验数据;
将所述新的校验数据写入所述条带中的校验分块,替换所述原有的校验数据。
在本实施例中,每次对硬盘进行写数据操作时,都需要更新条带的校验数据。校验数据的计算方式为,将该条带中所有的数据分块内存储的数据进行异或运算。这个过程中需要对硬盘中的数据分块进行读取,如果条带中存在未扩容的数据分块,则不读取该未扩容的数据分块,而是将该未扩容的数据分块默认为存储了全零数据,之间返回0并与其他数据分块中的数据进行异或运算。
通过不对未扩容的数据分块进行读取的方式减少了对硬盘的访问次数,并且,由于未扩容的数据分块中可能残留垃圾数据,将未扩容的数据分块默认为存储了全零数据,采用全零数据与其他数据分块的数据进行异或运算,能够避免垃圾数据对校验数据计算结果的影响,防止数据出错。
基于同一发明构思,本申请一实施例提供一种磁盘阵列的扩容装置。参考图2,图2是本申请一实施例提出的磁盘阵列的扩容装置100的示意图。如图2所示,该装置包括:
添加模块101,被配置为按照阵列分块大小,将新增硬盘空间划分为多个新增数据分块,将所述多个新增数据分块添加到磁盘阵列;所述阵列分块大小为创建所述磁盘阵列时指定的数据分块大小;
记录模块102,被配置为将所有新增数据分块标记为未扩容,保持所述磁盘阵列中原有的数据分块及校验分块的空间分布不变;
数据访问模块103,被配置为当向未扩容的数据分块首次写入数据时,基于待写入数据生成满分块数据并写入所述未扩容的数据分块,根据所述满分块数据计算并更新所述数据分块所属条带的校验数据;所述满分块数据占用的空间大小与所述阵列分块大小一致;
所述记录模块102,还被配置为当未扩容的数据分块首次被写入满分块数据后,将所述数据分块标记为完成扩容。
作为本申请的一种实施方式,所述记录模块102包括:
位图管理子模块,被配置为根据所述磁盘阵列中新增数据分块,初始化扩容位图;所述扩容位图用于记录所述磁盘阵列是否完成扩容;
位图更新子模块,被配置为当未扩容的数据分块被首次写入满分块数据后,根据所述数据分块在所述磁盘阵列中的位置,更新所述扩容位图。
作为本申请的一种实施方式,所述添加模块101,被配置为执行以下步骤:
以硬盘为单位,将每个新增数据分块分别添加到所述磁盘阵列中每个条带的末尾,使每个条带中包含每个硬盘的一个数据分块。
作为本申请的一种实施方式,所述数据访问模块103,被配置为执行以下步骤:
获取待写入数据占用的空间大小及所述阵列分块大小;使用全零数据对所述待写入数据进行补足,生成满分块数据。
作为本申请的一种实施方式,所述数据访问模块103包括:
全零数据管理模块,被配置为按照阵列分块大小,在所述磁盘阵列的内存中新建一块全零内存区域,并存储全零数据;
所述数据访问模块103根据所述阵列分块大小,从所述全零内存区域中取出全零数据对所述待写入数据进行补足,使所述待写入数据占用的空间大小与所述阵列分块大小一致。
作为本申请的一种实施方式,所述数据访问模块103,还被配置为执行以下步骤:
当所述待写入数据的大小等于所述阵列分块大小时,将所述待写入数据作为所述满分块数据;
当所述待写入数据占用的空间大小大于所述阵列分块大小时,根据所述阵列分块大小,将所述待写入数据进行分割;
对分割得到的每部分数据分别生成一个满分块数据,并写入不同的未扩容的数据分块。
作为本申请的一种实施方式,所述位图管理子模块,被配置为执行以下步骤:
创建扩容位图,并根据所述新增数据分块记录条带编号及条带标识,其中,条带编号与条带标识一一对应,所述条带编号指示条带的位置,所述条带标识由分块标识组成;所述分块标识包括未扩容状态及完成扩容状态,用于指示所述条带中新增数据分块是否完成扩容;
在初始化所述扩容位图时,将所有分块标识设置为未扩容状态。
作为本申请的一种实施方式,所述位图更新子模块,被配置为执行以下步骤:
获取所述数据分块所在条带的条带编号;
确定所述数据分块在所述条带中的位置;
根据所述条带编号从所述扩容位图中确定对应的条带标识,根据所述数据分块在所述条带中的位置,将对应的位置字符设置为完成扩容状态。
作为本申请的一种实施方式,所述数据访问模块103,还被配置为执行以下步骤:
当接收到写数据请求时,判断所述写数据请求操作的区域是否为新增数据分块;
若所述写数据请求操作的区域不是新增数据分块,则将数据直接写入所述区域;
若所述写数据请求操作的区域是新增数据分块,则查询所述扩容位图判断所述数据分块是否完成扩容;若所述数据分块完成扩容,则将数据直接写入所述区域。
作为本申请的一种实施方式,所述数据访问模块103,还被配置为执行以下步骤:
当接收到读数据请求时,判断所述读数据请求操作的区域是否为新增数据分块;
若所述读数据请求操作的区域不是新增数据分块,则直接读取所述区域的数据;
若所述读数据请求操作的区域是新增数据分块,则查询所述扩容位图判断所述数据分块是否完成扩容;若所述数据分块已经完成扩容,则直接读取所述数据分块的数据;若所述数据分块未扩容,则不读取所述数据分块并直接返回全零数据。
作为本申请的一种实施方式,所述位图管理子模块,还被配置为执行以下步骤:
将初始化完成的扩容位图存储在非易失内存中;
当所述扩容位图中所有分块标识均为完成扩容状态时,删除所述扩容位图,并释放内存。
作为本申请的一种实施方式,所述数据访问模块103,还被配置为执行以下步骤:
将所述数据分块所属条带中的原有的校验数据,与所述数据分块中的数据进行异或,得到新的校验数据;
将所述新的校验数据写入所述条带中的校验分块,替换所述原有的校验数据。
基于同一发明构思,本申请一实施例提供一种存储***,该存储***包括:
上层单元,用于接收主机下发的访问请求或扩容指令并发送给阵列管理模块;所述访问请求包括读数据请求及写数据请求;
阵列管理单元,用于对磁盘阵列进行管理,包括:根据所述访问请求,控制对硬盘及驱动单元对所述磁盘阵列进行数据访问;根据所述扩容指令,执行如上述实施例中提出的磁盘阵列的扩容方法,对所述磁盘阵列进行扩容;
硬盘及驱动单元,包括由多个硬盘组成的磁盘阵列,用于根据所述访问请求,执行对所述磁盘阵列的数据访问。
基于同一发明构思,本申请一实施例提供一种可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请上述任一实施例所述的磁盘阵列的扩容方法中的步骤。
基于同一发明构思,本申请一实施例提供一种电子设备,该电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行时实现本申请上述任一实施例所述的磁盘阵列的扩容方法中的步骤。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和部件并不一定是本申请所必须的。
本领域内的技术人员应明白,本申请实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的磁盘阵列的扩容方法、装置、存储***及产品进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (15)
1.一种磁盘阵列的扩容方法,其特征在于,包括:
按照阵列分块大小,将新增硬盘空间划分为多个新增数据分块,将所述多个新增数据分块添加到磁盘阵列;所述阵列分块大小为创建所述磁盘阵列时指定的数据分块大小;
所述将所述多个新增数据分块添加到磁盘阵列,包括:以硬盘为单位,将每个新增数据分块分别添加到所述磁盘阵列中每个条带的末尾,使每个条带中包含每个硬盘的一个数据分块;
将所有新增数据分块标记为未扩容,保持所述磁盘阵列中原有的数据分块及校验分块的空间分布不变;
当向未扩容的数据分块首次写入数据时,基于待写入数据生成满分块数据并写入所述未扩容的数据分块,更新所述数据分块所属条带的校验数据;所述满分块数据占用的空间大小与所述阵列分块大小一致;
当读取未扩容的数据分块时,不读取所述数据分块,并直接返回全零数据;
当未扩容的数据分块首次被写入满分块数据后,将所述数据分块标记为完成扩容。
2.根据权利要求1所述的磁盘阵列的扩容方法,其特征在于,还包括:
根据所述磁盘阵列中新增数据分块,初始化扩容位图;所述扩容位图用于记录所述磁盘阵列是否完成扩容;
当未扩容的数据分块被首次写入满分块数据后,根据所述数据分块在所述磁盘阵列中的位置,更新所述扩容位图。
3.根据权利要求1所述的磁盘阵列的扩容方法,其特征在于,基于待写入数据生成满分块数据,包括:
获取待写入数据占用的空间大小及所述阵列分块大小;使用全零数据对所述待写入数据进行补足,生成满分块数据。
4.根据权利要求1所述的磁盘阵列的扩容方法,其特征在于,基于待写入数据生成满分块数据,包括:
按照阵列分块大小,在所述磁盘阵列的内存中新建一块全零内存区域,并存储全零数据;
根据所述阵列分块大小,从所述全零内存区域中取出全零数据对所述待写入数据进行补足,使所述待写入数据占用的空间大小与所述阵列分块大小一致。
5.根据权利要求3或4所述的磁盘阵列的扩容方法,其特征在于,基于待写入数据生成满分块数据,还包括:
当所述待写入数据的大小等于所述阵列分块大小时,将所述待写入数据作为所述满分块数据;
当所述待写入数据占用的空间大小大于所述阵列分块大小时,根据所述阵列分块大小,将所述待写入数据进行分割;
对分割得到的每部分数据分别生成一个满分块数据,并写入不同的未扩容的数据分块。
6.根据权利要求2所述的磁盘阵列的扩容方法,其特征在于,根据所述磁盘阵列中新增数据分块,初始化扩容位图,包括:
创建扩容位图,并根据所述新增数据分块记录条带编号及条带标识,其中,条带编号与条带标识一一对应,所述条带编号指示条带的位置,所述条带标识由分块标识组成;所述分块标识包括未扩容状态及完成扩容状态,用于指示所述条带中新增数据分块是否完成扩容;
在初始化所述扩容位图时,将所有分块标识设置为未扩容状态。
7.根据权利要求6所述的磁盘阵列的扩容方法,其特征在于,根据所述数据分块在所述磁盘阵列中的位置,更新所述扩容位图,包括:
获取所述数据分块所在条带的条带编号;
确定所述数据分块在所述条带中的位置;
根据所述条带编号从所述扩容位图中确定对应的条带标识,根据所述数据分块在所述条带中的位置,将对应的位置字符设置为完成扩容状态。
8.根据权利要求2所述的磁盘阵列的扩容方法,其特征在于,还包括:
当接收到写数据请求时,判断所述写数据请求操作的区域是否为新增数据分块;
若所述写数据请求操作的区域不是新增数据分块,则将数据直接写入所述区域;
若所述写数据请求操作的区域是新增数据分块,则查询所述扩容位图判断所述数据分块是否完成扩容;若所述数据分块完成扩容,则将数据直接写入所述区域。
9.根据权利要求2所述的磁盘阵列的扩容方法,其特征在于,还包括:
当接收到读数据请求时,判断所述读数据请求操作的区域是否为新增数据分块;
若所述读数据请求操作的区域不是新增数据分块,则直接读取所述区域的数据;
若所述读数据请求操作的区域是新增数据分块,则查询所述扩容位图判断所述数据分块是否完成扩容;若所述数据分块已经完成扩容,则直接读取所述数据分块的数据;若所述数据分块未扩容,则不读取所述数据分块并直接返回全零数据。
10.根据权利要求6所述的磁盘阵列的扩容方法,其特征在于,还包括:
将初始化完成的扩容位图存储在非易失内存中;
当所述扩容位图中所有分块标识均为完成扩容状态时,删除所述扩容位图,并释放内存。
11.根据权利要求1所述的磁盘阵列的扩容方法,其特征在于,更新所述数据分块所属条带的校验数据,包括:
将所述数据分块所属条带中的原有的校验数据,与所述数据分块中的数据进行异或,得到新的校验数据;
将所述新的校验数据写入所述条带中的校验分块,替换所述原有的校验数据。
12.一种磁盘阵列的扩容装置,其特征在于,用于实现如权利要求1-11任一所述的方法,包括:
添加模块,被配置为按照阵列分块大小,将新增硬盘空间划分为多个新增数据分块,将所述多个新增数据分块添加到磁盘阵列;所述阵列分块大小为创建所述磁盘阵列时指定的数据分块大小;
记录模块,被配置为将所有新增数据分块标记为未扩容,保持所述磁盘阵列中原有的数据分块及校验分块的空间分布不变;
数据访问模块,被配置为当向未扩容的数据分块首次写入数据时,基于待写入数据生成满分块数据并写入所述未扩容的数据分块,根据所述满分块数据计算并更新所述数据分块所属条带的校验数据;所述满分块数据占用的空间大小与所述阵列分块大小一致;
所述记录模块,还被配置为当未扩容的数据分块首次被写入满分块数据后,将所述数据分块标记为完成扩容。
13.一种存储***,其特征在于,包括:
上层单元,用于接收主机下发的访问请求或扩容指令并发送给阵列管理模块;所述访问请求包括读数据请求及写数据请求;
阵列管理单元,用于对磁盘阵列进行管理,包括:根据所述访问请求,控制对硬盘及驱动单元对所述磁盘阵列进行数据访问;根据所述扩容指令,执行如权利要求1-11任一所述的磁盘阵列的扩容方法,对所述磁盘阵列进行扩容;
硬盘及驱动单元,包括由多个硬盘组成的磁盘阵列,用于根据所述访问请求,执行对所述磁盘阵列的数据访问。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1-11任一所述的方法中的步骤。
15.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时,实现如权利要求1-11任一所述的方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311515609.8A CN117234436B (zh) | 2023-11-14 | 2023-11-14 | 一种磁盘阵列的扩容方法、装置、存储***及产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311515609.8A CN117234436B (zh) | 2023-11-14 | 2023-11-14 | 一种磁盘阵列的扩容方法、装置、存储***及产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117234436A CN117234436A (zh) | 2023-12-15 |
CN117234436B true CN117234436B (zh) | 2024-02-20 |
Family
ID=89093402
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311515609.8A Active CN117234436B (zh) | 2023-11-14 | 2023-11-14 | 一种磁盘阵列的扩容方法、装置、存储***及产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117234436B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107577436A (zh) * | 2017-09-18 | 2018-01-12 | 杭州时趣信息技术有限公司 | 一种数据存储方法及装置 |
CN112114758A (zh) * | 2020-10-12 | 2020-12-22 | 苏州浪潮智能科技有限公司 | 一种独立冗余磁盘阵列扩容的方法、装置及介质 |
CN113407114A (zh) * | 2021-05-26 | 2021-09-17 | 青海师范大学 | 一种基于热数据和删除重复操作的在线扩容io调度方法 |
CN116931814A (zh) * | 2022-03-31 | 2023-10-24 | 北京金山云网络技术有限公司 | 一种云硬盘扩容的方法、装置、电子设备及存储介质 |
-
2023
- 2023-11-14 CN CN202311515609.8A patent/CN117234436B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107577436A (zh) * | 2017-09-18 | 2018-01-12 | 杭州时趣信息技术有限公司 | 一种数据存储方法及装置 |
CN112114758A (zh) * | 2020-10-12 | 2020-12-22 | 苏州浪潮智能科技有限公司 | 一种独立冗余磁盘阵列扩容的方法、装置及介质 |
CN113407114A (zh) * | 2021-05-26 | 2021-09-17 | 青海师范大学 | 一种基于热数据和删除重复操作的在线扩容io调度方法 |
CN116931814A (zh) * | 2022-03-31 | 2023-10-24 | 北京金山云网络技术有限公司 | 一种云硬盘扩容的方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117234436A (zh) | 2023-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3617867B1 (en) | Fragment management method and fragment management apparatus | |
CN102667740B (zh) | 将数据存储装置分区与物理数据扇区的边界对齐 | |
EP3306477B1 (en) | Storage device and block storage method based on the storage device | |
JP2002123421A (ja) | フラッシュメモリのための再写像制御方法及びこれによるフラッシュメモリの構造 | |
WO2024098698A1 (zh) | 一种磁盘阵列初始化方法、装置、设备及可读存储介质 | |
CN112000627A (zh) | 一种数据存储方法、***、电子设备及存储介质 | |
CN105573666A (zh) | 盘阵列设备、盘控制设备、固态驱动器、盘控制方法和记录介质 | |
US6363457B1 (en) | Method and system for non-disruptive addition and deletion of logical devices | |
CN108491290B (zh) | 一种数据写入方法及装置 | |
JP2006318017A (ja) | Raid構成変換方法、装置及びプログラム並びにこれを用いたディスクアレイ装置 | |
CN116795295B (zh) | 磁盘阵列中的数据处理方法及装置、存储介质、电子设备 | |
CN111913664B (zh) | 一种数据写入方法及装置 | |
CN116185311B (zh) | 独立磁盘冗余阵列的升级迁移方法、降级迁移方法及装置 | |
US10282116B2 (en) | Method and system for hardware accelerated cache flush | |
CN117234436B (zh) | 一种磁盘阵列的扩容方法、装置、存储***及产品 | |
CN115562595B (zh) | 一种卷创建方法及装置、卷读写方法及装置、电子设备 | |
CN111124294B (zh) | 一种扇区映射信息的管理方法及装置、存储介质和设备 | |
CN105573862B (zh) | 一种恢复文件***的方法和设备 | |
CN113467724A (zh) | 一种crc校验码存储方法、装置、设备及介质 | |
CN114968671B (zh) | 克隆卷的实现方法及装置 | |
CN102063273A (zh) | 硬盘管理方法及管理装置 | |
US11544005B2 (en) | Storage system and processing method | |
CN107749307B (zh) | 存储***写盘失败时的重写方法、装置、设备和存储介质 | |
CN117055807A (zh) | 数据存储方法、装置、计算机设备和存储介质 | |
JP2000112832A (ja) | 情報記録方法および記録媒体ならびに情報処理装置 |
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 |