CN1692356A - 对分布式文件系统中的文件重新条带化的系统和方法 - Google Patents

对分布式文件系统中的文件重新条带化的系统和方法 Download PDF

Info

Publication number
CN1692356A
CN1692356A CNA2003801003806A CN200380100380A CN1692356A CN 1692356 A CN1692356 A CN 1692356A CN A2003801003806 A CNA2003801003806 A CN A2003801003806A CN 200380100380 A CN200380100380 A CN 200380100380A CN 1692356 A CN1692356 A CN 1692356A
Authority
CN
China
Prior art keywords
data
storage unit
file
data block
intelligent
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
Application number
CNA2003801003806A
Other languages
English (en)
Other versions
CN1692356B (zh
Inventor
保罗·A·米克塞尔
罗布·安德森
阿龙·J·帕西
彼得·约翰·戈德曼
哈桑·F·坎
达雷恩·P·斯卡克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Isilon Systems LLC
Original Assignee
Isilon Systems LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Isilon Systems LLC filed Critical Isilon Systems LLC
Publication of CN1692356A publication Critical patent/CN1692356A/zh
Application granted granted Critical
Publication of CN1692356B publication Critical patent/CN1692356B/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/2312Data placement on disk arrays
    • H04N21/2318Data placement on disk arrays using striping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/61Network physical structure; Signal processing
    • H04N21/6106Network physical structure; Signal processing specially adapted to the downstream path of the transmission network
    • H04N21/6125Network physical structure; Signal processing specially adapted to the downstream path of the transmission network involving transmission via Internet
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1028Distributed, i.e. distributed RAID systems with parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/104Metadata, i.e. metadata associated with RAID systems with parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Abstract

用于对分布在一组智能存储单元114中的文件重新条带化的方法,其中用于特殊数据条的数据块不需要被定位于存储单元上的任何特定位置上,其中数据能够在智能存储单元中以最小的数据移动而被重新条带化,并且其中即使在重新条带化数据期间出现了系统故障,数据也会得到保护并且是可恢复的。一个实施方案涉及一种为每个数据块选择一个存储单元114的方法。该方法包括识别出当前其中存储有数据块的存储单元114;在第一存储单元中识别出一个最优位置;确定一组最优存储单元;如果该第一存储单元就是其中当前存储有数据块的存储单元中的一个,则选择该第一存储单元;以及如果该第一存储单元不是其中当前存储有数据块的存储单元的列表中的一个,则从该最优存储单元组中选择一个。本发明的另一个方面涉及一种重新条带化存储在一个智能分布式系统110的多个智能存储装置114中的数据的方法。该方法包括识别至少一个智能存储装置,其中来自现存文件的数据簇可以被存储在该存储装置上;将该簇存储在被识别出的智能存储装置上;确定该簇被成功地存储;以及更新与该数据簇相关的元数据,以反映出新的分配。

Description

对分布式文件系统中的文件重新条带化的系统和方法
本申请要求于2002年11月14日提交的第60/426,464号美国临时申请的优先权权益,并且该临时申请通过引用被整体并入本文。
                         发明领域
本发明的系统和方法一般涉及分布式文件存储领域,特别是涉及对存储在智能分布式文件管理系统中的文件重新条带化(restriping)的系统和方法。
                           背景
互联网的迅速增长已经开创了一个新的纪元,其中以恒定的基数对信息交换及访问。为了响应这种增长,被共享的数据的大小也已经增加了。用户不光要求标准的HTML文档,还希望访问各种数据,例如音频数据,视频数据,图像数据,以及编程数据。这样,就需要有能够容纳大量数据的数据存储,并且同时还能对数据进行高速及可靠的访问。
一种响应就是利用单一的存储装置,该装置可以存储大量的数据,但是很难提供高吞吐率。随着数据容量的增加,对该数据进行访问所花费的时间也会增加。处理速度和能力得到了改进,可是磁盘I/O(输入/输出)操作性能并没有以相同的速度提高,从而使得I/O操作效率不高,尤其是对于大的数据文件。
另一种响应就是允许多服务器通过采用诸如存储区域网络解决方案(SAN)的架构来访问共享的磁盘,但是这种系统非常昂贵并且要求复杂的技术来建立和控制数据的集成。而且,也需要高速适配器来处理大量的数据请求。
常用方法的一个问题就是它们的可量测性受到限制。这样,随着数据量的增加,该系统也会变大,但是这种扩展是昂贵和高破坏性的。
常用方法的另一个常见问题就是它们的灵活性受到限制。这些系统经常被设置为使用预先定义的错误纠正控制。例如,可以使用RAID系统来在物理磁盘级提供数据文件的冗余和镜像,这样在确定数据应该被存在哪里或应该使用的冗余参数的类型时会给管理员提供极少或没有灵活性。
                         内容
该智能分布式文件系统有利于将文件数据存储在被作为一个单一的文件系统而访问的一组智能存储单元之中。该智能分布式文件系统有利于利用元数据结构来跟踪和管理关于各个文件的详细信息,例如包括,例如文件数据块的设备和块位置,从而允许在一个单一文件系统中实现不同级别的复制和/或冗余,促进冗余参数的变化,为元数据提供高级别的保护,实时复制和移动数据等等。
该智能分布式文件系统还可以包括这样的系统和方法,它们能够对分布在一组智能存储单元中的文件进行重新条带化(restriping),其中用于特定数据条的数据块通常并不需要被定位在存储单元中的任何特定位置,其中可以在最小数据移动的情况下实现在智能存储单元中对数据的重新条带化,并且其中即使在条带化处理中出现系统故障,数据也是通常受保护的并是可以恢复的。
本发明的一个方面涉及一种与多个智能存储装置进行通信的分布式文件系统,其中该分布式文件系统包括一个消息传递系统并被设置为存储和管理关于存储在该分布式文件系统中的文件和目录的元数据,以至于该元数据包括元数据数据块的位置,内容数据块,以及奇偶校验数据块,并且该分布式文件系统还被设置为重新条带化数据文件。
本发明的另一个方面涉及一种对存储在智能分布式系统中的多个智能存储装置中的数据重新条带化的方法。该方法包括识别至少一个智能存储装置,其中来自现存文件的数据簇可以被存储在该存储装置上;将该簇存储在被识别出的智能存储装置上;确定该簇被成功存储;以及更新与该数据簇相关的元数据,以反映出新的分配。
本发明的另一个方面涉及一种用于对数据重新条带化的系统。该系统包括:多个智能装置,该智能装置被设置为将数据块存储在分布在智能装置中的数据条中;分配模块,其被设置为将数据块分配给智能装置;请求模块,被设置为发送指令给智能装置,以在分配完数据块之后对这些数据块进行存储;以及更新模块,被设置为在存储完数据块之后更新与数据块相关的元数据。
本发明的另一个方面涉及一种对由数据块构成的数据重新条带化的方法。该方法包括:将数据块分配给存储单元;确定该数据块是否已经被存储在存储单元中;如果该数据块尚未驻留在存储单元中,则将其起存储在存储单元中;以及如果该数据块已经被存储了,则更新与该数据块相关的元数据。
本发明的另一个方面涉及一种将数据块分配给存储单元的方法。该方法包括识别可用的存储单元;为每个数据块选择可用的存储单元;以及为每个被选中的存储单元确定相关的地址单元。
本发明的另一个方面涉及一种从一组存储单元中选择一个存储单元以将一数据块存储在保护组中的方法。该方法包括从存储单元组中识别出哪个存储单元是与保护组相关的最优存储单元;以及选择该最优存储单元。
本发明的另一个方面涉及一种为数据块选择存储单元的方法。该方法包括:识别出当前存储有数据块的存储单元;在第一存储单元中识别出一个最优位置;确定一组最优存储单元;如果该第一存储单元是当前存储有数据块的存储单元中的一个,则选择该第一存储单元;以及如果该第一存储单元不是当前存储有数据块的存储单元中的一个,则从一组最优存储单元中选择一个。
本发明的另一个方面涉及一种具有存储装置的系统,该装置中包括有指令,在执行这些指令的时候,使得该系统能够执行一种方法,该方法包括:识别来自现存文件的数据簇将被存在其上的存储单元;确定该簇被成功存储;以及更新与该数据簇相关的元数据。
为了概述的目的,这里对本发明的某些方面、优点、以及新特征进行了描述。可以理解的是,并不需要所有的这些优点都可以根据本发明的任何特殊实施方案来实现。这样,例如,本领域内的技术人员可以认识到,可以采用实现了这里所述的一个优点或优点集合的方式来实现或完成本发明,而不需要实现这里所述或建议的其它优点。
                     附图的简要说明
图1说明了本发明一个实施方案的高级方框图。
图2说明了图1中所示的部件中的一个示例数据流。
图3说明了一个示例智能存储单元的高级方框图。
图4说明了一个示例文件目录。
图5说明了元数据数据结构的一个实施方案。
图6A说明了数据位置表结构的一个实施方案。
图6B说明了数据位置表结构的另一个实施方案。
图6C说明了数据位置表结构的另一个实施方案。
图6D说明了数据位置表结构的又一个实施方案。
图7A说明了用于目录的元数据数据结构的一个实施方案。
图7B说明了用于文件的元数据数据结构的一个实施方案。
图8A说明了数据位置表的一个实施方案。
图8B说明了数据位置表的另一个实施方案。
图8C说明了数据位置表的又一个实施方案。
图9说明了具有相应示例数据的文件的示例元数据数据结构。
图10说明了检索数据流程的一个实施方案。
图11说明了进行名称解析流程的一个实施方案。
图12说明了检索文件流程的一个实施方案。
图13说明了生成奇偶校验信息流程的一个实施方案。
图14说明了进行错误校正的流程的一个实施方案。
图15说明了在智能分布式文件系统中对数据重新条带化的流程的一个实施方案。
图16说明了将数据分配给智能存储单元的流程的一个实施方案。
图17说明了在一组可用智能存储单元中进行选择的流程的一个实施方案。
                 优选实施方案的详细描述
现在参照附图对表示本发明各种实施方案和示例性应用的系统和方法进行说明。也会对代表其它实施方案的各种系统和方法进行说明。
为了说明的目的,一些实施方案将在互联网内容发送和网络主机操作(web hosting)的环境中得到说明。发明人希望本发明并不仅限于该系统和方法所使用的环境类型,例如,互联网,万维网,医院的专用网络,政府机构的广播网络,公司企业的内部网络,内联网,局域网,广域网等等。但是,附图和说明书中所涉及的本发明的实施方案是处在互联网内容发送和网络主机操作(web hosting)的环境之中。还需要知道的是,在其它实施方案中,该系统和方法可以在一个单一模块中实现和/或与各种其它模块一起实现等。并且,这里列出的具体实现方式仅仅是为了说明,而不是要限制本发明,本发明的范围由所附的权利要求来定义。
现在将参照以上总结的附图对这些和其它特征进行说明。附图和相关的说明被提供用于说明本发明的实施方案,而不是对本发明的限制。在整个附图中,参考标号可被重复使用以指代所标出的部件之间的对应关系。另外,各个参考标号的第一位通常代表其中某部件第一次出现的
附图。
                        I. 概述
本发明的系统和方法提供了一种智能分布式文件系统,该系统能够将数据存储在可作为一个单一的文件系统来访问的一组智能存储单元中。该智能分布式文件系统跟踪和管理关于各个文件的详细元数据。元数据可包括任何涉及和/或描述文件的数据,例如文件数据块的位置(其包括设备和块位置信息)、元数据和/或数据块(若有的话)的冗余副本位置、错误校正信息、访问信息、文件名、文件大小、文件类型、其中存有文件数据和保护信息的智能存储单元等等。另外,该智能分布式文件系统允许对由文件系统管理的不同文件和/或数据块进行不同级别的复制和/或冗余、当系统运行时协助冗余参数的变化,当系统运行时协助丢失数据的恢复,以及能够实时的复制和移动元数据和数据。而且,每个智能存储单元都可以通过从该智能存储单元组中定位和搜集文件的数据来响应文件请求。
该智能分布式文件系统有利于在这种情况对数据进行访问:存在与WRITE(写)请求的次数成比例的大量READ(读)请求。这是由于为了确保写请求的一致性而锁定一组智能存储单元,或记录智能存储单元所增加的复杂性。而且,该智能分布式文件系统还有利于对其中用于大块数据的请求是很普遍的块业务进行处理。
一些实施方案的一个优点就是由智能分布式文件系统来管理和访问用于文件和目录的元数据。该元数据可以表示用于目录或文件的元数据位于哪里,内容数据被存储在哪里,元数据和/或内容数据的镜像副本被存储在哪里,还有与系统相关的奇偶校验或其它错误校正信息被存储在哪里。可以使用,例如设备和块位置信息来存储数据位置信息。这样,该智能分布式文件系统就可以通过使用同时被分布和存储在一组智能存储单元中的元数据来定位和检索被请求的内容数据。另外,由于智能分布式文件系统已经访问了元数据,因此可以使用该智能分布式文件系统来选择应该在哪里存储和移动、复制、恢复,和/或改变数据,而不需要破坏该智能存储单元组。
一些实施方案的另一个优点就是每个文件都可以被存储在多个智能存储单元中并以适时的方式进行访问。每个文件的数据块可以被分布在一个智能存储单元的子集中,使得对数据的访问次数能够减少。另外,不同的文件可以被分布在不同数量的智能存储单元中以及不同智能存储单元组中。这种架构使得智能分布式文件系统能够根据各种因素智能地存储数据块,例如文件大小,重要性,预期的访问率,以及可用的存储容量,CPU利用率,和每个智能存储单元的网络利用率。
一些实施方案的另一个优点就是该系统和方法可以被用于以块或文件为单位提供各种保护方案,例如错误校正,冗余,镜像,以使得存储在智能存储单元中的不同块或文件可以受到不同类型的保护。例如,一些目录或文件可以被镜像,其它的可以使用各种错误或损失校正方案由错误和/或损失校正数据进行保护,以及其它的不重要的目录或文件可以不采用任何保护方案。
一些实施方案的进一步优点就是该系统和方法能够实时的增加,删除,和/或修改智能存储单元,而不会破坏或中断正在进行的数据请求。这样,当要求有更多的存储时,附加的智能存储单元可以被加入到该智能存储单元集合中并与该智能分布式文件系统实时的结合在一块,而不会中断文件请求或不得不使得现存的智能存储单元离线。当该智能分布式文件系统将现存文件或新文件的数据块被分布在其中目前包括新智能存储单元的智能存储单元集合中时,该现存的智能存储单元可以处理文件请求。
一些实施方案的另一个优点就是该系统和方法可以通过复制一个或多个智能存储单元上的这些块,从而为任何单独的数据块生成多个访问点来实时的修改数据块的存储。复制有助于降低一个或一组文件中各个智能存储单元的CPU和网络资源请求利用率,其中对该文件中各个智能存储单元进行的频繁访问模式已经被观察到。由智能存储单元监视该访问模式,该智能分布式文件系统为智能存储单元提供了灵活性,以使得能够在运行智能分布式文件系统的同时复制该数据。
一些实施方案进一步的优点就是该系统和方法允许通过对一个或多个智能存储单元上的文件进行重新条带化来实时的检索定位数据文件。在一些实施方案中,这种重新条带化有利于最小化数据块的移动,保留数据的完整性,从而即使在重新条带化的过程中出现系统故障,也能够确保可恢复性。该重新条带化系统有利于不需要将特定的数据块定位在智能存储单元的任何特定位置,为存储的数据块提供持续的保护,并且即使当一个或多个智能存储单元出现故障时,也能够进行数据恢复。
                        II. 示例操作
为了说明的目的,现在讨论一种该智能分布式文件系统正在运行的示例情况。在这个示例性情况下,该智能分布式文件系统由一个通过互联网网点提供电影下载公司使用。该公司可以使用智能分布式文件系统来存储和管理可下载电影的拷贝以及可由用户通过网点访问到的电影预告片、广告和用户信息。可以采用各种级别的保护来存储该数据,并将其存储在多个智能存储单元中,以进行快速访问。
例如,该公司可以希望将用户调查电子信函存储在该智能分布式文件系统的多个智能存储单元中,以能够快速访问电子信函。可是,该公司可以保持所有电子信函的备份磁带,并可以感觉到不需要立即恢复用户调查。该公司可以指示该智能分布式文件系统并不对用户调查电子信函使用错误校正或镜像保护。这样,如果一个或多个智能存储单元变得无法访问,则该公司可能感觉到在能从备份磁带中恢复这些电子信函之前延迟对那些智能存储单元上的用户调查电子信函进行访问是可接受的。
对于广告,该公司可以指示智能分布式文件系统使用高错误校正参数,使得即使一个或多个智能存储单元出现了故障,该智能分布式文件系统也能够恢复数据,而不需要中断显示广告。例如,公司可以依靠各种故障容差措施来确定应该给一个特殊文件何种程度的保护。对于重要的信息,公司可以希望确保实现X级的故障容差,对于不太重要的信息,公司可以希望确保Y级的故障容差,其中X>Y。这样,即使一个或多个智能存储单元出现了故障,该公司就可以确保它的广告在一个可靠的基础上是可用的。需要认识到,可以使用除了故障容差以外的其它措施,并且故障容差可以被用来说明一个措施的可靠性。
对于排行榜电影下载,该公司可以建立一个智能分布式文件系统来自动的存储多个电影数据的拷贝,使得多个用户能够访问该数据,并保证即使一个或多个智能存储单元出现了故障也可以从其它的单元检索生成或检索到丢失的数据。并且,如果请求数量增加了和/或如果一个或多个智能存储单元开始溢出用于驻留在智能存储单元中的数据的请求时,可以生成排行榜电影下载的另外拷贝并存储在智能存储单元中。
该公司可以选择提供其它并不流行的电影,并由于对其较少的要求而指示智能分布式文件系统存储较少的拷贝。而且,当“排行榜下载电影”变得不流行时,该公司可以设置智能分布式文件系统从其中存储有电影的智能存储单元中删除电影的额外拷贝,并将“不再流行”的电影移动到性能较低(例如,具有较少可用磁盘空间的智能存储单元)的智能存储单元中。该智能分布式文件系统可以被设置为自动的使用智能存储单元来维护这些任务。
另外,当公司获得更多电影时,该公司可以向智能分布式文件系统增加额外的智能存储单元。接着,该公司就可以使用新的智能存储单元来存储更多的电影,存储更多现存电影的拷贝,检索分布现存的电影数据以改进响应时间,和/或改变一个或多个文件的保护方案。额外的智能存储单元与智能分布式文件系统结合在一块,使得即使该智能分布式文件系统在多个智能存储单元集合中管理和存储数据时,该智能分布式文件系统也作为一个单一的文件系统出现。
如果其中的一个智能存储单元出现故障,则该智能分布式文件系统可以检索构建存储在该出现故障的单元上的任何文件的数据,将信息存储在工作单元上,并更新适当的元数据数据结构,这样,如果用户请求部分存储在出现故障的单元上的文件,该用户仍可以接收到文件的数据,而不知道其中的一个单元出现了故障。
在该例中,智能分布式文件系统向公司提供了如下能力:为排行榜电影下载提供可靠和快速的访问,为不太流行的电影提供快速访问,以及为用户调查电子信函提供访问。对于每个文件,该公司都可以设置错误和/或损失校正参数,并选择应该存储多少个额外的文件拷贝。在一些情况下,该公司可以手动的选择应该存储多少个数据拷贝并确定将该数据存储在哪里。在其它情况下,该公司可以根据智能分布式文件系统的特征选择应该存储多少个数据拷贝,应该使用的错误和/或损失校正方案(如果有的话),以及将该数据存储在哪里。这样,该公司就能有效的使用它的存储控制,更好的响应用户的请求。存储空间并不会浪费在很少被请求的文件,并且不会为不重要的文件生成错误校正信息。
虽然上述的例子涉及提供下载电影的公司,但是应该知道,该例子仅仅是被用作说明智能分布式文件系统一个实施方案的特征。而且,该智能分布式文件系统可以被使用在其它环境中,并且可以与其它类型的数据和/或数据的组合一块使用,包括例如声音文件,音频文件,图形文件,多媒体文件,数字照片,可执行文件等。
                III. 智能分布式文件系统
图1说明了智能分布式文件系统110的一个实施方案,该系统110与一个网络服务器120进行通信,以提供远程文件访问。该智能分布式文件系统110可以使用各种协议(例如NFS或CIFS)与网络服务器120进行通信。用户130通过通信介质140(例如互联网145)与网络服务器120进行交互,以请求由智能分布式文件系统110管理的文件。该典型的智能分布式文件系统110使用了在一组智能存储单元114和网络服务器120之间进行通信的交换机(switch)部件125。该智能分布式文件系统110能够使得单独的文件块在多个智能存储单元114中传播。这样存储数据可以使得对数据的访问具有比数据被存储在一个单一装置中更高的吞吐率。另外,该智能分布式文件系统可以被用于存储采用各种保护方案进行保存的各种数据文件。
该典型的智能分布式文件系统110在一组智能存储单元114中存储数据。为了对智能存储单元114进行更详细的描述,请参看下面标题为“智能存储单元”的部分。
该典型的智能分布式文件系统110使用了交换机部件125,例如负载平衡交换机,该部件将请求送往能够处理被请求数据类型的应用程序服务器。采用高速技术将传入的请求提供给适当的应用程序服务器,以使延迟最小化并确保数据的完整性。
应该认可的是,可以采用各种负载平衡交换机125,例如1000 Base-T(铜)千兆负载平衡以太网交换机,Extreme Networks Summit 7I,FoundryFast Iron II,Nortel Networks Alteon ACEswitch 180,F5 Big-Ip),以及标准以太网交换机或其它的负载平衡交换机。该智能分布式文件系统110使用了支持大帧长的交换机,例如“jumbo(巨型)”以太网帧。另外,该负载平衡交换机125可以采用Foundry Networks’ServerIron交换机,Asante’s InstraSwitch 6200交换机,Asante’s HotStack,Cisco’s Catalyst交换机,以及其它的商品和/或专利产品来构成。可是,本领域的普通技术人员应该认识到,也可以使用宽范围的交换机部件125并可以使用其它的技术。而且,应该明白,交换机部件125可以被设置为传输各种网络帧长。
可以用高错误校正参数来存储高度重要的文件,其中该高错误校正参数在磁盘,母板,CPU,操作系统,或其它硬件或软件出现禁止访问一个或多个智能存储单元的故障时,以高的恢复率提供数据。如果有任何数据丢失,则智能存储单元114可以使用元数据中的冗余信息或镜像信息,以从另一个单元获得数据或检索生成该数据。可以实时的将经常被要求的文件镜像在额外的智能存储单元114中,以提供更高的吞吐率。
在一个智能分布式文件系统110的实施方案中,元数据数据结构具有至少与其参照的数据相同的保护,其中包括对应于该元数据数据结构的目录的任何子目录。元数据数据结构中数据的损失会损害该智能分布式文件系统110,因为没有元数据数据结构很难检索数据。在该智能分布式文件系统110中,元数据数据结构的交替拷贝可以被镜像到许多需要提供所要求保护的位置。这样,具有奇偶校验保护的文件可以使得它的元数据数据结构在带有至少相同或更高的奇偶校验保护的情况下存储,并且被镜像两次的文件可以使得它的元数据数据结构至少被镜像在两个位置上。
虽然图1说明智能分布式文件系统110的一个实施方案,但是应该明白的是,也可以使用其它的实施方案。例如,额外的服务器,如应用程序服务器可以与交换机部件125进行通信。这些应用程序服务器可以包括,例如音频流服务器,视频流服务器,图像处理服务器,数据块服务器等。并且,可以有额外的设备,例如工作站与交换机部件125进行通信。另外,虽然图1中说明了该智能分布式文件系统110与4个智能存储单元114一起工作,但应该明白,该智能分布式文件系统110可以与不同数量的智能存储单元114一起工作。
还应该明白的是,术语“远程”可以包括并不在本地存储的装置,部件和/或模块,其不能通过局部总线进行访问。这样,远程装置可以包括物理上位于同一房间并通过例如交换机或局域网相连的装置。在其它情况下,远程装置也可以位于单独的地理区域,例如在不同的位置,国家等。
还应该明白,也可以使用智能分布式文件系统110来存储各种类型的数据。例如,该智能分布式文件系统110可以与大型文件应用程序一块使用,例如,视频点播,在线音乐系统,网点镜像,大型数据库,大型图像文件,CAD/CAM设计,软件更新,公司展示,保险索赔文件,中间图像文件,公司文档存储等。
图2说明了一个示例环境,在该环境中,网点用户130已经提交了一个观看点播的数字视频的请求。在事件A中,用户130通过互联网145向网点发出了一个请求观看电影拷贝mymovie.movie的请求。由网点的服务器120接收该请求,并且服务器120确定该文件位于\movies\comedy\mymovie.movie。在事件B中,智能分布式文件系统110的交换机部件125看到了要与智能分布式文件系统110相连的请求,并使用标准负载平衡技术将该请求发送给一个可用的智能存储单元114,例如智能存储单元0。在事件C中,智能存储单元0接收到了对于文件/DFSR/movies/comedy/mymovie.movie的请求,并从它的根元数据数据结构(用于根目录/DFSR)中确定出用于子目录movie的元数据数据结构被存储在智能存储单元2中。在事件D中,智能存储单元0向智能存储单元2发出一个请求,请求用于子目录comedy的元数据数据结构的位置。在事件E中,智能存储单元0接收到该用于子目录comedy的元数据数据结构被存储在智能存储单元3中的信息。在事件F中,智能存储单元0向智能存储单元3发出一个请求,请求用于文件mymovie.movie的元数据数据结构的位置。在事件G中,智能存储单元0接收到该用于文件mymovie.movie的元数据数据结构被存储在智能存储单元0中的信息。在事件H中,智能存储单元0接着从本地存储中检索到用于文件mymovie.movie的元数据数据结构。从该元数据数据结构中,智能存储单元0检索到用于mymovie.movie的其中存储文件中每个数据块位置的数据位置表。智能存储单元0接着使用数据位置表信息开始检索本地存储的块并发出要求存储在其它智能存储单元中的数据的请求。
在已经检索到文件的数据或数据的一部分之后,该文件数据被发送给请求服务器120,并被转发给请求用户130。在一个例子中,该文件数据可以被传递给视频流服务器,该服务器调整如何以及何时将该数据发送给用户130。可以明白的是,在一些实施方案中,有利的是采用提前读取技术来检索更多待被请求的数据,以便于减少请求的等待时间。
                 IV.智能文件系统结构
表1说明了一个示例文件系统层集合的实施方案,其中为了访问物理存储装置,通过该文件系统层对一个文件请求进行处理。该典型的文件系统层包括用户层,虚拟文件系统层,本地文件系统层,本地文件存储层,以及存储装置层。
     用户层
用户空间
—————————————————————————————
内核空间
    虚拟文件系统层
    本地文件系统层
    本地文件存储层
    存储装置层
