【手続補正書】
【提出日】平成18年6月28日(2006.6.28)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【書類名】明細書
【発明の名称】入出力制御装置
【特許請求の範囲】
【請求項１】
ホストコンピュータに対してデータの読み書きをするために論理ボリュームを提供するディスク装置を、複数のコントローラを介して制御する入出力制御装置において、
前記ホストコンピュータから前記論理ボリュームへのアクセスに関するシーケンシャル判定を、前記論理ボリュームを担当する一の前記コントローラ経由のアクセスのみを対象とせず、それ以外の該前記論理ボリュームを担当しないその他の前記コントローラ経由のアクセスも含めて、シーケンシャル判定を行う
ことを特徴とする入出力制御装置。
【請求項２】
請求項１記載の入出力制御装置において、
前記シーケンシャル判定は、
ユーザが前記複数のコントローラからグループ分けを設定した当該グループ分けの結果に基づいて、グループ毎に行う
ことを特徴とする入出力制御装置。
【請求項３】
請求項２記載の入出力制御装置において、
前記シーケンシャル判定は、
ユーザが設定した論理ボリューム毎に行う
ことを特徴とする入出力制御装置。
【請求項４】
請求項２記載の入出力制御装置において、
前記論理ボリュームを担当する一の前記コントローラは、
前記ホストコンピュータ又は前記論理ボリュームを担当しないその他の前記コントローラから送信される入出力処理要求を受領し、
担当する前記論理ボリュームに対する入出力処理要求である場合には、リード処理又はライト処理の判定をする入出力処理判定を行った後に、前記シーケンシャル判定を行う
ことを特徴とする入出力制御装置。
【請求項５】
請求項４記載の入出力制御装置において、
前記論理ボリュームを担当する一の前記コントローラは、
シーケンシャル判定を行うためのシーケンシャル判定テーブルを有し、
前記入出力処理判定を行った後に、
担当する前記論理ボリュームを選別し、
シーケンシャル判定の要否及びグループ分けの結果に基づいた判定グループを、前記シーケンシャル判定テーブルを参照して判断し、
前記シーケンシャル判定テーブルに前記入出力処理要求に対するコマンドが格納されている場合にはシーケンシャル判定を行う
ことを特徴とする入出力制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、上位装置からの情報の入出力要求を制御する入出力制御装置において、高性能、高信頼性を確保するため、入出力制御装置内のコントローラ／キャッシュを冗長構成とするコンピュータシステムに関する。
【０００２】
【従来の技術】
コントローラ、ディスクおよびキャッシュ等の記憶装置に冗長性を持たせ、かつ論理ボリューム（以下、ＬＵＮという）の担当コントローラを重複せず割り当てたものとして、特開平９−１４６８４２号に記載のようにキャッシュ領域を各コントローラ毎に割り当てて各コントローラが使用するキャッシュ領域を固定化することによりコントローラ間のキャッシュの排他制御をなくし、またコントローラ間の通信により、割り当てられたＬＵＮ以外のアクセスも担当コントローラに処理させることにより複数コントローラ化にともなう性能劣化を防いでいた。
【０００３】
【発明が解決しようとする課題】
最近の市場動向として、記憶装置の高性能化、高信頼性、大容量化、低価格化の要求が高まっており、上記の特開平９−１４６８４２号のような技術により、冗長化されたコントローラ、キャッシュを持つ構成で低価格、高性能なＲＡＩＤシステムを実現していた。
【０００４】
一方ホスト側の技術としてOracle Palarel Serverのように、基幹系大規模システムで実現していた、同一ＬＵＮへ複数のポート／コントローラを経由した負荷分散的アクセスの技術などが中規模以下のホストシステムでも適用されるようになった。そのため、上記のような低価格ＲＡＩＤシステムにおいても、同一ＬＵＮへ複数のポート／コントローラを経由した負荷分散的アクセスに対する性能が重視されるようになった。
【０００５】
また、複数のホストを接続して同一ＬＵＮを共用するようにもなり、複数のポート／コントローラからの同一ＬＵＮへの個別アクセスに対する性能も重視されるようになった。
【０００６】
しかし上記特開平９−１４６８４２号では、複数ポート／コントローラ経由で同一のＬＵＮへの順次(以下、シーケンシャルという)アクセスが分散された場合や、同一ＬＵＮへのホスト個別のシーケンシャルアクセスに対する性能確保が考慮されておらず、それらの性能劣化が問題となってきた。
【０００７】
【課題を解決するための手段】
上記課題を解決するために、本発明は、ホストコンピュータに対してデータの読み書きをするために論理ボリュームを提供するディスク装置を、複数のコントローラを介して制御する入出力制御装置において、前記ホストコンピュータから前記論理ボリュームへのアクセスに関するシーケンシャル判定を、前記論理ボリュームを担当する一の前記コントローラ経由のアクセスのみを対象とせず、それ以外の該前記論理ボリュームを担当しないその他の前記コントローラ経由のアクセスも含めて、シーケンシャル判定を行うことを特徴とする。
【０００８】
この結果、複数のホストコンピュータに分散されたシーケンシャルのアクセス要求を、ホスト側発行時間の入れ替わり、および入出力制御装置内のコントローラ間通信における通信時間差等による、シーケンシャルの順番の入れ替わりなども考慮した、シーケンシャル判定する手段を提供し、かつ複数のホストコンピュータにつながったコントローラごとに、同一ＬＵＮへのシーケンシャル判定を実施する手段を提供することができる。
【０００９】
【発明の実施の形態】
以下、本発明の一実施例を、図面を用いて説明する。
【００１０】
図１は、本発明をマルチコントローラ構成の磁気ディスクアレイサブシステムに適用した場合の一構成図である。
【００１１】
図１において、１０００、１１００、１２００はデータ処理を行う中央処理装置としてのホストコンピュータ、２０００はディスク装置の制御を行うマルチコントローラ構成をとる入出力制御装置、７０００はホストデータを格納するディスク装置である。ここで入出力制御装置２０００は、ホストバスに直結したスロットに差込みホスト筐体に組み込む場合もあるし、制御装置として独立した筐体に組み込む場合も有るし、ディスク装置を組み込んだ筐体として実現する場合も有る。
【００１２】
入出力制御装置２０００は、ホストコンピュータ１０００、１１００、１２００とディスク装置群７０００間のデータ転送を制御するコントローラ３０００、４０００、５０００、６０００より構成する。
【００１３】
コントローラ３０００は、ホストコンピュータ１０００とのプロトコル制御を行うホストI/F制御部３１００、データの転送を実行するデータ転送制御部３２００、コントローラ全体を制御するマイクロプロセッサ(以下、プロセッサと称す)３３００、ホストコンピュータ１０００とディスク装置群７０００のデータ転送に用いられるキャッシュ３４００より構成する。
【００１４】
コントローラ４０００、５０００、６０００はコントローラ３０００と同一構成であり、各コントローラ間で通信を行う手段を有する。
【００１５】
各コントローラはあらかじめ排他的に割り当てられた担当ＬＵＮの処理を行い、非担当のＬＵＮの処理要求をホストコンピュータから受け取った場合には、該ＬＵＮの担当コントローラに処理要求を通信し、処理結果を受け取ったのちにホストコンピュータへ処理結果を報告する。これらの処理のための制御情報は各コントローラのキャッシュメモリ上の共通管理エリアに格納することも可能である。
【００１６】
各コントローラは、ホストまたは他コントローラからの担当ＬＵＮの処理要求に関して図３に示すような担当ＬＵＮのＲｅａｄシーケンシャル判定テーブルを参照して判定を行い、シーケンシャル制御処理を行う。シーケンシャル判定テーブルは、Ｒｅａｄ／Ｗｒｉｔｅおよび担当ＬＵＮ別に区別して各コントローラのキャッシュメモリ上の共通管理エリアに格納することも可能である。また、シーケンシャル制御処理とは、たとえばＲｅａｄ要求では次に予想されうる処理要求に該当するデータを、要求より先にディスク装置群からキャッシュ上に読み込む処理などである。
【００１７】
次に本実施例における、磁気ディスクサブシステムでのホストコンピュータからのＩ／Ｏ処理のシーケンシャル判定について図２、図３、図４を用いて説明する。
【００１８】
図２は各コントローラのＩ／Ｏ処理のフローチャート図である。ホストまたは他のコントローラからのＩ／Ｏ要求（５０１）を受領すると、担当ＬＵＮへのＩ／Ｏ処理要求かの判定を行い（５０２）、非担当のＬＵＮの処理要求の場合は該ＬＵＮの担当コントローラへ処理要求を通信/結果受信を行う（５０７）。ここで、Ｉ／Ｏ要求（５０１）にはホストより受領したコントローラを示す情報が付加される。担当ＬＵＮへのＩ／Ｏ処理要求の判定（５０２）で、担当ＬＵＮへのＩ／Ｏ処理要求であればＩ／Ｏ処理判定を行い（５０３）、Ｒｅａｄ処理かＷｒｉｔｅ処理かの判定を行う。ここではＲｅａｄ処理でのフローを例にとり説明するが、Ｗｒｉｔｅ処理でも同様である。Ｉ／Ｏ処理判定（５０３）でＲｅａｄ処理の場合、後に詳細に述べるシーケンシャル判定処理（５０４）を行う。その後、実際のコマンド処理を実施する。Ｒｅａｄの場合、バッファ上のデータの有無の判定（５０５）を行い、有ればそのデータを用いてホスト又は処理要求元のコントローラは応答（５０９）を行う。バッファ上にデータが無ければディスク装置群からのデータ読み込み（５０６）を実施し、同様に応答（５０９）を行う。
【００１９】
図３はコントローラ３０００のある担当ＬＵＮのＲｅａｄシーケンシャル判定テーブル８０００である。判定テーブル８０００は、コントローラ種別８１００、判定要否８２００、判定グループ８３００、コマンド格納エリア８４００の各要素からなる。また各要素は、本構成におけるコントローラ数だけ存在し、各コントローラに関連付けられるものである。
【００２０】
コントローラ種別８１００はコントローラそのものである。判定要否８２００は、ユーザがコントローラ別にこのＬＵＮへのＲｅａｄアクセスに関し、シーケンシャル判定を行うか否かを設定可能な要素である。判定グループ８３００は、ユーザがＲｅａｄシーケンシャル判定を行うコントローラのグループ分けを行い、その結果が反映される要素である。
図３の例では、コントローラ３０００および４０００が同じグループ１でコントローラ５０００が別のグループ２となっている。コマンド格納エリア８４００は各コントローラ経由で受領したＲｅａｄコマンドが格納されており、各コマンドは要求ロジカルアドレスおよび要求ブロック数からなる。
【００２１】
ここで、Ｒ１〜Ｒ５、Ｒ７はコントローラ３０００および４０００から分散されたシーケンシャルなＲｅａｄコマンドで、数値が順序を示す。Ｒ６が欠如しているのは、コントローラ間通信やホストからの要求の遅延などの時間差により、コントローラ４０００からの要求がまだコントローラ３０００の到達していない場合に起こる可能性がある。ｒ１〜ｒ３はコントローラ５０００からのシーケンシャルなＲｅａｄコマンドで数値が順序を示す。
【００２２】
図４は、コントローラ３０００の担当ＬＵＮへのＲｅａｄコマンド処理におけるシーケンシャル判定処理の詳細である。コントローラ３０００のＷｒｉｔｅシーケンシャル判定や、他のコントローラのシーケンシャル判定も同様に可能なものである。
【００２３】
図２のＩ／Ｏ処理判定５０３の後、当該処理についてコントローラ３０００が担当するＬＵＮの中の選別９０１を行う。選別により、判定に使用するテーブル８０００を決め、シーケンシャル判定要否９０２を確認する。このときＩ／Ｏ処理要求に付加されたコントローラ情報から、テーブル８０００の該当するコントローラの判定要否８２００を参照しｙｅｓなら判定グループの判別９０３、ｎｏならばそのまま本処理を抜ける。判定グループの判別９０３でテーブル８０００の判定グループ８３００を参照し該当するグループの処理９０４または９０８に進む。ここではコマンドＲ７を受領したものとしグループ１の場合で説明する。処理９０４に進み、判定グループ１に属するコマンド格納エリア８４００内に、Ｒ（Ｎ−５）〜Ｒ（Ｎ−１）すなわちＲ２〜Ｒ６のコマンドが有るか無いかを判定する。この場合、Ｒ２〜Ｒ５が存在するのでシーケンシャル判定９０５となる。そして、コマンド格納９０７でＲ７に該当するコントローラのコマンド格納エリア８４００に格納し、本処理を抜ける。また受け取ったコマンドがＲ１００などのＲ１〜Ｒ６までとは離れたアクセスの場合は、処理９０４でシーケンシャル判定とはならず、シーケンシャル判定なし９０６となる。
【００２４】
この処理９０４の判定は一例であり、他の方法による判定も可能である。また、シーケンシャル判定９０５および、シーケンシャル判定なし９０６の利用の方法は、たとえば判定９０５では先読み処理を起動、判定９０６では先読み処理の中断などであり、他の利用方法も可能である。
【００２５】
また、判定テーブルを担当ＬＵＮ毎に分け、テーブル内にコントローラグループを設定可能としているため、シーケンシャル判定がＬＵＮ毎、コントローラのグループ別に可能となる。
【００２６】
【発明の効果】
本発明によれば、複数のホストに分散されたシーケンシャルのアクセス要求を、ホスト側発行時間の入れ替わり、および入出力制御装置内のコントローラ間通信における通信時間差等による、シーケンシャルの順番の入れ替わりなども考慮した、シーケンシャル判定する手段を提供し、かつ複数のホストにつながったコントローラごとに、同一ＬＵＮへのシーケンシャル判定を実施する手段を提供することにより、コントローラ複数化によるシーケンシャル性能の劣化を防止することが可能となる。
【図面の簡単な説明】
【図１】本発明の一実施例を示す全体構成図である。
【図２】本発明の一実施例におけるＩ／Ｏ処理方式の一例を示すフローチャートである。
【図３】本発明の一実施例におけるシーケンシャル判定に用いられるテーブルの一例を示す概念図である。
【図４】本発明の一実施例におけるシーケンシャル判定処理の一例を示すフローチャートである。
【符号の説明】
１０００、１２００、１３００…ホストコンピュータ、２０００…入出力制御装置、３０００、４０００、５０００、６０００…コントローラ、３１００、４１００、５１００、６１００…ホストＩ／Ｆ制御部、３２００、４２００、５２００、６２００…データ転送制御部、3３００、４３００、５３００、６３００…マイクロプロセッサ、３４００、４４００、５４００、６４００…キャッシュメモリ、７０００…ディスク装置群、８０００…シーケンシャル判定テーブル、８１００…コントローラ種別要素、８２００…判定要否要素、８３００…判定グループ要素、８４００…コマンド格納エリア、５０１〜５０９…Ｉ／Ｏ処理フロー、９０１〜９０２…Ｒｅａｄシーケンシャル判定フロー。