横向扩展存储系统中的元数据管理的制作方法

文档序号:13518270阅读:129来源:国知局
横向扩展存储系统中的元数据管理的制作方法

本公开总体涉及存储系统,更具体地,涉及横向扩展存储系统中的元数据管理。



背景技术:

一个横向扩展存储系统包括通过网络连接的多个节点。每个节点配备有处理器,内存,和多个存储设备。存储设备可以是硬盘驱动器(hdd,harddiskdrive)、固态设备(ssd,solid-statedevice)、或两者的混合(hybrid)。存储设备上面可以配置用于数据冗余和负载平衡的raid(redundantarrayofinexpensivedisks)硬件或软件。存储设备可以本地于每个节点或被多个节点共享。处理器可以专门运行存储软件应用,或在存储应用和用户应用之间共享。存储软件应用,诸如逻辑卷管理软件,可以提供存储虚拟化,节省容量,横向扩展,高可用性,数据移动,及高性能。

存储虚拟化将由用户应用寻址的逻辑设备与存储设备上的物理数据布置分离。通过存储虚拟化,处理器可以根据存储设备的特性来优化物理数据的布置,并提供诸如去重的节省容量的方式。用户应用通过逻辑设备单元号(lun)寻址逻辑设备。逻辑设备上的逻辑数据块由逻辑块地址(lbn)标识。因此,逻辑数据块的完整逻辑地址包括逻辑设备的lun和逻辑数据块的lbn。为了支持存储虚拟化,处理器将以lun和lbn寻址的用户输入/输出(i/o)转换为一系列以存储设备id和物理块地址(pbn)寻址的i/o。也就是说,存储软件将逻辑数据块的逻辑地址转换为存储设备中的相应物理数据块的物理地址。在有些存储软件实施例中,为了实现这个转换,处理器需要支持前向映射元数据,该元数据将每个数据块的lbn映射到该数据的pbn。为了支持数据去重,处理器还支持去重元数据,该元数据将每个数据块的指纹(数据块内容的散列函数)映射到该数据块的pbn。可以支持额外的元数据,以支持例如压缩和快照等其它数据服务。

数据块是处理器通过元数据管理的最小的存储单元。数据块可以小到4kb或大到整个数据卷。小数据块在优化数据布置及增加去重率上有优势。前向映射元数据的大小由数据块的大小和存储系统的可用容量决定。在一个小容量、大数据块的存储系统上,元数据小到可以整个缓存在内存中,便于快速访问,并持久地存储在存储设备上。随着系统物理容量的增加和数据块的减小,元数据会变得越来越大。诸如去重、压缩、快照之类的数据服务功能还会增加系统的可用容量,进而成倍增加元数据大小。在内存不足以存储整个元数据的情况下,元数据只能被持久地存储在存储设备上,其中一部分缓存在内存中。缓存只有在元数据具有引用局部性(localityofreference)时才有效,即实际中用户应用往往会频繁地访问相关的逻辑设备地址。处理器可以利用用户应用的引用局部性来将频繁访问元数据缓存在内存中,从而不显著地损失性能。没有用户应用的引用局部性,缓存就变成了颠簸,不但耗尽了系统资源而且降低性能。

横向扩展(scaleout)是横向扩展存储系统的一个关键要求。横向扩展的一个示例是添加节点,即将一个新节点加入存储系统中以提供更多的存储容量和性能。横向扩展的另一个示例是删除节点,即将一个现有节点从存储系统中删除。这两种情况都需要将大量数据块从其当前物理位置移动到新位置,以便在所有可用容量和带宽内重新分布数据块。数据移动对用户应用需要是透明的,既数据块物理位置的变化不应该影响用户应用寻址的lun/lbn。在有些存储软件实现中,处理器维持反向映射元数据,该元数据将每个物理数据块的pbn映射到相应于该pbn的一个或多个lbn。在把物理数据块从pbn1移动到pbn2的过程中,处理器先用pbn1在反向映射元数据中查找到相应于pbn1的一个或多个lbn;处理器然后在前向映射元数据中查找到这些lbn的条目,将其从映射于pbn1更改到映射于pbn2;接着处理器回到反向映射元数据中把pbn1更改为pbn2。如果启用去重功能,处理器需要计算数据块的指纹并在去重元数据中把该指纹的条目从映射于pbn1更改到映射于pbn2。鉴于支持横向扩展的数据移动不来自用户应用因此不受益于用户应用的引用局部性,上述这些对反向映射元数据,前向映射元数据,去重元数据的多个访问无法被有效地缓存在内存中,导致系统颠簸。

逻辑设备可用性是指在原主节点a发生故障的情况下,使得逻辑设备在节点b上可用。逻辑设备移动性是指为了平衡负载而将逻辑设备从节点a移动到节点b。逻辑设备可用性和移动性都可以通过恢复访问时间和恢复性能时间来衡量。恢复访问时间定义为需要多长时间可以在节点b上支持对逻辑设备的第一个用户i/o。恢复性能时间定义为需要多长时间逻辑设备可以恢复其原来的性能。对于用前向映射元数据来支持存储虚拟化的存储软件,因为需要把前向映射元数据从节点a移动到节点b上,导致较长恢复访问时间。

提供高性能对于横向扩展存储系统来说具有挑战性。因为数据块分布在多个节点之间,远程访问会受网络延迟影响。一些存储软件将逻辑设备需引用的大多数数据块布置在与该逻辑设备所在相同的节点上,试图以此减少网络延迟(称为数据局部性)。数据局部性有很多问题。首先,多个逻辑设备通常不会在多个节点之间自行负载平衡,导致数据块布置在容量和性能方面的不平衡。其次,在需要移动逻辑设备的情况下,其大部分数据块需要移动到新节点,导致很长的恢复性能时间。

鉴于上述情况,需要更有效的元数据管理来支持存储虚拟化,节省容量,横向扩展,高可用性,移动性和高性能。



技术实现要素:

公开了用于分布存储系统中管理元数据的方法和装置。

存储系统被配置为支持横向扩展和逻辑设备移动性。存储系统包括通过网络连接的多个节点。每个节点包括处理器,内存,一个或多个存储设备。存储系统被配置为管理存储池,第一元数据,和第二元数据。存储池包括来自多个节点的存储设备和自由块表。第一元数据将每个逻辑数据块的逻辑地址映射到其内容标识符(cid)。第二元数据将每个内容标识符映射到其在存储池中相应的物理地址,并维持引用计数。元数据和数据块都跨节点冗余地存储在存储池中,并且可以被所有节点访问。在添加节点操作中,处理器被配置为在不访问第一元数据的情况下把一部分数据块、内容标识符和引用计数,从现处节点移动到新节点。为了将逻辑设备从节点a移动到节点b,节点a上的处理器关闭对该逻辑设备在节点a上的访问,节点b上的处理器通过从存储池恢复该逻辑设备的第一元数据来激活对该逻辑设备在节点b上的访问。为了加快恢复访问时间,逻辑设备的第一元数据可以以树形数据结构组织。节点b上的处理器可以在恢复该逻辑设备树形数据结构的根之后激活对逻辑设备的访问。为了加快恢复性能时间,节点a上的处理器可以将其本地缓存的数据推送到节点b.

在有些实施例中,第一元数据被存储在存储池中,并基于引用局部性被缓存在内存里。在有些实施例中,第二元数据被存储在存储池中并被整体存储在内存中。在有些实施例中,第一元数据条目仅包括数据块的内容标识符,lbn没有被存储但可以基于其元数据条目在第一元数据中的相对位置来确定。在有些实施例中,第一元数据被存储在元数据块中。为每个元数据块生成内容标识符,使得元数据块被去重。

当然,本发明不限于以上概述的特征,优点,背景。通过阅读以下具体实施方式并查看附图,熟悉存储技术的人员会认识到另外更多的特征和优点。

附图说明

图1图示横向扩展存储系统的框图;

图2图示第一和第二元数据的框图;

图3图示处理读取请求的流程图;

图4图示处理写入请求的流程图;

图5a和5b图示添加节点操作的框图;

图6图示添加节点操作的流程图;

图7a和7b图示lun移动性的框图;

图8图示第一元数据表利用树数据结构的框图;

图9图示元数据去重的框图;

图10a和10b图示本地缓存的框图。

具体实施方式

公开了在横向扩展存储系统中管理元数据的方法,以更有效地支持存储虚拟化、节省空间,横向扩展,高可用性,移动性,及高性能。为了本公开的目的,类似的基本块由相似的数字参考号码标识。数字参考号码后跟小写字母是指该基本块的具体实例。

图1图示了横向扩展存储系统100的一个实施例,包括由网络105连接的多个节点120。示例节点120包括处理器130,内存135,和多个存储设备165。处理器130可以包括微处理器,微控制器,数字信号处理器,硬件电路,固件或其组合。每个节点120的处理器130共同地组成控制存储系统的分布式处理电路。内存135可以包括用于本地存储该节点所引用的信息数据的易失性和非易失性内存。存储系统100内的不同节点120上的存储设备165共同地组成共享数据存储池160,该存储池可被每个节点120的处理器130访问。存储设备165的示例包括固态盘(ssd),硬盘驱动器(hdd),或固态盘和硬盘驱动器的混合(hybrid)。存储设备165可以被配置在提供数据冗余和负载平衡的raid系统的下面。raid系统的示例包括软件raid,硬件raid卡,芯片上的raid,擦除编码,或jbod(只是一堆盘)。存储设备165还可以包括用于写入缓存和延迟的nvram设备。nvram设备示例包括nvram卡,电池供电的dram,及nvdimm。在有些实施例中,存储设备165可以为多个节点120或多个存储系统100共享。

存储系统100向一个或多个用户应用110提供逻辑设备的访问。在另外一些实施例中,用户应用110和存储系统100可以在同一个物理系统上运行。在有些实施例中,用户应用110可以通过诸如fibrechannel,ethernet,infiniband,pcie等存储网络来访问存储系统100。

处理器130在用户应用110和存储设备165之间提供接口。例如,处理器130可以为用户应用110提供一组用于读取和写入存储池160中存储设备165的命令。处理器130运行存储软件,以提供存储设备本身无法实现的存储虚拟化,节省空间,横向扩展,高可用性,移动性,及高性能。在本公开中,不同节点120的处理器130协作以分布式方式管理存储池160和相关元数据140。数据块和元数据140都被冗余地存储在多个节点120的存储设备165上,并且可以被每个节点120访问。元数据140也可以被缓存在本地缓存150中,其可以被存储在节点120的内存135中。

本公开提供了如图2所示的用于管理元数据140和存储池160的方法。元数据140包括第一元数据和第二元数据。第一元数据142将示例逻辑数据块的lun200a和lbn210a映射到其独有内容标识符(cid)220。内容标识符对于数据块的内容是独有的,即两个内容不同的数据块具有相同内容标识符的可能性几乎不存在。在一些实施例中,诸如由美国国家标准与技术研究所(nist)开发的sha1强哈希函数被用来计算数据块的内容标识符,这样使得两个内容不同的数据块具有相同的内容标识符的可能性几乎不存在。第二元数据145将每个独有cid220映射到其在存储池160内的pbn240。在两个逻辑数据块具有重复内容的情况下,两者都被映射到相同的cid220/pbn240。因此可以支持跨越lun200和节点120的整体去重,而不需要单独的去重元数据。引用计数230被用来记录引用同一个cid210的lun/lbn的数量。当数据块大小固定时,第一元数据142的大小与存储系统的可用容量成比例,第二元数据145的大小与存储系统的物理容量成比例。通常,由于去重,压缩和快照,系统的可用容量比其物理容量大许多倍,使得第一个元数据142比第二个元数据145大很多倍。

图3图示了处理来自用户应用110的读取请求的流程图。为了本示例的目的,假设读取请求被节点120a收到,应理解其他节点上的操作将是类似的。

步骤310:示例节点120a上的处理器130a接到对lun200a/lbn210a的读取请求;

步骤320:处理器130a在第一元数据142中查找lun200a/lbn210a以获得cid220;

步骤330:处理器130a在第二元数据145中查找cid220以获得pbn240;

步骤340:处理器130a确定cid220/pbn240是否在本地节点120a上;

步骤350:如果cid220/pbn240在本地节点120a上,处理器130a在本地读取物理数据块pbn240;

步骤360:如果cid220/pbn240不在本地节点120a上,处理器130a远程读取物理数据块pbn240;

步骤370:处理器130a向用户应用110回复其读取请求。

在有些实施例中,存储处理器130a被配置为计算位于pbn230的物理数据块的内容标识符,并将其与cid220进行比较。如果两个内容标识符不相同,处理器130a可以尝试从冗余副本读取数据,以校正数据损坏。

