JP5466717B2 - Apparatus, method, and computer program for maintaining data integrity (apparatus for maintaining data consistency) - Google Patents

Apparatus, method, and computer program for maintaining data integrity (apparatus for maintaining data consistency) 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
Japanese (ja)
Other versions
JP2012517057A (en
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/en
Application granted granted Critical
Publication of JP5466717B2 publication Critical patent/JP5466717B2/en
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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)

Description

本発明は、データの整合性を維持するための装置に関する。   The present invention relates to an apparatus for maintaining data integrity.

「高可用性」商用コンピューティング環境において、典型的には、ハードウェア障害およびソフトウェア障害からの重大プログラムの即時回復を提供するために、ハードウェア技術とソフトウェア技術とが組み合わせられる。この環境は、単一障害点を除去するように設計される。   In “high availability” commercial computing environments, hardware and software technologies are typically combined to provide immediate recovery of critical programs from hardware and software failures. This environment is designed to eliminate single points of failure.

たとえば典型的な高可用性環境は、一般に、ディスク・ドライブなどのリソースを共有するいくつかの疎結合(loosely coupled)コンピュータを備える。不可欠なプログラムは、いずれのコンピュータ・セット上でも実行可能である。さらに、ハードウェア・リソース(たとえばディスク・ドライブ)はコンピュータ間で共有される。不可欠なプログラムの使用不能につながるハードウェアまたはソフトウェアの障害は、このプログラムを他のコンピュータに移動することにより、その可用性を復元することによって修復可能である。   For example, a typical high availability environment typically includes several loosely coupled computers that share resources such as disk drives. Essential programs can be run on any computer set. In addition, hardware resources (eg, disk drives) are shared between computers. A hardware or software failure that leads to the unavailability of an essential program can be repaired by restoring its availability by moving the program to another computer.

典型的な高可用性環境は、歴史的に、高可用性(HA)ソフトウェアと呼ばれるソフトウェアによって管理されてきた。HAソフトウェアは、通常、コンポーネントを監視すること、および障害に応答してリソースを移動させる責務を担うことによって、ハードウェアおよびソフトウェア・コンポーネントの管理を行う。   A typical high availability environment has historically been managed by software called high availability (HA) software. HA software typically manages hardware and software components by monitoring the components and taking responsibility for moving resources in response to failures.

こうした高可用性環境(100)の例が、図1に示されており、第1のHAソフトウェア(117)と、高可用性ソフトウェア・コンポーネントの第1のインスタンス(110)とを有する、第1のコンピュータ(105)を備え、ここでソフトウェア・コンポーネント(110)は、共有リソース(たとえば、データを備える共有ディスク(120))にアクセスするように動作可能である。   An example of such a high availability environment (100) is shown in FIG. 1 and includes a first computer having a first HA software (117) and a first instance (110) of a high availability software component. (105), wherein the software component (110) is operable to access a shared resource (eg, a shared disk (120) comprising data).

高可用性環境(100)は、第1のHAソフトウェア(117)と通信するように動作可能な第2のHAソフトウェア(119)を有する第2のコンピュータ(115)も備える。   The high availability environment (100) also includes a second computer (115) having second HA software (119) operable to communicate with the first HA software (117).

ある例では、第1のコンピュータ(105)の第1のインスタンス(110)が共有ディスク(120)にアクセスする。第1のHAソフトウェア(117)は、共有ディスク(120)の「所有権」を有する。   In one example, a first instance (110) of a first computer (105) accesses a shared disk (120). The first HA software (117) has “ownership” of the shared disk (120).

第1のコンピュータ(105)に障害が発生した場合、第2のHAソフトウェア(119)は、(たとえば、第2のHAソフトウェアがもはや第1のHAソフトウェア(117)と通信できないことに応答して)その障害を検出するように動作可能である。   In the event of a failure of the first computer (105), the second HA software (119) responds (eg, the second HA software can no longer communicate with the first HA software (117)). ) Operate to detect the failure.

図2を参照すると、それに応答して、第2のHAソフトウェア(119)は第1のインスタンス(110)を終了し、共有ディスク(120)の所有権をそれ自体に移し、その後、第2のコンピュータ(115)上でソフトウェア・コンポーネントの第2のインスタンス(125)を開始するように、動作可能である。その後第2のコンピュータ(115)は、第1のコンピュータ(105)から責務を「引き継ぐ」ように動作可能であり、第2のコンピュータ(115)上で実行中の第2のインスタンス(125)が共有ディスク(120)にアクセスできる。   Referring to FIG. 2, in response, the second HA software (119) terminates the first instance (110), transfers ownership of the shared disk (120) to itself, and then the second Operable to initiate a second instance (125) of the software component on the computer (115). The second computer (115) is then operable to “take over” the responsibilities from the first computer (105) so that the second instance (125) running on the second computer (115) The shared disk (120) can be accessed.

図1および図2の環境(100)は、ソフトウェア・コンポーネントの保証された単一の活動化を提供するものであり、すなわち、ソフトウェア・コンポーネントの2つのインスタンスを異なるコンピュータ上で同時に開始することは不可能である。ソフトウェア・コンポーネントの2つのインスタンスが異なるコンピュータ上で同時に開始された場合、これによって、共有ディスク(120)上のデータ破損などのエラーが引き起こされる可能性がある。   The environment (100) of FIGS. 1 and 2 provides a guaranteed single activation of a software component, ie, starting two instances of a software component simultaneously on different computers Impossible. If two instances of a software component are started simultaneously on different computers, this can cause errors such as data corruption on the shared disk (120).

前述の環境(100)は、不可欠なプログラムの高可用性および不可欠なプログラムの保証された単一の活動化を提供するものであるが、特別なハードウェア(たとえば、複数のコンピュータによるアクセスが可能なように特別に構成される必要のある共有ディスク(120))およびソフトウェア(たとえばHAソフトウェア)が必要である。   The aforementioned environment (100) provides high availability of essential programs and a guaranteed single activation of essential programs, but allows special hardware (eg, accessible by multiple computers) Shared disk (120)) and software (e.g. HA software) that need to be specially configured.

より最新の技法では、特別なハードウェアあるいはソフトウェアまたはその両方を必要とせずに、高可用性および保証された単一の活動化を達成することができる。   More modern techniques can achieve high availability and a single guaranteed activation without the need for special hardware and / or software.

