多卷文件支持的制作方法

文档序号:6488403阅读:186来源:国知局
专利名称:多卷文件支持的制作方法
技术领域
本发明涉及计算机系统的文件系统领域,更具体地说,涉及对于文件系统内的文件的存储空间的分配。
背景技术
计算机系统实现文件系统来管理由操作系统使用的文件和/或在计算机系统上执行的应用程序。执行文件系统软件来管理文件系统中的文件。过去,文件系统通常用单卷名字空间实现,因此文件系统中的所有文件具有相同的存储特征(例如,存储装置的类型,可靠性特征等)。不同的卷可具有不同的性能特征、不同的成本、和不同的可靠性特征。然而,可以认为一些文件比其它的文件“更重要”,因此对于这些文件,期望更高的可靠性特征(即使付出更低的性能特征的代价)。其它文件可被频繁地访问和更新,因此期望高性能特征(即使付出更低的可靠性特征的代价)。另外,文件可具有数据(存储在文件中的信息)和元数据(关于数据的信息)两者。元数据通常被认为比数据“更重要”,因此期望更高的可靠性特征。对于单卷名字空间,不可能为不同文件或文件的不同部分提供不同的性能、可靠性、和/或成本特征。
已进行了一些有限的提供灵活性的尝试。例如,出自SiliconGraphics,Inc(SGI)的XFS文件系统被用在诸如视频服务器、视频编辑等的实时关键应用中。XFS文件系统提供一个实时空间和一个“正常”空间(非实时空间),并尝试提供对实时空间中的数据的实时访问(潜在地损害对正常空间的访问的情况下)。QFS文件系统允许将存储装置分为两个池,一个用于存储数据,另一个用于存储元数据。因此,数据或元数据被自动存储在对应的池中的装置上。其它文件系统(例如,出自Digital Equipment Corporation后来被康柏计算机获得的ADVFS,后来被惠普获得)包含卷管理器的功能,在文件系统中直接提供诸如镜像、分割、廉价冗余磁盘阵列(RAID)等的特征。
文件系统一般不具有将文件分配给具有该文件期望的特征的卷的灵活性,也无法将文件数据和文件元数据以可能期望的灵活性进行分配。

发明内容
在一个实施例中,一种计算机可访问介质可包括指令,所述指令当被执行时接收请求来为文件分配一个或多个块。至少一个分配策略被分配给该文件,其中,分配策略指定将在其上分配块的一个或多个存储单元。在一些实施例中,存储单元可包括卷,或者在其它实施例中,存储单元可包括存储装置。此外,如果多于一个存储单元被包括在一个或多个存储单元中,则分配策略包括控制指示,其指示一种在存储单元之中进行选择的机制。这些指令当被执行时还可根据分配策略分配块。不同的分配策略可被分配给不同的文件,允许在将文件分配给存储单元的过程中的灵活性。例如,在一些实现中,不同的文件可被分配给具有不同的性能、可靠性、和成本特征的卷。
在另一实施例中,一种计算机可访问介质包括指令,所述指令当被执行时接收请求来为文件系统中的文件分配一个或多个块并根据分配策略来分配块。分配策略在文件系统中两个或更多级别的粒度上可指定。例如,在一些情况下,分配策略可在盘区、文件、目录、文件集、和/或文件系统级别上指定。在一些实施例中,分配策略在操作期间可被改变。随后的块分配可根据新分配策略发生。以另一种方式看,块分配可在分配时根据一个或多个分配策略被执行。