表1
在一种类型的文件请求中,通过用于文件共享,例如HTTPD(阿帕奇网络服务器),FTPD,或者在实现了一个版本的微软视窗文件共享服务器协议的Unix上使用的SMBD的用户级协议应用程序来接收请求。该用户级协议应用程序进行内核级打开,读取,查找,写入,或关闭系统调用,例如,通过对libc,C运行时间库进行函数调用。
该系统调用被传送给保持缓冲存储器的虚拟文件系统层(“VFS”)。该缓冲存储器可以是,例如最近最少使用(“LRU”)缓冲存储器,用于存储从较低文件系统层中接收的数据或元数据数据结构。
下一层就是本地文件系统层,该层保持文件系统的分级命名系统并发送目录和文件名请求给下一层,即本地文件存储层。该本地文件系统层处理元数据数据结构查找和管理。例如,在一些系统中,例如基于Unix的文件系统,该元数据数据结构就是一个文件摘要,其中包括关于文件访问允许,数据块位置,以及参考计数的信息。一旦通过文件名打开了一个文件,则其它的文件操作就会通过为标识出特定文件的元数据结构的唯一标识符来参考该文件。该方法的优点就是一个文件可以有许多不同的名字,可以通过不同的路径来访问一个文件,以及通过标准的UNIX用户级实用程序,例如“mv”命令,在VFS名称空间中旧的文件上复制新的文件,而不会覆盖实际的文件数据。由于可以在适当的位置上更新内容,而不需要终止当前的内容服务,因此这些好处在诸如内容发送和网络主机操作的条件下会更加有利。一旦所有打开的文件柄都被关闭,则元数据数据结构中的参考计数使得系统只能够使得数据块无效。
第四层就是本地文件存储层,该层处理“缓冲器请求至块请求”的转换以及对于数据缓冲器请求的管理。例如,本地文件存储层使用块定位方案来改进和最大化写和读的吞吐量,以及用于读出的块检索方案。
最后一层就是存储装置层,该层接待(host)用于由文件系统使用的磁盘硬件的特殊段的设备驱动器。例如,如果物理存储装置是一个ATA磁盘,则该存储装置层接待该ATA磁盘驱动器。
虽然表1说明了一个文件系统层集合的示例,但是H可以认识到,该系统和方法可以与各种不同的层以及不同的环境协同工作,在该环境中,文件系统层可以被不同的定义或者根本就不存在。
                    V. 智能存储单元
在一个实施方案中,该智能存储单元114是一个即插即用、高密度、可机架装配的应用装置,为了进行高吞吐率的数据传送而对该装置进行了优化。该智能存储单元可被设置为能够与多个其它智能存储单元进行通信,以便于能够提供一个单一的虚拟文件系统。由于需要更多的存储空间或者如果一个或多个智能存储单元出现了故障,则就可以安装额外的智能存储单元,而不需要使得整个系统停下来或中断服务。
就像这里所用的,术语“模块”指的是嵌入在硬件或固件中的逻辑,或者软件指令的集合,其可能具有进出点,并且用编程语言,例如C或C++编写。软件模块可以被编译和链接成一个可执行程序,柄被安装到一个动态链接库中,或者可以用解释性编程语言,例如BASIC,Perl,或Python书写。可以理解的是,软件模块可以从其它模块或是其本身调用,和/或可以响应检测到的事件或中断而被调用。软件模块可以被嵌入在固件,例如EPROM中。可以进一步理解的是,硬件模块可以由相连的逻辑单元,例如门和触发器构成,和/或可以由可编程单元,例如可编程门阵列或处理器构成。这里所述的模块优选的被作为软件模块而实现,但是也可以被实现为硬件或固件。
图3说明了一个智能存储单元114的实施方案,其中包括管理模块320,处理模块330,高速缓存340,堆栈350,以及存储装置360。该典型的智能存储单元114可以被设置为同交换机部件125进行通信,从而如图1所示发送和接收请求。
A. 管理模块
在一个实施方案中,智能存储单元包括一个管理模块320,其用于管理任务,例如,安装,参数设定,监视智能分布式系统,记录发生在智能分布式文件系统110中的时间,升级等。
B. 处理模块
该典型的处理模块330可以被设置为接收对数据文件的请求,检索本地和/或远程存储的关于被请求数据文件的元数据,以及检索本地和/或远程存储的被请求数据文件的数据块。另外,当一个或多个被请求的数据块遭到破坏或丢失时,该处理模块也可以进行数据恢复和错误校正。
在一个实施方案中,该处理模块330包括对应于文件请求的5个模块,即,块分配管理器模块331,块高速缓存模块333,本地块管理器模块335,远程块管理器模块337,以及块装置模块339。
1. 块分配管理器模块
块分配管理器模块331确定向哪里分配块,响应于READ(读)请求而定位块,以及指导装置的故障排除。可以通过作为缺省参数设置的策略,由系统管理员通过工具,例如图形用户接口,或命令解释程序接口,或它们的组合设置的策略来确定向哪里分配块。在一个实施方案中,该块分配管理器模块331驻留在本地文件系统层中,并与标准网络软件层,例如TCP/IP和以太网,和/或代替伯克利软件设计通用文件系统(“BSD UFS”)一块工作。
典型的块分配管理器模块331包括3个子模块:块请求转换器模块,转发(forward)分配器模块,以及故障恢复模块。
a. 块请求转换器模块
该块请求转换器模块接收传入的读请求,进行名称查找,定位合适的装置,并将该数据从装置中拖出以实现该请求。如果该数据直接可用,则块请求转换器模块根据该数据块是被存储在本地存储装置还是被存储在另一个智能存储单元的存储装置上,而发送一个数据请求给本地块管理器模块或远程块管理器模块。
在一个实施方案中,该块请求转换器模块包括一个名称查找处理过程,该处理过程将在下面标题为“智能分布式文件系统处理-处理名称查找”的部分进行说明。
该块请求转换器模块也可以响应于装置故障。例如,如果一个装置停机了,则该块请求转换器模块就会请求本地和远程数据块,其中该数据块可以通过使用,例如奇偶校验信息而被用于重构数据。这样,即使没有进行读也可以生成数据。另外,该块请求转换器模块与故障恢复模块进行通信,这样该故障恢复模块可以使用奇偶校验或其它错误或损失校正数据来重新生成数据,并在智能分布式文件系统的自由空间中重新条带化损失校正数据。在其它实施方案中,该块请求转换器模块可以请求破坏或丢失数据的原始拷贝。
b. 转发分配器模块
该转发分配器模块根据一些因素(例如冗余,空间,以及性能)来确定哪个装置的块应该被用作写请求。这些参数可以由系统管理员设置,从嵌入在智能分布式文件系统110中的信息中得出,与智能分布式文件系统110中的逻辑结合在一块,或者它们的组合。该转发分配器模块110从使用智能分布式文件系统的其它智能存储单元中接收统计信息,并使用这些统计信息来确定哪里是放置新传入数据的最好位置。被搜集在一块的统计信息包括,例如CPU利用率,网络利用率,以及磁盘利用率的测量结果。
该转发分配器模块也可以根据远程智能存储单元的响应次数来从远程块管理器模块中接收等待时间信息。如果装置之间的等待时间相对于其它的智能存储单元来说达到了高级别,则就会调整分配方案,如果可能的话,可以根据冗余设置来帮助其它未充分利用低智能存储单元的智能存储单元。在一个有利的例子中,该智能分布式文件系统可以已经将数据块从一个智能存储单元移至另一个智能存储单元,并因此更新相应的元数据结构。可以通过一个记录系统来记录该等待时间条件并将其报告给系统管理员。降低链接条件的原因可以是,例如坏的网卡,不正确的双向握手,或者被相当频繁读和写装置的数据。
可以使用各种策略来确定向哪里存储数据。可以根据系统的目的对这些策略进行调整,例如顺从由系统管理员设置的参数或偏好,被选中冗余级别的会议,和/或性能改进。下面提供少量的几个示例性策略,该转发分配器可以采用这些策略来存储数据。可以明白的是,除了下面讨论的策略以外,也可以使用很多不同的策略或者与下面讨论的策略一起使用。
该转发分配器模块可以包括一个用于在多个智能存储单元中对数据进行条带化(striping)的分配方案。数据条带化是在高级RAID存储装置中使用的普通技术,但是也可以在包括多个任务的单一用户工作站机器中被采用。数据条带化简单地意味着一个文件数据的不同部分是有效的和/或被存储在不同的存储装置或磁盘中。数据条带化的优点就是当读请求生成位于多个磁盘上的块时,每个磁盘都会加入到聚集数据检索吞吐量中来。对于典型的系统,在软件装置层中完成了数据条带化。即,该文件系统没有任何关于数据条带化的信息。只有文件系统下面的软件层懂得该结构。在一些专门的硬件模块中,即使位于实际硬件层的软件装置层之下,条带化也被完成。在智能分布式文件系统110中,该文件系统自己处理数据的条带化。该结构提供了具有条带化结构的更大灵活性。作为一个例子,典型的RAID技术受限于所有的磁盘必须大小相同并具有相同的性能特征。这些限制是确保数据均匀的分布在不同装置中所必需的。对于关于RAID的更详细的描述,请参看由Paul Massiglia所著的“The RAID Book(RAID手册)”,第六版(1977),其在这里作为参考。
另外,该转发分配器模块可以响应于用户请求(例如添加了新的智能存储单元导致的保护方案的改变等)和/或响应于系统(例如检测到出现故障的智能存储单元)来重新对数据条带化。但是,可以明白的是,可以由它单独地或者与块分配管理器模块中的其它模块一起,或者由它单独地或与智能存储单元的其它部分一块来进行重新条带化。
利用该智能分布式文件系统110,可以在各种智能存储单元114中使用不同的磁盘和磁盘大小,并参加文件条带化。该转发分配器模块在根元数据数据结构中查找磁盘装置信息,并使用性能规格或预置规则来计算应该分布文件数据的智能存储单元的数量。该转发分配器模块可以接着将文件块分配给一组智能存储单元。
该转发分配器模块也可以包括一个用于奇偶校验或其它错误或损失校正保护的分配方案。在大部分RAID系统中,当使用文件条带化时,也使用奇偶校验保护,使得除了一个磁盘以外的所有磁盘都被用于数据存储。最后的磁盘仅仅被用于奇偶校验信息。通常通过对所有数据磁盘中的各个数据块进行逐位异或(“XOR”)来计算奇偶校验信息。当磁盘发生故障时,使用该奇偶校验信息来进行数据恢复。通过对剩余的磁盘数据和奇偶校验信息进行逐位XOR来重新计算丢失的数据。在典型的RAID系统中,数据是无法重新恢复的,直到替换磁盘被插入到阵列中以重建丢失数据为止。
利用该智能分布式文件系统110,由于奇偶校验保护发生在文件系统层而不是软件装置层,因此可以在剩余智能存储单元其它部分的自由空间中重新计算和重新写入丢失的数据。如果没有足够的自由空间来重新写入数据,则可以用重新计算的数据覆盖奇偶校验数据,并将冗余已降至原始级以下的事实记录在日志中和/或汇报给系统管理员。
该转发分配器模块也可以包括用于镜像数据的分配方案,也就是使得多个数据拷贝在不同的智能存储单元上都可用。该转发分配器模块可以使用一个分配方案来负载平衡使用这些在存储空间、网络利用率、和/或CPU利用率上被最少使用的智能存储单元的智能存储单元中数据块的位置。镜像可以提供增加的性能和增加的缺省容差。如果为某些内容段请求镜像,则该转发分配器模块就为原始数据和镜像数据分配空间。如果请求大于1的缺省容差级别,则该转发分配器就可以通过缺省容差计数在逻辑上分开该智能存储单元或智能存储单元的子集,并生成被条带化的数据的镜像。例如,如果在智能分布式文件系统110中有10个智能存储单元,并且缺省容差2被请求,则该转发分配器就可以将该智能分布式文件系统分成两部分,每个部分中包括5个智能存储单元,对每个部分中4个智能存储单元中的数据进行条带化,并将每个部分中的第5个智能存储单元用作奇偶校验磁盘。该智能存储单元的划分可以被称作阵列镜像拆分。可以使用阵列镜像拆分的各种结构,包括存储数据时数据发生重叠或变形的结构。
c. 故障恢复模块
该故障恢复模块实时的对该智能分布式文件系统110进行重新设置,以恢复由于装置出现故障而不再可用的数据。该故障恢复模块在保持性能的同时,可以进行重新设置,而不会中断服务,并且在短时间内将数据返回至希望的冗余级别。
如上所述,远程块管理器模块337检测故障,并将这种故障的通知传送给故障恢复模块。对于初始故障,该故障恢复模块定位任何不符合由系统管理员请求或由智能分布式文件系统110设置的冗余参数的数据块。
首先,重新生成能够从奇偶校验信息重新生成的数据,并向该转发分配器模块发送一个为新数据分配空间的请求。该转发分配器监视CPU和网络利用率并开始进取性的操作,直到CPU和网络利用率达到一个预定的标记。该预定的标记可以由系统管理员设定或根据因素,例如计算机处理器预先设置。一旦达到了标记,该故障恢复模块就可以按照在标记时实现的速度重新计算数据,以降低对于智能存储单元性能上的冲击。
如果最近出现故障的装置重新又上线,则该故障恢复模块就与被恢复装置的远程块管理器模块337进行通信,以验证数据的完整性并固定任何不一致性。
该智能分布式文件系统110也可以支持包括热备份装置。该热备份装置是一个空闲存储装置,该装置目前没有进行任何数据存储,但是将会在出现系统故障时被使用。在这种条件下,该故障恢复模块就可以通过与热备份装置的远程块管理器模块337进行通信,使用热备份装置重构丢失的数据。
2. 块高速缓存模块
该块高速缓存模块333管理数据块,名称查找,以及元数据数据结构的高速缓存。在一个实施方案中,该块高速缓存模块333与BSD虚拟文件系统的缓存一起工作或代替其工作。
该块高速缓存模块333可是使用最近最少使用算法来储存数据块和元数据数据块,当然应该认识到,也可以采用各种高速缓存算法,例如频率高速缓存。该块高速缓存模块333可以确定采用哪种高速缓存算法,这取决于哪一个执行的最好,或者在其它实施方案中,算法可以被设置为缺省值。
最近最少使用算法(“LRU”)是在大多数系统中使用的典型高速缓存方案。LRU所基于的原则就是一旦数据被访问了,则它很可能会再次被访问。这样,按照它最后使用的顺序存储数据,使得已经最长时间没有被访问的数据被废弃。
频率高速缓存存储被最频繁访问的数据。由于磁盘写入是相对时间密集的操作,因此可以通过元数据数据结构中的访问频率以及基于访问频率的高速缓存来获得额外的性能。
另外,该块高速缓存模块333可以利用“根据需要”协议或“预先读取”协议,其中比所需的更多的数据被请求。该块高速缓存模块333可以为一组数据发送一个请求,并在数据集合之间请求一些数据。例如,该块高速缓存模块333可以进行预先读取,例如一个数据包预先读取,两个数据包预先读取,十个数据包预先读取,二十个数据包预先读取等。在其它实施方案中,该块高速缓存模块333可以根据请求的等待时间来使用预先读取技术。例如,该块高速缓存模块333可以进行V个数据包预先读取,其中V利用读取速度和链接等待时间来计算。该块高速缓存模块333也可以使用其它的基于CPU和网络利用率的算法,以确定预先读取数据的大小。而且,该块高速缓存模块333可以利用一组高速缓存协议,或者可以根据系统的性能等级来改变高速缓存协议。
该高速缓存340可以采用缺省大小来实现,以提供一般的多用户操作系统或被修改为将高速缓存块大小增加至不同的量,而不会很严重的影响系统性能。可以通过各种性能测试来确定这种修改,其中该性能测试取决于因素,例如被存储数据的类型,处理速度,智能分布式文件系统中智能存储单元的数量,以及采用的保护方案。
3. 本地块管理器模块
该本地块管理器模块335管理本地存储在存储单元360上的数据块分配,存储以及检索。该本地块管理器335可以进行零拷贝文件读取,以将数据从磁盘移动到存储装置360的另一个部分,例如网卡,从而改进性能。该本地块管理器335也可以根据被使用的存储装置360进行修改,以便于提高性能。在一个实施方案中,该本地块管理器模块335驻留在本地文件存储层并可以与FreeBSD快速文件系统一起工作或代替其工作。
在一个实施方案中,该本地块管理器模块335处理将数据存储在存储装置360上的请求。在一个实施方案中,该本地块管理器模块335确定该数据被存储在存储装置360上的哪个地方。例如,该本地块管理器模块335可以试图连续的存储相关的数据,使得当它接收与已经存储的数据相关的数据时,新数据被尽可能的与相关数据靠近存储。但是,应该明白的是,也可以采用各种存储选择并且每个智能存储单元都可以使用一个或多个存储选择。在其它实施方案中,智能分布式文件系统中的所有智能存储单元都可以使用相同的存储选择。
4. 远程块管理器模块
远程块管理器模块337可以管理设备之间的通信,如块请求、块响应以及远程设备故障的检测。在一个实施方案中,远程块管理器模块337驻留在本地文件系统层上。
在一个实施例中,智能存储单元114可以通过远程块管理器337与智能分布式文件系统110中的其它智能存储装置连接或与其通信。
该远程块管理器模块337可以使得智能存储单元114通过例如TCP的连接来在彼此之间进行谈话。在一个实施方案中,每个智能存储单元至少有两个连接,一个用于文件数据传输,一个用于控制消息传输。这种双通道TCP通信结构的优点就是只要数据块按照多页大小进行发送,则数据就可以通过DMA传输从网络接口卡直接发送至系统存储器,并通过DMA传输从系统存储器发送至系统的另一部分(可能还是网络接口卡),而不要求将数据从系统存储器的一个部分复制到另一部分。这是由于不需要CPU来分析数据包,因为自从该信息被传输到控制通道上,它们就不再含有非数据报头或标识信息。在高性能服务器和操作系统中,这些从系统存储器的一部分到另一部分的存储器拷贝成为对于系统系统性能的严重限制。
在一个实施方案中,该远程块管理器模块337使用利用消息的通信进行通信,例如,数据块访问消息(如,READ,READ_RESPONSE,WRITE,以及WRITE_RESPONSE),元数据访问消息(如,GET_INODE,GET_INODE_RESPONSE,SET_ADDRESS,GET_ADDRESS,以及INVALIDATE_INODE),目录消息(例如ADD_DIR,以及REMOVE_DIR),状态消息,以及各种其它类型的消息。
虽然在上面讨论了双通道协议,但是可以明白的是,也可以使用能够在智能存储单元114之间进行通信的其它通信协议。
5.块装置模块
该块装置模块339接待(host)用于文件系统所使用的磁盘硬件的特殊块的装置驱动器。例如,如果物理存储装置是一个ATA磁盘,则该块装置模块339就接待该ATA磁盘驱动器。
C. 高速缓存
该高速缓存存储器或高速缓存340可以使用本领域中各种公知的产品来实现,例如1G的RAM高速缓存。图3中所示的高速缓存340可以存储最近被访问过的或将要在一定的时间内被访问的数据块。该高速缓存340可以使用高速存储结构,例如静态RAM装置,动态RAM装置,内部高速缓存,磁盘高速缓存,以及其它各种类型的装置来实现。典型的,从高速缓存340中访问数据的时间快于访问非易失性存储装置的时间。该高速缓存340存储数据,使得如果智能存储单元114需要从存储装置360访问数据,则可以首先检查该高速缓存340,看看是否已经检索到了数据。这样,使用高速缓存340就可以改进智能存储单元在检索数据块中的性能。
D. 网络堆栈
在一个实施方案中,该智能存储单元310也包括一个通过使用例如TCP/IP的协议来处理引入和导出消息业务的网络堆栈350。但是,可以明白的是,也可以使用其它的协议或数据结构来实现该堆栈350。
E. 存储装置
该存储装置360是可以被用来存储数据块的一个或多个非易失性存储器装置集合。该存储装置360可以使用本领域中各种公知的产品来实现,例如4个1.25GB的ATA100装置,SCSI装置等。另外,该存储装置360的大小可以与智能分布式文件系统110中的所有智能存储单元相同或与不同的智能存储单元具有不同的大小。
F. 系统信息
在一个实施方案中,该智能存储单元114在一个计算机上运行,该计算机使得该智能存储单元114能够与其它的智能存储单元114进行通信。该计算机可以是使用一个或多个微处理器,例如Pentium处理器,Pentium II处理器,Pentium Pro.处理器,Pentium IV处理器,xx86处理器,8051处理器,MIPS处理器,Power PC处理器,SPARC处理器,Alpha处理器等的通用计算机。
在一个实施方案中,该处理器单元运行打开源FreeBSD操作系统并进行标准操作系统功能,例如打开,读出,写入和关闭文件。可以明白的是,也可以使用其它的操作系统,例如Microsoft Windows 3.X,Microsoft Windows 98,Microsoft Windows 2000,MicrosoftWindows NT,Microsoft Windows CE,Microsoft Windows ME,Palm Pilot OS,Apple MacOS,Disk Operating System(DOS),UNIX,IRIX,Solaris,SunOS,FreeBSD,Linux,或IBMOS/2操作系统。
在一个实施方案中,计算机配有常用的网络连接性,例如以太网(IEEE 802.3),令牌环(IEEE 802.3),光纤分布式数据接口(FDDI),或异步传输模式(ATM)。而且,该计算机可以被设置为支持各种网络协议,例如UDP/TCP上的NFS v2/v3,Microsoft CIFS,HTTP 1.0,HTTP1.1,DAFS,FTP等等。
在一个实施方案中,该智能存储单元114包括一个或两个CPU 2U支架可安装结构,多ATA100接口,以及支持jumbo(大型)9K以太网帧的1000/100网络接口卡。但是,可以明白的是,也可以采用各种结构。
如上所指出的,虽然讨论了关于智能存储单元的不同模块,但是可以明白的是,可以由不同的模块来执行任务。另外,一个或多个模块可以被组合在一起和/或可以增加一个或多个新模块,使得不需要特殊的模块来进行特定的任务。
VI. 智能分布式文件系统数据结构
图4示出了可以与智能分布式文件系统一块使用的示例目录结构。在该例子中,根目录的名称为“DFSR”并包括子目录:重要文件目录,临时目录,以及用户目录。该重要文件子目录包括子目录:口令目录和信用卡目录。文件USER.TXT和ADMIN.TXT被存储在口令子目录中。这样,USER.TXT文件的地址就是:
/DFSR/重要文件/口令/USER.TXT
由智能分布式文件系统110存储和保存关于目录和文件的信息或元数据。
A. 元数据数据结构
图5说明了用于存储元数据的示例数据结构510。该典型的数据结构510存储了下面信息:
    域                      说明
模式 文件的模式(例如常规文件,块特定,字符特定,目录,符号连接,先入先出,插座,不透明,未知)
    所有者 与该文件有关系的智能存储单元的数量
    时标 最后修改文件的时间信息
  大小     元数据文件的大小
  奇偶校验计数     使用的奇偶校验装置的数量
  镜像计数     使用的镜像装置的数量
  版本     元数据结构的版本
类型     数据位置表的类型(例如,类型0,类型1,类型2或类型3)
  数据位置表     数据位置表的地址或实际数据位置表信息
  参考计数     参考它的元数据结构的数量
  标志     文件权限(例如标准UNIX权限)
  奇偶校验映射指针     指向奇偶校验块信息的指针
可以明白的是,该示例数据结构510说明了用于存储元数据的数据结构510的一个实施方案并且根据本发明它可以使用各种方式实现。例如,数据结构510包括不同的域,该域可以是不同类型的,该域可以分组和单独存储等。
图6A、6B、6C和6D提供了对于数据位置表类型,即分别为类型0,类型1,类型2和类型3的示例数据位置表结构。在图6A中,类型0数据位置表表包括24个直接块入口(entry),表示该数据位置表中的入口包括装置/块编号对,该编号对表示存储数据的位置。在图6B中,类型1数据位置表包括15个直接块入口,3个一次间接入口,3个两次间接入口,以及3个三次间接入口。用于一次间接入口的入口表示存储直接入口的额外数据位置表的位置。用于两次间接入口的入口表示存储数据位置表的位置,其中该数据位置表包括一次间接入口。用于三次间接入口的入口表示存储数据位置表的位置,其中该数据位置表包括两次间接入口。
由于任何块都可以被镜像为任何数量的装置,因此该元数据数据结构510灵活到足以用多个位置表示块,并仍能提供来自固定空间内直接索引的快速访问。这样,有利于将一种类型与元数据数据结构相关,以表示将要被使用的数据位置表类型。在一个元数据数据结构510的实施方案中,可以有用于24个数据入口的空间,例如24个指针。
当数据文件小的时候,可以使用类型0;该数据位置地址被存储作为直接入口。这样,类型0元数据数据结构包括24个直接入口。类型1可以被用于支持大一些的文件并被镜像两次(三个文件拷贝)。类型1使用15个直接入口,3个一次间接入口,3个两次间接入口,以及3个三次间接入口。类型2可以被用于支持7次镜像(八个文件拷贝),并且包括8个一次间接入口,8个两次间接入口,以及8个三次间接入口。类型3数据位置表使得更多的所有磁盘地址镜像被存储作为3次间接入口。结果,可以存储24个完整的文件拷贝。
应该明白的是,也可以使用各种数据位置表,并且图6A、6B、6C和6D只是说明了示例性的实施方案。在其它实施方案中,例如,数据位置表可以包括直接和间接入口的不同混合物。而且,在其它实施方案中,数据位置表可以包括一个为表中的每个入口指定入口类型的入口域。该类型可以包括,例如,上面所述的(例如,直接,一次间接,两次间接,三次间接),以及其它的(例如,四次间接等)。另外,该数据位置表可以包括达到X层的数据位置表的更深的嵌套,其中X为整数。
该元数据数据结构也可以包括关于哪个智能存储单元包括文件的内容数据和保护数据的信息。另外,该元数据数据结构可以为每个智能存储单元存储信息,该单元跟踪用于文件内容数据的最后块地址和用于文件保护数据的最后块地址。例如,元数据数据结构可以记录MYFILE.TXT将它的数据存储在装置0,装置2,装置3和装置5中。该元数据数据结构也可以记录如下:
用于内容的最后块地址 用于奇偶校验的最后块地址
    装置0     300     001
    装置2     307     203
    装置3     200     303
    装置5     103     501