こうした環境(200)が図3に示されており、環境(200)は同じソフトウェア・コンポーネントの2つのインスタンスを備える。より詳細に言えば、環境(200)は、高可用性ソフトウェア・コンポーネントの第3のインスタンス(210)を有する第3のコンピュータ(205)を備え、この第3のインスタンス(210)は、たとえばデータを備える共有ディスク(220)などの共有リソースにアクセスするように動作可能である。環境(200)は、高可用性ソフトウェア・コンポーネントの第4のインスタンス(225)を有する第4のコンピュータ(215)も備え、この第4のインスタンス(225)も、共有ディスク(220)にアクセスするように動作可能である。   Such an environment (200) is shown in FIG. 3, and the environment (200) comprises two instances of the same software component. More specifically, the environment (200) comprises a third computer (205) having a third instance (210) of a high availability software component, the third instance (210) having, for example, data It is operable to access a shared resource such as a shared disk (220) with which it is provided. The environment (200) also includes a fourth computer (215) having a fourth instance (225) of a high availability software component that also accesses the shared disk (220). It is possible to operate.

図1および図2の例では、環境(100)がHAソフトウェアを備えるため、ソフトウェア・コンポーネントは保証された単一の活動化に対する責務を負う必要がない。図3の環境(200)はHAソフトウェアを備えないため、ソフトウェア・コンポーネントは、両方のコンピュータ(205、215)からの協調性のない同時アクセスによって共有ディスク上のデータが破損されないことを保証できる必要がある。   In the example of FIGS. 1 and 2, since the environment (100) comprises HA software, the software component need not be responsible for a guaranteed single activation. Since the environment (200) of FIG. 3 does not include HA software, the software component must be able to ensure that data on the shared disk is not corrupted by uncoordinated simultaneous access from both computers (205, 215). There is.

ソフトウェア・コンポーネントの各インスタンスがそれぞれ単一のプロセスからなる場合、および、共有ディスク上のデータが少数のファイルにのみ含まれる場合、データの整合性が維持されることを保証するためには、共有ディスク上のデータ・ファイルのファイル・ロッキングを使用すれば十分である。   If each instance of a software component consists of a single process, and if the data on the shared disk is contained in only a few files, the shared It is sufficient to use file locking of data files on disk.

たとえば、一度にソフトウェア・コンポーネントの1つの実行インスタンスのみがデータ・ファイルの読み取りまたは書き込みを行っていることを保証するために、排他的ファイル・ロッキングを使用することができる。より複雑な手法では、ソフトウェア・コンポーネントの複数のインスタンスが協調性のないアクセスによってデータ・ファイルを破損しないことを保証するために、データ・ファイルの領域の「範囲ロッキング」を使用することができる。   For example, exclusive file locking can be used to ensure that only one running instance of a software component is reading or writing a data file at a time. In a more complex approach, “range locking” of a region of the data file can be used to ensure that multiple instances of the software component do not corrupt the data file due to uncoordinated access.

ソフトウェア・コンポーネントがより複雑になった場合、さらなる改良が求められる。     As software components become more complex, further improvements are required.

好ましい実施形態の第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のインスタンスが共有データにアクセスできるようにするための手段と、を備える。   According to a first aspect of a preferred embodiment, data integrity is maintained for use in an environment comprising a first software instance having a first plurality of processes and a second software instance. An apparatus is provided for wherein a first software instance and a second software instance are each operable to access shared data, and a file associated with the shared data is used for locking. , In response to the first tier file lock not being held by the first parent process of the first plurality of processes, the device responsive to the first tier file lock on behalf of the second instance. A first lock component and a first hierarchy on behalf of a second instance for obtaining Means for activating a second lock component in response to a file lock being acquired, the second lock component being a child of the first hierarchical file lock; An activity operable to obtain a second hierarchical file lock on behalf of the second instance in response to the second hierarchical file lock not being held by any first plurality of processes In response to the first lock component obtaining the first hierarchy file lock and the second lock component obtaining the second hierarchy file lock. To prevent the first instance from accessing the shared data and to allow the second instance to access the shared data It includes an order of means, the.

好ましい実施形態の第2の態様によれば、第1の複数のプロセスを有する第1のソフトウェア・インスタンスと第2のソフトウェア・インスタンスとを備える環境で使用するために、データの整合性を維持するための方法が提供され、ここで、第1のソフトウェア・インスタンスおよび第2のソフトウェア・インスタンスはそれぞれ共有データにアクセスするように動作可能であり、共有データに関連付けられたファイルはロッキング用に使用され、この方法は、第1の階層ファイル・ロックが第1の複数のプロセスのうちの第1の親プロセスによって保持されないことに応答して、第2のインスタンスに代わって第1の階層ファイル・ロックを取得することと、第2のインスタンスに代わって第1の階層ファイル・ロックが取得されること、および、第1の階層ファイル・ロックの子である第2の階層ファイル・ロックがいずれの第1の複数のプロセスによっても保持されないことに応答して、第2のインスタンスに代わって第2の階層ファイル・ロックを取得することと、第1の階層ファイル・ロックおよび第2の階層ファイル・ロックが取得されることに応答して、第1のインスタンスが共有データにアクセスするのを防ぐこと、および、第2のインスタンスが共有データにアクセスできるようにすることと、を含む。   According to a second aspect of the preferred embodiment, data integrity is maintained for use in an environment comprising a first software instance having a first plurality of processes and a second software instance. Are provided, wherein the first software instance and the second software instance are each operable to access shared data, and a file associated with the shared data is used for locking. The method is responsive to the first tier file lock not being held by the first parent process of the first plurality of processes in response to the first tier file lock on behalf of the second instance. Get the first hierarchy file lock on behalf of the second instance And, in response to the second hierarchy file lock being a child of the first hierarchy file lock not being held by any of the first plurality of processes, the second hierarchy on behalf of the second instance Obtaining a file lock; preventing the first instance from accessing shared data in response to obtaining the first hierarchy file lock and the second hierarchy file lock; and Allowing the second instance to access the shared data.

好ましい実施形態の第3の態様によれば、コンピュータ上で実行された場合に上記方法のすべてのステップを実行するように適合されたプログラム・コード手段を備える、コンピュータ・プログラムが提供される。   According to a third aspect of the preferred embodiment, there is provided a computer program comprising program code means adapted to perform all the steps of the method when executed on a computer.

次に本発明について、以下の図面に示された好ましい諸実施形態を参照しながら、単なる例として説明する。   The invention will now be described by way of example only with reference to the preferred embodiments shown in the following drawings.

