(57)【特許請求の範囲】
【請求項１】
複数のディスク制御装置と、
前記複数のディスク制御装置の各々が有するチャネル制御部を相互に接続するスイッチとを有し、
前記スイッチは、
ホストコンピュータと接続され、前記ホストコンピュータから指定されたアクセス要求の宛先であるチャネル制御部と当該アクセス要求に応じたリード処理又はライト処理を代行するチャネル制御部との対応情報を保持し、前記対応情報に基づいて、前記ホストコンピュータから送信された前記アクセス要求を当該アクセス要求に応じたリード処理又はライト処理を代行するチャネル制御部に転送し、
各前記ディスク制御装置は、
それぞれ前記アクセス要求に応じたリード処理又はライト処理をどの段階まで代行するかを規定した代行レベル情報を保持し、前記チャネル制御部は、当該代行レベル情報に基づいて、前記スイッチから転送された他の前記チャネル制御部を宛先とする前記アクセス要求に応じたリード処理又はライト処理のうちの対応する段階までの処理を代行する
ことを特徴とするクラスタ型ディスク制御装置。
【請求項２】
前記スイッチは、
前記ホストコンピュータからのアクセス要求の転送先として複数の前記チャネル制御部が指定可能であり、前記対応情報には、前記複数のチャネル制御部の各々が転送先として選ばれる確率の情報が格納される
ことを特徴とする請求項１記載のクラスタ型ディスク制御装置。
【請求項３】
さらにディスク制御装置内情報を管理するサービスプロセッサ（ＳＶＰ）を有し、前記ＳＶＰは前記対応情報を変更する
ことを特徴とする請求項１に記載のクラスタ型ディスク制御装置。
【請求項４】
前記代行レベル情報は、
前記チャネル制御部ごとに、当該チャネル制御部を宛先とする前記アクセス要求に応じたリード処理又はライト処理をどの段階まで代行するかが規定された
ことを特徴とする請求項１記載のクラスタ型ディスク制御装置。
【請求項５】
複数のディスク制御装置と、前記複数のディスク制御装置の各々が有するチャネル制御部を相互に接続するスイッチとを有するクラスタ型ディスク制御装置の制御方法であって、
前記スイッチが、ホストコンピュータからのアクセス要求を所定の情報に基づき所定のチャネル制御部へ転送し、
前記アクセス要求が転送された前記チャネル制御部が前記ホストコンピュータからのアクセス要求の宛先と異なる場合、前記アクセス要求を受信したチャネル制御部が、前記アクセス要求に応じた途中段階までのリード処理又はライト処理を実行し、前記アクセス要求の宛先の前記チャネル制御部に途中段階までの処理終了を通知し、
途中段階まで前記アクセス要求を処理した前記チャネル制御部が、前記アクセス要求の返答として、前記ホストコンピュータからアクセス要求先として指定された宛先チャネル制御部が返答の発行元であるとするデータを前記ホストコンピュータに対して送信すると共に、前記アクセス要求に対応するリード処理又はライト処理の残りを前記アクセス要求の宛先の前記チャネル制御部が実行する
ことを特徴とするクラスタ型ディスク制御装置の制御方法。
【請求項６】
前記複数のディスク制御装置の各々は、前記ホストコンピュータからのアクセス要求を受信したチャネル制御部が前記アクセス要求に応じたリード処理又はライト処理をどの段階まで代行するかを規定した代行レベル情報を有し、
前記アクセス要求が転送された前記チャネル制御部が前記ホストコンピュータからのアクセス要求の宛先と異なる場合、前記アクセス要求を受信したチャネル制御部が、前記代行レベル情報に基づいて、前記アクセス要求に応じたリード処理又はライト処理のうちの対応する段階までの処理を代行する
ことを特徴とする請求項５に記載のクラスタ型ディスク制御装置の制御方法。
【請求項７】
前記所定情報は、
前記ホストコンピュータから指定されたアクセス要求の宛先である前記チャネル制御部と当該アクセス要求に応じたリード処理又はライト処理を代行するチャネル制御部との対応情報であり、
前記クラスタ型記憶制御装置は、
ディスク制御装置内情報を管理するサービスプロセッサ（ＳＶＰ）を備え、
前記ＳＶＰが、前記チャネル制御部の負荷情報を参照し、負荷が高いチャネル制御部を宛先とした前記ホストコンピュータからの前記アクセス要求を負荷が低いチャネル制御部に転送するように、前記対応情報を変更する
ことを特徴とする請求項６に記載のクラスタ型ディスク制御装置の制御方法。
【請求項８】
前記ＳＶＰが、前記チャネル制御部の障害情報を参照し、障害が発生したチャネル制御部を宛先とした前記ホストコンピュータからの前記アクセス要求を正常なチャネル制御部に転送するように、前記対応情報を変更する
ことを特徴とした請求項７に記載のクラスタ型ディスク制御装置の制御方法。
【請求項９】
前記ＳＶＰが、前記チャネル制御部の負荷情報を参照し、負荷が低いチャネル制御部に対する前記ホストコンピュータからのアクセス要求に応じたリード処理又はライト処理を代行する段階を上げるように前記代行レベル情報を変更する
ことを特徴とする請求項８に記載のクラスタ型ディスク制御装置の制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データを複数の磁気ディスク装置に格納するディスクサブシステムに関し、特にクラスタ型ディスク制御装置とその制御方法に関する。
【０００２】
【従来の技術】
多数台の磁気ディスク装置（以下ドライブと呼ぶ）に対するデータの格納および読み出しを行うディスク制御装置（以下ＤＫＣと呼ぶ）があり、ドライブとＤＫＣとをあわせてディスクサブシステムと総称されている。
ディスクサブシステムに対する要求の１つとして記憶容量の増大および管理コストの削減とがある。１台のＤＫＣで管理可能なドライブの容量には限界があるため、複数のディスクサブシステムを用意して記憶容量を増加する。すると、その管理に必要となる管理コストも同様に増大するのである。そこで、従来サーバ毎に接続されこの結果分散配置されていたディスクサブシステムの集中化を図るべくストレージエリアネットワーク（以下ＳＡＮと呼ぶ）が注目されている。
図２には、ＳＡＮ環境におけるディスクサブシステムの典型例を示す。複数台のディスクサブシステム１がＳＡＮスイッチ３９を介してホストコンピュータ０に接続される。１つのディスクサブシステムは１台のディスク制御装置１０のみから構成されていて、チャネル２を介してＳＡＮスイッチ３９と接続されている。論理ディスク７は、ホストコンピュータ０が認識する記憶領域である。ホストコンピュータ０は、ＳＡＮスイッチ３９とチャネル２を介して論理ディスク７の特定のアドレスに対してデータの参照、更新要求を指示する。チャネル２としては、ファイバチャネル、ＳＣＳＩなどがある。ディスク制御装置１０と複数台のドライブ１７は、ドライブＩＦ１６で接続される。ドライブＩＦ１６には、ファイバチャネル、ＳＣＳＩなどが用いられる。ＤＫＣ１０は、大きくは、チャネルの制御を行うチャネル制御部１１、ドライブの制御を行うディスク制御部１４、ＤＫＣの制御情報３を格納する制御メモリ部１２、キャッシュデータ５を保持するキャッシュメモリ部１３、さらに、各構成部品を相互に接続する結合機構１５から構成される。結合機構１５は、バス、相互結合網などが用いられる。ディスク制御装置１０は、ホストコンピュータ０の指示に従い、データの参照、更新処理を行う。
一方、ＳＡＮ環境においては、ホストコンピュータは、アクセス対象とするデータがどのディスクサブシステムに存在しているかを知らなければデータにアクセスできない。したがって、ユーザがデータの所在を管理せねばならないという問題がある。特開平２０００−９９２８１号公報には、従来１台のＤＫＣから構成していたディスクサブシステムを、ＳＡＮスイッチを介さずに複数台のＤＫＣでクラスタ構成して記憶容量と接続チャネル数を増大したディスクサブシステムが開示されている。クラスタ型ディスクサブシステムは、１台のディスクサブシステムとして管理が可能なので管理コストも削減できる。
図３には、クラスタ型ディスクサブシステムの構成例を示す。図３のディスクサブシステムでは、複数のＤＫＣ１０間にディスク制御装置間接続手段２０を設けることによりＤＫＣ間での相互データアクセスを可能としている。これにより複数のディスク制御装置間でのデータの共有が可能になる。
【０００３】
【発明が解決しようとする課題】
図３に示すような従来のクラスタ構成のディスクサブシステムにおいては、内部のＤＫＣ間で負荷に偏りが生じた場合に負荷を分散することができず、内部ＤＫＣ間で同等の性能を引き出すことができない。ホストコンピュータからのアクセス要求が特定ＤＫＣに集中した場合、別のＤＫＣの稼働率が低い場合においても、ホストコンピュータが指定した要求先ＤＫＣが処理を実行するので、要求先として特定ＤＫＣによってしか処理が実行されないため負荷に偏りが生じるのである。
【０００４】
また、チャネル制御部が障害に陥った場合には、そのチャネル制御部に接続されているチャネルは使用不可能になってしまう。ホストコンピュータが指定したチャネルのみを経由してディスク制御装置にアクセスするためである。
【０００５】
【課題を解決するための手段】
かかる課題を解決するため本発明においては、クラスタ型ディスク制御装置において、複数のディスク制御装置と、前記複数のディスク制御装置の各々が有するチャネル制御部を相互に接続するスイッチとを有し、前記スイッチは、ホストコンピュータと接続され、前記ホストコンピュータから指定されたアクセス要求の宛先であるチャネル制御部と当該アクセス要求に応じたリード処理又はライト処理を代行するチャネル制御部との対応情報を保持し、前記対応情報に基づいて、前記ホストコンピュータから送信された前記アクセス要求を当該アクセス要求に応じたリード処理又はライト処理を代行するチャネル制御部に転送し、各前記ディスク制御装置は、それぞれ前記アクセス要求に応じたリード処理又はライト処理をどの段階まで代行するかを規定した代行レベル情報を保持し、前記チャネル制御部は、当該代行レベル情報に基づいて、前記スイッチから転送された他の前記チャネル制御部を宛先とする前記アクセス要求に応じたリード処理又はライト処理のうちの対応する段階までの処理を代行するようにした。
【０００６】
また本発明においては、複数のディスク制御装置と、前記複数のディスク制御装置の各々が有するチャネル制御部を相互に接続するスイッチとを有するクラスタ型ディスク制御装置の制御方法であって、前記スイッチが、ホストコンピュータからのアクセス要求を所定の情報に基づき所定のチャネル制御部へ転送し、前記アクセス要求が転送された前記チャネル制御部が前記ホストコンピュータからのアクセス要求の宛先と異なる場合、前記アクセス要求を受信したチャネル制御部が、前記アクセス要求に応じた途中段階までのリード処理又はライト処理を実行し、前記アクセス要求の宛先の前記チャネル制御部に途中段階までの処理終了を通知し、途中段階まで前記アクセス要求を処理した前記チャネル制御部が、前記アクセス要求の返答として、前記ホストコンピュータからアクセス要求先として指定された宛先チャネル制御部が返答の発行元であるとするデータを前記ホストコンピュータに対して送信すると共に、前記アクセス要求に対応するリード処理又はライト処理の残りを前記アクセス要求の宛先の前記チャネル制御部が実行するようにした。
【０００７】
【発明の実施の形態】
以下、図面を用いて、発明の詳細を説明する。
【０００８】
はじめに、図１を用いて、本発明に係るディスク制御装置について説明する。図１は、本発明に係わるディスク制御装置の概要を示すブロック図の一例である。ディスクサブシステム１は複数台のＤＫＣ１０とチャネル−ＤＫＣ間スイッチ３０と複数のドライブにより構成する。ディスクサブシステム１は、複数のチャネル２を介して、複数のホストコンピュータ０に接続する。チャネル−ＤＫＣ間スイッチ３０はホストコンピュータ０からの要求を分配テーブル３１に基づいて該当ＤＫＣ１０に転送する。各ＤＫＣ１０は、各ＤＫＣ１０の間を接続するディスク制御装置間接続手段２０を介して、他のＤＫＣに接続したドライブ１７に格納した格納データ４を参照、更新できる。本発明では、特に、ホストコンピュータ０からのアクセス要求をチャネル−ＤＫＣ間スイッチ３０が受信し、アクセス要求の宛先と分配テーブル３１に基づいて、該当アクセス要求を該当ＤＫＣ１０のチャネル制御部１１に転送することに特徴がある。
【０００９】
以下、詳細に説明するが先立って、用いる用語の定義を行う。本発明では、ホストコンピュータ０からのアクセス要求の宛先となるＤＫＣ１０のチャネル制御部１１を宛先チャネル制御部と呼ぶ。チャネル−ＤＫＣ間スイッチ３０の転送先変更により該当アクセス要求を受信したチャネル制御部１１を要求受信チャネル制御部または代行チャネル制御部と呼ぶ。代行チャネル制御部が、該当アクセス要求に対する処理を行うことを代行と呼び、その処理を代行処理と呼ぶ。また、代行チャネル制御部が代行を途中段階で中断し、他のチャネル制御部が継続して処理を行うことを引継ぎと呼び、その処理を引継ぎ処理と呼ぶ。また、代行チャネル制御部がアクセス要求に対する処理を全て行うことを完全代行と呼び、その処理を完全代行処理と呼ぶ。
【００１０】
図１に示したディスクサブシステム１は、大きくは、複数台のＤＫＣ１０と、ドライブ１７、チャネル−ＤＫＣ間スイッチ３０から構成する。ＤＫＣ１０の詳細は２台のみ詳細に示しているが、各ＤＫＣ１０の各々の構成は同一である。ＤＫＣ１０は、大きくは、チャネルの制御を行うチャネル制御部１１、ドライブの制御を行うディスク制御部１４、ＤＫＣ１０の制御情報３を格納する制御メモリ部１２、ドライブ１７のデータを一時的にキャッシュデータ５として保持するキャッシュメモリ部１３、さらに、各構成部品を相互に接続する結合機構１５から構成する。チャネル制御部１１は、単独のチャネル制御部に複数のチャネルを持つ構成でもよい。しかし以降の説明では、簡単化のため、１つのチャネル制御部１１は１つのチャネル２のみを持つ場合を示す。このため、後述するチャネル制御部の識別子とチャネルの識別子は一致している。制御メモリ部１２は、キャッシュメモリ部１３内データのディレクトリ情報も格納されており、各キャッシュメモリ部１３に要求データが存在するかどうかを確認できる。また、制御メモリ部１２は装置構成情報も格納しており、アクセス要求先のアドレスにより、アクセス要求先のディスク制御装置番号とドライブ番号を識別できる。図示はしていないが、チャネル制御部１１やディスク制御部１４は、制御用のプロセサを備え、プロセサ上で処理プログラムが動作する。チャネル−ＤＫＣ間スイッチ３０は、分配テーブル３１を備える。
図４は、図１におけるチャネル−ＤＫＣ間スイッチ３０の構成とチャネル−ＤＫＣ間スイッチに備えた分配テーブル３１に格納する情報の一例を示したブロック図である。チャネル−ＤＫＣ間スイッチは、ホストコンピュータ０とチャネルを介して接続するホストコンピュータ側入出力部３０１と、ＤＫＣに接続するＤＫＣ側入出力部３０２を備える。ホストコンピュータ側入出力部３０１は複数のホスト側ポート３０１１を、ＤＫＣ側入出力部３０２は複数のＤＫＣ側ポート３０２１を備える。これらが相互結合網３０３を介して接続されており、任意のホスト側ポート３０１１と任意のＤＫＣ側ポート３０２１でデータ転送が可能となる。一般にポートはそれぞれに識別子をもつ。例えばインターネットプロトコルならばＭＡＣアドレス、ファイバチャネルプロトコルならばＷＷＮである。ここでは一般化のため、番号として表記し、各々のチャネル制御部の識別子をチャネル制御部番号、ホストコンピュータの識別子をホストコンピュータ番号などとする。チャネル−ＤＫＣ間スイッチ３０は、ＤＫＣ側から来たデータに関してはホストコンピュータ−ポート番号変換テーブル３２に基づき該当するＤＫＣ側ポートが該当するホスト側ポートに転送する。ホストコンピュータ側から来たデータ（アクセス要求）に関しては分配テーブル３１に基づき転送を行う。
【００１１】
分配テーブル３１は、ホストコンピュータからのアクセス要求の宛先チャネル制御部とその要求を転送するＤＫＣ側ポート番号の対応情報を保持する。本実施例では、ホストコンピュータからのアクセス要求を宛先チャネル制御部に対応する転送先ＤＫＣ側ポート番号の要素が０の場合は、その転送先ＤＫＣ側ポート３０２１には該当する宛先の要求を転送せず、それ以外の場合には、宛先が該当チャネル制御部番号の要求を転送するＤＫＣ側ポート３０２１の候補となる。ここでは、要素上段のように転送先候補のものを１とするものや、要素下段のようにそれぞれが選択される確率を示すものでもよい。前者の方法では、複数の転送先が１の場合は、ラウンドロビンなどの方法で転送先のチャネル制御部を選択する。後者の方法については、図２５を用いて後述する。本実施例図４で示した分配テーブル３１の要素は、チャネル制御部番号３のチャネル制御部は障害下にあり、チャネル制御部番号１のチャネル制御部は高負荷状態にある場合の例である。分配テーブル３１の宛先チャネル制御部番号が３の列は、障害下にあるチャネル制御部番号３のチャネル制御部に代わってチャネル制御部番号５のチャネル制御部がアクセス要求を処理することを示している。また、宛先チャネル制御部番号が１の列は、チャネル制御部番号４が高負荷状態にあるチャネル制御部番号１の宛先の要求を半分の割合で処理することを示している。分配テーブル３１は１つの宛先に対して複数の転送先を設定可能な点が特徴である。分配テーブル３１を用いることにより、要求を本来の宛先チャネル制御部から他のチャネル制御部に割り振ることが可能になりチャネル制御部１１の負荷分散や障害処理が可能になる。
【００１２】
図５は、図１におけるチャネル制御部１１に備えられた代行レベルテーブル１１３に格納する情報の一例を示したブロック図である。チャネル制御部は制御プロセッサ１１０を有し、制御プロセッサ部１１０はホスト要求処理部１１１とモニタ機構部１１２を備える。ホスト要求処理部１１１により、チャネル制御部１１が受領したホストコンピュータのアクセス要求を処理する。またモニタ機構部１１２により、ＳＶＰ４０にチャネル制御部１１の状態を報告する。本実施例では、チャネル制御部１１に代行レベルテーブル１１３を備えているが、該代行レベルテーブルは、制御メモリ部１２に備えても良い。
【００１３】
代行レベルテーブル１１３は、宛先チャネル制御部に代わりに、要求を受信したチャネル制御部がどの段階まで処理を行うかの段階を示す代行レベル情報を保持する。例えば、チャネル制御部１１のキャッシュミス時のリード要求は、コマンド解析（段階１）、キャッシュヒット判定（段階２）、キャッシュにドライブのデータを格納するステージング処理をディスク制御部に要求（段階３）、ステージング処理終了判定（段階４）、データ転送（段階５）となるとする。本実施例の代行レベルテーブル１１３では、該当チャネル制御部がチャネル制御部番号４に対するリード要求に関しては段階２、つまり、キャッシュヒット判定までの処理を行い、段階３以降の処理はチャネル制御部番号４のチャネル制御部が行う。また、チャネル制御部番号６に対するアクセス要求に関しては該当チャネル制御部が段階１から段階５までの全ての処理を行う（完全代行）。本実施例では、リード／ライトアクセスに対する代行レベルを分けているが、リードおよびライトアクセスに対して同一の代行レベルとなるような代行レベルテーブルとしても良い。
【００１４】
図６は、図１における制御メモリ部１２に備えた代行処理情報１２４に格納する情報の一例を示したブロック図である。制御メモリ部１２は、制御情報１２１、ディレクトリ情報１２２、装置構成情報１２３、代行処理情報１２４を有する。制御情報１２１は、装置制御に用いる情報が格納されており、例えば、チャネル制御部１１がディスク制御部１４にデータのステージング処理を依頼するなどに用いる。ディレクトリ情報１２２は、データの存在する装置の対応を示す。装置構成情報１２３は、各部の存在や容量などの情報を保持している。次に、代行処理情報１２４について説明する。
【００１５】
代行処理情報１２４は、処理の引継ぎに関する情報であり、ジョブ番号１２４１、要求ホスト１２４２、要求宛先１２４３、コマンド内容１２４４、処理段階１２４５、データ存在アドレス１２４６を有する。ジョブ番号１２４１は、アクセス要求処理に対する識別番号で、ディスク制御部に対するデータ転送を依頼するときなどに用いる。要求ホスト１２４２はアクセス要求をしたホストコンピュータ０の識別子である。要求宛先１２４３は該当ホストコンピュータ０が発行した要求の本来の宛先チャネル制御部識別子である。要求宛先１２４３を参照することにより、該当要求宛先以外のチャネル制御部が該当要求宛先のチャネル制御部から要求に対する応答を返したような情報を応答に記載することが可能になる。コマンド内容１２４４は、要求を受領したチャネル制御部が行った要求の解析結果が、リード、ライト等どのコマンドであるかをあらわす情報である。処理段階１２４５は、要求を受領したチャネル制御部がどの段階までの処理を行ったかを示す情報である。処理段階１２４５には、キャッシュヒット／ミス等の処理の進行に関する情報も含む。データ存在アドレス１２４６は代行した処理段階で得られたデータが存在するアドレスを示す。
【００１６】
本実施例では、制御メモリ部１２に代行処理情報１２４を格納しているが、代行処理情報１２４をチャネル制御部間でメッセージとして伝達してもよい。
【００１７】
図２０は、図１におけるＳＶＰ４０の詳細である。ＳＶＰ４０は制御プロセッサ４００、負荷情報テーブル４０１、チャネル制御部−ポート番号変換テーブル４０２、ポート番号−チャネル制御部変換テーブル４０３、装置管理インタフェース部４０４を有する。制御プロセッサ４００は障害監視部４００１、負荷監視部４００２、テーブル指示部４００３、ローカルメモリ４００４を有する。障害監視部４００１は、ディスクサブシステム１各部の定期的なアクセスや各部からの報告を受ける機能を行う部位であり、ディスクサブシステム１各部の障害情報を管理する。負荷監視部４００２は、ディスクサブシステム１各部の負荷率を各部からの報告を受けることにより計測する機能で、各部の負荷状況を管理する。テーブル指示部４００３は、分配テーブル３１または代行レベルテーブル１１３を変更する機能を持つ。ローカルメモリ４００４は負荷率順にソートした結果を収容するなど、一連の手続きで必要となる一時的な情報を格納する。装置管理インタフェース部４０４は、装置管理者が装置設定を行う場合や装置状態を確認する場合の入出力インタフェースである。負荷情報テーブル４０１は、負荷監視部４００２により得られた各チャネル制御部の負荷率を格納する。負荷情報テーブル４０１を参照し、各チャネル制御部を負荷率順でソートすることなどが可能となる。チャネル制御部−ポート番号変換テーブル４０２とポート番号−チャネル制御部変換テーブル４０３は、チャネル制御部１１番号とＤＫＣ側ポート３０２１番号の対応情報を保持する。これらにより、後述するＳＶＰ４０による分配テーブル３１の更新が、チャネル制御部１１番号とＤＫＣ側ポート３０２１番号の関係がどのような場合であっても可能となる。
【００１８】
ＳＶＰ４０が分配テーブル３１の参照や更新を行う場合、チャネル制御部−ポート番号変換テーブル４０２やポート番号−チャネル制御部変換テーブル４０３に照らし合わせ、実際のチャネル制御部番号に対応するＤＫＣ側ポート番号を知る。以降では簡単化のため、ＳＶＰはチャネル制御部番号に対応するＤＫＣ側ポート番号を予め知っているものとして「該当転送先チャネル制御部の行」等の記述を用いる。
【００１９】
本実施例では、負荷情報テーブル４０１、チャネル制御部−ポート番号変換テーブル４０２、ポート番号−チャネル制御部変換テーブル４０３をＳＶＰ４０に格納したが、制御メモリ部１２やチャネル−ＤＫＣ間スイッチ３０に格納しても良い。
【００２０】
次に流れ図を用いてチャネル制御部１１およびＳＶＰ４０の制御方法を説明する。この制御方法は、チャネル制御部が負荷の高い状態や障害状態にある場合、チャネル−ＤＫＣ間スイッチ３０によりアクセス要求が該当チャネル制御部とは別のチャネル制御部に転送して負荷分散およびフェイルオーバを可能にするものである。本発明の制御方法の形態は大きく２つある。アクセス要求を受信したチャネル制御部が処理をすべて行う完全代行の形態と、アクセス要求を受信したチャネル制御部が途中段階まで処理を行い（代行）その後該当アクセス要求の本来の宛先であるチャネル制御部が該当処理を継続し該当アクセス要求処理を完了する（引継ぎ）代行引継ぎの形態である。この２つの形態ごとに、リード・ライト要求に対するチャネル制御部１１の制御方法、チャネル制御部障害発生時および障害回復時のＳＶＰ４０の制御方法、チャネル制御部間の負荷に偏りが生じた場合のＳＶＰ４０の制御方法を説明する。なお、ここでは分配テーブル３１の実施形態として、分配テーブルの要素が転送先候補とするか否かの２値とした場合と転送先とする確率を示した場合とがある。ＳＶＰ４０のそれぞれの制御方法では分配テーブルの各実施形態についての説明を行う。
【００２１】
まず、完全代行の制御方法を説明する。図７はリードアクセス要求に、図８はライトアクセス要求に対するチャネル制御部１１の制御方法を示す流れ図である。この方法で制御するチャネル制御部を備える装置で、ＳＶＰ４０が分配テーブル３１を変更することによりチャネル制御部の障害を回避する制御方法を流れ図で示したものが図９である。同様に該当チャネル制御部が障害から回復した場合のＳＶＰの制御方法を流れ図で示したものが図１０である。また、チャネル制御部間の負荷に偏りが生じた場合に、分配テーブル３１を変更し高い負荷状態にあるチャネル制御部に転送するアクセス要求の割合を減らすことにより負荷分散するＳＶＰの制御方法を図１１に示す。図９、図１０、図１１はいずれも分配テーブルの要素が転送先候補とするか否かの２値で示す場合の実施例であり、分配テーブルの要素を転送先とする確率を示す場合の対応する実施例は図１４、図１３、図１２に示す。
【００２２】
図７は、リード要求受領時の処理の一例を示す流れ図である。リード要求を受領すると、受信要求から、本来の要求宛先のチャネル制御部とコマンドとアクセス先アドレスを解析し、リードアクセスであることを認識する（ステップ１）。アクセス先アドレスは、制御メモリ部１２の装置構成情報１２３を参照することで、アクセス要求先のディスク制御装置番号とドライブ番号を識別できる。次に、ステップ１で識別した当該ＤＫＣのキャッシュに対してキャッシュヒットミス判定を行う（ステップ２）。制御メモリ部１２のディレクトリ情報１２２を参照することで、アクセス先データがキャッシュに保持されているかを識別可能である。キャッシュに保持しているか判定し（ステップ３）、キャッシュに保持していないキャッシュミスの場合は、当該ＤＫＣのディスク制御部対して当該データのドライブからキャッシュへの転送依頼を行う（ステップ５）。通常この処理はステージング処理と呼ばれる。この場合転送終了までリード処理を中断し（ステップ６）、ステージング終了後、再びリード処理を継続することになる。また、転送先のキャッシュアドレスは、キャッシュの空きリストなど一般的な方法で管理、取得すればよいが、転送先アドレスをディレクトリ情報１２２を更新することで登録する必要がある。ステップ３でヒット判定の場合、または、ステップ７でステージング処理が終了した場合は、ホストコンピュータに対して当該データを転送する（ステップ４）。ステップ４の際、処理を行ったチャネル制御部がホストコンピュータのアクセス要求の宛先と異なっていても、該当チャネル制御部と異なる本来の宛先チャネル制御部の識別子を応答データの発信元として応答データに付与し、本来の宛先チャネル制御部が応答したとするようにデータを転送する。この点が本実施例の特徴である。
図８は、ライト要求受信時の処理の一例を示す流れ図である。ライト要求を受領すると、受信要求から、本来の要求宛先のチャネル制御部とコマンドとアクセス先アドレスを解析し、ライトコマンドであると認識する（ステップ１）。アクセス先アドレスは、制御メモリ部１２の装置構成情報１２３を参照することで、アクセス要求先のディスク制御装置番号とドライブ番号を識別できる。次に、ステップ１で識別した当該ＤＫＣのキャッシュに対してキャッシュヒットミス判定を行う（ステップ２）。制御メモリ部１２のディレクトリ情報１２２を参照することで、アクセス先データがキャッシュに保持されているかを識別可能である。キャッシュに保持していないキャッシュミスの場合は、当該ＤＫＣのディスク制御部対して当該データのドライブからキャッシュへの転送依頼を行う（ステップ６）。通常この処理はステージング処理と呼ばれる。この場合転送終了までライト処理を中断し（ステップ７）、ステージング終了後、再びライト処理を継続することになる。また、転送先のキャッシュアドレスは、キャッシュの空きリストなど一般的な方法で管理、取得すればよいが、転送先アドレスをディレクトリ情報１２２を更新することで登録する必要がある。ステップ３でヒット判定の場合、または、ステップ７でステージング処理が終了した場合は、当該ＤＫＣのキャッシュに対して当該データの更新を行う（ステップ４）。更新終了後、ホストコンピュータに対してライト処理の完了報告を行う（ステップ５）。ステップ５の際、処理を行ったチャネル制御部がホストコンピュータのアクセス要求の宛先と異なっていても、本来の宛先チャネル制御部が応答したとする完了報告をする。この点が本実施例の特徴である。
図９は、あるチャネル制御部１１が障害に陥った場合に、該当チャネル制御部をフェイルオーバするＳＶＰ４０の処理の一例を示す流れ図である。ＳＶＰが更新する分配テーブル３１の要素は、転送先候補とするか否かの２値の場合の説明をする。ここでは障害下にあるチャネル制御部を障害チャネル制御部と呼ぶ。ＳＶＰ４０の障害監視部４００１により、チャネル制御部が障害となったことを認識する（ステップ１）。次に負荷監視部４００２により得られた正常なチャネル制御部の負荷率を障害情報テーブル４０１より参照し、最低負荷率のチャネル制御部を見つける（ステップ２）。その後、分配テーブル３１を参照し要求転送先チャネル制御部が障害チャネル制御部の行を順次チェックする（ステップ３）。該当要素が１、すなわちチャネル−ＤＫＣ間スイッチ３０が障害チャネル制御部に要求を転送することになっていた場合は、該当要素を０として障害チャネル制御部に要求を転送しないようにし、また、該当要素の列の要求転送先チャネル制御部が該当最低負荷率のチャネル制御部の要素を１にして要求転送先チャネル制御部が無い状態を防ぐ（ステップ４）。ステップ３、ステップ４を該当行全体に対してチェック終了するまで続ける。
【００２３】
図１０は、障害下にあったチャネル制御部が障害から回復した場合のＳＶＰ４０が分配テーブル３１を更新する処理の一例を示す流れ図である。ＳＶＰが更新する分配テーブル３１の要素は転送先候補とするか否かの２値の場合の説明をする。ＳＶＰ４０の障害監視部４００１により、障害下にあったチャネル制御部が障害から回復したことを確認する（ステップ１）。それを受けて、分配テーブル３１の要求宛先チャネル制御部の列と要求転送先チャネル制御部の行が共に該当チャネル制御部である要素を１にして、該当チャネル制御部に要求が転送されるようにする（ステップ２）。該当チャネル制御部のフェイルオーバしていたチャネル制御部はこの処理以降の負荷分散を目的とした分配テーブル３１の変更により、順次、代行を解除される。
【００２４】
図１１は、各チャネル制御部１１の負荷に偏りが生じた場合におけるＳＶＰ４０の処理の一例を示す流れ図である。ＳＶＰ４０の負荷監視部４００２により得られた負荷情報テーブル４０１から各チャネル制御部の負荷率に偏りがあることを確認する（ステップ１）。負荷率の偏りは、例えば、最高負荷率と最低負荷率の差が閾値を超えた場合で定義できる。次に、チャネル制御部を負荷率昇順でソートする（ステップ２）。その結果により最高負荷率のチャネル制御部の負荷を下げるように分配テーブル３１を更新する。分配テーブルで要求宛先チャネル制御部が該当最高負荷率のチャネル制御部の列をステップ２のソート順にチェックしていく（ステップ３）。該当要素が０ならば、該当要素を１として負荷分散先として登録する（ステップ６）。該当要素が１ならば次の要素をチェックする。全要素チェック後またはステップ６終了後は、分配テーブルで要求転送先チャネル制御部が該当最高負荷率のチャネル制御部である行をステップ２のソート順にチェックしていく（ステップ７）。該当要素が１ならば、該当要素を０として該当最高負荷率のチャネル制御部を負荷分散先から削除する（ステップ１０）。該当要素が０ならば次の要素をチェックする。全要素チェック後またはステップ１０終了後は、この処理を終了とする。
【００２５】
図１２は、各チャネル制御部１１の負荷に偏りが生じた場合におけるＳＶＰ４０の処理の一例を示す流れ図である。ＳＶＰが更新する分配テーブル３１の要素は転送先とする確率を示したものである場合の説明をする。ＳＶＰ４０の負荷監視部４００２により得られた負荷情報テーブル４０１から各チャネル制御部の負荷率に偏りがあることを確認する（ステップ１）。次に正常チャネル制御部の負荷率が最低であるものと最高であるものを選択する（ステップ２）。分配テーブル３１中の最高負荷率のチャネル制御部が転送先ポートの行について全てのΔ以上の要素からΔを減算する（ステップ３）。この際、障害下にあるチャネル制御部に該当する要素については除外する。さらに、分配テーブル３１中の最低負荷率のチャネル制御部が転送先ポートの行についてステップ３にて減算した宛先ポートに対応する要素にΔを足す（ステップ４）。
【００２６】
図１３は、障害下にあったチャネル制御部が障害から回復した場合におけるＳＶＰ４０が分配テーブル３１を更新する処理の一例を示す流れ図である。ＳＶＰが更新する分配テーブル３１の要素は転送先とする確率を示したものである場合の説明をする。ＳＶＰ４０の障害監視部４００１により、障害下にあったチャネル制御部が障害から回復したことを確認する（ステップ１）。それを受けて、分配テーブル３１の宛先が該当チャネル制御部の列について、ある定数Δ以上の要素に関してはΔを引く。それに対応する障害回復チャネル制御部の列の要素についてΔを足す（ステップ２）。
【００２７】
図１４は、あるチャネル制御部１１が障害に陥った場合に、該当チャネル制御部をフェイルオーバするＳＶＰ４０の処理の一例を示す流れ図である。ＳＶＰが更新する分配テーブル３１の要素は転送先とする確率を示したものである場合の説明をする。ここでは障害下にあるチャネル制御部を障害チャネル制御部と呼ぶ。ＳＶＰ４０の障害監視部４００１により、障害チャネル制御部の存在を確認する（ステップ１）。次に負荷監視部４００２により得られた負荷情報テーブル４０１から正常なチャネル制御部の負荷率を参照し、最低負荷率のチャネル制御部を見つける（ステップ２）。その後、分配テーブル３１を参照し要求転送先チャネル制御部が障害チャネル制御部の行を順次チェックする（ステップ３）。該当要素が０より大きい、すなわちチャネル−ＤＫＣ間スイッチ３０が障害チャネル制御部に要求を転送することになっていた場合は、該当要素を０として障害チャネル制御部に要求を転送しないようにし、該当最低負荷率のチャネル制御部の要素に、障害チャネル制御部の元の要素を加算する（ステップ４）。ステップ３、ステップ４を該当行全体に対してチェック終了するまで続ける。
つぎに、代行引継ぎの制御方法を説明する。リードアクセス要求の宛先のチャネル制御部１１が高い負荷状態にあるために、チャネル−ＤＫＣ間スイッチ３０により、他のチャネル制御部にリード要求が転送され、リード要求を受信したチャネル制御部１１が処理を途中段階まで代行処理行い、その後本来の宛先チャネル制御部が残りの段階の引継ぎ処理を行う場合について、図１５にリード要求が転送されたチャネル制御部の代行処理を、図１６に本来の宛先チャネル制御部が行う引継ぎ処理を流れ図で示した。ライトアクセス要求の場合に図１５、図１６に対応するのが図１７、図１８である。この方法で制御するチャネル制御部を備える装置で、ＳＶＰ４０が、分配テーブル３１を変更することによりチャネル制御部の障害を回避しフェイルオーバを行うチャネル制御部の代行レベルテーブル１１３を変更することで完全代行を指定する制御方法を流れ図で示したものが図１９である。該当チャネル制御部が障害から回復した場合のＳＶＰの制御方法は完全代行による場合と同様で図１０の流れ図で示される。また、チャネル制御部間の負荷に偏りが生じた場合に、分配テーブル３１を変更し高い負荷状態にあるチャネル制御部に転送するアクセス要求の割合を減らし、かつ代行レベルテーブル１１３により負荷分散先チャネル制御部の代行レベルを設定することにより負荷分散するＳＶＰの制御方法を図２１に示す。図１９、図１０、図２１はいずれも分配テーブルの要素が転送先候補とするか否かの２値で示す場合の実施例であり、分配テーブルの要素を転送先とする確率を示す場合の対応する実施例は図２２、図１３、図２３に示す。また、代行レベルを変更することにより、より細かい負荷分配の設定を行う場合のＳＶＰ４０の制御方法を示す流れ図を図２４に示す。
【００２８】
図１５は、リード要求受信時の処理の一例を示す流れ図である。代行レベルテーブル１１３に設定された段階の処理までを要求受領チャネル制御部が行い、以降の段階の処理を要求宛先チャネル制御部が行うことが本実施例の特徴である。
【００２９】
リード要求を受領すると、受信要求から、本来の要求宛先のチャネル制御部とコマンドとアクセス先アドレスを解析し、リードアクセスであることを認識する（ステップ１）。アクセス先アドレスは、制御メモリ部１２の装置構成情報１２３を参照することで、アクセス要求先のディスク制御装置番号とドライブ番号を識別できる。次に代行レベルテーブル１１３を参照し、該当チャネル制御部に対する代行レベルを獲得する。該当代行レベルが１の場合は、要求宛先チャネル制御部に代行処理情報１２４を示すことで処理の引継ぎを行い、要求受領チャネル制御部は処理を終了する（ステップ１１）。本実施例では、制御メモリ部１２を通じて代行処理情報１２４を示すが、メッセージ通信などで該当チャネル制御部に直接代行処理情報１２４を示してもよい。該当代行レベルが２以上の場合は、ステップ１で識別した当該ＤＫＣのキャッシュに対してキャッシュヒットミス判定を行う（ステップ２）。キャッシュに保持していないキャッシュミスの場合は、当該ＤＫＣのディスク制御部対して当該データのドライブからキャッシュへの転送依頼を行う（ステップ３）。ここで該当代行レベルが２の場合は、要求宛先チャネル制御部に代行処理情報１２４を示すことで処理の引継ぎを行い、要求受領チャネル制御部は処理を終了する（ステップ１３）。該当代行レベルが３以上の場合は、転送終了までリード処理を中断し（ステップ６）、ステージング終了後、再びリード処理を継続することになる。ここで該当代行レベルが３の場合は、要求宛先チャネル制御部に代行処理情報１２４を示すことで処理の引継ぎを行い、要求受領チャネル制御部は処理を終了する（ステップ１４）。ステップ３でヒット判定の場合、該当代行レベルが２以上の場合は、要求宛先チャネル制御部に代行処理情報１２４を示すことで処理の引継ぎを行い、要求受領チャネル制御部は処理を終了する（ステップ１５）。その後、または、ステップ４でステージング処理が終了した場合は、ホストコンピュータに対して当該データを転送する（ステップ５）。ステップ５の際、処理を行ったチャネル制御部がホストコンピュータのアクセス要求の宛先と異なっていても、本来の宛先チャネル制御部が応答したとするようにデータを転送する。
【００３０】
図１６は、図１５に対応するリード要求に対する代行処理の引継ぎ処理の一例を示す流れ図である。リード要求を受領した代行チャネル制御部の代行レベルテーブル１１３に設定された段階の処理までを代行チャネル制御部が行い、以降の段階の処理を要求宛先チャネル制御部が行うこと（引継ぎ処理）が本実施例の特徴である。
【００３１】
チャネル制御部が該当チャネル制御部を対象とした代行処理情報１２４の存在を確認すると、該当代行処理情報を解析する（ステップ１）。代行処理情報を解析し処理段階１２４５を取り出すことにより、代行レベルが判別できる。代行レベルが１ならば、アクセス先ＤＫＣのキャッシュに対してキャッシュヒット／ミス判定を行う（ステップ２）。代行レベルが２以上ならば、処理段階１２４５よりキャッシュヒット／ミスが判別できる。ステップ２でキャッシュミスもしくは代行レベル２でキャッシュミスの場合は、該当ディスク制御部に該当データをキャッシュに転送依頼する（ステップ３）。代行レベル３でキャッシュミスまたはステップ３終了後は、転送終了までリード処理を中断し（ステップ４）、ステージング終了後、再びリード処理を継続することになる。キャッシュヒットもしくはステップ４終了後、該当ＤＫＣのチャネル制御部に対し、該当データを参照しチャネルに転送する（ステップ５）。
【００３２】
図１７は、ライト要求受信時の処理の一例を示す流れ図である。代行レベルテーブル１１３に設定された段階の処理までを要求受領チャネル制御部が行い、以降の段階の処理を要求宛先チャネル制御部が行うことが本実施例の特徴である。
【００３３】
ライト要求を受領すると、受信要求から、本来の要求宛先のチャネル制御部とコマンドとアクセス先アドレスを解析し、ライトアクセスであることを認識する（ステップ１）。アクセス先アドレスは、制御メモリ部１２の装置構成情報１２３を参照することで、アクセス要求先のディスク制御装置番号とドライブ番号を識別できる。次に代行レベルテーブル１１３を参照し、該当チャネル制御部に対する代行レベルを獲得する。該当代行レベルが１の場合は、要求宛先チャネル制御部に代行処理情報１２４を示すことで処理の引継ぎを行い、要求受領チャネル制御部は処理を終了する（ステップ１１）。本実施例では、制御メモリ部１２を通じて代行処理情報１２４を示すが、メッセージ通信などで該当チャネル制御部に直接代行処理情報１２４を示してもよい。該当代行レベルが２以上の場合は、ステップ１で識別した当該ＤＫＣのキャッシュに対してキャッシュヒットミス判定を行う（ステップ２）。キャッシュに保持していないキャッシュミスの場合は、当該ＤＫＣのディスク制御部対して当該データのドライブからキャッシュへの転送依頼を行う（ステップ３）。ここで該当代行レベルが２の場合は、要求宛先チャネル制御部に代行処理情報１２４を示すことで処理の引継ぎを行い、要求受領チャネル制御部は処理を終了する（ステップ１３）。該当代行レベルが３以上の場合は、転送終了までライト処理を中断し（ステップ６）、ステージング終了後、再びライト処理を継続することになる。ここで該当代行レベルが３の場合は、要求宛先チャネル制御部に代行処理情報１２４を示すことで処理の引継ぎを行い、要求受領チャネル制御部は処理を終了する（ステップ１４）。ステップ３でヒット判定の場合、該当代行レベルが２または３の場合は、要求宛先チャネル制御部に代行処理情報１２４を示すことで処理の引継ぎを行い、要求受領チャネル制御部は処理を終了する（ステップ１５）。その後、または、ステップ４でステージング処理が終了した場合は、当該ＤＫＣのキャッシュに対して当該データの更新を行う（ステップ５）。該当代行レベルが４の場合は、要求宛先チャネル制御部に代行処理情報１２４を示すことで処理の引継ぎを行い、要求受領チャネル制御部は処理を終了する（ステップ１６）。更新終了後、ホストコンピュータに対してライト処理の完了報告を行う（ステップ６）。ステップ６の際、処理を行ったチャネル制御部がホストコンピュータのアクセス要求の宛先と異なっていても、本来の宛先チャネル制御部が応答したとする完了報告をする。
【００３４】
図１８は、図１７に対応するライト要求に対する代行処理の引継ぎ処理の一例を示す流れ図である。ライト要求を受領した代行チャネル制御部の代行レベルテーブル１１３に設定された段階の処理までを代行チャネル制御部が行い、以降の段階の処理を要求宛先チャネル制御部が行うこと（引継ぎ処理）が本実施例の特徴である。
【００３５】
チャネル制御部が該当チャネル制御部を対象とした代行処理情報１２４の存在を確認すると、該当代行処理情報を解析する（ステップ１）。代行処理情報を解析し処理段階１２４５を取り出すことにより、代行レベルが判別できる。代行レベルが１ならば、アクセス先ＤＫＣのキャッシュに対してキャッシュヒット／ミス判定を行う（ステップ２）。代行レベルが２以上ならば、処理段階１２４５よりキャッシュヒット／ミスが判別できる。ステップ２でキャッシュミスもしくは代行レベル２でキャッシュミスの場合は、該当ディスク制御部に該当データをキャッシュに転送依頼する（ステップ３）。代行レベル３でキャッシュミスまたはステップ３終了後は、転送終了までライト処理を中断し（ステップ４）、ステージング終了後、再びライト処理を継続することになる。代行レベル３でキャッシュヒットもしくはステップ４終了後、該当ＤＫＣのキャッシュに対し該当データを更新する（ステップ５）。ステップ５終了後もしくは代行レベル４の場合はホストにライト完了報告する（ステップ６）。
【００３６】
図１９は、あるチャネル制御部１１が障害に陥った場合に、該当チャネル制御部をフェイルオーバするＳＶＰ４０の処理の一例を示す流れ図である。ＳＶＰが更新する分配テーブル３１の要素は転送先候補とするか否かの２値であり、更に各チャネル制御部が代行レベルテーブル１１３を持ちＳＶＰにより更新される場合の説明をする。ここでは障害下にあるチャネル制御部を障害チャネル制御部と呼ぶ。ＳＶＰ４０の障害監視部４００１により、障害チャネル制御部の存在を確認する（ステップ１）。次に負荷監視部４００２により得られた正常なチャネル制御部の負荷率を障害情報テーブル４０１より参照し、最低負荷率のチャネル制御部を見つける（ステップ２）。その後、分配テーブル３１を参照し要求転送先チャネル制御部が障害チャネル制御部の行を順次チェックする（ステップ３）。該当要素が１、すなわちチャネル−ＤＫＣ間スイッチ３０が障害チャネル制御部に要求を転送することになっていた場合は、該当要素を０として障害チャネル制御部に要求を転送しないようにし、また、該当要素の列の要求転送先チャネル制御部が該当最低負荷率のチャネル制御部の要素を１にして要求転送先チャネル制御部が無い状態を防ぐ（ステップ４）。また、該当最低負荷率のチャネル制御部が有する代行レベルテーブル１１３の障害チャネル制御部に対応する要素を完全代行とする（ステップ５）。ステップ３、ステップ４、ステップ５を該当行全体に対してチェック終了するまで続ける。
【００３７】
図２１は、各チャネル制御部１１の負荷に偏りが生じた場合におけるＳＶＰ４０の処理の一例を示す流れ図である。ＳＶＰ４０の負荷監視部４００２により得られた負荷情報テーブル４０１から各チャネル制御部の負荷率に偏りがあることを確認する（ステップ１）。負荷率の偏りは、例えば、最高負荷率と最低負荷率の差が閾値を超えた場合で定義できる。次に、チャネル制御部を負荷率昇順でソートする（ステップ２）。その結果により最高負荷率のチャネル制御部の負荷を下げるように分配テーブル３１を更新する。分配テーブルで要求宛先チャネル制御部が該当最高負荷率のチャネル制御部の列をステップ２のソート順にチェックしていく（ステップ３）。該当要素が０ならば、該当転送先チャネル制御部が有する代行レベルテーブル１１３の最高負荷率チャネル制御部の代行レベルを代行時の初期値に設定し（ステップ４）、該当要素を１として負荷分散先として登録する（ステップ５）。該当要素が１ならば次の要素をチェックする。全要素チェック後またはステップ５終了後は、分配テーブルで要求転送先チャネル制御部が該当最高負荷率のチャネル制御部である行をステップ２のソート順にチェックしていく（ステップ６）。該当要素が１ならば、該当要素を０として該当最高負荷率のチャネル制御部を負荷分散先から削除し（ステップ７）、最高負荷率チャネル制御部の代行レベルテーブルの該当宛先チャネル制御部の代行レベルを代行しないに設定する（ステップ８）。該当要素が０ならば次の要素をチェックする。全要素チェック後またはステップ８終了後は、この処理を終了とする。
【００３８】
図２２は、あるチャネル制御部１１が障害に陥った場合に、該当チャネル制御部をフェイルオーバするＳＶＰ４０の処理の一例を示す流れ図である。ＳＶＰが更新する分配テーブル３１の要素は転送先とする確率を示したものであり、更に各チャネル制御部が代行レベルテーブル１１３を持ちＳＶＰにより更新される場合の説明をする。ここでは障害下にあるチャネル制御部を障害チャネル制御部と呼ぶ。ＳＶＰ４０の障害監視部４００１により、障害チャネル制御部の存在を確認する（ステップ１）。次に負荷監視部４００２により得られた正常なチャネル制御部の負荷率を障害情報テーブル４０１より参照し、最低負荷率のチャネル制御部を見つける（ステップ２）。その後、分配テーブル３１を参照し要求転送先チャネル制御部が障害チャネル制御部の行を順次チェックする（ステップ３）。該当要素が０より大きい、すなわちチャネル−ＤＫＣ間スイッチ３０が障害チャネル制御部に要求を転送することになっていた場合は、該当要素を０として障害チャネル制御部に要求を転送しないようにし、該当最低負荷率のチャネル制御部の要素に、障害チャネル制御部の元の要素を加算する（ステップ４）。また、該当最低負荷率のチャネル制御部が有する代行レベルテーブル１１３の障害チャネル制御部に対応する要素を完全代行とする（ステップ５）。ステップ３、ステップ４、ステップ５を該当行全体に対してチェック終了するまで続ける。
【００３９】
図２３は、各チャネル制御部１１の負荷に偏りが生じた場合におけるＳＶＰ４０の処理の一例を示す流れ図である。ＳＶＰが更新する分配テーブル３１の要素は転送先とする確率を示したものであり、更に各チャネル制御部が代行レベルテーブル１１３を持ちＳＶＰにより更新される場合の説明をする。ＳＶＰ４０の負荷監視部４００２により得られた負荷情報テーブル４０１から各チャネル制御部の負荷率に偏りがあることを確認する（ステップ１）。次に正常チャネル制御部の負荷率が最低であるものと最高であるものを選択する（ステップ２）。分配テーブル３１中の最高負荷率のチャネル制御部が転送先ポートの行について全てのΔ以上の要素からΔを減算する（ステップ３）。この際、障害下にあるチャネル制御部に該当する要素については除外する。ここで、代行レベルテーブル１１３についての整合を取る。ステップ３にて０になった要素に対応する最高負荷率チャネル制御部の代行レベルテーブルの該当宛先チャネル制御部の代行レベルを代行しないに設定する（ステップ４）。次に、分配テーブル３１中の最低負荷率のチャネル制御部が転送先ポートの行についてステップ３にて減算した宛先ポートに対応する要素にΔを足す（ステップ５）。またここでも、代行レベルテーブル１１３についての整合を取る。ステップ５にて０から増加した要素に対応する転送先チャネル制御部の代行レベルテーブルについて最高負荷率チャネル制御部の代行レベルを代行時の初期値に設定する（ステップ６）。
【００４０】
図２４は、各チャネル制御部１１の負荷に偏りが生じた場合におけるＳＶＰ４０が各チャネル制御部の代行レベルテーブル１１３の変更を行う処理の一例を示す流れ図である。ＳＶＰ４０の負荷監視部４００２により得られた負荷情報テーブル４０１から各チャネル制御部の負荷率に偏りがあることを確認する（ステップ１）。次に正常チャネル制御部の負荷率が最低であるものと最高であるものを選択する（ステップ２）。ここで、分配テーブル３１を参照し、最低負荷率のチャネル制御部が最高負荷率のチャネル制御部を代行しているように記載されているか調べる（ステップ３）。まだ記載が無ければ、前述の実施例により分配テーブル３１を更新し処理を終了する（ステップ６）。すでに有るならば、最低負荷率のチャネル制御部の代行レベルテーブル１１３を参照し、現在の最高負荷率チャネル制御部に対する代行レベルを調査する（ステップ４）。既に最高レベルならばこの処理は終了する。まだ最高レベルに至っていない場合には、最低負荷率チャネル制御部の最高負荷率チャネル制御部に対する代行レベルを１段階上げる（ステップ５）。
【００４１】
以上で、チャネル制御部１１およびＳＶＰ４０の制御方法を説明した。次に分配テーブルの要素が転送先確率を示す場合におけるチャネル−ＤＫＣ間スイッチ３０のアクセス要求の転送制御方法を図２５により説明する。
【００４２】
図２５は、分配テーブル３１の要素が転送先とする確率を示す場合のチャネル−ＤＫＣ間スイッチ３０において、ホスト側ポート３０１１がアクセス要求を受けた場合どのＤＫＣ側ポート３０２１に転送するかの選択方法を流れ図で示したものである。まず、ホストコンピュータ０のアクセス要求がホスト側ポート３０１１に到着したことをホスト側ポートが確認する（ステップ１）。次に、該当アクセス要求の宛先ポートを解析する（ステップ２）。更に、擬似乱数を発生する（ステップ３）。擬似乱数は、つねにカウントアップしているカウンタ値や、毎回更新される乱数の種に一定規則の演算を施し、その結果の下位を用いるなどの方法がある。次に、分配テーブル３１の該当宛先ポートの列を参照し、要素がステップ３で得た擬似乱数以上のものを転送先候補とする（ステップ４）。もし候補数が０ならばステップ３に戻る（ステップ５）。候補があるならば、候補の中で、前回選択されたもののインデックスから周期境界条件で正の方向に最も近いものを転送先ポート番号として選択し、該当要求を選択したＤＫＣ側ポートに転送する（ステップ６）。
【００４３】
次に、装置管理者がＳＶＰ４０を通じて装置の負荷分散に関する設定を行う場合の画面の一例について図２６により説明する。
【００４４】
図２６は、ＳＶＰ４０がチャネル制御部に対して指示を行うことにより実行する負荷分散について、ＳＶＰ４０の装置管理インタフェース部４０４を通じて端末（図示せず）等で装置管理者が設定を行う場合の設定画面の実施例である。代行レベル設定画面２６０１は設定するチャネル制御部を選択する設定チャネル制御部選択欄２６３０と各チャネル制御部に対応した代行レベル選択欄２６１０を有する。装置管理者は、キーボード入力やＧＵＩによる選択入力等の方法で、設定チャネル制御部選択欄２６３０や代行レベル選択欄２６１０にて、設定するチャネル制御部を選択し、各チャネル制御部の代行レベルを設定可能である。これらは、設定ボタン２６２１を前述した入力方法で選択すると、本画面で設定した内容が、ＳＶＰ４０を通じて代行レベルテーブル１１３と分配テーブル３１に反映される。代行レベル選択欄２６１０にて自動設定に選択されたチャネル制御部は、ＳＶＰ４０が代行レベルの更新を行う。これら設定された情報はＳＶＰ４０のローカルメモリ４００４に収納され次回に本画面にて再設定されるまで保持される。また、取消ボタン２６２２を前述した入力方法で選択すると、本画面を呼び出す前の設定情報が引き続き使用される。
【００４５】
【発明の効果】
チャネル−ＤＫＣ間スイッチを設け、アクセス要求を複数のチャネル制御部に振り分けることを可能にした。このことにより、ホストコンピュータ側に装置の内部構造を意識させないで、チャネル制御部の負荷に応じた負荷分散が可能になる。同様に、障害下にあるチャネル制御部を迂回してアクセス要求を他のチャネル制御部で処理することができる。この場合についても、ホストコンピュータ側は該当チャネル制御部が障害に陥ったことや装置内部構造を意識せずに操作を継続することができる。
【００４６】
さらに、本発明の代行処理により負荷分散を行えば、設定した代行レベルによっては、リードアクセス要求処理に、処理を引継ぐチャネル制御部のＤＫＣに対象データが存在するとすれば、リードデータがディスク制御装置間の通信手段を経ることが無くホストコンピュータに応答することが可能になる。これにより、ディスク制御装置間の通信手段に対する負荷分散にもなる。特にシーケンシャルリードの要求が多い環境において負荷分散をする場合、完全代行のような方法ではリードデータがディスク制御装置間の通信手段を占有し、ディスク制御装置間の通信手段がボトルネックとなってしまう。しかしながら、代行処理を用いることにより、装置使用環境に特徴的なアクセス種類によらず、チャネル制御部の負荷分散が可能になる。
【図面の簡単な説明】
【図１】本発明に係わるディスク制御装置の概要を示すブロック図の一例である。
【図２】従来のディスク制御装置の概要を示すブロック図の一例である。
【図３】従来のディスク制御装置の概要を示すブロック図の一例である。
【図４】本発明のディスク制御装置のチャネル−ＤＫＣ間スイッチを示すブロック図の一例である。
【図５】本発明に係わるディスク制御装置のチャネル制御部を示すブロック図の一例である。
【図６】本発明に係わるディスク制御装置の制御メモリを示すブロック図の一例である。
【図７】本発明に係わるディスク制御装置のチャネル制御部の完全代行リード要求処理の一例を示す流れ図である。
【図８】本発明に係わるディスク制御装置のチャネル制御部の完全代行ライト要求処理の一例を示す流れ図である。
【図９】本発明に係わるディスク制御装置のＳＶＰがチャネル制御部障害によるフェイルオーバの処理の一例を示す流れ図である。
【図１０】本発明に係わるディスク制御装置のＳＶＰによるチャネル制御部障害回復した場合の処理の一例を示す流れ図である。
【図１１】本発明に係わるディスク制御装置のＳＶＰがチャネル制御部の負荷分散を行う場合の処理の一例を示す流れ図である。
【図１２】本発明に係わるディスク制御装置のＳＶＰがチャネル制御部の負荷分散を行う場合の処理の一例を示す流れ図である。
【図１３】本発明に係わるディスク制御装置のＳＶＰによるチャネル制御部障害回復した場合の処理の一例を示す流れ図である。
【図１４】本発明に係わるディスク制御装置のＳＶＰによるチャネル制御部障害のフェイルオーバの処理の一例を示す流れ図である。
【図１５】本発明に係わるディスク制御装置のチャネル制御部の代行リード要求処理の一例を示す流れ図である。
【図１６】本発明に係わるディスク制御装置のチャネル制御部の代行引継ぎリード要求処理の一例を示す流れ図である。
【図１７】本発明に係わるディスク制御装置のチャネル制御部の代行ライト要求処理の一例を示す流れ図である。
【図１８】本発明に係わるディスク制御装置のチャネル制御部の代行引継ぎライト要求処理の一例を示す流れ図である。
【図１９】本発明に係わるディスク制御装置のＳＶＰによるチャネル制御部障害のフェイルオーバの処理の一例を示す流れ図である。
【図２０】本発明に係わるディスク制御装置のＳＶＰを示すブロック図の一例である。
【図２１】本発明に係わるディスク制御装置のＳＶＰがチャネル制御部の負荷分散を行う場合の処理の一例を示す流れ図である。
【図２２】本発明に係わるディスク制御装置のＳＶＰによるチャネル制御部障害のフェイルオーバの処理の一例を示す流れ図である。
【図２３】本発明に係わるディスク制御装置のＳＶＰがチャネル制御部の負荷分散を行う場合の処理の一例を示す流れ図である。
【図２４】本発明に係わるディスク制御装置のＳＶＰがチャネル制御部の負荷分散を行う場合の処理の一例を示す流れ図である。
【図２５】本発明に係わるディスク制御装置のチャネル−ＤＫＣ間スイッチのアクセス要求転送先ポートを決定する処理の一例を示す流れ図である。
【図２６】本発明に係わるディスク制御装置の代行レベルを設定時にＳＶＰにより表示される画面の一例を示すブロック図である。
【符号の説明】
０・・・ホストコンピュータ、１・・・ディスクサブシステム、２・・・チャネル、３・・・制御情報、４・・・格納データ、５・・・キャッシュデータ、７・・・論理ディスク、１０・・・ディスク制御装置、１１・・・チャネル制御部、１２・・・制御メモリ、１３・・・キャッシュメモリ部、１４・・・ディスク制御部、１５・・・結合機構、１６・・・ドライブIF、１７・・・ドライブ、２０・・・ディスク制御装置間接続手段、３０・・・チャネル−ＤＫＣ間スイッチ、３１・・・分配テーブル、３９・・・ＳＡＮスイッチ、４０・・・ＳＶＰ。
【図１】
0004188602.tif 000002
【図２】
0004188602.tif 000003
【図３】
0004188602.tif 000004
【図４】
0004188602.tif 000005
【図５】
0004188602.tif 000006
【図６】
0004188602.tif 000007
【図７】
0004188602.tif 000008
【図８】
0004188602.tif 000009
【図９】
0004188602.tif 000010
【図１０】
0004188602.tif 000011
【図１１】
0004188602.tif 000012
【図１２】
0004188602.tif 000013
【図１３】
0004188602.tif 000014
【図１４】
0004188602.tif 000015
【図１５】
0004188602.tif 000016
【図１６】
0004188602.tif 000017
【図１７】
0004188602.tif 000018
【図１８】
0004188602.tif 000019
【図１９】
0004188602.tif 000020
【図２０】
0004188602.tif 000021
【図２１】
0004188602.tif 000022
【図２２】
0004188602.tif 000023
【図２３】
0004188602.tif 000024
【図２４】
0004188602.tif 000025
【図２５】
0004188602.tif 000026
【図２６】
0004188602.tif 000027