1. 目录元数据
图7A说明用于口令目录的一组示例元数据。在图7A中,数据结构中存储有关于口令目录的信息。该目录被镜像两次(一个三个拷贝)。由于目录结构相对较小(例如,在一个块中),因此只有三个直接指针,每个拷贝一个。该示例元数据集合包括一个数据位置表710,其中包括直接入口720,其用装置/块编号对来表示数据块的位置,以及一组未被使用的块入口730。
2. 文件元数据
图7B说明了用于文件USER.TXT的一组示例元数据。在图7B中,数据结构存储关于USER.TXT文件的信息。对于USER.TXT,每个数据块都有一个拷贝,并且采用3+1奇偶校验方案保护该数据,USER.TXT的内容数据大小为45K,块大小为8K,因此,就有6个数据块,而第6个数据块并没有被充分使用。该数据位置表710示出了6个数据块中的每一个存储的位置720,其中该数据块参照装置编号和块编号,并且第一入口对应于第一数据块。而且,用于内容数据的奇偶校验信息的位置被存在奇偶校验映射表740中,该映射表的位置被数据结构的最后位置指定作为“奇偶校验映射表指针”。采用3+1奇偶校验方案存储该USER.TXT文件,这样,对于每三个数据块,都会存储一个奇偶校验数据块。由于在该3+1奇偶校验方案中有6个块,因此有2个奇偶校验数据块(6被3除并去与其最接近的整数)。该奇偶校验映射表示出了奇偶校验数据块被存储的位置,其中该奇偶校验数据块参照装置编号和块编号,并且第一入口对应于第一奇偶校验数据块。
B. 数据位置表数据结构
该智能分布式文件系统100可以为很多种数据文件提供存储,以及关于该数据文件被如何存储的灵活性。在文件系统及进行数据文件的镜像和冗余可以使得该智能分布式文件系统110为不同文件提供各种冗余参数。例如,一些目录可以被镜像,奇偶校验保护,或者一点也不被保护。
图8A,8B,和8C说明了数据位置表的例子,其中该表被用于存储各种保护类型和级别的数据文件的数据位置信息。图8A,8B和8C有意说明各种数据位置表,并且应该明白,可以使用各种不同格式和/或结构。
图8A说明了示例数据位置表810,该表表示相应文件的每个数据块被存储在哪里。需要注意的是,对于文件,例如图7B中的文件相应的元数据并没有被示出,因为可以认可的是,该位置表810可以对应于一组元数据。该典型的数据位置表810同时包括直接入口和间接入口。
该直接入口包括装置ID/块对。该装置ID表示其上存储有数据的智能存储单元,并且该偏移或块地址表示存储装置上存储数据的位置。数据位置表中的一个示例入口可以是:
  入口    装置    块
  1       7       127
表示数据块1被存储在编号为7的装置的块127上。
该示例数据位置表810也可以包括指向额外数据位置表的间接入口,使得该数据位置表能够跟踪更大数据集合的数据位置。虽然间接入口的层数在理论上不受限制,但是最好限制层数,以改进吞吐率。例如,该数据位置表被限制为只允许最多两次间接入口或最多三次间接入口。该典型数据位置表810说明了两级间接入口。
另外,可以保留数据位置表的最后入口来存储奇偶校验映射表(如果有的话)的地址。在其它实施方案中,奇偶校验映射表的地址可以被存储在其它位置,例如元数据数据结构中的入口。如果一组数据中不包括奇偶校验保护,则该地址值就可以被设置为一个标准数值,例如NULL。
图8B说明了用于已经被镜像在两个额外位置上的数据的数据位置表。该数据位置表包括每个数据拷贝的装置ID和块或偏移地址。在该典型数据位置表中,在逐块的基础上选择了镜像位置。可以认可的是,也可以采用其它的方案,例如选择一个或多个智能存储单元来镜像特定的智能存储单元。虽然图8B中的数据位置表仅仅包括直接入口,但是可以认可的是也可以使用间接入口。
在一个实施方案中,文件的镜像信息可以被存储在文件的相应元数据结构中。该信息可以包括,例如数据拷贝的数量,以及每个拷贝的数据位置表的位置。可以认可的是,该数据位置表可以作为一个单一数据结构而被存储,和/或数据位置表的单独数据拷贝可以被存储在不同的位置。
虽然可以认可的是数据位置表可以包括奇偶校验信息,但是具有镜像数据的图8B的示例数据位置表并不包括奇偶校验保护。
图8C说明了一个具有奇偶校验映射表的数据位置表,在该典型数据位置表中,使用3+1奇偶校验方案来保护数据。可以采用本领域中公知的技术来生成数据,例如,通过对数据块逐位,逐字节,逐块的进行XOR来生成奇偶校验块。
该典型的数据位置表提供关于数据文件的信息,该信息由21个数据块(块0至块20)构成。由于该奇偶校验方案为3+1,则为每三个数据块集合生成一个奇偶校验块。表2说明了在图8C中所示的一些数据块与一些奇偶校验块之间的对应关系。
    数据块     奇偶校验块
    0装置5块100     1装置9块200     2装置7块306     0装置0块001
    3装置5块103     4装置9块203     5装置7块303     1装置8块001
表2
该示例数据位置表包括一个奇偶校验映射表或奇偶校验位置表。在该典型奇偶校验映射表中,有一个在用于生成数据的块入口和奇偶校验映射表之间的一对一的映射。在其它实施方案中,该奇偶校验映射表也包括各种大小的入口,当由于系统出现故障,没有任何直接位置时,这些入口指定了哪个块可以被装置和块编号一块进行奇偶校验XOR,以重新生成数据。在其它实施方案中,该奇偶校验生成方案被预先设置,使得可以由智能分布式文件系统110确定奇偶校验数据的位置和对应关系,而不需要指定哪些块被一块XOR,来重新生成数据。
在一个实施方案中,由元数据数据结构指向奇偶校验映射表,例如在元数据数据结构中的最后入口中,而不是包括在元数据数据结构中。由于只在智能存储装置出现故障的不经常情况下请求使用映射表,因此该映射表可以被指向,而不是被直接包括在元数据数据结构中。该奇偶校验映射表也可以使用可变大小的入口来表示奇偶校验重组块,使得智能存储单元114能够在重建数据的同时遍历该奇偶校验映射表一次,并在遍历时分析该奇偶校验映射表。在一些情况下,与奇偶校验计算时间相比,用于检索和分析入口的计算和I/O时间是可以被忽略掉的。
可以明白,虽然镜像信息或间接信息中的一个或两个都可以与奇偶校验位置信息一块使用,但是图8C中具有奇偶校验位置信息的示例数据位置表810并不包括镜像信息或间接信息。而且,应该明白,也可以使用其它的数据结构,并且数据位置表数据结构有意仅仅说明本发明的一个实施方案。
C. 示例数据
图9说明了一个示例数据位置表910和奇偶校验映射表920,以及其上存储有数据的相应装置。图9的例子示出了数据如何被存储在装置上的不同位置,数据的“条”被存储在每个装置上的不同偏移地址,并且奇偶校验数据可以被存储在各种装置上,即使是来自相同文件的数据。在其它实施方案中,该数据可以被存储在每个装置上的相同偏移地址。
例如,用于第一数据条的奇偶校验数据被存储在装置3的位置400上,并涉及存储在装置0的位置100上的数据块0,存储在装置1的位置200上的数据块1,以及存储在装置2的位置300上的数据块2。用于第二条数据条的奇偶校验数据被存储在装置2的位置600上,并涉及存储在装置0的位置300上的数据块3,存储在装置4的位置800上的数据块4,以及存储在装置1的位置700上的数据块5。
在一些实施方案中,单独的智能存储单元确定在哪里和/或如何将该位置映射到磁盘上的实际位置。例如,如果装置0具有4个物理硬盘,并且每个硬盘都具有100块的存储容量,则装置0允许从位置0到位置399的存储。一组可以被用于确定如何将位置映射到磁盘上的块的示例准则如下:
磁盘号=(位置/每个磁盘上的块数)的基底(floor)
磁盘上的块=每个磁盘上的块的位置MOD数
需要注意的是,MOD是一个获取除法余数的取余操作符。可以理解的是,上面的准则仅仅表示被用于将位置映射到磁盘和磁盘块上的示例性准则,并且也可以使用其它的准则或方案。例如,一个实施方案可以使用表示每个磁盘的块范围的链接列表并执行一个列表遍历。链接列表的优点就是允许多个大小的磁盘。
由于存储数据和奇偶校验信息的灵活性,当增加新的智能存储单元时,新数据可以被存储在新的智能存储单元上和/或现存的数据可以被移到新的智能存储单元上(例如在删除现存单元上的数据之前进行拷贝)而不会破坏该系统。另外,可以响应于高请求量,磁盘故障,冗余或奇偶校验参数中的变化等来实时的移动或拷贝数据块或整个文件。
VII. 智能分布式文件系统处理
A. 检索数据
图10说明了检索数据流程图的一个实施方案(“检索数据处理”)。可以对各种类型的数据进行检索,例如,目录元数据,文件元数据,内容数据等。
从开始状态开始,接收数据处理接收存储数据的位置(状态1010)。在一个实施方案中,使用智能存储单元ID以及偏移或块地址来指定位置。在其它实施方案中,可以使用存储装置的ID,而在其它实施方案中,可以使用一个表将ID映射到其它的ID等上
接下来,该检索数据处理确定该数据是否是本地存储的(状态1020)。如果该数据是本地存储的,则该检索数据处理就会从本地存储器中检索数据(状态1030)。在一个实施方案中,该检索数据处理可以首先检查高速缓存并且如果数据没在那里,接着检查存储装置。在其它实施方案中,该检索数据处理可以仅仅检查存储装置。
如果数据不是本地存储的,则该检索数据处理发送数据请求给存有数据的智能存储单元(状态1040)。在一个实施方案中,通过图1所示的交换机部件125来发送请求。该检索数据处理接着接收被请求的数据(状态1050)。
该检索数据处理收集已经被请求的数据并返回该数据(状态1060)。在一些实施方案中,在整个数据集合都被收集完之后才返回数据。在其它实施方案中,当从本地存储器或从其它智能存储单元检索到数据时,一部分或数据集合被返回。根据文件位置表顺序的返回一部分,或者当它们被检索或接收时把它们返回。在数据被返回之后,该检索数据处理进行至结束状态。
可以明白的是,图10说明了检索数据处理的一个实施方案并且也可以使用其它的实施方案。在另一个例子中,可以同时使用不止一个检索数据处理,使得多个检索数据处理通过采用技术或技术,例如并行处理,流水线技术,或异步I/O的组合来并行地检索数据。
B. 处理名称查找
图11说明了名称查找处理的一个实施方案(“名称查找处理”)。从开始状态开始,该名称查找处理接收一个文件名(状态1110),检索根目录的元数据,并将根元数据的位置设置为CURRENT(当前)(状态1120)。在一个实施方案中,根目录的数据可以被存储在数据结构中,例如图5的数据结构,虽然可以认可的是,可以使用各种数据结构来存储根目录的元数据。而且,在一些实施方案中,根目录的元数据可以被存储在各个智能存储单元114中,因此每个智能存储单元114都具有相同或相似的根目录元数据的拷贝。在其它实施方案中,根目录的元数据可以被存储在智能分布式文件系统110的其它位置上或者通过一个文件请求被发送给智能存储单元114。可以明白的是,为了确保多个数据拷贝的完整性可以采用公知的技术,例如通过互斥法和/或信号量进行锁存等。
该名称查找处理接着可以接着检索作为文件名一部分的下一个令牌(状态1130)。该名称查找处理接着从存储CURRENT数据的智能存储单元114中请求令牌元数据位置的地址(状态1140)。该请求可以是本地或远程的。该名称查找处理可以接着将返回的地址设置为CURRENT(状态1150)并确定是否存在另一个令牌(状态1160),其中一个令牌表示目录层次中的一层。如果存在另一个令牌,则该名称查找处理返回至块1130。如果没有更多的令牌,则该名称查找处理返回CURRENT值或参考CURRENT(状态1170)并进行至结束状态。
可以理解的是,可以使用名称查找处理的其它实现方式。例如,该名称查找处理可以检索文件的元数据数据。另外,一旦被请求数据的位置被找到了,则该名称查找处理可以确定该数据是本地存储还是存储在其它智能存储单元中。如果该数据被本地存储,则该名称查找处理可以发送一个READ请求给该智能存储单元114的本地块管理器模块335;如果该数据被存储在另一个智能存储单元上,则该名称查找处理可以发送一个READ请求给远程智能存储单元114的远程块管理器模块337。
C. 处理文件请求
图12说明了处理文件请求流程的一个实施方案(“文件请求处理”)。从开始状态开始,该文件请求处理接收检索文件的请求(状态1210)。在一个实施方案中,使用包括位置和文件名的文件全路径名指定文件。在其它实施方案中,该路径可以是相对路径和/或其它数据结构,例如表,可以被用于存储关于文件地址的信息。接下来,该文件请求处理进行名称查找处理,如图11中所示(状态1220),以确定该文件的元数据数据结构的位置。
该文件请求处理接着使用如图10所示和上面所述的检索文件处理来检索文件的元数据(状态1230),虽然也可以使用其它的检索文件处理。在一个实施方案中,文件的元数据可以包括对位置提供访问的数据位置表,其中文件中的每个数据块都被存储在整个智能分布式文件系统中。
接着,对于文件中的每个数据块(状态1240,1270),该文件请求处理通过在文件元数据中进行查找而获得数据块的位置(状态1250)并使用如图10中所示和上述的检索文件处理来检索数据块(状态1260),虽然也可以使用其它的检索文件处理。
该文件请求处理接着返回文件的数据(状态1280)并进行至结束状态。在一些实施方案中,在整个数据集合都被收集完之后才返回数据。在其它实施方案中,当检索到数据时,一个和多个数据块可以被返回。可以根据文件位置表顺序的返回该部分,或者可以当它们被检索或接收到时把它们返回。在一个实施方案中,该文件请求处理可以按顺序放置数据块和/或其它模块,例如流动服务器可以对数据块进行排序。在数据被返回之后,该检索数据处理进行至结束状态。
可以理解的是,图12说明了文件请求处理的一个实施方案并且也可以使用其它的实施方案。例如,该文件请求处理可以使用除了图11中所示的名称查找处理以外的不同名称查找进行来确定文件的位置。在另一个例子中,可以同时使用不止一个检索数据处理来检索数据块,使得多个检索数据处理通过采用技术或技术,例如并行处理,流水线技术,或异步I/O的组合来并行的检索数据。
D. 奇偶校验生成处理
图13说明了生成奇偶校验信息的流程的一个实施方案(“奇偶校验生成处理”)。从开始状态开始,该奇偶校验生成处理接收涉及一组数据的奇偶校验方案信息(状态1310)。该数据集合可以表示文件数据,文件元数据,目录元数据,文件数据子集等,该奇偶校验生成处理接收设置该数据集合的数据位置信息(状态1320)。接下来,对于每组奇偶校验数据(状态1330,1370),该奇偶校验生成处理检索一组数据(状态1340)。例如,如果奇偶校验为3+1,则该奇偶校验生成处理使用如图10所示的数据检索处理检索首先的3个数据块。接下来,该奇偶校验生成处理为该组数据生成奇偶校验数据(状态1350),例如对数据按照逐位,逐字节,或逐块的原则进行XOR操作。该奇偶校验生成处理可以接着将该数据存储在缓冲器中并返回至块1330,直到已经生成该组数据的奇偶校验信息为止。在生成奇偶校验信息之后,该奇偶校验生成处理确定在哪里存储奇偶校验数据(状态1380)。该奇偶校验生成处理可以使用旋转奇偶校验方案,其中文件数据各个连续数据条的每个奇偶校验可以被旋转的存储咱下一个装置上。该奇偶校验生成处理在不同于保存用于当前数据条的数据的装置的装置上分配奇偶校验块,用以确保即使装置出现故障时,奇偶校验信息不会与数据信息同时丢失。该奇偶校验生成处理也考虑了其它的因素,例如存储容量,CPU利用,以及网络利用,来消除一些装置被考虑进行奇偶校验存储。该奇偶校验生成处理接着将缓冲道数据存储在分配的空间中(状态1390),记录奇偶校验映射表中奇偶校验数据的位置(状态1395),并返回至结束状态。
可以理解的是,图13说明了奇偶校验生成处理的一个实施方案,并且也可以使用其它的实施方案。例如,该奇偶校验生成处理可以并行的检索数据块,并且并行的或使用周知的流水线技术或异步I/O技术生成奇偶校验信息。而且,该奇偶校验生成处理可以存储奇偶校验信息以及奇偶校验信息的位置,而不需要写入临时的缓冲器,或者该奇偶校验生成处理可以将奇偶校验数据或指针返回给奇偶校验数据。
E. 数据恢复处理
图14说明了丢失或破坏数据的恢复流程的一个实施方案(“数据恢复处理”)。从开始状态开始,该数据恢复处理接收关于被使用的奇偶校验方案的信息(状态1410)。该数据恢复处理接着接收关于磁盘或数据出现故障或破坏的信息(状态1420)。接着,该数据恢复处理接收用于其中丢失或破坏数据被指定的奇偶校验块集合的地址信息(状态1430)。该数据恢复处理接着从可用的智能存储单元中检索数据块(状态1440)。可以使用如图10所示的检索数据处理来检索数据。该数据恢复处理根据奇偶校验方案进行错误校正(状态1450),例如对块进行XOR操作并将结果存储在缓冲器中(状态1460)。缓冲器中的数据表示丢失的数据。该数据恢复处理接着返回缓冲器中的数据(状态1470),并进行至结束状态。
可以理解的是,图14说明数据恢复处理的一个实施方案并且也可以使用其它的实施方案。例如,该数据恢复处理可以返回被恢复的数据而不需要存储它。
VIII. 分布式文件系统中的文件的重新条带化
在一些实施方案中,该智能分布式文件系统包括用于对分布在一组智能存储单元中的文件重新条带化的系统和方法。已经被分布和存储在智能分布式文件系统中的文件可以在系统中被重新分布和恢复,而不需要中断用户对文件的访问和不需要使系统离线。另外,数据可以按照最小移动的方式在智能存储单元中被重新条带化,并且即使在重新条带化处理中但系统出现故障时,该数据也可受到保护并且是可恢复的。
当例如智能存储单元中的一个经历了一些类型的故障时,可以使用该重新条带化处理,以使丢失的数据可以被重新生成并随后在系统上恢复。当例如一个或多个智能存储单元被加入或从智能分布式文件系统中移除时,也可以使用该重新条带化处理,以使数据可以被加入到新的智能存储单元或重新分布到其它的智能存储单元。另外,当文件的保护方案变化时,也可以使用该重新条带化处理。例如,如果一个文件从3+1奇偶校验保护变为3+1奇偶校验保护,则该重新条带化处理就可以将数据移动到符合新奇偶校验保护的布局中的智能存储单元,并且直到新的布局完成,一直允许用户访问旧的布局下的文件,使得该数据可以受到旧的奇偶校验方案的保护。
在一个实施方案中,可以由块分配管理器进行重新条带化处理,可是,应该明白的是,在其它实施方案中,可以由该智能分布式文件系统的其它部分进行该重新条带化处理。
使用了上述方法的智能存储单元带来的优点就是不需要有任何特定的数据条的任何特定块驻留在智能存储单元中的任何特定位置。这样,“数据条”的提取就不需要涉及多个智能存储单元中的任何特定块,但是可以包括来自不同单元的任何可用块。
A. 重新条带化处理
图15说明了在智能分布式文件系统中对数据重新条带化的方法的一个实施方案(“重新条带化处理”)。该文件在逻辑上被表示作为一组根据文件希望的保护方案确定的保护组。例如,如果文件希望的保护方案为3+1奇偶校验,则该文件就被分成具有4簇或块的保护组,即3个内容块和1个奇偶校验块。如果文件希望的保护方案为3x镜像保护方案,则该文件将会被分成具有3个簇,即3个相同的内容数据块的保护组。
这里描述的重新条带化处理表示一种有利的方法,其能够在系统中移动文件数据,而不需要数据驻留在智能存储单元的任何特定位置上。该重新条带化处理还允许在重新条带化处理期间进行数据恢复,并且允许数据条的实质性变化。另外,符合来自保护方案的特殊限制。例如,奇偶校验数据及其相关的内容数据都被存储在不同的智能存储单元上。对于镜像数据,每个数据的拷贝都可以被存储在不同的智能存储单元上。
在一个实施方案中,当确定如何在智能存储单元中存储数据时,可以通过使用允许其它对象的优先选择来进行有利的重新条带化。
在一个例子中,优先选择就是:最小的移动就是一个优先权,这样,如果一个块已经位于一个智能存储单元,则相同的智能存储单元就会被指定给该块,使得该块并不是必须被恢复在不同的智能存储单元上。在智能存储单元出现故障之后,修复该文件时,这种优先选择最可能被使用。
另一个优先选择可以是:使用最优智能存储单元进行布局。如果一个块已经位于一个智能存储单元上,并且该智能存储单元就是一个“最优”单元,则相同的智能存储单元就被指定给该块。这样,可以避免块的一些移动,但是,当需要平衡一组智能存储单元中的文件时,就可以移动块。该优先选择可以被使用,例如当保护设置变化时,或者向智能分布式文件系统中增加新的智能存储单元时。
还有一个优先选择可以是最佳布局而不管数据已经位于哪里。这样,就可以完成重新条带化,而不需要任何关于块的现存位置。为了最优布局文件,可以移动现存的块。但是,可以理解的是,一些数据块不需要被移动,因为它们将被存储在适当的智能存储单元上。在一些实施方案中,为了修补存储装置上的存储碎片,即使它们正好出现在最佳智能存储单元上,该智能分布式文件系统也可以重新定位块。该优先选择可以被用于调谐操作,例如降低存储碎片和用于READ性能的优化,并且很可能在“根据需要”的基础上或在正常文件系统操作期间的背景中被使用。
“最优”布局的目的可以基于一个或多个因素。例如,该因素可以包括文件大小,READ(读)性能,WRITE(写)性能,预期的访问频率,系统吞吐量,网络速度,可用的存储装置空间等等。
在一个实施方案中,该重新条带化处理试图将一个文件留在这样一种状态中,该状态允许如果在重新条带化处理期间一个或多个智能存储单元出现了故障则使用保护数据来重新生成文件。虽然如果可能的话可以使用优先选择,但是可以理解的是,有一种不符合优先选择的情况。例如,如果块A,B,和C是3x镜像保护方案的一部分并且块A和B在装置0上,块C在装置1上,即使将块B留在装置0上将会满足最小数据移动的优先选择,但块A或B之一必须被恢复在另一个可用的智能存储单元上,以满足保护方案的限制。在执行算法期间,当存在周期性的情况时,在该情况下,保护方案限制以及优先选择相互冲突,在一些实施方案中,系统选择保持保护,这就付出了增加额外数据移动的代价。可以理解的是,在其它实施方案中,一个或多个优先选择可以优先于基于特定实现的保护方案。
现在参照图15对重新条带化处理的一个实施方案进行论述。从开始状态开始,该重新条带化处理进行至下一个状态,其中为每个保护组(状态1520,1540),该重新条带化处理将智能存储单元分配给保护组中的块(状态1530)。下面参照图16对分配处理的一个实施方案进行论述,虽然可以使用其它的分配处理。
在块被分配给智能存储单元之后,如果该块被分配给一个新的智能存储单元(即它已经被存储在已经分配的智能存储单元上),则该重新条带化处理发送一个请求给已经分配的智能存储单元,以存储该块(状态1550)。应该理解的是,可以使用其它的实施方案,使得该重新条带化处理在分配完一组保护组之后,发送一个请求给已分配的智能存储单元,并且在进行至下一个状态之前不需要所有的保护组都被分配。例如,当一个或多个智能存储单元被加入到系统中,或者如果一个或多个智能存储单元出现故障时,如果使用了该重新条带化处理,则可以在分配了每个保护组之后由该重新条带化处理向已经分配的智能存储单元发送一个请求。
接着,该重新条带化处理验证该数据已经被成功存储(状态1560)。在典型实施方案中,已经被存储在已分配的智能存储单元中的数据将会满足这种查询。如果数据被成功存储,则该重新条带化处理就会更新涉及文件的元数据数据结构,并进行至结束状态(状态1590)。一旦更新完成了,就会由系统使用文件的新信息。任何以前使用的存储器现在都被释放,并且该元数据反映出文件的新状态。
该元数据更新可以包括,例如内容块的新地址单元,保护块的新地址单元,新保护方案,用于存储文件数据的智能存储单元的新列表,以及用于存储文件保护信息的智能存储单元的新列表。该重新条带化处理也可以用文件数据的新的“最后块地址”以及每个智能存储单元的奇偶校验数据来更新元数据数据结构。可以理解的是,也可以使用其它的实施方案,使得该重新条带化处理在已经存储一组保护组之后,验证该数据已经被成功存储(状态1560),并且在进行至下一个步骤之前不需要存储所有的块。在该实施方案中,该重新条带化处理可以根据旧数据的保护值与新数据的保护值的最小公倍数,在更新元数据数据结构之间确定必须被成功存储的保护组的数量。在这种情况下,被镜像的数据的保护值为1(例如,对于在3x镜像保护方案下的数据,该保护值将为1)。用于奇偶校验保护数据的保护值为每个奇偶校验集合中内容块的数量(例如,对于采用4+1奇偶校验方案的数据,保护值将为4)。
如果数据没有被成功存储(例如,一个或多个智能存储单元不能存储该数据),则该重新条带化处理返回一个错误(状态1580)并进行至结束状态。这样,如果一个或多个智能存储单元不能存储数据,则保持原始数据并且仍旧使用它的原始保护方案保护该文件。任何最新存储的数据都是空闲的。
可以理解的是,也可以使用重新条带化处理的其它实施方案。例如,该分配处理可以在逐块的基础上进行分配,以使每个元数据数据结构都被检查,并且根据地址和保护设置推荐最优的智能存储单元。
B. 存储处理
在一个实施方案中,当被分配的智能存储单元接收请求存储数据的请求时,每个被分配的智能存储单元都要确定把数据存储到存储装置的哪里。在一个例子中,该被分配的智能存储单元试图连续存储相关的数据,使得当其接收新数据时,该智能存储单元通过使用文件相关数据的最后块地址将新数据存储在第一个可用的位置。但是,可以理解的是,可以使用各种存储优先选择,并且每个智能存储单元都可以使用不同集合的存储优先选择。在其它实施方案中,智能分布式文件系统中所有智能存储单元可以使用相同的存储优先选择。一旦存储了新的数据,该智能存储单元就会返回新数据的地址单元。可是,在其它实施方案中,被分配的智能存储单元可以直接更新元数据数据结构中的数据的新地址。
C. 分配处理
图16说明了用于分配数据块和保护块给可用智能存储单元的方法的一个实施方案(“分配处理”)。该分配处理确定在重新条带化处理期间该块应被分配到哪里。在典型实施方案中,对一个保护组进行分配。这样,对数据条进行分配,其中该数据条中包括数据块以及任何相关的保护数据(例如,奇偶校验数据,数据的镜像拷贝)。该分配处理可以试图指导一个关于最少可能块重定位的布局,同时还为块确定最优位置并试图满足任何被指定的布局目标。
从开始状态开始,该分配处理进行至下一个状态,以识别出哪个智能存储单元是可用的(状态1620)。在一个实施方案中,该可用的单元包括当前正被文件使用的智能存储单元以及由可用自由空间挑选的剩余智能存储单元。但是,应该认识到,在其它实施方案中,该智能存储单元可以被不同的排序,或者可以使用其它的数据结构对可用的智能存储单元(例如,等级编号可以被给予每个可用智能存储单元)进行排序。智能存储单元是否“可用”取决于一个或多个因素,例如,该智能存储单元是否在起作用,智能存储单元的吞吐率,智能存储单元的存储装置上自由空间的大小等等。
接下来,该分配处理确定是否有足够的可用智能存储单元来进行分配(状态1630)。智能存储单元的优选数量可以取决于各种因素,例如保护组中数据的数量,被采用的保护方案,系统中智能存储单元的最大数量,所希望的文件吞吐率等。例如,具有3+1奇偶校验保护的文件要求至少有4个智能存储单元。如果并没有足够的可用智能存储单元,则分配处理返回一个错误(状态1640)并进行至结束状态(状态1670)。
如果有足够的可用单元,则该分配处理为保护组中的每个块选择一个智能存储单元(状态1650)。下面将参照图17对选择智能存储单元的更详细的说明进行叙述,虽然也可以使用其它的处理。
在一些实施方案中,在选择完智能存储单元之后,接着对于每个被选中的智能存储单元,该分配处理就会确定涉及当前文件的数据块的最后位置和/或涉及当前数据的保护块的最后位置(状态1660)并进行至结束状态。这允许新的数据块和/或新的保护块被存储在来自文件的其它数据块和保护块的附近。应该认识到,在其它实施方案中,可以使用其它的存储优先选择。例如,可以连续或非连续的存储数据,数据可以被存储在存储装置的末尾而不是开头等等。
D. 选择处理
图17说明了用于选择其上存储有一个单一保护组的簇的智能存储单元的方法的一个实施方案(“选择处理”)。在典型实施方案中,该选择处理备用于将装置分配给文件的保护组。如上面所指出的,该保护方案限制了保护组中的每个块都被存储在不同智能存储单元上的要求。这样,对于镜像文件,块的每个拷贝都应该被存储在不同的智能存储单元上,并且对于奇偶校验保护文件,每个内容数据块及其相关的奇偶校验数据都应该被存储在不同的智能存储单元上。虽然典型的选择处理被用于将智能存储单元分配给一个单一的保护组,但是,应该认识到,在其它实施方案中,该选择处理可以被用于将智能存储单元分配给更小和/或更大的数据组。例如,该选择处理可以对一个单一块,一组块,一组保护组等起作用。
1、 示例实现
整个智能存储单元集合,这里被称为装置,智能分布式文件系统中可用的装置被表示为T。该工作装置集合就是一组智能分布式文件系统中所有运行的装置并且可以被表示为G。G不包括由于一些类型的故障(例如系统故障,网络故障,存储装置故障等)而“停机”的智能分布式文件系统中的任何装置。另外,W表示当前其中存储了文件内容数据和保护数据的装置集合(即,填满了文件的装置)。需要注意的是,如果文件从没有被存储到智能分布式文件系统上,则W为空。
从开始状态开始,该选择处理进行至下一个状态并识别一组优选的装置(状态1715)。
在典型实施方案中,可以在上面分布文件的装置的数量应该足够大,以符合被选保护方案的限制。例如,为了实现m+n奇偶验证保护,至少需要m+n个装置。为了实现k次镜像,需要k个装置。
另外,可以在上面分布文件的装置的数量应该足够小,使得该文件不会太易损坏。当文件遍布越来越多的装置时,它会变得易损坏,这是因为如果一个装置出现故障,则该文件会受到影响的可能性就会增加。这样,该系统就可以选择一个上限作为装置的最大数量max,该装置可以被文件数据填满。
因此,文件宽度的限制可以被表示为:
采用m+n奇偶校验保护:{m+n}<=文件宽度<=max
k次镜像:{k}<=文件宽度<=max
为了选择优选装置集合P,该系统使用max来设置P的大小。从G和W的交集中得到的装置被加给P,并且如果P仍旧不是max的大小,则从G和W!的交集中得到的装置被加给P,直到P达到max大小。从G和W!的交集中得到的剩余装置没有被加给P,而是被加给了S(状态1720)
这样,如果|“max”|==|W&G|,则P将只包括其上已经驻留有数据的UP装置,并且S将只包括其上还没有驻留数据的UP装置。如果|“max”|<|W&G|,则P将会包括一些其上已经驻留有数据的UP装置,并且S也将会包括一些其上已经驻留有数据的UP装置以及一些其上还没有驻留数据的UP装置。如果|“max”|>|W&G|,则P将会包括其上已经驻留有数据的UP装置,以及一些其上还没有驻留数据的UP装置。S将会包括一些其上还有没驻留数据的UP装置。
应该认识到,也可以使用其它选择优选装置的方法。
接着,该选择处理为当前保护组识别一个最优装置的有序集合,即“最优保护组”(状态1725)。该最优保护组可以被表示为O。在典型实施方案中,该最优文件布局被解释为如果第一次将文件写入到整个优选装置集合上,将被使用的布局。当P中的最后装置被使用了,则下一个被使用的装置就是P中的第一个装置,其中该P允许块“环绕”P中的装置。因此,第一保护组的第一块会被存储在P中的第一装置上,第一保护组的第二块会被存储在P中的第二装置上,第一保护组的第三块会被存储在P中的第三装置上,对于第一保护组中的其余块也是类似的。接着,第二保护组的第一块会被存储在其上存储有前一保护组的最后块的装置上,第二保护组的第二块会被存储在下一个装置上。虽然该实施方案允许在P的装置的保护组中重叠一个块,但是可以认可的是,也可以使用其它的重叠大小,包括零。在该实施方案中,“最优保护组”可以被解释为如果第一次将文件写入到优选装置上,其上将会存储特定保护组装置的有序集合。可以使用用于选择“最优文件布局”和“最优保护组”的其它定义。
接下来,该选择处理识别出一组非最优装置,其可以被表示为N(状态1730)。在该实施方案中,N为如果文件第一次被写入,其中将会存储保护组的优选装置中的装置集合。
接着,该选择处理就会生成一个装置阵列或矩阵,其中保护组中的每个块当前都被存储在该装置上(状态1735),这可以被称为C。C具有与新保护组中块的数量相同的列,并且每个列中行的数量都等于由当前存储的文件所使用的镜像的数量,最小的行数为1。C中每个列的入口表示其中已经存储了块的各种装置。例如,如果一个文件当前被存储作为3x文件,并被改变为5x文件,则新保护组的大小为5,并且由当前存储的的文件使用的镜像数为3。这样,C就具有5列,每列中包括3行。如果一个文件当前被3+1奇偶校验保护并被改变为5+1奇偶校验保护,则C就具有6列,每列中包括1行。如果一个文件还没有被存储在系统上,则C具有用于新保护组中的每个决的列并具有1行,使得C中的每个入口为零,它表示在系统上目前没有存储块。零入口表示该块当前并没有被存储在系统上,并且也可以被使用,例如当奇偶校验保护被加给该文件时,就好像在这之前并没有使用过奇偶校验,接着该奇偶校验块将不会已经被存储在系统上。
该选择处理接着确定已经为该文件选择了哪个优先选择(状态1740)。在该典型实施方案中,有3个优先选择,第一个优先选择(“修复”)通过把块分配给它们已经驻留的智能存储单元而有利地使数据的移动最小化。第二优先选择(“重新均衡”)有利于分配块,使得已经驻留在“最优列表”中的装置上的块保留在该装置上,并且其它的块被移动到“最优列表”中剩余的装置中。第三个优先选择(“重调谐”)有利于将所有的块分配给“最优列表”中的有序值。应该认识到,如果优先选择与选择的保护方案相互冲突,则并不是能够一直满足该优先选择。
应该认识到,上面讨论的优先选择是典型的,并且可以使用各种优先选择。而且,一些实施方案可以不使用优先选择,而可以仅仅通过使用保护方案的限制来选择装置。在其它实施方案中,优先选择可以优先于保护方案限制。
如果REPAIR(修复)为优先选择,则选择处理遍历C中的每一列,并查看是否列中的一个装置于O中的一个装置相匹配(状态1745)。如果匹配,则选择处理通过,例如记录最后分配列表中装置的ID将匹配装置分配给那个块,从O中去除该装置,并移动到C中的下一列。如果不匹配,则该选择处理移动到C中的下一列。一旦C中的每一列都被遍历了,则该选择处理进行至下一状态。
在该状态中,对于每个还没有被分配的块,该选择处理遍历C中的相应列并查看是否列中的一个装置与N中的一个装置匹配(状态1750)。如果匹配,则选择处理通过,例如记录最后分配列表中装置的ID将匹配装置分配给那个块,从N中去除该装置,并移动到下一个还没有被分配的块。如果不匹配,则该选择处理移动到还没有被分配的下一块。一旦还没有被分配的块被遍历了,则该选择处理进行至下一状态。
在该状态中,对于每个还没有被分配的块,该选择处理遍历C中的相应列并查看是否列中的一个装置与来自S的一个装置匹配(状态1755)。如果匹配,则选择处理通过,例如记录最后分配列表中装置的ID将匹配装置分配给那个块,从S中去除该装置,并移动到下一个还没有被分配的块。如果不匹配,则该选择处理移动到还没有被分配的下一块。一旦每个还没有被分配的块被遍历了,则该选择处理进行至下一状态。
在该状态下,对于每个还没有被分配的块,该选择处理从O中分配一个装置(状态1760)。一旦每个块都被分配完了,则该选择处理进行至结束状态。
如果REBALANCE(重新均衡)为优先选择,则选择处理遍历C中的每一列,并查看是否列中的一个装置于O中的一个装置相匹配(状态17650)。如果匹配,则选择处理通过,例如记录最后分配列表中装置的ID将匹配装置分配给那个块,从O中去除该装置,并移动到C中的下一列。如果不匹配,则该选择处理移动到C中的下一列。一旦C中的每一列都被遍历了,则该选择处理进行至下一状态。
在该状态下,对于每个还没有被分配的块,该选择处理从O中分配一个装置(状态1770)并记录最后分配列表中的分配。一旦每个块都被分配完了,则该选择处理进行至结束状态。
如果RETUNE(重调谐)为优先选择,则选择处理从第一块开始并分配O中的第一个装置,第二块被分配给O中的第二个装置,诸如此类,使得通过使用有序的O列表来分配装置(状态1775)。一旦每个块都被分配完了,则该选择处理进行至结束状态。
这样,该选择处理为保护组中的每个块选择了一个装置。
应该认识到,图17说明了选择处理的一个实施方案并且也可以使用其它的实施方案。例如,用于首先写出文件的方法可以是不同的。如上所述,该典型实施方案使用了一个变体来在优选装置中分布块,并且使得保护组与一个块重叠。在其它实施方案中,可以使用不同的变形。另外,该系统可以消除变形值的使用。在这种情况下,每个保护组每次都能使用相同的单元开始分配它的数据,或者在将单元分配给保护组之后,就可以根据各种参数来记录优选单元的列表。而且,在其它实施方案中,该选择处理可以在移动到C中的下一列之前,遍历各个O,N,和S集合。
另外,可以通过使用额外的和/或其它的标准来选择该优选装置和最优装置的集合。该标准可以包括,例如哪个智能存储单元正在运行,智能存储单元的存储装置上可用空间的量,智能存储单元的吞吐率,其中已经存储了来自保护组的数据的智能存储单元等。应该认识到,不同的系统可以具有不同的目的。
2. 基础概述
接下来提供一些上面讨论的数学结构的概述。
a. 操作符
下面的就是用于为参照图17描述的典型实施方案提供基础的操作符。
&=交集
|=并集
!=反
-=减
b. 集合/列表
下面就是用于为参照图17描述的典型实施方案提供基础的集合和有序列表。
T=智能分布式文件系统中可用装置的集合
G=智能分布式文件系统中所有运行装置的集合
W=由文件占据的装置的集合
S=备用装置的集合
P=优选装置的有序集合
O[size]=对于保护组中每个块的装置最优分配,其中“size”就是保护组的大小。
N=非最优集合=P-O
F[size]=用于保护组中每个块的装置最终分配
C[size,k]=分配给每个块的当前装置,其中k为当文件被存储时,由该文件使用的镜像的数量
3. 实例
现在对一个装置选择的例子进行说明。但是,可以认识到,该例子并不意味着限制本发明的范围,但是仅仅提供关于各种实施方案的细节。
A. 修复
假设我们在一个4节点阵列上修复一个3x文件,该阵列刚刚经历了节点3上的一个装置出现故障。
W==(1,2,3)
G==(1,2,4)
dev(X)==3;widthpolicy(X)==8
R==修复
group_index=0
这里|G|>=dev(X),所以我们可以开始。我们有:
P==G&W==(1,2)
S==G&!W==(4)
现在,我们增加了取自S的P,从而:
P=(1,2,4)
S=()
该cycle_offset就是group_index%|P|,或者0%3=0。这导致:
O=(1,2,4)
N=()
现在,我们迭代F中所有的数值。
对于F[0],由于这两个镜像都可能选择,因此C[0]&O就是(1,2)。装置1和2都包括F[0]的镜像。选择F[0]=1。从O中删除1,因此O现在是(2,4)。
现在对于F[1],C[1]&O就是(2)。选择F[1]=2。从O中删除2,因此O现在是(4)。
对于F[2],C[2]&O是空集。我们现在进行至最后步骤,将O的剩余值分配给F[2]。这样F[2]=4。因此最终F就是:
F=(1,2,4)
修复的目的完成了;只有一个簇必须被重构。其它的两个簇留在原地。
b. 重新均衡
在3节点阵列上给定一个2+1文件,该重新均衡的目的可以被用于当第四个节点被加入到阵列中来时,将文件重新条带化为3+1。
W==(1,2,3)
G==(1,2,3,4)
dev(X)==4;widthpolicy(X)==8
R==重新均衡
group_index=30
这里|G|>=dev(X),所以我们可以继续进行。我们有:
P=(1,2,3)
S=(4)
我们增加了取自S的P,从而:
P=(1,2,3,4)
S=()
该group_index为30,因此cycle_offset就是30%4=2。接着:
O=(3,4,1,2)
N=()
注意,所有的C[i]具有最多一个元素,由于该文件并没有被镜像,并且因此每个源簇只存在一个数据拷贝。为了该例子,假设:
C=((3),(4),(2),(3))
这样,C[0]=(3),C[1]=(4)等等。
我们从F[0]开始。在这种情况下,C[i]&O提供了3,因此F[0]=3。类似的,F[1]=4并且F[2]=2。在每个步骤上,我们从O中删除,因此O被剩下只包括(1)。
对于F[3],C[3]&O为空。我们进行至将O的最后成员分配给F[3]的最后步骤,因此F[3]=1。我们的最后F就是:
F=(3,4,2,1)
这里,有两块被移动了,并且F中所有的成员都在O中。
c. 重调谐
该典型智能分布式文件系统具有8个装置,A,B,C,D,E,F,G和H。并且文件由12个内容块构成,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11和b12。当前,文件被存储在A,B,C和D上并被镜像两次,但是没有奇偶校验保护。接下来说明了其上当前存储了每个数据块的装置
b1  b2  b3  b4  b5  b6  b7  b8  b9  b10  b11  b12
 A  B  C  D  A  B  C  D  A  B  C  D
 B  C  D  A  B  C  D  A  B  C  D  A
