JP4543034B2 - 資源をロックする方法、プログラム及びシステム - Google Patents

資源をロックする方法、プログラム及びシステム Download PDF

Info

Publication number
JP4543034B2
JP4543034B2 JP2006506218A JP2006506218A JP4543034B2 JP 4543034 B2 JP4543034 B2 JP 4543034B2 JP 2006506218 A JP2006506218 A JP 2006506218A JP 2006506218 A JP2006506218 A JP 2006506218A JP 4543034 B2 JP4543034 B2 JP 4543034B2
Authority
JP
Japan
Prior art keywords
lock
agent
request
locking
client
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.)
Expired - Fee Related
Application number
JP2006506218A
Other languages
English (en)
Other versions
JP2006525573A (ja
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 JP2006525573A publication Critical patent/JP2006525573A/ja
Application granted granted Critical
Publication of JP4543034B2 publication Critical patent/JP4543034B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Storage Device Security (AREA)

Description

本発明は、ロックおよびトランザクションの管理を対象とする。
資源(たとえば、メモリ、ディスク・ドライブ、光ファイバ・チャネルなど)は、いくつかのアプリケーション間でしばしば共用される。たとえば、それぞれがクライアント・アプリケーションを動作させている、いくつかのクライアント・コンピュータでは、1組の資源をもつ同じサーバ・コンピュータにアクセスを行うことがある。特定の場合には、あるアプリケーションが、ある資源へのアクセスを、その資源に他のアプリケーションが同時にアクセスすることを許さずに行いたいことがある。たとえば、第1のアプリケーションが、データベース内のデータの更新を行いたい場合、その第1のアプリケーションは、そのデータベースにアクセスして更新することを、他のアプリケーションがそのデータベースの同じ部分の更新を潜在的に試みることのない状況で行いたいことがある。
資源への連続的なアクセスを保証するために、しばしばロックが使用される。アプリケーションは、資源へのロックを得ることによって、その資源へのアクセス権を得るのである。たとえば、第1のアプリケーションが、第1の資源に対するロックを得る場合、第2のアプリケーションは、第1の資源に対するアクセスを、第1の資源に対するロックを第1のアプリケーションが解放するまで、行うことができないはずである。
一部の場合では、クライアント・コンピュータにあるクライアント・アプリケーションからの要求を、サーバ・コンピュータにある第1のエージェントへと送ることができる。第1のエージェントは、その要求を第2のエージェントに渡すことができ、これが今度はその要求を第3のエージェントに渡すことができる。第1のエージェントは、第2のエージェントに対するクライアントとして働いており、第2のエージェントは、第3のエージェントに対するクライアントとして働いている。第3のエージェントは、その要求を処理し(たとえば、データを取り出す)、結果を第2のエージェントへと返すことができ、これがその結果を第1のエージェントへと返す。次いで、第1のエージェントは、その結果をクライアント・アプリケーションへと返す。この例では3つのエージェントを使用したが、ともに動作して要求を渡し結果を返す2つ以上のエージェントを、カスケーディング・エージェントと呼ぶことがある。
一部の場合では、そのカスケーディング・エージェントの組のエージェントそれぞれが、ある資源に対するロックを得る。しかし、あるエージェントがどのクライアント・アプリケーションのためにそのロックを得たのかを示すリンクはない。したがって、第1のエージェントが、あるクライアント・アプリケーションのための資源に対するロックを得ることは可能であるが、次いで第2のエージェントが第1のエージェントから要求を受け取り、その資源に対するロックを得ることを試みると、第2のエージェントはロックを拒否される。第1と第2のエージェントがどちらも、そのクライアント・アプリケーションのために同じ要求を処理しているのであるから、このどちらもがその資源をロックできるべきである。したがって、一部の従来型システムでは、カスケーディング・エージェントに対するロッキングをサポートしていない。
多重(multiple)ロックが、要求の処理のために必要となることがある。一部の従来型システムでは、クライアント・アプリケーションは、ある要求を処理するためにロックをすべて得る必要がある。たとえば、第1のアプリケーションに、第1および第2の資源へのアクセスが必要である場合、一部のシステムでは、第1のアプリケーションが、任意の処理の前に、どちらの資源に対するロックも必要とする。第1のアプリケーションが、第1の資源に対するロックを得ているが、第2のアプリケーションが第2の資源に対するロックを得ている場合、第1の資源は第2の資源に対するロックを待つ。
一部のシステムでは、クライアント・アプリケーションがロックを管理する必要がある。ロックのための規則は面倒であることがあり、これは、クライアント・アプリケーション内部の複雑さを増大させることになる。
さらに、一部のデータベース管理システムは、トランザクション・マネージャを含んでいる。こうしたトランザクション・マネージャでは、動作のログを取らずに、動作の結果のログを取っている。
"Specification for CIMOperations over HTTP," Version 1.1, May 2, 2002
当技術分野では、改良されたロッキングおよびトランザクション管理システムが必要となる。
ロックするための方法、システム、およびプログラムが提供される。第1の資源をロックするための第1の操作識別子をもつ要求の受け取りが行われる。前記第1の資源は前記第1の操作識別子によってロックされる。第2の資源を前記第1の操作識別子によってロックすべきであるか、または第2の操作識別子によってロックすべきであるかが、前記要求に対して実行すべき操作を前記要求が処理された後で完了できるかどうかに基づいて判定される。
追加の実施形態では、ロックするための方法、システム、およびプログラムが提供される。資源を第1の操作識別子によってロックするための要求の受け取りが行われる。前記資源が前記第1の操作識別子によってロックされているかどうかが判定される。前記資源が前記第1の操作識別子によってロックされていると判定された場合、前記要求は、前記資源が前記第1の操作識別子によってロックされているという標示をもつ応答を受け取る。前記資源が第2の操作識別子によってロックされていると判定された場合、前記ロック要求は拒否される。
さらなる実施形態では、デッドロック管理のための方法、システム、およびプログラムが提供される。第1の操作識別子による、第2の操作識別子によってロックされている資源に対するロック要求の拒否の標示の受け取りが行われる。前記ロック要求がロック・キュー・タイムアウト期間をもつキューに入れられる。前記ロック要求が前記ロック・キュー・タイムアウト期間内に、前記ロック要求をそこから処理できる前記キューの位置に達した場合、前記ロック要求が再発行される。
ここで説明する本発明の実施形態により、ロックおよびトランザクション管理システムのための方法、システム、およびプログラムが提供される。
したがって、本発明では、第1の態様において、ロックするための方法であって、第1の資源をロックするための第1の操作識別子をもつ要求を受け取るステップ、前記第1の資源を前記第1の操作識別子によってロックするステップ、および、第2の資源を前記第1の操作識別子によってロックすべきであるか、または第2の操作識別子によってロックすべきであるかを、前記要求に対して実行すべき操作を前記要求が処理された後で完了できるかどうかに基づいて判定するステップを含む方法が提供される。
好ましくは、第1の態様の方法は、前記第2の資源を前記第1の操作識別子によってロックすべきかどうかを判定するステップ、および、前記第2の資源を前記第1の操作識別子によってロックするステップをさらに含む。さらに、好ましくは、この方法は、前記第2の資源を第2の操作識別子によってロックすべきかどうかを判定するステップ、前記第2の操作識別子を得るステップ、および、前記第2の資源を前記第2の操作識別子によってロックするステップをさらに含む。
したがって、本発明では、第2の態様において、ロックするためのシステムであって、プロセッサと、前記プロセッサへアクセス可能なコンピュータ可読媒体と、(i)第1の資源をロックするための第1の操作識別子をもつ要求を受け取るステップ、(ii)前記第1の資源を前記第1の操作識別子によってロックするステップ、および、(iii)第2の資源を前記第1の操作識別子によってロックすべきであるか、または第2の操作識別子によってロックすべきであるかを、前記要求に対して実行すべき操作を前記要求が処理された後で完了できるかどうかに基づいて判定するステップを、前記プロセッサに実行させる能力のあるコードを含むプログラム論理とを、含むシステムが提供される。
好ましくは、第2の態様のシステムでは、コードは、前記第2の資源を前記第1の操作識別子によってロックすべきかどうかを判定するステップ、および、前記第2の資源を前記第1の操作識別子によってロックするステップを、さらに前記プロセッサに実行させる能力をもつ。
さらに、好ましくは、コードは、前記第2の資源を第2の操作識別子によってロックすべきかどうかを判定するステップ、前記第2の操作識別子を得るステップ、および、前記第2の資源を前記第2の操作識別子によってロックするステップを、さらに前記プロセッサに実行させる能力をもつ。
したがって、本発明では、第3の態様において、コンピュータ可用媒体上に格納したコンピュータ・プログラム製品であって、第1の資源をロックするための第1の操作識別子をもつ要求を受け取るステップ、前記第1の資源を前記第1の操作識別子によってロックするステップ、および、第2の資源を前記第1の操作識別子によってロックすべきであるか、または第2の操作識別子によってロックすべきであるかを、前記要求に対して実行すべき操作を前記要求が処理された後で完了できるかどうかに基づいて判定するステップのための、コンピュータ可読プログラム手段を含む、コンピュータ・プログラム製品が提供される。
好ましくは、第3の態様のコンピュータ・プログラム製品は、前記第2の資源を前記第1の操作識別子によってロックすべきかどうかを判定するステップ、および、前記第2の資源を前記第1の操作識別子によってロックするステップのための、コンピュータ可読プログラム手段をさらに含む。さらに、好ましくは、第3の態様のコンピュータ・プログラム製品は、前記第2の資源を第2の操作識別子によってロックすべきかどうかを判定するステップ、前記第2の操作識別子を得るステップ、および、前記第2の資源を前記第2の操作識別子によってロックするステップのための、コンピュータ可読プログラム手段をさらに含む。
したがって、本発明では、第4の態様において、ロックするためのシステムであって、エージェントと、前記エージェントの制御する第1の資源と、前記エージェントの制御しない第2の資源と、前記第1の資源をロックするための第1の操作識別子をもつ要求を受け取る手段と、前記第1の資源を前記第1の操作識別子によってロックする手段と、前記第2の資源を前記第1の操作識別子によってロックすべきであるか、または第2の操作識別子によってロックすべきであるかを、前記要求に対して実行すべき操作を前記要求が処理された後で完了できるかどうかに基づいて判定する手段とを、含むシステムが提供される。
したがって、本発明では、第5の態様において、ロックするための方法であって、資源を第1の操作識別子によってロックするための要求を受け取るステップ、前記資源が前記第1の操作識別子によってロックされているかどうかを判定するステップ、前記資源が前記第1の操作識別子によってロックされていると判定された場合、前記要求に対して、前記資源は前記第1の操作識別子によってロックされているという標示で応答するステップ、および、前記資源が第2の操作識別子によってロックされていると判定された場合、前記ロック要求を拒否するステップを、含む方法が提供される。
好ましくは、第5の態様の方法において、前記資源が前記第1の操作識別子によってロックされているかどうかを判定するステップは、前記第1の識別子を、前記資源をロックするのに使用した操作識別子と突き合わせる(マッチングをとる)ステップをさらに含む。
したがって、本発明では、第6の態様において、ロックするためのシステムであって、プロセッサと、前記プロセッサへアクセス可能なコンピュータ可読媒体と、(i)資源を第1の操作識別子によってロックするための要求を受け取るステップ、(ii)前記資源が前記第1の操作識別子によってロックされているかどうかを判定するステップ、(iii)前記資源が前記第1の操作識別子によってロックされていると判定された場合、前記要求に対して、前記資源は前記第1の操作識別子によってロックされているという標示で応答するステップ、および、(iv)前記資源が第2の操作識別子によってロックされていると判定された場合、前記ロック要求を拒否するステップを、前記プロセッサに実行させる能力のあるコードを含むプログラム論理とを、含むシステムが提供される。
好ましくは、第6の態様のシステムにおいて、前記資源が前記第1の操作識別子によってロックされているかどうかを判定する際、コードは、前記第1の識別子を、前記資源をロックするのに使用した操作識別子と突き合わせるステップを、前記プロセッサにさらに実行させる能力をもつ。
したがって、本発明では、第7の態様において、コンピュータ可用媒体上に格納したコンピュータ・プログラム製品であって、資源を第1の操作識別子によってロックするための要求を受け取るステップ、前記資源が前記第1の操作識別子によってロックされているかどうかを判定するステップ、前記資源が前記第1の操作識別子によってロックされていると判定された場合、前記要求に対して、前記資源は前記第1の操作識別子によってロックされているという標示で応答するステップ、および、前記資源が第2の操作識別子によってロックされていると判定された場合、前記ロック要求を拒否するステップのための、コンピュータ可読プログラム手段を含む、コンピュータ・プログラム製品が提供される。
好ましくは、第7の態様のコンピュータ・プログラム製品は、前記第1の識別子を前記資源をロックするのに使用した操作識別子と突き合わせるためのコンピュータ可読プログラム手段をさらに含む。
したがって、本発明では、第8の態様において、ロックするためのシステムであって、資源を第1の操作識別子によってロックするための要求を受け取る手段と、前記第1の識別子を前記資源をロックするのに使用した操作識別子と突き合わせることによって、前記資源が前記第1の操作識別子によってロックされているかどうかを判定する手段と、前記資源が前記第1の操作識別子によってロックされていると判定された場合、前記要求に対して、前記資源は前記第1の操作識別子によってロックされているという標示で応答する手段と、前記資源が第2の操作識別子によってロックされていると判定された場合、前記ロック要求を拒否する手段とを、含むシステムが提供される。
したがって、本発明では、第9の態様において、デッドロック管理のための方法であって、第1の操作識別子による、第2の操作識別子によってロックされている資源に対するロック要求の拒否の標示を受け取るステップ、前記ロック要求をロック・キュー・タイムアウト期間をもつキューに入れるステップ、および、前記ロック要求が前記ロック・キュー・タイムアウト期間内に前記ロック要求をそこから処理できる前記キューの位置に達した場合、前記ロック要求を再発行するステップを、含む方法が提供される。
好ましくは、第9の態様の方法は、前記ロック要求が前記ロック・キュー・タイムアウト期間内に許可されなかった場合、前記ロック要求を拒否するステップをさらに含む。
したがって、本発明では、第10の態様において、デッドロック管理のためのシステムであって、プロセッサと、前記プロセッサへアクセス可能なコンピュータ可読媒体と、(i)第1の操作識別子による、第2の操作識別子によってロックされている資源に対するロック要求の拒否の標示を受け取るステップ、(ii)前記ロック要求をロック・キュー・タイムアウト期間をもつキューに入れるステップ、および、(iii)前記ロック要求が前記ロック・キュー・タイムアウト期間内に前記ロック要求をそこから処理できる前記キューの位置に達した場合、前記ロック要求を再発行するステップを、前記プロセッサに実行させる能力のあるコードを含むプログラム論理とを、含むシステムが提供される。
好ましくは、第10の態様のシステムにおいて、コードは、前記ロック要求が前記ロック・キュー・タイムアウト期間内に許可されなかった場合、前記ロック要求を拒否するステップを前記プロセッサにさらに実行させる能力をもつ。
したがって、本発明では、第11の態様において、コンピュータ可用媒体上に格納したコンピュータ・プログラム製品であって、第1の操作識別子による、第2の操作識別子によってロックされている資源に対するロック要求の拒否の標示を受け取るステップ、前記ロック要求をロック・キュー・タイムアウト期間をもつキューに入れるステップ、および、前記ロック要求が前記ロック・キュー・タイムアウト期間内に前記ロック要求をそこから処理できる前記キューの位置に達した場合、前記ロック要求を再発行するステップのための、コンピュータ可読プログラム手段を含む、コンピュータ・プログラム製品が提供される。
好ましくは、第11の態様のコンピュータ・プログラム製品は、前記ロック要求が前記ロック・キュー・タイムアウト期間内に許可されなかった場合、前記ロック要求を拒否するステップのための、コンピュータ可読プログラム手段をさらに含む。
したがって、本発明では、第12の態様において、デッドロック管理のためのシステムであって、第1の操作識別子による、第2の操作識別子によってロックされている資源に対するロック要求の拒否の標示を受け取る手段と、前記ロック要求をロック・キュー・タイムアウト期間をもつキューに入れる手段と、前記ロック要求が前記ロック・キュー・タイムアウト期間内に前記ロック要求をそこから処理できる前記キューの位置に達した場合、前記ロック要求を再発行する手段とを、含むシステムが提供される。
次に、本発明の好ましい一実施形態の説明を、単なる例として、添付の図面を参照して行う。
ロックおよびトランザクション管理(LTM、lock and transactionmanagement)システムが提供される。LTMシステムにより、「仮想化」および「仮想ストレージ装置」をサポートするためのロッキングの考慮すべき条件および要求が識別される。「仮想化」(virtualization)という用語は、物理ストレージ装置を、複数のネットワーク・ストレージ装置から、たとえば、単一のサーバ・コンピュータから集中的に管理される単一のストレージ装置と見えるものへとプーリングすることを指す。本発明の好ましい実施形態では、仮想化を、SAN(storagearea network、ストレージ・エリア・ネットワーク)の一部として使用する。SAN(storage area network)は、共用データ・ストレージ装置を、クライアント・コンピュータからアクセスされる、関連づけられているサーバ・コンピュータと相互接続する高速のネットワークまたはサブネットワークである。「仮想ストレージ装置」(virtualstorage device)という用語は、プールされているストレージ装置を指す。「仮想ストレージ・サービス」という用語は、プールされているストレージ装置の提供するサービス(たとえば、ロッキング)を指す。LTMシステムでは、ロック管理プロトコルを指定するほか、ロック・マネージャをサポートしている。
さらに、LTMシステムでは、トランザクション・マネージャをサポートしており、トランザクション管理のサポートに必要なロッキングを定義している。本発明の好ましい一実施形態では、ロック・マネージャは、ロッキング対応クライアントおよびロッキング対応エージェントのためのロッキング機能を提供し、ロック・マネージャ用の規則に従う「ロック管理サーバ」(lock management server)である。
本発明の好ましい一実施形態では、トランザクション・マネージャは、コミットまたはロールバックの処理のトランザクションおよび開始の実行を管理および制御する「トランザクション管理サーバ」(transaction management server)である。1つのトランザクションは、「ACID」特性をもつ1件の操作である。すなわち、1つのトランザクションは、原子性をもち(Atomic)、一貫性(Consistent)のある結果を生み出し、隔離性をもち(Isolated)、耐久性をもつ(Durable)。手短に言えば、トランザクションとは、「まったく完了する」(allcompletes)か「まったく失敗する」(all fails)1件の操作であり、これは、システムまたはコンポーネントの障害にわたって保証される。1件の操作は、単一のクライアントからの一連のエージェント要求(または「動作」(actions))である。これは、「クライアント操作」(clientoperation)とも呼ぶことができる。トランザクション・マネージャの存在下では、操作はトランザクションになる。コミットとは、あるトランザクションの動作がすべて実行されることを保証するためのトランザクション機能である。ロールバックとは、トランザクションの諸動作を「アンドゥ」(undoing)するものであるトランザクション機能である。トランザクション・マネージャは、トランザクション・ログを管理し、これは、トランザクション情報の不揮発性レコードである。
LTMシステムのロッキングの背後にある哲学は、トランザクション関連のロッキングを定義し、その後でトランザクション・サポートのないロッキングを定義する、ということである。このトランザクション設計に基づいて、期待されることは、トランザクション・サポートのないロッキングにより、設計が厳格性のより低い設計に適合するように縮小されるということである。その意図は、トランザクション・サポートのないロッキングの縮小された実装が、トランザクション関連のロッキングの設計のサブセットであること、および、トランザクション・サポートのないロッキングの縮小された実装は、実際、トランザクション処理に拡張できる、ということである。
LTMシステムのロッキングでは、インテリジェンスをクライアントまたはエージェントの中にではなく、ロック管理サーバの中に置こうと試みる。このことの理由付けは、インテリジェンスが、複数ベンダのクライアントおよびエージェントにわたって分散しているよりも、局所化されている場合、機能を正しく(または少なくとも一貫性をもって)理解することがより容易になるという仮定に基づいている。
導入
ロック管理プロトコルの目的は、エージェントの分散ネットワークに対して動作する複数の、非協働的クライアントをサポートすることである。非協働的クライアント(noncooperating client)とは、互いに独立であり、資源に対して競合し、互いに独立に実行される複数のクライアントである。ロッキングを使用して、異種のSAN(storagearea network)内の複数のベンダからのクライアントからの潜在的に衝突する操作の管理が行われる。ロッキング機構に参加するクライアントは、その操作が、SAN内で進行中である可能性のある他の操作と衝突しないことが保証されることになる。
LTMシステム内のロック管理は、複数の「サポートのレベル」をサポートするように設計されている。最も頑健なレベルが、「トランザクション」レベルのロッキングである。トランザクション・レベルのロッキングに対するサポートでは、「トランザクション・マネージャ」が存在することが要求される。次のレベルのサポートは、「隔離性」レベルのロッキングと呼ばれ、トランザクション・マネージャの存在は必要とされない。最後のレベルのサポートは、「クライアント制御」(client controlled)レベルのロッキングと呼ばれる。これらレベルのそれぞれは、その保証するACID(原子性(Atomicity)、一貫性(Consistency)、隔離性(Isolation)、および耐久性(Durability))サポートによって特徴付けることができる。提供されているサポートを、次の表1に要約している。
Figure 0004543034
原子性(Atomicity)
原子性とは、「操作」(operation)を完全に行うか、まったく行わないかを(ある操作が1つまたは複数のエージェントに対する複数の要求として定義されている場合に)指す。原子性に対するサポートには、操作が失敗するときに「操作」要求をアンドゥするための「ロールバック」能力が必要である。この理由で、原子性は「トランザクション」レベルのロッキングでサポートされており、トランザクション・マネージャによってロールバック・プロセスがサポート/駆動される。
「隔離性」および「クライアント制御」レベルのロッキングでは、原子性のサポートはサポートされずまたは必要ではない。その結果、これらのレベルは、トランザクション・マネージャがないところで動作することができる。
一貫性(Consistency)
一貫性は、「モデル」データを一貫した状態にしておくことを指す。一貫性は、トランザクション・レベルのロッキングでサポートされる。一貫性は、隔離性またはクライアント制御のレベルでは必ずしもサポートされない。本発明の好ましい一実施形態では、エージェントは、そのモデルに自己一貫性を確実にもたせることが期待される。しかし、あるエージェントのモデルが他のエージェントのそれと一貫性をもつことを保証するやり方はない。
ロールバックは、隔離性およびクライアント制御のレベルではサポートされていないため、「クロス・エージェント」モデルは、必ずしも一貫性をもつ状態にはおかれるわけではない。たとえば、クライアントがゾーンを変更し(たとえば、ファブリック要求)、ボリュームを新しいゾーンに再割り当て(たとえば、アレイ要求)する場合、これを、障害の場合には、「やりかけ」(half done)にしておくことができる。隔離性およびクライアント制御のレベルのロッキングでは、SANモデルのレベルでの一貫性は、クライアントの責任に委ねられる。
隔離性(Isolation)
ロック管理のコンテキストにおいて、LTMシステムでは、操作は、単一のクライアントの代わりに開始する一連の関連するエージェント動作(または要求)と定義される。1つの動作は、あるエージェントに対する単一のクライアントからの単一の要求である。クライアント操作は、通常、様々なエージェント上の複数の動作(または要求)からなる。隔離性により、「操作」は、他の操作とシリアルに実行されているのと同様に見える。LTMシステム操作がコンカレントに実行される場合でさえ、「O」という各操作にとっては、他の操作は、操作「O」の前か操作「O」の後に、両方ではないが、実行されたように見える。これは、単に、他のLTMシステム操作とコンカレントに実行されているLTMシステム操作、またはLTMシステムのロック管理の下にあるCIM(Common Information Model、共通情報モデル)操作が、それが実行中の唯一の操作であるのと同様に振る舞うことを意味する。CIMは、情報を管理するためのオブジェクト・モデルを作成するための標準である。オブジェクト・モデルは、SAN(storagearea network)などのネットワーク資源のオブジェクト指向の表現である。CIM標準は、DMTF(Distributed ManagementTaskForce),Inc.が提供している。CIM標準についてのさらなる情報に関しては、"Specification for CIMOperations over HTTP," Version 1.1, May 2, 2002を参照されたい。以下ではこれをCIMspecificationと呼び、この文言によりその全体を参照により本明細書に組み込む。
隔離性では、ロックにより、動作がその操作の使用する情報を変更することを妨げることが要求される。隔離性は、トランザクションと隔離性のどちらのレベルのロッキングでもサポートされる。隔離性は、「クライアント制御」レベルのロッキングを使用しているときにはクライアント論理によって達成されるが、ロッキング機構自体は隔離性を保証するものではない。
隔離性のサポートでは、ロッキングの設計で、「読み取り」(Read)ロックの概念を、変更(Change)ロックとは別個のものとしてサポートしている。読み取りロックにより、クライアントは、変更するという明確な意図はないが、その値がそのクライアントの操作の進行する間は変わってほしくない資源を取っておくことができるようになる。たとえば、あるクライアントが、複数のストレージ・プールをスキャンしてボリュームを作成するための利用可能なスペースを探しており、このクライアントはそのボリュームをストレージ・プールのうちの1つから作成することになるとしよう。このクライアントは、ストレージ・プールのすべてに対する変更ロックを得るのではなく、このストレージ・プールのすべてに対する読み取りロックを得て、このクライアントの選択するストレージ・プール1個に対する変更ロックを発行することができる。
ロッキングでは、隔離性をサポートするために「読み取り」ロックをサポートしているが、ロッキングの設計では、あるクライアントがその情報の再読み込みまたは利用を行わないような場合のための「ダーティ・リード」(dirty reads)もサポートしている(読み取りが、読み取りロックが得られていない場合でも許される)。ダーティ・リードとは、ロック(すなわち、読み取りまたは変更)を獲得せずに情報をエージェントから取り出す任意のクライアント要求である。これは、読み取りが保護されていないため、ダーティ・リードと呼ばれる。同じ情報をその次に読み込んだ場合には、異なる結果がもたらされる可能性もある。
耐久性(Durability)
耐久性がある場合には、結果が実際に発生するのは、成功が返されたときである。「耐久性」の意義は、使用しているロッキングのレベルに応じて変わる。トランザクション・レベルのロッキングのコンテキストでは、耐久性は、クライアント操作が(成功にせよそうでないにせよ)完了したときに、結果が障害の前後で保証されることを意味する。これは、ロギングおよび2フェーズ・コミット・プロセスにより、エージェントすべてがコミット(またはロールバック)を確実に済ませるようにすることを意味する。2フェーズ・コミット・プロセスでは、第1のプロセスが他のプロセスに、そのプロセスがコミットの準備中であることを示す。他のプロセスのそれぞれは、コミットの準備を行う。次いで、第1のプロセスがコミットし、他のプロセスのコミットが行われる。ロギングでは、再起動時に、トランザクション・マネージャが、何が行われることになっていたかを決定し、それが実際に起きることを確認することができる。
耐久性は、「隔離性」または「クライアント制御」のレベルのロッキングのコンテキストでは、要求が満たされるのは、クライアントが成功の返り値を得るときであることを保証する。これは、ロック要求、ならびに、エージェント・モデル上の動作を含む。応答が得られていない要求は、行われていると仮定することができない(ただし完了していた可能性もある)。本質的に、クライアント・アプリケーションが仮定することができるのは、その操作が、最後の肯定応答の時点までは完了していた、ということである。
ロック/トランザクション管理の構成要素
ロック管理およびトランザクション管理の議論では、プロセスに参加するいくつもの構成要素がある。その構成要素を参照の便宜のためにここで要約する。
要素マネージャ(element manager)は、SAN環境内の特定の装置を管理するための管理ツールである。ロッキングの設計のコンテキストでは、要素マネージャは、ロッキング非対応でありCIMクライアントではないと仮定されている。要素マネージャは、CIMクライアントとしてコードされている場合には、ロッキング対応クライアントを規定する規則の下で取り扱われる。
ロック・マネージャ(lock manager)は、「ロック管理サーバ」とも呼ばれ、ロッキング対応クライアントおよびロッキング対応エージェントに対するロッキング関数を提供し、ロック・マネージャに関する規則に従う。
ロッキング対応エージェント(locking aware agent)は、エージェントに対するロッキング要求をサポートし、エージェントに対するロッキング規則をサポートするエージェントまたはオブジェクト・マネージャである。
ロッキング対応クライアント(locking aware client)は、資源のロッキングを行い、ロッキングに関するクライアント規則に従うクライアントである。
ロッキング非対応エージェント(locking unaware agent)は、ロッキング要求をサポートしないエージェントまたはCIMオブジェクト・マネージャである。
ロッキング非対応クライアント(locking unaware client)は、ロッキングをまったく行わないクライアントである。
トランザクション・マネージャ(transaction manager)は、トランザクションの実行(および、コミットまたはロールバックの処理の開始)を管理および制御するサーバである。
スケーラビリティ上の理由から、ロック・マネージャおよびトランザクション・マネージャの設計は、こうした構成要素のそれぞれの複数のインスタンスに(複数のロック・マネージャおよび複数のトランザクション・マネージャを含めて)適応する。
設計原理
ロッキングがサポートするように設計される1組の設計原理がある。この設計原理のすべてが全レベルに適用されるわけではない。設計原理およびそれが適用されるロッキング・レベルを、次の表2に要約している。
Figure 0004543034
複数の同時非協働的クライアントからの複数エージェントにまたがる操作の保護に関しては、ロッキング機構すべてで、非協働的クライアントにまたがってSAN内の管理情報へのアクセスを協調させることがサポートされる。必要となるロッキングのレベルは、クライアントで所望の機能に応じて変わり得るが、すべてのレベルのロッキングにより、クライアントは、クライアント操作の保護をロッキングによって行うことができるようになる。
ロッキング機構がロッキングを行わないクライアントまたは他の管理ツールに対処する能力は、現在ロッキングを行わない既存の管理ツールに対する譲歩である。このロッキング機構は、既存の管理ツールの取り扱いを、ロッキングを行うクライアントを保護する形で行うことができる。
エージェント全体よりも粒度の細かいロッキングを提供することにより、クライアントがエージェント全体よりも小さい粒度でロックできるようにすることによって、クライアントは、より高いコンカレンシを得られるようになる。
拡張可能なロッキング・アーキテクチャを定義することでは、拡張がSAN管理の進化する必要性を満たすことができるようなアーキテクチャが定義される。
SNIA(Storage Networking IndustryAssociation)およびDMTF(Distributed Management TaskForce)を通して標準化可能なロッキング・アーキテクチャを定義することにより、このロッキング・アーキテクチャは、これをCIMに関する標準への潜在的な拡張として使用可能にするという特別な(express)目的で、CIMの管理する環境というコンテキストで使用できるようになる。
カスケーディング・エージェントに対するサポートを提供することは、別の設計原理である。カスケーディング・エージェントサポートの視点からは、仮想化は、SAN(storage area network)内の要素(たとえば、ストレージ装置)のカスケーディングを行うことを含む。カスケーディング・エージェントは、「より低レベル」のエージェントに対してはロック管理クライアントとしても働くロック管理エージェントである。LTMシステムにより、仮想化システムは、より低レベルのエージェントに対する動作を、クライアント操作の結果として行うことができるようになる。1つの動作は、あるエージェントに対する単一のクライアントからの単一の要求である。クライアント操作は、通常、様々なエージェント上の複数の「動作」からなる。特に、LTMシステムでは、カスケーディング・エージェントで、より低レベルのエージェント上の動作が、要求元(originating)クライアントと衝突しているかいないかが決定される。本発明の好ましい一実施形態では、カスケーディング・エージェントは、ロックの獲得をクライアントの代わりに、そのロックがクライアント要求を完了するのに必要である場合に行う。動作が、クライアント要求によってトリガされるが、クライアント要求を完了するのに必要ではない場合、カスケーディング・エージェントは、その動作をそれ自体のために実行してもよい。
「lock as you go」サポートにより、クライアントは、「lock asyou go」(その都度ロック)を行えるようになり、これは、クライアントが、ロックの獲得を、動作を実行すると決定するまで行う必要がないことを意味する。これにより、仮想システムは、より低レベルのエージェント上の機能を呼び出せることになる。また、「lockas you go」サポートにより、クライアントは、論理をコードするのにより大きな自由度が与えられる(たとえば、ストレージを検索し、見つかったときに、ロックを行い、次のステップに移る)。
スケーラブルな設計とは、すべてのレベルに関してロッキングをエンタープライズSAN構成の規模で設計するという設計原理を指す。これは、ロッキングの設計では、アーキテクチャ内の「ボトルネック」が回避され、このロッキングの設計をサポートするのに必要な通信が、ネットワークを圧倒してしまわないことを意味する。
クライアントの選ぶレベルのロッキングのサポートにより、クライアントでは、クライアント操作の性質、およびそれが何を達成しようとしているかを理解する。このロッキングの設計では、クライアントの選ぶロッキング・レベルがサポートされる。
クライアントの「インテリジェンス」の利用を抑え、インテリジェンスのロック・マネージャまたはエージェントへの配置を有利にすることにより、有用な作業を抑制しないようなクライアント向け規則がサポートされる。クライアント向け規則はあまりに複雑なものではない。隔離性およびトランザクションのレベルのロッキングでは、well-behavedな(開発の作法を守った)クライアントの激しい利用が回避される。クライアントには、従う必要のある規則は少ししかなく、クライアントの取る、正しい振る舞いに違反する動作は、実施される。「隔離性」および「トランザクション」のレベルのロッキングを使用中のロッキング対応クライアントでは、ロッキングを正しく行っているかどうかについて悩む必要がない。ロッキングが動作するか、または、ロッキング・システムが、そのクライアントがロッキング・プロトコルに違反しているときに通知することになるかである。
このクライアントの「インテリジェンス」の利用を抑えるというロッキングの特徴は、ロック・マネージャおよびロック管理エージェントに対して影響を及ぼす。ロック・マネージャは規則および規則の実施のほとんどを取り扱う。しかし、この設計原理は、クライアント制御レベルのロッキングには適用されない。
トランザクション管理への拡張のための設計により、隔離性レベル(およびある程度まで、クライアント制御レベル)のロッキングは、クライアントの再設計を行わずに、トランザクション・レベルのロッキングへと拡張可能である。すなわち、隔離性レベルのロッキングは、万一、トランザクション・マネージャがクライアントの後退(receding)が最小限であるロッキング環境内にある場合、トランザクション機能を手に入れることができる。本発明の好ましい一実施形態では、この設計原理はトランザクション・レベルのロッキングには適用されない。
デッドロック・ハンドリングおよびエラー状況からの回復を伴う簡単なロッキング機構を提供することも、1つの設計原理である。デッドロックが起きるは、2つ以上のクライアントが、2つ以上の資源(たとえばオブジェクト)のロックをある順序で試みたことから、どちらのクライアントも、どちらもが互いを待っているためにその操作を完了できなくなるときである。「クライアント制御」レベルのロッキングの目的は、ロッキングの比較的単純な展開に適応することである。これは、デッドロック・ハンドリング、および、エラー状況における定義済みの回復状態をサポートする機構を含む。本発明の好ましい一実施形態では、この設計原理は、クライアント制御レベルのロッキングに適用される。
「Unlock as you go」サポートは、最小限のロッキング環境のサポートを意図するロッキング・プロトコルである。すなわち、保持されるロックおよびロックの保持されている持続時間を最小化するロッキングである。「Unlockas you go」とは、クライアントがシステムに対して、クライアントの獲得している資源を解放する準備ができたときに通知できるという意味である。本発明の好ましい一実施形態では、これは、隔離性の特性およびトランザクション処理を犠牲にするが、クライアント論理に基づく穏当な動作である。したがって、この設計により、非トランザクション・アプリケーションが「Unlockas you go」を行えるようになる。本発明の好ましい一実施形態では、この設計原理は、クライアント制御レベルのロッキングに適用される。
ACID特性すべてをサポートできるロッキング機構を提供することとは、そのロッキング機構により、トランザクション・マネージャに伴うロッキング要件をサポートしていることを意味する。本発明の好ましい一実施形態では、ACID特性すべてをサポートできるロッキング機構を提供することは、ロック・マネージャがトランザクション・マネージャの役割を代行しなければならないこと、またはロック・マネージャがすべての場合に(単にトランザクション環境で)トランザクション・ロッキングをサポートする必要があることを意味するものではない。本発明の好ましい一実施形態では、この設計原理は、トランザクション・レベルのロッキングに適用される。
障害にまたがるレジリアントなロッキング機構を提供することは、別の設計原理である。トランザクション処理をサポートするために、ロッキング機構は、障害の場合には回復することができる。これは、トランザクション・マネージャとの組み合わせで行うことができる。障害がクライアント操作の途中で起きた場合は、ロックされている資源へのアクセスは、適当な回復プロセスが適用できるまで妨げられる。
回復の確認が済むと、ロックはすべて、そのクライアントが保持するどのロックかが失われた場合に備えて、解放される。いくつかの障害条件が設計では考慮されるが、これは、ロック管理サーバ、ロック・エージェント、ロック・クライアント、およびそれらの間の通信の障害を含む。本発明の好ましい一実施形態では、この設計原理は、トランザクション・レベルのロッキングに適用される。
エージェントの仮定
このロッキングの設計が、管理要求に対する装置サポートに関して行ういくつかの仮定がある。こうした仮定は、装置の設計およびエージェント提供者とそのサポートする装置の間の関係に固有のものである。こうした仮定は、エージェント動作の振る舞いを理解するのに有用であり、ロッキング機構が効果を有するのに必要である。
本発明の好ましい一実施形態では、装置は、そのメタデータを一貫性のある状態にしておくように設計される。本発明の好ましい一実施形態では、ストレージ装置は、メタデータを一貫性のない状態にしておくような動作を許していない。たとえば、ディスク・アレイでは、その状態が、ストレージが失われるようなものにしておかれる(たとえば、使用済みとマークするがどのボリュームにも割り当てない)ことはない。同様に、ディスク・アレイでは、その状態が、ストレージが不用意に2つの異なるボリュームへとマッピングされるようなものにしておかれることはない。また、この仮定は、その装置用のCIMエージェントがそのデータに一貫性をもたせることを、そのモデルを装置内のメタデータと同期させ続けることによって行うことを意味する。
本発明の好ましい一実施形態では、ロッキング対応エージェントおよび装置には、ロッキング非対応クライアントを扱うときに、要求1つずつのロックが伴う。ロッキング非対応クライアントは、ロッキングをまったく行わないクライアントである。このことは、装置内ではロッキング対応になっていることを意味する。すなわち、ロッキング対応エージェントは、ロックが得られていない場合には、クライアント要求を実行するために必要なロック(または均等物(equivalent)、たとえば、ラッチ)を得る。しかし、そのロックは、クライアント要求が実行されると、すぐに解放される。このことは、その装置が、ロッキングを行うクライアントと衝突する「要素マネージャ」アクションを妨げるために(単なるエージェントではなく)ロッキング対応になっていることを意味する。
参照モデル
図1に、構成図の形で、本発明の好ましい実施形態による、4つの異なる役割を含むロッキングおよびトランザクション管理のための参照モデルを示している。
参照モデルは、ロッキング対応クライアント110を含む。ロッキング非対応クライアントについては、下で詳細に論じる。ロッキング対応クライアント110は、所望するロッキングのレベルの選択を行う。ロッキング対応クライアント110は、これを行うために、たとえば、BeginTransaction要求(これは下でさらに詳細に説明する)のトランザクション・マネージャへの発行を、ロッキング対応クライアント110がトランザクション・レベルのロッキングを望んでいる場合に行う。トランザクション・マネージャでは、トランザクション(すなわち、トランザクション管理の制御下で実行中のクライアント操作)のコミットまたはロールバックの協調を管理する。本発明の好ましい一実施形態では、このトランザクション・マネージャを、独立のトランザクション管理サーバ120として説明する。本発明の好ましい一実施形態では、トランザクション・マネージャは、クライアント・アプリケーションと同じシステム上にともに常駐していていてもよい。通常、システムごとに、ロッキング対応クライアントを動作させる1つのトランザクション・マネージャがある。トランザクション・マネージャでは、クライアント・アプリケーションの取る動作(たとえば、クライアント要求)およびそのトランザクションのロールバックを行うのに必要な「逆」(reverse)の動作のログを維持している。
ロッキング対応クライアント110は、隔離性またはクライアント制御のレベルのロッキングを望む場合には、トランザクション管理サーバ120への要求を省略し、たとえば、下でさらに詳細に説明するGetOperationId要求で直接ロック・マネージャへと向かって、その操作のための操作識別子(「操作ID」(operation id)または「OperationId」)を得る。本発明の好ましい一実施形態では、このロック・マネージャは、ロック管理サーバ130であり、ロック管理サーバ130と同じロック管理グループ内の1組のロック管理エージェント140A...Nからのロックの獲得の協調を行う。図面では、参照を簡単にするため、図中の要素の複数の複製(copies)を、同じ符号(referencenumber)と1個の記号で参照することがある(たとえば、110Aから110N、ここではNは要素のN番目の複製を表す)。たとえば、ロック管理エージェント140A、140B、および140Nは、ロック管理エージェント140A...Nとして参照されることになる。
ロック管理グループは、ロック管理サーバおよび1つまたは複数のエージェントを含む。1つまたは複数のロック管理サーバ120が、したがって、1つまたは複数のロック管理部ループが、その環境内にあってもよい。ロック管理サーバ130は、それぞれ、1組のロック管理エージェント140A...Nに関するロッキングの管理を、そのロック管理グループ内で行う。管理者は、ロック管理サーバ130およびロック管理グループを必要なだけセットアップして、スケーラビリティ要件をサポートすることができる。ロック管理サーバ130は、キューイングがサポートされている場合には、ロック・キューイングを行うことができる。
ロック管理エージェント140A...Nは、ロック管理エージェント140A...Nの管理する装置または複数の装置に関するロッキングを行う。すなわち、資源に対する実際のロックの獲得と保持は、エージェントのレベルで行われる。特定の実施形態では、ロック管理エージェント140A...140Nでは、キューイングを行わない。その代わりに、ロック管理エージェント140A...140Nは、ロックの許可および拒否を行い、ロック管理サーバ130がロック要求のキューイングを管理する。ロック管理エージェント140A...140Nは、ロック管理サーバ130から解放を命じられるまでロックの保持を行う。
こうした役割のそれぞれ(ロッキング対応クライアント110、トランザクション管理サーバ120、ロック管理サーバ130、およびロック管理エージェント140A...N)では、クライアントの要求するロッキングのレベル(すなわち、トランザクション、隔離性、またはクライアント制御)に基づいて諸機能を実行する。
ロッキングに関する参照モデルは、次のものを含むいくつかのロッキング環境を考慮に入れている。すなわち、トランザクション・レベルのロッキングをサポートする、トランザクション・マネージャのあるロッキング環境、隔離性とクライアント制御のどちらのレベルのロッキングも含む、トランザクション・マネージャのないロッキング環境、および、ロッキングのレベルのうちの所与のどれかのサポートも含む、ロッキング非対応クライアントに対するサポートである。
トランザクション・マネージャのあるロッキングの参照モデル
図2に、本発明の好ましい実施形態による、トランザクション・マネージャ220のあるロッキング環境を示している。トランザクション・ロッキングに関する参照モデルは、環境内の1つまたは複数のトランザクション・マネージャ、ならびに、ロック管理サーバを含む。
ロッキング対応クライアント−1 210は、トランザクション・マネージャ220、ロック管理サーバA240、およびロック管理サーバB260に接続されている。ロック管理グループA230は、ロック管理サーバA240、ロッキング・エージェントW242、およびロッキング・エージェントX244を含む。ロック管理グループB250は、ロック管理サーバB260、ロッキング・エージェントY262、およびロッキング・エージェントZ264を含む。ロッキング・エージェントW242、X244、Y262、Z264は、ロッキング対応エージェントである。本発明の好ましい一実施形態では、CIMエージェントによって、ロッキング・エージェントW242、X244、Y262、Z264が実装されている。
トランザクションの開始および終了は、クライアントにあるクライアント・アプリケーションの定義するように行われる。言及を簡単にするために、クライアント・アプリケーションの行う動作は、クライアントの行う、と言うことにする。図2では、トランザクションが開始されるのは、ロッキング対応クライアント−1 210にあるクライアント・アプリケーションが、たとえば、BeginTransaction要求をトランザクション・マネージャ220に送るときである。トランザクション・マネージャ220は、トランザクションを「作成」(creates)し、そのトランザクションの識別のための操作IDを返す。
本発明の好ましい一実施形態では、操作IDは、ロック管理グループおよびトランザクション・マネージャ全体にわたって一意である。したがって、操作IDは、第1の部分がその操作IDをトランザクション・マネージャが生成したかどうかの標示、第2の部分がロック管理グループ名またはトランザクション・マネージャ名、最後の部分がロック管理グループまたはトランザクション・マネージャのコンテキスト内での一意な番号であるような複合した鍵とすることができる。すなわち、操作IDは、T:A:番号という形をとる(ここでTはブール値、Aはロック管理グループまたはトランザクション・マネージャの名前、「番号」は一意な整数である)。
トランザクション・マネージャ220の行うロギングおよび保持されるロックは、操作IDのコンテキスト内にあることになる。あるトランザクションの最初のログ・エントリは、そのトランザクションの出現(existence)である(たとえば、開始(begin)トランザクション)。
ロッキング対応クライアント−1 210がトランザクション操作IDを得た後、ロッキング対応クライアント−1 210により、ロッキング対応クライアント−1 210が変更を意図している資源のロックが行われる。また、ロッキング対応クライアント−1 210により、ロッキング対応クライアント−1 210が読み込み、またロッキング対応クライアント−1 210がその操作中に不変のままであることを望む資源のロックが行われる。ロッキング対応クライアント−1 210が発行を意図する変更操作(すなわち、データを変更する操作)では、ロッキング対応クライアント−1 210から、この変更を実行するコマンドが、トランザクション・マネージャ220へとロギングのために送られ、ロック要求の発行が、ロッキング・エージェントW242、X244、Y262、Z264へとロック管理サーバA240、B260を介して行われる。ロッキング対応クライアント−1 210では、この変更要求のほかに、「逆」の動作が、トランザクション・マネージャ220がこの操作のロールバックを行う必要のある場合に備えて、トランザクション・マネージャ220へと提供される。
トランザクション・マネージャ220では、変更要求と、動作が元に戻せる(reversible)変更要求に対する「逆」の動作のログを記録する。変更要求の動作が元に戻せない場合は、その動作はこのトランザクションの範囲外にあると見なされる。
トランザクションの終了は、3つのイベントのうちの1つによって決定される。すなわち、ロッキング対応クライアント−1 210がトランザクション・マネージャ220へと発行するコミット、ロッキング対応クライアント−1 210がトランザクション・マネージャ220へと発行するロールバック、または、そのトランザクション中の構成要素(たとえば、ロッキング対応クライアント−1 210またはトランザクション・マネージャ220)のどれかの障害条件である。
トランザクションの完了が成功する前に、トランザクション中の構成要素のどれかの障害が起きると、ロールバックが起きる。本発明の好ましい一実施形態では、ある構成要素が障害を起こしているかどうかを決定するために、ハートビート関数を使用する。
本発明の好ましい一実施形態では、トランザクション・マネージャ220は、クライアント・システム上に常駐する機能とすることもでき、またはトランザクション・マネージャ220は、ロック管理サーバA240またはB260と組み合わせることもできる。
このロッキングの設計は、サーバがそのロック管理グループ230、250の範囲内でロックを行う場合でも、ロックの協調のための「サーバ間」(server to server)通信をサポートするように拡張可能である。本発明の好ましい一実施形態では、この協調により、ロック管理フェイルオーバおよび協調したデッドロック検出がサポートされる。デッドロック検出とは、2つ以上のクライアント間にデッドロックが存在することを発見する行為(act)を指す。しかし、ロック・キュー・タイムアウト(すなわち、ロック要求がロック・キュー内に留まることのできる期間)がある場合には、サーバ間通信は必要にならない。ロック・キューイングがある場合、ロックがキューイングされる(queued)と言われるのは、あるロック要求の結果ロック衝突が生じる場合であり、エージェントまたはロック・マネージャでは、要求のキューイングが、衝突しているロックが解放されるまで行われる。ロック・キューイングにより、操作の完了が、操作中に遭遇したロック衝突のある場合でも可能になる。衝突しているロックがまったく解放されない場合、この状況をデッドロックと呼ぶ。ロック衝突が起きると言われるのは、クライアントが、別のクライアントのすでに(明示的にせよ暗黙にせよ)ロックしている資源に対するロックを要求するときである。暗黙ロッキングとは、あるエージェントの行った動作の結果として暗黙のうちに獲得されるロックを指す。
トランザクション・マネージャのないロッキングの参照モデル
図3に、本発明の好ましい実施形態による、トランザクション・マネージャのないロッキング環境を示している。トランザクション・マネージャをもたない環境でのロッキングは、「隔離性」レベルにあるとすることも、または「クライアント制御」レベルにあるとすることもできる。
図3に示すロッキング環境では、ロッキング対応クライアント210、ロック管理サーバA240、B260、およびロッキング・エージェントW242、X244、Y262、Z264が、ロッキング可能(locking capable)である。ロッキング・エージェントW242、X244、Y262、Z264は、ロック管理グループA230、B250に割り当てられており、これらは、ロック管理サーバA240、B260がそれぞれ管理を行う。
このロッキング環境では、クライアントは、操作を始めるにあたって、操作IDをロック管理サーバA240またはB260に要求し、隔離性レベルまたはクライアント制御レベルで動作するという意図の宣言を行う(たとえば、ロッキング対応クライアント−1 210)。ロック管理グループA230、B250内のエージェントを使用するつもりのクライアントは、操作IDを、ロック管理サーバA240またはB260に要求することもできる。ロッキング対応クライアント−1 210が、操作IDを、ロック管理サーバA240に要求すると仮定すると、ロック管理サーバA240が、その操作に関する制御サーバとなるが、この操作IDは、ロック管理サーバB260へアクセスするときにも使用されるはずである。操作IDを得るのは、その操作について1度である。
隔離性とクライアント制御のレベルのどちらのロッキングでも、ロッキング対応クライアント210では、ロッキング対応クライアント210の使用したいと望む資源(たとえば、オブジェクト)のロックを、ロッキング対応クライアント210がロッキング・エージェントW242、X244、Y262、Z264に対して動作を行う前に行う。ロッキング対応クライアント210は、適切なロック管理グループ(A230またはB250)のロック管理サーバ(A240またはB260)へのロック要求の発行を、ロッキング対応クライアント210に割り当てられた操作IDを用いて行う。ロック管理サーバA240、B250では、ロック要求を受け取り、そのロック要求をロッキング・エージェントW242、X244、Y262、Z264へと渡し、そのロック要求が操作IDによって保持されているものとして記録する。ロッキング・エージェントW242、X244、Y262、Z264では、そのロックを許可(grant)するか、またはそのロックを拒否する。キューイングは、必要である場合には、ロック管理サーバA240、B260で行われる。本発明の好ましい一実施形態では、ロッキング・エージェントW242、X244、Y262、Z264は、ロックを拒否した場合、「timeon queue」値を戻すが、これは、ロッキング・エージェントW242、X244、Y262、Z264では、どれだけの時間ロック要求がキュー上に留まることを許すかを決定するものである。
キューイングされた要求がキューの先頭に来た場合は、そのロックを獲得するためのロック要求が、ロッキング・エージェントW242、X244、Y262、Z264へと再発行され、そのロックを獲得した場合、ロッキング対応クライアント−1 210には、ロック要求が許可されたことが通知される。
キューイングされた要求が、キューの先頭に来る前に「タイムアウト」した場合は、ロッキング対応クライアント−1 210には、ロック要求が拒否されたことが通知される。ロック管理サーバA240、B260は、本発明の好ましい一実施形態では、トランザクション・マネージャではないため、一方的に(unilaterally)ロックを解放することはない。特に、ロックは、ロッキング対応クライアント−1 210の動作が、何らかの「ロールバック」または操作回復処理を実現させるのに必要である。
このロッキングの設計は、ロック管理サーバA240、B260が、そのロック管理グループA230、B250の範囲内でロックを行う場合でも、ロックの協調のための「サーバ間」(server to server)通信をサポートするように拡張可能である。本発明の好ましい一実施形態では、ロックの協調により、ロック管理フェイルオーバおよび協調したデッドロック検出がサポートされる。しかし、ロック・キュー・タイムアウトがある場合には、サーバ間通信は必要にならない。
ロッキング非対応クライアント・サポート
図4に、本発明の好ましい一実施形態による、ロッキング非対応クライアント−2 270のあるロッキング環境を示している。特に、図4には、「隔離性」または「クライアント制御」のレベル用のロッキング環境を示している。図4では、ロッキング・エージェントX244は、装置X280に接続されており、また、これが要素マネージャ・クライアント290に接続されている。要素マネージャ・クライアントは、特別なタイプのロッキング非対応クライアントである。「トランザクション」レベルのロッキングに対しても考察は同じであり、このためトランザクション・マネージャは図4の図には示していない。
本発明の好ましい一実施形態では、ロッキング非対応クライアント−2 270は、ロッキング非対応CIMクライアントである。本発明の好ましい一実施形態では、ロッキング非対応CIMクライアントであるロッキング非対応クライアントは、(ロッキング対応エージェントを含む)CIMエージェントを経由する。ロッキング非対応クライアント270では、ロッキング・エージェントW242、X244の管理要求を、ロックを要求せずに行う。そのような場合、ロッキング・エージェントW242、X244は、要求された動作がCIMで表現されるオブジェクト・モデルへの変更を含む場合、その要求の持続期間(duration)に対する「一時的ロック」(temporary lock)(または「ラッチ」(latch))を得ようと試みる。特に、あるオブジェクトにCIMオブジェクト・パスによって到達する場合には、そのオブジェクトはアクセスの前にロックされる。
ラッチとは、単一の要求を処理するプロセスで、あるエージェントの獲得する一時的な「ロック」である。本発明の好ましい一実施形態では、ラッチの解放は、要求の完了に遅れることなく行われ、ラッチは外部的には設計されていない(すなわち、ラッチは、ロックと異なり、どのようなCIMインターフェース中でも参照されない)。しかし、ラッチは、動作を行う間、一時的に資源を保持するためにエージェントで使用することができる。クライアント要求が読み取り動作であった場合には、ロックは必要とならない(たとえば、その要求は非ロック読み取り(no lock read)として扱われる)。更新要求は(ロッキング対応クライアントの保持するロックが理由で)妨げられる可能性もある。しかし、読み取り動作が妨げられることはない。
考慮すべき特別な場合が、要素マネージャ290の場合である。多くの要素マネージャは書き直されることはないであろうとの仮定の下では、要素マネージャがどのようにロッキング対応クライアントとやり取りを行うかを理解することは、特に重要である。要素マネージャは、ロッキング対応環境の「外側」を実行するように準備される。要素マネージャを、ロック管理が存在する場合にはこれを利用するようにコードすることは望ましいかもしれないが、必須であるわけではない。
ロッキング非対応要素マネージャ・クライアント290は、装置X280にアクセスするとき、CIMエージェント構造をなんら経由せずにこれを行うことができる。したがって、ロッキング非対応要素マネージャ・クライアント290は、要素マネージャ・クライアント290とロッキング対応クライアント−1 210の間のやり取りを実際に管理する際、ロッキング非対応要素マネージャ・クライアント290は、装置X280の責任の対象となる。装置X280が従う規則は、これらのものである。すなわち、(1)要素マネージャ・クライアント290の発行する読み取り動作は、「非ロック」(ダーティ)読み取りとして扱うことができ、(2)ロッキング対応クライアント−1 210からのロック動作を妨げることになる要素マネージャ・クライアント290の動作の担当する資源に対する「ラッチ」を得ることができる。ロッキング対応クライアント−1 210の保持するロックと衝突することになるはずの、要素マネージャ・クライアント290の書き込み動作は、拒否される。実際、要素マネージャ・クライアント290からの書き込みには、書き込み動作の持続期間に対する変更ロックが伴う。
ロック可能な資源
ロックにより、クライアント(すなわち、クライアント・アプリケーション)要求の主体となる資源(または複数の資源)が予約される。たとえば、あるクライアントがボリュームの変更を希望する場合、そのクライアントにより、そのボリュームがロックされる。このロッキングの設計の1つの重要な部分は、相互運用の基礎となる機能(すなわち、要求)を理解することであり、その資源をロックするために必要なものは、その要求の実行を可能にするために予約される。これと関連する別の問題は、クライアント要求が「作成」(create)である場合に、何がロックされるかである。すなわち、問題は、クライアントが、まだ存在していないものをどうやってロックするのかということである。ボリュームを作成する場合では、クライアントが、そのボリュームが作成されるストレージ・プールをロックすることが妥当であるかも知れない。しかし、これでは、その作成するボリュームをロックするのかどうかという問題は、依然として未解決のままである。最後に、どのようにしてロックを識別するかという問題がある。ロックした資源を一意に表すには、ひと工夫必要である。こうしたトピックのそれぞれを、次のセクションで扱う。
ロッキングの粒度(Granularity)
このロッキングの設計では、ロッキングの粒度が可能になっている。しかし、ロッキングでは、オブジェクト・モデルのあらゆる要素を明示的にロックすることは必要ではない。クライアントは、発行するつもりの要求が直接に影響する資源すべてをロックすることになる。たとえば、ボリュームを作成することには、ボリュームを作成するストレージ・プールに対するロックが必要になる。論理ユニット番号(LUN、Logical Unit Number)のマッピングおよびマスキングの要求を行うことには、参照すべきボリューム、ポート、およびホスト・イニシエータ(hostinitiators)をロックすることが必要になる。これは、ロッキングに対するクライアントの見方である。
クライアントの見方に加えて、エージェントの見方がある。エージェントの視点からは、ロッキングの目的は、クライアントが要求を実行できるようにする資源を予約することである。したがって、エージェントは、ロック衝突が理由でクライアント要求が拒否されないようにするために十分な資源のロックを行う。本発明の好ましい一実施形態では、エージェントは、クライアントの要求をサポートするのに必要な資源すべてをロックし、エージェント・モデルの完全性(integrity)を維持することになるが、これは、カスケーディング・ロッキングを意味する。
何をロックすることが必要かに関して曖昧性がある場合はいつでも、エージェントではロックを高次のロックへとエスカレートさせる可能性がある。特に、エージェントが、「エージェント・ロック」へとエスカレートする可能性もある。同様に、クライアントが「エージェント・ロック」を要求するかもしれない。エージェント・ロックは、管理されている装置に対するコンピュータ・システム・インスタンスをロックすることによって実現される。
ロッキング対応クライアントの必要最小限のサポートは、「エージェント・ロック」である。すなわち、どのようなロック要求もエージェント・ロックまでエスカレートさせることができる。
カスケーディング・ロック
エージェントが、そのロッキングの実装において考慮することの必要な、カスケーディング効果がある。このロッキングの設計では、このカスケーディング効果を、あるオブジェクトをロックすることにより、そのオブジェクトが基づいている複数のオブジェクト(すなわち、CIM環境内のインスタンス)のロックが効果的に行われるようなものとして定義している。図5には、本発明の特定の実施形態によるカスケーディング・ロッキングを示している。仮想化エージェント300は、ストレージ・プール310およびエクステント320を含む。アレイ・エージェント330は、ストレージ・ボリューム340およびエクステント350を含む。ストレージ・プール310をロックすることには、ストレージ・プール310の基づくエクステント320に対するロックが伴う可能性がある。ストレージ・プール310に対するロックは、仮想化エージェント300の管理していない資源に対して発行されたロックを含むことができる(たとえば、ストレージ・プール310を所有する仮想化エージェント300からカスケードされるエージェントの管理する資源)。仮想化エージェント300のオブジェクト・モデルの完全性を維持するために、仮想化エージェント300では、より低いレベルのエージェント内の資源をロックする必要があることもある。たとえば、仮想化エージェント300は、アレイ・エージェント330の所有するストレージ・ボリューム340およびエクステント350をロックすることができる。
CIM環境では、プロファイルを定義することができ、プロファイルではそれぞれ、プロファイルのサポートするロックに伴うロック・カスケーディングが定義される。SNIA(Storage Networking Industry Association)は、一部のオブジェクト・モデルに関するプロファイルを開発するために作業中である。1つのプロファイルには、SAN(storagearea network)エンティティの特定のあるクラスが記述される。SANエンティティのあるクラスにより、RAID(redundant array ofindependent disks)装置など、SAN内部のある装置が記述される。RAID装置により、複数のハード・ディスク上に同一のデータを格納することが可能になり、したがって、データの複数のコピーへの同時アクセスが可能になる。
ロック識別
インスタンス・ロックは、インスタンスに対するCIMObjectPathを参照することによって実現される。これは、「Enumerate」インスタンスの得る不透明な(opaque)トークンである。「Enumerate」インスタンスは、CIM使用のセクション2.3.2.11に定義されており、CIMクラスのインスタンスを列挙するために使用される。実際のロック・インスタンスは、クライアントの操作IDとロックされるインスタンスのCIMObjectPathの組み合わせである。実際、ロックは、操作IDとCIMObjectPathの間の関連付けと考えることができる。この関連付けは、ロック型(読み取りまたは変更)の特徴をもつ。
暗黙のロック
ロックを明示的に要求しなくても得られる特定の状況がある。具体的には、資源(たとえば、ストレージ・ボリュームまたはストレージ・プール)を作成するとき、その資源はCIMObjectPathを、その資源が作成されるまではもたないことになる。資源が作成されるとすぐに、CIMObjectPathに対するロックの獲得が、クライアントの操作IDを代理して、クライアントがロック要求を発行しなくても行われる。
同様に、エージェントは、クライアントが要求する以上の資源をロックすることにすることができる。本発明の好ましい一実施形態では、エージェントは、クライアントがロックした資源の「下位」(below)にあるあらゆるものをロックしているとは仮定しない。たとえば、エージェントは、「インスタンス削除」(deleteinstance)操作をサポートするのに何が必要なはずかがわかっており、クライアントが行える「最悪の場合」の要求に伴う資源すべてをロックすることができる。
ロック可能な資源とロッキングのレベル
ロックの行われる資源は、ロッキングのレベルすべて(すなわち、トランザクション、隔離性、およびクライアント制御)で同じである。粒度およびどのようにロックが識別されるかが同じである。カスケードされた暗黙のロッキングは変わることが可能であるが、通常は変わらない。一般に、トランザクション・ロッキングでは、潜在的なロールバック要求をサポートするために、カスケードされた暗黙のロッキングの厳守(strict adherence)が必要となる傾向がある。隔離性およびクライアント制御のレベルのロッキングでは、ロールバック操作をサポートする必要がないため、厳守は必要ではない。
ロックの型
ロックの型(lock type)とは、要求の対象となるロックの「強さ」(strength)を指す。ロックの型により、そのロックの妨げる動作が決定される。LTMシステム・ロッキングのコンテキストでは、「変更」(change)ロックおよび「読み取り」(read)ロックがある。変更ロックは、読み取りロックよりも強い。
このロッキングの設計でのロック・マネージャおよびロック・エージェントでは、読み取りロックと変更ロックをどちらもサポートしている。読み取りロックでは、他の読み取り側を妨げることのない隔離性(たとえば、読み取られるデータは操作中は変化しない)を保証している。また、このロッキングの設計では、読み取りロックを伴わない「非ロック」(ダーティ)読み取りをサポートしている。
本発明の好ましい一実施形態では、「非ロック」書き込みをサポートしていない。すなわち、ある「OperationId」の下で起きる書き込み操作からは、(「create」操作でのように)ロックの獲得が引き起こされる。「OperationId」がなくて起きる書き込み操作は、クライアントがロッキング非対応クライアントであることを意味し、ロッキング非対応クライアント規則が適用される。すなわち、変更ロック(またはラッチ)がその要求の持続期間の間、獲得される。
読み取りと変更のロックはどちらも、3つのレベルのロッキングすべて(すなわち、トランザクション、隔離性、およびクライアント制御)でサポートされる。
ロック互換性のセマンティクス
表3に、本発明の好ましい一実施形態におけるLTMシステム・ロッキングに関するロック互換性のセマンティクスを要約している。
Figure 0004543034
表3には、2つの異なるクライアントの間の相互作用を示している。第1のクライアントは、資源A上の「ロック保持側」であり、第2のクライアントは、資源A上のロックに対する「ロック要求側」である。ロック保持側が変更ロックをもっている場合、ロック要求はすべて拒否される。しかし、ダーティ・リード(非ロック読み取り)は、ロック要求がないため、妨げられない。ロック保持側が資源上の読み取りロックをもつ場合は、変更ロック要求は拒否され、「非ロック」書き込みは拒否される。ロック要求側は、読み取りロックを得ることができるか、または非ロック読み取りを行うことができる。ロック保持側がロックを保持していない(非ロック読み取り)場合、何も妨げられない。書き込み側でロックを保持しない場合、非ロック読み取り側を除き、要求側はすべて妨げられる。
保護される動作
保護される動作は、ロックの妨げることができる動作である。読み取りまたは変更ロックが何を妨げるかという議論から、基本的な原理が得られるが、ここに提示するガイドラインは、網羅的なリストではない。
WBEM(Web Based Enterprise Management、Webベース・エンタープライズ・マネージメント)は、企業コンピューティング環境の管理の統一のために、DMTF(DistributedManagement TaskForce),Inc.によって開発された管理のセットおよびインターネット標準技術である。DMTFでは、WBEMを構成する標準のコア・セットを開発しており、これは、CIM(CommonInformation Model、共通情報モデル)を含んでいる。
CIMは、情報の管理のためのオブジェクト指向モデルのための標準である。CIM標準は、DMTF(Distributed Management TaskForce),Inc.が提供している。CIM標準についてのさらなる情報に関しては、"Specificationfor CIM Operations over HTTP," Version 1.1, May 2, 2002を参照されたい。以下ではこれをCIM specificationと呼び、この文言によりその全体を参照により本明細書に組み込む。
ロックすべき資源は、CIMObjectPathによって識別される。これは、CIMObjectPathをもてば、何であれ、ロックの対象となることを意味する。しかし、ここで提案するロッキングの設計では、何がロックにとって有意味なものかについて少し具体的になっており、カスケーディング・ロッキングに基づいている。一般に、エージェントでは、装置全体のロッキング(すなわち、「エージェントをロックすること」)またはエクスポートされる資源の個々のインスタンスのロッキングがサポートされる。エージェントが、CIMObjectPathで識別される資源のロッキングをサポートしない場合、そのエージェントは、ロックをエージェント・ロックにまでエスカレートさせることができる。
また、ロッキング非対応クライアントとロッキング対応クライアントの間のやり取りに関してはいくつかのガイドラインがある。
読み取り保護(Read Protected)動作は、読み取りロックによって妨げられる動作である。読み取りロックは変更ロックを妨げるが、他の読み取りロックは妨げない。読み取りロックにより、「カスケードされたオブジェクト」およびロック階層内で低位のオブジェクトに対する変更ロックが妨げられる。たとえば、あるエージェントに対する読み取りロックがあると、そのエージェントの管理するオブジェクトすべてに対する読み取りロックがあることになる。あるボリューム上の読み取りロックは、そのロックされているボリュームへの変更をもたらす可能性のあるどの低いレベルのオブジェクトに対する読み取りロックにもカスケードする。したがって、あるボリュームをロックすることにより、そのボリュームが基づいているプール、エクステント、またはアレイへの他のエージェントによる変更が妨げられる。
変更(書き込み)保護(Change (Write) Protected)動作は、変更ロックによって妨げられる動作である。変更ロックにより、他のクライアントからの他の読み取りまたは変更ロックが妨げられる。変更ロックにより、「カスケードされたオブジェクト」に対する他のロックが妨げられる。たとえば、あるエージェントに対する変更ロックがあると、そのエージェントの管理するオブジェクトすべてに対する変更ロックがあることになる。あるボリューム上の変更ロックは、そのロックされているボリュームへの変更をもたらす可能性のあるどの低いレベルのオブジェクト上の変更ロックにもカスケードする。したがって、あるボリュームをロックすることにより、そのボリュームが基づいているプール、エクステント、またはアレイに対する読み取りまたは書き出しが妨げられる。
非保護(Unprotected)動作は、ロックによって妨げられないオブジェクトに対して働く動作である。非保護読み取り(UnprotectedRead)動作は、読み取りロックによって妨げられない動作である。読み取りロックは、他の読み取り側を妨げないが、書き込み側(および変更ロック)は妨げる。非保護書き込み(UnprotectedWrite)動作は、変更ロックによって妨げられない動作である。変更ロックでは、他の関連しないオブジェクトに対するロックを妨げない。変更ロックでは、ロックするオブジェクトへのダーティ・リードは妨げられない。ダーティ・リードとは、ロック(読み取りまたは変更)を獲得せずに情報をエージェントから取り出す任意のクライアント要求である。これは、読み取りが保護されていないため、ダーティ・リードと呼ばれる。同じ情報をその次に読み込んだ場合には、異なる結果がもたらされる可能性もある。また、LTMシステム内の書き込み動作では、ロッキング対応エージェントがあると、変更の対象となるオブジェクトそれぞれに対する変更ロックがあることが必要である。
ロッキング非対応クライアントとのやり取り
ロッキング非対応クライアントとのやり取りが起きるのは、LTMシステム・ロッキングが存在しており、「ロック保持側」または「ロック要求側」がロックを行っており、他のクライアントがロッキングを行っていないときである。ロッキング非対応クライアントは、どのようなロックを発行することもまったくない。しかし、ロッキング非対応クライアントが書き込み動作を試みるときには、暗黙の変更ロックが、その動作の持続期間の間、獲得される。したがって、変更または読み取りロックでは、ロックした資源に対するどのようなロッキング非対応クライアント動作も妨げられる。しかし、ロッキング非対応クライアントが読み取り動作を試みた場合(非ロック読み取り)、その読み取り動作はどのようなロッキングによっても妨げられない。ロッキング非対応クライアントが資源を更新している場合には、これにより、ロッキング・クライアントによる変更ロックが一時的に妨げられる。しかし、ダーティ・リード(非ロック読み取り)は妨げられない。
デッドロック管理
このロッキングの設計では、デッドロックを取り扱うために、ロック・マネージャ内にデッドロック検出機構を置いている。このロッキングでは、「lock as you go」セマンティクスがサポートし、ロックが直ちに利用可能でない場合用にロック・キューイングをサポートしている。デッドロックが起きるのは、2つ以上のクライアントが、2つ以上の資源をロックしようと試みており、互いを待っているときである(これは、時に「死の抱擁」(deadlyembrace)と呼ばれる)。本発明の好ましい一実施形態では、そのような状況を解決するために、ロック・マネージャが、そのようなサイクルの検出を試み、デッドロックを起こしているクライアントのうちの1つを選び、そのクライアントのロック要求を拒否することができる。
本発明の好ましい一実施形態では、LTMシステムで、より単純なアプローチである、ロック・キュー・タイムアウトをサポートしている。ロック要求がロック・キュー上に所定の時間の間ロックを得ることなく留まっている場合には、そのロック要求は拒否される。資源にはそれぞれ、関連付けられているロック・キューがある。
ロックをキューイングすることのできる時間の長さは、そのロックを許可したはずのエージェントが決定する。ロック・キューは、ロック・マネージャ内で保持および維持される。エージェントでは、ロックの許可または拒否を行う。ロックをエージェントが拒否すると、そのエージェントは、「キュー時間」(queue time)(そのロックが、ロック・マネージャに拒否される前にキューイングされたままでいられる時間)の埋め合わせを行うことができる。エージェントでキュー時間の埋め合わせを行わない場合は、ロック・マネージャで、(たとえば、ロック管理の管理者(lockmanagement administrator)が定めるまたは前もって定めた)デフォルトの時間の長さが適用されることになる。ロック要求は、結局拒否されることもある。何が次に起きるかは、使用中のロッキングのレベルによる。
トランザクション・レベルのロッキングでは、キュー上でタイムアウトするロックが、その操作(操作IDにより識別される)をアボートさせることになる。具体的には、タイムアウトを検出するロック・マネージャからトランザクション・マネージャに、ロック要求が拒否されていることが通知される。トランザクション・マネージャにより、ロールバック操作が駆動されることになる。ロールバックの最後の部分は、そのトランザクションの保持しているロックの解放であり、これにより、死の抱擁が解放される(すなわち、デッドロックが終わる)ことになる。
隔離性レベルのロッキングでは、ロック・マネージャから要求元(originating)クライアントに、ロックが拒否されているという応答が返されることになる。クライアントは、ロック要求を再発行することにしてもよいが、クライアントの好ましい動作は、クライアントがそれまでに行っていたことからの回復を試みることになるはずである。この理由から、ロック・マネージャは、ロック拒否の際に、自動的にロックの解放を行わない。クライアントには、ロックの失敗の時点までにクライアントが行っていた作業の「アンドゥ」を試みる機会が与えられる。クライアントがその回復動作を完了したとき、クライアントによってロックが解放される。
クライアント制御レベルのロッキングでは、ロック・マネージャから要求元クライアントに、ロックが拒否されているという応答が返されることになる。隔離性レベルの場合と同様に、クライアント制御の場合のクライアントには、行っていたことを回復する機会が与えられる。しかし、クライアント制御の場合では、これは、クライアントが以前保持していたが、解放してしまったロックを再獲得することになる可能性がある。もちろん、これからは、「循環的拒否」(cyclic denial)の状況が生じかねない。この理由から、ロック・マネージャでは、ロック・マネージャがある操作IDに与えた拒否の数のトラックを把握しておき、所定の数(たとえば、3個)の拒否の後でロックをすべて一方的に解放することになっている。
ロック操作
ロッキング対応クライアントとロック・マネージャ(サーバ)の間の要求/応答プロトコルの説明を、次のセクションで行う。このプロトコルに他のメッセージが追加されることもあり、あるいは一部のメッセージの削除または入れ替えが行われることもある。
ロック要求/応答パラメータ
AgentRequestは、次のパラメータのそれぞれのうちの1つを含む。すなわち、CIMObjectPath(すなわち、ロックすべき各インスタンスに対するオブジェクト・パス)およびType(すなわち、要求されているロックの型(Read(読み取り)またはChange(変更)))である。AgentResultsは、次のパラメータのそれぞれのうちの1つを含む。すなわち、CIMObjectPath(すなわち、ロックされている各インスタンスに対するオブジェクト・パス)およびType(すなわち、許可されたロックの型(ReadまたはChange))。
ロック要求のすべてにおいて、操作IDが1つ提出される。操作IDにより、ロックを要求するクライアント操作が識別される。操作IDの確立は、GetOperationId要求またはBegin Transaction要求で行われる。
QueeueTimeは、ロック要求において、拒否されるエージェントに返される期間である。QueueTimeにより、そのエージェントが、どれくらいの期間、そのロック要求がキューイングされたままであってもかまわないとするかが識別される。
下の図4に、ロック要求、ロック要求を発行する構成要素(すなわち、クライアント、ロック管理サーバ、トランザクション・マネージャ、またはロック・エージェント)、および受け取り側の構成要素(すなわち、クライアント、ロック管理サーバ、トランザクション・マネージャ、またはロック・エージェント)の要約を行っている。ロック要求のそれぞれを、下でさらに詳細に説明することにする。
Figure 0004543034
アステリスク(*)でマークした要求は、クライアント制御レベルのロッキングで使用されるだけである。
クライアント・トランザクション・マネージャの要求/応答
このセクションでは、クライアントとトランザクション・マネージャの間の要求/応答プロトコルを説明する。
本発明の好ましい一実施形態では、クライアント要求は、BeginTransaction、LogUpdate、CommitTransaction、およびRollbackTransactionを含む。
BeginTransaction( ) 要求は、トランザクション制御(およびトランザクション・レベルのロッキング)の下で実行されるクライアント操作に対する操作IDを要求するクライアントからのメッセージである。クライアントは、トランザクション管理サーバのうちの1つに操作IDを尋ねる。本発明の好ましい一実施形態では、これは、そのクライアントのシステム上にあるトランザクション管理サーバとなるはずである。トランザクション・マネージャの生成する操作IDは、トランザクション・マネージャおよびロック管理(LM、LockManagement)グループ・サーバへの要求の中で使用される。
LogUpdate(OperationId, Request,ReverseRequest) 要求は、クライアントからトランザクション・マネージャへのものであり、更新動作およびその更新を逆にするために行う動作のログを記録する。
CommitTransaction(OperationId) 要求は、クライアントからトランザクション・マネージャへのメッセージであり、そのトランザクションに関するコミット処理を開始する。
RollbackTransaction(OperationId) 要求は、クライアントからトランザクション・マネージャへのメッセージであり、そのトランザクションに関するロールバック処理を開始する。
本発明の好ましい一実施形態では、トランザクション管理サーバは、次の応答メッセージをサポートしている。すなわち、GrantTransactionID, LogUpdated, CommitDone, およびRollbackDoneである。
GrantTransactionID(OperationId) 応答は、BeginTransaction要求への応答となる。トランザクション・マネージャは、一意の操作IDを生成し、その操作IDをクライアントへと返す。OperationIdのプレフィクス(すなわち、操作IDの最初の部分)は、その操作IDを生成したのが、あるトランザクションのトランザクション・マネージャであることを示している。
LogUpdate(OperationId, Request) 応答は、トランザクション・マネージャからクライアントへのものであり、トランザクション・マネージャが(その要求によって識別される)更新動作のログ記録を完了したことを示す。
CommitDone(OperationId) 応答は、トランザクション・マネージャからクライアントへのメッセージであり、OperationIdによって識別されるトランザクションに対するコミット処理の完了が成功したことを示す。このメッセージは、CommitTransaction要求に応答して送られる。
RollbackDone(OperationId) 応答は、トランザクション・マネージャからクライアントへのメッセージであり、OperationIdによって識別されるトランザクションに対するロールバックが完了したことを示す。このメッセージは、CommitTransactionまたはRollbackTransaction要求に応答して送ることができる。
クライアント・ロック管理サーバの要求/応答
このセクションでは、クライアントとロック管理サーバの間の要求/応答プロトコルを説明する。
本発明の好ましい一実施形態では、クライアント要求は、GetOperationId、LockRequest、ReleaseOperationId、およびLockReleaseを含む。
GetOperationId( ) 要求は、クライアントが行うことになる操作に対する操作IDを要求するロッキング対応クライアントからのメッセージである。クライアントは、ロック管理グループ・サーバのうちの1つに操作IDを尋ねる。そのロック管理サーバの生成した同じ操作IDが、他のロック管理グループ・サーバへの要求でも使用される。トランザクションの可能な環境では、OperationIDを得るのに、BeginTransaction要求を用いることができるが、ロック管理サーバに対するこの要求は発行されないはずである。GetOperationId要求の発行が、BeginTransaction要求の発行後である場合、第2のOperationIdが生成される。
LockRequest(AgentRequest[], Type[],OperationId) 要求は、「Type」パラメータの指定する型(ReadまたはChange)をもつ1つまたは複数のロックを要求するロッキング対応クライアントからのメッセージである。ロックは、指定した操作IDを代理して得られることになる。
ReleaseOperationId(OperationId) 要求は、その操作IDの保持するロックすべての解放を要求するロッキング対応クライアントからのメッセージである。この要求は、その操作に参加する各ロック管理グループ・サーバへと送られるが、操作IDは、1つのロック管理グループ・サーバから得たものである。トランザクションの可能な環境では、ReleaseOperationId要求は、トランザクションを終了させることによって実現され(たとえば、CommitまたはRollbackの後で行われる)、クライアントが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は、実際に、空の配列(nullarray)とすることもできる。LockReleased応答は、クライアント制御のロッキング・レベルに適用される。トランザクション・レベルのロッキングでは、LockRelease要求は拒否される。隔離性レベルのロッキングでは、LockRelease要求は、ロッキングのレベルをクライアント制御まで落とすことになる。
ロック管理サーバ・エージェントの要求/応答
このセクションでは、ロック管理サーバとロッキング対応エージェントの間の特定の要求/応答のセットを説明する。
本発明の好ましい一実施形態では、ロック管理サーバの要求は、AgentRequest、AgentReleaseAll、およびAgentReleaseを含む。
AgentRequest(AgentRequest[], OperationId) 要求は、ロック・マネージャにより、個々のエージェントへのロック要求に翻訳されることになるロック要求である。この要求では、エージェントの管理するオブジェクトに対するロック要求が、そのエージェントへと渡される。エージェントへのロック要求では、操作IDが渡されて、そのロックを要求しているクライアント操作が識別される。許可されたロックは、(AgentRelease要求によって)明示的に解放されるまで保持される。
AgentReleaseAll(OperationId) 要求は、操作(クライアント)の保持する(エージェント)ロックをすべて解放するための要求である。サーバでは、解放すべきロックを明示的にリストすることは、そのロックが操作IDによって暗黙に示される(implied)ため、しなくてもよい。すなわち、ロック・エージェントは、その操作の間、ロックを保つことが期待され、その操作の保持するロックはすべて、AgentReleaseAll要求によって解放される。
AgentRelease(AgentRequest[], OperationId) 要求は、操作(クライアント)の保持している、選択したロックを解放する要求である。この要求が発行されるのは、クライアント操作が、クライアント制御レベルのロッキングで実行されている場合である。
本発明の好ましい一実施形態では、トランザクション環境に関して、発行される要求がさらに3つある。第1は、ロック管理サーバからの「コミット準備」(Prepare to Commit)要求である。コミット準備要求は、エージェントにコミットする準備を行うように告げるためのトランザクション管理機能である。すなわち、コミット準備要求では、エージェントに対して、トランザクションが終わろうとしていること、および、エージェントはコミットまたはロールバックするよう準備すべきであることが告げられる。エージェントからの確認(confirmation)は、そのエージェントがどちらかの方向に進むことができることを意味する。エージェントがトランザクション・マネージャから得ることのできる第2の要求は、「エージェント・ロールバック」(RollbackAgent)または「エージェント・コミット」(Commit Agent)要求である。本発明の好ましい一実施形態では、トランザクション・マネージャは、エージェントのインテリジェンスを利用してロールバックを行うのではなく、ロールバックを駆動するために「逆」の動作を発行することができる。
本発明の好ましい一実施形態では、エージェント応答は、AgentGrant、AgentRefuse、AgentAvail、AgentAllReleased、およびAgentRleasedを含む。
AgentGrant(AgentResult[], OperationId) 応答は、AgentRequestへの応答となる。AgentResultリストは、AgentRequestリストよりも短くすることができる。この場合、暗黙に、要求するロックの一部は拒否されることになる(下を参照されたい)。許可されるロックには、CIMObjectPathおよび許可されるロックの型(たとえば、ReadまたはChange)が示されることになる。本発明の好ましい一実施形態では、AgentResultsは、ロックのエスカレーション(変更ロックへとエスカレートされた読み取りロック、またはエージェント・ロックへとエスカレートされたインスタンス・ロック)を含むが、AgentResultsは暗黙のまたはカスケードされたロックを含まない。
AgentRefuse(AgentResult[], OperationId,QueueTime) 応答は、エージェントがどのロック要求も拒否する場合に、エージェントにより発行される。拒否されるロックは、AgentResultで識別され、QueueTimeが得られる。これは、エージェントが、拒否されたロックのどれでもキュー上に留まるのを許してもかまわないとする時間インターバルである。
AgentAvail(AgentResult[]) 応答は、ロック管理サーバに対して、それまでに要求した(またキューイングした)資源が現在利用可能であることを告げる。実際のキューイングが行われるのは、ロック管理サーバ内である。しかし、このメッセージは、ロッキング非対応クライアントの保持する資源が現在ロッキング用に利用可能であることをロック管理サーバに知らせるのに必要である。
AgentAllReleased(OperationId) 応答は、エージェントからロック管理サーバへと、AgentReleaseAll要求への回答として送られる。
AgentReleased(AgentResult[], OperationId) 応答は、エージェントがロック管理サーバへと、AgentRelease要求への回答として送る応答である。これは、AgentRelease要求と同様に、クライアント制御レベルのロッキングに適用可能である。
発見(discovery)
本発明の好ましい実施形態では、管理者は、ロック管理サーバをセットアップし、そのそれぞれに一意のロック管理グループ値を与える。次いで、管理者は、ロック管理グループ値をエージェントに割り当てる。各エージェントは、ロック管理グループに属さないか、または1つのロック管理グループに属する。エージェントに対するデフォルトのロック管理グループ値は「DefaultUnconfigured」(デフォルト未構成)である。
ロック管理クライアントでは、1つ(複数)のロック管理グループ、そのロック管理サーバ、およびロック管理エージェントの決定を、サービス・エージェントを発見する間に行う。この発見プロセスから、クライアントは、どのロック管理サーバを使用してロック管理エージェント内の資源をロックすべきかを告げられる。本発明の好ましい一実施形態では、2つ以上のロック管理サーバが、1つのロック管理グループ値をサポートしていると発見機構(discovery mechanism)(すなわち、たとえば、ネットワークの資源についてのディレクトリ内の情報を維持する機構)に対して周知する(advertiseitself)と、エラーとなる。ロック管理サーバが立ち上がり、同じロック管理グループ値をもつ別のロック管理サーバを発見する場合には、そのロック管理サーバは、周知すべきではない。
エージェントが立ち上がり、そのロック管理グループに対するロック管理サーバがない場合には、そのエージェントでは、その状態を、「ロッキング可能」(locking enabled)ではないと記録する。
ロック管理の実装
本発明の好ましい一実施形態では、ロック管理の実装は、本明細書で説明するロッキングの設計を実装する適切な構成要素すべてによって行われるが、このロッキングは、環境内で非ロッキング構成要素と共存する。本発明の好ましい一実施形態では、ロッキング環境を得るために、ロック管理を、ロック管理サーバおよびロック管理エージェントで実装するが、クライアントでのロッキングは、クライアントの裁量に委ねられる。ロック管理サーバまたはロック・エージェントは、ロッキングを行わないクライアントまたはロッキング非対応エージェントに対処することができる。こうした場合のそれぞれを下で詳細に論じる。
ロック非対応クライアント
ロック非対応クライアントは、操作に関するロック管理を実装しないクライアントか、またはロッキングをまったく実装しないクライアント(たとえば、レガシ・クライアント)である。ロック対応エージェントは、更新要求をロック非対応クライアントから受け取ると、そのエージェントのロック対応クライアントを保護するために、その操作の持続期間の間、その操作をロックされている(すなわち、変更ロックを伴う)ものとして扱う。すなわち、動作がモデルを更新した場合、それに伴うロックは、その要求から影響を受ける資源に対する変更ロックである。操作が読み取りの場合は、エージェントは動作を「非ロック」読み取りとして扱うことができる。本質的には、ロック非対応クライアントは、CIMで表現されるオブジェクト・モデルの何らかの部分の更新を試みる場合には、ロック非対応クライアントを妨げることができる(すなわち、拒否される要求となる)。
どのロッキング対応クライアントも、ロック非対応クライアントによって変更中である資源に対するロックを保持しない場合は、その要求は実行することができる。しかし、変更ロック(またはその均等物)が伴うことになり、その結果、ロッキング対応クライアントからのどのようなロック要求も妨げられる。ロッキング対応クライアントからのロック要求の場合には、ロック要求はキューイングすることができる。エージェントは、ロック要求のキューイングに使用すべきキュー時間の値を返す。ロッキング非対応クライアントはロック・マネージャを経由していないため、エージェントからロック・マネージャへは、AgentAvailメッセージが、そのロック非対応クライアントの終了時に発行される。
ロック非対応エージェント/オブジェクト・マネージャ
ロック非対応エージェントまたはオブジェクト・マネージャは、ロック管理を実装していないエージェントまたはオブジェクト・マネージャである。
本発明の好ましい一実施形態では、ロック非対応のCIMXML(CommonInformation Model - Extensible Markup Language)サーバ(すなわち、CIMオブジェクト・マネージャおよびエージェントのあるCIMサーバ)では、ロックを許可および解放するための追加の内在的な方法のサポートを行わない。こうしたレガシの役割を発見するクライアントでは、不変の操作を、それらがロック非対応クライアントであるかのように扱うことになる。
ロック管理クライアント
クライアントでは、その動作するロッキング環境の認識を行う。まず、クライアントは、ロック・マネージャの有無の認識を行う。次いで、クライアントは、トランザクション・マネージャの有無の認識を行う。エージェントがすべてロッキング対応であり、トランザクション・マネージャが存在している場合は、エージェントはトランザクション・レベルのロッキングを使用することができる。トランザクション・マネージャが存在しない場合は、エージェントは、隔離性レベルまたはクライアント制御レベルを使用するか、あるいは、ロッキングをまったく行わない。
構成内にロッキング非対応エージェントであるエージェントがある場合、クライアントでは、これらのエージェント上のどのような動作も保護されないことを認識している。さらに、クライアントでは、トランザクションまたは隔離性のレベルのロッキングを行っている操作は、ロッキング非対応エージェントに関しては、その能力をもたないことを了解している。
クライアントでは、所与の任意の操作においてどのレベルのロッキングを使用すべきかを決定する。コンカレンシおよびスケーラビリティのためには、クライアントがその操作をサポートする「最小」レベルのロッキングを使用することが望ましい。たとえば、あるクライアントが、あるSANの調査を利用可能なストレージに関して(たとえば、純粋な読み取り操作のために)行っている場合は、そのクライアントがロッキングをまったく行わないことが望ましいはずである。そのクライアントが、利用可能なストレージの調査をボリュームの作成のために行っている場合は、見つかったストレージがそのボリュームの作成に実際に使用可能であることを保証するには隔離性レベルで十分である。
トランザクション・レベルのロッキングの使用は、協調の必要な、場合によってはSAN内の複数のエージェントにまたがる、複数の更新の関わる複雑な操作のために予約されている。
ある操作の実行をロッキングのレベルの1つの下で行うことにしたクライアントは、操作IDの要求をトランザクション・マネージャまたはそのクライアントの使用することになるロック・マネージャの1つに対して行うことにより、その操作を開始する。操作IDの要求はどのようなロック・マネージャに対しても行うことができるが、クライアントが操作IDの要求を、そのクライアントで使用中のロック・マネージャの1つに対して行う場合には、より効率的である。
ロック管理クライアントに関する規則は、次のように要約される。すなわち、
(1)クライアントでは、そのクライアントが操作において扱わなければならなくなるエージェント、ロック管理サーバ、およびトランザクション・マネージャの一覧を作成して、エージェントがすべてロッキングで扱われているか、およびロッキング環境がトランザクション可能(transaction enabled)かを決定する。ある操作をロッキング操作としてコードできるかどうか、およびロッキングのレベルは、操作により変わりうる。すなわち、クライアントは、そのクライアントの使用することになるロッキングのレベルの選択を、その操作に何が必要になるかのそのクライアントの理解に基づいて行える。
ロック管理クライアントでは、資源に対するロックの獲得を、クライアントがその資源に対する動作を試みる前に行う。しかし、これは、その動作の行われる直前に行うことができる。本発明の好ましい一実施形態では、ロックすべての獲得を、何らかの動作の行われる前に行う必要はなく、「作成」(Create)要求に対する例外が存在する。変更ロックは、「作成」要求に伴うことになる。
単一のロック管理要求は、同じロック管理グループ内のエージェントへの参照を含む。
ロック管理クライアントでは、操作が終わったときにロックを解放する。これは、クライアントがトランザクション・マネージャを使用中の場合(すなわち、コミットまたはロールバックがあると、ロックの解放があることになる)には、クライアントに対して自動的に行われる。
ロック管理クライアントでは、そのロック要求も拒否された場合には、「回復」(recovery)を行ってロックを解放する。すなわち、あるロック要求が拒否されると、その操作の保持する存在中のロックが維持されて、これにより、アプリケーションでは、自前の「アンドゥ」を試みること、またはトランザクション・マネージャのロールバック機能を呼び出すことが可能になる。このどちらかが終わるとすぐに、ロックの解放が行われる。
(a)隔離性またはクライアント制御のレベルのロッキングで動作中のロック管理クライアントは、何らかの障害状況に遭遇する前に行われた操作のどの部分でも「アンドゥ」する役目をもつ。
(b)ロック管理クライアントがロックの獲得を試み、その試みが失敗した場合、そのロック管理クライアントは、そのロックの試みを再試行することができる。本発明の好ましい一実施形態では、これは推奨しておらず、ロック管理サーバは、この規則の実施を、再試行の試みで操作IDに対するロックを拒否することによって行うことができる。
ロック管理サーバ
ロッキング・プロセスは、ロッキングに関する状態情報を維持するロック・マネージャ(たとえば、ロック管理サーバ)に関わる。これは、ロック要求はロック管理サーバにより管理され、衝突はロック管理サーバのレベルで扱われることを意味する。ロック管理サーバでは、明らかな衝突およびキュー要求の検出を、エージェントと相談する必要なく行うことが可能である。ロック・マネージャは、たとえば、次の状態情報を維持している。すなわち、
あるクライアント(操作ID)の保持しているロック
あるクライアント(操作ID)のためのロックをもつエージェント
ロック・キュー(他のロック要求の背後でキューイングされるクライアント・ロック要求)
ロック・キュー・タイムアウト
このロッキングの設計では、所与のどのロック管理グループでも1つのロック管理サーバがアクティブである。1つのエージェントは、1つのロック管理グループに属する。本発明の好ましい一実施形態では、ロッキングの設計で、どのロック管理グループにも属さないエージェントという概念がサポートされるが、そのようなエージェントの管理する資源は、ロッキング制御下にはない。
あるロック管理サーバが、ロック管理エージェントの発見を行う間、ロック管理グループ値の同じ別のアクティブなロック管理サーバを見つけた場合、そのロック管理サーバはアクティブにならない。しかし、そのロック管理サーバは、ロック管理グループ値の同じもう1つのロック管理サーバとの通信を開始し、そのロック管理グループ値に対するバックアップのロック管理グループ・サーバの地位に収まる。
ロック管理サーバは、その動作する環境を認識する。具体的には、ロック管理サーバは、他のロック管理グループ・サーバの発見を行い、そのロック管理サーバが、ロック管理グループ値に対する唯一のロック管理サーバであることを確認する。また、そのロック管理サーバは、ロック管理グループ値の同じエージェントをすべて発見する。
ロック管理サーバでは、以下の機能を行うことが可能になっている。
ロッキングのレベル(トランザクション、隔離性、またはクライアント制御)をサポートし実施すること。具体的には、OperationIdがトランザクションIDである(すなわち、プレフィクスが付いている)場合、ロック・マネージャが、トランザクションの終わる前のロックの解放をサポートすることはない。隔離性とクライアント制御のレベルの場合を比較すると、ロック・マネージャは、隔離性レベルを、クライアントが個々のロックを解放するまでは仮定している。その後は、ロック・マネージャではその操作を、クライアント制御としてマークする。
(2)OperationIdを生成すること。サーバは、操作IDを生成して、隔離性およびクライアント制御のレベルのロッキングに対するクライアント操作を識別することができる。本発明の好ましい一実施形態では、OperationIdは複合した値である。値の第1の部分では、その操作がトランザクションでないことを示し、第2の部分はロック管理グループ値であり、値の第3の部分はロック管理グループの範囲内で一意である識別子である。識別子は、0から232−1の範囲にある整数である。このため、同じ時間フレーム内での再使用を避けるのに十分な距離が可能になっている。
どのロックが保持されているかの記録を、どの資源(たとえば、CIMObjectPath)をどの保持側(OperationId)が保持しているかを記録することによって行うこと、また、キューイングされているロック要求の記録を維持すること。
ロック・マネージャまたはロック・エージェントの障害後にロックを回復すること。また、ロック・キューを回復すること。
妨げられているロック要求をキューイングすること。許されるキュー時間の埋め合わせが、その資源をロックしていたはずのエージェントによって行われる。ロック管理サーバでは、エージェントの主張したキュー時間を守るために、キュー上での時間を監視する。操作がロックを得る前にキュー時間が時間切れになった場合、クライアントにはロックが拒否されたというメッセージ(lock refused message)が返される。
クライアントから求められたときにロックを解放すること。ロック管理サーバでは、エージェントおよびクライアントとのハートビート機能を使用して障害(たとえば、クライアント、エージェント、または通信の障害)の場合のロックの解放を行う。ハートビート機能は、たとえば、サーバからクライアントおよびエージェントへと送られる信号、ならびに、応答しているクライアントまたはエージェントが正しく機能していることを示すその信号への応答である。
本発明の好ましい一実施形態では、ロック管理サーバは、また、他のロック・マネージャとの通信を実装してロック管理フェイルオーバを実現する。
ロック管理サーバの特色
本発明の好ましい一実施形態では、最小限のロック管理サーバは、次の特徴および特色を持つはずである。
ロック管理サーバ要求を受理し、所定の応答を提供すること。
ロック管理エージェント要求を駆動し、その応答を処理すること。
ロッキング対応クライアント操作をサポートするときに、ステートフル(stateful)であること。
SPOF(single point of failure、単一機器の障害がシステム全体の障害となる箇所)に従属しているが、ロック管理サーバ・フェイルオーバをサポートするようにも設計されていること。
機能をそれ自体のロック管理グループの範囲内で行うこと。
ロック・マネージャの自由選択による向上
本発明の好ましい一実施形態では、次のものをサポートするようにロック・マネージャを設計することが可能である。すなわち、
可用性の高い(highly available)ロック管理サーバ
トランザクショナル(transactional)なロック管理サーバ
ロック管理エージェントの考慮
ロッキング対応エージェントは、ロッキング・モードまたは非ロック(no lock)モードで動作するように作成されている。ロッキング対応エージェントが行うよう求められるものは、操作により様々である。
最初の発見中に、ロッキング対応エージェントは、そのロック管理グループ・サーバを探す。ロック管理グループ・サーバが見つかった場合は、そのエージェントのロッキング機能がイネーブルになる。ロック管理グループ・サーバが見つからなかった場合は、そのエージェントは非ロック・モードで動作する。
特定の実施形態では、ロック管理エージェントがロック要求を処理するときに従う必要のある規則は、次のものである。すなわち、
許可されたロックは、すべて、明示的に解放されるまで保持する。
ロッキング対応クライアントの保持するロックと衝突するようなロッキング非対応クライアントからの動作は妨げる。
ロック非対応クライアントによる使用が理由でロック要求を拒否した後で資源が利用可能になっているときは、ロック管理サーバに(AgentAvailで)通知する。
ロック管理の使用ケース
このロッキングの設計の例示のために、クライアント操作のための1組の想定状況(scenarios)を説明することにする。ロック論理の説明は、次の想定状況のそれぞれに対して行う。すなわち、
ストレージの不十分な仮想化システム上にボリュームを作成する
ある仮想化システムから別の仮想化システムへとストレージを移動させる
仮想化システムからホスト・ベースの仮想化へとストレージを移動させる。
論理ボリューム・マネージャ上に論理ボリュームを作成し、それを仮想化サブシステムおよびディスク・アレイからプロヴィジョンする
仮想化システム上にボリュームを作成する
図6に、本発明の好ましい実施形態による、ストレージの不十分な仮想化システム上でのボリュームの作成を示している。クライアント(C1)400は、仮想化サブシステム(V1)410上にボリュームの作成を試みるが、仮想化サブシステム410には、そのボリュームを作成するのに十分なストレージがない。このため、クライアント400は、まず、ストレージをディスク・アレイSS1 420から得る。このストレージはV1 410へと割り当てられ、次いで、このストレージは、V1 410上で使用することができる。動作は操作ID1(Op1)と関連付けられている。この操作の具体的なステップは、次のものである。
(1)SS1 420上にボリュームを(たとえば、CIMにあるStorageConfigurationServiceステートメントによって)作成する − これは、SS1 420内でストレージ・プールをロックし、ボリューム作成(createvolume)サービスを発行するものである。この想定状況での仮定は、仮想化サブシステム410が、ストレージの自動プロヴィジョニングを行わないことである。SS1 420上でのボリュームの作成は、クライアント400が行う。
(2)ボリュームをV1 410に割り当てる − 作成したばかりのボリュームをV1 410へと割り当てる(すなわち、論理ユニット番号(LUN、logical unit number)がマッピングされる)。仮定は、このボリュームのV1 410による制御は、クライアント400がこのボリュームをV1 410へマッピングするまで行われない、ということである。
(3)ストレージ・プールのV1 410への拡張を、ボリュームのプールへの追加によって行う − V1 410に割り当てたボリュームが、V1 410オブジェクト・モデルにエクステントとして現れる。クライアント400は、このエクステントを、新しいV1 410を収容することになるV1 410ストレージ・プールへと追加する。
(4)LUNをV1 410上に作成する − クライアント400が、実際にボリュームをV1 410上に作成する。
図7に、本発明の好ましい実施形態による、ストレージの不十分な仮想化システム上でのボリュームの作成のための一連の動作におけるロッキングのステップおよび主要なクライアント動作要求の表460を示している。
ある仮想化システムから別の仮想化システムへとストレージを移動させる
図8に、本発明の好ましい実施形態による、ある仮想化システムから別の仮想化システムへのストレージの移動を示している。クライアント(C1)510は、ロック管理グループA500内である仮想化システム(V1)520から別の仮想化システム(V2)530へとストレージを移動させることを試みる。このために、クライアント510は、V1 520上のストレージを解放し、次いで、解放したストレージをV2 530へと割り当てる。V1 520から解放されたストレージは、ロック管理グループB540内のアレイSS1 550によって保持される。動作は操作ID1(Op1)と関連付けられている。この操作の具体的なステップは次のものである。
V1 520上のエクステントを削除する(StorageConfigurationService) − これは、V1 520内でストレージ・プールをロックし、エクステント削除(deleteextent)サービスを発行するものである。この想定状況での仮定は、ストレージ・プールをロックすることによって、ストレージ・プールのエクステントがロックされる、ということである。
SS1 550 ボリュームをV1 520からアンマップ(unmap)する − これは、SS1 550ボリューム、および、このボリュームのマッピングされていたポート/イニシエータをロックするものである。ここでの仮定は、マッピングに関わるオブジェクトは、(マップ要求でわかるように)ロックに必要なものである、ということである。
SS1 550ボリュームをV2 530へとマッピングする − 操作ではすでにこのボリュームに対するロックを保持しているが、操作は、V2 530に対する新しいポート/イニシエータのロックも行う。
エクステント(SS1 550ボリューム)をV2 530ストレージ・プールへと追加する(StorageConfigurationService) − これは、V2 530上のストレージ・プールをロックするものである。
図9および図10に、本発明の好ましい実施形態による、ある仮想化システムから別の仮想化システムへのストレージの移動のために隔離性レベルのロッキングの下で行う一連の動作におけるロッキングのステップおよび主要なクライアント動作要求の表560を示している。
仮想化システムから論理ボリュームへとストレージを移動させる
図11に、本発明の好ましい実施形態による、仮想化システムから論理ボリューム・マネージャへのストレージの移動を示している。クライアント(C1)610は、ロック管理グループA600内のある仮想化システム(V1)620から論理ボリューム・マネージャ(LVM1)630へとストレージを移動させる。このために、クライアント610はV1 620上のストレージを解放し、解放したストレージをLVM1 630へと割り当てる。V1 620から解放されたストレージは、ロック管理グループB640内のアレイSS1 650によって保持されている。動作は、操作ID1(Op1)に関連付けられている。この操作の具体的なステップは、次のものである。
V1 620上のエクステントを削除する(StorageConfigurationService) − これは、V1 620内のストレージ・プールをロックし、エクステント削除(deleteextent)サービスを発行するものである。この想定状況での仮定は、ストレージ・プールをロックすることにより、そのストレージ・プールのエクステントがロックされる、ということである。
SS1 650ボリュームをV1からアンマップする − これは、SS1 650ボリューム、および、このボリュームのマッピングされていたポート/イニシエータをロックするものである。ここでの仮定は、マッピングに関わるオブジェクトは、(マップ要求でわかるように)ロックの必要なものである、ということである。
SS1 650ボリュームをLVM1 630へとマッピングする − 操作ではすでにこのボリュームに対するロックを保持しているが、操作は、LVM1 630に対する新しいポート/イニシエータのロックも行う。
エクステント(SS1 640ボリューム)をLVM1 630論理ボリューム・グループ(ストレージ・プール)へと追加する(StorageConfigurationService) − これは、LVM1 630上の論理ボリューム・グループをロックするものである。
図12および図13に、本発明の好ましい実施形態による、ある仮想化システムから別の論理ボリューム・マネージャへのストレージの移動のために隔離性レベルのロッキングの下で行う一連の動作におけるロッキングのステップおよび主要なクライアント動作要求の表660を示している。
論理ボリュームを作成し、それを複数のソースからプロヴィジョンする
図14に、本発明の好ましい実施形態による、論理ボリュームの作成、および複数のソースからのその論理ボリュームのプロヴィジョンを示している。クライアント(C1)700は、論理ボリュームの作成、および、その論理ボリュームの複数のソースからのプロヴィジョンを試みている。具体的には、クライアント700は、ストレージを仮想化システム(V1)720およびストレージ・アレイ(SS1)730から得ようと望む。動作は、操作ID1(Op1)に関連付けられている。この操作の具体的なステップは、次のものである。
ボリュームをV1 720上に作成する(StorageConfigurationService) − これは、V1 720内のストレージ・プールをロックし、ボリューム作成(createvolume)サービスを発行するものである。
V1 720ボリュームをホスト(すなわち、論理ボリューム・マネージャ1(LVM1)710)にエクスポーズ(すなわち、マッピング)する − これは、V1 720ボリューム、および、このボリュームのマッピングされていたポート/イニシエータをロックするものである。ここでの仮定は、マッピングに関わるオブジェクトは、(マップ要求でわかるように)ロックの必要なものである、ということである。
SS1 730上にボリュームを作成する(StorageConfigurationService) − これは、SS1 730内のストレージ・プールをロックし、ボリューム作成(createvolume)サービスを発行するものである。
SS1 730ボリュームをホスト(すなわち、LVM1)にエクスポーズ(すなわち、マッピング)する − これは、SS1 730ボリューム、および、このボリュームのマッピングされていたポート/イニシエータをロックするものである。ここでの仮定は、マッピングに関わるオブジェクトは、(マップ要求でわかるように)ロックの必要なものである、ということである。
論理ディスク(すなわち、エクステント)をLVM1 710論理ボリューム・グループ(ストレージ・プール)に追加する(Storage Configuration Service) − これは、LVM1 710上の論理ボリューム・グループをロックするものである。
図15および図16に、本発明の好ましい実施形態による、論理ボリュームの作成、および複数のソースからのその論理ボリュームのプロヴィジョンのための隔離性レベルのロッキングの下で行う一連の動作におけるロッキングのステップおよび主要なクライアント動作要求の表760を示している。
ロックおよびトランザクション管理
図17に、本発明の好ましい実施形態による、ロックおよびトランザクション管理(LTM、lockand transaction management)システムにおいてロックを処理するために実装する論理を示している。制御は、ブロック800で、クライアントがロックすべき資源を識別することから始まる。また、このクライアントには、どのエージェントがその資源へのアクセスを制御する(すなわち、「資源を制御する」)かがわかっており、このクライアントは、ロック要求を、ロック・マネージャを介して、資源へのアクセスを制御するロック・エージェントへと送る(ブロック810)。エージェントでは、ロック要求を許可または拒否し(820)、エージェントは、ロック要求に対する応答をロック・マネージャ(830)へと送る。ロック・マネージャは、ロック要求が許可されたかどうかを判定する(ブロック840)。ロック要求が許可されていた場合は、ロック・マネージャは許可通知をクライアントへと転送し(ブロック850)、そうでない場合は、ロック・マネージャはそのロック要求をキューイングする(ブロック850)。
図18に、本発明の好ましい実施形態による、ロック・マネージャの実装する論理を示している。制御は、ブロック900で、ロック・マネージャが、マルチ・ベンダ・クライアントから受け取ってマルチ・ベンダ・エージェントに向けられたロック要求を管理し、マルチ・ベンダ・エージェントからマルチ・ベンダ・クライアントへの応答を管理することから始まる。マルチ・ベンダ環境では、複数のベンダのそれぞれが、すべてのベンダが開発した役割における同じ論理(たとえば、エージェントまたはクライアント)を実装しようと試みている。典型的なSAN環境は、マルチ・ベンダ環境を含む。したがって、「マルチ・ベンダ・クライアント」という用語は、クライアントまたはクライアントのサブセットのそれぞれを異なるベンダが開発した可能性があることを示すのに使用する。「マルチ・ベンダ・エージェント」という用語は、エージェントまたはエージェントのサブセットのそれぞれを異なるベンダが開発した可能性があることを示すのに使用する。
ロック・マネージャでは、各マルチ・ベンダ・クライアントおよびマルチ・ベンダ・エージェントについての状態情報を維持する(ブロック910)。ロック・マネージャは、マルチ・ベンダ・エージェントの拒否したロック要求に関するキューイングを管理する(ブロック920)。ロック・マネージャは、ハートビート機能を実行して、マルチ・ベンダ・クライアントおよびマルチ・ベンダ・エージェントが正しく機能するようにする(ブロック930)。
図19に、本発明の好ましい実施形態による、トランザクション・マネージャの実装する論理を示している。制御は、ブロック1000で、トランザクション・マネージャが、あるトランザクションが異種(heterogeneous)分散環境内で始まっているという標示を受け取ることから始まる。異種分散環境とは、クライアント、トランザクション・マネージャ、ロック・マネージャ、およびエージェント、または、こうした役割のサブセットが、同じまたは異なるベンダ製のものである環境である。ブロック1010で、トランザクション・マネージャは、そのトランザクションに関する操作識別子を生成する。ブロック1020で、トランザクション・マネージャは、その操作識別子で識別されるトランザクションに対する動作のログを記録するが、この動作は、要求、(ロールバックで使用するための)対応する逆の要求、およびロック許可を含む。たとえば、ある要求は「ボリュームXを作成する」ものであることがあるが、この場合、対応する逆の要求は「ボリュームXを削除する」となるはずである。ブロック1030で、トランザクション・マネージャは、そのトランザクションに関するコミット処理を行う。ブロック1040で、トランザクション・マネージャは、そのトランザクションに関するロールバック処理を、必要な場合には行う。
図20および図21に、本発明の好ましい実施形態による、ある資源をロックするのにどの操作識別子を使用すべきかを決定するときにカスケーディング・エージェントの実行する論理を示している。図20において、制御は、ブロック1100で、第1のエージェントが、関連付けられている操作識別子をもつクライアントが第1のエージェントの制御する資源をロックするロック要求を受け取ることから始まる。第1のエージェントは、第1のエージェントの制御する資源のロックを、クライアントに関連付けられている操作識別子によって行う(ブロック1102)。すなわち、このロックは、クライアントに関連付けられている操作識別子に関連付けられている。その資源のロックを同じ操作識別子によって行う別の要求を受け取った場合、そのロック要求は許可される。
第1のエージェントは、第2のエージェントの制御する追加の資源のロックを、そのクライアントの要求を処理するための同じ操作識別子によって行うべきかどうかの判定を、第2のエージェント上で行うべき操作が、そのクライアントの要求の完了するときまでに完了しなければならないかどうかに基づいて行う(ブロック1104)。すなわち、第2のエージェント上で行うべき操作が、クライアントの要求が完了するときまでに完了しなければならない場合、第2のエージェントの制御する追加の資源は、同じ操作識別子によってロックされる。ブロック1106で、追加の資源を同じ操作識別子でロックすべきであると判定された場合には、処理はブロック1108へと続き、そうでない場合、処理はブロック1118へと続く。
ブロック1108で、第1のエージェントは、ロック要求を第2のエージェントのロック・マネージャへと送って、追加の資源を同じ操作識別子によってロックする。ブロック1110で、第2のエージェントのロック・マネージャは、ロックの衝突が存在するかどうかを判定する。ロックの衝突が存在する場合、処理はブロック1114へと続き、そうでない場合、処理はブロック1112へと続く。ブロック1114で、第2にエージェントのロック・マネージャが、ロック要求をキューイングする。ブロック1112で、第2のエージェントのロック・マネージャは、ロック要求を第2のエージェントへと渡す。第2のエージェントは、第2のエージェントの制御する資源を、同じ操作識別子によってロックする(ブロック1116)。
ブロック1118で、第1のエージェントは、そのロック・マネージャから新しい操作識別子を得る。第1のエージェントは、第2のエージェントのロック・マネージャに通知を送って、追加の資源を新しい操作識別子によってロックする(ブロック1120)。ブロック1122で、第2のエージェントのロック・マネージャは、ロックの衝突が存在するかどうかを判定する。ロックの衝突が存在する場合、処理はブロック1126へと続き、そうでない場合、処理はブロック1124へと続く。ブロック1126で、第2のエージェントのロック・マネージャは、ロック要求をキューイングする。ブロック1124で、第2のエージェントのロック・マネージャは、ロック要求を第2のエージェントへと渡す。第2のエージェントでは、第2のエージェントの制御する資源を、新しい操作識別子によってロックする(ブロック1128)。
図22および図23に、本発明の好ましい実施形態による、第1のエージェントが、第2のエージェントの制御する資源をロックし、第2のエージェントが、その資源をロックする別の要求を受け取るときに、カスケーディング・エージェントの実行する論理を示している。図22において、制御は、ブロック1150で、第1のエージェントが、関連付けられている操作識別子をもつクライアントが、第2のエージェントの制御する資源をロックする要求を受け取ることから始まる。第1のエージェントは、第2のエージェントの制御する資源を、そのクライアントに関連付けられている操作識別子によってロックする(ブロック1152)。図23において、制御は、ブロック1154で、第2のエージェントが、クライアントが、第2のエージェントの制御する、資源を操作識別子によってロックする要求を受け取ることから始まる(ブロック1154)。第2のエージェントは、その資源がすでに同じ操作識別子によってロックされているかどうかを判定する(ブロック1156)。本発明の好ましい一実施形態では、第2のエージェントは、その資源がすでに同じ操作識別子によってロックされているかどうかを判定するために、第1の操作識別子を、その資源をロックするのに使用した操作識別子と突き合わせる。ブロック1158で、その資源がすでに同じ操作識別子によってロックされていた場合、処理はブロック1160へと続き、そうでない場合、処理はブロック1162へと続く。ブロック1160で、第2のエージェントは、その資源が同じ操作識別子によってロックされていることを、クライアントに通知する。ブロック1162で、第2のエージェントは、ロック要求の拒否をそのロック・マネージャへと送る。ブロック1164で、第2のエージェントのロック・マネージャは、そのロック要求をキューイングする。
図24に、本発明の好ましい実施形態による、クライアントによる異なるレベルロッキングを可能にするロック・マネージャの実装する論理を示している。制御は、ブロック1200で、ロック・マネージャがクライアントからコマンドを受け取ることから始まる。ブロック1210で、ロック・マネージャは、操作識別子に、その操作識別子をトランザクション・マネージャが生成したことをプレフィクスが示すコマンドが与えられているかどうかを判定する。ブロック1220で、トランザクション・マネージャがその操作識別子を生成したと判定された場合、処理はブロック1230に続き、そうでない場合、処理はブロック1240に続く。ブロック1230で、ロック・マネージャは、トランザクション・レベルのロッキングで動作する。ブロック1240で、ロック・マネージャは、クライアントがロック(すなわち、ロックならどれでも)を解放するまで、隔離性レベルのロッキングで動作する。クライアントがロックを解放した後、ロック・マネージャはクライアント制御レベルのロッキングで動作する。
図25に、本発明の好ましい実施形態による、あるエージェントの実装する論理を示している。制御は、ブロック1300で、あるエージェントが、1つまたは複数の動作を含む操作を受け取ることから始まる。この操作は複数の同時非協働的クライアントからの複数のエージェントにまたがって保護されており、ここで1つの操作は1つまたは複数の動作を含む。特に、各読み取り保護動作に対しては、ある資源に対する読み取りロックが保持され、書き込み動作は、その読み出しロックで保護されている資源への書き込みを妨げられる(ブロック1310)。各書き込み保護動作に対しては、ある資源に対する変更ロックが保持され、変更ロックで保護されている資源に対する書き込み動作ならびに読み取りおよび変更ロックは妨げられる。
図26に、本発明の好ましい実施形態による、デッドロックを解決するためにロック・マネージャ内に実装する論理を示している。制御は、ブロック1400で、ロック・マネージャが、第1の操作識別子による、第2の操作識別子によってすでにロックされている資源(たとえば、オブジェクト)に対するロック要求の拒否を受け取ることから始まる。このロック要求は、クライアントが送り、エージェントが拒否したものである。ロック・マネージャは、ロック要求を、ロック・キュー・タイムアウト期間をもつキューに入れる(ブロック1410)。ブロック1412で、ロック・マネージャは、そのロック要求が、ロック・キュー・タイムアウト期間内にキューの先頭にあるかどうかを判定する。そうである場合、処理はブロック1420へと続き、そうでない場合、処理はブロック1414へと続く。呼び方を簡単にするために、本明細書では、キューの「先頭」(top)は、ロック・マネージャがロック要求の処理をそこから行えるキューの位置を指すのに使用している。ブロック1414で、ロック・マネージャは、ロック・キュー・タイムアウト期間が時間切れになったかどうかを判定する。そうである場合、処理はブロック1450へと続き、そうでない場合、処理はブロック1412へと続く。
ブロック1420で、ロック・マネージャはロック要求を再発行する。特に、ブロック1420で、ロック・マネージャがロック要求を再発行する理由は、そのロックの解放が、そのロックをその前に保持していたものによって行われており、キューイングされたロック要求がロック・キュー・タイムアウト期間内にキューの先頭へと移動したためである。ロック・マネージャでは、キューイングされたロック要求の処理を、それがキューの先頭に来た後行うことに注意されたい。ブロック1430で、ロック要求の許可がロック・キュー・タイムアウト期間内に行われた場合、処理はブロック1440へと続き、そうでない場合、処理はブロック1412へと続く。ブロック1440で、ロック・マネージャは、そのロック要求をキューから取り除く。ロックが許可されなかった場合、ロック要求を再びキューイングする(re-queued)。このようにして、すでにロックされているある資源に対するロック要求は、後で許可されるか、または終了させられ、デッドロック状況が回避される。代替実施形態では、ブロック1410で、ロック要求のキューへの再挿入を、そのロック要求がそれまでに何回キューに入れられているかなど、1つまたは複数の要因に基づいて行うことができる。
特に、ロック要求がキューの先頭に達し再発行されると、ロック要求は、通常、後で許可される。しかし、ロッキング非対応クライアントが所望のロックを得る場合があるかもしれない。したがって、再発行されたロック要求をエージェントが拒否することになることはあり得る。この場合、ロック要求はキュー上に戻され、「ロッキング非対応クライアント・ロック」がクリアされるのを待つ。エージェントからロック・マネージャへと流れるAgentAvailメッセージにより、そのロックがロッキング非対応クライアントによって解放されていることの標示が与えられる。ロック・マネージャがAgentAvailメッセージを得ると、ロック・マネージャではそのことを知ってロック要求を再発行し、またはキュー上のロック要求がタイムアウトしていた場合には、ロック・マネージャではそのメッセージを単に破棄する。
実装に関するその他の詳細
ロックおよびトランザクションを管理するための説明した技法は、方法、装置、または製造物として、ソフトウェア、ファームウェア、ハードウェア、またはそのどのような組み合わせも製造する、標準のプログラミングのまたは工学上の技法あるいはそのどちらを用いても実装することができる。本明細書で使用する「製造物」(article of manufacture)という用語は、ハードウェア論理(たとえば、集積回路チップ、PGA(ProgrammableGate Array)、ASIC(Application Specific Integrated Circuit)など)、または、磁気ストレージ媒体(たとえば、ハード・ディスク・ドライブ、フロッピー(R)・ディスク、テープなど)、光学ストレージ(CDROM、光ディスクなど)、揮発性および不揮発性のメモリ装置(たとえば、EEPROM、ROM、PROM、RAM、DRAM、SRAM、ファームウェア、プログラマブル・ロジック(programmablelogic)など)などのコンピュータ可読媒体の形で実装されるコードまたは論理を指す。コンピュータ可読媒体内のコードは、プロセッサによってアクセスおよび実行される。好ましい実施形態を実装するコードは、さらに、伝送媒体を通してまたはファイル・サーバからネットワークを介してアクセス可能である。そのような場合、コードを実装する製造物は、ネットワーク伝送線、無線伝送媒体、空間を伝播する信号、電波、赤外線信号などの伝送媒体を含む。したがって、「製造物」は、コードを実施する媒体を含む。さらに、「製造物」は、コードを実施し、処理し、実行するハードウェアとソフトウェアの構成要素の組み合わせを含む。もちろん、多くの変更をこの構成に対して行うことができること、および、製造物は当技術分野に知られているどのような情報担持媒体も含むことができることが当業者には理解されよう。
図17〜26の論理では、特定の順序で起きる特定の操作を説明している。代替実施形態では、論理動作の特定のものは、変更するにせよ削除するにせよ、異なる順序で実行することができる。しかも、複数のステップを上で説明した論理には追加しても説明した実施形態に適合することが可能である。さらに、本明細書で説明する動作は逐次的に起きてもよく、または特定の動作を並列して処理することができ、あるいは単一プロセスによって行われると説明した動作は、分散プロセスによって行うこともできる。
図17〜図26の論理を、ソフトウェアの形で実装するものとして説明した。この論理は、ホスト・システムまたはアプリケーション・プログラムのオペレーティング・システムの一部とすることができる。さらに別の実施形態では、この論理をストレージ領域内、あるいはROM(read only memory)または他の直接結線(hardwired)型の装置内に維持することができる。好ましい論理は、ハード・ディスク・ドライブ内に、またはプログラマブルおよび非プログラマブルのゲート・アレイ論理として実装することができる。
図27に、本発明の好ましい実施形態による役割(roles)110、120、130、140A...Nのアーキテクチャを示している。ロッキング対応クライアント110,トランザクション管理サーバ120、ロック管理サーバ130、およびロック管理エージェント140A...Nは、それぞれ、プロセッサ1502(たとえば、マイクロプロセッサ)を有するコンピュータ・アーキテクチャ1500、メモリ1504(たとえば、揮発性メモリ装置)、およびストレージ1506(たとえば、磁気ディスク・ドライブ、光ディスク・ドライブ、テープ・ドライブなどの不揮発性ストレージ)の形で実装することができる。ストレージ1506は、内部ストレージ装置あるいは外付けまたはネットワーク・アクセス可能なストレージを含むことができる。ストレージ1506内のプログラムは、メモリ1504へとロードされ、プロセッサ1502によって当技術分野に知られている形で実行される。このアーキテクチャは、ネットワークとの通信を可能にするネットワーク・カード1508をさらに含む。入力装置1510は、ユーザ入力をプロセッサ1502に提供するために使用され、キーボード、マウス、ペン・スタイラス、マイクロフォン、触覚感知ディスプレイ画面、または、当技術分野に知られている他のどのようなアクティベーションまたは入力機構を含むことができる。出力装置1512は、プロセッサ1502、または、ディスプレイ・モニタ、プリンタ、ストレージなどの他の構成要素から送信された情報を描画する能力をもつ。
本発明の好ましい実施形態の以上の説明は、例示および説明を目的として提示しており、網羅的であること、または本発明を開示した厳密な形式に制限することを意図するものではない。
本発明の好ましい実施形態による、4つの異なる役割を含むロッキングおよびトランザクション管理のための参照モデルを示す構成図である。 本発明の好ましい実施形態による、トランザクション・マネージャのあるロッキング環境を示す図である。 本発明の好ましい実施形態による、トランザクション・マネージャのないロッキング環境を示す図である。 本発明の好ましい実施形態による、ロッキング非対応クライアントのあるロッキング環境を示す図である。 本発明の好ましい実施形態による、カスケーディング・ロッキングを示す図である。 本発明の好ましい実施形態によるストレージの不十分な仮想化システム上でのボリュームの作成を示す図である。 本発明の好ましい実施形態による、ストレージの不十分な仮想化システム上でのボリュームの作成のための一連の動作におけるロッキングのステップおよび主要なクライアント動作要求の表である。 本発明の好ましい実施形態による、ある仮想化システムから別の仮想化システムへのストレージの移動を示す図である。 本発明の好ましい実施形態による、ある仮想化システムから別の仮想化システムへのストレージの移動のための隔離性レベルのロッキングの下で行う一連の動作におけるロッキングのステップおよび主要なクライアント動作要求の表である。 本発明の好ましい実施形態による、ある仮想化システムから別の仮想化システムへのストレージの移動のための隔離性レベルのロッキングの下で行う一連の動作におけるロッキングのステップおよび主要なクライアント動作要求の表である。 本発明の好ましい実施形態による、仮想化システムから論理ボリューム・マネージャへのストレージの移動を示す図である。 本発明の好ましい実施形態による、仮想化システムから論理ボリューム・マネージャへのストレージの移動のための隔離性レベルのロッキングの下で行う一連の動作におけるロッキングのステップおよび主要なクライアント動作要求の表である。 本発明の好ましい実施形態による、仮想化システムから論理ボリューム・マネージャへのストレージの移動のための隔離性レベルのロッキングの下で行う一連の動作におけるロッキングのステップおよび主要なクライアント動作要求の表である。 本発明の好ましい実施形態による、論理ボリュームの作成、および複数のソースからのその論理ボリュームのプロヴィジョンを示す図である。 本発明の好ましい実施形態による、論理ボリュームの作成、および複数のソースからのその論理ボリュームのプロヴィジョンのための隔離性レベルのロッキングの下で行う一連の動作におけるロッキングのステップおよび主要なクライアント動作要求の表である。 本発明の好ましい実施形態による、論理ボリュームの作成、および複数のソースからのその論理ボリュームのプロヴィジョンのための隔離性レベルのロッキングの下で行う一連の動作におけるロッキングのステップおよび主要なクライアント動作要求の表である。 本発明の好ましい実施形態による、ロックおよびトランザクション管理(LTM、lockand transaction management)システムにおいてロックを処理するために実装する論理を示す図である。 本発明の好ましい実施形態による、ロック・マネージャの実装する論理を示す図である。 本発明の好ましい実施形態による、トランザクション・マネージャの実装する論理を示す図である。 本発明の好ましい実施形態による、ある資源をロックするのにどの操作識別子を使用すべきかを決定するときにカスケーディング・エージェントの実行する論理を示す図である。 本発明の好ましい実施形態による、ある資源をロックするのにどの操作識別子を使用すべきかを決定するときに、カスケーディング・エージェントの実行する論理を示す図である。 本発明の好ましい実施形態による、第1のエージェントが、第2のエージェントの制御する資源をロックし、第2のエージェントが、その資源をロックする別の要求を受け取るときに、カスケーディング・エージェントの実行する論理を示す図である。 本発明の好ましい実施形態による、第1のエージェントが、第2のエージェントの制御する資源をロックし、第2のエージェントが、その資源をロックする別の要求を受け取るときに、カスケーディング・エージェントの実行する論理を示す図である。 本発明の好ましい実施形態による、クライアントによるロッキングの異なるレベルを可能にするロック・マネージャの実装する論理を示す図である。 本発明の好ましい実施形態による、あるエージェントの実装する論理を示す図である。 本発明の好ましい実施形態による、デッドロックを解決するためにロック・マネージャ内に実装する論理を示す図である。 本発明の好ましい実施形態によるロッキング対応クライアント、トランザクション管理サーバ、ロック管理サーバ、およびロック管理エージェントのアーキテクチャを示す図である。

Claims (12)

  1. クライアント・アプリケーションに対して第1エージェント及び第2エージェントがカスケードされており前記第1エージェントが前記第2エージェントに対するクライアントとして働くシステムにおける資源をロックする方法であって、
    (i)前記第1エージェントが、第1操作識別子に関連づけられているクライアント・アプリケーションが前記第1エージェントの制御のもとにある資源をロックするための前記クライアント・アプリケーションからの第1ロック要求を受け取るステップと、
    (ii)前記第1エージェントが、該第1エージェントの制御のもとにある前記資源のロックを前記第1操作識別子によって行うステップと、
    (iii)前記第1エージェントが、前記第2エージェントの制御のもとにある追加の資源のロックを、前記クライアント・アプリケーションからの第1ロック要求を処理するために前記第1操作識別子によって行うかどうかの判定を、前記第2エージェント上で行うべき操作が前記クライアント・アプリケーションからの第1ロック要求が完了するときまでに完了しなければならないかどうかに基いて行う判定ステップと、
    (iv)前記追加の資源を前記第1操作識別子によってロックすべきであると判定されたことに応答して、前記第2エージェントが該第2エージェントの制御のもとにある前記追加の資源を前記第1操作識別子によりロックするステップと、
    (v)前記追加の資源を前記第1操作識別子によってロックすべきでないと判定されたことに応答して、前記第1のエージェントが第2操作識別子を取得するステップと、
    (vi)前記第2エージェントが、該第2エージェントの制御のもとにある前記追加の資源を前記第2操作識別子によりロックするステップとを含む方法。
  2. 前記ステップ(iv)が、
    (イ)前記追加の資源を前記第1操作識別子によってロックすべきであると判定されたことに応答して、前記第1エージェントが、前記追加の資源を前記第1操作識別子によってロックするために第2ロック要求を前記第2エージェントのロック・マネージャに送るステップと、
    (ロ)前記第2エージェントのロック・マネージャが、ロックの衝突があるかどうかを判定するステップと、
    (ハ)前記ロックの衝突がないことに応答して、前記第2エージェントのロック・マネージャが、前記第2ロック要求を前記第2エージェントに渡すステップと、
    (ニ)前記第2エージェントが該第2エージェントの制御のもとにある前記追加の資源を前記第1操作識別子によりロックするステップと、
    (ホ)前記ロックの衝突があることに応答して、前記第2エージェントのロック・マネージャが、前記第2ロック要求をキューイングするステップとを行う、請求項1に記載の方法。
  3. 前記ステップ(v)と前記ステップ(vi)との間に、
    (ヘ)前記第1エージェントが、前記追加の資源を前記第2操作識別子によってロックするために第3ロック要求を前記第2エージェントのロック・マネージャに送るステップと、
    (ト)前記第2エージェントのロック・マネージャが、ロックの衝突があるかどうかを判定するステップと、
    (チ)前記ロックの衝突がないことに応答して、前記第2エージェントのロック・マネージャが、前記第3ロック要求を前記第2エージェントに渡すステップとを行い、そして
    (リ)前記ステップ(ト)において前記ロックの衝突があることに応答して、前記第2エージェントのロック・マネージャが、前記第3ロック要求をキューイングするステップとを行う、請求項1に記載の方法。
  4. 前記キューイングするステップの次に、前記キューイングを管理するロック・マネージャが、
    (a)前記ロック要求がロック・キューのタイムアウト期間内に前記ロック・キューの先頭にあるかどうかを判定するステップと、
    (b)前記ロック要求がロック・キューのタイムアウト期間内に前記ロック・キューの先頭にあることに応答して、前記ロック要求を再発行するステップと、
    (c)前記ロック要求の許可が前記ロック・キュー・タイムアウト期間内に行われたどうかを判定するステップと、
    (d)前記ロック要求の許可が前記ロック・キュー・タイムアウト期間内に行われたことに応答して、前記ロック要求を前記ロック・キューから取り除くステップと、
    (e)前記ロック要求がロック・キューのタイムアウト期間内に前記ロック・キューの先頭にないことに応答して、前記ロック・キュー・タイムアウト期間が時間切れになっているかどうかを判定するステップと、
    (f)前記ロック・キュー・タイムアウト期間が時間切れになっていることに応答して、前記ロック要求を拒否し、前記ロック・キュー・タイムアウト期間が時間切れになっていないことに応答して、前記ステップ(a)に戻るステップとを行う、請求項2又は請求項3に記載の方法。
  5. クライアント・アプリケーションに対して第1エージェント及び第2エージェントがカスケードされており前記第1エージェントが前記第2エージェントに対するクライアントとして働くシステムにおける資源をロックするプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
    コンピュータに、
    (i)前記第1エージェントが、第1操作識別子に関連づけられているクライアント・アプリケーションが前記第1エージェントの制御のもとにある資源をロックするための前記クライアント・アプリケーションからの第1ロック要求を受け取る手順と、
    (ii)前記第1エージェントが、該第1エージェントの制御のもとにある前記資源のロックを前記第1操作識別子によって行う手順と、
    (iii)前記第1エージェントが、前記第2エージェントの制御のもとにある追加の資源のロックを、前記クライアント・アプリケーションからの第1ロック要求を処理するために前記第1操作識別子によって行うかどうかの判定を、前記第2エージェント上で行うべき操作が前記クライアント・アプリケーションからの第1ロック要求が完了するときまでに完了しなければならないかどうかに基いて行う判定手順と、
    (iv)前記追加の資源を前記第1操作識別子によってロックすべきであると判定されたことに応答して、前記第2エージェントが該第2エージェントの制御のもとにある前記追加の資源を前記第1操作識別子によりロックする手順と、
    (v)前記追加の資源を前記第1操作識別子によってロックすべきでないと判定されたことに応答して、前記第1のエージェントが第2操作識別子を取得する手順と、
    (vi)前記第2エージェントが、該第2エージェントの制御のもとにある前記追加の資源を前記第2操作識別子によりロックする手順とを実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
  6. 前記手順(iv)が、
    (イ)前記追加の資源を前記第1操作識別子によってロックすべきであると判定されたことに応答して、前記第1エージェントが、前記追加の資源を前記第1操作識別子によってロックするために第2ロック要求を前記第2エージェントのロック・マネージャに送る手順と、
    (ロ)前記第2エージェントのロック・マネージャが、ロックの衝突があるかどうかを判定する手順と、
    (ハ)前記ロックの衝突がないことに応答して、前記第2エージェントのロック・マネージャが、前記第2ロック要求を前記第2エージェントに渡す手順と、
    (ニ)前記第2エージェントが該第2エージェントの制御のもとにある前記追加の資源を前記第1操作識別子によりロックする手順と、
    (ホ)前記ロックの衝突があることに応答して、前記第2エージェントのロック・マネージャが、前記第2ロック要求をキューイングする手順とを行う、請求項5に記載のコンピュータ読み取り可能な記録媒体。
  7. 前記手順(v)と前記手順(vi)との間に、
    (ヘ)前記第1エージェントが、前記追加の資源を前記第2操作識別子によってロックするために第3ロック要求を前記第2エージェントのロック・マネージャに送る手順と、
    (ト)前記第2エージェントのロック・マネージャが、ロックの衝突があるかどうかを判定する手順と、
    (チ)前記ロックの衝突がないことに応答して、前記第2エージェントのロック・マネージャが、前記第3ロック要求を前記第2エージェントに渡す手順とを行い、そして
    (リ)前記手順(ト)において前記ロックの衝突があることに応答して、前記第2エージェントのロック・マネージャが、前記第3ロック要求をキューイングする手順を行う、請求項5に記載のコンピュータ読み取り可能な記録媒体。
  8. 前記キューイングする手順の次に、前記キューイングを管理するロック・マネージャが、
    (a)前記ロック要求がロック・キューのタイムアウト期間内に前記ロック・キューの先頭にあるかどうかを判定する手順と、
    (b)前記ロック要求がロック・キューのタイムアウト期間内に前記ロック・キューの先頭にあることに応答して、前記ロック要求を再発行する手順と、
    (c)前記ロック要求の許可が前記ロック・キュー・タイムアウト期間内に行われたどうかを判定する手順と、
    (d)前記ロック要求の許可が前記ロック・キュー・タイムアウト期間内に行われたことに応答して、前記ロック要求を前記ロック・キューから取り除く手順と、
    (e)前記ロック要求がロック・キューのタイムアウト期間内に前記ロック・キューの先頭にないことに応答して、前記ロック・キュー・タイムアウト期間が時間切れになっているかどうかを判定する手順と、
    (f)前記ロック・キュー・タイムアウト期間が時間切れになっていることに応答して、前記ロック要求を拒否し、前記ロック・キュー・タイムアウト期間が時間切れになっていないことに応答して、前記ステップ(a)に戻る手順とを行う、請求項6又は請求項7に記載のコンピュータ読み取り可能な記録媒体。
  9. クライアント・アプリケーションに対して第1エージェント及び第2エージェントがカスケードされており前記第1エージェントが前記第2エージェントに対するクライアントとして働くシステムであって、
    (i)前記第1エージェントが、第1操作識別子に関連づけられているクライアント・アプリケーションが前記第1エージェントの制御のもとにある資源をロックするための前記クライアント・アプリケーションからの第1ロック要求を受け取り、
    (ii)前記第1エージェントが、該第1エージェントの制御のもとにある前記資源のロックを前記第1操作識別子によって行い、
    (iii)前記第1エージェントが、前記第2エージェントの制御のもとにある追加の資源のロックを、前記クライアント・アプリケーションからの第1ロック要求を処理するために前記第1操作識別子によって行うかどうかの判定を、前記第2エージェント上で行うべき操作が前記クライアント・アプリケーションからの第1ロック要求が完了するときまでに完了しなければならないかどうかに基いて行い、
    (iv)前記追加の資源を前記第1操作識別子によってロックすべきであると判定されたことに応答して、前記第2エージェントが該第2エージェントの制御のもとにある前記追加の資源を前記第1操作識別子によりロックし、
    (v)前記追加の資源を前記第1操作識別子によってロックすべきでないと判定されたことに応答して、前記第1のエージェントが第2操作識別子を取得し、
    (vi)前記第2エージェントが、該第2エージェントの制御のもとにある前記追加の資源を前記第2操作識別子によりロックする、システム。
  10. (イ)前記追加の資源を前記第1操作識別子によってロックすべきであると判定されたことに応答して、前記第1エージェントが、前記追加の資源を前記第1操作識別子によってロックするために第2ロック要求を前記第2エージェントのロック・マネージャに送り、
    (ロ)前記第2エージェントのロック・マネージャが、ロックの衝突があるかどうかを判定し、
    (ハ)前記ロックの衝突がないことに応答して、前記第2エージェントのロック・マネージャが、前記第2ロック要求を前記第2エージェントに渡し、
    (ニ)前記第2エージェントが該第2エージェントの制御のもとにある前記追加の資源を前記第1操作識別子によりロックし、
    (ホ)前記ロックの衝突があることに応答して、前記第2エージェントのロック・マネージャが、前記第2ロック要求をキューイングする、請求項9に記載のシステム。
  11. (ヘ)前記第1エージェントが、前記追加の資源を前記第2操作識別子によってロックするために第3ロック要求を前記第2エージェントのロック・マネージャに送り、
    (ト)前記第2エージェントのロック・マネージャが、ロックの衝突があるかどうかを判定し、
    (チ)前記ロックの衝突がないことに応答して、前記第2エージェントのロック・マネージャが、前記第3ロック要求を前記第2エージェントに渡し、そして
    (リ)前記(ト)において前記ロックの衝突があることに応答して、前記第2エージェントのロック・マネージャが、前記第3ロック要求をキューイングする、請求項9に記載のシステム。
  12. 前記キューイングを管理するロック・マネージャが、
    (a)前記ロック要求がロック・キューのタイムアウト期間内に前記ロック・キューの先頭にあるかどうかを判定し、
    (b)前記ロック要求がロック・キューのタイムアウト期間内に前記ロック・キューの先頭にあることに応答して、前記ロック要求を再発行し、
    (c)前記ロック要求の許可が前記ロック・キュー・タイムアウト期間内に行われたどうかを判定し、
    (d)前記ロック要求の許可が前記ロック・キュー・タイムアウト期間内に行われたことに応答して、前記ロック要求を前記ロック・キューから取り除き、
    (e)前記ロック要求がロック・キューのタイムアウト期間内に前記ロック・キューの先頭にないことに応答して、前記ロック・キュー・タイムアウト期間が時間切れになっているかどうかを判定し、
    (f)前記ロック・キュー・タイムアウト期間が時間切れになっていることに応答して、前記ロック要求を拒否し、前記ロック・キュー・タイムアウト期間が時間切れになっていないことに応答して、前記(a)の動作に戻る、請求項10又は請求項11に記載のシステム。
JP2006506218A 2003-05-01 2004-05-04 資源をロックする方法、プログラム及びシステム Expired - Fee Related JP4543034B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/428,758 US7496574B2 (en) 2003-05-01 2003-05-01 Managing locks and transactions
PCT/GB2004/001927 WO2004097632A2 (en) 2003-05-01 2004-05-04 Managing locks and transactions

Publications (2)

Publication Number Publication Date
JP2006525573A JP2006525573A (ja) 2006-11-09
JP4543034B2 true JP4543034B2 (ja) 2010-09-15

Family

ID=33310489

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006506218A Expired - Fee Related JP4543034B2 (ja) 2003-05-01 2004-05-04 資源をロックする方法、プログラム及びシステム

Country Status (8)

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

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
WO2003007674A2 (en) 2001-07-16 2003-01-30 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
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
EP1652040A4 (en) * 2003-07-11 2010-08-11 Computer Ass Think Inc DISTRIBUTED METHOD AND SYSTEM FOR MANAGING NETWORKED EQUIPMENT
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
US8055711B2 (en) 2004-10-29 2011-11-08 Emc Corporation Non-blocking commit protocol systems and methods
US8238350B2 (en) 2004-10-29 2012-08-07 Emc Corporation Message batching with checkpoints 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
US20080270770A1 (en) * 2005-01-24 2008-10-30 Marc Vertes Method for Optimising the Logging and Replay of Mulit-Task Applications in a Mono-Processor or Multi-Processor Computer System
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
US7581225B2 (en) * 2005-04-29 2009-08-25 Microsoft Corporation Multithreading with concurrency domains
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
US7886269B2 (en) * 2005-04-29 2011-02-08 Microsoft Corporation XML application framework
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
US20070214142A1 (en) * 2006-03-10 2007-09-13 Prabhakar Goyal System and method for providing transaction support across a plurality of data structures
US20070214457A1 (en) * 2006-03-10 2007-09-13 Prabhakar Goyal System and method for automated recovery of data in a batch processing system
US8838623B2 (en) * 2006-06-22 2014-09-16 International Business Machines Corporation System and method for locking context of sets of members in crosstabs
US7899800B2 (en) 2006-08-18 2011-03-01 Isilon Systems, Inc. Systems and methods for providing nonlinear journaling
US7822932B2 (en) 2006-08-18 2010-10-26 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
US20080082761A1 (en) * 2006-09-29 2008-04-03 Eric Nels Herness Generic locking service for business integration
US7921075B2 (en) * 2006-09-29 2011-04-05 International Business Machines Corporation Generic sequencing 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
US8966080B2 (en) 2007-04-13 2015-02-24 Emc Corporation Systems and methods of managing resource utilization on a threaded computer system
US7900015B2 (en) 2007-04-13 2011-03-01 Isilon Systems, Inc. Systems and methods of quota accounting
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
US7890472B2 (en) * 2007-09-18 2011-02-15 Microsoft Corporation Parallel nested transactions in transactional memory
US7840530B2 (en) * 2007-09-18 2010-11-23 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
CN102301368B (zh) * 2009-02-06 2014-01-22 国际商业机器公司 用于保持数据完整性的设备
US20100254388A1 (en) * 2009-04-04 2010-10-07 Oracle International Corporation Method and system for applying expressions on message payloads for a resequencer
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
US8661083B2 (en) * 2009-04-04 2014-02-25 Oracle International Corporation Method and system for implementing sequence start and increment values for a 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
US9124448B2 (en) * 2009-04-04 2015-09-01 Oracle International Corporation Method and system for implementing a best efforts 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
US8209699B2 (en) * 2009-07-10 2012-06-26 Teradata Us, 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
US20120278366A1 (en) * 2011-04-29 2012-11-01 Siemens Product Lifecycle Management Software Inc. Creation and use of orphan objects
CN102156928A (zh) * 2011-04-29 2011-08-17 浪潮通信信息系统有限公司 一种通过业务逻辑锁进行系统并发控制的方法
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
JP6461167B2 (ja) 2014-01-21 2019-01-30 オラクル・インターナショナル・コーポレイション アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムおよび方法
US9600324B2 (en) * 2014-04-28 2017-03-21 Oracle International Corporation System and method for supporting transaction affinity based on 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 阿里巴巴集团控股有限公司 一种资源锁定方法及装置
US10299232B2 (en) 2014-10-15 2019-05-21 Xuemin Shen 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
EP3220282B1 (en) 2015-12-14 2019-05-08 Huawei Technologies Co., Ltd. Method for managing lock in cluster, lock server and client
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
US10235406B2 (en) 2015-12-15 2019-03-19 Microsoft Technology Licensing, Llc Reminder processing 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
KR102016702B1 (ko) * 2015-12-30 2019-08-30 후아웨이 테크놀러지 컴퍼니 리미티드 잠금 획득 요청을 처리하는 방법 및 서버
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 大陸商北京集創北方科技股份有限公司 觸控數據傳輸方法、觸控數據傳輸控制電路及資訊處理裝置

Family Cites Families (105)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5175852A (en) 1987-02-13 1992-12-29 International Business Machines Corporation Distributed file access structure lock
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
JPH02195453A (ja) 1989-01-25 1990-08-02 Toshiba Corp ファイルアクセス制御方式
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
US5440732A (en) * 1993-02-05 1995-08-08 Digital Equipment Corp., Pat. Law Gr. Key-range locking with index trees
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
JP3681415B2 (ja) * 1993-03-30 2005-08-10 富士通株式会社 デッドロック検出装置
EP0618532B1 (en) * 1993-03-30 2000-01-26 Fujitsu Limited Deadlock detecting device
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
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
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
US6275953B1 (en) 1997-09-26 2001-08-14 Emc Corporation Recovery from failure of a data processor in a network server
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
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
SE521433C2 (sv) * 1998-07-22 2003-11-04 Ericsson Telefon Ab L M En metod för hantering av risken för en total låsning mellan samtidiga transaktioner i en databas
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
CN1327254C (zh) * 1998-11-26 2007-07-18 住友电气工业株式会社 光纤以及包含该光纤的传光系统
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
AU2001232565A1 (en) * 2000-02-11 2001-08-20 Telefonaktiebolaget Lm Ericsson (Publ) Active cooperation deadlock detection system/method in a distributed database network
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
US6718448B1 (en) * 2000-11-28 2004-04-06 Emc Corporation Queued locking of a shared resource using multimodal lock types
US6757769B1 (en) * 2000-11-28 2004-06-29 Emc Corporation Cooperative lock override procedure
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
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
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

Also Published As

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

Similar Documents

Publication Publication Date Title
JP4543034B2 (ja) 資源をロックする方法、プログラム及びシステム
US7289992B2 (en) Method, system, and program for lock and transaction management
EP0972240B1 (en) An agent-implemented locking mechanism
JP2705717B2 (ja) ロック装置及び方法、ロック要求の細分性を判別するための装置及び方法
US5339427A (en) Method and apparatus for distributed locking of shared data, employing a central coupling facility
US20040199734A1 (en) Deadlock resolution through lock requeuing
US6145006A (en) Method and apparatus for coordinating locking operations of heterogeneous host computers accessing a storage subsystem
US20040034673A1 (en) Obstruction-free mechanism for atomic update of multiple non-contiguous locations in shared memory
US6772154B1 (en) Implementation of nested databases using flexible locking mechanisms
KR100317402B1 (ko) 서버자원에대한병행억세스제어를위한임의의로킹모드를제공하기위한장치,방법및컴퓨터프로그램
KR20050029202A (ko) 스토리지 영역 네트워크에서의 비동기 메시징 처리를 위한시스템 및 방법
EP0917050B1 (en) State-based object transition control and nested locking
Nett et al. Nested dynamic actions: how to solve the fault containment problem in a cooperative action model
Kang et al. Reliable nested transaction processing for multidatabase systems
Yao A Java Implementation of a Linda-like Tuplespace System with Nested Transactions
Yao A Java implementation of a Linda-like Tuplespace system with nested transactions: a thesis presented in partial fulfilment of the requirements for the degree of Master of Science in Computer Science at Massey University, Albany, New Zealand
KR20050060806A (ko) 메시징을 이용한 이질형 정보 자원 통합 멀티데이터베이스 시스템 및 그 전역 동시성 제어 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070416

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100223

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100323

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100526

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100622

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100628

R150 Certificate of patent or registration of utility model

Ref document number: 4543034

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130702

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees