CN1664790A - 增加数据存储容量的方法和装置 - Google Patents
增加数据存储容量的方法和装置 Download PDFInfo
- Publication number
- CN1664790A CN1664790A CN2005100511192A CN200510051119A CN1664790A CN 1664790 A CN1664790 A CN 1664790A CN 2005100511192 A CN2005100511192 A CN 2005100511192A CN 200510051119 A CN200510051119 A CN 200510051119A CN 1664790 A CN1664790 A CN 1664790A
- Authority
- CN
- China
- Prior art keywords
- bunch
- data unit
- behavior
- storage
- computer
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了用于增加数据存储环境的存储容量的环境及方法。在不影响每一单个存储簇的性能的情况下可添加另外的存储簇到存储环境。当数据被写到存储环境时,可进行哪一存储簇用以保存数据的选择。当从存储环境读数据时,可确定哪一存储簇在保存数据且可从该存储簇检索数据。
Description
技术领域
本发明涉及数据存储,特别是涉及用以增加数据存储容量的方法和装置。
背景技术
数据存储***的容量和性能依赖于存储***的物质资源。例如,存储***能够存储的数据量依赖于存储***拥有的物理存储设备的数量和容量。由于存储在存储***上的数据量接近存储***的存储容量,因而可能希望通过向存储***添加另外的物理存储设备而增加存储***容量。然而,有由存储***的硬件结构强加在存储***可具有的存储设备数量上的物理限制。因而,当存储***接近其存储容量时,则不再可能或合乎需要地添加更多的物理存储设备到存储***,而是,如果希望增加存储容量,则使用一个或多个另外的存储***。
发明内容
一说明性的实施例致力于保存在存储环境中的数据单位的存取方法,存储环境包括多个存储簇。该方法包括:从主机接收请求以查找先前存储在存储环境中的数据单位;及响应于请求的接收,确定数据单位存储在多个存储簇的哪一个上。另一说明性的实施例致力于至少一编码以指令的计算机可读的介质,当其在计算机***上运行时,执行上述方法。
另一说明性的实施例致力于用于存储数据的装置。该装置包括:输入设备,其从主机接收请求以查找存储环境中的多个存储簇中的至少之一上的数据单位;及至少一连接到输入设备的控制器,其从输入设备接收请求,并响应于请求的接收,确定数据单位存储在多个存储簇的哪一个上。
另一说明性的实施例致力于保存在存储环境中的数据单位的存取方法,存储环境包括多个存储簇,存储环境存储用于主机的数据。该方法包括:从在主机上运行的应用程序接收请求以存储数据单位;及响应于请求的接收,选择多个存储簇之一保存数据单位,其以对应用程序透明的方式保存,使得应用程序不会被使得意识到所选择的多个存储簇之一保存数据单位。另一说明性的实施例致力于至少一编码以指令的计算机可读的介质,当其在计算机***上运行时,执行上述方法。
另一说明性的实施例致力于存储数据的装置。该装置包括:输入设备,其从在主机上运行的应用程序接收请求以将数据单位保存在存储环境中的多个存储簇中的至少之一上;及至少一连接到输入设备的控制器,其从输入设备接收请求,并响应于请求的接收,选择多个存储簇之一来保存数据单位,其以对应用程序透明的方式保存,使得应用程序不会被使得意识到所选择的多个存储簇之一保存数据单位。
另一说明性的实施例致力于保存在存储环境中的数据单位的存取方法,存储环境包括多个存储簇,存储环境存储用于主机的数据。该方法包括:从在主机上运行的应用程序接收请求以存储数据单位;选择多个存储簇之一来保存数据单位;将数据单位保存在多个存储簇中所选择的那个簇上,且不保存标识所选择簇的信息。另一说明性的实施例致力于至少一编码以指令的计算机可读的介质,当其在计算机***上运行时,执行上述方法。
另一说明性的实施例致力于存储数据的装置,包括:输入设备,其从在主机上运行的应用程序接收请求以将数据单位保存在存储环境中的多个存储簇中的至少之一上;及至少一连接到输入设备的控制器,其从输入设备接收请求,选择多个存储簇之一来保存数据单位,将数据单位保存在多个存储簇中所选择的那个簇上,且不保存标识所选择簇的信息。
附图说明
图1为本发明的实施例可实施于其上的分布式存储环境的框图。
图2为根据本发明的一实施例,主机经API与多个存储环境或簇交互作用的框图。
图3为根据本发明另一实施例,主机经外部设备与多个存储簇交互作用的框图。
图4为根据本发明另一实施例,主机与包括多个存储簇的存储环境交互作用的框图。
图5为根据本发明一实施例,数据可被保存在存储环境上的示例性方式的框图。
图6为根据本发明一实施例,使用固有位置来确定数据单位在多个簇之间的存储位置的框图。
图7为可用于存取根据本发明一实施例保存的数据的内容地址的示意图。
图8为根据本发明一实施例,产生用于查找保存在多个簇之一中的数据的位置标识符的示意图。
图9为根据本发明一实施例,定位多个二进制大对象(blob)的内容描述符文件(CDF)的示意图,其可使用于本发明的各方面可使用在其上的可内容寻址的环境中。及
图10为根据本发明一实施例,可用于追踪用于将数据保存在多个存储簇中的存储算法的示例性记录的示意图。
具体实施方式
在此描述的本发明的各方面的一个应用涉及分布式存储环境中的可内容寻址的存储,存储环境包括多个互联的独立节点。这样的环境在表1中所示的美国申请中有所描述,其中每一个均通过引用的方式全部组合于此。表1中所列的申请在此被整体称为相关申请。
表1
标题 | 序号 | 申请日期 |
可内容寻址的信息、压缩、表示、及传送 | 09/236,366 | 1999年1月21日 |
在网络上使用可内容寻址的数据 | 09/235,146 | 1999年1月21日 |
用于可内容寻址的信息的安全存储传送及检索的***和方法 | 09/391,360 | 1999年9月7日 |
存储***中的数据保持方法和装置 | 10/731,790 | 2003年12月9日 |
帮助使用数据存储***中的内容的方法和装置 | 10/731,613 | 2003年12月9日 |
在数据存储***中缓存位置索引的方法和装置 | 10/731,796 | 2003年12月9日 |
用于分列内容地址以帮助数据存储***中的物理存储位置的选择的方法和装置 | 10/731,603 | 2003年12月9日 |
用于产生内容地址以指示即将写到存储***的数据单位的方法和装置 | 10/731,845 | 2003年12月9日 |
用于修改存储***中的数据保持周期的方法和装置 | 律师卷号:E0295.70195US00;尚未分配序号 | 2004年1月21日 |
用于延长存储***中的数据保持周期的方法和装置 | 律师卷号:E0295.70200US00;尚未分配序号 | 2004年1月21日 |
用于间接识别存储***中的数据保持周期的方法和装置 | 律师卷号:E0295.70201US00;尚未分配序号 | 2004年1月21日 |
用于间接识别存储***中的数据保持周期的方法和装置 | 律师卷号:E0295.70202US00;尚未分配序号 | 2004年1月21日 |
图1所示为分布式存储环境100的例子。分布式存储环境100包括多个存取节点101a-101c和多个存储节点103a-103e。存取节点可接收并响应于来自主机105的存取请求,存储节点103可保存由主机105发送到存储环境100的数据。存取节点101和存储节点103可通过网络(未示出)连接并在网络上通信,使得每一节点可使其出现在网络上为其它节点知道。如此,节点可一起工作以处理存取请求并为主机105保存数据。
每一节点可包括处理资源(如处理器及存储器)及存储设备。节点相互通信以保存数据、响应于存取请求、及执行其它环境功能。对存储环境的用户(如主机105或运行于其上的应用程序),存储环境可表现为单个实体。即,用户不需要意识到存储环境包括多个分开的节点或某一数据单位保存或镜像在哪一存储节点上。
要增加存储环境100的存储容量,可添加或连接更多的存储节点到网络。这些另外的存储节点可使其存在在网络上公知,因而允许存取节点101在保存数据时使用这些另外的存储器。添加更多的存储节点到存储网络而不增加存取节点的数量可导致存取节点成为存储环境的瓶颈并使得性能降级。因此,可能希望在增加存储节点的数量的同时也增加存取节点的数量。
存储环境100可执行在上面引用的相关申请中描述的多个功能,如响应于来自主机105的写请求确定将数据保存在哪一存储节点103上、响应于来自主机105的读请求确定数据保存在哪一存储节点103上、执行可能从存储环境删除的数据的无用存储单元的收集、实施指明数据不应被从存储环境删除的时间段的保持周期、镜像数据(即,在存储环境的不同节点上创建一个或多个镜像拷贝)、自愈以补偿一个或多个节点的失效、及其它功能。这样的功能可由存储节点、存取节点、或二者一起执行,且执行这样的功能可导致节点间的网络流通量。
例如,要执行自愈功能,当节点失效时,其它节点可检测到该失效。作为响应,环境100可将对保存在失效节点上的数据的存取请求重新指引到保存有该数据的镜像拷贝的其它节点,并可建立另一镜像以用于连续的容错。节点可在网络上传播其存续的消息以表明其是运行的且尚未失效。如果来自该节点的存续消息未被其它节点接收到,则其它节点可确定该节点已失效。添加更多的节点到存储环境导致更多的存续消息在网络上传输,因而导致更多的网络流通量。
作为另一例子,存储环境100可保持索引,如在相关中请中描述的二进制大对象位置索引(BLI),以帮助查找数据。BLI可指明数据单位保存在哪一存储节点上。网络中的每一存取或存储节点可负责管理BLI的一部分。由于BLI可跨存取和/或存储节点分布,当数据单位写到存储环境或从存储环境删除时维护和更新BLI可导致在节点间产生网络流通量。添加更多的节点可导致BLI的管理责任在大量节点之间共享,从而导致大量网络流通量产生。
其它功能,包括相关申请中描述的部分功能,如执行无用存储单元收集、查找存储环境上的内容(如经发向所有节点的广播消息)、重新排列BLI(即,当添加或从存储环境去除节点时),均可因添加节点到存储环境而导致大量网络流通量。该增加的网络流通量可导致存储环境的性能降级。
如上所述,存储节点103可被添加到存储环境以增加存储环境的存储容量。另外,可添加存取节点101以抵消因添加额外的存储节点而导致的性能降级。然而,申请人已意识到,因为添加存取节点和存储节点导致网络流通量增加,一旦存储环境中的节点数达到某一数量,通过添加另外的节点获得的性能好处至少部分被存储环境中的节点产生的网络流通量增量及用在执行支撑存储环境的体系结构功能(如上述的)中的处理资源增量抵消。因而,当另外的节点添加到存储环境以增加存储容量和/或性能时,存储环境的整个性能的增长可能少于预期,在某些情况下甚至可能降低。该性能影响在下面被称为性能降级,该术语使用于此不仅指实际的性能降低,还指少于预期的性能改善,其中性能改善是通过另外的存储资源的添加而获得。
本发明的一实施例致力于提供另外的存储簇,其一起工作以提供组合的存储器,但这些存储簇是相互独立的,从而在一簇中添加另外的存储节点不会对其它簇产生上述的性能降级问题。如在此所使用的,术语存储簇指一组一个或多个互联的节点,它们共享至少一逻辑上连接它们的软件实用程序。例如,存储簇的节点可共享自愈软件实用程序,使得簇中的节点监控由该簇中其它节点传输的存续消息,但不监控该簇外的节点传输的消息。节点还可共享共用的BLI,使得一存储簇的节点还可或另外共享其它实用程序,如无用存储单元收集实用程序和/或追踪保存在簇中的数据被镜像在哪里的数据镜像实用程序。在一实施例中,簇中的每一节点知道簇中的每一其它节点的地址(如IP地址),尽管本发明不限于该方面。
由于存储簇中的节点不与簇外的节点(如不同的存储簇中的节点)共享软件实用程序,在一存储簇内的内部网络流通量和节点处理资源的使用不会影响任何其它存储簇的性能。因此,另外的存储簇可被添加到存储环境以增加存储容量,但不经受上述的性能降级问题。
应意识到的是,可在簇中的节点间共享(但不在不同的簇中的节点之间共享)的软件实用程序的类型的描述仅提供用于阐述的目的,且在此描述的本发明的各方面不限于在存储环境中使用,其中存储簇中的节点共享上述的特定类型的软件实用程序或任何其它特定类型的软件实用程序。类似地,具有如相关申请中描述的那些特征的存储环境的例子在此被描述仅用于说明目的,应该意识到的是,在此描述的本发明的各方面并不限于该方面,且可被使用在具有多种其它结构的存储环境中。例如,提及包括一个或多个互联节点的存储簇并不仅限于结合相关申请描述的存取节点和存储节点结构,节点可指任何设备或作为统一体一起运行的设备集合。
在本发明的一实施例中,多个存储簇以对存储环境的用户(如主机或运行于其上的应用程序)透明的方式安排,使得用户不需要知道特定的数据单位保存在哪一存储簇上以存取该数据单位。因而,保存数据到存储环境及从存储环境检索数据的应用程序可将多个存储簇当成一个存储环境,而不知道写到存储环境的数据被保存在哪一簇上。因此,在本发明的一实施例中,当应用程序(如主机上的)将数据单位的写请求发给存储环境时,确定数据单位将被写到哪一存储簇上;当应用程序发出读请求时,确定数据保存在哪一存储簇上,二者皆以对应用程序透明的方式进行。
对于确定将数据单位保存在哪一存储簇上及从适当的簇检索先前写入的数据单位的计算机***的各方面的实施,本发明不限于任何特定的实施技术。在一实施例中,这些功能可由主机上的应用程序接口(API)执行。该实施将在下面结合图2进行描述。
图2示出了与包括两个存储簇207a和207b的存储环境206进行通信的主机201。主机201运行读和写数据单位的应用程序203,应用程序接口(API)205适于与存储环境206接口。例如,主机201可以是提供资源(如数据存储、电子邮件、及其它服务)的服务器、客户端(如由用户操作的一般目的的计算机环境)、网络组件(如交换机)或任何其它类型的计算机。主机201通过通信链路213a和213b连接到存储环境206的存储簇207a和207b,从而主机201可使用存储环境206保存和检索数据。链路213a和213b可以是任何类型的通信链路,包括任何类型的网络或直接连接。
应用程序203可以是任何计算机应用程序,其为主机201的用户或管理员使用并将数据保存到存储环境206和/或从存储环境206检索数据。应用程序203与API205连接,从而应用程序203可使用API205与存储簇207进行通信。在一实施例中,应用程序203不需意识到存储环境206包括多个存储簇,因为簇207之间的数据存储的管理以对应用程序203透明的方式完成。
API205可以任何适当的方式实施。例如,API205可包括提供给应用程序203的程序员的计算机目标代码。计算机目标代码包括可用于与存储环境通信的例程。当与API205连接时,应用程序可调用这些例程以与存储环境206通信。API205可与任何数量的应用程序连接,并将应用程序203的程序员挡在存储环境206借以通信的内部协议之外。
当应用程序203调用API205的例程以写数据到存储环境206时,API205可选择存储簇保存数据并将包括数据的写请求209发送给适当的存储簇。存储簇的选择可通过使用任何适当的技术实现。例如,API205可采用循环(round-robin)方案,存储环境中的簇借此而被顺序选择以用于每一写请求。在图2的例子中,为处理写请求,API205可在存储簇207a和存储簇207b的选择之间交替。或者,API205可基于每一存储簇上的可用存储容量、每一存储簇上的负荷、将要保存的数据的大小或类型、或任何其它适当的标准来选择存储簇保存数据。存储簇上的负荷可基于下述因素确定:有多少对象(如二进制大对象或CDF)正由存储簇处理、存储簇的CPU有多忙、存储簇的磁盘有多忙、和/或任何其它适当的因素。
当应用程序203调用API205的例程以从存储环境读先前保存的数据单位时,API205可确定所请求的数据单位被保存在哪一存储簇上。这可以任何适当的方式完成。例如,API205可保存指明每一数据单位保存在哪一簇上的信息。当然,在另一实施例中,没有这样的信息被保存,且API205响应于读请求确定数据保存在哪里。
在一实施例中,API205发送识别所请求的数据单位的指令给存储环境中的每一存储簇并请求存储簇确定所指明的数据单位是否保存在该簇上。指令可以是读指令、或不寻求读数据单位但仅确定其保存在哪一簇上的指令(在此称为“存在指令”)。
指令可串行或并行发送给存储簇,因为本发明并不限制这方面。例如,如果串行发送指令,API205可首先发送存在指令211给存储簇207a。如果簇207a做出数据单位保存于其中的响应,API205接着将对该数据单位的读请求发送给存储簇207a且不需要发送任何另外的存在指令给其它簇。如果簇207a做出数据单位未被保存于其中的响应,则API205发送另一存在指令215给簇207b。如果簇207b做出所指明的数据单位保存于其中的响应,API205可发送对数据单位的读请求给簇207b。如果API205以并行方式发送存在指令,则存在指令211和存在指令213可在大约相同的时间分别发送给簇207a和207b。当存储簇之一响应于API205确认所指明的数据单位保存于其中时,则API205可发送数据单位的读请求给该存储簇。如上所述,代替采用存在指令之后为读请求的方式,API205可以串行或并行方式仅发出读请求给存储簇(即不发出存在指令)。
以并行方式发送存在指令或读请求提供下述优点:在查找数据单位方面所花的时间得以减少,因为每一簇同时执行数据单位的搜索。然而,这些同时发生的搜索消耗每一簇上的处理资源(因而影响性能),即使这样的搜索在大多数存储簇上会失败。相反,串行发送存在或读指令可增加查找数据单位所花的时间,因为存在指令在前一存储簇上的搜索未完成之前不会发送给下一存储簇,但存储环境的性能不会受到很大影响,因为部分簇在存在指令或读指令发送给这些簇之前将不需要执行已发现的数据单位的搜索。每一簇内的搜索可以任何适当的方式进行,因为本发明不限制该方面。搜索技术的例子在上面提及的相关申请中有所描述。
为减少在搜索数据单位时由存储簇引起的整个处理负荷,API205可配合分层搜索方法,其中簇在初始执行相对粗略的(且非计算集中的)搜索,仅在必要时(如,在所有簇之间的粗略搜索均未导致成功搜索时)才执行更彻底的搜索。
例如,如相关申请中所述,每一簇可包括识别保存在簇上的部分数据单位的BLI。相对粗略的搜索可包括,在开始仅搜索簇中的BLI,其相对较快且比较廉价。如果环境中的所有簇的BLI搜索(或串行或并行)均失败,则执行更彻底的搜索。应该意识到的是,BLI搜索仅是实现相对粗略的搜索的技术的一个例子,也可使用其它技术,因为采用分层搜索方法的本发明的各方面并不限制在这方面。另外,应意识到的是,在此描述的本发明的各方面不限于与具有相关申请中所示的结构的存储环境一起使用,且不限于采用BLI的存储簇。
在图2的例子中,存储环境206被展示为具有两个存储簇。应该意识到的是,这仅作为例子给出,因为存储环境206可包括三个或更多存储簇,因为本发明并不限制在该方面。类似地,图2仅示出了一个主机201,其发送数据给存储环境206并从存储环境206接收数据。然而,应该意识到的是,存储环境206可与许多主机一起工作,因为本发明不限制在该方面。
在上述的环境中,涉及存储簇的选择以保存数据、和/或确定哪一簇保存有先前写入的数据单位的本发明的各方面均通过API实施。然而,应该意识到的是,该阐述仅提供用于说明性的目的,因为本发明不限制在该方面。如上所提及的,本发明的一说明性的实施例的优点在于:多个簇之间的存储环境的实施对主机上运行的应用程序是透明的,使得应用程序甚至不需要意识到多个簇的存在。然而,本发明的其它方面并不限制在该方面,即多个簇的管理也可以对应用程序不透明的方式实施。另外,无论多个簇的管理对应用程序是透明还是不透明,这样的管理不必须以上述的方式在API中实施,因为其也可在计算机***的其它位置中实施。例如,在本发明的一实施例中,多个簇的管理可在簇自身内实施。在该实施例中,API仅可看见一个簇,但簇能够在它们自己之间通信以管理多个簇之间的数据分布。或者,API可看见所有簇的所有存取节点,但并不意识到这些节点被分开在两个或更多簇之间,使得API可发送任何存取请求给任何存取节点,不管存取节点形成哪一簇的一部分。在本发明的另一实施例中,多个簇的管理可在独立于任何簇并独立于主机的设备中实施。设备可采用多种形式之一,且可以是形成用于使主机与存储簇互联的网络的一部分的网络组件(如路由器)。
图3提供了实施例的一例示性表示,其中确定将数据单位保存在哪一存储簇上(写请求的情况)及确定先前写入的数据单位保存在哪一存储簇上(读请求的情况)是由设备303进行。设备303接收从主机301到存储环境305的存取请求。设备303接着将存取请求发送给适当的存储簇。设备303可以是连接(如经网络)到主机301和存储环境305的计算机,其执行功能:允许在主机301上运行的应用程序访问作为单一存储环境的存储簇。或者,设备303可被包括在存储环境305内。
设备303可使用任何适当的技术来确定将数据单位保存在哪一存储簇上,及确定先前写入的数据单位保存在哪一存储簇上,因为本发明在该方面不限制。
从前述内容应该意识到的是,在图3的实施例中,在主机301上运行的应用程序或API甚至不必意识到存储环境305包括多个存储簇。另外,应用程序或API可将数据单位写到存储环境305或从存储环境305检索数据单位,无须知道特定的数据单位保存在哪里。主机可简单地发送存取请求给设备303,其接着确定将数据单位写在哪里或先前写入的数据单位保存在哪里。
在图3的例子中,存储环境305被展示为具有两个存储簇。应该意识到的是,这仅作为例子给出,因为存储环境305可包括三个或更多存储簇,因为本发明并不限制在该方面。类似地,图3仅示出了一个主机301,其发送数据给存储环境305并从存储环境305接收数据。然而,应该意识到的是,存储环境305可与许多主机一起工作,因为本发明不限制在该方面。另外,尽管图3仅描绘了一个设备303工作于主机301和存储环境305之间,也可使用多个设备。如此,可避免这样的瓶颈,其中到存储环境的所有存取请求均由一个设备处理。另外,尽管在图2的例子中,API被采用来在主机和存储环境之间通信,本发明的一些实施例不要求使用API并可允许应用程序与存储环境直接通信。
图4提供了实施例的一例示性表示,其中存储簇自身可确定将数据单位保存在哪一存储簇上(写请求的情况)及确定先前写入的数据单位保存在哪一存储簇上(读请求或删除请求的情况)。在图4的例子中,主机401与包括两个存储簇405a和405b的存储环境403通信。存储簇405a包括多个存取节点407a-c和多个存储节点411a-d,存储簇405b包括多个存取节点409a-c和多个存储节点413a-c,与上面结合图1所述的方式大致相同。在本发明的该实施例中,至少一存储簇知道存储环境中其它存储簇的存在,但每一簇均是独立的簇(如每一簇具有独立的软件实用程序)。如图4中标记421处所示,在簇405a和405b之间有通信路径以使它们能够通信。该通信路径可以任何适当的方式实施,因为本发明在该方面不限制。
当存取节点407或409接收检索数据单位的请求时,存取节点可确定所请求的数据单位是否保存在其自己的簇中。如果没有,存取节点可发送存在指令和/或读指令给存储环境中的其它存储簇,或串行或并行,以与上述大致一样的方式。
在主机401上运行的应用程序可发送(如经API)存取请求给存储簇405a和405b的存取节点407和409。在一实施例中,应用程序和/或API不知道存取节点407和409属于不同的存储簇。根据应用程序和/或API,存取节点407和409可接收存取请求,不管哪一存储簇保存所请求的数据单位。实际上,应用程序和/或API甚至不必知道存储环境包括多个存储簇,因为,在本发明的一实施例中,数据保存在存储环境上的哪里对应用程序和/或API是透明的。
当存取节点407或409从主机401接收写数据单位的请求时,存取节点可确定是否将数据单位保存在其自己的簇上或发送数据单位给另一簇用于保存。这样的确定可基于任何适当的因素进行,这些因素的例子已在上面给出(如循环方案、将要保存的数据的大小或类型、每一存储簇上的可用容量、每一存储簇上的当前处理负荷)。
或者,代替允许应用程序和/或API发送请求给存储环境中的任何存取节点,应用程序和/或API可仅被允许发送存取请求给一个存储簇(如簇405a)的存取节点。该存储簇的存取节点接着负责将数据写到存储簇或从存储簇检索数据,和/或存储环境中的其它存储簇,其中存取节点不是该存储簇的一部分。
在一实施例中,本发明的各方面可用于相关申请中所述的可内容寻址的存储(CAS)环境。在可内容寻址的存储环境中,数据通过使用基于数据自身的内容而产生的内容地址保存。内容地址可通过对将被保存的数据应用散列函数而产生。散列函数的输出可用作内容地址的至少一部分,其用在主机和存储环境之间的通信以指引数据。内容地址可被映射(如存储环境内)到存储环境内的一个或多个物理存储位置。
在CAS应用程序定义的体系结构中的数据单位被称为二进制大对象。如图5中所示,二进制大对象503可以是将由主机保存在存储环境(如存储环境105)上的二进制数据单位,如病人x光照片、公司财务记录、或任何其它类型的数据。当二进制大对象503被保存到可内容寻址的存储环境时,基于其内容可产生二进制大对象503的唯一地址。
每一二进制大对象503具有至少一与其关联的内容描述符文件(CDF)501。CDF501可包括元数据505和多个索引507a、507b、…、507n。CDF可索引一个或多个二进制大对象或其它CDF。因此,索引507可以索引二进制大对象和/或由CDF501索引的CDF。元数据505可包括CDF501的创建日期(如CDF501被保存在存储环境上的日期)、二进制大对象503的内容的描述、和/或其它信息。
如上所述,存储环境可采用无用存储单元收集实用程序清除可删除的二进制大对象及CDF。在相关申请中描述的***的一种实施方式中,二进制大对象或CDF在其未被任何CDF索引时即可以删除。
二进制大对象及它们对应的CDF可分开写到存储环境。根据本发明的一实施例,二进制大对象及索引其的CDF可被保存在不同的存储簇上。当用在采用无用存储单元收集实用程序的***上时这可能带来挑战,其中无用存储单元收集程序依赖于指向二进制大对象的CDF不存在以删除二进制大对象,且响应于CDF的删除而更新任何先前索引的二进制大对象从而删除指向CDF的指针。例如,当CDF被删除且其索引的任何二进制大对象保存在不同的存储簇上时,无用存储单元收集实用程序可首先搜索所索引的二进制大对象的CDF保存于其上的存储簇。当在该存储簇上没有发现所索引的二进制大对象时,可在其它存储簇上查找二进制大对象(如经存在指令和/或读请求),并向保存二进制大对象的存储簇指示:被删除的CDF的索引应被去除。在簇之间通信方面,该过程可导致很高的额外开销。此外,在某些实施例中,可能希望每一存储簇不知道存储环境中还有其它相关的存储簇,使得在CDF被删除时,对于索引的二进制大对象,簇不知道指望其它簇。
在本发明的一实施例中,上述挑战通过将二进制大对象和索引二进制大对象的CDF保存在同一存储簇上而得以减轻。这可以任何适当的方式实现。例如,可使用上面结合附图2-4所述的相同布局算法,但二进制大对象及索引二进制大对象的CDF在单独写事务处理时可被写到存储环境,使得二进制大对象及CDF可被写到同一存储簇。在随后的时间,如果索引二进制大对象的另外的CDF被写到存储环境,确定用于保存另外的CDF的位置的实体(如API、设备或存储簇)可首先确定哪一存储簇保存二进制大对象,并接着将另外的CDF保存在相同的存储簇上。
在本发明的一实施例中,设备程序通过仅保存CDF的内容地址而追踪先前保存的数据,但不追踪其索引的二进制大对象的内容地址,因为该信息可从对应的CDF检索。因而,要存取二进制大对象,应用程序可请求索引二进制大对象的CDF的检索。应用程序可接收所请求的CDF并确定由CDF索引的二进制大对象的内容地址。应用程序接着可使用该内容地址发送用于二进制大对象的读请求。在本发明的一实施例中,因为二进制大对象和CDF均被保存在相同的存储簇上,发送CDF的读请求的实体可将二进制大对象的读请求发送给相同的存储簇,无须执行搜索来确定哪一存储簇保存二进制大对象。
在本发明的另一实施例中,代替使用搜索技术来查找保存在存储环境上的数据,可使用公知的固有位置寻址的概念。固有位置寻址涉及基于数据单位的内容地址将数据单位放置在特定的存储簇上。因而,当数据单位随后被读取时,不必执行搜索来确定数据单位保存在哪一存储簇上。而是,保存数据单位的存储簇可基于数据单位的内容地址而再次被确定。
例如,选择的内容地址位可用于将数据单位保存在哪一存储簇上。每一存储簇可被分配以将要保存的地址范围。例如,数据单位的内容地址的第一字符可确定数据单位将被保存在哪一存储簇上。图6的存储环境包括三个存储簇。当第一字符是“A”-“I”时,数据单位可被保存在存储簇601上,当第一字符是“J”-“R”时,保存在存储簇603上,当第一字符是“S”-“Z”时,保存在存储簇605上。应该意识到的是,该例子是说明性的,并不是限制性的。例如,不必须是第一字符被检查以确定存储簇,范围可不同于所示的范围,使得它们不必是大约相同的大小且不必邻接。
如上所述,数据单位的内容地址可基于,至少部分基于数据单位的内容地址,并可以任何适当的方式产生,因为本发明在这方面不限制。例如,数据单位可使用散列算法如MD5而被散列,以产生内容地址的一部分。内容地址可包括其它信息如时间戳,其指明数据单位是何时被首次写到存储环境的,和/或保证的唯一标识符(GUID),其确保内容地址是唯一的,如相关申请中所述。因此,如图7中所示,内容地址701可包括散列值、时间戳、及GUID。
在某些情况下,将被写入的数据单位可能太大而不能在希望选择存储簇上的存储位置来保存数据单位之前计算散列值。例如,存储环境可能不具有足够大的缓冲器来在计算数据单位的散列的同时保存全部数据单位。因此,在本发明的一实施例中,采用技术来使能在内容地址的散列值被计算以前选择存储簇之一中的存储位置。
在某些情形下,因为散列值可能不可用于选择保存数据单位的存储簇,因而希望使用内容地址的另一部分(如时间戳或GUID部分)来选择适当的存储簇。如相关申请中所述,使用时间戳信息在提供数据单位的索引的暂时位置方面可能是有利的,其在大致相同的时间内被写入存储***如一簇。然而,希望不使所有数据单位在大约相同的时间被写到相同的簇,因为这将通过阻止簇并行处理写请求而对性能产生负面影响。因此,如图8中所示,为确保用于选择存储簇的内容地址的部分(如时间戳)足够随机,内容地址的该部分可在标记803处使用算法(MD5或任何其它适当的算法)而被散列以产生位置标识符805。位置标识符805的部分807(或所有)可用于确定哪一存储簇应被用于保存数据单位。如此,可采用散列算法的伪随机,使得部分807足够随机以具有用于同时被写的数据单位的跨存储簇的偶分布。
在一实施例中,位置标识符805未被保存来帮助检索数据单位。而是,当希望读数据单位时,内容地址的部分801可被再次散列以产生位置标识符805,且位置标识符的部分807可用于确定数据单位保存在哪一存储簇上。
应该意识到的是,当发出数据单位的读请求时,用以选择存储簇来保存数据单位的固有位置寻址技术的使用避免了执行搜索来查找数据单位的需要。
应该意识到的是,当与如上所述的采用二进制大对象、CDF、及无用存储单元收集使用程序的可内容寻址的存储***一起使用时,固有位置寻址技术的使用可导致二进制大对象及相应的CDF保存在不同的簇上,其可带来如上所述的挑战。因此,本发明的一实施例致力于使用固有位置选择存储簇保存数据单位的技术与确保CDF及其索引的二进制大对象保存在相同存储簇上的技术的结合。在一实施例中,确保二进制大对象及其CDF保存在相同簇上的技术包括:在CDF及其索引的二进制大对象的内容地址中使用共同的标识符,及使用该共同的标识符确定将CDF及其索引的二进制大对象保存在哪一存储簇上。
例如,CDF及其索引的二进制大对象在它们的内容地址中可被提供以相同的GUID。该GUID的一部分(或GUID的散列的一部分)可用于确定将数据单位保存在哪一存储簇上,使得具有相同的GUID的CDF及二进制大对象将映射到相同的存储簇。例如,图9示出了索引两二进制大对象903和905的CDF901。根据本发明的一实施例,这三个数据单位按如下保存在相同的存储簇上。首先,应用程序(如图2中的203)将二进制大对象903发送给存储环境。在主机201具有API以与存储环境接口的那些实施例中,API可产生作为二进制大对象903的内容地址的一部分的GUID。用于选择存储簇的设备(如API205、设备303、或簇之一)可选择将二进制大对象903保存在哪一存储簇上。应用程序接着将二进制大对象905发送给API。因为API尚未接收到CDF,API认可二进制大对象903和905是同一事务处理的一部分(即二者为同一CDF索引)并可在二进制大对象905的内容地址中使用相同的GUID。从而,二进制大对象903和905将被保存在相同的存储簇上。应用程序接着将CDF901发送给API以保存在存储环境上。API对CDF的接收向API指明CDF是事务处理中的最后数据单位。因而,API分配相同的GUID给CDF901的内容地址,使得CDF901保存在与二进制大对象903和905相同的存储簇上。
在一实施例中,在没有通过相应的CDF存取二进制大对象的情况下,其不能由应用程序直接存取。因此,必须首先读CDF。根据该实施例,GUID可被包括在CDF的内容地址中并用于查找CDF保存在哪一存储簇上以有助于读CDF,但GUID不必被提供在二进制大对象的内容地址中,因为负责查找二进制大对象被保存在哪一存储簇上的实体将认为二进制大对象被保存在与先前读取的CDF相同的存储簇上。
当新的存储簇被添加到存储环境时,可能希望改变用于确定数据单位被保存在哪一存储簇上的选择算法,使得得到跨所有存储簇的数据单位的偶分布。例如,如果在存储环境中有三个存储簇,选择算法如GUID(在内容地址中)模数3可用于确定内容保存在哪一存储簇上。如果第四存储簇被添加,则可能希望将算法改变为GUID模数4。然而,如果在添加新的簇之后,在读数据单位时,新算法被用于内容地址,在算法中的改变之前,新算法可能不会正确地查找已保存在存储环境上的数据单位。
因而,本发明的一实施例致力于保留指明什么样的算法正进行先前保存的数据单位的簇的选择的信息。在一实施例中,该信息在某些时间段期间识别所使用的选择算法。因为数据单位的内容地址可包括时间戳,所以时间戳信息可用于索引到该信息,以确定在数据单位被保存时是什么算法在其位。该算法可被应用于内容地址的适当部分以确定数据单位保存在哪一存储簇上。
指明在某些时间段期间使用什么算法的信息的例子如图10中所示。在图10中,行1001指明特定选择算法的时间帧,并指明算法从时间“-1”到时间“1019922093021”被使用。值-1指明存储环境存在的开始。行1003指明在行1001指明的时间帧期间什么算法有效,且在图10的例子中,指正使用称为快速二进制大对象命名(Fast BlobNaming)或FBN的算法。在FBN算法中,内容地址的散列值和时间戳的模数被用于确定数据单位应保存在哪一存储簇上。“mod”指示符指明在FBN算法中使用的模数值。因而,例如,在行1003,散列值和时间戳模数1的算法被使用。结果字段指明算法的哪一结果对应于哪一存储簇。在行1003的例子中,当使用模数1时,唯一可能的结果是0。因此,当结果是0时,数据单位保存在存储簇C1上。
行1005指明在时间段“101992093021”和“101998383838”之间是新的算法有效。如行1007和1009所示,在该时间段期间FBN算法与模数2一起使用,使得当模数运算的结果是0时,数据单位保存在簇C1上,当模数运算的结果是1时,数据单位保存的簇C2上。
数据单位的内容地址的时间戳可用于确定在查找数据单位时使用哪一算法。例如,如果数据单位的时间戳为10199209566,该时间戳落在行1005指明的时间段内。因此,由行1007和行1009指明的算法可被用于确定哪一存储簇保存该数据单位。
行1011指在时间“101998383838”时是新的算法有效,结束时间“-1”指算法在当前有效。行1013、1015、1017、1019、和1021指在FBN算法中使用了模数值5,且在当前使用三个簇(即簇C1、C2、C3)。行1013指,如果散列值和时间戳模数5的结果是0,则数据单位保存在簇C1上。如果结果是1或2,则数据单位保存在簇C2上。如果结果是3或4,则数据单位保存在簇C3上。因此,行1013-1021提供了在存储环境中存储簇可怎样被加权的例子,使得一些存储簇较其它存储簇保存更多的数据单位。如此,如果在存储环境中一存储簇具有较另一存储簇小的可用容量,或用于任何其它想要的目的,加权簇是令人满意的。
因此,在图10的例子中,在计算散列值和时间戳模数5的5个可能结果中,只有一个结果(即0)可导致数据单位保存在簇C1上,两个结果(即1和2)导致数据单位保存在簇C2上,剩下的两个结果(即3和4)导致数据单位保存在簇C3上。因此,使用该算法处理的数据单位的大约五分之一保存在簇C1上,大约五分之二保存在簇C2上,及五分之二保存在簇C3上。
应该意识到的是,在此描述的用于选择特定存储簇的各种技术可与用于在簇内选择存储位置的任何适当技术一起使用,因为本发明在该方面不限制。例如,固有位置寻址技术可用于选择存储簇,而不是簇内的存储位置;或者,反之亦然,因为任何成对的选择技术均可使用。
本发明的上述实施例可以多种方式实施。例如,实施例可使用硬件、软件或其结合实现。当实施为软件时,软件代码可在任何适当的处理器或处理器组上运行,无论是提供在单一计算机中还是分布在多个计算机之间。应该意识到的是,实现上述功能的任何组件或组件集合可在种属上被当作一个或多个控制在此论述的功能的控制器。一个或多个控制器可以多种方式实现,如使用专用硬件,或使用通用硬件(如一个或多个处理器),其被使用微代码或软件编程以执行上述功能。
在这方面,应意识到的是,本发明的实施例的一实施方式包括至少一计算机可读的介质(如计算机存储器、软盘、光盘、带等),其被编码以计算机程序(即多个指令),当程序在处理器上运行时,执行本发明的实施例的上述功能。计算机可读介质可被移动,使得保存于其上的程序可被装载到任何计算机环境资源上以实施在此论述的本发明的各个方面。此外,应意识到的是,运行时执行上述功能的计算机程序并不限于主机上运行的应用程序。而是,术语计算机程序以一般意义使用于此,指可被用于编程处理器以执行本发明的上述各方面的任何类型的计算机代码(如软件或微代码)。
应意识到的是,根据本发明的几个实施例,其中过程在计算机可读介质中实施,在计算机实施的过程的运行期间,其可接收人工输入(如从用户)。
在上述的各个例子中,内容地址被描述为包括文字字符“A”-“Z”。应理解的是,这些内容地址近作为例子给出,内容地址可包括任何文字数字字符、位串、或任何其它适当的字符,因为本发明在该方面不限制。
在此使用的措辞和术语仅用于描述的目的,不应被认为是限制。“包括”、“包含”、“具有”、“含有”、“包含”的使用及其各种变化意为包含其后列出的项目及另外的项目。
已详细描述了本发明的几个实施例,对于本领域的技术人员,各种修改和改进将很容易进行。这样的修改和改进应被认为是在本发明的实质和范围之内。因而,前述描述仅是示例性的,并不是限制。本发明仅限定为权利要求及其等价物确定的范围。
Claims (30)
1、编码以指令的至少一计算机可读介质,当指令在计算机***上执行时,实现对保存在包括多个存储簇的存储环境中的数据单位进行存取的方法,其中计算机***包括存储环境及将数据保存在存储环境上的主机,且其中该方法包括行为:
从主机接收请求以查找先前保存在存储环境中的数据单位;及
响应于请求的接收,确定数据单位保存在多个存储簇中的哪一个上。
2、根据权利要求1所述的至少一计算机可读介质,其中主机运行将数据保存到存储环境及从存储环境检索数据的应用程序,其中主机运行应用程序编程接口程序以将应用程序对接到存储环境,且其中接收行为由应用程序编程接口程序完成。
3、根据权利要求1所述的至少一计算机可读介质,其中计算机***还包括至少一将存储环境连接到主机的通信链路及监控从主机到存储环境的存取请求的设备,且其中接收请求的行为还包括在设备处从应用程序接收请求的行为。
4、根据权利要求3所述的至少一计算机可读介质,其中检测行为由设备执行。
5、根据权利要求3所述的至少一计算机可读介质,其中接收请求的行为还包括在多个存储簇的至少之一处接收请求的行为。
6、根据权利要求5所述的至少一计算机可读介质,其中多个存储簇中的至少之一包括至少一接收和处理存取请求的存取节点,且其中在多个存储簇的至少之一处从应用程序接收请求的行为还包括在至少一存取节点处的接收行为。
7、根据权利要求1所述的至少一计算机可读介质,其中确定行为包括在多个存储簇上执行搜索数据单位的行为。
8、根据权利要求1所述的至少一计算机可读介质,其中确定行为由多个存储簇中的至少之一执行。
9、根据权利要求1所述的至少一计算机可读介质,其中确定行为包括在多个存储簇中的至少之一上查找数据单位,但不执行搜索。
10、根据权利要求1所述的至少一计算机可读介质,其中存储环境是可内容寻址的存储环境,其中保存在存储环境中的数据单位通过内容地址可存取,内容地址至少部分基于数据单位的内容的至少一部分,且其中确定行为还包括基于数据单位的内容地址确定数据单位保存在多个存储簇的哪一个上。
11、根据权利要求10所述的至少一计算机可读介质,其中内容地址包括基于数据单位是何时保存在存储环境中的时间信息,且确定行为包括至少部分基于数据单位的内容地址的时间信息确定数据单位保存在多个存储簇的哪一个上的行为。
12、根据权利要求11所述的至少一计算机可读介质,其中确定行为还包括至少部分基于数据单位的内容地址的时间信息的散列值确定数据单位保存在多个存储簇的哪一个上的行为。
13、根据权利要求10所述的至少一计算机可读介质,其中确定行为还包括行为:
存取指定算法的信息,该算法被用于基于数据单位的内容地址选择数据单位保存在多个存储簇中的哪一个上;及
将算法应用到数据单位的内容地址以确定数据单位保存在多个存储簇中的哪一个上。
14、根据权利要求13所述的至少一计算机可读介质,其中所述信息指明由存储环境使用的多个算法,且在其时间段期间,多个算法中的每一个被用于保存数据单位。
15、根据权利要求14所述的至少一计算机可读介质,其中在多个算法之一有效时,所述信息还为多个算法的每一个指定在时间段期间在存储环境中的至少一存储簇。
16、编码以指令的至少一计算机可读介质,当指令在计算机***上执行时,实现对保存在包括多个存储簇的存储环境中的数据单位进行存取的方法,其中计算机***包括存储环境及将数据保存在存储环境上的主机,且其中该方法包括行为:
从在主机上运行的应用程序接收请求以保存数据单位;及
响应于请求的接收,选择多个存储簇之一以保存数据单位,其中保存是以对应用程序透明的方式进行,使得应用程序不被使得知道是多个存储簇中的所选择的簇保存数据单位。
17、根据权利要求16所述的至少一计算机可读介质,其中主机还运行应用程序编程接口程序以将应用程序对接到存储环境,且其中接收行为由应用程序编程接口程序完成。
18、根据权利要求16所述的至少一计算机可读介质,其中计算机***还包括至少一将存储环境连接到主机、连接到存储环境的通信链路及监控来自主机的存取请求的设备,且其中接收请求的行为还包括在设备处从应用程序接收请求的行为。
19、根据权利要求16所述的至少一计算机可读介质,其中接收请求的行为还包括直接从应用程序接收请求的行为。
20、根据权利要求19所述的至少一计算机可读介质,其中从应用程序接收请求的行为还包括在多个存储簇的至少之一处接收请求的行为。
21、根据权利要求16所述的至少一计算机可读介质,其中选择行为还包括使用循环技术选择多个存储簇之一来保存数据单位是行为。
22、根据权利要求16所述的至少一计算机可读介质,其中选择行为还包括至少部分基于多个存储簇的每一个的可用存储容量选择多个存储簇之一保存数据单位的行为。
23、根据权利要求16所述的至少一计算机可读介质,其中选择行为还包括基于多个存储簇中的至少之一的负荷选择多个存储簇之一来保存数据单位的行为。
24、根据权利要求16所述的至少一计算机可读介质,其中选择行为还包括基于数据单位的大小选择多个存储簇之一保存数据单位的行为。
25、根据权利要求16所述的至少一计算机可读介质,其中存储环境是可内容寻址的存储环境,其中保存在存储环境中的数据单位通过内容地址可存取,内容地址至少部分基于数据单位的内容的至少一部分,且其中选择行为还包括基于数据单位的内容地址选择多个存储簇之一来保存数据单位的行为。
26、根据权利要求25所述的至少一计算机可读介质,其中内容地址包括基于数据单位是何时保存在存储环境中的时间信息,且选择行为包括至少部分基于数据单位的内容地址的时间信息选择多个存储簇之一来保存数据单位的行为。
27、根据权利要求26所述的至少一计算机可读介质,其中选择行为还包括至少部分基于数据单位的内容地址的时间信息的散列值选择多个存储簇之一来数据单位的行为。
28、根据权利要求27所述的至少一计算机可读介质,其中选择行为还包括至少部分基于GUID的散列选择多个存储簇之一来保存数据单位的行为。
29、根据权利要求25所述的至少一计算机可读介质,其中选择行为还包括行为:
将算法应用到数据单位的内容地址以确定将数据单位保存在多个存储簇中的哪一个上;
将算法保存在记录中,其指明算法在使用的时间帧。
30、根据权利要求29所述的至少一计算机可读介质,其中记录指明由存储环境使用的多个算法,且在其时间段期间,多个算法中的每一个被用于保存数据单位。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/787,337 US9229646B2 (en) | 2004-02-26 | 2004-02-26 | Methods and apparatus for increasing data storage capacity |
US10/787,337 | 2004-02-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1664790A true CN1664790A (zh) | 2005-09-07 |
Family
ID=34750508
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005100511192A Pending CN1664790A (zh) | 2004-02-26 | 2005-02-28 | 增加数据存储容量的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9229646B2 (zh) |
EP (2) | EP1569085B1 (zh) |
JP (1) | JP2005276192A (zh) |
CN (1) | CN1664790A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101064656B (zh) * | 2006-03-30 | 2011-03-23 | 株式会社东芝 | 存储集群***和数据处理方法 |
CN112817538A (zh) * | 2021-02-22 | 2021-05-18 | 腾讯科技(深圳)有限公司 | 数据处理的方法、装置、设备和存储介质 |
Families Citing this family (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6973654B1 (en) * | 2003-05-27 | 2005-12-06 | Microsoft Corporation | Systems and methods for the repartitioning of data |
US7761678B1 (en) * | 2004-09-29 | 2010-07-20 | Verisign, Inc. | Method and apparatus for an improved file repository |
JP2006221476A (ja) * | 2005-02-10 | 2006-08-24 | Fujitsu Ltd | 管理装置、データ受信装置、操作端末及び情報処理装置 |
US11340988B2 (en) * | 2005-09-30 | 2022-05-24 | Pure Storage, Inc. | Generating integrity information in a vast storage system |
US7743023B2 (en) * | 2006-02-01 | 2010-06-22 | Microsoft Corporation | Scalable file replication and web-based access |
US20070214105A1 (en) * | 2006-03-08 | 2007-09-13 | Omneon Video Networks | Network topology for a scalable data storage system |
US7698258B2 (en) * | 2006-06-02 | 2010-04-13 | Microsoft Corporation | Searchable storage system |
US7987167B1 (en) * | 2006-08-04 | 2011-07-26 | Netapp, Inc. | Enabling a clustered namespace with redirection |
US7913051B1 (en) * | 2006-12-22 | 2011-03-22 | Emc Corporation | Methods and apparatus for increasing the storage capacity of a zone of a storage system |
US7734889B1 (en) * | 2006-12-22 | 2010-06-08 | Emc Corporation | Methods and apparatus for distributing information to multiple nodes |
US8046561B1 (en) * | 2006-12-22 | 2011-10-25 | Emc Corporation | Methods and apparatus for selecting a storage zone for a content unit |
US7921268B2 (en) | 2007-07-12 | 2011-04-05 | Jakob Holger | Method and system for function-specific time-configurable replication of data |
US20090063587A1 (en) * | 2007-07-12 | 2009-03-05 | Jakob Holger | Method and system for function-specific time-configurable replication of data manipulating functions |
KR20100004605A (ko) * | 2008-07-04 | 2010-01-13 | 한국전자통신연구원 | 네트워크 시스템 상에서의 작업 노드 선택방법 및 그시스템 |
US8200923B1 (en) * | 2008-12-31 | 2012-06-12 | Emc Corporation | Method and apparatus for block level data de-duplication |
US8296511B1 (en) | 2009-06-26 | 2012-10-23 | Emc Corporation | Method and system of providing object location metadata cookies in a federated content addressable storage system |
CN102549524B (zh) | 2009-07-20 | 2015-05-06 | 卡林戈公司 | 存储集群中的自适应功率保存 |
US20110119327A1 (en) * | 2009-11-17 | 2011-05-19 | Casdex, Inc. | System and Method for Efficiently Uploading Data Into A Content Addressable Storage System |
US9104326B2 (en) * | 2010-11-15 | 2015-08-11 | Emc Corporation | Scalable block data storage using content addressing |
US8572231B2 (en) * | 2011-07-14 | 2013-10-29 | Google Inc. | Variable-length nonce generation |
US8738624B1 (en) * | 2011-09-27 | 2014-05-27 | Amazon Technologies, Inc. | Increasing distributed database capacity |
US9531623B2 (en) * | 2013-04-05 | 2016-12-27 | International Business Machines Corporation | Set up of direct mapped routers located across independently managed compute and storage networks |
US9418131B1 (en) | 2013-09-24 | 2016-08-16 | Emc Corporation | Synchronization of volumes |
US9037822B1 (en) | 2013-09-26 | 2015-05-19 | Emc Corporation | Hierarchical volume tree |
US9378106B1 (en) | 2013-09-26 | 2016-06-28 | Emc Corporation | Hash-based replication |
US9208162B1 (en) | 2013-09-26 | 2015-12-08 | Emc Corporation | Generating a short hash handle |
US9367398B1 (en) | 2014-03-28 | 2016-06-14 | Emc Corporation | Backing up journal data to a memory of another node |
US9442941B1 (en) | 2014-03-28 | 2016-09-13 | Emc Corporation | Data structure for hash digest metadata component |
US9342465B1 (en) | 2014-03-31 | 2016-05-17 | Emc Corporation | Encrypting data in a flash-based contents-addressable block device |
US9606870B1 (en) | 2014-03-31 | 2017-03-28 | EMC IP Holding Company LLC | Data reduction techniques in a flash-based key/value cluster storage |
TWI511037B (zh) * | 2014-05-09 | 2015-12-01 | Wistron Corp | 儲存叢集化系統與提供對叢集式儲存的存取的方法 |
US9396243B1 (en) | 2014-06-27 | 2016-07-19 | Emc Corporation | Hash-based replication using short hash handle and identity bit |
US9304889B1 (en) | 2014-09-24 | 2016-04-05 | Emc Corporation | Suspending data replication |
US10025843B1 (en) | 2014-09-24 | 2018-07-17 | EMC IP Holding Company LLC | Adjusting consistency groups during asynchronous replication |
US9740632B1 (en) | 2014-09-25 | 2017-08-22 | EMC IP Holding Company LLC | Snapshot efficiency |
US20180101457A1 (en) * | 2014-10-29 | 2018-04-12 | International Business Machines Corporation | Retrying failed write operations in a dispersed storage network |
US20180113747A1 (en) * | 2014-10-29 | 2018-04-26 | International Business Machines Corporation | Overdrive mode for distributed storage networks |
US10223033B2 (en) * | 2014-10-29 | 2019-03-05 | International Business Machines Corporation | Coordinating arrival times of data slices in a dispersed storage network |
US20180181332A1 (en) * | 2014-10-29 | 2018-06-28 | International Business Machines Corporation | Expanding a dispersed storage network memory beyond two locations |
US10095582B2 (en) * | 2014-10-29 | 2018-10-09 | International Business Machines Corporation | Partial rebuilding techniques in a dispersed storage unit |
US10282135B2 (en) * | 2014-10-29 | 2019-05-07 | International Business Machines Corporation | Strong consistency write threshold |
US10459792B2 (en) * | 2014-10-29 | 2019-10-29 | Pure Storage, Inc. | Using an eventually consistent dispersed memory to implement storage tiers |
US10152527B1 (en) | 2015-12-28 | 2018-12-11 | EMC IP Holding Company LLC | Increment resynchronization in hash-based replication |
US10802737B2 (en) * | 2016-02-01 | 2020-10-13 | Cloudian Holdings, Inc. | System and processes for dynamic object routing |
US10162682B2 (en) * | 2016-02-16 | 2018-12-25 | Red Hat, Inc. | Automatically scaling up physical resources in a computing infrastructure |
US10310951B1 (en) | 2016-03-22 | 2019-06-04 | EMC IP Holding Company LLC | Storage system asynchronous data replication cycle trigger with empty cycle detection |
US10324635B1 (en) | 2016-03-22 | 2019-06-18 | EMC IP Holding Company LLC | Adaptive compression for data replication in a storage system |
US10095428B1 (en) | 2016-03-30 | 2018-10-09 | EMC IP Holding Company LLC | Live migration of a tree of replicas in a storage system |
US9959063B1 (en) | 2016-03-30 | 2018-05-01 | EMC IP Holding Company LLC | Parallel migration of multiple consistency groups in a storage system |
US9959073B1 (en) | 2016-03-30 | 2018-05-01 | EMC IP Holding Company LLC | Detection of host connectivity for data migration in a storage system |
US10565058B1 (en) | 2016-03-30 | 2020-02-18 | EMC IP Holding Company LLC | Adaptive hash-based data replication in a storage system |
US10530888B2 (en) | 2016-06-01 | 2020-01-07 | Home Box Office, Inc. | Cached data expiration and refresh |
US10083067B1 (en) | 2016-06-29 | 2018-09-25 | EMC IP Holding Company LLC | Thread management in a storage system |
US10013200B1 (en) | 2016-06-29 | 2018-07-03 | EMC IP Holding Company LLC | Early compression prediction in a storage system with granular block sizes |
US10152232B1 (en) | 2016-06-29 | 2018-12-11 | EMC IP Holding Company LLC | Low-impact application-level performance monitoring with minimal and automatically upgradable instrumentation in a storage system |
US9983937B1 (en) | 2016-06-29 | 2018-05-29 | EMC IP Holding Company LLC | Smooth restart of storage clusters in a storage system |
US10048874B1 (en) * | 2016-06-29 | 2018-08-14 | EMC IP Holding Company LLC | Flow control with a dynamic window in a storage system with latency guarantees |
WO2019000368A1 (en) * | 2017-06-30 | 2019-01-03 | Intel Corporation | DETERMINING THE OPTIMUM DATA SIZE FOR DATA DEDUPLICATION OPERATION |
CN109597567B (zh) * | 2017-09-30 | 2022-03-08 | 网宿科技股份有限公司 | 一种数据处理方法和装置 |
US11226869B2 (en) * | 2020-04-20 | 2022-01-18 | Netapp, Inc. | Persistent memory architecture |
US11573918B1 (en) * | 2021-07-20 | 2023-02-07 | Arm Limited | Methods and apparatus for communicating between node devices |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5428796A (en) * | 1992-08-26 | 1995-06-27 | International Business Machines Corporation | System and method for regulating access to direct access storage devices in data processing systems |
US5530897A (en) * | 1993-10-01 | 1996-06-25 | International Business Machines Corporation | System for dynamic association of a variable number of device addresses with input/output devices to allow increased concurrent requests for access to the input/output devices |
JP3030229B2 (ja) * | 1994-06-20 | 2000-04-10 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データを転送する方法及びデータ記憶システム |
US6076077A (en) * | 1995-10-27 | 2000-06-13 | Mitsubishi Corporation | Data management system |
US5764895A (en) * | 1995-01-11 | 1998-06-09 | Sony Corporation | Method and apparatus for directing data packets in a local area network device having a plurality of ports interconnected by a high-speed communication bus |
US5818438A (en) * | 1995-04-25 | 1998-10-06 | Bellsouth Corporation | System and method for providing television services |
US5778411A (en) * | 1995-05-16 | 1998-07-07 | Symbios, Inc. | Method for virtual to physical mapping in a mapped compressed virtual storage subsystem |
US6065108A (en) * | 1996-01-24 | 2000-05-16 | Sun Microsystems Inc | Non-quick instruction accelerator including instruction identifier and data set storage and method of implementing same |
JP3044005B2 (ja) | 1997-05-29 | 2000-05-22 | 公一 柴山 | データ格納制御方式 |
US6807632B1 (en) * | 1999-01-21 | 2004-10-19 | Emc Corporation | Content addressable information encapsulation, representation, and transfer |
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 |
US7672022B1 (en) * | 2000-04-07 | 2010-03-02 | Hewlett-Packard Development Company, L.P. | Methods and apparatus for analyzing an image |
US6718326B2 (en) * | 2000-08-17 | 2004-04-06 | Nippon Telegraph And Telephone Corporation | Packet classification search device and method |
US6625698B2 (en) * | 2000-12-28 | 2003-09-23 | Unisys Corporation | Method and apparatus for controlling memory storage locks based on cache line ownership |
JP3644494B2 (ja) * | 2001-04-13 | 2005-04-27 | 日本電気株式会社 | 情報検索装置 |
GB2376323B (en) | 2001-06-09 | 2006-03-15 | Hewlett Packard Co | Trusted and verifiable data storage system |
US6889225B2 (en) * | 2001-08-09 | 2005-05-03 | Integrated Silicon Solution, Inc. | Large database search using content addressable memory and hash |
US7116664B2 (en) * | 2002-05-13 | 2006-10-03 | International Business Machines Corporation | Lookups by collisionless direct tables and CAMs |
WO2003104943A2 (en) * | 2002-06-11 | 2003-12-18 | Ashish A Pandya | High performance ip processor for tcp/ip, rdma and ip storage applications |
US7171439B2 (en) * | 2002-06-14 | 2007-01-30 | Integrated Device Technology, Inc. | Use of hashed content addressable memory (CAM) to accelerate content-aware searches |
US7441074B1 (en) * | 2002-08-10 | 2008-10-21 | Cisco Technology, Inc. | Methods and apparatus for distributing entries among lookup units and selectively enabling less than all of the lookup units when performing a lookup operation |
US20050080761A1 (en) * | 2002-10-18 | 2005-04-14 | Neoscale Systems | Data path media security system and method in a storage area network |
WO2004074968A2 (en) * | 2003-02-21 | 2004-09-02 | Caringo, Inc. | Additional hash functions in content-based addressing |
JP4371724B2 (ja) * | 2003-07-03 | 2009-11-25 | 株式会社日立製作所 | 記憶システム及び記憶装置システム |
US20050015471A1 (en) * | 2003-07-18 | 2005-01-20 | Zhang Pu Paul | Secure cluster configuration data set transfer protocol |
US20050027862A1 (en) * | 2003-07-18 | 2005-02-03 | Nguyen Tien Le | System and methods of cooperatively load-balancing clustered servers |
US7577806B2 (en) * | 2003-09-23 | 2009-08-18 | Symantec Operating Corporation | Systems and methods for time dependent data storage and recovery |
US7096342B2 (en) * | 2003-10-28 | 2006-08-22 | International Business Machines Corporation | Flexible LUN/LBA interface for content addressable reference storage |
US7590807B2 (en) * | 2003-11-03 | 2009-09-15 | Netapp, Inc. | System and method for record retention date in a write once read many storage system |
US9075851B2 (en) * | 2003-12-09 | 2015-07-07 | Emc Corporation | Method and apparatus for data retention in a storage system |
JP4477437B2 (ja) * | 2004-07-02 | 2010-06-09 | 株式会社日立製作所 | ストレージ装置、そのクラスタ間データ通信方法、及びそのクラスタ通信制御プログラム |
US7979665B1 (en) * | 2004-12-23 | 2011-07-12 | Emc Corporation | Method and apparatus for processing access requests in a computer system |
US7366836B1 (en) * | 2004-12-23 | 2008-04-29 | Emc Corporation | Software system for providing storage system functionality |
US7376681B1 (en) * | 2004-12-23 | 2008-05-20 | Emc Corporation | Methods and apparatus for accessing information in a hierarchical file system |
US7707217B2 (en) * | 2005-01-24 | 2010-04-27 | 3Com Corporation | Trie search engines and ternary CAM used as pre-classifier |
US7831793B2 (en) * | 2006-03-01 | 2010-11-09 | Quantum Corporation | Data storage system including unique block pool manager and applications in tiered storage |
US7698258B2 (en) * | 2006-06-02 | 2010-04-13 | Microsoft Corporation | Searchable storage system |
US10452763B2 (en) * | 2007-03-08 | 2019-10-22 | Oath Inc. | Autocomplete for integrating diverse methods of electronic communication |
-
2004
- 2004-02-26 US US10/787,337 patent/US9229646B2/en active Active
-
2005
- 2005-02-25 EP EP05004139.1A patent/EP1569085B1/en active Active
- 2005-02-25 EP EP15187450.0A patent/EP3002672B1/en active Active
- 2005-02-28 CN CN2005100511192A patent/CN1664790A/zh active Pending
- 2005-02-28 JP JP2005055114A patent/JP2005276192A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101064656B (zh) * | 2006-03-30 | 2011-03-23 | 株式会社东芝 | 存储集群***和数据处理方法 |
CN112817538A (zh) * | 2021-02-22 | 2021-05-18 | 腾讯科技(深圳)有限公司 | 数据处理的方法、装置、设备和存储介质 |
CN112817538B (zh) * | 2021-02-22 | 2022-08-30 | 腾讯科技(深圳)有限公司 | 数据处理的方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3002672A1 (en) | 2016-04-06 |
EP1569085A3 (en) | 2007-04-04 |
EP3002672B1 (en) | 2019-08-07 |
EP1569085B1 (en) | 2015-09-30 |
US9229646B2 (en) | 2016-01-05 |
EP1569085A2 (en) | 2005-08-31 |
US20050193084A1 (en) | 2005-09-01 |
JP2005276192A (ja) | 2005-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1664790A (zh) | 增加数据存储容量的方法和装置 | |
CN1311363C (zh) | 生成内容地址的数据处理方法和可内容寻址的存储*** | |
CN101604337B (zh) | 一种哈希表项存储、查找装置及方法 | |
US9223820B2 (en) | Partitioning data for parallel processing | |
CN1292370C (zh) | 从源***复制信息到目标***的方法 | |
US7797298B2 (en) | Serving cached query results based on a query portion | |
CN1808411A (zh) | 访问内容可寻址存储***的虚拟库中的内容的方法和装置 | |
CN1673981A (zh) | 用于平衡多个存储器缓冲区大小的***及其方法 | |
Wang et al. | SIndex: a scalable learned index for string keys | |
CN1811757A (zh) | 用于定位万维网页以及计算机网络文件的***和方法 | |
CN1309354A (zh) | 用于持久和稳固的存储设备分配的***和方法 | |
CN1929451A (zh) | 一种解决Hash冲突的方法及装置 | |
CN1492362A (zh) | 一种嵌入式数据库的数据备份和恢复方法 | |
CN1831824A (zh) | 缓存数据库数据组织方法 | |
CN1819544A (zh) | 一种基于bitmap表的缓存管理方法 | |
CN1717661A (zh) | 数据记录装置 | |
CN114546295A (zh) | 一种基于zns固态硬盘的智能写分配方法和装置 | |
US20090083277A1 (en) | Nodal data normalization | |
CN1687899A (zh) | 将应用程序动态下载到用户识别模块的方法、***及模块 | |
CN113590332B (zh) | 内存管理方法、装置及内存分配器 | |
CN1866918A (zh) | 静态多接口范围匹配表的管理维护方法 | |
CN1920796A (zh) | 用于将文件的数据存储在存储块中的高速缓存方法及*** | |
Chen et al. | icache: An importance-sampling-informed cache for accelerating i/o-bound dnn model training | |
US7774311B2 (en) | Method and apparatus of distributing data in partioned databases operating on a shared-nothing architecture | |
CN1991830A (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 | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20050907 |