一种去中心化的分布式异构存储系统数据分布方法

文档序号:10686784阅读:684来源:国知局
一种去中心化的分布式异构存储系统数据分布方法
【专利摘要】本发明公开了一种去中心化的分布式异构存储系统数据分布方法,它包括以下步骤:1、将数据对象分类;2、将存储设备分类;3、将存储数据分成不同的“放置组集群”,每种存储设备的类型对应于一类“放置组集群”;4、计算待存入的每种数据对象应该放置到不同类型“放置组集群”的比例;5、利用哈希算法确定待存入的数据对象属于“放置组集群”中的哪一个“放置组”;6、利用存储系统的数据分布算法,将每个“放置组”中的数据对象存储到多个对应的存储设备中。本发明的有点是:保持了存储系统的性能、负载均衡和可扩展性,又减少了对固态硬盘的写操作次数,延长其寿命。
【专利说明】
一种去中心化的分布式异构存储系统数据分布方法
技术领域
[0001] 本发明属于分布式计算机存储技术领域,具体涉及一种去中心化的分布式异构存 储系统数据分布方法。
【背景技术】
[0002] 在大数据应用、科学计算和云计算平台中,可靠并且可扩展的存储系统对系统性 能有着至关重要的作用。随着数据量增大(PB级别),存储系统的数据分布策略必须保证性 能和可扩展性。去中心化的数据分布策略,比如Ceph,利用存储设备本身的处理能力提供可 靠的对象存储系统。固态硬盘(SSD)读写性能优于传统的机械硬盘(HDD),越来越被广泛地 应用到存储系统中,形成大规模分布式异构存储系统。然而,存储系统的数据分布策略必须 考虑固态硬盘的"写耐受性",同时保证系统的可扩展性和负载均衡,因为过多的写操作会 加速固态硬盘存储介质的损耗。
[0003] 目前,有许多研究致力于工作流系统的数据分布和任务调度。比如在科学计算中, "工作流管理系统"会更具执行计算站点的存储资源和计算能力分配计算任务。根据工作流 模型中任务的依赖关系,可以确定这些任务所需数据的数据量大小,然后将不同阶段的计 算任务分配到不同的计算站点,分配方案中主要考虑减少不同站点的远程访问传输开销。 Ceph利用存储设备自身的通信能力,设计出了一种新的数据分布方法,该方法分为两步,第 一步利用哈希算法,将数据对象映射到"放置组",哈希函数的输入就是数据对象的全局唯 一的标识符,哈希函数的输出结果相同的数据对象被放置到同一个"放置组"。第二步利用 伪随机哈希算法,将每个"放置组"分布到多个存储设备。该数据分布方法没有考虑存储系 统的异构特性,这样会导致对固态硬盘产生密集的写操作。还有一些工作利用固态硬盘提 升中心化的存储性能,这种中心化的数据分布策略使得系统不具备扩展性,不适合超大规 模的数据应用。

【发明内容】

[0004] 针对现有技术存在的不足,本发明所要解决的技术问题是提供一种去中心化的分 布式异构存储系统数据分布方法,它通过分析数据对象的访问方式来保持存储系统的性 能、负载均衡和可扩展性,同时减少对固态硬盘的写操作。
[0005] 本发明所要解决的技术问题是通过这样的技术方案实现的,它包括以下步骤: 步骤1、在程序的执行过程中,统计每个数据对象被读/写的次数,将读写次数转换为权 值,作为数据的访问模式;根据数据的访问模式,将数据对象分类; 步骤2、根据存储设备的容量和读写性能,将存储设备分类; 步骤3、将存储数据分成不同的"放置组集群","放置组集群"包含多个"放置组",每种 存储设备的类型对应于一类"放置组集群"; 步骤4、根据存储系统的负载均衡目标和性能指标,计算待存入的每种数据对象应该放 置到不同类型"放置组集群"的比例; 步骤5、利用哈希算法确定待存入的数据对象属于"放置组集群"中的哪一个"放置组"; 步骤6、利用存储系统的数据分布算法,将每个"放置组"中的数据对象存储到多个对应 的存储设备中。固态硬盘的"放置组"会被分配到固态硬盘,机械硬盘的"放置组"会被分配 到机械硬盘。
[0006] 本发明的技术效果: 本发明根据数据对象的访问模式,将不同类别的数据分布到不同的"放置组集群",此 时需要计算待存入的不同类型数据对象放到不同的"放置组集群"的比列,用来控制"放置 组集群"之间的负载均衡,在确定了每个数据对象所属的"放置组集群"之后,再利用哈希算 法计算该数据对象对应的"放置组";再把"放置组"中的数据对象分布到存储设备中。这样 将数据均匀分布到存储设备中,排除了中心化的数据存储结构,既保持了存储系统的性能、 负载均衡和可扩展性,又减少了对固态硬盘的写操作次数,延长其寿命。
【附图说明】
[0007] 本发明的【附图说明】如下: 图1为计算每种待存入数据对象存储到每种"放置组集群"的比例算法流程图; 图2为本发明的数据存储过程图; 图3为映射读密集型数据对象映射到"放置组"的示意图; 图4为映射写密集型数据对象映射到"放置组"的示意图。
【具体实施方式】
[0008] 下面结合附图和实施例对本发明作进一步说明: 本发明包括以下步骤: 步骤1、在程序的执行过程中,统计每个数据对象被读/写的次数,将读写次数转换为权 值,作为数据的访问模式;根据数据的访问模式,将数据对象分类,比如读密集型,写密集型 和混合型;分类方法可以采用常见的K-Means聚类算法,每种类型的数据对象有个属性值用 来表示这类数据对象平均写次数; 步骤2、根据存储设备的容量和读写性能,将存储设备分类,比如高速固态硬盘,低速固 态硬盘,高速机械硬盘,低速机械硬盘,每种存储设备有自己的读写性能参数,比如平均读 写延迟时间、容量。
[0009]步骤3、将存储数据分成不同的"放置组集群","放置组集群"包含多个"放置组", 每种存储设备类型对应于一类"放置组集群"。"放置组集群"用来将读写属性相似的数据对 象组合到一起;"放置组集群"是一个逻辑的概念,主要用来对数据对象做聚合,同时,"放置 组集群"也有容量和读写性能的属性,容量就是该"放置组集群"对应的所有硬盘的容量,读 写性能是这些硬盘的平均读写延迟。
[0010]步骤4、根据存储系统的负载均衡目标和性能指标,计算待存入的每种数据对象应 该放置到不同类型"放置组集群"的比例; 例如,假设系统有3个"放置组集群",对于读密集型数据,20%放入第一个"放置组集 群",30%放入第二个"放置组集群",50%放入第三个"放置组集群",这个比例指的是放入每 类"放置组集群"的个数占该类数据总数的比例。
[0011] 存储系统的性能指标根据存储设备的读写性能来设定,比如,要求对所有的数据 对象,读取操作的平均延迟为0.2毫秒,写入操作的平均延迟为0.5毫秒。设置每种数据对象 在不同类型"放置组集群"比例的目的就是要保证数据在"放置组集群"之间均衡分布。在极 端的情况下,所有的数据对象都是写密集型,按照存储设备分配的目标,写密集型数据对象 应分配到机械硬盘中,以便减少对固态硬盘的写操作,但如果所有数据对象都是写密集型 的,那么全都会被分配到机械硬盘对应的"放置组集群",使得固态硬盘中没有数据。为了避 免这种情况,需要将同一种类型的数据对象分配到不同的"放置组集群",用这个比例来控 制"放置组集群"之间的负载均衡。
[0012] 步骤5、利用哈希算法确定待存入的数据对象属于"放置组集群"中的哪一个"放置 组",因为一个"放置组集群"中包含多个"放置组"。
[0013]步骤6、利用存储系统的数据分布算法,将每个"放置组"中的数据对象存储到多个 对应的存储设备中,固态硬盘对应"放置组集群"中的"放置组"会被分配到固态硬盘,机械 硬盘对应"放置组集群"中的"放置组"会被分配到机械硬盘。
[0014] -个"放置组"存储到多个存储设备的原因是为了对同一个数据多次备份。备份 数由系统初始化设置。因为同一个"放置组"对应的存储设备有多个,所以需要有个映射算 法将确定每个"放置组"应该放入哪一个存储设备。
[0015] 上述步骤4中,计算每种待存入数据对象放置到每种"放置组集群"的比例算法流程图 如图1所示: 该流程开始于步骤801,然后: 在步骤802,计算所有待存入数据对象的总数,即不同类型数据对象的总和; 在步骤803,计算已有数据对象的总数,即在初始状态下,所有存储设备已经存储的数 据对象的个数; 在步骤804,根据负载均衡条件,计算每个"放置组集群"能存储的数据对象最大值;即 确定每个"放置组集群"的容量; 负载均衡是系统的配置参数,在所有数据对象完全平均分布的情况下,根据每个存储 设备的容量增加或者减少5%都认为是负载均衡的。比如,某个"放置组集群"在完全平均分 布的状态下能存储100个数据对象,负载均衡的平衡条件允许5%的浮动,那么该"放置组集 群"最多能存储100+100*0.05=105个数据对象; 在步骤805,将所有待存入数据对象按照平均写次数升序排列,平均写次数是不同类的 数据对象的属性; 假设待存入数据对象被分成了3类,读密集性,写密集型和混合型,其中读密集型数据 的平均写次数是10,写密集型的平均写次数是80,混合型的平均写次数是50。
[0016]在步骤806,将所有"放置组集群"按照性能降序排列,其中"放置组集群"的性能就 是与其对应的存储设备的读写性能,固态硬盘的读写性能优于机械硬盘; 在步骤807,初始化变量i=0,用来扫描待存入数据对象类别; 假设待存入数据对象被分成了 3类,这个流程中的i就是1,2,3,这是一个循环迭代过 程,即分别扫描待存入的每个类别的数据对象; 在步骤808,初始化变量j=0,用来扫描"放置组集群"类别; 假设数据"放置组集群"被分成了 4类,这个流程中的j就是1,2,3,4; 在步骤809,将第i类待存入的数据对象分配到第j类"放置组集群"; 该步骤是按照步骤805和步骤806中排好的顺序,依据步骤804所计算的"放置组集群" 容量依次填充待存入的每类数据对象的个数; 在步骤810,记录存储在"放置组集群" j中i类待存入的数据对象的个数,用于计算待存 入的每类数据对象的存储比例; 每一类待存入的数据对象的总个数是已知的,记录每一类待存入数据对象放置到每一 个"放置组集群"的个数,用该数值除以每一类待存入记录数据对象的总数,就得到了比值。 [0017]在步骤811,判断"放置组集群" j是否达到最大存储个数,如果是,执行步骤812,否 则执行步骤813; 在步骤813,判断是否所有待存入数据对象处理完毕,如果是,执行步骤816,否则,执行 步骤814; 在步骤814,将用来扫描数据对象类别数组的指针i移动到下一个位置,即处理下一类 待存入数据对象,执行步骤809; 在步骤812,将用来扫描"放置组集群"数组的指针j移动到下一个位置,即处理下一个 "放置组集群"; 在步骤815,判断是否所有"放置组集群"处理完毕,如果是,执行步骤816,否则,执行步 骤809; 在步骤816,根据步骤810中记录的每个"放置组集群"存储的每类待存入数据对象的个 数,计算每类待存入数据对象分配到每种"放置组集群"的比例; 在步骤817,每类待存入数据分配到各类"放置组集群"的算法结束。
[0018] 上述步骤5和步骤6的数据存储过程如图2所示,将存储系统的"放置组"划分为不同的 "放置组集群",每一个"放置组集群"包含多个"放置组"。存储数据对象时,需要首先根据每 个数据对象的类别和该类别的数据对象在"放置组集群"的分配比例,确定该数据属于哪一 个"放置组集群",这个过程要通过图1的流程来计算不同类型的对象放到不同的"放置组集 群"的比列,以来控制"放置组集群"之间的负载均衡,再利用哈希算法确定该数据对象属于 这个"放置组集群"中的哪一个"放置组"。步骤6利用一个伪随机哈希算法(CRUSH)把这个 "放置组"映射到不同的存储设备中去。
[0019] (一)、图1所示流程图的实施例 假设存储系统有5类存储设备,每类存储设备对应一个"放置组集群",那么系统有5个 "放置组集群"。所有放置组集群已经按照性能从高到低进行排序(对应于步骤806)。如表1 所示。
[0020] 表3系统存储设备的属性
存储系统的总容量为:1000+1500+2000+2500+3000=10000
假设待存入的数据对象分成了 3类,每类对象的平均读写次数和数量如表2所示。每个 类型已经按照写次数进行排序(对应于步骤805)。
[0021]表i所有待存入数据对象的属性
根据图1所示的流程,算法的运行过程如下: 在步骤802,所有待存入的数据对象总数为350+150+200=700; 在步骤803,计算已有数据对象的总数为60+260+300+530+700=1850; 数据对象的总数量为:700+1850=2500; 在步骤804,假设系统负载均衡的平衡因子e=0.001,则对于每一个"放置组集群"计算 出其相应可容纳的最大值RMAX,计算公式如下: "放置组集群" 1:RMAX. 1: (1+0? 001 )*( 1000*(700+1850))/10000=255; "放置组集群"2:RMAX.2: (1+0? 001 )*( 1500*(700+1850))/10000=383; "放置组集群"3:RMAX.3: (1+0? 001 )*(2000*(700+1850))/10000=511; "放置组集群"4:RMAX.4: (1+0? 001 )*(2500*(700+1850))/10000=638; "放置组集群"5:RMAX.5: (1+0? 001 )*(3000*(700+1850))/10000=766; 因此,对五个"放置组集群",假设数据完全平均分配时的最大容量RMAX分别为:255, 383,511,638,766。
[0022]在步骤807,i初始化为0,用来扫描A,B,C三类待存入的数据对象。
[0023]在步骤808,j初始化为0,用来扫描"放置组集群" 1,2,3,4,5. 在步骤809的分配与步骤810记录过程如下: 对三种类型数据对象进行分类时,对平均写次数最少读次数较多的A类优先分配到写 延迟小读延迟小的OSD. 1上。
[0024] 1.放置组集群1本身负载为60,计算出的可容纳最大值为255,可容纳量255-60= 195〇
[0025] 故可分配类型A的195个数据对象分配到放置组集群1中,此时类型A剩余350-195= 155。
[0027] 2 .放置组集群2本身负载为260,计算出的可容纳最大值为383,可容纳量383-260= 123〇
[0028] 继续将类型A的123个数据对象分配到放置组集群2中,类型A剩余155-123=32。
[0029]放置组集群2已满。
[0030] 3 .放置组集群3本身负载为300,计算出的可容纳最大值为511,可容纳量511-300= 211; 继续将类型A的32个数据对象分配到放置组集群3中,类型A分配完毕,剩余0; 放置组集群3剩余容量为211-32=179; 对类型B进行分配,优先分配到读写延迟都相对较小的放置组集群3中; 将类型B的150个数据对象全部分配到放置组集群3中。此时放置组集群3剩余容量179-150=29; 对类型C进行分配,仍优先分配到读写延迟都相对较小的放置组集群3中; 将类型C的29个数据对象分配到放置组集群3中,类型C剩余200-29=171。
[0031]放置组集群3已满。
[0032] 4.放置组集群4本身负载530,计算出的可容纳最大值为638,可容纳量为638-530=108; 继续将类型C的108个数据对象分配到放置组集群4中,类型C剩余63=171-108。
[0033]放置组集群4已满。
[0034] 5.放置组集群5本身负载700,计算出的可容纳最大值为766,可容纳量为766-700=66; 将类型C的63个数据对象分配到放置组集群5中,类型C分配完毕,剩余0。
[0035]放置组集群5剩余容量仍为66-63=3。
[0036] 在步骤816,根据最后的结果,计算每类待存入的数据对象分配到每个"放置组集群"的 比例:
(二)、下面说明本发明的步骤5如何将不同类型的数据对象映射到不同的"放置组"。
[0037] 本实施例中,假设系统有100个"放置组",编号从1到100。根据系统存储设备类型, 这些"放置组"被分成了3个"放置组集群" :1-20号为第一个"放置组集群",21-50号为第二 个"放置组集群",51-100号为第三个"放置组集群"。
[0038] 如图3所示,将一个读密集型的数据对象映射到"放置组"13。假设通过如图1的流 程算法得出读密集型数据对象在三个"放置组集群"中的分布比例(Distribution Ratio) 为6:2:2,也就是:1-20号"放置组"为第一个"放置组集群",有60%的读密集型的数据属于第 一个"放置组集群",21-50号"放置组"为第二个"放置组集群",有20%的读密集型数据属于 第二个"放置组集群",51-100号"放置组"为第三个"放置组集群",有20%的读密集型数据属 于第三个"放置组集群"。由于当前这个读密集型数据对象的标识经过哈希函数得到的结果 是50,在第一个"放置组集群"的范围之内,再利用哈希算法,计算出此该数据对象的目标 "放置组"为13。
[0039] 如图4所示,将一个写密集型的数据对象映射到"放置组"62。假设写密集型数据对 象在三个"放置组集群"中的分布比例为1:3:6,该数据对象的标识经过哈希函数得到的结 果也是50,但50属于第三个"放置组集群"(因为读密集型数据和写密集型数据对应放置到 每个放置组集群的比例是不一样的,图4中间哈希值列出三个"放置组集群"的放置比例,哈 希值1-10的数据对象可以认为是放置到第一类"放置组集群"的,哈希值11-40的数据对象 是放置到第二类"放置组集群"的,哈希值41-100的数据对象是放置到第三类"放置组集群" 的),因此这个对象最终被映射到"放置组"62中。
【主权项】
1. 一种去中心化的分布式异构存储系统数据分布方法,其特征是,包括以下步骤: 步骤1、在程序的执行过程中,统计每个数据对象被读/写的次数,将读写次数转换为权 值,作为数据的访问模式;根据数据的访问模式,将数据对象分类; 步骤2、根据存储设备的容量和读写性能,将存储设备分类; 步骤3、将存储数据分成不同的"放置组集群","放置组集群"包含多个"放置组",每种 存储设备的类型对应于一类"放置组集群"; 步骤4、根据存储系统的负载均衡目标和性能指标,计算待存入的每种数据对象应该放 置到不同类型"放置组集群"的比例; 步骤5、利用哈希算法确定待存入的数据对象属于"放置组集群"中的哪一个"放置组"; 步骤6、利用存储系统的数据分布算法,将每个"放置组"中的数据对象存储到多个对应 的存储设备中。2. 根据权利要求1所述的一种去中心化的分布式异构存储系统数据分布方法,其特征 是,所述步骤4中,计算待存入每种数据对象放置到每种"放置组集群"的比例的步骤包括: 步骤802,计算所有待存入数据对象的总数; 步骤803,计算已有数据对象的总数; 步骤804,根据负载均衡条件,计算每个"放置组集群"能存储的数据对象最大值; 步骤805,将所有待存入数据对象按照平均写次数升序排列; 步骤806,将所有"放置组集群"按照性能降序排列; 步骤807,初始化变量i=0,用来扫描待存入数据对象类别; 步骤808,初始化变量j=0,用来扫描"放置组集群"类别; 步骤809,将第i类待存入的数据对象分配到第j类"放置组集群"; 步骤810,记录存储在"放置组集群" j中i类待存入的数据对象的个数; 步骤811,判断"放置组集群" j是否达到最大存储个数,如果是,执行步骤812,否则执行 步骤813; 步骤813,判断是否所有待存入数据对象处理完毕,如果是,执行步骤816,否则,执行步 骤814; 步骤814,处理下一类待存入数据对象,执行步骤809; 步骤812,处理下一个"放置组集群"; 步骤815,判断是否所有"放置组集群"处理完毕,如果是,执行步骤816,否则,执行步骤 809; 步骤816,根据步骤810中记录的每个"放置组集群"存储的每类待存入数据对象的个 数,计算每类待存入数据对象分配到每种"放置组集群"的比例。3. 根据权利要求2所述的一种去中心化的分布式异构存储系统数据分布方法,其特征 是,所述步骤809中,第i类待存入的数据对象分配到第j类"放置组集群"的方法是:按照步 骤805和步骤806中排好的顺序,依据步骤804所计算的"放置组集群"容量依次填充待存入 的每类数据对象的个数。4. 根据权利要求1所述的一种去中心化的分布式异构存储系统数据分布方法,其特征 是:步骤6中,采用伪随机哈希算法把这个"放置组"映射到不同的存储设备中。
【文档编号】G06K9/62GK106055277SQ201610376033
【公开日】2016年10月26日
【申请日】2016年5月31日
【发明人】沙行勉, 诸葛晴凤, 吴林
【申请人】重庆大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1