基于扩展区的存储架构的制作方法

xiaoxiao2020-7-22  3

【专利下载】Tel:18215660330

基于扩展区的存储架构的制作方法
【专利摘要】基于扩展区的存储架构由存储服务器实施,所述存储服务器从客户端接收对扩展区的读取请求,其中所述扩展区包含邻接块的群组且所述读取请求包含文件块编号。所述存储服务器从第一经分类数据结构检索扩展区识别符,其中所述存储服务器使用所述所接收文件块编号来遍历所述第一经分类数据结构直到所述扩展区识别符。所述存储服务器从第二经分类数据结构检索对所述扩展区的参考,其中所述存储服务器使用所述所检索扩展区识别符来遍历所述第二经分类数据结构直到所述参考,且其中所述第二经分类数据结构跨越多个卷为全局的。所述存储服务器使用所述参考从存储装置检索所述扩展区并将所述扩展区返回到所述客户端。
【专利说明】基于扩展区的存储架构
[0001]版权公告/许可
[0002]本专利文档的揭示内容的一部分含有受版权保护的材料。如美国专利与商标局专利文件或记录中所显现,版权所有者不反对任何人对本专利文档或本专利揭示内容进行拓制,但另外保留所有版权。以下公告适用于如下文所描述及本文图式中的软件及数据:版权?: 2011年,NetApp公司,保留所有权利。
【技术领域】
[0003]本发明的至少一个实施例涉及数据存储系统,且更特定来说,涉及根据基于扩展区的存储架构来执行读取与写入操作。
【背景技术】
[0004]当今存在各种形式的基于网络的存储系统。这些形式包含网络附接存储装置(NAS)、存储区域网络(SAN)以及其它形式。基于网络的存储系统通常用于多种目的,例如为多个用户提供对所共享数据的存取、备份关键数据(例如,通过数据镜射)等。
[0005]基于网络的存储系统通常包含至少一个存储服务器,其为经配置以代表一个或一个以上客户端处理系统(客户端)存储及检索数据的处理系统。所述数据作为存储对象(例如块及/或文件)来存储及检索。块是具有预定长度的数据字节或位的序列。文件是具有任意长度的相关字节或位的集合。在NAS的上下文中,存储服务器代表一个或一个以上客户端而操作以存储及管理对数据的文件级存取。可通过使用例如廉价磁盘冗余阵列(RAID)的数据存储方案将文件存储于包含一个或一个以上大容量存储装置阵列(例如磁盘或光盘或磁带)的存储系统中。在SAN上下文中,存储服务器为客户端提供对所存储数据的块级存取而非文件级存取。一些存储服务器能够为客户端提供文件级存取及块级存取两者,例如由加利福尼亚州森尼维耳市(Sunnyvale, California)的NetApp公司(NctApp*)制造的某些存储服务器。
[0006]图1是随处写入文件布局(WAFL)文件系统的现有技术说明性实施例。参考图1,WAFL聚合体100为WAFL文件系统的实例。WAFL聚合体100包含一个或一个以上灵活卷110、一个或一个以上卷容器120及物理存储装置130。
[0007]WAFL聚合体100为可在WAFL文件系统中存储数据的物理存储容器。灵活卷110为允许对物理存储装置130上的卷分配的虚拟化的逻辑卷。借此,多个独立管理的灵活卷110可共享相同物理存储装置(例如,物理存储装置130)。所述虚拟化需要由灵活卷110使用的虚拟卷块编号(VVBN)与由WAFL聚合体100使用的物理卷块编号(PVBN)之间的映射来存取存储于物理存储装置130中的数据。如本文中所使用,PVBN指代已在聚合体中抽象成单一线性序列的磁盘块。每一卷容器120对应于一灵活卷110。卷容器120含有对应灵活卷110的所有数据块。
[0008]如本文中所使用,块偏移或偏移指代距存储对象(例如卷、文件、扩展区等)的开始的以块为单位的距离。在灵活卷110内所使用的块地址指代卷容器120内的块偏移。由于卷容器120含有灵活卷110内的每个块,因此存在两种方式来指代特定块的位置。所述PVBN指定一块在WAFL聚合体100内的位置。所述VVBN指定所述块在容器文件内的偏移。当请求文件中的块时,灵活卷110将文件偏移转译成VVBN。将所述VVBN从灵活卷110传递到卷容器120。卷容器120将VVBN转译为PBVN。接着使用所述PVBN来存取物理存储装置130中的所请求块。另外,当最初写入PVBN时,在灵活卷110中写入所述PVBN的块指针以针对VVBN包含(例如,在高速缓冲存储器中)所述PVBN。借此,当需要所请求块时,灵活卷110可使用所存储PVBN来存取物理存储装置130。
[0009]WAFL的当前实施方案将文件定义为间接块的树。所述树中的每一间接块具有固定跨度:固定数目个条目,每一条目指向所述树中的另一块。使用扩展区内的每一块的条目来表示扩展区。如本文中所使用,扩展区指代一个或一个以上块的邻接群组。因此,间接块元数据的量相对于文件的大小为线性的。另外,磁盘整理(gardening)技术(例如段清理、文件重新分配等)因将PVBN指针高速缓存在VVBN块中而复杂化。
[0010]存储系统通常针对所有内部操作使用预定块大小。举例来说,WAFL针对VVBN及PVBN两者使用4KB(例如,4096个字节)块,客户端侧文件系统针对文件块编号(FBN)也使用4KB(例如,4096个字节)块。预期从初始偏移(例如,FBN O)每隔4KB就出现块边界。由于文件系统通常基于这些块边界而使个别文件偏移,因此应用程序编写者利用文件系统的块大小及对准来增加其输入/输出(“I/O”)操作的性能-举例来说,始终执行为4KB的倍数的I/O操作且始终使这些操作与文件的开始对准。其它文件系统或应用程序(例如虚拟机)可使用不同大小的块边界(例如,其中512个字节的初始主引导记录块后跟预期的4KB块的虚拟机环境),从而导致FBN与PVBN之间的不对准。另外,多个虚拟机可共享单一卷容器120且每一虚拟机可不对准达不同的量。

【发明内容】

[0011]基于扩展区的存储架构的实施例由存储服务器实施,所述存储服务器从客户端接收对扩展区的读取请求,其中所述扩展区包含邻接块的群组且所述读取请求包含文件块编号。所述存储服务器从卷层中的第一经分类数据结构检索扩展区识别符,其中所述存储服务器使用所述所接收文件块编号来遍历所述第一经分类数据结构直到所述扩展区识别符。所述存储服务器从聚合体层中的第二经分类数据结构检索对所述扩展区的参考,其中所述存储服务器使用所述所检索扩展区识别符来遍历所述第二经分类数据结构直到所述参考。所述存储服务器使用所述参考从存储装置检索所述扩展区并将所述扩展区返回到所述客户端。
[0012]基于扩展区的存储架构的另一实施例由存储服务器实施,所述存储服务器从客户端接收对包含邻接块的群组的扩展区的写入请求及文件块编号。所述存储服务器在聚合体层中的第一经分类数据结构中写入条目,所述条目包含扩展区识别符及存储装置中对所述扩展区的参考,其中所述扩展区识别符用于确定所述条目在所述第一经分类数据结构中的位置。所述存储服务器进一步在卷层中的第二经分类数据结构中写入条目,所述条目包含所述文件块编号及所述扩展区识别符,其中所述文件块编号用于确定所述条目在所述第二经分类数据结构中的位置。【专利附图】