従来技術の高可用性の第1の環境を示すブロック図である。It is a block diagram which shows the 1st environment of the high availability of a prior art. 高可用性の第1の環境においてコンピュータの障害が発生した場合の、図1に示された従来技術の高可用性の第1の環境を示すブロック図である。FIG. 2 is a block diagram illustrating a first high-availability environment of the prior art illustrated in FIG. 1 when a computer failure occurs in the first high-availability environment. 従来技術の高可能性の第2の環境を示すブロック図である。It is a block diagram which shows the 2nd environment of the high possibility of a prior art. 好ましい実施形態に従った、高可用性の第2の環境を示すブロック図である。FIG. 3 is a block diagram illustrating a second high availability environment according to a preferred embodiment. 図4の環境の親プロセスに関連付けられたプロセスに含まれる動作ステップを示す流れ図である。5 is a flow diagram illustrating operational steps included in a process associated with a parent process in the environment of FIG. 図4の環境の子プロセスに関連付けられたプロセスに含まれる動作ステップを示す流れ図である。FIG. 5 is a flow diagram illustrating operational steps included in a process associated with a child process of the environment of FIG. 第1の親プロセスに関連付けられたコンポーネントを示すブロック図である。FIG. 3 is a block diagram illustrating components associated with a first parent process. 第2の親プロセスに関連付けられたコンポーネントを示すブロック図である。FIG. 6 is a block diagram illustrating components associated with a second parent process. 図7の親プロセスの第1の子プロセスに関連付けられたコンポーネントを示すブロック図である。FIG. 8 is a block diagram illustrating components associated with a first child process of the parent process of FIG. 図7の親プロセスの第2の子プロセスに関連付けられたコンポーネントを示すブロック図である。FIG. 8 is a block diagram illustrating components associated with a second child process of the parent process of FIG.

ソフトウェア・コンポーネントの複数のインスタンスが、それぞれ、共有リソースのデータにアクセス可能な複数のプロセスを備える環境では、改良された手法が求められる。   An improved approach is required in an environment where multiple instances of a software component each have multiple processes that can access data in a shared resource.

本明細書の例では、ソフトウェア・コンポーネントの複数のインスタンスは、複数のコンピュータ上で同時に開始されることが可能である。各インスタンスはこの環境においてデータにアクセスするように動作可能であり、各インスタンスは1つまたは複数のオペレーティング・システム・プロセスを備える。   In the example herein, multiple instances of a software component can be started simultaneously on multiple computers. Each instance is operable to access data in this environment, and each instance comprises one or more operating system processes.

ソフトウェア・コンポーネントの各インスタンスは、「アクティブ」インスタンス(データの更新ができる)または「スタンバイ」インスタンス(データの更新ができない)のいずれかである。   Each instance of a software component is either an “active” instance (can update data) or a “standby” instance (cannot update data).

いずれの時点でも、この環境は複数のアクティブ・インスタンスを備えないが、複数のスタンバイ・インスタンスは存在可能であり、これによって不可欠なプログラムの単一の活動化が保証される。   At any point in time, the environment does not have multiple active instances, but multiple standby instances can exist, thereby ensuring a single activation of the essential program.

好ましいことに、単一のスタンバイ・インスタンスは、アクティブ・インスタンスの完全障害(すなわち、現行のアクティブ・インスタンスのあらゆるプロセスに関連付けられる障害)が発生した場合、新しいアクティブ・インスタンスとなることが可能である。より好ましいことに、アクティブ・インスタンスの部分障害(すなわち、現行のアクティブ・インスタンスのプロセスのサブセットには関連付けられるが、現行のアクティブ・インスタンスのあらゆるプロセスには関連付けられない障害)は、単一のスタンバイ・インスタンスが新しいアクティブ・インスタンスとなるのを防ぐ。   Preferably, a single standby instance can become a new active instance if a complete failure of the active instance (ie, a failure associated with any process of the current active instance) occurs. . More preferably, an active instance partial failure (ie, a failure that is associated with a subset of processes of the current active instance but not associated with any process of the current active instance) is a single standby. Prevent an instance from becoming a new active instance.

次に、好ましい実施形態の実装について、図面を参照しながら説明する。   Next, implementation of a preferred embodiment will be described with reference to the drawings.

図4は、高可用性ソフトウェア・コンポーネントの第5のインスタンス(310)を有する第5のコンピュータ(305)を備える、高可用性環境(300)を示す。   FIG. 4 shows a high availability environment (300) comprising a fifth computer (305) having a fifth instance (310) of a high availability software component.

第5のインスタンス(310)は複数のプロセス(311、312、および313)を備え、それぞれが、たとえばデータを備える共有ディスク(320)などの共有リソースにアクセスするように動作可能である。ある例では、共有ディスク(320)はネットワーク・ファイル・システムに関連付けられる。   The fifth instance (310) comprises a plurality of processes (311, 312, and 313), each operable to access a shared resource, such as a shared disk (320) comprising data. In one example, the shared disk (320) is associated with a network file system.

第1のプロセス(311)は、2つの子プロセス(すなわち、第2のプロセス(312)および第3のプロセス(313))を有する親プロセスであり、この親プロセスが子プロセスを開始する。   The first process (311) is a parent process having two child processes (ie, the second process (312) and the third process (313)), and this parent process initiates the child process.

環境(300)は、高可用性ソフトウェア・コンポーネントの第6のインスタンス(325)を有する第6のコンピュータ(315)も備え、この第6のインスタンス(325)は、それぞれが共有ディスク(320)にアクセスするように動作可能な複数のプロセス(326、327、および328)を備える。   The environment (300) also comprises a sixth computer (315) having a sixth instance (325) of high availability software components, each of which accesses a shared disk (320). A plurality of processes (326, 327, and 328) operable to.

第4のプロセス(326)は、2つの子プロセス(すなわち、第5のプロセス(327)および第6のプロセス(328))を有する親プロセスであり、この親プロセスが子プロセスを開始する。   The fourth process (326) is a parent process having two child processes (ie, a fifth process (327) and a sixth process (328)), and this parent process initiates the child process.

図7は第1のプロセス(311)に関連付けられたコンポーネントを示すブロック図であり、この第1のプロセス(311)は、それぞれが共有ディスク(320)にアクセスするように動作可能な、第1の監視コンポーネント(600)および第1のロック・コンポーネント(605)を備える。第1のプロセス(311)は、第1のイニシエータ・コンポーネント(610)も備える。   FIG. 7 is a block diagram illustrating components associated with a first process (311), each of the first processes (311) being operable to access a shared disk (320). Monitoring component (600) and a first locking component (605). The first process (311) also comprises a first initiator component (610).

