(57)【要約】【課題】プールを共有する仮想論理ボリュームの相互干渉によって性能問題が発生する。【解決手段】ホスト計算機と、ストレージシステムと、管理計算機と、を備える計算機システムであって、前記ストレージシステムは、複数の仮想論理ボリュームへのデータＩ／Ｏ及び一つ以上の実論理ボリュームへのデータＩ／Ｏを前記ホスト計算機から受け付け、前記各仮想論理ボリュームは、それぞれ、一つ以上のプールのうち一つに割り当てられ、前記各プールとして定義された全ての記憶領域に前記物理記憶装置の記憶領域が割り当てられ、前記管理計算機は、前記仮想論理ボリュームに性能問題が発生した場合、前記複数の仮想論理ボリュームのうち一つを選択し、前記選択された仮想論理ボリュームが割り当てられた前記プール以外の前記プール、又は、前記実論理ボリュームのうち少なくとも一方を、前記選択された仮想論理ボリュームの移動先として選択する。【選択図】図３
2008310734.tif 000002
【特許請求の範囲】
【請求項１】
ホスト計算機と、前記ホスト計算機にネットワークを介して接続されるストレージシステムと、前記ホスト計算機及び前記ストレージシステムに接続される管理計算機と、表示装置と、を備える計算機システムであって、
前記ホスト計算機は、前記ネットワークに接続される第１インターフェースと、前記第１インターフェースに接続される第１プロセッサと、前記第１プロセッサに接続される第１メモリと、を備え、
前記管理計算機は、前記ホスト計算機及び前記ストレージシステムに接続される第２インターフェースと、前記第２インターフェースに接続される第２プロセッサと、前記第２プロセッサに接続される第２メモリと、を備え、
前記ストレージシステムは、前記ネットワークに接続されるポートと、前記ポートに接続される制御部と、前記ホスト計算機によって書き込まれたデータを格納する複数の物理記憶装置と、を備え、
前記制御部は、複数の仮想論理ボリュームへのデータＩ／Ｏ、又は、複数の仮想論理ボリュームへのデータＩ／Ｏ及び一つ以上の実論理ボリュームへのデータＩ／Ｏを前記ホスト計算機から受け付け、
前記各仮想論理ボリュームは、それぞれ、一つ以上のプールのうち一つに割り当てられ、
前記各プールは、一つ以上のプールボリュームを含み、
前記各プールボリュームとして定義された全ての記憶領域に前記物理記憶装置の記憶領域が割り当てられ、
前記各仮想論理ボリュームとして定義された記憶領域の少なくとも一部に、前記仮想論理ボリュームが割り当てられた前記プールに含まれる前記プールボリュームに割り当てられた前記物理記憶装置の記憶領域が割り当てられ、
前記各実論理ボリュームとして定義された全ての記憶領域に前記物理記憶装置の記憶領域が割り当てられ、
前記第２プロセッサは、
前記複数の仮想論理ボリューム及び前記一つ以上のプールの少なくとも一つに性能問題が発生したか否かを判定し、
前記複数の仮想論理ボリューム及び前記一つ以上のプールの少なくとも一つに性能問題が発生したと判定された場合、前記複数の仮想論理ボリュームのうち一つを、移動元の仮想論理ボリュームとして選択し、
前記移動元として選択された仮想論理ボリュームが割り当てられた前記プール以外の前記プール、又は、前記実論理ボリュームのうち少なくとも一方を、前記移動元として選択された仮想論理ボリュームの移動先として選択し、
前記移動元として選択された仮想論理ボリュームを示す情報及び前記選択された移動先を示す情報を前記表示装置に表示させること、及び、前記移動元として選択された仮想論理ボリュームを前記移動先として選択されたプール又は実論理ボリュームに移動させる指示を前記制御部に送信することの少なくとも一方を実行することを特徴とする計算機システム。
【請求項２】
前記第２プロセッサは、前記複数の仮想論理ボリュームのうち、性能問題が発生した前記仮想論理ボリュームを、前記移動元の仮想論理ボリュームとして選択することを特徴とする請求項１に記載の計算機システム。
【請求項３】
前記第２プロセッサは、前記複数の仮想論理ボリュームのうち、性能問題が発生し、かつ、定義された容量に対する実際に格納されたデータ量の割合が所定の閾値を超える前記仮想論理ボリュームを、前記移動元の仮想論理ボリュームとして選択することを特徴とする請求項１に記載の計算機システム。
【請求項４】
前記ホスト計算機が前記移動元として選択された仮想論理ボリュームを含む二つ以上の前記仮想論理ボリュームに対してＩ／Ｏを発行する場合、前記第２プロセッサは、前記ホスト計算機からのＩ／Ｏを受ける前記二つ以上の仮想論理ボリュームを、前記移動元の仮想論理ボリュームとして選択することを特徴とする請求項１に記載の計算機システム。
【請求項５】
前記第１プロセッサは、前記第１メモリに格納されたプログラムを実行することによってアプリケーションを実行し、
前記アプリケーションが前記移動元として選択された仮想論理ボリュームを含む二つ以上の前記仮想論理ボリュームに対してＩ／Ｏを発行する場合、前記第２プロセッサは、前記アプリケーションからのＩ／Ｏを受ける前記二つ以上の仮想論理ボリュームを、前記移動元の仮想論理ボリュームとして選択することを特徴とする請求項１に記載の計算機システム。
【請求項６】
前記第２プロセッサは、前記移動元として選択された仮想論理ボリュームが割り当てられた前記プール以外の前記プールの空き容量が、前記移動元として選択された仮想論理ボリュームに格納されたデータ量より小さい場合、前記実論理ボリュームを、前記移動元として選択された仮想論理ボリュームの移動先として選択することを特徴とする請求項１に記載の計算機システム。
【請求項７】
前記移動元として選択された仮想論理ボリュームの移動先として、前記移動元として選択された仮想論理ボリュームが割り当てられた前記プール以外の前記プールが選択された場合、前記第２プロセッサは、前記移動先として選択されたプールに対するＩ／Ｏ性能を示す情報及び前記移動先として選択されたプールの空き容量を示す情報を前記表示装置に表示させることを特徴とする請求項１に記載の計算機システム。
【請求項８】
前記第２プロセッサは、前記複数の仮想論理ボリューム及び前記複数のプールの少なくとも一つに性能問題が発生したと判定された場合、前記複数の仮想論理ボリュームのうち一つを、その仮想論理ボリュームが割り当てられた前記プール以外の前記プールに移動されるべき前記移動元の仮想論理ボリュームとして選択し、その後、前記実論理ボリュームに移動されるべき前記移動元の仮想論理ボリュームを選択することを特徴とする請求項１に記載の計算機システム。
【請求項９】
前記第２プロセッサは、
所定のタイミングで、前記仮想論理ボリューム又は前記プールに対するＩ／Ｏの応答時間、前記仮想論理ボリューム又は前記プールに対する単位時間当たりのＩ／Ｏ回数及び前記仮想論理ボリューム又は前記プールに対するＩ／Ｏの転送速度のうち少なくとも一つを取得し、
前記仮想論理ボリューム又は前記プールに対するＩ／Ｏの応答時間が所定の閾値を超えた場合、前記仮想論理ボリューム又は前記プールにおいて性能劣化が発生したと判定し、
前記仮想論理ボリューム又は前記プールに対する単位時間当たりのＩ／Ｏ回数、又は、前記仮想論理ボリューム又は前記プールに対するＩ／Ｏの転送速度が所定の閾値を超えた場合、前記仮想論理ボリューム又は前記プールにおいて過負荷が発生したと判定し、
前記仮想論理ボリューム又は前記プールにおいて前記性能劣化及び前記過負荷の少なくとも一方が発生した場合、前記仮想論理ボリューム又は前記プールに性能問題が発生したと判定することを特徴とする請求項１に記載の計算機システム。
【請求項１０】
前記複数のプールは、第１プール、第２プール及び第３プールを含み、
前記第１プールに割り当てられ、かつ、前記過負荷が発生した前記仮想論理ボリュームが前記移動元の仮想論理ボリュームとして選択された場合、前記第２プロセッサは、前記第２プールを、前記移動元として選択された仮想論理ボリュームの移動先として選択し、
前記第１プールに割り当てられ、かつ、前記性能劣化が発生した前記仮想論理ボリュームが前記移動元の仮想論理ボリュームとして選択された場合、前記第２プロセッサは、前記第３プールを、前記移動元として選択された仮想論理ボリュームの移動先として選択することを特徴とする請求項９に記載の計算機システム。
【請求項１１】
前記計算機システムは、前記ストレージ装置と接続された第２ストレージ装置をさらに備え、
前記第２ストレージ装置は、一つ以上の第２物理記憶装置を備え、
前記第２物理記憶装置の記憶領域の一部は、第２プールボリューム又は第２実論理ボリュームに割り当てられ、
前記第２プロセッサは、前記第２プールボリュームを含むプール又は前記第２実論理ボリュームを、前記移動元として選択された仮想論理ボリュームの移動先として選択することを特徴とする請求項１に記載の計算機システム。
【請求項１２】
ホスト計算機と、前記ホスト計算機にネットワークを介して接続されるストレージシステムと、表示装置と、を備える計算機システムの制御方法であって、
前記ホスト計算機は、前記ネットワークに接続される第１インターフェースと、前記第１インターフェースに接続される第１プロセッサと、前記第１プロセッサに接続される第１メモリと、を備え、
前記ストレージシステムは、前記ネットワークに接続されるポートと、前記ポートに接続される制御部と、前記ホスト計算機によって書き込まれたデータを格納する複数の物理記憶装置と、を備え、
前記制御部は、複数の仮想論理ボリュームへのデータＩ／Ｏ、又は、複数の仮想論理ボリュームへのデータＩ／Ｏ及び一つ以上の実論理ボリュームへのデータＩ／Ｏを前記ホスト計算機から受け付け、
前記各仮想論理ボリュームは、それぞれ、一つ以上のプールのうち一つに割り当てられ、
前記各プールは、一つ以上のプールボリュームを含み、
前記各プールボリュームとして定義された全ての記憶領域に前記物理記憶装置の記憶領域が割り当てられ、
前記各仮想論理ボリュームとして定義された記憶領域の少なくとも一部に、前記仮想論理ボリュームが割り当てられた前記プールに含まれる前記プールボリュームに割り当てられた前記物理記憶装置の記憶領域が割り当てられ、
前記各実論理ボリュームとして定義された全ての記憶領域に前記物理記憶装置の記憶領域が割り当てられ、
前記方法は、
前記複数の仮想論理ボリューム及び前記一つ以上のプールの少なくとも一つに性能問題が発生したか否かを判定する手順と、
前記複数の仮想論理ボリューム及び前記一つ以上のプールの少なくとも一つに性能問題が発生したと判定された場合、前記複数の仮想論理ボリュームのうち一つを、移動元の仮想論理ボリュームとして選択する手順と、
前記移動元として選択された仮想論理ボリュームが割り当てられた前記プール以外の前記プール、又は、前記実論理ボリュームのうち少なくとも一方を、前記移動元として選択された仮想論理ボリュームの移動先として選択する手順と、
前記移動元として選択された仮想論理ボリュームを示す情報及び前記選択された移動先を示す情報を前記表示装置に表示させること、及び、前記移動元として選択された仮想論理ボリュームを前記移動先として選択されたプール又は実論理ボリュームに移動させる指示を前記制御部に送信することの少なくとも一方を実行する手順と、を含むことを特徴とする方法。
【請求項１３】
前記複数の仮想論理ボリュームのうち一つを、前記移動元の仮想論理ボリュームとして選択する手順は、前記複数の仮想論理ボリュームのうち、性能問題が発生した前記仮想論理ボリュームを、前記移動元の仮想論理ボリュームとして選択することによって実行されることを特徴とする請求項１２に記載の方法。
【請求項１４】
前記複数の仮想論理ボリュームのうち一つを、前記移動元の仮想論理ボリュームとして選択する手順は、前記複数の仮想論理ボリュームのうち、性能問題が発生し、かつ、定義された容量に対する実際に格納されたデータ量の割合が所定の閾値を超える前記仮想論理ボリュームを、前記移動元の仮想論理ボリュームとして選択することによって実行されることを特徴とする請求項１２に記載の方法。
【請求項１５】
前記移動元として選択された仮想論理ボリュームが割り当てられた前記プール以外の前記プール、又は、前記実論理ボリュームのうち少なくとも一方を、前記移動元として選択された仮想論理ボリュームの移動先として選択する手順は、前記移動元として選択された仮想論理ボリュームが割り当てられた前記プール以外の前記プールの空き容量が、前記移動元として選択された仮想論理ボリュームに格納されたデータ量より小さい場合、前記実論理ボリュームを、前記移動元として選択された仮想論理ボリュームの移動先として選択することによって実行されることを特徴とする請求項１２に記載の方法。
【請求項１６】
ホスト計算機と、前記ホスト計算機にネットワークを介して接続されるストレージシステムと、前記ホスト計算機及び前記ストレージシステムに接続される管理計算機と、表示装置と、を備える計算機システムを制御するために実行されるプログラムであって、
前記ホスト計算機は、前記ネットワークに接続される第１インターフェースと、前記第１インターフェースに接続される第１プロセッサと、前記第１プロセッサに接続される第１メモリと、を備え、
前記管理計算機は、前記ホスト計算機及び前記ストレージシステムに接続される第２インターフェースと、前記第２インターフェースに接続される第２プロセッサと、前記第２プロセッサに接続される第２メモリと、を備え、
前記ストレージシステムは、前記ネットワークに接続されるポートと、前記ポートに接続される制御部と、前記ホスト計算機によって書き込まれたデータを格納する複数の物理記憶装置と、を備え、
前記制御部は、複数の仮想論理ボリュームへのデータＩ／Ｏ、又は、複数の仮想論理ボリュームへのデータＩ／Ｏ及び一つ以上の実論理ボリュームへのデータＩ／Ｏを前記ホスト計算機から受け付け、
前記各仮想論理ボリュームは、それぞれ、一つ以上のプールのうち一つに割り当てられ、
前記各プールは、一つ以上のプールボリュームを含み、
前記各プールボリュームとして定義された全ての記憶領域に前記物理記憶装置の記憶領域が割り当てられ、
前記各仮想論理ボリュームとして定義された記憶領域の少なくとも一部に、前記仮想論理ボリュームが割り当てられた前記プールに含まれる前記プールボリュームに割り当てられた前記物理記憶装置の記憶領域が割り当てられ、
前記各実論理ボリュームとして定義された全ての記憶領域に前記物理記憶装置の記憶領域が割り当てられ、
前記プログラムは、
前記複数の仮想論理ボリューム及び前記一つ以上のプールの少なくとも一つに性能問題が発生したか否かを判定する手順と、
前記複数の仮想論理ボリューム及び前記一つ以上のプールの少なくとも一つに性能問題が発生したと判定された場合、前記複数の仮想論理ボリュームのうち一つを、移動元の仮想論理ボリュームとして選択する手順と、
前記移動元として選択された仮想論理ボリュームが割り当てられた前記プール以外の前記プール、又は、前記実論理ボリュームのうち少なくとも一方を、前記移動元として選択された仮想論理ボリュームの移動先として選択する手順と、
前記移動元として選択された仮想論理ボリュームを示す情報及び前記選択された移動先を示す情報を前記表示装置に表示させること、及び、前記移動元として選択された仮想論理ボリュームを前記移動先として選択されたプール又は実論理ボリュームに移動させる指示を前記制御部に送信することの少なくとも一方を実行する手順と、を前記第２プロセッサに実行させることを特徴とするプログラム。
【請求項１７】
前記複数の仮想論理ボリュームのうち一つを、前記移動元の仮想論理ボリュームとして選択する手順は、前記複数の仮想論理ボリュームのうち、性能問題が発生した前記仮想論理ボリュームを、前記移動元の仮想論理ボリュームとして選択することによって実行されることを特徴とする請求項１６に記載のプログラム。
【請求項１８】
前記複数の仮想論理ボリュームのうち一つを、前記移動元の仮想論理ボリュームとして選択する手順は、前記複数の仮想論理ボリュームのうち、性能問題が発生し、かつ、定義された容量に対する実際に格納されたデータ量の割合が所定の閾値を超える前記仮想論理ボリュームを、前記移動元の仮想論理ボリュームとして選択することによって実行されることを特徴とする請求項１６に記載のプログラム。
【請求項１９】
前記移動元として選択された仮想論理ボリュームが割り当てられた前記プール以外の前記プール、又は、前記実論理ボリュームのうち少なくとも一方を、前記移動元として選択された仮想論理ボリュームの移動先として選択する手順は、前記移動元として選択された仮想論理ボリュームが割り当てられた前記プール以外の前記プールの空き容量が、前記移動元として選択された仮想論理ボリュームに格納されたデータ量より小さい場合、前記実論理ボリュームを、前記移動元として選択された仮想論理ボリュームの移動先として選択することによって実行されることを特徴とする請求項１６に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書で開示される技術は、ストレージ装置のボリューム管理に関し、特に、仮想化されたボリュームを含むストレージ装置の性能を維持するためのボリューム管理に関する。
【背景技術】
【０００２】
ストレージ装置仮想化技術のひとつに、Ｉ／Ｏ要求の発生時に動的に記憶領域を割り当てる仮想論理ボリューム（以下、単に仮想ボリュームとも記載）がある（例えば、特許文献１参照）。通常の論理ボリューム（以下、実論理ボリューム又は単に実ボリュームとも記載）では、作成時に定義された容量分の記憶領域があらかじめすべて物理ディスク又はアレイグループ上に確保される。これに対し、仮想論理ボリュームでは、作成時に容量が定義されるだけで記憶領域は確保されず、その仮想論理ボリュームに対するＩ／Ｏ要求が発生したときに初めて記憶領域が必要量だけ割り当てられる。仮想論理ボリュームに割り当てられた（及び、これから割り当てられる）記憶領域は、仮想論理ボリューム専用の領域（以下、この領域をプールと記載する）に確保される。プールは、複数の実論理ボリュームの集まりとして定義される。以下、プールを構成する複数の実論理ボリュームを、プール論理ボリューム又は単にプールボリュームと記載する。仮想論理ボリュームに対するＩ／Ｏは、プールボリュームに対するＩ／Ｏにストレージ装置内部で変換され、処理される。
【０００３】
仮想論理ボリュームでは、定義された容量分の記憶領域をあらかじめすべて用意する必要がなく、Ｉ／Ｏ要求発生時に実際に使用するサイズの領域が動的に確保される。このため、仮想論理ボリュームの利用によって、ストレージ装置の導入時は必要最小限の物理ディスクを搭載し、その後の使用状況に応じて、容量が不足すれば物理ディスクを追加するという運用が可能になる。このようにディスクの利用効率を高めることによって、ストレージ装置の導入コスト及び運用コストを削減することができる。
【０００４】
一方、ストレージ装置に対するＩ／Ｏの負荷を均衡化するために、論理ボリュームを移動（マイグレーション）する技術が開示されている（例えば、特許文献２参照）。この技術によれば、論理ボリュームに対するＩ／Ｏの負荷等に基づいて、論理ボリュームが適切な移動先に移動する。この移動によって、特定の部位に集中していた負荷が分散され、その結果、負荷集中のために低下していた性能を改善することができる。
【特許文献１】特開２００３−１５９１５号公報
【特許文献２】特開２００１−３３７７９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
一つのプールボリューム及びそのプールボリュームが割り当てられるアレイグループを共有する複数の仮想論理ボリュームは、性能上互いに干渉し合う。このため、あるホストによる、あるプールボリュームへの過大なＩ／Ｏ負荷によって、そのプールボリューム（及びそのプールボリュームを含むアレイグループ）を共有する全ホストの性能に悪影響が出る可能性がある。
【０００６】
通常の論理ボリュームにおいても、アレイグループを共有するホストどうしで性能の干渉を生じる。しかし、通常の論理ボリュームには、定義された容量分の記憶領域をあらかじめ割り当てないといけないので、一つのアレイグループを共有する論理ボリュームの数は自ずと制限される。一方、仮想論理ボリュームは、ディスク容量の消費量が高くない場合にはこの制限を受けないため、通常の論理ボリュームと比較すると、ホスト相互間の性能の干渉（悪影響）を生じ易い。仮想論理ボリュームに対するＩ／ＯをプールボリュームのＩ／Ｏに変換するために、負荷分散のためのラウンドロビン方式を採用することが一般的であるが、その場合、性能に関するホスト間の相互干渉はいっそう強まる傾向にある。
【０００７】
こうした仮想論理ボリューム間の相互干渉に伴う問題を解決するために、マイグレーションの技術を応用することができる。具体的には、プール内の他の高負荷な仮想論理ボリュームの影響で性能が劣化した仮想論理ボリューム、又は、他の仮想論理ボリュームの性能に悪影響を与えている高負荷な仮想論理ボリュームを、プール外の実論理ボリュームにマイグレーションする。このように、仮想論理ボリュームをマイグレーションによって実論理ボリューム化することによって、仮想論理ボリューム間の相互干渉が緩和され、それに伴う問題が回避される。
【０００８】
しかし、プールを共有する仮想論理ボリュームの相互干渉によって発生した性能問題を解決するために、仮想論理ボリュームを実論理ボリューム化すると、定義された容量分の記憶領域が無条件に確保されてしまう。実際に使用している容量が少ない段階で仮想論理ボリュームを安易に実論理ボリューム化すると、仮想論理ボリュームのメリットである、ディスク領域の利用効率を高める効果が損なわれることになる。
【課題を解決するための手段】
【０００９】
本願で開示する代表的な発明は、ホスト計算機と、前記ホスト計算機にネットワークを介して接続されるストレージシステムと、前記ホスト計算機及び前記ストレージシステムに接続される管理計算機と、表示装置と、を備える計算機システムであって、前記ホスト計算機は、前記ネットワークに接続される第１インターフェースと、前記第１インターフェースに接続される第１プロセッサと、前記第１プロセッサに接続される第１メモリと、を備え、前記管理計算機は、前記ホスト計算機及び前記ストレージシステムに接続される第２インターフェースと、前記第２インターフェースに接続される第２プロセッサと、前記第２プロセッサに接続される第２メモリと、を備え、前記ストレージシステムは、前記ネットワークに接続されるポートと、前記ポートに接続される制御部と、前記ホスト計算機によって書き込まれたデータを格納する複数の物理記憶装置と、を備え、前記制御部は、複数の仮想論理ボリュームへのデータＩ／Ｏ、又は、複数の仮想論理ボリュームへのデータＩ／Ｏ及び一つ以上の実論理ボリュームへのデータＩ／Ｏを前記ホスト計算機から受け付け、前記各仮想論理ボリュームは、それぞれ、一つ以上のプールのうち一つに割り当てられ、前記各プールは、一つ以上のプールボリュームを含み、前記各プールボリュームとして定義された全ての記憶領域に前記物理記憶装置の記憶領域が割り当てられ、前記各仮想論理ボリュームとして定義された記憶領域の少なくとも一部に、前記仮想論理ボリュームが割り当てられた前記プールに含まれる前記プールボリュームに割り当てられた前記物理記憶装置の記憶領域が割り当てられ、前記各実論理ボリュームとして定義された全ての記憶領域に前記物理記憶装置の記憶領域が割り当てられ、前記第２プロセッサは、前記複数の仮想論理ボリューム及び前記一つ以上のプールの少なくとも一つに性能問題が発生したか否かを判定し、前記複数の仮想論理ボリューム及び前記一つ以上のプールの少なくとも一つに性能問題が発生したと判定された場合、前記複数の仮想論理ボリュームのうち一つを、移動元の仮想論理ボリュームとして選択し、前記移動元として選択された仮想論理ボリュームが割り当てられた前記プール以外の前記プール、又は、前記実論理ボリュームのうち少なくとも一方を、前記移動元として選択された仮想論理ボリュームの移動先として選択し、前記移動元として選択された仮想論理ボリュームを示す情報及び前記選択された移動先を示す情報を前記表示装置に表示させること、及び、前記移動元として選択された仮想論理ボリュームを前記移動先として選択されたプール又は実論理ボリュームに移動させる指示を前記制御部に送信することの少なくとも一方を実行することを特徴とする。
【発明の効果】
【００１０】
本発明の一実施形態によれば、プールを共有する仮想論理ボリュームに性能劣化又は過負荷な状態が発生したとき、ディスク利用状況に配慮した解決方法が自動決定ないし自動実行される。その結果、仮想論理ボリュームのメリットを維持しながら早期に性能問題を解決することができる。
【発明を実施するための最良の形態】
【００１１】
図１は、本発明の一実施形態のシステム構成を示すブロック図である。
【００１２】
本実施の形態の計算機システムは、ストレージエリアネットワーク（ＳＡＮ）環境における業務システム、及び、そのＳＡＮ環境及び業務システムの性能を管理するシステムを含む。
【００１３】
業務システムを構成するハードウェアは、業務クライアント１０１〜１０３、ローカルエリアネットワーク（ＬＡＮ）１０５、ホストサーバ１０６〜１０８、ＳＡＮスイッチ１２１〜１２３、及びストレージ装置１３１である。業務システムを構成するソフトウェアは、アプリケーション１１１及びオペレーティングシステム（ＯＳ）１１３である。
【００１４】
業務クライアント１０１〜１０３は、業務システムのユーザインタフェース機能を提供するパソコン、ワークステーション又はシンクライアント端末等の装置である。業務クライアント１０１〜１０３は、ＬＡＮ１０５を経由してホストサーバ１０６〜１０８のアプリケーション１１１等と通信する。
【００１５】
ホストサーバ１０６は、ＣＰＵ１５１、通信装置１５２、ディスク装置１５３及びメモリ１５４を備える。
【００１６】
ＣＰＵ１５１は、メモリ１５４に格納された種々のソフトウェアプログラムを実行するプロセッサである。以下の説明においてメモリ１５４内のソフトウェアプログラムが実行する処理は、実際にはそれらのソフトウェアプログラムを実行するＣＰＵ１５１によって実行される。
【００１７】
通信装置１５２は、ホストサーバ１０６が他の装置と通信するために使用される。ホストサーバ１０６は、複数の通信装置１５２を備えてもよい。その場合、一つの通信装置１５２は、ＬＡＮ１０５に接続され、ＣＰＵ１５１からの指示に従って性能管理サーバ１１０及び業務クライアント１０１等と通信する、いわゆるネットワークインターフェースカード（ＮＩＣ）であってもよい。別の通信装置１５２は、ＳＡＮスイッチ１２１等に接続され、ＣＰＵ１５１からの指示に従ってストレージ装置１３１と通信する、いわゆるホストバスアダプタ（ＨＢＡ）であってもよい。ホストバスアダプタは、ポート１１５〜１１７を備える。
【００１８】
ディスク装置１５３は、例えばハードディスクドライブ（ＨＤＤ）又はフラッシュメモリのような記憶装置である。ディスク装置１５３には、メモリ１５４に格納されるものと同様のソフトウェアプログラム及びデータ等が格納されてもよい。
【００１９】
メモリ１５４は、例えばダイナミックＲＡＭのような半導体記憶装置である。メモリ１５４には、ＣＰＵ１５１によって実行されるソフトウェアプログラム及びＣＰＵ１５１によって参照されるデータ等が格納される。具体的には、メモリ１５４は、少なくとも、ＣＰＵ１５１によって実行されるアプリケーション１１１、アプリケーションエージェント１１２、ＯＳ１１３及びホストエージェント１１４が格納される。これらは、ディスク装置１５３に格納され、必要に応じてディスク装置１５３からメモリ１５４にコピーされてもよい。
【００２０】
ホストサーバ１０７及び１０８の構成は、ホストサーバ１０６と同様であるため、説明を省略する。図１には、三つのホストサーバ１０６〜１０８を示すが、本実施の形態の計算機システムは、任意の数のホストサーバ１０６等を備えることができる。
【００２１】
ストレージ装置１３１は、制御部１６３及び複数の物理ディスク（図３参照）を備える。
【００２２】
制御部１６３は、ストレージ装置１３１の動作を制御する。例えば、制御部１６３は、ホストサーバ１０６等から受信した要求に従って、物理ディスクへのデータの書き込み及び読み出しを制御する。さらに、制御部１６３は、後述するマイグレーション及び仮想論理ボリュームの管理を実行する。
【００２３】
具体的には、制御部１６３は、少なくともマイグレーション実行部１３５及び仮想ボリューム管理制御部１３６を含む。これらは、制御部１６３内のメモリ（図示省略）に格納されたソフトウェアプログラムを制御部１６３内のプロセッサ（図示省略）が実行することによって実現されてもよい。
【００２４】
さらに、制御部１６３は、ＳＡＮスイッチ１２１等を介してホストサーバ１０６等又はエージェントサーバ１０９と通信するためのポート１３２〜１３４を備える。
【００２５】
複数の物理ディスクは、例えばハードディスクドライブ（ＨＤＤ）である。物理ディスク上に、実論理ボリューム１３７及びプールボリューム１３８〜１３９が設定される。ストレージ装置１３１は、一つ以上の実論理ボリューム１３７及び一つ以上のプールボリューム１３８等を含むことができる。物理ディスク、実論理ボリューム１３７及びプールボリューム１３８等の関係については後述する（図３参照）。
【００２６】
アプリケーション１１１は、業務システムの業務論理機能を提供するソフトウェア又はデータベース（ＤＢ）管理ソフト等である。アプリケーション１１１は、業務クライアント１０１〜１０３からの処理要求に応答し、必要に応じてストレージ装置１３１に対するデータの入出力を実行する。アプリケーション１１１からストレージ装置１３１のデータへのアクセスは、ＯＳ１１３、ホストバスアダプタのポート１１５〜１１７、ＳＡＮスイッチのホスト側ポート１２４〜１２６、ＳＡＮスイッチ１２１〜１２３、ＳＡＮスイッチのストレージ側ポート１２８〜１３０及びストレージ装置１３１のポート１３２〜１３４を経由して実行される。
【００２７】
ホストサーバ１０６等によるストレージ装置１３１へのデータの入出力は、例えばファイバーチャネル（ＦＣ）プロトコルに基づいて実行されてもよいが、その他のプロトコルに基づいて実行されてもよい。
【００２８】
ＳＡＮスイッチ１２１〜１２３は、それらが備えるポート１２４〜１３０の間の接続を切り替えることによって、ホストサーバ１０６等とストレージ装置１３１との間のデータアクセス経路を設定する。
【００２９】
ＳＡＮ環境及び業務システムの性能管理のためのシステムを構成するハードウェアは、性能管理クライアント１０４、性能管理サーバ１１０及びエージェントサーバ１０９である。性能管理のためのシステムを構成するソフトウェアは、性能管理ソフト１２０、アプリケーションエージェント１１２、ホストエージェント１１４及びストレージエージェント１１８である。
【００３０】
性能管理サーバ１１０は、ＣＰＵ１５９、通信装置１６０、ディスク装置１６２及びメモリ１６１を備える。
【００３１】
ＣＰＵ１５９は、メモリ１６１に格納されたソフトウェアプログラムを実行するプロセッサである。以下の説明においてメモリ１６１内のソフトウェアプログラムが実行する処理は、実際にはそのソフトウェアプログラムを実行するＣＰＵ１５９によって実行される。
【００３２】
通信装置１６０は、性能管理サーバ１１０が他の装置と通信するために使用される。通信装置１６０は、ＬＡＮ１０５に接続され、ＣＰＵ１５９からの指示に従って、性能管理クライアント１０４、ホストサーバ１０６等、エージェントサーバ１０９及びストレージ装置１３１と通信する、いわゆるネットワークインターフェースカード（ＮＩＣ）であってもよい。
【００３３】
ディスク装置１６２は、例えばハードディスクドライブ（ＨＤＤ）又はフラッシュメモリのような記憶装置である。ディスク装置１６２には、メモリ１６１に格納されるものと同様のソフトウェアプログラム及びデータ等が格納されてもよい。
【００３４】
メモリ１６１は、例えばダイナミックＲＡＭのような半導体記憶装置である。メモリ１６１には、ＣＰＵ１５９によって実行されるソフトウェアプログラム及びＣＰＵ１５９によって参照されるデータ等が格納される。具体的には、メモリ１６１は、少なくとも、ＣＰＵ１５９によって実行される性能管理ソフト１２０が格納される。性能管理ソフト１２０は、ディスク装置１６２に格納され、必要に応じてディスク装置１６２からメモリ１６１にコピーされてもよい。
【００３５】
エージェントサーバ１０９は、ＣＰＵ１５５、通信装置１５６、ディスク装置１５８及びメモリ１５７を備える。
【００３６】
ＣＰＵ１５５は、メモリ１５７に格納されたソフトウェアプログラムを実行するプロセッサである。以下の説明においてメモリ１５７内のソフトウェアプログラムが実行する処理は、実際にはそのソフトウェアプログラムを実行するＣＰＵ１５５によって実行される。
【００３７】
通信装置１５６は、エージェントサーバ１０９が他の装置と通信するために使用される。エージェントサーバ１０９は、複数の通信装置１５６を備えてもよい。その場合、一つの通信装置１５６は、ＬＡＮ１０５に接続され、ＣＰＵ１５５からの指示に従って少なくとも性能管理サーバ１１０と通信する、いわゆるネットワークインターフェースカード（ＮＩＣ）であってもよい。別の通信装置１５６は、ＳＡＮスイッチ１２１等に接続され、ＣＰＵ１５５からの指示に従ってストレージ装置１３１と通信する、いわゆるホストバスアダプタ（ＨＢＡ）であってもよい。ホストバスアダプタは、ポート１１９を備える。
【００３８】
ディスク装置１５８は、例えばハードディスクドライブ（ＨＤＤ）又はフラッシュメモリのような記憶装置である。ディスク装置１５８には、メモリ１５７に格納されるものと同様のソフトウェアプログラム及びデータ等が格納されてもよい。
【００３９】
メモリ１５７は、例えばダイナミックＲＡＭのような半導体記憶装置である。メモリ１５７には、ＣＰＵ１５５によって実行されるソフトウェアプログラム及びＣＰＵ１５５によって参照されるデータ等が格納される。具体的には、メモリ１５７は、少なくとも、ＣＰＵ１５５によって実行されるストレージエージェント１１８が格納される。ストレージエージェント１１８は、ディスク装置１５８に格納され、必要に応じてディスク装置１５８からメモリ１５７にコピーされてもよい。
【００４０】
性能管理クライアント１０４は、性能管理ソフト１２０のユーザインタフェース機能を提供する装置である。性能管理クライアント１０４は、少なくとも、ユーザに情報を表示するための表示装置１７０及びユーザから入力を受け付けるための入力装置（図示省略）を備える。表示装置１７０は、例えば、ＣＲＴ又は液晶表示装置のような画像表示装置である。表示装置１７０に表示される画面の例については後述する（図４参照）。性能管理クライアント１０４は、ＬＡＮ１０５を経由して性能管理サーバ１１０の性能管理ソフト１２０と通信する。
【００４１】
性能管理ソフト１２０は、ＳＡＮの構成情報及びストレージ装置１３１の仮想論理ボリュームに関する統計情報の収集と監視、並びに、性能問題の検知と解決に関する機能を提供するソフトウェアである。仮想論理ボリュームの性能問題とは、例えば、仮想論理ボリュームにおけるＩ／Ｏ性能の劣化又はＩ／Ｏ過負荷を意味する。性能管理ソフト１２０は、ＳＡＮを構成するハードウェア及びソフトウェアから構成情報及び統計情報を取得するため、それぞれ専用のエージェントソフトウェアを利用する。エージェントソフトウェアの構成及び配置にはいろいろな方法があり得るため、以下にその一例を説明する。
【００４２】
アプリケーションエージェント１１２は、アプリケーション１１１に関する構成情報を取得するためのソフトウェアである。ホストエージェント１１４は、ホストサーバ１０６及びＯＳ１１３に関する構成情報を取得するためのソフトウェアである。ストレージエージェント１１８は、ホストバスアダプタのポート１１９及びＳＡＮスイッチ１２１等を経由して、ストレージ装置１３１に関する構成情報及び統計情報を取得するソフトウェアである。ストレージエージェント１１８は、専用のエージェントサーバ１０９において稼動してもよいし、性能管理サーバ１１０において稼動してもよい。ストレージエージェント１１８は、専用のエージェントサーバ１０９において稼動する場合、ＬＡＮ１０５を経由して性能管理ソフト１２０と通信する。
【００４３】
ストレージ装置１３１の仮想ボリューム管理制御部１３６は、ホストサーバ１０６〜１０８に対して、プール論理ボリューム１３８等の記憶領域を仮想論理ボリュームとして見せる機能を提供する。マイグレーション実行部１３５は、仮想論理ボリュームを実論理ボリューム１３７に移動する機能、及び、あるプールに属する仮想論理ボリュームを別のプールに属する仮想論理ボリュームに移動する機能を提供する。図１では、マイグレーション実行部１３５及び仮想ボリューム管理制御部１３６がストレージ装置１３１の制御部１６３に内蔵される構成を示した。しかし、マイグレーション実行部１３５及び仮想ボリューム管理制御部１３６は、ストレージ装置１３１とは独立したサーバにおいて稼動してもよい。
【００４４】
マイグレーション実行部１３５が提供する論理ボリュームの移動機能についてさらに説明する。あるサーバＡの入出力先である論理ボリュームＡを論理ボリュームＢに移動する場合を例として説明する。例えば、サーバＡは、ホストサーバ１０６〜１０８のいずれかであってもよいし、論理ボリュームＡ及び論理ボリュームＢは、それぞれ、実論理ボリューム１３７、プールボリューム１３８、プールボリューム１３９、又は、後述する仮想論理ボリュームのいずれかであってもよい。移動前の時点で、論理ボリュームＡは使用中であり論理ボリュームＢは未使用である。論理ボリュームにはそれぞれサーバが識別するための固有の番号（以下、論理ボリューム番号と記載）が割り当てられている。論理ボリュームＡ及び論理ボリュームＢに割り当てられている論理ボリューム番号をそれぞれ「０１」及び「０２」とする。これらの論理ボリューム番号は、後述する図８の論理ボリューム番号格納欄８０４に格納される。
【００４５】
論理ボリュームを移動するために、論理ボリュームＡのデータの読み込み及びそのデータの論理ボリュームＢへの書き込みが繰り返し実行される。論理ボリュームＡ中のすべてのデータを論理ボリュームＢにコピーし終わると、論理ボリュームＡ及び論理ボリュームＢに割り当てられている論理ボリューム番号が入れ替えられる。この番号の入れ替えによって、以降、サーバＡは、番号「０１」のボリュームとして論理ボリュームＢを、番号「０２」のボリュームとして論理ボリュームＡを認識するようになる。以上によって、サーバＡは論理ボリューム番号「０１」のボリュームに対し入出力を実行し続けているが、サーバＡによって入出力されるデータの実体は論理ボリュームＡから論理ボリュームＢに移動するという、論理ボリュームの移動機能が実現される。
【００４６】
論理ボリュームの移動機能における論理ボリューム間のデータの具体的なコピー方法には以下の二つがある。
【００４７】
第１のコピー方法では、コピー元論理ボリュームに定義された容量の全アドレスを対象としてデータのコピーが実行される。この方法は単純であるが、コピー元論理ボリュームが仮想論理ボリュームである場合、コピー元論理ボリュームのうち、まだホストサーバ１０６等によってデータが書き込まれていない領域についても規定値等のデータを仮定してコピーされてしまう。このため、仮想論理ボリュームをプール間で移動するためにこの方法を適用すると、コピー先仮想論理ボリュームの全ての領域にプールの記憶領域が割り当てられてしまう。その結果、未使用領域の記憶容量を消費しないという仮想論理ボリュームのメリットが得られなくなる。従って、第１のコピー方法は、仮想論理ボリュームを実論理ボリューム化する（すなわち、仮想論理ボリュームを実論理ボリュームにマイグレーションする）ためにのみ使用することが望ましい。
【００４８】
第２のコピー方法では、コピー元論理ボリュームに定義された容量の全アドレスのうち、ホストサーバ１０６等によってデータが書き込まれたアドレスのみを対象としてデータのコピーが実行される。仮想ボリューム管理制御部１３６は、仮想論理ボリュームに対する出力要求があったとき、記憶領域を割り当てるとともに、仮想論理ボリュームの論理アドレスと、その論理アドレスに割り当てた記憶領域の物理アドレスとの対応関係を記録する。従って、仮想ボリューム管理制御部１３６は、ホストサーバ１０６等によって書き込みが行なわれた仮想論理ボリュームの全論理アドレスの情報を保持している。第２のコピー方法は、この情報を利用することによって、ホストサーバ１０６等による書き込みが行なわれたアドレスのデータのみコピーすることを可能とする。
【００４９】
図２は、本発明の一実施形態の計算機システムの機能ブロック図である。
【００５０】
ＳＡＮの構成情報及び仮想論理ボリュームに関する統計情報の収集及び監視は以下のように行なわれる。なお、以下の説明において、プール性能・負荷算出部２０２、性能劣化・過負荷検知部２０３、ユーザ定義部２０６、ボリューム選択部２０７、ボリューム一覧表示部２１１、エージェント情報収集部２１２、実ボリューム化部２１３及びプール間移動部２１４は、性能管理ソフト１２０に含まれるプログラムモジュールである。また、プール統計情報２０１、ボリューム統計情報２０４、制御情報２０５、プール構成情報２０８、リソース間関連情報２０９及び選択ボリューム情報２１０は、メモリ１６１又はディスク装置１６２に格納される。
【００５１】
アプリケーションエージェント１１２、ホストエージェント１１４及びストレージエージェント１１８は、所定のタイミングで（例えば、スケジューリング設定に従い、定期的にタイマーによって）起動されるか、あるいは、性能管理ソフト１２０の要求によって起動されて、自エージェントが担当する監視対象装置又はソフトウェアから構成情報又は統計情報を取得する。性能管理ソフト１２０のエージェント情報収集部２１２も同様に、所定のタイミングで（例えば、スケジューリング設定に従い定期的に）起動され、ＳＡＮ環境内の各エージェント１１２、１１４、１１８から構成情報又は統計情報を収集する。そして、エージェント情報収集部２１２は、収集した情報をリソース間関連情報２０９、プール構成情報２０８又はボリューム統計情報２０４のいずれかとして格納する。
【００５２】
リソースとは、ＳＡＮを構成するハードウェア（サブシステム装置、ＳＡＮスイッチ装置、ホストサーバ等）とその物理的又は論理的な構成要素（ポート、プロセッサ、キャッシュメモリ、アレイグループ、論理ボリューム等）、及び、これらハードウェア上で実行されるプログラム（オペレーティングシステム、データベース管理システム、業務ソフト等）とその論理的な構成要素（ファイル、テーブル等）を総称したものである。
【００５３】
リソース間関連情報２０９とは、リソース間に存在する性能に関する依存関係及びリソースの属性情報を総称したものである。例えば、リソースＡに対するＩ／Ｏ命令がリソースＢに対するＩ／Ｏ命令に変換されて処理される場合、又は、リソースＡに対するＩ／Ｏ命令を処理するときにリソースＢの処理能力が使用される場合、リソースＡとリソースＢの間に性能に関する依存関係がある。
【００５４】
性能管理ソフト１２０のプール性能・負荷算出部２０２は、エージェント情報収集部２１２による収集処理の後に起動される。プール性能・負荷算出部２０２は、プール構成情報２０８の内容に基づいてボリューム統計情報２０４をプール毎に集計し、集計した情報をプール統計情報２０１として格納する。
【００５５】
リソース間関連情報２０９のテーブル構成及びテーブル構造については、具体例を図５〜図１０で説明する。プール構成情報２０８のテーブル構成及びテーブル構造については具体例を図１１及び図１２で説明する。ボリューム統計情報２０４のテーブル構造については具体例を図１３で説明する。プール統計情報２０１のテーブル構造については具体例を図１４で説明する。
【００５６】
仮想論理ボリュームに関する性能問題の検知及び解決は以下のように行なわれる。
【００５７】
性能管理ソフト１２０の性能劣化・過負荷検知部２０３は、所定のタイミングで（例えばスケジューリング設定に従い定期的に）起動される。性能劣化・過負荷検知部２０３は、起動すると、ボリューム統計情報２０４及びプール統計情報２０１に格納された統計値を調べ、仮想論理ボリューム又はプールに性能劣化又は過負荷な状態が発生していないか判定する。性能劣化又は過負荷が発生していると判定された場合、性能劣化・過負荷検知部２０３は、ボリューム選択部２０７を起動する。
【００５８】
ボリューム選択部２０７は、上記のように性能劣化・過負荷検知部２０３によって起動されてもよいし、ユーザ操作による性能管理クライアント１０４からの要求によって起動されてもよい。ボリューム選択部２０７は、起動されると、ボリューム統計情報２０４に格納された統計値及びリソース間関連情報２０９に格納された情報に基づいて、性能問題解決の方法として、「仮想論理ボリュームの実論理ボリューム化」又は「プール間移動」を示す情報を選択ボリューム情報２１０として出力する。選択ボリューム情報２１０に格納された性能問題解決方法は、性能管理ソフト１２０の動作モードに応じて自動又は手動で実行される。
【００５９】
性能管理ソフト１２０が自動動作モードである場合、ボリューム選択部２０７が処理を完了した後、実ボリューム化部２１３及びプール間移動部２１４が自動的に起動される。
【００６０】
性能管理ソフト１２０が手動動作モードである場合、ボリューム一覧表示部２１１が性能問題解決方法の一覧を性能管理クライアント１０４に表示する。ユーザが一覧中の解決方法を選択して性能管理クライアント１０４から実行指示を送信すると、実ボリューム化部２１３及びプール間移動部２１４のうち実行指示に対応するものが起動される。
【００６１】
自動又は手動で起動された実ボリューム化部２１３又はプール間移動部２１４は、選択ボリューム情報２１０に格納された内容に基づいてストレージ装置１３１のマイグレーション実行部１３５にマイグレーション実行命令を発行する。制御情報２０５は、性能劣化又は過負荷の発生を判定するのに使用される各種閾値、及び、性能管理ソフト１２０の動作モード等、性能管理ソフト１２０の機能を調整するための様々なパラメータを格納する。制御情報２０５に格納されるパラメータは、ユーザが性能管理クライアント１０４を介してユーザ定義部２０６を使用することによって設定又は変更される。
【００６２】
ボリューム一覧表示部２１１が性能管理クライアント１０４に表示する画面の具体例は図４で説明する。ボリューム統計情報２０４、プール統計情報２０１、制御情報２０５及び選択ボリューム情報２１０のテーブル構造については、具体例をそれぞれ図１３〜図１６で説明する。性能劣化・過負荷検知部２０３の処理手順の詳細は図１７で説明する。また、ボリューム選択部２０７の処理手順の詳細は図１８〜図２３で説明する。実ボリューム化部２１３の処理手順の詳細は図２５で、プール間移動部２１４の処理手順の詳細は図２６で説明する。
【００６３】
図３は、本発明の一実施形態のＳＡＮ環境におけるリソースの構成及びリソース間の関連に関する具体例を示すブロック図である。
【００６４】
図３のＳＡＮ環境のハードウェアは、ホストサーバＡ（３０１）〜ホストサーバＤ（３０４）という４つのホストサーバと、スイッチＡ（３２０）、スイッチＢ（３２１）という２つのＳＡＮスイッチ装置、及び、ストレージＡ（３２２）という１つのストレージ装置で構成される。
【００６５】
ホストサーバＡ（３０１）〜ホストサーバＤ（３０４）の各々は、図１に示すホストサーバ１０６〜１０８のいずれかであってもよい。スイッチＡ（３２０）及びスイッチＢ（３２１）の各々は、図１に示すＳＡＮスイッチ１２１〜１２３のいずれかであってもよい。ストレージＡ（３２２）は、図１に示すストレージ装置１３１であってもよい。
【００６６】
ホストサーバＡ（３０１）〜ホストサーバＤ（３０４）では、それぞれ、アプリケーションＡ（３０５）〜アプリケーションＤ（３０８）が稼動している。これらのアプリケーションの各々は、図１に示すアプリケーション１１１であってもよい。
【００６７】
なお、図３に示すリソースの数は、図１に示すリソースの数と必ずしも一致しない。これは、それぞれの図において、説明のために必要でない部分が省略されているためである。
【００６８】
ホストサーバＡ（３０１）〜ホストサーバＤ（３０４）では、アプリケーションＡ（３０５）等の構成情報を取得するためのアプリケーションエージェント１１２、及び、ホストサーバＡ（３０１）等のハードウェア及びＯＳ１１３の構成情報を取得するためのホストエージェント１１４が稼動している。ファイルＡ（３０９）〜ファイルＦ（３１４）及びボリュームＡ（３１５）〜ボリュームＥ（３１９）は、ホストエージェント１１４が情報取得の対象とするリソースの例である。ファイルは、ＯＳがデータの入出力サービスを提供する単位であり、ボリュームは、ファイルを外部記憶装置に格納する領域としてＯＳによって管理される。
【００６９】
図３には、リソース間を結ぶ線が表示されている。これらの線は、線によって結ばれた二つのリソースの間に何らかの関連があることを表す。例えば、アプリケーションＢ（３０６）をファイルＢ（３１０）及びファイルＣ（３１１）と結ぶ線が表示されている。これらの線は、アプリケーションＢ（３０６）がファイルＢ（３１０）及びファイルＣ（３１１）にＩ／Ｏを発行するという関連を表す。ファイルＢ（３１０）とボリュームＢ（３１６）とを結ぶ線は、ファイルＢに対するＩ／Ｏ負荷がボリュームＢのリード又はライトになるという関連を表す。
【００７０】
図３では省略されているが、ストレージＡ（３２２）の構成情報及び統計情報を取得するため、ストレージエージェント１１８が稼動している。ストレージエージェント１１８が情報取得対象とするリソースは、少なくとも、複合論理ボリュームＡ（３２３）〜複合論理ボリュームＣ（３２５）、仮想論理ボリュームＡ（３２６）〜仮想論理ボリュームＨ（３３３）、実論理ボリュームＡ（３３４）〜実論理ボリュームＤ（３３７）、プールＡ（３３８）〜プールＣ（３４０）、プールボリュームＡ（３４１）〜プールボリュームＨ（３４８）、及び、アレイグループＡ（３４９）〜アレイグループＦ（３５４）である。
【００７１】
各アレイグループＡ（３４９）等は、ストレージ装置１３１の制御部１６３の機能によって複数の物理ディスク３６０から生成された、論理的に一つの高速かつ高信頼のディスクドライブである。
【００７２】
各物理ディスク３６０は、物理的なデータ記憶領域を含む記憶装置である。各物理ディスク３６０は、例えばハードディスクドライブ（ＨＤＤ）であるが、その他の記憶装置（例えば、フラッシュメモリのような半導体記憶装置又は光ディスク装置等）であってもよい。ストレージＡ（３２２）は、任意の数の物理ディスク３６０を備えることができる。物理的な記憶領域が不足した場合、物理ディスク３６０が追加されてもよい。
【００７３】
実ボリュームＡ（３３４）等及びプールボリュームＡ（３４１）等は、ストレージ装置の制御部１６３の機能が一つのアレイグループを切り分けることによって作成された、ホストサーバＡ（３０１）等の用途に合ったサイズの論理的なディスクドライブである。実ボリュームＡ（３３４）等及びプールボリュームＡ（３４１）等は、作成時に定義容量分の記憶領域があらかじめアレイグループＡ（３４９）等の上に確保される。
【００７４】
仮想ボリュームＡ（３２６）等も実ボリュームＡ（３３４）等と同様、ストレージ装置１３１の仮想ボリューム管理制御部１３６の機能によってホストサーバＡ（３０１）等に論理的なディスクドライブとして認識される。しかし、実ボリュームＡ（３３４）等と異なり、仮想ボリュームＡ（３２６）等が作成された時には容量が定義されるだけで、定義された容量分の記憶領域は確保されない。その後、仮想ボリュームＡ（３２６）等に対するＩ／Ｏ要求が発生したときに、記憶領域が必要量だけ割り当てられる。
【００７５】
プールＡ（３３８）等は、仮想ボリュームＡ（３２６）等に記憶領域を割り当てるためのものであり、プールボリュームＡ（３４１）等の集まりとして定義される。
【００７６】
複合ボリュームＡ（３２３）等は、ストレージ装置の制御部１６３の機能によって複数の仮想ボリュームＡ（３２６）等又は実ボリュームＡ（３３４）等から作成された論理的なディスクドライブである。ホストサーバＡ（３０１）等は、一つの複合ボリュームＡ（３２３）等を一つの論理的なディスクドライブとして認識する。
【００７７】
ホストサーバＡ（３０１）等のボリュームＡ（３１５）等は、ストレージＡ（３２２）の論理ボリューム（すなわち、実ボリュームＡ（３３４）等、仮想ボリュームＡ（３２６）等又は複合ボリュームＡ（３２３）等）に割り当てられる。ボリュームＡ（３１５）等と論理ボリュームとの対応関係は、ホストエージェント１１４から取得できる。二つのリソース間の関連情報をつなぎ合わせるといわゆるＩ／Ｏ経路が得られる。
【００７８】
例えば、アプリケーションＡ（３０５）はファイルＡ（３０９）にＩ／Ｏを発行し、ファイルＡ（３０９）はボリュームＡ（３１５）に確保され、ボリュームＡ（３１５）は複合ボリュームＡ（３２３）に割り当てられ、複合ボリュームＡ（３２３）は仮想ボリュームＡ（３２６）と仮想ボリュームＢ（３２７）で構成され、仮想ボリュームＡ（３２６）と仮想ボリュームＢ（３２７）はプールＡ（３３８）に割り当てられ、プールＡ（３３８）はプールボリュームＡ（３４１）〜プールボリュームＤ（３４４）で構成され、プールボリュームＡ（３４１）とプールボリュームＢ（３４２）はアレイグループＡ（３４９）に、プールボリュームＣ（３４３）とプールボリュームＤ（３４４）はアレイグループＢ（３５０）に割り当てられる。
【００７９】
この場合、アプリケーションＡ（３０５）が発生させるＩ／Ｏの負荷は、ファイルＡ（３０９）から、ボリュームＡ（３１５）、複合ボリュームＡ（３２３）、仮想ボリュームＡ（３２６）及び仮想ボリュームＢ（３２７）、プールＡ（３３８）、プールボリュームＡ（３４１）〜プールボリュームＤ（３４４）、アレイグループＡ（３４９）及びアレイグループＢ（３５０）を経由する経路を経て物理ディスク３６０に達する。
【００８０】
図３に示すように、複数のアレイグループが同一の物理ディスク３６０を含むことはない。一つのアレイグループが複数のプールに割り当てられることはない。さらに、一つのアレイグループがプールと実論理ボリュームの両方に割り当てられることはない。このため、一つのプールに割り当てられた仮想論理ボリュームに対するＩ／Ｏと、別のプールに割り当てられた仮想論理ボリュームに対するＩ／Ｏと、実論理ボリュームに対するＩ／Ｏとが、物理ディスク３６０において相互に干渉することはない。例えば、プールＡ（３３８）に割り当てられた仮想論理ボリュームＡ（３２６）に対するＩ／Ｏと、プールＢ（３３９）に割り当てられた仮想論理ボリュームＥ（３３０）に対するＩ／Ｏと、実論理ボリュームＡ（３３４）に対するＩ／Ｏとが、物理ディスク３６０において相互に干渉することはない。
【００８１】
本実施の形態において、三つあるプールは以下のように使い分けられる。最初に仮想ボリュームＡ（３２６）等が作成された時点で、その仮想ボリュームＡ（３２６）等にはプールＡ（３３８）の記憶領域が割り当てられる。その後、プールＡ（３３８）又はプールＡ（３３８）中の仮想ボリュームＡ（３２６）等に性能問題が発生した場合、その解決のため、プールＡ（３３８）中の仮想ボリュームＡ（３２６）等のうち、過負荷なもの又は性能劣化したものを別のプールに移動する。具体的には、過負荷な仮想ボリュームＡ（３２６）等の移動先がプールＢ（３３９）であり、性能劣化した仮想ボリュームＡ（３２６）等の移動先がプールＣ（３４０）である。
【００８２】
例えば、プールＡ（３３８）内の仮想ボリュームＡ（３２６）の性能が劣化した場合、仮想ボリュームＡ（３２６）をプールＣ（３４０）に移動することによって、仮想ボリュームＡ（３２６）に対するＩ／Ｏは、プールＡ（３３８）内の他の仮想ボリュームＢ（３２７）等に対するＩ／Ｏと物理ディスク３６０において干渉しなくなる。このため、劣化した仮想ボリュームＡ（３２６）の性能が回復する可能性がある。
【００８３】
あるいは、プールＡ（３３８）内の仮想ボリュームＡ（３２６）において過負荷が発生した場合、この過負荷が仮想ボリュームＡ（３２６）自身又はプールＡ（３３８）内の他の仮想ボリュームＢ（３２７）等の性能劣化の原因となる可能性がある。この場合も、仮想ボリュームＡ（３２６）をプールＢ（３３９）に移動することによって、仮想ボリュームＡ（３２６）に対するＩ／Ｏは、仮想ボリュームＢ（３２７）等に対するＩ／Ｏと物理ディスク３６０において干渉しなくなる。このため、劣化した仮想ボリュームＢ（３２７）の性能が回復する（又は、仮想ボリュームＢ（３２７）の性能劣化が予防される）可能性がある。
【００８４】
上記の場合において、性能問題が発生した仮想ボリュームＡ（３２６）等を実論理ボリューム化することによっても、物理ディスク３６０におけるＩ／Ｏの干渉を防ぐことができる。このため、実論理ボリューム化によっても、劣化した性能が回復する（又は性能劣化が予防される）可能性がある。
【００８５】
同様にして、プールＢ（３３９）又はプールＣ（３４０）中の仮想ボリュームＥ（３３０）等又は仮想ボリュームＧ（３３２）等に性能問題が発生した場合は、それらのプール中の過負荷となった又は性能劣化した仮想ボリュームＥ（３３０）等又は仮想ボリュームＧ（３３２）等を実論理ボリューム化することによって、問題が解決される可能性がある。
【００８６】
このような性能問題を解決するための処理について、以下、図４以降を参照して詳細に説明する。
【００８７】
なお、図３は、プールＡ（３３８）〜プールＣ（３４０）がいずれもストレージＡ（３２２）内の物理ディスク３６０によって構成される例を示す。しかし、ストレージＡ（３２２）に接続されたストレージＡ（３２２）以外のストレージ装置（図示省略）内の物理ディスク（図示省略）によってプールが構成されてもよい。例えば、ストレージＡ（３２２）以外のストレージ装置（図示省略）内の物理ディスクによって作成されたプール（図示省略）が、プールＡ（３３８）等にマッピングされてもよい。
【００８８】
図４は、本発明の一実施形態のボリューム一覧表示部２１１によって表示される画面の一例を示す説明図である。
【００８９】
具体的には、図４は、ボリューム一覧表示部２１１からの指示に従って性能管理クライアント１０４の表示装置１７０に表示される画面の例である。
【００９０】
表示装置１７０に表示される表示画面４０１は、日時表示欄４０２、仮想ボリューム表示欄４０３、プール表示欄４０４、処置方法表示欄４０５及び移動先プール表示欄４２０の各欄を含む。仮想ボリューム表示欄４０３、プール表示欄４０４及び処置方法表示欄４０５の各行は、図４に示すように相互に対応付けて表示される。
【００９１】
日時表示欄４０２には、表示画面４０１に含まれる情報が取得された日時が表示される。この日時の値は、後述するボリューム統計情報テーブル１３０１（図１３参照）の日時格納欄１３０２に格納されている値と対応する。
【００９２】
仮想ボリューム表示欄４０３には、性能問題が発生した仮想論理ボリュームＡ（３２６）等に関する情報が表示される。仮想ボリューム表示欄４０３は、番号表示欄４０６、応答時間表示欄４０７、ＩＯＰＳ表示欄４０８、転送速度表示欄４０９、容量表示欄４１０、使用量表示欄４１１及び状態表示欄４１２を含む。
【００９３】
番号表示欄４０６には、性能問題が発生した仮想論理ボリュームに付与された論理ボリューム番号が表示される。論理ボリューム番号については後述する（図８等参照）。
【００９４】
応答時間表示欄４０７には、性能問題が発生した仮想論理ボリュームにおいて、日時表示欄４０２が示す日時に測定されたＩ／Ｏの応答時間［ｓｅｃ］が表示される。この値は、ボリューム統計情報テーブル１３０１のＩ／Ｏ応答時間格納欄１３０４から読み出される。本実施形態では、仮想論理ボリュームの性能を示す指標として応答時間が用いられる。
【００９５】
ＩＯＰＳ表示欄４０８には、性能問題が発生した仮想論理ボリュームにおいて、日時表示欄４０２が示す日時に測定された単位時間当たりのＩ／Ｏ回数［ＩＯ／ｓ］が表示される。この値は、ボリューム統計情報テーブル１３０１のＩＯＰＳ格納欄１３０５から読み出される。
【００９６】
転送速度表示欄４０９には、性能問題が発生した仮想論理ボリュームにおいて、日時表示欄４０２が示す日時に測定された転送速度［ＭＢ／ｓ］が表示される。この値は、ボリューム統計情報テーブル１３０１の転送速度格納欄１３０６から読み出される。本実施形態では、仮想論理ボリュームの負荷を示す指標としてＩＯＰＳ及び転送速度が使用される。
【００９７】
容量表示欄４１０には、性能問題が発生した仮想論理ボリュームに定義された容量［ＭＢ］が表示される。この値は、後述する論理ボリュームテーブル８０１（図８参照）の定義容量格納欄８０５から読み出される。
【００９８】
使用量表示欄４１１には、性能問題が発生した仮想論理ボリュームに定義された容量に対する実際に使用されている容量の割合［％］が表示される。この値は、ボリューム統計情報テーブル１３０１の使用容量格納欄１３０７及び論理ボリュームテーブル８０１の定義容量格納欄８０５に格納されている値から算出される。
【００９９】
状態表示欄４１２には、性能問題が発生した仮想論理ボリュームの状態（具体的には、発生している性能問題の種類）が表示される。ここに表示される状態は、応答時間表示欄４０７、ＩＯＰＳ表示欄４０８又は転送速度表示欄４０９に表示されている値及びそれらに対応する閾値（後述する制御情報テーブル１５０１（図１５）参照）に基づいて判定される。
【０１００】
図４の例では、仮想ボリューム表示欄４０３の第１行の番号表示欄４０６、応答時間表示欄４０７、ＩＯＰＳ表示欄４０８、転送速度表示欄４０９、容量表示欄４１０、使用量表示欄４１１及び状態表示欄４１２に、それぞれ、「０５」、「０．３０」、「１．２」、「５．８」、「１０，０００」、「７３．８」及び「性能劣化」が表示されている。この場合、論理ボリューム番号「０５」が付与された仮想論理ボリュームの応答時間「０．３０」［ｓｅｃ］が、制御情報テーブル１５０１のボリューム性能劣化判定Ｉ／Ｏ応答時間閾値格納欄１５０２に格納された「０．２０」より大きいため、性能劣化が発生したと判定されている。なお、論理ボリュームテーブル８０１に示すように、仮想論理ボリュームＢ（３２７）に論理ボリューム番号「０５」が付与されている。
【０１０１】
プール表示欄４０４には、性能問題が発生した仮想論理ボリュームＡ（３２６）等が所属するプールＡ（３３８）等（すなわち、仮想論理ボリュームＡ（３２６）等が割り当てられたプールＡ（３３８）等）に関する情報が表示される。プール表示欄４０４は、名称表示欄４１３、応答時間表示欄４１４、ＩＯＰＳ表示欄４１５、転送速度表示欄４１６及び状態表示欄４１７を含む。
【０１０２】
名称表示欄４１３には、性能問題が発生した仮想論理ボリュームが所属するプールの名称（又は識別子）が表示される。
【０１０３】
応答時間表示欄４１４には、性能問題が発生した仮想論理ボリュームが所属するプールにおいて、日時表示欄４０２が示す日時に測定されたＩ／Ｏの応答時間［ｓｅｃ］が表示される。この値は、プール統計情報テーブル１４０１のＩ／Ｏ応答時間格納欄１４０４から読み出される。
【０１０４】
ＩＯＰＳ表示欄４１５には、性能問題が発生した仮想論理ボリュームが所属するプールにおいて、日時表示欄４０２が示す日時に測定された単位時間当たりのＩ／Ｏ回数［ＩＯ／ｓ］が表示される。この値は、プール統計情報テーブル１４０１のＩＯＰＳ格納欄１４０５から読み出される。
【０１０５】
転送速度表示欄４１６には、性能問題が発生した仮想論理ボリュームが所属するプールにおいて、日時表示欄４０２が示す日時に測定された転送速度［ＭＢ／ｓ］が表示される。この値は、プール統計情報テーブル１４０１の転送速度格納欄１４０６から読み出される。
【０１０６】
状態表示欄４１７には、性能問題が発生した仮想論理ボリュームが所属するプールの状態（具体的には、発生している性能問題の種類）が表示される。ここに表示される状態は、応答時間表示欄４１４、ＩＯＰＳ表示欄４１５又は転送速度表示欄４１６に表示されている値及びそれらに対応する閾値（後述する図１５参照）に基づいて判定される。
【０１０７】
図４の例では、プール表示欄４０４の第１行の名称表示欄４１３、応答時間表示欄４１４、ＩＯＰＳ表示欄４１５、転送速度表示欄４１６及び状態表示欄４１７に、それぞれ、「Ａ」、「０．１３」、「８．７」、「４８．３」及び「正常」が表示されている。この行は、仮想ボリューム表示欄４０３の第１行に対応する。この場合、論理ボリューム番号「０５」が付与された仮想論理ボリュームＢ（３２７）は、プールＡ（３３８）に所属している。プールＡ（３３８）の応答時間、ＩＯＰＳ及び転送速度は、それぞれ、制御情報テーブル１５０１のプール性能劣化判定Ｉ／Ｏ応答時間閾値格納欄１５０５、プール過負荷判定ＩＯＰＳ閾値格納欄１５０６及びプール過負荷判定転送速度閾値格納欄１５０７に格納された値を超えない。このため、仮想論理ボリュームＢ（３２７）は正常であると判定される。
【０１０８】
処置方法表示欄４０５には、発生した性能問題を解決するために有効であると推定される方法等が表示される。処置方法表示欄４０５は、問題解決策表示欄４１８及び実行ボタン４１９を含む。
【０１０９】
問題解決策表示欄４１８には、発生した性能問題を解決するために有効であると推定される方法（すなわち問題解決策）が表示される。一つの仮想論理ボリュームの性能問題を解決するために複数の問題解決策が問題解決策表示欄４１８に表示されてもよい。問題解決策表示欄４１８に表示される値は、後述する選択ボリュームテーブル１６０１の対処法種別格納欄１６０３及び対処法パラメータ格納欄１６０４から読み出される。
【０１１０】
実行ボタン４１９は、表示された問題解決策の実行をユーザが指示するために、問題解決策ごとに表示される。ユーザは、性能管理クライアント１０４の入力装置（図示省略）を用いて実行ボタン４１９を操作する（具体的には、例えばマウスを用いて実行ボタン４１９をクリックする）ことによって、問題解決策の実行を指示することができる。
【０１１１】
図４の例では、処置方法表示欄４０５の第１行の問題解決策表示欄４１８に、「プールＣに移動」が表示される。この行は、仮想ボリューム表示欄４０３及びプール表示欄４０４の第１行に対応する。この場合、仮想論理ボリュームＢ（３２７）に発生した性能劣化に対する解決策、すなわち、仮想論理ボリュームＢ（３２７）をプールＣ（３４０）に移動することが表示されている。
【０１１２】
例えば、ユーザが「プールＣに移動」に対応する実行ボタン４１９を操作すると、仮想論理ボリュームＢ（３２７）をプールＣ（３４０）に移動させる指示が性能管理クライアント１０４から性能管理サーバ１１０に送信される。性能管理ソフト１２０は、その指示に従って処理を実行する（後述する図２６のステップ２６０２参照）。
【０１１３】
移動先プール表示欄４２０には、処置方法表示欄４０５に表示された問題解決策によって移動先として指定されたプールに関する情報が表示される。処置方法表示欄４０５において、いずれのプールも移動先として指定されていない場合、移動先プール表示欄４２０は表示されなくてもよい。移動先プール表示欄４２０は、名称表示欄４２１、応答時間表示欄４２２、ＩＯＰＳ表示欄４２３、転送速度表示欄４２４、状態表示欄４２５及び空き容量表示欄４２６を含む。
【０１１４】
名称表示欄４２１には、処置方法表示欄４０５に表示された問題解決策によって移動先として指定されたプールの名称（又は識別子）が表示される。
【０１１５】
応答時間表示欄４２２には、指定されたプールにおいて、日時表示欄４０２が示す日時に測定されたＩ／Ｏの応答時間［ｓｅｃ］が表示される。この値は、プール統計情報テーブル１４０１のＩ／Ｏ応答時間格納欄１４０４から読み出される。
【０１１６】
ＩＯＰＳ表示欄４２３には、指定されたプールにおいて、日時表示欄４０２が示す日時に測定された単位時間当たりのＩ／Ｏ回数［ＩＯ／ｓ］が表示される。この値は、プール統計情報テーブル１４０１のＩＯＰＳ格納欄１４０５から読み出される。
【０１１７】
転送速度表示欄４２４には、指定されたプールにおいて、日時表示欄４０２が示す日時に測定された転送速度［ＭＢ／ｓ］が表示される。この値は、プール統計情報テーブル１４０１の転送速度格納欄１４０６から読み出される。
【０１１８】
状態表示欄４２５には、指定されたプールの状態（具体的には、発生している性能問題の種類）が表示される。ここに表示される状態は、応答時間表示欄４２２、ＩＯＰＳ表示欄４２３又は転送速度表示欄４２４に表示されている値及びそれらに対応する閾値（図１５参照）に基づいて判定される。
【０１１９】
空き容量表示欄４２６には、指定されたプールの空き容量が表示される。指定されたプールの空き容量は、指定されたプールに定義された容量、及び、指定されたプールに所属する仮想論理ボリュームが使用している容量に基づいて算出される。指定されたプールに定義された容量は、後述するプール・プールボリューム間関連テーブル１２０１及び論理ボリュームテーブル８０１に基づいて算出することができる。指定されたプールに所属する仮想論理ボリュームが使用している容量は、後述する仮想論理ボリューム・プール間関連テーブル１１０１及びボリューム統計情報テーブル１３０１に基づいて算出することができる。
【０１２０】
図４の例では、移動先プール表示欄４２０に、プールＣ（３４０）に関する情報が表示されている。これは、処置方法表示欄４０５の第１行に「プールＣに移動」が表示されているためである。ユーザは、名称表示欄４２１、応答時間表示欄４２２、ＩＯＰＳ表示欄４２３、転送速度表示欄４２４、状態表示欄４２５及び空き容量表示欄４２６に表示された値に基づいて、仮想論理ボリュームＢ（３２７）をプールＣ（３４０）に移動するか、あるいは移動しないかを判定することができる。
【０１２１】
例えば、応答時間表示欄４２２、ＩＯＰＳ表示欄４２３及び転送速度表示欄４２４に表示された値の少なくとも一つが、制御情報テーブル１５０１に格納された閾値を越える場合、又は、状態表示欄４２５に「正常」以外の値が表示されている場合、又は、空き容量表示欄４２６に所定の閾値を超える値が表示されている場合、ユーザは、仮想論理ボリュームＢ（３２７）をプールＣ（３４０）に移動しないと判定してもよい。
【０１２２】
次に、性能管理ソフト１２０が使用するリソース間関連情報２０９のテーブル構成及びテーブル構造の一例を、図５〜図１０を参照して説明する。リソース間関連情報２０９は、アプリケーション・ファイル間関連テーブル５０１、ファイル・ボリューム間関連テーブル６０１、ボリューム・論理ボリューム間関連テーブル７０１、論理ボリュームテーブル８０１、複合論理ボリューム・要素論理ボリューム間関連テーブル９０１及び実論理ボリューム・アレイグループ間関連テーブル１００１からなる。これらのテーブルの内容は、エージェント情報収集部２１２がアプリケーションエージェント１１２、ホストエージェント１１４及びストレージエージェント１１８から収集した情報に基づいて作成される。
【０１２３】
図５は、本発明の一実施形態のアプリケーション・ファイル間関連テーブル５０１の構造の一例を示す説明図である。
【０１２４】
アプリケーション・ファイル間関連テーブル５０１は、アプリケーションとファイルリソースとの間の性能の依存関係を記録するためのものであり、ホストサーバ識別子格納欄５０２、アプリケーション識別子格納欄５０３及びファイル識別子格納欄５０４からなる。テーブルの各行は、アプリケーションとファイルの間の依存関係の一つに対応する。
【０１２５】
ホストサーバ識別子格納欄５０２には、各ホストサーバの識別子が格納される。
【０１２６】
アプリケーション識別子格納欄５０３には、各ホストサーバにおいて稼動するアプリケーション（すなわち、各ホストサーバのＣＰＵ１５１によって実行されるアプリケーション）の識別子が格納される。
【０１２７】
ファイル識別子格納欄５０４には、各アプリケーションがＩ／Ｏを発行するファイルの識別子が格納される。
【０１２８】
図５では例えば、テーブルの第１行のホストサーバ識別子格納欄５０２、アプリケーション識別子格納欄５０３及びファイル識別子格納欄５０４に、それぞれ、「ホストサーバＡ」、「アプリケーションＡ」及び「ファイルＡ」が格納されている。これは、ホストサーバＡ（３０１）上のアプリケーションＡ（３０５）がファイルＡ（３０９）に対してＩ／Ｏを発行するという関係を示す。このテーブルの内容は、エージェント情報収集部２１２がアプリケーションエージェント１１２から収集した情報に基づいて作成される。
【０１２９】
図６は、本発明の一実施形態のファイル・ボリューム間関連テーブル６０１の構造の一例を示す説明図である。
【０１３０】
ファイル・ボリューム間関連テーブル６０１は、ファイルとそのファイルが割り当てられるボリュームとの関係を記録するためのものであり、ホストサーバ識別子格納欄６０２、ファイル識別子格納欄６０３及びボリューム識別子格納欄６０４からなる。テーブルの各行は、ファイルとボリュームの割り当ての関係の一つに対応する。
【０１３１】
ホストサーバ識別子格納欄６０２には、各ホストサーバの識別子が格納される。
【０１３２】
ファイル識別子格納欄６０３には、各ホストサーバ上のファイルの識別子が格納される。
【０１３３】
ボリューム識別子格納欄６０４には、各ファイルが割り当てられるボリュームの識別子が格納される。
【０１３４】
図６では例えば、テーブルの第１行のホストサーバ識別子格納欄６０２、ファイル識別子格納欄６０３及びボリューム識別子格納欄６０４に、それぞれ、「ホストサーバＡ」、「ファイルＡ」及び「ボリュームＡ」が格納されている。これは、ホストサーバＡ（３０１）上のファイルＡ（３０９）がボリュームＡ（３１５）に割り当てられているという関係を示す。このテーブルの内容は、エージェント情報収集部２１２がホストエージェント１１４から収集した情報に基づいて作成される。
【０１３５】
図７は、本発明の一実施形態のボリューム・論理ボリューム間関連テーブル７０１の構造の一例を示す説明図である。
【０１３６】
ボリューム・論理ボリューム間関連テーブル７０１は、ホストサーバ側のボリュームとそのボリュームが割り当てられるストレージ装置側の論理ボリュームとの関係を記録するためのものであり、ホストサーバ識別子格納欄７０２、ボリューム識別子格納欄７０３及び論理ボリューム番号格納欄７０４からなる。テーブルの各行は、ボリュームと論理ボリュームの割り当ての関係の一つに対応する。
【０１３７】
ホストサーバ識別子格納欄７０２には、各ホストサーバの識別子が格納される。
【０１３８】
ボリューム識別子格納欄７０３には、各ホストサーバ上のボリュームの識別子が格納される。
【０１３９】
論理ボリューム番号格納欄７０４には、各ボリュームが割り当てられる論理ボリュームに付与された論理ボリューム番号が格納される。
【０１４０】
図７では例えば、テーブルの第１行のホストサーバ識別子格納欄７０２、ボリューム識別子格納欄７０３及び論理ボリューム番号格納欄７０４に、それぞれ、「ホストサーバＡ」、「ボリュームＡ」及び「０１」が記録されている。後で図８を参照して説明するように、論理ボリューム番号「０１」は、複合論理ボリュームＡ（３２３）に付与されている。このため、第１行は、ホストサーバＡ（３０１）上のボリュームＡ（３１５）が複合論理ボリュームＡ（３２３）に割り当てられているという関係を示す。このテーブルの内容は、エージェント情報収集部２１２がホストエージェント１１４から収集した情報に基づいて作成される。
【０１４１】
図８は、本発明の一実施形態の論理ボリュームテーブル８０１の構造の一例を示す説明図である。
【０１４２】
論理ボリュームテーブル８０１は、ストレージＡ（３２２）内の各論理ボリューム（すなわち、実論理ボリューム、仮想論理ボリューム、複合論理ボリューム又はプールボリューム）の属性を記録するためのものである。論理ボリュームテーブル８０１は、論理ボリューム識別子格納欄８０２、ボリューム種別格納欄８０３、論理ボリューム番号格納欄８０４、定義容量格納欄８０５及び使用状態格納欄８０６からなる。テーブルの各行は、一つの論理ボリュームに対応する。
【０１４３】
論理ボリューム識別子格納欄８０２には、論理ボリュームの識別子が格納される。
【０１４４】
ボリューム種別格納欄８０３には、論理ボリュームの種別を表すコードが格納される。種別コードは、複合論理ボリュームを示す「複合」、仮想論理ボリュームを示す「仮想」、実論理ボリュームを示す「実」、又は、プールボリュームを示す「プール」である。
【０１４５】
論理ボリューム番号格納欄８０４には、各論理ボリュームに付与された論理ボリューム番号が格納される。論理ボリューム番号は、ホストサーバＡ（３０１）〜ホストサーバＤ（３０４）がアクセス先として指定する番号である。ストレージＡ（３２２）の制御部１６３は、論理ボリューム番号格納欄８０４及び論理ボリューム識別子格納欄８０２を参照することによって、アクセス先として指定された論理ボリュームを特定し、特定された論理ボリュームへのアクセスを実行する。
【０１４６】
定義容量格納欄８０５には、各論理ボリュームに定義された容量を示す値が格納される。
【０１４７】
使用状態格納欄８０６には、各論理ボリュームの使用状態を示す値が格納される。例えば、使用状態格納欄８０６には、「使用中」又は「未使用」が格納される。「使用中」は、論理ボリュームがいずれかのホストサーバＡ（３０１）等によって使用されていることを示す。「未使用」は、論理ボリュームがいずれのホストサーバＡ（３０１）等によっても使用されていないことを示す。例えば、図３によれば、実論理ボリュームＢ（３３５）及び実論理ボリュームＣ（３３６）は、どのホストサーバＡ（３０１）等にも割り当てられていない。この場合、実論理ボリュームＢ（３３５）及び実論理ボリュームＣ（３３６）に対応する使用状態格納欄８０６には、「未使用」が格納される。マイグレーション先として指定される論理ボリュームの使用状態は「未使用」である必要がある。マイグレーションが終了した後、マイグレーション先の論理ボリュームの使用状態は「使用中」に変更される。
【０１４８】
図８の例では、テーブルの第１行の論理ボリューム識別子格納欄８０２、ボリューム種別格納欄８０３、論理ボリューム番号格納欄８０４、定義容量格納欄８０５及び使用状態格納欄８０６に、それぞれ、「複合論理ボリュームＡ」、「複合」、「０１」、「２０，０００」及び「使用中」が格納されている。これは、複合論理ボリュームＡ（３２３）が、２０，０００メガバイト（ＭＢ）の容量を定義され、現在使用されている複合論理ボリュームであること、及び、アクセス先として論理ボリューム番号「０１」を指定された場合、そのアクセスは複合論理ボリュームＡ（３２３）に対して実行されることを示す。
【０１４９】
図９は、本発明の一実施形態の複合論理ボリューム・要素論理ボリューム間関連テーブル９０１の構造の一例を示す説明図である。
【０１５０】
複合論理ボリューム・要素論理ボリューム間関連テーブル９０１は、複合論理ボリュームＡ（３２３）等と、それらを構成する論理ボリュームとの関係を記録するためのものである。複合論理ボリューム・要素論理ボリューム間関連テーブル９０１は、論理ボリューム識別子格納欄９０２及び論理ボリューム番号格納欄９０３からなる。
【０１５１】
論理ボリューム識別子格納欄９０２には、各複合論理ボリュームＡ（３２３）等の識別子が格納される。
【０１５２】
論理ボリューム番号格納欄９０３には、各複合論理ボリュームＡ（３２３）等を構成する論理ボリュームに付与された論理ボリューム番号が格納される。
【０１５３】
図９の例では、第１行及び第２行の論理ボリューム識別子格納欄９０２のいずれにも、「複合論理ボリュームＡ」が格納されている。一方、第１行及び第２行の論理ボリューム番号格納欄９０３に、それぞれ、「０４」及び「０５」が格納されている。これは、複合論理ボリュームＡ（３２３）が、論理ボリューム番号「０４」及び「０５」が付与された二つの論理ボリュームによって構成されることを示す。図８によれば、仮想論理ボリュームＡ（３２６）及び仮想論理ボリュームＢ（３２７）に、それぞれ、論理ボリューム番号「０４」及び「０５」が付与されている。したがって、複合論理ボリュームＡ（３２３）は、仮想論理ボリュームＡ（３２６）及び仮想論理ボリュームＢ（３２７）によって構成されている（図３参照）。
【０１５４】
図１０は、本発明の一実施形態の実論理ボリューム・アレイグループ間関連テーブル１００１の構造の一例を示す説明図である。
【０１５５】
実論理ボリューム・アレイグループ間関連テーブル１００１は、実論理ボリュームＡ（３３４）等又はプールボリュームＡ（３４１）等と、それらを含むアレイグループＡ（３４９）等との関係を記録するためのものである。実論理ボリューム・アレイグループ間関連テーブル１００１は、論理ボリューム識別子格納欄１００２及びアレイグループ識別子格納欄１００３からなる。
【０１５６】
論理ボリューム識別子格納欄１００２には、各実論理ボリュームＡ（３３４）等又はプールボリュームＡ（３４１）等の識別子が格納される。
【０１５７】
アレイグループ識別子格納欄１００３には、各実論理ボリュームＡ（３３４）等又はプールボリュームＡ（３４１）等を含むアレイグループＡ（３４９）等の識別子が格納される。
【０１５８】
図１０の例では、第１行の論理ボリューム識別子格納欄１００２及びアレイグループ識別子格納欄１００３に、それぞれ、「実論理ボリュームＡ」及び「アレイグループＥ」が格納されている。これは、アレイグループＥ（３５３）に含まれる記憶領域の一部が、実論理ボリュームＡ（３３４）として割り当てられていることを示す。
【０１５９】
次に、プール構成情報２０８のテーブル構成及びテーブル構造の一例を、図１１及び図１２を参照して説明する。
【０１６０】
図１１及び図１２は、性能管理ソフト１２０が使用するプール構成情報２０８のテーブル構成及びテーブル構造の一例を示す図である。プール構成情報２０８は、仮想論理ボリューム・プール間関連テーブル１１０１及びプール・プールボリューム間関連テーブル１２０１からなる。これらのテーブルの内容は、エージェント情報収集部２１２がストレージエージェント１１８から収集した情報に基づいて作成される。
【０１６１】
図１１は、本発明の一実施形態の仮想論理ボリューム・プール間関連テーブル１１０１の構造の一例を示す説明図である。
【０１６２】
仮想論理ボリューム・プール間関連テーブル１１０１は、仮想論理ボリュームとその仮想論理ボリュームが割り当てられるプールとの関係を記録するためのものであり、論理ボリューム識別子格納欄１１０２及びプール識別子格納欄１１０３からなる。テーブルの各行は、仮想論理ボリュームとプールの割り当てに関する関係の一つに対応する。
【０１６３】
論理ボリューム識別子格納欄１１０２には、各仮想論理ボリュームＡ（３２６）等の識別子が格納される。
【０１６４】
プール識別子格納欄１１０３には、各仮想論理ボリュームＡ（３２６）等が割り当てられたプールＡ（３３８）等の識別子が格納される。
【０１６５】
図１１では例えば、テーブルの第１行の論理ボリューム識別子格納欄１１０２及びプール識別子格納欄１１０３に、それぞれ、「仮想論理ボリュームＡ」及び「プールＡ」が格納されている。これは、仮想論理ボリュームＡ（３２６）がプールＡ（３３８）に割り当てられていることを示す。
【０１６６】
図１２は、本発明の一実施形態のプール・プールボリューム間関連テーブル１２０１の構造の一例を示す説明図である。
【０１６７】
プール・プールボリューム間関連テーブル１２０１は、プールＡ（３３８）等と、それらに割り当てられたプールボリュームＡ（３４１）等との関係を記録するためのものである。プール・プールボリューム間関連テーブル１２０１は、プール識別子格納欄１２０２及び論理ボリューム識別子格納欄１２０３からなる。
【０１６８】
プール識別子格納欄１２０２には、各プールＡ（３３８）等の識別子が格納される。
【０１６９】
論理ボリューム識別子格納欄１２０３には、各プールＡ（３３８）等に割り当てられたプールボリュームＡ（３４１）等の識別子が格納される。
【０１７０】
図１２の例では、第１行から第４行までのプール識別子格納欄１２０２に、「プールＡ」が格納されている。一方、第１行から第４行までの論理ボリューム識別子格納欄１２０３に、それぞれ、「プールボリュームＡ」、「プールボリュームＢ」、「プールボリュームＣ」及び「プールボリュームＤ」が格納されている。これは、プールボリュームＡ（３４１）、プールボリュームＢ（３４２）、プールボリュームＣ（３４３）及びプールボリュームＤ（３４４）が、プールＡ（３３８）に割り当てられていることを示す。
【０１７１】
次に、性能管理ソフト１２０が使用するボリューム統計情報２０４のテーブル構成及びテーブル構造の一例を、図１３を参照して説明する。ボリューム統計情報２０４は、ボリューム統計情報テーブル１３０１からなる。
【０１７２】
図１３は、本発明の一実施形態のボリューム統計情報テーブル１３０１の構造の一例を示す説明図である。
【０１７３】
ボリューム統計情報テーブル１３０１は、所定のタイミングで（例えば所定の周期で）測定された仮想論理ボリュームの統計値を記録するためのものであり、エージェント情報収集部２１２がストレージエージェント１１８から収集した情報に基づいて作成される。ボリューム統計情報テーブル１３０１は、日時格納欄１３０２、論理ボリューム識別子格納欄１３０３、Ｉ／Ｏ応答時間格納欄１３０４、ＩＯＰＳ格納欄１３０５、転送速度格納欄１３０６及び使用容量格納欄１３０７からなる。ボリューム統計情報テーブル１３０１の各行は、ある日時における各仮想論理ボリュームの統計値を表す。
【０１７４】
日時格納欄１３０２には、統計値を収集した日時が格納される。
【０１７５】
論理ボリューム識別子格納欄１３０３には、統計値の収集対象となった仮想論理ボリュームの識別子が格納される。
【０１７６】
Ｉ／Ｏ応答時間格納欄１３０４には、収集したＩ／Ｏ応答時間の値が格納される。
【０１７７】
ＩＯＰＳ格納欄１３０５には、収集したＩＯＰＳ（１秒あたりのＩ／Ｏ回数）の値が格納される。
【０１７８】
転送速度格納欄１３０６には、収集した転送速度の値が格納される。
【０１７９】
使用容量格納欄１３０７には、収集した使用容量の値が格納される。
【０１８０】
図１３の例では、テーブルの第１行の各欄１３０２〜１３０７に、それぞれ、「２００７／０４／０７  １０：３４：００」、「仮想論理ボリュームＡ」、「０．０４」、「９．５」、「２７．１」及び「１０，０００」が格納されている。これは、２００７年４月７日１０時３４分に、仮想論理ボリュームＡ（３２６）に関するＩ／Ｏ応答時間の値として０．０４［秒］が、ＩＯＰＳの値として９．５［ＩＯ回／秒］が、転送速度の値として２７．１［ＭＢ／秒］が、使用容量の値として１０，０００［ＭＢ］が取得されたことを示す。
【０１８１】
次に、性能管理ソフト１２０が使用するプール統計情報２０１のテーブル構成及びテーブル構造の一例を、図１４を参照して説明する。プール統計情報２０１は、プール統計情報テーブル１４０１からなる。
【０１８２】
図１４は、本発明の一実施形態のプール統計情報テーブル１４０１の構造の一例を示す説明図である。
【０１８３】
プール統計情報テーブル１４０１は、仮想論理ボリュームの統計値に基づいて算出されたプールの統計値を記録するためのものであり、プール性能・負荷算出部２０２がボリューム統計情報テーブル１３０１及び仮想論理ボリューム・プール間関連テーブル１１０１の内容に基づいて算出した内容を含む。例えば、プールのＩ／Ｏ応答時間、ＩＯＰＳ及び転送速度は、それぞれ、そのプールに属するすべての仮想論理ボリュームのＩ／Ｏ応答時間、ＩＯＰＳ及び転送速度を平均（又は合計）することによって算出される。プール統計情報テーブル１４０１は、日時格納欄１４０２、プール識別子格納欄１４０３、Ｉ／Ｏ応答時間格納欄１４０４、ＩＯＰＳ格納欄１４０５及び転送速度格納欄１４０６からなる。プール統計情報テーブル１４０１の各行は、ある日時における各プールの統計値を表わす。
【０１８４】
日時格納欄１４０２には、統計値が収集された日時が格納される。
【０１８５】
プール識別子格納欄１４０３には、プールの識別子が格納される。
【０１８６】
Ｉ／Ｏ応答時間格納欄１４０４には、算出されたＩ／Ｏ応答時間の値が格納される。
【０１８７】
ＩＯＰＳ格納欄１４０５には、算出されたＩＯＰＳの値が格納される。
【０１８８】
転送速度格納欄１４０６には、算出された転送速度の値が格納される。
【０１８９】
図１４の例では、テーブルの第１行に、「２００７／０４／０７  １０：３４：００」、「プールＡ」、「０．０６」、「１２．４」及び「２５．２」が格納されている。これは、２００７年４月７日１０時３４分に収集された情報に基づいて、プールＡ（３３８）に関するＩ／Ｏ応答時間の値として０．０６［秒］が、ＩＯＰＳの値として１２．４［ＩＯ回／秒］が、転送速度の値として２５．２［ＭＢ／秒］が算出されたことを示す。
【０１９０】
次に、性能管理ソフト１２０が使用する制御情報２０５について説明する。制御情報２０５は、制御情報テーブル１５０１からなる。
【０１９１】
図１５は、本発明の一実施形態の制御情報テーブル１５０１の構造の一例を示す説明図である。
【０１９２】
制御情報テーブル１５０１は、性能管理ソフト１２０が種々の制御を実行するために参照する情報（例えば、性能管理ソフト１２０が種々の判定を実行するために参照される閾値）を記録するためのものであり、以下に説明する格納欄１５０２〜１５１３からなる。性能管理ソフト１２０のユーザ定義部２０６は、性能管理クライアント１０４からの要求に従って、制御情報テーブル１５０１に情報を格納する。
【０１９３】
ボリューム性能劣化判定Ｉ／Ｏ応答時間閾値格納欄１５０２には、仮想論理ボリュームの性能が劣化したか否かを判定するために使用されるＩ／Ｏ応答時間の閾値が格納される。図１５の例では、Ｉ／Ｏ応答時間が０．２０［秒］を超えた仮想論理ボリュームは、性能が劣化したと判定される。
【０１９４】
ボリューム過負荷判定ＩＯＰＳ閾値格納欄１５０３には、仮想論理ボリュームが過負荷の状態であるか否かを判定するために使用されるＩＯＰＳの閾値が格納される。図１５の例では、ＩＯＰＳが１４．０［ＩＯ回／秒］を超えた仮想論理ボリュームは、過負荷の状態であると判定される。
【０１９５】
ボリューム過負荷判定転送速度閾値格納欄１５０４には、仮想論理ボリュームが過負荷の状態であるか否かを判定するために使用される転送速度の閾値が格納される。図１５の例では、転送速度が７０．０［ＭＢ／秒］を超えた仮想論理ボリュームは、過負荷の状態であると判定される。
【０１９６】
プール性能劣化判定Ｉ／Ｏ応答時間閾値格納欄１５０５には、プールの性能が劣化したか否かを判定するために使用されるＩ／Ｏ応答時間の閾値が格納される。図１５の例では、Ｉ／Ｏ応答時間が０．１５［秒］を超えたプールＡ（３３８）等は、性能が劣化したと判定される。
【０１９７】
プール過負荷判定ＩＯＰＳ閾値格納欄１５０６には、プールが過負荷の状態であるか否かを判定するために使用されるＩＯＰＳの閾値が格納される。図１５の例では、ＩＯＰＳが１２．０［ＩＯ回／秒］を超えたプールＡ（３３８）等は、過負荷の状態であると判定される。
【０１９８】
プール過負荷判定転送速度閾値格納欄１５０７には、プールが過負荷の状態であるか否かを判定するために使用される転送速度の閾値が格納される。図１５の例では、転送速度が６０．０［ＭＢ／秒］を超えたプールＡ（３３８）等は、過負荷の状態であると判定される。
【０１９９】
性能劣化ボリューム選択Ｉ／Ｏ応答時間閾値格納欄１５０８には、仮想論理ボリューム又はプールに発生した性能問題を解決するための対策の対象として仮想論理ボリュームを選択するために使用されるＩ／Ｏ応答時間の閾値が格納される。図１５の例では、Ｉ／Ｏ応答時間が０．２０［秒］を超えた論理ボリュームが、性能問題を解決するための対策の対象として選択される。
【０２００】
過負荷ボリューム選択ＩＯＰＳ閾値格納欄１５０９には、仮想論理ボリューム又はプールに発生した性能問題を解決するための対策の対象として仮想論理ボリュームを選択するために使用されるＩＯＰＳの閾値が格納される。図１５の例では、ＩＯＰＳが１４．０［ＩＯ回／秒］を超えた論理ボリュームが、性能問題を解決するための対策の対象として選択される。
【０２０１】
過負荷ボリューム選択転送速度閾値格納欄１５１０には、仮想論理ボリューム又はプールに発生した性能問題を解決するための対策の対象として仮想論理ボリュームを選択するために使用される転送速度の閾値が格納される。図１５の例では、転送速度が７０．０［ＭＢ／秒］を超えた論理ボリュームが、性能問題を解決するための対策の対象として選択される。
【０２０２】
最低ボリューム充填率格納欄１５１１には、最低ボリューム充填率が格納される。最低ボリューム充填率は、仮想論理ボリュームの充填率の閾値として使用される。仮想論理ボリュームの充填率とは、仮想論理ボリュームに定義されている容量に対する、実際に使用されている容量の割合である。具体的には、各仮想論理ボリュームＡ（３２６）等の充填率は、ボリューム統計情報テーブル１３０１の使用容量格納欄１３０７に格納されている値を、定義容量格納欄８０５に格納されている値で除算することによって算出される。
【０２０３】
後で詳細に説明するように、仮想論理ボリュームに発生した性能問題を解決する対策の一つとして、仮想論理ボリュームが実論理ボリューム化される場合がある。しかし、仮想論理ボリュームでは、定義された容量のうち、実際に使用されている容量に相当する記憶領域のみが割り当てられるのに対し、実論理ボリュームでは、使用されているか否かに拘らず、定義されている全容量に相当する記憶領域が割り当てられる。このため、記憶領域を効率的に利用するという仮想論理ボリュームのメリットは、仮想論理ボリュームを実論理ボリューム化することによって失われる。仮想論理ボリュームの充填率が低いほど、その仮想論理ボリュームを実論理ボリューム化することによって失われるメリットが大きいといえる。
【０２０４】
このため、後で詳細に説明するように、性能問題が発生した仮想論理ボリュームのうち、充填率が最低ボリューム充填率を超えるものが、性能問題を解決する対策の対象として優先的に選択される（図１９等参照）。図１５の例では、充填率が７０．０［％］を超えた仮想論理ボリュームが、性能問題を解決する対策の対象として優先的に選択される。
【０２０５】
動作モード格納欄１５１２には、性能管理ソフト１２０の動作モードを表すコードが格納される。動作モードを表すコードには「自動」と「手動」がある。動作モードが「手動」である場合、性能管理ソフト１２０は、仮想論理ボリュームの性能問題（例えば、性能劣化又は過負荷の発生）を解決するための対策を示す情報をユーザに対して表示し、ユーザからの指示を待つ。ユーザから対策を実行する指示を受けると、性能管理ソフト１２０は、指示された対策を実行する。一方、動作モードが「自動」である場合、性能管理ソフト１２０は、仮想論理ボリュームの性能問題を解決するための対策を自動的に実行する。
【０２０６】
探索モード格納欄１５１３には、性能管理ソフト１２０のボリューム選択部２０７の検索モードを表すコードが格納される。検索モードのコードには「サーバ」、「アプリケーション」及び「単独」がある。
【０２０７】
ここで、探索モードについて説明する。後で詳細に説明するように、性能管理ソフト１２０は、仮想論理ボリュームの性能問題を解決するために、仮想論理ボリュームを別のプールに移動させる、又は、仮想論理ボリュームを実論理ボリューム化する等の対策を実行する。一つのホストサーバ又は一つのアプリケーションが、複数の仮想論理ボリュームに対してＩ／Ｏを発行する場合がある。それらの複数のうち一つの仮想論理ボリュームに性能問題が発生した場合、それらの複数の仮想論理ボリューム全てに対して同一の対策を実行することによって、性能問題をより確実に解決することが期待される。
【０２０８】
探索モードが「単独」である場合、性能問題が発生した仮想論理ボリュームのみが、その性能問題を解決するための対策の対象として選択される。探索モードが「サーバ」である場合、性能問題が発生した仮想論理ボリューム、及び、その仮想論理ボリュームを使用しているホストサーバが使用する他の仮想論理ボリュームが、対策の対象として選択される。探索モードが「アプリケーション」である場合、性能問題が発生した仮想論理ボリューム、及び、その仮想論理ボリュームを使用しているアプリケーションが使用する他の仮想論理ボリュームが、対策の対象として選択される。
【０２０９】
次に、性能管理ソフト１２０が使用する選択ボリューム情報２１０について説明する。選択ボリューム情報２１０は、選択ボリュームテーブル１６０１からなる。
【０２１０】
図１６は、本発明の一実施形態の選択ボリュームテーブル１６０１の構造の一例を示す説明図である。
【０２１１】
選択ボリュームテーブル１６０１には、仮想論理ボリュームの性能問題を解決するための対策を示す情報が格納される。選択ボリュームテーブル１６０１は、論理ボリューム識別子格納欄１６０２、対処法種別格納欄１６０３及び対処法パラメータ格納欄１６０４からなる。
【０２１２】
論理ボリューム識別子格納欄１６０２には、論理ボリュームの識別子が格納される。
【０２１３】
対処法種別格納欄１６０３には、性能問題への対処法の種別を表すコードが格納される。種別コードには「プール移動」及び「実論理ボリューム化」がある。「プール移動」は、性能問題が発生した仮想論理ボリューム（例えば仮想論理ボリュームＡ（３２６））を、それが属するプール（例えばプールＡ（３３８））から別のプールに移動する処理を示す。「実論理ボリューム化」は、性能問題が発生した仮想論理ボリュームＡ（３２６）等を実論理ボリュームＡ（３３４）等にマイグレーションする処理を示す。
【０２１４】
対処法パラメータ格納欄１６０４には、性能問題への対処法のパラメータが格納される。具体的には、対処法種別格納欄１６０３の値が「プール移動」である場合、対処法パラメータ格納欄１６０４には、移動先のプールの識別子が格納される。一方、対処法種別格納欄１６０３の値が「実論理ボリューム化」である場合、対処法パラメータ格納欄１６０４は使用されない。
【０２１５】
次に、性能管理ソフト１２０が実行する処理を、フローチャートを参照して説明する。
【０２１６】
図１７は、本発明の一実施形態の性能管理ソフト１２０に含まれる性能劣化・過負荷検知部２０３の処理手順を示すフローチャートである。
【０２１７】
図１７に示す処理手順は、所定のタイミングで起動される。例えば、図１７に示す処理手順は、タイマー（図示省略）等を使い、スケジューリング設定に従って定期的に起動される。
【０２１８】
図１７の説明において性能劣化・過負荷検知部２０３が実行する処理は、実際には、性能管理ソフト１２０を実行するＣＰＵ１５９によって実行される。
【０２１９】
まずステップ１７０１において、性能劣化・過負荷検知部２０３は、ボリューム統計情報テーブル１３０１の日時格納欄１３０２に格納されている値のうち最新の日時を取得する。
【０２２０】
次にステップ１７０２において、性能劣化・過負荷検知部２０３は、ボリューム統計情報テーブル１３０１に登録されている行を先頭から順に検索して、日時格納欄１３０２の値がステップ１７０１の最新日時と一致するものを１行取得し、ステップ１７０３に進む。
【０２２１】
ステップ１７０３において、性能劣化・過負荷検知部２０３は、ステップ１７０２の検索条件を満足する行（すなわち日時格納欄１３０２の値がステップ１７０１の最新日時と一致する行）が見つかったか否かを判定する。検索条件を満足する行が見つからなかったと判定された場合、ボリューム統計情報テーブル１３０１に関する処理は完了したため、処理はステップ１７０７に進む。一方、検索条件を満足する行が見つかったと判定された場合、処理はステップ１７０４に進む。
【０２２２】
ステップ１７０４において、性能劣化・過負荷検知部２０３は、ステップ１７０２で見つかった行のＩ／Ｏ応答時間格納欄１３０４の値と制御情報テーブル１５０１のボリューム性能劣化判定Ｉ／Ｏ応答時間閾値格納欄１５０２の値とを比較し、前者の値が後者の閾値を超えたか否かを判定する。前者の値が後者の閾値を超えていると判定された場合（すなわち図１７に示す「閾値超過」の場合）、該当仮想論理ボリュームに性能劣化が発生したと判定されるため、処理はステップ１７１２に進む。ここで、該当仮想論理ボリュームとは、ステップ１７０２の検索によって見つかった行の論理ボリューム識別子格納欄１３０３に格納された識別子によって識別される仮想論理ボリュームＡ（３２６）等である。
【０２２３】
一方、ステップ１７０４において、前者の値が後者の閾値を超えていないと判定された場合（すなわち図１７に示す「未達」の場合）、該当仮想論理ボリュームに性能劣化が発生していないと判定されるため、処理はステップ１７０５に進む。閾値超過の具体的な判定方法としては以下の第１から第４のいずれかの方法が用いられる。
【０２２４】
第１の方法によれば、Ｉ／Ｏ応答時間の現在値が閾値より大きい場合、閾値超過と判定される。一方、Ｉ／Ｏ応答時間の現在値が後者の閾値より小さい場合、未達と判定される。
【０２２５】
第２の方法によれば、Ｉ／Ｏ応答時間の過去から現在までの値と閾値とが比較される。その結果、Ｉ／Ｏ応答時間が閾値を連続して超過した時間が所定の基準値を超えていた場合、閾値超過と判定される。一方、Ｉ／Ｏ応答時間が閾値を連続して超過した時間が所定の基準値を超えていない場合、未達と判定される。
【０２２６】
第３の方法によれば、Ｉ／Ｏ応答時間の過去から現在までの値と閾値とが比較される。その結果、Ｉ／Ｏ応答時間が閾値を超過した時間の合計が所定の基準値を超えていた場合、閾値超過と判定される。一方、Ｉ／Ｏ応答時間が閾値を超過した時間の合計が既定の基準値を超えていない場合、未達と判定される。
【０２２７】
第４の方法によれば、Ｉ／Ｏ応答時間の過去から現在までの値に基づいて将来の推移が予測される。そして、予測値が閾値を超過するまでの時間が所定の基準値を下回る場合、閾値超過と判定される。一方、予測値が閾値を超過するまでの時間が所定の基準値を下回らない場合、未達と判定される。
【０２２８】
ここで、第４の判定方法について、図２４を参照して説明する。
【０２２９】
図２４は、本発明の一実施形態において実行される性能劣化の判定方法を説明する図である。
【０２３０】
図２４は、横軸を日時、縦軸を応答時間［秒］とするグラフである。
【０２３１】
測定値２４０１は、ある仮想論理ボリューム（例えば、仮想論理ボリュームＡ（３２６））のＩ／Ｏ応答時間の実測値である。測定値２４０１は、複数回（例えば定期的に）測定され、グラフ上にプロットされる。
【０２３２】
閾値２４０２は、性能が劣化したか否かを判定するために使用されるＩ／Ｏ応答時間の閾値である。図１５の例に従えば、ボリューム性能劣化判定Ｉ／Ｏ応答時間閾値格納欄に格納されている「０．２０［秒］」が閾値２４０２として設定される。
【０２３３】
予測値２４０３は、測定値２４０１に基づいて算出される。このとき、どのような算出方法が使用されてもよい。例えば、予測値２４０３は、最小二乗法のような周知の方法によって算出することができる。
【０２３４】
閾値超過予想日時２４０６は、予測値２４０３が閾値２４０２を超える日時である。図２４の例に示すように予測値２４０３が増加傾向にある場合、予測値２４０３を示す破線が閾値２４０２を示す実線と交差する日時が、閾値超過予想日時２４０６である。
【０２３５】
閾値超過予想時間２４０７は、現在日時２４０５から閾値超過予想日時２４０６までの時間である。
【０２３６】
図１７のステップ１７０４において第４の方法が使用される場合、閾値超過予想時間２４０７が所定の基準値を下回るか否かが判定される。閾値超過予想時間２４０７が所定の基準値を下回ると判定された場合、「閾値超過」と判定される。一方、閾値超過予想時間２４０７が所定の基準値を下回らないと判定された場合、「未達」（すなわち、閾値を超過しない）と判定される。
【０２３７】
再び図１７を参照して、ステップ１７０５以降の処理を説明する。
【０２３８】
ステップ１７０５において、性能劣化・過負荷検知部２０３は、ステップ１７０２で見つかった行のＩＯＰＳ格納欄１３０５の値と制御情報テーブル１５０１のボリューム過負荷判定ＩＯＰＳ閾値格納欄１５０３の値とを比較し、前者の値が後者の閾値を超えたか否かを判定する。前者の値が後者の閾値を超えていると判定された場合、該当仮想論理ボリュームに過負荷が発生したと判定されるため、処理はステップ１７１２に進む。一方、前者の値が後者の閾値を超えていないと判定された場合、該当仮想論理ボリュームに過負荷が発生していないと判定される。この場合、処理はステップ１７０６に進む。閾値超過の具体的な判定方法として、ステップ１７０４と同様の方法が用いられる。ステップ１７０４の第１から第４の方法の説明は、「Ｉ／Ｏ応答時間」の代わりに「ＩＯＰＳ」を使用することによって、ステップ１７０５に適用することができる。
【０２３９】
ステップ１７０６において、性能劣化・過負荷検知部２０３は、ステップ１７０２で見つかった行の転送速度格納欄１３０６の値と制御情報テーブル１５０１のボリューム過負荷判定転送速度閾値格納欄１５０４の値とを比較し、前者の値が後者の閾値を超えたか否かを判定する。前者の値が後者の閾値を超えていると判定された場合、該当仮想論理ボリュームに過負荷が発生したと判定されるため、処理はステップ１７１２に進む。一方、前者の値が後者の閾値を超えていないと判定された場合、該当仮想論理ボリュームに過負荷が発生していないと判定される。この場合、処理はステップ１７０２に戻る。閾値超過の具体的な判定方法として、ステップ１７０４と同様の方法が用いられる。ステップ１７０４の第１から第４の方法の説明は、「Ｉ／Ｏ応答時間」を「転送速度」で置き換えることによって、ステップ１７０６に適用することができる。
【０２４０】
ステップ１７０７において、性能劣化・過負荷検知部２０３は、プール統計情報テーブル１４０１に登録されている行を先頭から順に検索して、日時格納欄１４０２の値がステップ１７０１の最新日時と一致するものを１行取得し、ステップ１７０８に進む。
【０２４１】
ステップ１７０８において、性能劣化・過負荷検知部２０３は、ステップ１７０７の検索条件を満足する行（すなわち日時格納欄１４０２の値がステップ１７０１の最新日時と一致する行）が見つかったか否かを判定する。検索条件を満足する行が見つからなかったと判定された場合、プール統計情報テーブル１４０１に関する処理は完了したため、本手順を終了する。一方、検索条件を満足する行が見つかったと判定された場合、処理はステップ１７０９に進む。
【０２４２】
ステップ１７０９において、性能劣化・過負荷検知部２０３は、ステップ１７０７で見つかった行のＩ／Ｏ応答時間格納欄１４０４の値と制御情報テーブル１５０１のプール性能劣化判定Ｉ／Ｏ応答時間閾値格納欄１５０５の値とを比較し、前者の値が後者の閾値を超えたか否かを判定する。前者の値が後者の閾値を超えていると判定された場合、該当プールに性能劣化が発生したと判定されるため、処理はステップ１７１２に進む。ここで、該当プールとは、ステップ１７０７の検索によって見つかった行のプール識別子格納欄１４０３に格納された識別子によって識別されるプールＡ（３３８）等である。
【０２４３】
一方、ステップ１７０９において、前者の値が後者の閾値を超えていないと判定された場合、該当プールに性能劣化が発生していないと判定されるため、処理はステップ１７１０に進む。閾値超過の具体的な判定方法として、ステップ１７０４と同様の方法が用いられる。
【０２４４】
ステップ１７１０において、性能劣化・過負荷検知部２０３は、ステップ１７０７で見つかった行のＩＯＰＳ格納欄１４０５の値と制御情報テーブル１５０１のプール過負荷判定ＩＯＰＳ閾値格納欄１５０６の値とを比較し、前者の値が後者の閾値を超えたか否かを判定する。前者の値が後者の閾値を超えていると判定された場合、該当プールに過負荷が発生したと判定されるため、処理はステップ１７１２に進む。一方、前者の値が後者の閾値を超えていないと判定された場合、該当プールに過負荷が発生していないと判定される。この場合、処理はステップ１７１１に進む。閾値超過の具体的な判定方法として、ステップ１７０４と同様の方法が用いられる。
【０２４５】
ステップ１７１１において、性能劣化・過負荷検知部２０３は、ステップ１７０７で見つかった行の転送速度格納欄１４０６の値と制御情報テーブル１５０１のプール過負荷判定転送速度閾値格納欄１５０７の値とを比較し、前者の値が後者の閾値を超えたか否かを判定する。前者の値が後者の閾値を超えていると判定された場合、該当プールに過負荷が発生したと判定されるため、処理はステップ１７１２に進む。一方、前者の値が後者の閾値を超えていないと判定された場合、該当プールに過負荷が発生していないと判定される。この場合、処理はステップ１７０７に戻る。閾値超過の具体的な判定方法として、ステップ１７０４と同様の方法が用いられる。
【０２４６】
ステップ１７１２において、性能劣化・過負荷検知部２０３は、ボリューム選択部２０７の処理手順を呼び出す。次に、ボリューム選択部２０７の処理手順について、図１８〜図２３を参照して説明する。
【０２４７】
図１８〜図２３は、性能管理ソフト１２０のボリューム選択部２０７の処理手順を示すフローチャートである。図１８が全体の処理手順を示し、図１９〜図２３は図１８の全体処理手順から呼び出される部分的な処理手順を示す。図１８の全体処理手順は、性能劣化・過負荷検知部２０３によって起動されてもよいし、ユーザ操作を受けた性能管理クライアント１０４からの要求によって起動されてもよい。図１８〜図２３の説明においてボリューム選択部２０７が実行する処理は、実際には、性能管理ソフト１２０を実行するＣＰＵ１５９によって実行される。
【０２４８】
最初に、図１８〜図２３に示す処理の概要を説明する。
【０２４９】
図１８〜図２３に示す処理は、いずれかの仮想論理ボリュームに性能問題（すなわち性能劣化又は過負荷）が発生したときにそれを解決するために実行される。性能劣化は、複数の仮想論理ボリュームに対するＩ／Ｏが相互に干渉することによって発生している可能性がある。ある仮想論理ボリュームに過負荷が発生している場合、その仮想論理ボリュームに対するＩ／Ｏが他の仮想論理ボリュームに対するＩ／Ｏと干渉することによって、他の仮想論理ボリュームの性能を劣化させる可能性がある。
【０２５０】
このため、性能問題が発生した仮想論理ボリュームが他の仮想論理ボリュームと干渉しにくくなるように、性能問題が発生した仮想論理ボリュームを移動させることによって、性能問題が解決することが期待される。仮想論理ボリュームの移動は、その仮想論理ボリュームを別のプールに移動させること又はその仮想論理ボリュームを実論理ボリューム化することに相当する。
【０２５１】
本実施形態のストレージ装置１３１は、三つのプールすなわちプールＡ（３３８）〜プールＣ（３４０）を含む。ストレージ装置１３１内の仮想論理ボリュームＡ（３２６）〜仮想論理ボリュームＨ（３３３）は、それぞれ、プールＡ（３３８）〜プールＣ（３４０）のうちいずれかに所属する（図３参照）。
【０２５２】
ホストサーバＡ（３０１）等のボリュームＡ（３１５）等は、いずれも、ストレージＡ（３２２）の論理ボリュームが新たに割り当てられた時点では、プールＡ（３３８）に所属する仮想論理ボリュームＡ（３２６）等に割り当てられていたか、又は、プールＡ（３３８）に所属する仮想論理ボリュームＡ（３２６）等のみで構成された複合ボリュームＡ（３２３）等に割り当てられていた。その後、プールＡ（３３８）に所属するいずれかの仮想論理ボリュームＡ（３２６）等に性能問題が発生した場合、その問題の解決策として、いずれかの仮想論理ボリュームをプールＡ（３３８）からプールＢ（３３９）又はプールＣ（３４０）に移動する処理が選択される（図１８のステップ１８０２参照）。
【０２５３】
ここで、「仮想論理ボリュームをプールＡ（３３８）からプールＢ（３３９）又はプールＣ（３４０）に移動する」とは、前述した通り（図１マイグレーション実行部１３５による論理ボリュームの移動機能に関する説明を参照）、プールＡ（３３８）に所属する移動元の仮想論理ボリュームＡ（３２６）等のデータをプールＢ（３３９）又はプールＣ（３４０）に所属する移動先の仮想論理ボリュームＥ（３３０）等又は仮想論理ボリュームＧ（３３２）等にコピーし、その後で、移動元の仮想論理ボリュームＡ（３２６）等に割り当てられている論理ボリューム番号と、移動先の仮想論理ボリュームＥ（３３０）等又は仮想論理ボリュームＧ（３３２）等に割り当てられている論理ボリューム番号とを入れ替えることを意味する。
【０２５４】
具体的には、性能が劣化した仮想論理ボリューム（例えば、仮想論理ボリュームＡ（３２６））をプールＣ（３４０）に移動してもよいし（図１９のステップ１９０１〜１９０５及び図２０のステップ２００１〜２００５参照）、過負荷が発生した仮想論理ボリューム（例えば、仮想論理ボリュームＣ（３２８））をプールＢ（３３９）に移動してもよい（図１９のステップ１９０７〜１９１１参照）。
【０２５５】
プールＢ（３３９）に所属するいずれかの仮想論理ボリュームＥ（３３０）等に性能問題が発生した場合、その問題の解決策として、プールＢ（３３９）に所属し、かつ、性能が劣化した仮想論理ボリュームのうちいずれかの仮想論理ボリュームを実論理ボリューム化する処理が選択される（図１８のステップ１８０３及び図２１参照）。
【０２５６】
ここで、「プールＢ（３３９）に所属する仮想論理ボリュームを実論理ボリューム化する」とは、プールＢ（３３９）に所属する移動元の仮想論理ボリュームＥ（３３０）等のデータをいずれのプールにも所属しない移動先の実論理ボリュームＡ（３３４）等にコピーし、その後で、移動元の仮想論理ボリュームＥ（３３０）等に割り当てられている論理ボリューム番号と、移動先の実論理ボリュームＡ（３３４）等に割り当てられている論理ボリューム番号とを入れ替えることを意味する。
【０２５７】
プールＣ（３４０）に所属するいずれかの仮想論理ボリュームＧ（３３２）等に性能問題が発生した場合、その問題の解決策として、プールＣ（３４０）に所属し、かつ、性能劣化又は過負荷が発生した仮想論理ボリュームのうちいずれかの仮想論理ボリュームを実論理ボリューム化する処理が選択される（図１８のステップ１８０４、図２２及び図２３参照）。
【０２５８】
ここで、「プールＣ（３４０）に所属する仮想論理ボリュームを実論理ボリューム化する」とは、プールＣ（３４０）に所属する移動元の仮想論理ボリュームＧ（３４７）等のデータをいずれのプールにも所属しない移動先の実論理ボリュームＡ（３３４）等にコピーし、その後で、移動元の仮想論理ボリュームＧ（３４７）等に割り当てられている論理ボリューム番号と、移動先の実論理ボリュームＡ（３３４）等に割り当てられている論理ボリューム番号とを入れ替えることを意味する。
【０２５９】
このように、本実施形態では、プールＡ（３３８）は仮想論理ボリュームが最初に所属するプール、プールＢ（３３９）は過負荷が発生した仮想論理ボリュームの移動先、プールＣ（３４０）は性能劣化が発生した仮想論理ボリュームの移動先である。しかし、このようなプールの使い分けは、性能問題が発生した仮想論理ボリュームを移動させる方法の一例に過ぎない。性能問題が発生した仮想論理ボリュームを移動させることによって、性能問題が発生した仮想論理ボリュームに対するＩ／Ｏがその他の仮想論理ボリュームに対するＩ／Ｏと干渉することを防ぐことができる。言い換えると、その移動の結果、性能問題が発生した論理ボリューム（すなわち性能問題が発生した仮想論理ボリューム、又は、それを実論理ボリューム化することによって生成された実論理ボリューム）に対するＩ／Ｏが、他の論理ボリュームに対するＩ／Ｏと干渉しなくなるか、あるいは、性能問題が発生した論理ボリュームに対するＩ／Ｏが、より少ない数の他の論理ボリュームに対するＩ／Ｏと干渉するようになる。このため、性能問題が解決することが期待される。
【０２６０】
図１８は、本発明の一実施形態の性能管理ソフト１２０に含まれるボリューム選択部２０７の処理手順を示すフローチャートの第１部分である。
【０２６１】
まず、ステップ１８０１において、ボリューム選択部２０７は、選択ボリュームテーブル１６０１を初期化する。具体的には、ボリューム選択部２０７は、前回図１８に示す手順を実行したときに選択ボリュームテーブル１６０１に登録した行をすべて削除する。
【０２６２】
ステップ１８０２において、ボリューム選択部２０７は、プールＡ（３３８）に所属する仮想論理ボリュームについて、図１９及び図２０で詳細を説明する手順に従って選択処理を実行する。なお、図３の例では、プールＡ（３３８）に割り当てられた仮想論理ボリュームＡ（３２６）から仮想論理ボリュームＤ（３２９）が、プールＡ（３３８）に所属する仮想論理ボリュームである。
【０２６３】
ステップ１８０３において、ボリューム選択部２０７は、プールＢ（３３９）に所属する仮想論理ボリュームについて、図２１で詳細を説明する手順に従って選択処理を実行する。なお、図３の例では、プールＢ（３３９）に割り当てられた仮想論理ボリュームＥ（３３０）及び仮想論理ボリュームＦ（３３１）が、プールＢ（３３９）に所属する仮想論理ボリュームである。
【０２６４】
ステップ１８０４において、ボリューム選択部２０７は、プールＣ（３４０）に所属する仮想論理ボリュームについて、図２２及び図２３で詳細を説明する手順に従って選択処理を実行する。なお、図３の例では、プールＣ（３４０）に割り当てられた仮想論理ボリュームＧ（３３２）及び仮想論理ボリュームＨ（３３３）が、プールＣ（３４０）に所属する仮想論理ボリュームである。
【０２６５】
ステップ１８０４に示す選択処理の完了後、図１８に示す手順を終了する。
【０２６６】
図１９は、本発明の一実施形態の性能管理ソフト１２０に含まれるボリューム選択部２０７の処理手順を示すフローチャートの第２部分である。
【０２６７】
図１９の処理手順は、図１８のステップ１８０２の処理内容を詳細化したものの前半部分である。図１９の処理によって、プールＡ（３３８）に所属する仮想論理ボリュームのうちプールＢ（３３９）又はプールＣ（３４０）に移動すべきものが選択される。
【０２６８】
まず、ステップ１９０１において、ボリューム選択部２０７は、仮想論理ボリューム・プール間関連テーブル１１０１に登録されている行を先頭から順に検索して、未処理の１行を取得し、ステップ１９０２に進む。ここで、未処理の行とは、以下のステップ１９０３からステップ１９０５までに示す処理がまだ実行されていない行を意味する。
【０２６９】
ステップ１９０２において、ボリューム選択部２０７は、ステップ１９０１の検索によって未処理の行が見つかったか否かを判定する。未処理の行が見つからなかった場合、仮想論理ボリューム・プール間関連テーブル１１０１に登録されている全ての行についてステップ１９０３からステップ１９０５までに示す処理が終了した。この場合、処理はステップ１９０６に進む。一方、未処理の行が見つかった場合、処理はステップ１９０３に進む。
【０２７０】
ステップ１９０３において、ボリューム選択部２０７は、ステップ１９０１で見つかった行の論理ボリューム識別子格納欄１１０２によって識別される仮想論理ボリュームがプールＡ（３３８）に所属し、かつ、「使用中」の状態であるか否かを判定する。以下、ステップ１９０６までの説明において、ステップ１９０１で見つかった行を該当行と記載し、該当行の論理ボリューム識別子格納欄１１０２によって識別される仮想論理ボリュームを該当仮想論理ボリュームと記載する。
【０２７１】
該当行のプール識別子格納欄１１０３に「プールＡ」が格納されている場合、該当仮想論理ボリュームがプールＡ（３３８）に所属すると判定される。該当仮想論理ボリュームの使用状態は、論理ボリュームテーブル８０１内の該当仮想論理ボリュームに対応する行の使用状態格納欄８０６の値に基づいて判定される。
【０２７２】
該当仮想論理ボリュームがプールＡ（３３８）に所属し、かつ、「使用中」の状態である場合、処理はステップ１９０４に進む。該当仮想論理ボリュームがプールＡ（３３８）に所属しない、又は、「未使用」の状態である場合、処理はステップ１９０１に戻る。この時点の該当行は、ステップ１９０１に戻った後、処理済みとして扱われる。
【０２７３】
ステップ１９０４において、ボリューム選択部２０７は、該当仮想論理ボリュームに性能劣化が発生しており、かつ、該当仮想論理ボリュームの充填率が最低充填率を超過しているか否かを判定する。
【０２７４】
性能劣化が発生したか否かは、ボリューム統計情報テーブル１３０１と制御情報テーブル１５０１を参照することによって判定される。具体的には、ボリューム選択部２０７は、ボリューム統計情報テーブル１３０１から、該当仮想論理ボリュームが登録されている行のうち、最新日時が登録された行を検索する。そして、ボリューム選択部２０７は、検索された行のＩ／Ｏ応答時間格納欄１３０４の値と制御情報テーブル１５０１の性能劣化ボリューム選択Ｉ／Ｏ応答時間閾値格納欄１５０８の値とを比較し、前者の値が後者の閾値を超えたか否かを判定する。前者の値が後者の閾値を超えている場合、該当仮想論理ボリュームに性能劣化が発生したと判定される。
【０２７５】
一方、充填率とは、仮想論理ボリュームに定義された容量に対する、実際に使用されている容量の割合である。最低充填率の超過は、次のように判定される。まず、ボリューム選択部２０７は、論理ボリュームテーブル８０１から該当仮想論理ボリュームが登録されている行を検索し、その行の定義容量格納欄８０５の値を取得する。次に、ボリューム選択部２０７は、ボリューム統計情報テーブル１３０１から、該当仮想論理ボリュームが登録されている行のうち、最新日時が登録された行を検索し、その行の使用容量格納欄１３０７の値を取得する。取得した使用容量格納欄１３０７の値を定義容量格納欄８０５の値で割った値が、最新日時における該当仮想論理ボリュームの充填率である。ボリューム選択部２０７は、この充填率と制御情報テーブル１５０１の最低ボリューム充填率格納欄１５１１の値とを比較し、前者の値が後者の値を超えたか否かを判定する。
【０２７６】
既に説明したように、仮想論理ボリュームを実論理ボリューム化することによって、記憶容量を効率的に利用するという仮想論理ボリュームのメリットは失われる。失われるメリットの大きさ（言い換えると、実論理ボリューム化するために新たに割り当てなければならない物理的な記憶領域の量）は、一般に、実論理ボリューム化される仮想論理ボリュームの充填率が低いほど大きい。このため、仮想論理ボリュームのメリットをできるだけ損なわないために、ステップ１９０４では、性能劣化が発生しており、かつ、充填率が最低充填率を超過している仮想論理ボリュームが選択される。後述するステップ１９１０、２２０４及び２２１０についても同様である。
【０２７７】
該当仮想論理ボリュームに性能劣化が発生しており、かつ、該当仮想論理ボリュームの充填率が最低充填率を超過していると判定された場合、処理はステップ１９１３に進む。一方、該当仮想論理ボリュームに性能劣化が発生していないか、又は、該当仮想論理ボリュームの充填率が最低充填率を超過していないと判定された場合、処理はステップ１９０１に戻る。この時点の該当行は、ステップ１９０１に戻った後、処理済みとして扱われる。
【０２７８】
なお、ステップ１９０４における性能劣化の判定は、図１７のステップ１７０４と同様の方法によって実行されてもよい。さらに、最低充填率超過の判定も、図１７のステップ１７０４と同様の方法によって実行されてもよい。ステップ１７０４の第１から第４の方法の説明は、「Ｉ／Ｏ応答時間」の代わりに「充填率」を使用することによって、充填率超過の判定に適用することができる。
【０２７９】
ステップ１９０４において該当仮想論理ボリュームに性能劣化が発生していると判定された場合、該当仮想論理ボリュームが割り当てられているプールＡ（３３８）において、複数の仮想論理ボリュームに対するＩ／Ｏの相互干渉が性能劣化の原因となっている可能性がある。したがって、該当仮想論理ボリュームを別のプールに移動する（具体的には、プールＡ（３３８）に割り当てられている該当仮想論理ボリュームを、新たにプールＣ（３４０）に割り当てる）ことによって、劣化した性能が回復する可能性がある。
【０２８０】
しかし、移動先であるプールＣ（３４０）に、該当仮想論理ボリュームを割り当てるための十分な空き容量がない場合、該当仮想論理ボリュームをプールＣ（３４０）に移動することができない。このため、ステップ１９１３において、ボリューム選択部２０７は、移動先であるプールＣ（３４０）に、移動対象のデータ量（すなわち、移動されるべきデータ量）より大きい空き容量があるか否かを判定する。
【０２８１】
具体的には、ボリューム選択部２０７は、プール・プールボリューム間関連テーブル１２０１及び論理ボリュームテーブル８０１を参照して、プールＣ（３４０）に定義されている容量を算出する。さらに、ボリューム選択部２０７は、仮想論理ボリューム・プール間関連テーブル１１０１及びボリューム統計情報テーブル１３０１を参照して、プールＣ（３４０）の容量のうち現在使用されている容量を算出する。プールＣ（３４０）に定義されている容量から現在使用されている容量を減算した値が現在のプールＣ（３４０）の空き容量である。一方、移動対象のデータ量は、該当仮想論理ボリュームにおいて現在使用されている容量に相当する。この容量は、ボリューム統計情報テーブル１３０１から取得される。これらの値に基づいて、ボリューム選択部２０７は、プールＣ（３４０）の空き容量が、移動対象のデータ量より大きいか否かを判定する。
【０２８２】
プールＣ（３４０）の空き容量が移動対象のデータ量より大きいと判定された場合、プールＣ（３４０）に十分な空き容量があるため、該当仮想論理ボリュームをプールＣ（３４０）に移動することができる。このため、処理はステップ１９０５に進む。
【０２８３】
一方、プールＣ（３４０）の空き容量が移動対象のデータ量より大きくないと判定された場合、プールＣ（３４０）に十分な空き容量がないため、該当仮想論理ボリュームをプールＣ（３４０）に移動することができない。この場合、該当仮想論理ボリュームを実論理ボリューム化することによって、劣化した性能が回復する可能性がある。このため、処理はステップ１９１４に進む。
【０２８４】
ステップ１９０５において、ボリューム選択部２０７は、「該当仮想論理ボリュームをプールＣ（３４０）に移動する」という問題解決策を選択ボリュームテーブル１６０１に登録する。具体的には、ボリューム選択部２０７は、選択ボリュームテーブル１６０１に新規の行を追加し、論理ボリューム識別子格納欄１６０２に該当仮想論理ボリュームの識別子（例えば、「仮想論理ボリュームＢ」）を、対処法種別格納欄１６０３に「プール移動」を、対処法パラメータ格納欄１６０４に「プールＣ」を設定する。選択ボリュームテーブル１６０１への登録後、処理はステップ１９０１に戻る。この時点の該当行は、ステップ１９０１に戻った後、処理済みとして扱われる。
【０２８５】
なお、ステップ１９０５において、ボリューム選択部２０７は、プール統計情報テーブル１４０１を参照して、その時点で最も性能が高いプール（すなわち、Ｉ／Ｏ応答時間が小さいプール）を該当仮想論理ボリュームの移動先として選択してもよい。その場合、選択されたプールの識別子が対処法パラメータ格納欄１６０４に設定される。
【０２８６】
ステップ１９１４において、ボリューム選択部２０７は、「該当仮想論理ボリュームを実論理ボリューム化する」という問題解決策を選択ボリュームテーブル１６０１に登録する。具体的には、ボリューム選択部２０７は、選択ボリュームテーブル１６０１に新規の行を追加し、論理ボリューム識別子格納欄１６０２に該当仮想論理ボリュームの識別子（例えば、「仮想論理ボリュームＥ」）を、対処法種別格納欄１６０３に「実論理ボリューム化」を設定する。この場合、対処法パラメータ格納欄１６０４には、何も設定する必要がない。選択ボリュームテーブル１６０１への登録後、処理はステップ１９０１に戻る。この時点の該当行は、ステップ１９０１に戻った後、処理済みとして扱われる。
【０２８７】
なお、プールＣ（３４０）に十分な空き容量がある場合であっても、該当仮想論理ボリュームを実論理ボリューム化することはできる。それによって性能の劣化が回復する可能性もある。このため、ステップ１９０５において、「該当仮想論理ボリュームをプールＣ（３４０）に移動する」という問題解決策に加えて、「該当仮想論理ボリュームを実論理ボリューム化する」という問題解決策を選択ボリュームテーブル１６０１に登録してもよい。その場合、図４の表示画面４０１の仮想ボリューム表示欄４０３、プール表示欄４０４及び処置方法表示欄４０５の各欄には、同一の仮想論理ボリュームに対して複数の問題解決策が表示される。例えば、仮想論理ボリュームＢ（３２７）をプールＣ（３４０）に移動するという問題解決策と実論理ボリューム化するという問題解決策とが選択ボリュームテーブル１６０１に登録されると、表示画面４０１には論理ボリューム番号が「０５」である行が二つ表示される。後述するステップ１９１１及び２００５についても同様である。
【０２８８】
しかし、記憶領域を効率的に利用するという仮想論理ボリュームのメリットは、仮想論理ボリュームを実論理ボリューム化することによって失われる。このため、性能問題の重大性と記憶装置にかかるコストとを対比して後者を重視する場合には、該当仮想論理ボリュームを他のプールに移動できない場合に限って、該当仮想論理ボリュームを実論理ボリューム化することが望ましい。
【０２８９】
ステップ１９０６において、ボリューム選択部２０７は、選択ボリュームテーブル１６０１に現在プールＡ（３３８）に所属している仮想論理ボリュームに関する行が登録済みか否かを判定する。プールＡ（３３８）に所属している仮想論理ボリュームに関する行が登録済みであると判定された場合、登録されている行が示す問題解決策によって、性能の劣化が回復する可能性がある。この場合、処理はステップ２００６に進む。一方、プールＡ（３３８）に所属している仮想論理ボリュームに関する行が登録されていないと判定された場合、性能の劣化を回復するための問題解決策がまだ発見されていない。この場合、問題解決策を探すために、処理はステップ１９０７に進む。
【０２９０】
ステップ１９０７において、ボリューム選択部２０７は、仮想論理ボリューム・プール間関連テーブル１１０１に登録されている行を先頭から順に検索して、未処理のものを１行取得し、ステップ１９０８に進む。
【０２９１】
ステップ１９０８において、ボリューム選択部２０７は、ステップ１９０７の検索によって、未処理の行が見つかったか否かを判定する。未処理の行が見つからなかった場合、仮想論理ボリューム・プール間関連テーブル１１０１に登録されている全ての行について、ステップ１９０９からステップ１９１１までの処理が終了している。この場合、処理はステップ１９１２に進む。一方、未処理の行が見つかった場合、処理はステップ１９０９に進む。
【０２９２】
ステップ１９０９において、ボリューム選択部２０７は、ステップ１９０７で見つかった行の論理ボリューム識別子格納欄１１０２によって識別される仮想論理ボリュームがプールＡ（３３８）に所属し、かつ、「使用中」の状態であるか否かを判定する。判定方法はステップ１９０３と同様である。以下、ステップ１９１２までの説明において、ステップ１９０７で見つかった行を該当行と記載し、該当行の論理ボリューム識別子格納欄１１０２によって識別される仮想論理ボリュームを該当仮想論理ボリュームと記載する。
【０２９３】
該当仮想論理ボリュームがプールＡ（３３８）に所属し、かつ、「使用中」の状態である場合、処理はステップ１９１０に進む。該当仮想論理ボリュームがプールＡ（３３８）に所属しない、又は、「未使用」の状態である場合、処理はステップ１９０７に戻る。この時点の該当行は、ステップ１９０７に戻った後、処理済みとして扱われる。
【０２９４】
ステップ１９１０において、ボリューム選択部２０７は、該当仮想論理ボリュームに過負荷が発生しており、かつ、該当仮想論理ボリュームの充填率が最低充填率を超過しているか否かを判定する。
【０２９５】
過負荷が発生しているか否かは、ボリューム統計情報テーブル１３０１と制御情報テーブル１５０１を参照することによって判定される。具体的には、ボリューム選択部２０７は、ボリューム統計情報テーブル１３０１から、該当仮想論理ボリュームが登録されている行のうち、最新日時が登録された行を検索する。そして、ボリューム選択部２０７は、検索された行のＩＯＰＳ格納欄１３０５の値及び転送速度格納欄１３０６の値と、制御情報テーブル１５０１の過負荷ボリューム選択ＩＯＰＳ閾値格納欄１５０９の値及び過負荷ボリューム選択転送速度閾値格納欄１５１０とをそれぞれ比較し、前者の値のいずれかが後者の対応する閾値を超えたか否かを判定する。前者の値が後者の閾値を超えている場合、該当仮想論理ボリュームに過負荷が発生したと判定される。
【０２９６】
一方、最低充填率の超過は、次のように判定される。まず、ボリューム選択部２０７は、論理ボリュームテーブル８０１から該当仮想論理ボリュームが登録されている行を検索し、その行の定義容量格納欄８０５の値を取得する。次に、ボリューム選択部２０７は、ボリューム統計情報テーブル１３０１から、該当仮想論理ボリュームが登録されている行のうち、最新日時が登録された行を検索し、その行の使用容量格納欄１３０７の値を取得する。使用容量格納欄１３０７の値を定義容量格納欄８０５の値で割った値が、最新日時における該当仮想論理ボリュームの充填率である。ボリューム選択部２０７は、この充填率と制御情報テーブル１５０１の最低ボリューム充填率格納欄１５１１の値とを比較し、前者の値が後者の値を超えたか否かを判定する。
【０２９７】
該当仮想論理ボリュームに過負荷が発生しており、かつ、該当仮想論理ボリュームの充填率が最低充填率を超過していると判定された場合、処理はステップ１９１５に進む。一方、該当仮想論理ボリュームに過負荷が発生していないか、又は、該当仮想論理ボリュームの充填率が最低充填率を超過していないと判定された場合、処理はステップ１９０７に戻る。この時点の該当行は、ステップ１９０７に戻った後、処理済みとして扱われる。ステップ１９１０における閾値超過及び最低充填率超過の具体的な判定方法は、図１７のステップ１７０４と同様である。
【０２９８】
ステップ１９１０において該当仮想論理ボリュームに過負荷が発生していると判定された場合、該当仮想論理ボリュームが割り当てられているプールＡ（３３８）において、その過負荷が、該当仮想論理ボリューム又は他の仮想論理ボリュームの性能劣化の原因となっている可能性がある。したがって、該当仮想論理ボリュームを別のプールに移動する（具体的には、プールＡ（３３８）に割り当てられている該当仮想論理ボリュームを、新たにプールＢ（３３９）に割り当てる）ことによって、劣化した性能が回復する可能性がある。
【０２９９】
しかし、移動先であるプールＢ（３３９）に、該当仮想論理ボリュームを割り当てるための十分な空き容量がない場合、該当仮想論理ボリュームをプールＢ（３３９）に移動することができない。このため、ステップ１９１５において、ボリューム選択部２０７は、移動先であるプールＢ（３３９）に、移動対象のデータ量（すなわち、移動されるべきデータ量）より大きい空き容量があるか否かを判定する。この判定は、ステップ１９１３と同様の方法によって実行される。
【０３００】
プールＢ（３３９）の空き容量が移動対象のデータ量より大きいと判定された場合、該当仮想論理ボリュームをプールＢ（３３９）に移動することができる。このため、処理はステップ１９１１に進む。
【０３０１】
一方、プールＢ（３３９）の空き容量が移動対象のデータ量より大きくないと判定された場合、該当仮想論理ボリュームをプールＢ（３３９）に移動することができない。この場合、該当仮想論理ボリュームを実論理ボリューム化することによって、劣化した性能が回復する可能性がある。このため、処理はステップ１９１６に進む。
【０３０２】
ステップ１９１１において、ボリューム選択部２０７は、「該当仮想論理ボリュームをプールＢ（３３９）に移動する」という問題解決策を選択ボリュームテーブル１６０１に登録する。具体的には、ボリューム選択部２０７は、選択ボリュームテーブル１６０１に新規の行を追加し、追加された行の論理ボリューム識別子格納欄１６０２に該当仮想論理ボリュームの識別子を、対処法種別格納欄１６０３に「プール移動」を、対処法パラメータ格納欄１６０４に「プールＢ」を設定する。選択ボリュームテーブル１６０１への登録後、処理はステップ１９０７に戻る。この時点の該当行は、ステップ１９０７に戻った後、処理済みとして扱われる。
【０３０３】
なお、ステップ１９１１において、ボリューム選択部２０７は、プール統計情報テーブル１４０１を参照して、その時点で最も負荷が低いプール（すなわち、ＩＯＰＳ及び転送速度が小さいプール）を該当仮想論理ボリュームの移動先として選択してもよい。その場合、選択されたプールの識別子が対処法パラメータ格納欄１６０４に設定される。
【０３０４】
ステップ１９１６において、ボリューム選択部２０７は、「該当仮想論理ボリュームを実論理ボリューム化する」という問題解決策を選択ボリュームテーブル１６０１に登録する。具体的には、ボリューム選択部２０７は、選択ボリュームテーブル１６０１に新規の行を追加し、論理ボリューム識別子格納欄１６０２に該当仮想論理ボリュームの識別子を、対処法種別格納欄１６０３に「実論理ボリューム化」を設定する。この場合、対処法パラメータ格納欄１６０４には、何も設定する必要がない。選択ボリュームテーブル１６０１への登録後、処理はステップ１９０７に戻る。この時点の該当行は、ステップ１９０７に戻った後、処理済みとして扱われる。
【０３０５】
ステップ１９１２において、ボリューム選択部２０７は、選択ボリュームテーブル１６０１に現在プールＡ（３３８）に所属している仮想論理ボリュームに関する行が登録済みか否かを判定する。プールＡ（３３８）に所属している仮想論理ボリュームに関する行が登録済みであると判定された場合、登録されている行が示す問題解決策によって、性能の劣化が回復する可能性がある。この場合、処理はステップ２００６に進む。一方、プールＡ（３３８）に所属している仮想論理ボリュームに関する行が登録されていないと判定された場合、性能の劣化を回復するための問題解決策がまだ発見されていない。この場合、問題解決策を探すために、処理はステップ２００１に進む。
【０３０６】
図２０は、本発明の一実施形態の性能管理ソフト１２０に含まれるボリューム選択部２０７の処理手順を示すフローチャートの第３部分である。
【０３０７】
図２０の処理手順は、図１８のステップ１８０２の処理内容を詳細化したものの後半部分である。図２０の処理によって、プールＡ（３３８）に所属する仮想論理ボリュームのうちプールＣに移動すべきものが選択される。
【０３０８】
まず、ステップ２００１において、ボリューム選択部２０７は、仮想論理ボリューム・プール間関連テーブル１１０１に登録されている行を先頭から順に検索して、未処理の１行を取得し、ステップ２００２に進む。ここで、未処理の行とは、以下のステップ２００３からステップ２００５までに示す処理がまだ実行されていない行を意味する。
【０３０９】
ステップ２００２において、ボリューム選択部２０７は、ステップ２００１の検索によって未処理の行が見つかったか否かを判定する。未処理の行が見つからなかった場合、仮想論理ボリューム・プール間関連テーブル１１０１に登録されている全ての行についてステップ２００３からステップ２００５までに示す処理が終了した。この場合、処理はステップ２００６に進む。一方、未処理の行が見つかった場合、処理はステップ２００３に進む。
【０３１０】
ステップ２００３において、ボリューム選択部２０７は、ステップ２００１で見つかった行の論理ボリューム識別子格納欄１１０２によって識別される仮想論理ボリュームがプールＡ（３３８）に所属し、かつ、「使用中」の状態であるか否かを判定する。この判定方法は図１９のステップ１９０３と同様である。以下、ステップ２００６までの説明において、ステップ２００１で見つかった行を該当行と記載し、該当行の論理ボリューム識別子格納欄１１０２によって識別される仮想論理ボリュームを該当仮想論理ボリュームと記載する。
【０３１１】
該当仮想論理ボリュームがプールＡ（３３８）に所属し、かつ、「使用中」の状態である場合、処理はステップ２００４に進む。該当仮想論理ボリュームがプールＡ（３３８）に所属しない、又は、「未使用」の状態である場合、処理はステップ２００１に戻る。この時点の該当行は、ステップ２００１に戻った後、処理済みとして扱われる。
【０３１２】
ステップ２００４において、ボリューム選択部２０７は、該当仮想論理ボリュームに性能劣化が発生しているか否かを判定する。この判定は、ステップ１９０４において説明した方法によって実行されてもよい。該当仮想論理ボリュームに性能劣化が発生していると判定された場合、処理はステップ２０１１に進む。該当仮想論理ボリュームに性能劣化が発生していないと判定された場合、処理はステップ２００１に戻る。この時点の該当行は、ステップ２００１に戻った後、処理済みとして扱われる。閾値超過の具体的な判定方法は、図１７のステップ１７０４と同様である。
【０３１３】
なお、ステップ２００４では、ステップ１９０４及び１９１０と異なり、該当仮想論理ボリュームの充填率が最低充填率を超過したか否かは判定されない。ステップ１９０４及び１９１０の判定の結果、該当仮想論理ボリュームの充填率が最低充填率を超過しない場合には、該当仮想論理ボリュームが選択ボリュームテーブル１６０１に登録されない。これは、記憶領域を効率的に利用するという仮想論理ボリュームのメリットをできるだけ損なわないようにするためである。しかし、図１９の処理の結果、一つの仮想論理ボリュームも選択ボリュームテーブル１６０１に登録されなかった場合、劣化した性能を回復させるための処理を実行することができない。この場合、仮想論理ボリュームのメリットを犠牲にしても、劣化した性能を回復させる必要がある。このため、ステップ２００４では、該当仮想論理ボリュームの充填率に拘らず、性能が劣化しているか否かが判定される。
【０３１４】
ステップ２０１１において、ボリューム選択部２０７は、移動先であるプールＣ（３４０）に、移動対象のデータ量（すなわち、移動されるべきデータ量）より大きい空き容量があるか否かを判定する。この判定は、図１９のステップ１９１３と同様の方法によって実行される。
【０３１５】
プールＣ（３４０）の空き容量が移動対象のデータ量より大きいと判定された場合、該当仮想論理ボリュームをプールＣ（３４０）に移動することができる。このため、処理はステップ２００５に進む。
【０３１６】
一方、プールＣ（３４０）の空き容量が移動対象のデータ量より大きくないと判定された場合、該当仮想論理ボリュームをプールＣ（３４０）に移動することができない。この場合、該当仮想論理ボリュームを実論理ボリューム化することによって、劣化した性能が回復する可能性がある。このため、処理はステップ２０１２に進む。
【０３１７】
ステップ２００５において、ボリューム選択部２０７は、「該当仮想論理ボリュームをプールＣ（３４０）に移動する」という問題解決策を選択ボリュームテーブル１６０１に登録する。具体的には、ボリューム選択部２０７は、選択ボリュームテーブル１６０１に新規の行を追加し、追加された行の論理ボリューム識別子格納欄１６０２に該当仮想論理ボリュームの識別子を、対処法種別格納欄１６０３に「プール移動」を、対処法パラメータ格納欄１６０４に「プールＣ」を設定する。選択ボリュームテーブル１６０１への登録後、処理はステップ２００１に戻る。この時点の該当行は、ステップ２００１に戻った後、処理済みとして扱われる。
【０３１８】
ステップ２０１２において、ボリューム選択部２０７は、「該当仮想論理ボリュームを実論理ボリューム化する」という問題解決策を選択ボリュームテーブル１６０１に登録する。具体的には、ボリューム選択部２０７は、選択ボリュームテーブル１６０１に新規の行を追加し、論理ボリューム識別子格納欄１６０２に該当仮想論理ボリュームの識別子を、対処法種別格納欄１６０３に「実論理ボリューム化」を設定する。この場合、対処法パラメータ格納欄１６０４には、何も設定する必要がない。選択ボリュームテーブル１６０１への登録後、処理はステップ２００１に戻る。この時点の該当行は、ステップ２００１に戻った後、処理済みとして扱われる。
【０３１９】
ステップ２００６において、ボリューム選択部２０７は、制御情報テーブル１５０１の探索モード格納欄１５１３の値を調べる。探索モード格納欄１５１３の値が「サーバ」である場合はステップ２００７に進み、「アプリケーション」である場合はステップ２００８に進み、「単独」である場合は処理を終了する。
【０３２０】
探索モード格納欄１５１３の値が「サーバ」である場合、既に選択ボリュームテーブル１６０１に登録されている仮想論理ボリュームだけでなく、その仮想論理ボリュームを使用しているホストサーバが使用する他の仮想論理ボリュームも選択ボリュームテーブル１６０１に登録される。具体的には、ステップ２００７において、ボリューム選択部２０７は、選択ボリュームテーブル１６０１に登録されておらず、プールＡ（３３８）に所属し、かつ、使用中である仮想論理ボリュームから、以下の条件（１）から（４）を満足する別の仮想論理ボリュームが存在するものをすべて探し出す。
（１）選択ボリュームテーブル１６０１に登録されている。
（２）プールＡに所属する。
（３）使用中である。
（４）ある共通のホストサーバを起点とするＩ／Ｏ経路が両仮想論理ボリュームを通過する。
【０３２１】
ホストサーバから仮想論理ボリュームまでのＩ／Ｏ経路に関する情報は、ボリューム・論理ボリューム間関連テーブル７０１（図７）、論理ボリュームテーブル８０１（図８）及び複合論理ボリューム・要素論理ボリューム間関連テーブル９０１（図９）から取得することができる。
【０３２２】
ステップ２００９において、ボリューム選択部２０７は、ステップ２００７で見つかった仮想論理ボリュームを対象とする問題解決策を選択ボリュームテーブル１６０１に追加登録する。ステップ２００９で追加登録される問題解決策の内容（例えば、実論理ボリューム化、又は、プールＢ又はＣへの移動）は、既に選択ボリュームテーブル１６０１に登録されているものと同じである。
【０３２３】
例えば、ホストサーバＡ（３０１）は、論理ボリューム番号「０１」が付与された論理ボリュームにＩ／Ｏを発行する（図７の第１行参照）。論理ボリューム番号「０１」が付与された論理ボリュームは、複合論理ボリュームＡ（３２３）である（図８の第１行参照）。複合論理ボリュームＡ（３２３）は、論理ボリューム番号「０４」が付与された論理ボリューム及び論理ボリューム番号「０５」が付与された論理ボリュームからなる（図９の第１行及び第２行参照）。論理ボリューム番号「０４」及び「０５」が付与された論理ボリュームは、それぞれ、仮想論理ボリュームＡ（３２６）及び仮想論理ボリュームＢ（３２７）である（図８の第４行及び第５行参照）。すなわち、ホストサーバＡ（３０１）を基点とするＩ／Ｏ経路は、仮想論理ボリュームＡ（３２６）及び仮想論理ボリュームＢ（３２７）を通過する。
【０３２４】
なお、仮想論理ボリュームＡ（３２６）及び仮想論理ボリュームＢ（３２７）は、いずれも、プールＡ（３３８）に所属し、使用中である。この例において、仮想論理ボリュームＢ（３２７）のみが選択ボリュームテーブル１６０１に登録されている場合、ステップ２００７の検索結果として、仮想論理ボリュームＡ（３２６）が取得される。そして、ステップ２００９において、仮想論理ボリュームＡ（３２６）に対応する行が選択ボリュームテーブル１６０１に追加登録される。具体的には、追加登録される行の論理ボリューム識別子格納欄１６０２に「仮想論理ボリュームＡ」が格納される。追加登録される行の問題解決策に相当する対処法種別格納欄１６０３及び対処法パラメータ格納欄１６０４には、既に登録されている仮想論理ボリュームＢに対応する内容と同じものが登録される。
【０３２５】
例えば、図１６に示すように、仮想論理ボリュームＢ（３２７）に対応する対処法種別格納欄１６０３及び対処法パラメータ格納欄１６０４に「プール移動」及び「プールＣ」が登録されている場合、追加登録される仮想論理ボリュームＡ（３２６）に対応する行の対処法種別格納欄１６０３及び対処法パラメータ格納欄１６０４にも「プール移動」及び「プールＣ」が登録される。
【０３２６】
探索モード格納欄１５１３の値が「アプリケーション」である場合、既に選択ボリュームテーブル１６０１に登録されている仮想論理ボリュームだけでなく、その仮想論理ボリュームを使用しているアプリケーションが使用する他の仮想論理ボリュームも選択ボリュームテーブル１６０１に登録される。具体的には、ステップ２００８において、ボリューム選択部２０７は、選択ボリュームテーブル１６０１に登録されておらず、プールＡに所属し、かつ、使用中である仮想論理ボリュームから、以下の条件（５）から（８）を満足する別の仮想論理ボリュームが存在するものをすべて探し出す。
（５）選択ボリュームテーブル１６０１に登録されている。
（６）プールＡに所属する。
（７）使用中である。
（８）ある共通のアプリケーションを起点とするＩ／Ｏ経路が両仮想論理ボリュームを通過する。
【０３２７】
アプリケーションから仮想論理ボリュームまでのＩ／Ｏ経路に関する情報は、アプリケーション・ファイル間関連テーブル５０１（図５）、ファイル・ボリューム間関連テーブル６０１（図６）、ボリューム・論理ボリューム間関連テーブル７０１（図７）、論理ボリュームテーブル８０１（図８）及び複合論理ボリューム・要素論理ボリューム間関連テーブル９０１（図９）から取得することができる。
【０３２８】
ステップ２０１０において、ボリューム選択部２０７は、ステップ２００８で見つかった仮想論理ボリュームを対象とする問題解決策を選択ボリュームテーブル１６０１に追加登録する。ステップ２０１０で追加登録される問題解決策の内容（例えば、実論理ボリューム化、又は、プールＢ又はＣへの移動）は、既に選択ボリュームテーブル１６０１に登録されているものと同じである。
【０３２９】
例えば、アプリケーションＡ（３０５）は、ファイルＡ（３０９）にＩ／Ｏを発行する（図５の第１行参照）。ファイルＡ（３０９）は、ボリュームＡ（３１５）に割り当てられる（図６の第１行参照）。ボリュームＡ（３１５）は、論理ボリューム番号「０１」が付与された論理ボリュームに割り当てられる（図７の第１行参照）。論理ボリューム番号「０１」が付与された論理ボリュームは、複合論理ボリュームＡ（３２３）である。複合論理ボリュームＡ（３２３）は、仮想論理ボリュームＡ（３２６）及び仮想論理ボリュームＢ（３２７）からなる。すなわち、アプリケーションＡ（３０５）を基点とするＩ／Ｏ経路は、仮想論理ボリュームＡ（３２６）及び仮想論理ボリュームＢ（３２７）を通過する。
【０３３０】
この例において仮想論理ボリュームＢ（３２７）のみが選択ボリュームテーブル１６０１に登録されている場合、ステップ２００８の検索結果として、仮想論理ボリュームＡ（３２６）が取得される。そして、ステップ２００９の場合と同様、ステップ２０１０において、仮想論理ボリュームＡ（３２６）に対応する行が選択ボリュームテーブル１６０１に追加登録される。
【０３３１】
ステップ２００９又はステップ２０１０が終了した場合、又は、ステップ２００６において探索モード格納欄１５１３の値が「単独」であった場合、ボリューム選択部２０７は、図１９及び図２０に示す処理を終了する。
【０３３２】
図２１は、本発明の一実施形態の性能管理ソフト１２０に含まれるボリューム選択部２０７の処理手順を示すフローチャートの第４部分である。
【０３３３】
図２１の処理手順は、図１８のステップ１８０３の処理内容を詳細化したものである。図２１の処理によって、プールＢ（３３９）に所属する仮想論理ボリュームのうち実論理ボリューム化されるべきものが選択される。
【０３３４】
まず、ステップ２１０１において、ボリューム選択部２０７は、仮想論理ボリューム・プール間関連テーブル１１０１に登録されている行を先頭から順に検索して、未処理の１行を取得し、ステップ２１０２に進む。ここで、未処理の行とは、以下のステップ２１０３からステップ２１０５までに示す処理がまだ実行されていない行を意味する。
【０３３５】
ステップ２１０２において、ボリューム選択部２０７は、ステップ２１０１の検索によって未処理の行が見つかったか否かを判定する。未処理の行が見つからなかった場合、仮想論理ボリューム・プール間関連テーブル１１０１に登録されている全ての行についてステップ２１０３からステップ２１０５までに示す処理が終了した。この場合、処理はステップ２１０６に進む。一方、未処理の行が見つかった場合、処理はステップ２１０３に進む。
【０３３６】
ステップ２１０３において、ボリューム選択部２０７は、ステップ２１０１で見つかった行の論理ボリューム識別子格納欄１１０２によって識別される仮想論理ボリュームがプールＢ（３３９）に所属し、かつ、「使用中」の状態であるか否かを判定する。以下、ステップ２１０５までの説明において、ステップ２１０１で見つかった行を該当行と記載し、該当行の論理ボリューム識別子格納欄１１０２によって識別される仮想論理ボリュームを該当仮想論理ボリュームと記載する。
【０３３７】
該当行のプール識別子格納欄１１０３に「プールＢ」が格納されている場合、該当仮想論理ボリュームがプールＢ（３３９）に所属すると判定される。該当仮想論理ボリュームの使用状態は、論理ボリュームテーブル８０１内の該当仮想論理ボリュームに対応する行の使用状態格納欄８０６の値に基づいて判定される。
【０３３８】
該当仮想論理ボリュームがプールＢ（３３９）に所属し、かつ、「使用中」の状態である場合、処理はステップ２１０４に進む。該当仮想論理ボリュームがプールＢ（３３９）に所属しない、又は、「未使用」の状態である場合、処理はステップ２１０１に戻る。この時点の該当行は、ステップ２１０１に戻った後、処理済みとして扱われる。
【０３３９】
ステップ２１０４において、ボリューム選択部２０７は、該当仮想論理ボリュームに性能劣化が発生しているか否かを判定する。
【０３４０】
性能劣化が発生したか否かは、ボリューム統計情報テーブル１３０１と制御情報テーブル１５０１を参照することによって判定される。具体的には、ボリューム選択部２０７は、ボリューム統計情報テーブル１３０１から、該当仮想論理ボリュームが登録されている行のうち、最新日時が登録された行を検索する。そして、ボリューム選択部２０７は、検索された行のＩ／Ｏ応答時間格納欄１３０４の値と制御情報テーブル１５０１の性能劣化ボリューム選択Ｉ／Ｏ応答時間閾値格納欄１５０８の値とを比較し、前者の値が後者の閾値を超えたか否かを判定する。前者の値が後者の閾値を超えている場合、該当仮想論理ボリュームに性能劣化が発生したと判定される。
【０３４１】
該当仮想論理ボリュームに性能劣化が発生していると判定された場合、処理はステップ２１０５に進む。一方、該当仮想論理ボリュームに性能劣化が発生していないと判定された場合、処理はステップ２１０１に戻る。この時点の該当行は、ステップ２１０１に戻った後、処理済みとして扱われる。ステップ２１０４における閾値超過の具体的な判定方法は、図１７のステップ１７０４と同様である。
【０３４２】
ステップ２１０５において、ボリューム選択部２０７は、「該当仮想論理ボリュームを実論理ボリューム化する」という問題解決策を選択ボリュームテーブル１６０１に登録する。具体的には、ボリューム選択部２０７は、選択ボリュームテーブル１６０１に新規の行を追加し、論理ボリューム識別子格納欄１６０２に該当仮想論理ボリュームの識別子を、対処法種別格納欄１６０３に「実論理ボリューム化」を設定する。選択ボリュームテーブル１６０１への登録後、処理はステップ２１０１に戻る。この時点の該当行は、ステップ２１０１に戻った後、処理済みとして扱われる。
【０３４３】
ステップ２１０６において、ボリューム選択部２０７は、制御情報テーブル１５０１の探索モード格納欄１５１３の値を調べる。探索モード格納欄１５１３の値が「サーバ」である場合はステップ２１０７に進み、「アプリケーション」である場合はステップ２１０８に進み、「単独」である場合は処理を終了する。
【０３４４】
ステップ２１０７において、ボリューム選択部２０７は、選択ボリュームテーブル１６０１に登録されておらず、プールＢ（３３９）に所属し、かつ、使用中である仮想論理ボリュームから、以下の条件（９）から（１２）を満足する別の仮想論理ボリュームが存在するものをすべて探し出す。
（９）選択ボリュームテーブル１６０１に登録されている。
（１０）プールＢに所属する。
（１１）使用中である。
（１２）ある共通のサーバを起点とするＩ／Ｏ経路が両仮想論理ボリュームを通過する。
【０３４５】
ホストサーバから仮想論理ボリュームまでのＩ／Ｏ経路に関する情報は、図２０のステップ２００７と同様の方法で取得することができる。
【０３４６】
ステップ２１０８において、ボリューム選択部２０７は、選択ボリュームテーブル１６０１に登録されておらず、プールＢ（３３９）に所属し、かつ、使用中である仮想論理ボリュームから、以下の条件（１３）から（１６）を満足する別の仮想論理ボリュームが存在するものをすべて探し出す。
（１３）選択ボリュームテーブル１６０１に登録されている。
（１４）プールＢに所属する。
（１５）使用中である。
（１６）ある共通のアプリケーションを起点とするＩ／Ｏ経路が両仮想論理ボリュームを通過する。
【０３４７】
アプリケーションから仮想論理ボリュームまでのＩ／Ｏ経路に関する情報は、図２０のステップ２００８と同様の方法で取得することができる。
【０３４８】
ステップ２１０９において、ボリューム選択部２０７は、ステップ２１０７で見つかった仮想論理ボリュームを実論理ボリューム化するという問題解決策を選択ボリュームテーブル１６０１に登録する。具体的には、ボリューム選択部２０７は、選択ボリュームテーブル１６０１に新規の行を追加し、追加された行の論理ボリューム識別子格納欄１６０２に、ステップ２１０７で見つかった仮想論理ボリュームの識別子を、対処法種別格納欄１６０３に「実論理ボリューム化」を設定する。
【０３４９】
ステップ２１１０において、ボリューム選択部２０７は、ステップ２１０８で見つかった仮想論理ボリュームを実論理ボリューム化するという問題解決策を選択ボリュームテーブル１６０１に登録する。具体的には、ボリューム選択部２０７は、選択ボリュームテーブル１６０１に新規の行を追加し、追加された行の論理ボリューム識別子格納欄１６０２に、ステップ２１０８で見つかった仮想論理ボリュームの識別子を、対処法種別格納欄１６０３に「実論理ボリューム化」を設定する。
【０３５０】
ステップ２１０９又はステップ２１１０が終了した場合、又は、ステップ２１０６において探索モード格納欄１５１３の値が「単独」であった場合、ボリューム選択部２０７は、図２１に示す処理を終了する。
【０３５１】
図２２は、本発明の一実施形態の性能管理ソフト１２０に含まれるボリューム選択部２０７の処理手順を示すフローチャートの第５部分である。
【０３５２】
図２２の処理手順は、図１８のステップ１８０４の処理内容を詳細化したものの前半部分である。図２２の処理によって、プールＣ（３４０）に所属する仮想論理ボリュームのうち実論理ボリューム化されるべきものが選択される。
【０３５３】
まず、ステップ２２０１において、ボリューム選択部２０７は、仮想論理ボリューム・プール間関連テーブル１１０１に登録されている行を先頭から順に検索して、未処理の１行を取得し、ステップ２２０２に進む。ここで、未処理の行とは、以下のステップ２２０３からステップ２２０５までに示す処理がまだ実行されていない行を意味する。
【０３５４】
ステップ２２０２において、ボリューム選択部２０７は、ステップ２２０１の検索によって未処理の行が見つかったか否かを判定する。未処理の行が見つからなかった場合、仮想論理ボリューム・プール間関連テーブル１１０１に登録されている全ての行についてステップ２２０３からステップ２２０５までに示す処理が終了した。この場合、処理はステップ２２０６に進む。一方、未処理の行が見つかった場合、処理はステップ２２０３に進む。
【０３５５】
ステップ２２０３において、ボリューム選択部２０７は、ステップ２２０１で見つかった行の論理ボリューム識別子格納欄１１０２によって識別される仮想論理ボリュームがプールＣ（３４０）に所属し、かつ、「使用中」の状態であるか否かを判定する。以下、ステップ２２０６までの説明において、ステップ２２０１で見つかった行を該当行と記載し、該当行の論理ボリューム識別子格納欄１１０２によって識別される仮想論理ボリュームを該当仮想論理ボリュームと記載する。
【０３５６】
該当行のプール識別子格納欄１１０３に「プールＣ」が格納されている場合、該当仮想論理ボリュームがプールＣ（３４０）に所属すると判定される。該当仮想論理ボリュームの使用状態は、論理ボリュームテーブル８０１内の該当仮想論理ボリュームに対応する行の使用状態格納欄８０６の値に基づいて判定される。
【０３５７】
該当仮想論理ボリュームがプールＣ（３４０）に所属し、かつ、「使用中」の状態である場合、処理はステップ２２０４に進む。該当仮想論理ボリュームがプールＣ（３４０）に所属しない、又は、「未使用」の状態である場合、処理はステップ２２０１に戻る。この時点の該当行は、ステップ２２０１に戻った後、処理済みとして扱われる。
【０３５８】
ステップ２２０４において、ボリューム選択部２０７は、該当仮想論理ボリュームに性能劣化が発生しており、かつ、該当仮想論理ボリュームの充填率が最低充填率を超過しているか否かを判定する。この判定は、図１９のステップ１９０４と同様の方法によって実行される。
【０３５９】
該当仮想論理ボリュームに性能劣化が発生しており、かつ、該当仮想論理ボリュームの充填率が最低充填率を超過していると判定された場合、処理はステップ２２０５に進む。一方、該当仮想論理ボリュームに性能劣化が発生していないか、又は、該当仮想論理ボリュームの充填率が最低充填率を超過していないと判定された場合、処理はステップ２２０１に戻る。この時点の該当行は、ステップ２２０１に戻った後、処理済みとして扱われる。
【０３６０】
閾値超過及び最低充填率超過の具体的な判定方法は、図１７のステップ１７０４と同様である。
【０３６１】
ステップ２２０５において、ボリューム選択部２０７は、「該当仮想論理ボリュームを実論理ボリューム化する」という問題解決策を選択ボリュームテーブル１６０１に登録する。具体的には、ボリューム選択部２０７は、選択ボリュームテーブル１６０１に新規の行を追加し、論理ボリューム識別子格納欄１６０２に該当仮想論理ボリュームの識別子を、対処法種別格納欄１６０３に「実論理ボリューム化」を設定する。選択ボリュームテーブル１６０１への登録後、処理はステップ２２０１に戻る。この時点の該当行は、ステップ２２０１に戻った後、処理済みとして扱われる。
【０３６２】
ステップ２２０６において、ボリューム選択部２０７は、選択ボリュームテーブル１６０１に現在プールＣ（３４０）に所属している仮想論理ボリュームに関する行が登録済みか否かを判定する。プールＣ（３４０）に所属している仮想論理ボリュームに関する行が登録済みであると判定された場合、登録されている行が示す問題解決策によって、性能の劣化が回復する可能性がある。この場合、処理はステップ２２０６に進む。一方、プールＣ（３４０）に所属している仮想論理ボリュームに関する行が登録されていないと判定された場合、性能の劣化を回復するための問題解決策がまだ発見されていない。この場合、問題解決策を探すために、処理はステップ２２０７に進む。
【０３６３】
ステップ２２０７において、ボリューム選択部２０７は、仮想論理ボリューム・プール間関連テーブル１１０１に登録されている行を先頭から順に検索して、未処理のものを１行取得し、ステップ２２０８に進む。
【０３６４】
ステップ２２０８において、ボリューム選択部２０７は、ステップ２２０７の検索によって、未処理の行が見つかったか否かを判定する。未処理の行が見つからなかった場合、仮想論理ボリューム・プール間関連テーブル１１０１に登録されている全ての行について、ステップ２２０９からステップ２２１１までの処理が終了している。この場合、処理はステップ２２１２に進む。一方、未処理の行が見つかった場合、処理はステップ２２０９に進む。
【０３６５】
ステップ２２０９において、ボリューム選択部２０７は、ステップ２２０７で見つかった行の論理ボリューム識別子格納欄１１０２によって識別される仮想論理ボリュームがプールＣ（３４０）に所属し、かつ、「使用中」の状態であるか否かを判定する。判定方法はステップ２２０３と同様である。以下、ステップ２２１２までの説明において、ステップ２２０７で見つかった行を該当行と記載し、該当行の論理ボリューム識別子格納欄１１０２によって識別される仮想論理ボリュームを該当仮想論理ボリュームと記載する。
【０３６６】
該当仮想論理ボリュームがプールＣ（３４０）に所属し、かつ、「使用中」の状態である場合、処理はステップ２２１０に進む。該当仮想論理ボリュームがプールＣ（３４０）に所属しない、又は、「未使用」の状態である場合、処理はステップ２２０７に戻る。この時点の該当行は、ステップ２２０７に戻った後、処理済みとして扱われる。
【０３６７】
ステップ２２１０において、ボリューム選択部２０７は、該当仮想論理ボリュームに過負荷が発生しており、かつ、該当仮想論理ボリュームの充填率が最低充填率を超過しているか否かを判定する。これらの判定は、図１９のステップ１９１０と同様の方法によって実行される。具体的な判定方法として、図１７のステップ１７０４と同様の方法が用いられてもよい。
【０３６８】
該当仮想論理ボリュームに過負荷が発生しており、かつ、該当仮想論理ボリュームの充填率が最低充填率を超過していると判定された場合、処理はステップ２２１１に進む。一方、該当仮想論理ボリュームに過負荷が発生していないか、又は、該当仮想論理ボリュームの充填率が最低充填率を超過していないと判定された場合、処理はステップ２２０７に戻る。この時点の該当行は、ステップ２２０７に戻った後、処理済みとして扱われる。
【０３６９】
ステップ２２１１において、ボリューム選択部２０７は、「該当仮想論理ボリュームを実論理ボリューム化する」という問題解決策を選択ボリュームテーブル１６０１に登録する。具体的には、ボリューム選択部２０７は、選択ボリュームテーブル１６０１に新規の行を追加し、追加された行の論理ボリューム識別子格納欄１６０２に該当仮想論理ボリュームの識別子を、対処法種別格納欄１６０３に「実論理ボリューム化」を設定する。選択ボリュームテーブル１６０１への登録後、処理はステップ２２０７に戻る。この時点の該当行は、ステップ２２０７に戻った後、処理済みとして扱われる。
【０３７０】
ステップ２２１２において、ボリューム選択部２０７は、選択ボリュームテーブル１６０１に、現在プールＣ（３４０）に所属している仮想論理ボリュームに関する行が登録済みか否かを判定する。プールＣ（３４０）に所属している仮想論理ボリュームに関する行が登録済みであると判定された場合、登録されている行が示す問題解決策によって、性能の劣化が回復する可能性がある。この場合、処理はステップ２３０６に進む。一方、プールＣ（３４０）に所属している仮想論理ボリュームに関する行が登録されていないと判定された場合、処理はステップ２３０１に進む。
【０３７１】
図２３は、本発明の一実施形態の性能管理ソフト１２０に含まれるボリューム選択部２０７の処理手順を示すフローチャートの第６部分である。
【０３７２】
図２３の処理手順は、図１８のステップ１８０４の処理内容を詳細化したものの後半部分である。図２３の処理によって、プールＣ（３４０）に所属する仮想論理ボリュームのうち実論理ボリューム化されるべきものが選択される。
【０３７３】
まず、ステップ２３０１において、ボリューム選択部２０７は、仮想論理ボリューム・プール間関連テーブル１１０１に登録されている行を先頭から順に検索して、未処理の１行を取得し、ステップ２３０２に進む。ここで、未処理の行とは、以下のステップ２３０３からステップ２３０５までに示す処理がまだ実行されていない行を意味する。
【０３７４】
ステップ２３０２において、ボリューム選択部２０７は、ステップ２３０１の検索によって未処理の行が見つかったか否かを判定する。未処理の行が見つからなかった場合、仮想論理ボリューム・プール間関連テーブル１１０１に登録されている全ての行についてステップ２３０３からステップ２３０５までに示す処理が終了した。この場合、処理はステップ２３０６に進む。一方、未処理の行が見つかった場合、処理はステップ２３０３に進む。
【０３７５】
ステップ２３０３において、ボリューム選択部２０７は、ステップ２３０１で見つかった行の論理ボリューム識別子格納欄１１０２によって識別される仮想論理ボリュームがプールＣ（３４０）に所属し、かつ、「使用中」の状態であるか否かを判定する。この判定方法は図２２のステップ２２０３と同様である。以下、ステップ２３０５までの説明において、ステップ２３０１で見つかった行を該当行と記載し、該当行の論理ボリューム識別子格納欄１１０２によって識別される仮想論理ボリュームを該当仮想論理ボリュームと記載する。
【０３７６】
該当仮想論理ボリュームがプールＣ（３４０）に所属し、かつ、「使用中」の状態である場合、処理はステップ２３０４に進む。該当仮想論理ボリュームがプールＣ（３４０）に所属しない、又は、「未使用」の状態である場合、処理はステップ２３０１に戻る。この時点の該当行は、ステップ２３０１に戻った後、処理済みとして扱われる。
【０３７７】
ステップ２３０４において、ボリューム選択部２０７は、該当仮想論理ボリュームに性能劣化が発生しているか否かを判定する。この判定は、ステップ２２０４において説明した方法によって実行されてもよい。該当仮想論理ボリュームに性能劣化が発生していると判定された場合、処理はステップ２３０５に進む。該当仮想論理ボリュームに性能劣化が発生していないと判定された場合、処理はステップ２３０１に戻る。この時点の該当行は、ステップ２３０１に戻った後、処理済みとして扱われる。閾値超過の具体的な判定方法は、図１７のステップ１７０４と同様である。
【０３７８】
ステップ２３０５において、ボリューム選択部２０７は、「該当仮想論理ボリュームを実論理ボリューム化する」という問題解決策を選択ボリュームテーブル１６０１に登録する。具体的には、ボリューム選択部２０７は、選択ボリュームテーブル１６０１に新規の行を追加し、追加された行の論理ボリューム識別子格納欄１６０２に該当仮想論理ボリュームの識別子を、対処法種別格納欄１６０３に「実論理ボリューム化」を設定する。選択ボリュームテーブル１６０１への登録後、処理はステップ２３０１に戻る。この時点の該当行は、ステップ２３０１に戻った後、処理済みとして扱われる。
【０３７９】
ステップ２３０６において、ボリューム選択部２０７は、制御情報テーブル１５０１の探索モード格納欄１５１３の値を調べる。探索モード格納欄１５１３の値が「サーバ」である場合はステップ２３０７に進み、「アプリケーション」である場合はステップ２３０８に進み、「単独」である場合は処理を終了する。
【０３８０】
ステップ２３０７において、ボリューム選択部２０７は、選択ボリュームテーブル１６０１に登録されておらず、プールＣ（３４０）に所属し、かつ、使用中である仮想論理ボリュームから、かつ、以下の条件（１７）から（２０）を満足する別の仮想論理ボリュームが存在するものをすべて探し出す。
（１７）選択ボリュームテーブル１６０１に登録されている。
（１８）プールＣに所属する。
（１９）使用中である。
（２０）ある共通のサーバを起点とするＩ／Ｏ経路が両仮想論理ボリュームを通過する。
【０３８１】
ホストサーバから仮想論理ボリュームまでのＩ／Ｏ経路に関する情報は、図２０のステップ２００７と同様の方法で取得することができる。
【０３８２】
ステップ２３０８において、ボリューム選択部２０７は、選択ボリュームテーブル１６０１に登録されておらず、プールＣ（３４０）に所属し、かつ、使用中である仮想論理ボリュームから、以下の条件（２１）から（２４）を満足する別の仮想論理ボリュームが存在するものをすべて探し出す。
（２１）選択ボリュームテーブル１６０１に登録されている。
（２２）プールＣに所属する。
（２３）使用中である。
（２４）ある共通のアプリケーションを起点とするＩ／Ｏ経路が両仮想論理ボリュームを通過する。
【０３８３】
アプリケーションから仮想論理ボリュームまでのＩ／Ｏ経路に関する情報は、図２０のステップ２００８と同様の方法で取得することができる。
【０３８４】
ステップ２３０９において、ボリューム選択部２０７は、ステップ２３０７で見つかった仮想論理ボリュームを実論理ボリューム化するという問題解決策を選択ボリュームテーブル１６０１に登録する。具体的には、ボリューム選択部２０７は、選択ボリュームテーブル１６０１に新規の行を追加し、追加された行の論理ボリューム識別子格納欄１６０２に、ステップ２３０７で見つかった仮想論理ボリュームの識別子を、対処法種別格納欄１６０３に「実論理ボリューム化」を設定する。
【０３８５】
ステップ２３１０において、ボリューム選択部２０７は、ステップ２３０８で見つかった仮想論理ボリュームを実論理ボリューム化するという問題解決策を選択ボリュームテーブル１６０１に登録する。具体的には、ボリューム選択部２０７は、選択ボリュームテーブル１６０１に新規の行を追加し、追加された行の論理ボリューム識別子格納欄１６０２に、ステップ２３０８で見つかった仮想論理ボリュームの識別子を、対処法種別格納欄１６０３に「実論理ボリューム化」を設定する。
【０３８６】
選択ボリュームテーブル１６０１への登録後、本手順を終了する。
【０３８７】
以上の図１９〜図２３は、計算機システムが複数のストレージ装置を備える場合にも適用することができる。例えば、図１に示すストレージ装置１３１に、第２のストレージ装置（図示省略）が接続されてもよい。第２のストレージ装置は、ストレージ装置１３１の物理ディスク３６０と同様の複数の物理ディスク（図示省略）を備える。その場合、ストレージ装置１３１の仮想論理ボリューム、プールボリューム及び実論理ボリュームの少なくとも一つが、第２のストレージ装置の物理ディスクが提供する記憶領域にマッピングされてもよい。
【０３８８】
あるいは、第２のストレージ装置が、ストレージ装置１３１と同様のプールボリューム、仮想論理ボリューム及び実論理ボリュームを含んでもよい。その場合、ステップ１９０５、１９１１、１９１４、１９１６、２００５、２０１２、２１０５、２２０５、２２１１又は２３０５において、第２のストレージ装置内のプール又は実論理ボリュームが、ストレージ装置１３１内の仮想論理ボリュームの移動先として選択されてもよい。
【０３８９】
図２５は、本発明の一実施形態の性能管理ソフト１２０に含まれる実ボリューム化部２１３の処理手順を示すフローチャートである。
【０３９０】
図２５の処理手順は、性能管理ソフト１２０が自動動作モードである場合は、ボリューム選択部２０７が処理を完了した後、自動的に起動される。性能管理ソフト１２０が手動動作モードである場合は、ボリューム一覧表示部２１１が表示した一覧からユーザが性能問題解決方法を選択して実行指示を出すと、図２５の処理手順が起動される。
【０３９１】
まず、ステップ２５０１において、実ボリューム化部２１３は、制御情報テーブル１５０１の動作モード格納欄１５１２の値を参照する。動作モード格納欄１５１２の値が「自動」である場合はステップ２５０３に進み、「手動」である場合はステップ２５０２に進む。
【０３９２】
ただし、図１９のステップ１９０５、ステップ１９１１又は図２０のステップ２００５において、一つの仮想論理ボリュームに対して複数の問題解決策が登録された場合、それらの複数のうち一つをユーザが選択する必要がある。したがってこの場合、ステップ２５０１において必ず「手動」が選択される。
【０３９３】
ステップ２５０２において、実ボリューム化部２１３は、ＧＵＩ画面（すなわち表示画面４０１）の性能問題解決方法一覧のうちユーザによって実行指示された行に対応する仮想論理ボリュームの番号を取得する。次に、実ボリューム化部２１３は、論理ボリュームテーブル８０１を検索して、仮想論理ボリューム番号に対応する論理ボリューム識別子を取得する。例えば、図４に示す表示画面４０１において、ユーザが、論理ボリューム番号「０８」が付与された仮想論理ボリュームの実論理ボリューム化の実行を指示した場合、実ボリューム化部２１３は、論理ボリュームテーブル８０１の論理ボリューム番号格納欄８０４及び論理ボリューム識別子格納欄８０２を参照して、論理ボリューム番号「０８」に対応する論理ボリューム識別子「仮想論理ボリュームＥ」を取得する。その後、処理はステップ２５０３に進む。
【０３９４】
ステップ２５０３において、実ボリューム化部２１３は、選択ボリュームテーブル１６０１に登録されている行を先頭から順に検索して、未処理の１行を取得し、ステップ２５０４に進む。ここで、未処理の行とは、ステップ２５０５以降の処理がまだ実行されていない行を意味する。
【０３９５】
ステップ２５０４において、実ボリューム化部２１３は、ステップ２５０３の検索によって未処理の行が見つかったか否かを判定する。未処理の行が見つからなかった場合、選択ボリュームテーブル１６０１に登録されている全ての行についてステップ２５０５以降の処理が終了した。この場合、実ボリューム化部２１３は処理を終了する。一方、未処理の行が見つかった場合、処理はステップ２５０５に進む。ステップ２５０３の検索によって見つかった行を、以下の図２５の説明において、該当行と記載する。
【０３９６】
ステップ２５０５において、実ボリューム化部２１３は、該当行の対処法種別格納欄１６０３の値を参照する。対処法種別格納欄１６０３の値が「実論理ボリューム化」である場合、処理はステップ２５０６に進む。一方、該当行の対処法種別格納欄１６０３の値が「プール移動」である場合、処理はステップ２５０３に戻る。この時点の該当行は、ステップ２５０３に戻った後、処理済として扱われる。なお、該当行の対処法種別格納欄１６０３の値が「プール移動」である場合に実行される処理については後述する（図２６参照）。
【０３９７】
ステップ２５０６において、実ボリューム化部２１３は、制御情報テーブル１５０１の動作モード格納欄１５１２の値が「自動」であるか、又は、該当行の論理ボリューム識別子格納欄１６０２の値がステップ２５０２で取得した論理ボリューム識別子と一致するか否かを判定する。制御情報テーブル１５０１の動作モード格納欄１５１２の値が「自動」であるか、又は、該当行の論理ボリューム識別子格納欄１６０２の値がステップ２５０２で取得した論理ボリューム識別子と一致する場合、該当行の論理ボリューム識別子格納欄１６０２の値によって識別される仮想論理ボリュームは、実論理ボリューム化されるべきものである。この場合、処理はステップ２５０７に進む。一方、制御情報テーブル１５０１の動作モード格納欄１５１２の値が「手動」であり、かつ、該当行の論理ボリューム識別子格納欄１６０２の値がステップ２５０２で取得した論理ボリューム識別子と不一致である場合、処理はステップ２５０３に戻る。この時点の該当行は、ステップ２５０３に戻った後、処理済として扱われる。
【０３９８】
ステップ２５０７において、実ボリューム化部２１３は、該当行の論理ボリューム識別子格納欄１６０２の値に対応する行を論理ボリュームテーブル８０１から検索し、検索された行の定義容量格納欄８０５の値を取得する。
【０３９９】
ステップ２５０８において、実ボリューム化部２１３は、論理ボリュームテーブル８０１を検索し、ボリューム種別格納欄８０３の値が「実」であり、かつ、定義容量格納欄８０５の値がステップ２５０７で取得した定義容量の値と一致し、かつ、使用状態格納欄８０６の値が「未使用」である行を取得し、ステップ２５０９に進む。
【０４００】
ステップ２５０９において、実ボリューム化部２１３は、ステップ２５０８の検索条件を満たす行が取得された否かを判定する。検索条件を満たす行が取得された場合、処理はステップ２５１０に進む。一方、検索条件を満たす行が取得されなかった場合、仮想論理ボリュームのマイグレーション先となる実論理ボリュームが存在しない。すなわち、仮想論理ボリュームを実論理ボリューム化することができないため、処理はステップ２５１１に進む。
【０４０１】
ステップ２５１０において、実ボリューム化部２１３は、該当行の論理ボリューム識別子格納欄１６０２の値が示す仮想論理ボリュームを、ステップ２５０８で取得された論理ボリュームテーブル８０１の行の論理ボリューム識別子格納欄８０２の値が示す実論理ボリュームに移動する命令をマイグレーション実行部１３５に対し発行する。
【０４０２】
ステップ２５１１において、実ボリューム化部２１３は、該当行の論理ボリューム識別子格納欄１６０２の値が示す仮想論理ボリュームを移動することのできる実論理ボリューム（すなわち、移動元の仮想論理ボリュームと定義容量が一致した未使用の実論理ボリューム）がなかったためボリューム移動できない旨の警告メッセージを性能管理クライアント１０４に表示する。
【０４０３】
ステップ２５１０又は２５１１が終了すると、処理はステップ２５０３に戻る。この時点の該当行は、ステップ２５０３に戻った後、処理済として扱われる。
【０４０４】
図２６は、本発明の一実施形態の性能管理ソフト１２０に含まれるプール間移動部２１４の処理手順を示すフローチャートである。
【０４０５】
図２６の処理手順は、性能管理ソフト１２０が自動動作モードである場合は、ボリューム選択部２０７が処理を完了した後、自動的に起動される。性能管理ソフト１２０が手動動作モードである場合は、ボリューム一覧表示部２１１が表示した一覧からユーザが性能問題解決方法を選択して実行指示を出すと、図２５の処理手順が起動される。
【０４０６】
まず、ステップ２６０１において、プール間移動部２１４は、制御情報テーブル１５０１の動作モード格納欄１５１２の値を参照する。動作モード格納欄１５１２の値が「自動」である場合はステップ２６０３に進み、「手動」である場合はステップ２６０２に進む。
ただし、図１９のステップ１９０５、ステップ１９１１又は図２０のステップ２００５において、一つの仮想論理ボリュームに対して複数の問題解決策が登録された場合、それらの複数のうち一つをユーザが選択する必要がある。したがってこの場合、ステップ２６０１において必ず「手動」が選択される。
【０４０７】
ステップ２６０２において、プール間移動部２１４は、表示画面４０１の性能問題解決方法一覧のうちユーザによって実行指示された行に対応する仮想論理ボリュームの番号を取得する。次に、プール間移動部２１４は、論理ボリュームテーブル８０１を検索して、仮想論理ボリューム番号に対応する論理ボリューム識別子を取得する。これらの取得は、図２５のステップ２５０２と同様に実行される。ここで取得された論理ボリューム識別子によって識別される仮想論理ボリュームは、これから移動されるべき仮想論理ボリューム（すなわち、移動対象の仮想論理ボリューム）である。さらに、プール間移動部２１４は、取得した論理ボリューム識別子に該当する選択ボリュームテーブル１６０１の行を検索して、検索された行の対処法パラメータ格納欄１６０４の値を移動先プール識別子として取得し、ステップ２６０３に進む。
【０４０８】
例えば、ユーザが、図４に示す表示画面４０１において、論理ボリューム番号「０５」が付与された仮想論理ボリュームをプールＣに移動することを指示した場合、プール間移動部２１４は、ステップ２５０２と同様の手順によって、移動対象の仮想論理ボリュームの識別子として「仮想論理ボリュームＢ」を取得する。さらに、プール間移動部２１４は、選択ボリュームテーブル１６０１に登録されている行のうち、論理ボリューム識別子格納欄１６０２に「仮想論理ボリュームＢ」が格納されている行の、対処法パラメータ格納欄１６０４に格納されている「プールＣ」を、移動先プール識別子として取得する。
【０４０９】
ステップ２６０３において、プール間移動部２１４は、選択ボリュームテーブル１６０１に登録されている行を先頭から順に検索して、未処理の１行を取得し、ステップ２６０４に進む。ここで、未処理の行とは、ステップ２６０５以降の処理がまだ実行されていない行を意味する。
【０４１０】
ステップ２６０４において、プール間移動部２１４は、ステップ２６０３の検索によって未処理の行が見つかったか否かを判定する。未処理の行が見つからなかった場合、選択ボリュームテーブル１６０１に登録されている全ての行についてステップ２６０５以降の処理が終了した。この場合、プール間移動部２１４は処理を終了する。一方、未処理の行が見つかった場合、処理はステップ２６０５に進む。ステップ２６０３の検索によって見つかった行を、以下の図２６の説明において、該当行と記載する。
【０４１１】
ステップ２６０５において、プール間移動部２１４は、該当行の対処法種別格納欄１６０３の値を参照する。対処法種別格納欄１６０３の値が「プール移動」である場合、処理はステップ２６０６に進む。一方、該当行の対処法種別格納欄１６０３の値が「実論理ボリューム化」である場合、処理はステップ２６０３に戻る。この時点の該当行は、ステップ２６０３に戻った後、処理済として扱われる。
【０４１２】
ステップ２６０６において、プール間移動部２１４は、制御情報テーブル１５０１の動作モード格納欄１５１２の値が「自動」であるか、又は、該当行の論理ボリューム識別子格納欄１６０２の値がステップ２６０２で取得した論理ボリューム識別子と一致するか否かを判定する。制御情報テーブル１５０１の動作モード格納欄１５１２の値が「自動」であるか、又は、該当行の論理ボリューム識別子格納欄１６０２の値がステップ２５０２で取得した論理ボリューム識別子と一致する場合、該当行の論理ボリューム識別子格納欄１６０２の値によって識別される仮想論理ボリュームは、移動対象である。この場合、処理はステップ２６０７に進む。一方、制御情報テーブル１５０１の動作モード格納欄１５１２の値が「手動」であり、かつ、該当行の論理ボリューム識別子格納欄１６０２の値がステップ２６０２で取得した論理ボリューム識別子と不一致である場合、処理はステップ２６０３に戻る。この時点の該当行は、ステップ２６０３に戻った後、処理済として扱われる。
【０４１３】
ステップ２６０７において、プール間移動部２１４は、該当行の論理ボリューム識別子格納欄１６０２の値に対応する行を論理ボリュームテーブル８０１から検索し、検索された行の定義容量格納欄８０５の値を取得する。
【０４１４】
ステップ２６０８において、プール間移動部２１４は、論理ボリュームテーブル８０１を検索し、ボリューム種別格納欄８０３の値が「仮想」であり、かつ、定義容量格納欄８０５の値がステップ２６０７で取得した定義容量の値と一致し、かつ、使用状態格納欄８０６の値が「未使用」であり、かつ、論理ボリューム識別子格納欄８０２の値が示す仮想論理ボリュームがステップ２６０２で取得した移動先プールに所属する行を取得し、ステップ２６０９に進む。仮想論理ボリュームが移動先プールに所属するか否かは、仮想論理ボリューム・プール間関連テーブル１１０１からその仮想論理ボリュームが登録された行を検索し、見つかった行のプール識別子格納欄１１０３の値と、ステップ２６０２で取得した移動先プール識別子とが一致するか否かを判定することによって実行される。
【０４１５】
ステップ２６０９において、プール間移動部２１４は、ステップ２６０８の検索で検索条件を満足する行が取得されたか否かを判定する。検索条件を満足する行が取得された場合、処理はステップ２６１０に進む。一方、検索条件を満足する行が取得されなかった場合、移動対象の仮想論理ボリュームの移動先となる仮想論理ボリュームが存在しない。すなわち、仮想論理ボリュームを他のプールに移動することができないため、処理はステップ２６１１に進む。
【０４１６】
ステップ２６１０において、プール間移動部２１４は、該当行の論理ボリューム識別子格納欄１６０２の値が示す仮想論理ボリュームを、ステップ２６０８で取得された論理ボリュームテーブル８０１の行の論理ボリューム識別子格納欄８０２の値が示す仮想論理ボリュームに移動する命令をマイグレーション実行部１３５に対し発行する。
【０４１７】
ステップ２６１１において、プール間移動部２１４は、該当行の論理ボリューム識別子格納欄１６０２の値が示す仮想論理ボリュームを移動することのできる仮想論理ボリューム（すなわち、移動対象の仮想論理ボリュームと定義容量が一致した未使用の仮想論理ボリューム）が移動先プールになかったためボリューム移動できない旨の警告メッセージを性能管理クライアント１０４に表示する。
【０４１８】
ステップ２６１０又は２６１１が終了すると、処理はステップ２６０３に戻る。この時点の該当行は、ステップ２６０３に戻った後、処理済として扱われる。
【０４１９】
以上の本発明の実施形態をまとめると、性能管理ソフト１２０は、計測された各仮想論理ボリューム及び各プールの統計情報に基づいて、仮想論理ボリューム又はプールに性能問題が発生しているか否かを判定する（図１７）。
【０４２０】
性能問題が発生していると判定された場合、性能管理ソフト１２０は、性能問題を解決するために、移動されるべき仮想論理ボリューム及びその移動先を選択する（図１９から図２３）。具体的には、移動されるべき仮想論理ボリュームとして性能問題が発生した仮想論理ボリュームが選択され、移動先として、実論理ボリューム（ステップ１９１４、ステップ１９１６、ステップ２０１２、ステップ２１０５、ステップ２２０５、ステップ２２１１及びステップ２３０５）、又は、選択された仮想論理ボリュームが所属するプール以外のプール（ステップ１９０５、ステップ１９１１及びステップ２００５）が選択される。
【０４２１】
さらに、一つのホストサーバが、性能問題が発生した仮想論理ボリュームを含む複数の仮想論理ボリュームにＩ／Ｏを発行している場合、それらの複数の仮想論理ボリュームが移動されるべき仮想論理ボリュームとして選択されてもよい（ステップ２００９、ステップ２１０９及びステップ２３０９）。あるいは、一つのアプリケーションが、性能問題が発生した仮想論理ボリュームを含む複数の仮想論理ボリュームにＩ／Ｏを発行している場合、それらの複数の仮想論理ボリュームが移動されるべき仮想論理ボリュームとして選択されてもよい（ステップ２０１０、ステップ２１１０及びステップ２３１０）。
【０４２２】
選択された仮想論理ボリューム及びその移動先は、図４に示すように表示装置１７０に表示される。この表示は、上記のように仮想論理ボリューム及びその移動先が選択される各ステップにおいて実行されてもよいし、図１９から図２３に示す一連の処理が終了した後に実行されてもよい。
【０４２３】
このようにして選択された仮想論理ボリュームを選択された移動先に移動させることによって（図２５及び図２６）、複数の仮想論理ボリュームに対するＩ／Ｏが、互いの干渉による性能への影響が小さくなるように、分散される。その結果、劣化した性能の回復又は性能劣化の予防を図ることができる。
【図面の簡単な説明】
【０４２４】
【図１】本発明の一実施形態のシステム構成を示すブロック図である。
【図２】本発明の一実施形態の計算機システムの機能ブロック図である。
【図３】本発明の一実施形態のＳＡＮ環境におけるリソースの構成及びリソース間の関連に関する具体例を示すブロック図である。
【図４】本発明の一実施形態のボリューム一覧表示部の表示画面の一例を示す説明図である。
【図５】本発明の一実施形態のアプリケーション・ファイル間関連テーブルの構造の一例を示す説明図である。
【図６】本発明の一実施形態のファイル・ボリューム間関連テーブルの構造の一例を示す説明図である。
【図７】本発明の一実施形態のボリューム・論理ボリューム間関連テーブルの構造の一例を示す説明図である。
【図８】本発明の一実施形態の論理ボリュームテーブルの構造の一例を示す説明図である。
【図９】本発明の一実施形態の複合論理ボリューム・要素論理ボリューム間関連テーブルの構造の一例を示す説明図である。
【図１０】本発明の一実施形態の実論理ボリューム・アレイグループ間関連テーブルの構造の一例を示す説明図である。
【図１１】本発明の一実施形態の仮想論理ボリューム・プール間関連テーブルの構造の一例を示す説明図である。
【図１２】本発明の一実施形態のプール・プールボリューム間関連テーブルの構造の一例を示す説明図である。
【図１３】本発明の一実施形態のボリューム統計情報テーブルの構造の一例を示す説明図である。
【図１４】本発明の一実施形態のプール統計情報テーブルの構造の一例を示す説明図である。
【図１５】本発明の一実施形態の制御情報テーブルの構造の一例を示す説明図である。
【図１６】本発明の一実施形態の選択ボリュームテーブルの構造の一例を示す説明図である。
【図１７】本発明の一実施形態の性能管理ソフトに含まれる性能劣化・過負荷検知部の処理手順を示すフローチャートである。
【図１８】本発明の一実施形態の性能管理ソフトに含まれるボリューム選択部の処理手順を示すフローチャートの第１部分である。
【図１９】本発明の一実施形態の性能管理ソフトに含まれるボリューム選択部の処理手順を示すフローチャートの第２部分である。
【図２０】本発明の一実施形態の性能管理ソフトに含まれるボリューム選択部の処理手順を示すフローチャートの第３部分である。
【図２１】本発明の一実施形態の性能管理ソフトに含まれるボリューム選択部の処理手順を示すフローチャートの第４部分である。
【図２２】本発明の一実施形態の性能管理ソフトに含まれるボリューム選択部の処理手順を示すフローチャートの第５部分である。
【図２３】本発明の一実施形態の性能管理ソフトに含まれるボリューム選択部の処理手順を示すフローチャートの第６部分である。
【図２４】本発明の一実施形態において実行される性能劣化の判定方法を説明する図である。
【図２５】本発明の一実施形態の性能管理ソフトに含まれる実ボリューム化部の処理手順を示すフローチャートである。
【図２６】本発明の一実施形態の性能管理ソフトに含まれるプール間移動部の処理手順を示すフローチャートである。
【符号の説明】
【０４２５】
１０１〜１０３  業務クライアント
１０４  性能管理クライアント
１０５  ローカルエリアネットワーク（ＬＡＮ）
１０６〜１０８、３０１〜３０４  ホストサーバ
１０９  エージェントサーバ
１１０  性能管理サーバ
１１１、３０５〜３０８  アプリケーション
１１２  アプリケーションエージェント
１１３  オペレーティングシステム（ＯＳ）
１１４  ホストエージェント
１２１〜１２３、３２０、３２１  ＳＡＮスイッチ
１３１、３２２  ストレージ装置
１３５  マイグレーション実行部
１３６  仮想ボリューム管理制御部
１３７  実論理ボリューム
１３８、１３９  プールボリューム
１５１、１５５、１５９  ＣＰＵ
１５２、１５６、１６０  通信装置
１５３、１５８、１６２  ディスク装置
１５４、１５７、１６１  メモリ
１６３  制御部
３０９〜３１４  ファイル
３１５〜３１９  ボリューム
３２３〜３２５  複合論理ボリューム
３２６〜３３３  仮想論理ボリューム
３３４〜３３７  実論理ボリューム
３３８〜３４０  プール
３４１〜３４８  プールボリューム
３４９〜３５４  アレイグループ
３６０  物理ディスク
【図１】
2008310734.tif 000003
【図２】
2008310734.tif 000004
【図３】
2008310734.tif 000005
【図４】
2008310734.tif 000006
【図５】
2008310734.tif 000007
【図６】
2008310734.tif 000008
【図７】
2008310734.tif 000009
【図８】
2008310734.tif 000010
【図９】
2008310734.tif 000011
【図１０】
2008310734.tif 000012
【図１１】
2008310734.tif 000013
【図１２】
2008310734.tif 000014
【図１３】
2008310734.tif 000015
【図１４】
2008310734.tif 000016
【図１５】
2008310734.tif 000017
【図１６】
2008310734.tif 000018
【図１７】
2008310734.tif 000019
【図１８】
2008310734.tif 000020
【図１９】
2008310734.tif 000021
【図２０】
2008310734.tif 000022
【図２１】
2008310734.tif 000023
【図２２】
2008310734.tif 000024
【図２３】
2008310734.tif 000025
【図２４】
2008310734.tif 000026
【図２５】
2008310734.tif 000027
【図２６】
2008310734.tif 000028