(57)【要約】【課題】システム全体としてデータの重複排除が可能なストレージシステムおよびストレージシステムのデータ管理方法を提供する。【解決手段】一または複数の論理ボリュームが設けられるストレージ装置を複数備えるストレージシステムであって、複数のストレージ装置のうちの一のストレージ装置は、ストレージシステムにおける論理ボリュームに対して書込要求が発生したデータのデータ情報に基づいて、ストレージシステムにおけるストレージ装置と論理ボリュームとの複数の組合せについて、ストレージ装置ごとに、重複したデータを排除したときのデータ容量を算出し、算出したデータ容量の合計をストレージシステム全体としての総容量として計算し、複数の組合せのうちで最も総容量が小さい組合せを示す情報を出力する最適配置演算処理を行うようにした。【選択図】図２
2020106999.tif 000002
【特許請求の範囲】
【請求項１】
一または複数の論理ボリュームが設けられるストレージ装置を複数備えるストレージシステムであって、
前記複数のストレージ装置のうちの一のストレージ装置は、前記ストレージシステムにおける論理ボリュームに対して書込要求が発生したデータのデータ情報に基づいて、前記ストレージシステムにおけるストレージ装置と論理ボリュームとの複数の組合せについて、ストレージ装置ごとに、重複したデータを排除したときのデータ容量を算出し、算出したデータ容量の合計を前記ストレージシステム全体としての総容量として計算し、前記複数の組合せのうちで最も総容量が小さい組合せを示す情報を出力する最適配置演算処理を行う、
ことを特徴とするストレージシステム。
【請求項２】
前記複数のストレージ装置の各々は、
ホスト装置からの論理ボリュームに対する書込要求に応じてデータを格納する際、データを格納する単位であるブロックを識別可能なブロック番号と前記ブロックに書き込むデータのハッシュ値とを論理ボリュームごとにハッシュ情報として記憶し、
他のストレージ装置で記憶されているハッシュ値を取得し、取得したハッシュ値と自身のストレージ装置で記憶しているハッシュ値とを論理ボリュームごとに比較し、一致しているハッシュ値のデータ容量を自身のストレージ装置の論理ボリュームに係るデータ情報として算出し、算出したデータ情報を前記一のストレージ装置に送信し、
前記一のストレージ装置は、ストレージ装置に配置される論理ボリューム間で一致するデータ容量の合計を、重複したデータを排除したときのデータ容量として算出する、
ことを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記複数のストレージ装置の各々は、
ホスト装置からの論理ボリュームに対する書込要求に応じてデータを格納する際、データを格納する単位であるブロックを識別可能なブロック番号と前記ブロックに書き込むデータのハッシュ値とを論理ボリュームごとにハッシュ情報として記憶し、記憶したハッシュ値を前記一のストレージ装置に送信し、
前記一のストレージ装置は、受信したハッシュ値をストレージ装置に配置される論理ボリューム間で比較し、一致しているハッシュ値のデータ容量を、重複したデータを排除したときのデータ容量として算出する、
ことを特徴とする請求項１に記載のストレージシステム。
【請求項４】
前記一のストレージ装置は、前記ストレージシステムにおけるストレージ装置に配置する複数の論理ボリュームとして、前記複数の論理ボリュームにおける一の論理ボリュームと一致するデータ容量が大きい順に論理ボリュームを選択し、前記ストレージシステムにおけるストレージ装置と論理ボリュームとの組合せを決定する、
ことを特徴とする請求項２または３に記載のストレージシステム。
【請求項５】
前記複数のストレージ装置の各々は、前記最適配置演算処理を行うプログラムを有し、前記ストレージシステムにおける他のストレージ装置の識別情報と障害状態とを取得し、障害状態でないストレージ装置の中で自身のストレージ装置の識別情報が最小であるか否かを判定し、最小であると判定した場合、前記最適配置演算処理のプログラムを実行し、前記最適配置演算処理を行う、
ことを特徴とする請求項１に記載のストレージシステム。
【請求項６】
前記複数のストレージ装置の各々は、
冗長化されている複数のストレージコントローラを含んで構成され、
自身のストレージ装置に含まれる全てのストレージコントローラから参照可能な記憶領域にハッシュ情報を記憶し、
前記複数のストレージコントローラの各々は、前記最適配置演算処理を行うプログラムを有し、
前記複数のストレージ装置の各々において、自身のストレージ装置に含まれるストレージコントローラのうちの一のストレージコントローラは、前記ストレージシステムにおける他のストレージ装置の識別情報と障害状態とを取得し、障害状態でないストレージ装置の中で自身のストレージ装置の識別情報が最小であるか否かを判定し、最小であると判定した場合、前記最適配置演算処理のプログラムを実行し、前記最適配置演算処理を行う、
ことを特徴とする請求項１に記載のストレージシステム。
【請求項７】
前記一のストレージ装置は、前記最適配置演算処理の結果に従って、前記複数のストレージ装置に対して論理ボリュームの移行先を指示する、
ことを特徴とする請求項１に記載のストレージシステム。
【請求項８】
前記一のストレージ装置は、前記データ情報と前記データ情報が算出された時間を示す時間情報とを時系列情報として記憶し、前記最適配置演算処理において、前記時系列情報から近似曲線を求め、将来における所定の時間のデータ情報を予測し、予測したデータ情報を用いて、前記ストレージシステムにおけるストレージ装置と論理ボリュームとの複数の組合せについて、ストレージ装置ごとに、重複したデータを排除したときのデータ容量を算出し、算出したデータ容量の合計を前記ストレージシステム全体としての総容量として計算し、前記複数の組合せのうちで最も総容量が小さい組合せを示す情報を出力する最適配置演算処理を行う、
ことを特徴とする請求項１に記載のストレージシステム。
【請求項９】
一または複数の論理ボリュームが設けられるストレージ装置を複数備えるストレージシステムのデータ管理方法であって、
前記複数のストレージ装置のうちの一のストレージ装置が、
前記ストレージシステムにおける論理ボリュームに対して書込要求が発生したデータのデータ情報に基づいて、前記ストレージシステムにおけるストレージ装置と論理ボリュームとの複数の組合せについて、ストレージ装置ごとに、重複したデータを排除したときのデータ容量を算出する第１のステップと、
算出したデータ容量の合計を前記ストレージシステム全体としての総容量として計算する第２のステップと、
前記複数の組合せのうちで最も総容量が小さい組合せを示す情報を出力する最適配置演算処理を行う第３のステップと、
を備えることを特徴とするストレージシステムのデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はストレージシステムおよびストレージシステムのデータ管理方法に関し、例えば一または複数の論理ボリュームが設けられるストレージ装置を複数備えるストレージシステムおよびストレージシステムのデータ管理方法に適用して好適なものである。
【背景技術】
【０００２】
近年、ストレージ分野では、ボリューム容量の利用効率を向上させるため、ボリュームに格納されるデータのデータ量、または格納するデータのデータ量を圧縮技術、重複排除技術などを利用して削減することが広く行われている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１４／１１０３１１号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来、重複排除技術の適用は、同一ストレージ装置内の各ボリュームに格納されたデータ間に限られており、複数のストレージ装置を跨いだ重複排除は行われていない。このため、例えば、データセンタのように複数のストレージ装置が存在するシステム環境では、２以上のストレージ装置内に同一のデータが存在する場合があり、システム全体から見たより一層のボリューム容量の利用効率の改善が望まれている。
【０００５】
本発明は以上の点を考慮してなされたもので、システム全体としてデータの重複排除が可能なストレージシステムおよびストレージシステムのデータ管理方法を提案しようとするものである。
【課題を解決するための手段】
【０００６】
かかる課題を解決するため本発明においては、一または複数の論理ボリュームが設けられるストレージ装置を複数備えるストレージシステムであって、前記複数のストレージ装置のうちの一のストレージ装置は、前記ストレージシステムにおける論理ボリュームに対して書込要求が発生したデータのデータ情報に基づいて、前記ストレージシステムにおけるストレージ装置と論理ボリュームとの複数の組合せについて、ストレージ装置ごとに、重複したデータを排除したときのデータ容量を算出し、算出したデータ容量の合計を前記ストレージシステム全体としての総容量として計算し、前記複数の組合せのうちで最も総容量が小さい組合せを示す情報を出力する最適配置演算処理を行うようにした。
【０００７】
また、本発明においては、一または複数の論理ボリュームが設けられるストレージ装置を複数備えるストレージシステムのデータ管理方法であって、前記複数のストレージ装置のうちの一のストレージ装置が、前記ストレージシステムにおける論理ボリュームに対して書込要求が発生したデータのデータ情報に基づいて、前記ストレージシステムにおけるストレージ装置と論理ボリュームとの複数の組合せについて、ストレージ装置ごとに、重複したデータを排除したときのデータ容量を算出する第１のステップと、算出したデータ容量の合計を前記ストレージシステム全体としての総容量として計算する第２のステップと、前記複数の組合せのうちで最も総容量が小さい組合せを示す情報を出力する最適配置演算処理を行う第３のステップと、を設けるようにした。
【０００８】
上記構成によれば、例えば、重複したデータを排除したときの総容量が最も小さいストレージ装置と論理ボリュームとの組合せを特定できるので、システム全体として重複したデータを効果的に排除することができる。
【発明の効果】
【０００９】
本発明によれば、ストレージシステムにおいて重複しているデータをより適切に管理することができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態によるストレージシステムに係る構成の一例を示す図である。
【図２】第１の実施の形態によるストレージ装置に係る構成の一例を示す図である。
【図３】第１の実施の形態によるハッシュ値テーブルの一例を示す図である。
【図４】第１の実施の形態によるマスタコントローラ決定処理に係る処理フローの一例を示す図である。
【図５】第１の実施の形態によるマスタコントローラ決定処理に係る処理フローの一例を示す図である。
【図６】第１の実施の形態による最適配置処理に係る処理フローの一例を示す図である。
【図７】第１の実施の形態による最適配置開始要求時処理に係るフローチャートの一例を示す図である。
【図８】第１の実施の形態による最適配置実行指示受信時処理に係るフローチャートの一例を示す図である。
【図９】第１の実施の形態による最適配置処理に係るフローチャートの一例を示す図である。
【図１０】第１の実施の形態による最適配置演算処理に係るフローチャートの一例を示す図である。
【図１１】第１の実施の形態によるデータ削減容量計算処理に係るフローチャートの一例を示す図である。
【図１２】第１の実施の形態による収集情報の一例を示す図である。
【図１３】第１の実施の形態によるデータ削減容量の計算結果の一例を示す図である。
【図１４】第１の実施の形態によるデータ削減容量の全計算結果の一例を示す図である。
【図１５】第１の実施の形態による基準ボリュームと配置ストレージ装置との組合せの一例を示す図である。
【図１６】第１の実施の形態によるボリュームを選定する方法の一例を示す図である。
【図１７】第１の実施の形態による未決ボリュームの一例を示す図である。
【図１８】第１の実施の形態による未決ストレージ装置の一例を示す図である。
【図１９】第１の実施の形態による目標総容量と配置変更後総容量との一例を示す図である。
【図２０】第１の実施の形態による最適配置情報の一例を示す図である。
【図２１】第２の実施の形態によるデータ削減容量推移とデータ削減容量予測との一例を示す図である。
【発明を実施するための形態】
【００１１】
以下図面について、本発明の一実施の形態を詳述する。以下の実施の形態では、主に、ストレージシステム全体としてのボリュームの容量（ボリューム容量）の利用効率の改善を図ることができる構成について説明する。
【００１２】
例えば、ストレージシステムを構成する複数のストレージ装置のうちの１つのストレージ装置がストレージシステム内の各ボリュームのデータ比較を行い、重複排除によるデータ削減の効果が最も高くなるボリュームの組合せを算出する。そして、かかる組合せごとに、その組合せを構成するボリューム群を同一のストレージ装置に配置するようにボリュームの再配置を行う。これにより、ストレージシステム全体としてのボリューム容量の利用効率の改善を図ることができる。
【００１３】
また、例えば、ボリュームに格納されているデータ（ボリュームデータ）の比較において、ＲＡＷデータ（生データ）をやり取りすると、ストレージ装置間の通信が膨大となる可能性がある。この点、本ストレージシステムでは、例えば、ブロック単位のハッシュ値をやり取りしてボリュームデータの比較を行う。これにより、重複排除の処理に起因するストレージ装置間の通信データ量を抑制でき、例えば、ホスト装置のＩ／Ｏ（Input / Output）に悪影響が及ぶのを抑止することができる。
【００１４】
また、例えば、データ削減の効果が最も高くなるボリュームの組合せを計算する際、計算の精度を高めることが望まれている。この点、本ストレージシステムでは、例えば、過去のボリュームデータの削減容量を蓄積し、過去のデータの削減容量の推移からボリュームデータの削減容量を予測した最適配置を計算する。これにより、データ削減の精度を高めることができる。
【００１５】
なお、以下の説明では、同種の要素を区別しないで説明する場合には、枝番を含む参照符号のうちの共通部分（枝番を除く部分）を使用し、同種の要素を区別して説明する場合は、枝番を含む参照符号を使用することがある。例えば、役割決定部を特に区別しないで説明する場合には、「役割決定部２１２」と記載し、個々の役割決定部を区別して説明する場合には、「役割決定部２１２＿１Ａ」、「役割決定部２１２＿２Ａ」のように記載することがある。
【００１６】
以下、詳細について説明する。ただし、本発明は、以下の実施の形態に限定されることなく、本発明の範囲内で種々の変形をした構成を含むものである。
【００１７】
（１）第１の実施の形態
図１において、１００は全体として第１の実施の形態によるストレージシステムを示す。ストレージシステム１００は、ホスト装置１１０と、管理装置１２０と、複数のファイバーチャネルスイッチ１３０と、複数のストレージ装置１４０とを含んで構成される。
【００１８】
ストレージシステム１００では、ホスト装置１１０とストレージ装置１４０とは、第１のネットワーク１５０（ファイバーチャネルネットワーク）を構成するファイバーチャネルスイッチ１３０を介して通信可能に接続される。また、ストレージシステム１００では、管理装置１２０とストレージ装置１４０とは、第２のネットワーク１６０およびファイバーチャネルスイッチ１３０を介して通信可能に接続される。また、ストレージ装置１４０間は、第１のネットワーク１５０を介して通信可能に接続される。第１のネットワークは、例えば、ＳＡＮ（Storage Area Network）である。第２のネットワーク１６０は、例えば、ＬＡＮ（Local Area Network）である。なお、ネットワークの構成については、上述の構成に限られるものではなく、適宜の構成を採用可能である。
【００１９】
ホスト装置１１０は、業務などに係る情報処理を行う装置である。ＣＰＵ（Central Processing Unit）１１１と、メモリ１１２と、記憶装置１１３と、入力装置１１４と、ディスプレイ１１５と、Ｉ／Ｆ（interface）１１６と、ポート１１７とを含んで構成される。ＣＰＵ１１１は、ホスト装置１１０全体の動作制御を司るプロセッサである。メモリ１１２は、プログラム、データ等を記憶する装置であり、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）などの半導体記憶装置である。記憶装置１１３は、ディスク装置、光磁気ディスク装置等である。入力装置１１４は、キーボードポインティングデバイス等である。ディスプレイ１１５は、各種の情報を表示可能な液晶ディスプレイ、プラズマディスプレイ等である。Ｉ／Ｆ１１６は、第２のネットワーク１６０に接続するためのＬＡＮアダプタである。ポート１１７は、ファイバーチャネルスイッチ１３０（第１のネットワーク１５０）に接続するためのＳＡＮアダプタである。
【００２０】
ホスト装置１１０の機能（情報処理など）は、例えば、ＣＰＵ１１１が記憶装置１１３に格納されたプログラムをメモリ１１２に読み出して実行すること（ソフトウェア）により実現されてもよいし、専用の回路などのハードウェアにより実現されてもよいし、ソフトウェアとハードウェアとが組み合わされて実現されてもよい。また、ホスト装置１１０の機能の一部は、ホスト装置１１０と通信可能な他のコンピュータにより実現されてもよい。
【００２１】
例えば、ホスト装置１１０は、入力装置１１４を介してホスト管理者からの入力を受け付ける。また、ホスト装置１１０は、ディスプレイ１１５に情報処理の結果等を表示する。
【００２２】
管理装置１２０は、ストレージシステム１００全体の保守管理を担う装置である。より具体的には、管理装置１２０は、ＣＰＵ１２１と、メモリ１２２と、記憶装置１２３と、入力装置１２４と、ディスプレイ１２５と、Ｉ／Ｆ１２６とを含んで構成される。なお、ＣＰＵ１２１、メモリ１２２、記憶装置１２３、入力装置１２４、ディスプレイ１２５、およびＩ／Ｆ１２６は、ホスト装置１１０のＣＰＵ１１１、メモリ１１２、記憶装置１１３、入力装置１１４、ディスプレイ１１５、およびＩ／Ｆ１１６と同じ構成でもよいので、その説明を省略する。
【００２３】
管理装置１２０の機能（ストレージシステム１００全体の保守管理など）は、例えば、ＣＰＵ１２１が記憶装置１２３に格納されたプログラムをメモリ１２２に読み出して実行すること（ソフトウェア）により実現されてもよいし、専用の回路などのハードウェアにより実現されてもよいし、ソフトウェアとハードウェアとが組み合わされて実現されてもよい。また、管理装置１２０の機能の一部は、管理装置１２０と通信可能な他のコンピュータにより実現されてもよい。
【００２４】
例えば、管理装置１２０は、ホスト装置１１０の構成情報、性能監視情報、障害ログ等を収集する。また、例えば、管理装置１２０は、ストレージ装置１４０の構成情報、性能監視情報、障害ログ等を収集する。また、管理装置１２０は、収集した情報をディスプレイ１２５に出力してシステム管理者に提示する。また、管理装置１２０は、入力装置１２４を介してシステム管理者から保守管理に関する指示を受けると、その指示をホスト装置１１０、ストレージ装置１４０等に送信する。
【００２５】
ファイバーチャネルスイッチ１３０は、光ファイバーを用いた接続規格の１つであるファイバーチャネルのデータ伝送を中継する装置である。ファイバーチャネルスイッチ１３０は、複数のポート１３１と、Ｉ／Ｆ１３２とを含んで構成される。
【００２６】
ストレージ装置１４０は、一または複数のストレージコントローラ１４１（本例では２台）と、記憶デバイスを有するディスクエンクロージャ１４２とを含んで構成される。ストレージ装置１４０では、２台のストレージコントローラ１４１を専用ネットワーク、バス等で接続することで冗長化されている。
【００２７】
ストレージコントローラ１４１は、ストレージアレイの制御を行う装置である。例えば、ストレージコントローラ１４１は、複数の記憶デバイスにある記憶領域をまとめて１つの記憶領域としてホスト装置１１０に提供する。また、例えば、ストレージコントローラ１４１は、ホスト装置１１０からデータの書込要求を受けると、複数の記憶デバイスのどの記憶デバイスにデータを配置するかを決定し、決定した記憶デバイスにデータを格納する。また、例えば、ストレージコントローラ１４１は、ホスト装置１１０からデータの読出要求を受けると、データの格納位置を判断し、判断した格納位置の記憶デバイスからデータを読み出してホスト装置１１０に転送する。また、例えば、ストレージコントローラ１４１は、データの読み書き以外にも、ボリューム容量の動的割り当て（容量仮想化）、スナップショットの取得、ボリュームのマイグレーション、ボリュームのデータ容量の削減に係る処理などを行う。
【００２８】
より具体的には、ストレージコントローラ１４１は、ファイバーチャネル用のポート１４３（フロントエンドポート）と、ＣＰＵ１４４と、メモリ１４５と、キャッシュ１４６と、記憶デバイス用のポート１４７（バックエンドポート）と、ストレージコントローラ１４１との接続用のＩ／Ｆ１４８とを含んで構成される。
【００２９】
ファイバーチャネル用のポート１４３は、ファイバーチャネルスイッチ１３０に接続するためのＳＡＮアダプタである。ＣＰＵ１４４は、ストレージ装置１４０全体の動作制御を司るプロセッサである。例えば、ＣＰＵ１４４は、ＲＡＩＤ（Redundant Arrays of Independent Disks）の構成情報に基づいたデータ配置、パリティ計算などを行う。また、例えば、ストレージ装置１４０の機能（例えば、後述のハッシュ値生成部２１１、役割決定部２１２、データ削減容量演算部２１３、最適配置演算部２１４、マイグレーション実行部２１５、重複排除実行部２１６など）を実現する。なお、ストレージ装置１４０の機能は、例えば、ＣＰＵ１４４がプログラムをメモリ１４５に読み出して実行すること（ソフトウェア）により実現されてもよいし、専用の回路などのハードウェアにより実現されてもよいし、ソフトウェアとハードウェアとが組み合わされて実現されてもよい。また、ストレージ装置１４０の機能の一部は、ストレージ装置１４０と通信可能な他のコンピュータにより実現されてもよい。メモリ１４５は、プログラム、データ等を記憶する装置であり、ＲＡＭ、ＲＯＭなどの半導体記憶装置である。キャッシュ１４６は、ホスト装置１１０と記憶デバイスとの間で入力されるデータを一時的に記憶する装置であり、例えば、半導体メモリである。記憶デバイス用のポート１４７は、ディスクエンクロージャ１４２に接続するためのインターフェースである。Ｉ／Ｆ１４８は、他のストレージコントローラ１４１に接続するためのインターフェースである。
【００３０】
ここで、ストレージ装置１４０は、次のような記憶階層を有する。例えば、複数の記憶デバイスによってディスクアレイが構成される。このディスクアレイは、ＣＰＵ１４４によって物理デバイスとして管理される。また、ＣＰＵ１４４は、ストレージ装置１４０に搭載した記憶デバイス（物理デバイス）と、ディスクアレイが論理的に分割された論理ユニット（実ボリューム）とを対応付ける。論理ユニットは、各ポート１４３に割り当てられたＬＵＮ（Logical Unit Number）に対応付けられ、ストレージ装置１４０内のデバイスとしてホスト装置１１０に提供される。ホスト装置１１０が認識するのは、ストレージ装置１４０内の論理ユニットであり、ホスト装置１１０は、ポート１４３に割り当てられた論理ユニットを識別するためのＬＵＮを用いて、ストレージ装置１４０に格納されているデータにアクセスする。なお、論理ユニットは、必要に応じて、複数の実ボリュームに分割されていてもよい。
【００３１】
付言するならば、ストレージシステム１００においては、ホスト装置１１０に提供するボリュームは、実ボリュームに限られるものではなく、物理構成にとらわれることなく、物理容量以上の容量を仮想的にホスト装置１１０に割り当てるためのプールから切り出された仮想ボリュームであってもよい。本実施の形態では、実ボリュームと仮想ボリュームとの区別を要しないときは、ボリューム（または論理ボリューム）と称する。
【００３２】
図２は、ストレージ装置１４０に係る構成の一例を示す図である。ここでは、第１のストレージ装置１４０−１および第２のストレージ装置１４０−２を例に挙げて説明する。
【００３３】
第１のストレージ装置１４０−１は、ストレージコントローラ１４１−１Ａと、ストレージコントローラ１４１−１Ｂと、複数のボリューム２２０−１（ボリューム２２０−１Ａ、ボリューム２２０−１Ｂ、ボリューム２２０−１Ｃ、およびボリューム２２０−１Ｄ）と、ハッシュ値テーブル２３０−１とを含んで構成される。例えば、ストレージコントローラ１４１−１Ａは、稼働機である。例えば、ストレージコントローラ１４１−１Ｂは、待機機である。なお、ストレージコントローラ１４１−１Ａに障害が発生した際、ストレージコントローラ１４１−１Ｂは、待機機から稼働機に切り替えられる。
【００３４】
ストレージコントローラ１４１−１Ａは、ハッシュ値生成部２１１−１Ａと、役割決定部２１２−１Ａと、データ削減容量演算部２１３−１Ａと、最適配置演算部２１４−１Ａと、マイグレーション実行部２１５−１Ａと、重複排除実行部２１６−１Ａと、を含んで構成される。
【００３５】
ハッシュ値生成部２１１−１Ａは、例えば、ボリューム２２０−１に対してデータの書込要求が発生した際、書き込むデータのハッシュ値をハッシュ関数を用いて生成し、ハッシュ値テーブル２３０−１に格納する。ハッシュ値生成部２１１−１は、ハッシュ値をボリューム２２０−１（ＶＯＬ）毎にブロック単位で生成する。ブロックとは、ボリューム２２０に対してデータを格納する最小の単位のことである。ハッシュ値テーブル２３０−１には、各ブロックに格納されるデータ（ブロックデータ）に対するハッシュ値が格納される。なお、書込みによるデータの更新があった場合、ハッシュ値生成部２１１−１は、更新されたデータのハッシュ値を生成する。
【００３６】
役割決定部２１２−１Ａは、例えば、ネットワーク１５０内で最適配置の計算を行うコントローラ１４１（マスタコントローラ）を決定する。
【００３７】
データ削減容量演算部２１３−１Ａは、例えば、各ストレージ装置１４０（ハッシュ値生成部２１１）で生成されたハッシュ値を用いて、自身のストレージ装置１４０ボリューム２２０と他のストレージ装置１４０に配置されているボリューム２２０とにおけるデータ削減容量を計算する。例えば、データ削減容量演算部２１３は、第１のボリューム２２０にブロックデータＡ（８ｋｂｙｔｅ）のハッシュ値が含まれ、第２のボリューム２２０にもブロックデータＡ（８ｋｂｙｔｅ）のハッシュ値が含まれる場合、データ削減容量として「８ｋｂｙｔｅ」を算出する。
【００３８】
最適配置演算部２１４−１Ａは、例えば、各ストレージ装置１４０（データ削減容量演算部２１３）で計算されたデータ削減容量をもとに、データ削減の効果が高くなるように一のストレージ装置にまとめるボリューム２２０の組合せを計算する。
【００３９】
マイグレーション実行部２１５−１Ａは、例えば、最適配置演算部２１４により計算された組合せに従ってボリューム２２０を移行する。
【００４０】
重複排除実行部２１６−１Ａは、ストレージ装置１４０において重複しているデータの排除を実行する。
【００４１】
上述の例では、各ストレージ装置１４０においてデータ削減容量を計算し、代表のストレージ装置１４０（役割決定部２１２により決定されたマスタコントローラを有するストレージ装置１４０）が計算されたデータ削減容量を受信し、受信したデータ削減容量をもとにデータ削減の効果が高くなるように、一のストレージ装置にまとめるボリューム２２０の組合せを計算することを示した。ただし、この構成に限られるものではない。例えば、代表のストレージ装置１４０が各ストレージ装置１４０で生成されたハッシュ値を取得してデータ削減容量を計算し、計算したデータ削減容量をもとにデータ削減の効果が高くなるように、一のストレージ装置にまとめるボリューム２２０の組合せを計算する構成としてもよい。
【００４２】
なお、ストレージコントローラ１４１−１Ｂについては、ストレージコントローラ１４１−１Ａと同じ構成であるので、その説明を省略する。
【００４３】
ハッシュ値テーブル２３０−１は、ストレージコントローラ１４１−１Ａおよびストレージコントローラ１４１−１Ｂからアクセス可能な共有資源（例えば、ディスクエンクロージャ１４２）に記憶（格納）されている。なお、ハッシュ値テーブル２３０については、図３を用いて後述する。
【００４４】
第２のストレージ装置１４０−２は、ストレージコントローラ１４１−２Ａと、ストレージコントローラ１４１−２Ｂと、複数のボリューム２２０−２（ボリューム２２０−２Ａおよびボリューム２２０−２Ｂ）と、ハッシュ値テーブル２３０−２とを含んで構成される。ストレージコントローラ１４１−２については、ストレージコントローラ１４１−１と同じ構成であるのでその説明を省略する。
【００４５】
図３は、ハッシュ値テーブル２３０の一例を示す図である。ハッシュ値テーブル２３０には、ブロック番号３０１と、ハッシュ値３０２との情報が対応付けて格納される。ブロック番号３０１は、ブロックデータが格納されるブロックを識別可能な識別子である。ハッシュ値３０２は、ブロックデータのハッシュ値である。
【００４６】
次に、重複排除処理について説明する。重複排除処理には、大きくは、ストレージシステム１００内で最適配置の計算を行うストレージコントローラ１４１（マスタコントローラ）を決定するマスタコントローラ決定処理と、マスタコントローラが最適配置の計算を行う最適配置処理とが含まれる。まず、図４〜図６を用いて重複排除処理に係る処理フローについて説明する。続いて、図７〜図１１を用いて重複排除処理について説明する。
【００４７】
図４は、マスタコントローラ決定処理に係る処理フロー（最適配置の開始要求があったときの処理フロー）の一例を示す図である。
【００４８】
ここでは、ストレージシステム１００がストレージ装置１４０−１〜ストレージ装置１４０−４を備える場合を例に挙げて説明する。また、本例では、ストレージ装置１４０−１のストレージコントローラ１４１−１が管理装置１２０を介して最適配置の開始要求を受けたものとして説明する。この場合、ストレージコントローラ１４１−１は、最適配置開始要求時処理４００を行う。なお、最適配置開始要求時処理４００の詳細については、図７を用いて後述する。
【００４９】
なお、マスタコントローラ決定処理については、管理装置１２０から最適配置の開始要求を受け取ったストレージコントローラ１４１により実行される構成に限られるものではなく、各ストレージコントローラ１４１により定期的（例えば、１週間おき）に実行されるものであってもよい。
【００５０】
ストレージコントローラ１４１−１は、最適配置の開始要求を受信すると（処理フロー４０１）、自身の最適配置の実行状態を取得し、ストレージコントローラ１４１−２から最適配置の実行状態を取得し（処理フロー４０２，４０３）、ストレージコントローラ１４１−３から最適配置の実行状態を取得し（処理フロー４０４，４０５）、ストレージコントローラ１４１−４から最適配置の実行状態を取得する（処理フロー４０６，４０７）。
【００５１】
ストレージコントローラ１４１−１は、最適配置を実行しているストレージコントローラ１４１がない場合、ストレージコントローラ１４１−２に最適配置の実行を指示し（処理フロー４０８）、ストレージコントローラ１４１−３に最適配置の実行を指示し（処理フロー４０９）、ストレージコントローラ１４１−４に最適配置の実行を指示する（処理フロー４１０）。
【００５２】
図５は、マスタコントローラ決定処理に係る処理フロー（ストレージコントローラ１４１が最適配置の実行の指示を受信したときに実行する処理フロー）の一例を示す図である。
【００５３】
ストレージコントローラ１４１は、最適配置の実行の指示を受信したとき（処理フロー４０８，４０９，４１０。なお、マスタコントローラの場合は、最適配置の実行の指示を送信したとき。）、最適配置実行指示受信時処理５００を行う。なお、最適配置実行指示受信時処理５００の詳細については、図８を用いて後述する。
【００５４】
ストレージコントローラ１４１−１は、ストレージコントローラ１４１−２からストレージコントローラ１４１−２のＩＤ（identification）および障害状態を取得し（処理フロー５０１−１，５０２−１）、ストレージコントローラ１４１−３からストレージコントローラ１４１−３のＩＤおよび障害状態を取得し（処理フロー５０３−１，５０４−１）、ストレージコントローラ１４１−４からストレージコントローラ１４１−４のＩＤおよび障害状態を取得する（処理フロー５０５−１，５０６−１）。そして、ストレージコントローラ１４１−１は、障害状態でないストレージコントローラ１４１のうち、自身のストレージコントローラ１４１−１のＩＤが最も小さい場合、ストレージコントローラ１４１−１をマスタコントローラとして決定する。
【００５５】
ストレージコントローラ１４１−２は、ストレージコントローラ１４１−１からストレージコントローラ１４１−１のＩＤおよび障害状態を取得し（処理フロー５０１−２，５０２−２）、ストレージコントローラ１４１−３からストレージコントローラ１４１−３のＩＤおよび障害状態を取得し（処理フロー５０３−２，５０４−２）、ストレージコントローラ１４１−４からストレージコントローラ１４１−４のＩＤおよび障害状態を取得する（処理フロー５０５−２，５０６−２）。そして、ストレージコントローラ１４１−２は、障害状態でないストレージコントローラ１４１のうち、自身のストレージコントローラ１４１−２のＩＤが最も小さい場合、ストレージコントローラ１４１−２をマスタコントローラとして決定する。
【００５６】
ストレージコントローラ１４１−３は、ストレージコントローラ１４１−１からストレージコントローラ１４１−１のＩＤおよび障害状態を取得し（処理フロー５０１−３，５０２−３）、ストレージコントローラ１４１−２からストレージコントローラ１４１−２のＩＤおよび障害状態を取得し（処理フロー５０３−３，５０４−３）、ストレージコントローラ１４１−４からストレージコントローラ１４１−４のＩＤおよび障害状態を取得する（処理フロー５０５−３，５０６−３）。そして、ストレージコントローラ１４１−３は、障害状態でないストレージコントローラ１４１のうち、自身のストレージコントローラ１４１−３のＩＤが最も小さい場合、ストレージコントローラ１４１−３をマスタコントローラとして決定する。
【００５７】
ストレージコントローラ１４１−４は、ストレージコントローラ１４１−１からストレージコントローラ１４１−１のＩＤおよび障害状態を取得し（処理フロー５０１−４，５０２−４）、ストレージコントローラ１４１−２からストレージコントローラ１４１−２のＩＤおよび障害状態を取得し（処理フロー５０３−４，５０４−４）、ストレージコントローラ１４１−３からストレージコントローラ１４１−３のＩＤおよび障害状態を取得する（処理フロー５０５−４，５０６−４）。そして、ストレージコントローラ１４１−４は、障害状態でないストレージコントローラ１４１のうち、自身のストレージコントローラ１４１−４のＩＤが最も小さい場合、ストレージコントローラ１４１−４をマスタコントローラとして決定する。
【００５８】
図６は、最適配置処理に係る処理フロー（マスタコントローラが最適配置の計算を行うときの処理フロー）の一例（最適配置処理６００）を示す図である。本例では、ストレージコントローラ１４１−１がマスタコントローラとして決定された場合を例に挙げて説明する。なお、最適配置処理６００の詳細については、図９および図１０を用いて後述する。
【００５９】
ストレージコントローラ１４１−１は、ストレージコントローラ１４１−２にデータ削減容量の計算を指示（データ削減容量計算指示）し（処理フロー６０１−２）、ストレージコントローラ１４１−３にデータ削減容量の計算を指示し（処理フロー６０１−３）、ストレージコントローラ１４１−４にデータ削減容量の計算を指示する（処理フロー６０１−４）。
【００６０】
ここで、各ストレージコントローラ１４１は、データ削減容量の計算の指示を受信したとき、データ削減容量計算処理６１０を行う。なお、データ削減容量計算処理６１０の詳細については、図１１を用いて後述する。
【００６１】
ストレージコントローラ１４１−２は、データ削減容量の計算の指示を受信すると（処理フロー６１１−２）、ストレージコントローラ１４１−１からボリューム２２０−１の情報を取得し（処理フロー６１２−２，６１３−２）、ストレージコントローラ１４１−３からボリューム２２０−３の情報を取得し（処理フロー６１４−２，６１５−２）、ストレージコントローラ１４１−４からボリューム２２０−４の情報を取得する（処理フロー６１６−２，６１７−２）。そして、ストレージコントローラ１４１−２は、自ストレージ装置１４０内のボリューム２２０−２と取得した他のボリューム２２０とを比較し、データ削減容量を算出し、算出した結果をストレージコントローラ１４１−１に送信する（処理フロー６１８−２）。
【００６２】
ストレージコントローラ１４１−３は、データ削減容量の計算の指示を受信すると（処理フロー６１１−３）、ストレージコントローラ１４１−１からボリューム２２０−１の情報を取得し（処理フロー６１２−３，６１３−３）、ストレージコントローラ１４１−２からボリューム２２０−２の情報を取得し（処理フロー６１４−３，６１５−３）、ストレージコントローラ１４１−４からボリューム２２０−４の情報を取得する（処理フロー６１６−３，６１７−３）。そして、ストレージコントローラ１４１−３は、自ストレージ装置１４０内のボリューム２２０−３と取得した他のボリューム２２０とを比較し、データ削減容量を算出し、算出した結果をストレージコントローラ１４１−１に送信する（処理フロー６１８−３）。
【００６３】
ストレージコントローラ１４１−４は、データ削減容量の計算の指示を受信すると（処理フロー６１１−４）、ストレージコントローラ１４１−１からボリューム２２０−１の情報を取得し（処理フロー６１２−４，６１３−４）、ストレージコントローラ１４１−２からボリューム２２０−２の情報を取得し（処理フロー６１４−４，６１５−４）、ストレージコントローラ１４１−３からボリューム２２０−３の情報を取得する（処理フロー６１６−４，６１７−４）。そして、ストレージコントローラ１４１−４は、自ストレージ装置１４０内のボリューム２２０−４と取得した他のボリューム２２０とを比較し、データ削減容量を算出し、算出した結果をストレージコントローラ１４１−１に送信する（処理フロー６１８−４）。
【００６４】
なお、ストレージコントローラ１４１−１は、ストレージコントローラ１４１−２からボリューム２２０−２の情報を取得し（処理フロー６１２−１，６１３−１）、ストレージコントローラ１４１−３からボリューム２２０−３の情報を取得し（処理フロー６１４−１，６１５−１）、ストレージコントローラ１４１−４からボリューム２２０−４の情報を取得する（処理フロー６１６−１，６１７−１）。そして、ストレージコントローラ１４１−１は、自ストレージ装置１４０内のボリューム２２０−１と取得した他のボリューム２２０とを比較し、データ削減容量を算出する。
【００６５】
また、ストレージコントローラ１４１−１は、ストレージコントローラ１４１−２，１４１−３，１４１−４から送信されたデータ削減容量に基づいて最適配置演算処理を行う。詳細については、図１０を用いて後述するが、最適配置演算処理では、重複排除によるデータ削減の効果があるボリューム２２０の配置が決定される。
【００６６】
また、ストレージコントローラ１４１−１は、マイグレーション実行処理６２０を行う。ストレージコントローラ１４１−１は、各ストレージコントローラ１４１による最適配置演算処理の結果に基づいて、ストレージコントローラ１４１−２にボリューム２２０の再配置（マイグレーションの実行）を指示し（処理フロー６２１）、ストレージコントローラ１４１−３にボリューム２２０の再配置を指示し（処理フロー６２２）、ストレージコントローラ１４１−４にボリューム２２０の再配置を指示する（処理フロー６２３）。
【００６７】
ここで、マイグレーションについては、ユーザによる指示に基づいてストレージコントローラ１４１が実行する構成としてもよいし、ストレージシステム１００上に設定されたしきい値によりストレージコントローラ１４１が判断して実行する構成としてもよい。しきい値としては、データ削減の効果がボリューム２２０の再配置前より１０％以上改善される値が挙げられる。しきい値により自動的にマイグレーションが実行される構成とした場合は、マイグレーションの結果を管理装置１２０のディスプレイ１２５に表示し、必要に応じて管理者は、マイグレーションをもとに戻すことも可能にする構成を採用することが好適である。
【００６８】
付言するならば、マイグレーションの方法については限定されるものではない。例えば、ホスト装置１１０の業務を停止し、移行元のボリューム２２０のデータを管理装置１２０を介して移行先のボリューム２２０に移行し、移行先のボリューム２２０へのアクセスパスの切り替え、業務を再開する方法であってもよい。また、例えば、仮想ボリュームの場合、移行元の仮想ボリュームから移行先の仮想ボリュームにデータをコピーし、マイグレーションの実行中にも、ホスト装置１１０からオンラインでデータの読み込みおよび書き込みを受け付け、データのコピー中にホスト装置１１０からの書き込みＩ／Ｏが発生した場合は、差分データだけを移行先の仮想ボリュームにコピーし直し、差分がなくなるまでコピーを繰り返す方法であてもよい。その他の公知の方法により、マイグレーションを行うようにしてもよい。
【００６９】
なお、図示は省略するが、ストレージコントローラ１４１は、マイグレーションが完了すると、重複しているデータを排除する処理を行ってもよい。ここで、マイグレーションを行うことなく、重複しているデータを排除することも考えられる。この場合、排除されなかったデータが変更され、データが一致しなくなった場合、ストレージ装置１４０間でもとに戻す処理が必要になってしまい、処理負担の増加、通信コストの増加などによるストレージシステム１００のパフォーマンスの低下を招く可能性がある。そこで、本ストレージシステム１００では、重複排除の対象となるボリューム２２０を一のストレージ装置１４０にまとめる（片寄せする）ように、ボリューム２２０をマイグレーションすることで、かかる事態を回避している。
【００７０】
図７は、最適配置開始要求時処理４００に係るフローチャートの一例を示す図である。最適配置開始要求時処理４００は、最適配置開始要求を受信したストレージ装置１４０のストレージコントローラ１４１（例えば、役割決定部２１２）により行われる。
【００７１】
ステップＳ７０１では、役割決定部２１２は、全ストレージコントローラ１４１の最適配置の実行状態を取得する。
【００７２】
ステップＳ７０２では、役割決定部２１２は、既に最適配置の実行状態のストレージコントローラ１４１があるか否かを判定する。役割決定部２１２は、あると判定した場合、最適配置開始要求時処理４００を終了し、ないと判定した場合、ステップＳ７０３に処理を移す。
【００７３】
ステップＳ７０３では、役割決定部２１２は、全ストレージコントローラ１４１に最適配置の実行を指示し、最適配置開始要求時処理４００を終了する。
【００７４】
図８は、最適配置実行指示受信時処理５００に係るフローチャートの一例を示す図である。最適配置実行指示受信時処理５００は、最適配置の実行の指示を受信したストレージ装置１４０のストレージコントローラ１４１（例えば、役割決定部２１２）により行われる。
【００７５】
ステップＳ８０１では、役割決定部２１２は、全ストレージコントローラ１４１のＩＤ（例えば、シリアル番号）と障害状態とを取得する。
【００７６】
ステップＳ８０２では、役割決定部２１２は、障害状態でないストレージコントローラ１４１の中で自ストレージコントローラ１４１のＩＤが最小であるか否かを判定する。役割決定部２１２は、最小であると判定した場合、ステップＳ８０３に処理を移し、最小でないと判定した場合、最適配置実行指示受信時処理５００を終了する。
【００７７】
ステップＳ８０３では、役割決定部２１２は、自ストレージコントローラ１４１をマスタコントローラとして決定し、最適配置実行指示受信時処理５００を終了する。なお、ストレージコントローラ１４１は、マスタコントローラとして決定されると、最適配置処理６００を行う。
【００７８】
図９は、最適配置処理６００に係るフローチャートの一例を示す図である。最適配置処理６００は、マスタコントローラ（例えば、最適配置演算部２１４およびマイグレーション実行部２１５）により実行される。
【００７９】
ステップＳ９０１では、最適配置演算部２１４は、全ストレージコントローラ１４１（自ストレージ装置１４０およびネットワーク１５０を介して接続される他のストレージ装置１４０）にボリューム２２０に係る情報の収集とデータ削減容量の計算とを指示する。収集される情報（収集情報）の例については、図１２に示す。
【００８０】
図１２は、収集情報の一例（ボリューム情報１２００）を示す図である。ボリューム情報１２００には、ボリューム２２０に係る情報が含まれる。より具体的には、ボリューム情報１２００には、ストレージ装置ＩＤフィールド１２０１、装置最大容量フィールド１２０２、装置使用容量フィールド１２０３、ボリュームＩＤフィールド１２０４、ボリューム容量フィールド１２０５、ブロック番号フィールド１２０６、およびハッシュ値フィールド１２０７の情報が含まれる。
【００８１】
ストレージ装置ＩＤフィールド１２０１には、ストレージ装置１４０を識別可能な情報が含まれる。装置最大容量フィールド１２０２には、ストレージ装置１４０（ディスクエンクロージャ１４２）の最大容量を示す情報が含まれる。装置使用容量フィールド１２０３には、ストレージ装置１４０（ディスクエンクロージャ１４２）で使用されている容量を示す情報が含まれる。ボリュームＩＤフィールド１２０４には、ストレージ装置１４０に設けられるボリューム２２０を識別可能な情報が含まれる。ボリューム容量フィールド１２０５には、ボリューム２２０の容量を示す情報が含まれる。ブロック番号フィールド１２０６には、ブロックデータが格納されるブロックを識別可能な情報が含まれる。ハッシュ値フィールド１２０７には、ブロックデータのハッシュ値が含まれる。
【００８２】
ステップＳ９０２では、最適配置演算部２１４は、ストレージコントローラ１４１からデータ削減容量の計算結果を取得する。データ削減容量の計算結果の例については、図１３に示す。
【００８３】
図１３は、データ削減容量の計算結果の一例（計算結果１３００）を示す図である。計算結果１３００には、ストレージ装置ＩＤフィールド１３０１、ボリュームＩＤフィールド１３０２、比較対象ボリュームＩＤフィールド１３０３、およびデータ削減容量フィールド１３０４の情報が含まれる。なお、計算結果１３００には、その他のボリューム情報１２００（ボリューム容量、装置最大容量など）の情報が含まれていてもよい。
【００８４】
ストレージ装置ＩＤフィールド１３０１には、ストレージ装置１４０を識別可能な情報が含まれる。ボリュームＩＤフィールド１３０２には、ストレージ装置１４０に設けられるボリューム２２０を識別可能な情報が含まれる。比較対象ボリュームＩＤフィールド１３０３には、比較対象のボリューム２２０を識別可能な情報が含まれる。データ削減容量フィールド１３０４には、データ削減容量を示す情報が含まれる。
【００８５】
ステップＳ９０３では、最適配置演算部２１４は、全ストレージコントローラ１４１から計算結果の取得を完了したか否かを判定する。最適配置演算部２１４は、完了したと判定した場合、ステップＳ９０４に処理を移し、完了していないと判定した場合、ステップＳ９０２に処理を移す。取得が完了した計算結果（全計算結果）の例については、図１４に示す。
【００８６】
図１４は、全計算結果の一例（全計算結果１４００）を示す図である。全計算結果１４００には、ストレージ装置ＩＤフィールド１４０１、ボリュームＩＤフィールド１４０２、比較対象ボリュームＩＤフィールド１４０３、およびデータ削減容量フィールド１４０４の情報が含まれる。各フィールドは、図１３に示す各フィールドと同じであるのでその説明を省略する。
【００８７】
ステップＳ９０４では、最適配置演算部２１４は、最適配置演算処理を行う。最適配置演算処理では、ボリューム２２０の最適配置が演算（決定）される。なお、最適配置演算処理の詳細については、図１０を用いて後述する。
【００８８】
ステップＳ９０５では、マイグレーション実行部２１５は、最適配置演算部２１４により演算された最適配置に基づいて、全ストレージコントローラ１４１にマイグレーションの実行を指示する。
【００８９】
図１０は、最適配置演算処理に係るフローチャートの一例を示す図である。
【００９０】
ステップＳ１００１では、最適配置演算部２１４は、ストレージ装置１４０に配置するボリューム２２０をグルーピングするための基準ボリュームと、グルーピングしたボリューム群を配置するストレージ装置１４０（配置ストレージ装置）とを決定する。例えば、最適配置演算部２１４は、基準ボリュームと配置ストレージ装置との組合せのうち、未処理の組合せを選択する。基準ボリュームと配置ストレージ装置との組合せの例については、図１５に示す。
【００９１】
図１５は、基準ボリュームと配置ストレージ装置との組合せの一例（処理対象組合せ１５００）を示す図である。処理対象組合せ１５００には、ボリュームＩＤとストレージ装置ＩＤとの組合せを示す情報が含まれる。より具体的には、処理対象組合せ１５００では、ストレージシステム１００における全てのボリューム２２０と全てのストレージ装置１４０との組合せが規定されている。
【００９２】
ステップＳ１００２では、最適配置演算部２１４は、全計算結果を参照し、基準ボリュームに対してデータ削減容量が大きい順に配置ストレージ装置に配置するボリューム２２０を決定する。その際、最適配置演算部２１４は、配置ストレージ装置の最大容量を超えない範囲でボリューム２２０を決定する。
【００９３】
ここで、基準ボリュームＩＤが「ＶＯＬ１」であり、配置ストレージ装置ＩＤが「ｓｔｏｒａｇｅＡ」であるときの例（ボリューム２２０を選定する方法の一例）を図１６に示す。図１６に示すように、最適配置演算部２１４は、装置最大容量「５０ＴＢ」を超えない範囲で、基準ボリュームの「ｓｔｏｒａｇｅＡのＶＯＬ１」と、基準ボリュームとのデータ削減容量の大きい順のボリューム２２０として、「ｓｔｏｒａｇｅＡのＶＯＬ３」、「ｓｔｏｒａｇｅＤのＶＯＬ１３」、および「ｓｔｏｒａｇｅＡのＶＯＬ４」とを配置ストレージ装置に配置するボリューム２２０（配置ボリューム群１６０１）として決定する。
【００９４】
ステップＳ１００３では、最適配置演算部２１４は、配置が未決定のボリューム２２０（未決ボリューム）の中から一のボリューム２２０を選択（決定）する。例えば、最適配置演算部２１４は、基準ボリュームと配置ストレージ装置との１番目の組合せにおいて、配置ストレージ装置に配置するボリューム２２０として、「ｓｔｏｒａｇｅＡのＶＯＬ１」、「ｓｔｏｒａｇｅＡのＶＯＬ３」、「ｓｔｏｒａｇｅＤのＶＯＬ１３」、および「ｓｔｏｒａｇｅＡのＶＯＬ４」を決定した場合、図１７に示すように、全ボリューム一覧１７０１から未決ボリューム一覧１７０２を生成し、未決ボリューム一覧１７０２から一のボリューム（例えば、ボリュームＩＤが最も小さいボリューム２２０）を選択する。
【００９５】
ステップＳ１００４では、最適配置演算部２１４は、未決定のストレージ装置１４０（未決ストレージ装置）の中から、一のストレージ装置１４０を選択（決定）する。例えば、基準ボリュームと配置ストレージ装置との１番目の組合せにおいて、配置ストレージ装置として「ｓｔｏｒａｇｅＡ」を決定した場合、図１８に示すように、全ストレージ装置一覧１８０１から未決ストレージ装置一覧１８０２を生成し、未決ストレージ装置一覧１８０２から一のストレージ装置１４０（例えば、ストレージ装置ＩＤが最も小さいストレージ装置１４０）を選択する。
【００９６】
ステップＳ１００５では、最適配置演算部２１４は、選択した一のボリューム（選択ボリューム）に対してデータ削減容量が大きい順に、選択した一のストレージ装置１４０（選択ストレージ装置）に配置するボリューム２２０を決定する。この処理は、ステップＳ１００２の処理と同様であるので、その説明を省略する。
【００９７】
ステップＳ１００６では、最適配置演算部２１４は、未決ボリュームがあるか否かを判定する。最適配置演算部２１４は、未決ボリュームがあると判定した場合、ステップＳ１００３に処理を移し、未決ボリュームがないと判定した場合、ステップＳ１００７に処理を移す。
【００９８】
ステップＳ１００７では、最適配置演算部２１４は、ボリューム２２０の配置を変更した場合の全ストレージ装置１４０の総容量（配置変更後総容量）を計算する。より具体的には、最適配置演算部２１４は、決定したボリューム２２０の配置に従って、各ストレージ装置１４０において、重複しているデータを排除した場合の容量を計算し、全ストレージ装置１４０の容量の合計を配置変更後総容量として算出する。
【００９９】
例えば、最適配置演算部２１４は、自ストレージ装置１４０に第１のボリューム２２０と第２のボリューム２２０と第３のボリューム２２０とが配置される場合、各ボリューム２００のハッシュ値を比較してデータ削除容量を計算する。この際、最適配置演算部２１４は、第１のボリューム２２０と第２のボリューム２２０と第３のボリューム２２０とに共通してハッシュ値「Ａ」が含まれる場合、当該ハッシュ値「Ａ」に対応するブロックデータ３つのうち、１つを残して２つを排除するものとしてデータ削除容量を計算する。
【０１００】
ステップＳ１００８では、最適配置演算部２１４は、予め設定された目標とする総容量（目標総容量。例えば、配置変更前総容量よりも１０％小さい容量。）よりも配置変更後総容量が小さいか否か（総容量が改善するか否か）を判定する。最適配置演算部２１４は、改善すると判定した場合、ステップＳ１００９に処理を移し、改善しないと判定した場合、ステップＳ１０１０に処理を移す。
【０１０１】
ここで、目標総容量と配置変更後総容量との一例を図１９に示す。図１９では、目標総容量１９０１は、「１４０ＴＢ」であり、配置変更後総容量１９０２は、「１３７ＴＢ」であることが示されている。この場合は、改善すると判定される。
【０１０２】
ステップＳ１００９では、最適配置演算部２１４は、暫定の最適配置として最適配置情報を保存する。この際、最適配置演算部２１４は、既に、暫定の最適配置を保存している場合、データ削減容量の大きい方（配置変更後総容量が小さい方）の最適配置情報を保存する。なお、暫定の最適配置情報を更新する構成に限られるものではなく、暫定の最適配置情報を追加していく構成としてもよい。
【０１０３】
図２０は、最適配置情報の一例（最適配置テーブル２０００）を示す図である。最適配置テーブル２０００には、ストレージ装置ＩＤフィールド２００１とマイグレーション先フィールド２００２との情報が格納されている。マイグレーション先フィールド２００２には、当該ストレージ装置ＩＤのストレージ装置１４０に含まれるボリューム２２０のボリュームＩＤと、当該ボリューム２２０が設けられることになるストレージ装置１４０（マイグレーション先）のストレージ装置ＩＤとが対応付けられて含まれる。
【０１０４】
ステップＳ１０１０では、最適配置演算部２１４は、基準ボリュームと配置ストレージ装置との組合せのうち未処理の組合せがあるか否かを判定する。最適配置演算部２１４は、未処理の組合せがあると判定した場合、ステップＳ１００１に処理を移し、未処理の組合せがないと判定した場合、ステップＳ１０１１に処理を移す。
【０１０５】
ステップＳ１０１１では、最適配置演算部２１４は、暫定の最適配置情報を最適配置として出力する。
【０１０６】
例えば、最適配置演算部２１４は、マイグレーション実行部２１５に最適配置情報を通知してもよい。マイグレーション実行部２１５は、最適配置情報に従って、他のマイグレーション実行部２１５に指示を出す（例えば、ステップＳ９０５において最適配置情報を送信する）。各マイグレーション実行部２１５は、指示を受け取ると、マイグレーションを実行する。
【０１０７】
また、例えば、最適配置演算部２１４は、管理装置１２０に最適配置情報を送信してもよい。管理装置１２０は、最適配置情報を受信すると、例えば、最適配置情報をディスプレイ１２５に表示する。管理装置１２０は、例えば、入力装置１２４を介して管理者による入力（マイグレーションの実行許可など）を受け付け、入力に従って、マイグレーション実行部２１５に指示を出す。
【０１０８】
図１１は、データ削減容量計算処理６１０に係るフローチャートの一例を示す図である。
【０１０９】
ステップＳ１１０１では、データ削減容量演算部２１３は、マスターストレージから情報収集とデータ削減容量の計算との指示を受信する。
【０１１０】
ステップＳ１１０２では、データ削減容量演算部２１３は、全ストレージコントローラ１４１（ストレージ装置１４０）からボリューム情報を取得する。
【０１１１】
ステップＳ１１０３では、データ削減容量演算部２１３は、自ストレージ装置１４０内のボリューム２２０と全ボリューム２２０とを比較（自ストレージ装置１４０内のボリューム同士の比較も含む。）し、データ削減容量を計算する。
【０１１２】
ここで、自ストレージ装置１４０内の一のボリューム２２０（第１のボリューム２２０）と全ボリューム２２０における一のボリューム２２０（第２のボリューム２２０）とを例に挙げてデータ削減容量演算部２１３が行うデータ削減容量の計算方法について説明する。このケースでは、データ削減容量演算部２１３は、第１のボリューム２２０と第２のボリューム２２０とにおいて一致するハッシュ値を特定し、特定したハッシュ値に対応するブロック番号のブロックデータの容量の総和を第１のボリューム２２０と第２のボリューム２２０とにおけるデータ削減容量とする。
【０１１３】
付言するならば、ハッシュ値に対応するブロック番号のブロックデータの容量については、ブロックが固定長である場合、ブロックの固定長（例えば、８ｋｂｉｔｅ）と、特定したハッシュ値の数とを乗算して求めてもよいし、特定したハッシュ値に対応するブロック番号のブロックデータを読み出して求めてもよいし、その他の方法により求めてもよい。
【０１１４】
ステップＳ１１０４では、データ削減容量演算部２１３は、自ストレージ装置１４０のボリューム２２０についての計算結果（データ削減容量)をマスタコントローラに送信する。
【０１１５】
本実施の形態によれば、例えば、ストレージコントローラが、他のストレージ装置のストレージコントローラと通信し、他のストレージ装置も含めてボリュームの比較を行い、データ削減の効果が大きくなるようにストレージ装置間でボリュームを入れ替えることで、データセンタ全体のデータ削減の効果を高めることができ、ボリュームの容量の利用効率を上げることができる。
【０１１６】
（２）第２の実施の形態
本実施の形態では、予測されたデータ削減容量を用いて最適配置を求める構成について説明する。第１の実施の形態と同じ構成については、同じ符号を用いてその説明を省略する。
【０１１７】
本ストレージシステム１００では、データ削減容量演算部２１３は、ステップＳ１１０３において、計算したデータ削減容量（計算結果）と、計算した時間（日時）とを対応付けて共有資源（例えば、ディスクエンクロージャ１４２）に記憶する。また、データ削減容量演算部２１３は、ステップＳ１１０３において、データ削減容量の推移から今後のデータ削減容量を予測する。予測する方法については、特に限定されるものではないが、データ削減容量演算部２１３は、例えば、図２１に示すように、線形近似式を求め、所定時間（例えば、１か月）後のデータ削減容量を算出する。
【０１１８】
図２１は、データ削減容量の推移を示すデータ削減容量推移２１１０と、データ削減容量の予測を示すデータ削減容量予測２１２０との一例を示す図である。
【０１１９】
本例では、自ストレージ装置１４０内の一のボリューム２２０と他のボリューム（例えば、「ＶＯＬ１」と「ＶＯＬ２」、「ＶＯＬ３」、「ＶＯＬ４」との関係）について、データ削減容量推移２１１０とデータ削減容量予測２１２０とを示している。なお、他ストレージ装置１４０内の各ボリューム２２０（例えば、「ＶＯＬ１」と「ＶＯＬ４」〜「ＶＯＬ１３」との関係）についても同様であるので図示は省略する。
【０１２０】
例えば、データ削減容量推移２１１０−１では、「ＶＯＬ１」と「ＶＯＬ２」とのデータ削減容量の推移を示す推移２１１１−１が示され、データ削減容量推移２１１０−１では、推移２１１１−１を線形近似した直線２１２１−１が示されている。直線２１２１−１によれば、例えば、現在１０月である場合、「ＶＯＬ１」と「ＶＯＬ２」とにおける１１月のデータ削減容量を予測することができる。
【０１２１】
そして、ステップＳ１１０４では、データ削減容量演算部２１３は、予測したデータ削減容量をマスタコントローラに送信する。マスタコントローラは、予測されたデータ削減容量を用いて最適配置の計算を行う。
【０１２２】
本実施の形態によれば、予測したデータ削減容量を用いることで、重複するデータをより効果的に排除できるようになる。
【０１２３】
（３）他の実施の形態
なお上述の実施の形態においては、本発明をストレージシステムに適用するようにした場合について述べたが、本発明はこれに限らず、この他種々のシステム、装置、方法、プログラムに広く適用することができる。
【０１２４】
また上述の実施の形態においては、ストレージコントローラ１４１−１Ａが稼働機であり、ストレージコントローラ１４１−１Ｂが待機機である場合について述べたが、本発明はこれに限らず、ストレージコントローラ１４１−１Ａおよびストレージコントローラ１４１−１Ｂが稼働機であってもよい。また、ストレージ装置１４０に設けられるストレージコントローラ１４１は、２つに限られるものではなく、３つ以上であってもよい。この場合、一のストレージコントローラ１４１が他のストレージコントローラ１４１のスロット番号を取得し、自ストレージコントローラ１４１が最も若番である場合、当該一のストレージコントローラ１４１が代表コントローラとして重複排除処理を行ってもよい。また、例えば、一のストレージコントローラ１４１が他のストレージコントローラ１４１の負荷情報（例えば、ＣＰＵ使用率）を取得し、自ストレージコントローラ１４１の負荷が最も低い場合、当該一のストレージコントローラ１４１が代表コントローラとして重複排除処理を行ってもよい。また、重複排除処理を行うストレージコントローラ１４１で障害が発生した場合、他の全ストレージコントローラ１４１がハートビートにより、障害を検知し、再びスロット番号または負荷情報により、代表コントローラを決定するようにしてもよい。これは、共有資源にハッシュ値テーブル２３０を格納することにより、障害発生後も別のストレージコントローラ１４１が処理を継続することができる。
【０１２５】
また上述の実施の形態においては、ステップＳ８０２では、役割決定部２１２は、障害状態でないストレージコントローラ１４１の中で自ストレージコントローラ１４１のＩＤが最小であるか否かを判定する場合について述べたが、本発明はこれに限らず、ステップＳ８０２では、役割決定部２１２は、障害状態でないストレージコントローラ１４１の中で自ストレージコントローラ１４１の負荷が最も低いか否かを判定するようにしてもよい。
【０１２６】
また上述の実施の形態においては、ストレージコントローラ１４１が最適配置の開始要求を受信することを契機にマスタコントローラ決定処理が開始する場合について述べたが、本発明はこれに限らず、定期的（例えば、１週間間隔）にマスタコントローラ決定処理が開始するようにしてもよい。この場合、全てのストレージコントローラ１４１が他のストレージコントローラ１４１からＩＤを取得し、ＩＤが最小のストレージコントローラ１４１が最適配置の開始要求を受信したものとしてマスタコントローラ決定処理を行ってもよい。
【０１２７】
また上述の実施の形態においては、最適配置演算処理では、データ削減容量を用いる場合について述べたが、本発明はこれに限らず、ハッシュ値の一致率を用いるようにしてもよい。
【０１２８】
また上述の実施の形態においては、配置変更後総容量については、実際のデータ削減容量を算出する場合について述べたが、本発明はこれに限らず、例えば、収集したデータ削減容量から配置変更後総容量を推定するようにしてもよい。例えば、最適配置演算部２１４は、図１６に示す配置ボリューム群１６０１をストレージ装置Ａに配置すると決定した場合、総ボリューム容量「３８ＴＢ（＝１０ＴＢ＋１０ＴＢ＋８ＴＢ＋１０ＴＢ）」から推定データ削減容量「２．１ＴＢ」を減算し、ストレージ装置Ａの容量を「３５．９ＴＢ」として概算する。この際、推定データ削減容量「２ＴＢ」は、ＶＯＬ１−ＶＯＬ３間の８００ＧＢ＋ＶＯＬ１−ＶＯＬ１３間の４８０ＧＢ＋ＶＯＬ１−ＶＯＬ４間の４００ＧＢ＋ＶＯＬ３−ＶＯＬ１３間の３００ＧＢ（図示は省略。）＋ＶＯＬ３−ＶＯＬ４間の１００ＧＢ（図示は省略。）＋ＶＯＬ１３−ＶＯＬ４間の２０ＧＢ（図示は省略。）により算出される。
【０１２９】
また上述の実施の形態においては、基準ボリュームに対してデータ削減容量が大きい順に対象ストレージ装置に配置するボリュームを決定することで計算量を低減する方法について述べたが、本発明はこれに限らず、ストレージシステム１００におけるストレージ装置とボリュームとの組合せ全てについて計算するように構成してもよい。
【０１３０】
また上述の実施の形態においては、目標総容量よりも配置変更後総容量が小さいか否かを判定する場合について説明したが、本発明はこれに限らない。例えば、各ストレージ装置１４０に目標容量を設け、目標総容量に加えてまたは替えて、ストレージ装置１４０の目標容量よりも配置変更後の容量が小さいと、全てのストレージ装置１４０について判定された場合、改善すると判定するようにしてもよい。
【０１３１】
また、上述の実施の形態において、「インターフェース」は、１以上のインターフェースでよい。当該１以上のインターフェースは、１以上の同種の通信インターフェースデバイス（例えば１以上のＮＩＣ（Network Interface Card））であってもよいし２以上の異種の通信インターフェースデバイス（例えばＮＩＣとＨＢＡ（Host Bus Adapter））であってもよい。
【０１３２】
また、上述の実施の形態において、「メモリ」は、１以上のメモリであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも１つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。
【０１３３】
また、上述の実施の形態において、「記憶装置」は、１以上のＰＤＥＶであり、典型的には補助記憶デバイスでよい。「ＰＤＥＶ」は、物理的な記憶デバイス（Physical storage DEVice）を意味し、典型的には、不揮発性の記憶デバイス、例えばＨＤＤ（Hard Disk Drive）又はＳＳＤ（Solid State Drive）である。
【０１３４】
また、上述の実施の形態において、「記憶資源」は、メモリ部とＰＤＥＶ部の少なくとも一部とのうちの少なくとも１つ（典型的には少なくともメモリ部）である。
【０１３５】
また、上述の実施の形態において、「プロセッサ」は、１以上のプロセッサである。少なくとも１つのプロセッサは、典型的には、ＣＰＵ（Central Processing Unit）のようなマイクロプロセッサであるが、ＧＰＵ（Graphics Processing Unit）のような他種のプロセッサでもよい。少なくとも１つのプロセッサは、シングルコアでもよいしマルチコアでもよい。少なくとも１つのプロセッサは、処理の一部又は全部を行うハードウェア回路（例えばＦＰＧＡ（Field-Programmable Gate Array）又はＡＳＩＣ（Application Specific Integrated Circuit））といった広義のプロセッサでもよい。
【０１３６】
また、上述の実施の形態において、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部（例えばメモリ）及び／又はインターフェース部（例えば通信ポート）等を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサ部あるいはそのプロセッサ部を有する装置が行う処理としてもよい。また、プロセッサ部は、処理の一部又は全部を行うハードウェア回路（例えばＦＰＧＡ（Field-Programmable Gate Array）またはＡＳＩＣ（Application Specific Integrated Circuit））を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記録媒体（例えば非一時的な記録媒体）であってもよい。また、以下の説明において、２以上のプログラムが１つのプログラムとして実現されてもよいし、１つのプログラムが２以上のプログラムとして実現されてもよい。
【０１３７】
また、上述の実施の形態において、各テーブルの構成は一例であり、１つのテーブルは、２以上のテーブルに分割されてもよいし、２以上のテーブルの全部または一部が１つのテーブルであってもよい。
【０１３８】
また、上述の実施の形態において、説明の便宜上、ＸＸテーブルを用いて各種のデータを説明したが、データ構造は限定されるものではなく、ＸＸ情報などと表現してもよい。
【０１３９】
また、上記の説明において、各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Solid State Drive）等の記憶装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【０１４０】
ここで、本発明に係るストレージシステムは、例えば、一または複数の論理ボリューム（例えば、実ボリューム、仮想ボリューム）が設けられるストレージ装置（例えば、ストレージ装置１４０）を複数備えるストレージシステム（例えば、ストレージシステム１００）であって、上記複数のストレージ装置のうちの一のストレージ装置（例えば、最も若番のストレージ装置１４０であってもよいし、ＣＰＵ使用率などの負荷が最も低いストレージ装置１４０であってもよいし、予め指定されたストレージ装置１４０であってもよい。）は、上記ストレージシステムにおける論理ボリュームに対して書込要求が発生したデータのデータ情報（例えば、データそのもの（生データ）であってもよいし、データのハッシュ値であってもよいし、データ削減容量であってもよいし、ハッシュ値の一致率であってもよい。）に基づいて、上記ストレージシステムにおけるストレージ装置と論理ボリュームとの複数の組合せ（例えば、全ての組合せであってもよいし、図１０に示すように似ているボリュームを集ること等を前提として枝葉をとった組合せであってもよいし、ユーザにより定義された組合せであってもよいし、全ての組合せであってもよい。）について、ストレージ装置ごとに、重複したデータを排除したときのデータ容量（例えば、実際のデータの容量であってもよいし、推定したデータの容量であってもよい。）を算出し、算出したデータ容量の合計を上記ストレージシステム全体としての総容量（例えば、配置変更後総容量）として計算し、上記複数の組合せのうちで最も総容量が小さい組合せを示す情報（例えば、最適配置であってもよいし、最適配置を含む暫定の最適配置であってもよい。）を出力する最適配置演算処理（例えば、図１０に示す最適配置演算処理）を行う、ことを特徴とする。
【０１４１】
上述した構成によれば、例えば、重複したデータを排除したときの総容量が最も小さいストレージ装置と論理ボリュームとの組合せを特定できるので、システム全体として重複したデータを効果的に排除することができる。
【０１４２】
また、本発明に係るストレージシステムは、例えば、上記複数のストレージ装置の各々は、ホスト装置（例えば、ホスト装置１１０）からの論理ボリュームに対する書込要求に応じてデータを格納する際、データを格納する単位であるブロックを識別可能なブロック番号と上記ブロックに書き込むデータのハッシュ値とを論理ボリュームごとにハッシュ情報（例えば、ハッシュ値テーブル２３０）として記憶し、他のストレージ装置で記憶されているハッシュ値（例えば、ハッシュ値であってもよいし、ハッシュ値が含まれるボリューム情報１２００であってもよい。）を取得し、取得したハッシュ値と自身のストレージ装置で記憶しているハッシュ値とを論理ボリュームごとに比較し、一致しているハッシュ値のデータ容量を自身のストレージ装置の論理ボリュームに係るデータ情報（例えば、データ削減容量）として算出し、算出したデータ情報（例えば、データ削減容量であってもよいし、データ削減容量を含む計算結果１３００であってもよい。）を上記一のストレージ装置に送信し、上記一のストレージ装置は、ストレージ装置に配置される論理ボリューム間で一致するデータ容量の合計を、重複したデータを排除したときのデータ容量として算出する、ことを特徴とする。
【０１４３】
上述した構成によれば、例えば、各ストレージ装置で分散してデータ削減容量の計算を行うので、一のストレージ装置にかかる負荷を低減することができる。
【０１４４】
また、本発明に係るストレージシステムは、例えば、上記複数のストレージ装置の各々で算出したデータ情報を一のストレージ装置で行うようにしてもよい。例えば、上記複数のストレージ装置の各々は、記憶したハッシュ値を上記一のストレージ装置に送信し、上記一のストレージ装置は、受信したハッシュ値をストレージ装置に配置される論理ボリューム間で比較し、一致しているハッシュ値のデータ容量を、重複したデータを排除したときのデータ容量として算出する、ことを特徴とする。
【０１４５】
上述した構成によれば、例えば、一のストレージ装置でデータ削減容量の計算を行うので、システム管理が容易になる。
【０１４６】
また、例えば、ＲＡＷデータ（生データ）をやり取りしてデータ削減容量の比較を行うと、ストレージ装置間の通信が膨大になり得る。この点、ハッシュ値をやり取りしてデータの比較を行うことで、少ない通信量および演算量でストレージ装置間の論理ボリュームの比較を行うことができる。
【０１４７】
また、本発明に係るストレージシステムは、例えば、上記一のストレージ装置は、上記ストレージシステムにおけるストレージ装置に配置する複数の論理ボリュームとして、上記複数の論理ボリュームにおける一の論理ボリュームと一致するデータ容量が大きい順に論理ボリュームを選択し、上記ストレージシステムにおけるストレージ装置と論理ボリュームとの組合せを決定する、ことを特徴とする。
【０１４８】
上述した構成によれば、例えば、一の論理ボリュームと一致するデータ容量が大きい順に論理ボリュームを選択することで類似する論理ボリュームを推定し、類似する論理ボリュームを集めることで枝葉の組合せ切り捨てることができ、計算量を減らすことができる。
【０１４９】
また、本発明に係るストレージシステムは、例えば、上記複数のストレージ装置の各々は、上記最適配置演算処理を行うプログラム（例えば、最適配置演算部２１４を実現するためのプログラム）を有し、上記ストレージシステムにおける他のストレージ装置の識別情報（ストレージ装置ＩＤであってもよいし、当該ストレージ装置１４０に含まれる一のストレージコントローラ１４１のＩＤであってもよい。）と障害状態（例えば、故障している、ＣＰＵ使用率がしきい値を超えるなど）とを取得し、障害状態でないストレージ装置の中で自身のストレージ装置の識別情報が最小であるか否かを判定し、最小であると判定した場合、上記最適配置演算処理のプログラムを実行し、上記最適配置演算処理を行う、ことを特徴とする。
【０１５０】
上述した構成によれば、例えば、データセンタ内またはネットワーク内にストレージ装置を追加するだけで、ストレージ装置同士が自動でお互いを検知し、ストレージ装置間のボリュームの最適配置が行われるようになる。
【０１５１】
また、本発明に係るストレージシステムは、例えば、上記複数のストレージ装置の各々は、冗長化されている複数のストレージコントローラ（例えば、ストレージコントローラ１４１）を含んで構成され、自身のストレージ装置に含まれる全てのストレージコントローラから参照可能な記憶領域（例えば、ディスクエンクロージャ１４２）にハッシュ情報を記憶し、上記複数のストレージコントローラの各々は、上記最適配置演算処理を行うプログラムを有し、上記複数のストレージ装置の各々において、自身のストレージ装置に含まれるストレージコントローラのうちの一のストレージコントローラ（最も若番のストレージコントローラ１４１であってもよいし、ＣＰＵ使用率などの負荷が最も低いストレージコントローラ１４１であってもよいし、予め指定されたストレージコントローラ１４１であってもよい。）は、上記ストレージシステムにおける他のストレージ装置の識別情報（ストレージ装置ＩＤであってもよいし、ストレージコントローラ１４１のＩＤであってもよい。）と障害状態とを取得し、障害状態でないストレージ装置の中で自身のストレージ装置の識別情報が最小であるか否かを判定し、最小であると判定した場合、上記最適配置演算処理のプログラムを実行し、上記最適配置演算処理を行う、ことを特徴とする。
【０１５２】
上述した構成によれば、例えば、ネットワーク内で最適配置演算処理を行っているストレージコントローラが故障したとしても、別のストレージ装置のストレージコントローラが最適配置演算処理を行うことができる。
【０１５３】
また、例えば、ストレージコントローラは、ストレージ装置内で冗長化されているので、データの比較、最適配置演算処理、マイグレーションの実行は、負荷が小さい方で行うことができる。また、片方で障害が起きたとしても、別のストレージコントローラが処理を引き継ぎ、重複排除処理を行うことができる。
【０１５４】
また、本発明に係るストレージシステムは、例えば、一のストレージ装置は、上記最適配置演算処理の結果に従って、上記複数のストレージ装置に対して論理ボリュームの移行先を指示する、ことを特徴とする。
【０１５５】
上述した構成によれば、例えば、論理ボリュームを片寄せして重複したデータを排除するので、排除したデータをもとに戻す事態が生じたとしても、かかる処理のためにストレージ装置１４０間での通信が行われないので、ストレージシステム全体としてのパフォーマンスを向上させることができる。
【０１５６】
また、本発明に係るストレージシステムは、例えば、上記一のストレージ装置は、上記データ情報と上記データ情報が算出された時間を示す時間情報とを時系列情報（例えば、データ削減容量推移２１１０）として記憶し、上記最適配置演算処理において、上記時系列情報から近似曲線（例えば、データ削減容量の推移を示す推移２１１１を線形近似した直線２１２１）を求め、将来における所定の時間（例えば、１か月後）のデータ情報を予測し、予測したデータ情報を用いて、上記ストレージシステムにおけるストレージ装置と論理ボリュームとの複数の組合せについて、ストレージ装置ごとに、重複したデータを排除したときのデータ容量を算出し、算出したデータ容量の合計を上記ストレージシステム全体としての総容量として計算し、上記複数の組合せのうちで最も総容量が小さい組合せを示す情報を出力する最適配置演算処理を行う、ことを特徴とする。
【０１５７】
上述した構成によれば、例えば、ストレージコントローラは、過去のデータ削減容量を蓄積しておくことで、最適配置演算処理を行う際、最新のデータだけでなく、過去のデータ削減容量の経緯からデータ削減容量を予測した最適配置演算処理を行うことができる。
【０１５８】
また上述した構成については、本発明の要旨を超えない範囲において、適宜に、変更したり、組み替えたり、組み合わせたり、省略したりしてもよい。
【０１５９】
上述した構成によれば、ストレージシステムにおいて重複しているデータをより適切に管理することができる。
【符号の説明】
【０１６０】
１００……ストレージシステム、１４０……ストレージ装置、１４１……ストレージコントローラ。
【図１】
2020106999.tif 000003
【図２】
2020106999.tif 000004
【図３】
2020106999.tif 000005
【図４】
2020106999.tif 000006
【図５】
2020106999.tif 000007
【図６】
2020106999.tif 000008
【図７】
2020106999.tif 000009
【図８】
2020106999.tif 000010
【図９】
2020106999.tif 000011
【図１０】
2020106999.tif 000012
【図１１】
2020106999.tif 000013
【図１２】
2020106999.tif 000014
【図１３】
2020106999.tif 000015
【図１４】
2020106999.tif 000016
【図１５】
2020106999.tif 000017
【図１６】
2020106999.tif 000018
【図１７】
2020106999.tif 000019
【図１８】
2020106999.tif 000020
【図１９】
2020106999.tif 000021
【図２０】
2020106999.tif 000022
【図２１】
2020106999.tif 000023