管理存储系统中的冗余对象的方法和系统的制作方法

文档序号:6560377阅读:142来源:国知局
专利名称:管理存储系统中的冗余对象的方法和系统的制作方法
技术领域
本发明涉及用于管理存储系统中的冗余对象的方法、系统和制品。
背景技术
可以在存储管理服务器上实现诸如IBM*Tivoli*Storage Manager*(TSM)之类的存储管理应用。存储管理应用可以管理通过网络连接到存储管理服务器的多个客户机节点的存储要求。
存储管理应用可以创建和管理从客户机节点备份、存档、迁移或以其他方式复制到存储管理服务器的数据和程序的库。存储管理服务器可以将数据对象(如文件)存储在一个或多个存储池中,并且可以使用存储在存储管理服务器中的数据库来记录有关已存储的数据对象的信息。
存储管理应用可以执行从客户机节点到存储管理服务器的数据的增量备份、增量存档、迁移或增量复制。例如,如果存储管理应用包括备份应用,则所述备份应用可以执行增量备份操作,在所述增量备份操作中,只有在自先前的周期性完整备份以来已更改了文件时才备份该文件,其中周期性完整备份可以在每周、每月或某些其他周期性的基础上执行。TSM通过使用“渐进增量备份”来扩展增量备份,其中对象被备份一次并且然后永远不会再次被备份,除非在客户机节点上修改了该对象。用于数据的备份、存档或复制等的渐进增量方法可以减少必须从客户机节点复制或移动到存储管理服务器的数据量,并且与数据备份、存档或复制的增量方法相比,可以减小网络流量和存储空间要求。渐进增量备份方法可以使用数据库,该数据库记录了与每个已存储对象和每个对象存储在该处的位置有关的信息。
在某些计算环境中,不同的客户机节点可以将相同的文件存储在存储管理服务器中。例如,客户机节点可以具有相同的操作系统文件或同一项目的不同用户可以将相同的文档本地地存储在不同的客户机节点上。将相同的数据对象存储在不同的客户机节点中可以引起备份操作的冗余,因为可能从不同的客户机节点将相同的文件备份并存储在存储管理服务器上,并且即使在使用渐进增量方法的系统中也可以导致低效率。虽然以下说明参考数据备份描述了实施例,但是可以理解,备选实施例可以用于数据存档、数据迁移等。

发明内容
本发明提供了一种方法、系统和制品,其中从多个客户机节点选择一个客户机节点。判定是否必须存储对应于客户机节点的对象。判定所述一个选定的客户机节点是否已将所述对象存储在服务器节点中。响应于判定所述一个选定的客户机节点尚未将所述对象存储在所述服务器节点中,将所述对象存储在所述服务器节点中。
在某些其他实施例中,所述一个选定的客户机节点是第一计算设备,其中所述服务器节点是第二计算设备,其中与所述多个客户机节点中的其他客户机节点相比,是所述第一计算设备的所述选定的客户机节点更可能已备份对象,其中所述已备份的对象可以由所述其他客户机节点使用。
在其他实施例中,将与所述多个客户机节点的对象对应的数据库表项存储在所述服务器节点中,其中所述数据库表项包括对应于所述对象的元数据。将指向由所述一个选定的客户机节点存储在所述服务器节点中的那些对象的引用包括在所述数据库表项中。
在其他实施例中,判定是否已由所述一个选定的客户机节点将所述对象存储在所述服务器节点中还包括为请求由所述客户机节点存储的对象计算校验和,以响应从所述数据库表项判定所述一个选定的客户机节点已存储至少一个与请求由所述客户机节点存储的对象具有相同元数据的对象。如果所述对象的所述计算的校验和与先前由所述一个选定的客户机存储的所述至少一个对象的计算的校验和相同,则做出所述对象已被存储在所述服务器节点中的判定。
在其他实施例中,为所述多个客户机节点判定是否已由所述一个选定的客户机节点将包括在所述多个客户机节点中的对象存储在所述服务器节点中的时间复杂度相对于所述多个客户机节点的数量是线性的。
在其他实施例中,所述服务器节点将由所述一个选定的客户机节点备份的数据存储在第一存储介质中,与其中存储了由与所述一个选定的客户机节点不同的客户机节点备份的数据的第二存储介质相比,访问所述第一存储介质较快。
在其他实施例中,在单个计算设备中实现所述服务器节点和所述一个选定的客户机节点,其中所述服务器和所述多个客户机节点可以在客户机服务器环境和对等环境中通信。


