CN113448491B - 存储***的数据迁移 - Google Patents
存储***的数据迁移 Download PDFInfo
- Publication number
- CN113448491B CN113448491B CN202010226554.9A CN202010226554A CN113448491B CN 113448491 B CN113448491 B CN 113448491B CN 202010226554 A CN202010226554 A CN 202010226554A CN 113448491 B CN113448491 B CN 113448491B
- Authority
- CN
- China
- Prior art keywords
- file
- storage device
- files
- data
- data segment
- 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
- 230000005012 migration Effects 0.000 title abstract description 23
- 238000013508 migration Methods 0.000 title abstract description 23
- 238000000034 method Methods 0.000 claims abstract description 102
- 238000007726 management method Methods 0.000 claims abstract description 27
- 238000004590 computer program Methods 0.000 claims abstract description 15
- 230000008569 process Effects 0.000 claims description 60
- 238000013500 data storage Methods 0.000 description 15
- 238000004891 communication Methods 0.000 description 12
- 238000013459 approach Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 230000015572 biosynthetic process Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
- 230000003442 weekly effect Effects 0.000 description 1
Classifications
-
- 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/0608—Saving storage space on storage systems
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/1464—Management of the backup or restore process for networked environments
-
- 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/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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
-
- 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
- G06F3/0641—De-duplication techniques
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)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施例提供了一种存储管理方法、电子设备和计算机程序产品。该方法包括:确定与文件集合中的一个文件的至少一个数据段相对应的至少一个计数,文件集合被存储在本地存储设备中,至少一个计数指示至少一个数据段在文件集合中的出现次数。该方法还包括:基于至少一个计数来确定文件的去重比率,去重比率指示文件与文件集合中的其他文件的重合水平。该方法进一步包括:根据确定文件的去重比率低于阈值,将文件从本地存储设备迁移到远程存储设备中。本公开的实施例可以实现存储***中的数据的高效、低成本和低开销的迁移。
Description
技术领域
本公开的实施例一般地涉及计算机***或存储***,并且更特别地,涉及一种存储管理方法、电子设备和计算机程序产品。
背景技术
数据保护始终是一项持续发展的任务。如今,许多公司或企业,尤其是大型工业企业,都在不断地努力实现低成本且高效的数据备份手段来保护数据。指数级的数据增长和合规性要求给公司和企业带来了挑战,它们需要存储比以往任何时候更多的数据。公共云***和私有云***等远程存储***可以提供成本有效的、按需的、高可用性的数据存储。因此,大量公司和企业正在接受云存储策略,以便能够将部分本地数据迁移到云存储***等远程存储***中。对于这些公司或企业而言,最大的关注点之一是节省成本。
然而,对于使用去重技术的数据保护存储***而言,将本地数据迁移到远程存储设备并不是一项容易的工作。在未使用去重技术的传统数据存储中,迁移一定量的数据确实会释放相应量的本地存储空间。但是,在利用去重技术的存储***中,由于被迁移的数据内容与保留在本地的数据内容可能是重叠的,因此迁移一定量的数据可能仅释放较少量的本地存储空间。在最坏的情况下,被迁移的数据可能与本地的剩余数据完全重叠。因此,尽管存储***的用户使用远程存储的意图可能是节省成本,但是最终却要为本地存储和远程存储的重复存储付出更高代价。
发明内容
本公开的实施例涉及一种存储管理方法、电子设备和计算机程序产品。
在本公开的第一方面,提供了一种存储管理方法。该方法包括:确定与文件集合中的一个文件的至少一个数据段相对应的至少一个计数,文件集合被存储在本地存储设备中,至少一个计数指示至少一个数据段在文件集合中的出现次数。该方法还包括:基于至少一个计数来确定文件的去重比率,去重比率指示文件与文件集合中的其他文件的重合水平。该方法进一步包括:根据确定文件的去重比率低于阈值,将文件从本地存储设备迁移到远程存储设备中。
在本公开的第二方面,提供了一种电子设备。该电子设备包括至少一个处理器以及存储有计算机程序指令的至少一个存储器。至少一个存储器和计算机程序指令被配置为,与至少一个处理器一起,使得电子设备执行过程。该过程包括:确定与文件集合中的一个文件的至少一个数据段相对应的至少一个计数,文件集合被存储在本地存储设备中,至少一个计数指示至少一个数据段在文件集合中的出现次数。该过程还包括:基于至少一个计数来确定文件的去重比率,去重比率指示文件与文件集合中的其他文件的重合水平。该过程进一步包括:根据确定文件的去重比率低于阈值,将文件从本地存储设备迁移到远程存储设备中。
在本公开的第三方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在非易失性计算机可读介质上并且包括机器可执行指令。机器可执行指令在被执行时使机器执行根据第一方面的方法的步骤。
应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其他特征通过以下的描述将变得容易理解。
附图说明
通过参考附图阅读下文的详细描述,本公开的实施例的上述以及其他目的、特征和优点将变得容易理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施例。
图1示出了本公开的实施例可以在其中实现的示例存储环境的示意图。
图2示出了根据本公开的实施例的文件集合中包括的文件和文件的数据段的示例。
图3示出了根据本公开的实施例的存储管理方法的流程图。
图4示出了根据本公开的实施例的用于确定与文件的数据段相对应的计数的示例过程的流程图。
图5示出了根据本公开的实施例的用于确定文件的去重比率的示例过程的流程图。
图6示出了根据本公开的实施例的用于将文件从本地存储设备迁移到远程存储设备的示例过程的流程图。
图7示出了根据本公开的实施例的将文件从本地存储设备迁移到远程存储设备之后,本地存储设备和远程存储设备各自存储的内容的示例。
图8示出了根据本公开的实施例的文件的示例数据结构和元数据的示例内容。
图9示出了根据本公开的实施例的用于存储文件的增量备份文件的示例过程的流程图。
图10示出了根据本公开的实施例的将增量备份文件存储到远程存储设备之后,本地存储设备和远程存储设备各自存储的内容的示例。
图11示出了根据本公开的实施例的增量备份文件的示例数据结构和元数据的示例内容。
图12示出了一种可以被用来实施本公开的实施例的设备的示意性框图。
贯穿所有附图,相同或者相似的参考标号被用来表示相同或者相似的组件。
具体实施方式
下面将参考附图中所示出的若干示例性实施例来描述本公开的原理和精神。应当理解,描述这些具体的实施例仅是为了使本领域的技术人员能够更好地理解并实现本公开,而并非以任何方式限制本公开的范围。在以下描述和权利要求中,除非另有定义,否则本文中使用的所有技术和科学术语具有与本公开所属领域的普通技术人员通常所理解的相同含义。
随着云存储***等远程存储***的发展,许多数据保护供应方开始提供用于备份数据迁移的云层解决方案。例如,这些数据保护供应方可以提供选项,以允许客户将数据从本地迁移到云存储***等远程存储***。当前,用于将本地数据迁移到远程存储***的方式主要分为以下两类。
第一种方式是按需迁移的方式,其将选择数据进行迁移的工作留给客户,客户需要从本地存储设备中手动地选择数据并将其移动到远程存储设备中。通常,对于客户而言,选择出适合于迁移到远程存储设备的数据并非易事。实际上,由于数据去重技术的复杂性,客户很可能无法正确选择与其余本地数据重叠较少的数据用于迁移。结果是,即使客户选择将某些数据迁移到远程存储设备之后,也无法节省太多的本地存储空间。
第二种方式是基于策略的迁移方式,其与按需迁移方式相比,不要求客户手动地选择迁移数据,而是预先创建一个策略,以自动或定期地将本地存储设备中的数据迁移到远程存储设备。这种方式存在的问题是,数据迁移策略本身是根据一些预定义的因素来确定的。例如,存储超过一段时间(诸如14天)的备份数据将被提取并且迁移到远程存储设备。然而,这样的静态迁移策略不能动态地反映数据集的实际状态。例如,早于14天的备份数据仍然可能是传入的新备份数据的基础数据。在这种情况下,该新备份数据与此前的备份数据是高度重叠的,因此将这样的备份数据迁移到远程存储设备将无助于降低数据存储成本。
由此可见,在利用去重技术的存储***中,由于被迁移的数据内容与保留在本地的数据内容可能是重叠的,因此迁移某个量的数据可能仅释放较少量的本地存储空间。在最坏的情况下,被迁移的数据可能与本地的剩余数据完全重叠。因此,尽管存储***的用户使用远程存储的意图可能是节省成本,但是最终却要为本地存储和远程存储的重复存储付出更高代价。
鉴于传统方案中存在的上述问题以及潜在的其他问题,本公开的实施例提出了一种存储***的数据迁移的解决方案,来选择性地将数据从本地存储设备迁移到远程存储设备,以最大程度地节省数据存储成本,同时不损失数据保护效率。为了实现此目标,在本公开的一些实施例中,与本地其他数据具有较低重叠水平的数据可以被迁移到远程存储设备。此外,本公开的实施例针对去重技术良好地被设计,从而可以将已经被迁移到远程存储设备中的基础数据的增量备份数据也利用去重技术存储在远程存储设备中,因此可以最大程度地保持数据保护效率。
相对于传统方案,本公开的实施例可以取得许多技术优势。传统方案对用户是不友好的且效率低下。更重要的是,传统方案无法保证在将本地数据迁移到远程存储设备之后真正地节省本地存储设备的存储空间,从而降低数据存储成本。相比之下,通过本公开的实施例,具有低去重比率的数据可以自动地且定期地迁移到远程存储设备中而无需太多开销,并且已经被迁移到远程存储设备的基础数据的增量备份数据也可以在后续存储到远程存储设备中,例如通过虚拟合成(VS)或快速复制与覆盖(FCOW)技术。因此,本公开的实施例不仅可以提高存储***的数据去重率,还可以节省数据存储成本。总之,本公开的实施例可以实现存储***中的数据的高效、低成本和低开销的迁移。下文参考图1至图11来详细地描述本公开的一些实施例。
图1示出了本公开的实施例可以在其中实现的示例存储环境100的示意图。如图1所示,在示例存储环境100中,存储***110可以包括用于控制和管理存储***110的计算设备120。例如,计算设备120可以处理对存储***110中存储的数据的访问请求,组织和管理存储***110中的文件(或数据),控制和访问存储***110中的其他设备或组件,等等。更一般地,计算设备120可以实现与存储***110有关的任何计算功能、控制功能、处理功能、和/或类似功能。
存储***110还可以包括本地存储设备130。本地存储设备130是相对于存储***110而言位于本地的存储设备,并且可以用于存储与存储***110有关的各种文件(或数据)。例如,本地存储设备130中可以存储文件集合135,而文件集合135中可以包括以文件形式存储的数据。在一些实施例中,本地存储设备130可以包括性能和成本较高的存储设备,并且可以用于存储访问频率较高的“热数据”。在一些实施例中,本地存储设备130中存储的文件(或数据)本身可以是其他数据的备份数据。应当理解,尽管图1将本地存储设备130示出为位于存储***110内部,但这只是示例性的,无意以任何方式限制本公开的范围。在一些实施例中,本地存储设备130也可以在存储***110的外部并通过通信链路与存储***110通信地耦合。
存储***110还可以包括远程存储设备140。远程存储设备140是相对于存储***110而言在远处的存储设备,并且也可以用于存储与存储***110有关的各种数据(或文件)。例如,存储***110可以将本地存储设备130中的数据(或文件)迁移到远程存储设备140中,从而释放本地存储设备130的存储空间。在一些实施例中,相比于本地存储设备130,远程存储设备140可以包括性能和成本较低的存储设备,并且可以用于存储访问频率较低的“冷数据”。在一些实施例中,远程存储设备140可以包括云存储设备。在其他实施例中,远程存储设备140也可以包括任何其他适当的相对于存储***110在远处的存储设备。
此外,示例存储环境100还可以包括客户端150。在一些实施例中,存储***110的用户可以通过客户端150将文件(或数据)存储到存储***110,并且可以通过客户端150从存储***110读取文件(或数据)。更一般地,存储***110的用户可以通过客户端150来执行与存储***110相关联的任何操作。
在一些实施例中,计算设备120可以包括任何能够实现计算功能和/或控制功能的设备,包括但不限于,专用计算机、通用计算机、通用处理器、微处理器、微控制器、或状态机。计算设备120还可以实施为个体计算设备或计算设备的组合,例如,数字信号处理器(DSP)和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP核心、或者任何其他这样的配置。另外要指出的是,在本公开的上下文中,计算设备120也可以称为电子设备120,这两个术语在本文中可以互换地使用。
在一些实施例中,本地存储设备130可以是在存储***110本地的能够提供存储服务或功能的任何具有存储能力的设备,包括但不限于,硬盘(HDD)、固态盘(SSD)、可移除盘、紧致盘(CD)、激光盘、光盘、数字多功能盘(DVD)、软盘、蓝光盘、串行附接小型计算机***接口(SCSI)存储盘(SAS)、串行高级技术附接(SATA)存储盘、任何其他磁性存储设备和任何其他光学存储设备、或它们的任何组合。
在一些实施例中,远程存储设备140也可以包括位于存储***110远处的能够提供存储服务或功能的任何具有存储能力的设备,包括但不限于,硬盘(HDD)、固态盘(SSD)、可移除盘、紧致盘(CD)、激光盘、光盘、数字多功能盘(DVD)、软盘、蓝光盘、串行附接小型计算机***接口(SCSI)存储盘(SAS)、串行高级技术附接(SATA)存储盘、任何其他磁性存储设备和任何其他光学存储设备、或它们的任何组合。
在一些实施例中,客户端150可以是指能够生成数据并接受数据存储服务的任何设备。在一些实施例中,这样的设备包括但不限于,个人计算机、平板计算机、膝上型计算机、笔记本计算机、上网本计算机、任何其他类型的计算机、蜂窝电话或智能电话、媒体播放器设备、电子书设备、移动WiFi设备、可穿戴计算设备、无线设备、移动设备、用户设备、以及任何其他类型的电子计算设备。
在一些实施例中,示例存储环境100中的各个组件之间的通信链路可以是能够实现这些组件之间的数据通信或控制信号通信的任何形式的连接或耦合,包括但不限于,同轴电缆、光纤电缆、双绞线、或无线技术(诸如红外、无线电和微波)。在一些实施例中,通信链路还可以包括但不限于,网卡、集线器、调制解调器、中继器、网桥、交换机、路由器等用于网络连接的设备、以及各种网络连接线路、无线链路等。在一些实施例中,通信链路可以包括各种类型的总线。在其他实施例中,通信链路可以包括计算机网络、通信网络、或者其他有线或无线网络。
应当理解,图1仅示意性地示出了示例存储环境100中的与本公开的实施例相关的单元、模块或组件。在实践中,示例存储环境100还可以包括用于其他功能的其他单元、模块或组件。此外,图1中示出的单元、模块或组件的特定数目仅是示意性的,无意以任何方式限制本公开的范围。在其他实施例中,示例存储环境100可以包括任何适当数目的存储***、计算设备、本地存储设备、远程存储设备和客户端,等等。因此,本公开的实施例不限于图1所描绘的具体设备、单元、模块或组件,而是一般性地适用于任何具有本地存储设备和远程存储设备的存储环境。下面参考图2来进一步描述本公开的实施例的示例文件集合135。
图2示出了根据本公开的实施例的文件集合135中包括的文件和文件的数据段的示例。在图2的示例中,文件集合135可以包括第一文件210、第二文件220和第三文件230等。第一文件210可以包括数据段250-1、数据段250-2、数据段250-3、数据段250-4、数据段250-5、以及数据段250-6。第二文件220可以包括数据段250-1、数据段250-2、数据段250-3、数据段250-4、数据段250-5、以及数据段250-7。第三文件230可以包括数据段250-8、数据段250-9、数据段250-10、数据段250-11、以及数据段250-12。在一些实施例中,文件的数据段也可以称为数据块、数据切片等,并且数据段可以是可变大小的,以尽可能避免出现重复的数据段。
如图2所示,与未利用去重技术的传统数据存储方式不同,具有去重功能的数据保护存储***110中的文件集合135的基本特征是数据跨多个不同的文件被去重。换句话说,在不同的文件之间存在数据重叠(或数据重合)。存储***110的去重率越高,文件集合135中的不同文件之间可能存在更多的数据重叠。例如,在图2的示例中,第一文件210与第二文件220之间存在重合的数据段250-1至250-5。
文件集合135中的不同文件之间的数据段重合给存储***110的文件(或数据)迁移带来了挑战。具体地,在图2的示例中,假设选择第二文件220从本地存储设备130迁移到远程存储设备140,由于第二文件220与第一文件210重叠了较多的数据段,因此在将第二文件220迁移到远程存储设备140之后,本地存储设备130将不会释放太多的存储空间,反而由于相同的副本数据段(例如,数据段250-1至250-5)消耗了远程存储设备140的存储空间,导致数据存储的成本没有节省而是被增加。
相比之下,如果选择第三文件230从本地存储设备130迁移到远程存储设备140,则由于第三文件230与其余文件(例如,第一文件210和第二文件220)没有数据段重叠,因此确实可以节省本地存储设备130的存储空间,从而节省数据存储成本。为此,本公开的实施例可以在文件集合135中识别出与其他文件重合程度较低的文件来执行迁移,从而降低存储***110的数据存储成本并且不影响数据存储效率。下文将参考图3来详细描述本公开的实施例的存储管理方法。
将理解,图2中示出的文件和数据段的特定数目仅是示意性的,无意以任何方式限制本公开的范围。在其他实施例中,文件集合135可以包括任何适当数目的文件,并且文件可以包括任何适当数目的数据段。因此,本公开的实施例不限于图2所描绘的特定数目的文件、特定数目的数据段、以及文件与数据段之间的特定关联关系,而是一般性地适用于任何数目的文件、任何数目的数据段、以及文件与数据段之间的任何关联关系。
图3示出了根据本公开的实施例的存储管理方法300的流程图。在一些实施例中,方法300可以由存储***110中的计算设备120来实现,例如可以由计算设备120的处理器或处理单元来实现,或者由计算设备120的各种功能模块来实现。在其他实施例中,方法300也可以由独立于存储***110的计算设备来实现,或者可以由存储***110中的其他单元或模块来实现。
为了便于讨论且不失一般性,下文将参考图1和图2以第一文件210、第二文件220和第三文件230作为示例来描述方法300。然而,应当理解,本公开的实施例不限于任何特定的文件,而是等同地适用于包括数据段的任何文件。
在310处,计算设备120可以确定与文件集合135中的某个文件的一个或多个数据段相对应的一个或多个计数,该一个或多个计数可以分别指示该一个或多个数据段在文件集合135中的出现次数。需要说明的是,文件集合135中的一个文件通常包括多个数据段。在这样的情况下,该多个数据段中的每个数据段可以对应于一个计数,以指示该数据段在文件集合135中的所有文件中出现了多少次。
然而,在一些场景中,文件集合135中也可能存在仅包括一个数据段的文件。在这样的场景中,计算设备120可以确定与该文件的该数据段相对应的计数,该计数可以指示该数据段在文件集合135中的所有文件中的出现次数。在本公开的上下文中,为了描述的简便性,可能以包括多个数据段的文件为例描述了本公开的一些实施例。然而,将明白,本公开的实施例等同地适用于仅包括一个数据段的文件。
在图2的示例中,为了简单且不失一般性,假设文件集合135仅包括第一文件210、第二文件220和第三文件230。在这种假设下,计算设备120可以确定与第一文件210的数据段250-1相对应的计数是2,因为第一文件210和第二文件220中均包括数据段250-1,并且第三文件230不包括数据段250-1。也即,数据段250-1在文件集合135中出现了两次。
类似地,计算设备120可以确定与第一文件210的数据段250-2、数据段250-3、数据段250-4和数据段250-5相对应的计数也均为2,因为第一文件210和第二文件220中均包括数据段250-2、数据段250-3、数据段250-4和数据段250-5,并且第三文件230不包括数据段250-2、数据段250-3、数据段250-4和数据段250-5。也即,这些数据段在文件集合135中均出现了两次。
与数据段250-1至250-5不同,计算设备120可以确定与第一文件210的数据段250-6相对应的计数是1,因为第一文件210中包括数据段250-6,而第二文件220和第三文件230中均不包括数据段250-6。也即,数据段250-6在文件集合135中出现了一次。
此外,计算设备120可以确定与第二文件220的数据段250-1相对应的计数是2,因为第一文件210和第二文件220中均包括数据段250-1,并且第三文件230不包括数据段250-1。也即,数据段250-1在文件集合135中出现了两次。
类似地,计算设备120可以确定与第二文件220的数据段250-2、数据段250-3、数据段250-4和数据段250-5相对应的计数也均为2,因为第一文件210和第二文件220中均包括数据段250-2、数据段250-3、数据段250-4和数据段250-5,并且第三文件230不包括数据段250-2、数据段250-3、数据段250-4和数据段250-5。也即,这些数据段在文件集合135中均出现了两次。
与数据段250-1至250-5不同,计算设备120可以确定与第二文件220的数据段250-7相对应的计数是1,因为第二文件220中包括数据段250-7,而第一文件210和第三文件230中均不包括数据段250-7。也即,数据段250-7在文件集合135中出现了一次。
进一步地,计算设备120可以确定与第三文件230的数据段250-8、数据段250-9、数据段250-10、数据段250-11和数据段250-12相对应的计数均为1,因为第三文件230中包括这些数据段,而第一文件210和第二文件220中均不包括这些数据段。也即,这些数据段在文件集合135中均出现了一次。
需要指出的是,计算设备120可以使用任何适当的方式来确定与某个文件的各个数据段相对应的各个计数。例如,针对某个文件,计算设备120可以先确定该文件包括哪些数据段,然后再依次地统计每个数据段在文件集合135中出现的次数。又例如,计算设备120可以将某个文件与文件集合135中的其他文件依次进行比较,从而确定出该文件与其他文件共有的数据段以及这些数据段与多少个文件重合,然后计算设备120可以基于这些文件之间的比较来确定出该文件的各个数据段的各个计数。
在其他实施例中,计算设备120还可以先确定文件集合135中的文件所包括的所有数据段,进而确定与所有数据段相对应的各个计数,然后再从这些计数中确定某个文件所包括的数据段的对应计数。这种方式在文件集合135包括大量文件的情况下可以显著地减少与上述计数相关的计算量。后文中将参考图4来详细地描述这样的实施例。
继续参考图3,在320处,计算设备120可以基于与文件的一个或多个数据段相对应的一个或多个计数来确定该文件的去重比率(也可以称为去重指标),所确定的去重比率可以指示该文件与文件集合135中的其他文件的重合水平。换句话说,针对文件集合135中的某个文件,计算设备120可以为该文件确定去重比率,以定量地指示该文件与文件集合135中其余文件的重合程度的大小。
将理解,对于某个文件的某个数据段而言,计算设备120在框310中为该数据段确定的计数实际上可以表示作为该文件的一部分的该数据段在文件集合135中与其他文件的重合程度。因此,某个文件的整体去重比率可以基于该文件的各个数据段与其他文件的重合程度(也即,这些数据段所对应的各个计数)来获得。
具体地,计算设备120可以使用任何适当的方式来根据与文件的各个数据段相对应的各个计数得出该文件的去重比率,只要该去重比率的大小可以体现出该文件与其他文件的重合程度。例如,针对某个文件,计算设备120可以将该文件的各个数据段的计数相加,然后除以该文件的数据段的数目来得出该文件的去重比率。
按照这种方式,在图2的示例中,第一文件210和第二文件220的去重比率可以计算为(2+2+2+2+2+1)/6=11/6,而第三文件230的去重比率可以计算为(1+1+1+1+1)/5=1。在这种计算方式下,第一文件210和第二文件220的去重比率(11/6)高于第三文件230的去重比率(1),表明第一文件210和第二文件220与其他文件的重合程度大于第三文件230与其他文件的重合程度。
作为获得文件的去重比率的另一种示例,针对某个文件,计算设备120可以将该文件的各个数据段的计数的倒数相加,除以该文件的数据段的数目,然后再求倒数来得出该文件的去重比率。按照这种方式,在图2的示例中,第一文件210和第二文件220的去重比率可以计算为6/(1/2+1/2+1/2+1/2+1/2+1)=12/7,而第三文件230的去重比率可以计算为5/(1+1+1+1+1)=1。在这种计算方式下,第一文件210和第二文件220的去重比率(12/7)高于第三文件230的去重比率(1),表明第一文件210和第二文件220与其他文件的重合程度大于第三文件230与其他文件的重合程度。
在其他实施例中,在为某个文件确定去重比率时,计算设备120还可以考虑各个数据段在该文件内部的重复次数,以便更精确地确定该文件的去重比率。后文中将参考图5来详细地描述这样的实施例。应当指出,本公开的实施例不限于文件的去重比率的特定计算方式,而是等同地适用于去重比率的任何适当的计算方式,只要得出的去重比率可以定量地衡量一个文件与其他文件的重合水平。此外,在一些实施例中,计算设备120可以将文件集合135中的多个或全部文件按照去重比率的大小进行排序,从而可以更快速地确定出哪些文件的去重比率低于阈值。
继续参考图3,在330处,计算设备120可以确定文件的去重比率是否低于阈值。在一些实施例中,这里的阈值被设置用于判断某个文件的去重比率是否低于某个预定的水平,因而被考虑为适合于从本地存储设备130迁移到远程存储设备140中。换言之,如果某个文件的去重比率高于该阈值,则可以认为该文件与文件集合135中的其他文件的重合水平较高,因此不适合被迁移到远程存储设备140。相反地,如果某个文件的去重比率低于该阈值,则可以认为该文件与文件集合135中的其他文件的重合水平较低,因此适合被迁移到远程存储设备140。
需要说明的是,该阈值的选取或设置可以考虑到各种各样可能的因素。作为示例,这些因素可以包括文件的去重比率的计算方式、文件集合135中要迁移到远程存储设备140的文件在文件集合135中所占的比例、基于文件迁移的历史数据得到的经验值、文件集合135的总去重比率,等等。基于这些因素中的一个或多个因素,计算设备120可以合理地确定上述阈值。例如,针对上文描述的用于计算文件的去重比率的不同计算方式,计算设备120可以适合地确定不同的阈值。又例如,如果文件集合135中的更高比例的文件需要被迁移到远程存储设备140,则计算设备120可以确定更高的阈值,以使得更多文件的去重比率可以低于该阈值。再例如,与存储***110用于迁移文件有关的历史数据可以用于调整上述阈值。
在其他实施例中,因为文件集合135的总去重比率实际上反映了文件集合135中的所有文件的去重比率的平均水平,所以上述阈值的确定还可以参考文件集合135的总去重比率。也即,计算设备120可以使用文件集合135的总去重比率作为参考值来确定上述阈值,从而可以参考文件集合135的整体重合水平,来合理地确定出与其他文件重合水平较高或较低的文件。具体地,计算设备120可以首先基于文件集合135的逻辑大小和物理大小,来确定文件集合135的总去重比率。例如,假设文件集合135在逻辑上存储10亿字节(1GB)的数据,而实际占用7亿字节(0.7GB)的物理存储空间,则文件集合135的总去重比率可以计算为1/0.7=10/7。
在确定出文件集合135的总去重比率之后,计算设备120可以基于文件集合135的总去重比率来确定上述阈值。例如,计算设备120可以将该阈值直接设置为文件集合135的总去重比率,或者设置为略小于文件集合135的总去重比率。通过这样的方式,计算设备120可以确保去重比率低于文件集合135的平均水平的文件被确定为与其他文件的重合水平较低。将这样的文件从本地存储设备130迁移到远程存储设备140可以显著地降低存储***110的数据存储成本。
在340处,如果计算设备120确定某个文件的去重比率低于阈值,则计算设备120可以将该文件从本地存储设备130迁移到远程存储设备140中。例如,在图2的示例中,假设按照某种计算去重比率的方式,第一文件210和第二文件220的去重比率为11/6,第三文件230的去重比率为1,并且这里的阈值被设置为1.5。在这种情况下,计算设备120可以确定第三文件230的去重比率低于阈值,则计算设备120可以将第三文件230从本地存储设备130迁移到远程存储设备140中。相反地,计算设备120可以确定第一文件210和第二文件220的去重比率高于阈值,则计算设备120可以不将第一文件210和第二文件220从本地存储设备130迁移到远程存储设备140中。
一般而言,文件集合135中的文件除了包括数据段之外,可能还包括与该文件相关联的元数据。通常,文件的元数据可以用于指示或记录与文件相关的任何信息。例如,在本公开的上下文中,某个文件的元数据可以指示该文件包括哪些数据段,或者进一步指示这些数据段如何被组织而形成该文件。在一些实施例中,在将文件从本地存储设备130迁移到远程存储设备140的过程中,对于文件的元数据,计算设备120可以采用不同的处理方式。
例如,作为一种示例迁移方式,当某个文件从本地存储设备130被迁移到远程存储设备140时,该文件的元数据也可以从本地存储设备130被迁移到远程存储设备140中。换句话说,计算设备120可以首先将该文件及其元数据从本地存储设备130复制到远程存储设备140中,然后计算设备120可以从本地存储设备130中删除该文件及其元数据。通过这种方式,与文件相关联的所有数据和信息可以均被转移到远程存储设备140中,从而最大程度地释放本地存储设备130的存储空间。
然而,在其他实施例中,当某个文件从本地存储设备130被迁移到远程存储设备140时,该文件的元数据可以被存储在本地存储设备130和远程存储设备140两者中。以此方式,在需要查询或获得与该文件有关的信息(例如,文件的数据段信息)时,计算设备120可以快速且便利地从本地存储设备130中来获得这些信息,而无需访问远程存储设备140。此外,本地存储设备130中留存的与文件相关联的元数据还可以隐含地指示该文件被存储在远程存储设备140中。在一些场景中,这可以简化计算设备120针对该文件的进一步操作。例如,关于该文件的增量备份文件的后续存储过程可以被优化。后文中将参考图6来详细地描述这样的实施例。
需要说明的是,图3描绘的存储管理方法300可以在存储***110运转期间的任何阶段或时间窗口中执行。也就是说,计算设备120可以随时发起并执行存储管理方法300,从而将本地存储设备130中的去重比率低于阈值的文件迁移到远程存储设备140中。然而,在一些实施例中,为了降低存储管理方法300的执行对存储***110的正常运转造成的不利影响,同时为了与存储***110的其他已有过程共用处理流程或数据,存储管理方法300可以在本地存储设备130的垃圾收集(GC)过程期间执行,该执行方式可以提供多方面的技术优势,详述如下。
首先,在本地存储设备130的垃圾收集阶段执行存储管理方法300可以避免存储管理方法300与本地存储设备130的常规数据备份、数据还原等操作发生资源竞争。在一些情况下,存储管理方法300可能涉及到一些处理器和存储器密集型操作,因此频繁地执行存储管理方法300可能会挤占用于执行本地存储设备130的其他正常数据保护操作的处理器和存储器资源。相比之下,本地存储设备130的垃圾收集阶段可以较长时间(例如,每周或每月)执行一次,这样的时间跨度可以确保积累出足够的数据以用于通过存储管理方法300迁移到远程存储设备140,并且保证正常的数据保护操作不会受到执行存储管理方法300的影响。
其次,存储管理方法300是为了将文件(或数据)从本地存储设备130迁移到远程存储设备140以节省数据存储成本。如果本地存储设备130中的某些文件已经过时或过期,则没有必要迁移这些文件。然而,在垃圾收集过程被执行之前,这些过时或过期的文件可能将被认为是有效数据而被迁移,这可能会向存储管理方法300引入不准确性。因此,将存储管理方法300安排在垃圾收集阶段期间或之后,也即在确认本地存储设备130中所有文件为有效之后,从而可以确保本地存储设备130中的文件的去重比率被正确地计算,并且确保不将过时或过期的文件迁移到远程存储设备140。
此外,本地存储设备130的垃圾收集阶段还可能涉及到建立文件集合135的全局数据段计数来列出所有文件包括的所有数据段,以进一步找出未被任何文件引用的数据段作为垃圾来回收。因此,在一些实施例中,在本地存储设备130的垃圾收集过程中获得的关于数据段的信息可以重用于执行存储管理方法300,或者反之在执行存储管理方法300过程中确定的关于数据段的信息可以重用于执行本地存储设备130的垃圾收集过程,这种重用可以避免引入额外的处理器或存储器开销来重复地获取关于数据段的相同信息。后文中将进一步描述这样的重用示例。
如上文在描述图3的框310时提到的,在一些实施例中,在确定文件集合135中的文件的各个数据段的各个计数时,计算设备120可以先确定文件集合135中的所有数据段,进而确定与所有数据段相对应的各个计数,然后再从这些计数中确定某个文件所包括的数据段的对应计数。下文将参考图4来详细地描述这样的实施例。
图4示出了根据本公开的实施例的用于确定与文件的数据段相对应的计数的示例过程400的流程图。在一些实施例中,过程400可以由存储***110中的计算设备120来实现,例如可以由计算设备120的处理器或处理单元来实现,或者由计算设备120的各种功能模块来实现。在其他实施例中,过程400也可以由独立于存储***110的计算设备来实现,或者可以由存储***110中的其他单元或模块来实现。
为了便于讨论且不失一般性,下文将参考图1和图2以第一文件210、第二文件220和第三文件230作为示例来描述过程400。然而,应当理解,本公开的实施例不限于任何特定的文件,而是等同地适用于包括数据段的任何文件。
在410处,计算设备120可以确定文件集合135包括的数据段集合。例如,计算设备120可以扫描文件集合135中的全部文件,从而确定文件集合135中包括的所有数据段组成的数据段集合。例如,在图2的示例中,计算设备120可以确定文件集合135包括的数据段集合为数据段250-1至250-12。在一些实施例中,文件集合135中的文件可以具有指示该文件包括哪些数据段的元数据,例如,文件的指纹信息等。在这样的情况下,计算设备120可以通过扫描每个文件的指纹来获知文件集合135包括的数据段集合。
在420处,计算设备120可以确定与文件集合135的数据段集合相对应的计数集合,该计数集合中的每个计数可以指示数据段集合中的一个数据段在文件集合中的出现次数。换言之,针对文件集合135所包括的所有数据段中的每个数据段,计算设备120可以确定该数据段在文件集合135中出现的次数,从而确定与之相对应的计数。例如,计算设备120可以为每个数据段设置对应的计数器,在扫描文件集合135中的全部文件期间,计算设备120可以通过该计数器来记录数据段在这些文件中出现了多少次。例如,在图2的示例中,计算设备120可以确定与数据段集合250-1至250-12相对应的计数集合为{2,2,2,2,2,1,1,1,1,1,1,1}。
在430处,从与文件集合135所包括的数据段集合相对应的计数集合中,计算设备120可以确定与某个文件的各个数据段相对应的各个计数。具体地,计算设备120可以确定该文件所包括的数据段。例如,在对文件集合135中的文件的扫描过程中,计算设备120即可以获知每个文件包括哪些数据段。在确定出某个文件包括哪些数据段之后,计算设备120然后可以在上述计数集合中找出与这些数据段相对应的各个计数。
例如,在图2的示例中,计算设备120可以确定第一文件210包括数据段250-1、数据段250-2、数据段250-3、数据段250-4、数据段250-5和数据段250-6,第二文件220包括数据段250-1、数据段250-2、数据段250-3、数据段250-4、数据段250-5和数据段250-7,并且第三文件230包括数据段250-8、数据段250-9、数据段250-10、数据段250-11和数据段250-12。然后,基于与数据段集合250-1至250-12相对应的计数集合{2,2,2,2,2,1,1,1,1,1,1,1},计算设备120可以确定与第一文件210的数据段250-1至250-6相对应的计数为{2,2,2,2,2,1},与第二文件220的数据段250-1至250-5和250-7相对应的计数也为{2,2,2,2,2,1},而与第三文件230的数据段250-8至250-12相对应的计数为{1,1,1,1,1}。
通过使用示例过程400来确定与文件的数据段相对应的计数,计算设备120可以免于针对每个文件的每个数据段都扫描文件集合135中的所有其他文件,而是替代地可以通过一次扫描来确定出与文件集合135中的所有数据段相对应的计数集合。然后,针对某个文件,计算设备120可以通过在计数集合中进行查询的方式,来确定与该文件的数据段相对应的计数。因此,示例过程400可以在很大程度上减小用于确定与文件的数据段相对应的计数的复杂度和处理资源量,该优点在文件集合135中的文件数目越大时越显著。
如上文提到的,在一些实施例中,本公开的实施例的存储管理方法300可以在针对本地存储设备130的垃圾收集过程期间执行。在这样的实施例中,存储管理方法300和本地存储设备130的垃圾收集过程可以共用某些相同的处理过程或信息。例如,计算设备120可以基于通过示例过程400所确定的数据段集合和计数集合,来执行本地存储设备130的垃圾收集过程。换言之,上文描述的数据段集合和计数集合可以重用于执行本地存储设备130的垃圾收集过程。更具体地,如果上述计数集合中的某些计数为零,则意味着数据段集合中存在未被任何文件引用的数据段,这可能是因为文件已经过时或过期导致的。因此,本地存储设备130的垃圾收集过程可以将这些未被任何文件引用的数据段回收,以释放存储空间。
以此方式,计算设备120仅需执行一次确定操作来获得文件集合135所包括的数据段集合和对应的计数集合,所得结果可以用于确定要迁移到远程存储设备140的文件、以及本地存储设备130的垃圾收集这两个过程,因此可以节省存储***110的资源(例如,计算资源和存储资源等),避免引入额外的开销,同时可以提高本地存储设备130的垃圾收集过程的效率。
作为更具体的示例,本地存储设备130的垃圾收集可以包括三个主要步骤。首先,计算设备120可以扫描文件集合135中的文件元数据信息(例如,指纹信息),来为本地存储设备130中的所有数据段建立全局表示。然后,计算设备120可以列举出文件集合135的文件***的名称空间中的所有文件的数据段组织结构(例如,默克尔Merkle树结构),以在全局表示中标记每个数据段是否为有效的数据段。然后,计算设备120可以挑选出那些未标记为有效的数据段,将其作为垃圾收集。
在一些实施例中,垃圾收集过程的上述前两个步骤可以重用于执行存储管理方法300中来计算每个文件的去重比率。需要说明的是,对于某些数据保护***,垃圾收集过程的第一步骤中的数据段全局表示可能不记录每个数据段被文件集合135中的所有文件引用的总次数,因为垃圾收集仅关注于数据段被文件引用的次数是否大于零。为了使垃圾收集过程的第一步骤适合重用于执行存储管理方法300,计算设备120可以将垃圾收集过程中的全局表示配置为记录每个数据段被文件引用的次数。
如上文在描述图3的框320时提到的,在一些实施例中,在为某个文件确定去重比率时,计算设备120还可以考虑各个数据段在该文件内部的重复次数,以便更精确地确定文件的去重比率。下文将参考图5来详细地描述这样的实施例。
图5示出了根据本公开的实施例的用于确定文件的去重比率的示例过程500的流程图。在一些实施例中,过程500可以由存储***110中的计算设备120来实现,例如可以由计算设备120的处理器或处理单元来实现,或者由计算设备120的各种功能模块来实现。在其他实施例中,过程500也可以由独立于存储***110的计算设备来实现,或者可以由存储***110中的其他单元或模块来实现。
为了便于讨论且不失一般性,下文将参考图1和图2以第一文件210、第二文件220和第三文件230作为示例来描述过程500。然而,应当理解,本公开的实施例不限于任何特定的文件,而是等同地适用于包括数据段的任何文件。
在510处,在某个文件包括多个数据段的情况下,计算设备120可以确定该多个数据段中的多个彼此不同的数据段在该文件中的多个出现次数。例如,在图2的示例中,计算设备120可以确定第一文件210的多个数据段250-1至250-6中的多个彼此不同的数据段在第一文件210中的多个出现次数为{1,1,1,1,1,1},第二文件220的多个数据段250-1至250-5和250-7中的多个彼此不同的数据段在第二文件220中的多个出现次数为{1,1,1,1,1,1},而第三文件230的多个数据段250-8至250-12中的多个彼此不同的数据段在第三文件230中的多个出现次数为{1,1,1,1,1}。
需要指出的是,在图2的示例中,已经假设第一文件210、第二文件220和第三文件230包括的多个数据段都是彼此不同的数据段,所以各个数据段在各个文件中出现的次数均为1。然而,在一些情况下,文件集合135中的某个文件可能包括多个彼此相同的数据段。也即,某个数据段可能在一个文件中重复多次。在这种情况下,当确定该文件的去重比率时,考虑数据段在文件内部的重复次数将有助于更加准确地确定文件的去重比率。
例如,假设文件集合135中还包括第四文件(未示出),第四文件包括10个数据段,其中前5个数据段是相同的,而其他5个数据段在文件集合135中是唯一的。此外,假设文件集合135中还包括第五文件(未示出),第五文件也具有10个数据段,其中前3个数据段与第四文件中的5个相同的数据段是相同的,而其他7个数据段在文件集合135中是唯一的。此外,进一步假设第四文件和第五文件的所有数据段与第一文件210、第二文件220和第三文件230的数据段均不相同。
在这样的假设下,计算设备120可以确定第四文件的多个数据段中的多个彼此不同的数据段在第四文件中的多个出现次数为{5,1,1,1,1,1},这是因为第四文件的前5个数据段是相同的数据段,其在文件中的出现次数可以仅被统计一次。类似地,第五文件的多个数据段中的多个彼此不同的数据段在第五文件中的多个出现次数为{3,1,1,1,1,1,1,1},这是因为第五文件的前3个数据段是相同的数据段,其在文件中的出现次数可以仅被统计一次。
在520处,基于文件中的彼此不同的数据段在文件中的多个出现次数和在示例方法300的框310中确定的与文件的所有数据段相对应的各个计数,计算设备120可以确定与多个彼此不同的数据段相对应的多个重复比率,其中每个重复比率可以指示彼此不同的数据段中的一个数据段在文件中的出现次数与在文件集合135中的出现次数之比。
例如,在图2的示例中,第一文件210包括的数据段250-1至250-6都是彼此不同的。因此,基于数据段250-1至250-6在第一文件210中的出现次数{1,1,1,1,1,1},以及与数据段250-1至250-6相对应的在文件集合135中的计数{2,2,2,2,2,1},计算设备120可以确定与数据段250-1至250-6相对应的重复比率为{1/2,1/2,1/2,1/2,1/2,1}。
类似地,第二文件220包括的数据段250-1至250-5和250-7都是彼此不同的。因此,基于数据段250-1至250-5和250-7在第二文件220中的出现次数{1,1,1,1,1,1},以及与数据段250-1至250-5和250-7相对应的在文件集合135中的计数{2,2,2,2,2,1},计算设备120可以确定与数据段250-1至250-5和250-7相对应的重复比率为{1/2,1/2,1/2,1/2,1/2,1}。
类似地,第三文件230包括的数据段250-8至250-12都是彼此不同的。因此,基于数据段250-8至250-12在第三文件230中的出现次数{1,1,1,1,1},以及与数据段250-8至250-12相对应的在文件集合135中的计数{1,1,1,1,1},计算设备120可以确定与数据段250-8至250-12相对应的重复比率为{1,1,1,1,1}。
与第一文件210、第二文件220和第三文件230不同,第四文件包括的前5个数据段是相同的,并且与第五文件的前3个数据段相同。因此,基于数据段在第四文件中的出现次数{5,1,1,1,1,1},以及与第四文件的数据段相对应的在文件集合135中的计数{8,8,8,8,8,1,1,1,1,1},计算设备120可以确定与第四文件的彼此不同的数据段相对应的重复比率为{5/8,1,1,1,1,1}。
类似地,第五文件包括的前3个数据段是相同的,并且与第四文件的前5个数据段相同。因此,基于数据段在第五文件中的出现次数{3,1,1,1,1,1,1,1},以及与第五文件的数据段相对应的在文件集合135中的计数{8,8,8,1,1,1,1,1,1,1},计算设备120可以确定与第五文件的彼此不同的数据段相对应的重复比率为{3/8,1,1,1,1,1,1,1}。
在530处,计算设备120可以基于文件的数据段的数目和文件的彼此不同的数据段的重复比率,来确定文件的去重比率。例如,为了使得具有不同数目的数据段的不同文件之间的去重比率具有可比性,文件的数据段的重复比率的总和可以归一化到一个数据段上。更具体地,计算设备120可以将文件的去重比率确定为文件的彼此不同的数据段的重复比率之和除以数据段数目之后再求倒数。换言之,文件的去重比率可以通过总逻辑数据段数目(不论数据段是否相同)除以总分摊物理数据段数目来表示,其中总分摊物理数据段即为文件的彼此不同的数据段的重复比率之和。
因此,继续讨论上文描述的示例,计算设备120可以将第一文件210的去重比率确定为6/(7/2)=12/7,将第二文件220的去重比率确定为6/(7/2)=12/7,将第三文件230的去重比率确定为5/5=1,将第四文件的去重比率确定为10/(5/8+5)=16/9,并且将第五文件的去重比率确定为10/(3/8+7)=80/59。
由此可见,通过使用示例过程500来确定文件的去重比率,计算设备120可以在确定某个文件的去重比率时将数据段在该文件内部的出现次数考虑在内,从而可以更准确地衡量具有重复数据段的文件的去重比率,进而可以提高所确定的文件的去重比率的准确度。
如上文在描述图3的框340时提到的,在一些实施例中,当某个文件从本地存储设备130被迁移到远程存储设备140时,该文件的元数据可以保存在本地存储设备130和远程存储设备140两者中。下文将参考图6来详细地描述这样的实施例。
图6示出了根据本公开的实施例的用于将文件从本地存储设备130迁移到远程存储设备140的示例过程600的流程图。在一些实施例中,过程600可以由存储***110中的计算设备120来实现,例如可以由计算设备120的处理器或处理单元来实现,或者由计算设备120的各种功能模块来实现。在其他实施例中,过程600也可以由独立于存储***110的计算设备来实现,或者可以由存储***110中的其他单元或模块来实现。
为了便于讨论且不失一般性,下文将参考图1和图2以第一文件210、第二文件220和第三文件230作为示例来描述过程600。然而,应当理解,本公开的实施例不限于任何特定的文件,而是等同地适用于包括数据段的任何文件。
在610处,计算设备120可以将待迁移的文件的一个或多个数据段从本地存储设备130复制到远程存储设备140中。例如,在图2的示例中,假设计算设备120确定要将第一文件210迁移到远程存储设备140中,则计算设备120可以将第一文件210的数据段250-1至250-6从本地存储设备130复制到远程存储设备140中。类似地,假设计算设备120确定要将第二文件220迁移到远程存储设备140中,则计算设备120可以将第二文件220的数据段250-1至250-5和250-7从本地存储设备130复制到远程存储设备140中。类似地,假设计算设备120确定要将第三文件230迁移到远程存储设备140中,则计算设备120可以将第三文件230的数据段250-8至250-12从本地存储设备130复制到远程存储设备140中。
在620处,计算设备120可以将待迁移的文件的元数据从本地存储设备130复制到远程存储设备140中,其中该元数据可以指示该文件包括哪些数据段。例如,在图2的示例中,假设计算设备120确定要将第一文件210迁移到远程存储设备140中,则计算设备120可以将第一文件210的元数据从本地存储设备130复制到远程存储设备140中,第一文件210的元数据可以指示第一文件210包括数据段250-1至250-6。
类似地,假设计算设备120确定要将第二文件220迁移到远程存储设备140中,则计算设备120可以将第二文件220的元数据从本地存储设备130复制到远程存储设备140中,第二文件220的元数据可以指示第二文件220包括数据段250-1至250-5和250-7。类似地,假设计算设备120确定要将第三文件230迁移到远程存储设备140中,则计算设备120可以将第三文件230的元数据从本地存储设备130复制到远程存储设备140中,第三文件230的元数据可以指示第三文件230包括数据段250-8至250-12。
在630处,计算设备120可以从本地存储设备130中删除待迁移的文件的数据段而不删除文件的元数据。例如,在图2的示例中,假设计算设备120确定要将第一文件210迁移到远程存储设备140中,则计算设备120可以从本地存储设备130中删除第一文件210的数据段250-1至250-6而不删除第一文件210的元数据。类似地,假设计算设备120确定要将第二文件220迁移到远程存储设备140中,则计算设备120可以从本地存储设备130中删除第二文件220的数据段250-1至250-5和250-7而不删除第二文件220的元数据。类似地,假设计算设备120确定要将第三文件230迁移到远程存储设备140中,则计算设备120可以从本地存储设备130中删除第三文件230的数据段250-8至250-12而不删除第三文件230的元数据。
需要说明的是,在一些实施例中,计算设备120可以不从本地存储设备130中删除被迁移的文件与其他未迁移的文件之间重合的数据段,从而不影响对未迁移文件的访问。然而,计算设备120从本地存储设备130中完全删除被迁移的文件的所有数据段也是可行的。在这种情况下,在需要访问与被迁移文件具有重合数据段的未迁移文件时,计算设备120可以基于未迁移文件的相关信息来恢复出从本地存储设备130删除的数据段,或者计算设备120可以从远程存储设备140来访问这些数据段。
通过使用示例过程600将文件从本地存储设备130迁移到远程存储设备140,文件的元数据(特别是与数据段之间的关系信息)可以留存在本地存储设备130中。因此,在需要查询或获得与该文件有关的数据段信息时,计算设备120可以快速且便利地从本地存储设备130中来获得这些信息,而无需访问远程存储设备140。此外,本地存储设备130中留存的文件的元数据还可以隐含地指示该文件被存储在远程存储设备140中。在一些场景中,这将会简化计算设备120针对该文件的进一步操作,例如,针对该文件的增量备份文件的存储操作等。下面参考图7来描述文件按照示例过程600被迁移到远程存储设备140之后的示例场景。
图7示出了根据本公开的实施例的将文件从本地存储设备130迁移到远程存储设备140之后,本地存储设备130和远程存储设备140各自存储的内容的示例700。为了便于讨论且不失一般性,示例700以第一文件210作为示例来描述第一文件120的迁移完成后,本地存储设备130和远程存储设备140各自存储的内容。然而,应当理解,本公开的实施例不限于任何特定的文件,而是等同地适用于包括数据段的任何文件。
如图7所示,在第一文件210从本地存储设备130迁移到远程存储设备140之后,远程存储设备140中存储有第一文件210的数据段250-1至250-6以及第一文件210的元数据215两者,其中元数据215可以指示第一文件210包括数据段250-1至250-6。而在本地存储设备130中,第一文件210的数据段250-1至250-6已经被删除,但是第一文件210的元数据215被保留在本地存储设备130中。如上文指出的,通过这样的方式,针对第一文件210的增量备份文件的存储操作可以得到优化。后文中将参考图9来详细地描述这样的示例。
一般地,第一文件210的元数据215可以具有任何适当的形式,只要元数据215可以指示第一文件210所包括的数据段250-1至250-6。例如,第一文件210的元数据215可以记录数据段250-1至250-6各自的标识符。又例如,第一文件210的元数据215可以记录数据段250-1至250-6的联合标识符,也即该联合标识符指示数据段250-1至250-6的组合。在其他实施例中,数据段250-1至250-6可以采用树状数据结构(例如,默克尔树)的形式被组织而形成第一文件210。下文将参考图8来描述这样的实施例,以及第一文件210的元数据215的示例。
图8示出了根据本公开的实施例的文件的示例数据结构800和元数据215的示例内容。为了便于讨论且不失一般性,图8以第一文件210的示例结构800作为示例来描述文件的组织结构和元数据的内容。然而,应当理解,本公开的实施例不限于任何特定的文件和数据结构,而是等同地适用于包括数据段的任何文件。
如图8所示,第一文件210的数据段250-1至250-6的标识符(例如,哈希值)可以分别表示为H1 802、H2 804、H3 806、H4 808、H5 810和H6 812。基于H1 802和H2 804两者可以生成标识符(例如,哈希值)H11 814,基于H3 806和H4 808两者可以生成标识符(例如,哈希值)H12 816,并且基于H5 810和H6 812两者可以生成标识符(例如,哈希值)H13 818。
此外,基于H11 814和H12 816两者可以生成标识符(例如,哈希值)H21 820,并且基于H12 816和H13 818两者可以生成标识符(例如,哈希值)H22 822。进一步地,基于H21820和H22 822两者可以生成标识符(例如,哈希值)H31 824。因此,第一文件210最终可以使用标识符H31 824来标识或识别。
在图8描绘的示例结构800中,第一文件210的树状数据结构可以是默克尔树结构,其可以通过默克尔树的指纹索引(简称为指纹)来表示。例如,该示例中的第一文件210的指纹索引850可以表示为“H31,H21,H22,H11,H12,H13,H1,H2,H3,H4,H5,H6”。该指纹索引850中的H31 824,H21 820,H22 822,H11 814,H12 816和H13 818对应的元数据内容可以分别表示为M31 844,M21 840,M22 842,M11 834,M12 836和M13 838。
也就是说,在一些实施例中,文件集合135中的每个文件可以表示为由元数据段和原子数据段(也即前文描述的文件的数据段)组成的默克尔树,并且默克尔树中的每个元数据段和数据段可以表示为哈希指纹,并且哈希指纹可以通过指纹索引映射到物理容器,即存储数据内容或元数据内容的物理存储空间。
因此,通过指纹索引850以及对应的元数据段M31 844,M21 840,M22 842,M11834,M12 836和M13 838,计算设备120可以完整地确定出第一文件210的树状结构800。因此,如图8进一步示出的,在第一文件210具有树状结构800的示例中,第一文件210的元数据215可以包括第一文件210的指纹索引850以及对应的元数据段M31 844,M21 840,M22 842,M11 834,M12 836和M13 838。
也就是说,在第一文件210从本地存储设备130迁移到远程存储设备140之后,第一文件210的所有用于原子数据段的物理容器(即数据段250-1至250-6)可以迁移到远程存储设备140中。因为原子数据段通常构成文件95%以上的物理数据,所以将它们全部迁移到远程存储设备140中可以在很大程度上节省的本地存储设备130的存储空间。相比之下,第一文件210的指纹索引850和对应的元数据段的物理容器(例如,元数据的物理存储空间)的副本可以保留在本地存储设备130和远程存储设备140两者中。
如上文在描述图7时提到的,通过将第一文件210的元数据215留存在本地存储设备130中,后续针对第一文件210的增量备份文件的存储操作可以得到优化。下面首先简要地介绍与本公开的实施例有关的文件增量备份技术。
当前,基于增量备份技术的文件虚拟合成技术和快速复制与覆盖技术等已经广泛地用于现代数据保护***中。与传统的完全增量备份相比,虚拟合成完全备份技术可以使得每个备份会话在逻辑上都是完全的,即使是仅增量数据需要被处理和存储。虚拟合成完全备份技术的关键点是虚拟合成技术。通过这种技术,针对新传入到存储***110的备份文件,计算设备120可以检测到本地存储设备130中已经存在新传入的备份文件的基础备份文件(也称为基础文件或父备份文件),并且仅新备份文件相对于基础备份文件的新数据或更改的数据需要被附加或覆盖到基础备份文件中。一般而言,新数据或更改的数据的比率通常比较低,例如,低于5%。
因此,在文件的虚拟合成期间,计算设备120可以在本地存储设备130中找到增量备份文件的基础备份文件。对于增量备份文件相对于基础备份文件的未更改的数据段,这些数据段的副本可以直接从基础备份文件附接到增量备份文件,而不会在存储设备上发生实际的数据写入。相比之下,增量备份文件相对于基础备份文件的那些更改的数据段或新数据段则需要被写入到存储设备中。
然而,根据本公开的实施例,本地存储设备130中的某些文件可能已经迁移到远程存储设备140中,而这些被迁移的文件可能是传入的新增量备份文件的基础文件。如果关于新传入的增量备份文件,计算设备120没有在本地存储设备130中找到其基础文件,则计算设备120可能需要从远程存储设备140中调出基础文件,或者可能需要将新传入的增量备份文件的所有数据段再次写入本地存储设备130中。这意味着,几乎相同的两份数据段副本将同时消耗本地存储设备130和远程存储设备140的存储空间,从而导致数据存储成本增加。对此,在一些实施例,通过合理地处理增量备份文件和远程存储设备140中已有的基础备份文件之间的关系,上面描述的双份存储场景可以有利地被避免。下文参考图9来描述这样的实施例。
图9示出了根据本公开的实施例的用于存储文件的增量备份文件的示例过程900的流程图。在一些实施例中,过程900可以由存储***110中的计算设备120来实现,例如可以由计算设备120的处理器或处理单元来实现,或者由计算设备120的各种功能模块来实现。在其他实施例中,过程900也可以由独立于存储***110的计算设备来实现,或者可以由存储***110中的其他单元或模块来实现。
为了便于讨论且不失一般性,下文将参考图1和图2以第二文件220作为第一文件210的增量备份文件为例来描述过程900。然而,应当理解,本公开的实施例不限于任何特定的文件,而是等同地适用于包括数据段的任何文件。此外,在关于图9的描述中,假定增量备份文件所针对的基础文件已经被迁移到远程存储设备140中。例如,更具体地,不同于图2中所描绘的第一文件210和第二文件220均已经存储在本地存储设备130中的场景,这里关于图9假设第一文件210初始存储在本地存储设备130中,并且当前已经被迁移到远程存储设备140,而作为第一文件210的增量备份文件的第二文件220此前未被存储在本地存储设备130中,并且当前被生成而需要被存储。
在910处,计算设备120可以确定针对文件的增量备份文件是否要被存储。需要说明的是,取决于存储***110的具体实现方式,计算设备120可以通过不同的方式来确定针对文件的增量备份文件是否要被存储。例如,在一些实施例中,客户端150可以直接向存储***110发送用于存储针对某个文件的增量备份文件的请求。因此,计算设备120可以基于客户端150的指示来确定要存储的文件是某个文件的增量备份文件。在其他实施例中,客户端150可以仅向存储***110发送用于存储文件的请求,计算设备120可以通过将待存储文件与已存储文件进行比较,来确定要存储的文件是某个文件的增量备份文件。
例如,在图2的示例中,第一文件210和第二文件220包括重合的数据段250-1至250-5,而两个文件仅数据段250-6和250-7是不相同的。因此,无论通过何种方式,计算设备120可以确定将被存储的第二文件220是第一文件210的增量备份文件。
在920处,如果计算设备120确定针对基础文件的增量备份文件要被存储,则计算设备120可以基于基础文件的元数据来确定基础文件已经被迁移到远程存储设备140中。例如,在图7的示例中,尽管作为基础文件的第一文件210已经被迁移到远程存储设备140中,但是本地存储设备130中还保存有第一文件210的元数据215。因此,基于本地存储设备130中的元数据215,计算设备120可以知晓第一文件210已经被迁移到远程存储设备140中,而不是不存在。
将明白,由于增量备份文件与基础文件具有一些共同的数据段,而这些数据段已经随着基础文件而被迁移到远程存储设备140中,因此计算设备120也可以将增量备份文件存储到远程存储设备140中,这样可以有利于发挥出增量备份技术和去重技术的效果,从而节省用于存储增量备份文件的物理存储空间。更具体地,通过将增量备份文件存储到远程存储设备140,计算设备120可以避免再次写入增量备份文件与基础文件共有的数据段。
因此,在930处,计算设备120可以将增量备份文件与基础文件不同的数据段存储在远程存储设备140中。也就是说,当新的增量备份文件到达存储***110时,计算设备120可以发现其基础文件已经迁移到远程存储设备140中,因此新的增量备份文件可以不保存在本地存储设备130中,而是直接迁移到远程存储设备140中。
这是合理的,因为增量备份文件的大部分内容(通常对于虚拟合成而言,变化率小于5%)已经随着其基础文件被迁移到远程存储设备140中。借助于留存在本地存储设备130中的基础文件的指纹索引和元数据的副本,基于虚拟合成技术,计算设备120无需遍历远程存储设备140来读取增量备份文件相对于基础文件未更改的数据段,这可能是成本高昂的。替代地,本地存储设备130中的基础文件的指纹索引和元数据可以指导虚拟合成操作将增量备份文件相对于基础文件未更改的数据段附接到增量备份文件,就像这些数据段仍在本地存储设备130中一样。
唯一需要的成本可能是将增量备份文件相对于基础文件的那些较少(例如,小于5%)的新数据或更改的数据迁移到远程存储设备140中,这是具有成本效益的。此外,通过将后续的相似的多个增量备份文件连续移动到远程存储设备140中,本地存储设备130和远程存储设备140中的数据去重率可以得到提高。需要注意的是,与虚拟合成技术类似,本公开的实施例也可以类似地适用于使用快速复制与覆盖的增量备份技术。
继续于上文描述的示例,在待存储的第二文件220是第一文件210的增量备份文件的示例中,第二文件220与第一文件210不同的数据段是数据段250-7。因此,在第一文件210已经存储在远程存储设备140的情况下,为了将第二文件220存储到远程存储设备140,计算设备120可以将数据段250-7存储到远程存储设备140中。
在940处,计算设备120可以将增量备份文件的元数据存储在远程存储设备140中,其中增量备份文件的元数据可以指示增量备份文件包括的数据段。例如,在第二文件220是第一文件210的增量备份文件的示例中,计算设备120可以在远程存储设备140中存储第二文件220的元数据,以指示第二文件220包括数据段250-1至250-5和250-7。
通过使用示例过程900来存储增量备份文件,计算设备120可以确保将重合程度较高的基础文件及其增量备份文件存储在相同的存储设备(例如,远程存储设备140)中,从而提高存储***110的存储效率和存储空间利用率,并且降低增量备份文件的存储成本。下面参考图10来描述增量备份文件按照示例过程900被存储到远程存储设备140之后的示例场景。
图10示出了根据本公开的实施例的将增量备份文件220存储到远程存储设备140之后,本地存储设备130和远程存储设备140各自存储的内容的示例1000。为了便于讨论且不失一般性,示例1000以第一文件210和第二文件220作为示例来描述第一文件210和第二文件220的迁移完成后,本地存储设备130和远程存储设备140各自存储的内容。然而,应当理解,本公开的实施例不限于任何特定的文件,而是等同地适用于包括数据段的任何文件。
如图10所示,在作为第一文件210的增量备份文件的第二文件220被存储到远程存储设备140之后,远程存储设备140中存储有第一文件210和第二文件220共有的数据段250-1至250-5、第一文件210独有的数据段250-6、以及第二文件220独有的数据段250-7。此外,远程存储设备140中还存储有第一文件210的元数据215和第二文件220的元数据225。在本地存储设备130中,可以不存储第一文件210和第二文件220的各个数据段,但是第一文件210的元数据215和第二文件220的元数据225可以被存储在本地存储设备130中。
与第一文件210的元数据215类似,第二文件220的元数据225也可以具有任何适当的形式,只要元数据225可以指示第二文件220所包括的数据段250-1至250-5和250-7。例如,第二文件220的元数据225可以记录数据段250-1至250-5和250-7各自的标识符。又例如,第二文件220的元数据225可以记录数据段250-1至250-5和250-7的联合标识符,也即该联合标识符指示数据段250-1至250-5和250-7的组合。此外,在数据段250-1至250-6通过树状结构800形成第一文件210的实施例中,数据段250-1至250-5和250-7也可以采用树状数据结构(例如,默克尔树)的形式被组织而形成第二文件220。下文将参考图11来描述这样的实施例,以及第二文件220的元数据225的示例。
图11示出了根据本公开的实施例的增量备份文件的示例数据结构和元数据225的示例内容。为了便于讨论且不失一般性,图11以第一文件210和第二文件220两者的示例结构1100作为示例来描述文件的组织结构和元数据的内容。然而,应当理解,本公开的实施例不限于任何特定的文件和数据结构,而是等同地适用于包括数据段的任何文件。
如图11所示,示例结构1100与图8的示例结构800在关于第一文件210的部分上是相同的,两者的区别在于,第二文件220的数据段250-7的标识符(例如,哈希值)可以表示为H7 1102,基于H5 810和H7 1102两者可以生成标识符(例如,哈希值)H14 1104,基于H12816和H14 1104两者可以生成标识符(例如,哈希值)H23 1106,并且基于H21 820和H231106两者可以生成标识符(例如,哈希值)H32 1108。因此,第二文件210最终可以使用标识符H32 1108来标识或识别。
在图11描绘的示例结构1100中,第二文件220的树状数据结构可以是默克尔树结构,其可以通过默克尔树的指纹索引(简称为指纹)来表示。例如,该示例中的第二文件220的指纹索引1150可以表示为“H32,H21,H23,H11,H12,H14,H1,H2,H3,H4,H5,H7”。该指纹索引1150中的H32 1108,H21 820,H23 1106,H11 814,H12 816和H14 1104对应的元数据内容可以分别表示为M32 1128,M21 840,M23 1126,M11 834,M12 836和M14 1124。
因此,通过指纹索引1150以及对应的元数据段M32 1128,M21 840,M23 1126,M11834,M12 836和M14 1124,计算设备120可以完整地确定出第二文件220的树状结构。因此,如图11进一步示出的,在第一文件210和第二文件220共同的树状结构1100的示例中,第二文件220的元数据225可以包括第二文件220的指纹索引1150以及对应的元数据段M321128,M21 840,M23 1126,M11 834,M12 836和M14 1124。
图12示意性地示出了一种可以被用来实施本公开的实施例的设备1200的框图。在一些实施例中,设备1200可以是电子设备,其可以用于实施图1中的计算设备120。如图12中所示出的,设备1200包括中央处理单元(CPU)1201,其可以根据存储在只读存储设备(ROM)1202中的计算机程序指令或者从存储单元1208加载到随机访问存储设备(RAM)1203中的计算机程序指令,来执行各种适当的动作和处理。在RAM 1203中,还可存储设备1200操作所需的各种程序和数据。CPU 1201、ROM 1202以及RAM 1203通过总线1204彼此相连。输入/输出(I/O)接口1205也连接至总线1204。
设备1200中的多个部件连接至I/O接口1205,包括:输入单元1206,例如键盘、鼠标等;输出单元1207,例如各种类型的显示器、扬声器等;存储单元1208,例如磁盘、光盘等;以及通信单元1209,例如网卡、调制解调器、无线通信收发机等。通信单元1209允许设备1200通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如示例方法或过程300、400、500、600和900可由处理单元1201来执行。例如,在一些实施例中,示例方法或过程300、400、500、600和900可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1208。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1202和/或通信单元1209而被载入和/或安装到设备1200上。当计算机程序被加载到RAM 1203并由CPU 1201执行时,可以执行上文描述的示例方法或过程300、400、500、600和900的一个或多个步骤。
如本文所使用的,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。本文还可能包括其他明确的和隐含的定义。
如本文所使用的,术语“确定”涵盖各种各样的动作。例如,“确定”可以包括运算、计算、处理、导出、调查、查找(例如,在表格、数据库或另一数据结构中查找)、查明等。此外,“确定”可以包括接收(例如,接收信息)、访问(例如,访问存储器中的数据)等。此外,“确定”可以包括解析、选择、选取、建立等。
应当注意,本公开的实施例可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行***,例如微处理器或者专用设计硬件来执行。本领域的技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。
此外,尽管在附图中以特定顺序描述了本公开的方法的操作,但是这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤组合为一个步骤执行,和/或将一个步骤分解为多个步骤执行。还应当注意,根据本公开的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
虽然已经参考若干具体实施例描述了本公开,但是应当理解,本公开不限于所公开的具体实施例。本公开旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等效布置。
Claims (16)
1.一种存储管理方法,包括:
确定与文件集合中的一个文件的至少一个数据段相对应的至少一个计数,所述文件集合被存储在本地存储设备中,所述至少一个计数指示所述至少一个数据段在所述文件集合中的出现次数,其中所述文件集合中的每个文件具有默克尔树结构,所述默克尔树结构由指纹索引表示,所述指纹索引包括所述至少一个数据段的哈希指纹和针对所述至少一个数据段的元数据;
使用所述指纹索引,基于所述至少一个计数来确定所述文件的去重比率,所述去重比率指示所述文件与所述文件集合中的其他文件的重合水平;
根据确定所述文件的所述去重比率低于阈值,将所述文件从所述本地存储设备迁移到远程存储设备中,
其中所述阈值基于所述文件集合的总去重比率而被确定,
其中所述总去重比率反映所述文件集合中所有文件的去重比率的平均水平,
其中将所述文件迁移到所述远程存储设备中包括:
将所述文件的所述至少一个数据段从所述本地存储设备复制到所述远程存储设备中;
将所述文件的所述元数据从所述本地存储设备复制到所述远程存储设备中,所述元数据指示所述文件包括所述至少一个数据段;以及
从所述本地存储设备中删除所述至少一个数据段而不删除所述元数据,
在将所述文件从所述本地存储设备迁移到所述远程存储设备之后,确定针对所述文件的增量备份文件要被存储;
将所述增量备份文件与所述文件不同的数据段存储在所述远程存储设备中;以及
将所述增量备份文件的元数据存储在所述本地存储设备中,所述元数据指示所述增量备份文件包括的数据段。
2.根据权利要求1所述的方法,其中确定所述至少一个计数包括:
确定所述文件集合包括的数据段集合;
确定与所述数据段集合相对应的计数集合,所述计数集合中的每个计数指示所述数据段集合中的一个数据段在所述文件集合中的出现次数;以及
从所述计数集合中确定与所述文件的所述至少一个数据段相对应的所述至少一个计数。
3.根据权利要求2所述的方法,还包括:
基于所确定的所述数据段集合和所述计数集合,来执行所述本地存储设备的垃圾收集过程。
4.根据权利要求1所述的方法,其中所述至少一个数据段包括多个数据段,并且其中确定所述去重比率包括:
确定所述多个数据段中的多个彼此不同的数据段在所述文件中的多个出现次数;
基于所述多个出现次数和与所述多个数据段相对应的多个计数,来确定与所述多个彼此不同的数据段相对应的多个重复比率,所述多个重复比率中的每个重复比率指示所述多个彼此不同的数据段中的一个数据段在所述文件中的出现次数与在所述文件集合中的出现次数之比;以及
基于所述多个数据段的数目和所述多个重复比率,来确定所述去重比率。
5.根据权利要求1所述的方法,其中所述文件集合的所述总去重比率基于所述文件集合的逻辑大小和物理大小而被确定。
6.根据权利要求1所述的方法,其中所述方法在所述本地存储设备的垃圾收集过程期间执行。
7.根据权利要求1所述的方法,其中所述远程存储设备包括云存储设备。
8.一种电子设备,包括:
至少一个处理器;以及
至少一个存储器,存储有计算机程序指令,所述至少一个存储器和所述计算机程序指令被配置为,与所述至少一个处理器一起,使得所述电子设备执行过程,所述过程包括:
确定与文件集合中的一个文件的至少一个数据段相对应的至少一个计数,所述文件集合被存储在本地存储设备中,所述至少一个计数指示所述至少一个数据段在所述文件集合中的出现次数,其中所述文件集合中的每个文件具有默克尔树结构,所述默克尔树结构由指纹索引表示,所述指纹索引包括所述至少一个数据段的哈希指纹和针对所述至少一个数据段的元数据;
使用所述指纹索引,基于所述至少一个计数来确定所述文件的去重比率,所述去重比率指示所述文件与所述文件集合中的其他文件的重合水平;
根据确定所述文件的所述去重比率低于阈值,将所述文件从所述本地存储设备迁移到远程存储设备中,
其中所述阈值基于所述文件集合的总去重比率而被确定,
其中所述总去重比率反映所述文件集合中所有文件的去重比率的平均水平,
其中将所述文件迁移到所述远程存储设备中包括:
将所述文件的所述至少一个数据段从所述本地存储设备复制到所述远程存储设备中;
将所述文件的所述元数据从所述本地存储设备复制到所述远程存储设备中,所述元数据指示所述文件包括所述至少一个数据段;以及
从所述本地存储设备中删除所述至少一个数据段而不删除所述元数据,
在将所述文件从所述本地存储设备迁移到所述远程存储设备之后,确定针对所述文件的增量备份文件要被存储;
将所述增量备份文件与所述文件不同的数据段存储在所述远程存储设备中;以及
将所述增量备份文件的元数据存储在所述本地存储设备中,所述元数据指示所述增量备份文件包括的数据段。
9.根据权利要求8所述的电子设备,其中所述电子设备被使得通过以下来确定所述至少一个计数:
确定所述文件集合包括的数据段集合;
确定与所述数据段集合相对应的计数集合,所述计数集合中的每个计数指示所述数据段集合中的一个数据段在所述文件集合中的出现次数;以及
从所述计数集合中确定与所述文件的所述至少一个数据段相对应的所述至少一个计数。
10.根据权利要求9所述的电子设备,其中所述至少一个存储器和所述计算机程序指令还被配置为,与所述至少一个处理器一起,使得所述电子设备:
基于所确定的所述数据段集合和所述计数集合,来执行所述本地存储设备的垃圾收集过程。
11.根据权利要求8所述的电子设备,其中所述至少一个数据段包括多个数据段,并且其中所述电子设备被使得通过以下来确定所述去重比率:
确定所述多个数据段中的多个彼此不同的数据段在所述文件中的多个出现次数;
基于所述多个出现次数和与所述多个数据段相对应的多个计数,来确定与所述多个彼此不同的数据段相对应的多个重复比率,所述多个重复比率中的每个重复比率指示所述多个彼此不同的数据段中的一个数据段在所述文件中的出现次数与在所述文件集合中的出现次数之比;以及
基于所述多个数据段的数目和所述多个重复比率,来确定所述去重比率。
12.根据权利要求8所述的电子设备,其中所述文件集合的总去重比率基于所述文件集合的逻辑大小和物理大小而被确定。
13.根据权利要求8所述的电子设备,其中所述电子设备被使得在所述本地存储设备的垃圾收集过程期间执行所述过程。
14.根据权利要求8所述的电子设备,其中所述远程存储设备包括云存储设备。
15.一种计算机程序产品,所述计算机程序产品被有形地存储在非易失性计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使机器执行方法:
确定与文件集合中的一个文件的至少一个数据段相对应的至少一个计数,所述文件集合被存储在本地存储设备中,所述至少一个计数指示所述至少一个数据段在所述文件集合中的出现次数,其中所述文件集合中的每个文件具有默克尔树结构,所述默克尔树结构由指纹索引表示,所述指纹索引包括所述至少一个数据段的哈希指纹和针对所述至少一个数据段的元数据;
使用所述指纹索引,基于所述至少一个计数来确定所述文件的去重比率,所述去重比率指示所述文件与所述文件集合中的其他文件的重合水平;
根据确定所述文件的所述去重比率低于阈值,将所述文件从所述本地存储设备迁移到远程存储设备中,
其中所述阈值基于所述文件集合的总去重比率而被确定,
其中所述总去重比率反映所述文件集合中所有文件的去重比率的平均水平,
其中将所述文件迁移到所述远程存储设备中包括:
将所述文件的所述至少一个数据段从所述本地存储设备复制到所述远程存储设备中;
将所述文件的所述元数据从所述本地存储设备复制到所述远程存储设备中,所述元数据指示所述文件包括所述至少一个数据段;以及
从所述本地存储设备中删除所述至少一个数据段而不删除所述元数据,
在将所述文件从所述本地存储设备迁移到所述远程存储设备之后,确定针对所述文件的增量备份文件要被存储;
将所述增量备份文件与所述文件不同的数据段存储在所述远程存储设备中;以及
将所述增量备份文件的元数据存储在所述本地存储设备中,所述元数据指示所述增量备份文件包括的数据段。
16.根据权利要求15所述的计算机程序产品,其中确定所述至少一个计数包括:
确定所述文件集合包括的数据段集合;
确定与所述数据段集合相对应的计数集合,所述计数集合中的每个计数指示所述数据段集合中的一个数据段在所述文件集合中的出现次数;以及
从所述计数集合中确定与所述文件的所述至少一个数据段相对应的所述至少一个计数。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010226554.9A CN113448491B (zh) | 2020-03-26 | 2020-03-26 | 存储***的数据迁移 |
US16/888,818 US11662907B2 (en) | 2020-03-26 | 2020-05-31 | Data migration of storage system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010226554.9A CN113448491B (zh) | 2020-03-26 | 2020-03-26 | 存储***的数据迁移 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113448491A CN113448491A (zh) | 2021-09-28 |
CN113448491B true CN113448491B (zh) | 2024-05-17 |
Family
ID=77807669
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010226554.9A Active CN113448491B (zh) | 2020-03-26 | 2020-03-26 | 存储***的数据迁移 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11662907B2 (zh) |
CN (1) | CN113448491B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114063937B (zh) * | 2022-01-18 | 2022-04-19 | 苏州浪潮智能科技有限公司 | 一种存储池副本策略调整方法、装置、设备及介质 |
CN114661527A (zh) * | 2022-05-23 | 2022-06-24 | 武汉四通信息服务有限公司 | 数据备份方法、装置、电子设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103229147A (zh) * | 2010-12-01 | 2013-07-31 | 国际商业机器公司 | 去重存储***内的合成备份 |
CN103797470A (zh) * | 2011-09-16 | 2014-05-14 | 日本电气株式会社 | 存储*** |
CN103959254A (zh) * | 2011-11-30 | 2014-07-30 | 国际商业机器公司 | 优化去重后的数据的迁移/复制 |
CN104205066A (zh) * | 2012-04-05 | 2014-12-10 | 国际商业机器公司 | 增加的联机去重复效率 |
US9852149B1 (en) * | 2010-05-03 | 2017-12-26 | Panzura, Inc. | Transferring and caching a cloud file in a distributed filesystem |
CN108431815A (zh) * | 2016-01-12 | 2018-08-21 | 国际商业机器公司 | 在处理器网格中的分布式数据的去重复数据 |
CN108733508A (zh) * | 2017-04-17 | 2018-11-02 | 伊姆西Ip控股有限责任公司 | 用于控制数据备份的方法和*** |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9405482B2 (en) * | 2012-12-21 | 2016-08-02 | Commvault Systems, Inc. | Filtered reference copy of secondary storage data in a data storage system |
US10108644B1 (en) * | 2014-03-12 | 2018-10-23 | EMC IP Holding Company LLC | Method for minimizing storage requirements on fast/expensive arrays for data mobility and migration |
US9864658B1 (en) * | 2014-12-01 | 2018-01-09 | Vce Company, Llc | Automation of deduplication storage capacity sizing and trending analysis |
US10901942B2 (en) * | 2016-03-01 | 2021-01-26 | International Business Machines Corporation | Offloading data to secondary storage |
US10956273B2 (en) * | 2016-03-28 | 2021-03-23 | International Business Machines Corporation | Application aware export to object storage of low-reference data in deduplication repositories |
-
2020
- 2020-03-26 CN CN202010226554.9A patent/CN113448491B/zh active Active
- 2020-05-31 US US16/888,818 patent/US11662907B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9852149B1 (en) * | 2010-05-03 | 2017-12-26 | Panzura, Inc. | Transferring and caching a cloud file in a distributed filesystem |
CN103229147A (zh) * | 2010-12-01 | 2013-07-31 | 国际商业机器公司 | 去重存储***内的合成备份 |
CN103797470A (zh) * | 2011-09-16 | 2014-05-14 | 日本电气株式会社 | 存储*** |
CN103959254A (zh) * | 2011-11-30 | 2014-07-30 | 国际商业机器公司 | 优化去重后的数据的迁移/复制 |
CN104205066A (zh) * | 2012-04-05 | 2014-12-10 | 国际商业机器公司 | 增加的联机去重复效率 |
CN108431815A (zh) * | 2016-01-12 | 2018-08-21 | 国际商业机器公司 | 在处理器网格中的分布式数据的去重复数据 |
CN108733508A (zh) * | 2017-04-17 | 2018-11-02 | 伊姆西Ip控股有限责任公司 | 用于控制数据备份的方法和*** |
Non-Patent Citations (1)
Title |
---|
RevDedup: A Reverse Deduplication Storage System Optimized for Reads to Latest Backups;Chun-Ho Ng;arxiv;第8页,参见第3.2.3节 * |
Also Published As
Publication number | Publication date |
---|---|
US20210303170A1 (en) | 2021-09-30 |
CN113448491A (zh) | 2021-09-28 |
US11662907B2 (en) | 2023-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11321303B2 (en) | Conflict resolution for multi-master distributed databases | |
US9116936B2 (en) | Inline learning-based selective deduplication for primary storage systems | |
US11157453B2 (en) | Parallel deduplication using automatic chunk sizing | |
CN102629247B (zh) | 一种数据处理方法、装置和*** | |
US8180811B2 (en) | Identifying unreferenced file system components | |
CN113448491B (zh) | 存储***的数据迁移 | |
EP2797013A1 (en) | Database update execution according to power management schemes | |
CN103473150A (zh) | 一种用于数据去重***中的碎片重写方法 | |
CN109804359A (zh) | 用于将数据回写到存储设备的***和方法 | |
CN103605585A (zh) | 一种基于数据发现的智能备份方法 | |
US20200409566A1 (en) | Key Value Store Using Progress Verification | |
CN110908589A (zh) | 数据文件的处理方法、装置、***和存储介质 | |
CN103412929A (zh) | 一种海量数据的存储方法 | |
WO2018000191A1 (zh) | 一种数据处理的方法和装置 | |
US11341055B2 (en) | Method, electronic device, and computer program product for storage management | |
CN108733584B (zh) | 用于优化数据缓存的方法和设备 | |
US10719532B2 (en) | Storage constrained synchronization engine | |
US11048417B2 (en) | Method, device and computer program product for storage management | |
US9576004B1 (en) | Free space management in databases | |
CN110851398B (zh) | 垃圾数据的回收处理方法、装置及电子设备 | |
WO2024021492A1 (zh) | 一种数据回收方法、装置、电子设备及存储介质 | |
CN115617802A (zh) | 一种全量快照快速生成方法、装置、电子设备及存储介质 | |
US10452637B1 (en) | Migration of mutable data sets between data stores | |
CN116820323A (zh) | 数据存储方法、装置、电子设备及计算机可读存储介质 | |
US20210117096A1 (en) | Method, device and computer program product for backuping 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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |