【技术实现步骤摘要】
一种数据处理方法及装置
本申请涉及存储
,尤其涉及一种数据处理方法及装置。
技术介绍
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处理完这些更新请求之后再进行相关写数据的操作,严重影响了写数据的性能。
技术实现思路
为克服相关技术中存在的问题,本申请提供了一 ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。