JP2006031335A - 情報処理システム及び方法 - Google Patents
情報処理システム及び方法 Download PDFInfo
- Publication number
- JP2006031335A JP2006031335A JP2004208340A JP2004208340A JP2006031335A JP 2006031335 A JP2006031335 A JP 2006031335A JP 2004208340 A JP2004208340 A JP 2004208340A JP 2004208340 A JP2004208340 A JP 2004208340A JP 2006031335 A JP2006031335 A JP 2006031335A
- Authority
- JP
- Japan
- Prior art keywords
- information
- failure
- abnormality
- data
- program
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/2028—Failover techniques eliminating a faulty processor or activating a spare
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2048—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share neither address space nor persistent storage
Abstract
【課題】 中間情報処理部が情報発行部に異常を報告すること無く情報を再発行するように構成されていても、異常に応じた処理が情報発行部によって開始されるのが遅くならないようにする。
【解決手段】 情報処理システムは、特定の障害に関するデータである障害データを記憶する障害記憶域と、情報を発行する情報発行部と、中間情報処理部と、情報フィルタ部とを備える。中間情報処理部は、情報発行部によって発行された情報を受信して出力し、情報の出力に応答して異常を受信した場合、異常を情報発行部に知らせる前に、少なくとも一回は出力した情報を再出力し、少なくとも一回の再出力を行っても異常を受信した場合、異常を情報発行部に知らせる。情報フィルタ部は、中間情報処理部から発行された情報を受信し、障害記憶域に障害データが記憶されているか否かを判断し、障害データが記憶されていない場合、受信した情報をリソース部へ出力し、障害データが記憶されている場合、情報の受信に応答して異常を中間情報処理部に通知する。
【選択図】図17
【解決手段】 情報処理システムは、特定の障害に関するデータである障害データを記憶する障害記憶域と、情報を発行する情報発行部と、中間情報処理部と、情報フィルタ部とを備える。中間情報処理部は、情報発行部によって発行された情報を受信して出力し、情報の出力に応答して異常を受信した場合、異常を情報発行部に知らせる前に、少なくとも一回は出力した情報を再出力し、少なくとも一回の再出力を行っても異常を受信した場合、異常を情報発行部に知らせる。情報フィルタ部は、中間情報処理部から発行された情報を受信し、障害記憶域に障害データが記憶されているか否かを判断し、障害データが記憶されていない場合、受信した情報をリソース部へ出力し、障害データが記憶されている場合、情報の受信に応答して異常を中間情報処理部に通知する。
【選択図】図17
Description
本発明は、コンピュータを用いた情報処理技術に関わり、具体的には、例えば、特定の障害によって異常が発生した場合の情報処理に関わる。
例えば、上位装置(例えばホストコンピュータ)と、第一と第二の記憶装置システム(例えば、RAID(Redundant Array of Independent Disks)のようなディスクアレイシステム)とを有するコンピュータシステムが知られている。第一と第二の記憶装置システムの各々は、少なくとも一つの論理ボリュームを備えている。一つの論理ボリュームは、記憶装置システムが備える1又は複数の物理的な記憶デバイス(例えばハードディスク)上に用意される。
このようなコンピュータシステムでは、例えば、リモートコピーという処理が行われることがある。リモートコピーとは、第一の記憶装置システムの論理ボリューム内のデータを、上位装置を経由すること無く、第二の記憶装置システムの論理ボリュームにコピーすることである。リモートコピーのコピー元となる論理ボリュームをコピー元ボリュームと言い、リモートコピーのコピー先となる論理ボリュームをコピー先ボリュームと言う。コピー元ボリュームとコピー先ボリュームは、例えば、記憶容量が同一であり、一対一の対応関係(換言すれば一つのコピーペア)を形成する。コピー元ボリューム内のデータは、第一と第二の記憶装置システム間を接続するリモートコピーライン(例えば、専用回線或いは公衆回線等)を介して、コピー先ボリュームにコピーされる。リモートコピーでは、例えば、コピー方向は一方向であり、上位装置からの書き込み要求について、コピー元ボリュームでは受け付けることができるが、コピー先ボリュームでは受け付けることができない。コピー元ボリュームに含まれるデータが更新された場合(例えば、第一のデータに第二のデータが上書きされた場合)、更新データ(例えば、第一のデータと第二のデータの差分)が、コピー元ボリュームからリモートコピーラインを介してコピー先ボリュームに書き込まれ、それにより、コピー元ボリューム内のデータとコピー先ボリューム内のデータとを同一内容にすることができる。このようなリモートコピーに関する技術は、特許文献1(特開2003−76592号公報)や特許文献2(米国特許明細書第5,742,792号)に開示されている。
ところで、コンピュータシステムには、複数の上位装置、例えば、第一と第二の上位装置が備えられることがある。このようなコンピュータシステムでは、第一と第二の上位装置によって同一の論理ボリュームが共有される場合がある(以下、その論理ボリュームを「共有ボリューム」と言う)。共有ボリュームは、排他制御される。具体的には、例えば、共有ボリュームは、第一の上位装置からのアクセス要求のみが許可され、同時期に第二の上位装置からのアクセス要求が許可されないよう制御される。より具体的には、例えば、上位装置と記憶装置システムとのインターフェイスとしてSCSI(Small Computer System Interface)が採用されているコンピュータシステムでは、第一の上位装置が、上記SCSIで規定するリザーブ系のコマンドを共有ボリュームに対して送信し、記憶装置システムは、共有ボリュームがどの上位装置にも使用されていない場合に、上記リザーブ系のコマンドを第一の上位装置から受信したならば、共有ボリュームを第一の上位装置に対してリザーブ状態にし、それにより、第二の上位装置からのアクセス要求を受け付けないようにすることができる。共有ボリュームが第一の上位装置に対してリザーブ状態にされている最中に、第二の上位装置から共有ボリュームに対するアクセス要求を受けた場合、記憶装置システムは、例えば、共有ボリュームに別の上位装置がリザーブされていることを表すステータスデータ(例えばリザベーションコンフリクトというステータスを表すデータ)を第二の上位装置に返送する。
上位装置には、例えば、アプリケーションソフトウェア(以下、単に「アプリケーション」と言う)と、記憶装置システムのドライバソフトウェア(以下、ディスク制御ソフトウェア)とが備えられている。アプリケーションは、ユーザの操作等に応じて、論理ボリュームへのデータの書込み或いは論理ボリュームからのデータの読出しを求めるI/O要求を発行することができる。ディスク制御ソフトウェアは、アプリケーションから発行されたI/O要求を受信し、そのI/O要求を、記憶装置システムが処理できる形式(例えばSCSIプロトコルに基づく形式)に変換して、変換後のI/O要求を記憶装置システムに送信することができる。また、例えば、ディスク制御ソフトウェアは、そのI/O要求に対する応答として、異常ステータスを表すデータ(以下、異常ステータスデータ)を記憶装置システムから受信することがある。ディスク制御ソフトウェアは、受信した異常ステータスデータが特定の異常ステータスを表している場合には、リトライ処理、例えば、過去に送信した上記変換後のI/O要求を再び記憶装置システムに送信する処理を実行することができる。
ところで、複数の上位装置を接続してクラスタを構成することができる。この場合、クラスタを構成する各上位装置(以下、便宜上「クラスタサーバ」と言う)には、例えば、クラスタを実現するためのソフトウェア(以下、クラスタソフトウェア)が搭載される。以下、便宜上、クラスタが管理するリソース(例えば、物理的な記憶デバイス等のハードウェアや、データベースマネジメントシステム等のプログラムのこと)を、クラスタリソースと呼ぶ。また、クラスタを備えたコンピュータシステムを、クラスタシステムと呼ぶ。
クラスタシステムは、フェイルオーバという処理を行うことで、クラスタリソースの使用を継続することができる。具体的には、例えば、或る一つのクラスタサーバに障害が発生することで、そのクラスタサーバによって或るクラスタリソースの使用が継続されなくなる場合、そのクラスタサーバに備えられているクラスタソフトウェアが、フェイルオーバ処理、すなわち、正常に稼動している別のクラスタサーバに上記或るクラスタリソースの使用を切り替える処理を行うことで、その或るクラスタリソースの使用が継続される。クラスタシステムを構成する複数のクラスタサーバは、インターネット等のIP(Internet protocol)を用いたネットワークによって接続される。各クラスタサーバのクラスタソフトウェアは、このネットワークを用いて他のクラスタサーバと互いに通信することで、通信相手のクラスタサーバの状態を監視する。この通信を、クラスタ通信又はハートビート通信という。
複数のクラスタサーバが一つの記憶装置システムを共有しているクラスタシステムを、例えば、共有ディスクモデルクラスタシステムと呼ぶ。共有ディスクモデルクラスタシステムでは、例えば、二つのクラスタサーバ間でのハートビート通信が切断された場合、それら二つのクラスタサーバの各々が、共有ボリュームを用いた共有排他制御を行うことで、二つのクラスタサーバは互いの稼動状態を確認することができ、それにより、二つのクラスタサーバが別個に動作する状態(以下、スプリットブレイン)を阻止することができる。以下、便宜上、このスプリットブレインを防ぐための制御(上記の例では、共有排他制御)を「調停」と呼ぶ。
共有ディスクモデルクラスタシステムを実現するためのクラスタソフトウェアには、例えば、調停を行うために使用される記憶デバイス(例えば、調停用ディスク、調停用ボリューム又はクォーラムディスクと呼ばれることがある)に対してSCSIコマンドを用いた共有排他制御を行い(つまり、リザーブ系のコマンドを発行することをディスク制御ソフトウェアに要求し)、それにより、スプリットブレイン状態を回避するソフトウェアがある。例えば、クラスタソフトウェアは、定期的に、ディスク制御ソフトウェアを介して記憶装置システムにI/O要求を発行し、それに応答して記憶装置システムからディスク制御ソフトウェアを介して受信する応答結果を参照して、I/O要求を受信した記憶装置システムの状態を監視することができる。応答結果が異常ステータスである場合は、クラスタソフトウェアは、障害が発生したと判断して、上述したフェイルオーバ処理を実行することができる。クラスタソフトウェアについては、例えば、特許文献3(米国特許明細書第6,279,032号)及び特許文献4(米国特許明細書第6,401,120号)に開示がある。
ところで、上述した従来技術では、例えば、ディスク制御ソフトウェアが、特定の異常ステータス(一例として、タイムアウト)を表す異常ステータスデータを受信した場合、異常を上位のアプリケーションに報告すること無く、リトライ処理、例えば、過去に送信したI/O要求を再び記憶装置システムに送信する処理を実行することがある。そして、それに応答して、再び、特定の異常ステータスデータを受信した場合、ディスク制御ソフトウェアは、再度、異常を上位のアプリケーションに報告すること無くリトライ処理を実行することがある。ディスク制御ソフトウェアは、例えば、予めユーザによって設定されたリトライ回数だけ、或いは、異常が回復して正常ステータスを表すデータを受信するまで、異常を上位のアプリケーションに報告すること無く上述したリトライ処理を延々と繰り返すことがある。
アプリケーションの一つであるクラスタソフトウェアは、ディスク制御ソフトウェアから異常の報告を受けた場合に、異常が発生したと判断して、上述したフェイルオーバ処理を開始することができる。換言すれば、クラスタソフトウェアがディスク制御ソフトウェアから異常の報告を受けるまで、フェイルオーバ処理が開始されないまま待ちの状態が続いてしまう。これでは、フェイルオーバ処理の開始が遅くなる。
上述したような問題点と同質の問題点は、クラスタシステムに限らず種々のシステムに存在すると考えられる。例えば、情報発行部とリソース部との間に中間情報処理部が介在するシステムにおいて、中間情報処理部が、情報発行部からの情報(例えば、リソースの使用に関する要求)に応答してリソース部に情報を発行し、その情報に応答してリソース部から異常を受信した場合に、少なくとも一回は情報発行部に異常を知らせること無く情報をリソース部に再発行し、それでもなお異常を受信した場合に、異常を情報発行部に通知するようになっている場合、情報発行部に異常が知らされるのが遅延するという問題点が存在すると考えられる。
従って、本発明の目的は、中間情報処理部が情報発行部に異常を報告すること無く情報を再発行するように構成されていても、異常に応じた処理が情報発行部によって開始されるのが遅くならないようにすることにある。具体的には、例えば、本発明の一つの目的は、ディスク制御ソフトウェアが異常を受信した場合に異常をクラスタソフトウェアに報告すること無くI/O要求を再発行するようになっていたとしても、クラスタソフトウェアによるフェイルオーバ処理の開始が遅くならないようにすることにある。
本発明の更なる目的は、後の記載から明らかになるであろう。
本発明の第一の側面に従う情報処理システム(以下、第一情報処理システム)は、記憶システムと通信することができ、複数のコンピュータプログラムを記憶するプログラム記憶域と、特定の障害に関するデータである障害データを記憶する障害記憶域と、前記記憶域から少なくとも一つのコンピュータプログラムを読み込み実行する少なくとも一つのプロセッサとを備える。前記複数のコンピュータプログラムは、情報を発行する情報発行プログラムと、中間処理プログラムと、情報フィルタプログラムとを含む。中間処理プログラムは、前記情報発行プログラムによって発行された情報を受信して出力し、前記情報の出力に応答して異常を受信した場合、異常を前記情報発行プログラムに知らせる前に、少なくとも一回は前記出力した情報を再出力し、前記少なくとも一回の再出力を行っても異常を受信した場合、異常を前記情報発行プログラムに知らせる。情報フィルタプログラムは、前記中間処理プログラムから発行された情報を受信し、前記障害記憶域に障害データが記憶されているか否かを判断し、前記障害データが記憶されていない場合、前記受信した情報を前記記憶システムへ出力し、前記障害データが記憶されている場合、前記情報の受信に応答して異常を前記中間処理プログラムに通知する。
情報処理システムは、記憶システムを備えても良い。記憶システムは、記憶装置(例えばハードディスクドライブ)であっても良いし、複数の記憶装置を備えた記憶装置システムであっても良い。また、情報フィルタプログラムは、前記障害データが記憶されている場合、受信した情報を記憶システムに出力することなく(例えばそれを消去して)、異常を前記中間処理プログラムに通知しても良い。
「特定の障害」とは、例えば、記憶システムに関する障害であっても良いし、記憶システムに関わらず、情報処理システムに関わる障害(例えば、後述のコピー制御プログラムのコピー制御に関する障害)であっても良い。
また、中間処理プログラムは、情報発行プログラムから受けた情報と全く同じ情報を出力しても良いし、その情報を加工したもの(例えば、記憶システムが解釈できる形式に変換したもの)を出力しても良い。また、第一情報処理システムにおいてやり取りされる「異常」は、例えば異常を表すデータである。
第一情報処理システムの第一の実施態様では、前記記憶システムは、前記情報処理システムから発行された情報を処理し、前記情報を正常に処理した場合には、正常を表す処理結果データを前記情報処理システムに返送し、前記情報を正常に処理しなかった場合には、異常を表す処理結果データを前記情報処理システムに返送するようになっている。この場合、前記情報フィルタプログラムは、前記記憶システムから返送された処理結果データを受信し、前記受信した処理結果データが正常を表している場合には、正常を前記中間処理プログラムに出力し、前記受信した処理結果データが異常を表している場合には、前記障害データを前記障害記憶域に格納し、且つ、異常を前記中間処理プログラムに出力する。
第一情報処理システムの第二の実施態様では、前記第一の実施態様において、前記中間処理プログラムは、識別子を有する情報を発行する。前記情報フィルタプログラムは、前記受信した処理結果データが異常を表す場合、その処理結果データに対応した情報の識別子を前記障害記憶域に登録し、前記中間処理プログラムから情報を受信した場合、前記受信した情報が有する識別子に適合する識別子が前記障害記憶域に登録されている場合に、異常を前記中間処理プログラムに通知する。
第一情報処理システムの第三の実施態様では、前記記憶システムは、第一の論理ボリュームを備えている。前記第一の論理ボリュームは、第二の論理ボリュームとペアを形成することができる。前記第二の論理ボリュームは、前記記憶システム、又は、前記記憶システムに接続された別の記憶システムに備えられる。この場合、前記複数のコンピュータプログラムは、前記第一の論理ボリュームと前記第二の論理ボリュームとの間でデータのコピーに関する制御を実行し、前記制御を正常に行わなければ、異常を表す制御結果データを出力するコピー制御プログラムを更に含む。前記情報フィルタプログラムは、前記コピー制御プログラムに制御の実行の要求を行い、前記要求に応答して前記制御結果データを前記コピー制御プログラムから受信し、前記受信した制御結果データが異常を表していれば、障害データを前記障害記憶域に格納し、異常を前記中間処理プログラムに出力する。
第一情報処理システムの第四の実施態様では、前記情報処理システムは、前記中間処理プログラムから発行された情報を一時的に記憶するための情報記憶域を更に備える。前記情報フィルタプログラムは、前記受信した情報を前記情報記憶域に格納する前、又は、前記情報記憶域から前記情報を読み出した後に、前記障害記憶域に障害データが記憶されているか否かを判断する。
第一情報処理システムの第五の実施態様では、前記複数のコンピュータプログラムは、前記特定の障害が回復したか否かを検知し、回復したと検知された場合には、障害の回復を前記障害記憶域に記録する障害回復検知プログラムを更に含む。
第一情報処理システムの第六の実施態様では、前記第五の実施態様において、前記障害回復検知プログラムは、前記記憶システムに関するデバイス情報の取得が行われたことを検出した場合に、前記特定の障害が回復したか否かを検知する。
第一情報処理システムの第七の実施態様では、前記第五の実施態様において、前記障害回復検知プログラムは、前記記憶システムのリソース(例えば論理ボリューム)をオンラインにすることを検出した場合に、前記特定の障害が回復したか否かを検知する。
本発明の第二の側面に従う情報処理方法は、情報発行部と中間情報処理部とリソース部とを備えるシステムにおいて行われる情報処理方法であって、情報発行部が、情報を発行するステップと、中間情報処理部が、前記発行された情報を受信して出力するステップと、前記出力された情報を受信し、障害記憶域に障害データが記憶されているか否かを判断し、前記障害データが記憶されていない場合、前記出力された情報を前記リソース部へ出力するステップと、前記リソース部が、前記出力された情報を受信し、前記受信した情報を正常に処理できない場合に異常を表す処理結果データを出力するステップと、前記出力された処理結果データを受信し、前記受信した制御結果データが異常を表していれば、障害データを前記障害記憶域に格納し、異常を前記中間情報処理部に出力するステップと、前記中間情報処理部が、前記情報の出力に応答して異常を受信した場合、異常を前記情報発行部に知らせる前に、前記出力した情報を再出力するステップと、前記出力された情報を受信し、前記障害記憶域に障害データが記憶されているか否かを判断し、前記障害データが記憶されている場合、前記情報の受信に応答して異常を前記中間情報処理部に通知するステップと、前記中間情報処理部が、前記再出力に応答して異常を受信した場合、異常を前記情報発行部に知らせるステップと、前記情報発行部が、異常を受信し、受信した異常に応答した処理を実行するステップとを有する。
本発明の第三の側面に従う記録媒体は、以下のコンピュータプログラム、すなわち、情報を発行する情報発行プログラムによって発行された情報を受信して出力する中間処理プログラムから出力された情報を受信するステップと、記憶域に障害データが記憶されているか否かを判断するステップと、前記判断の結果、前記障害データが記憶されていない場合、前記受信した情報を宛先に出力するステップと、前記判断の結果、前記障害データが記憶されている場合、前記情報の受信に応答して異常を前記中間処理プログラムに通知するステップとをコンピュータに実行させるためのコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体である。
本発明の第四の側面に従う情報処理システムは、リソース部と通信する情報処理システムであって、特定の障害に関するデータである障害データを記憶する障害記憶域と、情報を発行する情報発行部と、中間情報処理部と、情報フィルタ部とを備える。前記中間情報処理部は、前記情報発行部によって発行された情報を受信して出力し、前記情報の出力に応答して異常を受信した場合、異常を前記情報発行部に知らせる前に、少なくとも一回は前記出力した情報を再出力し、前記少なくとも一回の再出力を行っても異常を受信した場合、異常を前記情報発行部に知らせる。前記情報フィルタ部は、前記中間情報処理部から発行された情報を受信し、前記障害記憶域に障害データが記憶されているか否かを判断し、前記障害データが記憶されていない場合、前記受信した情報を前記リソース部へ出力し、前記障害データが記憶されている場合、前記情報の受信に応答して異常を前記中間情報処理部に通知する。
上述した各部或いはステップの全部または一部は、例えば、ハードウェア、コンピュータプログラム或いはそれらの組合せによって実現することができる。コンピュータプログラムは、例えば、ハードディスク、光ディスク、半導体メモリ等の記憶媒体に固定して配布することができる。または、コンピュータプログラムをインターネット等の通信ネットワークを介して、配信することもできる。
また、上述した情報処理システムは、1台のコンピュータマシン(例えば、パーソナルコンピュータ、サーバ又は記憶装置システム)内で構築しても良いし、通信ネットワークに接続された複数台のコンピュータマシン上で構築しても良い。
例えば、本発明の第四の側面によれば、中間情報処理部が情報発行部に異常を報告すること無く情報を再発行するように構成されていても、異常に応じた処理が情報発行部によって開始されるのが遅くならない。
図17A及び図17Bは、本発明の一実施形態に係るシステムの概念と、そのシステムにおいて行われる処理流れの一例を示す。
本実施形態に係るシステムは、情報発行部(例えば後述のクラスタソフトウェア)11と、中間情報処理部(例えば後述のディスク制御ソフトウェア)12と、リソース部(例えば後述の記憶装置システム)13と、情報フィルタ部(例えば後述の調停エミュレーションソフトウェア)14とを備える。情報発行部11と中間情報処理部12との間のやり取り、中間情報処理部12と情報フィルタ部14との間のやり取り、及び、情報フィルタ部14とリソース部13との間のやり取りは、所定の媒体を介して行われる。ここで、「媒体」としては、例えば、通信ネットワーク、通信インターフェース或いは記憶媒体など、種々のものを採用することができる。また、情報発行部11、中間情報処理部12及び情報フィルタ部14は、CPU等のプロセッサに読み込まれプロセッサによって実行されるコンピュータプログラムとすることができるが、それに限らず、ハードウェア或いはハードウェアとコンピュータプログラムとの組み合わせであってもよい。リソース部13は、リソース(例えば、コンピュータに関するリソース)それ自体であっても良いし、リソースを備えた装置であっても良い。具体的には、例えば、リソース部13は、物理記憶デバイス(例えば、ハードディスク或いはそれを備えたドライブ)であっても良いし、物理記憶デバイスを備えたシステム(例えばRAIDシステム等のディスクアレイシステム)であっても良い。また、中間情報処理部12は、リソース部13のドライバ(「デバイスドライバ」とも言う)であってもよい。
以下、この情報処理システムにおいて行われる処理流れの一例を、例えば、リソース部13に障害が発生していない場合(以下、正常ケース)と、リソース部13で障害が発生した場合(以下、異常ケース)とに分けて説明する。
(1)正常ケース。
図17Aに示すように、情報発行部11は、情報(例えばデータ又はコマンド)を発行する。中間情報処理部12は、情報発行部11から発行された情報を受信し、その情報を、リソース部13が解釈可能な形式の情報(以下、リソース用情報)に変換し、そのリソース用情報を発行する。情報フィルタ部14は、中間情報処理部12から発行されたリソース用情報を受信し、そのリソース用情報をリソース部13に発行する。
リソース部13は、受信したリソース用情報を処理し、そのリソース用情報の処理を行い、その処理の結果を表す情報(以下、処理結果情報)を生成し、生成された処理結果情報を発行する。処理結果情報としては、例えば、正常に処理が終了したことを表す正常情報と、異常が発生したことを表す異常情報とがある。情報フィルタ部14は、発行された処理結果情報を受信し、処理結果情報が正常情報であることを検出した場合、受信した処理結果情報を、中間情報処理部12へ発行する。中間情報処理部12は、情報フィルタ部14から発行された処理結果情報を受信し、その処理結果情報が正常情報であることを検出した場合、その処理結果情報を情報発行部11に発行する。これにより、情報発行部11は、自分が発行した情報の処理結果として処理結果情報を受信し、その処理結果情報から、正常に処理が行われたことを把握することができる。
なお、正常ケースでは、情報発行部11が情報を発行してから処理結果を受信するまで、時間長としてT(例えばTは0以外の数)を要したとする(なお、後述の以上ケースでも、情報を発行してから処理結果を受信するまでに少なくともTの時間を要するものとする)。
(2)異常ケース。
情報発行部11から情報が発行されて、リソース部13によって処理されるまでは、正常ケースと同様である。ただし、リソース部13では障害が発生したので、リソース部13は、処理結果情報として異常情報を発行する。
通信フィルタ部14は、受信した処理結果情報が異常情報であることを検出した場合、エラーを表すエラーデータを所定の記憶域16にセットする。そして、通信フィルタ部14は、異常情報を中間情報処理部12に発行する。
中間情報処理部12は、異常情報を受信した場合、リトライ処理、例えば、受信した異常情報を情報発行部11に送信することなく、過去に発行したリソース用情報(具体的には、異常情報に対応したリソース用情報)を再発行する。通信フィルタ部14は、再発行されたリソース用情報を受信した場合、エラーデータがセットされていれば、受信したリソース用情報をリソース部13に送らずに、リソース用情報に対する応答として、異常情報を中間情報処理部12に送信する。このような処理は、中間情報処理部12がリトライ処理を行う都度に行われる。
中間情報処理部12は、予め設定された最大回数(例えば4回)だけリトライ処理を実行してもなお、異常情報を通信フィルタ部14から受信した場合、リトライ処理を行わずに、異常情報を情報発行部11に送る。これにより、情報発行部11は、自分が発行した情報の処理結果として処理結果情報を受信し、その処理結果情報から、異常が発生したことを把握することができ、その場合、それに応じて、第二処理(例えば、クラスタシステムであれば、フェイルオーバ処理)を開始することができる。
なお、異常ケースでは、情報発行部11が情報を発行してから処理結果を受信するまでの時間長として、図17Bによれば、T(例えばTは0以外の数)よりも長いように見えるが、実質的にはTとすることができる。少なくとも、図17Cに示すように、本実施形態のような通信フィルタ部14が備えられないシステムにおいて、中間情報処理部12によって同じ回数だけリトライ処理が行われた場合の時間長(例えばTの5倍)に比べると、短い時間となる。
この実施形態によれば、中間情報処理部12が、異常情報を受けた場合にそれを情報発行部11に通知することなくリトライ処理を実行するように構成されていても、そのリトライ処理を早く終了させることができ、結果として、情報発行部11に、異常を早くに検出させ第二処理の開始を早めさせることができる。
なお、上述したシステムの各種の構成要素は、例えば、通信ネットワーク上に配置することができる。例えば、情報発行部11、中間情報処理部12及び情報フィルタ部14は、一つの上位装置に備えることもできるし、複数の上位装置に分散して備えることもできる。また、リソース部13は、同一の上位装置に備えられても良いし、別の装置、例えば、記憶装置システム(例えばRAIDシステム)に備えられても良い。
以下、本発明の一実施形態に係るシステムがクラスタシステムに適用された場合を例に採り、幾つかの実施例を説明する。
図1は、本発明の一実施形態の第一実施例に係るクラスタシステムの全体概要を示すブロック図である。このクラスタシステムは、例えば、第1サイト10Aと、第2サイト10Bとを備えており、各サイト10A,10B間は、通信ネットワークCN12,CN13によって接続されている。なお、クラスタシステムは3つ以上のサイトから構成することもできる。
第1サイト10Aと第2サイト10Bとは、例えば、別々の都市に設置することができる。また、第1サイト10Aと第2サイト10Bとは、例えば、同一行政区画に位置する異なる地点に設置することもできる。さらに、第1サイト10Aと第2サイト10Bとは、例えば、同一敷地内のそれぞれ異なる建物内に設けることもできる。
第1サイト10Aと第2サイト10Bとは、基本的に同一構造を備える。一つの例として、第1サイト10Aは、図外のクライアントマシンに対して情報処理サービスを提供する現用系サイト(稼働系サイト)である。第2サイト10Bは、第1サイト10Aに障害が発生した場合にデータをバックアップするバックアップサイト(待機系サイト)である。
もっとも、サイト全体を稼働系または待機系として使用する必要はなく、情報処理サービスを提供するアプリケーションプログラム毎に、稼働系サイトと待機系サイトとをそれぞれ設定してもよい。例えば、第1のアプリケーションプログラムの稼働系サイトを第1サイト10Aとし、第2のアプリケーションプログラムの稼働系サイトを第2サイト10Bとすることもできる。
第1サイト10Aは、複数の上位装置HA1,HAnと、記憶装置システム20Aとを備えている。各上位装置HA1,HAnは、例えば、マイクロコンピュータを用いたサーバマシンとして構成される。
記憶装置システム20Aは、例えば、ディスクアレイサブシステムとして構成することができる。記憶装置システム20Aは、後述のように、複数の論理ボリューム212を備えており、これらの論理ボリューム212は、上位装置HA1,HAnによって利用される。
各上位装置HA1,HAnは、サイト内の通信ネットワークCN11を介して、記憶装置システム20Aと接続されている。この通信ネットワークCN11は、例えば、SAN(Storage Area Network)として構成され、ファイバチャネルプロトコルに従ってデータ通信を行う。
各上位装置HA1,HAnは、上位装置間を相互に接続する通信ネットワークCN12を介して、それぞれ接続されている。また、第1サイト10Aの各上位装置HA1,HAnは、通信ネットワークCN12を介して、第2サイト10Bの各上位装置HB1,HBnとも相互に接続されている。この上位装置間の通信ネットワークCN12は、例えば、インターネット、LAN(Local Area Network)、WAN(Wide Area Netwrok)、MAN(Metropolitan Area Network)等のようなネットワークとして構成され、TCP/IP(Transmission Control Protocol/Internet Protocol)等に基づいてデータ通信を行う。
第2サイト10Bも、上述した第1サイト10Aと同様に、複数の上位装置HB1,HBnと、記憶装置システム20Bとを備えている。これらの構成は、第1サイト10Aで述べたと同様であるので、その説明を省略する。
ここで、記憶装置システム20Aと記憶装置システム20Bとは、記憶装置間ネットワークとしてのリモートコピーラインCN13によって直接的に接続されている。リモートコピーラインCN13は、例えば、専用線または公衆回線により構成される。
なお、サイト内ネットワークCN11は、ファイバチャネルプロトコルを用いる構成に限らず、例えば、iSCSIのように、SCSIコマンドをIPパケットで包み込み、ブロックレベルのデータ転送をIP網で実行する構成でもよい。
さて、以下、上位装置HA1及び記憶装置システム20Aを代表的に例に採り説明する。なお、以下の上位装置HA1及び記憶装置システム20Aについての説明は、他の上位装置及び他の記憶装置システムにも適用することができる。
上位装置HA1は、例えば、CPU310と、メモリ320と、ディスク330と、ディスクインターフェース(以下「I/F」)340と、上位ネットワークI/F350と、キーボードスイッチ360と、ディスプレイ370とを備え、これら各部はバス380により相互に接続されている。
CPU(Central Processing Unit)310は、メモリ320に記憶されているプログラムコードを読み込んで実行する。CPU310が所定のプログラムコードを実行することにより、クラスタ制御やリモートコピー制御等の各処理または機能が上位装置HA1上に実現される。
メモリ320は、例えば、ROM(Read Only Memory)やRAM(Random Access Memory)等から構成される。図中では、ROMとRAMの区別をしていないが、実際には、プログラムコード等を格納するROMと、一時的記憶領域や作業領域等として使用されるRAMとが設けられてもよい。ディスク330は、例えば、ハードディスクドライブとして構成される。ディスク330には、例えば、プログラムやデータが記憶される。また、ディスク330の一部の記憶領域は、一時ファイルを格納するためのテンポラリ領域として使用されてもよい。
ディスクI/F340は、サイト内ネットワークCN11を介して、記憶装置システム20Aとの間のデータ授受を制御するインターフェース回路である。ディスクI/F340は、例えば、SCSIやiSCSI等に基づいて、ブロックレベルのデータ転送を制御する。上位ネットワークI/F350は、上位装置間ネットワークCN12を介して、他の上位装置(HAn,HB1〜HBn)との間のデータ授受を制御する回路である。上位ネットワークI/F350は、例えば、IP(Internet Protocol)に基づいて、データ転送を制御する。
キーボードスイッチ360は、情報入力手段の一例であり、システム管理者は、キーボードスイッチ360を介して、必要な指示等を入力することができる。ディスプレイ370は、情報出力手段の一例であり、例えば、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ、プラズマディスプレイ、EL(Electronic Luminescent)ディスプレイ等から構成される。ディスプレイ370には、システム管理者からの明示の要求に応じて、あるいは自発的に、種々の情報が表示される。なお、これらに限らず、例えば、音声入力装置、音声出力装置、ポインティングデバイス、プリンタ等を用いてもよい。
記憶装置システム20Aのハードウェア構成を説明する。記憶装置システム20Aは、例えば、RAIDグループ210と、ディスク制御部220と、上位装置I/F230と、装置間I/F240と、キャッシュメモリ250と、共有メモリ260と、スイッチング制御部270と、サービスプロセッサ(SVP)280とを備える。
RAID(Redundant Array of Independent
Disks)グループ210は、複数の物理的な記憶デバイス(以下、物理記憶デバイス)211を含んでおり、例えば、RAID1やRAID5等のRAIDに基づく冗長記憶を提供する。各物理記憶デバイス211は、例えば、ハードディスクドライブ、半導体メモリ装置、光ディスクドライブ、光磁気ディスクドライブ等の記憶デバイスから構成することができる。各物理記憶デバイス211が提供する物理的な記憶領域上には、論理的な記憶領域である論理ボリューム212を少なくとも一つ以上設定可能である。論理ボリューム212には、上位装置Hから利用される多数のデータが記憶される。また、別の論理ボリューム212には、制御情報等を格納し、システム領域として利用することもできる。なお、物理記憶デバイス211は、その全てが記憶装置システム20Aの筐体内に位置する必要はない。例えば、同一サイト内に設置された他の記憶装置システム(不図示)が有する論理ボリュームを、記憶装置システム20Aの論理ボリュームとして使用することもできる。以下の説明では、論理ボリュームを「ボリューム」と省略して記載する場合がある。
Disks)グループ210は、複数の物理的な記憶デバイス(以下、物理記憶デバイス)211を含んでおり、例えば、RAID1やRAID5等のRAIDに基づく冗長記憶を提供する。各物理記憶デバイス211は、例えば、ハードディスクドライブ、半導体メモリ装置、光ディスクドライブ、光磁気ディスクドライブ等の記憶デバイスから構成することができる。各物理記憶デバイス211が提供する物理的な記憶領域上には、論理的な記憶領域である論理ボリューム212を少なくとも一つ以上設定可能である。論理ボリューム212には、上位装置Hから利用される多数のデータが記憶される。また、別の論理ボリューム212には、制御情報等を格納し、システム領域として利用することもできる。なお、物理記憶デバイス211は、その全てが記憶装置システム20Aの筐体内に位置する必要はない。例えば、同一サイト内に設置された他の記憶装置システム(不図示)が有する論理ボリュームを、記憶装置システム20Aの論理ボリュームとして使用することもできる。以下の説明では、論理ボリュームを「ボリューム」と省略して記載する場合がある。
ディスク制御部220は、各物理記憶デバイス211との間のデータ授受を制御するものである。ディスク制御部220は、例えば、CPUやROM、RAM等を含んだマイクロコンピュータシステムとして構成される。ディスク制御部220は、記憶装置システム20A内に複数設けられる。ディスク制御部220は、例えば、SCSIやiSCSI等に基づいて、物理記憶デバイス211との間でブロックレベルのデータ転送を行う。
上位装置I/F230は、サイト内ネットワークCN11を介して、上位装置Hとの間のデータ転送を制御するものである。上位装置I/F230は、ディスク制御部220と同様に、マイクロコンピュータシステムとして構成可能である。上位装置I/F230は、上位装置Hの種類(サーバかメインフレームか等)に応じて、それぞれ用意することができる。なお、本実施例では、上位装置Hをサーバとして構成する場合を例に挙げて説明するが、メインフレームであってもよい。
装置間I/F240は、リモートコピーラインCN13を介して、他のサイト10Bの記憶装置システム20Bとの間でデータ通信を行うものである。装置間I/F240は、論理ボリューム212に書き込まれた更新データや差分データを、上位装置Hを介さずに、相手方の記憶装置システム20Bに転送する。
キャッシュメモリ250は、例えば、揮発または不揮発の半導体メモリから構成することができる。キャッシュメモリ250は、上位装置Hからのライトデータ(論理ボリュームに書き込まれるデータ)を記憶する。また、キャッシュメモリ250は、論理ボリューム212から読み出されたデータ(以下、リードデータ)を記憶する。
共有メモリ260は、例えば、不揮発または揮発の半導体メモリから構成することができる。共有メモリ260は、例えば、上位装置Hから受信した各種コマンドや、記憶装置システム20Aの制御に使用する制御情報等を記憶する。これらのコマンドや制御情報等は、複数の共有メモリ260によって、冗長記憶される。なお、キャッシュメモリ250と共有メモリ260とは、それぞれ別々のメモリとして構成することもできるし、あるいは、一つのメモリの一部をキャッシュメモリ領域として使用し、残りを共有メモリ領域として使用することもできる。
スイッチング制御部270は、各ディスク制御部220と、各上位装置I/F230と、装置間I/F240と、キャッシュメモリ250と、共有メモリ260とを、それぞれ相互に接続するものである。スイッチング制御部270は、例えば、超高速クロスバスイッチ等から構成することができる。
SVP280は、上位装置I/F230を介して、記憶装置システム20A内の各部の状態を収集し監視する。SVP280は、収集した内部状態の情報を生データのままで、あるいは、統計処理したデータとして、外部の管理端末(不図示)に出力する。SVP280が収集可能な情報としては、例えば、装置構成、電源アラーム、温度アラーム、入出力速度(IOPS)等が挙げられる。システム管理者は、管理端末からSVP280を介して、RAID構成の設定変更や、各種パッケージ(上位装置I/F、ディスク制御部等)の閉塞処理等を行うことができる。
次に、記憶装置システム20Aが行う処理の一例について説明する。上位装置I/F230は、サイト内ネットワークCN11を介して、上位装置Hからライトコマンド及びライトデータを受信する。受信されたライトコマンドは共有メモリ260に記憶され、受信されたライトデータはキャッシュメモリ250に記憶される。ディスク制御部220は、共有メモリ260を随時参照している。ディスク制御部220は、共有メモリ260に記憶されている未処理のライトコマンドを発見すると、このライトコマンドに従って、キャッシュメモリ250からライトデータを読み出し、アドレス変換等を行う。ディスク制御部220は、ライトコマンドによって指定された論理ボリューム212を構成する各物理記憶デバイス211に、ライトデータを記憶させる。
上位装置HA1からのリード要求を処理する場合を説明する。上位装置I/F230は、上位装置HA1からリードコマンドを受信すると、このリードコマンドを共有メモリ260に記憶させる。ディスク制御部220は、共有メモリ260内で未処理のリードコマンドを発見すると、このリードコマンドによって指定された論理ボリューム212を構成する各物理記憶デバイス211からデータを読み出す。ディスク制御部220は、読み出したデータをキャッシュメモリ250に記憶させる。また、ディスク制御部220は、要求されたデータの読出しが完了した旨を、共有メモリ260を介して、上位装置I/F230に通知する。上位装置I/F230は、キャッシュメモリ250からデータを読み込み、上位装置HA1に送信する。
以上が、本実施例に係るクラスタシステムにおけるハードウェア構成例である。なお、言うまでも無いが、サイト10A、上位装置HA1及び記憶装置システム20Aのいずれも、上述した構成に限定する必要は無い。
図2は、上位装置HA1内で動作する種々のコンピュータプログラムを示す。以下、第1サイト10A内の上位装置HA1を代表的に例に採り説明する。なお、以下、説明を分かり易くするため、上位装置HA1内の各コンピュータプログラムには、参照番号の末尾に「a」を付し、一方、第2サイト10Bにおける上位装置HB1内の各コンピュータプログラムには、参照番号の末尾に「b」を付す。
本実施例では、記憶装置システム20Aに、リモートコピーの際のコピーペアを構成する一方の論理ボリューム212aが備えられ、記憶装置システム20Bに、そのコピーペアを構成する他方の論理ボリューム212bが備えられる。コピーペアを構成する2つの論理ボリューム212a、212bの各々に、複数の上位装置が接続され、リモートコピーのコピーペアが一つの共有ボリュームとして扱われる。図2では、コピーペアを構成する一方の論理ボリューム212aを備えた一つ以上の物理記憶デバイスが、「調停用ディスク211a」と表記され、そのコピーペアを構成する他方の論理ボリューム212bを備えた一つ以上の物理記憶デバイスが、「調停用ディスク211b」と表記されている。調停用ディスク211aも211bも、以下に詳述する「調停」の際に使用される。すなわち、本実施例では、第一サイト10A内で、二以上の上位装置HA1〜HAnによって第一の小クラスタが構成され、第二サイト10B内で、二以上の上位装置HB1〜HBnによって第二の小クラスタが構成され、第一の小クラスタと第二の小クラスタによって一つの大クラスタが構成され、調停用ディスク211aが有する論理ボリューム212aと、調停用ディスク211bが有する論理ボリューム212bとが一つの共有ボリュームとされ、一つの大クラスタによって、一つの共有ボリュームが使用される。
上位装置HA1には、複数のコンピュータプログラムとして、例えば、図示しないオペレーティングシステム(例えば、ウィンドウズ(登録商標)或いはリナックス(登録商標))や、クラスタソフトウェア1040aや、ディスク制御ソフトウェア1050aや、調停エミュレーションソフトウェア1060aや、リモートコピー制御ソフトウェア1070aが備えられる。各ソフトウェア1040a、1050a、1060a及び1070aの少なくとも一つは、オペレーティングシステムの一つとして動作するように構成されていても良いし、或いは、オペレーティングシステム上で動作するアプリケーションプログラムの一つとして動作するように構成されていても良い。上述した複数のコンピュータプログラムは、例えば、ディスク330(図1参照)に格納されており、ディスク330からメモリ320へロードされ、CPU310で実行される。それにより、複数のコンピュータプログラムの各々について、特有の処理が実行される。
クラスタソフトウェア1040aは、クラスタを実現するためのソフトウェアであり、例えば、記憶装置システム20Aの状態を検出したり、上位装置間ネットワークCN2を介して上位装置HB1の状態を検出したり、フェイルオーバ処理を実行したりすることができる。クラスタソフトウェア1040aは、例えば、マイクロソフトクラスタサーバ(マイクロソフト社が提供するクラスタソフトウェアの一つ)であっても良い。クラスタソフトウェア1040aは、例えば、種々の要求をディスク制御ソフトウェア1050aに発行することができる。なお、以下の説明では、ディスク制御ソフトウェア1050aが受信する要求を「内部要求」と称する。内部要求には、例えば、ロック系の要求と、リードライト系の要求とがある。ロック系の要求とは、論理ボリュームの使用の排他制御に関わる要求であり、具体例としては、クラスタソフトウェア1040aが使用する論理ボリュームを他の上位装置には使用させないようにすることを意味する「Reserve」や、その論理ボリュームを他の上位装置に使用させても良いことを意味する「Release」等がある。なお、リードライト系の要求とは、論理ボリュームにデータを書き込むこと、或いは、論理ボリュームからデータを読み出すことを表す要求である。また、「使用させても良い」とは、「使用権の解放」と呼ばれることもある。
ディスク制御ソフトウェア1050aは、記憶装置システム20Aのデバイスドライバとして動作するソフトウェアである。ディスク制御ソフトウェア1050aは、例えば、クラスタソフトウェアから内部要求を受け、その内部要求を、記憶装置システム20Aが解釈できる形式のコマンド(例えばSCSIコマンド)に変換し、そのコマンドを含んだ要求(以下、I/O要求)を発行する。また、ディスク制御ソフトウェア1050aは、発行したI/O要求の処理結果として異常ステータスを表すデータを受信した場合、上記発行したI/O要求と同一のI/O要求を再発行するリトライ処理を実行する。
なお、このリトライ処理は、例えば、メモリ320(或いは他の記憶装置)に登録されたリトライ回数情報2が表すリトライ回数だけ行われる。具体的には、例えば、ディスク制御ソフトウェア1050aは、リトライ回数情報2を読み込み、リトライ回数情報2が表すリトライ回数を把握し、リトライ処理を行う都度に、行ったリトライ処理の回数をカウントし、カウント結果が、リトライ回数情報2が表すリトライ回数と一致した場合には、I/O要求の処理結果をクラスタソフトウェア1040aに通知する。クラスタソフトウェア1040aは、I/O要求の処理結果として異常に関する結果を受けた場合には、フェイルオーバー処理を開始する。
調停エミュレーションソフトウェア1060aは、クラスタを構成する上位装置HA1、HB1が別個に動作するスプリットブレイン状態を防ぐための制御(本実施例では便宜上「調停」と呼ぶ)を行うためのソフトウェアである。調停エミュレーションソフトウェア1060aは、記憶装置システム20A内の調停用ディスク211aを用いて調停を行う。記憶装置システム20Aは、調停用ディスク211a内のデータを、能動的に(換言すればプッシュ方式で)又は記憶装置システム20Bからの要求に応じて(換言すればプル式で)、リモートコピーラインCN3を介して、記憶装置システム20B内の調停用ディスク211bにコピーすることができる。
リモートコピー制御ソフトウェア1070aは、リモートコピーを制御するためのソフトウェアである。リモートコピー制御ソフトウェア1070aは、例えば、リモートコピーのためのコピーペアの作成や削除を行ったり、そのコピーペアのコピー元とコピー先の入替えを行ったりすることができる。詳細には、例えば、直接的な指示は、リモートコピー制御ソフトウェア1070aが行って、間接的な指示は、調停エミュレーションソフトウェア1060aが行っても良い。より詳細には、例えば、リモートコピー制御ソフトウェア1070aは、上位装置HA1に搭載されている或るソフトウェア(図示せず)のアプリケーションプログラムインターフェース(API)となって、記憶装置システム20Aに指示を出すことができ、調停エミュレーションソフトウェア1060aは、APIとなるリモートコピー制御ソフトウェア1070aを介して、記憶装置システム20Aに指示を出すことができる。
この実施例では、二段階の調停が行われる。簡単に説明すると、第一の調停では、各サイト内で、二以上の上位装置間で、調停ディスクを用いた調停が行なわれ、それにより、各サイト毎に、調停の勝者が決まる。第二の調停では、各サイト内での調停に勝った二以上の上位装置間で、リモートコピーのコピーペアを有する調停用ディスク211a、211bを用いた調停が行われ、その調停に勝った上位装置が、最終的な勝者となる。以下、二段階調停の一つの具体的な流れを説明する。この場合、第一の調停を行うのがクラスタソフトウェア1040aで、第二の調停を行うのが調停エミュレーションソフトウェア1060aである。
第一の調停において、例えば、二以上の上位装置HA1〜HAnが、論理ボリューム212aに対して、SCSIコマンドを有するI/O要求を発行することで、後述するロック(Reserve、Release、Reset)系コマンドによるロック状態の操作や、或いは、リードライト(Read、Write)系コマンドによる特定のセクタ確認が行われ、それにより、最終的に論理ボリューム212aを確保することができた上位装置が調停の勝者となる(なお、バスリセット(Reset)は、正確にはSCSIコマンドではないが、便宜上区別しないものとする)。なお、どの上位装置がどの論理ボリューム212aを確保することができたかに関する情報(以下、調停用ディスク制御情報6)は、例えば、記憶装置システム20Aの上位装置I/F230によって、共有メモリ260に登録される。上位装置I/F230は、調停用ディスク制御情報6を参照することにより、調停の敗者(上位装置)からの論理ボリューム212aに対するアクセス要求を拒否することができる。このような第一の調停は、他のサイトでも行われる。
しかし、単にそれだけでは、以下のような問題が生じてしまう。すなわち、一方の論理ボリューム212aが確保されたという状態が、他方の論理ボリューム212bには反映されないため、各サイト毎に、コピーペアを構成する論理ボリュームを確保することができ、それ故に、各サイト毎に調停の勝者(上位装置)が生じ、結果として、クラスタシステムにおいて、複数の調停勝者が存在することになってしまう。
そこで、それを避けるために、本実施例では、コピーペアの状態に基づいて、最終的な調停勝者が決定される。具体的には、例えば、コピー状態が「コピー元状態」である論理ボリュームが、その論理ボリュームを確保した上位装置によって確保された状態とされ、コピー状態が「コピー先状態」である論理ボリュームが、その論理ボリュームを確保した上位装置とは別の上位装置によって確保された状態とされ、コピー状態が「コピー中断」である論理ボリュームが、どの上位装置からも確保されていない状態とされる。この結果、コピー元状態となった論理ボリュームを確保した上位装置が、最終的な調停勝者となり、コピー先状態となった論理ボリュームを確保した上位装置にとっては、他の上位装置に論理ボリュームが確保されてしまったものとして認識される。なお、どのボリュームがどんなコピー状態であるかや、どのボリュームとどのボリュームによってコピーペアが形成されているか等に関する情報(例えば、リモートコピー制御情報4と同様の内容を有する情報)も、調停用ディスク制御情報6に含まれていて、上位装置I/F230が、その情報6を参照することにより、どのボリュームがどんなコピー状態であるか等を特定することができてもよい。
以上のように、二段階調停は、SCSIコマンドとリモートコピー制御を一つの組にして行われる。
図3は、上位装置HA1のソフトウェア構成を詳細に示す。
調停エミュレーションソフトウェア1060aは、I/O要求受付部3000、I/O要求処理部3010及び障害回復検知部3020を備える。また、上位装置HA1のメモリ320(或いは他の記憶領域)上に、I/O要求キュー3500、障害検知フラグ3510、障害情報3520、SCSIコマンド種別判定テーブル3530、I/O戻り値判定テーブル3540、SCSIコマンド戻り値判定テーブル3550、リモートコピー制御戻り値判定テーブル3560及びI/O・SCSIコマンド戻り値変換テーブル3570が用意され、これらのうちの少なくとも一つが、I/O要求受付部3000、I/O要求処理部3010及び障害回復検知部3020のうちの少なくとも一つに適宜使用される。
I/O要求キュー3500は、調停用ディスク211aが有する論理ボリューム(以下、調停用ボリューム212a)に対して発行されたI/O要求を格納する仕組みであり、例えばリストにより構成される。
障害検知フラグ3510は、調停用ディスク211aの障害(以下、「ディスク障害」と言う)が発生したことを記録するフラグである。障害検知フラグ3510は、ディスク障害が検出された場合に「ON」に設定され、ディスク障害が検出されない場合に「OFF」に設定される。
障害情報3520は、検出されたディスク障害に関する情報、例えば、調停用ディスク211aから返ってきたI/O戻り値及びSCSIコマンド戻り値に設定されている異常ステータスの内容等を表す。ここで、「I/O戻り値」とは、I/O要求それ自体の処理の結果を表す情報として記憶装置システム20Aから受信するものであり、SCSIコマンドを含んでいるか否かに関わらず、発行した全てのI/O要求について受信するものである。「SCSIコマンド戻り値」とは、I/O要求に含まれているSCSIコマンドに対する処理の結果を表す情報として記憶装置システム20Aから受信するものであり、SCSIコマンドを含んだI/O要求を発行した場合にのみに受信するものである。すなわち、本実施例では、記憶装置システム20A(例えば、上位装置I/F230)が、SCSI調停用I/O要求を受信した場合、そのI/O要求及びそれに含まれるSCSIコマンドにそれぞれ応じた処理結果を表すI/O戻り値及びSCSIコマンド戻り値を、上位装置HA1に送信することができる。
SCSIコマンド種別判定テーブル3530は、SCSIコマンドの種別を判定する基準に関する情報が登録されたテーブルである。具体的には、例えば、SCSIコマンド種別判定テーブル3530は、I/O要求に含まれるSCSIコマンドがロック系とリードライト系のどちらに属するのかの判定基準を格納するテーブルである。
I/O戻り値判定テーブル3540は、I/O戻り値の内容をどのように判定するかの基準に関する情報が登録されたテーブルである。具体的には、例えば、I/O戻り値判定テーブル3540は、どんなI/O戻り値が正常ステータス、異常ステータス及びコンフリクトのうちのどれに属するのかの判定基準を格納するテーブルである。
SCSIコマンド戻り値判定テーブル3550は、SCSIコマンド戻り値の内容をどのように判定するかの基準に関する情報が登録されたテーブルである。具体的には、例えば、SCSIコマンド戻り値判定テーブル3550は、どんなSCSIコマンド戻り値が正常ステータス、異常ステータス及びコンフリクトのうちのどれに属するのかの判定基準を格納するテーブルである。
リモートコピー制御戻り値判定テーブル3560は、リモートコピー制御戻り値の内容をどのように判定するかの基準に関する情報が登録されたテーブルである。具体的には、例えば、リモートコピー制御戻り値判定テーブル3560は、どんなリモートコピー制御戻り値が正常ステータス、異常ステータス及びコンフリクトのどれに属するのかの判定基準を格納するテーブルである。なお、「リモートコピー制御戻り値」とは、後述するリモートコピーペア制御の処理の結果として記憶装置システム20Aから受信する情報である。
I/O・SCSIコマンド戻り値変換テーブル3570は、どのようなリモートコピー制御戻り値を受け取った場合に、どのようなI/O戻り値およびSCSIコマンド戻り値を出力するかの基準を格納するテーブルである。
I/O要求受付部3000は、調停用ボリューム212aに対して発行されたI/O要求をディスク制御ソフトウェア1050aから受信し、I/O要求キュー3500の所定位置(例えば最後尾)にそのI/O要求を格納する処理を行う。このI/O要求受付部3000の処理フローの一例は、図10に示す。
I/O要求処理部3010は、I/O要求キュー3500から1つずつI/O要求を取り出し、上述した二段階調停の処理を行う。二段階調停の処理では、リモートコピー制御ソフトウェア1070aと通信を行う必要があり、この通信には、ソフトウェア間インターフェイス3030が用いられる。ソフトウェア間インターフェイス3030としては、例えば、図示しないオペレーティングシステムが提供するインターフェイスを使用する方法や、ソフトウェア間で共有して使用することができるメモリを介してデータ送受信を行う方法等を採用することができる。I/O要求処理部3010の処理フローの一例は、図11に示す。
障害回復検知部3020は、I/O要求処理部3010の処理によってディスク障害が検出された場合に別スレッドで実行され、ディスク障害の回復が検出されるまで或るタイミングで(例えば定期的に又は不定期に)調停用ディスク1030aの状態を調べる。
リモートコピー制御ソフトウェア1070は、コピーペアを構成する一方の調停用ボリューム212aを有する調停用ディスク211aに対して、リモートコピーペアの制御を行う。なお、リモートコピーペアの制御の内容は、I/O要求処理部3010とのソフトウェア間インターフェイス3030を介した通信の内容により異なる。また、例えば、調停用ボリューム212aがどの論理ボリュームとペアになっているかや、調停用ボリューム212aがコピー元であるかコピー先であるかなどは、リモートコピー制御情報6(例えば所定の記憶域に存在する)に登録されていて、そのリモートコピー情報6を参照することにより、特定することができても良い。
図4は、障害情報3520の構成例を示す。
障害情報3520には、1以上のI/O要求識別子と、各I/O要求識別子毎に対応付けられた障害時I/O戻り値、障害時SCSIコマンド戻り値及び障害時リモートコピー制御戻り値が含まれる。
I/O要求識別子とは、異常ステータスに属するI/O戻り値又はSCSI戻り値に対応するI/O要求(換言すれば、正常に処理されなかったI/O要求)の識別子、例えば、I/O要求へのポインタの値(例えば0x1234)等である。なお、障害情報3520に一つもI/O要求識別子が存在しない場合、I/O要求識別子として所定の初期値(例えばNULL)が障害情報3520に設定される。
障害時I/O戻り値とは、異常ステータスに属するI/O戻り値であると判定された場合の、そのI/O戻り値として設定されていた値それ自体であり、例えば、TIMEOUT,DISCONNECT,BUSY等である。なお、障害情報3520に一つも障害時I/O戻り値が存在しない場合、障害時I/O戻り値として所定の初期値(例えばSUCCESS)が設定される。
障害時SCSIコマンド戻り値とは、異常ステータスに属するSCSIコマンド戻り値であると判定された場合の、そのSCSI戻り値として設定されていた値それ自体であり、例えば、TIMEOUT,DISCONNECT,BUSY等である。なお、障害情報3520に一つも障害時SCSIコマンド戻り値が存在しない場合、障害時SCSIコマンド戻り値として所定の初期値(例えばGOOD)が設定される。
障害時リモートコピー制御戻り値とは、異常ステータスに属するリモートコピー制御戻り値であると判定された場合の、そのリモートコピー制御戻り値それ自体であり、例えば、TIMEOUT,DISCONNECT,BUSY等である。なお、障害情報3520に一つも障害時リモートコピー制御戻り値が存在しない場合、障害時リモートコピー制御戻り値として所定の初期値(例えばGOOD)が設定される。
図5は、SCSIコマンド種別判定テーブル3530の構成例を示す。
SCSIコマンド種別判定テーブル3530には、複数のSCSIコマンド内容の各々がどのSCSIコマンド種別に該当するかが登録されている。SCSIコマンド内容としては、例えば、Reserve、Release、Reset、Read及びWriteがあり、SCSIコマンド種別としては、ロック系とリードライト系とがある。この図5に示すテーブル3530は、SCSIコマンド内容がReserve、Release及びResetのうちのいずれかであれば、SCSIコマンド種別としてロック系に該当することを表している。また、このテーブル3530は、SCSIコマンド内容が、Read及びWriteのうちのいずれかであれば、SCSIコマンド種別としてリードライト系に該当することを表している。
図6は、I/O戻り値判定テーブル3540の構成例を示す。
I/O戻り値判定テーブル3540には、複数種類のI/O戻り値と、複数種類のI/O戻り値の各々に対応付けられたI/O戻り値判定結果とが登録されている。以下、その対応付けの一例を説明するが、対応付けは、以下の例に限定されなくてもよい。
I/O戻り値「SUCCESS」は、調停用ボリューム212aに対して発行されたI/O要求(以下、「調停用I/O要求」と略記)が正常に処理されたことを意味する。I/O戻り値「TIMEOUT」は、調停用I/O要求の処理が遅延しそれ故にタイムアウトが起きたことを意味する。I/O戻り値「DISCONNECT」は、調停用I/O要求を渡すことができなかった(例えば、調停用I/O要求が記憶装置システム20Aのキャッシュメモリ250に格納できなかった)ことを意味する。I/O戻り値「BUSY」は、調停用ディスク211aがビジー状態であるが故に調停用I/O要求を処理できなかったことを意味する。
I/O戻り値判定結果は、どのI/O戻り値がどんなステータスに該当するかを判定した結果であり、そのステータスとしては、例えば、正常ステータス、異常ステータス及びコンフリクトがある。正常ステータスとは、調停用I/O要求の処理が正常に終了したことを意味する。異常ステータスは、調停用I/O要求の処理において異常が発生したことを意味する。コンフリクトは、調停用ボリューム212aが他の上位装置によって予約されているため(換言すれば確保されているため)、調停用I/O要求を処理できなかったことを意味する。
I/O戻り値判定テーブル3540によれば、I/O戻り値が「SUCCESS」の場合、I/O戻り値判定結果として正常ステータスと判定される。また、I/O戻り値が「TIMEOUT」及び「DISCONNECT」のうちのいずれかの場合、I/O戻り値判定結果として異常ステータスと判定される。I/O戻り値が「BUSY」の場合、I/O戻り値判定結果として異常ステータス又はコンフリクトと判定され、SCSIコマンド戻り値判定テーブル3550により更に判定する必要が生じる。
図7は、SCSIコマンド戻り値判定テーブル3550の構成例を示す。
SCSIコマンド戻り値判定テーブル3550には、複数種類のSCSIコマンド戻り値と、複数種類のSCSIコマンド戻り値の各々に対応付けられたSCSIコマンド戻り値判定結果とが登録されている。なお、調停用I/O要求には、SCSIコマンドを含むものとそうでないものとがあるが、両方のどちらであっても良い場合には単に「調停用I/O要求」と言い、SCSIコマンドを含む調停用I/O要求の場合には「SCSI調停用I/O要求」と言う。
SCSIコマンド戻り値「GOOD」は、SCSI調停用I/O要求が正常に処理されたことを意味する。SCSIコマンド戻り値「TIMEOUT」は、SCSI調停用I/O要求の処理が遅延しそれ故にタイムアウトが起きたことを意味する。SCSIコマンド戻り値「DISCONNECT」は、SCSI調停用I/O要求を渡すことができなかった(例えば、SCSI調停用I/O要求が記憶装置システム20Aのキャッシュメモリ250に格納できなかった)ことを意味する。SCSIコマンド戻り値「BUSY」は、調停用ディスク211aがビジー状態であるが故にSCSI調停用I/O要求を処理できなかったことを意味する。SCSIコマンド戻り値「CONFLICT」は、調停用ボリューム212aが他の上位装置によって予約されているため(換言すれば確保されているため)、SCSI調停用I/O要求を処理できなかったことを意味する。
SCSIコマンド戻り値判定結果は、どのSCSIコマンド戻り値がどんなステータスに該当するかを判定した結果であり、そのステータスとしては、例えば、正常ステータス、異常ステータス及びコンフリクトがある。正常ステータスとは、SCSI調停用I/O要求の処理が正常に終了したことを意味する。異常ステータスは、SCSI調停用I/O要求の処理において異常が発生したことを意味する。コンフリクトは、調停用ボリューム212aが他の上位装置によって予約されているため(換言すれば確保されているため)、SCSI調停用I/O要求を処理できなかったことを意味する。
SCSIコマンド戻り値判定テーブル3550によれば、SCSIコマンド戻り値が「GOOD」の場合、SCSIコマンド戻り値判定結果として正常ステータスと判定される。また、SCSIコマンド戻り値が「TIMEOUT」、「DISCONNECT」及び「BUSY」のうちのいずれかの場合、SCSIコマンド戻り値判定結果として異常ステータスと判定される。SCSIコマンド戻り値が「CONFLICT」の場合、SCSIコマンド戻り値判定結果としてコンフリクトと判定される。
以上が、SCSIコマンド戻り値判定テーブル3550の構成例であるが、SCSIコマンド戻り値と、SCSIコマンド戻り値判定結果との対応付けは、上記の例に限定されなくてもよい。
図8は、リモートコピー制御戻り値判定テーブル3560の構成例である。
リモートコピー制御戻り値判定テーブル3560には、複数種類のリモートコピー制御戻り値と、複数種類のリモートコピー制御戻り値の各々に対応付けられたリモートコピー制御戻り値判定結果とが登録されている。以下、その対応付けの一例を説明するが、対応付けは、以下の例に限定されなくてもよい。
リモートコピー制御戻り値「GOOD」は、リモートコピー制御ソフトウェア1070aによるリモートコピーペア制御の処理が正常に終了したことを意味する。リモートコピー制御戻り値「TIMEOUT」は、リモートコピーペア制御の処理に遅延が発生し、タイムアウトが起きたことを意味する。リモートコピー制御戻り値「DISCONNECT」は、リモートコピーペア制御の対象となる調停用ディスク211a(或いは調停用ボリューム212a)が見つからなかったことを意味する。リモートコピー制御戻り値「BUSY」は、リモートコピーペア制御の対象となる調停用ディスク211aがビジー状態で処理を行えなかったことを意味する。リモートコピー制御戻り値「CONFLICT」は、リモートコピーペア制御の処理が正常に終了し、且つ、調停用ボリューム212aのコピー状態が「コピー先状態」である(すなわち、調停用ボリューム212aがコピー先論理ボリュームである)ことを意味する。
リモートコピー制御戻り値判定結果とは、どんなリモートコピー制御戻り値のときにどんなステータスに該当するかを判定した結果であり、そのステータスとしては、例えば、正常ステータス、異常ステータス及びコンフリクトがある。正常ステータスとは、リモートコピーペア制御の処理が正常に終了したことを意味する。異常ステータスとは、リモートコピーペア制御の処理で異常が発生したことを意味する。コンフリクトとは、リモートコピーペア制御の処理が正常に終了し、且つ、調停用ボリューム212aがコピー先論理ボリュームであることを意味する。
リモートコピー制御戻り値判定テーブル3560によれば、リモートコピー制御戻り値が「GOOD」の場合、リモートコピー制御戻り値判定結果として正常ステータスと判定される。また、リモートコピー制御戻り値が「TIMEOUT」、「DISCONNECT」及び「BUSY」のうちのいずれかの場合、リモートコピー制御戻り値判定結果として異常ステータスと判定される。リモートコピー制御戻り値が「CONFLICT」の場合、リモートコピー制御戻り値判定結果としてコンフリクトと判定される。
図9は、I/O・SCSIコマンド戻り値変換テーブル3570の構成例である。
I/O・SCSIコマンド戻り値変換テーブル3570は、前述した通り、どのようなリモートコピー制御戻り値を受け取った場合に、どのようなI/O戻り値およびSCSIコマンド戻り値を出力するかの基準を格納するテーブルである。以下、その基準の一例を説明するが、その基準は、以下の例に限定されてなくても良い。
このテーブル3570では、リモートコピー制御戻り値「GOOD」に対して、変換後I/O戻り値「SUCCESS」と、変換後SCSIコマンド戻り値「GOOD」とが対応付けられている。これは、リモートコピー制御戻り値として「GOOD」が検出された場合には、SCSIコマンドを含んだI/O要求のI/O戻り値として「SUCCESS」が出力され、そのI/O要求のSCSIコマンド戻り値として「GOOD」が出力されることを意味する。
また、このテーブル3570では、リモートコピー制御戻り値「TIMEOUT」に対して、変換後I/O戻り値「TIMEOUT」と、変換後SCSIコマンド戻り値「TIMEOUT」とが対応付けられている。これは、リモートコピー制御戻り値として「TIMEOUT」が検出された場合には、SCSIコマンドを含んだI/O要求のI/O戻り値として「TIMEOUT」が出力され、そのI/O要求のSCSIコマンド戻り値として「TIMEOUT」が出力されることを意味する。
また、このテーブル3570では、リモートコピー制御戻り値「DISCONNECT」に対して、変換後I/O戻り値「DISCONNECT」と、変換後SCSIコマンド戻り値「DISCONNECT」とが対応付けられている。これは、リモートコピー制御戻り値として「DISCONNECT」が検出された場合には、SCSIコマンドを含んだI/O要求のI/O戻り値として「DISCONNECT」が出力され、そのI/O要求のSCSIコマンド戻り値として「DISCONNECT」が出力されることを意味する。
また、このテーブル3570では、リモートコピー制御戻り値「BUSY」に対して、変換後I/O戻り値「BUSY」と、変換後SCSIコマンド戻り値「BUSY」とが対応付けられている。これは、リモートコピー制御戻り値として「BUSY」が検出された場合には、SCSIコマンドを含んだI/O要求のI/O戻り値として「BUSY」が出力され、そのI/O要求のSCSIコマンド戻り値として「BUSY」が出力されることを意味する。
また、このテーブル3570では、リモートコピー制御戻り値「CONFLICT」に対して、変換後I/O戻り値「BUSY」と、変換後SCSIコマンド戻り値「CONFLICT」とが対応付けられている。これは、リモートコピー制御戻り値として「CONFLICT」が検出された場合には、SCSIコマンドを含んだI/O要求のI/O戻り値として「BUSY」が出力され、そのI/O要求のSCSIコマンド戻り値として「CONFLICT」が出力されることを意味する。
以下、図5〜図9を参照して説明した種々のテーブルを用いて行われる処理流れを、図10〜図13を参照して説明する。なお、以下の説明を、適宜に図3を用いて参照すれば、本実施例に係るクラスタシステムにおいて行われる全体的な処理流れがよく分かるであろう。
図10は、I/O要求受付部3000の処理フローの一例を示す。なお、以下の説明では、動作を表すステップを「S」と略記する。
クラスタソフトウェア1040aが、調停用ボリューム212aに対する要求を表す内部要求をディスク制御ソフトウェア1050aしたとする。その場合、ディスク制御ソフトウェア1050aは、その内部要求をSCSIコマンドに変換して、そのSCSIコマンドを含んだ調停用I/O要求(つまりSCSI調停用I/O要求)を生成し、そのSCSI調停用I/O要求を調停エミュレーションソフトウェア1060aに発行する。
I/O要求受付部3000は、I/O要求を受け付けており、SCSI調停用I/O要求をディスク制御ソフトウェア1050aから受信する(S10000)。そして、I/O要求受付部3000は、受信したSCSI調停用I/O要求を、I/O要求キュー3500の最後尾(別な位置であってもよい)に格納する(S10010)。その後、I/O要求受付部3000は、再びI/O要求を受け付ける。
図11は、I/O要求処理部3010の処理フローの一例を示す。
I/O要求処理部3010は、I/O要求キュー3500の所定位置(例えば先頭)からI/O要求を1つ取り出す(以下、ここで取りされたI/O要求をSCSI調停用I/O要求とする)(S11000)ただし、I/O要求キュー3500にI/O要求が格納されていない場合には、I/O要求処理部3010は、新たなI/O要求が格納されるまで待つ。
次に、I/O要求処理部3010は、障害検知フラグ3510を参照し、その障害検知フラグ3510の状態を判定する(S11010)。
S11010の判定の結果、障害検知フラグ3510が「OFF」であることを検出した場合(つまり、ディスク障害が発生していないことを検出した場合)、I/O要求処理部3010は、ステップ11020の処理を行う。すなわち、I/O要求処理部3010は、SCSIコマンド種別判定テーブル3530(図5参照)を参照し、SCSI調停用I/O要求に含まれるSCSIコマンドの種別の判定を行う。具体的には、I/O要求処理部3010は、SCSI調停用I/O要求に含まれるSCSIコマンドの内容が「Reserve」、「Release」及び「Reset」のうちのいずれかであることを検出した場合、SCSIコマンド種別はロック系であると判定し、一方、そのSCSIコマンドの内容が「Read」及び「Write」のうちのいずれかであることを検出した場合、SCSIコマンド種別はリードライト系であると判定する。このS11020の判定結果によって、以後の処理流れが大きく異なる。以下、S11020の判定結果がロック系であるかリードライト系であるかに分けて説明する。
(1)S11020でロック系であると判定された場合。
S11020において、SCSIコマンド種別はロック系であると判定された場合、I/O要求処理部3010は、SCSI調停用I/O要求を記憶装置システム20Aに送信する(S11030)。それにより、I/O要求処理部3010は、SCSI調停用I/O要求の処理結果を記憶装置システム20Aから受信する(S11040)。ここで受信した処理結果には、I/O戻り値及びSCSI戻り値が含まれている。
I/O要求処理部3010は、ステップ11040で受け取ったI/O戻り値を用いてI/O戻り値判定テーブル3540(図6参照)を参照することにより、そのI/O戻り値がどんなステータスに該当するかのI/O戻り値判定を行い、且つ、ステップ11040で受け取ったSCSIコマンド戻り値を用いてSCSIコマンド戻り値判定テーブル3550(図7参照)を参照することにより、そのSCSIコマンド戻り値がどんなステータスに該当するかのSCSIコマンド戻り値判定を行う(S11050)。I/O要求処理部3010は、I/O戻り値が「SUCCESS」であり、SCSI戻り値が「GOOD」であることを検出した場合、正常ステータスと判定する。また、I/O要求処理部3010は、I/O戻り値が「TIMEOUT」、「DISCONNECT」及び「BUSY」のうちのいずれかであり、SCSIコマンド戻り値が「TIMEOUT」、「DISCONNECT」及び「BUSY」のうちのいずれかであることを検出した場合、異常ステータスと判定する。また、I/O要求処理部3010は、I/O戻り値が「BUSY」であり、SCSIコマンド戻り値が「CONFLICT」であることを検出した場合、コンフリクトと判定する。
S11050において、コンフリクトと判定された場合、I/O要求処理部3010は、SCSI調停用I/O要求の処理結果として、S11040で受信したI/O戻り値及びSCSI戻り値を、ディスク制御ソフトウェア1050aに返す(S11100)。
S11050において、異常ステータスと判定された場合、I/O要求処理部3010は、障害検知フラグ3510へアクセスし、障害検知フラグ3510の状態を「OFF」から「ON」に変更する(S11110)。これにより、ディスク障害の発生が、上位装置HA1内の記憶域(例えばメモリ320上の領域)に記録される。また、I/O要求処理部3010は、障害情報3520(図4参照)中に、異常ステータスと判定されたSCSI調停用I/O要求の識別子(例えばポインタの値)と、受信したI/O戻り値(つまり障害時I/O戻り値)と、受信したSCSI戻り値(つまり障害時SCSI戻り値)とを記録する(S11120)。また、I/O要求処理部3010は、障害回復検知部3020を別スレッドで開始させる(S11130)。それにより、ディスク障害が回復したか否かの監視が開始される。最後に、I/O要求処理部3010は、SCSI調停用I/O要求の処理結果として、S11040で受信したI/O戻り値及びSCSI戻り値を、ディスク制御ソフトウェア1050aに返す(S11100)。
S11050において、正常ステータスと判定された場合、I/O要求処理部3010は、ソフトウェア間インターフェイス3030を介してリモートコピー制御ソフトウェア1070aにリモートコピー制御要求を送信し(S11060)、それにより、リモートコピーペアの制御を行わせる。ここで送信されるリモートコピー制御要求には、SCSIコマンドが含まれており、リモートコピー制御ソフトウェア1070aは、そのSCSIコマンドの種類に従ったリモートコピーペア制御を行う。I/O要求処理部3010は、リモートコピー制御戻り値を含んだ制御結果をリモートコピー制御ソフトウェア1070aから受信する(S11070)。
I/O要求処理部3010は、I/O・SCSIコマンド戻り値変換テーブル3570(図9参照)を参照し、受信したリモートコピー制御戻り値に対応した変換後I/O戻り値及び変換後SCSI戻り値をI/O・SCSIコマンド戻り値変換テーブル3570から取得する(S11080)。そして、I/O要求処理部3010は、取得された変換後I/O戻り値及び変換後SCSI戻り値を用いて、S11050と同様の判定処理を行う(S11090)。
S11090において、異常ステータスと判定された場合、I/O要求処理部3010は、上述したS11110以降の処理を行う。ただし、I/O要求処理部3010は、S11070でリモートコピー制御戻り値を受信したので、S11120の処理では、受信したリモートコピー制御戻り値をも障害情報3520に登録する。また、S11100では、I/O要求処理部3010は、S11080で取得したI/O戻り値及びSCSI戻り値をディスク制御ソフトウェア1050aに返す。
S11090において、正常ステータス又はコンフリクトと判定された場合、I/O要求処理部3010は、SCSI調停用I/O要求の処理結果として、S11080で取得したI/O戻り値及びSCSI戻り値を、ディスク制御ソフトウェア1050aに返す(S11100)。
以上が、S11020でロック系であると判定された場合に行われる処理の流れである。次に、S11020でリードライト系であると判定された場合に行われる処理の流れについて説明する。
(2)S11020でリードライト系であると判定された場合。
S11020において、SCSIコマンド種別はリードライト系であると判定された場合、I/O要求処理部3010は、S11060と同様に、SCSIコマンドを含んだリモートコピー制御要求をリモートコピー制御ソフトウェア1070aに送信する(S11150)。その後、I/O要求処理部3010は、リモートコピー制御戻り値を含んだ制御結果をリモートコピー制御ソフトウェア1070aから受信する(S11160)。
I/O要求処理部3010は、ステップ11160で受け取ったリモートコピー制御戻り値を用いてリモートコピー制御戻り値判定テーブル3560(図8参照)を参照することにより、そのリモートコピー制御戻り値がどんなステータスに該当するかのリモートコピー制御戻り値判定を行う(S11170)。
S11170において、異常ステータス又はコンフリクトと判定された場合、I/O要求処理部3010は、S11160で受信したリモートコピー制御戻り値を用いて、上述したS11080以降の処理を行う。なお、I/O要求処理部3010は、S11100では、S11080で取得したI/O戻り値及びSCSI戻り値をディスク制御ソフトウェア1050aに返す。また、I/O要求処理部3010は、S11090で異常ステータスと判定された場合には、S11120では、障害情報3520中に、S1160で受信したリモートコピー制御戻り値(「GOOD」以外)を登録する。
S11170において、正常ステータスと判定された場合、I/O要求処理部3010は、SCSI調停用I/O要求を記憶装置システム20Aに送信し(S11180)、その後、そのSCSI調停用I/O要求の処理結果を記憶装置システム20Aから受信する(S11190)。I/O要求処理部3010は、その受信した処理結果に含まれているI/O戻り値及びSCSI戻り値を用いて、上述したS11090以降の処理を行う。例えば、I/O要求処理部3010は、S11100では、S11190で受信したI/O戻り値及びSCSI戻り値をディスク制御ソフトウェア1050aに返す。また、例えば、I/O要求処理部3010は、S11090で異常ステータスと判定された場合には、S11120では、障害情報3520中に、S1160で受信したリモートコピー制御戻り値「GOOD」を登録する。
以上が、S11020でリードライト系であると判定された場合に行われる処理の流れの説明である。
ところで、S11010において、障害検知フラグ3510が「ON」であることを検出した場合(つまり、ディスク障害が発生したことを検出した場合)、I/O要求処理部3010は、ステップ11140の処理を行う。すなわち、I/O要求処理部3010は、障害情報3520の中から、S11000で取り出されたSCSI調停用I/O要求に含まれている識別子に対応した障害時I/O戻り値及び障害時SCSI戻り値を取得し、ディスク制御ソフトウェア1050aに返す処理結果に、それらの取得された値を設定する(S11140)。そして、I/O要求処理部3010は、その処理結果(すなわち、S11140で取得された障害時I/O戻り値及び障害時SCSI戻り値を含んだデータ)を、ディスク制御ソフトウェア1050aに送信する(S11100)。
図12は、障害回復検知部3020の処理フローの一例を示す。
障害回復検知部3020は、例えば、I/O要求処理部3010のS11130の処理(図11参照)により、起動して、以下の処理を開始することができる。
障害回復検知部3020は、まず、障害情報3520の中の障害時リモートコピー制御戻り値がどんな値であるかを判定する(S12000)。
このS12000において、障害時リモートコピー制御戻り値が「GOOD」であるということは、調停用ディスク211aに関して何らかの障害が発生したことを表す。この場合、障害回復検知部3020は、調停用ディスク211aの障害の回復を検知するためのSCSI調停用I/O要求を作成する(S12010)。ここで作成されるSCSI調停用I/O要求としては、例えば、「Reserve」のSCSIコマンドを含んだ調停用I/O要求を採用することができる。また、例えば、作成されたSCSI調停用I/O要求(換言すれば、送信される予定のSCSI調停用I/O要求)は、上位装置HA1の所定の記憶域(例えばメモリ320)に登録されても良い。
障害回復検知部3020は、作成したSCSI調停用I/O要求を記憶装置システム20Aに送信し(S12020)、その後、それの処理結果を記憶装置システム20Aから受信する(S12030)。障害回復検知部3020は、受信した処理結果に含まれているI/O戻り値及びSCSI戻り値を用いて、例えばS11050(図11参照)と同様の判定処理を行う(S12040)。
S12040において、正常ステータス又はコンフリクトと判定されたということは、ディスク障害が回復したことを表す。この場合、障害回復検知部3020は、使用済みのSCSI調停用I/O要求を開放し(例えばS12010で作成したSCSI調停用I/O要求を所定の記憶域から消去し)(S12050)、障害検知フラグ3510の状態を「ON」から「OFF」に変更し(S12060)、障害情報3520の内容を消去(例えば初期値で上書き)して(S12070)、処理を終了する。
一方、S12040において、異常ステータスと判定されたということは、ディスク障害が継続していることを表す。この場合、障害回復検知部3020は、使用済みのSCSI調停用I/O要求を開放し(S12080)、待ち処理を行った後(S12090)、再び、S12010の処理を行う。なお、待ち処理とは、使用済みのSCSI調停用I/O要求を開放してから再びSCSI調停用I/O要求を作成するまでに一定時間(例えば3秒)待ち状態となる処理である。待ち時間は、固定値であってもよいし、ユーザによって可変であっても良い。
さて、S12000において、障害時リモートコピー制御戻り値が「GOOD」以外であるということは、ディスク障害では無く、リモートコピー制御に関して何らかの障害が発生したこと(例えば、リモートコピー制御ソフトウェア1070aに障害が発生したこと)ということである。この場合、障害回復検知部3020は、リモートコピー制御要求を生成してリモートコピー制御ソフトウェア1070aに送信する(S12100)。送信されるリモートコピー制御要求の内容は、例えば、リモートコピーペアのコピー状態を確認することである。障害回復検知部3020は、それの結果をリモートコピー制御ソフトウェア1070aから受信し(S12110)、受信した結果に含まれているリモートコピー制御戻り値を用いて、例えばS11170(図11参照)と同様の判定を行う(S12120)。S12120において、正常ステータスと判定された場合、障害回復検知部3020は、S12060以降の処理を行い、異常ステータスと判定された場合、一定時間(例えば3秒間)待ってから(S12130)、再び、S12100の処理を行う。なお、S12100で送信されるリモートコピー制御要求の内容は、リモートコピーペアの状態確認であるため、リモートコピー制御戻り値にコンフリクトが設定されることはない。
図13は、リモートコピー制御ソフトウェア1070aの処理フローの一例を示す。
リモートコピー制御ソフトウェア1070aは、I/O要求処理部3010又は障害回復検知部3020から、リモートコピー制御要求を受信する(S13000)。
次に、リモートコピー制御ソフトウェア1070aは、受信したリモートコピー制御要求に従うリモートコピーペア制御を実行する(S13010)。具体的には、例えば、リモートコピー制御ソフトウェア1070aは、以下の(1)〜(3)の処理、
(1)コピーペアを構成する一方の論理ボリュームである調停用ボリューム212aのコピー状態を確認する処理、
(2)調停用ボリューム212aがコピー元論理ボリュームである場合、リモートコピー、例えば、調停用ボリューム212aに格納するデータの全部又は一部(例えば、既存のデータと新たに書き込まれるデータとの差分)を装置I/F240を介してコピー先ボリューム212bに格納することを記憶装置システム20Aに対して実行させる処理、
(3)調停用ボリューム212aと212bのお互いのコピー状態を反転し、それに伴い、調停用ボリューム212a内のデータと、調停用ボリューム212b内のデータとを入れ替える処理、
のうちのいずれかを実行することができる。
(1)コピーペアを構成する一方の論理ボリュームである調停用ボリューム212aのコピー状態を確認する処理、
(2)調停用ボリューム212aがコピー元論理ボリュームである場合、リモートコピー、例えば、調停用ボリューム212aに格納するデータの全部又は一部(例えば、既存のデータと新たに書き込まれるデータとの差分)を装置I/F240を介してコピー先ボリューム212bに格納することを記憶装置システム20Aに対して実行させる処理、
(3)調停用ボリューム212aと212bのお互いのコピー状態を反転し、それに伴い、調停用ボリューム212a内のデータと、調停用ボリューム212b内のデータとを入れ替える処理、
のうちのいずれかを実行することができる。
リモートコピー制御ソフトウェア1070aは、リモートコピー制御の処理結果に応じたリモートコピー制御戻り値を生成し、その値を含んだ処理結果データを、リモートコピー制御要求の送信元(I/O要求処理部3010又は障害回復検知部3020)に送信する(S13020)。
以上の流れのうちの一つをまとめると、例えば以下の通りである。
(1)ロック系のSCSIコマンドを含んだSCSI調停用I/O要求が出力された場合。
(1)ロック系のSCSIコマンドを含んだSCSI調停用I/O要求が出力された場合。
調停エミュレーションソフトウェア1060aは、デバイス制御ソフトウェア1050aからSCSI調停用I/O要求を受信したならば、そのSCSI調停用I/O要求を記憶装置システム20Aに出力する(例えば、第一の調停に勝つことを試みる)。それに応答して、正常ステータスに該当するI/O戻り値及びSCSIコマンド戻り値を記憶装置システム20Aから受信した場合(例えば、第一の調停の勝者になった旨の解答を受信した場合)、調停エミュレーションソフトウェア1060aは、リモートコピー制御要求をリモートコピー制御ソフトウェア1070aに送信する(例えば、第二の調停にも勝つことを試みる)。リモートコピー制御ソフトウェア1070aは、例えば、調停用ボリューム212aをコピー元状態にできなかった場合、異常ステータスに該当するリモートコピー制御戻り値を出力する(例えば、第二の調停の敗者になった旨の回答を出力する)。調停エミュレーションソフトウェア1060aは、リモートコピー制御戻り値を受信し、そのリモートコピー制御戻り値に対応するI/O戻り値及びSCSIコマンド戻り値を取得し、取得されたI/O戻り値及びSCSIコマンド戻り値が異常ステータスに該当すれば、障害検知フラグ3510をオンにするとともに、取得されたI/O戻り値及びSCSIコマンド戻り値を障害情報3520に書き込む。
(2)リードライト系のSCSIコマンドを含んだSCSI調停用I/O要求が出力された場合。
(2)リードライト系のSCSIコマンドを含んだSCSI調停用I/O要求が出力された場合。
調停エミュレーションソフトウェア1060aは、デバイス制御ソフトウェア1050aからSCSI調停用I/O要求を受信したならば、リモートコピー制御要求をリモートコピー制御ソフトウェア1070aに送信する。リモートコピー制御ソフトウェア1070aは、例えば、リモートコピーに失敗した場合、異常ステータスに該当するリモートコピー制御戻り値を出力する。調停エミュレーションソフトウェア1060aは、リモートコピー制御戻り値を受信し、そのリモートコピー制御戻り値に対応するI/O戻り値及びSCSIコマンド戻り値を取得し、取得されたI/O戻り値及びSCSIコマンド戻り値が異常ステータスに該当すれば、障害検知フラグ3510をオンにするとともに、取得されたI/O戻り値及びSCSIコマンド戻り値を障害情報3520に書き込む。
さて、以上、上述した第一実施例によれば、ディスク制御ソフトウェア1050aと記憶装置システム20Aとの間に、調停エミュレーションソフトウェア1060aが介在する(調停エミュレーションソフトウェア1060aはディスク制御ソフトウェア1050aに組み込まれていても良い)。調停エミュレーションソフトウェア1060aは、ディスク制御ソフトウェア1050aからSCSI調停用I/O要求を受けてそれを記憶装置システム20Aに送信したり、そのSCSI調停用I/O要求の処理結果(I/O戻り値及びSCSIコマンド戻り値を含んだデータ)を記憶装置システム20Aから受信したりする。調停エミュレーションソフトウェア1060aは、受信した処理結果に含まれているI/O戻り値及びSCSIコマンド戻り値から、異常が発生したか否かを判定し、異常が発生したと判定された場合、障害検知フラグ3510の状態をONに設定し、そのときのI/O戻り値及びSCSIコマンド戻り値(障害時I/O戻り値及び障害時SCSIコマンド戻り値)を所定の記憶域に記憶させて、障害時I/O戻り値及び障害時SCSI戻り値をディスク制御ソフトウェア1050aに送信する。ディスク制御ソフトウェア1050aは、障害時I/O戻り値及び障害時SCSI戻り値を受けた場合、リトライ処理、すなわち、先に送信したSCSI調停用I/O要求を再送信する。調停エミュレーションソフトウェア1060aは、障害検知フラグ3510がON状態である期間中に、異常が発生したと判定されたときと同一のSCSI調停用I/O要求を受信した場合、そのI/O要求を記憶装置システム20Aに送信することなく(例えばそのI/O要求を破棄して)、直ちに、障害時I/O戻り値及び障害時SCSIコマンド戻り値を所定の記憶域から読み出してディスク制御ソフトウェア1050aに返送する。ディスク制御ソフトウェア1050aにとってみると、リトライ処理としてSCSI調停用I/O要求を再送信した直後に再び障害時I/O戻り値及び障害時SCSIコマンド戻り値を受信することになる。これは、リモートコピー制御において何らかの障害が発生し、それに応じたリモートコピー制御戻り値が発行された場合にも、障害検知フラグ3510がON状態に設定され、同様の処理が行われる。これにより、ディスク制御ソフトウェア1050aによって複数回のリトライ処理が行われても、複数回のリトライ処理は、SCSI調停用I/O要求が記憶装置システム20Aに送信される場合よりも早く(例えば大幅に短い時間で)終了する。このため、クラスタソフトウェア1040aは、ディスク制御ソフトウェア1050aから早くエラー報告を受けることができ(例えば、複数回のリトライ処理が行われても、一度もリトライ処理が行われない場合と実質的に同じ又はそれに近いタイミングでエラー報告を受けることができ)、以って、フェイルオーバー処理を早く開始することができる。
以下、本発明の一実施形態に係る第二の実施例について説明する。なお、以下、第一実施例と重複する部分の説明は省略又は簡略し、第一実施例と異なる部分の説明を主に説明する(これは、第二実施例のみならず、第三実施例以降も同様である)。
図14は、第二実施例におけるI/O要求受付部3000の処理フローの一例を示す。
I/O要求受付部3000が、ディスク制御ソフトウェア1050aからSCSI調停用I/O要求を受信し(S14000)、I/O要求キュー3500に格納する前に、障害検知フラグ3510を参照してそれの状態を判定する(S14010)。
S14010において、障害検知フラグ3510が「OFF」状態であると判定された場合、I/O要求受付部3000は、受信したSCSI調停用I/O要求を、I/O要求キュー3500の所定位置(例えば最後尾)に格納する(S14020)。
一方、S14010において、障害検知フラグ3510が「ON」状態であると判定された場合、I/O要求受付部3000は、受信したSCSI調停用I/O要求の識別子に対応した障害時I/O戻り値及び障害時SCSIコマンド戻り値を障害情報3520から取得し(S14030)、それらをディスク制御ソフトウェア1050aに送信する(S14040)。
以上のように、この第二実施例では、I/O要求受付部3000が、障害検知フラグ3510の状態を判定し、それが「ON」状態であると判定されれば、障害時I/O戻り値及び障害時SCSIコマンド戻り値をディスク制御ソフトウェア1050aに返送する。このため、I/O要求処理部3010は、上述したS11010及びS11140の処理(図11参照)を行う必要がなくなる(その他の処理は、第一実施例と同様に行う)。
第三実施例では、プラグアンドプレイ(以下、「PnP」と記す)によってデバイス情報に変更があったことが所定のモジュール(例えばオペレーティングシステム内のモジュール)によって検知された場合に、オペレーティングシステムによって、自動的に、デバイス情報取得処理が実行される。デバイス情報とは、例えば、記憶装置システム20Aの構成に関する情報であり、例えば、どんな属性(例えば信頼性が高いか低いか等)を持った物理記憶デバイス上にどんな容量を持った論理ボリュームが備えられているか等の情報である。デバイス情報は、例えば、記憶装置システム20Aの共有メモリ260に格納される情報である。また、このデバイス情報が変更されことは、例えば、記憶装置システム20Aから通知されることにより識別することができる。
デバイス情報取得処理が開始されると、障害回復検知部3020が起動し、障害回復検知部3020によって以下の処理が行われる。
図15は、第三実施例における障害回復検知部3020の処理フローの一例を示す。
障害回復検知部3020は、まず、障害情報3520の中の障害時リモートコピー制御戻り値がどんな値であるかを判定する(S16000)。
このS12000において、障害時リモートコピー制御戻り値が「GOOD」であることが判定された場合、障害回復検知部3020は、デバイス情報取得用のI/O要求を生成して記憶装置システム20Aに送信し(S16010)、その後、それの処理結果を記憶装置システム20Aから受信する(S16020)。なお、送信されるデバイス情報取得用のI/O要求としては、例えば、「Query Device Relations」のPnP
I/O要求を採用することができる。
I/O要求を採用することができる。
障害回復検知部3020は、受信した処理結果に含まれているI/O戻り値を用いて、例えばS11050(図11参照)と同様の判定処理を行う(S16030)。S16030において、正常ステータスと判定された場合、障害回復検知部3020は、障害検知フラグ3510の状態を「ON」から「OFF」に変更し(S16040)、障害情報3520の内容を消去(例えば初期値で上書き)して(S16050)、処理を終了する。S16030において、異常ステータスと判定された場合、障害回復検知部3020は、処理を終了する。
さて、S16000において、障害時リモートコピー制御戻り値が「GOOD」以外であると判定された場合、障害回復検知部3020は、上述したS12100〜S12120と同様の処理を行う。S12120において、異常ステータスと判定された場合、障害回復検知部3020は、処理を終了する。
第四実施例では、クラスタソフトウェア1040aが、調停用ディスク211a(クラスタリソースの一つ)を使用可能な状態にするリソースオンライン処理を行うことによって、障害の回復を検知するシステムの例を示す。なお、ここで言う「クラスタリソース」とは、クラスタが管理するリソース(例えば、物理的な記憶デバイス等のハードウェアや、データベースマネジメントシステム等のプログラムのこと)のことである。
図16は、第四実施例における障害回復検知部3020の処理フローの一例を示す。
例えば、障害回復検知部3020は、クラスタソフトウェア1040aから起動命令を受けて、以下の処理を行う。
障害回復検知部3020は、上述したS12000〜S12070と同様の処理(図11参照)を行う(S17000〜S17070)。障害回復検知部3020は、S17070の処理の後、調停用ディスク211aを使用可能な状態にする、例えば、調停用ディスク211aをネットワークCN12又はCN13に論理的に接続するリソースオンラインを行う(S17080)。
障害回復検知部3020は、S17040において、異常ステータスと判定された場合、S17020で送信したI/O要求を開放する(S17090)。また、障害回復検知部3020は、S17000において「GOOD」以外と判定された場合、上述したS16060〜S16080と同様の処理(図15参照)を行う(S17100〜S17120)。
以上、本発明の好適な実施形態及び幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態及び実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
10A、10B…サイト、11…情報発行部、12…中間情報処理部、13…リソース保持部、14…情報フィルタ部、16…記憶域、20A、20B…記憶装置システム、210…RAIDグループ、211…ディスクドライブ、212…論理ボリューム、220…ディスク制御部、230…上位装置I/F、240…装置間I/F、250…キャッシュメモリ、260…共有メモリ、270…スイッチング制御部、310…CPU、320…メモリ、330…ディスクドライブ、340…ディスクI/F、350…上位ネットワークI/F、360…キーボードスイッチ、370…ディスプレイ、380…バス、CN…ネットワーク、H…上位装置、1040…クラスタソフトウェア、1050…ディスク制御ソフトウェア、1060…調停エミュレーションソフトウェア、1070…リモートコピー制御ソフトウェア、3000…I/O要求受付部、3010…I/O要求処理部、3020…障害回復検知部、3030…ソフトウェア間インターフェイス、3500…I/O要求キュー、3510…障害検知フラグ、3520…障害情報、3530…SCSIコマンド種別判定テーブル、3540…I/O戻り値判定テーブル、3550…SCSIコマンド戻り値判定テーブル、3560…リモートコピー制御戻り値判定テーブル、3570…I/O・SCSIコマンド戻り値変換テーブル
Claims (11)
- 記憶システムと通信する情報処理システムにおいて、
複数のコンピュータプログラムを記憶するプログラム記憶域と、
特定の障害に関するデータである障害データを記憶する障害記憶域と、
前記記憶域から少なくとも一つのコンピュータプログラムを読み込み実行する少なくとも一つのプロセッサと
を備え、前記複数のコンピュータプログラムは、
情報を発行する情報発行プログラムと、
前記情報発行プログラムによって発行された情報を受信して出力し、前記情報の出力に応答して異常を受信した場合、異常を前記情報発行プログラムに知らせる前に、少なくとも一回は前記出力した情報を再出力し、前記少なくとも一回の再出力を行っても異常を受信した場合、異常を前記情報発行プログラムに知らせる中間処理プログラムと、
前記中間処理プログラムから発行された情報を受信し、前記障害記憶域に障害データが記憶されているか否かを判断し、前記障害データが記憶されていない場合、前記受信した情報を前記記憶システムへ出力し、前記障害データが記憶されている場合、前記情報の受信に応答して異常を前記中間処理プログラムに通知する情報フィルタプログラムと
を含んでいる、
情報処理システム。 - 前記記憶システムは、前記情報処理システムから発行された情報を処理し、前記情報を正常に処理した場合には、正常を表す処理結果データを前記情報処理システムに返送し、前記情報を正常に処理しなかった場合には、異常を表す処理結果データを前記情報処理システムに返送し、
前記情報フィルタプログラムは、前記記憶システムから返送された処理結果データを受信し、前記受信した処理結果データが正常を表している場合には、正常を前記中間処理プログラムに出力し、前記受信した処理結果データが異常を表している場合には、前記障害データを前記障害記憶域に格納し、且つ、異常を前記中間処理プログラムに出力する、
請求項1記載の情報処理システム。 - 前記中間処理プログラムは、識別子を有する情報を発行し、
前記情報フィルタプログラムは、前記受信した処理結果データが異常を表す場合、その処理結果データに対応した情報の識別子を前記障害記憶域に登録し、前記中間処理プログラムから情報を受信した場合、前記受信した情報が有する識別子に適合する識別子が前記障害記憶域に登録されている場合に、異常を前記中間処理プログラムに通知する、
請求項2記載の情報処理システム。 - 前記記憶システムは、第一の論理ボリュームを備えており、
前記第一の論理ボリュームは、第二の論理ボリュームとペアを形成し、
前記第二の論理ボリュームは、前記記憶システム、又は、前記記憶システムに接続された別の記憶システムに備えられ、
前記複数のコンピュータプログラムは、前記第一の論理ボリュームと前記第二の論理ボリュームとの間でデータのコピーに関する制御を実行し、前記制御を正常に行わなければ、異常を表す制御結果データを出力するコピー制御プログラムを更に含み、
前記情報フィルタプログラムは、前記コピー制御プログラムに制御の実行の要求を行い、前記要求に応答して前記制御結果データを前記コピー制御プログラムから受信し、前記受信した制御結果データが異常を表していれば、障害データを前記障害記憶域に格納し、異常を前記中間処理プログラムに出力する、
請求項1記載の情報処理システム。 - 前記情報処理システムは、前記中間処理プログラムから発行された情報を一時的に記憶するための情報記憶域を更に備え、
前記情報フィルタプログラムは、前記受信した情報を前記情報記憶域に格納する前、又は、前記情報記憶域から前記情報を読み出した後に、前記障害記憶域に障害データが記憶されているか否かを判断する、
請求項1記載の情報処理システム。 - 前記複数のコンピュータプログラムは、前記特定の障害が回復したか否かを検知し、回復したと検知された場合には、障害の回復を前記障害記憶域に記録する障害回復検知プログラムを更に含む、
請求項1記載の情報処理システム。 - 前記障害回復検知プログラムは、前記記憶システムに関するデバイス情報の取得が行われたことを検出した場合に、前記特定の障害が回復したか否かを検知する、
請求項6記載の情報処理システム。 - 前記障害回復検知プログラムは、前記記憶システムのリソースをオンラインにすることを検出した場合に、前記特定の障害が回復したか否かを検知する、
請求項6記載の情報処理システム。 - 情報発行部と中間情報処理部とリソース部とを備えるシステムにおいて行われる情報処理方法であって、
情報発行部が、情報を発行するステップと、
中間情報処理部が、前記発行された情報を受信して出力するステップと、
前記出力された情報を受信し、障害記憶域に障害データが記憶されているか否かを判断し、前記障害データが記憶されていない場合、前記出力された情報を前記リソース部へ出力するステップと、
前記リソース部が、前記出力された情報を受信し、前記受信した情報を正常に処理できない場合に異常を表す処理結果データを出力するステップと、
前記出力された処理結果データを受信し、前記受信した制御結果データが異常を表していれば、障害データを前記障害記憶域に格納し、異常を前記中間情報処理部に出力するステップと、
前記中間情報処理部が、前記情報の出力に応答して異常を受信した場合、異常を前記情報発行部に知らせる前に、前記出力した情報を再出力するステップと、
前記出力された情報を受信し、前記障害記憶域に障害データが記憶されているか否かを判断し、前記障害データが記憶されている場合、前記情報の受信に応答して異常を前記中間情報処理部に通知するステップと、
前記中間情報処理部が、前記再出力に応答して異常を受信した場合、異常を前記情報発行部に知らせるステップと、
前記情報発行部が、異常を受信し、受信した異常に応答した処理を実行するステップと
を有する情報処理方法。 - 情報を発行する情報発行プログラムによって発行された情報を受信して出力する中間処理プログラムから出力された情報を受信するステップと、
記憶域に障害データが記憶されているか否かを判断するステップと、
前記判断の結果、前記障害データが記憶されていない場合、前記受信した情報を宛先に出力するステップと、
前記判断の結果、前記障害データが記憶されている場合、前記情報の受信に応答して異常を前記中間処理プログラムに通知するステップと
をコンピュータに実行させるためのコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体。 - リソース部と通信する情報処理システムにおいて、
特定の障害に関するデータである障害データを記憶する障害記憶域と、
情報を発行する情報発行部と、
前記情報発行部によって発行された情報を受信して出力し、前記情報の出力に応答して異常を受信した場合、異常を前記情報発行部に知らせる前に、少なくとも一回は前記出力した情報を再出力し、前記少なくとも一回の再出力を行っても異常を受信した場合、異常を前記情報発行部に知らせる中間情報処理部と、
前記中間情報処理部から発行された情報を受信し、前記障害記憶域に障害データが記憶されているか否かを判断し、前記障害データが記憶されていない場合、前記受信した情報を前記リソース部へ出力し、前記障害データが記憶されている場合、前記情報の受信に応答して異常を前記中間情報処理部に通知する情報フィルタ部と
を含んでいる、
情報処理システム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004208340A JP2006031335A (ja) | 2004-07-15 | 2004-07-15 | 情報処理システム及び方法 |
US10/934,729 US7359833B2 (en) | 2004-07-15 | 2004-09-07 | Information processing system and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004208340A JP2006031335A (ja) | 2004-07-15 | 2004-07-15 | 情報処理システム及び方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006031335A true JP2006031335A (ja) | 2006-02-02 |
Family
ID=35600541
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004208340A Withdrawn JP2006031335A (ja) | 2004-07-15 | 2004-07-15 | 情報処理システム及び方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7359833B2 (ja) |
JP (1) | JP2006031335A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009251756A (ja) * | 2008-04-02 | 2009-10-29 | Nec Corp | クライアント装置、分散ファイルシステム、共有リソース多重化方法およびプログラム |
JP2010514031A (ja) * | 2006-12-20 | 2010-04-30 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データ・コピーのシステム、装置、方法、およびプログラム |
JP2015141589A (ja) * | 2014-01-29 | 2015-08-03 | Necプラットフォームズ株式会社 | サーバ装置、サーバシステムおよび障害対策方法 |
JP2017182385A (ja) * | 2016-03-30 | 2017-10-05 | 日本電気株式会社 | 情報処理装置、情報処理方法、プログラム |
US10635514B2 (en) | 2017-09-06 | 2020-04-28 | Toshiba Memory Corporation | Storage device, host system, and information processing system |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7793042B2 (en) * | 2007-01-05 | 2010-09-07 | Dell Products, Lp | System, method, and module for reducing power states for storage devices and associated logical volumes |
US8209417B2 (en) * | 2007-03-08 | 2012-06-26 | Oracle International Corporation | Dynamic resource profiles for clusterware-managed resources |
US9489275B2 (en) | 2014-10-02 | 2016-11-08 | Netapp, Inc. | Techniques for error handling in parallel splitting of storage commands |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5544347A (en) | 1990-09-24 | 1996-08-06 | Emc Corporation | Data storage system controlled remote data mirroring with respectively maintained data indices |
US5968182A (en) | 1997-05-12 | 1999-10-19 | International Business Machines Corporation | Method and means for utilizing device long busy response for resolving detected anomalies at the lowest level in a hierarchical, demand/response storage management subsystem |
US6279032B1 (en) | 1997-11-03 | 2001-08-21 | Microsoft Corporation | Method and system for quorum resource arbitration in a server cluster |
US6401120B1 (en) * | 1999-03-26 | 2002-06-04 | Microsoft Corporation | Method and system for consistent cluster operational data in a server cluster using a quorum of replicas |
US6453430B1 (en) | 1999-05-06 | 2002-09-17 | Cisco Technology, Inc. | Apparatus and methods for controlling restart conditions of a faulted process |
JP2001209561A (ja) * | 2000-01-27 | 2001-08-03 | Mitsubishi Electric Corp | 異常処理方式及び異常処理方法 |
US6772231B2 (en) | 2000-06-02 | 2004-08-03 | Hewlett-Packard Development Company, L.P. | Structure and process for distributing SCSI LUN semantics across parallel distributed components |
US6854071B2 (en) | 2001-05-14 | 2005-02-08 | International Business Machines Corporation | Method and apparatus for providing write recovery of faulty data in a non-redundant raid system |
JP2003076592A (ja) | 2001-09-04 | 2003-03-14 | Hitachi Ltd | データ格納システム |
JP2003114811A (ja) * | 2001-10-05 | 2003-04-18 | Nec Corp | 自動障害復旧方法及びシステム並びに装置とプログラム |
JP4255366B2 (ja) * | 2003-11-28 | 2009-04-15 | 富士通株式会社 | ネットワーク監視プログラム、ネットワーク監視方法、およびネットワーク監視装置 |
-
2004
- 2004-07-15 JP JP2004208340A patent/JP2006031335A/ja not_active Withdrawn
- 2004-09-07 US US10/934,729 patent/US7359833B2/en not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010514031A (ja) * | 2006-12-20 | 2010-04-30 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データ・コピーのシステム、装置、方法、およびプログラム |
JP2009251756A (ja) * | 2008-04-02 | 2009-10-29 | Nec Corp | クライアント装置、分散ファイルシステム、共有リソース多重化方法およびプログラム |
JP2015141589A (ja) * | 2014-01-29 | 2015-08-03 | Necプラットフォームズ株式会社 | サーバ装置、サーバシステムおよび障害対策方法 |
JP2017182385A (ja) * | 2016-03-30 | 2017-10-05 | 日本電気株式会社 | 情報処理装置、情報処理方法、プログラム |
US10635514B2 (en) | 2017-09-06 | 2020-04-28 | Toshiba Memory Corporation | Storage device, host system, and information processing system |
Also Published As
Publication number | Publication date |
---|---|
US7359833B2 (en) | 2008-04-15 |
US20060015296A1 (en) | 2006-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7441145B2 (en) | Failure monitoring for storage systems constituting multiple stages | |
US7472241B2 (en) | Storage system and backup method | |
US7290086B2 (en) | Method, apparatus and program storage device for providing asynchronous status messaging in a data storage system | |
US7587627B2 (en) | System and method for disaster recovery of data | |
JP3944449B2 (ja) | 計算機システム、磁気ディスク装置、および、ディスクキャッシュ制御方法 | |
JP4068798B2 (ja) | 記憶サブシステム及びi/oインタフェースの制御方法ならびに情報処理システム | |
US8433862B2 (en) | Storage system for adjusting asynchronous copy load based on cache activity rate | |
EP1632843A2 (en) | Data processing system and copy processing method thereof | |
US20020178336A1 (en) | Storage subsystem and its controlling method | |
JP2007072571A (ja) | 計算機システム及び管理計算機ならびにアクセスパス管理方法 | |
JP2005326935A (ja) | 仮想化ストレージを備える計算機システムの管理サーバおよび障害回避復旧方法 | |
JP2004220216A (ja) | San/nas統合型ストレージ装置 | |
JP2005165618A (ja) | ストレージシステムの制御方法、ストレージシステム、及び記憶装置 | |
US20100275219A1 (en) | Scsi persistent reserve management | |
JP2007188341A (ja) | 記憶デバイス制御装置 | |
EP1901167B1 (en) | Storage system performing remote copying | |
US8095820B2 (en) | Storage system and control methods for the same | |
US20150161018A1 (en) | Retrieving diagnostics information in an n-way clustered raid subsystem | |
US20090228672A1 (en) | Remote copy system and check method | |
EP2569921B1 (en) | System and method for providing reliable storage | |
JP2006031335A (ja) | 情報処理システム及び方法 | |
JP6461347B2 (ja) | ストレージシステム、及び、記憶制御方法 | |
JP2000132413A (ja) | エラーリトライ方法、エラーリトライシステム及びその記録媒体 | |
US9026849B2 (en) | System and method for providing reliable storage | |
JP2006344090A (ja) | Sanディザスタリカバリシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20071002 |