一种数据处理方法及装置制造方法及图纸

技术编号:27975420 阅读:22 留言:0更新日期:2021-04-06 14:09
本申请提供一种数据处理方法及装置,该方法应用于RBD客户端,该方法包括:在接收到来自用户设备的用于请求在目标RBD块设备中的目标数据对象中写数据的写请求时,若已打开的目标RBD块设备开启了对象位图功能,则根据内存中存储的目标RBD块设备对应的对象位图,判断是否需要更新目标数据对象对应的目标子对象位图;若是,构建相应的更新请求,并将其缓存到目标子对象位图对应的缓存区中;将缓存区中待发送的更新请求合并为一个新的更新请求,并将其发送至存储目标子对象位图的目标OSD;在接收到目标OSD发送的通知消息时,将合并前的更新请求对应的写请求中携带的数据写到对应的数据对象中。本申请可提高写数据的性能。

【技术实现步骤摘要】
一种数据处理方法及装置
本申请涉及存储
,尤其涉及一种数据处理方法及装置。
技术介绍
Ceph(分布式存储系统)是一种性能优异、高可靠性和高扩展性的分布式存储系统。RBD(RADOSBlockDevice)块设备,是Ceph对外提供的三大存储服务组件(块存储、文件存储和对象存储)之一。目前,对于RBD客户端而言,如果待新建的RBD块设备开启了对象位图(object-map)功能,则该RBD客户端会为新建的RBD块设备对应的所有的数据对象生成一个对象位图(可记为rbd_object_map);将该rbd_object_map保存到某个对象存储设备(ObjectStorageDevice,OSD)上。在这里,该rbd_object_map用于记录该RBD块设备对应的每个数据对象的状态,每个数据对象的状态可以使用两个比特位进行表示,例如,00表示数据对象不存在,01表示数据对象存在等。当Ceph中的多个用户设备均需要在该RBD块设备中写数据时,这些用户设备均会向该RBD客户端发送相应的写请求,该RBD客户端接收到这些写请求后,若判断出均需要更新该rbd_object_map,则该RBD客户端会生成相关更新该rbd_object_map的更新请求,并发送给对应的OSD,这样一来,该OSD上就堆积了较多的更新请求,该RBD客户端需要等待该OSD处理完这些更新请求之后再进行相关写数据的操作,严重影响了写数据的性能。
技术实现思路
为克服相关技术中存在的问题,本申请提供了一种数据处理方法及装置。根据本申请实施例的第一方面,提供一种数据处理方法,所述方法应用于RBD客户端,所述方法包括:在接收到来自用户设备的用于请求在目标RBD块设备中的目标数据对象中写数据的写请求时,若已打开的所述目标RBD块设备开启了对象位图功能,则根据内存中存储的所述目标RBD块设备对应的对象位图,判断是否需要更新所述目标数据对象对应的目标子对象位图,其中,所述对象位图的内容包括多个子对象位图的内容,所有的子对象位图的内容包括所述目标RBD块设备中所有的数据对象的状态,不同的子对象位图对应的多个数据对象不同,且所有的子对象位图对应的OSD不完全相同;在判断结果为是时,构建用于更新所述目标子对象位图中所述目标数据对象的状态的更新请求,并将所述更新请求缓存到所述目标子对象位图对应的缓存区中;将所述缓存区中待发送的更新请求合并为一个新的更新请求,并将所述新的更新请求发送至存储所述目标子对象位图的目标OSD;在接收到所述目标OSD发送的用于通知已更新完所述新的更新请求所指示的需要更新的状态的通知消息时,将合并前的更新请求对应的写请求中携带的数据写到对应的数据对象中。根据本申请实施例的第二方面,提供一种数据处理装置,所述装置应用于RBD客户端,所述装置包括:判断模块,用于在接收到来自用户设备的用于请求在目标RBD块设备中的目标数据对象中写数据的写请求时,若已打开的所述目标RBD块设备开启了对象位图功能,则根据内存中存储的所述目标RBD块设备对应的对象位图,判断是否需要更新所述目标数据对象对应的目标子对象位图,其中,所述对象位图的内容包括多个子对象位图的内容,所有的子对象位图的内容包括所述目标RBD块设备中所有的数据对象的状态,不同的子对象位图对应的多个数据对象不同,且所有的子对象位图对应的OSD不完全相同;构建模块,用于在所述判断模块的判断结果为是时,构建用于更新所述目标子对象位图中所述目标数据对象的状态的更新请求,并将所述更新请求缓存到所述目标子对象位图对应的缓存区中;发送模块,用于将所述缓存区中待发送的更新请求合并为一个新的更新请求,并将所述新的更新请求发送至存储所述目标子对象位图的目标OSD;写数据模块,用于在接收到所述目标OSD发送的用于通知已更新完所述新的更新请求所指示的需要更新的状态的通知消息时,将合并前的更新请求对应的写请求中携带的数据写到对应的数据对象中。本申请的实施例提供的技术方案可以包括以下有益效果:在本申请实施例中,RBD客户端在接收到用户设备的用于请求在目标RBD块设备中的目标数据对象中写数据的写请求时,在已打开的目标RBD块设备开启了对象位图功能的情形下,如果需要更新目标数据对象对应的目标子对象位图,RBD客户端会构建相应的更新请求,先缓存到目标子对象位图对应的缓存区中;之后,RBD客户端会将缓存区中待发送的更新请求进行合并,合并为一个新的更新请求,再将新的更新请求发送给存储目标子对象位图的目标OSD,由该目标OSD根据新的更新请求更新相应数据对象的状态;最后,RBD客户端在接收到该目标OSD发送的用于通知已更新完新的更新请求所指示的需要更新的状态的通知消息时,将合并前的更新请求对应的写请求中携带的数据写到对应的数据对象中。在上述数据处理流程中,开启了对象位图功能的RBD块设备对应的对象位图被拆分成多个子对象位图,每个子对象位图用来记录RBD块设备中的一部分数据对象的状态,并且,这些子对象位图被存储到的OSD还不完全相同,这样一来,RBD客户端在接收到来自不同的用户设备的需要在RBD块设备中的某个数据对象中写数据的写请求时,可以将相关更新请求分散到不同的OSD上进行处理,并且,还可以对需要更新同一子对象位图的更新请求进行合并处理,以减少在相应的OSD侧的排队处理时间,大大提高了写数据的性能。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。附图说明此处的附图被并入说明书中并构成本申请的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。图1为本申请实施例提供的一种数据处理方法的流程示意图;图2为本申请实施例提供的ceph中用户设备与RBD客户端进行写数据的交互示意图;图3为本申请实施例提供的一种数据处理装置的结构示意图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。接下来对本申请实施例进行详细说明。本申请实施例提供了一种数据处理方法,该方法应用于RBD客户端,如图1所示,该方法可以包括如下步骤:S11、在接收到来自用户设备的用于请求在目标RBD块设备中的目标数据对象中写数据的写请求时,若已打开的目标RBD块设备开启了对象位本文档来自技高网...