【附图说明】
[0013]在随附图式的各图中以实例而非限制方式图解说明本发明的一个或一个以上实施例,在图式中相似参考指示类似元件且其中:
[0014]图1图解说明随处写入文件布局的实施例的现有技术示范性实施方案;
[0015]图2A图解说明其中可实施基于扩展区的存储架构的网络存储系统;
[0016]图2B图解说明在替代实施例中其中可实施基于扩展区的存储架构的网络存储系统的分布式或群集式架构;
[0017]图3是其中可实施基于扩展区的存储架构的存储服务器的硬件架构的说明性实施例的框图;
[0018]图4图解说明其中可实施基于扩展区的存储架构的图3的存储操作系统的实施例;
[0019]图5图解说明基于扩展区的存储架构的示范性框图;
[0020]图6图解说明基于扩展区的存储架构内的示范性基于扩展区的经分类数据结构;
[0021]图7图解说明当用于实施间接卷时图6的基于扩展区的数据结构的页节点的示范性卷层间接条目;
[0022]图8图解说明当用于实施扩展区到物理块映射时图6的基于扩展区的数据结构的页节点的示范性扩展区映射条目;
[0023]图9图解说明在基于扩展区的存储架构的卷层及聚合体层中查找以将FBN映射到PVBN的示范性序列;
[0024]图10图解说明在基于扩展区的存储架构的卷层及聚合体层中查找以将FBN映射到PVBN的另一示范性序列;
[0025]图11是在基于扩展区的架构中处理读取请求的示范性方法;
[0026]图12是在基于扩展区的架构中处理写入请求的示范性方法;
[0027]图13是在基于扩展区的架构中处理盖写请求的示范性方法;且
[0028]图14展示在基于扩展区的架构中对扩展区的示范性部分盖写。
【具体实施方式】
[0029]在以下对本发明的实施例的详细描述中,参考附图,其中相似参考指示类似元件且其中以图解说明的方式展示可实践本发明的特定实施例。充分详细地描述这些实施例以使得所属领域的技术人员能够实践本发明,且应理解,可利用其它实施例且可在不背离本发明的范围的情况下做出逻辑、机械、电、功能及其它改变。因此,不应将以下详细描述视为限制意义,且本发明的范围仅由所附权利要求书界定。在本说明书中对“一实施例”、“一个实施例”等的提及意指特定特征、结构或特性包含于本发明的至少一个实施例中。然而,此些短语在本说明书中的出现未必全部指代同一实施例。
[0030]如下文进一步详细地陈述,基于扩展区的架构的实施例包含存储服务器,其接收对扩展区的包含FBN的I/O请求。所述存储服务器使用所接收FBN作为密钥来遍历卷层中的经分类数据结构直到扩展区识别符。所述存储服务器使用所述扩展区识别符作为密钥来遍历聚合体层中的第二经分类数据结构直到参考或指针。第二经分类数据结构将扩展区识别符直接或间接映射到PVBN。对于一个实施例,第二经分类数据结构中的参考或指针识别或直接指代扩展区的PVBN。或者,所述参考或指针识别另一扩展区识别符,所述另一扩展区识别符又直接指代所述扩展区的PVBN。假定卷层中的条目是每扩展区的而非如在WAFL的先前实施方案中是每数据块的,则基于扩展区的架构的实施方案导致卷层元数据的显著减少且又由于常见操作中所涉及的元数据的减少而导致性能改进。通过将存储于卷层中的数据与存储于聚合体层中的数据分离,基于扩展区的架构为存储服务器提供在不改变对应扩展区识别符的情况下写入及重新布置磁盘上的数据块的能力。此暗示针对磁盘上的数据块的某一操作不需要更新卷层中的经分类数据结构。可在不与卷层通信的情况下执行块/扩展区压缩、块/扩展区解压缩、块/扩展区共享、磁盘整理等。另外,由于使用映射到扩展区识别符的FBN来遍历卷层中的经分类数据结构,因此基于扩展区的架构可避免在数据块的初始偏移以不同于数据块大小的粒度出现(例如,4KB块的512字节偏移)时WAFL的先前实施方案的不对准问题。
[0031]对于一个实施例,可通过仅一个扩展区识别符来直接参考PVBN且如果第二扩展区识别符参考第三扩展区识别符,那么扩展区识别符可能不参考所述第二扩展区识别符。此实施例防止扩展区映射条目中的间接参考层级变得任意深并花费任意时间量(如依据磁盘I/o操作来测量,假定每一扩展区条目可能存储于不同磁盘块内且需要单独I/O操作)。
[0032]对于一个实施例,扩展区识别符可包含多个参考或指针。可盖写、去重复、压缩等扩展区内的数据块的部分范围。另外,由基于扩展区的架构提供的间接性允许在不首先读取扩展区的情况下盖写所述扩展区内的数据块的部分范围。相比之下,文件系统的先前实施方案中的扩展区盖写操作包含将数据的数据块从存储装置读取到缓冲器中、在所述缓冲器内盖写所述数据块的一部分并将经更新数据块写回到所述存储装置。
[0033]对于一个实施例,聚合体层中的扩展区到PVBN映射跨越卷为全局的。如本文中所使用,对跨越卷为全局的扩展区到PVBN映射的提及指代存储服务器210能够跨越如卷层515中所定义的卷边界共享(或结束共享)扩展区内的数据块(例如,经由扩展区到物理块映射520)。此在文件系统的先前实施方案中为极困难的,因为文件系统通常并不支持横跨比单一卷大的空间的间接层。
[0034]图2A展示其中可实施基于扩展区的存储架构495的网络存储系统200。存储服务器210 (存储服务器210A、210B)各自管理包含大容量存储装置的多个存储单元270 (存储装置270A、270B)。这些存储服务器210通过网络230为一个或一个以上客户端202提供数据存储服务。举例来说,网络230可为局域网(LAN)、广域网(WAN)、城域网(MAN)、全域网(GAN),例如因特网、光纤信道组构或此些互连的任何组合。举例来说,客户端202中的每一者可为常规个人计算机(PC)、服务器类计算机、工作站、手持式计算或通信装置、虚拟机或其它专用或通用计算机。
[0035]数据在存储单元270中的存储由存储服务器210管理,存储服务器210从客户端202接收针对存储于存储单元270中或待存储于存储单元270中的数据的各种I/O请求并对所述请求做出响应。以块为单位(在本实施例中大小为4KB)来存取(例如,响应于I/O请求)数据,但也可使用其它块大小(例如,512个字节、2KB、8KB等)。对于一个实施例,如本文中所使用的4KB指代4,096个字节。对于替代实施例,4KB指代4,000个字节。存储单元270构成图解说明为磁盘271 (271A、271B)的大容量存储装置,举例来说,其可包含快闪存储器、磁盘或光盘或磁带驱动器。存储装置271可进一步组织成实施廉价磁盘/装置冗余阵列(RAID)方案的阵列(未图解说明),借此存储服务器210使用一个或一个以上RAID协议来存取存储单元270。RAID为在多个硬盘驱动器当中划分及复制数据(例如,以数据条带的形式)的数据存储方案。数据分条(striping)是在逻辑上对序列数据(例如单一文件)进行分段使得可将段指派给多个物理装置/硬盘驱动器的技术。存储冗余(奇偶)数据以允许检测及可能解决问题。举例来说,如果将使用三个250GB硬盘驱动器(两个驱动器用于数据且一个用于奇偶)配置基于硬件的RAID-5卷,那么将向操作系统呈现单一 500GB卷且可跨越两个数据驱动器存储示范性单一文件。虽然图解说明为单独组件,但对于一个实施例,存储服务器210及存储单元270可为单一装置的一部分/装纳于所述装置内。
[0036]存储服务器210可提供例如在网络附接存储(NAS)环境中使用的文件级服务、例如在存储区域网络(SAN)环境中使用的块级服务、能够提供文件级及块级服务两者的服务或能够提供其它数据存取服务的任何其它服务。虽然在图2A中将存储服务器210各自图解说明为单一单元,但在其它实施例中存储服务器可构成单独网络元件或模块^1模块”)及磁盘元件或模块(“D模块”)。在一个实施例中,D模块包含用于服务于客户端请求的存储存取组件。相比之下,所述N模块包含实现对存储存取组件(例如,D模块)的客户端存取的功能性且可包含用于促进此连接性的协议组件,例如公共因特网文件系统(CIFS)、网络文件系统(NFS)或因特网协议(IP)模块。下文关于图2B进一步描述涉及D模块及N模块的分布式架构环境的细节,且下文关于图4进一步描述D模块及N模块的实施例。
[0037]在又一些实施例中,存储服务器210称为网络存储子系统。网络存储子系统针对特定应用或目的提供连网存储服务。此些应用的实例包含(例如)在客户端中实施的数据库应用、web应用、企业资源规划(ERP)应用等。此些目的的实例包含(举例来说)在连接到一级存储服务器的归档、备 份或二级存储服务器上提供的文件归档、备份、镜射等。也可用跨越多个存储服务器及/或存储单元提供的连网资源的集合来实施网络存储子系统。
[0038]在图2A的实施例中,存储服务器中的一者(例如,存储服务器210A)用作对客户端202的数据存储服务的一级提供者。使用组织为一个或一个以上存储对象的磁盘271A来服务于来自客户端202的数据存储请求。二级存储服务器(例如,存储服务器210B)以与一级存储服务器的镜像关系起到备用作用,从而将存储对象从一级存储服务器复制到组织于二级存储服务器的磁盘(例如,磁盘270B)上的存储对象。在操作中,二级存储服务器直到一级存储对象中的数据变得不可存取(例如在一级存储服务器的灾难中)才服务于来自客户端202的服务请求,此事件被视为一级存储服务器处的故障。在一级存储服务器处的故障后,即刻使用二级存储服务器处的经复制数据(即,二级存储对象)服务于来自客户端202的既定针对一级存储对象的请求。
[0039]将了解,在其它实施例中,网络存储系统200可包含两个以上存储服务器。在这些情况中,保护关系可在系统200中的各种存储服务器之间操作使得来自存储服务器210A的一个或一个以上一级存储对象可被复制到除存储服务器210B之外的存储服务器(此图中未展示)。二级存储对象可进一步实施与其它存储对象的保护关系以使得二级存储对象被复制(例如)到三级存储对象以免受二级存储对象的故障的影响。因此,存储服务器210的一级与二级存储对象之间的单层保护关系的描述应仅视为说明性的。[0040]图2B图解说明在一个实施例中可实施快速克隆的分布式或群集式网络存储系统220的框图。系统220可包含实施为各自经配置以提供对存储装置271的存取的节点210(节点210A、210B)的存储服务器。在图2B中,节点210由可体现为以太网交换机的群集交换组构225互连。
[0041]节点210可作为协作以提供系统220的分布式架构的多个功能组件操作。为此目的,每一节点210可组织为网络元件或模块(N模块221A、221B)、磁盘元件或模块(D模块222A、222B)及管理元件或模块(M主机223A、223B)。在一个实施例中,每一模块包含用于执行相应模块操作的处理器及存储器。举例来说,N模块221可包含使得节点210能够经由网络230连接到客户端202的功能性且可包含协议组件,例如媒体存取层、因特网协议(IP)层、输送控制协议(TCP)层、用户数据报协议(UDP)层及此项技术中已知的其它协议。
[0042]相比之下,D模块222可经由群集交换组构225连接到一个或一个以上存储装置271且可操作以服务于对装置270的存取请求。在一个实施例中,D模块222实施基于扩展区的存储架构495,如下文将更详细地描述。在一个实施例中,D模块222包含存储存取组件,例如支持多协议数据存取(例如,公共因特网文件系统协议、网络文件系统协议及超文本传送协议)的存储抽象层、实施存储协议(例如,RAID协议)的存储层及实施用于执行支持存储存取操作的操作的存储装置协议(例如,小计算机系统接口协议)的驱动器层。在图2B中所展示的实施例中,D模块的存储抽象层(例如,文件系统)将装置270的物理存储划分成若干存储对象。因此,由节点210接收(例如,经由N模块221)的请求可包含指示将对其执行所述请求的存储对象的存储对象识别符。
[0043]也在节点210中操作的是M主机223,其通过执行支持(举例来说)跨越系统220的分布式存储系统映像的操作来为节点210执行群集服务。M主机223通过管理数据结构(例如,含有由N模块221用来确定哪一 D模块222 “拥有”(服务于)每一存储对象的信息的RDB 224 (RDB 224A、RDB 224B))来提供群集服务。跨越相应节点210的RDB 224的各个实例可由M主机223使用在M主机中的每一者之间操作(例如,跨越网络230)以使其彼此同步的常规协议来定期更新。可接着将由N模块221接收的客户端请求路由到适当D模块222以服务于提供分布式存储系统映像。
[0044]应注意,尽管图2B在说明性系统中展示构成节点的相等数目个N模块及D模块,但根据快速克隆的各种实施例可存在构成节点的不同数目个N模块及D模块。举例来说,节点210A可存在并不反映节点210B的N模块与D模块之间的一对一对应性的数目个N模块及D模块。如此,对针对每一节点包括一个N模块及一个D模块的节点的描述应仅视为说明性。
[0045]图3是存储服务器300的实施例(例如图2A的存储服务器210A及210B)的框图,其体现为包含由系统总线350 (例如惯例的外围组件互连(PCI)总线)互连的处理器302、存储器310、网络适配器320、用户控制台312及存储适配器340的通用或专用计算机。未展示与对本发明实施例的理解不密切相关的某些标准且众所周知的组件。
[0046]处理器302为存储服务器210的中央处理单元(CPU)且因此控制其总体操作。处理器302通过执行存储于存储器310中的软件来实现此目的。对于一个实施例,存储服务器210中包含多个处理器302或具有多个核心的一个或一个以上处理器302。对于一个实施例,个别适配器(例如,网络适配器320及存储适配器340)各自包含用于执行相应模块操作的处理器及存储器。
[0047]存储器310包含可由处理器302、网络适配器320及存储适配器340寻址以用于存储与基于扩展区的存储架构的实施方案相关联的处理器可执行指令及数据结构的存储位置。存储操作系统314(其部分通常驻留于存储器310中且由处理器302执行)通过调用支持由存储服务器210提供的存储服务的操作而在功能上组织存储服务器210。所属领域的技术人员将明了,可使用其它处理构件来执行指令,且可使用其它存储器构件(包含各种计算机可读媒体)来存储与本文中所描述的发明性技术有关的程序指令。还将明了,处理器302及可执行软件的功能性中的一些或全部可由硬件来实施,例如配置为可编程逻辑阵列的集成电路、ASIC等。
[0048]网络适配器320包括一个或一个以上端口以经由点对点链路或网络将存储服务器耦合到一个或一个以上客户端。因此,网络适配器320包含经由网络将存储服务器耦合到一个或一个以上客户端所需的机械、电及发信电路。网络适配器320可包含协议组件,例如媒体存取控制(MAC)层、公共因特网文件系统(CIFS)、网络文件系统(NFS)、因特网协议(IP)层、输送控制协议(TCP)层、用户数据报协议(UDP)层及此项技术中已知的用于促进此连接性的其它协议。每一客户端可经由网络通过根据预定义协议(例如TCP/IP)交换离散数据帧或包而与存储服务器通信。
[0049]存储适配器340包含具有输入/输出(I/O)接口电路的多个端口以经由I/O互连布置(例如常规高性能FC或SAS链路技术)将存储装置(例如,磁盘)耦合到总线321。存储适配器340通常包含包括处理器及存储器的装置控制器(未图解说明)以用于根据从存储操作系统314接收的读取与写入命令来控制存储单元的总体操作。在一个实施例中,存储操作系统314实施基于扩展区的存储架构495,如下文将更详细地描述。如本文中所使用,由装置控制器响应于写入命令而写入的数据称为“写入数据”,而由装置控制器响应于读取命令读取的数据称为“读取数据”。
[0050]用户控制台312使得管理员能够与存储服务器介接以使用命令线接口(CLI)或图形用户接口(GUI)调用操作并将输入提供到存储服务器。在一个实施例中,使用监视器及键盘来实施用户控制台312。
[0051]当实施为群集(例如图2B的群集220)的节点时,存储服务器进一步包含具有一个或一个以上端口以将所述节点耦合到群集中的其它节点的群集存取适配器330 (以幻影/虚线展示)。在一个实施例中,使用以太网作为群集协议及互连媒体,但所属领域的技术人员将明了可在群集架构内利用其它类型的协议及互连。
[0052]图4是实施基于扩展区的架构的实施例的存储操作系统(例如图3的存储操作系统314)的框图。所述存储操作系统包括一系列软件层,其由处理器(例如图3的处理器302)执行且经组织以形成集成网络协议堆栈或更一股来说形成为客户端提供使用块及文件存取协议存取存储于存储服务器上的信息的数据路径的多协议引擎425。
[0053]多协议引擎425包含网络驱动器(例如,千兆位以太网驱动器)的媒体存取层412,所述网络驱动器与网络协议层(例如IP层414及其支持输送机制、TCP层416及用户数据报协议(UDP)层415)介接。文件系统协议层提供多协议文件存取且为此目的包含对直接存取文件系统(DAFS)协议418、NFS协议420、CIFS协议422及超文本传送协议(HTTP)协议424中的一者或一者以上的支持。VI层426实施VI架构以提供如DAFS协议418所需的直接存取输送(DAT)能力(例如RDMA)。iSCSI驱动器层428经由TCP/IP网络协议层提供块协议存取,而FC驱动器层430接收去往存储服务器的块存取请求及发射来自存储服务器的响应。在某些情况中,以太网光纤信道(FCoE)层(未展示)也可在多协议引擎425中操作以接收去往存储服务器的请求及发射来自存储服务器的响应。FC及iSCSI驱动器提供对块的相应FC特定及iSCSI特定存取控制,且因此在存取存储服务器上的数据块时管理Iun到iSCSI或FCP或替代地到iSCSI及FCP两者的导出。
[0054]所述存储操作系统还包含经组织以形成提供用于存取存储于存储装置上的信息的数据路径的存储服务器465的一系列软件层。除由存储操作系统为支持存储服务器操作而存取的数据(例如程序应用数据或其它系统数据)以外,信息还可包含从客户端接收的数据。优选地,可将客户端数据组织为包括协作以定义总体逻辑布置的存储装置的集合的一个或一个以上逻辑存储对象(例如,卷)。在一个实施例中,所述逻辑布置可涉及逻辑卷块编号(VBN)空间,其中每一卷与唯一 VBN相关联。
[0055]文件系统460通过与一个或一个以上虚拟化模块(图解说明为SCSI目标模块435)的交互来实施存储操作系统的虚拟化系统。SCSI目标模块435通常安置于驱动器428、430与文件系统460之间以提供数据块(Iun)空间与文件系统空间之间的转译层,其中Iun表示为数据块。在一个实施例中,文件系统460使用(例如)4KB块且使用用以识别文件及文件属性(例如创建时间、存取许可、大小及块位置)的数据结构(例如索引节点(“inode”))来实施具有基于块的磁盘上格式表示的WAFL文件系统。文件系统460使用文件来存储描述其文件系统的布局的元数据,包含索引节点文件,其直接或间接参考(指向)文件的基本数据块。
[0056]对于一个实施例,文件系统460包含基于扩展区的架构495作为对WAFL的扩展。在操作上,经由网络将来自客户端的请求作为包转发且转发到存储服务器上,其中在网络适配器处接收所述包。网络驱动器(例如层412或层430)处理所述包且在适当情况下将其传递到网络协议与文件存取层上以用于在转发到文件系统460之前进行额外处理。此处,文件系统460产生在所请求数据未驻留“在核心中”(即,在存储器310中)的情况下从磁盘加载(检索)所述数据的操作。如果信息未在存储器中,那么文件系统460与基于扩展区的架构495协作而存取间接卷以检索扩展区识别符、存取扩展区到物理块映射以检索PVBN,如参考图5-14更详细地描述。对于一个实施例,文件系统460将所述PVBN传递到RAID系统480。此处,将所述PVBN映射到磁盘识别符及装置块编号(磁盘,DBN)并发送到磁盘驱动器系统490的适当驱动器。磁盘驱动器从所指定磁盘存取DBN并将所请求数据块加载于存储器中以由存储服务器处理。在完成请求后,节点(及操作系统400)即刻经由网络将回复返回到到客户端。
[0057]应注意,针对在可适应本发明教示的存储服务器处接收的客户端请求执行数据存储存取所需的通过上文所描述的存储操作系统层的软件“路径”可替代地以硬件来实施。也就是说,在本发明的替代实施例中,存储存取请求数据路径可实施为在现场可编程门阵列(FPGA)或专用集成电路(ASIC)内体现的逻辑电路。此类型的硬件实施方案增加由存储服务器响应于由客户端发出的请求而提供的存储服务的性能。此外,在本发明的另一替代实施例中,适配器320、340的处理元件可经配置以分别从处理器302卸载包处理及存储存取操作中的一些或全部,以借此增加由存储服务器提供的存储服务的性能。本发明明确预期,可以硬件、固件或软件来实施本文中所描述的各种过程、架构及程序。
[0058]当在群集中实施时,可将存储操作系统的数据存取组件体现为用于存取存储于磁盘上的数据的D模块450。相比之下,可将多协议引擎425体现为N模块410以相对于经由网络发出传入存取的客户端执行协议终止且将存取请求重新引导到群集中的任何其它N模块。群集服务系统436可进一步实施M主机(例如,M主机401)以提供用于产生信息共享操作从而为群集呈现分布式文件系统映像的群集服务。举例来说,媒体存取层412可在节点的各种群集服务系统之间发送及接收信息包以使节点中的每一者中的经复制数据库同步。
[0059]另外,群集组构(CF)接口模块440化?接口模块44(^、44(?)可使用CF协议470来促进N模块410与D模块450之间的群集内通信。举例来说,D模块450可展露N模块410 (或未展示的另一 D模块)向其发出呼叫的CF应用程序编程接口(API)。为此目的,可将CF接口模块440组织为CF编码器/解码器,其分别使用本地程序调用(LPC)及远程程序调用(RPC)在驻留于相同节点及远程节点上的D模块之间传达文件系统命令。
[0060]虽然本文将本发明的实施例展示为在存储服务器的所图解说明组件及层内实施基于扩展区的架构,但将了解,在其它实施例中可在存储服务器的其它模块或组件中实施基于扩展区的架构。另外,可将基于扩展区的架构实施为存储服务器内的软件执行处理器、硬件或固件中的一者或其组合。如此,根据本发明的教示,基于扩展区的架构可直接或间接地与存储操作系统的模块介接。
[0061 ] 如本文中所使用,术语“存储操作系统”通常指代可在计算机上操作以执行管理数据存取的存储功能的计算机可执行代码且可实施通用操作系统的数据存取语义。还可将所述存储操作系统实施为微核、在通用操作系统(例如UNIX?或Windows?:)上操作的应用程序或实施为具有可配置功能性的通用操作系统(其经配置以用于如本文中所描述的存储应用)。
[0062]另外,所属领域的技术人员将理解,本文中所描述的发明可适用于体现为或包含存储系统的任何类型的专用(例如,文件服务器或存储服务器具)或通用计算机,包含独立计算机或其部分。此外,本发明的教示可适于多种存储系统架构,包含但不限于网络附接存储环境、存储区域网络及直接附接到客户端或主机计算机的磁盘组合件。因此,术语“存储系统”应广泛地理解为除经配置以执行存储功能且与其它设备或系统相关联的任何子系统以外还包含此些布置。应注意,尽管此描述是依据随处写入文件系统来写的,但本发明的教示可与任何适合文件系统一起利用,包含常规在位写入文件系统。
[0063]图5图解说明基于扩展区的存储架构495的示范性框图。基于扩展区的架构495包含卷层505及聚合体或区管理器层510。卷层505包含一个或一个以上间接卷515以将来自客户端202的I/O请求间接映射到存储磁盘271内的一个或一个以上物理块。对于一个实施例,与针对每一数据块使用一个间接卷条目(例如,灵活卷110中)的现有技术基于块的实施方案相比,存储服务器210针对每一扩展区使用间接卷515中的一个条目。对于一个实施例,所述I/O请求借助于文件块编号(FBN)来参考数据。FBN指代卷5 15中由客户端202参考的数据块。存储服务器210使用FBN作为密钥来存取扩展区识别符。扩展区指代FBN空间中的一个或一个以上数据块的邻接群组。聚合体层510包含扩展区到物理块映射520及一个或一个以上物理卷525。扩展区到物理块映射520将扩展区识别符(例如,借助于FBN在卷层505中存取)映射到另一扩展区的指针或映射到物理卷525中的一个或一个以上物理卷块编号(PVBN)。
[0064]扩展区到物理块映射520的基于扩展区的条目提供每聚合体间接性。相比之下,卷容器120的虚拟卷块编号(VVBN)提供每卷间接性。如本文中所使用,每聚合体基于扩展区的条目指代扩展区跨越聚合体内的卷边界是唯一的。每卷间接条目指代条目在卷边界内是唯一的。对于每聚合体间接性,当存储服务器210拷贝、移动物理块或对其做出其它改变时,在聚合体层510内于扩展区到物理块映射520中反映所述改变。然而,不需要将这些改变传播到卷层505中,因为扩展区识别符不需要改变。此使得能够在不与卷层505通信的情况下发生扩展区的压缩、解压缩、共享及共享终止。可容易地跨越卷边界来共享块,从而实现交叉卷去重复。可在单一遍次中对扩展区到物理块映射520执行段清理及相关磁盘整理技术,所有这些均不必将改变向上传播到卷层505中。
[0065]图6展示基于扩展区的存储架构内的示范性基于扩展区的经分类数据结构600。对于一个实施例,基于扩展区的经分类数据结构为B+树。或者,基于扩展区的经分类数据结构600为能够在至多0(log η)时间中执行查找及修改操作的另一类型的树或经分类数据结构,其中η为文件中的数据块的数目。索引节点605指向基于扩展区的树/经分类数据结构600的根且含有卷/文件元数据以及到数据块620或间接块610/615的指针。举例来说,在B+树中,间接块称为内部节点610/615且数据块称为页节点620。对于一个实施例,索引节点605指向内部节点610/615的一个或一个以上分支。对于替代实施例,索引节点605直接指向页节点620。对于一个实施例,内部节点610/615存储到其它节点的指针,但不存储数据,例如,例如FBN、扩展区识别符、PVBN等数据。另一方面,页节点620存储数据,例如,例如FBN、扩展区识别符、PVBN等数据。
[0066]对于一个实施例,扩展区的长度变化。对于一个实施例,将扩展区的长度表达为扩展区内的固定大小的数据块的数目。举例来说,仅含有单一 4ΚΒ块的扩展区将具有长度1,含有两个4ΚΒ块的扩展区将具有长度2等。对于一个实施例,扩展区具有由用户I/O或写入分配驱动的最大长度(例如,扩展区具有64个块的最大长度)。对于替代实施例,可一致地定义扩展区的长度(例如,8个块)。
[0067]对于利用具有可变长度的扩展区的基于扩展区的树600的实施例,甚至在相同大小的两个文件之间树的高度也为可变的。对于一个实施例,内部节点610/615的跨度也为可变的。如本文中所使用,间接块的跨度指代所述间接块所指代的块的数目。作为比较,在WAFL的先前实施方案中,间接块的跨度为固定的:传统卷(tradvol)间接块的跨度为1024个块,灵活卷(flexvol)间接块的跨度为510个块(例如,如存储于灵活卷110中),且64位灵活卷间接块的跨度为255个块(例如,如存储于灵活卷110中)。
[0068]另外,在WAFL的先前实施方案中,含有N个块的邻接扩展区将使用与N个随机定位块相同量的间接空间,因为扩展区的每一数据块将由卷层中的单独间接条目表示。然而,基于扩展区的经分类数据结构600大大减少了所使用的间接空间的量,因为卷层条目是每扩展区而非每块的。举例来说,考虑如在WAFL的先前实施方案中实施的存储含有532,685,800个数据字节(大致508MB)的文件的64位灵活卷。所述灵活卷包含具有255个条目(255的跨度)的间接块且每一条目指代一 4KB块。灵活卷使用指向510个层级I间接块(指向130050个4KB层级O数据块)的两个层级2间接块来表示508MB文件。在基于扩展区的经分类数据结构600中,代替针对每一 4KB块使用一个条目,存储服务器210针对每一扩展区使用一个条目。扩展区可比单一 4KB块长。举例来说,扩展区为一个或一个以上4KB块的邻接群组。使用具有16块长的扩展区及每块127个条目的基于扩展区的经分类数据结构600,存储服务器210仅用8129个页节点620及65个内部节点610/615来表示130050 4KB,从而导致间接块元数据的87%节省。
[0069]对于一个实施例,存储服务器210使用基于扩展区的经分类数据结构600来实施间接卷515。对于一个实施例,存储服务器210将每一间接卷515实施为B+树。图7展示用于实施间接卷515的基于扩展区的数据结构600的页节点620的示范性卷层间接条目700。卷层间接条目700存储FBN 705、对应扩展区识别符710及扩展区的长度715。存储服务器210使用FBN 705作为一级存储密钥来导览基于扩展区的经分类数据结构600并找出对应于FBN 705的扩展区识别符710。对于一个实施例,FBN 705为48个位,且扩展区识别符710为48个位,且长度715为8个位。或者,存储服务器210针对FBN 705、扩展区识别符710或长度715中的一者或一者以上使用不同大小。举例来说,在替代实施例中,扩展区识别符710可为64个位长,以(例如)在块的偏移中提供512字节粒度。对于一个实施例,扩展区长度715变化。对于替代实施例,扩展区长度715为固定的。
[0070]对于一个实施例,FBN 705为51个位以在块的偏移中提供512字节粒度(其中48位FBN 705提供FBN偏移的4KB字节粒度)。由于存储服务器210使用基于扩展区的经分类数据结构600来存储间接块,因此不需要基于块大小而对准FBN(例如,512字节偏移对准及4KB块)。基于扩展区的经分类数据结构600基于FBN及扩展区的长度而存储整个扩展区的条目。基于扩展区的经分类数据结构600并不仅仅存储所述FBN处的块且那么需要对应于每一后续FBN的后续条目。举例来说,假定各自长度为16个块的两个毗连扩展区,则基于扩展区的经分类数据结构600中针对这两个扩展区的条目将具有偏移至少16个块的FBN。在遍历基于扩展区的经分类数据结构600时,存储服务器210不需要假定每一条目分离相同偏移或条目的FBN偏移块大小的整数倍。另外,由使用基于扩展区的经分类数据结构600导致的间接元数据的节省补偿针对每一 FBN 705使用三个额外位。在卷层内提供512字节偏移粒度消除由FBN空间中的块与聚合体空间中的块之间的不对准产生的先前所描述的复杂化。一旦将FBN映射到扩展区识别符710,便可将所述扩展区识别符映射到扩展区(如下文所描述),而不必担心不对准,因为聚合体层在聚合体内维持一致的块大小偏移对准。
[0071]存储服务器210在写入分配期间分配扩展区识别符710。对于一个实施例,存储服务器210从有限池分配扩展区识别符710。或者,扩展区识别符710为永不绕回的单调增加的值。
[0072]对于一个实施例,扩展区的长度715用于一致性检查,如下文参考图8所描述。
[0073]在用于实施间接卷515的基于扩展区的经分类数据结构600中不使用WAFL的先前实施方案的每卷容器文件120。代替每卷容器文件120,存储服务器210使用扩展区到物理块映射520。如上文所描述,扩展区到物理块映射520的使用可导致减少的间接元数据。然而,间接卷块不再含有到PVBN的经高速缓存指针。对扩展区的存取涉及存储服务器210查找间接卷515中的扩展区识别符710并查找扩展区到物理块映射520中的PVBN(例如,借助于指针)。此额外I/O查找的计算额外开销由基于扩展区的架构495的特征中的一些特征抵消。举例来说,I/o存取是每扩展区而非每块的,且因此通过间接卷515及扩展区到物理块映射520中的每一者的单一 I/O存取来存取多个块。另外,基于扩展区的架构495获得可在变更扩展区识别符710的情况下执行的压缩、去重复、段清理等方面的优点。例如去重复等动作可容易横跨聚合体而非仅仅单一卷,且不需要将(例如)由压缩及段清理产生的对块的许多改变向上传播到间接卷515 (例如,以如同在WAFL的先前实施方案中校正经高速缓存间接指针)。
[0074]对于一个实施例,存储服务器210使用基于扩展区的经分类数据结构600来实施扩展区到物理块映射520。对于一个实施例,存储服务器210将扩展区到物理块映射520实施为B+树。图8展示用于实施扩展区到物理块映射520的基于扩展区的经分类数据结构600的页节点620的示范性扩展区映射条目800。用于实施扩展区到物理块映射520的基于扩展区的经分类数据结构600的页节点620存储扩展区识别符805、参考810 (例如到PVBN或其它扩展区识别符的指针)、扩展区的偏移815及扩展区的长度820。如本文中所使用,扩展区的偏移为距组成扩展区的块的邻接群组的第一块的以块为单位的距离。对于一个实施例,扩展区识别符805为48个位,指针/扩展区识别符810为48个位,偏移815为8个位,且长度820为8个位。对于替代实施例,针对扩展区映射条目800的每一部分使用不同数目个位。
[0075]对于一个实施例,每一扩展区映射条目800包含直接到PVBN或到直接参考PVBN的另一扩展区识别符805的指针或其它参考810。对于一个实施例,每一 PVBN仅被一个扩展区拥有,且参考PVBN的任何其它扩展区借助于参考拥有者扩展区而也为如此。因此,为了到达PVBN而对给定扩展区的最大额外查找不应多于一个以上。此最大值防止扩展区映射条目800中的间接参考层级变得任意深且花费任意时间量(如依据磁盘I/O操作来测量,假定每一扩展区条目可能存储于不同磁盘块内)。由于扩展区具有单一拥有者,因此存储服务器210可使用拥有者扩展区识别符作为标签、唯一编号或用于丢失写入检测的目的的其它上下文。
[0076]对于替代实施例,所有扩展区识别符805直接映射到PVBN且PVBN可被一个以上扩展区拥有。对于包含丢失写入检测的实施例,存储服务器210 (例如)经由单独表创建与扩展区识别符805分离/不同(此归因于多个扩展区识别符参考单一 PVBN的可能性)的上下文、标签或唯一编号。
[0077]对于一个实施例,存储服务器210通过将如存储于卷层505中的扩展区的长度715与如存储于聚合体层510中的扩展区的长度820进行比较来检查数据一致性。
[0078]对于一个实施例,存储服务器210利用有限数目个扩展区识别符。如果扩展区识别符为将重新使用的候选者,那么(例如)根据删除扩展区的请求,存储服务器210首先确定其它扩展区是否指代所述扩展区识别符。如果一个或一个以上扩展区参考候选扩展区识别符,那么存储服务器210确保一个或一个以上扩展区继续指向相同数据(例如,通过将扩展区中的一者变更为直接参考对应PVBN且将其它扩展区变更为参考所述经变更扩展区)。对于一个实施例,存储服务器210 (例如)在一个或一个以上元文件中维持由扩展区对每一扩展区及由扩展区对每一 PVBN的参考的参考计数。参考计数使得存储服务器210能够知晓其它扩展区是否将受对扩展区/PVBN执行的操作(例如,重新分配、段清理等)影响。存储服务器210在一个或一个以上日志文件中追踪参考计数的递增及递减。举例来说,当分配新扩展区/PVBN时,当共享(例如,经由克隆创建、快照创建或去重复)扩展区识别符时等,存储服务器210将递增参考计数。对于一个实施例,存储服务器210使用日志文件积累递增及递减,且对参考计数元文件做出批次更新(例如,在一致性点处)。对于一个实施例,存储服务器210在分配新扩展区/PVBN时针对一 PVBN直接(绕过日志文件)将参考计数从O递增到I且经由相应参考计数日志文件执行参考计数的所有其它递增及递减。
[0079]图9展示在卷层505及聚合体层510中查找以将FBN映射到物理卷525中的PVBN的示范性序列。举例来说,当存储服务器210接收到包含FBN 705的I/O请求时,存储服务器210在间接卷515中使用所述FBN作为密钥来查找卷层间接条目700中的扩展区识别符710。存储服务器210使用扩展区识别符710作为密钥来查找扩展区到物理块映射520中的扩展区映射条目800。存储服务器210使用指针810来存取物理卷525中的PVBN 905。在此实例中,偏移815为零。如果偏移为正值,那么存储服务器210将存取在PVBN 905之后的一个或一个以上块(例如,PVBN 910、PVBN 915等)。如果长度820大于1,那么存储服务器210将存取PVBN 905及一个或一个以上后续块(例如,PVBN 910、PVBN 915等)。
[0080]图10展示在卷层505及聚合体层510中查找以将FBN映射到物理卷525中的PVBN的另一示范性序列。类似于参考图9所描述的实例,存储服务器210接收包含FBN 705的I/O请求并在间接卷515中使用所述FBN作为密钥来查找卷层间接条目700中的扩展区识别符710。存储服务器210使用扩展区识别符710作为密钥来查找扩展区到物理块映射520中的第一扩展区映射条目800。在此实例中,扩展区识别符805与到PVBN 905的指针810及到第二扩展区映射条目1000的指针或扩展区识别符810相关联。对于一个实施例,第一扩展区具有多个扩展区映射条目800,对于每一指针或参考810—个条目。举例来说,每一条目800将包含相同扩展区识别符805,但包含指针810、偏移815与长度820的不同组合。为简明起见,图10图解说明包含多个指针810、偏移815及长度820的单一扩展区映射条目。存储服务器210使用指针810来存取物理卷525中的PVBN 905。存储服务器210使用扩展区识别符810来查找扩展区到物理块映射520中的第二扩展区映射条目1000。存储服务器210使用指针1010来存取物理卷525中的PVBN 915。
[0081]图11是在基于扩展区的架构中处理读取请求的示范性方法1100。在处理框1105处,存储服务器210从客户端202接收包含FBN的读取请求。对于一个实施例,所述读取请求包含若干个待读取的数据块。或者,所述读取请求假定将返回预定义数目个数据块(例如,如由扩展区的长度715/820定义的整个扩展区,跟在FBN之后到扩展区的末尾的块等)。在处理框1110处,存储服务器210使用所述FBN来遍历卷层基于扩展区的经分类数据结构600 (例如,间接卷515)并检索对应于所述FBN的扩展区识别符710。如果读取请求中所包含的FBN与存储于卷层基于扩展区的经分类数据结构600中的FBN705准确匹配,那么存储服务器210基于扩展区识别符710及偏移零而处理所述读取请求。如果所述读取请求包含不匹配存储于卷层基于扩展区的经分类数据结构600中的FBN 705的FBN,但所请求FBN及数据块集合含在现有扩展区内或与其重叠,那么存储服务器210确定读取请求中所包含的FBN与存储于卷层基于扩展区的经分类数据结构600中的参考重叠扩展区的FBN 705之间的偏移。存储服务器210使用所检索扩展区识别符710及所确定偏移来处理所述读取请求。在处理框1115处,存储服务器210使用所检索扩展区识别符710来遍历聚合体层基于扩展区的经分类数据结构600 (例如,扩展区到物理块映射520)并检索所述扩展区的对应条目800。在决策框1120处,存储服务器确定条目800是否识别或以其它方式指代数据块(例如,到PVBN的指针)或另一扩展区(例如,使用第二扩展区识别符)。如果条目800指代扩展区,那么在处理框1125处,存储服务器210使用第二扩展区识别符810来遍历聚合体层基于扩展区的经分类数据结构600以检索第二扩展区条目。如上文所论述,对于一个实施例,第一条目800将指代第二条目1000,而第二条目1000又指代数据块(但并非指代第三条目的第二条目1000)。如果第一条目800指代数据块905,或在检索第二条目1000后,存储服务器210即刻在处理框1130处使用参考来检索一个或一个以上数据块。在决策框1135处,存储服务器210确定在聚合体层基于扩展区的经分类数据结构600中是否存在包含所检索扩展区识别符710的另一条目800。如果在聚合体层基于扩展区的经分类数据结构600中存在包含所检索扩展区识别符710的另一条目800,那么存储服务器210继续如上文所描述而在决策框1120处检索数据块。如果在聚合体层基于扩展区的经分类数据结构600中不存在针对所检索扩展区识别符710的额外条目800,那么存储服务器210在处理框1140处将所请求扩展区/数据块返回到客户端202。
[0082]举例来说,参考图9,在接收到对与FBN 705匹配的FBN处的四个块的读取请求后,存储服务器210将即刻通过遍历卷层及聚合体层基于扩展区的经分类数据结构600以分别检索扩展区识别符710及指代PVBN 905的参考810来处理所述请求。存储服务器210将检索PVBN 905,910,915及920并将其返回到客户端202。类似地,如果第一扩展区映射条目800指代第二扩展区映射条目1000,那么存储服务器210将遍历聚合体层基于扩展区的经分类数据结构600以检索指代PVBN 915的参考1010。存储服务器210将检索PVBN 915、920,925及930并将其返回到客户端202。
[0083]对于其中FBN不匹配所存储FBN 705的实例,比如说,FBN 705具有值50且所请求FBN具有值51。如果与FBN 705相关联的扩展区具有八个块的长度且读取请求是针对四个数据块,那么存储服务器210将确定与FBN 705相关联的扩展区与所请求数据块重叠(例如,通过将FBN 705及长度715与所请求FBN及所请求块的数目进行比较)。存储服务器210将通过遍历卷层及聚合体层基于扩展区的经分类数据结构600以分别检索扩展区识别符710及指代PVBN 905的参考810来处理所述请求。存储服务器210将在所请求FBN与所存储FBN 705之间添加偏移(其为I个块),并检索在PVBN 910处开始的四个块(PVBN910,915,920 及 925)。
[0084]图12是在基于扩展区的架构中处理写入请求的示范性方法1200。在处理框1205处,存储服务器210从客户端202接收包含FBN及待写入的数据块的写入请求。对于一个实施例,客户端202提供待写入的数据。或者,客户端202提供对待写入的数据的参考。在处理框1210处,存储服务器210将所述数据块写入到存储装置271。在决策框1215处,存储服务器210确定在卷层经分类数据结构600中是否存在包含与随所述写入请求一起提供的FBN匹配或重叠的FBN 705的现有条目。如果存在匹配或重叠的扩展区,那么存储服务器继续进行以处理盖写请求1300,如下文参考图13进一步详细地描述。在处理框1220处,如果不存在匹配或重叠的扩展区,那么存储服务器分配扩展区识别符805并为聚合体层基于扩展区的经分类数据结构600 (例如,扩展区到物理块映射520)创建新条目800,其包含扩展区识别符805、对新存储的扩展区的参考810、偏移815及扩展区的长度820。在处理框1225处,存储服务器210使用所分配扩展区识别符805作为密钥来遍历聚合体层基于扩展区的经分类数据结构600并添加新创建的条目800。在处理框1230处,存储服务器210为卷层基于扩展区的经分类数据结构600 (例如,间接卷515)创建新条目700,其包含由客户端202随写入请求一起提供的FBN 705、所分配扩展区识别符710/805及扩展区的长度715/820。在处理框1235处,存储服务器210使用FBN 705来遍历卷层基于扩展区的经分类数据结构600并添加新创建的条目700。对于一个实施例,存储服务器210将已成功处理写入请求的指示返回到客户端202。
[0085]图13是在基于扩展区的架构中处理盖写请求的示范性方法1300。图14图解说明在基于扩展区的架构中对扩展区的示范性部分盖写。在处理框1305处,存储服务器210分配待写入的扩展区/部分扩展区的扩展区识别符805。在决策框1310处,存储服务器210确定随写入请求一起提供的FBN与重叠扩展区的FBN 705之间的偏移是否为零。举例来说,图14中所图解说明的部分盖写是针对从FBN 705(例如,值50)偏移四个数据块的FBN(例如,值54)及对盖写单一数据块925的请求。
[0086]在处理框1315处,如果存在非零偏移,那么存储服务器210创建新扩展区映射条目800,其包含新分配的扩展区识别符805、对现有扩展区识别符的参考810、等于零的偏移815及将不盖写的现有数据块的长度820 (例如,随写入请求一起提供的FBN与现有扩展区的FBN 705之间的偏移的值)。再次参考图14中的实例,存储服务器分配扩展区识别符2、对扩展区识别符I (EID I指向Pl)的条目800的参考810、为零的初始偏移及将不盖写的PVBN 905-920为四的长度820。
[0087]在处理框1320处,如果随写入请求一起提供的FBN从重叠扩展区的FBN 705的偏移为零或在创建将不盖写的初始块集合的新扩展区映射条目800之后,存储服务器210创建新扩展区映射条目800,其包含新分配的扩展区识别符805、对随盖写请求一起提供的所存储数据块的参考810、其中新存储的数据块开始的从参考810的偏移815及新数据的以块为单位的长度820。再次参考图14中的实例,存储服务器分配扩展区识别符2、对新存储的PVBN 1405的参考P2及偏移O及长度I。
[0088]在决策框1325处,存储服务器210确定盖写过程是否已到达现有扩展区的末尾。对于一个实施例,存储服务器210确定从新数据块的现有扩展区的开始的偏移与新数据块的长度的和是否大于或等于现有扩展区的长度,以确定在完成过程1300的盖写部分之后是否已到达现有扩展区的末尾。再次参考图14中的实例,新数据块具有偏移4及长度I。假定偏移与长度的和5小于现有扩展区的长度8,那么仍将需要寻址现有扩展区的其余部分。
[0089]在处理框1330处,如果盖写尚未到达现有扩展区的末尾,那么存储服务器210创建新扩展区映射条目800,其包含新分配的扩展区识别符805、对现有扩展区识别符的参考810、等于将不盖写的现有块的其余部分的第一块的偏移815 (从现有扩展区的开始到待盖写的第一块的偏移+新数据的长度)及将不盖写的现有数据块的其余部分的长度820。再次参考图14中的实例,三个块(PVBN 930、935及940)也将不盖写。存储服务器分配扩展区识别符2、对扩展区识别符I (EID I指向Pl)的条目800的参考810、从PVBN 905起指代PVBN 930的五个块的偏移及三个块的长度820。
[0090]在处理框1335处,存储服务器210使用所分配扩展区识别符805作为密钥来遍历聚合体层基于扩展区的经分类数据结构600并添加一个或一个以上新扩展区映射条目800。在处理框1340处,存储服务器210在卷层基于扩展区的经分类数据结构600中与重叠扩展区的FBN 705相关联的现有条目700中用所分配扩展区识别符805盖写现有扩展区识别符710。
[0091]再次参考图14中的实例,已用数据块PVBN 1405有效地盖写PVBN 925处的数据块,如通过以虚线及阴影勾画PVBN 925所图解说明。所述盖写利用块共享来仅写入一个新数据块并使用参考810来存取借助于现有扩展区而不盖写的数据块。另外,不需要在执行盖写操作之前读取现有扩展区的数据块。对于一个实施例,如果扩展区映射条目800识别或以其它方式指代包含对PVBN 925处的数据块的参考(例如,通过对扩展区识别符I的参考)的现有扩展区映射条目800,那么所述扩展区保持不被盖写改变,因为现有扩展区仍指代PVBN 905,其中偏移为零,且长度为八。
[0092]对于替代实施例,当存储服务器210检测到盖写请求时,存储服务器210读取将不盖写的数据块并用新数据块作为新扩展区来重写所述数据块,所述新扩展区可在不依赖于与现有扩展区的块共享的情况下(例如,在不参考现有扩展区的扩展区识别符805的情况下)通过扩展区映射条目800直接存取。对于一个实施例,存储服务器210包含在上文参考图12-14所描述的块共享盖写与交替非共享盖写之间交替的设定,作为空间效率(块共享)与针对新盖写的扩展区处的后续读取请求中的速度效率(非共享)之间的折衷。
[0093]因此,如本文中所描述,在计算机系统中实施基于扩展区的架构的实施例。实际上,方法1100、1200及1300可构成由计算机可执行指令组成的一个或一个以上程序。计算机可执行指令可以计算机程序设计语言(例如,软件)来编写或可以固件逻辑或以硬件电路来体现。用以实施持久高速缓冲存储器的计算机可执行指令可存储于机器可读存储媒体上。如本文中所使用的术语“计算机可读存储媒体”或“非暂时计算机可读存储媒体”包含提供(即,存储及/或发射)呈可由机器(例如,计算机、网络装置、个人数字助理(PDA)、制造工具、具有一个或一个以上处理器的集合的任何装置等)存取的形式的信息的任何机制。如本文中所使用的术语“非暂时计算机可读存储媒体”不包含信号、载波等。如本文中所使用的术语RAM既定涵盖所有易失性存储媒体,例如动态随机存取存储器(DRAM)及静态RAM(SRAM)。计算机可执行指令可存储于非易失性存储装置(例如硬磁盘、光盘)上,且在处理器对软件的执行期间通常通过直接存储器存取过程写入到RAM/存储器中。所属领域的技术人员将立即认识到,术语“机器可读存储媒体”及“计算机可读存储媒体”包含可由处理器存取的任何类型的易失性或非易失性存储装置。举例来说,机器可读取存储媒体包含可记录/不可记录媒体(例如,只读存储器(ROM);随机存取存储器(RAM);磁盘存储媒体;光学存储媒体;快闪存储器装置等)。
[0094]虽然已参考特定示范性实施例描述了本发明,但将认识到本发明并不限于所描述的实施例,而是可在所附权利要求书的精神及范围内在修改及变更的情况下加以实践。因此,应将说明书及图式视为具有说明性意义而非限制性意义。
[0095]因此,明确打算使本发明的实施例仅由所附权利要求书及其等效内容限制。
【权利要求】
1.一种计算机化方法,其包括: 由存储服务器从客户端接收对扩展区的读取请求,其中所述扩展区包含邻接数据块的群组且所述读取请求包含文件块编号FBN ; 由所述存储服务器从第一经分类数据结构检索第一扩展区识别符,其中所述存储服务器使用所述所接收FBN来遍历所述第一经分类数据结构直到所述第一扩展区识别符 '及由所述存储服务器从第二经分类数据结构检索对所述第一扩展区的第一参考,其中所述存储服务器使用所述所检索第一扩展区识别符来遍历所述第二经分类数据结构直到所述第一参考,且其中所述第二经分类数据结构跨越多个卷为全局的; 由所述存储服务器使用所述第一参考从存储装置检索所述扩展区;及 由所述存储服务器将所述扩展区返回到所述客户端。
2.根据权利要求1所述的计算机化方法,其中所述第一参考识别物理块编号PVBN。
3.根据权利要求2所述的计算机化方法,其中每一PVBN由不多于一个扩展区识别符直接参考。
4.根据权利要求1所述的计算机化方法,其中所述第一参考识别第二扩展区识别符且所述第二扩展区识别符包含识别PVBN的第二参考。
5.根据权利要求1所述的计算机化方法,其中所述存储服务器使用所述所检索第一扩展区识别符来遍历所述第二经分类数据结构直到包含所述第一参考的多个参考,其中所述存储服务器使用所述多个参考来检索所述扩展区。
6.根据权利要求1所述的计算机化方法,其中扩展区在长度上变化。
7.根据权利要求1所述的计`算机化方法,其中FBN偏移粒度小于预定块大小。
8.—种存储服务器,其包括: 存储器; 处理器,其通过总线耦合到所述存储器,其中所述处理器执行致使所述处理器进行以下操作的指令 从客户端接收对扩展区的读取请求,其中所述扩展区包含邻接数据块的群组且所述读取请求包含文件块编号FBN ; 从第一经分类数据结构检索扩展区识别符,其中所述存储服务器使用所述所接收FBN来遍历所述第一数据结构直到所述第一扩展区识别符; 从第二经分类数据结构检索对所述扩展区的第一参考,其中所述存储服务器使用所述所检索第一扩展区识别符来遍历所述第二数据结构直到所述第一参考,且其中所述第二经分类数据结构跨越多个卷为全局的; 使用所述第一参考从存储装置检索所述扩展区;及 将所述扩展区返回到所述客户端。
9.根据权利要求8所述的存储服务器,其中所述第一参考识别物理块编号PVBN。
10.根据权利要求9所述的存储服务器,其中每一PVBN由不多于一个扩展区识别符直接参考。
11.根据权利要求8所述的存储服务器,其中所述第一参考识别第二扩展区识别符且所述第二扩展区识别符包含识别PVBN的第二参考。
12.根据权利要求8所述的存储服务器,其中所述存储服务器使用所述所检索第一扩展区识别符来遍历所述第二经分类数据结构直到包含所述第一参考的多个参考,其中所述存储服务器使用所述多个参考来检索所述扩展区。
13.根据权利要求8所述的存储服务器,其中扩展区在长度上变化。
14.根据权利要求8所述的存储服务器,其中所述存储服务器利用小于预定块大小的FBN偏移粒度。
15.一种计算机化方法,其包括: 由存储服务器从客户端接收对包含邻接数据块的群组的第一扩展区的写入请求及文件块编号FBN ; 由所述存储服务器在第一经分类数据结构中写入第一条目,所述第一条目包含第一扩展区识别符及存储装置中对所述第一扩展区的第一参考,其中所述第一扩展区识别符用于确定所述第一条目在所述第一经分类数据结构中的位置;及 由所述存储服务器在第二经分类数据结构中写入第二条目,所述第二条目包含所述FBN及所述第一扩展区识别符,其中所述FBN用于确定所述第二条目在所述第二经分类数据结构中的位置,且其中所述第二经分类数据结构跨越多个卷为全局的。
16.根据权利要求15所述的计算机化方法,其中所述第一参考识别物理卷块编号PVBN0
17.根据权利要求15所述的计算机化方法,其中所述第一参考识别第二扩展区识别符且所述第二扩展区识别符包含识别PVBN的第二参考。
18.根据权利要求15所述的计算机化方法,其中所述写入请求是盖写第二扩展区的一部分的请求,其中所述写入所述第二条目包含用所述第一扩展区识别符盖写第二扩展区识别符,且其中所述第一条目进一步包含所述第二扩展区的所述第二扩展区识别符、所述第二扩展区内指示所述第二扩展区内待盖写的块的开始的偏移及从所述偏移起待盖写的块的数目。
19.根据权利要求18所述的计算机化方法,其中所述盖写所述第二扩展区的一部分的请求包含所述第二扩展区内指示所述第二扩展区内将不盖写的块的开始的第二偏移及从所述偏移起将不盖写的块的数目。
20.—种存储服务器,其包括: 存储器; 处理器,其通过总线耦合到所述存储器,其中所述处理器执行致使所述处理器进行以下操作的指令 从客户端接收对包含邻接数据块的群组的第一扩展区的写入请求及文件块编号FBN, 在第一经分类数据结构中写入第一条目,所述第一条目包含第一扩展区识别符及存储装置中对所述第一扩展区的第一参考,其中所述第一扩展区识别符用于确定所述第一条目在所述第一经分类数据结构中的位置,及 在第二经分类数据结构中写入第二条目,所述第二条目包含所述FBN及所述第一扩展区识别符,其中所述FBN用于确定所述第二条目在所述第二经分类数据结构中的位置,且其中所述第二经分类数据结构跨越多个卷为全局的。
21.根据权利要求20所述的存储服务器,其中所述第一参考识别物理卷块编号PVBN。
22.根据权利要求20所述的存储服务器,其中所述第一参考识别第二扩展区识别符且所述第二扩展区识别符包含识别PVBN的第二参考。
23.根据权利要求20所述的存储服务器,其中所述写入请求是盖写第二扩展区的一部分的请求,其中所述写入所述第二条目包含用所述第一扩展区识别符盖写第二扩展区识别符,且其中所述第一条目进一步包含所述第二扩展区的所述第二扩展区识别符、所述第二扩展区内指示所述第二扩展区内待盖写的块的开始的偏移及从所述偏移起待盖写的块的数目。
24.根据权利要求23所述的存储服务器,其中所述盖写所述第二扩展区的一部分的请求包含所述第二扩展区内指示所述第二扩展区内将不盖写的块的开始的第二偏移及从所述偏移起将不盖写的块的数目。
25.一种计算机化方法,其包括: 由存储服务器使用将卷层中的条目映射到聚合体层中的条目的基于扩展区的架构来存储数据,其中所述卷层包括包含每一扩展区的条目的多个间接卷,且其中所述聚合体层包括跨越所述多个间接卷的边界共享所述扩展区内的数据块的扩展区到物理块映射。
26.根据权利要求25所述的方法,其中所述存储服务器跨越所述多个间接卷的边界对数据进行去重复。
27.根据权利要求25所述的方法,其中所述间接卷条目包含文件块编号到扩展区识别符映射,且其中所述扩展区到物理块映射中的所述条目包含扩展区识别符到物理块映射。
28.根据权利要求27所述的方法,其中所述存储服务器执行段清理并在不改变所述扩展区识别符的情况下更新所述扩展区`到物理映射以反映对所述物理块的改变。
【文档编号】G06F3/06GK103502926SQ201280021084
【公开日】2014年1月8日 申请日期:2012年4月17日 优先权日:2011年4月29日
【发明者】里卡德·E·费丝, 苏布拉马尼亚姆·佩里亚甘拉姆, 桑迪普·亚达夫, 阿希什·普拉卡什, 布莱克·刘易斯, 杰夫·基梅尔, 史蒂夫·丹尼尔 申请人:美国网域存储技术有限公司

最新回复(0)