(57)【特許請求の範囲】
【請求項１】
少なくとも一つの第２記憶制御装置と通信経路を介して通信可能に接続される第１記憶制御装置であって、
プールと、
前記プールを制御するコントローラとを備え、
前記コントローラは、
複数の論理ボリュームの性能を示すボリューム性能情報を取得し、
取得した前記ボリューム性能情報に基づいて、前記各論理ボリュームをグループ化して複数のボリュームグループを生成し、
前記ボリュームグループ毎の性能を示すボリュームグループ性能情報を算出し、
算出された前記ボリュームグループ性能情報に応じて前記各ボリュームグループの順序を決定し、
決定された前記順序に基づいて、前記各ボリュームグループの階層を前記プール内に設ける、
第１記憶制御装置。
【請求項２】
前記複数の論理ボリュームには、前記第１記憶制御装置の有する第１論理ボリュームと、前記第２記憶制御装置の有する第２論理ボリュームとが含まれており、
前記第２論理ボリュームは、前記通信経路を介して、前記第１論理ボリュームのうちの所定の第１論理ボリュームに対応付けられている、
請求項１に記載の第１記憶制御装置。
【請求項３】
前記コントローラは、前記第２論理ボリュームのうち同一の第２記憶制御装置に属し、かつ、同一種類の記憶装置に基づいて生成される第２論理ボリュームを、一つの第２論理ボリュームとして取り扱って、前記ボリューム性能情報を取得する、
請求項２に記載の第１記憶制御装置。
【請求項４】
前記コントローラは、前記第１記憶制御装置及び前記第２記憶制御装置に通信可能に接続される管理計算機から、前記第２論理ボリュームに関する前記ボリューム性能情報を取得する、
請求項３に記載の第１記憶制御装置。
【請求項５】
前記コントローラは、前記第２論理ボリュームのスループット性能と、前記第２論理ボリュームを制御する前記第２記憶制御装置のコントローラ性能と、前記第２論理ボリュームを制御する前記第２記憶制御装置の通信ポート性能のうち、最も値の小さい性能を前記第２論理ボリュームのボリューム性能情報として使用する、
請求項４に記載の第１記憶制御装置。
【請求項６】
前記コントローラは、前記第１論理ボリュームのボリューム性能情報を基準として、前記第２論理ボリュームをグループ化する、
請求項５に記載の第１記憶制御装置。
【請求項７】
前記コントローラは、予め設定される所定の契機で、前記各ボリュームグループ性能情報を再度算出し、再度算出された前記ボリュームグループ性能情報に基づいて前記各ボリュームグループの順序を決定し、前記各ボリュームグループの階層を前記プール内に設ける、
請求項６に記載の第１記憶制御装置。
【請求項８】
前記所定の契機は、前記プールの構成が変化した場合、または、前記第２論理ボリュームが前記所定の第１論理ボリュームに接続される数が変化した場合、のいずれか少なくとも一つを含む、
請求項７に記載の第１記憶制御装置。
【請求項９】
前記コントローラは、予め用意される検査用のコマンドを前記第２論理ボリュームに向けて発行し、前記第２論理ボリュームからの応答に基づいて前記第２論理ボリュームに関する前記ボリューム性能情報を取得する、
請求項３に記載の第１記憶制御装置。
【請求項１０】
前記コントローラは、前記検査用のコマンドに対する前記第２論理ボリュームの応答時間に基づいて、処理要求の負荷と応答時間との関係を示すレスポンスカーブを取得し、そのレスポンスカーブに基づいて前記第２論理ボリュームに関する前記ボリューム性能情報を取得する、
請求項９に記載の第１記憶制御装置。
【請求項１１】
前記コントローラは、前記検査用のコマンドの発行対象である前記第２論理ボリュームと同一構成の他の第２論理ボリュームに関する応答結果が既に記憶されているか否かを判定し、前記応答結果が既に記憶されている場合には、前記検査用のコマンドの発行対象である前記第２論理ボリュームについて前記既に記憶済の応答結果を用い、前記検査用のコマンドを発行しない、
請求項１０に記載の第１記憶制御装置。
【請求項１２】
前記コントローラは、予め設定される所定の契機で、前記各ボリュームグループ性能情報を再度算出し、再度算出された前記ボリュームグループ性能情報に基づいて前記各ボリュームグループの順序を決定し、前記各ボリュームグループの階層を前記プール内に設ける、
請求項１１に記載の第１記憶制御装置。
【請求項１３】
前記所定の契機は、前記プールの構成が変化した場合、または、前記第２論理ボリュームが前記所定の第１論理ボリュームに接続される数が変化した場合、のいずれか少なくとも一つを含む、
請求項１２に記載の第１記憶制御装置。
【請求項１４】
少なくとも一つの第２記憶制御装置と通信経路を介して通信可能に接続される第１記憶制御装置を制御するための方法であって、
前記第１記憶制御装置は、プールと、前記プールを制御するコントローラとを備えており、
前記コントローラは、
複数の論理ボリュームの性能を示すボリューム性能情報を取得し、
取得した前記ボリューム性能情報に基づいて、前記各論理ボリュームをグループ化して複数のボリュームグループを生成し、
前記ボリュームグループ毎の性能を示すボリュームグループ性能情報を算出し、
算出された前記ボリュームグループ性能情報に応じて前記各ボリュームグループの順序を決定し、
決定された前記順序に基づいて、前記各ボリュームグループの階層を前記プール内に設ける、
第１記憶制御装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１記憶制御装置及び第１記憶制御装置の制御方法に関する。
【背景技術】
【０００２】
現在、企業では、データ量の増加に伴い、ストレージシステムの大規模化及び複雑化が進んでいる。このため企業では、ストレージ装置の管理容易化及び利用効率の向上を求めている。
【０００３】
それらの要求を満たすための一技術として、シン・プロビジョニングがある。シン・プロビジョニングでは、ストレージシステムが、物理的な記憶領域を有さない仮想的な論理ボリューム（以下、仮想ボリューム）をホスト計算機に提供する。ストレージシステムは、ホスト計算機から仮想ボリュームへのライト要求に応じて、プール内のページを動的に仮想ボリュームに割り当てる。「プール」とは、プールボリュームの集合である。プールボリュームは、複数のページを有する。「ページ」とは、物理的な記憶領域である。
【０００４】
シン・プロビジョニング技術により、ストレージシステムの容量を効率的に使用することができ、さらに、ストレージシステムの容量設計を容易に行うことができる。シン・プロビジョニング技術では、仮想ボリュームの実際の使用量に応じてページを割り当てれば良いためである。
【０００５】
プールは、一般に、同一性能のメディア（ページ群）で構成される。しかし、通常、仮想ボリュームに割り当てられている複数のページのアクセス頻度は同一ではない。仮想ボリュームに割り当てられる複数のページの中には、アクセス頻度が高いページとアクセス頻度の低いページとが混在する。従って、同一性能のページを仮想ボリュームに割り当てる技術では、性能の過不足が生じることがある。
【０００６】
例えば、プールが高性能メディア（高性能ページ）だけで構成されている場合、アクセス頻度が低いページについては、性能過多が生じる。逆に、プールが低性能メディア（低性能ページ）だけで構成されている場合、アクセス頻度が高いページについては、性能不足が生じる。
【０００７】
この問題を解決するための１つの方法として、特許文献１に記載の方法がある。特許文献１によれば、１つのプールを、性能の異なる複数のメディアで構成することで階層化する。ページ内のデータは、そのページを有する階層から、そのページのアクセス頻度に最適な階層へ再配置される。
【０００８】
なお、他のストレージ装置の有する論理ボリュームを自装置の中に取り込んで、それがあたかも自装置の論理ボリュームであるかのようにホスト計算機に提供する技術も知られている（特許文献２，３）。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】米国特許出願公開第２００９／００７０５４１号明細書
【特許文献２】特開２００５−０１１２７７号公報
【特許文献３】特開２００４−００５３７０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
従来技術によれば、第１ストレージ装置は、外部に存在する第２ストレージ装置の有する論理ボリュームを、第１ストレージ装置のプール内のプールボリュームとして使用することができる。これにより、ストレージシステムの有する記憶資源を第１ストレージ装置にまとめて有効利用できる。
【００１１】
しかし、従来技術では、第２ストレージ装置の有する論理ボリュームの性能を適切に評価することができない。第１ストレージ装置と第２ストレージ装置とは、それぞれ異なるベンダから提供される可能性もあり、かつ、ストレージ装置のコントローラ及び記憶装置（メディア）の種類等も千差万別だからである。
【００１２】
このため、従来技術では、第２ストレージ装置の有する論理ボリュームを、第１ストレージ装置の有するプール内の適切な階層に定義することができない。第２ストレージ装置の有する論理ボリュームの性能が不明な場合、例えば、最下位の階層に定義する必要がある。従って、第２ストレージ装置が、第１ストレージ装置の有する論理ボリュームよりも高性能の論理ボリュームを有する場合でも、その高性能の論理ボリュームを有効に活用することができないという問題がある。
【００１３】
本発明は、上記の課題に鑑みてなされたもので、その目的は、複数の論理ボリュームの性能情報に基づいて、適切な階層構造を有するプールを得ることができるようにした第１記憶制御装置及び第１記憶制御装置の制御方法を提供することにある。本発明の他の目的は、複数の論理ボリュームの性能情報を取得し、それら性能情報に基づいて複数のボリュームグループを作成し、各ボリュームグループの性能情報に基づいてプール内に階層を設けることができるようにした、第１記憶制御装置及び第１記憶制御装置の制御方法を提供することにある。
【課題を解決するための手段】
【００１４】
上記課題を解決すべく、本発明に従う第１記憶制御装置は、少なくとも一つの第２記憶制御装置と通信経路を介して通信可能に接続される第１記憶制御装置であって、プールと、プールを制御するコントローラとを備え、コントローラは、複数の論理ボリュームの性能を示すボリューム性能情報を取得し、取得したボリューム性能情報に基づいて、各論理ボリュームをグループ化して複数のボリュームグループを生成し、ボリュームグループ毎の性能を示すボリュームグループ性能情報を算出し、算出されたボリュームグループ性能情報に応じて各ボリュームグループの順序を決定し、決定された順序に基づいて、各ボリュームグループの階層をプール内に設ける。
【００１５】
複数の論理ボリュームには、第１記憶制御装置の有する第１論理ボリュームと、第２記憶制御装置の有する第２論理ボリュームとが含まれており、第２論理ボリュームは、通信経路を介して、第１論理ボリュームのうちの所定の第１論理ボリュームに対応付けられてもよい。
【００１６】
コントローラは、第２論理ボリュームのうち、同一の第２記憶制御装置に属し、かつ、同一種類の記憶装置に基づいて生成される第２論理ボリュームを、一つの第２論理ボリュームとして取り扱って、ボリューム性能情報を取得してもよい。
【００１７】
コントローラは、第１記憶制御装置及び第２記憶制御装置に通信可能に接続される管理計算機から、第２論理ボリュームに関するボリューム性能情報を取得してもよい。
【００１８】
コントローラは、第２論理ボリュームのスループット性能と、第２論理ボリュームを制御する第２記憶制御装置のコントローラ性能と、第２論理ボリュームを制御する第２記憶制御装置の通信ポート性能のうち、最も値の小さい性能を第２論理ボリュームのボリューム性能情報として使用することができる。
【００１９】
コントローラは、第１論理ボリュームのボリューム性能情報を基準として、第２論理ボリュームをグループ化することができる。
【００２０】
コントローラは、予め設定される所定の契機で、各ボリュームグループ性能情報を再度算出し、再度算出されたボリュームグループ性能情報に基づいて各ボリュームグループの順序を決定し、各ボリュームグループの階層をプール内に設けてもよい。
【００２１】
所定の契機は、プールの構成が変化した場合、または、第２論理ボリュームが所定の第１論理ボリュームに接続される数が変化した場合、または、第２記憶制御装置のハードウェア構成が変化した場合のいずれか少なくとも一つでよい。
【００２２】
コントローラは、予め用意される検査用のコマンドを第２論理ボリュームに向けて発行し、第２論理ボリュームからの応答に基づいて第２論理ボリュームに関するボリューム性能情報を取得することもできる。
【００２３】
コントローラは、検査用のコマンドに対する第２論理ボリュームの応答時間に基づいて、処理要求の負荷と応答時間との関係を示すレスポンスカーブを取得し、そのレスポンスカーブに基づいて第２論理ボリュームに関するボリューム性能情報を取得してもよい。
【００２４】
上述した本発明の特徴は、明示された以外に種々組合せることができる。さらに、本発明は、コンピュータプログラムとして把握することもできる。コンピュータプログラムは、通信媒体または記録媒体を介して、コンピュータにインストールされる。
【図面の簡単な説明】
【００２５】
【図１】図１は、本発明のストレージシステムの全体を示す説明図である。
【図２】図２は、第１ストレージ装置のハードウェア構成を示す。
【図３】図３は、第１ストレージ装置のメモリの記憶内容を示す。
【図４】図４は、管理計算機のハードウェア構成を示す。
【図５】図５は、仮想ボリュームとプール及びプールボリューム等の関係を模式的に示す説明図である。
【図６】図６は、外部ドライブ性能管理テーブルを示す。
【図７】図７は、外部ストレージ性能管理テーブルを示す。
【図８】図８は、外部ストレージ管理テーブルを示す。
【図９】図９は、内部ドライブ性能管理テーブルを示す。
【図１０】図１０は、プールボリューム性能管理テーブルを示す。
【図１１】図１１は、プールボリュームグループ管理テーブルを示す。
【図１２】図１２は、ティア順序管理テーブルを示す。
【図１３】図１３は、性能ポテンシャル管理テーブルを示す。
【図１４】図１４は、プールボリュームレスポンスカーブ管理テーブルを示す。
【図１５】図１５は、ティアレスポンスカーブ管理テーブルを示す。
【図１６】図１６は、ティア情報を確認するための画面例を示す。
【図１７】図１７は、全体的な処理の流れを示すフローチャートである。
【図１８】図１８は、外部ドライブの性能情報を取得する処理を示すフローチャートである。
【図１９】図１９は、外部ストレージの性能情報を取得する処理を示すフローチャートである。
【図２０】図２０は、外部ボリューム（外部接続ボリューム）の性能を測定するための処理を示すフローチャートである。
【図２１】図２１は、外部ストレージの性能を測定するための処理を示すフローチャートである。
【図２２】図２２は、第１ストレージ装置と第２ストレージ装置（外部ストレージ装置）との接続関係を示す接続情報を取得する処理を示すフローチャートである。
【図２３】図２３は、プールボリュームの性能を算出する処理を示すフローチャートである。
【図２４】図２４は、プールボリュームをグループ化する処理を示すフローチャートである。
【図２５】図２５は、プールボリュームグループ毎の性能を算出する処理を示すフローチャートである。
【図２６】図２６は、ティアの順序を算出する処理を示すフローチャートである。
【図２７】図２７は、性能ポテンシャルを算出するための処理を示すフローチャートである。
【図２８】図２８は、レスポンスカーブから各ティアの性能ポテンシャルを求める方法の一例を示す。
【図２９】図２９は、構成が変更された場合の処理を示すフローチャートである。
【図３０】図３０は、ページを管理する処理を示すフローチャートである。
【図３１】図３１は、外部接続ボリューム（外部ボリューム）の性能を監視する処理を示すフローチャートである。
【発明を実施するための形態】
【００２６】
以下、図面に基づいて、本発明の実施の形態を説明する。本実施形態では、後述のように、ストレージシステム内の各論理ボリュームの性能情報を取得し、各論理ボリュームをグループ化して、プールのティア構成を決定する。本実施形態では、ドライブ性能のみならず、外部ストレージ装置（第２ストレージ装置）のコントローラ性能及びポート性能も性能情報として考慮することができる。これにより、本実施形態では、ストレージシステム内の記憶資源を、容量及び性能の両面で有効に利用することができ、さらには、ストレージシステムのコストを低減することができる。
【００２７】
なお、以下の説明では、「ｘｘｘテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「ｘｘｘテーブル」を「ｘｘｘ情報」と呼ぶことができる。
【００２８】
以後の説明では、「プログラム」を主語として処理を説明する場合がある。プログラムは、プロセッサ（例えばＣＰＵ（Central Processing Unit））によって実行されることで、定められた処理を、メモリ等の記憶資源及び通信ポート等の通信インタフェース装置を適宜用いながら実行する。従って、処理の主語は、プロセッサでもよい。プロセッサは、ＣＰＵの他に専用ハードウェアを有していてもよい。コンピュータプログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであってもよい。
【００２９】
例えば、プールボリューム等の各要素は、識別子（ＩＤ）、番号、名前等で識別可能である。
【００３０】
以下、図を用いて、本発明の一実施例を説明する。本発明が以下に述べる実施例に制限されることは無く、本発明の思想に合致するあらゆる応用例が本発明の技術的範囲に含まれる。また、特に限定しない限り、各構成要素は複数でも単数でも構わない。
【実施例１】
【００３１】
図１は、ストレージシステムの全体構成を示す。ストレージシステムは、例えば、一つまたは複数の第１ストレージ装置１０１と、一つまたは複数の第２ストレージ装置１０２と、一つまたは複数のホスト計算機１０３と、一つまたは複数の管理計算機１０４とを備えることができる。
【００３２】
第１ストレージ装置１０１とホスト計算機１０３とは、例えば、第１通信ネットワーク１１１を介して接続される。第１ストレージ装置１０１と第２ストレージ装置１０２とは、例えば、第２通信ネットワーク１１２を介して接続される。第１ストレージ装置１０１と管理計算機１０４とは、例えば、第３通信ネットワーク１１３を介して接続される。第２ストレージ装置１０２と管理計算機１０４とも、例えば、第３通信ネットワーク１１３を介して接続される。ホスト計算機１０３と管理計算機１０４も、例えば、第３通信ネットワーク１１３を介して接続される。
【００３３】
第１通信ネットワーク１１１及び第２通信ネットワーク１１２は、例えば、ＳＡＮ（Storage Area Network）として構成される。第３通信ネットワーク１１３は、例えば、ＬＡＮ（Local Area Network）として構成される。
【００３４】
第１ストレージ装置１０１は、通信線１２１を介して、第１通信ネットワーク１１１に接続される。第１ストレージ装置１０１は、通信線１２２を介して、第２通信ネットワーク１１２に接続される。第１ストレージ装置１０１は、通信線１２３を介して、第３通信ネットワーク１１３に接続される。
【００３５】
第２ストレージ装置１０２は、通信線１３１を介して、第２通信ネットワーク１１２に接続される。第２ストレージ装置１０２は、通信線１３２を介して、第３通信ネットワーク１１３に接続される。
【００３６】
ホスト計算機１０３は、通信線１４１を介して、第１通信ネットワーク１１１に接続される。ホスト計算機１０３は、通信線１４２を介して、第３通信ネットワーク１１３に接続される。管理計算機１０４は、通信線１５１を介して、第３ネットワーク１１３に接続される。
【００３７】
なお、通信線１２１、１２２、１２３、１３１、１３２、１４１、１４２、及び１５１は、例えば、メタルケーブルまたは光ファイバケーブル等の有線として構成される。しかし、ホスト計算機１０３と第１ストレージ装置１０１、第１ストレージ装置１０１と第２ストレージ装置１０２、第１ストレージ装置１０１と管理計算機１０４、ホスト計算機１０３と管理計算機１０４、第２ストレージ装置１０２と管理計算機１０４を、それぞれ無線で接続する構成でもよい。無線接続の場合、通信線１２１、１２２、１２３、１３１、１３２、１４１、１４２、及び１５１は省略される。
【００３８】
第１通信ネットワーク１１１、第２通信ネットワーク１１２、及び第３通信ネットワーク１１３のうちの少なくとも２つを、共通の通信ネットワークとしてもよい。
【００３９】
図２は、第１ストレージ装置１０１のハードウェア構成を示す。第１ストレージ装置１０１は、例えば、コントローラ２１１と、複数のディスク２２２とに大別できる。第２ストレージ装置１０２のコントローラと区別するために、コントローラ２１１を第１コントローラ２１１と呼ぶこともできる。第２ストレージ装置１０２のコントローラを第２コントローラまたは外部コントローラと呼ぶこともできる。
【００４０】
「記憶装置」としてのディスク２２２の種類としては、例えば、ＳＳＤ（Solid State Drive）、ＳＡＳ（Serial Attached SCSI）−ＨＤＤ（Hard Disk Drive）、ＳＡＴＡ（Serial Advanced Technology Attachment）−ＨＤＤが挙げられる。但し、それらに限らず、
ＦｅＲＡＭ（Ferroelectric Random Access Memory）、ＭＲＡＭ（Magnetoresistive Random Access Memory）、相変化メモリ（Ovonic Unified Memory）、ＲＲＡＭ（登録商標）（Resistance RAM）等の種々の記憶装置を用いることもできる。
【００４１】
ディスク２２２は、ファイバチャネルケーブル等の通信線２２１を介して、コントローラ２１１に接続される。なお、複数のディスク２２２で、１つ又は複数のＲＡＩＤ（Redundant Array of Independent Disks）グループを構成できる。各ディスク２２２の有する物理的記憶領域は、ＲＡＩＤグループにより一つにまとめられる。ＲＡＩＤグループの有する物理的記憶領域を用いて、一つまたは複数の論理ボリュームが作成される。
【００４２】
後述のように、第１ストレージ装置１０１内に設けられる複数の論理ボリュームのうち、第１ストレージ装置１０１内のＲＡＩＤグループに基づいて作成される論理ボリュームは、内部ボリュームと呼ばれる。第１ストレージ装置内のＲＡＩＤグループに基づいておらず、第２ストレージ装置１０２の有する論理ボリュームに接続されている論理ボリュームを、外部接続ボリュームと呼ぶ。
【００４３】
コントローラ２１１のハードウェア構成を説明する。コントローラ２１１は、ホスト計算機１０３から受信したコマンドに従って、ディスク２２２へのデータの書き込み及びデータ読み出しを制御する。コントローラ２１１は、シン・プロビジョニングに従う仮想ボリューム５１１（図５参照）をホスト計算機１０３に提供する。仮想ボリューム（シン・プロビジョニングボリュームと呼んでもよい）５１１は、複数の仮想領域から構成されている。それら仮想領域は、仮想的な記憶領域であり、例えば、ＬＢＡ（Logical Block Address）で表される。仮想的な記憶領域は、プール５１２内の実記憶領域（図５参照）との比較において、仮想ページと呼ぶことできる。プール５１２内の実記憶領域は実ページと呼ぶこともできる。
【００４４】
コントローラ２１１は、例えば、記憶資源と、通信インタフェース装置（以下、インタフェース装置を「ＩＦ
」と略記）と、それらに接続されたＣＰＵ２１２とを有する。記憶資源には、例えば、主メモリ２１３、キャッシュメモリ２１４、及び不揮発性メモリ２１５が含まれる。通信ＩＦには、例えば、ホストＩＦ（Ｈ−ＩＦ）２１６と、管理ＩＦ（Ｍ−ＩＦ）２１７と、ディスクＩＦ（Ｄ−ＩＦ）２１８とが含まれる。これら各メモリ２１３、２１４、２１５、ＣＰＵ２１２、ホストＩＦ２１６、管理ＩＦ２１７、及びディスクＩＦ２１８は、バス等の通信線２１９を介して相互に接続されている。
【００４５】
不揮発性メモリ２１５としては、例えば、フラッシュメモリ等のような書き換え可能な不揮発性のメモリを挙げることができる。不揮発性メモリ２１５は、コンピュータプログラム及び情報を記憶する。
【００４６】
具体的には、例えば、不揮発性メモリ２１５は、図３に示すように、コンピュータプログラム３１１，３１２，３１３，３１４，３１５，３１６，３１７と、各テーブル３２０，３２１，３２２，３２３，３２４，３２５，３２６，３２７，３２８，３２９とを記憶する。各プログラム及びテーブルは、不揮発性メモリ２１５から主メモリ２１３に転送され、ＣＰＵ２１２により実行される。
【００４７】
不揮発性メモリ２１５に記憶されるコンピュータプログラムには、例えば、外部ストレージ情報取得プログラム３１１と、ティア管理プログラム３１２と、ティア順序算出プログラム３１３と、性能ポテンシャル算出プログラム３１４と、ティア構成変更プログラム３１５と、ページ再配置プログラム３１６と、外部ストレージ性能監視プログラム３１７とがある。
【００４８】
不揮発性メモリ２１５に記憶されるテーブルには、例えば、外部ドライブ性能管理テーブル３２０と、外部ストレージ性能管理テーブル３２１と、外部ストレージ管理テーブル３２２と、内部ドライブ性能管理テーブル３２３と、プールボリューム性能管理テーブル３２４と、プールボリュームグループ管理テーブル３２５と、ティア順序管理テーブル３２６と、性能ポテンシャル管理テーブル３２７と、プールボリュームレスポンスカーブ管理テーブル３２８と、ティアレスポンスカーブ管理テーブル３２９とがある。
【００４９】
外部ストレージ情報取得プログラム３１１は、外部ストレージ装置１０２の性能情報を管理計算機１０４から取得可能であるか判定する。外部ストレージ情報取得プログラム３１１は、外部ストレージ装置１０２から取得した性能情報を、外部ドライブ性能管理テーブル３２０及び外部ストレージ性能管理テーブル３２１に記録する。この処理の詳細は、図１７、図１８、及び図１９を用いて後述する。
【００５０】
第１ストレージ装置１０１を基準にすると、第２ストレージ装置１０２は第１ストレージ装置１０１の外部に存在するため、外部ストレージ装置と呼ばれる。第２ストレージ装置１０２の有する内部ボリュームは、第１ストレージ装置１０１の外部に存在するため、外部ボリュームと呼ばれる。外部ボリュームは、第１ストレージ装置１０１内に仮想的に設けられる外部接続ボリューム（図５中のＥＶｏｌ）に接続され、アドレス空間が対応付けられる。
【００５１】
外部接続ボリュームに対するコマンドは、外部接続ボリュームに対応する外部ボリュームに向けたコマンドに変換されて、第１ストレージ装置１０１から第２ストレージ装置１０２に送信される。第１ストレージ装置１０１は、ホスト計算機１０３から受領したデータを外部ボリュームに書き込んだり、外部ボリュームから読み出したデータをホスト計算機１０３に送信したりする。ホスト計算機１０３は、第１ストレージ装置１０１内の外部接続ボリュームを介して第２ストレージ装置１０２内の外部ボリュームを使用する。ホスト計算機１０３とって、外部ボリュームは第１ストレージ装置１０１内の通常の論理ボリューム（内部ボリューム）と変わらない。
【００５２】
以下の説明では、便宜上、第１ストレージ装置１０１を第１ストレージまたはマスタストレージと呼ぶことがある。第２ストレージ装置１０２を第２ストレージまたは外部ストレージと呼ぶことがある。
【００５３】
ところで、管理計算機１０４から外部ストレージ１０２の性能情報を取得できない場合、外部ストレージ情報取得プログラム３１１は、外部接続ボリューム（詳しくは、外部接続ボリュームに接続された外部ボリューム）の性能を測定して、その測定結果をプールボリュームレスポンスカーブ管理テーブル３２８に記録する。この処理の詳細は、後に図１７、図２０、及び図２１を用いて説明するが、外部ストレージ情報取得プログラム３１１は、第１ストレージ装置１０１がマウントした外部ボリュームに対して、予め用意されたテストＩ／Ｏを発行し、外部ボリュームのレスポンス性能を測定する。
【００５４】
ティア管理プログラム３１２は、プールボリューム毎にドライブ性能（例えば、レスポンス性能及びＩＯＰＳ性能）を算出して、その結果をプールボリューム性能管理テーブル３２４に記録する。この処理の詳細は、後に図１７及び図２３を用いて説明する。ＩＯＰＳとは、単位時間あたりのライト要求及びリード要求の合計値である（Input Output per second）。
【００５５】
ティア管理プログラム３１２は、プールボリューム性能管理テーブル３２４に記録されているプールボリューム性能（例えば、レスポンス性能）を比較してプールボリュームを分類し、その結果をプールボリュームグループ管理テーブル３２５に記録する。この処理の詳細は、後に図１７及び図２４を用いて説明する。
【００５６】
ティア管理プログラム３１２は、プールボリュームグループ毎にドライブ性能を算出して、その結果をプールボリュームグループ管理テーブル３２５に記録する。この処理の詳細は、後に図１７及び図２５を用いて説明する。
【００５７】
ティア順序算出プログラム３１３は、プールボリュームグループ管理テーブル３２５のティア毎の性能値を比較してティアの順序を決定し、その結果をティア順序管理テーブル３２６に記録する。この処理の詳細は、後に図２６を用いて説明する。
【００５８】
性能ポテンシャル算出プログラム３１４は、プールボリュームグループ管理テーブル３２５のティア毎の性能ポテンシャルを決定し、その結果を性能ポテンシャル管理テーブル３２７に記録する。性能ポテンシャル算出プログラム３１４は、プールボリュームレスポンスカーブ管理テーブル３２８の結果を用いて、各ティアの性能ポテンシャルを決定する。この処理の詳細は、後に図１７、図２７、及び図２８を用いて説明する。
【００５９】
ティア構成変更プログラム３１５は、プログラム３１１〜３１４で決定した、ティアの順序と性能ポテンシャルに基づいて、ティアの構成を変更する。プログラム３１５の処理の詳細は、後に図２９を用いて説明する。
【００６０】
ページ再配置プログラム３１６は、仮想ボリュームに割り当てられたページが配置されるティアを、そのページの使用状況に応じて変更する。ページ再配置プログラム３１６は、仮想ボリュームに割り当てられたページに対するアクセスを監視し、ページのアクセス頻度に基づいて、そのページの属すべき適切なティアを判定する。ページ再配置プログラム３１６は、判定結果に基づき、対象となるページのデータをマイグレーション先のティア内のページにコピーさせる。例えば、アクセス頻度の多いページのデータは、現在のティアよりも高性能のティアに移される。これに対し、アクセス頻度の少ないページのデータは、現在のティアよりも低性能のティアに移される。プログラム３１６の処理の詳細は、後に図３０を用いて説明する。
【００６１】
外部ストレージ性能監視プログラム３１７は、外部ストレージの性能を監視する。外部ボリュームの性能は、ティア管理プログラム３１２により算出されるか、または、外部ストレージ情報取得プログラム３１１により測定される。外部ストレージ性能監視プログラム３１７は、外部プールボリュームの性能が一定時間経過後にも正しいか否かを監視し、性能情報を修正する。プログラム３１７の処理の詳細は、図３１で後述する。
【００６２】
外部ドライブ性能管理テーブル３２０は、外部ストレージのドライブタイプ毎に性能値を管理するためのテーブルである。このテーブル３２０の詳細は、後に図６を用いて説明する。
【００６３】
外部ストレージ性能管理テーブル３２１は、外部ストレージのシステム性能、例えば、コントローラ性能及びポート性能を管理するためのテーブルである。このテーブル３２１の詳細は、後に図７を用いて説明する。
【００６４】
外部ストレージ管理テーブル３２２は、外部ストレージが第１ストレージ装置１０１にマウントしているボリューム（外部ボリューム）の数と、外部接続ボリュームと外部ボリュームとを接続するパスの数とを管理するためのテーブルである。このテーブル３２２は、後に図８を用いて説明する。
【００６５】
内部ドライブ性能管理テーブル３２３は、第１ストレージ装置１０１の有するディスク２２２のタイプ毎に性能を管理するためのテーブルである。ディスク２２２は、第１ストレージ装置１０１の内部に存在するため、内部ドライブと呼ばれる。このテーブル３２３の詳細は、後に図９を用いて説明する。
【００６６】
プールボリューム性能管理テーブル３２４は、作成されたプールボリュームの性能に関する情報（例えば、属性及び性能等）を管理するためのテーブルである。このテーブル３２４の詳細は、後に図１０を用いて説明する。
【００６７】
プールボリュームグループ管理テーブル３２５は、プールボリュームがどのように分類されたかを管理する。更に、プールボリュームグループ管理テーブル３２５は、分類されたプールボリューム群（以下、プールボリュームグループ）毎の性能値を管理する。このテーブル３２５の詳細は、後に図１１を用いて説明する。
【００６８】
ティア順序管理テーブル３２６は、プール内のプールボリュームグループが何番目のティアに属しているかを管理するためのテーブルである。このテーブル３２６は、後に図１２を用いて説明する。
【００６９】
性能ポテンシャル管理テーブル３２７は、プール内のプールボリュームグループ毎の性能ポテンシャル値を管理するためのテーブルである。このテーブル３２７は、後に図１３を用いて説明する。性能ポテンシャルとは、プールボリュームグループ（そのプールボリュームグループから構成されるティア）が処理可能な最大のＩＯＰＳである。
【００７０】
プールボリュームレスポンスカーブ管理テーブル３２８は、プールボリューム毎のレスポンスカーブを管理するためのテーブルである。このテーブル３２８は、後に図１４を用いて説明する。
【００７１】
ティアレスポンスカーブ管理テーブル３２９は、プールボリュームグループ毎のレスポンスカーブを管理するためのテーブルである。このテーブル３２９は、後に図１５を用いて説明する。
【００７２】
再び図２を参照する。主メモリ２１４には、必要に応じて、不揮発性メモリ２１５に記憶された各プログラム３１１〜３１７が読み込まれる。ＣＰＵ２１２が、主メモリ２１３に読み込まれた各プログラムを実行することにより、後述する種々の処理が行われる。
【００７３】
キャッシュメモリ２１４は、ホスト計算機１０３から受信したデータ及びディスク２２２から読み出されたデータを一時的に記憶する。
【００７４】
ホストＩＦ２１６は、通信線１２１と通信ネットワーク１１１及び通信線１４１を介して、ホスト計算機１０３に接続される。ホストＩＦ２１６の有する複数の通信ポートのうちターゲット属性を有する通信ポートは、ホスト計算機１０３から発行された、アクセスコマンド（ライトコマンド又はリードコマンド）を受信する。ホストＩＦ２１６の有する複数の通信ポートのうちイニシエータ属性を有する通信ポートは、通信ネットワーク１１２等を介して第２ストレージ装置１０２の通信ポートに接続されており、第２ストレージ装置１０２にコマンドを発行する。なお、ホスト計算機１０３との間で通信するための通信ＩＦと、第２ストレージ装置１０２との間で通信するための通信ＩＦとをそれぞれ別々に構成してもよい。
【００７５】
管理ＩＦ２１７は、通信線１２３と、通信ネットワーク１１３及び通信線１５１を介して管理計算機１０４に接続される。管理ＩＦ２１７は、例えば、ＮＩＣ（Network Interface Card）のように構成される。
【００７６】
ディスクＩＦ２１８は、各ディスク２２２との間でデータを送受信する。ディスクＩＦ２１８は、通信路２２１を介して各ディスク２２２にそれぞれ接続される。
【００７７】
続いて、第１ストレージ装置１０１の基本的動作を簡単に説明する。ホスト計算機１０３からライトコマンドを受信した場合、コントローラ２１１は、ホスト計算機１０３から受信したライトデータをキャッシュメモリ２１４に記憶させる。
【００７８】
コントローラ２１１は、キャッシュメモリ２１４に記憶させたライトデータを、ディスクＩＦ２１８を介してディスク２２２に転送し、ディスク２２２に書き込む。なお、コントローラ２１１は、ライトデータをキャッシュメモリ２１４に記憶させた時点で、ライトコマンドの処理が完了した旨をホスト計算機１０３に通知することができる。或いは、コントローラ２１１は、ライトデータをディスク２２２に書き込んだ時点で、ライトコマンドの処理が完了した旨をホスト計算機１０３に通知してもよい。
【００７９】
ホスト計算機１０３からリードコマンドを受信した場合、コントローラ２１１は、そのリードコマンドの対象とするデータ（リード対象データ）がキャッシュメモリ２１４に記憶されているか否かを調べる。
【００８０】
リード対象データがキャッシュメモリ２１４に記憶されている場合、コントローラ２１１は、そのデータをキャッシュメモリ２１４から読み出し、ホストＩＦ２１６を介してホスト計算機１０３に送信する。これに対し、リード対象データがキャッシュメモリ２１４に記憶されていない場合、コントローラ２１１は、ディスクＩＦ２１８を介してディスク２２２からリード対象データを読み出し、そのデータをキャッシュメモリ２１４に記憶させる。コントローラ２１１は、キャッシュメモリ２１４に記憶させたリード対象データを、ホストＩＦ２１６を介してホスト計算機１０３に送信する。
【００８１】
以上は、通常のライト処理及びリード処理である。シン・プロビジョニングボリュームである仮想ボリュームへのライト処理及びリード処理では、ページの割当て、ページに対応するプールボリュームの特定、プールボリュームへのデータ読み書きの処理等が発生する。さらに、プールボリュームが第２ストレージ装置１０２内のボリューム（外部ボリューム）に対応する場合、外部ボリュームへのデータ読み書き処理が発生する。
【００８２】
図４は、管理計算機１０４のハードウェア構成を示す。管理計算機１０４は、一般的な計算機と同様のハードウェア構成を備える。例えば、管理計算機
１０４は、記憶資源と、通信インタフェース装置と、入力装置４１６と、出力装置４１７と、それらに接続されたＣＰＵ４１１とを有する。
【００８３】
通信インタフェース装置は、管理ＩＦ４１８である。記憶資源には、例えば、主メモリ４１２及びディスク４１４が含まれる。ＣＰＵ４１１、主メモリ４１２、ディスク４１４、ポインティング装置４１５、入力装置４１６、出力装置４１７及び管理ＩＦ４１８は、バス４１３を介して相互に接続される。
【００８４】
入力装置４１６は、管理計算機１０４に指示または情報を入力するための装置であり、例えば、キーボード及び／またはポインティングデバイス等を備える。音声または体の動作による入力装置４１６を備えてもよい。出力装置４１７は、管理計算機１０４から外部の管理者またはユーザに情報を出力するための装置であり、例えば、ディスプレイ及び／またはプリンタ等を備える。音声による出力装置４１７を備えてもよい。
【００８５】
ディスク４１４は、例えば、ＵＩ（User Interface）制御プログラム４２１と、管理用通信プログラム４２２、及び外部ストレージ管理テーブル３２２を記憶する。
【００８６】
主メモリ４１２に、ディスク４１４からＵＩ制御プログラム４２１及び管理用通信プログラム４２２がロードされる。ＣＰＵ４１１は、主メモリ４１２に記憶されたプログラムを実行することによって、ＵＩ制御処理及び管理用通信処理を実行する。
【００８７】
ＵＩ制御プログラム４２１は、後述のティア情報確認画面１６００等の画面を出力装置４１７に表示する。また、ＵＩ制御プログラム４２１は、入力装置４１６を介して管理者（管理者以外のユーザでも良い）から入力された情報を主メモリ４１２に記憶する。
【００８８】
管理用通信プログラム４２２は、通信ネットワーク１１３を介して第１ストレージ装置１０１と通信する。管理用通信プログラム４２２は、例えば、管理者から入力された情報を、必要に応じて第１ストレージ装置１０１に送信する。
【００８９】
外部ストレージ性能管理テーブル３２１は、外部ストレージのドライブタイプ毎に性能値を管理するためのテーブルである。このテーブル３２１の詳細は、後に図６を用いて説明する。外部ストレージ性能管理テーブル３２１は、例えば、管理者から入力された情報に基づいて作成することができる。または、管理計算機１０４が持っている情報から、外部ストレージ性能管理テーブル３２１を作成してもよい。
【００９０】
ホスト計算機１０３のハードウェア構成は、一般的な計算機と同じである。従って、図示を省略する。ホスト計算機１０３は、通信インタフェース装置と、記憶資源と、それらに接続されたＣＰＵとを有する。通信インタフェース装置には、例えば、通信ネットワーク１１１を介した通信を行うためのホストバスアダプタ（ＨＢＡ）と、通信ネットワーク１１３を介した通信を行うためのＮＩＣを含む。記憶資源としては、例えば、主メモリ、キャッシュメモリ、補助記憶装置が挙げられる。
【００９１】
図５は、仮想ボリュームとプール及びプールボリューム等の関係を模式的に示す説明図である。
【００９２】
仮想ボリューム５１１は、仮想的な論理ボリュームであり、プール５１２内の記憶領域を用いて作成される。仮想ボリューム５１１は、複数の仮想領域５１４で構成される。１つのプール５１２は、複数のティア５２１〜５２３で構成される。各ティアは、それぞれ複数のプールボリューム５３１を備える。各プールボリューム５３１は、それぞれ複数のページ５３５で構成されている。
【００９３】
図５の左側に示す例では、一つのホスト計算機１０３（１）に仮想ボリューム５１１（VVOL001）が接続されている。その仮想ボリューム５１１（VVOL001）に記憶領域を提供するプール５１２は、第１ティアから第３ティアまでの３つのティア５２１〜５２３で区切られている。
【００９４】
プール５１２は、性能の異なる記憶メディア（記憶装置）で構成されている。言い換えれば、プール５１２は、性能の異なる複数のティア５２１〜５２３を有する。ティアの番号が若いほど、高性能であるとする。第１ティア５２１は最も性能が高い記憶装置から構成される高性能ティアである。第２ティア５２２は、次に性能の高い記憶装置から構成される中性能ティアである。第３ティア５２３は、最も性能の低い記憶装置から構成される低性能ティアである。なお、３つのティアに限らず、２つのティア、または４つ以上のティアをプールに設けてもよい。
【００９５】
図５の右側に示す例では、ホスト計算機１０３（２）は、２つの仮想ボリューム５１１（VVOL002）及び５１１（VVOL003）を使用している。ホスト計算機１０３（２）は、それら仮想ボリューム５１１（VVOL002，VVOL003）の全領域にアクセスすることができる。それら仮想ボリューム５１１（VVOL002，VVOL003）は、一つのプール５１３内の記憶領域を用いて作成される。プール５１３は、例えば、種類の異なる複数のプールボリューム５３２を有する。プール５１３は、ティアで区切られていない。
【００９６】
仮想ボリューム５１１（VVOL001）に着目する。仮想ボリューム５１１（VVOL001）内の仮想領域５１４（仮想ページ）には、第１ティア５２１内のページ５３５（実ページ）が割り当てられている。仮想領域５１４内のデータは、実際には、仮想領域５１４に割り当てられている実ページ５３５に格納されている。実ページ５３５は、プールボリュームの一部である。従って、実ページ５３５のデータは、実際には、そのプールボリュームに物理的記憶領域を提供している一つ以上のディスク２２２に格納されている。仮想ページの論理アドレスとプール内の論理アドレスとの変換、プール内の論理アドレスとディスク２２２の物理アドレスとの変換は、コントローラ２１１が担当する。
【００９７】
図５では、第２ストレージ装置１０２の論理ボリューム５３１（Vol22）は、第１ストレージ装置１０１内の外部接続ボリューム５３１（EVol2）にマウントされている。一部の線を省略しているが、第２ストレージ装置１０２の論理ボリューム５３１（Vol21）は、第１ストレージ装置１０１内の外部接続ボリューム５３１（EVol1）にマウントされている。
【００９８】
第１ストレージ装置１０１は、第２ストレージ装置１０２の有するボリュームを外部接続ボリューム（EVol）に接続する。これにより、第１ストレージ装置１０１は、第２ストレージ装置１０２のボリュームを、それがあたかも第１ストレージ装置１０１の内部ボリュームであるかのようにして取り扱い、プールボリュームとして使用する。プールボリュームのうち外部ボリュームを利用するものを、本実施例では、外部プールボリュームと呼ぶことがある。
【００９９】
図５では、第１ストレージ装置１０１のコントローラ２１１は、第１ストレージ装置１０１がマウントしている外部ボリューム宛のライトデータを、第１ストレージ装置１０１の通信ポート５４１から通信ネットワーク１１２を経由して第２ストレージ装置１０２の通信ポート５４２に送信する。
【０１００】
そのライトデータは、第２ストレージ装置１０２のコントローラ５４３を経由して、第２ストレージ装置１０２の記憶装置（ディスク）に書き込まれる。第２ストレージ装置１０２のディスクは、第１ストレージ装置１０１のディスク２２２と同様に構成することができるので、図示を省略する。
【０１０１】
図５に示すように、第２ストレージ装置１０２の有する複数の外部ボリューム（Vol21，Vol22，Vol23）は、コントローラ５４３と、通信ポート５４２と、通信ネットワーク１１２とを共有している。従って、外部接続ボリューム（EVol）の性能を評価する場合は、その外部接続ボリュームに接続された外部ボリュームの性能だけでなく、外部接続ボリュームと外部ボリュームとを接続する通信経路の状態も考慮するのが好ましい。
【０１０２】
例えば、外部ボリュームが高性能の記憶装置から構成されている場合でも、コントローラ５４３の処理性能が低い場合は、コントローラ５４３がボトルネックとなるため、高性能な外部ボリュームとして扱うことはできない。また例えば、通信ポート５４２の負荷が大きい場合、または、通信ネットワーク１１２が混雑している場合、通信ポート５４２がボトルネックとなる。
【０１０３】
さらに、第１ストレージ装置１０１内の一方のプール５１２に関する構成が全く変化しない場合であっても、第１ストレージ装置１０１内の他方のプール５１３の構成が変化した場合は、その構成変化が一方のプール５１２に影響を与える可能性がある。
例えば、第２ストレージ装置１０２の外部ボリュームを第１ストレージ装置１０１内の他方のプール５１３に多数提供したような場合、コントローラ５４３または通信ポート５４２または通信ネットワーク１１２の負荷が増大する。従って、第１ストレージ装置１０１内の一方のプール５１２に関する性能が低下するおそれがある。
【０１０４】
図５を用いて、ページに記憶されたデータを他のティア内のページに移動させる処理を簡単に説明する。この処理は、ページマイグレーション処理と呼ばれる。
【０１０５】
例えば、第２ティア５２２内のページに記憶されたデータは、そのアクセス頻度が少ないという理由で、第３ティア５２３内の点線で示すページに移される。具体的には、移行元のページを有するプールボリューム（第２ティア内のプールボリューム）から、移行先のページを有するプールボリューム（第３ティア内のプールボリューム）に、データがコピーされる。
【０１０６】
以下、第１ストレージ装置１０１の不揮発性メモリ２１５に記憶されている各テーブルについて説明する。図６〜図１５は、テーブル構造を示す説明図である。
【０１０７】
図６には、外部ドライブの性能を管理するための外部ドライブ性能管理テーブル３２０が示されている。外部ドライブ性能管理テーブル３２０は、外部ストレージ情報取得プログラム３１１によって更新される。
【０１０８】
外部ドライブ性能管理テーブル３２０は、例えば、「外部ストレージＩＤ」列６１１と、「ドライブタイプ」列６１２と、「ドライブレスポンス［ｍｓ］」列６１３と、「ドライブＩＯＰＳ［ＩＯＰＳ］」列６１４とを対応付けて管理する。
【０１０９】
「外部ストレージＩＤ」列６１１には、第１ストレージ装置１０１に接続されている外部ストレージを識別するための情報が格納される。具体的には、第２ストレージ装置１０２の装置ＩＤが列６１１に設定される。
【０１１０】
「ドライブタイプ」列６１２には、外部ストレージの有する記憶装置の種類を示す情報が格納される。列６１２には、例えば、ＳＳＤ、ＳＡＳ−ＨＤＤ、ＳＡＴＡ−ＨＤＤ等の値が記憶される。
【０１１１】
「ドライブレスポンス［ｍｓ］」列６１３には、外部ストレージに搭載されている記憶装置一台あたりのレスポンス性能が格納される。レスポンス性能としては、例えば、記憶装置の低負荷Ｉ／Ｏ時のレスポンス性能でも良いし、または、記憶装置の平均レスポンス性能でもよい。
【０１１２】
「ドライブＩＯＰＳ［ＩＯＰＳ］」列６１４には、外部ストレージに搭載されている記憶装置一台あたりのスループットが格納される。列６１４には、例えば、その記憶装置が単位時間あたりに処理できる最大のＩ／Ｏ数が記憶される。例えば、図６の二行目６１５に示すように、外部ストレージＩＤ「ＥＸＴ０１」に搭載されているＳＳＤの、レスポンス性能は１ｍｓであり、スループット性能は８００ＩＯＰＳである。
【０１１３】
図７には、外部ストレージの性能を管理するための外部ストレージ性能管理テーブル３２１が示されている。外部ストレージ性能管理テーブル３２１は、外部ストレージ情報取得プログラム３１１によって更新される。
【０１１４】
外部ストレージ性能管理テーブル３２１は、例えば、「外部ストレージＩＤ」列７１１と、「コントローラ性能［ＩＯＰＳ］」列７１２と、「ポート性能［ＭＢ／Ｓｅｃ］」列７１３とを対応付けて管理する。本実施例では、外部ストレージ性能を管理するために、コントローラ性能及びポート性能等を管理しているが、これに限らず、外部ストレージのキャッシュメモリのサイズ等も管理してもよい。
【０１１５】
「外部ストレージＩＤ」列７１１には、第１ストレージ装置１０１に接続されている他のストレージ装置を識別するための情報が格納される。具体的には、列７１１には、第２ストレージ装置１０２の装置ＩＤが挙げられる。
【０１１６】
「コントローラ性能［ＩＯＰＳ］」列７１２には、例えば、外部ストレージのＣＰＵ性能が格納される。具体的には、列７１２には、第２ストレージ装置１０２のコントローラ５４３の最大性能が格納される。
【０１１７】
「ポート性能［ＭＢ／Ｓｅｃ］」列７１３には、外部ストレージのポート性能が格納される。例えば、第２ストレージ装置１０２の通信ポート５４２のスループット性能と、通信ネットワーク１１２内のスイッチ（図示せず）のスループット性能と、第１ストレージ装置１０１と接続している通信線１２１，１３１のスループット性能とのうち、最小値がポート性能列７１３に格納される。
【０１１８】
例えば、図７の二行目７１４には、外部ストレージＩＤ「ＥＸＴ０１」のコントローラ性能は２００００ＩＯＰＳであることと、ポート性能は８００ＭＢ／Ｓｅｃであることが示されている。
【０１１９】
図８には、外部ストレージを管理するための外部ストレージ管理テーブル３２２が示されている。外部ストレージ管理テーブル３２２は、外部ストレージ情報取得プログラム３１１によって更新される。
【０１２０】
外部ストレージ管理テーブル３２２は、例えば、「外部ストレージＩＤ」列８１１と、「接続ボリューム数」列８１２と、「パス数」列８１３とを対応付けて管理する。
【０１２１】
「外部ストレージＩＤ」列８１１には、第１ストレージ装置１０１に接続されているストレージ装置のＩＤが格納される。具体的には、例えば、第２ストレージ装置１０２の装置ＩＤが挙げられる。
【０１２２】
「接続ボリューム数」列８１２には、外部ストレージが、第１ストレージ装置１０１にマウントしているボリュームの数が格納される。即ち、列８１２には、第２ストレージ装置１０２から第１ストレージ装置１０１に提供されている論理ボリューム（外部ボリューム）の数が格納される。
【０１２３】
「パス数」列８１３には、外部ストレージが、第１ストレージ装置１０１と接続している通信パスの本数が格納される。
【０１２４】
例えば、図８の二行目８１４には、外部ストレージＩＤ「ＥＸＴ０１」が第１ストレージ装置１０１に提供しているボリュームの数は１０個であることと、通信パスの数は２本であることとが示されている。
【０１２５】
図９には、内部ドライブを管理するための内部ドライブ性能管理テーブル３２３が示されている。内部ドライブとは、第１ストレージ装置１０１の有する記憶装置２２２（ディスク２２２）である。
【０１２６】
内部ドライブ性能管理テーブル３２３は、例えば、「内部ドライブタイプ」列９１１と、「ドライブレスポンス［ｍｓ］」列９１２と、「ドライブＩＯＰＳ［ＩＯＰＳ］」列９１３とを対応付けて管理する。
【０１２７】
「内部ドライブタイプ」列９１１には、第１ストレージ装置１０１に搭載されている記憶装置２２２の種類が格納される。列９１１には、例えば、ＳＳＤ、ＳＡＳ−ＨＤＤ、ＳＡＴＡ−ＨＤＤ等が格納される。
【０１２８】
「ドライブレスポンス［ｍｓ］」列９１２には、第１ストレージ装置１０１に搭載されている記憶装置２２２の一台当たりのレスポンス性能が格納される。レスポンス性能としては、例えば、記憶装置２２２の低負荷Ｉ／Ｏ時のレスポンス性能でも良いし、記憶装置２２２の平均レスポンス性能でもよい。
【０１２９】
「ドライブＩＯＰＳ［ＩＯＰＳ］」列９１３には、第１ストレージ装置１０１に搭載されている記憶装置２２２の一台あたりのスループットが格納される。列９１３には、例えば、記憶装置２２２が単位時間に処理可能な最大のＩ／Ｏ数が格納される。
【０１３０】
例えば、図９の二行目９１４には、第１ストレージ装置１０１に搭載されているＳＳＤのレスポンス性能が１ｍｓであること、及び、そのスループット性能は１０００ＩＯＰＳであることが示されている。
【０１３１】
図１０には、プールボリュームの性能を管理するためのプールボリューム性能管理テーブル３２４が示されている。プールボリューム性能管理テーブル３２４は、ティア管理プログラム３１２によって更新される。
【０１３２】
プールボリューム性能管理テーブル３２４は、例えば、「プールボリューム  ＩＤ」列１０１１と、「属性」列１０１２と、「外部ストレージＩＤ」列１０１３と、「ドライブタイプ」列１０１４と、「ＲＡＩＤ  Ｌｅｖｅｌ」列１０１５と、「プールボリュームレスポンス」列１０１６と、「プールボリュームＩＯＰＳ」列１０１７とを対応付けて管理する。
【０１３３】
「プールボリューム  ＩＤ」列１０１１には、プールボリュームを識別するための情報（プールボリュームＩＤ）が格納される。
【０１３４】
「属性」列１０１２には、プールボリュームの属性を示す値が格納される。属性値には「外部」と「内部」がある。プールボリュームの属性が「内部」の場合は、そのプールボリュームが第１ストレージ装置１０１に搭載されているドライブ（記憶装置２２２）で構成された内部ボリュームであることを示す。これに対し、プールボリュームの属性が「外部」の場合は、外部ストレージに搭載されたドライブ（記憶装置）で構成された外部ボリュームであることを示す。
【０１３５】
「外部ストレージＩＤ」列１０１３には、第１ストレージ装置１０１に接続されているストレージ装置を識別するための情報が格納される。具体的には、列１０１３には、第２ストレージ装置１０２の装置ＩＤが格納される。
【０１３６】
「ドライブタイプ」列１０１４には、プールボリュームのドライブ（記憶装置）の種類が格納される。列１０１４には、例えば、ＳＳＤ、ＳＡＳ−ＨＤＤ、ＳＡＴＡ−ＨＤＤ等が格納される。
【０１３７】
「ＲＡＩＤ  Ｌｅｖｅｌ」列１０１５には、プールボリュームのＲＡＩＤレベルが格納される。列１０１５には、例えば、「３Ｄ＋１Ｐ（ＲＡＩＤ５）」、「６Ｄ＋２Ｐ（ＲＡＩＤ６）」等の値が格納される。
【０１３８】
「プールボリュームレスポンス」列１０１６には、プールボリュームのレスポンス性能が格納される。レスポンス性能としては、例えば、低負荷Ｉ／Ｏ時のレスポンス性能でも良いし、または、プールボリュームの平均レスポンス性能でもよい。
【０１３９】
「プールボリューム  ＩＯＰＳ」列１０１７には、プールボリュームのスループット性能が格納される。列１０１７には、例えば、プールボリュームが単位時間で処理できる最大のＩ／Ｏ数が格納される。
【０１４０】
例えば、図１０の六行目１０１８には、プールボリュームＩＤが「００５」のプールボリュームは、外部ストレージＩＤ「ＥＸＴ０２」のＳＡＳ−ＨＤＤで構成されていること、及び、ＲＡＩＤレベルは「３Ｄ＋１Ｐ」であること、及び、プールボリュームのレスポンス性能が５ｍｓであること、及び、プールボリュームのスループット性能が２４０ＩＯＰＳであることが示されている。
【０１４１】
図１１には、プールボリュームのグループを管理するためのプールボリュームグループ管理テーブル３２５が示されている。プールボリュームグループ管理テーブル３２５は、ティア管理プログラム３１２によって更新される。
【０１４２】
プールボリュームグループ管理テーブル３２５は、例えば、「プールＩＤ」列１１１１と、「プールボリュームＩＤ」列１１１２と、「外部ストレージＩＤ」列１１１３と、「プールボリュームグループ名」列１１１４と、「レスポンス［ｍｓ］」列１１１５と、「ＩＯＰＳ［ＩＯＰＳ］」列１１１６と、「外部コントローラ性能」列１１１７と「外部パス性能」列１１１８と、外部ティア  ＩＯＰＳ列１１１９とを対応付けて管理する。
【０１４３】
「プールＩＤ」列１１１１には、プールを識別する情報（ＩＤ）が格納される。「プールボリュームＩＤ」列１１１２には、ティア管理プログラム３１２によって分類されたプールボリュームの、ＩＤが格納される。
【０１４４】
「外部ストレージＩＤ」列１１１３には、第１ストレージ装置１０１に接続されている第２ストレージ装置１０２のＩＤが格納される。
【０１４５】
「プールボリュームグループ名」列１１１４には、ティア管理プログラム３１２によって分類されたプールボリュームグループの、名前が格納される。
【０１４６】
「レスポンス［ｍｓ］」列１１１５には、ティア管理プログラム３１２によって分類されたプールボリュームグループの、レスポンス性能が格納される。レスポンス性能は、例えば、プールボリュームグループの低負荷Ｉ／Ｏ時のレスポンス性能でも良いし、または、プールボリュームグループの平均レスポンス性能でもよい。
【０１４７】
「ＩＯＰＳ［ＩＯＰＳ］」列１１１６には、ティア管理プログラム３１２によって分類されたプールボリュームグループの、スループット性能が格納される。列１１１６には、プールボリュームグループが単位時間で処理できる最大のＩ／Ｏ数が格納される。
【０１４８】
「外部コントローラ性能」列１１１７には、外部ストレージのＣＰＵ性能（第２ストレージ装置１０２のコントローラ５４３の性能）が格納される。
【０１４９】
「外部パス性能」列１１１８には、外部ストレージのポート性能（第２ストレージ装置１０２の通信ポート５４２の性能）が格納される。
【０１５０】
「外部ティアＩＯＰＳ」列１１１９には、少なくとも一つの外部プールボリュームを含むプールボリューム群から構成されるティア（このティアを外部ティアと呼ぶ）のスループット性能が格納される。
【０１５１】
例えば、図１１の四行目１１２０には、プール（Ａ）は「プールボリューム（００５，００６，００７）」の集合で構成されていること、及び、そのプールボリュームグループ名は「外部ティア＿Ａ−１」であること、「外部ティア＿Ａ−１」のレスポンス性能は５ｍｓであること、及び、その外部ティアのスループット性能は７２０ＩＯＰＳであることが、示されている。
【０１５２】
図１２には、ティアの順序を管理するためのティア順序管理テーブル３２６が示されている。ティア順序管理テーブル３２６は、ティア順序算出プログラム３１３によって更新される。
【０１５３】
ティア順序管理テーブル３２６は、例えば、「プールＩＤ」列１２１１と、「ティア＃」列１２１２と、「プールボリュームグループ名」列１２１３と、「ティア順序判定基準」列１２１４とを対応付けて管理する。
【０１５４】
「プールＩＤ」列１２１１には、プールのＩＤが格納される。「ティア＃」列１２１２には、プール内におけるティアの順位が格納される。数字が小さいほど順位は高い。「プールボリュームグループ名」列１２１３には、分類されたプールボリュームグループの名前が格納される。即ち、列１２１３には、ティアに配属されたプールボリュームグループを識別するための情報として、プールボリュームグループ名が格納される。
【０１５５】
「ティア順序判定基準」列１２１４には、プールボリュームグループの順序を決定する基準となった性能指標の値を格納する。例えば、プールボリュームグループの順序をレスポンス性能に基づいて決定した場合は、列１２１４に、プールボリュームグループのレスポンス性能を記録する。プールボリュームグループの順序を容量当たりのスループットに基づいて決定した場合は、列１２１４に、プールボリュームグループの容量当たりのスループットを記録する。
【０１５６】
例えば、図１２の二行目１２１５には、プール（Ａ）の「ＳＳＤティア」という名のティアは第１順位であること、及び、そのティアのレスポンス性能は１ｍｓであることが、示されている。
【０１５７】
図１３には、性能ポテンシャルを管理するための性能ポテンシャル管理テーブル３２７が示されている。性能ポテンシャル管理テーブル３２７は、性能ポテンシャル算出プログラム３１４によって更新される。
【０１５８】
性能ポテンシャル管理テーブル３２７は、例えば、「プールＩＤ」列１３１１と、「ティア＃」列１３１２と、「プールボリュームグループ名」列１３１３と、「性能ポテンシャル」列１３１４とを対応付けて管理する。
【０１５９】
「プールＩＤ」列１３１１には、プールのＩＤが格納される。「ティア＃」列１３１２には、プールにおけるティアの順位が格納される。「プールボリュームグループ名」列１３１３には、ティア順序算出プログラム３１３によって分類されたプールボリュームグループの、名前が格納される。
【０１６０】
「性能ポテンシャル」列１３１４には、プールボリュームグループの性能ポテンシャルが格納される。性能ポテンシャルとは、そのプールボリュームグループが単位時間で処理できる最大性能（IOPS）である。
【０１６１】
例えば、図１３の二行目１３１５には、プール（Ａ）のＳＳＤティアの性能ポテンシャルは、ＸＸＸＩＯＰＳであることが示されている。
【０１６２】
図１４には、プールボリュームのレスポンスカーブの測定結果を管理するためのプールボリュームレスポンスカーブ管理テーブル３２８が示されている。プールボリュームレスポンスカーブ管理テーブル３２８は、外部ストレージ情報取得プログラム３１１によって更新される。
【０１６３】
プールボリュームレスポンスカーブ管理テーブル３２８は、例えば、「プールボリュームＩＤ」列１４１１と、「ＩＯＰＳ」列１４１２と、「レスポンスタイム」列１４１３とを対応付けて管理する。
【０１６４】
「プールボリュームＩＤ」列１４１１には、測定したプールボリュームのＩＤが格納される。「ＩＯＰＳ」列１４１２には、プールボリュームに対して発行されるテストＩ／Ｏの負荷が格納される。負荷とは、例えば、単位時間あたりのＩ／Ｏ数である。「レスポンスタイム」列１４１３には、プールボリュームにテストＩ／Ｏを発行した場合のレスポンス時間が格納される。
【０１６５】
例えば、図１４の二行目１４１４には、プールボリューム（００１）に、１ＩＯＰＳのテストＩ／Ｏを与えたときのレスポンス性能は１ｍｓであることが示されている。
【０１６６】
図１５には、ティアのレスポンスカーブを管理するためのティアレスポンスカーブ管理テーブル３２９が示されている。ティアレスポンスカーブ管理テーブル３２９は、ティア管理プログラム３１２によって更新される。
【０１６７】
ティアレスポンスカーブ管理テーブル３２９は、例えば、「プールＩＤ」列１５１１と、「ティア＃」列１５１２と、「プールボリュームグループ名」列１５１３と、「ＩＯＰＳ」列１５１４と、「レスポンスタイム［ｍｓ］」列１５１５とを対応付けて、管理している。
【０１６８】
「プールＩＤ」列１５１１には、プールのＩＤが格納される。「ティア＃」列１５１２には、ティアの順位が格納される。「プールボリュームグループ名」列１５１４には、分類されたプールボリュームグループの、名前が格納される。
【０１６９】
「ＩＯＰＳ」列１５１４には、ティアに与えられるＩ／Ｏ負荷の値が１秒あたりのＩ／Ｏ数として格納される。「レスポンスタイム［ｍｓ］」列１５１５には、Ｉ／Ｏ負荷に対するレスポンス時間が格納される。
【０１７０】
例えば、図１５の二行目１５１６には、プール（Ａ）の第１順位ティアであるＳＳＤティアに、１ＩＯＰＳの負荷を与えたときのレスポンス時間は１ｍｓであることが示されている。
【０１７１】
図１６は、管理計算機１０４で表示されるティア情報確認画面１６００を示す。ティア情報確認画面１６００は、ティアの情報を管理者等が確認するための画面であり、管理計算機１０４の出力装置４１７に表示される。
【０１７２】
ティア情報確認画面１６００は、例えば、プールＩＤ出力部１６１１、ティア情報出力部１６１２、及びボタン１６１３を含む。
【０１７３】
プールＩＤ出力部１６１１は、第１ストレージ装置１０１に設けられたプールのＩＤが表示される。
【０１７４】
ティア情報出力部１６１２には、第１ストレージ装置１０１のティア順序算出プログラム３１３により定義されたティアの、情報が出力される。ティア情報出力部１６１２には、例えば、ティア番号毎に、ストレージ種別と、ドライブ種別と、ティアの容量とが表示される。ストレージ種別には、「マスタストレージ」と「外部ストレージ」とがある。「マスタストレージ」とは、他のストレージ装置内の論理ボリュームを使用するストレージ装置であり、本実施例では第１ストレージ装置１０１が該当する。「外部ストレージ」とは論理ボリュームを提供するストレージ装置であり、本実施例では第２ストレージ装置１０２が該当する。「ドライブ種別」とは、ティアを構成するプールボリュームに物理的記憶領域を提供している記憶装置の種別である。
【０１７５】
ボタン１６１３は、画面を終了させるためのものである。管理者等は、プールのティア情報を確認した後、本画面の表示を終了させる場合にボタン１６１３を操作する。
【０１７６】
第１ストレージ装置１０１のＣＰＵ２１２は、ティア順序を決定した後に、プール毎のティア情報を管理計算機１０４に送信する。管理計算機１０４のＣＰＵ４１１は、管理用通信プログラム４２２を実行して、第１ストレージ装置１０１からプール毎のティア情報を受信する。管理計算機１０４は、ＵＩ制御プログラム４２１を実行し、ティア情報確認画面１６００を作成して、管理者等に提供する。
【０１７７】
以下、本実施例で行われる種々の処理を詳細に説明する。各フローチャートは、本実施例の理解及び実施に必要な範囲で、各処理の概要を示す。ステップの順序は、図示の順序に限らない。また、いわゆる当業者であれば、新たなステップを追加したり、一部のステップを変更または削除したりすることができる。なお、以下の説明ではステップを「Ｓ」と略記する。
【０１７８】
図１７は、本実施例の全体的な処理の流れを示すフローチャートである。本処理は、プールが作成されるタイミングで開始しても良いし、または、管理者による指示を契機に開始してもよい。
【０１７９】
本実施例では、外部ストレージの性能情報を取得する方法として、管理計算機１０４から取得する方法と、第１ストレージ装置１０１が測定して取得する方法との２種類の方法を説明する。これに限らず、第１ストレージ装置１０１が、外部ストレージの性能情報を予めテーブルに保持している構成でもよい。
【０１８０】
外部ストレージ情報取得プログラム３１１は、Ｓ１７１１、Ｓ１７１１−２、Ｓ１７１２、Ｓ１７１２−２、Ｓ１７１３、Ｓ１７１３−２、Ｓ１７１４を実行する。ティア管理プログラム３１２は、Ｓ１７１５、Ｓ１７１６、Ｓ１７１７を実行する。ティア順序算出プログラム３１３は、Ｓ１７１８を実行する。性能ポテンシャル算出プログラム３１４は、Ｓ１７１８−２、Ｓ１７１９、Ｓ１７２０を実行する。
【０１８１】
外部ストレージ情報取得プログラム３１１は、管理計算機１０４が存在を認識している外部ストレージ（第２ストレージ装置）毎に、１７１１−２、Ｓ１７１２、Ｓ１７１２−２、Ｓ１７１３、Ｓ１７１３−２、Ｓ１７１４をそれぞれ実行する。外部ストレージ情報取得プログラム３１１は、処理対象となる外部ストレージのＩＤを一つ決定する（Ｓ１７１１）。
【０１８２】
外部ストレージ情報取得プログラム３１１は、処理対象の外部ストレージについて、ドライブの性能情報を取得できるかを判断する（Ｓ１７１１−２）。ドライブの性能情報とは、外部ストレージの有する記憶装置（外部ドライブと呼ぶことができる）の性能を示す情報である。
【０１８３】
外部ドライブの性能情報を管理計算機１０４から取得できる場合（Ｓ１７１１−２：ＹＥＳ）、外部ストレージ情報取得プログラム３１１は、外部ドライブの性能情報を取得する処理（Ｓ１７１２）と、外部ストレージの性能情報を取得する処理（Ｓ１７１２−２）とを実行する。外部ドライブの性能情報を取得する処理の詳細は、図１８で後述する。外部ストレージの性能情報を取得する処理の詳細は、後に図１９と共に説明する。
【０１８４】
外部ドライブの性能情報を管理計算機１０４から取得できない場合（Ｓ１７１１−２：ＮＯ）、外部ストレージ情報取得プログラム３１１は、外部プールボリュームの性能を測定する処理（Ｓ１７１３）と、外部ストレージの性能を測定する処理（Ｓ１７１３−２）とを実行する。外部プールボリュームの性能を測定する処理の詳細は、後に図２０と共に説明する。外部ストレージの性能を測定する処理の詳細は、図２１で後述する。
【０１８５】
ステップＳ１７１１−２の判定結果がいずれの場合においても、外部ストレージ情報取得プログラム３１１は、必要な情報を手に入れた後で、外部ストレージの接続情報を取得する処理を実行する（Ｓ１７１４）。外部ストレージの接続情報を取得する処理の詳細は、後に図２２と共に説明する。
【０１８６】
未処理の外部ストレージが有る場合、外部ストレージ情報取得プログラム３１１は、Ｓ１７１１に戻って、上述のステップを繰り返す。管理計算機１０４で管理されている全ての外部ストレージについて処理を終了すると、Ｓ１７１５に移る。
【０１８７】
ティア管理プログラム３１２は、Ｓ１７１２及びＳ１７１２−２、または、Ｓ１７１３及びＳ１７１３−２の、いずれかで取得された性能値を用いて、プールボリュームの性能を算出する処理を実行する（Ｓ１７１５）。プールボリュームの性能を算出する処理の詳細は、後に、図２３と共に説明する。
【０１８８】
ティア管理プログラム３１２は、算出したプールボリューム毎の性能値を用いて、プールボリュームを分類する処理を実行する（Ｓ１７１６）。つまり、ティア管理プログラム３１２は、各ボリュームの性能値に応じて、各プールボリュームをグループ化する。プールボリュームをグループ化する処理の詳細は、後に、図２４と共に説明する。
【０１８９】
ティア管理プログラム３１２は、分類されたプールボリュームグループ毎に、プールボリュームの性能を算出する処理を実行する（Ｓ１７１７）。ティア管理プログラム３１２は、Ｓ１７１２及びＳ１７１２−２、または、Ｓ１７１３及びＳ１７１３−２のいずれかで取得されたボリューム毎の性能情報に基づいて、プールボリュームグループの性能を算出する（Ｓ１７１７）。この処理の詳細は、図２５で後述する。
【０１９０】
ティア順序算出プログラム３１３は、Ｓ１７１７で算出したプールボリューム毎の性能値を用いて、プールボリュームグループ毎に、ティア順序を算出する処理を実行する（Ｓ１７１８）。ティア順序算出プログラム３１３は、プールボリュームグループの性能ティア順序算出処理の詳細は、後に図２６と共に説明する。
【０１９１】
性能ポテンシャル算出プログラム３１４は、Ｓ１７１７で算出したプールボリュームグループの性能値を用いて、プールボリュームグループ毎の性能ポテンシャルを算出できるかを判定する（Ｓ１７１８−２）。
【０１９２】
性能ポテンシャルを算出できる場合（Ｓ１７１８−２：ＹＥＳ）、性能ポテンシャル算出プログラム３１４は、性能ポテンシャルを算出する処理を実施する（Ｓ１７１９）。性能ポテンシャルを算出する処理の詳細は、後に図２７と共に説明する。
【０１９３】
性能ポテンシャルを算出できない場合（Ｓ１７１８−２：ＮＯ）、性能ポテンシャル算出プログラム３１４は、Ｓ１７１３及びＳ１７１３−２で取得したレスポンスカーブを分析する処理を実施する（Ｓ１７２０）。レスポンスカーブ分析処理の詳細は後に図２８と共に説明する。
【０１９４】
なお、ティア順序及び性能ポテンシャルは、例えば、通信ネットワークの混み具合、プールボリュームの追加または削除等により、種々変動する可能性がある。この構成変更に対応するための処理については、図２９と共に説明する。
【０１９５】
さらに、仮想ボリューム５１１に割り当てられたページのデータは、ページ毎のＩ／Ｏ頻度に応じて、より適切なティア内のページに移される。ページマイグレーション処理の詳細は、図３０で後述する。
【０１９６】
図１８は、外部ドライブの性能情報を取得する処理（Ｓ１７１２）を示すフローチャートである。外部ストレージ情報取得プログラム３１１は、外部ドライブ毎に、後述のＳ１８１２、Ｓ１８１３、Ｓ１８１４、Ｓ１８１５、Ｓ１８１６、Ｓ１８２１を実行する（Ｓ１８１８）。具体的には、外部ストレージ情報取得プログラム３１１は、外部ドライブ性能管理テーブル３２０の外部ストレージＩＤ６１１に処理対象の外部ストレージのＩＤが格納された、エントリ列を追加する。
【０１９７】
外部ストレージ情報取得プログラム３１１は、管理計算機１０４に対して、処理対象の外部ストレージが有する各ドライブ（外部ドライブ）について、そのドライブの性能情報を要求する（Ｓ１８１２）。
【０１９８】
外部ストレージ情報取得プログラム３１１は、管理計算機１０４から取得した性能情報にドライブタイプが含まれているかを判定する（Ｓ１８１３）。外部ドライブのタイプが取得できた場合（Ｓ１８１３：ＹＥＳ）、外部ストレージ情報取得プログラム３１１は、Ｓ１８１１で追加したエントリ行のドライブタイプ６１２に、Ｓ１８１３で取得したドライブタイプを格納する（Ｓ１８１４）。
【０１９９】
外部ストレージ情報取得プログラム３１１は、管理計算機１０４から取得した性能情報にレスポンス時間が含まれている場合、そのレスポンス時間をドライブレスポンス６１３に格納する（Ｓ１８１５）。管理計算機１０４から取得した性能情報にレスポンスタイムが含まれていない場合、ドライブレスポンス６１３には、“Ｕｎｋｎｏｗｎ”が設定される。
【０２００】
外部ストレージ情報取得プログラム３１１は、管理計算機１０４から取得した性能情報に外部ドライブのスループット性能（ドライブＩＯＰＳ）が含まれている場合、そのスループット性能をスループット性能６１４に格納する（Ｓ１８１６）。管理計算機１０４から取得した性能情報に外部ドライブのスループット性能が含まれていない場合、スループット性能６１４には、“Ｕｎｋｎｏｗｎ”が設定される。
【０２０１】
一方、管理計算機１０４に要求した性能情報にドライブタイプが含まれていない場合（Ｓ１８１３：ＮＯ）、Ｓ１８１１で追加したエントリ行の全てのセルに“Ｕｎｋｎｏｗｎ”が格納される（Ｓ１８２１）。ドライブタイプは基本的な情報であるため、管理計算機１０４が外部ストレージからドライブタイプすら取得できない場合は、レスポンス時間及びスループット性能も取得できないと考えられる。従って、追加されたエントリ行の各セルに“Ｕｎｋｎｏｗｎ”を設定する。
【０２０２】
図１９は、外部ストレージの性能情報を取得する処理（Ｓ１７１２−２）を示すフローチャートである。
【０２０３】
外部ストレージ情報取得プログラム３１１は、外部ストレージ性能管理テーブル３２１に、処理対象の外部ストレージのＩＤが外部ストレージＩＤ７１１に格納されたエントリ行を追加する（Ｓ１９１１）。
【０２０４】
外部ストレージ情報取得プログラム３１１は、管理計算機１０４に対して、処理対象の外部ストレージの性能情報を要求する（Ｓ１９１２）。
【０２０５】
外部ストレージ情報取得プログラム３１１は、管理計算機１０４から性能情報を取得できたか判定する（Ｓ１９１３）。管理計算機１０４から外部ストレージの性能情報を取得できた場合（Ｓ１９１３：ＹＥＳ）、外部ストレージ情報取得プログラム３１１は、Ｓ１９１１で追加したエントリ行のコントローラ性能７１２に、取得したコントローラ性能の値を格納する（Ｓ１９１４）。同様に、外部ストレージ情報取得プログラム３１１は、Ｓ１９１１で追加したエントリ行のポート性能７１３に、取得したポート性能の値を格納する（Ｓ１９１５）。
【０２０６】
要求した性能情報を管理計算機１０４から取得できない場合（Ｓ１９１３：ＮＯ）外部ストレージ情報取得プログラム３１１は、前記追加したエントリ行の全てのセルに“Ｕｎｋｎｏｗｎ”を格納する（Ｓ１９２１）。
【０２０７】
図２０は、外部プールボリュームの性能を測定する処理（Ｓ１７１３）を示すフローチャートである。
【０２０８】
外部ストレージ情報取得プログラム３１１は、Ｓ１７１１で選択された処理対象の外部ストレージの有する外部プールボリュームのうちいずれか一つを、測定対象のボリュームとして選択する（Ｓ２０１１）。
【０２０９】
外部ストレージ情報取得プログラム３１１は、測定対象の外部プールボリュームのドライブ種別及びＲＡＩＤレベルをチェックする（Ｓ２０１２）。
【０２１０】
チェックの結果、外部ストレージ情報取得プログラム３１１は、同一ドライブ種別かつ同一ＲＡＩＤレベルの外部プールボリュームについての性能測定結果が既に記憶されているか否かを判定する（Ｓ２０１３）。同種の外部プールボリュームについては、重複した性能測定を行わないようにするべく、Ｓ２０１３の判定ステップを設けている。
【０２１１】
同一ドライブ種別及び同一ＲＡＩＤレベルの外部プールボリュームについての測定結果が存在しない場合（Ｓ２０１３：ＮＯ）、外部ストレージ情報取得プログラム３１１は、測定対象の外部プールボリュームにテストＩ／Ｏを発行することで性能を測定可能かどうか判定する（Ｓ２０１４）。
【０２１２】
例えば、測定対象のプールボリューム内に記憶されたデータについて、ホスト計算機１０３からのコマンドを処理している場合、外部ストレージ情報取得プログラム３１１は、性能測定はできないと判定できる。ホスト計算機１０３により使用されている外部プールボリュームについて性能を測定すると、ホスト計算機１０３で実行中の業務処理に影響が及ぶ可能性があるためである。さらに、外部プールボリュームに障害が発生している場合、または、外部プールボリュームについて障害回復処理が実行されている場合のいずれの場合も、外部ストレージ情報取得プログラム３１１は、性能を測定できないと判定できる。
【０２１３】
外部プールボリュームの性能を測定できると判定された場合（Ｓ２０１４：ＹＥＳ）、外部ストレージ情報取得プログラム３１１は、測定対象の外部プールボリュームの性能を測定する（Ｓ２０１５）。
【０２１４】
例えば、外部ストレージ情報取得プログラム３１１は、測定対象の外部プールボリュームに対して、負荷（ＩＯＰＳ）のレベルを変えながらランダムＩ／Ｏを発行し、そのランダムＩ／Ｏに対するレスポンス時間を負荷レベル毎に計測する。これにより、負荷（ＩＯＰＳ）とレスポンス時間との関係を示す特性である、レスポンスカーブを取得することができる（Ｓ２０１５）。
【０２１５】
外部ストレージ情報取得プログラム３１１は、計測結果を、プールボリュームレスポンスカーブ管理テーブル３２８に記録する。（Ｓ２０１６）。
【０２１６】
一方、同一ドライブ種別かつ同一ＲＡＩＤレベルの外部プールボリュームについての性能測定結果が既に存在する場合（Ｓ２０１３：ＹＥＳ）、外部ストレージ情報取得プログラム３１１は、既存の性能測定結果を、プールレスポンスカーブ管理テーブル３２８に記録する（Ｓ２０１７）。既存の測定結果と、測定対象の外部プールボリュームから得られるであろう測定結果とを同一であるとみなすことができるためである。
【０２１７】
このように、既存の測定結果をできるだけ利用することで、無駄な性能測定を行わずに済む。従って、第１ストレージ装置１０１は、必要最低限のテストＩ／Ｏを第２ストレージ装置１０２内の外部プールボリュームに向けて発行するだけでよく、通信ネットワーク１１２の混在を抑制でき、コントローラ２１１及びコントローラ５４３の処理負荷が増大するのを防止することができる。
【０２１８】
なお、重複した性能測定を防止するためのＳ２０１３を図２０のフローチャートから取り除いてもよい。つまり、全ての外部プールボリュームに対してテストＩ／Ｏを発行する構成としてもよい。
【０２１９】
外部プールボリュームの性能を測定または取得すると、外部ストレージ情報取得プログラム３１１は、性能を未だ測定していない外部プールボリュームが存在するか判定する（Ｓ２０１８）。未測定の外部プールボリュームが有る場合（Ｓ２０１８：ＹＥＳ）、Ｓ２０１１に移り、上述のステップを繰り返す。なお、測定対象の外部プールボリュームについて性能を測定できない場合（Ｓ２０１４：ＮＯ）、外部ストレージ情報取得プログラム３１１は、Ｓ２０１８に移る。
【０２２０】
図２１は、外部ストレージの性能を測定する処理（Ｓ１７１３−２）を示すフローチャートである。
【０２２１】
外部ストレージ情報取得プログラム３１１は、Ｓ１７１１で選択した処理対象の外部ストレージに含まれるプールボリュームのうち、性能測定が可能な全てのプールボリュームに対して一斉にランダムＩ／Ｏを発行させる（Ｓ２１１１）。外部ストレージ情報取得プログラム３１１は、測定対象の各外部プールボリュームの限界性能が検出されるまで、ランダムＩ／Ｏの負荷を高めていく（Ｓ２１１１）。外部ストレージ情報取得プログラム３１１は、検出された限界性能を「測定結果Ｒ１」として保持する（Ｓ２１１１）。
【０２２２】
限界性能とは、コマンドに対するレスポンスが急激に悪化するときの負荷（ＩＯＰＳ））である。処理できないほどの多量のコマンドが発行されると、未処理のキューが溜まって、応答時間が通常時よりも大幅に長くなる。
【０２２３】
次に、外部ストレージ情報取得プログラム３１１は、Ｓ２１１１での測定対象である各外部プールボリュームのそれぞれについて、限界性能を特定できるまで個別にランダムＩ／Ｏを発行する（Ｓ２１１２）。なお、Ｓ２１１１での測定対象である各外部プールボリュームの限界性能は、Ｓ２０１５で測定した各プールボリュームの性能結果を用いてもよい。外部ストレージ情報取得プログラム３１１は、各外部プールボリュームの限界性能を合算し、合算した値を「全ドライブ性能（Ｒ２）」として保持する（Ｓ２１１２）。
【０２２４】
外部ストレージ情報取得プログラム３１１は、Ｓ２１１１で求めた測定結果（Ｒ１）とＳ２１１２で求めた全ドライブ性能（Ｒ２）とを比較し、測定結果（Ｒ１）の方が全ドライブ性能（Ｒ２）よりも小さいかを判定する（Ｓ２１１３）。
【０２２５】
測定結果（Ｒ１）の方が小さい場合（Ｓ２１１３：ＹＥＳ）、「測定結果（Ｒ１）」をコントローラの限界性能として、外部ストレージ性能管理テーブル３２１のコントローラ性能７１２に記録する（Ｓ２１１９）。
【０２２６】
各外部プールボリュームが限界性能に至るまで各外部プールボリュームに一斉にランダムＩ／Ｏを発行した場合のレスポンス性能は、外部プールボリュームの数によっても相違するが、外部ストレージ装置１０２のコントローラ５４３の性能に影響される。一斉に発行されるランダムＩ／Ｏは、コントローラ５４３を経由して各外部プールボリュームに与えられるためである。これに対し、外部プールボリューム毎に、その限界性能までランダムＩ／Ｏを発行する場合は、コントローラ５４３の影響は少ない。コントローラ５４３を経由するランダムＩ／Ｏの負荷が少ないためである。
【０２２７】
理解のための簡単な例を挙げると、例えば、測定対象の外部プールボリュームが１０個あり、１０個の外部プールボリュームに対して、限界性能に至るまでランダムＩ／Ｏを発行した場合の測定結果（Ｒ１）が８００ＩＯＰＳであったとする。これに対し、各外部プールボリュームの限界性能が１００ＩＯＰＳである場合、全ドライブ性能（Ｒ２）は、１０００ＩＯＰＳ（＝１００×１０）となる。
【０２２８】
この場合、測定結果Ｒ１（＝８００ＩＯＰＳ）の方が全ドライブ性能Ｒ２（＝１０００ＩＯＰＳ）よりも少ない。つまり、外部ストレージのコントローラ５４３がボトルネックとなっていることを示す。そこで、外部ストレージのコントローラ５４３の限界性能として、測定結果（Ｒ１）を採用する。
【０２２９】
これに対し、測定結果（Ｒ１）の方が全ドライブ性能（Ｒ２）よりも大きい場合（Ｓ２１１３：ＮＯ）、外部ストレージ情報取得プログラム３１１は、外部ストレージからコントローラ稼働率を取得する（Ｓ２１１４）。コントローラ稼働率とは、外部ストレージのコントローラ５４３が稼働している割合を示す情報である。
【０２３０】
外部ストレージからコントローラ稼働率を取得できたか判定される（Ｓ２１１５）。コントローラ稼働率を取得できない場合（Ｓ２１１５：ＮＯ）、外部ストレージ情報取得プログラム３１１は、全ドライブ性能（Ｒ２）をコントローラの限界性能として、外部ストレージ性能管理テーブル３２１のコントローラ性能７１２に記録することができる（Ｓ２１１８）。
【０２３１】
コントローラ稼働率を取得できた場合（Ｓ２１１５：ＹＥＳ）、外部ストレージ情報取得プログラム３１１は、全ドライブ性能（Ｒ２）をコントローラ稼働率で割って、算出結果Ｒ３を得る（Ｓ２１１６）。外部ストレージ情報取得プログラム３１１は、算出結果Ｒ３（＝Ｒ２／コントローラ稼働率）を、外部ストレージのコントローラ５４３の限界性能として、外部ストレージ性能管理テーブル３２１のコントローラ性能７１２に記録することができる（Ｓ２１１７）。
【０２３２】
測定結果（Ｒ１）の方が全ドライブ性能（Ｒ２）よりも大きい場合は、外部ストレージのコントローラ５４３の処理能力に余裕があることを示す。より正確にコントローラ５４３の限界性能を算出すべく、コントローラ５４３の稼働率を取得して、全ドライブ性能（Ｒ２）をコントローラ稼働率で除算する。
【０２３３】
なお、外部ストレージ情報取得プログラム３１１は、コントローラ稼働率を取得する際に、外部ストレージ性能管理テーブル３２１のパス性能７１３に関する情報を外部ストレージから取得できた場合は、その情報を列７１３に格納することができる。パス性能に関する情報（ポート性能に関する情報）を取得できなかった場合は、列７１３に、“Ｕｎｋｎｏｗｎ”を格納することもできる。
【０２３４】
図２２は、外部ストレージの接続情報を取得する処理（Ｓ１７１４）を示すフローチャートである。
【０２３５】
外部ストレージ情報取得プログラム３１１は、外部ストレージ管理テーブル３２２に１行追加し、その行の外部ストレージＩＤ８１１に処理対象の外部ストレージのＩＤを格納させる（Ｓ２２１１）。
【０２３６】
外部ストレージ情報取得プログラム３１１は、処理対象の外部ストレージから提供されている外部プールボリュームの数をカウントする（Ｓ２２１２）。即ち、外部ストレージである第２ストレージ装置１０２内の論理ボリュームのうち、第１ストレージ装置１０１内の外部接続ボリュームに接続されているボリューム（外部プールボリューム）の数を検出する。
【０２３７】
外部ストレージ情報取得プログラム３１１は、外部プールボリュームのカウントが成功したか判定する（Ｓ２２１３）。カウント成功の場合（Ｓ２２１３：ＹＥＳ）、外部ストレージ情報取得プログラム３１１は、カウント値を、Ｓ２２１１で追加した行の接続ボリューム数８１２に格納する（Ｓ２２１４）。カウント失敗の場合（Ｓ２２１３：ＮＯ）、接続ボリューム数８１２には“Ｕｎｋｎｏｗｎ”が格納される（Ｓ２２１５）。
【０２３８】
外部ストレージ情報取得プログラム３１１は、処理対象の外部ストレージ（第２ストレージ装置１０２）と第１ストレージ装置１０１とを接続する通信パス数をカウントする（Ｓ２２１６）。
【０２３９】
通信パス数のカウントが成功した場合（Ｓ２２１７：ＹＥＳ）、外部ストレージ情報取得プログラム３１１は、その通信パス数を外部ストレージ管理テーブル３２２の、Ｓ２２１１で追加した行のパス数８１３に格納する（Ｓ２２１８）。通信パス数のカウントに失敗した場合（Ｓ２２１７：ＮＯ）、パス数８１３には“Ｕｎｋｎｏｗｎ”が格納される（Ｓ２２１９）。
【０２４０】
図２３は、プールボリュームの性能を算出する処理（Ｓ１７１５）を示すフローチャートである。
【０２４１】
ティア管理プログラム３１２は、全てのプールボリュームについて、プールボリュームＩＤを取得し、プールボリューム毎に所定の情報を取得する（Ｓ２３１１）。所定の情報としては、例えば、ボリューム属性（内部ボリュームか外部ボリュームか）、所属するストレージのＩＤ、ドライブタイプ、ＲＡＩＤレベルがある。ティア管理プログラム３１２は、取得した所定の情報を、プールボリューム性能管理テーブル３２４に追加される行に格納させる（Ｓ２３１２）。
【０２４２】
ティア管理プログラム３１２は、プールボリューム性能管理テーブル３２４と外部ドライブ性能管理テーブル３２０のいずれにも含まれる外部ストレージＩＤが存在するかを判定する（Ｓ２３１３）。つまり、管理計算機１０４が外部ストレージから外部ドライブに関する情報を取得できているか否かを判定する。
【０２４３】
各テーブル３２４，３２０に共通する外部ストレージＩＤが有る場合（Ｓ２３１３：ＹＥＳ）、ティア管理プログラム３１２は、外部ドライブ性能管理テーブル３２０の情報を使用してプールボリューム毎のドライブ性能を算出し、プールボリューム性能管理テーブル３２４に格納する（Ｓ２３１４）。
【０２４４】
例えば、ティア管理プログラム３１２は、外部ドライブ性能管理テーブル３２０のドライブレスポンス６１３の値を、外部ストレージＩＤ（６１１、１０１３）及びドライブタイプ（６１２、１０１４）がそれぞれ一致する行の、プールボリュームレスポンス１０１６に格納する（Ｓ２３１４）。
【０２４５】
さらに、ティア管理プログラム３１２は、外部ドライブ性能管理テーブル３２０のドライブＩＯＰＳ６１４の値に、外部ストレージＩＤ（６１１、１０１３）及びドライブタイプ（６１２、１０１４）が一致する行の、ＲＡＩＤレベル１０１５に示されるデータディスクの数を乗じる。例えば、ＲＡＩＤレベルが「３Ｄ＋１Ｐ」の場合、データディスクの数は３である。データディスク数にドライブＩＯＰＳを乗じた値は、プールボリュームのスループット性能を示す。従って、ティア管理プログラム３１２は、算出された値をプールボリュームのスループットとして、プールボリュームＩＯＰＳ１０１７に格納させる（Ｓ２３１４）。
【０２４６】
なお、Ｓ２３１４で述べたボリューム性能（レスポンス及びスループット）の算出方法は、一例であり、上記方法に限らない。
【０２４７】
各テーブル３２４，３２０に共通する外部ストレージＩＤが無い場合（Ｓ２３１３：ＮＯ）、ティア管理プログラム３１２は、プールボリュームレスポンスカーブ管理テーブル３２８に基づいて、プールボリューム毎のドライブ性能を算出する（Ｓ２３１５）。
【０２４８】
例えば、ティア管理プログラム３１２は、プールボリュームレスポンスカーブ管理テーブル３２８において、同一プールボリュームＩＤのレスポンスタイムのうち、最も小さいレスポンスタイムをそのプールボリュームのレスポンスタイムとして選択する。ティア管理プログラム３１２は、その選択されたレスポンスタイムを、プールボリュームＩＤ（１４１１、１０１１）が一致する行のプールボリュームレスポンス１０１６に格納させる（Ｓ２３１５）。また、ティア管理プログラム３１２は、プールボリュームレスポンスカーブ管理テーブル３２８において、同一プールボリュームＩＤのレスポンスタイムのうち、例えば、ある一定のレスポンス時間を超えた値のスループット値をそのプールボリュームのスループットとして、その値をプールボリュームＩＯＰＳ１０１７に格納させる（Ｓ２３１５）。
【０２４９】
なお、プールボリュームのレスポンス性能を測定できない場合、または算出できない場合には、プールボリュームＩＯＰＳ１０１７に“Ｕｎｋｎｏｕｗｎ”を格納することができる。
【０２５０】
さらに、内部プールボリュームのドライブ性能についても、外部ドライブ性能管理テーブル３２０の代わりに内部ドライブ性能管理テーブル３２３を用いることで、Ｓ２３１４で述べたと同様の方法で求めることができる。
【０２５１】
図２４は、プールボリュームをグループ化する処理（Ｓ１７１６）を示すフローチャートである。
【０２５２】
ティア管理プログラム３１２は、プールボリューム性能管理テーブル３２４のプールボリュームレスポンス１０１６の値が“Ｕｎｋｎｏｗｎ”であるプールボリュームが有るかを判定する（Ｓ２４１１）。
【０２５３】
プールボリュームレスポンス１０１６の値に“Ｕｎｋｎｏｗｎ”が格納されているプールボリュームが一つも存在しない場合（Ｓ２４１１：ＮＯ）、ティア管理プログラム３１２は、プールボリュームレスポンス１０１６の値に基づいて、各プールボリュームを比較する（Ｓ２４１２）。
【０２５４】
プールボリュームレスポンス１０１６の値に一つでも“Ｕｎｋｎｏｗｎ”が有る場合（Ｓ２４１１：ＹＥＳ）、容量あたりのＩＯＰＳに基づいて各プールボリュームを比較することができる（Ｓ２４１３）。即ち、プールボリュームＩＯＰＳ１０１７をプールボリュームの容量で割り、容量当たりのＩＯＰＳを算出し、その容量当たりのＩＯＰＳの大小を各プールボリューム間で比較する。
【０２５５】
なお、本実施例では、プールボリュームレスポンス１０１６が“Ｕｎｋｎｏｗｎ”の場合でも、プールボリュームＩＯＰＳ１０１７の値は入力されるようになっている。
【０２５６】
ティア管理プログラム３１２は、Ｓ２４１２またはＳ２４１３での結果に基づいて、プールボリュームを分類する（Ｓ２４１４）。本実施例において分類とは、特定の観点に基づいて、同種のプールボリュームをグループ化することである。分類方法としては、以下の方法がある。以下の分類方法は一例であって、それらに限定されない。
【０２５７】
（１）第１分類方法
第１分類方法は、内部プールボリュームを基準とする方法である。第１分類方法では、プールボリュームを性能順に並べ、内部プールボリュームのレスポンス性能を基準値として、基準値よりもレスポンス性能が高い外部プールボリューム同士、基準値よりもレスポンス性能の低い外部プールボリューム同士で、それぞれグループ化する。
【０２５８】
（２）第２分類方法
第２分類方法は、容量を基準とする方法である。第２分類方法では、各プールボリュームグループの容量がほぼ同一となるように、レスポンス性能の似たプールボリュームを集めてグループを形成する。
【０２５９】
（３）第３分類方法
第３分類方法は、プールボリュームの由来に着目して分類する方法である。第３分類方法では、所属するストレージ装置のＩＤ及びドライブタイプが共通するプールボリューム同士をグループ化する。
【０２６０】
ティア管理プログラム３１２は、Ｓ２４１４で分類した結果を、プールボリュームグループ管理テーブル３２５に記録する。作成されたプールボリュームグループをプールボリュームグループ管理テーブル３２５に記録する時点で、そのプールボリュームグループの名称をテーブル３２５の列１１１４に保存可能となる構成としてもよい。
【０２６１】
なお、第１ストレージ装置１０１が各プールボリュームを自動的に分類する場合を述べたが、これに代えて、管理者から指示される分類情報に基づいて第１ストレージ装置１０１がプールボリュームを分類する構成でもよい。
【０２６２】
図２５は、プールボリュームグループ毎の性能を算出する処理（Ｓ１７１７）を示すフローチャートである。
【０２６３】
ティア管理プログラム３１２は、プールボリューム性能管理テーブル３２４の性能情報と、プールボリュームグループ管理テーブル３２５の情報とを基にして、プールボリュームグループ毎のドライブ性能を算出する（Ｓ２５１１）。
【０２６４】
ティア管理プログラム３１２は、算出されたプールボリュームグループ毎のドライブ性能を、プールボリュームグループ管理テーブル３２５に記憶させる（Ｓ２５１２）。
【０２６５】
例えば、ティア管理プログラム３１２は、プールボリュームグループ毎に、プールボリューム性能管理テーブル３２４のプールボリュームレスポンス１０１６の値の平均を算出して、その平均値をプールボリュームグループ管理テーブル３２５のレスポンス１１１５に格納させることができる（Ｓ２５１２）。なお、プールボリュームグループのレスポンス性能は、同一プールボリュームグループに属するプールボリュームレスポンス１０１６の値の平均値の他に、例えば、最低値としてもよい。
【０２６６】
さらに、ティア管理プログラム３１２は、プールボリュームグループ毎に、プールボリューム性能管理テーブル３２４のプールボリュームＩＯＰＳ１０１７を合算し、その合計値をプールボリュームグループ管理テーブル３２５のＩＯＰＳ１１１６に格納させることができる（Ｓ２５１２）。
【０２６７】
なお、プールボリューム性能管理テーブル３２４に“Ｕｎｋｎｏｗｎ”が格納されているため、プールボリュームグループの性能を算出できない場合は、レスポンス１１１５及びＩＯＰＳ１１１６に“Ｕｎｋｎｏｗｎ”を設定することができる。
【０２６８】
ティア管理プログラム３１２は、外部プールボリュームを含むプールボリュームグループについては、外部ストレージ性能管理テーブル３２１の性能情報と、外部ストレージ管理テーブル３２２の性能情報とを基にして、外部ストレージのコントローラ性能とパス性能とを算出する（Ｓ２５１３）。
【０２６９】
ティア管理プログラム３１２は、例えば、外部ストレージ性能管理テーブル３２１のコントローラ性能７１２の値に、プールボリュームグループに属するボリューム数を外部ストレージ管理テーブル３２２の接続ボリューム数８１２で割った値を乗じて、コントローラ性能を求めることができる（コントローラ性能＝外部ストレージのコントローラ性能×（プールボリュームグループに属するボリューム数）／接続ボリューム数））。
【０２７０】
ティア管理プログラム３１２は、算出された、外部ストレージのコントローラ性能１１１７及びパス性能１１１８を、プールボリュームグループ管理テーブル３２５に記憶させる（Ｓ２５１４）。一部の情報が“Ｕｎｋｎｏｗｎ”であるために算出ができない場合、レスポンス１１１５またはＩＯＰＳ１１１６には“Ｕｎｋｎｏｗｎ”を格納してもよい（Ｓ２５１４）。
【０２７１】
プールボリュームグループ管理テーブル３２５のうち、ドライブスループット性能１１１６と、外部ストレージのコントローラ性能１１１７と、外部ストレージのパス性能１１１８のうち、最も値が小さいものがボトルネックとなると想定できる。そこで、ティア管理プログラム３１２は、それら１１１６，１１１７，１１１８のうち最も小さい値を算出する（Ｓ２５１５）。ティア管理プログラム３１２は、その最小値を、プールボリュームグループ管理テーブル３２５の、外部ティアのスループット１１１９に記録させる（Ｓ２５１６）。
【０２７２】
図２６は、ティア順序の算出処理（Ｓ１７１８）を示すフローチャートである。ティア順序算出プログラム３１３は、プールボリュームグループ管理テーブル３２５のレスポンス１１１５の値が“Ｕｎｋｎｏｗｎ”であるプールボリュームグループが一つでも有るかを判定する（Ｓ２６１１）。
【０２７３】
レスポンス１１１５の値が“Ｕｎｋｎｏｗｎ”であるプールボリュームグループが一つも無い場合（Ｓ２６１１：ＮＯ）、ティア順序算出プログラム３１３は、レスポンス１１１５の値に基づいて、各プールボリュームグループのレスポンス性能を比較する（Ｓ２６１２）。
【０２７４】
レスポンス１１１５の値が“Ｕｎｋｎｏｗｎ”であるプールボリュームグループが有る場合（Ｓ２６１１：ＹＥＳ）、ティア順序算出プログラム３１３は、ティアの容量あたりのＩＯＰＳに基づいて、プールボリュームグループを比較する（Ｓ２６１３）。
【０２７５】
例えば、ティア順序算出プログラム３１３は、プールボリュームグループ管理テーブル３２５の外部ティア性能１１１９をそのティアの記憶容量で割り、ティアの容量当たりのＩＯＰＳを算出する。なお、本実施例では、レスポンス１１１５が“Ｕｎｋｎｏｗｎ”であっても、外部ティア性能１１１９に値が入力されるようになっている。
【０２７６】
ティア順序算出プログラム３１３は、Ｓ２６１２またはＳ２６１３での比較結果に基づいて、ティアの順序を決定する（Ｓ２６１４）。例えば、各プールボリュームグループを性能の高い順番に並び替えて、各プールボリュームグループの属するティアの順序を決定することができる。
【０２７７】
ティア順序算出プログラム３１３は、Ｓ２６１４で決定されたティア順序と、その順序付けの判定基準となった性能データとを、ティア順序管理テーブル３２６に記録する（Ｓ２６１５）。
【０２７８】
図２７は、性能ポテンシャルを算出するための処理（Ｓ１７１９）を示すフローチャートである。
【０２７９】
性能ポテンシャル算出プログラム３１４は、性能ポテンシャルの算出対象であるティアの属性が「外部ボリューム」であるか否かを判定する（Ｓ２７１１）。対象ティアの属性が外部ボリュームでは無い場合（Ｓ２７１１：ＮＯ）、性能ポテンシャル算出プログラム３１４は、プールボリュームグループ管理テーブル３２５のＩＯＰＳ１１１６の値を、性能ポテンシャル管理テーブル３２７の性能ポテンシャル１３１４に記録させる（Ｓ２７１２）。
【０２８０】
一方、対象ティアの属性が「外部ボリューム」の場合（Ｓ２７１１：ＹＥＳ）、性能ポテンシャル算出プログラム３１４は、プールボリュームグループ管理テーブル３２５の外部ティア性能１１１９の値を、性能ポテンシャル管理テーブル３２７の性能ポテンシャル１３１４に記録させる（Ｓ２７１３）。
【０２８１】
図２８は、レスポンスカーブに基づいて各ティアの性能ポテンシャルを求める方法を模式的に示す。図２８は、図１７に示すレスポンスカーブ分析処理（Ｓ１７２０）の内容を説明する。
【０２８２】
特性図２８１１、２８２１、２８３１は、プールボリュームグループ毎のレスポンスカーブを示す。それら特性図は、プールボリュームレスポンスカーブ管理テーブル３２８で示される値を、プールボリュームグループ毎に、縦軸にレスポンスタイム１４１３を取り、横軸にＩＯＰＳ１４１２を取って、グラフ化したものである。
【０２８３】
ここでは、特性図２８１１中の第１曲線２８１２と縦軸の交点の値をＸ、特性図２８２１中の第２曲線２８２２と縦軸の交点の値をＹ、特性図２８３１中の第３曲線２８３２と縦軸の交点の値をＺとする。Ｘ＜Ｙ＜Ｚであるものとする。
【０２８４】
レスポンスカーブ分析処理において、性能ポテンシャル算出プログラム３１４は、例えば以下のように算出する。
【０２８５】
（１）まず、第１曲線２８１２のレスポンス時間がＹである点と、第２曲線２８２２のレスポンス時間がＹである点を結合して、第１交点２８４２を得る。次に、第２曲線２８２２のレスポンス時間がＺである点と、第３曲線２８３２のレスポンス時間がＺである点を結合して、第２交点２８４３を得る。第１交点２８４２で第１曲線２８１２と第２曲線２８２２とを接続し、第２交点２８４３で第２曲線２８２２と第３曲線２８３２とを接続して、曲線２８４４を得る。
【０２８６】
（２）第１交点２８４２が示すＩＯＰＳの値をＡ、第２交点２８４３が示すＩＯＰＳの値をＢ、曲線２８４４のＩＯＰＳの最大値をＣとする。特性図２８１１が示すティアＡの性能ポテンシャルは、「Ａ」である。特性図２８２１が示すティアＢの性能ポテンシャルは、「Ｂ−Ａ」として算出される。特性図２８３１が示すティアＣの性能ポテンシャルは、「Ｃ−Ｂ」として算出される。
【０２８７】
各ティアには、その性能ポテンシャルまで、ページを配置することができる。換言すれば、ティアに属する各ページのＩＯＰＳの合計値は、そのティアの性能ポテンシャルを超えないように、ティアに割り当てられるページが制御される。
【０２８８】
図２９は、構成変更処理を示すフローチャートである。ティア構成変更プログラム３１５は、図１７で示した処理が実行された後で、所定の契機が到来したかを監視し、所定契機が到来した場合は、各ティアの性能ポテンシャルを再度算出する。
【０２８９】
所定の契機としては、一定時間が経過した場合（Ｓ２９１１）、プールボリュームが追加または削除された場合（Ｓ２９１２）、外部ストレージ装置１０２から第１ストレージ装置１０１に提供されるボリュームの数が変化した場合（Ｓ２９１３）を例示することができる。
【０２９０】
ティア構成変更プログラム３１５は、指定された一定時間が経過したかを監視し（Ｓ２９１１）、一定時間が経過した場合（Ｓ２９１１：ＹＥＳ）、プール毎に、プールボリュームの追加もしくは削除が発生したかを確認する（Ｓ２９１２）。
【０２９１】
プールボリュームの追加もしくは削除が発生していない場合（Ｓ２９１２：ＮＯ）、ティア構成変更プログラム３１５は、外部ストレージの接続ボリューム数が変化しているかどうかを確認する（Ｓ２９１３）。外部ストレージから第１ストレージ装置に接続されるボリュームの数に変化がない場合（Ｓ２９１３：ＮＯ）、再びタイマの値を監視する（Ｓ２９１１）。
【０２９２】
一方、プールボリュームが追加または削除された場合（Ｓ２９１２：ＹＥＳ）、及び、接続ボリューム数が変化した場合（Ｓ２９１３：ＹＥＳ）、ティア構成変更プログラム３１５は、性能ポテンシャルの再計算処理に移行する。
【０２９３】
Ｓ２９１４、Ｓ２９１５、Ｓ２９１６の処理は、図１７のＳ１７１８−２、Ｓ１７１９、Ｓ１７２０で説明したと内容と同様である、説明を省略する。本実施例では、プール構成が変化すると、外部ストレージ情報取得プログラム３１１が性能ポテンシャルを再計算する。
【０２９４】
なお、構成変更が生じたタイミングで、性能ポテンシャルを再計算する例を示したが、これに限らず、定期的に性能ポテンシャルを再計算して見直す構成でもよい。または、管理計算機１０４からの指示、または、管理者からの指示に従って、性能ポテンシャルを再計算する構成でもよい。
【０２９５】
図３０は、ページ管理処理を示すフローチャートである。ページ再配置プログラム３１６は、図１７で示した処理が実行された後で、指定された一定時間が経過したか監視する（Ｓ３０１０）。なお、ここでの一定時間は、図２９で述べた一定時間と異なる。指定された一定時間が経過した場合（Ｓ３０１０：ＹＥＳ）、ページ再配置プログラム３１６は、ページ毎に、Ｉ／Ｏ頻度を測定する（Ｓ３０１１）。
【０２９６】
ページ再配置プログラム３１６は、移行対象ページのＩ／Ｏ頻度と各ティアの容量（性能ポテンシャル）とに基づいて、そのページが配置されるべき配置先ティアを判定する（Ｓ３０１２）。ページ再配置プログラム３１６は、配置先ティアと現在のティアとが同一であるかを判定する（Ｓ３０１３）。
【０２９７】
配置先ティアと現在のティアとが一致しない場合（Ｓ３０１３：ＮＯ）、ページ再配置プログラム３１６は、配置先ティアに、移行対象ページのデータを移動させ（Ｓ３０１４）、その後再びタイマを監視する（Ｓ３０１０）。
【０２９８】
配置先ティアと現在のティアとが一致する場合（Ｓ３０１３：ＹＥＳ）、ページ再配置プログラム３１６は、ページのマイグレーションを行わずに、Ｓ３０１０に戻る。
【０２９９】
プールの構成変更またはネットワーク負荷の変動により、ティア順序及び性能ポテンシャルが再計算され、性能の高いティアに属すべきページが、性能の低いティアに配置されてしまう可能性がある。しかし、本実施例では、図３０に示すページ管理処理を実行することで、各ページを本来属すべきティアに再配置させることができる。
【０３００】
図３１は、外部プールボリュームの性能を監視するための処理を示すフローチャートである。本処理は、例えば、図１７で実施した、外部ボリューム性能の算出結果が正しいか否かを監視するために実行する。
【０３０１】
本処理は、第１ストレージ装置１０１の外部ストレージ性能監視プログラム３１７が実行する。これに限らず、管理計算機１０４が外部ボリュームの性能を取得する構成でもよいし、または、管理者から外部ボリュームの性能に関する情報の全部または一部を取得してもよい。なお、図３１では、定期的に外部ボリュームの性能を取得する例を示しているが、これに限らず、管理計算機１０４または管理者から指示されたタイミングで、外部ボリュームの性能を監視するようにしてもよい。
【０３０２】
外部ストレージ性能監視プログラム３１７は、図１７で示した処理の流れが実行された後で、指定された一定時間が経過したかを監視する（Ｓ３１１０）。一定時間が経過していない場合（Ｓ３１１０：ＮＯ）、待機する。
【０３０３】
指定された一定時間が経過した場合（Ｓ３１１０：ＹＥＳ）、外部ストレージ性能監視プログラム３１７は、任意の外部プールボリュームについて性能情報を取得する（Ｓ３１１１）。性能情報とは、例えば、スループット及び／またはレスポンス性能である。情報取得の対象とするＩ／Ｏは、例えば、ホスト計算機１０３からの通常のＩ／Ｏである。つまり、ホスト計算機１０３からのコマンド処理に要した時間等を履歴として保存しておけば、性能情報を得ることができる。これに限らず、性能測定用のランダムＩ／Ｏを発行し、その応答結果から性能情報を得る構成でもよい。
【０３０４】
外部ストレージ性能監視プログラム３１７は、性能情報を取得した外部プールボリュームについて、過去に取得した性能情報と異なるか判定する（Ｓ３１１２）。現在の性能情報と過去の性能情報とが一致する場合（Ｓ３１１２：NO）、ティア順序及び性能ポテンシャルを再計算する必要はない。そこで、Ｓ３１１０に戻る。
【０３０５】
現在の性能情報と過去の性能情報とが一致するとは、完全に一致する場合に限らず、過去の性能情報との差が所定の閾値以下の場合は、一致すると判定してもよい。さらに、その閾値を上回る差分が検出された場合でも、その閾値を上回る差分が所定回数以上検出されるまでは、現在の性能情報と過去の性能情報とは一致すると判定してもよい。
【０３０６】
現在の性能情報と過去の性能情報とが異なる場合（Ｓ３１１２：ＹＥＳ）、外部ストレージ性能監視プログラム３１７は、ティア順序を再計算する（Ｓ３１１３）。Ｓ３１１３の処理内容は、図１７のＳ１７１５〜Ｓ１７１８で述べた内容と同様であるため、その説明は省略する。但し、Ｓ１７１５〜Ｓ１７１８の内容の全てが常に必ずしも実行されるとは限らない。必要に応じて、一部の処理が適宜省略されることもある。
【０３０７】
外部ストレージ性能監視プログラム３１７は、性能ポテンシャルを再計算する（Ｓ３１１４）。Ｓ３１１４の処理内容は、図１７のＳ１７１８−２、Ｓ１７１９、Ｓ１７２０と同様であるため、その説明は省略する。但し、必ずしもそれらのステップの全てが実行されるとは限らない。
【０３０８】
このように構成される本実施例によれば、システム内の複数のプールボリュームの性能情報に基づいて、各プールボリュームを複数のプールボリュームグループにグループ化し、それらプールボリュームグループからティアを生成できる。システム内に存在する複数のプールボリュームを分類して複数ティアを形成するため、現状に合ったティア構成を有するプールを作成することができる。
【０３０９】
プール内に複数のティアを設ける場合は、通常、各ティアの性能条件を設定する。例えば、第１ティアは１００００ＩＯＰＳ以上の性能を要求する、第２ティアは３０００〜９９９９ＩＯＰＳの性能を要求する等である。このようにティアの生成条件（性能条件）が事前に定められている場合は、プールの最終性能の予測が簡単となる。しかし、その反面、或るティアの性能条件に合致するプールボリュームが見つからない場合、そのティアを作成することはできない。また、性能条件で区切られるため、システム内の多数のプールボリュームが特定のティアに配置されてしまい、階層化プールとしての機能を実現できない可能性もある。
【０３１０】
これに対し、本実施例では、ティアの生成条件を決めずに、システム内の各プールボリュームの性能に基づいてティア（プールボリュームグループ）を生成する。従って、現状のプールボリュームの種類及び数等に応じた、ティア構成を有するプールを作成することができ、使い勝手が向上する。
【０３１１】
以上、本発明の実施例を説明したが、本発明は、この実施例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【０３１２】
例えば、第１ストレージ装置１０１は、外部ストレージからボリュームをマウントする際に、ドライブタイプ単位で一つのボリュームに纏めてマウントしてもよい。これにより、第１ストレージ装置１０１が持つ、外部ボリュームの管理情報を削減することが可能となり、また、測定するボリューム数を削減することが可能となる。
【０３１３】
詳しくは、例えば、或る外部ストレージ内に、それぞれ１００ＭＢのサイズを有するＳＳＤボリュームが５台含まれている場合、第１ストレージ装置１０１は、５つのＳＳＤボリュームとして個別に管理するのではなく、５つのＳＳＤボリュームを一つにまとめて、５００ＭＢのサイズを有する１台のＳＳＤボリュームとして管理することができる。同種の外部プールボリュームを一つにまとめて管理することで、プールボリュームをより早くグループ化することができる。
【０３１４】
本実施例では、現在ストレージシステムに含まれる複数のプールボリュームの性能情報に基づいて、現状に合ったティアを構築できるという特徴を備える。そのために、本実施例では、多数の外部プールボリュームの性能情報を取得して、管理する必要がある。しかし、実際のドライブに応じて外部プールボリュームを管理すると、管理テーブルのサイズが膨大となり、かつ、プールボリュームのグループ化にも時間がかかる。
【０３１５】
そこで、第１ストレージ装置１０１が外部ストレージ装置１０２から外部プールボリュームをマウントする場合に、同種のドライブから構成される外部プールボリュームを一つの外部プールボリュームとしてまとめてマウントさせる。同種の外部プールボリュームを一つにまとめてマウントさせる構成は、例えば、図１０に示すプールボリューム性能管理テーブル３２４を作成する場合等に、実現できる。このような構成は、当業者であれば、容易に理解することができる。
【０３１６】
また、例えば、第１ストレージ装置１０１は、測定対象の外部ボリュームがライト不可に設定されている場合、ライト要求に代えてリード要求を発行し、その測定結果から性能を推測してもよい。
【０３１７】
さらに、本実施例は、以下のように、コンピュータプログラムまたは計算機システム等として表現することもできる。
【０３１８】
表現１．コンピュータを、少なくとも一つの第２記憶制御装置と通信経路を介して通信可能に接続される第１記憶制御装置として作動させるためのコンピュータプログラムであって、
前記コンピュータに、
複数の論理ボリュームの性能を示すボリューム性能情報を取得させ、
取得した前記ボリューム性能情報に基づいて、前記各論理ボリュームをグループ化して複数のボリュームグループを生成させ、
前記ボリュームグループ毎の性能を示すボリュームグループ性能情報を算出させ、
算出された前記ボリュームグループ性能情報に応じて前記各ボリュームグループの順序を決定させ、
決定された前記順序に基づいて、前記各ボリュームグループの階層をプール内に設けさせる、
コンピュータプログラム。
【０３１９】
表現２．ホスト計算機に接続される第１記憶制御装置と、前記第１記憶制御装置に接続される第２記憶制御装置と、前記第１記憶制御装置及び前記第２記憶制御装置に少なくとも接続される管理計算機とを含む計算機システムであって、
前記第１記憶制御装置は、プールと、前記プールを制御するコントローラを備え、
前記コントローラは、
複数の論理ボリュームの性能を示すボリューム性能情報を取得し、
取得した前記ボリューム性能情報に基づいて、前記各論理ボリュームをグループ化して複数のボリュームグループを生成し、
前記ボリュームグループ毎の性能を示すボリュームグループ性能情報を算出し、
算出された前記ボリュームグループ性能情報に応じて前記各ボリュームグループの順序を決定し、
決定された前記順序に基づいて、前記各ボリュームグループの階層を前記プール内に設ける、
計算機システム。
【符号の説明】
【０３２０】
１０１：第１ストレージ装置、１０２：第２ストレージ装置、１０３：ホスト計算機、１０４：管理計算機
【図１】
0005602957.tif 000002
【図２】
0005602957.tif 000003
【図３】
0005602957.tif 000004
【図４】
0005602957.tif 000005
【図５】
0005602957.tif 000006
【図６】
0005602957.tif 000007
【図７】
0005602957.tif 000008
【図８】
0005602957.tif 000009
【図９】
0005602957.tif 000010
【図１０】
0005602957.tif 000011
【図１１】
0005602957.tif 000012
【図１２】
0005602957.tif 000013
【図１３】
0005602957.tif 000014
【図１４】
0005602957.tif 000015
【図１５】
0005602957.tif 000016
【図１６】
0005602957.tif 000017
【図１７】
0005602957.tif 000018
【図１８】
0005602957.tif 000019
【図１９】
0005602957.tif 000020
【図２０】
0005602957.tif 000021
【図２１】
0005602957.tif 000022
【図２２】
0005602957.tif 000023
【図２３】
0005602957.tif 000024
【図２４】
0005602957.tif 000025
【図２５】
0005602957.tif 000026
【図２６】
0005602957.tif 000027
【図２７】
0005602957.tif 000028
【図２８】
0005602957.tif 000029
【図２９】
0005602957.tif 000030
【図３０】
0005602957.tif 000031
【図３１】
0005602957.tif 000032