存储系统中的数据保持方法及装置的制作方法

文档序号:6442943阅读:173来源:国知局
专利名称:存储系统中的数据保持方法及装置的制作方法
技术领域
本发明涉及数据存储,特别是涉及数据存储系统中的数据保持方法及装置。
2、相关技术的论述商业及其它公共机构,如医院、学校及政府机构,经常使用数据存储系统来维持电子形式的记录。这样的记录可包括,例如,公司财务记录、电子邮件(e-mail)、病人医疗记录、学生笔记、及其它类型的数据。对于商业或公共机构,将这些记录自它们生成后以其原样保持一段时间是非常重要的。即,商业或公共机构可能希望阻止这些记录被删除或修改,直到已逝去一定时间。例如,医院可能希望在X光检查后防止在几年内修改或删除病人的X光照片。此外,这样的数据保持可能由法律规定。例如,证券交易委员会(SEC)规则17a-4要求公司将某些财务记录保留6年。
使用传统的存储系统,用户可能意外删除或修改这样的记录。另外,怀恶意的用户可能故意删除或修改这样的记录,例如,隐蔽不道德的商业做法或不诚实地改变学校抄本。无论是意外的或故意的,这样的行为可能导致不能挽回的数据损失甚或违犯法律。在某些计算机系统包括文件系统前端(通常在主计算机上而不是在存储系统上),其允许文件被指定为“只读”的同时,系统的管理员通常有能力改变文件的“只读”状态,使得文件可被修改或删除。此外,传统的文件系统不允许用户指明数据不能被删除或修改的时间段。即,指定文件“只读”则意味着只要文件的只读状态未被改变,则该文件不能被删除或修改。
某些存储系统将数据保存在记录介质如光盘(如CD-ROM盘)上,其不能被重写或修改。然而,这样的系统不允许用户指明保存期,因为一旦数据被写到介质上,其将永远不会从介质上删除,尽管介质可在物理上被摧毁以阻止访问数据。如果希望用新数据替换介质上的数据,该介质不可再度使用。

发明内容
一说明性的实施例致力于在包括至少一主机和至少一存储系统的计算机系统中处理数据的方法,该方法包括行动(A)从主机接收一删除存储在存储系统上的数据单元的请求;(B)确定先前定义的该数据单元的保存期是否已期满;及(C)当在行动(B)确定该数据单元的保存期尚未期满时,拒绝删除数据单元的请求。另一说明性的实施例致力于编码有指令的至少一计算机可读介质,当在计算机系统上执行时,其执行上述方法。
另一说明性的实施例致力于用于包括至少一主机和存储系统的计算机系统中的存储系统,存储系统包括至少一存储装置,以保存从至少一主机接收的数据;及至少一控制器,其从主机接收一删除存储在存储系统上的数据单元的请求;确定先前定义的该数据单元的保存期是否已期满;及当确定该数据单元的保存期尚未期满时,拒绝删除数据单元的请求。
另一说明性的实施例致力于用于包括至少一主机和存储系统的计算机系统中的存储系统,存储系统包括至少一存储装置,以保存从至少一主机接收的数据;及至少一控制器,其从主机接收至少一请求,以将数据单元保存在存储系统中至少直到在至少一请求中指明的保存期满;将数据单元保存在至少一存储装置中;及将指明保存期的信息保存在至少一存储装置中。
另一说明性的实施例致力于一种在包括至少一主机和至少一存储系统的计算机系统中处理数据的方法,该方法包括行动(A)将至少一请求从主机传输到存储系统,其请求存储系统保存数据单元至少直到至少一请求中指明的保存期期满。
另一说明性的实施例致力于一种用于包括至少一主机和至少一内容可寻址存储系统的计算机系统中的方法,所述存储系统保存至少两种不同类型的数据单元,包括数据的二进制大对象(blob)及对应于二进制大对象的内容描述符文件(CDF),每一CDF包括关于对应的二进制大对象的元数据,每一二进制大对象和CDF通过使用基于二进制大对象和CDF之一的内容产生的标识符而可由至少一主计算机接近。该方法包括行动(A)在标识符中为每一数据单元提供至少一条信息以识别所标识的数据单元是否为二进制大对象或CDF。
另一实施例致力于一种用于在包括至少一主机和至少一内容可寻址存储系统的计算机系统中处理数据的方法,所述存储系统保存至少两种不同类型的数据单元,包括数据的二进制大对象及对应于二进制大对象的内容描述符文件(CDF)并形成具有二进制大对象的二进制大对象/CDF组,CDF包括关于对应的二进制大对象的元数据,每一二进制大对象和CDF通过使用基于二进制大对象和CDF之一的内容产生的标识符而可由至少一主计算机接近,其中,存储系统执行无用单元收集实用程序,其仅在对应的CDF已被删除后才删除二进制大对象,使得二进制大对象没有对应的CDF。该方法包括行动提供至少两个选项给主机,用于删除二进制大对象/CDF组中的二进制大对象和CDF至少之一,至少两选项根据在响应于删除请求之前有多少删除处理需被执行及有多少删除处理需被留下以用于无用单元收集实用程序而不同。
附图简要说明在附图中

