CN115639970B - 基于磁盘阵列卡的存储虚拟化方法、***、装置及设备 - Google Patents
基于磁盘阵列卡的存储虚拟化方法、***、装置及设备 Download PDFInfo
- Publication number
- CN115639970B CN115639970B CN202211545895.8A CN202211545895A CN115639970B CN 115639970 B CN115639970 B CN 115639970B CN 202211545895 A CN202211545895 A CN 202211545895A CN 115639970 B CN115639970 B CN 115639970B
- Authority
- CN
- China
- Prior art keywords
- volume
- container node
- disk array
- container
- management table
- 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 73
- 238000003491 array Methods 0.000 claims abstract description 32
- 230000004044 response Effects 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 11
- 238000012217 deletion Methods 0.000 claims description 7
- 230000037430 deletion Effects 0.000 claims description 7
- 238000007596 consolidation process Methods 0.000 claims description 3
- 230000010354 integration Effects 0.000 claims description 3
- 230000011218 segmentation Effects 0.000 claims description 3
- 238000007726 management method Methods 0.000 description 36
- 238000010586 diagram Methods 0.000 description 17
- 238000005516 engineering process Methods 0.000 description 9
- 238000012005 ligant binding assay Methods 0.000 description 9
- 238000013508 migration Methods 0.000 description 8
- 230000005012 migration Effects 0.000 description 8
- 238000013507 mapping Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 239000012530 fluid Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于磁盘阵列卡的存储虚拟化方法、***、装置及设备,涉及磁盘阵列技术领域,方法包括:响应于磁盘阵列卡接收到主机下发的创建命令,基于创建命令创建指定数量的磁盘阵列,并申请若干容器节点,以使每个容器节点管理多个磁盘阵列;针对每个容器节点,将其每个磁盘阵列切分为多个预定大小的块以形成块组,并分别从每个块组中获取若干块并整合成卷;响应于磁盘阵列卡接收到用户下发的卷操作命令,基于卷操作命令通过容器节点找到目标卷,并利用相应的块组对目标卷进行操作。本发明在不增加硬件的情况下可以实现更高效的卷管理,创新性地实现RAID卡更灵活的容量空间分配。
Description
技术领域
本发明涉及磁盘阵列技术领域,尤其涉及一种基于磁盘阵列卡的存储虚拟化方法、***、装置及设备。
背景技术
RAID(Redundant Array of Independent Disks,独立冗余磁盘阵列)是一种存储技术,它通过增加校验冗余能力来提高存储性能和可靠性。RAID是通过将多个存储驱动器组件(例如,磁盘硬盘和/或固态硬盘)组合成一个逻辑单元而创建的,然后使用各种技术将数据分布在各个驱动器上。RAID技术可以将多块磁盘组合在一起以提供单个可使用的更大容量的逻辑磁盘、并发的I/O(Input/Output,数据输入/输出)读写能力、数据冗余能力等。RAID技术在服务器***中已经是不可或缺的存在,为医疗银行等各行各业提供了高效的数据存储以及冗余备份能力。随着科技的发展,存储技术也在飞跃的改进,RAID阵列就是存储领域中的重要技术之一,它的发展主要经历了RAID0、RAID1、RAID10、RAID5、RAID6等级别。而RAID卡,就是实现将服务器连接的硬盘按照RAID级别组织成RAID阵列功能的板卡,用户在RAID卡上创建卷来供主机作为块设备使用。
RAID卡中的卷(volume)是向用户提供的一块读写逻辑单元,它代表的是一块LBA(Logical Block Address,逻辑区块地址)存储地址。用户可以将卷当做一块逻辑磁盘进行使用。对卷的读写其实就是对LBA地址映射到的PBA(Physical Block Address,物理区块地址)地址的读写。RAID卡内通过内部映射将虚拟的逻辑LBA地址转为磁盘的物理地址(PBA)进行实际的I/O读写操作。因此用户在使用RAID卡的时候,实际上操作的是卷。当某个卷的存储空间不足以支撑用户数据需求时,就需要对该卷进行扩容,卷扩容时,如果当前卷所属的RAID阵列还存在可用容量时,可以直接从该RAID阵列上分配可用空间,而当RAID阵列已无可用容量时,就需要通过增加磁盘方式扩容。亦或是用户需要再创建一个或多个卷,即用户在RAID阵列上创建一个或者多个指定容量的卷来供主机作为块设备使用。但是目前业界现有的RAID卡控制器,创建卷的容量只能来自同一个RAID阵列,并且要求卷容量对应的LBA分布在其RAID阵列上连续。
图1示出了根据现有技术提供的RAID5阵列与卷的映射关系的结构示意图。如图1所示,由5块物理盘组成一个RAID5阵列,映射为一个RAID5 Lba Map(Map表示图),在RAID5Lba Map上划分出2段连续的LBA空间,组成2个Volume供主机使用。
目前这种卷管理方式存在以下缺点:
1)图1所示的Volume1和Volume2的LBA是连续的,当用户操作卷Volume1扩容时,需要向后移动Volume2以腾出Volume1向后扩容的LBA,向后移动Volume2需要进行分块的数据迁移,特别耗时,影响RAID卡性能;
2)当RAID阵列上删除卷会导致RAID阵列的可用LBA被碎片化,即LBA不连续,使其总可用容量被切分,用户再次创建卷时,总可用容量满足,但由于可用容量的切分导致用户无法创建满足容量需求的卷,影响用户业务,致使用户体验下降;
3)当RAID阵列上创建多个卷以后,由于卷LBA分布的连续性,致使卷的扩容操作受限,只能扩容有连续可用LBA的卷,这同样也会影响用户业务,致使用户体验下降。
因此,需要一种更好的卷管理方式并实现更灵活的RAID卡容量空间分配。
发明内容
有鉴于此,本发明的目的在于提出一种基于磁盘阵列卡的存储虚拟化方法、***、装置及设备,用以解决现有技术的磁盘阵列卡的存储虚拟化方式致使在卷管理方面不够灵活,进而影响磁盘阵列卡性能的问题。
基于上述目的,本发明提供了一种基于磁盘阵列卡的存储虚拟化方法,包括以下步骤:
响应于磁盘阵列卡接收到主机下发的创建命令,基于创建命令创建指定数量的磁盘阵列,并申请若干容器节点,以使每个容器节点管理多个磁盘阵列;
针对每个容器节点,将其每个磁盘阵列切分为多个预定大小的块以形成块组,并分别从每个块组中获取若干块并整合成卷;
响应于磁盘阵列卡接收到用户下发的卷操作命令,基于卷操作命令通过容器节点找到目标卷,并利用相应的块组对目标卷进行操作。
在一些实施例中,响应于磁盘阵列卡接收到用户下发的卷操作命令,基于卷操作命令通过容器节点找到目标卷,并利用相应的块组对目标卷进行操作包括:
响应于磁盘阵列卡接收到用户下发的删除卷命令,基于删除卷命令通过容器节点找到目标卷,并将目标卷的所有块释放至相应的块组。
在一些实施例中,响应于磁盘阵列卡接收到用户下发的卷操作命令,基于卷操作命令通过容器节点找到目标卷,并利用相应的块组对目标卷进行操作还包括:
响应于磁盘阵列卡接收到用户下发的卷扩容命令,基于卷扩容命令通过容器节点找到目标卷,并向相应的块组申请块以实现目标卷的扩容。
在一些实施例中,方法还包括:
将每个容器节点作为存储子池,并由若干容器节点构成容器池,以作为总存储池。
在一些实施例中,由若干容器节点构成容器池包括:
通过每个容器节点的前指针字段和后指针字段将若干容器节点连接,以构成容器池。
在一些实施例中,前指针字段指向本容器节点的前一个容器节点,后指针字段指向本容器节点的后一个容器节点。
在一些实施例中,容器节点包括控制字段,控制字段通过比特位的符号表示对应卷的操作状态。
在一些实施例中,方法还包括:
响应于比特位为第一二进制符号,确定比特位的对应卷的操作状态为可操作状态;
响应于比特位为第二二进制符号,确定比特位的对应卷的操作状态为正常状态。
在一些实施例中,方法还包括:
通过控制线程对目标卷对应的比特位进行设置。
在一些实施例中,方法还包括:
通过工作线程扫描控制字段中的所有比特位,并查找其中具有第二二进制符号的比特位,以定位至目标卷。
在一些实施例中,方法还包括:
响应于卷整合完成,将若干容器节点的控制字段的比特位全部置为第二二进制符号。
在一些实施例中,容器节点还包括管理表指针字段,管理表指针字段指向管理表存放区域,管理表用于管理卷。
在一些实施例中,管理表包括卷标识号、块的预定大小、与卷对应的磁盘阵列的标识号以及卷状态,卷状态至少包括卷删除状态及卷扩容状态。
在一些实施例中,方法还包括:
通过控制线程对目标卷对应的管理表中的卷状态进行设置。
在一些实施例中,方法还包括:
通过工作线程确认目标卷在对应的管理表中的卷状态,并基于确认的卷状态对目标卷进行操作。
在一些实施例中,方法还包括:
响应于目标卷操作完成,更新目标卷对应的管理表。
在一些实施例中,方法还包括:
响应于指定数量的磁盘阵列创建完成,判断非易失性随机访问存储器的剩余存储容量是否大于预设容量;
响应于剩余存储容量大于预设容量,基于剩余存储容量申请若干容器节点。
在一些实施例中,响应于磁盘阵列卡接收到主机下发的创建命令,基于创建命令创建指定数量的磁盘阵列包括:
响应于磁盘阵列卡接收到主机下发的创建命令,解析创建命令,得到命令参数,并基于命令参数创建指定数量的磁盘阵列。
本发明的另一方面,还提供了一种基于磁盘阵列卡的存储虚拟化***,包括:
容器节点模块,配置用于响应于磁盘阵列卡接收到主机下发的创建命令,基于创建命令创建指定数量的磁盘阵列,并申请若干容器节点,以使每个容器节点管理多个磁盘阵列;
切分与整合模块,配置用于针对每个容器节点,将其每个磁盘阵列切分为多个预定大小的块以形成块组,并分别从每个块组中获取若干块并整合成卷;以及
卷操作模块,配置用于响应于磁盘阵列卡接收到用户下发的卷操作命令,基于卷操作命令通过容器节点找到目标卷,并利用相应的块组对目标卷进行操作。
本发明的另一方面,还提供了一种基于磁盘阵列卡的存储虚拟化装置,包括:
容器节点层,包括若干容器节点,每个容器节点管理多个磁盘阵列;
块组层,包括多个块组,每个块组由一个磁盘阵列切分成的多个预定大小的块组成;以及
卷层,包括若干卷,每个卷由多个块组中的若干块整合而成。
在一些实施例中,装置还包括卷操作模块,配置用于响应于磁盘阵列卡接收到用户下发的卷操作命令,基于卷操作命令通过容器节点找到目标卷,并利用相应的块组对目标卷进行操作。
本发明的又一方面,还提供了一种计算机可读存储介质,存储有计算机程序指令,该计算机程序指令被处理器执行时实现上述方法。
本发明的再一方面,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该计算机程序被处理器执行时执行上述方法。
本发明至少具有以下有益技术效果:
本发明的基于磁盘阵列卡的存储虚拟化方法,在不增加硬件的情况下可以实现更高效的卷管理,提升RAID卡的存储性能;并且创新性地实现RAID卡更灵活的容量空间分配,有效提高了用户使用RAID卡的用户体验;还可以在用户操作RAID卡删除卷时,避免RAID阵列可用LBA被碎片化;在处理卷扩容业务时,避免出现数据迁移情况,进而提高RAID卡的整体性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为根据现有技术提供的RAID5阵列与卷的映射关系的结构示意图;
图2为根据本发明实施例提供的基于磁盘阵列卡的存储虚拟化方法的示意图;
图3为根据本发明实施例提供的容器节点的数据结构示意图;
图4为根据本发明实施例提供的采用分层思想实现存储虚拟化方法的结构示意图;
图5为根据本发明实施例提供的创建容器池的流程示意图;
图6为根据本发明实施例提供的RAID卡接收到用户的卷操作命令的流程示意图;
图7为根据本发明实施例提供的基于磁盘阵列卡的存储虚拟化***的示意图;
图8为根据本发明实施例提供的实现基于磁盘阵列卡的存储虚拟化方法的计算机可读存储介质的示意图;
图9为根据本发明实施例提供的执行基于磁盘阵列卡的存储虚拟化方法的计算机设备的硬件结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称的非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备固有的其他步骤或单元。
基于上述目的,本发明实施例的第一个方面,提出了一种基于磁盘阵列卡的存储虚拟化方法的实施例。图2示出的是本发明提供的基于磁盘阵列卡的存储虚拟化方法的实施例的示意图。如图2所示,本发明实施例包括如下步骤:
步骤S10、响应于磁盘阵列卡接收到主机下发的创建命令,基于创建命令创建指定数量的磁盘阵列,并申请若干容器节点,以使每个容器节点管理多个磁盘阵列;
步骤S20、针对每个容器节点,将其每个磁盘阵列切分为多个预定大小的块以形成块组,并分别从每个块组中获取若干块并整合成卷;
步骤S30、响应于磁盘阵列卡接收到用户下发的卷操作命令,基于卷操作命令通过容器节点找到目标卷,并利用相应的块组对目标卷进行操作。
本发明实施例的基于磁盘阵列卡的存储虚拟化方法,在不增加硬件的情况下可以实现更高效的卷管理,提升RAID卡的存储性能;并且创新性地实现RAID卡更灵活的容量空间分配,有效提高了用户使用RAID卡的用户体验;还可以在用户操作RAID卡删除卷时,避免RAID阵列可用LBA被碎片化;在处理卷扩容业务时,避免出现数据迁移情况,进而提高RAID卡的整体性能。
在一些实施例中,响应于磁盘阵列卡接收到用户下发的卷操作命令,基于卷操作命令通过容器节点找到目标卷,并利用相应的块组对目标卷进行操作包括:响应于磁盘阵列卡接收到用户下发的删除卷命令,基于删除卷命令通过容器节点找到目标卷,并将目标卷的所有块释放至相应的块组。
在一些实施例中,响应于磁盘阵列卡接收到用户下发的卷操作命令,基于卷操作命令通过容器节点找到目标卷,并利用相应的块组对目标卷进行操作还包括:响应于磁盘阵列卡接收到用户下发的卷扩容命令,基于卷扩容命令通过容器节点找到目标卷,并向相应的块组申请块以实现目标卷的扩容。
在一些实施例中,方法还包括:将每个容器节点作为存储子池,并由若干容器节点构成容器池,以作为总存储池。
在一些实施例中,由若干容器节点构成容器池包括:通过每个容器节点的前指针字段和后指针字段将若干容器节点连接,以构成容器池。
在一些实施例中,前指针字段指向本容器节点的前一个容器节点,后指针字段指向本容器节点的后一个容器节点。
在一些实施例中,容器节点包括控制字段,控制字段通过比特位的符号表示对应卷的操作状态。
在一些实施例中,方法还包括:响应于比特位为第一二进制符号,确定比特位的对应卷的操作状态为可操作状态;响应于比特位为第二二进制符号,确定比特位的对应卷的操作状态为正常状态。
在一些实施例中,方法还包括:通过控制线程对目标卷对应的比特位进行设置。
在一些实施例中,方法还包括:通过工作线程扫描控制字段中的所有比特位,并查找其中具有第二二进制符号的比特位,以定位至目标卷。
在一些实施例中,方法还包括:响应于卷整合完成,将若干容器节点的控制字段的比特位全部置为第二二进制符号。
在一些实施例中,容器节点还包括管理表指针字段,管理表指针字段指向管理表存放区域,管理表用于管理卷。
在一些实施例中,管理表包括卷标识号、块的预定大小、与卷对应的磁盘阵列的标识号以及卷状态,卷状态至少包括卷删除状态及卷扩容状态。
在一些实施例中,方法还包括:通过控制线程对目标卷对应的管理表中的卷状态进行设置。
在一些实施例中,方法还包括:通过工作线程确认目标卷在对应的管理表中的卷状态,并基于确认的卷状态对目标卷进行操作。
在一些实施例中,方法还包括:响应于目标卷操作完成,更新目标卷对应的管理表。
在一些实施例中,方法还包括:响应于指定数量的磁盘阵列创建完成,判断非易失性随机访问存储器的剩余存储容量是否大于预设容量;响应于剩余存储容量大于预设容量,基于剩余存储容量申请若干容器节点。
在一些实施例中,响应于磁盘阵列卡接收到主机下发的创建命令,基于创建命令创建指定数量的磁盘阵列包括:响应于磁盘阵列卡接收到主机下发的创建命令,解析创建命令,得到命令参数,并基于命令参数创建指定数量的磁盘阵列。
以下为本发明的基于磁盘阵列卡的存储虚拟化方法的具体实施例:
本实施例使用容器(docker)对卷(volume)进行管理,设计了容器节点代表存储池中的子池,并由多个容器节点构成存储总池,总池即容器池。
图3示出了容器节点的数据结构示意图。如图3所示,201指示的control字段可以是uint32类型的数据,uint32中的32个bit(比特)位代表32个卷的卷状态,表示一个容器里最多管理32个卷。bit位为1(即第一二进制符号)则表示对应bit位的卷需要***作(例如用户操作删除卷、卷扩容和卷迁移等),bit位为0(即第二二进制符号)则表示对应bit位的卷是正常状态,即本次无需操作。图3中202指示的buffer_ptr字段是指向存放对卷进行管理的管理表的具体区域,buffer中存放的是所有卷的管理表,卷的管理表如下表1所示。本实施例采用双向链表元数据管理容器节点,图3中203指示的pre_pointer字段是指向双向链表中前一个容器节点的前指针,204指示的next_pointer字段是指向双向链表中后一个容器节点的后指针。
表1 卷的管理表
序号 | Item | Content |
1 | 卷标识(卷ID) | Volume1或Volume2等 |
2 | block大小,block组成卷,block大小由用户创建卷时规定大小 | block大小默认为1G,从小到大有0.5G、1G、2G、4G和8G |
3 | 卷状态 | 正常状态、删除卷、卷扩容等 |
4 | 组成该卷的block来自于哪几个RAID阵列 | 例如:1号RAID、2号RAID、3号RAID |
在RAID卡的NVRAM(Non-Volatile Random Access Memory,非易失性随机访问存储器,指断电后仍能保持数据的一种RAM)硬件资源中新增多个容器节点和卷的管理表。一个容器节点标识一个子池中所管理的所有卷,双向链表通过容器节点中的前指针字段和后指针字段将RAID卡中的所有子池连接在一起,以此实现RAID卡的存储虚拟化,实现对卷更灵活的管理。
需要特别指出的是,当图3中205指示的bit位为1时,表示该bit位对应的卷需要被用户操作,对应表1中的序号3的卷状态(删除卷、卷扩容、卷迁移等非正常状态);bit位为0时,则对应的卷状态是正常状态。
图4示出了采用分层思想实现存储虚拟化方法的结构示意图。如图4所示,本实施例设计的存储虚拟化技术采用由下至上的分层思想,300指示的第一层是由容器节点组成的容器池,每个容器节点管理多个卷;310指示的第二层是多个RAID阵列组成的RAID层;320指示的第三层是由第二层RAID阵列切分后block(块)组成的block组(块组);330指示的第四层是由第三层的block块组成的卷层。
目前业界RAID卡中创建的卷采用的是图1的技术方案,显而易见,卷volume的LBA都来自于同一个RAID阵列,在同一个RAID阵列上创建的多个卷的LBA是连续的(例如图1中的volume1和volum2),因此当用户操作对卷volume1进行扩容时,需要将紧挨着它的卷volume2向后移动以腾出容量以供卷volume1进行扩容,向后移动卷volume2需要进行数据迁移,而数据迁移是一个非常耗时的过程。不仅如此,如果用户操作删除已创建好的卷,会导致RAID阵列可用LBA被碎片化,即不连续了,使其总可用容量被切分,当用户再次创建卷时,虽然阵列总可用容量满足,但由于碎片化的LBA导致用户无法创建满足容量需求的卷,影响用户业务,致使用户体验下降。
通过采用本实施例设计的存储虚拟化技术可以有效解决上述缺陷,如图4中第四层卷的LBA不再来自于同一个RAID阵列,而是来于block层的各个RAID阵列切分后的block块,这样卷的LBA实际上会分散在多个block中,而block又来自于不同的RAID阵列。所以不仅图4中volume1和volume2的LBA不连续,而且卷内部各个block块之间的LBA也是不连续的。
因此,如果用户对图4中volume1操作扩容,只需从相应的block组中取出一个block块加入volume1,而不需要对volume2进行数据迁移。当用户操作删除volume1时,只需将组成volume1的block块释放回各自的block组中,因而不会导致RAID阵列可用LBA被碎片化。
综上所述,利用本实施例设计的存储虚拟化技术,使用卷管理表对容器池中的卷进行管理,并使用多个容器节点形成容器池,容器池实现对RAID卡容量上的虚拟化管理,不仅可以实现更高效的卷管理,而且能够实现更灵活的容量空间分配。
图5示出了创建容器池的流程示意图。如图5所示,创建容器池的流程包括以下步骤:
第一步:RAID卡上电后收到主机下发的创建RAID阵列、创建volume卷、创建存储容器池的命令,并解析该命令。
第二步:RAID卡控制器的驱动程序根据解析的命令参数,创建命令参数指定的一个或多个RAID阵列。
第三步:RAID卡控制器读取NVRAM硬件资源信息,并判断NVRAM硬件资源里是否还有足够的资源用来申请容器节点。
第四步:如果NVRAM硬件资源满足要求,则通过申请的容器节点将RAID阵列管理起来,形成容器池。
第五步:RAID卡控制器的驱动程序根据解析的命令参数,创建命令参数指定的一个或多个volume卷。
第六步:RAID卡控制器读取NVRAM硬件资源信息,判断NVRAM硬件资源里是否还有足够的资源用来申请管理卷的管理表。
第七步:如果NVRAM硬件资源满足要求,由于新创建的卷都没有被用户操作,所以其卷状态都是正常,因此RAID卡控制器将容器节点中control字段维护的32个bit位全部置位为0。
图6示出了RAID卡接收到用户的卷操作命令的流程示意图。如图6所示,具体流程包括以下步骤:
第一步:RAID卡接收用户下发的卷操作命令,并解析该命令。RAID卡控制器根据解析的命令参数,通过容器节点中RAID阵列层、block层、卷层的映射关系找到用户操作的目标卷。
第二步:根据解析的用户操作卷命令参数,对管理卷的管理表中序号3的卷状态赋值为删除卷或卷扩容等,例如用户操作卷为删除卷,则卷状态赋值为删除卷。
第三步:置位容器节点control字段中对应该卷的bit位为1,对卷操作时通过该bit位定位***作的目标卷。
第四步:线程池中的工作线程扫描容器节点control字段中的所有bit位,并判断是否扫描到bit位为1。
第五步:如果bit位为1,则通过容器节点中RAID阵列层、block层、卷层的映射关系找到管理卷的管理表,查询管理表中序号3的卷状态,确定是对卷扩容还是删除卷等。
第六步:进行操作卷特定流程(例如卷迁移、删除卷、卷扩容等)。
第七步:更新容器池中各容器节点与RAID阵列、block块、卷的映射关系。
第八步:更新***作卷的管理表。
本发明实施例的第二个方面,还提供了一种基于磁盘阵列卡的存储虚拟化***。图7示出的是本发明提供的基于磁盘阵列卡的存储虚拟化***的实施例的示意图。如图7所示,一种基于磁盘阵列卡的存储虚拟化***包括:容器节点模块10,配置用于响应于磁盘阵列卡接收到主机下发的创建命令,基于创建命令创建指定数量的磁盘阵列,并申请若干容器节点,以使每个容器节点管理多个磁盘阵列;切分与整合模块20,配置用于针对每个容器节点,将其每个磁盘阵列切分为多个预定大小的块以形成块组,并分别从每个块组中获取若干块并整合成卷;以及卷操作模块30,配置用于响应于磁盘阵列卡接收到用户下发的卷操作命令,基于卷操作命令通过容器节点找到目标卷,并利用相应的块组对目标卷进行操作。
本发明实施例的第三个方面,还提供了一种基于磁盘阵列卡的存储虚拟化装置,如图4所示,该装置包括:容器节点层300,包括若干容器节点,每个容器节点管理多个磁盘阵列;块组层320,包括多个块组,每个块组由一个磁盘阵列切分成的多个预定大小的块组成;以及卷层330,包括若干卷,每个卷由多个块组中的若干块整合而成。
在一些实施例中,装置还包括卷操作模块,配置用于响应于磁盘阵列卡接收到用户下发的卷操作命令,基于卷操作命令通过容器节点找到目标卷,并利用相应的块组对目标卷进行操作。
本发明实施例的第四个方面,还提供了一种计算机可读存储介质,图8示出了根据本发明实施例提供的实现基于磁盘阵列卡的存储虚拟化方法的计算机可读存储介质的示意图。如图8所示,计算机可读存储介质3存储有计算机程序指令31。该计算机程序指令31被处理器执行时实现上述任意一项实施例的方法。
应当理解,在相互不冲突的情况下,以上针对根据本发明的基于磁盘阵列卡的存储虚拟化方法阐述的所有实施方式、特征和优势同样地适用于根据本发明的基于磁盘阵列卡的存储虚拟化***和存储介质。
本发明实施例的第五个方面,还提供了一种计算机设备,包括如图9所示的存储器402和处理器401,该存储器402中存储有计算机程序,该计算机程序被该处理器401执行时实现上述任意一项实施例的方法。
如图9所示,为本发明提供的执行基于磁盘阵列卡的存储虚拟化方法的计算机设备的一个实施例的硬件结构示意图。以如图9所示的计算机设备为例,在该计算机设备中包括一个处理器401以及一个存储器402,并还可以包括:输入装置403和输出装置404。处理器401、存储器402、输入装置403和输出装置404可以通过总线或者其他方式连接,图9中以通过总线连接为例。输入装置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)。所公开的方面的存储设备意在包括但不限于这些和其它合适类型的存储器。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个***的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
结合这里的公开所描述的各种示例性逻辑块、模块和电路可以利用被设计成用于执行这里功能的下列部件来实现或执行:通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。通用处理器可以是微处理器,但是可替换地,处理器可以是任何传统处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP和/或任何其它这种配置。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (21)
1.一种基于磁盘阵列卡的存储虚拟化方法,其特征在于,包括以下步骤:
响应于磁盘阵列卡接收到主机下发的创建命令,基于所述创建命令创建指定数量的磁盘阵列,并申请若干容器节点,以使每个容器节点管理多个磁盘阵列;
针对所述每个容器节点,将其每个磁盘阵列切分为多个预定大小的块以形成块组,并分别从每个块组中获取若干所述块并整合成卷;
响应于所述磁盘阵列卡接收到用户下发的卷操作命令,基于所述卷操作命令通过所述容器节点找到目标卷,并利用相应的块组对所述目标卷进行操作;
所述容器节点包括管理表指针字段,所述管理表指针字段指向管理表存放区域,所述管理表用于管理所述卷;
所述管理表包括卷标识号、所述块的所述预定大小、与所述卷对应的磁盘阵列的标识号以及卷状态,所述卷状态至少包括卷删除状态及卷扩容状态。
2.根据权利要求1所述的方法,其特征在于,响应于所述磁盘阵列卡接收到用户下发的卷操作命令,基于所述卷操作命令通过所述容器节点找到目标卷,并利用相应的块组对所述目标卷进行操作包括:
响应于所述磁盘阵列卡接收到用户下发的删除卷命令,基于所述删除卷命令通过所述容器节点找到目标卷,并将所述目标卷的所有块释放至相应的块组。
3.根据权利要求1所述的方法,其特征在于,响应于所述磁盘阵列卡接收到用户下发的卷操作命令,基于所述卷操作命令通过所述容器节点找到目标卷,并利用相应的块组对所述目标卷进行操作还包括:
响应于所述磁盘阵列卡接收到用户下发的卷扩容命令,基于所述卷扩容命令通过所述容器节点找到目标卷,并向相应的块组申请所述块以实现所述目标卷的扩容。
4.根据权利要求1所述的方法,其特征在于,还包括:
将所述每个容器节点作为存储子池,并由所述若干容器节点构成容器池,以作为总存储池。
5.根据权利要求4所述的方法,其特征在于,由所述若干容器节点构成容器池包括:
通过所述每个容器节点的前指针字段和后指针字段将所述若干容器节点连接,以构成容器池。
6.根据权利要求5所述的方法,其特征在于,所述前指针字段指向本容器节点的前一个容器节点,所述后指针字段指向所述本容器节点的后一个容器节点。
7.根据权利要求1所述的方法,其特征在于,所述容器节点包括控制字段,所述控制字段通过比特位的符号表示对应卷的操作状态。
8.根据权利要求7所述的方法,其特征在于,还包括:
响应于所述比特位为第一二进制符号,确定所述比特位的对应卷的操作状态为可操作状态;
响应于所述比特位为第二二进制符号,确定所述比特位的对应卷的操作状态为正常状态。
9.根据权利要求7所述的方法,其特征在于,还包括:
通过控制线程对所述目标卷对应的比特位进行设置。
10.根据权利要求8所述的方法,其特征在于,还包括:
通过工作线程扫描所述控制字段中的所有比特位,并查找其中具有所述第二二进制符号的比特位,以定位至所述目标卷。
11.根据权利要求8所述的方法,其特征在于,还包括:
响应于所述卷整合完成,将所述若干容器节点的控制字段的比特位全部置为所述第二二进制符号。
12.根据权利要求1所述的方法,其特征在于,还包括:
通过控制线程对所述目标卷对应的管理表中的所述卷状态进行设置。
13.根据权利要求1所述的方法,其特征在于,还包括:
通过工作线程确认所述目标卷在对应的管理表中的卷状态,并基于所述确认的卷状态对所述目标卷进行操作。
14.根据权利要求1所述的方法,其特征在于,还包括:
响应于所述目标卷操作完成,更新所述目标卷对应的管理表。
15.根据权利要求1所述的方法,其特征在于,还包括:
响应于所述指定数量的磁盘阵列创建完成,判断非易失性随机访问存储器的剩余存储容量是否大于预设容量;
响应于所述剩余存储容量大于所述预设容量,基于所述剩余存储容量申请所述若干容器节点。
16.根据权利要求1所述的方法,其特征在于,响应于磁盘阵列卡接收到主机下发的创建命令,基于所述创建命令创建指定数量的磁盘阵列包括:
响应于磁盘阵列卡接收到主机下发的创建命令,解析所述创建命令,得到命令参数,并基于所述命令参数创建指定数量的磁盘阵列。
17.一种基于磁盘阵列卡的存储虚拟化***,其特征在于,包括:
容器节点模块,配置用于响应于磁盘阵列卡接收到主机下发的创建命令,基于所述创建命令创建指定数量的磁盘阵列,并申请若干容器节点,以使每个容器节点管理多个磁盘阵列;
切分与整合模块,配置用于针对所述每个容器节点,将其每个磁盘阵列切分为多个预定大小的块以形成块组,并分别从每个块组中获取若干所述块并整合成卷;以及
卷操作模块,配置用于响应于所述磁盘阵列卡接收到用户下发的卷操作命令,基于所述卷操作命令通过所述容器节点找到目标卷,并利用相应的块组对所述目标卷进行操作;
所述容器节点包括管理表指针字段,所述管理表指针字段指向管理表存放区域,所述管理表用于管理所述卷;
所述管理表包括卷标识号、所述块的所述预定大小、与所述卷对应的磁盘阵列的标识号以及卷状态,所述卷状态至少包括卷删除状态及卷扩容状态。
18.一种基于磁盘阵列卡的存储虚拟化装置,其特征在于,包括:
容器节点层,包括若干容器节点,每个所述容器节点管理多个磁盘阵列;
块组层,包括多个块组,每个所述块组由一个所述磁盘阵列切分成的多个预定大小的块组成;以及
卷层,包括若干卷,每个所述卷由所述多个块组中的若干所述块整合而成;
所述容器节点包括管理表指针字段,所述管理表指针字段指向管理表存放区域,所述管理表用于管理所述卷;
所述管理表包括卷标识号、所述块的所述预定大小、与所述卷对应的磁盘阵列的标识号以及卷状态,所述卷状态至少包括卷删除状态及卷扩容状态。
19.根据权利要求18所述的装置,其特征在于,所述装置还包括卷操作模块,配置用于响应于所述磁盘阵列卡接收到用户下发的卷操作命令,基于所述卷操作命令通过所述容器节点找到目标卷,并利用相应的块组对所述目标卷进行操作。
20.一种计算机可读存储介质,其特征在于,存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如权利要求1-16任意一项所述的方法。
21.一种计算机设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时执行如权利要求1-16任意一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211545895.8A CN115639970B (zh) | 2022-12-05 | 2022-12-05 | 基于磁盘阵列卡的存储虚拟化方法、***、装置及设备 |
PCT/CN2023/101683 WO2024119771A1 (zh) | 2022-12-05 | 2023-06-21 | 基于磁盘阵列卡的存储虚拟化方法、***、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211545895.8A CN115639970B (zh) | 2022-12-05 | 2022-12-05 | 基于磁盘阵列卡的存储虚拟化方法、***、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115639970A CN115639970A (zh) | 2023-01-24 |
CN115639970B true CN115639970B (zh) | 2023-03-31 |
Family
ID=84949688
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211545895.8A Active CN115639970B (zh) | 2022-12-05 | 2022-12-05 | 基于磁盘阵列卡的存储虚拟化方法、***、装置及设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115639970B (zh) |
WO (1) | WO2024119771A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115639970B (zh) * | 2022-12-05 | 2023-03-31 | 苏州浪潮智能科技有限公司 | 基于磁盘阵列卡的存储虚拟化方法、***、装置及设备 |
CN115904255B (zh) * | 2023-01-19 | 2023-05-16 | 苏州浪潮智能科技有限公司 | 一种数据请求方法、装置、设备及存储介质 |
CN115951845B (zh) * | 2023-03-14 | 2023-05-30 | 苏州浪潮智能科技有限公司 | 一种磁盘管理方法、装置、设备及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7904649B2 (en) * | 2005-04-29 | 2011-03-08 | Netapp, Inc. | System and method for restriping data across a plurality of volumes |
JP6142685B2 (ja) * | 2013-06-12 | 2017-06-07 | 富士通株式会社 | ストレージシステム、運用管理方法及び運用管理プログラム |
CN105808157A (zh) * | 2014-12-31 | 2016-07-27 | 中兴通讯股份有限公司 | 存储架构的创建方法、存储访问方法和存储*** |
CN111090394A (zh) * | 2019-12-05 | 2020-05-01 | 烽火通信科技股份有限公司 | 一种基于卷级别raid的磁阵管理方法及装置 |
CN112162700B (zh) * | 2020-09-18 | 2024-07-02 | 北京浪潮数据技术有限公司 | 一种存储卷创建方法、装置及电子设备和存储介质 |
CN115639970B (zh) * | 2022-12-05 | 2023-03-31 | 苏州浪潮智能科技有限公司 | 基于磁盘阵列卡的存储虚拟化方法、***、装置及设备 |
-
2022
- 2022-12-05 CN CN202211545895.8A patent/CN115639970B/zh active Active
-
2023
- 2023-06-21 WO PCT/CN2023/101683 patent/WO2024119771A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
CN115639970A (zh) | 2023-01-24 |
WO2024119771A1 (zh) | 2024-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115639970B (zh) | 基于磁盘阵列卡的存储虚拟化方法、***、装置及设备 | |
US10761731B2 (en) | Array controller, solid state disk, and method for controlling solid state disk to write data | |
CN110895445B (zh) | 数据处理方法和*** | |
CN110032521B (zh) | 增强闪存转换层映射灵活性的方法和*** | |
US7461198B2 (en) | System and method for configuration and management of flash memory | |
US6587915B1 (en) | Flash memory having data blocks, spare blocks, a map block and a header block and a method for controlling the same | |
US10503424B2 (en) | Storage system | |
US9311002B1 (en) | Systems, methods, and computer readable media for compressing data at a virtually provisioned storage entity | |
CN114115747A (zh) | 存储器***及控制方法 | |
US6636941B1 (en) | Enhanced stable disk storage | |
US20200183831A1 (en) | Storage system and system garbage collection method | |
EP3748509A1 (en) | System garbage collection method and method for collecting garbage in solid state hard disk | |
US11321229B2 (en) | System controller and system garbage collection method | |
CN111381779A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN115599313B (zh) | 一种磁盘阵列扩容方法、***、存储介质及设备 | |
KR20090107098A (ko) | 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법 | |
EP3798852B1 (en) | System controller and system garbage recovery method | |
CN116009761A (zh) | 一种数据写入方法以及相关设备 | |
CN105630410A (zh) | 使用非易失随机读写存储芯片动态管理文件存储区的方法 | |
CN110781164B (zh) | 一种数据库一体机的设计方法、设备及介质 | |
CN115904255A (zh) | 一种数据请求方法、装置、设备及存储介质 | |
KR20230081505A (ko) | 메모리 컨트롤러 및 그의 동작 방법 | |
WO2020215223A1 (zh) | 分布式存储***和分布式存储***中垃圾回收方法 | |
CN116010113B (zh) | 用于管理智能卡内存的方法及智能卡 | |
CN118069432B (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 |