如果新数据布局包括3+1奇偶校验保护,但是没有镜像数据,则该文件就会具有4个保护组,每个组具有4个块-3个内容块,和一个奇偶校验块。可以在其上分布文件的装置的最大数量max被设为4。
这样:
T={A,B,C,D,E,F,G,H}
W={A,B,C,D}
接下来,假设装置F,G和H停机了。这就表示:
G={A,B,C,D,E}
为了构建P,从集合W和G的交集得到的装置被加到P。如果P仍旧没有“max”数量的装置,则从集合G和W!的交集得到的装置被加到P,直到达到“max”数量。集合G和W!的交集中剩余的装置被放到S中。在一个实施方案中,G和W!的交集中的装置按照在前面具有更多自由空间来排序。
P={A,B,C,D}
S={F}
使用上述的变体(skew),该最优文件布局将为:
    A     B     C     D     E
    奇偶校验组1     b1     b2     b3     p1     --
    奇偶校验组2     b6     p2     --     b4     b5
    奇偶校验组3     --     b7     b8     b9     p3
    奇偶校验组4     b11     b12     p4     --     b10
这样,对于奇偶校验组1:
O={A,B,C,D}
N={E}
C={{A,B},{B,C},{C,D},{0,0}}
对于奇偶校验组2:
O={D,E,A,B}
N={C}
C={{D,A},{A,B},{B,C},{0,0}}
对于奇偶校验组3:
O={B,C,D,E}
N={A}
C={{C,D},{D,A},{A,B},{0,0}}
对于奇偶校验组4:
O={E,A,B,C}
N={D}
C={{B,C},{C,D},{D,A},{0,0}}
奇偶校验组1现在被用作使用RETURN(返回)优先选择来选择装置的例子。重新调用:
O={A,B,C,D}
这样,F中的第一块被分配给A,F中的第二块被分配给B,F中的第三块被分配给C,并且F中的第四块被分配给D。
为每个保护组调用该选择处理会导致下面的分配。
F1={A,B,C,D}
F1={D,E,A,B}
F1={B,C,D,E}
F1={E,A,B,C}
这样,该块就被存储在与如果该文件首先被写入他们所处的位置一样的位置-与上面讨论的最优文件布局中相同的布局。
4. 示例伪码
下面提供了一个伪码的例子,其用于举例说明选择处理的实现方式。但是应该认识到,该例子并不表示限制了本发明的范围,而仅仅是为特定实施方案提供细节。
2003 ISILON SYSTEM,INC.(易斯龙系统公司)
为保护组进行装置选择
----------------------------------------------------------
&表示交集;|表示并集;!表示反。
该算法试图为保护组提供一个F,即一组装置选择。F中的所有元素必须是唯一的。F是一个阵列,被索引为F[i]。对于FEC保护(奇偶校验保护)文件,F描述了对于保护组中簇的集合的devid选择,按照贯穿整个文件的偏移。对于镜像文件,F描述了对于保护组中所有镜像的devid选择。
该算法考虑多个输入:
group_index是保护组的索引。每个文件都被分成了多个不连接的保护组,该保护组可以是被分配的索引。
G是所有“up”装置的集合——即可用的装置并且没有经历过故障条件。
W是已经填满了文件的装置的集合。它是个有序列表。
X是描述如何布局文件的策略。对于每个X,都有一个值dev(x),该值表示根据X,保护文件所需装置的数量。需要注意的是,这也是保护组中元素的数量,因此|F|=dev(x)。x也提供所希望的文件宽度widthpolicy(X),其为在理想条件下如果|G|>=widthpolicy(X)该文件应该填满的装置的数量。需要注意的是我们要求widthpolicy(X)>dev(X)。
C描述了现存的布局。它描述了对于每个F[i],装置的集合,在该装置上,存储有F[i]所需的拷贝,如果有的话。该装置的集合可以被当作C[i]来发送。|C|==|F|。
R为算法的目标。它描述了算法是否应该:
R==Repair(修复):当获得F是尽量最小化块的移动。
R==Rebalance(重新均衡):在获得F时尽量实现|W|=widthpolicy(X)。
1.通过验证G适于被提交的X开始。如果|G|<dev(x),则算法无法完成,并返回一个错误给调用者,允许其重试一个不同的X。
我们希望建立一个优选装置的有序集合P,从中可以选择F。建立有序W的子集P如同:
P=G&W
因为G中的所有成员并没有在W中,因此初始建立一个备用阵列,并按照它们的自由空间的量进行排序
S=G&!W
P和S都是有序的。现在从S中增加P成员,直到|P|==wp:
while(|P|<widthpolicy(X)and|S|>0){
x=s.pop()//从前面取出
P.append(x)//加至末端
}
|P|现在表示由文件填满的装置的理想列表。其大小应该尽可能的接近widthpolicy(X),给定的G,但是,当然我们可以使得|G|<widthpolicy(X)。
2.根据保护组索引计算cycle_offset,以允许循环镜像和奇偶校验。从P中的cycle_offset开始,点数装置,并将其加入到最优集合O中:
cycle_offset=group_index%|P|
for(i=0;i<dev(x);i++)
O.append(P[(cycle_offset+i)%|P|])
定义N作为次最优装置:
N=P-O
注意:
-N,O和S是不相连的
-N|O==P
3.重复现存的当前deVids,尽量选择每个F[i],使得R能被实现。对于R==Repair,我们愿意最小化块移动。对于R==Rebalance,我们愿意使得F接近O。
对于R==Repair(修复),定义一个选择阵列的有序集合:
A={O,N,S}
对于R==Rebalance(重新均衡),简单定义A为:
A=O
在根据R适当选择了A之后,我们可以如下实现F:
for SET in A{
for(i=0;I<|F|;i++){
    x=C[i]&SET         //对现存的devids与所希望的进行交集
    if (|x|>0){
           y=x.first()//得到这些中的一个
           SET=SET-y //防止它被重新考虑
           F[i]=y    //把它放入F中
    }
  }
}
4.我们仍旧不得不在F中为每个F[i]选择devids,其中没有合适的选择来自从C[i],因此我们如下实现F:
for(i=0;i<|F|;i++){
if (F[i]unassigned){
       F=O.pop();
}}
E. 伪码的例子
下面提供了一个伪码的例子,用于示例性的实现重新条带化处理。但是应该认识到,该例子并不表示限制了本发明的范围,而仅仅是提供了一个实施方案的细节。
2003 ISILON SYSTEM,INC.(易斯龙系统公司)
该部分描述了文件系统的部件,而该系统确定块是如何在装置层(BAM中)分配的。在磁盘和块层的分配是由LBM分配代码处理的。下面描述的模块将主要由BAM的写入和重新条带化部件使用,以找出在写入和重新条带化处理期间新的块应该被分配到哪里。但是,API一般足够用于其它部件所需。
该函数位于bam_layout.c中,并且最初由新写入和重新条带化代码使用。可以对其它的模块例如DFM进行修改,以备将来需要的时候使用:
int bam_layout_protection_group
                           (const struct gmp_group_info  *gi,
                        long*free_cluster_counts,
                        enum layout_goal_t goal,
                        struct protection_level*protection,
                        int width_policy,
                        ifs_lbn_t start_lbn,
                        int num_clusters,
                        int curr_devid_depth,
                        ifs_devid_t**curr_devids,
                        u_int8_t*alloc_counts,
                        ifs_devid_t*result_devids,
                        ifs_baddr_t*result_pbas);
概述:
该函数根据特定的保护设置来为计算用于一个单一保护组的布局信息。该函数被一个完整的保护组调用(根据特定的保护设置)。布局推荐将会以用于组中每个簇的单一装置id的形式被返回一个输出参数(result_devids)。另一个输出参数(result_pbas)将包括用于每个将要在分配时使用前一块地址。
参数:
Gi:当前簇组信息。
free_cluster_counts:用于组中每个节点的空闲簇数量。这就允许布局引擎根据他们当前的空闲空间决定使用那个装置。该阵列在长度上应该正好‘dset_size(&gi->group)’。
Ip:信息节点。这主要用于访问宽度装置信息以及前一块地址信息。
Goal:指定该布局操作目标的标志。该标记给布局引擎一个清楚的目标,指出何时确定如何对块布局。当前有3个目标:
LAYOUT_REPAIR:这告诉布局引擎最高的优先级就是最小化块移动。该布局引擎将只会把新的devid分配给要求保持我们的保护限制的地方(应该在不同的装置上镜像等等)。只有当非常需要的时候才会移动现存的块。这就是在驱动或节点出现故障之后进行修复时可能被使用的目标。由于在这种情况下仍然会存在还没有被分配的簇,因此这就是可能才写路径(bam_new_write)时使用的目标。在所有的情况下,这至少与其它的两个目标一样快,甚至在很多情况下“更”快。
LAYOUT_REBALANCE:这告诉该布局引擎最优的装置应该被用于布局。可是,这些装置可能被打乱避免移动现存的块。通过这种方式,该系统在可能的时候避免移动块,但是当需要均衡校正数量的点中的文件时就会移动块。在很多情况下,这不会与LAYOUT_REPAIR一样快;但是,这会导致更优化和更好的均衡文件布局。当由于增加了新的节点而要改变保护设置或重新均衡时,很可能由重新条带化器采用该目标。
LAYOUT_RETUNE:这告诉该布局引擎优化布局是最高优先级。不会注意到现存块的位置,并且任何或全部现存的块都可以被完全移动到布局文件。如果我们一直从事于一个相当好的布局文件,则就不需要移动块,因为它们正好位于适当的装置上,但是没有试图完成这个。事实上,如果块正好没有位于最优装置上,调用者就会希望重新分配块,以磁盘上的标记。该目标在多数情况下是最慢的并且永远不会比LAYOUT_REPAIR和LAYOUT_REBALANCE快。调用者选择这个目标将会是类似于用于读出性能的整理和优化的“调谐”操作。根据“按需”原则或者在正常文件系统操作期间的背景下运行这些处理。
Protection(保护):希望的保护设置。这可能于信息节点中的保护设置不相同(例如,当奇偶校验不可能时如果调用者正在考虑以2x书写一个奇偶校验文件)。在确定往哪里放置块的时候,该布局代码就会使用该保护设置。也会就忽略信息节点本身中的保护设置
Width_policy:用于文件的希望宽度策略。这是整个文件上应该包括的节点的目标数。在很多情况下这是无法达到的,但是布局引擎可以努力实现该策略。
start_lbn:区域中的第一个lbn。由于该函数要求在其上运行的保护组,因此这将是一个保护组的开始。start_lbn提供一个容易的方式来计算变形,允许我们围绕簇旋转数据和奇偶校验信息。该lbn还可以被用于标识最后结构中的特定块。
num-cluster:将要被布局的保护组中所有簇的数量。例如,在3+1保护设置中,每个保护组包括4个簇,而3x保护组中包括3个簇。num-cluster应该与保护参数完全一致。如果不一致,EINVAL就会被返回。需要注意的是,num-cluster参数定义了下三个参数阵列的长度:curr_devids,alloc_counts,以及result_devids。
curr_devids:每个簇中第一个被分配的块的devid。这是一个长度恰好为‘num_clusters’的2维阵列。该第二维允许调用者为每个将要被布局的簇提供另一个现存的位置。请参看本文件中接下来的‘curr_devids’以对该参数进行更设彻底的讨论。需要注意的是,该阵列中的很多元素应该被置为0,表示当前没有块被分配在那个特定的簇中。该布局引擎将试图将新的块放置在现存的块已经被分配的位置,除非该布局限制这么做。需要注意的是,该奇偶校验簇应该被放置在这个以及其它的阵列参数中。
alloc_counts:对于每个簇,该调用者想要分配的块的数量。这允许布局引擎将全部分配完的组保留在原来的位置,而移动被部分分配并无法在该当前装置上完成的簇(因为该装置已经用光了它的自由空间)。只有当一个或多个装置接近容量时才会考虑该参数。该参数在长度上应该与‘num_clusters’完全一致。
result_devids:该输出参数由调用者分配,并且在长度上应该与‘num_clusters’完全一致。它包括用于保护组中每个簇大推荐devid。将来,该布局引擎也会推荐特定的驱动器。该调用者将会为每个簇检查推荐的devid。如果该devid不等于已经在该簇中被分配的块的devids,则就要移动这些现存的块,以符合布局限制。新块被分配在推荐的devid上。再一次,任何奇偶校验簇都被列在这个或其它阵列参数的最后,并按照升序的顺序列出镜像。
Result_pbas:这个输出参数由调用者分配,并且在长度上与‘num_clusters’相同。它包括用于每个簇的前一块地址(pba),它随着块分配请求一块被发出,用于优化连续的分配。如果没有前一数据和奇偶校验块已经被分配在该节点上,则这些pba中的一些可以为零。如果非连续写入已经防止我们很容易的在那个块上发现前一个被分配的块,则这些也可能是零。与其它的阵列参数一样,在奇偶校验簇位于阵列的最后,并按照升序的顺序列出镜像。
Curr_devids_Format:
上面提到的该curr_devids变量允许调用者与布局引擎通信关于保护组中当前被分配块的信息。该布局引擎将考虑该信息并试图尽可能的移动新块,同时仍旧满足被请求的“目标”。
与其它阵列参数一样,该curr_devid阵列在长度上与‘num_clusters’相同(恰好是一个保护组的大小)。在采用奇偶校验的情况下,该奇偶校验簇被列在保护组的最后,并且按照升序的顺序列出镜像。
使得该参数与其它阵列不一样的地方就在于这是一个2维阵列。对于新保护组中的每个簇,该阵列包括1列devids(就是‘num_clusters’的长度)。每个列中都包括现存数据块的镜像(因此,该阵列的行数几乎一直等于就布局中数据镜像的数量)。通过这种方式,该调用者可以告诉布局引擎,现存的簇具有关于装置A、B和C的镜像。该布局引擎就会知道了,如果为那个簇选择A、B或C,则该调用者就有可能不得不移动当前已经分配的块。
仅仅几个例子就可以使得这一点更清楚。假设系统将一个文件从3x重新条带化为3+1。该系统要求布局引擎布局一个3+1保护组(包括文件中的第一个3簇数据)。该系统通过分配具有3行、4列的阵列来重构curr_devid阵列。4列是因为新的保护组有4个簇,以及3行是因为每个现存的会有3个镜像。
curr_devids[4][3]:
       [1][2][3][0]
       [2][3][4][0]
       [3][4][5][0]