図8は第4のプロセス(326)に関連付けられたコンポーネントを示すブロック図であり、この第4のプロセス(326)は、それぞれが共有ディスク(320)にアクセスするように動作可能な、第2の監視コンポーネント(615)および第2のロック・コンポーネント(620)を備える。第4のプロセス(326)は、第2のイニシエータ・コンポーネント(625)も備える。   FIG. 8 is a block diagram illustrating components associated with a fourth process (326), each of which is operable to access a shared disk (320). Monitoring component (615) and a second locking component (620). The fourth process (326) also comprises a second initiator component (625).

図9は第2のプロセス(312)に関連付けられたコンポーネントを示すブロック図であり、この第2のプロセス(312)は、それぞれが共有ディスク(320)にアクセスするように動作可能な、第3の監視コンポーネント(700)および第3のロック・コンポーネント(705)を備える。第2のプロセス(312)は、第1のターミネータ(710)も備える。   FIG. 9 is a block diagram illustrating components associated with a second process (312), each of which is operable to access a shared disk (320). Monitoring component (700) and a third locking component (705). The second process (312) also comprises a first terminator (710).

図10は第3のプロセス(313)に関連付けられたコンポーネントを示すブロック図であり、この第3のプロセス(313)は、それぞれが共有ディスク(320)にアクセスするように動作可能な、第4の監視コンポーネント(715)および第4のロック・コンポーネント(720)を備える。第3のプロセス(313)は、第2のターミネータ(725)も備える。   FIG. 10 is a block diagram illustrating components associated with a third process (313), each of which is operable to access a shared disk (320). Monitoring component (715) and a fourth locking component (720). The third process (313) also comprises a second terminator (725).

好ましくは、親プロセスおよび子プロセスのそれぞれが1つまたは複数のロックにアクセスするように動作可能である。   Preferably, each of the parent process and child process is operable to access one or more locks.

共有ディスク(320)上に格納されたファイルはロッキング用に使用される。   Files stored on the shared disk (320) are used for locking.

本明細書の例では、排他モードでロック可能なマスタ・ロック、および、排他モードまたは共有モードでロック可能なアクティブ・ロックが提供される。   In the example herein, a master lock that can be locked in exclusive mode and an active lock that can be locked in exclusive or shared mode are provided.

本発明は、通知ロック(advisorylock)または必須ロック(mandatory lock)と共に実装可能である。   The present invention can be implemented with an advisory lock or mandatory lock.

好ましくは、ロックは、その親プロセスがロックを保持するインスタンスに関連付けられた識別子を備える。一例では、この識別子は、共有ディスク(320)でロッキング用に使用されるファイル内に格納される。他の例では、この識別子は、ロッキング用に使用されるファイルとは別のファイル内に格納される。   Preferably, the lock comprises an identifier associated with the instance whose parent process holds the lock. In one example, this identifier is stored in a file used for locking on the shared disk (320). In other examples, this identifier is stored in a file separate from the file used for locking.

次に、ある例について、図4から図10を参照しながら説明する。   Next, an example will be described with reference to FIGS.

ある例では、第1のプロセス(311)が実行を開始することによって、第5のインスタンス(310)を開始させる。   In one example, the first process (311) starts execution, thereby starting the fifth instance (310).

図5を参照すると、第1のプロセス(311)の第1の監視コンポーネント(600)は、ロックの排他モードが取得可能かどうかを判別する(ステップ400)ために、マスタ・ロックを監視する。   Referring to FIG. 5, the first monitoring component (600) of the first process (311) monitors the master lock to determine if the lock exclusive mode is acquirable (step 400).

第1の監視コンポーネント(600)はマスタ・ロック上で排他モードが取得可能であるものと決定し、これに応答して、第1のロック・コンポーネント(605)はマスタ・ロック上で排他モードを取得する。好ましくは、第1のプロセス(311)に関連付けられた識別子はマスタ・ロックに関連付けられる。   The first monitoring component (600) determines that the exclusive mode can be acquired on the master lock, and in response, the first lock component (605) sets the exclusive mode on the master lock. get. Preferably, the identifier associated with the first process (311) is associated with the master lock.

第1のプロセス(311)の第1の監視コンポーネント(600)は、ロックの排他モードが取得可能かどうかを判別するために、アクティブ・ロックを監視する。   The first monitoring component (600) of the first process (311) monitors active locks to determine if the lock exclusive mode is acquirable.

第1の監視コンポーネント(600)はアクティブ・ロック上で排他モードが取得可能であるものと決定し、これに応答して、第1のロック・コンポーネント(605)はアクティブ・ロック上で当該排他モードを取得する。好ましくは、第1のプロセス(311)に関連付けられた識別子はアクティブ・ロックに関連付けられる。   The first monitoring component (600) determines that the exclusive mode is obtainable on the active lock, and in response, the first lock component (605) is in the exclusive mode on the active lock. To get. Preferably, the identifier associated with the first process (311) is associated with an active lock.

これに応答して、第5のインスタンス(310)がアクティブ・インスタンスになる(すなわち、第5のインスタンス(310)が唯一のアクティブ・インスタンスになる)。   In response, the fifth instance (310) becomes the active instance (ie, the fifth instance (310) becomes the only active instance).

これに応答して、第1のロック・コンポーネント(605)はアクティブ・ロック上で排他モードをロック解除し、その後、共有モードでアクティブ・ロックをロックする。   In response, the first lock component (605) unlocks the exclusive mode on the active lock and then locks the active lock in the shared mode.

第1のイニシエータ・コンポーネント(610)は、1つまたは複数の子プロセスを開始する。本明細書の例では、第1のイニシエータ・コンポーネント(610)は第2のプロセス(312)および第3のプロセス(313)を開始する。   The first initiator component (610) initiates one or more child processes. In the example herein, the first initiator component (610) initiates a second process (312) and a third process (313).

別の方法として、第2のプロセス(312)および第3のプロセス(313)のうちの少なくとも1つを、(たとえば、第1のプロセス(311)とは別の他のプロセスによって)独立に開始することができる。   Alternatively, at least one of the second process (312) and the third process (313) is initiated independently (eg, by another process separate from the first process (311)) can do.

