CN115599313A - 一种磁盘阵列扩容方法、系统、存储介质及设备 - Google Patents

一种磁盘阵列扩容方法、系统、存储介质及设备 Download PDF

Info

Publication number
CN115599313A
CN115599313A CN202211545889.2A CN202211545889A CN115599313A CN 115599313 A CN115599313 A CN 115599313A CN 202211545889 A CN202211545889 A CN 202211545889A CN 115599313 A CN115599313 A CN 115599313A
Authority
CN
China
Prior art keywords
disk array
lba
new
disk
newly added
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
Application number
CN202211545889.2A
Other languages
English (en)
Other versions
CN115599313B (zh
Inventor
马艳
许永良
孙明刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202211545889.2A priority Critical patent/CN115599313B/zh
Publication of CN115599313A publication Critical patent/CN115599313A/zh
Application granted granted Critical
Publication of CN115599313B publication Critical patent/CN115599313B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Abstract

本发明提供了一种磁盘阵列扩容方法、系统、存储介质及设备,涉及磁盘阵列技术领域,方法包括:响应于接收到对原磁盘阵列进行扩容的请求,将新增磁盘分块后并入原磁盘阵列,得到新磁盘阵列,并基于新增磁盘的总可用容量得到新磁盘阵列的总新增LBA范围;遍历新磁盘阵列中所有卷,并针对每个卷,基于总新增LBA范围得到对应的卷新增LBA范围,并记录至对应的结构体中;响应于对当前卷进行读写,判断其目标LBA值是否有对应的结构体;若有,基于目标结构体确认目标LBA值所对应的新磁盘阵列中的实际LBA值,并利用实际LBA值对应的PBA的物理存储区域进行读写。本发明使得RAID阵列扩容后无需进行磁盘数据分块移动。

Description

一种磁盘阵列扩容方法、系统、存储介质及设备
技术领域
本发明涉及磁盘阵列技术领域,尤其涉及一种磁盘阵列扩容方法、系统、存储介质及设备。
背景技术
随着现代数据中心业务量的与日俱增,单台服务器上运行的数据也日益增多,当单个物理硬盘在容量和安全性上不足以支撑系统业务时,就需要将多个硬盘以某种特定方式组合起来,对外作为一个可见的硬盘来使用,才可满足实际需要。随着科技的发展,存储技术也在飞跃的改进,RAID(Redundant Array of Independent Disks,独立冗余磁盘阵列)就是存储中的重要技术之一,它的发展主要经历了RAID0、RAID1、RAID10、RAID5、 RAID6等级别。RAID卡是实现将服务器连接的硬盘按照RAID级别组织成RAID阵列功能的板卡,用户在RAID阵列上创建卷来供主机作为块设备使用。
当某个卷的存储空间不足以支撑用户数据需求时,就需要对该卷进行扩容。卷扩容时,如果当前卷所属的RAID阵列还存在可用容量时,可以直接从该RAID阵列上分配可用空间,而当RAID阵列已无可用容量时,就需要通过增加硬盘方式扩容。
目前市面上现有的RAID卡,通过增加硬盘方式给卷扩容时,都是通过以下两个操作步骤进行:
第一步,增加硬盘,针对卷所属的RAID阵列进行扩容;
第二步,针对卷,进行扩容。
图1示出了现有技术中增加硬盘后实现卷扩容的结构示意图。如图1所示,扩容前,由5块盘组成一个RAID5阵列,P校验分块呈对角线分布,该阵列映射1个RAID5 Lba(Logicalblock address,逻辑区块地址) Map(图),使用Map上所有存储空间组成一个Volume(卷)。当新增两块物理盘扩容后,从RAID阵列的条带分布来看,扩容后,不仅原条带上对应的数据分块增加了,而且原有的数据分块位置发生了迁移,并且原有的P校验分块值及位置也都发生了变化,此时扩容后的RAID阵列,映射1个新的RAID5 Lba Map’,此时新Map容量被扩展,从而达到扩容卷的效果。
综上所述,目前通过增加硬盘方式的卷扩容存在以下缺点:
1)RAID扩容后,会进行条带分块的重新分布,因此会进行磁盘数据分块移动、校验分块数据重算等后台任务,这会增加系统CPU(Central Process Unit,中央处理器)开销,同时,阵列在分块移动过程中要保证主机IO(Input/Output,数据输入/输出)的正常响应,整个过程对系统有很高的可靠性要求,因此会增加系统的复杂度。
2)需要用户首先对RAID阵列扩容,再对卷扩容,这种操作过程过于繁琐,效率低下,致使用户体验下降。
发明内容
有鉴于此,本发明的目的在于提出一种磁盘阵列扩容方法、系统、存储介质及设备,用以解决现有技术的磁盘阵列扩容方式需要进行磁盘数据分块移动导致CPU开销大、系统复杂度高的问题。
基于上述目的,本发明提供了一种磁盘阵列扩容方法,包括以下步骤:
响应于接收到对原磁盘阵列进行扩容的请求,基于请求将新增磁盘分块后并入原磁盘阵列,得到新磁盘阵列,并基于新增磁盘的总可用容量得到新磁盘阵列的总新增LBA范围;
遍历新磁盘阵列中所有卷,并针对每个卷,基于总新增LBA范围得到对应的卷新增LBA范围,并将每个卷新增LBA范围记录至对应的结构体中;
响应于对当前卷进行读写,判断其目标LBA值是否有对应的结构体;
响应于目标LBA值有对应的目标结构体,基于目标结构体确认目标LBA值所对应的新磁盘阵列中的实际LBA值,并利用实际LBA值对应的PBA的物理存储区域进行读写。
在一些实施例中,将新增磁盘分块后并入原磁盘阵列,得到新磁盘阵列包括:
将新增磁盘按照原磁盘阵列的分块大小进行分块,并使原磁盘阵列的条带中数据分块和校验分块的位置保持不变,将分块后的新增磁盘直接并入原磁盘阵列,得到新磁盘阵列。
在一些实施例中,针对每个卷,基于总新增LBA范围得到对应的卷新增LBA范围包括:
基于每个卷的扩容容量和条带范围、以及总新增LBA范围为每个卷分配对应的卷新增LBA范围。
在一些实施例中,方法还包括:
基于新增磁盘的总可用容量以及原磁盘阵列的卷数量得到每个卷的扩容容量。
在一些实施例中,将每个卷新增LBA范围记录至对应的结构体中包括:
将每个卷新增LBA范围的起始LBA值和末尾LBA值记录至对应的结构体中。
在一些实施例中,方法还包括:
将新增磁盘的数量和每个卷新增的分块数量记录至对应的结构体中。
在一些实施例中,方法还包括:
为每个卷设置结构体数量上限。
在一些实施例中,方法还包括:
基于原磁盘阵列中所有数据分块映射的LBA得到初始LBA范围,并将初始LBA范围记录至初始LBA映射表。
在一些实施例中,方法还包括:
将原磁盘阵列的所属磁盘阵列级别、磁盘数量、虚拟磁盘编号及对应的物理磁盘槽位号记录至初始LBA映射表中。
在一些实施例中,方法还包括:
将新磁盘阵列的总新增LBA范围记录至新增LBA映射表。
在一些实施例中,方法还包括:
将新磁盘阵列的新增磁盘数量、新增磁盘的虚拟磁盘编号及对应的物理磁盘槽位号记录至新增LBA映射表中。
在一些实施例中,方法还包括:
基于原磁盘阵列的数据分块以及新增磁盘的数据分块重新计算每个条带的校验分块的值,以更新校验分块。
在一些实施例中,方法还包括:
响应于目标LBA值没有对应的结构体,确定目标LBA值不属于当前卷的卷新增LBA范围,直接根据当前卷与原磁盘阵列的LBA映射关系、以及原磁盘阵列的LBA与对应PBA的映射关系找到相应的物理存储区域,以进行读写。
在一些实施例中,将新增磁盘分块后并入原磁盘阵列,得到新磁盘阵列还包括:
将新增磁盘分块后并入原磁盘阵列,并校验新增磁盘的数量及容量是否符合原磁盘阵列的规格;
响应于符合规格,确定得到新磁盘阵列。
在一些实施例中,方法还包括:
响应于不符合规格,返回错误提示,以确定无法得到新磁盘阵列。
在一些实施例中,方法还包括:
根据原磁盘阵列所属的磁盘阵列级别以及新增磁盘的容量计算得到新增磁盘的总可用容量。
在一些实施例中,磁盘阵列级别包括RAID0、RAID1、RAID10、RAID5及RAID6。
本发明的另一方面,还提供了一种磁盘阵列扩容系统,包括:
新磁盘阵列模块,配置用于响应于接收到对原磁盘阵列进行扩容的请求,基于请求将新增磁盘分块后并入原磁盘阵列,得到新磁盘阵列,并基于新增磁盘的总可用容量得到新磁盘阵列的总新增LBA范围;
遍历模块,配置用于遍历新磁盘阵列中所有卷,并针对每个卷,基于总新增LBA范围得到对应的卷新增LBA范围,并将每个卷新增LBA范围记录至对应的结构体中;
判断模块,配置用于响应于对当前卷进行读写,判断其目标LBA值是否有对应的结构体;以及
读写模块,配置用于响应于目标LBA值有对应的目标结构体,基于目标结构体确认目标LBA值所对应的新磁盘阵列中的实际LBA值,并利用实际LBA值对应的PBA的物理存储区域进行读写。
本发明的又一方面,还提供了一种计算机可读存储介质,存储有计算机程序指令,该计算机程序指令被处理器执行时实现上述方法。
本发明的再一方面,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该计算机程序被处理器执行时执行上述方法。
本发明至少具有以下有益技术效果:
本发明的磁盘阵列扩容方法,从RAID阵列上优化了条带数据分块的布局,使得RAID阵列扩容后,只对其中对应条带的数据分块进行增加,而无需进行磁盘数据分块迁移,只需重新计算条带中校验分块值即可,既减少了CPU开销,又降低了系统复杂度,提升了系统的高可靠性;通过采用本发明的扩容方法可以实现卷自动分摊容量,省去了用户繁琐的操作,使得扩容操作一步到位,提高了用户的体验感,进而提升了产品的易用性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为根据现有技术提供的增加硬盘后实现卷扩容的结构示意图;
图2为根据本发明实施例提供的磁盘阵列扩容方法的示意图;
图3为根据本发明实施例提供的磁盘阵列扩容的结构示意图;
图4为根据本发明实施例提供的磁盘阵列扩容后将扩容容量自动分配到卷的流程示意图;
图5为根据本发明实施例提供的磁盘阵列扩容系统的示意图;
图6为根据本发明实施例提供的实现磁盘阵列扩容方法的计算机可读存储介质的示意图;
图7为根据本发明实施例提供的执行磁盘阵列扩容方法的计算机设备的硬件结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称的非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备固有的其他步骤或单元。
基于上述目的,本发明实施例的第一个方面,提出了一种磁盘阵列扩容方法的实施例。图2示出的是本发明提供的磁盘阵列扩容方法的实施例的示意图。如图2所示,本发明实施例包括如下步骤:
步骤S10、响应于接收到对原磁盘阵列进行扩容的请求,基于请求将新增磁盘分块后并入原磁盘阵列,得到新磁盘阵列,并基于新增磁盘的总可用容量得到新磁盘阵列的总新增LBA范围;
步骤S20、遍历新磁盘阵列中所有卷,并针对每个卷,基于总新增LBA范围得到对应的卷新增LBA范围,并将每个卷新增LBA范围记录至对应的结构体中;
步骤S30、响应于对当前卷进行读写,判断其目标LBA值是否有对应的结构体;
步骤S40、响应于目标LBA值有对应的目标结构体,基于目标结构体确认目标LBA值所对应的新磁盘阵列中的实际LBA值,并利用实际LBA值对应的PBA的物理存储区域进行读写。
本发明实施例的磁盘阵列扩容方法,从RAID阵列上优化了条带数据分块的布局,使得RAID阵列扩容后,只对其中对应条带的数据分块进行增加,而无需进行磁盘数据分块迁移,只需重新计算条带中校验分块值即可,既减少了CPU开销,又降低了系统复杂度,提升了系统的高可靠性;通过采用本发明实施例的扩容方法可以实现卷自动分摊容量,省去了用户繁琐的操作,使得扩容操作一步到位,提高了用户的体验感,进而提升了产品的易用性。
本发明实施例的磁盘阵列扩容方法不仅可以在RAID卡场景下应用,还可以应用于任何存储相关的设备底层软件下实现,可以通过C语言或者C++编程语言实现。
在一些实施例中,将新增磁盘分块后并入原磁盘阵列,得到新磁盘阵列包括:将新增磁盘按照原磁盘阵列的分块大小进行分块,并使原磁盘阵列的条带中数据分块和校验分块的位置保持不变,将分块后的新增磁盘直接并入原磁盘阵列,得到新磁盘阵列。
图3示出了根据本发明实施例提供的磁盘阵列扩容的结构示意图。如图3所示,本实施例使用RAID6作为磁盘阵列(RAID,Redundant Array of Independent Disks)进行举例说明,具体地,由6块物理盘组成一个RAID6阵列,P/Q校验分块呈对角线分布(RAID6阵列中Q校验分块和P校验分块配合运用,可以恢复RAID6阵列中的两个故障磁盘)。扩容前,该阵列由7个stripe(条带)组成,且每个stripe包括4个数据分块,1个P校验分块,1个Q校验分块。当增加2块物理盘扩容后,原RAID阵列(即原磁盘阵列)stripe中的数据分块和校验分块的分布保持不变,新增的每块硬盘按分块大小分摊到原RAID阵列对应条带的数据分块中。扩容后的RAID阵列(即新磁盘阵列),依旧由7个stripe组成,但每个stripe包含的数据分块数量由4变为6个,并且原条带中的P校验分块和Q校验分块位置不变,只是其校验值需要重新计算。
在一些实施例中,方法还包括:基于原磁盘阵列中所有数据分块映射的LBA得到初始LBA范围,并将初始LBA范围记录至初始LBA映射表。
在一些实施例中,方法还包括:将原磁盘阵列的所属磁盘阵列级别、磁盘数量、虚拟磁盘编号及对应的物理磁盘槽位号记录至初始LBA映射表中。
在一些实施例中,磁盘阵列级别包括但不限于RAID0、RAID1、RAID10、RAID5及RAID6。
具体地,RAID阵列创建后,根据阵列中条带的数据分块,映射出第1个RAID LbaMap,记为Map0(即初始LBA映射表),其初始LBA(Logical Block Address,逻辑区块地址)范围是通过组成RAID阵列的物理盘容量换算得出,使用LBA表征。同时,Map0要记录的信息包括阵列ID(身份识别号)、RAID级别、阵列磁盘数量、组成阵列的虚拟磁盘编号LDN(0~N-1)及物理磁盘编号PDN(磁盘槽位号)的对应关系。
LBA为硬盘中数据扇区(块)的逻辑地址,一般HDD盘(机械硬盘)扇区大小为512B,SSD盘(固态硬盘)数据块大小为4K,硬盘组成RAID阵列后,根据硬盘容量及RAID级别计算得出RAID阵列的可用容量,再通过LBA来表征。例如,多块HDD盘组成一个RAID阵列,换算出可用容量为32G,32G=32*1024*1024*2*512=25*210*210*2*Sector=226*Sector,也就是说,32G的RAID阵列容量包含226个数据扇区,其LBA范围为0~226-1,如果从32G的RAID阵列中创建16G的卷,那么卷的LBA范围为0~225-1。
在一些实施例中,针对每个卷,基于总新增LBA范围得到对应的卷新增LBA范围包括:基于每个卷的扩容容量和条带范围、以及总新增LBA范围为每个卷分配对应的卷新增LBA范围。
在一些实施例中,方法还包括:基于新增磁盘的总可用容量以及原磁盘阵列的卷数量得到每个卷的扩容容量。
在一些实施例中,方法还包括:根据原磁盘阵列所属的磁盘阵列级别以及新增磁盘的容量计算得到新增磁盘的总可用容量。
在一些实施例中,方法还包括:将新磁盘阵列的总新增LBA范围记录至新增LBA映射表。
在一些实施例中,方法还包括:将新磁盘阵列的新增磁盘数量、新增磁盘的虚拟磁盘编号及对应的物理磁盘槽位号记录至新增LBA映射表中。
具体地,当增加物理盘进行RAID扩容后,扩容部分映射出1个新的RAID Lba Map,记为SubMap1(即新增LBA映射表),其卷新增LBA范围是通过新增的物理盘容量换算得出,同样使用LBA表征。同时,SubMap1也要记录的信息包括所属的阵列ID、新增磁盘数量、新增盘的虚拟磁盘编号LDN(0~N-1)及物理磁盘编号PDN(磁盘槽位号)的对应关系。
RAID阵列每扩容一次,会新增一个SubMap(即新增LBA映射表)。因此,假设一个RAID阵列扩容N次,该阵列有且只有一个初始Map0以及N个SubMap。并且,每次RAID扩容后,无需进行条带数据分块的重新排布,因此无需进行磁盘数据迁移任务,大大降低了系统CPU(Central Process Unit,中央处理器)开销以及复杂度。
在一些实施例中,将每个卷新增LBA范围记录至对应的结构体中包括:将每个卷新增LBA范围的起始LBA值和末尾LBA值记录至对应的结构体中。
在一些实施例中,方法还包括:将新增磁盘的数量和每个卷新增的分块数量记录至对应的结构体中。
在一些实施例中,方法还包括:为每个卷设置结构体数量上限。
具体地,针对卷,为每个卷设计了StripeSequence(即结构体),来保存RAID扩容自动分配到卷的容量LBA偏移及大小,从而达到自动扩容卷的目的,使得用户操作步骤大大简化。
每个StripeSequence包含同一批增加到RAID阵列的Disk(磁盘)映射的LBA信息,每个卷最多包含128个(即数量上限)StripeSequence,每个StripeSequence包含如下信息:
struct VolumeSs
{
UINT8 numDisks; //该StripeSequence中包含几个物理磁盘
UINT16 stripeChunks; //条带分块个数
UINT64 startLba; //该StripeSequence在RAID阵列中的起始LBA
UINT64 maxLba; //该StripeSequence在RAID阵列中的最大LBA
}
因此,每当RAID扩容后,阵列上所属的卷会新增一个StripeSequence,自动将RAID阵列扩容的容量分配到卷,用户无需再手动给卷进行扩容。
当主机对卷进行读写时,通过卷的LBA值首先判断该LBA属于卷的哪个StripeSequence,从所属的StripeSequence中获取信息并计算卷LBA对应的阵列LBA。根据阵列LBA计算出虚拟磁盘编号LDN及物理盘PBA(Physics Block Address,物理区块地址)的方法具体如下:
(1) 计算阵列LBA所在的分块序号:
Chunk_number = LBA / Chunk_size
(2) 计算阵列LBA所在分块中的偏移:
Chunk_offset = LBA % Chunk_size
(3) 计算阵列LBA所在的条带序号:
Stripe_number = Chunk_number / numDisks
(4) 计算阵列LBA所在的虚拟磁盘编号LDN:
LDN_number = Chunk_number % numDisks
(5) 计算物理盘PBA:
Disk_PBA = Stripe_number *Chunk_size + Chunk_offset
其中,“%”表示取余运算;Chunk为分块,是磁盘上的物理存储介质的分区,用于RAID阵列进行数据分块移动的粒度大小,也是组成条带的单位。
本发明实施例适用于RAID阵列通过增加硬盘方式扩容,直接将扩容容量自动分配到卷。图4示出了根据本发明实施例提供的磁盘阵列扩容后将扩容容量自动分配到卷的流程示意图。结合图4所示,该流程还包括以下实施例:
在一些实施例中,方法还包括:基于原磁盘阵列的数据分块以及新增磁盘的数据分块重新计算每个条带的校验分块的值,以更新校验分块。
在一些实施例中,将新增磁盘分块后并入原磁盘阵列,得到新磁盘阵列还包括:将新增磁盘分块后并入原磁盘阵列,并校验新增磁盘的数量及容量是否符合原磁盘阵列的规格;响应于符合规格,确定得到新磁盘阵列。
在一些实施例中,方法还包括:响应于不符合规格,返回错误提示,以确定无法得到新磁盘阵列。
在一些实施例中,方法还包括:响应于目标LBA值没有对应的结构体,确定目标LBA值不属于当前卷的卷新增LBA范围,直接根据当前卷与原磁盘阵列的LBA映射关系、以及原磁盘阵列的LBA与对应PBA的映射关系找到相应的物理存储区域,以进行读写。
本实施例中,若目标LBA值没有对应的结构体,说明目标LBA值不属于当前卷的卷新增LBA范围,则直接按照原磁盘阵列的读写方式进行读写。
本发明实施例的第二个方面,还提供了一种磁盘阵列扩容系统。图5示出的是本发明提供的磁盘阵列扩容系统的实施例的示意图。如图6所示,一种磁盘阵列扩容系统包括:新磁盘阵列模块10,配置用于响应于接收到对原磁盘阵列进行扩容的请求,基于请求将新增磁盘分块后并入原磁盘阵列,得到新磁盘阵列,并基于新增磁盘的总可用容量得到新磁盘阵列的总新增LBA范围;遍历模块20,配置用于遍历新磁盘阵列中所有卷,并针对每个卷,基于总新增LBA范围得到对应的卷新增LBA范围,并将每个卷新增LBA范围记录至对应的结构体中;判断模块30,配置用于响应于对当前卷进行读写,判断其目标LBA值是否有对应的结构体;以及读写模块40,配置用于响应于目标LBA值有对应的目标结构体,基于目标结构体确认目标LBA值所对应的新磁盘阵列中的实际LBA值,并利用实际LBA值对应的PBA的物理存储区域进行读写。
本发明实施例的第三个方面,还提供了一种计算机可读存储介质,图6示出了根据本发明实施例提供的实现磁盘阵列扩容方法的计算机可读存储介质的示意图。如图6所示,计算机可读存储介质3存储有计算机程序指令31。该计算机程序指令31被处理器执行时实现如下步骤:
响应于接收到对原磁盘阵列进行扩容的请求,基于请求将新增磁盘分块后并入原磁盘阵列,得到新磁盘阵列,并基于新增磁盘的总可用容量得到新磁盘阵列的总新增LBA范围;
遍历新磁盘阵列中所有卷,并针对每个卷,基于总新增LBA范围得到对应的卷新增LBA范围,并将每个卷新增LBA范围记录至对应的结构体中;
响应于对当前卷进行读写,判断其目标LBA值是否有对应的结构体;
响应于目标LBA值有对应的目标结构体,基于目标结构体确认目标LBA值所对应的新磁盘阵列中的实际LBA值,并利用实际LBA值对应的PBA的物理存储区域进行读写。
在一些实施例中,将新增磁盘分块后并入原磁盘阵列,得到新磁盘阵列包括:将新增磁盘按照原磁盘阵列的分块大小进行分块,并使原磁盘阵列的条带中数据分块和校验分块的位置保持不变,将分块后的新增磁盘直接并入原磁盘阵列,得到新磁盘阵列。
在一些实施例中,针对每个卷,基于总新增LBA范围得到对应的卷新增LBA范围包括:基于每个卷的扩容容量和条带范围、以及总新增LBA范围为每个卷分配对应的卷新增LBA范围。
在一些实施例中,步骤还包括:
基于新增磁盘的总可用容量以及原磁盘阵列的卷数量得到每个卷的扩容容量。
在一些实施例中,将每个卷新增LBA范围记录至对应的结构体中包括:
将每个卷新增LBA范围的起始LBA值和末尾LBA值记录至对应的结构体中。
在一些实施例中,步骤还包括:将新增磁盘的数量和每个卷新增的分块数量记录至对应的结构体中。
在一些实施例中,步骤还包括:为每个卷设置结构体数量上限。
在一些实施例中,步骤还包括:基于原磁盘阵列中所有数据分块映射的LBA得到初始LBA范围,并将初始LBA范围记录至初始LBA映射表。
在一些实施例中,步骤还包括:将原磁盘阵列的所属磁盘阵列级别、磁盘数量、虚拟磁盘编号及对应的物理磁盘槽位号记录至初始LBA映射表中。
在一些实施例中,步骤还包括:将新磁盘阵列的总新增LBA范围记录至新增LBA映射表。
在一些实施例中,步骤还包括:将新磁盘阵列的新增磁盘数量、新增磁盘的虚拟磁盘编号及对应的物理磁盘槽位号记录至新增LBA映射表中。
在一些实施例中,步骤还包括:基于原磁盘阵列的数据分块以及新增磁盘的数据分块重新计算每个条带的校验分块的值,以更新校验分块。
在一些实施例中,步骤还包括:响应于目标LBA值没有对应的结构体,确定目标LBA值不属于当前卷的卷新增LBA范围,直接根据当前卷与原磁盘阵列的LBA映射关系、以及原磁盘阵列的LBA与对应PBA的映射关系找到相应的物理存储区域,以进行读写。
在一些实施例中,将新增磁盘分块后并入原磁盘阵列,得到新磁盘阵列还包括:将新增磁盘分块后并入原磁盘阵列,并校验新增磁盘的数量及容量是否符合原磁盘阵列的规格;响应于符合规格,确定得到新磁盘阵列。
在一些实施例中,步骤还包括:响应于不符合规格,返回错误提示,以确定无法得到新磁盘阵列。
在一些实施例中,步骤还包括:根据原磁盘阵列所属的磁盘阵列级别以及新增磁盘的容量计算得到新增磁盘的总可用容量。
在一些实施例中,磁盘阵列级别包括RAID0、RAID1、RAID10、RAID5及RAID6。
应当理解,在相互不冲突的情况下,以上针对根据本发明的磁盘阵列扩容方法阐述的所有实施方式、特征和优势同样地适用于根据本发明的磁盘阵列扩容系统和存储介质。
本发明实施例的第四个方面,还提供了一种计算机设备,包括如图7所示的存储器402和处理器401,该存储器402中存储有计算机程序,该计算机程序被该处理器401执行时实现上述任意一项实施例的方法。
如图7所示,为本发明提供的执行磁盘阵列扩容方法的计算机设备的一个实施例的硬件结构示意图。以如图7所示的计算机设备为例,在该计算机设备中包括一个处理器401以及一个存储器402,并还可以包括:输入装置403和输出装置404。处理器401、存储器402、输入装置403和输出装置404可以通过总线或者其他方式连接,图7中以通过总线连接为例。输入装置403可接收输入的数字或字符信息,以及产生与磁盘阵列扩容系统的用户设置以及功能控制有关的键信号输入。输出装置404可包括显示屏等显示设备。
存储器402作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的磁盘阵列扩容方法对应的程序指令/模块。存储器402可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储磁盘阵列扩容方法的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器402可选包括相对于处理器401远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器401通过运行存储在存储器402中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的磁盘阵列扩容方法。
最后需要说明的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。作为例子而非限制性的,非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)或快闪存储器。易失性存储器可以包括随机存取存储器(RAM),该RAM可以充当外部高速缓存存储器。作为例子而非限制性的,RAM 可以以多种形式获得,比如同步RAM(DRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据速率SDRAM(DDRSDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)、以及直接Rambus RAM(DRRAM)。所公开的方面的存储设备意在包括但不限于这些和其它合适类型的存储器。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

Claims (20)

1.一种磁盘阵列扩容方法,其特征在于,包括以下步骤:
响应于接收到对原磁盘阵列进行扩容的请求,基于所述请求将新增磁盘分块后并入所述原磁盘阵列,得到新磁盘阵列,并基于所述新增磁盘的总可用容量得到所述新磁盘阵列的总新增LBA范围;
遍历所述新磁盘阵列中所有卷,并针对每个卷,基于所述总新增LBA范围得到对应的卷新增LBA范围,并将每个卷新增LBA范围记录至对应的结构体中;
响应于对当前卷进行读写,判断其目标LBA值是否有对应的结构体;
响应于所述目标LBA值有对应的目标结构体,基于所述目标结构体确认所述目标LBA值所对应的所述新磁盘阵列中的实际LBA值,并利用所述实际LBA值对应的PBA的物理存储区域进行读写。
2.根据权利要求1所述的方法,其特征在于,将新增磁盘分块后并入所述原磁盘阵列,得到新磁盘阵列包括:
将新增磁盘按照所述原磁盘阵列的分块大小进行分块,并使所述原磁盘阵列的条带中数据分块和校验分块的位置保持不变,将分块后的新增磁盘直接并入所述原磁盘阵列,得到新磁盘阵列。
3.根据权利要求1所述的方法,其特征在于,针对每个卷,基于所述总新增LBA范围得到对应的卷新增LBA范围包括:
基于每个卷的扩容容量和条带范围、以及所述总新增LBA范围为每个卷分配对应的卷新增LBA范围。
4.根据权利要求3所述的方法,其特征在于,还包括:
基于所述新增磁盘的所述总可用容量以及所述原磁盘阵列的卷数量得到所述每个卷的扩容容量。
5.根据权利要求1所述的方法,其特征在于,将每个卷新增LBA范围记录至对应的结构体中包括:
将每个卷新增LBA范围的起始LBA值和末尾LBA值记录至对应的结构体中。
6.根据权利要求1或5所述的方法,其特征在于,还包括:
将所述新增磁盘的数量和每个卷新增的分块数量记录至对应的结构体中。
7.根据权利要求1所述的方法,其特征在于,还包括:
为所述每个卷设置结构体数量上限。
8.根据权利要求1所述的方法,其特征在于,还包括:
基于所述原磁盘阵列中所有数据分块映射的LBA得到初始LBA范围,并将所述初始LBA范围记录至初始LBA映射表。
9.根据权利要求8所述的方法,其特征在于,还包括:
将所述原磁盘阵列的所属磁盘阵列级别、磁盘数量、虚拟磁盘编号及对应的物理磁盘槽位号记录至所述初始LBA映射表中。
10.根据权利要求1所述的方法,其特征在于,还包括:
将所述新磁盘阵列的所述总新增LBA范围记录至新增LBA映射表。
11.根据权利要求10所述的方法,其特征在于,还包括:
将所述新磁盘阵列的新增磁盘数量、新增磁盘的虚拟磁盘编号及对应的物理磁盘槽位号记录至所述新增LBA映射表中。
12.根据权利要求1所述的方法,其特征在于,还包括:
基于所述原磁盘阵列的数据分块以及所述新增磁盘的数据分块重新计算每个条带的校验分块的值,以更新所述校验分块。
13.根据权利要求1所述的方法,其特征在于,还包括:
响应于所述目标LBA值没有对应的结构体,确定所述目标LBA值不属于所述当前卷的卷新增LBA范围,直接根据所述当前卷与所述原磁盘阵列的LBA映射关系、以及所述原磁盘阵列的LBA与对应PBA的映射关系找到相应的物理存储区域,以进行读写。
14.根据权利要求1所述的方法,其特征在于,将新增磁盘分块后并入所述原磁盘阵列,得到新磁盘阵列还包括:
将新增磁盘分块后并入所述原磁盘阵列,并校验所述新增磁盘的数量及容量是否符合所述原磁盘阵列的规格;
响应于符合所述规格,确定得到新磁盘阵列。
15.根据权利要求14所述的方法,其特征在于,还包括:
响应于不符合所述规格,返回错误提示,以确定无法得到新磁盘阵列。
16.根据权利要求1所述的方法,其特征在于,还包括:
根据所述原磁盘阵列所属的磁盘阵列级别以及所述新增磁盘的容量计算得到所述新增磁盘的总可用容量。
17.根据权利要求16所述的方法,其特征在于,所述磁盘阵列级别包括RAID0、RAID1、RAID10、RAID5及RAID6。
18.一种磁盘阵列扩容系统,其特征在于,包括:
新磁盘阵列模块,配置用于响应于接收到对原磁盘阵列进行扩容的请求,基于所述请求将新增磁盘分块后并入所述原磁盘阵列,得到新磁盘阵列,并基于所述新增磁盘的总可用容量得到所述新磁盘阵列的总新增LBA范围;
遍历模块,配置用于遍历所述新磁盘阵列中所有卷,并针对每个卷,基于所述总新增LBA范围得到对应的卷新增LBA范围,并将每个卷新增LBA范围记录至对应的结构体中;
判断模块,配置用于响应于对当前卷进行读写,判断其目标LBA值是否有对应的结构体;以及
读写模块,配置用于响应于所述目标LBA值有对应的目标结构体,基于所述目标结构体确认所述目标LBA值所对应的所述新磁盘阵列中的实际LBA值,并利用所述实际LBA值对应的PBA的物理存储区域进行读写。
19.一种计算机可读存储介质,其特征在于,存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如权利要求1-17任意一项所述的方法。
20.一种计算机设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时执行如权利要求1-17任意一项所述的方法。
CN202211545889.2A 2022-12-05 2022-12-05 一种磁盘阵列扩容方法、系统、存储介质及设备 Active CN115599313B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211545889.2A CN115599313B (zh) 2022-12-05 2022-12-05 一种磁盘阵列扩容方法、系统、存储介质及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211545889.2A CN115599313B (zh) 2022-12-05 2022-12-05 一种磁盘阵列扩容方法、系统、存储介质及设备

Publications (2)

Publication Number Publication Date
CN115599313A true CN115599313A (zh) 2023-01-13
CN115599313B CN115599313B (zh) 2023-03-17

Family

ID=84853644

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211545889.2A Active CN115599313B (zh) 2022-12-05 2022-12-05 一种磁盘阵列扩容方法、系统、存储介质及设备

Country Status (1)

Country Link
CN (1) CN115599313B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117687579A (zh) * 2024-02-02 2024-03-12 成都电科星拓科技有限公司 桥接芯片

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101251789A (zh) * 2008-03-28 2008-08-27 清华大学 廉价磁盘冗余阵列raid5卷快速扩容方法
CN101546249A (zh) * 2008-03-26 2009-09-30 中兴通讯股份有限公司 磁盘阵列在线容量扩展方法
CN102043589A (zh) * 2009-10-20 2011-05-04 成都市华为赛门铁克科技有限公司 磁盘阵列的扩容方法和系统
CN102200892A (zh) * 2011-04-29 2011-09-28 华中科技大学 一种基于动态raid系统的扩容方法
CN113296702A (zh) * 2021-05-20 2021-08-24 山东云海国创云计算装备产业创新中心有限公司 一种磁盘阵列扩容方法、装置、设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101546249A (zh) * 2008-03-26 2009-09-30 中兴通讯股份有限公司 磁盘阵列在线容量扩展方法
CN101251789A (zh) * 2008-03-28 2008-08-27 清华大学 廉价磁盘冗余阵列raid5卷快速扩容方法
CN102043589A (zh) * 2009-10-20 2011-05-04 成都市华为赛门铁克科技有限公司 磁盘阵列的扩容方法和系统
CN102200892A (zh) * 2011-04-29 2011-09-28 华中科技大学 一种基于动态raid系统的扩容方法
CN113296702A (zh) * 2021-05-20 2021-08-24 山东云海国创云计算装备产业创新中心有限公司 一种磁盘阵列扩容方法、装置、设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117687579A (zh) * 2024-02-02 2024-03-12 成都电科星拓科技有限公司 桥接芯片
CN117687579B (zh) * 2024-02-02 2024-04-09 成都电科星拓科技有限公司 桥接芯片

Also Published As

Publication number Publication date
CN115599313B (zh) 2023-03-17

Similar Documents

Publication Publication Date Title
US10783037B2 (en) Data storage device, host device for data storage device operations, and data writing method
EP3617867B1 (en) Fragment management method and fragment management apparatus
US8832371B2 (en) Storage system with multiple flash memory packages and data control method therefor
CN110858124B (zh) 数据迁移方法及装置
US9990277B2 (en) System and method for efficient address translation of flash memory device
CN105446890B (zh) 智能数据部署
CN108255415B (zh) 建立多重命名空间方法与存取多重命名空间的数据的方法
US9817768B2 (en) Storage system and data storing method
JP2020035300A (ja) 情報処理装置および制御方法
US10768838B2 (en) Storage apparatus and distributed storage system
US20100318760A1 (en) Memory controller, nonvolatile storage device, and nonvolatile storage system
US11010079B2 (en) Concept for storing file system metadata within solid-stage storage devices
CN112513804B (zh) 一种数据处理方法及装置
CN115639970B (zh) 基于磁盘阵列卡的存储虚拟化方法、系统、装置及设备
CN115599313B (zh) 一种磁盘阵列扩容方法、系统、存储介质及设备
CN111857572B (zh) Tlc固态硬盘的数据写入方法、装置、设备及存储介质
JP2005135116A (ja) ストレージ装置及びそのアクセス制御方法
KR101029704B1 (ko) 플래시 메모리 관리 방법
CN110569000A (zh) 基于固态硬盘阵列的主机端raid管理方法和装置
JP7407230B2 (ja) キー値データ記憶デバイスのためのeccパリティ偏り
CN115904255A (zh) 一种数据请求方法、装置、设备及存储介质
JP2006114008A (ja) システム構成を更新するための回復記録を構成するための方法および装置
KR100970537B1 (ko) Ssd 관리 장치 및 방법
CN115562595B (zh) 一种卷创建方法及装置、卷读写方法及装置、电子设备
CN110659216A (zh) Nid分配方法及其存储设备

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