【技术保护点】
1.一种数据处理方法,其特征在于,所述方法应用于RBD客户端,所述方法包括:/n在接收到来自用户设备的用于请求在目标RBD块设备中的目标数据对象中写数据的写请求时,若已打开的所述目标RBD块设备开启了对象位图功能,则根据内存中存储的所述目标RBD块设备对应的对象位图,判断是否需要更新所述目标数据对象对应的目标子对象位图,其中,所述对象位图的内容包括多个子对象位图的内容,所有的子对象位图的内容包括所述目标RBD块设备中所有的数据对象的状态,不同的子对象位图对应的多个数据对象不同,且所有的子对象位图对应的对象存储设备OSD不完全相同;/n在判断结果为是时,构建用于更新所述目标子对象位图中所述目标数据对象的状态的更新请求,并将所述更新请求缓存到所述目标子对象位图对应的缓存区中;/n将所述缓存区中待发送的更新请求合并为一个新的更新请求,并将所述新的更新请求发送至存储所述目标子对象位图的目标OSD;/n在接收到所述目标OSD发送的用于通知已更新完所述新的更新请求所指示的需要更新的状态的通知消息时,将合并前的更新请求对应的写请求中携带的数据写到对应的数据对象中。/n

【技术特征摘要】
1.一种数据处理方法,其特征在于,所述方法应用于RBD客户端,所述方法包括:
在接收到来自用户设备的用于请求在目标RBD块设备中的目标数据对象中写数据的写请求时,若已打开的所述目标RBD块设备开启了对象位图功能,则根据内存中存储的所述目标RBD块设备对应的对象位图,判断是否需要更新所述目标数据对象对应的目标子对象位图,其中,所述对象位图的内容包括多个子对象位图的内容,所有的子对象位图的内容包括所述目标RBD块设备中所有的数据对象的状态,不同的子对象位图对应的多个数据对象不同,且所有的子对象位图对应的对象存储设备OSD不完全相同;
在判断结果为是时,构建用于更新所述目标子对象位图中所述目标数据对象的状态的更新请求,并将所述更新请求缓存到所述目标子对象位图对应的缓存区中;
将所述缓存区中待发送的更新请求合并为一个新的更新请求,并将所述新的更新请求发送至存储所述目标子对象位图的目标OSD;
在接收到所述目标OSD发送的用于通知已更新完所述新的更新请求所指示的需要更新的状态的通知消息时,将合并前的更新请求对应的写请求中携带的数据写到对应的数据对象中。


