一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

使用ReFS扩展文件系统以及扩展卷的制作方法

2022-02-20 15:52:33 来源:中国专利 TAG:

使用refs扩展文件系统以及扩展卷


背景技术:

1.一些存储系统对存储集群的管理可能导致存储在其中的数据出现不希望的漏洞,诸如对已删除数据的持续暴露。这可能包括对非常敏感的数据(诸如,密码和其他关键信息)的意外和不期望的暴露。
2.举例来说,从第一文件中删除数据可以触发被分配以存储第一文件的该部分数据的存储集群的解除分配。然而,如果该存储集群后来被重新分配给第二文件,而没有初始化与该集群相关联的位,则从第一文件中删除的数据将在重新分配的集群内保持可访问,除非并且直到它被第二文件的数据覆盖。该数据可能包括有意从第一文件中删除的非常敏感的数据,但是可能会作为第二文件的一部分读取存储集群的任何程序仍然可以访问这些数据,直到该数据被覆盖。
3.作为另一示例,在多租户场景中,一旦不再需要第一租户的虚拟机,就可以停用该虚拟机。这可能导致例如第一租户的虚拟机的vmdk(虚拟机磁盘)的存储集群重新分配给可用存储集群池以在随后重新分配给新租户。在这种情况下,新租户可能有意或无意地通过读取作为第一租户的vmdk的一部分并且现在已经重新分配为新租户的vmdk的一部分的存储集群来访问第一租户的数据。
4.在一些实例中,可以通过在存储集群被解除分配和/或重新分配时初始化或覆盖存储集群的所有位来避免上述问题。然而,存储的全面初始化在计算上可能是昂贵的,并且会影响存储系统的整体响应能力和其他性能。在这方面,这可能是不可取的,特别是当考虑到可能存在备选且更便宜的解决方案来限制对回收/重新分配的存储集群中包含的数据的访问时。
5.不需要在解除分配/重新分配处理期间立即和全面地初始化存储集群的用于限制对存储数据的访问的备选控制包括vdl(有效数据长度)控制。vdl是众所周知的,并且用于很多文件系统,诸如exfat(扩展文件分配表)、ntfs(新技术文件系统)和refs(弹性文件系统)。
6.现有vdl通常是在每个文件的基础上实现的。它们用于标识已经写入每个对应文件的已分配存储的高水印或范围。这使得文件的vdl能够用于帮助防止读取文件的(多个)已分配存储集群,这些集群扩展到已标识的vdl之外并且尚未针对该文件被写入。
7.例如,当接收到对文件的vdl之外的文件存储的请求时,vdl控制可以用于触发合成响应,诸如全零,而不是可能存储在vdl之外的实际数据。因此,vdl控制可以用于有效隐藏文件的存储中可能实际存在的残留数据,而无需在对应存储被重新分配给新文件时初始化或覆盖该数据。
8.虽然vdl已经被证明可用于控制对文件的已分配存储的访问,但应当注意,来自单个集中式节点的现有每文件vdl的管理(包括vdl的跟踪和更新)可能是笨拙的,并且可以仍然会给网络带宽带来不必要的负担,特别是因为客户端请求必须通过集中式vdl管理节点进行处理。
9.在一些实例中,存储系统可以被配置为在包含所存储数据的分布式边缘节点处以
及在集中式管理节点处存储每文件vdl。这可以使得客户端能够直接与边缘节点交互,而不必针对所有请求直接通过集中式vdl管理节点进行交互。虽然这些配置可以帮助减少一些网络业务,但与备选解决方案相比,这些配置仍然需要比预期更多的网络业务。这种不希望的业务中的一些包括在(多个)边缘节点响应于客户端请求之前更新和验证每个不同边缘节点处的vdl的真实性所需要的通信。
10.对于在不同边缘节点处的若干存储集群之间共享文件的情况、以及在不同租户之间重新分配存储集群的情况,上述情况尤其如此。在这些情况下,每个写入请求/重新分配都有可能改变特定文件的vdl,并且可能需要在多个不同边缘节点处更新vdl。因此,为了促进vdl数据访问控制的效用,边缘节点需要频繁地与集中式vdl管理节点交互,以验证由它们管理的vdl的真实性。
11.本文中要求保护的主题不限于解决任何缺点或仅在诸如上述那些环境中操作的实施例。相反,提供该背景仅是为了说明可以实践本文中描述的一些实施例的一个示例性技术领域。


技术实现要素:

