一种分布式对象存储系统写缓存的方法和设备与流程

文档序号:22427787发布日期:2020-10-02 10:03阅读:227来源:国知局
一种分布式对象存储系统写缓存的方法和设备与流程

本领域涉及计算机领域,并且更具体地涉及一种分布式对象存储系统写缓存的方法和设备。



背景技术:

随着互联网的发展,互联网数据量(非结构化数据)越来越大,分布式对象存储应运而生。这种新兴的存储方式,适用于图片、视频等非结构化数据的存储。它同时又具有块存储高速直接访问磁盘的特点以及文件存储分布式共享的特点,因此一经推出就得到广泛的发展与应用。

分布式对象存储中缓存技术,将可能频繁访问的数据保存在内存等高速设备中,可以显著提高数据的读写性能。由于dram掉线易失,并不能保证写入到内存中的数据全部成功下刷到硬盘中,目前对象存储缺少基于内存的写缓存实现方案。

目前在分布式对象存储中通过借助ssd或者nvmessd等高速存储介质设备,作为数据存储的高速缓冲池,整体提高存储系统的读写性能。回写缓存一种缓存技术,在回写缓存技术中,一旦数据写到缓存中,就会发送写请求已完成信号,而把数据写到非易失性存储介质上的实际操作将会延迟进行,当数据写入高速缓存池时,就向客户端提示写完成。

这种通过高速缓存池的写缓存实现方案,仍然存在提升写性能的空间。首先相对于内存而言,nvmessd等磁盘设备仍然需要较大io延迟,其次该方案需要先将文件写入到高速磁盘,再将高速磁盘的数据下刷到普通硬盘,存在写放大的问题,该方案是缓存目标是整个rgw(对象存储网关)对象而言,对于大文件则不启用写缓存,未能提高大文件的写性能。



技术实现要素:

有鉴于此,本发明实施例的目的在于提出一种分布式对象存储系统写缓存的方法和设备,通过使用本发明的方法,能够实现内存端的对象储存写缓存,提高了分布式对象的写性能,解决了掉电后写缓存数据丢失问题。

基于上述目的,本发明的实施例的一个方面提供了一种分布式对象存储系统写缓存的方法,包括以下步骤:

响应于接收到客户端发出对象上传的请求,将对象切分成头对象和若干尾对象;

将头对象写入存储池中,并将写操作日志以及每一个尾对象写入到aep(apachepass是intel推出的一种新型的非易失optancememory设备)中;

将每一个尾对象下刷到存储池中,在写操作日志中更新下刷完成情况,同时删除aep中完成下刷的尾对象;

响应于所有尾对象下刷完成,删除写操作日志并结束本次写操作。

根据本发明的一个实施例,尾对象包含条带编号。

根据本发明的一个实施例,还包括:在将头对象写入存储池中,并将写操作日志以及每一个尾对象写入到aep中之后通知客户端完成对象的上传。

根据本发明的一个实施例于,还包括:

响应于服务器断电重启,遍历aep中所有写操作日志,查找断电重启前未完成的操作,将未完成下刷操作的尾对象下刷到存储池中,同时删除对应的日志。

根据本发明的一个实施例,aep为直接访问模式。

本发明的实施例的另一个方面,还提供了一种分布式对象存储系统写缓存的设备,设备包括:

切分模块,切分模块配置为响应于接收到客户端发出对象上传的请求,将对象切分成头对象和若干尾对象;

写入模块,写入模块配置为将头对象写入存储池中,并将写操作日志以及每一个尾对象写入到aep中;

下刷模块,下刷模块配置为将每一个尾对象下刷到存储池中,在写操作日志中更新下刷完成情况,同时删除aep中完成下刷的尾对象;

删除模块,删除模块配置为响应于所有尾对象下刷完成,删除写操作日志并结束本次写操作。

根据本发明的一个实施例,尾对象包含条带编号。

根据本发明的一个实施例,还包括通知模块,通知模块配置为在将头对象写入存储池中,并将写操作日志以及每一个尾对象写入到aep中之后通知客户端完成对象的上传。

根据本发明的一个实施例,还包括重启模块,重启模块配置为响应于服务器断电重启,遍历aep中所有写操作日志,查找断电重启前未完成的操作,将未完成下刷操作的尾对象下刷到存储池中,同时删除对应的日志。

根据本发明的一个实施例,aep为直接访问模式。

本发明具有以下有益技术效果:本发明实施例提供的分布式对象存储系统写缓存的方法,通过响应于接收到客户端发出对象上传的请求,将对象切分成头对象和若干尾对象;将头对象写入存储池中,并将写操作日志以及每一个尾对象写入到aep中;将每一个尾对象下刷到存储池中,在写操作日志中更新下刷完成情况,同时删除aep中完成下刷的尾对象;响应于所有尾对象下刷完成,删除写操作日志,完成本次写操作的技术方案,能够实现内存端的对象储存写缓存,提高了分布式对象的写性能,解决了掉电后写缓存数据丢失问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。

图1为根据本发明一个实施例的分布式对象存储系统写缓存的方法的示意性流程图;

图2为根据本发明一个实施例的分布式对象存储系统写缓存的设备的示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。

基于上述目的,本发明的实施例的第一个方面,提出了一种分布式对象存储系统写缓存的方法的一个实施例。图1示出的是该方法的示意性流程图。

如图1中所示,该方法可以包括以下步骤:

