存储集群的制作方法

文档序号:16989776发布日期:2019-03-02 00:52阅读:266来源:国知局
存储集群的制作方法

为了存储大量数据,目前在固态驱动器(ssd)中使用诸如闪存的固态存储器来增强或取代统称为旋转介质的传统硬盘驱动器(hdd)、可写cd(高密度磁盘)或可写dvd(数字通用光盘)驱动器,以及磁带驱动器。闪存和其他固态存储器具有与旋转介质不同的特性。但是,许多固态驱动器由于兼容性的原因被设计为符合硬盘驱动器标准,这使得难以提供闪存和其他固态存储器的增强特征或难以利用它们在独特方面的优势。

在此背景下提出各个实施例。



技术实现要素:

在一些实施例中,提供了一种用于管理存储系统中的处理能力的方法。该方法包括提供多个刀片(blade),刀片的第一子集中的每个刀片具有用于存储用户数据的存储节点和存储存储器,并且刀片的不同的第二子集中的每个刀片具有可能具有用于计算操作的存储器的计算节点(可以被称为仅计算节点)。该方法包括跨多个刀片地分布权限到包括至少一个仅计算节点的多个节点,其中,每个权限具有对某范围用户数据的所有权。

在一些实施例中,提供了一种有形的非暂态计算机可读介质,其上具有指令,这些指令在由处理器执行时使得处理器执行一种方法。该方法包括提供多个刀片,第一子集中的每个刀片具有存储节点和存储存储器,并且不同的第二子集中的每个刀片具有仅计算节点。该方法包括跨多个刀片地分布权限到包括至少一个仅计算节点的多个节点,其中,每个权限具有对某范围用户数据的所有权。

在一些实施例中,提供了一种存储系统。该系统包括多个刀片,第一子集中的每个刀片具有存储节点和存储存储器,并且不同的第二子集中的每个刀片具有仅计算节点。该系统包括形成存储系统的多个刀片,其中,权限跨多个刀片地分布到包括至少一个仅计算节点的多个节点,并且其中,每个权限具有对某范围用户数据的所有权。

从结合附图的以下详细描述,实施例的其他方面和优点将变得显而易见,附图通过示例的方式说明了所描述的实施例的原理。

附图说明

通过参考结合附图进行的以下描述,可以最好地理解所描述的实施例及其优点。在不脱离所描述的实施例的精神和范围的情况下,这些附图绝不限制本领域技术人员可以对所描述的实施例进行的形式和细节的任何改变。

图1是根据一些实施例的具有多个存储节点和耦合到每个存储节点以提供网络附接存储的内部存储装置的存储集群的透视图。

图2是在一些实施例中可以使用图1的存储群集中的一者或多者作为存储资源的企业计算系统的系统图。

图3是示出根据一些实施例的适用于图1的存储集群的具有不同容量的多个存储节点和非易失性固态存储装置的框图。

图4是示出根据一些实施例的互连交换机耦合多个存储节点的框图。

图5是多级框图,示出了根据一些实施例的存储节点的内容和非易失性固态存储单元中的一者的内容。

图6是使用图1-5的存储集群的实施例的存储系统的示图,其中数据拥有权限被分布在混合刀片和一个或多个计算刀片上。

图7是图6的存储系统的示图,示出了跨混合刀片和(一个或多个)计算刀片地分布到以下各项的处理能力:用于外部i/o处理的前置(front-facing)层、用于权限的权限层、以及用于存储存储器的存储层。

图8是用于管理存储系统中的处理能力的方法的流程图,该方法可以根据一些实施例在存储集群、存储节点和/或非易失性固态存储装置的实施例上实现或由这些实施例实现。

图9是用于在添加刀片时管理存储系统中的处理能力的方法的流程图,该方法可以根据一些实施例在存储集群、存储节点和/或非易失性固态存储装置的实施例上实现或由这些实施例实现。

图10是示出可以实现本文所描述的实施例的示例性计算设备的图示。

具体实施方式

以下实施例描述了一种存储群集,该存储群集存储用户数据,例如,源自一个或多个用户或客户端系统或存储群集外部的其他来源的用户数据。存储群集使用纠删码及元数据冗余副本将用户数据跨越容置在机箱内的存储节点分布。纠删码是指一种数据保护或数据重建方法,在该方法中跨越一组不同的位置(例如,磁盘、存储节点或地理位置)对数据进行存储。闪存存储器是可与实施例结合的一种类型的固态存储器,但是实施例可延伸至其他类型的固态存储器或包括非固态存储器的其他存储介质。存储位置和工作负载的控制跨越在群集对等系统中的存储位置中分布。诸如在各存储节点之间进行中间通信、检测存储节点何时变为不可用以及跨越各种存储节点平衡i/o(输入和输出)之类的任务全部都是基于分布式进行处理的。在一些实施例中,数据以支持数据恢复的数据片段或数据条带的形式跨越多个存储节点设置或分布。数据的所有权可独立于输入和输出模式在群集内进行再分配。这种在下面被更详细地描述的架构在保持系统可操作的同时允许群集中的存储节点失效,因为数据可从其他存储节点处被重建,从而维持数据可用于进行输入和输出操作。在各种实施例中,存储节点可被称为群集节点、刀片或服务器。存储集群的一些实施例具有混合刀片(具有存储存储器)以及计算刀片(不具有存储存储器)。权限(每个权限都具有对某范围用户数据的所有权)被分布在混合刀片或者混合刀片和计算刀片上,以便平衡可用于每个权限的处理能力或者根据策略、协议、或多租户服务来分布处理能力。

存储群集包含在机箱内,即,容置一个或多个存储节点的壳体内。机箱内包括用于向各存储节点提供电力的机构(例如,配电总线)以及诸如能够在存储节点之间进行通信的通信机构(例如,通信总线)。根据一些实施例,存储群集可在一个位置中作为独立系统运行。在一个实施例中,机箱包含可以独立地启用或禁用的配电总线和通信总线二者的至少两个实例。内部通信总线可以是以太网总线,但是,诸如快捷外围外设互连(pciexpress)、无限带宽技术(infiniband)之类的其他技术也同样适用。机箱提供用于外部通信总线的端口,以直接地或通过交换机促进在多个机箱之间以及与客户端系统之间的通信。外部通信可使用诸如以太网、infiniband、光纤通道等技术。在一些实施例中,外部通信总线使用不同的通信总线技术用于机箱间通信和客户端通信。在交换机部署在机箱之内或之间的情况下,交换机可作为多种协议或技术之间的转换。当通过连接多个机箱来限定存储群集时,客户端可通过使用专用接口或标准接口访问存储群集,所述标准接口例如有网络文件系统(nfs)、通用互联网文件系统(cifs)、小型计算机系统接口(scsi)或超文本传输协议(http)等。客户端协议的转换可能发生在交换机、机箱外部通信总线处或在每个存储节点内。