图4图示了处理来自用户应用110的写入请求的流程图。为了本示例的目的,假设写入请求被节点120a收到,应理解其他节点上的操作将是类似的。

步骤410:示例节点120a上的处理器130a接到对lun200a/lbn210a的写入请求;

步骤420:处理器130a计算写入请求中的数据块的cid220;

步骤430:处理器130a在第二元数据145中查找cid220;

步骤440:如果cid220已经存在于第二元数据145中,处理器130a将其对应的引用计数230增加1;

步骤450:如果第二元数据145没有cid220,处理器130a在本地分配pbn240,或者请求另一处理器130b从存储池160的自由块表远程分配pbn240;处理器130a将数据块写入pbn240;

步骤460:处理器130a在第二元数据145中为cid220/pbn240创建新条目,并将其引用计数设置为1;

步骤470:处理器130a在第一元数据142中的查找lun200a/lbn210a的任何现有条目;将其cid/pbn的引用计数减少1;如果引用计数为零,则将pbn返回给存储池160的自由块表;

步骤480:处理器130a在第一元数据142中为lun200a/lbn210a/cid220创建新条目;

步骤490:处理器130a向用户应用110确认其写入请求的完成。

在一些实施例中,存储处理器130a在步骤450将数据块写入本地nvram设备,并向用户应用110确认其写入请求的完成,然后在延迟后才将数据块写入pbn240(延迟写入)。

作为处理读取或写入请求的一部分,基于逻辑地址(例如,lun200/lbn210)访问第一元数据142受益于用户应用的引用局部性。在一些实施例中,第一元数据被持久地存储在存储池160中,并且基于访问频率和近度在每个节点120处被缓存在内存135中。基于cid220访问第二元数据145不受益于引用局部性,因此不能被有效地缓存。通常,由于去重,压缩和快照,第二元数据145比第一元数据142小很多倍。在一些实施例中,第二元数据145可以被持久地存储在存储池160中,并且在每个节点120处被整体缓存在内存135中。

图5a和5b图示了支持横向扩展中添加节点操作的框图。将新节点120b添加到存储系统100以提供更多存储容量和性能时,大量数据块需要从其当前物理位置移动到新节点120b,以便在所有可用容量和带宽之中重新分布数据块。添加节点对于用户应用应该是透明的,为此把一个数据块的物理位置从节点120a上第一pbn240a改变到节点120b上的第二pbn240b,不应当影响用户应用110所寻址的其lun200/lbn210。

图6图示了这个添加节点操作的流程图。为了本示例的目的,假设节点120a是现有节点,节点120b是新添加的节点。节点120a上的处理器130a决定哪个本地数据块应该移动到新节点120b。节点120a存储设备165a上的示例物理数据块pbn240a的移动过程如下:

步骤610:处理器130a读取pbn240a处的数据块;

步骤620:处理器130a通过计算或从pbn240a处读取数据块内容标识符,以确定数据块的cid220;

步骤630:处理器130a在第二元数据145中查找到cid220;

步骤640:处理器130a将数据块,其cid220,和其引用计数230发送给新节点120b上的处理器130b;

步骤650:处理器130b从其自由块表中分配pbn240b,并将数据块写入pbn240b;

步骤660:处理器130b在第二元数据145中创建新条目cid220/引用计数230/pbn240b,并向处理器130a确认完成任务;

步骤670:处理器130a从第二元数据145删除条目cid220/pbn240a,并释放pbn240a处空间。

在一些实施例中,上述对于单个数据块的步骤被批量执行以提高操作性能。

从上面的描述可以明显看出,添加节点的操作不访问或更改第一元数据142,因此对于用户应用110是透明的。操作过程中只有第二元数据145被访问和更改。在一些实施例中,第二元数据145比第一元数据142小许多倍,在每个节点120上被整体缓存在内存135中,以降低访问延迟。

图7a和7b图示了逻辑设备移动性。示例逻辑设备lun200由节点120a提供给用户应用110。该逻辑设备随后从节点120a移动到节点120b。在元数据140被跨节点冗余地存储并可以被所有节点120访问的情况下,处理器130a可以简单地关闭或禁用对逻辑设备lun200的访问,同时处理器130b把该逻辑设备第一元数据142从存储池160读取到其内存135b中,从而激活或启用对逻辑设备lun200的访问。当节点120a出现故障而不能支持对逻辑设备访问的情况下,上述操作也适用于逻辑设备高可用性。

