CN118132460B - 存储扩容方法、装置、存储节点和计算机可读存储介质 - Google Patents
存储扩容方法、装置、存储节点和计算机可读存储介质 Download PDFInfo
- Publication number
- CN118132460B CN118132460B CN202410558217.8A CN202410558217A CN118132460B CN 118132460 B CN118132460 B CN 118132460B CN 202410558217 A CN202410558217 A CN 202410558217A CN 118132460 B CN118132460 B CN 118132460B
- Authority
- CN
- China
- Prior art keywords
- disk
- sub
- level
- groups
- storage
- 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 55
- 238000012545 processing Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 10
- 230000005012 migration Effects 0.000 description 45
- 238000013508 migration Methods 0.000 description 45
- 238000010586 diagram Methods 0.000 description 14
- 238000013507 mapping Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000013500 data storage Methods 0.000 description 5
- 230000008569 process 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
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
-
- 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
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- 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
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提出一种存储扩容方法、装置、存储节点和计算机可读存储介质,涉及存储领域。当分布式存储系统进行首次扩容时,将首次新增存储节点的盘分配给每个一级盘组。根据分布式存储系统中原有存储节点的数量和首次新增存储节点的数量确定一级子盘组数量。根据一级子盘组数量为每个一级盘组划分对应数量的一级子盘组,为每个一级子盘组分配与冗余策略对应的一级虚拟盘。本发明支持对任意数量的存储节点进行扩容,能够增加存储扩容的灵活性,从而降低存储用户的使用成本。
Description
技术领域
本发明涉及存储领域,具体而言,涉及一种存储扩容方法、装置、存储节点和计算机可读存储介质。
背景技术
随着网络技术的蓬勃发展,对存储容量的要求也越来越高。在分布式存储系统场景下,当存储系统的存储空间不足时需要进行扩容。由于分布式存储系统中固定盘组受冗余策略的限制,导致新扩容的存储节点数量需满足固定盘组的约束。在新扩容的存储节点加入后,在进行数据均衡时会产生大量的数据迁移,这将导致系统内部IO开销增加,影响数据均衡的效率。
发明内容
有鉴于此,本发明的目的在于提供一种存储扩容方法、装置、存储节点和计算机可读存储介质,能够有效增加存储扩容的灵活性,同时大大降低存储扩容产生的内部IO开销,提升存储系统性能。
为了实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明提供一种存储扩容方法,应用于分布式存储系统,所述分布式存储系统存在多个一级盘组,所述分布式存储系统中原有存储节点的盘按照冗余策略分配给各所述一级盘组;所述方法包括:
当所述分布式存储系统进行首次扩容时,将首次新增存储节点的盘分配给每个所述一级盘组;
根据所述分布式存储系统中原有存储节点的数量和首次新增存储节点的数量确定一级子盘组数量;所述一级子盘组数量表征一级盘组中与所述冗余策略对应的子盘组的数量;
根据所述一级子盘组数量为每个所述一级盘组划分对应数量的一级子盘组;
为每个所述一级子盘组分配与所述冗余策略对应的一级虚拟盘;所述一级虚拟盘为所述一级盘组对应的各个存储节点上盘划分得到的;每个盘中一级虚拟盘的数量与所述一级子盘组数量相同。
可选地,所述方法还包括:
当所述分布式存储系统进行第N次扩容时,将第N次新增存储节点的盘逐级分配给每个所述一级盘组对应的一级子盘组至N-1级子盘组;N为大于1的自然数;
根据所述分布式存储系统中原有存储节点的数量和第N次新增存储节点的数量确定N级子盘组数量;所述N级子盘组数量表征N-1级子盘组中与所述冗余策略对应的子盘组的数量;
根据所述N级子盘组数量为每个所述N-1级子盘组划分对应数量的N级子盘组;
为每个所述N级子盘组分配与所述冗余策略对应的N级虚拟盘;所述N级虚拟盘为所述N-1级子盘组对应的各个存储节点上的N-1级虚拟盘划分得到的。
可选地,每个N-1级虚拟盘中N级虚拟盘的数量根据所述分布式存储系统中原有存储节点的数量和第N次新增存储节点的数量确定。
可选地,所述方法还包括:
当所述分布式存储系统进行第N次扩容时,根据每个所述一级盘组下的子盘组层级关系,对第N次新增存储节点的盘进行划分得到新增N级虚拟盘;N为大于1的自然数;
根据所述分布式存储系统中原有存储节点的数量和第N次新增存储节点的数量确定N级子盘组数量;所述N级子盘组数量表征N-1级子盘组中与所述冗余策略对应的子盘组的数量;
根据所述N级子盘组数量为每个所述N-1级子盘组划分对应数量的N级子盘组;
在所述新增N级虚拟盘和原有N级虚拟盘中,为每个所述N级子盘组分配与所述冗余策略对应的N级虚拟盘;原有N级虚拟盘为所述N-1级子盘组对应的各原有存储节点上的N-1级虚拟盘划分得到的。
可选地,新增N级虚拟盘的数量根据前N次扩容后所述分布式存储系统中存储节点的数量确定;每个N-1级虚拟盘中原有N级虚拟盘的数量根据所述分布式存储系统中原有存储节点的数量和第N次新增存储节点的数量确定。
可选地,所述方法还包括:
当所述分布式存储系统完成扩容后,遍历所述分布式存储系统中的文件,获取每个所述文件在当前最深层级的归属子盘组;
当所述归属子盘组中包括新增存储节点的存储空间时,将所述文件保存在其他盘的数据拷贝到对应的新增存储节点的存储空间;所述其他盘为不属于所述归属子盘组的虚拟盘。
可选地,所述方法还包括:
当向所述分布式存储系统中目标文件写数据时,根据所述目标文件的标识和一级盘组的数量确定所属一级盘组;
按照所述所属一级盘组下的子盘组层级关系,根据所述目标文件的标识和各级子盘组的数量逐级确定所述目标文件的各级所属子盘组;
逐级根据所述所属子盘组确定目标存储空间;
将所述目标文件的待写入数据拷贝到所述目标存储空间。
第二方面,本发明提供一种存储扩容装置,应用于分布式存储系统,所述分布式存储系统存在多个一级盘组,所述分布式存储系统中原有存储节点的盘按照冗余策略分配给各所述一级盘组;所述装置包括:
处理模块,用于当所述分布式存储系统进行首次扩容时,将首次新增存储节点的盘分配给每个所述一级盘组;
获取模块,用于根据所述分布式存储系统中原有存储节点的数量和首次新增存储节点的数量确定一级子盘组数量;所述一级子盘组数量表征一级盘组中与所述冗余策略对应的子盘组的数量;
划分模块,用于根据所述一级子盘组数量为每个所述一级盘组划分对应数量的一级子盘组;为每个所述一级子盘组分配与所述冗余策略对应的一级虚拟盘;所述一级虚拟盘为所述一级盘组对应的各个存储节点上盘划分得到的;每个盘中一级虚拟盘的数量与所述一级子盘组数量相同。
第三方面,本发明提供一种存储节点,所述存储节点包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于在调用所述计算机程序时执行如前述实施方式任一项所述的存储扩容方法。
第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如前述实施方式任一项所述的存储扩容方法。
相比于现有技术,本发明实施例提供的存储扩容方法、装置、存储节点和计算机可读存储介质,当分布式存储系统进行首次扩容时,将首次新增存储节点的盘分配给每个一级盘组。根据分布式存储系统中原有存储节点的数量和首次新增存储节点的数量确定一级子盘组数量。其中,一级子盘组数量表征一级盘组中与冗余策略对应的子盘组的数量。根据一级子盘组数量为每个一级盘组划分对应数量的一级子盘组,为每个一级子盘组分配与冗余策略对应的一级虚拟盘。其中,一级虚拟盘为一级盘组对应的各个存储节点上盘划分得到的,每个盘中一级虚拟盘的数量与一级子盘组数量相同。本发明支持对任意数量的存储节点进行扩容,能够增加存储扩容的灵活性,从而降低存储用户的使用成本。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了现有技术中进行存储扩容前的一种分布式存储系统示意图。
图2示出了现有技术中存储扩容的一种示意图。
图3示出了本发明实施例提供的存储扩容方法的一种流程示意图。
图4示出了冗余策略为纠删码2+2的分布式存储系统首次进行存储扩容的一种示意图。
图5示出了本发明实施例提供的存储扩容方法的另一种流程示意图。
图6示出了冗余策略为纠删码2+2的分布式存储系统第二次进行存储扩容的一种示意图。
图7示出了本发明实施例提供的存储扩容方法的另一种流程示意图。
图8示出了写文件数据的一种流程示意图。
图9示出了冗余策略为两副本的分布式存储系统首次进行存储扩容的一种示意图。
图10示出了本发明实施例提供的存储扩容装置的一种方框示意图。
图11示出了本发明实施例提供的存储节点的一种方框示意图。
图标:200-存储扩容装置;201-处理模块;202-获取模块;203-划分模块;300-存储节点;310-存储器;320-处理器;330-通信模块。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
分布式存储系统是一种存储系统,数据被分布存储在多个存储节点上,以提高可用性、扩展性和容错性。为了提高存储容量或性能,通常采用固定盘组存储数据,即将多个盘按照冗余策略组合在一起,形成一个逻辑上的存储单元,所述盘可以是硬盘,闪存盘,数据库,网络存储等具有存储功能的存储产品,不限制具体的物理形态。
经发明人研究发现,对于采用固定盘组且未使用一致性哈希的分布式存储系统,导致新扩容的存储节点数量受固定盘组大小的约束。同时由于数据存储时未使用一致性哈希算法,导致增加存储节点时数据均衡会产生大量的数据迁移,从而增加分布式存储系统内部IO的开销,影响数据均衡的时长和效率。
为了更清晰第了解现有技术中分布式存储系统扩容的操作流程,结合图1和图2进行详细阐述。如图1所示,扩容前分布式存储系统包括两个节点,分别为节点1和节点2。假设数据采用纠删码2+2的冗余策略组成固定盘组,得到N个固定盘组,即每个固定盘组中包含四块盘,其中两块盘属于节点1,另外两块盘属于节点2。如盘组1包含节点1中盘1和盘2,以及节点2中盘1和盘2;盘组N包含节点1中盘2N-1和盘2N,以及节点2中盘2N-1和盘2N。
当对图1中采用纠删码2+2组成固定盘组的分布式存储系统进行扩容时,为保证扩容后数据冗余策略不变,则至少需要新扩容两个存储节点,假设扩容两个节点,扩容后固定盘组如图2所示。如图2所示,已有的N个固定盘组不变,利用新扩容的节点3和节点4中的盘组成新的固定盘组,新的固定盘组数据为N,每个新的固定盘组中包括四块盘,其中,两块盘属于节点3,另外两块盘属于节点4。如盘组N+1包含节点3中盘1和盘2,以及节点4中盘1和盘;盘组2N包含节点3中盘2N-1和盘2N,以及节点4中盘2N-1和盘2N。
当根据新扩容节点生成固定盘组后,则意味分布式存储系统完成扩容,需要遍历分布式存储系统中的文件实现数据均衡。针对每个文件,根据文件的哈希值和扩容前的固定盘组数量进行取模运算得到第一索引,根据文件的哈希值和扩容后的固定盘组数量进行取模运算得到第二索引,当第一索引和第二索引相同时,说明文件对应的归属盘组未发生变化,则无需进行数据迁移,当第一索引和第二索引不同时,说明文件对应的归属盘组发生变化,则需要进行数据迁移。
由于文件的数据被均衡打散在各固定盘组中,扩容前的固定盘组数量为N,扩容后的固定盘组数量为2N,扩容前的固定盘组数量和扩容后的固定盘组数量的最小公倍数为2N,即第一索引和第二索引的索引循环周期为最小公倍数2N,在每个索引循环周期内,有N个第一索引与第二索引相同。第一索引和第二索引不同时才需要进行数据迁移,那么数据迁移比例为(2N-N)/2N=1/2,即迁移数据量占总数据量的50%。
按照上述数据迁移规律,假设分布式存储系统在扩容前存在两个固定盘组,扩容后存在三个固定盘组,那么索引循环周期为6,数据迁移比例为(6-2)/6=2/3,即迁移数据量占总数据量的67%。假设分布式存储系统在扩容前存在2个固定盘组,扩容后存在5个固定盘组,那么索引循环周期为10,数据迁移比例为(10-2)/10=4/5,即迁移数据量占总数据量的80%。假设分布式存储系统在扩容前存在四个固定盘组,扩容后存在五个固定盘组,那么索引循环周期为20,即迁移数据量占总数据量的80%。
由此可知,扩容前分布式存储系统中固定盘组的数量为X,扩容后固定盘组的数量为Y时,将X和Y的最小公倍数确定为索引循环周期L,数据迁移比例为(L-X)/L=1-X/L,即数据均衡时迁移数据量占总数据量的1-X/L。这将导致分布式存储系统内部IO开销大,数据迁移时间长,从而影响分布式存储系统性能。
基于此,本发明实施例提供的存储扩容方法和装置,将新增存储节点的盘逐级分配给各一级盘组以及一级盘组下的各级子盘组,并基于扩容前层级最深的子盘组划分下一级子盘组,能够支持对任意数量的存储节点进行扩容,能够增加存储扩容的灵活性,从而降低存储用户的使用成本。同时能够在扩容前层级最深的子盘组范围内进行数据迁移,有效降低存储扩容产生的数据迁移量,大大减少系统内部IO开销,提升数据存储性能。
下面结合附图对本发明的各实施例进行详细说明。
请参照图3,图3示出了本发明实施例提供的存储扩容方法的一种流程示意图。该方法应用于分布式存储系统,分布式存储系统存在多个一级盘组,分布式存储系统中原有存储节点的盘按照冗余策略分配给各一级盘组。该方法包括以下步骤:
步骤10,当分布式存储系统进行首次扩容时,将首次新增存储节点的盘分配给每个一级盘组。
步骤20,根据分布式存储系统中原有存储节点的数量和首次新增存储节点的数量确定一级子盘组数量。
其中,一级子盘组数量表征一级盘组中与冗余策略对应的子盘组的数量。
在本发明实施例中,将首次新增存储节点的盘均匀分配给每个一级盘组,以确保各存储节点负载均衡。根据分布式存储系统中原有存储节点的数量与首次新增存储节点的数量之和,得到分布式存储系统中现有存储节点数量,并将现有存储节点数量作为一级子盘组数量。
步骤30,根据一级子盘组数量为每个一级盘组划分对应数量的一级子盘组。
步骤40,为每个一级子盘组分配与冗余策略对应的一级虚拟盘。
其中,一级虚拟盘为一级盘组对应的各个存储节点上盘划分得到的,每个盘中一级虚拟盘的数量与一级子盘组数量相同。
在本发明实施例中,按照一级子盘组数量对每个一级盘组进行划分,得到各一级盘组下的一级子盘组。同时将每个一级盘组中的盘按照一级虚拟盘的数量进行划分,得到每个盘下的一级虚拟盘,再按照冗余策略将一级盘组下的一级虚拟盘分配给一级盘组下的一级子盘组。
作为一种可能的实施方式,继续以图1为例,扩容前分布式存储系统中原有存储节点的数量为2,两个存储节点分别为节点1和节点2,数据采用纠删码2+2的冗余策略组成一级盘组。假设首次扩容一个存储节点,新增存储节点为节点3,如图4所示,那么扩容后分布式存储系统中现有存储节点数量为3。
将现有存储节点数量3作为一级子盘组数量和一级虚拟盘的数量,根据一级子盘组数量,将每个一级盘组划分为三个一级子盘组,如将盘组1划分为一级子盘组1-1、一级子盘组1-2和一级子盘组1-3,将盘组N划分为一级子盘组N-1、一级子盘组N-2和一级子盘组N-3。根据一级虚拟盘的数量将一级盘组中每个盘划分为三个一级虚拟盘,分别为虚拟盘1、虚拟盘2和虚拟盘3。按照纠删码2+2为每个一级子盘组分配一级盘组下的四个一级虚拟盘。
以图4为例,为了清晰体现每个一级子盘组中包括的一级虚拟盘,图4中实线框的虚拟盘为分配给一级子盘组的一级虚拟盘,虚线框的虚拟盘为未分配给对应一级盘组中任意一个一级子盘组的一级虚拟盘。假设按照一级盘组1中4个盘的分布将节点1和节点2中一级盘组1下的4个一级虚拟盘分配给一级盘组1的第一个一级子盘组1-1,如将节点1中盘1和盘2的2个虚拟盘1分配给一级子盘组1-1,将节点2中盘1和盘2的2个虚拟盘1分配给一级子盘组1-1。
再轮流将一级盘组1下其他一级虚拟盘按照冗余策略分配给其他两个一级子盘组,如将节点1中盘1和盘2的2个虚拟盘2分配给一级子盘组1-2,将节点3中盘1和盘2的2个虚拟盘2分配给一级子盘组1-2。将节点2中盘1和盘2的2个虚拟盘3分配给一级子盘组1-3,将节点3中盘1和盘2的2个虚拟盘3分配给一级子盘组1-3。按照上述划分和分配原则,将每个一级盘组划分成对应的一级子盘组。
需要说明的是,按照冗余策略为每个一级子盘组分配一级虚拟盘。例如可以将节点1和节点2中虚拟盘1分配给一级子盘组1-1,将节点2和节点3中虚拟盘2分配给一级子盘组1-2,将节点1和节点3中虚拟盘3分配一级子盘组1-3。对于一级虚拟盘的具体分配方式本发明不予限定,只要能够按照冗余策略利用各存储节点的存储空间构建一级子盘组即可。
综上所述,本发明实施例提供的存储扩容方法,当分布式存储系统进行首次扩容时,将首次新增存储节点的盘分配给每个一级盘组。根据分布式存储系统中原有存储节点的数量和首次新增存储节点的数量确定一级子盘组数量。其中,一级子盘组数量表征一级盘组中与冗余策略对应的子盘组的数量。根据一级子盘组数量为每个一级盘组划分对应数量的一级子盘组,为每个一级子盘组分配与冗余策略对应的一级虚拟盘。其中,一级虚拟盘为一级盘组对应的各个存储节点上盘划分得到的,每个盘中一级虚拟盘的数量与一级子盘组数量相同。本发明支持对任意数量的存储节点进行扩容,能够增加存储扩容的灵活性,从而降低存储用户的使用成本。
可选地,在一种可能的实现方式中,分布式存储系统可以进行多次扩容,每次扩容时可以基于当前一级盘组下子盘组层级关系逐级将新增存储节点的盘分配给一级盘组和对应的各级子盘组。请参照图5,图5示出了本发明实施例提供的存储扩容方法的另一种流程示意图。该方法还包括以下步骤:
步骤50,当分布式存储系统进行第N次扩容时,将第N次新增存储节点的盘逐级分配给每个一级盘组对应的一级子盘组至N-1级子盘组。
其中,N为大于1的自然数。
在本发明实施例中,当分布式存储系统进行第N次扩容时,将第N次新增存储节点的盘均匀分配给各一级盘组,按照当前一级盘组下子盘组层级关系逐级将一级盘组对应的新增存储节点上盘逐级划分虚拟子盘,直到划分至N-1级虚拟盘,并将各级虚拟盘分配给对应的子盘组。
步骤60,根据分布式存储系统中原有存储节点的数量和第N次新增存储节点的数量确定N级子盘组数量。
其中,N级子盘组数量表征N-1级子盘组中与冗余策略对应的子盘组的数量。
步骤70,根据N级子盘组数量为每个N-1级子盘组划分对应数量的N级子盘组。
在本发明实施例中,根据分布式存储系统中原有存储节点的数量与第N次新增存储节点的数量之和确定N级子盘组数量,并按照N级子盘组数量对每个N-1级子盘组进行划分,得到各N-1级子盘组下对应数量的N级子盘组,也就是说,每个一级盘组下的子盘组层级关系从N-1级变成N级。
步骤80,为每个N级子盘组分配与冗余策略对应的N级虚拟盘。
其中,N级虚拟盘为N-1级子盘组对应的各个存储节点上的N-1级虚拟盘划分得到的。
在本发明实施例中,将N-1级子盘组中的每个N-1级虚拟盘划分多个N级虚拟盘,并按照冗余策略将分布式存储系统中现有存储节点上的N级虚拟盘分配给各N级子盘组。
可选地,图5中N级虚拟盘的数量可以按照如下方式获取:
每个N-1级虚拟盘中N级虚拟盘的数量根据分布式存储系统中原有存储节点的数量和第N次新增存储节点的数量确定。
作为另一种实施方式,继续以图4为例,分布式存储系统经过首次扩容后包括3个存储节点,每个一级盘组包括三个一级子盘组。如图6所示,以一级盘组1为例,假设第二次扩容2个存储节点,新增存储节点分别为节点4和节点5,那么扩容后分布式存储系统中现有存储节点数量为5。
将现有存储节点数量5作为二级子盘组数量和二级虚拟盘的数量,根据二级子盘组数量,将每个一级子盘组划分为5个二级子盘组,并根据二级虚拟盘的数量将各一级子盘组中每个一级虚拟盘划分为5个二级虚拟盘。按照纠删码2+2为每个二级子盘组分配对应的一级子盘组下的4个二级虚拟盘。
以图6为例,为了清晰体现每个二级子盘组中包括的二级虚拟盘,图6中实线框的虚拟盘为分配给二级子盘组的二级虚拟盘,如节点1中虚1-1和虚2-1等。虚线框的虚拟盘为未分配给一级盘组中任意一个二级子盘组的二级虚拟盘,如节点4中虚1-1和节点4中虚2-1等。
在第二次扩容时一级盘组1包括三个一级子盘组,分别为1-1、1-2和1-3。以一级子盘组1-1为例进行说明,第二次扩容后一级子盘组1-1包括节点1、节点2、节点4和节点5这四个存储节点中的一级虚拟盘,将一级子盘组1-1中四个节点上的每个一级虚拟盘按照二级虚拟盘的数量划分成5个二级虚拟盘,分别为虚1-1、虚1-2、虚1-3、虚1-4和虚1-5。按照冗余策略纠错码2+2将一级子盘组下的二级虚拟盘分配给对应的二级子盘组,如将节点1的盘1虚1-1、节点1的盘2中虚1-1、节点2的盘1中虚1-1和节点2的盘2中虚1-1这四个二级虚拟盘分配给一级盘组1-1下的第一个二级子盘组。
假设一级子盘组1-1划分得到的二级子盘组分别为二级子盘组1-1-1、二级子盘组1-1-2、二级子盘组1-1-3、二级子盘组1-1-4和二级子盘组1-1-5。可以按照冗余策略将一级子盘组中各存储节点中四个二级虚拟盘分配给对应的二级子盘组,如图6中将节点1和节点2中实线框的二级虚拟盘(虚1-1)分配给对应的二级子盘组1-1-1,将将节点4和节点5中实线框的二级虚拟盘(虚1-2)分配给对应的二级子盘组1-1-2,按照上述分配规则依次轮流将四个二级虚拟盘(虚1-3)、四个二级虚拟盘(虚1-4)和四个二级虚拟盘(虚1-5)分别分配给二级子盘组1-1-3、二级子盘组1-1-4和二级子盘组1-1-5。
可以参照上述分配规则继续处理一级盘组1中一级子盘组1-2和一级子盘组1-3,以及分布式存储系统中其他一级盘组。对于各级虚拟盘的具体分配方式本发明不予限定,只要能够按照冗余策略利用各存储节点的存储空间构建各级子盘组即可。
可选地,在另一种可能的实现方式中,分布式存储系统在进行再次扩容时可以按照子盘组层级关系将新增存储节点的盘划分成当前层级最深的虚拟盘,并将划分后的虚拟盘分配给当前层级最深的子盘组。请参照图7,图7示出了本发明实施例提供的存储扩容方法的另一种流程示意图。该方法还包括以下步骤:
步骤90,当分布式存储系统进行第N次扩容时,根据每个一级盘组下的子盘组层级关系,对第N次新增存储节点的盘进行划分得到新增N级虚拟盘。
其中,N为大于1的自然数。
在本发明实施例中,还可以根据一级盘组下的子盘组层级关系直接将第N次扩容时新增存储节点的盘直接划分成当前层级最深的N级虚拟盘,即新增N级虚拟盘。其中,新增N级虚拟盘的数量根据前N次扩容后分布式存储系统中存储节点的数量确定。
具体地,将前N次扩容后分布式存储系统中存储节点的数量的乘积作为新增N级虚拟盘的数量。继续以图4和图6为例,假设分布式存储系统第一次扩容后存储节点的数量为3,第二次扩容后存储节点的数量为5,那么第二次扩容时,新增存储节点中每块新盘对应的新增二级虚拟盘的数量为15个,即。
步骤100,根据分布式存储系统中原有存储节点的数量和第N次新增存储节点的数量确定N级子盘组数量。
其中,N级子盘组数量表征N-1级子盘组中与冗余策略对应的子盘组的数量。
步骤110,根据N级子盘组数量为每个N-1级子盘组划分对应数量的N级子盘组。
步骤120,在新增N级虚拟盘和原有N级虚拟盘中,为每个N级子盘组分配与冗余策略对应的N级虚拟盘。
其中,原有N级虚拟盘为N-1级子盘组对应的各原有存储节点上的N-1级虚拟盘划分得到的。
在本发明实施例中,将分布式存储系统中原有存储节点的数量与第N次新增存储节点的数量的和确定为分布式存储系统中现有存储节点的数量,将现有存储节点的数量确定为N级子盘组数量。将每个N-1级子盘组划分成与N级子盘组数量对应的N级子盘组,并对N-1级子盘组中的原有N-1级虚拟盘进行划分得到原有N级虚拟盘,按照冗余策略轮流将新增N级虚拟盘和原有N级虚拟盘分配给各N级子盘组。
具体地,每个N-1级虚拟盘中原有N级虚拟盘的数量根据分布式存储系统中原有存储节点的数量和第N次新增存储节点的数量确定。继续以图6为例,在第二次扩容前,每个一级子盘组中包括4个一级虚拟盘,在进行第二次扩容后,将各一级子盘组中每个一级虚拟盘划分成5个原有N级虚拟盘。
需要说明的是,以图6中一级子盘组1-1为例,在进行第二次扩容前一级子盘组1-1中包含节点1和节点2中的四个一级虚拟盘,但并未被分配节点3的存储空间。在进行第二次以及后续扩容时,只会对一级子盘组中所包含的一级虚拟盘进行划分,并不会对不属于该一级子盘组中的其他原有存储节点的存储空间进行划分。
可见,无论是首次扩容还是第N次扩容,本发明支持对任意数量的存储节点进行扩容,能够增加存储扩容的灵活性,从而降低存储用户的使用成本。
作为一种可能的实施方式,分布式存储系统中的各存储节点上记录有扩容表和盘组映射表。其中,扩容表用于记录扩容前以及每次扩容后一级盘组对应的盘列表,盘列表用来记录一级盘组中所包括的盘对应的盘符,盘符用于唯一标识盘。盘组映射表用于记录每个一级盘组下最新的子盘组层级关系以及当前层级最深的子盘组对应的盘列表。
值得一提的是,扩容表每次更新后需要持久化保存到存储空间,以便分布式存储系统重启后根据扩容表构建缓存中的盘组映射表。在访问文件时可根据盘组映射表进行快速索引。
结合图1和图4进行说明,在分布式存储系统进行初始化创建扩容表,并将扩容信息“一级盘组1 {盘1_节点1,盘2_节点1,盘1_节点2,盘2_节点2},… ,一级盘组N {盘2N-1_节点1,盘2N_节点1,盘2N-1_节点2,盘2N_节点2}”更新到扩容表中,作为一条记录。
在分布式存储系统进行首次扩容时,将新增存储节点的盘分配给各一级盘组,并将第二条扩容信息“一级盘组1 {盘1_节点1,盘2_节点1,盘1_节点2,盘2_节点2,盘1_节点3,盘2_节点3},… ,一级盘组N {盘2N-1_节点1,盘2N_节点1,盘2N-1_节点2,盘2N_节点2,盘2N-1_节点3,盘2N_节点3}”追加到扩容表中,此时扩容表中已有两条记录,根据扩容表中的记录构建盘组映射表。
可选地,在实际应用中,当分布式存储系统扩容新增存储节点时,按照子盘组层级关系划分当前层级最深的子盘组和虚拟盘,并按照最新的子盘组层级关系进行数据均衡,从而有效保证存储容量和负载均衡。存储扩容方法还包括以下步骤:
当分布式存储系统完成扩容后,遍历分布式存储系统中的文件,获取每个文件在当前最深层级的归属子盘组;当归属子盘组中包括新增存储节点的存储空间时,将文件保存在其他盘的数据拷贝到对应的新增存储节点的存储空间;其他盘为不属于归属子盘组的虚拟盘。
作为一种可能的实施方式,当按照子盘组层级关系划分得到当前层级最深的子盘组和虚拟盘后,即表征分布式存储系统扩容完成。在扩容完成后,依次获取分布式存储系统中每个文件,根据每个文件对应的文件标识逐级确定一级盘组的索引和各级子盘组的索引;根据盘组映射表、一级盘组的索引和各级子盘组的索引逐级查询,得到当前最深层级的归属子盘组和对应的盘列表。当归属子盘组对应的盘列表中包括新增存储节点的盘对应的盘符时,说明文件需要执行数据迁移,将保存在不属于归属子盘组的虚拟盘上的数据拷贝到新增存储节点对应的存储空间。
继续以图4和图6为例,将对分布式存储系统中两个节点首次扩容成三个节点后,每个一级盘组划分成三个一级子盘组,各一级盘组中每个一级子盘组中存储的数据量约为对应的一级盘组中总数据量的三分之一。扩容后进行数据均衡时,在同一个一级盘组范围内进行数据迁移,以盘组1为例,一级子盘组1-1中数据无需进行迁移,一级子盘组1-2和一级子盘组1-3中均有一半的数据需要做迁移,因此盘组1需要迁移的数据量为一级盘组总数据量的1/3。
也就是说,扩容后盘组1所存储的总数据量即为三个一级子盘组所存储的总数据量,而需要迁移的数据量为总数据量的三分之一,相当于一个一级子盘组上存储的数据量。其他一级盘组数据迁移方式与盘组1类似,各一级盘组的数据迁移量占一级盘组总数据量的1/3。由此可知,分布式存储系统从两节点扩容至三节点时,数据迁移总量占总数据量的1/3。
将分布式存储系统从三节点扩容至五节点后,每个一级子盘组划分成五个二级子盘组,各一级子盘组中每个二级子盘组中存储的数据量约为对应一级子盘组中总数据量的五分之一。第二次扩容后进行数据均衡时,在同一个一级子盘组范围内进行数据迁移,以一级子盘组1-1为例,一级子盘组1-1中二级子盘组分别为二级子盘组1-1-1、二级子盘组1-1-2、二级子盘组1-1-3、二级子盘组1-1-4和二级子盘组1-1-5。
其中,二级子盘组1-1-1、二级子盘组1-1-2和二级子盘组1-1-5中数据无需进行迁移,二级子盘组1-1-2和二级子盘组1-1-4中数据都需要进行迁移,因此一级子盘组1-1需要迁移的数据量为一级子盘组1-1总数据量的2/5。
也就是说,扩容后一级子盘组1-1所存储的总数据量即为五个二级子盘组所存储的总数据量,而需要迁移的数据量为总数据量的五分之二,相当于两个二级子盘组上存储的数据量。其他一级子盘组的数据迁移不再赘述,每个一级子盘组对应的数据迁移比例为2/5,由此可知,分布式存储系统从三节点扩容至五节点时,数据迁移总量占总数据量的2/5。
根据上述分析,当分布式存储节点从X节点扩容至Y节点时,扩容后一级盘组或者上一级子盘组被划分成Y个当前层级的子盘组,需要迁移的数据量相当于Y-X个当前层级的子盘组上存储的数据量,则可以认为需要进行数据迁移的当前层级的子盘组的数量为Y-X。因此,数据均衡过程中数据迁移比例为(Y-X)/Y=1-X/Y,即数量迁移量占存储系统数据总量的1- X/Y。由于X和Y的最小公倍数大于等于Y,所以存储扩容后进行数据迁移时,本发明的数据迁移比例小于等于现有技术的数据迁移比例。值得一提的是,在大部分应用场景中,X和Y的最小公倍数都大于Y,即本发明的数据迁移比例小于现有技术的数据迁移比例,能够有效降低数据迁移量,大大减少系统内部IO开销,提供数据存储性能。
可选地,在实际应用中,可以基于子盘组层级关系确定待写数据的目标文件在当前最深层级的归属子盘组,并在当前最深层级的归属子盘组为目标文件分配存储空间,以便保存待写入数据,从而确保后续扩容时在当前最深层级的范围内做数据迁移,有效降低分布式存储系统内部IO开销。请参照图8,图8示出了写文件数据的一种流程示意图。该方法还包括以下步骤:
步骤130,当向分布式存储系统中目标文件写数据时,根据目标文件的标识和一级盘组的数量确定所属一级盘组。
步骤140,按照所属一级盘组下的子盘组层级关系,根据目标文件的标识和各级子盘组的数量逐级确定目标文件的各级所属子盘组。
作为一种可能的实施方式,对目标文件的标识进行哈希计算,得到目标文件哈希值;根据目标文件哈希值和一级盘组的数量进行取模运算,得到所属一级盘组的索引,根据盘组映射表和所属一级盘组的索引确定所属一级盘组。
依次根据目标文件哈希值和各级子盘组的数量进行取模运算,得到各级所属子盘组的索引。根据盘组映射表和各级所属子盘组的索引逐级确定目标文件的各级所属子盘组。
需要说明的是,为了将分布式存储系统中文件相对均匀分布在各级子盘组中,可以单独根据文件的标识进行哈希计算得到索引值,还可以根据文件的标识和各级子盘组的标识进行哈希计算得到索引值,对于确定索引值的具体实现方式,本发明不予限定。
步骤150,逐级根据所属子盘组确定目标存储空间。
步骤160,将目标文件的待写入数据拷贝到目标存储空间。
在本发明实施例中,各存储节点的盘被逐级分配给一级盘组以及各级子盘组,各级子盘组逐级细化每个子盘组所管理的存储空间范围。按照子盘组层级关系逐级确定出当前最深层级的子盘组对应的存储空间,并在当前最深层级的子盘组对应的存储空间中为待写数据分配空闲的目标存储空间,最后将目标文件的待写入数据保存到目标存储空间。
为了更清楚说明本发明实施例提供的存储扩容方法,结合现有技术对比进行示例性说明。
作为一种可能的实施方式,假设扩容前分布式存储系统中原有存储节点的数量为2,分别为节点1和节点2,数据采用两副本的冗余策略组成一级盘组。以两个一级盘组为例,假设盘组1包括节点1的盘1和节点2中的盘1,盘组2包括节点1的盘2和节点2的盘2。
以图9为例,对分布式存储进行首次扩容时,新增存储节点为节点3。按照各一级盘组的存储空间分布情况将节点3的盘1和盘2分别分配给盘组1和盘组2,即首次扩容后盘组1包括三个存储节点的盘1,盘组2包括三个存储节点的盘2。
将各一级盘组划分成三个一级子盘组,如将盘组1划分为一级子盘组1-1、一级子盘组1-2和一级子盘组1-3,将盘组2划分为一级子盘组2-1、一级子盘组2-2和一级子盘组2-3。按照冗余策略轮流为每个一级子盘组分配2个一级虚拟盘,如将节点2的盘2中虚拟盘3和节点3的盘2中虚拟盘3分配给一级子盘组2-3。
由于各一级盘组划分为三个一级子盘组,且一级盘组中文件数据被均衡打散在各一级子盘组,因此一级盘组中每个一级子盘组中存储的数据量约为对应一级盘组中总数据量的三分之一。扩容后进行数据均衡时,在同一个一级盘组范围内进行数据迁移,以盘组2为例,一级子盘组2-1中数据无需进行迁移,一级子盘组2-2和一级子盘组2-3中均有一半的数据需要做迁移,因此盘组2需要迁移的数据量为一级盘组总数据量的1/3。由此推断,分布式存储系统从两节点扩容至三节点时,数据迁移总量占总数据量的1/3。
现有技术中,对于采用两副本冗余策略的分布式存储系统,每个固定盘组包括的两个存储空间需要分布在两个不同的存储节点上,为保证两副本冗余策略的有效性,每次扩容时新增存储节点数量则需要是偶数。例如首次扩容,将分布存储系统从2个存储节点扩容成4个存储节点,假设扩容前存在两个固定盘组,扩容后使用新增的2个存储节点中的盘组成两个新的固定盘组,那么扩容后共有四个固定盘组,那么扩容前后固定盘组数量的最小公倍数是4,数据迁移比例为1-2/4=1/2,即迁移数据量占总数据量的50% 。
可见,相比于现有技术,本发明支持对任意数量的存储节点进行扩容,能够增加存储扩容的灵活性,从而降低存储用户的使用成本。本发明对应的数据迁移比例与扩容后的现有存储节点数量成正比,即数据迁移比例与扩容后划分下一级子盘组的数量(相关于现有技术中扩容后盘组数量)成正比。而现有技术的数据迁移比例与扩容前后盘组数量的最小公倍数成正比,显然,在大部分应用场景下,扩容前后盘组数量的最小公倍数大于扩容后划分下一级子盘组的数量,因此,本发明能够有效降低存储扩容产生的数据迁移量,大大减少系统内部IO开销,提升数据存储性能。
基于同一发明构思,本发明实施例还提供了一种存储扩容装置。其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。
请参照图10,图10示出了本发明实施例提供的存储扩容装置200的一种方框示意图。存储扩容装置200应用于分布式存储系统,分布式存储系统存在多个一级盘组,分布式存储系统中原有存储节点的盘按照冗余策略分配给各一级盘组。存储扩容装置200包括处理模块201、获取模块202和划分模块203。
处理模块201,用于当分布式存储系统进行首次扩容时,将首次新增存储节点的盘分配给每个一级盘组;
获取模块202,用于根据分布式存储系统中原有存储节点的数量和首次新增存储节点的数量确定一级子盘组数量;一级子盘组数量表征一级盘组中与冗余策略对应的子盘组的数量;
划分模块203,用于根据一级子盘组数量为每个一级盘组划分对应数量的一级子盘组;为每个一级子盘组分配与冗余策略对应的一级虚拟盘;一级虚拟盘为一级盘组对应的各个存储节点上盘划分得到的;每个盘中一级虚拟盘的数量与一级子盘组数量相同。
可选地,处理模块201,还用于当分布式存储系统进行第N次扩容时,将第N次新增存储节点的盘逐级分配给每个一级盘组对应的一级子盘组至N-1级子盘组;N为大于1的自然数。
获取模块202,还用于根据分布式存储系统中原有存储节点的数量和第N次新增存储节点的数量确定N级子盘组数量;N级子盘组数量表征N-1级子盘组中与冗余策略对应的子盘组的数量。
划分模块203,还用于根据N级子盘组数量为每个N-1级子盘组划分对应数量的N级子盘组;为每个N级子盘组分配与冗余策略对应的N级虚拟盘;N级虚拟盘为N-1级子盘组对应的各个存储节点上的N-1级虚拟盘划分得到的。
可选地,划分模块203中每个N-1级虚拟盘中N级虚拟盘的数量根据分布式存储系统中原有存储节点的数量和第N次新增存储节点的数量确定。
可选地,处理模块201,还用于当分布式存储系统进行第N次扩容时,根据每个一级盘组下的子盘组层级关系,对第N次新增存储节点的盘进行划分得到新增N级虚拟盘;N为大于1的自然数。
获取模块202,还用于根据分布式存储系统中原有存储节点的数量和第N次新增存储节点的数量确定N级子盘组数量;N级子盘组数量表征N-1级子盘组中与冗余策略对应的子盘组的数量。
划分模块203,还用于根据N级子盘组数量为每个N-1级子盘组划分对应数量的N级子盘组;在新增N级虚拟盘和原有N级虚拟盘中,为每个N级子盘组分配与冗余策略对应的N级虚拟盘;原有N级虚拟盘为N-1级子盘组对应的各原有存储节点上的N-1级虚拟盘划分得到的。
可选地,处理模块201中新增N级虚拟盘的数量根据前N次扩容后分布式存储系统中存储节点的数量确定;划分模块203中每个N-1级虚拟盘中原有N级虚拟盘的数量根据分布式存储系统中原有存储节点的数量和第N次新增存储节点的数量确定。
可选地,处理模块201,还用于当分布式存储系统完成扩容后,遍历分布式存储系统中的文件,获取每个文件在当前最深层级的归属子盘组;当归属子盘组中包括新增存储节点的存储空间时,将文件保存在其他盘的数据拷贝到对应的新增存储节点的存储空间;其他盘为不属于归属子盘组的虚拟盘。
可选地,处理模块201,还用于当向分布式存储系统中目标文件写数据时,根据目标文件的标识和一级盘组的数量确定所属一级盘组;按照所属一级盘组下的子盘组层级关系,根据目标文件的标识和各级子盘组的数量逐级确定目标文件的各级所属子盘组;逐级根据所属子盘组确定目标存储空间;将目标文件的待写入数据拷贝到目标存储空间。
综上所述,本发明实施例提供的存储扩容装置,将新增存储节点的盘逐级分配给各一级盘组以及一级盘组下的各级子盘组,并基于扩容前层级最深的子盘组划分下一级子盘组,能够支持对任意数量的存储节点进行扩容,能够增加存储扩容的灵活性,从而降低存储用户的使用成本。同时能够在扩容前层级最深的子盘组范围内进行数据迁移,有效降低存储扩容产生的数据迁移量,大大减少系统内部IO开销,提升数据存储性能。
请参照图11,为本发明实施例提供的存储节点300的一种方框示意图。存储节点300包括存储器310、处理器320及通信模块330。存储器310、处理器320以及通信模块330各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
其中,存储器310用于存储程序或者数据。存储器310可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(ErasableProgrammable Read-Only Memory,EPROM),电可擦除只读存储器(Electric ErasableProgrammable Read-Only Memory,EEPROM)等。
处理器320用于读/写存储器310中存储的数据或程序,并执行相应地功能。例如,当存储器310中存储的计算机程序被处理器320执行时,可以实现上述各实施例所揭示的存储扩容方法。
通信模块330用于通过网络建立存储节点300与其它通信终端之间的通信连接,并用于通过网络收发数据。
应当理解的是,图11所示的结构仅为存储节点300的结构示意图,存储节点300还可包括比图11中所示更多或者更少的组件,或者具有与图11所示不同的配置。图11中所示的各组件可以采用硬件、软件或其组合实现。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器320执行时实现上述各实施例所揭示的存储扩容方法。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种存储扩容方法,其特征在于,应用于分布式存储系统,所述分布式存储系统存在多个一级盘组,所述分布式存储系统中原有存储节点的盘按照冗余策略分配给各所述一级盘组;所述方法包括:
当所述分布式存储系统进行首次扩容时,将首次新增存储节点的盘分配给每个所述一级盘组;
根据所述分布式存储系统中原有存储节点的数量和首次新增存储节点的数量确定一级子盘组数量;所述一级子盘组数量表征一级盘组中与所述冗余策略对应的子盘组的数量;
根据所述一级子盘组数量为每个所述一级盘组划分对应数量的一级子盘组;
为每个所述一级子盘组分配与所述冗余策略对应的一级虚拟盘;所述一级虚拟盘为所述一级盘组对应的各个存储节点上盘划分得到的;每个盘中一级虚拟盘的数量与所述一级子盘组数量相同;
当向所述分布式存储系统中目标文件写数据时,根据所述目标文件的标识和一级盘组的数量确定所属一级盘组;
按照所述所属一级盘组下的子盘组层级关系,根据所述目标文件的标识和各级子盘组的数量逐级确定所述目标文件的各级所属子盘组;
逐级根据所述所属子盘组确定目标存储空间;
将所述目标文件的待写入数据拷贝到所述目标存储空间。
2.根据权利要求1所述的存储扩容方法,其特征在于,所述方法还包括:
当所述分布式存储系统进行第N次扩容时,将第N次新增存储节点的盘逐级分配给每个所述一级盘组对应的一级子盘组至N-1级子盘组;N为大于1的自然数;
根据所述分布式存储系统中原有存储节点的数量和第N次新增存储节点的数量确定N级子盘组数量;所述N级子盘组数量表征N-1级子盘组中与所述冗余策略对应的子盘组的数量;
根据所述N级子盘组数量为每个所述N-1级子盘组划分对应数量的N级子盘组;
为每个所述N级子盘组分配与所述冗余策略对应的N级虚拟盘;所述N级虚拟盘为所述N-1级子盘组对应的各个存储节点上的N-1级虚拟盘划分得到的。
3.根据权利要求2所述的存储扩容方法,其特征在于,每个N-1级虚拟盘中N级虚拟盘的数量根据所述分布式存储系统中原有存储节点的数量和第N次新增存储节点的数量确定。
4.根据权利要求1所述的存储扩容方法,其特征在于,所述方法还包括:
当所述分布式存储系统进行第N次扩容时,根据每个所述一级盘组下的子盘组层级关系,对第N次新增存储节点的盘进行划分得到新增N级虚拟盘;N为大于1的自然数;
根据所述分布式存储系统中原有存储节点的数量和第N次新增存储节点的数量确定N级子盘组数量;所述N级子盘组数量表征N-1级子盘组中与所述冗余策略对应的子盘组的数量;
根据所述N级子盘组数量为每个所述N-1级子盘组划分对应数量的N级子盘组;
在所述新增N级虚拟盘和原有N级虚拟盘中,为每个所述N级子盘组分配与所述冗余策略对应的N级虚拟盘;原有N级虚拟盘为所述N-1级子盘组对应的各原有存储节点上的N-1级虚拟盘划分得到的。
5.根据权利要求4所述的存储扩容方法,其特征在于,新增N级虚拟盘的数量根据前N次扩容后所述分布式存储系统中存储节点的数量确定;每个N-1级虚拟盘中原有N级虚拟盘的数量根据所述分布式存储系统中原有存储节点的数量和第N次新增存储节点的数量确定。
6.根据权利要求1或2或4所述的存储扩容方法,其特征在于,所述方法还包括:
当所述分布式存储系统完成扩容后,遍历所述分布式存储系统中的文件,获取每个所述文件在当前最深层级的归属子盘组;
当所述归属子盘组中包括新增存储节点的存储空间时,将所述文件保存在其他盘的数据拷贝到对应的新增存储节点的存储空间;所述其他盘为不属于所述归属子盘组的虚拟盘。
7.一种存储扩容装置,其特征在于,应用于分布式存储系统,所述分布式存储系统存在多个一级盘组,所述分布式存储系统中原有存储节点的盘按照冗余策略分配给各所述一级盘组;所述装置包括:
处理模块,用于当所述分布式存储系统进行首次扩容时,将首次新增存储节点的盘分配给每个所述一级盘组;
获取模块,用于根据所述分布式存储系统中原有存储节点的数量和首次新增存储节点的数量确定一级子盘组数量;所述一级子盘组数量表征一级盘组中与所述冗余策略对应的子盘组的数量;
划分模块,用于根据所述一级子盘组数量为每个所述一级盘组划分对应数量的一级子盘组;为每个所述一级子盘组分配与所述冗余策略对应的一级虚拟盘;所述一级虚拟盘为所述一级盘组对应的各个存储节点上盘划分得到的;每个盘中一级虚拟盘的数量与所述一级子盘组数量相同;
处理模块,还用于当向所述分布式存储系统中目标文件写数据时,根据所述目标文件的标识和一级盘组的数量确定所属一级盘组;按照所述所属一级盘组下的子盘组层级关系,根据所述目标文件的标识和各级子盘组的数量逐级确定所述目标文件的各级所属子盘组;逐级根据所述所属子盘组确定目标存储空间;将所述目标文件的待写入数据拷贝到所述目标存储空间。
8.一种存储节点,其特征在于,所述存储节点包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于在调用所述计算机程序时执行如权利要求1-6任一项所述的存储扩容方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-6任一项所述的存储扩容方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410558217.8A CN118132460B (zh) | 2024-05-08 | 2024-05-08 | 存储扩容方法、装置、存储节点和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410558217.8A CN118132460B (zh) | 2024-05-08 | 2024-05-08 | 存储扩容方法、装置、存储节点和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN118132460A CN118132460A (zh) | 2024-06-04 |
CN118132460B true CN118132460B (zh) | 2024-07-16 |
Family
ID=91240935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410558217.8A Active CN118132460B (zh) | 2024-05-08 | 2024-05-08 | 存储扩容方法、装置、存储节点和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118132460B (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7409494B2 (en) * | 2004-04-30 | 2008-08-05 | Network Appliance, Inc. | Extension of write anywhere file system layout |
US20070214314A1 (en) * | 2006-03-07 | 2007-09-13 | Reuter James M | Methods and systems for hierarchical management of distributed data |
US8775734B2 (en) * | 2011-11-15 | 2014-07-08 | Microsoft Corporation | Virtual disks constructed from unused distributed storage |
CN108073352B (zh) * | 2016-11-15 | 2021-01-01 | 华为技术有限公司 | 虚拟磁盘处理方法及装置 |
-
2024
- 2024-05-08 CN CN202410558217.8A patent/CN118132460B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN118132460A (zh) | 2024-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107943421B (zh) | 一种基于分布式存储系统的分区划分方法及装置 | |
CN104679661B (zh) | 混合存储的控制方法及混合存储系统 | |
US10331641B2 (en) | Hash database configuration method and apparatus | |
CN106407207B (zh) | 一种实时新增数据更新方法和装置 | |
CN110147203B (zh) | 一种文件管理方法、装置、电子设备及存储介质 | |
CN110134338B (zh) | 一种分布式存储系统及其数据冗余保护方法和相关设备 | |
US20200349038A1 (en) | Storage management method, electronic device, and computer program product | |
CN107368260A (zh) | 基于分布式系统的存储空间整理方法、装置及系统 | |
CN111309258B (zh) | 一种b+树的存取方法、装置和计算机可读存储介质 | |
CN107133228A (zh) | 一种数据重分布的方法及装置 | |
CN108920100B (zh) | 基于Ceph的读写模型优化和异构副本组合方法 | |
CN109407985B (zh) | 一种数据管理的方法以及相关装置 | |
US20190205034A1 (en) | Quota controlled movement of data in a tiered storage system | |
CN111159140B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN113282249B (zh) | 一种数据处理方法、系统、设备以及介质 | |
WO2021216883A1 (en) | Adjustment of garbage collection parameters in a storage system | |
CN111240890B (zh) | 数据处理方法、快照处理方法、装置及计算设备 | |
WO2024169286A1 (zh) | 写时拷贝方法、装置、设备及非易失性可读存储介质 | |
CN108073472B (zh) | 一种基于热度感知的内存纠删码分布方法 | |
CN114556309A (zh) | 内存空间的分配方法、装置及存储介质 | |
CN115391341A (zh) | 分布式图数据处理系统、方法、装置、设备及存储介质 | |
CN117075821A (zh) | 一种分布式存储方法、装置、电子设备及存储介质 | |
JP2012168781A (ja) | 分散型データストアシステム及び分散型データストアシステムにおけるレコード管理方法 | |
CN111399761A (zh) | 存储资源分配方法、装置及设备、存储介质 | |
CN114297196A (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 |