(57)【要約】【課題】階層化されたストレージシステムにおいて、フロントエンドストレージの空き容量が枯渇しないように、他のフロントエンドストレージ及びバックエンドストレージへのデータ転送を制御する。【解決手段】複数のストレージ装置と、複数のストレージ装置と接続され、各ストレージ装置に格納される少なくとも一部のデータを格納する管理ストレージ装置と、データ転送を制御する転送制御部とを備えるストレージシステムであって、転送制御部は、各ストレージ装置の処理負荷を表す負荷情報を取得し、負荷情報に基づいてデータ転送が必要なストレージ装置を検索し、検索されたデータ転送が必要なストレージ装置の中から転送元のストレージ装置を選択し、管理ストレージ装置又は他のストレージ装置のいずれかを、転送元のストレージ装置に格納されたデータの転送先として選択し、選択された転送先に転送元のストレージ装置に格納されたデータを転送する。【選択図】図１
2012203434.tif 000002
【特許請求の範囲】
【請求項１】
複数のストレージ装置と、前記複数のストレージ装置と接続され、前記各ストレージ装置に格納される少なくとも一部のデータを格納する管理ストレージ装置と、前記各ストレージ装置及び前記管理ストレージ装置のデータ転送を制御する転送制御部とを備えるストレージシステムであって、
前記各ストレージ装置は、
第１のプロセッサ及び前記第１のプロセッサに接続される第１のメモリを含む第１のコントローラと、
前記第１のコントローラに接続される第１の記憶装置と、
前記第１のコントローラに接続され、外部装置と通信するための第１のインタフェースと、を有し、
前記管理ストレージ装置は、
第２のプロセッサ及び前記第２のプロセッサに接続される第２のメモリを含む第２のコントローラと、
前記第２のコントローラに接続される第２の記憶装置と、
前記第２のコントローラに接続され、外部装置と通信するための第２のインタフェースと、を有し、
前記転送制御部は、
前記各ストレージ装置の処理負荷を表す第１の負荷情報を取得し、
前記取得された第１の負荷情報に基づいて、データ転送が必要な前記ストレージ装置を検索し、
前記検索されたデータ転送が必要なストレージ装置の中から、転送元の前記ストレージ装置を選択し、
前記管理ストレージ装置又は他の前記ストレージ装置のいずれかを、前記転送元のストレージ装置に格納されたデータの転送先として選択し、
前記選択された転送先に、前記転送元のストレージ装置に格納されたデータを転送することを特徴とするストレージシステム。
【請求項２】
前記転送制御部は、
前記転送元のストレージ装置を選択する際に、前記第１の負荷情報に基づいて、最も処理負荷が高い前記ストレージ装置を選択し、
前記転送元のストレージ装置に格納されるデータの転送先を選択する際に、前記管理ストレージ装置の処理負荷を示す第２の負荷情報を取得し、前記他のストレージ装置の処理負荷を示す第３の負荷情報を取得し、
前記取得された第２の負荷情報に基づいて、前記管理ストレージ装置における処理負荷が所定の閾値以上であるか否かを判定し、
前記管理ストレージ装置の処理負荷が前記所定の閾値以上である場合には、前記第３の負荷情報に基づいて、処理負荷が最も小さい前記他のストレージ装置を転送先として選択し、
前記管理ストレージ装置の処理負荷が前記所定の閾値より小さい場合には、前記管理ストレージ装置を転送先として選択することを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記第１の負荷情報及び前記第３の負荷情報は、前記第１のプロセッサの使用状態、前記第１のメモリの使用状態、前記ネットワークの使用状態、転送待ちのデータ量、前記第１の記憶装置の空き容量、及び前記第１の記憶装置の使用容量の少なくともいずれかを含み、
前記第２の負荷情報は、前記第２のプロセッサの使用状態、前記第２のメモリの使用状態、及び前記ネットワークの使用状態の少なくともいずれかを含むことを特徴とする請求項２に記載のストレージシステム。
【請求項４】
前記第１の負荷情報及び前記第３の負荷情報に含まれる、前記第１のプロセッサの使用状態、前記第１のメモリの使用状態、前記ネットワークの使用状態、転送待ちのデータ量、前記第１の記憶装置の空き容量、及び前記第１の記憶装置の使用容量は、前記ストレージ装置へのアクセスの履歴から算出された予測値であることをあることを特徴とする請求項３に記載のストレージシステム。
【請求項５】
前記転送制御部は、転送先として選択可能な前記他のストレージ装置を示す選択情報を保持し、
前記選択情報に基づいて、前記他のストレージ装置から前記第３の負荷情報を取得することを特徴とする請求項２に記載のストレージシステム。
【請求項６】
前記複数のストレージ装置は、第１のデータを管理する第１のストレージ装置、第２のデータを管理する第２のストレージ装置、及び、第３のデータを管理する第３のストレージ装置を含み、
前記転送制御部は、
前記第１のストレージ装置を前記転送元のストレージ装置として、及び前記第２のストレージ装置を転送先の前記他のストレージ装置として選択した場合に、前記第１のストレージ装置が一以上の前記第２のデータを格納するか否かを判定し、
前記第１のストレージ装置が一以上の前記第２のデータを格納すると判定された場合、前記第２のデータを前記第２のストレージ装置に転送し、その後、前記第１のストレージ装置が一以上の前記第３のデータを格納するか否かを判定し、
前記第１のストレージ装置が一以上の前記第３のデータを格納すると判定された場合、前記第３のデータを前記第２のストレージ装置に転送し、その後、前記第１のストレージ装置に格納される前記第１のデータを転送することを特徴とする請求項１に記載のストレージシステム。
【請求項７】
複数の前記第１のデータ、複数の前記第２のデータ、及び複数の前記第３のデータを転送する場合に、アクセス日時及びデータ量の少なくともいずれかに基づいて、転送順を決定することを特徴とする請求項６に記載のストレージシステム。
【請求項８】
複数の前記第１のデータを転送する場合には、前記アクセス日時が古い前記第１のデータから順に転送し、
複数の前記第２のデータを転送する場合には、前記アクセス日時が新しい前記第２のデータから順に転送し、
複数の前記第３のデータを転送する場合には、前記データ量が小さい前記第３のデータから順に転送することを特徴とする請求項７に記載のストレージシステム。
【請求項９】
前記管理ストレージ装置又は前記複数のストレージ装置の少なくとも一以上が、前記転送制御部を有することを特徴とする請求項１に記載のストレージシステム。
【請求項１０】
複数のストレージ装置と、前記複数のストレージ装置と接続され、前記各ストレージ装置に格納される少なくとも一部のデータを格納する管理ストレージ装置と、前記各ストレージ装置及び前記管理ストレージ装置のデータ転送を制御する転送制御部とを備えるストレージシステムにおけるデータ転送制御方法であって、
前記各ストレージ装置は、第１のプロセッサ及び前記第１のプロセッサに接続される第１のメモリを含む第１のコントローラと、前記第１のコントローラに接続される第１の記憶装置と、前記第１のコントローラに接続され、外部装置と通信するための第１のインタフェースと、を有し、
前記管理ストレージ装置は、第２のプロセッサ及び前記第２のプロセッサに接続される第２のメモリを含む第２のコントローラと、前記第２のコントローラに接続される第２の記憶装置と、前記第２のコントローラに接続され、外部装置と通信するための第２のインタフェースと、を有し、
前記方法は、
前記転送制御部が、前記各ストレージ装置の処理負荷を表す第１の負荷情報を取得する第１のステップと、
前記転送制御部が、前記取得された第１の負荷情報に基づいて、データ転送が必要な前記ストレージ装置を検索する第２のステップと、
前記転送制御部が、前記検索されたデータ転送が必要なストレージ装置の中から、転送元の前記ストレージ装置を選択する第３のステップと、
前記転送制御部が、前記管理ストレージ装置又は他の前記ストレージ装置のいずれかを、前記転送元のストレージ装置に格納されたデータの転送先として選択する第４のステップと、
前記選択された転送先に、前記転送元のストレージ装置に格納されたデータを転送する第５のステップと、を含むことを特徴とするデータ転送制御方法。
【請求項１１】
前記第３のステップは、前記第１の負荷情報に基づいて、最も処理負荷が高い前記ストレージ装置を選択する第６のステップを含み、
前記第４のステップは、
前記管理ストレージ装置の処理負荷を示す第２の負荷情報を取得し、前記他のストレージ装置の処理負荷を示す第３の負荷情報を取得するステップと、
前記取得された第２の負荷情報に基づいて、前記管理ストレージ装置における処理負荷が所定の閾値以上であるか否かを判定するステップと、
前記管理ストレージ装置の処理負荷が前記所定の閾値以上である場合には、前記第３の負荷情報に基づいて、処理負荷が最も小さい前記他のストレージ装置を転送先として選択するステップと、
前記管理ストレージ装置の処理負荷が前記所定の閾値より小さい場合には、前記管理ストレージ装置を転送先として選択するステップと、を含むことを特徴とする請求項１０に記載のデータ転送制御方法。
【請求項１２】
前記第１の負荷情報及び前記第３の負荷情報は、前記第１のプロセッサの使用状態、前記第１のメモリの使用状態、前記ネットワークの使用状態、転送待ちのデータ量、前記第１の記憶装置の空き容量、及び前記第１の記憶装置の使用容量の少なくともいずれかを含み、
前記第２の負荷情報は、前記第２のプロセッサの使用状態、前記第２のメモリの使用状態、及び前記ネットワークの使用状態の少なくともいずれかを含むことを特徴とする請求項１１に記載のデータ転送制御方法。
【請求項１３】
前記第１の負荷情報及び前記第３の負荷情報に含まれる、前記第１のプロセッサの使用状態、前記第１のメモリの使用状態、前記ネットワークの使用状態、転送待ちのデータ量、前記第１の記憶装置の空き容量、及び前記第１の記憶装置の使用容量は、前記ストレージ装置へのアクセスの履歴から算出された予測値であることを特徴とする請求項１２に記載のデータ転送制御方法。
【請求項１４】
前記転送制御部は、転送先として選択可能な前記他のストレージ装置を示す選択情報を保持し、
前記第６のステップでは、前記転送制御部が、前記選択情報に基づいて、前記他のストレージ装置から前記第３の負荷情報を取得することを特徴とする請求項１１に記載のデータ転送制御方法。
【請求項１５】
前記複数のストレージ装置は、第１のデータを管理する第１のストレージ装置、第２のデータを管理する第２のストレージ装置、及び、第３のデータを管理する第３のストレージ装置を含み、
前記第５のステップは、前記第３のステップにおいて前記第１のストレージ装置が前記転送元のストレージ装置として選択され、前記第４のステップにおいて前記第２のストレージ装置が転送先の前記他のストレージ装置として選択された場合に、前記第１のストレージ装置が一以上の前記第２のデータを格納するか否かを判定する第１１のステップと、
前記第１のストレージ装置が一以上の前記第２データを格納すると判定された場合、前記第２のデータを前記第２のストレージ装置に転送し、その後、前記第１のストレージ装置が一以上の前記第３のデータを格納するか否かを判定する第１２のステップと、
前記第１のストレージ装置が一以上の前記第３のデータを格納すると判定された場合、前記第３のデータを前記第２のストレージ装置に転送し、その後、前記第１のストレージ装置に格納される前記第１のデータを転送する第１３のステップと、を含むことを特徴とする請求項１０に記載のデータ転送制御方法。
【請求項１６】
複数の前記第１のデータ、複数の前記第２のデータ、及び複数の前記第３のデータを転送する場合に、アクセス日時及びデータ量の少なくともいずれかに基づいて、転送順を決定することを特徴とする請求項１５に記載のデータ転送制御方法。
【請求項１７】
複数の前記第１のデータを転送する場合には、前記アクセス日時が古い前記第１のデータから順に転送し、
複数の前記第２のデータを転送する場合には、前記アクセス日時が新しい前記第２のデータから順に転送し、
複数の前記第３のデータを転送する場合には、前記データ量が小さい前記第３のデータから順に転送することを特徴とする請求項１６にデータ転送制御方法。
【請求項１８】
前記管理ストレージ装置又は前記ストレージ装置の少なくとも一以上が、前記転送制御部を有することを特徴とする請求項１０に記載のデータ転送制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム及びデータ転送制御方法に関し、特に、階層化されたストレージ構成におけるデータ転送に関する。
【背景技術】
【０００２】
近年のパーソナルコンピュータ利用の高度化、アプリケーションの大容量化によって、１台のストレージが扱うデータは増加し続けている。それに伴って、データ管理コストの増大、データ消滅の危険性の増大、及び記憶装置導入コストの増大などを招いている。
【０００３】
そのため、近年、各拠点や部門に設置されたストレージ(以下「フロントエンドストレージ」と記す)から、データセンターに設置されたストレージ(以下「バックエンドストレージ」と記す)に対してデータを転送し、データセンターにおいてデータを集中管理する階層ストレージ構成が普及しつつある。
【０００４】
従来技術としては、フロントエンドストレージに保存されたデータを、該フロントエンドストレージの空き容量が指定された値を下回らないように、ネットワークを介して接続されたバックエンドストレージに転送する方法が知られている（例えば、特許文献１参照）。これによって、フロントエンドストレージの空き容量が常に確保される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−３２８８２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１に記載の方法では、複数のフロントエンドストレージが存在するような構成において、バックエンドストレージの処理性能がボトルネックとなり、フロントエンドストレージの円滑なデータ転送が妨げられる、フロントエンドストレージの空き容量が枯渇する可能性があった。
【０００７】
従って、フロントエンドストレージの空き容量が枯渇しないように、ストレージ間のデータ転送を制御しなければならないという問題ある。本発明は前述の課題を解決するためになされたものである。
【課題を解決するための手段】
【０００８】
本発明の代表的な一例を示せば以下の通りである。すなわち、複数のストレージ装置と、前記複数のストレージ装置と接続され、前記各ストレージ装置に格納される少なくとも一部のデータを格納する管理ストレージ装置と、前記各ストレージ装置及び前記管理ストレージ装置のデータ転送を制御する転送制御部とを備えるストレージシステムであって、前記各ストレージ装置は、第１のプロセッサ及び前記第１のプロセッサに接続される第１のメモリを含む第１のコントローラと、前記第１のコントローラに接続される第１の記憶装置と、前記第１のコントローラに接続され、外部装置と通信するための第１のインタフェースと、を有し、前記管理ストレージ装置は、第２のプロセッサ及び前記第２のプロセッサに接続される第２のメモリを含む第２のコントローラと、前記第２のコントローラに接続される第２の記憶装置と、前記第２のコントローラに接続され、外部装置と通信するための第２のインタフェースと、を有し、前記転送制御部は、前記各ストレージ装置の処理負荷を表す第１の負荷情報を取得し、前記取得された第１の負荷情報に基づいて、データ転送が必要な前記ストレージ装置を検索し、前記検索されたデータ転送が必要なストレージ装置の中から、転送元の前記ストレージ装置を選択し、前記管理ストレージ装置又は他の前記ストレージ装置のいずれかを、前記転送元のストレージ装置に格納されたデータの転送先として選択し、前記選択された転送先に、前記転送元のストレージ装置に格納されたデータを転送することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、管理ストレージ装置における負荷を平準化し、ストレージ装置間の円滑なデータ転送が可能となる。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１の実施形態におけるストレージシステムの構成例を示す説明図である。
【図２】本発明の第１の実施形態におけるバックエンドストレージのソフトウェア及びハードウェア構成を示すブロック図である。
【図３】発明の第１の実施形態におけるフロントエンドストレージのソフトウェア及びハードウェア構成を示すブロック図である。
【図４】本発明の第１の実施形態における宛先リストの一例を示す説明図である。
【図５】本発明の第１の実施形態におけるストレージリストの一例を示す説明図である。
【図６】本発明の第１の実施形態における所有データリストの一例を示す説明図である。
【図７】本発明の第１の実施形態における格納先リストの一例を示す説明図である。
【図８】本発明の第１の実施形態におけるデータ転送の制御処理を説明するフローチャートである。
【図９】本発明の第１の実施形態におけるストレージリストの作成処理を説明するフローチャートである。
【図１０Ａ】本発明の第１の実施形態におけるデータ転送の制御処理を説明するフローチャートである。
【図１０Ｂ】本発明の第１の実施形態におけるデータ転送の制御処理を説明するフローチャートである。
【図１１】本発明の第１の実施形態におけるデータ転送処理を説明するフローチャートである。
【図１２】本発明の第１の実施形態におけるデータ転送処理を説明するフローチャートである。
【図１３】本発明の第２の実施形態におけるフロントエンドストレージのソフトウェア及びハードウェア構成を示すブロック図である。
【図１４】本発明の第２の実施形態における交友リストの一例を示す説明図である。
【図１５】本発明の第２の実施形態におけるデータ転送の制御処理を説明するフローチャートである。
【図１６】本発明の第２の実施形態におけるフロントエンドストレージへのデータ転送処理を説明するフローチャートである。
【図１７】本発明の第２の実施形態におけるバックエンドエンドストレージへのデータ転送処理を説明するフローチャートである。
【図１８】本発明の第３の実施形態におけるストレージシステムの構成例を示す説明図である。
【図１９】本発明の第３の実施形態におけるバックエンドストレージのソフトウェア及びハードウェア構成を示すブロック図である。
【図２０】本発明の第３の実施形態におけるフロントエンドストレージのソフトウェア及びハードウェア構成を示すブロック図である。
【図２１】本発明の第３の実施形態におけるログインリストの一例を示す説明図である。
【図２２】本発明の第３の実施形態における期待値リストの一例を示す説明図である。
【図２３】本発明の第３の実施形態におけるアクセス履歴リストの一例を示す説明図である。
【図２４】本発明の第３の実施形態におけるデータ保存位置リストの一例を示す説明図である。
【図２５】本発明の第３の実施形態における予測値リストの一例を示す説明図である。
【図２６】本発明の第３の実施形態におけるデータ転送の制御処理を説明するフローチャートである。
【図２７】本発明の第３の実施形態における予測値リスト作成処理を説明するフローチャートである。
【図２８】本発明の第３の実施形態における情報収集処理を説明するフローチャートである。
【図２９】本発明の第３の実施形態におけるアクセス量の予測処理を説明するフローチャートである。
【図３０】本発明の第３の実施形態におけるフロントヒット率の予測処理を説明するフローチャートである。
【図３１Ａ】本発明の第３の実施形態におけるデータ転送の制御処理を説明するフローチャートである。
【図３１Ｂ】本発明の第３の実施形態におけるデータ転送の制御処理を説明するフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について、図面を用いて説明する。
【００１２】
［第１の実施形態］
第１の実施形態では、現在の各フロントストレージの情報に基づいて、バックエンドストレージがデータ転送を制御する。
【００１３】
図１は、本発明の第１の実施形態におけるストレージシステムの構成例を示す説明図である。
【００１４】
第１の実施形態におけるストレージシステムは、ネットワーク５００、バックエンドストレージ１０００、及び複数のフロントエンドストレージ２０００から構成される。図１では、フロントエンドストレージＡ〜Ｄがネットワーク５００を介してバックエンドストレージ１０００に接続されたストレージシステムの構成を表す。
【００１５】
なお、以後、フロントエンドストレージ２０００及びバックエンドストレージ１０００を区別しない場合には、ストレージと記載する。
【００１６】
各ストレージは、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ（ＨＤＤ）、Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ（ＮＡＳ）、又はファイルサーバであってもよい。
【００１７】
各フロントエンドストレージ２０００は、ネットワーク５００を介して、他のフロントエンドストレージ２０００、及びバックエンドストレージ１０００と接続される。
【００１８】
なお、ネットワーク５００は、ＷＡＮ、ＬＡＮ又はＳＡＮ等どのようなネットワークであってもよい。
【００１９】
図１では、ネットワークを介して各ストレージが接続された構成となっているが、本発明はこれに限定されない。例えば、計算機又はストレージ内に複数の記憶装置（例えば、ＨＤＤ及びＳＳＤ等）を備える構成にも本発明を適用できる。
【００２０】
図２は、本発明の第１の実施形態におけるバックエンドストレージ１０００のソフトウェア構成及びハードウェア構成を示すブロック図である。
【００２１】
バックエンドストレージ１０００は、コントローラ１１００及びディスクドライブ１２００を備え、各構成は内部的な通信路によって接続される。
【００２２】
ディスクドライブ１２００は、フロントエンドストレージ２０００から転送されたデータ、及び、当該バックエンドストレージ１０００が使用するプログラム又はデータを格納する。なお、バックエンドストレージ１０００は、データを格納できればよく、ディスクドライブ１２００以外の記憶装置を備えてもよい。
【００２３】
コントローラ１１００は、バックエンドストレージ１０００を制御し、さらに、ストレージ間のデータ転送を制御する。コントローラ１１００は、ストレージインタフェース１１１０、メモリ１１２０、及びＣＰＵ１１３０を備え、各構成は内部的な通信路によって互いに接続される。
【００２４】
ＣＰＵ１１３０は、メモリ１１２０に格納されたプログラムを読み出し、読み出されたプログラムを実行する。
【００２５】
ストレージインタフェース１１１０は、ネットワークを介して他の装置と接続する。
【００２６】
メモリ１１２０は、ＣＰＵ１１３０によって実行されるプログラム及び当該プログラムの実行に必要な情報を格納する。メモリ１１２０は、データ転送制御プログラム１１２１、宛先リスト作成プログラム１１２２、ストレージリスト作成プログラム１１２３及びデータ送受信プログラム１１２４を格納する。また、メモリ１１２０は、宛先リストＴ１００及びストレージリストＴ２００を格納する。
【００２７】
以後、プログラムを主語にして処理を記載する場合には、ＣＰＵ１１３０がメモリ１１２０からプログラムを読み出して実行することによって、所定の処理を実行することを示す。
【００２８】
データ転送制御プログラム１１２１は、ストレージリストＴ２００に基づいて、各ストレージ間のデータ転送を制御する。
【００２９】
宛先リスト作成プログラム１１２２は、各フロントエンドストレージ２０００と通信することによって、宛先リストＴ１００を作成する。
【００３０】
ストレージリスト作成プログラム１１２３は、各フロントエンドストレージ２０００から取得された情報に基づいて、ストレージリストＴ２００を作成する。
【００３１】
データ送受信プログラム１１２４は、フロントエンドストレージ２０００との間のデータ送受信処理を制御する。
【００３２】
各プログラムによって実現される処理の詳細についてはフローチャートを用いて後述する。
【００３３】
宛先リストＴ１００は、バックエンドストレージ１０００に接続されるフロントエンドストレージ２０００の位置を特定するための情報を格納する。バックエンドストレージ１０００は、宛先リストＴ１００を参照することによって接続されるフロントエンドストレージ２０００の位置を把握することができる。宛先リストＴ１００の詳細については、図４を用いて後述する。
【００３４】
ストレージリストＴ２００は、フロントエンドストレージ２０００の使用状態、及び、フロントエンドストレージ２０００におけるデータ転送の開始基準等の情報を格納する。バックエンドストレージ１０００は、ストレージリストＴ２００を参照して、フロントエンドストレージ２０００におけるデータ転送の開始を判定する。ストレージリストＴ２００の詳細については、図５を用いて後述する。
【００３５】
なお、宛先リストＴ１００及びストレージリストＴ２００は、ディスクドライブ１２００に格納されていてもよい。この場合、所定の処理の実行時にＣＰＵ１１３０によって、ディスクドライブ１２００からメモリ１１２０に読み出される。
【００３６】
なお、本実施形態では、バックエンドストレージ１０００が、前述した各プログラムを備えるものとして説明しているが、図示しないネットワークスイッチ又は管理サーバなど、他の装置が前述した各プログラムを備えてもよい。
【００３７】
図３は、本発明の第１の実施形態におけるフロントエンドストレージ２０００のソフトウェア構成及びハードウェア構成を示すブロック図である。
【００３８】
フロントエンドストレージ２０００は、コントローラ２１００及びディスクドライブ２２００を備え、各構成は内部的な通信路によって互いに接続される。
【００３９】
ディスクドライブ２２００は、各種データを格納する。例えば、フロントエンドストレージ２０００自身が使用するプログラム又はデータ、及び他のフロントエンドストレージ２０００から転送されたデータ等が格納される。
【００４０】
なお、フロントエンドストレージ２０００は、データを格納できればよく、ディスクドライブ１２００以外の記憶装置を備えてもよい。
【００４１】
コントローラ２１００は、フロントエンドストレージ２０００を制御する。コントローラ２１００は、ストレージインタフェース２１１０、メモリ２１２０、及びＣＰＵ２１４０を備え、各構成は内部的な通信路によって互いに接続される。
【００４２】
ＣＰＵ２１４０は、メモリ２１２０に格納されたプログラムを読み出し、読み出されたプログラムを実行する。
【００４３】
ストレージインタフェース２１１０は、ネットワークを介して他の装置と接続する。
【００４４】
メモリ２１２０は、ＣＰＵ２１４０によって実行されるプログラム及び当該プログラムの実行に必要な情報を格納する。メモリ２１２０は、データ送受信制御プログラム２１２１、データ管理プログラム２１２２、データリスト作成プログラム２１２３、及びデータ送受信制御プログラム２１２４を格納する。また、メモリ２１２０は、所有データリストＴ３００及び格納先リストＴ３５０を格納する。
【００４５】
データ送受信制御プログラム２１２１は、所有データリストＴ３００に基づいて、フロントエンドストレージ２０００間のデータ転送を制御する。
【００４６】
データ管理プログラム２１２２は、各フロントエンドストレージ２０００に格納されるデータを管理する。
【００４７】
データリスト作成プログラム２１２３は、データ管理プログラム２１２２が管理する情報に基づいて、所有データリストＴ３００を作成する。
【００４８】
データ送受信制御プログラム２１２４は、他のフロントエンドストレージ２０００及びバックエンドストレージ１０００とのデータ送受信を制御する。
【００４９】
各プログラムによって実現される処理の詳細については、フローチャートを用いて後述する。
【００５０】
所有データリストＴ３００は、ストレージシステムにおけるデータの管理情報を格納する。所有データリストＴ３００の詳細については、図６を用いて後述する。
【００５１】
格納先リストＴ３５０は、ストレージシステムにおけるデータの格納場所を示す情報を格納する。格納先リストＴ３５０の詳細については、図７を用いて後述する。
【００５２】
なお、本実施形態では、フロントエンドストレージ２０００が、前述した各プログラムを備えるものとして説明しているが、図示しないネットワークスイッチ又は管理サーバなど、他の装置が備えていてもよい。
【００５３】
図４は、本発明の第１の実施形態における宛先リストＴ１００の一例を示す説明図である。
【００５４】
宛先リストＴ１００は、宛先リスト作成プログラム１１２２によって作成されリストであり、バックエンドストレージ１０００に接続される全フロントエンドストレージ２０００の接続位置を特定する情報を格納する。
【００５５】
宛先リストＴ１００は、ストレージ名Ｔ１０１及びＩＰアドレスＴ１０２を含む。ストレージ名Ｔ１０１は、バックエンドストレージ１０００に接続されるフロントエンドストレージ２０００の識別子を格納する。ＩＰアドレスＴ１０２は、フロントエンドストレージ２０００に割り当てられるＩＰアドレスを格納する。
【００５６】
図５は、本発明の第１の実施形態におけるストレージリストＴ２００の一例を示す説明図である。
【００５７】
ストレージリストＴ２００は、ストレージリスト作成プログラム１１２３によって作成されるリストであり、フロントエンドストレージ２０００の使用状態に関する情報を格納する。
【００５８】
ストレージリストＴ２００は、ストレージ名Ｔ２０１、最大容量Ｔ２０２、使用容量Ｔ２０３、空き容量Ｔ２０４、転送開始基準値Ｔ２０５及び未転送容量Ｔ２０６を含む。
【００５９】
ストレージ名Ｔ２０１は、フロントエンドストレージ２０００の識別子を格納する。
【００６０】
最大容量Ｔ２０２は、ストレージ名Ｔ２０１に対応するフロントエンドストレージ２０００に格納可能な容量の最大値を格納する。
【００６１】
使用容量Ｔ２０３は、ストレージ名Ｔ２０１に対応するフロントエンドストレージ２００に、現時点において使用されている容量を格納する。すなわち、実際に使用されている記憶領域の容量を表す値が格納される。
【００６２】
空き容量Ｔ２０４は、ストレージ名Ｔ２０１に対応するフロントエンドストレージ２０００の現時点における使用可能な空き容量を格納する。
【００６３】
転送開始基準値Ｔ２０５は、ストレージ名Ｔ２０１に対応するフロントエンドストレージ２０００において、データ転送を開始するか否かを判定するための基準値を格納する。
【００６４】
本実施形態では、使用容量Ｔ２０３の値が転送開始基準値Ｔ２０５の値より大きくなった場合に、データ転送が開始される。なお、転送開始基準値Ｔ２０５は、ユーザが任意に設定可能な閾値である。
【００６５】
未転送データ量Ｔ２０６は、バックエンドストレージ１０００又は他のフロントエンドストレージ２０００に転送される予定のデータのデータ量を格納する。未転送データ量Ｔ２０６は、例えば、使用容量Ｔ２０３から転送開始基準値Ｔ２０５を減算することによって算出することができる。なお、前述した計算式の結果がマイナスになる場合には「０」が格納される。
【００６６】
図５に示す例では、使用容量Ｔ２０３、空き容量Ｔ２０４、転送開始基準値Ｔ２０５及び未転送データ量Ｔ２０６には、絶対値が格納されているが、最大容量に対する割合等を用いてもよい。
【００６７】
なお、バックエンドストレージ１０００は、宛先リストＴ１００及びストレージリストＴ２００を連結して一つのリストとして保持してもよい。
【００６８】
図６は、本発明の第１の実施形態における所有データリストＴ３００の一例を示す説明図である。
【００６９】
所有データリストＴ３００は、データリスト作成プログラム２１２３によって作成されるリストであり、フロントエンドストレージ２０００に格納されるデータの管理情報を格納する。
【００７０】
所有データリストＴ３００は、データ名Ｔ３０１、データ量Ｔ３０２、所属先Ｔ３０３及び最終アクセス日時Ｔ３０４を含む。
【００７１】
データ名Ｔ３０１は、フロントエンドストレージ２０００に格納されるデータを一意に識別するための識別子を格納する。
【００７２】
データ量Ｔ３０２は、データ名Ｔ３０１に対応するデータのデータ量を格納する。
【００７３】
所属先Ｔ３０３は、データ名Ｔ３０１に対応するデータを最初に作成し、さらに、格納していたフロントエンドストレージ２０００の識別子を格納する。
【００７４】
例えば、所属先Ｔ３０３に「フロントエンドストレージＢ」が格納されている場合、当該データは、フロントエンドストレージＢによって作成され、さらにフロントエンドストレージＢに格納されていたデータであることを示す。
【００７５】
図６では、フロントエンドストレージＡにおける所有データリストＴ３００を示している。データＡ及びデータＢは、フロントエンドストレージＡにおいて作成され、また保存されていたため、所属先Ｔ３０３に「フロントエンドストレージＡ」が格納される。一方、データＣは、フロントエンドストレージＢにおいて作成され、また保存されていたため、所属先Ｔ３０３に「フロントエンドストレージＢ」が格納される。
【００７６】
図７は、本発明の第１の実施形態における格納先リストＴ３５０の一例を示す説明図である。
【００７７】
格納先リストＴ３５０は、データリスト作成プログラム２１２３によって作成されるリストであり、ストレージシステムが管理する全データの格納先を管理する情報を格納する。
【００７８】
データリスト作成プログラム２１２３は、フロントエンドストレージ２０００及びバックエンドストレージ１０００に問い合わせて、各ストレージが格納するデータの情報を取得し、取得された情報に基づいて格納先リストＴ３５０を作成する。
【００７９】
格納先リストＴ３５０は、データ名Ｔ３５１及び格納先Ｔ３５２を含む。
【００８０】
データ名Ｔ３５１は、ストレージシステムが管理するデータを一意に識別する識別子を格納する。
【００８１】
格納先Ｔ３５２は、データ名Ｔ３５１に対応するデータが実際に格納されるストレージの識別子を格納する。
【００８２】
図７に示す例では、データＡは「フロントエンドストレージＡ」に格納され、データＢは「バックエンドストレージ」に格納され、また、データＣは「フロントエンドストレージＢ」に格納される。フロントエンドストレージ２０００は、格納先リストＴ３５０に基づいて、要求されたデータの格納先を特定することができる。
【００８３】
フロントエンドストレージ２０００は、利用者から所定のデータのアクセス要求を受け付けた場合、以下のような処理を実行する。
【００８４】
まず、フロントエンドストレージ２０００は、アクセス要求を解析して、アクセス対象となるデータを特定する。次にフロントエンドストレージ２０００は、格納先リストＴ３５０を参照して、アクセス対象のデータが格納されるストレージを特定する。
【００８５】
他のストレージに格納される場合には、フロントエンドストレージ２０００は、他のストレージからデータを取得して利用者に応答する。自ストレージに格納される場合には、フロントエンドストレージ２０００は、自身の記憶領域からデータを読み出して、利用者に応答する。
【００８６】
図８は、本発明の第１の実施形態におけるデータ転送の制御処理Ｓ１００を説明するフローチャートである。
【００８７】
データ転送の制御処理Ｓ１００では、バックエンドストレージ１０００が、フロントエンドストレージ２０００と連携して処理を実行する。以下、図８に沿って各処理について説明する。
【００８８】
バックエンドストレージ１０００は、以下で説明する処理を周期的に実行してもよいし、ストレージシステムの管理者からの指示に基づいて実行してもよい。
【００８９】
まず、バックエンドストレージ１０００は、ストレージリストの作成処理Ｓ２００を実行して、ストレージリストＴ２００を作成する（ステップＳ１０１）。
【００９０】
具体的には、ストレージリスト作成プログラム１１２３が、ストレージリストの作成処理Ｓ２００を実行して、ストレージリストＴ２００を作成し、作成されたストレージリストＴ２００をメモリ１１２０又はディスクドライブ１２００に格納する。
【００９１】
なお、ストレージリストの作成処理Ｓ２００の詳細は、図９を用いて後述する。
【００９２】
次に、バックエンドストレージ１０００は、各フロントエンドストレージ２０００に所有データリストＴ３００の更新を指示する（ステップＳ１０２）。
【００９３】
具体的には、データ送受信プログラム１１２４が、宛先リストＴ１００を参照して、各フロントエンドストレージ２０００にデータリストＴ３００の更新を指示する。当該指示を受信したフロントエンドストレージ２０００は、データリスト作成プログラム２１２３を呼び出して以下の処理を実行する。
【００９４】
データリスト作成プログラム２１２３は、データ管理プログラム２１２２に対して、現時点においてフロントエンドストレージ２０００に格納されるデータの情報を問い合わせる。データ管理プログラム２１２２は、当該問い合わせに対する応答を返信する。
【００９５】
データリスト作成プログラム２１２３は、当該応答に基づいて、データ名Ｔ３０１、データ量Ｔ３０２及び所属先Ｔ３０３をマージして所有データリストＴ３００を更新する。なお、更新された所有データリストＴ３００は、メモリ２１２０又はディスクドライブ２２００に格納される。
【００９６】
所有データリストＴ３００が更新され後、データ送受信制御プログラム２１２４が、バックエンドストレージ１０００に対して、更新処理が終了した旨を通知する。
【００９７】
次に、バックエンドストレージ１０００は、作成されたストレージリストＴ２００を参照して、データ転送が必要なフロントエンドストレージ２０００が存在するか否かを判定する（ステップＳ１０３）。すなわち、データ転送が必要なフロントエンドストレージ２０００の検索処理が実行される。
【００９８】
具体的には、データ転送制御プログラム１１２１が、ストレージリストＴ２００を参照して、未転送データ量Ｔ２０６が「０」でないフロントエンドストレージ２０００が存在するか否かを判定する。未転送データ量Ｔ２０６が「０」でないフロントエンドストレージ２０００が存在する場合には、データ転送が必要なフロントエンドストレージ２０００が存在すると判定される。
【００９９】
なお、ステップＳ１０３における判定方法は前述したものに限定されない。例えば、データ転送制御プログラム１１２１が、ストレージリストＴ２００の空き容量Ｔ２０４を参照して、空き容量Ｔ２０４が予め設定された閾値以下のフロントエンドストレージ２０００が存在するか否かを判定する。なお、予め設定された閾値は、管理者によって設定された値であってもよいし、バックエンドストレージ１０００が自動的に設定した値であってもよい。
【０１００】
空き容量Ｔ２０４が予め設定された閾値以下のフロントエンドストレージ２０００が存在する場合には、データ転送が必要なフロントエンドストレージ２０００が存在すると判定される。
【０１０１】
また、ステップＳ１０３における判定方法は、使用容量Ｔ２０３に基づいた判定処理であってもよい。また、フロントエンドストレージ２０００から、ＣＰＵ使用率、メモリ使用率、ネットワーク使用率等を取得し、ＣＰＵ使用率、メモリ使用率、及びネットワーク使用率等に基づいた判定処理であってもよい。
【０１０２】
すなわち、ステップＳ１０３では、フロントエンドストレージ２０００の性能低下を示す負荷情報に基づいて判定できればよい。
【０１０３】
データ転送が必要なフロントエンドストレージ２０００が存在しないと判定された場合、バックエンドストレージ１０００は、処理を終了する。
【０１０４】
データ転送が必要なフロントエンドストレージ２０００が存在すると判定された場合、バックエンドストレージ１０００は、全フロントエンドストレージ２０００にデータ転送の終了を指示する（ステップＳ１０４）。
【０１０５】
具体的には、データ転送制御プログラム１１２１が、ストレージリストＴ２００を参照して、当該リストに対応する全てのフロントエンドストレージ２０００に対して、現在実行中のデータ転送を終了するように指示する。
【０１０６】
各フロントエンドストレージ２０００のデータ送受信制御プログラム２１２１は、当該指示を受信すると、現在実行中のデータ転送を終了する。
【０１０７】
バックエンドストレージ１０００は、データ転送の制御処理Ｓ３００を実行し、所定のフロントエンドストレージ２０００にデータ転送の開始を指示する（ステップＳ１０５）。
【０１０８】
具体的には、データ転送制御プログラム１１２１が、データ転送の制御処理Ｓ３００を実行して、所定のフロントエンドストレージ２０００にデータ転送の開始を指示する。
【０１０９】
当該指示を受信したフロントエンドストレージ２０００は、受信した指示に従ってデータ転送を開始する。
【０１１０】
なお、データ転送の制御処理Ｓ３００の詳細は、図１０を用いて後述する。
【０１１１】
バックエンドストレージ１０００は、フロントエンドストレージ２０００におけるデータ転送の完了を待って（ステップＳ１０６）、ステップＳ１０１に戻り同様の処理を実行する。
【０１１２】
データ転送の完了を確認する方法としては、管理者によって予め設定された任意時間経過するのを待つ方法、フロントエンドストレージ２０００からデータ転送の完了通知を受信する方法など様々考えられる。本発明はこれに限定されずどのような方法を用いてもよい。
【０１１３】
データ転送の完了を待つことによって、当該フローチャートで説明した処理が連続して何度も実行されないようにできる。
【０１１４】
図９は、本発明の第１の実施形態におけるストレージリストの作成処理Ｓ２００を説明するフローチャートである。
【０１１５】
ストレージリストの作成処理Ｓ２００では、バックエンドストレージ１０００が、フロントエンドストレージ２０００と連携して処理を実行する。以下、図９に沿って各処理について説明する。
【０１１６】
バックエンドストレージ１０００は、宛先リストＴ１００を参照して、選択されていないフロントエンドストレージ２０００があるか否かを判定する（ステップＳ２０１）。すなわち、処理が実行されていないフロントエンドストレージ２０００があるか否かが判定される。
【０１１７】
具体的には、ストレージリスト作成プログラム１１２３が、宛先リストＴ１００を参照して、選択されていないフロントエンドストレージ２０００があるか否かを判定する。
【０１１８】
例えば、処理されたフロントエンドストレージ２０００の識別子をキャッシュとして保持しておき、当該キャッシュに基づいて宛先リストＴ１００を参照することによって、当該判定を実行する方法が考えられる。
【０１１９】
選択されていないフロントエンドストレージ２０００がないと判定された場合、バックエンドストレージ１０００は、ステップＳ２０５に進む。
【０１２０】
選択されていないフロントエンドストレージ２０００があると判定された場合、バックエンドストレージ１０００は、選択されていないフロントエンドストレージ２０００を一つ選択する（ステップＳ２０２）。
【０１２１】
具体的には、ストレージリスト作成プログラム１１２３が、宛先リストＴ１００の中から選択されていないフロントエンドストレージ２０００を一つ選択する。
【０１２２】
次に、バックエンドストレージ１０００は、選択されたフロントエンドストレージに対して、ストレージリストＴ２００を作成するために必要な情報の送信を指示する（ステップＳ２０３）。
【０１２３】
具体的には、ストレージリスト作成プログラム１１２３が、選択されたフロントエンドストレージ２０００に対して、ストレージリストＴ２００を作成するために必要な情報の送信を指示する。
【０１２４】
ここで、ストレージリストＴ２００を作成するために必要な情報とは、ストレージ名Ｔ２０１、最大容量Ｔ２０２、使用容量Ｔ２０３、空き容量Ｔ２０４、転送開始基準値Ｔ２０５及び未転送データ量Ｔ２０６のことを表す。
【０１２５】
当該指示を受信したフロントエンドストレージ２０００のデータ管理プログラム２１２２は、ストレージリストＴ２００を作成するために必要な情報をバックエンドストレージ１０００に送信する。
【０１２６】
バックエンドストレージ１０００は、選択されたフロントエンドストレージ２０００から必要な情報を受信し（ステップＳ２０４）、ステップＳ２０１に戻り同様の処理を実行する。
【０１２７】
ステップＳ２０１において、選択されていないフロントエンドストレージ２０００がないと判定された場合、バックエンドストレージ１０００は、各フロントエンドストレージ２０００から取得された情報に基づいて、ストレージリストＴ２００を作成し、処理を終了する（ステップＳ２０５）。
【０１２８】
具体的には、ストレージリスト作成プログラム１１２３が、各フロントエンドストレージ２０００から受信した情報に基づいて、ストレージリストＴ２００を作成する。
【０１２９】
図１０Ａ及び図１０Ｂは、本発明の第１の実施形態におけるデータ転送の制御処理Ｓ３００を説明するフローチャートである。
【０１３０】
データ転送の制御処理Ｓ３００では、バックエンドストレージ１０００がフロントエンドストレージ２０００と連携して処理を実行する。以下、図１０Ａ及び図１０Ｂに沿って各処理について説明する。
【０１３１】
バックエンドストレージ１０００は、空き容量の小さい順にストレージリストＴ２００のエントリを整列する（ステップＳ３０１）。
【０１３２】
具体的には、データ転送制御プログラム１１２１が、ストレージリストＴ２００を参照して、空き容量Ｔ２０４の値が小さい順にストレージリストＴ２００のエントリを整列する。
【０１３３】
なお、本実施形態では、空き容量Ｔ２０４の値が小さい順にエントリを整列する方法を用いているが本発明はこれに限定されない。例えば、未転送データ量Ｔ２０６の値が大きい順に整列させる方法又は使用容量Ｔ２０３の値が大きい順に整列させる方法など、管理者が任意の方法を選択できる。
【０１３４】
バックエンドストレージ１０００は、自身の処理状態を確認する（ステップＳ３０２）。
【０１３５】
具体的には、データ転送制御プログラム１１２１が、データ送受信プログラム１１２４に対して、バックエンドストレージ１０００の処理状態を問い合わせる。データ送受信プログラム１１２４は、バックエンドストレージ１０００の処理状態を示す情報を応答する。
【０１３６】
ここで、バックエンドストレージ１０００の処理状態を示す情報としては、ＣＰＵ負荷、Ｉ／Ｏ待ち、メモリ使用量、及びネットワークの使用率等が考えられるが、本発明はバックエンドストレージ１０００の処理状態を示す情報であればどのようなものであってもよい。
【０１３７】
バックエンドストレージ１０００は、処理限界の状態であるか否かを判定する（ステップＳ３０３）。すなわち、フロントエンドストレージ２０００から転送されるデータを処理できるか否かが判定される。
【０１３８】
具体的には、データ転送制御プログラム１１２１が、ステップＳ３０２において取得された情報に基づいて、バックエンドストレージ１０００が処理限界の状態であるか否かを判定する。
【０１３９】
例えば、ＣＰＵ負荷が所定の閾値以上である場合、閾値以上のＩ／Ｏ待ちが発生している場合、又はネットワークの使用率が所定の閾値以上である場合に、バックエンドストレージ１０００が処理限界の状態であると判定される。
【０１４０】
処理限界の状態でない場合には、バックエンドストレージ１０００へのデータ転送が実行できる。一方、処理限界の状態である場合、バックエンドストレージ１０００へのデータ転送は実行できないため、他のフロントエンドストレージ２０００へのデータ転送が実行されることとなる。
【０１４１】
処理限界の状態でないと判定された場合、バックエンドストレージ１０００は、空き容量が最小のフロントエンドストレージ２０００を選択する（ステップＳ３０４）。
【０１４２】
具体的には、データ転送制御プログラム１１２１が、ストレージリストＴ２００の最上位のエントリを選択する。
【０１４３】
バックエンドストレージ１０００は、選択されたフロントエンドストレージ２０００に、当該バックエンドストレージ１０００へのデータ転送処理Ｓ４００の実行を指示する（ステップＳ３０５）。
【０１４４】
具体的には、データ転送制御プログラム１１２１が、選択されたフロントエンドストレージ２０００に対して、バックエンドストレージ１０００へのデータ転送処理Ｓ４００の実行を指示する。なお、当該指示には、フロントエンドストレージ２０００に対応する転送開始基準値Ｔ２０５が含まれる。
【０１４５】
データ転送処理Ｓ４００の指示を受けたフロントエンドストレージ２０００は、データ送受信制御プログラム２１２１を読み出す。読み出されたデータ送受信制御プログラム２１２１は、後述するデータ転送処理Ｓ４００を実行して、バックエンドストレージ１０００へのデータ転送を開始する。
【０１４６】
なお、データ転送処理Ｓ４００の詳細については、図１１を用いて後述する。
【０１４７】
バックエンドストレージ１０００は、ストレージリストＴ２００から選択されたフロントエンドストレージ２０００に対応するエントリを削除する（ステップＳ３０６）。
【０１４８】
具体的には、データ転送制御プログラム１１２１が、ストレージリストＴ２００から、選択されたフロントエンドストレージ２０００に対応するエントリを削除する。
【０１４９】
バックエンドストレージ１０００は、ストレージリストＴ２００にエントリが存在するか否かを判定する（ステップＳ３０７）。すなわち、全てのフロントエンドストレージ２０００について処理が終了したか否かが判定される。
【０１５０】
具体的には、データ転送制御プログラム１１２１が、ストレージリストＴ２００を参照して、当該ストレージリストＴ２００にエントリ存在するか否かを判定する。
【０１５１】
ストレージリストＴ２００にエントリが存在しないと判定された場合、バックエンドストレージ１０００は、処理を終了する。
【０１５２】
ストレージリストＴ２００にエントリが存在すると判定された場合、バックエンドストレージ１０００は、ステップＳ３０１に戻り同様の処理を実行する。
【０１５３】
ステップＳ３０３において、処理限界の状態であると判定された場合、バックエンドストレージ１０００は、転送元として空き容量が最小のフロントエンドストレージ２０００を、及び、転送先として空き容量が最大のフロントエンドストレージ２０００を選択する（ステップＳ３０８）。
【０１５４】
以後、空き容量が最小のフロントエンドストレージ２０００を最小フロントストレージ２０００とも記し、空き容量が最大のフロントエンドストレージ２０００を最大フロントストレージ２０００とも記す。
【０１５５】
具体的には、データ転送制御プログラム１１２１が、ストレージリストＴ２００の最上位のエントリを転送元として選択し、ストレージリストＴ２００の最下位のエントリをデータの転送先として選択する。
【０１５６】
なお、本実施形態では、最小フロントエンドストレージ２０００をデータの転送元として、最大フロントエンドストレージ２０００をデータの転送先として選択したが、本発明はこれに限定されない。例えば、以下のような選択方法を用いてもよい。
【０１５７】
データの転送先の選択方法については、ＣＰＵ負荷が低い、メモリ使用量が少ない、又はネットワーク負荷が低いフロントエンドストレージ２０００を選択する方法が考えられる。また、転送元のフロントエンドストレージ２０００とハードウェア構成が同一、又は、転送元のフロントエンドストレージ２０００とネットワーク性能が同一のフロントエンドストレージ２０００を選択する方法が考えられる。また、使用容量が小さい又は未転送データ量が小さいフロントエンドストレージ２０００を選択する方法が考えられる。
【０１５８】
データの転送元の選択方法については、ＣＰＵ負荷が高い、メモリ使用量が多い又はネットワーク負荷が高いフロントエンドストレージ２０００を選択する方法が考えられる。また、使用容量が大きい又は未転送データ量が大きいフロントエンドストレージ２０００を選択する方法が考えられる。
【０１５９】
すなわち、本発明では、データ転送に適したフロントエンドストレージ２０００を選択できればよい。
【０１６０】
バックエンドストレージ１０００は、最大フロントストレージ２０００及び最小フロントストレージ２０００の空き容量の差を算出し、当該差が所定の閾値以下であるか否かを判定する（ステップＳ３０９）。
【０１６１】
具体的には、データ転送制御プログラム１１２１が、ストレージリストＴ２００を参照して、最大フロントストレージ２０００の空き容量Ｔ２０４から最小フロントストレージＹの空き容量Ｔ２０４を減算して空き容量の差を算出する。さらに、データ転送制御プログラム１１２１は、算出された空き容量の差が予め設定された閾値以下であるか否かを判定する。
【０１６２】
これは、２つのフロントエンドストレージ２０００の空き容量の差が小さい場合には、転送先のフロントエンドストレージ２０００の空き容量に余裕がなくなり、頻繁にデータ転送が実行されることを防止するためである。当該判定処理によって、フロントエンドストレージ２０００間の無駄なデータ転送を抑制することができる。
【０１６３】
なお、所定の閾値は、管理者が設定してもよいし、バックエンドストレージ１０００が自動的に算出してもよい。例えば、転送元のフロントエンドストレージ２０００から転送されるデータ量の２倍の値を閾値として用いることが考えられる。
【０１６４】
算出された空き容量の差が所定の閾値以下であると判定された場合、バックエンドストレージ１０００は、データ転送を実行しないため処理を終了する。
【０１６５】
算出された空き容量の差が所定の閾値より大きいと判定された場合、バックエンドストレージ１０００は、最小フロントエンドストレージ２０００に対して、データ転送処理Ｓ５００の実行を指示する（ステップＳ３１０）。
【０１６６】
具体的には、データ転送制御プログラム１１２１が、最小フロントエンドストレージ２０００に対して、最大フロントエンドストレージ２０００へのデータ転送処理Ｓ５００の実行を指示する。なお、当該指示には、フロントエンドストレージ２０００に対応する転送開始基準値Ｔ２０５が含まれる。
【０１６７】
最小フロントエンドストレージ２０００のデータ送受信制御プログラム２１２１は、当該指示を受け付けると、最大フロントエンドストレージへのデータ転送処理Ｓ５００を実行して、最大フロントエンドストレージ２０００へのデータ転送処理を開始する。
【０１６８】
なお、データ転送処理Ｓ５００の詳細については、図１２を用いて後述する。
【０１６９】
バックエンドストレージ１０００は、最大フロントエンドストレージ２０００及び最小フロントエンドストレージ２０００に対応するエントリをストレージリストＴ２００から削除し（ステップＳ３１１）、ステップＳ３０７に戻り同様の処理を実行する。
【０１７０】
具体的には、データ転送制御プログラム１１２１が、最大フロントエンドストレージ２０００及び最小フロントエンドストレージ２０００に対応するエントリをストレージリストＴ２００から削除する。
【０１７１】
図１１は、本発明の第１の実施形態におけるデータ転送処理Ｓ４００を説明するフローチャートである。
【０１７２】
データ転送処理Ｓ４００は、各フロントエンドストレージ２０００によって実行される。以下、図１１に沿って各処理について説明する。
【０１７３】
フロントエンドストレージ２０００は、他のフロントエンドストレージ２０００から転送されたデータを格納するか否かを判定する（ステップＳ４０１）。
【０１７４】
具体的には、データ送受信制御プログラム２１２１が、所有データリストＴ３００を参照して、所属先Ｔ３０３にデータ送受信制御プログラム２１２１が実行されるフロントエンドストレージ２０００の識別子と、異なるデータが存在するか否かを判定する。例えば、フロントエンドストレージＡの処理において、所属先Ｔ３０３に「フロントエンドストレージＢ」が格納される場合、フロントエンドストレージＢから転送されたデータであることが分かる。
【０１７５】
ステップＳ４０１の目的は、他フロントエンドストレージ２０００から転送されたデータを、自フロントエンドストレージ２０００のデータよりも優先して、バックエンドストレージ１０００に転送することにある。これによって、各フロントエンドストレージ２０００におけるフロントヒット率を向上させることができ、さらに、ストレージ間の無駄なデータ転送を抑制することができる。
【０１７６】
ここで、フロントヒット率とは、フロントエンドストレージ２０００へアクセスする利用者からアクセス要求を受信した場合に、フロントエンドストレージ２０００上に要求されたデータが存在する確率のことを表す。
【０１７７】
他のフロントエンドストレージ２０００から転送されたデータを格納すると判定された場合、フロントエンドストレージ２０００は、所有データリストＴ３００を参照して、当該データの中から最もデータ量の小さいデータを選択し（ステップＳ４０２）、ステップＳ４０３に進む。
【０１７８】
具体的には、データ送受信制御プログラム２１２１が、所有データリストＴ３００のデータ量Ｔ３０２を参照して、他フロントエンドストレージ２０００から転送されたデータのうち、最もデータ量Ｔ３０２が小さいデータを一つ選択する。
【０１７９】
なお、本実施形態では、データ量の小さい順に転送するデータを選択しているが本発明はこれに限定されない。例えば、データ量の大きい順、又はデータ名の順など他の指標に基づいて、転送するデータを選択してよい。
【０１８０】
次に、フロントエンドストレージ２０００は、選択されたデータをバックエンドストレージ１０００に転送する（ステップＳ４０３）。
【０１８１】
具体的には、データ送受信制御プログラム２１２１が、データ送受信制御プログラム２１２４に対して、選択されたデータの転送を指示する。当該指示を受けたデータ送受信制御プログラム２１２４は、選択されたデータをバックエンドストレージ１０００に転送する。
【０１８２】
フロントエンドストレージ２０００は、所有データリストＴ３００及び格納先リストＴ３５０を更新し（ステップＳ４０４）、ステップＳ４０１に戻り同様の処理を実行する。
【０１８３】
具体的には、データ送受信制御プログラム２１２１が、所有データリストＴ３００から選択されたデータに対応するエントリを削除する。また、データ送受信制御プログラム２１２１が、格納先リストＴ３５０のうち、転送されたデータに対応するエントリの格納先Ｔ３５２を「バックエンドストレージ」に変更する。
【０１８４】
なお、フロントエンドストレージ２０００は、格納先リストＴ３５０の更新結果を他のフロントエンドストレージ２０００に通知する。これによって、各フロントエンドストレージ２０００は、所定のデータのアクセス先を把握できる。
【０１８５】
ステップ４０１において、他のフロントエンドストレージ２０００から転送されたデータを格納していないと判定された場合、フロントエンドストレージ２０００は、所有データリストＴ３００を参照して、当該フロントエンドストレージ２０００自身が転送予定のデータを保持するか否かを判定する（ステップＳ４０５）。
【０１８６】
具体的には、データ送受信制御プログラム２１２１が、所有データリストＴ３００を参照して、当該所有データリストＴ３００にエントリが存在するか否かを判定する。所有データリストＴ３００にエントリが存在しない場合には、転送予定のデータを保持すると判定される。
【０１８７】
転送予定のデータを保持していないと判定された場合、すなわち、全データ転送が完了したと判定された場合、フロントエンドストレージ２０００は、処理を終了する。
【０１８８】
転送予定のデータを保持していると判定された場合、フロントエンドストレージ２０００は、バックエンドストレージ１０００から通知された転送開始基準値Ｔ２０５に基づいて、データ転送が必要であるか否かを判定する（ステップＳ４０６）。
【０１８９】
具体的には、データ送受信制御プログラム２１２１が、データ管理プログラム２１２２に対して、現時点におけるフロントエンドストレージの使用容量が転送開始基準値Ｔ２０５以上であるか否かを問い合わせる。現時点におけるフロントエンドストレージ２０００の使用容量が転送開始基準値Ｔ２０５以上である場合、データ転送が必要であると判定される。
【０１９０】
データ転送が必要でないと判定された場合、フロントエンドストレージ２０００は、処理を終了する。
【０１９１】
データ転送が必要であると判定された場合、フロントエンドストレージ２０００は、所有データリストＴ３００を参照して最も古いデータを選択し（ステップＳ４０７）、ステップＳ４０３に進む。
【０１９２】
具体的には、データ送受信制御プログラム２１２１が、所有データリストＴ３００の中から、最終アクセス日時Ｔ３０４が古いデータを選択する。
【０１９３】
なお、本実施形態では、アクセス日時が古い順に転送するデータを選択しているが、本発明はこれに限定されない。例えば、データ量の大きい順、又はデータ名の順など他の指標に基づいて、転送するデータを選択してもよい。
【０１９４】
図１２は、本発明の第１の実施形態におけるデータ転送処理Ｓ５００を説明するフローチャートである。
【０１９５】
データ転送処理Ｓ５００は、各フロントエンドストレージ２０００によって実行される。以下、図１２に沿って各処理について説明する。
【０１９６】
最小フロントエンドストレージ２０００は、所有データリストＴ３００を参照して、転送先である最大フロントエンドストレージ２０００から転送されたデータを格納するか否かを判定する（ステップＳ５０１）。
【０１９７】
具体的には、最小フロントエンドストレージ２０００のデータ送受信制御プログラム２１２１が、所有データリストＴ３００の所属先Ｔ３０３を参照し、最大フロントエンドストレージ２０００の識別子であるデータが存在するか否かを判定する。
【０１９８】
例えば、フロントエンドストレージＡからフロントエンドストレージＢへのデータを転送の場合、フロントエンドストレージＡが管理する所有データリストＴ３００のうち、所属先Ｔ３０３が「フロントエンドストレージＢ」となっているデータが存在するか否かが判定される。
【０１９９】
所属先Ｔ３０３が最大フロントエンドストレージ２０００の識別子であるデータが存在する場合には、転送先の最大フロントエンドストレージ２０００から転送されたデータを格納すると判定される。
【０２００】
ステップＳ５０１では、他のフロントエンドストレージ２０００から転送されたデータのうち、最大フロントエンドストレージ２０００から転送されたデータを優先的に転送することによって、転送先の最大フロントエンドストレージにおけるフロントヒット率を向上させることができ、さらに、ストレージ間の無駄なデータ転送を抑制することができる。
【０２０１】
最大フロントエンドストレージ２０００から転送されたデータを格納すると判定された場合、最小フロントエンドストレージ２０００は、所有データリストＴ３００を参照して、当該データのうち最も新しいデータを選択し（ステップＳ５０２）、ステップＳ５０３に進む。
【０２０２】
具体的には、データ送受信制御プログラム２１２１が、最大フロントエンドストレージ２０００から転送されたデータのうち、最終アクセス日時Ｔ３０４が最も新しいデータを一つ選択する。これによって、最大フロントエンドストレージ２０００におけるフロントヒット率を向上させることができる。
【０２０３】
なお、本実施形態では、アクセス日時が新しい順に転送するデータを選択しているが、本発明はこれに限定されない。例えば、データ量の大きい順、又はデータ名の順など他の指標に基づいて、転送するデータを選択してよい。
【０２０４】
最小フロントエンドストレージ２０００は、選択されたデータを最大フロントエンドストレージ２０００に転送する（ステップＳ５０３）。
【０２０５】
具体的には、最小フロントエンドストレージ２０００のデータ送受信制御プログラム２１２１が、データ送受信制御プログラム２１２４に対して、選択されたデータの転送開始を指示する。当該指示を受けたデータ送受信制御プログラム２１２４は、選択されたデータを転送先の最大フロントエンドストレージ２０００に転送する。
【０２０６】
最小フロントエンドストレージ２０００は、所有データリストＴ３００及び格納先リストＴ３５０を更新し（ステップＳ５０４）、ステップＳ５０１に戻り同様の処理を実行する。
【０２０７】
具体的には、データ送受信制御プログラム２１２１が、所有データリストＴ３００から選択されたデータに対応するエントリを削除する。また、データ送受信制御プログラム２１２１が、格納先リストＴ３５０のうち、転送されたデータに対応するエントリの格納先Ｔ３５２を、最大フロントエンドストレージ２０００の識別子に変更する。
【０２０８】
ステップＳ５０１において、転送先である最大フロントエンドストレージ２０００から転送されたデータを格納しないと判定された場合、最小フロントエンドストレージ２０００は、他のフロントエンドストレージ２０００から転送されたデータを格納するか否かを判定する（ステップＳ５０５）。
【０２０９】
具体的には、データ送受信制御プログラム２１２１が、所有データリストＴ３００の所属先Ｔ３０３を参照し、最小フロントエンドストレージの識別子と異なるデータが存在するか否かを判定する。
【０２１０】
所属先Ｔ３０３が最小フロントエンドストレージの識別子と異なるデータが存在する場合には、他のフロントエンドストレージ２０００から転送されたデータを格納すると判定される。
【０２１１】
他のフロントエンドストレージ２０００から転送されたデータを格納すると判定された場合、最小フロントエンドストレージ２０００は、当該データの中からデータ量が最小のデータを選択し（ステップＳ５０６）、ステップＳ５０３に進む。
【０２１２】
具体的には、データ送受信制御プログラム２１２１が、所有データリストＴ３００を参照して、他のフロントエンドストレージ２０００から転送されたデータのうちデータ量Ｔ３０２が最も小さいデータを選択する。
【０２１３】
なお、本実施形態では、データ量が小さい順に転送するデータを選択しているが、本発明はこれに限定されない。例えば、アクセス日時が新しい順、又はデータ名の順など他の指標に基づいて、転送するデータを選択してよい。
【０２１４】
ステップ５０５において、他のフロントエンドストレージ２０００から転送されたデータを格納しないと判定された場合、最小フロントエンドストレージ２０００は、当該フロントエンドストレージ２０００自身が転送する予定のデータを格納するか否かを判定する（ステップＳ５０７）。
【０２１５】
具体的には、データ送受信制御プログラム２１２１が、所有データリストＴ３００を参照して、当該所有データリストＴ３００にエントリが存在するか否かを判定する。所有データリストＴ３００にエントリが存在しない場合には、転送する予定のデータを格納すると判定される。
【０２１６】
転送する予定のデータを保持していないと判定された場合、すなわち、全データ転送が完了したと判定された場合、フロントエンドストレージ２０００は、処理を終了する。
【０２１７】
転送予定のデータを保持していると判定された場合、最小フロントエンドストレージ２０００は、バックエンドストレージ１０００から通知された転送開始基準値Ｔ２０５に基づいて、データ転送が必要であるか否かを判定する（ステップＳ５０８）。
【０２１８】
具体的には、データ送受信制御プログラム２１２１が、データ管理プログラム２１２２に対して、現時点における最小フロントエンドストレージ２０００の使用容量が転送開始基準値Ｔ２０５以上であるか否かを問い合わせる。現時点における最小フロントエンドストレージの使用容量が転送開始基準値Ｔ２０５以上である場合、データ転送が必要であると判定される。
【０２１９】
データ転送が必要でないと判定された場合、最小フロントエンドストレージ２０００は、処理を終了する。
【０２２０】
データ転送が必要であると判定された場合、最小フロントエンドストレージ２０００は、所有データリストＴ３００を参照して最も古いデータを選択し（ステップＳ５０９）、ステップＳ５０３に進む。
【０２２１】
具体的には、データ送受信制御プログラム２１２１が、所有データリストＴ３００のうち、最終アクセス日時Ｔ３０４が最も古いデータを選択する。
【０２２２】
なお、本実施形態では、アクセス日時が古い順に転送するデータを選択しているが、本発明はこれに限定されない。例えば、データ量の大きい順、又はデータ名の順など他の指標に基づいて、転送するデータを選択してよい。
【０２２３】
なお、転送先のフロントエンドストレージ２０００に格納されるデータは、バックエンドストレージ１０００の処理限界の状態が解消された後に転送されるようにしてもよい。
【０２２４】
第１の実施形態によれば、バックエンドストレージ１０００が、フロントエンドストレージ２０００からのデータ転送を実現できない場合であっても、適切なフロントエンドストレージ２０００を選択し、当該フロントエンドストレージ２０００にデータを転送することができる。これによって、フロントエンドストレージ２０００の空き容量を確保し、かつ、バックエンドストレージ１０００等の負荷を低減することができる。
【０２２５】
［第２の実施形態］
第１の実施形態では、バックエンドストレージ１０００がデータ転送を制御していたが、第２の実施形態では各フロントエンドストレージ２０００がデータ転送処理を制御する点が異なる。以下、第１の実施形態との差異を中心に説明する。
【０２２６】
第２の実施形態におけるストレージネットワークの構成は第１の実施形態と同一であるため説明を省略する。また、第２の実施形態におけるバックエンドストレージ１０００の構成についても第１の実施形態と同一であるため説明を省略する。
【０２２７】
図１３は、本発明の第２の実施形態におけるフロントエンドストレージ２０００のソフトウェア及びハードウェア構成を示すブロック図である。
【０２２８】
フロントエンドストレージ２０００のハードウェア構成は第１の実施形態と同一であるため説明を省略する。
【０２２９】
第２の実施形態のメモリ２１２０には、データ送受信制御プログラム２１２１、データ管理プログラム２１２２、データリスト作成プログラム２１２３、データ送受信制御プログラム２１２４及び交友リスト作成プログラム２１２５を格納する。また、第２の実施形態のメモリ２１２０は、所有データリストＴ３００、格納先リストＴ３５０、及び交友リストＴ４００を格納する。
【０２３０】
第２の実施形態では、新たに交友リスト作成プログラム２１２５及び交友リストＴ４００が格納される点が異なる。他の構成は、第１の実施形態と同一であるため説明を省略する。
【０２３１】
交友リスト作成プログラム２１２５は、他のフロントエンドストレージ２０００と通信して、交友リストＴ４００を作成する。
【０２３２】
交友リストＴ４００は、データ転送先として選択可能なフロントエンドストレージ２０００の情報を格納する。交友リストＴ４００の詳細は、図１４を用いて後述する。
【０２３３】
図１４は、本発明の第２の実施形態における交友リストＴ４００の一例を示す説明図である。
【０２３４】
交友リストＴ４００は、交友リスト作成プログラム２１２５によって作成されるリストであり、データの転送先として選択可能なフロントエンドストレージ２０００の情報を格納する。
【０２３５】
なお、交友リストＴ４００は、ディスクドライブ２２００に格納されていてもよい。この場合、ＣＰＵ２１４０が、メモリ２１２０上に交友リストＴ４００が読み出し、読み出された交友リストＴ４００を用いて処理を実行する。
【０２３６】
交友リストＴ４００は、ストレージ名Ｔ４０１及びＩＰアドレスＴ４０２を含む。
【０２３７】
ストレージ名Ｔ４０１は、転送先のフロントエンドストレージ２０００の識別子を格納する。ＩＰアドレスＴ４０２は、ストレージ名Ｔ４０１に対応するフロントエンドストレージ２０００に割り当てられるＩＰアドレスを格納する。
【０２３８】
図１４は、フロントエンドストレージＡと通信可能なフロントエンドストレージ２０００の交友リストＴ４００を示す。当該交友リストＴ４００には、フロントエンドストレージＡと通信可能なフロントエンドストレージＢ、Ｃ、Ｄが記載される。
【０２３９】
なお、本実施形態の交友リストＴ４００には、通信可能なフロントエンドストレージ２０００に基づいて作成されているが、本発明はこれに限定されない。例えば、管理者が、セキュリティ及び負荷を考慮して設定したフロントエンドストレージ２０００に基づいて交友リストＴ４００が作成されてもよい。また、ネットワーク構成、ストレージの装置構成、及び処理性能に基づいて交友リストＴ４００が作成されてもよい。
【０２４０】
図１５は、本発明の第２の実施形態におけるデータ転送の制御処理Ｓ６００を説明するフローチャートである。
【０２４１】
データ転送の制御処理では、各フロントエンドストレージ２０００によって実行される。以下、図１５に沿って各処理について説明する。
【０２４２】
各フロントエンドストレージ２０００は、以下で説明する処理を周期的に実行してもよいし、ストレージシステムの管理者からの指示に基づいて実行してもよい。
【０２４３】
まず、フロントエンドストレージ２０００は、所有データリストＴ３００を更新する（ステップＳ６０１）。
【０２４４】
当該処理はステップＳ１０２と同一の処理である。
【０２４５】
フロントエンドストレージ２０００は、データ転送が必要か否かを判定する（ステップＳ６０２）。
【０２４６】
具体的には、データ送受信制御プログラム２１２１が、データ管理プログラム２１２２に対して、未転送データ量が「０」であるか否かを問い合わせる。未転送データ量が「０」でない場合、すなわち、未転送データ量が「０」より大きい場合には、転送が必要なデータが存在すると判定される。
【０２４７】
なお、ステップＳ６０２における判定方法は前述したものに限定されない。例えば、データ送受信制御プログラム２１２１が、空き容量が予め設定された閾値以下であるか否かを問い合わせてもよい。なお、予め設定された閾値は、管理者によって設定された値であってもよいし、バックエンドストレージ１０００が自動的に設定した値であってもよい。
【０２４８】
空き容量が予め設定された閾値以下の場合には、データ転送が必要であると判定される。
【０２４９】
また、ステップＳ６０２における判定方法は、使用容量に基づいた判定処理であってもよい。また、フロントエンドストレージ２０００におけるＣＰＵ使用率、メモリ使用率、ネットワーク使用率等を問い合わせて、ＣＰＵ使用率、メモリ使用率、及びネットワーク使用率等に基づいた判定処理であってもよい。
【０２５０】
すなわち、ステップＳ６０２では、フロントエンドストレージ２０００の性能低下を示す負荷情報に基づいて判定できればよい。
【０２５１】
データ転送が必要ではないと判定された場合、フロントエンドストレージ２０００は、処理を終了する。
【０２５２】
データ転送が必要であると判定された場合、フロントエンドストレージ２０００は、バックエンドストレージ１０００にデータ転送できるか否かを判定する（ステップＳ６０３）。
【０２５３】
具体的には、データ送受信制御プログラム２１２１が、バックエンドストレージ１０００にデータ転送が可能か否か問い合わせる。当該問い合わせを受けたバックエンドストレージ１０００は、ステップＳ３０２及びステップＳ３０３と同様の処理を実行してデータ転送が可能か否かを判定し、当該判定結果をデータ送受信制御プログラム２１２１に送信する。
【０２５４】
なお、本実施形態では、フロントエンドストレージ２０００が、バックエンドストレージにデータ転送の可否を問い合わせているが、本発明はこれに限定されない。例えば、データ送受信制御プログラム２１２１がデータの転送速度又はデータの衝突回数などの値を監視し、当該監視結果に基づいてデータ転送の可否を判定してもよい。
【０２５５】
バックエンドストレージ１０００にデータ転送ができないと判定された場合、フロントエンドストレージ２０００は、フロントエンドストレージ２０００自身の空き容量が少ないか否かを判定する（ステップＳ６０４）。
【０２５６】
具体的には、データ送受信制御プログラム２１２１が、データ管理プログラム２１２２に対して、空き容量が予め設定された閾値以下であるか否かを問い合わせる。当該閾値は、管理者によって設定された値、又は、フロントエンドストレージ２０００が自動的に決定した値を用いてもよい。例えば、フロントエンドストレージ２０００の最大容量の３０％を閾値として用いる方法が考えられる。
【０２５７】
フロントエンドストレージ２０００自身の空き容量が十分あると判定された場合、フロントエンドストレージ２０００は、処理を終了する。
【０２５８】
フロントエンドストレージ２０００自身の空き容量が少ないと判定された場合、フロントエンドストレージ２０００は、他のフロントエンドストレージ２０００に空き容量を問い合わせる（ステップＳ６０５）。
【０２５９】
具体的には、データ送受信制御プログラム２１２１が、交友リストＴ４００を参照して、交友リストＴ４００に含まれる全フロントエンドストレージ２０００に対して、現時点における空き容量を問い合わせる。
【０２６０】
例えば、図１４に示す例では、フロントエンドストレージＡのデータ送受信制御プログラム２１２１が、フロントエンドストレージＢ、Ｃ、Ｄに対して、現時点における空き容量を問い合わせる。
【０２６１】
当該問い合わせを受け付けたフロントエンドストレージ２０００は以下のような処理を実行する。
【０２６２】
まず、問い合わせを受け付けたフロントエンドストレージ２０００のデータ管理プログラム２１２２は、問い合わせ元のフロントエンドストレージ２０００に対して、現時点の空き容量を返信する。
【０２６３】
例えば、図１４に示す例では、フロントエンドストレージＡからの問い合わせを受けたフロントエンドストレージＢのデータ管理プログラム２１２２が、フロントエンドストレージＡに対して、現時点におけるフロントエンドストレージＢの空き容量を返信する。
【０２６４】
フロントエンドストレージ２０００は、問い合わせた各フロントエンドストレージ２０００からの返信を参照して、空き容量が最も大きいフロントエンドストレージを転送先のフロントエンドストレージ２０００として選択する（ステップＳ６０６）。
【０２６５】
具体的には、データ送受信制御プログラム２１２１が、各フロントエンドストレージ２０００から返信された空き容量を参照し、最も空き容量が大きいフロントエンドストレージ２０００を選択する。
【０２６６】
なお、本実施形態では、最も空き容量が大きいフロントエンドストレージ２０００を転送先として選択するとしているが、本発明はこれに限定されない。
【０２６７】
例えば、以下のような方法であってもよい。ステップＳ６０５において各フロントエンドストレージ２０００の装置構成を問い合わせて、同一の構成のフロントエンドストレージ２０００を転送先として選択する方法が考えられる。また、ステップＳ６０５において各フロントエンドストレージ２０００の負荷を問い合わせて、負荷が最も小さいフロントエンドストレージ２０００を転送先として選択する方法が考えられる。また、複数の指標を組み合わせてデータ転送に最適なフロントエンドストレージ２０００を選択してもよい。
【０２６８】
フロントエンドストレージ２０００は、選択されたフロントエンドストレージ２０００へのデータ転送処理Ｓ７００を実行し（ステップＳ６０７）、処理を終了する。
【０２６９】
具体的には、データ送受信制御プログラム２１２１が、選択されたフロントエンドストレージへのデータ転送処理Ｓ７００を実行し、選択されたフロントエンドストレージ２０００へのデータ転送を開始する。
【０２７０】
なお、データ転送処理Ｓ７００の詳細については、図１６を用いて後述する。
【０２７１】
ステップＳ６０３においてバックエンドストレージ１０００に転送が必要なデータを転送できると判定された場合、フロントエンドストレージ２０００は、バックエンドストレージ１０００へのデータ転送処理Ｓ８００を実行し（ステップＳ６０８）、処理を終了する。
【０２７２】
具体的には、データ送受信制御プログラム２１２１が、バックエンドストレージへのデータ転送処理Ｓ８００を実行して、バックエンドストレージ１０００へのデータ転送を開始する。なお、データ転送処理Ｓ７００の詳細については、図１７を用いて後述する。
【０２７３】
なお、フロントエンドストレージ２０００は、ステップＳ６０２において、ステップＳ６０２及びステップＳ６０４の処理を同時に実行してもよい。すなわち、フロントエンドストレージ２０００自身が、データ転送が必要なフロントエンドストレージ２０００であるか否かを判定してもよい。
【０２７４】
この場合、ステップＳ１０３と同一の処理を適用することができる。すなわち、フロントエンドストレージ２０００の性能低下が発生するような負荷情報等に基づいて判定できればよい。
【０２７５】
図１６は、本発明の第２の実施形態におけるフロントエンドストレージへのデータ転送処理Ｓ７００を説明するフローチャートである。
【０２７６】
データ転送処理Ｓ７００は、各フロントエンドストレージ２０００によって実行される。データ転送処理Ｓ７００は、第１の実施形態におけるデータ転送処理Ｓ５００（図１２参照）と同様の内容の処理である。具体的には、ステップＳ７０１〜ステップＳ７０８は、それぞれステップＳ５０１〜ステップＳ５０８と同一の処理内容である。ただし、以下の点が異なる。
【０２７７】
データ転送処理Ｓ７００とデータ転送処理Ｓ５００とでは、転送元及び転送先のフロントエンドストレージ２０００が異なる。すなわち、データ転送処理Ｓ７００では、任意のフロントエンドストレージ２０００が、ステップＳ６０６において選択されたフロントエンドストレージ２０００に対してデータに転送する点が異なる。
【０２７８】
また、データ転送処理Ｓ７００では、フロントエンドストレージ２０００がステップＳ７０４の処理が実行された後に、Ｓ７０１に戻らずに処理を終了する点が異なる。これは、第２の実施形態では、フロントエンドストレージ２０００にデータ転送を中断させるプログラムが存在しないため、同一の転送先のフロントエンドストレージ２０００に対してデータを転送し続けないようするためである。
【０２７９】
図１７は、本発明の第２の実施形態におけるバックエンドエンドストレージへのデータ転送処理Ｓ８００を説明するフローチャートである。
【０２８０】
データ転送処理Ｓ８００は、各フロントエンドストレージ２０００によって実行される。データ転送処理Ｓ８００は、第１の実施形態におけるデータ転送処理Ｓ４００（図１１参照）と同様の内容の処理である。具体的には、ステップＳ８０１〜ステップＳ８０７は、それぞれステップＳ４０１〜ステップＳ４０７と同一の処理内容である。ただし、以下の点が異なる。
【０２８１】
データ転送処理Ｓ８００とデータ転送処理Ｓ４００では、処理主体が異なる。すなわち、データ転送処理Ｓ８００では、任意のフロントエンドストレージ２０００が処理主体であるのに対し、データ転送処理Ｓ４００では、最小フロントエンドストレージ２０００が処理主体である点が異なる。
【０２８２】
また、データ転送処理Ｓ８００では、ステップＳ８０４が実行された後に、フロントエンドストレージ２０００はステップＳ８０１に戻らず処理を終了する点が異なる。これは、第２の実施形態では、フロントエンドストレージ２０００にデータ転送を中断させるプログラムが存在しないため、バックエンドストレージ１０００に対してデータを転送し続けないようするためである。
【０２８３】
第２の実施形態によれば、各フロントエンドストレージ２０００自身が、データ転送先のストレージを選択し、選択されたストレージにデータを転送することができる。これによって、フロントエンドストレージ２０００の空き容量を確保し、かつ、バックエンドストレージ１０００の負荷を低減することができる。
【０２８４】
［第３の実施形態］
第１の実施形態及び第２の実施形態では、現時点におけるフロントエンドストレージ２０００の状態に基づいて、データ転送を実行するか否かを判定していたが、第３の実施形態では、バックエンドストレージ１０００がフロントヒット率の予測値に基づいてデータ転送が必要なフロントエンドストレージ２０００を決定する点が異なる。以下、第１の実施形態との差異を中心に説明する。
【０２８５】
図１８は、本発明の第３の実施形態におけるストレージシステムの構成例を示す説明図である。
【０２８６】
第３の実施形態におけるストレージシステムの装置構成は第１の実施形態と同一であり、ネットワーク５００、バックエンドストレージ１０００、及びフロントエンドストレージ２０００から構成される。
【０２８７】
各ストレージは、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ（ＨＤＤ）、ファイルサーバ、又はＮｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ（ＮＡＳ）であってもよい。
【０２８８】
各フロントエンドサーバ２０００は、ネットワーク５００を介して、他のフロントエンドサーバ２０００、及びバックエンドストレージ１０００と接続される。
【０２８９】
第３の実施形態では、フロントエンドストレージＡにアクセスするエンドユーザ３０００（エンドユーザＡ、エンドユーザＢ）及びアプリケーション４０００（アプリケーションＡ、アプリケーションＢ）が接続されている点が異なる。これは、各フロントエンドストレージ２０００のアクセス履歴等から、当該フロントエンドストレージＡにおける将来の使用状況を予測するためである。
【０２９０】
なお、フロントエンドストレージ２０００に対するエンドユーザ３０００又はアプリケーション４０００からのアクセスは、データを参照するための参照アクセス、及び、データを更新するための更新アクセスが含まれる。以後、データを参照するためのアクセスを参照と記載し、データを更新するためのアクセスを更新と記載する。また、エンドユーザ３０００及びアプリケーション４０００を区別しない場合、ユーザと記載する。
【０２９１】
図１９は、本発明の第３の実施形態におけるバックエンドストレージ１０００のソフトウェア及びハードウェア構成を示すブロック図である。
【０２９２】
バックエンドストレージ１０００のハードウェア構成は、第１の実施形態と同一であるため説明を省略する。
【０２９３】
第３の実施形態のメモリ１１２０には、データ転送制御プログラム１１２１、宛先リスト作成プログラム１１２２、ストレージリスト作成プログラム１１２３、データ送受信プログラム１１２４及び予測値リスト作成プログラム１１２５を格納する。また、メモリ１１２０は、宛先リストＴ１００及び予測値リストＴ９００を格納する。
【０２９４】
第３の実施形態では、新たに予測値リスト作成プログラム１１２５及び予測値リストＴ９００が格納される点が異なる。他の構成は、第１の実施形態と同一であるため説明を省略する。
【０２９５】
予測値リスト作成プログラム１１２５は、各フロントエンドストレージ２０００から取得された情報に基づいて、予測値リストＴ９００を作成する。
【０２９６】
予測値リストＴ９００は、各フロントエンドストレージ２０００におけるフロントヒット率の予測値を格納する。予測値リストＴ９００の詳細は、図２５を用いて後述する。
【０２９７】
図２０は、本発明の第３の実施形態におけるフロントエンドストレージ２０００のソフトウェア及びハードウェア構成を示すブロック図である。
【０２９８】
フロントエンドストレージ２０００のハードウェア構成は、第１の実施形態と同一であるため説明を省略する。
【０２９９】
第３の実施形態のメモリ２１２０には、データ送受信制御プログラム２１２１、データ管理プログラム２１２２、データリスト作成プログラム２１２３、データ送受信制御プログラム２１２４、ログイン管理プログラム２１２６、期待値リスト作成プログラム２１２７、アクセス量予測プログラム２１２８、ヒット率予測プログラム２１２９及び予測値管理プログラム２１３０を格納する。
【０３００】
また、第３の実施形態のメモリ２１２０は、所有データリストＴ３００、格納先リストＴ３５０、ログインリストＴ５００、期待値リストＴ６００、アクセス履歴リストＴ７００及びデータ格納位置リストＴ８００を格納する。
【０３０１】
第３の実施形態では、新たに、ログイン管理プログラム２１２６、期待値リスト作成プログラム２１２７、アクセス量予測プログラム２１２８、ヒット率予測プログラム２１２９、予測値管理プログラム２１３０、ログインリストＴ５００、期待値リストＴ６００、アクセス履歴リストＴ７００及びデータ格納位置リストＴ８００が格納される点が異なる。他の構成は、第１の実施形態と同一であるため説明を省略する。
【０３０２】
ログイン管理プログラム２１２６は、各ユーザのログイン状態を管理し、また、ログインリストＴ５００を作成する。
【０３０３】
期待値リスト作成プログラム２１２７は、各ユーザのアクセス履歴に基づいて、期待値リストＴ６００を作成する。
【０３０４】
アクセス量予測プログラム２１２８は、ログインリストＴ５００及び期待値リストＴ６００に基づいて、フロントエンドストレージ２０００に対するアクセス量の予測値、すなわち、アクセス期待値を算出する。
【０３０５】
ヒット率予測プログラム２１２９は、ログインリストＴ５００及びアクセス履歴リストＴ７００に基づいて、予測フロントヒット率を算出する。
【０３０６】
予測値管理プログラム２１３０は、予測アクセス量及び予測フロントヒット率に基づいて、フロントエンドストレージ２０００の予測使用量、予測空き容量、及び予測未転送データ量を算出する。
【０３０７】
ログインリストＴ５００は、フロントエンドストレージ２０００に対するユーザのログイン状態を示す情報を格納する。ログインリストＴ５００の詳細については、図２１を用いて後述する。
【０３０８】
期待値リストＴ６００は、アクセス期待値に関する情報を格納する。期待値リストＴ６００の詳細については、図２２を用いて後述する。
【０３０９】
アクセス履歴リストＴ７００は、フロントエンドストレージ２０００に対するユーザのアクセスの履歴を格納する。アクセス履歴リストＴ７００の詳細については、図２３を用いて後述する。
【０３１０】
データ格納位置リストＴ８００は、ログイン済みのユーザによってアクセスされたデータに関する情報を格納する。データ格納位置リストＴ８００の詳細については、図２４を用いて後述する。
【０３１１】
図２１は、本発明の第３の実施形態におけるログインリストＴ５００の一例を示す説明図である。
【０３１２】
ログイン管理プログラム２１２６は、フロントエンドストレージ２０００に対するエンドユーザ３０００及びアプリケーション４０００のログイン状態に基づいて、ログインリストＴ５００を作成する。
【０３１３】
ログインリストＴ５００は、各エンドユーザ３０００及びアプリケーション４０００がログイン又はログアウトする度に、ログイン管理プログラム２１２６によって更新される。
【０３１４】
ログインリストＴ５００は、フロントエンドストレージ２０００に対するユーザのログイン状態に関する情報を格納する。
【０３１５】
なお、ログインリストＴ５００は、ディスクドライブ２２００に格納されていてもよい。この場合、ＣＰＵ２１４０が、メモリ２１２０上にログインリストＴ５００を読み出し、読み出されたログインリストＴ５００を用いて処理を実行する。
【０３１６】
ログインリストＴ５００は、ユーザ名Ｔ５０１及び状態Ｔ５０２を含む。
【０３１７】
ユーザ名Ｔ５０１は、フロントエンドストレージ２０００にアクセス可能なエンドユーザ３０００及びアプリケーション４０００の識別子を格納する。状態Ｔ５０２は、ユーザ名Ｔ５０１に対応するユーザが、フロントエンドストレージ２０００にログインしているか否かを表す情報を格納する。
【０３１８】
図２１に示す例では、エンドユーザＡ及びアプリケーションＡはログイン済みであるが、エンドユーザＢはログインしていないことを示す。
【０３１９】
図２２は、本発明の第３の実施形態における期待値リストＴ６００の一例を示す説明図である。
【０３２０】
期待値リスト作成プログラム２１２７は、フロントエンドストレージ２０００に対するユーザのログイン情報及びアクセス履歴に基づいて、期待値リストＴ６００を作成する。
【０３２１】
期待値リストＴ６００は、フロントエンドストレージ２０００に対するエンドユーザ３０００及びアプリケーション４０００からのアクセス量の期待値を格納する。
【０３２２】
なお、期待値リストＴ６００は、ディスクドライブ２２００に格納されていてもよい。この場合、ＣＰＵ２１４０が、メモリ２１２０上に期待値リストＴ６００を読み出し、読み出された期待値リストＴ６００を用いて処理を実行する。
【０３２３】
期待値リストＴ６００は、ユーザ名Ｔ６０１、状態Ｔ６０２及びアクセス時間に関する情報（Ｔ６０３〜Ｔ６０６）を含む。
【０３２４】
ユーザ名Ｔ６０１及び状態Ｔ６０２は、ユーザ名Ｔ５０１及び状態Ｔ５０２と同一であるため説明を省略する。
【０３２５】
期待値リストＴ６００には、３時間ごとのアクセス期待値が格納される。また、ユーザのログイン状態ごとに各アクセス期待値が格納される。ただし、本発明はこれに限定されない。例えば、３時間より短くてもよいし、また、３時間より長くてもよい。また、曜日毎ではなく、一週間単位、月単位にアクセス期待値が格納されていてもよい。
【０３２６】
また、本実施形態では、アクセス履歴に基づいて算出された、３時間毎のアクセス量の平均値がアクセス期待値に格納されているが本発明はこれに限定されない。例えば、３時間におけるアクセス量の最大値又は最小値等をアクセス期待値としてもよい。
【０３２７】
図２２に示す例では、参照Ｔ６０３は、月曜の９〜１２時における各ユーザの参照アクセスの予測値を表し、更新Ｔ６０４は、月曜の９〜１２時における更新アクセスの予測値を表す。また、参照Ｔ６０５は、月曜の１２〜１５時における参照アクセスの予測値を表し、更新Ｔ６０６は、月曜１２〜１５時における更新アクセスの予測値を表す。他の曜日及び時間帯についても同様である。
【０３２８】
なお、状態Ｔ６０２が「ログイン済」のエントリには、所定の時間間隔においてユーザが未ログインの状態からログイン状態になった場合を含む。
【０３２９】
例えば、フロントエンドストレージ２０００は、期待値リストＴ６００を参照して、エンドユーザＡが月曜９時の時点でログイン済だった場合は、その後３時間で平均１２ＭＢのデータが参照されると予測することができる。
【０３３０】
図２３は、本発明の第３の実施形態におけるアクセス履歴リストＴ７００の一例を示す説明図である。
【０３３１】
データ管理プログラム２１２２は、フロントエンドストレージ２０００における過去のアクセス履歴に基づいて、アクセス履歴リストＴ７００を作成する。アクセス履歴リストＴ７００は、フロントエンドストレージ２０００に対するユーザのアクセスの履歴を格納する。
【０３３２】
なお、アクセス履歴リストＴ７００は、ディスクドライブ２２００に格納されていてもよい。この場合、ＣＰＵ２１４０が、メモリ２１２０上にアクセス履歴リストＴ７００を読み出して、読み出されたアクセス履歴リストＴ７００を用いて処理を実行する。
【０３３３】
アクセス履歴リストＴ７００は、ユーザがデータへアクセスする度に、データ管理プログラム２１２２によって更新される。
【０３３４】
アクセス履歴リストＴ７００は、ユーザ名Ｔ７０１、データ名Ｔ７０２、最終アクセス日時Ｔ７０３、格納位置Ｔ７０４及びデータ量Ｔ７０５を含む。
【０３３５】
ユーザ名Ｔ７０１は、ユーザ名Ｔ５０１と同一であるため説明を省略する。
【０３３６】
データ名Ｔ７０２は、ユーザ名Ｔ７０１に対応するユーザによってアクセスされたデータの識別子を格納する。
【０３３７】
最終アクセス日時Ｔ７０３は、ユーザがデータ名Ｔ７０２に対応するデータに最後にアクセスした日時を格納する。
【０３３８】
格納位置Ｔ７０４は、データ名Ｔ７０２に対応するデータが実際に格納されるストレージの識別情報を格納する。本実施形態では、フロントエンドストレージ２０００に格納されることを示す「フロント」、又は、バックエンドストレージ１０００に格納されることを示す「バック」のいずれかの識別情報が格納される。
【０３３９】
なお、他のフロントエンドストレージ２０００にデータが格納されている場合、バックエンドストレージ１０００に格納されているものとして扱う。
【０３４０】
データ量Ｔ７０５は、データ名Ｔ７０２に対応するデータのデータ量を示す。
【０３４１】
図２３に示す例では、フロントエンドストレージ２０００に格納され、データ量が「０．３ＭＢ」の「データａ」に対して、「エンドユーザＡ」が「２０１０年１２月９日の１５時４分６秒」に最後にアクセスしたことを示す。
【０３４２】
図２４は、本発明の第３の実施形態におけるデータ格納位置リストＴ８００の一例を示す説明図である。
【０３４３】
ヒット率予測プログラム２１２９は、ログインリストＴ５００及びアクセス履歴リストＴ７００を参照して、データ格納位置リストＴ８００を作成する。具体的には、ヒット率予測プログラム２１２９は、ログインリストＴ５００を参照してログイン済みのユーザを特定し、さらに、アクセス履歴リストＴ７００を参照して、ログイン済みのユーザのアクセス履歴を取得して、データ格納位置リストＴ８００を作成する。
【０３４４】
データ格納位置リストＴ８００は、ログイン済のユーザによってアクセスされたデータの情報を格納する。
【０３４５】
なお、データ格納位置リストＴ８００は、ディスクドライブ２２００に格納されていてもよい。この場合、ＣＰＵ２１４０が、メモリ２１２０上に保存リストＴ８００を読み出して、読み出されたデータ格納位置リストＴ８００を用いて処理を実行する。
【０３４６】
データ格納位置リストＴ８００は、データ名Ｔ８０１、保存位置Ｔ８０２及びデータ量Ｔ８０３を含む。
【０３４７】
データ名Ｔ８０１はデータ名Ｔ７０２と、保存位置Ｔ８０２は保存位置Ｔ５０４と、更にデータ量Ｔ８０３はデータ量Ｔ７０５と同一であるため説明を省略する。
【０３４８】
図２５は、本発明の第３の実施形態における予測値リストＴ９００の一例を示す説明図である。
【０３４９】
予測値リスト作成プログラム１１２５は、各フロントエンドストレージ２０００から取得されたアクセス履歴等の情報に基づいて、予測値リストＴ９００を作成する。予測値リストＴ９００は、各フロントエンドストレージ２０００におけるフロントヒット率の予測値を格納する。
【０３５０】
なお、予測値リストＴ９００は、ディスクドライブ１２００に格納されていてもよい。この場合、ＣＰＵ２１４０が、メモリ２１２０上に予測値リストＴ９００を読み出し、読み出された予測値リストＴ９００を用いて処理を実行する。
【０３５１】
予測値リストＴ９００は、第１の実施形態のストレージリストＴ２００に対応するものである。
【０３５２】
予測値リストＴ９００は、ストレージ名Ｔ９０１、最大容量Ｔ９０２、予測使用容量Ｔ９０３、予測空き容量Ｔ９０４、転送開始基準値Ｔ９０５、予測未転送データ量Ｔ９０６及び予測フロントヒット率Ｔ９０７を含む。なお、ストレージ名Ｔ９０１及び転送開始基準値Ｔ９０５は、ストレージ名Ｔ２０１及び転送開始基準値Ｔ２０５と同一であるため説明を省略する。
【０３５３】
最大容量Ｔ９０２は、ストレージ名Ｔ９０１に対応するフロントエンドストレージ２０００の保存可能な容量の最大値を格納する。
【０３５４】
予測使用容量Ｔ９０３は、使用される容量の予測値を格納する。すなわち、将来使用される可能性のある記憶領域の容量を表す値が格納される。
【０３５５】
予測空き容量Ｔ９０４は、ストレージ名Ｔ２０１に対応するフロントエンドストレージ２０００における使用可能な空き容量の予測値を格納する。
【０３５６】
予測未転送データ量Ｔ９０６は、ストレージ２０００に転送されるデータのデータ量の予測値を格納する。予測未転送データ量Ｔ９０６は、予測使用容量Ｔ９０３から転送開始基準値Ｔ９０５を減算することによって算出することができる。
【０３５７】
予測フロントヒット率Ｔ９０７は、フロントヒット率の予測値を格納する。
【０３５８】
図２５に示す例では、予測使用容量Ｔ９０３、予測空き容量Ｔ９０４、転送開始基準値Ｔ９０５及び予測未転送データ量Ｔ９０６は、絶対値を用いているが、最大容量に対する割合を用いてもよい。
【０３５９】
図２６は、本発明の第３の実施形態におけるデータ転送の制御処理Ｓ９００を説明するフローチャートである。
【０３６０】
データ転送の制御処理Ｓ９００では、バックエンドストレージ１０００が、フロントエンドストレージ２０００と連携して処理を実行する。以下、図２６に沿って各処理について説明する。
【０３６１】
バックエンドストレージ１０００は、以下で説明する処理を周期的に実行してもよいし、ストレージシステムの管理者からの指示に基づいて実行してもよい。
【０３６２】
バックエンドストレージ１０００は、予測値リスト作成処理Ｓ１０００を実行して、予測値リストＴ９００を作成する（ステップＳ９０１）。
【０３６３】
具体的には、予測値リスト作成プログラム１１２５が、予測値リスト作成処理Ｓ１０００を実行して、予測値リストＴ９００を作成し、作成された予測値リストＴ９００をメモリ１１２０又はディスクドライブ１２００に格納する。
【０３６４】
なお、予測値リスト作成処理Ｓ１０００の詳細については、図２７を用いて後述する。
【０３６５】
バックエンドストレージ１０００は、各フロントエンドストレージ２０００に所有データリストＴ３００の更新を指示する（ステップＳ９０２）。なお、ステップＳ９０２は、ステップＳ１０２と同一処理であるため説明を省略する。
【０３６６】
バックエンドストレージ１０００は、作成された予測値リストＴ９００を参照して、データ転送が必要なフロントエンドストレージ２０００が存在するか否かを判定する（ステップＳ９０３）。
【０３６７】
ステップＳ９０３の処理は、ステップＳ１０３と異なった指標に基づいて判定される。具体的には、データ転送制御プログラム１１２１が、予測値リストＴ９００を参照して、予測空き容量Ｔ９０４が予め設定された閾値以下のフロントエンドストレージ２０００が存在するか否かを判定する。
【０３６８】
予測空き容量Ｔ９０４が予め設定された閾値以下のフロントエンドストレージ２０００が存在する場合には、データ転送が必要なフロントエンドストレージ２０００が存在すると判定される。
【０３６９】
すなわち、ステップＳ９０３では、将来の空き容量の予測値に基づいて、データ転送が必要なフロントエンドストレージ２０００を特定する点が第１の実施形態と異なる。
【０３７０】
なお、予め設定された閾値は、管理者によって設定された値であってもよいし、バックエンドストレージ１０００が自動的に設定した値であってもよい。
【０３７１】
なお、本実施形態では、予測空き容量Ｔ９０４に基づいて判定処理を行ったが、本発明はこれに限定されず、予測未転送データ量Ｔ９０６又は予測使用容量Ｔ９０３に基づいて判定してもよい。
【０３７２】
例えば、予測未転送データ量Ｔ９０６が「０」でないフロントエンドストレージ２０００が存在するか否かを判定する方法であってもよい。当該判定方法では、予測未転送データ量Ｔ９０６が「０」でないフロントエンドストレージ２０００が存在する場合に、データ転送が必要なフロントエンドストレージ２０００が存在すると判定される。
【０３７３】
また、フロントエンドストレージ２０００におけるＣＰＵ使用率、メモリ使用率、及びネットワーク使用率等の予測値を算出し、当該予測値に基づいた判定処理であってもよい。
【０３７４】
すなわち、ステップＳ１０３では、フロントエンドストレージ２０００の性能低下を示す負荷情報に基づいて判定できればよい。
【０３７５】
データ転送が必要なフロントエンドストレージ２０００が存在しないと判定された場合、バックエンドストレージ１０００は、処理を終了する。
【０３７６】
データ転送が必要なフロントエンドストレージ２０００が存在すると判定された場合、バックエンドストレージ１０００は、全フロントエンドストレージ２０００にデータ転送の終了を指示する（ステップＳ９０４）。
【０３７７】
具体的には、データ転送制御プログラム１１２１が、予測値リストＴ９００を参照して、当該リストに対応する全てのフロントエンドストレージ２０００に対して、現在実行中のデータ転送を終了するように指示する。
【０３７８】
各フロントエンドストレージ２０００のデータ送受信制御プログラム２１２１は、当該指示を受信すると、現在実行中のデータ転送を終了する。
【０３７９】
バックエンドストレージ１０００は、データ転送の制御処理Ｓ１３００を実行し、所定のフロントエンドストレージ２０００にデータ転送の開始を指示する（ステップＳ９０５）。
【０３８０】
具体的には、データ転送制御プログラム１１２１が、データ転送の制御処理Ｓ１３００を実行して、所定のフロントエンドストレージ２０００にデータ転送の開始を指示する。
【０３８１】
当該指示を受信したフロントエンドストレージ２０００は、受信した指示に従ってデータ転送を実行する。
【０３８２】
なお、データ転送の制御処理Ｓ１３００の詳細は、図３１Ａ及び図３１Ｂを用いて後述する。
【０３８３】
バックエンドストレージ１０００は、フロントエンドストレージ２０００におけるデータ転送の完了を待って（ステップＳ９０６）、ステップＳ９０１に戻り同様の処理を実行する。
【０３８４】
ステップＳ９０６は、ステップＳ１０６と同一の処理であるため説明を省略する。
【０３８５】
図２７は、本発明の第３の実施形態における予測値リスト作成処理Ｓ１０００を説明するフローチャートである。
【０３８６】
予測値リスト作成処理Ｓ１０００では、選択されていないバックエンドストレージ１０００が、フロントエンドストレージ２０００と連携して処理を実行する。以下、図２７に沿って各処理について説明する。
【０３８７】
バックエンドストレージ１０００は、選択されていないフロントエンドストレージ２０００があるか否かを判定する（ステップＳ１００１）。
【０３８８】
ステップＳ１００１の処理は、ステップＳ２０１と同一の処理であるため説明を省略する。
【０３８９】
選択されていないフロントエンドストレージ２０００がないと判定された場合、バックエンドストレージ１０００は、ステップＳ１００５に進む。
【０３９０】
選択されていないフロントエンドストレージ２０００があると判定された場合、バックエンドストレージ１０００は、選択されていないフロントエンドストレージ２０００を一つ選択する（ステップＳ１００２）。
【０３９１】
ステップＳ１００２の処理は、ステップＳ２０２と同一であるため説明を省略する。
【０３９２】
次に、バックエンドストレージ１０００は、選択されたフロントエンドストレージに対して、情報収集処理Ｓ１０５０の実行を指示する（ステップＳ１００３）。
【０３９３】
具体的には、予測値リスト作成プログラム１１２５が、選択されたフロントエンドストレージ２０００に対して、予測値リストＴ９００を作成するために必要な情報を収集するための情報収集処理Ｓ１０５０の実行を指示する。
【０３９４】
ここで、予測値リストＴ９００を作成するのに必要な情報とは、ストレージ名Ｔ９０１、最大容量Ｔ９０２、予測使用容量Ｔ９０３、予測空き容量Ｔ９０４、転送開始基準値Ｔ９０５、予測未転送データ量Ｔ９０６及び予測フロントヒット率Ｔ９０７のことを表す。
【０３９５】
指示を受信したフロントエンドストレージ２０００のデータ管理プログラム２１２２は、情報収集処理Ｓ１０５０を実行して予測値リストＴ９００を作成するために必要な情報をバックエンドストレージ１０００に送信する。なお、情報収集処理Ｓ１０５０の詳細については図２８を用いて後述する。
【０３９６】
バックエンドストレージ１０００は、選択されたフロントエンドストレージ２０００から必要な情報を受信し（ステップＳ１００４）、ステップＳ２０１に戻り同様の処理を実行する。
【０３９７】
ステップＳ１００１において、選択されていないフロントエンドストレージ２０００がないと判定された場合、バックエンドストレージ１０００は、各フロントエンドストレージ２０００から取得した情報に基づいて、予測値リストＴ９００を作成し、処理を終了する（ステップＳ１００５）。
【０３９８】
図２８は、本発明の第３の実施形態における情報収集処理Ｓ１０５０を説明するフローチャートである。
【０３９９】
情報収集処理Ｓ１０５０では、フロントエンドストレージ２０００によって処理が実行される。以下、図２８に沿って各処理について説明する。
【０４００】
情報収集処理Ｓ１０５０の実行指示を受け付けたフロントエンドストレージ２０００は、アクセス量の予測処理Ｓ１１００を実行して、アクセス期待値を算出する（ステップＳ１０５１）。
【０４０１】
具体的には、アクセス量予測プログラム２１２８が、アクセス量の予測処理Ｓ１１００を実行して、アクセス期待値を算出する。アクセス量の予測処理Ｓ１１００の詳細については、図２９を用いて後述する。
【０４０２】
フロントエンドストレージ２０００は、フロントヒット率の予測処理Ｓ１２００を実行して、予測フロントヒット率を算出する（ステップＳ１０５２）。
【０４０３】
具体的には、ヒット率予測プログラム２１２９が、フロントヒット率の予測処理Ｓ１２００を実行して、予測フロントヒット率を算出する。フロントヒット率の予測処理Ｓ１２００の詳細については、図３０を用いて後述する。
【０４０４】
フロントエンドストレージ２０００は、必要な予測値を算出する（ステップＳ１０５３）。ここで、必要な予測値とは、予測使用容量Ｔ９０３、予測空き容量Ｔ９０４及び予測未転送データ量Ｔ９０６に対応する値である。
【０４０５】
具体的には、予測値管理プログラム２１３０が、算出されたアクセス期待値及び予測フロントヒット率を用いて、（式１）〜（式３）に基づいて必要な予測値を算出する。
予測使用容量＝
現在の使用量＋予測更新量＋予測参照量×（１−予測フロントヒット率）…（１）
予測空き容量＝最大容量−予測使用容量…（２）
予測未転送データ量＝予測使用容量−転送開始基準値…（３）
フロントエンドストレージ２０００は、算出された各予測値をバックエンドストレージ１０００に送信し（ステップＳ１０５４）、処理を終了する。
【０４０６】
具体的には、データ管理プログラム２１２２が、ステップＳ１０５１〜ステップＳ１０５２において算出された値を、バックエンドストレージ１０００に送信する。
【０４０７】
なお、本実施形態では、各フロントエンドストレージ２０００によって各予測値が算出されたが、本発明はこれに限定されない。例えば、バックエンドストレージ１０００が、フロントエンドストレージ２０００から必要な情報を取得して、各予測値を算出してもよい。
【０４０８】
図２９は、本発明の第３の実施形態におけるアクセス量の予測処理Ｓ１１００を説明するフローチャートである。
【０４０９】
アクセス量の予測処理Ｓ１１００では、各フロントエンドストレージ２０００によって処理が実行される。以下、図２９に沿って各処理について説明する。
【０４１０】
フロントエンドストレージ２０００は、ログインリストＴ５００を更新する（ステップＳ１１０１）。
【０４１１】
具体的には、ログイン管理プログラム２１２６が、フロントエンドストレージ２０００に対するログイン状態を管理するログイン情報に基づいて、ログインリストＴ５００を更新する。
【０４１２】
フロントエンドストレージ２０００は、選択されていないユーザが存在するか否かを判定する（ステップＳ１１０２）。すなわち、全てのユーザに対して処理が完了したか否かが判定される。
【０４１３】
具体的には、アクセス量予測プログラム２１２８が、ログインリストＴ５００を参照して、選択されていないユーザが存在するか否かを判定する。
【０４１４】
例えば、処理されたユーザの識別子をキャッシュとして保持しておき、当該キャッシュに基づいてログインリストＴ５００を参照することによって、当該判定を実行する方法が考えられる。
【０４１５】
選択されていないユーザが存在しないと判定された場合、フロントエンドストレージ２０００は、ステップＳ１１０５に進む。
【０４１６】
選択されていないユーザが存在すると判定された場合、フロントエンドストレージ２０００は、選択されていないユーザの中からユーザを一人選択する（ステップＳ１１０３）。
【０４１７】
具体的には、アクセス量予測プログラム２１２８が、ログインリストＴ５００を参照して、選択されていないユーザの中から一人を選択する。
【０４１８】
フロントエンドストレージ２０００は、選択されたユーザのアクセス期待値を取得し（ステップＳ１１０４）、ステップＳ１１０２に戻り同様の処理を実行する。
【０４１９】
具体的には、アクセス量予測プログラム２１２８が、現在の時刻を取得し、また、ログインリストＴ５００を参照してユーザの状態Ｔ５０２を取得する。さらに、アクセス量予測プログラム２１２８が、取得された現在の時刻及び状態Ｔ５０２に基づいて、期待値リストＴ６００を参照して、選択されたユーザの現在の時刻に対応するアクセス期待値を取得する。例えば、月曜の９時におけるエンドユーザＡの参照アクセスの期待値は、「１２ＭＢ」となる。
【０４２０】
ステップＳ１１０２において、選択されていないユーザが存在しないと判定された場合、フロントエンドストレージ２０００は、各ユーザのアクセス期待値を合計して、当該フロントエンドストレージ２０００における予測参照アクセス量及び予測更新アクセス量を算出する（ステップＳ１１０５）。
【０４２１】
具体的には、アクセス量予測プログラム２１２８が、ステップＳ１１０４において取得された各ユーザのアクセス期待値を合計し、予測参照アクセス量及び予測更新アクセス量をそれぞれ算出する。
【０４２２】
図３０は、本発明の第３の実施形態におけるフロントヒット率の予測処理Ｓ１２００を説明するフローチャートである。
【０４２３】
フロントヒット率の予測処理Ｓ１２００は、各フロントエンドストレージ２０００によって実行される。以下、図３０に沿って各処理について説明する。
【０４２４】
フロントエンドストレージ２０００は、アクセス履歴リストＴ７００を更新する（ステップＳ１２０１）。
【０４２５】
具体的には、データ管理プログラム２１２２が、各ユーザのアクセス履歴を管理するアクセス履歴情報に基づいて、アクセス履歴リストＴ７００を更新する。
【０４２６】
フロントエンドストレージ２０００は、状態Ｔ５０２が「ログイン済」のユーザのうち、選択されていないユーザが存在するか否かを判定する（ステップＳ１２０２）。
【０４２７】
具体的には、ヒット率予測プログラム２１２９が、ログインリストＴ５００を参照して、状態Ｔ５０２が「ログイン済」のユーザのうち、選択されていないユーザが存在するか否かを判定する。
【０４２８】
例えば、選択されたユーザの識別子をキャッシュとして保持しておき、当該キャッシュに基づいてログインリストＴ５００を参照することによって、当該判定を実行する方法が考えられる。
【０４２９】
状態Ｔ５０２が「ログイン済」のユーザのうち、選択されていないユーザが存在しないと判定された場合、フロントエンドストレージ２０００は、ステップＳ１２０９に進む。
【０４３０】
状態Ｔ５０２が「ログイン済」のユーザのうち、選択されていないユーザが存在すると判定された場合、フロントエンドストレージ２０００は、当該ユーザの中からユーザを選択する（ステップＳ１２０３）。
【０４３１】
具体的には、ヒット率予測プログラム２１２９が、ログインリストＴ５００を参照して、状態Ｔ５０２が「ログイン済」、かつ、まだ選択されていないユーザを選択する。
【０４３２】
フロントエンドストレージ２０００は、選択されたユーザに対応するアクセス履歴情報のうち、選択されていないデータが存在するか否かを判定する（ステップＳ１２０４）。
【０４３３】
具体的には、ヒット率予測プログラム２１２９が、アクセス履歴リストＴ７００を参照して、選択されたユーザのアクセス履歴のうち、選択されていないデータ、すなわち、処理されていないデータが存在するか否かを判定する。
【０４３４】
例えば、選択されたデータの識別子をキャッシュとして保持しておき、当該キャッシュに基づいてアクセス履歴リストＴ７００を参照することによって、当該判定を実行する方法が考えられる。
【０４３５】
選択されていないデータが存在しないと判定された場合、フロントエンドストレージ２０００は、ステップＳ１２０２に戻り同様の処理を実行する。
【０４３６】
選択されていないデータが存在すると判定された場合、フロントエンドストレージ２０００は、選択されていないデータの中からデータを選択する（ステップＳ１２０５）。
【０４３７】
具体的には、ヒット率予測プログラム２１２９が、アクセス履歴リストＴ７００を参照して、選択されたユーザのアクセス履歴のうち、選択されていないデータを選択する。
【０４３８】
フロントエンドストレージ２０００は、選択されたデータがバックエンドストレージ１０００に格納されるか否かを判定する（ステップＳ１２０６）。
【０４３９】
具体的には、ヒット率予測プログラム２１２９が、アクセス履歴リストＴ７００の格納位置Ｔ７０４を参照して、選択されたデータの格納先を判定する。当該データの格納位置Ｔ７０４が「バック」の場合、選択されたデータがバックエンドストレージ１０００に格納されると判定される。
【０４４０】
選択されたデータがバックエンドストレージ１０００に格納されていないと判定された場合、フロントエンドストレージ２０００は、ステップＳ１２０８に進む。
【０４４１】
選択されたデータがバックエンドストレージ１０００に格納されていると判定された場合、フロントエンドストレージ２０００は、選択されたデータに対応するエントリがデータ格納位置リストＴ８００に存在するか否かを判定する（ステップＳ１２０７）。
【０４４２】
具体的には、ヒット率予測プログラム２１２９が、データ格納位置リストＴ８００に選択されたデータに対応するエントリが存在するか否かを判定する。
【０４４３】
なお、格納位置Ｔ７０４が「バック」のデータについては、各ユーザから一度でも当該データへアクセスがあれば格納位置Ｔ７０４は「フロント」へと変更される。このため、格納位置Ｔ７０４が「バック」のデータは、予測フロントヒット率を算出する場合に利用されるデータが格納位置リストＴ８００に複数登録されないようにする必要がある。
【０４４４】
選択されたデータがバックエンドストレージ１０００に格納されていないと判定された場合、又は、選択されたデータに対応するエントリがデータ格納位置リストＴ８００に存在しないと判定された場合、フロントエンドストレージ２０００は、選択されたデータをデータ格納位置リストＴ８００に登録し（ステップＳ１２０８）、ステップＳ１２０２に戻り同様の処理を実行する。
【０４４５】
具体的には、ヒット率予測プログラム２１２９が、データ格納位置リストＴ８００に、選択されたデータに対応するエントリを登録する。
【０４４６】
ステップＳ１２０２において、状態Ｔ５０２が「ログイン済」のユーザのうち、選択されていないユーザが存在しないと判定された場合、フロントエンドストレージ２０００は、状態Ｔ５０２が「ログイン済」であるユーザのうち、フロントエンドストレージ２０００に格納されるデータ量を算出する（ステップＳ１２０９）。
【０４４７】
具体的には、ヒット率予測プログラム２１２９が、データ格納位置リストＴ８００のうち、保存位置Ｔ８０２が「フロント」のエントリのデータ量Ｔ８０３を合計する。
【０４４８】
フロントエンドストレージ２０００は、状態Ｔ５０２が「ログイン済」であるユーザについて全データのデータ量を算出する（ステップＳ１２１０）。
【０４４９】
具体的には、ヒット率予測プログラム２１２９が、データ格納位置リストＴ８００に登録されている全データのデータ量Ｔ８０３を合計する。
【０４５０】
フロントエンドストレージ２０００は、ステップＳ１２０９及びステップＳ１２１０において算出されたそれぞれのデータ量に基づいて、予測フロントヒット率を算出し（Ｓ１２１１）、処理を終了する。
【０４５１】
具体的には、ヒット率予測プログラム２１２９が、ステップＳ１２０９において算出された合計値を、ステップＳ１２１０において算出された合計値で除算することによって予測フロントヒット率を算出する。
【０４５２】
図３１Ａ及び図３１Ｂは、本発明の第３の実施形態におけるデータ転送の制御処理Ｓ１３００を説明するフローチャートである。
【０４５３】
データ転送の制御処理Ｓ１３００では、バックエンドストレージ１０００が各フロントエンドストレージ２０００と連携して処理を実行する。以下、図３１Ａ及び図３１Ｂに沿って各処理について説明する。
【０４５４】
バックエンドストレージ１０００は、予測空き容量の小さい順に予測値リストＴ９００のエントリを整列する（ステップＳ１３０１）。
【０４５５】
具体的には、データ転送制御プログラム１１２１が、予測値リストＴ９００を参照して、予測空き容量Ｔ９０４が少ない順にエントリを整列する。
【０４５６】
なお、本実施形態では、予測空き容量Ｔ９０４の値が小さい順に整列する方法を用いているが本発明はこれに限定されない。例えば、予測未転送データ量Ｔ９０６の値が大きい順に整列させる方法又は予測使用容量Ｔ９０３の値が大きい順に整列させる方法など、管理者が任意の方法を選択できる。
【０４５７】
バックエンドストレージ１０００は、自身の処理状態を確認する（ステップＳ１３０２）。
【０４５８】
具体的には、データ転送制御プログラム１１２１が、データ送受信プログラム１１２４に対して、バックエンドストレージ１０００の処理状況を問い合わせる。データ送受信プログラム１１２４は、バックエンドストレージ１０００の処理状態を示す情報を応答する。
【０４５９】
ここで、バックエンドストレージ１０００の処理状態を示す情報としては、ＣＰＵ負荷、Ｉ／Ｏ待ち、メモリ使用量、及びネットワークの使用率等が考えられるが、本発明はバックエンドストレージ１０００の処理状態を示す情報であればどのようなものであってもよい。
【０４６０】
バックエンドストレージ１０００は、処理限界の状態であるか否かを判定する（ステップＳ１３０３）。すなわち、フロントエンドストレージ２０００から転送されるデータを処理できるか否かが判定される。
【０４６１】
具体的には、データ転送制御プログラム１１２１が、ステップＳ１３０２において取得された情報に基づいて、バックエンドストレージ１０００が処理限界の状態であるか否かを判定する。
【０４６２】
例えば、ＣＰＵ負荷が所定の閾値以上である場合、閾値以上のＩ／Ｏ待ちが発生している場合、又はネットワークの使用率が所定の閾値以上である場合に、バックエンドストレージ１０００が処理限界の状態であると判定される。
【０４６３】
処理限界の状態でない場合、バックエンドストレージ１０００へのデータ転送が実行できる。一方、処理限界の状態である場合、バックエンドストレージ１０００へのデータ転送は実行できないため、他のフロントエンドストレージ２０００へのデータ転送が実行されることとなる。
【０４６４】
処理限界の状態でないと判定された場合、バックエンドストレージ１０００は、予測空き容量が最小のフロントエンドストレージ２０００を選択する（ステップＳ１３０４）。
【０４６５】
具体的には、データ転送制御プログラム１１２１が、予測値リストＴ９００から、最上位のエントリを選択する。
【０４６６】
バックエンドストレージ１０００は、選択されたフロントエンドストレージ２０００に、当該バックエンドストレージ１０００へのデータ転送処理Ｓ４００の実行を指示する（ステップＳ１３０５）。
【０４６７】
具体的には、データ転送制御プログラム１１２１が、選択されたフロントエンドストレージ２０００に対して、バックエンドストレージ１０００へのデータ転送処理Ｓ４００の実行を指示する。なお、当該指示には、フロントエンドストレージ２０００に対応する転送開始基準値Ｔ９０５が含まれる。
【０４６８】
データ転送処理Ｓ４００の指示を受けたフロントエンドストレージ２０００は、データ送受信制御プログラム２１２１を読み出す。データ送受信制御プログラム２１２１は、データ転送処理Ｓ４００を実行して、バックエンドストレージ１０００へのデータ転送を開始する。
【０４６９】
なお、データ転送処理Ｓ４００（図１１参照）は、第１の実施形態と同一である。
【０４７０】
バックエンドストレージ１０００は、予測値リストＴ９００から選択されたフロントエンドストレージ２０００に対応するエントリを削除する（ステップＳ１３０６）。
【０４７１】
具体的には、データ転送制御プログラム１１２１が、予測値リストＴ９００から、選択されたフロントエンドストレージ２０００に対応するエントリを削除する。
【０４７２】
バックエンドストレージ１０００は、予測値リストＴ９００にエントリが存在するか否かを判定する（ステップＳ１３０７）。すなわち、全てのフロントエンドストレージ２０００に対して処理が完了したか否かが判定される。
【０４７３】
具体的には、データ転送制御プログラム１１２１が、予測値リストＴ９００を参照して、当該予測値リストＴ９００にエントリ存在するか否かを判定する。
【０４７４】
予測値リストＴ９００にエントリが存在しないと判定された場合、バックエンドストレージ１０００は、処理を終了する。
【０４７５】
予測値リストＴ９００にエントリが存在すると判定された場合、バックエンドストレージ１０００は、ステップＳ１３０１に戻り同様の処理を実行する。
【０４７６】
ステップＳ１３０３において、処理限界の状態であると判定された場合、バックエンドストレージ１０００は、転送元として予測空き容量が最小のフロントエンドストレージ２０００を、及び、転送先として予測空き容量が最大のフロントエンドストレージ２０００を選択する（ステップＳ１３０８）。
【０４７７】
以後、予測空き容量が最小のフロントエンドストレージ２０００を最小フロントストレージ２０００とも記載し、予測空き容量が最大のフロントエンドストレージ２０００を最大フロントストレージ２０００とも記載する。
【０４７８】
具体的には、データ転送制御プログラム１１２１が、予測値リストＴ９００の最上位のエントリをデータの転送元として選択し、予測値リストＴ９００の最下位のエントリをデータの転送先として選択する。
【０４７９】
なお、本実施形態では、最小フロントエンドストレージ２０００をデータの転送元として、最大フロントエンドストレージ２０００をデータの転送先として選択したが、本発明はこれに限定されない。
【０４８０】
例えば、データの転送先の選択方法については、データの転送元のフロントエンドストレージ２０００とハードウェア構成が同一のものを選択する方法、又は、データの転送元のフロントエンドストレージ２０００とネットワーク性能が同一のものを選択する方法など、データ転送を実行するのに適したフロントエンドストレージ２０００を選択できればよい。
【０４８１】
バックエンドストレージ１０００は、最大フロントストレージ２０００及び最小フロントストレージ２０００の予測空き容量の差を算出し、当該差が所定の閾値以下であるか否かを判定する（ステップＳ１３０９）。
【０４８２】
具体的には、データ転送制御プログラム１１２１が、予測値リストＴ９００を参照して、最大フロントストレージ２０００の予測空き容量Ｔ９０４から最小フロントストレージＹの予測空き容量Ｔ９０４を減算して予測空き容量の差を算出する。さらに、データ転送制御プログラム１１２１は、算出された予測空き容量の差が予め設定された閾値以下であるか否かを判定する。
【０４８３】
これは、２つのフロントエンドストレージ２０００の予測空き容量の差が小さい場合には、転送先のフロントエンドストレージ２０００の空き容量に余裕がなくなり、頻繁にデータ転送処理が実行されることを防止するためである。当該判定処理によって、フロントエンドストレージ２０００間の無駄なデータ転送を抑制することができる。
【０４８４】
なお、所定の閾値は、管理者が設定してもよいし、バックエンドストレージ１０００が自動的に算出してもよい。例えば、転送元のフロントエンドストレージ２０００から転送されるデータ量の２倍の値を閾値として用いることが考えられる。
【０４８５】
算出された予測空き容量の差が所定の閾値以下であると判定された場合、バックエンドストレージ１０００は、データ転送を実行しないため処理を終了する。
【０４８６】
算出された空き容量の差が所定の閾値より大きいと判定された場合、バックエンドストレージ１０００は、最小フロントエンドストレージ２０００に対して、データ転送処理Ｓ５００の実行を指示する（ステップＳ１３１０）。
【０４８７】
具体的には、データ転送制御プログラム１１２１が、最小フロントエンドストレージ２０００に対して、最大フロントエンドストレージ２０００へのデータ転送処理Ｓ５００の実行を指示する。なお、当該指示には、フロントエンドストレージ２０００に対応する転送開始基準値Ｔ９０５が含まれる。
【０４８８】
最小フロントエンドストレージ２０００のデータ送受信制御プログラム２１２１は、当該指示を受け付けると、最大フロントエンドストレージ２０００へのデータ転送処理Ｓ５００を実行して、最大フロントエンドストレージ２０００へのデータ転送を開始する。
【０４８９】
なお、データ転送処理Ｓ５００（図１２参照）は、第１の実施形態と同一である。
【０４９０】
バックエンドストレージ１０００は、最大フロントエンドストレージ２０００及び最小フロントエンドストレージ２０００に対応するエントリを予測値リストＴ９００から削除し（ステップＳ１３１１）、ステップＳ１３０７に戻り同様の処理を実行する。
【０４９１】
具体的には、データ転送制御プログラム１１２１が、最大フロントエンドストレージ２０００及び最小フロントエンドストレージ２０００に対応するエントリを予測値リストＴ９００から削除する。
【０４９２】
第３の実施形態によれば、バックエンドストレージ１０００が、フロントエンドストレージ２０００の予測空き容量に基づいて事前にデータ転送元及び転送先のフロントエンドストレージ２０００を選択し、データ転送を指示することができる。これによって、フロントエンドストレージ２０００の空き容量を確保し、かつ、バックエンドストレージ１０００の負荷を低減することができる。
【０４９３】
本発明は、第１の実施形態、第２の実施形態及び第３の実施形態をそれぞれ組み合わせた形態であってもよい。
【０４９４】
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
【符号の説明】
【０４９５】
５００  ネットワーク
１０００  バックエンドストレージ
１１００  コントローラ
１１１０  ストレージインタフェース
１１２０  メモリ
１１２１  データ転送制御プログラム
１１２２  宛先リスト作成プログラム
１１２３  ストレージリスト作成プログラム
１１２４  データ送受信プログラム
１１２５  予測値リスト作成プログラム
１１３０  ＣＰＵ
１２００  ディスクドライブ
２０００  フロントエンドストレージ
２１００  コントローラ
２１１０  ストレージインタフェース
２１２０  メモリ
２１２１  データ送受信制御プログラム
２１２２  データ管理プログラム
２１２３  データリスト作成プログラム
２１２４  データ送受信制御プログラム
２１２５  交友リスト作成プログラム
２１２６  ログイン管理プログラム
２１２７  期待値リスト作成プログラム
２１２８  アクセス量予測プログラム
２１２９  ヒット率予測プログラム
２１３０  予測値管理プログラム
２１４０  ＣＰＵ
２２００  ディスクドライブ
３０００  エンドユーザ
４０００  アプリケーション
【図１】
2012203434.tif 000003
【図２】
2012203434.tif 000004
【図３】
2012203434.tif 000005
【図４】
2012203434.tif 000006
【図５】
2012203434.tif 000007
【図６】
2012203434.tif 000008
【図７】
2012203434.tif 000009
【図８】
2012203434.tif 000010
【図９】
2012203434.tif 000011
【図１０Ａ】
2012203434.tif 000012
【図１０Ｂ】
2012203434.tif 000013
【図１１】
2012203434.tif 000014
【図１２】
2012203434.tif 000015
【図１３】
2012203434.tif 000016
【図１４】
2012203434.tif 000017
【図１５】
2012203434.tif 000018
【図１６】
2012203434.tif 000019
【図１７】
2012203434.tif 000020
【図１８】
2012203434.tif 000021
【図１９】
2012203434.tif 000022
【図２０】
2012203434.tif 000023
【図２１】
2012203434.tif 000024
【図２２】
2012203434.tif 000025
【図２３】
2012203434.tif 000026
【図２４】
2012203434.tif 000027
【図２５】
2012203434.tif 000028
【図２６】
2012203434.tif 000029
【図２７】
2012203434.tif 000030
【図２８】
2012203434.tif 000031
【図２９】
2012203434.tif 000032
【図３０】
2012203434.tif 000033
【図３１Ａ】
2012203434.tif 000034
【図３１Ｂ】
2012203434.tif 000035