查询数据的方法和装置与流程

文档序号:16528788发布日期:2019-01-05 10:34阅读:176来源:国知局
查询数据的方法和装置与流程

本申请涉及存储领域,并且更具体地,涉及一种查询数据的方法和装置。



背景技术:

快照(snapshot)是某个数据集在某一特定时刻的镜像,也称为即时拷贝,它是这个数据集的一个完整可用的副本。存储网络行业协会(storagenetworkindustryassociation,snia)对快照的定义是:关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点的映像。快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。

现有的快照技术包括全量快照和增量快照两种类型,各自使用了不同的快照技术。其中,全量快照使用镜像分离(splitmirror)快照技术在达到预设的快照时间点之前,首先为源数据卷创建并维护一个完整的镜像卷,每次写入数据时,都会往源数据卷和镜像卷同时写入,会占用大量的存储空间。增量快照可以跟踪数据卷和快照卷的变化,当一个新的增量快照生成之后,旧的快照数据将被刷新。

以上列举的都是针对对象的快照技术,例如块和文件等的快照技术,而目前并没有一种针对对象存储系统的快照技术,例如针对对象的容器—桶的快照技术。此外,对于海量数据存储系统,例如云存储等存储空间足够大的存储系统,没有一种快照技术能够使得不影响存储系统业务性能的同时,使得用户能够只读访问对象存储系统的内容。



技术实现要素:

本申请提供一种查询数据的方法和装置,能够提供一种桶级别的快照方法,实现访问某个快照的所有对象内容,同时不影响业务性能。

第一方面,提供了一种查询数据的方法,包括:生成映射关系,该映射关系用于指示针对第一存储对应的n个操作与n个存储空间之间的一一对应关系,其中,该n个操作在不同时刻发生,该n个存储空间中的第一存储空间用于存储经过基于第一操作的处理后的第一存储对象,该第一操作与该第一存储空间对应,该第一存储空间是该n个存储空间中的任一存储空间;生成操作记录,该操作记录用于记录该n个操作的发生时刻;接收第一查询请求,该第一查询请求用于请求查询该第一存储对象在第一时刻的存储状态;根据该操作记录,从该n个操作中确定该第一时刻之前的第一操作;根据该映射关系,确定与该第一操作对应的存储空间中存储的第一存储对象。

通过本申请实施例提供的技术方案,通过时间片的划分,实现客户端在访问存储对象时,能够通过建立快照的方式只读访问该快照的所有对象内容。建立基于时间片的快照的方法,从第一个快照开始的后面每一个时间点都可以形成一个快照,并且不会带来额外的存储开销,并且打快照的过程完全不影响现有业务和读写性能。

结合第一方面,在第一方面的某些实现方式中,该操作记录被划分为n个时间片,且每个时间片中的操作记录包括该时间片的时间信息。

结合第一方面及上述实现方式,在第一方面的某些实现方式中,该生成操作记录,包括:根据该第一操作的时间片的时间信息和该第一存储对象对应的元数据生成新的元数据。

结合第一方面及上述实现方式,在第一方面的某些实现方式中,该第一存储在第一时间片建立第一快照,当该第一存储接收到客户端发送的针对该第一快照的读请求时,该方法还包括:根据该第一快照的快照名确定该第一时间片;根据该第一时间片确定该元数据和该第一存储对象。

结合第一方面及上述实现方式,在第一方面的某些实现方式中,该第一存储在第一时间片建立第一快照,当该第一存储接收到客户端发送的针对该第一快照的回滚请求时,该方法还包括:根据该回滚请求所在的时间片和该第一时间片确定第一时段;删除该第一时段内的所有该操作记录。

应理解,本申请提供的技术方案适合应用于云存储,因为云存储的存储空间足够大,当云存储的数据很重要时,对于删除和变更不是特别频繁的场景下,能够让整个桶快速回滚到某个快照,同时不影响本身的业务能力。

通过上述技术方案,当客户端进行重大业务改造或者有重要的桶,可以通过快照的方式进行保护,当出现意外时可以进行桶级别的整体回滚,达到数据保护的目的。

