CN111596868B - 基于段单元的分布式存储系统的负载均衡方法和系统 - Google Patents
基于段单元的分布式存储系统的负载均衡方法和系统 Download PDFInfo
- Publication number
- CN111596868B CN111596868B CN202010723910.8A CN202010723910A CN111596868B CN 111596868 B CN111596868 B CN 111596868B CN 202010723910 A CN202010723910 A CN 202010723910A CN 111596868 B CN111596868 B CN 111596868B
- Authority
- CN
- China
- Prior art keywords
- segment
- unit
- slave
- node
- distributed
- 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
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
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
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)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种基于段单元的分布式存储系统的负载均衡方法,属信息安全领域,用于分布式存储系统中卷的创建、数据迁移和数据恢复,创建时,包括:构建主、从段单元及主、从段单元的组合均衡分布的段列表;均衡分布为:同属于一个段的段单元分布在不同节点上,每个节点属于不同组;同一段的主、从段单元分别创建在不同节点上,使主、从段单元及主从段单元的组合均匀分布;从段列表中选取一个段,在目的节点上创建;若不能,则随机创建一个段;数据迁移时,将主段单元、主从段单元的组合进行迁移;数据恢复时,选举主段单元、创建从段单元。本发明还提供分布式存储系统,执行上述方法。能解决负载不均衡的问题,使IO负载更均衡。
Description
技术领域
本发明属于计算机信息安全领域,更具体地说,涉及一种基于段单元的分布式存储系统的负载均衡方法和系统。
背景技术
在现实的生产环境中,传统网络存储已无法满足大规模存储应用的需要,分布式存储系统应用而生。分布式存储系统利用多台存储服务器(节点)分担存储负载,以提高系统的可靠性、可用性、存储性能和扩展性等。
数据存储的负载均衡是将数据平均分布到不同服务器上的不同存储介质(如磁盘)上,让系统内的所有存储介质上的用户数据量基本相同。数据存储的负载均衡在分布式存储系统中是无法避免的,正是由于数据负载均衡,才使得每台服务器和每个存储介质的均衡地提供等量的IO。
现有的分布式存储系统的数据均衡算法只考虑如何均匀分布数据,但是在分布式存储集群中,一份数据存在多个副本。尽管每个副本的数据是一致的,但是不同副本数据读写过程中承担的任务不同,通常分为主副本(Primary,简称P)和从副本(Secondary,简称S),主副本相对从副本承担更多的IO负载。因此,尽管数据被均匀分布了,但是在分布式系统中,负载并没有均衡。
如申请公布日为2017年2月22日,申请公布号为CN 106445411 A,专利名称为一种数据读取方法、装置及分布式存储系统的中国专利公开了一种技术方案,包括以下步骤:主副本所在服务器接收用户的数据读取请求;根据所有副本所在服务器的负载信息,选取负载最小的副本所在服务器;若主副本所在服务器不是负载最小的服务器,则将数据读取请求发送至负载最小的备副本所在服务器,以使其进行数据读取操作;接收负载最小的备副本所在服务器读取的数据,向用户展示。该技术方案,通过选取负载最小的副本所在服务器进行数据的读取操作,而非全部由主副本所在服务器进行数据读取操作,可以实现多个副本所在服务器的负载均衡。
申请公布日为 2014年4月2日,申请公布号为 CN103701916A,专利名称为分布式存储系统的动态负载均衡方法的中国专利公开了另一种技术方案,包括以下步骤:步骤1 :统计如下信息:统计各存储节点上对每一个客户端连接的数据存取访问,统计s 个数据单位中的每一个数据单位通过不同存储节点的访问次数,统计每个节点的空间使用率;步骤2:根据步骤1 中的上述统计数据,预先制定带宽阈值,远程访问阈值和容量阈值,所有的阈值均为百分比,判断分布式存储系统的各节点是否出现网络负载不均衡,跨节点访问次数过多导致的高延迟和容量极度不均衡,并根据判断结果选择迁移数据或者通过路由重定向客户端接入访问点。
不同于上述两种技术方案,本发明提供了另一种解决负载均衡的技术方案。
发明内容
1. 要解决的问题
针对现有技术中分布式系统中负载不均衡的问题,本发明提供一种基于段单元的分布式存储系统的负载均衡方法和系统。
2. 技术方案
为了解决上述问题,本发明所采用的技术方案如下:一种基于段单元的分布式存储系统的负载均衡方法,用于分布式存储系统中卷的创建、数据迁移和数据恢复,
卷的创建包括:
a1、构建主段单元、从段单元及主段单元和从段单元的组合均衡分布的段列表;所述均衡分布具体是指:(1)同属于一个段的段单元需分布在不同的节点上,且每个节点属于不同的组;(2)同一个段的主段单元和从段单元分别创建在不同的节点上,使主段单元、从段单元及主段单元和从段单元的组合均匀分布在节点上;
a2、从步骤a1的段列表中选取一个段,并在目的节点上创建主段单元和从段单元;
a3、若不能在目的节点上创建主段单元和从段单元,则随机创建一个段,该段的主段单元、从段单元应均衡分布;
当进行数据迁移时,需要进行数据迁移的卷按照卷的创建要求进行创建,数据迁移包括:
b1、如果在某一个节点上的主段单元的实际分布值和期望分布值之间的差额百分比超过阈值X时,则主段单元从该节点迁移到另一个主段单元分布未达到期望分布值的节点,其中,5%≤X≤30%;
b2、如果在某一个节点上的主段单元和从段单元的组合的实际分布值和期望分布值之间的差额百分比超过阈值X时,则将从段单元从该节点迁移到主段单元和从段单元的组合的分布未达到期望分布值的目的节点上,其中,5%≤X≤30%;
当进行数据恢复时,需要进行数据恢复的卷按照卷的创建要求进行创建,数据恢复包括:
c1、在一个段的从段单元中选择一个作为主段单元;
c2、如果所有的段中都有主段单元,且该段中从段单元的数量少于2个时,则重新选择一个节点,在该节点上创建该段的从段单元。
本技术方案保证了同属于一个段的段单元不会分布在同一个节点,而且每个节点属于不同的组,保证了数据的可靠性,同时在节点上创建主段单元和从段单元时使主段单元、从段单元及主段单元和从段单元的组合均匀分布,从而保证了IO负载均衡。当出现节点上段单元分布不均衡的情况时,能够进行数据迁移,因出现宕机等情况时能够进行数据恢复,从而保证系统始终处于IO负载均衡的状态。
进一步地,当进行卷的创建时,如果一个段已经创建了一个主段单元和两个从段单元,还存在其他的节点,该节点与已经创建的一个主段单元和两个从段单元所在的节点均不属于同一组,则给每个从段单元分配不超过2个冗余的从段单元,所述冗余的从段单元分别分布在不同的节点上。由于一个组只能存在一个段单元,如果除了已经创建了段单元的节点之外,还有多余的节点,且该多余的节点与已经创建了段单元的节点分别属于不同的组,即现有的组比较充足,则可以为从段单元分配冗余的从段单元,从而防止节点因宕机而产生不必要的开销。
进一步地,当进行数据迁移时,所述b1包括以下步骤:
b11、根据节点权重计算所有节点上主段单元的期望分布值;
b12、获取当前所有节点上主段单元的实际分布值,计算所有节点上主段单元的分布率,主段单元的分布率=(主段单元的实际分布值-主段单元的期望分布值)/主段单元的期望分布值;
b13、将主段单元的分布率为正数的节点作为数据迁移的源节点,主段单元的分布率为负数的节点作为数据迁移的目的节点;
b14、遍历卷上的每一个段,查找源节点上分布主段单元、目的节点上分布从段单元的段,将主段单元从源节点迁移到目的节点。本技术方案中,当节点上的主段单元分布不均衡时,将主段单元的分布率为正数的节点作为数据迁移的源节点,将主段单元的分布率为负数的节点作为数据迁移的目的节点,将主段单元从源节点迁移到目的节点,从而实现主段单元分布的均衡,实现IO负载的均衡。
进一步地,当进行数据迁移时,所述b2包括以下步骤:
b21、根据节点权重计算每个节点上主段单元和从段单元的组合的期望分布值,同时计算每个节点总的从段单元的期望分布值,其中,主段单元和从段单元的组合的期望分布值为某个节点上分布了主段单元的段,这些段在其他节点上期望分布的从段单元的数量;
b22、获取每个节点上主段单元和从段单元的组合的实际分布值,获取每个节点总的从段单元的实际分布值,计算所有节点上主段单元和从段单元的组合的分布率,主段单元和从段单元的组合的分布率=(主段单元和从段单元的组合的实际分布值-主段单元和从段单元的组合的期望分布值)/主段单元和从段单元的组合的期望分布值,其中,主段单元和从段单元的组合的实际分布值为某个节点上分布了主段单元的段,这些段在其他节点上实际分布的从段单元的数量;
b23、将主段单元和从段单元的组合的分布率为正数的节点作为数据迁移的源节点,将主段单元和从段单元的组合的分布率为负数的节点作为数据迁移的目的节点;如果某两个节点上的主段单元和从段单元的组合的分布率相同,再按照从段单元的实际分布值迁移,将节点上总的从段单元的实际分布值大的节点作为数据迁移的源节点,节点上总的从段单元的实际分布值小的节点作为数据迁移的目的节点;
b24、遍历卷上的每一个段,查找从段单元分布在源节点上,目的节点上未分布段单元的段,将从段单元从源节点迁移到目的节点。
本技术方案中,当节点上的主段单元和从段单元的组合分布不均衡时,将主段单元和从段单元的组合的分布率为正数的节点作为数据迁移的源节点,将主段单元和从段单元的组合的分布率为负数的节点作为数据迁移的目的节点,将从段单元从源节点迁移到目的节点,从而实现主段单元和从段单元的组合分布的均衡,实现IO负载的均衡。
本发明还提供一种基于段单元的分布式存储系统,该系统执行上述的基于段单元的分布式存储系统的负载均衡方法。
3. 有益效果
相比于现有技术,本发明的有益效果为:
(1)本发明在进行数据均匀分布的同时,进一步让主段单元、从段单元及主段单元和从段单元的组合在所有节点上均匀分布,可以更快地达到均衡状态,可以使得IO负载更均衡;
(2)本发明在系统的运行过程中,还可以进一步调整主段单元、主段单元和从段单元的组合在节点上的均匀分布,进一步实现IO负载均衡;
(3)当出现节点宕机时,本发明能够进行数据恢复,从而更进一步地确保IO负载的均衡。
附图说明
图1为本发明在不考虑PS组合均衡分布原则时的PSS卷P和S的分布情况示意图;
图2为本发明在不考虑PS组合均衡分布原则时节点1宕机节点迁移前的示意图;
图3为本发明在不考虑PS组合均衡分布原则时节点1宕机节点迁移后的示意图;
图4为本发明在考虑PS组合均衡分布原则时的PSS卷P和S的分布情况示意图;
图5为本发明在考虑PS组合均衡分布原则时节点1宕机节点迁移前的示意图;
图6为本发明在考虑PS组合均衡分布原则时节点1宕机节点迁移后的示意图;
图7为本发明的卷分配方案流程图;
图8为本发明构建PS组合分布列表模型流程图;
图9为本发明构建PS组合分布列表模型时进行P分布的流程图;
图10为本发明构建PS组合分布列表模型时进行S分布的流程图;
图11为本发明中P进行数据迁移的流程图;
图12为本发明中PS组合进行数据迁移的流程图。
具体实施方式
下面结合具体实施例对本发明进一步进行描述。
首先,为了更好地说明,在此定义了一些概念,并分别给出概念的英文、中文及说明,如表一所示,在表一种一些概念的中文和英文之间在本专利中具有对应性:
表一
英文 | 中文 | 说明 |
volume | 卷 | 分布式存储系统中的存储区域 |
segment | 段 | 组成卷的单元,一个卷有n个段(n≥1),一个卷内段的数量=卷的大小/段的大小 |
segment unit | 段单元 | 组成段的基本单元;有多种分工不同的segment unit,包含主段单元(primary segment unit,本发明中简称P)和从段单元(secondary segmentunit,本发明中简称S) |
primary segment unit | 主段单元 | 段单元的一种,本发明中简称P |
secondary segment unit | 从段单元 | 段单元的一种,本发明中简称S |
archive | 存储介质 | 用于存储数据的存储介质,如数据磁盘 |
datanode | 节点 | 一个datanode可包含多个archive,一个archive只能属于一个datanode |
group | 组 | 1个group中可包括n个datanode(n≥1),一个datanode只能属于一个group |
Pfact | P实际分布值 | 某卷在某节点上实际分布的P的数目 |
Pexpire | P期望分布值 | 某卷在某节点上按节点权重期望分布的P的数目 |
PSfact | PS组合的实际分布值 | 某volume在某datanode上分布了P的segment,这些segment在其他datanode上分布的S的实际数目; |
PSexpire | PS组合实际分布值 | 某volume在某datanode上分布了P的segment,这些segment在其他datanode上分布的S的期望数目 |
rebalance segment unit(rebalance) | 数据迁移 | 所有的段单元都在,但是在整个系统中分布不均衡时触发数据迁移 |
reserve segment unit(reserve) | 数据恢复 | 一个volume中缺少segment unit,所以要进行数据恢复 |
首先,为了实现分布式存储系统的特性,本发明需要基于以下几个原则来进行实施,即本发明在进行实施的时候,需要确保遵循以下原则:
1、group不同原则
即,一个segment中的每个segment unit必须分布在不同的datanode上,且每个datanode必须分属于不同的group。
原因在于:
A)属于同一个segment中的每个segment unit分布在不同的datanode上,可以保证在datanode宕机或检修时,volume继续可用;
B)每个datanode必须在不同group上,可以保证在关闭一个group的datanode进行检修或升级时,volume继续保持可用。比如可以将一个机柜作为一个group,当这个机柜断电时,可保证volume继续可用。
需要说明的是,虽然一个segment中的segment unit分别属于不同的节点,比如segment A中有1个PA和两个SA,segment B中有1个PB和两个SB,虽然PA和SA不能存在同一个节点上,但PA和SB可以分布在同一个节点上,SA和PB可以分布在同一个节点上。
2、segment unit分布及迁移原则
A)P和S只能分布在datanode上,因为P和S上存放真实的用户数据;
B)为了使数据迁移效率最大化,P只能由S选举产生,S需新创建;更具体地说,对于一个segment来说,P拥有完整的数据,而S只有部分数据,但任意两个segment unit可以恢复完整的数据,对于P来说,从S中选举产生,让其拥有完整的数据成为新的P比新建一个P要节省很多时间,因此,本发明要求P从S中选举产生。
3、冗余原则
为保证创建volume的成功,防止在创建volume时datanode宕机,造成不必要的开销,需要基于冗余原则。即,在datanode保证创建基本的P、S(即每个segment有一个P两个S)的前提下,如果还有属于不同group的datanode存在,则在分配时,分配冗余的segmentunit,每个S最多可分配2个冗余的S;更具体地说,对于一个segment而言,如果已经分配了一个P和两个S,还有不属于同一group的datanode存在,则在分配时,每个S分配不超过2个冗余的S。由于一个segment中的每个segment unit必须分配在不同的datanode上,且每个datanode必须在不同group上,所以如果有不同的group,则可以认为segment unit的数量较多,会有冗余,因此可以分配冗余的S。
具体地说:
创建PSS,如果group足够(≥7),即不属于同一group的datanode足够,最终每个segment分配的结果是PSS[SSSS];
如果只有6个group,则分配结果是PSS[SSS];
如果只有5个group,则分配结果是PSS[SS];
如果只有4个group,则分配结果是PSS[S];
如果只有3个group,则分配结果是PSS,不创建冗余;其中,PSS表示一个P,两个S,[S]表示冗余的S为一个,[SS]表示冗余的S为两个,以此类推。
4、P、S均衡分布原则
volume由segment组成,segment由各种角色的segment unit组成,为了使数据最大化平衡,在分配时,应尽量保证卷在所有可用的节点上都分布了均等的P、S。
如:6个datanode,创建5000个segment的PSS卷,则总共需要创建5000个P,10000个S,则应尽量保证,5000个P均衡分布于6个节点上,即每个节点上应分布约 5000/6=833个左右的P;同理,S也应尽量均衡分布于6个节点上。
5、PS组合均衡分布原则
根据segment unit分布及迁移原则,当一个datanode宕机,该datanode上的P对应的S(该P和S属于同一个segment)将会变为P。为使S转变成P后,P依然均衡分布,所以应尽量使某datanode上的segment unit为P时,该segment对应的S都均衡分布于其他所有可用的datanode上。
例如,现有4节点,创建PSS(为了简单说明,我们不考虑冗余S的情况):如果只考虑P、S均衡分布原则不考虑PS组合均衡分布原则,即P和S的分布情况如图1所示。此时如果1节点宕机,如图2所示,则会使2节点的2个S变为P,那么2节点上就会瞬间多出2个P,变为4个P,但是3、4节点上只有2个P;因为P承担的IO任务较重,所以segment数量越多,节点2的IO压力也越来越大,会造成IO负载的不均衡,如图3所示。
如果考虑PS组合均衡分布原则,P和S的分布情况如图4所示,此时1节点为P的segment对应的S平均分布在节点2、3、4上,就可以保证如果节点1宕机,如图5所示,那么2、3、4节点上的S会变为P,使转变后的P均衡扩散到其他节点,最终IO基本是均衡的。如图6所示,转变前,1、2、3、4节点上的P个数都是3;转变后2、3、4节点上的P个数都是4,依然平衡。
在图1-6中,横向的数字1、2、3、4表示datanode的编号,即本实施例以4个datanode为例说明,纵向的数字0、1、2、3、4、5、6、7、8、9、10、11表示segment的编号,即本实施例中设置了12个segment。在图2、图3、图5和图6中,黑色部分表示编号为1的datanode宕机。
具体实施时,对volume的操作一般分三种情况:新建volume(即创建一个卷),rebalance segment unit(数据迁移)和reserve segment unit(数据恢复);新建volume是一个从无到有的过程,rebalance segment unit是所有的segment unit都在,但是在整个系统中P、S或PS组合分布不均衡时触发数据迁移,reserve segment unit是一个volume中缺少segment unit,所以要进行数据恢复,下面结合附图来分别说明。
一、新建一个volume(创建一个卷)
如图7所示,如果新创建一个volume,那么在创建的时候需要考虑到上述原则才能保证实现IO负载的均衡,即创建一个卷需要满足创建卷的要求,创建卷的要求是指:构建P、S及PS的组合要均衡分布,均衡分布具体是指:(1)同属于一个segment的segment unit需分布在不同的datanode上,每个datanode属于不同的group;(2)同一个segment的P和S分别分布在不同的datanode上,使P、S及PS的组合均匀分布在datanode;如果能在目的datanode上创建P和S,则从上述均衡分布的P、S及PS的组合列表中选取一个segment,在目的datanode上创建;如果不能在目的datanode上创建P和S,则随机创建一个segment,该segment的P、S应符合均衡分布。目的datanode指的是有剩余空间容纳段的节点,需要说明的是,在进行segment的分配时,需要先看目的datanode上是否有空间,但由于datanode的空间是实时变化的,有可能同时有其他的volume在该datanode上创建segment了,所以从P、S及PS的组合列表中选取一个segment在目的datanode上进行创建时,还需要检测该datanode上是否有足够空间,如果没有,则创建失败。
下面结合图7、图8、图9和图10来更具体地说明本发明创建volume的过程:
1、构建P、S及PS组合均衡分布的segment列表
根据当前环境,统计各datanode的权重、group等情况,根据要创建的segment个数,构建P、S分布组合列表(不包含冗余的S),构建中需要考虑到group不同原则、segmentunit分布及迁移原则、冗余原则、P、S均衡分布原则和PS组合均衡分布原则,保证segment列表对上述原则的支持。具体地说,如图8所示,包括以下步骤:
(1)统计当前系统中的group数量、datanode权重;统计group数量和datanode权重的目的是为了实现P和S更均衡的分布;
(2)根据datanode权重构建P、S的优先级列表;更具体地说,根据datanode权重将P和S分别对应的节点进行罗列,作为P、S的优先级列表,举例来说,如果当前有四个datanode,按照datanode权重从高到低排列为datanode1、datanode2、datanode3、datanode4,权重较高的datanode1上分布一个P和一个S, datanode2上分布一个P和一个S,并且datanode1上的P和S不属于同一个segment,datanode2上的P和S也不属于同一个segment,权重较低的datanode3和datanode4上分别分布一个S,这样,就构建了P和S的优先级列表;
(3)统计每个datanode上分布了P的segment,在其他datanode上分布的S的数目,并根据datanode权重构建PS组合的优先级列表;如步骤(2)所述,当datanode上分布好P和S之后,需要统计一个datanode上分布了P的segment,这些segment在其他datanode上分布的S的数量,即,如果一个segment的P分布在datanode1上,那么属于该segment的S就只能分布在除datanode1之外的其他datanode上,针对将P分布在datanode1上的所有的segment,统计其他datanode上分布的S的数量,就可以知道PS组合是否均衡分布。举例来说,如果datanode1上分布了P,期望其他datanode上分布的S的个数是3才能实现PS组合的均衡分布,那么为了实现PS组合的均衡分布,就需要统计其他datanode上究竟分布了多少S,即得到PS组合的分布情况,然后根据datanode权重与PS组合的优先级列表进行分配,即,将权重高的datanode上分配优先级高的PS组合;
(4)分配P;按照步骤(2)和(3)中的datanode权重和优先级列表来分配P,因为P承担了系统的IO,所以P总是优先分配;如图9所示,选择优先级最高的datanode上分配P,如果datanode有空间,则更新P的优先级列表,即调整优先级列表的顺序,将已分配的节点从优先级列表中优先级高的位置移到优先级低的位置,如果datanode没有空间,则将该datanode从优先级列表中移除,即该datanode不再分配P;
(5)分配S;按照步骤(2)和(3)中的datanode权重和优先级列表来分配S;如图10所示,从PS组合的优先级列表中选择优先级最高的datanode分配S,如果datanode有空间,则更新S的优先级列表和PS组合的优先级列表,即将已分配的S从优先级列表中优先级高的位置移到优先级低的位置,如果datanode没有空间,则将该datanode从优先级列表中移除,即该datanode不再分配S;
(6)保存P、S作为一个segment直到所有segment完成分配。
如果要分配5000个segment,则构建一个5000个元素的列表模型。其中,datanode的权重根据datanode剩余容量占datanode总容量的比重、datanode总容量计算得出,如果一个datanode的总容量越大、datanode剩余容量占datanode总容量的比重越大,该datanode的权重越大;datanode的权重越大就表示该datanode会分配更多的P、S。
2、选取一个segment
从构建的组合列表模型中,直接选取一个segment,判断是否可以在预订的datanode(目的datanode)上创建对应的P和S,预订的节点就是通过计算得出来的迁移目的datanode,如果该节点上有空间创建,则直接选取一组segment,具体实施时,通过期望值来确定该datanode是否是迁移目的datanode,期望值即用户期望一个datanode上分布的P和S的数量,其取决于一个datanode的权重,即一个datanode的权重越大则该datanode的期望值越大,对期望值从高到低进行排序,分布率最高的优先级为最高,在进行节点分配P、S的时候可以优先考虑。
3、如果从组合列表中选取segment失败,则随机创建一个PS组合的segment,随机创建过程保证对group不同原则、segment unit分布及迁移原则的支持,但是不保证支持P、S均衡分布原则和PS组合均衡分布原则;
4、判断步骤2和3创建的PS组合中,对应的datanode是否有足够的空间创建P和S,在步骤2和3中,只是先选取或创建了segment,并没有实际地将segment分配到对应的datanode上,因此还需要看对应的datanode是否有足够的空间创建P和S,如果没有则重复步骤2和3,即重新拉取或重新随机创建一个PS组合,直至找到有足够空间创建P和S的datanode;
5、在剩余的datanode中,根据group不同原则、segment unit分布及迁移原则,随机选取某一datanode上建立一个冗余的S,以支持冗余原则。
需要说明的是,步骤1是循环获取datanode,而步骤5是随机获取datanode,原因是大部分情况下不会用到冗余,所以冗余的S都不用考虑均衡。
按照上述步骤来新建的volume几乎全部同时满足group不同原则、segment unit分布及迁移原则、冗余原则、P、S均衡分布原则和PS组合均衡分布原则。从而可以确保在新建的volum中IO负载的均衡。
二、数据迁移
当生产环境发生变化但不影响卷,且卷处于稳定状态(卷所有segment的所有segment unit都存在)时(如添加节点、添加磁盘等),需要进行卷的负载均衡检测,如果超出指定条件,将会进行rebalance(数据迁移)。即本发明中进行数据迁移存在触发条件,触发数据迁移的条件包括:
A)统计volume在所有可用节点上P的实际分布值,计算P的实际分布值中最大值和最小值的差额,如果差额占卷总segment数的比率超过指定的阈值X时,将触发rebalance,
B)当某volume在某datanode上分布的segment unit为P的segment,统计volume在所有其他可用datanode上分布的segment unit为S的数目,即PS组合的实际分布值,计算PS组合的实际分布值中最大值和最小值的差额,如果差额占卷总segment数的比率(PS组合分布差额)超过指定阈值X时,将触发rebalance。其中,指定阈值X与IO数据量的大小、volume的容量和datanode的数量有关,具体实施时,可由用户根据上述参数的情况自行配置,一般来说,可设置为5%-30%。
当触发了数据迁移的条件后,开始进行数据迁移,数据迁移主要包括P的迁移和PS组合的迁移,其中,P的迁移如图11所示,包括以下步骤:
(1)根据datanode权重计算所有datanode分布P的期望分布值,具体来说,一个datanode的权重越大,那么该datanode上期望分布的P越多,即P的期望分布值越大;
(2)根据volume获取所有datanode当前分布P的实际分布值,volume会定时报告当前所有datanode上P的实际分布情况,从而获取P的实际分布值;
(3)计算所有datanode上的P的分布率,P的分布率=(P的实际分布值-P的期望分布值)/P的期望分布值,将所有datanode按分布率大小排列组成分布列表;
(4)在分布列表中将分布率为正数的datanode作为迁移的源节点、将分布率为负数的datanode作为迁移的目的节点;
(5)遍历volume的segment,查找源节点上分布P,目的节点上分布S的segment,进行数据迁移,直至所有的datanode上P和S的分布达到最佳状态。因为一个datanode上有多个segment,当步骤(4)中确定了迁移的源节点和目的节点后,要确定需要迁移的源节点上的哪一个segment需要迁移,即需要查找P分布在源节点、S分布在目的节点上的segment,然后进行数据迁移,需要说明的是,P从源节点迁移到原来的S分布的目的节点上,是一个过程,当迁移完成后,原来的P直接变为S,以保证P和S不会分布在同一节点上。
PS组合的迁移如图12所示,包括以下步骤:
(1)根据datanode权重计算每个datanode分布P时,其他节点分布S的期望值,即PS组合的期望分布值,再计算每个datanode总的分布S的期望值,即S期望分布值;因为一个segment至少包括一个P和两个S,在一个datanode上可分布多个segment,那么计算一个datanode上分布了P的sgement,这些segment在其他datanode上期望分布S的数量,可以得到在P和S理想分布的情况下的期望值;
(2)统计每个datanode上分布了P的segment,在其他datanode上分布的S的数目,即PS组合的实际分布值;并统计每个datanode总的分布S的实际值,即S实际分布值;
(3)将所有datanode按照PS组合的分布率的大小排列组成分布列表,PS组合的分布率=(PS组合的实际分布值-PS组合的期望分布值/PS组合的期望分布值),如果某两个或某几个PS组合的分布率大小相同,再按照S的实际分布值排序;
(4)将PS组合分布列表中分布率为正数的datanode作为数据迁移的源节点、将分布率为负数的datanode作为数据迁移的目的节点,如果某两个节点上的PS组合的分布率相同,再按照S的实际分布值迁移,将S的实际分布值大的节点作为数据迁移的源节点,S的实际分布值小的节点作为数据迁移的目的节点;
(5)遍历volume的segment,查找S分布在源节点上,目的节点上未分布segmentunit的segment,进行数据迁移,即,将S从PS组合的分布率大的源节点迁移到PS组合的分布率小的目的节点上,如果两个节点上的PS组合的分布率相同,则将S从S的实际分布值大的节点迁移到S的实际分布值小的节点,直至所有的datanode上P和S的分布达到最佳状态。
(Pfact)P实际分布值:某volume在某datanode上分布的P的实际数目;
(Pexpire)P期望分布值:某volume在某datanode上按节点权重期望分布的P的数目;
(PSfact)PS实际分布值:某volume在某datanode上分布了P的segment,这些segment在其他datanode上分布的S的实际数目;
(PSexpire)PS期望分布值:某volume在某datanode上分布了P的segment,这些segment在其他datanode上分布的S的期望数目;
迁移程度
1.一旦触发rebalance,会一直进行数据迁移,直到达到最佳状态。
即:
P的分布达到最佳状态,即(Pfact= Pexpire) 或无可迁移对象,此过程称为P再平衡;
PS的分布达到最佳状态,即(PSfact =PSexpire)或无可迁移对象,此过程称为PS组合再平衡;
2.rebalance进行中,如果当前环境(存储池)发生变化(无论是影响卷还是不影响卷,如在卷所在的存储池中插盘、拔盘、添加节点、删除节点等),将会停止所有未进行的rebalance操作,已进行的rebalance操作会继续进行。
选择迁移目标
A) 当P的分布超过阈值X时,触发rebalance的P迁移。根据segment unit分布及迁移原则,为了使迁移速度变快,只能将S作为P的迁移目标。迁移方向是从P分布较多的节点到P分布较少的节点,如图11所示。
B) 当任一datanode的PS组合分布超过阈值X时,也会触发rebalance的PS组合迁移。因为PS组合分布均衡,反映的是某一节点上分布了P的segment,该segment在其他节点上的S的分布情况,所以PS组合的rebalance,体现的是S的迁移。迁移方向为:①以该节点上的segment unit为P,其他节点上S分布较多的节点到S分布较少的节点;②其他节点上总的S分布较多的节点到S分布较少的节点,如图12所示。
迁移步骤
A) 根据volume大小、volume所在的group、datanode的分布情况,datanode的权重,来计算出所有节点应该分布多少P、S,即P的期望分布值,S的期望分布值。
B) 根据当前状态下的volume的segment分布情况,计算出每个datanode的分布率。选择分布率为正数的节点作为迁移源,选择分布率为负数的节点作为迁移目标。当节点迁移到步骤A计算得出的期望值时,此节点不会再迁出或迁入segment unit。
C) 根据B得出的迁移步骤,从当前卷中查找是否有符合的segment来支持迁移。如果没有符合的segment来支持迁移,则表示已无法进行迁移。如果所有节点的P、S都无法迁移,表示工作结束。
D) 循环步骤A、B和C,直到工作结束。
从上述步骤可看出,迁移过程总是从segment unit分布多的节点向分布少的节点迁移,每迁移一步,volume都是向好的方向去发展,是一个逐渐收敛的过程,最终达到再平衡,包括P的平衡和PS组合的平衡,P的平衡是指所有volume的datanode上P分布得均匀,PS组合平衡就是如果一个segment的P分布在datanode1上,那么属于该segment的S在datanode1以外的节点上要分布均衡,并且volume所有的segment都要满足这个要求。
三、数据恢复
当生产环境发生变化且影响卷时(如磁盘损坏或拔出、节点掉电、节点网络异常等),需要进行卷的自我修复。
自我修复分为2个步骤:A)重新选举P;B)创建新的S。
重新选举P
因为IO读数据大部分都是从P中读,所以每个segment始终都要有P,当其中一个PSS的P所在的节点宕机了,该segment就只剩SS了,所以要重新选举一个S,将该S变为P;即当segment中没有P时将触发P的恢复,系统会根据磁盘当前状态(如IO(IN/OUT读写)大小、IOPS(Input/Output Operations Per Second,每秒的输入/输出操作)等)进行P的重新选举,选举segment中某个S作为P。由于在创建卷或者rebalance过程中都考虑了PS组合均衡分布原则,所以P的选举恢复,总会使P和S的分布达到均衡,保证了对group不同原则、segment unit分布及迁移原则和PS组合均衡分布原则的支持。
创建新的S
当volume所有的segment中都存在P,且segment中缺少S时,系统会根据当前环境的可用datanode数,以及volume在系统中的分布情况,重新选择一个datanode,在该datanode上创建S,从而使volume达到稳定状态。segment中缺少S指的是一个segment中的S少于2个,每个稳定的segment,都包括3个副本,即一个P和2个S,缺少任何一个都称作不稳定状态,在不稳定的状态下需要进行数据恢复;更具体地说,因为P和S是存储在磁盘上的,当出现磁盘被拔、节点宕机、网络掉线时,对于PSS来说,其中的P和S就无法和另一个S进行通信,如果这种状态持续了一定时间还没恢复,那就认为segment缺少S,此时会重新创建一个S。具体地说,包括两种情况,第一种情况是segment中的PSS,掉了P,变为SS,那么需要先选举一个P,则SS变成PS,此时少了一个S,需要创建一个S;第二种情况是segment中的PSS,掉了S,那么就不需要选举P的动作,直接创建一个S。
在P选举完成后,如果系统在指定时间之内恢复(如拔出的磁盘插回、节点上线等),那么卷在该datanode上的segment unit将继续可用。不同的是如果之前segment在此datanode上的segment unit为P,那么环境恢复后,将不再作为P,而是作为S继续被volume所用。本发明中的指定时间是可设置的时间,在本实施例中,设置为30分钟,用户可根据情况来设置,因为如果在生产环境中,数据是源源不断产生的,如果一个segment unit脱离了很长时间,数据会有很大变化,因此如果设置时间过长,需要计算还原数据,耗费时间更大,因此指定时间不宜设置过长。但如果用户需要进行机柜升级,升级需要5小时,那么可以将指定时间设置为5小时。
本发明还提供一种基于段单元的分布式存储系统,该系统采用本发明中的负载均衡方法,能够实现IO负载的均衡。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
Claims (5)
1.一种基于段单元的分布式存储系统的负载均衡方法,用于分布式存储系统中卷的创建、数据迁移和数据恢复,其特征在于:
卷的创建包括:
a1、构建主段单元、从段单元及主段单元和从段单元的组合均衡分布的段列表;所述均衡分布具体是指:(1)同属于一个段的段单元需分布在不同的节点上,且每个节点属于不同的组;(2)同一个段的主段单元和从段单元分别创建在不同的节点上,使主段单元、从段单元及主段单元和从段单元的组合均匀分布在节点上;
a2、从步骤a1的段列表中选取一个段,并在目的节点上创建主段单元和从段单元;
a3、若不能在目的节点上创建主段单元和从段单元,则随机创建一个段,该段的主段单元、从段单元应均衡分布;
当进行数据迁移时,需要进行数据迁移的卷按照卷的创建要求进行创建,数据迁移包括:
b1、如果在某一个节点上的主段单元的实际分布值和期望分布值之间的差额百分比超过阈值X时,则主段单元从该节点迁移到另一个主段单元分布未达到期望分布值的节点,其中,5%≤X≤30%;
b2、如果在某一个节点上的主段单元和从段单元的组合的实际分布值和期望分布值之间的差额百分比超过阈值X时,则将从段单元从该节点迁移到主段单元和从段单元的组合的分布未达到期望分布值的目的节点上,其中,5%≤X≤30%;
当进行数据恢复时,需要进行数据恢复的卷按照卷的创建要求进行创建,数据恢复包括:
c1、在一个段的从段单元中选择一个作为主段单元;
c2、如果所有的段中都有主段单元,且该段中从段单元的数量少于2个时,则重新选择一个节点,在该节点上创建该段的从段单元。
2.根据权利要求1所述的基于段单元的分布式存储系统的负载均衡方法,其特征在于:当进行卷的创建时,如果一个段已经创建了一个主段单元和两个从段单元,还存在其他的节点,该节点与已经创建的一个主段单元和两个从段单元所在的节点均不属于同一组,则给每个从段单元分配不超过2个冗余的从段单元,所述冗余的从段单元分别分布在不同的节点上。
3.根据权利要求1所述的基于段单元的分布式存储系统的负载均衡方法,其特征在于:当进行数据迁移时,所述b1包括以下步骤:
b11、根据节点权重计算所有节点上主段单元的期望分布值;
b12、获取当前所有节点上主段单元的实际分布值,计算所有节点上主段单元的分布率,主段单元的分布率=(主段单元的实际分布值-主段单元的期望分布值)/主段单元的期望分布值;
b13、将主段单元的分布率为正数的节点作为数据迁移的源节点,主段单元的分布率为负数的节点作为数据迁移的目的节点;
b14、遍历卷上的每一个段,查找源节点上分布主段单元、目的节点上分布从段单元的段,将主段单元从源节点迁移到目的节点。
4.根据权利要求1所述的基于段单元的分布式存储系统的负载均衡方法,其特征在于:当进行数据迁移时,所述b2包括以下步骤:
b21、根据节点权重计算每个节点上主段单元和从段单元的组合的期望分布值,同时计算每个节点总的从段单元的期望分布值,其中,主段单元和从段单元的组合的期望分布值为某个节点上分布了主段单元的段,这些段在其他节点上期望分布的从段单元的数量;
b22、获取每个节点上主段单元和从段单元的组合的实际分布值,获取每个节点总的从段单元的实际分布值,计算所有节点上主段单元和从段单元的组合的分布率,主段单元和从段单元的组合的分布率=(主段单元和从段单元的组合的实际分布值-主段单元和从段单元的组合的期望分布值)/主段单元和从段单元的组合的期望分布值,其中,主段单元和从段单元的组合的实际分布值为某个节点上分布了主段单元的段,这些段在其他节点上实际分布的从段单元的数量;
b23、将主段单元和从段单元的组合的分布率为正数的节点作为数据迁移的源节点,将主段单元和从段单元的组合的分布率为负数的节点作为数据迁移的目的节点;如果某两个节点上的主段单元和从段单元的组合的分布率相同,再按照从段单元的实际分布值迁移,将节点上总的从段单元的实际分布值大的节点作为数据迁移的源节点,节点上总的从段单元的实际分布值小的节点作为数据迁移的目的节点;
b24、遍历卷上的每一个段,查找从段单元分布在源节点上,目的节点上未分布段单元的段,将从段单元从源节点迁移到目的节点。
5.一种基于段单元的分布式存储系统,其特征在于:该系统执行如权利要求1-4中任一权利要求所述的基于段单元的分布式存储系统的负载均衡方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010723910.8A CN111596868B (zh) | 2020-07-24 | 2020-07-24 | 基于段单元的分布式存储系统的负载均衡方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010723910.8A CN111596868B (zh) | 2020-07-24 | 2020-07-24 | 基于段单元的分布式存储系统的负载均衡方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111596868A CN111596868A (zh) | 2020-08-28 |
CN111596868B true CN111596868B (zh) | 2020-10-09 |
Family
ID=72186636
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010723910.8A Active CN111596868B (zh) | 2020-07-24 | 2020-07-24 | 基于段单元的分布式存储系统的负载均衡方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111596868B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112083892B (zh) * | 2020-09-25 | 2021-05-18 | 上海依图网络科技有限公司 | 一种数据存储方法、装置、设备和介质 |
CN112256202B (zh) * | 2020-10-23 | 2023-09-26 | 南京鹏云网络科技有限公司 | 一种分布式存储系统和分布式存储系统中卷的删除方法 |
US20220342711A1 (en) * | 2021-04-23 | 2022-10-27 | Kabushiki Kaisha Toshiba | Allocation of heterogeneous computational resource |
CN115599316B (zh) * | 2022-12-15 | 2023-03-21 | 南京鹏云网络科技有限公司 | 分布式数据处理方法、装置、设备、介质和计算机程序产品 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014101044A1 (zh) * | 2012-12-27 | 2014-07-03 | 华为技术有限公司 | 分布式存储系统中的分区平衡方法、装置及服务器 |
WO2015057240A1 (en) * | 2013-10-18 | 2015-04-23 | Hitachi Data Systems Engineering UK Limited | Target-driven independent data integrity and redundancy recovery in a shared-nothing distributed storage system |
CN107168649B (zh) * | 2017-05-05 | 2019-12-17 | 南京城市职业学院 | 一种分布式存储系统中数据分布的方法及装置 |
-
2020
- 2020-07-24 CN CN202010723910.8A patent/CN111596868B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111596868A (zh) | 2020-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111596868B (zh) | 基于段单元的分布式存储系统的负载均衡方法和系统 | |
CN109196459B (zh) | 一种去中心化的分布式异构存储系统数据分布方法 | |
CN109597567B (zh) | 一种数据处理方法和装置 | |
JP4317876B2 (ja) | データストレージシステムにおける冗長データ割り当て | |
US11294601B2 (en) | Method of distributed data redundancy storage using consistent hashing | |
CN110515724B (zh) | 资源配置方法、装置、监视器及机器可读存储介质 | |
US20140358977A1 (en) | Management of Intermediate Data Spills during the Shuffle Phase of a Map-Reduce Job | |
CN107566531A (zh) | 一种支持均衡资源的Elasticsearch集群扩展方法 | |
CN103354923A (zh) | 一种数据重建方法、装置和系统 | |
CN110188084B (zh) | 一种分布式文件存储系统及文件存储方法 | |
CN104702691B (zh) | 分布式负载均衡方法和装置 | |
CN103929454A (zh) | 一种云计算平台中负载均衡存储的方法和系统 | |
JP2023536693A (ja) | 階層マッピングに基づくCephストレージシステムの自動均等化ストレージ方法 | |
CN103080909A (zh) | 计算机系统及其管理方法以及程序 | |
CN106063226B (zh) | 数据处理方法、装置和设备 | |
CN102004769A (zh) | 文件管理方法、设备及存储系统 | |
CN109492052B (zh) | 一种scada分布式历史数据存储方法及系统 | |
CN106610903A (zh) | 层级化存储器系统、存储器控制器和去重及存储器层级化方法 | |
US10810054B1 (en) | Capacity balancing for data storage system | |
CN107085539A (zh) | 一种云数据库系统以及云数据库资源动态调整方法 | |
CN111459642B (zh) | 一种分布式系统中故障处理和任务处理方法及装置 | |
CN1602480A (zh) | 管理附装在数据网络上的存储器资源 | |
CN107133228A (zh) | 一种数据重分布的方法及装置 | |
CN111930716A (zh) | 一种数据库扩容方法、装置及系统 | |
CN101419600A (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 |