CN102460439A - 通过条带式文件系统中的容量平衡进行数据分布 - Google Patents
通过条带式文件系统中的容量平衡进行数据分布 Download PDFInfo
- Publication number
- CN102460439A CN102460439A CN2010800303305A CN201080030330A CN102460439A CN 102460439 A CN102460439 A CN 102460439A CN 2010800303305 A CN2010800303305 A CN 2010800303305A CN 201080030330 A CN201080030330 A CN 201080030330A CN 102460439 A CN102460439 A CN 102460439A
- Authority
- CN
- China
- Prior art keywords
- node
- striping
- volume
- nodes
- data structure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种数据分布技术被配置成在条带式文件系统中提供容量平衡。当新节点被添加到条带式卷集中时,演进条带化表以容纳新添加的节点。描述性地,集群的每个节点与将例如,该节点可用的处理器速度、处理器数量、硬件配置和/或软件纳入考虑的容量值相关联。在条带化表的演进过程中,该技术如此在节点间分配SVS的条带使得根据每个节点的容量值将它们最优地分配给各节点。通过利用包括容量值的演进式条带化表,可在条带式卷集中将异构节点利用到最大容量,由此减少未被充分利用的处理资源。
Description
相关申请
本申请有关现于2005年9月1日公开的,美国公开号为US2005-0192932的、Richard Jernigan等人的、标题为“STORAGESYSTEM ARCHITECTURE FOR STRIPING DATA CONTAINERCONTENT ACROSS VOLUMES OF A CLUSTER(用于跨集群的卷条带化数据容器内容的存储系统架构)”、2005年4月29日提交的、申请序列号为11/119,278的美国专利申请,其内容通过引用结合于此。
技术领域
本发明涉及条带式文件系统,尤其涉及跨条带式文件系统的多个节点的容量平衡。
背景技术
存储系统通常包括一个或多个存储器件,根据需要,可向所述存储器件中输入信息并从其中获得信息。存储系统包括存储操作系统,该存储操作系统通过尤其是调用存储操作来功能性地组织该系统以支持该系统所实现的存储服务。存储系统可按照各种存储架构实现,所述存储架构包括但不限于,网络连接存储(NAS)环境、存储区域网络(SAN)和直接连接到客户机或主机计算机的磁盘组件。存储器件通常是组织为磁盘阵列的磁盘驱动器,其中术语“磁盘”通常描述自包含旋转式磁介质存储器件。在本上下文中术语磁盘与硬盘驱动器(HDD)或直接访问存储器件(DASD)同义。应当注意,在替代实施例中,存储器件可包括固态器件,例如闪存、电池备份非易失性随机存取存储器等。因此,尽管此描述按照磁盘来撰写,然而那些实施例应当仅被视为示例性的。
存储系统的存储操作系统可实现高级别模块,诸如文件系统,以将存储在卷上的信息逻辑地管理为诸如文件和逻辑单元的数据容器的分层结构。例如,每个“磁盘上”文件可被实现为被配置成存储信息(诸如文件的实际数据)的数据结构(即,磁盘块)的组。这些数据块被组织在由文件系统维护的卷块号(vbn)空间中。文件系统还可向文件中的每个数据块分配相应的“文件偏移量”或文件块号(fbn)。文件系统通常以每文件为基础分配fbn的序列,而vbn是在更大的卷地址空间上分配的。文件系统将vbn空间内的数据块组织为“逻辑卷”;每个逻辑卷可以与其自己的文件系统相关联,尽管不必然如此。
已知的文件系统类型是不复写磁盘上的数据的任意位置写入(write-anywhere)文件系统。如果数据块被从磁盘取回(读取)到存储系统的存储器中并用新数据而“变无效”(即,更新或修改),则该数据块此后被存储(写入)到磁盘上的新位置以优化写入性能。任意位置写入文件系统在开始时可假定一种最优布局,使得数据被基本上连接地布置在磁盘上。该最优磁盘布局带来针对磁盘的高效的访问操作,尤其是对于顺序读取操作。被配置成在存储系统上操作的任意位置写入文件系统的示例是可从加利福尼亚州桑尼维尔市的NetApp公司获得的任意位置写入文件布局(WAFL)文件系统。
该存储系统还可被配置成根据客户机/服务器信息传递模型来操作以由此允许许多客户机访问存储在该系统上的数据容器。在此模型中,客户机可包括在通过计算机网络“连接”到该存储系统的计算机上执行的应用(诸如数据库应用),该计算机网络诸如是点到点链路、共享局域网(LAN)、广域网、或在诸如因特网的公共网络上实现的虚拟专用网络(VPN)。每个客户机可通过经由网络向系统发出基于文件和基于块的协议消息(以包的形式)来请求该存储系统的服务。
多个存储系统可互连以提供被配置成服务许多客户机的存储系统环境。每个存储系统可被配置成服务一个或多个卷,其中每个卷存储一个或多个数据容器。然而通常客户机所发出的大量的数据访问请求会被定向到由该环境的特定存储系统服务的少量的数据服务。对这一问题的一种解决方案是在环境的所有存储系统之间分布由该特定存储系统服务的卷。这进而在所有存储系统间分布了数据访问请求以及服务这些请求所需的处理资源,从而减少了每个存储系统上的各自的处理负载。然而,当该存储系统环境的客户机重度访问仅单个数据容器(诸如文件)时,出现显著的不足。因此,视图服务定向到该数据容器的请求的存储系统可能超出其处理资源并变得负担过重,并伴随着速度和性能的降级。
一种克服具有被重度利用的单个数据容器的不足的技术是跨被配置成条带式卷集的多个卷来条带化数据容器,其中每个卷由不同的存储系统服务,从而在多个存储系统间分布单个数据容器的负载。在上面结合的标题为“STORAGE SYSTEM ARCHITECTURE FORSTRIPING DATA CONTAINER CONTENT ACROSS VOLUMESOF A CLUSTER(用于跨集群的卷来条带化数据容器内容的存储系统架构)”的公开号为US2005-0192932的美国专利申请中描述了一种用于数据容器条带化的技术。通常,当条带式卷集被首次生成时,服务该条带式卷集的组成卷的组成节点中的每个组成节点利用相同的或类似的生成技术。即,每个节点通常包括相同或基本相同的硬件和/或软件配置。因此,节点可被视为同构的,因为每个都彼此基本相同。当在后来的时间点处扩展条带化卷集且针对新添加的节点顾客使用更晚(较新)产生的硬件和/或软件时,这样的系统的显著不足出现了。因为新添加的节点利用最新的硬件和/或软件,与集群的原始节点相比它们通常具有额外的计算能力。更一般地,当形成任意异构集群时,即,当集群的节点利用具有明显不同的功能和/或处理器能力的系统时,这个问题会是明显的。在这样的异构系统中,通常等量地利用每个节点来进行条带化操作。当更晚生成的节点会有更多的处理器能力未被充分利用或未被利用时,该明显不足出现了。使用新的和/或更快的节点的优点因此被浪费,因为它们实际上就像它们与集群的能力最差的节点(即,原始节点)相似地被利用。为了避免处理能力的这种浪费,用户必须确保所有节点是同构型的。例如,这可以通过购买较老的节点或用更新的型号取代较老的节点来实现。这两种解决方案都不是最优的,并且提高了集群式存储器的总持有成本。
发明内容
通过提供被配置成在条带式文件系统中提供容量平衡的数据分布技术,本发明克服了现有技术的不足。条带式卷集与一组条带化规则相关联,该条带化规则包括可以被实现的条带化数据结构,例如作为标识卷的有序列表和数据被条带化到其的相关联的节点的条带化表。集群的每个节点包括适于服务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是示出根据本发明的描述性实施例的基于节点的添加而使条带化表演进的示意框图。
具体实施方式
A.集群环境
图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 FORRESPONDING 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、存储适配器228和本地存储器230。本地存储器230包括由该节点用来本地存储由作为用户模式应用1100(参见图11)执行的一个或多个管理进程提供的配置信息(例如,在配置表235中)的一个或多个存储器件(诸如磁盘)。集群访问适配器226包括适用于将节点200耦合到集群100的其他节点的多个端口。在描述性的实施例中,使用以太网作为集群化协议和互连介质,然而对本领域的技术人员而言,显然,在本文所述的集群架构内可利用其他类型的协议和互连。在其中N模块和D模块是在分开的存储系统或计算机上实现的替代实施例中,集群访问适配器226被N模块/D模块用于与集群100中的其他N模块/D模块通信。
每个节点200被描述性地体现为执行存储操作系统300的双处理器存储系统,其优选实现高级别模块,诸如文件系统,以将信息逻辑地组织为磁盘上的命名目录、文件和叫做虚拟磁盘的特定类型的文件(以下一般称为“块”)的分层结构。然而,对本领域的技术人员而言,显然,节点200可替代地包括单个或多于两个处理器系统。描述性地,一个处理器222a在该节点上执行N模块310的功能,而另一个处理器222b执行D模块350的功能。
存储器224描述性地包括能由处理器和适配器寻址的存储位置以用于存储与本发明相关联的软件程序代码和数据结构。该处理器和适配器又可包括被配置成执行该软件代码和操纵该数据结构的处理元件和/或逻辑电路。存储操作系统300(该系统的一部分通常驻留于存储器中并由该处理元件执行)尤其是通过调用存储操作以支持由该节点实现的存储服务来功能性地组织该节点200。对本领域的技术人员而言,显然,可使用其他处理和存储器装置(包括各种计算机可读存储介质,包括例如闪存、固态存储器等)来存储和执行与本文所述的发明有关的程序指令。
网络适配器225包括适用于通过点到点链路、广域网、通过公共网络(因特网)实现的虚拟专用网络或共享局域网将节点200耦合到一个或多个客户机180的多个端口。网络适配器225因此可包括将节点连接到网络所需的机械、电气和信令电路。描述性地,计算机网络140可被体现为以太网或光纤信道(FC)网络。每个客户机180可通过根据预定义协议(诸如TCP/IP)来交换分离的数据帧或包来通过网络140与节点通信。
存储适配器228与节点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提供的存储空间。该文件系统逻辑地将该信息组织为该磁盘上的命名目录和文件上的分层结构。每个“磁盘上”文件可被实现为被配置成存储诸如数据的信息的磁盘块组,而目录可被实现为特定格式化的文件,在该文件中存储名称和到其他文件和目录的链接。虚拟化模块(或多个虚拟化模块)允许文件系统进一步逻辑地将信息组织为被输出为命名逻辑单元号(lun)的磁盘上的块的分层结构。
在描述性实施例中,该存储操作系统优选为可从加利福尼亚州桑尼维尔市的NetApp公司获得的NetAppData ONTAP操作系统,该操作系统实现了任意位置写入布局(WAFL)文件系统。然而,可以清楚地构想,可增强任何合适的存储操作系统以根据本文所述的发明原理使用。因此,当采用术语“ONTAP”时,应当将其宽泛地指的是指能以其他方式适用于本发明的教导的任何存储操作系统。
图3是可与本发明一起有利地使用的存储操作系统300的示意框图。该存储操作系统包括被组织为形成集成网络协议栈或更一般地多协议引擎325的一系列软件层,该集成网络协议栈或多协议引擎为客户机提供数据路径以使用块和文件访问协议来访问存储在节点上的信息。该多协议引擎包括网络驱动器(例如,千兆级以太网驱动器)的介质访问层312、TCP层316和用户数据报协议(UDP)层315,该介质访问层312接口连接到网络协议层,诸如IP层314及其支持传送机制。文件系统协议层提供多协议文件访问,并且为该目的,包括对直接访问文件系统(DAFS)协议318、NFS协议320、CIFS协议322和超文本传输协议(HTTP)协议324的支持。VI层326实现VI架构以提供直接访问传送(DAT)能力,诸如RDMA,如DAFS协议318所需的那样。iSCSI驱动器层328通过TCP/IP网络协议层提供块协议访问,而FC驱动器层330接收并传送去往和来自该节点的块访问请求和响应。FC和iSCSI驱动器提供FC专用的和iSCSI专用的对块的访问控制,并因此管理在访问节点200上的块时lun到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实现Locate()函数375以计算数据容器内容在SVS卷中的位置,从而确保由集群服务的这些内容的一致性。
文件系统360通过与被描述性地体现为例如虚拟磁盘(vdisk)模块(未示出)和SCSI目标模块335的一个或多个虚拟化模块的交互来实现存储操作系统300的虚拟化系统。响应于用户(系统管理员)向节点200发出命令,vdisk模块允许通过管理接口的访问,该管理接口诸如为管理框架1110的用户接口(参见图11)。SCSI目标模块335通常被布置在FC和iSCSI驱动器328、330和文件系统360之间以提供块(lun)空间和文件系统空间之间的虚拟化系统的转换层,其中lun被表示为块。
描述性地,文件系统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文件的数据块。在Inode被嵌入该inode文件的每个数据块中,其中每个都可引用间接块,该间接块又引用文件的数据块。
可操作地,来自客户机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、228的处理元件可被配置成分别从处理器222卸载包处理和存储访问操作中的一些或全部,从而增加节点提供的存储服务的性能。可以清楚地构想,本文所述的各种进程、架构和过程可以用硬件、固件或软件实现。
如本文中所使用的那样,术语“存储操作系统”一般指能在计算机上操作以执行存储功能的计算机可执行代码,该存储功能管理数据访问并且在节点200的情况下可实现通用操作系统的数据访问语义。该存储操作系统还可被实现为微内核、在通用操作系统(诸如UNIXor Windows NT)上操作的应用程序、或为具有可配置功能的通用操作系统,其被配置成用于如本文所述的存储应用。
此外,应该理解,对本领域的技术人员来说,本文所述的发明可应用于任何类型的专用(例如,文件服务器、文件管理器或存储服务设备)或通用计算机,包括独立计算机或其一部分,体现为存储系统或包括存储系统。而且,本发明的教导可适用于各种存储系统架构,包括但不限于:网络连接存储环境、存储区域网络和直接连接到客户机或主机计算机的磁盘组件。术语“存储系统”应被宽泛地认为除了被配置成执行存储功能并与其他设备或系统相关联的任何子系统之外还包括这些布置。应当注意,尽管本描述是从任意位置写入文件系统方面来写的,然而本发明的教导可在任何合适的文件系统内采用,包括原地写入文件系统。
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和条带化世代号(epoch 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。每个inode600的元数据段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中的每个指针引用包含1024个指针的间接块(例如,第一级L1块),其中1024个指针中的每个指针引用磁盘上的4KB数据块。对于大小大于64MB的文件系统,inode(例如,第三级L3 inode)的数据块660中的每个指针引用包含1024个指针的双间接块(例如,第二级L2块),该1024个指针中的每个指针引用间接(例如,第一级L1)块。该间接块又包含1024个指针,该1024个指针中的每个指针引用磁盘上的4KB数据块。当访问文件时,文件的每个块可从磁盘130加载到存储器224中。
当磁盘上inode(或块)被从磁盘130加载到存储器224中时,其相应核心内(in-core)结构嵌入磁盘上结构。例如,围绕inode 600的虚线指示该磁盘上inode结构的核心内表示。该核心内结构是存储该磁盘上结构加上管理该存储器内(但是不在磁盘上的)的数据所需的附加信息的存储器块。该附加信息可包括例如“无效(dirty)”位670。在inode(或块)中的数据被更新/修改之后,如由例如写入操作所指示的那样,使用无效位670将该经修改的数据标记为“无效”以便该inode(块)随后可被“冲”(存储)到磁盘。
图7是可与本发明一起有利地使用的文件的缓冲区树(buffertree)的实施例的示意框图。缓冲区树是被加载到存储器2224中的文件(例如,文件700)的块的内部表示并由任意位置写入文件系统360保持。根(顶级)inode 702,如嵌入inode,引用间接(例如,第一级)块704。注意,可能存在附加的间接块级别(例如,第二级和第三级),这取决于文件的大小。这些间接块(和inode)包含指针705,指针705最终引用用于存储该文件的实际数据的数据块706。即,文件700的数据被包含在数据块中并且这些块的位置被存储在文件的间接块中。每个第一级间接块704可包含指向与1024个数据块一样多的指针。根据文件系统的“任意位置写入”性质,这些块可位于磁盘130上的任意位置。
提供将底层物理卷分配为诸如节点200的存储系统的一个或多个虚拟卷(或灵活(flexible)卷)的文件系统布局。在John K.Edwards等人的、转让给NetApp公司的、已于2008年8月5日公告的、标题为“EXTENSION OF WRITE ANYWHERE FILE SYSTEMLAYOUT(任意位置写入文件系统布局的扩展)”的美国专利7,409,494中描述了这种文件系统布局的一个示例。底层物理卷是包括该节点的一个或多个磁盘组(如RAID组)的聚集。该聚集有其自己的物理卷块号(pvbn)空间并在该pvbn空间内保持元数据,如块分配结构。每个灵活卷有其自己的虚拟卷块号(vvbn)空间并在该vvbn空间内保持元数据,如块分配结构。每个灵活卷是与容器文件相关联的文件系统,该容器文件是该聚集中包含由该灵活卷使用的所有块的文件。而且,每个灵活卷包括包含指向其他间接块或数据块的块指针的数据块和间接块。
在一个实施例中,pvbn被用作存储在灵活卷中的文件(诸如文件700)的缓冲区树内的块指针。该“混合”灵活块实施例涉及在父间接块(例如,inode或间接块)中只插入pvbn。在逻辑卷的读取路径上,“逻辑”卷(vol)信息块具有引用一个或多个fsinfo块的一个或多个指针,每个fsinfo块又指向inode文件及其相应的inode缓冲区树。灵活卷上的读取路径通常相同,沿着pvbn(而不是vvbn)来找到块的适当位置;在此情况中,灵活卷的读取路径(及其相应的读取性能)与物理卷的读取路径(及其相应的读取性能)基本类似。从pvbn到磁盘,dbn的转换发生在存储操作系统300的文件系统/RAID系统边界处。
在一个双vbn混合灵活卷实施例中,pvbn及其相应的vvbn两者都被插入到文件的缓冲区树中的父间接块中。即,pvbn和vvbn作为每个块指针的对被存储在具有指向其他块(例如,第一级(L1)块、inode文件第0级(L0)块)的指针的大多数缓冲区树结构中。图8是可与本发明一起有利地使用的文件800的缓冲区树的描述性实施例的示意框图。根(顶级)inode 802,如嵌入inode,引用间接(例如,第一级)块804。注意,可能存在附加的间接块级别(例如,第二级、第三级),这取决于文件的大小。这些间接块(和inode)包含pvbn/vvbn指针对结构808,该结构808最终引用用于存储文件的实际数据的数据块806。
pvbn引用聚集的磁盘上的位置,而vvbn引用灵活卷的文件内的位置。使用pvbn作为间接块804中的块指针808提供读取路径方面的效率,而是用vvbn块指针提供访问所需元数据的高效访问。即,当清空文件的块时,文件中的父间接块包含容易得到的vvbn块指针,这避免了与访问拥有者映射以执行pvbn到vvbn转换相关联的等待时间;而在读取路径上,该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类似于传统存储系统的物理卷,灵活卷类似于该物理卷内的文件。即,聚集900可包括一个或多个文件,其中每个文件包含灵活卷910且其中被灵活卷消耗的存储空间的总和在物理上小于(或等于)总物理卷的大小。聚集利用定义由物理卷的磁盘所提供的块的存储空间的物理pvpn空间,而(在文件内的)每个嵌入的灵活卷利用逻辑vvbn空间来组织那些块,例如,作为文件。每个vvbn空间是与文件内的位置相对应的号的独立集合,然后将这些位置转换为磁盘上的dbn。因为灵活卷910还是逻辑卷,它有其自己在其vvbn空间中的块分配结构(例如,有效、空间和总结映射)。
容器文件是该聚集中包含被灵活卷使用的所有块的文件。容器文件是支持灵活卷的内部(对该聚集而言)特征;描述性地,每个灵活卷存在一个容器文件。类似于文件方法中的纯逻辑卷,该容器文件是该聚集中保持被该灵活卷所用的每一个块的隐藏文件(对用户来说不能访问)。该聚集包括包含灵活卷的子目录的描述性隐藏元数据根目录:
WAFL/fsid/filesystem file,storage label file
具体而言,物理文件系统(WAFL)目录包括用于该聚集中每个灵活卷的子目录,其中子目录的名称是该灵活卷的文件系统标识符(fsid)。每个fsid子目录(灵活卷)包含至少两个文件,filesystem文件和存储标签文件。描述性地,该存储标签文件是包含类似于传统raid标签中所存储的元数据的元数据的4KB文件。换言之,该存储标签文件类似于raid标签,并且因此包含有关该灵活卷的状态的信息,诸如,例如该灵活卷的名称、该灵活卷的通用唯一标识符(uuid)和fsid、其是否在线、正在被创造或正在被损坏等。
图10是聚集1000的磁盘上表示的示意框图。存储操作系统300(例如,RAID系统380)组合pvbn的物理卷以创建聚集1000,其中pbvn1和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 labelfile目录结构。为该目的,每个灵活卷1050具有指向一个或多个fsinfo块1054的volinfo块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.存储系统架构
提供描述性地包括跨集群100的多个节点200分布的两个或更多个卷910的存储系统架构。这些卷被组织成SVS并被配置为存储响应于由客户机180发出的多协议数据访问请求而由该集群所服务的数据容器(如文件和lun)的内容。值得注意,将每个数据容器的内容在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不包括数据(D);然而,在替代实施例中,MDV可包括用户数据。
相反,每个DV 1410、1415只存储文件(F)inode 1425、1435、1445和ACL inode1440。注意,DV不存储目录或其他器件inode/构造,如符号链接;然而,每个DV的确存储F inode,且可存储ACL inode的高速缓存副本,所述高速缓存副本被布置在与它们的相应的inode在MDV 1405中的位置相同的位置。特定DV可不存储inode的副本,直到与该inode相关联的数据容器的I/O请求被服务特定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。在替代实施例中,可包括附加字段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的卷以服务对文件的访问请求。Locate()函数至少取(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执行Locate()函数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,接下来按顺序是两个稀疏条带(S)1622、1624、另一数据条带(D)1626以及两个稀疏条带(S)1628、1630。另一方面,卷B 1610包含稀疏条带(S)1632,接下来按顺序是数据条带(D)1634、两个稀疏条带(S)1636、1638、另一数据条带(D)1640和稀疏条带(S)1642。卷C 1615继续循环条带化模式,并且为该目的,包含两个稀疏条带(S)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的容量额定值处以总容量额定值,即,A除以A+B+C+D。描述性地,这等于100除以400(100+200+50+50)。因此,卷条带化模块将条目数替换为B+C+D(即,稍后要被添加的节点的总容量值)除以A+B+C+D的额定值(即,所有容量值的总和),即,在第一次迭代中每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(即,1/2)。如可从图19D领会的那样,这导致具有8个对节点A的引用、16个对节点B的引用、4个对节点C的引用和4个对节点D的引用的示例性条带化表。
如将领会的,这导致每个节点基于其容量额定值被适当分配。使用节点A作为参考,节点D出现的频率为其两倍,因为它具有是节点A的两倍的容量额定值,等。通过执行本文所述的迭代技术,可实现容量平衡以允许对集群内的异构计算机的最佳使用。
前面的描述已经针对本发明的特定实施例。然而,显然,可对所述实施例作出其他变化和修改,同时保留它们的某些或全部优点。具体而言,应当注意,本文所述的原理可以在非分布式文件系统中实现。而且,尽管已经从N模块和D模块方面来撰写本描述,然而本文的教导同样适用于N模块和D模块的功能是在单个系统中实现的系统。替代地,N模块和D模块的功能可在任意数量的分开的系统间分布,其中每个系统执行这些功能中的一个或多个。此外,本文描述的过程、进程和/或模块可以用硬件、软件实现、体现为具有程序指令的计算机可读介质、固件或其组合。因此,所附权利要求的目标是涵盖所有这些落入本发明的真实精神和范围的变化和修改。
Claims (21)
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所述的方法,其中演进条带化数据结构包括标识将要被添加的节点的容量值并且将所标识的容量值除以要被添加的节点和要被添加到所述条带化数据结构的所有附加节点的总容量值。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/433,089 US8117388B2 (en) | 2009-04-30 | 2009-04-30 | Data distribution through capacity leveling in a striped file system |
US12/433,089 | 2009-04-30 | ||
US12/433089 | 2009-04-30 | ||
PCT/US2010/001262 WO2010126596A1 (en) | 2009-04-30 | 2010-04-29 | Data distribution through capacity leveling in a striped file system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102460439A true CN102460439A (zh) | 2012-05-16 |
CN102460439B CN102460439B (zh) | 2014-06-25 |
Family
ID=42352758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080030330.5A Active CN102460439B (zh) | 2009-04-30 | 2010-04-29 | 通过条带式文件系统中的容量平衡进行数据分布 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8117388B2 (zh) |
EP (1) | EP2430571A1 (zh) |
JP (1) | JP5507670B2 (zh) |
CN (1) | CN102460439B (zh) |
WO (1) | WO2010126596A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750343A (zh) * | 2012-06-07 | 2012-10-24 | 浪潮电子信息产业股份有限公司 | 一种集群文件系统动态数据分布方法 |
CN103558998A (zh) * | 2013-11-07 | 2014-02-05 | 华为技术有限公司 | 一种数据操作的方法和设备 |
CN106227463A (zh) * | 2016-07-11 | 2016-12-14 | 苏州科达科技股份有限公司 | Raid模型、数据读写及其重建方法 |
CN108008913A (zh) * | 2016-10-27 | 2018-05-08 | 杭州海康威视数字技术股份有限公司 | 一种基于管理节点的扩容方法、装置及存储系统 |
CN108064374A (zh) * | 2017-08-10 | 2018-05-22 | 华为技术有限公司 | 一种数据访问方法、装置和系统 |
CN111399780A (zh) * | 2020-03-19 | 2020-07-10 | 支付宝(杭州)信息技术有限公司 | 一种数据的写入方法、装置以及设备 |
Families Citing this family (182)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8161076B1 (en) * | 2009-04-02 | 2012-04-17 | Netapp, Inc. | Generation and use of a data structure for distributing responsibilities among multiple resources in a network storage system |
US9934244B2 (en) | 2010-08-13 | 2018-04-03 | At&T Intellectual Property I, L.P. | System and method for file format management |
US11614893B2 (en) | 2010-09-15 | 2023-03-28 | Pure Storage, Inc. | Optimizing storage device access based on latency |
CN102158529A (zh) * | 2011-01-27 | 2011-08-17 | 浪潮电子信息产业股份有限公司 | 基于php环境实现网络存储高效管理的方法 |
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
US9026560B2 (en) * | 2011-09-16 | 2015-05-05 | Cisco Technology, Inc. | Data center capability summarization |
CN102833845B (zh) * | 2012-08-14 | 2015-12-02 | 北京华胜天成信息技术发展有限公司 | 一种异构通信系统及方法 |
US9229657B1 (en) * | 2012-11-01 | 2016-01-05 | Quantcast Corporation | Redistributing data in a distributed storage system based on attributes of the data |
US8924425B1 (en) * | 2012-12-06 | 2014-12-30 | Netapp, Inc. | Migrating data from legacy storage systems to object storage systems |
US9342256B2 (en) | 2013-03-14 | 2016-05-17 | SanDisk Technologies, Inc. | Epoch based storage management for a storage device |
US9152776B2 (en) * | 2013-04-30 | 2015-10-06 | Netapp, Inc. | Secure access-based enumeration of a junction or mount point on a clustered server |
CN104937561B (zh) * | 2013-05-17 | 2018-01-02 | 株式会社日立制作所 | 存储装置 |
US10708355B2 (en) * | 2013-05-20 | 2020-07-07 | Nec Corporation | Storage node, storage node administration device, storage node logical capacity setting method, program, recording medium, and distributed data storage system |
CN104516679B (zh) * | 2013-09-30 | 2017-10-17 | 杭州宏杉科技股份有限公司 | 一种raid数据处理方法及装置 |
US9992103B2 (en) * | 2014-01-24 | 2018-06-05 | Cisco Technology, Inc. | Method for providing sticky load balancing |
US10459892B2 (en) | 2014-04-23 | 2019-10-29 | Qumulo, Inc. | Filesystem hierarchical aggregate metrics |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US11652884B2 (en) | 2014-06-04 | 2023-05-16 | Pure Storage, Inc. | Customized hash algorithms |
US9612952B2 (en) | 2014-06-04 | 2017-04-04 | Pure Storage, Inc. | Automatically reconfiguring a storage memory topology |
US11068363B1 (en) | 2014-06-04 | 2021-07-20 | Pure Storage, Inc. | Proactively rebuilding data in a storage cluster |
US9836234B2 (en) | 2014-06-04 | 2017-12-05 | Pure Storage, Inc. | Storage cluster |
US11960371B2 (en) | 2014-06-04 | 2024-04-16 | Pure Storage, Inc. | Message persistence in a zoned system |
US9213485B1 (en) | 2014-06-04 | 2015-12-15 | Pure Storage, Inc. | Storage system architecture |
US9367243B1 (en) | 2014-06-04 | 2016-06-14 | Pure Storage, Inc. | Scalable non-uniform storage sizes |
US10574754B1 (en) | 2014-06-04 | 2020-02-25 | Pure Storage, Inc. | Multi-chassis array with multi-level load balancing |
US11399063B2 (en) | 2014-06-04 | 2022-07-26 | Pure Storage, Inc. | Network authentication for a storage system |
US9003144B1 (en) | 2014-06-04 | 2015-04-07 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
US8850108B1 (en) | 2014-06-04 | 2014-09-30 | Pure Storage, Inc. | Storage cluster |
US8868825B1 (en) | 2014-07-02 | 2014-10-21 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US9836245B2 (en) | 2014-07-02 | 2017-12-05 | Pure Storage, Inc. | Non-volatile RAM and flash memory in a non-volatile solid-state storage |
US9021297B1 (en) | 2014-07-02 | 2015-04-28 | Pure Storage, Inc. | Redundant, fault-tolerant, distributed remote procedure call cache in a storage system |
US10114757B2 (en) | 2014-07-02 | 2018-10-30 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US11604598B2 (en) | 2014-07-02 | 2023-03-14 | Pure Storage, Inc. | Storage cluster with zoned drives |
US11886308B2 (en) | 2014-07-02 | 2024-01-30 | Pure Storage, Inc. | Dual class of service for unified file and object messaging |
US8874836B1 (en) | 2014-07-03 | 2014-10-28 | Pure Storage, Inc. | Scheduling policy for queues in a non-volatile solid-state storage |
US9747229B1 (en) | 2014-07-03 | 2017-08-29 | Pure Storage, Inc. | Self-describing data format for DMA in a non-volatile solid-state storage |
US9811677B2 (en) | 2014-07-03 | 2017-11-07 | Pure Storage, Inc. | Secure data replication in a storage grid |
US10853311B1 (en) | 2014-07-03 | 2020-12-01 | Pure Storage, Inc. | Administration through files in a storage system |
US9495255B2 (en) * | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
US9483346B2 (en) | 2014-08-07 | 2016-11-01 | Pure Storage, Inc. | Data rebuild on feedback from a queue in a non-volatile solid-state storage |
US9558069B2 (en) | 2014-08-07 | 2017-01-31 | Pure Storage, Inc. | Failure mapping in a storage array |
US9082512B1 (en) | 2014-08-07 | 2015-07-14 | Pure Storage, Inc. | Die-level monitoring in a storage cluster |
US10983859B2 (en) | 2014-08-07 | 2021-04-20 | Pure Storage, Inc. | Adjustable error correction based on memory health in a storage unit |
US9766972B2 (en) | 2014-08-07 | 2017-09-19 | Pure Storage, Inc. | Masking defective bits in a storage array |
US10079711B1 (en) | 2014-08-20 | 2018-09-18 | Pure Storage, Inc. | Virtual file server with preserved MAC address |
US11132336B2 (en) | 2015-01-12 | 2021-09-28 | Qumulo, Inc. | Filesystem hierarchical capacity quantity and aggregate metrics |
US9836480B2 (en) | 2015-01-12 | 2017-12-05 | Qumulo, Inc. | Filesystem capacity and performance metrics and visualizations |
US9948615B1 (en) | 2015-03-16 | 2018-04-17 | Pure Storage, Inc. | Increased storage unit encryption based on loss of trust |
US11294893B2 (en) | 2015-03-20 | 2022-04-05 | Pure Storage, Inc. | Aggregation of queries |
US9940234B2 (en) | 2015-03-26 | 2018-04-10 | Pure Storage, Inc. | Aggressive data deduplication using lazy garbage collection |
US10082985B2 (en) * | 2015-03-27 | 2018-09-25 | Pure Storage, Inc. | Data striping across storage nodes that are assigned to multiple logical arrays |
US10178169B2 (en) | 2015-04-09 | 2019-01-08 | Pure Storage, Inc. | Point to point based backend communication layer for storage processing |
US9672125B2 (en) | 2015-04-10 | 2017-06-06 | Pure Storage, Inc. | Ability to partition an array into two or more logical arrays with independently running software |
US10140149B1 (en) | 2015-05-19 | 2018-11-27 | Pure Storage, Inc. | Transactional commits with hardware assists in remote memory |
US9817576B2 (en) | 2015-05-27 | 2017-11-14 | Pure Storage, Inc. | Parallel update to NVRAM |
US10846275B2 (en) | 2015-06-26 | 2020-11-24 | Pure Storage, Inc. | Key management in a storage device |
US10983732B2 (en) | 2015-07-13 | 2021-04-20 | Pure Storage, Inc. | Method and system for accessing a file |
US11232079B2 (en) | 2015-07-16 | 2022-01-25 | Pure Storage, Inc. | Efficient distribution of large directories |
US10108355B2 (en) | 2015-09-01 | 2018-10-23 | Pure Storage, Inc. | Erase block state detection |
US11341136B2 (en) | 2015-09-04 | 2022-05-24 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US10762069B2 (en) | 2015-09-30 | 2020-09-01 | Pure Storage, Inc. | Mechanism for a system where data and metadata are located closely together |
US9768953B2 (en) | 2015-09-30 | 2017-09-19 | Pure Storage, Inc. | Resharing of a split secret |
US10853266B2 (en) | 2015-09-30 | 2020-12-01 | Pure Storage, Inc. | Hardware assisted data lookup methods |
US9843453B2 (en) | 2015-10-23 | 2017-12-12 | Pure Storage, Inc. | Authorizing I/O commands with I/O tokens |
US10007457B2 (en) | 2015-12-22 | 2018-06-26 | Pure Storage, Inc. | Distributed transactions with token-associated execution |
US10261690B1 (en) | 2016-05-03 | 2019-04-16 | Pure Storage, Inc. | Systems and methods for operating a storage system |
US11231858B2 (en) | 2016-05-19 | 2022-01-25 | Pure Storage, Inc. | Dynamically configuring a storage system to facilitate independent scaling of resources |
US10691567B2 (en) | 2016-06-03 | 2020-06-23 | Pure Storage, Inc. | Dynamically forming a failure domain in a storage system that includes a plurality of blades |
US11706895B2 (en) | 2016-07-19 | 2023-07-18 | Pure Storage, Inc. | Independent scaling of compute resources and storage resources in a storage system |
US11861188B2 (en) | 2016-07-19 | 2024-01-02 | Pure Storage, Inc. | System having modular accelerators |
US9672905B1 (en) | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
US10768819B2 (en) | 2016-07-22 | 2020-09-08 | Pure Storage, Inc. | Hardware support for non-disruptive upgrades |
US11449232B1 (en) | 2016-07-22 | 2022-09-20 | Pure Storage, Inc. | Optimal scheduling of flash operations |
US11604690B2 (en) | 2016-07-24 | 2023-03-14 | Pure Storage, Inc. | Online failure span determination |
US11080155B2 (en) | 2016-07-24 | 2021-08-03 | Pure Storage, Inc. | Identifying error types among flash memory |
US10216420B1 (en) | 2016-07-24 | 2019-02-26 | Pure Storage, Inc. | Calibration of flash channels in SSD |
US11797212B2 (en) | 2016-07-26 | 2023-10-24 | Pure Storage, Inc. | Data migration for zoned drives |
US10366004B2 (en) | 2016-07-26 | 2019-07-30 | Pure Storage, Inc. | Storage system with elective garbage collection to reduce flash contention |
US11734169B2 (en) | 2016-07-26 | 2023-08-22 | Pure Storage, Inc. | Optimizing spool and memory space management |
US11886334B2 (en) | 2016-07-26 | 2024-01-30 | Pure Storage, Inc. | Optimizing spool and memory space management |
US10203903B2 (en) | 2016-07-26 | 2019-02-12 | Pure Storage, Inc. | Geometry based, space aware shelf/writegroup evacuation |
US11422719B2 (en) | 2016-09-15 | 2022-08-23 | Pure Storage, Inc. | Distributed file deletion and truncation |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
US10756816B1 (en) | 2016-10-04 | 2020-08-25 | Pure Storage, Inc. | Optimized fibre channel and non-volatile memory express access |
US10481798B2 (en) | 2016-10-28 | 2019-11-19 | Pure Storage, Inc. | Efficient flash management for multiple controllers |
US10095729B2 (en) | 2016-12-09 | 2018-10-09 | Qumulo, Inc. | Managing storage quotas in a shared storage system |
US11550481B2 (en) | 2016-12-19 | 2023-01-10 | Pure Storage, Inc. | Efficiently writing data in a zoned drive storage system |
US11307998B2 (en) | 2017-01-09 | 2022-04-19 | Pure Storage, Inc. | Storage efficiency of encrypted host system data |
US11955187B2 (en) | 2017-01-13 | 2024-04-09 | Pure Storage, Inc. | Refresh of differing capacity NAND |
US9747158B1 (en) | 2017-01-13 | 2017-08-29 | Pure Storage, Inc. | Intelligent refresh of 3D NAND |
US10979223B2 (en) | 2017-01-31 | 2021-04-13 | Pure Storage, Inc. | Separate encryption for a solid-state drive |
US10783437B2 (en) * | 2017-03-05 | 2020-09-22 | International Business Machines Corporation | Hybrid aggregation for deep learning neural networks |
US10528488B1 (en) | 2017-03-30 | 2020-01-07 | Pure Storage, Inc. | Efficient name coding |
US11016667B1 (en) | 2017-04-05 | 2021-05-25 | Pure Storage, Inc. | Efficient mapping for LUNs in storage memory with holes in address space |
US10516645B1 (en) | 2017-04-27 | 2019-12-24 | Pure Storage, Inc. | Address resolution broadcasting in a networked device |
US10944671B2 (en) | 2017-04-27 | 2021-03-09 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US10141050B1 (en) | 2017-04-27 | 2018-11-27 | Pure Storage, Inc. | Page writes for triple level cell flash memory |
US11467913B1 (en) | 2017-06-07 | 2022-10-11 | Pure Storage, Inc. | Snapshots with crash consistency in a storage system |
US11782625B2 (en) | 2017-06-11 | 2023-10-10 | Pure Storage, Inc. | Heterogeneity supportive resiliency groups |
US11138103B1 (en) | 2017-06-11 | 2021-10-05 | Pure Storage, Inc. | Resiliency groups |
US11947814B2 (en) | 2017-06-11 | 2024-04-02 | Pure Storage, Inc. | Optimizing resiliency group formation stability |
US10425473B1 (en) | 2017-07-03 | 2019-09-24 | Pure Storage, Inc. | Stateful connection reset in a storage cluster with a stateless load balancer |
US10402266B1 (en) | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
US10877827B2 (en) | 2017-09-15 | 2020-12-29 | Pure Storage, Inc. | Read voltage optimization |
US10210926B1 (en) | 2017-09-15 | 2019-02-19 | Pure Storage, Inc. | Tracking of optimum read voltage thresholds in nand flash devices |
US10496330B1 (en) | 2017-10-31 | 2019-12-03 | Pure Storage, Inc. | Using flash storage devices with different sized erase blocks |
US11024390B1 (en) | 2017-10-31 | 2021-06-01 | Pure Storage, Inc. | Overlapping RAID groups |
US10884919B2 (en) | 2017-10-31 | 2021-01-05 | Pure Storage, Inc. | Memory management in a storage system |
US10515701B1 (en) | 2017-10-31 | 2019-12-24 | Pure Storage, Inc. | Overlapping raid groups |
US10545687B1 (en) | 2017-10-31 | 2020-01-28 | Pure Storage, Inc. | Data rebuild when changing erase block sizes during drive replacement |
US10860475B1 (en) | 2017-11-17 | 2020-12-08 | Pure Storage, Inc. | Hybrid flash translation layer |
US10990566B1 (en) | 2017-11-20 | 2021-04-27 | Pure Storage, Inc. | Persistent file locks in a storage system |
US10719265B1 (en) | 2017-12-08 | 2020-07-21 | Pure Storage, Inc. | Centralized, quorum-aware handling of device reservation requests in a storage system |
US10929053B2 (en) | 2017-12-08 | 2021-02-23 | Pure Storage, Inc. | Safe destructive actions on drives |
US10929031B2 (en) * | 2017-12-21 | 2021-02-23 | Pure Storage, Inc. | Maximizing data reduction in a partially encrypted volume |
US10467527B1 (en) | 2018-01-31 | 2019-11-05 | Pure Storage, Inc. | Method and apparatus for artificial intelligence acceleration |
US10733053B1 (en) | 2018-01-31 | 2020-08-04 | Pure Storage, Inc. | Disaster recovery for high-bandwidth distributed archives |
US10976948B1 (en) | 2018-01-31 | 2021-04-13 | Pure Storage, Inc. | Cluster expansion mechanism |
US11036596B1 (en) | 2018-02-18 | 2021-06-15 | Pure Storage, Inc. | System for delaying acknowledgements on open NAND locations until durability has been confirmed |
US11494109B1 (en) | 2018-02-22 | 2022-11-08 | Pure Storage, Inc. | Erase block trimming for heterogenous flash memory storage devices |
US11995336B2 (en) | 2018-04-25 | 2024-05-28 | Pure Storage, Inc. | Bucket views |
US10931450B1 (en) | 2018-04-27 | 2021-02-23 | Pure Storage, Inc. | Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers |
US10853146B1 (en) | 2018-04-27 | 2020-12-01 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
US11436023B2 (en) | 2018-05-31 | 2022-09-06 | Pure Storage, Inc. | Mechanism for updating host file system and flash translation layer based on underlying NAND technology |
US11360936B2 (en) | 2018-06-08 | 2022-06-14 | Qumulo, Inc. | Managing per object snapshot coverage in filesystems |
US11169746B2 (en) * | 2018-06-19 | 2021-11-09 | Weka.IO LTD | Expanding a distributed storage system |
US11438279B2 (en) | 2018-07-23 | 2022-09-06 | Pure Storage, Inc. | Non-disruptive conversion of a clustered service from single-chassis to multi-chassis |
US11354058B2 (en) | 2018-09-06 | 2022-06-07 | Pure Storage, Inc. | Local relocation of data stored at a storage device of a storage system |
US11500570B2 (en) | 2018-09-06 | 2022-11-15 | Pure Storage, Inc. | Efficient relocation of data utilizing different programming modes |
US11868309B2 (en) | 2018-09-06 | 2024-01-09 | Pure Storage, Inc. | Queue management for data relocation |
US11520514B2 (en) | 2018-09-06 | 2022-12-06 | Pure Storage, Inc. | Optimized relocation of data based on data characteristics |
US10454498B1 (en) | 2018-10-18 | 2019-10-22 | Pure Storage, Inc. | Fully pipelined hardware engine design for fast and efficient inline lossless data compression |
US10976947B2 (en) | 2018-10-26 | 2021-04-13 | Pure Storage, Inc. | Dynamically selecting segment heights in a heterogeneous RAID group |
US10534758B1 (en) | 2018-12-20 | 2020-01-14 | Qumulo, Inc. | File system cache tiers |
US11151092B2 (en) | 2019-01-30 | 2021-10-19 | Qumulo, Inc. | Data replication in distributed file systems |
US11334254B2 (en) | 2019-03-29 | 2022-05-17 | Pure Storage, Inc. | Reliability based flash page sizing |
US11775189B2 (en) | 2019-04-03 | 2023-10-03 | Pure Storage, Inc. | Segment level heterogeneity |
US11099986B2 (en) | 2019-04-12 | 2021-08-24 | Pure Storage, Inc. | Efficient transfer of memory contents |
US11714572B2 (en) | 2019-06-19 | 2023-08-01 | Pure Storage, Inc. | Optimized data resiliency in a modular storage system |
US11281394B2 (en) | 2019-06-24 | 2022-03-22 | Pure Storage, Inc. | Replication across partitioning schemes in a distributed storage system |
US11893126B2 (en) | 2019-10-14 | 2024-02-06 | Pure Storage, Inc. | Data deletion for a multi-tenant environment |
US11704192B2 (en) | 2019-12-12 | 2023-07-18 | Pure Storage, Inc. | Budgeting open blocks based on power loss protection |
US11416144B2 (en) | 2019-12-12 | 2022-08-16 | Pure Storage, Inc. | Dynamic use of segment or zone power loss protection in a flash device |
US11847331B2 (en) | 2019-12-12 | 2023-12-19 | Pure Storage, Inc. | Budgeting open blocks of a storage unit based on power loss prevention |
US10860372B1 (en) | 2020-01-24 | 2020-12-08 | Qumulo, Inc. | Managing throughput fairness and quality of service in file systems |
US10795796B1 (en) * | 2020-01-24 | 2020-10-06 | Qumulo, Inc. | Predictive performance analysis for file systems |
US11151001B2 (en) | 2020-01-28 | 2021-10-19 | Qumulo, Inc. | Recovery checkpoints for distributed file systems |
US11188432B2 (en) | 2020-02-28 | 2021-11-30 | Pure Storage, Inc. | Data resiliency by partially deallocating data blocks of a storage device |
US10936538B1 (en) | 2020-03-30 | 2021-03-02 | Qumulo, Inc. | Fair sampling of alternate data stream metrics for file systems |
US10936551B1 (en) | 2020-03-30 | 2021-03-02 | Qumulo, Inc. | Aggregating alternate data stream metrics for file systems |
US11507297B2 (en) | 2020-04-15 | 2022-11-22 | Pure Storage, Inc. | Efficient management of optimal read levels for flash storage systems |
US11256587B2 (en) | 2020-04-17 | 2022-02-22 | Pure Storage, Inc. | Intelligent access to a storage device |
US11416338B2 (en) | 2020-04-24 | 2022-08-16 | Pure Storage, Inc. | Resiliency scheme to enhance storage performance |
US11474986B2 (en) | 2020-04-24 | 2022-10-18 | Pure Storage, Inc. | Utilizing machine learning to streamline telemetry processing of storage media |
US11768763B2 (en) | 2020-07-08 | 2023-09-26 | Pure Storage, Inc. | Flash secure erase |
US11681448B2 (en) | 2020-09-08 | 2023-06-20 | Pure Storage, Inc. | Multiple device IDs in a multi-fabric module storage system |
US11513974B2 (en) | 2020-09-08 | 2022-11-29 | Pure Storage, Inc. | Using nonce to control erasure of data blocks of a multi-controller storage system |
US11775481B2 (en) | 2020-09-30 | 2023-10-03 | Qumulo, Inc. | User interfaces for managing distributed file systems |
US11487455B2 (en) | 2020-12-17 | 2022-11-01 | Pure Storage, Inc. | Dynamic block allocation to optimize storage system performance |
US11847324B2 (en) | 2020-12-31 | 2023-12-19 | Pure Storage, Inc. | Optimizing resiliency groups for data regions of a storage system |
US11614880B2 (en) | 2020-12-31 | 2023-03-28 | Pure Storage, Inc. | Storage system with selectable write paths |
US11157458B1 (en) | 2021-01-28 | 2021-10-26 | Qumulo, Inc. | Replicating files in distributed file systems using object-based data storage |
US11461241B2 (en) | 2021-03-03 | 2022-10-04 | Qumulo, Inc. | Storage tier management for file systems |
US11630593B2 (en) | 2021-03-12 | 2023-04-18 | Pure Storage, Inc. | Inline flash memory qualification in a storage system |
US11132126B1 (en) | 2021-03-16 | 2021-09-28 | Qumulo, Inc. | Backup services for distributed file systems in cloud computing environments |
US11567660B2 (en) | 2021-03-16 | 2023-01-31 | Qumulo, Inc. | Managing cloud storage for distributed file systems |
US11507597B2 (en) | 2021-03-31 | 2022-11-22 | Pure Storage, Inc. | Data replication to meet a recovery point objective |
US11892983B2 (en) | 2021-04-29 | 2024-02-06 | EMC IP Holding Company LLC | Methods and systems for seamless tiering in a distributed storage system |
US11669255B2 (en) | 2021-06-30 | 2023-06-06 | Qumulo, Inc. | Distributed resource caching by reallocation of storage caching using tokens and agents with non-depleted cache allocations |
US11832410B2 (en) | 2021-09-14 | 2023-11-28 | Pure Storage, Inc. | Mechanical energy absorbing bracket apparatus |
US11294604B1 (en) | 2021-10-22 | 2022-04-05 | Qumulo, Inc. | Serverless disk drives based on cloud storage |
US11922071B2 (en) | 2021-10-27 | 2024-03-05 | EMC IP Holding Company LLC | Methods and systems for storing data in a distributed system using offload components and a GPU module |
US11762682B2 (en) | 2021-10-27 | 2023-09-19 | EMC IP Holding Company LLC | Methods and systems for storing data in a distributed system using offload components with advanced data services |
US11677633B2 (en) | 2021-10-27 | 2023-06-13 | EMC IP Holding Company LLC | Methods and systems for distributing topology information to client nodes |
US11354273B1 (en) | 2021-11-18 | 2022-06-07 | Qumulo, Inc. | Managing usable storage space in distributed file systems |
US11994723B2 (en) | 2021-12-30 | 2024-05-28 | Pure Storage, Inc. | Ribbon cable alignment apparatus |
US11599508B1 (en) | 2022-01-31 | 2023-03-07 | Qumulo, Inc. | Integrating distributed file systems with object stores |
US11722150B1 (en) | 2022-09-28 | 2023-08-08 | Qumulo, Inc. | Error resistant write-ahead log |
US11729269B1 (en) | 2022-10-26 | 2023-08-15 | Qumulo, Inc. | Bandwidth management in distributed file systems |
US11934660B1 (en) | 2023-11-07 | 2024-03-19 | Qumulo, Inc. | Tiered data storage with ephemeral and persistent tiers |
US11921677B1 (en) | 2023-11-07 | 2024-03-05 | Qumulo, Inc. | Sharing namespaces across file system clusters |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6829678B1 (en) * | 2000-07-18 | 2004-12-07 | International Business Machines Corporation | System for determining the order and frequency in which space is allocated on individual storage devices |
US20050114594A1 (en) * | 2003-11-24 | 2005-05-26 | Corbett Peter F. | Semi-static distribution technique |
US20050192932A1 (en) * | 2003-12-02 | 2005-09-01 | Michael Kazar | Storage system architecture for striping data container content across volumes of a cluster |
US20060248273A1 (en) * | 2005-04-29 | 2006-11-02 | Network Appliance, Inc. | Data allocation within a storage system architecture |
Family Cites Families (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5202979A (en) * | 1985-05-08 | 1993-04-13 | Thinking Machines Corporation | Storage system using multiple independently mechanically-driven storage units |
US4916608A (en) * | 1986-05-30 | 1990-04-10 | International Business Machines Corporation | Provision of virtual storage resources to an operating system control program |
US4899342A (en) * | 1988-02-01 | 1990-02-06 | Thinking Machines Corporation | Method and apparatus for operating multi-unit array of memories |
US4989206A (en) * | 1988-06-28 | 1991-01-29 | Storage Technology Corporation | Disk drive memory |
US5163131A (en) * | 1989-09-08 | 1992-11-10 | Auspex Systems, Inc. | Parallel i/o network file server architecture |
JP2945757B2 (ja) * | 1989-09-08 | 1999-09-06 | オースペックス システムズ インコーポレイテッド | 多重装置オペレーティングシステムのアーキテクチャ |
US5124987A (en) * | 1990-04-16 | 1992-06-23 | Storage Technology Corporation | Logical track write scheduling system for a parallel disk drive array data storage subsystem |
US5155835A (en) * | 1990-11-19 | 1992-10-13 | Storage Technology Corporation | Multilevel, hierarchical, dynamically mapped data storage subsystem |
AU662973B2 (en) * | 1992-03-09 | 1995-09-21 | Auspex Systems, Inc. | High-performance non-volatile ram protected write cache accelerator system |
US5581724A (en) * | 1992-10-19 | 1996-12-03 | Storage Technology Corporation | Dynamically mapped data storage subsystem having multiple open destage cylinders and method of managing that subsystem |
EP1003103B1 (en) * | 1993-06-03 | 2008-10-01 | Network Appliance, Inc. | Write anywhere file-system layout method and apparatus |
US6138126A (en) * | 1995-05-31 | 2000-10-24 | Network Appliance, Inc. | Method for allocating files in a file system integrated with a raid disk sub-system |
WO1994029796A1 (en) * | 1993-06-03 | 1994-12-22 | Network Appliance Corporation | A method for allocating files in a file system integrated with a raid disk sub-system |
US5963962A (en) * | 1995-05-31 | 1999-10-05 | Network Appliance, Inc. | Write anywhere file-system layout |
JPH0869359A (ja) * | 1994-08-29 | 1996-03-12 | Hitachi Ltd | ディスクアレイ装置 |
JPH103440A (ja) | 1996-06-14 | 1998-01-06 | Fujitsu Ltd | 計算機システム |
US5897661A (en) * | 1997-02-25 | 1999-04-27 | International Business Machines Corporation | Logical volume manager and method having enhanced update capability with dynamic allocation of storage and minimal storage of metadata information |
US5987477A (en) * | 1997-07-11 | 1999-11-16 | International Business Machines Corporation | Parallel file system and method for parallel write sharing |
US6032216A (en) * | 1997-07-11 | 2000-02-29 | International Business Machines Corporation | Parallel file system with method using tokens for locking modes |
US6021508A (en) | 1997-07-11 | 2000-02-01 | International Business Machines Corporation | Parallel file system and method for independent metadata loggin |
JPH1195331A (ja) * | 1997-09-24 | 1999-04-09 | Noritsu Koki Co Ltd | 写真処理システム |
JPH11126136A (ja) * | 1997-10-22 | 1999-05-11 | Fujitsu Ltd | データの転送方法およびデータの分割方法および情報記憶制御装置 |
US5941972A (en) * | 1997-12-31 | 1999-08-24 | Crossroads Systems, Inc. | Storage router and method for providing virtual local storage |
US6173293B1 (en) * | 1998-03-13 | 2001-01-09 | Digital Equipment Corporation | Scalable distributed file system |
US6697846B1 (en) * | 1998-03-20 | 2004-02-24 | Dataplow, Inc. | Shared file system |
US6868442B1 (en) | 1998-07-29 | 2005-03-15 | Unisys Corporation | Methods and apparatus for processing administrative requests of a distributed network application executing in a clustered computing environment |
US6324581B1 (en) * | 1999-03-03 | 2001-11-27 | Emc Corporation | File server system using file system storage, data movers, and an exchange of meta data among data movers for file locking and direct access to shared file systems |
US6564252B1 (en) * | 1999-03-11 | 2003-05-13 | Microsoft Corporation | Scalable storage system with unique client assignment to storage server partitions |
US6275898B1 (en) * | 1999-05-13 | 2001-08-14 | Lsi Logic Corporation | Methods and structure for RAID level migration within a logical unit |
US20020049883A1 (en) * | 1999-11-29 | 2002-04-25 | Eric Schneider | System and method for restoring a computer system after a failure |
US6502166B1 (en) * | 1999-12-29 | 2002-12-31 | International Business Machines Corporation | Method and apparatus for distributing data across multiple disk drives |
US20030188045A1 (en) * | 2000-04-13 | 2003-10-02 | Jacobson Michael B. | System and method for distributing storage controller tasks |
US6636879B1 (en) * | 2000-08-18 | 2003-10-21 | Network Appliance, Inc. | Space allocation in a write anywhere file system |
US6671773B2 (en) * | 2000-12-07 | 2003-12-30 | Spinnaker Networks, Llc | Method and system for responding to file system requests |
US6931450B2 (en) * | 2000-12-18 | 2005-08-16 | Sun Microsystems, Inc. | Direct access from client to storage device |
US6868417B2 (en) * | 2000-12-18 | 2005-03-15 | Spinnaker Networks, Inc. | Mechanism for handling file level and block level remote file accesses using the same server |
US6606690B2 (en) * | 2001-02-20 | 2003-08-12 | Hewlett-Packard Development Company, L.P. | System and method for accessing a storage area network as network attached storage |
US7073044B2 (en) * | 2001-03-30 | 2006-07-04 | Intel Corporation | Method and apparatus for sharing TLB entries |
US6643654B1 (en) * | 2001-06-25 | 2003-11-04 | Network Appliance, Inc. | System and method for representing named data streams within an on-disk structure of a file system |
US6713630B2 (en) * | 2001-08-03 | 2004-03-30 | Basf Aktiengesellschaft | Continuous preparation of substituted oxazoles |
US6978283B1 (en) * | 2001-12-21 | 2005-12-20 | Network Appliance, Inc. | File system defragmentation technique via write allocation |
US7039663B1 (en) | 2002-04-19 | 2006-05-02 | Network Appliance, Inc. | System and method for checkpointing and restarting an asynchronous transfer of data between a source and destination snapshot |
US7010528B2 (en) * | 2002-05-23 | 2006-03-07 | International Business Machines Corporation | Mechanism for running parallel application programs on metadata controller nodes |
US7873700B2 (en) * | 2002-08-09 | 2011-01-18 | Netapp, Inc. | Multi-protocol storage appliance that provides integrated support for file and block access protocols |
US20040139167A1 (en) * | 2002-12-06 | 2004-07-15 | Andiamo Systems Inc., A Delaware Corporation | Apparatus and method for a scalable network attach storage system |
US20040122917A1 (en) * | 2002-12-18 | 2004-06-24 | Menon Jaishankar Moothedath | Distributed storage system for data-sharing among client computers running defferent operating system types |
US7159093B2 (en) * | 2002-12-20 | 2007-01-02 | Veritas Operating Corporation | Development of a detailed logical volume configuration from high-level user requirements |
US7412496B2 (en) * | 2003-08-22 | 2008-08-12 | Emc Corporation | Management of the file-modification time attribute in a multi-processor file server system |
US7590807B2 (en) * | 2003-11-03 | 2009-09-15 | Netapp, Inc. | System and method for record retention date in a write once read many storage system |
US7366837B2 (en) * | 2003-11-24 | 2008-04-29 | Network Appliance, Inc. | Data placement technique for striping data containers across volumes of a storage system cluster |
US7302520B2 (en) * | 2003-12-02 | 2007-11-27 | Spinnaker Networks, Llc | Method and apparatus for data storage using striping |
US7409497B1 (en) * | 2003-12-02 | 2008-08-05 | Network Appliance, Inc. | System and method for efficiently guaranteeing data consistency to clients of a storage system cluster |
US7409494B2 (en) * | 2004-04-30 | 2008-08-05 | Network Appliance, Inc. | Extension of write anywhere file system layout |
US7904649B2 (en) * | 2005-04-29 | 2011-03-08 | Netapp, Inc. | System and method for restriping data across a plurality of volumes |
US20070088702A1 (en) * | 2005-10-03 | 2007-04-19 | Fridella Stephen A | Intelligent network client for multi-protocol namespace redirection |
-
2009
- 2009-04-30 US US12/433,089 patent/US8117388B2/en active Active
-
2010
- 2010-04-29 JP JP2012508480A patent/JP5507670B2/ja active Active
- 2010-04-29 EP EP10721864A patent/EP2430571A1/en not_active Withdrawn
- 2010-04-29 CN CN201080030330.5A patent/CN102460439B/zh active Active
- 2010-04-29 WO PCT/US2010/001262 patent/WO2010126596A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6829678B1 (en) * | 2000-07-18 | 2004-12-07 | International Business Machines Corporation | System for determining the order and frequency in which space is allocated on individual storage devices |
US20050114594A1 (en) * | 2003-11-24 | 2005-05-26 | Corbett Peter F. | Semi-static distribution technique |
US20050192932A1 (en) * | 2003-12-02 | 2005-09-01 | Michael Kazar | Storage system architecture for striping data container content across volumes of a cluster |
US20060248273A1 (en) * | 2005-04-29 | 2006-11-02 | Network Appliance, Inc. | Data allocation within a storage system architecture |
CN101218583A (zh) * | 2005-04-29 | 2008-07-09 | 网络装置公司 | 用于在群集的卷上带区化数据容器内容的存储系统体系结构 |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750343B (zh) * | 2012-06-07 | 2016-08-31 | 浪潮电子信息产业股份有限公司 | 一种集群文件系统动态数据分布方法 |
CN102750343A (zh) * | 2012-06-07 | 2012-10-24 | 浪潮电子信息产业股份有限公司 | 一种集群文件系统动态数据分布方法 |
CN103558998A (zh) * | 2013-11-07 | 2014-02-05 | 华为技术有限公司 | 一种数据操作的方法和设备 |
CN103558998B (zh) * | 2013-11-07 | 2016-03-30 | 华为技术有限公司 | 一种数据操作的方法和设备 |
US10157000B2 (en) | 2013-11-07 | 2018-12-18 | Huawei Technologies Co., Ltd. | Data operation method and device |
CN106227463B (zh) * | 2016-07-11 | 2019-06-14 | 苏州科达科技股份有限公司 | Raid、数据读写及其重建方法 |
CN106227463A (zh) * | 2016-07-11 | 2016-12-14 | 苏州科达科技股份有限公司 | Raid模型、数据读写及其重建方法 |
CN108008913A (zh) * | 2016-10-27 | 2018-05-08 | 杭州海康威视数字技术股份有限公司 | 一种基于管理节点的扩容方法、装置及存储系统 |
CN108008913B (zh) * | 2016-10-27 | 2020-12-18 | 杭州海康威视数字技术股份有限公司 | 一种基于管理节点的扩容方法、装置及存储系统 |
WO2019028799A1 (zh) * | 2017-08-10 | 2019-02-14 | 华为技术有限公司 | 一种数据访问方法、装置和系统 |
CN108064374A (zh) * | 2017-08-10 | 2018-05-22 | 华为技术有限公司 | 一种数据访问方法、装置和系统 |
CN108064374B (zh) * | 2017-08-10 | 2021-04-09 | 华为技术有限公司 | 一种数据访问方法、装置和系统 |
CN113485636A (zh) * | 2017-08-10 | 2021-10-08 | 华为技术有限公司 | 一种数据访问方法、装置和系统 |
US11416172B2 (en) | 2017-08-10 | 2022-08-16 | Huawei Technologies Co., Ltd. | Physical disk and virtual disk mapping in storage systems |
CN113485636B (zh) * | 2017-08-10 | 2023-07-18 | 华为技术有限公司 | 一种数据访问方法、装置和系统 |
US11748037B2 (en) | 2017-08-10 | 2023-09-05 | Huawei Technologies Co., Ltd. | Physical disk and virtual disk mapping in storage systems |
CN111399780A (zh) * | 2020-03-19 | 2020-07-10 | 支付宝(杭州)信息技术有限公司 | 一种数据的写入方法、装置以及设备 |
CN111399780B (zh) * | 2020-03-19 | 2021-08-24 | 蚂蚁金服(杭州)网络技术有限公司 | 一种数据的写入方法、装置以及设备 |
Also Published As
Publication number | Publication date |
---|---|
EP2430571A1 (en) | 2012-03-21 |
US8117388B2 (en) | 2012-02-14 |
JP2012525634A (ja) | 2012-10-22 |
CN102460439B (zh) | 2014-06-25 |
WO2010126596A1 (en) | 2010-11-04 |
US20100281214A1 (en) | 2010-11-04 |
JP5507670B2 (ja) | 2014-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102460439B (zh) | 通过条带式文件系统中的容量平衡进行数据分布 | |
CN101218583B (zh) | 用于在群集的卷上带区化数据容器内容的存储系统体系结构 | |
US10198356B2 (en) | Distributed cache nodes to send redo log records and receive acknowledgments to satisfy a write quorum requirement | |
US9830096B2 (en) | Maintaining data block maps of clones of storage objects | |
CN101410783B (zh) | 内容可寻址存储阵列元件 | |
CN101473305B (zh) | 用于集群环境中的作业的管理的系统和方法 | |
CN100403277C (zh) | 通过在文件系统上将虚拟盘对象分层进行存储虚拟化 | |
US7747584B1 (en) | System and method for enabling de-duplication in a storage system architecture | |
CN101228523B (zh) | 用于高速缓存网络文件系统的系统和方法 | |
CN103502926B (zh) | 基于扩展区的存储架构 | |
US9699017B1 (en) | Dynamic utilization of bandwidth for a quorum-based distributed storage system | |
WO2018231806A1 (en) | Portable snapshot replication between storage systems | |
US10725666B2 (en) | Memory-based on-demand data page generation | |
CN103620580A (zh) | 用于数据副本的迁移的系统和方法 | |
US8768898B1 (en) | Performing direct data manipulation on a storage device | |
US20210055885A1 (en) | Enhanced data access using composite data views | |
US20190258604A1 (en) | System and method for implementing a quota system in a distributed file system | |
CN107003920A (zh) | 用于处置灾难恢复群集中的多节点故障的系统和方法 | |
CN103842987B (zh) | 在部分克隆中使用压缩的方法及系统 | |
US8595457B1 (en) | Method and system for replicating stored information | |
US12001688B2 (en) | Utilizing data views to optimize secure data access in a storage system | |
US9335949B1 (en) | System and method for deferring invalidation of inodes of a volume during volume invalidation | |
US20210019063A1 (en) | Utilizing data views to optimize secure data access in a storage system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C56 | Change in the name or address of the patentee | ||
CP01 | Change in the name or title of a patent holder |
Address after: American California Patentee after: NETAPP incorporated company Address before: American California Patentee before: Netapp Inc. |