(57)【特許請求の範囲】
【請求項１】
ホスト計算機と、
複数のコントローラ及び該コントローラにより読み書きが制御される記憶部本体を有する第１の記憶装置と、
複数のコントローラ及び該コントローラにより読み書きが制御される、前記第１の記憶装置に書き込まれたデータの複製データを記憶した記憶部本体を有する第２の記憶装置と、
前記ホスト計算機と前記第１及び第２の記憶装置の各コントローラとの間に接続される複数のアクセスパスと、
を具備し、
前記ホスト計算機は、シーケンシャルな読み込み要求に対し、前記第１及び第２の記憶装置それぞれの複数のコントローラについて前記アクセスパスを選択し、前記第１及び第２の記憶装置に対し分散して要求を発行し、
前記第１及び第２の記憶装置は、各コントローラに読み込み範囲を記録したリードテーブルを有し、
前記ホスト計算機は、シーケンシャルな読み込み要求に対し、前記シーケンシャルな読み込み要求の範囲と前記リードテーブルに記録された読み込み範囲との比較結果に応じて、前記リードテーブルが存在するコントローラのアクセスパスを選択し、前記第１及び第２の記憶装置に対し分散して要求を発行することを特徴とする負荷分散システム。
【請求項２】
ホスト計算機と、
複数のコントローラ及び該コントローラにより読み書きが制御される記憶部本体を有する第１の記憶装置と、
複数のコントローラ及び該コントローラにより読み書きが制御される、前記第１の記憶装置に書き込まれたデータの複製データを記憶した記憶部本体を有する第２の記憶装置と、
前記ホスト計算機と前記第１及び第２の記憶装置の各コントローラとの間に接続される複数のアクセスパスと、
を具備し、
前記ホスト計算機は、シーケンシャルな読み込み要求に対し、前記第１及び第２の記憶装置それぞれの複数のコントローラについて前記アクセスパスを選択し、前記第１及び第２の記憶装置に対し分散して要求を発行し、
前記ホスト計算機は、前記第１及び第２の記憶装置に対するアクセスパスの情報を保持するパス情報テーブルを有し、シーケンシャルな読み込み要求に対し、前記パス情報テーブルを参照して前記コントローラのアクセスパスを選択し、前記第１及び第２の記憶装置に対し分散して要求を発行することを特徴とする負荷分散システム。
【請求項３】
前記パス情報テーブルは、少なくとも前記第１及び第２の記憶装置それぞれを表す「装置種別」、前記第１及び第２の記憶装置ごとに設けられるコントローラを表す「コントローラ番号」及び前記コントローラごとの使用状況を表す「使用フラグ」を有し、
前記ホスト計算機は、シーケンシャルな読み込み要求に対し、前記パス情報テーブルのコントローラ番号を設定して、該設定されたコントローラ番号に対応する使用フラグの状態を判断し、この判断結果により前記コントローラのアクセスパスを選択し、前記第１及び第２の記憶装置に対し分散して要求を発行することを特徴とする請求項２記載の負荷分散システム。
【請求項４】
さらに前記ホスト計算機は、ランダムな読み込み要求に対し、前記第１及び第２の記憶装置それぞれについて分散して要求を発行することを特徴とする請求項１乃至３のいずれか一記載の負荷分散システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホスト計算機と記憶装置間に複数のアクセスパスが存在するシステムに適用される負荷分散システムに関する。
【背景技術】
【０００２】
従来、ホスト計算機に対して１個の記憶装置を設け、これらの間に複数のアクセスパスを存在させるようなシステムでは、アクセスパスを効率的に利用するため複数のアクセスパスに分散して入出力することで負荷分散を行うようにしたものがある。
【０００３】
しかし、このような負荷分散を採用したシステムによると、負荷分散アルゴリズムとして、発生する入出力要求を複数のアクセスパスに対してラウンドロビンにて送付するラウンドロビン方式を採用したものでは、例えば、連続した領域からデータを順に読み込む、所謂シーケンシャルリードを負荷分散すると、システム性能が低下することがある。その原因は２つあり、１つ目は記憶装置、例えばディスクアレイ装置として複数のコントローラと単一のＬＵ(Logical Unit)を有するものでは、シーケンシャルリードの要求を複数の要求に分割し複数のアクセスパスに分散して各コントローラに対して発行すると、その分散された要求を受け取るコントローラは、交互に読み込み要求が入力され、各コントローラ側からみると、読み込み要求のデータ領域が不連続となるため、シーケンシャルリードであることを判定する精度が低下し、先読みを失敗する確立が高くなることがある。また、２つ目は各コントローラが単一のＬＵの同一アドレスに多重にリードすることがありディスクの負荷増大が生じる。
【０００４】
そこで、例えば特許文献１に開示されるように、ホストコンピュータに対してデータ記憶装置を設け、ランダムアクセスは複数のアクセスパスを使用して負荷を分散し、シーケンシャルな読出し要求については単一のアクセスパスを使用するようにしたものがある。
【特許文献１】特開２００３-９９３８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献１のものは、シーケンシャルリードで単一のアクセスパスを使用し負荷分散ができないため、単一アクセスパスに接続されるコントローラに読み書き要求が集中してしまい負荷増大を招くとともに、単一アクセスパスの使用帯域に余裕がなくなるなどシステムの性能の低下を招くことがあった。
【０００６】
本発明は上記事情に鑑みてなされたもので、シーケンシャルリードを始め、各種のリードに対して良好な負荷分散を可能にした負荷分散システムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明にかかる負荷分散システムは、
ホスト計算機と、
複数のコントローラ及び該コントローラにより読み書きが制御される記憶部本体を有する第１の記憶装置と、
複数のコントローラ及び該コントローラにより読み書きが制御される、前記第１の記憶装置に書き込まれたデータの複製データを記憶した記憶部本体を有する第２の記憶装置と、
前記ホスト計算機と前記第１及び第２の記憶装置の各コントローラとの間に接続される複数のアクセスパスと、
を具備し、
前記ホスト計算機は、シーケンシャルな読み込み要求に対し、前記第１及び第２の記憶装置それぞれの複数のコントローラについて前記アクセスパスを選択し、前記第１及び第２の記憶装置に対し分散して要求を発行し、
前記第１及び第２の記憶装置は、各コントローラに読み込み範囲を記録したリードテーブルを有し、
前記ホスト計算機は、シーケンシャルな読み込み要求に対し、前記シーケンシャルな読み込み要求の範囲と前記リードテーブルに記録された読み込み範囲との比較結果に応じて、前記リードテーブルが存在するコントローラのアクセスパスを選択し、前記第１及び第２の記憶装置に対し分散して要求を発行することを特徴としている。
【発明の効果】
【０００８】
本発明によれば、シーケンシャルリードを始め、各種のリードに対して良好な負荷分散を可能にした負荷分散システムを提供できる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施の形態を図面に従い説明する。
【００１０】
（第１の実施の形態）
図１は、本発明の第１の実施の形態にかかる負荷分散システムの全体ブロック図を示している。図１において、１００はホスト計算機で、このホスト計算機１００には、第１の記憶装置として、マスターディスクアレイ装置２００及び第２の記憶装置としてサブディスクアレイ装置３００がそれぞれ接続されている。マスターディスクアレイ装置２００は、２個のコントローラ２１０、２２０及び記憶部本体としてのＬＵ(Logical Unit)２３０を有し、サブディスクアレイ装置３００は、２個のコントローラ３１０、３２０及びＬＵ(Logical Unit)３３０を有している。マスターディスクアレイ装置２００のコントローラ２１０、２２０は、アクセスパスとしてのＦＣ(Fiber Channel)ケーブル４０１、４０２を各別に介してホスト計算機１００に接続され、ホスト計算機１００の要求によりＬＵ２３０に対する書き込み、読み込みなどをコントロールする。同様に、サブディスクアレイ装置３００のコントローラ３１０、３２０も、ＦＣケーブル４０３、４０４を各別に介してホスト計算機１００に接続され、ホスト計算機１００の指示によりＬＵ３３０に対する書き込み、読み込みなどをコントロールする。この場合、ＬＵ３３０は、ＬＵ２３０に書き込まれたデータの複製を有するものである。
【００１１】
マスターディスクアレイ装置２００のコントローラ２１０とサブディスクアレイ装置３００のコントローラ３１０との間は、ＦＣケーブル４１１で接続され、同様に、マスターディスクアレイ装置２００のコントローラ２２０とサブディスクアレイ装置３００のコントローラ３２０との間は、ＦＣケーブル４１２で接続されている。これらＦＣケーブル４１１、４１２は、マスターディスクアレイ装置２００とサブディスクアレイ装置３００との間の通信を行うためのものである。
【００１２】
なお、マスターディスクアレイ装置２００のＬＵ２３０とサブディスクアレイ装置３００のＬＵ３３０は、同一容量のものが１対１の組で存在し、これらＬＵ２３０とＬＵ３３０は同期式でミラーリングしている。
【００１３】
図２は、ホスト計算機１００の部分ブロック図を示している。
【００１４】
この場合、ホスト計算機１００は、ソフトウェア構成として大きく分けると、アプリケーション１０１、ファイルシステム１０２、負荷分散ドライバ１１０及び物理デバイス（デバイスファイル）１３１〜１３４により構成されている。アプリケーション１０１は、マスターディスクアレイ装置２００及びサブディスクアレイ装置３００に対しファイルシステム１０２以下を介してデータの読み書きを行う。
【００１５】
ファイルシステム１０２は、ファイルに対する読み書き要求をブロックレベルの読み書き要求に変換する。ここでのブロックレベルの読み書き要求とは、読み書き属性、読み書きセクタアドレス、読み書きセクタ数等の情報を含むものである。また、ファイルシステム１０２は、一般的なオペレーティングシステムにおいては、読み込み要求の読み込み領域が複数連続していることを検出した場合に先読みを実施し、リードキャッシュに先読みしたデータを保持する動作をする。そのため、ここでのファイルシステム１０２は、アプリケーション１０１が発行する不連続な読み込み要求の読み込み領域を、サイズの大きな連続データを読み込むためのシーケンシャルリード要求に変換する。
【００１６】
負荷分散ドライバ１１０は、物理的に接続されたアクセスパス（上述したＦＣケーブル４０１〜４０４に相当する。）にデータ読み書き要求を分割して振り分ける。物理デバイス１３１〜１３４は、マスターディスクアレイ装置２００のＬＵ２３０及びサブディスクアレイ装置３００のＬＵ３３０がホスト計算機１００上でデバイスファイルとして認識されるものである。これら物理デバイス１３１〜１３４には、上述したＦＣケーブル４０１〜４０４が各別に接続されている。
【００１７】
負荷分散ドライバ１１０は、分散制御部１１１、Ｉ／Ｏ種別判定部１１２及びパス情報テーブル１１３から構成されている。分散制御部１１１は、負荷分散を制御するもので、詳細は後述する。
【００１８】
Ｉ／Ｏ種別判定部１１２は、読み書き要求の種別を判定する。この場合、Ｉ／Ｏ種別判定部１１２は、分散制御部１１１より渡される読み書き要求に基づいて書き込み要求(ランダムとシーケンシャルの両方を含む)、ランダムリード（ランダムな読み込み要求）、シーケンシャルリード（シーケンシャルな読み込み要求）の３つのパターンのいずれかを判断する。ここで、シーケンシャルリードは、連続した領域からデータを順に読み込む方式で、ランダムリードは、順序に関係なく任意の位置からデータを読み込む方式である。
【００１９】
読み込み要求か書き込み要求かの判定は要求に含まれる読み書き属性から判定する。また、シーケンシャルリードであるかランダムリードかの判定は、読み込み要求の情報として含まれる読み込みセクタ数がある一定数以上(例えば１０２４セクタ)の場合にシーケンシャルリードであると判定し、それ以外はランダムリードと判定する。
【００２０】
パス情報テーブル１１３は、ホスト計算機１００と接続されたすべてのディスクアレイ装置、つまりマスターディスクアレイ装置２００及びサブディスクアレイ装置３００に対するアクセスパスの情報を保持する。
【表１】
0004686564.tif 000002
【００２１】
表１は、パス情報テーブル１１３の一例を示すもので、「パス番号」、「装置種別」、「コントローラ番号」、「使用フラグ」の各項目を有している。「パス番号」には、アクセスパスごと、つまり上述したＦＣケーブル４０１〜４０４ごとに割り当てられる０、１、２、３の通し番号が書き込まれる。「装置種別」には、パス番号０、１、２、３に対応させてディスクアレイ装置の種別、ここでは、パス番号０、１（ＦＣケーブル４０１、４０２に割り当てられたパス番号）に対応させてマスターディスクアレイ装置２００を表す「マスター」、パス番号２、３（ＦＣケーブル４０３、４０４に割り当てられたパス番号）に対応させてサブディスクアレイ装置３００を表す「サブ」が書き込まれる。「コントローラ番号」には、パス番号０、１に対応させてマスターディスクアレイ装置２００のコントローラ２１０，２２０をそれぞれ表す「０」「１」、パス番号２、３に対応させてサブディスクアレイ装置３００のコントローラ３１０，３２０をそれぞれ表す「０」「１」がそれぞれ書き込まれる。さらに「使用フラグ」には、パス番号０、１、２、３に対応させてコントローラ２１０，２２０、３１０，３２０の使用状況を表す、図示のような「ＯＮ」又は「ＯＦＦ」が書き込まれている。なお、このようなパス情報テーブル１１３は、ホスト計算機１００の起動時に、ホスト計算機１００に接続された全てのディスクアレイ装置、つまり、マスターディスクアレイ装置２００及びサブディスクアレイ装置３００からの情報に基づいて生成される。
【００２２】
次に、このように構成された実施の形態の作用を説明する。
【００２３】
まず、ホスト計算機１００によるデータの読み書きについて簡単に説明する。
【００２４】
データ書込みの場合、例えば、ホスト計算機１００がマスターディスクアレイ装置２００のコントローラ２１０に対しＬＵ２３０へのデータ書き込みを要求すると、コントローラ２１０はＬＵ２３０ヘデータを書き込む。ＬＵ２３０へのデータ書き込みが完了すると、ＦＣケーブル４１１を経由してサブディスクアレイ装置３００のコントローラ３１０に対してＬＵ３３０へのデータ書き込みを要求する。そして、ＬＵ３３０へのデータ書込みが終了すると、コントローラ３１０はＦＣケーブル４１１を経由してコントローラ２１０に書き込み終了を通知し、この通知を受けたコントローラ２１０はホスト計算機１００へ書き込み完了を通知し、データ書き込みを完了する。
【００２５】
また、ホスト計算機１００によるマスターディスクアレイ装置２００のコントローラ２２０に対するＬＵ２３０へのデータ書き込み要求についても上述したと同様に行われる。
【００２６】
このように、ホスト計算機１００によるデータ書き込み要求は、マスターディスクアレイ装置２００のコントローラ２１０および２２０でのみ受付けられ、サブディスクアレイ装置３００のコントローラ３１０および３２０での受付は拒否される。
【００２７】
次に、データ読み込みの場合、例えば、ホスト計算機１００がマスターディスクアレイ装置２００のコントローラ２１０に対してデータ読み込みを要求すると、コントローラ２１０は、ＬＵ２３０からのデータの読み込みを行い、この読み込みが完了すると、ホスト計算機１００に直ちにデータ読み込み完了を通知する。
【００２８】
このようなデータ読み込み要求は、マスターディスクアレイ装置２００及びサブディスクアレイ装置３００のすべてのコントローラ２１０、２２０、３１０、３２０で受け付けることができる。したがって、この状態では、マスターディスクアレイ装置２００とサブディスクアレイ装置３００との間のＦＣケーブル４１１、４１２を介した通信は行われない。
【００２９】
このようにしてホスト計算機１００は、マスターディスクアレイ装置２００に対してデータの読み書きを要求でき、サブディスクアレイ装置３００に対してデータの読み込みのみを要求できる。
【００３０】
次に、各種要求に対する負荷分散について説明する。
【００３１】
この場合、ホスト計算機１００に負荷分散ドライバ１１０を実装し、シーケンシャルリードおよびランダムリードをマスターディスクアレイ装置２００及びサブディスクアレイ装置３００に分散して発行することにより、負荷の低減を図る。
【００３２】
いま、ホスト計算機１００のアプリケーション１０１がマスターディスクアレイ装置２００及びサブディスクアレイ装置３００に対しデータの読み書き要求を発行すると、このデータの読み書き要求は、ファイルシステム１０２が受け取る。
【００３３】
ファイルシステム１０２は、読み書き要求を、読み書き属性、読み書きセクタアドレス、読み書きセクタ数等の情報を含むブロックレベルの読み書き要求に変換する。この変換されたブロックレベルの読み書き要求は、分散制御部１１１に渡される。分散制御部１１１は、Ｉ／Ｏ種別判定部１１２に読み書き要求を渡し、Ｉ／Ｏ種別判定部１１２は、書き込み要求(ランダムとシーケンシャルの両方を含む)、ランダムリード、シーケンシャルリードの３パターンのいずれかを判断する。この場合、読み込み要求か書き込み要求かの判定は要求に含まれる読み書き属性から判定する。また、読み込み要求のうちシーケンシャルリードであるかランダムリードかの判定は、読み込み要求の情報として含まれる読み込みセクタ数がある一定数以上の場合(例えば１０２４セクタ)にシーケンシャルリードであると判定し、それ以外はランダムリードと判定する。
【００３４】
Ｉ／Ｏ種別判定部１１２での判定結果は、分散制御部１１１に渡され、分散制御部１１１は、上述の３つのパターンに応じて分散するアクセスパスを決定する。例えば、Ｉ／Ｏ種別判定部１１２での判定により読み書き要求がシーケンシャルリードでもランダムリードでもない、つまり書き込み要求の場合は、上述したようにマスターディスクアレイ装置２００のコントローラ２１０および２２０でのみが受付け可能なことから、分散制御部１１１は、表１のパス情報テーブル１１３を参照して、「パス番号」の「０」「１」に対応するマスターディスクアレイ装置２００のコントローラ番号「０」「１」のコントローラ２１０および２２０を選択し、これらコントローラ２１０および２２０に対応する物理デバイス１３１、１３２よりＦＣケーブル４０１、４０２（アクセスパス）に分散して要求を発行する。この分散アルゴリズムとしては、交互に発行するラウンドロビン方式やキュー内の要求が少ないパスに発行する方式などが考えられるが、それらの分散アルゴリズムの中から１つを選択して使用する。
【００３５】
次に、Ｉ／Ｏ種別判定部１１２により読み書き要求がランダムリードであると判定された揚合は、上述したようにマスターディスクアレイ装置２００及びサブディスクアレイ装置３００のすべてのコントローラ２１０、２２０、３１０、３２０で受け付け可能なので、分散制御部１１１は、表１のパス情報テーブル１１３を参照して、「パス番号」の「０」〜「３」に対応するマスターディスクアレイ装置２００及びサブディスクアレイ装置３００のそれぞれコントローラ番号「０」「１」のコントローラ２１０、２２０、３１０、３２０の全てを選択し、これらコントローラ２１０、２２０、３１０、３２０に対応する物理デバイス１３１、１３２、１３３、１３４よりＦＣケーブル４０１〜４０４（アクセスパス）に分散して要求を発行する。この場合の分散アルゴリズムもラウンドロビン方式やキュー内の要求が少ないパスに発行する方式のいずれか１つを選択して使用する。
【００３６】
次に、Ｉ／Ｏ種別判定部１１２により読み書き要求がシーケンシャルリードであると判定されると、この場合も、上述したようにマスターディスクアレイ装置２００及びサブディスクアレイ装置３００のすべてのコントローラ２１０、２２０、３１０、３２０で受け付け可能であり、分散制御部１１１は、表１のパス情報テーブル１１３を参照するとともに図３に示すフローチャートを実行して分散先のアクセスパスを決定する。この場合、図３において、まず、ステップ３０１で、コントローラ番号Ｘを「０」に設定し、ステップ３０２で、パス情報テーブル１１３を参照しコントローラ番号が「０」の行、ここでは、パス番号０、２の行を参照する。次に、ステップ３０３で、コントローラＸ（＝「０」）の存在によりｎｏと判断され、ステップ３０４に進み、コントローラ番号が「０」の行の使用フラグがＯＮかを判断する。この場合、パス番号０、２の行の使用フラグは、いずれもＯＮなので、ｙｅｓと判断され、ステップ３０５に進み、（「Ｘ＋１」→Ｘ（＝「１」）にして、ステップ３０２に戻る。そして、再びパス情報テーブル１１３を参照し、今度は、コントローラ番号が「１」の行、ここでは、パス番号１、３の行を参照する。そして、ステップ３０３で、コントローラＸ（＝「１」）の存在によりｎｏと判断され、ステップ３０４に進み、コントローラ番号が「１」の行の使用フラグがＯＮかを判断する。この場合、パス番号１、３の行の使用フラグは、いずれもＯＦＦなので、ｎｏと判断されてステップ３０６に進み、マスターディスクアレイ装置２００のコントロール番号「１」のコントローラ２２０とサブディスクアレイ装置３００のコントロール番号「１」のコントローラ３２０の使用フラグをＯＮにし、このＯＮにしたパス番号１、３を結果として出力する。これにより、コントローラ２２０および３２０に対応する物理デバイス１３２、１３４よりＦＣケーブル４０２、４０４（アクセスパス）に分散して要求が発行される。この場合の分散アルゴリズムは、ラウンドロビン方式を選択する。一方、パス情報テーブル１１３の「パス番号」０、１、２、３に対応する使用フラグが、例えば全て「ＯＦＦ」である場合は、ステップ３０２で、パス情報テーブル１１３を参照し「コントローラ番号」が「０」の行、ここでは、パス番号０、２の行を参照し、ステップ３０３を通ってステップ３０４に進み、コントローラ番号が「０」の行の使用フラグがＯＮか判断すると、パス番号０、２の行の使用フラグは、いずれもＯＦＦなので、直ちにステップ３０６に進み、マスターディスクアレイ装置２００のコントロール番号「０」のコントローラ２１０とサブディスクアレイ装置３００のコントロール番号「０」のコントローラ３１０の使用フラグをＯＮにし、このＯＮにしたパス番号を０、２を結果として出力する。これにより、コントローラ２１０および３１０に対応する物理デバイス１３１、１３３よりＦＣケーブル４０１、４０３（アクセスパス）に分散して要求が発行される。この場合も分散アルゴリズムは、ラウンドロビン方式を選択する。
【００３７】
なお、図３のフローチャートにおいて、ステップ３０３で、コントローラＸが存在しないと判断した場合は、ステップ３０７に進み、パス番号の中からランダムに１のパス番号を選択して要求を発行する。
【００３８】
最後に、シーケンシャルリードの要求が完了すると、パス情報テーブル１１３の「使用フラグ」に記録されたフラグを元の状態にクリアする。
【００３９】
したがって、このようにすれば、負荷分散ドライバ１１０を実装したホスト計算機１００に対し、記憶装置として２個のマスターディスクアレイ装置２００及びサブディスクアレイ装置３００を接続し、これらマスターディスクアレイ装置２００及びサブディスクアレイ装置３００に対して各種要求を分散して発行するようにした。つまり、データの書き込み要求の場合は、マスターディスクアレイ装置２００のコントローラ２１０、２２０のアクセスパスを選択し分散して発行し、ランダムリードの要求の場合は、マスターディスクアレイ装置２００及びサブディスクアレイ装置３００のすべてのコントローラ２１０、２２０、３１０、３２０のアクセスパスを選択し、分散して発行し、さらに、シーケンシャルリードの要求の場合は、マスターディスクアレイ装置２００とサブディスクアレイ装置３００から１つずつのアクセスパスを選択し分散して発行するようにして、全てのリードに対し良好な負荷分散を可能にした。特に、シーケンシャルリードの要求の場合は、パス情報テーブル１１３の参照と、図３に示すフローチャートの実行により、マスターディスクアレイ装置２００とサブディスクアレイ装置３００のそれぞれコントローラ番号「０」のコントローラ２１０，３１０の組み合せのパターン、又はマスターディスクアレイ装置２００とサブディスクアレイ装置３００のそれぞれコントローラ番号「１」のコントローラ２２０，３２０の組み合せのパターンを取得し、これらパターンごとに、それぞれのアクセスパスを選択し、シーケンシャルリード要求を分散して発行することができるので、シーケンシャルな読み込み性能を向上させることができる。また、このようにシーケンシャルリードでは、要求の発行先を異なる複数のディスクアレイ装置（マスターディスクアレイ装置２００及びサブディスクアレイ装置３００）に分散できることは、マスターディスクアレイ装置２００のコントローラ２１０（２２０）、サブディスクアレイ装置３００のコントローラ３１０（３２０）が同一ＬＵの同一領域から多重にデータを読み込むようなことがなくなり、ＬＵへの負荷増大を防ぐことができる。さらに、シーケンシャルリードでは、マスターディスクアレイ装置２００及びサブディスクアレイ装置３００において、シーケンシャルリードに対する先読みをサポートしているような場合、シーケンシャルリードがラウンドロビン方式によって分割されると読み込み要求のデータ領域が不連続となるため、シーケンシャルリードの検出精度の低下が考えられるが、マスターディスクアレイ装置２００及びサブディスクアレイ装置３００において、不連続、かつ一方向の読み込み要求についてはシーケンシャルリードとして検出できるようにしておけば何ら問題がない。この場合、シーケンシャルリードをラウンドロビン方式によって分割すると、分割された要求は不連続であるが、受信した要求のセクタアドレスが必ず増加することから、過去の要求履歴を参照することでシーケンシャルアクセスと判定することは容易である。
【００４０】
また、ランダムリードの要求の場合、マスターディスクアレイ装置２００及びサブディスクアレイ装置３００のすべてのコントローラ２１０、２２０、３１０、３２０のアクセスパスを選択し、分散して要求を発行することができるので、ランダムな読み込みの性能を向上させることもできる。
【００４１】
なお、第１の実施の形態では、ホスト計算機１００とマスターディスクアレイ装置２００およびサブディスクアレイ装置３００との間がＦＣケーブル４０１〜４０４で接続されているが、これに代えてＦＣスイッチを経由して接続するようにしてもよい。また、図１では、簡便のためにマスターディスクアレイ装置２００は２個のコントローラ２１０、２２０、サブディスクアレイ装置３００も２個のコントローラ３１０、３２０をそれぞれ有するようにしたが、マスターディスクアレイ装置２００及びサブディスクアレイ装置３００は、それぞれコントローラを３個以上としても構わない。また、マスターディスクアレイ装置２００およびサブディスクアレイ装置３００は、同一容量のＬＵ２３０とＬＵ３３０が１組存在する場合を示しているが、マスターディスクアレイ装置２００内のＬＵとサブディスクアレイ装置３００内のＬＵの容量が同一であること、１対１の組であることの条件を満たせば、ＬＵの組は複数存在しても構わない。ＬＵが複数ある揚合は、ＬＵごとにパス情報テーブルをもたせることにより、ＬＵごとに負荷分散することも可能となる。また、図１では、簡便のために１台のホスト計算機１００の場合を示しているが、ＦＣスイッチを利用することで複数台接続することができる。ホスト計算機１００が複数台接続された場合、一般に異なるホスト計算機は異なるＬＵを使用するため、適切に負荷を分散することができる。
【００４２】
（第２の実施の形態）
次に、本発明の第２の実施の形態を説明する。
【００４３】
図４は、本発明の第２の実施の形態にかかる負荷分散システムの全体ブロック図を示すもので、図１及び図２と同一部分には同符号を付して説明を省略する。
【００４４】
この場合、マスターディスクアレイ装置２００は、各コントローラ２１０、２２０にリードテーブル２１１，２２１が各別に接続され、サブディスクアレイ装置３００は、各コントローラ３１０、３２０にリードテーブル３１１，３２１が各別に接続されている。リードテーブル２１１は、表２に示すように読み込み範囲を表す「先頭セクタアドレス」及び「セクタ数」の各フィールドをもつテーブルからなるもので、初期値は０(図５に示すフローチャートではφで表記している。)である。他のリードテーブル２２１、３１１，３２１についても同様である。また、分散制御部１１１には、負荷分散のアクセスパスを決定する図５に示すアルゴリズムが追加されている。
【表２】
0004686564.tif 000003
【００４５】
その他は、図１及び図２と同様である。
【００４６】
この場合、分散制御部１１１は、Ｉ／Ｏ種別判定部１１２により要求が書き込み要求あるいはランダムリードと判定された場合は、第１の実施の形態で述べたと同様に分散先のアクセスパスを選択し、分散して要求を発行する。
【００４７】
次に、Ｉ／Ｏ種別判定部１１２により読み書き要求がシーケンシャルリードであると判定されると、分散制御部１１１は、図５に示すフローチャートを実行して負荷分散するアクセスパスを決定する。
【００４８】
この場合、以下述べる（１）〜（４）の４つパターンでアクセスパスが選択される。  （１）マスターディスクアレイ装置２００とサブディスクアレイ装置３００に空のリードテーブルがそれぞれ存在する場合で、この場合、マスターディスクアレイ装置２００のコントローラ番号（ｉ）＝０のコントローラ２１０、サブディスクアレイ装置３００のコントローラ番号（ｊ）＝０のコントローラ３１０が用いられ、コントローラ２１０のリードテーブル２１１の読み込み範囲Ｔｍ（ｉ）とコントローラ３１０のリードテーブル３１１の読み込み範囲Ｔｓ（ｊ）がそれぞれ初期値φである。
【００４９】
この状態からステップ５０１で、分散制御部１１１は、シーケンシャルリードの読み込み範囲Ｒと、マスターディスクアレイ装置２００のコントローラ２１０のリードテーブル２１１に記録された読み込み範囲Ｔｍ（ｉ）と、サブディスクアレイ装置３００のコントローラ３１０のリードテーブル３１１に記録された読み込み範囲Ｔｓ（ｊ）を順に読み込む。ここで、読み込み範囲Ｒは、ファイルシステム１０２から渡された、読み込みセクタアドレス及びセクタ数により求められる。
【００５０】
次に、ステップ５０２に進み、シーケンシャルリードの読み込み範囲Ｒとリードテーブル２１１の読み込み範囲Ｔｍ（ｉ）、シーケンシャルリードの読み込み範囲Ｒとリードテーブル３１１の読み込み範囲Ｔｓ（ｊ）をそれぞれ比較する。この場合、読み込み範囲Ｔｍ（ｉ）、Ｔｓ（ｊ）は、ともに初期値φで、これら初期値φの読み込み範囲Ｔｍ（ｉ）、Ｔｓ（ｊ）には読み込み範囲Ｒが含まれることがないのでｎｏと判断され、ステップ５０３に進む。このステップ５０３でも、シーケンシャルリードの読み込み範囲Ｒとリードテーブル２１１の読み込み範囲Ｔｍ（ｉ）、シーケンシャルリードの読み込み範囲Ｒとリードテーブル３１１の読み込み範囲Ｔｓ（ｊ）をそれぞれ比較する。この場合、読み込み範囲Ｔｍ（ｉ）、Ｔｓ（ｊ）は、ともに初期値φで、これら初期値φの読み込み範囲Ｔｍ（ｉ）、Ｔｓ（ｊ）がシーケンシャルリードの読み込み範囲Ｒに含まれることがないのでｎｏと判断され、ステップ５０４に進む。
【００５１】
ステップ５０４では、読み込み範囲Ｔｍ（ｉ）、Ｔｓ（ｊ）が、ともに初期値φで、空のリードテーブル２１１、３１１が存在するので、ｙｅｓと判断され、ステップ５０５に進む。ステップ５０５では、リードテーブル２２１の読み込み範囲Ｔｍ（ｉ）とリードテーブル３１１の読み込み範囲Ｔｓ（ｊ）にシーケンシャルリードの読み込み範囲Ｒを記録し、これらリードテーブル２２１及び３１１が存在するコントローラ２１０、３１０のアクセスパスを選択する。
【００５２】
（２）シーケンシャルリードの読み込み範囲Ｒを包含する読み込み範囲を有するリードテーブルがマスターディスクアレイ装置２００およびサブディスクアレイ装置３００にそれぞれ存在する場合である。この場合も、マスターディスクアレイ装置２００のコントローラ番号（ｉ）＝０のコントローラ２１０、サブディスクアレイ装置３００のコントローラ番号（ｊ）＝０のコントローラ３１０が用いられる。この状態から、ステップ５０１で、分散制御部１１１は、シーケンシャルリードの読み込み範囲Ｒと、マスターディスクアレイ装置２００のコントローラ２１０のリードテーブル２１１の読み込み範囲Ｔｍ（ｉ）と、サブディスクアレイ装置３００のコントローラ３１０のリードテーブル３１１の読み込み範囲Ｔｓ（ｊ）を順に読み込む。
【００５３】
そして、ステップ５０２に進み、シーケンシャルリードの読み込み範囲Ｒとリードテーブル２１１の読み込み範囲Ｔｍ（ｉ）、シーケンシャルリードの読み込み範囲Ｒとリードテーブル３１１の読み込み範囲Ｔｓ（ｊ）をそれぞれ比較する。この場合、読み込み範囲Ｔｍ（ｉ）、Ｔｓ（ｊ）はシーケンシャルリードの読み込み範囲Ｒを含むので、ｙｅｓと判断され、ステップ５０６に進み、これら読み込み範囲Ｔｍ（ｉ）、Ｔｓ（ｊ）を有するリードテーブル２１１、３１１が存在するコントローラ２１０、３１０のアクセスパスを選択する。
【００５４】
（３）上述の（２）のパターンとは逆にシーケンシャルリードの読み込み範囲Ｒがマスターディスクアレイ装置２００及びサブディスクアレイ装置３００のリードテーブルの読み込み範囲を包含する場合である。この場合も、マスターディスクアレイ装置２００のコントローラ番号（ｉ）＝０のコントローラ２１０、サブディスクアレイ装置３００のコントローラ番号（ｊ）＝０のコントローラ３１０が用いられる。この状態から、ステップ５０１で、分散制御部１１１は、シーケンシャルリードの読み込み範囲Ｒと、マスターディスクアレイ装置２００のコントローラ２１０のリードテーブル２１１に記録された読み込み範囲Ｔｍ（ｉ）と、サブディスクアレイ装置３００のコントローラ３１０のリードテーブル３１１に記録された読み込み範囲Ｔｓ（ｊ）を順に読み込む。そして、ステップ５０２に進み、シーケンシャルリードの読み込み範囲Ｒとリードテーブル２１１の読み込み範囲Ｔｍ（ｉ）、シーケンシャルリードの読み込み範囲Ｒとリードテーブル３１１の読み込み範囲Ｔｓ（ｊ）をそれぞれ比較する。この場合、読み込み範囲Ｔｍ（ｉ）、Ｔｓ（ｊ）がシーケンシャルリードの読み込み範囲Ｒを含まないので、ｎｏと判断され、ステップ５０３に進み、シーケンシャルリードの読み込み範囲Ｒとリードテーブル２１１の読み込み範囲Ｔｍ（ｉ）、シーケンシャルリードの読み込み範囲Ｒとリードテーブル３１１の読み込み範囲Ｔｓ（ｊ）をそれぞれ比較する。この場合、読み込み範囲Ｔｍ（ｉ）、Ｔｓ（ｊ）は、ともにシーケンシャルリードの読み込み範囲Ｒに含まれるのでｙｅｓと判断され、ステップ５０５に進み、これらシーケンシャルリードの読み込み範囲Ｒを読み込み範囲Ｔｍ（ｉ）、Ｔｓ（ｊ）に上書きし、これら読み込み範囲Ｔｍ（ｉ）、Ｔｓ（ｊ）を有するリードテーブル２１１、３１１が存在するコントローラ２１０、３１０のアクセスパスを選択する。
【００５５】
そして、（４）上記（１）〜（３）のいずれの条件にも合致しない場合は、ステップ５０１〜５０４を介してステップ５０７に進み、アクセスパスをランダムに１つ選択する。
【００５６】
マスターディスクアレイ装置２００のコントローラ２１０、サブディスクアレイ装置３００のコントローラ３１０は、それぞれのリードテーブル２１１、３１１に記録された範囲のデータ読み込み要求が完了したらリードテーブル２１１、３１１の情報をクリアする。
【００５７】
なお、上述では、コントローラ（ｉ）としてコントローラ２１０、コントローラ（ｊ）としてコントローラ３１０を用いる場合を述べたが、コントローラ（ｉ）としてコントローラ２２０、コントローラ（ｊ）としてコントローラ３２０を用いる場合も同様に実施できる。
【００５８】
したがって、このようにしても第１の実施の形態と同様な効果を得ることができる。さらに、マスターディスクアレイ装置２００の各コントローラ２１０、２２０にリードテーブル２１１，２２１を、サブディスクアレイ装置３００の各コントローラ３１０、３２０にリードテーブル３１１，３２１をそれぞれ設け、これらリードテーブル２１１、２２１、３１１、３２１にアクセスパス決定のための書き込み範囲Ｔｍ（ｉ）、Ｔｓ（ｊ）を記録するようにした。これによりマスターディスクアレイ装置２００及びサブディスクアレイ装置３００は、シーケンシャルリードする範囲を明確に知ることができるので、負荷分散によってシーケンシャルリードが不連続な要求に分割されても、シーケンシャルリードの判定精度が低下することによる先読み失敗の問題を解消することができる。また、ホスト計算機が複数あるような場合、これら複数のホスト計算機が同一のアクセスパス決定のための情報を各リードテーブル２１１、２２１、３１１、３２１の内容を参照することで把握できるので、同一の領域に対して複数のシーケンシャルリードを行うような場合、複数のホスト計算機が同一のコントローラ２１０、２２０、３１０、３２０を使用できるようになり、コントローラ２１０、２２０、３１０、３２０の不図示のリードキャッシュを効率的に使用することもできる。
【００５９】
なお、読み込み中にホスト計算機１００とマスターディスクアレイ装置２００の間、又はホスト計算機１００とサブディスクアレイ装置３００の間のケーブルが切断される等の障害が発生すると、それぞれのリードテーブル２１１、２２１、３１１、３２１の情報が永久にクリアされなくなることがある。このため、リードテーブル２１１、２２１、３１１、３２１は、タイムアウトを備えるものとする。すなわち、これらリードテーブル２１１、２２１、３１１、３２１を有するコントローラ２１０、２２０、３１０、３２０は、それぞれタイマーを有し、このタイマーは、常にレジスタの数値をカウントアップし、ホスト計算機１００からの要求を受信するとレジスタを０クリアする。ホスト計算機１００からの要求が途絶えレジスタのカウント値が溢れるとリードテーブルを０クリアする。タイムアウト時間は１分程度になるようにすることが望ましい。また、第２の実施の形態では簡便のためにマスターディスクアレイ装置２００、サブディスクアレイ装置３００は、それぞれ１個のＬＵ２３０、３３０を設けるようにしているが、ＬＵごとにリードテーブルを備えることで、複数のＬＵを使用することも可能である。
【００６０】
その他、本発明は、上記実施の形態に限定されるものでなく、実施段階では、その要旨を変更しない範囲で種々変形することが可能である。
【００６１】
さらに、上記実施の形態には、種々の段階の発明が含まれており、開示されている複数の構成要件における適宜な組み合わせにより種々の発明が抽出できる。例えば、実施の形態に示されている全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題を解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出できる。
【図面の簡単な説明】
【００６２】
【図１】本発明の第１の実施の形態にかかる負荷分散システムの全体ブロック図。
【図２】第１の実施の形態に用いられるホスト計算機の部分ブロック図。
【図３】第１の実施の形態のシーケンシャルリードの場合のアクセスパスの分散を説明するためのフローチャート。
【図４】本発明の第２の実施の形態にかかる負荷分散システムの全体ブロック図。
【図５】第２の実施の形態のシーケンシャルリードの場合のアクセスパスの分散を説明するためのフローチャート。
【符号の説明】
【００６３】
１００…ホスト計算機、１０１…アプリケーション
１０２…ファイルシステム、１１０…負荷分散ドライバ
１１１…分散制御部、１１２…Ｉ／Ｏ種別判定部
１１３…パス情報テーブル、１３１〜１３４…物理デバイス
２００…マスターディスクアレイ装置
２１０．２２０、３１０．３２０…コントローラ
２１１．２２１、３１１．３２１…リードテーブル
２３０．３３０…ＬＵ
３００…サブディスクアレイ装置
４０１〜４０４、４１１、４１２…ＦＣケーブル
【図１】
0004686564.tif 000004
【図２】
0004686564.tif 000005
【図３】
0004686564.tif 000006
【図４】
0004686564.tif 000007
【図５】
0004686564.tif 000008