每个存储节点可以是一个或多个存储服务器,并且每个存储服务器连接至可被称为存储单元的一个或更多个非易失性固态存储器单元。一个实施例包括:每个存储节点中以及1至8个非易失性固态存储器单元之间的单个存储服务器,然而这一个示例并不意味着限制。存储服务器可包括处理器、动态随机存取存储器(dram)以及用于内部通信总线的接口和用于每个电力总线的配电接口。在一些实施例中,在存储节点内部,接口和存储单元共享通信总线(例如,pciexpress)。非易失性固态存储器单元可通过存储节点通信总线直接访问内部通信总线接口,或请求存储节点访问总线接口。在一些实施例中,非易失性固态存储器单元包含嵌入式中央处理单元(cpu)、固态存储控制器和一定数目的固态海量存储装置(例如,容量在2-32太字节(tb)之间)。在非易失性固态存储单元中包括诸如dram的嵌入式易失性存储介质和能量储备装置。在一些实施例中,能量储备装置为电容器、超级电容器或在断电的情况下能够向稳定存储介质传输dram内容的子集的电池。在一些实施例中,非易失性固态存储器单元由存储级存储器构成,例如替代dram并且能够实现低功率保持装置的相变或磁阻随机存取存储器(mram)。

存储节点和非易失性固态存储装置的许多特征中的一个是能够在存储群集中主动重建数据。存储节点和非易失性固态存储装置可确定在存储群集中的存储节点或非易失性存储节点固态存储装置何时无法访问,这与是否尝试进行对涉及该存储节点或非易失性固态存储装置的数据的读取无关。随后,存储节点和非易失性固态存储装置进行合作来在至少部分新的位置处恢复和重建数据。这构成主动重建,因为系统无需等待利用存储群集的客户端系统发起对数据进行读取访问就能重建数据。以下讨论存储存储器及其操作的这些细节和更多的细节。

图1是根据一些实施例的具有多个存储节点150和耦合到每个存储节点的内部固态存储器来提供网络附接存储或存储区域网络的存储群集160的透视图。网络附接存储、存储区域网络或存储群集或其他存储存储器可包括一个或多个存储群集160,每个存储群集160均具有一个或多个存储节点150,存储节点150在物理组件和由此提供的存储存储器的存储量方面灵活地且可重新配置地进行设置。存储群集160被设计为装配在机架中,并且可根据对存储存储器的需求来建立和填充一个或多个机架。存储群集160包括具有多个插槽142的机箱138。应当理解的是,机箱138可被称为外壳、壳体或机架单元。在一个实施例中,机箱138具有14个插槽142,但是其他数目的插槽也容易预想到。例如,一些实施例具有4个插槽、8个插槽、16个插槽、32个插槽或其他合适数目的插槽。在一些实施例中,每个插槽142可容置一个存储节点150。机箱138包括可用于将机箱138安装在机架上的翼片148。风扇144提供用于冷却存储节点150及其部件的空气循环,但是可以使用其他冷却部件,或者可以预想到不具有冷却部件的实施例。交换机结构146将机箱138内的存储节点150彼此耦合并将它们耦合到用于与存储器进行通信的网络。在图1描述的实施例中,出于说明性目的,交换机结构146和风扇144左侧的插槽142被示出为由存储节点150占据,而交换机结构146和风扇144右侧的插槽142是空的且可用用于插入存储节点150。这样的配置是一个示例,并且一个或多个存储节点150可以以各种其他布置形式占据插槽142。在一些实施例中,存储节点的布置不需要是顺序的或相邻的。存储节点150是可热插的,这意味着无需使系统停机或关闭便可将存储节点150插入至机箱138中的插槽142,或者从插槽142移除。一旦存储节点150插入插槽142或从插槽142移除,系统自动进行重新配置以识别并适应该变化。在一些实施例中,重新配置包括冗余恢复和/或数据或负载再平衡。

每个存储节点150可具有多个组件。在此示出的实施例中,存储节点150包括由cpu156(即,处理器)、耦合到cpu156的存储器(mem)154、以及耦合到cpu156的非易失性固态存储装置152填充的印刷电路板158,但是可在进一步的实施例中使用其他配件和/或组件。存储器154具有由cpu156执行的指令和/或由cpu156操作的数据。如以下进一步的解释的,非易失性固态存储装置152包括闪存,或者在进一步的实施例中包括其他类型的固态存储器。

图2是企业计算系统102的系统图,其可使用图1中的一个或更多个存储节点、存储群集和/或非易失性固态存储器作为存储资源108。例如在一些实施例中,图2中的闪存存储装置128可结合图1中的存储节点、存储群集和/或非易失性固态存储器。企业计算系统102具有处理资源104、网络资源106和包括闪存存储装置128的存储资源108。闪存控制器130和闪存存储器132被包括在闪存存储装置128中。在各种实施例中,闪存存储装置128可包括一个或更多个存储节点或存储群集,其中闪存控制器130包括cpu,以及闪存存储器132包括存储节点的非易失性固态存储装置。在一些实施例中,闪存存储器132可包括不同类型的闪存存储器或相同类型的闪存存储器。企业计算系统102示出了适用于部署闪存存储器128的环境,但是闪存存储器128可用于其他更大或更小的计算系统或设备中,或者具有更少的资源或具有附加的资源的企业计算系统102的变体中。企业计算系统102可耦合到诸如互联网的网络140,以便提供或使用服务。例如,企业计算系统102可提供云服务、物理计算资源或虚拟计算服务。

在企业计算系统102中,通过各种控制器布置和管理各种资源。处理控制器110管理处理资源104,这些处理资源包括处理器116和随机存取存储器(ram)118。网络控制器112管理网络资源106,这些网络资源包括路由器120、交换机122和服务器124。存储控制器114管理存储资源108,这些存储资源包括硬盘驱动器126和闪存存储装置128。实施例中可包括其他类型的处理资源、网络资源和存储资源。在一些实施例中,闪存存储装置128完全替代硬盘驱动器126。企业计算系统102可提供或分配各种资源作为物理计算资源,或在变体中作为物理计算资源支持的虚拟计算资源。例如,这些各种资源可通过使用一个或多个服务器运行软件来实现。在存储资源108中存储文件或数据对象或其他形式的数据。

在各种实施例中,企业计算系统102可包括由存储群集填充的多个机架,并且这些机架可位于单个物理位置中,例如,群集或服务器区中。在其他实施例中,多个机架可位于通过网络连接的多个物理位置中,例如在多个城市、州或国家中。每个机架、每个存储群集、每个存储节点和每个非易失性固态存储装置可以单独地配置有各自的存储空间,各自的存储空间随后可独立于彼此进行再配置。因此,可灵活地增加、升级、消减、恢复和/或再配置每个非易失性固态存储装置上的存储容量。在一些实施例中,如上所述,每个存储节点可实现一个或更多个服务器。

图3是示出适于在图1的存储群集中使用的具有多个存储节点150和不同容量的非易失性固态存储装置152的框图。每个存储节点150可具有一个或更多个非易失性固态存储装置152单元。在一些实施例中,每个非易失性固态存储装置152可具有与存储节点150(或其他存储节点150)上的其他非易失性固态存储装置152不同的容量。可选地,存储节点上或多个存储节点上的所有非易失性固态存储装置152可具有相同容量或相同和/或不同容量的组合。这种灵活性在图3中示出,图3示出存储节点的示例,在该示例中存储节点150具有容量为4tb、8tb和32tb的混合非易失性固态存储装置152,另一存储节点具有每个容量为32tb的非易失性固态存储装置152,又一存储节点具有每个容量为8tb的非易失性固态存储装置152。根据本文的教导,容易预想到进一步其他组合和容量。在有群集(例如,使存储装置群集以形成存储群集)的情况中,存储节点可以是或包括非易失性固态存储装置152。如将在以下进一步描述的,非易失性固态存储装置152是方便的群集点,因为非易失性固态存储装置152可包括非易失性随机存取存储器(nvram)组件。

参照图1和图3,如上所述,存储群集160是可缩放的,这意味着,容易添加存储大小不均匀的存储容量。在一些实施例中,一个或多个存储节点150可插接在每个机箱中或可从每个机箱移出,并且存储群集自配置。无论是交付时已安装在机箱中的插接式存储节点150或是之后要添加的插接式存储节点150都可具有不同的大小。例如,在一个实施例中,存储节点150可具有4tb的任何倍数,例如8tb、12tb、16tb、32tb等。在另外的实施例中,存储节点150可具有其他存储量或容量。每个存储节点150的存储容量被广播,并且由此对关于如何条带化数据的决定产生影响。为了实现最大的存储效率,受制于连续操作的预定要求(机箱内的非易失性固态非易失性固态存储装置152或存储节点150至多一个或两个失效),实施例可以在条带中尽可能宽地自配置。

图4是示出通信互连170和配电总线172耦合多个存储节点150的框图。返回参照图1,在一些实施例中,通信互连170可被包括在交换机结构146中或利用交换机结构146实现。在一些实施例中,在机架由多个存储群集160占据的情况下,通信互连170可被包括在架顶式交换机中或与架顶式交换机一起被实现。如图4所示,存储群集160被封装在单个机箱138中。外部端口176通过通信互连170耦合到存储节点150,而外部端口174直接耦合到存储节点。外部电源端口178耦合到配电总线172。如参照图3的描述,存储节点150可包括不同数目以及不同容量的非易失性固态存储装置152。此外,如图4中所示,一个或多个存储节点150可以是仅计算存储节点。权限(authority)168在非易失性固态存储装置152中实现,例如作为存储在存储器中的列表或其他数据结构。在一些实施例中,权限存储在非易失性固态存储装置152内并得到在非易失性固态存储装置152的控制器或其他处理器上运行的软件的支持。在进一步的实施例中,权限168存储在存储节点150中实现,例如作为存储在存储器154中并得到在存储节点150的cpu156上运行的软件的支持的列表或其他数据结构。在一些实施例中,权限168控制数据如何存储在非易失性固态存储装置152中以及在非易失性固态存储装置152中何处存储数据。权限168的控制帮助确定将哪种类型的纠删码方案应用于数据,以及哪些存储节点150具有数据的哪些部分。每个权限168可被分配至非易失性固态存储装置152。在各种实施例中,每个权限可控制由文件系统、存储节点150、或非易失性固态存储装置152分配给数据的索引节点号、段号或其他数据标识符的范围。

在一些实施例中,在系统中每一数据片段和每一元数据片段都具有冗余。此外,每一数据片段和每一元数据片段都有所有者,也可被称为权限。如果(例如由于存储节点的失效)权限不可访问,则存在如何找到该数据或该元数据的接替计划。在各种实施例中,存在权限168的冗余副本。在一些实施例中,权限168与存储节点150和非易失性固态存储装置152有关联。覆盖一定范围的数据段号或数据的其他标识符的每个权限168可被分配给特定的非易失性固态存储装置152。在一些实施例中,用于所有这种范围的权限168被分布在存储群集的非易失性固态存储装置152上。每个存储节点150具有向该存储节点150的(一个或更多个)非易失性固态存储装置152提供访问的网络端口。在一些实施例中,数据可存储在与段号相关联的段中,并且该段号是针对raid(独立磁盘的冗余阵列)条带的配置的间接寻址(indirection)。因此,权限168的分配和使用建立到数据的间接寻址。根据一些实施例,间接寻址可被称为(在这种情况下经由权限168)间接引用数据的能力。段识别可能包含数据的一组非易失性固态存储装置152和对该非易失性固态存储器装置152的本地标识符。在一些实施例中,本地标识符是设备中的偏移,并且可被多个段依次地重复使用。在其他实施例中,本地标识符针对具体段是唯一的,并且不被重复使用。非易失性固态存储装置152中的偏移被应用于定位用于(以raid条带的形式)向非易失性固态存储装置152写入的或从非易失性固态存储装置152读取的数据。数据跨越多个非易失性固态存储装置152单元被条带化,该多个非易失性固态存储装置152单元可包括或不同于具有用于具体数据段的权限168的非易失性固态存储装置152。

如果特定数据段所处的位置发生改变(例如在数据移动或数据重建期间),则应在具有该权限168的非易失性固态存储装置152或存储节点150处查询针对该数据段的权限168。为了定位具体数据片段,实施例计算针对数据段的哈希值或或应用索引节点号或数据段号。这个操作的输出指向具有针对该具体数据片段的权限168的非易失性固态存储装置152。在一些实施例中,该操作有两个阶段。第一阶段将实体标识符(id)(例如,段号、索引节点号或目录号)映射至权限标识符。该映射可包括诸如哈希或位掩码的计算。第二阶段是将权限标识符映射到具体的非易失性固态存储装置152,该阶段可通过显式映射来完成。操作是可重复的,使得当执行计算时,计算的结果可重复地且可靠地指向具有该权限168的具体非易失性固态存储装置152。该操作可包括将一组可达到的存储节点作为输入。如果该组可达到的非易失性固态存储单元更改了,则最佳组随之更改。在一些实施例中,持续值是当前赋值(其总为真),并且所计算的值是群集将尝试重新配置的目标赋值。该计算可用于在存在构成相同群集的一组可达到的非易失性固态存储装置152的情况下,确定针对权限的最佳非易失性固态存储装置152。该计算还确定一组排序的对等非易失性固态存储装置152,其也会记录权限到非易失性固态存储装置的映射,使得即使在所分配的非易失性固态存储装置不可达到的情况下也可确定权限。在一些实施例中,如果特定权限168不可用,则可查询副本或替代权限168。

参照图1-图4,存储节点150上的cpu156的许多任务中的两个是分解写入数据,并且重组读取数据。当系统确定数据要被写入时,针对该数据的权限168被如上定位。当数据的段id已经被确定时,写入请求被转发至当前确定为通过段确定的权限168的主机的非易失性固态存储装置152。随后,非易失性固态存储装置152和对应的权限168所在的存储节点150的主机cpu156将数据分解或分片,并将数据发送到各种非易失性固态存储装置152。传输的数据根据纠删码方案作为数据条带被写入。在一些实施例中,请求数据被拉回,而在其他实施例中,数据被推出。相反,当读取数据时,如上所述定位针对包含数据的段id的权限168。非易失性固态存储装置152和对应的权限168所在的存储节点150的主机cpu156从该权限指向的非易失性固态存储装置和对应的存储节点请求数据。在一些实施例中,从闪存存储装置读取作为数据条带的数据。然后,存储节点150的主机cpu156根据适当的纠删码方案重组读取的数据、校正任何错误(若存在)、并向网络转发重组的数据。在进一步的实施例中,这些任务中的一些或全部可在非易失性固态存储装置152中处理。在一些实施例中,段主机请求通过如下方式将数据发送到存储节点150:请求来自存储的页面,并且随后将数据发送至进行最初请求的存储节点。

在一些系统中,例如在unix类型文件系统中,用指定表示文件系统中的对象的数据结构的索引点或索引节点来处理数据。例如,对象可以是文件或目录。元数据可以伴随对象作为诸如许可数据和创建时间戳等属性以及其他属性出现。段号可分配给文件系统中全部或部分这种对象。在其他系统中,数据段利用在别处分配的段号进行处理。出于讨论的目的,分配单位是实体,且实体可以是文件、目录或段。也就是说,实体是通过存储系统存储的数据或元数据的单元。实体被分组为被称为权限的集合。每个权限都有权限所有者,权限所有者是具有对权限中的实体更新的专用权的存储节点。换句话说,存储节点包含权限,而权限又包含实体。

根据一些实施例,段是数据的逻辑容器。段是介质地址空间和物理闪存位置之间的地址空间,也就是说,数据段号在该地址空间中。段还可包含元数据,这些元数据无需涉及更高级别的软件便可使数据冗余恢复(重写到不同的闪存位置或设备)。在一个实施例中,段的内部格式包含用于确定该数据的位置的客户数据和介质映射。在适用的情况下,通过将段分解成若干数据和校验碎片来保护每个数据段,例如免受存储器和其他故障。根据纠删码方案,数据和校验碎片跨越耦合到主机cpu156(见图5)的非易失性固态存储装置152被分布,即条带化。在一些实施例中,术语“段”的使用是指容器及其在段的地址空间中的位置。根据一些实施例,术语“条带”的使用是指与段相同的一组碎片,并且包括碎片是如何连同冗余或校验信息一起分布。

一系列地址空间转换是跨越整个存储系统进行的。首先是链接到索引节点的目录条目(文件名)。索引节点指向逻辑存储数据的介质地址空间。介质地址可通过一系列间接介质被映射,以便分散大文件的负荷,或实现诸如删除重复或快照之类的数据服务。接着,段地址被转换成物理闪存位置。根据一些实施例,物理闪存位置具有通过系统中的闪存量限制的地址范围。介质地址和段地址是逻辑容器,并且在一些实施例中使用128位或更大的标识符,以便实践中可以无限大(具有在计算为比系统的预期寿命长的时期被重复使用的可能性)。在一些实施例中,以分层方式分配来自逻辑容器的地址。最初,每个非易失性固态存储装置152可被分配有一定范围的地址空间。在该分配的范围内,非易失性固态存储装置152能够分配地址而无需与其他非易失性固态存储装置152同步。

数据和元数据通过一组基础存储布局存储,该基础存储布局针对不同工作负载模式和存储设备是最优的。这些布局结合了多种冗余方案、压缩格式和索引算法。其中一些布局存储有关权限和权限主体的信息,而其他布局存储文件元数据和文件数据。冗余方案包括错误校正码,错误校正码容许在单个存储设备(例如,nand闪存芯片)内的损坏位;纠删码,纠删码容许多个存储节点的失效;以及复制方案,复制方案容许数据中心或区域故障。在一些实施例中,在单个存储单元内使用低密度奇偶校验(ldpc)码。在一些实施例中,在存储群集中使用里所编码(reed-solomon编码),并且在存储网格内使用镜像。元数据可通过使用有序日志结构化索引(例如,日志结构合并树)被存储,并且在日志结构化布局中不可存储大数据。

为了维持跨越实体的多个副本的一致性,存储节点通过计算隐含地允许两件事:(1)包含实体的权限,以及(2)包含权限的存储节点。实体向权限的分配可通过以下方式进行:向权限伪随机地分配实体、基于外部产生的密钥将实体分割到各范围、或者将单个实体放置到每个权限。伪随机方案的示例是线性哈希和rush(replicationunderscalablehashing,可扩展哈希算法下的复制算法)哈希族,包括crush(controlledreplicationunderscalablehashing,可扩展哈希算法下的可控复制算法)。在一些实施例中,所以伪随机分配仅被用于向节点分配权限,因为变节点集可能改变。因为权限集不能改变,所以任何主观功能可应用在这些实施例中。一些布局方案会自动将权限置于存储节点上,而其他布局方案依靠权限到存储节点的显式映射。在一些实施例中,利用伪随机方案将每个权限映射到一组候选权限所有者。与crush相关的伪随机数据分布函数可将权限分配给存储节点并创建权限被分配至何处的列表。每个存储节点具有伪随机数据分布函数的副本,并且可实现有关分布、以及随后有关查找或定位权限的相同计算。为了得到相同的目标节点,在一些实施例中,每个伪随机方案请求一组可达到的存储节点作为输入。一旦实体被放置在权限中,该实体就可被存储在物理设备上,使得没有预期故障将造成数据的损失。在一些实施例中,再平衡算法尝试将所有实体的副本存储在相同布局中和同一组机器上的权限内。

预期故障的示例包括:设备故障、机器被盗、数据中心火灾和诸如核事件或地质事件的区域性灾害。不同的故障导致不同级别的可接受数据损失。在一些实施例中,被盗存储节点既不影响系统的安全性也不影响系统的可靠性,而根据系统配置,区域事件可能会导致无数据丢失、数秒钟或数分钟丢失更新、甚至是数据全部丢失。

在实施例中,放置针对存储冗余的数据与放置针对数据一致性的权限无关。在一些实施例中,包含权限的存储节点不包含任何永久存储装置。相反,存储节点被连接到不包含权限的非易失性固态存储单元。在存储节点和非易失性固态存储单元之间的通信互连由多种通信技术组成并具有非统一的性能和容错特性。在一些实施例中,如上所述,非易失性固态存储单元通过pciexpress连接到存储节点,存储节点通过使用以太网背板在单个机箱内连接在一起,并且机箱连接在一起以形成存储群集。在一些实施例中,存储群集通过使用以太网或光纤通道连接到客户端。如果多个存储群集配置到存储网格中,则这多个存储群集使用互联网或其他远程网络链路(例如“城域网规模”链路或不经由互联网的私人链路)来连接。

权限所有者具有修改实体的专用权,以便将实体从一个非易失性固态存储单元迁移到另一非易失性固态存储单元以及添加和移除实体的副本。这允许维护基础数据的冗余。当权限所有者失效、停用或过载时,权限被转移到新的存储节点。瞬时失效使得确保所有非故障机器都同意新的权限位置是有意义的。由于瞬时失效引起的模糊性可通过一致性协议(例如,paxos协议、热温失效转移方案)、经由远程系统管理员或本地硬件管理员的人工干预(例如,通过从群集物理地移除故障机器,或按下故障机器上的按钮)自动实现。在一些实施例中,一致性协议被使用,并且故障转移是自动发生的。根据一些实施例,如果在太短的时间周期内发生太多故障或复制事件,则系统进入自我保护模式并停止复制和数据移动活动,直到管理员进行干预为止。

当权限在存储节点之间转移以及权限所有者在其权限中更新实体时,系统在存储节点和非易失性固态存储单元之间传送消息。关于持续消息,具有不同目的的消息为不同的类型。根据消息的类型,系统保持不同的排序并保持稳定性。当持续消息正被处理时,该消息临时存储在多个持久性和非持久性存储硬件技术中。在一些实施例中,消息存储在ram、nvram和nand闪存设备中,并且各种协议被使用以便有效地使用每个存储介质。延迟敏感的客户端请求可保存在复制的nvram中,然后再保存在nand中,同时后台再平衡操作直接保存到nand。

在被传输之前,持久性消息被持久地存储。这允许系统在发生故障和更换组件的情况下继续服务客户端请求。虽然许多硬件组件包含对系统管理员、制造商、硬件供应链和持续监控质量控制设施可见的唯一标识符,但在基础设施地址之上运行的应用程序可虚拟化地址。这些经虚拟化的地址即使在发生组件故障和更换组件的情况下在存储系统的整个生命周期内都不会改变。这允许存储系统的每个组件无需重新配置或中断对客户端请求的处理就能被替换。

在一些实施例中,通过足够的冗余存储虚拟化地址。连续监控系统将硬件和软件状态与硬件标识符相关联。这允许检测和预测由于组件故障和制造细节造成的故障。在一些实施例中,监控系统还通过从关键路径移除组件,实现在故障发生之前离开受影响的设备的权限和实体。

图5是示出存储节点150的内容和存储节点150的非易失性固态存储装置152的内容的多级框图。在一些实施例中,数据通过网络接口控制器(nic)202传输到存储节点150和从存储节点150向外传输。如上所述,每个存储节点150具有cpu156和一个或多个非易失性固态存储装置152。在图5中向下移动一个级别,每个非易失性固态存储装置152具有相对较快的非易失性固态存储器,诸如非易失性随机存取存储器(nvram)204和闪存存储器206。在一些实施例中,nvram204可以是不需要编程/擦除循环的组件(dram、mram、pcm),并且可以是支持写入远比读取操作更频繁的存储器。在图5中向下移动至另一级别,一个实施例中,nvram204被实现为高速易失性存储器,诸如动态随机存取存储器(dram)216,能量储备218作为其备份。在电源故障的情况下,能量储备218提供足够的电力来使dram216供电足够长的时间以将内容传送到闪速存储器206。在一些实施例中,能量储备218是电容器、超级电容器、电池或其他装置,它们提供足够的能量供应以在电源故障的情况下将dram216的内容传送到稳定的存储介质。闪存206被实现为多个闪存芯片222,其可被称为闪存芯片222的封装或闪存芯片222的阵列。应当理解的是,闪存芯片222可以通过以下任意多种方式被封装:每个封装单个芯片、每个封装多个芯片(即,多芯片封装)、混合封装、作为印刷电路板或其他基板上的裸芯片、作为密封芯片等。在所示的实施例中,非易失性固态存储装置152具有控制器212或其他处理器以及耦合到控制器212的输入输出(i/o)端口210。i/o端口210被耦合到闪存存储节点150的cpu156和/或网络接口控制器202。闪存输入输出(i/o)端口220被耦合到闪存芯片222,以及直接存储器存取单元(dma)214耦合到控制器212、dram216和闪存芯片222。在所示的实施例中,i/o端口210、控制器212、dma单元214和闪存i/o端口220在可编程逻辑器件(pld)208上实现,例如现场可编程门阵列(fpga)。在该实施例中,每个闪存芯片222具有被组成16kb(千字节)页224的页面和寄存器226,数据可通过该寄存器写入闪存芯片222或从闪存芯片222读取。在进一步的实施例中,使用其他类型的固态存储器来代替闪存芯片222内示出的闪速存储器或者在其之外使用。

在本文公开的各种实施例中的存储群集160通常可与存储阵列相对照。存储节点150是创建存储群集160的集合的部分。每个存储节点150拥有用于提供数据所需的数据片和计算。需要多个存储节点150合作来存储和撷取数据。一般在存储阵列中使用的存储器或存储设备与处理和操作数据的关系较少。存储阵列中的存储器或存储设备接收读取、写入或擦除数据的命令。存储阵列中的存储器或存储设备意识不到它们嵌入在较大系统中或不知晓数据意味着什么。存储阵列中的存储器或存储设备可包括各种类型的存储器,例如ram、固态驱动器、硬盘驱动器等。本文描述的非易失性固态存储装置152具有同时活跃且用于多个目的的多个接口。在一些实施例中,存储节点150的一些功能被转移到非易失性固态存储装置152中,从而将非易失性固态存储装置152转换成非易失性固态存储装置152和存储节点150的组合。将计算(相对于存储数据来说)放入非易失性固态存储装置152使计算更接近数据本身。各种系统实施例具有存储节点层的层级,这些存储节点层具有不同容量。相比之下,在存储阵列中,控制器拥有并了解关于控制器在架构层(shelf)或存储设备中所管理的数据的所有一切。如本文所述,在存储群集160中,在多个非易失性固态存储装置152和/或存储节点150中的多个控制器通过各种方式合作(例如,用来进行纠删码、数据分片、元数据通信和冗余、存储容量扩充或缩减、数据恢复等)。

图6是使用图1-图5的存储集群160的实施例的存储系统的示图,其中,数据拥有权限168被分布在混合刀片602和一个或多个计算刀片604上。刀片是物理结构,具有电路、(一个或多个)处理器、和各种硬件。每个混合刀片602具有用于存储用户数据的存储存储器(其在该实施例中是闪存206,但在其他实施例中可以是其他类型的存储存储器)以及处理资源(包括cpu156和dram216)。每个计算刀片604具有处理资源(包括cpu156和dram216),但与混合刀片602不同的是,不具有用于存储用户数据的存储存储器。也就是说,与混合刀片602不同,计算刀片604不将用户数据存储在计算刀片604本身上。混合刀片602和计算刀片604可以具有其他类型的存储器(例如,用于程序存储器的rom(只读存储器))或者可以使用dram216或用于程序存储器和操作参数的其他类型的ram(即,系统存储器)。每个刀片602、604具有网络模块606(参见例如图5的网络接口控制器202),并且刀片602、604耦合在一起以形成存储集群160。所有用户数据被存储在混合刀片602上的存储存储器中,如参考图1-图5所描述的。在存储系统中使用各种数目的混合刀片602或使用混合刀片602和计算刀片604的混合允许根据系统和客户端需求来定制处理能力和存储存储器的量,并允许在系统性能的这些方面中的每个或两者中进行更换和升级。

如在图1-图5中的存储集群160的实施例中那样,每个刀片602、604可以托管或者作为存储节点150,因为所有刀片602、604参与存储集群160的至少一些操作。节点是存储系统中的逻辑构造,并且负责存储系统中的行为、智能、协议等。节点可以驻留在刀片中并利用物理刀片中的物理资源。混合刀片602是或者其中具有拥有存储存储器的存储节点,并且计算刀片604是或者其中具有没有存储存储器的仅计算节点。也就是说,在读取和写入用户数据以及执行其他存储节点任务时,混合刀片602上的存储节点150可以使用混合刀片602上的计算资源及存储存储器与其他混合刀片602上的存储存储器中的两者。计算刀片604上的仅计算节点可以使用计算刀片604上的计算资源,但可以使用混合刀片602上的存储存储器,因为计算刀片604缺少存储存储器。计算刀片604上的仅计算节点使用计算刀片604上的计算资源(包括本地存储器,例如rom和dram216),但执行计算任务而不执行由存储节点150执行的存储任务,因此不以与存储节点150相同的方式来使用任何混合刀片604上的存储存储器。可能存在这样的应用,其中仅计算节点可以访问混合刀片602上的存储存储器,例如用于诊断、修复、或存储节点150的常见任务之外的其他目的或功能。在一些实施例中,本文所描述的仅计算节点可以被称为计算节点。权限168可以驻留在任何存储节点中,并因此可以驻留在混合刀片602和/或计算刀片604中。每个存储节点可以保存一个或多个权限168。每个权限168拥有某用户数据范围,其与由任何其他权限168拥有的用户数据范围不重叠,并且独立于其他权限168来选择和控制该用户数据范围的擦除编码和放置。在图6所示的示例中,最左边的混合刀片602具有四个权限168,最右边的混合刀片602具有四个权限168,最左边的计算刀片604具有两个权限168,并且最右边的计算刀片604具有四个权限168。这仅是示例,并且每个刀片602、604可以具有各种数目的权限168,其不需与每个刀片602、604中的权限数目相同。

权限168可以以各种数目和方向从一个刀片602、604移动到另一个刀片602、604。在图6中的该示例中,权限168中的一个从最左边的混合刀片602移动到最左边的计算刀片604,但可以替代地移动到最右边的计算刀片604(或系统中的任何其他计算刀片604或另一混合刀片602)。权限168中的一个从最右边的混合刀片602移动到最左边的计算刀片604。计算刀片604上的权限可以类似地移动到另一计算刀片604或混合刀片602等。

根据本教导,本领域技术人员可以开发出用于定位和/或移动权限168的各种机制。例如,权限168在各种刀片602、604中的dram216中示出。在一些实施例中,各种参数、映射、帐户、记录、指针等、和/或实现权限168的数据结构驻留在刀片602、604中的一个的dram216中,并且可以通过将该信息从一个刀片602、604的dram216复制到另一刀片602、604的dram216来移动。被执行以执行权限168的动作的软件代码可以驻留在dram216中并且被类似地移动。替代地,软件代码可以驻留在另一存储器(例如,非易失性存储器)或刀片602、604的固件中,并由cpu156执行但根据一个或多个参数或多线程系统中的一个或多个执行线程来激活或去激活。在一个实施例中,权限168的各种参数从一个刀片602、604移动到另一刀片602、604,并且每个刀片602、604中的存储器中的软件代码根据驻留在刀片602、604中的存储器中的权限168的参数进行操作。

刀片602、604可以具有不同量的计算或处理能力、处理特性、或计算资源。例如,可以提供产品的不同型号或版本,或者后来的版本可以具有更新、更快、更密集的处理器或存储器,或更多的处理器核608等。在一个示例中,一个cpu156具有四个核608,如最左边的计算刀片604所示,并且另一cpu156具有八个核608,如最右边的计算刀片604所示。一个cpu156可以具有比另一cpu更快的时钟速度。一个dram216可以具有比另一dram更多的兆字节、千兆字节或太字节,或者更快的访问时间。这些因素可以影响混合刀片602和计算刀片604。甚至将单个计算刀片604添加到具有两个或更多个混合刀片602的存储集群160可以提升系统的性能,并且添加两个或更多个计算刀片602可以进一步提升性能。具有拥有存储和计算资源两者的一定数目的混合刀片602以及拥有仅计算节点的另一数目的计算刀片604的异构系统可以以与仅具有混合刀片602的同构系统不同的方式来平衡。实施例利用仅计算节点上的计算能力或资源,其不必将任何计算能力或资源专用于同一刀片604上的存储。值得注意的是,向处理能力有限的存储系统添加太多权限168可能会降低性能。添加权限168(例如,拥有处理更大的总数据量)同时还添加处理能力720(例如,通过添加一个或多个混合刀片602和/或计算刀片604)扩展系统以便将性能保持在给定级别。也容易设计其他示例。

图7是图6的存储系统的示图,示出了在混合刀片602和(一个或多个)计算刀片604上的分布到以下各项的处理能力720:用于外部i/o处理的前置层714、用于权限168的权限层716、以及用于存储存储器的存储层718(例如,闪存206或其他类型的存储存储器)。通过分布处理能力720,这意味着工作、处理任务、计算、计算任务、处理或计算活动、i/o处理(外部或内部)等被布置到、专用于、分配到、提供给、调度到、分配到、使得可用于各个层714、716、718中的设备和过程。例如,将处理能力720分布到前置层714意味着前置层714中的资源可以用处理能力720的一部分来执行外部i/o处理。将处理能力720分布到权限层716意味着权限168可以用处理能力720的一部分来执行特定于权限168的职责。将处理能力720分布到存储层718意味着存储层718中的设备和过程可以利用处理能力720的一部分来执行存储职责。尽管该示例讨论了各种层,但这并不意味着限制性的,因为该示例是用于说明目的的一个示例。处理能力可以通过将进程或线程分配给特定处理器或者反之、布置进程或线程的优先级来分布、以及在计算系统中容易设计出的其他方式来分布。

多个租户702正在进行i/o请求,存储集群160正在处理该i/o请求并将其作为外部i/o处理704进行服务。各种策略和协议706、708、710在存储系统中的适当位置。处理能力720跨(一个或多个)混合刀片602(当系统中不存在计算刀片604时)或跨(一个或多个)混合刀片602和(一个或多个)计算刀片604(当系统中存在两种类型的刀片602、604时)地分布到操作层712(例如,前置层714、权限层716、和存储层718)。应理解的是,这可以以如下所描述的各种方式、组合、和场景中发生。

专用于接收来自客户端的用于外部i/o的请求,前置层714对i/o请求进行解码并且确定请求去往何处,即,每个请求应被发送到哪个权限168。这涉及各种计算和映射,并且占用处理能力720的一部分。在一些实施例中,可以在任何存储节点(即,任何混合刀片602或任何计算刀片604)中接收来自客户端的用于外部i/o处理的i/o请求。在一些实施例中,i/o请求可以被路由到特定刀片或刀片602、604。在这些实施例中,外部i/o请求处理和吞吐量是根据处理能力720到前置层714的分布来确定的。

接下来,从前向层714向下,权限层716执行权限168所需的各种任务。系统在权限层716处的行为就好像每个权限168是虚拟控制器或处理器,并且这需要占用处理能力720的另一部分。在各种实施例中,处理能力720到权限层716的分布和在权限层716中的分布可以在每权限168或每刀片602、604的基础上完成,并且可以在权限168上相等或均匀地分布或者在给定刀片602、604中的权限168上变化。

在权限层716下方,存储层718负责存储存储器所负责的任务,其占用处理能力720的另一部分。在每个存储单元152中可获得(例如,从控制器212中可获得)存储存储器的进一步计算能力。如何将处理能力分布到层714、716、718中的每一个以及如何在给定层714、716、718内分布处理能力是灵活的并且可以由存储集群160和/或由用户(例如,管理员)确定。

在一种场景中,最初在存储集群160中仅存在混合刀片602,并且一个或多个计算刀片604被添加(例如,作为升级或改进)。这增加了系统可用的处理能力720。尽管在这种情况下,存储存储器的总量没有改变(因为没有添加具有存储存储器的混合刀片602),但是系统中处理器的总数和处理能力720的总量由于添加了(一个或多个)计算刀片604而增加。授权168可以根据每个刀片602、604上可用的处理能力720的量来分配或重新分配。例如,如果所有cpu156在处理速度和核608的数目方面相等,则刀片602、604中的每一个可以接收相等数目的权限168。在一些实施例中,如果刀片中的一个(不管是混合刀片602还是计算刀片604)具有更强大的处理器(即,更多处理能力720),则该刀片602、604可以被分配更大数目的权限168。分布权限168的一种方式是与每个刀片602、604上的处理能力720的相对量成比例地将权限分派或分配给该刀片602、604。这样做平衡了权限168上的处理能力720,使得每个权限168在权限168所驻留在的刀片602、604上具有该权限168可用的相当量的处理能力720。这可能需要向刀片602、604中的一个或多个添加新的权限168,或者将一个或多个权限168从一个刀片602、604移动到另一刀片602、604。返回参考图6所示的实施例和示例,这可能是在一个或多个计算刀片604被添加到存储集群时的情况,其触发一个或多个权限168的重定位。

