CN110309100A - 一种快照对象生成方法和装置 - Google Patents
一种快照对象生成方法和装置 Download PDFInfo
- Publication number
- CN110309100A CN110309100A CN201810241083.1A CN201810241083A CN110309100A CN 110309100 A CN110309100 A CN 110309100A CN 201810241083 A CN201810241083 A CN 201810241083A CN 110309100 A CN110309100 A CN 110309100A
- Authority
- CN
- China
- Prior art keywords
- snapshot
- version number
- number information
- request
- write request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/128—Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种快照对象生成方法、相关装置和系统,该方法包括:存储设备获取用户设备针对数据存储块集合的快照请求;存储设备识别快照请求中的版本号信息创建与快照请求对应的快照;存储设备获取用户设备针对第一数据存储块的第一写请求,第一写请求中携带第一数据对象;若所述第一数据存储块中存储有第二数据对象,存储设备根据第二数据对象的版本号信息将第一数据存储块中存储的第二数据对象记录为针对快照的快照对象,并将第一数据对象写入第一数据存储块中。可见,本申请生成快照对象的过程中无需对数据对象进行拷贝,仅仅是将数据对象记录为快照对象即可,显著提高了存储系统在快照对象生成过程中的写入速度,提高了用户体验。
Description
技术领域
本申请涉及数据处理领域,特别是涉及一种快照对象生成方法和装置。
背景技术
快照(Snapshot)可以是存储系统关于指定数据集合的一个完全可用拷贝,该拷贝包括该数据集合在某个时间点(例如快照创建的时间点)的映像。快照可以是其所表示数据集合的一个副本,也可以是该数据集合的一个复制品。
第一次写时复制(Copy On First Write,CoFW)属于一种传统的快照技术,在CoFW中,在针对保存在某一存储位置的数据a创建快照后,如果有数据b需要写入到该存储位置,需要生成数据a的快照对象后才能写入数据b,即首先需要将数据a读取出来,写到所创建快照对应的快照空间中作为数据a的快照对象,然后再将数据b写入到该存储位置中。
可见传统方式中,写入新数据时有些情况下需要等待旧数据通过读出、写入以生成快照对象才能完成,导致系统在此过程中读写效率低下,降低用户体验。
发明内容
为了解决上述技术问题,本申请提供了一种快照对象生成方法、相关装置和系统,以实现显著提高存储系统在快照对象生成过程中的写入速度,提高了用户体验。
本申请实施例公开了如下技术方案:
本申请第一方面提供了一种快照对象生成方法,所述方法包括:
存储设备获取用户设备针对数据存储块集合的快照请求,所述数据存储块集合中至少包括第一数据存储块;
所述存储设备识别所述快照请求中的版本号信息创建与所述快照请求对应的快照;
所述存储设备获取所述用户设备针对所述第一数据存储块的第一写请求,所述第一写请求中携带第一数据对象;
若所述第一数据存储块中存储有第二数据对象,所述存储设备根据所述第二数据对象的版本号信息将所述第二数据对象记录为针对所述快照的快照对象,并将所述第一数据对象写入所述第一数据存储块中;
其中,所述存储设备从所述用户设备获取的快照请求和写请求具有所述用户设备通过存储网关模块分配的版本号信息,所述存储网关模块是对接收到的写请求依次分配版本号信息的,所分配的版本号信息依据预设规则递增;
其中,所述快照请求被所述存储网关模块识别为一种写请求,根据所述快照请求所创建快照的版本号信息与所述快照请求的版本号信息相同,所述写请求中所携带数据对象的版本号信息与所述写请求的版本号信息相同。
本申请第二方面提供了一种快照对象生成装置,所述装置包括:第一获取模块、创建模块、第二获取模块、记录模块和写入模块;
所述第一获取模块,用于获取用户设备针对数据存储块集合的快照请求,所述数据存储块集合中至少包括第一数据存储块;
所述创建模块,用于识别所述快照请求中的版本号信息创建与所述快照请求对应的快照;
所述第二获取模块,用于获取所述用户设备针对所述第一数据存储块的第一写请求,所述第一写请求中携带第一数据对象;
所述记录模块,用于若所述第一数据存储块中存储有第二数据对象,根据第二数据对象的版本号信息将所述第一数据存储块中存储的所述第二数据对象记录为针对所述快照的快照对象;
所述写入模块,用于将所述第一数据对象写入所述第一数据存储块中;
其中,所述存储设备从所述用户设备获取的快照请求和写请求具有所述用户设备通过存储网关模块分配的版本号信息,所述存储网关模块是对接收到的写请求依次分配版本号信息的,所分配的版本号信息依据预设规则递增;
其中,所述快照请求被所述存储网关模块识别为一种写请求,根据所述快照请求所创建快照的版本号信息与所述快照请求的版本号信息相同,所述写请求中所携带数据对象的版本号信息与所述写请求的版本号信息相同。
本申请第三方面提供了一种快照对象生成设备,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行第一方面中任一项所述的快照对象生成方法。
本申请第四方面提供了一种基于存储网关的快照版本确定方法,所述方法包括:
存储网关模块对接收到的写请求依次分配版本号信息,所分配的版本号信息依据预设规则递增;其中,所述存储网关将接收到的快照请求识别为一种写请求,根据所述快照请求所创建快照的版本号信息与所述快照请求的版本号信息相同,所述写请求中所携带数据对象的版本号信息与所述写请求的版本号信息相同;
所述存储网关模块根据版本号信息从小到大的顺序向存储设备上传分配版本号信息的快照请求和写请求。
本申请第五方面提供了一种基于存储网关的快照版本确定装置,所述装置包括:分配模块和第一上传模块;
所述分配模块,用于对接收到的写请求依次分配版本号信息,所分配的版本号信息依据预设规则递增;其中,所述存储网关将接收到的快照请求识别为一种写请求,根据所述快照请求所创建快照的版本号信息与所述快照请求的版本号信息相同,所述写请求中所携带数据对象的版本号信息与所述写请求的版本号信息相同;
所述第一上传模块,用于根据版本号信息从小到大的顺序向存储设备上传分配版本号信息的快照请求和写请求。
本申请第六方面提供了一种基于存储网关的快照版本确定设备,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行第四方面中任一项所述的基于存储网关的快照版本确定方法。
本申请第七方面提供了一种快照对象生成系统,所述系统包括存储设备以及用户设备;其中,所述用户设备包括存储网关模块;
所述处理设备,用于获取用户设备针对数据存储块集合的快照请求,所述数据存储块集合中至少包括第一数据存储块;识别所述快照请求中的版本号信息创建与所述快照请求对应的快照;获取所述用户设备针对所述第一数据存储块的第一写请求,所述第一写请求中携带第一数据对象;若所述第一数据存储块中存储有第二数据对象,根据所述第二数据对象的版本号信息将所述第一数据存储块中存储的所述第二数据对象记录为针对所述快照的快照对象,并将所述第一数据对象写入所述第一数据存储块中;其中,所述存储设备从所述用户设备获取的快照请求和写请求具有所述用户设备通过存储网关模块分配的版本号信息,所述存储网关模块是对接收到的写请求依次分配版本号信息的,所分配的版本号信息依据预设规则递增;其中,所述快照请求被所述存储网关模块识别为一种写请求,根据所述快照请求所创建快照的版本号信息与所述快照请求的版本号信息相同,所述写请求中所携带数据对象的版本号信息与所述写请求的版本号信息相同。
所述终端设备,用于对接收到的写请求依次分配版本号信息,所分配的版本号信息依据预设规则递增;根据版本号信息从小到大的顺序向存储设备上传分配版本号信息的快照请求和写请求。
本申请第八方面提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行第一方面中任一项所述的快照对象生成方法或第四方面中任一项所述的基于存储网关的快照版本确定方法。
本申请第九方面提供了一种包括指令的计算机程序产品,当其在计算机上运行时,使得所述计算机执行第一方面中任一项所述的快照对象生成方法或第四方面中任一项所述的基于存储网关的快照版本确定方法。
由上述技术方案可以看出,存储设备从用户设备获取的快照请求和写请求具有用户设备通过存储网关模块分配的版本号信息,其中存储网关模块是对接收到的写请求依次分配版本号信息的、所分配的版本号信息是依据预设规则递增的、且存储网关模块对接收到的快照请求识别为一种写请求,故存储设备所获取针对数据存储块集合的快照请求的版本号信息能够体现所创建快照与写请求中数据对象间的时序关系,由此存储设备能够通过该快照请求中的版本号信息创建对应快照。若获取针对数据存储块集合中第一数据存储块的第一写请求,且需要因此针对第一数据存储块中存储的第二数据对象创建针对该快照的快照对象时,由于第二数据对象的版本号信息能够用于标识第二数据对象,故存储设备仅需根据该第二数据对象的版本号信息将第二数据对象记录为针对该快照的快照对象即可将第一写请求中的第一数据对象写入第一数据存储块中,可见生成快照对象的过程中无需对数据对象进行拷贝,仅仅是将数据对象记录为快照对象即可,生成快照对象的过程相对于传统方式中需要将旧数据读出、写入来说大大简化,显著提高了存储系统在快照对象生成过程中的写入速度,提高了用户体验。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1a为本申请实施例提供的一种快照对象生成系统的架构示意图;
图1b为本申请实施例提供的一种树形存储结构示意图
图2为本申请实施例提供的一种快照生成方法的方法流程图;
图3为本申请实施例提供的一种示例性应用场景示意图;
图4为本申请实施例提供的一种示例性应用场景示意图;
图5为本申请实施例提供的一种示例性应用场景示意图;
图6为本申请实施例提供的一种示例性应用场景示意图;
图7为本申请实施例提供的一种示例性应用场景示意图;
图8为本申请实施例提供的一种快照对象生成系统的架构示意图;
图9为本申请实施例提供的一种快照版本确定方法的方法流程图;
图10为本申请实施例提供的一种写请求队列并行上传写请求示意图;
图11为本申请实施例提供的一种写请求队列上传写请求和快照请求示意图;
图12a为本申请实施例提供的一种快照对象生成装置的结构示意图;
图12b为本申请实施例提供的一种快照对象生成装置的结构示意图;
图12c为本申请实施例提供的一种快照对象生成装置的结构示意图;
图12d为本申请实施例提供的一种快照对象生成装置的结构示意图;
图12e为本申请实施例提供的一种快照对象生成装置的结构示意图;
图12f为本申请实施例提供的一种快照对象生成装置的结构示意图;
图13a为本申请实施例提供的一种基于存储网关的快照版本确定装置的结构示意图;
图13b为本申请实施例提供的一种基于存储网关的快照版本确定装置的结构示意图;
图13c为本申请实施例提供的一种基于存储网关的快照版本确定装置的结构示意图;
图14为本申请实施例提供的一种服务器结构示意图;
图15为本申请实施例提供的一种快照对象生成设备的结构示意图
图16为本申请实施例提供的一种快照对象生成系统的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
经发明人研究发现,传统的快照技术,例如CoFW,在针对保存在某一存储位置的数据a创建快照后,如果有数据b需要写入到该存储位置,需要生成数据a的快照对象后才能写入数据b,即首先需要将数据a读取出来,写到所创建快照对应的快照空间中作为数据a的快照对象,然后再将数据b写入到该存储位置中。可见传统方式中,写入新数据时有些情况下需要等待旧数据通过读出、写入以生成快照对象才能完成,导致系统在此过程中读写效率低下,降低用户体验。另外,在传统的快照技术中,为了能够区分需要创建快照的快照请求,以及已完成创建快照的快照请求,可以为每一个快照请求均分配了版本号信息;但是,在传统方式中,版本号信息管理系统均较为复杂,不利于版本号信息管理,导致管理版本号信息的成本很高。
为此,本申请实施例提供了一种快照对象生成方法,以希望生成快照对象的过程相对于传统方式中需要将旧数据读出、写入来说大大简化,从而可以显著提高存储系统在快照对象生成过程中的写入速度,提高用户体验。
作为一种示例,图1a示出了本实施例提供的一种快照对象生成系统的架构示意图,本申请实施例提供的快照对象生成方法可以应用于如图1a所示的快照对象生成系统中,该快照对象生成系统可以包括用户设备101、存储设备102。其中,该用户设备101可以为具有通信功能的设备,比如可以为智能手机、平板电脑、笔记本电脑、台式电脑等设备;而该存储设备可以为包括一种或多种异构的存储介质的、且用于存储数据的设备,比如,可以服务器;在本申请实施例中不对用户设备101和存储设备102进行限定。
需要说明的是,用户设备101中还可以包括存储网关模块103,其中,存储网关模块103可以为部署在用户设备侧中的虚拟存储模块中且可以对接收到的写请求依次分配版本号信息的模块。需要强调的是,本实施例中的快照请求可以被存储网关103识别为一种写请求,也就是说,存储设备102从用户设备101获取的快照请求和写请求均可以具有该用户设备101通过存储网关模块103分配的版本号信息。
其中,存储网关模块103对接收到的写请求和快照请求所分配的版本号信息可以是依据预设规则递增的,比如可以依据接收到写请求和快照请求的时序顺序递增,即存储网关模块103接收到的写请求或快照请求的时间越早,则该存储网关模块103对该写请求或该快照请求分配的版本号信息越小,反之,则该存储网关模块103对该写请求或该快照请求分配的版本号信息越大。
举例来说,假设存储网关模块先接收到针对数据存储块集合中的第一数据存储块的第一写请求,然后,接收到针对该数据存储块集合的快照请求,最后,接收到针对该数据存储块集合中的第二数据存储块的第二写请求。由于该存储网关模块接收到该第一写请求的时间早于该快照请求,而接收到该快照请求的时间早于该第二写请求,因此,该存储网关模块可以对该第一写请求分配版本号信息“1”,可以对该快照请求分配版本号信息“2”,可以对该第二写请求分配版本号信息“3”。
需要强调的是,根据快照请求所创建快照的版本号信息与该快照请求的版本号信息可以是相同的,比如,存储网关401对接收到的快照请求分配的版本号信息为4,那么,根据该快照请求所创建快照的版本号信息也可以为4;同样地,写请求中所携带的数据对象的版本号信息与该写请求的版本号信息可以是相同的,比如,存储网关401对接收到的写请求分配的版本号信息为5,那么,该写请求5所携带的数据对象的版本号信息也可以为5。
可以理解的是,存储网关模块103为写请求或快照请求所分配的版本号信息可以体现出该写请求或该快照请求在所有写请求和快照请求中的时序。也就是说,存储设备102所获取针对数据存储块集合的快照请求的版本号信息能够体现所创建快照与写请求中数据对象件的时序关系,由此存储设备102能够通过该快照请求的版本号信息创建对应快照。可见,本实施例通过用户设备101中的存储网关103为接收的写请求或快照请求分配一个递增的版本号信息的方式与传统方式相比较为简单,容易实现,并且对于版本号信息的管理更加简单、便捷,从而利于对写请求和快照请求的管理。
在本实施例中,存储设备102中可以包括大量的数据存储块,数据存储块可以为具有数据存储功能的存储介质。而存储设备102中的至少一个数据存储块可以构成一个数据存储块集合,数据存储块集合可以理解为存储设备102提供给用户设备101存储快照的存储介质集合,通常来说,数据存储块集合在用户设备侧可以体现为硬盘分区、扇区等。
其中,数据存储块中可以存储有数据对象,数据对象可以理解为数据存储块中进行数据存储的最小单元的数据,且数据对象可以为固定大小的数据,比如,数据对象可以为1MB的数据、10MB的数据。需要说明的是,本实施例所提供的数据存储块集合中的同一块数据存储块可以存储数据对象和该数据对象对应的快照对象,可以理解的是,快照对象可以是被记录为针对快照的数据对象。故在生成快照对象的过程中,无需对数据存储块中的数据对象进行拷贝,而是仅仅根据该数据对象的版本号信息将该数据对象记录为快照对象即可。也就是说,在本实施例中,由于存储设备可以将数据存储块集合的数据对象和快照对象存储于同一存储空间中,因此,在生成快照对象的过程中,不需要等待数据存储块中的旧数据对象通过读出、写入以生成快照对象才能完成,而是可以根据该数据存储块中的旧数据对象的版本号信息将该旧数据对象记录为快照对象即可完成,不需要再进行读出、写入。可见,本申请所提供的快照对象生成方法相对于传统方式中需要将旧数据读出、写入而言大大简化,节省了快照对象的生成时间,显著提高了存储系统在快照对象生成过程中的写入速度,提高了用户体验。
具体地,用户需要针对存储设备102中的数据存储块集合进行快照操作时,用户可以通过用户设备101进行快照操作对应的触发操作,比如可以点击用户设备101提供的触发快照操作的按键。然后,用户设备101可以响应该触发操作,向存储网关模块103发送快照请求s。该存储网关模块103接收到该快照请求s后,可以依据预设规则为该快照请求s分配版本号信息“2”,并将该快照请求s2(其中,s代表快照请求,2为该快照请求的版本号信息)以及其对应的版本号信息向存储设备102发送。接着,存储设备102获取该快照请求s2及其对应的版本号信息后,可以根据该快照请求s2的版本号信息针对该数据存储块集合创建该快照请求对应的快照。
在存储设备102创建快照后,若用户还需要针对该数据存储块集合中的第一数据存储块进行写操作时,用户可以通过用户设备101进行写操作,比如,通过用户设备101向该第一数据存储块写入数据对象a。此时,用户设备101可以响应写入该数据对象a的写操作,向存储网关模块103发送写请求。该存储网关模块103接收到该写请求后,可以依据预设规则为该写请求分配版本号信息“3”,并将该写请求a3以及其对应的版本号信息向存储设备102发送,其中,该写请求中a3可以携带该数据对象a3(其中,a3为针对第一数据存储块的数据对象,a为第一数据存储块的标识,1为该数据对象的版本号信息)。存储设备102获取该写请求及其对应的版本号信息后,存储设备102可以根据该第一数据存储块中存储的数据对象a1的版本号信息将该数据对象a1记录为针对该快照的快照对象,并可以将该数据对象a3写入该第一数据存储块中。这样,实现了不需要将该第一数据存储块中的数据对象a1读出、写入便可以生成快照对象a1,也完成了该数据对象a3的写入,从而显著提高了存储系统在快照对象a1生成过程中的写入速度。
需要说明的是,由于本申请实施例中需要对存储设备102中的数据存储块进行索引,以便可以对该数据存储块进行标识,故此,本申请实施例提出了一种确定数据存储块的索引方式。在该确定索引方式中,可以通过如图1b所示的树形存储结构来确定数据存储块的索引;其中,该树形存储结构可以包括四层,第一层可以为桶(Bucket),第二层可以为卷(Volume),第三层可以为数据存储块(Block),第四层可以为数据对象或者快照对象,其中,一个桶可以包括至少一个卷,一个卷可以包括至少一个数据存储块,而一个数据存储块可以包括数据对象和/或快照对象。可以理解的是,数据存储块在存储设备102中的索引可以由该数据存储块所处于的桶、卷以及其自身的标识来确定,例如,如图1b所示,由于数据存储块a处于桶1的卷1中,因此,可以确定该数据存储块a的索引为“桶1/卷1/数据存储块a”,从而可以根据该索引在存储设备102中确定该数据存储块a的位置。需要强调的是,数据存储块在存储设备102中实际的存储结构并非均为图1b所示的树形结构,图1b仅为了便于理解而举例示出。
需要注意的是,上述应用场景仅是为了便于理解本申请而示出,本申请的实时方式在此方面不受任何限制。相反,本申请的实施方式可以应用于适用的任何场景。
下面结合附图,详细说明本申请的各种非限制性实施方式。
接下来,将从存储设备角度对本申请所提供的快照对象生成方法进行介绍。参见图2,为本申请实施例提供的一种快照生成方法的方法流程图。如图2所示,可以包括如下步骤:
S201:存储设备获取用户设备针对数据存储块集合的快照请求。
在本实施例中,存储设备中的数据存储块集合可以至少包括一个数据存储块。为便于描述,可以将该数据存储块集合中的任意一个数据存储块称之为第一数据存储块,即该数据存储块集合中至少包括第一数据存储块。
接下来,以图3所示的示例性应用场景举例说明。如图3所示,用户设备101可以包括存储网关客户端模块301和存储网关模块103。其中,存储网关客户端模块301为能够向存储网关模块103发送写请求或快照请求的模块。该存储网关客户端模块301可以与存储网关模块103,且该存储网关模块103可以与存储设备102连接,比如存储网关模块103可以与存储设备102中存储服务端数据模块302连接。而存储设备102中可以包括存储服务端数据模块302和最终存储模块303;其中,最终存储模块303可以为包括了数据存储块集合、具有存储数据功能的模块;而存储服务端数据模块302可以为用于接收用户设备101传输的数据并存储到最终存储模块303的模块。当用户设备102检测到用户针对最终存储模块303中的数据存储块集合触发了快照操作时,用户设备102中的存储网关客户端模块301可以响应该快照操作,向存储网关模块103发送针对该数据存储块集合的快照请求;存储网关模块103接收到该快照请求s后,可以依据预设规则为该快照请求s分配版本号信息“2”,并可以将该快照请求s2以及其对应的版本号信息,向存储设备102中的存储服务端数据模块302发送。
S202:所述存储设备识别所述快照请求中的版本号信息创建与所述快照请求对应的快照。
存储设备获取到用户设备针对数据存储块集合的快照请求及其版本号信息之后,存储设备可以根据该快照请求,先确定该快照请求对应的数据存储块集合。然后,存储设备可以识别该快照请求中的版本号信息创建与该快照请求对应的快照,比如,可以在数据库中根据该快照请求的版本号信息创建快照请求对应快照;举例来说,存储设备可以通过存储快照请求的版本号信息,并可以将该版本号信息作为该快照请求对应快照的版本号信息,同时,还可以在数据存储块集合中创建该快照对应的快照空间,从而实现了该快照请求对应快照的创建。其中,快照空间可以用于存储该快照对应的快照对象,即快照空间可以理解为快照对象在数据存储块集合中所占用的空间。
继续以图3所示的示例性应用场景举例说明。如图3所示,存储设备102中的存储服务端数据模块302接收到针对数据存储块集合的快照请求s2后,存储服务端数据模块302可以先识别该快照请求s2的版本号信息,在最终存储模块303中,根据该快照请求s2的版本号信息,确定该快照请求s2对应的数据存储块集合。然后,存储服务端数据模块302可以存储该快照请求s2的版本号信息,并将该版本号信息作为该快照请求s2对应快照的版本号信息,以及可以在该数据存储块集合中创建该快照对应的快照空间,从而完成了该快照请求对应快照的创建。
S203:所述存储设备获取所述用户设备针对所述第一数据存储块的第一写请求。
在本实施例中,存储设备在获取针对数据存储块集合的快照请求及其版本号信息并创建对应快照后,若用户通过用户设备向该数据存储块集合中的第一数据存储块写入数据对象,则该用户设备可以针对该需要写入的数据对象生成写请求,且该用户设备中的存储网关模块可以依据预设规则为该写请求分配版本号信息,并可以将该写请求及其版本号信息向该存储设备发送。为便于描述,可以将需要向第一数据存储块写入的数据对象称之为第一数据对象,以及可以将用户设备针对写入第一数据对象而生成的写请求称之为第一写请求,其中,第一写请求中可以携带第一数据对象。
继续以图3所示的示例性应用场景举例说明。如图3所示,存储服务端数据模块302在该数据存储块集合的第一数据存储块中创建快照后,若用户设备102检测到用户触发了需要向该第一数据存储块写入数据对象a(即第一数据对象)的写操作时,用户设备102中的存储网关客户端模块301可以响应该写操作,向存储网关模块103发送第一写请求。该存储网关模块103接收到该第一写请求后,可以依据预设规则为该第一写请求分配版本号信息“3”,并将该第一写请求以及其对应的版本号信息向存储设备102中的存储服务端数据模块302发送,且该第一写请求携带该数据对象a3。
S204:若所述第一数据存储块中存储有第二数据对象,所述存储设备根据所述第二数据对象的版本号信息将所述第二数据对象记录为针对所述快照的快照对象,并将所述第一数据对象写入所述第一数据存储块中。
其中,可以将存储设备获取到针对数据存储块集合的快照请求之前,第一数据存储块中已经存储的数据对象称之为第二数据对象。
需要说明的是,在数据存储块集合的数据存储块中用于存储数据对象的空间可以称之为数据空间。可以理解的是,数据空间和快照空间可以共用数据存储块集合中的存储空间,也就是说,数据存储块集合中的数据对象和快照对象的大小之和不能超过该数据存储块集合的存储空间大小。
在本实施例中,若第一数据存储块中存储有第二数据对象,存储设备获取到携带第一数据对象的第一写请求及其版本号信息后,该存储设备可以先根据第一数据存储块中的第二数据对象的版本号信息将第二数据对象记录为针对快照请求对应快照的快照对象,即可以根据该第二数据对象的版本号信息将该第二数据对象记录为该第一数据对象对应的快照对象。然后,可以将该第一写请求所携带的该第一数据对象写入该第一数据存储块中,也就是说,该第一数据对象写入该第一数据存储块后,该第一数据对象在该第一数据存储块中所占用的空间为数据空间。
继续以图3所示的示例性应用场景举例说明。如图3所示,最终存储设备模块303中的第一数据存储块在存储服务端数据模块302获取到快照请求s2之前,预先存储了数据对象a1(即第二数据对象)。存储设备102中的存储服务端数据模块302接收到针对第一数据存储块的第一写请求后(该第一写请求携带该数据对象a2),存储服务端数据模块302可以先根据该数据对象a1的版本号信息将最终存储设备模块303中的该数据对象a1记录为针对该快照请求对应快照的快照对象。然后,可以将该数据对象a2写入最终存储设备模块303的该第一数据存储块中。
由上述技术方案可以看出,存储设备从用户设备获取的快照请求和写请求具有用户设备通过存储网关模块分配的版本号信息,其中存储网关模块是对接收到的写请求依次分配版本号信息的、所分配的版本号信息是依据预设规则递增的、且存储网关模块对接收到的快照请求识别为一种写请求,故存储设备所获取针对数据存储块集合的快照请求的版本号信息能够体现所创建快照与写请求中数据对象间的时序关系,由此存储设备能够通过该快照请求的版本号信息创建对应快照。若获取针对数据存储块集合中第一数据存储块的第一写请求,且需要因此针对第一数据存储块中存储的第二数据对象创建针对该快照的快照对象时,由于第二数据对象的版本号信息能够用于标识第二数据对象,故存储设备仅需根据该第二数据对象的版本号信息将第二数据对象记录为针对该快照的快照对象即可将第一写请求中的第一数据对象写入第一数据存储块中,可见生成快照对象的过程中无需对数据对象进行拷贝,仅仅是将数据对象记录为快照对象即可,生成快照对象的过程相对于传统方式中需要将旧数据读出、写入来说大大简化,显著提高了存储系统在快照对象生成过程中的写入速度,提高了用户体验。
在介绍完用户设备中的存储网关模块对接收到的写请求和快照请求依次分配版本号信息的方式,下面将依次介绍在存储设备从用户设备获取的快照请求和写请求均具有该用户设备通过存储网关模块分配的版本号信息的场景中,在上述图2对应的实施例的基础上,存储设备在创建快照后如何利用版本号信息生成快照对象、存储设备如何利用版本号信息恢复快照、存储设备如何利用版本号信息删除数据存储块集合中的快照,以及存储设备如何利用版本号信息删除数据存储块集合中的数据对象等方式。
首先,将介绍存储设备在创建快照后,利用版本号信息生成快照对象的方式。
在本方式中,存储设备在创建快照请求对应快照后,若该存储设备获取到用户设备针对第一数据存储块的第一写请求,且该第一数据存储块中已经存储有第二数据对象,则可以利用该第一数据存储块中存储的第二数据对象的版本号信息与该快照对的版本号信息,确定第一写请求携带的第一数据对象的写入方式。
具体地,在S204之前,本实施例提供的快照对象生成方法还可以包括以下步骤:
步骤11:所述存储设备判断所述第二数据对象的版本号信息与所述快照的版本号信息的大小;
步骤12:若所述第二数据对象的版本号信息小于所述快照的版本号信息,执行S204;
步骤13:若所述第二数据对象的版本号信息大于所述快照的版本号信息,所述存储设备将所述第一数据对象覆盖写入所述第一数据存储块中。
可以理解的是,若存储设备确定第一数据存储块中存储的第二数据对象的版本号信息小于快照的版本号信息,说明存储网关模块接收到携带有该第二数据对象的写请求的时间早于接收到该快照对应的快照请求的时间,则该第二数据对象为需要备份的数据对象,因此,该存储设备可以将该第二数据对象记录为针对该快照的快照对象,并且可以将该第一数据对象写入第一数据存储块中。
若存储设备确定第一数据存储块中存储的第二数据对象的版本号信息大于快照的版本号信息,说明存储网关模块接收到携带有该第二数据对象的写请求的时间晚于接收到该快照对应的快照请求的时间,则该第二数据对象为不需要备份的数据对象,因此,该存储设备不需要将该第二数据对象记录为针对该快照的快照对象,而是可以将该第一数据对象覆盖写入该第一数据存储块中,即将该第一数据对象写入该第一数据存储块中,并用该第一数据对象覆盖该第二数据对象。
需要说明的是,存储设备在接收到快照请求之前,第一数据存储块中并未存储有任何数据对象,那么,该存储设备创建该快照请求对应快照后,若接收到针对第一数据存储块的第一写请求,则可以直接将该第一写请求携带的第一数据对象写入该第一数据存储块。
接下来,以图4所示的示例性应用场景举例说明。如图4所示,假设最终存储模块303包括数据存储块集合,且该数据存储块集合中的第一数据存储块存储有数据对象a1、第二数据存储块存储有数据对象b2以及第三数据存储块存储有数据对象c3。存储服务端数据模块302先获取到存储网关模块103发送的快照请求s4,并可以在该数据存储块集合中创建该快照请求s4对应的快照s4以及快照空间s4。然后,该存储服务端数据模块302接收到存储网关模块103发送的针对第二数据存储块的第一写请求、针对第四数据存储块的第二写请求和第三写请求,其中,该第一写请求携带有数据对象b5,该第二写请求携带有数据对象d6,该第三写请求携带有数据对象d7。由于数据对象b2的版本号信息小于快照s4的版本号信息,故存储服务端数据模块302可以将该第二数据存储块中存储的数据对象b2记录为针对该快照s4的快照对象b2,并可以将该数据对象b5写入该第二数据存储块。由于该第四数据存储块并未存储有任何数据对象,故可以先将该数据对象d6写入该第四数据存储块;接着,再判断该数据对象d6的版本号信息与该快照s4的版本号信息大小,由于该数据对象d6的版本号信息大于该快照s4的版本号信息,因此,可以将数据对象d7覆盖写入该第四数据存储块,即用该数据对象d7覆盖该数据对象d6,并且不需要将该数据对象d6记录为针对该快照s4的快照对象。
可见,在本实施例中,由于用户设备中的存储网关为接收的写请求或快照请求分配一个递增的版本号信息的方式与传统方式相比较为简单,使得存储设备在创建快照后,可以利用第一数据存储块中存储的第二数据对象的版本号信息与该快照对应的版本号信息,便可以确定第一写请求携带的第一数据对象的写入方式,从而使得存储设备对于数据存储块集合中的快照对象和数据对象的管理更加简单、便利。
其次,将介绍存储设备利用版本号信息恢复快照的方式。
在本方式中,本实施例提供的快照对象生成方法还可以包括以下步骤:
步骤21:所述存储设备获取针对所述快照的恢复请求;
步骤22:所述存储设备对所述数据存储块集合中的数据对象和快照对象进行遍历,确定出版本号信息小于所述快照的版本号信息的目标数据对象和/或目标快照对象;
步骤23:所述存储设备根据所述目标数据对象和/或目标快照对象得到恢复后的数据存储块集合。
具体地,当用户通过用户设备针对数据存储块集合中的一个快照发起恢复操作时,该用户设备可以向存储设备发送针对该快照的恢复请求。该存储设备获取针对该快照的恢复请求后,可以先根据该恢复请求确定该快照对应的数据存储块集合。然后,该存储设备可以对该数据存储块集合中的数据对象和快照对象进行遍历,并确定出版本号信息小于该快照的版本号信息的数据对象和/或快照对象;其中,为了便于描述,本方式中可以将版本号信息小于快照的版本号信息的数据对象、快照对象分别称之为目标数据对象、目标快照对象。接着,该存储设备可以根据该目标数据对象和/或该目标快照对象得到恢复后的数据存储块集合,比如,该存储设备可以将该目标数据对象和/或该目标快照对象拷贝到另一数据存储块集合中,从而可以得到恢复后的数据存储块集合。需要说明的是,当存在多个目标数据对象和/或该目标快照对象均存在同一数据存储块时,可以仅将该多个数据对象和/或快照对象中版本号信息最大的数据对象或快照对象作为数据对象恢复到另一数据存储块集合中。
接下来,以图5所示的示例性应用场景举例说明。如图5所示,假设最终存储模块303包括第一数据存储块集合和第二数据存储块集合,且该第一数据存储块集合中的第一数据存储块存储有数据对象a1,第二数据存储块存储有数据对象b10、快照s8对应的快照对象b5和快照s4对应的快照对象b2,第三数据存储块存储有数据对象c3,以及第四数据存储块存储有数据对象d11和快照s8对应的快照对象d7。存储服务端数据模块302获取到存储网关模块103发送的针对该第一数据存储块集合中的快照s8的恢复请求后,存储服务端数据模块302可以对该第一数据存储块集合中的数据对象和快照对象进行遍历,分别确定出版本号信息小于该快照s8的版本号信息8的目标数据对象和目标快照对象,其中,该目标数据对象包括数据对象a1、数据对象c3,该目标快照对象包括快照对象b5、快照对象d7和快照对象b2。由于快照对象b5和快照对象b2均存储在该第二数据存储块中,且快照对象b5的版本号信息大于快照对象b2的版本号信息,因此,存储服务端数据模块302可以将数据对象a1、数据对象c3、快照对象b5和快照对象d7作为数据对象拷贝到该第二数据存储块中,从而得到恢复后的第二数据存储块。
需要强调的是,当存储设备中的数据存储块集合正在恢复快照时,若该存储设备获取到用户设备针对该数据存储块集合的写请求,那么,该存储设备可以先完成该数据存储块集合的快照恢复,再响应该写请求对该数据存储块集合进行写操作。
可见,在本实施例中,由于用户设备中的存储网关为接收的写请求或快照请求分配一个递增的版本号信息的方式与传统方式相比较为简单,使得存储设备需要针对快照进行恢复时,可以利用数据存储块集合中的数据对象和快照对象的版本号信息与该快照对应的版本号信息,便可以确定出需要恢复的目标数据对象和/或目标快照对象,从而使得存储设备中的快照恢复过程更加简单、便捷,进而使得存储设备对于数据存储块集合中的快照对象和数据对象的管理更加简单、便利。
再次,将介绍存储设备利用版本号信息删除数据存储块集合中的快照的方式。
本方式中,本实施例提供的快照对象生成方法还可以包括以下步骤:
步骤31:所述存储设备获取针对所述数据存储块集合的第一快照的快照删除请求;
步骤32:所述存储设备对所述数据存储块集合中快照对象进行遍历,确定出版本号信息小于所述第一快照的版本号信息的待定快照对象;
步骤33:若针对所述数据存储块集合包括版本号信息小于第一快照的第二快照,从所述待定快照对象中确定出版本号信息大于所述第二快照的版本号信息的目标快照对象;并删除所述目标快照对象;
步骤34:若针对所述数据存储块集合不包括版本号信息小于第一快照的第二快照,删除所述待定快照对象。
其中,待定快照对象可以理解为在第一快照对应的数据存储块集合中,版本号信息小于该第一快照的版本号信息的快照对象;第二快照可以理解为在第一快照对应的数据存储块集合中,版本号信息小于该第一快照的版本号信息、且该版本号信息与该第一快照的版本号信息最接近的快照;目标快照对象可以理解为在第一快照对应的数据存储块集合中,版本号信息小于第一快照的版本号信息且大于第二快照的版本号信息的快照对象。
具体地,当用户通过用户设备针对数据存储块集合的第一快照发起删除操作时,该用户设备可以向存储设备发送针对该第一快照的快照删除请求,其中,第一快照可以理解为数据存储块集合中的任意一个快照。该存储设备获取针对该第一快照的快照删除请求后,可以先根据该快照删除请求确定该第一快照对应的数据存储块集合。然后,该存储设备可以对该数据存储块集合中的快照对象进行遍历,从该数据存储块集合中的快照对象中确定出版本号信息小于该第一快照的版本号信息的待定快照对象。接着,可以判断该数据存储块集合中是否还包括第二快照;若是,则可以从该待定快照对象中,确定出版本号信息大于该第二快照的版本号信息的目标快照对象,并删除该目标快照对象;若否,则可以删除该待定快照对象。
接下来,以图6所示的示例性应用场景举例说明。如图6所示,假设最终存储模块303包括数据存储块集合,且该数据存储块集合中的第一数据存储块存储有数据对象a1,第二数据存储块存储有数据对象b10、快照s8(即第一快照)对应的快照对象b5和快照s4(即第二快照)对应的快照对象b2,第三数据存储块存储有数据对象c3,以及第四数据存储块存储有数据对象d11和快照s8对应的快照对象d7。存储服务端数据模块302获取到存储网关模块103发送的针对该第一数据存储块集合中的快照s8的快照删除请求后,存储服务端数据模块302可以对该数据存储块集合中的快照对象进行遍历,确定出版本号信息小于该快照s8的版本号信息8的待定快照对象,其中,该待定快照对象包括快照对象b5、快照对象d7和快照对象b2。由于该数据存储块集合还包括版本号信息小于快照s8的快照s4,故可以从该待定快照对象中确定出版本号信息大于快照s4的版本号信息4的目标快照对象(即该快照对象b5和该快照对象d7),并可以从该数据存储块集合中删除该快照对象b5和该快照对象d7。
可见,在本实施例中,由于用户设备中的存储网关为接收的写请求或快照请求分配一个递增的版本号信息的方式与传统方式相比较为简单,使得存储设备需要针对数据存储块集合的第一快照进行删除时,可以利用该数据存储块集合中的快照对象的版本号信息与该快照对应的版本号信息,便可以确定出需要删除的目标快照对象,从而使得存储设备中的快照删除过程更加简单、便捷,进而使得存储设备对于数据存储块集合中的快照对象和数据对象的管理更加简单、便利。
最后,将介绍存储设备利用版本号信息删除数据存储块集合中的数据对象的方式。
本方式中,本实施例提供的快照对象生成方法还可以包括以下步骤:
步骤41:所述存储设备获取针对所述数据存储块集合的数据对象删除请求;
步骤42:所述存储设备对所述数据存储块集合中的数据对象进行遍历,确定出版本号信息大于针对所述数据存储块集合的快照最大版本号信息的目标数据对象;
步骤43:所述存储设备删除所述目标数据对象。
具体地,当用户通过用户设备针对数据存储块集合的数据对象发起删除操作时,该用户设备可以向存储设备发送针对该数据存储块集合的数据对象删除请求。该存储设备获取针对该数据存储块集合的数据对象删除请求后,可以先根据该数据对象删除请求,确定其对应的数据存储块集合。然后,该存储设备可以确定该数据存储块集合的所有快照中最大版本号信息(即快照最大版本号信息)。接着,该存储设备可以对该数据存储块集合中的数据对象进行遍历,从该数据存储块集合中的数据对象中确定出版本号信息大于该最大版本号信息的数据对象;其中,为了便于描述,本方式中可以将在数据存储块集合中,版本号信息大于针对该数据存储块集合的快照最大版本号信息的数据对象称之为目标数据对象。紧接着,该存储设备可以将该目标数据对象删除。需要说明的是,虽然该数据存储块集合中的小于该最大版本号信息的数据对象未删除,但是该数据对象在用户设备侧并不显示。
接下来,以图7所示的示例性应用场景举例说明。如图7所示,假设最终存储模块303包括数据存储块集合,且该数据存储块集合中的第一数据存储块存储有数据对象a1,第二数据存储块存储有数据对象b10、快照s8对应的快照对象b5和快照s4对应的快照对象b2,第三数据存储块存储有数据对象c3,以及第四数据存储块存储有数据对象d11和快照s8对应的快照对象d7。存储服务端数据模块302获取到存储网关模块103发送的针对该数据存储块集合的数据对象删除请求后,存储服务端数据模块302可以对该数据存储块集合中的数据对象进行遍历,确定出版本号信息大于针对该数据存储块集合的快照最大版本号信息8的目标快照对象(即数据对象b10和数据对象d11),并将该数据对象b10和该数据对象d11删除。
可见,在本实施例中,由于用户设备中的存储网关为接收的写请求或快照请求分配一个递增的版本号信息的方式与传统方式相比较为简单,使得存储设备需要针对数据存储块集合的数据对象进行删除时,可以利用该数据存储块集合中的数据对象的版本号信息与该快照对应的版本号信息,便可以确定出需要删除的目标数据对象,从而使得数据存储块集合中的数据对象删除过程更加简单、便捷,进而使得存储设备对于数据存储块集合中的快照对象和数据对象的管理更加简单、便利。
由于传统的快照技术中,生成快照的方式为同步生成,这样,使得存储设备每完成一个写请求或快照请求后,用户设备才可以生成下一个写请求或快照请求,导致用户无法知道什么时候快照已经生成完成,或者用户需要等待较长时间才能够得到写操作完成或快照创建完成的通知,并且,在该期间中,用户设备无法进行其他操作,比如写操作。
故此,在本申请实施例中,如图8所示,用户设备101中的存储网关模块103还可以具有写缓存801;其中,写缓存801可以为能够被存储网关模块103访问到的存储介质,且写缓存801可以用于存储写入到存储网关模块103中但尚未上传至存储设备102的数据。
本实施例中,由于存储设备102获取的用户设备101上传的快照请求和写请求在上传前可以写入在存储网关模块103中的写缓存801的写请求队列中。这样,可以由写请求队列依次将该写请求队列中的快照请求和写请求向存储设备上传,以使得该存储设备102可以实现异步创建快照;并且,在写请求队列上传快照请求和写请求的过程中,用户设备101仍然可以进行其他操作(例如写操作),例如,当用户设备101中的存储网关模块103接收到快照请求或者写请求时,均可以直接将该快照请求或者写请求写入该写缓存801中的写请求队列的队列末尾,而不需要等待,从而使得用户无法感知到等待写操作完成或快照生成完成的过程,进而提高了用户体验。
进一步地,为了缩短存储设备102从用户设备101获取到写请求的时间,在本实施例中,存储设备101可以获取用户设备102并行上传的多个写请求,其中,该多个写请求在上传前可以连续的写入在存储网关模块103中的写缓存801的写请求队列中。
具体地,由于用户设备102中的存储网关模块103在获取到写请求后,可以对写请求分配版本号信息,故明确了写请求队列中的写请求之间的时序先后关系。因此,当多个写请求连续的写入写缓存801的写请求队列中时,用户设备101可以将该多个写请求并发乱序的向存储设备102上传,这样,存储设备101可以获取用户设备102并行上传的多个写请求,从而缩短了存储设备102从用户设备101获取到写请求的时间,提高了用户设备向存储设备上传写请求的速度。
在通过上述实施例介绍完如何生成快照对象后,接下来,将从用户设备中的存储网关的角度,介绍如何确定快照版本的方法。参见图9,为本申请实施例提供的一种快照版本确定方法的方法流程图。如图9所示,该方法可以包括如下步骤:
S901:所述存储网关模块对接收到的写请求依次分配版本号信息,所分配的版本号信息依据预设规则递增。
其中,存储网关可以将接收到的快照请求识别为一种写请求,并且根据该快照请求所创建快照的版本号信息与该快照请求的版本号信息相同,以及,写请求中所携带数据对象的版本号信息与该写请求的版本号信息相同。需要说明的是,与版本号信息相关的内容可以参见上述实施例中相关部分,在此不再赘述。
S902:所述存储网关模块根据版本号信息从小到大的顺序向存储设备上传分配版本号信息的快照请求和写请求。
接下来,以图4所示的示例性应用场景举例说明。用户需要针对存储设备102中的数据存储块集合进行快照操作或写操作时,用户可以通过用户设备101进行快照操作或写操作。然后,用户设备101中的存储网关客户端模块可以响应该快照操作或写操作,并向用户设备101中的存储网关模块103发送针对该数据存储集合的快照请求或写请求。该存储网关模块103接收到该写请求或该快照请求后,该存储网关模块103可以依据预设规则为该写请求或该快照请求分配版本号信息,并可以根据版本号信息从小到大的顺序向存储设备102上传分配版本号信息的快照请求和写请求,以便存储设备102可以根据该写请求或该快照请求以及其对应的版本号信息,对该写请求或该快照请求进行后续处理。
由上述技术方案可以看出,在本实施例中,用户设备中的存储网关模块可以对接收的写请求或快照请求依次分配一套版本号信息,且所分配的版本号信息可以是依据预设规则递增的,也就是说,写请求和快照请求的版本号信息可以体现出用户设备接收到的所有写请求和快照请求之间在时序上的先后关系。可见,本实施例通过用户设备中的存储网关为接收的写请求或快照请求分配一个递增的版本号信息的方式与传统方式相比较为简单,容易实现,并且对于版本号信息的管理更加简单、便捷,从而利于对写请求和快照请求的管理。
需要说明的是,上述实施例提及了用户设备中的存储网关模块还可以具有写缓存,而在存储网关模块具有写缓存的场景下,本申请实施例所提供的快照版本确定方法还可以包括以下步骤:所述存储网关模块将分配版本号信息后的写请求和快照请求依次写入所述写缓存的写请求队列中;相应地,S902可以包括:所述存储网关模块根据版本号信息从小到大的顺序从所述写请求队列中向存储设备上传分配版本号信息的快照请求和写请求。
本实施例中,由于存储网关模块可以将分配版本号信息后的写请求和快照请求依次写入写缓存的写请求队列中。这样,可以由写请求队列依次将该写请求队列中的快照请求和写请求向存储设备上传,以使得存储设备可以实现异步创建快照;并且,在写请求队列上传快照请求和写请求的过程中,用户设备仍然可以进行其他操作(例如写操作),例如,当用户设备中的存储网关模块接收到快照请求或者写请求时,均可以直接将该快照请求或者写请求写入该写缓存4中的写请求队列的队列末尾,而不需要等待,从而使得用户不会感知到等待写操作完成或快照生成完成的过程,进而提高了用户体验。
进一步地,为了提高用户设备向存储设备上传写请求的速度,在图9对应的实施例的基础上,本申请实施例提供了多种存储网关模块向存储设备上传快照请求的方式,下面将针对其中一种实现方式进行介绍。
在本方式中,若存储网关模块的写缓存中的写请求队列从队列头起包括了多个连续的写请求,则存储网关模块可以根据版本号信息从小到大的顺序,从该写请求队列中提取该多个连续的写请求并行向存储设备上传。
接下来,以图10为例,假设存储网关模块的写缓存中的写请求队列为:s4→c3→b2→a1,其中,a1、b2和c3为写请求,s4为快照请求,数字代表请求的版本号信息。由于该写请求队列从队列头起包括了三个连续的写请求,因此,该存储网关模块可以从该写请求队列中提取该三个连续的写请求a1、b2和c3并行向存储设备上传。
可见,在本实施例中,由于用户设备中的存储网关模块在获取到写请求后,可以对写请求分配版本号信息,故明确了写请求队列中的写请求之间的时序先后关系。因此,当多个写请求连续的写入写缓存的写请求队列中时,用户设备可以将该多个写请求并发乱序的向存储设备上传,这样,用户设备可以向存储设备并行上传多个写请求,从而缩短了用户设备向存储设备上传写请求的时间,提高了用户设备向存储设备上传写请求的速度。
由于写缓存的写请求队列中可以包括写请求和快照请求,若将该写请求队列中的写请求和快照请求一起并行向存储设备上传,会导致该存储设备获取到写请求和快照请求后,无法保证写请求和快照请求之间的时序,导致针对快照请求生成快照对象时会出现错误。例如,假设写请求队列中包括了第一写请求a1、快照请求s2和第二写请求b3,并且该写请求队列将该第一写请求a1、该快照请求s2和该第二写请求b3并行向该存储设备上传,若该存储设备获取到该第一写请求a1的时间早于该第二写请求b3,获取到该第二写请求b3的时间早于该快照请求s2,则会导致针对该快照请求s2生成快照对象时,是将该第二写请求b3携带的数据对象b3记录为针对快照s2的快照对象,而并非是将该第一写请求a1携带的数据对象a1记录为针对该快照s2的快照对象,即快照请求s2对应的快照空间中只包括了快照对象b3,而并没有包括快照对象a1。
故此,为保证存储设备获取到写请求和快照请求时,能够保证写请求和快照请求之间的时序,本申请实施例提供了多种存储网关模块向存储设备上传快照请求和写请求的方式,下面将针对其中一种实现方式进行介绍。
具体地,在图9对应的实施例的基础上,本申请实施例所提供的快照版本确定方法还可以包括以下步骤:所述存储网关模块在第一写请求向所述存储设备上传完毕后再上传快照请求;所述存储网关模块在所述快照请求上传完毕后再上传第二写请求。
其中,第一写请求可以理解为用户设备向存储设备上传过程中,快照请求前一个需上传的写请求;而第二写请求可以理解为用户设备向存储设备上传过程中,快照请求后一个需上传的写请求。
可以理解的是,在本方式中,在写缓存的写请求队列向存储设备上传写请求和快照请求的过程中,若遇到快照请求,则可以触发写屏障(Write Barrier)规则,即可以先将快照请求之前的写请求向存储设备上传完毕后,暂停上传该快照请求之后的写请求,然后,单线程向该存储设备上传该快照请求,当该快照请求上传完毕后,再继续上传该快照请求之后的写请求。
接下来,以图11为例,假设存储网关模块的写缓存中的写请求队列为:c4→s3→b2→a1,其中,a1、b2和b3为写请求,s3为快照请求,数字代表请求的版本号信息。由于写请求a1、b2均与写请求c4在该写请求队列中并不连续,且该写请求a1、b2在快照请求s3之前(即该写请求a1、b2为第一写请求),而该写请求c4在快照请求s3之后(即该写请求c4为第二写请求)。因此,该存储网关模块可以在将该写请求a1、b2向存储设备上传完毕后再上传该快照请求s3,且该存储网关模块在将该快照请求s3上传完毕后再上传该写请求c4。
可见,在本实施例中,在存储网关模块向存储设备上传写请求和快照请求的过程中,该存储网关模块可以在第一写请求向存储设备上传完毕后再上传快照请求,并且该存储网关模块在该快照请求上传完毕后再上传第二写请求。这样,可以使得存储网关模块向存储设备上传写请求和快照请求时,可以保证能够单线程向存储设备上传快照请求,从而使得存储设备接收到快照请求和写请求后,能够保证快照请求和写请求之间的时序不出现混乱,进而存储设备可以准确地针对该快照请求对应快照生成快照对象。
为便于更好的实施本申请实施例的上述方案,下面还提供用于实施上述方案的相关装置
请参阅图12a所示,本申请实施例提供的一种快照对象生成装置1200,该快照对象生成装置1200可以包括:第一获取模块1201、创建模块1202、第二获取模块1203、记录模块1204和写入模块1205;
所述第一获取模块1201,用于获取用户设备针对数据存储块集合的快照请求,所述数据存储块集合中至少包括第一数据存储块;
所述创建模块1202,用于识别所述快照请求中的版本号信息创建与所述快照请求对应的快照;
所述第二获取模块1203,用于获取所述用户设备针对所述第一数据存储块的第一写请求,所述第一写请求中携带第一数据对象;
所述记录模块1204,用于若所述第一数据存储块中存储有第二数据对象,根据第二数据对象的版本号信息将所述第二数据对象记录为针对所述快照的快照对象;
所述写入模块1205,用于将所述第一数据对象写入所述第一数据存储块中;
其中,所述存储设备从所述用户设备获取的快照请求和写请求具有所述用户设备通过存储网关模块分配的版本号信息,所述存储网关模块是对接收到的写请求依次分配版本号信息的,所分配的版本号信息依据预设规则递增;
其中,所述快照请求被所述存储网关模块识别为一种写请求,根据所述快照请求所创建快照的版本号信息与所述快照请求的版本号信息相同,所述写请求中所携带数据对象的版本号信息与所述写请求的版本号信息相同。
在一个实施例中,请参阅图12b所示,所述装置还包括:判断模块1206;
所述判断模块1206,用于判断所述第二数据对象的版本号信息与所述快照的版本号信息的大小;若所述第二数据对象的版本号信息小于所述快照的版本号信息,则调用所述记录模块1204和所述写入模块1205;若所述第二数据对象的版本号信息大于所述快照的版本号信息,则调用所述写入模块1205,所述写入模块1205还用于所述存储设备将所述第一数据对象覆盖写入所述第一数据存储块中。
在一个实施例中,请参阅图12c所示,,所述装置还包括:第三获取模块1207、第一遍历模块1208和第四获取模块1209;
所述第三获取模块1207,用于获取针对所述快照的恢复请求;
所述第一遍历模块1208,用于对所述数据存储块集合中的数据对象和快照对象进行遍历,确定出版本号信息小于所述快照的版本号信息的目标数据对象和/或目标快照对象;
所述第四获取模块1209,用于根据所述目标数据对象和/或目标快照对象得到恢复后的数据存储块集合。
在一个实施例中,请参阅图12d所示,所述装置还包括:第五获取模块1210、第二遍历模块1211、第一删除模块1212和第二删除模块1213;
所述第五获取模块1210,用于获取针对所述数据存储块集合的第一快照的快照删除请求;
所述第二遍历模块1211,用于对所述数据存储块集合中快照对象进行遍历,确定出版本号信息小于所述第一快照的版本号信息的待定快照对象;
所述第一删除模块1212,用于若针对所述数据存储块集合包括版本号信息小于第一快照的第二快照,从所述待定快照对象中确定出版本号信息大于所述第二快照的版本号信息的目标快照对象;并删除所述目标快照对象;
所述第二删除模块1213,用于若针对所述数据存储块集合不包括版本号信息小于第一快照的第二快照,删除所述待定快照对象。
在一个实施例中,请参阅图12e所示,所述装置还包括:第六获取模块1214、第三遍历模块1215和第三删除模块1216;
所述第六获取模块1214,用于获取针对所述数据存储块集合的数据对象删除请求;
所述第三遍历模块1215,用于对所述数据存储块集合中的数据对象进行遍历,确定出版本号信息大于针对所述数据存储块集合的快照最大版本号信息的目标数据对象;
所述第三删除模块1216,用于删除所述目标数据对象。
在一个实施例中,所述存储设备将数据存储块集合的数据对象和快照对象存储于同一存储空间中。
在一个实施例中,所述存储设备获取的所述用户设备上传的快照请求和写请求在上传前写入在所述用户设备的存储网关模块的写请求队列中。
在一个实施例中,请参阅图12f所示,所述装置还包括:第七获取模块1217;
所述第七获取模块1217,用于获取所述用户设备并行上传的多个写请求,所述多个写请求在上传前连续的写入在所述用户设备的存储网关模块的写请求队列中。
请参阅图13a所示,本申请实施例提供的一种基于存储网关的快照版本确定装置1300,应用于用户设备,该用户设备包括存储网关模块,该基于存储网关的快照版本确定装置1300包括:分配模块1301和第一上传模块1302;
所述分配模块1301,用于对接收到的写请求依次分配版本号信息,所分配的版本号信息依据预设规则递增;其中,所述存储网关将接收到的快照请求识别为一种写请求,根据所述快照请求所创建快照的版本号信息与所述快照请求的版本号信息相同,所述写请求中所携带数据对象的版本号信息与所述写请求的版本号信息相同;
所述第一上传模块1302,用于根据版本号信息从小到大的顺序向存储设备上传分配版本号信息的快照请求和写请求。
在一个实施例中,请参阅图13b所示,所述存储网关模块具有写缓存,所述装置还包括:写入模块1303;
所述写入模块1303,用于将分配版本号信息后的写请求和快照请求依次写入所述写缓存的写请求队列中;
所述第一上传模块,还用于根据版本号信息从小到大的顺序从所述写请求队列中向存储设备上传分配版本号信息的快照请求和写请求。
在一个实施例中,所述第一上传模块,还用于若所述写请求队列从队列头起包括多个连续的写请求,根据版本号信息从小到大的顺序从所述写请求队列中提取所述多个连续的写请求并行向所述存储设备上传。
在一个实施例中,请参阅图13c所示,所述装置还包括:第二上传模块1304和第三上传模块1305;
所述第二上传模块1304,用于在第一写请求向所述存储设备上传完毕后再上传快照请求,所述第一写请求为向所述存储设备上传过程中所述快照请求前一个需上传的写请求;
所述第三上传模块1305,用于在所述快照请求上传完毕后再上传第二写请求,所述第二写请求为向所述存储设备上传过程中所述快照请求后一个需上传的写请求。
图14是本申请实施例提供的一种服务器结构示意图,该服务器1400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processingunits,CPU)1422(例如,一个或一个以上处理器)和存储器1432,一个或一个以上存储应用程序1442或数据1444的存储介质1430(例如一个或一个以上海量存储设备)。其中,存储器1432和存储介质1430可以是短暂存储或持久存储。存储在存储介质1430的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1422可以设置为与存储介质1430通信,在服务器1400上执行存储介质1430中的一系列指令操作。
服务器1400还可以包括一个或一个以上电源1426,一个或一个以上有线或无线网络接口1450,一个或一个以上输入输出接口1458,和/或,一个或一个以上操作系统1441,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由服务器所执行的步骤可以基于该图14所示的服务器结构。
其中,CPU 1422用于执行如下步骤:
存储设备获取用户设备针对数据存储块集合的快照请求,所述数据存储块集合中至少包括第一数据存储块;
所述存储设备识别所述快照请求中的版本号信息创建与所述快照请求对应的快照;
所述存储设备获取所述用户设备针对所述第一数据存储块的第一写请求,所述第一写请求中携带第一数据对象;
若所述第一数据存储块中存储有第二数据对象,所述存储设备根据所述第二数据对象的版本号信息将所述第二数据对象记录为针对所述快照的快照对象,并将所述第一数据对象写入所述第一数据存储块中;
其中,所述存储设备从所述用户设备获取的快照请求和写请求具有所述用户设备通过存储网关模块分配的版本号信息,所述存储网关模块是对接收到的写请求依次分配版本号信息的,所分配的版本号信息依据预设规则递增;
其中,所述快照请求被所述存储网关模块识别为一种写请求,根据所述快照请求所创建快照的版本号信息与所述快照请求的版本号信息相同,所述写请求中所携带数据对象的版本号信息与所述写请求的版本号信息相同。
本申请实施例提供了一种快照对象生成设备,如图15所示,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。该终端可以为包括手机、平板电脑、个人数字助理(英文全称:Personal Digital Assistant,英文缩写:PDA)、销售终端(英文全称:Point of Sales,英文缩写:POS)、车载电脑等任意终端设备,以终端为手机为例:
图15示出的是与本申请实施例提供的终端相关的手机的部分结构的框图。参考图15,手机包括:射频(英文全称:Radio Frequency,英文缩写:RF)电路1510、存储器1520、输入单元1530、显示单元1540、传感器1550、音频电路1560、无线保真(英文全称:wirelessfidelity,英文缩写:WiFi)模块1570、处理器1580、以及电源1590等部件。本领域技术人员可以理解,图15中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图15对手机的各个构成部件进行具体的介绍:
RF电路1510可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1580处理;另外,将设计上行的数据发送给基站。通常,RF电路1510包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(英文全称:LowNoise Amplifier,英文缩写:LNA)、双工器等。此外,RF电路1510还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(英文全称:Global System of Mobile communication,英文缩写:GSM)、通用分组无线服务(英文全称:General Packet Radio Service,GPRS)、码分多址(英文全称:CodeDivision Multiple Access,英文缩写:CDMA)、宽带码分多址(英文全称:Wideband CodeDivision Multiple Access,英文缩写:WCDMA)、长期演进(英文全称:Long TermEvolution,英文缩写:LTE)、电子邮件、短消息服务(英文全称:Short Messaging Service,SMS)等。
存储器1520可用于存储软件程序以及模块,处理器1580通过运行存储在存储器1520的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器1520可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元1530可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元1530可包括触控面板1531以及其他输入设备1532。触控面板1531,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1531上或在触控面板1531附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板1531可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1580,并能接收处理器1580发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1531。除了触控面板1531,输入单元1530还可以包括其他输入设备1532。具体地,其他输入设备1532可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元1540可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元1540可包括显示面板1541,可选的,可以采用液晶显示器(英文全称:Liquid Crystal Display,英文缩写:LCD)、有机发光二极管(英文全称:Organic Light-Emitting Diode,英文缩写:OLED)等形式来配置显示面板1541。进一步的,触控面板1531可覆盖显示面板1541,当触控面板1531检测到在其上或附近的触摸操作后,传送给处理器1580以确定触摸事件的类型,随后处理器1580根据触摸事件的类型在显示面板1541上提供相应的视觉输出。虽然在图15中,触控面板1531与显示面板1541是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板1531与显示面板1541集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器1550,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1541的亮度,接近传感器可在手机移动到耳边时,关闭显示面板1541和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路1560、扬声器1561,传声器1562可提供用户与手机之间的音频接口。音频电路1560可将接收到的音频数据转换后的电信号,传输到扬声器1561,由扬声器1561转换为声音信号输出;另一方面,传声器1562将收集的声音信号转换为电信号,由音频电路1560接收后转换为音频数据,再将音频数据输出处理器1580处理后,经RF电路1515以发送给比如另一手机,或者将音频数据输出至存储器1520以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块1570可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图15示出了WiFi模块1570,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器1580是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器1520内的软件程序和/或模块,以及调用存储在存储器1520内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器1580可包括一个或多个处理单元;优选的,处理器1580可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1580中。
手机还包括给各个部件供电的电源1590(比如电池),优选的,电源可以通过电源管理系统与处理器1580逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本申请实施例中,该终端所包括的处理器1580还具有以下功能:
存储设备获取用户设备针对数据存储块集合的快照请求,所述数据存储块集合中至少包括第一数据存储块;
所述存储设备识别所述快照请求中的版本号信息创建与所述快照请求对应的快照;
所述存储设备获取所述用户设备针对所述第一数据存储块的第一写请求,所述第一写请求中携带第一数据对象;
若所述第一数据存储块中存储有第二数据对象,所述存储设备根据所述第二数据对象的版本号信息将所述第二数据对象记录为针对所述快照的快照对象,并将所述第一数据对象写入所述第一数据存储块中;
其中,所述存储设备从所述用户设备获取的快照请求和写请求具有所述用户设备通过存储网关模块分配的版本号信息,所述存储网关模块是对接收到的写请求依次分配版本号信息的,所分配的版本号信息依据预设规则递增;
其中,所述快照请求被所述存储网关模块识别为一种写请求,根据所述快照请求所创建快照的版本号信息与所述快照请求的版本号信息相同,所述写请求中所携带数据对象的版本号信息与所述写请求的版本号信息相同。
本申请实施例还提供了另一种基于存储网关的快照版本确定设备,该基于存储网关的快照版本确定设备与图15所示的快照对象生成设备的结构相同,区别在于:
在本申请实施例中,该终端所包括的处理器1580还具有以下功能:
所述存储网关模块对接收到的写请求依次分配版本号信息,所分配的版本号信息依据预设规则递增;其中,所述存储网关将接收到的快照请求识别为一种写请求,根据所述快照请求所创建快照的版本号信息与所述快照请求的版本号信息相同,所述写请求中所携带数据对象的版本号信息与所述写请求的版本号信息相同;
所述存储网关模块根据版本号信息从小到大的顺序向存储设备上传分配版本号信息的快照请求和写请求。
请参阅图16,图16为本申请实施例中快照对象生成系统一个实施例示意图,其中,该快照对象生成系统中包括存储设备1601以及用户设备1602,其中,该用户设备1602包括存储网关模块,所述系统包括:
该存储设备1601所执行的动作,例如,获取用户设备针对数据存储块集合的快照请求,所述数据存储块集合中至少包括第一数据存储块;识别所述快照请求中的版本号信息创建与所述快照请求的对应快照;获取所述用户设备针对所述第一数据存储块的第一写请求,所述第一写请求中携带第一数据对象;若所述第一数据存储块中存储有第二数据对象,根据所述第二数据对象的版本号信息将所述第二数据对象记录为针对所述快照的快照对象,并将所述第一数据对象写入所述第一数据存储块中;其中,所述存储设备从所述用户设备获取的快照请求和写请求具有所述用户设备通过存储网关模块分配的版本号信息,所述存储网关模块是对接收到的写请求依次分配版本号信息的,所分配的版本号信息依据预设规则递增;其中,所述快照请求被所述存储网关模块识别为一种写请求,根据所述快照请求所创建快照的版本号信息与所述快照请求的版本号信息相同,所述写请求中所携带数据对象的版本号信息与所述写请求的版本号信息相同。
该用户设备1602所执行的动作,例如,对接收到的写请求依次分配版本号信息,所分配的版本号信息依据预设规则递增;根据版本号信息从小到大的顺序向存储设备上传分配版本号信息的快照请求和写请求。
可见,本申请实施例提供的快照对象生成系统,存储设备从用户设备获取的快照请求和写请求具有用户设备通过存储网关模块分配的版本号信息,其中存储网关模块是对接收到的写请求依次分配版本号信息的、所分配的版本号信息是依据预设规则递增的、且存储网关模块对接收到的快照请求识别为一种写请求,故存储设备所获取针对数据存储块集合的快照请求的版本号信息能够体现所创建快照与写请求中数据对象间的时序关系,由此存储设备能够通过该快照请求的版本号信息创建对应快照。若获取针对数据存储块集合中第一数据存储块的第一写请求,且需要因此针对第一数据存储块中存储的第二数据对象创建针对该快照的快照对象时,由于第二数据对象的版本号信息能够用于标识第二数据对象,故存储设备仅需根据该第二数据对象的版本号信息将第二数据对象记录为针对该快照的快照对象即可将第一写请求中的第一数据对象写入第一数据存储块中,可见生成快照对象的过程中无需对数据对象进行拷贝,仅仅是将数据对象记录为快照对象即可,生成快照对象的过程相对于传统方式中需要将旧数据读出、写入来说大大简化,显著提高了存储系统在快照对象生成过程中的写入速度,提高了用户体验。
本申请实施例还提供一种计算机可读存储介质,用于存储程序代码,该程序代码用于执行前述各个实施例所述的一种快照对象生成方法中的任意一种实施方式或一种基于存储网关的快照版本确定方法中的任意一种实施方式。
本申请实施例还提供一种包括指令的计算机程序产品,当其在计算机上运行时,使得计算机执行前述各个实施例所述的一种快照对象生成方法中的任意一种实施方式或一种基于存储网关的快照版本确定方法中的任意一种实施方式。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:Read-OnlyMemory,英文缩写:ROM)、随机存取存储器(英文全称:Random Access Memory,英文缩写:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (14)
1.一种快照对象生成方法,其特征在于,所述方法包括:
存储设备获取用户设备针对数据存储块集合的快照请求,所述数据存储块集合中至少包括第一数据存储块;
所述存储设备识别所述快照请求中的版本号信息创建与所述快照请求对应的快照;
所述存储设备获取所述用户设备针对所述第一数据存储块的第一写请求,所述第一写请求中携带第一数据对象;
若所述第一数据存储块中存储有第二数据对象,所述存储设备根据所述第二数据对象的版本号信息将所述第二数据对象记录为针对所述快照的快照对象,并将所述第一数据对象写入所述第一数据存储块中;
其中,所述存储设备从所述用户设备获取的快照请求和写请求具有所述用户设备通过存储网关模块分配的版本号信息,所述存储网关模块是对接收到的写请求依次分配版本号信息的,所分配的版本号信息依据预设规则递增;其中,所述快照请求被所述存储网关模块识别为一种写请求,根据所述快照请求所创建快照的版本号信息与所述快照请求的版本号信息相同,所述写请求中所携带数据对象的版本号信息与所述写请求的版本号信息相同。
2.根据权利要求1所述的方法,其特征在于,在所述存储设备根据所述第二数据对象的版本号信息将所述第二数据对象记录为针对所述快照的快照对象,并将所述第一数据对象写入所述第一数据存储块中之前,所述方法还包括:
所述存储设备判断所述第二数据对象的版本号信息与所述快照的版本号信息的大小;
若所述第二数据对象的版本号信息小于所述快照的版本号信息,执行所述存储设备将第一数据存储块中存储的第二数据对象记录为针对所述快照的快照对象,并将所述第一数据对象写入所述第一数据存储块中的步骤。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述存储设备获取针对所述快照的恢复请求;
所述存储设备对所述数据存储块集合中的数据对象和快照对象进行遍历,确定出版本号信息小于所述快照的版本号信息的目标数据对象和/或目标快照对象;
所述存储设备根据所述目标数据对象和/或目标快照对象得到恢复后的数据存储块集合。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述存储设备获取针对所述数据存储块集合的第一快照的快照删除请求;
所述存储设备对所述数据存储块集合中快照对象进行遍历,确定出版本号信息小于所述第一快照的版本号信息的待定快照对象;
若针对所述数据存储块集合包括版本号信息小于第一快照的第二快照,从所述待定快照对象中确定出版本号信息大于所述第二快照的版本号信息的目标快照对象;并删除所述目标快照对象;
若针对所述数据存储块集合不包括版本号信息小于第一快照的第二快照,删除所述待定快照对象。
5.根据权利要求1-4任意一项所述的方法,其特征在于,所述存储设备获取的所述用户设备上传的快照请求和写请求在上传前写入在所述用户设备的存储网关模块的写请求队列中。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
所述存储设备获取所述用户设备并行上传的多个写请求,所述多个写请求在上传前连续的写入在所述用户设备的存储网关模块的写请求队列中。
7.一种快照对象生成装置,其特征在于,所述装置包括:第一获取模块、创建模块、第二获取模块、记录模块和写入模块;
所述第一获取模块,用于获取用户设备针对数据存储块集合的快照请求,所述数据存储块集合中至少包括第一数据存储块;
所述创建模块,用于识别所述快照请求中的版本号信息创建与所述快照请求对应的快照;
所述第二获取模块,用于获取所述用户设备针对所述第一数据存储块的第一写请求,所述第一写请求中携带第一数据对象;
所述记录模块,用于若所述第一数据存储块中存储有第二数据对象,根据所述第二数据对象的版本号信息将所述第二数据对象记录为针对所述快照的快照对象;
所述写入模块,用于将所述第一数据对象写入所述第一数据存储块中;
其中,所述存储设备从所述用户设备获取的快照请求和写请求具有所述用户设备通过存储网关模块分配的版本号信息,所述存储网关模块是对接收到的写请求依次分配版本号信息的,所分配的版本号信息依据预设规则递增;
其中,所述快照请求被所述存储网关模块识别为一种写请求,根据所述快照请求所创建快照的版本号信息与所述快照请求的版本号信息相同,所述写请求中所携带数据对象的版本号信息与所述写请求的版本号信息相同。
8.一种基于存储网关的快照版本确定方法,其特征在于,所述方法包括:
存储网关模块对接收到的写请求依次分配版本号信息,所分配的版本号信息依据预设规则递增;其中,所述存储网关将接收到的快照请求识别为一种写请求,根据所述快照请求所创建快照的版本号信息与所述快照请求的版本号信息相同,所述写请求中所携带数据对象的版本号信息与所述写请求的版本号信息相同;
所述存储网关模块根据版本号信息从小到大的顺序向存储设备上传分配版本号信息的快照请求和写请求。
9.根据权利要求8所述的方法,其特征在于,所述存储网关模块具有写缓存,所述方法还包括:
所述存储网关模块将分配版本号信息后的写请求和快照请求依次写入所述写缓存的写请求队列中;
所述存储网关模块根据版本号信息从小到大的顺序向存储设备上传分配版本号信息的快照请求和写请求,包括:
所述存储网关模块根据版本号信息从小到大的顺序从所述写请求队列中向存储设备上传分配版本号信息的快照请求和写请求。
10.根据权利要求9所述的方法,其特征在于,所述存储网关模块根据版本号信息从小到大的顺序从所述写请求队列中向存储设备上传分配版本号信息的快照请求和写请求,包括:
若所述写请求队列从队列头起包括多个连续的写请求,所述存储网关模块根据版本号信息从小到大的顺序从所述写请求队列中提取所述多个连续的写请求并行向所述存储设备上传。
11.根据权利要求8或9所述的方法,其特征在于,所述方法还包括:
所述存储网关模块在第一写请求向所述存储设备上传完毕后再上传快照请求,所述第一写请求为向所述存储设备上传过程中所述快照请求前一个需上传的写请求;
所述存储网关模块在所述快照请求上传完毕后再上传第二写请求,所述第二写请求为向所述存储设备上传过程中所述快照请求后一个需上传的写请求。
12.一种基于存储网关的快照版本确定装置,其特征在于,所述装置包括:分配模块和第一上传模块;
所述分配模块,用于对接收到的写请求依次分配版本号信息,所分配的版本号信息依据预设规则递增;其中,所述存储网关将接收到的快照请求识别为一种写请求,根据所述快照请求所创建快照的版本号信息与所述快照请求的版本号信息相同,所述写请求中所携带数据对象的版本号信息与所述写请求的版本号信息相同;
所述第一上传模块,用于根据版本号信息从小到大的顺序向存储设备上传分配版本号信息的快照请求和写请求。
13.一种快照对象生成系统,其特征在于,所述系统包括存储设备以及用户设备;其中,所述用户设备包括存储网关模块;
所述存储设备,用于获取用户设备针对数据存储块集合的快照请求,所述数据存储块集合中至少包括第一数据存储块;识别所述快照请求中的版本号信息创建与所述快照请求对应的快照;获取所述用户设备针对所述第一数据存储块的第一写请求,所述第一写请求中携带第一数据对象;若所述第一数据存储块中存储有第二数据对象,根据所述第二数据对象的版本号信息将所述第二数据对象记录为针对所述快照的快照对象,并将所述第一数据对象写入所述第一数据存储块中;其中,所述存储设备从所述用户设备获取的快照请求和写请求具有所述用户设备通过存储网关模块分配的版本号信息,所述存储网关模块是对接收到的写请求依次分配版本号信息的,所分配的版本号信息依据预设规则递增;其中,所述快照请求被所述存储网关模块识别为一种写请求,根据所述快照请求所创建快照的版本号信息与所述快照请求的版本号信息相同,所述写请求中所携带数据对象的版本号信息与所述写请求的版本号信息相同。
所述用户设备,用于对接收到的写请求依次分配版本号信息,所分配的版本号信息依据预设规则递增;根据版本号信息从小到大的顺序向存储设备上传分配版本号信息的快照请求和写请求。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行权利要求1-6中任一项所述的快照对象生成方法或权利要求9-12中任一项所述的基于存储网关的快照版本确定方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810241083.1A CN110309100B (zh) | 2018-03-22 | 2018-03-22 | 一种快照对象生成方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810241083.1A CN110309100B (zh) | 2018-03-22 | 2018-03-22 | 一种快照对象生成方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110309100A true CN110309100A (zh) | 2019-10-08 |
CN110309100B CN110309100B (zh) | 2023-05-23 |
Family
ID=68073941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810241083.1A Active CN110309100B (zh) | 2018-03-22 | 2018-03-22 | 一种快照对象生成方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110309100B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111427859A (zh) * | 2020-03-25 | 2020-07-17 | 京东数字科技控股有限公司 | 一种消息处理方法、装置、电子设备及存储介质 |
CN111857603A (zh) * | 2020-07-31 | 2020-10-30 | 重庆紫光华山智安科技有限公司 | 数据处理方法及相关装置 |
CN114077448A (zh) * | 2020-08-11 | 2022-02-22 | 深圳云天励飞技术股份有限公司 | 数据管理方法及相关设备 |
CN114328018A (zh) * | 2021-12-28 | 2022-04-12 | 阿里巴巴(中国)有限公司 | 快照的创建方法、计算设备及存储介质 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1496510A (zh) * | 2001-03-07 | 2004-05-12 | ���Ĺ��ʹ�˾ | 分布式共享磁盘系统中的磁盘写操作 |
CN1532707A (zh) * | 2003-03-20 | 2004-09-29 | 中国科学院计算技术研究所 | 虚拟化共享式存储设备及方法 |
US20070300034A1 (en) * | 2006-06-27 | 2007-12-27 | Fujitsu Limited | Virtual storage control apparatus |
CN101495970A (zh) * | 2005-06-24 | 2009-07-29 | 信科索尔特公司 | 用于高性能企业数据保护的系统和方法 |
CN102004677A (zh) * | 2010-11-04 | 2011-04-06 | 清华大学 | 海量数据分级存储评测系统 |
US20120259863A1 (en) * | 2011-04-11 | 2012-10-11 | Bodwin James M | Low Level Object Version Tracking Using Non-Volatile Memory Write Generations |
CN102971698A (zh) * | 2012-06-29 | 2013-03-13 | 华为技术有限公司 | 快照数据处理方法及系统、存储系统、快照代理 |
CN103999034A (zh) * | 2011-12-20 | 2014-08-20 | Netapp股份有限公司 | 提供稀疏快照的系统、方法和计算机程序产品 |
US20140281307A1 (en) * | 2013-03-14 | 2014-09-18 | Fusion-Io, Inc. | Handling snapshot information for a storage device |
CN105426483A (zh) * | 2015-11-19 | 2016-03-23 | 华为技术有限公司 | 一种基于分布式系统的文件读取方法及装置 |
CN105808449A (zh) * | 2014-12-31 | 2016-07-27 | 中国电信股份有限公司 | 一种用于虚拟机的虚拟存储映像版本管理方法和系统 |
CN105993013A (zh) * | 2014-12-27 | 2016-10-05 | 华为技术有限公司 | 一种数据处理方法装置及系统 |
CN106909514A (zh) * | 2017-03-01 | 2017-06-30 | 郑州云海信息技术有限公司 | 一种快照盘地址的定位方法及装置 |
CN107203331A (zh) * | 2016-03-17 | 2017-09-26 | 中兴通讯股份有限公司 | 写数据的方法及装置 |
-
2018
- 2018-03-22 CN CN201810241083.1A patent/CN110309100B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1496510A (zh) * | 2001-03-07 | 2004-05-12 | ���Ĺ��ʹ�˾ | 分布式共享磁盘系统中的磁盘写操作 |
CN1532707A (zh) * | 2003-03-20 | 2004-09-29 | 中国科学院计算技术研究所 | 虚拟化共享式存储设备及方法 |
CN101495970A (zh) * | 2005-06-24 | 2009-07-29 | 信科索尔特公司 | 用于高性能企业数据保护的系统和方法 |
US20070300034A1 (en) * | 2006-06-27 | 2007-12-27 | Fujitsu Limited | Virtual storage control apparatus |
CN102004677A (zh) * | 2010-11-04 | 2011-04-06 | 清华大学 | 海量数据分级存储评测系统 |
US20120259863A1 (en) * | 2011-04-11 | 2012-10-11 | Bodwin James M | Low Level Object Version Tracking Using Non-Volatile Memory Write Generations |
CN103999034A (zh) * | 2011-12-20 | 2014-08-20 | Netapp股份有限公司 | 提供稀疏快照的系统、方法和计算机程序产品 |
CN102971698A (zh) * | 2012-06-29 | 2013-03-13 | 华为技术有限公司 | 快照数据处理方法及系统、存储系统、快照代理 |
US20140281307A1 (en) * | 2013-03-14 | 2014-09-18 | Fusion-Io, Inc. | Handling snapshot information for a storage device |
CN105993013A (zh) * | 2014-12-27 | 2016-10-05 | 华为技术有限公司 | 一种数据处理方法装置及系统 |
CN105808449A (zh) * | 2014-12-31 | 2016-07-27 | 中国电信股份有限公司 | 一种用于虚拟机的虚拟存储映像版本管理方法和系统 |
CN105426483A (zh) * | 2015-11-19 | 2016-03-23 | 华为技术有限公司 | 一种基于分布式系统的文件读取方法及装置 |
CN107203331A (zh) * | 2016-03-17 | 2017-09-26 | 中兴通讯股份有限公司 | 写数据的方法及装置 |
CN106909514A (zh) * | 2017-03-01 | 2017-06-30 | 郑州云海信息技术有限公司 | 一种快照盘地址的定位方法及装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111427859A (zh) * | 2020-03-25 | 2020-07-17 | 京东数字科技控股有限公司 | 一种消息处理方法、装置、电子设备及存储介质 |
CN111427859B (zh) * | 2020-03-25 | 2024-04-05 | 京东科技控股股份有限公司 | 一种消息处理方法、装置、电子设备及存储介质 |
CN111857603A (zh) * | 2020-07-31 | 2020-10-30 | 重庆紫光华山智安科技有限公司 | 数据处理方法及相关装置 |
CN114077448A (zh) * | 2020-08-11 | 2022-02-22 | 深圳云天励飞技术股份有限公司 | 数据管理方法及相关设备 |
CN114328018A (zh) * | 2021-12-28 | 2022-04-12 | 阿里巴巴(中国)有限公司 | 快照的创建方法、计算设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110309100B (zh) | 2023-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9589136B2 (en) | Method and device for extracting message format | |
CN111736980B (zh) | 一种内存管理方法及装置 | |
CN106484562B (zh) | 一种数据传输处理方法及终端设备 | |
CN110309100A (zh) | 一种快照对象生成方法和装置 | |
CN108959000A (zh) | 一种服务器压力测试方法、系统及终端 | |
CN105975170B (zh) | 一种页面加载的方法及装置 | |
CN112148579B (zh) | 一种用户界面的测试方法和装置 | |
CN109154946A (zh) | 一种显示收藏对象的方法和终端 | |
WO2019061040A1 (zh) | 一种文件管理方法及装置 | |
CN110069179A (zh) | 图标控制方法及终端设备 | |
CN109074303A (zh) | 一种卡顿检测方法及装置 | |
CN110502163A (zh) | 终端设备的控制方法及终端设备 | |
CN110007835A (zh) | 一种对象管理方法及移动终端 | |
CN111125269A (zh) | 一种数据管理方法、血缘关系显示方法和相关装置 | |
CN110069188A (zh) | 标识显示方法及终端设备 | |
CN104142820B (zh) | 一种动画制作方法、装置和系统 | |
CN104793879B (zh) | 终端设备上的对象选择方法和终端设备 | |
CN110147186A (zh) | 一种应用的控制方法及终端设备 | |
CN103677519A (zh) | 一种收藏多媒体资源的方法、终端及服务器 | |
CN110263077A (zh) | 一种获取移动终端中文件的方法、移动终端及存储介质 | |
CN107533566A (zh) | 对图片的内容进行检索的方法、便携式电子设备和图形用户界面 | |
CN108696642A (zh) | 整理图标的方法和移动终端 | |
CN107770449A (zh) | 连拍方法、电子设备及存储介质 | |
CN110737476B (zh) | 一种终端重启方法及装置 | |
CN107463524A (zh) | 一种访问数据的方法及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |