JP5466717B2 - データの整合性を維持するための装置、方法、およびコンピュータ・プログラム(データの整合性を維持するための装置) - Google Patents

データの整合性を維持するための装置、方法、およびコンピュータ・プログラム(データの整合性を維持するための装置) Download PDF

Info

Publication number
JP5466717B2
JP5466717B2 JP2011548640A JP2011548640A JP5466717B2 JP 5466717 B2 JP5466717 B2 JP 5466717B2 JP 2011548640 A JP2011548640 A JP 2011548640A JP 2011548640 A JP2011548640 A JP 2011548640A JP 5466717 B2 JP5466717 B2 JP 5466717B2
Authority
JP
Japan
Prior art keywords
instance
lock
component
software
processes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2011548640A
Other languages
English (en)
Other versions
JP2012517057A (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 JP2012517057A publication Critical patent/JP2012517057A/ja
Application granted granted Critical
Publication of JP5466717B2 publication Critical patent/JP5466717B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • G06F16/1767Concurrency control, e.g. optimistic or pessimistic approaches
    • G06F16/1774Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files

Description

本発明は、データの整合性を維持するための装置に関する。
「高可用性」商用コンピューティング環境において、典型的には、ハードウェア障害およびソフトウェア障害からの重大プログラムの即時回復を提供するために、ハードウェア技術とソフトウェア技術とが組み合わせられる。この環境は、単一障害点を除去するように設計される。
たとえば典型的な高可用性環境は、一般に、ディスク・ドライブなどのリソースを共有するいくつかの疎結合(loosely coupled)コンピュータを備える。不可欠なプログラムは、いずれのコンピュータ・セット上でも実行可能である。さらに、ハードウェア・リソース(たとえばディスク・ドライブ)はコンピュータ間で共有される。不可欠なプログラムの使用不能につながるハードウェアまたはソフトウェアの障害は、このプログラムを他のコンピュータに移動することにより、その可用性を復元することによって修復可能である。
典型的な高可用性環境は、歴史的に、高可用性(HA)ソフトウェアと呼ばれるソフトウェアによって管理されてきた。HAソフトウェアは、通常、コンポーネントを監視すること、および障害に応答してリソースを移動させる責務を担うことによって、ハードウェアおよびソフトウェア・コンポーネントの管理を行う。
こうした高可用性環境(100)の例が、図1に示されており、第1のHAソフトウェア(117)と、高可用性ソフトウェア・コンポーネントの第1のインスタンス(110)とを有する、第1のコンピュータ(105)を備え、ここでソフトウェア・コンポーネント(110)は、共有リソース(たとえば、データを備える共有ディスク(120))にアクセスするように動作可能である。
高可用性環境(100)は、第1のHAソフトウェア(117)と通信するように動作可能な第2のHAソフトウェア(119)を有する第2のコンピュータ(115)も備える。
ある例では、第1のコンピュータ(105)の第1のインスタンス(110)が共有ディスク(120)にアクセスする。第1のHAソフトウェア(117)は、共有ディスク(120)の「所有権」を有する。
第1のコンピュータ(105)に障害が発生した場合、第2のHAソフトウェア(119)は、(たとえば、第2のHAソフトウェアがもはや第1のHAソフトウェア(117)と通信できないことに応答して)その障害を検出するように動作可能である。
図2を参照すると、それに応答して、第2のHAソフトウェア(119)は第1のインスタンス(110)を終了し、共有ディスク(120)の所有権をそれ自体に移し、その後、第2のコンピュータ(115)上でソフトウェア・コンポーネントの第2のインスタンス(125)を開始するように、動作可能である。その後第2のコンピュータ(115)は、第1のコンピュータ(105)から責務を「引き継ぐ」ように動作可能であり、第2のコンピュータ(115)上で実行中の第2のインスタンス(125)が共有ディスク(120)にアクセスできる。
図1および図2の環境(100)は、ソフトウェア・コンポーネントの保証された単一の活動化を提供するものであり、すなわち、ソフトウェア・コンポーネントの2つのインスタンスを異なるコンピュータ上で同時に開始することは不可能である。ソフトウェア・コンポーネントの2つのインスタンスが異なるコンピュータ上で同時に開始された場合、これによって、共有ディスク(120)上のデータ破損などのエラーが引き起こされる可能性がある。
前述の環境(100)は、不可欠なプログラムの高可用性および不可欠なプログラムの保証された単一の活動化を提供するものであるが、特別なハードウェア(たとえば、複数のコンピュータによるアクセスが可能なように特別に構成される必要のある共有ディスク(120))およびソフトウェア(たとえばHAソフトウェア)が必要である。
より最新の技法では、特別なハードウェアあるいはソフトウェアまたはその両方を必要とせずに、高可用性および保証された単一の活動化を達成することができる。
こうした環境(200)が図3に示されており、環境(200)は同じソフトウェア・コンポーネントの2つのインスタンスを備える。より詳細に言えば、環境(200)は、高可用性ソフトウェア・コンポーネントの第3のインスタンス(210)を有する第3のコンピュータ(205)を備え、この第3のインスタンス(210)は、たとえばデータを備える共有ディスク(220)などの共有リソースにアクセスするように動作可能である。環境(200)は、高可用性ソフトウェア・コンポーネントの第4のインスタンス(225)を有する第4のコンピュータ(215)も備え、この第4のインスタンス(225)も、共有ディスク(220)にアクセスするように動作可能である。
図1および図2の例では、環境(100)がHAソフトウェアを備えるため、ソフトウェア・コンポーネントは保証された単一の活動化に対する責務を負う必要がない。図3の環境(200)はHAソフトウェアを備えないため、ソフトウェア・コンポーネントは、両方のコンピュータ(205、215)からの協調性のない同時アクセスによって共有ディスク上のデータが破損されないことを保証できる必要がある。
ソフトウェア・コンポーネントの各インスタンスがそれぞれ単一のプロセスからなる場合、および、共有ディスク上のデータが少数のファイルにのみ含まれる場合、データの整合性が維持されることを保証するためには、共有ディスク上のデータ・ファイルのファイル・ロッキングを使用すれば十分である。
たとえば、一度にソフトウェア・コンポーネントの1つの実行インスタンスのみがデータ・ファイルの読み取りまたは書き込みを行っていることを保証するために、排他的ファイル・ロッキングを使用することができる。より複雑な手法では、ソフトウェア・コンポーネントの複数のインスタンスが協調性のないアクセスによってデータ・ファイルを破損しないことを保証するために、データ・ファイルの領域の「範囲ロッキング」を使用することができる。
ソフトウェア・コンポーネントがより複雑になった場合、さらなる改良が求められる。
好ましい実施形態の第1の態様によれば、第1の複数のプロセスを有する第1のソフトウェア・インスタンスと第2のソフトウェア・インスタンスとを備える環境で使用するために、データの整合性を維持するための装置が提供され、ここで、第1のソフトウェア・インスタンスおよび第2のソフトウェア・インスタンスはそれぞれ共有データにアクセスするように動作可能であり、共有データに関連付けられたファイルはロッキング用に使用され、この装置は、第1の階層ファイル・ロックが第1の複数のプロセスのうちの第1の親プロセスによって保持されないことに応答して、第2のインスタンスに代わって第1の階層ファイル・ロックを取得するための、第1のロック・コンポーネントと、第2のインスタンスに代わって第1の階層ファイル・ロックが取得されることに応答して、第2のロック・コンポーネントを活動化するための手段であって、第2のロック・コンポーネントは、第1の階層ファイル・ロックの子である第2の階層ファイル・ロックがいずれの第1の複数のプロセスによっても保持されないことに応答して、第2のインスタンスに代わって第2の階層ファイル・ロックを取得するように動作可能である、活動化するための手段と、第1のロック・コンポーネントが第1の階層ファイル・ロックを取得することに応答して、および、第2のロック・コンポーネントが第2の階層ファイル・ロックを取得することに応答して、第1のインスタンスが共有データにアクセスするのを防ぐため、および、第2のインスタンスが共有データにアクセスできるようにするための手段と、を備える。
好ましい実施形態の第2の態様によれば、第1の複数のプロセスを有する第1のソフトウェア・インスタンスと第2のソフトウェア・インスタンスとを備える環境で使用するために、データの整合性を維持するための方法が提供され、ここで、第1のソフトウェア・インスタンスおよび第2のソフトウェア・インスタンスはそれぞれ共有データにアクセスするように動作可能であり、共有データに関連付けられたファイルはロッキング用に使用され、この方法は、第1の階層ファイル・ロックが第1の複数のプロセスのうちの第1の親プロセスによって保持されないことに応答して、第2のインスタンスに代わって第1の階層ファイル・ロックを取得することと、第2のインスタンスに代わって第1の階層ファイル・ロックが取得されること、および、第1の階層ファイル・ロックの子である第2の階層ファイル・ロックがいずれの第1の複数のプロセスによっても保持されないことに応答して、第2のインスタンスに代わって第2の階層ファイル・ロックを取得することと、第1の階層ファイル・ロックおよび第2の階層ファイル・ロックが取得されることに応答して、第1のインスタンスが共有データにアクセスするのを防ぐこと、および、第2のインスタンスが共有データにアクセスできるようにすることと、を含む。
好ましい実施形態の第3の態様によれば、コンピュータ上で実行された場合に上記方法のすべてのステップを実行するように適合されたプログラム・コード手段を備える、コンピュータ・プログラムが提供される。
次に本発明について、以下の図面に示された好ましい諸実施形態を参照しながら、単なる例として説明する。
従来技術の高可用性の第1の環境を示すブロック図である。 高可用性の第1の環境においてコンピュータの障害が発生した場合の、図1に示された従来技術の高可用性の第1の環境を示すブロック図である。 従来技術の高可能性の第2の環境を示すブロック図である。 好ましい実施形態に従った、高可用性の第2の環境を示すブロック図である。 図4の環境の親プロセスに関連付けられたプロセスに含まれる動作ステップを示す流れ図である。 図4の環境の子プロセスに関連付けられたプロセスに含まれる動作ステップを示す流れ図である。 第1の親プロセスに関連付けられたコンポーネントを示すブロック図である。 第2の親プロセスに関連付けられたコンポーネントを示すブロック図である。 図7の親プロセスの第1の子プロセスに関連付けられたコンポーネントを示すブロック図である。 図7の親プロセスの第2の子プロセスに関連付けられたコンポーネントを示すブロック図である。
ソフトウェア・コンポーネントの複数のインスタンスが、それぞれ、共有リソースのデータにアクセス可能な複数のプロセスを備える環境では、改良された手法が求められる。
本明細書の例では、ソフトウェア・コンポーネントの複数のインスタンスは、複数のコンピュータ上で同時に開始されることが可能である。各インスタンスはこの環境においてデータにアクセスするように動作可能であり、各インスタンスは1つまたは複数のオペレーティング・システム・プロセスを備える。
ソフトウェア・コンポーネントの各インスタンスは、「アクティブ」インスタンス(データの更新ができる)または「スタンバイ」インスタンス(データの更新ができない)のいずれかである。
いずれの時点でも、この環境は複数のアクティブ・インスタンスを備えないが、複数のスタンバイ・インスタンスは存在可能であり、これによって不可欠なプログラムの単一の活動化が保証される。
好ましいことに、単一のスタンバイ・インスタンスは、アクティブ・インスタンスの完全障害(すなわち、現行のアクティブ・インスタンスのあらゆるプロセスに関連付けられる障害)が発生した場合、新しいアクティブ・インスタンスとなることが可能である。より好ましいことに、アクティブ・インスタンスの部分障害(すなわち、現行のアクティブ・インスタンスのプロセスのサブセットには関連付けられるが、現行のアクティブ・インスタンスのあらゆるプロセスには関連付けられない障害)は、単一のスタンバイ・インスタンスが新しいアクティブ・インスタンスとなるのを防ぐ。
次に、好ましい実施形態の実装について、図面を参照しながら説明する。
図4は、高可用性ソフトウェア・コンポーネントの第5のインスタンス(310)を有する第5のコンピュータ(305)を備える、高可用性環境(300)を示す。
第5のインスタンス(310)は複数のプロセス(311、312、および313)を備え、それぞれが、たとえばデータを備える共有ディスク(320)などの共有リソースにアクセスするように動作可能である。ある例では、共有ディスク(320)はネットワーク・ファイル・システムに関連付けられる。
第1のプロセス(311)は、2つの子プロセス(すなわち、第2のプロセス(312)および第3のプロセス(313))を有する親プロセスであり、この親プロセスが子プロセスを開始する。
環境(300)は、高可用性ソフトウェア・コンポーネントの第6のインスタンス(325)を有する第6のコンピュータ(315)も備え、この第6のインスタンス(325)は、それぞれが共有ディスク(320)にアクセスするように動作可能な複数のプロセス(326、327、および328)を備える。
第4のプロセス(326)は、2つの子プロセス(すなわち、第5のプロセス(327)および第6のプロセス(328))を有する親プロセスであり、この親プロセスが子プロセスを開始する。
図7は第1のプロセス(311)に関連付けられたコンポーネントを示すブロック図であり、この第1のプロセス(311)は、それぞれが共有ディスク(320)にアクセスするように動作可能な、第1の監視コンポーネント(600)および第1のロック・コンポーネント(605)を備える。第1のプロセス(311)は、第1のイニシエータ・コンポーネント(610)も備える。
図8は第4のプロセス(326)に関連付けられたコンポーネントを示すブロック図であり、この第4のプロセス(326)は、それぞれが共有ディスク(320)にアクセスするように動作可能な、第2の監視コンポーネント(615)および第2のロック・コンポーネント(620)を備える。第4のプロセス(326)は、第2のイニシエータ・コンポーネント(625)も備える。
図9は第2のプロセス(312)に関連付けられたコンポーネントを示すブロック図であり、この第2のプロセス(312)は、それぞれが共有ディスク(320)にアクセスするように動作可能な、第3の監視コンポーネント(700)および第3のロック・コンポーネント(705)を備える。第2のプロセス(312)は、第1のターミネータ(710)も備える。
図10は第3のプロセス(313)に関連付けられたコンポーネントを示すブロック図であり、この第3のプロセス(313)は、それぞれが共有ディスク(320)にアクセスするように動作可能な、第4の監視コンポーネント(715)および第4のロック・コンポーネント(720)を備える。第3のプロセス(313)は、第2のターミネータ(725)も備える。
好ましくは、親プロセスおよび子プロセスのそれぞれが1つまたは複数のロックにアクセスするように動作可能である。
共有ディスク(320)上に格納されたファイルはロッキング用に使用される。
本明細書の例では、排他モードでロック可能なマスタ・ロック、および、排他モードまたは共有モードでロック可能なアクティブ・ロックが提供される。
本発明は、通知ロック(advisorylock)または必須ロック(mandatory lock)と共に実装可能である。
好ましくは、ロックは、その親プロセスがロックを保持するインスタンスに関連付けられた識別子を備える。一例では、この識別子は、共有ディスク(320)でロッキング用に使用されるファイル内に格納される。他の例では、この識別子は、ロッキング用に使用されるファイルとは別のファイル内に格納される。
次に、ある例について、図4から図10を参照しながら説明する。
ある例では、第1のプロセス(311)が実行を開始することによって、第5のインスタンス(310)を開始させる。
図5を参照すると、第1のプロセス(311)の第1の監視コンポーネント(600)は、ロックの排他モードが取得可能かどうかを判別する(ステップ400)ために、マスタ・ロックを監視する。
第1の監視コンポーネント(600)はマスタ・ロック上で排他モードが取得可能であるものと決定し、これに応答して、第1のロック・コンポーネント(605)はマスタ・ロック上で排他モードを取得する。好ましくは、第1のプロセス(311)に関連付けられた識別子はマスタ・ロックに関連付けられる。
第1のプロセス(311)の第1の監視コンポーネント(600)は、ロックの排他モードが取得可能かどうかを判別するために、アクティブ・ロックを監視する。
第1の監視コンポーネント(600)はアクティブ・ロック上で排他モードが取得可能であるものと決定し、これに応答して、第1のロック・コンポーネント(605)はアクティブ・ロック上で当該排他モードを取得する。好ましくは、第1のプロセス(311)に関連付けられた識別子はアクティブ・ロックに関連付けられる。
これに応答して、第5のインスタンス(310)がアクティブ・インスタンスになる(すなわち、第5のインスタンス(310)が唯一のアクティブ・インスタンスになる)。
これに応答して、第1のロック・コンポーネント(605)はアクティブ・ロック上で排他モードをロック解除し、その後、共有モードでアクティブ・ロックをロックする。
第1のイニシエータ・コンポーネント(610)は、1つまたは複数の子プロセスを開始する。本明細書の例では、第1のイニシエータ・コンポーネント(610)は第2のプロセス(312)および第3のプロセス(313)を開始する。
別の方法として、第2のプロセス(312)および第3のプロセス(313)のうちの少なくとも1つを、(たとえば、第1のプロセス(311)とは別の他のプロセスによって)独立に開始することができる。
好ましくは、第2のプロセスおよび第3のプロセスは、アクティブ・ロックの保持者が第1のプロセスである旨を確認するまでは、いかなる作業も実行せず、第3の監視コンポーネント(700)および第4の監視コンポーネント(715)のそれぞれは、識別子が第2のプロセスおよび第3のプロセスのそれぞれの親プロセスに関連付けられているかどうかを判別するために、アクティブ・ロックに関連付けられた識別子をチェックする。識別子が親プロセスに関連付けられていない場合、第2のプロセスおよび第3のプロセスは、親プロセスに障害が発生し、さらにそれらを終了しなければならないものと想定するが、この終了手順については以下でより詳細に説明する。
この例では、識別子は親プロセス(すなわち第1のプロセス(311))に関連付けられる。これに応答して、図6を参照すると、開始時に、第3の監視コンポーネント(700)および第4の監視コンポーネント(715)のそれぞれは、ロックの共有モードが取得可能かどうかを判別する(ステップ500)ために、アクティブ・ロックを監視する。
第3の監視コンポーネント(700)は、アクティブ・ロック上で共有モードが取得可能であるものと決定し、これに応答して、第3のロック・コンポーネント(705)はアクティブ・ロック上で当該共有モードを取得する(ステップ505)。
第4の監視コンポーネント(715)は、アクティブ・ロック上で共有モードが取得可能であるものと決定し、これに応答して、第4のロック・コンポーネント(720)はアクティブ・ロック上で当該共有モードを取得する(ステップ505)。
したがって、第1のプロセス(311)はマスタ・ロックを排他モードで保持し、第1のプロセス(311)、第2のプロセス(312)、および第3のプロセス(313)のそれぞれは、アクティブ・ロックを共有モードで保持する。
結果として、他の単一インスタンスが新しいアクティブ・インスタンスになることはできず、第1のプロセス(311)、第2のプロセス(312)、および第3のプロセス(313)のそれぞれは、共有ディスク内のデータに安全にアクセスすることができる。第1のプロセス(311)、第2のプロセス(312)、および第3のプロセス(313)が同じインスタンス(すなわち、第5のインスタンス(310))に関連付けられているため、第1のプロセス(311)、第2のプロセス(312)、および第3のプロセス(313)による共有ディスク(320)へのアクセスは、既知の機構を使用して調整可能であることを理解されたい。
図5を参照すると、この例では、第4のプロセス(326)は第6のインスタンス(325)によって開始される。
第4のプロセス(326)の第4の監視コンポーネント(615)は、ロックの排他モードが取得可能であるかどうかを判別する(400)ために、マスタ・ロックを監視する。
第4の監視コンポーネント(615)は、マスタ・ロック上で排他モードが取得できないものと決定するが、これは、マスタ・ロックの排他モードが第1のプロセス(311)によってすでに取得されているためである。
有利なことに、第4の監視コンポーネント(615)は、マスタ・ロックの排他モードが取得可能であるかどうかに関連付けられた決定を使用して、他のインスタンスがアクティブであるかどうかも判別することができる。第4の監視コンポーネント(615)がマスタ・ロックの排他モードを取得できない場合、第4の監視コンポーネント(615)は、他のインスタンスがマスタ・ロックの排他モードをすでに保持しているものと決定する。
ステップ430で、第6のインスタンス(325)は、新しいアクティブ・インスタンスとなるように再試行するかどうかを判別する。第6のインスタンス(325)が、新しいアクティブ・インスタンスとなるように再試行しないことに応答して、図5のプロセスは終了する。
第6のインスタンス(325)が、新しいアクティブ・インスタンスとなるように再試行することに応答して、第6のインスタンス(325)はスタンバイ・インスタンスとしてマークされる(ステップ435)。
この例では、第6のインスタンス(325)は新しいアクティブ・インスタンスとなるように再試行し(ステップ435)、その後、第4の監視コンポーネント(615)は、ロックの排他モードが取得可能かどうかを判別する(ステップ400)ためにマスタ・ロックを監視する。
第4の監視コンポーネント(615)は、マスタ・ロック上で排他モードが取得可能であるものと決定するが、これは、この例において、マスタ・ロックの排他モードが第1のプロセス(311)のロック・コンポーネント(605)によって解除されている(たとえば、第1のプロセス(311)が作業を完了したために明示的に解除されている、第1のプロセス(311)に障害が発生したために暗黙的に解除されている)ためである。
その後、第4のロック・コンポーネント(720)は、マスタ・ロック上で排他モードを取得する(ステップ405)。
ここで第6のインスタンス(325)は、新しいアクティブ・インスタンスとなるように試行する。
これに応答して、その後第4の監視コンポーネント(615)は、ロックの排他モードが取得可能かどうかを判別する(ステップ410)ためにアクティブ・ロックを監視する。
第1の監視コンポーネント(600)は、アクティブ・ロック上で排他モードが取得できないものと決定するが、本明細書の例では、これは、第2のプロセス(312)または第3のプロセス(313)のうちの少なくとも1つが、依然としてアクティブ・ロックを共有モードで保持しているためである。
その後、第4のロック・コンポーネント(720)はマスタ・ロック上で排他モードを解除し、第6のインスタンス(325)はスタンバイ・インスタンスを維持する(ステップ430)。
好ましい実施形態は、「階層」ロック、すなわちマスタ・ロックおよびアクティブ・ロックを提供し、ここで最初にマスタ・ロックが取得され、続いてアクティブ・ロックが取得できることを理解されたい。本発明は、階層ロックを使用することにより、現行のアクティブ・インスタンスの親プロセスは終了可能であるが、関連付けられた子プロセスはまだ終了しないように、タイミング・ウィンドウを調節し、その結果として、マスタ・ロック上の排他モードは親プロセスによって解除され、アクティブ・ロック上の共有モードは子プロセスによって解除されないようにすることによって、信頼性を与える。したがって、たとえ第4のプロセス(326)がマスタ・ロック上で排他モードを取得できる場合(すなわち、第2のプロセス(312)または第3のプロセス(313)のうちの少なくとも1つが依然としてアクティブ・ロックを維持していることによって、第4のプロセス(326)がアクティブ・ロック上で排他モードを取得できないため)であっても、第6のインスタンス(325)はスタンバイ・インスタンスを維持する。
第6のインスタンス(325)が新しいアクティブ・インスタンスになるように再試行しない(ステップ435)ことに応答して、プロセスは終了する。
この例では、第6のインスタンス(325)が新しいアクティブ・インスタンスになるように再試行する(ステップ435)ことに応答して、第4の監視コンポーネント(615)は、ロックの排他モードが取得できるかどうかを判別する(ステップ400)ためにマスタ・ロックを監視する。
第4の監視コンポーネント(615)は、マスタ・ロック上で排他モードが取得できるものと決定するが、この例では、これは、マスタ・ロックの排他モードが第1のプロセス(311)の第1のロック・コンポーネント(605)によって解除されているためである。
その後、第4のロック・コンポーネント(720)はマスタ・ロック上で排他モードを取得する。
第4の監視コンポーネント(615)は、その後、ロックの排他モードが取得できるかどうかを判別するため(ステップ410)にアクティブ・ロックを監視する。
第1の監視コンポーネント(600)は、排他モードがアクティブ・ロック上で取得できるものと決定するが、この例では、これは、第2のプロセス(312)または第3のプロセス(313)のいずれも、依然としてアクティブ・ロックを共有モードで保持していないためである。
第2のプロセス(312)または第3のプロセス(313)のいずれもアクティブ・ロックを共有モードで保持していないというイベントは、たとえば、第2のプロセスおよび第3のプロセスのそれぞれが明示的または暗黙的に終了されることによって、あるいは、第1のプロセス(311)が(明示的に、または障害によって暗黙的に)終了し、その後、第3の監視コンポーネント(700)および第4の監視コンポーネント(715)のそれぞれが、第1のプロセス(311)がポーリング機能を使用することで終了したものと決定する(ステップ510)ことによって、発生する可能性があり、その後、第2のプロセスおよび第3のプロセスそれぞれの第1のターミネータ(710)および第2のターミネータ(725)それぞれが終了し(ステップ520)、共有モードのアクティブ・ロックを解除する。第1のプロセス(311)が終了していない場合、子プロセスは作業を続行可能である(ステップ515)ことを理解されたい。
第1の監視コンポーネント(600)が、アクティブ・ロック上で排他モードが取得可能であるものと決定することに応答して、第4のロック・コンポーネント(720)はアクティブ・ロック上で当該排他モードを取得する。
これに応答して、第6のインスタンス(325)が新しいアクティブ・インスタンスとなる。
前述の例では、実行中の第5のインスタンス(310)の子プロセス(すなわち、前のアクティブ・インスタンス)が存在しないため、第4のロック・コンポーネント(720)は、アクティブ・ロック上で排他モードを取得するように動作可能であることを理解されたい。さらに、第5のインスタンス(310)に関連付けられたそれぞれのプロセス(311、312、および313)が実行中でないため、第4のロック・コンポーネント(720)は、マスタ・ロック上およびアクティブ・ロック上のそれぞれで排他モードを取得するように動作可能である。
他の実装では、複数のアクティブ・ロックが提供される。好ましくは、マスタ・ロック上の排他モードが解除されている場合、アクティブ・インスタンスのすべてのプロセスは、他のインスタンスが新しいアクティブ・インスタンスとなるように試行できるようにするために、複数のアクティブ・ロックのすべてを解除しなければならない。
その後、第4のロック・コンポーネント(720)はアクティブ・ロック上の排他モードをロック解除し、その後、アクティブ・ロックを共有モードでロックする。
第2のイニシエータ・コンポーネント(625)は、1つまたは複数の子プロセス、たとえば第5のプロセス(327)および第6のプロセス(328)を開始することができる。
有利なことに、本発明は、各インスタンスが複数のプロセスを備えることが可能な環境において、インスタンスの高可用性(たとえば、あるインスタンスが新しいアクティブ・インスタンスになることができる)、ならびに、ソフトウェア・コンポーネントの1つのインスタンスのみが一度に共有データにアクセスできるような保証された単一の活動化(たとえば、たとえば排他マスタ・ロックおよび排他/共有アクティブ・ロックなどの「階層」ロッキングを使用することによって)を、可能にする。
有利なことに、他のインスタンスの位置を用いてインスタンスを構成する必要はなく、単一の活動化を保証するためにネットワークがインスタンス間でハートビート(heartbeating)する必要はない。これは、ファイル・ロッキングを使用して単一の活動化を保証できるためである。有利なことに、障害の発生したインスタンスに関連付けられたデータ(たとえば、障害の発生したインスタンスが実行されていた場所に関連付けられた場所)を知る必要なしに、障害の発生したインスタンスをスタンバイ・インスタンスに置き換えることができる。
有利なことに、HAソフトウェアは不要である。これによって有用性が増加し、より容易にスタンバイ・インスタンスを導入することができる。
さらに、たとえばネットワークの故障停止があった場合、ロックを保持するプロセスの識別子のロックとの関連付けが有利である。故障停止に続き、親プロセスはロックを再取得し、識別子がそれ自体のものであるかどうかを判別するために、識別子に問い合わせることができる。識別子がそれ自体のものである場合、プロセスは、故障停止以前にロックを保持していたこと、および、故障停止中に他のいずれのインスタンスもロックを取得しなかったことがわかる。識別子がそれ自体のものでない場合、プロセスは、故障停止中に他のインスタンスがロックを取得しなければならなかったことがわかり、この場合、親プロセスおよびインスタンスに関連付けられた他のプロセスは、整合性を保証するためにインスタンスを終了しなければならない(また、必要であれば、親プロセスはロックを取得するために再実行および試行することができる)。
複数のスタンバイ・インスタンスが存在する場合、好ましくは、現行のアクティブ・インスタンスがもはやアクティブ・インスタンスでなければ、新しいアクティブ・インスタンスとなるように単一のスタンバイ・インスタンスを選択するために選択プロセスが実装され、ここで、たとえば複数のスタンバイ・インスタンスは新しいアクティブ・インスタンスとなるように競合し、複数のスタンバイ・インスタンスは、どちらが新しいアクティブ・インスタンスとなるかを決定することを理解されたい。別の方法として、他のロック・ファイルを使用して、スタンバイ・インスタンスを調整および監視することができる。

Claims (7)

  1. 第1の複数のプロセスを有する第1のソフトウェア・インスタンスと第2のソフトウェア・インスタンスとを備える環境で使用され、データの整合性を維持するための装置であって、前記第1のソフトウェア・インスタンスおよび前記第2のソフトウェア・インスタンスはそれぞれ共有データにアクセスするように動作可能であり、前記共有データに関連付けられたファイルはロッキング用に使用され、
    前記第2のソフトウェア・インスタンスの各プロセスが、第1のロック・コンポーネント、第2のロック・コンポーネント、及び、第2のロック・コンポーネントを活動化するための手段を有するものであって、
    第1の階層ファイル・ロックが前記第1の複数のプロセスのうちの第1の親プロセスによって保持されないことに応答して、前記第2のインスタンスに代わって前記第1の階層ファイル・ロックを取得するための、第1のロック・コンポーネントと、
    前記第2のインスタンスに代わって前記第1の階層ファイル・ロックが取得されることに応答して、第2のロック・コンポーネントを活動化するための手段であって、前記第2のロック・コンポーネントは、前記第1の階層ファイル・ロックの子である第2の階層ファイル・ロックがいずれの前記第1の複数のプロセスによっても保持されないことに応答して、前記第2のインスタンスに代わって前記第2の階層ファイル・ロックを取得するように動作可能である、活動化するための手段と、
    前記第1のロック・コンポーネントが前記第1の階層ファイル・ロックを取得することに応答して、および、前記第2のロック・コンポーネントが前記第2の階層ファイル・ロックを取得することに応答して、前記第1のインスタンスが共有データにアクセスするのを防ぐため、および、第2のインスタンスが前記共有データにアクセスできるようにするための手段と、
    を備える、装置。
  2. 前記第2のソフトウェア・インスタンスの各プロセスが、さらに、第2の監視コンポーネントを有していて、
    前記第2のロック・コンポーネントは、第2の監視コンポーネントが、前記第1の複数のプロセスのうちの少なくとも1つによって第2の階層ファイル・ロックが取得されたものと決定することに応答して、前記第2のインスタンスに代わって前記第2の階層ファイル・ロックを取得するのを防ぐように動作可能である、請求項1に記載の装置。
  3. 前記第2のソフトウェア・インスタンスは第2の複数のプロセスを備え、前記第2のロック・コンポーネントは、前記第2の複数のプロセスのうちの少なくとも1つに代わって前記第2の階層ファイル・ロックを取得するように動作可能である、請求項1に記載の装置。
  4. 前記第1の階層ファイル・ロックが取得されるように使用可能であるかどうかを判別するための、第1の監視コンポーネントをさらに備える、請求項1に記載の装置。
  5. 前記第2の階層ファイル・ロックが取得されるように使用可能であるかどうかを判別するための、第2の監視コンポーネントをさらに備える、請求項1に記載の装置。
  6. 第1の複数のプロセスを有する第1のソフトウェア・インスタンスと第2のソフトウェア・インスタンスとを備える環境で使用され、データの整合性を維持するための方法であって、前記第1のソフトウェア・インスタンスおよび前記第2のソフトウェア・インスタンスはそれぞれ共有データにアクセスするように動作可能であり、前記共有データに関連付けられたファイルはロッキング用に使用され、
    前記第2のソフトウェア・インスタンスの各プロセスが、第1のロック・コンポーネント、第2のロック・コンポーネント、及び、第2のロック・コンポーネントを活動化するための手段を有するものであって、
    第1の階層ファイル・ロックが前記第1の複数のプロセスのうちの第1の親プロセスによって保持されないことに応答して、前記第2のインスタンスに代わって前記第1の階層ファイル・ロックを取得すること、
    前記第2のインスタンスに代わって前記第1の階層ファイル・ロックが取得されること、および、前記第1の階層ファイル・ロックの子である第2の階層ファイル・ロックがいずれの前記第1の複数のプロセスによっても保持されないことに応答して、前記第2のインスタンスに代わって第2の階層ファイル・ロックを取得すること、および
    前記第1の階層ファイル・ロックおよび前記第2の階層ファイル・ロックが取得されることに応答して、前記第1のインスタンスが前記共有データにアクセスするのを防ぐこと、および、前記第2のインスタンスが前記共有データにアクセスできるようにすること、
    を含
    これらのことをハードウェア技術とソフトウェア技術とが組み合わされたコンピュータに実行させる、方法。
  7. コンピュータ上で実行された場合に請求項6に記載の方法を実行するように適合されたプログラム・コードを備える、コンピュータ・プログラム。
JP2011548640A 2009-02-06 2010-01-26 データの整合性を維持するための装置、方法、およびコンピュータ・プログラム(データの整合性を維持するための装置) Active JP5466717B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP09152290.4 2009-02-06
EP09152290 2009-02-06
PCT/EP2010/050829 WO2010089222A1 (en) 2009-02-06 2010-01-26 An apparatus for maintaining data integrity

Publications (2)

Publication Number Publication Date
JP2012517057A JP2012517057A (ja) 2012-07-26
JP5466717B2 true JP5466717B2 (ja) 2014-04-09

Family

ID=42104432

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011548640A Active JP5466717B2 (ja) 2009-02-06 2010-01-26 データの整合性を維持するための装置、方法、およびコンピュータ・プログラム(データの整合性を維持するための装置)

Country Status (5)

Country Link
US (1) US10372682B2 (ja)
JP (1) JP5466717B2 (ja)
KR (1) KR101581072B1 (ja)
CN (1) CN102301368B (ja)
WO (1) WO2010089222A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8561080B2 (en) * 2011-04-26 2013-10-15 Sap Ag High-load business process scalability
US9053141B2 (en) * 2011-10-31 2015-06-09 International Business Machines Corporation Serialization of access to data in multi-mainframe computing environments
US9032484B2 (en) 2011-10-31 2015-05-12 International Business Machines Corporation Access control in a hybrid environment
US9741040B2 (en) 2013-08-30 2017-08-22 Sap Se High-load business process scalability
US9722908B2 (en) 2013-10-17 2017-08-01 International Business Machines Corporation Problem determination in a hybrid environment
US10666443B2 (en) * 2016-10-18 2020-05-26 Red Hat, Inc. Continued verification and monitoring of application code in containerized execution environment

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5115499A (en) * 1986-05-14 1992-05-19 Sequoia Systems, Inc. Shared computer resource allocation system having apparatus for informing a requesting computer of the identity and busy/idle status of shared resources by command code
US4819159A (en) * 1986-08-29 1989-04-04 Tolerant Systems, Inc. Distributed multiprocess transaction processing system and method
US5319780A (en) * 1987-10-19 1994-06-07 International Business Machines Corporation System that implicitly locks a subtree or explicitly locks a node based upon whether or not an explicit lock request is issued
JPH01207833A (ja) * 1988-02-16 1989-08-21 Fujitsu Ltd 排他制御方式
US5355477A (en) * 1991-12-23 1994-10-11 International Business Machines Corporation Method for updating a block using record-level locks by committing the update if the block has not been updated by another process otherwise spinning
EP0569605A1 (de) * 1992-05-06 1993-11-18 International Business Machines Corporation Verfahren zur Zugriffsverwaltung und -steuerung mehrerer Rechner auf gemeinsame Daten
US5414839A (en) * 1992-06-19 1995-05-09 Digital Equipment Corporation Hybrid lock escalation and de-escalation protocols
US5555388A (en) * 1992-08-20 1996-09-10 Borland International, Inc. Multi-user system and methods providing improved file management by reading
CA2213371C (en) * 1996-08-28 2003-01-28 Hitachi, Ltd. Process executing method and resource accessing method in computer system
US5895494A (en) * 1997-09-05 1999-04-20 International Business Machines Corporation Method of executing perform locked operation instructions for supporting recovery of data consistency if lost due to processor failure, and a method of recovering the data consistency after processor failure
US6240414B1 (en) * 1997-09-28 2001-05-29 Eisolutions, Inc. Method of resolving data conflicts in a shared data environment
US6026401A (en) * 1997-10-14 2000-02-15 International Business Machines Corporation Locking tool data objects in a framework environment
US6178421B1 (en) * 1998-06-05 2001-01-23 International Business Machines Corporation Method of performing parallel cleanup of segments of a lock structure
US8099758B2 (en) * 1999-05-12 2012-01-17 Microsoft Corporation Policy based composite file system and method
US6625602B1 (en) * 2000-04-28 2003-09-23 Microsoft Corporation Method and system for hierarchical transactions and compensation
JP2002123412A (ja) * 2000-10-16 2002-04-26 Toshiba Corp ファイルアクセス制御システム
US6944133B2 (en) * 2001-05-01 2005-09-13 Ge Financial Assurance Holdings, Inc. System and method for providing access to resources using a fabric switch
US6687709B2 (en) * 2001-06-29 2004-02-03 International Business Machines Corporation Apparatus for database record locking and method therefor
US7904804B1 (en) * 2001-11-20 2011-03-08 Vignette Software Llc System and method for web sites in hierarchical relationship to share assets
US7120631B1 (en) * 2001-12-21 2006-10-10 Emc Corporation File server system providing direct data sharing between clients with a server acting as an arbiter and coordinator
US7814488B1 (en) * 2002-09-24 2010-10-12 Oracle America, Inc. Quickly reacquirable locks
US7496574B2 (en) * 2003-05-01 2009-02-24 International Business Machines Corporation Managing locks and transactions
US7284151B2 (en) * 2003-07-21 2007-10-16 Oracle International Corporation Conditional data access after database system failure
US7383368B2 (en) * 2003-09-25 2008-06-03 Dell Products L.P. Method and system for autonomically adaptive mutexes by considering acquisition cost value
US8103642B2 (en) * 2006-02-03 2012-01-24 Oracle International Corporation Adaptive region locking
US7409525B1 (en) * 2006-03-29 2008-08-05 Emc Corporation Implicit locks in a shared virtual memory system
US7500037B2 (en) * 2007-01-30 2009-03-03 International Business Machines Corporation System, method and program for managing locks
US20090307707A1 (en) * 2008-06-09 2009-12-10 International Business Machines Corporation System and method for dynamically adaptive mutual exclusion in multi-threaded computing environment
US8510281B2 (en) * 2008-12-18 2013-08-13 Sap Ag Ultimate locking mechanism
US8510334B2 (en) * 2009-11-05 2013-08-13 Oracle International Corporation Lock manager on disk

Also Published As

Publication number Publication date
CN102301368A (zh) 2011-12-28
US20100205164A1 (en) 2010-08-12
JP2012517057A (ja) 2012-07-26
CN102301368B (zh) 2014-01-22
KR101581072B1 (ko) 2015-12-30
WO2010089222A1 (en) 2010-08-12
KR20110114699A (ko) 2011-10-19
US10372682B2 (en) 2019-08-06

Similar Documents

Publication Publication Date Title
JP5466717B2 (ja) データの整合性を維持するための装置、方法、およびコンピュータ・プログラム(データの整合性を維持するための装置)
US7870426B2 (en) Apparatus, system, and method for transactional peer recovery in a data sharing clustering computer system
EP2754059B1 (en) Clustered client failover
KR100974156B1 (ko) 파일 서버 재초기화 장치, 방법 및 컴퓨터 판독 가능한 기록 매체
JP4726416B2 (ja) コンピュータ・クラスタを操作するための方法
US7770064B2 (en) Recovery of application faults in a mirrored application environment
US10372384B2 (en) Method and system for managing storage system using first and second communication areas
US7664991B1 (en) System and method for distributed file system I/O recovery
US8650272B2 (en) Distributed transaction processing system having resource managers that collaborate to decide whether to commit or abort a transaction in response to failure of a transaction manager
US10402287B2 (en) Preventing data corruption and single point of failure in a fault-tolerant memory
US9367412B2 (en) Non-disruptive controller replacement in network storage systems
CN106462472B (zh) 使用多个租赁服务器获取资源租赁
US10860411B2 (en) Automatically detecting time-of-fault bugs in cloud systems
US10324811B2 (en) Opportunistic failover in a high availability cluster
US7966516B2 (en) Automatic JTA migration
US7281153B2 (en) Apparatus, system, and method for transactional peer recovery in a data sharing clustering computer system
JP2009265973A (ja) データ同期システム、障害復旧方法、及び、プログラム
JP4874847B2 (ja) クラスタシステム
US20220404991A1 (en) System and Method for Self-Encrypting Drive Reversion During Re-initialization of a Storage Array
CN117632525A (zh) 用于利用分布式锁管理器进行恢复的系统和方法
CN116560827A (zh) 一种数据处理方法及装置
Shaw et al. Clusterware
JPS62202239A (ja) オンラインプログラムのホツトスタンバイ処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120803

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130808

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130903

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131007

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: 20140107

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140124

R150 Certificate of patent or registration of utility model

Ref document number: 5466717

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150