CN110018990B - 一种缓存快照、读取快照的方法和装置 - Google Patents
一种缓存快照、读取快照的方法和装置 Download PDFInfo
- Publication number
- CN110018990B CN110018990B CN201711217569.3A CN201711217569A CN110018990B CN 110018990 B CN110018990 B CN 110018990B CN 201711217569 A CN201711217569 A CN 201711217569A CN 110018990 B CN110018990 B CN 110018990B
- Authority
- CN
- China
- Prior art keywords
- snapshot
- data block
- fingerprint
- data
- data blocks
- 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.)
- Active
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/14—Details of searching files based on file metadata
- G06F16/148—File search processing
- G06F16/152—File search processing using file content signatures, e.g. hash values
-
- 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/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种缓存快照、读取快照的方法和装置,通过指纹查找确定第一快照切分得到的多个第一数据块中的未缓存数据块和已缓存数据块;将未缓存数据块存储到快照缓存中,将未缓存数据块的指纹和存储位置信息添加到指纹索引结构中,并从指纹索引结构中获取已缓存数据块的存储位置信息;将所述第一快照的元数据存储到所述快照缓存中,所述元数据中包括所述多个第一数据块的存储位置信息。读取第一快照时,从第一快照的元数据中获取对多个第一数据块的存储位置信息,从所述快照缓存中读取所述第一数据块。本申请还提供了相应的装置。本申请只存储缓存中没有的数据块,可实现不同快照共享相同的数据块,节约大量的存储空间。
Description
技术领域
本申请涉及但不局限于计算机技术,更具体地,涉及一种缓存快照、读取快照的方法和装置。
背景技术
在存储计算分离的云计算架构中,计算集群提供虚拟机资源,块设备存储集群负责提供块设备的存储资源,最常见的块设备是磁盘。磁盘快照(Snapshot)是针对整个磁盘卷册进行的档案系统备份。快照中心(snapshot center)负责存储和管理磁盘快照,本申请中将磁盘快照简称为快照(snapshot)。快照被分成相同大小的数据块(block),每个数据块都能独立于其它数据块而读写,并作为延迟加载(lazyload)的单元。延迟加载指虚拟机启动,需要读写某个数据块时,如果该数据块还没有被加载,则虚拟机需要从快照中心相应的快照读取该数据块并写入磁盘中,这样磁盘的数据从一个快照上加载,无需加载完成,虚拟机就可以运行。
在当今的互联网应用中,业务流量波动非常剧烈,当这些应用运行在云计算平台上时,对虚拟机的需求数量变化非常大,当业务高峰到来的时候,需要在短时间内启动大批量的虚拟机,快照中心的压力非常大,延迟加载的速度不能满足要求。
相关技术中,为了减少大批量启动虚拟机时,延迟加载对快照中心的压力,在块设备存储集群中建立快照缓存(snapshot cache),如图1所示。快照缓存一般采用高速磁盘,相对快照中心具有更快的读写速度,使用频繁的快照将会被加入快照缓存。有了快照缓存以后,对于存储在快照缓存中的快照,可以从快照缓存中直接读取,而不需要从快照中心读取。这样可以缓解快照中心的压力,加快虚拟机延迟加载的速度。
在公有云平台上,除了平台提供的大量快照,用户也可以自己制作大量的自定义快照,从而导致平台上会存在巨量的磁盘快照,对快照缓存构成巨大的空间存储压力。快照缓存可以存储的快照的数量有限,对于未被缓存的快照,无法通过快照缓存加快虚拟机延迟加载的速度。
发明内容
本发明实施例提供了一种缓存快照的方法,包括:
在指纹索引结构中查找第一快照切分得到的多个第一数据块的指纹,将未查找到指纹的第一数据块确定为未缓存数据块,将查找到指纹的第一数据块确定为已缓存数据块;
将所述未缓存数据块存储到快照缓存中,将所述未缓存数据块的指纹和存储位置信息添加到所述指纹索引结构中;并从所述指纹索引结构中获取所述已缓存数据块的存储位置信息;
将所述第一快照的元数据存储到所述快照缓存中,所述元数据中包括所述多个第一数据块的存储位置信息。
本发明实施例还提供了一种缓存快照的装置,包括:
指纹查找模块,用于在指纹索引结构中查找第一快照切分得到的多个第一数据块的指纹,将未查找到指纹的第一数据块确定为未缓存数据块,将查找到指纹的第一数据块确定为已缓存数据块;
第一缓存模块,用于将所述未缓存数据块存储到快照缓存中,将所述未缓存数据块的指纹和存储位置信息添加到所述指纹索引结构中;并从所述指纹索引结构中获取所述已缓存数据块的存储位置信息;
第二缓存模块,用于将所述第一快照的元数据存储到所述快照缓存中,所述元数据中包括所述多个第一数据块的存储位置信息。
本发明实施例还提供了一种缓存快照的装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请缓存快照的方法的处理。
上述实施例方案在缓存快照时,通过指纹对比,只存储缓存中没有的数据块,可实现不同快照共享相同的数据块,节约大量的存储空间。
本发明实施例提供了一种读取快照的方法,包括:
从快照缓存中存储的第一快照的元数据中,获取对所述第一快照切分得到的多个第一数据块的存储位置信息;
至少根据所述多个第一数据块的存储位置信息从所述快照缓存中读取所述第一数据块。
本发明实施例还提供了一种读取快照的装置,包括;
信息获取模块,用于从快照缓存中存储的第一快照的元数据中,获取对所述第一快照切分得到的多个第一数据块的存储位置信息;
数据读取模块,用于至少根据所述多个第一数据块的存储位置信息从所述快照缓存中读取所述第一数据块。
本发明实施例还提供了一种读取快照的装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请读取快照的方法的处理。
上述实施例可以缓存中不同快照共享相同的数据块时,根据快照元数据的数据块存储位置信息读取到快照的数据块。
本发明实施例还提供了一种读取快照的方法,包括,
获取未加入快照缓存的第二快照的元数据,所述元数据中包含对所述第二快照切分得到的多个第二数据块的指纹;
对所述多个第二数据块中的数据块,在指纹索引结构中查找该数据块的指纹,如查找到,根据该数据块的指纹和存储位置信息读取所述快照缓存中的该数据块;如未查找到,从快照中心读取该数据块;
其中,所述指纹索引结构包括第一指纹索引结构和/或第二指纹索引结构,所述第一指纹索引结构保存有所述快照缓存中已存储的数据块的指纹和存储位置信息,所述第二指纹索引结构保存有对所述第二快照的基础快照划分得到的多个数据块的指纹和存储位置信息。
本发明实施例还提供了一种读取快照的装置,包括;
信息获取模块,用于获取未加入快照缓存的第二快照的元数据,所述元数据中包含对所述第二快照切分得到的多个第二数据块的指纹;
数据读取模块,用于对所述多个第二数据块中的数据块,在指纹索引结构中查找该数据块的指纹,如查找到,根据该数据块的指纹和存储位置信息读取所述快照缓存中的该数据块;如未查找到,从快照中心读取该数据块;
其中,所述指纹索引结构包括第一指纹索引结构和/或第二指纹索引结构,所述第一指纹索引结构保存有所述快照缓存中已存储的数据块的指纹和存储位置信息,所述第二指纹索引结构保存有对所述第二快照的基础快照划分得到的多个数据块的指纹和存储位置信息。
本发明实施例还提供了一种读取快照的装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请读取快照的方法的处理。
上述实施例方案对未加入快照缓存的快照,也可以根据其数据块的指纹查找,从快照缓存中读取到相同的数据块,可以加快数据块读取速度。
附图说明
图1是相关技术使用快照缓存加速延迟启动的示意图;
图2是本发明实施例一缓存快照的方法的流程图;
图3是本发明实施例一中利用容器存储数据块及其指纹的示意图;
图4是本发明实施例一在快照的元数据中对应存储指纹及容器标识的示意图;
图5是本发明实施例一利用哈希表对应存储指纹及对应容器标识的示意图;
图6是本发明实施例一缓存快照的装置的模块图;
图7是本发明实施例二读取已缓存快照的方法的流程图;
图8是本发明实施例二读取已缓存快照的装置的模块图;
图9是本发明实施例三读取未缓存快照的方法的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
快照缓存里面的快照有很多的相同数据块,尤其是用户的自定义快照,大部分的自定义快照都是在公有云平台提供的某一基础快照的基础上制作的,它和基础快照的大部分数据块是相同的。比如:企业很多部门都是用linux操作系统,因此都使用一个linux操作系统基础快照(如:linux read6u5),但是每个部门的配置不一样,预安装的程序和数据也不一样。所以每个部门对基础快照做修改以后,再打一个快照供自己部门使用,这些快照有很多数据块是一样。按照传统的缓存(cache)实现方法,将快照加入快照缓存时没有去除重复的数据块,使快照缓存可以存储的快照数量非常有限。对于未被缓存的快照,快照缓存将完全无效。
本发明实施例提供一种缓存快照、读取快照的方法,把快照切分成数据块并计算指纹,通过指纹比对来去除快照缓存中大量的重复数据,以节省快照缓存的存储空间。对于未被缓存的快照,也可以通过指纹比对,从快照缓存中找到需要的数据块,加速快照的读取过程。
实施例一
本实施例提供一种缓存快照的方法和装置。
快照包含两部分:元数据(Snapshot Metadata)和快照数据(snapshot data)。快照数据包括对快照切分得到的多个快照数据块(snapshot block),本申请简称为数据块(block),数据块可以是等长的。本实施例中,使用指纹(Digest)来唯一标识数据块,数据块的指纹可以使用针对数据块的指纹算法计算得到,本申请不局限于特定的指纹算法,只要可以对不同数据块计算得到不同的指纹以唯一标识数据块。快照切分得到的数据块中可以封装有数据块的序号信息。
本实施例基于的系统可参照图1,通过一个缓存快照的装置来执行本实施例缓存快照的方法。本实施例中,该缓存快照的装置设置在块设备存储集群具有快照缓存的存储设备上,但在其他实施例中,也可以独立设置,通过与具有快照缓存的存储设备交互来完成上述处理。
如图2所示,本实施例缓存快照的方法在将第一快照加入快照缓存时进行,包括:步骤110,在指纹索引结构中查找第一快照切分得到的多个第一数据块的指纹,将未查找到指纹的第一数据块确定为未缓存数据块,将查找到指纹的第一数据块确定为已缓存数据块;步骤120,将所述未缓存数据块存储到快照缓存中,将所述未缓存数据块的指纹和存储位置信息添加到所述指纹索引结构中;并从所述指纹索引结构中获取所述已缓存数据块的存储位置信息;步骤130,将所述第一快照的元数据存储到所述快照缓存中,所述元数据中包括所述多个第一数据块的存储位置信息。上述第一快照并非是特殊的快照,要加入快照缓存的快照均可称为第一快照,根据策略,可以从快照中心选择使用频繁的快照加入快照缓存。
按上述步骤将第一快照加入快照缓存后,可以将第一快照的标识添加到快照缓存已存储的快照列表中。快照具有唯一的标识,这是由快照中心定义并保证唯一。本实施例在指纹索引结构中查找第一快照切分得到的多个第一数据块的指纹,按照所述多个第一数据块在第一快照中的顺序逐个判断,如果判定当前的第一数据快是未缓存数据块,即将该第一数据块存储到所述快照缓存中,将该第一数据块的指纹和存储位置信息添加到所述指纹索引结构中,此后如果再有与该第一数据块相同的数据块,将会被判定为已缓存数据块。如果判断当前的第一数据块是已缓存数据块,则需要从所述指纹索引结构中获取该第一数据块的存储位置信息并添加到第一快照的元数据中。在另一实施例中,也可以先判断所有的第一数据块是未缓存数据还是已缓存数据块,最后再对未缓存数据块和已缓存数据执行上述处理。需要说明的是,第一快照中,根据指纹查找结果,可以只包括未缓存数据块,或者只包括已缓存数据块,或者同时包括已缓存数据块和未缓存数据块。根据上述步骤中的描述可以,本实施例的指纹索引结构是为快照缓存中已存储的数据块建立的索引结构,该索引结构中包括已存储到快照缓存的数据块的指纹及其存储位置信息,指纹索引结构可创建在内存中。
本实施例中,对快照切分得到多个数据块、计算所述多个数据块的指纹以及生成快照的元数据的处理在快照中心完成,负责缓存快照的装置在将所述快照加入快照缓存时无需再进行这些处理。而在另一实施例中,在将快照加入快照缓存时,由缓存快照的装置先对快照进行切分,得到多个数据块并计算所述多个数据块的指纹,及生成快照的元数据。
本实施例中,考虑要获得好的去重复的效果,数据块会比较小(如为4KB到64KB),如果将每个数据块存为一个数据文件,将对块设备存储集群的文件系统造成很大的压力。因而本实施例在快照缓存中创建容器(container),如图3所示。每个容器由两个文件组成:索引文件(index file)和数据文件(data file),存储多个数据块及其指纹,如512个、1024个、2048个等,本申请对具体的数量不做任何限制。其中,数据文件用于存储容器中的多个数据块的内容。索引文件用于对应存储容器中多个数据块的指纹及在数据文件中的位置信息,图3中的索引文件在每一个数据块的索引后添加该数据块在数据文件中的位置信息,如偏移量、大小等。
本实施例中,将所述未缓存数据块存储到快照缓存中,包括:将所述未缓存数据块存储到一容器的数据文件中;将所述未缓存数据块存储到一容器的数据文件中时,所述方法还包括:将所述未缓存数据块的指纹和所述未缓存数据块在所述数据文件中的位置信息绑定,存储到所述容器的索引文件中。如果第一快照有3个未缓存数据块,分别是数据块B1,数据块B2和数据块B3,则将该3个数据块及其指纹存储到一个容器中,如果存储完数据块B1及其指纹后,该容器存储的数据块数目已经达到允许的最大数目,可以将数据块B2和数据块B3,及数据块B2和数据块B3的指纹存储到另一个容器中。每个容器都有一个容器ID(标识),用于唯一标识该容器。本实施例第一快照的元数据中,所述多个数据块的存储位置信息包括所述多个数据块所在容器的标识,且所述元数据中还包括所述多个第一数据块的指纹。图4示出了元数据中的存储格式,快照的元数据存储有对该快照划分得到的每一个数据块的指纹,在每一个数据块的指纹之前(或后)添加了该指数据块所在容器的容器ID,组成一个数据对。根据容器ID就可以迅速查找到数据块所在的容器,图中的容器标识1、容器标识2,……容器标识N可以表示相同或不同的容器。
在另一实施例中,将所述未缓存数据块存储到快照缓存中时,只是将所述未缓存数据块存储到快照缓存的一文件中,所述文件可存储多个数据块;此时,所述元数据中的所述多个数据块的存储位置信息包括所述多个数据块所在文件的标识及所述多个数据块在文件中的位置信息。
在该另一实施例中,可以根据数据块所在文件的标识及所述多个数据块在文件中的位置信息查找到数据块所在文件并从该文件中读出数据块。但本申请的发明人发现这种方法不太灵活,因为此时数据块的存储位置信息是写死的,如果在一文件中的部分数据块被删除后,不能够对这个文件中的数据块进行重新排列,这样会导致数据块的存储位置信息失效。而本实施例通过指纹到容器中查找数据块,在需要删除和重排数据块时,只要将相应的指纹也删除,并修改相关数据块在数据文件中的位置信息即可。
需要说明的是,上述通过容器保存数据块的方式还可以有其他的变化。例如,当数据块的长度固定时,索引文件中可以不需要保存数据块在数据文件中的位置信息,只需要保存数据块的指纹即可,因为数据块的指纹和数据块是一起保存到容器中的,在文件中的次序相同,因此根据查找到的指纹在索引文件中的位置,就可以确定对应的数据块在数据文件中的位置。在又一实施例中,一个容器只包括一个文件,数据块的指纹和数据块均具有固定的长度,在这个文件中将数据块和数据块的指纹一起保存到文件中,位置相邻,这样只要查找到指纹即可读取到指纹对应的数据块。
按照本实施例的上述方法,将快照加入缓存时,并不将该快照的所有数据块不加选择地存储到快照缓存,而是通过指纹对比,去除重复的数据块,只存储快照缓存中没有的数据块。也即在快照缓存中,是以数据块为单位存储快照数据,相同的数据块只存储一份,从而可节约大量缓存空间。
本实施例中,为了实现对指纹的快速查找,在内存中创建了指纹索引结构,也可称为全局的数据块指纹缓存(block digest cache)结构,该指纹索引结构中保存有已缓存数据块的指纹和存储位置信息如数据块所在容器的标识。本实施例将第一哈希表作为该全局的指纹索引结构。所述第一哈希表以数据块的指纹为键值,将已缓存数据块的指纹及其所在容器的标识绑定,添加到该指纹索引结构中。在指纹索引结构中查找第一数据块的指纹时,即到第一哈希表查找相同的指纹,如未查找到,确定该第一数据块为未缓存数据块,如查找到,确定该第一数据块为已缓存数据块。
哈希表(Hash table,也叫散列表)是根据键值(Key value)而直接进行访问的数据结构。图5示出了一种哈希表,表中的每一个节点对应一个哈希地址(也叫散列地址),使用单链表来解决冲突问题,每一个哈希地址对应一个单链表。本实施例中,在将一个第一数据块保存到块照缓存中后,以该数据块的指纹为键值,计算出该键值(也即该指纹)的哈希地址,将该数据块的指纹以及该数据块所在容器的标识绑定,存储在该哈希地址对应节点下的链表中。因而将一个新的快照加入快照缓存时,对该新的快照的每一个数据块,可以通过查找该哈希表中是否存在该数据块的指纹,来判断该数据块是否已经存储到快照缓存中,进而去除重复的数据块。
本实施例还提供了一种缓存快照的装置,如图6所示,包括:
指纹查找模块10,用于在指纹索引结构中查找第一快照切分得到的多个第一数据块的指纹,将未查找到指纹的第一数据块确定为未缓存数据块,将查找到指纹的第一数据块确定为已缓存数据块;
第一缓存模块20,用于将所述未缓存数据块存储到快照缓存中,将所述未缓存数据块的指纹和存储位置信息添加到所述指纹索引结构中;并从所述指纹索引结构中获取所述已缓存数据块的存储位置信息;
第二缓存模块30,用于将所述第一快照的元数据存储到所述快照缓存中,所述元数据中包括所述多个第一数据块的存储位置信息。
本实施例缓存快照的装置设置在块设备存储集群具有快照缓存的存储设备上,但在其他实施例中,也可以独立设置,通过与具有快照缓存的存储设备交互来完成上述处理。
本实施例中,
所述第一缓存模块将所述未缓存数据块存储到快照缓存中,包括:将所述未缓存数据块存储到快照缓存的一文件中,所述文件可存储多个数据块;
所述第二缓存模块存储的元数据中,所述多个数据块的存储位置信息包括所述多个数据块所在文件的标识及所述多个数据块在文件中的位置信息。
本实施例中,
所述第一缓存模块将所述未缓存数据块存储到快照缓存中,包括:将所述未缓存数据块存储到一容器的数据文件中,所述容器是所述快照缓存中用于存储多个数据块的存储结构,包括一数据文件和一索引文件;
所述第一缓存模块将所述未缓存数据块存储到一容器的数据文件中时,还用于将所述未缓存数据块的指纹存储到所述容器的索引文件中,或者,将所述未缓存数据块的指纹和所述未缓存数据块在所述数据文件中的位置信息绑定,存储到所述容器的索引文件中;
所述第二缓存模块存储的元数据中,所述多个数据块的存储位置信息包括所述多个数据块所在容器的标识,所述元数据中还包括所述多个第一数据块的指纹。
本实施例还提供了一种缓存快照的装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本实施例方法的处理。
本实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如本实施例方法的处理。
本实施例利用数据块的指纹来去除快照中的重复数据块,可节省存储空间,缓存海量的快照。
实施例二
本实施例提供一种读取快照的方法和装置,其中,该读取的快照已加入快照缓存。
本实施例基于的系统可参见图1。本实施例在将快照加入快照缓存时,采用的是实施例一中缓存快照的方法和装置。对于已加入快照缓存的快照,其元数据中包括该快照划分得到的多个数据块的指纹和存储位置信息,因而根据快照的元数据即可快速读取到该快照的数据块。一个快照是否已加入快照缓存,可以通过查找快照缓存已存储的快照列表来确定。
如图7所示,本实施例方法包括:步骤210,从快照缓存中存储的第一快照的元数据中,获取对所述第一快照切分得到的多个第一数据块的存储位置信息;步骤220,至少根据所述多个第一数据块的存储位置信息从所述快照缓存中读取所述第一数据块。
本实施例中,所述第一快照的元数据中还包括所述多个第一数据块的指纹;所述存储位置信息包括数据块所在容器的标识;在步骤220,至少根据所述多个第一数据块的存储位置信息从所述快照缓存中读取所述第一数据块,包括:对所述多个第一数据块中的数据块,根据该数据块所在容器的标识确定相应的容器,在所述容器的索引文件中查找该数据块的指纹,根据查找到的指纹在所述索引文件中的位置或与所述查找到的指纹绑定的位置信息,确定该数据块在所述容器的数据文件中的位置,从所述数据文件的相应位置读取该数据块。上述多个第一数据块在读取时可以一次读取,也可以逐一读取。
在另一实施例中,是将所述未缓存数据块存储到快照缓存的一文件中。所述元数据中的所述多个数据块的存储位置信息包括所述多个数据块所在文件的标识及所述多个数据块在文件中的位置信息。此时,对所述多个数据块中的每一个数据块,可以直接根据元数据中该数据块的存储位置信息获取该数据块所在文件的标识及该数据块在文件中的位置信息,因而根据所述存储位置信息就可以直接读取到该数据块。
容器标识可以是容器的名称或者其他可以标识容器的信息。在本实施例的一个示例中,容器中的索引文件和数据文件的名称中包含所述容器的标识,以方便根据容器标识直接查找到相应的文件。但本申请不局限于此,例如,可以创建一个容器的标识与容器中索引文件、数据文件的对照表,通过该对照表查找到相应容器的索引文件和数据文件。
本实施例还提供了一种读取快照的装置,如图8所示,包括;
信息获取模块40,用于从快照缓存中存储的第一快照的元数据中,获取对所述第一快照切分得到的多个第一数据块的存储位置信息;
数据读取模块50,用于至少根据所述多个第一数据块的存储位置信息从所述快照缓存中读取所述第一数据块。
本实施例读取快照的装置设置在块设备存储集群具有快照缓存的存储设备上,但在其他实施例中,也可以独立设置,通过与具有快照缓存的存储设备交互来完成上述处理。
本实施例中,
所述第一快照的元数据中还包括所述多个第一数据块的指纹;所述存储位置信息包括数据块所在容器的标识;
所述数据读取模块至少根据所述多个第一数据块的存储位置信息从所述快照缓存中读取所述多个第一数据块,包括:对所述多个第一数据块中的数据块,根据该数据块所在容器的标识确定相应的容器,在所述容器的索引文件中查找该数据块的指纹,根据查找到的指纹在所述索引文件中的位置或与所述查找到的指纹绑定的位置信息,确定该数据块在所述容器的数据文件中的位置,从所述数据文件的相应位置读取该数据块。
本实施例还提供了一种读取快照的装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本实施例方法的处理。
本实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如本实施例方法的处理。
本实施例读取快照的方法可以用于虚拟机启动时的延迟加载,由于本实施例可以从快照缓存中直接读取数据块,因而可以加快虚拟机启动的速度。
实施例三
本实施例提供一种与实施例一中缓存快照方法相应的读取快照的方法和装置,该读取的快照没有加入快照缓存。
本实施例基于的系统可参见图1。本实施例在将快照加入快照缓存时,采用的是实施例一中缓存快照的方法和装置。对于没有加入快照缓存的快照,快照缓存中没有存储该快照的元数据,因而无法通过元数据来查找数据块的存储位置信息。但是,在实施例一中建立可以根据数据块的指纹查询数据块的存储位置信息的指纹索引结构,因而对于未加入快照缓存的快照,仍然可以尝试用该快照划分得到的多个数据块的指纹查找快照缓存中是否有相同的数据块,在查找不到时,再从快照中心获取,以加快读取快照的速度。
如图9所示,本实施例方法包括:
步骤310,获取未加入快照缓存的第二快照的元数据,所述元数据中包含对所述第二快照切分得到的多个第二数据块的指纹;
一个快照是否加入快照缓存,可以通过查询已加入快照缓存的快照列表确定。第二快照的元数据可以事先存储到快照缓存中,也可以在读取第二快照时,再从快照中心获取。
步骤320,对所述多个第二数据块中的数据块(即第二数据块),在指纹索引结构中查找该数据块的指纹,如查找到,执行步骤330,如查找不到,执行步骤340;
步骤330,根据该数据块的指纹和存储位置信息读取所述快照缓存中的该数据块,结束;
步骤340,从快照中心读取该数据块。
本实施例中,所述指纹索引结构包括第一指纹索引结构,所述第一指纹索引结构即是上述实施例中描述的全局的指纹索引结构,如第一哈希表,保存有所述快照缓存中已存储的数据块的指纹和存储位置信息。
本实施例中,所述存储位置信息包括数据块所在容器的标识,所述根据该数据块的指纹和存储位置信息读取所述快照缓存中的该数据块,包括:根据该数据块所在容器的标识确定相应的容器,在所述容器的索引文件中查找该数据块的指纹,根据查找到的指纹在所述索引文件中的位置或与所述查找到的指纹绑定的位置信息,确定该数据块在所述容器的数据文件中的位置,从所述数据文件的相应位置读取该数据块。
在另一实施例中,但考虑到当快照缓存中的数据块非常多时,由于内存资源有限,该全局的指纹索引结构可能不能够存储所有数据块的指纹及存储位置信息。因而在该另一实施例中,还在内存中基于第三快照创建了另一个指纹索引结构,该第三快照与第二快照具有相同的数据块,本实施例是将第二快照的基础快照作为第三快照。该另一个指纹索引结构也采用哈希表的形式,称为第二哈希表,第二哈希表可以采用与第一哈希表相同的结构。与第一哈希表不同的是,第二哈希表中保存的是所述基础快照切分得到的多个数据块的指纹和存储位置信息。在该另一实施例中,步骤320在指纹索引结构中查找该数据块的指纹时,是到根据基础快照建立的指纹索引结构中查找,如查找到,根据查找到的指纹及其绑定的存储位置信息,到快照缓存中读取该数据块。如查找不到,再到快照中心读取该数据块。该另一实施例中,使用有限的资源为大量自定义快照的基础快照建立指纹索引结构(也可称为数据块指纹存储结构),可以大幅提高数据块指纹的查询命中率,提高数据块去重的效果。
如果第二快照是在第三快照的基础上修改得到的,则第三快照可称为第二快照的基础快照,基础快照具体可以由管理人员来手动选定,如将标准的linux操作系统快照作为选定的基础快照。本实施例通过算法来自动选出,包括:对所述快照缓存中已存储的每一快照,根据该快照划分得到的多个数据块的指纹生成一个布隆滤波器;及,将每一个所述第二数据块的指纹,到生成的每一个布隆滤波器中查询,将命中次数最多的布隆滤波器对应的快照选定为所述第二快照的基础快照。为第二快照的自动选定基础快照和根据基础快照创建指纹索引结构的处理可以在读取第二快照时进行。除了基础快照外,与第二快照具有一定数据的快照也可以作为第三快照,为第三快照建立的指纹索引结构也可以在一定程度上加快第二快照的读取。
在又一实施例中,在内存中即创建了全局的指纹索引结构,又创建了第三快照(如基础快照)的指纹索引结构。步骤320在指纹索引结构中查找该数据块的指纹时,同时在全局的指纹索引结构和根据基础快照建立的指纹索引结构中查找。如果在任意一个指纹索引结构查找到该数据块的指纹,就可以从快照缓存中读取该数据块的数据,在两个指纹索引结构都查找不到该数据块的指纹时,再到快照中心读取该数据块。
在一个示例中,提供一种利用数据块指纹自动选定基础快照的方法,在该示例中,采用指纹采样和布隆滤波器(Bloom filter)来减少内存的使用量。Bloom Filter是一种特征提取和匹配的算法。该方法包括:
步骤一,对所述快照缓存中已存储的每一快照,根据该快照划分得到的多个数据块的指纹生成一个布隆滤波器;
具体地,对快照缓存中存储的每个快照,对该快照划分得到的多个数据块的指纹进行采样,通过采样得到的数据块的指纹为该快照生成一个布隆滤波器。通过布隆滤波器查询数据块的指纹是否命中存在一定的错判率,在Bloom Filter算法中采用的点阵列(bitarray)的长度和哈希(hash)函数的个数影响错判率。本示例中,选择点阵列长度为指纹个数的2倍,hash函数为4个,测试中的错判率为5%左右。可以通过调节block指纹的采样比例和Bloom filter的参数来平衡主机的内存消耗和判断的准确度。为一个快照生成一个布隆滤波器的处理可以该快照加入快照缓存后就执行。
步骤二,要读取第二快照时,根据所述第二快照划分得到的每一个数据块的指纹,到生成的每一布隆滤波器中查询,将命中次数最多的布隆滤波器对应的快照选定为所述第二快照的基础快照;
将一个数据块的指纹到一个布隆滤波器中查询时,查询结果可以是命中或未命中,命中表示该布隆滤波器对应的快照中有与该数据块相同或相似度非常高的数据块。在本步骤中,可以把该快照的每一数据块的指纹用k个hash函数计算k个hash值,把这k个hash值到快照缓存中所有快照的Bloom Filter中查询,如果某个Bloom filter命中,则该Bloomfilter对应的快照的得分加1。对该快照的所有数据块的指纹查询完成以后,得分最高的快照即记录为该快照的其基础快照,也即和该快照相似度最高的快照。
本实施例还提供了一种读取快照的装置,包括;
信息获取模块,用于获取未加入快照缓存的第二快照的元数据,所述元数据中包含对所述第二快照切分得到的多个第二数据块的指纹;
数据读取模块,用于对所述多个第二数据块中的数据块,在指纹索引结构中查找该数据块的指纹,如查找到,根据该数据块的指纹和存储位置信息读取所述快照缓存中的该数据块;如未查找到,从快照中心读取该数据块;
其中,所述指纹索引结构包括第一指纹索引结构和/或第二指纹索引结构,所述第一指纹索引结构保存有所述快照缓存中已存储的数据块的指纹和存储位置信息,所述第二指纹索引结构保存有与所述第二快照存在相同数据块的第三快照划分得到的多个数据块的指纹和存储位置信息。
本实施例中,
所述存储位置信息包括数据块所在容器的标识;
所述数据读取模块根据该数据块的指纹和存储位置信息读取所述快照缓存中的该数据块,包括:根据该数据块所在容器的标识确定相应的容器,在所述容器的索引文件中查找该数据块的指纹,根据查找到的指纹在所述索引文件中的位置或与所述查找到的指纹绑定的位置信息,确定该数据块在所述容器的数据文件中的位置,从所述数据文件的相应位置读取该数据块。
本实施例还提供了一种读取快照的装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本实施例方法所述的处理。
本实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如本实施例方法的处理。
本实施例读取快照的方法可以用于虚拟机启动时的延迟加载,以可以加快虚拟机启动的速度。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
Claims (5)
1.一种读取快照的方法,包括,
获取未加入快照缓存的第二快照的元数据,所述元数据中包含对所述第二快照切分得到的多个第二数据块的指纹;
对所述多个第二数据块中的数据块,在指纹索引结构中查找该数据块的指纹,如查找到,根据该数据块的指纹和存储位置信息读取所述快照缓存中的该数据块;如未查找到,从快照中心读取该数据块;
其中,所述指纹索引结构包括第一指纹索引结构和/或第二指纹索引结构,所述第一指纹索引结构保存有所述快照缓存中已存储的数据块的指纹和存储位置信息,所述第二指纹索引结构保存有与所述第二快照存在相同数据块的第三快照划分得到的多个数据块的指纹和存储位置信息;
所述第三快照是所述第二快照的基础快照;
所述基础快照通过以下方式自动选定:对所述快照缓存中已存储的每一快照,根据该快照划分得到的多个数据块的指纹生成一个布隆滤波器;及,将每一个所述第二数据块的指纹,到生成的每一个布隆滤波器中查询,将命中次数最多的布隆滤波器对应的快照选定为所述第二快照的基础快照。
2.如权利要求1所述的方法,其特征在于:
所述存储位置信息包括数据块所在容器的标识,所述根据该数据块的指纹和存储位置信息读取所述快照缓存中的该数据块,包括:
根据该数据块所在容器的标识确定相应的容器,在所述容器的索引文件中查找该数据块的指纹,根据查找到的指纹在所述索引文件中的位置或与所述查找到的指纹绑定的位置信息,确定该数据块在所述容器的数据文件中的位置,从所述数据文件的相应位置读取该数据块。
3.一种读取快照的装置,其特征在于,包括;
信息获取模块,用于获取未加入快照缓存的第二快照的元数据,所述元数据中包含对所述第二快照切分得到的多个第二数据块的指纹;
数据读取模块,用于对所述多个第二数据块中的数据块,在指纹索引结构中查找该数据块的指纹,如查找到,根据该数据块的指纹和存储位置信息读取所述快照缓存中的该数据块;如未查找到,从快照中心读取该数据块;
其中,所述指纹索引结构包括第一指纹索引结构和/或第二指纹索引结构,所述第一指纹索引结构保存有所述快照缓存中已存储的数据块的指纹和存储位置信息,所述第二指纹索引结构保存有与所述第二快照存在相同数据块的第三快照划分得到的多个数据块的指纹和存储位置信息;
所述第三快照是所述第二快照的基础快照;
所述装置还包括:基础快照选定模块,用于通过以下方式选定所述第二快照的基础快照:对所述快照缓存中已存储的每一快照,根据该快照划分得到的多个数据块的指纹生成一个布隆滤波器;及,将每一个所述第二数据块的指纹,到生成的每一个布隆滤波器中查询,将命中次数最多的布隆滤波器对应的快照选定为所述第二快照的基础快照。
4.如权利要求3所述的装置,其特征在于:
所述存储位置信息包括数据块所在容器的标识;
所述数据读取模块根据该数据块的指纹和存储位置信息读取所述快照缓存中的该数据块,包括:根据该数据块所在容器的标识确定相应的容器,在所述容器的索引文件中查找该数据块的指纹,根据查找到的指纹在所述索引文件中的位置或与所述查找到的指纹绑定的位置信息,确定该数据块在所述容器的数据文件中的位置,从所述数据文件的相应位置读取该数据块。
5.一种读取快照的装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1、2中任一项所述的读取快照的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711217569.3A CN110018990B (zh) | 2017-11-28 | 2017-11-28 | 一种缓存快照、读取快照的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711217569.3A CN110018990B (zh) | 2017-11-28 | 2017-11-28 | 一种缓存快照、读取快照的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110018990A CN110018990A (zh) | 2019-07-16 |
CN110018990B true CN110018990B (zh) | 2023-07-18 |
Family
ID=67186816
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711217569.3A Active CN110018990B (zh) | 2017-11-28 | 2017-11-28 | 一种缓存快照、读取快照的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110018990B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101741536A (zh) * | 2008-11-26 | 2010-06-16 | 中兴通讯股份有限公司 | 数据级容灾方法、系统和生产中心节点 |
US9390116B1 (en) * | 2013-09-26 | 2016-07-12 | Emc Corporation | Insertion and eviction schemes for deduplicated cache system of a storage system |
CN106155934A (zh) * | 2016-06-27 | 2016-11-23 | 华中科技大学 | 一种云环境下基于重复数据的缓存方法 |
CN106503051A (zh) * | 2016-09-23 | 2017-03-15 | 暨南大学 | 一种基于元数据分类的贪婪预取型数据恢复系统及恢复方法 |
-
2017
- 2017-11-28 CN CN201711217569.3A patent/CN110018990B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101741536A (zh) * | 2008-11-26 | 2010-06-16 | 中兴通讯股份有限公司 | 数据级容灾方法、系统和生产中心节点 |
US9390116B1 (en) * | 2013-09-26 | 2016-07-12 | Emc Corporation | Insertion and eviction schemes for deduplicated cache system of a storage system |
CN106155934A (zh) * | 2016-06-27 | 2016-11-23 | 华中科技大学 | 一种云环境下基于重复数据的缓存方法 |
CN106503051A (zh) * | 2016-09-23 | 2017-03-15 | 暨南大学 | 一种基于元数据分类的贪婪预取型数据恢复系统及恢复方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110018990A (zh) | 2019-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11461027B2 (en) | Deduplication-aware load balancing in distributed storage systems | |
US11157445B2 (en) | Indexing implementing method and system in file storage | |
US10210191B2 (en) | Accelerated access to objects in an object store implemented utilizing a file storage system | |
US20180089244A1 (en) | Key-value stores implemented using fragmented log-structured merge trees | |
US20140297603A1 (en) | Method and apparatus for deduplication of replicated file | |
US20180113767A1 (en) | Systems and methods for data backup using data binning and deduplication | |
CN104978151A (zh) | 基于应用感知的重复数据删除存储系统中的数据重构方法 | |
US11113199B2 (en) | Low-overhead index for a flash cache | |
CN109033360B (zh) | 一种数据查询方法、装置、服务器及存储介质 | |
JP6968876B2 (ja) | 期限切れバックアップ処理方法及びバックアップサーバ | |
US11461140B2 (en) | Systems and methods for controller-worker architecture for searching a storage system | |
CN110888837B (zh) | 对象存储小文件归并方法及装置 | |
CN114328545B (zh) | 数据存储及查询方法、装置及数据库系统 | |
US20230418789A1 (en) | Systems and methods for searching deduplicated data | |
US10515055B2 (en) | Mapping logical identifiers using multiple identifier spaces | |
CN112306957A (zh) | 获取索引节点号的方法、装置、计算设备和存储介质 | |
CN108038253B (zh) | 一种日志查询的处理方法及装置 | |
CN111176574B (zh) | 一种小文件存储方法、装置、设备及介质 | |
CN110018990B (zh) | 一种缓存快照、读取快照的方法和装置 | |
CN109325023B (zh) | 一种数据处理方法及装置 | |
US10216748B1 (en) | Segment index access management in a de-duplication system | |
CN116048396B (zh) | 基于日志结构化合并树的数据存储装置和存储控制方法 | |
CN112380174B (zh) | 含删除文件的xfs文件系统解析方法、终端设备及存储介质 | |
CN114138552B (zh) | 数据动态重删方法、系统、终端及存储介质 | |
US10235371B1 (en) | Incremental physical locality repair for live data |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40010843 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |