CN100422936C - 管理锁定的方法和系统以及进行死锁管理的方法和系统 - Google Patents

管理锁定的方法和系统以及进行死锁管理的方法和系统 Download PDF

Info

Publication number
CN100422936C
CN100422936C CNB2004800009335A CN200480000933A CN100422936C CN 100422936 C CN100422936 C CN 100422936C CN B2004800009335 A CNB2004800009335 A CN B2004800009335A CN 200480000933 A CN200480000933 A CN 200480000933A CN 100422936 C CN100422936 C CN 100422936C
Authority
CN
China
Prior art keywords
locking
lock
client
request
agency
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.)
Active
Application number
CNB2004800009335A
Other languages
English (en)
Other versions
CN1809815A (zh
Inventor
迈克尔·列奥·沃克
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1809815A publication Critical patent/CN1809815A/zh
Application granted granted Critical
Publication of CN100422936C publication Critical patent/CN100422936C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99938Concurrency, e.g. lock management in shared database

Abstract

说明了用于进行锁定的方法、系统和程序。接收用第一操作标识符锁定第一资源的请求。第一资源用第一操作标识符进行锁定。基于要为请求执行的操作是否可以在处理请求之后完成,判断第二资源是应该用第一操作标识符还是用第二操作标识符来进行锁定。

Description

管理锁定的方法和系统以及进行死锁管理的方法和系统
技术领域
本发明旨在管理锁定和事务。
背景技术
资源(例如,存储器、磁盘驱动器、光纤信道等等)常常是在多个应用程序之间共享的。例如,在多个客户端计算机中,每一个都运行客户端应用程序,它们可以访问具有资源集的同一台服务器计算机。在某些情况下,应用程序可能希望访问资源,而不允许任何其他应用程序同时访问该资源。例如,如果第一应用程序希望更新数据库中的数据,第一应用程序可能希望访问数据库以进行更新,而不希望有其他应用程序潜在地试图更新数据库的相同部分。
为确保对资源的连续访问,常常使用锁。应用程序获取资源上的锁,以便可以访问资源。例如,如果第一应用程序获取了第一资源上的锁,则第二应用程序将不能访问第一资源,直到第一资源上的锁被第一应用程序释放。
在某些情况下,来自客户端计算机中的客户端应用程序的请求可以发送到服务器计算机上的第一代理。第一代理可以将请求传递给第二代理,而第二代理又可以将请求传递给第三代理。第一代理充当第二代理的客户端,而第二代理又充当第三代理的客户端。第三代理可以对请求进行处理(例如,检索数据),并将结果返回到第二代理,而第二代理又将结果返回到第一代理。然后,第一代理将结果返回到客户端应用程序。  虽然在此示例中使用了三个代理,也可以使用两个或更多代理一起协作,以传递请求并返回结果,这些代理可以简称为“级联代理”。
在某些情况下,级联代理集中的每一个代理都获取资源上的锁。然而,没有链接指出代理为其获取了锁的客户端应用程序。如此,有可能第一代理为某客户端应用程序获取了资源上的锁。然后,当第二代理接收到来自第一代理的请求,并试图获取资源上的锁时,第二代理被拒绝给予锁。由于第一和第二代理两者都在处理客户端应用程序的同一个请求,因此,两者都应该能够锁定资源。如此,某些常规系统不支持级联代理的锁定操作。
可能需要多个锁才能处理一个请求。某些常规系统需要客户端应用程序获取处理一个请求所需的所有锁。例如,如果第一应用程序需要访问第一和第二资源,某些系统要求第一应用程序在进行任何处理之前获取两个资源的锁。如果第一应用程序获取第一资源上的锁,但是,第二应用程序获取第二资源上的锁,则第一资源等待第二资源上的锁。
某些系统要求客户端应用程序来对锁进行管理。进行锁定的规则可能很麻烦,这会导致客户端应用程序变得更加复杂。
此外,某些数据库管理系统还包括事务管理器。这些事务管理器会记录动作的结果,而不记录动作本身。
当前技术需要一种改进的锁定和事务管理系统。
发明内容
提供了用于进行锁定的方法、系统和程序。接收用第一操作标识符锁定第一资源的请求。第一资源用第一操作标识符进行锁定。基于要为请求执行的操作是否可以在处理请求之后完成,判断第二资源是应该用第一操作标识符还是用第二操作标识符来进行锁定。
更多的实现方式提供了用于进行锁定的方法、系统和程序。接收用第一操作标识符锁定资源的请求。判断资源是否用第一操作标识符进行了锁定。如果判断资源被用第一操作标识符进行了锁定,则请求接收到具有指出资源被用第一操作标识符进行了锁定的指示的响应。如果判断资源被用第二操作标识符进行了锁定,则拒绝锁定请求。
其他实现方式提供了用于进行死锁管理的方法、系统和程序。对于用第二操作标识符锁定的资源,接收拒绝用第一操作标识符进行锁定的请求的指示。锁定请求被放置在具有锁队列超时时段的队列中。如果锁定请求到达队列的这样一个位置,即从该位置可以在锁队列超时时段内处理该锁定请求,则重新发出锁定请求。
本发明的所描述的实现方式提供了锁和事务管理系统的方法、系统和程序。
本发明在第一方面相应地提供了用于进行锁定的方法,包括:接收用第一操作标识符锁定第一资源的请求;用第一操作标识符锁定第一资源;以及基于要为请求执行的操作是否可以在处理请求之后完成,判断第二资源是应该用第一操作标识符还是用第二操作标识符来进行锁定。
优选情况下,第一方面的方法进一步包括判断第二资源应该用第一操作标识符进行锁定;以及用第一操作标识符锁定第二资源。优选情况下,该方法进一步包括判断第二资源应该用第二操作标识符进行锁定;获取第二操作标识符;以及用第二操作标识符锁定第二资源。
本发明在第二方面相应地提供了用于进行锁定的系统,包括:处理器;处理器可以访问的计算机可读的介质;以及包括能够使处理器执行如下操作的代码的程序逻辑:(i)接收用第一操作标识符锁定第一资源的请求;(ii)用第一操作标识符锁定第一资源;以及(iii)基于要为请求执行的操作是否可以在处理请求之后完成,判断第二资源是应该用第一操作标识符还是用第二操作标识符来进行锁定。
优选情况下,在第二方面的系统中,代码能够使处理器进一步执行如下操作:判断第二资源应该用第一操作标识符进行锁定;以及用第一操作标识符锁定第二资源。优选情况下,代码能够使处理器进一步执行如下操作:判断第二资源应该用第二操作标识符进行锁定;获取第二操作标识符;以及用第二操作标识符锁定第二资源。
本发明在第三方面相应地提供了存储在计算机可使用的介质中的计算机程序产品,包括:计算机可读的程序装置,用于接收用第一操作标识符锁定第一资源的请求;用第一操作标识符锁定第一资源;以及基于要为请求执行的操作是否可以在处理请求之后完成,判断第二资源是应该用第一操作标识符还是用第二操作标识符来进行锁定。
优选情况下,第三方面的计算机程序产品进一步包括计算机可读的程序装置,用于判断第二资源应该用第一操作标识符进行锁定;以及用第一操作标识符锁定第二资源。优选情况下,第三方面的计算机程序产品进一步包括计算机可读的程序装置,用于判断第二资源应该用第二操作标识符进行锁定;获取第二操作标识符;以及用第二操作标识符锁定第二资源。
本发明在第四方面相应地提供了用于进行锁定的系统,包括:代理;被代理控制的第一资源;不被代理控制的第二资源;用于接收用第一操作标识符锁定第一资源的请求的装置;用于用第一操作标识符锁定第一资源的装置;基于要为请求执行的操作是否可以在处理请求之后完成,判断第二资源是应该用第一操作标识符还是用第二操作标识符来进行锁定的装置。
本发明在第五方面相应地提供了用于进行锁定的方法,包括:接收用第一操作标识符锁定资源的请求;判断资源是否用第一操作标识符进行锁定;如果判断资源被用第一操作标识符进行了锁定,则用指出资源被用第一操作标识符进行了锁定的指示响应请求;如果判断资源被用第二操作标识符进行了锁定,则拒绝锁定请求。
优选情况下,在第五方面的方法中,判断资源是否用第一操作标识符进行锁定的过程进一步包括:将第一操作标识符与用于锁定资源的操作标识符进行匹配。
本发明在第六方面相应地提供了用于进行锁定的系统,包括:处理器;处理器可以访问的计算机可读的介质;以及包括能够使处理器执行如下操作的代码的程序逻辑:(i)接收用第一操作标识符锁定第一资源的请求;(ii)判断资源是否用第一操作标识符进行锁定;(iii)如果判断资源被用第一操作标识符进行了锁定,则用指出资源被用第一操作标识符进行了锁定的指示响应请求;如果判断资源被用第二操作标识符进行了锁定,则拒绝锁定请求。
优选情况下,在第六方面的系统中,在判断资源是否被用第一操作标识符进行了锁定的过程中,代码能够使处理器进一步执行如下操作:将第一操作标识符与用于锁定资源的操作标识符进行匹配。
本发明在第七方面相应地提供了存储在计算机可使用的介质中的计算机程序产品,包括:计算机可读的程序装置,用于接收用第一操作标识符锁定资源的请求;判断资源是否用第一操作标识符进行锁定;如果判断资源被用第一操作标识符进行了锁定,则用指出资源被用第一操作标识符进行了锁定的指示响应请求;如果判断资源被用第二操作标识符进行了锁定,则拒绝锁定请求。
优选情况下,第七方面的计算机程序产品进一步包括计算机可读的程序装置,用于将第一操作标识符与用于锁定资源的操作标识符进行匹配。
本发明在第八方面相应地提供了用于进行锁定的系统,包括:用于接收用第一操作标识符锁定资源的请求的装置;一种装置,用于通过将第一操作标识符与用于锁定资源的操作标识符进行匹配,判断资源是否被用第一操作标识符进行了锁定;一种装置,用于,如果判断资源被用第一操作标识符进行了锁定,则用指出资源被用第一操作标识符进行了锁定的指示响应请求;以及一种装置,如果判断资源被用第二操作标识符进行了锁定,则拒绝锁定请求。
本发明在第九方面相应地提供了用于进行死锁管理的方法,包括:对于用第二操作标识符锁定的资源,接收拒绝用第一操作标识符进行锁定的请求的指示;将锁定请求放置在具有锁队列超时时段的队列中;以及如果锁定请求到达队列的这样一个位置,即从该位置可以在锁队列超时时段内处理该锁定请求,则重新发出锁定请求。
优选情况下,第九方面的方法进一步包括,如果在锁队列超时时段内不允许锁定请求,则拒绝锁定请求。
本发明在第十方面相应地提供了用于进行死锁管理定的系统,包括:处理器;处理器可以访问的计算机可读的介质;以及包括能够使处理器执行如下操作的代码的程序逻辑:(i)对于用第二操作标识符锁定的资源,接收拒绝用第一操作标识符进行锁定的请求的指示;(ii)将锁定请求放置在具有锁队列超时时段的队列中;以及(iii)如果锁定请求到达队列的这样一个位置,即从该位置可以在锁队列超时时段内处理该锁定请求,则重新发出锁定请求。
优选情况下,在第十方面的系统中,代码能够使处理器进一步执行如下操作:如果在锁队列超时时段内不允许锁定请求,则拒绝锁定请求。
本发明在第十一方面相应地提供了存储在计算机可使用的介质中的计算机程序产品,包括:计算机可读的程序装置,用于,对于用第二操作标识符锁定的资源,接收拒绝用第一操作标识符进行锁定的请求的指示;将锁定请求放置在具有锁队列超时时段的队列中;以及如果锁定请求到达队列的这样一个位置,即从该位置可以在锁队列超时时段内处理该锁定请求,则重新发出锁定请求。
优选情况下,第十一方面的计算机程序产品进一步包括,计算机可读的程序装置,用于,如果在锁队列超时时段内不允许锁定请求,则拒绝锁定请求。
本发明在第十二方面相应地提供了用于进行死锁管理的系统,包括:用于,对于用第二操作标识符锁定的资源,接收拒绝用第一操作标识符进行锁定的请求的指示的装置;用于将锁定请求放置在具有锁队列超时时段的队列中的装置;用于,如果锁定请求到达队列的这样一个位置,即从该位置可以在锁队列超时时段内处理该锁定请求,则重新发出锁定请求的装置。
附图说明
现在将参考附图,只作为示例,对本发明的优选实施例进行描述,其中:
图1以方框图显示了根据本发明的优选实施例的涉及四个不同角色的用于进行锁定和事务管理的参考模型。
图2A显示了根据本发明的优选实施例的具有事务管理器的锁定环境。
图2B显示了根据本发明的优选实施例的没有事务管理器的锁定环境。
图2C显示了根据本发明的优选实施例的具有不能识别锁定的客户端的锁定环境。
图3显示了根据本发明的优选实施例的级联锁定。
图4A显示了在根据本发明的优选实施例的在存储空间不足的虚拟化系统上创建卷的过程。
图4B显示了根据本发明的优选实施例的在存储空间不足的虚拟化系统上创建卷的动作序列中锁定步骤和主要客户端动作请求的表。
图5A显示了根据本发明的优选实施例的从一个虚拟化系统向另一个虚拟化系统移动存储空间的过程。
图5B和5C显示了根据本发明的优选实施例的在从一个虚拟化系统向另一个虚拟化系统移动存储空间的隔离锁定级别下采取的动作序列中的锁定步骤和主要客户端动作请求的表。
图6A显示了根据本发明的优选实施例的从虚拟化系统向逻辑卷管理器移动存储空间的过程。
图6B和6C显示了根据本发明的优选实施例的在从虚拟化系统向逻辑卷管理器虚移动存储空间的隔离锁定级别下采取的动作序列中的锁定步骤和主要客户端动作请求的表。
图7A显示了根据本发明的优选实施例的创建逻辑卷和从多个源提供逻辑卷的过程。
图7B和7C显示了根据本发明的优选实施例的在创建逻辑卷和从多个源提供逻辑卷的隔离锁定级别下采取的动作序列中的锁定步骤和主要客户端动作请求的表。
图8显示了根据本发明的优选实施例的锁定和事务管理(LTM)系统中为处理锁定而实现的逻辑。
图9显示了根据本发明的优选实施例的锁定管理器实现的逻辑。
图10显示了根据本发明的优选实施例的事务管理器实现的逻辑。
图11A和11B显示了根据本发明的优选实施例由级联代理在判断锁定资源要使用哪个操作标识符时所执行的逻辑。
图11C和11D显示了根据本发明的优选实施例当第一代理锁定由第二代理控制的资源并且第二代理接收到另一个锁定该资源的请求时由级联代理执行的逻辑。
图12显示了根据本发明的优选实施例锁定管理器为允许客户端的不同级别的锁定而实现的逻辑。
图13显示了根据本发明的优选实施例由代理实现的逻辑。
图14显示了根据本发明的优选实施例由锁定管理器为解决死锁而实现的逻辑。
图15显示了根据本发明的优选实施例的识别锁定的客户端、事务管理服务器、锁定管理服务器和锁定管理代理的体系结构。
具体实施方式
提供了锁定和事务管理(LTM)系统。LTM系统标识锁定注意事项和支持“虚拟化”和“虚拟存储服务”的要求。术语“虚拟化”是指来自多个网络存储设备的物理存储设备汇聚到好像是从单服务器计算机集中管理的单个存储设备。在本发明的优选实施例中,虚拟化被用作存储区域网络(SAN)的一部分。存储区域网络(SAN)是将共享数据存储设备与被客户端计算机访问的关联的服务器计算机互相连接的高速网络或子网。术语“虚拟存储设备”是指已经被汇聚的存储设备。术语“虚拟存储服务”是指由汇聚的存储设备提供的服务(例如,锁定)。除了指定锁定管理协议之外,LTM系统还支持锁定管理器。
此外,LTM系统还支持事务管理器并定义支持事务管理所需的锁定。在本发明的优选实施例中,锁定管理器是为识别锁定的客户端和识别锁定的代理提供锁定功能并遵循锁定管理器的规则的“锁定管理服务器”。
在本发明的优选实施例中,事务管理器是管理和控制事务的执行和提交或回滚处理的启动的“事务管理服务器”。事务是具有“ACID”属性的操作。即,事务是原子性的,产生一致的结果,是孤立的,并且是持久的。简而言之,事务是要么“全部完成”要么“全部失败”的操作,这在整个系统或组件故障中得到保证。操作是来自单个客户端的代理请求(或“动作”)的序列。这还可以称为“客户端操作”。在存在事务管理器的情况下,操作就是事务。“提交”是指确保事务的动作全部都被执行的事务功能。“回滚”是指涉及“撤消”事务的动作的事务功能。事务管理器维护了事务日志,该事务日志是事务信息的非易失性记录。
LTM系统锁定后面的基本原理是定义事务相关的锁定,然后定义没有事务支持的锁定。基于事务设计,预期没有事务支持的锁定降低设计要求,以适应不太严格的设计。意图是,确保没有事务支持的锁定的这种降低要求的实现方式是事务相关的锁定设计的子集,降低要求的没有事务支持的锁定设计事实上可以扩展到事务处理。
LTM系统锁定试图在锁定管理服务器中而不是在客户端或代理中添加智能。这样做的基本原理是基于这样的假定:如果智能是局部的,而不是跨多个供应商客户端和代理而分布,则会比较容易地使功能正确运转(或至少一致)。
引言
锁定管理协议的目的是支持多个非协作性客户端针对代理的分布式网络而进行操作。非协作性客户端是彼此独立、争夺资源、并彼此独立执行的多个客户端。锁定用于管理异构存储区域网络中的来自多个供应商的客户端的潜在地发生冲突的操作。参与锁定机制的客户端将被确保,它们的操作不会与可能在存储区域网络正在进行的其他操作发生冲突。
LTM系统中的锁定管理可以支持多个“支持级别”。最坚固的级别是“事务”锁定级别。对于锁定支持的事务级别的支持要求有“事务管理器”。支持的下一个级别叫做“隔离”锁定级别,不要求存在事务管理器。支持的最后一个级别叫做“客户端控制的”锁定级别。这些级别中的每一个级别的特征都在于它们保证的ACID(原子性、一致性、完整性和持久性)支持。下面的表1中概述了所提供的支持:
表1
    锁定级别     原子性   一致性   隔离   持久性
    事务     是   是   是   是
    隔离     否   否   是   否
    客户端控制的     否   否   否   否
原子性
“原子性”是指要么完全完成要么根本不执行的“操作”(其中,操作被定义为向一个或多个代理的多个请求)。对于原子性的支持要求在操作失败的情况下撤消“操作”请求的“回滚”功能。因此,原子性在“事务”锁定级别得到支持,事务管理器支持/驱动回滚过程。
“隔离”和“客户端控制的”锁定级别不支持或要求原子性支持。结果,这些级别可以在没有事务管理器的情况下工作。
一致性
“一致性”是指使“模型”数据保持一致状态。一致性在事务锁定级别得到支持。一致性不一定在隔离或客户端控制的级别得到支持。在本发明的优选实施例中,预计代理确保它们的模型是自相一致的。然而,没有办法确保一个代理的模型与其他代理的模型一致。
由于回滚在隔离或客户端控制的级别得不到支持,因此,“交叉代理”模型不一定保持一致状态。例如,如果客户端更改区域(例如,结构请求)并重新分配新区域中的卷(例如,阵列请求),在发生故障的情况下,这可能会“执行到一半”。在隔离和客户端控制的锁定级别,SAN模型级别中的一致性由客户端决定。
隔离
在锁定管理的上下文中,LTM系统将操作定义为代表单个客户端启动的相关的代理动作(或请求)的序列。  动作是从单个客户端发往代理的单个请求。客户端操作通常包含对各种代理的多个动作(或请求)。对于隔离,“操作”似乎它们与其他操作一起连续地执行。尽管LTM系统操作并行地执行,对于每一个操作“0”,似乎其他操作要么在操作“0”之前执行,要么在操作“0”之后执行,而不是两者。这就意味着,在LTM系统的锁定管理下,与其他LTM系统操作或一般信息模型(CIM)操作并行地执行的LTM系统操作,好像是唯一在执行的操作。CIM是为管理信息创建对象模型的标准。对象模型是诸如存储区域网络之类的网络资源的面向对象的表示。CIM标准是Distributed Management TaskForce(DMTF),Inc.所提供的。有关CIM标准的更多信息,请参见2002年5月发表的“Specification for CIM Operations over HTTP”,1.1版本,以下简称为“CIM规范”,这里原文引用了该规范作为参考。
隔离要求锁定阻止修改由动作所使用的信息。隔离在事务和隔离锁定级别都得到支持。隔离可以在使用“客户端控制的”锁定级别时由客户端逻辑来实现,但是,锁定机制本身不能保证隔离。
为支持隔离,锁定设计支持“读取”锁定的概念,这与“更改”锁定有所不同。读取锁允许客户端持有客户端没有明确的更改意图,但是不希望在客户端的操作在进行中时更改值的资源。例如,客户端可能扫描多个存储池,以查找用于创建卷的可用空间,并且客户端将从其中一个存储池创建卷。不是获取所有存储池上的“更改”锁,客户端可以获取所有存储池上的“读取”锁,并对客户端选择的一个存储池发出“更改”锁。
尽管锁定支持“读取”锁以支持隔离,但是,对于客户端将不会重新读取或依赖信息的情况,锁定设计还支持“脏读”(即使在没有获取“读取”锁的情况下,也允许读取)。脏读是在没有获取锁(即,读取或更改)的情况下从代理那里检索信息的任何客户端请求。这叫做脏读,是因为读取没有被保护。对相同信息的随后的读取可能会产生不同的结果。
持久性
对于持久性,当返回成功时,结果实际产生。“持久性”的意义根据所使用的锁定的级别而不同。在事务锁定级别的上下文中,持久性是指,当客户端操作完成时(成功或失败),结果可以跨越故障地得到保证。这暗示日志和2阶段提交过程,以确保所有代理都已经提交(或回滚)。在2阶段提交过程中,第一进程向其他进程表示,它正在准备提交。每一个其他进程都准备提交。然后,第一进程提交,其他进程也提交。日志确保了,在重新启动时,事务管理器可以确定将发生什么并确保确实发生。
“隔离”或“客户端控制的”锁定级别的上下文中的持久性保证了,当客户端获取成功的返回时,已经满足请求。这包括代理模型上的锁定请求,以及动作。那些没有被响应的请求不能被认为已经完成(虽然它们可能已经完成)。本质上,客户端应用程序可以在最后一个肯定响应之前认为操作完成。
锁定/事务管理组件
在对锁定管理和事务管理的讨论中,有许多参与该过程的组件。这里,为便于参考,概括了组件。
元件管理器是用于管理SAN环境中的特定设备的管理工具。在锁定设计的上下文中,假设元件管理器是不能识别锁定的,不是CIM客户端。如果元件管理器被编码为CIM客户端,那么,它接受管辖识别锁定的客户端的规则的约束。
锁定管理器也被称为“锁定管理服务器”,为识别锁定的客户端和识别锁定的代理提供锁定功能,并遵循锁定管理器的规则。
识别锁定的代理是支持代理的锁定请求并支持代理的锁定规则的代理或对象管理器。
识别锁定的客户端是对资源进行锁定并遵循锁定的客户端规则的客户端。
不能识别锁定的代理是不支持锁定请求的代理或CIM对象管理器。
不能识别锁定的客户端是根本不进行锁定的客户端。
事务管理器是管理和控制事务的执行(和提交或回滚处理的启动)的服务器。
由于可缩放性的原因,锁定管理器和事务管理器设计包含了这些组件中的每一个组件的多个实例(包括多个锁定管理器和多个事务管理器)。
设计原则
有一组锁定可以支持的设计原则。并非所有的设计原则都适用于所有级别。在下面的表2中概述了设计原则和它们所适用的锁定级别:
表2
  设计原则   事务   隔离   客户端控制
  跨多个代理地保护来自多个同时的非协作性客户端的操作。   是   是   是
  锁定机制对付不进行锁定的客户端或其他管理工具的能力。   是   是   是
  比整个代理提供更细微的锁定。   是   是   是
  定义可扩展的锁定体系结构。   是   是   是
  定义可以通过SNIA和DMTF标准化的锁定体系结构。   是   是   是
  为级联代理提供支持。   是   是   是
  “随意进行锁定”支持。   是   是   是
  可缩放的设计。   是   是   是
  对客户端所选定的锁定级别的支持。   是   是   是
  对客户端“智能”依赖程度低,而是将智能放入锁定管理器或代理中。   是   是   否
  对于事务管理的扩展的设计。   不适用   是   是
  为简单锁定机制提供死锁处理和错误情况处理。   否   否   是
  “随意进行解锁”支持。   否   否   是
  提供可以支持所有ACID属性的锁定机制,包括原子性。   是   否   否
  提供跨越故障地恢复的锁定机制   是   否   否
为保护来自多个同时的非协作性客户端的跨多个代理的操作,所有锁定机制都支持跨非协作性客户端的对SAN中的管理信息的协调访问。依据客户端所希望的功能,所需的锁定级别可以不同,但所有锁定级别都允许客户端通过锁定保护客户端操作。
锁定机制对付不进行锁定的客户端或其他管理工具的能力是对当今不进行锁定的现有的管理工具的让步。锁定机制能够以保护进行锁定的客户端的方式对付现有的管理工具。
比整个代理提供更细微的锁定,通过允许客户端以小于整个代理的粒度进行锁定而允许客户端获得更大的并行性。
定义可扩展的锁定体系结构定义了允许扩展满足SAN管理的日益发展的需求的体系结构。
定义可以通过Storage Networking Industry Association(SNIA)和Distributed Management TaskForce(DMTF)标准化的锁定体系结构,允许锁定体系结构可以在CIM管理的环境的上下文中使用,以便使它可以作为CIM的标准的潜在扩展使用。
为级联代理提供支持是另一个设计原则。在级联代理支持方面,虚拟化涉及存储区域网络(SAN)中的元件的级联(例如,存储设备)。级联代理是也充当“较低级别的”代理的锁定管理客户端的锁定管理代理。LTM系统允许虚拟化系统能够作为客户端操作的结果在较低级别的代理上执行动作。动作是从单个客户端发往代理的单个请求。客户端操作通常包含对各种代理的多个“动作”。具体来说,利用LTM系统,级联代理判断对较低级别的代理的动作是否与发出客户端相冲突。在本发明的优选实施例中,如果需要锁定才能完成客户端请求,则级联代理代表客户端获取锁定。如果客户端请求触发了动作,但不是完成客户端请求所必需的,则级联代理可以自己执行该动作。
“随意进行锁定”支持允许客户端“随意进行锁定”,锁定不必由客户端获取,直到客户端决定采取动作。这就允许虚拟化系统调用较低级别的代理上的功能。“随意进行锁定”支持还给客户端更多对代码逻辑的自由度(例如,搜索存储空间,当发现时,锁定并移到下一步骤)。
可缩放的设计是指所有级别的锁定都扩展到企业SAN配置的设计原则。这就意味着,锁定设计避免了支持锁定设计不压倒网络所需的体系结构和通信中的“瓶颈”。
利用对客户端所选定的锁定级别的支持,客户端理解客户端操作的特性以及它试图取得什么。锁定设计支持由客户端所选择的锁定级别。
对客户端“智能”依赖程度低,而是将智能放入锁定管理器或代理中,支持不禁止有用的工作的客户端的规则。客户端的规则不会过度复杂。隔离和事务锁定级别避免过分地依赖行为良好的客户端。客户端几乎没有它们需要遵循的规则,违犯正当的行为的客户端所采取的动作被强制。正在使用“隔离”或“事务”锁定级别的识别锁定的客户端不必担心它是否正确地进行了锁定。锁定要么正常起作用,要么当客户端违犯锁定协议时,锁定系统将告诉客户端。
锁定的这种对客户端智能依赖程度低的特征对锁定管理器和锁定管理具有影响。锁定管理器处理大多数规则和规则执行。然而,此设计原则不适用于客户端控制的锁定级别。
利用对于事务管理的扩展的设计,隔离锁定级别(在某种程度上,客户端控制的级别)可扩展到事务锁定级别,而不需要对客户端进行重新设计。即,在事务管理器存在于锁定环境中而客户端退却最小的情况,隔离锁定级别能够承担起事务功能。在本发明的优选实施例中,此设计原则不适用于事务锁定级别。
为简单锁定机制提供死锁处理和从错误情况恢复的能力是一个设计原则。当两个或更多客户端试图按顺序锁定两个或更多资源(例如,对象)而导致任何一个客户端都不能够完成它们的操作时,发生死锁,因为它们两者都在等待对方。“客户端控制的”锁定级别的目的是适应锁定的相对简单的部署。这包括支持死锁处理和在错误的情况下的定义的恢复状态的机制。在本发明的优选实施例中,此设计原则适用于客户端控制的锁定级别。
“随意进行解锁”支持是用于支持最小锁定环境的锁定协议。即,最小化持有的锁的数量和持有的锁的持续时间的锁定。“随意进行解锁”是指,当客户端准备释放客户端所获取的资源时,客户端可以告诉系统。在本发明的优选实施例中,这牺牲了隔离属性和事务处理,但是,这是基于客户端逻辑的合理的动作。因此,设计允许非事务应用程序“随意进行解锁”。在本发明的优选实施例中,此设计原则适用于客户端控制的锁定级别。
提供可以支持所有ACID属性的锁定机制是指,锁定机制支持由事务管理器所暗示的锁定要求。在本发明的优选实施例中,提供可以支持所有ACID属性的锁定机制并不意味着,锁定管理器必须提供事务管理器角色或锁定管理器需要在所有情况下支持事务锁定(只是在事务环境下)。在本发明的优选实施例中,此设计原则适用于事务锁定级别。
提供跨越故障地恢复的锁定机制是另一个设计原则。为支持事务处理,锁定机制能够在发生故障的情况下进行恢复。这与结合事务管理器来完成。如果在客户端操作的中间发生故障,则对被锁定的资源的访问被阻止,直到可以应用适当的恢复过程。
一旦确保了恢复,所有锁都将被释放,以防止客户端所持有的任何锁丢失。在设计中考虑了一些故障情况,包括锁定管理服务器、锁代理、锁客户端和它们之间的通信的故障。在本发明的优选实施例中,此设计原则适用于事务锁定级别。
代理假设
有一些锁定设计相对于对于管理请求的设备支持作出的假设。这些假设是设备的设计和代理提供商和他们支持的设备之间的关系所固有的。这些假设对理解代理动作的行为十分有用,是使锁定机制有效发挥作用所必需的。
在本发明的优选实施例中,设备被设计为使它们的元数据保持一致状态。在本发明的优选实施例中,存储设备不允许将元数据保持不一致状态的动作。例如,磁盘阵列不会保持存储器被丢失的状态(例如,标记为已使用但没有分配给任何卷)。同样,磁盘阵列不会保持存储器被无意地映射到两个不同的卷的状态。此假设还暗示,设备的CIM代理可以通过使其模型与设备中的元数据同步来确保其数据一致。
在本发明的优选实施例中,在处理不能识别锁定的客户端时,识别锁定的代理和设备一个请求一个请求地暗示锁定。不能识别锁定的客户端是根本不进行锁定的客户端。这暗示设备中的锁定识别。即,如果没有获取锁定,识别锁定的代理获取必需的锁定(或等效物,例如,闩锁),以执行客户端请求。然而,一旦执行了客户端请求,就释放锁定。这暗示,设备是识别锁定的(不只是代理),以阻止与锁定客户端冲突的“元件管理器”动作。
参考模型
图1以方框图显示了根据本发明的优选实施例的涉及四个不同角色的用于进行锁定和事务管理的参考模型。
参考模型包括识别锁定的客户端110。下面将详细讨论不能识别锁定的客户端。识别锁定的客户端110选择它希望的锁定级别。如果识别锁定的客户端110希望事务锁定级别,则识别锁定的客户端110通过向事务管理器发出BeginTransaction(开始事务)请求(下面将进一步详细描述)来达到这一目的。事务管理器管理事务的提交或回滚的协调(即,在事务管理控制下执行的客户端操作)。在本发明的优选实施例中,事务管理器是作为独立的事务管理服务器120来描述的。在本发明的优选实施例中,事务管理器可以与客户端应用程序共同驻留在同一个系统上。对于运行识别锁定的客户端的每一个系统,通常有一个事务管理器。事务管理器维护了客户端应用程序所采取的动作(例如,客户端请求)以及执行事务的回滚所要求的“反向”动作的日志。
如果识别锁定的客户端110希望隔离或客户端控制的锁定级别,则识别锁定的客户端110省略到事务管理服务器120的请求,并直接用GetoperationId请求(下面将进一步详细描述)进入锁定管理器,以获取操作的操作标识符(“操作id”或“OperationId”)。在本发明的优选实施例中,锁定管理器是锁定管理服务器130,并协调从一组锁定管理代理140A...N中获取锁,这一组锁定管理代理140A...N与锁定管理服务器130位于同一个锁定管理组中。在图中,为便于参考,例图中的元件的多个副本可以用相同参看编号和字符来引用(例如,110A到110N,其中,N表示元件的第n个副本)。例如,锁定管理代理140A、140B和140N将被称为锁定管理代理140A...N。
锁定管理组包括锁定管理服务器和一个或多个代理。在环境中可以有一个或多个锁定管理服务器120,因此,有一个或多个锁定管理组。每一个锁定管理服务器130管理锁定管理组中的一组锁定管理代理140A...N的锁定。管理员可以根据需要设置任意多的锁定管理服务器130和锁定管理组,以支持可缩放性要求。如果支持排队,锁定管理服务器130可以执行锁排队。
锁定管理代理140A...N执行由锁定管理代理140A...N进行管理的设备的锁定。即,获取资源上的实际锁,并保留在代理级别。在某些实现方式中,锁定管理代理140A...140N不执行排队。  相反,锁定管理代理140A...140N允许或拒绝锁定,锁定管理服务器130管理锁定请求的排队。锁定管理代理140A...140N持有锁定,直到锁定管理服务器130告诉锁定管理代理140A...140N将它们释放。
这些角色中的每一个角色(识别锁定的客户端110、事务管理服务器120、锁定管理服务器130、以及锁定管理代理140A...N)基于客户端请求的锁定级别(即,事务、隔离或客户端控制的)执行功能。
锁定的参考模型考虑多个锁定环境,包括下面几种:  具有支持事务锁定级别的锁定环境;没有事务管理器的锁定环境,包括隔离和客户端控制的锁定级别;以及,对于不能识别锁定的客户端的支持,包括支持任何给定锁定级别。
具有事务管理器的锁定参考模型
图2A显示了根据本发明的优选实施例的具有事务管理器220的锁定环境。事务锁定的参考模型包括环境中的一个或多个事务管理器,以及锁定管理服务器。
识别锁定的客户端-1210连接到事务管理器220、锁定管理服务器A240和锁定管理服务器B260。锁定管理组A230包括锁定管理服务器A240、锁定代理W242和锁定代理X244。锁定管理组B250包括锁定管理服务器B260、锁定代理Y262和锁定代理Z264。锁定代理W242、X244、Y262、Z264是锁定识别的代理。在本发明的优选实施例中,CIM代理实现锁定代理W242、X244、Y262、Z264。
事务如客户端应用程序在客户端上所定义的那样开始和结束。为便于参考,由客户端应用程序执行的动作将被说成由客户端执行。在图2A中,当识别锁定的客户端-1 210向事务管理器220上的客户端应用程序发送BeginTransaction请求时,事务开始。事务管理器220“创建”事务,并返回操作id以标识事务。
在本发明的优选实施例中,操作id在锁定管理组和事务管理器中是唯一的。如此,操作id可以是复合的密钥,第一部分是操作id是否为事务管理器生成的指示,第二部分是锁定管理组名或事务管理器名称,最后一部分是在锁定管理组或事务管理器的上下文中唯一的编号。即,操作id呈现T:A:number的形式(其中,T是布尔值,A是锁定管理组或事务管理器名称,“number”是唯一整数)。
事务管理器220所记录的日志和持有的锁定将在操作id的上下文中。事务的第一日志条目是存在事务(例如,开始事务)。
一旦识别锁定的客户端-1 210具有事务操作id,则识别锁定的客户端-1 210锁定那些识别锁定的客户端-1 210打算更改的资源。识别锁定的客户端-1 210还锁定识别锁定的客户端-1 210读取的并且识别锁定的客户端-1 210希望在其操作期间保持不变的资源。对于识别锁定的客户端-1 210打算发出的更改操作(即,更改数据的操作),识别锁定的客户端-1 210向事务管理器220传递执行更改的命令,以便进行记录,并通过锁定管理服务器A 240、B 260向锁定代理W 242、X 244、Y 252、Z 264发出锁定请求。除了更改请求之外,识别锁定的客户端-1 210还向事务管理器220提供在事务管理器220需要执行操作回滚的情况下执行的“反向”动作。
事务管理器220记录更改请求和具有可逆动作的更改请求的“反向”动作。在更改请求没有可逆动作的情况下,动作被视为超出事务的范围。
由三个事件中的一个事件确定事务的结束:  识别锁定的客户端-1 210向事务管理器220发出的提交;识别锁定的客户端-1 210向事务管理器220发出的回滚;事务中的任何组件(例如,识别锁定的客户端-1 210或事务管理器220)发生故障情况。
在事务成功地完成之前事务中的任何组件发生故障将导致回滚。在本发明的优选实施例中,使用心跳功能来判断组件是否发生故障。
在本发明的优选实施例中,事务管理器220可以是驻留在客户端系统上的功能,或者事务管理器220也可以同锁定管理服务器A240或B 260相结合。
锁定设计是可扩展的,以支持“服务器到服务器”通信,以便进行锁定协调,尽管服务器锁定是它们的锁定管理组230,250内进行的。在本发明的优选实施例中,协调支持锁定管理故障转移和协调死锁检测。死锁检测是指发现在两个或更多客户端之间存在死锁的操作。然而,利用锁队列超时(即,锁定请求可以停留在锁队列中的时间段),不需要服务器到服务器的通信。对于锁排队,如果锁定请求导致锁定冲突并且代理或锁定管理器将请求排队,直到冲突的锁被释放,就说锁在排队。锁队列允许操作完成,即使在操作期间遇到了锁定冲突。如果冲突的锁决不被释放,这种情况就叫做死锁。当一个客户端请求已经被另一个客户端锁定(显式或者隐式)的资源上的锁时,就说发生了锁定冲突。隐式锁定是指由于由代理执行的动作而隐式获取的锁定。
没有事务管理器的锁定参考模型
图2B显示了根据本发明的优选实施例的没有事务管理器的锁定环境。没有事务管理器的环境中的锁定可以在“隔离”级别,也可以在“客户端控制的”级别。
在图2B中显示的锁定环境中,识别锁定的客户端210、锁定管理服务器A 240、B 260和锁定代理W 242、X 244、Y 262、Z 264是能够支持锁定的。锁定代理W 242、X 244、Y 262、Z 264被分配给分别由锁定管理服务器A 240、B 260进行管理的锁定管理组A230、B 250。
在此锁定环境中,客户端通过从锁定管理服务器A 240或B260请求操作id并声明其在隔离级别或客户端控制的级别(例如,识别锁定的客户端-1 210)操作的意图来开始操作。打算使用锁定管理组A 230、B 250中的代理的客户端可以从锁定管理服务器A 240或B 260请求操作id。假设识别锁定的客户端-1 210从锁定管理服务器A 240请求操作id,那么,锁定管理服务器A 240变成操作的控制服务器,但是,当访问锁定管理服务器B 260时,也可以使用该操作id。操作id对于操作只获取一次。
对于锁定的隔离和客户端控制的级别,识别锁定的客户端210在识别锁定的客户端210对锁定代理W 242、X 244、Y 262、Z 264执行动作之前锁定识别锁定的客户端210希望使用的资源(例如,对象)。识别锁定的客户端210使用分配给识别锁定的客户端210的操作id向适当的锁定管理组的(A 230或B 250)锁定管理服务器(A 240或B 260)发出锁定请求。锁定管理服务器A 240、B 250接收锁定请求,并将它们传递到锁定代理W 242、X 244、Y 262、Z 264,并将它们记录为由操作id持有。锁定代理W 242、X 244、Y 262、Z 264要么允许锁定要么拒绝锁定。如果需要的话,在锁定管理服务器A 240、B 260中进行排队。在本发明的优选实施例中,如果锁定代理W 242、X 244、Y 262、Z 264拒绝锁定,那么,锁定代理W 242、X 244、Y 262、Z 264传回”排队时间”值,该值确定锁定代理W 242、X 244、Y 262、Z 264将允许锁定请求在队列上停留多长时间。
如果排队的请求到达队列的顶端,则向锁定代理W 242、X 244、Y 262、Z 264重新发出锁定请求,如果获取了锁定,则通知识别锁定的客户端-1 210,锁定请求已经被允许。
如果在到达队列顶端之前排队请求“超时”,则通知识别锁定的客户端-1 210,锁定请求被拒绝。由于锁定管理服务器A 240、B 260不是事务管理器,因此,在本发明的优选实施例中,锁定管理服务器A240、B 260不会单方面地释放锁定。  具体来说,为使识别锁定的客户端-1 210动作影响任何“回滚”或操作恢复处理,可能需要锁定。
锁定设计是可扩展的,以支持“服务器到服务器”通信,以便进行锁定协调,尽管锁定管理服务器A 240、B 260锁定是它们的锁定管理组A 230,B 250内进行的。在本发明的优选实施例中,锁定协调支持锁定管理故障转移和协调死锁检测。然而,对于锁队列超时,不需要服务器到服务器的通信。
不能识别锁定的客户端支持
图2C显示了根据本发明的优选实施例的具有不能识别锁定的客户端-2 270的锁定环境。具体来说,图2显示了“隔离”或“客户端控制的”级别的锁定环境。在图2C中,锁定代理X 244连接到设备X 280,而设备X 280还连接到元件管理器客户端290。元件管理器客户端是一种特殊类型的不能识别锁定的客户端。“事务”级别的锁定的注意事项是相同的,因此,在图2C的插图中没有显示事务管理器。
在本发明的优选实施例中,不能识别锁定的客户端-2 270是不能识别锁定的CIM客户端。在本发明的优选实施例中,不能识别锁定的客户端(是不能识别锁定的CIM客户端)经过CIM代理(包括识别锁定的代理)。不能识别锁定的客户端270向锁定代理W242、X 244作出管理请求,而不请求锁定。在这样的情况下,如果请求的动作涉及对用CIM代表的对象模型,则锁定代理W 242、X244在请求的持续时间内试图获取“临时锁定”(或“闩锁”)。 具体来说,如果通过CIM对象路径到达对象,则在访问之前,将对象锁定。
闩锁是在为单个请求服务的过程中由代理获取的临时“锁”。在本发明的优选实施例中,闩锁释放不迟于请求完成,闩锁不是从外部建立的(即,与锁不同,闩锁不在任何CIM接口中引用)。然而,闩锁可以在代理执行动作时被代理用来临时持有资源。如果客户端请求是读取动作,则不需要锁定(例如,请求被当作无锁定读取)。更新请求可能被阻止(由于锁被识别锁定的客户端持有)。然而,读取动作不会被阻止。
需要考虑的一个特殊情况是元件管理器290的情况。在许多元件管理器将不会被重写的前提下,理解元件管理器如何与识别锁定的客户端进行交互特别重要。元件管理器用于在识别锁定的环境的“外部”执行。尽管元件管理器被编码为在存在锁定管理的情况下利用锁定管理是人们所希望的,但是,这不是必需的。
当不能识别锁定的元件管理器客户端290访问设备X 280时,不能识别锁定的元件管理器客户端290可以在不经过任何CIM代理结构的情况下达到这一目的。如此,不能识别锁定的元件管理器客户端290变成设备X 280的职责,以实际管辖元件管理器客户端280和识别锁定的客户端-1 210之间的交互。设备X 280遵循下列规则:(1)元件管理器客户端290发出的读取动作可以当做“无锁”(脏)读取,(2)获取被元件管理器客户端290的动作涵盖的资源的“闩锁”,该“闩锁”将阻止来自识别锁定的客户端-1 210的锁定动作。将与识别锁定的客户端-1 210持有的锁定冲突的元件管理器客户端290写入动作将被拒绝。实际上,来自元件管理器客户端290的写入动作暗示在写入操作期间的更改锁定。
可锁定的资源
锁将预留将是客户端(即,客户端应用程序)请求的主体的资源。例如,如果客户端希望对一个卷进行修改,客户端会将卷锁定。锁定设计的重要部分是理解是交互操作的基础的功能(即,请求)以及什么需要锁定,以确保预留资源,从而允许请求执行。另一个相关的问题是,如果客户端请求将是“创建”,则将什么锁定。即,问题是,客户端如何锁定还不存在的某种东西。在创建卷的情况下,客户端锁定从中创建卷的存储池可能是合理的。但是,是否锁定创建的卷的问题仍没有解决。最后,有如何标识锁定的问题。需要一个方案来唯一地表示被锁定资源。在下面几部分将讲述这些主题。
锁定的粒度
锁定设计考虑了锁定的粒度。然而,锁定不要求对象模型的每个元素都被显式锁定。客户端将锁定直接被它们打算发出的请求影响的所有资源。例如,创建卷将需要从中创建卷的存储池上的锁定。执行逻辑单元号(LUN)映射和屏蔽请求将要求将被引用的卷、端口和主机启动器锁定。这是锁定的客户端视图。
除了客户端视图之外,还有代理视图。从代理的观点来看,锁定的目的是预留允许客户端执行请求的资源。因此,代理锁定足够的资源,以确保客户端请求将不会由于锁定冲突而被拒绝。在本发明的优选实施例,代理将锁定支持客户端的请求所需要的所有资源,并维护代理模型的完整性,这暗示了级联锁定。
每当在对需要锁定什么存在歧义时,代理可以将锁定提高到更高的锁定。具体来说,代理可以提高到“代理锁定”。同样,客户端可以请求“代理锁定”。代理锁定受到对于管理的设备锁定计算机系统实例的影响。
识别锁定的代理所需要的最小支持是“代理锁定”。即,任何锁定请求都可以被提高到代理锁定。
级联锁定
代理需要在它们的锁定实现方式中考虑级联效应。锁定设计如此定义此级联效应,对象的锁定可以有效地锁定该对象所基于的多个对象(即,CIM环境中的实例)。图3显示了根据本发明的某些实现方式的级联锁定。虚拟化代理300包括存储池310和盘区320。阵列代理330包括存储卷340和盘区350。锁定存储池310可能暗示对存储池310所基于的盘区320的锁定。存储池310上的锁定可以暗示向不由虚拟化代理300进行管理的资源(例如,由从拥有存储池310的虚拟化代理300级联的代理进行管理的资源)。为了维护虚拟化代理300的对象模型的完整性,虚拟化代理300可能需要锁定较低级别的代理中的资源。例如,虚拟化代理300可以锁定由阵列代理330拥有的存储卷340和盘区350。
在CIM环境中,可以定义配置文件,每一个配置文件都定义配置文件所支持的锁定所暗示的锁定级联。Storage NetworkingIndustry Association(SNIA)正在开发一些对象模型的配置文件。配置文件描述了存储区域网络(SAN)实体的特定类。SAN实体的类可以描述SAN内的设备,如独立磁盘冗余阵列(RAID)设备。RAID设备允许在多个硬盘上存储同一数据,如此允许同时访问数据的副本。
锁定标识
实例锁定受到引用实例的CIMObjectPath的影响。这是由“枚举”实例获取的不透明的令牌,这在CIM规范的2.3.2.11部分进行了定义,并用于枚举实例CIM类。实际锁定实例是客户端的操作id和锁定的实例的CIMObjectPath的组合。实际上,锁可以视为操作id和CIMObjectPath之间的关联。关联具有锁定类型的属性(读取或更改)。
暗示的锁定
还有某些情况,锁定不是显式请求,但是也获取。具体来说,当创建资源(例如,存储卷或存储池)时,直到创建资源,资源将不会已经CIMObjectPath。一旦创建了资源,就代表客户端操作id获取锁定,而无需客户端发出锁定请求。
同样,代理可以选择锁定比客户端请求的数量更多的资源。在本发明的优选实施例中,代理不假设客户端已经锁定了客户端锁定的资源“下面”的一切。例如,代理知道支持“删除实例”操作将需要什么,并可以选择锁定由客户端可以作出的“最坏情况”请求所暗示的所有资源。
可锁定的资源和锁定的级别
被锁定的资源对于所有锁定级别(即,事务、隔离和客户端控制的)都一样。粒度和如何标识锁定也相同。级联和暗示的锁定可以变化,但是,通常不会。一般而言,事务锁定将倾向于要求严格的遵守级联和暗示锁定,以支持潜在的回滚请求。隔离和客户端控制的锁定级别不要求严格的遵守,因为它们不需要支持回滚操作。
锁定类型
锁定类型是指请求的锁定的“强度”。锁定类型确定被锁定阻止的动作。在LTM系统锁定的上下文中,有“更改”锁定和“读取”锁定。“更改”锁定比“读取”锁定更强。
锁定设计中的锁定管理器和锁定代理支持“读取”锁定和“更改”锁定。“读取”锁定保证了隔离(例如,数据读取在操作期间不会更改),而不会阻止其他读者。锁定设计还支持“无锁”(脏)读取,而不暗示“读取”锁定。
在本发明的优选实施例中,“无锁”写入不受支持。即,在“OperationId”下发生的写入操作将导致锁定被获取(如在“创建”操作中那样)。没有“OperationId”而发生的写入操作暗示客户端是不能识别锁定的客户端,适用不能识别锁定的客户端规则。即,在请求期间,获取“更改”锁定(或闩锁)。
读取和更改锁定在锁定的所有三个级别(即、事务、隔离和客户端控制的)中都受支持。
锁定兼容性语义
表3概述了本发明的优选实施例中的LTM系统锁定的锁定兼容性语义。
表3
 锁定持有者->锁定请求者V   更改   读取   无锁读取   无锁写入
    更改   拒绝   拒绝   允许   拒绝
    读取   拒绝   允许   允许   拒绝
    无锁读取   允许   允许   允许   允许
    无锁写入   拒绝   拒绝   允许   拒绝
表3显示了两个不同的客户端之间的交互。第一客户端是资源A上的“锁定持有者”,第二客户端是资源A上的锁定的“锁定请求者”。如果锁定持有者具有更改锁定,则拒绝所有锁定请求。然而,脏读(无锁读取)不会被阻止,因为没有锁定请求。如果锁定持有者具有资源上的“读取”锁定,“更改”锁定请求被拒绝,“无锁”写入被拒绝。锁定请求者可以获取“读取”锁定,也可以进行无锁读取。如果锁定持有者不持有锁定(无锁读取),则什么也不会被阻止。如果写入者不持有锁定,则除了无锁读者之外,所有请求者都被阻止。
被保护的动作
被保护的动作是可以被锁定阻止的动作。对什么被“读取”或“更改”锁定阻止的讨论提供了基本原则,但是,这里所提供的规则不是囊括一切的清单。E
Web Based Enterprise Management(WBEM)(基于Web的企业管理)是一组由Distributed Management TaskForce(DMTF)Inc.开发的管理和因特网标准技术,以统一企业计算环境的管理。DMTF开发了构成WBEM的核心标准集,包括一般信息模型(CIM)。
CIM是用于管理信息的面向对象的模型的标准。CIM标准是Distributed Management TaskForce(DMTF),Inc.所提供的。有关CIM标准的更多信息,请参见2002年5月发表的“Specificationfor CIM Operations over HTTP”,1.1版本,以下简称为“CIM规范”,这里原文引用了该规范作为参考。
要锁定的资源由CIMObjectPaths标识。含义是,具有CIMObjectPath的一切都可以被锁定。然而,这里建议的锁定设计详细讲述了什么对于锁定有意义,并基于级联锁定。一般而言,代理将支持整个设备的锁定(即,“锁定代理”),或导出的资源的单个实例的锁定。如果代理不支持由CIMObjectPath标识的资源的锁定,代理可以将锁定提高到代理锁定。
对于不能识别锁定的客户端和识别锁定的客户端之间的交互,还有一些规则。
读取保护的动作是被“读取”锁定阻止的那些动作。“读取”锁定会阻止“更改”锁定,但不会阻止其他“读取”锁定。“读取”锁定阻止“级联对象”和位于锁层次结构中较低的对象上的“更改”锁定。例如,一个代理上的“读取”锁定暗示由该代理进行管理的所有对象上的“读取”锁定。一个卷上的“读取”锁定级联到可以影响对被锁定的卷的更改的任何较低级别的对象上的“读取”锁定。如此,锁定一个卷可以通过其他代理防止对该卷所基于的池、盘区或阵列的更改。
更改(写入)保护的动作是被“更改”锁定阻止的那些动作。更改锁定阻止来自其他客户端的其他读取或更改锁定。更改锁定阻止“级联对象”上的其他锁定。例如,一个代理上的“更改”锁定暗示由该对象进行管理的所有对象上的“更改”锁定。一个卷上的“更改”锁定级联到可以影响对被锁定的卷的更改的任何较低级别的对象上的“读取”锁定。如此,锁定一个卷可以防止对该卷所基于的池、盘区或阵列的读取或写入。
无保护的动作是对对象执行的没有被锁定阻止的那些动作。无保护的读取动作是没有被“读取”锁定阻止的那些动作。“读取”锁定不会阻止其他读者,但是,“读取”锁定却会阻止写入者(和更改锁定)。无保护的写入动作是没有被“更改”锁定阻止的那些动作。更改锁定不会阻止其他不相关的对象上的锁定。更改锁定不会阻止对被锁定的对象的脏读。脏读是在没有获取锁(读取或更改)的情况下从代理那里检索信息的任何客户端请求。这叫做脏读,是因为读取没有被保护。对相同信息的随后的读取可能会产生不同的结果。此外,LTM系统中的写入动作还要求识别锁定的代理暗示被更改的每一个对象上的更改锁定。
与不能识别锁定的客户端的交互
当有LTM系统锁定存在时,无论是“锁定持有者”还是“锁定请求者”正在锁定,而其他客户端没有锁定,都会发生与不能识别锁定的客户端的交互。不能识别锁定的客户端根本不会发出任何锁定。然而,当不能识别锁定的客户端尝试执行写入动作时,在执行动作期间,获取隐式更改锁定。如此,“更改”或“读取”锁定阻止被锁定资源上的任何不能识别锁定的客户端的动作。然而,如果不能识别锁定的客户端尝试执行读取动作(无锁读取),则读取动作不会被任何锁定阻止。如果不能识别锁定的客户端更新了资源,那么,这会临时阻止锁定客户端的更改锁定。然而,脏读(无锁读取)不会被阻止。
死锁管理
锁定设计通过在锁定管理器中放置死锁检测机制来处理死锁的情况。锁定支持“随意进行锁定”语义,对于锁定不立即可用的情况,还支持锁排队。当两个或更多客户端试图锁定两个或更多资源并且都在等待对方时,发生死锁(这有时被称为“僵局”)。在本发明的优选实施例中,为解决这样的情况,锁定管理器可以试图检测这样的周期,挑选其中一个死锁的客户端,并拒绝该客户端的锁定请求。
在本发明的优选实施例中,LTM系统支持锁队列超时,这是比较简单的方法。如果锁定请求停留在锁队列上已达到预先确定的时间量,而没有获取锁定,则拒绝锁定请求。每一个资源都具有关联的锁队列。
锁可以排队的时间长度是由将给予锁的代理确定的。锁队列在锁定管理器中保留和维护。代理允许或拒绝锁定。当锁被代理拒绝时,代理可以提供“队列时间”(在被锁定管理器拒绝之前锁可以排队的时间)。如果代理不提供队列时间,则锁定管理器将应用默认时间长度(例如,由锁定管理管理员预定义或定义的)。锁定请求最终可能被拒绝。接下来将发生什么情况取决于所使用的锁定级别。
对于事务锁定级别,在队列中超时的锁将导致操作(由操作id标识)中止。具体来说,检测到超时的锁定管理器通知事务管理器,锁定请求被拒绝。事务管理器将驱动回滚操作。回滚的最后一部分是释放事务持有的锁,这将打破僵局(即,结束死锁)。
对于隔离锁定级别,锁定管理器将向始发客户端返回锁被拒绝的响应。客户端可以选择重新发出锁定请求,但是,客户端的优选动作将是试图从迄今为止客户端所进行的操作中恢复。因此,锁定管理器不会在锁被拒绝的情况下自动释放锁定。客户端将被给予试图“撤消”到发生锁失败的时间点为止客户端所完成的工作的机会。当客户端已经完成其恢复动作时,客户端释放锁定。
对于客户端控制的锁定级别,锁定管理器将向始发客户端返回锁被拒绝的响应。与隔离级别相同,客户端控制的情况下的客户端将被给予恢复它所完成的工作的机会。然而,在客户端控制的情况下,这可能意味着重新获取客户端以前持有的但已经释放的锁定。当然,这可能导致“循环拒绝”的情况。因此,锁定管理器将跟踪锁定管理器已经给予一个操作id的拒绝的数量,并在预先确定的拒绝数量(例如,3)之后单方面地释放所有锁定。
锁定操作
在下面几部分说明了识别锁定的客户端和锁定管理器(服务器)之间的请求/响应协议。其他消息可以添加到协议中,或者一些消息可以删除或替换。
锁定请求/响应参数
AgentRequest包含下列参数中的每一个中的一个:CIMObjectPath(即,将被锁定的每一个实例的对象路径)和类型(即,请求的锁定的类型(读取或更改))。AgentResults包含下列参数中的每一个中的一个:CIMObjectPath(即,已经被锁定的每一个实例的对象路径)和类型(即,允许的锁定的类型(读取或更改))。
应所有锁定请求,提交操作id。操作id标识正在请求锁定的客户端操作。操作id是应GetOperationId请求或BeginTransaction请求。
QueueTime是应锁定请求向被拒绝的代理返回的时间段。QueueTime标识代理愿意让锁定请求停留在队列中的时间长度。
下面的表4概述了锁定请求,发出它们的组件(即,客户端、锁定管理服务器、事务管理器或锁定代理)和接收组件(即,客户端、锁定管理服务器、事务管理器或锁定代理)。下面将进一步详细地描述每一个锁定请求。
表4
  锁定/事务请求/响应   发出的组件   接收的组件
  Begin Transaction   客户端   事务管理器
  Log Update   客户端   事务管理器
  Commit Transaction   客户端   事务管理器
  Rollback Transaction   客户端   事务管理器
  GrantTransactionId   事务管理器   客户端
  LogUpdated   事务管理器   客户端
  CommitDone   事务管理器   客户端
  RollbackDone   事务管理器   客户端
  ReleaseOperationId   事务管理器   锁定管理器
  GetOperationId   客户端   锁定管理器
  LockRequest   客户端   锁定管理器
  ReleaseOperationId   客户端   锁定管理器
  LockRelease(<sup>*</sup>)   客户端   锁定管理器
  GrantOperationId   锁定管理器   客户端
  LockGrant   锁定管理器   客户端
  LockRefused   锁定管理器   客户端
  LockQueued   锁定管理器   客户端
  OperationIdReleased   锁定管理器   客户端或事务管理器
  LockReleased(<sup>*</sup>)   锁定管理器   客户端
  AgentRequest   锁定管理器   锁定代理
  AgentReleaseAll   锁定管理器   锁定代理
  AgentRelease(<sup>*</sup>)   锁定管理器   锁定代理
  AgentGrant   锁定代理   锁定管理器
  AgentRefuse   锁定代理   锁定管理器
  AgentAvail   锁定代理   锁定管理器
  AgentAllReleased   锁定代理   锁定管理器
  AgentReleased(<sup>*</sup>)   锁定代理   锁定管理器
带有星号()标记的请求只能用于客户端控制的锁定级别中。
客户端事务管理器请求/响应
本节将描述客户端和事务管理器之间的请求/响应协议。
在本发明的优选实施例中,客户端请求包括BeginTransaction、LogUpdate、CommitTransaction和RollbackTransaction。
BeginTransaction()请求是从客户端发出的请求将在事务控制(和事务锁定级别)下执行的客户端操作的操作id的消息。客户端从其中一个事务管理服务器要求操作id。在本发明的优选实施例中,这将是客户端的系统上的事务管理服务器。该事务管理器生成的操作id在发往事务管理器和锁定管理(LM)组服务器的请求中使用。
LogUpdate(OperationId,Request,ReverseRequest)LogUpdate(OperationId,Request,ReverseRequest)请求从客户端发往事务管理器,以记录更新动作和使更新颠倒应采取的操作。
CommitTransaction(OperationId)请求是从客户端到事务管理器的启动事务的提交处理的消息。
RollbackTransaction(OperationId)请求是从客户端到事务管理器的启动事务的回滚处理的消息。
在本发明的优选实施例中,事务管理服务器支持下列响应消息:
GrantTransactionID、LogUpdated、CommitDone和RollbackDone。
GrantTransactionID(OperationId)响应是为了响应BeginTransaction请求而发出的。事务管理器生成唯一的操作id并向客户端返回操作id。OperationId的前缀(即,操作id的第一部分)表示操作id是由事务管理器为事务生成的。
LogUpdated(Operationid,Request)响应是从事务管理器发往客户端的,说明事务管理器已经完成了记录更新动作(由请求标识)。
CommitDone(OperationId)响应是从事务管理器发往客户端的消息,表示由OperationId标识的事务的提交处理已经成功地完成。此消息是响应CommitTransaction请求发送的。
RollbackDone(OperationId)响应到从事务管理器发往客户端的消息,表示由OperationId标识的事务的回滚已经完成。这可以响应CommitTransaction或RollbackTransaction请求发送。
客户端锁定管理服务器请求/响应
本节将描述客户端和锁定管理服务器之间的请求/响应协议。
在本发明的优选实施例中,客户端请求包括:GetOperationId、LockRequest、ReleaseOperationId和LockRelease。
GetOperationId()请求是从识别锁定的客户端发出的请求客户端将执行的操作的操作id的消息。客户端从其中一个锁定管理组服务器要求操作id。该锁定管理服务器生成的相同操作id在发往其他锁定管理组服务器的请求中使用。在启用事务的环境中,OperationId可以使用BeginTransaction请求获取,将不会向锁定管理服务器发出此请求。如果在发出BeginTransaction请求之后发出GetOperationId请求,则生成第二个OperationId。
LockRequest(AgentRequest[],Type[],OperationId)请求是是从识别锁定的客户端发出的请求由“Type”参数指定的类型(读取或更改)的一个或多个锁定的消息。锁将代表指定的操作id来获取。
ReleaseOperationId(OperationId)请求是从识别锁定的客户端发出的请求释放操作id所持有的所有锁定的消息。此请求被发送到参与操作的每一个锁定管理组服务器,虽然操作id是从一个锁定管理组服务器获取的。在启用事务的环境中,ReleaseOperationId请求受到结束事务的影响(例如,在提交或回滚之后完成),客户端不需要发出ReleaseOperationId命令。
LockRelease(AgentRequest[],OperationId)请求是从识别锁定的客户端发出的请求释放特定锁定的消息。此命令对客户端控制的锁定级别有效。在本发明的优选实施例中,在最初允许的锁定和正在被释放的锁定之间没有1对1的关系。即,客户端不一定同时释放所有锁定。
在本发明的优选实施例中,响应客户端请求,锁定管理服务器支持下列响应消息:GrantOperationId、LockGrant、LockRefused、LockQueued、OperationReleased和LockReleased。
GrantOperationId(OperationId)响应是为了响应GetOperationId请求而发出的。锁定管理服务器生成唯一的操作id并将它返回给客户端。
LockGrant(AgentResults[],OperationId)响应是为了响应来自客户端的LockRequest请求而发出的。AgentResults标识在请求的资源上允许的锁定和允许的锁定的类型。AgentResults可以不同于AgentRequest。即,锁定可能已经被提高到更高的锁定(例如,“读取”锁定提高“更改”锁定)。在客户端启动了多个操作的情况下,LockGrant还返回操作id。AgentResults返回请求的锁定或被提高的锁定。AgentResults不包括暗示的锁定(通过级联锁定)。如此,客户端了解客户端请求了其锁定的对象。客户端可能不了解被锁定的对象“下面”的对象。然而,锁定提高被报告。锁定提高是指将持有的锁定“升级”以增大锁定的范围或升级锁定的类型。提高可以是从读取到更改锁定或从实例锁定到代理锁定。由于客户端可以基于提高合理地进行优化(例如,停止向其中操作已经持有代理锁定的代理发出锁定请求),提高将被报告。
LockRefused(AgentResults[],OperationId)响应是为了响应来自客户端的LockRequest请求而发出的。如果锁定不被允许,并且锁定请求在队列上超时,那么,客户端将获得此响应。在客户端启动了多个操作的情况下,LockRefused还返回操作id。
LockQueued(AgentResults[],OperationId)响应是在锁定请求被排队的情况下由服务器发送的。此响应消息不一定要求客户端方面采取动作,然而,LockQueued消息通知客户端,操作处于排队状态。返回的OperationId标识遇到锁排队的情况的操作。
OperationReleased(OperationId)响应是为了响应来自客户端的ReleaseOperationId请求而发出的。在客户端启动了多个操作的情况下,OperationReleased还返回操作id。
LockReleased(AgentResult[],OperationId)响应是为了响应来自客户端的LockRelease请求而发出的。AgentResult可以不同于LockRelease请求中的AgentRequest。例如,如果代理将实例锁定提高到了代理锁定,则锁定可能不会被释放。事实上,AgentResult可以是空阵列。LockReleased响应适用于客户端控制的锁定级别。对于事务锁定级别,LockRelease请求被拒绝。对于隔离锁定级别,LockRelease请求将导致锁定的级别下降到客户端控制的级别。
锁定管理服务器/代理请求/响应
本节描述了锁定管理服务器和识别锁定的代理之间的一组特定请求/响应。
在本发明的优选实施例中,锁定管理服务器请求包括AgentRequest、AgentReleaseAll和AgentRelease。
AgentRequest(AgentRequest[],OperationId)请求是发送给锁定管理器的锁定请求,然后,锁定管理器将锁定请求发送给单个代理。此请求将锁定请求传递由代理进行管理的那些对象的代理。发往代理的锁定请求传递操作id,以标识正在请求锁定的客户端操作。允许的锁定一直保持,直到被显式释放(通过AgentRelease请求)。
AgentReleaseAll(OperationId)请求是释放操作(客户端)所持有的所有(代理)锁定的请求。服务器不必显式列出将要释放的锁定,因为锁定是由操作id暗示的。即,预计锁定代理为操作保留锁定,操作所持有的所有锁定都被AgentReleaseAll请求释放。
AgentRelease(AgentRequest[] OperationId)是释放操作(客户端)所持有的选定的锁定的请求。如果客户端操作在客户端控制的锁定级别下执行,则应该发出此请求。
在本发明的优选实施例中,对于事务环境,另外还有三个发出的请求。  第一个是来自锁定管理服务器的“Prepare to Commit”请求。Prepare to Commit请求是告诉代理要准备提交的事务管理器功能。即,Prepare to Commit请求告诉代理,事务即将结束,代理应该准备提交或回滚。来自代理的确认意味着,代理可以进行任意操作。代理可以从.事务管理器获得的第二个请求是“Rollback Agent”或“Commit Agent”请求。在本发明的优选实施例中,事务管理器可以通过发出“反向”动作来驱动回滚,而不是依赖代理智能来执行回滚。
在本发明的优选实施例中,代理响应包括:AgentGrant、AgentRefuse、AgentAvail、AgentAllReleased和AgentReleased。
AgentGrant(AgentResult[],OperationId)响应是为了响应AgentRequest请求而发出的。AgentResult列表可以比AgentRequest列表短。这意味着,某些请求的锁定将被拒绝(见下文)。允许的锁定将显示CIMObjectPath和允许的锁定的类型(例如,读取或更改)。在本发明的优选实施例中,AgentResults包括锁定提高(例如,提高到“更改”锁定的“读取”锁定,或提高到代理锁定的实例锁定),但是,AgentResults不包括暗示的或级联锁定。
AgentRefuse(AgentResult[],OperationId,QueueTime)响应是在代理拒绝任何锁定请求的情况下由该代理发出的。被拒绝的锁定在AgentResult中标识,并提供Queuetime。这是代理愿意允许任何被拒绝的锁定保留在队列中的时间长度。
AgentAvail(AgentResult[])响应告诉锁定管理服务器,以前请求的(和排队的)资源现在可用。实际排队是在锁定管理服务器中进行的。然而,需要此消息,才能让锁定管理服务器知道,不能识别锁定的客户端所持有的资源现在可用于锁定。
AgentAllReleased(OperationId)响应是代理为响应AgentReleaseAll请求而向锁定管理服务器发送的。
AgentReleased(AgentResult[],OperationId)响应是代理为响应AgentRelease请求发送给锁定管理服务器的响应。此请求与AgentRelease请求一样,适用于客户端控制的锁定级别。
发现
在本发明的优选实施例中,管理员设置锁定管理服务器,并给它们每一个都提供一个唯一的锁定管理组值。然后,管理员将锁定管理组值分配给代理。每一个代理要么属于无锁管理组,要么属于一个锁定管理组。代理的默认锁定管理组值是“DefaultUnconfigured”。
在发现服务代理的过程中,锁定管理客户端确定锁定管理组、它们的锁定管理服务器,以及锁定管理代理。此发现过程告诉客户端,要使用哪个锁定管理服务器来将锁定管理代理中的资源锁定。在本发明的优选实施例中,有一个以上的锁定管理服务器向发现机制(即,在目录中维护有关网络的资源的信息的机制)将其本身广告为支持一个锁定管理组值是错误的。如果锁定管理服务器上来并发现另一个具有相同锁定管理组值的锁定管理服务器,则它不应该广告其本身。
如果代理上来,而对于锁定管理组没有锁定管理服务器,那么该代理将其状态记录为启用“未锁定”。
锁定管理实现方式
在本发明的优选实施例中,锁定管理是由实现这里所描述的锁定设计的所有适当的组件实现的,然而,锁定与环境中的非锁定组件共存。在本发明的优选实施例中,锁定管理是在锁定管理服务器和锁定管理代理中实现的,以实现锁定环境,而客户端中的锁定则由客户端自行决定。锁定管理服务器或锁定代理能够对付不进行锁定的客户端或不能识别锁定的代理。下面将进一步地讨论每一种情况。
不能识别锁定的客户端
不能识别锁定的客户端是对于操作不实现锁定管理的客户端或者根本不实现锁定的客户端(例如,旧式客户端)。当识别锁定的代理从不能识别锁定的客户端接收到更新请求时,识别锁定的代理在该操作进行过程中将该操作当作被锁定(即,用更改锁定),以保护代理的识别锁定的客户端。即,如果动作将更新模型,那么,暗示的锁定是对受请求影响的资源的更改锁定。如果操作是读取,那么,代理可以将动作当作“无锁”读取。本质上,如果不能识别锁定的客户端试图更新用CIM代表的对象模型的任何部分,那么,不能识别锁定的客户端可以被阻止(即,请求被拒绝)。
如果没有识别锁定的客户端持有正在被不能识别锁定的客户端修改的资源上的锁定,则请求被允许执行。然而,暗示了更改锁定(或等效物),以便来自识别锁定的客户端的任何锁定请求都被阻止。在来自识别锁定的客户端的锁定请求的情况下,锁定请求可以排队。代理返回在将锁定请求排队时要使用的队列时间值。由于不能识别锁定的客户端不经过锁定管理器,当不能识别锁定的客户端完成时,代理向锁定管理器发出AgentAvail消息。
不能识别锁定的代理/对象管理器
不能识别锁定的代理或对象管理器是不实现锁定管理的代理或对象管理器。
在本发明的优选实施例中,不能识别锁定的一般信息模型-可扩展标记语言(CIMXML)服务器(即,具有CIM对象管理器和代理的CIM服务器)不支持更多的用于允许和释放锁定的内在方法。发现这些旧式角色的客户端将它们当作是不能识别锁定的客户端那样来处理不变操作。
锁定管理客户端
客户端识别它们进行操作所在的锁定环境。首先,客户端识别是否存在锁定管理器。然后,客户端识别是否存在事务管理器。如果所有代理都是识别锁定的,并且有事务管理器存在,那么,代理可以使用事务锁定级别。如果事务管理器不存在,那么,代理使用隔离级别或客户端控制的级别或根本不进行锁定。
如果配置中的有不能识别锁定的代理,则客户端认识到,在那些代理上的任何动作都将不会受到保护。另外,客户端理解,正在进行事务或隔离锁定级别的操作对于不能识别锁定的代理将不会具有该功能。
客户端判断在任何给定的操作中要使用哪个级别的锁定。为了实现并行性和可缩放性,客户端最好使用“最低”级别的锁定,以支持操作。例如,如果客户端正在调查SAN上是否有可用的存储空间,(即,为了纯粹的读取操作),客户端最好不进行锁定。如果客户端正在调查可用的存储空间以创建卷,那么,隔离级别足以保证发现的存储空间事实上可以用于创建卷。
事务锁定级别是为涉及需要协调的多个更新的复杂操作预留的,也许跨SAN中的多个代理。
选择在其中一个锁定级别下执行操作的客户端通过从事务管理器或客户端将使用的其中一个锁定管理器请求操作id来开始操作。操作id可以从任何锁定管理器请求,然而,如果客户端从客户端将使用的其中一个锁定管理器请求操作id,则更有效。
锁定管理客户端的规则概括如下:2(1)客户端统计在操作中客户端必须对付的代理、锁定管理服务器和事务管理器,以判断所有代理是否都被锁定涵盖并且锁定环境是否为启用事务的。操作是否可以编码为锁定操作,所使用的锁定级别是否可以根据操作不同而不同。即,客户端将基于客户端关于操作将要求什么的的理解,选择客户端将使用的锁定级别。
锁定管理客户端在客户端尝试对资源采取动作之前,获取资源上的锁定。然而,这可以在执行动作的紧前面完成。在本发明的优选实施例中,在执行任何动作之前不必获取所有锁定,对于“创建”请求,是个例外。更改锁定将在创建请求上暗示。
单个锁定管理请求包括对同一个锁定管理组中的代理的引用。
当操作完成时,锁定管理客户端释放锁定。如果客户端使用事务管理器(即,释放锁定由提交或回滚暗示),则将会为客户端自动完成。
在任何锁定请求都被拒绝的情况下,锁定管理客户端进行“恢复”并释放锁定。即,如果锁定请求被拒绝,则保留操作所持有的现有的锁定,以允许应用程序尝试其自己的“撤消”或调用事务管理器回滚功能。一旦任何操作完成,锁定就被释放。
(a)在隔离或客户端控制的锁定级别运行的锁定管理客户端负责“撤消”在遇到任何失败情况之前完成的操作的任何部分。
(b)如果锁定管理客户端试图获取锁定而尝试失败,则锁定管理客户端可以重试锁定尝试。在本发明的优选实施例中,不建议这样做,锁定管理服务器可以通过拒绝重试中的操作id的锁定而强制实施此规则。
锁定管理服务器
锁定过程涉及维护锁定的状态信息的锁定管理器(例如,锁定管理服务器)。这意味着,锁定请求由锁定管理服务器进行管理,冲突是在锁定管理服务器级别处理的。锁定管理服务器可以检测明显的冲突,并将请求排队,而不必与代理商量。例如,锁定管理器维护可以维护下列状态信息:
客户端(操作id)持有的锁定
具有客户端(操作id)的锁定的代理
锁队列(排在其他锁定请求后面的客户端锁定请求)
锁队列超时
在锁定设计中,一个锁定管理服务器对于任何给定锁定管理组是活动的。一个代理属于一个锁定管理组。在本发明的优选实施例中,锁定设计支持不属于任何锁定管理组的代理的概念,然而,由这样的代理进行管理的资源不在锁定控制之下。
如果一个锁定管理服务器在其发现锁定管理器代理期间发现另一个活动的具有相同锁定管理组值的锁定管理服务器,则该锁定管理服务器不激活其本身。然而,该锁定管理服务器可以启动与具有相同锁定管理组值的其他锁定管理服务器的通信,并将其本身作为该锁定管理组值的备份锁定管理组服务器。
锁定管理服务器识别它运行所在的环境。具体来说,锁定管理服务器发现其他锁定管理组服务器,验证锁定管理服务器是其锁定管理组值的唯一的锁定管理服务器。此外,锁定管理服务器还发现具有相同锁定管理组值的所有代理。
锁定管理服务器能够执行下列功能:
支持和实施锁定级别(事务、隔离或客户端控制的级别)。具体来说,如果OperationId是事务Id(即,前缀是on),那么锁定管理器将在事务结束之前不会支持锁定释放。在隔离对客户端控制的级别的情况下,锁定管理器将假设隔离级别,直到客户端释放单个锁定。然后,锁定管理器将操作标记为客户端控制的。
3(2)生成OperationIds。服务器能够生成操作id,以标识隔离和客户端控制的锁定级别的客户端操作。在本发明的优选实施例中,OperationId是一个复合值。该值的第一部分表示操作不是事务,第二部分是锁定管理组值,该值的第三部分是在锁定管理组内唯一的标识符。标识符是在0到2221范围内的整数。这允许有足够的距离,以避免在在同一时间帧内重复使用。
4
通过记录哪些资源(例如,CIMObjectPaths)被哪些持有者(OperationId)持有,保留一个持有了哪些锁定的记录,还维护一个正在排队的锁定请求的记录。
在锁定管理器或锁定代理发生失败之后恢复锁定。此外,还恢复锁队列。
将阻止的锁定请求排队。允许的排队时间是由锁定了资源的代理提供的。锁定管理服务器监视队列上的时间,以遵守代理指定的队列时间。如果在操作获取锁定之前队列时间结束,那么,向客户端返回一个锁定被拒绝的消息。
当客户端要求释放锁定时,释放锁定。锁定管理服务器对代理和客户端使用心跳功能,以在失败的情况下(例如,客户端、代理或通信失效)释放锁定。心跳功能可以是,从服务器发送到客户端和代理的信号,对该信号的响应表示,作出响应的客户端或代理功能正常。
在本发明的优选实施例中,锁定管理服务器还与其他锁定管理器进行通信,以实现锁定管理故障转移。
锁定管理服务器特点
在本发明的优选实施例中,最小的锁定管理服务器具有下列特征:
接受锁定管理服务器请求并提供规定的响应。
驱动锁定管理代理请求并处理它们的响应。
在支持识别锁定的客户端操作时,有状态。
存在单故障点,但也可以被设计为支持锁定管理服务器故障转移。
执行自己的锁定管理组范围内的功能。
锁定管理器可选增强功能
在本发明的优选实施例中,锁定管理器可以被设计为支持下列特点:
高度可用的锁定管理服务器。
事务锁定管理服务器。
锁定管理代理注意事项
识别锁定的代理可以在锁定模式或无锁模式下操作。将要求识别锁定的代理执行什么根据操作不同而不同。
在初始发现过程中,识别锁定的代理寻找它们的锁定管理组服务器。如果发现了锁定管理组服务器,则启用代理的锁定功能。如果没有发现锁定管理组服务器,则代理将在无锁模式下操作。
在某些实现方式中,在处理锁定请求时锁定管理代理需要遵循的规则有:
持有所有允许的锁定,直到显式释放。
阻止来自不能识别锁定的客户端的将与识别锁定的客户端持有的锁定冲突的动作。
由于不能识别锁定的客户端使用而拒绝锁定请求之后,当资源可用时,通知(通过AgentAvail)其锁定管理服务器。
锁定管理使用情况
为说明锁定设计,将描述客户端操作的一组情况。将描述下列每一种情况的锁定逻辑:
在存储空间不足的虚拟化系统上创建卷
从一个虚拟化系统向另一个虚拟化系统移动存储空间。
从虚拟化系统向基于主机的虚拟化移动存储空间。
在逻辑卷管理器上创建逻辑卷,并从虚拟化子系统和磁盘阵列提供它。
在虚拟化系统上创建卷
图4A显示了在根据本发明的优选实施例的存储空间不足的虚拟化系统上创建卷的过程。客户端(C1)400正在试图在虚拟化子系统(V1)410上创建卷,但虚拟化子系统410没有足够的存储空间用于创建卷。  因此,客户端400首先从磁盘阵列SS1 420获取存储空间。向V1 410分配存储空间,然后,在V1 410上可以使用该存储空间。动作与操作id1(Op1)关联。此操作的具体步骤有:
2(1)在SS1 420上创建卷(例如,通过CIM中的StorageConfigurationService语句)-这涉及在SS1 420中锁定存储池并发出创建卷服务。此情况下的前提是,虚拟化子系统410不自动提供存储空间。在SS1 420上创建卷是由客户端400进行的。
3(2)将卷分配给V1 410-将刚刚创建的卷分配(即,逻辑单元号(LUN)映射)到V1 410。前提是,卷不由V1 410进行控制,直到客户端400将卷映射到V1 410。
4(3)通过将卷添加到池来扩展V1 410上的存储池-分配给V1 410的卷在V1 410对象模型中显示为盘区。客户端400将盘区添加到将包含新V1 410卷的V1 410存储池。
5(4)在V1 410上创建LUN-客户端400实际在V1 410上创建卷。
图4B显示了根据本发明的优选实施例的在存储空间不足的虚拟化系统上创建卷的动作序列中锁定步骤和主要客户端动作请求的表460。
从一个虚拟化系统向另一个虚拟化系统移动存储空间
图5A显示了根据本发明的优选实施例的从一个虚拟化系统向另一个虚拟化系统移动存储空间的过程。客户端(C1)510试图从锁定管理组A 500中的一个虚拟化系统(V1)520向另一个虚拟化系统(V2)530移动存储空间。为此,客户端510释放V1 520上的存储空间,然后,将释放的存储空间分配给V2 530。从V1 520释放的存储空间被锁定管理组B 540中的阵列SS1 550持有。动作与操作id1(Op1)关联。此操作的具体步骤有:
删除V1 520上的盘区(StorageConfigurationService)-这涉及锁定V1 520中的存储池,并发出删除盘区服务。此情况下的前提是,锁定存储池也将锁定存储池的盘区。
从V1 520取消映射SS1 550-这涉及锁定SS1 550卷和卷所映射到的端口/启动器。这里的前提是,映射中所涉及的对象是需要锁定的对象(映射请求所看到的)。
将SS1 550卷映射到V2 530-操作已经持有卷上的锁定,但,操作还锁定V2 530的新端口/启动器。
将盘区(SS1 550卷)添加到V2 530存储池。(StorageConfigijrationService)-这涉及锁定V2 530上的存储池。
图5B和5C显示了根据本发明的优选实施例的在从一个虚拟化系统向另一个虚拟化系统移动存储空间的隔离锁定级别下采取的动作序列中的锁定步骤和主要客户端动作请求的表560。
从虚拟化系统向逻辑卷移动存储空间
图6A显示了根据本发明的优选实施例的从虚拟化系统向逻辑卷管理器移动存储空间的过程。客户端(C1)610从锁定管理组A600中的一个虚拟化系统(V1)620向逻辑卷管理器(LVM1)630移动存储空间。为此,客户端610释放V1 620上的存储空间,然后,将释放的存储空间分配给LVM1 630。从V1 620释放的存储空间被锁定管理组B 640中的阵列SS1 650持有。动作与操作id1(Op1)关联。此操作的具体步骤有:
删除V1 620上的盘区(StorageConfigurationService)-这涉及锁定V1 620中的存储池,并发出删除盘区服务。此情况下的前提是,锁定存储池也将锁定存储池的盘区。
从V1取消映射SS1 650卷。这涉及锁定SS1 650卷和卷所映射到的端口/启动器。这里的前提是,映射中所涉及的对象是需要锁定的对象(映射请求所看到的)。
将SS1 650卷映射到LVM1 630-操作已经持有卷上的锁定,但,操作还锁定LVM1 630的新端口/启动器。
将盘区(SS1 640卷)添加到LVM1 630逻辑卷组(存储池)(StorageConfigurationService)-这涉及锁定LVM1 630上的逻辑卷组。
图6B和6C显示了根据本发明的优选实施例的在从虚拟化系统向逻辑卷管理器虚移动存储空间的隔离锁定级别下采取的动作序列中的锁定步骤和主要客户端动作请求的表660。
创建逻辑卷和从多个源提供逻辑卷
图7A显示了根据本发明的优选实施例的创建逻辑卷和从多个源提供逻辑卷的过程。客户端(C1)700正在试图创建逻辑卷并从多个源提供逻辑卷。具体来说,客户端700希望从虚拟化系统(V1)720和存储阵列(SS1)730获取存储空间。动作与操作id1(Op1)关联。此操作的具体步骤有:
在V1 720上创建卷(StorageConfigurationService)-这涉及锁定V1 720中的存储池,并发出创建卷服务。
向主机(即,逻辑卷管理器1(LVM1)710)暴露(即,映射)V1 720卷-这涉及锁定V1 720卷和卷所映射到的端口/启动器。这里的前提是,映射中所涉及的对象是需要锁定的对象(映射请求所看到的)。
在SS1 730上创建卷(StorageConfigurationService)-这涉及锁定SS1 730中的存储池,并发出创建卷服务。
向主机(即,LVM1)暴露(即,映射)SS1 730卷-这涉及锁定SS1 730卷和卷所映射到的端口/启动器。这里的前提是,映射中所涉及的对象是需要锁定的对象(映射请求所看到的)。
将逻辑盘(即,盘区)添加到LVM1 710逻辑卷组(存储池)(StorageConfigurationService)-这涉及锁定LVM1 710上的逻辑卷组。
图7B和7C显示了根据本发明的优选实施例的在创建逻辑卷和从多个源提供逻辑卷的隔离锁定级别下采取的动作序列中的锁定步骤和主要客户端动作请求的表760。
锁定和事务管理
图8显示了根据本发明的优选实施例的LTM系统中为处理锁定而实现的逻辑。控制从方框800开始,客户端识别要被锁定的资源。客户端还知道哪个代理控制对资源的访问(即,“控制资源”),客户端通过锁定管理器向控制对资源的访问的锁定代理发送锁定请求(方框810)。代理允许或拒绝锁定请求(820),代理向锁定管理器发送对锁定请求的响应(830)。锁定管理器判断锁定请求是否被允许(方框840)。如果锁定请求被允许,则锁定管理器将允许通知转发到客户端(方框850),否则,锁定管理器将锁定请求排队(方框850)。
图9显示了根据本发明的优选实施例的锁定管理器实现的逻辑。控制从方框900开始,锁定管理器管理从多供应商客户端接收到的并发往多供应商代理的锁定请求,并管理从多供应商代理到多供应商客户端的响应。在多供应商环境中,多个供应商中的每一个供应商都试图实现所有供应商开发的角色(例如,代理或客户端)中的相同的逻辑。典型的SAN环境包括多供应商环境。如此,术语“多供应商客户端”用于表示每一个客户端或客户端子集可以由不同的供应商开发。术语“多供应商代理”用于表示每一个代理或代理子集可以由不同的供应商开发。
锁定管理器维护了有关每一个多供应商客户端和多供应商代理的状态信息(方框910)。锁定管理器管理被多供应商代理拒绝的锁定请求的队列(方框920)。锁定管理器执行心跳功能,以确保多供应商客户端和多供应商代理功能正常(方框930)。
图10显示了根据本发明的优选实施例的事务管理器实现的逻辑。控制从方框1000开始,事务管理器接收事务在异构分布式环境中开始的指示。异构分布式环境是其中客户端、事务管理器、锁定管理器、和代理或这些角色的子集可以来自相同或不同的供应商的环境。在方框1010中,事务管理器为事务生成操作标识符。在方框1020中,事务管理器记录由操作标识符标识的事务的动作,动作包括请求、对应的反向请求(用于回滚),以及锁定授权。
例如,请求可以是“创建卷X”,在这样的情况下,对应的反向请求将是“删除卷X”。在方框1030中,事务管理器执行事务的提交处理。在方框1040中,在必要时,事务管理器执行事务的回滚处理。
图11A和11B显示了根据本发明的优选实施例由级联代理在判断锁定资源要使用哪个操作标识符时所执行的逻辑。在图11A中,控制从方框1100开始,第一代理接收客户端的用关联的操作标识符锁定由第一代理控制的资源的锁定请求。第一代理用与客户端关联的操作标识符锁定由第一代理控制的资源(方框1102)。即,操作标识符与客户端关联,锁定与该操作标识符关联。如果接收到另一个用同一个操作标识符锁定资源的请求,则锁定请求被允许。
第一代理基于要在第二代理上执行的操作是否必须在客户端的请求完成之前完成,判断由第二代理控制的更多的资源是否应该用同一个操作标识符来进行锁定,以处理客户端的请求(方框1104)。即,如果要在第二代理上执行的操作必须在客户端的请求完成之前完成,那么,由第二代理控制的更多的资源用同一个操作标识符来进行锁定。在方框1106中,如果判断更多的资源应该用同一个操作标识符来进行锁定,则处理转到方框1108,否则,处理转到方框1118。
在方框1108中,第一代理向第二代理的锁定管理器发送锁定请求,以用同一个操作标识符锁定更多的资源。在方框1110中,第二代理的锁定管理器判断是否存在锁定冲突。如果存在锁定冲突,则处理转到方框1114,否则,处理转到方框1112。在方框1114中,第二代理的锁定管理器将锁定请求排队。在方框1112中,第二代理的锁定管理器将锁定请求传递到第二代理。第二代理用同一个操作标识符锁定由第二代理控制的资源(方框1116)。
在方框1118中,第一代理从其锁定管理器中获取新操作标识符。第一代理向第二代理的锁定管理器发送用新操作标识符锁定更多的资源的通知(方框1120)。在方框1122中,第二代理的锁定管理器判断是否存在锁定冲突。如果存在锁定冲突,则处理转到方框1126,否则,处理转到方框1124。在方框1126中,第二代理的锁定管理器将锁定请求排队。在方框1124中,第二代理的锁定管理器将锁定请求传递到第二代理。第二代理用新操作标识符锁定由第二代理控制的资源(方框1128)。
图11C和11D显示了根据本发明的优选实施例当第一代理锁定由第二代理控制的资源并且第二代理接收到另一个锁定该资源的请求时由级联代理执行的逻辑。在图11C中,控制从方框1150开始,第一代理接收客户端的用关联的操作标识符锁定由第二代理控制的资源的请求。第一代理用与客户端关联的操作标识符锁定由第二代理控制的资源(方框1152)。在图11D中,控制从方框1154开始,第二代理接收客户端的用一个操作标识符锁定由第二代理控制的资源的请求(方框1154)。第二代理判断资源是否已经用同一个操作标识符锁定(方框1156)。在本发明的优选实施例中,第二代理通过将第一操作标识符与用于锁定资源的操作标识符进行匹配,判断资源是否被同一个操作标识符进行了锁定。在方框1158中,如果资源已经用同一个操作标识符进行了锁定,则处理转到方框1160,否则,处理转到方框1162。在方框1160中,第二代理通知客户端,资源已经用同一个操作标识符进行了锁定。在方框1162中,第二代理向其锁定管理器发送锁定请求被拒绝的信息。在方框1164中,第二代理的锁定管理器将锁定请求排队。
图12显示了根据本发明的优选实施例锁定管理器为允许客户端的不同级别的锁定而实现的逻辑。控制从方框1200开始,锁定管理器从客户端接收命令。在方框1210中,锁定管理器判断操作标识符是否具有其前缀表示事务管理器生成了操作标识符的命令。在方框1220中,如果判断事务管理器生成了操作标识符,则处理转到方框1230,否则,处理转到方框1240。在方框1230中,锁定管理器在事务锁定级别下进行操作。在方框1240中,锁定管理器在隔离锁定级别下进行操作,直到客户端释放锁定(即,任何锁定)。一旦客户端释放了锁定,锁定管理器就在客户端控制的锁定级别下操作。
图13显示了根据本发明的优选实施例由代理实现的逻辑。控制从方框1300开始,代理接收包括一个或多个动作的操作。跨多个代理地保护来自多个同时的非协作性客户端的操作,其中,一个操作包括一个或多个动作。具体来说,对于每一个读取保护的动作,在资源上保持“读取”锁定,并阻止写入动作写入到用“读取”锁定保护的资源中(方框1310)。对于每一个写保护的动作,在资源上保持“更改”锁定,写入动作和读取和更改锁定在用“更改”锁定保护的资源中被阻止(方框1320)。
图14显示了根据本发明的优选实施例由锁定管理器为解决死锁而实现的逻辑。控制从方框1400开始,锁定管理器接收对于已经用第二操作标识符锁定的资源(例如,对象)的用第一操作标识符进行锁定的请求被拒绝的信息。锁定请求由客户端发送,而被代理拒绝。锁定管理器将锁定请求放在具有锁队列超时时段的队列中(方框1410)。在方框1412中,锁定管理器判断锁定请求是否在锁队列超时时段内移到队列的顶端。如果是,则处理转到方框1420,否则,处理转到方框1414。为便于参考,这里使用队列的“顶端”来指锁定管理器可以处理其中的锁定请求的队列的位置。在方框1414中,锁定管理器判断锁队列超时时段是否结束。如果是,则处理转到方框1450,否则,处理转到方框1412。
在方框1420中,锁定管理器重新发出锁定请求。具体来说,在方框1420中,锁定管理器重新发出锁定请求,因为锁定已经被拥有该锁定的前任释放,排队的锁定请求在其锁队列超时时段内移到队列的顶端。请注意,一旦排队的锁定请求处于队列的顶端,锁定管理器就对该排队的锁定请求进行处理。在方框1430中,如果锁定请求在锁队列超时时段内被允许,则处理转到方框1440,否则,处理转到方框1412。在方框1440中,锁定管理器从队列中删除锁定请求。如果锁定不被允许,则将锁定请求重新排队。如此,对已经被锁定的资源的锁定请求要么稍后被允许,要么被终止,从而避免死锁的情况。在其他实现方式中,在方框1410中,可以基于一个或多个因素,如锁定请求以前被放在队列中的次数,将锁定请求放回队列中。
具体来说,当锁定请求到达队列的顶端并重新发出之后,锁定请求通常会在稍后的时间被允许。然而,也可能有不能识别锁定的客户端获取所希望的锁定的情况。因此,有可能重新发出的锁定请求将被代理拒绝。在此情况下,锁定请求被放回队列中,并等待“不能识别锁定的客户端锁定”清除。从代理发往锁定管理器的AgentAvail消息提供了锁定被不能识别锁定的客户端释放的指示。当锁定管理器获取AgentAvail消息时,锁定管理器知道将重新发出锁定请求,或者,如果队列上的锁定请求已经超时,那么锁定管理器只是丢弃该消息。
另外的实现方式细节
所描述的用于管理锁定和事务的技术可以使用标准编程和/或工程技术作为方法、设备或者产品来实现,以生产软件、固件、硬件或它们的任何组合。这里所使用的术语“产品”是指以硬件逻辑(例如,集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC)等等)或者计算机可读的介质,如磁存储介质(例如,硬盘驱动器、软盘、磁带等等)、光存储器(CDROM、光盘等等)、易失性和非易失性存储设备(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、固件、可编程逻辑等等)来实现的代码或逻辑。计算机可读的介质中的代码由处理器访问和执行。其中实现了优选的实施例的代码可以进一步通过传输介质或者通过网络从文件服务器进行访问。在这样的情况下,实现了代码的产品可以包括传输介质,如网络传输线、无线传输介质、通过空中、无线电波、红外信号等等传播的信号。因此,“产品”可以包括其中包含了代码的介质。此外,“产品”可以包括其中包含、处理和执行代码的硬件和软件组件的组合。当然,那些精通本技术的人将认识到,可以对此配置进行许多修改,产品可以包括当前技术中已知的任何信息携带介质。
图8-14的逻辑描述了按特定顺序发生的特定的操作。在备选实现方式中,可以按不同的顺序执行某些逻辑操作、对它们进行修改或删除。此外,可以向上文描述的逻辑中添加步骤,这些步骤仍会符合所描述的实现方式。此外,这里所描述的操作可以连续地发生或者某些操作可以并行地处理,或者描述为由单一进程执行的操作可以由分布式进程来执行。
图8-14的逻辑是以软件方式来实现的。此逻辑也可以是主机系统的操作系统或应用程序的一部分。在其他实施例中,此逻辑可以保留在存储区域或在只读存储器或其他硬连接类型的设备中。优选的逻辑可以以硬盘驱动器或以可编程和非可编程门阵列逻辑来实现。
图15显示了根据本发明的优选实施例的角色110、120、130、140A...N的体系结构。识别锁定的客户端110、事务管理服务器120、锁定管理服务器130,以及锁定管理代理140A...N中的每一个都可以实现计算机体系结构1500,该计算机体系结构1500具有处理器1502(例如,微处理器)、存储器1504(例如,易失性存储设备),以及存储器1506(例如,非易失性存储器,如磁盘驱动器、光盘驱动器、磁带驱动器等等)。存储器1506可以包括内置的存储设备或者外置的或者可通过网络进行访问的存储器。存储器1506中的程序被加载到存储器1504中,并由处理器1502以当前技术已知的方式执行。该体系结构进一步包括网卡1508,以便与网络进行通信。输入设备1510用于向处理器1502提供用户输入,并可以包括键盘、鼠标、笔尖、麦克风、对触摸敏感的显示屏幕,或者当前技术已知的任何其他激活或输入机制。输出设备1512能够呈现从处理器1502、或诸如显示监视器、打印机、存储器等等其他组件中传输过来的信息。
本发明的优选的实施例的上述描述只是为了说明和描述。它没有穷尽一切,也不将本发明限制到所述准确的形式。