好ましくは、第2のプロセスおよび第3のプロセスは、アクティブ・ロックの保持者が第1のプロセスである旨を確認するまでは、いかなる作業も実行せず、第3の監視コンポーネント(700)および第4の監視コンポーネント(715)のそれぞれは、識別子が第2のプロセスおよび第3のプロセスのそれぞれの親プロセスに関連付けられているかどうかを判別するために、アクティブ・ロックに関連付けられた識別子をチェックする。識別子が親プロセスに関連付けられていない場合、第2のプロセスおよび第3のプロセスは、親プロセスに障害が発生し、さらにそれらを終了しなければならないものと想定するが、この終了手順については以下でより詳細に説明する。   Preferably, the second and third processes do not perform any work until the active lock holder confirms that it is the first process, and the third monitoring component (700) and Each of the fourth monitoring components (715) checks the identifier associated with the active lock to determine whether the identifier is associated with the respective parent process of the second process and the third process. To do. If the identifier is not associated with the parent process, the second and third processes assume that the parent process has failed and must be terminated, but this termination procedure is described below. Will be described in more detail.

この例では、識別子は親プロセス(すなわち第1のプロセス(311))に関連付けられる。これに応答して、図6を参照すると、開始時に、第3の監視コンポーネント(700)および第4の監視コンポーネント(715)のそれぞれは、ロックの共有モードが取得可能かどうかを判別する(ステップ500)ために、アクティブ・ロックを監視する。   In this example, the identifier is associated with the parent process (ie, the first process (311)). In response, referring to FIG. 6, at the start, each of the third monitoring component (700) and the fourth monitoring component (715) determines whether the lock sharing mode can be acquired (steps). 500) for active locks.

第3の監視コンポーネント(700)は、アクティブ・ロック上で共有モードが取得可能であるものと決定し、これに応答して、第3のロック・コンポーネント(705)はアクティブ・ロック上で当該共有モードを取得する(ステップ505)。   The third monitoring component (700) determines that the sharing mode is obtainable on the active lock, and in response, the third locking component (705) is responsible for the sharing on the active lock. The mode is acquired (step 505).

第4の監視コンポーネント(715)は、アクティブ・ロック上で共有モードが取得可能であるものと決定し、これに応答して、第4のロック・コンポーネント(720)はアクティブ・ロック上で当該共有モードを取得する(ステップ505)。   The fourth monitoring component (715) determines that the shared mode can be acquired on the active lock, and in response, the fourth lock component (720) determines that the shared mode on the active lock. The mode is acquired (step 505).

したがって、第1のプロセス(311)はマスタ・ロックを排他モードで保持し、第1のプロセス(311)、第2のプロセス(312)、および第3のプロセス(313)のそれぞれは、アクティブ・ロックを共有モードで保持する。   Thus, the first process (311) holds the master lock in exclusive mode, and each of the first process (311), the second process (312), and the third process (313) Hold the lock in shared mode.

結果として、他の単一インスタンスが新しいアクティブ・インスタンスになることはできず、第1のプロセス(311)、第2のプロセス(312)、および第3のプロセス(313)のそれぞれは、共有ディスク内のデータに安全にアクセスすることができる。第1のプロセス(311)、第2のプロセス(312)、および第3のプロセス(313)が同じインスタンス(すなわち、第5のインスタンス(310))に関連付けられているため、第1のプロセス(311)、第2のプロセス(312)、および第3のプロセス(313)による共有ディスク(320)へのアクセスは、既知の機構を使用して調整可能であることを理解されたい。   As a result, no other single instance can become the new active instance, and each of the first process (311), the second process (312), and the third process (313) You can safely access the data inside. Since the first process (311), the second process (312), and the third process (313) are associated with the same instance (ie, the fifth instance (310)), the first process ( It should be understood that access to the shared disk (320) by 311), the second process (312), and the third process (313) can be adjusted using known mechanisms.

図5を参照すると、この例では、第4のプロセス(326)は第6のインスタンス(325)によって開始される。   Referring to FIG. 5, in this example, the fourth process (326) is initiated by the sixth instance (325).

第4のプロセス(326)の第4の監視コンポーネント(615)は、ロックの排他モードが取得可能であるかどうかを判別する(400)ために、マスタ・ロックを監視する。   The fourth monitoring component (615) of the fourth process (326) monitors the master lock to determine if the lock exclusive mode is obtainable (400).

第4の監視コンポーネント(615)は、マスタ・ロック上で排他モードが取得できないものと決定するが、これは、マスタ・ロックの排他モードが第1のプロセス(311)によってすでに取得されているためである。   The fourth monitoring component (615) determines that the exclusive mode cannot be acquired on the master lock, because the master lock exclusive mode has already been acquired by the first process (311). It is.

有利なことに、第4の監視コンポーネント(615)は、マスタ・ロックの排他モードが取得可能であるかどうかに関連付けられた決定を使用して、他のインスタンスがアクティブであるかどうかも判別することができる。第4の監視コンポーネント(615)がマスタ・ロックの排他モードを取得できない場合、第4の監視コンポーネント(615)は、他のインスタンスがマスタ・ロックの排他モードをすでに保持しているものと決定する。   Advantageously, the fourth monitoring component (615) also uses the decision associated with whether the master lock exclusive mode is obtainable to also determine if other instances are active. be able to. If the fourth monitoring component (615) is unable to obtain the master lock exclusion mode, the fourth monitoring component (615) determines that another instance already holds the master lock exclusion mode. .

ステップ430で、第6のインスタンス(325)は、新しいアクティブ・インスタンスとなるように再試行するかどうかを判別する。第6のインスタンス(325)が、新しいアクティブ・インスタンスとなるように再試行しないことに応答して、図5のプロセスは終了する。   In step 430, the sixth instance (325) determines whether to retry to become a new active instance. In response to the sixth instance (325) not retrying to become a new active instance, the process of FIG. 5 ends.

第6のインスタンス(325)が、新しいアクティブ・インスタンスとなるように再試行することに応答して、第6のインスタンス(325)はスタンバイ・インスタンスとしてマークされる(ステップ435)。   In response to retrying the sixth instance (325) to be a new active instance, the sixth instance (325) is marked as a standby instance (step 435).

この例では、第6のインスタンス(325)は新しいアクティブ・インスタンスとなるように再試行し(ステップ435)、その後、第4の監視コンポーネント(615)は、ロックの排他モードが取得可能かどうかを判別する(ステップ400)ためにマスタ・ロックを監視する。   In this example, the sixth instance (325) retries to become a new active instance (step 435), after which the fourth monitoring component (615) determines whether the lock exclusive mode is available. The master lock is monitored for determination (step 400).

第4の監視コンポーネント(615)は、マスタ・ロック上で排他モードが取得可能であるものと決定するが、これは、この例において、マスタ・ロックの排他モードが第1のプロセス(311)のロック・コンポーネント(605)によって解除されている(たとえば、第1のプロセス(311)が作業を完了したために明示的に解除されている、第1のプロセス(311)に障害が発生したために暗黙的に解除されている)ためである。   The fourth monitoring component (615) determines that the exclusive mode is obtainable on the master lock, which in this example is that the master lock exclusive mode is the first process (311). Implicit due to failure of the first process (311) that has been released by the lock component (605) (eg, explicitly released because the first process (311) has completed its work) Because it has been released).