需要注意的是,第4列为空是因为目前没有奇偶校验块被分配,但是每个数据簇都具有3个现存的镜像。这告诉该布局引擎它所需要关于当前文件布局的任何事情。
另一个例子,假设该系统将一个文件从3+1保护重新条带化为3x保护。该系统将要生成一个其长度为3的curr_devids列表(因为我们新的3x保护组将有3个簇),并且深度为1个簇(因为旧的数据并没有被镜像)。
curr_devids[3][1]:
      [1][2][3]
这说明如果当前簇被镜像了,则只需要额外的行,并且系统想要告诉布局引擎现存的镜像位于哪里。就像前面的状态,第2个维数将几乎一直被设置成为文件的旧镜像数量。如果旧的文件是奇偶校验保护,这将为1。
当从一个镜像设置重新条带化至另一个时,该结构的有效功率展示了其本身。例如,假设该系统将一个文件从5x重新条带化为2x。该系统会生成一个长度为2(因为我们的新保护组将包括2个簇)、深度为5(因为每个现存数据簇都具有5个镜像)的curr_devids阵列。该布局引擎需要直到现存镜像的位置使得它能够选择最好的2个来保持:
curr_devids[2][5]:
       [1][1]
       [2][2]
       [3][3]
       [4][4]
       [5][5]
需要注意的是,在这种情况下,一些信息是冗余的,因为该系统仅仅讨论1个簇(其被镜像5次)。可是,这个结构对于布局引擎来说是很容易理解的。所有的引擎都注意的事实就是它可以为第一镜像选择第一列的任何成员,并且为第二镜像选择第二列的任何成员,并且最终的布局将会要求没有数据块移动。这种格式把它需要进行有效的布局决定的信息提供给布局引擎。
在大部分时间内,当写入正常文件时,该阵列将会非常简单。只有当重新条带化时才会需要额外的复杂性,或当装置不可用时,进行恢复的书写。例如,如果写入3+1文件中的第3个簇,则该curr_devids就简单为:
curr_devids[4][1]:
        [1][2][0][4]
类似地,如果写入写入3x文件的第3个簇,则阵列就可以简单为:
curr_devids[3][1]:
       [1][2][0]