Claims (6)

1. 一种用于锁定的方法,包括:
接收用第一操作标识符锁定由第一代理控制的第一资源的请求;
用第一操作标识符锁定第一资源;以及
如果由第二代理为所述请求执行的操作可以在处理所述请求之前完成,则判断应该用第一操作标识符来锁定由第二代理为所述请求控制的第二资源,否则判断用第二操作标识符来锁定由第二代理控制的第二资源。
2. 一种用于锁定的系统,包括:
用于接收用第一操作标识符锁定由第一代理控制的第一资源的请求的装置;
用于用第一操作标识符锁定第一资源的装置;以及
如果由第二代理为所述请求执行的操作可以在处理所述请求之前完成,则判断应该用第一操作标识符来锁定由第二代理为所述请求控制的第二资源,否则判断用第二操作标识符来锁定由第二代理控制的第二资源的装置。
3. 一种用于锁定的方法,包括:
在第二代理的控制下:
对于客户端应用程序的客户端请求,接收用第一操作标识符锁定由第二代理控制的资源的请求;
判断所述资源是否用第一操作标识符进行锁定;
如果判断所述资源被用第一操作标识符进行了锁定,则用指出所述资源被用第一操作标识符进行了锁定的指示响应所述请求,其中已经为客户端应用程序由第一代理用第一操作标识符锁定了所述资源;以及
如果判断所述资源被用第二操作标识符进行了锁定,则拒绝所述锁定请求。
4. 一种用于锁定的系统,包括:
在第二代理的控制下:
用于对于客户端应用程序的客户端请求接收用第一操作标识符锁定由第二代理控制的资源的请求的装置;
用于通过将第一操作标识符与用于锁定所述资源的操作标识符进行匹配,判断所述资源是否被用第一操作标识符进行了锁定的装置;
用于,如果判断所述资源被用第一操作标识符进行了锁定,则用指出所述资源被用第一操作标识符进行了锁定的指示响应所述请求的装置,其中已经为客户端应用程序由第一代理用第一操作标识符锁定了所述资源;以及
如果判断所述资源被用第二操作标识符进行了锁定,则拒绝所述锁定请求的装置。
5. 一种用于进行死锁管理的方法,包括:
接收拒绝用第一操作标识符锁定已经用第二操作标识符锁定的资源的锁定请求的指示;
将锁定请求放置在具有锁队列超时时段的队列中;
如果所述第二操作标识符的锁定已经被释放并且所述锁定请求到达队列的这样一个位置,即从该位置可以在锁队列超时时段内处理该锁定请求,则重新发出锁定请求,以及
如果重新发出的锁定请求未被允许,基于锁定请求先前被放入队列中的次数,将锁定请求重新排队。
6. 一种用于进行死锁管理的系统,包括:
用于,接收拒绝用第一操作标识符锁定已经用第二操作标识符锁定的资源的锁定请求的指示的装置;
用于将锁定请求放置在具有锁队列超时时段的队列中的装置;
用于,如果所述第二操作标识符的锁定已经被释放并且所述锁定请求到达队列的这样一个位置,即从该位置可以在锁队列超时时段内处理该锁定请求,则重新发出锁定请求的装置;以及
用于,如果重新发出的锁定请求未被允许,基于锁定请求先前被放入队列中的次数,将锁定请求重新排队的装置。
CNB2004800009335A 2003-05-01 2004-05-04 管理锁定的方法和系统以及进行死锁管理的方法和系统 Active CN100422936C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/428,758 2003-05-01
US10/428,758 US7496574B2 (en) 2003-05-01 2003-05-01 Managing locks and transactions