12.本文中描述的至少一些实施例包括存储系统、计算机程序产品和用于管理具有vdl(有效数据长度)控制的存储系统的方法,这些控制在每个集群的基础上实现,并且在一些实例中,在子集群的基础上实现,而不是简单地在每个文件的基础上实现。在一些实例中,存储集群的每集群vdl元数据在分布式网络的边缘数据卷节点处存储和引用,而不是和/或不需要存储或同步管理不同数据卷节点的对应存储集群的主节点处的每集群vdl元数据。主节点还提供序列控制并且将其与适当边缘数据卷节点同步,以进一步控制对对应存储集群内包含的数据的访问。
13.一些实施例包括用于基于在分布式存储系统的数据卷节点处执行的过程来实现分布式存储系统的管理的方法、系统和计算机程序产品。例如,这些实施例包括具有数据卷的数据卷节点,该数据卷具有由主元数据节点管理的存储集群,该主元数据节点将数据卷节点的一个或多个存储集群分配给一个或多个文件。数据卷节点还配置有至少一个处理器和可执行指令,该可执行指令由至少一个处理器可执行以使数据卷节点执行数据卷节点方法,该数据卷节点方法用于针对多个存储集群在每个集群的基础上执行数据访问控制。
14.数据卷节点方法包括以下动作:数据卷节点从主元数据卷节点接收一个或多个存储集群的分配、以及与一个或多个存储集群相关联的一个或多个对应序列号,一个或多个存储集群被包含在数据卷节点的数据卷内。数据卷节点方法还包括以下动作:数据卷节点在本地将对应序列号与数据卷节点相关联,并且在本地将一个或多个存储集群中的存储集群的vdl(有效数据长度)指示符设置为初始化状态,初始化状态指示存储集群尚未存储为其分配存储集群的数据(即使它确实具有来自先前文件分配的数据)。
15.该方法还包括数据卷节点接收针对至少一个存储集群的客户端写入请求的动作。值得注意的是,仅在数据卷节点从客户端接收到与写入请求相关联的对应序列号时,并且在由数据卷节点将对应序列号仍然与存储集群相关联时,允许该请求。此后,在允许客户端写入请求时,并且在数据被写入存储集群时,数据卷节点更新数据卷节点处的存储集群的vdl指示符以指示存储集群已经存储数据,并且不需要存储集群的vdl指示符与主元数据卷
节点的同步。
16.其他实施例包括基于在分布式存储系统的主卷节点处执行的过程来实现分布式存储系统的管理的方法、系统和计算机程序产品。例如,这些实施例包括配置有至少一个处理器和可执行指令的主卷节点,该可执行指令由至少一个处理器可执行以使主卷节点执行主节点方法,该主节点方法用于针对分布式存储系统中的一个或多个数据卷节点的数据卷中包含的多个存储集群在每个集群的基础上实现数据访问控制、以及用于管理数据集群到存储在分布式存储系统内的一个或多个文件的分配。
17.主节点方法包括:主元数据卷通过在一个或多个不同数据卷节点的一个或多个数据卷中包含的不同存储集群之间划分第一文件来将该不同存储集群分配给该文件,以及生成序列号并且将序列号分配给每个对应存储集群。在一些实例中,不同序列号被分配给每个对应不同存储集群。在其他实例中,单个序列号被分配给一组存储集群,并且在一些实例中,单个序列号被分配给属于单个文件或其他数据结构的所有存储集群。该方法还包括主元数据卷将分配给不同存储集群的序列号分别提供给包含不同存储集群的一个或多个不同数据卷节点。值得注意的是,在对应存储集群被重新分配给不同文件之前,主元数据卷也改变任何特定存储集群的序列号。
18.该方法还包括主元数据卷从远程客户端接收对第一文件的文件访问请求,并且作为响应,向远程客户端提供分配给第一文件并且与文件访问请求相对应的一个或多个不同存储集群的标识、以及与一个或多个不同存储集群相关联的一个或多个序列号。
19.在一些实例中,主元数据卷还避免了本地存储和/或同步用于在不同数据卷节点处本地使用和存储的不同存储集群的vdl(有效数据长度)指示符以指示一个或多个不同存储集群已经存储数据。
20.其他实施例包括用于客户端计算系统与利用独特排序和每集群vdl访问控制的分布式存储系统接口的方法、系统和计算机程序产品。例如,这些实施例包括配置有至少一个处理器和可执行指令的客户端系统,该可执行指令由至少一个处理器可执行以使客户端系统执行客户端系统方法,其中客户端系统向主元数据卷节点提供对文件的访问的文件访问请求,主元数据卷节点为该文件分配和管理文件的存储集群。
21.该方法还包括客户端系统接收由主元数据卷节点分配给文件的一个或多个不同存储集群的标识、以及与一个或多个不同存储集群相关联的一个或多个序列号,一个或多个不同存储集群由主元数据卷响应于文件访问请求而提供并且与文件访问请求相对应。
22.客户端系统方法还包括客户端系统向包含一个或多个不同存储集群以及与一个或多个不同存储集群相关联的一个或多个序列号的特定数据卷节点发送包括读取或写入请求的数据访问请求,一个或多个不同存储集群中的每个与对应序列号相关联。
23.此后,响应于数据访问请求,客户端系统接收数据访问请求被特定数据卷节点准许或拒绝的指示。在一些实施例中,响应于一个或多个序列号与数据卷节点处的一个或多个不同存储集群相关联并且响应于vdl(有效数据长度)指示符指示数据被写入文件的一个或多个存储集群,准许数据访问请求。值得注意的是,该vdl指示符存储在特定数据卷节点处,而不由主元数据卷节点存储或与主元数据卷节点同步。
24.在一些实例中,当由客户端系统提供的一个或多个不同序列号在请求时未能与特定数据卷节点处的一个或多个不同存储集群相关联时,和/或响应于vdl指示符指示数据没
有被写入文件的一个或多个存储集群,拒绝数据访问请求。
25.提供本“发明内容”以便以简化形式介绍在下面的“具体实施方式”中进一步描述的概念的选择。本“发明内容”无意确定所要求保护的主题的关键特征或基本特征,也无意用作确定所要求保护的主题的范围的帮助。
26.附加特征和优点将在随后的描述中阐述,并且部分地根据该描述将是清楚明白的,或者可以通过本文中的教导的实践而获悉。本发明的特征和优点可以通过所附权利要求中特别指出的仪器和组合来实现和获得。本发明的特征根据以下描述和所附权利要求将变得更加清楚明白,和/或可以通过如下文所阐述的本发明的实践而获悉。
附图说明
27.为了描述能够获得上述和其他优点和特征的方式,将通过参考在附图中示出的特定实施例来呈现对上述简要描述的主题的更具体的描述。理解,这些附图仅描绘典型的实施例并且因此不被认为是对范围的限制,因此将通过使用附图以额外的特异性和细节描述和解释实施例,在附图中:
28.图1示出了分布式存储系统的示例,该分布式存储系统包括管理和分配存储集群的主节点,该存储集群将文件的数据存储在不同的远程边缘数据卷节点中;
29.图2示出了边缘数据卷节点中的存储集群卷的示例,其中一个集群被分配给文件,第二集群被重新分配给该文件;
30.图3示出了如何使用vdl指示符来标识已经由存储集群被分配到的文件写入的存储集群;
31.图4a-4c示出了计算环境的实施例,其中分布式存储系统包括数据卷节点,该数据卷节点存储可以由客户端系统访问并且由主元数据卷节点根据参考图5-7描述的方法来分配;
32.图5从数据卷节点的角度示出了用于管理诸如图4a-4c所示的分布式存储系统的示例方法的流程图;
33.图6从客户端系统的角度示出了用于管理诸如图4a-4c所示的分布式存储系统的示例方法的流程图;以及
34.图7从主元数据卷节点的角度示出了用于管理诸如图4a-4c所示的分布式存储系统的示例方法的流程图。
具体实施方式
35.所公开的实施例包括存储系统、计算机程序产品和用于管理具有vdl(有效数据长度)控制的存储系统的方法,这些控制在每个集群的基础上实现,并且在一些实例中,在子集群的基础上实现,而不是简单地在每个文件的基础上实现。在一些实例中,存储集群的每集群vdl元数据在分布式网络的边缘数据卷节点处存储和引用,而不是和/或不需要存储或同步管理不同数据卷节点的对应存储集群的主节点处的每集群vdl元数据。主节点还提供序列控制并且将其与适当边缘数据卷节点同步,以进一步控制对包含在对应存储集群内的数据的访问。
36.现在参考图1,示出了分布式存储系统100,分布式存储系统100包括与一个或多个
边缘数据卷节点(例如,120、130和140)通信的主元数据卷节点110,每个边缘数据卷节点包含对应数据卷(例如,分别为125、135和145),每个数据卷包括一个或多个存储集群,存储集群由主元数据卷节点110选择性地分配给存储在分布式存储系统100中的一个或多个文件。尽管元数据卷节点110被示出为远离一个或多个边缘数据卷节点(120、130和140),但是将理解的是,该关系是逻辑边界关系,而不是与远程相关联的实际物理关系。事实上,在一些实例中,主元数据卷节点110可以包括同一物理机器/系统或位于其内,在这种情况下,它们简单地在逻辑上是远程的(例如,位于同一机器/系统的不同逻辑分区、域和/或实例上)。在其他实例中,主元数据卷节点110在物理上远离一个或多个边缘数据卷节点(例如,位于与(多个)边缘数据卷节点不同的房间、建筑物、城市、州、国家等中)。
37.鉴于前述内容,将理解的是,当远程参考主元数据卷节点并且集中管理数据卷节点的文件时,这可以包括其中远程/集中管理是逻辑关系和/或物理关系的实施例,并且可以例如包括其中远程管理的文件由托管主元数据卷节点的同一机器托管的情况。
38.当前,每个数据卷边缘节点被示出为具有相同大小的数据卷,并且每个卷被示出为具有多个存储集群。将理解的是,本发明的范围不限于在数据卷节点上格式化的数据卷的数量(例如,1个或多个数据卷)或数据卷大小(例如,kb(千字节)到tb(太字节)或甚至更大),也不限于每个数据卷的存储集群数量(例如,1个或多个集群),也不限于数据卷节点的数量(例如,1个或多个数据卷节点),也不限于存储在分布式存储系统中的文件数量或类型。
39.此外,将理解的是,主元数据卷节点110还可以包括包含用于存储分布式存储系统的一个或多个文件的全部或部分的存储集群的数据卷,就像数据卷节点中的一个,并且当它这样做时,它既可以作为主元数据卷节点操作,也可以作为一个或多个数据卷节点单独但同时操作。每个数据卷可以实现为对应数据卷节点的磁盘和/或虚拟存储资源,诸如用于虚拟机的虚拟磁盘(诸如,虚拟化数据卷节点)。
40.在一些实例中,由分布式存储系统管理的文件在不同数据卷节点之间划分,其中一个或多个不同数据卷节点的不同集群存储文件的不同部分。在一些实例中,文件(或所存储文件的部分)另外地和/或备选地分布在单个数据卷节点的非连续存储集群之间。
41.在本图示中,文件1当前被写入分布在三个不同数据卷节点(120、130和140)之间的五个不同存储集群。同样,文件2当前被写入分布在两个不同数据卷节点(120和130)之间的三个不同存储集群,并且文件3当前被写入单个数据卷节点(120)的四个连续存储集群。
42.每个存储集群(这里也称为块)是单个数据卷节点内的单个连续且可寻址的存储位块。在一些实施例中,每个数据卷节点的数据卷包括具有相等分配单元大小的多个集群,诸如在最初格式化数据卷节点的数据卷时由主元数据卷节点确定的。然而,将理解的是,所公开的实施例不限于由分布式存储系统100使用的任何特定大小或数量的存储集群(例如,小至几k字节或甚至更小的集群,到大至几兆或甚至更大)。然后集群的数量取决于总体数据卷分配。在一个极端示例中,一个数据卷可能只包含一个集群或多达数千个集群。
43.数据卷(125、135、145和/或未示出的其他数据卷)共同形成由主元数据卷节点110管理的聚合卷190。在一些现有系统中,主元数据卷节点被配置为将不同存储集群分配给不同文件/应用。有时,数据被写入存储集群,然后该存储集群被重新分配用于其他用途,但在初始化存储集群之前,这样数据可能会被不同新应用/文件访问,如“背景技术”(以上)中所
述。在分布式存储系统中尤其如此。
44.为了帮助控制和防止对在重新分配存储集群时保留在存储集群内的数据的未授权访问,一些现有系统(例如,refs)利用vdl来防止在vdl指示所请求的存储集群尚未存储由当前分配文件写入的数据时对分配给特定文件的存储集群的访问。不幸的是,同样如上所述,将vdl与主元数据卷节点同步所需要的通信会给分布式存储系统的网络带宽带来沉重的负担。
45.当前实施例可以用于通过利用在数据卷节点处维护的vdl指示符来帮助减轻通信负担,而无需在管理存储集群的分配的主元数据卷节点处存储或同步vdl指示符数据。为了促进本文中描述的vdl指示符的效用,所公开的实施例还利用由主元数据卷节点集中管理并且与分布式网络中的各种数据卷节点同步的序列控制。这些序列控制不需要像现有系统的vdl那样多的更新和同步,因此与依赖于集中式/同步vdl的现有系统相比,可以用来减少整体网络通信。
46.图2示出了之前参考图1示出和描述的数据卷节点120的存储集群的数据卷的示例。如当前所示,数据卷节点120的数据卷被示出为两个卷:在时间a的卷125a和在后续时间b的卷125b。
47.在时间a,数据卷125a被示出为具有分配给文件1的两个集群(200和204)、分配给文件2的一个集群(203)和分配给文件3的四个集群,如集群图例所反映的。然而,将理解的是,数据卷125a中当前被示出为空的其他集群(诸如,集群205)也可以被分配给文件中的一个(例如,文件1、2、3或另一文件),但当示出为空时,当前不包含数据。
48.在时间b,数据卷125b已经改变,因为数据填充集群204已经从文件1解除分配。该示例还示出,集群204已经被重新分配给文件2,并且数据空集群205也已经被新分配给文件2。
49.当前未示出的主卷节点110可以出于任何数目的原因而执行如上所述的解除分配、重新分配和分配过程,例如响应于检测到文件1的删除(将文件1的集群放入要分配的可用集群池中)和请求为新文件分配空间的请求(在这种情况下,集群从可用集群池中提取并且分配给新文件)。主卷节点跟踪哪些存储集群被分配给每个不同文件、以及各个数据卷节点的不同数据卷内不同集群的地址。
50.在这样的示例中,在集群204被重新分配给文件2(例如,被触发)之后,集群204的数据(其可以包括文件1的非常敏感数据)可能潜在地被访问。在集群204被重新分配之后并且直到集群204被初始化(例如,清零)和/或被文件2的新数据覆盖,来自集群204的延迟数据(在时间a被写入集群204)将保持可访问。
51.为了帮助防止对解除分配/重新分配的存储集群的数据的访问,主卷节点可以使用vdl数据,如前所述。然而,所公开的实施例不是维护和与主节点同步每文件或甚至每集群vdl,而是使用数据卷节点处的vdl指示符和集中式/同步序列信息来控制对解除分配和重新分配的存储集群的数据的访问。
52.图3示出了如何使用每集群vdl指示符来标识已经被对应存储集群当前分配给的文件写入的存储集群,无论该写入数据是否保留在文件中。
53.在当前示例中,集群201-203和206-208被示出为在时间a被分配给文件2,而集群201-208在时间b和时间c都被分配/重新分配给文件2。注意,集群201和202被包含在数据卷
节点130的数据卷135中,而集群202-205被包含在数据卷120的数据卷125中,并且集群206-208被包含在数据卷节点140的数据卷145中,参见图1。该示例被呈现以示出如何将文件分配给分布在不同数据卷之间和/或甚至在存储系统的同一数据卷内分段的存储集群。
54.还如图所示,集群204和205在时间a没有分配给文件2。相反,集群204在时间a被分配给文件1,并且包含来自文件1的数据(如上所述)。同样,集群205或者在时间a未分配,或者在时间a被分配给与文件2不同的文件,而不包含来自它可能在时间a分配给的不同文件的任何数据(也如上所述)。
55.根据本实施例,vdl指示符用于帮助基于存储集群中的数据是否由它们当前分配给的文件写入存储集群来强制执行对不同存储集群的数据的受控访问。例如,在当前实施方式中,vdl指示符是单个位,当设置为1时,该位指示对应存储集群已经由当前分配给的文件写入数据。备选地,如果/当vdl指示符设置为零时,则指示对应存储集群尚未由其当前分配给的文件写入数据。
56.关于图1和2的示例,这更清楚地示出。例如,在时间a,文件2当前作为数据写入集群201、202和203,而不是集群204-208(参见图1和2)。这通过以下方式清楚地反映:vdl指示符位针对集群201-203而不是针对204-208被设置为值1。相反,集群204-208的vdl指示符被设置为(或保持在)零的初始化状态,这表明,截至时间a,当前分配的文件(文件2)尚未将数据写入那些对应存储集群。
57.然而,在时间b,集群204和205现在已经被重新分配/分配给文件2(参见图2),并且它们还包含来自文件2的数据。这通过以下方式反映:集群204和205的vdl指示符改变/设置为值1。然而,值得注意的是,在用文件2中的数据覆盖集群204之前,它包含来自文件1的数据。这时(在被文件2中的新数据覆盖之前),集群204的vdl指示符设置为初始化状态零(当前未示出)。但是,当文件2将数据写入集群204时,它被改变为值1,如时间b所示。其余数据集群206、207和208在时间b将vdl指示符设置为零,以表明它们没有从文件2写入任何数据,它们当前在时间b分配给该文件2。
58.在时间c,集群204-207的vdl指示符都被设置为1,但是当前没有数据被示出为存储在集群204-207中。这是因为,在时间b之后,来自文件2的数据已经被写入集群206和207,然后集群204-207中的文件2的数据已经被删除。vdl指示符指示,文件2的数据已经写入集群201-207,用于它们当前分配给的文件。这样,文件2可以读取集群204-207,而不会暴露于在分配/重新分配给文件2之前可能已经写入这些集群的另一文件中的数据,诸如文件1的数据,这些数据用于被写入集群204。然而,文件2尚未写入集群208,因此vdl指示符保持设置为零,以防止读取该集群。当接收到读取时,系统可以提供错误或合成响应,诸如每个集群或当前设置为零的初始化状态的子集群(见下文)的全零。
59.虽然前述描述已经参考了vdl指示符如何是包括二进制位值的每集群指示符。将理解的是,也可以使用其他类型的vdl指示符来更精细地跟踪特定集群的vdl。
60.举例来说,一些实施例包括使用多位子集群水印vdl指示符,该指示符指示特定存储集群的水印范围(或块),该特定存储集群在给那个文件的当前文件分配期间已经被文件写入。
61.多位水印可以为集群的每个子集群/块应用不同位(位和子集群的数量对应于期望子集群粒度)。例如,如果集群大小为64kb并且用户希望将集群细分为四个16kb的块,则
多位水印可以使用总共四位来提供有关已经由关联文件写入的集群部分的更大粒度。(例如,一个位用于第一块,第二位用于第二块,第三位用于第三块,第四位用于第四块,类似于单个位指示符如何用于整个集群)。
62.另一多位水印指示符可以包括将不同组合位值映射到已经写入集群的对应不同量级(例如,当集群被细分为512字节块时,设置为00的两位指示符可以指示没有数据被写入集群,而设置为01的指示符指示文件已经将数据写入前512字节块,设置为10的指示符指示文件已经写入前1024字节块,并且设置为11的指示符指示前1536字节块已经被写入)。
63.在另一实施例中,作为示例,离散位值可以分配给集群的不同块。该映射可以根据集群的大小和所需要的子集群映射的数量使用不同数量的位(例如,对于具有六(6)个不同大小的不同块映射的64kb集群,二进制值0可以指示文件没有向集群写入任何内容,二进制值1指示已经写入集群的前512字节块,值为2指示已经写入集群的前1024字节块,二进制值3指示已经写入集群的前4kb块,二进制值4指示已经写入集群的前8kb块,二进制值5指示已经写入集群的前16kb块,二进制值6指示已经写入集群的前32kb块,二进制值7指示已经写入集群的整个64kb块。
64.当读取被定向到具有更细粒度的水印vdl数据的集群时,系统可以为已经设置对应水印vdl的集群的块提供数据,并且为集群的其余部分提供全零(其没有设置vdl——表示它们默认设置为初始化状态,以反映它们没有由文件写入当前文件分配的数据)。
65.不同vdl指示符映射和配置可以用于适应不同需要和偏好并且可以适应平衡水印更新的不同期望。例如,某些类型的媒体(例如,闪存)可以使用更细粒度的水印来允许更新vdl,而不必擦除/重置先前vdl值,直到对对应存储集群执行重新排序。
66.现在将参考图4a-4c来进一步描述在边缘数据卷节点处使用vdl指示符(而不在主卷节点处存储或同步vdl指示符)以帮助限制对来自由主卷节点重新分配的存储集群的数据的访问的实施例。
67.图4a-4c示出了分布式存储系统(例如,分布式存储系统100)的计算环境,其中主元数据卷节点410将一个或多个存储集群分配给分布在一个或多个数据卷节点420的(多个)数据卷540之间的一个或多个文件。图4a-4c还对应于参考图5-7描述的方法。
68.如图所示,主元数据卷节点410(本文中也称为主节点和主卷节点)包含一个或多个处理器411和存储库412,该存储库412存储由一个或多个处理器411可执行以实现本文中描述的主节点410的功能的计算机可执行指令。
69.存储库412还可以包括接口413,接口413用于与本文中描述的各种客户端系统和边缘数据卷节点通信并且促进不同主节点组件之间的通信,包括(多个)分配器414、定序器415、加密器416和元数据卷417。
70.(多个)分配器414被配置为将存储系统的存储集群分配给不同文件。当(多个)分配器414包括多个不同分配器414时,它们各自被分配给存储系统的不同域/区域。它们每个都可以与每个分配器被分配管理的不同权限、租户、客户端和/或不同物理资源相关联。(多个)分配器414还被配置为跟踪每个存储集群的地址和分配。
71.定序器415被配置为当存储集群被分配给特定文件时生成序列号并且将序列号分配给存储集群。序列号由定序器和/或(多个)分配器414在存储库412中存储的数据结构内跟踪。在一些实例中,序列号由随机数发生器生成。在其他实例中,序列号是每次重新分配
具有先前序列号的存储集群时递增的递增值。
72.加密器416被配置为在序列号被传输到请求它们所请求的文件的句柄的客户端系统之前可选地加密序列号。这种类型的加密可以用于防止恶意软件和不良行为者窥探和猜测递增的序列号。加密器416使用一个或多个加密密钥、散列和/或认证信息的组合来加密序列号。对应解密密钥和认证信息被提供给数据卷节点以用于解密加密的安全密钥。在一些实例中,加密器使用由加密密钥签名的散列对(多个)序列号进行加密,数据卷节点具有该加密密钥的对应解密密钥。可以使用任何期望加密技术,包括对称和非对称加密。
73.可以是存储库412的一部分的元数据卷417存储用于帮助管理分布式存储系统的各种数据,包括认证信息和集群地址以及所分配的序列号。
74.在大多数实施例中,元数据卷节点410避免存储或跟踪不同存储集群的任何vdl信息,所有vdl指示符数据仅在包含对应存储集群的数据卷节点处被维护。
75.然而,在一个备选实施例中,元数据卷417存储vdl数据408,vdl数据408被用于提供给可能尚未被配置为利用新序列号来向数据卷节点(例如,数据卷节点420)请求数据的传统客户端(例如,传统客户端460)。
76.主卷节点的各种组件(例如,(多个)接口403、(多个)分配器404、定序器405、加密器406、以及数据卷节点420的接口423和解密器426)可以被实现为由存储库412和422中存储的计算机可执行指令执行的软件。它们也可以被实现为专用处理器和硬件,或者实现为软件和处理器/硬件的组合。
77.如图所示,主卷节点410与客户端(例如,开明客户端450)和边缘数据卷节点420通信。虽然仅示出了单个边缘节点,但是将理解的是,用于实现所公开的实施例的计算环境400还可以包括多个边缘节点,所有边缘节点都可以类似于边缘数据卷节点420。
78.所示的边缘数据卷节点420(也可以简称为数据卷节点或边缘节点)包括用于与主节点和开明客户端450接口的接口423。(多个)接口423还被配置为接收和处理来自客户端系统450和其他客户端系统(包括传统客户端系统460)的数据访问请求(例如,读取/写入请求)。
79.边缘节点420还包括一个或多个处理器421和存储库422,存储库422存储有在由(多个)处理器421执行时可操作以实现边缘卷节点420的公开功能的计算机可执行指令。
80.数据卷节点420还包括一个或多个数据卷427,每个数据卷427存储一个或多个存储集群(包括存储集群490)。存储集群与(多个)对应集群vdl指示符470相关联(诸如,与存储集群490相关联的vdl指示符472)。存储集群还与集群序列数据480相关联(诸如,与存储集群490相关联的序列号482)。
81.在一些实例中,(多个)集群vdl指示符470和集群序列数据480与数据卷427的存储集群分开存储在存储库422中。在其他实施例中,(多个)集群vdl指示符470和集群序列数据480与它们所属的数据集群一起存储(例如,在数据集群本身内和/或在用于存储集群和数据卷的一个或多个索引内并且在数据卷427的存储中维护)。
82.解密器426被配置为对在客户端数据访问请求中接收并且可以由加密器416加密的加密序列号进行解密。由解密器426使用的解密密钥和/或认证信息存储在存储库422中。
83.开明客户端450(在本文中也可以简称为客户端计算系统、客户端系统或客户端)还包括一个或多个处理器421和存储库422,存储库422存储有在由(多个)处理器421执行时
实现客户端系统450的公开功能的可操作的计算机可执行指令。
84.现在将参考图5-7描述图4a-4c的其他方面,图5-7示出了用于管理诸如图1、2和4a-4c所示和描述的分布式存储系统的示例方法的流程图。
85.应当注意,图5的流程图500中所示的动作是从数据卷节点420的角度叙述的,图6的流程图600中所示的动作是从客户端系统450的角度叙述的,图7的流程图700中所示的动作是从主卷节点410的角度叙述的。
86.还应当注意,虽然参考图5-7公开的方法动作可以按特定顺序讨论或在流程图中说明为以特定顺序发生,但是除非特别说明或者因为一个动作依赖于在该动作被执行之前完成的另一动作而要求,否则不需要特定顺序。
87.如图5所示,一些实施例包括用于基于在分布式存储系统的数据卷节点(诸如,数据卷节点420)处执行的过程来实现分布式存储系统的管理的方法(以及对应系统和计算机程序产品)。
88.例如,这些实施例包括具有数据卷的数据卷节点420,该数据卷具有由主元数据节点410远程管理的存储集群,该主元数据节点410将数据卷节点427的一个或多个存储集群(例如,490)分配给一个或多个文件。数据卷节点420还配置有至少一个处理器421和所存储的可执行指令(例如,存储库422),该指令由至少一个处理器可执行以使数据卷节点420执行用于针对(多个)存储集群在每个集群的基础上实现数据访问控制的数据卷节点方法(例如,流程图500的方法)。
89.数据卷节点方法包括以下动作:数据卷节点从主元数据卷节点接收一个或多个存储集群的分配、以及与一个或多个存储集群相关联的一个或多个对应序列号,一个或多个存储集群被包含在数据卷节点的数据卷内(动作510)。例如,该动作通过从主节点410向边缘节点420传输分配464来说明。该分配包括与对应数据集群(例如,集群490)相关联的序列号482。关于与序列号相关联的存储集群,可以理解,存储集群和序列号可以被分配给例如文件或特定数据结构格式。备选地,存储集群和对应序列号可以与任何特定文件和/或其他数据结构格式完全无关。
90.数据卷节点方法还包括以下动作:数据卷节点在本地将对应序列号与数据卷节点相关联,并且在本地将一个或多个存储集群中的存储集群的vdl(有效数据长度)指示符设置为初始化状态,初始化状态指示存储集群尚未存储由为其分配存储集群的文件写入的数据(即使它确实具有来自先前文件分配的数据)(动作520)。
91.该方法还包括数据卷节点接收对至少一个存储集群的客户端写入请求的动作(动作530)。这在图4b中被示出为数据访问请求466并且可以包括寻址到一个或多个存储集群的特定集合的读取或写入请求,例如集群490。数据访问请求466还将包括与存储集群相关联的序列号(例如,序列号482)。该序列号可以单独或与对应于在数据访问请求466中标识的其他存储集群的其他序列号的组合进行加密,该数据访问请求466由主节点410响应于客户端文件访问请求460而提供给客户端系统450作为响应/文件句柄462。
92.在一些实例中,客户端系统不能解密边缘节点420能够解密的加密序列号。
93.值得注意的是,响应于并且仅当数据卷节点在写入请求中从客户端接收到对应序列号(例如,482)时,或者在后续客户端请求中,并且在对应序列号仍然由数据卷节点与存储集群相关联时,客户端数据访问请求466被边缘节点420允许(动作540)。
94.边缘节点420通过至少解密序列号(如果已加密)并且将从客户端接收的序列号与从主节点410接收的并且存储在边缘节点的集群序列数据480中的所存储的序列号482进行比较来确定边缘节点420仍然将序列号与存储集群相关联。如果它们匹配,则确定该序列号仍然与对应存储集群相关联,如果它们不匹配,则提供文件访问所需要的关联将被确定为不存在并且请求被拒绝。
95.当准予/许可数据访问请求时,边缘节点420可以向客户端系统450提供包括来自(多个)存储集群的请求数据的回复468,和/或提供关于请求已经完成的指示(例如,写入的确认)。如果访问请求包括删除请求,则这也可以包括数据删除确认。
96.当请求是写入请求时,并且在允许客户端写入请求时,这使得所请求的数据被写入存储集群,数据卷节点更新数据卷节点处的存储集群的vdl指示符(与(多个)其他集群vdl指示符470一起存储)以指示对应存储集群包含存储集群被分配给的文件的数据(动作550)。在一些实例中,这种对vdl指示符的重新发送在没有初始化存储集群的情况下发生,使得存储集群维护来自先前文件分配的陈旧数据。
97.在一些实例中,vdl指示符的更新仅在边缘数据卷节点处执行,而不同步或不需要主卷节点410处的存储集群的vdl指示符的任何对应同步,特别是当主节点410不为存储集群存储任何vdl指示符数据时。
98.如图6所示,一些实施例还包括用于基于在客户端计算系统(诸如,客户端450)处执行的过程来实现分布式存储系统的管理的方法(以及对应系统和计算机程序产品)。例如,这些实施例包括配置有至少一个处理器451和所存储的计算机可执行指令(例如,存储库452)的客户端系统,该计算机可执行指令由至少一个处理器451可执行以使客户端系统450执行客户端系统方法(例如,流程图600的方法),其中客户端系统450向主元数据卷节点410提供对文件的访问的文件访问请求460,主卷节点410为该文件分配和管理存储集群(例如,集群490)。
99.该方法包括客户端系统响应于文件访问请求460而接收由主元数据卷节点410提供的由主元数据卷节点410分配给文件的与文件访问请求460相对应的一个或多个不同存储集群(例如,集群490)的标识(动作620)、以及与一个或多个不同存储集群(例如,490)相关联的一个或多个序列号(例如,482)。
100.一个或多个序列号可以单独地或共同地加密到单个响应/文件句柄462中,该单个响应/文件句柄462还包括与文件访问请求460相关联的不同存储集群的地址信息。
101.客户端系统方法还包括客户端系统450向包含一个或多个不同存储集群(例如,集群490)以及与一个或多个不同存储集群相关联的一个或多个序列号(例如,482)的特定数据卷节点420发送包括读取或写入请求的数据访问请求466(动作630)。
102.此后,响应于数据访问请求,客户端系统接收数据访问请求被特定数据卷节点准许(动作650)或拒绝(动作660)的指示作为准许/拒绝响应468的一部分。
103.在一些实施例中,响应于一个或多个序列号与数据卷节点处的一个或多个不同存储集群相关联并且响应于vdl指示符(例如,指示符472)指示数据已经被写入文件的一个或多个存储集群(例如,集群490),准许数据访问请求。如上所述,在一些实例中,该vdl指示符470仅存储在特定数据卷节点420处和/或不由主元数据卷节点410存储或与其同步。
104.当由客户端系统提供的一个或多个不同序列号(例如,482)在请求时未能与特定
数据卷节点420处的一个或多个不同存储集群(例如,集群490)相关联时,数据访问请求被拒绝(动作640)。另外,如果该请求是读取请求,当vdl指示符指示数据尚未写入文件的一个或多个存储集群时,也可以拒绝该请求。如果请求是写入请求,即使vdl指示符指示数据尚未写入文件的一个或多个存储集群,它也可能被允许。
105.关于被拒绝的请求,应当注意,这可能作为另一客户端系统(例如,406)与边缘节点420接口的结果而发生,该边缘节点420在修改文件的请求中具有正确的序列号(例如,移动/删除文件的一部分)并且这足以(在一些实例中)导致分配的存储集群重新排序。也可以通过删除文件的一部分来触发的这种重新排序可以触发存储该部分数据的对应存储集群的重新分配。
106.存储集群的重新分配和重新同步与主卷节点410同步。当重新排序事件发生时,通知主节点410并且主节点410用与存储集群相关联的新序列号(例如,482-2)对存储集群(例如,490)重新排序。新序列号在本文中也称为已更新序列号。用于存储集群的这个新/已更新序列号(482-2)然后被发送到新集群分配464-2内的对应数据卷节点420,然后与对应存储集群相关联地存储在集群序列数据480中。该新序列号的接收引起边缘节点将vdl指示符重置/初始化为初始化状态以指示当前分配给存储集群的文件尚未将数据写入相关联的存储集群。
107.然后,在获得拒绝(例如,468)时,并且这可以简单地是数据卷节点420获得存储集群的新序列号的指示,客户端系统450可以向主卷节点410发送新文件访问请求460-2以获得具有新序列号482-2的对应新响应/文件句柄462-2。然后,客户端450可以向边缘节点420发送具有新序列号482-2的新数据访问请求466-2。
108.在验证新序列号482-2与所存储的集群序列数据480的关联之后,边缘节点420然后可以向客户端发出新准许/拒绝响应468-2,新准许/拒绝响应468-2确认所请求的数据访问已经被允许或已经发生。这可以包括:如果当边缘节点420接收到新序列号时由边缘节点420初始重置为初始化状态的vdl指示符472-2随后被改变为表示数据已经被分配存储集群的当前文件存储在存储集群中,则向客户端提供存储在重新分配的存储集群(490)中的数据。
109.如图7所示,一些实施例还包括用于基于在主卷节点410处执行的过程来实现分布式存储系统的管理的方法(以及对应系统和计算机程序产品)。例如,这些方法包括主卷节点410通过在一个或多个不同数据卷节点的一个或多个数据卷中包含的不同存储集群之间划分第一文件来将该不同存储集群分配给该文件,以及生成序列号并且将序列号分配给每个对应存储集群(动作710)。在一些实例中,不同序列号被分配给每个对应不同存储集群。在其他实例中,单个序列号被分配给一组存储集群,并且在一些实例中,单个序列号被分配给属于单个文件或其他数据结构的所有存储集群。
110.该方法还包括主卷节点410生成(动作520)分配给不同存储集群的序列号并且将分配给不同存储集群的序列号分别提供(动作530)给包含不同存储集群的一个或多个不同数据卷节点,如上所述。
111.值得注意的是,在对应存储集群被重新分配给不同文件之前,主元数据卷将改变任何特定存储集群的序列号。以这种方式,主卷节点410协调和同步存储集群的序列号,即使它不对vdl指示符这样做。
112.该方法还包括主元数据卷节点从远程客户端接收对第一文件的文件访问请求(动作540),并且作为响应,向远程客户端提供分配给第一文件的一个或多个不同存储集群的标识。如上所述,与文件访问请求相对应的所标识的存储集群被提供有集群存储地址信息和与一个或多个不同存储集群相关联的一个或多个序列号(动作550)。
113.关于前述内容,将理解的是,所公开的方法可以由包括一个或多个处理器和诸如计算机存储器等计算机可读介质的计算机系统来实践,诸如参考主元数据节点、数据卷节点和客户端计算系统所述。所公开的计算系统的计算机存储器和其他存储设备可以存储计算机可执行指令,该计算机可执行指令在由计算系统的一个或多个处理器执行时引起各种功能被执行,诸如所公开的实施例中列举的动作和其他功能。
114.因此,将理解的是,所公开的发明的实施例可以包括或利用专用或通用计算机,包括计算机硬件,如下文更详细讨论的。在本发明的范围内的实施例还包括用于携带或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可以被通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。携带计算机可执行指令的计算机可读介质是传输介质。因此,作为示例而非限制,本发明的实施例可以包括至少两种截然不同的计算机可读介质:物理计算机可读存储介质和传输计算机可读介质。
115.物理计算机可读存储介质包括ram、rom、eeprom、cd-rom或其他光盘存储(诸如,cd、dvd等)、磁盘存储或其他磁存储设备、或者可以用于以计算机可执行指令或数据结构的形式存储期望的程序代码装置并且可以由通用或专用计算机访问的任何其他存储介质。
[0116]“网络”被定义为能够在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当通过网络或另一通信连接(硬连线、无线或者硬连线或无线的组合)向计算机系统传输或提供信息时,计算机系统将连接正确地视为传输介质。传输介质可以包括可以用于以计算机可执行指令或数据结构的形式携带或传输期望的程序代码装置并且可以由通用或专用计算机访问的网络和/或数据链路。上述的组合也被包括在计算机可读介质的范围内。
[0117]
此外,在到达各种计算机系统组件时,计算机可执行指令或数据结构形式的程序代码装置可以从传输计算机可读介质自动传输到物理计算机可读存储介质(反之亦然)。例如,通过网络或数据链路接收的计算机可执行指令或数据结构可以缓存在网络接口模块(例如,“nic”)内的ram中,并且然后最终传送到计算机系统ram和/或计算系统处的较不易失性存储介质。因此,计算机可读物理存储介质可以被包括在也(甚至主要)利用传输介质的计算机系统组件中。
[0118]
计算机可执行指令包括例如引起通用计算机、专用计算机或专用处理设备执行特定功能或功能组的指令和数据。计算机可执行指令例如可以是二进制、中间格式指令,诸如汇编语言,甚至是源代码。尽管已经以特定于结构特征和/或方法动作的语言描述了该主题,但是将理解的是,所附权利要求中定义的主题不一定限于上述特征或上述动作。相反,所描述的特征和动作被公开作为实现权利要求的示例形式。
[0119]
本领域技术人员将理解,本发明可以在具有很多类型的计算机系统配置的网络计算环境中实践,包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持设备、多处理器系统、基于微处理器或可编程的消费电子产品、网络pc、小型计算机、大型计算机、移动
电话、pda、寻呼机、路由器、交换机等。本发明也可以在分布式系统环境中实施,其中通过网络链接(通过硬连线数据链路、无线数据链路或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统都执行任务。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备两者中。
[0120]
备选地或另外地,本文中描述的功能可以至少部分由一个或多个硬件逻辑组件来执行。例如而非限制,可以使用的硬件逻辑组件的说明性类型包括现场可编程门阵列(fpga)、程序专用集成电路(asic)、程序专用标准产品(assp)、片上系统(soc)、复杂可编程逻辑器件(cpld)等。
[0121]
在不脱离本发明的精神或特征的情况下,本发明可以以其他具体形式来实施。所描述的实施例在所有方面仅被认为是说明性的而非限制性的。因此,本发明的范围由所附权利要求而不是由前面的描述来指示。在权利要求的等同物的含义和范围内的所有变化都将被包含在其范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献