第一元数据表142的大小与存储系统的可用容量成比例,并且由于去重、压缩和快照,可以变得非常大。即使受益于用户引用局部性,第一元数据表142的缓存还是一个难题。本公开提供进一步为逻辑设备移动性/可用性缩短恢复访问时间及缩小第一元数据142的方法,从而使其缓存更有效。在有些实施例中,逻辑设备的第一元数据以图8所示的树数据结构实现。树的底部包括数据块d0,d1,...,dn,dn+1,...的线性序列,对应于lbn0,1,...,n,n+1,...。每个数据块内容(p,q,r)被散列,其内容标识符(h(p),h(q),h(r))被存储在元数据块中。每个元数据块的内容(x,y)也被散列,其散列后的内容标识符(h(x),h(y))被存储在元数据块中。递归地重复这个过程,直到获得单一的内容标识符h(v),其代表逻辑设备的树根。在数据块d1和dn具有相同的内容q的情况下,元数据m1和mn也具有相同的内容标识符h(q),导致数据去重。例如lbnn,不存储在元数据条目mn中,但可以很容易地根据mn在树中的相对位置来确定。这个数据结构不仅大大减小了第一元数据表142的大小,而且使元数据块的去重变得可行。

图9图示了元数据块在树的两个版本之间被去重。从版本1到版本2的唯一区别是lbnn的数据块内容从q变成为s。这个变化导致了新的元数据条目m'n,新的元数据块z,及新的元数据块w,但元数据块x没有变,被版本1和版本2共享。利用这个逻辑设备树数据结构,处理器120b可以通过简单地读取逻辑设备的树根来激活或启用对逻辑设备的访问,导致恢复访问时间缩短了很多。逻辑设备树的其余部分可以随着其lbn被用户应用110访问而被读取并缓存。

本公开还提供了本地缓存的方法。本地缓存减少网络访问延迟及提高性能,并且不需要数据本地化。数据本地化回导致逻辑设备移动时较长的恢复性能时间。图10a图示了逻辑设备lun200的本地缓存。当lun200/lbn210/cid220被第一次访问时,其数据块250从存储池160,有可能是从远程节点,被读取。基于访问的频率和近度,处理器130a可以决定将数据块250及其cid220缓存在本地缓存150a中。随后对lun200/lbn210/cid220的访问可以从本地缓存150a读取数据块250,从而消除网络访问延迟。图10b图示了一个为逻辑设备移动缩短恢复性能时间的方法。当逻辑设备从节点120a移动到节点120b时,处理器120a将为该逻辑设备而缓存的数据块从其本地缓存150a推送到节点120b的本地缓存150b。因为lun200在节点120b上本地缓存150b中有缓存数据块,该逻辑设备在节点120b上的访问性能得到大大提高。

权利要求书(按照条约第19条的修改)

1.一种在数据存储系统中实现移动数据的方法,所述方法包括:

将数据块存储在数据存储池中,所述数据存储池包括分布在两个或更多个数据存储节点之间的多个数据存储设备,每个数据块与其独有内容标识符相关联;

存储元数据,所述元数据将与一个或多个逻辑设备相关联的逻辑数据块的逻辑地址映射到存储在所述数据存储设备中的相应数据块的物理地址,所述元数据包括:

第一元数据,其将所述逻辑设备中的逻辑数据块的逻辑地址映射到相应的内容标识符;和

第二元数据,其将所述内容标识符映射到数据块的物理地址中的相应物理地址;

向所述数据存储系统添加具有一个或多个附加数据存储设备的新数据存储节点;

将第一数据块从位于所述数据存储节点中的第一数据存储节点上的数据存储设备中的第一数据存储设备中的第一物理地址,移动到所述新数据存储节点上的第二数据存储设备中的第二物理地址;

更新第二元数据,以将与第一数据块相关联的内容标识符映射到第二物理地址,而不更改第一元数据。

2.根据权利要求1所述的方法,其特征在于,

将数据块存储在数据存储池中,包括将所述数据块冗余地存储在多个数据存储节点上的多个数据存储设备中。

3.根据权利要求1或2所述的方法,其特征在于,