在相关场景中,与dram206(或其他类型的ram或存储器)的数目或在每个刀片602、604上可用的dram206的性能(例如,读取和写入访问速度)成比例地将权限分配、分布、重新分布、或重新定位到各种刀片602、604。与具有更小数目的dram206的刀片602、604相比,具有更大数目的dram206的刀片602、604然后将接收或具有更大数目的权限。这样做会平衡权限168上的ram,使得每个权限168与该权限168在该权限168所驻留在的刀片602、604上可用的ram量相当。

在另一种场景中,存储集群160的所有刀片602、604中的处理能力720的总量的一部分根据服务质量(qos)策略706、服务级协议708、服务类别和/或多租户服务710来分布到操作层712。例如,如果策略、协议、或服务类别要向一个租户702、服务类别、ip地址或ip地址范围、数据范围、数据类型等提供比另一租户702、服务类别、ip地址或ip地址范围、数据范围、数据类型等更高级别的外部i/o处理(例如,去往和/或来自数据存储装置的更高的数据吞吐量),则与另一租户702、服务类别等相比,该租户702、服务类别等在前置层714和/或权限层716中被分配更大量的处理能力720。外部i/o处理的计算任务可以跨刀片602、604被分布,使得针对每个租户702、服务类别等的i/o处理可以基于各个租户、客户端、应用、服务类别等被分配给一个或多个存储节点(它们驻留在各种组合的混合刀片602和/或计算刀片604上)。应用层中的针对应用的计算任务(即,与操作存储集群160的软件不同的应用软件)可以基于各个应用或应用群组和各个刀片或刀片群组602、604以各种组合分布在一个或多个刀片602、604上。例如,可以将针对一组应用的计算任务分配给刀片602、604的一个群组,并且可以将针对另一组应用的计算任务分配给刀片602、604的另一群组,并且这些刀片群组可以是重叠或不重叠的群组。与另一租户702、服务类别相比,属于一个租户702、服务类别等的数据的inode的权限168可以(例如通过适当地移动权限168)被分配通过时钟频率或处理器速度衡量的更大比例的处理器核608。系统可以平衡针对存储存储器的权限168可用的处理能力720的量,例如,通过控制启动的线程的数目或者按优先级权衡线程。保证给租户702的存储量和服务质量(例如,吞吐量、等待时间、响应性)可以在系统中以稳定、弹性、或需求为基础正交地(即,独立地)调整。在一些实施例中,启发式可以应用于测量和调整系统的这些和其他方面。对策略、协议、或租户的改变也可能触发一个或多个权限168的重新定位。

图8是管理存储系统中的处理能力的方法的流程图。该方法可以在本文所描述的存储集群和存储节点的各种实施例上实现或由这些实施例实现。该方法的各个步骤可以由处理器(例如,存储集群中的处理器或存储节点中的处理器)执行。部分或全部方法可以以软件、硬件、固件、或其组合来实现。该方法以动作802开始,其中提供混合刀片。每个混合刀片包括存储节点和存储存储器。在动作804中,提供计算刀片。每个计算刀片包括仅计算节点并且没有存储存储器。计算刀片具有系统存储器(例如,dram或其他ram),但在计算刀片本身上没有固态存储存储器或基于磁盘的存储存储器。在动作806中,权限分布在刀片上。即,权限位于混合刀片和计算刀片上,移动到或以其他方式建立在混合刀片和计算刀片上。

在动作808中,根据如上所述的协议和/或策略,处理能力跨刀片地分布到层,例如,前置层、权限层、和存储层。根据协议或政策中的内容,处理能力可以以固定或可变的数目分布到每一层。在该实施例中,前置层服务外部i/o请求(即,用于外部i/o处理),权限层用于服务权限,并且存储层用于服务存储存储器。

在动作810中,在前置层中执行外部i/o处理,并且在权限层和存储层中执行内部i/o处理(即,与存储系统中的各种资源相关的内部i/o操作的处理)。在决策动作812中,询问问题:处理能力应该在权限层中重新分布么?如果答案为否,则不需要在权限层中重新分布处理能力,将流程分支流回到动作810,以继续执行外部和内部i/o处理。如果答案为是,则处理能力将在权限层中被重新分布,流程进行到动作814。这可以例如通过将计算刀片插入到存储集群,插入混合刀片,或改变策略、协议、或多租户服务来触发。

在动作814中,权限从一个刀片移动到另一刀片(例如,混合刀片到计算刀片、混合刀片到另一混合刀片、计算刀片到另一计算刀片、或甚至从计算刀片到混合刀片)。在一些实施例中,不止一个权限在刀片之间移动。在一个变型中,可以响应于协议或策略的改变或刀片的插入来在层之间或在一个层之内重新分布处理能力。然后,流程返回到动作810,以继续执行外部和内部i/o处理。在变型中,流程可以在别处继续以执行其他的动作。

图9是根据一些实施例的用于在添加刀片时管理存储系统中的处理能力的方法的流程图,该方法可以在存储集群、存储节点、和/或非易失性固态存储装置的实施例上实现或由这些实施例实现。该方法与图8的方法相关,并且在变型中可以与参考图8描述的方法的一部分组合或替换参考图8描述的方法的一部分。该方法以决策动作902开始,其中确定是否添加刀片到存储系统。如果答案为否,则不添加刀片或不应添加刀片,在一些实施例中,该方法可等待一段时间并检查是否要添加刀片。如果答案为是,则添加刀片,流程进行到决策动作904。在决策动作904中,确定新添加的刀片是否将参与权限层。例如,可以确定新添加的刀片将具有仅计算节点,但不参与权限层。或者,可以确定新添加的刀片将具有仅计算存储节点,并且参与由权限或代表权限执行的动作(作为对权限层的参与)。如果答案为否,则新添加的刀片不参与权限层,流程进行到决策动作902。如果答案为是,则新添加的刀片将参与权限层,流程进行到决策动作906。

在决策动作906中,确定是否将新权限移动到新添加的刀片。如果答案为是,则流程进行到动作908,其中新权限被移动或添加到新添加的刀片。如上所述,权限从一个或多个刀片到一个或多个另外的刀片的移动将根据需要重新分布处理能力。流程分支回到动作902,以查看是否正在添加或将添加刀片。在变体中,流程可以分支到别处以执行其他任务。在决策动作904确定了新添加的刀片将不参与权限层的情况下,可以排除新添加的刀片接收任何移动的权限,或者可以重新访问该决策,在这种情况下,新添加的刀片可以接收一个或多个移动的权限。在权限被移动之后,流程返回到动作902,或者在变体中,分支到别处以执行其他任务。