现在参考附图,其中相同的标号表示附图中相应的部分图1示出了根据某些实施例的计算环境的方块图;图2示出了根据某些实施例的如何从多个客户机节点将对象备份到服务器节点的第一流程图;图3a、3b示出了根据某些实施例的可在其中将对象备份到服务器节点的示例性存储介质的方块图;图4示出了根据某些实施例的用于维护对象的清单表项的示例性数据库;图5是示出了图4的清单表项的使用并进一步示出了如何从多个客户机节点将对象备份到服务器节点的第二流程图;图6是示出了根据某些实施例的如何判定要从客户机节点备份的对象是否已由模型节点备份的第三流程图;图7是示出了根据某些实施例的如何根据是否已由选定的客户机节点将对象存储在服务器节点中来从客户机节点将对象存储到服务器节点的第四流程图;以及图8示出了计算机系统的体系结构,其中在某些实施例中,可以根据所述计算机系统的体系结构来实现图1的计算环境的服务器和客户机。
具体实施例方式
在以下说明中,参考了形成本说明书的一部分并示出了若干实施例的附图。应当理解,可以采用其他实施例并且可以做出结构和操作更改。例如,虽然以下说明参考数据备份描述了实施例,但是可以理解,备选实施例可以用于数据存档、数据迁移等。
存储管理系统中的冗余对象某些存储管理应用通过识别先前已由其他客户机节点备份的对象并通过不从多个客户机节点备份同一对象的多个实例来减少冗余。虽然此类方法可以减少冗余,但是需要大量处理以判定特定对象是否已由任何其他客户机节点备份。如果存在n个客户机节点,则实现此类方法的方法的时间复杂度可以是O(n2)。结果,此类方法不能很好地扩展。例如,如果客户机节点的数量翻倍,则所需时间可能翻四倍,而如果客户机节点的数量翻三倍,则所需时间可能呈九倍地增加。
此外,如果对象存储在可移动介质(例如,磁带)中,则最初或后续的备份时,恢复时间将变得很长,因为恢复可能需要安装和定位许多磁带以访问由不同客户机节点在不同的时间备份的冗余对象。
此外,如果对象是由其他客户机节点备份的,则可能不能查询与特定客户机节点相关的对象属性。例如,两个客户机节点可以在有限的时间段内拥有相同的冗余对象,但是对象可在不同的时间被修改或由不同客户机节点上的不同策略来管理。
某些实施例解决了某些存储管理系统的某些或所有上述缺点。
减少冗余对象图1示出了根据某些实施例的计算环境100的方块图。至少一个计算平台102(其中在某些实施例中计算平台102可以包括服务器)通过网络104连接到多个计算平台106a、106b...106n,其中在某些实施例中多个计算平台106a...106n可以包括客户机节点。虽然图1指示计算平台102为服务器,计算平台106a...106n为客户机节点,但是在备选实施例中,计算平台102、106a...106n可以包括任何适合的计算平台,包括本领域中公知的计算平台,如个人计算机、工作站、大型机、中型计算机、网络家电、掌上电脑、电话设备、刀片计算机、手提电脑等。服务器102还可以称为服务器节点并且客户机节点106a...106n还可以称为客户机。可以在并不基于客户机-服务器范例的计算环境中实现备选实施例。例如,可以在对等联网环境中实现备选实施例。
在某些实施例中,选定的客户机节点(如客户机节点106a)被指定为模型节点106a。虽然图1示出了将客户机节点106a指定为模型节点,但是在备选实施例中,不同的客户机节点(如客户机节点106b)可以被指定为模型节点。
可以通过计算机程序来选择模型节点106a或由用户来指定模型节点106a。可以根据某一准则来选择模型节点106a,以便要从客户机节点106b...106n备份到服务器102的对象更可能已从模型节点106a而不是任何其他客户机节点被备份。
可以直接或通过任何本领域中公知的网络104(如存储区域网络(SAN)、局域网(LAN)、广域网(WAN)、因特网、内联网等)将服务器102连接到客户机节点106a...106n。
存储管理应用108、数据库110和存储112可以连接到服务器102。虽然图1示出了存储112在服务器内,但是在某些实施例中,存储112可以在服务器102的外部并且可以包括通过网络连接到服务器的存储单元。出于应用的目的,可以将服务器102(也称为服务器节点102)看作包括存储112而无论存储112是在服务器102的内部还是外部。在某些实施例中,服务器102可用于备份处理。在其他实施例中,服务器102可用于数据的存档、迁移或复制。
存储管理应用108可以允许对象从模型节点106a备份到存储112并且存储为模型节点备份数据114a。同样,存储管理应用108还可以允许对象从客户机节点106b...106n备份到存储112并且存储为客户机节点备份数据114b...114n。例如,可以将来自客户机节点106b的对象在存储112中备份为客户机备份数据114b。
数据库110包括具有模型节点106a和客户机节点106b...106n的每个备份对象的表项的清单。存储管理应用108可以在数据库110中查询与任何客户机节点106b...106n的一个或多个对象对应的清单信息,即使可能已从模型节点106a存储了某些查询的对象。
因此,图1示出了其中存储管理应用108允许模型节点106a在存储112中备份对象的某些实施例。响应于来自客户机节点(如客户机节点106b)的将对象备份到存储112的请求,存储管理应用108判定该对象是否已由模型节点106a备份。如果尚未由模型节点106a备份对象,则客户机节点将与该对象对应的数据发送到存储112。如果已由模型节点106a备份了对象,则生成到由模型节点106a备份的先前存在的对象的引用以提供客户机节点的备份数据。
图2是示出了根据某些实施例的如何从多个客户机节点106a...106n将对象备份到服务器节点102的第一流程图。
控制开始于方块200,在方块200,客户机节点(如客户机节点106a)被指定为模型节点106a。如上所述,可以根据某一准则来选择模型节点106a,以便要从客户机节点106b...106n备份到服务器102的对象更可能已从模型节点106a而不是任何其他客户机节点被备份。但是,可以使用多种不同的方法将客户机节点指定为模型节点106a。在备选实施例中,可以将固定数量的客户机节点指定为模型节点,而不是将单个客户机节点指定为模型节点106a。例如,在某些实施例中,可以将两个客户机节点106a、106b指定为模型节点106a、106b。在这种情况下,可以根据某一准则来选择模型节点106a、106b,以便要从客户机节点备份到服务器102的对象更可能已从模型节点106a、106b而不是任何其他客户机节点被备份。
在某些实施例中,模型节点106a可以具有在多个客户机节点106b...106n中存在的通用应用和数据。例如,模型节点106a可以由系统管理员使用,系统管理员使用对操作系统和软件应用的最新更新(当此类更新被分布时)来更新模型节点106a。可以将模型节点106a的对象备份在服务器102中。在某些实施例中,如果已由模型节点106a备份了对象,则特定的客户机节点(如客户机节点106b...106n中的任何节点)可以通过更新数据库110来将对象备份到服务器102,以便显示已为该特定客户机节点备份了对象,尽管该特定客户机节点实际并不需要将数据发送到服务器。例如,尽管已由模型节点106a备份了对象,但是仍可以通过创建对先前由模型节点106a存储的对象的元数据引用来为其他节点备份该对象。
从方块200开始,经过一段时间间隔之后(方块201),控制进入到方块202,在方块202,存储管理应用108接收到备份对象的请求。所述对象可以包括文件或任何其他数据。此外,无需在执行方块200时立即执行方块202。例如,可以在接收备份对象的请求之前选择模型节点106a。方块200和方块202的执行之间的时间间隔由图2中的虚线来指示。
存储管理应用108(在方块204)判定所述请求是否是从模型节点106a接收的。如果是,则存储管理应用108(在方块206)允许将对象备份到连接到服务器102的存储112中的模型节点备份数据114a并且控制返回方块202,在方块202,存储管理应用108接收下一个备份对象的请求。
如果在方块204处,存储管理应用108判定未从模型节点106a接收到请求,则可以推断所述备份对象的请求是从客户机节点106b...106n接收的。存储管理应用108(在方块208)判定是否已将所述对象备份在服务器102的模型节点备份数据114a中。如果是,则不需要将对象发送到服务器102,因为已由模型节点106a将对象备份在服务器102中。实际上,可以通过创建对先前由模型节点106a存储在服务器102中的对象的元数据引用来备份所述对象。控制返回方块202,在方块202,存储管理应用108接收下一个备份对象的请求。
如果在方块208处,存储管理应用108判定尚未将对象备份在服务器102的模型节点备份数据114a中,则存储管理应用108(在方块210)将对象备份到与正在备份其对象的客户机对应的客户机备份数据中的存储112。控制返回方块202,在方块202,存储管理应用108接收下一个备份对象的请求。
因此,图2示出了其中在从客户机节点备份对象时,存储管理应用108检查在模型节点106a中找到的冗余对象,但是不检查在不同于模型节点106a的客户机节点中找到的冗余对象的某些实施例。结果,可以在时间复杂度O(n)内执行为所有客户机节点检查冗余对象(其中n是客户机节点数),就时间而言,这比使用时间复杂度O(n2)实现此类方法的算法更有效。注意,在图2示出的某些实施例中,对于单个客户机节点,可以在恒定时间内执行查找冗余对象。
通过避免在模型节点106a之外的节点中检查冗余对象,可能由多个客户机节点将某些对象冗余地存储在服务器102中。但是。将时间复杂度减少到O(n)的优点很重要,足以使得可以在服务器102中容忍某些有限数目的冗余对象。
图3a、3b是示出了根据某些实施例的其中可以在服务器节点102中备份对象的示例性存储介质的方块图。
在图3a中,连接到服务器102的示例性存储300可以包括盘302a或某些其他直接访问存储设备302a,其中盘302a存储模型节点备份数据114a。连接到服务器102的可移动介质302b...302n(如磁带)存储客户机备份数据114b...114n。如果计算环境100包括示例性存储300,则从磁带恢复特定客户机节点的数据时,只需安装和定位用于该特定客户机节点的磁带,因为模型节点106a的数据已存储在盘302a中。由于仅安装和定位用于该特定客户机节点的磁带,所以与各种其他方法相比,数据恢复可以更快。
在图3b中,连接到服务器102的示例性存储304可以包括多个可移动介质306a...306n(如磁带)。磁带306a存储模型节点备份数据114a,并且磁带306b...306n分别存储客户机备份数据114b...114n。如果计算环境100包括示例性存储304,则从磁带恢复特定客户机节点的数据时,只需安装和定位用于模型节点备份数据114a的磁带306a和用于该特定客户机节点的磁带。由于只有磁带306a用于模型节点备份数据114a,除了磁带306a之外,安装和定位用于该特定客户机节点的磁带并且与各种其他方法相比,数据恢复可以更快。
因此,图3示出了其中模型节点的备份数据存储在一个存储介质中,而每个特定客户机节点的备份数据存储在相应特定的存储介质中,即对于每个客户机节点,存在特定的存储介质来存储客户机节点的备份数据的某些实施例。这样,与不同客户机节点对应的备份数据被存储在不同的存储介质中。由于特定客户机节点的所有数据都位于存储介质(如磁带)中,所以只需安装和定位与该特定客户机节点对应的存储介质以及与模型节点对应的存储介质(如果需要)来为该特定客户机节点恢复数据。在其中模型节点的数据存储在盘中的实施例中,无需为与模型节点对应的备份数据定位磁带。在其中模型节点和客户机节点的数据存储在盘中的某些备选实施例中,无需为恢复数据而定位磁带。此外,在某些实施例中,多个节点114a...114n的客户机备份可以存储在单个磁带上,并且实施例不要求卷仅包含单个客户机的数据。
图4示出了根据某些实施例的在服务器102中实现的用于维护对象的清单表项的示例性数据库400。
示例性数据库400可以包括模型节点106a的对象的清单表项402a,以及客户机节点106b...106n的对象的清单表项402b...402n。在图4中,为了说明示出了客户机节点106b的对象的清单表项402b的数据结构。
客户机节点106b的清单表项402b包括与客户机节点106b的对象对应的多个对象清单表项404a...404m。示例性对象清单表项404a可以包括相应对象的元数据406,其中元数据406可以包括指示对象对于客户机节点106b是活动的还是非活动的活动/非活动指示符408。示例性对象清单表项404a还可以包括指示何时为客户机节点106b备份了对象(尽管先前已为模型节点106a存储了对象)的对象备份时间410。此外,示例性对象清单表项404a还可以包括指示根据其为客户机节点106b管理对象的策略的对象管理策略412,尽管可以将不同的策略用于其他客户机节点上的相同对象。示例性对象清单表项404a还可以包括客户机节点106b的对象的安全属性414,其中对于不同客户机节点上的相同对象,所述安全属性可以是不同的。
除了元数据406之外,对象清单表项404a还可以包括对模型节点106a的相应对象清单表项的引用,如果实际上由模型节点106a备份了对象的话。在某些实施例中,只要存在来自其他客户机节点的对模型节点106a的对象清单表项的引用,就不会删除模型节点106a的对象清单表项。
为了说明在示例性数据库400中示出了数据结构。在备选实施例中,可以不同地构造示例性数据库400。
示例性数据库通过存储对模型节点的相应对象清单表项的引用416来减少节点的冗余,但是同时通过将属性存储在元数据406中来允许不同节点上的相同对象具有不同的属性。例如,与客户机节点106n相比,对于相同的对象,客户机节点106b可以具有不同的安全属性414。还可以在示例性数据库400中查询与特定客户机节点的对象有关的信息,即使所述对象中的某些对象已存储在模型节点106a中。
图5是示出了图4的清单表项402b的使用并进一步示出了如何从多个客户机节点106a...106n将对象备份到服务器节点102的第二流程图。
控制开始于方块500,在方块500,客户机节点(如客户机节点106a)被指定为模型节点106a。从方块500,控制进入到方块502,在方块502,服务器102上的存储管理应用108接收来自客户机节点的请求。在某些示例性实施例中,所述请求与对象相关。在其他示例性实施例中,所述请求可以是提供与特定模式相匹配的文件的列表。在其他实施例中,所述请求可以是更改密码。在其他实施例中可以做出其他类型的请求。在某些实施例中,与将一个或多个对象备份到服务器102一起,可能已将与在方块502中接收的请求对应的元数据406存储在示例性数据库400中。客户机节点可以使用元数据406来判定是否需要备份对象。例如,如果对象存储在客户机节点中,但是在服务器102中没有该对象的相应清单表项,则客户机可以发送备份该对象的请求。备份操作还可以包括引用先前由模型节点106a存储的对象。
存储管理应用108(在方块504)判定请求是否是备份对象。如果否,则存储管理应用108(在方块506)处理该请求,其中该请求的处理可以包括访问存储在示例性数据库400中的对象的元数据406。控制返回方块502以处理下一个请求。
如果存储管理应用108(在方块504)判定所述请求是备份对象,则存储管理应用108(在方块508)判定所述请求是否是从模型节点106a接收的。如果是,则存储管理应用108(在方块510)允许将对象备份到与服务器102相连的存储112中的模型节点备份数据114a。存储管理应用108在示例性数据库400中更新(在方块512)与对象对应的元数据406。在执行方块512期间,元数据包括由模型节点106a存储的对象的校验和。可以在图6的方块606(稍后进行描述)中使用此校验和来判定模型节点106a是否已存储了对象。控制返回到方块502,在方块502,存储管理应用108接收下一个请求。在某些实施例中,存储管理应用108在元数据之前存储数据,以确保将元数据添加到示例性数据库400之前已成功地存储了所述数据。
如果在方块508,存储管理应用108判定没有从模型节点106接收请求,则可以推断是从客户机节点106b...106n接收了备份对象的请求。存储管理应用108(在方块514)判定是否已将对象备份在服务器102的模型节点备份数据114a中。如果是,则不需要重新发送所述对象,因为已由模型节点106a在服务器102中备份了对象。备份可以包括通过创建或更新对模型节点416的相应对象清单表项的引用来(在方块516)引用由模型节点106a备份的已有的对象。此外,创建或更新(在方块516)与示例性数据库400的清单表项402b中的对象对应的元数据406之后,控制返回到方块502,在方块502,存储管理应用108接收下一个请求。
如果在方块514,存储管理应用108判定尚未将对象备份在服务器102的模型节点备份数据114a中,则存储管理应用108(在方块518)将对象备份到与正在备份其对象的客户机对应的客户机备份数据中的存储112。存储管理应用108(在方块520)更新与清单表项402中的对象对应的元数据406,然后控制返回到方块502,在方块502,存储管理应用108接收下一个请求。
因此,图5示出了其中可以在响应从客户机到服务器102的请求的过程中访问或更新与对象对应的元数据的某些实施例。图5还示出了其中在从客户机节点备份对象时,存储管理应用108检查在模型节点106a中找到的冗余对象而不检查在不同于模型节点106a的客户机节点中找到的冗余对象的某些实施例。
图6是示出了根据某些实施例的如何判定是否已由模型节点106a备份了要从客户机节点备份的对象的第三流程图。图6的流程图中描述的操作可以由服务器102中的存储管理应用108实现。图6中示出的操作可用于实现图2的方块208或图5的方块514中描述的操作。
控制开始于方块600,在方块600,存储管理应用108从示例性数据库400判定模型节点106a是否拥有与要从客户机节点备份的对象具有相同名称、大小和时间戳的对象。除了名称、大小和时间戳之外的其他对象属性也可以用于方块600中的比较。
如果存储管理应用108从示例性数据库400判定(在方块600)模型节点106a并不拥有与要从客户机节点备份的对象具有相同名称、大小和时间戳的对象,则(在方块602)判定尚未在服务器102的模型节点备份数据114a中备份对象。
如果存储管理应用108从示例性数据库400判定(在方块600)模型节点106a拥有与要从客户机节点备份的对象具有相同名称、大小和时间戳的对象,则控制进入到方块604,在方块604,存储管理应用108计算要从客户机节点备份的对象的校验和。在备选实施例中,可以计算对象的其他函数(如散列函数)。
控制进入方块606,在方块606,存储管理应用108判定计算的校验和与方块600中找到的模型节点106a中的对象的先前存储的校验和是否相同。如果是,则(在方块608)判定已在服务器102的模型节点备份数据114a中备份了对象。如果否,则(在方块602)判定尚未在服务器102的模型节点备份数据114a中备份对象。
图6中描述的操作仅检查作为候选备份对象的那些对象。对适当模型节点106a的对象执行匹配检查并且在其他关键属性不匹配的情况下不会计算校验和。此外,示例性数据库400可以与关键字一起使用以促进快速检查从模型节点106a存储在服务器102中的对象的潜在匹配。
图7是示出了根据某些实施例的如何根据是否已由选定的客户机节点将对象存储在服务器节点102中来从客户机节点将对象存储到服务器节点102的第四流程图。在某些实施例中,可以在服务器102的存储管理应用108中实现图7中所示的操作。
控制开始于方块700,在方块700,存储管理应用108从多个客户机节点106a...106n中选择一个客户机节点106a。在某些实施例中,所述选定的一个客户机节点106a可以包括模型节点106a。
服务器节点102中的存储管理应用108判定(在方块702)必须存储与客户机节点(如客户机节点106b...106n中的任何节点)对应的对象。在某些实施例中,在方块702做出所述判定以响应存储管理应用108从客户机节点接收到将对象存储在服务器节点102中的请求。在某些其他实施例中,服务器节点102可以包括连接到服务器节点102的存储112。
存储管理应用108(在方块704)判定是否已由一个选定的客户机节点106a将对象存储在服务器节点102中。存储管理应用108(在方块706)将对象存储在服务器节点102,以响应判定尚未由一个选定的客户机节点106a将对象存储在服务器节点中。
在某些实施例中,存储管理应用108可以接收恢复对象的请求。如果恢复对象的请求来自模型节点106a,则存储管理应用108处理与对象对应的元数据并恢复对象。但是,如果恢复对象的请求来自客户机节点(如,客户机节点106b...106n中的任何节点),则存储管理应用108处理与对象对应的元数据并且可能发现有必要通过遵循对模型节点的相应对象清单表项的引用416来恢复对象。
某些实施例允许在时间复杂度O(n)内执行为所有客户机节点检查冗余对象,其中n是客户机节点数。存储在数据库400中的对象的清单表项允许不同客户机节点上的相同对象存在属性差异,尽管可以仅为模型节点106a将对象存储在服务器中。通过首先检查两个对象是否具有相似的属性,然后如果必要比较对象的校验和来判定对象是否匹配(如,对象是否为冗余对象),减少了匹配冗余对象的时间。
其他实施例的详细信息所述技术可以实现为包括软件、固件、微码、硬件和/或它们的任意组合的方法、装置或制品。在此使用的术语“制品”指在介质中实现的代码或逻辑,其中此类介质可以包括硬件逻辑[例如,集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC)等]或计算机可读介质,如磁存储介质(例如,硬盘驱动器、软盘、磁带等)、光存储(CD-ROM、光盘等)、易失性和非易失性存储器设备[例如,电可擦除可编程只读存储器(EEPROM)、只读存储器(ROM)、可编程只读存储器(PROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、固件、可编程逻辑等]。由处理器来存取和执行所述计算机可读介质中的代码。其中编码所述代码或逻辑的介质还可以包括通过空间传播的传输信号或诸如光纤、铜线之类的传输介质。其中编码所述代码或逻辑的传输信号还可以包括无线信号、卫星传输、无线电波、红外线信号、蓝牙等。其中编码所述代码或逻辑的传输信号能够通过发射站发射并且通过接收站接收,其中在传输信号中编码的代码或逻辑可以被解码并存储在硬件或接收和发射站或设备处的计算机可读介质中。此外,“制品”可以包括其中包含、处理和执行代码的硬件和软件组件的组合。当然,本领域的技术人员将认识到,可以做出许多修改而不偏离实施例的范围,并且所述制品可以包括任何信息承载介质。例如,所述制品包括其中存储有指令(当由机器执行时,所述指令将导致操作被执行)的存储介质。
某些实施例可以采取完全硬件实施例、完全软件实施例或包含硬件和软件元素两者的实施例的形式。在一个优选实施例中,本发明以软件实现,所述软件包括但不限于固件、驻留软件、微代码等。
此外,某些实施例可以采取可从计算机可用或计算机可读介质访问的计算机程序产品的形式,所述计算机可用或计算机可读介质提供了可以被计算机或任何指令执行系统使用或与计算机或任何指令执行系统结合的程序代码。出于此描述的目的,计算机可用或计算机可读介质可以是任何能够包含、存储、传送、传播或传输由指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备结合的程序的装置。所述介质可以是电、磁、光、电磁、红外线或半导体系统(或装置或设备)或传播介质。计算机可读介质的实例包括半导体或固态存储器、磁带、可移动计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的当前实例包括压缩盘-只读存储器(CD-ROM)、压缩盘-读/写(CR-R/W)和DVD。
术语“特定实施例”、“一个实施例”、“实施例”、“多个实施例”、“所述实施例”、“所述多个实施例”、“一个或多个实施例”、“某些实施例”和“某一实施例”指一个或多个(但不是所有)实施例,除非另外明确指出。术语“包含”、“包括”、“具有”及其变型指“包括但不限于”,除非另外明确指出。列举的项目的列表并非暗示任何或所有的项目互相排斥,除非另外明确指出。术语“a”、“an”和“the”指“一个或多个”,除非另外明确指出。
相互通信的设备不必持续地相互通信,除非另外明确指出。此外,相互通信的设备可以通过一个或多个媒介直接或间接地通信。此外,具有若干相互通信的组件的实施例的描述并非暗示所有此类组件都是必需的。相反,描述了多种可选的组件以说明更多可能的实施例。
此外,尽管可以按照连续的顺序来描述处理步骤、方法步骤、算法或类似步骤,但是此类处理、方法和算法可以被配置为以替代顺序工作。换句话说,所描述的步骤的任何序列或顺序并不一定指示要求按此顺序执行步骤。实际可以按任何顺序执行在此描述的处理的步骤。此外,可以同时、并行或并发地执行某些步骤。
当在此描述单个设备或物品时,将显而易见的是,可以使用多个设备/物品(无论它们是否协作)来代替单个设备/物品。同样,当在此描述了多个设备或物品(无论它们是否协作)的情况下,将显而易见的是,可以使用单个设备或物品来代替多个设备或物品。设备的功能和/或特性可以替代地由一个或多个其他未明确描述为具有此类功能/特性的设备来体现。因此,其他实施例不必包括设备本身。
图8示出了示例性计算机系统800。其中在某些实施例中,可以根据计算机系统800的计算机体系结构来实现图1的计算环境100的服务器102和客户机节点106a...106n。计算机系统800还可以称为系统,并且可以包括电路802,在某些实施例中还可以包括处理器804。系统800还可以包括存储器806(例如,易失性存储器)和存储808。系统800的某些元素可以或者不能在服务器102和客户机节点106a...106n中找到。存储808可以包括非易失性存储设备(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、闪存、固件、可编程逻辑等)、磁盘驱动器、光盘驱动器、磁带驱动器等。存储808可以包括内部存储设备、附加存储设备和/或可通过网络访问的存储设备。系统800可以包括程序逻辑810,程序逻辑810包括可以加载到存储器806中并由处理器804或电路802执行的代码812。在某些实施例中,包括代码812的程序逻辑810可以存储在存储808中。在某些其他实施例中,可以在电路802中实现程序逻辑810。因此,虽然图8示出了程序逻辑810与其他元素分离,但是程序逻辑810可以在存储器806和/或电路802中实现。
某些实施例可以涉及用于由个人或集成计算机可读代码的自动处理将计算指令部署到计算系统中的方法,其中所述代码结合所述计算系统被使能执行所描述的实施例的操作。
至少可以并行以及顺序执行图2、5、6和7中示出的某些操作。在备选实施例中,可以以不同的顺序执行、修改或删除某些操作。
此外,出于说明的目的在单独的模块中描述了许多软件和硬件组件。此类组件可以集成到更少数量的组件中或者分成更多数量的组件。另外,所描述的由特定组件执行的某些操作可以由其他组件来执行。
图1-8中示出或指出的数据结构和组件被描述为具有特定类型的信息。在备选实施例中,可以不同地构造所述数据结构和组件,并且与图中示出或指出的数据结构和组件相比,可以具有更少的、更多的或不同的字段或不同的功能。因此,出于说明和描述目的提供了以上实施例的描述。其并非旨在是穷举的或将所述实施例限于已披露的精确形式。根据上述教导,可以做出许多修改和变型。
*IBM、Tivoli以及Tivoli Storage Manager是IBM公司的商标或注册商标。
权利要求
1.一种方法,所述方法包括从多个客户机节点选择一个客户机节点;判定必须存储与客户机节点对应的对象;判定是否已由所述一个选定的客户机节点将所述对象存储在服务器节点中;以及将所述对象存储在所述服务器节点处,以响应判定尚未由所述一个选定的客户机节点将所述对象存储在所述服务器节点中。
2.根据权利要求1的方法,其中所述一个选定的客户机节点是第一计算设备,其中所述服务器节点是第二计算设备,其中与所述多个客户机节点中的其他客户机节点相比,是所述第一计算设备的所述选定的客户机节点更可能已备份对象,其中所述已备份的对象可以由所述其他客户机节点使用。
3.根据权利要求1的方法,还包括将与所述多个客户机节点的对象对应的数据库表项存储在所述服务器节点中,其中所述数据库表项包括对应于所述对象的元数据;以及将指向由所述一个选定的客户机节点存储在所述服务器节点中的那些对象的引用包括在所述数据库表项中。
4.根据权利要求3的方法,其中判定是否已由所述一个选定的客户机节点将所述对象存储在所述服务器节点中还包括为请求由所述客户机节点存储的对象计算校验和,以响应从所述数据库表项判定所述一个选定的客户机节点已存储至少一个与请求由所述客户机节点存储的所述对象具有相同元数据的对象;以及如果所述对象的所述计算的校验和与先前由所述一个选定的客户机存储的所述至少一个对象的计算的校验和相同,则判定所述对象已被存储在所述服务器节点中。
5.根据权利要求1的方法,其中为所述多个客户机节点判定是否已由所述一个选定的客户机节点将包括在所述多个客户机节点中的对象存储在所述服务器节点中的时间复杂度相对于所述多个客户机节点的数量是线性的。
6.根据权利要求1的方法,其中所述服务器节点将由所述一个选定的客户机节点备份的数据存储在第一存储介质中,与其中存储了由与所述一个选定的客户机节点不同的客户机节点备份的数据的第二存储介质相比,访问所述第一存储介质较快。
7.根据权利要求1的方法,其中在单个计算设备中实现所述服务器节点和所述一个选定的客户机节点,其中所述服务器和所述多个客户机节点可以在客户机服务器环境和对等环境中通信。
8.一种系统,其中服务器节点连接到具有一个选定的客户机节点的多个客户机节点,所述系统包括存储器;以及连接到所述存储器的处理器,其中所述处理器可以执行下列操作(i)判定必须存储与所述多个客户机节点中的客户机节点对应的对象;(ii)判定是否已由所述一个选定的客户机节点将所述对象存储在所述服务器节点中;以及(iii)将所述对象存储在所述服务器节点处,以响应判定尚未由所述一个选定的客户机节点将所述对象存储在所述服务器节点中。
9.根据权利要求8的系统,其中所述一个选定的客户机节点是第一计算设备,其中所述服务器节点是第二计算设备,其中与所述多个客户机节点中的其他客户机节点相比,是所述第一计算设备的所述选定的客户机节点更可能已备份对象,其中所述已备份的对象可以由所述其他客户机节点使用。
10.根据权利要求8的系统,其中所述处理器还可以执行下列操作将与所述多个客户机节点的对象对应的数据库表项存储在所述服务器节点中,其中所述数据库表项包括对应于所述对象的元数据;以及将指向由所述一个选定的客户机节点存储在所述服务器节点中的那些对象的引用包括在所述数据库表项中。
11.根据权利要求10的系统,其中为了判定是否已由所述一个选定的客户机节点将所述对象存储在所述服务器节点中,所述处理器执行下列操作为请求由所述客户机节点存储的对象计算校验和,以响应从所述数据库表项判定所述一个选定的客户机节点已存储至少一个与请求由所述客户机节点存储的所述对象具有相同元数据的对象;以及如果所述对象的所述计算的校验和与先前由所述一个选定的客户机存储的所述至少一个对象的计算的校验和相同,则判定所述对象已被存储在所述服务器节点中。
12.根据权利要求8的系统,其中为所述多个客户机节点判定是否已由所述一个选定的客户机节点将包括在所述多个客户机节点中的对象存储在所述服务器节点中的时间复杂度相对于所述多个客户机节点的数量是线性的。
13.根据权利要求8的系统,其中所述服务器节点将由所述一个选定的客户机节点备份的数据存储在第一存储介质中,与其中存储了由与所述一个选定的客户机节点不同的客户机节点备份的数据的第二存储介质相比,访问所述第一存储介质较快。
14.根据权利要求8的系统,其中在单个计算设备中实现所述服务器节点和所述一个选定的客户机节点,其中所述服务器和所述多个客户机节点可以在客户机服务器环境和对等环境中通信。
15.一件用于控制连接到具有一个选定的客户机节点的多个客户机节点的服务器节点的制品,其中所述制品能够导致执行操作,所述操作包括判定必须存储与客户机节点对应的对象;判定是否已由所述一个选定的客户机节点将所述对象存储在所述服务器节点中;以及将所述对象存储在所述服务器节点处,以响应判定尚未由所述一个选定的客户机节点将所述对象存储在所述服务器节点中。
16.根据权利要求15的制品,其中所述制品是计算机可读介质,其中所述一个选定的客户机节点是第一计算设备,其中所述服务器节点是第二计算设备,其中与所述多个客户机节点中的其他客户机节点相比,是所述第一计算设备的所述选定的客户机节点更可能已备份对象,其中所述已备份的对象可以由所述其他客户机节点使用。
17.根据权利要求15的制品,所述操作还包括将与所述多个客户机节点的对象对应的数据库表项存储在所述服务器节点中,其中所述数据库表项包括对应于所述对象的元数据;以及将指向由所述一个选定的客户机节点存储在所述服务器节点中的那些对象的引用包括在所述数据库表项中。
18.根据权利要求17的制品,其中判定是否已由所述一个选定的客户机节点将所述对象存储在所述服务器节点中还包括为请求由所述客户机节点存储的对象计算校验和,以响应从所述数据库表项判定所述一个选定的客户机节点已存储至少一个与请求由所述客户机节点存储的所述对象具有相同元数据的对象;以及如果所述对象的所述计算的校验和与先前由所述一个选定的客户机存储的所述至少一个对象的计算的校验和相同,则判定所述对象已被存储在所述服务器节点中。
19.根据权利要求15的制品,其中为所述多个客户机节点判定是否已由所述一个选定的客户机节点将包括在所述多个客户机节点中的对象存储在所述服务器节点中的时间复杂度相对于所述多个客户机节点的数量是线性的。
20.根据权利要求15的制品,其中所述服务器节点将由所述一个选定的客户机节点备份的数据存储在第一存储介质中,与其中存储了由与所述一个选定的客户机节点不同的客户机节点备份的数据的第二存储介质相比,访问所述第一存储介质较快。
21.根据权利要求15的制品,其中在单个计算设备中实现所述服务器节点和所述一个选定的客户机节点,其中所述服务器和所述多个客户机节点可以在客户机服务器环境和对等环境中通信。
22.一种用于部署计算基础设施的方法,所述方法包括将计算机可读代码集成到计算系统中,其中所述代码与所述计算系统结合能够执行下列操作从多个客户机节点选择一个客户机节点;判定必须存储与客户机节点对应的对象;判定是否已由所述一个选定的客户机节点将所述对象存储在服务器节点中;以及将所述对象存储在所述服务器节点处,以响应判定尚未由所述一个选定的客户机节点将所述对象存储在所述服务器节点中。
23.根据权利要求22的方法,其中所述代码与所述计算系统结合还能够执行下列操作(i)将与所述多个客户机节点的对象对应的数据库表项存储在所述服务器节点中,其中所述数据库表项包括对应于所述对象的元数据;以及(ii)将指向由所述一个选定的客户机节点存储在所述服务器节点中的那些对象的引用包括在所述数据库表项中,其中判定是否已由所述一个选定的客户机节点将所述对象存储在所述服务器节点中还包括(a)为请求由所述客户机节点存储的对象计算校验和,以响应从所述数据库表项判定所述一个选定的客户机节点已存储至少一个与请求由所述客户机节点存储的所述对象具有相同元数据的对象;以及(b)如果所述对象的所述计算的校验和与先前由所述一个选定的客户机存储的所述至少一个对象的计算的校验和相同,则判定所述对象已被存储在所述服务器节点中。
24.一种系统,所述系统包括服务器节点;连接到所述服务器节点的多个客户机节点;用于从所述多个客户机节点选择一个客户机节点的装置;用于判定必须存储与客户机节点对应的对象的装置;用于判定是否已由所述一个选定的客户机节点将所述对象存储在所述服务器节点中的装置;以及用于将所述对象存储在所述服务器节点处,以响应判定尚未由所述一个选定的客户机节点将所述对象存储在所述服务器节点中的装置。
25.根据权利要求24的系统,还包括用于将与所述多个客户机节点的对象对应的数据库表项存储在所述服务器节点中的装置,其中所述数据库表项包括对应于所述对象的元数据;以及用于将指向由所述一个选定的客户机节点存储在所述服务器节点中的那些对象的引用包括在所述数据库表项中的装置,其中所述用于判定是否已由所述一个选定的客户机节点将所述对象存储在所述服务器节点中的装置还执行下列操作(a)为请求由所述客户机节点存储的对象计算校验和,以响应从所述数据库表项判定所述一个选定的客户机节点已存储至少一个与请求由所述客户机节点存储的所述对象具有相同元数据的对象;以及(b)如果所述对象的所述计算的校验和与先前由所述一个选定的客户机存储的所述至少一个对象的计算的校验和相同,则判定所述对象已被存储在所述服务器节点中。
全文摘要
本发明提供了一种方法、系统和制品,其中从多个客户机节点选择一个客户机节点。判定必须存储对应于客户机节点的对象。判定所述一个选定的客户机节点是否已将所述对象存储在服务器节点中。响应于判定所述一个选定的客户机节点尚未将所述对象存储在所述服务器节点中,将所述对象存储在所述服务器节点中。
文档编号G06F17/30GK1916902SQ20061010772
公开日2007年2月21日 申请日期2006年7月21日 优先权日2005年8月17日
发明者D·M·坎农, M·A·卡奇马尔斯基, R·C·小爱德华兹, C·扎伦巴, C·S·道森 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1