图1为本发明的实施例可实施于其上的示例性计算机系统的框图。
图2为根据本发明的一实施例的示出内容地址的产生的简图。
图3为根据本发明的一实施例的示出数据可被保存在存储系统上的示例性方式的框图。
图4为根据本发明的一实施例的数据可从存储系统删除的过程的流程图。
具体实施例方式
本发明的各个实施例致力于用于包括存储系统和主计算机的计算机系统中的方法和装置,存储系统和主计算机通信以执行数据运算。例如,存储系统可响应于来自主计算机的保存数据的请求而保存数据(写),响应于来自主计算机的用于所保存的数据的请求而返回所保存的数据(读),及响应于来自主计算机的删除数据的请求而删除所保存的数据。
在本发明的一实施例中,当发送请求给存储系统以保存数据时,主计算机(在此定义为任何能够写数据到存储系统的计算机)可将将被保存的数据及与将被保存的数据关联的保存期提供给存储系统。例如,保存期可确定数据不能被删除或修改的时段。存储系统可保存数据及其关联的保存期。如果存储系统随后从主计算机接收到删除或修改数据的请求,存储系统可首先估计所保存的与数据关联的保存期以确定保存期是否已期满。如果保存期尚未期满,存储系统将不删除或修改数据。如此,一旦已为数据单元建立保存期,存储系统可确保在整个保存期,数据单元将保持为未修改的状态。
图1示出了其上可实施本发明的各个实施例的示例性系统。图1示出了存储系统101,其通过网络103与多个主机105a、105b、…、105n通信。如在此所用的,“网络”(如网络103)是由一个或多个传输介质段互联的两个或多个装置的群组,在传输介质上通信可在装置之间交换。每一段可以是多种类型的传输介质的任意一种,包括一种或多种电或光缆或由金属和/或光纤制成的线缆、空气(如使用载波上的无线传输)或这些传输介质的任意结合。
存储系统101可包括一个或多个存储装置(如磁盘驱动)以在计算机系统中保存应用程序、应用数据、用户数据、及类似的数据。存储系统101可由主机105访问以保存、检索或执行对保存在存储系统101上的数据的运算。应该意识到的是,存储系统101可以是主要用于数据存储的装置,或可以是执行多个其它功能的装置,如执行用户应用程序。也就是说,存储系统101可以是能够存储和检索数据的任何装置。
例如,主机105可以是服务器,其提供源(如数据存储、email、及其它服务)、客户机(如由用户操作的一般目的的计算机系统)、网络组件(如转换器)或任何其它类型的计算机。主机105由网络103连接到存储系统101,从而主机105可使用存储系统101保存和检索数据。
应该意识到的是,图1中所示的存储结构仅是其上可实施本发明的各个方面的系统的例子,因为本发明并不限于与任何特定类型的系统结构一起使用。例如,不需要多个主机连接到单一的存储系统,且除了或替代网络,可使用大量其它类型的连接中的任意一种(如直接连接)。
主机105可以多种方式中的任意一种访问存储系统101上的数据,因为在此描述的本发明的各个方面并不限于任何特定类型的系统结构。例如,在某些计算机系统中,在主机105上执行的应用程序将信息保存在由文件系统(如在主机105上执行的)管理的文件上。文件系统将每一特定文件的名称映射到一个或多个逻辑卷及存储器的部件,在那里将数据保存在文件内。逻辑卷可直接对应于存储系统101上提供的物理存储装置,或当存储系统101是智能存储系统时,存储系统可在呈现给主机105的逻辑卷和存储系统101内的实际的物理存储装置之间执行另一层映射。
下述的本发明的一实施例适于用在下述一般转让的未决申请中描述的计算机系统中,这些申请为1999年1月21日申请的、题为“内容可寻址的信息封装、表示及转移”的申请09/236,366;1999年1月21日申请的、题为“在网络上访问内容可寻址的数据”的申请09/235,146;1999年9月7日申请的、题为“内容可寻址的信息的安全存储、转移及检索系统及方法”的申请09/391,360;每一申请均组合于此以供参考。这些申请涉及内容可寻址的存储(CAS)且其整体被称为“CAS申请”。
在内容可寻址系统中,数据通过使用基于数据本身的内容产生的内容地址而被保存。内容地址可通过将散列函数应用到将被保存的数据而产生。散列函数的输出是可被用在主机和存储系统之间的通信中的内容地址以访问数据。内容地址可被映射到(入在存储系统101内)存储系统内的一个或多个物理存储单元。内容寻址的使用特别适于其中所保存的信息不改变(即固定的内容数据)的应用,如上述的那些各种类型的记录。
可被用于产生内容地址的散列函数的一个例子为消息摘要5(MD5)。内容地址可直接对应于内容的散列的结果,或附加的消息可被添加到散列结果以产生地址。在一实施例中,描述被保存的内容是否是主机数据或与主机数据关联的元数据的消息被添加到内容的散列以产生内容地址。该附加的信息在下述的多种方式中是有用的。应该理解的是,任何类型的散列函数均可被使用,因为在此描述的本发明的各个方面并不限于任一类型的散列函数的使用,甚或并不限于用在内容可寻址系统中。
当主机将数据发送到存储系统以将其保存在那里时,主机和存储系统均可单独地计算数据的内容地址。主机可保留内容地址以便将来用于从存储系统检索数据。或者,当主机发送数据到存储系统时,只有存储系统可计算内容地址并将所计算的内容地址返回给主机以便随后用于访问数据。再或者,存储系统和主机均可计算内容地址,且存储系统将其产生的内容地址返回给主机。主机可将其单独计算的内容地址与从存储系统接收的内容地址进行比较以验证它们是否匹配。
如上所述,对于某些类型的固定内容数据,如病人的X光照片或公司的财务记录,可能希望将这些数据保持为其原始的形式,这意味着一旦这些数据已被保存在存储系统上,这些数据的修改应不被允许。在与上面提及的CAS申请一起使用的本发明的一实施例中,在那些申请中描述的内容寻址系统的特征被用于阻止先前写入的数据的修改。该特征概念性地图示在图2中,其示出当主机将原始数据201保存在存储系统上时,原始数据的内容地址205由散列函数203产生。主机随后可使用内容地址205从存储系统检索该数据的拷贝。如果主机寻求修改数据或重写其到存储系统以作为修改的数据207,由散列函数203产生一新的内容地址209以用于所修改的数据。因为原始数据201和修改的数据207是不同的,散列函数203将产生不同的内容地址以用于数据201和数据207。因此,内容地址205和209将映射到存储系统的存储装置上的不同物理单元。因而,当主机将修改的数据207保存在存储系统中时,其被保存在不同于原始数据201的单元并不盖写原始数据。因而,原始数据201在存储系统上保持不变。
应该意识到的是,本发明的阻止数据一旦写入就不能修改的实施例并不限于与内容可寻址系统一起使用,因为可采用在系统中使用其它类型的寻址方案的其它技术来阻止对先前写入的数据的修改。例如,主机和/或文件系统可预防对先前写入的数据的写,并可要求任何修改的数据映射到不同的存储单元。
如上所提及的,除了阻止数据修改外,可能还希望在先前定义的保存期期满前阻止删除数据。本发明的一实施例致力于确保数据在先前指明的保存期期间不能被删除的技术。如上所述,本发明的一实施例可连同在CAS申请中描述的体系结构一起使用。图3示出了其中数据根据该体系结构保存的方式。
在CAS申请中定义的体系结构中的数据单元被称为二进制大对象(如二进制大对象303)。二进制大对象303可以是,例如,将由主机(如图1中的主机105)保存在存储系统(如存储系统105)上的二进位数据,如,病人的X光照片、公司财务记录、或任何其它类型的数据。当二进制大对象303被保存到内容可寻址存储系统时,以上述方式基于二进制大对象303的内容为其产生一唯一的地址。
每一二进制大对象303具有至少一与其关联的内容描述符文件(CDF)。CDF301可包括元数据305和多个引用307a、307b、…、307n。CDF可引用一个或多个二进制大对象或CDF。因而,引用307可以是,例如,引用到由CDF301引用的二进制大对象和/或CDF。元数据305可包括,例如,CDF301的生成日期(如CDF301被保存在存储系统上的日期)及二进制大对象303的内容的描述。根据本发明的一实施例,元数据还包括指明关于所关联的二进制大对象303的保存期的信息。保存期可以被指明为自二进制大对象303和/或CDF301的生成日期开始的一段时间,其间二进制大对象303及CDF301不可被删除。因而,例如,如果包括在CDF301中的保存期为2年,存储系统在自包括在CDF301的元数据305中的生成日期之日起的两年内将不允许CDF301和二进制大对象303的删除。
根据本发明的一实施例,在元数据305中定义的保存期直接涉及CDF301,并仅间接地涉及二进制大对象303。本发明的该方面适于用在这样的系统体系结构中,其中主机不寻求直接删除二进制大对象303(即,任何这样的请求均被拒绝),但可仅寻求删除CDF301,且其中无用单元收集实用程序(将在下面详细描述)被采用在存储系统上以清除已被指明删除的二进制大对象。如果没有CDF引用其,二进制大对象可被指明删除。在这方面,该体系结构的一个方面是只要二进制大对象被至少一CDF301引用,则其不能被删除,但未被CDF引用的任何二进制大对象均可被删除。
应该意识到的是,本发明并不限于用在具有上述体系结构的系统中,因为上述的许多体系结构特征仅仅是实施细节。没有必要实施本发明。例如,二进制大对象的保存期可被另外直接定义,而不是仅定义CDF的保存期。如果二进制大对象本身携带保存期,则可能允许主计算机直接删除保存期已期满的二进制大对象。
包括在元数据305中的二进制大对象303的描述可包括描述二进制大对象303的内容的信息。例如,如果二进制大对象303为X光照片,元数据305可包括病人的名字、进行X光照射的数据、附加的医生关于X光照片或病人的注释、或其它信息。应该意识到的是,上面给定的元数据的类型仅仅是可被包括在CDF301的元数据305中的元数据类型的例子。事实上,任何关于二进制大对象303的数据可被包括在元数据305中,因为本发明并不限于这方面。
CDF301还可包括一个或多个引用307。这些引用可以是,例如,引用到二进制大对象或其它CDF。例如,引用307a可包括二进制大对象303的内容地址或文件系统位置,使得CDF301通过引用307a“指向”二进制大对象303。因此,二进制大对象303可由主机使用CDF301的内容地址或文件系统位置访问,因为读CDF301的内容提供二进制大对象303的内容地址或文件系统位置。在所示的实施例中,CDF301还包括“指向”其自身的引用307b,即引用307b包括CDF301的内容地址或文件系统位置。提供该循环引用以有利于下面将详细描述的无用单元收集过程的一实施例。然而,本发明并不限于无用单元收集过程的使用,或限于每一CDF中的循环引用的使用,因为其它实施方式均是可能的。CDF301可包括多个指向其它CDF或二进制大对象的其它引用,使得那些CDF或二进制大对象还可使用CDF301的内容地址访问。
在图3的例子中,只有一个CDF(即CDF301)被示出“指向”二进制大对象303。然而,应该意识到的是,多个CDF可包括引用到同一二进制大对象的引用。也就是说,两个或多个CDF可“指向”同一二进制大对象。当多个CDF包括指向同一二进制大对象的引用时,这些多个CDF可包括不同的元数据,包括不同的生成日期和/或不同的保存期。例如,一个“指向”二进制大对象的CDF可指明两年的保存期,自其2003年7月15日的生成日期之日起,第二个CDF可指明自同一生成日期之日起的3年保存期。根据本发明的一实施例,存储系统可坚持最长保存期。因而,在2005年7月15日,存储系统可允许第一CDF的删除,但将不允许第二CDF或因而引用的二进制大对象的删除。然而,在2006年7月15日,存储系统将允许第一CDF(如果尚未删除)和第二CDF的删除,从而考虑二进制大对象的无用单元收集。
采用所指明的二进制大对象的最长保存期的本发明的实施例那样做以确保用户不能通过为指明较短的保存期的二进制大对象简单创建一新CDF而绕过先前指明的保存期。在本发明的一实施例中,二进制大对象的最长保存期通过上述执行而坚持,其中只要二进制大对象被任一CDF引用,其将不能被删除。然而,应该意识到的是,本发明的关于坚持所确定的保存期的最长期限的方面并不限于该实施,因为其它技术也是可能的。
当主机将二进制大对象保存在存储系统上时,其可以下面将详细描述的方式将二进制大对象及与该二进制大对象关联的CDF提供给存储系统。主机可使用CDF的内容地址访问CDF,并因而访问二进制大对象元数据及包括在那里的引用。主机接着可使用从CDF获得的二进制大对象引用(即二进制大对象的内容地址或文件系统位置)访问二进制大对象(数据)本身。或者,在写二进制大对象之后,主机可保留二进制大对象的内容地址并使用该内容地址直接访问二进制大对象。
在创建二进制大对象之后,一个或多个另外的引用其的CDF可被创建。例如,如果希望将另外的元数据与二进制大对象关联,如增加二进制大对象的保存期的元数据或添加与该二进制大对象关联的附加描述信息,其可被执行。这些另外的CDF可引用第一CDF、二进制大对象自身或同时引用二者。
在上述的例子中,保存期被指明为自CDF的生成日期之日起的以年为单位的一段时间。然而,应该理解的是,保存期可以更精密的间隔指明。例如,保存期可按年、月、日、小时、分钟、秒、或这些(或任何其它)时间长度的任意结合。此外,保存期不必被指明为自CDF的生成日期之日起的一段时间。例如,保存期可被指明为CDF或所引用的二进制大对象可被删除的日期和/或时间。在下面详细描述的一实施例中,保存期可被指明为自所指明的事件发生的一段时间。
如上所述,当主机创建CDF以存储在存储系统上时,主机可指定保存期,其包括在CDF的内容中。保存期可被指定为自CDF的生成日期开始的一段时间。在一实施例中,存储系统寻求在整个保存期保持控制以确保在所指定的保存期期满之前主机不能删除数据。因而,当保存期基于CDF的生成日期时,希望从信任的存储系统的时钟为基础创建数据,以防止主机欺骗不正确的生成日期而绕过强加于数据上的保存期。例如,假定CDF在2003年9月15日被保存且保存期为2年。因而,计划的CDF的期满日为2005年9月15日。然而,如果主机欺骗CDF的2002年9月15日的生成日期时间戳,则CDF将在2004年9月15日过期,早于CDF的计划期满日一年。因此,根据本发明的一实施例,采用技术以允许存储系统确保CDF中的生成日期时间戳是CDF的实际生成日期的准确反映。这可以通过多种方式实现,因为致力于使存储系统验证所保存的数据的生成日期的本发明的各个方面并不限于下述的特定实施方式。
在一实施例中,为确保由主机提供的生成日期时间戳的准确性,主机被提供以应用程序接口(API),其与存储系统相互作用以帮助确保写入到存储系统的任何数据的生成日期的准确性。在一实施例中,主机API与存储系统通信以从存储系统获得当前的时间(如从存储系统的时钟或存储系统信任的任何源),并比较来自存储系统的时钟的当前时间与主机的当前时间(如来自主机的时钟)进行比较。根据该比较结果,主机确定指示存储系统的时钟和主机的时钟之间的时间差的增量值。关于存储系统的时钟的信息可以多种方式的任一种通信到主机。在一实施例中,无论存储系统在何时发送信息给主机,来自存储系统的时钟的当前时间均被添加在信息上。因而,每次主机从存储系统接收信息,主机可比较从存储系统接收的当前时间和根据主机时钟的当前时间,并因而更新增量值。当主机创建CDF并将其发送给存储系统存储时,生成日期时间戳可通过将增量值添加到主机时钟指明的当前时间而被写入到CDF,使得生成日期可由存储系统基于其自己的时钟进行验证。
在本发明的一实施例中,在生成日期时间戳写入到CDF之前,主机进行检查以确保在合理的时间段内增量值已被检查。例如,如果主机在最后10秒尚未接收存储系统的时钟,主机可直接询问存储系统其当前时间以用于CDF中的日期时间戳的创建。
在本发明的一实施例中,存储系统可可选地在从主机接收CDF的基础上验证CDF的生成日期,以进一步使主机免于企图对被写的数据欺骗假的生成时间。也就是说,存储系统可对CDF中的生成日期时间戳与在存储系统接收到写请求时的时间进行比较。如果两个时间在一定的合理公差(如10秒)内不匹配,则存储系统可拒绝保存CDF的请求。公差可以任何适当的方式定义,因为本发明的该方面并不限于任何方面。例如,公差可指定不可由CDF的生成日期时间戳和根据存储系统时钟的时间之间的差超出的极限值。例如,公差可以是固定的一段时间,如10秒,或任何其它合理的一段时间。或者,公差可正比于CDF的保存期,使得如果保存期较短,公差也较小;而如果CDF的保存期较长,公差也可相对较大。任何适当的函数可被用于确定保存期的长度和公差之间的关系,因为本发明并不限于该方面。
如上所述,根据本发明的一实施例,二进制大对象不能由主机直接删除。根据该实施例,来自主机的任何直接删除二进制大对象的请求将被存储系统拒绝。根据本发明的一实施例,采用技术来识别保存在存储系统上的数据单元是否是二进制大对象或CDF,以辨别删除请求是否是针对二进制大对象的且将被拒绝,或是否是针对CDF的并可在满足下述的某些条件的情况下可被授权。本发明的该方面可以多种方式的任一方式实施。
根据本发明的一实施例,保存在存储系统上的任何数据的内容地址包括至少一位,其附加于以上述方式产生自数据单元的内容的散列,该附加位用于识别与内容地址相关联的数据是二进制大对象还是CDF。如此,当主机寻求访问数据单元时,提供给存储系统的内容地址识别数据单元是二进制大对象还是CDF,且存储系统可使用该信息不同地处理这些删除请求。在这方面,致力于二进制大对象的删除请求将被拒绝,且致力于CDF的删除请求将以下面结合图4描述的方式处理。
根据本发明的一实施例,内容地址由存储系统自身产生,并被返回给主机。在这方面,存储系统采用上述的技术产生内容地址,并是真正产生这样的地址的令人信任的源。通过使内容地址由存储系统产生,确保主机不能欺骗存储系统,其可能通过虚假地识别内容数据(即二进制大对象)作为CDF以使其随后能够被直接删除。在这方面,本发明的一实施例致力于提供可满足严格要求的存储系统,以确保保持政策均被满足,不管连接到其的主机的行为。这样的环境的一个例子是提供与SEC规则17a-4要求一致的存储系统,以将财务记录保留规定的一段时间。
图4为根据本发明的一实施例的示出处理从存储系统删除CDF的请求的过程的流程图。该过程可由存储系统自身执行,或由在主机和存储系统之间提供接口的单独的计算机执行。该过程开始于行动403,其接收在存储系统删除CDF的请求。如上所述,请求可以,例如,通过其内容地址识别CDF。在本发明的一实施例中,采用技术以确保删除请求的主题事实上为CDF。那些步骤可在图4所示的过程启动前执行,或者,可被集成到该过程中,其通过执行另外的验证步骤,且如果不是致力于CDF则拒绝请求。在接收请求后,过程前进到行动405,其中CDF从存储系统读取。过程接着前进到行动407,其中过程检查CDF的元数据并估计保存期以确定保存期是否期满。当保存期已期满时,存储系统在行动409删除CDF,并继而在行动413终止。CDF的删除可以几种不同的方式执行,如下面将更加详细描述的那样。如上所提及的,CDF的删除可导致(间接地)由CDF引用的任何二进制大对象以下面详述的方式删除。当在行动407确定保存期尚未期满时,过程拒绝删除CDF的请求。存储系统可可选地返回一错误消息给请求人(如主机)。接着,过程在行动413终止。
关于CDF和二进制大对象的信息可以任何适当的方式保存,因为本发明并不限于任何特定的实施技术。根据本发明的一实施例,该信息被保存在适于与自由变量长度记录一起使用的数据库的表内。每一二进制大对象和CDF可具有相关联的表,其保存二进制大对象或CDF的内容地址、引用(或指向)二进制大对象或CDF的任何CDF的内容地址、及其它信息,如哪一物理存储位置(如磁盘)保存二进制大对象或CDF、创建时间戳、二进制大对象或CDF的任何错误的物理位置等。CDF的参考表不必包括识别CDF指向哪一二进制大对象的项,因为CDF本身的内容包含该信息。参考表可包括将被用于无用单元收集过程的引用计数。引用计数可指示有多少CDF引用特定的二进制大对象或CDF。例如,无用单元收集程序可检查与特定二进制大对象或CDF关联的引用计数以确定是否有CDF参考特定的二进制大对象或CDF。如果二进制大对象或CDF未被参考,无用单元收集程序可将其删除。许多其它类型的信息可被保存在表中,因为本发明并不限于该方面。应该意识到的是,整个表不必保存在单一存储系统上的单一位置中,且表的部分可通过一个或多个存储系统的不同位置分布。另外,应该理解的是,不必采用单一的数据库来保存所有二进制大对象及CDF的表,因为任何适当的结构均可被使用,包括根本不使用数据库表的结构。
从前述的内容应该意识到的是,本发明的实施例可被用在CDF不仅指向数据的二进制大对象、且还指向其它CDF的系统中。这种体系结构在创建所保存从信息的层级时是有用的。例如,二进制大对象可包含个人的X光照片,使得第一级CDF可指向X光照片并识别其属于特定的个人。另外,该X光照片可与该个人或其家庭的多个X光照片成组,具有指向多个较低层级的CDF的较高层级的CDF以创建逻辑层级。
根据本发明的一实施例,当指向一个或多个较低层级的CDF的较高层级的CDF被创建时,对较低层级的CDF的参考被包括在较高层级的CDF的内容中,使得较高层级的CDF逻辑地指向较低层级的CDF。在一实施例中,对较低层级的CDF的参考可简单地作为元数据或描述符包括在较高层级的CDF的内容中,因为该体系结构并不注视以在此所述的CDF指向二进制大对象的方式指向另一二进制大对象的CDF(即较高层级的CDF的地址并不提供在较低层级的CDF的参考表中)。然而,在本发明的另一实施例中,该参考可被提供,使得较高层级的CDF可指向较低层级的CDF并使其地址提供在较低层级的CDF的参考表中。根据该实施方式,较低层级的CDF在其被较高层级的CDF指向时不能被删除,使得删除较低层级的CDF将要求先删除较高层级的CDF。
如上所述,根据本发明的一实施例,采用了无用单元收集技术,其删除未被CDF引用的任何二进制大对象。根据本发明的一实施例,当二进制大对象被写入到存储系统时,其在其对应的CDF之前被写。因而,当写二进制大对象时,其CDF的内容地址可能尚未产生,使得其不可作为引用包括在与二进制大对象关联的表中。根据本发明的一实施例,采用技术来确保在其CDF之前写的二进制大对象不作为未被引用的二进制大对象呈现给无用单元收集程序,从而导致无用单元收集实用程序删除最新写的二进制大对象。
根据本发明的一实施例,二进制大对象和CDF的写被认为构成一事务,且一标识符分配给该事务。当写二进制大对象时,事务标识符被用作二进制大对象的参考表中的占位符,以代替CDF的尚未产生的、将参考二进制大对象的内容地址。无用单元收集程序承认该占位符且将不删除二进制大对象。当CDF随后被写且其内容地址被计算时,二进制大对象参考表中的事务数字被CDF的内容地址代替。
应该意识到的是,本发明并不限于采用上面提及的在初始写二进制大对象时提供临时事务数字的技术,因为其它适当的技术可被采用来确保二进制大对象将不被无用单元收集程序删除。此外,在使用于不采用无用单元收集程序的系统中的本发明的实施例中,并不必采用该技术;其采用使用不同技术的无用单元收集程序来确定哪一二进制大对象应被删除(而不是寻找未被任何CDF参考的二进制大对象),或在它们相关联的CDF之前不写二进制大对象到存储系统的系统。
如上所述,本发明的一实施例适于与无用单元收集程序一起使用。无用单元收集程序可以是,例如,在存储系统上执行的后台处理以重新要求先前已被分配用于存储、但不再需要的磁盘空间(如因为保存在该空间中的CDF或二进制大对象已被标记为删除)。在本发明的一实施例中,无用单元收集程序搜索二进制大对象和CDF的参考表以寻找未被任何CDF参考的二进制大对象或CDF。当无用单元收集程序发现这样的二进制大对象或CDF时,无用单元收集程序将它们删除并将它们的对应项从参考表中移除。应该意识到的是,当无用单元收集程序“删除”特定的CDF或二进制大对象时,包括CDF或二进制大对象的文件可从存储系统的文件系统简单地移去。或者,在本发明的适于与希望更多安全删除的应用一起使用的一实施例中,保存二进制大对象或CDF数据的物理位置可被数据(如随机位或指定的位序列)盖写,使得二进制大对象或CDF的实际二进位数据被使用任何适当的技术擦掉或电子地“扯碎”。
在本发明的一实施例中,与每一未被标记为删除的CDF关联的参考表具有对CDF自身的循环引用,以确保如果CDF未被其它参考,无用单元收集程序将不以上述的方式将其作为未被参考的CDF删除。应该意识到的是,本发明并不限于该方面,因为其它不依赖于另一CDF的参考的缺少来作为删除CDF的无用单元收集技术可被使用。例如,当用在根据本发明的实施例时,其采用唯一的标识符来在CDF和二进制大对象之间区分,无用单元收集程序可注意该唯一的标识符并认可未被参考的CDF不应被删除,而只有未被参考的二进制大对象应被删除。
如上所述,在本发明的一实施例中,主机不被允许直接删除二进制大对象。也就是说,任何想直接删除二进制大对象的企图(如通过发送删除指令给具有二进制大对象的内容地址的存储系统)将被存储系统拒绝。该限制独立于应用程序或发出请求的主机的实用程序,或请求人的访问特权(例如,即使来自主机的系统管理员的请求也将被拒绝)。因而,主机仅可通过删除所有引用二进制大对象的CDF而删除二进制大对象,且一旦二进制大对象不再被任何CDF引用,其将被无用单元收集程序删除。
如上所述,在本发明的一实施例中,存储系统能够区分删除二进制大对象的请求和删除CDF的请求。在一实施例中,当主机发送删除请求给存储系统时,主机可包括将被删除的数据的内容地址,连同指示内容地址是否对应于二进制大对象或CDF的信息(如布尔值)。如果主机指出内容地址对应于二进制大对象,则存储系统将拒绝删除请求,如本发明一实施例中直接删除二进制大对象被禁止那样。然而,如果布尔值指出内容地址对应于CDF,存储系统将处理该请求以删除对应于由主机提供的内容地址的数据。在存储系统删除任何数据之前,存储系统检查与被请求删除的数据关联的元数据,以确定该数据的保存期是否已期满。在一实施例中,存储系统可在CDF自身的内容中发现与CDF关联的保存期。如果保存期已期满,存储系统可删除CDF。如果由主机提供的内容地址对应于二进制大对象(使得布尔值中的其对应于CDF的指示是错误的),存储系统将不能在二进制大对象的内容中发现保存期。当在将被删除的数据的内容中没有发现保存期时,存储系统将拒绝删除请求。因而,任何删除二进制大对象的请求将失败,因为存储系统不能在二进制大对象的内容中查找到保存期。这防止了主机通过直接删除二进制大对象本身而绕过在CDF中建立的保存期。
在另一实施例中,存储系统可基于添加到内容地址的另外的信息区分删除二进制大对象的请求和删除CDF的请求。如上所述,内容地址可源自二进制大对象或CDF的数据的散列。内容地址可包括另外的标识符来指示内容地址是否是二进制大对象或CDF的地址。标识符可位于内容地址内的任何地方。例如,当使用26字符散列值作为内容地址时,标识符可以是安排的另外的字符,使得散列值的13字符在标识符之前,及散列值的13字符在标识符之后。
删除CDF及关联的二进制大对象可以多种方式的任一方式执行。下面描述的技术可被认为是用于采用在特定系统结构内的另外的技术,因为只可提供一个技术用于删除CDF及其关联的二进制大对象。然而,根据本发明的一实施例,两个或多个下述的删除技术被提供在一个系统上(如由存储系统实施),使得用户被提供以用于执行删除的选择。如下面详述的,某些方法可能要求相当小量的初始处理并为无用单元收集程序留下相当大量的处理,而其它方法可能要求相当大量的初始处理而留下较少的工作让无用单元收集程序处理(如果无用单元收集程序被根本使用的话)。应该意识到的是,下述的删除技术仅在其确定(例如,在图4中的行动407)保存期已期满时执行1次。因而,下面的技术可被执行以实施在图4的过程中在行动409的删除CDF的行动。
第一方法被称为雇佣和遗忘(fire and forget)。如上所述,在一实施例中,CDF包括对其自身的循环引用(如,保存在引用表中的CDF的记录中)。响应于删除CDF的请求,在验证保存期已期满时,雇佣和遗忘方法简单地除去对CDF的循环引用。只要CDF未被任何其它CDF引用(在那种情况下,删除将不被授权),在无用单元收集程序发现CDF未被引用时,其将以上述的方式最后删除CDF。当无用单元收集程序删除CDF时,其还搜引用用表以查找任何其它由所删除的CDF引用的二进制大对象或CDF,并除去任何引用表记录,其识别那些正由所删除的CDF引用的二进制大对象和CDF。该移除可导致由CDF引用的二进制大对象不再由任何CDF引用,其将导致无用单元收集程序一旦发现二进制大对象未被引用而最后删除任何这样的二进制大对象。
雇佣和遗忘技术在开始是非常快的,因为存储系统在响应于主机CDF被删除之前只做相当少的处理,并留给无用单元收集程序大量的处理。雇佣和遗忘技术的特征在于当主机寻求通过删除其对应的CDF删除二进制大对象时,从存储系统返回的CDF已被删除的指示不是相应的二进制大对象(即使其现在未被引用)已被删除的指示,因为对于无用单元收集程序有一些滞后时间以搜索所有二进制大对象和CDF引用表并删除标识新近删除的CDF的所有表记录,其后才发现二进制大对象现在未被引用并删除它。作为该滞后时间的结果,即使在删除已被确认后数据仍可被读。
删除的第二方法被称为异步删除。如在雇佣和遗忘中那样,异步删除也将循环引用从CDF移除。然而,在异步删除中,CDF接着被移到不同的位置,其指明CDF已被删除并使CDF不再可由主机读。CDF的新位置可以是特殊的文件系统位置如“删除的文件夹”。应该意识到的是,删除的CDF可以任何适当的方式“移动”,包括与CDF关联的实际物理移动,其通过改变CDF的文件系统位置或使CDF具有一指出其现在在删除的文件夹中的指示符而实现。无用单元收集程序可访问删除的文件夹中的CDF并读那些删除的CDF的内容以确定哪一CDF和/或二进制大对象被引用。无用单元收集程序接着可从引用表中将任何引用删除的CDF的引用删除,作为前述删除的结果,且还删除任何未被引用的二进制大对象。
与雇佣和遗忘技术相比,在存储系统返回CDF已被删除的指示给主机之前,异步删除技术要求存储系统进行更超前的处理(即,将CDF移到删除的文件夹)。然而,该另外的超前处理减少了必须由无用单元收集程序处理的量,因为无用单元收集程序不必搜索所有CDF及二进制大对象引用表以确定哪一二进制大对象和/或CDF被删除的CDF引用,既然其可通过检查删除的文件夹中的删除的CDF的内容而直接获得信息。由于使用雇佣和遗忘技术,在被通知CDF已被删除的主机和引用的二进制大对象的删除结果之间有滞后时间,从而,根据无用单元收集程序被要求的处理较少的事实,当使用异步技术时滞后时间可以更少。
第三种删除方法被称为同步删除。在同步删除中,响应于删除CDF的请求,存储系统执行下述的超前的处理功能(1)移除CDF的循环引用;(2)删除CDF;(3)从引用表移除任何确定其它二进制大对象或CDF被删除的CDF引用的记录;及(4)删除当前未被任何CDF引用的任何二进制大对象。应该意识到的是,根据本发明的实施例,无用单元收集程序是不必要的,因为上述的同步删除技术的实施采取了必要的所有行动以实现删除,没有为无用单元收集实用程序留下任何工作。
与上述的其它删除技术相比,在指示主机删除已被完成之前,同步删除涉及到相当多的由存储系统进行的超前处理,但不会遭受上面提及的在删除被CDF引用的二进制大对象时的滞后,并消除了对无用单元实用程序的需要。因而,应该意识到的是,在此描述的本发明的实施例不限于与无用单元收集程序一起使用,因为其它删除技术也是可能的。
同步删除技术的一个变异是上面提及的功能的前三个可在初始执行,在指示主机CDF已被删除之前,第四步(移除任何未被引用的二进制大对象)可留给无用单元收集实用程序。
应该意识到的是,上述的删除方法仅为给出的例子。许多其它删除方法可被使用,因为本发明的各个方面并不限于任何特定删除技术的使用。
在本发明的一实施例中,存储系统提供给主机这样的能力,即使用清除指令直接删除二进制大对象。清除指令允许主机直接删除二进制大对象,但仅在二进制大对象未被任何CDF引用的前提下才行。删除CDF引用的二进制大对象的限制再次确保了存储系统的保持方案不可通过使用清除指令而被绕过。不像上述的其中CDF的内容地址被提供给存储系统以用于删除的删除方法,清除指令允许二进制大对象的内容地址可被直接提供给存储系统以用于删除。通过使用清除指令,不必等待无用单元收集程序删除二进制大对象,因为二进制大对象可被直接删除。
如上所述,本发明的一实施例致力于满足全球定义的保持标准的存储系统,其的一个例子为上面提及的SEC Rule 17a-4。这样的实施例可被称为定义顺从系统,其遵守外部建立的保持方针。在本发明的一实施例中,该顺从的存储系统防止主机、系统管理员或其它人进行与存储系统执行的保持方针不一致的修改或行动,以与全球定义的保持方针一致。
本发明的另一实施例致力于不必与任何全球定义的保持方针一致的系统。这样的实施例被称为定义非顺从系统。在本发明的一实施例中,非顺从存储系统可提供一接口,以任何适当的方式,其允许管理员确定想要的任何用户许可及保持政策。例如,一套保持政策可被建立,但主机或存储系统上的具有系统管理特权的用户可被授予直接删除数据单元的权力,尽管其与所定义的保持政策相违背。
申请人已意识到,某些存储系统可能存在二进制大对象和相关的CDF没有使用所描述的保持技术就被建立的情况,使得没有CDF具有与它们关联的保持信息,并使得某些系统用户可发现使用在此描述的保持技术升级这样的系统是更想要的。这样的升级可以由多种方式之一完成。例如,任何没有保存期的早先存在的CDF可被选择为期满、具有无限的保存期、或具有以任何适当方式定义的保存期。
在上述例子中,二进制大对象的保存期被保存在与二进制大对象关联的CDF中,然而,应该意识到的是,保存期可被保存在二进制大对象自身内。另外,在此描述的本发明的各个方面并不限于使用在采用CDF保存与二进制大对象关联的元数据的系统中,因为其它技术(如保存这样的信息在二进制大对象自身内)是可能的。
应该意识到的是,上面讨论的本发明的各个方面可以多种方式之一实施。例如,在此描述的几个保持政策均被论述为由存储系统实施。这些方面可被实施在一个或多个存储箱自身上面,存储箱包括存储装置(如,带驱动机构),或者,可被实施在不同的存储箱上面,其被布置为一个或多个主机和一个或多个数据保存于其上的存储系统之间的一个接口。在这种情况下,本发明的各个方面可被实施在系统中的任何计算机上。如在此所用的,术语计算机意于覆盖包括处理数据的处理器的任何设备,并可包括存储系统、网络部件、或任何其它计算装置。
本发明的上述实施例可以多种方式之一实施。例如,实施例可通过使用硬件、软件或它们的结合实施。当实施在软件中时,软件编码可在任何适当的处理器或处理器群上执行,无论是提供在一个计算机中还是分布在多个计算机中。应该意识到的是,执行上述功能的任何部件或部件群可被一般地认为是一个或多个控制器,其控制上述功能。一个或多个控制器可以多种方式实施,如使用专门的硬件、或使用一般目的的硬件(如一个或多个处理器),其被使用微码或软件编程以执行上面提及的功能。
在这种情况下,应该意识到的是,本发明的实施例中的一个实施包括至少一计算机可读的介质(如计算机存储器、软盘、光盘、磁带等),其被编码以计算机程序(即多个指令),其中,当在处理器上执行时,执行本发明的实施例的上述功能。计算机可读的介质是可运输的,使得保存于其上的程序可被装载到任何计算机系统资源上以实施在此论述的本发明的各个方面。此外,应该意识到的是,当被执行时,对执行上述功能的计算机程序的引用并不限于在主计算机上运行的应用程序。而是,术语计算机程序以其一般意义使用于此,以指任何类型的计算机代码(如软件或微码),其可被采用来编程处理器以实施本发明的上述各个方面。
应该意识到的是,根据本发明的几个实施例,其中程序被实施在计算机可读介质中,在它们执行期间,计算机实施的程序可手动接收输入(如从用户)。
在此使用的措词及术语均为描述的目的并不应被认为是限制。“包括”、“包含”或“具有”、“包含”、“涉及”及其同义词的使用意味着包括其后列出的项目及另外的项目。
上面已具体描述了本发明的几个实施例,对于本领域的那些技术人员,可进行各中修改和改进。这样的修改和改进被认为是在本发明的实质和范围内。因而,前述描述仅是示例性的,并不意为限制。本发明仅被限制为下述权利要求及其等价物所定义的内容。
权利要求
1.编码有指令的至少一计算机可读介质,当指令在计算机系统上执行时执行一方法,计算机系统包括至少一主机和至少一存储系统,该方法包括行动(A)从主机接收一删除存储在存储系统上的数据单元的请求;(B)确定先前定义的该数据单元的保存期是否已期满;及(C)当在行动(B)确定该数据单元的保存期尚未期满时,拒绝删除数据单元的请求。
2.根据权利要求1所述的至少一计算机可读介质,其中所述方法还包括行动(D)当在行动(B)确定该数据单元的保存期已期满时,删除数据单元。
3.根据权利要求1所述的至少一计算机可读介质,其中行动(A)、(B)、(C)均由存储系统执行。
4.根据权利要求1所述的至少一计算机可读介质,其中数据单元包括确定数据单元是何时保存在存储系统上的时间戳信息,其中行动(B)包括检查时间戳信息,且其中所述方法还包括从信任的源将时间信息发送给至少一主机的行动,使得至少一主机在创建时间戳时可使用该时间信息。
5.用于包括至少一主机和存储系统的计算机系统中的存储系统,存储系统包括至少一存储装置,以保存从至少一主机接收的数据;及至少一控制器,其从主机接收一删除存储在存储系统上的数据单元的请求;确定先前定义的该数据单元的保存期是否已期满;及当确定该数据单元的保存期尚未期满时,拒绝删除数据单元的请求。
6.根据权利要求5所述的存储系统,其中至少一控制器接收指明数据单元的保存期的信息。
7.根据权利要求5所述的存储系统,其中至少一控制器接收数据单元并将数据单元写到至少一存储装置。
8.用于包括至少一主机和存储系统的计算机系统中的存储系统,存储系统包括至少一存储装置,以保存从至少一主机接收的数据;及至少一控制器,其从主机接收至少一请求,以将数据单元保存在存储系统中至少直到在至少一请求中指明的保存期期满;将数据单元保存在至少一存储装置中;及将指明保存期的信息保存在至少一存储装置中。
9.一种在包括至少一主机和至少一存储系统的计算机系统中处理数据的方法,该方法包括行动(A)将至少一请求从主机传输到存储系统,其请求存储系统保存数据单元至少直到至少一请求中指明的保存期期满。
10.根据权利要求9所述的方法,其中行动(A)包括当传输请求时传输至少一指明保存期的请求,保存期至少部分基于生成时间,且还包括行动(B)从至少一存储系统指明的源接收时间信息;及(C)在建立生成时间时使用该时间信息。
全文摘要
本发明提供了一种用于存储系统上的数据保持的系统和方法。应用程序把将被存储在存储系统上的数据提供给存储系统。应用程序还提供保存期给存储系统,其指明数据不可被删除的时段。当存储系统接收到删除数据的请求时,其首先估计与该数据关联的保存期,以确定保存期是否已期满。如果保存期尚未期满,存储系统则拒绝删除数据的请求。
文档编号G06F1/00GK1629826SQ20041009853
公开日2005年6月22日 申请日期2004年12月9日 优先权日2003年12月9日
发明者迈克尔·基利恩, 马克·埃弗里, 斯蒂芬·托德, 汤姆·特格尔斯, 弗朗西斯·马滕斯, 简·布鲁恩东克斯 申请人:伊姆西公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1