(57)【要約】【課題】ホットスタンバイシステムにおいて系切替え後の業務引継ぎ時間を短縮する。【解決手段】ホストコンピュータ１０００は、共有ディスク装置３０００にアクセスするデバイスドライバ１３００と、Ｉ/Ｏ要求を生成するアプリケーションＰＧ１０５０と、ネットワーク５０００を介して他のホストコンピュータ１０００から受信したＩ/Ｏ要求をデバイスドライバ１３００に転送するＩ/Ｏ要求受信ＰＧ１２４０、共有ディスク装置３０００へのアクセスを「自系で処理」および「他系で処理」のいずれかに設定するアクセス制御状態変更ＰＧ１２２０、および、「自系で処理」の場合はＩ/Ｏ要求をデバイスドライバ１３００に転送し、「他系で処理」の場合はＩ/Ｏ要求をネットワーク５０００を介して他のホストコンピュータ１０００に転送するアクセス制御状態判定ＰＧ１２３０を有するアクセス要求制御ＰＧ１２００と、を実行する。【選択図】図１
2005202442.tif 000002
【特許請求の範囲】
【請求項１】
通信ネットワークで接続された複数のホストコンピュータと、前記複数のホストコンピュータ各々からアクセス可能な共用ディスク装置とを備え、前記複数のホストコンピュータのうちの１つが現用系となり、残りが待機系となって前記共有ディスク装置のデータ更新を行なうホットスタンバイシステムであって、
前記ホストコンピュータは、
Ｉ/Ｏ要求に従い前記共有ディスク装置にアクセスするアクセス手段と、
Ｉ/Ｏ要求を生成するＩ/Ｏ要求手段と、
前記通信ネットワークを介して他の前記ホストコンピュータから受信したＩ/Ｏ要求を前記アクセス手段に転送するＩ/Ｏ要求受信手段と、
前記共有ディスク装置へのアクセス方法を「自系で処理」および「他系で処理」のいずれかに設定するアクセス方法設定手段と、
前記アクセス方法が「自系で処理」に設定されている場合は、前記Ｉ/Ｏ要求手段が生成したＩ/Ｏ要求を前記アクセス手段に転送し、「他系で処理」に設定されている場合は、前記Ｉ/Ｏ要求手段が生成したＩ/Ｏ要求を前記通信ネットワークを介して他の前記ホストコンピュータに転送するアクセス制御手段と、を有すること
を特徴とするホットスタンバイシステム。
【請求項２】
請求項１に記載のホットスタンバイシステムであって、
前記アクセス方法設定手段は、前記アクセス手段の障害を検出する手段を有し、前記アクセス手段に障害が発生している場合に、前記アクセス方法を「他系で処理」に設定し、それ以外の場合は前記アクセス方法を「自系で処理」に設定すること
を特徴とするホットスタンバイシステム。
【請求項３】
請求項１に記載のホットスタンバイシステムであって、
前記アクセス方法設定手段は、前記アクセス手段の過負荷を検出する手段を有し、前記アクセス手段が過負荷状態である場合に、前記アクセス方法を「他系で処理」に設定し、それ以外の場合は前記アクセス方法を「自系で処理」に設定すること
を特徴とするホットスタンバイシステム。
【請求項４】
請求項１乃至３のいずれか１項に記載のホットスタンバイシステムであって、
前記ホストコンピュータは、前記通信ネットワークを介して他の前記ホストコンピュータと連携して、自身の前記ホストコンピュータを現用系および待機系のいずれか一方に切替えることにより、前記複数のホストコンピュータのうちの１つを現用系に、残りを待機系に設定する系切替手段をさらに有すること
を特徴とするホットスタンバイシステム。
【請求項５】
通信ネットワークで接続された他のホストコンピュータと共有ディスク装置を共有するホストコンピュータであって、
Ｉ/Ｏ要求に従い前記共有ディスク装置にアクセスするアクセス手段と、
Ｉ/Ｏ要求を生成するＩ/Ｏ要求手段と、
前記通信ネットワークを介して他の前記ホストコンピュータから受信したＩ/Ｏ要求を前記アクセス手段に転送するＩ/Ｏ要求受信手段と、
前記共有ディスク装置へのアクセス方法を「自系で処理」および「他系で処理」のいずれかに設定するアクセス方法設定手段と、
前記アクセス方法が「自系で処理」に設定されている場合は、前記Ｉ/Ｏ要求手段が生成したＩ/Ｏ要求を前記アクセス手段に転送し、「他系で処理」に設定されている場合は、前記Ｉ/Ｏ要求手段が生成したＩ/Ｏ要求を前記通信ネットワークを介して他の前記ホストコンピュータに転送するアクセス制御手段と、を有すること
を特徴とするホストコンピュータ。
【請求項６】
通信ネットワークで接続された他のホストコンピュータと共有ディスク装置を共有するホストコンピュータのＩ/Ｏ処理方法であって、
前記ホストコンピュータ上で稼動しているアプリケーションプログラムが発行するＩ/Ｏ要求について、アクセス方法が「自系で処理」に設定されている場合は、前記共有ディスク装置にアクセスして当該Ｉ/Ｏ要求を処理し、前記アクセス方法が「他系で処理」に設定されている場合は、当該Ｉ/Ｏ要求を前記通信ネットワークを介して前記他のホストコンピュータに送信して、当該他のホストコンピュータに処理させること
を特徴とするＩ/Ｏ処理方法。
【請求項７】
コンピュータ読取り可能なプログラムであって、
通信ネットワークで接続された他のホストコンピュータと共有ディスク装置を共有するホストコンピュータで読み取られて実行されることにより、
前記ホストコンピュータ上で稼動しているアプリケーションプログラムが発行するＩ/Ｏ要求について、アクセス方法が「自系で処理」に設定されている場合は、自身の前記ホストコンピュータが所有する前記共有ディスク装置のデバイスドライバを呼び出して当該Ｉ/Ｏ要求を処理し、前記アクセス方法が「他系で処理」に設定されている場合は、当該Ｉ/Ｏ要求を前記通信ネットワークを介して前記他のホストコンピュータに送信して、当該他のホストコンピュータが所有する前記共有ディスク装置のデバイスドライバに処理させること
を特徴とするコンピュータ読取り可能なプログラム。
【請求項８】
請求項７に記載のコンピュータ読取り可能なプログラムであって、
前記共有ディスク装置を前記アクセス方法の制御対象に登録すること
を特徴とするコンピュータ読取り可能なプログラム。
【請求項９】
請求項７又は８に記載のコンピュータ読取り可能なプログラムであって、
前記ホストコンピュータ上で稼動しているアプリケーションプログラムからの問い合わせに対して、前記アクセス方法の設定内容を返すこと
を特徴とするコンピュータ読取り可能なプログラム。
【請求項１０】
請求項７乃至９の何れか１項に記載のコンピュータ読取り可能なプログラムであって、
前記ホストコンピュータ上で稼動しているアプリケーションプログラムが発行する変更要求に応じて、前記アクセス方法を「自系で処理」および「他系で処理」のいずれか一方から他方に変更すること
を特徴とするコンピュータ読取り可能なプログラム。
【請求項１１】
請求項７乃至１０の何れか１項に記載のコンピュータ読取り可能なプログラムであって、
前記通信ネットワークを介して前記他のホストコンピュータにＩ/Ｏ要求を送信した場合に、所定時間経過しても当該他のホストコンピュータからＩ/Ｏ完了が通知されない場合は、当該Ｉ/Ｏ要求を発行したアプリケーションプログラムに、前記共有ディスク装置のデバイスドライバが応答しない旨を通知すること
を特徴とするコンピュータ読取り可能なプログラム。
【請求項１２】
請求項７乃至１１の何れか１項に記載のコンピュータ読取り可能なプログラムであって、
前記通信ネットワークを介して前記他のホストコンピュータからＩ/Ｏ要求を受信した場合に、自身の前記ホストコンピュータが所有する前記共有ディスク装置のデバイスドライバを呼び出して、当該Ｉ/Ｏ要求を処理すること
を特徴とするコンピュータ読取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
現用系および待機系の両方からアクセス可能な共有ディスク装置を備えたホットスタンバイシステムに関し、特に共有ディスク装置へのアクセス制御技術に関する。
【背景技術】
【０００２】
特許文献１には、現用系および待機系の両系からアクセス可能な第１、第２のディスク装置を備え、第１のディスク装置は現用系からのみ更新し、第２のディスク装置は待機系からのみ更新し、これら２台のディスク装置を論理的に１台のディスク装置として使用するホットスタンバイシステムが開示されている。このホットスタンバイシステムにおいて、現用系に障害が発生し待機系に業務を切り替えた場合、第２のディスク装置および第１のディスク装置の内容を一致させるために、待機系が第２ディスク装置から第１のディスク装置へデータをコピーし、データを更新する場合には、待機系のディスク制御装置を通して、第１のディスク装置および第２のディスク装置のデータを更新する。そして、現用系が障害から復帰した場合に、第１のディスク装置を現用系のディスク制御装置により更新するように変更する。
【０００３】
【特許文献１】特開平１０-２８９１２２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
さて、特許文献１の技術において、現用系に障害が発生して業務が待機系に切り替わる際に、現用系から第１のディスク装置に対してのみデータ更新が発生すると、業務が待機系に切り替わった後に、待機系が第２ディスク装置から第１のディスク装置へデータをコピーしても、第２のディスク装置および第１のディスク装置の内容が一致しなくなる。このため、現用系に障害が発生した際に、現用系のディスク制御装置に仕掛かり中の入出力（以下、Ｉ/Ｏと呼ぶ）処理があるならば、これらを全てキャンセルする必要がある。そして、現用系のディスク制御装置においてデータ更新途中でＩ/Ｏ処理がキャンセルされると、第１のディスク装置に途中まで書き込まれたデータが発生してしまう。この場合、データの整合性を確認しロールバックするなどの処理が必要になる。このため、業務引継ぎ時間を短縮できない。
【０００５】
本発明は上記事情に鑑みてなされたものであり、本発明の目的は、ホットスタンバイシステムにおいて系切替え後の業務引継ぎ時間を短縮することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明は、現用系および待機系の両系からアクセス可能な共有ディスク装置を設けると共に、現用系および待機系を通信ネットワークで接続する。また、現用系および待機系各々の共有ディスク装置へのアクセス方法を「自系で処理」および「他系で処理」のいずれかに設定する。そして、現用系および待機系各々は、アクセス方法が「自系で処理」に設定されている場合、自系から共有ディスク装置にアクセスしてＩ/Ｏ処理し、「他系で処理」に設定されている場合は、通信ネットワークを介して他系にＩ/Ｏ要求を送信し、他系から共有ディスク装置にアクセスしてＩ/Ｏ処理する。
【０００７】
例えば、通信ネットワークで接続された複数のホストコンピュータと、前記複数のホストコンピュータ各々からアクセス可能な共用ディスク装置とを備え、前記複数のホストコンピュータのうちの１つが現用系となり、残りが待機系となって前記共有ディスク装置のデータ更新を行なうホットスタンバイシステムであって、前記ホストコンピュータは、Ｉ/Ｏ要求に従い前記共有ディスク装置にアクセスするアクセス手段と、Ｉ/Ｏ要求を生成するＩ/Ｏ要求手段と、前記通信ネットワークを介して他の前記ホストコンピュータから受信したＩ/Ｏ要求を前記アクセス手段に転送するＩ/Ｏ要求受信手段と、前記共有ディスク装置へのアクセス方法を「自系で処理」および「他系で処理」のいずれかに設定するアクセス方法設定手段と、前記アクセス方法が「自系で処理」に設定されている場合は、前記Ｉ/Ｏ要求手段が生成したＩ/Ｏ要求を前記アクセス手段に転送し、「他系で処理」に設定されている場合は、前記Ｉ/Ｏ要求手段が生成したＩ/Ｏ要求を前記通信ネットワークを介して他の前記ホストコンピュータに転送するアクセス制御手段と、を有する。
【発明の効果】
【０００８】
本発明では、現用系および待機系の両系の共有ディスク装置へのアクセス方法をデフォルトで「自系で処理」に設定し、現用系で障害や過負荷が発生した場合に現用系の共有ディスク装置へのアクセス方法を「自系で処理」から「他系で処理」に変更することで、現用系から待機系に切り替える際に、現用系で仕掛かり中のＩ/Ｏ処理をキャンセルする必要がなくなる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施の形態について説明する。
【００１０】
図１は本発明の一実施形態が適用されたホットスタンバイシステムの概略図である。図示するように、本実施形態のホットスタンバイシステムは、現用系ホストコンピュータ１０００Ａと、待機系ホストコンピュータ１０００Ｂと、共有ディスク装置３０００と、コンソール端末４０００と、を有する。
【００１１】
共有ディスク装置３０００は、現用系ホストコンピュータ１０００Ａおよび待機系ホストコンピュータ１０００Ｂの両系（以下、単にホストコンピュータ１０００とも呼ぶ）からアクセス可能に構成されており、ホストコンピュータ１０００に対して少なくとも１つの論理ボリュームを提供する。ここで、各論理ボリュームは、現用系ホストコンピュータ１０００Ａおよび待機系ホストコンピュータ１０００Ｂに対して、それぞれを一意に識別可能な論理ボリュームＩＤを有している。
【００１２】
コンソール端末４０００は、ホストコンピュータ１０００に接続されており、操作者が入力したホットスタンバイ切替えコマンドをホストコンピュータ１０００に送信したり、ホストコンピュータ１０００から受信したホスト動作状態情報を表示したりする。
【００１３】
ホストコンピュータ１０００は、ＣＰＵ１３５０と、各種プログラム（ＰＧ）やデータを記憶するメモリ１４００と、コンソール端末４０００を接続するためのＳＶＰ（Service Processor）１４５０と、共有ディスク装置３０００へのアクセスを制御するためのディスク制御装置１５５０と、ネットワーク５０００を介して他のホストコンピュータ１０００と通信するための通信アダプタ１６００と、ディスク制御装置１５５０および通信アダプタ１６００の入出力を制御するＩＯＰ（Input Output Processor）１５００と、を有する。
【００１４】
メモリ１４００には、ＣＰＵ１３５０が実行するプログラムとして、アプリケーションＰＧ１０５０、系切替え制御ＰＧ１１００、ＯＳ（Operating System）１１５０、アクセス要求制御ＰＧ１２００およびデバイスドライバ１３００が記憶されている。また、アクセス要求制御ＰＧが利用するデータとして、管理テーブル（ＴＬ）１２５０が記憶されている。
【００１５】
アプリケーションＰＧ１０５０は少なくとも１つ存在する。ＣＰＵ１３５０は、アプリケーションＰＧ１０５０を実行することにより、トランザクション処理などの業務処理を行い、共有ディスク装置３０００の論理ボリュームに対するＩ/Ｏ要求を発行する。
【００１６】
系切替え制御ＰＧ１１００は、ホットスタンバイ切替え処理を実現するためのプログラムである。現用系および待機系のそれぞれにおいて、ＣＰＵ１３５０は、系切替え制御ＰＧ１１００を実行することにより、他系と連携して現用系で障害が発生した場合におけるホットスタンバイ切替え処理を実行する。この系切替え制御ＰＧ１１００には、ホットスタンバイ切替え処理のために従来より用いられているプログラムを利用できる。
【００１７】
ＯＳ１１５０は、ホストコンピュータ１０００を動作させるための基本プログラムである。ＣＰＵ１３５０は、ＯＳ１１５０を実行することにより、ホストコンピュータ１０００の各部を統括制御する。また、アプリケーションＰＧ１０５０によって発行されるＩ/Ｏ要求に応じて、アクセス要求制御ＰＧ１２００あるいはデバイスドライバ１３００にＩ/Ｏ処理を要求する。
【００１８】
デバイスドライバ１３００は、ディスク制御装置１５５０を動作させるための既存のプログラムである。ＣＰＵ１３５０は、デバイスドライバ１３００を実行することにより、ＯＳ１１５０やアクセス要求制御ＰＧ１２００からの要求に従い、ディスク制御装置１５５０を介して共有ディスク装置３０００の論理ボリュームに対するＩ/Ｏを処理する。
【００１９】
アクセス要求制御ＰＧ１２００は、ＯＳ１１５０から要求されたＩ/Ｏのデバイスドライバ１３００への転送を制御することで、共有ディスク装置３０００の論理ボリュームに対するＩ/Ｏを制御する。
【００２０】
図２はアクセス要求制御ＰＧ１２００の構成を示す図である。図示するように、アクセス要求制御ＰＧ１２００は、アクセス制御対象論理ボリューム登録ＰＧ１２１０、アクセス制御対象論理ボリューム登録解除ＰＧ１２１５、アクセス制御状態変更ＰＧ１２２０、アクセス制御状態取得ＰＧ１２２５、アクセス制御状態判定ＰＧ１２３０、Ｉ/Ｏ要求送信ＰＧ１２３５、Ｉ/Ｏ要求受信ＰＧ１２４０、および、Ｉ/Ｏ待ちプロセス管理ＰＧ１２４５を有する。
【００２１】
アクセス制御対象論理ボリューム登録ＰＧ１２１０は、アプリケーションＰＧ１０５０からのシステムコールあるいはユーザコマンドにより呼出されて、ＣＰＵ１３５０に実行される。ＣＰＵ１３５０は、アクセス制御対象論理ボリューム登録ＰＧ１２１０を実行することにより、システムコールあるいはユーザコマンドで指定された論理ボリュームをアクセス制御対象に追加する。追加された論理ボリュームは、アクセス制御状態変更ＰＧ１２２０による後述するアクセス制御状態の変更が可能となる。
【００２２】
アクセス制御対象論理ボリューム登録解除ＰＧ１２１５は、アプリケーションＰＧ１０５０からのシステムコールあるいはユーザコマンドにより呼出されて、ＣＰＵ１３５０に実行される。ＣＰＵ１３５０は、アクセス制御対象論理ボリューム登録解除ＰＧ１２１５を実行することにより、システムコールあるいはユーザコマンドで指定された論理ボリュームをアクセス制御対象から除外する。除外された論理ボリュームは、アクセス制御状態変更ＰＧ１２２０による後述するアクセス制御状態の変更が不可能となる。このため、Ｉ/Ｏ要求は全て自系のデバイスドライバ１３００で処理されることとなる。
【００２３】
アクセス制御状態変更ＰＧ１２２０は、アプリケーションＰＧ１０５０からのシステムコールあるいはユーザコマンドにより呼出されて、ＣＰＵ１３５０に実行される。ＣＰＵ１３５０は、アクセス制御状態変更ＰＧ１２２０を実行することにより、アクセス制御対象論理ボリュームへのＩ/Ｏ要求に対する制御状態を変更する。
【００２４】
アクセス制御状態取得ＰＧ１２２５は、アプリケーションＰＧ１０５０からのシステムコールあるいはユーザコマンドにより呼出されて、ＣＰＵ１３５０に実行される。ＣＰＵ１３５０は、アクセス制御状態取得ＰＧ１２２５を実行することにより、システムコールあるいはユーザコマンドで指定された論理ボリュームあるいは論理ボリュームのグループの現在のアクセス制御状態を返す。
【００２５】
アクセス制御状態判定ＰＧ１２３０は、アクセス制御対象論理ボリュームへのアクセスの際にＯＳ１１５０から呼出されて、ＣＰＵ１３５０に実行される。ＣＰＵ１３５０は、アクセス制御状態判定ＰＧ１２３０を実行することにより、後述するアクセス制御対象論理ボリューム管理ＴＬ１２６０を参照し、アクセス制御対象論理ボリュームのアクセス制御状態に応じて、自系のホストコンピュータ１０００内のデバイスドライバ１３００を呼出すか、それとも、Ｉ/Ｏ要求をカプセル化して他系のホストコンピュータ１０００に送信するかを選択する。
【００２６】
Ｉ/Ｏ要求送信ＰＧ１２３５は、アクセス制御状態判定ＰＧ１２３０から呼出されて、ＣＰＵ１３５０に実行される。ＣＰＵ１３５０は、Ｉ/Ｏ要求送信ＰＧ１２３５を実行することにより論理ボリュームへのアクセス要求をカプセル化し、これをＩＯＰ１５００を介して通信アダプタ１６００から出力し、ネットワーク５０００経由で他系のホストコンピュータ１０００に送信する。
【００２７】
Ｉ/Ｏ要求受信ＰＧ１２４０は、ネットワーク５０００を介して他系のホストコンピュータ１０００から送られてきたＩ/Ｏ要求を受信するためのプログラムである。ＣＰＵ１３５０は、Ｉ/Ｏ要求受信ＰＧ１２４０を実行することにより、ネットワーク５０００を介して他系のホストコンピュータ１０００から送られてきたＩ/Ｏ要求を、通信アダプタ１６００およびＩＯＰ１５００を介して受信し、このＩ/Ｏ要求に基づき、自系のホストコンピュータ１０００内のデバイスドライバ１３００を呼び出し処理する。
【００２８】
そして、Ｉ/Ｏ終了待ちプロセス管理ＰＧ１２４５は、Ｉ/Ｏ要求送信ＰＧ１２３５から呼出され、ＣＰＵ１３５０に実行される。ＣＰＵ１３５０は、Ｉ/Ｏ終了待ちプロセス管理ＰＧ１２４５を実行することにより、他系のホストコンピュータ１０００に送信したＩ/Ｏ要求について発行元のプロセスを管理する。Ｉ/Ｏ要求を他系のホストコンピュータ１０００に送信した後、当該Ｉ/Ｏ要求を発行したプロセスをＩ/Ｏ終了待ちに相当する状態に遷移させ、他系のホストコンピュータ１０００でのＩ/Ｏが終了し終了通知が送信されるか、それとも、他系のホストコンピュータ２０００からのＩ/Ｏ終了の通知が所定時間ない場合に、当該プロセスのＩ/Ｏ終了待ち相当の状態を解除し、Ｉ/Ｏ終了を当該プロセスに通知する。
【００２９】
図１に戻って説明を続ける。管理ＴＬ１２５０には、アクセス要求制御ＰＧ１２００が利用するデータが格納されている。
【００３０】
図３は管理ＴＬ１２５０の構成を示す図である。図示するように、管理ＴＬ１２５０は、Ｉ/Ｏ終了待ちプロセス管理ＴＬ１２５５およびアクセス制御対象論理ボリューム管理ＴＬ１２６０を有する。
【００３１】
Ｉ/Ｏ終了待ちプロセス管理ＴＬ１２５０は、Ｉ/Ｏ要求送信ＰＧ１２３５によってＩ/Ｏ要求が他系のホストコンピュータ１０００に送信された場合に、当該Ｉ/Ｏ要求と当該Ｉ/Ｏ要求を発行したプロセスとの対応付けを管理するテーブルであり、Ｉ/Ｏ要求送信ＰＧ１２３５およびＩ/Ｏ終了待ちプロセス管理ＰＧ１２４５によって更新される。Ｉ/Ｏ終了待ちプロセス管理ＴＬ１２５０は、図４に示すようなＩ/Ｏ終了待ちプロセス管理ＴＬエントリ１２５１を少なくとも１つ備えて構成される。図示するように、Ｉ/Ｏ終了待ち管理ＴＬエントリ１２５１は、Ｉ/Ｏ要求を一意に識別するＩ/Ｏ要求ＩＤ１２５２と、Ｉ/Ｏ要求元のアプリケーションＰＧ１０５０を一意に識別する要求元プロセス識別ＩＤ１２５３と、Ｉ/Ｏ要求データ１２５４とを有する。なお、図４において、斜線部分には他のフィールドを格納してもよい。
【００３２】
Ｉ/Ｏ要求データ１２５４は、図５に示すような構成を有するＩ/Ｏ要求の内容を示すデータそのもの、あるいは、該データが格納されたメモリ領域のアドレスである。図５に示すＩ/Ｏ要求データ１２５４は、Ｉ/Ｏ要求を一意に識別するＩ/Ｏ要求ＩＤ１２５６、Ｉ/Ｏの種類を示すＩ/Ｏコマンド１２５７、および、論理ボリュームに転送するデータを示す転送データ１２５８を有する。なお、図５において、斜線部分には他のフィールドを格納してもよい。
【００３３】
アクセス制御対象論理ボリューム管理ＴＬ１２６０は、アクセス制御対象論理ボリュームのアクセス制御状態を管理するテーブルであり、アクセス制御対象論理ボリューム登録ＰＧ１２１０およびアクセス制御対象論理ボリューム登録解除ＰＧ１２１５によりアクセス制御対象論理ボリュームが追加または削除され、アクセス制御状態変更ＰＧ１２２０により、アクセス制御対象論理ボリュームのグループのアクセス制御状態が更新され、そして、アクセス制御状態判定ＰＧ１２３０により参照される。アクセス制御対象論理ボリューム管理ＴＬ１２６０は、図６に示すようなアクセス制御対象論理ボリューム管理ＴＬエントリ１２６１を少なくとも１つ備えて構成される。図示するように、アクセス制御対象論理ボリューム管理ＴＬエントリ１２６１は、アクセス制御対象論理ボリュームを一意に識別する論理ボリュームＩＤ１２６２およびアクセス制御状態を表すアクセス制御状態フラグ１２６３を有する。なお、図６において、斜線部分には他のフィールドを格納してもよい。アクセス制御状態フラグ１２６３は、アクセス制御対象論理ボリュームに対してＩ/Ｏ要求が発生した場合に、これを自系のホストコンピュータ１０００内で処理することを示す「自系で処理」、および、他系のホストコンピュータ１０００に送信して処理させる「他系で処理」のいずれかの値を示す。初期状態では「自系で処理」を示している。
【００３４】
次に、ホストコンピュータ１０００がアクセス要求制御ＰＧ１２００を実行することで行う処理を説明する。
【００３５】
図７は、ホストコンピュータ１０００のＣＰＵ１３５０がアクセス制御対象論理ボリューム登録ＰＧ１２１０を実行することで行う処理を説明するためのフロー図である。上述したように、アクセス制御対象論理ボリューム登録ＰＧ１２１０は、アプリケーションＰＧ１０５０からのシステムコールあるいはユーザコマンドにより呼出されて実行される。
【００３６】
まず、ＣＰＵ１３５０は、システムコールあるいはユーザコマンドにより指定された登録対象の論理ボリュームの論理ボリュームＩＤをパラメタとして呼出すと共に、アクセス制御対象論理ボリューム管理ＴＬ１２６０に、アクセス制御対象論理ボリューム管理ＴＬエントリ１２６１を１つ追加する（ステップＳ６０００）。
【００３７】
次に、ＣＰＵ１３５０は、登録対象の論理ボリュームへのＩ/Ｏ要求に対し、アクセス要求制御ＰＧ１２００が呼出されるように、ＯＳ１１５０のデバイススイッチテーブルを書き換える。この際、書き換え前のデバイススイッチテーブルに記述されている、登録対象の論理ボリュームへのＩ/Ｏ要求に対して呼出すデバイスドライバ１３００を、当該ドライバ１３００のデバイススイッチテーブルの記述位置および論理ボリュームＩＤに対応付けてメモリ１４００などに記憶しておく。なお、デバイススイッチテーブルを書き換える処理は既知の技術により実現できる（ステップＳ６０１０）。
【００３８】
それから、ＣＰＵ１３５０は、アクセス制御対象論理ボリューム管理ＴＬ１２６０に追加したアクセス制御対象論理ボリューム管理ＴＬエントリ１２６１の論理ボリュームＩＤ１２６２に、ステップＳ６０００にてパラメタとして呼び出した論理ボリュームＩＤを登録する。また、アクセス制御状態フラグ１２６３を初期状態つまり「自系で処理」に設定する（ステップＳ６０２０）。
【００３９】
図８は、ホストコンピュータ１０００のＣＰＵ１３５０がアクセス制御対象論理ボリューム登録解除ＰＧ１２１５を実行することで行う処理を説明するためのフロー図である。上述したように、アクセス制御対象論理ボリューム登録解除ＰＧ１２１５は、アプリケーションＰＧ１０５０からのシステムコールあるいはユーザコマンドにより呼出されて実行される。
【００４０】
まず、ＣＰＵ１３５０は、システムコールあるいはユーザコマンドにより指定された登録解除対象の論理ボリュームの論理ボリュームＩＤをパラメタとして呼出す。そして、アクセス制御対象論理ボリューム管理ＴＬ１２６０から、呼び出した論理ボリュームＩＤを持つアクセス制御対象論理ボリューム管理ＴＬエントリ１２６１を検索する（ステップＳ６１００）。
【００４１】
次に、ＣＰＵ１３５０は、図７のステップＳ６０００において、パラメタとして呼び出した論理ボリュームＩＤに対応付けて記憶しておいたデバイススイッチテーブルの記述位置を、同じく当該論理ボリュームＩＤに対応付けて記憶しておいたデバイスドライバ１３００に書き換える。これにより、アクセス制御対象論理ボリューム管理ＴＬ１２６０を、システムコールあるいはユーザコマンドにより指定された登録解除対象の論理ボリュームが登録される前の状態に戻す（ステップＳ６１１０）。
【００４２】
それから、ＣＰＵ１３５０は、アクセス制御対象論理ボリューム管理ＴＬ１２６０からステップＳ６１００で検索したアクセス制御対象論理ボリューム管理ＴＬエントリ１２６１を削除する（ステップＳ６１２０）。
【００４３】
図９は、ホストコンピュータ１０００のＣＰＵ１３５０がアクセス制御状態変更ＰＧ１２２０を実行することで行う処理を説明するためのフロー図である。上述したように、アクセス制御状態変更ＰＧ１２２０は、アプリケーションＰＧ１０５０からのシステムコールあるいはユーザコマンドにより呼出されて実行される。
【００４４】
まず、ＣＰＵ１３５０は、システムコールあるいはユーザコマンドにより指定された論理ボリュームの論理ボリュームＩＤをパラメタとして呼び出す。そして、アクセス制御対象論理ボリューム管理ＴＬ１２６０から、呼び出した論理ボリュームＩＤを持つアクセス制御対象論理ボリューム管理ＴＬエントリ１２６１を検索する（ステップＳ６１５０）。
【００４５】
次に、ＣＰＵ１３５０は、検索したエントリ１２６１のアクセス制御状態フラグ１２６３を、システムコールあるいはユーザコマンドにより指定されたアクセス制御状態（「自系で処理」および「他系で処理」のいずれか）に変更する（ステップＳ６１６０）。
【００４６】
図１０は、ホストコンピュータ１０００のＣＰＵ１３５０がアクセス制御状態取得ＰＧ１２２５を実行することで行う処理を説明するためのフロー図である。上述したように、アクセス制御状態取得ＰＧ１２２５は、アプリケーションＰＧ１０５０からのシステムコールあるいはユーザコマンドにより呼出されて実行される。
【００４７】
まず、ＣＰＵ１３５０は、システムコールあるいはユーザコマンドにより指定された論理ボリュームの論理ボリュームＩＤをパラメタとして呼び出す。そして、アクセス制御対象論理ボリューム管理ＴＬ１２６０から、呼び出した論理ボリュームＩＤを持つアクセス制御対象論理ボリューム管理ＴＬエントリ１２６１を検索する。該当するエントリが見つかれば、当該エントリに登録されているアクセス制御状態フラグ１２６３を、アクセス制御対象論理ボリューム取得ＰＧ１２２５の呼出し元に返す。この際、アクセス制御状態フラグ１２６３以外の情報を伴ってもよい（ステップＳ６２００）。
【００４８】
図１１は、ホストコンピュータ１０００のＣＰＵ１３５０がアクセス制御状態判定ＰＧ１２３０を実行することで行う処理を説明するためのフロー図である。上述したように、アクセス制御状態判定ＰＧ１２３０は、アクセス制御対象論理ボリュームへのアクセス（Ｉ/Ｏ要求）の際にＯＳ１１５０から呼出されて実行される。
【００４９】
まず、ＣＰＵ１３５０は、Ｉ/Ｏ要求の対象論理ボリュームの論理ボリュームＩＤをパラメタとして呼び出す。そして、アクセス制御対象論理ボリューム管理ＴＬ１２６０から、呼び出した論理ボリュームＩＤを持つアクセス制御対象論理ボリューム管理ＴＬエントリ１２６１を検索し、検索したエントリ１２６１のアクセス制御状態フラグ１２６３を読み出す（ステップＳ６３００）。
【００５０】
次に、ＣＰＵ１３５０は、読み出したアクセス制御状態フラグ１２６３が「他系で処理」を示しているか否かを調べる（ステップＳ６３０５）。
【００５１】
「他系で処理」を示していない場合、つまり「自系で処理」を示している場合（ステップＳ６３０５でＮｏ）、ＣＰＵ１３５０は、図７のステップＳ６０００において、Ｉ/Ｏ要求の対象論理ボリュームの論理ボリュームＩＤに対応付けて記憶しておいたデバイスドライバ１３００を呼び出してＩ/Ｏ要求を処理させる。その後、ステップＳ６３２５に進む（ステップＳ６３１０）。
【００５２】
一方、「他系で処理」を示している場合（ステップＳ６３０５でＹｅｓ）、Ｉ/Ｏ要求送信ＰＧ１２３５を呼出して、他系のホストコンピュータ１０００にＩ/Ｏ要求を送信する（ステップＳ６３１５）。それから、Ｉ/Ｏ終了待ちプロセス管理ＰＧ１２４５を呼び出し、当該Ｉ／Ｏ要求を発行したアプリケーションＰＧ１０５０をＩ/Ｏ終了待ちに相当する状態に遷移させる。この際、Ｉ/Ｏ終了待ちプロセス管理ＰＧ１２４５は、他系のホストコンピュータ１０００でＩ/Ｏ処理が完了するか、あるいは、所定の時間が経過するのを待ち、それから処理を終了する（ステップＳ６３２０）。その後、ステップＳ６３２５に進む。
【００５３】
さて、ステップＳ６３２５において、ＣＰＵ１３５０は、Ｉ/Ｏ要求を発行したアプリケーションＰＧ１０５０にＩ/Ｏ完了の旨を通知する。当該処理は、既知の技術により実現される。なお、ステップＳ６３２０で所定の時間が経過するまでＩ/Ｏ要求送信先からＩ/Ｏ完了が通知されなかった場合、Ｉ/Ｏ要求を発行したアプリケーションＰＧ１０５０に対して、デバイスが無応答である完了通知に相当する通知がなされる。
【００５４】
図１２は、ホストコンピュータ１０００のＣＰＵ１３５０がＩ/Ｏ要求送信ＰＧ１２３５を実行することで行う処理を説明するためのフロー図である。上述したようにＩ/Ｏ要求送信ＰＧ１２３５は、アクセス制御状態判定ＰＧ１２３０から呼出されて実行される。
【００５５】
まず、ＣＰＵ１３５０は、アクセス制御状態判定ＰＧ１２３０から通知されたＩ/Ｏ要求のＩ/Ｏ要求データ１２５４を作成し、このＩ/Ｏ要求をパッケージ化する。具体的には、当該Ｉ/Ｏ要求を一意に識別可能なＩ/Ｏ要求ＩＤ１２５６を割り当て、当該Ｉ/Ｏ要求が要求するＩ/Ｏの種類を表すＩ/Ｏコマンド１２５７を設定し、当該Ｉ/Ｏ要求が要求するＩ/Ｏに用いるデータを転送データ１２５８に格納することにより、Ｉ/Ｏ要求データ１２５４を作成する（ステップＳ６４００）。
【００５６】
次に、ＣＰＵ１３５０は、ＩＯＰ１５００を用いて、他系のホストコンピュータ１０００のＩ/Ｏ要求受信ＰＧ１２４０を宛先として、作成したＩ/Ｏ要求データ１２５４を通信アダプタ１６００から送信する。なお、この処理は既知の技術により実現される（ステップＳ６４１０）。
【００５７】
図１３は、ホストコンピュータ１０００のＣＰＵ１３５０がＩ/Ｏ要求受信ＰＧ１２４０を実行することで行う処理を説明するためのフロー図である。このＩ/Ｏ要求受信ＰＧ１２４０は、ＩＯＰ１５００が通信アダプタ１６００を介して他系のホストコンピュータ１０００からＩ/Ｏ要求データ１２５４を受信すると呼出されて実行される。
【００５８】
まず、ＣＰＵ１３５０は、他系のホストコンピュータ１０００から受信したＩ/Ｏ要求データ１２５４に基づいて、デバイスドライバ１３００を呼び出すために必要なパラメタを作成する（ステップＳ６５００）。そして、この作成したパラメタに基づいて、デバイスドライバ１３００を呼び出す（ステップＳ６５１０）。
【００５９】
その後、ＣＰＵ１３５０は、デバイスドライバ１３００がＩ/Ｏ処理を終えてＩ/Ｏ完了を通知したならば、ＩＯＰ１５００を用いて、他系のホストコンピュータ１０００のＩ/Ｏ終了待ちプロセス管理ＰＧ１２４５を宛先として、この通知を通信アダプタ１６００から送信する（ステップＳ６５２０）。
【００６０】
図１４は、ホストコンピュータ１０００のＣＰＵ１３５０がＩ/Ｏ終了待ちプロセス管理ＰＧ１２４５を実行することで行う処理を説明するためのフロー図である。上述したように、Ｉ/Ｏ終了待ちプロセス管理ＰＧ１２４５は、Ｉ/Ｏ要求送信ＰＧ１２３５から呼出されて実行される。
【００６１】
まず、ＣＰＵ１３５０は、Ｉ/Ｏ要求送信ＰＧ１２３５により図１２のステップＳ６４００で作成されたＩ/Ｏ要求データをパラメタとし、Ｉ/Ｏ終了待ちプロセス管理ＴＬ１２５０に、Ｉ/Ｏ終了待ちプロセス管理ＴＬエントリ１２５１を追加する（ステップＳ６６００）。
【００６２】
次に、ＣＰＵ１３５０は、追加したＩ/Ｏ終了待ちプロセス管理ＴＬエントリ１２５１のＩ/Ｏ要求ＩＤ１２５２に、パラメタのＩ/Ｏ要求データに格納されたＩ/Ｏ要求ＩＤ１２５６をコピーし、該エントリ１２５１の要求元プロセスＩＤ１２５３に、パラメタのＩ/Ｏ要求データ１２５４が示すＩ/Ｏ要求を発行したアプリケーションＰＧ１０５０のＩＤを取得し格納する。さらに、該エントリ１２５１のＩ/Ｏ要求データ１２５４に、パラメタであるＩ/Ｏ要求データをコピーする。ここで、Ｉ/Ｏ要求データ１２５４には、パラメタのＩ/Ｏ要求データを格納したメモリ領域のアドレスをセットしてもよい。なお、アプリケーションＰＧ１０５０のＩＤを取得する処理は、既知の技術により実現できる（ステップＳ６６１０）。
【００６３】
次に、ＣＰＵ１３５０は、パラメタのＩ/Ｏ要求データ１２５４が示すＩ/Ｏ要求を発行したアプリケーションＰＧ１０５０をＩ/Ｏ待ち相当の状態とするため、当該アプリケーションＰＧ１０５０を休眠させる。プロセスを休眠させる処理は、既知の技術により実現できる（ステップＳ６６２０）。
【００６４】
次に、ＣＰＵ１３５０は、ＩＯＰ１５００が通信アダプタ１６００を介して他系のホストコンピュータ１０００からＩ/Ｏ完了を受信するか、あるいは、所定の時間が経過するのを待つ。これらの処理は、既知の技術により実現できる（ステップＳ６６３０）。
【００６５】
次に、ＣＰＵ１３５０は、パラメタのＩ/Ｏ要求データ１２５４が示すＩ/Ｏ要求を発行したアプリケーションＰＧ１０５０をＩ/Ｏ待ち相当の状態から解除するため、当該アプリケーションＰＧ１０５０を休眠状態から戻す。プロセスを休眠状態から戻す処理は、既知の技術により実現できる（ステップＳ６６４０）。
【００６６】
最後に、ＣＰＵ１３５０は、Ｉ/Ｏ終了待ちプロセス管理ＴＬ１２５０からパラメタのＩ/Ｏ要求に対応するＩ/Ｏ終了待ちプロセス管理ＴＬエントリ１２５１を削除する（ステップＳ６６５０）。
【００６７】
次に、本実施形態のホットスタンバイシステムにおけるＩ/Ｏ処理の流れを説明する。
【００６８】
図１５は、現用系ホストコンピュータ１０００Ａおよび待機系ホストコンピュータ１０００ＢにおけるＩ/Ｏ処理の流れを説明するための図である。この図において矢印は、プログラム間の呼び出し関係を表している。なお、以下に説明において、各処理の実行主体は、実際には各処理に対応するプログラムを実行するＣＰＵ１３５０である。しかし、ここでは説明を分かり易くするために、プログラムを処理の実行主体として説明する。
【００６９】
＜＜現用系のホストコンピュータ１０００Ａでの処理＞＞
現用系のホストコンピュータ１０００Ａにおいて、稼動中のアプリケーションＰＧ１０５０がＯＳ１１５０に対しＩ/Ｏを要求するシステムコールを発行する。このＩ/Ｏ要求には、アクセスする論理ボリュームの論理ボリュームＩＤ、アクセスの種類、および、処理に利用するバッファの指定を含む（ステップＳ７０００）。
【００７０】
さて、ＯＳ１１５０は、アプリケーションＰＧ１０５０からのＩ/Ｏ要求に応じ、ＯＳ１１５０が備えるデバイススイッチテーブル１１５１を利用して、呼出し先のプログラムを決定する。デバイススイッチテーブル１１５１は、論理ボリュームＩＤとアクセスの種類とを軸としたテーブルであり、論理ボリュームＩＤおよびアクセスの種類の組合せにより定まる各エントリには、処理内容に対応したプログラムのアドレスが格納されている。ここで、アクセス制御対象論理ボリュームに対応したエントリには、アクセス制御対象論理ボリューム登録ＰＧ１２１０（図７のフロー参照）によってアクセス制御状態判定ＰＧ１２２０のアドレスが格納されている。このため、ＯＳ１１５０は、Ｉ/Ｏ要求のアクセス先の論理ボリュームがアクセス制御対象論理ボリュームである場合、アクセス制御状態判定ＰＧ１２２０のアドレスを呼び出す（ステップＳ７１００）。なお、アクセス制御対象論理ボリュームでない論理ボリュームに対応したエントリには、自系のデバイスドライバ１３００のアドレスが格納されている。したがって、ＯＳ１１５０は、Ｉ/Ｏ要求のアクセス先の論理ボリュームがアクセス制御対象論理ボリュームでない場合、自系のデバイスドライバ１３００を直接呼び出す。
【００７１】
アクセス制御状態判定ＰＧ１２２０は、ＯＳ１１５０によって呼び出されると、図１１に示すフローに従い、アクセス制御対象論理ボリューム管理ＴＬ１２６０から、アクセス制御対象論理ボリュームＩＤを持つアクセス制御対象論理ボリューム管理ＴＬエントリ１２６１を検索し、このエントリ１２６１からアクセス制御状態を読出す。そして、アクセス制御状態が「自系で処理」を示している場合は、アクセス制御対象論理ボリューム登録ＰＧ１２１０（図７のフロー参照）によってアクセス制御対象論理ボリュームＩＤに対応付けられている自系のデバイスドライバ１３００を呼び出す。これにより、現用系のホストコンピュータ１０００Ａのデバイスドライバ１３００がＩ/Ｏ処理を行う。一方、アクセス制御状態が「他系で処理」を示している場合は、Ｉ/Ｏ要求送信ＰＧ１２３５を呼び出す（ステップＳ７２００）。
【００７２】
Ｉ/Ｏ要求送信ＰＧ１２３５は、アクセス制御状態判定ＰＧ１２２０によって呼び出されると、図１２のフローに従いＩ/Ｏ要求をカプセル化し、ネットワーク５０００を介して、待機系のホストコンピュータ１０００Ｂに送信する（ステップＳ７３００）。
【００７３】
＜＜待機系のホストコンピュータ１０００Ｂでの処理＞＞
待機系のホストコンピュータ１０００Ｂにおいて、Ｉ/Ｏ要求受信ＰＧ１２４０は、現用系のホストコンピュータ１０００ＡのＩ/Ｏ要求送信ＰＧ１２３５から送信されたＩ/Ｏ要求を受信すると、図１３のフローに従い自系のデバイスドライバ１３００を呼び出す。これにより、待機系のホストコンピュータ１０００Ｂのデバイスドライバ１３００がＩ/Ｏ処理を行う（ステップＳ７４００）。
【００７４】
さて、デバイスドライバ１３００によるＩ/Ｏ処理が終了すると、Ｉ/Ｏ要求受信ＰＧ１２４０は、現用系のホストコンピュータ１０００Ａのアクセス制御状態判定ＰＧ１２２０に対し、ネットワーク５０００を介してＩ/Ｏ終了を通知する（ステップＳ７５００）。
【００７５】
＜＜現用系のホストコンピュータ１０００Ａでの処理＞＞
現用系のホストコンピュータ１０００Ａにおいて、アクセス制御状態判定ＰＧ１２２０は、ネットワーク５０００を介して待機系のホストコンピュータ１０００ＢからＩ/Ｏ終了通知を受け取ると、Ｉ/Ｏを要求したアプリケーションＰＧ１０５０に対しＩ/Ｏ完了を通知する（ステップＳ７６００）。
【００７６】
以上により、現用系のホストコンピュータ１０００Ａのアクセス制御状態判定ＰＧ１２２０がアプリケーションＰＧ１０５０からのＩ/Ｏ要求に対し、アクセス先の論理ボリュームがアクセス制御対象論理ボリュームならばその属性（アクセス制御状態）を判定し、「他系で処理」の場合は待機系のホストコンピュータ１０００Ｂに当該Ｉ/Ｏ要求を送信して処理を行う。
【００７７】
次に、本実施形態のホットスタンバイシステムの系切替え処理の流れを説明する。
【００７８】
図１６は、現用系のホストコンピュータ１０００Ａおよび待機系ホストコンピュータ１０００Ｂにおける系切替え処理の流れを説明するための図である。ここでは、現用系のホストコンピュータ１０００ＡのＩ/Ｏパスに障害が発生したケースを想定している。なお、以下に説明において、各処理の実行主体は、実際には各処理に対応するプログラムを実行するＣＰＵ１３５０である。しかし、ここでは説明を分かり易くするために、プログラムを処理の実行主体として説明する。
【００７９】
＜＜現用系のホストコンピュータ１０００Ａでの処理＞＞
現用系のホストコンピュータ１０００Ａにおいて、ＯＳ１１５０は、システム立ち上げ時に、アクセス制御対象論理ボリューム登録ＰＧ１２１０に対し、共有ディスク装置３０００が提供する論理ボリュームについてアクセス制御対象論理ボリュームの登録システムコールを発行する。これを受けて、アクセス制御対象論理ボリューム登録ＰＧ１２１０は、図７に示すフローに従いこの論理ボリュームをアクセス制御対象論理ボリュームに設定する（ステップＳ８０００）。この際、アクセス制御対象論理ボリューム管理ＴＬ１２６０に追加されたアクセス制御対象論理ボリューム管理ＴＬエントリ１２６１のアクセス制御状態は初期状態「自系で処理」に設定されている。
【００８０】
さて、系切替え制御ＰＧ１１００は、ステム立ち上げ時にＯＳ１１５０に呼び出されて実行される。そして、系切替え制御ＰＧ１１００は、自系が現用系の場合、Ｉ/Ｏパス（デバイスドライバ１３００およびディスク制御装置１５５０）を監視する。Ｉ/Ｏパスに障害が発生すると、これを検知し（ステップＳ８０２０）、Ｉ/Ｏ要求のアクセス先論理ボリュームであるアクセス制御対象論理ボリュームのアクセス制御状態を「他系で処理」に変更すべく、アクセス制御状態の変更システムコールを発行する。これを受けて、アクセス制御状態変更ＰＧ１２２０は、図９に示すフローに従い、このアクセス制御対象論理ボリュームのアクセス制御対象論理ボリューム管理ＴＬエントリ１２６１のアクセス制御状態を「他系で処理」に変更する（ステップＳ８０３０）。
【００８１】
その後、アプリケーションＰＧ１０５０からＩ/Ｏ要求が発行されると、図１５で説明したようにアクセス制御状態判定ＰＧ１２２５が呼出される。アクセス制御状態判定ＰＧ１２２５は、Ｉ/Ｏ要求のアクセス先であるアクセス制御対象論理ボリュームのアクセス制御状態が「他系で処理」であることを確認すると、Ｉ/Ｏ要求送信ＰＧ１２３５を用いて当該Ｉ/Ｏ要求を待機系のホストコンピュータ１０００Ｂに送信する。次に、Ｉ/Ｏ終了待ちプロセス管理ＰＧ１２４５は、図１４に示すフローに従い、当該Ｉ/Ｏ要求を発行したアプリケーションＰＧ１０５０をＩ/Ｏ完了待ち相当の状態に遷移させた後、完了通知が送信されるか、あるいは、所定の時間が経過するのを待つ（ステップＳ８０４０）。
【００８２】
さて、Ｉ/Ｏ終了待ちプロセス管理ＰＧ１２４５は、待機系のホストコンピュータ１０００ＢからＩ/Ｏ完了通知が送信されるか（ステップＳ８０５０）、あるいは、所定の時間が経過すると、ステップＳ８０４０でＩ/Ｏ完了待ち相当の状態に遷移させたアプリケーションＰＧ１０５０のＩ/Ｏ完了待ち状態を解除し、Ｉ/Ｏ終了を通知する（ステップＳ８０６０）。
【００８３】
次に、系切替え制御ＰＧ１１００は、現用系のホストコンピュータ１０００Ａにおける全てのＩ/Ｏが完了するまで待機する。この間にＩ/Ｏが発生した場合は，ステップ８０４０により当該Ｉ/Ｏ要求を待機系のホストコンピュータ１０００Ｂに送信する。なお、待機する間、新たなＩ/Ｏが発生しないようにするための所定の処理を行うようにしてもよい（ステップＳ８０６０）。
【００８４】
その後、系切替え制御ＰＧ１１００は、全てのＩ/Ｏ要求が終了すると、ＩＯＰ１５００および通信アダプタ１６００を介して待機系のホストコンピュータ１０００Ｂにリセット完了を示す通知を送信する。その後、自系を待機系に切替える。なお、この処理は既知の技術により実現される（ステップＳ８０７０）。
【００８５】
＜＜待機系のホストコンピュータ１０００Ｂでの処理＞＞
待機系のホストコンピュータ１０００Ｂにおいて、ＯＳ１１５０は、システム立ち上げ時に、アクセス制御対象論理ボリューム登録ＰＧ１２１０に対し、共有ディスク装置３０００が提供する論理ボリュームについてアクセス制御対象論理ボリュームの登録システムコールを発行する。これを受けて、アクセス制御対象論理ボリューム登録ＰＧ１２１０は、図７に示すフローに従いこの論理ボリュームをアクセス制御対象論理ボリュームに設定する（ステップＳ８１００）。この際、アクセス制御対象論理ボリューム管理ＴＬ１２６０に追加されたアクセス制御対象論理ボリューム管理ＴＬエントリ１２６１のアクセス制御状態は初期状態「自系で処理」に設定されている。
【００８６】
また、Ｉ/Ｏ要求受信ＰＧ１２４０は、システム立ち上げ時にＯＳ１１５０に呼び出されて実行される。そして、通信アダプタ１６００およびＩＯＰ１５００を介して、待機中に現用系のホストコンピュータ１０００ＡからＩ/Ｏ要求を受信すると（ステップＳ８１２０）、図１３に示すフローに従い、自系のデバイスドライバ１３００を呼出して、このＩ/Ｏ要求を処理する（ステップＳ８１３０）。そして、デバイスドライバ１３００での処理が完了すると、Ｉ/Ｏ要求受信ＰＧ１２４０は、ＩＯＰ１５００および通信アダプタ１６００を介して現用系のホストコンピュータ１０００ＡにＩ/Ｏが完了した旨を通知する（ステップＳ８１４０）。
【００８７】
また、系切替え制御ＰＧ１１００は、ステム立ち上げ時にＯＳ１１５０に呼び出されて実行される。そして、系切替え制御ＰＧ１１００は、自系が待機系の場合、通信アダプタ１６００およびＩＯＰ１５００を介して現用系のホストコンピュータ１０００Ａからリセット完了通知が送られてくるのを監視する。現用系のホストコンピュータ１０００Ａからリセット完了通知を受信すると（ステップＳ８１５０）、自系を現用系に切替え、業務引継ぎのための処理を開始する。なお、この処理は既知の技術により実現される（ステップＳ８１６０）。
【００８８】
以上により、現用系のホストコンピュータ１０００Ａに障害が発生した場合、この際に現用系で仕掛中のＩ/Ｏ要求をキャンセルすることなく、待機系のホストコンピュータ１０００Ｂへ送信し、待機系のホストコンピュータ１０００ＢのＩ/Ｏパスを利用してＩ/Ｏを処理することにより、業務引継ぎ処理のロールバック処理が不要となり、業務引継ぎ時間を短縮することができる。
【００８９】
次に、本実施形態のホットスタンバイシステムにおける業務引継ぎ処理時間の短縮効果を説明する。
【００９０】
図１７は、本実施形態のホットスタンバイシステムにおける業務引継ぎ処理時間の短縮効果を説明するための図である。ここでは、現用系のホストコンピュータ１０００Ａでの業務中にＩ/Ｏパス障害が起こり、系切替えを行った後に業務引継ぎを行う場合の処理の流れを示している。
【００９１】
＜＜現用系のホストコンピュータ１０００Ａの処理＞＞
Ｉ/Ｏパスの障害が未だ発生していない状態下で、現用系のホストコンピュータ１０００Ａ上で稼動しているアプリケーションＰＧ１０５０によりＩ/Ｏ要求（１）〜（３）が出されたとする。これを受けて、ＯＳ１１５０はアクセス制御状態判定ＰＧ１２３０を呼び出す。このとき、アクセス制御対象の論理ボリュームは「自系で処理」の属性となっているため、アクセス制御状態判定ＰＧ１２３０はデバイスドライバ１３００を呼び出し、Ｉ/Ｏ要求（１）〜（３）を処理する（ステップＳ９６００〜Ｓ９６２０）。
【００９２】
Ｉ/Ｏパスに障害が発生すると、系切替え制御ＰＧ１１００はこれを検出し、アクセス制御状態変更ＰＧ１２２０を呼び出し、アクセス制御対象論理ボリュームのアクセス制御状態を「他系で処理」に変更する。これにより、Ｉ/Ｏパスの障害が発生した際に仕掛かり中であった、アプリケーションＰＧ１０５０が発行したＩ/Ｏ要求（４）〜（６）は、キャンセルされることなく、待機系のホストコンピュータ１０００Ｂに送信される（ステップＳ９６３０〜Ｓ９６５０）。そして、待機系のホストコンピュータ１０００ＢによりＩ/Ｏ要求（４）〜（６）の処理が終了したならば、系切替え制御ＰＧ１１００が待機系のホストコンピュータ１０００Ｂにリセット完了通知を送信する（ステップＳ９６６０）。
【００９３】
＜＜待機系のホストコンピュータ１０００Ｂの処理＞＞
Ｉ/Ｏ要求受信ＰＧ１２４０は、現用系のホストコンピュータ１０００ＡからＩ/Ｏ要求（４）〜（６）を受信すると、デバイスドライバ１３００を呼び出しこれらを処理する（ステップＳ９７００〜Ｓ９７２０）。また、系切替え制御ＰＧ１１００は、現用系のホストコンピュータ１０００Ａからリセット完了通知を受信すると（ステップＳ９７３０）、現用系のホストコンピュータ１０００ＡにおいてＩ/Ｏパスの障害が発生した際に仕掛かり中であったＩ/Ｏ要求（４）〜（６）を再実行する必要がないので、即座に業務を再開する（ステップＳ９７４０）。
【００９４】
このように、本実施形態では、現用系のホストコンピュータ１０００ＡにおいてＩ/Ｏパスの障害が発生した際に仕掛かり中であったＩ/Ｏ要求（４）〜（６）がキャンセルされることなく、待機系のホストコンピュータ１０００Ｂで処理される。したがって、待機系のホストコンピュータ１０００Ｂは、現用系に切替わった後（リセット完了通知受信後）に、Ｉ/Ｏ要求（４）〜（６）を再実行することなく業務を再開できるので、業務引継ぎ処理を時間を短縮できる。また、ロールバックなどの処理も不要である。
【００９５】
なお、本発明は上記の実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。
【００９６】
例えば、上記の実施形態では、現用系のホストコンピュータ１０００ＡのＩ/Ｏパスに障害が発生した場合に、現用系のホストコンピュータ１０００Ａで仕掛かり中であったＩ/Ｏ要求を待機系のホストコンピュータ１０００Ｂのデバイスドライバで処理するようにしている。しかし、本発明はこれに限定されない。例えば、現用系のホストコンピュータ１０００ＡのＩ/Ｏパスが過負荷状態に陥った場合に、現用系のホストコンピュータ１０００Ａで仕掛かり中であったＩ/Ｏ要求を待機系のホストコンピュータ１０００Ｂのデバイスドライバで処理するようにしてもよい。
【００９７】
以下に、本実施形態の変形例のホットスタンバイシステムにおける系切替え処理の流れを説明する。
【００９８】
図１８は、現用系ホストコンピュータ１０００Ａおよび待機系ホストコンピュータ１０００Ｂにおける系切替え処理の流れを説明するための図である。ここでは、現用系のホストコンピュータ１０００ＡのＩ/Ｏパスが過負荷状態に陥ったケースを想定している。なお、以下に説明において、各処理の実行主体は、実際には各処理に対応するプログラムを実行するＣＰＵ１３５０である。しかし、ここでは説明を分かり易くするために、プログラムを処理の実行主体として説明する。
【００９９】
＜＜現用系のホストコンピュータ１０００Ａでの処理＞＞
現用系のホストコンピュータ１０００Ａにおいて、ＯＳ１１５０は、システム立ち上げ時に、アクセス制御対象論理ボリューム登録ＰＧ１２１０に対し、共有ディスク装置３０００が提供する論理ボリュームについてアクセス制御対象論理ボリュームの登録システムコールを発行する。これを受けて、アクセス制御対象論理ボリューム登録ＰＧ１２１０は、図７に示すフローに従いこの論理ボリュームをアクセス制御対象論理ボリュームに設定する（ステップＳ９０００）。この際、アクセス制御対象論理ボリューム管理ＴＬ１２６０に追加されたアクセス制御対象論理ボリューム管理ＴＬエントリ１２６１のアクセス制御状態は初期状態「自系で処理」に設定されている。
【０１００】
さて、系切替え制御ＰＧ１１００は、ステム立ち上げ時にＯＳ１１５０に呼び出されて実行される。そして、系切替え制御ＰＧ１１００は、自系が現用系の場合、Ｉ/Ｏパス（デバイスドライバ１３００およびディスク制御装置１５５０）の負荷状態を監視し（ステップＳ９０１０）、その結果に応じてアクセス制御対象論理ボリューム管理ＴＬエントリ１２６１のアクセス制御状態を変更すべく、アクセス制御状態の変更システムコールを発行する。これを受けて、アクセス制御状態変更ＰＧ１２２０は、図９に示すフローに従い、アクセス制御対象論理ボリュームのアクセス制御対象論理ボリューム管理ＴＬエントリ１２６１のアクセス制御状態を変更する。具体的には、Ｉ/Ｏパスが過負荷状態（例えば稼働率が所定パーセント以上）に陥った場合、アクセス制御状態を「他系で処理」に変更する（ステップＳ９０２０）。一方、Ｉ/Ｏパスが過負荷状態でない場合、アクセス制御状態を「自系で処理」に変更する（ステップＳ９０３０）
その後、アプリケーションＰＧ１０５０からＩ/Ｏ要求が発行されると、図１５で説明したようにアクセス制御状態判定ＰＧ１２２５が呼出される。アクセス制御状態判定ＰＧ１２２５は、Ｉ/Ｏ要求のアクセス先であるアクセス制御対象論理ボリュームのアクセス制御状態を確認する（ステップＳ９０４０）。アクセス制御状態が「自系で処理」の場合は、自系のデバイスドライバ１３００を呼出して、このＩ/Ｏ要求を処理する（ステップＳ９０５０）。その後、ステップＳ９０１０に戻る。アクセス制御状態が「他系で処理」の場合は、Ｉ/Ｏ要求送信ＰＧ１２３５を用いて当該Ｉ/Ｏ要求を待機系のホストコンピュータ１０００Ｂに送信する。次に、Ｉ/Ｏ終了待ちプロセス管理ＰＧ１２４５は、図１４に示すフローに従い、当該Ｉ/Ｏ要求を発行したアプリケーションＰＧ１０５０をＩ/Ｏ完了待ち相当の状態に遷移させた後、完了通知が送信されるか、あるいは、所定の時間が経過するのを待つ（ステップＳ９０６０）。
【０１０１】
さて、Ｉ/Ｏ終了待ちプロセス管理ＰＧ１２４５は、待機系のホストコンピュータ１０００ＢからＩ/Ｏ完了通知が送信されるか、あるいは、所定の時間が経過すると、ステップＳ９０６０でＩ/Ｏ完了待ち相当の状態に遷移させたアプリケーションＰＧ１０５０のＩ/Ｏ完了待ち状態を解除し、Ｉ/Ｏ完了を通知する（ステップＳ９０７０）。その後、ステップＳ９０１０に戻る。
【０１０２】
＜＜待機系のホストコンピュータ１０００Ｂでの処理＞＞
待機系のホストコンピュータ１０００Ｂにおいて、ＯＳ１１５０は、システム立ち上げ時に、アクセス制御対象論理ボリューム登録ＰＧ１２１０に対し、共有ディスク装置３０００が提供する論理ボリュームについてアクセス制御対象論理ボリュームの登録システムコールを発行する。これを受けて、アクセス制御対象論理ボリューム登録ＰＧ１２１０は、図７に示すフローに従いこの論理ボリュームをアクセス制御対象論理ボリュームに設定する（ステップＳ９１００）。この際、アクセス制御対象論理ボリューム管理ＴＬ１２６０に追加されたアクセス制御対象論理ボリューム管理ＴＬエントリ１２６１のアクセス制御状態は初期状態「自系で処理」に設定されている。
【０１０３】
また、Ｉ/Ｏ要求受信ＰＧ１２４０は、システム立ち上げ時にＯＳ１１５０に呼び出されて実行される。そして、通信アダプタ１６００およびＩＯＰ１５００を介して、待機中に現用系のホストコンピュータ１０００ＡからＩ/Ｏ要求を受信すると（ステップＳ９１１０）、図１３に示すフローに従い、自系のデバイスドライバ１３００を呼出して、このＩ/Ｏ要求を処理する（ステップＳ９１２０）。そして、デバイスドライバ１３００での処理が完了すると、Ｉ/Ｏ要求受信ＰＧ１２４０は、ＩＯＰ１５００および通信アダプタ１６００を介して現用系のホストコンピュータ１０００ＡにＩ/Ｏが完了した旨を通知する（ステップＳ９１３０）。その後、ステップＳ９１１０に戻って、新たなＩ/Ｏ要求のい受信を待つ。
【０１０４】
以上により、現用系のホストコンピュータ１０００Ａが過負荷状態に陥った場合に、待機系のホストコンピュータ１０００ＢのＩ/Ｏパスを利用してＩ/Ｏ処理の負荷を分散することができる。
【０１０５】
また、上記の実施形態では、待機系のホストコンピュータ１０００Ａで稼動中のＩ/Ｏ要求受信ＰＧ１２４０は、通信アダプタ１６００およびＩＯＰ１５００を介してＩ/Ｏ要求を受信すると、自系のデバイスドライバ１３００を呼び出してこのＩ/Ｏ要求を処理させている。しかし、本発明はこれに限定されない。アクセス制御状態判定ＰＧ１２２５を呼び出して、受信したＩ/Ｏ要求を自系のデバイスドライバで処理するか否かを判断させるようにしてもよい。ここで、自系が「待機系」であるにも関わらずアクセス制御状態「他系で処理」に設定されている場合は、Ｉ/Ｏ要求送信ＰＧ１２３５を用いて予め定められた他の待機系のホストコンピュータに、このＩ/Ｏ要求を転送するようにしてもよい。そして、当該他のホストコンピュータからＩ/Ｏ完了通知を受信したならば、これを現用系のホストコンピュータ１０００Ａに転送する。このようにすれば、３台以上のホストコンピュータを用いてホットスタンバイシステムを構築することが可能となる。
【図面の簡単な説明】
【０１０６】
【図１】図１は本発明の一実施形態が適用されたホットスタンバイシステムの概略図である。
【図２】図２はアクセス要求制御ＰＧ１２００の構成を示す図である。
【図３】図３は管理ＴＬ１２５０の構成を示す図である。
【図４】図４はＩ/Ｏ終了待ちプロセス管理ＴＬ１２５０を構成するＩ/Ｏ終了待ちプロセス管理ＴＬエントリ１２５１を説明するための図である。
【図５】図５はＩ/Ｏ要求データ１２５４を説明するための図である。
【図６】図６はアクセス制御対象論理ボリューム管理ＴＬ１２６０を構成するアクセス制御対象論理ボリューム管理ＴＬエントリ１２６１を説明するための図である。
【図７】図７はホストコンピュータ１０００のＣＰＵ１３５０がアクセス制御対象論理ボリューム登録ＰＧ１２１０を実行することで行う処理を説明するフロー図である。
【図８】図８はホストコンピュータ１０００のＣＰＵ１３５０がアクセス制御対象論理ボリューム登録解除ＰＧ１２１５を実行することで行う処理を説明するフロー図である。
【図９】図９はホストコンピュータ１０００のＣＰＵ１３５０がアクセス制御状態変更ＰＧ１２２０を実行することで行う処理を説明するフロー図である。
【図１０】図１０はホストコンピュータ１０００のＣＰＵ１３５０がアクセス制御状態取得ＰＧ１２２５を実行することで行う処理を説明するフロー図である。
【図１１】図１１はホストコンピュータ１０００のＣＰＵ１３５０がアクセス制御状態判定ＰＧ１２３０を実行することで行う処理を説明するフロー図である。
【図１２】図１２はホストコンピュータ１０００のＣＰＵ１３５０がＩ/Ｏ要求送信ＰＧ１２３５を実行することで行う処理を説明するフロー図である。
【図１３】図１３はホストコンピュータ１０００のＣＰＵ１３５０がＩ/Ｏ要求受信ＰＧ１２４０を実行することで行う処理を説明するフロー図である。
【図１４】図１４は、ホストコンピュータ１０００のＣＰＵ１３５０がＩ/Ｏ終了待ちプロセス管理ＰＧ１２４５を実行することで行う処理を説明するフロー図である。
【図１５】図１５は現用系ホストコンピュータ１０００Ａおよび待機系ホストコンピュータ１０００ＢにおけるＩ/Ｏ処理の流れを説明するための図である。
【図１６】図１６は現用系のホストコンピュータ１０００Ａおよび待機系ホストコンピュータ１０００Ｂにおける系切替え処理の流れを説明するための図である。
【図１７】図１７は本実施形態のホットスタンバイシステムにおける業務引継ぎ処理時間の短縮効果を説明するための図である。
【図１８】図１８は現用系ホストコンピュータ１０００Ａおよび待機系ホストコンピュータ１０００Ｂにおける系切替え処理の流れを説明するための図である。
【符号の説明】
【０１０７】
１０００Ａ・・・現用系ホストコンピュータ、１０００Ｂ・・・待機系ホストコンピュータ、１０５０・・・アプリケーションＰＧ、１１００・・・系切替え制御ＰＧ、１１５０・・・ＯＳ、１２００・・・アクセス要求制御ＰＧ、１２１０・・・アクセス制御対象論理ボリューム登録ＰＧ、１２１５・・・アクセス制御対象論理ボリューム登録解除ＰＧ、１２２０・・・アクセス制御状態変更ＰＧ、１２２５・・・アクセス制御状態取得ＰＧ、１２３０・・・アクセス制御状態判定ＰＧ、１２３５・・・Ｉ/Ｏ要求送信ＰＧ、１２４０・・・Ｉ/Ｏ要求受信ＰＧ、１２４５・・・Ｉ/Ｏ待ちプロセス管理ＰＧ、１２５５・・・Ｉ/Ｏ終了待ちプロセス管理ＴＬ、１２６０・・・アクセス制御対象論理ボリューム管理ＴＬ
【図１】
2005202442.tif 000003
【図２】
2005202442.tif 000004
【図３】
2005202442.tif 000005
【図４】
2005202442.tif 000006
【図５】
2005202442.tif 000007
【図６】
2005202442.tif 000008
【図７】
2005202442.tif 000009
【図８】
2005202442.tif 000010
【図９】
2005202442.tif 000011
【図１０】
2005202442.tif 000012
【図１１】
2005202442.tif 000013
【図１２】
2005202442.tif 000014
【図１３】
2005202442.tif 000015
【図１４】
2005202442.tif 000016
【図１５】
2005202442.tif 000017
【図１６】
2005202442.tif 000018
【図１７】
2005202442.tif 000019
【図１８】
2005202442.tif 000020