CN108052655B - 数据写入及读取方法 - Google Patents
数据写入及读取方法 Download PDFInfo
- Publication number
- CN108052655B CN108052655B CN201711453634.2A CN201711453634A CN108052655B CN 108052655 B CN108052655 B CN 108052655B CN 201711453634 A CN201711453634 A CN 201711453634A CN 108052655 B CN108052655 B CN 108052655B
- Authority
- CN
- China
- Prior art keywords
- osd
- object storage
- data
- redundancy
- module
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1847—File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
-
- 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/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据写入及读取方法,涉及信息存储技术领域,其中,数据写入方法应用于由多个OSD组成的存储系统中,获取目标数据所属的归置组以及所述归置组所对应的冗余策略;通过CRUSH算法为归置组选择所需的一个或一个以上OSD;每个OSD中包括多个对象存储模块;从一个或一个以上OSD中选择归置组所需的对象存储模块;将目标数据根据冗余策略进行处理,得到处理结果;将处理结果分发到对应的对象存储模块中进行写操作。该方法通过对设置于OSD中的多个对象存储模块的调整,可以灵活动态地增删每个OSD管理的硬盘,此外,OSD内部通过冗余策略进行自修复,避免单硬盘故障引发集群修复问题。
Description
技术领域
本公开涉及信息存储技术领域,尤其是涉及一种数据写入及读取方法。
背景技术
CEPH分布式文件系统是当前最流行的分布式存储软件之一,可以运行于普通商用硬件上,构建一个具有自修复功能的存储集群。CEPH的核心组件是OSD(Object StorageDevice,对象存储组件),OSD管理一块独立的硬盘,并提供对象存储(Object-basedStorage)的读写访问接口。CEPH集群由很多独立的OSD构成,OSD数量可以动态的增删。CEPH客户端通过CRUSH算法将Object分发到不同OSD上进行存储。
CRUSH是一种伪随机分布算法,该算法先将Object通过HASH归属到一个PG(Placement Group,归置组)中,然后计算该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通过CRUSH RULE来定义上述选择策略。
现代服务器集成规模越来越大,通常可以容纳25盘位甚至更多,而单个硬盘的容量越来越大,IOPS(Input/Output Operations Per Second,每秒进行读写操作的次数)等性能却很低。因此将一个硬盘作为一个OSD,有两个问题:
1)过多的OSD,对CPU、内存等资源的消耗过大;
2)单个OSD性能低,当硬盘故障时,通常需要跨服务器进行数据恢复,需要损耗大量的横向网络带宽,且会影响客户的正常业务IO。
为了实现一个OSD管理多个硬盘,最直接的实现方案是将多个硬盘组建RAID(Redundant Arrays of Independent Disks,磁盘阵列)。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的日志信息中写入所述所需的对象存储模块的识别标识。
结合第三方面,本公开实施例提供了第三方面的第二种可能的实施方式,其中,还包括:
判断模块,用于判断所述处理结果是否全部完成所述写操作;如果是,结束所述目标数据的写入事务;如果否,启动所述目标数据的写入事务回滚操作。
结合第三方面,本公开实施例提供了第三方面的第三种可能的实施方式,其中,所述冗余策略包括:EC冗余、副本冗余、条带冗余中至少一项。
结合第三方面,本公开实施例提供了第三方面的第四种可能的实施方式,其中,每个所述OSD或者每个所述对象存储模块包括:键值数据库;
所述键值数据库用于存放其所属的OSD的元数据;
所述键值数据库还用于存放其所属的OSD的日志信息。
第四方面,本公开实施例还提供一种数据读取装置,该装置应用于由多个OSD组成的存储系统中,所述装置包括:
信息获取模块,用于获取目标数据所属的归置组以及所述归置组所对应的冗余策略;
第一选择模块,用于通过CRUSH算法为所述归置组选择所需的一个或一个以上OSD;每个所述OSD中包括多个对象存储模块;
第二选择模块,用于从所述一个或一个以上OSD中选择所述归置组所需的对象存储模块;
数据读取模块,用于从所述所需的对象存储模块中读取需要的数据。
结合第四方面,本公开实施例提供了第四方面的第一种可能的实施方式,其中,还包括:
数据恢复模块,在判断读取数据失败后,根据所述冗余策略进行数据恢复。
本公开实施例带来了以下有益效果:本公开实施例所提供的数据写入方法,应用于由多个OSD组成的存储系统中,首先获取目标数据所属的归置组以及所述归置组所对应的冗余策略;通过CRUSH算法为所述归置组选择所需的一个或一个以上OSD;其中,每个所述OSD中包括多个对象存储模块;从上述一个或一个以上OSD中选择所述归置组所需的对象存储模块;将所述目标数据根据所述冗余策略进行处理,得到处理结果;将所述处理结果分发到对应的所述对象存储模块中进行写操作。该数据写入方法所应用的系统中,包括多个OSD,每个OSD中又包括多个对象存储模块,在数据写入时,可以先选择数据所属归置组所对应的OSD,然后再从OSD中选择所需的对象存储器,每个对象存储模块对应一个硬盘,因此,这种通过两次选择进行数据写入的方法可以灵活动态地增删和调整每个OSD管理的硬盘,此外,OSD内部通过冗余策略进行自修复,避免单硬盘故障引发集群修复问题。
本公开的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本公开而了解。本公开的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中的CRUSH树的结构示意图;
图2为本公开实施例一所提供的一种数据写入方法的流程图;
图3为本公开实施例一所提供的一种存储系统的结构示意图;
图4为本公开实施例一所提供的一种OSD架构图;
图5为本公开实施例一所提供的一种策略简图;
图6为本公开实施例一所提供的另一种策略简图;
图7为本公开实施例二所提供的一种数据读取方法的流程图;
图8为本公开实施例三所提供的一种数据写入装置的示意图;
图9为本公开实施例四所提供的一种数据读取装置的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合附图对本公开的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
目前现有的多硬盘管理方法中,通过RAID技术可以管理固定的几个硬盘,但在配置完RAID之后,不能灵活地更改其管理的硬盘数量。
基于此,本公开实施例提供的一种数据写入及读取方法,通过对设置于OSD中的多个对象存储模块的调整,可以灵活动态地增删每个OSD管理的硬盘,此外,OSD内部通过冗余策略进行自修复,避免单硬盘故障引发集群修复问题。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种数据写入方法进行详细介绍。
实施例一:
本公开实施例提供了一种数据写入方法,该方法应用于由多个OSD组成的存储系统中,参见图2所示,该方法包括以下步骤:
S101:获取目标数据所属的归置组以及归置组所对应的冗余策略。
S102:通过CRUSH算法为归置组选择所需的一个或一个以上OSD;每个OSD中包括多个对象存储模块。
S103:从一个或一个以上OSD中选择归置组所需的对象存储模块。
S104:将目标数据根据冗余策略进行处理,得到处理结果。
S105:将处理结果分发到对应的对象存储模块中进行写操作。
其中,目标数据为待写入的数据,冗余策略包括:EC冗余、副本冗余、条带冗余中至少一项。在将目标数据根据冗余策略进行处理,得到处理结果之前,还包括:在目标数据所属的OSD的日志信息中写入所需的对象存储模块的识别标识。在将处理结果分发到对应的对象存储器中进行写操作之后,还包括:判断处理结果是否全部完成写操作;如果是,结束目标数据的写入事务;如果否,启动目标数据的写入事务回滚操作。
具体的,目标数据通过外部的CRUSH算法分发到目标OSD后,首先创建该目标数据的写入事务;然后获取该目标数据所属的PG,并获取该PG对应的冗余策略;为该PG调用CRUSH算法,选择所需的ObjectStore;具体的,首先从服务器中选择目标数据所需的一个或一个以上OSD,然后再从上述一个或一个以上OSD中选择所需的ObjectStore。而每个ObjectStore对应于一个硬盘,因此,这种数据写入方法可以实现OSD对多个硬盘的管理,通过设置于OSD内的ObjectStore,灵活筛选所需的硬盘。
在另一种实施方式中,在该目标数据所属的Journal中写入指定的ObjectStore,即写入ObjectStore的识别标识,用于进行区分。此外,还可以将该目标数据根据PG的冗余策略进行处理:如切片,EC计算等;将该目标数据的分片分发到各自的ObjectStore进行写操作;所有分片完成后,正常结束该数据的写入事务,否则启动数据写入事务回滚或Replay操作。
图3为本公开实施例所提供的一种存储系统。在本公开实施例所提供数据写入方法所应用的存储系统中,OSD架构如图4所示:
在一个OSD内构建多个ObjectStore实例,每个硬盘构造一个ObjectStore,由此,一个OSD可以管理多个硬盘。
存放在该OSD上的PG,最终存放在一个或一个以上ObjectStore里,PG存放的ObjectStore是OSD内所有ObjectStore的一个子集。PG选择其存放ObjectStore的过程是对CRUSH算法的扩展,即在CRUSH原有机制中选择完OSD后,继续在OSD内选择ObjectStore。
存放在该OSD上的不同PG,其选择具体存放的ObjectStore过程是独立的,即不同PG可能选择不同的一组ObjectStore存放;不同的PG可以选择不同的冗余配置:包括但不限于EC冗余、副本冗余、条带冗余等,以及其具体的分片个数也可以不同。
以EC(Erasure Code,纠删码,一种数据分片和冗余技术,多适用于分布式系统)冗余为例,PG内的Object通过EC冗余的方式划分成多个分片,存放在这些ObjectStore里,比如一个PG存放在6个ObjectStore里,该PG的EC策略是4+2,那么一个Object将切分至少4个分片,每4个分片通过EC计算得到2个校验分片,由此得到的6个分片,分别存放到6个ObjectStore里。
需要说明的是,本公开实施例并不仅限于上述EC冗余策略,还可以采用其它的方式来进行数据恢复。
以上描述的处理仅在OSD内部进行,对OSD外部而言不感知。因此,外部功能逻辑仍保持CEPH原有的机制不变,Object的存取IO,被发送到目的OSD,并可以独立配置外部的冗余保护策略。本公开方案仅在IO到了OSD内部后,增加额外的处理逻辑,实现进一步的分发,将Object存放在多个ObjectStore上。
本公开实施例所提供的存储系统可以减少服务器OSD个数从而节约CPU和内存资源,OSD内部可以通过EC等冗余策略进行自修复,避免单硬盘故障引发集群修复问题,同时,可以灵活动态地增删和调整每个OSD管理的硬盘,不需要额外的热备盘。
此外,每个OSD还包括:键值数据库(下文称为LevelDB/RocksDB);LevelDB/RocksDB对应一个硬盘,LevelDB/RocksDB用于存放其所属的OSD的元数据。
在另一种实施方式中,每个ObjectStore包括:LevelDB/RocksDB;ObjectStore中的LevelDB/RocksDB用于存放其所属的OSD的元数据。
具体的,Object除了存放的数据之外,另外包括一些必须的元数据,如Object的属性,BlueStore(一种ObjectStore的具体实现方式)还需要保存Object的数据结构。CEPH通常用LevelDB/RocksDB来保存元数据。CEPH原有机制中,由于一个OSD对应一个ObjectStore,因此,也只需要一个LevelDB/RocksDB,所有Object都存在在该ObjectStore中,所有元数据都存放在该LevelDB/RocksDB中。
本公开实施例在OSD中创建了多个ObjectStore,一个Object根据其PG的具体冗余配置,可能会被切分成多个分片存放在多个ObjectStore上,因此,需要制定该Object元数据的存放方法。本公开实施例所提供的存储系统至少可以支持两种策略:
策略一:参见图5所示,OSD内所有ObjectStore共享一个LevelDB/RocksDB来存放元数据,所有Object无论最终如何分发存放,其元数据总是存放在这一个LevelDB/RocksDB中。该策略需要LevelDB/RocksDB提供足够的IO性能,可以选择SSD来部署。
策略二:参见图6所示,每个ObjectStore分别部署一个LevelDB/RocksDB,Object在进行OSD内部CRUSH计算归属ObjectStore的时候,额外计算一个ObjectStore,该Object的元数据存放在这个额外ObjectStore对应的LevelDB/RocksDB里。
键值数据库还用于存放其所属的OSD的日志信息(下文称Journal)。
除了元数据以外,ObjectStore为了保持数据一致性,还有一个很重要的Journal需要存盘。Journal的存放策略同上述元数据存放策略,不再赘述。
本公开实施例所提供数据写入方法,充分利用了CEPH原有CRUSH算法的优势,在OSD内部通过CRUSH算法选择多个ObjectStore完成冗余,当硬盘增删或者出现损坏退出时,基于CRUSH机制,更新CRUSH MAP后,自动将分片迁移到其他ObjectStore上,不需要额外的热备盘,支持动态增删硬盘后的负载自动重均衡。
此外,本公开实施例中的EC等冗余方案在ObjectStore上层实现,基于ObjectStore原有的Journal一致性策略,如果出现条带刷盘过程中断电,可以利用Journal进行重新下刷,不存在Write Hole问题。
本公开实施例中的数据写入方法所应用的存储系统,利用OSD管理多个硬盘,可以获得以下有益效果:
1.解决单服务器过多硬盘,所有硬盘创建各自OSD造成的CPU、内存资源不足问题。
2.解决由于单块硬盘损坏,需要集群内其他服务器进行数据恢复,从而造成的集群横向网络压力问题。
3.支持硬盘的动态增删和故障退出,完全软件定义,相比RAID机制具有更强的灵活性和弹性。
4.可以不依赖于特定硬件,有效解决RAID机制存在的Write Hole问题。
实施例二:
本公开实施例提供一种数据读取方法,该方法应用于由多个OSD组成的存储系统中,参见图7所示,该方法包括以下步骤:
S201:获取目标数据所属的归置组以及归置组所对应的冗余策略。
S202:通过CRUSH算法为归置组选择所需的一个或一个以上OSD;每个OSD中包括多个对象存储模块。
S203:从一个或一个以上OSD中选择归置组所需的对象存储模块。
S204:从所需的对象存储模块中读取需要的数据。
在从所需的对象存储器中读取需要的数据之后,还包括:如果读取数据失败,则根据冗余策略进行数据恢复。
在具体实现的时候,获取该目标数据所属的PG,并获取该PG对应的冗余策略;为该PG调用CRUSH算法,选择所需的ObjectStore;具体的,首先从服务器中选择目标数据所需的一个或一个以上OSD,然后再从上述一个或一个以上OSD中选择所需的ObjectStore。而每个ObjectStore对应于一个硬盘,因此,这种数据写入方法可以实现OSD对多个硬盘的管理,通过设置于OSD内的ObjectStore,灵活筛选所需的硬盘。
从计算得到的ObjectStore读取需要的数据;如果步骤S203因为硬盘损坏无法完成,可以根据冗余策略,进行数据恢复,其过程和具体冗余策略相关;最后完成目标数据的读取过程。
实施例三:
本公开实施例提供一种数据写入装置,该装置应用于由多个OSD组成的存储系统中,参见图8所示,该装置包括:信息获取模块31、第一选择模块32、第二选择模块33、数据处理模块34、数据写入模块35。
其中,信息获取模块31,用于获取目标数据所属的归置组以及归置组所对应的冗余策略;第一选择模块32,用于通过CRUSH算法为归置组选择所需的一个或一个以上OSD;每个OSD中包括多个对象存储模块;第二选择模块33,用于从一个或一个以上OSD中选择归置组所需的对象存储模块;数据处理模块34,用于将目标数据根据冗余策略进行处理,得到处理结果;数据写入模块35,用于将处理结果分发到对应的对象存储模块中进行写操作。
此外,在另一种实施方式中,该装置中还包括:信息写入模块、判断模块。
具体的,信息写入模块,用于在目标数据所属的OSD的日志信息中写入所需的对象存储模块的识别标识;判断模块,用于判断处理结果是否全部完成写操作;如果是,结束目标数据的写入事务;如果否,启动目标数据的写入事务回滚操作。
在本实施例中,冗余策略包括:EC冗余、副本冗余、条带冗余中至少一项。
本公开实施例所提供的数据写入装置所应用的存储系统中,包括多个OSD,每个OSD中包括有多个对象存储模块,而每个OSD或者每个对象存储模块包括:键值数据库;其中,键值数据库用于存放其所属的OSD的元数据,或者存放其所属的OSD的日志信息。
本公开实施例所提供的数据写入装置中,各个模块与前述数据写入方法具有相同的技术特征,因此,同样可以实现上述功能。本装置中各个模块的具体工作过程参见上述方法实施例,在此不再赘述。
实施例四:
本公开实施例还提供一种数据读取装置,该装置应用于由多个OSD组成的存储系统中,参见图9所示,该装置包括:信息获取模块41、第一选择模块42、第二选择模块43、数据读取模块44及数据恢复模块45。
其中,信息获取模块41,用于获取目标数据所属的归置组以及归置组所对应的冗余策略;第一选择模块42,用于通过CRUSH算法为归置组选择所需的一个或一个以上OSD;每个OSD中包括多个对象存储模块;第二选择模块43,用于从一个或一个以上OSD中选择归置组所需的对象存储模块;数据读取模块44,用于从所需的对象存储模块中读取需要的数据;数据恢复模块45,在判断读取数据失败后,根据冗余策略进行数据恢复。
本公开实施例所提供的数据读取装置中,各个模块与前述数据读取方法具有相同的技术特征,因此,同样可以实现上述功能。本装置中各个模块的具体工作过程参见上述方法实施例,在此不再赘述。
另外,在本公开实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本公开中的具体含义。
在本公开的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本公开和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本公开的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
本公开实施例所提供的进行IO写入方法或者IO读取方法的计算机程序产品,包括存储了处理器可执行的非易失的程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,主机CPU,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种数据写入方法,其特征在于,该方法应用于由多个OSD组成的存储系统中,所述方法包括:
获取目标数据所属的归置组以及所述归置组所对应的冗余策略;
通过CRUSH算法为所述归置组选择所需的一个或一个以上OSD;每个所述OSD中包括多个对象存储模块;
从所述一个或一个以上OSD中选择所述归置组所需的对象存储模块;其中,所述OSD或者所述对象存储模块均包括键值数据库,所述键值数据库用于存放其所属的OSD的元数据和日志信息;
在所述目标数据所属的日志信息中写入所需的对象存储模块的识别标识;
将所述目标数据根据所述冗余策略进行处理,得到处理结果;
将所述处理结果分发到对应的所述对象存储模块中进行写操作。
2.根据权利要求1所述的数据写入方法,其特征在于,在所述将所述处理结果分发到对应的所述对象存储模块中进行写操作之后,还包括:
判断所述处理结果是否全部完成所述写操作;
如果是,结束所述目标数据的写入事务;
如果否,启动所述目标数据的写入事务回滚操作。
3.根据权利要求1或2所述的数据写入方法,其特征在于,所述冗余策略包括:EC冗余、副本冗余、条带冗余中至少一项。
4.一种数据读取方法,其特征在于,该方法应用于由多个OSD组成的存储系统中,所述方法包括:
获取目标数据所属的归置组以及所述归置组所对应的冗余策略;
通过CRUSH算法为所述归置组选择所需的一个或一个以上OSD;每个所述OSD中包括多个对象存储模块;
从所述一个或一个以上OSD中选择所述归置组所需的对象存储模块;其中,所述OSD或者所述对象存储模块均包括键值数据库,所述键值数据库用于存放其所属的OSD的元数据和日志信息,所述目标数据所属的日志信息中预先写入所需的对象存储模块的识别标识;
从所述所需的对象存储模块中读取需要的数据。
5.根据权利要求4所述的数据读取方法,其特征在于,在所述从所述所需的对象存储模块中读取需要的数据之后,还包括:
如果读取数据失败,则根据所述冗余策略进行数据恢复。
6.一种数据写入装置,其特征在于,该装置应用于由多个OSD组成的存储系统中,所述装置包括:
信息获取模块,用于获取目标数据所属的归置组以及所述归置组所对应的冗余策略;
第一选择模块,用于通过CRUSH算法为所述归置组选择所需的一个或一个以上OSD;每个所述OSD中包括多个对象存储模块;
第二选择模块,用于从所述一个或一个以上OSD中选择所述归置组所需的对象存储模块;其中,所述OSD或者所述对象存储模块均包括键值数据库,所述键值数据库用于存放其所属的OSD的元数据和日志信息;
信息写入模块,用于在所述目标数据所属的日志信息中写入所需的对象存储模块的识别标识;
数据处理模块,用于将所述目标数据根据所述冗余策略进行处理,得到处理结果;
数据写入模块,用于将所述处理结果分发到对应的所述对象存储模块中进行写操作。
7.根据权利要求6所述的数据写入装置,其特征在于,还包括:
判断模块,用于判断所述处理结果是否全部完成所述写操作;如果是,结束所述目标数据的写入事务;如果否,启动所述目标数据的写入事务回滚操作。
8.根据权利要求6所述的数据写入装置,其特征在于,所述冗余策略包括:EC冗余、副本冗余、条带冗余中至少一项。
9.一种数据读取装置,其特征在于,该装置应用于由多个OSD组成的存储系统中,所述装置包括:
信息获取模块,用于获取目标数据所属的归置组以及所述归置组所对应的冗余策略;
第一选择模块,用于通过CRUSH算法为所述归置组选择所需的一个或一个以上OSD;每个所述OSD中包括多个对象存储模块;
第二选择模块,用于从所述一个或一个以上OSD中选择所述归置组所需的对象存储模块;其中,所述OSD或者所述对象存储模块均包括键值数据库,所述键值数据库用于存放其所属的OSD的元数据和日志信息,所述目标数据所属的日志信息中预先写入所需的对象存储模块的识别标识;
数据读取模块,用于从所述所需的对象存储模块中读取需要的数据。
10.根据权利要求9所述的数据读取装置,其特征在于,还包括:
数据恢复模块,在判断读取数据失败后,根据所述冗余策略进行数据恢复。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711453634.2A CN108052655B (zh) | 2017-12-28 | 2017-12-28 | 数据写入及读取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711453634.2A CN108052655B (zh) | 2017-12-28 | 2017-12-28 | 数据写入及读取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108052655A CN108052655A (zh) | 2018-05-18 |
CN108052655B true CN108052655B (zh) | 2020-11-10 |
Family
ID=62128447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711453634.2A Active CN108052655B (zh) | 2017-12-28 | 2017-12-28 | 数据写入及读取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108052655B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108958970B (zh) * | 2018-05-29 | 2021-05-07 | 新华三技术有限公司 | 一种数据恢复方法、服务器和计算机可读介质 |
CN109002259B (zh) * | 2018-06-28 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 一种归置组所属硬盘分配方法、系统、装置及存储介质 |
CN108845772B (zh) * | 2018-07-11 | 2021-06-29 | 郑州云海信息技术有限公司 | 一种硬盘故障处理方法、系统、设备及计算机存储介质 |
CN109542622A (zh) * | 2018-11-21 | 2019-03-29 | 新华三技术有限公司 | 一种数据处理方法及装置 |
US10872039B2 (en) * | 2018-12-03 | 2020-12-22 | Micron Technology, Inc. | Managing redundancy contexts in storage devices using eviction and restoration |
CN109697371A (zh) * | 2018-12-12 | 2019-04-30 | 泰康保险集团股份有限公司 | 数据库管理方法、装置、介质及电子设备 |
CN109992204A (zh) * | 2019-03-19 | 2019-07-09 | 新华三技术有限公司成都分公司 | 数据存储方法及装置 |
CN110222014B (zh) * | 2019-06-11 | 2022-03-08 | 苏州浪潮智能科技有限公司 | 分布式文件系统crush map维护方法及相关组件 |
CN110941513B (zh) * | 2019-11-22 | 2022-03-22 | 浪潮电子信息产业股份有限公司 | 一种数据重构方法及相关装置 |
CN111124289B (zh) * | 2019-12-06 | 2022-02-18 | 浪潮电子信息产业股份有限公司 | 一种分布式存储系统归置组成员的选择方法、装置及介质 |
CN110955733A (zh) * | 2020-01-02 | 2020-04-03 | 北京同有飞骥科技股份有限公司 | 分布式系统的数据均衡方法及系统 |
CN112631951B (zh) * | 2020-12-22 | 2023-06-16 | 新华三大数据技术有限公司 | 存储空间的分配方法及装置 |
CN112817535B (zh) * | 2021-02-03 | 2021-11-02 | 柏科数据技术(深圳)股份有限公司 | 一种归置组分配方法、装置以及分布式存储系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102937967A (zh) * | 2012-10-11 | 2013-02-20 | 南京中兴新软件有限责任公司 | 数据冗余实现方法及装置 |
CN103559145A (zh) * | 2013-10-22 | 2014-02-05 | 华为技术有限公司 | 一种数据读取、写入方法和电子设备 |
CN103929500A (zh) * | 2014-05-06 | 2014-07-16 | 刘跃 | 一种分布式存储系统的数据分片方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7177883B2 (en) * | 2004-07-15 | 2007-02-13 | Hitachi, Ltd. | Method and apparatus for hierarchical storage management based on data value and user interest |
CN105187502A (zh) * | 2015-08-07 | 2015-12-23 | 北京思特奇信息技术股份有限公司 | 一种基于分布式弹性块存储的方法和系统 |
-
2017
- 2017-12-28 CN CN201711453634.2A patent/CN108052655B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102937967A (zh) * | 2012-10-11 | 2013-02-20 | 南京中兴新软件有限责任公司 | 数据冗余实现方法及装置 |
CN103559145A (zh) * | 2013-10-22 | 2014-02-05 | 华为技术有限公司 | 一种数据读取、写入方法和电子设备 |
CN103929500A (zh) * | 2014-05-06 | 2014-07-16 | 刘跃 | 一种分布式存储系统的数据分片方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108052655A (zh) | 2018-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108052655B (zh) | 数据写入及读取方法 | |
CN107807794B (zh) | 一种数据存储方法和装置 | |
CN111158587B (zh) | 基于存储池虚拟化管理的分布式存储系统及数据读写方法 | |
US7386758B2 (en) | Method and apparatus for reconstructing data in object-based storage arrays | |
CN103064765B (zh) | 数据恢复方法、装置及集群存储系统 | |
US7093069B2 (en) | Integration of a RAID controller with a disk drive module | |
CN101916173B (zh) | 一种基于raid的数据读写方法及其系统 | |
US8726261B2 (en) | Zero downtime hard disk firmware update | |
US20100306466A1 (en) | Method for improving disk availability and disk array controller | |
CN105009085A (zh) | 信息处理系统、控制程序以及信息处理设备 | |
CN103534688B (zh) | 数据恢复方法、存储设备和存储系统 | |
CN111966540B (zh) | 存储介质的管理方法、装置及可读存储介质 | |
CN107870731B (zh) | 独立盘冗余阵列系统的管理方法和电子设备 | |
CN111124264B (zh) | 用于重建数据的方法、设备和计算机程序产品 | |
US20080091916A1 (en) | Methods for data capacity expansion and data storage systems | |
CN103608784A (zh) | 网络卷创建方法、数据存储方法、存储设备和存储系统 | |
CN103530206B (zh) | 一种数据恢复的方法和设备 | |
CN116204137B (zh) | 基于dpu的分布式存储系统、控制方法、装置及设备 | |
CN113535666A (zh) | 数据写入方法及装置、数据库系统、存储介质 | |
CN109189326B (zh) | 分布式集群的管理方法和装置 | |
CN113391945A (zh) | 用于存储管理的方法、电子设备以及计算机程序产品 | |
CN105068896A (zh) | 基于raid备份的数据处理方法及装置 | |
US11860746B2 (en) | Resilient data storage system with efficient space management | |
US11531621B2 (en) | Selective endpoint isolation for self-healing in a cache and memory coherent system | |
CN111124260B (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 |