s1响应于接收到客户端发出对象上传的请求,将对象切分成头对象和若干尾对象,以rados(分布式对象存储)对象为缓存单位,从而实现对大文件的写缓存,在对象上传过程中,服务端将rgw(对象存储网关)切分为一个头对象和若干个尾rados对象分开上传;

s2将头对象写入存储池中,并将写操作日志以及每一个尾对象写入到aep中;

s3将每一个尾对象下刷到存储池中,在写操作日志中更新下刷完成情况,同时删除aep中完成下刷的尾对象,将每个rgw对象的切分信息以及尾rados对象下刷完成情况作为日志持久化到aep中,同时开始将尾rados对象写入aep中,当rgw所对应的rados对象没有全部下刷到存储池时,访问rgw对象,需要从内存中读写;

s4响应于所有尾对象下刷完成,删除写操作日志并结束本次写操作,服务端继续下刷rados对象到存储池中,每将一个rados持久化到硬盘,更新log中的本次操作的rados对象下刷完成情况,同时删除aep中的rados对象,当本次操作所有rados对象下刷完成,删除本次操作日志,服务端完成本次写操作。

本发明提出的技术方案,通过aep掉线非易失的特性,将通过高速nvme的缓存方案修改为基于内存的写缓存方法,实现内存端的对象储存写缓存。该方案将4m大小的rados对象作为缓存基本单位,通过log记录对象上传顺序以及rgw对象所包含的条带,将log持久性到aep中,当log写完成后便向客户端返回写成功,通过log日志负责服务器掉电后数据恢复,从而一方面提高了分布式对象的写性能,一方面解决了掉电后写缓存数据丢失问题。

通过本发明的技术方案,能够实现内存端的对象储存写缓存,提高了分布式对象的写性能,解决了掉电后写缓存数据丢失问题。

在本发明的一个优选实施例中,尾对象包含条带编号。

在本发明的一个优选实施例中,还包括:在将头对象写入存储池中,并将写操作日志以及每一个尾对象写入到aep中之后通知客户端完成对象的上传。在对象上传过程中,服务端将rgw(对象存储网关)切分为一个头对象和若干个尾rados对象后,首先将头对象写入存储池,然后将尾对象和本次操作相关log写入到aep中,完成这些操作便向客户端反馈写成功。

在本发明的一个优选实施例中于,还包括:

响应于服务器断电重启,遍历aep中所有写操作日志,查找断电重启前未完成的操作,将未完成下刷操作的尾对象下刷到存储池中,同时删除对应的日志。当服务器断电重启后,遍历aep中所有写操作日志,查找断电前未完成的操作,将对应的rados对象下刷到存储池,同时删除对应的日志,当aep上所有日志删除完成,数据恢复完成。

在本发明的一个优选实施例中,aep为直接访问模式。aep包含memory(内存)模式和appdirect(直接访问)模式,本专利使用直接访问模式,在该模式下aep具有非易失性,通过pmdk工具保证写入aep数据的事务性和一致性。

通过本发明的技术方案,能够实现内存端的对象储存写缓存,提高了分布式对象的写性能,解决了掉电后写缓存数据丢失问题。

需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,上述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中存储介质可为磁碟、光盘、只读存储器(read-onlymemory,rom)或随机存取存储器(randomaccessmemory,ram)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。

此外,根据本发明实施例公开的方法还可以被实现为由cpu执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被cpu执行时,执行本发明实施例公开的方法中限定的上述功能。

基于上述目的,本发明的实施例的第二个方面,提出了一种分布式对象存储系统写缓存的设备,如图2所示,设备200包括:

切分模块,切分模块配置为响应于接收到客户端发出对象上传的请求,将对象切分成头对象和若干尾对象;

写入模块,写入模块配置为将头对象写入存储池中,并将写操作日志以及每一个尾对象写入到aep中;

下刷模块,下刷模块配置为将每一个尾对象下刷到存储池中,在写操作日志中更新下刷完成情况,同时删除aep中完成下刷的尾对象;

删除模块,删除模块配置为响应于所有尾对象下刷完成,删除写操作日志并结束本次写操作。

在本发明的一个优选实施例中,尾对象包含条带编号。

在本发明的一个优选实施例中,还包括通知模块,通知模块配置为在将头对象写入存储池中,并将写操作日志以及每一个尾对象写入到aep中之后通知客户端完成对象的上传。

在本发明的一个优选实施例中,还包括重启模块,重启模块配置为响应于服务器断电重启,遍历aep中所有写操作日志,查找断电重启前未完成的操作,将未完成下刷操作的尾对象下刷到存储池中,同时删除对应的日志。

在本发明的一个优选实施例中,aep为直接访问模式。

需要特别指出的是,上述系统的实施例采用了上述方法的实施例来具体说明各模块的工作过程,本领域技术人员能够很容易想到,将这些模块应用到上述方法的其他实施例中。

此外,上述方法步骤以及系统单元或模块也可以利用控制器以及用于存储使得控制器实现上述步骤或单元或模块功能的计算机程序的计算机可读存储介质实现。

本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。

上述实施例,特别是任何“优选”实施例是实现的可能示例,并且仅为了清楚地理解本发明的原理而提出。可以在不脱离本文所描述的技术的精神和原理的情况下对上述实施例进行许多变化和修改。所有修改旨在被包括在本公开的范围内并且由所附权利要求保护。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1