数据写入及读取方法技术

技术编号:17994630 阅读:49 留言:0更新日期:2018-05-19 11:49
本发明专利技术提供一种数据写入及读取方法,涉及信息存储技术领域,其中,数据写入方法应用于由多个OSD组成的存储系统中,获取目标数据所属的归置组以及所述归置组所对应的冗余策略;通过CRUSH算法为归置组选择所需的一个或一个以上OSD;每个OSD中包括多个对象存储模块;从一个或一个以上OSD中选择归置组所需的对象存储模块;将目标数据根据冗余策略进行处理,得到处理结果;将处理结果分发到对应的对象存储模块中进行写操作。该方法通过对设置于OSD中的多个对象存储模块的调整,可以灵活动态地增删每个OSD管理的硬盘,此外,OSD内部通过冗余策略进行自修复,避免单硬盘故障引发集群修复问题。

Data writing and reading methods

The present invention provides a method of data writing and reading, involving the field of information storage, in which a data writing method is applied to a storage system composed of multiple OSD, to obtain the set of the target data and the redundant strategy corresponding to the set, and to select one or one required by the CRUSH algorithm for the selection of the set. More than one OSD; each OSD includes multiple object storage modules; the object storage module required from one or more OSD is selected; the target data is processed according to the redundancy policy, and the processing results are obtained; the processing results are distributed to the corresponding object storage module for writing operation. By adjusting the multiple object storage modules set in the OSD, this method can dynamically add and delete the hard disk of each OSD management. In addition, the internal OSD is self repairing through the redundant strategy to avoid the cluster repair problem caused by the single hard disk failure.

【技术实现步骤摘要】
数据写入及读取方法
本公开涉及信息存储
,尤其是涉及一种数据写入及读取方法。
技术介绍
CEPH分布式文件系统是当前最流行的分布式存储软件之一,可以运行于普通商用硬件上,构建一个具有自修复功能的存储集群。CEPH的核心组件是OSD(ObjectStorageDevice,对象存储组件),OSD管理一块独立的硬盘,并提供对象存储(Object-basedStorage)的读写访问接口。CEPH集群由很多独立的OSD构成,OSD数量可以动态的增删。CEPH客户端通过CRUSH算法将Object分发到不同OSD上进行存储。CRUSH是一种伪随机分布算法,该算法先将Object通过HASH归属到一个PG(PlacementGroup,归置组)中,然后计算该PG存放的OSD,由此,归属于同一个PG的Object存放到该PG对应的目标OSD中。CEPH集群通常支持多副本策略,以三副本为例,每个PG通常会对应三个OSD,包含一个主OSD,两个从OSD。三个OSD上存放完全相同的数据。另外,同一个OSD会存放多个PG的数据,不同的PG经过CRUSH计算,可能会归属于同一个目标OSD。CRUSH算法是一种多级选择算法,可以实现不同的故障域保护。首先,CRUSH算法根据物理基础设施的具体情况,构造一棵CRUSH树,举例说明:一个机房包含多个机架,一个机架包含若干服务器,一个服务器包含多个硬盘,那么,CRUSH树的根节点就是机房,机房的子节点是机架,机架的子节点是服务器,服务器的子节点是硬盘,一个硬盘对应一个OSD,如图1所示。CRUSH算法需要在这棵树中选择三个OSD,用于存放一个PG。机架、服务器、硬盘就构成了三级,CRUSH算法需要进行三次选择,选择的策略可配置,以实现不同的故障域保护:如果故障域设为机架,则三个OSD需要分布在不同机架上,由此可以容许一个机架故障:如果故障域设为服务器,则三个OSD需要分布在不同的服务器上,由此可以容许一个服务器宕机。以故障域设为服务器为例,CRUSH算法过程如下:1)第一次:选择一个机架;2)第二次:在第一步选中的机架中选择三台服务器;3)第三次:在第二步选中的三台服务器中,分别选择一个OSD。CRUSH算法结束,获得了三个OSD,且分属于不同的服务器。CEPH通过CRUSHRULE来定义上述选择策略。现代服务器集成规模越来越大,通常可以容纳25盘位甚至更多,而单个硬盘的容量越来越大,IOPS(Input/OutputOperationsPerSecond,每秒进行读写操作的次数)等性能却很低。因此将一个硬盘作为一个OSD,有两个问题:1)过多的OSD,对CPU、内存等资源的消耗过大;2)单个OSD性能低,当硬盘故障时,通常需要跨服务器进行数据恢复,需要损耗大量的横向网络带宽,且会影响客户的正常业务IO。为了实现一个OSD管理多个硬盘,最直接的实现方案是将多个硬盘组建RAID(RedundantArraysofIndependentDisks,磁盘阵列)。RAID技术将多个硬盘统一管理,为上层软件提供一个抽象的磁盘设备,同时通过不同的冗余配置,如RAID1,RAID5,RAID6等,可以实现不同级别的故障保护,RAID6可以允许同时损坏两块硬盘;另外,RAID通过条带技术,将I/O分发到不同的硬盘上,可以实现更高的IOPS。RAID实现方式有两种:1)采用软件实现,如linux内核里的md;2)采用特定硬件RAID卡实现。上述基于RAID的方案可以有效减少单服务器的OSD个数,减少CPU和内存等资源的损耗;同时,单个硬盘损坏不会马上引起集群间的横向恢复,而是先通过RAID内部进行恢复,单硬盘损坏的代价更低;CEPH对RAID不感知,无需做任何修改,可直接部署。然而,现有的RAID技术与CEPH的软件定义宗旨(采用通用标准硬件,不需要额外的设置;弹性配置,可以任意的增删硬盘、节点;通过软件定义不同的存储形态)存在相悖的地方,比如:RAID组管理固定的几个硬盘(通常在10个以内),在配置完RAID之后,不能灵活地更改其管理硬盘的数量。
技术实现思路
鉴于此,本公开的目的在于提供一种数据写入及读取方法,通过对设置于OSD中的多个对象存储模块的调整,可以灵活动态地增删每个OSD管理的硬盘,此外,OSD内部通过冗余策略进行自修复,避免单硬盘故障引发集群修复问题。第一方面,本公开实施例提供了一种数据写入方法,该方法应用于由多个OSD组成的存储系统中,所述方法包括:获取目标数据所属的归置组以及所述归置组所对应的冗余策略;通过CRUSH算法为所述归置组选择所需的一个或一个以上OSD;每个所述OSD中包括多个对象存储模块;从所述一个或一个以上OSD中选择所述归置组所需的对象存储模块;将所述目标数据根据所述冗余策略进行处理,得到处理结果;将所述处理结果分发到对应的所述对象存储模块中进行写操作。结合第一方面,本公开实施例提供了第一方面的第一种可能的实施方式,其中,在所述将所述目标数据根据所述冗余策略进行处理,得到处理结果之前,还包括:在所述目标数据所属的OSD的日志信息中写入所述所需的对象存储模块的识别标识。结合第一方面,本公开实施例提供了第一方面的第二种可能的实施方式,其中,在所述将所述处理结果分发到对应的所述对象存储模块中进行写操作之后,还包括:判断所述处理结果是否全部完成所述写操作;如果是,结束所述目标数据的写入事务;如果否,启动所述目标数据的写入事务回滚操作。结合第一方面,本公开实施例提供了第一方面的第三种可能的实施方式,其中,所述冗余策略包括:EC冗余、副本冗余、条带冗余中至少一项。结合第一方面,本公开实施例提供了第一方面的第四种可能的实施方式,其中,每个所述OSD或者每个所述对象存储模块包括:键值数据库;所述键值数据库用于存放其所属的OSD的元数据;所述键值数据库还用于存放其所属的OSD的日志信息。第二方面,本公开实施例提供一种数据读取方法,该方法应用于由多个OSD组成的存储系统中,所述方法包括:获取目标数据所属的归置组以及所述归置组所对应的冗余策略;通过CRUSH算法为所述归置组选择所需的一个或一个以上OSD;每个所述OSD中包括多个对象存储模块;从所述一个或一个以上OSD中选择所述归置组所需的对象存储模块;从所述所需的对象存储模块中读取需要的数据。结合第二方面,本公开实施例提供了第二方面的第一种可能的实施方式,其中,在所述从所述所需的对象存储模块中读取需要的数据之后,还包括:如果读取数据失败,则根据所述冗余策略进行数据恢复。第三方面,本公开实施例提供一种数据写入装置,该装置应用于由多个OSD组成的存储系统中,所述装置包括:信息获取模块,用于获取目标数据所属的归置组以及所述归置组所对应的冗余策略;第一选择模块,用于通过CRUSH算法为所述归置组选择所需的一个或一个以上OSD;每个所述OSD中包括多个对象存储模块;第二选择模块,用于从所述一个或一个以上OSD中选择所述归置组所需的对象存储模块;数据处理模块,用于将所述目标数据根据所述冗余策略进行处理,得到处理结果;数据写入模块,用于将所述处理结果分发到对应的所述对象存储模块中进行写操作。结合第三方面,本公开实施例提供了第三方面本文档来自技高网
...
数据写入及读取方法

