CN108491478A - 一种改进型的分布式存储系统的数据分布方法及系统 - Google Patents
一种改进型的分布式存储系统的数据分布方法及系统 Download PDFInfo
- Publication number
- CN108491478A CN108491478A CN201810196483.5A CN201810196483A CN108491478A CN 108491478 A CN108491478 A CN 108491478A CN 201810196483 A CN201810196483 A CN 201810196483A CN 108491478 A CN108491478 A CN 108491478A
- Authority
- CN
- China
- Prior art keywords
- pairing
- data
- tree
- storage
- storage device
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种改进型的分布式存储系统的数据分布方法及系统,该方法包括如下步骤:生成以存储设备作为叶子结点的设备树;根据预设配对规则,将设备树中的存储设备进行配对,并生成设备配对列表;依据设备配对列表,实现数据在设备树中的分布。采用本发明的技术方案,可以实现一种容量更均衡(理论上接近100%),横向扩展和故障处理更少影响业务(设备越多影响越小)的分布式存储的系统和方法。
Description
技术领域
本发明涉及计算机存储技术领域,特别涉及一种改进型的分布式存储系统的数据分布方法及系统。
背景技术
对于分布式存储系统,数据分布在各个结点中,需要一种有效的数据分布机制,不但能够被快速寻址,并且数据的分布能够考虑到容量均衡和负载均衡。目前现有分布式存储系统的数据分布实现中,很多采用中心结点分配数据分布地址并查表索引,随着数据量的增大,寻址开销也越来越大。
其他分布式存储系统,比如CEPH的数据分布采用哈希计算寻址,可以解决上面的问题,但也存在几个不足:
(1)哈希计算分配数据地址,存在一定的随机性,随着系统的使用,各个存储结点的容量使用很不均衡,在一些不利配置的条件下,最大和最小容量之间最高相差50%,即使对数据进行复杂的重新分布均衡优化,也仅能达到90%左右的容量使用率,造成容量的浪费;
(2)扩容或硬盘故障会导致数据分布发生变化,导致几乎整个系统产生数据迁移。比如在Ceph中,数据最小地址单位(比如CEPH的归置组Placement group)是动态变化的,当存储池中出现故障或扩容时,会导致大量数据发生迁移,由于哈希分布的随机性,当输入发生变化后,输出是整系统联动的,会导致整个存储池都参与数据的重新分布,过分影响用户的正常使用。
发明内容
针对现有技术存在的问题,本发明提供一种改进型的分布式存储系统的数据分布方法及系统。
为实现上述目的,本发明提供一种改进型的分布式存储系统的数据分布方法,包括如下步骤:
生成以存储设备作为叶子结点的设备树;
根据预设配对规则,将设备树中的存储设备进行配对,并生成设备配对列表;
依据设备配对列表,实现数据在设备树中的分布。
优选地,所述预设配对规则包括:
(1)、按照设备树中不同的度大于零的结点进行配对;
(2)、副本数;
(3)、任一存储设备最多只能参加一次配对,根据规则(2)未能实现配对的存储设备处于只读的降级状态。
优选地,所述的依据设备配对列表,实现数据在设备树中的分布包括以下任一方式:
用户自行分配对象名,底层存储对象名不带显式寻址信息;或
底层存储对象名带显式寻址信息。
优选地,所述设备树依层级分为:根节点、数据中心、机房、机架、主机、及设备。
本发明还提供一种改进型的分布式存储系统的数据分布系统,包括:
设备树,由存储设备作为叶子结点而生成;
数据池组,由若干数据池组成,每一数据池包括副本数、设备配对列表、及该设备配对列表下的配对设备;
所述设备配对列表经由设备树中的存储设备依据预设配对规则而生成,所述预设配对规则包括副本数。
优选地,所述预设配对规则还包括:
(1)、按照设备树中不同的度大于零的结点进行配对;
(2)、任一存储设备最多只能参加一次配对,根据规则(1)未能实现配对的存储设备处于只读的降级状态。
优选地,所述设备树依层级分为:根节点、数据中心、机房、机架、主机、及设备。
采用本发明的技术方案,可以实现一种容量更均衡(理论上接近100%),横向扩展和故障处理更少影响业务(设备越多影响越小)的分布式存储的系统和方法。
附图说明
图1为本发明数据分布方法的流程图;
图2为本发明实施例一设备树示意图;
图3为本发明实施例一数据池组的拓扑图。
具体实施方式
以下结合附图和具体实施例,对本发明进一步说明。
参照图1至图3所示,本发明提供一种改进型的分布式存储系统的数据分布方法,包括如下步骤:
S01:生成以存储设备作为叶子结点的设备树。
该存储设备,可以为HDD、SSD等高速存储盘,有利于加快文件的读写速度。
所述设备树是个树形结构,其中HDD、SSD等存储设备Dev作为叶子节点。其他节点根据物理结构进行抽象,比如机房抽象、主机抽象,主机由于存在唯一的IP等信息可以被软件实时检测并自动抽象其他节点可以人工配置抽象。其中数据中心、机房、机架、主机等中间层级都是可选的,可以根据实际需要配置。
S02:根据预设配对规则,将设备树中的存储设备进行配对,并生成设备配对列表。
设备配对列表,是将具体数据进行分配的依据,其生成依赖于设备树及数据的具体形态。
具体地,数据的具体形态以数据池组PoolGroup来分布,数据池组的属性包含一个数据池列表。数据池组由一个或多个数据池组成。系统存在一个默认的0号数据池组。数据池组决定了统一的命名空间,在数据池组内可以通过增加数据池来进行扩容和横向扩展。其中,数据池Pool是决定数据分布规则的基本单位,它包括副本数,所使用的设备树DevTree,数据分布的规则类型peertype,以及设备配对列表DevPeer。
参照图3,该数据池的数据分布拓扑中,设备配对内,根据副本策略,比如双副本,两个设备的数据互为镜像,因此DevPeer内容量可以完全均衡。和通常的分布式存储系统不同,其中Dev是唯一的,只能归属于唯一Pool内的某个设备配对DevPeer,不能被其他DevPeer复用。不同设备配对之间的设备编号不同,因此设备故障后,只会影响到一个DevPeer,不会影响到整个系统。
上述预设配对规则包括:
(1)、按照设备树中不同的度大于零的结点进行配对;
(2)、副本数;
(3)、任一存储设备最多只能参加一次配对,根据规则(2)未能实现配对的存储设备处于只读的降级状态。
该预设配对规则,是基于尽量满足故障域分离的要求,例如,分布到不同的host或者不同的机架,以便达到分布式容灾的效果。设备Dev在分配到某个DevPeer之前处于游离状态,不承担业务,使用自动分配的唯一的Dev-uuid标识。在初始化Pool配置时,每个Host中Dev被分配到DevPeer的初始计数都为0,程序遍历DevTree的叶子节点,当该叶子节点Dev还没被分配并且该Dev的Host拥有的DevPeer计数最少时,则分配到一个新的DevPeer的第一个设备Dev,并增加Host的DevPeer计数,接着根据taketype类型,寻找不同(Dev-disk,host,rack。。。)下的叶子节点Dev,依据同样规则分配到刚才DevPeer的第二个设备Dev,如果peertype是副本类型的双副本,则该DevPeer分配完毕。以此类推,直到所有Dev都被分配完毕,如果出现由于奇数个Dev导致某个DevPeer找不到第二个Dev,则该DevPeer可以处于只读的降级状态。
S03:依据设备配对列表,实现数据在设备树中的分布。
所述的依据设备配对列表,实现数据在设备树中的分布包括以下任一方式:
(1)用户自行分配对象名,底层存储对象名不带显式寻址信息
用户需要指定目标PoolGroup下的目标Pool,比如对象名″object1″根据哈希值计算,在指定Pool下的所有DevPeer中取模得到特定的DevPeer,由于Pool内的配置不可人工变更,并且也不会随着故障状态自动变更,因此该对象的存储位置不会随意发生变化。在对象数量够多的情况下,Pool内的DevPeer之间的容量是大致均衡的;或
(2)底层存储对象名带显式寻址信息
第二种方式是底层存储对象名带显式寻址信息(PoolGroup-id,Pool-id,DevPeer-id),这种方法系统会根据组件内的容量信息,在PoolGroup内的不同Pool中选择任意容量最小的DevPeer,并自动给用户分配特定的对象名。在对象初始分配时进行容量优先分配,并直接把地址附在对象名的后缀中,而在后续的对象寻址时,则可以通过对象名直接计算得到对象位置。用户在申请分配对象名时,也可以在指定特定PoolGroup特定Pool得前提下,分配Pool内某DevPeer。也可以在不指定的情况下,由系统自动分配。比如对象名″objectl-PoolGroupid-Poolid-DevPeerid″。
我们以三种存储使用场景为例子。
第一种是文件系统。文件系统一般有元数据服务器MDS,因此文件名,inode和存储底层对象之间存在天然映射关系,因此分配对象名时,可以很自然的使用第二种方式,使得文件始终优先选择容量最低的DevPeer,达到容量均衡。
第二种是块。块设备的设备文件是一种特殊的文件类型,可以在PoolGroup内自动根据容量选择合适的Pool,避免用户要么手工指定存储池,要么完全通过哈希算法映射,容易发生数据分布误差导致的容量不均衡。
第三种是对象。对象存储系统一般伴随着用户的二次开发应用,用户的应用系统中可以自由选择对象存储方式,用户可以根据存储系统提供的接口,自行判断目标Pool以及目标DevPeer,更高的自由度需要用户自行保证容量的使用情况避免容量不足。用户也可以直接调用存储系统提供的接口,得到合适的对象名称。
以上三种方式,对于分布式的存储系统来说,数据分布式带来的二次寻址都是通过哈希计算的,避免多余的查表消耗。任何组件都可以根据Pool配置独立计算出对象Object的所在位置(去中心化)。同时在存储系统的上层应用层面,一般天然存在应用元数据和数据的查表映射关系,可以在业务设计的同时,兼顾到容量的均衡,理论上,Dev的设备使用率可以接近100%。
本发明中,依据上述分布系统的设计,以下介绍一下如何减小扩容和故障的业务影响,以及该分布系统缺点的应对方案。
(1)、扩容
根据上面的设计,当扩容时,需要新增Pool,而Pool不会改变已有Pool的数据分布,不会发生额外的迁移。而由于新增Pool的可用空间比较大,因此在后续的对象分配中,总是会优先分配到新Pool中。
(2)设备故障
根据冗余设计,我们只允许DevPeer中的某个设备发生故障,当故障发生时,该Dev被标记为故障,只读降级,因此另外的Dev可以正常承担读取业务,新的写业务会优先分配到其他DevPeer中。
故障分为可恢复故障和不可恢复故障,对于短期的可恢复故障,比如断电,在一定时间内,系统可以只给出告警,数据不会进行重建,也不会进行重新分布。业务可以正常进行。对于不可恢复故障,比如硬盘损坏,用户可以插入新盘,初始化为指Dev-uuid的Dev并标记为重建状态,DevPeer可以对该Dev进行重建,把对应的副本数据复制到新的Dev。
我们看到,仅仅在硬盘损坏的情况下,才会对业务数据进行数据重建,并且只影响到特定的DevPeer,而且该DevPeer降级为只读,可以进一步减少写业务,避免读写业务,重建业务造成额外的负载。
理论上,假设设备Dev总数是n,单次允许最大故障设备数是k,数据冗余方式是双副本,则数据重建时的性能至少剩余=(n-2*k)/n。可见,系统的设备数目越多,则数据重建对整系统的性能影响占比越小。一个拥有10个Dev的存储系统,当一个Dev发生故障时,该Dev性能完全损失即10%,DevPeer的另一个Dev需要参与数据重建,性能打折扣假设损失1%~10%,则该方案下,存储系统仍剩余80%~89%的性能。
(3)缺点应对方案
特定的设计会带来一些优点,但也带来一些缺点,下面是应对方法:
a)、Pool内不能随意变更配置,Pool内的数据不能在后期通过横向扩展,提高这些数据的访问性能,因此Pool的初始配置应该有足够的Dev,并且能达到理论Nic带宽。
另一个解决方法是,当用户发现某个Pool性能不足时,可以以指定Pool的方式,把该Pool的数据迁移到另一个性能更强的Pool中,只需在Pool之间进行对象拷贝,并把目标对象名中的Pool地址改为新Pool的Id即可。
从运维的角度上说,一个几百T的存储系统,初始规划本身是比较重要的。如果后期规划的变更影响到几百T的数据重分布,也是比较庞大和慎重的事情,实施过程中操作可以稍微繁琐,但是应当是考虑如何安全并业务影响最小化。从这个角度上说,比如像Ceph这种分布式存储系统虽然可以很方便的增加Osd横向扩展,系统也会对数据进行自动迁移和均衡,但是整个系统的几乎所有Dev都参与到均衡任务中,会导致业务性能明显的衰减。
b)、数据重建的速度较慢。数据重建只在DevPeer内重建,因此依赖于存储Dev的性能。如果重建目标Dev的性能较差,则数据重建的性能也会较差。
在本系统中,Dev的配置来源可以支持多种类型,包括本地Raid0组,或者Nas,Dev设备性能如果能够达到555M的写入带宽,则有可能在半小时内迁移1T的数据量,如果能够达到万兆网卡的极限带宽,则最快可以15分钟左右迁移1T的数据量。具体可以根据需要调整。
但另一方面,在数据重建过程中,降级DevPeer的另一个设备也发生故障的几率极低,而且该方案数据重建对系统的影响比较小,因此数据重建的速度相对来说不是特别重要。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。
Claims (7)
1.一种改进型的分布式存储系统的数据分布方法,其特征在于,包括如下步骤:
生成以存储设备作为叶子结点的设备树;
根据预设配对规则,将设备树中的存储设备进行配对,并生成设备配对列表;
依据设备配对列表,实现数据在设备树中的分布。
2.根据权利要求1所述的分布方法,其特征在于,所述预设配对规则包括:
(1)、按照设备树中不同的度大于零的结点进行配对;
(2)、副本数;
(3)、任一存储设备最多只能参加一次配对,根据规则(2)未能实现配对的存储设备处于只读的降级状态。
3.根据权利要求1所述的分布方法,其特征在于,所述的依据设备配对列表,实现数据在设备树中的分布包括以下任一方式:
用户自行分配对象名,底层存储对象名不带显式寻址信息;或
底层存储对象名带显式寻址信息。
4.根据权利要求1所述的分布方法,其特征在于,所述设备树依层级分为:根节点、数据中心、机房、机架、主机、及设备。
5.根据权利要求1至4任一项所述的分布方法的分布系统,其特征在于,包括:
设备树,由存储设备作为叶子结点而生成;
数据池组,由若干数据池组成,每一数据池包括副本数、设备配对列表、及该设备配对列表下的配对设备;
所述设备配对列表经由设备树中的存储设备依据预设配对规则而生成,所述预设配对规则包括副本数。
6.根据权利要求1所述的分布系统,其特征在于,所述预设配对规则还包括:
(1)、按照设备树中不同的度大于零的结点进行配对;
(2)、任一存储设备最多只能参加一次配对,根据规则(1)未能实现配对的存储设备处于只读的降级状态。
7.根据权利要求1所述的分布系统,其特征在于,所述设备树依层级分为:根节点、数据中心、机房、机架、主机、及设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810196483.5A CN108491478A (zh) | 2018-03-09 | 2018-03-09 | 一种改进型的分布式存储系统的数据分布方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810196483.5A CN108491478A (zh) | 2018-03-09 | 2018-03-09 | 一种改进型的分布式存储系统的数据分布方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108491478A true CN108491478A (zh) | 2018-09-04 |
Family
ID=63338373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810196483.5A Pending CN108491478A (zh) | 2018-03-09 | 2018-03-09 | 一种改进型的分布式存储系统的数据分布方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108491478A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112579551A (zh) * | 2019-09-30 | 2021-03-30 | 北京金山云网络技术有限公司 | 数据存储和读取方法、装置、客户端、管理服务器及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101409663A (zh) * | 2008-11-25 | 2009-04-15 | 杭州华三通信技术有限公司 | 一种用户终端服务的分配方法和装置 |
CN102955808A (zh) * | 2011-08-26 | 2013-03-06 | 腾讯科技(深圳)有限公司 | 一种数据获取方法和分布式文件系统 |
CN103634401A (zh) * | 2013-12-03 | 2014-03-12 | 北京京东尚科信息技术有限公司 | 一种存储数据副本的方法和终端装置以及服务器装置 |
CN103778255A (zh) * | 2014-02-25 | 2014-05-07 | 深圳市中博科创信息技术有限公司 | 一种分布式文件系统及其数据分布方法 |
CN107592368A (zh) * | 2017-10-10 | 2018-01-16 | 武汉斗鱼网络科技有限公司 | 分布式数据同步路由选择方法、存储介质、设备及系统 |
-
2018
- 2018-03-09 CN CN201810196483.5A patent/CN108491478A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101409663A (zh) * | 2008-11-25 | 2009-04-15 | 杭州华三通信技术有限公司 | 一种用户终端服务的分配方法和装置 |
CN102955808A (zh) * | 2011-08-26 | 2013-03-06 | 腾讯科技(深圳)有限公司 | 一种数据获取方法和分布式文件系统 |
CN103634401A (zh) * | 2013-12-03 | 2014-03-12 | 北京京东尚科信息技术有限公司 | 一种存储数据副本的方法和终端装置以及服务器装置 |
CN103778255A (zh) * | 2014-02-25 | 2014-05-07 | 深圳市中博科创信息技术有限公司 | 一种分布式文件系统及其数据分布方法 |
CN107592368A (zh) * | 2017-10-10 | 2018-01-16 | 武汉斗鱼网络科技有限公司 | 分布式数据同步路由选择方法、存储介质、设备及系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112579551A (zh) * | 2019-09-30 | 2021-03-30 | 北京金山云网络技术有限公司 | 数据存储和读取方法、装置、客户端、管理服务器及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11645173B2 (en) | Resilient mediation between storage systems replicating a dataset | |
US11520720B1 (en) | Weighted resource allocation for workload scheduling | |
US8498967B1 (en) | Two-node high availability cluster storage solution using an intelligent initiator to avoid split brain syndrome | |
CN103942112B (zh) | 磁盘容错方法、装置及系统 | |
US11579790B1 (en) | Servicing input/output (‘I/O’) operations during data migration | |
US7702757B2 (en) | Method, apparatus and program storage device for providing control to a networked storage architecture | |
CN109690494B (zh) | 系统存储装置中的分层容错 | |
US10803086B2 (en) | Reducing data amplification when resynchronizing components of an object replicated across different sites | |
US20160308965A1 (en) | Storage node, storage node administration device, storage node logical capacity setting method, program, recording medium, and distributed data storage system | |
TWI617924B (zh) | 記憶體資料分版技術 | |
US7689767B2 (en) | Method to detect and suggest corrective actions when performance and availability rules are violated in an environment deploying virtualization at multiple levels | |
US11188258B2 (en) | Distributed storage system | |
US20150205531A1 (en) | Adding Storage Capacity to an Object Storage System | |
CN104410531B (zh) | 冗余的系统架构方法 | |
CN106874142A (zh) | 一种实时数据容错处理方法及系统 | |
US7827353B2 (en) | Self healing memory | |
JP2021157588A (ja) | 分散ストレージシステム及び記憶制御方法 | |
CN108491478A (zh) | 一种改进型的分布式存储系统的数据分布方法及系统 | |
US20230013522A1 (en) | Adjusting Storage Delivery In A Storage System | |
Nakamura et al. | An implementation of NaryRAID | |
Shan et al. | Explore Data Placement Algorithm for Balanced Recovery Load Distribution | |
Tate et al. | Implementing the IBM System Storage SAN Volume Controller with IBM Spectrum Virtualize V8. 2.1 | |
CN118819422A (zh) | 分布式存储方法、分布式存储系统及非易失性存储介质 | |
JP2022110245A (ja) | 仮想的なストレージシステムを提供するストレージクラスタを備えたストレージシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180904 |
|
RJ01 | Rejection of invention patent application after publication |