(57)【要約】  【課題】ホットスタンバイシステムにおける系切替え時の共有ディスクの整合性を保障する。  【解決手段】現用系と待機系で共有ディスクを共用するホットスタンバイシステムにおいて、現用系から共有ディスクへの書き込みＩ／Ｏ要求が発生すると、このＩ／Ｏ処理を行う前処理としてＩ／Ｏ処理開始をメモリ等に記録し、このＩ／Ｏ処理が終了した時に、先に記録したＩ／Ｏ処理開始の記録をメモリから削除する。現用系で障害が発生した時、現用系はＩ／Ｏ処理開始の記録を待機系に送信する。待機系はＩ／Ｏ処理開始の記録を検証して、Ｉ／Ｏ処理の対象となったディスクに対して復旧処理を実行する。  【選択図】  図１
2006012004.tif 000002
【特許請求の範囲】
【請求項１】
現用系計算機と待機系計算機でストレージを共有するホットスタンバイシステムにおける系の切替え制御方法において、
該現用系計算機から該ストレージに対する書き込みＩ／Ｏ要求が発生した場合に、処理中の該Ｉ／Ｏ要求に関する情報をメモリにＩ／Ｏ記録として記録するステップと、
該現用系計算機で障害が発生した場合に、該メモリに保持された該Ｉ／Ｏ記録を該待機系計算機へ送信するステップと、
該待機系計算機で、該現用系計算機から送信された該Ｉ／Ｏ記録を受信するステップと、
該待機系計算機において、該受信されたＩ／Ｏ記録を検証するステップと、
該検証の結果、処理中の該Ｉ／Ｏ要求が存在した場合、該ストレージに対する復旧処理を実施するステップと、
を含むことを特徴とする系の切替え制御方法。
【請求項２】
該現用系計算機において、該Ｉ／Ｏ要求の処理が完了した場合に、該メモリから対応する該Ｉ／Ｏ記録を削除するステップを更に含むことを特徴とする請求項１の系の切替え制御方法。
【請求項３】
該ストレージは、夫々固有の識別情報が付与された、論理的に定義された１又は複数の論理ボリュームを有しており、
前記Ｉ／O記録として、アクセス対象となる該論理ボリュームの識別情報と、該論理ボリュームに対するＩ／O要求のうち処理中のＩ／Ｏ要求をカウントする情報を、該メモリに格納することを特徴とする請求項１又は２の系の切替え制御方法。
【請求項４】
前記Ｉ／Ｏ記録は、該Ｉ／Ｏ要求毎にエントリを有するテーブル形式で該メモリに格納され、該現用系計算機から該待機系計算機へはネットワークを介して該テーブルの情報が送信されることを特徴とする請求項１乃至３のいずれかの系の切替え制御方法。
【請求項５】
該待機系計算機は、受信された該テーブルから取得可能なエントリを取得して、該エントリの該カウント情報が所定の値かを判定し、所定の値である場合には、復旧プログラムを実行せず、所定の値で無い場合には、該エントリに対応する前記論理ボリュームには中断された書き込みＩ／Ｏが存在し、該論理ボリュームの内容が不整合であると見なして、該論理ボリュームに対して復旧プログラムを実行することを特徴とする請求項４の系の切替え制御方法。
【請求項６】
現用系計算機と待機系計算機でストレージを共有するホットスタンバイシステムにおける系の切替え制御方法において、
該現用系計算機から該ストレージに対する書き込みＩ／Ｏ要求が発生した場合に、該Ｉ／Ｏ要求の前処理として、該待機系計算機にＩ／Ｏ開始の通知を送信するステップと、
該待機系計算機で、該Ｉ／Ｏ開始の通知を受信し、Ｉ／Ｏ処理中を示す情報をメモリに記録するステップと、
該現用系計算機で、該Ｉ／Ｏ要求が完了した時、Ｉ／Ｏ後処理として該待機系計算機にＩ／Ｏ完了の通知を送信するステップと、
該現用系計算機で障害が発生した場合に、該メモリに記録された該Ｉ／Ｏ処理中を示す情報を検証するステップと、
該検証の結果、処理中の書き込みＩ／Ｏ要求が存在する場合、該ストレージに対する復旧処理を実施するステップと、
を含むことを特徴とする系の切替え制御方法。
【請求項７】
該Ｉ／Ｏ開始の通知および該Ｉ／Ｏ完了の通知は、ネットワークを介して該現用系計算機から該待機系計算機に送信されることを特徴とする請求項６の系の切替え制御方法。
【請求項８】
現用系計算機と待機系計算機でストレージを共有するホットスタンバイシステムにおける系の切替え制御方法において、
該現用系計算機から該ストレージに対する書き込みＩ／Ｏ要求が発生した時、該Ｉ／Ｏ要求の書き込み処理中であることを示す情報を該ストレージに記録するステップと、
該現用系計算機で障害が発生した場合に、該待機系計算機で該ストレージに記録された情報を参照して検証するステップと、
該情報の検証の結果、書き込み処理中である場合、該ストレージに対する復旧処理を実施するステップと、
を含むことを特徴とする系の切替え制御方法。
【請求項９】
該現用系計算機において該Ｉ／Ｏ要求の処理が完了した時、該メモリ又は該ストレージに記録された該該情報を削除するステップを含む、請求項６又は８の系の切替え制御方法。
【請求項１０】
現用系計算機と待機系計算機からネットワークを介してストレージを共有するホットスタンバイシステムにおいて、
該ストレージは１又は複数のボリュームを有し、
該現用系計算機及び待機系計算機は、それぞれメモリ、プロセッサ、および該ストレージの制御装置を有し、かつ、
各該メモリは、
業務の処理のために該ストレージへＩ／Ｏ要求を発行するアプリケーションプログラムと、自系の計算機の障害を検出し、ホットスタンバイ切替えを実行する系切替え制御プログラムと、該ストレージを構成するボリュームに対して、整合性のチェックを行い、チェックの結果に応じて該ボリュームに対する復旧プログラムを実行する整合性検査プログラムと、該ストレージを構成するボリュームに対するＩ／Ｏ要求を監視するアクセス要求監視プログラムと、アプリケーションプログラムが該ストレージに対して発行したＩ／Ｏ要求を保持するＩ／Ｏ記録と、を記憶し、
該現用系計算機の該プロセッサは、
該アプリケーションプログラムから該ストレージのあるボリュームに対する書き込みＩ／Ｏ要求が発生した時、該アクセス要求監視プログラムの実行の下、処理中の該Ｉ／Ｏ要求に関する情報を該メモリのＩ／Ｏ記録に記録し、かつ該現用系計算機で障害を監視し、障害が発生した場合に、該メモリに保持された該Ｉ／Ｏ記録を該待機系計算機の系切替え制御プログラムへ送信する処理を行い、
該待機系計算機の該プロセッサは、
該現用系計算機から送信された該Ｉ／Ｏ記録を受信して、該整合性検査プログラムの実行の下、該Ｉ／Ｏ記録を検証し、該検証の結果、処理中の該Ｉ／Ｏ要求が存在した場合、該ストレージの該ボリュームに対する復旧処理を実施する処理を行うこと、
を特徴とするホットスタンバイシステム。
【請求項１１】
アクセス対象となる該ボリュームの識別情報と、該ボリュームに対するＩ／O要求のうち処理中のＩ／Ｏ要求をカウントする情報を、該Ｉ／Ｏ要求ごとのエントリとして構成するテーブルを、前記Ｉ／Ｏ記録として該メモリに格納し、
該プロセッサは、該Ｉ／Ｏ要求の処理が完了した時に、該テーブルから該Ｉ／Ｏ要求に対応するエントリを削除する処理を行うことを特徴とする請求項１０のホットスタンバイシステム。
【請求項１２】
現用系計算機と待機系計算機からネットワークを介してストレージを共有するホットスタンバイシステムにおいて、
該ストレージは１又は複数のボリュームを有し、
該現用系計算機及び待機系計算機は、それぞれメモリ、プロセッサ、および該ストレージの制御装置を有し、かつ、
各該メモリは、
業務の処理のために該ストレージに対してＩ／Ｏ要求を発行するアプリケーションプログラムと、自系の計算機の障害を検出し、ホットスタンバイ切替えを実行する系切替え制御プログラムと、該ストレージを構成するボリュームに対して、整合性のチェックを行い、チェックの結果に応じて該ボリュームに対する復旧プログラムを実行する整合性検査プログラムと、該ストレージを構成するボリュームに対するＩ／Ｏ要求を監視するアクセス要求監視プログラムと、アプリケーションプログラムが該ストレージに対して発行したＩ／Ｏ要求を保持するＩ／Ｏ記録と、を記憶し、
該現用系計算機の該プロセッサは、
該アプリケーションプログラムから該ストレージのあるボリュームに対する書き込みＩ／Ｏ要求が発生した場合に、該Ｉ／Ｏ要求の前処理として、該待機系計算機にＩ／Ｏ開始の通知を送信し、該Ｉ／Ｏ要求が完了した時、Ｉ／Ｏ後処理として該待機系計算機に該Ｉ／Ｏ完了の通知を送信し、かつ、該現用系計算機で障害を監視し、障害が発生した場合に、該待機系計算機の系切替え制御プログラムへ通知する処理を行い、
該待機系計算機の該プロセッサは、
該現用系計算機から送信された該Ｉ／Ｏ開始の通知を受信し、Ｉ／Ｏ処理中を示す情報を該メモリに記憶し、
該現用系計算機からの該通知により該系切替え制御プログラムを起動し、かつ該整合性検査プログラムの実行の下、該メモリに記録された該Ｉ／Ｏ処理中を示す情報を検証し、検証の結果、処理中の書き込みＩ／Ｏ要求が存在する場合、該ストレージの該ボリュームに対する復旧処理を実施する処理を行うこと、
を特徴とするホットスタンバイシステム。
【請求項１３】
現用系計算機と待機系計算機からネットワークを介してストレージを共有するホットスタンバイシステムにおいて、
該ストレージは１又は複数のボリュームを有し、
該現用系計算機及び待機系計算機は、それぞれメモリ、プロセッサ、および該ストレージの制御装置を有し、かつ、
各該メモリは、
業務の処理のために該ストレージへＩ／Ｏ要求を発行するアプリケーションプログラムと、自系の計算機の障害を検出し、ホットスタンバイ切替えを実行する系切替え制御プログラムと、該ストレージを構成するボリュームに対して、整合性のチェックを行い、チェックの結果に応じて該ボリュームに対する復旧プログラムを実行する整合性検査プログラムと、を記憶し、
該現用系計算機の該プロセッサは、該アプリケーションプログラムから該ストレージに対する書き込みＩ／Ｏ要求が発生した時、該ストレージへ該Ｉ／Ｏ要求の書き込み処理中であることを示す情報を送信する処理を行い、かつ、該現用系計算機で障害を監視し、障害が発生した場合に、該待機系計算機の系切替え制御プログラムへ通知する処理を行い、
該待機系計算機の該プロセッサは、該ストレージに保持されている該Ｉ／Ｏ要求の書き込み処理中であることを示す情報を参照して検証し、検証の結果、書き込み処理中である場合に、該ストレージの該ボリュームに対する復旧処理を実施する処理を行うこと、
を特徴とするホットスタンバイシステム。
【請求項１４】
前記アクセス要求監視プログラムは、
指定された論理ボリュームをアクセス監視対象に追加するアクセス監視対象論理ボリュームの登録プログラムと、
指定された論理ボリュームをアクセス監視対象より除外するアクセス監視対象論理ボリュームの除外プログラムと、
プログラムの外部または内部からの問い合わせに対して、論理ボリュームの現在のアクセス監視状態を通知するアクセス監視状態の取得プログラムと、
該アクセス要求が該ストレージに対する書き込み処理要求である場合に、該要求を該メモリに記憶するアクセス要求記録プログラムと、
該メモリに記憶された情報を、ネットワークを通じて該待機系計算機へ送信するアクセス記録の送信プログラムと、
を含むことを特徴とする請求項１０又は１２のホットスタンバイシステム。
【請求項１５】
現用系計算機と待機系計算機でストレージを共有するホットスタンバイシステムにおいて、
該現用系計算機は、
該ストレージに対する書き込みＩ／Ｏ要求が発生した場合に、処理中の該Ｉ／Ｏ要求に関する情報を記憶部にＩ／Ｏ記録として記録する処理と、該現用系計算機で発生する障害を監視し、障害が発生した場合に、該待機系計算機に通知する処理と、を行い、
該待機系計算機は、
該現用系計算機から障害発生の通知を受けた場合、該記憶部から取得された該Ｉ／Ｏ記録を検証する処理と、該検証の結果、処理中の該Ｉ／Ｏ要求が存在する場合、該ストレージに対する復旧のための処理と、
を行うことを特徴とするホットスタンバイシステム。
【請求項１６】
前記記憶部は、該現用系計算機又は該待機系計算機に備えられたメモリ、又は前記ストレージであることを特徴とする請求項１５のホットスタンバイシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホットスタンバイシステムに係り、特に現用系及び待機系からアクセス可能な共有ディスクを有するホットスタンバイシステムにおける共有ディスクの整合性の検査、及び系の切替え制御に関するものである。
【背景技術】
【０００２】
近年、オンライントランザクション処理の分野では、可用性向上のために、現用系及び待機系からアクセス可能な共有ディスクを有するホットスタンバイ構成のシステムが適用されている。
この種のホットスタンバイシステムに関して、例えば、特許文献１（特開平１０−２８９１２２号公報）には、現用系と待機系にそれぞれ１台のディスクを接続し、通常運用時は現用系でデータ更新が発生した場合、ネットワークを通じて待機系に更新データを送信し、待機系側のディスクに対しても同様のデータ更新を行う旨が開示されている。そして、現用系で障害が発生した際は、待機系が新しく現用系として業務を引き継ぎ、従前の現用系が以後待機系として機能し、障害から復旧した後、引継ぎ後の更新データを新らたな現用系から新たな待機系へ送り、共有ディスクの同期を行っている。この従来技術によれば、待機系に切替えた時点で、両ディスク内のデータの同期を改めて取らずに業務の引継ぎ処理を行えるため、業務再開までの時間を短縮できる。
【０００３】
【特許文献１】特開平１０−２８９１２２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ソフトウェアによるミラーリング制御は、ミラー間の同期化処理もソフトウェアで行うため、障害発生により同期化処理が完了せずミラー間に不整合が発生することがある。しかし、上記従来技術は、待機系に処理を引継いだ時点で整合性のチェックを行わないで高速化を図っている。このため、ミラー間に不整合が発生している可能性があるにも拘わらず、それを検出する手段がないため、不整合な状態にデータを上書きしてしまう恐れがある。
【０００５】
本発明の目的は、ホットスタンバイシステムにおいて現用系計算機で障害が発生した場合、待機系計算機側で共有ディスクの整合性を保ちつつ、処理を高速に引継ぐことにある。
【課題を解決するための手段】
【０００６】
本発明は、現用系計算機と待機系計算機で、共有ディスクのようなストレージを共有するホットスタンバイシステムにおいて、現用系計算機は、ストレージに対する書き込みＩ／Ｏ要求が発生した場合に、処理中のＩ／Ｏ要求に関する情報を記憶部、例えばメモリ又は上記ストレージの一部に、Ｉ／Ｏ記録として記録する処理と、現用系計算機で発生する障害を監視し、障害が発生した場合に、待機系計算機に通知する処理とを行い、待機系計算機は、現用系計算機から障害発生の通知を受けた場合、記憶部から取得されたＩ／Ｏ記録を検証する処理と、検証の結果処理中の該Ｉ／Ｏ要求が存在する場合、ストレージに対する復旧のための処理とを行うホットスタンバイシステムである。
【０００７】
好ましい第一の例による系の切替え制御方法によれば、現用系計算機では、ストレージに対する書き込みＩ／Ｏ要求が発生した場合に、処理中のＩ／Ｏ要求に関する情報をメモリにＩ／Ｏ記録として記録し、Ｉ／Ｏ要求の処理が完了した場合に、メモリから対応するＩ／Ｏ記録を削除すると共に、現用系計算機で障害が発生した場合に、メモリに保持されたＩ／Ｏ記録を待機系計算機へ送信し、待機系計算機では、現用系計算機から送信されたＩ／Ｏ記録を受信し、受信されたＩ／Ｏ記録を検証するステップと、検証の結果、処理中のＩ／Ｏ要求が存在した場合、ストレージに対する復旧処理を実施するステップとを有する。
【０００８】
好ましい第二の例による系の切替え制御方法によれば、現用系計算機は、ストレージに対する書き込みＩ／Ｏ要求が発生した場合に、Ｉ／Ｏ要求の前処理として、待機系計算機にＩ／Ｏ開始の通知を送信し、待機系計算機は、このＩ／Ｏ開始の通知を受信して、Ｉ／Ｏ処理中を示す情報をメモリに記録し、現用系計算機でＩ／Ｏ要求が完了した時、Ｉ／Ｏ後処理として待機系計算機へＩ／Ｏ完了の通知を送信し、かつ、現用系計算機で障害が発生した場合に、メモリに記録されたＩ／Ｏ処理中を示す情報を検証し、検証の結果、処理中の書き込みＩ／Ｏ要求が存在する場合、ストレージに対する復旧処理を実施する処理を行うものである。
【０００９】
好ましい第三の例による系の切替え制御方法によれば、現用系計算機でストレージに対する書き込みＩ／Ｏ要求が発生した時、Ｉ／Ｏ要求の書き込み処理中であることを示す情報をストレージの一部に記録し、現用系計算機で障害が発生した時に、待機系計算機でストレージの一部に記録された情報を参照して検証し、この検証の結果、Ｉ／Ｏ要求の書き込み処理中である場合、ストレージに対する復旧処理を実施する処理を行うものである。
【００１０】
好ましい例では、ストレージは、夫々固有の識別情報が付与された、論理的に定義された１又は複数の論理ボリュームを有しており、前記Ｉ／O記録として、アクセス対象となる論理ボリュームの識別情報と、論理ボリュームに対するＩ／O要求のうち処理中のＩ／Ｏ要求をカウントする情報をメモリ又はストレージの一部に格納する。
一例では、前記Ｉ／Ｏ記録は、Ｉ／Ｏ要求毎にエントリを有するテーブル形式で格納され、現用系計算機から待機系計算機へはネットワークを介してテーブルの情報が送信される。
【発明の効果】
【００１１】
本発明によれば、共有ディスクへの書き込みＩ／Ｏ処理が障害発生により中断してディスクに不整合の疑いがある場合には、待機系計算機がこれを検出して診断処理や修復処理を行い、その後の処理を引き継ぐことができる。さらに、待機系計算機における診断や修復の対象となるディスクを不整合の疑いがあるディスクに絞るため、不要な処理を省略でき、復旧時間を短縮できる。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照して本発明に係るいくつかの実施形態について説明する。
【００１３】
・第一の実施形態
まず、図１乃至図１４を参照して第一の実施例について説明する。
【００１４】
図１は、第一の実施形態におけるホットスタンバイシステムの概略構成図である。
このシステムが適用される計算機システムは、現用系計算機（以下、単に現用系という）１０００、待機系計算機（以下、単に待機系という）２０００、両系によって共通的にアクセスされる共有ディスク３０００、およびこれらを接続するネットワーク４０００から構成される。
現用系１０００と待機系２０００は、同様の構成を成し、夫々、メモリ１４００、２４００、プロセッサ１４５０、２４５０、入出力プロセッサ（以下、ＩＯＰ：Input Output Processor）１５００、２５００、通信アダプタ１５５０、２５５０、およびディスク制御装置１６００、２６００を備えて構成される。
【００１５】
共有ディスク３０００は、１台あるいは複数台の論理ボリュームから構成される。各論理ボリュームは、それぞれ一意に識別可能な論理ボリュームＩＤを持つ。
ネットワーク４０００は、現用系１０００および待機系２０００を所定のプロトコルに基づき接続する。なお、図１の計算機システムには、通常、現用系１０００や待機系２０００以外の第三の計算機や電子機器が接続されることがあるが、図示では省略されている。
【００１６】
現用系１０００と待機系２０００のメモリ１４００、２４００に格納されるソフトウェアとしては、アプリケーションプログラム１０５０、２０５０、系切替え制御プログラム１１００、２１００、整合性検査プログラム１１５０、２１５０、ＯＳ（Operating System）１２００、２２００、アクセス要求監視プログラム１２５０、２２５０、アクセス要求管理テーブル１３００、２３００、およびデバイスドライバ１３５０、２３５０が含まれる。
アプリケーションプログラム１０５０、２０５０は、１つまたは複数存在し、トランザクション処理などの業務を行い、共有ディスク３０００に対してＩ／Ｏを発行する。系切替え制御プログラム１１００、２１００は、自系の障害を検出し、ホットスタンバイ切替えを実行するプログラムである。現用系、待機系それぞれで動作している系切替え制御プログラム１１００、２１００は、現用系で障害が発生した場合これを検出し、両系で連携してホットスタンバイ切替えを実行する。
【００１７】
整合性検査プログラム１１５０、２１５０は、共有ディスクを構成する論理ボリュームに対し、整合性のチェックを行う。チェックの結果、不整合の疑いがあるボリュームに関しては復旧プログラムを実行する。ＯＳ１２００、２２００は、アプリケーションプログラム１０５０、２０５０から発行される論理ボリュームへのＩ／Ｏ要求に応じて、アクセス要求監視プログラム１２５０、２２５０またはデバイスドライバ１３５０、２３５０にＩ／Ｏ処理を要求する。アクセス要求監視プログラム１２５０、２２５０は、共有ディスク３０００を構成する論理ボリュームに対するＩ／Ｏ要求を監視し、要求が発行された場合はそれをアクセス要求管理テーブル１３００、２３００に記録する。
【００１８】
アクセス要求管理テーブル１３００、２３００は、アプリケーションプログラム１０５０、２０５０が共有ディスク３０００に対して発行したＩ／Ｏ要求を登録し管理する。デバイスドライバ１３５０、２３５０は、ドライバ外部からの要求に応じてＩ／Ｏ処理を実行する。
【００１９】
図２は，第一の実施形態における共有ディスク３０００の構成図である。
共有ディスク３０００は，１つまたは複数の論理ボリューム３１００〜３３００から構成される。ここで，論理ボリュームとは，物理ボリューム装置の一部または全部の領域から構成された論理的なディスク装置である。物理ボリュームとは，物理的なディスク装置またはOSから物理的なディスク装置として認識可能な記憶装置である。第一の実施形態における論理ディスクは，二つの物理ボリューム３４００，３５００を二重化して，それぞれ同一のデータを書き込むミラーリング処理を施している。
【００２０】
以下の説明では、待機系２０００を構成する各部２０５０〜２６００の構成は、現用系１０００の各部１０５０〜１６００と同様であるため、現用系の説明をもって、待機系の説明は省略する。
【００２１】
図３は、第一の実施形態におけるＯＳ１２００およびデバイスドライバ１３５０の構成を示す図である。
ＯＳ１２００は、デバイススイッチテーブル１２１０、Ｉ／Ｏ要求処理プログラム１２２０、障害検出プログラム１２３０、デバイススイッチテーブル書き換えプログラム１２４０から構成される。デバイスドライバ１３５０は、書き込み処理プログラム１３６０、ダンプ出力プログラム１３７０から構成される。なお、上記以外にもＯＳやデバイスドライバとして必要なプログラム部分は存在するが、本実施の形態の説明に直接関係が無いため、説明を省略する。
【００２２】
デバイススイッチテーブル１２１０は、共有ディスク３０００を構成する各論理ボリュームが持つ論理ボリュームＩＤと、論理ボリュームに対する操作の種類書き込み、障害発生時のダンプ出力などの組み合わせに対して、処理を実施するプログラムのアドレスを登録するテーブルである。操作の種類に関しては、本実施形態では操作の種類として書き込み処理とダンプ出力処理以外に関する説明を省略しているが、これら以外の操作があってもよい。図３では、論理ボリュームＩＤ＝０に対する書き込み処理に対応するデバイススイッチテーブルエントリ１２１１に、デバイスドライバ１３５０の書き込み処理プログラム１３６０のアドレスが登録されており、同じく論理ボリュームＩＤ＝０に対するダンプ出力処理に対応するデバイススイッチテーブルエントリ１２１２に、デバイスドライバ１３５０のダンプ出力プログラム１３７０のアドレスが登録されている。
【００２３】
Ｉ／Ｏ要求処理プログラム１２２０は、アプリケーションプログラム１０５０からのＩ／Ｏ要求によって呼び出され、Ｉ／Ｏ対象に指定された論理ボリュームＩＤと操作の種類を元に、デバイススイッチテーブル１２１０に登録されたアドレスのプログラムを呼び出す。障害検出プログラム１２３０は、現用系１０００において処理を継続できなくなる重度の障害が発生すると、これを検出する。そして、予め登録された論理ボリュームについて、対応するデバイススイッチテーブルエントリ１２１２を参照し、登録されたアドレスのプログラムを呼び出す。デバイススイッチテーブル書き換えプログラム１２４０は、ＯＳ１２００の内部または外部プログラムからの要求によって呼び出され、デバイススイッチテーブル１２１０内のエントリを書き換える。
【００２４】
書き込み処理プログラム１３６０は，論理ボリュームへの書き込み要求に応じて，対応する物理ボリュームの領域に書き込む処理を行う。このとき，論理ボリュームにミラーリング処理が施されている場合は，多重化された物理ボリュームのそれぞれに同一の書き込み処理を行う。なお，本実施形態では，ミラーリング処理を書き込み処理プログラム１３６０が行っているが，書き込み処理プログラム１３６０以外にミラーリング処理を行うプログラムが存在してもよい。
【００２５】
ダンプ出力処理プログラム１３７０は，ＯＳ１２００に障害が発生し処理続行不能に陥った場合に呼び出され，メモリ１４００に記録されているデータをディスク装置に書き込む処理を行う。
【００２６】
図４は、第一の実施形態におけるアクセス要求監視プログラム１２５０の構成を示す図である。
アクセス要求監視プログラム１２５０は、アクセス監視対象論理ボリュームの登録プログラム１２５５、アクセス監視対象論理ボリュームの除外プログラム１２６０、アクセス監視状態の取得プログラム１２６５、アクセス要求記録プログラム１２７０、アクセス記録の送信プログラム１２７５、初期化処理プログラム１２８０から構成される。なお、アクセス監視対象論理ボリュームの除外プログラム１２６０およびアクセス監視状態の取得プログラム１２６５は、無くても良い。
【００２７】
アクセス監視対象論理ボリュームの登録プログラム１２５５は、指定された論理ボリュームをアクセス監視対象に追加する。追加された論理ボリュームは、アクセス要求記録プログラム１２７０によりアクセス要求を記録可能となる。なお、アクセス監視対象論理ボリュームの登録プログラム１２５５は、アプリケーションプログラム１０５０からシステムコールまたはユーザコマンドにより呼出される。
【００２８】
アクセス監視対象論理ボリュームの除外プログラム１２６０は、指定された論理ボリュームをアクセス監視対象より除外する。除外された論理ボリュームは、アクセス要求記録プログラム１２７０によるアクセス要求の記録が不可能となる。なお、アクセス監視対象論理ボリュームの除外プログラム１２６０は、アプリケーションプログラム１０５０からシステムコールまたはユーザコマンドにより呼出される。
【００２９】
アクセス監視状態の取得プログラム１２６５は、プログラム外部または内部からの問い合わせに応じ、論理ボリュームの現在のアクセス監視状態を返す。アクセス監視状態とは、アクセス監視対象として登録されているか否か、現在のアクセス状況などの情報を表す。アクセス監視状態の取得プログラム１２６５は、アクセス要求監視プログラム１２５０の内部または、アプリケーションプログラム１０５０からシステムコールまたはユーザコマンドにより呼び出される。
【００３０】
アクセス要求記録プログラム１２７０は、アクセス監視対象論理ボリュームへのアクセスの際にＩ／Ｏ要求処理プログラム１２２０から呼び出される。アクセス監視状態の判定プログラム１２７０は、アクセス要求が共有ディスク３０００に対する書き込み処理要求である場合に、その要求をアクセス要求管理テーブル１３００に記録する。
【００３１】
アクセス記録の送信プログラム１２７５は、アクセス要求管理テーブル１３００に記録された情報を、ネットワーク４０００を通じて待機系２０００の整合性検査プログラム２１５０に送信する。アクセス要求記録の送信プログラム１２７５は、障害発生時に系切替え制御プログラム１１００または障害検出プログラム１２３０から呼び出される。
【００３２】
初期化処理プログラム１２８０は、ダンプ出力時にアクセス記録の送信プログラム１２７５が呼び出されるように、デバイススイッチテーブル１２１０を書き換える処理を行う。初期化処理プログラム１２８０は、システム立ち上げ時に系切替え制御プログラム１１００から呼び出される。
【００３３】
図５は、第一の実施形態におけるアクセス要求管理テーブル１３００を構成するアクセス要求管理テーブルエントリ１３１０の構成図である。
アクセス要求管理テーブルエントリ１３１０は、アクセス対象の論理ボリュームを識別する論理ボリュームＩＤ１３２０、共有ディスクへの書き込み要求の中で処理中のものをカウントする書き込み要求カウンタ１３３０から構成される。アクセス要求管理テーブルエントリ１３１０は、アクセス要求記録プログラム１２７０により更新される。なお、図５において、斜線部分は他のフィールドを格納してもよい。
【００３４】
以下、図６〜図１１を参照して、第一の実施形態におけるアクセス要求監視プログラム１２５０を構成する各プログラムの処理の流れを説明する。
図６は、第一の実施形態におけるアクセス監視対象論理ボリュームの登録プログラム１２５５の処理の流れを示す図である。
アクセス監視対象論理ボリュームの登録プログラム１２５５は、現用系１０００および待機系２０００のシステム立ち上げ時にシステムコールまたはコマンドにより、登録対象の論理ボリュームＩＤをパラメータとして呼び出す。次に、デバイススイッチテーブル書き換えプログラム１２４０を呼び出し、登録対象の論理ボリュームへの書き込み処理に対応するデバイススイッチテーブルエントリ１２１１にアクセス要求記録プログラム１２７０を登録する。これにより、登録対象の論理ボリュームへの書き込みＩ／Ｏ要求が発生すると、アクセス要求記録プログラム１２７０が呼び出される（Ｓ５０００）。
【００３５】
次に、ステップＳ５０００で行ったデバイススイッチテーブルエントリ１２１１の書き換えが成功したかどうか判定する。ここで、この書き換え処理の結果は、書き換えを実施するプログラムからの戻り値として表現される。成功の戻り値が返っていればステップＳ５０３０へ進み、失敗の戻り値が返っていればステップＳ５０２０へ進む（Ｓ５０１０）。
【００３６】
ステップＳ５０１０で失敗の戻り値が返った場合、呼び出し元プログラムにデバイススイッチテーブル書き換え失敗を表す戻り値を返し、このプログラムの処理を終了する（Ｓ５０２０）。一方、ステップＳ５０１０で成功の戻り値が返った場合、アクセス要求管理テーブル１３００にアクセス要求管理テーブルエントリ１３１０を１つ追加する。この時、そのエントリの論理ボリュームＩＤ１３２０には登録対象論理ボリュームの論理ボリュームＩＤをセットし、書き込み要求カウンタ１３３０には「０」をセットする（Ｓ５０３０）。
最後に、処理が成功したことを表す戻り値を呼び出し元のプログラムに返し、このプログラムを終了する（Ｓ５０４０）。
【００３７】
図７は、第一の実施形態におけるアクセス監視対象論理ボリュームの除外プログラム１２６０の処理の流れを示す図である。
アクセス監視対象論理ボリュームの除外プログラム１２６０は、システムコールまたはコマンドにより、登録対象の論理ボリュームＩＤをパラメータとして呼び出される。
まず、パラメータとして渡された論理ボリュームＩＤに基づき、アクセス要求管理テーブル１３００から論理ボリュームＩＤに対応するアクセス要求管理テーブルエントリ１３１０を検索する（Ｓ５１００）。
【００３８】
この検索の結果、該当するエントリが見つかったかどうか判定する（Ｓ５１１０）。見つかった場合にはステップＳ５１３０に進み、見つからなかった場合にはステップＳ５１２０に進む。ステップＳ５１１０で、該当するエントリが見つからなかった場合、該当エントリ無しを表す戻り値を呼び出し元プログラムに返し、このプログラムの処理を終了する（Ｓ５１２０）。一方、該当するエントリが見つかった場合には、そのエントリの書き込み要求カウンタ１３３０が「０」であるかどうか判定する。「０」である場合はステップＳ５１５０に進み、「０」でない場合はステップＳ５１４０に進む（Ｓ５１３０）。
【００３９】
ステップＳ５１３０で、書き込み要求カウンタ１３３０が「０」でない場合、指定された論理ボリュームはＩ／Ｏ処理中である旨を表す戻り値を呼び出し元プログラムに返し、このプログラムの処理を終了する（Ｓ５１４０）。一方、書き込み要求カウンタ１３３０が「０」である場合、デバイススイッチテーブル書き換えプログラム１２４０を呼び出し、指定された論理ボリュームへの書き込み処理に対応するデバイススイッチテーブルエントリ１２１１に書き込み処理プログラム１３６０を登録する。これにより、その論理ボリュームへの書き込みＩ／Ｏ要求が発生すると、書き込み処理プログラム１３６０が呼び出される（Ｓ５１５０）。
【００４０】
次に、ステップＳ５１５０で行ったデバイススイッチテーブルエントリ１２１１の書き換えが成功したかどうか判定する（Ｓ５１６０）。ここで、この書き換え処理の結果は、書き換えを実施するプログラムからの戻り値として表現される。成功の戻り値が返っていればステップＳ５１８０へ進み、失敗の戻り値が返っていればステップＳ５１７０へ進む。ここで、失敗の戻り値が返った場合、デバイススイッチテーブル書き換え失敗を表す戻り値を呼び出し元プログラムに返し、このプログラムの処理を終了する（Ｓ５１７０）。一方、成功の戻り値が返った場合には、ステップＳ５１００で検索したアクセス要求管理テーブルエントリ１３１０をアクセス要求管理テーブル１３００から削除する（Ｓ５１８０）。
最後に、このプログラムが成功した旨を表す戻り値を呼び出し元プログラムに返し、このプログラムの処理を終了する（Ｓ５１９０）。
【００４１】
図８は、第一の実施形態におけるアクセス監視状態の取得プログラム１２６５の処理の流れを示す図である。
アクセス監視状態の取得プログラム１２６５は、取得対象の論理ボリュームＩＤをパラメータとして、システムコールまたはコマンドにより呼び出されるか、アクセス監視プログラム１２５０内の他のプログラムから内部的に呼び出される。なお、論理ボリュームＩＤの他にも、監視状態を示す情報を格納するバッファのアドレス等の追加パラメータを伴ってもよい。
【００４２】
まず、パラメータとして渡された論理ボリュームＩＤに基づき、アクセス要求管理テーブル１３００からその論理ボリュームＩＤに対応するアクセス要求管理テーブルエントリ１３１０を検索する（Ｓ５２００）。
次に、この検索の結果、該当するエントリが見つかったかどうか判定する（Ｓ５２１０）。該当するエントリが見つかった場合はステップＳ５２３０に進み、見つからなかった場合はステップＳ５１２０に進む。該当するエントリが見つからなかった場合、該当エントリ無しを表す戻り値を呼び出し元プログラムに返し、このプログラムの処理を終了する（Ｓ５２２０）。一方、該当するエントリが見つかった場合には、該当エントリの情報を呼び出し元に返す（Ｓ５２３０）。このとき、追加パラメータでバッファのアドレスを渡されていれば、そのバッファに格納してもよい。
次に、このプログラムの処理が成功した旨を表す戻り値を呼び出し元プログラムに返し、このプログラムの処理を終了する（Ｓ５２４０）。
【００４３】
図９は、第一の実施の形態におけるアクセス要求記録プログラム１２７０の処理の流れを示す図である。
アクセス要求の記録プログラム１２７０は、アクセス監視対象の論理ボリューム対しＩ／Ｏ要求が発生した場合に、Ｉ／Ｏ要求処理プログラム１２２０から論理ボリュームＩＤやＩ／Ｏに用いるデータなどをパラメータとして呼び出される。
【００４４】
まず、パラメータとして渡された論理ボリュームＩＤに基づき、アクセス要求管理テーブル１３００からその論理ボリュームＩＤに対応するアクセス要求管理テーブルエントリ１３１０を検索する（Ｓ５３００）。検索の結果、該当するエントリが見つかったかどうか判定する（Ｓ５３１０）。該当するエントリが見つかった場合はステップＳ５３２０に進み、見つからなかった場合にはステップＳ５３３０に進む。なお、このステップは無くても良い。
【００４５】
ステップＳ５３１０で該当するエントリが見つかった場合、ステップＳ５３００で検索したアクセス要求管理テーブルエントリ１３１０の書き込み要求カウンタ１３３０の値に「１」を加える（Ｓ５３２０）。
【００４６】
次に、書き込み処理プログラム１３６０を呼び出し、実際のＩ／Ｏ処理を実施する。このとき、Ｉ／Ｏ要求処理プログラム１２２０がこのプログラムに渡したパラメータをそのまま渡す。書き込み処理プログラム１３６０は、実際のＩ／Ｏを行い、Ｉ／Ｏ完了した時点でその処理を終了し戻ってくる（Ｓ５３３０）。このとき，対象の論理ボリュームに対応する物理ボリュームそれぞれに書き込みを実施する。
【００４７】
次に、ステップＳ５３００で実施した検索で該当するエントリがあるかどうか判定する（Ｓ５３４０）。該当するエントリがある場合はステップＳ５３５０に進み、無い場合にはステップＳ５３６０に進む。なお、このステップは必ずしも必要ない。
ステップＳ５３４０で、該当するエントリがある場合は、そのエントリの書き込み要求カウンタ１３３０の値を「１」減じる。この結果、書き込み要求カウンタ１３３０の値が「０」になれば、論理ボリュームへのＩ／Ｏ処理はすべて終了したことを意味する（Ｓ５３５０）。
最後に、デバイスドライバから返された戻り値を呼び出し元プログラムに返し、このプログラムの処理を終了する（Ｓ５３６０）。
【００４８】
図１０は、第一の実施の形態におけるアクセス記録の送信プログラム１２７５の処理の流れを示す図である。アクセス記録の送信プログラム１２７５は、障害発生を契機として、障害検出プログラム１２３０から呼び出される。
【００４９】
まず、このプログラム内部で用いる内部カウンタの値を「０」にセットする（Ｓ５４００）。次に、待機系２０００の系切替え制御プログラム２１００に対し、アクセス要求管理テーブル１３００の内容を、ネットワーク４０００を経由して送信する（Ｓ５４１０）。このとき、ＩＯＰ１５００を経由して、通信アダプタ１５５０を用いて通信を行う。なお、この処理は外部プログラムが行っても良い。次に、内部カウンタの値に「１」を加える（Ｓ５４２０）。
【００５０】
次に、内部カウンタの値が規定の値に達したかを判定する（Ｓ５４３０）。規定の値に達した場合はステップＳ５４４０に進み、達していない場合にはステップＳ５４１０に進む。
この判定で、内部カウンタの値が規定の値に達した場合には、ダンプ出力処理プログラム１３７０を呼び出す。ダンプ出力処理プログラム１３７０は、ダンプ出力処理を実施し、処理の結果を戻り値として返す（Ｓ５４４０）。ダンプ出力処理プログラム１３７０の戻り値を、このプログラムの呼び出し元プログラムに返し、このプログラムの処理を終了する（Ｓ５４５０）。
【００５１】
図１１は、第一の実施形態における初期化処理プログラム１２８０の処理の流れを示す図である。初期化処理プログラム１２８０は、システム立ち上げ時に系切替え制御プログラム１１００からダンプ出力対象となる論理ボリュームＩＤをパラメータとして呼び出される。なお、これ以外に追加パラメータがあってもよい。
【００５２】
まず、ＯＳ１２００のデバイススイッチテーブル書き換えプログラム１２４０を呼び出し、指定された論理ボリュームへのダンプ出力処理に対応するデバイススイッチテーブル１２１２にアクセス記録の送信プログラム１２７５のアドレスを登録する。これにより、障害が発生してその論理ボリュームへのダンプ出力要求が発生すると、障害検出プログラム１２３０はアクセス記録の送信プログラム１２７５を呼び出す（Ｓ５５００）。
【００５３】
次に、ステップＳ５５００の処理が成功したかどうか判定する（Ｓ５５１０）。成功した場合はステップＳ５５３０に進み、失敗した場合にはステップＳ５５２０へ進む。
即ち、ステップＳ５５１０で書き換えに失敗した場合は、デバイススイッチテーブル書き換えに失敗した旨を表す戻り値を呼び出し、元プログラムに返して、このプログラムの処理を終了する（Ｓ５５２０）。一方、書き換えに成功したと判定された場合には、このプログラムの処理が成功した旨を表す戻り値を呼び出して元プログラムに返し、このプログラムの処理を終了する（Ｓ５５３０）。
【００５４】
図１２は、第一の実施形態における系切替え制御プログラム１１００の処理の流れを示す図である。以下、待機系２０００の系切替え制御プログラム２１００について記述する。系切替え制御プログラム２１００は、現用系１０００の障害を監視し、障害が発生した場合は現用系１０００で行っていた業務の処理を待機系２０００に引き継がせる処理を行う。
【００５５】
まず、現用系１０００のアクセス記録の送信プログラム１２７５から送信されたアクセス要求管理テーブル１３００の内容を受信する（Ｓ５６００）。次に、ステップＳ５６００での受信処理が成功したかどうか判定する（Ｓ５６１０）。受信が成功した場合はステップＳ５６３０に進み、受信が失敗した場合にはステップＳ５６２０に進む。
【００５６】
ステップＳ５６１０で、受信失敗と判定された場合は、受信失敗に対応する処理を行う（Ｓ５６２０）。なお、受信が失敗した状態で業務引継ぎ処理を行っても良い。一方、受信成功と判定された場合には、待機系２０００の整合性検査プログラム２１５０を呼び出し、整合性の検査処理を行う（Ｓ５６３０）。このとき、ステップＳ５６００で受信したアクセス要求管理テーブル１３００の内容をパラメータとして渡す。なお、アクセス要求管理テーブル１３００以外の追加パラメータがあってもよい。
最後に、業務引継ぎ処理を行い、待機系２０００は新現用系として業務を引き継ぐ（Ｓ５６４０）。
【００５７】
図１３は、第一の実施形態において、待機系２０００における整合性検査プログラム２１００の処理の流れを示す図である。整合性検査プログラム２１００は、系切替え処理の中で、系切替え制御プログラム２１００から呼び出される。このとき、パラメータとして、現用系１０００のアクセス記録の送信プログラム１２７５から送信されたアクセス要求管理テーブル１３００の内容を受け取る。なお、これ以外に追加パラメータがあってもよい。
【００５８】
まず、パラメータとして受け取ったアクセス要求管理テーブル１３００の中から、取得可能なアクセス要求管理テーブルエントリ１３１０が存在するかどうか判定する。この判定を全エントリに対して検索して行う（Ｓ５７００）。該当するエントリが存在する場合は、ステップＳ５７１０に進み、存在しない場合にはこのプログラムの処理を終了する。
ステップＳ５７００で、取得可能なアクセス要求管理テーブルエントリ１３１０が存在する場合は、エントリを１つ取得する（Ｓ５７１０）。そして、その取得したアクセス要求管理テーブルエントリ１３１０の書き込み要求カウンタ１３３０の値が「０」かどうか判定する（Ｓ５７２０）。
【００５９】
判定の結果、「０」である場合は、そのエントリに対応する論理ボリュームは書き込みＩ／Ｏが全て完了した状態であることを意味し、復旧プログラム実行の必要がない。このため復旧プログラムを実行せずに、ステップＳ５７００に進む。一方、「０」でない場合は、そのエントリに対応する論理ボリュームは処理中で中断された書き込みＩ／Ｏが存在し、論理ボリューム内が不整合である可能性があることを意味している。そこでステップＳ５７３０に進み、論理ボリュームの復旧プログラムを実行する。
【００６０】
ステップＳ５７２０での判定の結果、書き込み要求カウンタ１３３０の値が「０」でないと判定された場合は、対応する論理ボリュームに対して論理ボリュームの復旧プログラムを実行する。これにより，その論理ボリューム内に不整合の疑いがある場合は物理ボリュームの一部または全部を他の物理ボリュームにコピーし，不整合な状態を修復する。修復プログラム実行後はＳ５７００に進む（Ｓ５７３０）。
【００６１】
図１４は、第一の実施形態におけるホットスタンバイ処理の全体の流れを示す図である。
まず、現用系１０００のシステム立ち上げ時の処理が実行される。
現用系１０００は、システム立ち上げ時に初期化処理プログラム１２８０を呼び出し、実行する（Ｓ５８００）。これにより、デバイススイッチテーブルエントリ１２１２を書き換え、ダンプ出力時にアクセス要求記録の送信プログラム１２７５が呼び出されるように設定する。
【００６２】
次に、アクセス管理対象論理ボリュームの登録プログラム１２５５を呼び出し、実行する（Ｓ５８０５）。これにより、デバイススイッチテーブルエントリ１２１１を書き換え、論理ボリュームへの書き込みＩ／Ｏ要求発生時にアクセス要求記録プログラム１２７０を呼び出すように設定する。なお、アクセス監視対象とするべき論理ボリュームが複数ある場合は、個々に対してこのステップの処理を行う。
【００６３】
続いて、現用系１０００の通常運用時の処理が実行される。
アプリケーションプログラム１０５０が論理ボリュームに対し書き込みのＩ／Ｏ要求を発行すると、ＯＳ１２００のＩ／Ｏ要求処理プログラム１２２０が呼び出され、実行される（Ｓ５８１０）。Ｉ／Ｏ要求処理プログラム１２２０は、Ｉ／Ｏ対象となる論理ボリュームと、操作の内容に基づき、デバイススイッチテーブルエントリ１２１１の内容を参照する。
【００６４】
次に、Ｉ／Ｏ要求処理プログラム１２２０は、その参照したデバイススイッチテーブルエントリ１２１１に登録されているアクセス要求記録プログラム１２７５を呼び出し、実行する（Ｓ５８１５）。アクセス要求記録プログラム１２７５は、下記（１）〜（３）の処理を行う。
Ｉ／Ｏ対象の論理ボリュームに対応するアクセス要求管理テーブルエントリ１３１０の書き込み要求カウンタ１３３０に「１」を加える。
（２）デバイスドライバ１３５０の書き込み処理プログラム１３６０を呼び出して実際のＩ／Ｏ処理を行う。このとき，対象となる論理ボリュームに対応する物理ボリュームそれぞれに同一の書き込みを実施する。
（３）上記（１）で操作した書き込み要求カウンタ１３３０の値を「１」減じた後、呼び出し元のアプリケーションプログラム１０５０にＩ／Ｏ完了を報告する。
このステップＳ５８１０とＳ５８１５は、現用系１０００で障害が発生するまで繰り返えし、実行される。
【００６５】
ここで、現用系１０００で障害が発生した場合には、系の切替え処理が実行される。
即ち、現用系１０００で障害が発生すると、この障害を障害検出プログラム１２３０が検出する。障害検出プログラム１２３０は予め登録された論理ボリュームへのダンプ出力処理に対応するデバイススイッチテーブルエントリ１２１２を参照し、そのエントリに登録されたプログラムのアドレスを取得する（Ｓ５８２０）。
【００６６】
次に、障害検出プログラム１２３０は、ステップＳ５８２０で取得したアドレスのプログラムを呼び出す。これにより、アクセス要求記録の送信プログラム１２７５を呼び出し、実行する（Ｓ５８２５）。アクセス要求記録の送信プログラム１２７５は、アクセス要求管理テーブル１３００の内容を待機系２０００の系切替え制御プログラム２１００に送信する。
【００６７】
次に、障害検出プログラム１２３０は、デバイスドライバ１３５０のダンプ出力処理プログラム１３７０を呼び出し、実行する（Ｓ５８３０）。これにより、システム内のメモリダンプが論理ボリュームに出力される。ダンプ出力が終了すると、現用系１０００は障害を復旧し、新たな待機系として立ち上がる。このとき、後述するステップＳ５８５０以降の処理を行う（Ｓ５８３５）。
【００６８】
これに対して、待機系２０００ではシステム立ち上げ処理が実行される。
待機系２０００では、システム立ち上げ時に初期化プログラム２２８０を呼び出して実行する（Ｓ５８５０）。これにより、ＯＳ２２００のデバイススイッチテーブルエントリ２２１２を書き換え、ダンプ出力時にアクセス要求記録の送信プログラム２２７５が呼び出されるよう設定する。
【００６９】
次に、アクセス管理対象論理ボリュームの登録プログラム２２５５を呼び出し、実行する（Ｓ５８５５）。これにより、ＯＳ２２００のデバイススイッチテーブルエントリ２２１１を書き換え、論理ボリュームへの書き込みＩ／Ｏ要求発生時にアクセス要求記録プログラム２２７０を呼び出すよう設定する。なお、アクセス監視対象とすべき論理ボリュームが複数ある場合には、夫々の論理ボリュームに対してこのステップの処理を行う。
以上の処理を終えると、待機系２０００の系切替え制御プログラム２１００は現用系１０００のアクセス記録の送信プログラム１２７５からアクセス要求管理テーブル１３００の内容が送信されるのを待つ。
【００７０】
続いて、障害時における待機系２０００系切替え処理が実行される。
待機系２０００の系切替え制御プログラム２１００は、現用系１０００から送信されたアクセス要求管理テーブル１３００の内容を受信する（Ｓ５８６０）。そして、受信したアクセス要求管理テーブル１３００の内容をパラメータとして整合性検査プログラム２１５０を呼び出し、実行する（Ｓ５８６５）。即ち、整合性検査プログラム２１５０は、パラメータとして渡されたアクセス要求管理テーブル１３００の内容に基づき、論理ボリュームの整合性をチェックする。このとき、途中で中断された書き込みＩ／Ｏが存在する場合は、その論理ボリュームに対して復旧プログラムを実行する。復旧プログラムでは，中断されたＩ／Ｏの対象となった領域を他の物理ボリュームとの間でコピーし，不整合な状態を修復する。なお，論理ボリュームに対応する領域全てをコピーしても良い。
以上の処理が終了すると、系切替え制御プログラム２１００は、業務引継ぎ処理を行い、新らたな現用系として業務を再開する（Ｓ５８７０）。
【００７１】
・第二の実施形態
次に、図１５〜図２２を参照して第二の実施形態について説明する。
上述した第一の実施形態との相違点は、現用系のアプリケーションが共有ディスクへの書き込みＩ／Ｏ要求を発行する度に、Ｉ／Ｏ実施前と完了時に現用系のアクセス要求監視プログラムが待機系のアクセス要求監視プログラムに通知し、待機系側のアクセス要求監視プログラムがアクセス要求管理テーブルに記録する点である。
【００７２】
図１５は、第二の実施形態における計算機システムの構成を示す図である。
系切替え制御プログラム６０００、６２００、整合性検査プログラム６０５０、６２５０、アクセス要求監視プログラム６１００、６３００を除き、その構成は第一の実施の形態と同じであるため、同じ部分について説明は以降省略する。また、以下の説明では、待機系２０００を構成する６２００〜６３００の構成は、現用系１０００の６０００〜６１００と同様であるため、現用系１０００の説明をもって代用する。
【００７３】
図１６は、第二の実施形態におけるアクセス要求監視プログラム６１００の構成を示す図である。
アクセス要求監視プログラム６１００は、アクセス監視対象論理ボリュームの登録プログラム１２５５、アクセス監視対象論理ボリュームの除外プログラム１２６０、アクセス監視状態の取得プログラム１２６５、アクセス要求記録プログラム６１１０、アクセス要求記録の受信プログラム６１２０から構成される。なお、アクセス監視対象論理ボリュームの除外プログラム１２５５およびアクセス監視状態の取得プログラム１２６５は、無くても良い。また、プログラム１２５５〜１２６５の構成および動作は第一の実施形態と同じであるため、説明は省略する。
【００７４】
図１７は、第二の実施の形態における、現用系１０００で書き込みＩ／Ｏ要求が発生した時に、待機系へ送信されるアクセス要求通知パケット６４００の構成を示す図である。
アクセス要求通知パケット６４００は、通知の内容を示す通知の種類６４１０とアクセス対象の論理ボリュームＩＤ６４２０を含んで構成される。ここで、通知の種類６４１０は、待機系への通知の種類を示す値を格納し、「書き込みＩ／Ｏ開始」を示す値または「書き込みＩ／Ｏ完了」を示す値のどちらかを示す。また、論理ボリュームＩＤ６４２０は、書き込みＩ／Ｏの対象となった論理ボリュームを識別するための論理ボリュームＩＤを格納する。
【００７５】
現用系１０００で書き込みＩ／Ｏ要求発生が発生し、アクセス要求記録プログラム６１１０が呼び出されると、アクセス要求記録プログラム６１１０はアクセス要求通知パケット６４００を作成し、待機系２０００のアクセス記録の受信プログラム６３２０に送信する。
【００７６】
図１８は、第二の実施形態におけるアクセス要求記録プログラム６１１０の処理の流れを示す図である。アクセス要求記録プログラム６１１０は、第一の実施の形態と同じく、共有ディスク３０００への書き込みＩ／Ｏ要求発生を契機として、Ｉ／Ｏ要求処理プログラム１２２０から論理ボリュームＩＤやＩ／Ｏに用いるデータなどをパラメータとして呼び出される。
【００７７】
まず、書き込みＩ／Ｏ開始を示すアクセス要求通知パケット６４００を作成する（Ｓ７０００）。このとき、通知の種類６４１０には「書き込みＩ／Ｏ開始」を示す値を格納し、論理ボリュームＩＤ６４２０にはＩ／Ｏ対象となった論理ボリュームの論理ボリュームＩＤを格納する。
【００７８】
次に、作成されたアクセス要求通知パケット６４００を、ネットワーク４０００を経由して待機系のアクセス記録の受信プログラム６３２０へ送信する（Ｓ７０１０）。この場合、ＩＯＰ１５００を経由して通信アダプタ１５５０を用いて通信を行うが、この処理は外部プログラムが行っても良い。次に、書き込み処理プログラム１３６０を呼び出し、実際のＩ／Ｏ処理を実施する（Ｓ７０２０）。このとき、Ｉ／Ｏ要求処理プログラム１２２０がこのプログラムに渡したパラメータをそのまま渡す。書き込み処理プログラム１３６０は、実際のＩ／Ｏを行い、Ｉ／Ｏ完了した時点でその処理を終了し戻ってくる。
【００７９】
次に、書き込みＩ／Ｏ完了を示すアクセス要求通知パケット６４００を作成する（Ｓ７０３０）。この場合、通知の種類６４１０には「書き込みＩ／Ｏ完了」を示す値を格納し、論理ボリュームＩＤ６４２０にはＩ／Ｏ対象となった論理ボリュームの論理ボリュームＩＤを格納する。
そして、上記のように作成されたアクセス要求通知パケット６４００を、ネットワーク４０００を経由して待機系のアクセス記録の受信プログラム６３２０に送信する（Ｓ７０４０）。ここで、ＩＯＰ１５００を経由して通信アダプタ１５５０を用いて通信を行うが、この処理は外部プログラムが行っても良い。
【００８０】
最後に、書き込み処理プログラム１３６０から返された戻り値を呼び出し、元プログラムに返して、このプログラムの処理を終了する（Ｓ７０５０）。
【００８１】
図１９は、アクセス要求の受信プログラム６１２０の処理の流れを示す図である。
アクセス要求の受信プログラム６１２０は、通常運用時の待機系２０００上で常にアクセス要求通知パケット６４００を待ち受けており、アクセス要求通知パケット６４００の到着を契機として処理を行う。以降は、待機系２０００のアクセス記録の受信プログラム６３２０について説明する。
【００８２】
まず、現用系１０００のアクセス要求記録プログラム６１１０から送信されたアクセス要求通知パケット６４００を受信する（Ｓ７１００）。次に、ステップＳ７１００で受信したアクセス要求通知パケット６４００の論理ボリュームＩＤ６４２０の内容に基づき、アクセス要求管理テーブルエントリ２３１０を検索する（Ｓ７１１０）。
【００８３】
この検索の結果、該当するエントリが見つかったかどうか判定する（Ｓ７１２０）。該当エントリが見つかった場合はステップＳ７１３０に進み、見つからなかった場合には操作すべきエントリが見つからなかったと判断し、ステップＳ７１００に進む。
ステップＳ７１２０の判定で該当エントリが見つかった場合、ステップＳ７１００で受信したアクセス要求通知パケット６４００の通知の種類６４１０の内容を判定する（Ｓ７１３０）。この内容が「書き込みＩ／Ｏ開始」を示している場合は、ステップＳ７１１０で検索したアクセス要求管理テーブルエントリ２３１０の書き込み要求カウンタ２３３０の値に「１」を加え、ステップＳ７１００に進む（Ｓ７１４０）。
【００８４】
一方、ステップＳ７１３０の判定の結果、通知の種類６４１０が「書き込みＩ／Ｏ完了」を示している場合には、ステップＳ７１１０で検索したアクセス要求管理テーブルエントリ２３１０の書き込み要求カウンタ２３３０の値を「１」減じ、ステップＳ７１００に進む（Ｓ７１５０）。
【００８５】
図１９は、第二の実施形態における障害発生時における系切替え制御プログラム６０００の処理の流れを示す図である。
待機系２０００の系切替え制御プログラム６０００は、通常運用中は常に現用系１０００の障害を監視しており、障害発生を検出すると系切替えの処理を実施する。以降は、待機系２０００の系切替え制御プログラム６２００について説明する。
【００８６】
まず、系切替え制御プログラム６２００は、現用系１０００での障害発生を検出する（Ｓ７２００）。このとき、障害を検出する手段としては、ＡＬＩＶＥメッセージなど既存の技術による。次に、整合性検査プログラム６２５０を呼び出し、共有ディスク３０００を構成する論理ボリュームに関して、整合性の検査を実施する（Ｓ７２１０）。このとき、論理ボリュームの論理ボリュームＩＤの集合をパラメータとして整合性検査プログラム６２５０に渡す。整合性検査プログラム６２５０は、検査が終了した後、プログラムの処理を終えて戻ってくる。
【００８７】
整合性検査プログラム６２５０の処理が終了すると、待機系２０００に業務引継ぎ処理を行わせる。このステップの処理が終了すると、待機系２０００は新現用系として業務を再開する（Ｓ７２２０）。
【００８８】
図２１は、第二の実施形態における待機系２０００における整合性検査プログラム６２５０の処理の流れを示す図である。整合性検査プログラム６２５０は、系切替え処理の中で、系切替え制御プログラム６２００から呼び出される。このとき、パラメータとしてアクセス監視対象の論理ボリュームＩＤの列を受け取る。なお、これ以外に追加パラメータがあってもよい。
【００８９】
まず、論理ボリュームＩＤの列から、取得可能な論理ボリュームＩＤが存在するかどうか判定する（Ｓ７３００）。存在する場合は、ステップＳ７３１０に進み、存在しない場合にはこのプログラムの処理を終了する。
取得可能な論理ボリュームＩＤが存在する場合は、１つのエントリを取得し、そのＩＤに対応するアクセス要求管理テーブルエントリ２３１０を検索する（Ｓ７３１０）。このとき、取得した論理ボリュームＩＤはパラメータとして受け取ったＩＤの列から削除する。
【００９０】
次に、取得したアクセス要求管理テーブルエントリ２３１０の書き込み要求カウンタ２３３０の値が「０」かを判定する（Ｓ７３２０）。「０」である場合は、そのエントリに対応する論理ボリュームは書き込みＩ／Ｏが全て完了した状態であることを意味し、復旧プログラム実行の必要がない。このため復旧プログラムを実行せずステップＳ７３００に進む。一方、「０」でない場合には、そのエントリに対応する論理ボリュームは処理中で中断された書き込みＩ／Ｏが存在し、論理ボリューム内が不整合である可能性があることを意味している。この時には、対応する論理ボリュームに対して論理ボリュームの復旧プログラムを実行する（Ｓ７３３０）。これにより、その論理ボリューム内に不整合がある場合には復旧プログラムにより修復される。復旧プログラムの実行後はＳ７３００に進む。
【００９１】
図２２は、第二の実施形態におけるホットスタンバイ処理の全体的な流れを示す図である。
【００９２】
まず、現用系１０００のシステム立ち上げ時の処理が実行される。
現用系１０００は、システム立ち上げ時にアクセス管理対象論理ボリュームの登録プログラム１２５５を呼び出し、実行する。これにより、ＯＳ１２００のデバイススイッチテーブルエントリ１２１１を書き換え、論理ボリュームへの書き込みＩ／Ｏ要求発生時にアクセス要求記録プログラム６１１０を呼び出すよう設定する。なお、アクセス監視対象とするべき論理ボリュームが複数ある場合は、夫々の論理ボリュームに対してこの処理を行う（Ｓ７４００）。
【００９３】
続いて、現用系１０００の通常運用時の処理が実行される。
アプリケーションプログラム１０５０が論理ボリュームに対して書き込みのＩ／Ｏ要求を発行すると、ＯＳ１２００のＩ／Ｏ要求処理プログラム１２２０が呼び出され、実行される。Ｉ／Ｏ要求処理プログラム１２２０は、Ｉ／Ｏ対象となる論理ボリュームと、操作の内容に基づき、デバイススイッチテーブルエントリ１２１１の内容を参照する（Ｓ７４０５）。
【００９４】
次に、Ｉ／Ｏ要求処理プログラム１２２０は、その参照したデバイススイッチテーブルエントリ１２１１に登録されているアクセス要求記録プログラム６１１０を呼び出し、実行する。アクセス要求記録プログラム６１１０は、下記（１）〜（３）の処理を行う。なお，下記（２）の処理は，Ｉ／Ｏの対象となる論理ボリュームに対応する物理ボリュームそれぞれに対して行う。
待機系２０００のアクセス要求通知受信プログラム６１２０に「書き込みＩ／Ｏ開始」を示すアクセス要求通知パケット６４００を送信し、
デバイスドライバ１３５０の書き込み処理プログラム１３６０を呼び出して実際のＩ／Ｏ処理を行い、
待機系２０００のアクセス要求通知受信プログラム６１２０に「書き込みＩ／Ｏ完了」を示すアクセス要求通知パケット６４００を送信した後、呼び出し元のアプリケーションプログラム１０５０にＩ／Ｏ完了を報告する。
このステップＳ７４０５とＳ７４１０は、現用系１０００で障害が発生するまで繰り返し、実行される（Ｓ７４１０）。
【００９５】
この状態で現用系１０００に障害が発生した場合には、系切替え処理が実行される。
即ち、現用系１０００で障害が発生し、障害検出プログラム１２３０がこれを検出すると、障害検出プログラム１２３０は予め登録された論理ボリュームへのダンプ出力処理に対応するデバイススイッチテーブルエントリ１２１２を参照し、当該エントリに登録されたプログラムのアドレスを取得する（Ｓ７４１５）。
【００９６】
次に、障害検出プログラム１２３０は、ステップＳ７４１５で取得したアドレスのプログラムを呼び出す。これにより、デバイスドライバ１３００のダンプ出力処理プログラム１３２０を呼び出し実行する。ダンプ出力処理プログラム１３２０は、システム内のメモリダンプを論理ボリュームに出力する。ダンプ出力が終了すると、現用系１０００は障害を復旧し、新たな待機系として立ち上がる。このとき、後述するステップＳ７４５０以降の処理を行う（Ｓ７４２０）。
【００９７】
続いて、待機系２０００ではシステム立ち上げ処理が実行される。
待機系２０００は、システム立ち上げ時にアクセス管理対象論理ボリュームの登録プログラム２２５５を呼び出し、実行する。これにより、ＯＳ２２００のデバイススイッチテーブルエントリ２２１１を書き換え、論理ボリュームへの書き込みＩ／Ｏ要求発生時にアクセス要求記録プログラム６３１０を呼び出すように設定する。なお、アクセス監視対象とすべき論理ボリュームが複数ある場合は、夫々の論理ボリュームに対してこのステップの処理を行う（Ｓ７４５０）。
【００９８】
以上の処理を終えると、アクセス要求通知受信プログラム６３２０は、現用系１０００からのアクセス要求通知パケット６４００を待ち受ける。現用系１０００で書き込みＩ／Ｏ要求が発生すると、アクセス要求記録プログラム６１１０からアクセス要求通知パケット６４００が送信される。そして、アクセス要求通知受信プログラム６３２０は受信したアクセス要求通知パケットパケット６４００に応じた処理を実施する（Ｓ７４５５）。
【００９９】
続いて、障害時における待機系２０００系切替え処理が行われる。
待機系２０００の系切替え制御プログラム６２００は、現用系１０００の障害発生を検出すると、整合性検査プログラム６２５０を呼び出し、論理ボリュームの整合性を検査する（Ｓ７４６０）。
【０１００】
次に、系切替え制御プログラム６２００から呼び出された整合性検査プログラム６２５０は、パラメータとして渡された論理ボリュームの列に基づき、論理ボリュームの整合性をチェックする。このとき，途中で中断された書き込みＩ／Ｏが存在する場合は，復旧プログラムを実行する。復旧プログラムは，この復旧プログラムでは，中断されたＩ／Ｏの対象となった領域を他の物理ボリュームとの間でコピーし，不整合な状態を修復する。なお，論理ボリュームに対応する領域全てをコピーしても良い（Ｓ７４６５）。
以上の処理が終了すると、系切替え制御プログラム６２００は、業務引継ぎ処理を行い、新らたな現用系として業務を再開する（Ｓ７４７０）。
【０１０１】
・第三の実施形態
次に、図２３〜図２９を参照して第三の実施形態について説明する。
第一および第二の実施形態との相違点は、現用系から共有ディスクへの書き込みＩ／Ｏを実施する際に、Ｉ／Ｏ処理中であるボリューム上のアドレスをその論理ボリューム上に記録し、Ｉ／Ｏ完了時にこの記録を削除する点である。これにより、障害発生により書き込みＩ／Ｏ中が強制中断された場合は、ボリューム上に処理中のアドレスの記録が残るため、不整合な状態を検出可能となる。
【０１０２】
図２３は、第三の実施の形態における計算機システムの構成を示す図である。
整合性チェックプログラム８０００、８２００、デバイスドライバ８１００、８３００、共有ディスク８４００以外の構成については、第二の実施形態と同じであるため、以降での説明は省略する。また、以下の説明では、待機系２０００を構成する８２００、８３００の構成は現用系１０００の８０００、８１００と同様であるため、現用系１０００の説明をもって代用する。
【０１０３】
図２４は、第三の実施の形態における共有ディスク８４００の構成を示す図である。
共有ディスク８４００は複数の論理ボリューム８４１０，８４２０，８４３０から構成されている。各論理ボリュームの領域は，それぞれ物理ボリューム８４５０，８４６０に対応付けられている。このとき，論理ボリュームは，物理ボリュームに一対一で割り当てても良いし，物理ボリュームの領域を分割して一部のみを論理ボリュームに対応付け，複数の論理ボリュームで一つの物理ボリュームを共有しても良い。さらに，分割した領域とは別に領域が設けられ，書き込みＩ／Ｏ要求を記録するアクセス要求管理テーブル８４５５，８４６５が格納される。デバイスドライバ８１００，８３００は，書き込みＩ／Ｏ実施の際にアクセス要求管理テーブル８４５５，８４６０を更新する。なお，アクセス要求管理テーブルは，論理ボリュームに対応付けた領域それぞれの中に存在してもよい。各論理ボリュームには，固有の論理ボリュームＩＤが付与され，それらのＩＤにより論理ボリュームが認識される。なお，通常，論理ボリュームを複数個有するのが望ましいが１つでもよい。
【０１０４】
図２５は、上述のアクセス要求管理テーブル８４５５（同様の構成であるので、符号８４６５は省略）を構成するアクセス要求管理テーブルエントリ８４４０の構成を示す図である。アクセス要求管理テーブル８４５５は、１つまたは複数のアクセス要求管理テーブルエントリ８４４０の集合により構成され、各エントリ８４４０は、書き込み対象アドレス８４４５を含む。なお、斜線部分は他のフィールドを含んでもよい。
【０１０５】
書き込み対象アドレス８４４５は、デバイスドライバ８１００が書き込みＩ／Ｏを行う対象となる領域のアドレスを格納する。例えば、論理ボリューム８４１０に対する書き込みＩ／Ｏを実施する場合は、デバイスドライバ８１００がＩ／Ｏの対象となるアドレスを書き込み対象アドレス８４４５に格納したアクセス要求管理テーブルエントリ８４４０をアクセス要求管理テーブル８４５５，８４６５に確保した後、実際のＩ／Ｏ処理を行う。そして、実際のＩ／Ｏ処理が完了した後、Ｉ／Ｏ処理前に確保したエントリを削除する。
なお，エントリを削除せず，このＩ／Ｏが完了したことを示す値を格納してもよい。また，書き込み処理は，対象論理ボリュームに対象となった物理ボリューム全てに対して実施する。このため，アクセス要求管理テーブル８４６５に対しても同様の処理を行う。
【０１０６】
図２６は、第三の実施の形態におけるデバイスドライバ８１００の構成を示す図である。ダンプ出力処理プログラム１３７０の構成および動作は第一および第二の実施の形態と同じであるが、書き込み処理プログラム８１１０の動作が異なる。
【０１０７】
図２７は、第三の実施の形態における書き込み処理プログラム８１１０の処理の流れを示す図である。書き込み処理プログラム８１１０は、論理ボリュームへの書き込みＩ／Ｏ要求発生時に、Ｉ／Ｏ処理プログラム１２２０により呼び出される。なお，図27の処理は，対象論理ボリュームに対応する物理ボリュームのそれぞれに対し行う。
【０１０８】
まず、対象となる論理ボリューム８４１０に対応する物理ボリューム８４５０，８４６０のアクセス要求管理テーブル８４５５，８４６５に、アクセス要求管理テーブルエントリ８４４０を１つ追加する。このとき、書き込み対象アドレス８４５０に、書き込みＩ／Ｏを行う論理ボリューム上のアドレスを格納する（Ｓ９０００）。次に、論理ボリューム８４１０に対して実際の書き込みＩ／Ｏ処理を実施する（Ｓ９０１０）。
最後に、ステップＳ９０００で追加したアクセス要求管理テーブルエントリ８４４０を削除する。このとき、このエントリ８４４０の書き込み対象アドレス８４４５が格納されていた領域には、空白を示す値を格納する（Ｓ９０２０）。なお，エントリを削除せず，このＩ／Ｏが完了したことを示す値を格納してもよい。
【０１０９】
図２８は、第三の実施形態における待機系２０００の整合性検査プログラム８２００の処理の流れを示す図である。整合性検査プログラム８２００は、系切替え処理の中で、系切替え制御プログラム６２００から呼び出される。このとき、パラメータとしてアクセス監視対象の論理ボリュームＩＤの列を受け取る。なお、これ以外に追加パラメータがあってもよい。
【０１１０】
まず、論理ボリュームＩＤの列から、取得可能な論理ボリュームＩＤが存在するかどうか判定する（Ｓ９１００）。この判定で、取得可能な論理ボリュームＩＤが存在する場合は、１つの論理ボリュームＩＤを取得する。このとき、取得した論理ボリュームＩＤはパラメータとして受け取ったＩＤの列から削除する。そして、取得した論理ボリュームＩＤを元に、対応する論理ボリューム８４１０のアクセス要求管理テーブル８４５５，８４６５を読み込む（Ｓ９１１０）。一方、この判定の結果、取得可能な論理ボリュームＩＤが存在しなければ、このプログラムの処理を終了する。
【０１１１】
次に、ステップＳ９１１０で読み込んだアクセス要求管理テーブル８４５５，８４６５の中に書き込み対象アドレス８４４５に空白を表す値以外が格納されたものが在るかどうか判定する。１つも存在しない場合は、そのエントリに対応する論理ボリュームは書き込みＩ／Ｏが全て完了した状態であることを意味し、復旧プログラム実行の必要がない。このため復旧プログラムを実行せずステップＳ９１００に進む。一方、１つでも存在する場合は、そのエントリに対応する論理ボリュームは処理中で中断された書き込みＩ／Ｏが存在し、論理ボリューム内が不整合である可能性があることを意味している。そこでステップＳ９１３０に進み、論理ボリュームの復旧プログラムを実行する（Ｓ９１２０）。復旧プログラムは，その論理ボリュームに対応する物理ボリュームの一部または全部を他の物理ボリュームにコピーし，不整合な状態を修復する。
【０１１２】
ステップＳ９１３０では、対応する論理ボリュームに対して論理ボリュームの復旧プログラムを実行する。これにより、その論理ボリューム内に不整合がある場合は復旧プログラムにより修復される（Ｓ９１３０）。復旧プログラムの実行後はＳ７３００に進み、上記のステップを繰り返す。
【０１１３】
図２９は、第三の実施の形態におけるホットスタンバイ処理の流れを示す図である。
まず、現用系１０００のシステム立ち上げ処理を行う（Ｓ９２００）。この起動は通常のやり方と同じである。
続いて、現用系１０００の通常運用時の処理が実行される。
即ち、アプリケーションプログラム１０５０が論理ボリュームに対し書き込みのＩ／Ｏ要求を発行すると、ＯＳ１２００のＩ／Ｏ要求処理プログラム１２２０が呼び出され、実行される。Ｉ／Ｏ要求処理プログラム１２２０は、Ｉ／Ｏ対象となる論理ボリュームと、操作の内容に基づき、デバイススイッチテーブルエントリ１２１１の内容を参照する（Ｓ９２０５）。
【０１１４】
次に、Ｉ／Ｏ要求処理プログラム１２２０は、上記参照されたデバイススイッチテーブルエントリ１２１１に登録されている書き込み処理プログラム８１１０を呼び出し実行する。書き込み処理プログラム８１１０は、書き込み対象論理ボリュームのアクセス要求管理テーブル８４５５，８４６５にアクセス要求管理テーブルエントリ８４４０を１つ追加し、実際のＩ／Ｏ処理を行う。更に、上記の追加したアクセス要求管理テーブルエントリ８４４０を削除した後、呼び出し元のアプリケーションプログラム１０５０にＩ／Ｏ完了を報告する。上記ステップＳ９２０５とＳ９２１０は、現用系１０００で障害が発生するまで繰り返えされる（Ｓ９２１０）。
【０１１５】
この状態で、現用系１０００に障害が発生した場合には、系切替え処理が実行される。
即ち、現用系１０００で障害が発生し、障害検出プログラム１２３０がこれを検出すると、障害検出プログラム１２３０は予め登録された論理ボリュームへのダンプ出力処理に対応するデバイススイッチテーブルエントリ１２１２を参照し、そのエントリに登録されたプログラムのアドレスを取得する（Ｓ５７２０）。
【０１１６】
次に、障害検出プログラム１２３０は、ステップＳ５７２０で取得したアドレスのプログラムを呼び出す。これにより、デバイスドライバ８１００のダンプ出力処理プログラム１３２０を呼び出し、実行する。ダンプ出力処理プログラム１３２０は、システム内のメモリダンプを論理ボリュームに出力する（Ｓ９２１５）。
ダンプ出力が終了すると、現用系１０００は障害を復旧し、新たな待機系として立ち上がる。このとき、後述するステップＳ９２５０以降の処理を行う（Ｓ９２２０）。
【０１１７】
続いて、待機系２０００のシステム立ち上げ処理が実行される。
この処理では、まず、待機系２０００のシステム立ち上げ処理が行われる（Ｓ９２５０）。システム立ち上げが終了すると、系切替え制御プログラム６２００は現用系１０００の障害を監視するステップＳ９２５５。
【０１１８】
続いて、障害時における待機系２０００系切替え処理が実行される。
待機系２０００の系切替え制御プログラム６２００は、現用系１０００の障害発生を検出すると、整合性検査プログラム８２００を呼び出し、論理ボリュームの整合性を検査する（Ｓ９２５５）。
【０１１９】
次に、系切替え制御プログラム６２００から呼び出された整合性検査プログラム８２００は、パラメータとして渡された論理ボリュームの列に基づき、論理ボリューム内のアクセス要求管理テーブルを読み出して整合性のチェックを行う。このとき、途中で中断された書き込みＩ／Ｏが存在する場合は、その論理ボリュームに対し復旧プログラムを実行する（Ｓ９２６０）。復旧プログラムは，その論理ボリュームに対応する物理ボリュームの一部または全部を他の物理ボリュームにコピーし，不整合な状態を修復する。
以上の処理が終了すると、系切替え制御プログラム８２００は、業務引継ぎ処理を行い、新らたな現用系として業務を再開する（Ｓ９２６５）。
【０１２０】
以上により、現用系１０００に障害が発生した場合、待機系２０００が業務を引き継ぐ前に共有ディスク３０００の整合性をチェックし、不整合の状態であればこれを修復することができる。
【図面の簡単な説明】
【０１２１】
【図１】本発明の第一の実施形態によるホットスタンバイシステムの概略構成図である。
【図２】第一の実施形態における共有ディスク３０００の構成を示す図である。
【図３】第一の実施形態におけるＯＳ１２００とデバイスドライバ１３００の構成および相関を示す図である。
【図４】第一の実施形態におけるアクセス要求監視プログラム１２５０の構成を示す図である。
【図５】第一の実施形態におけるアクセス要求管理テーブル１３００のエントリの構成を示す図である。
【図６】第一の実施形態におけるアクセス管理対象論理ボリュームの登録プログラム１２５５の処理の流れを示す図である。
【図７】第一の実施形態におけるアクセス管理対象論理ボリュームの除外プログラム１２６０の処理の流れを示す図である。
【図８】第一の実施形態におけるアクセス要求監視状態の取得プログラム１２６５の処理の流れを示す図である。
【図９】第一の実施形態におけるアクセス要求記録プログラム１２７０の処理の流れを示す図である。
【図１０】第一の実施形態におけるアクセス記録の送信プログラム１２７５の処理の流れを示す図である。
【図１１】第一の実施形態における初期化プログラム１２８０の処理の流れを示す図である。
【図１２】第一の実施形態における系切替え制御プログラム１１００の処理の流れを示す図である。
【図１３】第一の実施形態における整合性検査プログラム１１５０の処理の流れを示す図である。
【図１４】第一の実施形態におけるホットスタンバイ処理の流れを示す図である。
【図１５】第二の実施形態によるホットスタンバイシステムの概略構成図である。
【図１６】第二の実施形態におけるアクセス要求監視プログラム６１００の構成を示す図である。
【図１７】第二の実施形態におけるアクセス要求通知パケット６４００の構成を示す図である。
【図１８】第二の実施形態におけるアクセス要求記録プログラム６１１０の処理の流れを示す図である。
【図１９】第二の実施形態におけるアクセス要求の受信プログラム６１２０の処理の流れを示す図である。
【図２０】第二の実施形態における系切替え制御プログラム６０００の処理の流れを示す図である。
【図２１】第二の実施形態における整合性検査プログラム６２５０の処理の流れを示す図である。
【図２２】第二の実施形態におけるホットスタンバイ処理の流れを示す図である。
【図２３】第三の実施形態によるホットスタンバイシステムの概略構成図である。
【図２４】第三の実施形態における共有ディスク８４００の構成を示す図である。
【図２５】第三の実施形態におけるアクセス要求管理テーブルのエントリ８４４０の構成を示す図である。
【図２６】第三の実施形態におけるデバイスドライバ８１００の構成を示す図である。
【図２７】第三の実施形態における書き込み処理プログラム８１１０の処理の流れを示す図である。
【図２８】第三の実施形態における整合性検査プログラム８２００の処理の流れを示す図である。
【図２９】第三の実施形態におけるホットスタンバイ処理の流れを示す図である。
【符号の説明】
【０１２２】
１０００：現用系計算機、          ２０００：待機系計算機、
１０５０、２０５０：アプリケーションプログラム、
１１００、２１００：系切替え制御プログラム、
１１５０、２１５０：ＯＳ、        １２００、２２００：アクセス要求制御プログラム、１３００、２３００：デバイスドライバ、    １３５０、２３５０：プロセッサ、
１４００、２４００：メモリ、      １４５０、２４５０：プロセッサ、
１５００、２５００：入出力プロセッサ（ＩＯＰ）、
１５５０、２５５０：ディスク制御装置、      １６００、２６００：通信アダプタ、
３０００：共有ディスク、                    ４０００：ネットワーク
【図１】
2006012004.tif 000003
【図２】
2006012004.tif 000004
【図３】
2006012004.tif 000005
【図４】
2006012004.tif 000006
【図５】
2006012004.tif 000007
【図６】
2006012004.tif 000008
【図７】
2006012004.tif 000009
【図８】
2006012004.tif 000010
【図９】
2006012004.tif 000011
【図１０】
2006012004.tif 000012
【図１１】
2006012004.tif 000013
【図１２】
2006012004.tif 000014
【図１３】
2006012004.tif 000015
【図１４】
2006012004.tif 000016
【図１５】
2006012004.tif 000017
【図１６】
2006012004.tif 000018
【図１７】
2006012004.tif 000019
【図１８】
2006012004.tif 000020
【図１９】
2006012004.tif 000021
【図２０】
2006012004.tif 000022
【図２１】
2006012004.tif 000023
【図２２】
2006012004.tif 000024
【図２３】
2006012004.tif 000025
【図２４】
2006012004.tif 000026
【図２５】
2006012004.tif 000027
【図２６】
2006012004.tif 000028
【図２７】
2006012004.tif 000029
【図２８】
2006012004.tif 000030
【図２９】
2006012004.tif 000031