预置重复数据删除数据存储区
背景技术:1.可以应用数据归约技术来减少存储在存储系统中的数据量
。
示例数据归约技术包括重复数据删除
(deduplication)。
重复数据删除标识重复的数据单元,并且力图缩减或消除存储在存储系统中的重复数据单元的实例的数量
。
附图说明
2.关于以下附图描述了一些实施方式
。
3.图1是根据一些实施方式的示例系统的示意图
。
4.图2是根据一些实施方式的示例资源分配的图示
。
5.图3是根据一些实施方式的示例数据结构的图示
。
6.图4是根据一些实施方式的示例输入参数的图示
。
7.图5是根据一些实施方式的示例常数值的图示
。
8.图6是根据一些实施方式的示例过程的图示
。
9.图7是根据一些实施方式的示例计算设备的示意图
。
10.图8是根据一些实施方式的示例过程的图示
。
11.图9是根据一些实施方式的存储有指令的示例机器可读介质的图
。
12.在所有附图中,相同的附图标记指代相似但不一定相同的要素
。
附图不一定是按比例绘制的,并且一些部分的尺寸可以被放大以更清楚地图示所示的示例
。
此外,附图提供了与描述一致的示例和
/
或实施方式;然而,描述不限于附图中提供的示例和
/
或实施方式
。
具体实施方式
13.在本公开中,除非上下文另外明确指示,否则使用术语“一个
(a)”、“一种
(an)”或“所述
(the)”旨在同样包括复数形式
。
同样地,当在本公开中使用时,术语“包括
(includes/including/comprises/comprising)”或“具有
(have/having)”指明存在所述元件,但不排除存在或添加其他元件
。
14.在一些示例中,存储系统可以对数据进行重复数据删除以减少存储数据所需的空间量
。
存储系统可以执行重复数据删除过程,包括将数据流分解为离散的数据单元或“组块
(chunk)”。
进一步地,存储系统可以确定传入数据单元的标识符或“指纹
(fingerprint)”,并且可以确定哪些传入数据单元是先前存储的数据单元的复制品
。
在数据单元是复制品的情况下,存储系统可以存储对先前数据单元的引用,而不是存储重复的传入数据单元
。
15.如本文所使用的,“指纹”是指通过对数据单元的内容应用函数而得到的值
(
其中“内容”可以包括数据单元的内容的全部或子集
)。
可以应用的函数的示例包括基于传入数据单元产生散列值的散列函数
。
散列函数的示例包括如安全散列算法
2(sha-2)
散列函数
(
例如,
sha-224、sha-256、sha-384
等
)
等密码散列函数
。
在其他示例中,可以采用其他类型的散列函数或其他类型的指纹函数
。
[0016]“存储系统”可以包括一个存储设备或多个存储设备
。
存储系统还可以包括管理对
如存储阵列等
(
多个
)
存储设备的访问的
(
多个
)
存储控制器
。“数据单元”可以指可以在存储系统中单独标识的任何数据部分
。
在一些情况下,数据单元可以指组块
、
组块的集合
、
或任何其他数据部分
。
在一些示例中,存储系统可以将数据单元存储在持久性存储装置中
。
可以使用一种或多种
(
多个
)
持久性
(
例如,非易失性
)
存储设备
(
如
(
多个
)
基于磁盘的存储设备
(
例如,
(
多个
)
硬盘驱动器
(hdd))、(
多个
)
固态设备
(ssd)(
如
(
多个
)
闪速存储设备
)
等或者其组合
)
来实施持久性存储装置
。
[0017]“控制器”可以指硬件处理电路,其可以包括微处理器
、
多核微处理器的核
、
微控制器
、
可编程集成电路
、
可编程门阵列
、
数字信号处理器或其他硬件处理电路中的任一项或某种组合
。
可替代地,“控制器”可以指硬件处理电路与可在硬件处理电路上执行的机器可读指令
(
软件和
/
或固件
)
的组合
。
[0018]
在一些示例中,重复数据删除任务可以由在本文称为“重复数据删除数据存储区”的单独存储系统来执行
。
每个重复数据删除数据存储区可以实施为提供物理存储系统的抽象化并且包括表示物理存储系统的硬件部件的虚拟化部件的虚拟化系统或设备
。
在一些示例中,单个物理存储系统可以托管彼此独立操作的多个虚拟重复数据删除数据存储区
。
例如,第一虚拟重复数据删除数据存储区可以保护
(
即,处理和存储
)
商业网站的备份数据,并且第二虚拟重复数据删除数据存储区可以保护公司会计系统的备份数据
。
[0019]
在一些示例中,主机系统的计算资源可以在一个或多个重复数据删除数据存储区之间进行分配
。
例如,可以向每个重复数据删除数据存储区指派主机处理器
、
主机存储器
、
本地主机存储装置等的特定部分
。
然而,如果没有为某个重复数据删除数据存储区分配足够的计算资源,那么这个重复数据删除数据存储区可能不能高效地处理备份数据
。
在这样的情况下,备份过程可能会相对较慢地执行,并且可能无法在下一个备份过程被调度运行之前完成
。
进一步地,如果为重复数据删除数据存储区分配过量的计算资源,那么那些资源可能会被浪费
。
因此,分配过量的资源可能会导致相对较高的成本,但是却不提供任何附加益处
。
[0020]
根据本公开的一些实施方式,存储管理系统可以确定要预置给特定重复数据删除数据存储区的计算资源的量
。
在一些实施方式中,存储管理系统可以接收包括以下各项的输入:每日数据量
(
即,每天要保护的预期数据量
)、
最大本地保留期
(
即,在发起对数据的保护后
(
例如从创建该数据的备份开始
)
,在本地存储装置中存储该数据的最长时间量
)、
以及最大远程保留期
(
即,在发起对数据的保护后
(
例如从创建数据的备份开始
)
,在远程存储装置中存储该数据的最长时间量
)。
存储管理系统可以基于最大本地保留期与存储的数据结构的比较来确定本地存储乘数,并且然后可以基于本地存储乘数和每日数据量确定本地存储量
。
存储管理系统还可以基于最大远程保留期与存储的数据结构的比较来确定远程存储乘数,并且然后可以基于远程存储乘数和每日数据量确定远程存储量
。
然后,存储管理系统可以使用远程存储量来确定要存储在本地存储装置中的远程元数据的量
。
进一步地,如下文所述,存储管理系统可以确定要为重复数据删除数据存储区预置的其他资源量,包括存储器
、
处理器和存储输入
/
输出
(i/o)
性能
(
例如,每秒输入
/
输出操作
(iops))。
此外,在一些实施方式中,可以根据所确定的资源量来自动预置重复数据删除数据存储区
。
因此,所公开的技术可以提供具有足以满足期望性能水平的计算资源但却不会导致由于过量计算资源而产生的附加成本的重复数据删除数据存储区
。
以这种方式,所公开的技术可以提供一种
用于为各种工作负载确定适当资源量的高效技术,这可以提高重复数据删除存储系统的性能和效率
。
[0021]
图
1-示例存储系统
[0022]
图1示出了包括管理系统
160、
主机系统
105
和远程存储装置
140
的存储系统
100
的示例
。
主机系统
105
可以包括各种计算资源,如
(
多个
)
处理器
110、
存储器
120
和本地存储装置
130(
例如,硬盘
、
闪速存储装置
、
光盘等
)。(
多个
)
处理器
110
可以包括微处理器
、
微控制器
、
处理器模块或子系统
、
可编程集成电路
、
可编程门阵列
、
多个处理器
、
包括多个处理核的微处理器
、
或其他控制或计算设备
。
存储器
120
可以包括动态随机存取存储器
(dram)、
静态随机存取存储器
(sram)
等
。
本地存储装置
130
和远程存储装置
140
可以包括硬盘
、
闪速存储装置
、
光盘等
。
远程存储装置
140
在本文还可以称为“基于云的存储”。
[0023]
在一些实施方式中,主机系统
105
可以包括虚拟化管理器
155
以及任何数量的重复数据删除数据存储区
150a-150n(
在本文也称为“重复数据删除数据存储区
150”)。
虚拟化管理器
155
可以是可由
(
多个
)
处理器
110
执行的软件应用程序,以初始化并管理重复数据删除数据存储区
150。
例如,重复数据删除数据存储区
150
可以实施为用于执行重复数据删除的虚拟机,而虚拟化管理器
155
可以是管理重复数据删除数据存储区
150
的管理程序
。
在一些实施方式中,虚拟化管理器
155
可以管理对重复数据删除数据存储区
150
的主机资源
110、120、130
的分配
。
下面参考图2描述这种资源分配的示例实施方式
。
[0024]
在一些实施方式中,管理系统
160
可以包括用于确定或建议对重复数据删除数据存储区
150
的资源分配的功能
。
管理系统
160
可以
(
例如,经由网页或其他用户接口
)
接收指示
(
例如,在主机系统
105
或另一个系统上
)
要预置的重复数据删除数据存储区
150
的期望特性的输入
。
例如,所接收的输入可以包括每日数据量
、
最大本地保留期和最大远程保留期
。
管理系统
160
可以将本地保留期和远程保留期与包括存储乘数的存储的数据结构
170(
例如,查找表
)
相比较,并可以由此确定本地存储乘数和远程存储乘数
。
管理系统
160
可以基于每日数据量和本地存储乘数确定本地存储量
(
即,本地存储装置
130
的一部分
)。
管理系统
160
还可以基于每日数据量和远程存储乘数确定远程存储量
(
即,远程存储装置
140
的一部分
)
,并且然后可以使用远程存储量来确定要存储在本地存储装置
130
中的远程元数据量
。
进一步地,在一些实施方式中,管理系统
160
可以使用常数
175
来确定要为重复数据删除数据存储区预置的其他资源量,包括存储器
、
处理器和存储输入
/
输出
(i/o)
性能
。
在一些实施方式中,虚拟化管理器
155
可以从管理系统
160
接收这种资源信息,并且可以根据所接收的资源信息来自动预置重复数据删除数据存储区
150。
下面参考图2至图9进一步描述管理系统
160
的这种功能
。
[0025]
在一些实施方式中,管理系统
160
可以是包括
(
多个
)
处理器
、
存储器和
(
多个
)
存储设备
(
在图1中未示出
)
的计算设备
。
在这样的实施方式中,存储乘数数据结构
170
和常数
175
可以存储在管理系统
160
的
(
多个
)
存储设备中
。
在其他实施方式中,管理系统
160
可以实施为网络服务或功能
、
网页
、
在主机系统
105
上执行的应用程序等
。
[0026]
图
2-示例资源分配
[0027]
现在参考2,示出了示例资源分配
200a-200n(
在本文中也称为“资源分配
200”)
的图示
。
如所示出的,重复数据删除数据存储区
150a
可以使用对应的资源分配
200a
执行,并且重复数据删除数据存储区
150n
可以使用对应的资源分配
200n
执行
。
每个资源分配
200
可以
指定包括处理器
110、
存储器
120
和本地存储装置
130
在内的资源的特定量或比例
。
[0028]
在一些实施方式中,虚拟化管理器
155(
如图1所示
)
可以接收或以其他方式访问资源分配
200a-200n
,并且可以根据资源分配
200a-200n
来自动预置重复数据删除数据存储区
150a-150n。
然而,在其他实施方式中,可以将资源分配
200a-200n
提供给用户
(
例如,人类系统管理器
)
作为用于选择要
(
例如,通过购买计算和存储设备
、
通过租赁云服务等
)
预置的系统部件的建议
。
[0029]
图
3-示例数据结构
[0030]
现在参考图3,示出了根据一些实施方式的示例存储乘数数据结构
170
的图示
。
如所示出的,数据结构
170
可以包括多个行或记录,其中,每一行包括最大保留期
(
例如,从1天到7天
、
从8天到
90
天等
)
和存储乘数的不同组合
。
[0031]
在一些实施方式中,数据结构
170
可以是用于查找与指定的最大保留期相对应的存储乘数的表
。
例如,管理系统
160
可以接收指示五天最大本地保留期的输入,将该输入与数据结构
170
相比较,并且由此确定本地存储乘数为
0.9(
即,如在数据结构
170
的第一行中指定的
)。
在另一示例中,管理系统
160
可以接收指示
120
天最大远程保留期的另一输入,将该输入与数据结构
170
相比较,并且由此确定远程存储乘数为
1.5(
即,如在数据结构
170
的第三行中指定的
)。
[0032]
在一些实施方式中,可以用指示与不同的最大保留期相关联的平均存储要求的存储乘数来填充数据结构
170。
在一些示例中,与不同的最大保留期相关联的平均存储要求可能不会以简单或线性的方式作为最大保留期的函数而变化
(
即,存储乘数与最大保留期之间可能存在非线性关系
)。
而是,存储要求可能取决于各种保留方案而变化,这些保留方案通常用于不同保留期并且需要的存储量并非是保留期的函数
。
例如,假设对于四周的最大保留期,最常用的保留方案可能包括在第
1-2
周每天保留数据一次,并且在第
3-4
周每周保留数据一次
。
在另一示例中,对于六个月的最大保留期,最常用的保留方案可能包括在第1个月每天保留数据一次,在第
2-3
个月每周保留数据一次,并且在第
4-6
个月每月保留数据两次
。
[0033]
因此,在一些实施方式中,可以基于关于与不同最大保留期相关联的存储要求的专家信息和
/
或经验信息用存储乘数填充数据结构
170。
例如,专家信息可以包括用于不同最大保留期的最常用保留方案的知识
。
进一步地,经验信息
(
例如,系统测试结果
、
在实际系统使用期间产生的性能测量结果
、
历史用户观察结果等
)
可以指示与给定保留方案的不同部分相关联的存储要求
。
例如,经验信息可以指示两个连续的每日备份通常相差百分之
x
,两个连续的每周备份通常相差百分之y,两个连续的每月备份通常相差百分之z等
。
进一步地,数据可压缩性水平
(
即,使用重复数据删除
)
可能与两个连续备份之间的典型变化量成反比
。
因此,以这种方式,专家信息
(
例如,用于给定最大保留期的最常用保留方案
)
和经验信息
(
例如,与最常用保留方案的不同部分相关联的存储要求
)
可以用于确定与对应的最大保留期相关联的相对存储要求,并可以由此用于在数据结构
170
中填充存储乘数
。
此外,数据结构
170
可以允许基于期望最大保留期的用户输入来估计存储要求,而无需附加用户输入来指定重复数据删除数据存储区的详细特性
(
例如,保留方案
、
数据可压缩性等
)。
以这种方式,数据结构
170
可以减少用户在请求预置重复数据删除数据存储区时的工作量和复杂性
。
[0034]
在一些实施方式中,在重复数据删除数据存储区已经预置并执行了给定时间段之后,管理系统
160(
如图1所示
)
可以收集或接收有关重复数据删除数据存储区的实际执行的历史信息
。
这样的历史信息可以包括有关重复数据删除数据存储区在操作期间的实际本地和远程存储要求的信息
。
因此,在一些实施方式中,可以修改数据结构
170
,以包括反映重复数据删除数据存储区的实际性能的更新的存储乘数
。
在这样的实施方式中,管理系统
160
可以使用更新的数据结构
170
来重复确定资源分配的过程,并修改或更新对重复数据删除数据存储区的资源预置
。
以这种方式,对重复数据删除数据存储区的资源分配可以根据更准确的信息进行修正,并可以由此提高重复数据删除数据存储区的资源利用效率
。
[0035]
请注意,虽然图3将数据结构
170
图示为查找表,但其他实施方式也是可能的
。
例如,可以设想,存储乘数数据可以硬编码为程序指令,可以存储为带分隔符的文本文件
(
例如,作为键值对
)
,可以存储为可扩展标记语言
(xml)
文件等
。
[0036]
图
4-示例输入参数
[0037]
现在参考图4,示出了根据一些实施方式的示例输入参数
400
的图示
。
如所示出的,输入参数
400
可以包括每日数据量
、
最大本地保留期和最大远程保留期
。
每日数据量可以指定重复数据删除数据存储区操作期间每天要保护的预期数据量
(
例如,
1tb、150tb
等
)。
最大本地保留期可以指定任何给定的备份将在重复数据删除数据存储区的本地存储装置内
(
例如,在图1所示的本地存储装置
130
的分配部分
)
保留的最大时间段
。
最大远程保留期可以指定任何给定的备份将在重复数据删除数据存储区的远程存储装置内
(
例如,在图1所示的远程存储装置
140
的分配部分
)
保留的最大时间段
。
[0038]
在一些实施方式中,输入参数
400
可以与预置新的重复数据删除数据存储区
150(
如图1至图2所示
)
的请求相关联,并且可以指定所请求的重复数据删除数据存储区的期望特性
。
输入参数
400
可以由管理系统
160(
如图1所示
)
从用户
、
控制应用程序
、
操作系统等处接收
。
例如,输入参数
400
可以经由用户接口
、
应用程序编程接口
(api)
等接收
。
管理系统
160
可以使用所接收的输入参数
400
为重复数据删除数据存储区
150
确定资源分配
210(
如图2中所示
)。
[0039]
图
5-示例常数值
[0040]
现在参考图5,示出了根据一些实施方式的示例常数值
175
的图示
。
在一些实施方式中,管理系统
160(
如图1所示
)
可以包括常数值
175
,并且可以使用常数值
175
来确定一个或多个重复数据删除数据存储区的资源分配
。
[0041]
如图5所示,常数值
175
可以包括以下各项的值:基本随机存取存储器
(ram)、
存储区计数
、
存储区
ram、
数据会话
ram、
稀疏索引
ram、
备份窗口
、
备份流
、
最小备份流
、
复制流
、
最小复制会话
、
会话
/
流
(
即,每个流的会话
)、
远程元数据大小
、
虚拟中央处理单元
(cpu)、
每秒输入
/
输出指令
(iops)
和其他常数
。
[0042]
在一些实施方式中,基本
ram
常数可以指定运行操作系统
(os)、
备份应用程序等所需的
ram
内存量
(
例如,
10gb)。
存储区计数常数可以指定要执行的重复数据删除过程的预期数量
。
存储区
ram
常数可以指定用于重复数据删除数据存储区中内务处理所需的
ram
内存量
(
例如,
1gb)。
数据会话
ram
常数可以指定处理每个备份流所需的
ram
内存量
(
例如,
250mb、500mb
等
)。
稀疏索引
ram
常数可以指定表示重复数据删除数据存储区中的给定数据单位
(
例如,
1tb)
的稀疏索引所需的
ram
内存量
。
稀疏索引可以包括给定数据单位中包括的数据块的
抽样子集的散列
。
[0043]
在一些实施方式中,备份窗口常数可以指定预期完成备份的时间段
(
例如,8小时
)。
备份流常数可以指定为实现给定量的备份吞吐量所需的最小备份流数量
(
例如,要两个流以实现
1tb/
小时的备份吞吐量
)。
最小备份流常数可以指定重复数据删除数据存储区为实现单个备份的完全并行度而应该支持的最小备份流数量
(
例如,
16
个流
)。
复制流常数可以指定为实现给定量的复制吞吐量所需的最小复制流数量
(
例如,要两个流以实现
1tb/
小时的复制吞吐量
)。
最小复制会话常数可以指定重复数据删除数据存储区为实现单个复制的完全并行度而应该支持的最小复制流数量
(
例如,
16
个流
)。
[0044]
在一些实施方式中,每个流的会话常数可以指定每个备份流将打开的备份会话的数量
(
例如,两个备份会话
)。
远程元数据大小常数可以指定本地为远程存储数据保存的元数据的平均大小
(
例如,总远程存储量的3%
)。
虚拟
cpu
常数可以指定在假设特定的平均核性能的情况下,为实现给定量的吞吐量所需的虚拟处理器的数量
(
例如,假设平均核性能为
1.5ghz
,要两个虚拟处理器以实现
1tb/
小时的吞吐量
)。
每秒输入
/
输出操作
(iops)
值可以指定
(
多个
)
存储设备为实现给定量的吞吐量而需要提供的
iops
的数量
(
例如,假设平均
iop
大小为
100kb
,则
iops
为
200
以实现
1tb/
小时的吞吐量
)。
[0045]
图
6-用于预置重复数据删除数据存储区的示例过程
[0046]
现在参考图6,示出了根据一些实施方式的用于预置重复数据删除数据存储区的示例过程
600。
过程
600
可以由执行指令的
(
多个
)
处理器
110(
如图1所示
)
来执行
。
可以以硬件或硬件与编程的组合
(
例如,可由
(
多个
)
处理器执行的机器可读指令
)
的方式来实施过程
600。
机器可读指令可以存储在如光学存储设备
、
半导体存储设备或磁性存储设备等非暂态计算机可读介质中
。
机器可读指令可以由单个处理器
、
多个处理器
、
单个处理引擎
、
多个处理引擎等来执行
。
为了便于说明,下面可以参考示出了根据一些实施方式的示例的图1至图5来描述过程
600
的细节
。
然而,其他实施方式也是可能的
。
[0047]
框
610
可以包括接收指示重复数据删除数据存储区的每日数据量
、
最大本地保留期和最大远程保留期的输入
。
例如,参考图1,管理系统
160
可以接收指示要预置的重复数据删除数据存储区
150
的期望特性的输入参数,包括每日数据量
、
最大本地保留期和最大远程保留期
。
[0048]
框
620
可以包括基于最大本地保留与存储的数据结构的比较确定本地存储乘数
。
框
625
可以包括基于本地存储乘数和每日数据量确定本地存储量
。
例如,参考图1,管理系统
160
可以将最大本地保留期与存储的数据结构
170
相比较,并可以由此确定本地存储乘数
。
然后,管理系统
160
可以将本地存储量计算为每日数据量乘以本地存储乘数的乘积
。
该计算可以通过以下公式表示:
[0049]
本地存储=每日保护数据
*
本地存储乘数
[0050]
框
630
可以包括基于最大远程保留与存储的数据结构的比较确定远程存储乘数
。
框
635
可以包括基于远程存储乘数和每日数据量确定远程存储量
。
例如,参考图1,管理系统
160
可以将最大远程保留期与存储的数据结构
170
相比较,并可以由此确定远程存储乘数
。
然后,管理系统
160
可以将远程存储量计算为每日数据量乘以远程存储乘数的乘积
。
该计算可以通过以下公式表示:
[0051]
远程存储=每日保护数据
*
远程存储乘数
[0052]
框
640
可以包括基于远程存储量和远程元数据大小确定远程元数据量
。
例如,参考图1,管理系统
160
可以将远程元数据量计算为远程存储量乘以远程元数据大小常数
(
如图5所示
)
的乘积
。
该计算可以通过以下公式表示:
[0053]
远程元数据=远程存储
*
远程元数据大小
[0054]
框
645
可以包括确定要为重复数据删除数据存储区预置的本地存储的总量
。
例如,参考图1,管理系统
160
可以将本地存储的总量计算为本地存储量和远程元数据量的总和
。
该计算可以通过以下公式表示:
[0055]
总存储=本地存储
+
远程元数据
[0056]
框
650
可以包括确定重复数据删除数据存储区的数据会话的数量
。
例如,参考图1,管理系统
160
可以使用以下四个公式来计算数据会话的数量:
[0057]
吞吐量=每日保护数据
/
备份窗口
[0058]
备份流=
((
吞吐量
*
备份流
),(
最小备份流
))
中的最大值
[0059]
复制流=
((
吞吐量
*
复制流
),(
最小复制流
))
中的最大值
[0060]
会话的数量=
(
备份流
+
复制流
)*(
会话
/
流
)
[0061]
框
655
可以包括确定要为重复数据删除数据存储区预置的总内存量
。
例如,参考图1,管理系统
160
可以使用以下四个公式计算要预置的总内存:
[0062]
存储区
ram
=存储区计数
*
存储区
ram
[0063]
会话
ram
=会话的数量
*
数据会话
ram
[0064]
存储
ram
=
(
本地存储
+
远程存储
)*
稀疏索引
ram
[0065]
总内存=基本
ram+
存储区
ram+
会话
ram+
存储
ram
[0066]
框
660
可以包括确定要为重复数据删除数据存储区预置的处理器数量
。
例如,参考图1,管理系统
160
可以将处理器数量计算为吞吐量乘以虚拟
cpu
常数
(
如图5所示
)
的乘积
。
该计算可以通过以下公式表示:
[0067]
处理器数量=吞吐量
*
虚拟
cpu
[0068]
框
670
可以包括确定要为重复数据删除数据存储区预置的每秒输入
/
输出操作
(iops)
数量
。
例如,参考图1,管理系统
160
可以将
iops
数量计算为吞吐量乘以
iops
常数
(
如图5所示
)
的乘积
。
该计算可以通过以下公式表示:
[0069]
iops
数量=吞吐量
*iops
[0070]
框
680
可以包括基于所确定的资源量来预置重复数据删除数据存储区
。
例如,参考图1,虚拟化管理器
155
可以从管理系统
160
接收所确定的资源量,并且可以根据这些资源量来自动预置重复数据删除数据存储区
150。
在框
680
之后,过程
600
可以完成
。
[0071]
在一些实施方式中,在已经执行过程
600
来预置重复数据删除数据存储区之后,管理系统
160(
如图1所示
)
可以收集或接收有关重复数据删除数据存储区的实际执行的历史信息
。
进一步地,管理系统
160
可以更新数据结构
170
,以包括反映重复数据删除数据存储区的实际性能的新存储乘数
。
在这样的实施方式中,管理系统
160
可以使用更新的数据结构
170
重复过程
600
,并可以由此修改或重新预置分配给重复数据删除数据存储区的资源
。
以这种方式,可以重复过程
600
以提高重复数据删除数据存储区的资源利用效率
。
[0072]
图
7-示例计算设备
[0073]
图7示出了示例计算设备
700
的示意图
。
在一些示例中,计算设备
700
可以大体上对
应于管理系统
160(
如图1所示
)
中的一些或全部
。
如图所示,计算设备
700
可以包括硬件处理器
702
,存储器
704
以及包括指令
710-740
的机器可读存储装置
705。
机器可读存储装置
705
可以是非暂态介质
。
指令
710
到
740
可以由硬件处理器
702
或者由硬件处理器
702
中所包括的处理引擎执行
。
[0074]
可以执行指令
710
以接收指示重复数据删除数据存储区的预期数据量和至少一个保留期的输入
。
例如,参考图1,管理系统
160
可以接收指示要预置的重复数据删除数据存储区
150
的期望特性的输入参数,包括每日数据量
、
最大本地保留期和最大远程保留期
。
[0075]
可以执行指令
720
以执行至少一个保留期与存储的数据结构的比较
。
可以执行指令
730
以基于至少一个保留期与存储的数据结构的比较确定至少一个存储乘数
。
例如,参考图1,管理系统
160
可以将最大本地保留期与存储的数据结构
170
相比较,并可以由此确定本地存储乘数
。
在另一示例中,管理系统
160
可以将最大远程保留期与存储的数据结构
170
相比较,并可以由此确定远程存储乘数
。
[0076]
可以执行指令
740
以基于预期数据量和至少一个存储乘数确定要为重复数据删除数据存储区预置的存储量
。
例如,参考图1,管理系统
160
可以将本地存储量计算为每日数据量乘以本地存储乘数的乘积
。
[0077]
图
8-示例过程
[0078]
现在参考图8,示出了根据一些实施方式的示例过程
800。
在一些示例中,可以使用存储控制器
110(
图1所示
)
来执行过程
800。
可以以硬件或硬件与编程的组合
(
例如,可由
(
多个
)
处理器执行的机器可读指令
)
的方式来实施过程
800。
机器可读指令可以存储在如光学存储设备
、
半导体存储设备或磁性存储设备等非暂态计算机可读介质中
。
机器可读指令可以由单个处理器
、
多个处理器
、
单个处理引擎
、
多个处理引擎等来执行
。
为了便于说明,下面可以参考示出了根据一些实施方式的示例的图1至图3来描述过程
800
的细节
。
然而,其他实施方式也是可能的
。
[0079]
框
810
可以包括通过存储管理系统接收指示重复数据删除数据存储区的预期数据量和至少一个保留期的输入
。
框
820
可以包括通过存储管理系统执行至少一个保留期与存储的数据结构的比较
。
框
830
可以包括通过存储管理系统基于至少一个保留期与存储的数据结构的比较确定至少一个存储乘数
。
框
840
可以包括通过存储管理系统基于预期数据量和至少一个存储乘数确定要为重复数据删除数据存储区预置的存储量
。
框
850
可以包括至少基于所确定的存储量来预置重复数据删除数据存储区
。
在框
850
之后,过程
800
可以完成
。
[0080]
图
9-示例机器可读介质
[0081]
图9示出了根据一些实施方式的存储指令
910-940
的机器可读介质
900。
指令
910-940
可以由单个处理器
、
多个处理器
、
单个处理引擎
、
多个处理引擎等来执行
。
机器可读介质
900
可以是非暂态存储介质,如光学存储介质
、
半导体存储介质或磁性存储介质
。
[0082]
可以执行指令
910
以接收指示重复数据删除数据存储区的预期数据量和至少一个保留期的输入
。
例如,参考图1,管理系统
160
可以接收指示要预置的重复数据删除数据存储区
150
的期望特性的输入参数,包括每日数据量
、
最大本地保留期和最大远程保留期
。
[0083]
可以执行指令
920
以执行至少一个保留期与存储的数据结构的比较
。
可以执行指令
930
以基于至少一个保留期与存储的数据结构的比较确定至少一个存储乘数
。
例如,参考图1,管理系统
160
可以将最大本地保留期与存储的数据结构
170
相比较,并可以由此确定本
地存储乘数
。
在另一示例中,管理系统
160
可以将最大远程保留期与存储的数据结构
170
相比较,并可以由此确定远程存储乘数
。
[0084]
可以执行指令
940
以基于预期数据量和至少一个存储乘数确定要为重复数据删除数据存储区预置的存储量
。
例如,参考图1,管理系统
160
可以将本地存储量计算为每日数据量乘以本地存储乘数的乘积
。
[0085]
根据本文描述的实施方式,存储管理系统可以确定要预置给特定重复数据删除数据存储区的计算资源的量
。
在一些实施方式中,存储管理系统可以接收包括每日数据量
、
最大本地保留期和最大远程保留期的输入
。
存储管理系统可以基于最大本地保留期与存储的数据结构的比较来确定本地存储乘数,并且然后可以基于本地存储乘数和每日数据量确定本地存储量
。
存储管理系统还可以基于最大远程保留期与存储的数据结构的比较来确定远程存储乘数,并且然后可以基于远程存储乘数和每日数据量确定远程存储量
。
存储管理系统可以使用远程存储量来确定要存储在本地存储装置中的远程元数据的量
。
进一步地,存储管理系统可以确定要为重复数据删除数据存储区预置的其他资源量,包括存储器
、
处理器和存储
i/o
性能
。
在一些实施方式中,可以根据所确定的资源量来自动预置重复数据删除数据存储区
。
因此,所公开的技术可以提供具有足以满足期望性能水平的计算资源但却不会导致由于过量计算资源而产生的附加成本的重复数据删除数据存储区
。
以这种方式,所公开的技术可以提高重复数据删除存储系统的性能和效率
。
[0086]
注意,尽管图1至图9示出了各种示例,但是实施方式在这方面不受限制
。
例如,参考图1,可以设想存储系统
100
可以包括附加的设备和
/
或部件
、
更少的部件
、
不同的部件
、
不同的布置等
。
在另一示例中,可以设想上述管理系统
160
的功能可以包括在存储系统
100
的任何另一引擎或软件中
。
其他组合和
/
或变化也是可能的
。
[0087]
数据和指令存储在被实施为一个或多个计算机可读或机器可读存储介质的相应存储设备中
。
存储介质包括不同形式的非暂态存储器,包括:半导体存储器设备,如动态随机存取存储器或静态随机存取存储器
(dram
或
sram)、
可擦除可编程只读存储器
(eprom)、
电可擦除可编程只读存储器
(eeprom)
和闪速存储器;磁盘,如固定的软盘和可移动盘;其他磁性介质,包括磁带;光学介质,如光盘
(cd)
或数字视频盘
(dvd)
;或者其他类型的存储设备
。
[0088]
注意,上文讨论的指令可以在一个计算机可读或机器可读存储介质上提供,或者可替代地,可以在分布在具有可能多个节点的大型系统中的多个计算机可读或机器可读存储介质上提供
。
这种一个或多个计算机可读或机器可读存储介质被认为是物品
(
或制品
)
的一部分
。
物品或制品可以指任何制造的单个部件或多个部件
。
一个或多个存储介质可以位于运行机器可读指令的机器中
、
或者位于远程站点处,可以通过网络从所述远程站点下载机器可读指令以供执行
。
[0089]
在前述描述中,阐述了许多细节以使得理解本文中所公开的主题
。
然而,可以在没有这些细节中的一些细节的情况下实践实施方式
。
其他实施方式可以包括上文所讨论的细节的修改和变化
。
所附权利要求旨在覆盖这样的修改和变化
。