JPH06342396A - 共有データのアクセスを直列化する方法及び装置 - Google Patents

共有データのアクセスを直列化する方法及び装置

Info

Publication number
JPH06342396A
JPH06342396A JP3162417A JP16241791A JPH06342396A JP H06342396 A JPH06342396 A JP H06342396A JP 3162417 A JP3162417 A JP 3162417A JP 16241791 A JP16241791 A JP 16241791A JP H06342396 A JPH06342396 A JP H06342396A
Authority
JP
Japan
Prior art keywords
data store
lock
resource
data
primary
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP3162417A
Other languages
English (en)
Inventor
Joseph S Insalaco
ジョセフ・サルバトール・インサラコ
Michael D Swanson
マイケル・ダスティン・スワンソン
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 JPH06342396A publication Critical patent/JPH06342396A/ja
Pending legal-status Critical Current

Links

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
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Abstract

(57)【要約】 (修正有) 【目的】データの整合性を維持しながら複数のシステム
間でデータを共有する。 【構成】ユーザ・データ402A,Bはプライマリ・デ
ータ・ストアとオプションの代替データ・ストアに維持
される。各データ・ストアは1組のロック・ブロック4
01A〜Nを含み、各ロック・ブロックが、データを共
有する各システムに対応する。ロック・ブロックの内容
は通常は時刻値TODであり、関連データのシステム所
有権の状態を示す。データの整合性を保証するためにサ
フィクス・レコード404A,Bとチェック・レコード
403が用いられる。矛盾するサフィクス・レコードや
チェック・レコードから導かれたエラー指示を用いて、
データ復旧メカニズムがトリガされる。復旧メカニズム
は、同期化プロセスの間にプライマリへのアクセスを保
留する必要なくプライマリとセカンダリのデータ・スト
アの同期をとることができる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、コンピュータ及びコ
ンピュータ・コンプレクスのオペレーティング・システ
ムに関し、特に、コンピュータまたはコンピュータ・コ
ンプレクスの各ユーザ間でデータを共有するメカニズム
とプロセスに関する。
【0002】
【従来の技術】マルチプロセサ・コンプレクスまたはシ
スプレクス(sysplex)におけるデータの共有は、共有す
べきデータのロケーション(メイン・ストレージまたは
DASDなど)、可能なアクセスの性質(読み出し専
用、読み出し・書き込みなど)、及び共有の粒度(デバ
イス・レベルの共有、データ・セット・レベルの共有、
レコード・レベルの共有など)に応じて様々な方法で行
われる。実質上すべての共有メカニズムに共通するのは
ロッキング・メカニズムである。ロッキング・メカニズ
ムは、あるユーザによって変更されたデータが、変更が
完全になるまでは別のユーザによって参照されないよう
にする。ロッキング・メカニズムの例として、IBM
MVSシステムでは、DASDデータ・セットへのアク
セスを直列化するためにRESERVEメカニズムが用
いられる。MVS/ESA SPL: ApplicationDevelopment Macr
o Reference (GC28-1857-1) に述べられているように、
RESERVEでは、特定のシステム上の特定のタスク
で使用するデバイスを予約することができる。このメカ
ニズムを使えば、予約(RESERVE)されたデバイ
ス上のすべてのデータ・セットを、それを所有するタス
クがデバイスを開放するまで、他のシステム上の他のタ
スクが使用できる。データの整合性は保証されるが、こ
のメカニズムの粒度が細かいものでないことは明らかで
ある。ENQ/DEQ(上記と同じ出版物に説明されて
いる)というメカニズムでは、ユーザが、順次に使用で
きるリソース(すなわちユーザ間で共有できるが、一度
に1ユーザしかアクセスできないリソース)を定義して
同じように制御することができる。また、IBM Technica
l Disclosure Bulletin、Vol. 22、No. 6(1979年11月
号) の pp. 2571-2573に説明されているメカニズムで
は、ユーザ固有キーを、時刻インディケータとともに、
アクセス・レコードに格納することによって、異なるシ
ステム間でデータ・セットをレコード・レベルで共有す
ることができる。アクセス・レコードは、後続のアクセ
ス側に対するロック・インディケータとなる。
【0003】
【発明が解決しようとする課題】上述のメカニズムやそ
れらと同様の機構では、ロックをかけるユーザのシステ
ムがかなりの時間使用できなくなった場合に、ユーザに
よってロックされたリソースが他のユーザから見えなく
なってしまう。また、データに障害があった場合のファ
シリティやアシスタンスが提供されておらず、可用性の
ためにバックアップのデータ・セットを維持すべき状況
には言及されていない。
【0004】この発明の目的は、システムまたはシステ
ム・コンプレクスの各ユーザ間でデータを効率よく共有
できるようにすることにある。
【0005】この発明の目的には、停止したシステムに
よってロックされた共有データを、シスプレクスの他の
システムが使用できるようにすることも含まれる。
【0006】この発明の目的には、一時的に停止したシ
ステムが、停止前にロックしていたデータを他のシステ
ムがアクセスしても、不都合を生じないように操作を再
開できるようにすることも含まれる。
【0007】この発明の目的には、障害のあったデータ
を、代替またはバックアップのデータ・ストアに切り替
えることなく復旧することも含まれる。
【0008】この発明の目的には、同期化プロセスの間
にプライマリ・データ・ストアへのアクセスを一時的に
保留することなく、新しい代替データ・ストアとの同期
をとることも含まれる。
【0009】
【課題を解決するための手段】この発明によれば、共有
されたユーザ・データは、プライマリ・データ・ストア
に格納される。プライマリ・データ・ストアは、ロック
・ブロック(各々データを共有する各システムに関連す
る)の形の制御情報、サフィクス・レコード、及びチェ
ック・レコードを含む。サフィクス・レコードとチェッ
ク・レコードは、ユーザ・データの整合性を保証するの
に用いられ、ロック・ブロックは、共有するシステムの
1つが、必要に応じてデータを“ロックする”ために用
いられる。
【0010】この発明はまた、制御情報を含み、最初は
プライマリ・データ・ストアと同一の(2重化された)
代替データ・ストアを与える。代替データ・ストアは、
存在するときには、障害のあったデータの再生を可能に
することによって、データの可用性を高める。代替デー
タ・ストアは“ロック・スティーリング”にも用いられ
る。ロック・スティーリングでは、共有する第2システ
ム(第1システムによってロックされたリソースを必要
とする)が、第1システムによって保持されていたロッ
クを“奪い”、プライマリ・データ・ストアと代替デー
タ・ストアの制御情報を操作することによって、ロック
が“奪われた”ことを指示できるので、第1システムは
後で、不都合が生じないように処理を再開することがで
きる。
【0011】
【実施例】図1は、「共有データ・アクセス直列化」の
ハイレベル・ビューである。「共有データ・アクセス直
列化」は、共有DASD上に維持されたユーザ・データ
の更新を直列化するためのものである。直列化は、レベ
ルの低い粒度(ユーザ・レコードまたはリソースが1
つ)で行われ、公正なアクセスが保証され、障害が克服
される。
【0012】ユーザ・リソースを維持するのに用いられ
るデータ・ストアはDASDデバイスに格納されるのが
普通である。「共有データ・アクセス直列化」は、グロ
ーバル制御情報をデータ・ストアに維持する(図3の3
02)。プライマリ・データ・ストア(図1の103)
はユーザ・データを格納する。ユーザ・データは任意に
代替データ・ストア(図1の104)で2重化すること
ができる。データ・ストアは各々、自身の制御情報を格
納する。したがってプライマリ・データ・ストア、代替
データ・ストアのいずれも、そのデータ・ストアのデー
タをアクセスするための制御情報を格納する(プライマ
リ/代替データ・ストアについて詳しくはデータ2重化
の説明を参照のこと)。制御情報には、リソースの論理
名から物理ロケーション及びデータ属性へのマップが含
まれ、ユーザ要求で与えられたデータの名前を、対象リ
ソースを支える物理データへマッピングするのに用いら
れる。従来からのこのマッピングは、実際の直列化プロ
トコルには関係がなく、ここでは詳述しない。
【0013】データ・ストアに格納された各リソース
は、これに関連するリソース・レベルの制御情報がいく
つかのタイプに分けられる。この制御情報は、リソース
へのアクセスの制御に用いられ、ユーザ・データの復旧
と信頼性を管理するために用いられる(図3の303参
照)。
【0014】アクセス制御情報は1組のロック・ブロッ
クから成る。ロック・ブロックは、リソースの共有に関
与し得る各システムに1つである。図4は、ロック・ブ
ロック401とリソースのユーザ・データ402の関係
を示す。この図には、リソースを共有し得る各システム
にロック・ブロックが1つあることも示した。この例の
場合、リソースを共有できるシステムは“n”個であ
る。各システムに、ロック・ブロックの所有権が割り当
てられ、与えられたロック・ブロックは1システムしか
所有できない。ロック・ブロックの所有権は、システム
の初期化時に、データ・ストアのグローバル制御情報の
なかの情報を使って割り当てられる。ロック・ブロック
3が割り当てられたシステムはロック・ブロック3を所
有する。ロック・ブロックの位置の所有権と特定のリソ
ースの所有権は同じではない。ロック・ブロック位置の
所有権はリソースの所有権を意味しない。
【0015】ロック・ブロックはカウント/キー/デー
タ・レコードである。レコードのキー部は、直列化プロ
セスでは重視されない。レコードのデータ部も重要では
なく、直列化プロセスでは必要ない。図5に示すとお
り、キー501は、システム・シーケンス・ナンバ(グ
ローバル制御情報のなかの情報を使ってシステム初期化
時に一意に割り当てられる)と、時刻(TOD)値(リ
ソースのアクセス要求の順序を定めるのに用いられる)
から成る。ロック・ブロックは、通常はアンロック状態
またはオール・ゼロである。ロック状態(リソース更新
の意図を示す)は、少なくとも1つのロック・ブロック
のゼロでないキー・フィールドによって反映される。
【0016】リソースは、アクセス制御情報のほか、デ
ータの整合性を保証するための制御情報を含む。サフィ
クス・レコードは、関連する物理データ・レコードに格
納されたユーザ・データが完全かつ矛盾のないようにす
るために用いられる。図4の404A、404Bに示し
たとおり、サフィクス・レコードは、データのユーザに
は見えないが、ユーザ・データ・レコードの物理的な部
分である。サフィクス・レコードに維持されるシングル
・レコード・ライトの時刻(TOD)値(図6の60
4)は、1つの物理レコードの完全性または無矛盾性を
判定するのに用いられる。
【0017】サフィクス・レコードのほかに、マルチ・
レコード・ライト操作に対してデータの整合性を保証す
るためにチェック・レコード(図4の403)が用いら
れる。サフィクス・レコードだけでは、要求に対して物
理ブロックが2つ以上書き込まれた場合にデータの整合
性を保証するのに充分ではない。実際に書き込まれる物
理レコードはすべて正常に書き込まれるかもしれない
が、マルチ・レコード・ライト操作を成す、意図された
物理レコードがすべて書き込まれていなければ、リソー
スは、全体として一貫性のないものになる。チェック・
レコードと各サフィクス・レコードに維持されるマルチ
・レコード・ライト時刻(TOD)値は、リソースを構
成するすべての物理ブロックが論理的に矛盾のないこと
を保証するために用いられる。
【0018】シーケンス・ナンバは、サフィクス・レコ
ード、チェック・レコードのいずれにも維持される。シ
ーケンス・ナンバ・フィールドは、データ・ストアを共
有する各システムについて1つである。シーケンス・ナ
ンバは、システムがプライマリ・データ・ストアに書き
込んだデータが、あるエラー条件下で代替データ・スト
アに伝播したかどうかを判定するためにシステムによっ
て用いられる。このようなエラー条件の復旧時に、シー
ケンス・ナンバが用いられ、「共有データ・アクセス直
列化」が、ユーザの変更結果がデータ・ストアに正常に
書き込まれたか、または変更は行われず、ユーザがリー
ド直列化/データ変更/ライト直列化の更新シーケンス
を再起動しなければならないかどうかを、シーケンス・
ナンバのユーザに通知する。
【0019】「共有データ・アクセス直列化」データを
維持するのに用いられるデータ・ストアには一定の性質
がなければならない。データ・ストア・デバイス(DA
SDデバイス)は、あるシステムから要求を開始すれ
ば、そのシステムからの要求を完全にするか、または別
のシステムから要求を開始する前に、エラーをもって要
求を中止しなければならない。すなわち、要求はデータ
・ストア・デバイスによってインタレースすることはで
きない。要求の操作は、いつでも中断できるが、その割
り込みは、「共有データ・アクセス直列化」の例外とし
てレポートしなければならない。データ・ストアに書き
込まれたデータは、データ・ストアに存在する順序で処
理しなければならない。すなわち、データ・ストアに存
在するデータは、ランダムな順序あるいはインタリーブ
した順序でプロセサからデータ・ストア上のレコードに
転送することはできない。これはサフィクス・レコード
(物理的にデータ・ストア・レコードの最期の部分)が
一貫性チェックに用いられるからである。一貫性チェッ
クが正しく機能するためには、サフィクス・レコード
は、ユーザ・データがすべて書き込まれた後で書き込ま
なければならない。データ・ストアへのデータ転送が、
データ転送の完了前に中止されなければならない場合
は、転送されなかったデータは、データ・ストア上でゼ
ロにセットしなければならない。チェック・レコードの
この矛盾したデータにより、データの一貫性チェックが
可能になる(図6の604のシングル・レコード・ライ
ト時刻はゼロにできない)。データ・ストア・デバイス
は条件つき要求を可能にしなければならない。すなわち
要求は、ロックの値(レコードのキーの値)をテストで
き、次の要求操作(データの他のレコードへの書き込み
など)を条件に応じて実行できなければならない。
【0020】データの2重化では、「共有データ・アク
セス直列化」により、エラーの訂正と復旧が可能にな
る。データの2重化は、「共有データ・アクセス直列
化」のオプションであり、データ・アクセスの直列化を
実現するためには必要ではない。データの2重化を行わ
ないようにした場合は、「共有データ・アクセス直列
化」の多くのエラー復旧機能が失われ、システムの可用
性が脅かされる。
【0021】「共有データ・アクセス直列化」では、2
重化を実現するためにプライマリ(図1の103)と代
替(104)の2つのデータ・ストアが用いられる。プ
ライマリ/代替データ・ストアは、データ・ストアを最
初に使用するシステムの初期化時に同期がとられる。同
期化により、プライマリ・データ・ストア上のすべての
データが代替データ・ストアにコピーされる。プライマ
リ・データ・ストアにおいて訂正不可能なエラーが発生
した場合には、代替データ・ストアはここで、プライマ
リとして使用できる。通常処理の間、プライマリ・デー
タ・ストアに書き込まれたデータは代替データ・ストア
にも書き込まれる。これにより代替データ・ストアは、
プライマリのための信頼できる代替手段、バックアップ
となる。
【0022】代替データ・ストアは、「共有データ・ア
クセス直列化」が最初に初期化されるかまたはその後に
初期化されたときに、「共有データ・アクセス直列化」
に使用できる。代替データ・ストアを使用できるように
しても、リソースを直列化するユーザ要求の通常の処理
には不都合が生じない。すなわちユーザ要求は、「共有
データ・アクセス直列化」によって代替データ・ストア
とプライマリ・データ・ストアの同期がとられていると
きに、大きな遅れなく処理される。
【0023】代替データ・ストアは、プライマリ側で生
じたエラーの訂正と復旧の両方を実現するために用いら
れる。この復旧は、ローカル・レベルかグローバル・レ
ベルで行われる。
【0024】グローバルなエラー復旧は、訂正できない
エラーがプライマリ・データ・ストアにおいて発生した
場合に必要である。訂正できないエラーには、データ・
ストア全体がアクセスできないエラー(データ・ストア
へのパスがすべて失われるなど)、レコードまたは1組
のレコードのローカル復旧が失敗したときのエラー(ス
トレージ媒体に欠陥がある − バッド・データ・レコ
ード − ときに発生し得る)などがある。グローバル
復旧では、障害のあったプライマリ・データ・ストアを
共有するすべてのシステムがその使用を停止する必要が
ある。これらのシステムはそこでプライマリの使用を止
めてデータ要求を満たし、機能的に完全な代替データ・
ストアを使用し始める。別のデータ・ストアを代替とし
て活動化し、この新しい代替ストアとプライマリとの同
期をとるための手段も提供される。
【0025】エラーのローカル復旧は、エラーがプライ
マリ・データ・ストアの特定のレコードまたは1組のレ
コードに限定されるとみなされるときに試みられる。た
とえば、あるレコードが正常に読み出されているが(す
なわちデータ・ストアからプロセサへのデータ転送が正
常に終了)、サフィクス・レコードは、ユーザ・データ
が論理的に矛盾していることを示している場合、これ
は、データ・ストアを共有する別のシステムに、データ
・ストアへのデータ転送の間に障害が発生し、完全な矛
盾のないレコードを転送しなかった場合に発生する。こ
のケースのサフィクス・レコードは期待値を格納せず、
したがってデータが無効である可能性のあることを示
す。ローカル障害のもう1つのケースは、マルチ・レコ
ード・ライトが起動されても、あるシステムによって終
了しない場合である(マルチ・レコード・ライトは、ユ
ーザ・データが2つ以上の物理レコードにまたがるとき
に必要である)。このケースでは、論理レコードを成す
各物理レコードは完全である。これらのどの物理レコー
ドのサフィクス・レコードも、物理レコードは有効であ
ることを示す。しかし物理レコードの組は一貫性がな
い。これは、サフィクス・レコードに格納されたマルチ
ライト時刻値のいくつかが、チェック・レコードに格納
されたマルチライト時刻値と一致しないという事実によ
って検出される。(図4の403と図6の603を参
照。)
【0026】上記のローカル問題は通常は、バッド・デ
ータ・ストア情報を引き起こした問題のあったシステム
によって検出され、そのシステムが復旧を試みることに
注意されたい。サフィクス・レコードとチェック・レコ
ードでは、どのシステムもエラーを検出して復旧を試み
ることができる。これは重要な属性である。エラーの発
生元となったシステムには、エラーを訂正できず、おそ
らくはデータ・ストアを共有する他のシステムにエラー
をレポートできないという問題が発生し得るからであ
る。サフィクス/チェック・レコードの処理がなけれ
ば、データ・ストア上のユーザ・データは信頼性がなく
なる。
【0027】「共有データ・アクセス直列化」は、リソ
ースへのアクセスを可能にするサービス(READ、R
EAD SERIALIZED、WRITE SERI
ALIZED、及びUNLOCK)をユーザに提供す
る。
【0028】READは、名前つきリソースへの非直列
化アクセスである。これは、他のシステムからの同じリ
ソースへのアクセスを防げない。READサービスは、
リソースのロック状態を変えることもなければ、リソー
スのロック状態を調べることもない。したがってREA
Dは、現在他のシステムによってロックされているリソ
ースに対して発行でき、他のシステムによるリソースの
アンロック前に終了する。
【0029】READ SERIALIZEDは、制御
された名前つきリソース・アクセスであり、リソースの
更新意図を含む。リソースは変更できるので、直列化は
データをアクセスする前に実現しなければならない。リ
ソースのロック(図4の401及び図5)を最初に取得
しなければならない。リソースは、ロックが取得される
までは読み出すことができない。すなわち当該システム
は、リソースに関連するデータを読み出す前にロックを
所有し(したがってリソースを所有し)なければならな
い。
【0030】WRITE SERIALIZEDは、制
御された名前つきリソース更新である。リソースは、先
行するREAD SERIALIZED要求によってア
クセスされていなければならない。リソースは、先行す
るREAD SERIALIZED要求によって取得さ
れたロックがまだ当該システムによって保持されている
場合にのみ更新される。データが正常に書き込まれる
と、当該システムのロックが解除される。リソースのロ
ックは当該システムに開放される。他に待機中のシステ
ムがある場合は、次にロックを待っているシステムに、
自身がリソースの所有者になったことが通知される。ロ
ックが保持されなくなると、WRITESERIALI
ZED要求は失敗し、要求側にはこのアクションが通知
される。リソースは、ロックが保持されなくなったとき
には更新されない。
【0031】UNLOCKは、READ SERIAL
IZEDを通して当該システムによって名前つきリソー
スについて取得されたロックを、ユーザ・データの内容
を変えずに解除する手段である。「共有データ・アクセ
ス直列化」によって維持されたリソースのユーザ・デー
タ部は変更されない。リソースは、当該システムに対し
て開放またはアンロックされる。待機中のシステムが他
にある場合は、ロックを待っている次のシステムに、自
身がリソースの所有者になったことが通知される。
【0032】システムがユーザ・データをロックできる
ということは、2つ以上のシステム間でデータを共有す
る機能の面から非常に重要な機能である。「共有データ
・アクセス直列化」は、この機能を低レベルの粒度で提
供する。しかし、オペレータの介入なくデータの連続使
用を可能にするためには、ユーザ・データがアクセス不
能とならないように何らかの手段を設ける必要がある。
データがアクセス不能になるのは、機能しなくなったシ
ステムによってデータがロックされていて、ロックを解
除できない場合、あるいはシステムが長い時間遅れ、お
そらくは停止した場合である。
【0033】「共有データ・アクセス直列化」は、リソ
ースをかなり長く待っているシステムが、そのリソース
の所有権を他のシステムから奪うためのメカニズムを、
データのユーザまたはシステム・オペレータに対してト
ランスペアレントに提供する。これをロック・スティー
リングという。ロック・スティーリングは、ロックに関
係するデータの整合性を損なわないように実現しなけれ
ばならない。ロックが奪われたシステムは、実行を継続
でき、自身がロックを所有しているとみなしてデータを
リソースに書き込めなければならない。すなわちロック
・スティーリングは、機能しなくなったシステムに対す
る場合と同じように、一時停止したシステムに対しても
機能するものでなければならない。また、一時停止した
システムは、ロックが奪われた状態から回復できなけれ
ばならない。
【0034】ロック・スティールでは、新しい所有者へ
のリソースの割当を可能にしながらリソースのデータ整
合性を保証するために、リソースに関連するアクセス制
御情報を使用する。(図4の401A、401Bなど、
及び図5を参照。)新しい所有者はまた、アクセス制御
情報を使うことによって選択される。
【0035】ロックを奪う機能は、READ SERI
ALIZEDとWRITE SERIALIZEDの操
作によるアクセス制御情報の使用に依存する。(各操作
の詳細については以下の該当する節を参照されたい。)
READ SERIALIZED操作は、リソースに関
連するロック・ブロックに情報を記録し、リソース・デ
ータを読み出す前にリソースの所有権を得る。データは
データ・ストアから読み込まれ、ユーザに提示される。
ユーザはデータを更新し、WRITE SERIALI
ZEDを起動してデータの書き込みを要求する。WRI
TE SERIALIZEDは次に、データをデータ・
ストアに書き込み、対応するREADSERIALIZ
ED操作によってセットされたものと同じ値がロックに
含まれるようにする。ロックに正しい情報が含まれてい
ない場合、更新試行は失敗する。ロック・スティールは
ロックの内容を変えるので、ロック・スティールが発生
したときは、ロックに正しい情報は含まれていない。
【0036】ユーザ要求処理
【0037】READ操作 READ操作(図7及び以下で詳述)では、ユーザが、
データ・ストアに格納されたリソースをアクセスでき
る。ここでユーザは、READ操作を使い、読み出され
た情報を更新する意図のないこと、したがって他のシス
テムによるデータのアクセスを防げる理由のないことを
指示している。
【0038】従来の「共有データ・アクセス直列化」
は、リード要求からのリソース名または識別子と、デー
タ・ストアからのグローバル制御情報(302)を使
い、データ・ストア内の特定のリソースを検出し、リソ
ースの属性(レコードのフォーマットやサイズなど)を
判定する。
【0039】データ・ストアは、READ処理の各段階
で参照される。READは、データ・ストアをアクセス
している間に、データ・ストア上でエラー復旧を開始し
なければならない場合がある。READ操作は、データ
・ストア上のロック・ブロック情報をアクセスする問題
あるいはリソース・データを参照する問題にぶつかるこ
とがある。リソース・データの復旧についてはREAD
SERIALIZEDの節の説明とその終わりの部分
を参照されたい。
【0040】READ SERIALIZED操作 READ SERIALIZED操作(詳しくは図10
と下記の説明を参照)とWRITE SERIALIZ
EDサービス(ここで概要を述べる)では、ユーザが、
直列化を制御した形で共有リソースをアクセスし更新で
きる。ユーザは、データ・ストア上の共有リソースを更
新するためには、最初にリソースをロックし、リソース
をデータ・ストアから読み込む必要がある。これは特定
の名前のリソースに対するREAD SERIALIZ
ED要求を「共有データ・アクセス直列化」に要求する
ことによって行われる。「共有データ・アクセス直列
化」がREAD SERIALIZED要求を完了する
と、リソースはロックされ、データ・ストアの他のユー
ザはこのリソースの更新と、データ・ストアからの読み
込みができなくなる。当該ユーザはこのリソースを処理
のために使用できる。
【0041】ユーザがリソースの処理を終えると、リソ
ースに加えられた変更は、「共有データ・アクセス直列
化」がリソースを更新するようにWRITE SERI
ALIZED要求を通して要求することによって、デー
タ・ストアにコミットすることができる。WRITE
SERIALIZEDサービスの詳細については次の節
を参照されたい。
【0042】リソースが処理されたとき、ユーザは、デ
ータ・ストア上のリソースに変更を加えないことを決定
できる。ユーザは、「共有データ・アクセス直列化」の
UNLOCKサービスを起動して、データ・ストアに対
する変更をコミットすることなく、リソースの直列化を
解除することができる。以下の節でULOCKサービス
の詳細に触れる。
【0043】従来の「共有データ・アクセス直列化」
は、READ SERIALIZED要求からのリソー
ス名または識別子と、データ・ストアからのグローバル
制御情報302を使用してデータ・ストアのなかの特定
のリソースを検出し、リソースの属性(レコードのフォ
ーマットやサイズなど)を判定する。
【0044】リードは直列化されるので、リソース・ロ
ック(図4の401A、401Bなど)はデータをアク
セスする前に取得しなければならない。ロックの取得は
マルチステップ操作である。リソースを取得する最初の
ステップは、当該システムのロック・キーを生成し、こ
のロック・キーをリソースのアクセス制御情報のなかの
該当するロック・ブロックに記録する。当該システムが
使用するのに適したロック・ブロックは、システムの初
期化時に決定されたロック・ブロックである。各システ
ムは、リソースに関連するロック・ブロック(401
A、401Bなど)のうち1つを所有する。所有権は、
データ・ストアのグローバル制御情報に格納された情報
から決定される。あるリソースの1組のロック・ブロッ
クなかの同じロック・ブロック(たとえば401C)
は、どのリソースについても、あるシステムによって所
有される。
【0045】ロック・キーは、システム・シーケンス・
ナンバと時刻値から成る(図5の501参照)。システ
ム・シーケンス・ナンバはシステムの初期化時に取得さ
れ、データ・ストアを共有する各システムに対して一意
である。データ・ストアに格納されるグローバル制御情
報は、システムの初期化によってインクリメントされ、
次の一意のシステム・シーケンス・ナンバが生成され
る。システムは、その処理の間中、同じシーケンス・シ
ーケンス・ナンバを使う(図3の302参照)。時刻値
は、プロセサから取得された時間である。新しい時間値
は、ロック・キーが「共有データ・アクセス直列化」に
よってあるユーザのために取得されるごとに取得され
る。
【0046】キーが生成されると、データ・ストアのな
かの該当するロック・ブロックに書き込まれる。これが
ロックを取得する第1ステップで、ロック・ブロックの
この組に関連するリソースを使用する当該システムの意
図がデータ・ストアに記録される。
【0047】実行された「共有データ・アクセス」は、
これまでのところはリソースを使用する意図を示す。当
該システムはここで、だれがリソースの所有者かを判定
する必要がある。これをロック・ルール処理という。所
有権を判定するロック・ルールは3つある。リソースに
関連するロック・ブロックはすべてデータ・ストアから
読み出される。第1のロック・ルールでは、あるシステ
ムは、そのシステムのロック・ブロックを除くすべての
ロック・ブロックがゼロならばリソースの所有者であ
る。他のシステムはこのリソースに関心がない。
【0048】第2のロック・ルールでは、あるシステム
は、そのシステムのロック・ブロック以外の少なくとも
1つのロック・ブロックがゼロでなく(他の少なくとも
1つのシステムはリソースに関心がある)、ゼロ以外の
すべてのロック・ブロックの時刻値が、当該システムの
時刻値よりも古い場合は、明らかに所有者ではない。当
該システムはリソースの使用を待つ必要がある。ロック
所有権は、別のシステムがそのロック・ブロックのロッ
ク・キーをゼロにリセットして、どのシステムが次にリ
ソースを使用するかを判定したときに、別のシステムに
よって当該システムに引き渡される。すなわち当該シス
テムは、時刻値の古いすべてのシステムが各々順に処理
を終えるまで待っていなければならない。
【0049】第3のロック・ルールは、他の少なくとも
1つのシステムの時刻値が第1のシステムの時刻値より
も新しいケースを扱う。この状態は、時刻スタンプを取
得することと、リソースに対する関心を記録することが
アトミックではないために生じる。すなわち2つの要求
がインタリーブされることがある。システムAが時刻ス
タンプを得、続いてシステムBが時刻スタンプを得て、
その時刻スタンプをデータ・ストアに記録する。後にシ
ステムAがその時刻スタンプを記録し、システムBの新
しい時刻スタンプを検出する。
【0050】このケースでは所有権の状態は不定であ
る。これを解決するため、第1のシステムが新しい時刻
値を生成し、この新しい時刻値を使って更新されたロッ
ク・キーをつくり、そのロック・ブロックをこの更新さ
れたロック・キーで書き込む。ロック・ブロックの更新
が完了すると、第1システムは、すべてのシステムのロ
ック・ブロックを読み出し、時刻値が最も古いシステム
を検出する。時刻値が最も古いシステムには、自身が所
有者であることが通知される。それが所有者であること
を、自身がすでに知っているときにシステムに通知する
ことは許容される。第1システムはそこで、所有者にな
ったという通知を待つ。
【0051】システムが、それが所有者であることを判
定する(ロック・ルール1)か、またはそれが所有者で
あることを別のシステムから通知される(ロック・ルー
ル2または3)と、当該システムは、データ・ストアか
らユーザ・データを読み出して、ユーザ要求を満たすこ
とができる。ユーザにはデータが使用できることが通知
される。
【0052】先に述べたとおり、データ・ストアは、R
EAD SERIALIZED処理の各段階で参照され
る。データ・ストアをアクセスしているとき、READ
SERIALIZEDは、データ・ストア上でエラー
復旧を開始する必要があるかもしれない。行われるエラ
ー復旧は、データ・ストアのどの部分に障害があったか
によって決まる。READ SERIALIZED操作
は、データ・ストア上のロック・ブロック情報をアクセ
スする問題、またはリソース・データを参照する問題に
ぶつかることがある。
【0053】ロック・ブロックに障害があると(ロック
・ブロックのライトやリードを試してみた結果が永続的
なリード/ライト・エラーあればそう判定される)、ロ
ック・ブロックのリフォーマットが試みられる。リフォ
ーマットは物理的に、データ・ストア上の当該ロック・
ブロック情報を含むトラックを再生成する。通常のライ
ト操作の代わりにフォーマット・ライトが用いられる。
ロック・ブロックはリソースへのアクセスを制御するの
で、ロック・ブロックの修復は、ロック・ブロックに障
害のあったリソースへのアクセスを一時停止するように
行う必要がある。修復の結果、すべての制御情報が失わ
れるので、現在のリソース所有者は所有権を失う。待機
側は列のなかのその位置を失う。所有者とすべての待機
側は所有権の再取得を試みる必要がある。実際に、ロッ
ク・ブロックの修復は、当該リソースに関心のあるすべ
てのシステムからのロックのマス・スティールになる。
ロック・ブロックの修復は事実上のスティール操作であ
るので、ロック・ブロックは、どのデータ・ストアで障
害が検出されたかどうかにかかわらず、代替とプライマ
リの両方のデータ・ストアでリフォーマットされる。こ
れは、リソースの使用を安全に停止するために必要であ
る。(スティール処理については図18を、ロック・ブ
ロック処理と修復については図11、12、13を参照
のこと。)
【0054】プライマリ・データ・ストアからリソース
のデータを読み出すときにエラーが発生すると、代替デ
ータ・ストアからデータが読み出されようとする。代替
データ・ストアは、プライマリ・データ・ストアの2重
化イメージを含む。発生したエラーは、プライマリ・デ
ータ・ストアからデータを読み出そうとする永続的なエ
ラーであるか、またはサフィクス・レコードかチェック
・レコードに格納された情報が、物理レコードが不完全
であるかあるいは、いくつかの物理レコードのうちの1
つが、リソースを成す他の物理レコードと論理的に矛盾
することを示すかのいずれかである。READ DAT
A操作について試みられる復旧については図8Aを参照
されたい。
【0055】WRITE SERIALIZED操作 WRITE SERIALIZED操作(図15と下記
の説明で詳述)では、ユーザは、データ・ストアに格納
されたリソースを制御性を保って更新できる。ユーザ
は、READ SERIALIZED操作を通してデー
タを読み出し、データを更新してからWRITE SE
RIALIZED操作を起動して、変更されたデータを
データ・ストアにコピーバックする必要がある。「共有
データ・アクセス直列化」は更新されたデータをプライ
マリと代替の両方のデータ・ストアに書き込む。
【0056】「共有データ・アクセス直列化」は、特定
のタイプのエラーを処理するために、各リソースのデー
タ・シーケンス・ナンバを維持する。データ・シーケン
ス・ナンバは、与えられたシステムについてデータのレ
ベルを反映する。システムがデータをデータ・ストアに
書き込むたびに新しいデータ・シーケンス・ナンバが生
成される。データ・シーケンス・ナンバはチェック・レ
コードに維持される。(図4の403、図6の602
A、602Bなどを参照のこと。)データ・ストアを共
有する各システムに1つのデータ・シーケンス・ナンバ
がある。各システムは、そのデータ・シーケンス・ナン
バを使って、エラー復旧操作の間のデータ更新の結果を
判定する。
【0057】システムは、復旧に備えて、(READ
SERIALIZED操作によって読み込まれる)チェ
ック・レコードのローカル・コピーのそのデータ・シー
ケンス・ナンバをインクリメントする。
【0058】新しいデータ・シーケンス・ナンバが生成
されると、プライマリ・データ・ストアを更新すること
ができる。UPDATE操作は、次のアクション・シー
ケンスから成る。これらのアクションは、データ・スト
アに対する1つのアトミック操作を通して実行しなけれ
ばならない。第1に、システムのロック・ブロックがチ
ェックされ、リソースがまだ当該システムによって所有
されているかどうかが判定される。ロック・ブロックに
は、READ SERIALIZED要求によって書き
込まれたものと同じゼロでない値が格納されていなけれ
ばならない。ロック・ブロック値の状態の変化は、別の
システムがシステムからロックを、したがってリソース
を奪ったことを示す。ロックが奪われると、当該操作の
データ更新の部分が実行されない。WRITE SER
IALIZED操作は終了し、ユーザには、そのUPD
ATE操作が、ロックが奪われたために失敗したことが
通知される。ユーザは、READ SERIALIZE
D操作から操作をリドゥできる。第2に、ロックがまだ
保持されているとすると、ユーザ・データ・レコード
が、対応するサフィクス・レコードとともにデータ・ス
トアに書き込まれる。そして最後に、チェック・レコー
ドが書き込まれる。チェック・レコードは、他のものの
なかで特に、当該システムの更新されたデータ・シーケ
ンス・ナンバを含む(他のシステムのデータ・シーケン
ス・ナンバは不変)。
【0059】プライマリ・データ・ストアが更新されれ
ば代替データ・ストアを更新できる。代替データ・スト
アの更新は、次のアクション・シーケンスから成り、す
べてデータ・ストアに対する1回のアトミック操作で実
行される。第1に、当該システムのロック・ブロックが
チェックされ、リソースがまだ当該システムによって所
有されているかどうかが判定される。ロック・ブロック
はすべてゼロでなければならない(代替データ・ストア
上のロック・ブロックの通常状態)。ロック・ブロック
の非ゼロ値は、別のシステムが当該システムからロック
を、したがってリソースを奪ったことを示す。ロックが
奪われると当該操作のデータ更新の部分が実行されな
い。第2に、ロックがまだ保持されているとすると、ユ
ーザ・データ・レコードが、対応するサフィクス・レコ
ードとともに代替データ・ストアに書き込まれる。そし
て最後にチェック・レコードが書き込まれる。
【0060】プライマリ・データ・ストアに障害が発生
してこれが除外され、代替データ・ストアがプライマリ
・データ・ストアになったときに、当該プロセスが代替
データ・ストア上(その時点ではプライマリ・データ・
ストア)のデータを更新しようとしている場合、WRI
TE SERIALIZED操作は終了する。WRIT
E SERIALIZED操作のユーザにレポートされ
る内容は、代替データ・ストアの更新の完了状態によっ
て決まる。このWRITE SERIALIZED操作
がプライマリ・データ・ストアの障害のために中断され
たときに、代替操作が開始されなかった場合、新しいプ
ライマリ・データ・ストア(前身は代替データ・スト
ア)はユーザの変更を反映しない。これは事実上のロッ
ク奪取である。代替データ・ストアのすべてのゼロのロ
ック・ブロックがプライマリになっているからである。
WRITE SERIALIZEDの発行側には、ロッ
クが奪われたことが通知され、発行側は、READ S
ERIALIZEDから操作を再開できる(ロックをま
た取得する必要がある)。代替WRITE操作が、代替
データ・ストアがプライマリ・データ・ストアになる前
に正常に終了した場合、ユーザの変更はプライマリ・デ
ータ・ストアに反映される。ユーザには、WRITE
SERIALIZED操作が成功したことが通知され
る。リソースをアンロックする必要はない。ロック・ブ
ロックがゼロのプライマリは事実上ロックされていない
リソースだからである。
【0061】代替データ・ストアへのWRITEが成功
するか、または代替データ・ストアに完全な障害が発生
し、使用できないようになった場合(「共有データ・ア
クセス直列化」は代替データ・ストアなく継続でき
る)、あるいは代替データ・ストアが使用されていない
場合(代替データ・ストアはオプション)、ユーザ・デ
ータの更新は正常に処理されている。WRITE SE
RIALIZED操作は、当該システムのリソースのロ
ックを解除することによって完了する。これは、当該シ
ステムのリソースをアンロックし、WRITE SER
IALIZED操作の成功をユーザに知らせるアンロッ
ク操作を起動することによって行われる。
【0062】代替データ・ストアへのWRITEが、ロ
ック・チェックのために成功しなかった場合(代替デー
タ・ストア上のロックがゼロでなかった場合)、ロック
は当該システムから奪われている。ロックは、当該シス
テム上のこのWRITE SERIALIZED操作か
ら奪われたか、それとも前のWRITE SERIAL
IZED操作から奪われたかどうかを判定する必要があ
る。
【0063】スティール処理(ロックを所有するシステ
ム以外の他のシステム上で実行される)により、1つの
システムによるロックの保持が長すぎることが判定さ
れ、プライマリと代替の両方のデータ・ストア上の当該
システムのロック・ブロックの内容を変えることによっ
てそのシステムからリソース所有権が奪われる。代替デ
ータ・ストア上のロック・ブロックの内容が最初に変更
され、続いてプライマリ・データ・ストア上のロック・
ブロックの内容または値が変更される。具体的には、代
替データ・ストアのロック・ブロック値がゼロから、プ
ライマリ・データ・ストアのロック・ブロックのなかの
スティールによって検出された値(READ SERI
ALIZEDによって生成されたシステム・シーケンス
・ナンバと時刻値)に変更される。プライマリ・データ
・ストアのロック・ブロック値はゼロにセットされる。
ロックが奪われたシステムは、スティールによってだれ
からロックを奪うかが判定された時間と実際にロックが
奪われた時間との間にその操作を完了させることも可能
である。これはロック・スティールにとってもターゲッ
ト・システムにとっても問題ない。ただし、ターゲット
・システムからリソースに対する次の操作は、スティー
ルがその操作を対象としたものか前の要求を対象にした
ものかを判定しなければならない。
【0064】WRITE SERIALIZEDは、ス
ティールがこの操作を対象にしたものか前の操作を対象
にしたものかを判定しなければならない。これを行うた
めには、WRITE SERIALIZEDは、その代
替ロック・ブロックのなかの値を調べなければならな
い。ロックの値(READ SERIALIZEDによ
ってプライマリ・データ・ストアのロック・ブロックに
置かれたもののコピー)が、READ SERIALI
ZEDが書き込んだものと一致しない場合は、ロック・
スティールは前の要求に向けられたものである。WRI
TE SERIALIZEDは、上述のようにデータの
書き込みをまた試みる。このときは通常のゼロ値ではな
くこの新しい値の代替ロックをチェックする。そのとき
書き込みが成功すれば、後の余分な繰り返し処理を避け
るために、代替データ・ストア上のロック・ブロックは
すべてゼロにリセットされる。
【0065】代替データ・ストア上のロック・ブロック
の値が一致しない場合、現在のWRITE SERIA
LIZED操作のロックは当該システムから奪われてい
る。当該システム上のWRITE SERIALIZE
Dサービスの呼び出し側は、プライマリの変更はコミッ
トしているが、代替データ・ストアの変更はコミットし
ていない。しかし変更が2重化されなかったことも考え
られる。変更が2重化されたかどうかが確認されるまで
は、ユーザに対して、ユーザの操作が完了したことを通
知できない。スティーリング・システムが2重化を実行
すると仮定することはできない。スティーリング・シス
テムが、このシステムの変更の2重化を保証するREA
D SERIALIZED、UPDATE、及びWRI
TE SERIALIZEDのプロセスを完了していな
いことが考えられるからである。そこで「共有データ・
アクセス直列化」は、ロックを奪ったシステムに依存す
ることなく2重化を保証する。WRITE SERIA
LIZEDはそのために、内部でREAD SERIA
LIZEDを起動する。これによりロックが通常の方法
で再取得されデータが再び読み出される。データは、他
のシステム上のアクティビティによって、当該操作が開
始されてから数回変更された可能性もあり変更されなか
った可能性もあることに注意されたい。ここでの唯一の
目標は、現在存在するどのレベルでも2重化されるよう
にすることにある。READ SERIALIZEDが
完了すると、プライマリと代替の両方のデータ・ストア
に対して再びWRITE SERIALIZEDが試み
られる。
【0066】先に述べたとおり、データ・ストアはWR
ITE SERIALIZED処理の各段階で参照され
る。WRITE SERIALIZEDは、データ・ス
トアをアクセスするときに、データ・ストア上でエラー
復旧を開始しなければならないかもしれない。どのよう
なエラー復旧が行われるかは、データ・ストアのどの部
分に障害があったかによって決まる。WRITE SE
RIALIZED操作では、データ・ストア上のロック
・ブロック情報のアクセス問題またはリソース・データ
の参照問題が生じることがある。
【0067】ロック・ブロックの復旧についてはREA
D SERIALIZEDの節の説明とその終わりの部
分を参照されたい。
【0068】リソースのデータをプライマリまたは代替
データ・ストアへ書き込むときにエラーが発生すると、
障害のあったデータ・ストアのデータが再生されようと
する。リフォーマット(再生)は、データ・ストア上の
当該リソースのデータを含むトラックを物理的に再構成
する。通常のWRITE操作の代わりにフォーマット・
ライトが用いられる。WRITE DATAと修復処理
については図16を参照されたい。
【0069】UNLOCK操作 UNLOCK操作(詳細は図17及び下記の説明を参
照)では、ユーザは、データ・ストア上のデータを更新
することなく、前のREAD SERIALIZED要
求を取り消すことができる。この操作は、WRITE
SERIALIZED操作がその処理を完了するために
も用いられる。
【0070】UNLOCKは、リソースのアクセス制御
情報を変えて、当該システムがリソースに関心のあるこ
との指示をこの情報から取り除く。(詳細は下記参
照。)次に、アクセス制御情報を調べて、他のどのシス
テムが(もしあれば)、リソースを次に所有すべきかを
判定する。次の所有者が見つかると、UNLOCKは、
そのシステムに自身が所有者になったことを通知する。
【0071】データ・ストアは、UNLOCK処理の各
段階で参照される。UNLOCKは、データ・ストアを
アクセスしているときに、データ・ストア上でエラー処
理を開始する必要があるかもしれない。UNLOCK操
作は、データ・ストア上のロック・ブロックをアクセス
する問題にぶつかることがある。ロック・ブロックの復
旧についてはREAD SERIALIZEDの説明と
その終わりの部分を参照されたい。
【0072】READ 図7の701では、データ・ストアが存在するかどうか
が調べられる。(すなわちプライマリ・データ・ストア
が存在するかどうか − これは図25のプライマリ・
ストア・ディスクリプタ2501の“機能”インディケ
ータ2502で示される。)701の判定が、プライマ
リが存在しないことを示した場合は、呼び出す側に処理
が戻る。判定が、プライマリが存在することを示した場
合は、READ DATAルーチンが起動され(70
2)、プライマリまたは代替データ・ストアからリソー
スが読み出される。READ DATAは図8A、図8
Bに示した。READ DATAから処理が戻ると、プ
ライマリ・データ・ストアに訂正できない障害があるか
どうかが判定される(703)。あった場合、701の
判定が再び上述のように実行される。データがプライマ
リまたは代替データ・ストアから正常に読み出されてい
れば、処理は呼び出し側に戻る。
【0073】READ DATA 図8A、図8BにREAD DATA処理の制御の流れ
を示す。801で、プライマリ・データ・ストアからリ
ソースを読み出すためにチャネル・プログラムが生成さ
れる。次に802でチャネル・プログラムが起動されそ
の完了が待たれる。803では、チャネル・プログラム
によってデータが正常に読み出されたかどうかが判定さ
れる。そのとおりであれば、804でサフィクス・レコ
ードとチェック・レコードを調べることによってデータ
の信頼性が判定される。この一貫性チェックは、各サフ
ィクス・レコード及びチェック・レコード内のマルチ・
レコード・ライト時刻値(図6の603)が、他のすべ
てのサフィクス・レコード及びチェック・レコードと等
しいかどうか、また、各サフィクス・レコード及びチェ
ック・レコードのシングル・レコード・ライト時刻値
(図6の604)が、「共有データ・アクセス直列化」
のグローバル制御情報内の時刻値(図3の302A)と
等しいかどうかを検査することによって行われる。次に
(805)、データが実際に信頼できるものであったか
どうかが判定される。信頼できるものであった場合、処
理は呼び出し側に戻る。信頼できるものでなかった場
合、処理は図8の807に示したように継続する。80
3の判定が、データがプライマリ・データ・ストアから
正常に読み出されなかったことを示す場合は、806に
おいてエラーが訂正可能な永続的エラーかどうかが判定
される。エラーが訂正可能とみなせるかどうかは、デー
タ・ストア全体がアクセス可能とみなせるかどうか、ま
たは単に1つのレコードがエラーとみなせるかどうかを
示す。たとえばチャネル・プログラムのチェックがあっ
たことを示すリターン・コードは、訂正できない永続的
エラーとみなされる。レコード長が正当でないことを示
すリターン・コードは、訂正可能な永続的エラーとみな
される。永続的なエラーが訂正可能とみなされる場合、
永続的エラー処理が起動され(808)、使用不可能な
プライマリ・データ・ストアが除外される。この処理は
図9の説明の後に示した。そこで処理は呼び出し側に戻
る。807では、同期のとられた代替が存在するかどう
かが判定される。(図25のインディケータ2506で
示される。)807の判定が、同期のとられた代替が存
在しないことを示す場合、808のように永続的エラー
処理が起動され、呼び出し側に処理が戻る。同期のとら
れた代替が存在する場合、チャネル・プログラムが生成
されて(809)、代替データ・ストアからリソースが
読み出され、当該チャネル・プログラムが起動される
(810)。そこでチャネル・プログラムの実行完了が
待たれる。
【0074】811ではチャネル・プログラムがデータ
を正常に読み出したかどうかが判定される。そのとおり
であれば、読み出されたばかりのデータが信頼できるも
のかどうかが判定される(812)。この判定は804
の場合と同様に行われる。次に、データが信頼できるも
のであったかどうかが判定される(813)。そのとお
りであれば、処理は呼び出し側に戻る。信頼できるもの
でなかった場合、永続的エラー処理が起動され(81
4)、使用不可能なプライマリ・ストアが除外され、ま
た起動されて(815)、使用不可能な代替データ・ス
トアが除外される。処理はここで呼び出し側に戻る。8
11の判定が、データが代替データ・ストアから正常に
読み出されなかったことを示す場合、永続的エラー処理
が814、815のように起動され、呼び出し側に処理
が戻る。
【0075】永続的エラー処理 図9A、9Bは永続的エラー処理の制御の流れを示す。
901では、永続的エラーにぶつかったシステムのID
がローカルにセーブされる。次に(902)、システム
上の直列化された要求が、直列化要求を処理するタスク
を停止させることによって停止される。次に903にお
いて、障害が代替データ・ストアの障害だったかどうか
が判定される。そのとおりであれば904において代替
に障害が発生したことの指示がセットされて(251
0)オペレータに通知され、代替は、機能インディケー
タ(図25の2505)をオフにすることによって除外
され使用できなくなる。次に、905において障害がプ
ライマリの障害だったかどうかが判定される。(この判
定は、代替データ・ストアの障害がなかった場合はステ
ップ903の直後に行われる。)プライマリに障害があ
った場合、906においてオペレータに通知され、プラ
イマリ・データ・ストアに障害のあったことの指示がセ
ットされ、機能インディケータ(図25の2502)を
オフにすることによってプライマリが除外され使用不可
にされる。次に907で(プライマリ障害がなかった場
合はステップ905)、このエラーが(障害のあったデ
ータ・ストアのデータ・ストア名とボリューム・シリア
ル・ナンバで)他のシステムに(たとえばチャネル間通
信によって)通知される。次に(908)、代替データ
・ストアが存在し、プライマリに障害があったかどうか
が判定される。そのとおりなら、代替に障害があったと
いう指示がセットされ(909)、機能インディケータ
(図25の2505)をオフにすることによって代替が
除外され使用不可にされる。代替は後に − 代替スト
ア・ディスクリプタの情報(2504)をプライマリ
(2501)に移すことによって − プライマリとし
て用いられる(910)。908の判定が、プライマリ
に障害がなかったか、または代替が存在しないことを示
す場合は、911で、代替が存在するかどうかが判定さ
れる。存在しない場合システムは終了する(912)。
代替が存在する場合(そしてステップ910について説
明した処理の後)、913において、すべてのシステム
がこのエラーを検出しかどうかが(ローカルにセーブさ
れたシステム識別子をデータ・ストアのグローバル制御
情報302のなかの参加しているシステムのリストと比
較することによって)判定される。検出していない場合
は914で、エラーを検出していない他のシステムに永
続的エラーが通知され、これらのシステムからの次の信
号が待たれる(915)。すべてのシステムがエラーを
検出した場合、当該システムの直列化された要求が(直
列化要求を処理するタスクを再起動することによって)
再起動され(916)、ルーチンは終了する。他のシス
テムからの信号が入ったとき、またはタイマが時間切れ
になった結果、当該システムのIDがローカル・エリア
917にセーブされ、処理は913に示したように継続
する。
【0076】READ SERIALIZED要求 図10(10A〜10C)は、READ SERIAL
IZED要求の制御の流れを示す。1001でデータ・
ストアが存在するかどうかが判定される(2501)。
プライマリ・データ・ストアが存在しない場合は要求側
に処理が戻る。プライマリが存在すれば、ロック所有権
の要求TODが生成され(1002)、要求がそのリソ
ースのロック・アンカ(図25の2503)に配置され
る。次に(1003)、ロック・ブロック・ライト処理
が起動され、要求TODがプライマリ・データ・ストア
のなかの当該システムのロック・ブロックに書き込まれ
る。この処理については図13とあわせて詳述する。ロ
ック・ブロック・ライト処理で書き込まれたロック・ブ
ロックは、当該システムに関連するシステム・シーケン
ス・ナンバと現在のTOD値を含む。このロック・ブロ
ックは図5の501に示した。ロック・ブロック・ライ
ト処理から戻った後、1004で、プライマリ・データ
・ストアに訂正できない障害があったかどうかが判定さ
れる。なかった場合、ロック・ブロック・リード処理が
起動され、プライマリ・データ・ストアからすべてのロ
ック・ブロックが読み出され、よってリソース所有権が
判定される(1005)。ロック・ブロック・リード処
理の詳細は図11に示した。ロック・ブロック・リード
処理から戻ると、1006において、プライマリ・デー
タ・ストアに訂正できない障害があったかどうかが判定
される。なかった場合、他のすべてのロック・ブロック
がゼロに等しいかどうかが判定される(1007)。1
007の答えがYESであれば、これは、ロック・ルー
ル1により、当該システムがリソースを所有し、処理は
以下に示すように1019から継続することを示す。1
007の判定が、他のすべてのロック・ブロックがゼロ
に等しくないことを示す場合は、リソースのコンテンシ
ョンがある。1008では他のすべてのTODが当該T
ODよりも古いかどうかが判定される。他のすべてのT
ODが当該TODよりも古い場合、ロック・ルール2に
より、当該システムはリソースの所有者ではない。10
09では、リドライブTODが要求TODに等しいかど
うかが判定される。この判定が必要なのは、1005に
おいてREAD SERIALIZED要求処理でロッ
ク・ブロックが読み出されたときに当該システムが所有
者ではなかった場合でも、ロック所有者信号処理がRE
AD SERIALIZED要求処理の間に非同期に実
行され、当該システムがそれ以降リソースの所有者にな
る可能性があるからである。したがって、1009の判
定が、リドライブTODが当該要求TODに等しいこと
を示す場合、ユーザはここでリソースの所有者になり、
処理は以下に示すように1019から継続する。リドラ
イブ要求TODが当該要求TODに等しくない場合、当
該システムはリソースの所有者になっておらず、ルーチ
ンは終了する。この後、ロック所有者信号が必要にな
る。1008の判定が、他のすべてのTODが当該TO
Dよりも古くないことを示す場合、ロック・ルール3に
より、リソース所有権は不定であり、ロック所有権の新
しい要求TODが生成される(1010)。次に、ロッ
ク・ブロック・ライト処理が起動され、新しい要求TO
Dがプライマリ・データ・ストアのなかの当該システム
のロック・ブロックに書き込まれる(1011)。ロッ
ク・ブロック・ライト処理については図13とあわせて
詳述する。ロック・ブロック・ライト処理から戻ると、
1012において、プライマリ・データ・ストアに訂正
できない障害があったかどうかが判定される。なかった
場合、ロック・ブロック・リード処理が起動され(10
13)、プライマリ・データ・ストアからすべてのロッ
ク・ブロックが読み出されて所有権が判定される(図1
1参照)。ロック・ブロック・リード処理から戻ると、
プライマリ・データ・ストアに訂正できないエラーがあ
ったかどうかが判定される。なかった場合、1015に
おいて、1009で説明したのと同じ理由から、リドラ
イブTODが要求TODに等しいかどうかが判定され
る。これらの値が等しければ、当該システムはリソース
の所有者になっており、処理は以下に説明するとおり1
019から継続する。これらの値が等しくなければ、ロ
ック所有者信号がTODの最も古いシステムに送られる
(1016)。ルーチンはここで終了し、ロック所有者
信号を待つ。
【0077】1019では、リード・データ処理が起動
され、データ・ストアからリソースが読み出される。
(リード・データ処理は図8に示した。)リード・デー
タ処理から戻ると、1020において、プライマリ・デ
ータ・ストアに訂正できない障害があったかどうかが判
定される。なかった場合は処理は要求呼び出し側に戻
る。ロック所有者信号処理(図14 − 以下で詳述)
では、ロック所有者信号が受信され、当該システムでこ
の信号が有効かどうかが判定されるときに、READ
SERIALIZED処理がブロック1017で起動さ
れる。1017では、データ・ストアが存在するかどう
かが判定される。存在しない場合、処理は要求呼び出し
側に戻る。プライマリ・データ・ストアが存在しない場
合、1018において、プライマリ・データ・ストアに
訂正できない障害が発生したかどうかが判定される。発
生しなかった場合、処理は先に示したようにブロック1
019から継続する。
【0078】上記の判定(1004、1006、101
2、1014、1018、1020)のいずれかが、プ
ライマリ・データ・ストアに訂正できない障害のあるこ
とを示した場合、上述のように1001においてREA
D SERIALIZED処理が再起動される。
【0079】ロック・ブロック・リード 図11はロック・ブロック・リード処理の制御の流れを
示す。1101ではチャネル・プログラムが生成され
て、プライマリまたは代替のデータ・ストアからロック
・ブロックが読み出される。1102ではチャネル・プ
ログラムが起動されてその終了が待たれる。次に、ロッ
ク・ブロックが正常に読み出されたかどうかが判定され
る(1103)。正常なら処理は呼び出し側に戻る。正
常でなければ1104において、訂正可能な永続的エラ
ーが発生したかどうかが判定される。発生していなけれ
ば、永続的エラー処理が起動され(1105)、使用で
きないプライマリまたは代替データ・ストアが除外され
る。永続的エラー処理は図9に示した。処理は呼び出し
側に戻る。訂正可能な永続的エラーがあれば、ロック・
ブロック修復処理が起動され(1106)、ロック・ブ
ロックが修復される。ロック・ブロック修復処理は図1
2に示した。処理は呼び出し側に戻る。
【0080】ロック・ブロック修復処理 図12はロック・ブロック修復処理の制御の流れを示
す。1201では代替データ・ストアが存在するかどう
かが判定される(2505)。1つ存在すれば、当該リ
ソースのロック・ブロックが代替データ・ストアでリフ
ォーマットされる(1202)。ロック・ブロックのリ
フォーマットが、プライマリ・データ・ストア上のロッ
ク・ブロックの前に代替データ・ストアで行われるの
は、ロック・ブロックを修復するのが、論理的にマス・
ロック・スティール操作であり、ロック・スティール処
理のところで述べているように、ロック・スティーリン
グは最初に代替データ・ストアに対して、次にプライマ
リ・データ・ストアに対して書き込みを行うからである
(図18参照)。図4にロック・ブロックとリソースの
関係を示した。ロック・ブロックはリフォーマットされ
ているので、ロック・ブロックのなかの前のTOD値は
失われている。ロック・ブロック数は、リソースを共有
できるシステムの数(すなわち当該データ・ストアを共
有できるシステムの数)を示す。1203では、リフォ
ーマットが成功したかどうかが判定される。成功しなか
った場合、永続的エラー処理が起動され(1204)、
使用不可能な代替データ・ストアが除外される。永続的
エラー処理は図9に示した。処理は呼び出し側に戻る。
リフォーマットが成功した場合、プライマリ・データ・
ストア上のリソースのロック・ブロックがリフォーマッ
トされる(1205)。1205におけるこの処理は、
1201の判定が、代替データ・ストアが存在しないこ
とを示した場合も実行される。次に1206で、プライ
マリ・データ・ストアでのロック・ブロックのこのリフ
ォーマットが成功したかどうかが判定される。成功しな
かった場合、永続的エラー処理が起動され(120
7)、使用できないプライマリ・データ・ストアが除外
される。永続的エラー処理は図9に示した。処理はそこ
で呼び出し側に戻る。ロック・ブロックのリフォーマッ
トが成功した場合は、データ・ストアが要求に応答でき
なかったことの指示がセットされる(1208)。この
インディケータは、ロック・ブロック・リード処理に入
ってロック・ブロックがプライマリから読み出されたか
代替データ・ストアから読み出されたかに応じて、プラ
イマリまたは代替データ・ストアを反映する。処理はそ
こで呼び出し側に戻る。
【0081】WRITE LOCK BLOCK処理 図13はWRITE LOCK BLOCK処理の制御
の流れを示す。1301ではチャネル・プログラムが生
成されてプライマリまたは代替データ・ストアへロック
・ブロックが書き込まれる。1302ではチャネル・プ
ログラムが起動されてその終了が待たれる。次に130
3ではロック・ブロックが正常に書き込まれたかどうか
が判定される。そのとおりなら処理は呼び出し側に戻
る。正常に書き込まれなかった場合は1304で訂正可
能な永続的エラーがあったかどうかが判定される。なか
った場合、永続的エラー処理が起動され(1305)、
使用できないプライマリまたは代替データ・ストアが除
外される。永続的エラー処理は図9に示した。そこで処
理は呼び出し側に戻る。訂正可能な永続的エラーがあっ
た場合は、ロック・ブロック修復処理が起動され(13
06)、ロック・ブロックが修復される。ロック・ブロ
ック修復処理は図12に示した。ここで処理は呼び出し
側に戻る。
【0082】ロック所有者信号受信処理 図14(14A、14B)はロック所有者信号の受信の
制御の流れを示す。この信号が受信されると、1401
において、データ・ストアが、信号が送信されたときと
同じかどうかが判定される。(プライマリ・データ・ス
トアのIDが信号で送信され、当該システム上で使用さ
れる現在のプライマリ・データ・ストアと照合され
る。)同じでなければ、ルーチンは終了してロック所有
者信号が無効なことが指示され、信号は棄却される。同
じであれば、与えられたリソースに対する要求が保留さ
れているかどうかが判定される(1402)。(当該リ
ソースのロック・アンカ(図25の2503)がチェッ
クされる。)1402の判定が、リソース要求があるこ
とを示す場合は、当該信号が“最新の”信号であるかど
うかが判定される(1403)。この判定は、入力信号
の要求TODを要求要素のリドライブTOD(251
1)と比較することによって行われる(“古い”信号が
棄却される)。要求TODが新しい場合は、信号の要求
TODが、ロック要求要素のリドライブTODフィール
ド(2511)にセーブされる(1404)。(リソー
ス所有者になったかどうかをREAD SERIALI
ZEDをもって検出できるように行われる − 図10
の1009、1015)。最新信号でなければこのセー
ブ操作はバイパスされる。次に(1405)、READ
SERIALIZED処理がロック所有者信号を想定
しているかどうか(すなわちREAD SERIALI
ZEDが、図10の判定1009または1015に対す
るNOの応答を受信した後に存在したかどうか)が判定
される。ロック所有者信号を想定していなかった場合ル
ーチンは終了する。その信号が想定されていた場合、処
理はREAD SERIALIZEDのロック所有者信
号処理(図10の1017)に戻る。1402の判定
が、当該システム上に与えられたリソースに対して要求
がないことを示す場合(適用されなくなった冗長信号が
受信されたなど)、ロック・ブロック・リード処理が起
動され(1406)、プライマリ・データ・ストアから
すべてのロック・ブロックが読み出される。次に、14
07で、ロック・ブロックを読み出すときにプライマリ
・データ・ストアで障害があったかどうかが判定され
る。あった場合ルーチンは終了する。なければ1408
で、いずれかのシステムが当該リソースを待っているか
どうかが判定される。待っていなければ(すなわちすべ
てのロック・ブロックがゼロに等しい場合)ルーチンは
終了する。あるシステムがロック所有者信号を待ってい
る場合は、当該システムが待っているシステムであるか
どうかが判定される(1409) − 各システムがそ
のロック・ブロック・ナンバを知っているので判定され
る。そうでない場合、ロック所有者信号は最も古い待機
側に送られ(1410)、ルーチンは終了する。ロック
所有者信号には、所有者の要求TOD(所有者のロック
・ブロックから取得される)と、プライマリ・データ・
ストアのID(データ・セット名とボリューム・シリア
ル・ナンバ)が含まれる。当該システムが待っているシ
ステムであれば、ロック・ブロック・ライト処理が起動
され(1411)、当該システムのロック・ブロックが
クリアされる。(実際には待っていない。)(つまりデ
ータ・ストアと当該システムの同期がくずれたエラー状
態を意味する。)次に処理は1406から継続する。
【0083】WRITE SERIALIZED要求処
理 図15(15A〜15C)はWRITE SERIAL
IZED要求処理の制御の流れを示す。1501ではプ
ライマリ・データ・ストアに訂正できないエラーがある
かどうかが判定される。ある場合、処理は要求側に戻
り、エラーが指示される。ライトは発行されない。エラ
ーがない場合、データ書き込み処理が起動され(150
2)、プライマリ・データ・ストアにデータが書き込ま
れる。データ書き込み処理は図16に詳しく示した。
(要求TODはWRITE DATAに引き渡されロッ
ク検証チェックが行われる。)次に1503では、デー
タの書き込み時にプライマリ・データ・ストアに訂正で
きない障害が発生したかどうかが判定される。発生した
場合、処理はまた要求側に戻り、書き込みが行われなか
ったというエラーが指示される。発生しなかった場合、
データがプライマリに書き込まれる前にプライマリのロ
ックが奪われたかどうかが判定される(1504)。そ
のとおりなら、エラーが呼び出し側に返され、書き込み
が完了しなかったことが示される。ロックが奪われなか
った場合、代替データ・ストアが存在するかどうかが判
定される(1505)。存在しない場合、UNLOCK
処理が起動され(1506)、制御がアンロックに渡
り、WRITE SERIALIZED要求が完了す
る。UNLOCK処理は図17に詳しく示した。代替デ
ータ・ストアが存在する場合、WRITE DATA処
理が起動され(1507)、データが代替データ・スト
アに書き込まれる。(ゼロ値がWRITE DATAに
引き渡されてロック検証チェックが行われる。)WRI
TE DATA処理は図16に詳しく示した。次に(1
508)、プライマリ・データ・ストアに訂正できない
障害があったかどうかが判定される。このような障害が
なかった場合、1509で、代替データ・ストアに訂正
できない障害が発生したかどうかが判定される。このよ
うな障害が発生しなかった場合、1510で、代替ロッ
クが奪われたかどうかが判定される。奪われた場合、ロ
ック・ブロック・リード処理が起動され(1511)、
当該システムのロック・ブロックが代替データ・ストア
から読み出される。ロック・ブロック・リード処理の詳
細は図11に示した。次に(1512)、プライマリ・
データ・ストアに訂正できない障害があったかどうかが
判定される。なかった場合、代替ロック・ブロックにリ
セットの必要なことが指示される(1513)。次に
(1514)、代替データ・ストアに障害があったかど
うかが判定される。なかった場合、当該要求からロック
が奪われたかどうかが判定される(1515)。奪われ
なかった場合、WRITE DATA処理が起動され
(1516)、データが代替データ・ストアに書き込ま
れる。(読み出されたばかりのロックのTODがWRI
TE DATAに引き渡されてロック検証チェックが行
われる。)WRITE DATA処理の詳細は図16に
示した。次に1508の判定が行われ、処理はここから
上述のように継続する。1508の判定が、プライマリ
・データ・ストアに訂正できない障害のあったことを示
す場合、1517で、代替データ・ストアが正常に更新
されたかどうかが判定される。そのとおりなら、処理は
要求側に戻り、書き込みが正常に完了したことが示され
る。更新されなかった場合、処理は要求側に戻り、書き
込みが行われなかったというエラーが示される。これと
同じエラーは、1512の判定が、プライマリ・データ
・ストアに訂正できない障害のあったことを示す場合も
返される。
【0084】1510の判定が、代替ロックが奪われた
ことを示す場合、1518で、代替ロック・ブロックに
リセットが必要かどうかが判定される。必要なら151
9において、その指示がリセットされ、1520におい
て、ロック・ブロック書き込み処理が起動されて、ゼロ
が相対データ・ストアのロック・ブロックに書き込まれ
る。次に(または、1518の判定でNOの指示が受け
取られた場合)、UNLOCK処理が起動され(152
1)、制御がアンロックに渡り、WRITESERIA
LIZED要求が完了する。UNLOCK処理の詳細は
図17に示した。1515の判定が、当該要求からロッ
クが奪われたことを示す場合、ロック・ブロック書き込
み処理が起動され(1522)、ゼロが代替ロック・ブ
ロックに書き込まれる。次に(1523)、プライマリ
・データ・ストアに訂正できない障害があったかどうか
が判定される。このような障害が発生した場合、処理は
要求側に戻り、エラーと、書き込みが行われなかったこ
とが示される。障害がなかった場合、READ SER
IALIZED処理が起動され(1524)、リソース
がまた取得されてユーザの変更が2重化される。REA
D SERIALIZED処理の詳細は図10に示し
た。処理は次に、上述のように1501の判定から継続
する。1509(または1514)の判定でYESが返
った場合も、1521の場合のようにUNLOCK処理
が起動される。
【0085】WRITE DATA 図16はWRITE DATA処理の制御の流れを示
す。1601でチャネル・プログラムが生成されて、リ
ソースがプライマリまたは代替データ・ストアに書き込
まれる(チャネル・プログラムの最初の部分では、当該
システムのロック・ブロックに、呼び出し側によって与
えられたキー値がまだ含まれるかどうかが検証される。
照合結果が“イコール”であれば、ロックはまだ所有さ
れており、チャネル・プログラムはまだ動作を継続でき
る。)1602でチャネル・プログラムが起動されその
完了が待たれる。次に1603で、データが正常に書き
込まれたかどうかが判定される。そのとおりなら処理は
呼び出し側に戻る。そうでないなら1604で、ロック
が奪われているかどうかが判定される。奪われている場
合、ロック要求要素(2513)に“ロック奪取”イン
ディケータがセットされ(1605)、処理は呼び出し
側に戻る。ロックが奪われていなければ、1606で、
訂正可能な永続的エラーがあったかどうかが判定され
る。なかった場合、永続的エラー処理が起動され(16
07)、使用できないプライマリまたは代替データ・ス
トアが除外される。永続的エラー処理の詳細は図9に示
した。エラーが訂正可能だった場合は、エラーが、ロッ
ク・ブロックの問題によるものか、データ書き込み障害
によるものかどうかが判定される。データ書き込み障害
なら、チャネル・プログラムが生成され(1610)、
データ・ストアのトラックがリフォーマットされ、チャ
ネル・プログラムが起動されて(1611)、その実行
完了が待たれる。次に1612で、リフォーマットが成
功したかどうかが判定される。そのとおりなら処理は呼
び出し側に戻る。そのとおりでなければ永続的エラー処
理が起動され(1613)、使用できないプライマリま
たは代替データ・ストアが除外される。1608の判定
が、ロック・ブロックの問題を示す場合、ロック・ブロ
ック修復処理が起動され(1609)、ロック・ブロッ
クが修復されて、処理は呼び出し側に戻る。ロック・ブ
ロック修復処理の詳細は図12に示した。
【0086】UNLOCK REQUEST 図17は、UNLOCK要求処理の制御の流れを示す。
1701において、プライマリ・データ・ストアに訂正
できない障害があったかどうかが判定される。あった場
合、処理は要求の呼び出し側に戻る。なかった場合、ロ
ック・ブロック書き込み処理が起動され(1702)、
プライマリ・データ・ストア上の当該システムのロック
・ブロックがゼロにされる。これは、リソースが当該シ
ステムに必要でなくなったことを示す。ロック・ブロッ
ク書き込み処理は図13に詳しく示した。次に、170
3において、プライマリ・データ・ストアに訂正できな
い障害が発生したかどうかが判定される。そのような障
害が発生した場合、処理は要求の呼び出し側に戻る。発
生しなかった場合、ロック・ブロック読み出し処理が起
動され(1704)、プライマリ・データ・ストアから
すべてのロック・ブロックが読み出され、よってリソー
ス所有権が判定される。ロック・ブロック読み出し処理
の詳細は図11に示した。次に、1705においてまた
プライマリ・データ・ストアに訂正できない障害があっ
たかどうかが判定される。そのとおりなら、処理は要求
の呼び出し側に戻る。そうでなければ、1706におい
て、最も古い待機側(最も古いTOD)がロック・ブロ
ックから検出される。次に1707で、かかる待機側が
検出されたかどうかが判定される。検出されなかった場
合、処理は要求呼び出し側に戻る。検出された場合、ロ
ック所有者信号がこの最も古い待機側に送られる(17
08)。この信号には最も古い待機側の要求TOD(そ
のロック・ブロックから取得される)とデータ・ストア
のID(データ・セット名とボリューム・シリアル・ナ
ンバ)が含まれる。
【0087】LOCK STEAL処理 図18(18A、18B)はLOCKスティール処理の
制御の流れを示す。ロック・スティール処理は、当該シ
ステムのすべてのロック要求要素を調べてリソース待機
時間が長すぎる要素を判定するタイマ駆動処理の結果と
して起動される。(起動の間隔と“長すぎる”の定義
は、不要な奪取が生じるほど短くてもいけないし、障害
のあったシステムが動作可能なシステムの性能を落とす
ほど長くてもいけない。実施例では起動間隔6秒、“長
すぎる’の定義は12秒である。)1801では、ロッ
ク・ブロック読み出し処理が起動され、プライマリ・デ
ータ・ストアからすべてのロック・ブロックが読み出さ
れる。ロック・ブロック読み出し処理は図11に詳しく
示した。1802では、現在のシステムのロック・ブロ
ックがゼロに等しいかどうかが判定される。(これはた
とえば次の場合に生じる。システムAがリソースXのロ
ックを取得し、次にシステムBがXをアクセスしようと
して、システムAのロック・ブロックがセットされてい
るのを検出し、ロック所有者信号を待つ。そこでシステ
ムAは何らかの原因で停止する。システムCがXをアク
セスしようとして、AとBのロック・ブロックがセット
されているのを検出し、ロック所有者信号を待つ。次に
システムAがXを解除し(ここでロック・ブロックTO
Dはゼロになる)、ロック所有者信号をBに送る前に何
らかの原因で停止する。次にシステムCがロック・ステ
ィールをかけ、Bが“所有者”であること(最も古い非
ゼロTOD)を検出し、ロックをBから奪う(BのTO
Dはここでゼロになる)。最後にBが再起動され、ロッ
ク・スティールがかけられ、(Bは長く待ってたので)
そのTODがゼロになっているのを発見する!)。その
とおりであれば、READ SERIALIZEDがま
た最初から駆動され、ルーチンは終了する。そうでなけ
れば、現在の所有者が検出される(1804)。(ロッ
ク・ブロックからのTODは最も古い。)次に、180
5で現在の所有者が当該システムであるかどうかが判定
される。そのとおりならロック所有者信号が当該システ
ムに送られ(1806)、ルーチンは終了する。そうで
なければ、所有者が最後の時点と同じかどうかが判定さ
れる(1807)。(先の所有者は1808で2514
にセーブされている。)所有者が最後の時点とは異なる
場合、1808で現在の所有者の情報が要求要素(25
14)にセーブされ、ルーチンが終了する。所有者が同
じなら、代替データ・ストアが存在するかどうかが判定
される。存在すればロック・ブロックWRITE処理が
起動され(1810)、プライマリ・データ・ストアか
ら得られた現在の所有者の要求TODが、代替データ・
ストア上の現在の所有者のロック・ブロックに書き込ま
れる。次にロック・ブロックWRITE処理が起動され
(1811)、ゼロTODがプライマリ・データ・スト
ア上の現在の所有者のロック・ブロックに書き込まれ
る。新しい所有者は(プライマリのロック・ブロックか
ら最も古いTODを検出することによって)ここで(1
812)検出され、ロック所有者信号が新しい所有者に
送られる(1813)。そこでルーチンは終了する。
【0088】新代替処理 図26(26A〜26E)は、新代替処理の制御の流れ
を示す。新代替処理は、新しい代替データ・ストアを初
期化してサービスを提供できるようにするときに必要で
ある。この処理は、オペレータ・コマンドで起動される
か、またはオペレータ・コマンドを受信したシステム・
コンプレクス内の別のシステムからの信号によって起動
される。2601において、この処理の要求が初期要求
信号であるかどうかが判定される。そうであれば260
2において、オペレータ要求が当該システムのシステム
・オペレータからのものかどうかが判定される。そのと
おりであれば2603において、当該システムが新しい
代替データ・ストアの同期をとる責任のあることが示さ
れる。(同期をとるとは、代替データ・ストアがプライ
マリ・データ・ストアの複製であることを意味する。)
要求が当該システムからのものでなければ、2604に
おいて、システムは現在の代替データ・ストアの使用を
中止する必要がある。オペレータ・コマンドを受け取っ
たシステムがすでに現在の代替データ・ストアをサービ
スができないようにしているからである。次に2605
において、新しい代替データ・ストアが使用可能かどう
かが判定される。(すなわちオペレータ・コマンドに指
示された新しい代替のボリュームとデータ・セットを検
出可能かどうか。)そうでなければ、2606におい
て、要求が当該システムからのものかが判定される。そ
うでなければ、“代替障害”信号が、参加している他の
すべてのシステムに送られ、ルーチンが終了する。要求
が当該システムからのものであれば、ルーチンが終了す
るだけである。2605の判定が、新しい代替が使用可
能であることを示す場合は、2608において、要求が
当該システムからのものかどうかが判定される。そうで
あれば、2609において、システムは現在の代替の使
用を中止する必要がある。次に2610で、システムは
新しい代替の使用を開始し、それに非同期状態とマーク
をつける(プライマリ・データ・ストアとして使用する
準備ができていないことを示す)。同期状態インディケ
ータは図25の2506に示した。次に2611で、要
求が当該システムからのものかどうかが判定される。そ
うでなければ、“代替受理”信号が送られ(261
2)、タイマがセットされる(2613)。タイマをセ
ットする目的は、システムが、他のシステムが代替デー
タ・ストアの同期をとるのを長く待たずにすむようにす
ることにある。2611の判定が、要求が当該システム
からのものであることを示す場合、2614において、
当該システムが、データ・ストアを使用する唯一のシス
テムかどうかが判定される。(これはプライマリ・デー
タ・ストアのグローバル制御情報から判定できる。図3
の302を参照。)データ・ストアを使用する唯一のシ
ステムであれば、代替同期化処理が起動され(261
5)、代替データ・ストアとプライマリ・データ・スト
アとの同期がとられ、ルーチンは終了する。他のシステ
ムがデータ・ストアを使用している場合は、2616に
おいて、初期要求信号が他のすべてのシステムに送られ
る。次にタイマがセットされ(2617)、ルーチンは
終了する。
【0089】代替同期化処理は図26Bの下に示した。
最初に、2618において、READ SERIALI
ZEDとWRITE SERIALIZEDがプライマ
リ・データ・ストアの各リソースに対して発行される。
(図3の302のグローバル制御情報は、どのリソース
が起動されているかを示す。)次に2619で、読み出
しまたは書き込みにエラーが発生したかどうかが判定さ
れる。エラーがあった場合、“代替障害”信号が、参加
している他の各システムに送られ、ルーチンは終了す
る。エラーがなければ、2621において、“代替動作
可能”信号が、参加している他の各システムに送られ
る。同期状態インディケータがここでセットされ(26
22、図25の2506参照)、ルーチンは終了する。
【0090】2601の判定が、新代替処理の初期要求
ではないことを示す場合、2623において、受信され
た信号が“代替受理”信号であるかどうかが判定され
る。そうなら、信号を送ったシステムの識別子がセーブ
され(2624)、2625において、現在のシステム
が、代替データ・ストアの同期をとるべきシステムかど
うかが判定される。(この責任を持つシステムが260
3で識別されセーブされている。)現在のシステムが、
同期をとるべきシステムではない場合、ルーチンは終了
する。現在のシステムが同期をとるべきシステムであれ
ば、参加しているすべてのシステムがもう応答したかど
うかが判定される(2626)。応答していなければル
ーチンは終了する。応答していれば2627で、代替同
期化処理が起動され、代替データ・ストアとプライマリ
・データ・ストアの同期がとられる。2623の判定
が、“代替受理”信号ではないことを示す場合、262
8において、“代替障害”信号かどうかが判定される。
そのとおりなら、当該システムは新しい代替データ・ス
トアを使用できなくなり(2629)、ルーチンは終了
する。“代替障害”信号でない場合、2630におい
て、“代替動作可能”信号かどうかが判定される。そう
であれば、代替同期化インディケータがセットされ(2
631、図25の2506参照)、ルーチンは終了す
る。代替動作可能信号でなければ、2632において、
タイマ時間切れ信号かどうかが判定される。そうであれ
ば、2632.5において、当該システムが代替データ
・ストアの同期化に責任を持つべきかどうかが判定され
る。当該システムは、現在責任を持つシステムが活動状
態ではなくなっていれば責任を持つ(図3の302のグ
ローバル制御情報は、データ・ストアを使用しているシ
ステムのアレイを含み、システムが活動状態かどうかを
示す)。当該システムが新代替の同期化に責任を持つべ
きではない場合、ルーチンは終了する。責任を持つべき
なら、これが2633で示される。次に2634におい
て、すべてのシステムが応答したかどうかが判定され
る。(図3の302のグローバル制御情報は参加してい
る全システムを示すことに注意されたい。)参加してい
る全システムの状態は非同期タスクでモニタし、いずれ
か1つのシステムがサービスの対象外になっているかど
うかを、たとえば参加している各システムが共通にアク
セスできるデータ・フィールドの“脈拍”フィールドを
一定間隔で更新するようにすることによって判定でき
る。このような脈拍がなければ、非同期タスクは、グロ
ーバル制御情報を更新して、当該システムを参加システ
ムのリストから除外する必要がある。
【0091】参加している全システムが応答していれ
ば、2635において代替同期化処理が起動され、代替
データ・ストアとプライマリ・データ・ストアの同期が
とられ、ルーチンは終了する。全システムがまだ応答し
ていなければ、2636において、フォローアップ信号
が参加している全システムに送られ、タイマがセットさ
れる(2637)。(この例では、タイマ値は20秒後
に時間切れになるようにセットされる。)2632の判
定が、タイマ・ポップ信号を示さない場合、2638に
おいて、当該信号がフォローアップ信号かどうかが判定
される。(たとえば2636で示される。)そうでない
場合ルーチンは終了する。フォローアップ信号であれ
ば、2639において、信号が、現在の要求よりも古い
TODを持つ信号かどうかが判定される。そうなら、2
640で、信号が現在の代替データ・ストアに対するも
のかどうかが判定される。そのとおりなら“代替受理”
信号が送られ(2641)、ルーチンは終了する。現在
の代替に対するものでなければ、“代替障害”信号が送
られ(2642)、ルーチンは終了する。2639の判
定が、信号が古い要求に対するものではないことを示す
場合、2643において、当該信号のTODが現在の要
求よりも新しい要求に対するものかどうかが判定され
る。(内部状態インディケータによって示される。)そ
うなら2645において、“代替障害”信号が送られて
当該要求が失敗し(これはたとえば、2つのシステムが
異なる代替データ・ストアを持ってくる必要のあるとき
に生じる)、ルーチンは終了する。要求が現在途中であ
れば、これは現在のシステムが初期要求信号をなくした
ことを示し、“新代替”処理がまた起動される(260
2)。その場合“代替受理”信号が送られ(264
6)、タイマがセットされて、ルーチンは終了する。
“代替受理”信号を送る理由は、先に送られた信号が失
われている可能性があるからである。
【0092】タイマが時間切れになれば、タイマ・ポッ
プ信号を送る必要がある(2648)。
【0093】例 この発明は、マルチシステム環境における使用例から最
も容易に理解される。
【0094】READ/WRITE SERIALIZ
EDの例 図19(19A、19B)は、同じリソースに対する複
数のシステムからのREAD/WRITE SERIA
LIZED処理の一例である。システムA、システムB
の2つのシステムの各々の制御の流れを示す。1901
でユーザはリソースXのREAD SERIALIZE
D要求を出す。図20の2001、2002、200
3、及び2004は、このREAD SERIALIZ
ED要求の初めのロック・ブロックの状態を示す。ロッ
ク・ブロックのフィールドはすべて初めはゼロである。
ユーザの要求に応答して、リソースXに対するシステム
Aのロック・ブロックが書き込まれる(1902)。図
20の2005は、このステップが完了した後のシステ
ムAのロック・ブロックの内容を示す。システムAを示
すシーケンス・ナンバ(SEQ)10がブロックに追加
されており、この要求の時刻値TOD1はここで時刻フ
ィールドに入力される。リソースXに関連する他のロッ
ク・ブロック2006、2007、2008は不変であ
る。次に、リソースXの全ロック・ブロックが読み出さ
れる(1903)。先に述べたとおり、システムAに関
連するブロックを除くすべてのロック・ブロックはゼロ
なので、ロック・ルール1により、システムAはリソー
スXを所有する(1904)。次に1905では、リソ
ースXのデータがストレージに読み込まれる。次に処理
はREAD SERIALIZED要求側に戻り(19
06)、リソースXが正常に読み出されたことが示され
る。
【0095】次に1907で、ユーザは、システムBか
らリソースXのREAD SERIALIZED要求を
出す。リソースXに対するシステムBのロック・ブロッ
クはプライマリ・データ・ストアに書き込まれる(19
08)。図20の2010は、このロック・ブロックの
内容を示す。シーケンス・ナンバ15はシステムBに関
連し、時刻TOD2は、システムBのロック・ブロック
を書き込む要求に関連する時刻値である。プライマリと
代替データ・ストア上の他のすべてのロック・ブロック
2009、2011、2012は不変である。システム
Bは次に、リソースXのすべてのロック・ブロックを読
み出す(1909)。ロック・ルール2により、システ
ムBは1910において、リソースXを待つ必要があ
る。ゼロ以外のロック・ブロック値がシステムBのロッ
ク・ブロック値よりも古いからである。すなわちTOD
1(2009)はTOD2(2010)よりも古い。シ
ステムBはそこで、システムBがリソースXの所有者に
なったことの指示を待つ(1911)。この待機期間
に、他のリソースまたはレコードの要求が遅れることは
ない。
【0096】次に1912でシステムAのユーザは、リ
ソースXのWRITE SERIALIZED要求を出
す。リソースがまだシステムAによって所有されている
ことが確認されると、1913において、リソースXに
対する更新されたユーザ・データがプライマリ・データ
・ストアに書き込まれる。ロック・ブロックA(200
9)にはまだシーケンス・ナンバ10とTOD値TOD
1があるので、リソースはまだ所有されており、データ
の更新は成功する。次に1914において、リソースX
の更新されたユーザ・データが代替データ・ストアに書
き込まれ、リソースがまだシステムAに所有されている
かどうかチェックされる。所有権は、ロック・ブロック
Aにシーケンス・ナンバ0、TOD値0がなければなら
ないことを意味する。この場合はそれに当たるので(図
20の2011)、リソースはまだ所有されており、デ
ータの更新は成功する。次に、1915でリソースXの
システムAのロック・ブロックがプライマリ・データ・
ストアに書き込まれ、リソースXがアンロックされる。
すなわちロック・ブロックAはすべてゼロにセットされ
る(図20の2013)。次にリソースXのすべてのロ
ック・ブロックが読み出される(1916)。これによ
りシステムAは次の所有者を検出することができる(1
917)。次の所有者は、最も古い時刻フィールドに関
連するシステムである。例の場合はシーケンスが15
(図20の2014)のシステムBである。システムA
はここで、システムBに、それが所有者であることを通
知する。最後に1918で、システムAはWRITE
SERIALIZED要求側に戻り、リソースが書き込
まれたことを示す。システムBは、システムAから自身
がリソースXの所有者になったことの通知を受けて、リ
ソースXのデータを読み出す(1919)。この後シス
テムBはREAD SERIALIZED要求側に戻
り、リソースXが読み出されたことを示す(192
0)。
【0097】ロック・スティール処理例1 図21(21A〜21E)は、システムがデータをプラ
イマリ・データ・ストアに正常に書き込む前にロックが
奪われるロック・スティール処理の一例である。この例
は、相互に関連した3つのシステム(システムA、シス
テムB、システムC)上の制御の流れを示す。
【0098】2101でユーザは、リソースXのREA
D SERIALIZED要求を出す。図22の220
1、2202、2203、2204、2205、及び2
206は、このREAD SERIALIZED要求の
初めのロック・ブロックの状態を示す。ロック・ブロッ
クのフィールドはすべて最初はゼロである。ユーザ要求
に応答して、システムAのリソースXのロック・ブロッ
クが書き込まれる(2102)。図22の2207に、
このステップが完了した後のシステムAのロック・ブロ
ックの内容を示す。システムAを示すシーケンス・ナン
バ10がブロックに追加されており、当該要求の時刻値
TOD1がここで時刻フィールドに入力される。リソー
スXに関連する他のロック・ブロック2208、220
9、2210、2211、及び2212は不変である。
次に、リソースXのすべてのロック・ブロックが読み出
される(2103)。先に触れたとおり、システムAに
関連するブロックを除くふべてのロック・ブロックはゼ
ロなので、ロック・ルール1により、システムAはリソ
ースXを所有する(2104)。次に、リソースXのデ
ータがストレージに読み込まれる(2105)。そこで
処理はREAD SERIALIZED要求側に戻り
(2106)、リソースXが正常に読み出されたことが
示される。次に、システムBのユーザはリソースXのR
EAD SERIALIZED要求を出す(210
7)。これより少し早く、システムCのユーザがリソー
スXのREAD SERIALIZED要求を出す(2
108)。システムCはリソースXのそのロック・ブロ
ックをプライマリ・データ・ストアに書き込む。このロ
ック・ブロックは図22の2215に示した。システム
Bのリソースxのロック・ブロックもプライマリ・デー
タ・ストアに書き込まれる(図21の2110)。図2
2の2220はこのロック・ブロックの内容を示す。次
にシステムCはリソースXのすべてのロック・ブロック
を読み出し(図21の2111)、システムBもリソー
スXのすべてのロック・ブロックを読み出す(211
2)。システムBは、ゼロではないロック・ブロック値
がすべて、そのロック・ブロック値よりも古いことを検
出する。すなわちTOD1(図22の2219)とTO
D2(2221)はTOD3(2220)よりも古い。
ロック・ルール2により、システムBは、自身がこのリ
ソースの所有者であるという信号を受け取るまでは、リ
ソースXを待っていなければならない。この間、他のリ
ソースまたはレコードの要求が遅れることはない。一方
(2114)システムCは、少なくとも1つのシステム
のTODがそのTODよりも新しいことを検出するので
(図22の2220のTOD3は2221のTOD2よ
りも新しい)、ロック・ルール3により、リソースXの
所有状態は不定である。次にシステムCはそのロック・
ブロックをリソースXの新しいTOD値で更新する(図
21の2115)。図22の2227にこのロック・ブ
ロックの新しい状態を示す(TOD4が新しいTOD
値)。システムCは次に、リソースXのすべてのロック
・ブロックを読み出す(図21の2116)。システム
Cは次に(2117)、ロック・ブロックのなかで最も
古いTODを持つシステムを探し、システムA(図22
の2225のTOD1)がこの時点で3つのTODのう
ち最も古いTODであると判定する。システムCはこの
所有権をシステムAに通知する。システムAはこの所有
権の信号を受け取るが(2118)、自身がリソースX
の所有者であることをすでに知っているのでこの信号を
無視する。
【0099】システムAは、何らかの原因により、シス
テム・オペレータによって停止モードにされる(図21
の2120)。これにより待機中のすべてのシステム
(システムC、システムB)は、リソースXの待機時間
が長すぎることを検出する。2121でシステムCは、
リソースXの待機時間が長すぎることを検出するので、
リソースXの全ロック・ブロックを読み出して現在の所
有者を判定する。同様に(2122)システムBも、リ
ソースXの待機時間が長すぎることを検出するので、こ
のリソースの全ロック・ブロックを読み出して現在の所
有者を判定する。2123、2124でシステムCとシ
ステムBは、システムAがリソースXの所有者であると
判定し(システムAが最も古いTODを持つ)、待ち続
ける。2125ではシステムCがまた、リソースXの待
機時間が長すぎることを検出するので、このリソースの
全ロック・ブロックを読み出して現在の所有者を判定す
る。システムCは、システムAが現在の所有者であると
判定し(システムAが最も古いTODを持っている)、
待機時間が長すぎることを最後に確認したときにシステ
ムAが所有者として記録されたことを認識すると、シス
テムAからのリソースXのロック・スティールを開始す
る(2126)。この奪取を達成するために、2127
で、システムAに関連したプライマリ・データ・ストア
からのリソースXから読み出されたシーケンス・ナンバ
とTODが、ここでシステムCによって、代替データ・
ストアのシステムAのリソースXのロック・ブロックに
書き込まれる。図22の2234に代替データ・ストア
内のこのロック・ブロックの値を示す。プライマリ・デ
ータ・ストアのロック・ブロック2231、2232、
及び2233は不変であり、システムB、Cに対する代
替データ・ストアのロック・ブロック2235、223
6も同様であることに注意されたい。次に、システムC
によって、ゼロ値がシステムAに対するリソースXのプ
ライマリ・データ・ストアのロック・ブロックに書き込
まれる(図21の2128)。システムAに関連するプ
ライマリ・データ・ストアのこの新しいロック・ブロッ
クは図22の2237に示した。
【0100】次にシステムBは、リソースXの待機時間
が長すぎることを検出し、このリソースの全ロック・ブ
ロックを読み出して現在の所有者を判定する(図21の
2129)。システムBは、自身がリソースXの所有者
であると判定するが(ロック・ブロックから読み出され
たそのTODが最も古い)、システムBが待機時間が長
すぎることを最後に検出したときは所有者ではなかっ
た。システムBは、自身がいくらか所有者になったと認
識して、この所有権を自分に通知する(図21の213
0)。一方(2131)、システムCはリソースXのす
べてのロック・ブロックを読み出す。システムCは次
に、どのシステムがリソースXの所有者になるかを判定
する(図21の2132)。次の所有者はシステムBに
なる(TODが最も古い)。システムCは、システムB
に、それがリソースXの所有者になったことを通知す
る。2133において、システムBがリソースXの所有
者になったという信号がシステムBによって受信される
(システムBは“ロック所有者”信号を受け取る −
図14参照)。2135において、リソースXに対する
第2のロック所有者信号がシステムBによって受信され
る。システムBは自身が所有者であることをすでに知っ
ているので、この信号を棄却する。(すなわちロック所
有者信号処理が起動されるが、ロック所有者信号が入力
されたときにREAD SERIALIZEDは起動さ
れない。)2134ではシステムAのオペレータがシス
テムを再スタートさせ、停止されていたタスクをすべて
実行させる。2136ではシステムBが(リソースXの
新所有者)、リソースXに置こうとするデータを読み出
す。処理はここでREAD SERIALIZED要求
側に戻り、リソースXが正常に読み出されたことが示さ
れる(2138)。2137では、システムAのユーザ
がリソースXのWRITE SERIALIZED要求
を出す。リソースXに対する更新されたシステムAのユ
ーザ・データは、プライマリ・データ・ストアに書き込
まれようとし、リソースXがまだシステムAによって所
有されているかどうかをチェックするためにそのロック
・ブロックが調べられる(2139)。そのロック・ブ
ロックの値はそのシーケンス・ナンバ10にセットされ
なくなっているので − 先に述べたようにゼロに変え
られている(図22の2237参照) − システムA
は、リソースXを所有しなくなったと判定する。そのた
めWRITE SERIALIZED要求は成功せず
(図21の2140)、処理はWRITE SERIA
LIZED要求側に戻り、リソースXが正常に書き込ま
れなかったことが示される。
【0101】ロック・スティール処理例2 図23(23A〜23F)は、システムがデータをプラ
イマリ・データ・ストアに正常に書き込んだ後で、代替
データ・ストアに対するWRITEの前にロックが奪わ
れるときのロック・スティール処理の一例である。
【0102】2301でユーザはリソースXのREAD
SERIALIZED要求を出す。図24の240
1、2402、2403、及び2404に、このREA
D SERIALIZED要求の初めのロック・ブロッ
クの状態を示す。ロック・ブロックのフィールドはすべ
て最初はゼロである。ユーザ要求に応答して、システム
AのリソースXのロック・ブロックが書き込まれる(2
302)。図24の2405にこのステップが完了した
後のシステムAのロック・ブロックの内容を示す。シス
テムAを示すシーケンス・ナンバ10がブロックに追加
されており、この要求の時刻値TOD1がここで時刻フ
ィールドに入力される。リソースXに関連する他のロッ
ク・ブロック2406、2407、及び2408は不変
である。次にリソースXのすべてのロック・ブロックが
読み出される(2303)。先に触れたとおり、システ
ムAに関連するブロックを除くすべてのロック・ブロッ
クはゼロなので、ロック・ルール1により、システムA
はリソースXを所有する(2304)。次に(230
5)、リソースXのデータがストレージに読み込まれ
る。そこで処理はREAD SERIALIZED要求
側に戻り、リソースXが正常に読み出されたことが示さ
れる。次に(2307)システムBのユーザがリソース
XのREAD SERIALIZED要求を出す。シス
テムBのリソースXのロック・ブロックはプライマリ・
データ・ストアに書き込まれる(図23の2308)。
図24の2410にこのロック・ブロックの内容を示
す。システムBは次に、リソースXのすべてのロック・
ブロックを読み出す(図23の2309)。システムB
は、ゼロでないロック・ブロック値がすべてそのロック
・ブロック値よりも古いことを検出する。すなわちTO
D1(図24の2409)がTOD2(2410)より
も古いことを知る。ロック・ルール2により、システム
Bは、自身がこのリソースの所有者であるという信号を
受け取るまではリソースXを待っていなければならな
い。この間、他のリソースまたはレコードの要求が遅れ
ることはない。
【0103】ここでシステムAは、何らかの原因によ
り、システム・オペレータによって停止モードにされる
(図23の2311)。これにより待機中のすべてのシ
ステムは(この場合はシステムB)、結果的に、リソー
スXの待機時間が長すぎることを認識する(図18「ロ
ック・スティール処理」の説明を参照)。2312では
システムBは、リソースXの待機時間が長すぎることを
検出するので、リソースXの全ロック・ブロックを読み
出して現在の所有者を判定する。2313ではシステム
BはシステムAがリソースXの所有者であると判定し
(TODが最も古い)、待ち続ける。2314では再び
システムBが、リソースXの待機時間が長すぎることを
検出するので、このリソースのすべてのロック・ブロッ
クを読み出して現在の所有者を判定する。システムB
は、2315でシステムAが現在の所有者であると判定
し(TODが最も古い)、システムBが待機時間の長す
ぎることを最後に確認したときにシステムAが所有者と
して記録されたことを認識して、システムAからのリソ
ースXのロックのスティールを開始する。これを達成す
るために(2316)、システムAに関連したプライマ
リ・データ・ストアからのリソースXから読み出された
シーケンス・ナンバとTOD(図24の2409)がこ
こでシステムBによって代替データ・ストアのシステム
AのリソースXのロック・ブロックに書き込まれる。図
24の2415に代替データ・ストアのこのロック・ブ
ロックの値を示す。プライマリ・データ・ストアのロッ
ク・ブロック2413、2414は、システムBの代替
データ・ストアのロック・ブロック(2416)と同様
に変わらないことに注意されたい。
【0104】2317ではシステムAのオペレータがシ
ステムを再スタートさせ、停止されていたタスクをすべ
て完了させる。2318ではシステムAのユーザがリソ
ースXのWRITE SERIALIZED要求を出
す。リソースXのシステムAの更新されたユーザ・デー
タはプライマリ・データ・ストアに書き込まれ、リソー
スXがまだシステムAによって所有されているかどうか
をみるためにそのロック・ブロックがチェックされる
(2319)。システムBはまだ、リソースXのシステ
ムAのロック・ブロックをゼロに変えてはいないので、
システムAは自身がまだリソースXを所有しているとみ
なす。次に(2320)システムBはプライマリ・デー
タ・ストアのシステムAのリソースXのロック・ブロッ
クにゼロを書き込む。図24の2417にこの新しいロ
ック・ブロックを示す。次に(2321)システムBは
リソースXのすべてのロック・ブロックを読み出す。次
に(2322)システムAはリソースXの更新されたユ
ーザ・データを代替データ・ストアに書き込もうとし、
リソースがまだシステムAによって所有されているかど
うかをチェックする(チャネル・プログラムによって実
行される検証については図16「WRITE DAT
A」の説明を参照)。しかしこの書き込みは成功しない
(2323)。ロックがシステムAに所有されなくなっ
ているからである。
【0105】リソースXの代替データ・ストアへの更新
は成功しなかったが、更新されたデータは先にプライマ
リ・データ・ストアに書き込まれている(2319)。
更新されたデータはこのリソースの他のユーザに開放さ
れている。したがって、システムAのユーザに、書き込
みが不成功に終わったと通知するのは正しくない。そう
ではなくデータが2重化されるようにする必要がある
(2323)。そのためには最初に、ロックが当該シス
テムで現在処理されている要求から奪われたか、当該シ
ステムの前の要求から奪われたかどうかを判定する必要
がある(2324)。当該システムのロック・ブロック
はリソースXについて読み込まれ、代替ロック・ブロッ
クはクリアされる(図15の1511以降を参照)。一
方(2325)リソースXの所有者はシステムBと判定
されている(TODが最も古い)。システムBは所有者
と判定され、それがリソースXの所有者であることが通
知される。2326ではシステムBは自身がリソースX
の所有者であるというそれ自身の信号を受け取る。シス
テムAでは(2327)、代替データ・ストア上のユー
ザの変更をバックアップする最初のステップとしてRE
AD SERIALIZEDが内部で起動される。23
28ではシステムBがリソースXのデータを読み込む。
2329では、内部で起動されたREAD SERIA
LIZED処理の第1ステップとして、システムAのリ
ソースXのロック・ブロックがプライマリ・データ・ス
トアに書き込まれる。このロック・ブロックの内容は図
24の2425に示した(TOD3は現在の要求の時刻
値)。2330では処理がREAD SERIALIZ
ED要求側に戻り、リソースXがシステムBによって正
常に読み出されたことが示される。2331では再び、
2327において内部で起動されたREAD SERI
ALIZEDプロセスの一部として、リソースXの全ロ
ック・ブロックが読み出される。ゼロでないロック・ブ
ロック値はすべて、システムAのロック・ブロック値よ
りも古いので(TOD2はTOD3よりも古い)、シス
テムAは、ロック・ルール2により、リソースXを待っ
ていなければならない(図23の2332)。2333
ではシステムBのユーザがリソースXのWRITE S
ERIALIZED要求を出す。リソースXの更新され
たユーザ・データがそこでプライマリ・データ・ストア
に書き込まれ、リソースXがまだシステムBによって所
有されているかどうかがチェックされる(2334)
(図16のチャネル・プログラム検証の説明を参照)。
次に2335で、リソースXの更新されたユーザ・デー
タが代替データ・ストアに書き込まれ、リソースがまだ
システムBによって所有されているかどうかがチェック
される。次に(2336)システムBのリソースXのロ
ック・ブロックが書き込まれてリソースXがアンロック
される(図24の2430)。
【0106】リソースXのロック・ブロックはすべて2
337で読み出され、次の所有者が判定される(233
8)。ロック所有者信号がシステムAに送られる。そこ
で処理はWRITE SERIALIZED要求側に戻
り(2339)、リソースXが正常に書き込まれたこと
が示される。2340ではシステムAが、自身がリソー
スXの所有者になったという信号を受け取る。そこでシ
ステムAはリソースXのデータを読み出す。このデータ
は、システムAが最初に加えた変更と、システムBの変
更から成る。2341で処理はREAD SERIAL
IZED要求側に戻り、リソースが正常に読み出された
ことが示される。この場合、要求側はWRITE SE
RIALIZED処理である(内部のREAD SER
IALIZED要求であるため)。2342で(読み出
されたばかりの)リソースXのデータがプライマリ・デ
ータ・ストアに書き込まれ、リソースがまだシステムA
に所有されているかどうかがチェックされる。次に(2
343)、リソースXのデータが代替データ・ストアに
書き込まれ、再び、リソースがまだ当該システムによっ
て所有されているかどうかがチェックされる(チャネル
・プログラム検証− 図16参照)。システムAのロッ
ク・ブロックがそこですべてゼロとしてプライマリ・デ
ータ・ストアに書き込まれてリソースXがアンロックさ
れる(2344)。図24の2433にこれを示す。次
にリソースXのロック・ブロックはすべて読み出され
(2345)、次の所有者が判定される(2346)。
この時点ではリソースXを待っているものがないのでロ
ック所有者信号は送られないことに注意されたい。そこ
で処理はWRITE SERIALIZED要求側に戻
り、リソースXが正常に書き込まれたことが示される
(2347)。ここでプライマリ、代替の両データ・ス
トアが、システムAとシステムBの変更内容の組み合わ
せを含む。
【0107】
【発明の効果】この発明により、システムまたはシステ
ム・コンプレクスの各ユーザ間でデータを効率よく共有
することができる。
【図面の簡単な説明】
【図1】「共有データ・アクセス直列化」ユーザ・プロ
グラム、DASD上のユーザ・データ、及び各システム
上の「共有データ・アクセス直列化」のインスタンスの
関係を示すブロック図である。
【図2】「共有データ・アクセス直列化」のユーザが使
用できるサービスを示すブロック図である。
【図3】ユーザ・データの管理において「共有データ・
アクセス直列化」に用いられる共有データ・ストアの内
容を示すブロック図である。
【図4】各ユーザ・データ項目に関係する制御構造を示
すブロック図である。
【図5】リソースへのアクセスを制御するのに用いられ
る構造を示すブロック図である。
【図6】リソースのデータの整合性を保証するのに用い
られる構造を示すブロックである。サフィクス・レコー
ドとチェック・レコードの構造は同じである。
【図7】READ要求処理の制御の流れを示す図であ
る。
【図8A】READ DATA処理の制御の流れを示す
図である。
【図8B】READ DATA処理の制御の流れを示す
図である。
【図9A】永続的エラー処理の制御の流れを示す図であ
る。
【図9B】永続的エラー処理の制御の流れを示す図であ
る。
【図10A】READ SERIALIZED要求処理
の制御の流れを示す図である。
【図10B】READ SERIALIZED要求処理
の制御の流れを示す図である。
【図10C】READ SERIALIZED要求処理
の制御の流れを示す図である。
【図11】ロック・ブロック・リード処理の制御の流れ
を示す図である。
【図12】ロック・ブロック修復処理の制御の流れを示
す図である。
【図13】ロック・ブロック・ライト処理の制御の流れ
を示す図である。
【図14A】ロック所有者信号処理の制御の流れを示す
図である。
【図14B】ロック所有者信号処理の制御の流れを示す
図である。
【図15A】WRITE SERIALIZED要求処
理の制御の流れを示す図である。
【図15B】WRITE SERIALIZED要求処
理の制御の流れを示す図である。
【図15C】WRITE SERIALIZED要求処
理の制御の流れを示す図である。
【図16】データ・ライト処理の制御の流れを示す図で
ある。
【図17】UNLOCK要求処理の制御の流れを示す図
である。
【図18A】ロック・スティール処理の制御の流れを示
す図である。
【図18B】ロック・スティール処理の制御の流れを示
す図である。
【図19A】同じリソースに対する複数のシステムにつ
いてのリード直列化の例の制御の流れを示すテーブルで
ある。
【図19B】同じリソースに対する複数のシステムにつ
いてのリード直列化の例の制御の流れを示すテーブルで
ある。
【図20】図19の例のロック・ブロックの状態変化を
示すテーブルである。
【図21A】第1ロック・スティール処理の例の制御の
流れを示すテーブルである。
【図21B】第1ロック・スティール処理の例の制御の
流れを示すテーブルである。
【図21C】第1ロック・スティール処理の例の制御の
流れを示すテーブルである。
【図21D】第1ロック・スティール処理の例の制御の
流れを示すテーブルである。
【図21E】第1ロック・スティール処理の例の制御の
流れを示すテーブルである。
【図22】図21の例のロック・ブロックの状態変化を
示すテーブルである。
【図23A】第2ロック・スティール処理の例の制御の
流れを示すテーブルである。
【図23B】第2ロック・スティール処理の例の制御の
流れを示すテーブルである。
【図23C】第2ロック・スティール処理の例の制御の
流れを示すテーブルである。
【図23D】第2ロック・スティール処理の例の制御の
流れを示すテーブルである。
【図23E】第2ロック・スティール処理の例の制御の
流れを示すテーブルである。
【図23F】第2ロック・スティール処理の例の制御の
流れを示すテーブルである。
【図24】図23の例のロック・ブロックの状態変化を
示すテーブルである。
【図25】プライマリ・ストア・ディスクリプタ、代替
ストア・ディスクリプタ、及びロック要求要素の制御ブ
ロック構造を示すブロック図である。
【図26A】“新代替”処理の制御の流れを示す図であ
る。
【図26B】“新代替”処理の制御の流れを示す図であ
る。
【図26C】“新代替”処理の制御の流れを示す図であ
る。
【図26D】“新代替”処理の制御の流れを示す図であ
る。
【図26E】“新代替”処理の制御の流れを示す図であ
る。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 マイケル・ダスティン・スワンソン アメリカ合衆国ニューヨーク州、パキプ シ、カレッジ・アヴェニュー 95番地

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】各システムがメイン・ストレージ、システ
    ム・リソース、該システム・リソースを管理するオペレ
    ーティング・システム、及び外部媒体に存在する共有デ
    ータより成る、マルチシステムのセントラル・エレクト
    ロニック・コンプレクス(CEC)において、該共有デ
    ータへのアクセスを制御する方法であって、 A)上記共有データの共有リソース要素を外部媒体上の
    プライマリ・データ・ストアに配置するステップと、 B)各ブロックがシステムの1つに一意に関連づけられ
    たロック・ブロックより成るアクセス制御情報を、上記
    共有リソース要素に関連づけるステップと、 C)上記アクセス制御情報を用いた排他的アクセス制御
    方法によって、上記プライマリ・データ・ストアの上記
    共有リソース要素への排他的アクセスを第1システム上
    の第1プログラムに許可するステップと、 D)上記第1プログラムによって、上記共有リソース要
    素を上記メイン・ストレージに読み込むステップと、 E)上記第1プログラムによって、上記メイン・ストレ
    ージの上記共有リソース要素に変更を加えるステップ
    と、 F)上記第1プログラムによって、変更を加えられた上
    記リソース要素を上記プライマリ・データ・ストアに書
    き戻すステップと、 G)上記プライマリ・データ・ストア上の上記リソース
    要素への上記第1プログラムの排他的アクセス権を解除
    するステップとを含む、 アクセス制御方法。
  2. 【請求項2】ロック・ブロックより成るアクセス制御情
    報を持つ代替データ・ストアに、該データ・ストアと実
    質上同様なプライマリ・データ・ストアのコピーを作成
    するステップを含む、請求項1に記載のアクセス制御方
    法。
  3. 【請求項3】上記排他的アクセス制御方法が、 A)上記第1システムに関連するロック・キーを生成す
    るステップと、 B)上記共有リソース要素及び上記第1システムに関連
    する、上記プライマリ・データ・ストア上のロック・ブ
    ロックの1つに上記ロック・キーを書き込むステップ
    と、 C)上記リソースに関連するすべてのロック・ブロック
    を上記プライマリ・データ・ストアから読み出すステッ
    プと、 D)上記リソースの所有者を判定するためにロック・ル
    ールの方法を適用するステップとを含む、 請求項1または2に記載のアクセス制御方法。
  4. 【請求項4】上記排他的アクセス制御方法が、 A)システムが上記共有リソース要素を待っている時間
    が長すぎることを待機時間超過検出方法によって判定す
    るステップと、 B)ロック・スティーリング方法によって、上記リソー
    スの排他的制御権を上記待機中のシステムに引き渡すス
    テップとを含む、 請求項3に記載のアクセス制御方法。
  5. 【請求項5】上記ロック・ルールの方法が、 A)上記プライマリ・データ・ストア上の上記共有リソ
    ース要素に関連するロック・ブロックが上記第1システ
    ムに関連するロック・ブロックを除いてすべてゼロのと
    きに、該第1システムを該リソースの所有者と判定する
    ステップと、 B)上記共有リソース要素に関連し、上記第1システム
    には関連しない少なくとも1つのロック・ブロックがゼ
    ロではなく、ゼロではないかかる各ロック・ブロックの
    時刻値が該第1システムの時刻値よりも古いときに、該
    第1システムを該共有リソース要素の所有者ではないと
    判定し、該第1システムに、該共有リソース要素の所有
    権の通知を待機させるステップと、 C)ロック・ルール(A)及び(B)が適用されないと
    きに、所有権が確定しない状況を識別し、上記第1シス
    テムによって、新しい時刻値を生成し、該新時刻値をも
    って、上記共有リソース要素及び上記第1システムに関
    連するすべてのロック・ブロックを更新し、読み出され
    た上記のどのリソース要素が最も古い時刻値を持つかを
    判定し、かつ時刻値が最も古い上記読み出されたロック
    ・ブロックの1つに関連する第2システムに、該第2シ
    ステムが上記共有リソース要素の所有者となったことを
    通知するステップとを含む、 請求項4に記載のアクセス制御方法。
  6. 【請求項6】上記ロック・スティーリング方法が、 A)前のリソース所有者に関連する上記プライマリ・デ
    ータ・ストアに関連したロック・ブロックを第2データ
    ・ストアに書き込むステップと、 B)上記プライマリ・データ・ストア内の、上記前のリ
    ソース所有者に関連するロック・ブロックをゼロにする
    ステップと、 C)リソース待機時間が最長のシステムを判定し、待機
    中のかかるシステムが上記共有リソース要素の排他的制
    御権を持つことを該システムに通知するステップとを含
    む、 請求項5に記載のアクセス制御方法。
  7. 【請求項7】A)上記プライマリ・データ・ストアに欠
    陥レコードがあることを、ローカルエラー検出手段によ
    って判定するステップと、 B)上記プライマリ・データ・ストア上でローカル・エ
    ラーを訂正するステップとを含む、 請求項1に記載のアクセス制御方法。
  8. 【請求項8】A)上記プライマリ・データ・ストアに訂
    正できないエラーが発生したことをグローバルエラー検
    出手段によって判定するステップと、 B)上記プライマリ・データ・ストアを上記代替データ
    ・ストアと取り替えるステップと、 C)新しい代替データ・ストアを動的に生成するステッ
    プとを含む、 請求項2に記載のアクセス制御方法。
  9. 【請求項9】各システムが、メイン・ストレージ、シス
    テム・リソース、該システム・リソースを管理するオペ
    レーティング・システム、及び外部媒体に存在する共有
    データより成る、マルチシステムのセントラル・エレク
    トロニック・コンプレクス(CEC)において、該共有
    データへのアクセスを制御する直列化メカニズムであっ
    て、 A)共有データを持つ共有リソース要素より成るプライ
    マリ・データ・ストアと、 B)上記プライマリ・データ・ストア上の上記共有リソ
    ース要素への排他的アクセス権を取得する上記コンプレ
    クスの第1システムのための、該プライマリ・データ・
    ストア内の排他的アクセス手段と、 C)上記プライマリ・データ・ストア内のグローバル制
    御要素とを含む、 直列化メカニズム。
  10. 【請求項10】上記プライマリ・データ・ストアと実質
    上同様な代替データ・ストアより成る、請求項9に記載
    のマルチシステムCEC。
  11. 【請求項11】上記排他的アクセス手段が、あるシステ
    ムに関連し、該システムが共有リソース要素を必要とす
    るときに上記プライマリ・データ・ストア上にゼロ値を
    持ち、かつ該システムが該共有リソース要素の排他的制
    御権を取得するときに該プライマリ・データ・ストア上
    に非ゼロ値を持つ、システム・シーケンス・ナンバ・フ
    ィールドと時刻値フィールドとを持ち、該プライマリ・
    データ・ストア上の各共有リソース要素に関連する、シ
    ステム関連ロック・キーを持ったロック・ブロックより
    成る、請求項9または10に記載のマルチシステムCE
    C。
  12. 【請求項12】A)上記第1システムが故障するかまた
    は一時的に停止したことを判定する検出手段と、 B)上記第1システムに割り込みをかけ、該第1システ
    ムが故障するかまたは一時的に停止したときに上記共有
    データのリソースへの排他的アクセス権を待機中のシス
    テムに引き渡す、第2システムのための割り込み(preem
    ption)手段とを含む、 請求項11に記載のマルチシステムCEC。
  13. 【請求項13】上記検出手段が、上記待機中のシステム
    の待機時間と“待機時間超過”間隔を比較するタイマ駆
    動ルーチンより成る、 請求項12に記載のマルチシステムCEC。
  14. 【請求項14】上記割り込み手段がスティーリング・メ
    カニズムより成り、該メカニズムによって、上記第2シ
    ステムが、上記リソースの排他的制御権を付与される新
    しい制御システムを識別し、上記第1システムのプライ
    マリ・ロック・キーをゼロにセットして前のプライマリ
    ・ロック・キーをそのセカンダリ・ロック・キー位置に
    格納することによって、該リソースの排他的制御権を取
    り除き、かつ新しい制御メカニズムが該リソースの排他
    的制御権を得たことを該メカニズムに通知する、 請求項13に記載のマルチシステムCEC。
