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, ...
【技术保护点】
一种数据写入方法,其特征在于,该方法应用于由多个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.一种数据写...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。