存储元数据,包括将所述元数据冗余地存储在多个数据存储节点上的多个数据存储设备中。

4.根据权利要求1所述的方法,其特征在于,

数据块和元数据可被每个所述数据存储节点访问。

5.如权利要求1所述的方法,其特征在于,

更新所述第二元数据包括:由第一数据存储节点从第二元数据中删除现有条目,该现有条目将第一数据块的内容标识符映射到第一物理地址;并且,

由新数据存储节点在第二元数据中创建新条目,该新条目将第一数据块的内容标识符映射到第二物理地址。

6.根据权利要求1所述的方法,其特征在于,

还包括基于引用局部性将所述第一元数据缓存在所述数据存储节点的本地内存中。

7.根据权利要求1或6所述的方法,其特征在于,

还包括将所述第二元数据整体缓存在每个所述数据存储节点的本地内存中。

8.根据权利要求1所述的方法,其特征在于,

存储元数据,包括将所述第一元数据存储在第一元数据表中,所述第一元数据表包括多个包含所述逻辑数据块的内容标识符的条目。

9.根据权利要求8所述的方法,其特征在于,

所述第一元数据表中的每个条目的相对位置指示了相应逻辑数据块的逻辑块号。

10.根据权利要求8或9所述的方法,其特征在于,

将所述第一元数据表中的多个条目存储在元数据块中,还包括:

为每个元数据块生成内容标识符;并且

使用元数据块的内容标识符来去重元数据块。

11.一种数据存储系统,包括:

由网络连接的多个数据存储节点;

数据存储池,包括分布在数据存储节点之间的多个数据存储设备,

分布在数据存储节点之间的处理电路,所述处理电路被配置为:

将数据块存储在所述数据存储池中,每个数据块与独有内容标识符相关联;

在所述数据存储池中存储元数据,所述元数据将与一个或多个逻辑设备相关联的逻辑数据块的逻辑地址映射到存储在所述数据存储设备中的相应数据块的物理地址,所述元数据包括:

第一元数据,其将所述逻辑设备中的逻辑数据块的逻辑地址映射到相应的内容标识符;和

第二元数据,其将内容标识符映射到相应数据块的物理地址;

响应于新数据存储节点的添加,将第一数据块从位于所述数据存储节点中的第一数据存储节点上的数据存储设备中的第一数据存储设备中的第一物理地址,移动到所述新数据存储节点上的第二数据存储设备中的第二物理地址;

更新第二元数据,将与第一数据块相关联的内容标识符映射到第二物理地址,而不更改第一元数据。

12.根据权利要求11所述的存储系统,其特征在于,

将数据块冗余地存储在多个数据存储节点上的多个数据存储设备中。

13.根据权利要求11或12所述的存储系统,其特征在于,

将元数据冗余地存储在多个数据存储节点上的多个数据存储设备中。

14.根据权利要求11所述的存储系统,其特征在于,

数据块和元数据可被每个所述数据存储节点访问。

15.根据权利要求11所述的存储系统,其特征在于,

所述处理电路包括:

第一数据存储节点中的第一处理器,其被配置为删除第二元数据中的现有条目,该现有条目将第一数据块的内容标识符映射到第一物理地址;并且,

新数据存储节点中的第二处理器,其被配置为在第二元数据中创建新条目,该新条目将第一数据块的内容标识符映射到第二物理地址。

16.根据权利要求11所述的存储系统,其特征在于,

还包括所述每个数据存储节点中的本地内存,该本地内存用于基于引用局部性将所述第一元数据缓存在数据存储节点的本地内存中。

17.根据权利要求11所述的存储系统,其特征在于,

还包括所述每个数据存储节点中的本地内存,该本地内存将所述第二元数据整体地缓存在每个所述数据存储节点的本地内存中。

18.根据权利要求11所述的存储系统,其特征在于,

所述处理电路被配置为将所述第一元数据存储在第一元数据表中,所述第一元数据表包括多个包含所述逻辑数据块的内容标识符的条目。

19.根据权利要求18所述的存储系统,其特征在于,

所述第一元数据表中的每个条目的相对位置指示了相应逻辑数据块的逻辑块号。

20.根据权利要求18或19所述的存储系统,其特征在于,

所述处理电路被进一步配置为:

将所述第一元数据表中的多个条目存储在元数据块中,还包括:

为每个元数据块生成内容标识符;并且

使用元数据块的内容标识符来去重元数据块。

21.一种在数据存储系统中实现移动数据的方法,所述方法包括:

将数据块存储在数据存储池中,所述数据存储池包括分布在两个或更多个数据存储节点之间的多个数据存储设备,每个数据块与独有内容标识符相关联;

存储元数据,所述元数据将所述数据存储池中的逻辑数据块的物理地址映射到与所述一个或多个逻辑设备相关联的相应逻辑地址,所述元数据包括:

第一元数据,其将与所述逻辑设备相关联的逻辑地址映射到相应的内容标识符;和

第二元数据,其将内容标识符映射到数据块的物理地址中的相应物理地址;

将第一逻辑设备的接入点从所述数据存储节点中第一数据存储节点移动到所述数据存储节点中的第二数据存储节点。

22.根据权利要求21所述的方法,其特征在于,

移动所述接入点包括:

禁用对第一数据存储节点上的所述逻辑设备的访问;并且

启用对第二数据存储节点上的所述逻辑设备的访问。

23.根据权利要求21所述的方法,其特征在于,

移动所述接入点包括:

检测到第一数据存储节点的故障;和

响应于检测到所述故障,启用对第二数据存储节点上的所述逻辑设备的访问。

24.根据权利要求21所述的方法,其特征在于,

还包括以树数据结构来组织与第一逻辑设备相关联的第一元数据,所述树数据结构包括与第一逻辑设备上的逻辑地址相关联的根和多个条目。

25.根据权利要求24所述的方法,其特征在于,

移动所述接入点包括:

由第二数据存储节点恢复与第一逻辑设备相关联的树数据结构的根;并且

激活对第二数据存储节点上的所述逻辑设备的访问。

26.根据权利要求25所述的方法,其特征在于,

移动所述接入点还包括当第一逻辑设备的逻辑地址被访问时,恢复与所述逻辑地址相关联的条目。

27.一种数据存储系统,包括:

由网络连接的多个数据存储节点;

数据存储池,包括分布在数据存储节点之间的多个数据存储设备,

分布在数据存储节点之间的处理电路,所述处理电路被配置为:

将数据块存储在所述数据存储池中,每个数据块与独有内容标识符相关联;

在所述数据存储池中存储元数据,所述元数据将与一个或多个逻辑设备相关联的逻辑数据块的逻辑地址映射到存储在所述数据存储设备中的相应数据块的物理地址,所述元数据包括:

第一元数据将所述逻辑设备中的逻辑数据块的逻辑地址映射到相应的内容标识符;和

第二元数据将内容标识符映射到相应数据块的物理地址;以及

将第一逻辑设备的接入点从所述数据存储节点中的第一数据存储节点移动到所述数据存储节点中的第二数据存储节点。

28.根据权利要求27所述的存储系统,其特征在于,

为了移动所述接入点,所述处理电路被配置为:

禁用对第一数据存储节点上的所述逻辑设备的访问;并且

启用对第二数据存储节点上的所述逻辑设备的访问。

29.根据权利要求27所述的存储系统,其特征在于,

为了移动所述接入点,所述处理电路被配置为:

检测到第一数据存储节点的故障;和

响应于检测到所述故障,启用对第二数据存储节点上的所述逻辑设备的访问。

30.根据权利要求27所述的存储系统,其特征在于,

处理电路还被配置为:

以树数据结构来组织与第一逻辑设备相关联的第一元数据,所述树数据结构包括与第一逻辑设备上的逻辑地址相关联的根和多个条目。

31.根据权利要求30所述的存储系统,其特征在于,

为了移动所述接入点,所述处理电路包括:

第二数据存储节点上的处理器,其被配置为恢复与第一逻辑设备相关联的树数据结构的根;并且

启用对第二数据存储节点上的所述逻辑设备的访问。

32.根据权利要求31所述的存储系统,其特征在于,

为了移动所述接入点,第二数据存储节点上的处理电路还被配置为当第一逻辑设备的逻辑地址被访问时,恢复与所述逻辑地址相关联的条目。

33.根据权利要求27所述的存储系统,其特征在于,

为了移动所述接入点,第一数据存储节点中的处理电路还被配置为将第一逻辑设备的本地缓存推送到第二数据存储节点。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1