JP3162417A 1990-07-02 1991-06-07 共有データのアクセスを直列化する方法及び装置 Pending JPH06342396A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US54851690A 1990-07-02 1990-07-02
US548516 1990-07-02

Publications (1)

Publication Number Publication Date
JPH06342396A true JPH06342396A (ja) 1994-12-13

Family

ID=24189178

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3162417A Pending JPH06342396A (ja) 1990-07-02 1991-06-07 共有データのアクセスを直列化する方法及び装置

Country Status (3)

Country Link
US (1) US5305448A (ja)
EP (1) EP0465871A3 (ja)
JP (1) JPH06342396A (ja)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2781092B2 (ja) * 1991-11-06 1998-07-30 富士通株式会社 システム間排他制御方式
US5408653A (en) * 1992-04-15 1995-04-18 International Business Machines Corporation Efficient data base access using a shared electronic store in a multi-system environment with shared disks
JPH06110846A (ja) * 1992-09-25 1994-04-22 Fujitsu Ltd 排他制御方式
US5463754A (en) * 1992-10-30 1995-10-31 International Business Machines Corporation Shared direct access storage device for fixed block architecture devices
JP2963298B2 (ja) * 1993-03-26 1999-10-18 富士通株式会社 二重化共有メモリにおける排他制御命令のリカバリ方法および計算機システム
JP2703498B2 (ja) * 1993-04-30 1998-01-26 インターナショナル・ビジネス・マシーンズ・コーポレイション バージョン化オブジェクトに対するロッキング機構
US5761739A (en) * 1993-06-08 1998-06-02 International Business Machines Corporation Methods and systems for creating a storage dump within a coupling facility of a multisystem enviroment
US5544353A (en) * 1993-06-14 1996-08-06 International Business Machines Corporation Distributed processing object shared resource control apparatus and method
US5600821A (en) * 1993-07-28 1997-02-04 National Semiconductor Corporation Distributed directory for information stored on audio quality memory devices
US5481706A (en) * 1993-11-01 1996-01-02 International Business Machines Corporation System and method for creating thread-safe shared libraries
US5860137A (en) * 1995-07-21 1999-01-12 Emc Corporation Dynamic load balancing
US5887167A (en) * 1995-11-03 1999-03-23 Apple Computer, Inc. Synchronization mechanism for providing multiple readers and writers access to performance information of an extensible computer system
US5920719A (en) * 1995-11-06 1999-07-06 Apple Computer, Inc. Extensible performance statistics and tracing registration architecture
US6389482B1 (en) 1997-08-28 2002-05-14 International Business Machines Corp. Dynamic transitioning from a local pipe to a cross-system pipe
US6178429B1 (en) * 1997-11-26 2001-01-23 Cisco Technology, Inc. Mechanism for ensuring SCM database consistency on multi-part operation boundaries
US7013305B2 (en) 2001-10-01 2006-03-14 International Business Machines Corporation Managing the state of coupling facility structures, detecting by one or more systems coupled to the coupling facility, the suspended state of the duplexed command, detecting being independent of message exchange
US6301676B1 (en) * 1999-01-22 2001-10-09 Sun Microsystems, Inc. Robust and recoverable interprocess locks
US6438654B1 (en) 1999-02-22 2002-08-20 International Business Machines Corporation Castout processing for duplexed cache structures
US6539495B1 (en) 1999-02-22 2003-03-25 International Business Machines Corporation Method, system and program products for providing user-managed duplexing of coupling facility cache structures
US6449614B1 (en) 1999-03-25 2002-09-10 International Business Machines Corporation Interface system and method for asynchronously updating a share resource with locking facility
US6584554B1 (en) 1999-08-23 2003-06-24 International Business Machines Corporation Directed allocation of coupling facility structures
US6317744B1 (en) 1999-08-23 2001-11-13 International Business Machines Corporation Method, system and program products for browsing fully-associative collections of items
US6542970B1 (en) 1999-08-23 2003-04-01 International Business Machines Corporation Method, system and program products for copying coupling facility list structures
US6546414B1 (en) 1999-08-23 2003-04-08 International Business Machines Corporation Method, system and program products for copying coupling facility lock structures
US6266783B1 (en) 1999-08-23 2001-07-24 International Business Machines Corporation System-managed rebuild of coupling facility structures
US6546466B1 (en) 1999-08-23 2003-04-08 International Business Machines Corporation Method, system and program products for copying coupling facility cache structures
US6594667B2 (en) 1999-08-23 2003-07-15 International Business Machines Corporation Method, system and program products for modifying coupling facility structures
US6609214B1 (en) 1999-08-23 2003-08-19 International Business Machines Corporation Method, system and program products for copying coupling facility structures
US6918044B1 (en) 1999-10-15 2005-07-12 Cisco Technology, Inc. Password protection for high reliability computer systems
US6467049B1 (en) 1999-10-15 2002-10-15 Cisco Technology, Inc. Method and apparatus for configuration in multi processing engine computer systems
US6484224B1 (en) 1999-11-29 2002-11-19 Cisco Technology Inc. Multi-interface symmetric multiprocessor
US7526533B1 (en) 1999-11-30 2009-04-28 Cisco Technology, Inc. Active call context reconstruction for primary/backup resource manager servers
US6571276B1 (en) 2000-02-23 2003-05-27 International Business Machines Corporation System for managing asset access in a distributed storage system
US6742135B1 (en) * 2000-11-07 2004-05-25 At&T Corp. Fault-tolerant match-and-set locking mechanism for multiprocessor systems
US7058629B1 (en) * 2001-02-28 2006-06-06 Oracle International Corporation System and method for detecting termination of an application instance using locks
US7444335B1 (en) 2001-02-28 2008-10-28 Oracle International Corporation System and method for providing cooperative resource groups for high availability applications
US6892205B1 (en) * 2001-02-28 2005-05-10 Oracle International Corporation System and method for pre-compiling a source cursor into a target library cache
US20020133530A1 (en) * 2001-03-15 2002-09-19 Maarten Koning Method for resource control including resource stealing
US6748470B2 (en) * 2001-11-13 2004-06-08 Microsoft Corporation Method and system for locking multiple resources in a distributed environment
US7028300B2 (en) * 2001-11-13 2006-04-11 Microsoft Corporation Method and system for managing resources in a distributed environment that has an associated object
US20030105871A1 (en) * 2001-11-13 2003-06-05 Microsoft Corporation, Method and system for modifying lock properties in a distributed environment
US7406519B2 (en) * 2001-11-13 2008-07-29 Microsoft Corporation Method and system for locking resources in a distributed environment
US7529844B2 (en) * 2002-04-26 2009-05-05 Sun Microsystems, Inc. Multiprocessing systems employing hierarchical spin locks
US20040024807A1 (en) * 2002-07-31 2004-02-05 Microsoft Corporation Asynchronous updates of weakly consistent distributed state information
US7284151B2 (en) * 2003-07-21 2007-10-16 Oracle International Corporation Conditional data access after database system failure
US7457832B2 (en) * 2004-08-31 2008-11-25 Microsoft Corporation Verifying dynamically generated operations on a data store
WO2007027153A1 (en) 2005-09-01 2007-03-08 Encentuate Pte Ltd Portable authentication and access control involving multiples identities
US8266394B2 (en) * 2008-07-14 2012-09-11 International Business Machines Corporation Methods for single-owner multi-consumer work queues for repeatable tasks
US8490181B2 (en) * 2009-04-22 2013-07-16 International Business Machines Corporation Deterministic serialization of access to shared resource in a multi-processor system for code instructions accessing resources in a non-deterministic order
US9330148B2 (en) 2011-06-30 2016-05-03 International Business Machines Corporation Adapting data quality rules based upon user application requirements
US9037901B2 (en) * 2011-08-19 2015-05-19 International Business Machines Corporation Data set autorecovery
US10095548B2 (en) * 2012-05-21 2018-10-09 Nvidia Corporation Mechanism for waking common resource requests within a resource management subsystem
US10235069B2 (en) * 2016-12-22 2019-03-19 Western Digital Technologies, Inc. Load balancing by dynamically transferring memory range assignments
US11249656B2 (en) * 2019-07-24 2022-02-15 EMC IP Holding Company LLC Performance optimization for active-active locking using sticking affinity for storage objects

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62214466A (ja) * 1986-03-17 1987-09-21 Fujitsu Ltd 記憶装置ロツク制御方式

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4823261A (en) * 1986-11-24 1989-04-18 International Business Machines Corp. Multiprocessor system for updating status information through flip-flopping read version and write version of checkpoint data
US4979105A (en) * 1988-07-19 1990-12-18 International Business Machines Method and apparatus for automatic recovery from excessive spin loops in an N-way multiprocessing system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62214466A (ja) * 1986-03-17 1987-09-21 Fujitsu Ltd 記憶装置ロツク制御方式

Also Published As

Publication number Publication date
US5305448A (en) 1994-04-19
EP0465871A2 (en) 1992-01-15
EP0465871A3 (en) 1993-03-31

Similar Documents

Publication Publication Date Title
JPH06342396A (ja) 共有データのアクセスを直列化する方法及び装置
US6266781B1 (en) Method and apparatus for providing failure detection and recovery with predetermined replication style for distributed applications in a network
JP5264077B2 (ja) 地理的分散型クラスタ
US5907849A (en) Method and system for recovery in a partitioned shared nothing database system using virtual share disks
US6195760B1 (en) Method and apparatus for providing failure detection and recovery with predetermined degree of replication for distributed applications in a network
US7370248B2 (en) In-service raid mirror reconfiguring
US6681339B2 (en) System and method for efficient failover/failback techniques for fault-tolerant data storage system
JP3655963B2 (ja) 記憶制御装置、それを含むデータ記憶システムおよび二重ペア抑止方法
US5884328A (en) System and method for sychronizing a large database and its replica
JPH06119232A (ja) 共用データ記憶制御システム、マスター処理装置の設定方法、及びデータ複写方法
US5940826A (en) Dual XPCS for disaster recovery in multi-host computer complexes
EP0499422A2 (en) Page transfer in a data sharing environment with record locking
US20050144406A1 (en) Data storage systems and processes, such as one-way data mirror using write mirroring
US20050149683A1 (en) Methods and systems for data backups
JPS62105247A (ja) デ−タ・ベ−ス・システムの管理方法
JPH05225019A (ja) 複数コンピュータ・データ共用システムにおける共用記憶の障害からのデータベースの回復方法
CA2310099A1 (en) Computer system transparent data migration
US5450590A (en) Authorization method for conditional command execution
JPH05210555A (ja) ゼロ時間データ・バックアップ・コピーの方法及び装置
JP3445797B2 (ja) 最適化された同期化プロシージャ
US20030163560A1 (en) Managing connections to coupling facility structures
US7194675B2 (en) Backup method, backup system, disk controller and backup program
US20050246567A1 (en) Apparatus, system, and method for transactional peer recovery in a data sharing clustering computer system
US20050149554A1 (en) One-way data mirror using write logging
US6192460B1 (en) Method and apparatus for accessing data in a shadow set after a failed data operation