CN113574516A - 用于将多个文件系统的快照编入索引的设备及方法 - Google Patents
用于将多个文件系统的快照编入索引的设备及方法 Download PDFInfo
- Publication number
- CN113574516A CN113574516A CN202080007453.0A CN202080007453A CN113574516A CN 113574516 A CN113574516 A CN 113574516A CN 202080007453 A CN202080007453 A CN 202080007453A CN 113574516 A CN113574516 A CN 113574516A
- Authority
- CN
- China
- Prior art keywords
- file
- node
- edge
- nodes
- snapshot
- 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.)
- Pending
Links
Images
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/113—Details of archiving
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1466—Management of the backup or restore process to make the backup process non-disruptive
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- 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/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
Abstract
本发明公开了一种用于将文件系统进行备份的设备和方法。所述文件系统包括排列成树形结构的多个节点。具体地,本发明提出了一种用于将单链备份快照中的文件系统名称和路径编入索引的设备。所述设备用于获取所述文件系统的第一快照。所述设备还用于扫描所述文件系统的所述第一快照,以获得所述多个节点和所述树形结构在第一时间点的第一扫描。所述设备还用于将所述第一扫描插入到数据库中。然后,所述设备用于将所述数据库中的所述多个节点编入索引。这样提供了一种跨多个快照在节点名称模式下搜索路径的技术方案。
Description
技术领域
本发明涉及具有备份机制的计算机系统领域,尤其涉及一种用于将计算机网络中的计算设备的数据进行备份的备份系统。为了帮助用户从备份快照中恢复某个文件,本发明提供了一种在所有文件系统和快照中使用正则表达式搜索文件名的技术方案。为此,本发明提供了一种用于将多个文件系统的快照编入索引的设备和方法。
背景技术
当需要备份某个文件系统时,生成该文件系统的临时快照来表示该文件系统在特定时刻的静态状态。然后,以块为单位备份该快照。这导致用户无法直接搜索或浏览该快照的备份来获取某些文件。
因此,在备份过程之后,挂载快照内的文件系统,以便扫描文件系统的整个目录树,并将文件系统中的所有节点的名称和路径的信息存储到合适的结构中。这种信息可以包括查找到的每个节点的名称、大小、时间戳、设备和标识符。
扫描过程通常可以在非常轻量级的虚拟机内执行,以便挂载文件系统图像。因此,理想情况下,无论正在扫描的节点有多少,扫描过程都不会占用太多的内存。但如何在多台机器的多个快照中进行搜索是一个问题。
传统的技术方案之一是使用弹性搜索。但是,弹性搜索在速度和资源消耗方面没有达到预期性能。弹性搜索的速度慢了一个数量级。一些常见的已知技术方案需要大量内存和CPU,但是在轻量级虚拟机内执行扫描或在单台机器上执行多次搜索时不易获得大量内存和CPU。
发明内容
鉴于上述问题,本发明实施例旨在提供一种改进传统技术方案的设备和方法。具体而言,一个目标是实现在所有文件系统和快照中使用正则表达式搜索文件名,同时节省内存和CPU资源。因此,本发明实施例旨在创建文件系统结构目录,以容纳同一文件系统的多个快照。另一个目标是,不管文件系统中正在扫描的节点有多少,都不占用太多内存。此外,还希望有效地将数据库复制到远程站点。
该目标通过所附独立权利要求中描述的本发明实施例来实现。在从属权利要求中进一步定义本发明实施例的有利实现方式。
本发明的第一方面提供一种用于将文件系统进行备份的设备。所述文件系统包括排列成树形结构的多个节点,所述设备用于:获取所述文件系统的第一快照;扫描所述文件系统的所述第一快照,以获得所述文件系统中的所述多个节点和所述树形结构在第一时间点的第一扫描;将所述第一扫描插入到数据库中;将所述数据库中的所述多个节点编入索引。
在扫描操作和插入操作之后,将所述数据库中的所述多个节点编入索引,以执行后面的搜索操作和浏览操作。具体而言,所述第一方面的设备在所有文件系统和快照中使用正则表达式搜索文件名。同时,节省了内存和CPU资源。
在所述第一方面的一种实现形式中,所述设备还用于:获取所述文件系统的第二快照;扫描所述文件系统的所述第二快照,以获得所述文件系统中的所述多个节点和所述树形结构在第二时间点的第二扫描;将所述第二扫描插入到所述数据库中,其中,所述第一扫描和所述第二扫描中的所述多个节点合并;更新所述数据库中的所述多个节点的索引。
在备份多个快照时,将所述数据库中的所述多个节点编入索引能够跨多个快照执行搜索操作和浏览操作。
在所述第一方面的一种实现形式中,所述数据库包括节点文件和边文件,其中,所述节点文件包括所述文件系统中的所述多个节点的信息,所述边文件包括所述文件系统中的所述多个节点之间的边的信息。
所述节点文件可以是主文件,可以简单地是所有节点组成的有序列表。所述边文件中的边可以包括子节点、父节点和快照掩码(位图)的元组。
在所述第一方面的一种实现形式中,所述节点文件包括每个节点的元数据,所述每个节点的元数据包括以下各项中的一个或多个:所述节点的名称、大小、时间戳和标识符;所述边文件包括所述节点文件中的所述多个节点的子节点到父节点关系。
在所述第一方面的一种实现形式中,所述每个节点的元数据在所述节点文件中进行排序;所述设备用于:创建索引文件,以根据所述节点文件将所述数据库中的所述多个节点编入索引,其中,所述索引文件包括所述节点文件中的每个节点的部分名称和所述对应节点的偏移量组成的有序列表。
所述索引文件(节点索引)可以是所述节点文件中的固定长度的部分节点名称(前缀)及其对应偏移量组成的有序列表。所述索引文件可以用于在所述节点文件中执行二元搜索(所述索引文件本身是包括可变长度节点的不对齐文件(blob))。
在所述第一方面的一种实现形式中,所述设备用于:根据所述边文件创建浏览器文件,其中,所述浏览器文件包括所述节点文件中的所述多个节点的按序排列的父节点与子节点关系。
所述浏览器文件可以与所述边文件相同,只是子字段和父字段进行交换,因此所述边可以按照父级、子级而不是子级、父级进行数字排序。
在所述第一方面的一种实现形式中,所述第一扫描包括第一节点文件和第一边文件,其中,所述第一节点文件包括所述文件系统中的所述多个节点在所述第一时间点的信息,所述第一边文件包括所述文件系统中的所述多个节点之间的边在所述第一时间点的信息;所述设备还用于:将所述第一节点文件中的所述信息与所述数据库的所述节点文件中的所述信息进行合并;为所述第一边文件中的每个节点设置第一指示,以指示每个节点属于所述第一快照,并将所述第一边文件中的所述边添加到所述数据库的所述边文件中;在所述数据库中创建映射文件,以将所述第一指示映射到所述第一快照。
在本操作中,节点文件可以简单地复制到数据库中的现有节点文件或与数据库中的现有节点文件进行合并。由于所述节点文件已经进行排序,因此可以保持排序次序。相应的指示用于标识每个节点的快照。
在所述第一方面的一种实现形式中,所述第二快照包括第二节点文件和第二边文件,其中,所述第二节点文件包括所述文件系统中的所述多个节点在所述第二时间点的信息,所述第二边文件包括所述文件系统中的所述多个节点之间的边在所述第二时间点的信息;所述设备用于:将所述第二节点文件中的所述信息于所述数据库的所述节点文件中的所述信息进行合并;判断所述第二边文件中的一个边是否也存在于所述第一边文件中;如果所述第二边文件中的一个边只存在于所述第二边文件中,则为与所述边关联的每个节点设置第二指示,以指示所述对应节点属于所述第二快照,并将所述边添加到所述数据库的所述边文件中;如果所述第二边文件中的一个边也存在于所述第一边文件中,则将第二指示追加到所述每个节点的第一指示,其中,每个节点与所述数据库的所述边文件中的所述边关联;将所述第二指示映射到所述映射文件中的所述第二快照。
在本操作中,新的节点文件可以简单地与现有的节点文件进行合并。对于在最近一次扫描中未查找到的每个边,按原样设置所述第二指示。对于两侧共有的每个边,将新的指示(即所述第二指示追加到现有指示,即所述第一指示。
在所述第一方面的一种实现形式中,所述设备用于:比较所述第一扫描和所述第二扫描;根据所述第一边文件和所述第二边文件,创建增量边文件,其中,所述增量边文件包括只存在于所述第一边文件或所述第二边文件中的边的信息。
本操作发现任意两个快照之间的增量,即差值。值得注意的是,这两个快照可能不同。这些快照不一定是连续的。
在所述第一方面的一种实现形式中,所述设备还用于:将所述增量边文件中的信息与所述数据库的所述边文件中的边的信息进行合并;根据所述合并后的边文件,创建新的浏览器文件。
本操作与上述插入操作非常相似,但速度可以更快,可以占用更少内存。本操作将两个快照之间的“增量”与已经包括两个快照之一的现有数据库进行合并。这样,任何新的节点和边都可以有效地添加到现有的节点和边。
在所述第一方面的一种实现形式中,所述设备用于:从所述数据库接收删除所述第一快照的请求;迭代所述数据库的所述边文件中的所有边,以判断与一个边关联的节点是否设置有所述第一指示,如果所述节点设置有所述第一指示,则删除为所述节点的所述第一指示设置第二指示;
判断所述节点是否设置有另一指示,如果所述节点未设置有所述另一指示,则从所述节点文件中删除所述节点,并从所述边文件中删除与所述节点关联的边;从所述映射文件中删除所述第一指示。
因此,可以根据源数据库创建一个新的数据库实例,其中,请求从当前文件中删除快照。
在所述第一方面的一种实现形式中,所述节点文件按照每个节点的名称进行排序,所述边文件按照每个子节点的名称进行排序。
在所述第一方面的一种实现形式中,所述设备用于:以节点的元数据为键,在所述索引文件中搜索所述节点。
例如,特定的文件或目录名称可以用于搜索所述节点。可选地,所述节点的表达式可以包括通配符,例如“*”或“?”。
在所述第一方面的一种实现形式中,所述设备还用于根据所述多个节点的所述索引,同时跨一个或多个扫描在所述数据库中搜索节点。
可选地,可以提供快照列表,限制在一个或多个特定快照中进行搜索。默认设置可以是在数据库中的所有快照之间执行搜索。
在所述第一方面的一种实现形式中,所述浏览器文件按照每个父节点的名称进行排序。
具体而言,所述浏览器文件可以用于从上到下遍历目录树(路径),或浏览特定目录的内容。
在所述第一方面的一种实现形式中,所述设备用于:使用所述浏览器文件来浏览一个或多个节点;获取所述一个或多个节点的一个或多个子节点。
上述浏览操作可以返回每个指定的父节点(键)的所有子节点(文件和目录),父节点本身可以不列出。
本发明的第二方面提供一种用于将文件系统进行备份的方法。所述文件系统包括排列成树形结构的多个节点;所述方法包括:获取所述文件系统的第一快照;扫描所述文件系统的所述第一快照,以获得所述多个节点和所述树形结构在第一时间点的第一扫描;将所述第一扫描插入到数据库中;将所述数据库中的所述多个节点编入索引。
在所述第二方面的一种实现形式中,所述方法还包括:获取所述文件系统的第二快照;扫描所述文件系统的所述第二快照,以获得所述文件系统中的所述多个节点和所述树形结构在第二时间点的第二扫描;将所述第二扫描插入到所述数据库中,其中,所述第一扫描和所述第二扫描中的所述多个节点合并;更新所述数据库中的所述多个节点的索引。
在所述第二方面的一种实现方式中,所述数据库包括节点文件和边文件,其中,所述节点文件包括所述文件系统的所述多个节点的信息,所述边文件包括所述文件系统中的所述多个节点之间的边的信息。
在所述第二方面的一种实现方式中,所述节点文件包括每个节点的元数据,所述每个节点的元数据包括以下各项中的一个或多个:所述节点的名称、大小、时间戳和标识符;所述边文件包括所述节点文件中的所述多个节点的子节点到父节点关系。
在所述第二方面的一种实现方式中,所述每个节点的元数据在所述节点文件中进行排序,所述方法包括:创建索引文件,以根据所述节点文件将所述数据库中的节点编入索引,其中,所述索引文件包括所述节点文件中的每个节点的部分名称和所述对应节点的偏移量组成的有序列表。
在所述第二方面的一种实现方式中,所述方法包括根据所述边文件创建浏览器文件,其中,所述浏览器文件包括所述节点文件中的所述多个节点的按序排列的父节点到子节点关系。
在所述第二方面的一种实现方式中,所述第一扫描包括第一节点文件和第一边文件,其中,所述第一节点文件包括所述文件系统中的所述多个节点在所述第一时间点的信息,所述第一边文件包括所述文件系统中的所述多个节点之间的边在所述第一时间点的信息;所述方法还包括:将所述第一节点文件中的所述信息与所述数据库的所述节点文件中的所述信息进行合并;为所述第一边文件中的每个节点设置第一指示,以指示每个节点属于所述第一快照,并将所述第一边文件中的所述边添加到所述数据库的所述边文件中;在所述数据库中创建映射文件,以将所述第一指示映射到所述第一快照。
在所述第二方面的一种实现方式中,所述第二快照包括第二节点文件和第二边文件,其中,所述第二节点文件包括所述文件系统中的所述多个节点在所述第二时间点的信息,所述第二边文件包括所述文件系统中的所述多个节点之间的边在所述第二时间点的信息;所述方法包括:将所述第二节点文件中的所述信息与所述数据库的所述节点文件中的所述信息进行合并;判断所述第二边文件中的一个边是否也存在于所述第一边文件中;如果所述第二边文件中的一个边只存在于所述第二边文件中,则为与所述边关联的每个节点设置第二指示,以指示所述对应节点属于所述第二快照,并将所述边添加到所述数据库的所述边文件中;如果所述第二边文件中的一个边也存在于所述第一边文件中,则将第二指示追加到所述每个节点的第一指示,其中,每个节点与所述数据库的所述边文件中的所述边关联;
将所述第二指示映射到所述映射文件中的所述第二快照。
在所述第二方面的一种实现形式中,所述方法包括:比较所述第一扫描和所述第二扫描;根据所述第一边文件和所述第二边文件,创建增量边文件,其中,所述增量边文件包括只存在于所述第一边文件或所述第二边文件中的边的信息。
在所述第二方面的一种实现形式中,所述方法还包括:将所述增量边文件中的所述信息与所述数据库的所述边文件中的边的信息进行合并;根据所述合并的边文件创建新的浏览器文件。
在所述第二方面的一种实现方式中,所述方法包括:从所述数据库接收删除所述第一快照的请求;迭代所述数据库的所述边文件中的所有边,以判断与一个边关联的节点是否设置有所述第一指示,如果所述节点设置有所述第一指示,则删除为所述节点的所述第一指示设置的第二指示;判断所述节点是否设置有另一指示,如果所述节点未设置有所述另一指示,则从所述节点文件中删除所述节点,并从所述边文件中删除与所述节点关联的边;从所述映射文件中删除所述第一指示。
在所述第二方面的一种实现方式中,所述节点文件按照每个节点的名称进行排序,所述边文件按照每个子节点的名称进行排序。
在所述第二方面的一种实现方式中,所述方法包括:以节点的元数据为关键字,在所述索引文件中搜索所述节点。
在所述第二方面的一种实现方式中,所述方法还包括:根据所述多个节点的索引,同时跨一个或多个扫描在数据库中搜索节点。
在所述第二方面的一种实现方式中,所述浏览器文件按照每个父节点的名称进行排序。
在所述第二方面的一种实现方式中,所述方法包括:使用所述浏览器文件来浏览一个或多个节点;获取所述一个或多个节点的一个或多个子节点。。
所述第二方面及其实现形式的方法提供了与上文所述第一方面及其相应实现形式的设备相同的优点和效果。
本发明第三方面提供一种计算机程序。所述计算机程序包括程序代码,当在处理器上实现时,所述程序代码用于执行所述第二方面或其任一实现形式提供的方法。此外,本发明还涉及一种计算机程序产品。所述计算机程序产品包括计算机可读介质和所述提及的计算机程序,其中,所述计算机程序包括在所述计算机可读介质中,并且包括以下组中的一个或多个:只读存储器(Read-Only Memory,ROM)、可编程ROM(Programmable ROM,PROM)、可擦除PROM(Erasable PROM,EPROM)、闪存、电EPROM(Electrically EPROM,EEPROM)和硬式磁盘驱动器。
本发明第四方面提出一种用于将文件系统进行备份的设备。所述设备包括处理器和存储器。所述存储器存储指令,所述指令使得所述处理器执行所述第二方面或其任一实现形式提供的方法。
所述第四方面通过的设备可以扩展为与所述第二方面提供的方法的实现形式对应的实现形式。因此,所述设备的一种实现形式包括所述第二方面提供的方法的对应实现形式的特征。
所述第四方面提供的设备的优点与所述第二方面提供的方法的对应实现形式的优点相同。
需要说明的是,本申请中描述的所有设备、元件、单元和构件可以在软件或硬件元件或其任何类型的组合中实现。本申请中描述的各种实体执行的所有步骤和所描述的将由各种实体执行的功能旨在表明各个实体适于或用于执行各自的步骤和功能。虽然在以下具体实施例的描述中,由外部实体执行的特定功能或步骤没有在执行特定步骤或功能的该实体的具体元件的描述中说明,但是技术人员应该清楚的是这些方法和功能可以在各自的硬件或软件元件或其任意组合中实现。
附图说明
上述方面和实现形式将结合随附附图在以下具体实施例的描述中进行说明,其中:
图1示出了本发明实施例提供的设备;
图2示出了本发明实施例提供的文件结构。
图3示出了本发明实施例提供的方法。
具体实施方式
参考附图描述了用于在通信系统中进行高效数据包传输的方法、设备和程序产品的说明性实施例。尽管本说明书提供了可能实现方式的详细示例,但需要说明的是,这些细节是示例性的,而且决不限制本申请的范围。
而且,实施例/示例可以参照其它实施例/示例。例如,在一个实施例/示例中提及的包括但不限于术语、元素、过程、说明和/或技术优点等任何描述适用于其它实施例/示例。
图1示出了本发明实施例提供的设备100。设备100用于将文件系统110进行备份。通常情况下,文件系统110包括排列成树形结构的多个节点。具体而言,设备100用于获取文件系统110的第一快照101。设备100还用于扫描文件系统110的第一快照101,以在获得文件系统110中的多个节点和树形结构在第一时间点T1的第一扫描。然后,设备100用于将第一扫描插入到数据库中。设备100还用于将数据库中的多个节点编入索引。
设备100可以包括处理电路(未示出),用于执行、进行或启动本文描述的设备100的各种操作。该处理电路可以包括硬件和软件。硬件可以包括模拟电路或数字电路,或者同时包括模拟电路和数字电路。数字电路可以包括专用集成电路(application-specificintegrated circuit,ASIC)、现场可编程阵列(field-programmable array,FPGA)、数字信号处理器(digital signal processor,DSP)或多功能处理器等组件。在一个实施例中,处理电路包括一个或多个处理器以及与一个或多个处理器连接的非瞬时性存储器。该非瞬时性存储器可以存储可执行程序代码,当可执行程序代码由一个或多个处理器执行时,使得设备100执行、进行或启动本文描述的操作或方法。
一般而言,文件系统110中的每个节点可以指(快照的)文件系统110中的文件或目录。这类文件系统110可以托管在虚拟机上。树形结构或树形图是一种以图形形式表示结构层次性的方式。树中的每个节点可以包括零个或多个子节点,这些子节点在树中位于该节点的下面。也就说,子节点可以是父目录的子目录或文件。有子节点的节点称为子节点的父节点(父目录)、上代节点或上级节点。快照可以指在特定时刻表示文件系统110的图形(快照)(某个时间的快照)。
本发明实施例公开了一种技术方案,以解决将一个备份后快照链的大集合中的文件系统名称和路径编入索引的问题。特别地,这些快照可以是托管文件系统110的虚拟机。
具体而言,根据本发明的一个实施例,设备100还用于获取文件系统110的第二快照102。相应地,设备100用于扫描文件系统110的第二快照102,以获得文件系统110中的多个节点和树形结构在第二时间点T2的第二扫描。然后,设备100用于将第二扫描插入到数据库中,其中,第一扫描和第二扫描中的多个节点合并。设备100还用于在数据库中更新多个节点的索引。
值得注意的是,在较晚的时间点T2(相比于T1),可以生成新的快照,即文件系统110的第二快照102。新的数据或文件可能在T2已经写入文件系统110中。在将新扫描数据插入到数据库中之后,可以更新索引,以便于在任何快照中高效搜索任何节点。数据库可能能够区分属于不同快照的数据。
图2示出了本发明实施例提供的文件结构。本发明一个实施例提供的第一快照101和第二快照102如图2所示。可以看到,新数据“zru”在T2时已经写入文件系统110中。
可选地,数据库包括节点文件和边文件。节点文件包括文件系统110中的多个节点的信息,边文件包括文件系统110中的多个节点之间的边的信息。节点文件和边文件的示例如图2所示。
本发明的一个可能实施例在下文描述,称为索引数据库(IndexDB)。具体而言,IndexDB是指一组文件,包括一链快照(例如第一快照101和第二快照102)内的文件系统110中的所有文件和目录的路径和名称的信息。
每个IndexDB实例可能最多包括5个具有公共库名称(例如g1)和扩展名(例如.nodes)的文件。
只包括节点文件和边文件的IndexDB称为原始扫描。IndexDB包括单个快照(例如第一快照101或第二快照102)中的已扫描节点。但是,IndexDB不包括任何标识特定快照101/102的内容。节点之间的边在原始扫描中可以不进行排序。该原始扫描可以插入到合适的数据库中,该数据库可能已经有一个或多个之前快照101/102的扫描。理想情况下,原始扫描的格式应该尽可能接近数据库结构,以获得最佳的插入性能。
当原始扫描插入到数据库中时,新数据可以与现有数据进行合并,使得数据库的大小增加量与数据从一个快照101/102到下一个快照的百分比变化量成正比。例如,如果文件系统110只有5%发生了改变,则在插入下一个扫描时,数据库大小应该增加5%,而不是增加一倍。
包括节点文件和边文件以及快照映射文件(但不包括索引文件)的IndexDB称为部分数据库。IndexDB包括多个快照(例如1至32个快照)中的节点和边以及这些快照的快照ID。当只有一个快照101/102时,边文件通常不进行排序。这种数据库不能用于浏览或搜索,因为没有索引。
既包括节点文件、边文件和快照映射文件又包括浏览器文件和索引文件的IndexDB称为完整数据库。浏览器文件和索引文件源自边文件和节点文件。这种数据库可以用于浏览操作或搜索操作。
根据本发明的一个实施例,节点文件包括每个节点的元数据,每个节点的元数据包括以下各项中的一个或多个:节点的名称、大小、时间戳和标识符。边文件包括节点文件中的多个节点的子节点到父节点关系。
节点文件是数据库中的主文件。节点文件可以简单地是所有节点组成的有序列表。通常情况下,节点文件是一个二进制文件,包括文件版本头和之后的任意条主要按名称排序的可变长度的节点记录:
文件头只出现在节点文件中(其它文件没有头),包括11个字节,如下所示:
在这种情况下,v1.0的版本是0x00010000。
每条节点记录包括可变数量的字节(取决于名称长度)。因此,节点最少包括36个字节,如下所示:
需要说明的是,节点文件中的任一节点的实际字节偏移量可以用作该节点的键(nodeId)。节点文件中的多个节点可以按照名称、ctime、mtime、device_id或inode进行排序。不提供标志位来指示节点是文件、目录还是符号链接(symlink)。如果节点的大小==–1,则该节点为目录。符号链接作为常规文件和/或目录进行遍历。
边文件是所有边(子节点到父节点)组成的有序列表。因此,边文件表示目录和文件的树形结构。边文件可以用于从下到上遍历目录树(路径)。每个子级可以有多个父级(例如在不同的快照101/102中)。
这些边在原始扫描中(或在第一代部分数据库中)可以不进行排序。例如,边文件是一个二进制文件,每条记录包括12个字节。
每个边恰好包括12个字节(按照子级、父级进行数字排序):
需要说明的是,顶层子节点可以分配给伪ID为0的父节点。顶层节点的名称可以为空,因为它表示的是根路径“/”,如图2所示。原始扫描中的掩码为0。
快照映射文件可以是快照位(1位到32位)到实际快照ID(可以是任意字符串,例如全局唯一标识符)的映射,按快照位排序(但是排序次序并不相干)。具体而言,快照位是指用于唯一标识一个快照的位,快照ID是指用于唯一标识一个快照的字符串。例如,快照映射文件可以是包括0条到32条可变长度记录的二进制文件:
每个快照映射记录包括可变数量的字节(取决于快照ID长度),如下所示:
每个快照101/102由32位无符号整数中的一位表示,最多有32个快照。原始扫描不一定包括快照映射文件。
可选地,根据本发明的一个实施例,每个节点的元数据在节点文件中进行排序。设备100可以用于创建索引文件,以根据节点文件将数据库中的多个节点编入索引,其中,索引文件包括节点文件中的每个节点的部分名称及其偏移量组成的有序列表。
索引文件(节点索引)是节点文件中的固定长度的部分节点名称(前缀)及其对应的偏移量组成的有序列表。索引文件用于在节点文件中执行二元搜索(索引文件本身就是包括可变长度节点的不对齐文件(blob))。例如,索引文件是一个二进制文件,每条记录包括16个字节。
每个索引条目恰好包括16个字节(按照name_prefix进行数字排序):
需要说明的是,截取节点名称的前12个字符,不足12个字符则用空值填充。在将第一个节点(名称为空,因为是顶层目录)编入索引之后,只有每第64个节点编入索引,以保持文件和内存的大小较小。任意两个索引条目的名称都不相同,因此,如果超过64个节点具有相同的名称前缀,则只写入一个索引条目。任意两个索引条目之间存在64或更多个节点。某个名称前缀的第一个条目可能不会指向与该名称前缀匹配的第一个节点(因为每第64个节点跳过一次)。原始扫描和部分数据库不包括索引文件。只有搜索操作需要索引文件,而且可以根据节点文件生成索引文件。因此,如果只有远程站点需要索引文件,则可以在执行插入操作时不用生成该索引文件。
根据本发明的一个实施例,设备100还可以用于根据边文件创建浏览器文件,其中,浏览器文件包括节点文件中的多个节点的按序排列的父节点与子节点关系。
浏览器文件(浏览器索引)可以与上述边文件完全相同,只是子字段和父字段进行交换,因此这些边按照父级、子级而不是子级、父级进行数字排序。浏览器文件可以用于从上到下遍历目录树(路径),或浏览特定目录的内容。
需要说明的是,原始扫描和部分数据库不包括浏览器文件。只有浏览操作和搜索操作需要浏览器文件,而且可以根据边文件生成浏览器文件。因此,如果只有远程站点需要浏览器文件,则可以在执行插入操作时不用生成浏览器文件。
值得注意的是,本发明首先解决了将虚拟机的单链备份快照中的文件系统名称和路径编入索引的问题。在解决了该问题后,发现可以根据需要在多链快照中进行多次搜索。
这时,本发明所公开的实施例解决的问题是如何在占用非常小的内存和CPU的情况下跨多个快照101/202在节点名称模式下搜索路径,并在短短几秒内返回第一搜索结果。
因此,本发明实施例可以包括若干操作:
–扫描文件系统110的快照101/202以生成多个节点及其树形结构的原始扫描。
–将特定快照101/102的原始扫描插入到数据库中(其中,索引生成是可选的)。原始扫描包括标识哪些特定快照101/102包括每个节点的位图。
–将数据编入索引以跨多个快照101/102执行搜索操作和浏览操作。
–使用精确匹配、通配符模式或正则表达式按照名称搜索节点。结果可以根据大小、时间戳、快照ID和/或路径前缀进一步筛选。
–按照目录浏览节点。
–从数据库中删除特定快照101/102。
–区分任意两个快照101/102,以创建可以上传到远程站点的小增量。
–将任意两个快照101/102之间的差异添加到数据库,以便仅使用小增量插入缺失的快照101/102。
扫描操作
本操作可以由设备100执行,以递归地(从所请求的路径向下)扫描目录(挂载的文件系统),并将查找到的所有节点(以及相应的边)添加到扫描IndexDB实例(在IndexDB中通常只有5个文件中的2个文件且没有存储快照ID)中,如上述实施例所述。
1.从指定的顶层目录(虚拟根)开始,对目录树(挂载的文件系统)执行递归扫描(例如深度优先搜索(depth-first search,DFS)遍历)。顶层目录是根目录,因此以空白名称存储。
2.该顶层目录的“父级”赋有为0的ID,并且不存储在IndexDB中。
3.对于遇到的每个节点:
a.将16位设备ID和64位inode ID的唯一组合用作键。特别地,设备ID是存储有节点(文件或目录)的设备的标识符,inode ID是表示(通常以Posix为基础的)文件系统中的文件或目录的节点的标识符。
b.如果该节点是到另一个节点的硬链接(nlinks>1),则对名称进行散列并将名称添加到键中。这是为了避免在以后遇到完全相同的节点时重复添加。
c.对于软链接(符号链接),执行链接遍历的最大深度为32(以防止陷入递归循环,忽略此类节点)。
d.对Windows等外部文件系统中的软链接执行特殊处理。
4.将节点元数据(例如名称、大小、时间戳、设备、inode)添加到内存的结构中,其中,该内存限于最大大小(例如32MB,这足以容纳500000个节点)。
5.将节点的子键和父键写入临时边文件中。
6.一旦节点结构已满,首先按照名称进行排序并写入临时文件中。然后,清除节点结构,继续扫描。
7.一旦扫描完成,将执行合并排序以合并节点文件对,直到只有一个文件保留(该文件然后与内存中剩余的任何节点合并)。将最后合并后的文件写入原始扫描中已排序的节点文件,同时保持节点键到文件偏移量的映射。通常情况下,总共只需要大约5次合并。
8.通过使用节点偏移量替换子-父键,将临时边文件重写到原始扫描中最后的边文件。
插入操作
本操作可以由设备100执行,以将与某个快照ID对应的原始扫描与现有的“源”数据库合并,从而有效地将新查找到的节点和边添加到现有的节点和边中。创建一个新的IndexDB实例(“输出”数据库),从而保持原始输入文件(源和扫描)不变。例如,最多可以将32个快照插入到单个IndexDB实例中,但需要删除之前的快照,才能腾出空间。
对于新的IndexDB:
1.简单地将节点文件按原样复制到新数据库。
2.重写边文件,从而为每个节点设置32位快照掩码中的位0以指示每个节点属于快照0。
3.将快照的唯一名称写入快照映射文件中,以将快照0映射到其名称。
根据本发明的一个实施例,第一扫描包括第一节点文件和第一边文件,其中,第一节点文件包括文件系统110中的多个节点在T1的信息,第一边文件包括文件系统110中的多个节点之间的边在T1的信息。图1所示的设备100还可以用于将第一节点文件中的信息与数据库的节点文件中的信息进行合并。此外,设备100可以用于为第一边文件中的每个节点设置第一指示,以指示每个节点属于第一快照101,并将第一边文件中的边添加到数据库的边文件中。然后,设备100可以用于在数据库中创建映射文件,以将第一指示映射到第一快照101。
对于现有的IndexDB:
1.将快照的唯一名称追加到快照映射文件中,以将快照N映射到其名称,其中,N是下一个空闲快照时隙。
2.简单地将新的节点文件与现有的节点文件合并。由于这些文件已经进行了排序,因此在O(N)时间内使用O(1)内存来维护排序次序。维护一个映射,以将旧的节点偏移量映射到两个节点文件的新偏移量。
3.同时,如果需要索引文件作为第一个节点,由于输出的是第一个节点和之后的每第64个节点(只要名称前缀与前一个前缀不同),所以将一个条目写入索引文件中,只将名称的前12个字符映射到节点文件中的偏移量。
4.使用步骤2中的两个映射将两个边文件中的子-父ID替换为新的偏移量,然后对两个文件进行排序。
5.合并两个边文件:
a.对于在最近一次扫描中未查找到的每个边,按原样写入快照掩码。
b.对于两侧共有的每个边,将新的快照位追加到现有掩码。
c.对于每个新的边,快照掩码只包括新的快照位。
6.如果需要索引文件,则通过将新的边从子级、父级、掩码转置到父级、子级、掩码并进行重排序来创建新的浏览器文件。
在这方面,根据本发明的一个实施例,第二快照102可以包括第二节点文件和第二边文件,其中,第二节点文件包括文件系统110中的多个节点在T2的信息,第二边文件包括文件系统110中的多个节点之间的边在T2的信息。设备100还可以用于将第二节点文件中的信息于数据库的节点文件中的信息进行合并。然后,设备100可以用于判断第二边文件中的一个边是否也存在于第一边文件中。如果第二边文件中的一个边只存在于第二边文件中,则设备100可以用于为与该边关联的每个节点设置第二指示,以指示对应节点属于第二快照,并将该边添加到数据库的边文件中。如果第二边文件中的一个边也存在于第一边文件中,则设备100可以用于将第二指示追加到所述每个节点的第一指示,其中,每个节点与数据库的边文件中的边关联。此外,设备100可以用于将第二指示映射到映射文件中的第二快照102。
删除操作
本操作可以由设备100执行,其中,根据源数据库创建新的IndexDB实例,在源数据库中,从快照映射、边和节点中删除所请求的快照ID(位)。
本操作类似于插入,在迭代列表的同时保持O(1)内存。但操作顺序如下所述:
1.从快照映射中移除快照ID并获取正被移除的快照位。
2.通过迭代边来查找已移除的节点,以找到设置有该快照位的边(因此可以移除)以及这些边引用的子节点ID。
再次迭代边以排除仍在被任何其它快照引用的已查找到的节点(因此不能移除)中的任一个。
3.将所有未移除的节点写入输出数据库,保持之前的节点ID到新节点ID的映射,移除节点。
同时,如果需要索引文件,则每64个节点编入索引(如插入操作所述)。
4.将没有设置该快照位的所有边(因此不能移除)写入到新的边文件中,使用新的ID值(在移除节点时创建的映射)替换之前的父节点ID和子节点ID,同时在写入时从每个快照掩码中清除该快照位,移除边。
5.如果需要索引文件,则创建浏览器文件(如插入操作所述)。
根据本发明的一个实施例,设备100可以用于从数据库接收删除第一快照101的请求。相应地,设备100可以用于迭代数据库的边文件中的所有边,以判断与一个边关联的节点是否设置有第一指示;如果该节点设置有第一指示设备,则设备100可以用于删除为该节点设置第一指示。此外,设备100可以用于判断该节点是否设置有另一指示;如果该节点未设置有另一指示,则设备100可以用于从节点文件中删除该节点,并从边文件中删除与该节点关联的边。然后,设备100可以用于从映射文件中删除第一指示。
Diff操作
本操作可以由设备100执行,以查找任意两个快照ID之间的增量。显然,这两个ID不能相同。对应的快照不必是连续的。
在两个快照之间有区别的所有节点(以及相应的边)都写入到部分IndexDB实例中(在完整IndexDB中通常只有5个文件中的3个文件,并且只存储两个不同的快照ID)。
与包括当前存在的所有边(但不包括任何不存在的边)的原始扫描不同,“增量”只包括新的边或已删除的边,因此大小是完整扫描的一小部分。
Diff操作的速度非常快,占用最小内存,如下所述:
1.查找与提供的快照ID对应的两个快照位。
2.迭代边以查找只属于快照1或快照2(但不是两者)的边,从而查找增量边。这些边已经发生改变。缩小快照掩码,从而只包括与快照1或快照2对应的单个快照位,而不包括其它快照。同时,将这些边引用的节点ID添加到一个集合中。
3.对引用的节点ID集合进行排序,将相应的节点写入输出数据库,保持之前的节点ID到新节点ID的映射,写入节点增量。
4.将增量边写入新的边文件中,使用新的ID值替换之前的父节点ID和子节点ID(来自在执行边的diff操作时创建的映射),写入边数据。
5.写入新的快照映射文件,只有两个快照ID不同。
根据本发明的一个实施例,设备100可以用于比较第一扫描和第二扫描。此外,根据本发明的一个实施例,设备100可以用于根据第一边文件和第二边文件,创建增量边文件,其中,增量边文件包括只存在于第一边文件和第二边文件中的边的信息。
应用Diff操作
本操作可以由设备100执行,与插入操作非常相似,但是速度更快,占用内存更少。本操作合并两个快照ID之间的“增量”,而现有的“源”数据库已经包括其中一个快照ID,从而有效地将任何新的节点和边添加到已有的节点和边中。创建一个新的IndexDB实例(“输出”数据库),从而保持原始输入文件(源和增量)不变。
需要说明的是,被插入的快照不必是连续的,并且增量可以按任何期望的顺序应用。一旦应用了所有增量,得到的IndexDB与原始IndexDB是二进制相同的(假设它们现在都包括相同的快照集合)。
插入实际上是一个合并操作,因为大多数对象都是按某个条件进行排序的,所以合并在使用O(1)内存时满足该条件。合并按以下顺序完成,以维护一些必需的信息:
1.确定快照ID/位:两个快照ID(及其对应的快照位)从增量的快照映射文件中提取。一个快照ID/位必须已经存在于源数据库中,而另一个快照ID/位必须不存在,而是添加到新的快照映射中。
2.合并增量数据库和源数据库中的所有节点,与执行上述插入操作的方式完全相同,从而维护从之前的节点ID到新节点ID的两个映射。同时,每64个节点编入索引(如上文的插入操作所述)。
3.合并边,类似于上文的插入操作,其中,简单地使用新的ID值替换被合并的两个边集合中的父节点ID和子节点ID,然后对这个边集合分别进行排序,以便执行合并。但是,对于应用diff操作:
a.对于未在增量中查找到的每个边,如果快照掩码包含快照1,则将快照2页添加到掩码中,否则快照掩码按原样写入。
b.对于两侧共有的每个边,将快照掩码与增量掩码组合起来。(如果边已经存在,但快照1中没有,则现在添加快照2;否则,如果边存在于快照1中,但快照2中不存在,则掩码实际上保持不变。)
c.对于每个新边,快照掩码只包括新的快照位。
4.创建新的浏览器文件(如上文的插入操作所述)。
因此,基于本发明的前述实施例,设备100还可以用于将增量边文件的信息与数据库的边文件中的边信息进行合并,并根据合并后的边文件,创建新的浏览器文件。
浏览操作
浏览操作可以由设备100执行,并且可以接受:
–可选的快照ID,以限制浏览(默认浏览所有快照)。
–要浏览的键(父节点ID)列表,或要浏览的目录的绝对路径。这些键通常是同一目录的不同版本(来自不同的快照)。如果指定了一条路径,则从该路径导出键列表。
需要说明的是,浏览操作将返回指定(没有列出父节点本身)的每个父节点(键)的子节点(文件和目录)((没有列出父节点本身)),并且不会递归地输入查找到的任何子目录。无论是否是为扫描操作指定的路径,顶层目录都是“/”。
必须指定路径或键列表。例如,如果指定了键200、305,则返回文件偏移量200和305处的节点的子节点。如果指定路径/a/b/c,则将键设置为与节点c对应的节点ID/s(如果该路径存在多个版本,则存在多个节点c)。
对于每个节点,返回节点ID、快照ID、名称、大小和时间戳。(不包括父ID)值得注意的是,未维护标志位来指示节点是文件、目录还是符号链接。如果大小为–1,则节点是一个目录。
如果未指定特定的快照ID,则每个节点将重复多次(每个快照ID重复一次)。
优选地,根据本发明的一个实施例,浏览器文件可以按照每个父节点的名称进行排序。
可选地,根据本发明的一个实施例,设备100可用于使用浏览器文件来浏览一个或多个节点。设备100还可以用于获取一个或多个节点的一个或多个子节点。
搜索操作
搜索操作可以由设备100执行,并且可以支持:
–要搜索的表达式。表达式可以是特定的文件名称或目录名称,也可以包括通配符(只包括*或?)。
–可选的快照ID列表,以限制搜索范围(默认搜索所有快照)。
–指向开始搜索的目录的可选绝对路径(默认为“/”)。
–可选参数,例如from_size、until_size、from_ctime、until_ctime、from_mtime和until_mtime,以限制搜索范围。
搜索操作是本发明的最重要的一方面,但产生的流程是简单的:
1.如果指定了路径以限制搜索范围,则确定与指定目录对应的结束节点(如浏览操作所述)。在实际搜索节点之后,这些“根”用作过滤器。
2.如果正被搜索的表达式以除通配符之外的一个或多个字符开头,则可以使用索引和搜索前缀的二元搜索在匹配节点所在的节点文件中查找合适的区域。在任何其它情况下(例如,表达式以通配符开头,或者搜索不区分大小写),必须遍历整个节点列表。
3.搜索大于或等于名称前缀的第一个索引条目。然后,可以在由前一个索引条目指向的偏移量到由当前索引条目(如果大于名称前缀)或者下一个索引条目指向的偏移量之间查找到匹配节点。
4.无论使用索引来确定搜索的起始和结束偏移量,还是遍历整个节点文件,节点都会以块的形式读入内存中,使用索引来描述这些块。因此,每次至少读取64个节点,因为每64个节点索引都有一个条目。如果两个索引条目之间有数千个节点,将缓冲区大小限制在32KB(足够容纳约700个节点)。
5.如果搜索使用通配符或不区分大小写,则使用正则表达式来匹配每个节点。一旦得到结果,就开始爬上路径,使用边对根进行DFS搜索。
6.查找到的任何结果都会立即发送给执行查询的用户。这样,图形用户界面(graphical user interface,GUI)可以快速显示结果。
优选地,根据本发明的一个实施例,节点文件可以按照每个节点的名称进行排序,边文件可以按照每个子节点的名称进行排序。
可选地,根据本发明的一个实施例,设备100可以用于以节点的元数据为键,在索引文件中查找节点。
根据本发明的另一个实施例,设备100可以用于根据多个节点的索引,同时跨一个或多个扫描在数据库中搜索节点。
图3示出了本发明一个实施例提供的用于将文件系统110进行备份的方法300。文件系统110包括排列成树形结构的多个节点。在本发明的特定实施例中,方法300由图1所示的设备100执行。方法300包括步骤301:获取文件系统110的第一快照101;步骤302:扫描文件系统110的第一快照101,以获得所述多个节点和所述树形结构在第一时间点的第一扫描;步骤303:将所述第一扫描插入到数据库中;步骤304:将所述数据库中的多个节点编入索引。
根据本发明实施例,使用专用数据结构和算法的组合。因此,解决了如何跨多个快照在节点名称模式下搜索路径的问题。执行这种技术方案可以产生非常低的内存需求和低CPU,因此可以在每台机器上执行多次搜索。首次搜索结果可以在几秒钟内返回。
综上所述,本发明提出了两种方法:单文件系统搜索方法和全局搜索方法。
单文件系统搜索方法:
1.节点文件是一种专用的二进制数据结构,其中,每条记录都有一个可变长度的名称,后面是若干固定长度的元数据字段(大小、时间戳),并按照名称进行排序。
2.索引文件是一种专用的二进制数据结构,包括固定长度的记录。这是一个部分索引,每N个节点都有一个条目,其中,将存储的名称截断到X个字符。对条目进行排序。
3.边文件和浏览器文件是包括固定长度记录的专用二进制数据结构,这些记录包括节点文件中的每个节点之间的子到父关系或父到子关系,使用节点文件偏移量作为父ID或子ID。每条记录还包括一个位图,指示每个节点所属的快照。这些记录分别按照子ID或父ID进行排序,以便执行搜索操作或浏览操作。
4.使用搜索表达式前缀的固定部分,可以通过高效的二元搜索查找到索引中最接近的匹配项。因此,可以快速查找到区域开始和结束的偏移量,其中,在节点数据结构中可以查找到所有可能的匹配项。
5.节点结构的搜索方式如下:
a.搜索特定名称,或者以前缀开头的节点可以优化为二元搜索。
b.正则表达式库可以用于非常快速地搜索名称,特别是在使用索引限制搜索区域时。
c.如果存在模式表达式,则只查看二元过滤区域。
6.节点数据结构紧凑,使得正则表达式和二元搜索比其它任何目前已知的方法都快。
7.数据结构中的记录(节点)偏移量用作名称的键。
8.一旦查找到名称(及其键),就可以使用其它紧凑且高效的数据结构(边)来查找完整的路径,进行图遍历。
对于全局搜索方法,每个文件系统的元数据存储在单独的数据结构集合中,其中,每个集合包括多个快照。当启动搜索时,在文件系统中并行执行搜索,这些单独的结果流在接收时加入到一个统一的结果输出流中。
值得注意的是,并行性可以限制于任意给定时间的固定数量的文件系统。
所公开的技术方案可以用多种语言实现。优选在C++中实现技术方案。也可以在Python中实现。通过本地执行合并排序来限制内存占用率,但是还可以使用外部工具(例如Linux分类操作)实现这种排序。字典排序次序取决于区域,可以针对不同语言进行修改。为了获得理想的性能,使用了纯二进制文件格式,但是该技术方案也使用基于文本的文件格式。该索引基于节点名称的前N个字符,但是也可以使用名称的后N个字符构建索引,从而对文件扩展名(例如*.jpeg)进行快速通配符搜索。
本发明已结合各种实施例作为示例以及实现方式进行描述。然而,根据对附图、本发明和所附权利要求书的研究,本领域技术人员在实践所要求保护的发明时,能够理解和实现其它变化。在权利要求书以及说明书中,词语“包括”不排除其它元件或步骤,术语“一”或者“一个”不排除多个。单个元件或其它单元可以完成权利要求中记载的若干实体或项的功能。在相互不同的从属权利要求中记载的某些措施并不表示这些措施的组合不能在有利的实现方式中使用。
此外,本发明实施例提供的任何方法可以在具有代码构件的计算机程序中实现,当由处理构件运行时,使得处理构件执行方法中的步骤。计算机程序包括在计算机程序产品的计算机可读介质中。计算机可读介质基本上可以包括任何存储器,例如只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除PROM(Erasable PROM,EPROM)、闪存、电可擦除PROM(Electrically Erasable PROM,EEPROM)或硬式磁盘驱动器。
此外,本领域技术人员认识到,设备100的实施例包括功能、构件、单元、元件等形式的必要通信能力,以执行上述技术方案。其它此类构件、单元、元件和功能的例子有:处理器、存储器、缓冲器、控制逻辑、编码器、解码器、速率匹配器、去速率匹配器、映射单元、乘法器、决策单元、选择器、开关、交织器,解交织器、调制器、解调器、输入端、输出端、天线、放大器、接收单元、发送单元、DSP、格码调制(trellis-coded modulation,TCM)编码器、TCM解码器、电源模块、电源馈线、通信接口、通信协议等,它们适当地排列在一起以执行上述技术方案。
特别地,设备100中的处理器可以包括中央处理器(Central Processing Unit,CPU)、处理单元、处理电路、处理器、专用集成电路(Application Specific IntegratedCircuit,ASIC)、微处理器或其它可以解释和执行指令的处理逻辑中的一个或多个实例。因此,词语“处理器”可以表示包括多个处理电路(例如上述提到的任一、部分或全部)的处理电路系统。处理电路系统还可以执行数据处理功能,以输入、输出和处理数据,包括数据缓冲和设备控制功能,例如呼叫处理控制、用户界面控制等。
Claims (18)
1.一种用于将文件系统(110)进行备份的设备(100),其特征在于,所述文件系统(110)包括排列成树形结构的多个节点,所述设备(100)用于:
获取所述文件系统(110)的第一快照(101);
扫描所述文件系统(110)的所述第一快照(101),以获得所述文件系统(110)中的所述多个节点和所述树形结构在第一时间点的第一扫描;
将所述第一扫描插入到数据库中;
将所述数据库中的所述多个节点编入索引。
2.根据权利要求1所述的设备(100),其特征在于,所述设备(100)还用于:
获取所述文件系统(110)的第二快照(102);
扫描所述文件系统(110)的所述第二快照(102),以获得所述文件系统(110)中的所述多个节点和所述树形结构在第二时间点的第二扫描;
将所述第二扫描插入到所述数据库中,其中,所述第一扫描和所述第二扫描中的所述多个节点合并;
更新所述数据库中的所述多个节点的索引。
3.根据权利要求1或2所述的设备(100),其特征在于,
所述数据库包括节点文件和边文件,其中,所述节点文件包括所述文件系统(110)中的所述多个节点的信息,所述边文件包括所述文件系统(110)中的所述多个节点之间的边的信息。
4.根据权利要求3所述的设备(100),其特征在于,
所述节点文件包括每个节点的元数据,所述每个节点的元数据包括以下各项中的一个或多个:所述节点的名称、大小、时间戳和标识符;
所述边文件包括所述节点文件中的所述多个节点的子节点到父节点关系。
5.根据权利要求4所述的设备(100),其特征在于,所述每个节点的元数据在所述节点文件中进行排序,所述设备(100)用于:
创建索引文件,以根据所述节点文件将所述数据库中的所述多个节点编入索引,其中,所述索引文件包括所述节点文件中的每个节点的部分名称和所述对应节点的偏移量组成的有序列表。
6.根据权利要求4或5所述的设备(100),其特征在于,所述设备(100)用于:
根据所述边文件创建浏览器文件,
其中,所述浏览器文件包括所述节点文件中的所述多个节点的按序排列的父节点到子节点关系。
7.根据权利要求3至6中任一项所述的设备(100),其特征在于,所述第一扫描包括第一节点文件和第一边文件,其中,所述第一节点文件包括所述文件系统(110)中的所述多个节点在所述第一时间点的信息,所述第一边文件包括所述文件系统中的所述多个节点之间的边在所述第一时间点的信息;所述设备(100)用于:
将所述第一节点文件中的所述信息与所述数据库的所述节点文件中的所述信息进行合并;
为所述第一边文件中的每个节点设置第一指示,以指示每个节点属于所述第一快照(101),并将所述第一边文件中的所述边添加到所述数据库的所述边文件中;
在所述数据库中创建映射文件,以将所述第一指示映射到所述第一快照(101)。
8.根据权利要求2或7所述的设备(100),其特征在于,所述第二快照(102)包括第二节点文件和第二边文件,其中,所述第二节点文件包括所述文件系统(110)中的所述多个节点在所述第二时间点的信息,所述第二边文件包括所述文件系统(110)中的所述多个节点之间的边在所述第二时间点的信息;所述设备(100)用于:
将所述第二节点文件中的所述信息与所述数据库的所述节点文件中的所述信息进行合并;
判断所述第二边文件中的一个边是否也存在于所述第一边文件中;
如果所述第二边文件中的一个边只存在于所述第二边文件中,则为与所述边关联的每个节点设置第二指示,以指示所述对应节点属于所述第二快照,并将所述边添加到所述数据库的所述边文件中;
如果所述第二边文件中的一个边也存在于所述第一边文件中,则将第二指示追加到所述每个节点的第一指示,其中,每个节点与所述数据库的所述边文件中的所述边关联;
将所述第二指示映射到所述映射文件中的所述第二快照。
9.根据权利要求8所述的设备(100),其特征在于,所述设备(100)还用于:
比较所述第一扫描和所述第二扫描;
根据所述第一边文件和所述第二边文件,创建增量边文件,其中,所述增量边文件包括只存在于所述第一边文件或所述第二边文件中的边的信息。
10.根据权利要求9所述的设备(100),其特征在于,所述设备(100)还用于:
将所述增量边文件中的所述信息与所述数据库的所述边文件中的边的信息进行合并;
根据所述合并后的边文件,创建新的浏览器文件。
11.根据权利要求7至10中任一项所述的设备(100),其特征在于,所述设备(100)还用于:
从所述数据库接收删除所述第一快照(101)的请求;
迭代所述数据库的所述边文件中的所有边,以判断与一个边关联的节点是否设置有所述第一指示,如果所述节点设置有所述第一指示,则删除为所述节点设置的所述第一指示;
判断所述节点是否设置有另一指示,如果所述节点未设置有所述另一指示,则从所述节点文件中删除所述节点,并从所述边文件中删除与所述节点关联的边;
从所述映射文件中删除所述第一指示。
12.根据权利要求4至11中任一项所述的设备(100),其特征在于,
所述节点文件按照每个节点的名称进行排序,
所述边文件按照每个子节点的名称进行排序。
13.根据权利要求5至12中任一项所述的设备(100),其特征在于,所述设备(100)用于:
以节点的元数据为键,在所述索引文件中搜索所述节点。
14.根据权利要求1至13中任一项所述的设备(100),其特征在于,所述设备(100)还用于:
根据所述多个节点的索引,同时跨一个或多个扫描在数据库中搜索节点。
15.根据权利要求6至14中任一项所述的设备(100),其特征在于,
所述浏览器文件按照每个父节点的名称进行排序。
16.根据权利要求6至15中任一项所述的设备(100),其特征在于,所述设备(100)还用于:
使用所述浏览器文件来浏览一个或多个节点;
获取所述一个或多个节点的一个或多个子节点。
17.一种用于将文件系统(110)进行备份的方法(300),其特征在于,所述文件系统(110)包括排列成树形结构的多个节点,所述方法(300)包括:
获取(301)所述文件系统(110)的第一快照(101);
扫描(302)所述文件系统(110)的所述第一快照(101),以获得所述节点和所述树形结构在第一时间点的第一扫描;
将所述第一扫描插入到(303)数据库中;
将所述数据库中的所述多个节点编入索引(304)。
18.一种计算机程序产品,其特征在于,所述计算机程序产品包括程序代码;当在处理器上实现时,所述程序代码用于执行根据权利要求17所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/EP2020/055018 WO2021170228A1 (en) | 2020-02-26 | 2020-02-26 | A device and a method for indexing snapshots of multiple file systems |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113574516A true CN113574516A (zh) | 2021-10-29 |
Family
ID=69740338
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080007453.0A Pending CN113574516A (zh) | 2020-02-26 | 2020-02-26 | 用于将多个文件系统的快照编入索引的设备及方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220188202A1 (zh) |
EP (1) | EP4014125A1 (zh) |
CN (1) | CN113574516A (zh) |
WO (1) | WO2021170228A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115185891A (zh) * | 2022-09-14 | 2022-10-14 | 联想凌拓科技有限公司 | 文件系统的数据管理方法及装置、电子设备及存储介质 |
CN115794465A (zh) * | 2022-11-10 | 2023-03-14 | 上海鼎茂信息技术有限公司 | 一种日志异常检测方法及系统 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230222095A1 (en) * | 2022-01-13 | 2023-07-13 | Cyera, Ltd. | System and method for data discovery in cloud environments |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7216135B2 (en) * | 2002-02-15 | 2007-05-08 | International Business Machines Corporation | File system for providing access to a snapshot dataset where disk address in the inode is equal to a ditto address for indicating that the disk address is invalid disk address |
US6993539B2 (en) * | 2002-03-19 | 2006-01-31 | Network Appliance, Inc. | System and method for determining changes in two snapshots and for transmitting changes to destination snapshot |
US7836029B2 (en) * | 2003-07-08 | 2010-11-16 | Pillar Data Systems, Inc. | Systems and methods of searching for and determining modified blocks in a file system |
US7624106B1 (en) * | 2004-09-29 | 2009-11-24 | Network Appliance, Inc. | Method and apparatus for generating user-level difference information about two data sets |
WO2006080268A1 (ja) * | 2005-01-25 | 2006-08-03 | Turbo Data Laboratories Inc. | ツリーの検索、集計、ソート方法、情報処理装置、および、ツリーの検索、集計、ソートプログラム |
US7672979B1 (en) * | 2005-04-22 | 2010-03-02 | Symantec Operating Corporation | Backup and restore techniques using inconsistent state indicators |
US7716171B2 (en) * | 2005-08-18 | 2010-05-11 | Emc Corporation | Snapshot indexing |
US8024370B2 (en) * | 2008-07-28 | 2011-09-20 | Oracle America, Inc. | Method and system for defining a pseudo-world |
US8515911B1 (en) * | 2009-01-06 | 2013-08-20 | Emc Corporation | Methods and apparatus for managing multiple point in time copies in a file system |
JP2012531674A (ja) * | 2009-06-26 | 2012-12-10 | シンプリヴィティ・コーポレーション | ノンユニフォームアクセスメモリにおけるスケーラブルなインデックス付け |
US9569446B1 (en) * | 2010-06-08 | 2017-02-14 | Dell Software Inc. | Cataloging system for image-based backup |
US9135118B2 (en) * | 2011-03-07 | 2015-09-15 | Aptare, Inc. | System to catalog and search point-in-time instances of a file system |
RU2634223C2 (ru) * | 2015-06-30 | 2017-10-24 | Общество С Ограниченной Ответственностью "Яндекс" | Способ (варианты) и система (варианты) управления данными, связанными с иерархической структурой |
US10409782B2 (en) * | 2016-06-15 | 2019-09-10 | Chen Zhang | Platform, system, process for distributed graph databases and computing |
US9830345B1 (en) * | 2016-09-26 | 2017-11-28 | Semmle Limited | Content-addressable data storage |
US11163721B1 (en) * | 2017-04-25 | 2021-11-02 | EMC IP Holding Company LLC | Snapshot change list and file system indexing |
US10635632B2 (en) * | 2017-08-29 | 2020-04-28 | Cohesity, Inc. | Snapshot archive management |
US11321192B2 (en) * | 2017-09-07 | 2022-05-03 | Cohesity, Inc. | Restoration of specified content from an archive |
US11360936B2 (en) * | 2018-06-08 | 2022-06-14 | Qumulo, Inc. | Managing per object snapshot coverage in filesystems |
US11455275B2 (en) * | 2018-07-18 | 2022-09-27 | Weka.IO Ltd. | Storing a point in time coherently for a distributed storage system |
US11163723B2 (en) * | 2018-07-19 | 2021-11-02 | Weka.IO Ltd. | Pushing a point in time to a backend object storage for a distributed storage system |
US11436279B2 (en) * | 2018-11-09 | 2022-09-06 | Code42 Software, Inc. | Dynamically building file graph |
US10769025B2 (en) * | 2019-01-17 | 2020-09-08 | Cohesity, Inc. | Indexing a relationship structure of a filesystem |
US11232094B2 (en) * | 2019-12-16 | 2022-01-25 | Vast Data Ltd. | Techniques for determining ancestry in directed acyclic graphs |
-
2020
- 2020-02-26 EP EP20708457.5A patent/EP4014125A1/en active Pending
- 2020-02-26 CN CN202080007453.0A patent/CN113574516A/zh active Pending
- 2020-02-26 WO PCT/EP2020/055018 patent/WO2021170228A1/en unknown
-
2022
- 2022-03-02 US US17/684,598 patent/US20220188202A1/en active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115185891A (zh) * | 2022-09-14 | 2022-10-14 | 联想凌拓科技有限公司 | 文件系统的数据管理方法及装置、电子设备及存储介质 |
CN115794465A (zh) * | 2022-11-10 | 2023-03-14 | 上海鼎茂信息技术有限公司 | 一种日志异常检测方法及系统 |
CN115794465B (zh) * | 2022-11-10 | 2023-12-19 | 上海鼎茂信息技术有限公司 | 一种日志异常检测方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
EP4014125A1 (en) | 2022-06-22 |
WO2021170228A1 (en) | 2021-09-02 |
US20220188202A1 (en) | 2022-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220188202A1 (en) | Device and a Method for Indexing Snapshots of Multiple File Systems | |
US9104675B1 (en) | Inode to pathname support with a hard link database | |
US6785674B2 (en) | System and method for structuring data in a computer system | |
JP7146919B2 (ja) | コンピュータ処理方法、コンピュータ・プログラム製品およびシステム | |
US6598051B1 (en) | Web page connectivity server | |
US5950198A (en) | Processes and apparatuses for generating file correspondency through replication and synchronization between target and source computers | |
US7260583B2 (en) | Web page connectivity server construction | |
US5530849A (en) | Method of reading dynamic, hierarchical file system directories | |
US9407287B2 (en) | Parallel history search and encoding for dictionary-based compression | |
US5442350A (en) | Method and means providing static dictionary structures for compressing character data and expanding compressed data | |
US7448033B1 (en) | System and method for identifying changes made to a computer system due to software installation | |
US7506007B2 (en) | Interval vector based knowledge synchronization for resource versioning | |
US20200004851A1 (en) | Trie-based indices for databases | |
US7702641B2 (en) | Method and system for comparing and updating file trees | |
US20020152219A1 (en) | Data interexchange protocol | |
AU2013210018B2 (en) | Location independent files | |
CN106663056A (zh) | 文件系统中的元数据索引搜索 | |
CN109299086B (zh) | 最优排序键压缩和索引重建 | |
US20070156791A1 (en) | File system dump/restore by node numbering | |
US20150347477A1 (en) | Streaming File System | |
US20050165850A1 (en) | B-tree compression using normalized index keys | |
US7379940B1 (en) | Focal point compression method and apparatus | |
JP2011065268A (ja) | 可変長のデータ断片の開始・終了オフセットを決定する方法及び装置 | |
US8244677B2 (en) | Focal point compression method and apparatus | |
JP2003337822A (ja) | 圧縮検索アーカイブ処理方法,圧縮検索アーカイブ処理プログラムおよびそのプログラムの記録媒体 |
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 |