应理解的是,本文所描述的方法可以用数字处理系统执行,例如,传统的通用计算机系统。可以在替代方案中使用专用计算机,其被设计或编程为仅执行一种功能。图10是示出可以实现本文所描述的实施例的示例性计算设备的图示。根据一些实施例,图10的计算设备可以用于执行用于管理存储系统中的处理能力的功能的实施例。计算设备包括中央处理单元(cpu)1001(其通过总线1005耦合到存储器1003)以及海量存储1007。海量存储1007表示诸如软盘驱动器或固定磁盘驱动器之类的持久数据存储设备,其在一些实施例中可以是本地的或远程的。存储器1003可以包括只读存储器、随机存取存储器等。在一些实施例中,驻留在计算设备上的应用可以存储在诸如存储器1003或海量存储1007之类的计算机可读介质上或者经由计算机可读介质访问。应用还可以是经由网络调制解调器或计算设备的其他网络接口访问的调制电子信号的形式。应理解的是,在一些实施例中,cpu1001可以体现在通用处理器、专用处理器、或专门编程的逻辑器件中。

显示器1011通过总线1005与cpu1001、存储器1003、和海量存储1007通信。显示器1011被配置为显示与本文所描述的系统相关联的任何可视化工具或报告。输入/输出设备1009耦合到总线1005,以便将命令选择中的信息传送到cpu1001。应理解的是,可以通过输入/输出设备1009来传送去往和来自外部设备的数据。cpu1001可以被定义为执行本文所描述的功能以实现参考图1-9描述的功能。在一些实施例中,体现该功能的代码可以被存储在存储器1003或海量存储1007内,以供诸如cpu1001之类的处理器执行。计算设备上的操作系统可以是msdostm、ms-windowstm、os/2tm、unixtm、linuxtm、其他已知的操作系统。应理解的是,本文所描述的实施例还可以与用物理计算资源实现的虚拟化计算系统集成。

本文公开了详细的说明性实施例。然而,本文所公开的具体功能细节仅仅是出于描述实施例的目的。然而,实施例可以以许多替代形式实现,并不应该被解释为仅限于本文所阐述的实施例。

应理解的是,尽管本文可以使用术语第一、第二等来描述各种步骤或计算,但是这些步骤或计算不应受这些术语的限制。这些术语仅用于将一个步骤或计算与另一步骤或计算区分开。例如,在不脱离本公开的范围的情况下,第一计算可以被称为第二计算,并且类似地,第二步骤可以被称为第一步骤。如本文所使用的,术语“和/或”和“/”符号包括相关所列项中的一个或多个的任何和全部组合。

如本文所使用的,单数形式“一个”、“某个”、和“该”旨在也包括复数形式,除非上下文另有明确说明。将进一步理解的是,术语“包含(comprise)”、“包含(comprising)”、“包括(include)”、和/或“包括(including)”当在本文中使用时指定所陈述的特征、整数、步骤、操作、元件、和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件、和/或它们的群组的存在或添加。因此,本文所使用的术语仅出于描述特定实施例的目的,而非旨在限制性的。

还应注意的是,在一些替代实施方式中,所记载的功能/动作可以不按图中所示的顺序发生。例如,连续示出的两个图实际上可以基本上同时执行或者有时可以以相反的顺序执行,这取决于所涉及的功能/动作。

考虑到上述实施例,应理解的是,这些实施例可以采用涉及存储在计算机系统中的数据的各种计算机实现的操作。这些操作是需要对物理量进行物理操纵的那些操作。通常,尽管不是必须的,这些量采用能够被存储、传送、组合、比较、和以其他方式操纵的电信号或磁信号的形式。此外,所执行的操纵通常用术语来表示,例如产生、识别、确定、或比较。本文所描述的形成实施例的一部分的任何操作都是有用的机器操作。实施例还涉及用于执行这些操作的设备或装置。该装置可以是为所需目的而专门构造的,或者该装置可以是由存储在计算机中的计算机程序选择性地激活或配置的通用计算机。具体地,可以将各种通用机器与根据本文的教导编写的计算机程序一起使用,或者可以更方便地构造用于执行所需操作的更专用的装置。

模块、应用、层、代理、或其他可操作方法的实体可以被实现为硬件、固件、或执行软件的处理器、或它们的组合。应理解的是,在本文公开了基于软件的实施例的情况下,软件可以实现在诸如控制器之类的物理机器中。例如,控制器可以包括第一模块和第二模块。控制器可以被配置为执行例如方法、应用、层、或代理的各种动作。

实施例还可以实现为非暂态计算机可读介质上的计算机可读代码。计算机可读介质是可以存储数据的任何数据存储设备,其后可以由计算机系统读取。计算机可读介质的示例包括硬盘驱动器、网络附接存储(nas)、只读存储器、随机存取存储器、cd-rom、cd-r、cd-rw、磁带、以及其他光学和非光学数据存储设备。计算机可读介质还可以分布在网络耦合的计算机系统上,使得计算机可读代码以分布式方式存储和执行。本文所描述的实施例可以用各种计算机系统配置来实现,包括手持设备、平板电脑、微处理器系统、基于微处理器或可编程的消费电子产品、小型计算机、大型计算机等。实施例还可以在分布式计算环境中实现,其中任务由通过基于有线的网络或无线网络链接的远程处理设备执行。

尽管以特定顺序描述了方法操作,但应理解的是,可以在所描述的操作之间执行其他操作,可以调整所描述的操作以使得它们在稍微不同的时间发生或者所描述的操作可以分布在允许处理操作在与处理相关联的各种间隔处发生的系统。

在各种实施例中,本文所描述的方法和机制的一个或多个部分可以形成云计算环境的一部分。在这样的实施例中,可以根据一个或多个各种模型来在互联网上提供资源作为服务。这些模型可以包括:基础设施即服务(iaas)、平台即服务(paas)、以及软件即服务(saas)。在iaas中,计算机基础设施作为服务被递送。在这种情况下,计算设备通常由服务提供商拥有和操作。在paas模型中,开发人员用于开发软件解决方案的软件工具和底层设备可以作为服务来提供并由服务提供商托管。saas按照需要通常包括服务提供商许可软件作为服务。服务提供商可以托管软件,或者可以在给定的时间段内将软件部署到客户端。上述模型的许多组合是可能的并且是可以预期的。

各种单元、电路、或其他组件可以被描述或声明为“被配置为”执行一个或多个任务。在这样的上下文中,短语“被配置为”用于通过指示单元/电路/组件包括在操作期间执行一个或多个任务的结构(例如,电路)来指示结构。这样,即使当指定的单元/电路/组件当前不可操作(例如,未接通)时,也可以说单元/电路/组件被配置为执行任务。与“被配置为”语言一起使用的单元/电路/组件包括硬件-例如,电路、存储可执行以实现操作的程序指令的存储器等。记载了单元/电路/组件“被配置为”执行一个或多个任务明确旨在不援引35u.s.c.112,第六段来用于该单元/电路/组件。另外,“被配置为”可以包括被软件和/或固件(例如,fpga或执行软件的通用处理器)操纵来以能够执行所讨论的(一个或多个)任务的方式操作的通用结构(例如,通用电路)。“被配置为”还可以包括调整用于制造适于实现或执行一个或多个任务的设备(例如,集成电路)的制造过程(例如,半导体制造设施)。

出于解释的目的,已经参考特定实施例描述了前述描述。然而,上面的说明性讨论并非旨在穷举性的或将本发明限制于所公开的精确形式。鉴于上述教导,许多修改和变化都是可能的。选择并描述实施例是为了最好地解释实施例的原理及其实际应用,从而使得本领域的其他技术人员能够最好地利用可能适合于预期的特定用途的实施例和各种修改。因此,本发明的实施例应被认为是说明性的而非限制性的,并且本发明不限于本文给出的细节,而是可以在所附权利要求的范围和等同形式内进行修改。

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