Publications (2)

Publication Number Publication Date
CN1809815A CN1809815A (zh) 2006-07-26
CN100422936C true CN100422936C (zh) 2008-10-01

Family

ID=33310489

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004800009335A Active CN100422936C (zh) 2003-05-01 2004-05-04 管理锁定的方法和系统以及进行死锁管理的方法和系统

Country Status (8)

Country Link
US (4) US7496574B2 (zh)
EP (1) EP1623322B1 (zh)
JP (1) JP4543034B2 (zh)
KR (1) KR100877319B1 (zh)
CN (1) CN100422936C (zh)
CA (2) CA2522814C (zh)
TW (1) TWI322381B (zh)
WO (1) WO2004097632A2 (zh)

Families Citing this family (141)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7483967B2 (en) * 1999-09-01 2009-01-27 Ximeta Technology, Inc. Scalable server architecture based on asymmetric 3-way TCP
US7246120B2 (en) 2000-01-28 2007-07-17 Oracle International Corporation Techniques for achieving higher availability of resources during reconfiguration of a cluster
US7792923B2 (en) 2000-10-13 2010-09-07 Zhe Khi Pak Disk system adapted to be directly attached to network
AU2002319929A1 (en) 2001-07-16 2003-03-03 Han Gyoo Kim Scheme for dynamically connecting i/o devices through network
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
US20050149682A1 (en) * 2001-10-09 2005-07-07 Han-Gyoo Kim Virtual multiple removable media jukebox
US8495131B2 (en) * 2002-10-08 2013-07-23 International Business Machines Corporation Method, system, and program for managing locks enabling access to a shared resource
US7610305B2 (en) * 2003-04-24 2009-10-27 Sun Microsystems, Inc. Simultaneous global transaction and local transaction management in an application server
US7496574B2 (en) * 2003-05-01 2009-02-24 International Business Machines Corporation Managing locks and transactions
US7289992B2 (en) * 2003-05-01 2007-10-30 International Business Machines Corporation Method, system, and program for lock and transaction management
WO2005008434A2 (en) * 2003-07-11 2005-01-27 Computer Associates Think, Inc. A distributed locking method and system for networked device management
US7739252B2 (en) * 2003-07-14 2010-06-15 Oracle America, Inc. Read/write lock transaction manager freezing
US7243088B2 (en) * 2003-08-06 2007-07-10 Oracle International Corporation Database management system with efficient version control
US7269588B1 (en) 2003-09-24 2007-09-11 Oracle International Corporation Neighborhood locking technique for increasing concurrency among transactions
US7457880B1 (en) * 2003-09-26 2008-11-25 Ximeta Technology, Inc. System using a single host to receive and redirect all file access commands for shared data storage device from other hosts on a network
US7555481B1 (en) * 2003-10-28 2009-06-30 Oracle Corporation Method and apparatus for increasing transaction concurrency by early release of locks in groups
US7574438B2 (en) * 2003-12-03 2009-08-11 Sap Aktiengesellschaft Database access with multilevel lock
US7500000B2 (en) * 2003-12-17 2009-03-03 International Business Machines Corporation Method and system for assigning or creating a resource
US7379952B2 (en) * 2004-01-30 2008-05-27 Oracle International Corporation Techniques for multiple window resource remastering among nodes of a cluster
US7664836B2 (en) * 2004-02-17 2010-02-16 Zhe Khi Pak Device and method for booting an operation system for a computer from a passive directly attached network device
US20050193017A1 (en) * 2004-02-19 2005-09-01 Han-Gyoo Kim Portable multimedia player/recorder that accesses data contents from and writes to networked device
US20060069884A1 (en) * 2004-02-27 2006-03-30 Han-Gyoo Kim Universal network to device bridge chip that enables network directly attached device
US8074220B2 (en) * 2004-05-21 2011-12-06 Computer Associates Think, Inc. System and method for interfacing an application to a distributed transaction coordinator
US7746900B2 (en) * 2004-07-22 2010-06-29 Zhe Khi Pak Low-level communication layers and device employing same
US7921250B2 (en) * 2004-07-29 2011-04-05 International Business Machines Corporation Method to switch the lock-bits combination used to lock a page table entry upon receiving system reset exceptions
US7860943B2 (en) * 2004-08-23 2010-12-28 Zhe Khi Pak Enhanced network direct attached storage controller
US7739244B2 (en) * 2004-10-14 2010-06-15 Oracle International Corporation Operating logging for online recovery in shared memory information systems
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
US7403945B2 (en) * 2004-11-01 2008-07-22 Sybase, Inc. Distributed database system providing data and space management methodology
US7849257B1 (en) 2005-01-06 2010-12-07 Zhe Khi Pak Method and apparatus for storing and retrieving data
FR2881241B1 (fr) * 2005-01-24 2007-05-04 Meiosys Soc Par Actions Simpli Procede d'optimisation de la journalisation et du rejeu d'application multi-taches dans un systeme informatique mono-processeur ou multi-processeurs
US20060184528A1 (en) * 2005-02-14 2006-08-17 International Business Machines Corporation Distributed database with device-served leases
US20060200469A1 (en) * 2005-03-02 2006-09-07 Lakshminarayanan Chidambaran Global session identifiers in a multi-node system
US7735089B2 (en) * 2005-03-08 2010-06-08 Oracle International Corporation Method and system for deadlock detection in a distributed environment
US8275793B2 (en) * 2005-04-29 2012-09-25 Microsoft Corporation Transaction transforms
US8418132B2 (en) * 2005-04-29 2013-04-09 Microsoft Corporation Application description language
US8799857B2 (en) 2005-04-29 2014-08-05 Microsoft Corporation XML application framework
US7581225B2 (en) * 2005-04-29 2009-08-25 Microsoft Corporation Multithreading with concurrency domains
US8132148B2 (en) 2005-04-29 2012-03-06 Microsoft Corporation XML application framework
US7318138B1 (en) 2005-08-30 2008-01-08 Symantec Operating Corporation Preventing undesired trespass in storage arrays
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
US7797283B2 (en) * 2005-10-21 2010-09-14 Isilon Systems, Inc. Systems and methods for maintaining distributed data
TWI416901B (zh) * 2005-11-30 2013-11-21 Ibm 故障容忍之異動處理系統
US20070136289A1 (en) * 2005-12-14 2007-06-14 Intel Corporation Lock elision with transactional memory
US20070143755A1 (en) * 2005-12-16 2007-06-21 Intel Corporation Speculative execution past a barrier
CA2578666C (en) * 2006-02-13 2016-01-26 Xkoto Inc. Method and system for load balancing a distributed database
US7848261B2 (en) 2006-02-17 2010-12-07 Isilon Systems, Inc. Systems and methods for providing a quiescing protocol
US7904435B2 (en) * 2006-03-10 2011-03-08 Yahoo! Inc. System and method for resource lock acquisition and reclamation in a network file system environment
US20070214457A1 (en) * 2006-03-10 2007-09-13 Prabhakar Goyal System and method for automated recovery of data in a batch processing system
US20070214142A1 (en) * 2006-03-10 2007-09-13 Prabhakar Goyal System and method for providing transaction support across a plurality of data structures
US8838623B2 (en) * 2006-06-22 2014-09-16 International Business Machines Corporation System and method for locking context of sets of members in crosstabs
US7822932B2 (en) 2006-08-18 2010-10-26 Isilon Systems, Inc. Systems and methods for providing nonlinear journaling
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
US20080052397A1 (en) 2006-08-24 2008-02-28 Ramanathan Venkataraman Future locking of resources
US7921075B2 (en) * 2006-09-29 2011-04-05 International Business Machines Corporation Generic sequencing service for business integration
US20080082761A1 (en) * 2006-09-29 2008-04-03 Eric Nels Herness Generic locking service for business integration
US9274857B2 (en) 2006-10-13 2016-03-01 International Business Machines Corporation Method and system for detecting work completion in loosely coupled components
US9514201B2 (en) * 2006-10-13 2016-12-06 International Business Machines Corporation Method and system for non-intrusive event sequencing
US7743039B2 (en) * 2006-12-11 2010-06-22 Simdesk Technologies, Inc. File operations with multiple level file locking techniques
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
US7900015B2 (en) 2007-04-13 2011-03-01 Isilon Systems, Inc. Systems and methods of quota accounting
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
US20080282244A1 (en) * 2007-05-07 2008-11-13 Microsoft Corporation Distributed transactional deadlock detection
US8060775B1 (en) 2007-06-14 2011-11-15 Symantec Corporation Method and apparatus for providing dynamic multi-pathing (DMP) for an asymmetric logical unit access (ALUA) based storage system
US7962456B2 (en) * 2007-06-27 2011-06-14 Microsoft Corporation Parallel nested transactions in transactional memory
US7941411B2 (en) 2007-06-29 2011-05-10 Microsoft Corporation Memory transaction grouping
US7882068B2 (en) 2007-08-21 2011-02-01 Isilon Systems, Inc. Systems and methods for adaptive copy on write
US7840530B2 (en) * 2007-09-18 2010-11-23 Microsoft Corporation Parallel nested transactions in transactional memory
US7890472B2 (en) 2007-09-18 2011-02-15 Microsoft Corporation Parallel nested transactions in transactional memory
US20090198548A1 (en) * 2008-02-05 2009-08-06 Mathias Kohler System to avoid policy-based deadlocks in workflow execution
US7895172B2 (en) * 2008-02-19 2011-02-22 Yahoo! Inc. System and method for writing data dependent upon multiple reads in a distributed database
US9418005B2 (en) 2008-07-15 2016-08-16 International Business Machines Corporation Managing garbage collection in a data processing system
US7954002B2 (en) * 2008-08-07 2011-05-31 Telefonaktiebolaget L M Ericsson (Publ) Systems and methods for bulk release of resources associated with node failure
US20100057965A1 (en) * 2008-08-29 2010-03-04 International Business Machines Corporation Extension of Lock Discipline Violation Detection for Lock Wait Patterns
US20100064280A1 (en) * 2008-09-09 2010-03-11 International Business Machines Corporation Systems and methods for implementing test applications for systems using locks
US8510281B2 (en) * 2008-12-18 2013-08-13 Sap Ag Ultimate locking mechanism
US8326973B2 (en) * 2008-12-23 2012-12-04 Novell, Inc. Techniques for gauging performance of services
JP5466717B2 (ja) * 2009-02-06 2014-04-09 インターナショナル・ビジネス・マシーンズ・コーポレーション データの整合性を維持するための装置、方法、およびコンピュータ・プログラム(データの整合性を維持するための装置)
US9124448B2 (en) * 2009-04-04 2015-09-01 Oracle International Corporation Method and system for implementing a best efforts resequencer
US8254391B2 (en) * 2009-04-04 2012-08-28 Oracle International Corporation Method and system for performing blocking of messages on errors in message stream
US8578218B2 (en) * 2009-04-04 2013-11-05 Oracle International Corporation Method and system for implementing a scalable, high-performance, fault-tolerant locking mechanism in a multi-process environment
US20100254388A1 (en) * 2009-04-04 2010-10-07 Oracle International Corporation Method and system for applying expressions on message payloads for a resequencer
US8661083B2 (en) * 2009-04-04 2014-02-25 Oracle International Corporation Method and system for implementing sequence start and increment values for a resequencer
US8005924B2 (en) * 2009-04-29 2011-08-23 Lsi Corporation Unified support for web based enterprise management (“WBEM”) solutions
US8381308B2 (en) * 2009-05-27 2013-02-19 International Business Corporation Computer-implemented multi-resource shared lock
US10013277B2 (en) * 2009-05-29 2018-07-03 Red Hat, Inc. Rolling back state changes in distributed transactions
CA2709498A1 (en) * 2009-07-10 2011-01-10 Xkoto Inc. System and method for subunit operations in a database
US20110093745A1 (en) * 2009-10-20 2011-04-21 Aviad Zlotnick Systems and methods for implementing test applications for systems using locks
CN102053861B (zh) * 2009-10-30 2014-03-12 国际商业机器公司 并行程序中死锁检测的方法和系统
US9176783B2 (en) 2010-05-24 2015-11-03 International Business Machines Corporation Idle transitions sampling with execution context
US8352658B2 (en) 2010-05-27 2013-01-08 Microsoft Corporation Fabric based lock manager service
US8843684B2 (en) 2010-06-11 2014-09-23 International Business Machines Corporation Performing call stack sampling by setting affinity of target thread to a current process to prevent target thread migration
US9411634B2 (en) 2010-06-21 2016-08-09 Microsoft Technology Licensing, Llc Action framework in software transactional memory
US8719515B2 (en) * 2010-06-21 2014-05-06 Microsoft Corporation Composition of locks in software transactional memory
US8799872B2 (en) 2010-06-27 2014-08-05 International Business Machines Corporation Sampling with sample pacing
US8799904B2 (en) 2011-01-21 2014-08-05 International Business Machines Corporation Scalable system call stack sampling
CN102156928A (zh) * 2011-04-29 2011-08-17 浪潮通信信息系统有限公司 一种通过业务逻辑锁进行系统并发控制的方法
US20120278366A1 (en) * 2011-04-29 2012-11-01 Siemens Product Lifecycle Management Software Inc. Creation and use of orphan objects
US8504542B2 (en) * 2011-09-02 2013-08-06 Palantir Technologies, Inc. Multi-row transactions
US10262310B1 (en) * 2011-09-07 2019-04-16 Amazon Technologies, Inc. Generating a verifiable download code
US20130080672A1 (en) * 2011-09-27 2013-03-28 Kaminario Technologies Ltd. System, method and computer program product for access control
CN102508720B (zh) * 2011-11-29 2017-02-22 中能电力科技开发有限公司 一种提高前处理模块和后处理模块效率的方法及系统
US9578130B1 (en) 2012-06-20 2017-02-21 Amazon Technologies, Inc. Asynchronous and idempotent distributed lock interfaces
US9560134B1 (en) * 2012-06-27 2017-01-31 Netapp, Inc. Storage array side write locking
US20140040218A1 (en) * 2012-07-31 2014-02-06 Hideaki Kimura Methods and systems for an intent lock engine
CN103634347B (zh) * 2012-08-24 2019-04-12 腾讯科技(深圳)有限公司 一种并行业务处理方法、设备及系统
CN103853527A (zh) 2012-11-29 2014-06-11 国际商业机器公司 切换多线程程序中的对象锁定模式的方法和系统
US9733664B1 (en) * 2013-03-14 2017-08-15 Gamesys Ltd. Method for expiring fault-tolerant timers using distributed locks
EP3097481B1 (en) 2014-01-21 2022-11-30 Oracle International Corporation System and method for supporting multi-tenancy in an application server, cloud, or other environment
US9542220B2 (en) * 2014-04-28 2017-01-10 Oracle International Corporation System and method for supporting resource manager (RM) instance awareness in a transactional environment
US9887937B2 (en) * 2014-07-15 2018-02-06 Cohesity, Inc. Distributed fair allocation of shared resources to constituents of a cluster
US10628380B2 (en) 2014-07-24 2020-04-21 Netapp Inc. Enabling data replication processes between heterogeneous storage systems
CN107077382B (zh) * 2014-09-26 2021-07-16 甲骨文国际公司 在多租户应用服务器环境中进行事务恢复的系统和方法
CN105573823A (zh) * 2014-10-09 2016-05-11 阿里巴巴集团控股有限公司 一种资源锁定方法及装置
WO2016058099A1 (en) * 2014-10-15 2016-04-21 Shen Xuemin Method, system and apparatus for enabling vehicular communications
US9699085B2 (en) * 2014-11-13 2017-07-04 Cisco Technology, Inc. Periodic advertisements of host capabilities in virtual cloud computing infrastructure
US10409800B2 (en) 2015-08-03 2019-09-10 Sap Se Priority queue for exclusive locks
US10706019B2 (en) * 2015-09-22 2020-07-07 Sap Se Database processing after a lock condition
CN107111596B (zh) * 2015-12-14 2018-10-30 华为技术有限公司 一种集群中锁管理的方法、锁服务器及客户端
US10599676B2 (en) 2015-12-15 2020-03-24 Microsoft Technology Licensing, Llc Replication control among redundant data centers
US11226985B2 (en) 2015-12-15 2022-01-18 Microsoft Technology Licensing, Llc Replication of structured data records among partitioned data storage spaces
US10248709B2 (en) 2015-12-15 2019-04-02 Microsoft Technology Licensing, Llc Promoted properties in relational structured data
US10235406B2 (en) 2015-12-15 2019-03-19 Microsoft Technology Licensing, Llc Reminder processing of structured data records among partitioned data storage spaces
CN107466456B (zh) 2015-12-30 2020-01-17 华为技术有限公司 加锁请求的处理方法及服务器
US11226748B2 (en) * 2016-07-05 2022-01-18 Red Hat Israel, Ltd Differentiating open and abandoned transactions in a shared storage environment
US11080271B2 (en) * 2016-09-09 2021-08-03 Sap Se Global database transaction management service
US10623487B2 (en) * 2017-01-11 2020-04-14 International Business Machines Corporation Moveable distributed synchronization objects
CN106874118A (zh) * 2017-02-17 2017-06-20 郑州云海信息技术有限公司 一种资源锁的自动恢复系统及方法
CN108108287A (zh) * 2018-01-05 2018-06-01 上海优思通信科技有限公司 便携式电子终端的安全审计信息处理及创建方法
CN110580232B (zh) * 2018-06-08 2021-10-29 杭州宏杉科技股份有限公司 一种锁管理的方法及装置
US10938897B2 (en) * 2019-01-31 2021-03-02 EMC IP Holding Company LLC Extended group service changes
US11422716B2 (en) 2020-04-08 2022-08-23 Samsung Electronics Co., Ltd. Systems and method for distributed read/write locking with network key values for storage devices
CN113535413B (zh) * 2020-04-21 2023-10-17 长鑫存储技术有限公司 交易请求的处理方法及半导体生产系统
EP4348421A2 (en) * 2021-05-31 2024-04-10 Mellanox Technologies Ltd. Deadlock-resilient lock mechanism for reduction operations
TWI787042B (zh) * 2022-01-05 2022-12-11 大陸商北京集創北方科技股份有限公司 觸控數據傳輸方法、觸控數據傳輸控制電路及資訊處理裝置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5251317A (en) * 1989-01-25 1993-10-05 Kabushiki Kaisha Toshiba Computer system with an access control unit for resource
US5745747A (en) * 1995-02-06 1998-04-28 International Business Machines Corporation Method and system of lock request management in a data processing system having multiple processes per transaction
WO2001059568A2 (en) * 2000-02-11 2001-08-16 Telefonaktiebolaget Lm Ericsson (Publ) Active cooperation deadlock detection system/method in a distributed database network
CN1319203A (zh) * 1998-07-22 2001-10-24 艾利森电话股份有限公司 涉及数据库中事务处理的方法

