专利名称:通过条带式文件系统中的容量平衡进行数据分布的制作方法
技术领域:
本发明涉及条带式文件系统,尤其涉及跨条带式文件系统的多个节点的容量平衡。
背景技术:
存储系统通常包括一个或多个存储器件,根据需要,可向所述存储器件中输入信息并从其中获得信息。存储系统包括存储操作系统,该存储操作系统通过尤其是调用存储操作来功能性地组织该系统以支持该系统所实现的存储服务。存储系统可按照各种存储架构实现,所述存储架构包括但不限于,网络连接存储(NAS)环境、存储区域网络(SAN)和直接连接到客户机或主机计算机的磁盘组件。存储器件通常是组织为磁盘阵列的磁盘驱动器,其中术语“磁盘”通常描述自包含旋转式磁介质存储器件。在本上下文中术语磁盘与硬盘驱动器(HDD)或直接访问存储器件(DASD)同义。应当注意,在替代实施例中,存储器件可包括固态器件,例如闪存、电池备份非易失性随机存取存储器等。因此,尽管此描述按照磁盘来撰写,然而那些实施例应当仅被视为示例性的。存储系统的存储操作系统可实现高级别模块,诸如文件系统,以将存储在卷上的信息逻辑地管理为诸如文件和逻辑单元的数据容器的分层结构。例如,每个“磁盘上”文件可被实现为被配置成存储信息(诸如文件的实际数据)的数据结构(即,磁盘块)的组。 这些数据块被组织在由文件系统维护的卷块号(vbn)空间中。文件系统还可向文件中的每个数据块分配相应的“文件偏移量”或文件块号(fbn)。文件系统通常以每文件为基础分配 fbn的序列,而vbn是在更大的卷地址空间上分配的。文件系统将vbn空间内的数据块组织为“逻辑卷”;每个逻辑卷可以与其自己的文件系统相关联,尽管不必然如此。已知的文件系统类型是不复写磁盘上的数据的任意位置写入(write-anywhere) 文件系统。如果数据块被从磁盘取回(读取)到存储系统的存储器中并用新数据而“变无效”(即,更新或修改),则该数据块此后被存储(写入)到磁盘上的新位置以优化写入性能。任意位置写入文件系统在开始时可假定一种最优布局,使得数据被基本上连接地布置在磁盘上。该最优磁盘布局带来针对磁盘的高效的访问操作,尤其是对于顺序读取操作。被配置成在存储系统上操作的任意位置写入文件系统的示例是可从加利福尼亚州桑尼维尔市的NetApp公司获得的任意位置写入文件布局(WAFL )文件系统。该存储系统还可被配置成根据客户机/服务器信息传递模型来操作以由此允许许多客户机访问存储在该系统上的数据容器。在此模型中,客户机可包括在通过计算机网络“连接”到该存储系统的计算机上执行的应用(诸如数据库应用),该计算机网络诸如是点到点链路、共享局域网(LAN)、广域网、或在诸如因特网的公共网络上实现的虚拟专用网络(VPN)。每个客户机可通过经由网络向系统发出基于文件和基于块的协议消息(以包的形式)来请求该存储系统的服务。多个存储系统可互连以提供被配置成服务许多客户机的存储系统环境。每个存储系统可被配置成服务一个或多个卷,其中每个卷存储一个或多个数据容器。然而通常客户机所发出的大量的数据访问请求会被定向到由该环境的特定存储系统服务的少量的数据服务。对这一问题的一种解决方案是在环境的所有存储系统之间分布由该特定存储系统服务的卷。这进而在所有存储系统间分布了数据访问请求以及服务这些请求所需的处理资源,从而减少了每个存储系统上的各自的处理负载。然而,当该存储系统环境的客户机重度访问仅单个数据容器(诸如文件)时,出现显著的不足。因此,视图服务定向到该数据容器的请求的存储系统可能超出其处理资源并变得负担过重,并伴随着速度和性能的降级。一种克服具有被重度利用的单个数据容器的不足的技术是跨被配置成条带式卷集的多个卷来条带化数据容器,其中每个卷由不同的存储系统服务,从而在多个存储系统间分布单个数据容器的负载。在上面结合的标题为“STORAGE SYSTEM ARCHITECTURE FOR STRIPING DATA CONTAINER CONTENT ACROSS VOLUMES OF A CLUSTER (用于跨集群的卷来条带化数据容器内容的存储系统架构)”的公开号为US2005-01i^932的美国专利申请中描述了一种用于数据容器条带化的技术。通常,当条带式卷集被首次生成时,服务该条带式卷集的组成卷的组成节点中的每个组成节点利用相同的或类似的生成技术。即,每个节点通常包括相同或基本相同的硬件和/或软件配置。因此,节点可被视为同构的,因为每个都彼此基本相同。当在后来的时间点处扩展条带化卷集且针对新添加的节点顾客使用更晚(较新)产生的硬件和/或软件时,这样的系统的显著不足出现了。因为新添加的节点利用最新的硬件和/或软件,与集群的原始节点相比它们通常具有额外的计算能力。更一般地,当形成任意异构集群时,即,当集群的节点利用具有明显不同的功能和/或处理器能力的系统时,这个问题会是明显的。在这样的异构系统中,通常等量地利用每个节点来进行条带化操作。当更晚生成的节点会有更多的处理器能力未被充分利用或未被利用时,该明显不足出现了。使用新的和/或更快的节点的优点因此被浪费,因为它们实际上就像它们与集群的能力最差的节点(即,原始节点)相似地被利用。为了避免处理能力的这种浪费,用户必须确保所有节点是同构型的。例如,这可以通过购买较老的节点或用更新的型号取代较老的节点来实现。这两种解决方案都不是最优的,并且提高了集群式存储器的总持有成本。
发明内容
通过提供被配置成在条带式文件系统中提供容量平衡的数据分布技术,本发明克服了现有技术的不足。条带式卷集与一组条带化规则相关联,该条带化规则包括可以被实现的条带化数据结构,例如作为标识卷的有序列表和数据被条带化到其的相关联的节点的条带化表。集群的每个节点包括适于服务SVC的卷的磁盘元素和适于将数据访问请求重定向到集群的任何解模块(de-module)的网络元素。将数据容器的内容在SVS的卷间分配以由此提升由集群提供的存储服务的效率。为该目的,该条带化表指定数据容器内容跨多个卷被分配为条带的方式。在操作中,当新节点被添加到条带式卷集中时,使条带化表演进以容纳新添加的节点。在描述性实施例中,集群的每个节点与将例如,该节点可用的处理器速度、处理器数量、硬件配置和/或软件纳入考虑的容量值相关联。在条带化表的演进过程中,该技术以如此方式在节点间分配该SVS的条带使得根据每个节点的容量值将它们最优地分配给节点。例如,在其中第一节点的容量值为100而第二节点的容量值为200的双节点系统中,与第一节点相比第二节点应当服务两倍的条带以实现最佳性能。通过利用包括容量值的演进式条带化表,可在条带式卷集中将异构节点利用到其最大容量,由此减少未被充分利用的处理资源。
参考下面的描述,结合附图,可以更好地理解本发明的上述和进一步的优点,在附图中类似的参考标号指示等同或功能上类似的元件。图1是根据本发明的描述性实施例的多个节点被互连为集群的示意框图;图2是根据本发明的描述性实施例的节点的示意框图;图3是可与本发明的描述性实施例一起有利地使用的存储操作系统的示意框图;图4是示出根据本发明的描述性实施例的集群结构(CF)消息的格式的示意框图;图5是示出根据本发明的描述性实施例的数据容器句柄的格式的示意框图;图6是根据本发明的描述性实施例的示例性inode的示意框图;图7是根据本发明的描述性实施例的示例性缓冲区树的示意框图;图8是可与本发明一起有利地使用的文件的缓冲区树的描述性实施例的示意框图;图9是根据本发明的描述性实施例的示例性聚集(aggregate)的示意框图;图10是根据本发明的描述性实施例的聚集的示例性磁盘上布局的示意框图;图11是示出根据本发明的描述性实施例的管理进程的集合的示意框图;图12是根据本发明的描述性实施例的卷位置数据库(VLDB)卷条目的示意框图;图13是根据本发明的描述性实施例的VLDB聚集条目的示意框图;图14是根据本发明的描述性实施例的条带式卷集(SVS)的示意框图;图15是根据本发明的描述性实施例的VLDB SVS条目的示意框图;图16是示出根据本发明的描述性实施例的存储在SVS的卷上的文件内容的周期性稀疏的示意框图;图17是示出根据本发明的描述性实施例的数据容器跨SVS的条带化的示意框图;图18是详细示出根据本发明的描述性实施例的基于容量平衡执行数据分布的过程的步骤的流程图;以及图19A-19D是示出根据本发明的描述性实施例的基于节点的添加而使条带化表演进的示意框图。
具体实施方式
Α.集群环境图1是根据本发明的描述性的实施例的多个节点200被互连为集群100并被配置成提供与信息在存储器件上的组织有关的存储服务的示意框图。节点200包括各种功能部件,这些功能部件合作以提供集群100的分布式存储系统架构。为此,每个节点200被大体组织为网络元件(N模块310)和磁盘元件(D模块350)。N模块310包括使节点200能够通过计算机网络140连接到客户机180的功能,而每个D模块350连接到一个或多个存储器件,诸如磁盘阵列120的磁盘130。节点200通过集群交换结构150互连,在该描述性的实施例中集群交换结构150可体现为千兆以太网交换机。在2003年12月30日公告的、M. Kazar 等人的、标题为“METHOD AND SYSTEM FOR RESPONDING TO FILE SYSTEM REQUESTS(用于响应文件系统请求的方法和系统)”的美国专利6,671,773中大体描述了一种示例性的分布式文件系统架构。应当注意,尽管在描述性的集群100中示出了相等数量的N模块和D模块,然而根据本发明的各种实施例可存在不同数量的N模块和/或D模块。例如,可以存在多个N模块和/或D模块互连成不反应N模块和D模块间的一一对应的集群配置100。因此,节点200包括一个N模块和一个D模块的描述应当只被当做描述性的。客户机180可以是被配置成根据客户机/服务器信息传递模型与节点200交互的通用计算机。即,每个客户机可向节点请求服务,而节点可通过经由网络140交换包,返回客户机所请求的服务的结果。客户机在访问文件和目录形式的信息时可通过传输控制协议 /因特网协议(IP)发出包括基于文件的访问协议(诸如,公共因特网文件系统(CIFS)协议或网络文件系统(NFS)协议)的包。替代地,客户机在访问块形式的信息时可发出包括基于块的访问协议(诸如通过TCP封装的小型计算机系统接口(SCSI)协议(iSCSI)和通过光纤信道(FCP)封装的SCSI)的包。B.存储系统节点图2是描述性地体现为存储系统的节点200的示意框图,该存储系统包括由系统总线223互连的多个处理器222a,b、存储器224、网络适配器225、集群访问适配器226、存储适配器2 和本地存储器230。本地存储器230包括由该节点用来本地存储由作为用户模式应用1100(参见图11)执行的一个或多个管理进程提供的配置信息(例如,在配置表 235中)的一个或多个存储器件(诸如磁盘)。集群访问适配器2 包括适用于将节点200 耦合到集群100的其他节点的多个端口。在描述性的实施例中,使用以太网作为集群化协议和互连介质,然而对本领域的技术人员而言,显然,在本文所述的集群架构内可利用其他类型的协议和互连。在其中N模块和D模块是在分开的存储系统或计算机上实现的替代实施例中,集群访问适配器2 被N模块/D模块用于与集群100中的其他N模块/D模块通
fn °每个节点200被描述性地体现为执行存储操作系统300的双处理器存储系统,其优选实现高级别模块,诸如文件系统,以将信息逻辑地组织为磁盘上的命名目录、文件和叫做虚拟磁盘的特定类型的文件(以下一般称为“块”)的分层结构。然而,对本领域的技术人员而言,显然,节点200可替代地包括单个或多于两个处理器系统。描述性地,一个处理器22 在该节点上执行N模块310的功能,而另一个处理器222b执行D模块350的功能。存储器2M描述性地包括能由处理器和适配器寻址的存储位置以用于存储与本发明相关联的软件程序代码和数据结构。该处理器和适配器又可包括被配置成执行该软件代码和操纵该数据结构的处理元件和/或逻辑电路。存储操作系统300(该系统的一部分通常驻留于存储器中并由该处理元件执行)尤其是通过调用存储操作以支持由该节点实现的存储服务来功能性地组织该节点200。对本领域的技术人员而言,显然,可使用其他处理和存储器装置(包括各种计算机可读存储介质,包括例如闪存、固态存储器等)来存储和执行与本文所述的发明有关的程序指令。网络适配器225包括适用于通过点到点链路、广域网、通过公共网络(因特网)实现的虚拟专用网络或共享局域网将节点200耦合到一个或多个客户机180的多个端口。网络适配器225因此可包括将节点连接到网络所需的机械、电气和信令电路。描述性地,计算机网络140可被体现为以太网或光纤信道(FC)网络。每个客户机180可通过根据预定义协议(诸如TCP/IP)来交换分离的数据帧或包来通过网络140与节点通信。存储适配器2 与节点200上执行的存储操作系统300合作以访问客户机所请求的信息。该信息可存储在任何类型的可写入存储器件介质附加阵列上,诸如录像带、光学、 DVD、磁带、磁泡存储器、电子随机存取存储器、微电子机械和适于存储信息(包括数据和奇偶校验信息)的任何其他类型的存储器。然而,如本文描述性地描述的,该信息优选存储在阵列120的磁盘130上。该存储适配器包括具有通过I/O互连布置(诸如传统的高性能FC 链路拓扑结构)耦合到磁盘的输入/输出(I/O)接口电路的多个端口。信息在每个阵列120上的存储优选地被实现为一个或多个存储“卷”,所述卷包括物理存储磁盘130的集合,这些物理存储磁盘合作以限定卷(或多个卷)上的卷块号(vbn) 空间的总的逻辑布置。每个逻辑卷通常(尽管非必然)与其自己的文件系统相关联。逻辑卷/文件系统内的磁盘通常被组织为一个或多个组,其中每个组可以作为独立(或廉价) 冗余磁盘阵列(RAID)来操作。大多数RAID实现(诸如RAID-4级实现)通过跨越RAID组中给定数量的物理磁盘的数据“条带”的冗余写入以及与条带式数据有关的等价信息的恰当存储增强了数据存储的可靠性/完整性。RAID实现的一个描述性示例是RAID-4级实现, 然而应当理解,根据本文所述的发明原理,可以使用其他类型和级别的RAID实现。C.存储操作系统为便于访问磁盘130,存储操作系统300实现任意位置写入文件系统,该任意位置写入文件系统与一个或多个虚拟化模块合作以“虚拟化”磁盘130提供的存储空间。该文件系统逻辑地将该信息组织为该磁盘上的命名目录和文件上的分层结构。每个“磁盘上” 文件可被实现为被配置成存储诸如数据的信息的磁盘块组,而目录可被实现为特定格式化的文件,在该文件中存储名称和到其他文件和目录的链接。虚拟化模块(或多个虚拟化模块)允许文件系统进一步逻辑地将信息组织为被输出为命名逻辑单元号(Iun)的磁盘上的块的分层结构。在描述性实施例中,该存储操作系统优选为可从加利福尼亚州桑尼维尔市的 NetApp公司获得的NetApp Data ONTAP 操作系统,该操作系统实现了任意位置写入布局(WAFL )文件系统。然而,可以清楚地构想,可增强任何合适的存储操作系统以根据本文所述的发明原理使用。因此,当采用术语“0ΝΤΑΡ”时,应当将其宽泛地指的是指能以其他方式适用于本发明的教导的任何存储操作系统。图3是可与本发明一起有利地使用的存储操作系统300的示意框图。该存储操作系统包括被组织为形成集成网络协议栈或更一般地多协议引擎325的一系列软件层,该集成网络协议栈或多协议引擎为客户机提供数据路径以使用块和文件访问协议来访问存储在节点上的信息。该多协议引擎包括网络驱动器(例如,千兆级以太网驱动器)的介质访问层312、TCP层316和用户数据报协议(UDP)层315,该介质访问层312接口连接到网络协议层,诸如IP层314及其支持传送机制。文件系统协议层提供多协议文件访问,并且为该目的,包括对直接访问文件系统(DAre)协议318、NFS协议320、CIFS协议322和超文本传输协议(HTTP)协议324的支持。VI层3 实现VI架构以提供直接访问传送(DAT)能力,诸如RDMA,如DAFS协议318所需的那样。iSCSI驱动器层3 通过TCP/IP网络协议层提供块协议访问,而FC驱动器层330接收并传送去往和来自该节点的块访问请求和响应。 FC和iSCSI驱动器提供FC专用的和iSCSI专用的对块的访问控制,并因此管理在访问节点 200上的块时Iun到iSCSI或FCP的输出,或替代地到iSCSI和FCP两者的输出。此外,存储操作系统包括被组织为形成存储服务器365的一系列软件模块,该存储服务器365提供用于访问存储在节点200的磁盘130上的信息的数据路径。为该目的, 存储服务器365包括与卷条带化模块(VSM) 370具有合作关系的文件系统模块360、RAID系统模块380和磁盘驱动器系统模块390。RAID系统380根据I/O操作管理去往和来自卷/ 磁盘的信息存储和取回,而磁盘驱动器系统390实现磁盘访问协议,诸如例如SCSI协议。 VSM 370描述性地实现条带式卷集(SVS)。如本文进一步描述的,VSM与文件系统360合作以使存储服务器365能够服务该SVS的卷。具体而言,VSM 370实现LocateO函数375以计算数据容器内容在SVS卷中的位置,从而确保由集群服务的这些内容的一致性。文件系统360通过与被描述性地体现为例如虚拟磁盘(vdisk)模块(未示出)和 SCSI目标模块335的一个或多个虚拟化模块的交互来实现存储操作系统300的虚拟化系统。响应于用户(系统管理员)向节点200发出命令,vdisk模块允许通过管理接口的访问,该管理接口诸如为管理框架1110的用户接口(参见图11)。SCSI目标模块335通常被布置在FC和iSCSI驱动器3观、330和文件系统360之间以提供块(Iim)空间和文件系统空间之间的虚拟化系统的转换层,其中Iim被表示为块。描述性地,文件系统360是基于消息的系统,该系统提供逻辑卷管理能力以在访问存储在诸如磁盘的存储器件上的信息时使用。即,除了提供文件系统语义外,文件系统 360提供通常与卷管理器相关联的功能。这些功能包括(i)磁盘的聚集,(ii)磁盘的存储带宽的聚集,以及(iii)可靠性保证,诸如镜像和/或奇偶校验(RAID)。描述性地,文件系统360实现具有磁盘上格式表示的WAFL文件系统(后文一般称为“任意位置写入文件系统”),该格式表示是使用例如4千字节(KB)块和使用索引节点(“inode”)的基于块的, 以标识文件和文件属性(诸如创建时间、访问许可、大小和块位置)。该文件系统使用文件来存储描述其文件系统的布局的元数据;这些元数据文件尤其包括inode文件。使用文件句柄(即,包括inode号的标识符)来从磁盘取回inode。泛言之,该任意位置写入文件系统的所有inode被组织成inode文件。文件系统 (fs)信息块指定信息在该文件系统中的布局并包括含有该文件系统的所有其他inode的文件的inode。每个逻辑卷(文件系统)具有fsinfo块,该fsinfo块优选存储在固定位置处,例如在RAID组内的固定位置处。inode文件的inode可直接引用(指向)该inode文件的数据块或可引用该inode文件的间接块,该间接块又进而引用该inode文件的数据块。 在^iode被嵌入该inode文件的每个数据块中,其中每个都可引用间接块,该间接块又引用
9文件的数据块。可操作地,来自客户机180的请求被作为包通过计算机网络140转发并到达节点 200,在该处它在网络适配器225处被接收。(层312或层330的)网络驱动器处理该包,并且如果恰当的话,则将其传递给网络协议和文件访问层以在转发到任意位置写入文件系统 360之前进行进一步处理。在此,如果所请求的数据没有驻留于“核内”,即存储器224中, 则该文件系统生成操作以从磁盘130加载(取回)该数据。如果该信息不在存储器中,则文件系统360使用inode号索引到inode文件中以访问恰当的条目并取回逻辑vbn。然后该文件系统将包括该逻辑vbn的消息结构传递到RAID系统380 ;该逻辑vbn被映射到磁盘标识符和磁盘块号(磁盘,dbn)并被发送至磁盘驱动器系统390的适当的驱动器(例如, SCSI)。该磁盘驱动器从该指定的磁盘130访问该dbn并将所请求的数据块(或多个数据块)加载到存储器中以由该节点处理。在完成该请求时,节点(和操作系统)通过网络140 向客户机180返回应答。应当注意,上面描述的执行对在该节点处接收的客户机请求的数据存储访问所需的通过存储操作系统层的软件“路径”可替代地用硬件实现。即,在本发明的替代实施例中,可将存储访问请求数据路径实现为体现在现场可编程门阵列(FPGA)或专用集成电路 (ASIC)内的逻辑电路。这类硬件实现增加了节点200响应于客户机180发出的请求提供的存储服务的性能。而且,在本发明的另一替代实施例中,适配器225、2观的处理元件可被配置成分别从处理器222卸载包处理和存储访问操作中的一些或全部,从而增加节点提供的存储服务的性能。可以清楚地构想,本文所述的各种进程、架构和过程可以用硬件、固件或软件实现。如本文中所使用的那样,术语“存储操作系统” 一般指能在计算机上操作以执行存储功能的计算机可执行代码,该存储功能管理数据访问并且在节点200的情况下可实现通用操作系统的数据访问语义。该存储操作系统还可被实现为微内核、在通用操作系统(诸如UNIX or Windows ΝΓ )上操作的应用程序、或为具有可配置功能的通用操作系统, 其被配置成用于如本文所述的存储应用。此外,应该理解,对本领域的技术人员来说,本文所述的发明可应用于任何类型的专用(例如,文件服务器、文件管理器或存储服务设备)或通用计算机,包括独立计算机或其一部分,体现为存储系统或包括存储系统。而且,本发明的教导可适用于各种存储系统架构,包括但不限于网络连接存储环境、存储区域网络和直接连接到客户机或主机计算机的磁盘组件。术语“存储系统”应被宽泛地认为除了被配置成执行存储功能并与其他设备或系统相关联的任何子系统之外还包括这些布置。应当注意,尽管本描述是从任意位置写入文件系统方面来写的,然而本发明的教导可在任何合适的文件系统内采用,包括原地写入文件系统。D. CF 协议在描述性实施例中,存储服务器365被体现为存储操作系统300的D模块350以服务阵列120的一个或多个卷。此外,多协议引擎325被体现为N模块310以(i)执行关于客户机经由网络140发出的输入数据访问请求包的协议终止,以及(ii)将那些数据访问请求重定向到集群100的任何存储服务器365。而且,N模块310和D模块350合作以提供集群100的高度可扩展性、分布式存储系统架构。为该目的,每个模块包括适于实现模块间的集群内通信的集群结构(CF)接口模块340a,b,集群内通信包括用于本文所述的数据容器条带化操作的D模块到D模块通信。N模块310的协议层(例如,NFS/CIFS层和iSCSI/FC层)用作协议服务器,该协议服务器将来自客户机的基于文件和基于块的数据访问请求转换为CF协议消息用于与D 模块350进行通信。即,N模块服务器将输入的数据访问请求转换为被CF接口模块340嵌入在CF消息内的文件系统原语操作(命令)以传输到集群100的D模块350。注意,CF接口模块340合作以提供跨集群100内的所有D模块350的单一文件系统镜像。因此,接收客户机请求的N模块的任何网络端口可访问位于集群的任何D模块350上的单个文件系统镜像内的任何数据容器。进一步地参考描述性实施例,N模块310和D模块350被实现为存储操作系统300 的分开调度的进程;然而,在替代实施例中,这些模块可被实现为单个操作系统进程内的代码段。描述性地,N模块和D模块之间的通信因此通过在模块间传递的消息的使用而生效, 尽管在不同节点的N模块和D模块间的远程通信的情况下,这样的消息传递在集群交换结构150上发生。由存储操作系统提供的用于在模块(进程)间传输消息的一种已知的消息传递机制是进程间通信(IPC)机制。描述性地,与该IPC机制一起使用的协议是通用文件和/或基于块的“不可知”CF协议,其包括构成CF应用编程接口(API)的方法/功能的集合。这样的不可知协议的示例是可从NetApp公司获得的SpinFS和SpinNP协议。CF接口模块340实现用于在集群100的模块间传递文件系统命令的CF协议。描述性地,通信通过D模块将CF API暴露而被实现,其中N模块(或另一D模块)发出调用到该CF API。为该目的,CF接口模块340被组织为CF编码器和CF解码器。CF编码器,例如 N模块310上的CF接口 340a的CF编码器,将CF消息封装为(i)本地过程调用(LPC),当向在同一节点200上驻留的D模块350传递文件系统命令时,或(ii)远程过程调用(RPC), 当向在集群100的远程节点上驻留的D模块传递命令时。在任一情况下,D模块350上的 CF接口 340b的CF解码器解封装该CF消息并处理该文件系统命令。图4是示出根据本发明的实施例的CF消息400的格式的示意框图。CF消息400 被描述性地用于在集群100的远程模块间通过交换结构150进行RPC通信;然而,应当理解,术语“CF消息”可通常用于指集群的模块间的LPC和RPC通信。CF消息400包括介质访问层402、IP层404、UPD层406、可靠连接(RC)层408和CF协议层410。如所指出的,该 CF协议是通用文件系统协议,其传递与客户机访问存储在集群100上的数据容器的请求内包含的操作有关的文件系统命令;CF协议层410是承载该文件系统命令的消息400的一部分。描述性地,CF协议是基于数据报的,并且因此涉及消息或“信包”以可靠方式从源(例如,N模块310)到目的地(例如,D模块350)的传输。RC层408实现适于根据无连接协议 (诸如UDP 406)处理这些信包的可靠传送协议。使用数据容器句柄在文件系统中访问数据容器(例如文件)。图5是示出数据容器句柄500的格式的示意框图,该数据容器句柄包括SVS ID字段502、inode号字段504、唯一标识符(unique-ifier)字段506、条带式标志字段508和条带化世代号(印och number) 字段510。SVS ID字段502包含数据容器所驻留的SVS(在集群100内)的全局标识符。 Inode号字段504包含与该数据容器有关的(在inode文件内的)inode的inode号。唯一标识符字段506包含单调增加的号,该号唯一标识数据容器句柄500。唯一标识符在inode号已被删除、重用并重新分配给新数据容器的情况下特别有用。唯一标识符将特定数据容器中的那个重新使用的inode号与那些字段的可能的以前使用区分开。描述性地,条带式标志字段508是标识该数据容器是否是条带化的布尔值。条带化世代号字段510指示对于其中该SVS对不同的数据容器采用不同的条带化技术的实施例来说供这个数据容器所使用的适当的条带化技术。E.文件系统组织在描述性实施例中,数据容器在该任意位置写入文件系统中被表示为适合于在磁盘130上存储的inode数据结构。图6是inode 600的示意框图,该inode优选包括元数据段605和数据段660。每个inodeeOO的元数据段605中存储的信息描述该数据容器(例如,文件)并且因此包括文件的类型(例如,正常、目录、vdisk)610、其大小615、时间戳(例如,访问和/或修改时间)620和该文件的持有关系,即,用户标识符(UID 625)和组ID (GID 630)。每个inode的数据段660的内容可被不同地解释,这取决于类型字段610内定义的文件类型(inode)。例如,目录inode的数据段660包含由该文件系统控制的元数据,而正常inode的数据段包含文件系统数据。在后一种情况下,数据段660包括与该文件相关联的数据的表示。具体而言,正常磁盘上的inode的数据段660可包括文件系统数据或指针,后者引用用于存储该文件系统数据的磁盘上的4KB数据块。每个指针优选为逻辑vbn以利于在访问磁盘上的数据时该文件系统和RAID系统380间的效率。给定inode的受约束的大小(例如,128字节),大小小于或等于64字节的文件系统数据在该inode的数据段内全部被表示。然而,如果该数据容器的内容的长度超出64字节但是小于或等于64KB,则该inode (例如,第一级inode)的数据段包括多达16个指针,每个指针引用磁盘上的4KB数据块。而且,如果数据的大小大于64KB但是小于或等于64兆字节(MB),则inode (例如, 第二级inode)的数据段660中的每个指针引用包含10M个指针的间接块(例如,第一级 Ll块),其中10M个指针中的每个指针引用磁盘上的4KB数据块。对于大小大于64MB的文件系统,inode(例如,第三级L3 inode)的数据块660中的每个指针引用包含10M个指针的双间接块(例如,第二级L2块),该10M个指针中的每个指针引用间接(例如,第一级 Li)块。该间接块又包含10M个指针,该10M个指针中的每个指针引用磁盘上的4KB数据块。当访问文件时,文件的每个块可从磁盘130加载到存储器224中。当磁盘上inode (或块)被从磁盘130加载到存储器224中时,其相应核心内 (in-core)结构嵌入磁盘上结构。例如,围绕inode 600的虚线指示该磁盘上inode结构的核心内表示。该核心内结构是存储该磁盘上结构加上管理该存储器内(但是不在磁盘上的)的数据所需的附加信息的存储器块。该附加信息可包括例如“无效(dirty)”位670。 在inode(或块)中的数据被更新/修改之后,如由例如写入操作所指示的那样,使用无效位670将该经修改的数据标记为“无效”以便该inode (块)随后可被“冲”(存储)到磁盘。图7是可与本发明一起有利地使用的文件的缓冲区树(buffer tree)的实施例的示意框图。缓冲区树是被加载到存储器22M中的文件(例如,文件700)的块的内部表示并由任意位置写入文件系统360保持。根(顶级)inode 702,如嵌入inode,引用间接(例如,第一级)块704。注意,可能存在附加的间接块级别(例如,第二级和第三级),这取决于文件的大小。这些间接块(和inode)包含指针705,指针705最终引用用于存储该文件的实际数据的数据块706。S卩,文件700的数据被包含在数据块中并且这些块的位置被存储在文件的间接块中。每个第一级间接块704可包含指向与IOM个数据块一样多的指针。 根据文件系统的“任意位置写入”性质,这些块可位于磁盘130上的任意位置。提供将底层物理卷分配为诸如节点200的存储系统的一个或多个虚拟卷(或灵活 (flexible)卷)的文件系统布局。在John K. Edwards等人的、转让给NetApp公司的、已于 2008 年 8 月 5 日公告的、标题为“EXTENSION OF WRITE ANYWHERE FILE SYSTEM LAYOUT (任意位置写入文件系统布局的扩展),,的美国专利7,409,494中描述了这种文件系统布局的一个示例。底层物理卷是包括该节点的一个或多个磁盘组(如RAID组)的聚集。该聚集有其自己的物理卷块号(pvbn)空间并在该pvbn空间内保持元数据,如块分配结构。每个灵活卷有其自己的虚拟卷块号(vvbn)空间并在该wbn空间内保持元数据,如块分配结构。 每个灵活卷是与容器文件相关联的文件系统,该容器文件是该聚集中包含由该灵活卷使用的所有块的文件。而且,每个灵活卷包括包含指向其他间接块或数据块的块指针的数据块和间接块。在一个实施例中,pvbn被用作存储在灵活卷中的文件(诸如文件700)的缓冲区树内的块指针。该“混合”灵活块实施例涉及在父间接块(例如,inode或间接块)中只插入pvbn。在逻辑卷的读取路径上,“逻辑”卷(vol)信息块具有引用一个或多个fsinfo块的一个或多个指针,每个fsinfo块又指向inode文件及其相应的inode缓冲区树。灵活卷上的读取路径通常相同,沿着pvbn(而不是vvbn)来找到块的适当位置;在此情况中,灵活卷的读取路径(及其相应的读取性能)与物理卷的读取路径(及其相应的读取性能)基本类似。从pvbn到磁盘,dbn的转换发生在存储操作系统300的文件系统/RAID系统边界处。在一个双vbn混合灵活卷实施例中,pvbn及其相应的wbn两者都被插入到文件的缓冲区树中的父间接块中。即,pvbn和wbn作为每个块指针的对被存储在具有指向其他块(例如,第一级(Li)块、inode文件第0级(LO)块)的指针的大多数缓冲区树结构中。 图8是可与本发明一起有利地使用的文件800的缓冲区树的描述性实施例的示意框图。根 (顶级)in0de 802,如嵌入inode,引用间接(例如,第一级)块804。注意,可能存在附加的间接块级别(例如,第二级、第三级),这取决于文件的大小。这些间接块(和inode)包含 pvbn/vvbn指针对结构808,该结构808最终引用用于存储文件的实际数据的数据块806。pvbn引用聚集的磁盘上的位置,而wbn引用灵活卷的文件内的位置。使用pvbn 作为间接块804中的块指针808提供读取路径方面的效率,而是用wbn块指针提供访问所需元数据的高效访问。即,当清空文件的块时,文件中的父间接块包含容易得到的vvbn块指针,这避免了与访问拥有者映射以执行pvbn到wbn转换相关联的等待时间;而在读取路径上,该pvbn可用。图9是可与本发明一起有利地使用的聚集900的实施例的示意框图。 Lun(块)902、目录904、qtree 906和文件908可被包含在诸如双vbn灵活卷的灵活卷910 内,该灵活卷又被包含在聚集900内。描述性地,聚集900被加层在RAID系统上,RAID系统由至少一个RAID丛950表示(取决于该存储配置是否被镜像),其中每个丛950包括至少一个RAID组960。每个RAID组还包括多个磁盘930,例如,一个或多个数据(D)磁盘和至少以一个(P)奇偶校验磁盘。而聚集900类似于传统存储系统的物理卷,灵活卷类似于该物理卷内的文件。艮口,CN 102460439 A说明 书11/17 页
聚集900可包括一个或多个文件,其中每个文件包含灵活卷910且其中被灵活卷消耗的存储空间的总和在物理上小于(或等于)总物理卷的大小。聚集利用定义由物理卷的磁盘所提供的块的存储空间的物理pvpn空间,而(在文件内的)每个嵌入的灵活卷利用逻辑wbn 空间来组织那些块,例如,作为文件。每个vvbn空间是与文件内的位置相对应的号的独立集合,然后将这些位置转换为磁盘上的dbn。因为灵活卷910还是逻辑卷,它有其自己在其 vvbn空间中的块分配结构(例如,有效、空间和总结映射)。容器文件是该聚集中包含被灵活卷使用的所有块的文件。容器文件是支持灵活卷的内部(对该聚集而言)特征;描述性地,每个灵活卷存在一个容器文件。类似于文件方法中的纯逻辑卷,该容器文件是该聚集中保持被该灵活卷所用的每一个块的隐藏文件(对用户来说不能访问)。该聚集包括包含灵活卷的子目录的描述性隐藏元数据根目录WAFL/fsid/filesystem file, storage label file具体而言,物理文件系统(WAFL)目录包括用于该聚集中每个灵活卷的子目录,其中子目录的名称是该灵活卷的文件系统标识符(fsid)。每个fsid子目录(灵活卷)包含至少两个文件,filesystem文件和存储标签文件。描述性地,该存储标签文件是包含类似于传统raid标签中所存储的元数据的元数据的4KB文件。换言之,该存储标签文件类似于 raid标签,并且因此包含有关该灵活卷的状态的信息,诸如,例如该灵活卷的名称、该灵活卷的通用唯一标识符(imid)和fsid、其是否在线、正在被创造或正在被损坏等。图10是聚集1000的磁盘上表示的示意框图。存储操作系统300(例如,RAID系统 380)组合pvbn的物理卷以创建聚集1000,其中pbvnl和2包括该聚集的“物理” volinfo 块1002。Volinfo块1002包含指向fsinfo块1004的指针,每个fsinfo块可表示该聚集的瞬像(snapshot)。每个fsinfo块1004包括指向包含多个文件的inode的inode文件 1006的块指针,该多个文件包括拥有者映射1010、有效映射1012、总结映射1014和空间映射1016以及其他特殊元数据文件。Inode文件1006还包括根目录1020和“隐藏”元数据根目录1030,后者包括具有与在其中用户不能“看到”的文件的灵活卷相关的文件的名称空间。隐藏元数据根目录包括WAFL/fsia/目录结构,该目录结构包含filesystem文件1040 和存储标签文件1090。注意,该聚集中的根目录1020为空;与该聚集相关的所有文件被组织在该隐藏元数据根目录1030内。除了被体现为具有被组织成容器映射的第一级块的容器文件之外,filesystem文件1040还包括引用被体现为灵活卷1050的各种文件系统的块指针。聚集1000在专门保留的inode号处保持这些灵活卷1050。每个灵活卷1050还在其灵活卷空间内具有专门保留的inode号,这些inode号尤其用于块分配位图结构。如上所述,块分配位图结构(例如, 有效映射1062、总结映射1064和空间映射1066)位于每个灵活卷内。具体而言,每个灵活卷1050具有与该聚集的inode文件结构/内容相同的inode 文件结构/内容,除了在隐藏元数据根目录1080中不存在拥有者映射并且没有WAFL/fsid/ filesystem file,storage Iabelfile目录结构。为该目的,每个灵活卷1050具有指向一个或多个fsinfo块10M的vol info块1052,每个fsinfo块可表示瞬像,以及该灵活卷的有效文件系统。每个fsinfo块又指向inode文件1060,如上所述,该inode文件具有与该聚集的inode结构/内容相同的inode结构/内容,除了上述不同之外。每个灵活卷1050有其自己的inode文件1060和具有相应inode号的不同inode空间,以及其自己的根(fsid)目录1070和可与其他灵活卷分开地导出的文件的子目录。聚集的隐藏元数据目录1030内包含的存储标签文件1090是如传统raid标签的类似工作的小文件。Raid标签包括有关该存储系统的物理信息,诸如卷名;该信息被加载到存储标签文件1090中。描述性地,存储标签文件1090包括相关联灵活卷1050的名称1092、该灵活卷的在线/离线状况1094、以及相关联的灵活卷的其他标识和状态信息 1096(其是否在正在被创建或损坏的过程中)。F. VLDB图11是描绘管理进程的集合的示意框图,管理进程作为用户模式应用1100在存储操作系统300上执行以为集群的节点提供配置信息(即,管理数据)的管理。为该目的, 该管理进程包括管理框架进程1110和卷位置数据库(VLDB)进程1130,每个进程利用链接为库的数据复制服务(RDB 1150)。管理框架1110经由命令行界面(CLI)和/或基于web 的图形用户界面(GUI)将用户提供给管理员1170界面。描述性地,该管理框架基于传统通用界面模型(CIM)对象管理器,该对象管理器将该实体提供给与节点200交互的用户/系统管理员以管理该集群100。VLDB 1130是跟踪集群100内的各种存储元件(例如,SVS、灵活卷、聚集等)的位置从而便于贯穿该集群路由请求的数据库进程。在描述性实施例中,每个节点的N模块310 访问配置表235,该配置表将数据容器句柄500的SVD ID 502映射到该集群内“拥有”(服务)该数据容器的D模块350。该VLDB包括多个条目,该多个条目又提供配置表235中的条目的内容;这些VLDB条目尤其跟踪灵活卷(下文一般称为“卷910”)和聚集900在该集群内的位置。这样的VLDB条目的示例包括VLDB卷条目1200和VLDB聚集条目1300。图12是示例VLDB卷条目1200的示意框图。条目1200包括卷ID字段1205、聚集 ID字段1210,并且在替代实施例中还包括附加字段1215。卷ID字段1205包含标识在卷位置进程中使用的卷910的ID。聚集ID字段1210标识包含由卷ID字段1205标识的卷的聚集900。同样,图13是示例性VLDB聚集条目1300的示意框图。条目1300包括聚集ID 字段1305、D模块ID字段1310,并且在替代实施例中还包括附加字段1315。聚集ID字段 1305包含集群100中的特定聚集900的ID。D模块ID字段1310包含服务(host)由聚集 ID字段1305所标识的特定聚集的D模块的ID。描述性地,VLDB实现了 RPD接口,例如,Sun RPC接口,该接口允许N模块310查询 VLDB 1130。当遇到未存储在其配置表中的数据容器句柄500的内容时,N模块向VLDB进程发送RPC。作为响应,VLDB1130将适当的映射信息返回到该N模块,该映射信息包括拥有该数据容器的D模块的ID。该N模块高速缓存在其配置表235中的信息并使用该D模块 ID来将输入请求转发到适当的数据容器。通过管理进程和RDB库用户模式应用1100的集合在集群范围基础上协调N模块310和D模块350之间的所有功能和交互。为该目的,该管理进程具有到RDB 1150的接口(与其紧密耦合)。该RDB包含为由该管理进程处理的管理数据提供持久对象存储(对象的存储)的库。值得注意,RDB 1150 跨集群100的所有节点200复制并同步该管理数据对象存储访问从而确保该RDB数据库图像在所有节点200上相同。在系统启动时,每个节点200将其接口和IP地址(它“拥有”的那些IP地址)的状况/状态记录到RDB数据库中。G.存储系统架构
15
提供描述性地包括跨集群100的多个节点200分布的两个或更多个卷910的存储系统架构。这些卷被组织成SVS并被配置为存储响应于由客户机180发出的多协议数据访问请求而由该集群所服务的数据容器(如文件和Iun)的内容。值得注意,将每个数据容器的内容在SVS的卷之间分配以由此提升该集群提供的存储服务的效率。为便于描述和理解本发明,以下将数据容器一般称为“文件”。SVS包含元数据卷(MDV)和一个或多个数据卷(DV)。MDV被配置成存储与存储在该SVS上的所有文件相关联的元数据(包括访问控制列表(ACL)和目录)的规范副本,而每个DV被配置成至少存储那些文件的数据内容。对于存储在该SVS上的每个文件,一个卷被指定CAV,并且为该目的,被配置成存储(“高速缓存”)与该文件相关联的某些、快速改变属性的元数据以由此卸载否则会被定向到MDV的访问请求。在本文描述的一个实施例中, 文件的CAV的确定基于一个简单规则将保持该文件的内容(数据)的第一条带的卷指定为该文件的CAV。这个简单的规则不仅方便,而且还提供了对小文件的最优化。即,如果该文件足够小到适合在所指定的条带宽度内,则CAV可以能够执行某些操作而不必必须与该 SVS的其他卷通信。在理想情况下,文件的数据的第一条带在该SVS的DV间分布以由此便于CAV指定在该SVS的卷间的均勻分布。在替代实施例中,跨越MDV和DV条带化文件的数据。在进一步替代实施例中,MDV可被消除,其中通常包含在MDV上的数据被分布在SVS的 DV间。图14是根据本发明的描述性实施例的SVS 1400的示意框图。SVS1400描述性地包括三个卷,即MDV 1405和两个DV 1410、1415。应当注意,在替代实施例中,根据本发明可利用附加和/或不同数量的卷。描述性地,MDV 1405存储多个inode,包括根目录(RD) inode 1420、目录(DIR) inode 1430、文件(F) inode 1425、1435、1445 和 ACLinode 1440。描述性地,这些inode中的每一个包括与inode相关联的元数据(M)。在该描述性实施例中, MDV 1405上的每个inode不包括数据⑶;然而,在替代实施例中,MDV可包括用户数据。相反,每个DV 1410,1415 只存储文件(F) inode 1425,1435,1445 禾Π ACL inodel440o注意,DV不存储目录或其他器件inode/构造,如符号链接;然而,每个DV的确存储F inode,且可存储ACL inode的高速缓存副本,所述高速缓存副本被布置在与它们的相应的inode在MDV 1405中的位置相同的位置。特定DV可不存储inode的副本,直到与该 inode相关联的数据容器的1/0请求被服务特定DV的D模块接收。而且,如同本文进一步描述的,根据SVS条带化规则周期性地稀疏这些F inode所表示的文件的内容。此外,因为对存储在SVS1400上的每个文件,一个卷被指定CAV,所以DV 1415被指定作为inode1425 所表示的文件的CAV,且DV 1410是由inode 1435、1445所标识的文件的CAV。因此,这些 CAV高速缓存与那些文件相关联的某些、快速改变属性的元数据,诸如,例如文件大小615, 以及访问和/或修改时间戳620。描述性地,该SVS与定义条带算法、条带宽度和SVS内的卷的有序列表(被描述性地实现为条带化表的条带化数据结构)的一组条带化规则相关联。应当注意,尽管本文使用术语条带化表,然而其应当被视为意味着使VSM能够标识数据将要在SVS上被条带化的次序的任何形式的数据结构。每个SVS的条带化规则被描述性地存储为VLDB1130的条目并通过SVS ID访问。图15是根据本发明的实施例的示例性VLDB SVS条目1500的示意框图。VLDB条目1500包括SVS ID字段1505和一组或多组条带化规则1530。在替代实施例
16中,可包括附加字段1535。SVS ID字段1505包含在操作中被指定在数据容器句柄500中的SVS的ID。每组条带化规则1530描述性地包括条带宽度字段1510、条带算法ID字段1515、 卷有序列表字段1520,并且在替代实施例中还包括附加字段1525。条带化规则1530包含用于标识SVS的组织的信息。例如,条带算法ID字段1515标识与SVS —起使用的条带化算法。在一个实施例中,多个条带化算法可与SVS —起使用;因此,需要条带算法ID来标识利用了哪个特定算法。每个条带化算法又指定文件内容被作为条带跨SVS的多个卷分配的方式。条带宽度字段1510指定每个条带的大小/宽度。卷有序列表字段1520包含包括SVS的卷的ID并充当条带化表来根据本发明的描述性实施例以容量平衡的方式确定数据布局。在描述性实施例中,卷的有序列表包括多个包括灵活卷ID和存储该灵活卷的聚集ID的元组。而且,卷的有序列表可指定SVS的条带化规则和各种卷的功能和实现。例如,该有序列表中的第一个卷可表示该SVS的MDV,而卷在该列表中的排序可表示实现特定条带化算法的方式,例如,循环法。在操作中,条带化规则组有效定义标识要被用来存储SVS的块的D模块的有序集合的条带化表。通过在这些各种D模块间分配SVS,单个模块的总处理消耗是有限的并因此减少了特定模块可能例如通过变成热点而生成积压的机会。提供Locate ()函数375,该函数使VSM 370和其他模块(如N模块310的那些) 能够定位D模块350及其相关联的SVS 1400的卷以服务对文件的访问请求。LocateO函数至少取(i)SVS ID 1505、(ii)文件内的偏移、(iii)文件的inode号和(iv) 一组条带化规则1530作为参数并返回SVS 1400内该偏移在其上开始的卷910。例如,假定定向到文件的数据访问请求由客户机180发出并在节点200的N模块310处被接收,在该处通过多协议引擎325将其解析到N模块310的适当的协议服务器。为了确定要将CF消息400传送到其的D模块350的位置,N模块310可首先取回 SVS条目1500以获取与该SVS相关联的条带化规则1530 (即卷的列表1520)。然后N模块 310执行LocateO函数375来标识要将操作定向到其的适当的卷。然后,N模块可取回适当的VLDB卷条目1200来标识包含该卷的聚集以及取回适当的VLDB聚集条目1300来最终标识适当的D模块350。然后N模块310的协议服务器将CF消息400传送到D模块350。图16是示出根据本发明的描述性实施例的存储在SVS 1600的卷A 1605,B 1610 和C 1615上的文件内容的周期性稀疏的示意框图。如上所述,根据SVS条带化规则来周期性地稀疏文件内容,该SVS条带化规则指定了条带化算法(如由条带算法ID字段1515所指示)和每个条带的大小/宽度(如由条带宽度字段1510所指示)。注意,在一个实施例中,条带宽度被选择为确保每个条带可容纳由文件的间接块(例如,第一级块804)所引用的实际数据(例如,存储在数据块806中的实际数据)。根据描述性的循环条带化算法,卷A 1605包含文件内容或数据条带(D) 1620, 接下来按顺序是两个稀疏条带(幻1622、1624、另一数据条带(D) 1626以及两个稀疏条带 (S) 1628,1630.另一方面,卷B 1610包含稀疏条带(S) 1632,接下来按顺序是数据条带 (D) 1634、两个稀疏条带(S) 1636、1638、另一数据条带(D) 1640和稀疏条带(S) 1642。卷C 1615继续循环条带化模式,并且为该目的,包含两个稀疏条带( 1644、1646,接下来按顺序是数据条带(D) 1648、两个稀疏条带(S) 1650、1652和另一数据条带(D) 1654。
H.容量平衡本发明提供被配置成在条带式文件系统中提供容量平衡的数据分布技术。条带式卷集与一组条带化规则相关联,该条带化规则包括例如标识卷的有序列表和数据被条带化到其的相关联的节点的条带化表1500。集群的每个节点包括适于服务SVC的卷的磁盘元素和适于将数据访问请求重定向到集群的任何解模块(de-module)的网络元素。将数据容器的内容在SVS的卷间分配以由此提升该集群提供的存储服务的效率。为该目的,该条带化表指定数据容器内容作为条带跨多个卷被分配的方式。在操作中,当新节点被添加到条带式卷集中时,演进(即,迭代更新)条带化表以容纳新添加的节点。在一个实施例中,集群的每个节点与将例如,该节点可用的处理器速度、处理器数量、硬件配置和/或软件纳入考虑的容量值相关联。在条带化表的演进过程中,该技术如此在节点间分配该SVS的条带使得根据每个节点的容量值将它们最优地分配给节点。例如,在其中第一节点的容量值为100 而第二节点的容量值为200的双节点系统中,与第一节点相比第二节点应当服务两倍的条带以实现最佳性能。通过利用本文所述的包括容量值的条带化表,可在条带式卷集中更好地利用异构节点(即,具有不同容量值的节点),由此减少未充分利用的处理资源。即,可利用节点而不需要较高容量节点将其性能遏制于集群中能力最小的节点。图17是示出根据本发明的描述性实施例的图16中示出的数据容器示例性条带化表的示意框图。描述性地,条带化表1700指示该数据容器的第一块被存储在第一节点的卷 A上,第二块被存储在第二节点的卷B上等。根据本发明的描述性实施例,以循环方式通过例如VSM375来生成条带化表1700。如本领域技术人员将会领会的那样,条带化表通常会比示例性条带化表1700大得多。类似地,将节点的布置示出为循环仅是为示例目的。图18是详细示出根据本发明的描述性实施例的用于演进条带化表以执行容量平衡的过程1800的步骤的流程图。过程1800开始于步骤1805并继续到步骤1810,在步骤 1810处新节点被添加到集群。新节点可通过例如管理员和/或其他用户物理地将该新节点连接到集群交换结构150、配置在该新节点的N/D模块上执行的存储操作系统和/或其他软件等而被添加到该集群。此外,根据本发明的一个实施例,集群的每个新添加的节点被分配容量值,通常是由该节点的供应商分配,例如制造商。然而,在替代实施例中,容量值可由管理员和/或通过自动进程分配。该容量值可被提供给该集群的节点的卷条带化模块370以开始下面进一步描述的条带化表演进技术。在步骤1815中,响应于新节点的添加,演进该条带化表以容纳该新节点。通常,本文所述的技术演进该条带化表使得每个节点与该节点的容量值除以该集群中节点(包括新节点)的所有总容量值大致成比例地出现。即,节点X的大致比例等于节点X的容量值除以该集群的所有节点的所有容量值的和。下面参考图19进一步描述条带化表的演进。一旦新的条带化表已被演进(即,迭代更新),则然后在步骤1820中将该新的条带化表与SVS相关联。描述性地,然后在步骤1825中执行重新条带化操作。重新条带化操作一般致使SVS内的所有数据被重新分配使得根据演进后的条带化表来条带化数据,即,使得根据从本发明的实施例获得的容量平衡来分布数据。应当注意,执行重新条带化操作是可选的。在某些替代实施例中,数据可在被写入到条带式卷集中时被重新条带化。过程1800完成于步骤1830。
图19A-19D是根据本发明的描述性实施例的演进条带化表的示意图。为了解释的目的,参考图19,假定管理员想要建立异构节点的四个节点集群。这三个节点具有如下容量额定值节点A 100节点B 200节点C 50节点D 50如本领域技术人员将会领会的,在描述性实施例中描述的原理可与具有任意数量的不同和/或相同容量值的任意数量的节点一起使用。因此,本文对条带化表1900的演进的描述应当被认为仅是示例性的。在操作中,条带化表最初作为单条目表生成,如图19A中所示的。在单节点集群中,每个数据条带被存储在集群的单个节点上,即,在本示例中是节点A。描述性地,管理员已配置卷条带化模块以指示将添加三个附加节点,以在该集群中共有四个节点。然后该卷条带化模块可开始迭代添加对每个条目的支持。通过首先添加用于新节点的条目,卷条带化模块370不仅为新添加的条目而且还为将要在该条带化表中所表示的其他所有其他条目考虑容量值。通过将此纳入考量,节点A在该条带化表中出现的正确数量将产生,这避免了在进一步迭代期间替换节点A的实例的需要。在一个实施例中,每个节点将与其容量值除以该集群中的节点的所有容量值的和大致成比例地出现在该条带化表中。给定上述描述性容量值,所需表示等于A的容量额定值处以总容量额定值,S卩,A 除以A+B+C+D。描述性地,这等于100除以400(100+200+50+50)。因此,卷条带化模块将条目数替换为B+C+D(即,稍后要被添加的节点的总容量值)除以A+B+C+D的额定值(S卩,所有容量值的总和),即,在第一次迭代中每400个条目中的300个。通过执行数学简化,卷条带化模块确定在该条带化表中用B替代每四个条目中的三个。在该组内的替代应当通过用B的新值替代A的条目来进行。描述性地,通过半静态技术来执行对确切地要替代哪些条目的选择,半静态技术诸如描述在标题为“半静态分布技术(SEMI-STATIC DISTRIBUTION TECHNIQUE),,的美国专利7,185,144中,通过引用将其内容结合于此。然后VSM 370通过添加下一条目(即,条目C)来重复此迭代过程。继续此示例, 卷条带化模块确定要在该条带化表中替代足够数量的B同时留下适当总数量的B。再说一次,这可以通过用将要被留下来的那些的额定值除以总的额定值来确定。这会等于C+D的额定值处于B+C+D的额定值,其等于100/300。通过减少这个分数,条带化模块已标识出每三个B中的一个应当用C来替代。然后最终迭代用D替代足够数量的C。该数量可以通过用D的容量值除以C+D的额定值来计算,其等于每隔一个C( BP, 1/2)。如可从图19D领会的那样,这导致具有8个对节点A的引用、16个对节点B的引用、4个对节点C的引用和4 个对节点D的引用的示例性条带化表。如将领会的,这导致每个节点基于其容量额定值被适当分配。使用节点A作为参考,节点D出现的频率为其两倍,因为它具有是节点A的两倍的容量额定值,等。通过执行本文所述的迭代技术,可实现容量平衡以允许对集群内的异构计算机的最佳使用。前面的描述已经针对本发明的特定实施例。然而,显然,可对所述实施例作出其他变化和修改,同时保留它们的某些或全部优点。具体而言,应当注意,本文所述的原理可以在非分布式文件系统中实现。而且,尽管已经从N模块和D模块方面来撰写本描述,然而本文的教导同样适用于N模块和D模块的功能是在单个系统中实现的系统。替代地,N模块和D模块的功能可在任意数量的分开的系统间分布,其中每个系统执行这些功能中的一个或多个。此外,本文描述的过程、进程和/或模块可以用硬件、软件实现、体现为具有程序指令的计算机可读介质、固件或其组合。因此,所附权利要求的目标是涵盖所有这些落入本发明的真实精神和范围的变化和修改。
权利要求
1.一种用于在支持条带式文件系统的集群化计算机系统中进行容量平衡的方法,包括分配与被组织成所述集群化计算机系统的多个节点中的每个节点相关联的容量值以支持所述条带式文件系统;通过在所述多个节点中的一个节点的处理器上执行的卷条带化模块,迭代调整节点在条带化数据结构内的出现数量,以基于与每个节点相关联的容量值来生成经容量平衡的条带化数据结构;以及响应于数据访问请求,利用所述经容量平衡的条带化数据结构来在所述条带式文件系统中执行数据分配。
2.如权利要求1所述的方法,其中每个节点与其容量值除以所述多个节点的所有容量值的和大致成比例地出现在所述条带化数据结构中。
3.如权利要求1所述的方法,还包括利用半静态分布技术来迭代调整节点在所述条带化数据结构内出现的数量。
4.如权利要求1所述的方法,还包括在所述条带式文件系统上执行重新条带化操作以利用所述经容量平衡的条带化数据结构。
5.如权利要求1所述的方法,还包括使用所述节点的处理器速度来确定节点的容量值。
6.如权利要求1所述的方法,其中所述多个节点与不同容量值相关联。
7.如权利要求1所述的方法,还包括实现所述条带式文件系统的条带式卷集,其中所述条带式卷集包括每个卷被存储在所述多个节点中的一个节点上的多个卷。
8.如权利要求1所述的方法,还包括将演进后的条带化数据结构存储到卷位置数据库中,所述卷位置数据库能够从所述多个节点中的每一个节点访问。
9.如权利要求1所述的方法,其中数据分配包括根据所述经容量平衡的条带化数据结构来跨所述多个节点分布数据。
10.一种用于生成经容量平衡的条带化数据结构以在支持条带式文件系统的集群化计算机系统中使用的方法,包括分配与被组织成所述集群化计算机系统的多个节点中的每个节点相关联的容量值以支持所述条带式文件系统,其中所述容量值反映与所述多个节点中的其他节点相比与节点相关联的处理速度的确定;通过在所述多个节点中的一个节点的处理器上执行的卷条带化模块,迭代调整节点在条带化数据结构中的出现的数量以基于与每个节点相关联的容量值生成所述经容量平衡的条带化数据结构,其中所述经容量平衡的条带化数据结构与所述节点的容量值除以所述集群化计算机系统中的所有节点的容量值的和成比例地包含每个节点;以及通过所述卷条带化模块,利用所述经容量平衡的条带化数据结构来在所述集群化计算机系统的节点间分配数据。
11.一种系统,包括节点组,每个节点包括处理器,所述节点被组织成被配置成支持条带式文件系统的集群,所述条带式文件系统包括在存储在所述节点组上的卷间分配的条带式卷集,其中所述节点组中的每个节点与容量值相关联;以及在所述处理器中的一个处理器上执行的卷条带化模块,所述条带化模块被配置成在存储在所述节点组上的卷之间分配所述条带式卷集的条带,使得每个节点与所述节点的容量值除以所述节点组的所有容量值的总和大致成比例地出现在条带化数据结构中,其中所述条带式文件系统还被配置成响应于数据访问请求而利用所述条带化数据结构来在所述条带式文件系统上执行数据分配。
12.如权利要求11所述的系统,其中所述条带化数据结构被存储在能够由所述节点组中的每个节点访问的卷位置数据库中。
13.如权利要求11所述的系统,其中向所述节点组中的每个节点分配不同的容量值。
14.如权利要求11所述的系统,其中所述卷条带化模块还被配置成响应于向所述节点组添加新节点而演进所述条带化数据结构,其中所述条带化数据结构与每个节点的容量值除以所述节点组和所述新节点的所有容量值的总和大致成比例地包括针对所述节点组中的每个节点和所述新节点的条目。
15.如权利要求14所述的系统,其中所述卷条带化模块还被配置成使用所述条带化结构在所述条带式卷集上执行重新条带化操作。
16.如权利要求14所述的系统,其中所述卷条带化模块还被配置成通过使用半静态分布技术迭代调整节点在所述条带化结构中的出现的数量来演进所述条带化数据结构。
17.一种方法,包括向被配置成集群以支持存储系统的条带式文件系统的节点组添加新节点;演进与所述条带式文件系统相关联的条带化数据结构以包括所述新节点,其中演进后的条带化数据结构与和所述节点中的每个节点相关联的容量值除以所述节点组和所述新节点的所有容量值的总和大致成比例地包括针对所述节点组中的每个节点和所述新节点的条目;以及响应于数据访问请求,利用经容量平衡的条带化数据结构来在所述条带式文件系统上执行数据分配。
18.如权利要求17所述的方法,还包括使用所述演进后的条带化数据结构来在所述条带式文件系统上执行重新条带化操作。
19.如权利要求17所述的方法,还包括在所述节点组中的每个节点和所述新节点能够访问的卷位置数据库中存储所述条带化数据结构。
20.如权利要求17所述的方法,其中演进所述条带化数据结构利用半静态分布技术。
21.如权利要求17所述的方法,其中演进条带化数据结构包括标识将要被添加的节点的容量值并且将所标识的容量值除以要被添加的节点和要被添加到所述条带化数据结构的所有附加节点的总容量值。
全文摘要
一种数据分布技术被配置成在条带式文件系统中提供容量平衡。当新节点被添加到条带式卷集中时,演进条带化表以容纳新添加的节点。描述性地,集群的每个节点与将例如,该节点可用的处理器速度、处理器数量、硬件配置和/或软件纳入考虑的容量值相关联。在条带化表的演进过程中,该技术如此在节点间分配SVS的条带使得根据每个节点的容量值将它们最优地分配给各节点。通过利用包括容量值的演进式条带化表,可在条带式卷集中将异构节点利用到最大容量,由此减少未被充分利用的处理资源。
文档编号G06F17/30GK102460439SQ201080030330
公开日2012年5月16日 申请日期2010年4月29日 优先权日2009年4月30日
发明者R·P·杰尔尼根四世 申请人:网络存储技术公司