数据去重参数计算的制作方法

文档序号:29445617发布日期:2022-03-30 10:57阅读:106来源:国知局
数据去重参数计算的制作方法
数据去重参数计算


背景技术:

1.数据存储系统可以用于存储数据。在一些示例中,可以应用数据去重以减少由数据存储系统存储的数据的量。数据去重标识重复的数据值,并且试图消除存储在数据存储系统中的重复数据值的实例。
附图说明
2.关于以下附图描述了本公开的一些实施方式。
3.图1是根据一些示例的包括存储控制器和持久性存储装置的布置的框图。
4.图2是根据一些示例的包括数据卷(data volume)和相应概率基数估计器的布置的框图。
5.图3a至图3g图示了根据一些示例的通过相应操作更新的概率基数估计器的内容。
6.图4是根据一些示例的存储机器可读指令的存储介质的框图。
7.图5是根据一些示例的系统的框图。
8.图6是根据一些示例的计算数据去重参数的过程的流程图。
9.在所有附图中,相同的附图标记指代类似但不一定相同的元素。附图不一定按比例绘制,并且可以放大一些零件的尺寸以更清楚地图示所示出的示例。此外,附图提供了与描述一致的示例和/或实施方式;然而,描述不限于附图中提供的示例和/或实施方式。
具体实施方式
10.在本公开中,除非上下文另外明确指示,否则术语“一个(a)”、“一种(an)”或“所述(the)”的使用旨在同样包括复数形式。同样地,当在本公开中使用时,术语“包含(includes)”、“包含着(including)”、“包括(comprises)”、“包括着(comprising)”、“具有(have)”或“具有着(having)”指明存在所述元素,但不排除存在或添加其他元素。
11.数据存储系统可以将数据存储在多个数据卷中。数据存储系统的示例包括存储阵列、存储器件等。“数据卷”是指数据的逻辑集合。可以响应于来自请求方设备(如服务器计算机、台式计算机、笔记本计算机、平板计算机、智能电话或任何其他类型的电子设备)的写入请求而将逻辑数据块写入数据卷。
12.数据存储系统可以执行数据去重以用于减少或避免将重复数据值存储在数据存储系统的物理存储介质中。“物理存储介质”可以包括一个物理存储设备或多个物理存储设备。物理存储设备的示例包括基于盘(disk)的存储设备、固态驱动器等。
13.数据存储系统接收到的写入请求是要将逻辑数据块写入到一个数据卷,或替代性地,写入到多个数据卷。在将每个逻辑数据块的数据值存储到数据存储系统的物理存储介质之前,数据存储系统可以确定逻辑数据块的数据值是否已经存储在数据存储系统中。如果是,则数据存储系统可以选择不再次存储数据值(以避免存储重复的数据值)。
14.在具有大量数据卷的数据存储系统中(其中一些数据卷可能很大),在每个数据卷的基础上确定与数据去重有关的参数可能具有挑战性。作为示例,所述参数可以是单个数
据卷的去重比率,所述去重比率是基于写入到单个数据卷的逻辑数据块的量与所述数据卷中的唯一数据值的量之比计算的。
15.另一个示例性的感兴趣参数是关于在删除数据卷的情况下有多少个物理块可以被回收(reclaimed)的参数。“物理块”可以指数据存储系统的物理存储介质中的区域,其中所述区域存储数据值。构成相应物理块的物理存储介质中的区域可以各自具有指定的固定大小或者可以具有可变大小。
16.进一步示例性的感兴趣参数是关于多个数据卷的相似性的参数,如基于多个共享数据值的相似性。
17.在进一步示例中,与数据去重有关的其他参数可以在每个数据卷的基础上进行计算。更一般地,与数据去重有关的参数可以提供以下各项的任一项或某种组合的指示:数据去重在减少数据卷中存储的数据量中的有效性如何、数据卷占用了多少物理存储空间、数据卷在数据去重性能中的相似性如何等。
18.根据本公开的一些实施方式,可以使用概率基数估计器来计算与数据存储系统中的数据去重有关的参数。例如,概率基数估计器可以基于由hyperloglog算法使用的概率基数估计器以近似数据集中的多个不同元素。在其他示例中,可以采用用于估计数据集中的多个不同数据值的其他类型的概率基数估计器。
19.可以在数据存储系统在线时执行与数据去重有关的参数的计算,即,数据存储系统响应于来自一个请求方设备(或者替代性地,来自多个请求方设备)的传入请求而在存储数据和/或删除数据中是有效的。为了使得能够在线计算与数据去重有关的参数,概率基数估计器响应于数据存储系统中数据值的添加和移除而均被更新。
20.图1是包括通过网络104耦接到请求方设备106的数据存储系统102的示例布置的框图。网络104的示例包括局域网(lan)、广域网(wan)、存储区域网(san)或任何其他类型的网络(有线或无线均可)。
21.数据存储系统102包括存储控制器108和持久性存储装置110。存储控制器108管理对存储在持久性存储装置110处(或更具体地,存储在持久性存储装置110的物理存储介质上)的数据值112的访问(读取或写入)。
[0022]“控制器”可以指硬件处理电路,其可以包括微处理器、多核微处理器的核、微控制器、可编程集成电路、可编程门阵列、数字信号处理器或其他硬件处理电路中的任一项或某种组合。替代性地,“控制器”可以指硬件处理电路和可在硬件处理电路上执行的机器可读指令(软件和/或固件)的组合。
[0023]
可以使用(多个)持久性(例如,非易失性)存储设备(诸如(多个)基于盘的存储设备(例如,(多个)硬盘驱动器(hdd))、(多个)固态设备(ssd)(例如,(多个)闪存存储设备)等或其组合)中的任一设备或某种组合来实施持久性存储装置110。
[0024]
响应于在数据存储系统102处接收到的(诸如来自一个请求方设备106或来自多个请求方设备106的)写入请求,由存储控制器108接收与写入请求相关联的传入数据值114。写入请求是用于将逻辑数据块写入到一个数据卷(或多个数据卷)的请求。传入数据值114是在写入到(多个)数据卷的逻辑数据块中的数据值。
[0025]
除了写入请求之外,请求方设备106也可以向数据存储系统102提交用于读取(多个)数据卷的逻辑数据块的读取请求,这使得取得存储在持久性存储装置110处的对应数据
值112。
[0026]
进一步地,请求方设备106可以提交使得删除存储在持久性存储装置110处的数据值112的请求。
[0027]
存储控制器108包括去重引擎116、数据去重参数计算引擎120和合并引擎130。如此处所使用的,“引擎”可以指存储控制器108的硬件处理电路的一部分,或指可由存储控制器108执行的机器可读指令。
[0028]
去重引擎116对传入数据值114执行数据去重。去重引擎116包括数据值指纹生成器118和块索引更新逻辑122。数据值指纹生成器118和块索引更新逻辑122各自可以是去重引擎116的硬件处理电路或机器可读指令的一部分。尽管被描绘为去重引擎116的一部分,但是数据值指纹生成器118和/或块索引更新逻辑122可以与去重引擎116分离。
[0029]
数据值指纹生成器118基于传入数据值114来计算指纹(以下进一步解释指纹)。块索引更新逻辑122用于更新缓存的块索引124。
[0030]
在一些示例中,“块索引”是指将标识逻辑数据块的地址(称为逻辑块地址或lba)映射到对应存储位置指示符的映射信息。存储位置指示符提供对于将数据值存储在物理存储介质中的物理存储位置的指示。存储位置指示符的示例是顺序块编号(sbn)。
[0031]
sbn可用于指示存储在持久性存储装置110处的数据值112的物理存储位置。但是,在一些示例中,sbn实际上并不标识物理存储位置,而是sbn可以用于得到物理地址或标识物理存储位置(诸如通过使用盘索引142(在下文中进一步讨论))的其他值。尽管在本示例中提及了“sbn”,应当注意,存储位置指示符的另一个示例是标识块并且可以从中得到物理存储位置的块标识符。
[0032]
缓存的块索引124存储在数据存储系统102的存储器(memory)126中。可以利用存储器设备或存储器设备的集合来实施“存储器”。存储器设备的示例可以包括易失性存储器设备(例如,动态随机存取存储器(dram)设备、静态随机存取存储器(sram)设备等)和非易失性存储器设备(例如,闪存存储器设备或其他类型的非易失性存储器设备)中的任一项或某种组合。
[0033]
持久性块索引128被存储在持久性存储装置(storage)110处。缓存的块索引124的条目125被存储控制器108的合并引擎130合并到持久性块索引128中。在一些示例中,针对每个数据卷维护一个缓存的块索引124,并且针对每个数据卷维护一个持久性块索引128。如果存在多个数据卷,则存在相应的多个缓存的块索引124和持久性块索引128。
[0034]
合并引擎130可以响应于事件(诸如缓存的块索引124变满)或响应于周期性地或间歇性地被触发的时间事件而被触发以执行合并。缓存的块索引124变“满”是指分配给存储器126中的缓存的块索引124的存储区超过指定阈值。
[0035]
条目125响应于传入数据值114而由块索引更新逻辑122添加到缓存的块索引124。对于给定的传入数据值114,将条目125(包含映射到sbn的lba)添加到缓存的块索引124。lba标识包含给定传入数据值的逻辑数据块。
[0036]
进一步参考图2,逻辑数据块202-1被写入到数据卷1,并且逻辑数据块202-n被写入到数据卷n(其中n≥2)。在根据图2的示例中,数据卷1到n是域210的一部分。域可以包括一个数据卷或多个数据卷。在一些示例中,域210可以是去重域,其中存储在去重域的(多个)数据卷中的数据值经受数据去重以移除或减少重复数据值。在一些示例中,数据存储系
统可以包括多个域。
[0037]
每个逻辑数据块202-i(i=1-n)与相应lba和对应数据值(图1中的传入数据值114)相关联。每个数据卷1到n包含已经写入到所述数据卷的逻辑数据块。应当注意,去重可以应用于仅单个数据卷的逻辑数据块的数据值,或替代性地,应用于多个数据卷的逻辑数据块的数据值。
[0038]
注意,sbn表示存储在数据存储系统102中的唯一数据值。更具体地,sbn提供对持久性存储装置的物理存储介质中的、对应的唯一数据值112所被存储的物理存储位置的指示。
[0039]
块索引(缓存的块索引124和/或持久性块索引128)中的lba是数据卷的逻辑数据块的地址。逻辑数据块可以包含或不包含重复的数据值。包含重复数据值的逻辑数据块的lba通过块索引的相应条目映射到同一sbn(对应于相应数据值112)。
[0040]
响应于给定的传入数据值114,去重引擎116确定重复数据值112是否已经存储在持久性存储装置110处。如果是,则给定的传入数据值114不被再次存储在持久性存储装置110处以避免存储重复数据值。相反,去重引擎116更新存储在持久性存储装置110处的元数据(未示出)以指示已经接收了与已经存储在持久性存储装置110处的给定数据值112相对应的新传入数据值114。元数据可以包括有多少个传入数据值114(对应于逻辑数据块到数据卷的写入)与给定数据值112重复的计数。
[0041]
去重引擎116执行的数据去重基于通过数据值指纹生成器118从传入数据值114生成的指纹。“指纹”是指通过对数据值的内容应用函数而得到的值(其中“内容”可以包括数据值的全部或子部分)。可以应用的函数的示例包括基于传入数据值114产生散列值的散列函数。散列函数的示例包括密码散列函数,诸如安全散列算法2(sha-2)散列函数(例如,sha-224、sha-256、sha-384等)。在其他示例中,可以采用其他类型的散列函数或其他类型的指纹函数。
[0042]
指纹表示存储在数据存储系统102中的数据值。可以将为传入数据值114计算的指纹与存储在指纹索引132中的指纹进行比较。指纹索引132可以存储在持久性存储装置110处。在一些情况下,指纹索引132的一部分可以缓存在存储器126中。指纹索引132包括与表示存储在持久性存储装置110处的数据值112的指纹相对应的条目。在一些示例中,指纹索引132的每个条目可以将指纹映射到sbn。
[0043]
如果为传入数据值114计算的指纹与指纹索引132中的指纹相匹配,则这可以用于确定传入数据值114与已经存储在持久性存储装置110处的数据值112重复。如果给定的传入数据值114与已经存储在持久性存储装置110处的数据值112重复,则去重引擎116在给定的传入数据值114的lba与已经存储在持久性存储装置110处的数据值112的sbn之间产生映射。然后此映射作为条目125被添加到缓存的块索引124。
[0044]
如果进一步的传入数据值114不与已经存储在持久性存储装置110处的数据值112重复,则去重引擎116在进一步的传入数据值114的lba与为进一步的传入数据值114提供物理存储位置的指示的新sbn之间产生进一步映射。然后此进一步映射作为另一个条目125被添加到缓存的块索引124。
[0045]
数据去重参数计算引擎120包括从去重引擎116接收传入数据值114的sbn的散列逻辑134。散列逻辑134通过对由去重引擎116提供的sbn应用散列函数来计算sbn散列值138
(图2)。对sbn应用的散列函数可以与数据值指纹生成器118对传入数据值114应用的散列函数相同或不同。
[0046]
尽管图1中描绘的示例示出了用于基于sbn计算散列值的散列逻辑134,但在其他示例中,数据去重参数计算引擎120可以包括对sbn应用时产生用于更新概率基数估计器136的输出值的不同类型的函数。基数估计器136可以被存储在存储器126中。在一些情况下,基数估计器136也可以被存储在持久性存储装置110处。
[0047]
如图2中进一步示出的,每个数据卷可以与对应的不同基数估计器相关联。例如,数据卷1与基数估计器136-1相关联,并且数据卷n与基数估计器136-n相关联。
[0048]
在一些示例中,基数估计器136(图1)包括数据结构,所述数据结构包含可用于得到存储在数据存储系统102中的唯一数据值的估计量的计数。例如,数据结构可以是布置为行和列的计数阵列的形式(图2示出了基数估计器136-1和136-2中的每个基数估计器包括条目阵列,其中每个条目包括相应计数)。
[0049]
尽管在一些示例中提及了被布置为计数阵列的基数估计器,但是应当注意,在其他示例中概率基数估计器可以具有其他形式。
[0050]
根据本公开的一些实施方式,基数估计器136的条目中的计数响应于映射到条目的数据值的添加或映射到条目的数据值的删除而被更新。响应于数据值的添加和移除而更新基数估计器136的条目中的计数的能力提供了在数据存储系统102在线时数据去重参数计算引擎120计算与数据去重有关的参数的能力。
[0051]
如图2所示,数据去重参数计算引擎120的散列逻辑134为逻辑数据块202-1的传入数据值产生的sbn散列值138映射到基数估计器136-1的条目204。例如,可以将sbn散列值138分为映射到基数估计器136-1的相应列的第一散列部分138-a和映射到基数估计器136-1的相应行的第二散列部分138-b。由散列部分138-a和138-b映射的相应列和相应行的交叉点是包含计数的条目204。第一散列部分138-a的不同值映射到基数估计器136-1的不同列,并且第二散列部分138-b的不同值可以映射到基数估计器136-1的不同行。
[0052]
在一些示例中,第二散列部分138-b不直接映射到基数估计器136-1的行。相反,数据去重参数计算引擎120可以确定第二散列部分138-b中有多少个尾随零(尾随零的量)。第二散列部分138-b的尾随零的此量映射到基数估计器136-1的相应行。例如,第二散列部分138-b的0个尾随零映射到基数估计器136-1的行0、第二散列部分138-b的1个尾随零映射到基数估计器136-1的行1、第二散列部分138-b的2个尾随零映射到基数估计器136-1的行2,以此类推。
[0053]
第二散列部分138-b的尾随零的量是指第二散列部分138-b的最低有效位中有多少个零。
[0054]
基数估计器136也可以被称为计数基数估计器,因为在基数估计器136中保持计数以跟踪具有相应特性(在上面的示例中是从相应sbn产生的sbn散列值中的尾随零的数量)的sbn的出现量。
[0055]
下表1提供了从具有示例值“a”的sbn产生的sbn散列值138的示例。
[0056]
表1
[0057]
sbnasbn散列值01101010101000
第一散列部分0110第二散列部分1010101000第二散列部分中的尾随零3
[0058]
根据表1,散列逻辑134基于具有值“a”的sbn来计算对应的sbn散列值(具有二进制序列01101010101000)。
[0059]
sbn散列值(01101010101000)被分为第一散列部分138-a,所述第一散列部分在表1的示例中为sbn散列值的前4位,即,0110。第二散列部分138-b包括sbn散列值的剩余位(1010101000)。
[0060]
数据去重参数计算引擎120对第二散列部分138-b中的尾随零的量进行计数。在表1的示例中,尾随零的量为3,其可以映射到基数估计器的相应行(例如,行3)。第一散列部分138-a(0110)映射到基数估计器的相应列。
[0061]
在替代性示例中,第一散列部分138-a映射到基数估计器的行,并且第二散列部分138-b(或更具体地,第二散列部分138-b中的零的量)映射到基数估计器的列。
[0062]
由于传入数据值114被存储在数据存储系统102中导致sbn被添加到块索引(缓存的块索引124或持久性块索引128),因此基数估计器中的相应计数递增。
[0063]
由存储控制器108接收的请求也可能导致从数据存储系统102删除数据值112。如果删除操作导致没有数据值112的实例保留在持久性存储装置110处,则从持久性存储装置110删除数据值112。当数据值112被删除时,对应的sbn也被删除。每当删除sbn时,去重引擎116可以向数据去重参数计算引擎120提供指示。数据去重参数计算引擎120可以检测到sbn的删除,并且可以使基数估计器136的条目中的相应计数递减。
[0064]
在替代性示例中,代替响应于将sbn添加到块索引而递增基数估计器136的映射条目中的计数,所述计数可以相反递减。在这样的替代性示例中,响应于从块索引中删除sbn,基数估计器136的映射条目中的计数递增。
[0065]
更一般地,响应于sbn的添加,使基数估计器136的映射条目中的计数前进(advanced)(递增或递减中的一个),并且响应于sbn的移除,基数估计器136的映射条目中的计数被倒退(reversed)(递增或递减中的另一个)。
[0066]
基于基数估计器136-1中的计数,数据去重参数计算引擎120计算与数据去重有关的参数(图2中的“数据去重参数140”)。可以存在通过数据去重参数计算引擎120计算的多个不同的数据去重参数140。(多个)数据去重参数140可以被存储在存储器126中(并且可能还可以存储在持久性存储装置110中)。
[0067]
可以将类似技术应用于计算与数据卷n的数据去重有关的参数。
[0068]
持久性存储装置110还存储盘索引142,所述盘索引包括将对应的sbn映射到相应的物理存储位置标识符(如物理地址(图1中的“addr”))的条目143。为了取得对应于sbn的数据值112,存储控制器108可以访问盘索引142的对应条目143,其中条目143包含对应于该sbn的物理存储位置标识符。然后,存储控制器108使用所述物理存储位置标识符来取得对应的数据值112。
[0069]
下表3示出了示例,其中操作1到操作12涉及sbn的添加,操作13涉及sbn的删除。例如,操作1添加sbn“a”,操作2添加sbn“b”,以此类推。
[0070]
表2
[0071][0072]
图3a至图3g中示出了响应于操作的基数估计器136的更新。
[0073]
响应于添加sbn“a”的操作1,对应的sbn散列值(0010100)映射到基数估计器136的条目302。具体地,第一散列部分(例如,00)映射到基数估计器136的列0(306-0),并且具有2个尾随零的第二散列部分(10100)映射到对应于2个尾随零的行2(304-2)。数据去重参数计算引擎120使条目302中的计数递增(从0到1)。
[0074]
基数估计器136具有行304-0到304-5(分别映射到具有0个到5个尾随零的第二散列部分值)和列306-0到306-3(分别映射到第一散列部分值0到3)。
[0075]
尽管图3a至图3f示出了具有特定数量的行和列的基数估计器136,但是在其他示例中,基数估计器136可以具有其他数量的行和列。
[0076]
操作2添加sbn“b”,这产生映射到行304-0和列306-2中的条目308的sbn散列值(1001001)(图3b)。数据去重参数计算引擎120使条目308中的计数递增(从0到1)。
[0077]
操作3添加sbn“c”,这产生映射到行304-2和列306-1中的条目310的sbn散列值(0100100)(图3c)。数据去重参数计算引擎120使条目310中的计数递增(从0到1)。
[0078]
操作4再次添加也在操作1中添加了的sbn“a”。结果,数据去重参数计算引擎120再次使条目302中的计数递增(从1到2)。
[0079]
图3e示出了响应于操作5的基数估计器136的更新。
[0080]
剩余的操作6至11导致基数估计器136的对应条目中的计数的相应更新(递增)。
[0081]
图3g示出了响应于操作12的基数估计器136的更新。
[0082]
操作13移除了sbn“a”的出现,这使数据去重参数计算引擎120将条目302中的计数从图3f中的值4递减到图3g中的值3。
[0083]
可以基于sbn散列值的尾随零的量来估计数据卷的sbn的量。对于数据卷,sbn的量有效地表示存储在数据存储系统102中的唯一数据值(图1中的112)的量。
[0084]
如果给定的sbn散列值具有nt个尾随零,则sbn的估计量被计算为2
nt
。前述内容基
于以下假设:约1/2的sbn散列值具有0个尾随零,约1/4的sbn散列值具有1个尾随零,约1/8的sbn散列值具有2个尾随零,以此类推。注意,基于sbn散列值的尾随零的数量来估计sbn的量是粗略的估计,这可能不准确。为了补偿这种不准确性,数据去重参数计算引擎120使用对应于基数估计器136的多个列(例如,图3a至图3g中的4列)的多个sbn散列值来计算sbn的量。
[0085]
基数估计器136的列中的每一列可以被存储在相应寄存器中。例如,可以使用4个寄存器来存储图3a至图3g的基数估计器136的4列。
[0086]
sbn的量的计算可以在数据存储系统102操作期间的任何时间发生,诸如在与表2中的操作1至13相对应的任何时间发生。
[0087]
以下假设sbn的量的计算在操作13之后发生,并且基于图3g所示的更新的基数估计器136。
[0088]
在每个列(寄存器)内,数据去重参数计算引擎120确定观察到的最高(最大)阶sbn散列值。在基数估计器136的一列中观察到的sbn散列值的最大阶数为1加上在所述列中观察到的尾随零的最大量(1+nt,其中nt表示在所述列中观察到的尾随零的最大量)。例如,在图3g的列306-0中,在相应的行304-0和304-2中观察到两个非零条目。在图3g的列306-0中观察到的sbn散列值的最大阶数为1+2(=3)。类似地,在图3g的列306-1中观察到的sbn散列值的最大阶数为1+3(=4),在图3g的列306-2中观察到的sbn散列值的最大阶数为1+1(=2),并且在图3g的列306-3中观察到的sbn散列值的最大阶数为1+1(=2)。
[0089]
然后,数据去重参数计算引擎120根据以下计算多个寄存器(m个寄存器,其中m≥2)的最大阶数的调和平均值(h):
[0090][0091]
其中mo[j]是寄存器j的最大阶数(基数估计器136中的列j)。在图3g中,m=4。
[0092]
在一些示例中,为了补偿sbn散列值中的散列冲突,可以将校正因子(b
mm
m2)应用于调和平均值(z)如下:
[0093]
c=bmm2z。
[0094]bm
的值可以基于m的值,并且可以基于期望的散列冲突而经验地被得到。
[0095]
c的值是数据存储系统102中的sbn的量的估计,其表示存储在数据存储系统102中的唯一数据值112的量的估计。
[0096]
在一些示例中,基数估计器136的条目中的每个计数使用计数器来被维护,所述计数器响应于映射到条目的sbn的添加而递增,并且响应于映射到条目的sbn的移除而递减。
[0097]
为了提高效率,可以减少用于计数器的位数。例如,可以使用8位计数器。增加计数器的位数可以提高估计sbn的量时的准确性,但代价是增加的处理和存储开销,因为更大的计数器消耗更多的存储空间并产生可能更加处理密集的更大的值。
[0098]
使用较小的计数器可能会导致溢出,其中计数器会递增到计数器可以保持的最大值,然后映射到计数器的条目的sbn的另一个添加可能会使计数器复位为零(溢出条件)。由于数据去重参数计算引擎120基于多个寄存器(基数估计器136的列)估计sbn的量,因此与
多个寄存器之一相关联的溢出条件仍可以提供对可接受精度的sbn的量的估计。
[0099]
在一些示例中,为了从存储和处理的角度进一步提高效率,基数估计器136可以跟踪具有指定范围的尾随零的sbn散列值;即,基数估计器136不跟踪指定范围之外的sbn散列值。例如,基数估计器136可以跟踪具有大于等于10个尾随零并且小于或等于40个尾随零的sbn散列值。基数估计器136忽略并且不会跟踪具有小于10个尾随零的sbn散列值和具有大于40个尾随零的sbn散列值。
[0100]
在一些示例中,基数估计器136响应于通过合并引擎130将缓存的块索引124合并到持久性块索引128而更新,而不是在将每个传入数据值114和相应条目添加到数据卷的缓存的块索引124时更新基数估计器136。这可以减少基数估计器更新的频率以减少与和数据去重有关的计算参数相关联的处理负荷。
[0101]
基数估计器136也可以响应于从持久性块索引128中移除sbn而被更新。
[0102]
通过响应于缓存的块索引124的合并和从持久性块索引128中移除sbn来更新基数估计器136,基数估计器136可以保持与持久性块索引128一致。
[0103]
sbn的估计量是可以由数据去重参数计算引擎120计算的与数据去重有关的参数的示例。
[0104]
数据去重参数计算引擎120还可以通过将写入到数据卷的逻辑数据块的量(q(逻辑数据块))除以sbn的量(c)来计算作为与数据去重有关的另一个示例参数的去重比率(pdr):
[0105]
pdr=q(逻辑数据块)/c。
[0106]
可以由数据去重参数计算引擎120计算的与数据去重有关的另一个示例参数是表示如果删除数据卷i则可以在持久性存储装置110中回收的物理块的量的参数(preclaim)。此参数基于确定存在于数据卷i中但不存在于任何其他数据卷中的sbn的量,计算如下:
[0107]
preclaim=sbns_in_domain-∑
j≠icj