Family Cites Families (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5202971A (en) 1987-02-13 1993-04-13 International Business Machines Corporation System for file and record locking between nodes in a distributed data processing environment maintaining one copy of each file lock
US5175852A (en) 1987-02-13 1992-12-29 International Business Machines Corporation Distributed file access structure lock
US5060144A (en) 1989-03-16 1991-10-22 Unisys Corporation Locking control with validity status indication for a multi-host processor system that utilizes a record lock processor and a cache memory for each host processor
US5226159A (en) 1989-05-15 1993-07-06 International Business Machines Corporation File lock management in a distributed data processing system
US5161227A (en) 1989-11-13 1992-11-03 International Business Machines Corporation Multilevel locking system and method
JPH05134886A (ja) 1990-11-30 1993-06-01 Fujitsu Ltd デツドロツク検出方式
US5339427A (en) 1992-03-30 1994-08-16 International Business Machines Corporation Method and apparatus for distributed locking of shared data, employing a central coupling facility
JPH0619771A (ja) 1992-04-20 1994-01-28 Internatl Business Mach Corp <Ibm> 異種のクライアントによる共用ファイルのファイル管理機構
US5611049A (en) * 1992-06-03 1997-03-11 Pitts; William M. System for accessing distributed data cache channel at each network node to pass requests and data
US5423044A (en) 1992-06-16 1995-06-06 International Business Machines Corporation Shared, distributed lock manager for loosely coupled processing systems
US5392433A (en) * 1992-09-25 1995-02-21 International Business Machines Corporation Method and apparatus for intraprocess locking of a shared resource in a computer system
DE69322057T2 (de) 1992-10-24 1999-06-10 Int Computers Ltd Verteiltes Datenverarbeitungssystem
US5485607A (en) * 1993-02-05 1996-01-16 Digital Equipment Corporation Concurrency-control method and apparatus in a database management system utilizing key-valued locking
US5440732A (en) * 1993-02-05 1995-08-08 Digital Equipment Corp., Pat. Law Gr. Key-range locking with index trees
JP3681415B2 (ja) * 1993-03-30 2005-08-10 富士通株式会社 デッドロック検出装置
DE69422743T2 (de) * 1993-03-30 2000-06-08 Fujitsu Ltd Endlosschleife-Erkennungsgerät
US5615373A (en) 1993-08-26 1997-03-25 International Business Machines Corporation Data lock management in a distributed file server system determines variable lock lifetime in response to request to access data object
US5454108A (en) 1994-01-26 1995-09-26 International Business Machines Corporation Distributed lock manager using a passive, state-full control-server
JPH07253950A (ja) 1994-03-15 1995-10-03 Fujitsu Ltd ネットワークファイルシステム
US5613139A (en) * 1994-05-11 1997-03-18 International Business Machines Corporation Hardware implemented locking mechanism for handling both single and plural lock requests in a lock message
US5692120A (en) 1994-08-08 1997-11-25 International Business Machines Corporation Failure recovery apparatus and method for distributed processing shared resource control
JP3392236B2 (ja) * 1994-11-04 2003-03-31 富士通株式会社 分散トランザクション処理システム
US5742813A (en) 1994-11-10 1998-04-21 Cadis, Inc. Method and apparatus for concurrency in an object oriented database using lock inheritance based on class objects
US5513314A (en) 1995-01-27 1996-04-30 Auspex Systems, Inc. Fault tolerant NFS server system and mirroring protocol
US5682537A (en) 1995-08-31 1997-10-28 Unisys Corporation Object lock management system with improved local lock management and global deadlock detection in a parallel data processing system
US5734909A (en) 1995-09-01 1998-03-31 International Business Machines Corporation Method for controlling the locking and unlocking of system resources in a shared resource distributed computing environment
JP3674117B2 (ja) 1995-11-20 2005-07-20 株式会社日立製作所 排他制御方法およびそれを利用したデータ管理システム並びに記録媒体
US6128657A (en) 1996-02-14 2000-10-03 Fujitsu Limited Load sharing system
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
US5845147A (en) 1996-03-19 1998-12-01 Emc Corporation Single lock command for an I/O storage system that performs both locking and I/O data operation
US6574654B1 (en) * 1996-06-24 2003-06-03 Oracle Corporation Method and apparatus for lock caching
JP2850863B2 (ja) * 1996-06-29 1999-01-27 日本電気株式会社 排他制御装置
JPH10240553A (ja) * 1996-12-27 1998-09-11 N T T Data Tsushin Kk 分散型トランザクション処理システムのためのリソースの排他制御方式及び方法
US5987621A (en) 1997-04-25 1999-11-16 Emc Corporation Hardware and software failover services for a file server
US6041384A (en) * 1997-05-30 2000-03-21 Oracle Corporation Method for managing shared resources in a multiprocessing computer system
US5872981A (en) * 1997-05-30 1999-02-16 Oracle Corporation Method for managing termination of a lock-holding process using a waiting lock
US6141720A (en) * 1997-06-12 2000-10-31 Cabletron Systems, Inc. Method and apparatus for coordination of a shared object in a distributed system
GB2326492B (en) * 1997-06-20 2002-03-20 Ibm Apparatus, method and computer program for providing arbitrary locking modes for controlling concurrent access to server resources
US5933825A (en) 1997-07-21 1999-08-03 Apple Computer, Inc. Arbitrating concurrent access to file system objects
JPH1165863A (ja) * 1997-08-26 1999-03-09 Hitachi Ltd 共有資源管理方法
US6029190A (en) * 1997-09-24 2000-02-22 Sony Corporation Read lock and write lock management system based upon mutex and semaphore availability
US6192408B1 (en) 1997-09-26 2001-02-20 Emc Corporation Network file server sharing local caches of file access information in data processors assigned to respective file systems
US6275953B1 (en) 1997-09-26 2001-08-14 Emc Corporation Recovery from failure of a data processor in a network server
US6145089A (en) 1997-11-10 2000-11-07 Legato Systems, Inc. Server fail-over system
US6292860B1 (en) * 1997-12-16 2001-09-18 Ncr Corporation Method for preventing deadlock by suspending operation of processors, bridges, and devices
US6151659A (en) 1997-12-22 2000-11-21 Emc Corporation Distributed raid storage system
SE522023C2 (sv) 1998-01-22 2004-01-07 Ericsson Telefon Ab L M Metod för konsistent läsning av objekt i en databas
US5983225A (en) 1998-01-26 1999-11-09 Telenor As Parameterized lock management system and method for conditional conflict serializability of transactions
JPH11259350A (ja) * 1998-03-09 1999-09-24 Kokusai Zunou Sangyo Kk デッドロックを事前検知可能なデータベース管理システム
US6173293B1 (en) 1998-03-13 2001-01-09 Digital Equipment Corporation Scalable distributed file system
US6145094A (en) 1998-05-12 2000-11-07 Sun Microsystems, Inc. Transaction locks for high availability
US6115715A (en) 1998-06-29 2000-09-05 Sun Microsystems, Inc. Transaction management in a configuration database
US6182186B1 (en) * 1998-06-30 2001-01-30 Sun Microsystems, Inc. Method and apparatus that utilizes lock states to lock resources
US6266785B1 (en) 1998-09-01 2001-07-24 Ncr Corporation File system filter driver apparatus and method
US6324571B1 (en) 1998-09-21 2001-11-27 Microsoft Corporation Floating single master operation
US7065540B2 (en) * 1998-11-24 2006-06-20 Oracle International Corporation Managing checkpoint queues in a multiple node system
WO2000031573A1 (fr) * 1998-11-26 2000-06-02 Sumitomo Electric Industries, Ltd. Fibre optique et systeme de transmission optique renfermant celle-ci
US6336171B1 (en) 1998-12-23 2002-01-01 Ncr Corporation Resource protection in a cluster environment
US6324581B1 (en) * 1999-03-03 2001-11-27 Emc Corporation File server system using file system storage, data movers, and an exchange of meta data among data movers for file locking and direct access to shared file systems
US7010554B2 (en) * 2002-04-04 2006-03-07 Emc Corporation Delegation of metadata management in a storage system by leasing of free file system blocks and i-nodes from a file system owner
US6212640B1 (en) 1999-03-25 2001-04-03 Sun Microsystems, Inc. Resources sharing on the internet via the HTTP
US6412034B1 (en) * 1999-04-16 2002-06-25 Oracle Corporation Transaction-based locking approach
US6539446B1 (en) * 1999-05-07 2003-03-25 Oracle Corporation Resource locking approach
US6553384B1 (en) 1999-06-14 2003-04-22 International Business Machines Corporation Transactional name service
US6341318B1 (en) * 1999-08-10 2002-01-22 Chameleon Systems, Inc. DMA data streaming
US6546466B1 (en) * 1999-08-23 2003-04-08 International Business Machines Corporation Method, system and program products for copying coupling facility cache structures
US7206805B1 (en) * 1999-09-09 2007-04-17 Oracle International Corporation Asynchronous transcription object management system
US6389420B1 (en) * 1999-09-30 2002-05-14 Emc Corporation File manager providing distributed locking and metadata management for shared data access by clients relinquishing locks after time period expiration
US7805423B1 (en) * 1999-11-15 2010-09-28 Quest Software, Inc. System and method for quiescing select data modification operations against an object of a database during one or more structural operations
US6823511B1 (en) * 2000-01-10 2004-11-23 International Business Machines Corporation Reader-writer lock for multiprocessor systems
US6668304B1 (en) * 2000-01-18 2003-12-23 International Business Machines Corporation Transaction support on logical disks
US7203782B1 (en) * 2000-04-12 2007-04-10 Novell, Inc. Queueing method supporting multiple client accesses simultaneously
SG99941A1 (en) 2000-08-30 2003-11-27 Ibm Transaction support on logical disks
US6697901B1 (en) * 2000-10-24 2004-02-24 Oracle International Corporation Using secondary resource masters in conjunction with a primary resource master for managing resources that are accessible to a plurality of entities
US6757769B1 (en) * 2000-11-28 2004-06-29 Emc Corporation Cooperative lock override procedure
US6718448B1 (en) * 2000-11-28 2004-04-06 Emc Corporation Queued locking of a shared resource using multimodal lock types
US7107279B2 (en) * 2000-12-20 2006-09-12 Insitech Group, Inc. Rapid development in a distributed application environment
US7328263B1 (en) * 2001-01-30 2008-02-05 Cisco Technology, Inc. Controlling access of concurrent users of computer resources in a distributed system using an improved semaphore counting approach
US6959337B2 (en) * 2001-04-23 2005-10-25 Hewlett-Packard Development Company, L.P. Networked system for assuring synchronous access to critical facilities
US7107319B2 (en) * 2001-05-31 2006-09-12 Oracle Corporation Method and apparatus for reducing latency and message traffic during data and lock transfer in a multi-node system
US7089555B2 (en) * 2001-06-27 2006-08-08 International Business Machines Corporation Ordered semaphore management subsystem
US7085815B2 (en) * 2001-07-17 2006-08-01 International Business Machines Corporation Scalable memory management of token state for distributed lock managers
JP3981255B2 (ja) * 2001-10-05 2007-09-26 株式会社日立製作所 取引処理方法
US6748470B2 (en) * 2001-11-13 2004-06-08 Microsoft Corporation Method and system for locking multiple resources in a distributed environment
US7174552B2 (en) * 2002-01-12 2007-02-06 Intel Corporation Method of accessing a resource by a process based on a semaphore of another process
US8086579B1 (en) * 2002-01-22 2011-12-27 Oracle International Corporation Semantic response to lock requests to reduce coherence overhead in multi-node systems
TW513512B (en) 2002-03-08 2002-12-11 Li-Chiau Wu Security lock system and the administration way thereof
US7155438B2 (en) * 2002-05-01 2006-12-26 Bea Systems, Inc. High availability for event forwarding
US7131120B2 (en) * 2002-05-16 2006-10-31 Sun Microsystems, Inc. Inter Java virtual machine (JVM) resource locking mechanism
US20030233455A1 (en) 2002-06-14 2003-12-18 Mike Leber Distributed file sharing system
US7093230B2 (en) 2002-07-24 2006-08-15 Sun Microsystems, Inc. Lock management thread pools for distributed data systems
US7739245B1 (en) * 2002-09-30 2010-06-15 Symantec Operating Corporation Block locking in a multi-node environment
US8495131B2 (en) * 2002-10-08 2013-07-23 International Business Machines Corporation Method, system, and program for managing locks enabling access to a shared resource
US20040117372A1 (en) * 2002-12-17 2004-06-17 Bulent Kasman System and method for controlling access to system resources
US7337290B2 (en) * 2003-04-03 2008-02-26 Oracle International Corporation Deadlock resolution through lock requeing
US7047337B2 (en) * 2003-04-24 2006-05-16 International Business Machines Corporation Concurrent access of shared resources utilizing tracking of request reception and completion order
US7289992B2 (en) * 2003-05-01 2007-10-30 International Business Machines Corporation Method, system, and program for lock and transaction management
US7496574B2 (en) * 2003-05-01 2009-02-24 International Business Machines Corporation Managing locks and transactions
US7403945B2 (en) * 2004-11-01 2008-07-22 Sybase, Inc. Distributed database system providing data and space management methodology
US20060167921A1 (en) * 2004-11-29 2006-07-27 Grebus Gary L System and method using a distributed lock manager for notification of status changes in cluster processes
US7735089B2 (en) * 2005-03-08 2010-06-08 Oracle International Corporation Method and system for deadlock detection in a distributed environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5251317A (en) * 1989-01-25 1993-10-05 Kabushiki Kaisha Toshiba Computer system with an access control unit for resource
US5745747A (en) * 1995-02-06 1998-04-28 International Business Machines Corporation Method and system of lock request management in a data processing system having multiple processes per transaction
CN1319203A (zh) * 1998-07-22 2001-10-24 艾利森电话股份有限公司 涉及数据库中事务处理的方法
WO2001059568A2 (en) * 2000-02-11 2001-08-16 Telefonaktiebolaget Lm Ericsson (Publ) Active cooperation deadlock detection system/method in a distributed database network

Also Published As

Publication number Publication date
US20040220933A1 (en) 2004-11-04
CA2522814C (en) 2010-06-22
CN1809815A (zh) 2006-07-26
JP2006525573A (ja) 2006-11-09
KR100877319B1 (ko) 2009-01-07
CA2522814A1 (en) 2004-11-11
TWI322381B (en) 2010-03-21
CA2677251A1 (en) 2004-11-11
US7844585B2 (en) 2010-11-30
WO2004097632A2 (en) 2004-11-11
TW200516412A (en) 2005-05-16
US7496574B2 (en) 2009-02-24
WO2004097632A3 (en) 2005-04-07
US20080263549A1 (en) 2008-10-23
EP1623322B1 (en) 2016-09-21
US20070282966A1 (en) 2007-12-06
US20120173499A1 (en) 2012-07-05
US8768905B2 (en) 2014-07-01
US8161018B2 (en) 2012-04-17
KR20060009828A (ko) 2006-02-01
JP4543034B2 (ja) 2010-09-15
CA2677251C (en) 2011-12-13
EP1623322A2 (en) 2006-02-08

Similar Documents

Publication Publication Date Title
CN100422936C (zh) 管理锁定的方法和系统以及进行死锁管理的方法和系统
US6078982A (en) Pre-locking scheme for allowing consistent and concurrent workflow process execution in a workflow management system
US6014673A (en) Simultaneous use of database and durable store in work flow and process flow systems
US6052684A (en) System and method for performing consistent workflow process execution in a workflow management system
US5768511A (en) Method and system for managing objects in networked computer system with action performed in the server and object updated in the client
US6275863B1 (en) System and method for programming and executing long running transactions
US6477564B1 (en) Process for transforming and routing data between agent servers present in some machines and a central agent server present in another machine
EP0649089B1 (en) System and method for optimizing message flows between agents in distributed computations
CN100465914C (zh) 对多节点系统中的检查点队列进行管理
US8200643B2 (en) Lock and transaction management
US6895529B2 (en) Rebuilding “in-doubt” states reliably after multiple system failures in a data processing system performing two-phase transaction processing
US5151987A (en) Recovery objects in an object oriented computing environment
CN100485676C (zh) 文件系统串行化重新初始化装置、方法和系统
CN104793988A (zh) 跨数据库分布式事务的实现方法和装置
US7984020B2 (en) System and method for business object sync-point and rollback framework
CN101512527B (zh) 用于处理请求的数据处理系统和方法
US20040158549A1 (en) Method and apparatus for online transaction processing
US6178440B1 (en) Distributed transaction processing system implementing concurrency control within the object request broker and locking all server objects involved in a transaction at its start
US20100057922A1 (en) System and method for transactional session management
CN100517303C (zh) 在不同数据库服务器之间划分一个数据库所有权以控制访问数据库
CN103782574A (zh) 用于数据库事务的幂等性
US5729733A (en) Method of operating a distributed databse based on object ownership and transaction classification utilizing an aggressive reverse one phase commit protocol
AU771514B2 (en) Preserving consistency of passively-replicated non-deterministic objects
US8336053B2 (en) Transaction management
US7284018B1 (en) Logless transaction coordination

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