第二方面,提供了一种查询数据的装置,包括:生成单元,用于生成映射关系,该映射关系用于指示针对第一存储对应的n个操作与n个存储空间之间的一一对应关系,其中,该n个操作在不同时刻发生,该n个存储空间中的第一存储空间用于存储经过基于第一操作的处理后的第一存储对象,该第一操作与该第一存储空间对应,该第一存储空间是该n个存储空间中的任一存储空间;该生成单元,还用于生成操作记录,该操作记录用于记录该n个操作的发生时刻;接收单元,用于接收第一查询请求,该第一查询请求用于请求查询该第一存储对象在第一时刻的存储状态;确定单元,用于根据该操作记录,从该n个操作中确定该第一时刻之前的第一操作;该确定单元,还用于根据该映射关系,确定与该第一操作对应的存储空间中存储的第一存储对象。

结合第二方面,在第二方面的某些实现方式中,该操作记录被划分为n个时间片,且每个时间片中的操作记录包括该时间片的时间信息。

结合第二方面及上述实现方式,在第二方面的某些实现方式中,该生成单元还用于:根据该第一操作的时间片的时间信息和该第一存储对象对应的元数据生成新的元数据。

结合第二方面及上述实现方式,在第二方面的某些实现方式中,该第一存储在第一时间片建立第一快照,当该第一存储接收到客户端发送的针对该第一快照的读请求时,该确定单元还用于:根据该第一快照的快照名确定该第一时间片;根据该第一时间片确定该元数据和该第一存储对象。

结合第二方面及上述实现方式,在第二方面的某些实现方式中,该第一存储在第一时间片建立第一快照,当该第一存储接收到客户端发送的针对该第一快照的回滚请求时,该确定单元还用于:根据该回滚请求所在的时间片和该第一时间片确定第一时段;删除该第一时段内的所有该操作记录。

第三方面,提供了一种查询数据的装置,该快照处理装置包括处理器和通信接口,处理器用于执行程序。当处理器执行代码时,处理器和通信接口实现上述第一方面或第一方面中任意一项该查询数据的方法。

该处理器中可以集成有存储器,或者该处理装置可以包括处理器。

第四方面,本申请提供了一种计算机可读存储介质。该计算机可读存储介质中存储用于快照处理装置执行的程序代码。该程序代码包括用于执行第一方面或第一方面中任意一种可能的实现方式中的快照处理方法的指令。

第五方面,本申请提供了一种包含指令的计算机程序产品。当该计算机程序产品在快照处理装置上运行时,使得快照处理装置执行第一方面或第一方面中任意一种可能的实现方式中的查询数据的方法。

第六方面,本申请提供了一种芯片,该芯片系统包括处理器和通信接口。处理器用于执行程序。当处理器执行代码时,处理器和通信接口实现第一方面或第一方面中任意一种可能的实现方式中的查询数据的方法。

可选地,该芯片还可以包括存储器。进一步地,存储器和处理器可以集成在一起。

附图说明

图1是应用本申请实施例的对象存储系统和客户端之间数据读写过程的示意图。

图2是本申请实施例提供的一例查询数据的方法流程图。

图3是本申请实施例提供的一例桶的示意图。

图4示出了本申请实施例的查询数据的装置的示意性框图。

图5为本申请另一个实施例的查询数据的装置的示意性结构图。

具体实施方式

下面将结合附图,对本申请中的技术方案进行描述。

图1是对象存储系统和客户端之间数据读写过程的示意图。如图1所示,对象存储系统通常采用数据与元数据分离的方式,对象存储系统100可以包括对象语义接口和服务层、元数据存储系统、数据存储系统。其中,对象语义接口和服务层同时和元数据存储系统、数据存储系统连接。

当客户端和对象存储系统之间有正常业务运行时,例如当对象存储系统执行数据写请求过程时,其基本流程如图1所示,包括:对象语义接口和服务层接收到客户端的写请求,对象语义接口和服务层向数据存储系统下发写数据,并得到数据唯一标识或者数据组织形式,如图1中写1操作;对象语义接口和服务层将获得的数据唯一标识连同其他对象的属性合并成元数据一并写入元数据存储系统,如图1中写2操作,元数据存储系统可以通过对象标识唯一地索引到对象的元数据。

当对象存储系统执行数据读请求过程时,其基本流程如图1所示,包括:对象语义接口和服务层根据对象标识向元数据存储系统索引得到对象元数据,并得到数据唯一标识或者数据组织形式,如图1中读1操作;对象语义接口和服务层将获得的数据唯一标识向数据存储系统进行索引得到数据,如图1中读2操作,并连同元数据的其他属性返回给客户端。

随着存储应用需求的提高,用户需要在线方式进行数据保护,快照就是在线存储设备防范数据丢失的有效方法之一。快照是指关于指定的数据集合的一个完全可用拷贝,即快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。或者可以理解为,快照是一种保护文件系统的数据的技术,用于保护文件系统在某个时间(例如,启动数据备份的时间)所处的状态。具体地实现过程中,快照是指向保存在存储设备中的数据的引用标记或指针。此外,快照能够进行在线数据恢复,当存储设备发生应用故障或者文件破损时可以进行及时的数据恢复,将数据恢复成快照产生时间点的状态;或者,快照可以为存储用户提供另外一个数据访问通道,当元数据进行在线应用处理时,用户可以访问快照数据,还可以利用快照进行测试等工作。

下面简单介绍几种快照技术,按照存储网络行业协会(storagenetworkindustryassociation,snia)对快照的划分,快照包括全量快照和增量快照两种类型,各自使用了不同的快照技术。其中,全量快照又称为全拷贝快照或原样复制,使用镜像分离(splitmirror)快照技术在达到预设的快照时间点之前,首先为源数据卷创建并维护一个完整的镜像卷,每次写入数据时,都会往源数据卷和镜像卷同时写入,这样保证了同一份数据的两个副本分别保存在源数据卷和镜像卷上,并且由两者组成的一个镜像对。在预设快照时间点到达时,镜像对的数据写入操作被停止,镜像卷快速脱离镜像对并转化为快照卷,这样就获得了一份数据快照。快照卷在完成数据快照/数据备份等应用后,将与源数据卷重新进行同步,成为一盒新的镜像卷。

镜像分离快照的好处在于数据隔离性好,使离线访问数据成为可能,并且简化了恢复、复制或存档一块硬盘上的所有数据的过程,最重要的是操作的时间非常短,仅仅是断开镜像卷对所需的时间,通常只有几毫秒,这样小的备份窗口几乎不会对上层应用造成影响。不存在快照卷和源数据卷的相互影响,但这种方式缺乏灵活性,无法在任意时间点为任意的数据卷建立快照。另外,它需要一个或者多个与源数据卷容量相同的镜像卷,占用了大量存储空间,而且写数据时同时写两份,对写入性能影响比较大,在同步镜像时还会降低存储系统的整体性能。

增量快照的特点是可以跟踪数据卷和快照卷的变化。当一个新的增量快照生成之后,旧的快照数据将被刷新。第一个快照和随后创建的每一个增量快照数据上都有时间戳标记,利用时间戳我们能够将快照数据回滚到任意的一个时间点。增量快照技术能够加快后续快照的生成速度,而且仅仅在名义上多消耗了一点空间而已。由此,我们可以提高创建快照的频率,也能让快照保留得更久一点。增量快照可以包括复制写快照(copy-on-write,cow)和重定向写快照(redirect-on-write,row)。

cow首先会为每个源数据都创建一张数据指针表用于保存源数据所有数据的物理指针,在创建快照时,存储系统会拷贝出一份源数据指针表的副本,该副本作为快照数据指针表。cow只有在创建快照时才会建立快照卷,该快照卷只占用了相对少量的存储空间,用于保存快照时间点之后源数据卷中被更新的数据。但是,因为创建快照后的每次写入操作都需要先将源数据中的原始数据拷贝到快照中才能开始写入源数据,所以会降低源数据卷的写性能。很显然,如果对同一源数据做了多次快照之后,写性能将会更加低下,因此cow不适合对象存储单桶海量数据下的写性能要求。

row源数据创建一个快照之后,对源数据的数据进行了更新操作的话,并不会像cow技术直接修改源数据原始数据,而是再开辟一个新的空间用于存放用于更新原始数据的新的数据。row的快照数据指针表保存的是源数据的原始副本,而源数据卷数据指针表保存的则是更新后的副本,这导致在删除快照卷之前需要将快照卷数据指针表指向的数据同步至源数据卷中。而且当创建了多个快照后,会产生一个快照链,使原始数据的访问、快照和源数据的追踪以及快照的删除将变得异常复杂。

目前没有针对整个桶级别的快照,即桶级别的访问某个时间点的办法,对象存储系统的数据复制技术可以实现针对桶级别的复制,但是复制到另外一个桶有一定滞后性,而且没有明确的回滚方法,需要用户自己进行恢复,并且只能按照对象级别回滚。

本申请将提供一种查询数据的方法,同时实现基于时间片的对象存储系统的桶级别的快照方法,提供一种适合对象存储海量数据的特征的实现方法。用户能够只读访问某个快照的所有对象内容,也能够让整个桶快速回滚到某个快照,同时不影响本身的业务性能。

图2是本申请实施例提供的一例查询数据的方法流程图。图3是本申请实施例提供的一例桶的示意图,下面,将结合图2和图3对本申请实施例提供的查询数据的方法进行详细的说明。如图2所示,方法200包括:

s210,生成映射关系,该映射关系用于指示针对第一存储对应的n个操作与n个存储空间之间的一一对应关系,其中,该n个操作在不同时刻发生,该n个存储空间中的第一存储空间用于存储经过基于第一操作的处理后的第一存储对象,该第一操作与该第一存储空间对应,该第一存储空间是该n个存储空间中的任一存储空间。

s220,生成操作记录,该操作记录用于记录该n个操作的发生时刻。

s230,接收第一查询请求,该第一查询请求用于请求查询该第一存储对象在第一时刻的存储状态。

s240,根据该操作记录,从该n个操作中确定该第一时刻之前的第一操作。

s250,根据该映射关系,确定与该第一操作对应的存储空间中存储的第一存储对象。

具体地,以图3为例,图3中最大的矩形框可以看做一个桶,桶可以是存储对象的容器,一个对象必须属于并且只属于一个桶。本申请中,将桶称为“第一存储”或“对象存储系统”。如图3所示,该第一存储可以划分为n个存储空间。即在现有技术的基础上,将该对象存储系统按照时间片进行划分,可以划分为n个存储空间,n为正整数。这里时间片的管理可以通过专门的模块进行维护,应理解,时间片为单调递增,如图3中从时间片1到时间片7的顺序递增。

以一个存储对象1为例,在时间片1所表示的第一存储空间中,存入存储对象1。到了时间片2所表示的第二存储空间,对存储对象1进行重写操作。在s210中所说的映射关系可以理解为存储空间和操作的对应关系,例如,对于存储对象1,第一存储空间对应的操作是新增写入存储对象1,对于第二存储空间,对应的操作是重写存储对象1。这里第二存储空间中重新写入的存储对象1是经过基于重写操作的处理后的第一存储对象,这里的操作记录就是“重写”,即对存储对象1进行变更,但是与现有技术不同的是,本申请的变更只是对存储对象的追加,而不进行实际的覆盖。

同理,对于删除操作,以存储对象2为例,在时间片1所表示的第一存储空间中,存入存储对象2。到了时间片2所表示的第二存储空间,对存储对象2没有任何操作,到了在时间片3所表示的第三存储空间中,对存储对象2进行删除写操作。但是,这里的指示标记了对存储对象2的删除行为,并不进行真正的删除。

当在时间片2所代表的时刻生成了快照a,因为在时间片3针对存储对象2进行了删除操作,则在时间片2之后,就不能访问存储对象2,但是因为该删除行为并不是真正的删除了存储对象2,因此,用户可以通过访问快照a来访问存储对象2。

可选地,该操作记录被划分为n个时间片,且每个时间片中的操作记录包括该时间片的时间信息。根据该第一操作的时间片的时间信息和该第一存储对象对应的元数据生成新的元数据。

当确定某个时间片为快照之后,针对存储对象和桶的所有操作,都不删除或者覆盖原有数据和元数据,而是根据基于时间片的内部版本号生成新的原数据,根据最新的时间片和版本号对桶进行访问。应理解,该访问操作是由客户端发送访问请求等方式来控制打开和关闭,而该对象存储系统不能自主打开。

前面介绍了在对象存储系统中,需要通过元数据和存储对象的映射关系来访问存储对象,在本申请实施例中,因为对对象存储系统增加了时间片的概念,那么为了提高元数据针对时间片的查找和列举,针对对象和桶的所有操作,都可以追加当时操作的时间片信息记录到存储对象元数据当中,同时元数据系统需要增加针对时间片的索引,则在存储对象的访问过程中,可以根据时间片的索引查询存储对象的元数据,再根据存储对象的元数据访问该存储对象。

可选地,该第一存储在第一时间片建立第一快照,当该第一存储接收到客户端发送的针对该第一快照的读请求时,该对象存储系统可以根据该第一快照的快照名确定该第一时间片;根据该第一时间片确定该元数据和该第一存储对象。

当客户端发送访问请求,决定访问某个快照的数据时,对象存储系统先根据快照名找到对应的时间片,再根据该时间片找到对应的元数据和数据进行访问。

在另一种可能的实施方式中,该第一存储在第一时间片建立第一快照,当该第一存储接收到客户端发送的针对该第一快照的回滚请求时,该方法还包括:根据该回滚请求所在的时间片和该第一时间片确定第一时段;删除该第一时段内的所有该操作记录。

当客户端发送访问请求,决定回滚到某个快照的数据时,系统后台根据回滚的时间片和快照的时间片,对两个时间片之间的所有变更进行真正的删除,同时前台访问时忽略次时间段内的所有变更记录。

具体地,以图3的桶为例,在时间片2对应的第二存储空间生成了快照a,当在时间片6对应的第六存储空间生成了快照a的回滚,则,从时间片2到时间片6之间的所有操作都进行删除,即回到时间片2的存储状态。

应理解,本申请提供的技术方案适合应用于云存储,因为云存储的存储空间足够大,当云存储的数据很重要时,对于删除和变更不是特别频繁的场景下,能够让整个桶快速回滚到某个快照,同时不影响本身的业务能力。

通过本申请实施例提供的技术方案,通过时间片的划分,实现客户端在访问存储对象时,能够通过建立快照的方式只读访问该快照的所有对象内容。建立基于时间片的快照的方法,从第一个快照开始的后面每一个时间点都可以形成一个快照,并且不会带来额外的存储开销,并且打快照的过程完全不影响现有业务和读写性能。此外,当客户端进行重大业务改造或者有重要的桶,可以通过快照的方式进行保护,当出现意外时可以进行桶级别的整体回滚,达到数据保护的目的。

以上结合图1至图3对本申请实施例的查询数据的方法做了详细说明。以下,结合图4至图5对本申请实施例的查询数据的装置进行详细说明。

图4示出了本申请实施例的查询数据的装置400的示意性框图,该装置400可以对应上述方法200中描述的对象存储系统,也可以是应用于该对象存储系统的芯片或组件,并且,该装置400中各模块或单元分别用于执行上述方法200中该对象存储系统的所执行的各动作或处理过程,如图4所示,该装置400可以包括:生成单元410、接收单元420和确定单元430。

生成单元410,用于生成映射关系,该映射关系用于指示针对第一存储对应的n个操作与n个存储空间之间的一一对应关系,其中,该n个操作在不同时刻发生,该n个存储空间中的第一存储空间用于存储经过基于第一操作的处理后的第一存储对象,该第一操作与该第一存储空间对应,该第一存储空间是该n个存储空间中的任一存储空间。

该生成单元410,还用于生成操作记录,该操作记录用于记录该n个操作的发生时刻。

接收单元420,用于接收第一查询请求,该第一查询请求用于请求查询该第一存储对象在第一时刻的存储状态。

确定单元430,用于根据该操作记录,从该n个操作中确定该第一时刻之前的第一操作。

该确定单元430,还用于根据该映射关系,确定与该第一操作对应的存储空间中存储的第一存储对象。

可选地,该操作记录被划分为n个时间片,且每个时间片中的操作记录包括该时间片的时间信息。

可选地,该生成单元410还用于:根据该第一操作的时间片的时间信息和该第一存储对象对应的元数据生成新的元数据。

在一种可能的实现方式中,该第一存储在第一时间片建立第一快照,当该第一存储接收到客户端发送的针对该第一快照的读请求时,该确定单元430还用于:根据该第一快照的快照名确定该第一时间片;根据该第一时间片确定该元数据和该第一存储对象。

在另一种可能的实现方式中,该第一存储在第一时间片建立第一快照,当该第一存储接收到客户端发送的针对该第一快照的回滚请求时,该确定单元还用于:根据该回滚请求所在的时间片和该第一时间片确定第一时段;删除该第一时段内的所有该操作记录。

图5为本申请另一个实施例的查询数据的装置的示意性结构图。应理解,图5所示的装置500仅是示例,本申请实施例的查询数据的装置还可以包括其他模块或单元,或者包括与图5中的各个模块的功能相似的模块,或者并非要包括图5中所有模块。

存储器510存储用于实现图2所示的各个模块的功能的程序代码。

处理器520用于执行存储器510中存储的程序代码。

通信接口530用于与存储设备或者存储介质进行通信,读取存储设备或存储介质中的数据,或者向存储设备或存储介质写入数据。

具体地,处理器执行存储器510中存储的程序代码时,处理器520可以调用通信接口530实现图2中查询数据的方法。为了简洁,此处不再赘述。

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

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

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