(57)【要約】【課題】  ホストコンピュータと補助記憶装置を冗長接続で運用系と待機系と経路を二重化した構成において、両系の帯域を活用し、入出力における読み込み性能の向上を実現する。【解決手段】  ホストコンピュータは、先読みエントリを参照しリード要求の順序を考慮して先読みを入出力部（運用系）１０２、または、入出力部（待機系）１０３に割り振ることにより、記憶装置１０６からの先読みを効率的に実施する。【選択図】      図１
2006268708.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータと、運用系入出力部と、待機系入出力部とを備え、前記コンピュータが前記待機系入出力に対し先読み動作を行う手段を有することを特徴とする冗長接続構成を持つコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、冗長接続構成を持つコンピュータシステムに関し、特に、先読み動作による高速化を実現する冗長接続構成を持つコンピュータシステムに関する。
【背景技術】
【０００２】
冗長接続で運用系と待機系と経路を二重化した構成において、両系統のいずれにも故障などが起きていない場合、待機系は導通確認を除けば動作することなく、その帯域は基本的に使用されないままであり、システム全体として帯域を有効に活かしているとは言えなかった。また、動的負荷分散により、運用系と待機系とに分割しない構成においては、帯域を有効に活用することはできるが、管理の手間などもあり、ともすれば負荷分散にならないこともあるため、処理をどのように振り分けるかが大きな課題であった。
【０００３】
また、記憶装置上でのファイルの連続性は、基本的にファイルシステム以外には知ることが出来ないため、ファイルシステムよりも下位の階層で独自に先読みを実現するのは困難であった。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ホストコンピュータと補助記憶装置を冗長接続で運用系と待機系と経路を二重化した構成において、正常時の待機系ではハートビートなどの経路の導通確認を除けば、実際のデータ転送には使用されることがないため、基本的にほとんど動作していないことが多い。つまり、運用系と待機系の両方で確保されている帯域を使い切るような使い方はできなかった。
【０００５】
また、運用系と待機系を明確に分けず、二重化された経路を同時に使用して動的負荷分散を実現する方法もあるが、どちらの経路に振り分けたかを管理するなど、複雑な制御を必要としており、実装が容易ではなかった。
さらに、論理的な単位であるファイルは、実際の記憶装置上では連続して配置されておらず、本来ファイルシステムを扱うべきではない記憶装置やデバイスドライバ自身でファイルシステムを理解する必要がある等、先読みそのものが実現困難であった。
【課題を解決するための手段】
【０００６】
本発明の冗長接続構成を持つコンピュータシステムは、ホストコンピュータと、運用系入出力部と、待機系入出力部とを備え、前記コンピュータが前記待機系入出力に対し先読み動作を行う手段を有する。
【発明の効果】
【０００７】
先読み動作を行うことで、同一ファイルに対する連続のリードが行われる際に、読み込みにかかる遅延を隠蔽することができるため、全体としての性能向上に寄与することができる。また、待機系を使用することで、運用系へかかる負荷を増大させることなく先読みを実行することができる。
【０００８】
また、要求を系ごとに管理する必要がないことから、負荷分散を行うための手間を簡易化することができる。
【発明を実施するための最良の形態】
【０００９】
次に、本発明を実施するための最良の形態について図面を参照して詳細に説明する。
【００１０】
まず、本発明の要旨について説明する。
【００１１】
本発明では、ホストコンピュータから要求された読み込みを行う際に、要求されたブロックの読み込みを運用系の経路で実行するだけでなく、同時に待機系の経路を使って先読みを行う。この先読み動作はオペレーティングシステムが管理するファイルシステムとしての動作に伴い行われるもので、運用系と待機系の両経路が存在することを認識した場合のみ、待機系の経路を使用した先読み動作を行う。但し、障害などにより運用系と待機系の一方のみが使用可能であるような片系動作となる状態では、先読み動作は行わないものとする。
【００１２】
通常、デバイスドライバの扱うことのできるブロック情報へ、ファイルシステムが変換してブロック単位の要求を発行するが、本発明ではこれまでの情報に加えて、ファイルとして連続する次ブロックの情報も合わせて発行することで実現する。
【００１３】
さらにこれまでのファイルシステムとデバイスドライバの間に先読み情報の管理を行う階層を新たに追加することで実現する。この管理のために、先読みエントリとバッファを必要とするが、これらはファイルシステムが通常管理しているキャッシュからは独立して存在し、同一のディスクへ到達可能な全ての経路で共有するものである。
【００１４】
ここで先読みエントリとは、先読み対象のブロック情報とバッファへのデータ格納の有無を管理するものである。また、バッファは先読みエントリと対に存在し、ブロックのデータを格納するために使用する。
【００１５】
ファイルシステムから要求の種別（ライトもしくはリード）、対象ブロック、及びその次ブロックの情報を受け取ると、要求の種別により異なる手順で先読み情報の管理が行われる。
【００１６】
要求がライトの場合の先読みの管理は次の手順により行われる。
【００１７】
先読みエントリを検索し、エントリ中に対象ブロックが存在するならば、該エントリの情報を破棄して、対象ブロックに対する先読み情報を無効化する。さらに、運用系の経路を使用してライトを実行する。
【００１８】
要求がリードの場合の先読みの管理は次の手順により行われる。
【００１９】
１．先読みエントリを検索した結果、リード対象ブロックがエントリ中に対象ブロックが存在し、かつ既にバッファにデータが格納されているならば、該バッファ中のデータを返却する。
【００２０】
２．先読みエントリを検索した結果、リード対象ブロックがエントリ中に存在し、未だバッファにデータが格納されていないならば、先読み動作を待機系で実行中ということである。即ち、実行中のリード処理の完了後に、該バッファに格納されたデータを返却する。
【００２１】
３．先読みエントリを検索した結果、リード対象ブロックがエントリ中に存在しないならば、先読み情報が有効でないということである。即ち、運用系の経路を使用してリードを実行する。
【００２２】
４．先読みエントリを検索した結果、リード対象の次ブロックが先読みエントリ中に存在しないならば、先読みを行っていないということである。即ち、外部ロックを対象とした先読みエントリを作成し、待機系の経路を使用してリードを実行する。この時、リードしたデータは該先読みエントリと対になるバッファ中に格納する。
【００２３】
５．上記１〜２が該当するように、先読みエントリのバッファからデータを返却したならば、該先読みエントリの情報を破棄して、エントリを無効化する。
上記手順をフローにしたものを図２に示す。
【００２４】
次に実施例について説明する。
【００２５】
本実施例では、図１に示す接続構成において実現される。ホストコンピュータ１０１は、オペレーティングシステムを含め、本発明における先読み情報の管理が実行される。入出力部（運用系）１０２及び入出力部（待機系）１０３は、記憶装置に対するリードやライトの要求を受けて、実際の入出力を行うものである。切り替え器１０４及び切り替え器１０５は、入出力部が複数の記憶装置と接続される場合に必要となるもので、要求の宛先に応じて接続を切り替えるものである。記憶装置１０６は少なくとも二系統の入出力を持っており、どちらからも同じように入出力が可能である。
【００２６】
図３は、図１のホストコンピュータ１０１の詳細を示したものである。ハードウェアとしては、ＣＰＵ１１０、メモリ１１１、外部接続機構１１２を持ち、これらはホストコンピュータ１０１内部で接続されており、各々の間で通信が可能である。また、外部接続機構１１２を介して、図１における入出力部１０２及び１０３と接続されている。メモリ１１１上では、ＣＰＵ１１０が実行するためのプログラム情報やデータが保持されるが、本実施例では以下に挙げる情報が配置される。
【００２７】
ファイルシステム領域１２０は、オペレーティングシステムがファイルシステムとしての機能を実現するための領域であり、ＣＰＵ１１０が実行するためのプログラム情報１２１を持ち、キャッシュ１２２及びバッファ１２３を持つ。キャッシュ１２２は、ファイルシステム１２０が先読み情報としての値を保持する領域であり、いつでも破棄可能な値を保持するために使用する。また、バッファ１２３は実際に記憶装置に対して読み書きする値そのものを保持する領域であり、リードもしくはライトが完了するまで破棄することの出来ない値を保持するために使用する。
【００２８】
先読み機能領域１３０は、本発明を実現するための機能を保持するための領域であり、本発明における手順をＣＰＵ１１０が実行するためのプログラム情報１３１を持ち、先読みエントリ１３２及びバッファ１３３を持つ。先読みエントリ１３２はブロック情報とバッファへの格納の有無を保持し、バッファ１３３は記憶装置に対して先読みした値を保持する領域であり、先読みエントリ１３２とバッファ１３３は対になって管理される。
【００２９】
デバイスドライバ領域１４０は、入出力部１０２及び１０３を介した記憶装置に対する操作を実現するための領域であり、ＣＰＵ１１０が実行するためのプログラム情報１４１を持ち、入出力部１０２及び１０３の状態を保持するための制御情報１４２を持つ。また、記憶装置に対して読み書きする値そのものを保持する領域としてバッファ１４３を持つ。
【００３０】
オペレーティングシステム領域１５０は、ホストコンピュータ１０１を管理するための領域であり、ＣＰＵ１１０が実行するためのプログラム情報１５１を持ち、状態を保持するための制御情報１５２を持つ。
【００３１】
また、本実施例において、先読みエントリ１３２とバッファ１３３は必要に応じて確保され、不要となった時点、即ち無効化された時点で解放されるものとし、初期状態では、先読みエントリ１３２とバッファ１３３のいずれもメモリ１１１上に存在しないものとする。
【００３２】
次に、本発明を実施するための最良の形態の実施例の動作について図面を参照して説明する。
【００３３】
本実施例では、要求が図４に示す順序で行われた場合の本発明の制御による挙動を示す。また、階層毎の処理の切り替わりは、図５に示すように行われるが、以下に具体的な説明を記す。
【００３４】
時刻１において、ファイルシステムからの、ブロック３に対するリード要求を受け付ける。この時、先読みエントリは存在しないことから、最初にブロック３に対するリードを運用系に発行する。その後、先読み処理として、ブロック３のファイルとしての次ブロックがブロック４であることと、先読みエントリが存在しないことから、ブロック４に対する先読みエントリを作成し、ブロック４に対するリードを待機系に発行する。
【００３５】
運用系に発行したブロック３へのリードが完了した時点で、データをファイルシステムへ返却する。先読みとして実行した待機系へのブロック４のリードは、完了した時点で先読みエントリに対応するバッファへデータを格納し、バッファへ格納済みであることをエントリ中の情報として更新する。
【００３６】
この時点で有効な先読みエントリはブロック４に対応するもののみ存在する。
時刻２において、ファイルシステムからの、ブロック４に対するリード要求を受け付ける。この時、先読みエントリ中にブロック４に対する先読みエントリが存在することから、次ブロックであるブロック７への先読み処理を優先する。ブロック７への先読みエントリが存在しないことから、ブロック７に対する先読みエントリを作成し、ブロック７に対するリードを待機系に発行する。ブロック４に対する処理に戻り、先読みエントリの情報を参照し、データがバッファに格納済みであることから、バッファのデータをファイルシステムへ返却する。また、バッファ中のデータを返却したことから、ブロック４に対応する先読みエントリとバッファを破棄し、無効化する。
【００３７】
この時点で有効な先読みエントリはブロック７に対応するもののみ存在する。
時刻３において、ファイルシステムからの、ブロック７に対するライト要求を受け付ける。この時、先読みエントリ中にブロック７に対する先読みエントリが存在することから、先読みエントリの破棄を優先する。ブロック７に対する先読みエントリを無効化した後、ブロック７に対するライトを運用系に発行する。ライトの際は先読みを実行しないため、次ブロックであるブロック８に対する処理は行わない。
この時点で有効な先読みエントリは存在しない。
【００３８】
時刻４において、ファイルシステムからの、ブロック８に対するリード要求を受け付ける。この時、先読みエントリが存在しないことから、最初にブロック８に対するリードを運用系に発行する。その後、先読み処理として、次ブロックであるブロック５に対する先読み処理を行う。先読みエントリが存在しないことから、ブロック５に対する先読みエントリを作成し、ブロック５に対するリードを待機系に発行する。運用系に発行したブロック８へのリードが完了した時点で、データをファイルシステムへ返却する。先読みとして実行した待機系へのブロック５へのリードは、完了した時点で先読みエントリに対応するバッファへデータを格納し、バッファへ格納済みであることをエントリ中の情報として更新する。
【００３９】
ここまで処理が終了した時点で、有効な先読みエントリはブロック５に対応するもののみ存在する。
【図面の簡単な説明】
【００４０】
【図１】本発明の実施例の構成を示すブロック図。
【図２】本発明の要旨を示すフローチャート。
【図３】図１のホストコンピュータの構成を示すブロック図。
【図４】要求の順序を示す説明図。
【図５】本発明の実施例の動作を示すフローチャート。
【符号の説明】
【００４１】
１０１    ホストコンピュータ
１０２    入出力部（運用系）
１０３    入出力部（待機系）
１０４    切り替え器
１０５    切り替え器
１０６    記憶装置
【図１】
2006268708.tif 000003
【図２】
2006268708.tif 000004
【図３】
2006268708.tif 000005
【図４】
2006268708.tif 000006
【図５】
2006268708.tif 000007