(57)【特許請求の範囲】
【請求項１】
複数の処理を並列に実行する並列処理装置と、前記並列処理装置の故障発生時に、動作をひきついで処理を実行する処理装置と、前記並列処理装置及び前記処理装置にアクセスされ、ファイル処理のためのデータ及びファイル内容を格納するデータ格納手段とを有し、
前記並列処理装置が、前記ファイル処理のための第１のデータを変更した後、前記第１のデータに関連する第２のデータを変更して、前記データ格納手段のファイル処理を行う並列処理システムのための処理引き継ぎ方法において、
前記並列処理装置が、一時的に空きブロックリスト及びブロックリストである前記第２のデータと矛盾した状態を許すように、空きブロック数である前記第１のデータ及び前記第１のデータを使用したファイル処理を排他制御せずに、メインメモリの前記第１のデータを変更した後、前記データ格納手段から前記メインメモリに、前記第２のデータを読み出すステップと、
前記並列処理装置が、前記第２のデータと、前記第１のデータと同一内容を示すための第１のデータの空きブロック数のシャドウオブジェクトである第３のデータとを排他制御するステップと、
前記並列処理装置が、前記メインメモリの前記第２のデータと第３のデータとを変更した後、少なくとも前記第３のデータを前記処理装置に転送するステップと、
前記並列処理装置が、前記第２のデータと前記第３のデータとの排他制御を解除するステップと、
前記処理装置が、前記並列処理装置の故障発生時に、前記転送された第３のデータを初期値として、処理を引き継いで実行するステップとを有することを
特徴とする並列処理システムの処理引き継ぎ方法。
【請求項２】
請求項１の並列処理システムの処理引き継ぎ方法において、
前記並列処理装置は、
前記空きブロック数のシャドウオブジェクトを変更する際に、前記空きブロックリストの変更及び前記ブロックリストの追加と一貫性を保つように、前記空きブロック数のシャドウオブジェクトを変更することを
特徴とする並列処理システムの処理引き継ぎ方法。
【請求項３】
請求項１又は２の並列処理システムの処理引き継ぎ方法において、
前記並列処理装置は、前記処理装置に、前記第３のデータを転送するとともに、前記第２のデータを転送することを
特徴とする並列処理システムの処理引き継ぎ方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、並列処理装置が故障した場合に、代替装置が動作をひきついで運用を実行する機能を付加した並列処理システムの処理引き継ぎ方法に関する。
【０００２】
処理速度の向上のために、複数の処理を同時に実行する並列処理装置が、利用されている。このような並列処理装置では、複数の処理が同時に実行されるため、同一の資源（データ）を同時にアクセスする場合がある。このような資源の競合を防止するために、資源の排他制御が行われる。
【０００３】
しかしながら、排他制御することは、一の処理に資源の利用を許す反面、他の処理を待たせることになる。このため、速度向上の観点からは、排他制御の時間が短いことが要求される。
【０００４】
【従来の技術】
図４は、並列処理の説明図、図５は排他制御の説明図である。
【０００５】
図４に示すように、並列処理においては、第１の処理と第２の処理が平行して行われる。このような並列処理において、同一の資源を複数の処理が同時にアクセスされる場合が生じる。
【０００６】
例えば、図４に示すように、Ａ銀行の口座からＢ銀行の口座に１０００円移動する第１の処理と、Ａ銀行の口座とＢ銀行の口座の合計額を計算する第２の処理とが、同時に走っている場合には、Ａ銀行の口座とＢ銀行の口座が、同時にアクセスされる場合が生じる。
【０００７】
このような場合に、第１の処理により、先ず、Ａ銀行の口座（残高１０００円）から１０００円を差し引き、次に、第２の処理によりＡ銀行の口座とＢ銀行の口座（残高０円）の合計額を計算し、第１の処理により、Ｂ銀行の口座に１０００円足す処理が行われると、第２の処理の結果に誤りが生じる。
【０００８】
即ち、ある処理により、資源が変更された場合に、一貫性が破壊されてしまう場合がある。
【０００９】
この一貫性を保つためには、一の処理を行っている間に、他の処理がその資源にアクセスしないように、排他制御を行う。
【００１０】
図５に示すように、図４の処理の例では、口座から口座に預金を移動する第１の処理のため、先ず、２つの口座のデータを排他制御して、預金の移動処理を行ってから、２つの口座の排他制御を解除して、第２の処理を開始する。
【００１１】
この排他制御が行われている間には、他の処理は、待たされることになり、過渡的なデータの読み出しを防止できる。
【００１２】
図６は、代替システムの説明図である。
【００１３】
一方、並列処理装置１は、故障によりダウンする場合がある。この故障時に、システムが運用を継続できるように耐故障性機能を付加する必要がある。このため、図６に示すように、第１の並列処理装置（現用機）１に対し、代替装置（待機機）２を用意する。代替装置２は、並列処理装置である。尚、３は、ファイル装置である。
【００１４】
この並列処理システムにおいて、耐故障性を付加した場合に、現用機１の故障時に、待機機２は、現用機１のデータを引き継ぐ必要がある。このため、現用機１が、資源を排他制御してから、資源の内容を変更し、変更内容を待機機２に送信した後、資源の排他制御を解除する必要がある。
【００１５】
このデータの引き継ぎ方法として、従来次のものが考えられていた。
【００１６】
図７は、第１の従来技術の説明図、図８は、第１の従来技術の処理フロー図である。
【００１７】
排他制御の時間が長いと、処理速度が低下する。このため、参照が頻繁に行われる資源の場合には、一時的に矛盾した状態が存在することを許して、一貫性維持のための排他制御を行わないものがある。
【００１８】
このような資源の例としては、ＵＮＩＸファイルシステムの空きブロック数や、ファイルのリンクカウント値がある。
【００１９】
従来の資源の排他制御を、図７に示すファイルの拡張処理の例で説明する。
【００２０】
先ず、排他制御せずに、空きブロック数を変更する。ファイルの拡張では、空きブロック数を「１」少なくする。次に、それに伴い、ファイル装置３から空きブロックビットマップ（空きブロックリスト）及びブロックリストを読みだす。空きブロックビットマップは、どのファイルにも使われていないブロックを管理するものである。又、ブロックリストは、ファイル内容を格納しているディスク上のブロックを管理するためのものである。
【００２１】
次に、排他制御装置に、空きブロックビットマップと、ブロックリストの排他制御を依頼する。そして、空きブロックビットマップと、ブロックリストを排他制御した後、空きブロックビットマップと、ブロックリストを変更する。そして、排他制御装置に排他制御の解除を依頼する。これにより、空きブロックビットマップと、ブロックリストの排他制御を解除する。
【００２２】
この例では、空きブロック数は、空きブロックビットマップと、ブロックリストを参照することにより、判明できるため、空きブロック数を排他制御しなくて良い。即ち、空きブロック数に、一時的に、データの矛盾を許す。即ち、空きブロック数の変更と、これに伴う処理であるディスク上のデータリード処理とを、排他制御外とする。これにより、排他制御の時間が、空きブロック数の変更と、時間のかかる空きブロックビットマップとブロックリストの読み出し時間分短くなる。
【００２３】
これを、一般的に示すと、図８のようになる。ここで、一貫性無視資源が、空きブロック数であり、他の資源が、空きブロックビットマップと、ブロックリストである。
【００２４】
この一貫性を無視した資源を変更した後、システムが矛盾のない状態に戻る前に故障が発生した時には、前記資源を回復する手法が知られている。即ち、再立ち上げの途中で、一貫性チェックプログラムが起動して、一貫性を回復する。例えば、ＵＮＩＸファイルシステムの場合、ｆｓｃｋというプログラムがこれを行う。
【００２５】
並列処理システムに耐故障性を持たせるために、現用機１から待機機２への引き継ぎ時に、この方法を利用することが考えられる。即ち、現用機１の故障時に、待機機２で、一貫性チェックプログラムを走らせて、資源の一貫性を回復して、待機機２の処理再開を行うことが考えられる。
【００２６】
一方、他の従来の方法として、図９に示すように、一貫性を無視した資源をも、排他制御して、一貫性を保つ。そして、現用機１から待機機２に、資源の内容を転送する。待機機２は、現用機１の故障時に、送られた資源を元に処理を再開する方法が、行われていた。
【００２７】
【発明が解決しようとする課題】
前述の従来技術では、次の問題が生じていた。
【００２８】
図７及び図８に示す一貫性チェックプログラムを走らせる第１の従来技術を、現用機１の故障時に適用すると、待機機２は、一貫性チェックプログラムが起動され、終了するまで、処理再開を待つ必要があった。一貫性チェックプログラムは、ファイル装置３の内容を全て調べて、資源の一貫性を回復するため、処理に時間がかかり、待機機２の処理再開が遅くなるという問題が生じていた。
【００２９】
図９に示す第２の従来技術では、一貫性を無視しても良い資源も、排他制御するため、排他制御の不必要に時間が長くなる。このため、並列処理の処理速度が低下するという問題が生じていた。
【００３０】
更に、処理のつどに、ファイル装置３に資源を書き戻すことも考えられるが、時間がかかるため、ファイル装置３への書き込みは、例えば、３０秒に１回程度にすることが望ましい。このため、処理のつどに、ファイル装置３に資源を書き戻すことは、並列処理速度を大幅に低下することになる。
【００３１】
本発明の目的は、並列処理の速度低下を防止するとともに、待機機の処理再開が遅くなることを防止するための並列処理システムの処理引き継ぎ方法を提供することにある。
【００３２】
本発明の他の目的は、不必要な排他制御を防止し、且つ一貫性チェックプログラムによる処理を不要とすることができる並列処理システムの処理引き継ぎ方法を提供することにある。
【００３３】
【課題を解決するための手段】
図１は、本発明の原理図である。
【００３４】
並列処理システムは、複数の処理を並列に実行する並列処理装置１と、並列処理装置１の故障発生時に、動作をひきついで処理を実行する処理装置２と、並列処理装置１及び処理装置２にアクセスされ、ファイル処理のためのデータ及びファイル内容を格納するデータ格納手段３とを有する。この並列処理装置１は、前記ファイル処理のための第１のデータを変更した後、前記第１のデータに関連する第２のデータを変更して、データ格納手段３のファイル処理を行うものである。
【００３５】
そして、処理引き継ぎ方法は、並列処理装置１が、一時的に空きブロックリスト及びブロックリストである第２のデータと矛盾した状態を許すように、空きブロック数である第１のデータ及び第１のデータを使用したファイル処理を排他制御せずに、メインメモリの第１のデータを変更した後、データ格納手段３からメインメモリに、第２のデータを読み出すステップと、並列処理装置１が、第２のデータと、第１のデータと同一内容を示すための第１のデータの空きブロック数のシャドウオブジェクトである第３のデータとを排他制御するステップと、並列処理装置１が、メインメモリの前記第２のデータと第３のデータとを変更した後、少なくとも前記第３のデータを処理装置２に転送するステップと、並列処理装置１が、第２のデータと第３のデータとの排他制御を解除するステップと、処理装置２が、並列処理装置１の故障発生時に、転送された第３のデータを初期値として、処理を引き継いで実行するステップとを有する。
【００３６】
本発明では、一時的に矛盾した状態の存在を許すデータ（資源）を２重に持つ。そして、一方（第１のデータ）を一時的に矛盾した状態を許すように、従来通り、排他制御しないで、変更し、これに伴い、時間のかかる第２のデータの読みし処理を行う。又、他方（第３のデータ）は、排他制御して、第２のデータを変更する時に、これと一貫性を保つように、変更する。これにより、第３のデータは、第２のデータと矛盾がない。
【００３７】
この第３のデータ（第１のデータのシャドウオブジェクトという）を処理装置２に転送する。これにより、処理装置２は、並列処理装置１の故障発生時に、矛盾のない第３のデータを初期値として、処理を再開できる。
【００３８】
このため、一貫性チェックプログラムを走らすことを必要としないので、待機機（処理装置）２は、現用機（並列処理装置）１の故障時の処理再開の遅れを防止できる。
【００３９】
又、第３のデータにより、矛盾がないデータが得られるため、一時的に矛盾した状態を許す第１のデータの変更と、それをトリガーとする第２のデータの読み出しを排他制御外とでき、並列処理における排他制御時間を短くでき、且つ故障時に、直ちに処理再開できる。
【００４０】
【発明の実施の形態】
図２は本発明の一実施の形態の構成図、図３は本発明の一実施形態の処理フロー図である。
【００４１】
図２において、現用機である並列処理装置１は、並列処理を行う並列処理プロセッサ１０、メインメモリ１１、排他制御を行う排他制御機構１２、転送を行う転送機構１３と、故障を検出して、通知する故障検出機構１４とを有する。
【００４２】
並列処理プロセッサ１０は、例えば、複数のプロセッサで構成され、並列に複数の処理を実行する。メインメモリ１１は、並列処理プロセッサ１０の実行に必要なデータを保持するものである。
【００４３】
メインメモリ１１は、ファイルに使われていないブロックを管理するための空きブロックリスト（ビットマップ）１１ａと、ファイル内容を格納しているディスク上のブロックを管理するブロックリスト１１ｂと、空きブロック数を示す空きブロック数１１ｃと、空きブロック数を示す空きブロック数のシャドウオブジェクト１１ｄとを保持する。
【００４４】
即ち、空きブロック数を示す資源を、空きブロック数１１ｃと、空きブロック数のシャドウオブジェト１１ｄとに２重に持っている。
【００４５】
排他制御機構１２は、メインメモリ１１の資源の排他制御を行う。転送機構１３は、待機系の処理装置２と、データのやりとりを行うためのものである。故障検出機構１４は、現用機１の故障を検出するものである。
【００４６】
待機機である処理装置２も、並列処理装置で構成されている。この並列処理装置２は、並列処理を行う並列処理プロセッサ２０、メインメモリ２１、排他制御を行う排他制御機構２２、転送を行う転送機構２３と、故障を検出して、通知する故障検出機構２４とを有する。
【００４７】
並列処理プロセッサ２０も、例えば、複数のプロセッサで構成され、並列に複数の処理を実行する。メインメモリ２１は、並列処理プロセッサ２０の実行に必要なデータを保持するものである。
【００４８】
メインメモリ２１は、ファイルに使われていないブロックを管理するための空きブロックリスト（ビットマップ）のコピー２１ａと、ファイル内容を格納しているディスク上のブロックを管理するブロックリストのコピー２１ｂと、空きブロック数を示す空きブロック数のシャドウオブジェクトのコピー２１ｃとを保持する。
【００４９】
排他制御機構２２は、メインメモリ２１の資源の排他制御を行う。転送機構２３は、現用系の処理装置１と、データのやりとりを行うためのものである。故障検出機構２４は、待機機２の故障を検出するものである。
【００５０】
ファイル装置３は、ファイルに使われていないブロックを管理するための空きブロックリスト（ビットマップ）と、ファイル内容を格納しているディスク上のブロックを管理するブロックリストと、空きブロック数を示す空きブロック数とを保持する。ファイル装置３は、ディスク記憶装置で構成され、両処理装置１、２に接続されている。
【００５１】
図３の処理フロー図に従い、動作を説明する。尚、図３はファイル拡張時の処理を示す。
【００５２】
（Ｓ１）並列プロセッサ１０は、メインメモリ１１の空きブロック数１１ｃを変更する。例えば、ファイル拡張時には、空きブロック数１１ｃを「１」減らす。
【００５３】
（Ｓ２）並列プロセッサ１０は、空きブロック数１１ｃを変更すると、ファイル装置３から空きブロックビットマップ（リスト）、ブロックリストを読み出し、メインメモリ１１に展開する。この読み出し処理には、時間がかかる。
【００５４】
（Ｓ３）並列処理プロセッサ１０は、排他制御機構１２に、メインメモリ１１の空きブロックビットマップ（リスト）１１ａ、ブロックリスト１１ｂ、空きブロック数のシャドウオブジェクト１１ｄの排他制御を依頼する。これにより、メインメモリ１１の空きブロックビットマップ（リスト）１１ａ、ブロックリスト１１ｂが排他制御される。次に、メインメモリ１１の空きブロック数のシャドウオブジェクト１１ｄが排他制御される。
【００５５】
（Ｓ４）次に、並列処理プロセッサ１０は、空きブロックビットマップ１１ａから空きブロックを見つける。そして、空きブロックを見つけて、空きブロックリスト１１ａを変更した後、ブロックリスト１１ｂにブロックを挿入する。更に、空きブロック数のシャドウオブジェクト１１ｄを「１」減らす。そして、転送機構１３を介して待機系の処理装置２に、空きブロックリストとブロックリストの変更部分と、空きブロック数のシャドウオブジェクトを転送する。
【００５６】
処理装置２では、これにより、メインメモリ２１の空きブロックリストのコピー２１ａとブロックリストのコピー２１ｂと、空きブロック数のシャドウオブジェクトのコピー２１ｃとを更新する。
【００５７】
（Ｓ５）並列処理プロセッサ１０は、転送後、排他制御機構１２に、メインメモリ１１の空きブロックビットマップ（リスト）１１ａ、ブロックリスト１１ｂ、空きブロック数のシャドウオブジェクト１１ｄの排他制御の解除を依頼する。これにより、空きブロックビットマップ（リスト）１１ａ、ブロックリスト１１ｂ、空きブロック数のシャドウオブジェクト１１ｄの排他制御は、解除される。
【００５８】
このように、待機系の処理装置２では、メインメモリ２１に更新された空きブロックリストのコピーとブロックリストのコピーと、空きブロック数のシャドウオブジェクトのコピーとを持っているので、現用系の処理装置１の故障検出機構１４から故障の検出通知を故障検出機構２４を介して受けると、直ちに処理を再開できる。
【００５９】
この並列処理装置１で、ファイルの拡張処理が同時に２つ走った場合には、空きブロック数は最初に２つ減るが、空きブロック数のシャドウオブジェクトは、空きブロックリストの変更、ブロックリストの追加と同時に変更される。即ち、空きブロック数のシャドウオブジェクトは、空きブロックリストの変更、ブロックリストの追加と一貫性を保つ。そして、そのデータが、排他制御中に、待機系の処理装置２に送られる。
【００６０】
現用系の処理装置１が故障した場合には、待機系の処理装置２は、空きブロック数の初期値として、空きブロック数のシャドウオブジェクトの内容を使用する。
【００６１】
このようにして、ファイル処理において、一時的に矛盾を許す空きブロック数を２重に持ち、一方の空きブロック数の更新後に、空きブロックリスト、ブロックリストを読み出す。そして、他方の空きブロック数（空きブロック数のシャドウオブジェクト）を排他制御して、空きブロックリスト、ブロックリストの更新とともに、更新するので、並列処理しても、空きブロックリスト、ブロックリストと矛盾の無い空きブロック数が得られる。
【００６２】
この矛盾の無い空きブロック数を待機系に転送するので、待機系は、現用系の故障時に、直ちにファイル処理を再開できる。このため、並列処理における排他制御に要する時間を長くすることなく、実行できる。しかも待機系で、処理再開時に、一貫性チェックプログラムを走らせることなく、処理再開でき、処理再開の遅れを防止できる。
【００６３】
又、排他制御中に、排他制御した資源を、待機系に転送するため、並列処理しても、一貫性を保った内容の資源を、待機系が得ることができる。
【００６４】
更に、データを２重化し、且つ一方のデータの排他制御するだけで実現できるため、簡易に実現することができる。
【００６５】
上述の実施の態様の他に、本発明は、次のような変形が可能である。
【００６６】
▲１▼前述の実施の態様では、一時的に矛盾を許す資源（データ）として、空きブロック数を例に説明したが、ファイルのリンクカウント値等にも適用できる。
【００６７】
▲２▼並列処理装置も、図２の例の構成で説明したが、種々のものを適用できる。
【００６８】
以上、本発明を実施の形態により説明したが、本発明の主旨の範囲内で種々の変形が可能であり、これらを本発明の範囲から排除するものではない。
【００６９】
【発明の効果】
以上説明したように、本発明によれば、次の効果を奏する。
【００７０】
▲１▼一時的に矛盾を許す資源を２重に持ち、一方を排他制御せずに更新し、他方を排他制御して、他の関連資源の変更とともに、変更して、待機系に転送するため、並列処理における動作速度を低下することなく、並列処理システムに耐故障機能を付与することができる。
【００７１】
▲２▼又、現用系の故障時に、待機系で一貫性チェックプログラムを走らせることなく、データの引き継ぎができるため、処理再開の遅れを防止できる。
【図面の簡単な説明】
【図１】本発明の原理図である。
【図２】本発明の一実施の形態の構成図である。
【図３】本発明の一実施の形態の処理フロー図である。
【図４】並列処理の説明図である。
【図５】排他制御の説明図である。
【図６】代替システムの説明図である。
【図７】第１の従来技術の説明図である。
【図８】第１の従来技術の処理フロー図である。
【図９】第２の従来技術の説明図である。
【符号の説明】
１  並列処理装置
２  代替処理装置
３  ファイル装置
１０，２０  並列プロセッサ
１１、２１  メインメモリ
１２，２２  排他制御機構
１３，２３  転送機構
１４，２４  故障検出機構
【図１】
0003729573.tif 000002
【図２】
0003729573.tif 000003
【図３】
0003729573.tif 000004
【図４】
0003729573.tif 000005
【図５】
0003729573.tif 000006
【図６】
0003729573.tif 000007
【図７】
0003729573.tif 000008
【図８】
0003729573.tif 000009
【図９】
0003729573.tif 000010