【技术保护点】
一种数据写入方法,其特征在于,该方法应用于由多个OSD组成的存储系统中,所述方法包括:获取目标数据所属的归置组以及所述归置组所对应的冗余策略;通过CRUSH算法为所述归置组选择所需的一个或一个以上OSD;每个所述OSD中包括多个对象存储模块;从所述一个或一个以上OSD中选择所述归置组所需的对象存储模块;将所述目标数据根据所述冗余策略进行处理,得到处理结果;将所述处理结果分发到对应的所述对象存储模块中进行写操作。

【技术特征摘要】
1.一种数据写入方法,其特征在于,该方法应用于由多个OSD组成的存储系统中,所述方法包括:获取目标数据所属的归置组以及所述归置组所对应的冗余策略;通过CRUSH算法为所述归置组选择所需的一个或一个以上OSD;每个所述OSD中包括多个对象存储模块;从所述一个或一个以上OSD中选择所述归置组所需的对象存储模块;将所述目标数据根据所述冗余策略进行处理,得到处理结果;将所述处理结果分发到对应的所述对象存储模块中进行写操作。2.根据权利要求1所述的数据写入方法,其特征在于,在所述将所述目标数据根据所述冗余策略进行处理,得到处理结果之前,还包括:在所述目标数据所属的OSD的日志信息中写入所述所需的对象存储模块的识别标识。3.根据权利要求1所述的数据写入方法,其特征在于,在所述将所述处理结果分发到对应的所述对象存储模块中进行写操作之后,还包括:判断所述处理结果是否全部完成所述写操作;如果是,结束所述目标数据的写入事务;如果否,启动所述目标数据的写入事务回滚操作。4.根据权利要求1-3任一项所述的数据写入方法,其特征在于,所述冗余策略包括:EC冗余、副本冗余、条带冗余中至少一项。5.根据权利要求1所述的数据写入方法,其特征在于,每个所述OSD或者每个所述对象存储模块包括:键值数据库;所述键值数据库用于存放其所属的OSD的元数据;所述键值数据库还用于存放其所属的OSD的日志信息。6.一种数据读取方法,其特征在于,该方法应用于由多个OSD组成的存储系统中,所述方法包括:获取目标数据所属的归置组以及所述归置组所对应的冗余策略;通过CRUSH算法为所述归置组选择所需的一个或一个以上OSD;每个所述OSD中包括多个对象存储模块;从所述一个或一个以上OSD中选择所述归置组所需的对象存储模块;从所述所需的对象存储模块中读取需要的数据。7.根据权利要求6所述的数据读取方法,其特征在于,在所述从所述所需的对象存储模块中读取需要的数据之后,还包括:如果读取数据失败,则根据所述冗余策略进行数据恢复。8.一种数据写...

【专利技术属性】
技术研发人员:陈钊
申请(专利权)人:新华三技术有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1