(57)【要約】  ストレージシステムが、複数の仮想ボリューム（ＶＶＯＬ）と、複数のプールを有する。各プールは、性能が異なる複数の実領域群で構成されている。ストレージシステムは、アクセス元からのアクセスコマンドを基に特定された仮想領域に割り当てられている実領域にアクセスする。コントローラは、どの仮想領域にどの実領域が割り当てられているかと仮想領域に関するアクセス負荷とを表す情報であるプール状況情報を管理する。ストレージシステムの管理システムが、要求性能と性能を各ＶＶＯＬについて表す管理情報を有する。ＶＶＯＬの性能は、プール状況情報を基に特定された性能である。管理システムが、管理情報を基に、状況が不適切であるＶＶＯＬを特定し、特定されたＶＶＯＬの状況を不適切な状況から適切な状況に変えるために前記特定されたＶＶＯＬに関連付けられているプールに関わるマイグレーション処理を行う。
2011092738.tif 000002
【特許請求の範囲】
【請求項１】
アクセス元からアクセスコマンドを受信するストレージシステムの管理システムであって、
前記ストレージシステムが、複数の仮想ボリュームと、複数のプールと、コントローラとを有し、
各仮想ボリュームは、複数の仮想領域で構成された仮想的な論理ボリュームであり、
各プールは、性能が異なる複数の実領域群で構成された記憶領域であり、
前記コントローラは、
（ａ）前記アクセスコマンドを受信し、
（ｂ）前記アクセスコマンドから特定された仮想領域に実領域が割り当てられていれば、その実領域にアクセスし、
（ｃ）前記特定された仮想領域に実領域が割り当てられていなければ、前記複数のプールのうちの、前記特定された仮想領域を有する仮想ボリュームに関連付けられているプールから実領域を割り当て、割り当てた実領域にアクセスし、
前記コントローラは、どの仮想領域にどの実領域が割り当てられているかと仮想領域に関するアクセス負荷とを表す情報であるプール状況情報を管理し、
前記管理システムが、
記憶資源と、
前記記憶資源に接続されたプロセッサと
を有し、
前記記憶資源が、アクセス元から仮想ボリュームへのアクセスに関する要求性能と、アクセス元から仮想ボリュームへのアクセスに関する性能とを各仮想ボリュームについて表す管理情報を記憶し、
仮想ボリュームの性能は、前記プール状況情報を基に特定された性能であり、
前記プロセッサが、
（Ａ）前記管理情報を基に、前記複数の仮想ボリュームのうち状況が不適切である仮想ボリュームを特定し、
（Ｂ）前記特定された仮想ボリュームの状況を不適切な状況から適切な状況に変えるために前記特定された仮想ボリュームに関連付けられているプールに関わるマイグレーション処理を行う、
管理システム。
【請求項２】
請求項１記載の管理システムであって、
前記（Ａ）で特定される仮想ボリュームは、性能が要求性能を満たしているものの性能が要求性能を将来満たさなくなる可能性の高い仮想ボリュームであり、
前記（Ｂ）で行われるマイグレーション処理は、前記（Ａ）で特定された仮想ボリュームに割り当てられている全ての実領域内のデータが、前記（Ａ）で特定された仮想ボリュームに関連付けられているプールである第１のプールから、前記第１のプールとは別のプールである第２のプールにマイグレーションされ、且つ、前記（Ａ）で特定された仮想ボリュームが前記第１のプールに代えて前記第２のプールに関連付けられるための処理である、
管理システム。
【請求項３】
請求項２記載の管理システムであって、
前記第２のプールは、前記（Ａ）で特定された仮想ボリュームが関連付けられても、既に関連付けられているいずれの仮想ボリュームも、性能が要求性能を満たさなくなる仮想ボリュームにも、性能が要求性能を満たしているものの性能が要求性能を将来満たさなくなる可能性の高い仮想ボリュームにもならないプールである、
管理システム。
【請求項４】
請求項３記載の管理システムであって、
前記プロセッサが、前記プール状況情報を基に、アクセス負荷範囲毎の実領域数を表すアクセス状況を各仮想ボリュームについて特定し、
前記プロセッサが、前記（Ｂ）において、
（ｂ１）前記第１のプール以外のプールから、前記第２のプールの候補を決定し、
（ｂ２）前記第２のプールの候補に既に割り当てられている仮想ボリュームのアクセス状況と、前記第２のプールの候補に割り当てられる予定の前記（Ａ）で特定された仮想ボリュームのアクセス状況と、前記第２のプールの候補を構成する実領域群毎の実領域数とを基に、前記第２のプールの候補を前記第２のプールとするか否かを判断し、
前記（ｂ２）では、アクセス負荷範囲が高い実領域が割り当てられている仮想領域ほど、性能の高い実領域群内の実領域が割り当てられると仮定され、
前記（ｂ２）の判断の結果が肯定的の場合に、前記第２のプールの候補が前記第２のプールである、
管理システム。
【請求項５】
請求項２記載の管理システムであって、
前記（Ａ）で特定される仮想ボリュームは、前記第１のプールに関連付けられている複数の仮想ボリュームにおいて、要求性能が他の仮想ボリュームの要求性能に比して高いが、性能が他の仮想ボリュームの性能に比して低い仮想ボリュームである、
管理システム。
【請求項６】
請求項２記載の管理システムであって、
前記（Ａ）で特定される仮想ボリュームは、前記第１のプールに関連付けられている複数の仮想ボリュームにおいて、要求性能が他の仮想ボリュームの要求性能に比して高いが、性能が他の仮想ボリュームの性能に比して低い仮想ボリュームである、
管理システム。
【請求項７】
請求項１記載の管理システムであって、
前記プロセッサが、前記プール状況情報を基に、アクセス負荷範囲毎の実領域数を表すアクセス状況を各仮想ボリュームについて特定し、
前記（Ａ）で特定される仮想ボリュームは、その仮想ボリュームが関連付けられているプールに関連付けられている複数の仮想ボリュームにおける仮想ボリュームであって、それら複数の仮想ボリュームにおいて、要求性能及びアクセス状況が他の仮想ボリュームの要求性能及びアクセス状況に比べて許容範囲以上に異なっている仮想ボリュームである、
管理システム。
【請求項８】
請求項７記載の管理システムであって、
前記（Ｂ）で行われるマイグレーション処理は、要求性能及びアクセス状況が類似している複数の仮想ボリュームが１つのプールに関連付けられるための処理であり、その処理において、その１つのプールとは別のプールに関連付けられていた仮想ボリュームがその１つのプールに関連付けられる場合には、その仮想ボリュームに割り当てられていた全ての実領域内のデータを前記別のプールから前記１つのプールにマイグレーションするための処理が行なわれる、
管理システム。
【請求項９】
請求項８記載の管理システムであって、
前記（Ｂ）において、要求性能及びアクセス状況が類似している複数の仮想ボリュームが関連付けられるプールは、マイグレーションされるデータの総量が最も少なくて済むプールである、
管理システム。
【請求項１０】
請求項１記載の管理システムであって、
前記（Ａ）で特定される仮想ボリュームは、性能が要求性能を満たしていない仮想ボリュームである、
管理システム。
【請求項１１】
請求項１０記載の管理システムであって、
前記（Ｂ）で行われるマイグレーション処理は、前記（Ａ）で特定された仮想ボリュームに関連付けられているプールに、別のプールから第１の記憶容量を追加するための処理であり、
前記第１の記憶容量は、前記別のプールに関連付けられている仮想ボリュームの性能のわりに余っている記憶容量であり、且つ、第２の記憶容量以上の記憶容量であり、
前記第２の記憶容量は、前記（Ａ）で特定された仮想ボリュームに関連付けられているプールに、前記（Ａ）で特定された仮想ボリュームの性能がその仮想ボリュームの要求性能を満たすために追加すべき記憶容量である、
管理システム。
【請求項１２】
請求項１０記載の管理システムであって、
前記（Ｂ）で行われるマイグレーション処理は、前記（Ａ）で特定された仮想ボリュームに割り当てられている全ての実領域内のデータが、前記（Ａ）で特定された仮想ボリュームに関連付けられているプールである第１のプールから、前記第１のプールとは別のプールである第２のプールにマイグレーションされ、且つ、前記（Ａ）で特定された仮想ボリュームが前記第１のプールに代えて前記第２のプールに関連付けられるための処理であり、
前記第２のプールは、前記（Ａ）で特定された仮想ボリュームが関連付けられても、既に関連付けられているいずれの仮想ボリュームも、性能が要求性能を満たさなくなる仮想ボリュームにならないプールである、
管理システム。
【請求項１３】
請求項１０記載の管理システムであって、
前記プロセッサが、前記（Ｂ）において、
（ｂ１）前記（Ａ）で特定された仮想ボリュームに関連付けられているプールに、別のプールから第１の記憶容量を追加するための処理を行うことで、前記特定された仮想ボリュームの状況が不適切な状況から適切な状況に変わるか否かを判断し、
（ｂ２）前記（ｂ１）の判断の結果が否定的であれば、前記（Ａ）で特定された仮想ボリュームに割り当てられている全ての実領域内のデータが、前記（Ａ）で特定された仮想ボリュームに関連付けられているプールである第１のプールから、前記第１のプールとは別のプールである第２のプールにマイグレーションされ、且つ、前記（Ａ）で特定された仮想ボリュームが前記第１のプールに代えて前記第２のプールに関連付けられるための処理が行われれば、前記特定された仮想ボリュームの状況が不適切な状況から適切な状況に変わるか否かを判断し、
前記第１の記憶容量は、前記別のプールに関連付けられている仮想ボリュームの性能のわりに余っている記憶容量であり、且つ、第２の記憶容量以上の記憶容量であり、
前記第２の記憶容量は、前記（Ａ）で特定された仮想ボリュームに関連付けられているプールに、前記（Ａ）で特定された仮想ボリュームの性能がその仮想ボリュームの要求性能を満たすために追加すべき記憶容量である、
管理システム。
【請求項１４】
請求項１記載の管理システムであって、
前記管理情報が、要求性能及び性能を各アクセス元について表し、且つ、どの１以上のアクセス元がどの仮想ボリュームを利用するかを表す情報を有し、
前記（Ａ）では、仮想ボリュームに代えて、複数のアクセス元のうち状況が不適切であるアクセス元が特定され、
前記（Ｂ）では、前記特定されたアクセス元の状況を不適切な状況から適切な状況に変えるために前記特定されたアクセス元からアクセスされる仮想ボリュームに関連付けられているプールに関わるマイグレーション処理が行われる、
管理システム。
【請求項１５】
アクセス元からアクセスコマンドを受信するストレージシステムの管理方法であって、
前記ストレージシステムが、複数の仮想ボリュームと、複数のプールと、コントローラとを有し、
各仮想ボリュームは、複数の仮想領域で構成された仮想的な論理ボリュームであり、
各プールは、性能が異なる複数の実領域群で構成された記憶領域であり、
前記コントローラは、
（ａ）前記アクセスコマンドを受信し、
（ｂ）前記アクセスコマンドから特定された仮想領域に実領域が割り当てられていれば、その実領域にアクセスし、
（ｃ）前記特定された仮想領域に実領域が割り当てられていなければ、前記複数のプールのうちの、前記特定された仮想領域を有する仮想ボリュームに関連付けられているプールから実領域を割り当て、割り当てた実領域にアクセスし、
前記コントローラは、どの仮想領域にどの実領域が割り当てられているかと仮想領域に関するアクセス負荷とを表す情報であるプール状況情報を管理し、
前記管理方法が、
アクセス元から仮想ボリュームへのアクセスに関する要求性能と、アクセス元から仮想ボリュームへのアクセスに関する性能とを各仮想ボリュームについて表す管理情報を基に、前記複数の仮想ボリュームのうち状況が不適切である仮想ボリュームを特定し、
前記特定された仮想ボリュームの状況を不適切な状況から適切な状況に変えるために前記特定された仮想ボリュームに関連付けられているプールに関わるマイグレーション処理を行う、
管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムの管理に関する。
【背景技術】
【０００２】
ストレージシステムは、１以上のストレージ装置で構成されるが、ストレージ装置として、シンプロビジョニング（Thin Provisioning）技術が適用された装置が知られている（例えば、特許文献１）。シンプロビジョニング（ダイナミックプロビジョニングと呼ばれることもある）によれば、仮想的な論理ボリュームである仮想ボリューム（以下、ＶＶＯＬ）と言う）がホスト計算機に提供される。ＶＶＯＬは、複数の仮想領域（仮想的な記憶領域）の集合である。ホスト計算機からＶＶＯＬに対するライトが発生した場合、ライト先の仮想領域にプールから実領域（実体的な記憶領域、以下、「ページ」と言う）が割り当てられる。プールは、複数のページで構成された記憶領域である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−０１５９１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
プールは、例えば、複数の論理ボリュームで構成される。各論理ボリュームが複数のページに分割されており、それ故、プールはページ群で構成されている。論理ボリュームは、ストレージ装置が有する１以上の物理記憶デバイス（例えば、ＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）グループ）に基づいていても良いし、別のストレージ装置が有する論理ボリュームに基づいていても良い。【０００５】
論理ボリュームの性能（例えば、レスポンスタイム）は、その論理ボリュームの基になっている１以上の物理記憶デバイスの性能に依存する。１以上の物理記憶デバイスの性能は、例えば、物理記憶デバイスの種類、ＲＡＩＤグループのＲＡＩＤレベル等に依存する。【０００６】
このため、或る論理ボリュームの基になっている１以上の物理記憶デバイスの性能と、別の論理ボリュームの基になっている１以上の物理記憶デバイスの性能が異なっていれば、それらの論理ボリュームの性能も異なる。例えば、ＳＳＤ（Solid State Drive）はＨＤＤ（Hard Disk Drive）よりも性能が高いので、ＳＳＤに基づく論理ボリュームの性能は、ＨＤＤに基づく論理ボリュームの性能より高い。【０００７】
性能の異なる複数のページ群（例えば１以上の論理ボリューム）でプールを構成することが考えられる。そして、そのようなプールを複数個作成することが考えられる。各ＶＶＯＬには、複数のプールのうちのいずれかのプールが関連付けられている。ＶＶＯＬの仮想領域に対するライトが発生した場合、ライト先の仮想領域には、そのＶＶＯＬに関連付けられているプールからページが割り当てられる。１つのアクセス元（例えば、ホスト或いはアプリケーション）からだけアクセスされるＶＶＯＬもあれば、複数のアクセス元からアクセスされるＶＶＯＬもある。例えば、ＶＶＯＬの第１の部分が第１のアクセス元からアクセス可能な仮想領域群とされ、そのＶＶＯＬの第２の部分（第１の部分とは別の部分）が第２のアクセス元からアクセス可能な仮想領域群とされることがある。【０００８】
このようなケースにおいて、ストレージシステムの外部にいるアクセス元からのアクセスに関して要求される性能（要求性能）を出すためには、ＶＶＯＬにどのページ群内のページをどの程度割り当てるかを考慮する必要があると考えられる。例えば、要求性能のわりにＶＶＯＬに多くの高性能のページが割り当てられていると、その要求性能を過剰に満たすことになり、且つ、そのＶＶＯＬに無駄に多くの高性能のページが割り当てられていることから、高性能のページが不足するおそれがある。これは、オーバープロビジョニング（無駄）が生じていることを意味する。【０００９】
そこで、本発明の目的は、アクセス元からのアクセスに関する要求性能を満たしつつオーバープロビジョニングを抑制することにある。
【課題を解決するための手段】
【００１０】
ストレージシステムが、複数の仮想ボリューム（以下、ＶＶＯＬ）と、複数のプールと、コントローラとを有する。各ＶＶＯＬは、複数の仮想領域で構成された仮想的な論理ボリュームである。各プールは、性能が異なる複数の実領域群で構成された記憶領域である。コントローラは、アクセス元からアクセスコマンドを受信し、アクセスコマンドから特定された仮想領域に割り当てられている実領域にアクセスする。コントローラは、どの仮想領域にどの実領域が割り当てられているかと仮想領域に関するアクセス負荷とを表す情報であるプール状況情報を管理する。ストレージシステムの管理システムが、要求性能と性能を各ＶＶＯＬについて表す管理情報を有する。ＶＶＯＬの性能は、プール状況情報を基に特定された性能である。管理システムが、管理情報を基に、状況が不適切であるＶＶＯＬを特定し、特定されたＶＶＯＬの状況を不適切な状況から適切な状況に変えるために前記特定されたＶＶＯＬに関連付けられているプールに関わるマイグレーション処理を行う。【００１１】
アクセス元としては、ホスト装置、仮想計算機、アプリケーションプログラムなど、種々の対象が考えられる。また、ＶＶＯＬの性能や実領域群の性能としては、例えば、アクセスに関する性能がある。アクセスに関する性能としては、例えば、データのアクセスのためのコマンドが入力されてからそのコマンドに対する応答が出力されるまでの時間長であるレスポンスタイム、或いは、単位時間当たりに入出力されるデータの量がある。また、アクセス負荷は、アクセスに関する負荷であり、例えば、アクセス頻度（単位時間当たりに行われるアクセスの回数）、又は、データ転送速度（単位時間当たりに転送されるデータの量）である。また、「仮想領域に関するアクセス負荷」とは、仮想領域のアクセス負荷であっても良いし、仮想領域に割り当てられている実領域のアクセス負荷であっても良い。また、アクセスは、例えば、ライト及び／又はリードである。【００１２】
前記管理システムは、前記ストレージシステムの外に存在する１以上の計算機であっても良いし、前記コントローラと一体になっていても良いし、前記ホスト装置と一体になっていても良いし、前記ストレージシステムと前記ストレージシステムの外に存在する装置との組合せで実現されても良い。【００１３】
ストレージシステムは、１つのストレージ装置で構成されていても良いし複数のストレージ装置で構成されていても良い。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施例１に係る計算機システムを示す。
【図２】計算機システムにおけるアクセス元が仮想計算機であるケースにおいて、仮想計算機が認識するボリュームと、仮想計算機を管理するハイパバイザが認識するファイルシステムとの関係を示す。
【図３】ホスト装置１０１、管理計算機２０１及びストレージ装置２０３の構成を示す。
【図４】コントローラ２５１内のメモリ２４３に記憶されるプログラム及び情報を示す。
【図５】ページ状態管理テーブル４０２を示す。
【図６】プール管理テーブル４０３を示す。
【図７】ＶＯＬ管理テーブル４０４を示す。
【図８】メディア状態管理テーブル４０５を示す。
【図９】管理計算機２０１内の記憶資源２１１に記憶されるプログラム及び情報を示す。
【図１０】ＶＶＯＬ管理テーブル５０４０を示す。
【図１１】階層定義テーブル５０５０を示す。
【図１２】第１の状態管理処理の流れを示す。
【図１３】第２の状態管理処理の流れを示す。
【図１４】アラート１を受信した性能管理プログラム５０２０が行う処理の流れを示す。
【図１５】図１４のＳ１２０２の処理の流れを示す。
【図１６】図１４のＳ１２０３の処理の流れを示す。
【図１７】アラート２を受信した性能管理プログラム５０２０が行う処理の流れを示す。
【図１８】実施例２に係る管理計算機２０００内のメモリ２５００に記憶されるプログラム及び情報を示す。
【図１９】ページＩＯＰＳ分布履歴テーブル２６４０の例を示す。
【図２０】増設パターン保持テーブル２６５０の例を示す。
【図２１】実施例２に係るＶＶＯＬ管理テーブル２００４を示す。
【図２２】実施例３に係る性能管理プログラム５０２０が行うリバランス処理の流れを示す。
【図２３】ＶＶＯＬ１〜ＶＶＯＬ４のアクセス分布を示す。
【図２４】図２３のアクセス分布のグラフである。
【図２５】実施例４に係るＶＶＯＬ管理テーブル２７０１を示す。
【発明を実施するための最良の形態】
【００１５】
本発明の幾つかの実施例を説明する。なお、本発明の技術的範囲が各実施例に限定されてはならない。【００１６】
なお、以後の説明では、「ｘｘｘテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「ｘｘｘテーブル」を「ｘｘｘ情報」と呼ぶことができる。【００１７】
また、以後の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ（例えばＣＰＵ（Central Processing Unit））によって実行されることで、定められた処理を、適宜に記憶資源（例えばメモリ）及び通信制御装置（例えば通信ポート）を用いながら行うため、処理の主語がプロセッサとされてもよい。また、プログラムを主語として説明された処理は、管理システムが行う処理としても良い。また、プログラムの一部または全ては専用ハードウェアによって実現されてもよい。このため、プログラムを主語として説明された処理は、コントローラが行う処理としても良い。コントローラは、プロセッサと、プロセッサに実行されるコンピュータプログラムを記憶する記憶資源とを含んでも良いし、上記の専用ハードウェアを含んでも良い。また、コンピュータプログラムは、プログラムソースから各計算機にインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであっても良い。【００１８】
なお、管理システムは、一以上の計算機で構成されて良い。具体的には、例えば、管理計算機が情報を表示する場合、或いは、管理計算機が表示用情報を遠隔の計算機に送信する場合、管理計算機が管理システムである。また、例えば、複数の計算機で管理計算機と同等の機能が実現されている場合は、当該複数の計算機（表示を表示用計算機が行う場合は表示用計算機を含んで良い）が、管理システムである。
【実施例１】
【００１９】
図１は、本発明の実施例１に係る計算機システムを示す。【００２０】
ストレージシステム１０３に、ホスト装置１０１と、管理計算機２０１が接続されている。【００２１】
ストレージシステム１０３は、１以上のストレージ装置で構成されている。１以上のストレージ装置の少なくとも１つが、シンプロビジョニング技術が適用された装置である。【００２２】
ストレージシステム１０３は、性能の異なる複数のメディア群を有する。メディア群は、１以上のメディアの集合である。本実施例で言う「メディア」とは、論理ボリュームのことである。【００２３】
複数のメディア群として、本実施例では、３つのメディア群、具体的には、ＳＳＤメディア群１０９Ａと、ＳＡＳ（Serial Attached SCSI）メディア群１０９Ｂと、ＳＡＴＡ（Serial ATA（Advanced Technology Attachment））メディア群１０９Ｃとがある。ＳＳＤメディア群１０９Ａは、ＳＳＤメディア（ＳＳＤに基づく論理ボリューム）で構成されており、ＳＡＳメディア群１０９Ｂは、ＳＡＳメディア（ＳＡＳ−ＨＤＤ（Hard Disk Drive）に基づく論理ボリューム）で構成されており、ＳＡＴＡメディア群１０９Ｃは、ＳＡＴＡメディア（ＳＡＴＡ−ＨＤＤに基づく論理ボリューム）で構成されている。これら３つのメディア群のうちの少なくとも１つが別種のメディア群であっても良いし、メディア群の数は、２以上であれば良い。例えば、ＳＡＳメディア群１０９Ｂは、ＳＡＳ１０Ｋｒｐｍ（回転数が10,000回転／分のＳＡＳ）に基づくメディア群と、ＳＡＳ１５Ｋｒｐｍ（回転数が15,000回転／分のＳＡＳ）に基づくメディア群とに別れていても良い。また、プール１０７を有するストレージ装置とは別のストレージ装置から提供されたメディア群（外部メディア群）があっても良い。【００２４】
ストレージシステム１０３は、複数のプール１０７を有する。各プール１０７は、性能の異なる複数のメディアで構成されている。具体的には、例えば、各プール１０７は、ＳＳＤメディア群１０９Ａのうちの１以上のＳＳＤメディアと、ＳＡＳメディア群１０９Ｂのうちの１以上のＳＡＳメディアと、ＳＡＴＡメディア群１０９Ｃのうちの１以上のＳＡＴＡメディアとで構成されている。各メディアが、複数のページに区切られている。このため、各プール１０７は、ＳＳＤページ群と、ＳＡＳページ群と、ＳＡＴＡページ群とで構成されていることになる。【００２５】
なお、後述するが、１つのプール１０７には、複数の階層がある。１つの階層は、同じ性能の１以上のメディアで構成される。このため、例えば、上位の階層として、ＳＳＤメディアで構成された階層があり、中位の階層として、ＳＡＳメディアで構成された階層があり、下位の階層として、ＳＡＴＡメディアで構成された階層がある。各階層には、アクセス頻度範囲（アクセス頻度の範囲）が設けられている。アクセス頻度は、単位時間当りのアクセスの数であり、例えば、ＩＯＰＳで表される。なお、ＩＯＰＳは、IO per second、すなわち、１秒間当たりに行われるアクセス（Ｉ／Ｏ（Input/Output））の数である。【００２６】
ストレージシステム１０３は、複数のＶＶＯＬ１０５を有する。１つのＶＶＯＬ１０５が、複数のホスト装置１０１のうちのいずれか１つのホスト装置１０１に提供される。本実施例では、ＶＶＯＬ１０５とホスト装置１０１が１対１で対応している。ＶＶＯＬ１０５は、仮想的な論理ボリュームであり、複数の仮想領域（仮想的な記憶領域）で構成されている。仮想領域は、例えば、アドレス（例えばＬＢＡ（Logical Block Address））である。【００２７】
ホスト装置１０１は、アクセス元の一例である。ホスト装置１０１は、提供されたＶＶＯＬ１０５にアクセスする。具体的には、ホスト装置１０１は、アクセス先情報を有するアクセスコマンドをストレージシステム１０３に送信する。アクセス先情報は、アクセス先を表す情報であり、例えば、ＶＶＯＬ１０５のＩＤ（例えばＬＵＮ（Logical Unit Number））と仮想領域のＩＤ（例えばＬＢＡ）とを含んでいる。【００２８】
本実施例では、ホスト装置１０１は、計算機である。しかし、ホスト装置１０１は、他種の装置、例えば、ストレージシステムの外部のストレージ装置（例えば、リモートコピーのコピー元のストレージ装置）であっても良いし、仮想的な計算機であっても良い。例えば、複数の仮想計算機が、物理的なホスト計算機（典型的にはサーバマシン）で実行され、それら複数の仮想計算機は、そのホスト計算機で実行されるハイパバイザ（図示せず）で管理されて良い。このケースでは、例えば、図２に示すように、各仮想計算機（ＶＭ）１０１’は、提供されたＶＶＯＬに関連付けられた論理デバイス（ＶＯＬ）３０２を認識する（つまり、仮想計算機１０１’は、ＶＶＯＬを認識する）。しかし、ハイパバイザは、複数の仮想計算機１０１’が認識している複数の論理デバイス３０２を複数のファイルとして認識し、それら複数の論理デバイス３０２が、ファイルシステム３１１で管理されることになる。本実施例では、要求性能の一例であるＳＬＯ（Service Level Objective）が、ＶＶＯＬ毎に設定されるが、ＳＬＯは、ファイルシステム３１１毎に設定されて良い。【００２９】
管理計算機２０１は、ストレージシステム１０３を管理する計算機である。管理計算機２０１は、ストレージシステム１０３から種々の情報を収集し、収集された情報を基に、複数のプール１０７におけるデータの配置を制御する。管理計算機２０１が有する機能は、ストレージシステムに備えられても良いし、ホスト装置１０１に備えられても良い。この場合、管理計算機２０１は無くても良い。【００３０】
図３は、複数のホスト装置１０１のうちの１つのホスト装置１０１の構成と、管理計算機２０１の構成と、ストレージシステム１０３を構成する１以上のストレージ装置のうちの１つのストレージ装置２０３の構成とを示す。【００３１】
ストレージ装置２０３に、第１の通信ネットワーク（例えばＬＡＮ（Local Area Network））２３１を通じて、管理計算機２０１及びホスト装置１０１が接続されている。また、ストレージ装置２０３に、第２の通信ネットワーク（例えばＳＡＮ（Storage Area Network）２３２を通じて、ホスト装置１０１に接続されている。第１及び第２の通信ネットワーク２３１及び２３２は一体であっても良い。【００３２】
ストレージ装置２０３は、物理記憶デバイス群と、物理記憶デバイス群に接続されたコントローラ２５１とを有する。【００３３】
物理記憶デバイス群は、１以上の物理記憶デバイスである。物理記憶デバイス群として、本実施例では、ＳＳＤ群３０９Ａ、ＳＡＳ群３０９Ｂ及びＳＡＴＡ群３０９Ｃがある。ＳＳＤ群３０９Ａは、１以上のＳＳＤであり、ＳＡＳ群３０９Ｂは、１以上のＳＡＳ−ＨＤＤであり、ＳＡＴＡ群３０９Ｃは、１以上のＳＡＴＡ−ＨＤＤである。このように、物理記憶デバイス群には、性能の異なる複数の物理記憶デバイスが混在している。【００３４】
コントローラ２５１は、管理Ｉ／Ｆ（図では、Ｍ−Ｉ／Ｆと記載）２４１と、通信Ｉ／Ｆ２４２（図では、Ｃ−Ｉ／Ｆと記載）２４２と、デバイスＩ／Ｆ（図では、Ｄ−Ｉ／Ｆ）２４５と、メモリ２４３と、それらの要素に接続されたプロセッサ２４４とを有する。【００３５】
管理Ｉ／Ｆ２４１は、第１のプロトコルで通信するための通信インタフェース装置（例えば、ＮＩＣ（Network Interface Card））である。【００３６】
通信Ｉ／Ｆ２４２は、第２のプロトコルで通信するための通信インタフェース装置である。【００３７】
デバイスＩ／Ｆ２４５は、第３のプロトコルで物理記憶デバイスと通信するための通信インタフェース装置である。物理記憶デバイスの種類毎にデバイスＩ／Ｆ２４５があっても良い。デバイスＩ／Ｆ２４５を通じて、物理記憶デバイスに対するアクセスが行われる。【００３８】
メモリ２４３は、プロセッサ２４４で実行されるコンピュータプログラムや、種々の情報を記憶する。また、メモリ２４３は、キャッシュメモリ領域を有する。キャッシュメモリ領域には、ホスト装置１０１から受けたライトコマンドに従うデータや、ホスト装置１０１から受けたリードコマンドに応答してページ（具体的には、ページの基になっている物理記憶デバイス）から読み出されたデータが一時格納される。キャッシュメモリ領域内のライト対象のデータは、ライト先の仮想領域に割り当てられたページの基になっている物理記憶デバイスに格納される。キャッシュメモリ領域内のリード対象のデータは、ホスト装置１０１に提供される。【００３９】
ホスト装置１０１は、管理Ｉ／Ｆ（例えばＮＩＣ）２２４と、通信Ｉ／Ｆ（例えばＨＢＡ（Host Bus Adapter））２２６と、記憶資源２２１と、それら接続されたプロセッサ２２２とを有する。記憶資源２２１は、例えば、メモリである（ハードディスクドライブ等の補助記憶装置を含んでも良い）。記憶資源２２１は、例えば、アプリケーションプログラム（例えば業務プログラム）やＯＳ（Operating System）を記憶し、プロセッサ２２２が、そのアプリケーションプログラムやＯＳを実行する。【００４０】
管理計算機２０１は、管理Ｉ／Ｆ（例えばＮＩＣ）２１４と、記憶資源２１１と、それらに接続されたプロセッサ２１２とを有する。記憶資源２１１は、例えば、メモリである（ハードディスクドライブ等の補助記憶装置を含んでも良い）。記憶資源２１１は、コンピュータプログラムや種々の情報を記憶する。コンピュータプログラムは、プロセッサ２１２で実行される。【００４１】
以上が、本実施例に係る計算機システムのハードウェア構成の一例である。前述した管理Ｉ／Ｆや通信Ｉ／Ｆがどのような通信インタフェースデバイスであるかは、例えば、そのＩ／Ｆが接続されるネットワークの種類や、そのＩ／Ｆを有する装置の種類によって異なる。【００４２】
図４は、コントローラ２５１内のメモリ２４３に記憶されるプログラム及び情報を示す。【００４３】
プログラムとして、プール管理プログラム４０１が記憶される。情報として、ページ状態管理テーブル４０２、プール管理テーブル４０３、ＶＯＬ管理テーブル４０４及びメディア状態管理テーブル４０５が記憶される。【００４４】
図５は、ページ状態管理テーブル４０２を示す。【００４５】
ページ状態管理テーブル４０２は、ページ毎の状態を表す。具体的には、例えば、テーブル４０２は、ページ毎に、下記の情報を有する。
＊プールＩＤ５０１：ページを有するプールのＩＤ、
＊ページＩＤ５０２：ページのＩＤ、
＊ＶＶＯＬ  ＩＤ５０３：ページの割当先の仮想領域を有するＶＶＯＬのＩＤ。「Ｎ／Ａ」は、ページがどの仮想領域にも割り当てられていないこと（Not Assigned）を意味する、
＊最近アクセス時刻５０４：ページに最近アクセスされた時刻を表す情報、
＊アクセス頻度５０５：ページに対するアクセスの頻度。【００４６】
最近アクセス時刻５０４は、ページに対する最近のライトの時刻とページからの最近のリードの時刻とに区別されていても良い。【００４７】
アクセス頻度５０５は、ライトの頻度とリードの頻度とに区別されていても良い。アクセス頻度５０５は、ページに対するアクセスが行われた場合に更新され、アクセスコマンドを受けたもののページに対するアクセスが行われなかった場合には、更新されない。【００４８】
図６は、プール管理テーブル４０３を示す。【００４９】
プール管理テーブル４０３は、プールを構成する各ページと仮想領域との対応関係を表す。具体的には、例えば、テーブル４０３は、ページ毎に、下記の情報を有する。
＊プールＩＤ６０１：ページを有するプールのＩＤ、
＊ページＩＤ６０２：ページのＩＤ、
＊メディアＩＤ６０３：ページを有するメディアのＩＤ、
＊メディアＬＢＡ６０４：メディアにおけるページの位置（ページの先頭のＬＢＡとそのページの末端のＬＢＡ）、
＊ＶＶＯＬ  ＩＤ６０５：ページの割当先のＶＶＯＬのＩＤ。「Ｎ／Ａ」は、ページがどの仮想領域にも割り当てられていないこと（Not Assigned）を意味する、
＊ＶＶＯＬ  ＬＢＡ６０６：ページの割当先の仮想領域の、ＶＶＯＬにおける位置（仮想領域の先頭のＬＢＡとその仮想領域の末端のＬＢＡ）。【００５０】
図７は、ＶＯＬ管理テーブル４０４を示す。【００５１】
ＶＯＬ管理テーブル４０４は、ストレージ装置が有するボリュームに関する情報を有する。具体的には、例えば、テーブル４０４は、ボリューム毎に、下記の情報を有する。
＊ＶＯＬ  ＩＤ７０１：ＶＶＯＬのＩＤ、又は、メディアのＩＤ、
＊容量７０２：ＶＶＯＬの記憶容量、又は、メディアの記憶容量、
＊タイプ７０３：ボリュームがＶＶＯＬかメディアか。ボリュームがメディアであるならば、タイプ７０３は、メディアのタイプ（ＳＳＤ、ＳＡＳ、ＳＡＴＡ）を表す、
＊プールＩＤ７０４：ボリュームがＶＶＯＬの場合に有効な値が設定される情報であって、ＶＶＯＬに関連付けられたプールのＩＤ。【００５２】
図８は、メディア状態管理テーブル４０５を示す。【００５３】
メディア状態管理テーブル４０５は、メディアの状態に関する情報を有する。具体的には、例えば、テーブル４０５は、メディア毎に、下記の情報を有する。
＊プールＩＤ８０１：メディアを有するプールのＩＤ、
＊メディアＩＤ：８０２：メディアのＩＤ、
＊階層タイプ８０３：メディアが属する階層のタイプを表す情報、
＊アクセス頻度限界８０４：メディアのアクセス頻度の上限値、
＊アクセス頻度８０５：メディアのアクセス頻度。【００５４】
以上が、テーブル４０２〜４０５についての説明である。なお、それらのテーブルに加えて、どのページが割り当てられているかを仮想領域毎に表すマッピング管理テーブル（図示せず）が用意されても良い。仮想領域にページが割り当てられているか否かは、そのマッピング管理テーブルを基に判断されても良い。【００５５】
再び図４を参照する。【００５６】
プール管理プログラム４０１は、前述したテーブル４０２〜４０５を基に、例えば、次の処理を行う。【００５７】
（Ａ）プログラム４０１は、以下の（ａ１）〜（ａ９）の処理を含んだライト処理を行う。
（ａ１）プログラム４０１は、ライトコマンドをホスト装置１０１から受信する。
（ａ２）プログラム４０１は、ライトコマンドが有するアクセス先情報を基に、ライト先ＶＶＯＬとライト先仮想領域を特定する。
（ａ３）プログラム４０１は、ライトコマンドに従うライト対象のデータをキャッシュメモリ領域に格納する。プログラム４０１は、この段階で、ホスト装置１０１にライト完了を応答して良い。
（ａ４）プログラム４０１は、ページ状態管理テーブル４０２（又は前述のマッピング管理テーブル）を基に、上記（ａ２）で特定されたライト先仮想領域にページが割り当てられているかを判断する。
（ａ５）上記（ａ４）の判断の結果が肯定的であれば、プログラム４０１は、ライト先仮想領域に割り当てられているページに、キャッシュメモリ領域内のライト対象のデータを書き込む。
（ａ６）上記（ａ４）の判断の結果が否定的であれば、プログラム４０１は、ＶＯＬ管理テーブル４０４と、ページ状態管理テーブル４０２又はプール管理テーブル４０３とを基に、ライト先ＶＶＯＬに関連付けられているプールにおける、未使用のページ（どの仮想領域にも割り当てられていないページ）を特定する。ここで、プログラム４０１は、メディア状態管理テーブル４０５を基に、なるべく上位の階層に属するメディアから未使用のページを特定して良い。
（ａ７）プログラム４０１は、上記（ａ６）で特定したページをライト先仮想領域に対応付ける。具体的には、例えば、プログラム４０１は、プール管理テーブル４０３に、割り当てたページに対応するＶＶＯＬ  ＬＢＡ６０６として、ライト先仮想領域の先頭ＬＢＡ及び末端ＬＢＡを書き込む。
（ａ８）プログラム４０１は、上記（ａ６）で特定したページに、キャッシュメモリ領域内のライト対象のデータを書き込む（プログラム４０１は、この段階で、ホスト装置１０１にライト完了を応答して良い）。
（ａ９）プログラム４０１は、上記（ａ５）又は（ａ８）において、ページ状態管理テーブル４０２における、データの書込み先のページの最近アクセス時刻５０４及びアクセス頻度５０５を更新する。また、それに伴い、プログラム４０１は、メディア状態管理テーブル４０５における、そのページを有するメディアのアクセス頻度８０５を更新する。【００５８】
（Ｂ）プログラム４０１は、以下の（ｂ１）〜（ｂ８）の処理を含んだリード処理を行う。
（ｂ１）プログラム４０１は、リードコマンドをホスト装置１０１から受信する。
（ｂ２）プログラム４０１は、リードコマンドが有するアクセス先情報を基に、リード元ＶＶＯＬとリード元仮想領域を特定する。
（ｂ３）プログラム４０１が、リード対象のデータがキャッシュメモリ領域に残っているか否かを判断する。
（ｂ４）上記（ｂ３）の判断の結果が肯定的の場合、プログラム４０１は、キャッシュメモリ領域内のリード対象データを、ホスト装置１０１に送信する。この場合、リード元仮想領域に割り当てられているページの最終アクセス時刻５０４及びアクセス頻度５０５（及び、そのページを有するメディアのアクセス頻度８０５）は、更新されない。
（ｂ５）上記（ｂ３）の判断の結果が否定的の場合、プログラム４０１は、ページ状態管理テーブル４０２（又は前述のマッピング管理テーブル）を基に、上記（ｂ２）で特定されたリード元仮想領域にページが割り当てられているかを判断する。
（ｂ６）上記（ｂ５）の判断の結果が否定的であれば、プログラム４０１は、所定のデータ（例えばエラー）をホスト装置１０１に送信する。
（ｂ７）上記（ｂ５）の判断の結果が肯定的であれば、プログラム４０１は、リード元仮想領域に割り当てられているページからデータを読み出し、そのデータをキャッシュメモリ領域に書き込む。そして、プログラム４０１は、キャッシュメモリ領域内のそのデータをホスト装置１０１に送信する。
（ｂ８）プログラム４０１は、上記（ｂ６）において、ページ状態管理テーブル４０２における、データの書込み先のページの最近アクセス時刻５０４及びアクセス頻度５０５を更新する。また、それに伴い、プログラム４０１は、メディア状態管理テーブル４０５における、そのページを有するメディアのアクセス頻度８０５を更新する。【００５９】
（Ｃ）プログラム４０１は、以下の（ｃ１）〜（ｃ３）の処理を含んだメディア追加処理を行う。なお、（ｃ３）の後に、後述の（Ｅ）リバランス処理が行われて良い。
（ｃ１）プログラム４０１は、追加対象のメディアにＩＤを付与する。
（ｃ２）プログラム４０１は、追加対象のメディアをページに分割し、分割により得られた各ページにＩＤを付与する。
（ｃ３）プログラム４０１は、追加対象のメディアに関する情報（メディアの追加先のプールのＩＤ、（ｃ１）で付与されたメディアＩＤ、（ｃ２）で付与されたページＩＤ等）を、テーブル４０２〜４０５に追加する。【００６０】
（Ｄ）プログラム４０１は、以下の（ｄ１）及び（ｄ２）の処理を含んだメディア削除処理を行う。
（ｄ１）プログラム４０１は、削除対象のメディア内の全ての使用ページ（いずれかの仮想領域に割り当てられているページ）内のデータを他のメディアにマイグレーションするリバランス処理を実行する。
（ｄ２）プログラム４０１は、削除対象のメディアに関する情報を、テーブル４０２〜４０５から削除する。【００６１】
（Ｅ）プログラム４０１は、以下の（ｅ１）〜（ｅ４）の処理を含んだリバランス処理を行うことができる。その場合、例えば、メモリ２４３は、管理計算機２０１が有する後述の階層定義テーブルを有していて良い。このリバランス処理は、定期的に行われて良い。また、このリバランス処理は、上記（ｄ１）でのリバランス処理に適用されて良い。
（ｅ１）プログラム４０１は、マイグレーション元のページを見つける。マイグレーション元のページは、不適切に配置されているデータが記憶されているページである。具体的には、マイグレーション元のページは、ページのアクセス頻度５０５がそのページを有する階層のアクセス頻度範囲に属していないページである。なお、マイグレーション元のページは、上記（ｄ１）のリバランス処理では、削除対象のメディア内の使用ページである。
（ｅ２）プログラム４０１は、上記（ｅ１）で見つけたマイグレーション元ページのアクセス頻度５０５が属するアクセス頻度範囲に対応した階層を特定する。
（ｅ３）プログラム４０１は、上記（ｅ２）で特定した階層から、未使用のページを特定する。ここで特定された未使用のページが、マイグレーション先のページである。
（ｅ４）プログラム４０１は、上記（ｅ１）で特定したマイグレーション元ページ内のデータを、上記（ｅ３）で特定したマイグレーション先ページにマイグレーションする。また、プログラム４０１は、マイグレーション元ページが割り当てられている仮想領域に、マイグレーション元ページに代えて、マイグレーション先ページを割り当てる（テーブル４０２及び４０３が更新される）。【００６２】
なお、（Ｅ）のリバランス処理は、アクセス頻度とアクセス頻度範囲との比較に代えて又は加えて、各ページの最近アクセス時刻５０４からどのぐらい経過したかを基に行われても良い。【００６３】
図９は、管理計算機２０１内の記憶資源２１１に記憶されるプログラム及び情報を示す。【００６４】
プログラムとして、ＶＶＯＬ管理プログラム５０１０、性能管理プログラム５０２０、及び状態管理プログラム５０３０が記憶される。情報として、ＶＶＯＬ管理テーブル５０４０及び階層定義テーブル５０５０が記憶される。【００６５】
図１０は、ＶＶＯＬ管理テーブル５０４０を示す。【００６６】
ＶＶＯＬ管理テーブル５０４０は、ＶＶＯＬに関する情報を有する。具体的には、例えば、テーブル５０４０は、ＶＶＯＬ毎に、下記の情報を有する。
＊ＶＶＯＬ  ＩＤ１００１：ＶＶＯＬのＩＤ、
＊サブシステムＩＤ１００２：ＶＶＯＬを有するストレージ装置のＩＤ、
＊プールＩＤ１００３：ＶＶＯＬに関連付けられているプールのＩＤ、
＊ＳＬＯ１００４：ＶＶＯＬのＳＬＯを表す情報、
＊容量１００５：ＶＶＯＬの容量を表す情報、
＊使用容量１００６：ＶＶＯＬを構成する仮想領域のうちページが割り当てられている仮想領域の総記憶容量を表す情報、
＊性能１００７：ＶＶＯＬの性能を表す情報。【００６７】
ＳＬＯ１００４は、性能１００７と比較される閾値又はその閾値の基になる値である。性能１００７は、ＶＶＯＬの平均のレスポンスタイムである。ここで言う「レスポンスタイム」とは、例えば、ＶＶＯＬを指定したアクセスコマンドがストレージ装置に入ってから応答がホスト装置１０１に返されるまでの時間長である。【００６８】
ＶＶＯＬの平均レスポンスタイムは、下記の（１）式により算出することができる。【００６９】
（ＶＶＯＬの平均レスポンスタイム）＝（ＶＶＯＬに割り当てられている全てのページについての、アクセス頻度とレスポンスタイムの積の和）／（ＶＶＯＬに割り当てられている全てのページについてのアクセス頻度の和）・・・（１）。【００７０】
ここで、アクセス頻度の単位は、例えば、ＩＯＰＳ（IO per second）である。【００７１】
例えば、ＶＶＯＬにページ１〜６が割り当てられているとする。ページ１〜６のそれぞれについて、「ページが属する階層／その階層でのアクセス速度／ページのアクセス頻度」は、次の通りであるとする。
ページ１：上位階層（ＳＳＤ）／１／１００、
ページ２：中位階層（ＳＡＳ）／１０／５０、
ページ３：中位階層（ＳＡＳ）／１０／２０、
ページ４：下位階層（ＳＡＴＡ）／２０／１０、
ページ５：下位階層（ＳＡＴＡ）／２０／５、
ページ６：下位階層（ＳＡＴＡ）／２０／０。【００７２】
この場合、（１）式によれば、ＶＶＯＬの平均レスポンスタイムＫは、
Ｋ＝（１００×１＋５０×１０＋２０×１０＋１０×２０＋５×２０＋０×２０）／（１００＋５０＋２０＋１０＋１５）
＝約５．３７
となる。アクセス速度は、後に説明する階層定義テーブル５０５０から分かる。【００７３】
このようにして求められた平均レスポンスタイム（性能）は、ＳＬＯ（又はＳＬＯの所定割合（例えば８０％））と比較される。【００７４】
なお、以下の説明では、ＳＬＯ１００４が大きい／小さい、性能１００７が大きい／小さい、という言い方をするが、それは、ＳＬＯの値が大きい／小さい、性能の値が大きい／小さい、という意味である。性能１００７（及びＳＬＯ１００４）が例えば平均レスポンスタイムの場合、性能１００７（及びＳＬＯ１００４）が大きいということは、性能（及びＳＬＯ）が低いということを意味し、性能１００７（及びＳＬＯ１００４）が小さいということは、性能（及びＳＬＯ）が高いということを意味する。【００７５】
図１１は、階層定義テーブル５０５０を示す。【００７６】
階層定義テーブル５０５０は、階層の定義を表す。具体的には、例えば、テーブル５０５０は、階層毎に、下記の情報を有する。
＊階層タイプ１１０１：階層のタイプを表す情報、
＊メディアタイプ１１０２：階層に属するメディアのタイプを表す情報、
＊速度１１０３：階層に対するアクセスの速度を表す情報、
＊最大アクセス頻度１１０４：階層に対応するアクセス頻度の最大値、
＊コスト１１０５：階層に属するメディアのコストを表す情報。【００７７】
各階層の最大アクセス頻度１１０４により、各階層のアクセス頻度範囲が表されている。具体的には、図１１によれば、上位階層（ＳＳＤ）のアクセス頻度範囲は、２５０００〜２５００（２５００を含まない）であり、中位階層（ＳＡＳ）のアクセス頻度範囲は、２５００〜１２５０（１２５０を含まない）であり、下位階層（ＳＡＴＡ）のアクセス頻度範囲は、１２５０〜０である。【００７８】
以下、実施例１で行われる処理を説明する。【００７９】
実施例１では、不適切なＶＶＯＬが検出される。その場合に、下記の（１）〜（３）の処理が行われる。
（１）不適切なＶＶＯＬに関連付けられているプールに、他のプールから、メディアがマイグレーションされる。マイグレーション元のプールは、マイグレーション先のプールを有するストレージ装置内のプールである。
（２）不適切なＶＶＯＬに割り当てられている全てのページ内のデータが、そのページを有するプールから、別のプールにマイグレーションされる。
（３）上記（１）及び（２）で、不適切なＶＶＯＬが適切なＶＶＯＬにならなければ、不適切なＶＶＯＬに関連付けられているプールにメディアが追加される。【００８０】
また、実施例１では、不適切なメディアが検出される。その場合に、そのメディアを有する階層内でのデータ再配置か、或いは、そのメディアを有する階層にメディアが追加される。【００８１】
以下、実施例１で行われる処理を詳細に説明する。【００８２】
＜仮想ボリューム管理＞。【００８３】
ＶＶＯＬ管理プログラム５０１０が、ＶＶＯＬを管理する。例えば、プログラム５０１０は、管理者からＶＶＯＬの作成の指示を受ける。その際、プログラム５０１０は、ＶＶＯＬの容量及びＳＬＯ等を受ける。プログラム５０１０は、ＶＶＯＬの作成指示に応答して、ＶＶＯＬに関連付けるプール及びプールを有するストレージ装置を決定する。そして、プログラム５０１０は、その決定に従う情報と、ＶＶＯＬの容量及びＳＬＯとを含んだエントリ（レコード）を、ＶＶＯＬ管理テーブル５０４０に追加する。【００８４】
＜状態管理＞。【００８５】
図１２は、第１の状態管理処理の流れを示す。この処理は、例えば定期的に行われる。【００８６】
状態管理プログラム５０３０は、ページ状態管理テーブル４０２をストレージ装置から取得する（ステップＳ１００１）。【００８７】
プログラム５０３０は、取得したテーブル４０２を基に、ＶＶＯＬ管理テーブル５０４０を更新する（Ｓ１００２）。１つのＶＶＯＬを例に採れば、具体的には、下記が行われる。
＊プログラム５０３０は、ＶＶＯＬに割り当てられている全てのページの総記憶容量を、そのＶＶＯＬに対応した使用容量１００６の欄に書き込む。
＊プログラム５０３０は、どの階層から幾つのページがＶＶＯＬに割り当てられているかと、各階層の速度とを基に、ＶＶＯＬの性能を算出する。プログラム５０３０は、算出された性能を表す情報を、ＶＶＯＬに対応した性能１００７の欄に書き込む。【００８８】
プログラム５０３０は、不適切なＶＶＯＬがあるかどうかを判断する（Ｓ１００３）。不適切なＶＶＯＬは、性能１００７がＳＬＯ１００４を満たしていないＶＶＯＬである。具体的には、例えば、不適切なＶＶＯＬは、性能１００７がＳＬＯ１００４と係数ｇとの積より大きいＶＶＯＬ（例えば、平均レスポンスタイムがＳＬＯ１００４と係数ｇとの積より長いＶＶＯＬ）である。なお、係数ｇは０より大きく１以下の数である。ｇ＝１の場合、性能１００７はＳＬＯ１００４それ自体と比較される。【００８９】
Ｓ１００３の判断の結果が肯定的であれば、プログラム５０３０は、アラート１を出力する（Ｓ１００４）。アラート１は、例えば、Ｓ１００３で不適切と判断されたＶＶＯＬのＩＤを有する。【００９０】
図１３は、第２の状態管理処理の流れを示す。この処理は、例えば定期的に行われる。【００９１】
状態管理プログラム５０３０は、メディア状態管理テーブル４０５をストレージ装置から取得する（ステップＳ１１０１）。【００９２】
プログラム５０３０は、取得したテーブル４０５を基に、不適切なメディアがあるかどうかを判断する（Ｓ１１０２）。不適切なメディアは、アクセス頻度８０５がアクセス頻度上限８０４を超えているメディアである。【００９３】
Ｓ１１０２の判断の結果が肯定的であれば、プログラム５０３０は、アラート２を出力する（Ｓ１１０３）。アラート２は、例えば、Ｓ１１０２で不適切と判断されたメディアのＩＤを有する。【００９４】
＜性能管理＞。【００９５】
図１４は、アラート１（第１の状態管理処理で発行されたアラート）を受信した性能管理プログラム５０２０が行う処理の流れを示す。なお、以下の説明では、アラート１の原因になった不適切なＶＶＯＬを、「アラート１−ＶＶＯＬ」と言い、アラート１−ＶＶＯＬに関連付けられているプールを、「アラート１−プール」と言い、アラート１−プールを有するストレージ装置を「アラート１−ストレージ装置」と言う。【００９６】
性能管理プログラム５０２０は、改善目標を決定する（Ｓ１２０１）。改善目標は、例えば、アラート１−ＶＶＯＬの性能が、そのＶＶＯＬのＳＬＯ１０４０と係数ｇとの積より低いこと、である。アラート１−ＶＶＯＬは、例えば、アラート１が有するＶＶＯＬのＩＤから特定される。【００９７】
プログラム５０２０は、Ｓ１２０１で決定した改善目標を、メディアマイグレーションで達成できるか否かを判断する（Ｓ１２０２）。Ｓ１２０２の判断の結果が肯定的であれば、Ｓ１２０２で作成された指示が、アラート１−ストレージ装置に送信される（Ｓ１２０４）。【００９８】
Ｓ１２０２の判断の結果がＮＯであれば、プログラム５０２０は、Ｓ１２０１で決定した改善目標を、ＶＶＯＬマイグレーションで、達成できるか否かを判断する（Ｓ１２０３）。Ｓ１２０３の判断の結果が肯定的であれば、Ｓ１２０３で作成された指示が、アラート１−ストレージ装置に送信される（Ｓ１２０４）。【００９９】
Ｓ１２０３の判断の結果が否定的であれば、Ｓ１２０５が行われる。すなわち、プログラム５０２０は、Ｓ１２０１で決定した改善目標を達成するための追加容量（追加すべき記憶容量）を決定し、決定した追加容量を追加することの指示（以下、メディア追加指示）を作成する。このメディア追加指示が、アラート１−ストレージ装置に送信され、そのストレージ装置において、そのメディア追加指示に従う容量がプールに追加される。Ｓ１２０５では、具体的には、例えば、以下の処理が行われる。
＊プログラム５０２０が、階層定義テーブル５０５を基に、どの階層に幾つのページを追加すれば、Ｓ１２０１で決定した改善目標を達成できるか計算する。ここで、Ｗ１、Ｗ２、Ｗ３が算出されたとする。Ｗ１は、上位階層（ＳＳＤ）に追加する容量、すなわち、上位階層（ＳＳＤ）について算出されたページ数の総記憶容量である。Ｗ２は、中位階層（ＳＡＳ）に追加する容量、すなわち、中位階層（ＳＡＳ）について算出されたページ数の総記憶容量である。Ｗ３は、下位階層（ＳＡＴＡ）に追加する容量、すなわち、下位階層（ＳＡＴＡ）について算出されたページ数の総記憶容量である。
＊プログラム５０２０が、メディア追加指示を作成する。そのメディア追加指示は、前述のＷ１、Ｗ２及びＷ３と、アラート１−プールのＩＤとを有する。Ｓ１２０４で、このメディア追加指示がアラート１−ストレージ装置に送信される。そのストレージ装置において、プール管理プログラム４０１が、Ｗ１以上の総記憶容量の１以上のＳＳＤメディア、Ｗ２以上の総記憶容量の１以上のＳＡＳメディア、及び、Ｗ３以上の総記憶容量の１以上のＳＡＴＡメディアを、メディア追加指示から特定されるプールに追加する。ここでプールに追加されるメディアは、例えば、未使用のメディアである。【０１００】
メディアの追加は、このように自動で行われることに代えて、管理者によって手動で行われても良い。例えば、プログラム５０２０が、算出したＷ１、Ｗ２、Ｗ３を表示し、管理者が、そのＷ１〜Ｗ３を基に、プールに容量を追加しても良い。【０１０１】
以上が、アラート１を受信した場合に行われる処理である。なお、Ｓ１２０３よりもＳ１２０２が先に行われているが、その理由は、メディアマイグレーションのコストの方が、ＶＶＯＬマイグレーションのコストよりも低いためである。「メディアマイグレーション」とは、アラート１−プールとは別のプールを構成するメディアをアラート１−プールにマイグレーションすることである。メディアマイグレーションは、ストレージ装置間で行われても良いが、本実施例では、１つのストレージ装置内で行われる。つまり、メディアのマイグレーション元のプールとメディアのマイグレーション先のプール（アラート１−プール）は、１つのストレージ装置内に存在する。「ＶＶＯＬマイグレーション」とは、ＶＶＯＬに割り当てられている全てのページ内のデータを、アラート１−プールから別のプールにマイグレーションすることである。この場合、マイグレーション対象のＶＶＯＬは、アラート１−プールに代えてマイグレーション先のプールに関連付けられる。ＶＶＯＬマイグレーションは、１つのストレージ装置内で行われても良いし、ストレージ装置間で行われても良い。【０１０２】
図１５は、図１４のＳ１２０２の処理の流れを示す。【０１０３】
プログラム５０２０は、必要メディア量（＝Ｘ）を見積もる（Ｓ１３０１）。具体的には、例えば、プログラム５０２０は、アラート１−ストレージ装置からページ状態管理テーブル４０２を取得し、そのテーブル４０２を基に、どの階層に幾つのページを追加すれば、Ｓ１２０１で決定した改善目標を達成できるか計算する。ここで、Ｘ１、Ｘ２、Ｘ３が算出されたとする。Ｘ１は、上位階層（ＳＳＤ）に追加する容量、すなわち、上位階層（ＳＳＤ）について算出されたページ数の総記憶容量である。Ｘ２は、中位階層（ＳＡＳ）に追加する容量、すなわち、中位階層（ＳＡＳ）について算出されたページ数の総記憶容量である。Ｘ３は、下位階層（ＳＡＴＡ）に追加する容量、すなわち、下位階層（ＳＡＴＡ）について算出されたページ数の総記憶容量である。なお、ページ状態管理テーブル４０２を取得せずに、図１２のＳ１００１で取得されたページ状態管理テーブル４０２が使用されても良い。【０１０４】
プログラム５０２０は、アラート１−プール以外のプールであって、アラート１−ストレージ装置におけるプールの中に、Ｓ１３０４で選択されていないプールがあるか否かを判断する（Ｓ１３０２）。【０１０５】
Ｓ１３０２の判断の結果が肯定的の場合、プログラム５０２０は、アラート１−プール以外のプールから未だ選択されていないプールを選択する（Ｓ１３０４）。【０１０６】
そして、プログラム５０２０は、性能余剰メディア量（＝Ｑ）を算出する（Ｓ１３０５）。具体的には、例えば、以下の処理が行われる。
＊プログラム５０２０は、Ｓ１３０４で選択されたプールについて、Ｓ１３０１と同様の方法で、各階層についての必要メディア量を計算する。
＊プログラム５０２０は、Ｓ１３０４で選択されたプールについて、階層毎に使用容量（仮想領域に割り当てられているページの総記憶容量）を計算する。
＊プログラム５０２０は、階層毎に、算出された必要メディア容量から算出された使用容量を引くことで、階層毎の性能余剰メディア量を計算する。上位階層、中位階層及び下位階層の性能余剰メディア量を、それぞれ、Ｑ１、Ｑ２、Ｑ３とする。【０１０７】
プログラム５０２０は、Ｑ１＞Ｘ１、Ｑ２＞Ｘ２、及びＱ３＞Ｘ３であるか否かを判断する（Ｓ１３０６）。これらのうちの少なくとも１つが違っていれば、この判断の結果は否定的となり、Ｓ１３０２が再度行われる。【０１０８】
Ｓ１３０６の判断の結果が肯定的であれば、プログラム５０２０は、メディアマイグレーション指示を作成する（Ｓ１３０７）。その指示は、例えば、下記の情報を有する。
＊マイグレーション元のプールのＩＤ、
＊マイグレーション先のプール（つまり、アラート１−プール）のＩＤ、
＊各階層について、性能余剰メディア量以上の総記憶容量の１以上のメディア（すなわち、マイグレーション対象の１以上のメディア）のＩＤ。【０１０９】
これらの情報のうち、性能余剰メディア量以上の総記憶容量の１以上のメディア（マイグレーション対象の１以上のメディア）のＩＤは、プール管理テーブル４０３及びＶＯＬ管理テーブル４０４から特定することができる。また、各階層について、マイグレーション対象のメディアは、その階層において、使用ページ（仮想領域に割り当てられているページ）の数が最も少ないメディアである。なお、使用ページを有するメディアがマイグレーション対象のメディアの場合、アラート１−ストレージ装置では、使用ページ内のデータが、マイグレーション対象のメディアではない、同じ階層内のメディアにマイグレーションされた後、マイグレーション対象のメディアが、マイグレーション元のプールから外されて、マイグレーション先のプールに追加される。【０１１０】
Ｓ１３０２の判断の結果が否定的の場合、プログラム５０２０は、各階層について、これまでに算出された性能余剰メディア量の合計が、必要メディア量を超えているか否かを判断する（Ｓ１３０３）。【０１１１】
Ｓ１３０３の判断の結果が肯定的であれば、前述したＳ１３０７が行われる。なお、この場合、Ｓ１３０７で作成される指示は、複数の、マイグレーション元のプールのＩＤを有する。【０１１２】
Ｓ１３０７が行われると、図１４のＳ１２０２の判断結果が肯定的であり、Ｓ１３０３の判断結果が否定的であると（つまりＳ１３０７が行われないと）、図１４のＳ１２０２の判断結果も否定的である。【０１１３】
以上が、図１４のＳ１２０２の処理の流れである。なお、本処理は、プール毎の逐次処理に行われることに代えて、複数のプールについての並行処理であっても良い。【０１１４】
図１６は、図１４のＳ１２０３の処理の流れを示す。【０１１５】
プログラム５０２０は、ストレージシステム１０３内の、アラート１−プール以外のプールの中に、Ｓ１４０１で選択されていないプールがあるか否かを判断する（Ｓ１４０１）。【０１１６】
Ｓ１４０１の判断の結果が肯定的の場合、プログラム５０２０は、アラート１−プール以外のプールから未だ選択されていないプールを選択する（Ｓ１４０２）。【０１１７】
そして、プログラム５０２０は、Ｓ１４０２で選択したプールに、アラート１−ＶＶＯＬの記憶容量以上の空き容量があるか否かを判断する（Ｓ１４０３）。アラート１−ＶＶＯＬの記憶容量は、ＶＶＯＬ管理テーブル５０４０から分かり、Ｓ１４０２で選択したプールの空き容量は、ページ状態管理テーブル４０２から分かる。空き容量は、１以上の未使用のページ（仮想領域に割り当てられていないページ）の総記憶容量である。【０１１８】
Ｓ１４０３の判断の結果が否定的の場合、Ｓ１４０１が再度行われる。【０１１９】
Ｓ１４０３の判断の結果が肯定的の場合、プログラム５０２０は、Ｓ１４０２で選択したプールの分布に、アラート１−ＶＶＯＬの分布を合成する（Ｓ１４０４）。ここで言う「分布」は、アクセス分布、具体的には、アクセス頻度とページ数との関係に従う分布である。より具体的には、例えば、アクセス分布は、アクセス頻度範囲毎に、そのアクセス頻度範囲に該当するページの総数を表す。アクセス頻度範囲は、アクセス頻度それ自体であっても良い。【０１２０】
プログラム５０２０は、Ｓ１４０４での合成後のアクセス分布を基に、アラート１−ＶＶＯＬについての改善目標（図１４のＳ１２０１で決定された目標）を満たし、且つ、Ｓ１４０２で選択したプールに関連付けられている各ＶＶＯＬの性能が、（ＳＬＯ×係数ｇ）以下のままか否かを判断する（Ｓ１４０５）。【０１２１】
Ｓ１４０５の判断の結果が否定的の場合、Ｓ１４０１が再度行われる。【０１２２】
Ｓ１４０５の判断の結果が肯定的の場合、プログラム５０２０は、ＶＶＯＬマイグレーション指示を作成する（Ｓ１４０６）。その指示は、例えば、下記の情報を有する。
＊マイグレーション対象のＶＶＯＬ（つまりアラート１−ＶＶＯＬ）のＩＤ、
＊マイグレーション先のストレージ装置のＩＤ、
＊マイグレーション先のプールのＩＤ。【０１２３】
Ｓ１４０６が行われると、図１４のＳ１２０３の判断結果が肯定的であり、Ｓ１４０１の判断結果が否定的であると（つまりＳ１４０６が行われないと）、図１４のＳ１２０３の判断結果が否定的である。【０１２４】
Ｓ１４０６で作成されたＶＶＯＬマイグレーション指示は、アラート１−ストレージ装置に送信される。そのストレージ装置では、その指示に応答して、プール管理プログラム４０１が、マイグレーション対象のＶＶＯＬに割り当てられている全てのページについて、下記の処理を行う。
＊プログラム４０１が、マイグレーション対象のＶＶＯＬに割り当てられているページ（マイグレーション元のページ）内のデータを、マイグレーション先のストレージ装置におけるマイグレーション先のプール内の未使用のページ（マイグレーション先のページ）にマイグレーションする。
＊プログラム４０１が、マイグレーション元のページが割り当てられていた仮想領域に、マイグレーション元のページに代えてマイグレーション先のページを割り当てる。【０１２５】
以上が、図１４のＳ１２０３の処理の流れである。【０１２６】
図１７は、アラート２（第２の状態管理処理で発行されたアラート）を受信した性能管理プログラム５０２０が行う処理の流れを示す。なお、以下の説明では、アラート２の原因になったメディアを有するプールを、「アラート２−プール」と言い、アラート２−プールを有するストレージ装置を「アラート２−ストレージ装置」と言う。【０１２７】
プログラム５０２０は、メディア状態管理テーブル４０５（例えば、図１３のＳ１１０１で取得されたテーブル４０５）を基に、アラート２−プールにおける各階層について、アクセス頻度の合計がアクセス頻度上限の合計を超えているか否かを判断する（Ｓ１５０１）。具体的には、例えば、プログラム５０２０は、各階層について、以下の処理を行う。
＊プログラム５０２０は、階層に属する全てのメディアをテーブル４０５から特定する。
＊プログラム５０２０は、特定された全てのメディアについて、アクセス頻度上限８０４の合計と、アクセス頻度８０５の合計とを計算する。
＊プログラム５０２０は、アクセス頻度８０５の合計がアクセス頻度上限８０４の合計を超えているか否かを判断する。【０１２８】
Ｓ１５０１の判断の結果が否定的となった階層について、プログラム５０２０は、Ｓ１５０２を行う。すなわち、プログラム５０２０は、一つの階層において、データ再配置を行う。例えば、一つの階層における複数のデータが、その一つの階層に属する複数のメディアに均等に配置されるよう、アラート２の原因となったメディアに集中しているデータが、そのメディアと同じ階層における他のメディアにマイグレーションされる。【０１２９】
Ｓ１５０１の判断の結果が肯定的となった階層について、プログラム５０２０は、図１４のＳ１２０５と同様の処理を行う。具体的には、例えば、プログラム５０２０は、その階層に容量を追加することの指示を作成しその指示をアラート２−ストレージ装置に送信する、又は、その階層に追加する容量を表示する。
【実施例２】
【０１３０】
以下、本発明の実施例２を説明する。その際、実施例１との相違点を主に説明し、実施例１との共通点については説明を省略或いは簡略する。【０１３１】
実施例１では、現実に問題が生じているＶＶＯＬ（性能１００７がＳＬＯ１００４と係数ｇとの積を超えているＶＶＯＬ）が、不適切なＶＶＯＬとして検出されるが、実施例２では、現実に問題は生じていないが将来問題が生じる可能性が高いＶＶＯＬ（性能１００７がＳＬＯ１００４と係数ｇとの積を将来超える可能性の高いＶＶＯＬ）が、不適切なＶＶＯＬとして検出される。そして、そのＶＶＯＬに割り当てられている全てのページ内のデータが、それらのページを有するプールから別のプールにマイグレーションされる。これにより、将来問題が生じる可能性を低減することができる。【０１３２】
以下、実施例２を詳細に説明する。【０１３３】
図１８は、実施例２に係るＶＶＯＬ管理テーブル２００４を示す。【０１３４】
このテーブル２００４は、図１０に示したテーブル５０４０が有する情報１００１〜１００７の他に、ＶＶＯＬ毎に、アクセス分布１００８を有する。アクセス分布１００８は、アクセス頻度範囲毎に、そのアクセス頻度範囲に該当するページの総数とページ割合を表す。ページ割合は、ＶＶＯＬに割り当てられているページの総数に対する、アクセス頻度範囲に該当するページの総数の割合である。図では、アクセス頻度範囲のサイズは、２５０であるが、アクセス頻度範囲のサイズは、例えば、１以上で整数であれば何でも良い。【０１３５】
ＶＶＯＬ管理プログラム５０１０が、ページ状態管理テーブル４０２を基に、ＶＶＯＬ毎のアクセス分布１００８を算出することができる。【０１３６】
実施例２では、性能管理プログラム５０２０が、図１９に示す処理を行う。【０１３７】
図１９は、実施例２に係る性能管理プログラム５０２０が行うリバランス処理の流れを示す。【０１３８】
プログラム５０２０は、ＶＶＯＬ管理テーブル２００４を基に、不適切なＶＶＯＬがあるか否かを判断する（Ｓ２１０１）。ここで言う「不適切なＶＶＯＬ」は、相対的にＳＬＯ１００４が小さいのに相対的に性能１００７（平均レスポンスタイム）が大きいＶＶＯＬである。例えば、１つのプールに、下記の３つのＶＶＯＬが関連付けられていた場合、ＶＶＯＬ１１が、性能１００７がＳＬＯ１００４と係数ｇとの積を超えていないものの、不適切なＶＶＯＬであると検出される。なぜなら、ＶＶＯＬ１１のＳＬＯは、ＶＶＯＬ１３のＳＬＯより小さいのに、ＶＶＯＬ  １１の性能が、ＶＶＯＬ１３の性能より大きいからである。
ＶＶＯＬ１１      ＳＬＯ：１６．０、性能：１４．１
ＶＶＯＬ１２      ＳＬＯ：１２．０、性能：  ４．５
ＶＶＯＬ１３      ＳＬＯ：１８．０、性能：１２．２。【０１３９】
なお、不適切なＶＶＯＬの検出には、下記の（ｉ）及び（ｉｉ）の一方又は両方が採用されても良い。
（ｉ）ＳＬＯが相対的に低い第１のＶＶＯＬの性能が、ＳＬＯが相対的に高い第２のＶＶＯＬの性能より高くても、その差が、所定の閾値（０より大きい値）以下であれば、第１のＶＶＯＬは、不適切なＶＶＯＬとして検出されなくて良い。具体的には、例えば、所定の閾値として２．０が設定されている場合、ＶＶＯＬ１１は、不適切なＶＶＯＬとして検出されない。なぜなら、ＶＶＯＬ１１の性能とＶＶＯＬ１３の性能の差は１．９であり、それは、閾値２．０以下であるからである。
（ｉｉ）不適切なＶＶＯＬ検出には、ＶＶＯＬ毎の履歴情報を基に決定されても良い。履歴情報の一例を、図２０に示す。履歴情報２００１は、例えば、ＶＶＯＬにどの時点でどの階層から幾つのページが割り当てられていたかを表す情報である。また、履歴情報２００１は、複数の時点での階層毎の使用ページ数を基に集計された、階層毎の使用ページ数を表す情報（以下、階層毎の集計情報）２００２を有する。この履歴情報２００１（例えば階層毎の集計情報２００２）を基に、ＶＶＯＬの性能１００７が補正され、各ＶＶＯＬの補正後の性能１００７を用いて、ＶＶＯＬ同士の性能差が算出されても良い。履歴情報２００１は、例えば、プール管理テーブル４０３を基にＶＶＯＬ管理プログラム５０１０によって更新されて良い。また、履歴情報２００１は、各時点についての重み係数を表す情報２００３を有していても良い（図２０によれば、現在に近い時点ほど、重み係数が大きい）。ＶＶＯＬの性能１００７は、各時点の階層毎のページ数に加えて、各時点の重み係数を用いて、補正されても良い。【０１４０】
Ｓ２１０１の判断の結果が否定的であれば、一定時間待った後（Ｓ２１０２）、Ｓ２１０１が再度行われる。【０１４１】
Ｓ２１０１の判断の結果が肯定的であれば、プログラム５０２０が、不適切なＶＶＯＬに関連付けられているプール以外のプール（ストレージシステム１０３におけるプール）でＳ２１０５が行われていないプール（未処理のプール）があるか否かを判断する（Ｓ２１０３）。【０１４２】
Ｓ２１０３の判断の結果が否定的であれば、プログラム５０２０は、アラートを発行する（Ｓ２１０４）。なぜなら、後述の説明から分かるように、不適切なＶＶＯＬがあるにも関わらず、適切なマイグレーション先のプールが見つからなかったからである。なお、Ｓ２１０４に代えて、プログラム５０２０が、新規にプールをストレージ装置に作成させ、その新規のプールについて、Ｓ２１０５が行われても良い。Ｓ２１０４の後、Ｓ２１０２が行われる。【０１４３】
Ｓ２１０３の判断の結果が肯定的であれば、プログラム５０２０は、未処理のプールを１つ選択し、選択したプールに、不適切なＶＶＯＬの記憶容量以上の空き容量があるか否かを判断する（Ｓ２１０５）。Ｓ２１０５の判断の結果が否定的であれば、Ｓ２１０３が再度行われる。【０１４４】
Ｓ２１０５の判断の結果が肯定的であれば、プログラム５０２０は、不適切なＶＶＯＬに割り当てられている全てのページをＳ２１０５で選択したプールにマイグレーションしたと仮定した場合の、その選択したプール（マイグレーション先プール候補）に関連付けられている各ＶＶＯＬの性能１００７を予測する（Ｓ２１０６）。Ｓ２１０６では、具体的には、例えば、下記の処理が行われる。
（ｊ１）プログラム５０２０が、管理計算機２０１内の記憶資源２１１に、図２１に示すＶＶＯＬマイグレーション検証テーブル２１０１を用意する。テーブル２１０１は、マイグレーション先プール候補に関連付けられている各ＶＶＯＬと、不適切なＶＶＯＬ（ＶＶＯＬＸ）とについて、下記の情報を有する。
＊ＶＶＯＬ  ＩＤ２１１１：ＶＶＯＬのＩＤ、
＊アクセス分布２１１２：ＶＶＯＬのアクセス分布１００８（図１８参照）と同じ情報、
＊合計２１１３：ＶＶＯＬに割り当てられているページ（使用ページ）の総数、
＊メディア比２１１４：合計２１１３に対する、階層毎の使用ページの総数の割合、
＊性能２１１５：ＶＶＯＬの性能１００７（図１８参照）と同じ値。
＊ＳＬＯ２１１６：ＶＶＯＬの性能１００４（図１８参照）と同じ値。
（ｊ２）プログラム５０２０が、テーブル２１０１に登録されている全てのアクセス分布２１１２を基に、アクセス頻度範囲毎の総使用ページ数を算出する。例えば、テーブル２１０１に登録されているＶＶＯＬ  ＩＤ２１１１が、ＶＶＯＬ１、ＶＶＯＬ２、ＶＶＯＬ３、ＶＶＯＬＸの４つであり、且つ、アクセス頻度範囲「５００−７４９」が、３０００、２０００、２０００、１５００であった場合、アクセス頻度範囲「５００−７４９」の総使用ページ数は、３０００＋２０００＋２０００＋１５００＝８５００となる。
（ｊ３）プログラム５０２０が、マイグレーション先プール候補における階層毎のページ群を、アクセス頻度範囲毎の総使用ページ数に応じて、割り振る。その際、アクセス頻度範囲が高いページが割り当てられている仮想領域ほど、上位の階層のページが優先的に割り当てられると仮定される。具体的には、例えば、上位階層を構成するページの数が１００００、中位階層を構成するページの数が４００００、下位階層を構成するページの数が５００００であるとする。１番目に高いアクセス頻度範囲「２５００以上」の総使用ページ数が６０００の場合、上位階層の１００００個のページのうちの６０００個のページに、アクセス頻度範囲「２５００以上」に属するアクセス頻度の６０００個のページ内のデータが格納されると仮定される。２番目に高いアクセス頻度範囲「２２５０以上２２４９以下」の総使用ページ数が９０００の場合、上位階層の１００００個のページのうちの残りの４０００個のページに、アクセス頻度範囲「２２５０以上２２４９以下」に属するアクセス頻度の８０００個のページのうちの４０００個のページ内のデータが格納されると仮定され、中位階層の４００００個のページのうちの５０００個のページに、アクセス頻度範囲「２２５０以上２２４９以下」に属するアクセス頻度の残りの５０００個のページ内のデータが格納されると仮定される。その際、上位階層の４０００個のページは、アクセス頻度範囲「２２５０以上２２４９以下」にアクセス頻度が属する使用ページ数の比（ＶＶＯＬ１：ＶＶＯＬ２：ＶＶＯＬ３：ＶＶＯＬＸ）を基に割り振られる。
（ｊ４）プログラム５０２０が、上記（ｊ３）の結果を基に、ＶＶＯＬ１〜３及びＶＶＯＬＸについてメディア比２１１４を更新する。更新後の値が、図２１に、記号「->」の後に示されている。
（ｊ５）プログラム５０２０が、ＶＶＯＬ１〜３及びＶＶＯＬＸについて、更新後のメディア比２１１４を基に、マイグレーションが行われたと仮定した場合の性能２１１５を算出する。その性能２１１５の値が、図２１に、記号「->」の後に示されている。マイグレーション先プール候補には、ＶＶＯＬＸが新たに関連付けられると仮定されているので、ＶＶＯＬＸを新たに関連付けることの影響で、ＶＶＯＬ１〜３の性能２１１５は、図２１に示す通り悪化する（平均レスポンスタイムが長くなる）。【０１４５】
プログラム５０２０は、ＶＶＯＬマイグレーション検証テーブル２１０１を基に、マイグレーション先候補プールに関連付けられているＶＶＯＬ（上記の例によれば、ＶＶＯＬ１〜３及びＶＶＯＬＸ）に、下記（ａ）及び（ｂ）のいずれかのＶＶＯＬがあるか否かを判断する（Ｓ２１０７）。
（ａ）性能２１１５がＳＬＯ２１１６と係数ｇとの閾値を超えるＶＶＯＬ、
（ｂ）実施例２における前述の不適切なＶＶＯＬ（すなわち、相対的にＳＬＯ２１１６が小さいのに相対的に性能２１１５（平均レスポンスタイム）が大きいＶＶＯＬ）。【０１４６】
Ｓ２１０７の判断の結果が否定的であれば、Ｓ２１０３が再度行われる。【０１４７】
Ｓ２１０７の判断の結果が肯定的であれば、プログラム５０２０は、下位の情報を有するＶＶＯＬマイグレーション指示を作成し、不適切なＶＶＯＬを有するストレージ装置に、その指示を送信する（Ｓ２１０８）。
＊マイグレーション対象のＶＶＯＬ（つまり、不適切なＶＶＯＬ）のＩＤ、
＊マイグレーション先プール候補を有するストレージ装置のＩＤ、
＊マイグレーション先プール（マイグレーション先プール候補）のＩＤ。【０１４８】
そのＶＶＯＬマイグレーション指示に応答して、不適切なＶＶＯＬに割り当てられている全てのページ内のデータが、マイグレーション先プールにマイグレーションされる。なお、その指示は、Ｓ２１０６の予測に従う情報を含んで良い。例えば、不適切なＶＶＯＬに割り当てられている全てのページのうち、アクセス頻度範囲「２５００以上」に属するアクセス頻度のページ内のデータは、マイグレーション先プールにおける上位階層におけるページにマイグレーションされる、ことを表す情報が、ＶＶＯＬマイグレーション指示に含まれて良い。【０１４９】
管理者から終了指示が入力された場合（Ｓ２１０９：ＹＥＳ）、このリバランス処理が終了する。管理者から終了指示が無ければ（Ｓ２１０９：ＮＯ）、Ｓ２１０８が行われて一定時間待った後に（Ｓ２１０２）、Ｓ２１０１が再度行われる。【０１５０】
以上が、実施例２の説明である。【０１５１】
なお、実施例２では、不適切なＶＶＯＬは、将来問題が生じる可能性が高いＶＶＯＬを意味する定義であれば、相対的にＳＬＯが小さいのに相対的に性能（平均レスポンスタイム）が大きいＶＶＯＬであることに代えて又は加えて、他の定義であっても良い。例えば、不適切なＶＶＯＬとしは、ＳＬＯが大きいのに性能が小さいＶＶＯＬで良い。具体的には、例えば、不適切なＶＶＯＬは、性能がＳＬＯの５０％より小さいＶＶＯＬが不適切なＶＶＯＬとして検出されてよい。この場合、ＳＬＯが１８．０であれば、平均レスポンスタイムが９．０以下のＶＶＯＬが、不適切なＶＶＯＬである。
【実施例３】
【０１５２】
以下、本発明の実施例３を説明する。その際、実施例２との相違点を主に説明し、実施例２との共通点については説明を省略或いは簡略する。【０１５３】
実施例３では、ＳＬＯとアクセス分布の両方が類似している複数のＶＶＯＬが同一のプールに関連付けられるリバランス処理が行われる。そのリバランス処理は、管理計算機２０１内の性能管理プログラム５０２０によって行われる。【０１５４】
図２２は、実施例３に係る性能管理プログラム５０２０が行うリバランス処理の流れを示す。【０１５５】
プログラム５０２０は、クラスタリング、すなわち、ＳＬＯとアクセス分布が類似している複数のＶＶＯＬが同じグループに属するようなグルーピングを行う（Ｓ２６０１）。具体的には、例えば、下記の処理（ｍ１）及び（ｍ２）が行われる。
（ｍ１）プログラム５０２０は、ストレージシステム１０３内の全てのＶＶＯＬ（Ｎ個のＶＶＯＬ）を、ＳＬＯが類似しているＭ個のＶＶＯＬ単位で、グルーピングする（Ｎ＞Ｍ、Ｎ及びＭは所定値且つ自然数）。例えば、Ｎ＝１００００でＭ＝１００であれば、１００個のＶＶＯＬ群ができる。この段階での各ＶＶＯＬ群を、「ＶＶＯＬ群ｘ」と表す。この（ｍ１）では、ＳＬＯが近いＭ個のＶＶＯＬずつグルーピングされるので、或るＶＶＯＬ群ｘについてのＳＬＯの最大値（及び最小値）と、別のＶＶＯＬ群ｘについてのＳＬＯの最大値（及び最小値）は異なることがある。
（ｍ２）プログラム５０２０は、各ＶＶＯＬ群ｘについて、Ｍ個のＶＶＯＬを、アクセス分布が類似しているＰ個のＶＶＯＬ単位で、グルーピングする（Ｍ＞Ｐ、Ｐは所定値且つ自然数）。この段階での各ＶＶＯＬ群を、「ＶＶＯＬ群ｙ」と表す。つまり、ストレージシステム内のＮ個のＶＶＯＬは、複数のＶＶＯＬ群ｙにグルーピングされる。なお、類似度として、例えば、残差の二乗和が採用される。残差の二乗和が最小になるようにグルーピングが行われる。４個のＶＶＯＬ（ＶＶＯＬ１〜ＶＶＯＬ４）で構成されたＶＶＯＬ群ｘを２個のＶＶＯＬずつにグルーピングすることを例に採ると、次のようにグルーピングが行われる。
＊ＶＶＯＬ１〜４のアクセス分布が「１」で正規化されたものが、図２３に示す通りであるとする。また、図２３のアクセス分布のグラフを、図２４に示す（図２４では、ＶＶＯＬが「vol」と表記されている）。
＊各ＶＶＯＬ同士の類似度が算出される。類似度は、例えば残差の二乗和（アクセス頻度範囲毎の使用ページ数（正規化された値）の差の二乗の合計）である。例えば、ＶＶＯＬ１とＶＶＯＬ２の類似度は、
（０．６−０．５）２＋（０．０８−０．０９）２＋  …  ＋（０．０４−０．０６）２＝０．０１１８
である。各ＶＶＯＬ同士の類似度は、下記の通りとなる。正確な類似度をカッコ内に示し、正確な類似度の小数点第３位を四捨五入した値をカッコ外に示す。
ＶＶＯＬ１−ＶＶＯＬ２：０．０１（０．０１１８）
ＶＶＯＬ１−ＶＶＯＬ３：０．２１（０．２０８）
ＶＶＯＬ１−ＶＶＯＬ４：０．３７（０．３７１２）
ＶＶＯＬ２−ＶＶＯＬ３：０．１３（０．１２６４）
ＶＶＯＬ２−ＶＶＯＬ４：０．２６（０．２６１８）
ＶＶＯＬ３−ＶＶＯＬ４：０．０４（０．０３８８）
＊プログラム５０２０は、類似度の合計が最小になる組合せを見つける。上記の例によれば、ＶＶＯＬ１−ＶＶＯＬ２：０．０１と、ＶＶＯＬ３−ＶＶＯＬ４：０．０４の組合せである０．５が最小である。このため、プログラム５０２０は、ＶＶＯＬ１〜ＶＶＯＬ４を、ＶＶＯＬ１，２で構成されたＶＶＯＬ群ｙと、ＶＶＯＬ３，４で構成されたＶＶＯＬ群ｙに、グルーピングすることを決定する。なお、ＶＶＯＬ１，２のアクセス分布同士と、ＶＶＯＬ３，４のアクセス分布同士が、ＶＶＯＬ１又は２のアクセス分布とＶＶＯＬ３又は４のアクセス分布同士に比べて類似していることは、図２４のグラフからも明らかである。【０１５６】
再び図２２を参照する。プログラム５０２０は、マイグレーションプランを作成する（Ｓ２６０２）。そのプランは、下記の条件を満たすプランである。
＊ＶＶＯＬマイグレーションでマイグレーションされるデータの量が最小になるようなプラン。具体的には、例えば、プログラム５０２０は、ＶＶＯＬ管理テーブル２００４の使用容量１００５（図１８参照）を基に、マイグレーション対象のＶＶＯＬの数ではなく、マイグレーションされるデータの総量が最小になるようなマイグレーションプランを作成する。
＊１つのプールに、１つのＶＶＯＬ群ｙだけが関連付けられる。すなわち、１つのプールには、ＳＬＯ及びアクセス分布が類似していないＶＶＯＬは関連付けられない。【０１５７】
プログラム５０２０は、Ｓ２６０２で作成したプランに従うマイグレーションを実行すべきか否かを判断する（Ｓ２６０３）。例えば、プログラム５０２０は、そのプランに従うマイグレーションを行うと、性能がＳＬＯと係数ｇとの積を越えるＶＶＯＬが出ないか否かを判断する。【０１５８】
Ｓ２６０３の判断の結果が否定的であれば、Ｓ２６０４がスキップされ、Ｓ２６０５が行われる。【０１５９】
Ｓ２６０３の判断の結果が肯定的であれば、プログラム５０２０は、Ｓ２６０２で作成したプランに従うＶＶＯＬマイグレーション指示を作成する。例えば、その指示は、マイグレーション対象のＶＶＯＬ、或いは、マイグレーション対象のＶＶＯＬを有するストレージ装置別に作成される。プログラム５０２０は、作成したＶＶＯＬマイグレーション指示を、マイグレーション対象のＶＶＯＬを有するストレージ装置に送信する。これにより、Ｓ２６０２で作成したプランに従うマイグレーションが行われる。【０１６０】
プログラム５０２０は、終了指示を管理者から入力された場合（Ｓ２６０５：ＹＥＳ）、このリバランス処理を終了し、終了指示が管理者から入力されていなければ（Ｓ２６０５：ＮＯ）、一定時間待って（Ｓ２６０６）、Ｓ２６０１を再度行う。【０１６１】
以上が、実施例３の説明である。【０１６２】
なお、ＶＶＯＬ群ｘ及びＶＶＯＬ群ｙのうちの少なくとも一方は、ＶＶＯＬの数は所定値でなくて良い。例えば、複数のＳＬＯ範囲が定義されていて、１つのＳＬＯ範囲につき、そのＳＬＯ範囲に属するＳＬＯの全てのＶＶＯＬで、ＶＶＯＬ群ｘが構成されても良い。つまり、複数のＶＶＯＬ群ｘには、ＶＶＯＬの数が異なる二以上のＶＶＯＬ群ｘがあっても良い。同様に、複数のＶＶＯＬ群ｙには、ＶＶＯＬの数が異なる二以上のＶＶＯＬ群ｙがあっても良い。【０１６３】
また、マイグレーションプランは、マイグレーション対象のデータの総量がなるべく小さくなることに代えて又は加えて、ＶＶＯＬ群ｙのアクセス分布と、各プールの構成（例えば各階層の容量）とに基づいて、決定されて良い。具体的には、例えば、アクセス頻度が高い使用ページが他のＶＶＯＬ群ｙよりも多く割り当てられているＶＶＯＬ群ｙには、他のＶＶＯＬ群ｙが関連付けられるプールよりも上位階層の容量が大きい（又はプールにおける比率が高い）プールが関連付けられ、アクセス頻度が小さい使用ページ数が他のＶＶＯＬ群ｙより多く割り当てられているＶＶＯＬ群ｙには、他のＶＶＯＬ群ｙが関連付けられるプールよりも下位階層の容量が大きい（又はプールにおける比率が高い）プールが関連付けられるようなプランが作成されて良い。或いは、例えば、プログラム５０２０は、プランの作成において、マイグレーション先のプールを決定し、ＶＶＯＬ群ｙについてのアクセス分布からオーバープロビジョニング（或いは、性能又は容量の不足）が予測されれば、どのプールのどの階層にどれだけの容量を追加又は削除するか（例えばどのメディアを追加又は削除するか）を決定して良い。その決定した内容は、Ｓ２６０４のマイグレーションの実行前又は後に、管理者に通知されて良い。
【実施例４】
【０１６４】
実施例４では、ＳＬＯが、ＶＶＯＬ毎ではなく、アクセス元毎に用意される。【０１６５】
図２５は、実施例４に係るＶＶＯＬ管理テーブル２７０１を示す。【０１６６】
本実施例では、アクセス元は、ホスト装置１０１で実行されるアプリケーションプログラムである。テーブル２７０１には、アプリケーションプログラム毎に、図１８を参照して説明した情報１００１、１００２、…の他に、下記の情報を有する。
＊ＡＰＰ  ＩＤ２５１１：アプリケーションプログラムのＩＤ、
＊ＬＢＡ範囲：アプリケーションプログラムからアクセス可能なＶＶＯＬのＬＢＡ範囲を表す情報。【０１６７】
テーブル２７０１において、ＳＬＯ１００４及び性能１００７（図２５には示されていない）は、アクセス元についてのＳＬＯ１００４及び性能１００７である。このため、実施例４では、不適切なＶＶＯＬに代えて不適切なアプリケーションプログラムが検出されることになる。不適切なアプリケーションプログラムが検出された場合、実施例１〜３のうちの少なくとも１つの実施例におけるリバランス処理が行われ、それにより、不適切なアプリケーションプログラムが適切なアプリケーションプログラムとなる。【０１６８】
図２５によれば、１つのアプリケーションプログラム（例えば、ＡＰＰ１）が複数のＶＶＯＬ（例えば、ＶＶＯＬ１、ＶＶＯＬ３）にアクセス可能なケース（以下、第１のケース）もあれば、複数のアプリケーションプログラム（例えば、ＡＰＰ３、ＡＰＰ４）が、ＶＶＯＬ（例えば、ＶＶＯＬ２）を共有するケース（以下、第２のケース）もある。ＶＶＯＬが複数のアプリケーションプログラムから共有される場合、ＶＶＯＬのどのＬＢＡ範囲にどのアプリケーションプログラムがアクセス可能であるかが、テーブル２７０１に定義されている。【０１６９】
第１のケースでは、１つのアプリケーションプログラムに対応したＶＶＯＬ毎に、実施例１〜３の少なくとも１つに従う処理を行うことができる。【０１７０】
第２のケースでは、複数のアプリケーションプログラムに共有されるＶＶＯＬ（複数のＳＬＯ１００４が対応付けられたＶＶＯＬ）について、いずれか１つのＳＬＯ１００４（例えば、対応付けられている複数のＳＬＯ１００４のうちの最小のＳＬＯ１００４）を用いて、実施例１〜３の少なくとも１つに従う処理を行うことができる。【０１７１】
アクセス元は、アプリケーションプログラムに代えて又は加えて、仮想計算機或いはホスト装置であっても良い。【０１７２】
以上、本発明の幾つかの実施例を説明したが、本発明は、これらの実施例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、仮想領域に対するアクセスが発生した場合には、その仮想領域に割り当てられているページにアクセスしたか否かに関わらず、仮想領域に対応したアクセス頻度５０５は更新されても良い。また、仮想領域に対するアクセスが特定種類のアクセスの場合（例えばリードの場合）、仮想領域に対応したアクセス頻度５０５は更新されなくても良い。
【符号の説明】
【０１７３】
１０１…ホスト装置  ２０１…管理計算機  １０３…ストレージシステム
【図１】
2011092738.tif 000003
【図２】
2011092738.tif 000004
【図３】
2011092738.tif 000005
【図４】
2011092738.tif 000006
【図５】
2011092738.tif 000007
【図６】
2011092738.tif 000008
【図７】
2011092738.tif 000009
【図８】
2011092738.tif 000010
【図９】
2011092738.tif 000011
【図１０】
2011092738.tif 000012
【図１１】
2011092738.tif 000013
【図１２】
2011092738.tif 000014
【図１３】
2011092738.tif 000015
【図１４】
2011092738.tif 000016
【図１５】
2011092738.tif 000017
【図１６】
2011092738.tif 000018
【図１７】
2011092738.tif 000019
【図１８】
2011092738.tif 000020
【図１９】
2011092738.tif 000021
【図２０】
2011092738.tif 000022
【図２１】
2011092738.tif 000023
【図２２】
2011092738.tif 000024
【図２３】
2011092738.tif 000025
【図２４】
2011092738.tif 000026
【図２５】
2011092738.tif 000027
【国際調査報告】
2011092738.tif 000028
2011092738.tif 000029