将放置策略分配给片段集合的制作方法

文档序号:10617895阅读:229来源:国知局
将放置策略分配给片段集合的制作方法
【专利摘要】可以创建和/或更新分布式文件系统的一个或多个存储片段的多个片段集合。存储片段可以受独立地控制。可以将放置策略分配给该多个片段集合中的每个片段集合。该放置策略可以针对所分配的存储集合来控制对象至一个或多个存储片段的初始放置和/或重新定位。
【专利说明】
将放置策略分配给片段集合
【背景技术】
[0001]分布式文件系统可以指代用于基于多个存储节点来存储和访问文件的系统。分布式文件系统可以基于客户端/服务器架构。在分布式文件系统中,在正确的授权权限的情况下,可以由网络中的远程客户端经由中间服务器访问存储在存储设备处的一个或多个文件。分布式系统可以使用统一的命名约定和映射方案来跟踪文件位于何处。
[0002]制造商、供应商、和/或服务提供商面临着提供改进的机制来传输对存储设备的控制和/或选择用于存储文件的存储设备的挑战。分布式文件系统可以通过机器没有使用其资源来存储文件、提供公共的存储资源池来使对大量的客户端进行服务更为容易,【附图说明】
[0003]以下的详细描述参考附图,其中在附图中:
[0004]图1示出了将放置策略分配给片段集合的设备的示例框图;
[0005]图2是包括将放置策略分配给片段集合的设备的分布式文件系统的示例框图;
[0006]图3是包括用于将放置策略分配给片段集合的指令的计算设备的示例框图;
[0007]图4是一种用于将放置策略分配给片段集合的方法的示例流程图;以及
[0008]图5是一种用于放置策略的动态继承的方法的示例流程图。【具体实施方式】
[0009]在以下描述中给出了具体细节以提供对实施例的透彻理解。然而,将理解,可以在不用这些具体细节的情况下实施实施例。例如,可以以框图示出系统,以便不以不必要的细节混淆实施例。在其它实例中,可以在不具有不必要的细节的情况下示出公知的过程、结构和技术,以便避免混淆实施例。
[0010]分布式分段并行文件系统可以由大量的存储组件(例如,存储片段)和大量的控制此类存储组件的目标服务器(DS)组成。分布式分段并行文件系统可以包括具有不同特性的存储片段。一些存储片段对于存储大量的信息数据可以是非常高效的,而其它存储片段可以更多地调整为良好地执行随机读取。此外,一些存储片段可能是较慢的,但是是能效更高的并且更适合于存储不频繁访问的数据。另外,服务器和相关联的存储片段可能在地理上是分布式的。
[0011]示例分布式分段并行文件系统可以由数千个大的存储片段组成。在任何给定的时间,各个存储片段可以是专门受对应的服务器控制。然而,出于负载平衡目的或由于组件故障或维护原因,对存储片段的这种控制可以从一个服务器迀移到另一个服务器。服务器可以“直接地”连接到存储片段(诸如经由直接附接存储(DAS)模型)、或通过各种互连技术(诸如经由光纤通道(FC)、互联网小型计算机系统接口(iSCSI)、串行附接SCSI(SAS)等)。分布式分段并行文件系统还可以包括客户端节点,客户端节点在给定的时间不控制片段并且可以用于运行应用或通过诸如网络文件系统(NFS)、服务器消息块(SMB)、超文本传输协议 (HTTP)、文件传输协议(FTP)等之类的其它协议来提供对分布式分段并行文件系统的访问。
[0012]分布式分段并行文件系统的整体效率和可靠性可以取决于用于为不同对象选择适当的存储片段的灵活性和能力。在这种环境中,入口点服务器(ES)可能必须不断地做出关于应当为新创建的对象选择哪些片段的决策。通常,这些决策是基于硬编码的算法或基于在托管环境中“全局地”定义的策略来做出的。
[0013]然而,这些决策制定机制可能无法动态地改变策略或本地地设置策略,以使得可以针对命名空间的不同目录或层级设置不同策略。此外,这种机制可能由于策略改变和/或对存储片段的控制的迀移而要求对命名空间的子树的中间节点的频繁的重新验证。此外, 这些机制可能不是响应充足的以快速地对这种策略的偶尔改变做出反应,从而尽管有潜在的数千个参与的服务器也能传播这种改变。
[0014]示例可以定义放置规则或策略并且将其与命名空间中的位置以及与数据起源的点动态地进行关联。示例设备可以包括集合单元和策略单元。集合单元可以创建和/或更新分布式文件系统的一个或多个存储片段的多个片段集合。存储片段可以受独立地控制。策略单元可以将放置策略分配给多个片段集合中的每个片段集合。放置策略可以针对所分配的存储集合来控制对象至一个或多个存储片段的初始放置和/或重新定位。
[0015]因此,示例可以提供了用于在高度可扩展的异构环境中决定新创建的对象的放置的方法、机制、和/或实现。示例可以解决不同类型的存储、地理分布、故障线路的问题并且将其与不同类型的数据进行关联,以及基于分层规则来定义时间和文件属性并描述其实现的约束。[〇〇16]现在参考附图,图1是将放置策略分配给片段集合的设备100的示例框图。设备100 可以与对存储片段进行访问的任何类型的设备(例如服务器、计算机、网络设备、无线设备、 精简客户端等)连接或者包括在其中。
[0017]在图1中,设备100示出为包括集合单元110和策略单元120。集合单元110和策略单元120可以包括:例如,包括用于实现下文所描述的功能的电子电路的硬件设备,诸如控制逻辑和/或存储器。此外或作为替代,集合单元110和策略单元120可以实现为编码在机器可读存储介质上并可由处理器执行的一系列指令。
[0018]集合单元110可以创建和/或更新分布式文件系统的一个或多个存储片段(未示出)的多个片段集合。存储片段可以受独立地控制。存储片段210的示例可以包括单独的固态驱动器(SSD)、硬盘驱动器(HDD)和/或任何其它类型的存储设备。存储片段可以位于地理上不同的区域和/或具有不同的属性。例如,SSD存储片段可以具有更低的延迟但还比SSD存储片段具有较低的存储容量。
[0019]此外,一些存储片段可能更靠近商业机构的第一办公位置,而其它存储片段可能更靠近第二位置。片段集合可以表示对存储片段的逻辑归组。此外,片段集合可以存储在服务器(未示出)处或可由服务器访问的数据库处。策略单元120可以将放置策略分配给多个片段集合中的每个片段集合。放置策略可以针对所分配的存储集合来控制对象(未示出)至一个或多个存储片段的初始放置和/或重新定位。例如,每个片段集合可以具有名称并且包括存储片段的列表和放置策略。
[0020]例如,图1将策略单元120示出为包括多个策略122。此外,图1的集合单元110示出为包括两个示例片段集合112和114。然而,示例可以包括多于或少于两个片段集合。第一片段集合112示出为包括至少第一和第二片段并与第一策略相关联。然而,片段集合的示例可以包括多于或少于两个存储片段集合。这里,第一策略可以确定第一集合的存储片段中的哪些存储片段用于存储对象。
[0021]第二片段集合114示出为包括相同的第一片段和第五片段并与第二策略相关联。 第二策略可以不同于第一策略。因此,示例可以允许存储片段被包括在多于一个片段集合中。此外,第二片段集合114示出为包括第一片段集合112。因此,片段集合的示例可以包括作为子集的另一个片段集合。该子集可以包括存储片段中的一个或多个存储片段并且被分配独立于包括该子集的片段集合的策略的策略。下文将参照图2更详细地说明集合单元110 和策略单兀120。[〇〇22]图2是包括将放置策略传播和分配给目录节点的设备200的分布式文件系统250的示例框图。设备200可以与对存储片段进行选择的任何类型的设备(例如服务器、计算机、网络设备、无线设备、精简客户端等)连接或者包括在其中。[〇〇23]图2的设备200-1可以包括图1的设备100的功能和/或硬件。例如,设备200-1包括图1的设备100的集合单元110和策略单元120。此外,设备200-1包括对象单元230、继承字段 240和中间目录节点的列表250。设备200-2和200-3可以包括与设备200-1的功能和/或硬件相似的任何功能和/或硬件。为了简单起见,将仅详细描述设备200-1。[〇〇24] 设备200-1的对象单元230可以包括:例如,包括用于实现下文所描述的功能的电子电路的硬件设备,诸如控制逻辑和/或存储器。此外或作为替代,对象单元230可以实现为编码在机器可读存储介质上并可由处理器执行的一系列指令。继承字段240和列表250可以存储在包含或存储信息的任何电的、磁性的、光学的、或其它物理存储设备中,诸如随机存取存储器(RAM)、闪存、SSD、HDD等。例如,继承字段240可以存储在RAM的存储结构中,诸如索引节点(inode)或任何其它类型的节点或树结构。[0〇25]分布式分段并行文件系统250可以由大量的存储片段210-1至210-3和大量的200-1至200-3组成。设备200-1至200-3和相关联的存储片段210-1至210-3可以是地理上分布式的。虽然图2中示出了三个存储片段210,但是示例可以包括多于或少于三个存储片段210, 诸如数千个存储片段210。类似地,虽然图2中示出了三个设备200,但是示例可以包括多于或小于三个设备200,诸如数百个设备200。[〇〇26] 在任何给定的时间,存储片段210-1至210-3可以各自受对应的设备200-1至200-3 控制。这里,第一存储片段210-1和第三存储片段210-3受第一设备200-1控制。此外,第二存储片段210-2经由互连220受第二设备200-2和第三设备200-3控制。互连220可以包括在设备200-2和200-3与第二存储片段210-2之间提供物理链路的任何类型的设备,诸如网络交换机。
[0027]分布式分段并行文件系统250可以包括命名空间。命名空间可以提供通过名称(诸如通过多个目录和/或文件)来访问对象的确定性方式。术语目录可以指代文件系统编目结构,其中保持了对其它计算机文件和可能的其它目录的引用。术语对象可以指代文件和/或目录。可以通过将相关的文件存储在相同的目录中来组织文件。
[0028]分布式分段并行文件系统250可以包括分级文件系统,其中以类似树的方式来组织文件和目录。在该文件系统中,包含在另一个目录内的目录可以被称为子目录。术语父母 (parent)和子女(child)可以用于描述子目录与在其中对其进行编目的目录之间的关系, 后者是父母。这种文件系统中不具有其自身父母的最顶层目录可以被称为根目录。
[0029]如图2中所示出的,示出了针对文件“My_file”的文件路径,其中文件路径是7 Dirl/Dir2/Dir/3/My_file”。7”可以是根目录,第一目录(Dirl)可以是根目录的子目录, 第二目录(Dir2)可以是第一目录的子目录,并且第三目录(Dir3)可以是第二目录的子目录。文件“My_file”可以位于第三目录内并且存储在第二片段210-2处。此外,根目录可以存储在第一片段210-1处,第一目录可以存储在第二片段210-2处,第二目录可以存储在第二片段210-2处,第三目录可以存储在第三片段210-2处,并且文件“My_file”可以存储在第二片段210-2处。因此,一个以上对象(诸如目录或文件)可以存储在单个片段210(诸如第二存储片段210-2)处。文件路径的每个部分存储在存储片段210中的一个片段处。
[0030]为了执行操作,诸如计算机之类的客户端设备(未示出)可以从对与操作中涉及的对象相关联的存储片段210-1至210-3进行控制的设备200-1至200-3请求服务。在该情况下,设备200-1至200-3可以被称为目标服务器(DS)。此外,如果设备200-1至200-3涉及新对象的创建,则设备200-1至200-3中的任何设备可以被称为入口点服务器(ES)。
[0031]所有参与的节点(诸如设备200和存储片段210)可以通过以太网或其它网络介质交换消息。为了达到更高的并行程度,分级命名空间的各个元素可以通过存储片段210的集合被广泛地分布并且相应地由不同的服务器200控制和/或服务。[〇〇32]例如,充当ES的第二设备200-2可以决定将新文件(未示出)放置在第二存储片段 210-2上并且使其链接到第三目录dir3,第三目录dir3存储在第三存储片段200-3上。然而, 第二设备200-2可能不具有对第三存储片段210-3的直接访问。因此,第二设备200-2可以当在第二存储片段210-2处创建新文件时充当ES并且随后可以请求第一设备200-1的服务以将新文件链接到存储在第三存储片段210-2处的第三目录Dir3。设备200中的任何设备可以在按照请求(诸如来自应用、NFS、CIFS、FTP或其它服务器的请求)而行动时充当ES。
[0033]—些分布式分段并行文件系统操作可以参与更多对象并且相应地甚至更大程度上取决于大量DS的正确行动和协调。控制存储片段210的设备200可以扮演ES和/或DS的角色。例如,设备200可以是针对本地发起的分布式分段并行文件系统级请求的ES以及可以是针对来自其它计算机或客户端设备的请求的DS。[〇〇34]对象单元230可以将对象存储到片段集合中的一个片段集合的多个存储片段210 中的至少一个存储片段。例如,第一设备200-1的对象单元230可以负责选择第一存储片段 210-1和第三存储片段210-3中的一个来存储对象。
[0035]如上所述,设备200中的任何设备可以包括存储在集合单元110内的片段集合,其中片段集合均包括存储片段210的列表。集合单元110可以基于分布式文件系统的存储片段 210特性、目标服务器(DS)关联、地理分布等来创建和/或更新片段集合。存储片段210特性可以包括不同延迟、能效、针对读取随机数据的优化、以及针对更快存储大量数据的优化。
[0036]例如,集合单元110可以创建列出了包括SSD的所有存储片段210的第一片段集合、 列出了受第一设备200-1控制的所有存储片段210的第二片段集合、列出了本地于地理区域的所有存储片段210的第三片段集合等。示例可以包括用于确定哪些存储片段要归组成片段集合的众多其它类型的因素。[〇〇37]片段集合中的每个片段集合可以与放置策略相关联。多个片段集合中的至少两个片段集合可以与命名空间的不同层级相关联。例如,第一设备200-1的集合单元110可以包括与根节点相关联的第一片段集合和与第三目录Dir3相关联的第二片段集合。集合单元110还可以包括自动定义的片段集合,诸如主机集合。主机集合可以包括受特定服务器或设备(例如第一设备200-1)控制的所有存储片段。策略单元120可以将不同的放置策略分配给与命名空间的不同层级相关联的至少两个片段集合。命名空间可以是在文件系统的运行时(runtime)重新构造的。动态可继承属性的值可以与文件系统的一个或多个实体(例如层级)相关联。动态可继承属性可以与放置策略有关。
[0038]放置策略可以由一个或多个放置规则组成并且可以包括不同的规则以用于不同类型的对象。待存储的对象的类型可以包括常规文件、目录、文件副本、目录副本、所有副本、所有对象等。例如,根片段集合可以与根节点相关联并且包括多个主机集合,诸如三个设备200-1至200-3的主机集合。与根片段集合相关联的放置策略的规则可以是默认策略,默认策略根据第一片段集合的所有存储片段来分配对象。子目录片段集合可以包括存储子目录(例如Dirl、Dir2和Dir3)的所有存储片段。与子目录片段集合相关联的放置策略的规则可以指引对象存储到与其父母目录相同的存储片段。
[0039]放置规则可以是足够的灵活以适应存储片段210和/或设备200的数量上的潜在增长以及对存储片段210的控制从设备200中的一个设备至设备200中的另一个设备的偶尔改变。然而放置规则还可以是足够的通用以反映片段特性、DS关联、地理分布等的潜在差异。此外,设备200可以允许不同放置规则的定义以用于命名空间的不同层级、子树和/或子目录。
[0040]放置规则可以是本质上动态的,这是因为可以在任何时间添加新的存储片段210。此外,可以通过不同的ES 200来引入新的放置规则。此外,放置规则可以包括对象自身的时间特性,如下文所说明的。此外,可以在任何时间设定和修改放置规则并且这种修改可以对分布式分段并行文件系统的行为产生即时的影响,如下文所说明的。如上所述,片段集合中的一个以上片段集合可以包括存储片段210中的同一个存储片段。此外,不同的规则可以选择相同的存储片段210。命名空间的文件路径的元素可以被放置到不同的存储片段210上并受不同的服务器200控制。
[0041]放置策略可以基于指定的存储片段、随机选择、存储片段的片段集合、存储片段的目录、存储片段的目标服务器(DS)、存储片段的存储接口、加权、确定性算法等来控制对象至存储片段210中的一个或多个存储片段的初始放置。加权可以是基于自由空间、延迟和对存储片段的访问的数量等。确定性算法可以是基于循环(round robin)、选择片段集合的子集。
[0042]例如,放置策略可以将所有常规文件指引到HDD存储片段以及将所有文件副本指弓丨到SSD存储片段,其中HDD和SSD存储片段被包括在与该放置策略相关联的片段集合中。在该情况下,放置策略可以允许正被修改和/或普通地访问的文件的较低延迟。在另一个实例中,放置策略可以根据针对在与该放置策略相关联的片段集合中所包括的存储片段210的经加权的循环调度来放置对象,其中加权是基于在存储片段210中的每个存储片段处的自由空间的量。示例可以包括用于在片段集合的存储片段或子集之中分布对象的众多其它类型的方法。
[0043]放置策略还可以基于对象的属性来控制对象至一个或多个存储片段的重新定位。属性可以与对象的大小、所有权、对象类型、对象名称和时间特性等有关。时间特性可以与对对象进行访问的时间、对对象进行修改的时间、对对象的索引节点进行改变的时间有关。
[0044]例如,放置策略可以规定特定用户所拥有的对象将从受第一设备200-1控制的存储片段210被移动到受第二设备200-1控制的存储片段210,例如如果该用户正重新定位到不同的区域的话。在另一个示例中,放置策略可以规定在特定量的时间内尚未被访问或修改的对象将从较低延迟存储片段210被移动到较高延迟存储片段210。
[0045]如上所述,可以根据包括多个节点的树结构来组织命名空间。片段集合中的每个片段集合可以与节点中的至少一个节点相关联。例如,在图2中,文件路径的每个元素可以对应于节点,以使得可以是根节点,“My_file”可以是“Dir3”的子女节点,“Dirl”可以是“Dir2”的父母节点等。此外,示例片段集合可以与相关联,而另一个示例片段集合可以与“Dir3”和/或等相关联。
[0046]节点中的每个节点可以与继承字段240相关联。继承字段240可以是帮助检测可继承属性(例如放置策略)中的变化的字段。继承字段240中的变化可以起源于根节点上并且继承字段240的值可以被传播给较低节点,诸如树中较低的对象。因此,可以检查继承字段240以确定在较高节点处的放置策略的至少部分是否已下降至较低节点。例如,如果与子女节点相关联的片段集合缺少放置策略,则与子女节点相关联的片段集合可以继承与父母节点相关联的片段集合的至少部分。
[0047]此外,当任何放置策略被改变时,可以递增根的继承字段240并且可以中断该放置策略至较低节点的根派遣。此外,可以在所有ES处刷新根节点的副本,如下文进一步详细说明的。继承字段240可以用于与对象(例如文件和目录)的较频繁的更新分开地处理放置策略的不那么频繁的更新。
[0048]默认情况下,文件系统可以应用在文件系统根节点的层级处的默认片段集合。然而,有可能在片段集合的名称与命名空间中的在特定于文件系统的扩展属性中记录该片段集合名称的任何目录节点之间建立关联。这种片段集合和相关联的放置策略可以用于在所有下降的节点处创建新对象期间选择存储片段。在片段集合的情况下,可以应用简单的替换继承。在命名空间中更深记录的片段集合可以优先于更高层记录的片段集合。
[0049]此外,如果与子女节点相关联的片段集合的放置策略的至少部分和与父母节点相关联的放置策略的至少部分相矛盾和/或比与父母节点相关联的放置策略的至少部分更具体,则与子女节点相关联的片段集合的放置策略的至少部分可以补充和/或优先于与父母节点相关联的片段集合的放置策略的至少部分。
[°°50] 例如,假定具有以下文件路径:/ISS_HOME/store_all/archive。此外,假定该文件路径的每个元素与单独的节点和单独的片段集合相关联。与元素“ISSJTOME”相关联的放置策略可以指引所有对象存储到HDD存储片段210。该放置策略还可以由在元素“Stovall”处的子女节点继承。然而,与元素“store_al I”相关联的放置策略可能包括与元素“ISS_HOME”的策略的至少部分相冲突的更特定的规则。
[0051]例如,与元素“Stovall”相关联的放置策略可以指引所有目录信息存储到SSD存储片段210。该放置策略还可以由在元素“archive”处的子女节点继承。然而,与元素“archive”相关联的放置策略可以包括对元素“Stovall”的放置策略的至少部分进行补充的另外规则。例如,元素“archive”的放置策略可以包括所有文件存储到SATA存储片段210的规则。
[0052]如上所述,放置策略可以是可继承的并且可以针对节点动态地改变。例如,放置策略可能需要刷新,这是因为其可以由DS改变并且ES可能不知道这些变化。然而,将所改变的放置策略传播给继承所改变的放置策略的所有子女节点可能是低效的和高成本的。替代地,可以不频繁地传播所改变的放置策略,诸如仅在系统需要经更新的放置策略时。
[0053]上文的放置策略可以在设备200和/或存储片段210处存储为对象的扩展属性(例如目录)。如下文所说明的,继承字段240可以用于确定放置策略中的哪些放置策略已改变或将由较低节点继承。如果对于子女节点和根节点来说继承字段240的值是不同的,则可以列出列表250。列表240可以包括从子女节点至根节点的所有节点。根节点的继承字段240的值可以按照连续的顺序以子女节点为起始被传播给列表250的节点的继承字段240,直到根节点的继承字段240与列表的当前节点相匹配为止。因此,示例可以减少或防止对中间节点的频繁重新验证并且将策略变化快速地传播给参与的服务器。
[0054]虽然,继承字段240示出为与放置策略有关,但是继承字段240的示例可以与要继承的各种其它类型的信息(例如安全约束、快照(snapshot)身份、针对病毒检查的策略、复制规则等)有关。对诸如基于片段集合的放置和重新定位策略之类的继承的属性的高效扩散可能在高度分布式分段文件系统环境中特别有挑战性的。下文在图5中说明动态地改变和继承放置策略的操作。
[0055]图5是一种用于放置策略的动态继承(诸如用于在验证过程期间传播动态可继承的属性(例如,放置策略))的方法的示例流程图。虽然下文参照设备200来描述方法500的执行,但是可以使用其它适当的组件(例如设备100)来执行方法500。例如,方法500可以由入口点服务器(ES)执行并且用于验证在给定的文件系统实体(在图5中被称为“my_object”)处的动态可继承的属性(例如,基于片段集合的放置策略)。
[0056]另外,用于执行方法500的组件可以分散在多个设备(例如,处理设备与输入和输出设备相通信)之中。在某些场景中,协调行动的多个设备可以被视为用于执行方法500的单个设备。方法500可以以存储在诸如存储介质320之类的机器可读存储介质上的可执行指令的形式和/或以电子电路的形式来实现。
[0057]确定要刷新文件系统实体的动态可继承的属性可以是验证过程的部分,其中在验证过程中,验证针对给定的文件系统实体的动态可继承的属性的值。例如,可以在沿着始于特定的文件系统实体的特定路径上的所有文件系统实体之中执行验证过程。出于性能原因,提供了根据一些实施方式的技术或机制以智能地确定沿着该路径的某些文件系统实体不必被重新验证(只要满足某些条件),如下文进一步论述的。在一个示例中,可以在验证过程期间避免遍历整个节点链(对应于文件系统实体的子树)。
[0058]在一些示例中,动态继承的生成字段(例如,在表示文件系统实体的核心中(也称为存储器中)索引节点中的继承字段240)可以在验证过程期间用于确定何时可以停止对节点链的遍历。继承字段240可以由诸如设备200之类的ES保存在核心中索引节点中并且在动态可继承的属性(例如,放置策略)的传播过程期间复制自索引节点的父母。每当更新动态可继承的属性时(诸如响应于更新在命名空间分级的任何层级处的基于片段集合的放置策略或规则),可以在文件系统的根处更新继承字段240。
[0059]可以利用对应的动态可继承的属性的相应变化(例如,针对基于片段集合的放置策略的变化)来在文件系统的根节点处改变(例如,单调递增)继承字段240。可以在查找期间或在用于验证动态可继承的属性(例如,基于片段集合的放置策略)的验证过程期间将继承字段240从根节点传播给其它节点。
[0060]在框510处,设备200可以确定对象(例如文件或目录)的本地副本和根节点的本地副本是否均被缓存。如果任一个没有被缓存,则在框520处设备200可以缓存该对象或根节点,并且随后继续至框530。如果对象和根节点两者已被缓存,则方法500可以直接从框510流动至框530。在框530处,设备200可以确定根节点和对象的继承字段240是否相匹配。如果根节点和对象的继承字段240的确相匹配,则方法500可以流动至框540,其中在框540处,方法500完成。
[0061 ]因此,方法500可以检查某些条件,诸如(I)文件系统的根是否被缓存在ES处,(2)正验证的给定文件系统实体(例如,my_object)是否被缓存,以及(3)根的继承字段240是否与给定文件系统实体my_object的继承字段240相同。如果在框510至530处检查的所有三个条件均为真(true),则方法500可以在框540处退出。
[0062]这是因为文件系统实体的继承字段240可以与根节点的继承字段240相同,这可以推断出文件系统实体的动态可继承的属性是最新的并且不必被刷新。一旦确定正检查的文件系统实体的继承字段240与根的继承字段240相同就停止对动态可继承的属性(例如,基于片段集合的放置策略)的验证,允许了更高效的验证,这是因为没有将时间和资源浪费于尝试验证已被刷新的动态可继承的属性。
[0063]否则,如果根节点和对象的继承字段240不匹配,则方法500可以从框530流动至框550,其中在框550处,设备200可以建立从对象至根节点的节点分级列表250。设备200可以缓存该列表250中的被指示为没有被缓存在设备200处的任何节点。只要对应的文件系统实体的继承字段240与根节点的继承字段240不匹配,则与分级结构中的文件系统实体相关联的节点就在框550处被迭代地添加至列表250。当对应的文件系统实体的继承字段240与根节点的继承字段240相匹配时,将节点添加至列表250可以停止。
[0064]如果根没有被缓存或者如果my_objeCt没有被缓存,则对应的继承字段240不可在设备200或ES处被本地访问。设备200或ES可以在框550处建立从my_object到根节点的分级结构中的所有节点的列表250。作为建立列表250的过程的部分,设备200或ES可以从对应的DS获取关于根节点的信息(除非这种信息已被缓存在ES处)以及从对应的DS获取关于my_object的信息(除非这种信息已被缓存在ES处)。此外,ES还可以获取关于在my_object与根节点之间的任何中间文件系统实体的信息(除非与给定中间对象相关联的任何这种信息已被缓存在ES处)。
[0065]随后,在框560处,设备200可以更新与根节点不匹配的节点的放置策略和继承字段240。该过程可以在对象处开始并且在当前节点的继承字段240与根节点相匹配时停止。
[0066]因此,在框550处建立了列表250之后,在框560处从列表250中的第一节点向列表250中的其它节点传播动态可继承的属性(例如,基于片段集合的放置策略),其中第一节点通常是根节点。可以仅向与列表250中的节点相关联的文件系统实体进行对动态可继承的属性的传播,这些文件系统实体是具有与根节点不匹配的继承字段240的值的文件系统实体。这可以帮助减少与动态可继承的属性的传播相关联的业务和资源消耗,该业务和资源消耗在大的分布式存储系统中会迅速增长。
[0067]最后,在框570处,设备200可以将节点的经更新的放置策略和/或继承字段传播给对存储这些节点的本地副本的其它设备200。在向与列表250中的节点相关联的文件系统实体传播动态可继承的属性的值之后,方法500流动回到框540并退出。
[0068]例如,第三设备200-3可以更改与第一目录Dirl相关联的放置策略。结果,第三设备200-3还可以递增与第一目录Dirl相关联的继承字段240,诸如从“I”递增至“2”。此外,第三设备200-3可以请求第一设备200-1来递增根节点的继承字段240,诸如从I递增至2。命名空间的节点的剩余部分,诸如第二目录Dir2和第三目录Dir3以及my_file,可以保持其相应的继承字段240值为“I”。
[0069]由于设备200-1至200-3中的每个设备可能已缓存或存储了命名空间的至少部分的本地副本,第一设备200-1可以向第二设备200-2发送针对根节点的无效请求并且第三设备200-3可以向第二设备200-2和第三设备200-3发送针对第一目录Dirl的无效请求。因此,例如,第二设备200-2可以将根节点的本地副本和第一目录和Dirl标记为“没有被缓存”或当前的。假定,用户随后希望通过第二设备200-2修改my_file,第二设备200-2可以首先比较根节点和my_f i Ie的继承字段240。初始地,第二设备200-2可以确定根节点的本地副本不可受信任,因为其“没有被缓存”或是当前的。第二设备200-2可以随后从第一设备200-1重新读取“根节点”。
[0070]接着,第二设备200-2可以确定根节点和my_file的继承字段240不匹配。例如,根节点的继承字段240可以是2,而my_file的继承字段240可以是I。此时,第二设备200-2可以建立从my_file分级地链接到根节点的节点列表250。随后,可以更新放置策略,如果适用的话,以my_file为起始。在放置策略被认为是当前的之后,可以在第二设备200-2处更新my_file的继承值240以匹配根节点的继承值240。可以对于第三目录Dir3以及随后第二目录Dir2执行类似的过程。
[0071 ] 在到达第一目录Dirl时,第一目录Dirl和根目录的继承字段240可以匹配。因此,列表250中的所有节点可以关于放置策略和继承字段240值均是最新的。此外,如果未来再次生成列表250,现在可能需要更新较少的节点并且因此对继承字段240的匹配可以停止在较低节点层级。接着,第二设备200-2可以将经更新的列表250传播给第一设备200-1和第三设备200-3,以使得这些设备也可以更新针对列表250中的节点的放置策略和继承字段240值。
[0072]图3是包括用于将放置策略分配给片段集合的指令的计算设备300的示例框图。在图3的实施例中,计算设备300包括处理器310和机器可读存储介质320。机器可读存储介质320还包括用于将放置策略分配给片段集合的指令322、324和326。
[0073]计算设备300可以包括在例如微处理器、诸如存储器控制器之类的控制器、存储器模块或设备、笔记本计算机、台式计算机、一体化系统、服务器、网络设备、无线设备、或能够执行指令322、324和326的任何其它类型的设备中或是其部分。在某些示例中,计算设备300可以包括诸如存储器、控制器等之类的另外组件或连接到这些另外组件。
[0074]处理器310可以是至少一个中央处理单元(CHJ)、至少一个基于半导体的微处理器、至少一个图形处理单元(GPU)、微控制器、由微代码控制的特殊用途逻辑硬件、或适合于获取和执行在机器可读存储介质320中所存储的指令的其它硬件设备、或其组合。处理器310可以提取、解码和执行指令322、324和326以实现将放置策略分配给片段集合。作为对获取和执行指令的替代或除了获取和执行指令之外,处理器310可以包括至少一个集成电路(IC)、其它控制逻辑、其它电子电路、或其组合(其包括用于执行指令322、324和326的功能的若干个电组件)。
[0075]机器可读存储介质320可以是包含或存储指令的任何电的、磁性的、光学的、或其它物理存储设备。因此,机器可读存储介质320可以是例如随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、存储驱动器、压缩盘只读存储器(CD-ROM)等。因此,机器可读存储介质320可以是非暂时性的。如下文详细描述的,机器可读存储介质320可以被编码有用于将放置策略分配给片段集合的一系列可执行指令。
[0076]此外,指令322、324和326在由处理器执行(例如,经由处理器的一个处理单元或多个处理单元)时可以使该处理器执行诸如图4的过程之类的过程。例如,形成指令322可以由处理器310执行以从分布式文件系统的多个存储片段形成多个片段集合。存储片段受独立地控制。分配策略指令324可以由处理器310执行以将单独的放置策略分配给片段集合中的每个片段集合。
[0077]分配层级指令326可以由处理器310执行以将片段集合中的每个片段集合分配给命名空间的多个层级中的一个层级。命名空间的层级中的每个层级可以被分配给片段集合中的至少一个片段集合。基于片段集合的放置策略,对象可以被进行以下操作中的至少一种:被存储到存储片段中的至少一个存储片段和从存储片段中的至少一个存储片段被移动。
[0078]图4是一种用于将放置策略分配给片段集合的方法400的示例流程图。虽然下文参照设备200来描述方法400的执行,但是可以使用其它适当的组件(例如设备100)来执行方法400。另外,用于执行方法400的组件可以分散在多个设备(例如,处理设备与输入和输出设备相通信)之中。在某些场景中,协调行动的多个设备可以被视为用于执行方法400的单个设备。方法400可以以存储在诸如存储介质320之类的机器可读存储介质上的可执行指令的形式和/或以电子电路的形式来实现。
[0079]在框410处,设备200可以将分布式文件系统的存储片段210归组成片段集合。存储片段210可以受独立地控制。在框410处的归组可以基于分布式文件系统的片段特性、目标服务器(DS)关联和地理分布的差异来形成片段集合。
[0080]在框420处,设备200可以将放置策略与片段集合中的每个片段集合进行关联。在框430处,设备200可以将片段集合中的每个片段集合与命名空间的目录的多个层级中的一个层级进行关联。放置策略中的每个放置策略可以包括一个或多个规则,该一个或多个规则控制对去往和来自存储片段的各个对象的放置中的至少一种。片段集合中的位于该目录的不同层级处的至少两个片段集合可以与至少一个不同规则相关联。
【主权项】
1.一种设备,包括:集合单元,其用于对分布式文件系统的一个或多个存储片段的多个片段集合进行创建 和更新中的至少一种,所述存储片段受独立地控制;以及策略单元,其用于将放置策略分配给所述多个片段集合中的每个片段集合,所述放置 策略用于针对所分配的存储集合来控制对象至所述一个或多个存储片段的初始放置和重 新定位中的至少一种。2.根据权利要求1所述的设备,其中,所述多个片段集合中的至少两个片段集合与命名空间的不同层级相关联,并且 所述策略单元用于将不同的放置策略分配给与所述命名空间的不同层级相关联的所 述至少两个片段集合。3.根据权利要求1所述的设备,其中,所述放置策略包括不同的规则以用于不同类型的所述对象,所述集合单元用于基于所述分布式文件系统的存储片段特性、目标服务器(DS)关联和 地理分布中的至少一个的差异,来对所述片段集合进行创建或更新中的至少一种,并且 存储片段特性包括不同延时、能效、针对读取随机数据的优化、针对更快存储大量数据 的优化中的至少一个。4.根据权利要求1所述的设备,其中,所述放置策略用于基于指定的存储片段、随机选择、所述存储片段的片段集合、所述存 储片段的目录、所述存储片段的目标服务器(DS)、所述存储片段的存储接口、加权和确定性 算法中的至少一个,来控制所述对象至所述一个或多个存储片段的所述初始放置,加权是基于自由空间、延时和对所述存储片段的访问的数量中的至少一个,并且 所述确定性算法是基于以下各项中的至少一项:循环和选择所述片段集合的子集。5.根据权利要求1所述的设备,其中,所述放置策略用于基于所述对象的属性来控制所述对象至所述一个或多个存储片段 的重新定位,所述属性与所述对象的大小、所有权、对象类型、对象名称和时间特性中的至少一个有 关,并且所述时间特性与对所述对象进行访问的时间、对所述对象进行修改的时间、对所述对 象的索引节点进行改变的时间中的至少一项有关。6.根据权利要求1所述的设备,其中,所述命名空间是根据包括多个节点的树数据结构来组织的,所述片段集合中的每个片段集合与所述节点中的至少一个节点相关联,并且 所述节点中的每个节点与继承字段相关联,所述继承字段用于确定在较高节点处的放 置策略的至少部分是否已下降至较低节点。7.根据权利要求5所述的设备,其中,如果与子女节点相关联的片段集合缺少放置策略,则与所述子女节点相关联的所述片 段集合继承与父母节点相关联的片段集合的放置策略的至少部分,并且如果与所述子女节点相关联的所述片段集合的放置策略的至少部分和与所述父母节 点相关联的放置策略的至少部分相矛盾和/或比与所述父母节点相关联的放置策略的至少部分更具体,则与所述子女节点相关联的所述片段集合的放置策略的至少部分补充与所述 父母节点相关联的放置策略的至少部分和/或优先于与所述父母节点相关联的所述片段集 合的放置策略的至少部分。8.根据权利要求5所述的设备,其中,如果对于子女节点和所述子女节点的所述根节点来说继承字段的值是不同的,则列表 由从所述子女节点至所述根节点构成,并且所述根节点的继承字段的值按照连续的顺序以所述子女节点为起始被传播给所述列 表的节点的继承字段,直到所述根节点的继承字段与所述列表的当前节点相匹配为止。9.根据权利要求1所述的设备,其中,多个片段集合中的至少一个片段集合包括所述存储片段中的一个或多个存储片段的 子集,所述子集被分配独立于包括所述子集的所述片段集合的所述策略的策略。10.根据权利要求1所述的设备,还包括:对象单元,其用于将所述对象存储至所述片段集合中的一个片段集合的多个存储片段 中的至少一个中,其中,对象的类型包括常规文件、目录、文件副本、目录副本、所有副本、所有对象中的至少一 个。11.根据权利要求1所述的设备,其中,所述片段集合中的一个以上片段集合包括所述存储片段中的相同存储片段,不同规则选择所述相同存储片段,并且所述命名空间的文件路径的元素被放置在不同存储片段上并且受不同服务器控制。12.—种方法,包括:将分布式文件系统的存储片段归组成片段集合,所述存储片段受独立地控制;将放置策略与所述片段集合中的每个片段集合进行关联;以及将片段集合中的每个片段集合与命名空间的目录的多个层级中的一个层级进行关联, 其中,所述放置策略中的每个放置策略包括一个或多个规则,所述一个或多个规则控制对去 往和来自所述存储片段的各个对象的放置中的至少一种。13.根据权利要求12所述的方法,其中,所述归组基于所述分布式文件系统的片段特性、目标服务器(DS)关联和地理分布中的 至少一个的差异来形成所述片段集合,并且所述片段集合中的位于所述目录的不同层级处的至少两个片段集合与至少一个不同 规则相关联。14.一种非暂时性计算机可读存储介质,其存储指令,所述指令在由设备的处理器执行 的情况下使得所述处理器进行以下操作:从分布式文件系统的多个存储片段形成多个片段集合,所述存储片段受独立地控制;将单独的放置策略分配给所述片段集合中的每个片段集合;以及将所述片段集合中的每个片段集合分配给命名空间的多个层级中的一个层级,其中,所述命名空间的所述层级中的每个层级被分配给所述片段集合中的至少一个片段集合。15.根据权利要求14所述的非暂时性计算机可读存储介质,其中,基于所述片段集合的所述放置策略,对象被进行以下操作中的至少一种:被存储到所 述存储片段中的至少一个存储片段和从所述存储片段中的至少一个存储片段被移动,并且 所述放置策略包括不同的规则以用于不同类型的对象。
【文档编号】G06F21/60GK105981033SQ201480075470
【公开日】2016年9月28日
【申请日】2014年2月14日
【发明人】B·朱克曼, P·S·那加拉詹
【申请人】慧与发展有限责任合伙企业
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1