掌桥专利:专业的专利平台
掌桥专利
首页

一种对象存储使用块设备作为数据存储的方法

文献发布时间:2023-06-19 18:37:28


一种对象存储使用块设备作为数据存储的方法

技术领域

本发明属于分布式存储领域,尤其是涉及一种对象存储使用块设备作为数据存储的方法。

背景技术

对象存储大多由协议层和数据引擎层和元数据服务构成,其中协议层负责S3/SWIFT或者私有对象协议的实现,往往呈现为无状态应用,数据引擎层则负责实际数据的持久化及冗余恢复等功能。目前多数的协议层和数据引擎层之间采用kv接口或文件系统接口对接,以当前流行的开源对象存储为例,ceph的rgw通过kv接口访问数据引擎rados,minio对象存储则直接使用本地文件系统作为数据引擎。虽然使用kv或者文件协议对接会使得方案更加通用,但是在某些特定场景下,例如已有资源池中,块存储本身已经通过RAID或三副本机制实现了可靠性和高性能,在不增加额外存储资源的前提下,通过部署一个简单的对象协议网关,使用已有的块设备和元数据服务,从而快速具备高性能对象存储能力不失为一种更加容易让人接受的解决办法。

发明内容

有鉴于此,本发明旨在提出一种对象存储使用块设备作为数据存储的方法,以至少解决背景技术中的至少一个问题。

为达到上述目的,本发明的技术方案是这样实现的:

一种对象存储使用块设备作为数据存储的方法,当收到处理请求后,首先利用协议网关进行基础处理,然后判断是否具有写请求;

如果有写请求则判断是否有可用卷,如果没有则先创建卷,然后转换为卷地址后写入,更新元数据记录后返回客户端;

如果没有写请求则从元数据查询位置,转换为卷地址后读取数据内容后,返回客户端。

进一步的,对象存储启动时候,从配置文件读取后端数据存储类型,如果类型是块设备,则ping块管理接口是否正常,确保可以正常调用。

进一步的,当写IO到达时,判断是否有可用块用于写入,如果没有,则调用块设备管理接口创建块,创建成功后调用open接口,将其置于打开状态,如果有可用块可用于写入,则直接写入。

进一步的,每一个block进行编号,写入时候从0开始并以此向后写入,写入成功之后更新当前卷的写入位置,当一个写IO到来时,从请求中获取到size信息,通过size计算出需要的4K个数,且对最后一个数据块的余位置0对齐,对齐之后,读取当前卷的写入位置,并以此写入位置为offset,将对齐后的buffer写入到卷中,写入成功之后,更新当前卷的写入位置,同时将原来的写入offset作为对象在这个块的offset返回给协议层,协议层将其持久化到元数据数据库中。

进一步的,当读请求到达时,首先从元数据服务中获取到offset和length,根据相同算法,在访问块设备之前,将其转化为对齐之后的offset和block个数,将相关的block读出,读出之后根据length大小,在内存buffer中将用于补位的超过length的数据丢弃,然后将结果返回给客户端,完成读取操作。

进一步的,本方案公开了一种电子设备,包括处理器以及与处理器通信连接,且用于存储所述处理器可执行指令的存储器,所述处理器用于执行一种对象存储使用块设备作为数据存储的方法。

进一步的,本方案公开了一种服务器,包括至少一个处理器,以及与所述处理器通信连接的存储器,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,以使所述至少一个处理器执行如一种对象存储使用块设备作为数据存储的方法。

进一步的,本方案公开了一种计算机可读取存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现一种对象存储使用块设备作为数据存储的方法。

相对于现有技术,本发明所述的一种对象存储使用块设备作为数据存储的方法具有以下有益效果:

(1)本发明所述的一种对象存储使用块设备作为数据存储的方法,移除硬盘上的文件系统层,对象协议网关直接对接裸设备,去除了文件系统层的性能衰减;

(2)本发明所述的一种对象存储使用块设备作为数据存储的方法,块存储是数据中心的基础设施,直接使用块存储,不需要额外增加服务器部署数据节点,节省资源;

(3)本发明所述的一种对象存储使用块设备作为数据存储的方法,数据可靠性由块设备保证,协议网关作为无状态应用,维护简单。

附图说明

构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明实施例所述的一种对象存储使用块设备作为数据存储的方法示意图。

具体实施方式

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

下面将参考附图并结合实施例来详细说明本发明。

在本方案中,使用kv存储作为数据存储的对象存储系统中,一个putobject流程首先会创建一个kv对象,随后将数据内容写入到此KV对象当中,写入成功后在元数据服务中更新位置信息。当getobject请求到来时候,先从元数据当中获取到该对象对应的位置,然后从kv存储中将该对象读出并返回给客户端。

在支持块设备作为数据存储时,增加一个后端存储类型字段type,来区别处理KV存储和块存储类型的后端存储,根据配置文件来指定协议层选择哪种存储类型。对于KV存储,数据读写流程保持不变,对于块存储类型,数据处理上主要有如下不同:

1.一块盘上会有多个对象存储数据,所以对于单个对象来说,它会存放在一个“共享卷”上,写入返回时候,不仅要记录存放在哪个卷上,还要记录这个对象在卷的偏移位置,同样,读取该对象时候,根据卷ID和偏移位置将内容读出。

2.原本对象被删除时候,会把对象对应的数据kv对象也删除掉,但是使用块设备作为后端时,当对象被删除时,不会直接删掉数据,而是在元数据当中将其置为deleted,同时记录其所在卷的实际使用量变化。后台进程会定期分析卷的使用量,当达到阈值时候,对多个卷进行过合并操作,合并完成之后,将旧的卷整体删除。

具体流程如下:

1.对象存储启动时候,从配置文件读取后端数据存储类型,如果类型是块设备,则ping块管理接口是否正常,确保可以正常调用。

2.当写IO到达时,判断是否有可用块用于写入,如果没有,则调用块设备管理接口创建块,创建成功后调用open接口,将其置于打开状态。如果有可用块可用于写入,则直接写入。

3.我们把卷看成连续的地址空间组成的一个存储空间,并且以4K为粒度,对每一个block进行编号,写入时候从0开始并以此向后写入,写入成功之后更新当前卷的写入位置(可以记录在卷元数据中或者卷的特定块里面)。因此当一个写IO到来时,从请求中获取到size信息,通过size计算出需要的4K个数(使用size%4K,如果没有余数,则个数为size/4K,如果有余数,则个数为size/4K+1),且对最后一个数据块的余位置0对齐,对齐之后,读取当前卷的写入位置,并以此写入位置为offset,将对齐后的buffer写入到卷中,写入成功之后,更新当前卷的写入位置。同时,将原来的写入offset作为对象在这个块的offset返回给协议层,协议层将其持久化到元数据数据库中。

4.当读请求到达时,首先从元数据服务中获取到offset和length,根据相同算法,在访问块设备之前,将其转化为对齐之后的offset和block个数,将相关的block读出,读出之后根据length大小,在内存buffer中将用于补位的超过length的数据丢弃。然后将结果返回给客户端,完成读取操作。

除了本方案,协议层对接数据引擎主要有如下方式及各自的优缺点:

1.协议层对接kv接口。

优点:实现简单,一个对象直接对应一个或多个kv,对象删除时候可以直接删除相应的kv。

缺点:kv层需要实现故障恢复和可靠性的复杂逻辑,且需要额外的物理资源。

2.协议层对接文件接口。

优点:文件系统比较常见,可以直接使用,文件协议语义全,对接方便。

缺点:文件协议层会增加额外的性能损耗。

本方案的亮点在于利用已有高可靠块存储的同时,直接使用块协议对接,消除了中间层的性能损耗。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本申请所提供的几个实施例中,应该理解到,所揭露的方法和系统,可以通过其它的方式实现。例如,以上所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。上述单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

技术分类

06120115637593