[0108]
在以上等式中,sbns_in_domain表示数据存储系统102的域中的sbn的量,其中所述域包括多个数据卷。sbns_in_domain可以通过对c1、c2、...、cn求和来计算,其中n表示域中的数据卷的量,并且c1、c2、...、cn表示使用对应的基数估计器136针对相应数据卷1、2、...、n计算的sbn的估计量。在其他示例中,可以使用不同的技术来计算sbns_in_domain的值。
[0109]
总和∑
j≠icj
是域中除了数据域i以外的所有数据卷的sbn的估计量之和。
[0110]
可以由数据去重参数计算引擎120计算的与数据去重有关的另一个示例参数是表示多个数据卷的相似性的参数(psimilarity)。
[0111]
假设以下示例:第一基数估计器(e1)(上面讨论的136的示例)用于产生对数据卷v1中sbn的量的估计的值c1,并且第二基数估计器(e2)(上面讨论的136的示例)用于产生对数据卷v2中sbn的量的估计的值c2。
[0112]
下面给出假设数据卷v1具有100个逻辑数据块并且数据卷v2也具有100个逻辑数据块的简单示例。在所述示例中,假设c1的值为20,其指示数据卷v1被估计为具有20个唯一数据值。类似地,c2的值也为20,其指示数据卷v2被估计为具有20个唯一数据值。
[0113]
在上面的示例中,数据卷v1的去重比率pdr1为5(100/20),数据卷v2的去重比率pdr2也为5(100/20)。
[0114]
为了确定数据卷v1和v2的内容的相似性,通过组合(取并集)基数估计器e1和e2来得到第三基数估计器e3。e1与e2的并集基本上是e1与e2的计数阵列的组合,其中将e1与e2中对应条目的计数相加在一起。如果数据卷v1的所有数据值均与数据卷v2的数据值相同,则基数估计器e3产生的c3值应为20。如果数据卷v1的所有数据值均与数据卷v2的数据值不同,则基数估计器e3产生的c3值应为40。如果基数估计器e3产生的c3值介于20与40之间,则表明在v1和v2之间共享一些数据值,并且v1与v2中的一些数据值是不同的。值更接近20指示更多的共享数据值,并且值更接近40指示更少的共享数据值。
[0115]
尽管上面的简单示例假设v1和v2中具有相同数量的逻辑数据块和唯一数据值,但是其他示例将包括具有不同数量的逻辑数据块和不同数量的唯一数据值的数据卷。
[0116]
更一般地,为了确定多个数据卷的相似性,将多个数据卷的基数估计器组合以产生组合的基数估计器。所述组合的基数估计器产生唯一数据值的量的估计值,其中将此估计量与唯一数据值的量的范围进行比较,所述范围起始于指示多个数据卷共享所有数据值的第一量值处并且结束于指示多个数据卷不共享任何数据值的第二量值处。估计量在所述范围中的位置提供了对多个数据卷的相似性的指示。
[0117]
由数据去重参数计算引擎120计算的与数据去重有关的各种参数可以以多种方式中的任何方式来使用。例如,与数据去重有关的参数可以用于确定数据存储系统102在为每个相应数据卷应用数据去重时的性能。例如,如果给定数据卷的数据去重比率低(这意味着相对于写入到给定数据卷的逻辑数据块的数量,存储了相对大量的数据值112),则数据存储系统102可以提供删除给定数据卷的建议,诸如在存储空间不足的情况下提供这种建议。数据存储系统102决定删除一个数据卷或一组数据卷(或者替代性地将所述数据卷或所述一组数据卷移动到另一个域或另一个数据存储系统)可以基于参数preclaim,所述参数preclaim表示如果每个相应数据卷被删除,则可以在持久性存储装置110中回收的物理块的量。例如,可以将一组数据卷中的多个数据卷的参数preclaim的值进行组合(例如,加在一起)以确定可以通过删除(或移动)所述一组数据卷来回收的物理块的总数。这些参数还可以用于估计如果将数据卷移动到另一个域将消耗多少物理空间。另外,数据存储系统102可以提供多个数据卷共享类似内容的指示。
[0118]
前述内容涉及使用随着添加和移除sbn而被更新的基数估计器。
[0119]
在进一步示例中,例如,可以维持映射到基于数据值而不是sbn散列值计算的散列值的进一步的基数估计器(类似于图3a至图3g中描绘的基数估计器)。例如,可以通过图1的数据值指纹生成器118来计算基于数据值的散列值(被称为“数据散列值”)。
[0120]
每个数据散列值可以类似地分离成映射到所述进一步的基数估计器的相应列和相应行的第一散列部分和第二散列部分(类似于上面讨论的138-a和138-b)。在添加和删除数据值时可以更新进一步的基数估计器中的计数。存储控制器108(或远程计算机)可以将基于数据存储系统102的数据值计算出的进一步的基数估计器与基于另一个数据存储系统的数据值计算出的另一个进一步的基数估计器进行比较。这种比较可以揭示在不同数据存储系统中的数据值的相似程度方面的不同数据存储系统的相似性。
[0121]
图4是存储有机器可读指令的非暂态机器可读或计算机可读存储介质400的框图,所述机器可读指令在执行时使系统执行各种任务。系统可以包括计算机或计算机集合。例如,所述系统可以包括图1的存储控制器108。
[0122]
机器可读指令包括值计算指令402,所述值计算指令用于计算添加到已消除了重复数据值的去重数据存储装置的对应数据值指示符(例如,sbn)以及从所述去重数据存储装置中移除的对应数据值指示符的相应值(例如,sbn散列值)。数据值指示符中的每个相应数据值指示符表示去重数据存储装置中存在唯一数据值。“去重数据存储装置”是指数据存储装置,诸如使用数据存储系统102实施的数据存储装置,所述数据存储装置中应用了数据去重以减少或避免重复数据值的存储。
[0123]
机器可读指令包括估计器更新指令404,所述估计器更新指令用于基于相应值来更新估计器(例如,图1的概率基数估计器136)以反映第一数据值指示符(例如,第一sbn)添加到去重数据存储装置以及从所述去重数据存储装置中移除第二数据值指示符(例如,第二sbn)。
[0124]
机器可读指令包括数据去重参数计算指令406,所述数据去重参数计算指令用于使用更新的估计器来计算与去重数据存储装置处的数据去重相关的参数。
[0125]
在一些示例中,机器可读指令基于第一数据值指示符计算第一值(例如,第一sbn散列值),并且基于第一值指示符更新估计器的条目(例如,通过递增条目中的计数)以反映将第一数据值指示符添加到去重数据存储装置。机器可读指令基于第二数据值指示符计算第二值(例如,第二sbn散列值),并且基于第二值更新估计器的条目(例如,通过递减条目中的计数)以反映从去重数据存储装置中移除第二数据值指示符。
[0126]
在一些示例中,估计器包括条目阵列,其中相应值(例如,sbn散列值)中的每个对应值映射到所述条目阵列中的对应条目。更新估计器包括基于对应值更新对应条目中的计数,所述计数表示有多少个相应值映射到对应条目。
[0127]
在一些示例中,对应值(例如,sbn散列值)包括第一值部分(例如,图2中的138-a)和第二值部分(例如,图2中的138-b),所述第一值部分映射到条目阵列的列,并且所述第二值部分(更具体地,所述第二值部分的尾随零的量)映射到条目阵列的行。
[0128]
在一些示例中,所述条目阵列中包含非零计数的第一条目的位置指示对所述去重数据存储装置的一部分中有多少个唯一数据值的第一估计,并且所述条目阵列中包含非零计数的第二条目的位置指示对所述去重数据存储装置的所述部分中有多少个唯一数据值的第二估计。第一条目可以在条目阵列的第一列中,并且第二条目可以在条目阵列的第二列中。可以基于第一估计和第二估计来计算参数,诸如通过基于以上进一步讨论的基数估计器136的对应列中的最大阶数来计算调和平均值。
[0129]
在一些示例中,估计器跟踪尾随零的量在指定范围内的散列值,并且估计器不跟踪尾随零的量在所述指定范围外的散列值。
[0130]
图5是可以包括计算机或计算机集合的系统500的框图。例如,系统500可以是图1的数据存储系统102或图1的存储控制器108。
[0131]
系统500包括硬件处理器502(或替代性地,多个硬件处理器)。硬件处理器可以包括微处理器、多核微处理器的核、微控制器、可编程集成电路、可编程门阵列、或另一硬件处理电路。
[0132]
系统500包括存储机器可读指令的非暂态存储介质504,所述机器可读指令可在硬件处理器502上执行以执行各种任务。可在硬件处理器上执行的机器可读指令可以指可在单个硬件处理器上执行的指令或可在多个硬件处理器上执行的指令。
[0133]
存储介质504中的机器可读指令包括值计算指令506,所述值计算指令用于计算添加到已消除了重复数据值的去重数据存储装置的对应存储位置指示符(例如,sbn)以及从所述去重数据存储装置中移除的对应存储位置指示符的相应值(例如,sbn散列值)。存储位置指示符中的每个相应存储位置指示符表示去重数据存储装置中唯一数据值的相应存储位置。
[0134]
存储介质504中的机器可读指令包括估计器更新指令508,所述估计器更新指令用于基于相应值更新估计器以反映将第一存储位置指示符添加到所述去重数据存储装置以及从所述去重数据存储装置中移除第二存储位置指示符。
[0135]
存储介质504中的机器可读指令包括数据去重参数计算指令510,所述数据去重参数计算指令用于使用更新的估计器来计算与去重数据存储装置处的数据去重相关的参数。
[0136]
图6是可以由存储控制器108或另一个机器执行的过程600的流程图。
[0137]
过程600基于添加到已消除了重复数据值的去重数据存储装置的对应存储位置指示符以及从所述去重数据存储装置中移除的对应存储位置指示符的内容来计算(在602处)相应散列值,其中,所述存储位置指示符中的每个相应存储位置指示符表示所述去重数据存储装置中唯一数据值的相应存储位置。
[0138]
过程600基于相应散列值更新(在604处)概率基数估计器,以反映将第一存储位置指示符添加到所述去重数据存储装置以及从所述去重数据存储装置中移除第二存储位置指示符。概率基数估计器包括计数器,并且所述更新包括响应于第一存储位置指示符的添加而使计数器中的第一计数器前进,以及响应于第二存储位置指示符的移除而使第一计数器倒退。
[0139]
过程600使用所述更新的概率基数估计器计算(在606处)与所述去重数据存储装置处的数据去重相关的参数。
[0140]
存储介质(例如,图4中的400或图5中的504)可以包括以下各项的任一项或某种组合:半导体存储器设备,如动态或静态随机存取存储器(dram或sram)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)和闪存存储器或其他类型的非易失性存储器设备;磁盘,如固定的盘、软盘和可移动盘;另一种磁介质,包括磁带;光学介质,如光盘(cd)或数字视频盘(dvd);或另一类型的存储设备。注意,可以在一种计算机可读或机器可读存储介质上提供以上讨论的指令,或者替代性地,可以在分布在可能具有多个节点的大型系统中的多种计算机可读或机器可读存储介质上提供以上讨论的指令。这种一个或多个计算机可读或机器可读存储介质被认为是物品(或制品)的一部分。物品或制品可以指任何制造的单个部件或多个部件。一种或多种存储介质可以位于运行机器可读指令的机器中、或者位于远程站点处,可以通过网络从所述远程站点下载机器可读指令以供执行。
[0141]
在前述描述中,阐述了许多细节以使得理解本文中所公开的主题。然而,可以在没有这些细节中的一些细节的情况下实践实施方式。其他实施方式可以包括上文所讨论的细节的修改和变化。所附权利要求旨在覆盖这样的修改和变化。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1