数据快照的数据结构、相关数据处理方法及装置和系统与流程

文档序号:26838841发布日期:2021-10-08 19:45阅读:45来源:国知局
1.本发明涉及数据快照
技术领域
:,特别涉及一种数据快照的数据结构、相关数据处理方法及装置和系统。
背景技术
::2.快照(snapshot)是保留文件系统在某一时间点的一致数据的镜像。在不同时间点为一个文件系统创建的不同的快照版本,可以形成一条快照版本链。快照数据不会被修改,可保证备份数据过程中的数据一致,而当存储设备发生应用故障或者文件损坏时可以进行快速的数据恢复,将数据回滚恢复某个可用的时间点的状态,所以快照技术广泛用于数据备份和异常故障后恢复。3.现有技术中,快照通常采用写时重定向(redirectonwrite,row)和写时拷贝(copyonwrite,cow)两种方式实现。参照图1所示,采用cow方式写数据时,为只读快照版本分配新的数据资源(本发明实施例中称为新分配数据块)把只读快照版本的数据块中的快照数据拷贝到当前可写快照版本的新分配数据块中,再修改只读快照版本的元数据,最后用新写入数据修改已拷贝到新分配数据块中的快照数据。由此可以看出采用cow方式,需要包含两次写入数据,读写数据量大,严重影响了系统的输入/输出(input/output,io)访问性能。参照图2所示,采用row方式写数据时,为当前可写快照版本分配一个新分配数据块,并把新写入数据拷贝到新分配数据块中,从而保留只读快照版本的数据块中的快照数据不被修改。数据写入时,只包含一次数据修改,读写数据量小,对系统io访问性能影响小,因此现有技术中通常采用row方式进行快照数据处理。在row方式实现快照数据处理时,快照的数据块的分配粒度可配置,比如128kb、1mb,在一些文件系统中设置大的数据块分配粒度,这样可带来一定的好处,比如可降低资源管理的开销,降低文件系统的元数据的数量,从而可以实现把文件系统元数据全部装载到服务器的内部存储器,以优化访问性能,但是大粒度的数据块本身的数据量很大,因此也会影响到系统的io性能。在此基础上进行改进,采用小粒度数据(比如4kb)进行数据写入,为支持快照机制,防止将快照数据块中的原有数据覆盖,在写入小粒度数据时,也需要先读取只读快照版本的数据块中原有的快照数据,再将小粒度数据合并到该原有快照数据中,最后把修改后的大粒度的数据写入新分配数据块中。这种先读取快照版本中原有的快照数据,再进行数据合并的方式,依然存在读写数据量放大的问题,影响系统的io访问性能。技术实现要素:4.鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种数据快照的数据结构、相关数据处理方法及装置和系统。5.作为本发明实施例的第一个方面,本发明实施例提供一种数据快照的数据结构,包括主数据和元数据;6.所述元数据中包括主数据的数据块标识和对应的有效位图;7.所述有效位图中每个比特位对应数据块中的一个子数据块,每个比特位中包括对应子数据块的数据有效性标识。8.作为本发明实施例的第二个方面,本发明实施例提供一种快照创建方法,包括:9.固化当前可写快照版本的主数据的数据块和元数据,作为最新的只读快照版本;10.复制最新的只读快照版本的元数据作为新的可写快照版本的元数据,并修改块引用计数表中主数据的数据块的引用计数;11.所述元数据中包括主数据的数据块标识和对应的有效位图,所述有效位图中每个比特位对应数据块中的一个子数据块,每个比特位中包括对应子数据块的数据有效性标识。12.作为本发明实施例的第三个方面,本发明实施例提供一种快照数据写入方法,包括:13.访问当前可写快照版本的元数据,获取待写入数据的数据块标识和有效位图;所述有效位图中每个比特位对应数据块中的一个子数据块,每个比特位中包括对应子数据块的数据有效性标识;14.根据所述数据块标识和该数据块的引用计数,判断该数据块是否为当前可写快照版本独占数据块;15.若是,将待写入数据写入该数据块的相应子数据块,并修改有效位图中对应子数据块的比特位的有效性标识;16.若否,分配新的数据块,将所述待写入数据写入新分配数据块的相应子数据块,并修改有效位图中对应子数据块的比特位的有效性标识。17.作为本发明实施例的第四个方面,本发明实施例提供一种快照数据读取方法,包括:18.从当前访问的快照版本的元数据中,获取待读取数据的数据块标识和有效位图;所述有效位图中每个比特位对应数据块中的一个子数据块,每个比特位中包括对应子数据块的数据有效性标识;19.根据待读取数据所在子数据块,获取有效位图中对应比特位中的数据有效性标识;20.若为有效标识,从所述数据块标识指示的数据块中对应的子数据块读取数据;21.若为无效数据,根据快照版本链,按照由新到旧的顺序依次回溯在先的快照版本的元数据,直到查找到所述待读取数据对应的有效位图的比特位中为有效标识的快照版本,从该快照版本中获取到的数据块标识指示的数据块中对应的子数据块读取数据。22.作为本发明实施例的第五个方面,本发明实施例提供一种快照删除方法,包括:23.从待删除快照版本的元数据中获取主数据的数据块标识和对应的有效位图;24.判断待删除快照版本与前一个快照版本和后一个快照版本的元数据中主数据的数据块标识是否均不同;25.若是,根据待删除快照版本与后一个快照版本的对应数据块的有效位图中比特位的有效性标识,将待删除快照版本中数据块的有效数据合并到后一个快照版本的对应数据块中,并修改块引用计数表中该数据块的引用计数;26.若否,则只修改块引用计数表中该数据块的引用计数。27.作为本发明实施例的第六个方面,本发明实施例提供一种数据处理方法,包括:28.获取数据快照的元数据中主数据的数据块标识和有效位图,根据主数据的数据块标识和有效位图中的比特位的数据有效性标识,实现上述的快照创建方法、快照数据写入方法、快照数据读取方法和快照删除方法中的至少一个。29.作为本发明实施例的第七个方面,本发明实施例提供一种快照创建装置,包括:30.快照固化模块,用于固化当前可写快照版本的主数据的数据块和元数据,作为最新的只读快照版本;31.可写快照生成模块,用于复制最新的只读快照版本的元数据作为新的可写快照版本的元数据,并修改块引用计数表中主数据的数据块的引用计数;32.所述元数据中包括主数据的数据块标识和对应的有效位图,所述有效位图中每个比特位对应数据块中的一个子数据块,每个比特位的值标识对应子数据块的数据为有效数据或无效数据。33.作为本发明实施例的第八个方面,本发明实施例提供一种快照数据写入装置,包括:34.第一获取模块,用于访问当前可写快照版本的元数据,获取待写入数据的数据块标识和有效位图;所述有效位图中每个比特位对应数据块中的一个子数据块,每个比特位中包括对应子数据块的数据有效性标识;35.数据写入模块,用于根据所述数据块标识和该数据块的引用计数,判断该数据块是否为当前可写快照版本独占数据块;若是,将待写入数据写入该数据块的相应子数据块,并修改有效位图中对应子数据块的比特位的有效性标识;若否,分配新的数据块,将所述待写入数据写入新分配数据块的相应子数据块,并修改有效位图中对应子数据块的比特位的有效性标识。36.作为本发明实施例的第九个方面,本发明实施例提供一种快照数据读取装置,包括:37.第二获取模块,用于从当前访问的快照版本的元数据中,获取待读取数据的数据块标识和有效位图;所述有效位图中每个比特位对应数据块中的一个子数据块,每个比特位中包括对应子数据块的数据有效性标识;38.数据读取模块,用于根据待读取数据所在子数据块,获取有效位图中对应比特位中的数据有效性标识;若为有效标识,从所述数据块标识指示的数据块中对应的子数据块读取数据;若为无效数据,根据快照版本链,按照由新到旧的顺序依次回溯在先的快照版本的元数据,直到查找到所述待读取数据对应的有效位图的比特位中为有效标识的快照版本,从该快照版本中获取到的数据块标识指示的数据块中对应的子数据块读取数据。39.作为本发明实施例的第十个方面,本发明实施例提供一种快照删除装置,包括:40.第三获取模块,用于从待删除快照版本的元数据中获取主数据的数据块标识和对应的有效位图;41.删除及修改模块,用于判断待删除快照版本与前一个快照版本和后一个快照版本的元数据中主数据的数据块标识是否均不同;若是,根据待删除快照版本与后一个快照版本的对应数据块的有效位图中比特位的有效性标识,将待删除快照版本中数据块的有效数据合并到后一个快照版本的对应数据块中,并修改块引用计数表中该数据块的引用计数;若否,则只修改块引用计数表中该数据块的引用计数。42.作为本发明实施例的第十一个方面,本发明实施例提供一种数据快照系统,包括:43.至少一个客户端、至少一个数据资源存储器、以及与至少一个数据资源存储器连接的至少一个服务器;44.所述客户端,用于向所述服务器发送创建快照请求、写入数据请求、读取数据请求和删除快照版本请求中的至少一个;45.所述服务器,用于根据客户端发送的请求,执行创建快照、写入数据、读取数据和删除快照版本中的至少一个;46.所述数据资源存储器,用于存储快照版本链中各快照版本的数据资源。47.作为本发明实施例的第十二个方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机指令,其中,所述指令被处理器执行时能够实现上述的快照创建方法、快照数据写入方法、快照数据读取方法和快照删除方法中的至少一个。48.本发明实施例提供的上述技术方案的有益效果至少包括:49.本发明实施例提供一种数据快照的数据结构、相关数据处理方法及装置和系统,该数据快照的数据结构中,在元数据中设置与主数据的数据块标识对应的有效位图,通过有效位图中的比特位标识对应的子数据块的数据是否为有效数据。这种数据结构可以应用于大粒度数据分配场景下,进行数据快照处理,在创建快照后,当数据写入时,采用小粒度数据写入的方式,仅需要将待写入的小粒度数据重新定向到快照系统的对应数据块的子数据块中,避免了现有技术中row方式中,先读取只读快照版本中的快照数据,进行数据修改后,再写入新分配数据块的读写开销,解决了小粒度数据写入时的数据量放大,并且影响系统的io访问性能的问题。50.同时,在读取数据时,获取元数据中的数据块标识和有效位图,根据数据块标识和有效位图中的对应的比特位的值,确定对应的数据块和数据块中数据为有效数据的子数据块,从而读取数据,在读取数据时不需要读取大粒度数据,避免了数据读取时的io放大开销,数据读取速度快,降低了对访问性能的影响。51.并且,在删除快照版本时,根据元数据中有效位图的比特位的标识,准确的确定对应数据块的子数据块的数据是否为有效数据,在删除快照版本时,保留待删除快照版本的数据块中的有效数据,支持异步数据资源释放,降低了对io访问性能的影响。52.本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。53.下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。附图说明54.附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:55.图1为现有技术中采用cow方式处理快照数据写入的原理示意图;56.图2为现有技术中采用row方式处理快照数据写入的原理示意图;57.图3为本发明实施例提供的一种数据快照系统的结构示意图;58.图4为本发明实施例中提供的块引用计数表的结构示意图;59.图5为本发明实施例提供的创建快照的方法流程示意图;60.图6为本发明实施例提供的图5所示的创建快照的方法的实现原理示意图;61.图7为本发明实施例提供的快照数据写入的方法流程示意图;62.图8为本发明实施例提供的图7所示的快照数据写入的方法的实现原理示意图;63.图9为本发明实施例提供的快照数据读取的方法流程示意图;64.图10为本发明实施例提供的图9所示的快照数据读取的方法的实现原理示意图;65.图11为本发明实施例提供的快照删除的方法流程示意图;66.图12为本发明实施例提供的图11所示的快照删除的方法的实现原理示意图;67.图13为本发明实施例提供的图11所示的快照删除的方法的另一实现原理示意图;68.图14为本发明实施例提供的图11所示的快照删除的方法中删除快照时的数据合并的实现原理示意图;69.图15为本发明实施例提供的一种快照创建装置的结构示意图;70.图16为本发明实施例提供的一种快照数据写入装置的结构示意图;71.图17为本发明实施例提供的一种快照数据读取装置的结构示意图;72.图18为本发明实施例提供的一种快照删除装置的结构示意图。具体实施方式73.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。74.为了解决现有技术中存在的基于大粒度的数据分配,采用小粒度写的row方式进行数据快照处理时,存在的读写数据量放大,影响系统的io访问性能的问题,本发明实施例提供一种数据快照的数据结构、数据处理方法、相关方法及装置和系统,通过在快照数据的元数据中设置主数据的数据块标识和与数据块标识相关联的有效位图,根据有效位图的每个比特位的值标识主数据的数据块的对应子数据块的数据为有效数据或无效数据,在采用row方式对数据快照进行数据读写、删除快照版本时,解决了基于大粒度的数据分配,采用小粒度写时带来的数据读写量大的问题,减少数据快照处理时对系统的io访问性能的影响。下面通过具体的实施例对本发明实施例提供的技术方案进行说明。75.本发明实施例提供一种数据快照的数据结构,包括主数据和元数据;76.所述元数据中包括主数据的数据块标识和对应的有效位图;77.所述有效位图中每个比特位对应数据块中的一个子数据块,每个比特位中包括对应子数据块的数据有效性标识。78.本发明实施例中,主数据包括创建快照前的源数据和创建快照后的快照数据。元数据为描述主数据的数据。通过元数据来表现快照版本中主数据的增量和主数据的映射关系,其中,主数据的数据块标识指示主数据中的数据所存储的数据块,有效位图中的比特位的数据有效性标识用于标识数据块中对应的子数据块是否为有效数据。数据快照的主数据包括一个或多个数据块,每个数据块的粒度大小可以是确定的,例如128kb、1mb等,并且每个数据块中包含的子数据块的数量是确定的,各个子数据块的粒度大小也是确定的,例如将128kb的数据块划分为32个4kb的子数据块。主数据的有效位图中标识有效数据和无效数据的比特位的数据有效性标识的值相反。例如,可以是,标识子数据块的数据为有效数据的比特位的数据有效性标识为有效标识的值为“1”,而标识子数据块的数据为无效数据的比特位的数据有效性标识为无效标识的值为“0”。当然,也可以是反过来,标识子数据块的数据为有效数据的比特位的数据有效性标识为有效标识的值为“0”,而标识子数据块的数据为无效数据的比特位的数据有效性标识为无效标识的值为“1”。为了便于实施例的描述下面的叙述中,我们采用标识子数据块的数据为有效数据的比特位的数据有效性标识为有效标识的值为“1”,而标识子数据块的数据为无效数据的比特位的数据有效性标识为无效标识的值为“0”的方式进行描述。79.本发明实施例提供的数据快照的数据结构可以应用于文件系统服务器、数据库服务器等进行数据处理,下面通过一个具体的数据快照系统的描述进行说明:80.本发明实施例提供一种数据快照系统,参照图3所示,包括:81.至少一个客户端1、至少一个数据资源存储器2、以及与至少一个数据资源存储器2连接的至少一个服务器3;82.所述客户端1,用于向所述服务器3发送创建快照请求、写入数据请求、读取数据请求和删除快照版本请求中的至少一个;83.所述服务器3,用于根据客户端发送的请求,执行创建快照、写入数据、读取数据或删除快照版本;84.所述数据资源存储器2,用于存储快照版本链中各快照版本的数据资源。85.上述客户端2可以是现有技术中的计算机设备,例如台式电脑、笔记本电脑、平板电脑等,本发明实施例中不作限定。86.本发明实施例中的快照版本为代表某一时间点的一个一致数据镜像的快照。87.上述服务器3在接收到客户端的数据处理请求时,执行相应的数据处理过程。基于此本发明实施例提供一种数据处理方法,包括:88.获取数据快照的元数据中主数据的数据块标识和有效位图,根据主数据的数据块标识和有效位图中的比特位的数据有效性标识,进行以下至少一项处理:创建快照、写入数据、读取数据和删除快照版本。89.需要说明的是,本发明实施例提供的数据处理方法中,为了在数据写入时,保留快照版本的数据不被修改,在当前可写快照版本中对被多个快照版本引用的数据块进行写时重定向操作,以及在删除快照版本时,为保证释放数据块的数据时,不会将还被其他快照版本引用的数据删除,都需要高效的判断一个数据块是否被多个不同的快照版本所引用的方式,也就是说,需要单独记录各个数据块的引用计数。基于此本发明实施例中,通过预设一个块引用计数表来记录各个数据块的被引用的次数,参照图4所示,在预设的块引用计数表中,可以采用阿拉伯数字(1、2、3……)或其他类型的数据标识数据块的数据块号blkno。如果某一blkno对应的引用计数为0,表示该blkno对应的数据块没有被使用,即该数据块为空闲的数据块;如果某一blkno对应的引用计数为1,表示该blkno对应的数据块被一个快照版本所引用;如果某一blkno对应的引用计数大于等于1,表示该blkno对应的数据块被两个或两个以上的快照版本所引用。当然也可以采用现有技术中的其他方式记录各个数据块的引用计数,对此本发明实施例中不作严格限定。90.上述数据处理方法中,参照图5所示,当服务器接收到客户端发送的创建快照请求时,执行创建快照的方法的步骤,包括:91.s101:固化当前可写快照版本的主数据和元数据,作为最新的只读快照版本;92.s102:复制最新的只读快照版本的元数据作为新的可写快照版本的元数据,并修改块引用计数表中主数据的数据块的引用计数;93.所述元数据中包括主数据的数据块标识和对应的有效位图,所述有效位图中每个比特位对应数据块中的一个子数据块,每个比特位中包括对应子数据块的数据有效性标识。94.本发明实施例中,在创建快照时,因为最新的只读快照版本和新的可写快照版本共享相同的数据块,因此需要将块引用计数表中的这部分共享的数据块的引用计数进行修改。95.参照图6所示,以创建快照snap102为例,在执行快照创建时,首先执行步骤s101,固化当前可写快照版本rw的主数据和元数据,作为最新的只读快照snap102;接着执行步骤s102,复制快照snap102的元数据,作为新的可写快照版本rw的元数据。快照snap102创建完成后,快照snap102和新的可写快照版本rw的数据是共享的,因此不必拷贝主数据,但是需要将块引用计数表中的两个版本共同引用的数据块的引用计数值加1,由于主数据的数据块至少被这两个快照版本所引用,所以对应数据块的引用计数的值一定大于等于2。96.上述数据处理方法中,参照图7所示,当服务器接收到客户端发送的写入数据请求时,执行快照数据写入的方法的步骤,包括:97.s201:访问当前可写快照版本的元数据,获取待写入数据的数据块标识和有效位图;所述有效位图中每个比特位对应数据块中的一个子数据块,每个比特位中包括对应子数据块的数据有效性标识;98.s202:根据所述数据块标识和该数据块的引用计数,判断该数据块是否为当前可写快照版本独占数据块,若是,执行步骤s203,若否,执行步骤s204:99.s203:将待写入数据写入该数据块的相应子数据块,并修改有效位图中对应子数据块的比特位的有效性标识;100.s204:分配新的数据块,将所述待写入数据写入新分配数据块的相应子数据块,并修改有效位图中对应子数据块的比特位的有效性标识。101.在一个具体实施例中,上述步骤s202中根据所述数据块标识和该数据块的引用计数,判断该数据块是否为当前可写快照版本独占数据块,包括:102.根据所述数据块标识,获取对应数据块在块引用计数表中的引用计数的值,判断所述引用计数的值是否大于1;103.若是,确定该数据块非当前可写快照版本独占数据块;104.若否,确定该数据块为当前可写快照版本独占数据块。105.例如,可以是,服务器在执行写入数据的操作时,首先访问当前可写快照版本rw的元数据,获取待写入数据的数据块标识和有效位图;然后根据该数据块标识,获取该数据块在块引用计数表中的引用计数的值,若引用计数的值为1,表示该数据块为当前可写版本rw独占数据块,可以直接安全的修改该数据块,即将待写入数据写入该数据块的相应子数据块,同时设置有效位图中该子数据块的别为的有效性标识为有效标识;若引用计数的值大于1,表示该数据块中的数据与快照版本链中的在先的只读快照版本共享数据,也就是说该数据块非当前可写版本独占数据块,因此,为待写入数据分配新的数据块(所分配的新的数据块在本发明实施例中可以称作新分配数据块),进行写时重定向操作,将待写入数据写入新分配数据块的相应子数据块,以保留快照版本的数据不被修改,同时设置有效位图中该子数据块的比特位的有效性标识为有效标识,即将该比特位的值设置为“1”。比如,参照图8所示,假设该数据块号z指示一个当前可写快照版本独占数据块,该数据块的大小为128kb,每个子数据块的粒度为4kb,采用小粒度写入数据的方式将4kb的数据写入数据块z的第2个子数据块,此时就应当把元数据中该数据块号z对应的有效位图中的第2个比特位的值设置为“1”,标识该比特位对应的子数据块中的数据为有效数据。106.上述数据处理方法中,参照图9所示,当服务器接收到客户端发送的读取数据请求时,执行快照数据读取的方法的步骤,包括:107.s301:从当前访问的快照版本的元数据中,获取待读取数据的数据块标识和有效位图;所述有效位图中每个比特位对应数据块中的一个子数据块,每个比特位中包括对应子数据块的数据有效性标识;108.s302:根据待读取数据所在子数据块,获取有效位图中对应比特位中的数据有效性标识,判断该有效性标识是否为有效标识,若是,执行步骤s303,若否,执行步骤s304:109.s303:从所述数据块标识指示的数据块中对应的子数据块读取数据;110.s304:根据快照版本链,按照由新到旧的顺序依次回溯在先的快照版本的元数据,直到查找到所述待读取数据对应的有效位图的比特位中为有效标识的快照版本,该快照版本中获取到的数据块标识指示的数据块中对应的子数据块读取数据。111.例如,可以是,服务器在执行读取数据的操作时,首先访问待读取数据请求获取数据的快照版本,从当前访问的快照版本的元数据中,获取待读取数据的数据块标识和有效位图;然后根据待读取数据所在子数据块,获取有效位图中对应比特位中的数据有效性标识;若该比特位中的数据有效性标识为有效标识,即该比特位的值为“1”,从所述数据块标识指示的数据块中对应的子数据块的位置读取数据;否则,若该比特位中的数据有效性标识为无效标识,即该比特位的值为为“0”,就需要在快照版本链中按照由新到旧的顺序依次回溯在先快照版本,访问回溯到的在先快照版本,从该快照版本的元数据中,获取待读取数据的数据块标识和有效位图,直到获取到待读取数据对应的有效位图的比特位中为有效标识的快照版本,即该比特位的值为“1”的快照版本,然后该快照版本中数据块标识指示的数据块中对应的子数据块的位置读取数据。112.参照图10所示,若要访问快照snap102的第2个和第3个小粒度数据时,从元数据中获取到第2个小粒度数据对应的数据块号y和有效位图中的对应比特位中的数据有效性标识,该比特位的值为“1”,表示该数据块号y指示的数据块的第2个子数据块中的小粒度数据为有效数据,则直接从该子数据块的位置读取数据;从元数据中获取3个小粒度数据对应的数据块号y和有效位图中的对应比特位中的数据有效性标识,该比特位的值为“0”,表示该数据块号y指示的数据块的第3个子数据块中的小粒度数据为无效数据,那么就回溯快照snap102的前一个快照snap101,访问快照snap101,从快照sanp101的元数据中获取第3个小粒度数据对应的数据块号x和有效位图中的对应比特位中的数据有效性标识,该比特位的值为“1”,表示该数据块号x指示的数据块的第3个子数据块中的小粒度数据为有效数据,则从数据块号x指示的数据块的第3个子数据块的位置读取数据。113.上述数据处理方法中,参照图11所示,当服务器接收到客户端发送的删除快照版本请求时,执行快照删除的方法的步骤,包括:114.s401:从待删除快照版本的元数据中获取主数据的数据块标识和对应的有效位图;115.s402:判断待删除快照版本与前一个快照版本和后一个快照版本的元数据中主数据的数据块标识是否均不同,若是,执行步骤s403,若否,执行步骤s404:116.s403:根据待删除快照版本与后一个快照版本的对应数据块的有效位图中比特位的有效性标识,将待删除快照版本中数据块的有效数据合并到后一个快照版本的对应数据块中,并修改块引用计数表中该数据块的引用计数;117.s404:修改块引用计数表中该数据块的引用计数。118.在一个具体实施例中,上述步骤s402中判断待删除快照版本与前一个快照版本和后一个快照版本的元数据中主数据的数据块标识是否均不同,包括:119.根据快照版本链,判断待删除快照版本是否具有在先的快照版本,若是,则将待删除快照版本的元数据中主数据的数据块标识分别与前一个快照版本和后一个快照版本的元数据中主数据的数据块标识进行比较,确定是否均不相同;120.若否,则将待删除快照版本的元数据中主数据的数据块标识与后一个快照版本的元数据中主数据的数据块标识进行比较,确定是否不相同。121.在一个具体实施例中,上述步骤s403中根据待删除快照版本与后一个快照版本的对应数据块的有效位图中比特位的有效性标识,将待删除快照版本中数据块的有效数据合并到后一个快照版本的对应数据块中,包括:122.根据待删除快照版本与后一个快照版本的对应数据块的有效位图中比特位的有效性标识,确定待删除快照版本的数据块中与后一个快照版本共享数据的子数据块的数量是否大于等于后一个快照版本的对应数据块中子数据块的数据为有效数据的子数据块的数量:123.若是,将待删除快照版本的数据块中与后一个快照版本共享数据的子数据块的有效数据复制到后一个快照版本的对应数据块的对应子数据块中,并修改后一个快照版本的元数据的有效位图中对应子数据块的比特位的有效性标识;124.若否,将后一个快照版本的对应数据块中子数据块的有效数据复制到待删除快照的数据块的对应子数据块,将后一个快照版本中的对应的数据块替换为待删除快照的数据块,并将快照版本链中待删除快照的在后的快照版本的元数据中的数据块标识和有效位图,替换为待删除快照的元数据中该数据块的数据块标识和有效位图。125.在一个具体实施例中,上述根据待删除快照版本与后一个快照版本的对应数据块的有效位图中比特位的有效性标识,确定待删除快照版本的数据块中与后一个快照版本共享数据的子数据块的数量是否大于等于后一个快照版本的对应数据块中数据为有效数据的子数据块的数量,包括:126.判断后一个快照版本的对应数据块的有效位图中每个比特位的有效性标识是否为有效标识;127.若是,确定后一个快照版本中该比特位对应的子数据块的数据为有效数据;128.若否,判断待删除快照版本的数据块的有效位图中对应比特位的有效性标识是否为有效标识,若是,确定待删除快照版本中该比特位对应的子数据块与后一个快照版本共享数据;129.统计得到后一个快照版本的对应数据块中数据为有效数据的子数据块的数量,以及待删除快照版本的数据块中与后一个快照版本共享数据的子数据块的数量,并比较得到的两个数量的大小。130.本发明实施例中,在进行快照删除时,需释放待删除快照版本所独占的数据的存储资源(下称数据资源),为了尽量不影响系统的io访问性能,在数据资源释放时可在后台异步进行。具体实现的方式可能但不限于下述数据资源释放的方式:131.从待删除快照版本的元数据中获取主数据的数据块标识和对应的有效位图;132.将待删除快照版本的元数据中主数据的数据块标识与快照版本链中待删除快照版本的前一个快照版本的元数据中对应主数据的数据块标识进行比较;如果快照版本链中存在待删除快照版本的前一个快照版本,并且两个快照版本中对应的数据块标识相同,则只需要在块引用计数表ref_table中对该数据块标识指示的数据块的引用计数减1;若不存在待删除快照版本的前一个快照版本或者两个快照版本中对应的数据块标识不同,则执行后续步骤;133.将待删除快照版本的元数据中主数据的数据块标识与快照版本链中待删除快照版本的前一个快照版本的元数据中对应主数据的数据块标识进行比较;若待删除快照版本和后一个快照版本中对应数据块标识相同,则表示后一个快照版本未修改过该数据块标识指示的数据块中的数据,那么只需要在块引用计数表ref_table中对该数据块标识指示的数据块的引用计数减1。若待删除快照版本和后一个快照版本中对应数据块标识不同,则表示后一个快照版本已经修改了待删除快照版本的数据块标识指示的数据块中的数据,则继续执行后续步骤;134.将待删除快照版本中数据块的有效位图与后一个快照版本中对应数据块的有效位图进行比较;[0135][0136]表1[0137]参照表1所示,若待删除快照版本中有效位图的比特位的数据有效性标识为有效标识,即该比特位的值为“1”,而后一个快照版本中有效位图的对应比特位的数据有效性标识为无效标识,即该对应比特位的值为“0”,则表示后一个快照版本未修改过待删除快照版本中该比特位对应的子数据块中的数据,也就说后一个快照版本还依赖于待删除快照版本中该比特位对应的子数据块中的数据,即待删除快照版本与后一个快照版本共享该子数据块的数据,因此,在删除快照版本时,需要将待删除快照版本中该子数据块的数据合并到后一个快照版本的对应数据块的子数据块中;若待删除快照版本中有效位图的比特位的数据有效性标识为有效标识,即该比特位的值为“1”,而后一个快照版本中有效位图的对应比特位的数据有效性标识也为有效标识,即该对应比特位的值为“1”,则表示后一个快照版本已经修改过待删除快照版本中该比特位对应的子数据块中的数据,因此,在删除快照版本时,不需要将待删除快照版本中该子数据块的数据合并到后一个快照版本的对应数据块的子数据块中;若待删除快照版本中有效位图的比特位的数据有效性标识为无效标识,即该比特位的值为“0”,而后一个快照版本中有效位图的对应比特位的数据有效性标识为有效标识,即该对应比特位的值为“1”,则表示后一个快照版本已经修改过待删除快照版本中该比特位对应的子数据块中的数据,因此在删除快照版本时,不需要对待删除快照版本中该子数据块执行任何操作;若待删除快照版本中有效位图的比特位的数据有效性标识为无效效标识,即该比特位的值为“0”,而后一个快照版本中有效位图的对应比特位的数据有效性标识也为无效标识,即该对应比特位的值为“1”,则表示待删除快照版本和后一个快照版本都没有修改过待删除快照版本中该比特位对应的子数据块中的数据,因此在删除快照版本时,不需要对待删除快照版本中该子数据块执行任何操作;[0138]将待删除快照版本中数据块的有效位图与后一个快照版本中对应数据块的有效位图中的对应比特位进行比较,并对数据块中个子数据块的数据合并完成,即可释放待删除快照版本中该数据块号指示的数据块的数据资源,并将块引用计数表中该数据块的引用计数修改为“0”。[0139]参照图12所示,以待删除快照版本为快照sanp101为例,从快照sanp101的元数据中获取数据块号x和有效位图;将快照snap101的数据块号与前一个快照版本snap100的对应的数据块号x进行比较,由于两个快照版本的数据块号相同,那么只需要在块引用计数表ref_table中对该数据块x的数据块的引用计数减1即可,而不需要释放该数据块号指示的数据块的数据资源。[0140]参照图13所示,以待删除快照版本为快照sanp101为例,从快照sanp101的元数据中获取数据块号x和有效位图;将快照snap101的数据块号与前一个快照版本snap100的对应的数据块号z进行比较,由于两个快照版本的数据块号不同,则需要对快照snap101的数据块号与后一个快照版本snap102的对应的数据块号y进行比较,由于两个快照版本的数据块号不同,则需要对待删除快照版本中数据块的有效位图与后一个快照版本中对应数据块的有效位图进行比较,根据表1,由于快照snap101的第三个比特位的值为“1”,而快照snap102的第三个比特位的值为“0”,则表示快照snap102未修改过快照snap101中第三个比特位对应的子数据块中的数据,因此,需要将快照snap101中数据块号x的指示的数据块的第三个子数据块的数据复制到快照snap102中数据块号y指示的数据块y的第三个子数据块中,由于对数据块y的第三个子数据块的数据进行了修改,因此,还需要将快照snap102中有效位图的第三个比特位的值由“0”修改为“1”,以标识该比特位对应的子数据块的数据为有效数据。对于数据块号x的其他子数据块的数据则不需要执行任何操作,释放数据块号x指示的数据块的数据资源即可。[0141]本发明实施例中,在快照的数据资源释放时,当后一个快照版本的数据还依赖于待删除快照版本的有效数据时,即待删除快照版本与后一个快照版本共享数据时,则需要把待删除快照版本中与后一个快照版本共享的有效数据合并到后一个快照版本中。在需要合并的共享数据较少的情况下,则可以直接将共享数据合并到后一个快照版本的对应子数据块中。但是如果共享数据较多时,直接将共享数据复制到后一个快照版本中,数据复制量很大,数据合并的速度和效率就会降低。为减少数据复制量,本发明实施例的发明人提出一种新的数据合并方式,首先把后一个快照版本的有效数据合并到待删除快照版本的对应数据块中,然后将后一个快照版本中的对应的数据块替换为待删除快照的数据块。下面对删除快照时的该数据合并的方式进行详细说明。[0142]将待删除快照版本中数据块的有效位图与后一个快照版本中对应数据块的有效位图进行比较,根据上述表一的描述,如果后一个快照版本validbitmap位为0,被删除快照validbitmap位为1,表示被删除快照的有效数据被后一个快照版本共享,待删除快照版本与后一个快照版本共享该子数据块的数据,统计待删除快照版本的数据块中与后一个快照版本共享数据的子数据块的数量,记录为share_cnt;如果后一个快照版本validbitmap位为1,表示后一个快照版本已经修改过待删除快照版本中该比特位对应的子数据块中的数据,即该数据为后一个快照版本中的有效数据,统计后一个快照版本的对应数据块中数据为有效数据的子数据块的数量,记录为modify_cnt。[0143]如果modify_cnt大于或等于share_cnt,则将待删除快照版本的数据块中与后一个快照版本共享数据的子数据块的有效数据复制到后一个快照版本的对应数据块的对应子数据块中,并修改后一个快照版本的元数据的有效位图中对应子数据块的比特位的有效性标识;[0144]如果modify_cnt小于share_cnt,则将后一个快照版本的对应数据块中子数据块的有效数据复制到待删除快照的数据块的对应子数据块,将后一个快照版本中的对应的数据块替换为待删除快照的数据块,并且需要遍历快照版本链中该后一个快照版本之后的所有在后快照版本,将快照版本链中所有待删除快照版本的在后快照版本的元数据中的被替换数据块对应的数据块标识和有效位图,替换为待删除快照的数据块对应的数据块标识和有效位图。[0145]根据上述描述,参照图14所示,以待删除快照版本为快照sanp101为例,从快照sanp101的元数据中获取数据块号x和有效位图;将快照snap101的数据块号与前一个快照版本snap100的对应的数据块号w进行比较,由于两个快照版本的数据块号不同,则需要对快照snap101的数据块号与后一个快照版本snap102的对应的数据块号y进行比较,由于两个快照版本的数据块号不同,则需要对待删除快照版本中数据块的有效位图与后一个快照版本中对应数据块的有效位图进行比较,通过上述方法统计得到,待删除快照版本的数据块中与后一个快照版本共享数据的子数据块的数量share_cnt,以及后一个快照版本的对应数据块中数据为有效数据的子数据块的数量modify_cnt,可以看出待删除快照版本的数据块中与后一个快照版本共享数据的子数据块的数量大于后一个快照版本的对应数据块中数据为有效数据的子数据块的数量,因此,需要用快照snap102中数据块号y的指示的数据块的第二个子数据块的数据覆盖快照snap101中数据块号x指示的数据块的第二个子数据块中,以及将快照snap102中数据块号y的指示的数据块的第四个子数据块的数据复制到快照snap101中数据块号x指示的数据块的第四个子数据块中,由于快照snap101中有效位图的第四个比特位的值为“0”,因此在将数据复制后,还需要将有效位图的第四个比特位的值由“0”修改为“1”,以标识该比特位对应的子数据块的数据为有效数据。最后早数据合并之后,将快照snap102和快照snap103的元数据中的数据块号y和对应的有效位图替换为快照snap101的数据块号x和对应的修改后的有效位图。由此,降低了快照删除过程中的数据复制量。[0146]基于同一发明构思,本发明实施例还提供了一种快照创建装置、快照中写入数据的装置、快照中读取数据的装置、快照中删除快照版本的装置和一种计算机可读存储介质,由于这些装置和计算机可读存储介质所解决问题的原理与前述相关数据处理方法相似,因此该装置及计算机可读存储介质的实施可以参见前述方法的实施,重复之处不再赘述。[0147]本发明实施例提供一种快照创建装置,参照图15所示,包括:[0148]快照固化模块101,用于固化当前可写快照版本的主数据的数据块和元数据,作为最新的只读快照版本;[0149]可写快照生成模块102,用于复制最新的只读快照版本的元数据作为新的可写快照版本的元数据,并修改块引用计数表中主数据的数据块的引用计数;[0150]所述元数据中包括主数据的数据块标识和对应的有效位图,所述有效位图中每个比特位对应数据块中的一个子数据块,每个比特位的值标识对应子数据块的数据为有效数据或无效数据。[0151]本发明实施例提供一种快照数据写入装置,参照图16所示,包括:[0152]第一获取模块201,用于访问当前可写快照版本的元数据,获取待写入数据的数据块标识和有效位图;所述有效位图中每个比特位对应数据块中的一个子数据块,每个比特位中包括对应子数据块的数据有效性标识;[0153]数据写入模块202,用于根据所述数据块标识和该数据块的引用计数,判断该数据块是否为当前可写快照版本独占数据块;若是,将待写入数据写入该数据块的相应子数据块,并修改有效位图中对应子数据块的比特位的有效性标识;若否,分配新的数据块,将所述待写入数据写入新分配数据块的相应子数据块,并修改有效位图中对应子数据块的比特位的有效性标识。[0154]在一个具体实施例中,所述数据写入模块202,具体用于根据所述数据块标识,获取对应数据块在块引用计数表中的引用计数的值,判断所述引用计数的值是否大于1;[0155]若否,确定该数据块为当前可写快照版本独占数据块。[0156]本发明实施例提供一种快照数据读取装置,参照图17所示,包括:[0157]第二获取模块301,用于从当前访问的快照版本的元数据中,获取待读取数据的数据块标识和有效位图;所述有效位图中每个比特位对应数据块中的一个子数据块,每个比特位中包括对应子数据块的数据有效性标识;[0158]数据读取模块302,用于根据待读取数据所在子数据块,获取有效位图中对应比特位中的数据有效性标识;若为有效标识,从所述数据块标识指示的数据块中对应的子数据块读取数据;若为无效数据,根据快照版本链,按照由新到旧的顺序依次回溯在先的快照版本的元数据,直到查找到所述待读取数据对应的有效位图的比特位中为有效标识的快照版本,从该快照版本中获取到的数据块标识指示的数据块中对应的子数据块读取数据。[0159]本发明实施例提供一种快照删除装置,参照图18所示,包括:[0160]第三获取模块401,用于从待删除快照版本的元数据中获取主数据的数据块标识和对应的有效位图;[0161]删除及修改模块402,用于判断待删除快照版本与前一个快照版本和后一个快照版本的元数据中主数据的数据块标识是否均不同;若是,根据待删除快照版本与后一个快照版本的对应数据块的有效位图中比特位的有效性标识,将待删除快照版本中数据块的有效数据合并到后一个快照版本的对应数据块中,并修改块引用计数表中该数据块的引用计数;若否,则只修改块引用计数表中该数据块的引用计数。[0162]在一个具体实施例中,所述删除及修改模块402,具体用于根据快照版本链,判断待删除快照版本是否具有在先的快照版本,若是,则将待删除快照版本的元数据中主数据的数据块标识分别与前一个快照版本和后一个快照版本的元数据中主数据的数据块标识进行比较,确定是否均不相同;[0163]若否,则将待删除快照版本的元数据中主数据的数据块标识与后一个快照版本的元数据中主数据的数据块标识进行比较,确定是否不相同。[0164]在一个具体实施例中,所述删除及修改模块402,用于根据待删除快照版本与后一个快照版本的对应数据块的有效位图中比特位的有效性标识,将待删除快照版本中数据块的有效数据合并到后一个快照版本的对应数据块中,具体包括:[0165]根据待删除快照版本与后一个快照版本的对应数据块的有效位图中比特位的有效性标识,确定待删除快照版本的数据块中与后一个快照版本共享数据的子数据块的数量是否大于等于后一个快照版本的对应数据块中子数据块的数据为有效数据的子数据块的数量:[0166]若是,将待删除快照版本的数据块中与后一个快照版本共享数据的子数据块的有效数据复制到后一个快照版本的对应数据块的对应子数据块中,并修改后一个快照版本的元数据的有效位图中对应子数据块的比特位的有效性标识;[0167]若否,将后一个快照版本的对应数据块中子数据块的有效数据复制到待删除快照的数据块的对应子数据块,将后一个快照版本中的对应的数据块替换为待删除快照的数据块,并将快照版本链中待删除快照的在后的快照版本的元数据中的数据块标识和有效位图,替换为待删除快照的元数据中该数据块的数据块标识和有效位图。[0168]在一个具体实施例中,所述删除及修改模块402,具体用于判断后一个快照版本的对应数据块的有效位图中每个比特位的有效性标识是否为有效标识;[0169]若是,确定后一个快照版本中该比特位对应的子数据块的数据为有效数据;[0170]若否,判断待删除快照版本的数据块的有效位图中对应比特位的有效性标识是否为有效标识,若是,确定待删除快照版本中该比特位对应的子数据块与后一个快照版本共享数据;[0171]统计得到后一个快照版本的对应数据块中数据为有效数据的子数据块的数量,以及待删除快照版本的数据块中与后一个快照版本共享数据的子数据块的数量,并比较得到的两个数量的大小。[0172]本发明实施例提供一种计算机可读存储介质,其上存储有计算机指令,其中,所述指令被处理器执行时能够实现上述的快照创建方法、快照数据写入方法、快照数据读取方法和快照删除方法中的至少一个。[0173]关于上述实施例中的方法,其中各个步骤执行操作的具体过程已经在系统实施例的相关部分中进行了详细描述,此处将不做详细阐述说明。[0174]本发明实施例的上述数据快照的数据结构、相关数据处理方法及装置和系统,该数据快照的数据结构中,在元数据中设置与主数据的数据块标识对应的有效位图,通过有效位图中的比特位标识对应的子数据块的数据是否为有效数据。这种数据结构可以应用于大粒度数据分配场景下,进行数据快照处理,在创建快照后,当数据写入时,采用小粒度数据写入的方式,仅需要将待写入的小粒度数据重新定向到快照系统的对应数据块的子数据块中,避免了现有技术中row方式中,先读取只读快照版本中的快照数据,进行数据修改后,再写入新分配数据块的读写开销,解决了小粒度数据写入时的数据量放大,并且影响系统的io访问性能的问题。[0175]同时,在读取数据时,获取元数据中的数据块标识和有效位图,根据数据块标识和有效位图中的对应的比特位的值,确定对应的数据块和数据块中数据为有效数据的子数据块,从而读取数据,在读取数据时不需要读取大粒度数据,避免了数据读取时的io放大开销,数据读取速度快,降低了对访问性能的影响。[0176]并且,在删除快照版本时,根据元数据中有效位图的比特位的标识,准确的确定对应数据块的子数据块的数据是否为有效数据,在删除快照版本时,保留待删除快照版本的数据块中的有效数据,支持异步数据资源释放,降低了对io访问性能的影响。[0177]除非另外具体陈述,术语比如处理、计算、运算、确定、显示等等可以指一个或更多个处理或者计算系统、或类似设备的动作和/或过程,所述动作和/或过程将表示为处理系统的寄存器或存储器内的物理(如电子)量的数据操作和转换成为类似地表示为处理系统的存储器、寄存器或者其他此类信息存储、发射或者显示设备内的物理量的其他数据。信息和信号可以使用多种不同的技术和方法中的任何一种来表示。例如,在贯穿上面的描述中提及的数据、指令、命令、信息、信号、比特、符号和码片可以用电压、电流、电磁波、磁场或粒子、光场或粒子或者其任意组合来表示。[0178]应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本公开的保护范围的情况下得到重新安排。所附的方法权利要求以示例性的顺序给出了各种步骤的要素,并且不是要限于所述的特定顺序或层次。[0179]在上述的详细描述中,各种特征一起组合在单个的实施方案中,以简化本公开。不应该将这种公开方法解释为反映了这样的意图,即,所要求保护的主题的实施方案需要清楚地在每个权利要求中所陈述的特征更多的特征。相反,如所附的权利要求书所反映的那样,本发明处于比所公开的单个实施方案的全部特征少的状态。因此,所附的权利要求书特此清楚地被并入详细描述中,其中每项权利要求独自作为本发明单独的优选实施方案。[0180]本领域技术人员还应当理解,结合本文的实施例描述的各种说明性的逻辑框、模块、电路和算法步骤均可以实现成电子硬件、计算机软件或其组合。为了清楚地说明硬件和软件之间的可交换性,上面对各种说明性的部件、框、模块、电路和步骤均围绕其功能进行了一般地描述。至于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个系统所施加的设计约束条件。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为背离本公开的保护范围。[0181]结合本文的实施例所描述的方法或者算法的步骤可直接体现为硬件、由处理器执行的软件模块或其组合。软件模块可以位于ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、移动磁盘、cd-rom或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质连接至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。该asic可以位于用户终端中。当然,处理器和存储介质也可以作为分立组件存在于用户终端中。[0182]对于软件实现,本技术中描述的技术可用执行本技术所述功能的模块(例如,过程、函数等)来实现。这些软件代码可以存储在存储器单元并由处理器执行。存储器单元可以实现在处理器内,也可以实现在处理器外,在后一种情况下,它经由各种手段以通信方式耦合到处理器,这些都是本领域中所公知的。[0183]上文的描述包括一个或多个实施例的举例。当然,为了描述上述实施例而描述部件或方法的所有可能的结合是不可能的,但是本领域普通技术人员应该认识到,各个实施例可以做进一步的组合和排列。因此,本文中描述的实施例旨在涵盖落入所附权利要求书的保护范围内的所有这样的改变、修改和变型。此外,就说明书或权利要求书中使用的术语“包含”,该词的涵盖方式类似于术语“包括”,就如同“包括,”在权利要求中用作衔接词所解释的那样。此外,使用在权利要求书和说明书中的任何一个术语“或者”是要表示“非排它性的或者”。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1