(57)【要約】      （修正有）【課題】入出力経路の個々の構成や事情等を考慮せずに入出力経路に順番にデータ入出力要求を割り当てるラウンドロビン方式では必ずしも入出力経路間での負荷分散が適切に図られないことがある。より適切な負荷分散を可能とする制御方法を提供する。【解決手段】通信可能に接続される記憶装置との間に設定される複数の論理パスを通じて前記記憶装置にデータ入出力要求を送信する情報処理装置の制御方法において、前記論理パスの負荷を取得し、前記データ入出力要求を割り当てる前記論理パスを前記負荷に応じて決定するようにする。【選択図】      図５
2005010956.tif 000002
【特許請求の範囲】
【請求項１】
通信可能に接続される記憶装置との間に設定される複数の論理パスを通じて前記記憶装置にデータ入出力要求を送信する情報処理装置の制御方法において、
前記論理パスの負荷を取得し、
前記データ入出力要求を割り当てる前記論理パスを前記負荷に応じて決定すること、
を特徴とする情報処理装置の制御方法。
【請求項２】
請求項１に記載の情報処理装置の制御方法において、
前記データ入出力要求を割り当てる際の優先度である割当優先度を前記負荷に基づき前記論理パスについて算出し、
前記論理パスについて算出される前記割当優先度に応じた量の前記データ入出力要求を前記論理パスに割り当てること、
を特徴とする情報処理装置の制御方法。
【請求項３】
請求項２に記載の情報処理装置の制御方法において、
取得した前記論理パスの前記負荷と、前記論理パスに対応させて過去に算出されている前記割当優先度とに基づいて算出される値に基づいて前記割当優先度を更新すること、
を特徴とする情報処理装置の制御方法。
【請求項４】
請求項２に記載の情報処理装置において、
前記割当優先度の算出は、
前記負荷に応じて前記割当優先度を増減し、前記各論理パスの負荷の時間的な変化態様に応じて前記負荷の変化に対する前記割当優先度の増減量を変化させることにより行うこと、
を特徴とする情報処理装置の制御方法。
【請求項５】
通信可能に接続される記憶装置との間に設定される複数の論理パスを通じて前記記憶装置にデータ入出力要求を送信する情報処理装置において、
前記論理パスの負荷を取得する手段と、
前記データ入出力要求を割り当てる前記論理パスを前記負荷に応じて決定する手段と、
を備えることを特徴とする情報処理装置。
【請求項６】
請求項５に記載の情報処理装置において、
前記データ入出力要求を割り当てる際の優先度である割当優先度を前記負荷に基づき前記論理パスについて算出する手段と、
前記論理パスについて算出される前記割当優先度に応じた量の前記データ入出力要求を前記論理パスに割り当てる手段と、
を備えることを特徴とする情報処理装置。
【請求項７】
請求項６に記載の情報処理装置において、
取得した前記論理パスの前記負荷と、前記論理パスに対応させて過去に算出されている前記割当優先度とに基づいて算出される値に基づいて前記割当優先度を更新する手段を備えること、
を特徴とする情報処理装置。
【請求項８】
請求項６に記載の情報処理装置において、
前記算出する手段は、前記負荷に応じて前記割当優先度を増減する手段であり、前記負荷の変化に対する前記割当優先度の増減量を指定させるユーザインタフェースを備えること、を特徴とする情報処理装置。
【請求項９】
請求項６に記載の情報処理装置において、
前記算出する手段は、前記負荷に応じて前記割当優先度を増減し、前記各論理パスの負荷の時間的な変化態様に応じて前記負荷の変化に対する前記割当優先度の増減量を変化させる手段であること、
を特徴とする情報処理装置。
【請求項１０】
請求項５乃至９のいずれかに記載の情報処理装置において、
前記各論理パスの前記負荷は、前記各論理パスを通じて送信されたデータ入出力要求の応答時間に基づいて算出されることを特徴とする情報処理装置。
【請求項１１】
請求項５乃至９のいずれかに記載の情報処理装置において、
前記論理パスは、当該情報処理装置と前記記憶装置とを接続している一つ以上のソフトウェアもしくは一つ以上のハードウェアの組み合わせにより定義される通信経路であること、を特徴とする情報処理装置。
【請求項１２】
通信可能に接続される情報処理装置と記憶装置とを含み、
前記情報処理装置が、前記記憶装置との間に設定される複数の論理パスを通じて前記記憶装置にデータ入出力要求を送信する手段と、前記各論理パスの負荷を取得して前記データ入出力要求を割り当てる前記論理パスを前記負荷に応じて決定する手段と、を備えることを備えることを特徴とする情報処理システム。
【請求項１３】
通信可能に接続される記憶装置との間に設定される複数の論理パスを通じて前記記憶装置にデータ入出力要求を送信する情報処理装置に、
前記論理パスの負荷を取得する機能と、
前記データ入出力要求を割り当てる前記論理パスを前記負荷に応じて決定する機能と、
を実現するためのプログラム。
【請求項１４】
通信可能に接続される記憶装置との間に設定される複数の論理パスを通じて前記記憶装置にデータ入出力要求を送信する情報処理装置の制御方法において、
前記論理パスに前記データ入出力要求を送信してから当該データ入出力要求に対する応答を受信するまでの時間を応答時間として取得し、
前記データ入出力要求を割り当てる際の優先度である割当優先度を、前記応答時間に基づき前記論理パスについて算出し、
前記応答時間と前記割当優先度とから計算される値である理論負荷を前記論理パスについて算出し、
前記算出された前記論理パスの理論負荷のうち最大の前記理論負荷を持つ論理パスを基準論理パスとして選出し、
前記応答時間と、前記割当優先度に所定の変化値を加算した値とから計算される値である比較理論負荷を前記論理パスについて算出し、
前記基準論理パスについての前記理論負荷が前記比較理論負荷よりも大きい場合に、前記論理パスの割当優先度が割当優先度の変域の上限値であるときは、当該論理パス以外の論理パスの割当優先度から前記変化値を減算し、前記論理パスの割当優先度が割当優先度の変域の上限値でないときは、前記論理パスの割当優先度に前記変化値を加算し、
前記論理パスのうちいずれかの割当優先度が変更された場合には、前記基準論理パスの前記割当優先度から前記変化値を減算し、
前記割当優先度に応じた量の前記データ入出力要求を前記論理パスに割り当てること、
を特徴とする情報処理装置の制御方法。
【請求項１５】
通信可能に接続される記憶装置との間に設定される複数の論理パスを通じて前記記憶装置にデータ入出力要求を送信する情報処理装置の制御方法において、
前記論理パスの負荷を取得し、
前記データ入出力要求を割り当てる際の優先度である割当優先度を前記負荷に基づき前記論理パスについて算出し、
取得した前記論理パスの前記負荷と、前記論理パスに対応させて過去に算出されている前記割当優先度とに基づいて算出される値に基づいて前記割当優先度を更新し、
前記論理パスの前記割当優先度の更新頻度を調べ、
前記論理パスの前記割当優先度の変更が頻繁に行われている場合に、前記割当優先度の変域が狭くなるようにあるいは前記割当優先度の変化値が大きな値になるように変更し、
前記論理パスの前記割当優先度の変更が頻繁には行われていない場合に、前記変域が広くなるようにあるいは前記変化値が小さな値になるように変更し、
前記論理パスについて算出される前記割当優先度に応じた量の前記データ入出力要求を前記論理パスに割り当てること、
を特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、情報処理装置の制御方法、情報処理装置、情報処理システム、及びプログラムに関する。
【０００２】
【従来の技術】
近年、コンピュータシステムで取り扱われるデータ量が増大しており、記憶装置の大容量化が進んでいる。大容量の記憶装置では記憶容量に見合うだけの入出力性能を確保することが必要である。またシステムの信頼性を向上させることも求められている。このため、記憶装置への入出力経路（パス）を多重化（冗長化）する技術が開発されている。
【０００３】
記憶装置への入出力経路を多重化した場合、コンピュータでは、記憶装置へのデータ入出力要求を各入出力経路に振り分ける処理を行うことが必要となる。従来の技術では、各入出力経路にかかる負荷を分散させるために、各入出力経路に均等にデータ入出力要求を振り分けるようにしている。振り分け方法としては、例えば、各入出力経路を順番に指定するラウンドロビン方式が採用されている。
【０００４】
【非特許文献１】
Ｗ．Ｃｕｒｔｉｓ  Ｐｒｅｓｔｏｎ著，金崎裕己監訳，豊沢聡訳
「ＳＡＮ＆ＮＡＳストレージネットワーク管理」オライリー・ジャパン，
２００２年１０月３０日，ｐ．６６−６７
【０００５】
【発明が解決しようとする課題】
ところで、多重化により設定される上記入出力経路は、必ずしも同一性能のハードウェアもしくはソフトウェアによって構成されているとは限らず、また、同じ入出力経路の全部又は一部が複数の情報処理装置によって共用されていることもある。つまり、個々の入出力経路の負荷は様々な要因により多様に変化する。従って、入出力経路の個々の構成や事情等を考慮せずに入出力経路に順番にデータ入出力要求を割り当てるラウンドロビン方式では、必ずしも入出力経路間での負荷分散が適切に図られないことがある。
【０００６】
本発明は、このような観点からなされたもので、より適切な負荷分散を可能とする、情報処理装置の制御方法、情報処理装置、情報処理システム、及びプログラムを提供することを主たる目的とする。
【０００７】
【課題を解決するための手段】
本発明の主たる発明は、通信可能に接続される記憶装置との間に設定される複数の論理パスを通じて前記記憶装置にデータ入出力要求を送信する情報処理装置の制御方法において、前記論理パスの負荷を取得し、前記データ入出力要求を割り当てる前記論理パスを前記負荷に応じて決定することとする。
【０００８】
このように、上記発明によれば、論理パスの負荷に応じてデータ入出力要求の論理パスへの割り当てが行われるため、特定の論理パスに負荷が集中することが少なくなり（ボトルネック解消）、従来におけるラウンドロビン方式の場合に比べて効果的に負荷分散が図られることになる。また、論理パスはその途中経路が複数の情報処理装置に共用されるように設定されることがあるが、本発明では論理パスの負荷に応じてデータ入出力要求の論理パスへの割り当てが動的に行われるため、他の情報処理装置による論理パスの負荷の変動が加味された形で負荷分散が適切に行われ、効果的に負荷分散が図られることになる。
【０００９】
なお、本発明の他の特徴については、本明細書及び添付図面の記述により明らかにする。
【００１０】
【発明の実施の形態】
＝＝＝情報処理システムの全体構成＝＝＝
図１に本実施の形態に係る情報処理システム（コンピュータシステム）の全体構成を示している。２台の情報処理装置（ホスト）が、１台の記憶装置（記憶デバイス、ストレージ、ディスクアレイ装置）に接続している。情報処理装置１００はＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やメモリを備え、各種アプリケーションプログラムを実行する。例えば銀行の自動預金預け払いシステムや航空機の座席予約システム等のプログラムを実行する。
【００１１】
情報処理装置１００は、上記アプリケーションプログラムを実行する際に記憶装置２００が記憶しているデータにアクセスする。上記データアクセスは、情報処理装置１００と記憶装置２００とを接続するハードウェアにより物理的に構成されるデータ転送路である物理パスに対応付けられている論理パスを転送経路として行われる。情報処理装置１００と記憶装置２００とを接続する接続部３００（３０１〜３０８）は、上記物理パスを構成する。ＩＦ（Ｉｎｔｅｒ  Ｆａｃｅ）１４０（１４１〜１４８）は、例えば、１以上のＨＰｏｒｔ（Ｈｏｓｔ  ｂｕｓ  ａｄａｐｔｅｒ  Ｐｏｒｔ）を有するＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）である。
【００１２】
記憶装置２００は、論理ユニット２２０、ディスク制御部２１０を備える。論理ユニット２２０は、情報処理装置１００に提供される記憶資源に論理的に設定される記憶領域である。図１においてはＬＵ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ）１（２２１）とＬＵ２（２２２）の２つの論理ユニットが記されている。記憶資源としては、例えばハードディスク装置やフレキシブルディスク装置、半導体記憶装置等様々なものを用いることができる。ディスク制御部２１０は情報処理装置１００からのデータ入出力要求を受け、論理ユニット２２０に記憶されているデータのアクセスを制御する。ここでデータ入出力要求とは、例えば、ＳＣＳＩコマンドである。ＳＣＳＩコマンドには、例えば、ディスクドライブにデータを書き込むコマンド（以下、データ書き込みコマンドと称する）や、ディスクドライブからデータを読み出すコマンド（以下、データ読み出しコマンドと称する）がある。ディスク制御部２１０は図１に示すように記憶装置２００と一体型とすることもできるし、別体型とすることもできる。また図１においては２つの論理ユニットが記されているが、１つの論理ユニット２２０を複数のパーティションに分割した形態とすることもできる。パーティションとは論理ユニット２２０を論理的に区分して構成される記憶領域のことである。
【００１３】
情報処理装置１００においては様々なアプリケーションプログラム１１０が実行される。アプリケーションプログラム１１０は共に記憶装置２００に記憶されているデータへのアクセスを適宜行いながら処理を実行する。アプリケーションプログラム１１０にはアクセス可能な論理ユニット２２０が割り当てられている。
【００１４】
＝＝＝論理パスについて＝＝＝
アプリケーションプログラム１１０から記憶装置２００へのデータ入出力要求求は、後述するパス管理ドライバ１２０の制御により論理パスを転送経路として送信される。ここで論理パスは、情報処理装置１００、記憶装置２００、および情報処理装置１００と記憶装置２００とを結ぶ通信経路を構成する一つ以上のソフトウェアもしくは一つ以上のハードウェアの組み合わせにより定義される。
【００１５】
図２に論理パスを定義するための要素の具体例を示している。この図のように、論理パスはＨＬＵ（Ｈｏｓｔ  Ｌｏｇｉｃａｌ  Ｕｎｉｔ）２２３、ＴＩＤ（Ｔａｒｇｅｔ  ＩＤ）１８１、Ｂｕｓ１８２、ＨＰｏｒｔ（Ｈｏｓｔ  ｂｕｓ  ａｄａｐｔｅｒ  Ｐｏｒｔ）１８０、ＤＰｏｒｔ（Ｄｉｓｋ  ｃｏｎｔｒｏｌｌｅｒ  Ｐｏｒｔ）２３０、ディスク制御部２１０、及びＬＵ２２０などのハードウェアやソフトウェアを特定することにより定義される。ＨＬＵ２２３、ＴＩＤ１８１、Ｂｕｓ１８２、ＨＰｏｒｔ１８０はＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｆａｃｅ）通信規格で用いられる概念であり、それぞれホスト論理ユニット、ターゲットＩＤ、論理バス、ホストバスアダプタ側ポートを示す。ＤＰｏｒｔ２３０はディスク制御部２１０のポートを示す。論理パスの定義は必ず上記要素によらなければならない訳ではなく、システムにより上記要素のいずれかを不要とすることもできるし、上記以外の要素を加えて論理パスを定義することもできる。
【００１６】
＝＝＝パス管理ドライバ＝＝＝
パス管理ドライバ１２０は、情報処理装置１００と記憶装置２００との間のデータ転送経路を多重化するためのソフトウェアである。パス管理ドライバ１２０は、情報処理装置１００と記憶装置２００との間を複数の論理パス３００で接続しデータ転送経路を多重化することにより、データアクセスにおけるボトルネックを解消しデータ入出力処理性能を向上させる。パス管理ドライバ１２０はデータ入出力要求を各入出力経路へ適宜振り分けることによって負荷分散も行う。またパス管理ドライバ１２０は、データ転送経路に障害が発生した場合に、当該データ転送経路を閉塞し、正常なデータ転送経路により記憶装置２００へのデータアクセスを継続する機能も有し、これによりデータ転送経路障害によるサービス停止を回避しシステムの信頼性を高められる。
【００１７】
なお、情報処理装置１００で実行されるオペレーティングシステムによっては、記憶装置２００との間を複数の論理パスで接続されることに対する考慮がなされていないものがある。このようなオペレーティングシステムを情報処理装置１００で実行している場合に、情報処理装置１００と記憶装置２００との間を複数の論理パスで接続すると、アプリケーションプログラム１１０には、記憶装置２００上に存在する１つの論理ユニット２２０が論理パス毎に存在するかのように見えてしまうという問題が生じる。これを回避するため、パス管理ドライバ１２０は、論理パス毎に見える本来一つの論理ユニット２２０を一つに統合してアプリケーションプログラム１１０に見せる機能も有している。
【００１８】
＝＝＝論理パスの割り当て処理＝＝＝
データ入出力要求の論理パスへの割り当て処理について説明する。この処理はパス管理ドライバ１２０により行われる。パス管理ドライバ１２０は、アプリケーションプログラム１１０から入力されるデータ入出力要求を複数の論理パスのいずれかに割り当てる。パス管理ドライバ１２０は、この割り当てを一般的なラウンドロビンの方式で行うことができるほか、各論理パスの負荷に応じて行うことができる。後者の方法において、各論理パスの負荷は、例えば、単位時間当たりにその論理パスを通過するデータ入出力要求の数や、単位時間当たりにその論理パスを通過したデータ量として把握される。なお、上記いずれの割り当て方法を採用するかは、オペレータ等がパス管理ドライバ１２０に設定する。また、パス管理ドライバ１２０により自動的に選択させるようにすることもできる。
【００１９】
パス管理ドライバ１２０は、適宜なタイミングで各論理パスの負荷を取得する。また、論理パスの負荷は、例えば、その論理パスにパス管理ドライバ１２０がデータ入出力要求を送信してからそのデータ入出力要求に対する応答を受信するまでの時間として取得される。
【００２０】
ラウンドロビン方式では、その論理パスの負荷の大小に拘わらず定められた順序でデータ入出力要求の割り当てが行われるため、例えば、他に負荷の低い論理パスが存在する場合でも、負荷の高い論理パスにさらに新たなデータ入出力要求が割り当てられてしまうことも起こり得る。これに対し、負荷に応じてデータ入出力要求を論理パスに割り当てる方式では、各論理パスが全体として効率よく利用されるようにデータ入出力要求が割り当てられる。例えば、新たなデータ入出力要求は、その割り当て時に負荷の最も小さな論理パスに割り当てられ、特定の論理パスに負荷を集中させないように制御がなされる。
【００２１】
＝＝＝論理パスの負荷を取得＝＝＝
次に、パス管理ドライバ１２０が、論理パスの負荷に応じてデータ入出力要求を割り当てる論理パスを決定する仕組みについて詳述する。
まず、パス管理ドライバ１２０が、各論理パスの負荷を取得する仕組みについて説明する。図３は、各論理パスの負荷を取得する処理の一例を示すフローチャートである。この例では、パス管理ドライバ１２０から論理パスに対してデータ入出力要求を送信し、パス管理ドライバ１２０がそのデータ入出力要求に対する応答を受信するまでの時間（以下、応答時間と称する）を計測することにより各論理パスの負荷を取得するようにしている。すなわち、応答時間が長い論理パスほど負荷が大きいことになり、応答時間が短いほど、負荷が小さいことになる。
【００２２】
図３に示す処理では、一定の時間間隔で定期的に各論理パスの応答時間を測定している。パス管理ドライバ１２０は、応答時間を測定するタイミングが到来すると（Ｓ３００１：ＹＥＳ）、各論理パスに対してデータ入出力要求（以下、テスト要求と称する）を送信する（Ｓ３００２）。ここで各論理パスには、ＬＵに対して同じ処理を行うデータ入出力要求（例えば、データ入出力要求がデータ書き込みコマンドである場合には、同じデータサイズのデータを書き込むコマンド）を送信する。パス管理ドライバ１２０は、テスト要求を論理パスに送信した時刻を記憶している。
【００２３】
パス管理ドライバ１２０は、各論理パスに対して送信したテスト要求に対する応答を受信すると（Ｓ３００３）、その応答に対応するテスト要求を送信した時刻と当該応答を受信した時刻との時間間隔（すなわち、応答時間）を計算する（Ｓ３００４）。各論理パスについて計測された応答時間は、図４に示す論理パス管理テーブル４００に登録する（Ｓ３００５）。各論理パスには、それぞれに固有に設定される識別子（以下、論理パスＩＤと称する）が付与されている。論理パス管理テーブル４００は、パス管理ドライバ１２０によって参照される。論理パス管理テーブル４００は、例えば、情報処理装置１００のメモリやハードディスク装置に記憶されている。
【００２４】
＝＝＝割当優先度の決定＝＝＝
次に、以上のようにして論理パス管理テーブル４００に登録された各論理パスの応答時間に基づいて決定される割当優先度について説明する。割当優先度は、データ入出力要求をどの論理パスに割り当てるかどうかを決定する際に、パス管理ドライバ１２０により参照されるデータである。本実施例では、割当優先度は、負荷の小さい論理パスほど大きな値に決定される。すなわち、計測された応答時間が短い論理パスほど、割当優先度は大きな値に決定される。具体的には、負荷の大きな論理パスを基準とし、その論理パスの負荷を減らすように割当優先度が決定される。以下では、パス管理ドライバ１２０が、応答時間に基づいて割当優先度を決定し、論理パス管理テーブル４００の割当優先度の内容を設定する処理について具体的に説明する。
【００２５】
図５は、パス管理ドライバ１２０が割当優先度を決定し論理パス管理テーブル４００の割当優先度を設定する処理（以下、割当優先度設定処理と称する）を説明するフローチャートである。割当優先度設定処理は、パス管理ドライバ１２０により適宜なタイミングで起動される（Ｓ５００１）。例えば、論理パス管理テーブル４００の応答時間が更新されたことに連動して起動される。また、例えば、オペレータ等によりパス管理ドライバ１２０に対してあらかじめ設定されているタイミングが到来した場合に起動される。
【００２６】
割当優先度の設定は、１つの論理ユニット（ＬＵ）に繋がる一群の論理パスごとに行われる。すなわち、割当優先度設定処理では、１つの論理ユニットに繋がる一群の論理パスの範囲内で負荷分散を実現するようにしている。以下、互いに負荷分散を実現している一群の論理パスからなるグループを論理パスグループと称することとする。なお、本発明を実施するにあたり、必ずしも上記一群の論理パスの範囲内で負荷分散を実現しなければならないわけではない。複数の論理ユニットに繋がる論理パスを対象とするなど、上記一群の論理パスは任意の範囲に設定できる。
【００２７】
割当優先度設定処理が起動されると、ある論理ユニットに繋がる一群の論理パスについて、割当優先度と応答時間とをパラメータとして所定のアルゴリズムに従って理論負荷が計算される（Ｓ５００２）。理論負荷は、割当優先度を決定する際に用いられる中間的なパラメータである。各論理パスの割当優先度としては、論理パス管理テーブル４００の割当優先度の内容として既に登録されている値が参照される。情報処理装置１００の起動時やリセット時などの初期状態では、論理パス管理テーブル４００の割当優先度にはデフォルト値が設定される。デフォルト値は、例えば、割当優先度の変域の中間値が採用される。また例えば、デフォルト値は測定された応答時間に応じた比率で設定される。デフォルト値はユーザが任意に設定することも可能である。
【００２８】
上記所定のアルゴリズムとしては、例えば、割当優先度と応答時間とをパラメータとして四則演算（例えば、単純積）した結果を理論負荷とするものが採用される。なお、上記所定のアルゴリズムは、論理パスの負荷が大きいものほど、また、論理パスの割当優先度が大きいものほど、理論負荷が大きくなるものとする。
理論負荷が計算されると、パス管理ドライバ１２０は、計算された各論理パスの理論負荷のうち最大の理論負荷を持つ論理パスを基準論理パスとして選出する（Ｓ５００３）。
【００２９】
次に、パス管理ドライバ１２０は、基準論理パス以外の論理パスの一つについて、論理パス管理テーブル４００の割当優先度の内容に所定の値（以下、変化値）を加算し、加算後の値と論理パス管理テーブル４００の応答時間に設定されている値とをパラメータとして、再び上記所定のアルゴリズム又はその他のアルゴリズムにより理論負荷（以下、比較理論負荷と称する）を計算する（Ｓ５００４）。
【００３０】
次に、パス管理ドライバ１２０は、計算された比較理論負荷と、基準論理パスについて算出されている理論負荷（以下、基準理論負荷と称する）とを比較する（Ｓ５００５）。つまり、当該論理パスの割当優先度を上記変化値分増加させた場合に、最も大きい理論負荷である基準論理パスの理論負荷を超えるかどうかを検査することになる。ここで比較理論負荷が基準理論負荷よりも小さい場合には（Ｓ５００５：ＹＥＳ）、パス管理ドライバ１２０は、論理パス管理テーブル４００に登録されている割当優先度が、あらかじめ設定されている割当優先度の変域の上限値かどうかを判断する（Ｓ５００６）。ここで変域とは、割当優先度が取り得る値である。変域はオペレータ等が任意に設定することができる。設定された変域は論理パス管理テーブル４００に登録される。（Ｓ５００６）において、論理パス管理テーブル４００の割当優先度の内容が上限値でない場合には（Ｓ５００６：ＮＯ）、論理パス管理テーブル４００の当該論理パスの割当優先度の内容に上記変化値を加算し、更新カウンタをインクリメント（＋１）する（Ｓ５００８）。
【００３１】
一方、（Ｓ５００６）において、割当優先度が変域の上限値に一致する場合には（Ｓ５００６：ＹＥＳ）、論理パス管理テーブル４００に登録されている当該論理パス以外の論理パスの割当優先度から上記変化値を減算し、更新カウンタをインクリメント（＋１）する（Ｓ５００７）。こうすることで、当該論理パスの割当優先度は他の論理パスよりも相対的に増加する。また、現在最も大きな理論負荷を有する基準論理パスの理論負荷を超えない程度に、当該論理パスの理論負荷が増加することになる。また、負荷が大きいと判定された論理パスへのデータ処理要求の割当優先度を無条件に増加させることによる当該論理パスへの負荷の集中が抑えられ、より適切に論理パス間の負荷分散を図ることが可能となる。
【００３２】
（Ｓ５００５）において、比較理論負荷が基準理論負荷以上である場合には（Ｓ５００５：ＮＯ）、パス管理ドライバ１２０は、更新カウンタにゼロ（「０」）を設定する（Ｓ５００９）。
【００３３】
（Ｓ５０１０）において、パス管理ドライバ１２０は、ある論理ユニットに繋がる一群の基準論理パス以外の全ての論理パスのうち、以上の処理が完了していない論理パスについて、（Ｓ５００４）からの処理を繰り返し実行する（Ｓ５０１０：ＮＯ）。そして、基準論理パス以外の全ての論理パスについて、以上の処理が完了すると（Ｓ５０１０：ＹＥＳ）、次に、パス管理ドライバ１２０は、一群の論理パスのうちいずれかの論理パスの割当優先度が変更されているかどうかを調べる（Ｓ５０１１）。ここでいずれかの論理パスの割当優先度が変更されていた場合には（Ｓ５０１１：ＹＥＳ）、論理パス管理テーブル４００の基準論理パスの割当優先度の内容から変化値を減算する（Ｓ５０１２）。
【００３４】
（Ｓ５０１３）において、パス管理ドライバ１２０は、割当優先度の設定を行っていない他の論理ユニット（ＬＵ）が存在する場合には（Ｓ５０１３：ＹＥＳ）、その論理ユニットに繋がる一群の論理パスについて、（Ｓ５００２）からの処理を実行する。他の論理ユニットが存在しなければ（Ｓ５０１３：ＮＯ）、一連の処理を終了する。
【００３５】
なお、以上の処理において、割当優先度の変域と、上記変化値の値を変えることにより、割当優先度の変化のさせ方を調節することができる。例えば、変域を広く設定し、もしくは、変化値を小さな値とすることにより（以下、スタビリティな設定と称する）、変化値の加算・減算に対する割当優先度の変化は小さくなり、逆に、変域を狭く設定し、もしくは、変化値を大きな値とすることにより（以下、センシティブな設定と称する）、変化値の加算・減算に対する割当優先度の変化は大きくなる。
【００３６】
ところで、過去に算出されている前記割当優先度には過去における論理パスの負荷が反映されている。従って、以上のように、新たに取得される負荷と過去に取得された負荷が反映されている割当優先度とに基づいて新たな割当優先度を算出することで、過去における論理パスの負荷を加味した形で割当優先度が算出され、適切な割当優先度を算出することができる。
【００３７】
＝＝＝負荷分散＝＝＝
パス管理ドライバ１２０は、アプリケーションプログラムやオペレーティングシステム等から入力されたデータ入出力要求を複数の論理パスのうちのいずれかに割り当てる。この割り当ては、論理パス管理テーブル４００に設定される割当優先度に基づいて、各論理パス間で負荷分散が実現されるように行われる。ここでは、割当優先度に基づいて負荷分散を実現する仕組みとして、割当優先度に応じた数（量）のデータ入出力要求を各論理パスに順次割り当てていく仕組みについて説明する。なお、負荷分散を実現する仕組みはこれに限定されるわけではない。例えば、割当優先度が大きな論理パスに優先的にデータ入出力要求を割り振るようにすることもできる。
【００３８】
図６はパス管理ドライバ１２０が、割当優先度に応じた数のデータ入出力要求を各論理パスに順次割り当てることにより負荷分散を実現する処理を説明するフローチャートである。
この処理では、パス管理ドライバ１２０は、順次入力されるデータ入出力要求を、割当優先度の大きな論理パスから順番に、各論理パスに設定されている割当優先度に応じた数分だけ連続的に割り当てる。この処理は、例えば、ラウンドロビン方式による割り当てのアルゴリズムに、論理パスに割当優先度に応じた数分のデータ入出力要求を割り当てる処理を追加することにより実現される。
【００３９】
図６において、まず、パス管理ドライバ１２０は、データ入出力要求が入力されると（Ｓ６００１）、その際に割り当て先に設定されている論理パスにそのデータ入出力要求を割り当てる。ここで論理パス管理テーブル４００には、その時点で割当先に設定されている論理パスがいずれであるのかを示す情報である割当先フラグが管理されている。その時点でのデータ入出力要求の割り当て先の論理パスの割当先フラグには「１」が設定され、他の論理パスの割当先フラグには「０」が設定される。なお、割当先フラグの内容は、後述する図７に示すフローチャートに従ったパス管理ドライバ１２０の処理により管理される。パス管理ドライバ１２０は、いずれの論理パスが割り当て先に設定されているのかを、論理パス管理テーブル４００の割当先フラグを参照することにより確認する（Ｓ６００２）。
【００４０】
パス管理ドライバ１２０は、割り当て先に設定されている論理パスに、データ入出力要求を割り当てる（Ｓ６００３）。なお、データ入出力要求を割り当てるとは、具体的には、論理パスごとに設けられているデータ入出力要求の処理待ちキューにデータ入出力要求を登録することである。また、データ入出力要求の割当て先となるパスを識別する情報を当該データ入出力要求と対応付けて、複数のパスに関して設けられているデータ入出力要求の処理待ちキューに登録することとしてもよい。パス管理ドライバ１２０は、論理パスに割り当てたデータ入出力要求の数をカウントするためのカウンタ（以下、割当カウンタ）を管理している。パス管理ドライバ１２０は、論理パスにデータ入出力要求を一つ割り当てるたびに割当カウンタの値をインクリメント（＋１）する（Ｓ６００４）。ここでパス管理ドライバ１２０は、論理パスにデータ入出力要求を割り当てるに際し、割当カウンタが割当上限値に達しているかどうかを調べる（Ｓ６００５）。前記の割当上限値は、割当優先度に応じて決まる値である。例えば、４つの論理パス間での負荷分散を行っており、割当優先度の変域が１〜２０に設定され、さらに各論理パスの割当優先度が５、６、７、３となっている場合には、割当優先度の比率で定まる値（例えば、５個、６個、７個、３個）を各論理パスの割当上限値として設定する。割当カウンタが割当上限値に達している場合（Ｓ６００５：ＹＥＳ）には、パス管理ドライバ１２０は、図７に示す割当先フラグを変更する処理（以下、割当先フラグ変更処理と称する）を実行する（Ｓ６００６）。
【００４１】
図７に示すフローチャートとともに割当先フラグを変更する処理について説明する。まず、パス管理ドライバ１２０は、現時点で割当先フラグが「１」に設定されている論理パスが所属する論理パスグループに所属している他の論理パスの中から、現時点で割当先フラグが「１」に設定されている論理パスに設定されている割当優先度と等しいか、もしくは、前記割当優先度よりも小さな割当優先度が設定されている論理パスを選出する（Ｓ７００１）。ここでそのような論理パスが選出できない場合には（Ｓ７００２：選出できない）、パス管理ドライバ１２０は、当該論理パスグループに所属する論理パスの中から割当優先度が最大の論理パスを選出する（Ｓ７００３）。ここで最大の割当優先度を有する論理パスが複数存在する場合には（Ｓ７００４：ＹＥＳ）、そのうち最も若い論理パスＩＤが付与されている論理パスをデータ入出力要求の割り当て先の論理パスとして選出する（Ｓ７００５）。そして、その論理パスの論理パス管理テーブル４００の割当先フラグに「１」を設定し（Ｓ７００６）、当該論理パスが所属する論理パスグループに所属する他の論理パスの割当先フラグに「０」を設定する。またこのとき、上記割当カウンタにゼロ（０）を設定する（Ｓ７００７）。
【００４２】
（Ｓ７００４）において、最大の割当優先度を有する論理パスが一つしか存在しない場合には、その論理パスをデータ入出力要求の割り当て先の論理パスとして選出し（Ｓ７００８）、上述の（Ｓ７００６）の処理に進む。
【００４３】
（Ｓ７００２）において、前記割当優先度よりも小さい割当優先度が設定されている場合には（Ｓ７００２：小さい優先度）、選出した論理パスが複数存在するかどうかを調べる（Ｓ７００９）。ここで選出した論理パスが複数存在する場合には（Ｓ７００９：ＹＥＳ）、それらの論理パスの中から論理パスＩＤが最も若い論理パスをデータ入出力要求の割り当て先の論理パスとして選出し（Ｓ７０１０）、上述の（Ｓ７００６）に進む。
【００４４】
（Ｓ７００２）において、前記割当優先度と等しい割当優先度が設定されている場合には（Ｓ７００２：等しい優先度）、当該論理パスのＩＤと選出された論理パスのＩＤとを比較する（Ｓ７０１１）。ここで当該論理パスのＩＤが選出された論理パスのＩＤよりも大きい場合には（Ｓ７０１１：当該論理パスのＩＤが大きい）、当該論理パスのＩＤよりも大きいＩＤを有する論理パスを選出するため（Ｓ７００１）に進む。なお、この場合に（Ｓ７００１）における処理では、前記選出された論理パスのＩＤと同じものを選出しないようにする。また、当該論理パスのＩＤよりも大きいＩＤを有する論理パスがない場合には、当該論理パスの割当優先度よりも小さい割当優先度を有する論理パスを選出する（Ｓ７００１）。一方、当該論理パスのＩＤが選出された論理パスのＩＤよりも小さい場合には（Ｓ７０１１：当該論理パスのＩＤが小さい）、（Ｓ７００８）に進む。
【００４５】
＝＝＝割当優先度の調節＝＝＝
上述したように、割当優先度の変域と、上記変化値の値を変えることにより、割当優先度の変化のさせ方を調節することができる。例えば、各論理パスの負荷が比較的安定しており、時間的な変化がゆるやかである場合には、変域を広く設定し、もしくは、変化値を小さな値とする（スタビリティな設定）ことにより変化値の加算・減算に対する割当優先度の変化を小さくし、負荷の変化に対して各論理パスの負荷をあまり急激に変化させないようにする。また、各論理パスの負荷が安定せず、時間的な変化が激しい場合には、変域を狭く設定し、もしくは、変化値を大きな値とする（センシティブな設定）ことにより変化値の加算・減算に対する割当優先度の変化を大きくし、負荷の変化に対して各論理パスの負荷を機敏に変化させるようにする。
【００４６】
一方、情報処理システムの用途によっては、論理パスの負荷が安定している時間帯と不安定な時間帯とが存在することがある。このような情報処理システムでは、常に、スタビリティな設定、もしくは、センシティブな設定のいずれかに恒常的に設定しておくのではなく、論理パスの負荷の状態に応じて柔軟に上記変域、もしくは、変化値を変化させて、割当優先度の変化態様を動的に設定するようにした方が好ましいことがある。そこで、本発明のパス管理ドライバ１２０は、論理パス管理テーブル４００に登録されている変域もしくは変化値を動的に変更する機能を備えている。
【００４７】
図８は、上記機能を実現する処理を説明するフローチャートである。まず、パス管理ドライバ１２０は、論理パスグループに所属する各論理パスの更新カウンタが閾値以上である論理パスが存在するかどうかを調べる（Ｓ８００１）。ここで各論理パスの更新カウンタの値と閾値とを比較しているのは、割当優先度の更新頻度を調べるためである。閾値以上である論理パスが存在する場合、すなわち、割当優先度の変更が頻繁に行われている場合には（Ｓ８００１：ＹＥＳ）、次に、当該論理パスグループが、現在、スタビリティな設定になっているのかセンシティブな設定になっているのかを調べる（Ｓ８００２）。ここで当該論理パスグループがどのような設定になっているのかは、図４に示す論理パス管理テーブル４００のポリシーの項目に管理されている。ここでスタビリティの設定になっている場合（Ｓ８００２：ＹＥＳ）には、変域を狭めるかもしくは変化値を増加させて当該論理パスグループのポリシーの設定をセンシティブの設定に変更する（Ｓ８００３）。一方、（Ｓ８００２）において、当該論理パスグループのポリシーの設定がセンシティブの設定になっている場合には、そのままセンシティブの設定を維持する。なお、この場合にさらに変域を狭めるかもしくは変化値を増加させることにより、より敏感な（センシティブな）設定とするようにしてもよい。
【００４８】
（Ｓ８００１）において、閾値以上である論理パスが存在しない場合、すなわち、割当優先度の変更が頻繁には行われていない場合には（Ｓ８００１：ＮＯ）、当該論理パスグループが、現在、スタビリティな設定になっているのかセンシティブな設定になっているのかを調べる（Ｓ８００４）。ここで当該論理パスグループのポリシーの設定がセンシティブの設定になっている場合（Ｓ８００４：ＹＥＳ）には、変域を拡げるかもしくは変化値を減少させて当該論理パスグループのポリシーの設定をスタビリティの設定に変更する（Ｓ８００５）。一方、（Ｓ８００４）において、当該論理パスグループのポリシーの設定がスタビリティの設定になっている場合には（Ｓ８００４：ＮＯ）、そのままスタビリティの設定を維持する。なお、この場合にさらに変域を拡げるかもしくは変化値を減少させることにより、より安定的な（スタビリティな）設定とするようにしてもよい。
【００４９】
このように、本実施例の情報処理システムにおいては、論理パスの負荷の状態に応じて設定される割当優先度の変化態様に応じて、論理パスグループの負荷分散を、スタビリティな設定、もしくは、センシティブな設定のいずれで管理するのか動的に変更されるので、多様に変化する論理パスの負荷に応じて適切に負荷分散を図ることが可能となる。
【００５０】
また、恒常的に一定の負荷が生じている場合、突発的に高負荷となる場合、時間の経過とともに徐々に負荷が変化していく場合等、論理パスの負荷の時間的な変化態様は様々である。上記の仕組みによれば、前記各論理パスの負荷の時間的な変化態様に応じて前記負荷の変化に対する前記割当優先度の増減量を変化させるため、負荷の様々な変化態様に応じて適切に負荷分散を実現することが可能となる
なお、オペレータ等に割当優先度の変域や変化値を設定させる場合には、例えば、変域や変化値、もしくは、これらの変化態様に対応させた選択肢としてポリシーを定義しておき、オペレータ等がポリシーを選択することにより変域や変化値を簡便に設定できるようなユーザインタフェースを設けてもよい。そして、オペレータ等のユーザは、ポリシーを変更することにより、例えば、過去の実績や経験的に把握している論理パスの負荷の態様に応じて割当優先度を調節することが可能となり、より適切に負荷分散を実現することが可能となる。なお、上述の図４では、ＬＵ１に対応する論理パスグループについては割当優先度の変域を大きくもしくは変化値を小さく設定するポリシーである「スタビリティ」が、ＬＵ２に対応する論理パスグループについては割当優先度の変域を小さくもしくは変化値を大きく設定するポリシーである「センシティブ」が、ＬＵ３に対応する論理パスグループについては論理パスの負荷の変化態様に応じて「スタビリティ」もしくは「センシティブ」を動的に設定し、変域をスタビリティの場合と同じ値とするポリシーである「スマート」がそれぞれ設定されている。
【００５１】
＝＝＝情報処理装置の詳細な構成例＝＝＝
図９は、本実施の形態に係る情報処理装置１００の詳細な構成例である。
アプリケーションプログラム１１０は、ファイルシステム２４０を介して記憶装置２００に設定されている論理ユニット２２０にアクセスする。ファイルシステム２４０は通常オペレーティングシステムの持つ機能の一つとして提供され、記憶装置２００により提供される記憶領域を管理するソフトウェアをいう。すなわち、記憶装置２００により提供される記憶領域上の論理ブロック内にファイルという抽象概念を実現し、ファイルに対するデータ入出力要求を論理ブロックアドレス単位のデータ入出力要求に対応させる。
【００５２】
パス管理ドライバ１２０は、ファイルシステム２４０を介してアプリケーションプログラム１１０から出されたデータ入出力要求をＩＦ１（１４１）乃至ＩＦ４（１４４）の各ＨＰｏｒｔに振り分ける。振り分けられたデータ入出力要求は、ディスクドライバ１６０（１６１〜１６８）及びＩＦドライバ１７０（１７１〜１７８）を介してＩＦ１（１４１）乃至ＩＦ４（１４４）から記憶装置２００に送信される。ディスクドライバ１６０はブロックモードのデバイスを論理ディスクとして抽象化する。ＩＦドライバ１７０はデータ入出力要求を所定の通信プロトコルのパケットに変換・復元する。通信プロトコルとしては例えばファイバチャネルを採用することができる。
【００５３】
上記データ入出力要求は、４本の接続部３０１〜３０４を含むハードウェアにより構成される物理パスにより情報処理装置１００から記憶装置２００へ送信される。一方、上述したとおり上記物理パスには論理パスが対応付けられている。論理パスはソフトウェアにより論理的に構成されるデータ経路である。図９においては論理パスは８０１〜８０８で示される。論理パスはＬＵ毎に設けられる。
【００５４】
情報処理装置１００と記憶装置２００との間は、図９に示すようにＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）７００で接続される形態とすることもできるし、図１に示すように直接接続する形態とすることもできる。
【００５５】
ドライバ管理プログラム１２１は、ドライバＵＩ（Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）プログラム１２２及びドライバＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）プログラム１２３と共に、パス管理ドライバ１２０を管理する。ドライバＵＩプログラム１２２は、ドライバ管理プログラム１２１を介してパス管理ドライバ１２０の設定を行う際のユーザインタフェースを提供するためのプログラムである。ドライバＡＰＩプログラム１２３は、ドライバＵＩプログラム１２２を用いてパス管理ドライバ１２０を設定する際に使用可能な命令や関数を集めたプログラムである。
【００５６】
図９に示した情報処理装置１００と一部構成の異なるものを図１０に示す。図９における情報処理装置１００では、ディスクドライバ１６０はパス管理ドライバ１２０からデータ入出力要求を受け取り、ブロックモードのデバイスを論理ディスクとして抽象化した後にＩＦドライバ１７０に引き渡す。しかしながらオペレーティングシステムによっては、ディスクドライバ１６０をファイルシステム２４０とパス管理ドライバ１２０との間に介在させる必要のあるものもある。図１０に示したのはかかる場合の例である。図９の形態と図１０の形態とはオペレーティングシステムの違いによって生じるものであって、どちらの形態も本発明の実施形態の一つである。
【００５７】
以上、本発明に係る情報処理装置等について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれることは勿論である。
【００５８】
【発明の効果】
本発明によれば、情報処理装置の制御方法、情報処理装置、情報処理システム、及びプログラムを提供することができる。
【図面の簡単な説明】
【図１】本発明の一実施例による情報処理システムの全体構成を示す図である。
【図２】本発明の一実施例による論理パスを説明する図である。
【図３】本発明の一実施例による論理パスの負荷を取得する処理を説明するフローチャートを示す図である。
【図４】本発明の一実施例による論理パス管理テーブル４００を示す図である。
【図５】本発明の一実施例による論理パス管理テーブル４００の割当優先度を設定する処理を説明するフローチャートを示す図である。
【図６】本発明の一実施例による割当優先度に応じた数のデータ入出力要求を各論理パスに順次割り当てることにより負荷分散を実現する処理を説明するフローチャートを示す図である。
【図７】本発明の一実施例による割当先フラグを変更する処理を説明するフローチャートを示す図である。
【図８】本発明の一実施例による論理パス管理テーブル４００に登録されている変域もしくは変化値を動的に変更する機能を実現する処理を説明するフローチャートを示す図である。
【図９】本発明の一実施例による情報処理装置１００の詳細な構成例を示す図である。
【図１０】本発明の一実施例による情報処理装置１００の詳細な構成例を示す図である。
【符号の説明】
１００  情報処理装置
１１０  アプリケーションプログラム
１２０  パス管理ドライバ
１３１〜１３８  論理パスに割り当てられるデータ入出力のキュー
１４１〜１４８  ＩＦ（Ｉｎｔｅｒ  Ｆａｃｅ）
２００  記憶装置
２１０  ディスク制御部
２２０  論理ユニット
４００  論理パス管理テーブル
【図１】
2005010956.tif 000003
【図２】
2005010956.tif 000004
【図３】
2005010956.tif 000005
【図４】
2005010956.tif 000006
【図５】
2005010956.tif 000007
【図６】
2005010956.tif 000008
【図７】
2005010956.tif 000009
【図８】
2005010956.tif 000010
【図９】
2005010956.tif 000011
【図１０】
2005010956.tif 000012