その後、第4のロック・コンポーネント(720)は、マスタ・ロック上で排他モードを取得する(ステップ405)。   Thereafter, the fourth lock component (720) acquires the exclusive mode on the master lock (step 405).

ここで第6のインスタンス(325)は、新しいアクティブ・インスタンスとなるように試行する。   Now the sixth instance (325) tries to become the new active instance.

これに応答して、その後第4の監視コンポーネント(615)は、ロックの排他モードが取得可能かどうかを判別する(ステップ410)ためにアクティブ・ロックを監視する。   In response, the fourth monitoring component (615) then monitors the active lock to determine if the lock exclusive mode is acquirable (step 410).

第1の監視コンポーネント(600)は、アクティブ・ロック上で排他モードが取得できないものと決定するが、本明細書の例では、これは、第2のプロセス(312)または第3のプロセス(313)のうちの少なくとも1つが、依然としてアクティブ・ロックを共有モードで保持しているためである。   The first monitoring component (600) determines that the exclusive mode cannot be acquired on the active lock, which in the example herein is the second process (312) or the third process (313). Because at least one of them still holds the active lock in shared mode.

その後、第4のロック・コンポーネント(720)はマスタ・ロック上で排他モードを解除し、第6のインスタンス(325)はスタンバイ・インスタンスを維持する(ステップ430)。   Thereafter, the fourth lock component (720) releases the exclusive mode on the master lock, and the sixth instance (325) maintains the standby instance (step 430).

好ましい実施形態は、「階層」ロック、すなわちマスタ・ロックおよびアクティブ・ロックを提供し、ここで最初にマスタ・ロックが取得され、続いてアクティブ・ロックが取得できることを理解されたい。本発明は、階層ロックを使用することにより、現行のアクティブ・インスタンスの親プロセスは終了可能であるが、関連付けられた子プロセスはまだ終了しないように、タイミング・ウィンドウを調節し、その結果として、マスタ・ロック上の排他モードは親プロセスによって解除され、アクティブ・ロック上の共有モードは子プロセスによって解除されないようにすることによって、信頼性を与える。したがって、たとえ第4のプロセス(326)がマスタ・ロック上で排他モードを取得できる場合(すなわち、第2のプロセス(312)または第3のプロセス(313)のうちの少なくとも1つが依然としてアクティブ・ロックを維持していることによって、第4のプロセス(326)がアクティブ・ロック上で排他モードを取得できないため)であっても、第6のインスタンス(325)はスタンバイ・インスタンスを維持する。   It should be understood that the preferred embodiment provides "hierarchical" locks, i.e., master locks and active locks, where a master lock can be acquired first, followed by an active lock. The present invention uses the hierarchical lock to adjust the timing window so that the parent process of the current active instance can be terminated but the associated child process is not yet terminated, and as a result, The exclusive mode on the master lock is released by the parent process, and the shared mode on the active lock is trusted by not being released by the child process. Thus, even if the fourth process (326) can acquire the exclusive mode on the master lock (ie, at least one of the second process (312) or the third process (313) is still an active lock). The sixth instance (325) maintains a standby instance even if the fourth process (326) cannot acquire an exclusive mode on the active lock.

第6のインスタンス(325)が新しいアクティブ・インスタンスになるように再試行しない(ステップ435)ことに応答して、プロセスは終了する。   In response to not retrying the sixth instance (325) to become the new active instance (step 435), the process ends.

この例では、第6のインスタンス(325)が新しいアクティブ・インスタンスになるように再試行する(ステップ435)ことに応答して、第4の監視コンポーネント(615)は、ロックの排他モードが取得できるかどうかを判別する(ステップ400)ためにマスタ・ロックを監視する。   In this example, in response to retrying the sixth instance (325) to become the new active instance (step 435), the fourth monitoring component (615) can acquire the lock exclusive mode. The master lock is monitored to determine whether it is (step 400).

第4の監視コンポーネント(615)は、マスタ・ロック上で排他モードが取得できるものと決定するが、この例では、これは、マスタ・ロックの排他モードが第1のプロセス(311)の第1のロック・コンポーネント(605)によって解除されているためである。   The fourth monitoring component (615) determines that the exclusive mode can be acquired on the master lock, which in this example is the master lock exclusive mode is the first of the first process (311). This is because it is released by the lock component (605).

その後、第4のロック・コンポーネント(720)はマスタ・ロック上で排他モードを取得する。   Thereafter, the fourth lock component (720) acquires the exclusive mode on the master lock.

第4の監視コンポーネント(615)は、その後、ロックの排他モードが取得できるかどうかを判別するため(ステップ410)にアクティブ・ロックを監視する。   The fourth monitoring component (615) then monitors the active lock to determine if the lock exclusive mode can be obtained (step 410).

第1の監視コンポーネント(600)は、排他モードがアクティブ・ロック上で取得できるものと決定するが、この例では、これは、第2のプロセス(312)または第3のプロセス(313)のいずれも、依然としてアクティブ・ロックを共有モードで保持していないためである。   The first monitoring component (600) determines that the exclusive mode can be acquired on the active lock, which in this example is either the second process (312) or the third process (313). This is because the active lock is still not held in the shared mode.

第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)ことを理解されたい。   An event that neither the second process (312) or the third process (313) holds an active lock in shared mode is, for example, that either the second process and the third process are explicit or By being terminated implicitly, or the first process (311) is terminated (explicitly or implicitly by a fault), after which the third monitoring component (700) and the fourth monitoring component Each of (715) may occur by determining (step 510) that the first process (311) has ended using the polling function, and then the second process and the second The first terminator (710) and the second terminator (725) of each of the three processes are terminated. (Step 520), to release the active lock in shared mode. It should be understood that if the first process (311) has not finished, the child process can continue working (step 515).

第1の監視コンポーネント(600)が、アクティブ・ロック上で排他モードが取得可能であるものと決定することに応答して、第4のロック・コンポーネント(720)はアクティブ・ロック上で当該排他モードを取得する。   In response to the first monitoring component (600) determining that the exclusive mode is obtainable on the active lock, the fourth lock component (720) is in the exclusive mode on the active lock. To get.

これに応答して、第6のインスタンス(325)が新しいアクティブ・インスタンスとなる。   In response, the sixth instance (325) becomes the new active instance.

