(57)【特許請求の範囲】
【請求項１】
書込み要求を発行するホスト計算機と通信することができる記憶装置システムにおいて、
複数の記憶領域から構成された複数の記憶領域プールと、
前記複数の記憶領域プールに関連付けられた複数の論理ボリュームと、
前記ホスト計算機から論理ボリュームに対する書込み要求を受け、前記論理ボリュームに関連付けられている記憶領域プール内の一以上の記憶領域を前記論理ボリュームに割り当て、前記割り当てた一以上の記憶領域に、前記受けた書込み要求に従うデータを書き込むコントローラと
を備え、
前記複数の記憶領域には、一以上の属性を有する記憶領域と複数の属性を有する記憶領域とが含まれており、
各記憶領域プールには、その記憶領域プールを構成する二以上の記憶領域に共通する少なくとも一つの属性が割り当てられており、重複部分と、非重複部分とがあり、
各記憶領域プールの前記重複部分は、その記憶領域プールに割り当てられている属性の他に、他の記憶領域プールに割り当てられている属性を有するが故に、その記憶領域プールと前記他の記憶領域プールの構成要素になっている重複記憶領域の集合であり、
各記憶領域プールの前記非重複部分は、その記憶領域プールに割り当てられている属性を有するが、他の記憶領域プールに割り当てられている属性を有しないが故に、その記憶領域プールのみを構成する非重複記憶領域の集合であり、
前記コントローラが、或る論理ボリュームに関連付けられている或る記憶領域プールの中から、前記或る論理ボリュームに割り当てられていない非重複記憶領域を選択し、前記選択された非重複記憶領域を前記或る論理ボリュームに割り当て、前記選択された非重複記憶領域に、前記或る論理ボリュームに割り当てられている前記重複記憶領域内のデータを移行し、前記或る論理ボリュームから前記移行元の重複記憶領域の割り当てを外す、
記憶装置システム。
【請求項２】
前記或る記憶領域プールは、前記ホスト計算機のユーザ又は他の計算機のユーザから指定された空きを確保すべき記憶領域プールとの前記重複部分を有する別の記憶領域プールである、
請求項１記載の記憶装置システム。
【請求項３】
前記或る記憶領域プールは、未割り当ての記憶領域の数が所定数以下になった記憶領域プールとの重複部分を有する別の記憶領域プールである、
請求項１記載の記憶装置システム。
【請求項４】
前記或る記憶領域プールは、非重複記憶領域の数が増えた記憶領域プールである、
請求項１記載の記憶装置システム。
【請求項５】
前記複数の記憶領域は、複数の物理的な記憶装置に備えられているものであり、
各記憶領域の属性は、その記憶領域を備える物理的な記憶装置の属性と同一であり、
新たに物理的な記憶装置が搭載された場合に、前記搭載された物理的な記憶装置の属性に基づいて、前記非重複記憶領域の数が増えた記憶領域プールが検知される、
請求項４記載の記憶装置システム。
【請求項６】
前記物理的な記憶装置は、ハードディスクドライブであり、
前記物理的な記憶装置の属性とは、前記ハードディスクドライブの種類である、
請求項５記載の記憶装置システム。
【請求項７】
二以上のＲＡＩＤグループが構成されており、
各ＲＡＩＤグループは、前記複数の物理的な記憶装置のうちの二以上の物理的な記憶装置によって構成されており、
前記各ＲＡＩＤグループには、或るＲＡＩＤレベルが割り当てられており、
前記物理的な記憶装置の属性とは、その物理的な記憶装置が構成要素となっているＲＡＩＤグループのＲＡＩＤレベルである、
請求項５記載の記憶装置システム。
【請求項８】
前記コントローラが非重複記憶領域に格納されているデータを削除した場合に、削除されたデータを格納していた非重複記憶領域を備える記憶領域プールが、非重複記憶領域の数が増えた記憶領域プールとして検知される、
請求項４記載の記憶装置システム。
【請求項９】
前記或る記憶領域プールは、互いの重複部分を備える第一と第二の記憶領域プールのうち、トレンドが低いと判別された方の記憶領域プールである、
請求項１記載の記憶装置システム。
【請求項１０】
前記第一の記憶領域プールよりも前記第二の記憶領域プールの方がトレンドが高い場合とは、以下の（１）又は（２）の場合、
（１）前記第二の記憶領域プールを構成する記憶領域群に対する割り当てられている記憶領域の割合である使用率が、前記第一の記憶領域プールの使用率よりも上昇傾向にある場合、
（２）前記第二の記憶領域プールに関連付けられている第二の論理ボリュームに対するアクセス頻度が、前記第一の記憶領域プールに関連付けられている第一の論理ボリュームに対するアクセス頻度よりも上昇傾向にある場合、
である、
請求項９記載の記憶装置システム。
【請求項１１】
前記コントローラは、前記論理ボリュームに関連付けられている記憶領域プールのうち、重複記憶領域よりも非重複記憶領域を優先的に前記論理ボリュームに割り当てる、
請求項１記載の記憶装置システム。
【請求項１２】
前記コントローラが、
前記ホスト計算機から論理ボリュームに対する書込み要求を受け、
前記論理ボリュームに関連付けられている記憶領域プールの中から、重複記憶領域よりも非重複記憶領域を優先的に前記論理ボリュームに割り当て、
前記割り当てた記憶領域に、前記受けた書込み要求に従うデータを書き込む、
請求項１記載の記憶装置システム。
【請求項１３】
一以上の属性を有する記憶領域と複数の属性を有する記憶領域とが含まれた複数の記憶領域があり、
二以上の記憶領域から構成された複数の記憶領域プールがあり、
各記憶領域プールには、その記憶領域プールを構成する二以上の記憶領域に共通する少なくとも一つの属性が割り当てられており、重複部分と、非重複部分とがあり、
各記憶領域プールの前記重複部分は、その記憶領域プールに割り当てられている属性の他に、他の記憶領域プールに割り当てられている属性を有するが故に、その記憶領域プールと前記他の記憶領域プールの構成要素にもなっている重複記憶領域の集合であり、
各記憶領域プールの前記非重複部分は、その記憶領域プールに割り当てられている属性を有するが、他の記憶領域プールに割り当てられている属性を有しないが故に、その記憶領域プールのみを構成する非重複記憶領域の集合であり、
複数の論理ボリュームのうちのいずれかに対する書込み要求をホスト計算機から受け、
前記書込み要求に従うデータの書込み先となる論理ボリュームに関連付けられている記憶領域プールから一以上の記憶領域を選択し、
前記選択された一以上の記憶領域を、前記データの書込み先となる論理ボリュームに割り当て、
前記割り当てた一以上の記憶領域に、前記データを書き込み、
或る論理ボリュームに関連付けられている或る記憶領域プールの中から、前記或る論理ボリュームに割り当てられていない非重複記憶領域を選択し、
前記選択された非重複記憶領域を前記或る論理ボリュームに割り当て、
前記選択された非重複記憶領域に、前記或る論理ボリュームに割り当てられている前記重複記憶領域内のデータを移行し、
前記或る論理ボリュームから前記移行元の重複記憶領域の割り当てを外す、
記憶制御方法。
【請求項１４】
前記或る記憶領域プールは、前記ホスト計算機又は他の計算機のユーザから指定された空きを確保すべき記憶領域プールとの前記重複部分を有する別の記憶領域プールである、
請求項１３記載の記憶制御方法。
【請求項１５】
前記或る記憶領域プールは、未割り当ての記憶領域の数が所定数以下になった記憶領域プールとの重複部分を有する別の記憶領域プールである、
請求項１３記載の記憶制御方法。
【請求項１６】
前記或る記憶領域プールは、非重複記憶領域の数が増えた記憶領域プールである、
請求項１３記載の記憶制御方法。
【請求項１７】
前記複数の記憶領域は、複数の物理的な記憶装置に備えられているものであり、
各記憶領域の属性は、その記憶領域を備える物理的な記憶装置の属性と同一であり、
新たに物理的な記憶装置が搭載された場合に、前記搭載された物理的な記憶装置の属性に基づいて、前記非重複記憶領域の数が増えた記憶領域プールが検知される、
請求項１６記載の記憶制御方法。
【請求項１８】
前記非重複記憶領域に格納されているデータを削除した場合に、削除されたデータを格納していた非重複記憶領域を備える記憶領域プールが、非重複記憶領域の数が増えた記憶領域プールとして検知される、
請求項１６記載の記憶制御方法。
【請求項１９】
前記ホスト計算機から論理ボリュームに対する書込み要求を受け、
前記論理ボリュームに関連付けられている記憶領域プールの中から、重複記憶領域よりも非重複記憶領域を優先的に前記論理ボリュームに割り当て、
前記割り当てた記憶領域に、前記受けた書込み要求に従うデータを書き込む、
請求項１３記載の記憶制御方法。
【請求項２０】
書込み要求を発行するホスト計算機と通信することができる記憶装置システムにおいて、
複数の物理的な記憶装置に備えられる複数の記憶領域と、
二以上の記憶領域から構成された複数の記憶領域プールと、
前記複数の記憶領域プールにそれぞれ関連付けられた複数の論理ボリュームと、
コントローラと
を備え、
前記複数の記憶領域には、一以上の属性を有する記憶領域と複数の属性を有する記憶領域とが含まれており、
各記憶領域の属性は、その記憶領域を備える物理的な記憶装置の属性と同一であり、
各記憶領域プールには、その記憶領域プールを構成する二以上の記憶領域に共通する少なくとも一つの属性が割り当てられており、重複部分と、非重複部分とがあり、
各記憶領域プールの前記重複部分は、その記憶領域プールに割り当てられている属性の他に、他の記憶領域プールに割り当てられている属性を有するが故に、その記憶領域プールと前記他の記憶領域プールの構成要素にもなっている重複記憶領域の集合であり、
各記憶領域プールの前記非重複部分は、その記憶領域プールに割り当てられている属性を有するが、他の記憶領域プールに割り当てられている属性を有しないが故に、その記憶領域プールのみを構成する非重複記憶領域の集合であり、
前記コントローラが、
前記ホスト計算機から論理ボリュームに対する書込み要求を受け、
前記論理ボリュームに関連付けられている記憶領域プールの中から、重複記憶領域よりも非重複記憶領域を優先的に前記論理ボリュームに割り当て、前記割り当てた記憶領域に、前記受けた書込み要求に従うデータを書き込み、
以下の（Ａ）〜（Ｃ）、
（Ａ）前記ホスト計算機又は他の計算機のユーザから、空きを確保すべき記憶領域プールが指定されたとき、
（Ｂ）未割り当ての記憶領域の数が所定数以下になった記憶領域プールが検知されたとき、
（Ｃ）新たに物理的な記憶装置が搭載されたこと、又は、非重複記憶領域に格納されているデータを削除したことに起因して、非重複記憶領域の数が増えた記憶領域プールが検知されたとき、
のうちの少なくとも一つのときに、或る論理ボリュームに関連付けられている或る記憶領域プールの中から、前記或る論理ボリュームに割り当てられていない非重複記憶領域を選択し、
前記選択された非重複記憶領域を前記或る論理ボリュームに割り当て、
前記選択された非重複記憶領域に、前記或る論理ボリュームに割り当てられている前記重複記憶領域内のデータを移行し、
前記或る論理ボリュームから前記移行元の重複記憶領域の割り当てを外し、
前記或る記憶領域プールは、
（ａ）前記指定された記憶領域プールとの前記重複部分を有する別の記憶領域プールである、
（ｂ）未割り当ての記憶領域の数が所定数以下になった記憶領域プールとの重複部分を有する別の記憶領域プールである、
（ｃ）非重複記憶領域の数が増えた記憶領域プールである、
のうちの少なくとも一つである、
記憶装置システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶制御技術に関する。
【背景技術】
【０００２】
例えば、特開２００３−０１５９１５号公報に開示されている記憶装置システムが知られている。この記憶装置システムは、ホスト計算機から受けたＩ／Ｏ要求に応じて、記憶装置システムの未使用の記憶領域を動的に論理ボリュームに割り当てることで、論理ボリュームの記憶容量を拡張することができる。
【０００３】
【特許文献１】特開２００３−０１５９１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
論理ボリュームに割り当てられる記憶領域は、物理的な記憶デバイスが有する記憶資源のうちの一つである。記憶領域には、種々の属性がある。例えば、物理的な記憶デバイスがハードディスクドライブ（以下、ＨＤＤ）であれば、記憶領域の属性として、ＦＣ（Fibre Channel）、ＳＡＴＡ（Serial ATA）、或いはＳＡＳ（Serial Attached SCSI）といったものがある。また、複数の物理的な記憶デバイスが一つのグループであり、そのグループが、ＲＡＩＤ（Redundant Array of Independent Inexpensive Disks）の或るレベル（例えば、レベル１〜５のいずれかのレベル）を持ったＲＡＩＤグループである場合には、記憶領域の属性として、ＲＡＩＤレベルがある。
【０００５】
上述した記憶装置システムでは、論理ボリュームに記憶領域を割り当てる際に、記憶領域の属性の違いが考慮されず、無作為に、論理ボリュームに未使用の記憶領域が割り当てられる。
【０００６】
本発明の一つの目的は、論理ボリュームに対して動的に記憶領域を割り当てる記憶制御技術を提供することにある。
【０００７】
本発明の他の目的は、後の説明から明らかになるであろう。
【課題を解決するための手段】
【０００８】
本発明の第一の側面に従う記憶装置システムは、複数の記憶領域と、二以上の記憶領域から構成された複数の記憶領域プールと、前記複数の記憶領域プールにそれぞれ関連付けられた複数の論理ボリュームと、前記ホスト計算機から論理ボリュームに対する書込み要求を受け、前記論理ボリュームに関連付けられている記憶領域プール内の一以上の記憶領域を前記論理ボリュームに割り当て、前記割り当てた一以上の記憶領域に、前記受けた書込み要求に従うデータを書き込むコントローラとを備える。前記複数の記憶領域には、一以上の属性を有する記憶領域と複数の属性を有する記憶領域とが含まれている。前記複数の記憶領域プールの各々には、所定の属性が割り当てられており、互いに重複する重複部分と、互いに重複しない非重複部分とがある。前記重複部分は、複数の記憶領域プールにそれぞれ割り当てられている複数の属性と同一の複数の属性を有するが故に、前記複数の記憶領域プールのどの構成要素にもなっている重複記憶領域の集合である。各記憶領域プールの非重複部分は、前記各記憶領域プールに割り当てられている属性を有するが、他の記憶領域プールに割り当てられている属性を有しないが故に、前記各記憶領域プールのみを構成する非重複記憶領域の集合である。前記コントローラが、或る論理ボリュームに関連付けられている或る記憶領域プールの中から、前記或る論理ボリュームに割り当てられていない非重複記憶領域を選択し、前記選択された非重複記憶領域を前記或る論理ボリュームに割り当て、前記選択された非重複記憶領域に、前記或る論理ボリュームに割り当てられている前記重複記憶領域内のデータを移行し、前記或る論理ボリュームから前記移行元の重複記憶領域の割り当てを外す。
【０００９】
第一の態様では、前記コントローラ（又は計算機）が、前記ホスト計算機のユーザ又は他の計算機のユーザから、空きを確保すべき記憶領域プールの指定を受けることができる。前記コントローラが、その指定を受けたことに応答して（又はその指定を受けた計算機からのデータ移行命令に応答して）、前記データの移行を実行することができる。この場合、前記或る記憶領域プールは、前記指定された記憶領域プールとの前記重複部分を有する記憶領域プールとすることができる。
【００１０】
第二の態様では、前記コントローラ（又は計算機）は、記憶領域プールにおいて、未割り当ての記憶領域の数が所定数以下になったか否かを判断することができる。前記コントローラが、肯定的な判断結果が得られた場合に（又は肯定的な判断結果を得た計算機からのデータ移行命令に応答して）、前記データの移行を実行することができる。この場合、前記或る記憶領域プールは、前記肯定的な判断結果が得られた前記記憶領域プールとの重複部分を有する記憶領域プールであるとすることができる。
【００１１】
第三の態様では、前記コントローラ（又は計算機）は、非重複記憶領域の数が増えた記憶領域プールを検知することができる。前記コントローラは、その記憶領域プールが検知された場合に（又はそれを検知した計算機からのデータ移行命令に応答して）、前記データの移行を実行することができる。この場合、前記或る記憶領域プールは、前記検知された記憶領域プールであるとすることができる。
【００１２】
また、この第三の態様では、例えば、前記複数の記憶領域は、複数の物理的な記憶装置に備えられているものであってもよい。各記憶領域の属性は、その記憶領域を備える物理的な記憶装置の属性と同一であってもよい。前記コントローラ（又は計算機）は、新たに物理的な記憶装置が搭載された場合に、前記搭載された物理的な記憶装置の属性に基づいて、非重複記憶領域の数が増えた記憶領域プールを検知することができる。
【００１３】
また、この第三の態様では、例えば、前記コントローラが非重複記憶領域に格納されているデータを削除した場合に、前記コントローラ（又は計算機）が、削除されたデータを格納していた非重複記憶領域を備える記憶領域プールを、非重複記憶領域の数が増えた記憶領域プールとして検知することができる。
【００１４】
第四の態様では、前記コントローラ（又は計算機）は、互いの重複部分を備える第一と第二の記憶領域プールにおけるトレンドの高さを判別することができる。この場合、前記或る記憶領域プールは、前記第一と第二の記憶領域プールのうち、トレンドが低いと判別された方の記憶領域プールであるとすることができる。
【００１５】
なお、この第四の態様では、前記第一の記憶領域プールよりも前記第二の記憶領域プールの方がトレンドが高い場合とは、以下の（１）又は（２）の場合、
（１）前記第二の記憶領域プールを構成する記憶領域群に対する割り当てられている記憶領域の割合である使用率が、前記第一の記憶領域プールの使用率よりも上昇傾向にある場合、
（２）前記第二の記憶領域プールに関連付けられている第二の論理ボリュームに対するアクセス頻度が、前記第一の記憶領域プールに関連付けられている第一の論理ボリュームに対するアクセス頻度よりも上昇傾向にある場合、
であるとすることができる。
【００１６】
第五の態様では、前記コントローラは、前記論理ボリュームに関連付けられている記憶領域プールのうち、重複記憶領域よりも非重複記憶領域を優先的に前記論理ボリュームに割り当てることができる。
【００１７】
第六の態様では、前記コントローラが、前記ホスト計算機から論理ボリュームに対する書込み要求を受け、前記論理ボリュームに関連付けられている記憶領域プールの中から、重複記憶領域よりも非重複記憶領域を優先的に前記論理ボリュームに割り当て、前記割り当てた記憶領域に、前記受けた書込み要求に従うデータを書き込むことができる。
【００１８】
本発明の第二の側面に従う記憶制御方法は、複数の論理ボリュームのうちのいずれかに対する書込み要求をホスト計算機から受け、前記書込み要求に従うデータの書込み先となる論理ボリュームに関連付けられている記憶領域プールから一以上の記憶領域を選択し、前記選択された一以上の記憶領域を、前記データの書込み先となる論理ボリュームに割り当て、前記割り当てた一以上の記憶領域に前記データを書き込み、或る論理ボリュームに関連付けられている或る記憶領域プールの中から、前記或る論理ボリュームに割り当てられていない非重複記憶領域を選択し、前記選択された非重複記憶領域を前記或る論理ボリュームに割り当て、前記選択された非重複記憶領域に、前記或る論理ボリュームに割り当てられている前記重複記憶領域内のデータを移行し、前記或る論理ボリュームから前記移行元の重複記憶領域の割り当てを外す。この記憶制御方法は、一又は複数の記憶装置システムにより実現することができる。つまり、複数の記憶領域が、一つの記憶装置システム内に備えられていてもよいし、複数の記憶装置システムに分散して備えられていても良い。
【００１９】
上述した記憶装置システムが備えるコントローラが行う各処理は、各処理を行うための各手段又は各ユニットによって実行することができる。各手段又は各ユニットは、ハードウェア回路、コンピュータプログラム又はそれらの組み合わせ（例えば、複数のコンピュータプログラムを読み込んだ一又は複数のＣＰＵ）によって実現することができる。各コンピュータプログラムは、所定の記憶資源（例えばメモリ）から読み込むことができる。その記憶資源には、ＣＤ−ＲＯＭ等の記録媒体を介してインストールすることもできるし、インターネット等の通信ネットワークを介してダウンロードすることもできる。
【発明の効果】
【００２０】
本発明のいずれか一の態様によれば、論理ボリュームに対して動的に記憶領域を割り当てる記憶制御技術を提供することができる。
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照して、本発明の幾つかの実施例を説明する。なお、各実施例では、論理ボリュームに動的に割り当てられたり論理ボリュームから動的に解放されたりすることのできる記憶領域を、ディスク型の記憶メディアを構成する記憶資源要素である「セグメント」とする。
【実施例１】
【００２２】
図１は、本発明の第一実施例に係る計算機システムの概略構成を示す。
【００２３】
本計算機システムは、管理計算機１０、ホスト計算機５０及び記憶装置システム２０を有している。図１の例では、ホスト計算機５０が２台、記憶装置システム２０が２台となっているが、それぞれ、一台或いは三台以上であってもよい。管理計算機１０、記憶装置システム２０及びホスト計算機５０は管理ネットワーク（例えば、ＬＡＮ（Local Area Network））４０に接続されている。ホスト計算機５０は、データネットワーク、例えばＳＡＮ（Storage Area Network）４１を介して、記憶装置システム２０に接続される。ＳＡＮ４１では、ファイバチャネル或いはｉＳＣＳＩといった通信プロトコルを用いることができる。
【００２４】
管理計算機１０は、記憶装置システム２０又はホスト計算機５０に対して種々の命令を発行することで、記憶装置システム２０又はホスト計算機５０に所定の処理を実行させることができる。具体的には、例えば、管理計算機１０は、記憶装置システム２０に論理ボリュームを作成させたり、記憶装置システム２０内の論理ボリューム（以下、「ＶＯＬ」と略記することがある）をホスト計算機５０に割り当てたり、記憶装置システム２０にデータのマイグレーションを実行させたりすることができる。管理計算機１０は、ＣＰＵ１１、メモリ１２、フロントエンドＩ／Ｏ（入力／出力）インタフェース１３及びリアエンドＩ／Ｏインタフェース１４を備えることができる。ＣＰＵ１１、メモリ１２、フロントエンドＩ／Ｏインタフェース１３及びリアエンドＩ／Ｏインタフェース１４は、相互に、バスを介して接続されている。ＣＰＵ１１は、メモリ１２に格納されているコンピュータプログラムを実行することができる演算処理装置である。メモリ１２は、いわゆる内部記憶装置であり、例えば、コンピュータプログラムやデータを記憶する不揮発性メモリと、ＣＰＵ１１の演算処理結果を一時的に格納する揮発性メモリとを含んだものとすることができる。メモリ１２は、例えば、データ移行プログラムＰａ１及びプール履歴管理テーブルＴａ１を記憶することができる。フロントエンドＩ／Ｏインタフェース１３は、管理ネットワーク１３を介してホスト計算機５０に通信可能に接続される。リアエンドＩ／Ｏインタフェース１４は、記憶装置システム２０に通信可能に接続される。
【００２５】
ホスト計算機５０は、データベース管理システム（ＤＢＭＳ）などのコンピュータプログラムを実行し、その実行結果を記憶装置システム２０に対して書き込んだり、或いは、記憶装置システム２０からデータを読み出したりすることができる。ホスト計算機５０のハードウェア構成は、管理計算機１０と実質的に同様の構成とすることができるため、ここでは図示及び説明を省略する。
【００２６】
記憶装置システム２０は、例えば、配列された複数のディスク装置２４１を備えるディスクアレイ装置である。記憶装置システム２０は、ディスクアレイコントローラ２１、キャッシュメモリ２２、Ｉ／Ｏインタフェース２４、２５及び複数のディスク装置２４１を備えることができる。
【００２７】
ディスクアレイコントローラ２１は、記憶装置システム２０の動作を制御する装置であり、例えば、一又は複数枚の回路基板で構成することができる。ディスクアレイコントローラ２１は、ＣＰＵ２１１、メモリ２１２及びＩ／Ｏポート（図示せず）を備えることができる。メモリ２１２は、例えば、制御プログラムＰｂ１、セグメント管理テーブルＴｂ１、プール管理テーブルＴｂ２及びＶＯＬ管理テーブルＴｂ３を記憶することができる。
【００２８】
キャッシュメモリ２２は、ディスク装置２４に対して書き込まれるデータ、或いは、ディスク装置２４から読み出されたデータを一時的に記憶することができる。
【００２９】
Ｉ／Ｏインタフェース２４は、ＳＡＮ４１を介してホスト計算機５０に通信可能に接続される。Ｉ／Ｏインタフェース２５は、管理計算機１０に通信可能に接続される。
【００３０】
各ディスク装置２４１は、例えば、ＨＤＤであるが、ＤＶＤ（Digital Versatile Disk）等の他種の記憶メディアのドライブであっても良い。複数のＨＤＤ２４１によって、１又は複数の論理的な記憶デバイスである論理ボリューム（或いは論理ユニット（ＬＵ）とも呼ばれる）を提供することができる。
【００３１】
以上が、計算機システムの概略構成についての説明である。次に、管理計算機１０のメモリ１２に格納されるプログラム及びテーブルについて説明する。
【００３２】
図２Ａは、データ移行プログラムＰａ１の構成例を示す。
【００３３】
データ移行プログラムＰａ１を読み込んで実行するＣＰＵ１１は（以下、便宜上、「データ移行プログラムＰａ１は」と言う）、移行するデータ（マイグレーション対象のデータ）と移行先のセグメントを決定し、そのデータをそのセグメントにマイグレーションさせることの命令であるデータ移行命令を、記憶装置システム２０に送ることのできるプログラムである。データ移行プログラムＰａ１は、要求受信モジュールＭａ１、セグメント取得モジュールＭａ２及び移行実行モジュールＭａ３を備える。
【００３４】
要求受信モジュールＭａ１は、ユーザ（例えば、管理計算機１０或いはホスト計算機５０のオペレータ）から移行要求を受け、その要求を移行実行モジュールＭａ３に通知する。ここで言う「移行要求」とは、或るプールに属するセグメントの空き容量を確保することの要求である。また、「プール」とは、論理ボリュームに動的に割り当てられたり解放されたりする多数のセグメントから構成される記憶資源である。プールについての詳細な説明は後に行う。
【００３５】
セグメント取得モジュールＭａ２は、記憶装置システム２０と通信し、記憶装置システム２０のセグメントに関する情報と論理ボリュームに関する情報とを取得する。
【００３６】
移行実行モジュールＭａ３は、要求受信モジュールＭａ１から通知された移行要求に応答し、セグメント取得モジュールＭａ２によって取得された情報群を基に、移行するデータと移行先のセグメントとを決定し、そのデータをそのセグメントに移行することのデータ移行命令を生成して、そのデータ移行命令を記憶装置システム２０に送信する。
【００３７】
図２Ｂは、プール履歴管理テーブルＴａ１の構成例を示す。
【００３８】
プール履歴管理テーブルＴａ１は、記憶装置システム２０が管理するプールに関する履歴情報を管理するテーブルである。プール履歴管理テーブルＴａ１には、例えば、各プール毎に、「プール番号」及び「前回使用率」が記録される。「プール番号」は、プールを一意に識別するために記憶装置システム２０で付与されるＩＤである。「前回使用率」は、データ移行プログラムＴａ１が記憶装置システム２０から前回取得した、プールの使用率を表す値である。この使用率とは、プールを構成するセグメントの全体数に対する、論理ボリュームに割り当てられているセグメントの数の割合を示す。この実施例では、セグメントのサイズは、固定であって、どのセグメントも同じサイズであるとする。
【００３９】
以上が、管理計算機１０のメモリ１２に格納されるプログラム及びテーブルについての説明である。次に、ディスクアレイコントローラ２１のメモリ２１２に格納されるプログラム及びテーブルについて説明する。
【００４０】
図３Ａは、制御プログラムＰｂ１の構成例を示す。
【００４１】
制御プログラムＰｂ１を読み込んで実行するＣＰＵ２１１は（以下、便宜上、「データ移行プログラムＰａ１は」と言う）、記憶装置システム２０の動作を制御するプログラムである。制御プログラムＰｂ１は、例えば、論理ボリュームの割り当てや、データのマイグレーションを実行することができる。制御プログラムＰｂ１は、セグメント割り当てモジュールＭｂ１、プール管理モジュールＭｂ２、ボリューム管理モジュールＭｂ３及びデータ移行モジュールＭｂ４を備える。
【００４２】
セグメント割り当てモジュールＭｂ１は、論理ボリュームを作成したり、セグメントを論理ボリュームに動的に割り当てたりすることができる。また、セグメント割り当てモジュールＭｂ１は、プール管理モジュールＭｂ２とボリューム管理モジュールＭｂ３に、論理ボリュームに関する情報を通知することができる。
【００４３】
プール管理モジュールＭｂ２は、セグメントを、指定された属性毎にグルーピングしプールとして管理することができる。プールに関する情報は、プール管理テーブルＴｂ２に登録される。プールの作成時に指定することのできるセグメントの属性としては、例えば、ＦＣ、ＳＡＴＡのようなディスク種別、ＲＡＩＤレベル、ベンダーなどがある。プールを作成する際は、一つの属性を指定しても良いし、複数の属性を指定しても良い。この属性の指定は、ユーザが行っても良いし、ディスク装置２４１に関する情報（例えば、ベンダ或いはディスク種別）をプール管理モジュールＭｂ２がディスク装置２４１から取得して行っても良い。
【００４４】
ボリューム管理モジュールＭｂ３は、セグメントと論理ボリュームとプールの関連を管理することができる。
【００４５】
データ移行モジュールＭｂ４は、指定されたデータを指定されたセグメントに移行することができる。
【００４６】
図３Ｂは、プール管理テーブルＴｂ２の構成例を示す。
【００４７】
プール管理テーブルＴｂ２は、プールを管理するためのテーブルであり、具体的には、例えば、各プール毎に、「プール番号」、「属性」及び「使用率」が記録される。「プール番号」は、プールを一意に識別するためにプール管理モジュールにＭｂ２によって付与されるＩＤである。「属性」は、プールに属するセグメントの属性を示す。「使用率」は、上記の「前回使用率」とは異なり、最近取得された使用率を表す。
【００４８】
図３Ｃは、ＶＯＬ管理テーブルＴｂ３の構成例を示す。
【００４９】
ＶＯＬ管理テーブルＴｂ３は、ＶＯＬを管理するためのテーブルであり、具体的には、例えば、各ＶＯＬ毎に、「ＬＵＮ」及び「属性」が記録される。この属性と、プール管理テーブルＴｂ２に登録されている属性とにより、どのプールに属するセグメントをどの論理ボリュームに割り当てれば良いかを判別することが可能となる。
【００５０】
図４は、セグメント管理テーブルＴｂ１の構成例を示す。
【００５１】
セグメント管理テーブルＴｂ１は、セグメントを管理するためのテーブルである。具体的には、例えば、セグメント管理テーブルＴｂ１には、各ディスク装置２４１毎に、ディスク装置２４１を記憶装置システム２０において一意に識別するための「ディスクＩＤ」と、ディスク装置２４１の種別である「ディスク種別」と、ディスク装置２４１が構成要素となっているＲＡＩＤグループの「ＲＡＩＤレベル」とが記録される。また、各ディスク装置２４１のディスクには、多数のセグメントが存在するが、各セグメントについて、そのセグメントを識別するための「セグメント番号」と、そのセグメントの範囲を表す「開始アドレス」及び「終了アドレス」と、そのセグメントが割り当てられている論理ボリュームを一意に識別するためのＩＤである「ＬＵＮ」（論理ユニット番号）と、そのセグメントが属するプールの「プール番号」とが記録される。セグメントが論理ボリュームに割り当てられている場合には、そのセグメントに対応する「ＬＵＮ」及び「プール番号」がそれぞれ記録されるが、そのセグメントが論理ボリュームに割り当てられていない場合には、そのセグメントに対応する「ＬＵＮ」及び「プール番号」には、そのセグメントが割り当てられていないことを意味する情報（例えば図示のように"未割り当て"）が記録される。
【００５２】
この図４によれば、例えば、セグメント番号が［０］であるセグメントは、属性として、ＳＡＴＡ及びＲＡＩＤ５の両方を有しており、ＬＵＮが［０］である論理ボリュームに、プール番号が［１］のプールに属するセグメントとして割り当てられていることがわかる。なお、この実施例では、セグメントが割り当てられているということは、そのセグメントにデータが記憶されていることを意味し、逆に、セグメントが割り当てられていないということは、そのセグメントにはデータが格納されておらず空きになっていることを意味する。
【００５３】
以上が、ディスクアレイコントローラ２１のメモリ２１２に格納されるプログラム及びテーブルについての説明である。
【００５４】
ところで、この第一実施例では、適宜、データの移行が行われる。以下、そのデータ移行の幾つかの例の概要を説明する。
【００５５】
図５Ａは、本発明の第一実施例で行われるデータ移行の概要の一例を示す。
【００５６】
データ移行について説明する前に、この図５Ａを参照して、記憶装置システム２０における論理ボリュームとプールとの関係を説明する。
【００５７】
記憶装置システム２０には、複数の論理ボリュームと、複数のプールが存在する。論理ボリュームは、ホスト計算機５０に提供される論理的な記憶デバイスであり、一又は複数のディスク装置２４１上に設けることができるものである。論理ボリュームに対して書き込み要求が発行されて、その論理ボリュームに新たにデータを格納する必要が生じたときに、その論理ボリュームに割り当てられている属性と同一の属性を有するプールから、セグメントが選択されてその論理ボリュームに割り当てられ、その割り当てられたセグメントに、そのデータが格納される。
【００５８】
各論理ボリュームには、属性が割り当てられている。具体的には、例えば、ＬＵＮが［０］の論理ボリューム（以下、ＶＯＬ０）には、属性として［ＲＡＩＤ５］が割り当てられており、ＬＵＮが［１］の論理ボリューム（以下、ＶＯＬ１）には、属性として［ＦＣ］が割り当てられているものとする。これにより、ＶＯＬ０には、属性［ＲＡＩＤ５］を有するセグメントが割り当てられ、ＶＯＬ１には、属性［ＦＣ］を有するセグメントが割り当てられる。
【００５９】
各プールには、プール管理テーブルＴｂ２（図３Ｂ参照）に設定されている属性が与えられている。具体的には、例えば、プール番号が［１］であるプール（以下、プール１）には、属性［ＲＡＩＤ５］が設定されている。これは、ＲＡＩＤ５という属性を持っているセグメントであれば、そのセグメントが他にどんな属性を有していても、プール１に属することができることを意味する。また、プール番号が［２］である（以下、プール２）には、属性［ＦＣ］が設定されている。これは、ＦＣという属性を持っているセグメントであれば、そのセグメントが他にどんな属性を有していても、プール１に属することができることを意味する。
【００６０】
プール１とプール２との各々には、一部が互いに重複することになる重複部分と、互いに重複することのない非重複部分とがある。具体的に言えば、記憶装置システム２０内の多数のセグメントの中には、プール１及びプール２のいずれか一方にしか属することのできないセグメント（以下、非重複セグメント）と、プール１及びプール２にどちらにも属することのできるセグメント（以下、重複セグメント）とが混在することになる。より具体的に言えば、例えば、［ＳＡＴＡ］及び［ＲＡＩＤ５］という属性を持ったセグメントは、プール１における非共有セグメントであり、［ＦＣ］及び［ＲＡＩＤ１］という属性を持ったセグメントは、プール２における非共有セグメントであり、［ＦＣ］及び［ＲＡＩＤ５］という属性を持ったセグメントは、プール１及びプール２の両方に割り当てられている属性を持った重複セグメントである。
【００６１】
このように、非重複セグメントと重複セグメントとが混在し、且つ、重複セグメントが、非重複セグメントよりも多くの数の論理ボリュームに割り当て可能になっている環境下では、セグメントの属性を何ら考慮せずにセグメントの動的な割り当てや解放を行うようにすると、複数の重複セグメントから構成される重複部分の方が、複数の非重複セグメントから構成される非重複部分よりも、減りが早いと考えられる。重複部分が減るということは、その重複部分を有する複数のプールの記憶容量が同時に消費されてしまうことになる。
【００６２】
これを解決するための方法として、各論理ボリュームに、非重複セグメントを優先的に割り当て、非重複セグメントの数が僅少或いはゼロになった場合に、重複セグメントを割り当てるといった方法が考えられる。しかし、そうしたとしても、例えば、ディスク装置２４１が新たに追加されたことにより、或るプールの容量が増えた場合や、論理ボリュームの非重複セグメントに対応した場所からデータが削除された場合には、非重複セグメントが余って重複セグメントが枯渇することが生じ得る。
【００６３】
そこで、この実施例では、図５Ａに例示しているように、適宜、重複セグメント内のデータを非重複セグメントに移行し、重複セグメントを空けるようにする処理が行われる。
【００６４】
具体的には、例えば、属性［ＲＡＩＤ５］に対応したＶＯＬ０に割り当て可能なセグメントの数が所定数以下になった場合に、管理計算機１０のデータ移行プログラムＰａ１が、プール１に空き領域を生成することの命令を、記憶装置システム２０の制御プログラムＰｂ１に対して発行する。すると、制御プログラムＰｂ１は、プール１とプール２に属する重複セグメントのうち、プール２と同じ属性［ＦＣ］のＶＯＬ１に割り当てられている重複セグメントを探し、その重複セグメント内のデータを、プール２における非重複セグメントに移行させる。これにより、重複セグメントに空きが生じ、その結果、ＶＯＬ０に割り当て可能なセグメントが増えることになる。
【００６５】
図５Ｂは、本発明の第一実施例で行われるデータ移行の概要の別の一例を示す。
【００６６】
プールの非重複セグメントの数が増えた場合にも、データ移行を行うことができる。プールの非重複セグメントの数が増える場合としては、例えば、既に記憶装置システム２０内に存在し、どのプールにも属さない一以上のセグメントが、或るプールに追加された場合、或いは、ディスク装置２４１が新たに追加された場合が考えられる。
【００６７】
具体的には、例えば、ＲＡＩＤ１のＲＡＩＤグループを構成するＦＣのディスク装置２４１が、記憶装置システム２０に新たに追加されたとする。そうすると、属性［ＦＣ］のプール２の非重複セグメントの数が増えることになる。具体的には、例えば、セグメント管理テーブルＴｂ１に、新たに追加されたディスク装置２４１に関する情報が追記されることになる。
【００６８】
記憶装置システム２０の制御プログラムＰｂ１は、所定のタイミングで（例えば、ディスク装置２４１が追加されたことを検出したときに）、各プールで非重複セグメントが増えたか否かを判断し、増えたと判断した場合に、重複セグメント内のデータを、増やされた非重複セグメントに移行させることができる。
【００６９】
以下、この第一実施例で行われる処理について、より詳細に説明する。
【００７０】
本実施例では、ユーザが指定した条件に基づいて拡張する論理ボリュームにセグメントを割り当て、記憶装置システム２０のセグメントの消費を抑えて効率的にセグメントを使用するために、論理ボリューム作成処理、セグメント割り当て処理、指定したプールの空き領域を増やすためのデータ移行処理、他のプールと重複しない領域に空き領域が生じた場合のデータ移行処理、の各処理を実行することができる。各処理は、依存関係を持たず各々独立して動作することができる。
【００７１】
図６を参照して、論理ボリューム作成処理におけるモジュール間のシーケンスについて説明する。
【００７２】
論理ボリューム作成処理では、ユーザが指定した条件に応じた論理ボリュームが新規に作成される。
【００７３】
ホスト計算機５０は、ユーザによる操作に従い、制御プログラムＰｂ１に対して、論理ボリューム作成の要求をする（ステップＳ１０）。論理ボリューム作成要求には、論理ボリュームに割り当て可能なセグメントの属性が含まれる。
【００７４】
要求を受け取った制御プログラムＰｂ１は、プール管理モジュールＭｂ２を実行して、ユーザが指定した属性を持つプールをプール管理テーブルＴｂ２に登録する（ステップＳ１１）。次に、制御プログラムＰｂ１は、セグメント割り当てモジュールＭｂ１を実行して、ユーザから指定された属性を持った論理ボリュームを作成する（ステップＳ１２）。また、制御プログラムＰｂ１は、ボリューム管理モジュールＭｂ３を実行して、論理ボリュームに関する情報を、ＶＯＬ管理テーブルＴｂ３に登録する（ステップＳ１３）。以上の処理が終了すると、制御プログラムＰｂ１は、ホスト計算機５０に処理結果を通知する（ステップＳ１４）。
【００７５】
次に、図７を参照して、論理ボリューム作成時の詳細な処理フローについて説明する。
【００７６】
制御プログラムＰｂ１は、ホスト計算機５０から論理ボリュームの作成要求を受信した場合、その作成要求から、論理ボリュームにセグメントを割り当てる際の属性を取得する（ステップＳ１００）。
【００７７】
次に、制御プログラムＰｂ１は、プール管理モジュールＭｂ２を実行して、プール管理テーブルＴｂ２からプール番号及び属性を取得し（ステップＳ１０５）、上記作成要求から取得された属性と同一の属性を有するプールが存在するか否かを判断する（ステップＳ１１０）。
【００７８】
合致するプールが見つかった場合（ステップＳ１１０：Ｙｅｓ）には、制御プログラムＰｂ１は、論理ボリューム作成処理に移る。一方、合致するプールが見つからない場合（ステップＳ１１０：Ｎｏ）には、制御プログラムＰｂ１は、プール管理モジュールＭｂ２を実行し、上記作成要求から取得された属性を持つプールを新規に登録する（ステップＳ１２０）。
【００７９】
その後、制御プログラムＰｂ１は、セグメント割り当てモジュールＭｂ１を実行して、論理ボリュームを作成し（ステップＳ１３０）、論理ボリュームに関する情報をＶＯＬ管理テーブルＴｂ３に登録する（ステップ１４０）。以上の処理が終了すると、制御プログラムＰｂ１は、ユーザに処理結果を通知する（ステップＳ１５０）。
【００８０】
以上が、論理ボリューム作成処理の流れの一例である。なお、本処理では、論理ボリューム作成の前に、ユーザの要求に応じて制御プログラムＰｂ１がプールを作成し、論理ボリューム作成時には、ユーザが、予め作成されているプールの中から、論理ボリュームに関連付けるプールを選択するようにしても良い。
【００８１】
さて、次に、図８を参照して、セグメント割り当て処理を説明する。
【００８２】
制御プログラムＰｂ１は、ホスト計算機５０からのＩ／Ｏ要求（特に書き込み要求）に応じ、論理ボリュームに動的にセグメントを割り当て、論理ボリュームの容量を拡張することができる。
【００８３】
制御プログラムＰｂ１は、ホスト計算機５０からＩ／Ｏ要求を受信し（ステップＳ２０）、論理ボリュームの拡張が必要かどうか判定する（ステップＳ２１）。具体的には、例えば、制御プログラムＰｂ１は、Ｉ／Ｏ要求によってアクセスされる論理ボリューム上のアドレスが、論理ボリュームに割り当てられているセグメントのアドレスの範囲を超えるアドレスを指定されていた場合、論理ボリュームの拡張を実行すると判定する。
【００８４】
拡張が決定されると、制御プログラムＰｂ１は、セグメント割り当てモジュールＭｂ１を実行し、論理ボリュームを拡張する（ステップＳ２２）。論理ボリュームの拡張に伴い、セグメント管理テーブルＴｂ１の情報が更新され（ステップＳ２３）、処理結果がホスト計算機に通知される（ステップＳ２４）。
【００８５】
次に、図９を参照して、論理ボリューム拡張時におけるセグメント割り当て処理の詳細を説明する。
【００８６】
制御プログラムＰｂ１は、ボリューム管理モジュールＭｂ３を実行し、容量を拡張すべき論理ボリュームのＬＵＮに対応したプール番号をセグメント管理テーブルＴｂ１から取得することで、その論理ボリュームに関連付けられているプールを特定する（ステップＳ２１０）。
【００８７】
次に、制御プログラムＰｂ１は、上記プールに該当するセグメントのうち、上記プールにのみ含まれる未割り当てのセグメント（つまり、未割り当ての非重複セグメント）を取得する（ステップＳ２２０）。具体的には、例えば、制御プログラムＰｂ１は、プール管理モジュールＭｂ２を実行し、プール管理テーブルＴｂ２から、ステップＳ２１０で取得されたプール番号に対応した属性を取得し、セグメント管理モジュールＭｂ１を実行して、その属性を満たすセグメント番号の一覧を、セグメント管理テーブルＴｂ１から取得する。次に、制御プログラムＰｂ１は、そのプール番号以外のプールについても同様の処理を行い、上記取得されたセグメント番号一覧から、上記プール番号によって特定されるプール以外のプールに属するセグメント番号を削除する。この結果残ったセグメント番号の一覧が、ステップＳ２１０で取得されたプール番号によって特定されるプールにのみ属するセグメントである。図３Ｂ及び図４に示した各テーブルＴｂ２及びＴｂ１をもとに説明すると、拡張の対象となる論理ボリュームのＬＵＮが［０］だった場合、プール１にのみ含まれるセグメントは、属性［ＲＡＩＤ５］であり、かつ、属性［ＦＣ］ではないセグメントとなる。この場合、該当する未割り当てのセグメントは、セグメント番号［２］のセグメントとなる。
【００８８】
以上の処理により、対象となるセグメントが存在する場合、すなわち、セグメント番号一覧が一つ以上のセグメント番号を持つ場合（ステップＳ２３０：Ｙｅｓ）、制御プログラムＰｂ１は、そのセグメントを論理ボリュームに割り当てる（Ｓ２５０）。一方、対象となるセグメントが存在しなかった場合（ステップＳ２３０：Ｎｏ）には、制御プログラムＰｂ１は、該当するプールに属する任意のセグメントを取得して論理ボリュームに割り当てる（ステップＳ２４０、ステップＳ２５０）。
【００８９】
その後、制御プログラムＰｂ１は、ホスト計算機に結果を通知する（ステップＳ２６０）。
【００９０】
以上が、セグメント割り当て時の処理の流れの一例である。なお、例えば、ステップＳ２４０では、任意のセグメントを割り当てているが、何か他のアルゴリズムによってセグメントを割り当てても良い。
【００９１】
さて、次に、図１０を参照して、データ移行処理のシーケンスを説明する。本処理は、或るプールの容量が不足しているが、他のプールの容量が余っている場合に実行される処理である。
【００９２】
ユーザ（例えば、ホスト計算機或いは管理計算機１０のオペレータ）が、管理計算機１０のデータ移行プログラムＰａ１に対してプールの空き領域生成を要求すると（ステップＳ３０）、データ移行プログラムＰａ１は、記憶装置システム２０の制御プログラムＰｂ１から、セグメント管理テーブルＴｂ１とプール管理テーブルＴｂ２とに記録されている種々の情報を取得する（ステップＳ３１、ステップ３２）。
【００９３】
次に、データ移行プログラムＰａ１は、取得した種々の情報を基に、移行するデータとデータの移行先セグメントを決定し（ステップＳ３３）、記憶装置システム２０上の制御プログラムＰｂ１に対して、データ移行を要求する（ステップ３４）。
【００９４】
要求を受け取った制御プログラムＰｂ２は、その要求に応答してデータ移行を実行し（ステップＳ３５）、処理結果を返す。それにより、データ移行プログラムＰａ１からユーザに処理結果が通知される（ステップＳ３６）。
【００９５】
データ移行処理は、制御プログラムＰｂ１のデータ移行モジュールＭｂ４によって実行される。データ移行モジュールＭｂ４は、呼び出し元のプログラムまたはモジュールから、移行対象のデータが格納されているセグメントのセグメント番号と、データの移行先となるセグメントのセグメント番号とを取得する。そして、データ移行モジュールＭｂ４は、移行元のセグメントに格納されているデータを移行先のセグメントにコピーし、コピーが正常終了した後、移行元のセグメントを初期化又は解放し、処理結果を呼び出し元のプログラムまたはモジュールに通知することができる。
【００９６】
次に、図１１を参照して、データ移行処理について詳細に説明する。
【００９７】
データ移行プログラムＰａ１が、ユーザからあるプールの空き領域を生成する要求を取得すると（ステップＳ３００）、記憶装置システム２０から、セグメント管理情報とプール管理情報を取得する（ステップ３１０）。なお、セグメント管理情報は、セグメント管理テーブルＴｂ１に格納されている情報であり、プール管理情報は、プール管理テーブルＴｂ２に格納されている情報である。
【００９８】
データ移行プログラムＰａ１は、セグメント管理情報とプール管理情報から、ユーザが空き領域を生成するように指定したプールに属するセグメントのうち、そのプールとは異なるプール（以後、「他プール」と呼ぶ）と重複するセグメントの一覧を取得する（ステップＳ３２０）。他プールが複数存在する場合には、各他プールにおいてそれぞれ同様の処理を行うことができる。具体的には、例えば、ステップ３２０の処理を各他プールに適用することができる。
【００９９】
データ移行プログラムＰａ１は、他プールと重複するセグメントの一覧を取得したならば、セグメント管理情報及びプール管理情報を参照して、取得したセグメント一覧の中に、他プールに対応した論理ボリュームに割り当てられているセグメントを判定する（ステップＳ３３０）。データ移行プログラムＰａ１は、そのようなセグメントがある場合には（ステップＳ３３０：Ｙｅｓ）、そのセグメント内のデータを、移行対象のデータとして決定する（ステップ３５０）。一方、そのようなセグメントがない場合には（ステップＳ３３０：Ｎｏ）、指定されたプールに空きを作ることができないということなので、データ移行プログラムＰａ１は、セグメントの追加（具体的には、例えば、ディスク装置の追加、或いは、どのプールにも属していない既存のセグメントの追加）が必要である旨をユーザに通知する（ステップ３４０）。
【０１００】
次に、データ移行プログラムＰａ１は、セグメント管理情報とプール管理情報から、他プールにのみ含まれるセグメントの一覧を取得する（ステップＳ３６０）。データ移行プログラムＰａ１は、そのセグメント一覧に、論理ボリュームに未割り当てのセグメントがある場合に、未割り当てのセグメントを移行先のセグメントとして決定し（ステップＳ３７０：Ｙｅｓ）、移行実行モジュールＭａ３を実行することにより、制御プログラムＰｂ１のデータ移行モジュールＭｂ３に対して、上記処理で決定したデータを、未割り当てのセグメントに移行するよう指示し、データを移行させることができる（ステップＳ３８０）。未割り当てのセグメントがない場合（ステップＳ３７０：Ｎｏ）には、移行先セグメントが無く移行ができないため、Ｓ３４０が行われる。
【０１０１】
以上が、データ移行処理の流れの一例についての説明である。なお、制御プログラムＰｂ１は、データを移行した場合、セグメント管理テーブルＴｂ１において、移行元の重複セグメントの状態を未割り当てとし、移行先の非重複セグメントの状態を割り当て済みに更新することができる（例えば、その非重複セグメントが割り当てられた論理ボリュームのＬＵＮと、その非重複セグメントが構成要素の一つとなっているプールの番号とを、セグメント管理テーブルＴｂ１に記録することができる）。また、上記の例では、ユーザが、空きを確保するプールを指定しているが、プールの使用率が所定の閾値を超えた場合にデータ移行処理を開始するなど、種々のタイミングで、データ移行処理を実行することができる。
【０１０２】
図１２を参照して、他プールと重複しない領域に空き領域が生じた場合のデータ移行処理について説明する。本処理は、例えば、ユーザがディスク装置を増設して空き領域が生じた場合や、論理ボリュームに割り当てられていたセグメントが開放されて空き領域が生じた場合に、実行することができる。
【０１０３】
データ移行プログラムＰａ１は、記憶装置システム２０上の制御プログラムＰｂ１に要求して、セグメント管理情報とプール管理情報を取得する（ステップＳ４１、Ｓ４２）。
【０１０４】
次に、データ移行プログラムＰａ１は、プール管理情報から各プールの使用率を取得し、その使用率と、管理計算機１０のメモリ１２に格納されているプール履歴管理テーブルＴｂ１の前回使用率とを比較する。その結果、前回使用率の方が高い場合に、データ移行プログラムＰａ１は、空き領域が発生したと判定することができる（ステップＳ３３）。
【０１０５】
空き領域が発生した場合には、上記ステップＳ３３〜ステップＳ３５と同様の処理を行うことができる（ステップＳ４４〜ステップＳ４６）。
【０１０６】
次に、図１３を参照して、図１２を参照して説明したデータ移行処理についてより詳細に説明する。
【０１０７】
上記処理において、データ移行プログラムＰａ１が、空き領域を検知した場合（ステップＳ４００：Ｙｅｓ）、空き領域が他プールと重複されないセグメントかどうか判定する（ステップＳ４１０）。空き領域が検知されなかった場合は、そのまま処理が終了する（ステップＳ４００：Ｎｏ）。
【０１０８】
空き領域が、他プールと重複されない領域（セグメント）の場合（ステップＳ４１０：Ｙｅｓ）、データ移行プログラムＰａ１は、空き領域が生じたプールにおいて、他プールと重複するセグメントの一覧を取得する（ステップＳ４２０）。データ移行プログラムＰａ１は、空き領域が他プールと重複される場合（ステップＳ４１０：Ｎｏ）は、複数のプールで重複する領域に空き領域が発生したことになるため、データ移行はせず、そのまま処理を終了する。
【０１０９】
データ移行プログラムＰａ１は、他プールと重複するセグメントの一覧に、空き領域が発生したプールに関連付けられている論理ボリュームのデータがあるか判断し（ステップＳ４３０）、データがある場合には、移行実行モジュールＭａ３を実行して、制御プログラムＰｂ１のデータ移行モジュールＭｂ３に対して、データを空き領域に移行するよう指示し、データを移行させる（ステップＳ４４０）。データが無い場合には、移行対象となるデータが無いため、データ移行プログラムＰａ１は、そのまま処理を終了する（ステップＳ４３０：Ｎｏ）
以上が、空き領域が発生したことが検知された場合に行われるデータ移行処理である。なお、複数のプールにおいて、空き領域が生じたことを検知した場合には、本処理を各プールに繰り返し適用することができる。また、前回使用率よりも使用率が減ったことにより空き領域の発生を検知するようになっている場合には、制御プログラムＰｂ１は、例えば以下の処理を実行することができる。すなわち、例えば、制御プログラムＰｂ１は、ディスク装置２４１が追加された場合に、追加されたディスク装置２４１のセグメントがどのプールに属するかを判別し、判別されたプールの使用率を、そのプールに対して追加された複数のセグメントの総サイズに基づいて更新することができる。また、例えば、制御プログラムＰｂ１は、論理ボリュームからデータを削除した場合に、そのデータを記憶していたセグメントがどのプールに属するかを判別して、判別されたプールの使用率を、そのセグメントのサイズに応じて更新することができる。
【０１１０】
以上、上述した第一実施例によれば、或るプールに含まれるデータのうち、他のプールと重複するセグメントに格納されているデータの一部または全てを、他のプールにのみ含まれるセグメント（つまり非重複セグメント）に移行することができる。これにより、重複セグメントが枯渇する可能性を低減することができる。
【実施例２】
【０１１１】
以下、本発明の第二実施例について説明する。なお、以下、第一実施例との相違点を主に説明し、第一実施例との共通点については説明を省略或いは簡略する。
【０１１２】
第二実施例では、各プールと他のプールのトレンドの高低に基づいて、どのプールとどのプールにおける重複セグメント内のデータを、どの他のプールの非重複セグメントに移行するかを決定することができる。
【０１１３】
図１４は、本発明の第二実施例で行われるデータ移行処理の流れの一例を示す。
【０１１４】
データ移行プログラムＰａ１は、トレンド情報とトレンド判定情報とを取得する（ステップＳ５００）。トレンド情報とは、重複部分を有するプール間でのトレンドの高さを表す情報である。トレンド判定情報とは、トレンドの高さに変更があったか否かを判定するために用いられる情報である。トレンド判定情報に記録される各プール毎の情報としては、例えば、プールの使用率の増減に関する情報、又は、Ｉ／Ｏ頻度が考えられる。
【０１１５】
データ移行プログラムＰａ１は、トレンド判定情報を参照し、トレンドの高さに変更があったか否かを判定する（ステップＳ５１０）。ここでは、例えば、プール１よりもプール２のトレンドが高いことがトレンド情報に記録されている場合に、トレンド判定情報から、プール２よりもプール１の使用率が増加していることが特定されたときは、プール１とプール２間のトレンドの高さに変更があったと判定することができる。データ移行プログラムＰａ１は、トレンドの高さに変更があったと判定された場合（ステップＳ５１０：Ｙｅｓ）、変更後のトレンドをトレンド情報に反映することができる（ステップＳ５２０）。
【０１１６】
データ移行プログラムＰａ１は、トレンド情報からプール間のトレンドの高低の傾向を判別する（ステップＳ５３０）。また、データ移行プログラムＰａ１は、セグメント管理情報とプール管理情報とを取得する（Ｓ５４０）。
【０１１７】
データ移行プログラムＰａ１は、ステップＳ５３０の判別結果と、取得された種々の情報を基に、トレンドの高い傾向にあるプールと低い傾向にあるプールとにおける重複セグメントを特定し、特定された重複セグメントに格納されているデータを、トレンドの低い傾向にあるプールに属する非重複セグメントに移行することができる（ステップＳ５５０〜Ｓ６００）。
【０１１８】
以上、この第二実施例によれば、重複セグメントに格納されているデータを、トレンドの低いプールの非重複セグメントに移行することができるので、トレンドの高い傾向にあるプールの空きを優先的に確保することができる。
【０１１９】
なお、この第二実施例では、例えば、データ移行プログラムＰａ１は、定期的に、プール管理テーブルＴｂ２に登録されている使用率を取得し、各プール毎に、取得した時刻と取得された使用率とを、トレンド判定情報に記録することができる。この場合、使用率がより上昇しているものを、トレンドの高い傾向にあるプールと判定することができる。また、例えば、データ移行プログラムＰａ１は、各論理ボリューム毎のＩ／Ｏ頻度を取得し、論理ボリュームの属性に対応するプールを特定し、特定されたプールについて、取得した時刻と取得されたＩ／Ｏ頻度とを、トレンド判定情報に記録することができる。この場合、Ｉ／Ｏ頻度がより上昇している論理ボリュームに関連付けられているプールを、トレンドの高い傾向にあるプールと判定することができる。
【０１２０】
以上、本発明の好適な幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【０１２１】
例えば、上記説明では、データ移行の単位としてセグメント単位にデータを移行しているが別の単位でも良い。
【０１２２】
また、例えば、管理計算機１０が無くても良い。その場合、管理計算機１０のメモリ１２に格納されているプログラムやテーブルは、記憶装置システム２０又はホスト計算機５０に備えることができる。
【０１２３】
また、例えば、データ移行プログラムＰａ１は、非重複セグメントの数が所定数以下の場合には、重複セグメント内のデータを移行しないように制御することもできる。
【０１２４】
また、例えば、図１５に例示するように、三以上のプールが存在する場合、三以上のプールによって重複するセグメント（図１５で斜線で示した領域）が存在してもよい。この場合、例えば、プール１における最重複部分（最も多くのプールに属することができるセグメントの集合）を空けたい場合には、データ移行プログラムＰａ１は、プール２の非重複部分の空き具合を調べ、最重複部分内のデータを、プール２の非重複部分に移行させることができる。また、データ移行プログラムＰａ１は、プール３の非重複部分の空き具合を調べ、最重複部分内のデータを、プール３の非重複部分に移行させることもできる。なお、この場合、データ移行プログラムＰａ１は、プール２の非重複部分のサイズと、プール３の非重複部分のサイズとに基づいて、それぞれに移行するデータのサイズを制御することができる。例えば、プール２の非重複部分のサイズの方がプール３の非重複部分のサイズよりも大きい場合には、プール２の非重複部分により大量のデータを移行させることができる。
【図面の簡単な説明】
【０１２５】
【図１】図１は、本発明の第一実施例に係る計算機システムの概略構成を示す。
【図２】図２Ａは、データ移行プログラムＰａ１の構成例を示す。図２Ｂは、プール履歴管理テーブルＴａ１の構成例を示す。
【図３】図３Ａは、制御プログラムＰｂ１の構成例を示す。図３Ｂは、プール管理テーブルＴｂ２の構成例を示す。図３Ｃは、ＶＯＬ管理テーブルＴｂ３の構成例を示す。
【図４】図４は、セグメント管理テーブルＴｂ１の構成例を示す。
【図５】図５Ａは、本発明の第一実施例で行われるデータ移行の概要の一例を示す。図５Ｂは、本発明の第一実施例で行われるデータ移行の概要の別の一例を示す。
【図６】図６は、論理ボリューム作成時のシーケンス概要の一例を示す。
【図７】図７は、論理ボリューム作成時の処理フローの一例を示す。
【図８】図８は、セグメント割り当て処理のシーケンス概要の一例を示す。
【図９】図９は、セグメント割り当て処理のフローの一例を示す。
【図１０】図１０は、データ移行処理のシーケンス概要の一例を示す。
【図１１】図１１は、データ移行処理のフローの一例を示す。
【図１２】図１２は、他プールと重複しない領域に空き領域が生じた場合に行われるデータ移行処理のシーケンス概要の一例を示す。
【図１３】図１３は、図１２のデータ移行処理のフローの一例を示す。
【図１４】図１４は、本発明の第二実施例で行われるデータ移行処理の流れの一例を示す。
【図１５】図１５は、三以上のプールが重複する領域が存在する場合の一例の説明図である。
【符号の説明】
【０１２６】
１０…管理計算機  １１…ＣＰＵ（中央演算装置）  １２…メモリ  １３…フロントエンドＩ／Ｏインタフェース  １４…リアエンドＩ／Ｏインタフェース  ２０…記憶装置システム  ２１…ディスクアレイコントローラ  ２１１…ＣＰＵ  ２１２…メモリ  ２２…キャッシュメモリ  ２４、２５…Ｉ／Ｏインタフェース  ２４１…ディスク装置  ５０…ホスト計算機  Ｐａ１…データ移行プログラム  Ｍａ１…要求受信モジュール  Ｍａ２…セグメント取得モジュール  Ｍａ３…移行実行モジュール  Ｐｂ１…制御プログラム  Ｍｂ１…セグメント割り当てモジュール  Ｍｂ２…プール管理モジュール  Ｍｂ３…ボリューム管理モジュール  Ｍｂ４…データ移行モジュール  Ｔａ１…プール履歴管理テーブル  Ｔｂ１…セグメント管理テーブル  Ｔｂ２…プール管理テーブル  Ｔｂ３…ＶＯＬ管理テーブル
【図１】
0004684864.tif 000002
【図２】
0004684864.tif 000003
【図３】
0004684864.tif 000004
【図４】
0004684864.tif 000005
【図５】
0004684864.tif 000006
【図６】
0004684864.tif 000007
【図７】
0004684864.tif 000008
【図８】
0004684864.tif 000009
【図９】
0004684864.tif 000010
【図１０】
0004684864.tif 000011
【図１１】
0004684864.tif 000012
【図１２】
0004684864.tif 000013
【図１３】
0004684864.tif 000014
【図１４】
0004684864.tif 000015
【図１５】
0004684864.tif 000016