2.根据权利要求1所述的方法,其特征在于,通过以下方式判断是否需要更新所述目标数据对象对应的子对象位图:
判断所述对象位图中所述目标数据对象对应的状态是否为目标状态,其中,所述目标状态为数据对象不存在或者为数据对象存在且未创建克隆数据对象;
在判断结果为是时,确定需要更新所述目标数据对象对应的子对象位图;
在判断结果为否时,确定不需要更新所述目标数据对象对应的子对象位图。


3.根据权利要求1所述的方法,其特征在于,在打开所述目标RBD块设备之前,所述方法还包括:
根据管理员输入的用于新建所述目标RBD块设备的新建指令,新建所述目标RBD块设备;
若所述目标RBD块设备开启了对象位图功能,则按照预设的分组规则,对所述目标RBD块设备中的各个数据对象进行分组;
针对每组数据对象,为该组数据对象生成一个子对象位图的标识,构建用于创建该标识对应的子对象位图的创建指令,并向确定出的该标识对应的OSD发送该创建指令,以使该标识对应的OSD根据该创建指令创建该标识对应的子对象位图;
若接收到所述管理员输入的打开所述目标RBD块设备的打开指令、且所述目标RBD块设备开启了对象位图功能,则获取所述目标RBD块设备对应的所有子对象位图的标识;
针对每个子对象位图的标识,构建用于读取该标识对应的子对象位图的内容的读取指令,并向确定出的该标识对应的OSD发送该读取指令;
在接收到所有子对象位图的标识对应的OSD发送的对应的子对象位图的内容时,对接收到的内容进行合并,其中,每个子对象位图的内容为对应的OSD在接收到所述RBD客户端发送的读取指令后发送的;
将合并后的内容作为所述目标RBD块设备对应的对象位图的内容,并保存到内存中。


4.根据权利要求3所述的方法,其特征在于,按照预设的分组规则,对所述目标RBD块设备中的各个数据对象进行分组,具体包括:
按照连续设定数量个数据对象为一组的分组规则,对所述目标RBD块设备中的各个数据对象进行分组。


5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在接收到所述目标OSD发送的用于通知已更新完所述新的更新请求所指示的需要更新的状态的通知消息后,对所述对象位图中所述需要更新的状态对应的数据对象的状态进行更新。


6.一种数据处理装置...

【专利技术属性】
技术研发人员:张晓磊
申请(专利权)人:新华三大数据技术有限公司
类型:发明
国别省市:河南;41

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

1