在这些情况下,现存的保护设置正好与新设置一样,因此该系统能够传输一个平面阵列中的现存布局信息。
返回值
0:成功。该输出参数包括用于需要被分配或移动的块的装置ID,并且没有不需要移动的块。每个要求分配的簇将有一个相关的前一块地址(pba),用于时间分配调用。
EROFS:在不违反布局限制的情况下,没有足够的可用装置来布局该被请求的块。该调用者可以返回这个错误给它们的调用者,或者采用另一种希望的保护设置来调用bam_layout_protection_group()。
EINVAL:无效参数。例如,如果指定的‘num_clusters’不等于一个完整的保护组,则该错误就会被返回。在调试结构中,它可以由布局模块中的一个断言失败来完成,以帮助跟踪坏的调用者。该错误代码并不期望正常的操作,并且指示一个编码错误。
伪码:
该文档描述了BAM级布局模块的基本实现方式。
阶段1:根据组信息,宽度需求以及总装置自由块统计,形成了一列有足够的空间以供使用的可用装置。系统没有空间或者太多的装置无法在希望的保护层进行写入的情况将在这里说明,并且会把错误返回给调用者。
阶段2:从装置列表中把不同的devid分配给保护组中的每个簇。如果已经有块被分配在特定装置上,则该系统会试图分配devid,使得现存的块不需要被移动。这可能或不可能取决于现存的块布局以及当前可用的装置。需要注意的是,该目标参数将会扮演一个重要角色。如果该目标为LAYOUT_REPAIR,则每一个企图都会避免移动块。如果该目标为LAYOUT_REBALANCE,则系统就会避免移动块,但是如果需要均衡文件时就不会这样做。最后如果该目标为LAYOUT_RETUNE,则会计算最优布局,而不考虑现存块在哪里。
阶段3:已经为每个簇分配了一个devid,则该系统为了分配的目的而为每个簇分配一个pba。这通过查看结构信息节点中的pba列表来完成,其中该结构信息节点会给出分配在每个装置上的最后的块的块地址。该系统为每个簇获取正确的一个并完成。细微的区别之处就在于该系统系统希望数据块使用数据pba以及奇偶校验块使用奇偶校验pba。他们都被单独存储在结构信息节点中,所以可以得出正确的列表。
问题
1)没有磁盘空间:该算法的一个显著问题就是当一些或全部节点都接近容量的时候该怎么办。如果可能,系统将避免把装置推荐给将会在分配中导致ENOSPC错误的调用者。如果没有阵列的状态会发生改变,则这些错误将不会引发一个系统调用重新开始,并且会通过所有的方式被反馈给用户。当我们实际上正在把devids分配给结果列表时,这个问题最好在阶段2中解决。那时,我们能够检查那个装置上可用的磁盘空间(记着我们无法访问的保留空间量)。下面就是该信息是如何影响各个情况的:
LAYOUT_RETUNE:在行为上没有改变。该情况之处无论何种情况下的最优布局。如果该系统给出很少最优布局,则机会就是不会比已经可用的要好。
LAYOUT_REPAIR/LAYOUT_REBALANCE:如果该系统被分配了一个与被检查的current_devid相匹配的devid,则该系统就不需要担心自由空间。该系统已经分配了被分配在哪里的块,因此该系统或者不需要移动它们中的任何一个,或者只需要分配一个新的。在这种情况下,系统希望移动尽可能少的块,因此留下了这些与他们一样的devids。
当系统想要把一个devid分配给一个空槽(表示没有用于那个簇的当前devid)时,查看用于那个装置的自由空间。如果它几乎满了,则试图找出有更多自由空间的另一个优选装置,并用它替换。如果所有的优选装置都几乎满了,则从优选和备用装置列表中分配出具有最大量自由空间的装置。
需要注意的是,并没有从布局引擎API返回ENOSPC。因为从远程装置检索这些数量会花费一些时间,因此自由空间有一点过时了。当空间紧密时,系统就会根据现存的量来推荐最有希望的装置。在最坏的情况下,在试图进行分配时,调用者会得到了一个ENOSPC。
算法伪码:
int
bam_layout_protection_group(gi,free_clusters,ip,goal,protection,
width_policy,start_lbn,num_clusters,curr_devid_depth,curr_devids,
alloc_counts,*result_devids,*result_pbas){
/*从dinode中得到当前宽度装置列表*/
/*从列表中移除n个停机装置*/
/*计算max_width(MAX_WIDTH-n).*/
/*将所有剩余的UP装置加入到列表中*/
while(width device list size<UP device list size){
       /*增加具有最自由簇的UP装置*/
}
/*
*在长度上截断列表至max_width。这防止我们溢出dinode宽度装置限制。
*/
/*计算preferred_width以及min_width,使用width_policy以及所希望的保护参数
     */
     /*验证我们具有足够的可用装置。*/
if(not)
    返回EROFS;
/*
*在这一点上,我们具有我们可能会使用的所有在线装置的列表。在列表的开始就是目前该文件正在使用的装置,接下来的就是按照可用自由空间排序的剩余装置
*/
/*
*将该表被分成两部分。该第一子列表从我们的组列表开始,并在长度上恰好为preferred_width,第二子列表包括该主列表的剩余部分。我们称第一列表为“preferred_devices”(优选装置),第二列表为“spare_device”(备用装置)。第二列表可以为空。
*/
/*现在开始布局保护组。*/
/*明智检查num_clusters(簇数)以及alloc_counts(分配数)。*/
If(insane)
   /*我们需要多个保护组的全部,
     并且alloc_counts应该在0和16之间。
  */
  返回EINVAL;
/*计算start_lbn(保护组中的第一个lbn)*/
/*使用start_lbn计算group_number。*/
/*清空停机的current_devids的元素。*/
/*清空current_devids中的复制装置。*/
/*
*在preferre_device(可能只是(group_number%列表大小))中计算start_offset。这将会注意变体。
*/
/*
*从preferred_list中的start_offset开始,单步调试用于每个我们正在分配的簇的列表,并将每个devid复制到新的列表中(如果需要的话,环绕优选列表的开始)。该新的子列表将由optimal_device列表调用。
*/
/*根据调用者指定的目标分配devids*/
switch(goal){
    case LAYOUT_REPAIR:
         /*避免块移动。*/
         error=bam_layout_repair();
              break;
    case  LAYOUT_REBALANCE:
          /*确保均衡布局。*/
          error=bam_layout_rebalance();
          break;
    case  LAYOUT_RETUNE:
          /*优化布局。*/
          error=bam_layout_retune();
          break;
    default:
           ASSERT(0);
};
/*几乎完成!每个簇现在应该被分配一个devids。
*/
/*现在,我们必须选择前前的块地址...*/
for(each cluster in the protection group){
/*将pba初始化为zero_baddr。*/
/*确定这是否就是一个奇偶校验或数据簇。*/
/*从结构信息节点中获取适当的pba*/
/*查找可用的pba.*/
for(each item in the pba list){
       /*
       *如果devid与用于该簇的推荐的devid匹配,则使用该pba,
        并终止
      */
}
   }
   /*现在我们真正完成了*/
}
int
bam_layout_repair()
{
        /*分配现存的devid到任何可能的地方。*/
        /*用来自最优列表中的devids填满空槽。*/
}
int
bam_layout_rebalance()
{
/*不存在没有出现在最优列表中的devids。*/
/*如果需要最小化现存块的移动,重新配置最优列表并分配输出
*/}
int
bam_layout_retune(){
/*分配最优列表到输出,没有问题被问起*/
                        IX. 版权信息
该专利文档公开内容的一部分包括服从版权保护的材料。该版权所有者不反对通过专利文档或专利公开中的一个来传真复制品,因为它出现在专利商标局专利文件或记录中,但是另外保留所有的版权。
                           X. 结论
虽然对本发明的某些实施方案进行了描述,但是这些实施方案仅仅通过例子的方式进行了表示,并且并不会限制本发明的范围。因此,应该根据下面的权利要求及其等同物来定义本发明的范围和宽度。

Claims (35)

1.一种同多个智能存储装置进行通信的分布式文件系统,其中所述分布式文件系统包括一个消息传递系统并被设置为存储和管理与存储在所述分布式文件系统上的文件和目录相关的元数据,使得所述元数据包括元数据数据块的位置、内容数据块、以及奇偶校验数据块,并且所述分布式文件系统还被设置为对数据文件重新条带化。
2.根据权利要求1所述的分布式文件系统,进一步被设置为在对数据文件进行重新条带化期间使数据的移动最小化。
3.根据权利要求1所述的分布式文件系统,进一步被设置为对数据文件重新条带化,以改变保护方案。
4.根据权利要求1所述的分布式文件系统,进一步被设置为对数据文件重新条带化,以增加额外的存储装置。
5.根据权利要求1所述的分布式文件系统,进一步被设置为对数据文件重新条带化,以响应出现故障的存储装置。
6.根据权利要求1所述的分布式文件系统,进一步被设置为对数据文件重新条带化,以移除现存的存储装置。
7.一种用于对数据进行重新条带化的方法,所述数据保存在智能分布式文件系统内的多个智能存储装置之中,所述方法包括:
识别至少一个其上能够存储来自现存文件的数据簇的智能存储装置;
将所述簇存储在被识别出的智能存储装置上;
确定所述簇被成功地存储;以及
更新与所述数据簇相关的元数据,以反映出新的分配。
8.根据权利要求7所述的方法,还包括根据新的保护方案来分配智能存储装置。
9.根据权利要求8所述的方法,还包括更新元数据,以反映出新的保护方案。
10.根据权利要求7所述的方法,还包括响应于智能存储装置的故障来分配智能存储装置。
11.根据权利要求7所述的方法,其中分配智能存储装置包括使数据移动最小化。
12.根据权利要求7所述的方法,其中分配智能存储装置包括实施保护方案限制。
13.根据权利要求7的方法,其中分配智能存储装置包括试图结合被指定的优先选择。
14.一种用于对数据重新条带化的系统,所述系统包括:
多个智能装置,所述智能装置被设置为将数据块存储在分布于智能装置中的数据条中;
分配模块,其被设置为将数据块分配给智能装置;
请求模块,其被设置为发送指令给智能装置,以在分配完数据块之后对这些数据块进行存储;以及
更新模块,其被设置为在存储完数据块之后更新与数据块相关的元数据。
15.根据权利要求14所述的系统,其中所述更新模块被进一步设置为确定所述数据块是否被成功地存储。
16.根据权利要求14所述的系统,其中所述请求模块被进一步设置为确定所述数据块是否被成功地存储。
17.根据权利要求14所述的系统,其中所述分配模块被进一步设置为使数据在多个智能装置中的移动最小化。
18.根据权利要求14所述的系统,其中所述分配模块被进一步设置为遵守保护方案限制。
19.根据权利要求14所述的系统,其中所述分配模块被进一步设置为试图遵守被指定的优先选择。
20.一种对由数据块构成的数据进行重新条带化的方法,包括:
将数据块分配给存储单元;
确定所述数据块是否被存储在所述存储单元中;
如果所述数据块尚未驻留在所述存储单元中,则将所述数据块存储在所述存储单元中;以及
如果该数据块已经被存储,则更新与所述数据块相关的元数据。
21.根据权利要求20所述的方法,其中分配数据块包括使数据在存储单元中的移动最小化。
22.根据权利要求20所述的方法,其中分配数据块包括符合保护方案限制。
23.根据权利要求20所述的方法,其中分配数据块包括试图符合被指定的优先选择。
24.一种将数据块分配给存储单元的方法,包括:
识别可用的存储单元;
为每个数据块选择一个可用的存储单元;以及
为每个被选中的存储单元确定相关的地址单元。
25.根据权利要求24所述的方法,还包括确定是否存在足够的可用存储单元。
26.根据权利要求24所述的方法,其中选择可用的存储单元包括使数据在存储单元中的移动最小化。
27.根据权利要求24所述的方法,其中选择可用的存储单元包括对保护方案限制的符合。
28.根据权利要求24的所述方法,其中选择可用的存储单元包括尝试对被指定的优先选择的符合。
29.一种从一组存储单元中选择一存储单元以用于将数据块存储在保护组中的方法,包括:
从一组存储单元中识别出哪个存储单元是与保护组相关的最优存储单元;以及
选择该最优存储单元。
30.根据权利要求29所述的方法,其中根据优选的文件布局来确定哪个来自所述存储单元组的存储单元是最优存储单元。
31.一种为数据块选择存储单元的方法,包括:
识别出其中当前存储有数据块的存储单元;
识别出第一存储单元中的一个最优位置;
确定一组最优存储单元;
如果所述第一存储单元是其中当前存储有数据块的存储单元中的一个,则选择所述第一存储单元;以及
如果所述第一存储单元不是其中当前存储有数据块的存储单元中的一个,则从所述最优存储单元组中选择一个存储单元。
32.根据权利要求31所述的方法,其中选择最优存储单元组中的一个进一步包括选择最优存储单元组中的这样一个存储单元,它也是其中当前存储有数据块的存储单元中的一个。
33.一种具有存储装置的系统,其包括有指令,当所述指令被执行时,致使所述系统执行以下方法:
识别其上将要存储来自现存文件的数据簇的存储装置;
将所述簇存储在所述存储装置中;
确定所述簇被成功地存储;以及
更新与所述数据簇相关的元数据。
34.一种被设置为对数据文件重新条带化的分布式文件系统,所述系统包括:
用于对其上将存储来自现存文件的数据簇的装置进行识别的装置;
用于在被识别出的装置上存储所述簇的装置;
用于确定所述簇被成功地存储的装置;以及
用于更新与所述数据簇相关的元数据的装置。
35.一种被设置为对一组由数据块构成的数据重新条带化的分布式文件系统,所述系统包括:
用于将所述数据块分配给存储单元的装置;
用于确定所述数据块是否已经驻留在所述被分配的存储单元中的装置;
用于如果所述数据块尚未驻留在所述分配的存储单元中则将所述数据块存储在所述分配的存储单元中的装置;以及
用于如果所述数据块已经被存储在所述分配的存储单元中则更新与所述数据块相关的元数据的装置。
CN200380100380.6A 2002-11-14 2003-11-14 用于对现存文件重新条带化的方法 Expired - Lifetime CN1692356B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US42646402P 2002-11-14 2002-11-14
US60/426,464 2002-11-14
PCT/US2003/036699 WO2004046971A1 (en) 2002-11-14 2003-11-14 Systems and methods for restriping files in a distributed file system

Publications (2)

Publication Number Publication Date
CN1692356A true CN1692356A (zh) 2005-11-02
CN1692356B CN1692356B (zh) 2014-06-04

Family

ID=32326359

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200380100380.6A Expired - Lifetime CN1692356B (zh) 2002-11-14 2003-11-14 用于对现存文件重新条带化的方法

Country Status (6)

Country Link
US (1) US7937421B2 (zh)
EP (3) EP1563411B1 (zh)
JP (2) JP4464279B2 (zh)
CN (1) CN1692356B (zh)
AU (1) AU2003291014A1 (zh)
WO (1) WO2004046971A1 (zh)

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102385623A (zh) * 2011-10-25 2012-03-21 曙光信息产业(北京)有限公司 一种分布式文件系统中目录的存取方法
CN102541985A (zh) * 2011-10-25 2012-07-04 曙光信息产业(北京)有限公司 一种分布式文件系统中客户端目录缓存的组织方法
CN101320445B (zh) * 2006-11-28 2013-03-27 国际商业机器公司 合并分布式电子邮件的方法和系统
CN103106213A (zh) * 2011-11-14 2013-05-15 中国科学院声学研究所 一种基于文件和数据块两级粒度的副本替换方法及系统
CN103116471A (zh) * 2011-08-30 2013-05-22 夏普株式会社 图像处理装置
CN103617293A (zh) * 2013-12-16 2014-03-05 北京航空航天大学 一种面向海量小文件存储系统的Key-Value存储方法
US8782368B2 (en) 2007-10-25 2014-07-15 Hewlett-Packard Development Company, L.P. Storing chunks in containers
US8904128B2 (en) 2011-06-08 2014-12-02 Hewlett-Packard Development Company, L.P. Processing a request to restore deduplicated data
US8959089B2 (en) 2008-04-25 2015-02-17 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
CN105162847A (zh) * 2015-08-10 2015-12-16 电子科技大学 分布式流数据存储系统的存储资源规划方法
CN106446095A (zh) * 2009-06-25 2017-02-22 Emc公司 用于提供数据的长期存储的系统和方法
US9665434B2 (en) 2007-10-25 2017-05-30 Hewlett Packard Enterprise Development Lp Communicating chunks between devices
CN107391027A (zh) * 2016-05-03 2017-11-24 三星电子株式会社 廉价磁盘冗余阵列存储设备及其管理方法
CN109426587A (zh) * 2017-08-25 2019-03-05 杭州海康威视数字技术股份有限公司 一种数据恢复方法及装置
CN110058960A (zh) * 2018-01-18 2019-07-26 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品
CN110383251A (zh) * 2017-03-28 2019-10-25 株式会社日立制作所 存储系统、计算机可读记录介质、系统的控制方法
CN110915161A (zh) * 2017-07-12 2020-03-24 惠普发展公司,有限责任合伙企业 存储器设备的迁移
WO2020125362A1 (zh) * 2018-12-18 2020-06-25 深圳先进技术研究院 文件系统及数据布局方法
CN114428764A (zh) * 2022-01-26 2022-05-03 重庆紫光华山智安科技有限公司 文件写入方法、系统、电子设备及可读存储介质
CN116069753A (zh) * 2023-03-06 2023-05-05 浪潮电子信息产业股份有限公司 存算分离方法、系统、设备及介质
CN114428764B (zh) * 2022-01-26 2024-04-02 重庆紫光华山智安科技有限公司 文件写入方法、系统、电子设备及可读存储介质

Families Citing this family (303)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8239354B2 (en) 2005-03-03 2012-08-07 F5 Networks, Inc. System and method for managing small-size files in an aggregated file system
US7509322B2 (en) 2001-01-11 2009-03-24 F5 Networks, Inc. Aggregated lock management for locking aggregated files in a switched file system
US8195760B2 (en) 2001-01-11 2012-06-05 F5 Networks, Inc. File aggregation in a switched file system
US20040133606A1 (en) * 2003-01-02 2004-07-08 Z-Force Communications, Inc. Directory aggregation for files distributed over a plurality of servers in a switched file system
TW561358B (en) 2001-01-11 2003-11-11 Force Corp Z File switch and switched file system
US7512673B2 (en) * 2001-01-11 2009-03-31 Attune Systems, Inc. Rule based aggregation of files and transactions in a switched file system
US7146524B2 (en) 2001-08-03 2006-12-05 Isilon Systems, Inc. Systems and methods for providing a distributed file system incorporating a virtual hot spare
US7685126B2 (en) * 2001-08-03 2010-03-23 Isilon Systems, Inc. System and methods for providing a distributed file system utilizing metadata to track information about data stored throughout the system
EP1563411B1 (en) 2002-11-14 2013-06-19 EMC Corporation Systems and methods for restriping files in a distributed file system
US7159150B2 (en) * 2002-12-31 2007-01-02 International Business Machines Corporation Distributed storage system capable of restoring data in case of a storage failure
US20040210724A1 (en) * 2003-01-21 2004-10-21 Equallogic Inc. Block data migration
US8037264B2 (en) 2003-01-21 2011-10-11 Dell Products, L.P. Distributed snapshot process
US8499086B2 (en) * 2003-01-21 2013-07-30 Dell Products L.P. Client load distribution
US8015266B1 (en) * 2003-02-07 2011-09-06 Netapp, Inc. System and method for providing persistent node names
US7185029B1 (en) * 2003-06-27 2007-02-27 Unisys Corporation Method and apparatus for maintaining, and updating in-memory copies of the first and second pointers to reference the new versions of the first and second control structures that indicate available and allocated portions of usable space in the data file
US7647327B2 (en) * 2003-09-24 2010-01-12 Hewlett-Packard Development Company, L.P. Method and system for implementing storage strategies of a file autonomously of a user
US7647451B1 (en) 2003-11-24 2010-01-12 Netapp, Inc. Data placement technique for striping data containers across volumes of a storage system cluster
US7237062B2 (en) * 2004-04-02 2007-06-26 Seagate Technology Llc Storage media data structure system and method
JP4480479B2 (ja) * 2004-06-15 2010-06-16 株式会社日立製作所 ストレージシステム
US7809690B2 (en) * 2004-07-13 2010-10-05 Oracle International Corporation Performance metric-based selection of one or more database server instances to perform database recovery
US8335807B1 (en) * 2004-08-30 2012-12-18 Sprint Communications Company, L.P. File distribution system and method
US7533230B2 (en) 2004-10-13 2009-05-12 Hewlett-Packard Developmetn Company, L.P. Transparent migration of files among various types of storage volumes based on file access properties
US7330955B2 (en) * 2004-10-18 2008-02-12 Seagate Technology Llc Recovery record for updating a system configuration
US7594075B2 (en) * 2004-10-20 2009-09-22 Seagate Technology Llc Metadata for a grid based data storage system
US8131926B2 (en) 2004-10-20 2012-03-06 Seagate Technology, Llc Generic storage container for allocating multiple data formats
US8051425B2 (en) 2004-10-29 2011-11-01 Emc Corporation Distributed system with asynchronous execution systems and methods
US8238350B2 (en) 2004-10-29 2012-08-07 Emc Corporation Message batching with checkpoints systems and methods
US8055711B2 (en) 2004-10-29 2011-11-08 Emc Corporation Non-blocking commit protocol systems and methods
US7610307B2 (en) * 2004-11-30 2009-10-27 Microsoft Corporation Method and system of detecting file system namespace changes and restoring consistency
US7496565B2 (en) * 2004-11-30 2009-02-24 Microsoft Corporation Method and system for maintaining namespace consistency with a file system
US7885970B2 (en) 2005-01-20 2011-02-08 F5 Networks, Inc. Scalable system for partitioning and accessing metadata over multiple servers
US20060167838A1 (en) * 2005-01-21 2006-07-27 Z-Force Communications, Inc. File-based hybrid file storage scheme supporting multiple file switches
US7958347B1 (en) 2005-02-04 2011-06-07 F5 Networks, Inc. Methods and apparatus for implementing authentication
US7904649B2 (en) * 2005-04-29 2011-03-08 Netapp, Inc. System and method for restriping data across a plurality of volumes
US7801859B1 (en) * 2005-05-25 2010-09-21 Emc Corporation Tracking filesystem backups
US7437507B2 (en) * 2005-06-06 2008-10-14 Cisco Technology, Inc. Online restriping technique for distributed network based virtualization
US7546427B2 (en) * 2005-09-30 2009-06-09 Cleversafe, Inc. System for rebuilding dispersed data
US9027080B2 (en) * 2008-03-31 2015-05-05 Cleversafe, Inc. Proxy access to a dispersed storage network
US7386675B2 (en) * 2005-10-21 2008-06-10 Isilon Systems, Inc. Systems and methods for using excitement values to predict future access to resources
US7797283B2 (en) 2005-10-21 2010-09-14 Isilon Systems, Inc. Systems and methods for maintaining distributed data
US7551572B2 (en) 2005-10-21 2009-06-23 Isilon Systems, Inc. Systems and methods for providing variable protection
US7346720B2 (en) * 2005-10-21 2008-03-18 Isilon Systems, Inc. Systems and methods for managing concurrent access requests to a shared resource
US7788303B2 (en) 2005-10-21 2010-08-31 Isilon Systems, Inc. Systems and methods for distributed system scanning
US7917474B2 (en) 2005-10-21 2011-03-29 Isilon Systems, Inc. Systems and methods for accessing and updating distributed data
US7873799B2 (en) * 2005-11-04 2011-01-18 Oracle America, Inc. Method and system supporting per-file and per-block replication
US7921131B2 (en) * 2005-12-19 2011-04-05 Yahoo! Inc. Method using a hierarchy of servers for query processing of column chunks in a distributed column chunk data store
US7921087B2 (en) * 2005-12-19 2011-04-05 Yahoo! Inc. Method for query processing of column chunks in a distributed column chunk data store
US7921132B2 (en) * 2005-12-19 2011-04-05 Yahoo! Inc. System for query processing of column chunks in a distributed column chunk data store
US20200257596A1 (en) * 2005-12-19 2020-08-13 Commvault Systems, Inc. Systems and methods of unified reconstruction in storage systems
US8214388B2 (en) * 2005-12-19 2012-07-03 Yahoo! Inc System and method for adding a storage server in a distributed column chunk data store
US7860865B2 (en) * 2005-12-19 2010-12-28 Yahoo! Inc. System of a hierarchy of servers for query processing of column chunks in a distributed column chunk data store
US7848261B2 (en) 2006-02-17 2010-12-07 Isilon Systems, Inc. Systems and methods for providing a quiescing protocol
US20070226224A1 (en) * 2006-03-08 2007-09-27 Omneon Video Networks Data storage system
US7809778B2 (en) * 2006-03-08 2010-10-05 Omneon Video Networks Idempotent journal mechanism for file system
US20070214183A1 (en) * 2006-03-08 2007-09-13 Omneon Video Networks Methods for dynamic partitioning of a redundant data fabric
US20070214105A1 (en) * 2006-03-08 2007-09-13 Omneon Video Networks Network topology for a scalable data storage system
US7721157B2 (en) * 2006-03-08 2010-05-18 Omneon Video Networks Multi-node computer system component proactive monitoring and proactive repair
US8478873B2 (en) * 2006-03-08 2013-07-02 Harmonic Inc. Techniques for use of a system-unique identifier in an architecture having a file system utilizing distributed metadata servers
US7756898B2 (en) 2006-03-31 2010-07-13 Isilon Systems, Inc. Systems and methods for notifying listeners of events
US8417746B1 (en) 2006-04-03 2013-04-09 F5 Networks, Inc. File system management with enhanced searchability
US8150840B2 (en) * 2006-04-19 2012-04-03 Hewlett-Packard Development Company, L.P. Dynamic RSS services
EP2016514A4 (en) * 2006-04-21 2010-03-17 Topia Technology COMMON ELECTRONIC FILE ACCESS
US7603387B2 (en) * 2006-06-16 2009-10-13 Microsoft Corporation Techniques to manage media files
US7783686B2 (en) * 2006-06-16 2010-08-24 Microsoft Corporation Application program interface to manage media files
US9037828B2 (en) 2006-07-13 2015-05-19 International Business Machines Corporation Transferring storage resources between snapshot storage pools and volume storage pools in a data storage system
US8069191B2 (en) * 2006-07-13 2011-11-29 International Business Machines Corporation Method, an apparatus and a system for managing a snapshot storage pool
US8539056B2 (en) 2006-08-02 2013-09-17 Emc Corporation Systems and methods for configuring multiple network interfaces
US7899800B2 (en) 2006-08-18 2011-03-01 Isilon Systems, Inc. Systems and methods for providing nonlinear journaling
US7882071B2 (en) 2006-08-18 2011-02-01 Isilon Systems, Inc. Systems and methods for a snapshot of data
US7676691B2 (en) 2006-08-18 2010-03-09 Isilon Systems, Inc. Systems and methods for providing nonlinear journaling
US7680842B2 (en) 2006-08-18 2010-03-16 Isilon Systems, Inc. Systems and methods for a snapshot of data
US7680836B2 (en) 2006-08-18 2010-03-16 Isilon Systems, Inc. Systems and methods for a snapshot of data
US7953704B2 (en) 2006-08-18 2011-05-31 Emc Corporation Systems and methods for a snapshot of data
US7590652B2 (en) 2006-08-18 2009-09-15 Isilon Systems, Inc. Systems and methods of reverse lookup
US7752402B2 (en) 2006-08-18 2010-07-06 Isilon Systems, Inc. Systems and methods for allowing incremental journaling
US7822932B2 (en) 2006-08-18 2010-10-26 Isilon Systems, Inc. Systems and methods for providing nonlinear journaling
US7747584B1 (en) * 2006-08-22 2010-06-29 Netapp, Inc. System and method for enabling de-duplication in a storage system architecture
US8286029B2 (en) * 2006-12-21 2012-10-09 Emc Corporation Systems and methods for managing unavailable storage devices
US7593938B2 (en) 2006-12-22 2009-09-22 Isilon Systems, Inc. Systems and methods of directory entry encodings
US7509448B2 (en) 2007-01-05 2009-03-24 Isilon Systems, Inc. Systems and methods for managing semantic locks
KR100816763B1 (ko) * 2007-02-13 2008-03-25 삼성전자주식회사 플래시 메모리 모듈을 주기억장치로 사용하는 전자 시스템및 그것의 부팅 방법
US20080250190A1 (en) * 2007-04-03 2008-10-09 Brian Johnson Portable memory device operating system and method of using same
US7779048B2 (en) 2007-04-13 2010-08-17 Isilon Systems, Inc. Systems and methods of providing possible value ranges
US8966080B2 (en) 2007-04-13 2015-02-24 Emc Corporation Systems and methods of managing resource utilization on a threaded computer system
US7900015B2 (en) 2007-04-13 2011-03-01 Isilon Systems, Inc. Systems and methods of quota accounting
US8682916B2 (en) 2007-05-25 2014-03-25 F5 Networks, Inc. Remote file virtualization in a switched file system
CN100547566C (zh) * 2007-06-28 2009-10-07 忆正存储技术(深圳)有限公司 基于多通道闪存设备逻辑条带的控制方法
US9760839B1 (en) * 2007-07-25 2017-09-12 United Services Automobile Association (Usaa) Electronic recording statement management
US7882068B2 (en) 2007-08-21 2011-02-01 Isilon Systems, Inc. Systems and methods for adaptive copy on write
US7949692B2 (en) 2007-08-21 2011-05-24 Emc Corporation Systems and methods for portals into snapshot data
US7966289B2 (en) 2007-08-21 2011-06-21 Emc Corporation Systems and methods for reading objects in a file system
DK2195724T3 (da) 2007-08-28 2020-01-20 Commvault Systems Inc Energistyring af databehandlingsressourcer, såsom adaptiv energistyring af datalagringsoperationer
CN101855619B (zh) 2007-10-25 2017-04-26 慧与发展有限责任合伙企业 数据处理设备和数据处理方法
GB2466579B (en) 2007-10-25 2012-12-26 Hewlett Packard Development Co Data processing apparatus and method of deduplicating data
US8180747B2 (en) * 2007-11-12 2012-05-15 F5 Networks, Inc. Load sharing cluster file systems
US8548953B2 (en) 2007-11-12 2013-10-01 F5 Networks, Inc. File deduplication using storage tiers
US8117244B2 (en) * 2007-11-12 2012-02-14 F5 Networks, Inc. Non-disruptive file migration
US8352785B1 (en) 2007-12-13 2013-01-08 F5 Networks, Inc. Methods for generating a unified virtual snapshot and systems thereof
US7870345B2 (en) 2008-03-27 2011-01-11 Isilon Systems, Inc. Systems and methods for managing stalled storage devices
US7949636B2 (en) 2008-03-27 2011-05-24 Emc Corporation Systems and methods for a read only mode for a portion of a storage system
US7953709B2 (en) 2008-03-27 2011-05-31 Emc Corporation Systems and methods for a read only mode for a portion of a storage system
US7984324B2 (en) 2008-03-27 2011-07-19 Emc Corporation Systems and methods for managing stalled storage devices
US8055613B1 (en) * 2008-04-29 2011-11-08 Netapp, Inc. Method and apparatus for efficiently detecting and logging file system changes
US20090307329A1 (en) * 2008-06-06 2009-12-10 Chris Olston Adaptive file placement in a distributed file system
EP2645251A1 (en) * 2008-06-06 2013-10-02 Pivot3 Method and system for distributed RAID implementation
US8219750B2 (en) * 2008-06-30 2012-07-10 Pivot3 Method and system for execution of applications in conjunction with distributed RAID
US8549582B1 (en) 2008-07-11 2013-10-01 F5 Networks, Inc. Methods for handling a multi-protocol content name and systems thereof
US8307177B2 (en) 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data
US20100106551A1 (en) * 2008-10-24 2010-04-29 Oskari Koskimies Method, system, and apparatus for process management
US8176247B2 (en) 2008-10-28 2012-05-08 Pivot3 Method and system for protecting against multiple failures in a RAID system
TW201035760A (en) * 2009-03-18 2010-10-01 Inventec Corp Method for backing up data of a server machine
CN101527736A (zh) * 2009-04-09 2009-09-09 中兴通讯股份有限公司 分布式文件系统中业务内容处理、更新方法与装置
US8176284B2 (en) * 2009-08-11 2012-05-08 Texas Memory Systems, Inc. FLASH-based memory system with variable length page stripes including data protection information
US8706867B2 (en) * 2011-03-31 2014-04-22 Commvault Systems, Inc. Realtime streaming of multimedia content from secondary storage devices
US8918534B2 (en) * 2009-09-29 2014-12-23 Cleversafe, Inc. Writing data slices to ready and non-ready distributed storage units in a distributed storage network
US10721269B1 (en) 2009-11-06 2020-07-21 F5 Networks, Inc. Methods and system for returning requests with javascript for clients before passing a request to a server
US8161128B2 (en) * 2009-12-16 2012-04-17 International Business Machines Corporation Sharing of data across disjoint clusters
US9195500B1 (en) 2010-02-09 2015-11-24 F5 Networks, Inc. Methods for seamless storage importing and devices thereof
US8204860B1 (en) 2010-02-09 2012-06-19 F5 Networks, Inc. Methods and systems for snapshot reconstitution
WO2011104743A1 (en) * 2010-02-23 2011-09-01 Hitachi, Ltd. Management system and management method for storage system
US9396104B1 (en) * 2010-03-22 2016-07-19 Seagate Technology, Llc Accessing compressed data of varying-sized quanta in non-volatile memory
US8447833B2 (en) 2010-04-19 2013-05-21 Microsoft Corporation Reading and writing during cluster growth phase
US9170892B2 (en) 2010-04-19 2015-10-27 Microsoft Technology Licensing, Llc Server failure recovery
US9454441B2 (en) * 2010-04-19 2016-09-27 Microsoft Technology Licensing, Llc Data layout for recovery and durability
US8438244B2 (en) 2010-04-19 2013-05-07 Microsoft Corporation Bandwidth-proportioned datacenters
US8996611B2 (en) 2011-01-31 2015-03-31 Microsoft Technology Licensing, Llc Parallel serialization of request processing
US8533299B2 (en) 2010-04-19 2013-09-10 Microsoft Corporation Locator table and client library for datacenters
US9813529B2 (en) 2011-04-28 2017-11-07 Microsoft Technology Licensing, Llc Effective circuits in packet-switched networks
US11449394B2 (en) 2010-06-04 2022-09-20 Commvault Systems, Inc. Failover systems and methods for performing backup operations, including heterogeneous indexing and load balancing of backup and indexing resources
US10423577B2 (en) * 2010-06-29 2019-09-24 International Business Machines Corporation Collections for storage artifacts of a tree structured repository established via artifact metadata
US8347100B1 (en) 2010-07-14 2013-01-01 F5 Networks, Inc. Methods for DNSSEC proxying and deployment amelioration and systems thereof
US8751789B2 (en) * 2010-09-17 2014-06-10 International Business Machines Corporation General purpose distributed encrypted file system
KR101374655B1 (ko) 2010-09-29 2014-03-24 네이버비즈니스플랫폼 주식회사 파일 볼륨을 청크 단위로 분산 처리하는 시스템 및 방법
WO2012045021A2 (en) 2010-09-30 2012-04-05 Commvault Systems, Inc. Efficient data management improvements, such as docking limited-feature data management modules to a full-featured data management system
US9286298B1 (en) 2010-10-14 2016-03-15 F5 Networks, Inc. Methods for enhancing management of backup data sets and devices thereof
US8495108B2 (en) 2010-11-30 2013-07-23 International Business Machines Corporation Virtual node subpool management
JP5697195B2 (ja) 2010-12-24 2015-04-08 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation アクセス予測に基づいてテーブルのミラーリングを制御する管理システム、プログラムおよび方法
WO2012089701A1 (en) * 2010-12-27 2012-07-05 Amplidata Nv A distributed object storage system comprising performance optimizations
US8639971B1 (en) * 2011-02-17 2014-01-28 Scale Computing Condition detection and reporting in complex systems
US8527699B2 (en) 2011-04-25 2013-09-03 Pivot3, Inc. Method and system for distributed RAID implementation
US8843502B2 (en) 2011-06-24 2014-09-23 Microsoft Corporation Sorting a dataset of incrementally received data
US8396836B1 (en) 2011-06-30 2013-03-12 F5 Networks, Inc. System for mitigating file virtualization storage import latency
US20130007091A1 (en) * 2011-07-01 2013-01-03 Yahoo! Inc. Methods and apparatuses for storing shared data files in distributed file systems
US9553817B1 (en) 2011-07-14 2017-01-24 Sprint Communications Company L.P. Diverse transmission of packet content
US9104651B1 (en) 2011-07-15 2015-08-11 Scale Computing, Inc. Techniques for distributing tests and test suites across a network
US8949305B1 (en) 2011-07-15 2015-02-03 Scale Computing, Inc. Distributed dynamic system configuration
CN103019614B (zh) 2011-09-23 2015-11-25 阿里巴巴集团控股有限公司 分布式存储系统管理装置及方法
US9116633B2 (en) 2011-09-30 2015-08-25 Commvault Systems, Inc. Information management of virtual machines having mapped storage devices
US9461881B2 (en) 2011-09-30 2016-10-04 Commvault Systems, Inc. Migration of existing computing systems to cloud computing sites or virtual machines
US9372827B2 (en) 2011-09-30 2016-06-21 Commvault Systems, Inc. Migration of an existing computing system to new hardware
US8463850B1 (en) 2011-10-26 2013-06-11 F5 Networks, Inc. System and method of algorithmically generating a server side transaction identifier
US9020912B1 (en) 2012-02-20 2015-04-28 F5 Networks, Inc. Methods for accessing data in a compressed file system and devices thereof
GB201203558D0 (en) * 2012-02-29 2012-04-11 Qando Service Inc Delivering data over a network
US9077665B1 (en) 2012-05-24 2015-07-07 Scale Computing, Inc. Transferring virtual machines and resource localization in a distributed fault-tolerant system
US8799746B2 (en) * 2012-06-13 2014-08-05 Caringo, Inc. Erasure coding and replication in storage clusters
US10019287B1 (en) 2012-08-23 2018-07-10 Scale Computing Virtual machine resource display
US10430216B1 (en) 2012-08-23 2019-10-01 Scale Computing Inc Virtual machine automated selection
US9778856B2 (en) 2012-08-30 2017-10-03 Microsoft Technology Licensing, Llc Block-level access to parallel storage
US9519501B1 (en) 2012-09-30 2016-12-13 F5 Networks, Inc. Hardware assisted flow acceleration and L2 SMAC management in a heterogeneous distributed multi-tenant virtualized clustered system
WO2014070146A1 (en) 2012-10-30 2014-05-08 Hewlett-Packard Development Company, L.P. Smart memory buffers
US9032177B2 (en) * 2012-12-04 2015-05-12 HGST Netherlands B.V. Host read command return reordering based on time estimation of flash read command completion
CN103065096B (zh) * 2012-12-18 2016-06-08 华为技术有限公司 一种数据保护方法、装置及系统
US9286086B2 (en) 2012-12-21 2016-03-15 Commvault Systems, Inc. Archiving virtual machines in a data storage system
US20140181046A1 (en) 2012-12-21 2014-06-26 Commvault Systems, Inc. Systems and methods to backup unprotected virtual machines
US20140181112A1 (en) * 2012-12-26 2014-06-26 Hon Hai Precision Industry Co., Ltd. Control device and file distribution method
US9378035B2 (en) 2012-12-28 2016-06-28 Commvault Systems, Inc. Systems and methods for repurposing virtual machines
US9703584B2 (en) 2013-01-08 2017-07-11 Commvault Systems, Inc. Virtual server agent load balancing
US20140201151A1 (en) 2013-01-11 2014-07-17 Commvault Systems, Inc. Systems and methods to select files for restoration from block-level backup for virtual machines
US9286110B2 (en) 2013-01-14 2016-03-15 Commvault Systems, Inc. Seamless virtual machine recall in a data storage system
US10375155B1 (en) 2013-02-19 2019-08-06 F5 Networks, Inc. System and method for achieving hardware acceleration for asymmetric flow connections
US9554418B1 (en) 2013-02-28 2017-01-24 F5 Networks, Inc. Device for topology hiding of a visited network
US10127235B2 (en) * 2013-03-06 2018-11-13 Quest Software Inc. Storage system deduplication with service level agreements
US11422907B2 (en) 2013-08-19 2022-08-23 Microsoft Technology Licensing, Llc Disconnected operation for systems utilizing cloud storage
US10747475B2 (en) 2013-08-26 2020-08-18 Vmware, Inc. Virtual disk blueprints for a virtualized storage area network, wherein virtual disk objects are created from local physical storage of host computers that are running multiple virtual machines
US9887924B2 (en) 2013-08-26 2018-02-06 Vmware, Inc. Distributed policy-based provisioning and enforcement for quality of service
US9672115B2 (en) 2013-08-26 2017-06-06 Vmware, Inc. Partition tolerance in cluster membership management
US11016820B2 (en) 2013-08-26 2021-05-25 Vmware, Inc. Load balancing of resources
US9811531B2 (en) * 2013-08-26 2017-11-07 Vmware, Inc. Scalable distributed storage architecture
US9661074B2 (en) * 2013-08-29 2017-05-23 International Business Machines Corporations Updating de-duplication tracking data for a dispersed storage network
US20150074536A1 (en) 2013-09-12 2015-03-12 Commvault Systems, Inc. File manager integration with virtualization in an information management system, including user control and storage management of virtual machines
CN103488433B (zh) * 2013-09-18 2016-05-11 北京思特奇信息技术股份有限公司 一种基于分布式文件系统的批量文件操作方法及系统
CN103473337A (zh) * 2013-09-22 2013-12-25 北京航空航天大学 一种分布式存储系统中处理面向海量目录和文件的方法
US9798631B2 (en) 2014-02-04 2017-10-24 Microsoft Technology Licensing, Llc Block storage by decoupling ordering from durability
US10372685B2 (en) 2014-03-31 2019-08-06 Amazon Technologies, Inc. Scalable file storage service
US10264071B2 (en) 2014-03-31 2019-04-16 Amazon Technologies, Inc. Session management in distributed storage systems
US9772787B2 (en) * 2014-03-31 2017-09-26 Amazon Technologies, Inc. File storage using variable stripe sizes
US9811427B2 (en) 2014-04-02 2017-11-07 Commvault Systems, Inc. Information management by a media agent in the absence of communications with a storage manager
US10459892B2 (en) 2014-04-23 2019-10-29 Qumulo, Inc. Filesystem hierarchical aggregate metrics
US9858013B1 (en) * 2014-05-05 2018-01-02 EMC IP Holding Company LLC Scalable distributed storage system infrastructure
US11838851B1 (en) 2014-07-15 2023-12-05 F5, Inc. Methods for managing L7 traffic classification and devices thereof
US20160019317A1 (en) 2014-07-16 2016-01-21 Commvault Systems, Inc. Volume or virtual machine level backup and generating placeholders for virtual machine files
US20160026553A1 (en) * 2014-07-22 2016-01-28 Cray Inc. Computer workload manager
US9893960B2 (en) * 2014-08-12 2018-02-13 S-Printing Solution Co., Ltd. Device hub system with resource access mechanism and method of operation thereof
US9710465B2 (en) 2014-09-22 2017-07-18 Commvault Systems, Inc. Efficiently restoring execution of a backed up virtual machine based on coordination with virtual-machine-file-relocation operations
US9436555B2 (en) 2014-09-22 2016-09-06 Commvault Systems, Inc. Efficient live-mount of a backed up virtual machine in a storage management system
US9417968B2 (en) 2014-09-22 2016-08-16 Commvault Systems, Inc. Efficiently restoring execution of a backed up virtual machine based on coordination with virtual-machine-file-relocation operations
US10776209B2 (en) 2014-11-10 2020-09-15 Commvault Systems, Inc. Cross-platform virtual machine backup and replication
US20160142485A1 (en) 2014-11-19 2016-05-19 Commvault Systems, Inc. Migration to cloud storage from backup
US9983936B2 (en) 2014-11-20 2018-05-29 Commvault Systems, Inc. Virtual machine change block tracking
US10182013B1 (en) 2014-12-01 2019-01-15 F5 Networks, Inc. Methods for managing progressive image delivery and devices thereof
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
US11895138B1 (en) 2015-02-02 2024-02-06 F5, Inc. Methods for improving web scanner accuracy and devices thereof
US11188665B2 (en) 2015-02-27 2021-11-30 Pure Storage, Inc. Using internal sensors to detect adverse interference and take defensive actions
US10275185B2 (en) * 2015-02-27 2019-04-30 International Business Machines Corporation Fail-in-place supported via decentralized or Distributed Agreement Protocol (DAP)
CN104639661A (zh) * 2015-03-13 2015-05-20 华存数据信息技术有限公司 分布式存储系统及文件存储和读取方法
CN104731526B (zh) * 2015-03-17 2017-11-03 中国科学院计算技术研究所 一种不满条带写的方法及装置
CN104731527B (zh) * 2015-03-17 2018-09-07 中国科学院计算技术研究所 一种三条带状态转换方法
US9824114B1 (en) * 2015-03-30 2017-11-21 EMC IP Holding Company LLC Multiple concurrent cursors for file repair
US10834065B1 (en) 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
US10084873B2 (en) 2015-06-19 2018-09-25 Commvault Systems, Inc. Assignment of data agent proxies for executing virtual-machine secondary copy operations including streaming backup jobs
US9563514B2 (en) 2015-06-19 2017-02-07 Commvault Systems, Inc. Assignment of proxies for virtual-machine secondary copy operations including streaming backup jobs
US10705909B2 (en) * 2015-06-25 2020-07-07 International Business Machines Corporation File level defined de-clustered redundant array of independent storage devices solution
US10025788B2 (en) * 2015-09-29 2018-07-17 International Business Machines Corporation Detection of file corruption in a distributed file system
US10379742B2 (en) * 2015-12-28 2019-08-13 Netapp, Inc. Storage zone set membership
US10404698B1 (en) 2016-01-15 2019-09-03 F5 Networks, Inc. Methods for adaptive organization of web application access points in webtops and devices thereof
US10797888B1 (en) 2016-01-20 2020-10-06 F5 Networks, Inc. Methods for secured SCEP enrollment for client devices and devices thereof
US10162834B2 (en) * 2016-01-29 2018-12-25 Vmware, Inc. Fine-grained metadata management in a distributed file system
US10514984B2 (en) 2016-02-26 2019-12-24 Netapp, Inc. Risk based rebuild of data objects in an erasure coded storage system
US10476957B2 (en) * 2016-02-26 2019-11-12 Red Hat, Inc. Granular entry self-healing
US10592350B2 (en) 2016-03-09 2020-03-17 Commvault Systems, Inc. Virtual server cloud file system for virtual machine restore to cloud operations
US10019317B2 (en) * 2016-04-25 2018-07-10 Nexenta Systems, Inc. Parity protection for data chunks in an object storage system
US10747630B2 (en) 2016-09-30 2020-08-18 Commvault Systems, Inc. Heartbeat monitoring of virtual machines for initiating failover operations in a data storage management system, including operations by a master monitor node
US10540516B2 (en) 2016-10-13 2020-01-21 Commvault Systems, Inc. Data protection within an unsecured storage environment
US10152251B2 (en) 2016-10-25 2018-12-11 Commvault Systems, Inc. Targeted backup of virtual machine
US10162528B2 (en) 2016-10-25 2018-12-25 Commvault Systems, Inc. Targeted snapshot based on virtual machine location
EP3482347B1 (en) * 2016-10-25 2021-02-17 Owl Cameras, Inc. Video-based data collection, image capture and analysis configuration
US10412198B1 (en) 2016-10-27 2019-09-10 F5 Networks, Inc. Methods for improved transmission control protocol (TCP) performance visibility and devices thereof
US10678758B2 (en) 2016-11-21 2020-06-09 Commvault Systems, Inc. Cross-platform virtual machine data and memory backup and replication
US10095729B2 (en) 2016-12-09 2018-10-09 Qumulo, Inc. Managing storage quotas in a shared storage system
US10346355B2 (en) 2016-12-23 2019-07-09 Qumulo, Inc. Filesystem block sampling to identify user consumption of storage resources
US10585860B2 (en) 2017-01-03 2020-03-10 International Business Machines Corporation Global namespace for a hierarchical set of file systems
US10579587B2 (en) 2017-01-03 2020-03-03 International Business Machines Corporation Space management for a hierarchical set of file systems
US10649955B2 (en) 2017-01-03 2020-05-12 International Business Machines Corporation Providing unique inodes across multiple file system namespaces
US10579598B2 (en) 2017-01-03 2020-03-03 International Business Machines Corporation Global namespace for a hierarchical set of file systems
US10592479B2 (en) 2017-01-03 2020-03-17 International Business Machines Corporation Space management for a hierarchical set of file systems
US10657102B2 (en) 2017-01-03 2020-05-19 International Business Machines Corporation Storage space management in union mounted file systems
CN106919347A (zh) * 2017-02-28 2017-07-04 北京华云网际科技有限公司 分布式块存储系统的目录的创建方法和装置
US10079612B1 (en) 2017-03-15 2018-09-18 Alibaba Group Holding Limited Distributed erasure coding pool deployed in hyperscale infrastructure
US10949308B2 (en) 2017-03-15 2021-03-16 Commvault Systems, Inc. Application aware backup of virtual machines
US20180276022A1 (en) 2017-03-24 2018-09-27 Commvault Systems, Inc. Consistent virtual machine replication
US11108858B2 (en) 2017-03-28 2021-08-31 Commvault Systems, Inc. Archiving mail servers via a simple mail transfer protocol (SMTP) server
US10387073B2 (en) 2017-03-29 2019-08-20 Commvault Systems, Inc. External dynamic virtual machine synchronization
US11074138B2 (en) 2017-03-29 2021-07-27 Commvault Systems, Inc. Multi-streaming backup operations for mailboxes
US10552294B2 (en) 2017-03-31 2020-02-04 Commvault Systems, Inc. Management of internet of things devices
US11294786B2 (en) 2017-03-31 2022-04-05 Commvault Systems, Inc. Management of internet of things devices
US11221939B2 (en) 2017-03-31 2022-01-11 Commvault Systems, Inc. Managing data from internet of things devices in a vehicle
US10853195B2 (en) 2017-03-31 2020-12-01 Commvault Systems, Inc. Granular restoration of virtual machine application data
JP2018185757A (ja) * 2017-04-27 2018-11-22 富士通株式会社 ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム
US10423351B1 (en) * 2017-04-28 2019-09-24 EMC IP Holding Company LLC System and method for capacity and network traffic efficient data protection on distributed storage system
US11321402B2 (en) 2017-05-05 2022-05-03 Microsoft Technology Licensing, Llc. Index storage across heterogenous storage devices
US10567492B1 (en) 2017-05-11 2020-02-18 F5 Networks, Inc. Methods for load balancing in a federated identity environment and devices thereof
US10365845B1 (en) 2017-07-27 2019-07-30 EMC IP Holding Company LLC Mapped raid restripe for improved drive utilization
US10831708B2 (en) * 2017-12-20 2020-11-10 Mastercard International Incorporated Systems and methods for improved processing of a data file
US11223689B1 (en) 2018-01-05 2022-01-11 F5 Networks, Inc. Methods for multipath transmission control protocol (MPTCP) based session migration and devices thereof
CN110109867B (zh) * 2018-01-18 2023-03-31 伊姆西Ip控股有限责任公司 改进在线模式检测的方法、装置和计算机程序产品
CN110058792B (zh) 2018-01-18 2022-08-30 伊姆西Ip控股有限责任公司 扩大存储空间的方法、设备以及计算机程序产品
US10833943B1 (en) 2018-03-01 2020-11-10 F5 Networks, Inc. Methods for service chaining and devices thereof
US10877928B2 (en) 2018-03-07 2020-12-29 Commvault Systems, Inc. Using utilities injected into cloud-based virtual machines for speeding up virtual machine backup operations
CN110413208B (zh) 2018-04-28 2023-05-30 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品
US11360936B2 (en) 2018-06-08 2022-06-14 Qumulo, Inc. Managing per object snapshot coverage in filesystems
US10754726B2 (en) * 2018-08-21 2020-08-25 Micron Technology, Inc. Tracking error-correction parity calculations
US11200124B2 (en) 2018-12-06 2021-12-14 Commvault Systems, Inc. Assigning backup resources based on failover of partnered data storage servers in a data storage management system
US10942808B2 (en) 2018-12-17 2021-03-09 International Business Machines Corporation Adaptive data and parity placement using compression ratios of storage devices
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
US10614033B1 (en) 2019-01-30 2020-04-07 Qumulo, Inc. Client aware pre-fetch policy scoring system
US10768971B2 (en) 2019-01-30 2020-09-08 Commvault Systems, Inc. Cross-hypervisor live mount of backed up virtual machine data
US10996974B2 (en) 2019-01-30 2021-05-04 Commvault Systems, Inc. Cross-hypervisor live mount of backed up virtual machine data, including management of cache storage for virtual machine data
CN111506450B (zh) * 2019-01-31 2024-01-02 伊姆西Ip控股有限责任公司 用于数据处理的方法、设备和计算机程序产品
US10936219B2 (en) * 2019-04-26 2021-03-02 Dell Products L.P. Controller-based inter-device notational data movement system
CN110457163B (zh) * 2019-07-05 2022-05-03 苏州元核云技术有限公司 一种分布式块存储的数据恢复方法、装置及存储介质
US10725977B1 (en) 2019-10-21 2020-07-28 Qumulo, Inc. Managing file system state during replication jobs
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
US10860414B1 (en) 2020-01-31 2020-12-08 Qumulo, Inc. Change notification in distributed file systems
US11467753B2 (en) 2020-02-14 2022-10-11 Commvault Systems, Inc. On-demand restore of virtual machine data
US11442768B2 (en) 2020-03-12 2022-09-13 Commvault Systems, Inc. Cross-hypervisor live recovery of virtual machines
US11099956B1 (en) 2020-03-26 2021-08-24 Commvault Systems, Inc. Snapshot-based disaster recovery orchestration of virtual machine failover and failback operations
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
US11500669B2 (en) 2020-05-15 2022-11-15 Commvault Systems, Inc. Live recovery of virtual machines in a public cloud computing environment
RU2747213C1 (ru) * 2020-06-24 2021-04-29 Общество с ограниченной ответственностью "РЭЙДИКС" Способ перераспределения данных при расширении массива дисков
US11775481B2 (en) 2020-09-30 2023-10-03 Qumulo, Inc. User interfaces for managing distributed file systems
US11656951B2 (en) 2020-10-28 2023-05-23 Commvault Systems, Inc. Data loss vulnerability detection
US11799958B2 (en) 2020-12-21 2023-10-24 Dropbox, Inc. Evaluating access based on group membership
US11366793B1 (en) * 2020-12-21 2022-06-21 Dropbox, Inc. Data model and data service for content management system
US11789976B2 (en) 2020-12-21 2023-10-17 Dropbox, Inc. Data model and data service for content management system
US11803652B2 (en) 2020-12-21 2023-10-31 Dropbox, Inc. Determining access changes
US11016688B1 (en) * 2021-01-06 2021-05-25 Open Drives LLC Real-time localized data access in a distributed data storage system
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
US11567660B2 (en) 2021-03-16 2023-01-31 Qumulo, Inc. Managing cloud storage for distributed file systems
US11132126B1 (en) 2021-03-16 2021-09-28 Qumulo, Inc. Backup services for distributed file systems in cloud computing environments
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
US11294604B1 (en) 2021-10-22 2022-04-05 Qumulo, Inc. Serverless disk drives based on cloud storage
US11354273B1 (en) 2021-11-18 2022-06-07 Qumulo, Inc. Managing usable storage space in distributed file systems
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

Family Cites Families (300)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US426464A (en) 1890-04-29 Ice-tongs
US5163131A (en) 1989-09-08 1992-11-10 Auspex Systems, Inc. Parallel i/o network file server architecture
US5181162A (en) 1989-12-06 1993-01-19 Eastman Kodak Company Document management and production system
JPH04211844A (ja) 1990-01-19 1992-08-03 Texas Instr Inc <Ti> ファイルシステムディフラグメント化装置及び方法
US5230047A (en) 1990-04-16 1993-07-20 International Business Machines Corporation Method for balancing of distributed tree file structures in parallel computing systems to enable recovery after a failure
EP0456947B1 (en) 1990-05-15 1995-02-22 International Business Machines Corporation Hybrid switching system for a communication node
JPH0731582B2 (ja) 1990-06-21 1995-04-10 インターナショナル・ビジネス・マシーンズ・コーポレイション パリティ保護データを回復するための方法および装置
US5212784A (en) 1990-10-22 1993-05-18 Delphi Data, A Division Of Sparks Industries, Inc. Automated concurrent data backup system
US5329626A (en) 1990-10-23 1994-07-12 Digital Equipment Corporation System for distributed computation processing includes dynamic assignment of predicates to define interdependencies
EP0485110B1 (en) 1990-11-09 1999-08-25 Emc Corporation Logical partitioning of a redundant array storage system
US5734826A (en) 1991-03-29 1998-03-31 International Business Machines Corporation Variable cyclic redundancy coding method and apparatus for use in a multistage network
US5258984A (en) 1991-06-13 1993-11-02 International Business Machines Corporation Method and means for distributed sparing in DASD arrays
JP3160106B2 (ja) 1991-12-23 2001-04-23 ヒュンダイ エレクトロニクス アメリカ ディスクアレーの区分け方法
US5359594A (en) 1992-05-15 1994-10-25 International Business Machines Corporation Power-saving full duplex nodal communications systems
US5469562A (en) 1992-06-26 1995-11-21 Digital Equipment Corporation Durable atomic storage update manager
US5403639A (en) 1992-09-02 1995-04-04 Storage Technology Corporation File server having snapshot application data groups
GB2270821A (en) 1992-09-19 1994-03-23 Ibm Message transmission in a computer network
EP0595453B1 (en) 1992-10-24 1998-11-11 International Computers Limited Distributed data processing system
US5649200A (en) 1993-01-08 1997-07-15 Atria Software, Inc. Dynamic rule-based version control system
US5548724A (en) 1993-03-22 1996-08-20 Hitachi, Ltd. File server system and file access control method of the same
ATE222384T1 (de) 1993-06-03 2002-08-15 Network Appliance Inc Verfahren und dateisystem zur zuordnung von datei-blöcken zu speicherplatz in einem raid- plattensystem
US5963962A (en) 1995-05-31 1999-10-05 Network Appliance, Inc. Write anywhere file-system layout
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
US5548795A (en) 1994-03-28 1996-08-20 Quantum Corporation Method for determining command execution dependencies within command queue reordering process
EP0684716B1 (en) 1994-05-25 2002-02-27 International Business Machines Corporation A data communication network and method for operating said network
US5657439A (en) 1994-08-23 1997-08-12 International Business Machines Corporation Distributed subsystem sparing
US5694593A (en) 1994-10-05 1997-12-02 Northeastern University Distributed computer database system and method
DE69521101T2 (de) 1994-10-31 2001-10-18 Ibm Gemeinsam genutzte virtuelle Platten mit anwendungstransparenter Wiedergewinnung
US6108759A (en) 1995-02-23 2000-08-22 Powerquest Corporation Manipulation of partitions holding advanced file systems
JP3358687B2 (ja) 1995-03-13 2002-12-24 株式会社日立製作所 ディスクアレイ装置
US5696895A (en) 1995-05-19 1997-12-09 Compaq Computer Corporation Fault tolerant multiple network servers
US5612865A (en) 1995-06-01 1997-03-18 Ncr Corporation Dynamic hashing method for optimal distribution of locks within a clustered system
US5680621A (en) 1995-06-07 1997-10-21 International Business Machines Corporation System and method for domained incremental changes storage and retrieval
US5787267A (en) 1995-06-07 1998-07-28 Monolithic System Technology, Inc. Caching method and circuit for a memory system with circuit module architecture
JP3512910B2 (ja) 1995-07-06 2004-03-31 株式会社東芝 分散計算機システムにおける記憶空間管理方法、計算機及びデータ転送方法
US5875456A (en) 1995-08-17 1999-02-23 Nstor Corporation Storage device array and methods for striping and unstriping data and for adding and removing disks online to/from a raid storage array
US5870757A (en) 1995-09-11 1999-02-09 Sun Microsystems, Inc. Single transaction technique for a journaling file system of a computer operating system
US5774643A (en) 1995-10-13 1998-06-30 Digital Equipment Corporation Enhanced raid write hole protection and recovery
US6449730B2 (en) 1995-10-24 2002-09-10 Seachange Technology, Inc. Loosely coupled mass storage computer cluster
US6567926B2 (en) 1995-10-24 2003-05-20 Seachange International, Inc. Loosely coupled mass storage computer cluster
US5862312A (en) 1995-10-24 1999-01-19 Seachange Technology, Inc. Loosely coupled mass storage computer cluster
US5805578A (en) 1995-10-27 1998-09-08 International Business Machines Corporation Automatic reconfiguration of multipoint communication channels
US5799305A (en) 1995-11-02 1998-08-25 Informix Software, Inc. Method of commitment in a distributed database transaction
JPH103421A (ja) 1995-11-20 1998-01-06 Matsushita Electric Ind Co Ltd 仮想ファイル管理システム
US5761659A (en) 1996-02-29 1998-06-02 Sun Microsystems, Inc. Method, product, and structure for flexible range locking of read and write requests using shared and exclusive locks, flags, sub-locks, and counters
GB9605473D0 (en) 1996-03-15 1996-05-15 Int Computers Ltd Parallel searching technique
US6117181A (en) 1996-03-22 2000-09-12 Sun Microsystems, Inc. Synchronization mechanism for distributed hardware simulation
US5884098A (en) 1996-04-18 1999-03-16 Emc Corporation RAID controller system utilizing front end and back end caching systems including communication path connecting two caching systems and synchronizing allocation of blocks in caching systems
US5806065A (en) 1996-05-06 1998-09-08 Microsoft Corporation Data system with distributed tree indexes and method for maintaining the indexes
US5917998A (en) 1996-07-26 1999-06-29 International Business Machines Corporation Method and apparatus for establishing and maintaining the status of membership sets used in mirrored read and write input/output without logging
US6044367A (en) 1996-08-02 2000-03-28 Hewlett-Packard Company Distributed I/O store
US5878410A (en) 1996-09-13 1999-03-02 Microsoft Corporation File system sort order indexes
US5805900A (en) 1996-09-26 1998-09-08 International Business Machines Corporation Method and apparatus for serializing resource access requests in a multisystem complex
US5884046A (en) 1996-10-23 1999-03-16 Pluris, Inc. Apparatus and method for sharing data and routing messages between a plurality of workstations in a local area network
US5822790A (en) 1997-02-07 1998-10-13 Sun Microsystems, Inc. Voting data prefetch engine
US6070172A (en) * 1997-03-06 2000-05-30 Oracle Corporation On-line free space defragmentation of a contiguous-file file system
US5890147A (en) 1997-03-07 1999-03-30 Microsoft Corporation Scope testing of documents in a search engine using document to folder mapping
US5943690A (en) 1997-04-07 1999-08-24 Sony Corporation Data storage apparatus and method allocating sets of data
US5878414A (en) 1997-06-06 1999-03-02 International Business Machines Corp. Constructing a transaction serialization order based on parallel or distributed database log files
US6393483B1 (en) 1997-06-30 2002-05-21 Adaptec, Inc. Method and apparatus for network interface card load balancing and port aggregation
US6209059B1 (en) 1997-09-25 2001-03-27 Emc Corporation Method and apparatus for the on-line reconfiguration of the logical volumes of a data storage system
US6014669A (en) 1997-10-01 2000-01-11 Sun Microsystems, Inc. Highly-available distributed cluster configuration database
US5933834A (en) * 1997-10-16 1999-08-03 International Business Machines Incorporated System and method for re-striping a set of objects onto an exploded array of storage units in a computer system
US6219693B1 (en) 1997-11-04 2001-04-17 Adaptec, Inc. File array storage architecture having file system distributed across a data processing platform
US6055543A (en) 1997-11-21 2000-04-25 Verano File wrapper containing cataloging information for content searching across multiple platforms
US5966707A (en) 1997-12-02 1999-10-12 International Business Machines Corporation Method for managing a plurality of data processes residing in heterogeneous data repositories
US6081883A (en) 1997-12-05 2000-06-27 Auspex Systems, Incorporated Processing system with dynamically allocatable buffer memory
US6029168A (en) * 1998-01-23 2000-02-22 Tricord Systems, Inc. Decentralized file mapping in a striped network file system in a distributed computing environment
US6173374B1 (en) 1998-02-11 2001-01-09 Lsi Logic Corporation System and method for peer-to-peer accelerated I/O shipping between host bus adapters in clustered computer network
US6055564A (en) 1998-03-11 2000-04-25 Hewlett Packard Company Admission control where priority indicator is used to discriminate between messages
US6421781B1 (en) 1998-04-30 2002-07-16 Openwave Systems Inc. Method and apparatus for maintaining security in a push server
US6122754A (en) 1998-05-22 2000-09-19 International Business Machines Corporation Method and system for data recovery using a distributed and scalable data structure
JP4234233B2 (ja) * 1998-05-27 2009-03-04 富士通株式会社 情報記憶装置及びプログラムが記憶された記録媒体
US6463442B1 (en) 1998-06-30 2002-10-08 Microsoft Corporation Container independent data binding system
JP3505093B2 (ja) * 1998-09-18 2004-03-08 富士通株式会社 ファイル管理システム
US6631411B1 (en) 1998-10-12 2003-10-07 Freshwater Software, Inc. Apparatus and method for monitoring a chain of electronic transactions
US6862635B1 (en) 1998-11-13 2005-03-01 Cray Inc. Synchronization techniques in a multithreaded environment
US6385626B1 (en) * 1998-11-19 2002-05-07 Emc Corporation Method and apparatus for identifying changes to a logical object based on changes to the logical object at physical level
US6279007B1 (en) 1998-11-30 2001-08-21 Microsoft Corporation Architecture for managing query friendly hierarchical values
US6408313B1 (en) 1998-12-16 2002-06-18 Microsoft Corporation Dynamic memory allocation based on free memory size
US6434574B1 (en) 1998-12-17 2002-08-13 Apple Computer, Inc. System and method for storing and retrieving filenames and files in computer memory using multiple encodings
US6457139B1 (en) 1998-12-30 2002-09-24 Emc Corporation Method and apparatus for providing a host computer with information relating to the mapping of logical volumes within an intelligent storage system
US6334168B1 (en) 1999-02-19 2001-12-25 International Business Machines Corporation Method and system for updating data in a data storage system
US6321345B1 (en) 1999-03-01 2001-11-20 Seachange Systems, Inc. Slow response in redundant arrays of inexpensive disks
TW418360B (en) 1999-03-02 2001-01-11 Via Tech Inc Memory access controller
US6502174B1 (en) 1999-03-03 2002-12-31 International Business Machines Corporation Method and system for managing meta data
US6725392B1 (en) * 1999-03-03 2004-04-20 Adaptec, Inc. Controller fault recovery system for a distributed file system
US6353823B1 (en) 1999-03-08 2002-03-05 Intel Corporation Method and system for using associative metadata
US6658554B1 (en) 1999-03-09 2003-12-02 Wisconsin Alumni Res Found Electronic processor providing direct data transfer between linked data consuming instructions
US6523130B1 (en) 1999-03-11 2003-02-18 Microsoft Corporation Storage system having error detection and recovery
US6671704B1 (en) 1999-03-11 2003-12-30 Hewlett-Packard Development Company, L.P. Method and apparatus for handling failures of resource managers in a clustered environment
US6907011B1 (en) 1999-03-30 2005-06-14 International Business Machines Corporation Quiescent reconfiguration of a routing network
US6801949B1 (en) 1999-04-12 2004-10-05 Rainfinity, Inc. Distributed server cluster with graphical user interface
US6496842B1 (en) 1999-05-28 2002-12-17 Survol Interactive Technologies Navigating heirarchically organized information
US6405219B2 (en) 1999-06-22 2002-06-11 F5 Networks, Inc. Method and system for automatically updating the version of a set of files stored on content servers
US6453389B1 (en) 1999-06-25 2002-09-17 Hewlett-Packard Company Optimizing computer performance by using data compression principles to minimize a loss function
US6415259B1 (en) 1999-07-15 2002-07-02 American Management Systems, Inc. Automatic work progress tracking and optimizing engine for a telecommunications customer care and billing system
AU7470700A (en) 1999-08-24 2001-03-19 Network Appliance, Inc. Scalable file server with highly available pairs
US7290056B1 (en) 1999-09-09 2007-10-30 Oracle International Corporation Monitoring latency of a network to manage termination of distributed transactions
US7206805B1 (en) 1999-09-09 2007-04-17 Oracle International Corporation Asynchronous transcription object management system
US20020029200A1 (en) 1999-09-10 2002-03-07 Charles Dulin System and method for providing certificate validation and other services
US6895482B1 (en) 1999-09-10 2005-05-17 International Business Machines Corporation Reordering and flushing commands in a computer memory subsystem
US6662184B1 (en) 1999-09-23 2003-12-09 International Business Machines Corporation Lock-free wild card search data structure and method
US7069320B1 (en) 1999-10-04 2006-06-27 International Business Machines Corporation Reconfiguring a network by utilizing a predetermined length quiescent state
US6549513B1 (en) 1999-10-12 2003-04-15 Alcatel Method and apparatus for fast distributed restoration of a communication network
US6571244B1 (en) 1999-10-28 2003-05-27 Microsoft Corporation Run formation in large scale sorting using batched replacement selection
US6584581B1 (en) 1999-12-06 2003-06-24 Ab Initio Software Corporation Continuous flow checkpointing data processing
US6567894B1 (en) 1999-12-08 2003-05-20 International Business Machines Corporation Method and apparatus to prefetch sequential pages in a multi-stream environment
US6546443B1 (en) 1999-12-15 2003-04-08 Microsoft Corporation Concurrency-safe reader-writer lock with time out support
US6848029B2 (en) 2000-01-03 2005-01-25 Dirk Coldewey Method and apparatus for prefetching recursive data structures
US6748429B1 (en) 2000-01-10 2004-06-08 Sun Microsystems, Inc. Method to dynamically change cluster or distributed system configuration
US7213063B2 (en) 2000-01-18 2007-05-01 Lucent Technologies Inc. Method, apparatus and system for maintaining connections between computers using connection-oriented protocols
GB2358557B (en) 2000-01-18 2002-05-08 Motorola Ltd Digital communications system
US6594660B1 (en) 2000-01-24 2003-07-15 Microsoft Corporation Share latch clearing
US6526478B1 (en) 2000-02-02 2003-02-25 Lsi Logic Corporation Raid LUN creation using proportional disk mapping
US20020091855A1 (en) 2000-02-02 2002-07-11 Yechiam Yemini Method and apparatus for dynamically addressing and routing in a data network
EP1133101A1 (en) 2000-03-07 2001-09-12 BRITISH TELECOMMUNICATIONS public limited company Data distribution
US6917942B1 (en) 2000-03-15 2005-07-12 International Business Machines Corporation System for dynamically evaluating locks in a distributed data storage system
AU2001251248A1 (en) 2000-04-03 2001-10-15 The Pugliese Company System and method for displaying and selling goods and services
US6598174B1 (en) 2000-04-26 2003-07-22 Dell Products L.P. Method and apparatus for storage unit replacement in non-redundant array
US6735678B2 (en) 2000-05-24 2004-05-11 Seagate Technology Llc Method and apparatus for disc drive defragmentation
US6922696B1 (en) 2000-05-31 2005-07-26 Sri International Lattice-based security classification system and method
JP3230677B1 (ja) 2000-06-01 2001-11-19 日本インターシステムズ株式会社 自動集計方法、自動集計装置および記録媒体
US6742020B1 (en) 2000-06-08 2004-05-25 Hewlett-Packard Development Company, L.P. System and method for managing data flow and measuring service in a storage network
US6618798B1 (en) 2000-07-11 2003-09-09 International Business Machines Corporation Method, system, program, and data structures for mapping logical units to a storage space comprises of at least one array of storage units
US6898607B2 (en) 2000-07-11 2005-05-24 Sony Corporation Proposed syntax for a synchronized commands execution
US6928459B1 (en) * 2000-07-18 2005-08-09 International Business Machines Corporation Plurality of file systems using weighted allocation to allocate space on one or more storage devices
TW594563B (en) 2000-07-19 2004-06-21 Micro Star Int Co Ltd Programming method and equipment of programmable apparatus for circuit board without power supplying
US7007097B1 (en) 2000-07-20 2006-02-28 Silicon Graphics, Inc. Method and system for covering multiple resourcces with a single credit in a computer system
US6977908B2 (en) 2000-08-25 2005-12-20 Hewlett-Packard Development Company, L.P. Method and apparatus for discovering computer systems in a distributed multi-system cluster
US6732125B1 (en) 2000-09-08 2004-05-04 Storage Technology Corporation Self archiving log structured volume with intrinsic data protection
JP2002108573A (ja) 2000-09-28 2002-04-12 Nec Corp ディスクアレイ装置、そのエラー制御方法、ならびにその制御プログラムを記録した記録媒体
US6970939B2 (en) 2000-10-26 2005-11-29 Intel Corporation Method and apparatus for large payload distribution in a network
US6687805B1 (en) 2000-10-30 2004-02-03 Hewlett-Packard Development Company, L.P. Method and system for logical-object-to-physical-location translation and physical separation of logical objects
US6671686B2 (en) 2000-11-02 2003-12-30 Guy Pardon Decentralized, distributed internet data management
US7313614B2 (en) 2000-11-02 2007-12-25 Sun Microsystems, Inc. Switching system
US7200606B2 (en) 2000-11-07 2007-04-03 The Regents Of The University Of California Method and system for selecting documents by measuring document quality
US6499091B1 (en) 2000-11-13 2002-12-24 Lsi Logic Corporation System and method for synchronizing data mirrored by storage subsystems
US6594744B1 (en) 2000-12-11 2003-07-15 Lsi Logic Corporation Managing a snapshot volume or one or more checkpoint volumes with multiple point-in-time images in a single repository
US6856591B1 (en) 2000-12-15 2005-02-15 Cisco Technology, Inc. Method and system for high reliability cluster management
JP2002202936A (ja) 2000-12-18 2002-07-19 Kizna Corp 情報収集サーバ及び情報収集方法並びに記録媒体
US20020078161A1 (en) 2000-12-19 2002-06-20 Philips Electronics North America Corporation UPnP enabling device for heterogeneous networks of slave devices
US6785678B2 (en) 2000-12-21 2004-08-31 Emc Corporation Method of improving the availability of a computer clustering system through the use of a network medium link state function
US6990611B2 (en) 2000-12-29 2006-01-24 Dot Hill Systems Corp. Recovering data from arrays of storage devices after certain failures
US20020087366A1 (en) 2000-12-30 2002-07-04 Collier Timothy R. Tentative-hold-based protocol for distributed transaction processing
US6594655B2 (en) 2001-01-04 2003-07-15 Ezchip Technologies Ltd. Wildcards in radix- search tree structures
MY147018A (en) 2001-01-04 2012-10-15 Thomson Licensing Sa A method and apparatus for acquiring media services available from content aggregators
US6907520B2 (en) 2001-01-11 2005-06-14 Sun Microsystems, Inc. Threshold-based load address prediction and new thread identification in a multithreaded microprocessor
US6990547B2 (en) 2001-01-29 2006-01-24 Adaptec, Inc. Replacing file system processors by hot swapping
US6862692B2 (en) 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
US20020124137A1 (en) 2001-01-29 2002-09-05 Ulrich Thomas R. Enhancing disk array performance via variable parity based load balancing
US20020138559A1 (en) 2001-01-29 2002-09-26 Ulrich Thomas R. Dynamically distributed file system
US7054927B2 (en) * 2001-01-29 2006-05-30 Adaptec, Inc. File system metadata describing server directory information
AU2002242026A1 (en) 2001-01-29 2002-08-12 Snap Appliance Inc. Dynamically distributed file system
US20020191311A1 (en) 2001-01-29 2002-12-19 Ulrich Thomas R. Dynamically scalable disk array
US6871295B2 (en) 2001-01-29 2005-03-22 Adaptec, Inc. Dynamic data recovery
US20020169827A1 (en) 2001-01-29 2002-11-14 Ulrich Thomas R. Hot adding file system processors
US6990667B2 (en) 2001-01-29 2006-01-24 Adaptec, Inc. Server-independent object positioning for load balancing drives and servers
WO2002071183A2 (en) 2001-02-28 2002-09-12 Wily Technology, Inc. Detecting a stalled routine
US6895534B2 (en) 2001-04-23 2005-05-17 Hewlett-Packard Development Company, L.P. Systems and methods for providing automated diagnostic services for a cluster computer system
US20020158900A1 (en) 2001-04-30 2002-10-31 Hsieh Vivian G. Graphical user interfaces for network management automated provisioning environment
US20030005159A1 (en) 2001-06-07 2003-01-02 International Business Machines Corporation Method and system for generating and serving multilingual web pages
US20040189682A1 (en) 2001-12-26 2004-09-30 Lidror Troyansky Method and a system for embedding textual forensic information
US7295755B2 (en) 2001-06-22 2007-11-13 Thomson Licensing Method and apparatus for simplifying the access of metadata
US7181746B2 (en) 2001-06-29 2007-02-20 Intel Corporation Initialization, reconfiguration, and shut down of a module function
US6877107B2 (en) 2001-07-05 2005-04-05 Softwired Ag Method for ensuring operation during node failures and network partitions in a clustered message passing server
US7546354B1 (en) 2001-07-06 2009-06-09 Emc Corporation Dynamic network based storage with high availability
US7146524B2 (en) 2001-08-03 2006-12-05 Isilon Systems, Inc. Systems and methods for providing a distributed file system incorporating a virtual hot spare
US7685126B2 (en) * 2001-08-03 2010-03-23 Isilon Systems, Inc. System and methods for providing a distributed file system utilizing metadata to track information about data stored throughout the system
US20030061491A1 (en) * 2001-09-21 2003-03-27 Sun Microsystems, Inc. System and method for the allocation of network storage
US6920494B2 (en) 2001-10-05 2005-07-19 International Business Machines Corporation Storage area network methods and apparatus with virtual SAN recognition
US6954877B2 (en) 2001-11-29 2005-10-11 Agami Systems, Inc. Fault tolerance using logical checkpointing in computing systems
US7184421B1 (en) 2001-12-21 2007-02-27 Itt Manufacturing Enterprises, Inc. Method and apparatus for on demand multicast and unicast using controlled flood multicast communications
US7055058B2 (en) 2001-12-26 2006-05-30 Boon Storage Technologies, Inc. Self-healing log-structured RAID
US7433948B2 (en) 2002-01-23 2008-10-07 Cisco Technology, Inc. Methods and apparatus for implementing virtualization of storage within a storage area network
US6859696B2 (en) 2001-12-27 2005-02-22 Caterpillar Inc System and method for monitoring machine status
US6990604B2 (en) 2001-12-28 2006-01-24 Storage Technology Corporation Virtual storage status coalescing with a plurality of physical storage devices
US6898587B2 (en) 2002-01-18 2005-05-24 Bea Systems, Inc. System and method for performing commutative operations in data access systems
US7742504B2 (en) 2002-01-24 2010-06-22 University Of Southern California Continuous media system
US20030149750A1 (en) * 2002-02-07 2003-08-07 Franzenburg Alan M. Distributed storage array
US7113938B2 (en) 2002-02-14 2006-09-26 Gravic, Inc. Method of increasing system availability by splitting a system
US7216135B2 (en) 2002-02-15 2007-05-08 International Business Machines Corporation File system for providing access to a snapshot dataset where disk address in the inode is equal to a ditto address for indicating that the disk address is invalid disk address
US6829617B2 (en) 2002-02-15 2004-12-07 International Business Machines Corporation Providing a snapshot of a subset of a file system
US6940966B2 (en) 2002-02-21 2005-09-06 Vtech Telecommunications, Ltd. Method and apparatus for detection of a telephone CPE alerting signal
EP1479232B1 (en) 2002-02-27 2011-09-28 Opentv, Inc. A method and apparatus for providing a hierarchical security profile object
US7177295B1 (en) 2002-03-08 2007-02-13 Scientific Research Corporation Wireless routing protocol for ad-hoc networks
US7240235B2 (en) 2002-03-13 2007-07-03 Intel Corporation Journaling technique for write transactions to mass storage
US7143307B1 (en) 2002-03-15 2006-11-28 Network Appliance, Inc. Remote disaster recovery and data migration using virtual appliance migration
US7043485B2 (en) 2002-03-19 2006-05-09 Network Appliance, Inc. System and method for storage of snapshot metadata in a remote file
US7225204B2 (en) 2002-03-19 2007-05-29 Network Appliance, Inc. System and method for asynchronous mirroring of snapshots at a destination using a purgatory directory and inode mapping
US6934878B2 (en) 2002-03-22 2005-08-23 Intel Corporation Failure detection and failure handling in cluster controller networks
US7631066B1 (en) 2002-03-25 2009-12-08 Symantec Operating Corporation System and method for preventing data corruption in computer system clusters
GB2387087A (en) 2002-03-25 2003-10-01 Sony Uk Ltd System
JP3848198B2 (ja) 2002-03-29 2006-11-22 株式会社東芝 ネームサーバ、ネットワーク・システム、逆引き要求処理方法、正引き要求処理方法及び通信制御方法
US6904430B1 (en) 2002-04-26 2005-06-07 Microsoft Corporation Method and system for efficiently identifying differences between large files
US6954435B2 (en) 2002-04-29 2005-10-11 Harris Corporation Determining quality of service (QoS) routing for mobile ad hoc networks
US7249118B2 (en) 2002-05-17 2007-07-24 Aleri, Inc. Database system and methods
US7249174B2 (en) 2002-06-12 2007-07-24 Bladelogic, Inc. Method and system for executing and undoing distributed server change operations
US7043567B2 (en) 2002-07-22 2006-05-09 Seagate Technology Llc Method and apparatus for determining the order of execution of queued commands in a data storage system
US7047243B2 (en) 2002-08-05 2006-05-16 Microsoft Corporation Coordinating transactional web services
US7051155B2 (en) * 2002-08-05 2006-05-23 Sun Microsystems, Inc. Method and system for striping data to accommodate integrity metadata
US7370064B2 (en) 2002-08-06 2008-05-06 Yousefi Zadeh Homayoun Database remote replication for back-end tier of multi-tier computer systems
US7877425B2 (en) 2002-09-05 2011-01-25 Hiroyuki Yasoshima Method for managing file using network structure, operation object display limiting program, and recording medium
AU2003275005A1 (en) 2002-09-18 2004-04-08 Netezza Corporation Intelligent storage device controller
US7103597B2 (en) 2002-10-03 2006-09-05 Mcgoveran David O Adaptive transaction manager for complex transactions and business process
US7111305B2 (en) 2002-10-31 2006-09-19 Sun Microsystems, Inc. Facilitating event notification through use of an inverse mapping structure for subset determination
EP1563411B1 (en) 2002-11-14 2013-06-19 EMC Corporation Systems and methods for restriping files in a distributed file system
US7412433B2 (en) 2002-11-19 2008-08-12 International Business Machines Corporation Hierarchical storage management using dynamic tables of contents and sets of tables of contents
AU2003284656A1 (en) 2002-11-25 2004-06-18 Matsushita Electric Industrial Co., Ltd. File management device, file management method, file management program, and recording medium
US7007044B1 (en) 2002-12-26 2006-02-28 Storage Technology Corporation Storage backup system for backing up data written to a primary storage device to multiple virtual mirrors using a reconciliation process that reflects the changing state of the primary storage device over time
US8250202B2 (en) 2003-01-04 2012-08-21 International Business Machines Corporation Distributed notification and action mechanism for mirroring-related events
US7512701B2 (en) 2003-01-16 2009-03-31 Hewlett-Packard Development Company, L.P. System and method for efficiently replicating a file among a plurality of recipients in a reliable manner
TWI242958B (en) 2003-01-20 2005-11-01 Sk Telecom Co Ltd Method for controlling a media message upload through a wireless communication network
JP4077329B2 (ja) 2003-01-31 2008-04-16 株式会社東芝 トランザクション処理システム、並行制御方法及びプログラム
US20040158549A1 (en) 2003-02-07 2004-08-12 Vladimir Matena Method and apparatus for online transaction processing
US7509378B2 (en) 2003-03-11 2009-03-24 Bea Systems, Inc. System and method for message ordering in a message oriented network
US7337290B2 (en) 2003-04-03 2008-02-26 Oracle International Corporation Deadlock resolution through lock requeing
US7228299B1 (en) 2003-05-02 2007-06-05 Veritas Operating Corporation System and method for performing file lookups based on tags
JP3973597B2 (ja) 2003-05-14 2007-09-12 株式会社ソニー・コンピュータエンタテインメント プリフェッチ命令制御方法、プリフェッチ命令制御装置、キャッシュメモリ制御装置、オブジェクトコードの生成方法および装置
US7673307B2 (en) 2003-05-29 2010-03-02 International Business Machines Corporation Managing transactions in a messaging system
US7152182B2 (en) 2003-06-06 2006-12-19 Hewlett-Packard Development Company, L.P. Data redundancy system and method
US20050010592A1 (en) 2003-07-08 2005-01-13 John Guthrie Method and system for taking a data snapshot
US7831693B2 (en) 2003-08-18 2010-11-09 Oracle America, Inc. Structured methodology and design patterns for web services
US7257257B2 (en) 2003-08-19 2007-08-14 Intel Corporation Method and apparatus for differential, bandwidth-efficient and storage-efficient backups
US7865485B2 (en) 2003-09-23 2011-01-04 Emc Corporation Multi-threaded write interface and methods for increasing the single file read and write throughput of a file server
US7409587B2 (en) 2004-08-24 2008-08-05 Symantec Operating Corporation Recovering from storage transaction failures using checkpoints
US7269588B1 (en) 2003-09-24 2007-09-11 Oracle International Corporation Neighborhood locking technique for increasing concurrency among transactions
US7194487B1 (en) 2003-10-16 2007-03-20 Veritas Operating Corporation System and method for recording the order of a change caused by restoring a primary volume during ongoing replication of the primary volume
US7225210B2 (en) 2003-11-20 2007-05-29 Overland Storage, Inc. Block level data snapshot system and method
US7380073B2 (en) 2003-11-26 2008-05-27 Sas Institute Inc. Computer-implemented system and method for lock handling
CA2452251C (en) 2003-12-04 2010-02-09 Timothy R. Jewell Data backup system and method
US20050125456A1 (en) 2003-12-09 2005-06-09 Junichi Hara File migration method based on access history
US8244903B2 (en) 2003-12-22 2012-08-14 Emc Corporation Data streaming and backup systems having multiple concurrent read threads for improved small file performance
US7181556B2 (en) 2003-12-23 2007-02-20 Arm Limited Transaction request servicing mechanism
US7287076B2 (en) 2003-12-29 2007-10-23 Microsoft Corporation Performing threshold based connection status responses
JP2005196467A (ja) 2004-01-07 2005-07-21 Hitachi Ltd ストレージシステム、ストレージシステムの制御方法、及びストレージ制御装置
US7265692B2 (en) 2004-01-29 2007-09-04 Hewlett-Packard Development Company, L.P. Data compression system based on tree models
US7296139B1 (en) 2004-01-30 2007-11-13 Nvidia Corporation In-memory table structure for virtual address translation system with translation units of variable range size
US7383276B2 (en) 2004-01-30 2008-06-03 Microsoft Corporation Concurrency control for B-trees with node deletion
US7440966B2 (en) 2004-02-12 2008-10-21 International Business Machines Corporation Method and apparatus for file system snapshot persistence
JP4489455B2 (ja) 2004-02-16 2010-06-23 株式会社日立製作所 ディスク制御装置及びディスク制御装置の制御方法
US7318134B1 (en) 2004-03-16 2008-01-08 Emc Corporation Continuous data backup using distributed journaling
US7428539B2 (en) 2004-06-21 2008-09-23 Microsoft Corporation Method, system, and apparatus for managing access to a data object
US7472129B2 (en) 2004-06-29 2008-12-30 Microsoft Corporation Lossless recovery for computer systems with map assisted state transfer
US7707195B2 (en) 2004-06-29 2010-04-27 Microsoft Corporation Allocation locks and their use
US7404192B2 (en) 2004-08-03 2008-07-22 International Business Machines Corporation Apparatus, system, and method for isolating a storage application from a network interface driver
US7404179B2 (en) 2004-09-16 2008-07-22 International Business Machines Corporation Fast source file to line number table association
JP2006107151A (ja) 2004-10-06 2006-04-20 Hitachi Ltd ストレージシステム及びストレージシステムの通信パス制御方法
US8059562B2 (en) 2004-10-18 2011-11-15 Nokia Corporation Listener mechanism in a distributed network system
US8055711B2 (en) 2004-10-29 2011-11-08 Emc Corporation Non-blocking commit protocol systems and methods
US8051425B2 (en) * 2004-10-29 2011-11-01 Emc Corporation Distributed system with asynchronous execution systems and methods
US8238350B2 (en) 2004-10-29 2012-08-07 Emc Corporation Message batching with checkpoints systems and methods
US7921076B2 (en) 2004-12-15 2011-04-05 Oracle International Corporation Performing an action in response to a file system event
US7770150B2 (en) 2004-12-15 2010-08-03 International Business Machines Corporation Apparatus, system, and method for sharing and accessing data by scopes
US7877466B2 (en) 2005-01-11 2011-01-25 Cisco Technology, Inc. Network topology based storage allocation for virtualization
US7603502B2 (en) 2005-04-12 2009-10-13 Microsoft Corporation Resource accessing with locking
US7562188B2 (en) 2005-06-17 2009-07-14 Intel Corporation RAID power safe apparatus, systems, and methods
US7716171B2 (en) 2005-08-18 2010-05-11 Emc Corporation Snapshot indexing
US7533298B2 (en) 2005-09-07 2009-05-12 Lsi Corporation Write journaling using battery backed cache
US7797283B2 (en) 2005-10-21 2010-09-14 Isilon Systems, Inc. Systems and methods for maintaining distributed data
US7917474B2 (en) 2005-10-21 2011-03-29 Isilon Systems, Inc. Systems and methods for accessing and updating distributed data
US7346720B2 (en) 2005-10-21 2008-03-18 Isilon Systems, Inc. Systems and methods for managing concurrent access requests to a shared resource
US7788303B2 (en) 2005-10-21 2010-08-31 Isilon Systems, Inc. Systems and methods for distributed system scanning
US7551572B2 (en) 2005-10-21 2009-06-23 Isilon Systems, Inc. Systems and methods for providing variable protection
US7386675B2 (en) 2005-10-21 2008-06-10 Isilon Systems, Inc. Systems and methods for using excitement values to predict future access to resources
US7546412B2 (en) 2005-12-02 2009-06-09 International Business Machines Corporation Apparatus, system, and method for global metadata copy repair
JP4800046B2 (ja) 2006-01-31 2011-10-26 株式会社日立製作所 ストレージシステム
US7848261B2 (en) 2006-02-17 2010-12-07 Isilon Systems, Inc. Systems and methods for providing a quiescing protocol
US7756898B2 (en) 2006-03-31 2010-07-13 Isilon Systems, Inc. Systems and methods for notifying listeners of events
US8548947B2 (en) 2006-04-28 2013-10-01 Hewlett-Packard Development Company, L.P. Systems and methods for file maintenance
US7565575B2 (en) 2006-05-30 2009-07-21 Oracle International Corporation Selecting optimal repair strategy for mirrored files
GB2439578B (en) 2006-06-30 2011-11-09 Data Equation Ltd Data processing
US8539056B2 (en) 2006-08-02 2013-09-17 Emc Corporation Systems and methods for configuring multiple network interfaces
US20080034004A1 (en) 2006-08-04 2008-02-07 Pavel Cisler System for electronic backup
US8015162B2 (en) 2006-08-04 2011-09-06 Google Inc. Detecting duplicate and near-duplicate files
US7680842B2 (en) 2006-08-18 2010-03-16 Isilon Systems, Inc. Systems and methods for a snapshot of data
US7822932B2 (en) 2006-08-18 2010-10-26 Isilon Systems, Inc. Systems and methods for providing nonlinear journaling
US7953704B2 (en) 2006-08-18 2011-05-31 Emc Corporation Systems and methods for a snapshot of data
US7882071B2 (en) 2006-08-18 2011-02-01 Isilon Systems, Inc. Systems and methods for a snapshot of data
US7899800B2 (en) 2006-08-18 2011-03-01 Isilon Systems, Inc. Systems and methods for providing nonlinear journaling
US7676691B2 (en) 2006-08-18 2010-03-09 Isilon Systems, Inc. Systems and methods for providing nonlinear journaling
US7752402B2 (en) 2006-08-18 2010-07-06 Isilon Systems, Inc. Systems and methods for allowing incremental journaling
US7680836B2 (en) 2006-08-18 2010-03-16 Isilon Systems, Inc. Systems and methods for a snapshot of data
US7590652B2 (en) 2006-08-18 2009-09-15 Isilon Systems, Inc. Systems and methods of reverse lookup
US8402201B2 (en) 2006-12-06 2013-03-19 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery in solid-state storage
US20080155191A1 (en) 2006-12-21 2008-06-26 Anderson Robert J Systems and methods for providing heterogeneous storage systems
US8286029B2 (en) 2006-12-21 2012-10-09 Emc Corporation Systems and methods for managing unavailable storage devices
US7593938B2 (en) 2006-12-22 2009-09-22 Isilon Systems, Inc. Systems and methods of directory entry encodings
US7509448B2 (en) 2007-01-05 2009-03-24 Isilon Systems, Inc. Systems and methods for managing semantic locks
US8966080B2 (en) 2007-04-13 2015-02-24 Emc Corporation Systems and methods of managing resource utilization on a threaded computer system
US7779048B2 (en) 2007-04-13 2010-08-17 Isilon Systems, Inc. Systems and methods of providing possible value ranges
US7900015B2 (en) 2007-04-13 2011-03-01 Isilon Systems, Inc. Systems and methods of quota accounting
US7966289B2 (en) 2007-08-21 2011-06-21 Emc Corporation Systems and methods for reading objects in a file system
US7949692B2 (en) 2007-08-21 2011-05-24 Emc Corporation Systems and methods for portals into snapshot data
US7882068B2 (en) 2007-08-21 2011-02-01 Isilon Systems, Inc. Systems and methods for adaptive copy on write
US7783666B1 (en) 2007-09-26 2010-08-24 Netapp, Inc. Controlling access to storage resources by using access pattern based quotas
US7949636B2 (en) 2008-03-27 2011-05-24 Emc Corporation Systems and methods for a read only mode for a portion of a storage system
US7984324B2 (en) 2008-03-27 2011-07-19 Emc Corporation Systems and methods for managing stalled storage devices
US7953709B2 (en) 2008-03-27 2011-05-31 Emc Corporation Systems and methods for a read only mode for a portion of a storage system
US7870345B2 (en) 2008-03-27 2011-01-11 Isilon Systems, Inc. Systems and methods for managing stalled storage devices

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101320445B (zh) * 2006-11-28 2013-03-27 国际商业机器公司 合并分布式电子邮件的方法和系统
US9665434B2 (en) 2007-10-25 2017-05-30 Hewlett Packard Enterprise Development Lp Communicating chunks between devices
US8782368B2 (en) 2007-10-25 2014-07-15 Hewlett-Packard Development Company, L.P. Storing chunks in containers
US8959089B2 (en) 2008-04-25 2015-02-17 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
CN106446095A (zh) * 2009-06-25 2017-02-22 Emc公司 用于提供数据的长期存储的系统和方法
CN106446095B (zh) * 2009-06-25 2020-01-21 Emc公司 用于提供数据的长期存储的系统和方法
US8904128B2 (en) 2011-06-08 2014-12-02 Hewlett-Packard Development Company, L.P. Processing a request to restore deduplicated data
CN103116471A (zh) * 2011-08-30 2013-05-22 夏普株式会社 图像处理装置
CN102385623A (zh) * 2011-10-25 2012-03-21 曙光信息产业(北京)有限公司 一种分布式文件系统中目录的存取方法
CN102385623B (zh) * 2011-10-25 2013-08-28 曙光信息产业(北京)有限公司 一种分布式文件系统中目录的存取方法
CN102541985A (zh) * 2011-10-25 2012-07-04 曙光信息产业(北京)有限公司 一种分布式文件系统中客户端目录缓存的组织方法
CN103106213A (zh) * 2011-11-14 2013-05-15 中国科学院声学研究所 一种基于文件和数据块两级粒度的副本替换方法及系统
CN103106213B (zh) * 2011-11-14 2016-11-23 中国科学院声学研究所 一种基于文件和数据块两级粒度的副本替换方法及系统
CN103617293A (zh) * 2013-12-16 2014-03-05 北京航空航天大学 一种面向海量小文件存储系统的Key-Value存储方法
CN105162847B (zh) * 2015-08-10 2018-05-08 电子科技大学 分布式流数据存储系统的存储资源规划方法
CN105162847A (zh) * 2015-08-10 2015-12-16 电子科技大学 分布式流数据存储系统的存储资源规划方法
CN107391027A (zh) * 2016-05-03 2017-11-24 三星电子株式会社 廉价磁盘冗余阵列存储设备及其管理方法
CN107391027B (zh) * 2016-05-03 2022-03-22 三星电子株式会社 廉价磁盘冗余阵列存储设备及其管理方法
CN110383251A (zh) * 2017-03-28 2019-10-25 株式会社日立制作所 存储系统、计算机可读记录介质、系统的控制方法
CN110915161A (zh) * 2017-07-12 2020-03-24 惠普发展公司,有限责任合伙企业 存储器设备的迁移
CN109426587A (zh) * 2017-08-25 2019-03-05 杭州海康威视数字技术股份有限公司 一种数据恢复方法及装置
CN110058960A (zh) * 2018-01-18 2019-07-26 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品
WO2020125362A1 (zh) * 2018-12-18 2020-06-25 深圳先进技术研究院 文件系统及数据布局方法
CN114428764A (zh) * 2022-01-26 2022-05-03 重庆紫光华山智安科技有限公司 文件写入方法、系统、电子设备及可读存储介质
CN114428764B (zh) * 2022-01-26 2024-04-02 重庆紫光华山智安科技有限公司 文件写入方法、系统、电子设备及可读存储介质
CN116069753A (zh) * 2023-03-06 2023-05-05 浪潮电子信息产业股份有限公司 存算分离方法、系统、设备及介质

Also Published As

Publication number Publication date
WO2004046971A1 (en) 2004-06-03
JP4464279B2 (ja) 2010-05-19
EP2284735A1 (en) 2011-02-16
AU2003291014A1 (en) 2004-06-15
EP2299375A2 (en) 2011-03-23
JP5096441B2 (ja) 2012-12-12
EP1563411A1 (en) 2005-08-17
JP2010044789A (ja) 2010-02-25
US20040153479A1 (en) 2004-08-05
EP2299375A3 (en) 2012-02-01
JP2006506741A (ja) 2006-02-23
EP1563411A4 (en) 2008-06-04
EP1563411B1 (en) 2013-06-19
CN1692356B (zh) 2014-06-04
US7937421B2 (en) 2011-05-03

Similar Documents

Publication Publication Date Title
CN1692356A (zh) 对分布式文件系统中的文件重新条带化的系统和方法
CN1547714A (zh) 提供用于在存储设备的分布式文件系统中进行信息追踪的元数据的系统和方法
CN1297933C (zh) 执行合并处理和注册/删除处理的全文搜索装置
CN1126357C (zh) 用于在通信网络中的数据采集和处理系统
CN1498367A (zh) 信息处理装置、存储器管理装置、存储器管理方法及信息处理方法
CN1679026A (zh) Web服务设备和方法
CN1722108A (zh) 磁盘驱动器、其控制方法以及磁盘伪造的探测方法
CN1684029A (zh) 存储系统
CN1265274C (zh) 存储设备控制装置和存储设备控制装置的控制方法
CN1617152A (zh) 内容共享系统;内容处理设备;信息处理设备及内容共享方法
CN1882906A (zh) 在数据存储器中保持临时数据的系统和方法
CN1581877A (zh) 存储系统
CN1190741C (zh) 用于支持数据事务的设备和方法
CN1922571A (zh) 数据运行编程
CN1315017A (zh) 包含内部引用的两种版本数据表格之间的差别提取
CN1959598A (zh) 存储控制装置、数据管理系统及数据管理方法
CN1773510A (zh) 存储器管理系统与方法以及程序
CN101075177A (zh) 计算机系统
CN1826593A (zh) 通过网络以事务形式办理文件操作的方法与系统
CN1846419A (zh) 自管理媒介信息流
CN1517906A (zh) 文件系统及文件管理方法
CN1753368A (zh) 为远程差异压缩寻找候选对象的有效算法
CN1702634A (zh) 便利无环境主机干预下的可分页模式虚拟环境存储管理
CN1909103A (zh) 信息处理装置、再现装置、通信方法和计算机程序
CN1692354A (zh) 信息管理系统、信息处理设备、信息处理方法、信息处理程序、和存储介质

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
CX01 Expiry of patent term

Granted publication date: 20140604

CX01 Expiry of patent term