前述の例では、実行中の第5のインスタンス(310)の子プロセス(すなわち、前のアクティブ・インスタンス)が存在しないため、第4のロック・コンポーネント(720)は、アクティブ・ロック上で排他モードを取得するように動作可能であることを理解されたい。さらに、第5のインスタンス(310)に関連付けられたそれぞれのプロセス(311、312、および313)が実行中でないため、第4のロック・コンポーネント(720)は、マスタ・ロック上およびアクティブ・ロック上のそれぞれで排他モードを取得するように動作可能である。   In the above example, there is no child process (ie, the previous active instance) of the running fifth instance (310), so the fourth lock component (720) is in exclusive mode on the active lock. It should be understood that is operable to obtain Further, the fourth lock component (720) is on the master lock and on the active lock because the respective processes (311, 312 and 313) associated with the fifth instance (310) are not running. Each of which is operable to acquire an exclusive mode.

他の実装では、複数のアクティブ・ロックが提供される。好ましくは、マスタ・ロック上の排他モードが解除されている場合、アクティブ・インスタンスのすべてのプロセスは、他のインスタンスが新しいアクティブ・インスタンスとなるように試行できるようにするために、複数のアクティブ・ロックのすべてを解除しなければならない。   In other implementations, multiple active locks are provided. Preferably, if the exclusive mode on the master lock is released, all processes of the active instance can have multiple active instances to allow other instances to attempt to become the new active instance. All of the locks must be released.

その後、第4のロック・コンポーネント(720)はアクティブ・ロック上の排他モードをロック解除し、その後、アクティブ・ロックを共有モードでロックする。   The fourth lock component (720) then unlocks the exclusive mode on the active lock and then locks the active lock in shared mode.

第2のイニシエータ・コンポーネント(625)は、1つまたは複数の子プロセス、たとえば第5のプロセス(327)および第6のプロセス(328)を開始することができる。   The second initiator component (625) can initiate one or more child processes, eg, a fifth process (327) and a sixth process (328).

有利なことに、本発明は、各インスタンスが複数のプロセスを備えることが可能な環境において、インスタンスの高可用性(たとえば、あるインスタンスが新しいアクティブ・インスタンスになることができる)、ならびに、ソフトウェア・コンポーネントの1つのインスタンスのみが一度に共有データにアクセスできるような保証された単一の活動化(たとえば、たとえば排他マスタ・ロックおよび排他/共有アクティブ・ロックなどの「階層」ロッキングを使用することによって)を、可能にする。   Advantageously, the present invention provides high availability of instances (eg, an instance can become a new active instance) as well as software components in an environment where each instance can comprise multiple processes. Guaranteed single activation so that only one instance of can access shared data at a time (eg, by using “hierarchical” locking such as exclusive master lock and exclusive / shared active lock) Make it possible.

有利なことに、他のインスタンスの位置を用いてインスタンスを構成する必要はなく、単一の活動化を保証するためにネットワークがインスタンス間でハートビート(heartbeating)する必要はない。これは、ファイル・ロッキングを使用して単一の活動化を保証できるためである。有利なことに、障害の発生したインスタンスに関連付けられたデータ(たとえば、障害の発生したインスタンスが実行されていた場所に関連付けられた場所)を知る必要なしに、障害の発生したインスタンスをスタンバイ・インスタンスに置き換えることができる。   Advantageously, there is no need to configure the instance with the location of other instances, and the network does not have to heartbeat between instances to ensure a single activation. This is because file locking can be used to guarantee a single activation. Advantageously, the failed instance can be placed on the standby instance without having to know the data associated with the failed instance (for example, the location associated with the location where the failed instance was running). Can be replaced.

有利なことに、HAソフトウェアは不要である。これによって有用性が増加し、より容易にスタンバイ・インスタンスを導入することができる。   Advantageously, HA software is not required. This increases usability and makes it easier to introduce standby instances.

さらに、たとえばネットワークの故障停止があった場合、ロックを保持するプロセスの識別子のロックとの関連付けが有利である。故障停止に続き、親プロセスはロックを再取得し、識別子がそれ自体のものであるかどうかを判別するために、識別子に問い合わせることができる。識別子がそれ自体のものである場合、プロセスは、故障停止以前にロックを保持していたこと、および、故障停止中に他のいずれのインスタンスもロックを取得しなかったことがわかる。識別子がそれ自体のものでない場合、プロセスは、故障停止中に他のインスタンスがロックを取得しなければならなかったことがわかり、この場合、親プロセスおよびインスタンスに関連付けられた他のプロセスは、整合性を保証するためにインスタンスを終了しなければならない(また、必要であれば、親プロセスはロックを取得するために再実行および試行することができる)。   Further, for example, in the event of a network outage, it is advantageous to associate the identifier of the process holding the lock with the lock. Following a failure stop, the parent process can reacquire the lock and query the identifier to determine if the identifier is its own. If the identifier is itself, then the process knows that it had held the lock before the failure stop and that no other instance acquired the lock during the failure stop. If the identifier is not its own, the process knows that the other instance had to acquire a lock during the failure outage, in which case the parent process and other processes associated with the instance are consistent The instance must be terminated to guarantee its sexuality (and the parent process can be re-executed and attempted to acquire the lock if necessary).

複数のスタンバイ・インスタンスが存在する場合、好ましくは、現行のアクティブ・インスタンスがもはやアクティブ・インスタンスでなければ、新しいアクティブ・インスタンスとなるように単一のスタンバイ・インスタンスを選択するために選択プロセスが実装され、ここで、たとえば複数のスタンバイ・インスタンスは新しいアクティブ・インスタンスとなるように競合し、複数のスタンバイ・インスタンスは、どちらが新しいアクティブ・インスタンスとなるかを決定することを理解されたい。別の方法として、他のロック・ファイルを使用して、スタンバイ・インスタンスを調整および監視することができる。   If there are multiple standby instances, preferably a selection process is implemented to select a single standby instance to be the new active instance if the current active instance is no longer the active instance It should be understood that, for example, multiple standby instances compete to be the new active instance, and the multiple standby instances determine which will be the new active instance. Alternatively, other lock files can be used to coordinate and monitor the standby instance.

Claims (7)

