(57)【特許請求の範囲】
【請求項１】
第一の管理装置が接続された複数の計算機に接続された２以上のファイルサーバと、前記ファイルサーバに接続され１以上のボリュームを有するストレージ装置と、前記ファイルサーバと前記第一の管理装置とに接続される第二の管理装置を有するストレージシステムであって、
前記第一の管理装置は、計算機上で逐次実行されるジョブの情報（ジョブ情報）とジョブキューの情報（ジョブキュー情報）を記憶する領域と、実行キューと、実行までジョブ待機するキューとを有し、
前記第二の管理装置は、前記ジョブ情報を収集する手段と、前記ジョブキュー情報を収集する手段と、収集した前記ジョブ情報と前記ジョブキュー情報を解析する手段と、負荷を管理する手段と、ファイルシステムを管理する手段とを有し、
前記ジョブ情報と前記ジョブキュー情報を解析する手段は、前記ジョブ情報に基づいて、当該ジョブがアクセスするファイルと、ファイルシステムと、ファイルサーバを特定し、
前記負荷を管理する手段は、前記ジョブ情報と前記ジョブキュー情報に基づいてファイルサーバ毎に予測負荷を算出し、予測負荷が予め定められた負荷の閾値を超える場合は負荷分散を実行すると決定し、
前記ファイルシステムを管理する手段は、前記負荷を管理する手段が負荷分散を実行すると決定した場合に、負荷に対応するファイルシステムを、前記ファイルサーバ内の予測負荷の高いファイルサーバから予測負荷の小さいファイルサーバに移動する
ことを特徴とするストレージシステム。
【請求項２】
請求項１記載のストレージシステムであって、
前記負荷を管理する手段は、前記ファイルサーバ毎に算出された予測負荷の中で、予め設定した負荷の閾値を超えるファイルサーバを負荷の移動元のファイルサーバとして選択し、負荷の閾値を超えた分の負荷を負荷分散対象として選択し、予測負荷の最も小さいファイルサーバを負荷の移動先のファイルサーバとして選択する
ことを特徴とするストレージシステム。
【請求項３】
請求項２記載のストレージシステムであって、
前記負荷を管理する手段は、前記ジョブ情報と前記ジョブキュー情報とに基づいて、前記ジョブキューに並んでいるジョブがアクセスする先のファイルシステムとファイルサーバとを特定し、当該ジョブキューに並ぶ各ジョブが与える負荷を前記各ファイルサーバ毎に合計することで予測負荷を算出する
ことを特徴とするストレージシステム。
【請求項４】
請求項３記載のストレージシステムであって、
前記負荷を管理する手段は、負荷に対応するジョブの前記ジョブキュー内における順番が負荷分散選択閾値以下の場合、前記負荷分散の対象から当該負荷を削除する
ことを特徴とするストレージシステム。
【請求項５】
請求項４記載のストレージシステムであって、
前記負荷を管理する手段は、前記ジョブキュー内の順番が予測負荷除外閾値以上のジョブが与える負荷を削除する
ことを特徴とするストレージシステム。
【請求項６】
請求項５記載のストレージシステムであって、
前記負荷を管理する手段は、イベント発生の頻度に基づき、予め定められた予測負荷対象時間内に予め定められた確率の範囲でジョブが実行する最大の回数を予め定められた方法で算出し、当該回数を予測負荷除外閾値に設定する
ことを特徴とするストレージシステム。
【請求項７】
請求項６記載のストレージシステムであって、
前記負荷を管理する手段は、前記ジョブキュー情報の現在と過去の内容の差分をとることにより、前記ジョブキューで発生したイベントを検知する
ことを特徴とするストレージシステム。
【請求項８】
請求項７記載のストレージシステムであって、
前記負荷を管理する手段は、前記イベントの発生に基づき、定められた方法で負荷分散のタイミングを決定する
ことを特徴とするストレージシステム。
【請求項９】
請求項７記載のストレージシステムであって、
前記負荷を管理する手段は、前記イベント発生の頻度に基づき、予め定められたファイルシステム移動時間内に予め定められた確率の範囲でジョブが実行する最大の回数を予め定められた方法で算出し、当該回数を負荷分散選択閾値に設定する
ことを特徴とするストレージシステム。
【請求項１０】
第一の管理装置が接続された複数の計算機に接続された２以上のファイルサーバと、前記ファイルサーバに接続され１以上のボリュームを有するストレージ装置と、前記ファイルサーバと前記第一の管理装置とに接続される第二の管理装置を有するストレージシステムにおける負荷分散管理方法であって、
前記第一の管理装置が、計算機上で逐次実行されるジョブの情報（ジョブ情報）とジョブキューの情報（ジョブキュー情報）を記憶する領域と、実行キューと、実行までジョブ待機するキューとを有する場合に、
前記第二の管理装置は、前記ジョブ情報を収集する処理と、前記ジョブキュー情報を収集する処理と、収集した前記ジョブ情報と前記ジョブキュー情報を解析する処理と、負荷を管理する処理と、ファイルシステムを管理する処理とを実行し、
前記ジョブ情報と前記ジョブキュー情報を解析する処理は、前記ジョブ情報に基づいて、当該ジョブがアクセスするファイルと、ファイルシステムと、ファイルサーバを特定し、
前記負荷を管理する処理は、前記ジョブ情報と前記ジョブキュー情報に基づいてファイルサーバ毎に予測負荷を算出し、予測負荷が予め定められた負荷の閾値を超える場合は負荷分散を実行すると決定し、
前記ファイルシステムを管理する処理は、前記負荷を管理する手段が負荷分散を実行すると決定した場合に、負荷に対応するファイルシステムを、前記ファイルサーバ内の予測負荷の高いファイルサーバから予測負荷の小さいファイルサーバに移動する
ことを特徴とするストレージシステムの負荷分散管理方法。
【請求項１１】
第一の管理装置が接続された複数の計算機に接続された２以上のファイルサーバと、前記ファイルサーバに接続され１以上のボリュームを有するストレージ装置と、前記ファイルサーバと前記第一の管理装置とに接続される第二の管理装置を有するストレージシステムにおける負荷分散の管理処理を計算機に実行させるプログラムであって、
前記第一の管理装置が、計算機上で逐次実行されるジョブの情報（ジョブ情報）とジョブキューの情報（ジョブキュー情報）を記憶する領域と、実行キューと、実行までジョブ待機するキューとを有する場合に、
前記第二の管理装置に搭載される計算機に、前記ジョブ情報を収集する処理と、前記ジョブキュー情報を収集する処理と、収集した前記ジョブ情報と前記ジョブキュー情報を解析する処理と、負荷を管理する処理と、ファイルシステムを管理する処理とを実行させ、
前記ジョブ情報と前記ジョブキュー情報を解析する処理は、前記ジョブ情報に基づいて、当該ジョブがアクセスするファイルと、ファイルシステムと、ファイルサーバを特定し、
前記負荷を管理する処理は、前記ジョブ情報と前記ジョブキュー情報に基づいてファイルサーバ毎に予測負荷を算出し、予測負荷が予め定められた負荷の閾値を超える場合は負荷分散を実行すると決定し、
前記ファイルシステムを管理する処理は、前記負荷を管理する手段が負荷分散を実行すると決定した場合に、負荷に対応するファイルシステムを、前記ファイルサーバ内の予測負荷の高いファイルサーバから予測負荷の小さいファイルサーバに移動する
ことを特徴とするストレージシステムの負荷分散管理を計算機に実現させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機に対してファイルサービスを提供する複数のファイルサーバと、これらファイルサーバに記憶領域を提供する記憶装置システム（以下「ストレージシステム」という。）とで構成される計算機システムに関する。また、当該システム上での負荷分散を実現する管理方法及びプログラムに関する。
【背景技術】
【０００２】
近年、データセンタで扱うデータ量の急激な増大に伴い、ストレージシステムに対するアクセス負荷が増加している。特に、オンライントランザクションシステムやＨＰＣ（High Performance Computing）システムでは、大容量のデータを入出力する。このため、ファイルサーバに対するアクセス負荷が増加している。その結果、ファイルサーバには、高いアクセス負荷に対応できる高性能なファイルサービスが求められている。
【０００３】
多くのデータセンタは、この高い性能要求に対し、複数のファイルサーバを並列稼働させることで、高性能なファイルサービスを提供する。また、多くのデータセンタは、複数のファイルサーバを統一した共有ファイルシステムの名前空間を提供する。これにより、クライアントは、複数のファイルサーバがあたかも１つの共有ファイルシステムを提供しているかのように、ファイルサービスを受けることができる。
【０００４】
ところが、従来システムでは、ファイルサーバに負荷が均等に割り振られず、少数のファイルサーバに負荷が偏ることがある。この場合、共有ファイルシステム全体の性能が、負荷が集中した一部のファイルサーバの性能に律速する。その結果、ファイルのＲｅａｄ／Ｗｒｉｔｅ速度の低下や応答時間の増加が生じ、共有ファイルシステムによるファイルサービスの性能が低下するという問題がある。
【０００５】
上記問題を解決するため、クライアントのファイルアクセスを複数のファイルサーバに振り分ける技術が、特許文献１に開示されている。特許文献１に示す方法の場合、クライアントとサーバの間に設置されたセッション管理部とサーバ選択部が、クライアントのファイルアクセスを１つ１つに分解し、さらにラウンドロビン法により選択されたサーバへファイルアクセスを送信する。これにより、ファイルサーバに対する負荷を分散する。
【０００６】
また、上記問題を解決する別の手段として、ファイルサーバが管理するファイルシステムの一部を、他のファイルサーバに移動する技術が、特許文献２に開示されている。特許文献２の方法は、クライアントからファイルサーバへのアクセスの状態を監視するファイル管理プログラムが、あるファイルサーバにクライアントのファイルアクセスが集中していることを知ると、そのファイルサーバが管理するファイルシステムの一部を他のファイルサーバに移動する。これにより、ファイルサーバに対する負荷を分散する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開2002-351760号公報
【特許文献２】特開2004-139200号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ストレージシステムの負荷を分散する方法である特許文献１は、クライアントとファイルサーバとの間でファイルアクセスを振り分けることにより、ファイルサーバの負荷の分散を実現する。しかし、振り分けられた先のファイルサーバが対象のファイル又はファイルシステムを管理していない場合、実際に管理している他のファイルサーバにファイルアクセスをリダイレクトする必要があり、そのオーバーヘッドのためにファイルサービス性能が低下する問題があった。
【０００９】
特許文献２の技術は、ファイルアクセスが集中しているファイルサーバから、ファイルシステムの一部を他のファイルサーバに移動することにより、ファイルサーバの負荷分散を実現する。しかし、アクセスの集中によりファイルサーバの負荷が高い、例えばＣＰＵ利用率が 100%に近い状態の場合、ファイルシステムの移動が困難であるという問題がある。また、この技術は、負荷分散のためにファイルアクセスを移動させるはずが、逆にファイルサーバに負荷をかけることになる。このため、ファイルサービスの性能低下を発生させる問題がある。
【課題を解決するための手段】
【００１０】
上述した課題を解決するために、本発明の一実施形態は以下の構成を有する。具体的には、第一の管理装置が接続された複数の計算機に接続された１以上のファイルサーバと、ファイルサーバに接続され１以上のボリュームを有するストレージ装置と、ファイルサーバと第一の管理装置とに接続される第二の管理装置を有するストレージシステムであって、第一の管理装置は、計算機上で逐次実行されるジョブの情報（ジョブ情報）とジョブキューの情報（ジョブキュー情報）を記憶する領域と、実行キューと、実行までジョブを待機するキューとを有する。
【００１１】
そして、第二の管理装置は、ジョブ情報を収集する手段と、ジョブキュー情報を収集する手段と、収集したジョブ情報とジョブキュー情報を解析する手段と、負荷を管理する手段と、ファイルシステムを管理する手段とを有する。ジョブ情報とジョブキュー情報を解析する手段は、ジョブ情報に基づいて、当該ジョブがアクセスするファイルと、ファイルシステムと、ファイルサーバを特定する。
【００１２】
負荷を管理する手段は、ジョブ情報とジョブキュー情報に基づいて予測負荷を算出して負荷分散を実行する。ファイルシステムを管理する手段は、上記負荷を管理する手段で決定された負荷分散に従い、ファイルシステムを、上記ファイルサーバ内の予測負荷の高いサーバから予測負荷の小さいサーバに移動する。
【００１３】
その他、本願が開示する課題、及びその解決方法は、発明の実施形態の欄及び図面により明らかにされる。
【発明の効果】
【００１４】
本発明により、高性能が要求されるバッチ処理系のアプリケーションにおいて、負荷が動的かつ急に変化する場合でも、複数並列に稼働するファイルサーバ間で実負荷と予測に基づいて負荷を分散する。これにより、高性能なファイルサービスを行うストレージシステムを提供することが可能となる。
【図面の簡単な説明】
【００１５】
【図１】本発明のストレージシステムとそれに繋がる計算機、管理サーバの構成例を示す図である。
【図２】本発明の計算機管理サーバとストレージ管理サーバの構成の例を示す図である。
【図３】図１のストレージシステムから、共有ファイルシステムの構成例を抜粋した図である。
【図４】ファイルサーバの負荷分散を実行する前のキュー、計算機、ファイルサーバ、ファイルシステム、予測負荷の例を示す図である。
【図５】ファイルシステムのマウント切り替えによる負荷分散の例を示す図である。
【図６】ファイルサーバの負荷分散を実行した後のキュー、計算機、ファイルサーバ、ファイルシステム、予測負荷の例を示す図である。
【図７】キューと実行キュー内で発生するイベントの例を示す図である。
【図８】本発明のファイルサーバの負荷分散のタイミングの決定、負荷分散実行の手順の一例を示す図である。
【図９】本発明の予測負荷の作成の手順の一例を示す図である。
【図１０】本発明の負荷分散対象リスト、負荷リストの一例を示す構造図である。
【図１１】本発明のファイルシステム管理テーブルとファイルサーバ管理テーブルの一例を示す構造図である。
【図１２】閾値s1を算出する手順の一例を示す図である。
【図１３】閾値s2を算出する手順の一例を示す図である。
【図１４】計算機実行スクリプトの例を示す図である。
【発明を実施するための形態】
【００１６】
以下、図面に基づいて、発明の実施例を説明する。なお、後述する実施例は一例であり、本発明には、本明細書に記載する任意の機能を組み合わせたシステム構成や本明細書に記載する全て又は一部機能に周知技術を組み合わせたシステム構成も含まれる。また、後述する実施例で実行される機能は、計算機（コンピュータ）上で実行されるプログラムとして実現されるものとして説明する。もっとも、プログラムの一部又は全部は、ハードウェアを通じて実現しても良い。
【実施例】
【００１７】
[実施例１]
図１は、第一の実施形態のストレージ装置を含むシステムの構成を示す図である。計算機システム１は、計算機１１、ＩＰスイッチ２、ストレージシステム９および計算機管理サーバ７を有する。また、ストレージシステム９は、ファイルサーバ３、ファイバチャネル（FC：Fiber Channel）スイッチ４、ストレージ装置５及びストレージ管理サーバ８を有する。
【００１８】
図１に示すように、ＩＰスイッチ２を介して計算機１１とファイルサーバ３を接続することで、計算機１１はストレージシステム９に接続している。また、計算機１１、ファイルサーバ３、ストレージ装置５、ストレージ管理サーバ８は、管理用のネットワークであるＬＡＮ６（Local Area Network）を介して互いに接続される。
【００１９】
ファイルサーバ３とストレージ装置５とを接続するインターフェースには、ファイバチャネル、ｉＳＣＳＩ等のブロックデータを送るプロトコルのインターフェースを用いるのが一般的である。ここで、ファイルサーバ３とストレージ装置５を直接接続する場合もあるが、図１ではＦＣスイッチ４を介して接続している。
【００２０】
ストレージ装置５は、コントローラ５１と、内部にハードディスク５９を持つハードディスク搭載部５８とを有する。コントローラ５１は、ファイルサーバ又は計算機等の上位装置からのデータ書き込み／読み出しコマンドを制御するＩ／ＦであるＣＨＡ（channel adapter）５４と、ハードディスク５９に接続され、ハードディスク５９への書き込み／読み出しコマンドを制御するディスクＩ／ＦであるＤＫＡ（disk adapter）５６と、キャッシュメモリ５２と、共有メモリ５３と、ＳＷ５５と、内部ＬＡＮ５７と、管理端末６０とを有する。
【００２１】
キャッシュメモリ５２と共有メモリ５３は、ＣＨＡ５４とＤＫＡ５６が共有するメモリ装置である。共有メモリ５３は、主として制御情報やコマンド等を記憶するために利用される。キャッシュメモリ５２は、主としてデータを記憶するために利用される。
【００２２】
ＳＷ５５は、キャッシュメモリ５２、共有メモリ５３、ＣＨＡ５４、ＤＫＡ５６を相互に接続する。これらのキャッシュメモリ５２、共有メモリ５３、ＣＨＡ５４、ＤＫＡ５６相互間のコマンド又はデータの送受信はＳＷ５５を介して行われる。ＳＷ５５は、例えば高速スイッチングによりデータ伝送を行う１つ以上のスイッチ装置等で構成されるのが一般的である。ただし、ＳＷ５５は、１本以上の共通バスで構成しても良い。
【００２３】
ハードディスク搭載部５８は、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）を構成するハードディスク５９のグループを１つ以上持つ。このハードディスク５９のグループをＲＡＩＤグループ（ＲＡＩＤＧｒ．５７）と呼ぶ。（修正点１）ストレージ装置には、単一又は複数のＲＡＩＤＧｒ５７の記憶空間を合わせた論理ボリュームが設定されている。ストレージ装置は、上位装置に対し、記憶領域として論理ボリュームを提供する。上位装置は、この論理ボリュームに対するデータの書き込み／読み出しコマンドを発行する。
【００２４】
ＣＨＡ５４は、上位装置からのデータの書き込み／読み出しコマンドを受けた際、キャッシュメモリ５２との間のデータ転送を制御する。ＤＫＡ５６は、ハードディスク５９へのデータの書き込み／読出し時に、キャッシュメモリ５２との間のデータ転送を制御する。この時、ＤＫＡ５６は、ＣＨＡ５４から送信された論理アドレス指定によるデータアクセス要求を、物理アドレス指定によるデータアクセス要求に変換し、ハードディスク５９にデータの書き込み／読出しを行う。このようなキャッシュメモリ５２を介したＣＨＡ５４とＤＫＡ５６の間のデータのやり取りにより、上位装置からハードディスク５９へのデータの書き込み／読出しを行う。このような制御を行うため、ＣＨＡ５４及びＤＫＡ５６は、１つ以上のプロセッサ(図示していない)を有する。
【００２５】
ＣＨＡ５４、ＤＫＡ５６、管理端末６０は、内部ＬＡＮ５７を介して接続されている。さらに、ストレージ装置の外部に配置されるストレージ管理サーバ８は、ＬＡＮ６を介して内部ＬＡＮ５７に接続される。管理者は、不図示の入力装置を通じて管理端末６０を操作することにより、論理ボリューム、ＣＨＡ５４、ＤＫＡ５６の設定が可能である。
【００２６】
ここで、上述のコントローラ５１の構成は一実施例に過ぎず、構成を上記に限定するものではない。コントローラ５１は、計算機１１からのデータの書き込み／読み出し要求に応じてハードディスク５９へのデータの書き込み／読出しを行う機能を有していれば問題ない。
【００２７】
計算機管理サーバ７は、ＣＰＵ７１、メモリ７２、ジョブスケジューラ７３、ＩＰインターフェース７４を有する。ジョブスケジューラ７３は、メモリ７２の一部領域を用いてＣＰＵ７１により実行され、計算機１１が実行するジョブを管理する。
【００２８】
ストレージ管理サーバ８は、ＣＰＵ８１、メモリ８２、情報収集部８３、情報解析部８４、負荷管理部８５、ファイルシステム管理部８６、ＩＰインターフェース８７を有する。情報収集部８３、情報解析部８４、負荷管理部８５、ファイルシステム管理部８６は、メモリ８２の一部領域を用いてＣＰＵ８１で実行される。ストレージ管理サーバ８は、これらの機能を用いてファイルサーバ３の負荷分散を実行する。
【００２９】
図２に、計算機管理サーバ７及びストレージ管理サーバ８の機能を示す。計算機管理サーバ７のジョブスケジューラ７３は、計算機１１で実行するジョブ２１１を管理するジョブ管理部２０１、実行するまでの間ジョブを待機させておくキュー２１２、計算機で実行中のジョブを格納する実行キュー２１３、ジョブの情報（ジョブ情報）とジョブキューの情報（ジョブキュー情報）を管理する計算機管理部２２１を有する。計算機管理部２２１は、計算機に対してジョブの実行と終了の指示、ジョブの実行状態の監視、ジョブ実行結果の取得などの管理を行う。
【００３０】
キュー２１２内のジョブ２１１は、ジョブスケジューラ７３の管理に従い、ジョブの実行順に並んでいる。
【００３１】
ストレージ管理サーバ８は、情報収集部８３、情報解析部８４、負荷管理部８５及びファイルシステム管理部８６を有する。情報収集部８３は、ジョブスケジューラ７３からジョブ２１１の情報（ジョブ情報）、キュー２１２及び実行キュー２１３の情報（ジョブキュー情報）を収集し、情報解析部８４が収集した情報を解析する。
【００３２】
負荷管理部８５は、負荷分散を実行するタイミングを決定する負荷分散タイミング決定部２３１、一定時間後までの最大の負荷を予測する予測負荷作成部２３２、予測負荷を元に負荷分散を実行する負荷分散実行部２３３、ファイルサーバ管理テーブル２３４、負荷分散対象リスト２３５、負荷リスト２３６を有する。
【００３３】
ファイルシステム管理部８６は、ファイルサーバ３のファイルシステムを管理するためのファイルシステム管理テーブル２４１と、ファイルシステム移動部２４２とを有する。
【００３４】
負荷分散実行部２３３は、負荷集中が実際に生じる前に、ファイルシステム管理部８６に対してファイルシステムの移動を指示し、ファイルシステム移動部２４２がファイルサーバ間でファイルシステムを移動する。具体的には、負荷の高いファイルサーバが管理しているファイルシステムを、負荷の低いファイルサーバに移動する。これにより、予測に基づく負荷分散が実行される。ファイルシステムの具体的な移動方法については後述する。
【００３５】
図３に、計算機１１とファイルサーバ３の機能を示す。計算機１１は、ジョブスケジューラ７３から受信したジョブを実行するジョブ実行部３０３を有し、ジョブで指定された計算プログラム３０４を実行する。計算プログラム３０４は、ファイルサーバ３に対してファイルアクセスを行う。ファイルサーバ３は、ストレージ装置５が記憶領域として提供するボリューム３２１内のファイルシステム３２２を管理する。また、ファイルサーバ３は、受信したファイルアクセスをブロックアクセスに変換し、ファイルシステムにアクセスする。
【００３６】
図４に、予測負荷の作成の一例を示す。なお、以下の処理は、負荷管理部８５が実行する。例では、実行キュー２１３内のジョブ（JOB）#1,#2,#3が実行中であり、キュー２１２内のJOB#4,#5,#6,#7,#8が待機している。図に示すように、JOB#1からJOB#8は、それぞれファイルシステム（FS）#1からFS#8にアクセスする。NAS#1はFS#1,#4,#5,#6,#8を、NAS#2はFS#2,#3,#7,#9を、NAS#3はFS#10,#11を管理している。予測負荷４０３は、実行キュー２１３で待機するJOB#1,#2,#3と、予め定められた方法で算出された閾値s2 401よりもキュー２１２内の順番が小さいJOB#4,#5,#6が、それぞれのファイルシステムFS#1,#2,#3,#4,#5,#6に与える負荷を、NAS毎に合計したものである。
【００３７】
図のように、JOBがFS#1,#2,#3,#4,#5,#6に与える負荷４０５を、実行キュー２１３とキュー２１２におけるジョブ２１１の並びの順番に従い、負荷1,2,3,4,5,6と表す。NAS毎に計算された予測負荷４０３が、予め定めた負荷の閾値４０４よりも大きいとき、負荷管理部８５は、そのNASが高負荷であると判断する。図では、NAS#1の予測負荷４０３のみが負荷の閾値４０４よりも高くなっている。このとき、負荷管理部８５は、NAS#1が高負荷であると判断する。
【００３８】
図５に、ファイルシステム移動部８６が、ファイルサーバ間でファイルシステムを移動する際に使用する方法の一例を示す。例では、NAS#1 ５０１が、計算機１１に対してファイルサービスを提供している。また、計算機１１は、NFS共有５１１をディレクトリ５２１にNFSマウントしている。この場合、計算機１１は、ディレクトリ５２１にアクセスすることにより、あたかもボリューム３２１内のファイルシステム３２２が計算機１１内にあるかのようにファイルにアクセスすることができる。
【００３９】
ファイルシステムの移動は、次の４つの手順で行う。
（１）ファイルシステム移動部２４２が計算機１１に指示を出す。その指示に従って、計算機１１がNFS共有５１１をNFSアンマウントする。
（２）ファイルシステム移動部２４２がNAS#1 ５０１に指示を出す。その指示に従って、NAS#1 ５０１がNFS共有５１１を停止させ、その後、ファイルシステム３２２をファイルシステムアンマウントする。
（３）ファイルシステム移動部２４２がNAS#3 ５０２に指示を出す。その指示に従って、NAS#3 ５０２はファイルシステム３２２をファイルシステムマウントし、その後、NFS共有５１２を開始する。
（４）ファイルシステム移動部２４２が計算機１１に指示を出す。その指示に従って、計算機１１はNFS共有５１２をディレクトリ５２１にＮＦＳマウントする。
【００４０】
ファイルシステムの移動の結果、NAS#1の代わりにNAS#3がファイルシステム３２２を管理するようになり、計算機１１がディレクトリ５２１にアクセスしたときNAS#3がファイルサービスを提供する。
【００４１】
なお、上記の例の場合、手順（１）と手順（４）において、ファイルシステム移動部２４２が計算機１１に対してＮＦＳアンマウントとマウントするように直接指示を出している。しかし、ファイルシステム移動部２４２がＮＩＳ（Network Information Service）のようなネットワーク上のコンピュータ間で情報を共有するシステムに指示を出すことで、計算機１１のNFSアンマウントとマウントを制御する手法を採用しても良い。
【００４２】
図６に、図４で作成した予測負荷に基づく負荷分散実行動作の一例と予測負荷の変化を示す。負荷分散実行では図５に示す操作を行うが、その前にまず、ファイルシステムの移動元と移動先のファイルサーバと、対象のファイルシステムとを選択する。図４の場合には、NAS#1が高負荷と判断され、負荷６が負荷の閾値４０４を超えていた。
【００４３】
この場合、負荷分散におけるファイルシステムの移動元として、予測負荷が最も高いファイルサーバ、すなわち図６におけるNAS#1が選択される。
【００４４】
また、負荷分散の対象ファイルシステムとして、負荷の閾値４０４を超える負荷、すなわち図６における負荷６のファイルシステムFS#6が選択される。
【００４５】
さらに、ファイルシステムの移動先として、予測負荷の値が最も小さいファイルサーバ、すなわち図６におけるNAS#3が選択される。
【００４６】
次に、決定したファイルシステムの移動元と、移動先のファイルサーバと、対象のファイルシステムの情報に基づいて、図５に示すファイルシステムの移動操作に基づいてファイルシステムが実際に移動される。すなわち、図６の負荷分散は、図５に示した方法により、NAS#1のファイルシステムFS#6をNAS#3に移動することにより実現される。この操作は、負荷６に対応するJOB#6が実行に移るより前に予め実行される。このファイルシステムの移動により、負荷６はNAS#1からNAS#3に移る。このため、NAS#1の予測負荷は、負荷の閾値４０４よりも小さく抑えられる。結果として、ジョブ実行により動的に負荷が変化する場合においても、ジョブ実行前に予めファイルサーバ間で負荷分散を行うことができる。
【００４７】
負荷分散を常時実行することは、ファイルサーバへの負荷を発生させるために避けられるべきである。キュー２１２と実行キュー２１３で発生するイベントを監視し、イベント発生した時のみ負荷分散を実行することで、ファイルサーバへの負荷を減らすことができる。
【００４８】
負荷分散の実行タイミングを決定するために用いるキュー２１２と実行キュー２１３で発生するイベントを図７に示す。キュー２１２と実行キュー２１３内のジョブの状態を合わせてジョブ状態と呼ぶ。
【００４９】
初めに、ジョブ状態(t=t1)の時、実行キュー２１３にはJOB#2が１つだけあり、キュー２１２にはJOB#3,#4,#5,#6,#7がある。
【００５０】
ジョブ状態(t=t2)になると、JOB#3 ２１４がキュー２１２から実行キュー２１３に移動した。これはJOB#3 ２１５が計算機１１で実行開始したことを意味している。ジョブ状態(t=2)と(t=1)の変化から、ジョブ実行開始イベントを検出する。
【００５１】
ジョブ状態(t=t4)になると、ジョブ状態(t=t3)の時には存在したキュー２１２内のJOB#6 ２１６が消えている。これは、JOB#6がユーザによってキャンセルされ、スケジューラがJOB#6をキュー２１２から削除したことを意味している。ジョブ状態(t=2)と(t=1)の変化から、ジョブキャンセルイベントを検出する。
【００５２】
次に、ジョブ状態(t=t6)になると、ジョブ状態(t=t5)の時にはキュー２１３内に存在したJOB#2 ２１７が消えている。これは、JOB#2が実行終了したことを意味している。ジョブ状態(t=6)と(t=5)の変化から、ジョブ実行終了イベントを検出する。
【００５３】
ただし、負荷分散の実行タイミングは上述の方法に限定されない。例えば(1) イベントが予め設定した回数分発生する毎に負荷分散する、(2) イベントの発生による負荷の変化の合計が予め設定した値より大きくなる毎に負荷分散する、(3) 予め設定した時間毎に負荷分散する等の方法がある。
【００５４】
上述の負荷とは、ジョブがファイルシステムにアクセスすることでファイルサーバに与える負荷を意味する。例えばファイルのＲｅａd／Ｗｒｉｔｅの転送速度やＩＯＰＳ（Input Output Per Second）、又は、ＮＡＳのファイルサービスにおけるＣＰＵ利用率等を負荷として定義することができる。負荷管理部８５は、これらの値を負荷の大きさとして使用する。また、負荷の大きさを与える値は、負荷管理部８５内で管理されている負荷リスト１００３における負荷の大きさ１０２７に入力され、負荷分散処理に使用される。また、この定義以外にも、上記の値に重みをつけて足し合わせる等、何らかの方法で算出した値を負荷として定義することもできる。
【００５５】
各ファイルサーバには、負荷の上限となる負荷の閾値４０４を予め設定しておく。この負荷の閾値４０４は、ファイルサーバ管理テーブル１１０２の負荷の閾値１１２２に予め設定され、負荷分散処理に用いられる。
【００５６】
図８は、本発明のファイルサーバでの負荷分散の手順を示しており、負荷管理部８５が処理を実行する。まず、ステップ８０１で、負荷管理部８５は、ジョブスケジューラ７３からジョブ状態を収集する。次のステップ８０２で、負荷管理部８５は、ジョブ状態を解析し、イベントを検知する。イベント検知の方法は上述の通り図７に示した。
【００５７】
ステップ８０３において、負荷管理部８５は、発生したイベントが負荷分散対象イベントか否か判定する。なお、発生したイベントが、ジョブ実行開始、ジョブキャンセル、ジョブ実行終了イベントの場合、負荷管理部８５は、ステップ８０４に進む。それ以外の場合、負荷管理部８５は、ステップ８０１に戻る。
【００５８】
ステップ８０４では、負荷管理部８５は、負荷分散を実行する。以下、負荷分散の詳細内容を説明する。
【００５９】
まず、負荷管理部８５は、ステップ８１１において予測負荷を作成する。この手順については、図９で詳しく説明する。次に、負荷管理部８５は、ステップ８１２で負荷の閾値４０４を超える負荷を集めた負荷リスト１００１を作成する。負荷リスト１００１は負荷管理部８５内に存在し、負荷管理部８５が管理している。
【００６０】
続くステップ８１３で、負荷管理部８５は、この負荷リスト１００１からキューの順番１０１４≦閾値s1 ４０２となる負荷を削除する。この閾値s1の決定方法については、図１３にて詳しく説明する。次のステップ８１４で、負荷管理部８５は、負荷リスト１００１のサイズが１以上か否かを判定する。サイズが０だった場合、負荷管理部８５は、負荷分散処理を終了する。サイズが１以上だった場合、負荷管理部８５は、ステップ８１５に進む。
【００６１】
ステップ８１５で、負荷管理部８５は、負荷分散対象リスト１００１から、その中に記述されているマウント元のＮＡＳ１０１５の番号が一番小さい負荷分散対象１００２を選択する。一番小さい負荷分散対象１００２が複数ある場合、更に、キューの順番１０１４が一番小さい負荷分散対象１００２を選択する。ステップ８１６では、負荷分散のファイルシステム移動先として、予測負荷４０３の最も小さいNAS#bを選択する。
【００６２】
ステップ８１７において、負荷管理部８５は、ステップ８１５で選択した負荷分散対象１００２内に記述されたファイルシステム１０１３を負荷分散対象、ＮＡＳ（１０１５）をマウント元、NAS#bをマウント切り替え先として、ファイルシステム移動部２４２にマウント切り替え指示を出す。マウントの切り替えは、上述の通り図５に示した方法により、ファイルシステム管理部８６のファイルシステム移動部２４２が処理を実行する。ステップ８１７が終わると、負荷管理部８５は、ステップ８１１に戻る。
【００６３】
図９に、ステップ８１１における予測負荷４０３の作成手順を示す。この処理は、負荷管理部８５の予測負荷作成部２３２が実行する。まず、予測負荷作成部２３２は、ステップ９０１で負荷リスト１００３（図２の２３６）を初期化する。
【００６４】
次に、予測負荷作成部２３２は、ステップ９０２でジョブスケジューラ７３から各ジョブのジョブスクリプト１４０１を取得する。予測負荷作成部２３２は、ステップ９０３で、取得した各ジョブのジョブスクリプト１４０１のそれぞれを解析する。解析の結果として、予測負荷作成部２３２は、ジョブアクセス先ファイルシステムを判定する。また、予測負荷作成部２３２は、ファイルシステム管理テーブル１１０１を用いることにより、判定で得たファイルシステムからマウント元のＮＡＳを判定し、負荷リスト１００３に負荷データ１００４として追加する。
【００６５】
次のステップ９０４で、予測負荷作成部２３２は、負荷リスト１００３内の各負荷データ１００４のジョブＩＤ１０２２に対応するキュー２１２及び実行キュー２１３内の順番をジョブスケジューラ７３から取得し、負荷リスト１００３の実行キュー内の順番１０２５とキュー内の順番１０２４にそれぞれ入力する。
【００６６】
次のステップ９０５で、予測負荷作成部２３２は、負荷リスト１００３内の各負荷データ１００４のジョブＩＤ１０２２に対応する負荷の大きさを、負荷リスト１００３の負荷の大きさ１０２７に入力する。
【００６７】
次のステップ９０６で、予測負荷作成部２３２は、負荷リスト１００３からキュー内の順番１０２４≧閾値s2 ４０１となる負荷データ１００４を削除する。この閾値s2の決定方法については、図１３にて詳しく説明する。
【００６８】
次のステップ９０７で、予測負荷作成部２３２は、各ＮＡＳについて予測負荷４０３を０に初期化する。
【００６９】
最後のステップ９０８で、予測負荷作成部２３２は、各負荷データ１００４について、その中に記述されているマウント元のＮＡＳ１０２６に対応する予測負荷４０３に、負荷の大きさ１０２７に対応する負荷４０５を追加し、一連の処理を終了する。
【００７０】
ここで説明した予測負荷の作成は、作成する毎に負荷リスト１００３を初期化から作り直している。作り直すことで負荷予測を間違いなく作ることができるが、その過程で同じような処理が重複するために作成する効率は良くない。
【００７１】
特に、ファイルサーバ３で多数のファイルシステム３２２を管理している場合、作り直しのために予測負荷の作成に必要な処理量が増加してしまう。負荷の変化する頻度が高い場合は、予測負荷の作成が高い頻度で実行されるために、さらに多くの処理が必要となる。
【００７２】
これに対し、予測負荷を作り直す代わりに、予測負荷の変化分を更新することで効率的に作成する方法もある。例えばキュー２１２内のジョブが閾値s2よりも小さい順番になった時に、そのジョブに対応する負荷を予測負荷４０３に追加することで更新する。ジョブ実行終了イベント又はジョブキャンセルイベントが発生した場合、予測負荷作成部２３２は、予測負荷４０３から終了したジョブに対応する負荷を削除することで更新する。ただし、予測負荷の変化分を確実に更新する必要がある。
【００７３】
そのため、管理サーバ８が障害などで負荷予測の変化分を更新できない時があれば、負荷予測を初期化して作り直すことで対応する。この他、負荷予測を確実に作成するために、定期的に負荷予測を初期化して作り直す方法もある。
【００７４】
図１２に、閾値s1 ４０２を算出する手順を示す。この処理も負荷管理部８５が実行する。まず、ステップ１２０２でジョブ実行イベントが発生した時刻をサンプルとして集計する。
【００７５】
次に、ステップ１２０３で集計したジョブ実行イベントの発生時刻のサンプルに基づき、時間t1内に何個のジョブが実行するか確率Ｐ１を算出する。例えばサンプルが時刻tsから時刻teまでで発生しているとき、１個以下のジョブが実行する確率P1(1) は、以下のように算出する。まず、時刻tsから時刻teまで１分間隔の時刻t毎に、時刻tから時刻t+t1の間に１個以下のジョブが実行した回数をサンプルから数え上げる。次に、その回数を時刻tsから時刻teまで１分間隔の時刻tの回数で割り、確率P1(1) を算出する。このように、２個以下のジョブが実行する確率P1(2) 、３個以下のジョブが実行する確率P1(3) というように確率P1を算出していく。
【００７６】
算出方法は、集計したジョブ実行イベントの発生時刻のサンプルに基づき、時間t1内に何個のジョブが実行するか確率Ｐを算出できれば他の方法でも良い。例えば統計的にジョブ実行イベントが発生した時刻のサンプルからジョブが実行する確率Ｐ１の分布を推定し、その推定した分布から時間t1内にジョブが発生する確率を計算しても良い。
【００７７】
確率Ｐ１の一例を図１２のグラフ１２１０に示す。次に、ステップ１２０４で確率Ｐ1＞閾値Ｐth１となるキュー内の順番kで最大のものを算出する。図では、k=1である。ステップ１２０５で閾値s1にステップ１２０４で算出したkを設定する。閾値s1を設定することで、負荷分散の候補から順番k≦s1となるキュー２１２内のジョブの負荷を除外し、ファイルシステムの移動中にジョブ実行が開始しないようにしている。
【００７８】
そのため、時間t1はファイルシステムの移動に必要となる時間を設定する。例えばファイルサーバの仕様で決められたファイルシステムの移動時間の最大値や、これまでファイルシステムを移動したときの移動時間の最大値に数分のマージンを加えた値を設定する方法がある。
【００７９】
閾値P1thは、ファイルシステム移動中にジョブ実行が開始してしても良いと許容される確率を設定する。例えば閾値P1th=0.0001など十分小さい確率を設定する。この閾値s1のことを負荷分散選択閾値と呼ぶ。
【００８０】
図１３は、閾値s2 ４０１を算出する手順を示している。この処理も、負荷予測部８５が実行する。まず、ステップ１３０２でジョブ実行イベントが発生した時刻をサンプルとして集計する。
【００８１】
次に、ステップ１３０３で集計したジョブ実行イベントの発生時刻のサンプルに基づき、時間t2内に何個のジョブが実行するか確率Ｐ２を算出する。例えばサンプルが時刻tsから時刻teまでで発生しているとき、１個以下のジョブが実行する確率P2(1)は、時刻tsから時刻teまで１分間隔の時刻t毎に、時刻tから時刻t+t2の間に1個以下のジョブが実行した回数をサンプルから数え上げる。
【００８２】
そして、その回数を時刻tsから時刻teまで１分間隔の時刻tの回数で割ることで算出できる。この様に、２個以下のジョブが実行する確率P2(2)、３個以下のジョブが実行する確率P2(3)というように、確率Ｐ２を算出していく。
【００８３】
算出方法は、集計したジョブ実行イベントの発生時刻のサンプルに基づき、時間t2内に何個のジョブが実行するか確率Ｐ２を算出できれば他の方法でも良い。例えば統計的にジョブ実行イベントが発生した時刻のサンプルからジョブが実行する確率Ｐ２の分布を推定し、その推定した分布から時間t2内にジョブが発生する確率を計算しても良い。確率Ｐ２の一例を図１３のグラフ１３１０に示した。
【００８４】
次に、ステップ１３０４で確率Ｐ２＜閾値Ｐth2となるキュー内の順番kで最小のものを算出する。図では、k=5である。ステップ１３０５で閾値s2にステップ１３０４で算出したkを設定する。閾値s2を設定することで、順番k≦s2となるキュー２１２内のジョブはジョブ実行までの時間が長いと判断できる。
【００８５】
そして、予測負荷からそのジョブの負荷を除外することで、ジョブの実行予測負荷の精度を高めている。そのため、時間t2は予測負荷を算出に用いる時間範囲を設定する。同時に実行される可能性のあるジョブの負荷を集めることで予測負荷を算出するので、時間t2には、例えばこれまで実行されたジョブの中で最大の実行時間を設定する。
【００８６】
ジョブの最大実行時間がその時だけ異常に長く、あてにならないと考えられる場合は、ジョブの実行時間で例えば２番目に長い時間を設定しても良い。閾値s2は、予測負荷の算出に用いる時間の範囲を超えると予想されたジョブが予想に反して実行されても良いと許容される確率を設定する。例えば閾値P2=0.0001など十分小さい確率を設定する。この閾値s2のことを予測負荷除外閾値と呼び、時間t2のことを予測負荷対象時間と呼ぶ。
【００８７】
図１０に、負荷分散対象リスト１００１（図２の２３５）と負荷リスト１００３（図２の２３６）の構造の一例を示す。負荷分散対象リスト１００１は、負荷の管理番号１０１１、ジョブＩＤ１０１２、ジョブのアクセス先ファイルシステム１０１３、ジョブＩＤに対応するキュー内の順番１０１４、ファイルシステムのマウント元のＮＡＳ１０１５と負荷の大きさ１０１６から構成される。リストの行には、負荷分散対象１００２を入力する。負荷リスト１００３は、負荷の管理番号１０２１、ジョブＩＤ１０２２、ジョブのアクセス先ファイルシステム１０２３、ジョブＩＤに対応するキュー内の順番１０２４、ジョブＩＤに対応する実行キュー内の順番１０２５、ファイルシステムのマウント元のＮＡＳ１０２６とジョブＩＤに対応する負荷の大きさ１０２７から構成される。
【００８８】
図１１に、ファイルシステム管理テーブル１１０１（図２の２４１）とファイルサーバ管理テーブル１１０２（図２の２３４）の構造の一例を示す。ファイルシステム管理テーブル１１０１は、ファイルシステム名１１１１、計算機側でファイルシステムをＮＦＳマウントしているディレクトリ５２１に対応するディレクトリ名１１１２とマウント元のＮＡＳ１１１３から構成される。ファイルサーバ管理テーブル１１０２はＮＡＳ名１１２１と負荷の閾値１１２２から構成される。
【００８９】
図１４に、ジョブスクリプト１４０１の内容の一例を示す。ジョブスクリプト１４０１は、ジョブが用いるＣＰＵ数１４１１、ジョブの最大実行時間１４１２、ジョブが用いる最大のメモリ数１４１３、ジョブが入力データとして読み込む入力ファイル名１４１４、ジョブがデータを出力する先の出力ファイル名１４１５、ジョブが計算機１１で実行するプログラムの実行ファイル名１４１６を有する。
【符号の説明】
【００９０】
１    計算機システム
２    ＩＰスイッチ
３    ファイルサーバ
４    ＦＣスイッチ
５    ストレージ装置
６    ＬＡＮ
７    計算機管理サーバ
８    ストレージ管理サーバ
５１  コントローラ
５７  ＲＡＩＤＧｒ．
５８  ハードディスク搭載部
５９  ハードディスク
７３  ジョブスケジューラ
８３  情報収集部
８４  情報解析部
８５  負荷管理部
８６  ファイルシステム管理部
【図１】
0005415338.tif 000002
【図２】
0005415338.tif 000003
【図３】
0005415338.tif 000004
【図４】
0005415338.tif 000005
【図５】
0005415338.tif 000006
【図６】
0005415338.tif 000007
【図７】
0005415338.tif 000008
【図８】
0005415338.tif 000009
【図９】
0005415338.tif 000010
【図１０】
0005415338.tif 000011
【図１１】
0005415338.tif 000012
【図１２】
0005415338.tif 000013
【図１３】
0005415338.tif 000014
【図１４】
0005415338.tif 000015