下面的详细描述参考附图,现在简短描述附图。
图1是系统的一个实施例的框图。
图2是文件系统、卷管理器、和各种卷或卷集的一个实施例的框图。
图3是更详细的文件系统软件的一个实施例的框图。
图4是i节点的一个实施例的框图。
图5是存储文件数据的i节点的一个实施例的框图。
图6是存储一个或多个对数据块的指针的i节点的一个实施例的框图。
图7是存储一个或多个对间接块的指针的i节点,且每个间接块存储一个或多个对数据块的指针的一个实施例的框图。
图8是示出图7中显示的分配器的一个实施例的操作的流程图。
图9是示出应用“按给出”分配策略的一个实施例的流程图。
图10是示出应用“最空”分配策略的一个实施例的流程图。
图11是示出应用“最小尺寸”分配策略的一个实施例的流程图。
图12是示出关于分配策略可被使用的命令的一个实施例的表。
图13是更详细的文件系统软件的第二实施例的框图。
图14是示出包括在创建文件的过程中的行为的一个实施例的流程图。
图15是计算机可访问介质的一个实施例的框图。
尽管本发明容许各种修改和替换形式,但其特定实施例通过附图中的示例被显示并将在此被详细描述。然而,应该理解,附图和对其的详细描述不是意图将本发明限制为公开的特定形式,正相反,本发明将覆盖落入由所附权利要求限定的本发明的精神和范围内的所有修改、等同物和选择对象。
具体实施例方式
图1是系统的一个实施例的框图。在图1的实施例中,该系统包括执行硬件10和与执行硬件10连接的多个存储装置12A-12N。
执行硬件10可包括被设计以在使用期间执行指令的至少一个处理器。多个处理器可被包括在一些实施例中。执行硬件10可选择性地包括其它组件(例如用于存储由处理器执行的指令和将由处理器操作的数据的系统存储器、各种输入/输出(I/O)装置等)。
存储装置12A-12N可包括任何类型的计算机可存取介质。例如,在各种实施例中,存储装置12A-12N可包括小计算机系统接口(SCSI)盘、电子集成驱动器(IDE)盘、个人计算机存储卡国际协会(PCMCIA)盘、通用串行总线(USB)盘、火线盘等。存储装置12A-12N还可包括固态存储器(例如存储器12N),其可包括各种非易失性存储器装置,诸如有电池支持的随即存取存储器(RAM)、闪速存储器;各种可编程只读存储器(PROM),诸如可擦除PROM(EPROM)、电可擦除PROM(EEPROM)等。存储装置12A-12N还可包括可拆卸存储器,诸如软盘。存储装置12A-12N可经由各种外设互连(例如IDE、外设组件互连(PCI)、USB、串行或并行接口等)被连接到执行硬件10。另一方面,存储装置12A-12N可经由网络(有线或无线)被连接到执行硬件10。在一些实施例中,存储装置12A-12N可被配置为存储区域网(SAN)或者可以是网络附加存储器(NAS)。直接附加的存储装置和组网的存储装置的组合可在各种实施例中使用。
图2是示出可在图1显示的系统的一些实施例中使用的某软件基础结构的框图。在图2的实施例中,显示了文件系统14、卷管理器16、和包括存储装置12A-12N的卷。文件系统和卷管理器软件在使用期间可在执行硬件10上被执行。
一般,卷管理器16包括将存储装置组织成卷(和/或卷集)的软件,并使得这些卷对于文件系统14可用,以用于文件的存储。各种卷可具有不同的特征(例如不同的性能特征。不同的可靠性特征等)。如在此使用的,术语“卷(volume)”指的是在被组织并称为单元的一个或多个存储装置12A-12N上的存储块的集合。一个卷可包括一个存储装置的所有块、存储装置的一部分块(例如盘分区)、多个存储装置的所有块。或者多个存储装置的每个上的一部分块。如在此使用的,“存储块(storage block)”,或者更简短地说,“块”可以是在存储装置上(或在卷内)分配存储空间的最小单位。块尺寸可随着实施例的不同而变化。例如,尽管可使用任意块尺寸,但是4千字节的块尺寸是普遍的。
卷的组织可提供特定的性能和/或可靠性特征。例如,图2中的卷1是包括存储装置12A-12B的镜像卷。卷管理器16可用相同的数据写两个存储装置12A-12B,因此装置12A-12B中的一个产生故障不会导致数据的丢失。因此,卷1提供了镜像冗余。其它卷可包括更多存储装置以提供数据的额外的镜像,提供额外的冗余(从而提供更高的可靠性)。作为可靠性的另一示例,卷3可包括卷管理器16可作为RAID存储器进行管理的多个存储装置(包括图2中的装置12D和12E)。例如,RAID等级5可被实现在一些实施例中。其它实施例可实现任何RAID等级。一些性能特征可以是包括在卷中的存储装置或多个存储装置的结果(例如,不同类型的装置可具有不同的延迟和带宽特征)。因此,卷2和6基于包括在卷中的存储装置12C和12N可具有不同的性能特征。然而,性能特征还可经由卷的组织被建立。例如,卷4包括被分割以增加性能的存储装置12F和12G。除了性能和可靠性特征之外,基于其下的存储装置的成本,每个卷还可具有成本特征。此外,几个卷可被限定具有相同的成本、性能、和可靠性特征。不同的用户可使用这样的卷中的不同的卷,以确保用户在访问卷的过程中不会彼此干扰(例如,确保每个用户可具有到对应卷的专用带宽)。
卷管理器16还可支持卷集的创建(例如图2中的卷集18)。如在此使用的,“卷集”可以是被组织为用于被文件系统14进行访问的单个对象的一个或多个卷的集合。卷集内的卷可由文件系统14使用卷集名称和卷集内期望的卷的索引来寻址。卷集内的卷可具有不同的特征(例如,卷集18内的卷5和卷7可具有不同的特征)。
一般,文件系统14可包括对更高级别的软件(例如,操作系统、应用程序等)所使用的文件进行组织和跟踪的软件。文件系统14可将文件分等级地组织进目录中,并管理用于文件的存储空间的分配。在图2的实施例中,文件系统14可在由卷管理器16提供的一个或多个卷上分配块来存储文件数据(和文件元数据)。在其它实施例中,如果不包括卷管理器16,则文件系统14可在各种存储装置12A-12N上直接分配块。在这样的实施例中,存储装置12A-12N中的每个可被文件系统14以与卷相似的方式对待。在文件系统中存储的所有数据(例如,文件数据、元数据等)在此可被称为文件系统数据。
分配策略文件系统14可为文件系统的指定各种分配策略。一般,“分配策略”可指定可被用于分配的一个或多个存储单元。在实现卷管理器16的实施例中,存储单元可包括卷(包括卷集内的卷)。在没有实现卷管理器16的实施例中,存储单元可包括存储装置12A-12N。为了简化剩余的讨论,将指定一个或多个卷来讨论分配策略。然而,其它实施例可具有一个或多个存储装置,并且将“卷”替换为“存储装置”(或者,更一般化地,将“卷”替换为“存储单元”),则相似的操作可应用。此外,如果分配策略指定多于一个存储单元,则分配策略可包括指示在存储器之中进行选择的机制的控制指示。在一些实施例中,可提供各种其它控制标志(例如,非特权用户是否可向文件分配策略的指示、策略对于所有分配是否要被严格的遵守的指示等)。分配策略还可被编码为“空”,这意味着分配策略未被指定。在各种实施例中,一个缺省分配策略可被用于分配块,或者在其它粒度级别上指定的分配策略可被使用。
当为文件分配块时,文件系统14可应用分配策略。即,文件系统14可在由分配策略指定的卷上分配块,并且在分配策略中未指定的卷上不可以分配块(即使在分配策略中未指定的卷上块是可用的)。在一些实施例中,分配策略可被用于控制哪个卷被用于给定的文件,因此可向文件系统14的用户提供灵活性以控制各种文件被存储在其上的存储器的性能、成本、和可靠性特征。在一些实施例中,卷可具有由管理员分配的一个或多个特征。例如,这样的分配特征可以基于位于卷外部的并且对于管理员已知的信息来识别卷。例如,管理员可分配特征,该特征识别卷的位置、网络到卷和卷到网络所期望的通信量等。分配策略可被定义以基于这样的分配特征来控制分配。分配的特征可以以各种方式被表示(例如名称/值对)。
在一个实施例中,分配策略可被单独地分配给文件。即,每个文件可具有分配的一个或多个分配策略。例如,在一个实施例中,文件可由一个或多个i节点描述。一般,如在此使用的,“i节点(i node)”可包括描述文件的数据结构。i节点被存储在文件系统中,并被用于识别文件系统中的文件。i节点可存储分配给文件的一个或多个分配策略(或者可存储识别分配策略的标签,并且分配策略自身可被存储在分配策略数据结构中)。因此,每个文件可具有分配策略,并且不同文件的分配策略可能不同。此外,在一些实施例中,文件数据的i节点和文件元数据的i节点可以是分开的。因此,文件数据和文件元数据的分配策略可能不同。例如,文件元数据可被存储在具有比对应的文件数据更高的可靠性特征的卷上。对于不同类型的元数据也可存在分开的i节点,允许分配策略对于不同类型的元数据不同。一般,元数据可以是描述文件(或文件中的数据)的数据。例如,目录信息可以是元数据。各种扩展文件属性(被诸如操作系统或应用程序的更高级别的软件所使用)可被存储为元数据。到文件的符号链接可以是元数据。在各种实施例中,可提供任何元数据。分配策略还可逐i节点类型地分配(例如,文件数据i节点相对于元数据i节点,或者各种类型的元数据i节点,诸如目录数据、扩展文件属性、符号链接等)。
在另一实施例中,分配策略可在文件系统中多于一个的粒度级别上被分配。例如,分配策略可对于作为整体的文件系统、对于文件系统内的文件集、对于文件系统或文件集内的目录、以及对于文件系统(或文件集)内的文件进行分配。对于给定的分配,对于非空文件可使用在最精细粒度级别上的分配策略。如在此使用的,“盘区(extent)”是卷内被分配给一个文件的相邻块的集合。给盘区的分配策略可以允许控制如果该盘区被扩大时存储器被添加到所述盘区。在另一实施例中,分配策略可被分配给成批的文件。
应该注意到文件系统可包括一个或多个文件集。文件集可以是被当作一个单元对待的文件的集合(类似于卷集和卷之间的关系)。在一些实施例中,文件集可以是文件系统内独立的名字空间。在一个实施例中,文件集可被用于备份的目的。文件集之一可以是主(活动)文件集,其它文件集可以是的对文件系统状态进行快照的克隆以用于备份目的。在这样的实施例中,文件集也可被称为“检查点”。
一个或多个分配策略可在操作中如期望地被动态改变。用于对应文件的新分配可遵守新分配策略。如果期望,则用于文件的存储器可在策略改变之后被重新分配,从而新分配策略被用于整个文件。
现在转向图3,显示文件系统14的一部分的一个实施例的框图。在图3的实施例中,文件系统14包括分配器20、应用程序接口(API)22、和命令接口24。分配器20、API 22和命令接口24可访问文件系统策略、一个或多个文件集策略(例如用于文件系统中的每个文件集的一个文件集策略)、和可被定义以分配给文件的各种其它策略。文件系统策略、文件集策略、和其它策略一起可形成文件系统14的多个分配策略26。该多个分配策略26可被文件系统14存储为一个数据结构(例如,在文件系统14的一个卷上)。分配器20还可访问限定文件系统内的每个卷的空闲块的一套数据结构(例如卷1的空闲块列表,标号28A,以及卷N的空闲块列表,标号28N,被显示在图3中)。
分配器20可包括当(例如在执行硬件10上)被执行时响应于块分配请求为文件存储分配块的指令。块分配请求可由正在更新文件的应用程序、操作系统软件等发起。块分配请求可包括分配给文件的分配策略(或其指示)以及请求的块数。另一方面,块分配请求可识别为其分配块的文件,并且分配器20可获得对应于该文件的分配策略(例如,从诸如分配策略26的对于分配器20可访问的数据结构中)。例如,在一个实施例中,块分配请求包括对其请求块的i节点以及块数。该i节点可识别为其请求块的文件,并还可指定分配给文件的分配策略。在其它实施例中,文件的分配策略可被存储在可由分配器20访问的数据结构(例如分配策略26)中,因此不可以在块分配请求中被明确指定。在这样的实施例中,分配器20可使用文件标识(例如i节点)来查询i节点的分配策略。
分配器20可将文件的分配策略应用于块分配请求,并可将分配的块数和块的指针返回给请求者。实际分配的块数可能少于请求的块数(例如,如果该数量的块不是定位为分配策略中包括的卷之一上的相邻组)。在这样的情况下,请求者可反复请求(从请求的块数中减去分配的块数)直到期望的块数被分配(或者直到指示块不可能被分配的错误出现)。可用于分配的块可由空闲块列表28A-28N指示,并且分配器响应于为文件分配块而更新空闲块列表28A-28N以从列表中去除分配的块。在各种粒度级别上指定分配策略的实施例中,分配器20可应用这样的分配策略,该分配策略位于适用于请求的最精细级别的粒度上并且非空。
命令接口24可包括响应于各种管理命令而执行的指令(例如在执行硬件10上)。管理命令可由用户输入(例如,经由命令壳)。属于分配策略的一套命令可被实现(例如,添加分配策略、指定策略、改变策略等)。一套示例命令显示在图12中并在下面更详细地描述。API 22可接收由应用程序产生的应用命令。应用命令可以是对API 22中各种软件例程的调用。应用命令可以是管理命令的子集,并可被应用程序(和操作系统软件)使用来管理分配策略。在一些实施例中,用于管理分配策略的应用命令的集合可以与管理命令的集合相同。文件系统14的管理员可控制向应用程序提供多少许可来管理分配策略,并且API 22可对许可实行任何限制。
接下来转到图4,显示i节点30的一个实施例的框图。在图4的实施例中,i节点30包括数据策略字段32、间接策略字段34、其它属性36、和指针字段38。
示出的实施例通过数据策略字段32和间接策略字段34为每个i节点提供两个分配策略。在直接策略字段32中指定的数据策略可用于数据块请求,在间接策略字段34中指定的间接策略用于间接块请求。因此,对于此实施例,由分配器20接收的块分配请求还可包括请求是对于数据块还是对于间接块的指示。如在此使用的数据块是被分配以存储文件数据(或元数据)的块。间接块是被分配以存储一个或多个数据块或其它间接块的指示的块。间接块可包括任何形式的文件索引(例如,对数据块或其它间接块的指针;识别数据块和其它间接块的位映射等)。数据块和间接块具有不同的分配策略是可取的。数据块可被更频繁地分配在大盘区中,而间接块可被更频繁地分配为较少数量的块。通过使用不同的分配策略,间接块分配更不可能使用于数据块分配的卷产生碎片。注意到直接策略字段32和间接策略字段34可存储识别分配策略26之一的标签,而不是存储实际的策略本身。如在此使用的,通过包括分配策略或者通过包括识别分配策略的标签,i节点可“指定”分配策略。
指针字段38可存储块的一个或多个指针。在一些实施例中,如果文件数据足够小以致可被存储在指针字段38中,则文件数据可代替指针或多个指针被存储。
其它属性36可存储用于对应于i节点的文件的其它信息(例如,访问许可、所有者、时间戳等)。期望的任何其它信息可被存储,或者没有信息可被存储。在一个实施例中,其它属性36可指示指针字段38是否包括文件数据、对数据块的一个或多个指针、对间接块的一个或多个指针。
图5、6和7示出i节点30的各种实施例i节点30A、i节点30B、i节点30C等。i节点30A可以是在指针字段38中存储了文件数据的i节点的示例。i节点30B可以是具有对数据块(例如图6中的块40A和40B)的一个或多个指针的i节点的示例。i节点30C可以是具有对间接块(例如指向数据块44A和44B的间接块42A、指向数据块44C和44D的间接块42B)的一个或多个指针的i节点的示例。如图5、6和7所示,i节点30A-30C每个包括数据策略字段32和间接策略字段34。
尽管在图4-7的实施例中显示了两个分配策略字段,但是在其中每个i节点指定一种分配策略或者每个i节点指定多于两种分配策略的其它实施例被设想。另外,分配策略字段在各种实施例中可被存储在其它地方。例如,分配策略字段可与其它元数据存储在一起。分配策略字段还可存储在间接块等中。
现在转到图8,显示了流程图,示出分配器20的一个实施例响应于块分配请求的操作。图8示出的实施例可被用在在其中分配策略可以以各种级别的粒度被建立的实施例中。对于示出的实施例,分配策略在i节点中提供(例如图4),并还可在文件集和文件系统级别被指定。图8的流程图可表示包括在分配器20中的指令,这些指令当被执行时实现图8中显示的操作。
分配器20可确定块分配请求是对于数据块还是对于间接块(判定框50)。如果请求是对于数据块的,则分配器20可检查由在请求中提供的i节点指定的数据策略(判定框52)。如果数据策略非空(判定框52,“是”分支),则分配器20可应用数据策略来分配块(框54)。另一方面,如果请求是对于间接块,则分配器20可检查由在请求中提供的i节点指定的间接策略(判定框56)。如果间接策略非空(判定框56,“是”分支),则分配器20可应用间接策略来分配块(框58)。
如果请求是对于间接块并且由i节点指定的间接策略为空,或者如果请求是对于数据块并且由i节点指定的数据策略为空,则分配器20可检查包括该文件的文件集的文件集策略(判定框60)。如果文件集策略非空(判定框60,“是”分支),则分配器20可应用文件集策略来分配块(框62)。类似地,如果文件集策略为空,则分配器20可检查文件系统策略(判定框64)。如果文件系统策略非空(判定框64,“是”分支),则分配器20可应用文件系统策略来分配块(框66)。如果文件系统策略为空(判定框64,“否”分支),则分配器20可应用缺省策略(框68)。缺省策略可以是任何期望的策略。例如,缺省策略可以是分配附于文件系统的任何卷上的块。
分配器20返回对分配的块的指针和分配的块的数量(框70)。如上所述,在一些情况下,对于给定的请求,可能分配比请求的块数少的块。如果对于给定的请求没有块可被分配,则可返回错误作为代替。
图8的实施例示出在i节点(文件)级别的粒度上分开的数据和间接策略以及在更粗级别的粒度(例如,文件集和文件系统级别)的一个策略。在其它实施例中,更粗级别粒度也可具有分开的数据策略和间接策略。在这样的实施例中,基于块分配请求是对于数据块还是对于间接块,将在每个更粗级别选择间接或数据策略。
尽管示出的实施例包括在文件、文件集、和文件系统级别的粒度上的分配策略(如果没有指定策略,则包括一个缺省策略),但其它实施例可使用粒度的任何子集。除了示出的级别(或示出的级别的任何子集)之外,其它实施例可实现盘区或文件范围(file range)级别的粒度。
在其它实施例中,文件系统14不可为分配策略实现多级别的粒度(即,仅可实现文件级策略)。在这样的实施例中,如果请求是对于间接块并且由i节点指定的间接策略为空,或者如果请求是对于数据块并且由i节点指定的数据策略为空,则可使用缺省策略。
注意到,在另一实施例中,取决于请求类型,分配器20可仅检查在i节点中指定的数据策略和间接策略。当创建文件时,在不同粒度上的策略可生效。即,执行类似于图8的流程图的代码可在文件创建期间被执行以设置正被创建的文件的i节点中的数据策略字段32和间接策略字段34(这里,可分配用户指定的策略,或者如果未提供用户指定的策略,则可使用文件集或文件系统策略)。
如上所述,在使用期间可修改各种分配策略。图8的流程图在块分配请求被接收到时可有效使用分配策略。
在块54、58、62和66的每个,分配策略被应用。应用分配策略一般可包括如果多于一个卷被列出,则在控制指示的控制下尝试从包括在分配策略中的卷进行分配。应用用于各种控制指示编码的策略的几个示例显示在图9-11中。即,取决于分配策略中的控制指示,使用图9-11中显示的任何流程图,任意块54、58、62和66可被实现。图9-11的流程图每个可表示形成分配器20的指令,这些指令当被执行时实现图9-11中显示的操作。
图9是示出“按给出(as given)”策略的应用的流程图(即,控制指示被编码以指示“按给出”)。对于此策略,为了在分配策略中列出它们,进行从卷进行分配的尝试。即,如果分配策略中的第一卷具有至少一个可用块,则该块将被分配以响应请求。如果第一卷为空,则尝试从分配策略中的第二卷进行分配,等。
因此,分配器20可以按在分配策略中列出的顺序扫描卷(更具体地说,分配器20可访问用于卷的空闲块列表28A-28N)(框80)。分配器20可在分配策略中有空间的第一个卷上分配一个或多个块(框82)。
另一方面,分配器20可在卷上扫描请求的分配尺寸(按在分配策略中列出的顺序)并可在具有所请求的尺寸的相邻块的第一个卷上分配请求的尺寸。如果请求的尺寸不可用,则分配器20可从具有对于分配可用的任意块的第一个卷分配块。
图10是示出“最空(least full)”策略的应用的流程图(即,控制指示被编码以指示“最空”)。对于此策略,在分配策略中最空的卷(例如,在各种实施例中,具有最多可用块,或按卷中全部块的百分比具有最多可用块)上分配块。因此,分配器20可扫描卷(更具体地说,分配器20可访问用于卷的空闲块列表28A-28N)以找到最空卷(框84)。分配器20可在最空卷上分配块(框86)。
已设想除了顺序和丰满度之外的标准可被用于在分配策略中指定的卷之中进行选择以用于响应于块分配请求的分配。例如,卷的碎片化可被考虑,独立于块分配请求而提供的期望的最小分配尺寸可被考虑,等。例如,图11是示出“最小尺寸(MinSize)”策略的应用的流程图(即,控制指示被编码以指示“最小尺寸”)。对于此策略,分配器20尝试从分配策略的任意卷分配较小的请求尺寸(块数)或最小尺寸(块数)。最小尺寸可以是可编程的(全局地对于文件系统,或者在分配策略内)或者可以是固定的。
因此,分配器20可按在策略中列出的顺序扫描卷(更具体地说,分配器20可访问用于卷的空闲块列表28A-28N)(框88)。如果最小尺寸(或者请求的尺寸)的块被找到(框90,“是”分支),则分配器20可在该找到的卷上分配块(框92)。如果最小尺寸(或者请求的尺寸)的块未被找到(框90,“否”分支),则分配器20可使用按给出策略来分配块(框94)。
也设想其它策略。例如,设想这样一种策略,其将“按给出”和“最小尺寸策略”组合,带有指示一种策略相对于另一种策略被偏重地应用的程度的权重。此外,已设想多个分配策略可被应用于给定的文件所期望的卷的子集。
接下来转到图12,显示了关于分配策略的、可被命令接口24支持的各种管理命令的一个实施例的表。命令的一个类似的集合或者一个子集可经由API 22从应用被支持。其它实施例可如期望地实现命令或其它附加命令的任何子集。其它附加命令也可被支持以用于其它文件系统。
Add volume(增加卷)命令可用于将卷添加到文件系统。Addvolume命令不可将卷添加到任何分配策略。Remove volume(删除卷)命令可用于从文件系统去除卷。Remove volume命令可能使仍在一个或多个分配策略中被指定的卷停止作用。Resize volume命令可被用于调整卷的尺寸(例如,增加或减少卷中的块数)。
Creat allocation policy命令可用于创建分配策略(例如,将新分配策略添加到分配策略26)。Delete allocation policy命令可用于从分配策略26删除分配策略。Allocation policy info命令可用于取回指定的分配策略的内容。
Assign fileset allocation policy命令可用于以文件集级别的粒度分配一个或多个分配策略。类似地,assign filesystem allocation policy命令可用于以文件系统级别的粒度分配一个或多个分配策略。对应的fileset allocation policy info和filesystem allocation policy info命令可用于分别在文件集和文件系统级别的粒度上取回这些策略的内容。
Assign file allocation policy命令可用于分配文件的分配策略(数据和/或间接的)。File allocation policy info命令可用于取回文件的策略的内容。
Encapsulate命令可用于用覆盖整个卷的一个数据盘区来创建一个文件。如在下面的示例部分会更详细地描述的,此命令可用于封装数据库使用的原始卷。
此外,在一些实施例中,一种根据与分配给文件的分配策略不同的分配策略来重新分配文件的命令可被支持。这样的命令可用于根据不同的分配策略重新分配文件,而实际上不改变文件的分配策略。
现在转到图13,显示了文件系统14的一部分的第二实施例的框图。图13的实施例示出分配器20、API 22、命令接口24、分配策略26、和空闲块列表28A-28N。此外,显示了可被分配器20访问的自动分配策略表100。
自动分配策略表100可用于当特定文件被创建时分配用于这些文件的分配策略。自动分配策略表100可包括多个条目。每个条目可包括一个与输入索引值匹配的索引值;和被分配给具有匹配的输入索引值的文件的一个或多个分配策略。在各种实施例中,任何文件属性可被用作表中的输入索引。例如,可使用文件名后缀(其经常用于指示文件中数据的类型)。在其它实施例中,可使用文件名的其它部分。在其它实施例中,可使用文件尺寸。在其它实施例中,可使用文件的所有者或创建者。如果找到表中的匹配的索引值(一次“命中”),则在表中指定的对应的分配策略可被分配给文件。
图14是示出分配器20的一个实施例响应于请求而创建文件的操作的流程图。图14的流程图可表示形成分配器20的指令,这些指令当被执行时实现图14中显示的操作。
分配器20可确定文件是否在自动策略表100中命中(判定框102)。如果命中(判定框102,“是”分支),则从自动策略表100分配文件的一个或多个分配策略(框104)。如果未命中(判定框102,“否”分支),则分配器20可确定文件是否要从双亲(例如目录、文件集或文件系统)继承一个或多个分配策略(判定框106)。例如,文件系统14是可编程的以提供分配策略的继承。另一方面,是否提供继承可以在其它级别的粒度(例如文件集、目录等)上指定。其它实施例可不实现继承。如果文件要继承分配策略(判定框106,“是”分支),则分配器20可分配双亲的一个或多个策略(框108)。如果文件不打算继承分配策略(判定框106,“否”分支),则分配器20可将一个或多个空策略分配给文件。另一方面,如果期望,文件集分配策略或文件系统分配策略可在框106分配。
分配策略使用的示例分配策略可以以许多方式使用以实现将文件各式各样地分配给文件系统中的卷。以下提供的示例没有意图穷举。
一个应用程序可能要将给定检查点中的文件分配给一个或多个卷。这样的分配可允许文件系统的管理员限制检查点使用的空间,它还可防止检查点使主文件集中的空间产生碎片。多个检查点也可被分配给相同的卷。对于此应用,文件系统可起初具有一个文件集(主文件集),其具有包括一个卷的分配策略。一个包括不同的卷的新分配策略可被创建,并且具有分配给其的新分配策略的检查点文件集可被创建。
另一应用可能要分开文件数据与元数据。如先前所述,元数据经常被认为比文件数据更有价值。因此,与文件数据相比,将元数据存储在具有更高的可靠性特征的卷上、甚至允许用于不同类别的元数据的不同级别的可靠性是可取的。对于此应用,可将包括第一一个或多个卷的第一分配策略分配给文件数据i节点,并可将包括不与第一一个或多个卷重叠的第二一个或多个卷的第二分配策略分配给元数据i节点。第二卷可具有比第一卷更高的可靠性特征。如果期望不同级别的可靠性用于不同类别的元数据,则额外的分配策略可被创建。
另一示例性应用可能要将文件系统意向日志(intent log)存储在不同于其它文件的物理存储装置上。一些文件系统(例如出自VERITAS软件公司,Mountain View,CA的VERITAS文件系统)可包括用于记录修改各种文件系统数据的意向的意向日志。如果系统在所有的修改完成之前崩溃,则意向日志可用于检测本来应该更新什么并且完成该更新或者撤销该更新。将意向日志(其被频繁更新)放在与其它文件分离的物理存储装置上可防止在装置上(在意向日志和其它文件之间)的频繁查找,并还可防止使带有意向日志数据块的卷产生碎片。对于此应用,一种指定单个卷(或多个卷)被用于意向日志的分配策略可被创建,并可被分配给意向日志i节点。其它分配策略不可使用用于意向日志的一个或多个卷。类似的机制可用于隔离在它们自己的物理盘上的其它日志(例如,VERITAS文件系统实现的文件变化日志,其记录对文件的改变)。
数据库软件(诸如Oracle)经常使用原始卷来存储其数据(例如,管理块分配自身)。由于原始卷不包含任何文件,所以备份数据库卷是复杂的,将数据从卷复制到文件来备份文件会很耗时。对于此应用,encapsulate命令可用于将原始卷添加到文件系统并将该卷封装为一个文件。
一些文件可具有相关的“名称流”结构。名称流可用于存储关于文件的其它信息(例如,与文件相配的图标等)。将名称流存储在与文件数据不同的卷中是可取的。对于此应用,名称流i节点可被分配与文件数据i节点不同的分配策略。
更一般化地,基于用户定义的标准将不同的文件存储在不同的卷上是可取的。例如,一些文件(例如多媒体文件)可具有与其它文件不同的访问模式。将这样的文件存储在对于那些类型的访问模式执行得更好的卷上是可取的。用户可被允许将分配策略分配给文件来实现期望的分配。在一些实施例中,分配策略可具有指示非特权用户是否访问给定的分配策略的标志。这样的标志可允许管理员控制用户可使用哪种分配策略。
在其它实施例中,可实现另外的管理控制。另外的管理控制可允许在允许特定用户或用户组定义分配策略、将分配策略分配给文件等的过程中的更多的灵活性。
另一示例可允许在尺寸上比单个卷的最大尺寸更大的文件系统。对于此示例,多个卷可被附于文件系统,并且用于文件系统的分配策略可在任何可用卷上分配文件。
计算机可访问介质现在转到图15,显示了计算机可访问介质120的框图。一般来说,计算机可访问介质可包括在使用期间可由计算机访问的任何介质,以将指令和/或数据提供给计算机。例如,计算机可访问介质可包括诸如磁或光学介质的存储介质,例如,盘(固定或可卸载)、CD-ROM、或DVD-ROM;易失性或非易失性存储器介质,诸如RAM(例如,SDRAM、RDRAM、SRAM等)、ROM等;以及经由传输介质或信号(诸如电信号、电磁信号、或数字信号)可访问、经由通信介质(诸如网络和/或无线链路)可传达的介质。图15中的计算机可访问介质120可存储文件系统软件14(例如,包括分配器20、API 22、和/或命令接口24)、分配策略26、和自动策略表100中的一个或多个。
一旦完全理解了以上公开,对于本领域的技术人员,许多变更和修改将变得清楚。所附权利要求旨在被解释以支持所有这样的变更和修改。
权利要求
1.一种计算机可访问介质包括指令,所述指令当被执行时接收请求来为文件分配一个或多个块,其中,至少一个分配策略被分配给该文件,其中,分配策略指定将在其上分配所述块的一个或多个存储单元,如果多于一个存储单元被指定,则控制指示指示一种在存储单元之中进行选择的机制;和根据所述分配策略分配块。
2.如权利要求1所述的计算机可访问介质,其中,文件的i节点指定分配策略。
3.如权利要求2所述的计算机可访问介质,其中,i节点指定用于间接块请求的第一分配策略和用于数据块请求的第二分配策略,其中,所述请求包括请求是对于间接块还是数据块的指示,其中,所述指令当被执行时根据所述指示选择第一分配策略或第二分配策略。
4.如权利要求1所述的计算机可访问介质,其中,所述指令当被执行时如果分配策略为空,则检查对应于包括该文件的文件集的文件集分配策略。
5.如权利要求4所述的计算机可访问介质,其中,所述指令当被执行时如果文件集分配策略为空,则检查对应于包括该文件集的文件系统的文件系统分配策略。
6.如权利要求5所述的计算机可访问介质,其中,所述指令当被执行时如果文件系统分配策略为空,则使用缺省分配策略。
7.如权利要求1所述的计算机可访问介质,其中,所述指令当被执行时如果分配策略为空,则检查对应于包括该文件的目录的目录分配策略。
8.如权利要求1所述的计算机可访问介质,其中,所述指令当被执行时确定在文件的创建期间确定是否指定分配策略的自动分配;和响应于确定了指定自动分配来分配分配策略。
9.如权利要求8所述的计算机可访问介质,其中,确定是否指定自动分配的步骤包括检查文件属性的表和对应的分配策略。
10.如权利要求9所述的计算机可访问介质,其中,文件属性包括文件名后缀。
11.如权利要求9所述的计算机可访问介质,其中,文件属性包括文件尺寸。
12.如权利要求1所述的计算机可访问介质,其中,存储单元包括卷。
13.如权利要求1所述的计算机可访问介质,其中,控制指示指示按在分配策略中给出的顺序来选择存储单元。
14.如权利要求1所述的计算机可访问介质,其中,控制指示指示按在分配策略中指定的最空存储单元来选择存储单元。
15.如权利要求1所述的计算机可访问介质,其中,控制指示指示存储单元将被扫描以找到最小尺寸盘区,具有最小尺寸盘区的存储单元将被选择,如果没有找到最小尺寸的盘区,则将按在分配策略中给出的顺序来选择存储单元。
16.一种方法,包括接收请求来为文件分配一个或多个块,其中,至少一个分配策略被分配给该文件,其中,所述分配策略指定将在其上分配所述块的一个或多个存储单元,如果多于一个存储单元被指定,则控制指示指示一种在存储单元之中进行选择的机制;和根据所述分配策略分配块。
17.如权利要求16所述的方法,其中,文件的i节点指定分配策略。
18.如权利要求17所述的方法,其中,i节点指定用于间接块请求的第一分配策略和用于数据块请求的第二分配策略,其中,所述请求包括请求是对于间接块还是数据块的指示,其中,该方法还包括根据所述指示选择第一分配策略或第二分配策略。
19.如权利要求16所述的方法,还包括改变分配给文件的分配策略,其中,所述分配在分配发生时有效地响应分配策略。
20.一种计算机可访问介质包括指令,所述指令当被执行时接收请求来为文件系统中的文件分配一个或多个块;和根据分配策略来分配所述块,其中,分配策略在文件系统中两个或更多级别的粒度上可指定。
21.如权利要求20所述的计算机可访问介质,其中,粒度的第一级别包括文件。
22.如权利要求21所述的计算机可访问介质,其中,粒度的第二级别包括包含该文件的文件集。
23.如权利要求21所述的计算机可访问介质,其中,粒度的第二级别包括包含该文件的文件系统。
24.如权利要求21所述的计算机可访问介质,其中,粒度的第二级别包括该文件的盘区。
25.如权利要求21所述的计算机可访问介质,其中,粒度的第二级别包括该文件的范围。
26.一种方法,包括产生在文件系统中使用的一个或多个分配策略,其中,分配策略控制将文件系统数据分配到与该文件系统相关联的多个存储单元;和将分配策略分配给文件系统数据。
27.如权利要求26所述的方法,其中,所述一个或多个分配策略中的每个指定具有一个或多个存储特征的多个存储单元中的一个或多个,籍此,特定文件系统数据的分配与所述一个或多个存储特征相互关联。
28.如权利要求27所述的方法,其中,所述一个或多个存储特征包括存储单元的性能特征。
29.如权利要求27所述的方法,其中,所述一个或多个存储特征包括存储单元的可靠性特征。
30.如权利要求27所述的方法,其中,所述一个或多个存储特征至少包括分配给存储单元的第一存储特征。
31.如权利要求27所述的方法,其中,第一存储特征由管理员分配。
32.如权利要求26所述的方法,其中,文件系统数据包括主文件集和至少一个其它文件集,其中,分配分配策略的步骤包括将第一分配策略分配给主文件集和将第二分配策略分配给所述其它文件集。
33.如权利要求32所述的方法,其中,第一分配策略指定多个存储单元中的第一一个或多个,第二分配策略指定除了所述多个存储单元中的第一一个或多个之外的所述多个存储单元中的第二一个或多个。
34.如权利要求26所述的方法,其中,文件系统数据包括文件数据和元数据,其中,分配分配策略的步骤包括将第一分配策略分配给文件数据和将第二分配策略分配给元数据。
35.如权利要求34所述的方法,其中,第一分配策略指定多个存储单元中的第一一个或多个,第二分配策略指定多个存储单元中的第二一个或多个,其中,多个存储单元中的第二一个或多个具有比多个存储单元中的第一一个或多个更高的可靠性特征。
36.如权利要求24所述的方法,其中,文件系统包括一个或多个日志,其中,分配分配策略的步骤包括将第一分配策略分配给所述一个或多个日志和将所述多个分配策略中的其它分配策略分配给其它文件系统数据。
37.如权利要求36所述的方法,其中,第一分配策略指定多个存储单元中的第一一个或多个,第二分配策略指定除了所述多个存储单元中的第一一个或多个之外的所述多个存储单元中的第二一个或多个。
38.如权利要求36所述的方法,其中,所述一个或多个日志包括意向日志。
39.如权利要求36所述的方法,其中,所述一个或多个日志包括文件变化日志。
40.如权利要求26所述的方法,其中,文件系统数据包括名称流和对应的文件数据,其中,分配分配策略的步骤包括将第一分配策略分配给名称流和将第二分配策略分配给对应的文件数据。
41.如权利要求26所述的方法,其中,存储单元包括卷,其中,第一分配策略导致在任意卷上的分配。
42.如权利要求26所述的方法,其中,产生的步骤包括将一个或多个管理控制应用于多个分配策略中的一个或多个。
全文摘要
一种计算机可访问介质可包括指令,所述指令当被执行时接收请求来为文件分配一个或多个块。至少一个分配策略被分配给该文件,其中,分配策略指定将在其上分配块的一个或多个存储单元。此外,如果多于一个存储单元指定,则分配策略包括控制指示,其指示一种在存储单元之中进行选择的机制。这些指令当被执行时还可根据分配策略分配块。在另一实现中,一种计算机可访问介质包括指令,所述指令当被执行时接收请求来为文件系统中的文件分配一个或多个块并根据分配策略来分配块。分配策略在文件系统中两个或更多级别的粒度上可指定。
文档编号G06F17/30GK1816795SQ200480019220
公开日2006年8月9日 申请日期2004年5月28日 优先权日2003年5月30日
发明者查尔斯·H·西尔弗斯, 罗纳德·S·卡尔, 约翰·A·科尔格罗夫 申请人:维瑞泰斯操作公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1