第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のインスタンスが前記共有データにアクセスできるようにするための手段と、
を備える、装置。
An apparatus for maintaining data integrity, used in an environment comprising a first software instance having a first plurality of processes and a second software instance, wherein the first software instance And the second software instance is each operable to access shared data, and a file associated with the shared data is used for locking;
Each process of the second software instance comprises a first locking component, a second locking component, and a means for activating the second locking component;
In response to a first hierarchy file lock not being held by a first parent process of the first plurality of processes, obtaining the first hierarchy file lock on behalf of the second instance A first locking component for
Means for activating a second lock component in response to obtaining the first hierarchy file lock on behalf of the second instance, the second lock component , On behalf of the second instance, in response to a second hierarchy file lock being a child of the first hierarchy file lock not being held by any of the first plurality of processes. Means for activating, operable to acquire a second hierarchy file lock;
Responsive to the first lock component obtaining the first tier file lock and responsive to the second lock component obtaining the second tier file lock. Means for preventing the first instance from accessing shared data and for allowing a second instance to access the shared data;
An apparatus comprising:
前記第2のソフトウェア・インスタンスの各プロセスが、さらに、第2の監視コンポーネントを有していて、
前記第2のロック・コンポーネントは、第2の監視コンポーネントが、前記第1の複数のプロセスのうちの少なくとも1つによって第2の階層ファイル・ロックが取得されたものと決定することに応答して、前記第2のインスタンスに代わって前記第2の階層ファイル・ロックを取得するのを防ぐように動作可能である、請求項1に記載の装置。
Each process of the second software instance further comprises a second monitoring component;
The second lock component is responsive to a second monitoring component determining that a second hierarchy file lock has been acquired by at least one of the first plurality of processes. The apparatus of claim 1, wherein the apparatus is operable to prevent obtaining the second tier file lock on behalf of the second instance.
前記第2のソフトウェア・インスタンスは第2の複数のプロセスを備え、前記第2のロック・コンポーネントは、前記第2の複数のプロセスのうちの少なくとも1つに代わって前記第2の階層ファイル・ロックを取得するように動作可能である、請求項1に記載の装置。   The second software instance comprises a second plurality of processes, and the second lock component is configured to replace the second hierarchical file lock on behalf of at least one of the second plurality of processes. The apparatus of claim 1, wherein the apparatus is operable to obtain 前記第1の階層ファイル・ロックが取得されるように使用可能であるかどうかを判別するための、第1の監視コンポーネントをさらに備える、請求項1に記載の装置。   The apparatus of claim 1, further comprising a first monitoring component for determining whether the first hierarchy file lock is available to be acquired. 前記第2の階層ファイル・ロックが取得されるように使用可能であるかどうかを判別するための、第2の監視コンポーネントをさらに備える、請求項1に記載の装置。   The apparatus of claim 1, further comprising a second monitoring component for determining whether the second hierarchy file lock is available to be acquired. 第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のインスタンスが前記共有データにアクセスできるようにすること、
を含
これらのことをハードウェア技術とソフトウェア技術とが組み合わされたコンピュータに実行させる、方法。
A method for maintaining data integrity for use in an environment comprising a first software instance having a first plurality of processes and a second software instance, wherein the first software instance And the second software instance is each operable to access shared data, and a file associated with the shared data is used for locking;
Each process of the second software instance comprises a first locking component, a second locking component, and a means for activating the second locking component;
In response to a first hierarchy file lock not being held by a first parent process of the first plurality of processes, obtaining the first hierarchy file lock on behalf of the second instance To do,
The first tier file lock is acquired on behalf of the second instance, and any second tier file lock that is a child of the first tier file lock In response to being not held by a plurality of processes, obtaining a second hierarchy file lock on behalf of the second instance, and the first hierarchy file lock and the second hierarchy file In response to obtaining a lock, preventing the first instance from accessing the shared data, and allowing the second instance to access the shared data;
Only including,
A method that allows a computer that combines hardware and software techniques to do these things .
コンピュータ上で実行された場合に請求項6に記載の方法を実行するように適合されたプログラム・コードを備える、コンピュータ・プログラム。   A computer program comprising program code adapted to perform the method of claim 6 when executed on a computer.
JP2011548640A 2009-02-06 2010-01-26 Apparatus, method, and computer program for maintaining data integrity (apparatus for maintaining data consistency) Active JP5466717B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP09152290 2009-02-06
EP09152290.4 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 (en) 2012-07-26
JP5466717B2 true JP5466717B2 (en) 2014-04-09

Family

ID=42104432

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011548640A Active JP5466717B2 (en) 2009-02-06 2010-01-26 Apparatus, method, and computer program for maintaining data integrity (apparatus for maintaining data consistency)

Country Status (5)

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

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
US9032484B2 (en) 2011-10-31 2015-05-12 International Business Machines Corporation Access control in a hybrid environment
US9053141B2 (en) * 2011-10-31 2015-06-09 International Business Machines Corporation Serialization of access to data in multi-mainframe computing environments
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 (en) * 1988-02-16 1989-08-21 Fujitsu Ltd Exclusive control system
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 (en) * 1992-05-06 1993-11-18 International Business Machines Corporation Method for controlling the access of multiple processors to shared data
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 (en) * 2000-10-16 2002-04-26 Toshiba Corp File access control system
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 (en) 2011-12-28
WO2010089222A1 (en) 2010-08-12
KR101581072B1 (en) 2015-12-30
US20100205164A1 (en) 2010-08-12
JP2012517057A (en) 2012-07-26
US10372682B2 (en) 2019-08-06
CN102301368B (en) 2014-01-22
KR20110114699A (en) 2011-10-19

Similar Documents

Publication Publication Date Title
JP5466717B2 (en) Apparatus, method, and computer program for maintaining data integrity (apparatus for maintaining data consistency)
US7870426B2 (en) Apparatus, system, and method for transactional peer recovery in a data sharing clustering computer system
EP2754059B1 (en) Clustered client failover
JP4726416B2 (en) Method for operating a computer cluster
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
US20160062852A1 (en) Transaction Recovery in a Transaction Processing Computer System Employing Multiple Transaction Managers
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
KR20070049155A (en) Apparatus, system, and method for file system serialization reinitialization
CN106462472B (en) Obtaining resource leases using multiple lease servers
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 (en) Data synchronization system, failure recovery method, and program
WO2008039618A1 (en) Persistent locks/resources for concurrency control
JP4874847B2 (en) Cluster system
JP2894434B2 (en) File exclusion control processing device and its failure recovery method
US11681450B2 (en) System and method for self-encrypting drive reversion during re-initialization of a storage array
CN118035199A (en) Nfs server control method and device for preventing read-write abnormality during high availability switching
CN116932285A (en) MariaDB database master-slave switching method and device based on arbitration disk
CN117632525A (en) Systems and methods for recovery with a distributed lock manager

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