(57)【要約】【課題】重複排除処理のオーバーヘッドを削減し、Ｉ／Ｏ性能の低下を防ぐ。【解決手段】プロセッサと、メモリを含むコントローラを備え、複数のデータについて、内容が重複するデータを一つのデータとして記憶装置に格納する重複排除機能を有するストレージシステムであって、前記コントローラは、ライト要求及びリード要求を送信する外部装置に対応する第１のボリュームと、前記記憶装置に対応する第２のボリュームと、を作成し、前記第１のボリュームと前記第２のボリュームとの間にて、前記重複排除を行ったデータにかかるアドレス変換を行う重複排除処理アドレス変換部と、前記第１のボリュームの領域ごとに重複度を調査し、各々の前記領域ごとに重複排除の要否を判定する重複排除判定部と、を備え、前記重複排除の要否の判定に基づいて前記記憶装置へのアクセス制御を行う。【選択図】図４Ｂ
2019079448.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、メモリを含むコントローラを備え、
複数のデータについて、内容が重複するデータを一つのデータとして記憶装置に格納する重複排除機能を有するストレージシステムであって、
前記コントローラは、
ライト要求及びリード要求を送信する外部装置に対応する第１のボリュームと、前記記憶装置に対応する第２のボリュームと、を作成し、
前記第１のボリュームと前記第２のボリュームとの間にて、重複排除を行ったデータにかかるアドレス変換を行う重複排除処理アドレス変換部と、
前記第１のボリュームの領域ごとに重複度を調査し、各々の前記領域ごとに重複排除の要否を判定する重複排除判定部と、
を備え、
前記重複排除の要否の判定に基づいて前記記憶装置へのアクセス制御を行う
ことを特徴とするストレージシステム。
【請求項２】
請求項１において、
前記コントローラは、
前記外部装置からのアクセス要求にかかる前記第１のボリュームの領域の前記重複排除の要否が要である場合、前記重複排除処理アドレス変換部を介して、前記記憶装置にアクセスし、
前記重複排除の要否が否である場合、前記重複排除処理アドレス変換部を介さずに前記記憶装置にアクセスする
ことを特徴とするストレージシステム。
【請求項３】
請求項２において、
重複排除機能を稼働させていた領域について前記重複排除の要否を否と判定した場合、
前記記憶装置に格納した前記領域にかかるデータについて重複排除を解除するようにデータを移動させる処理を行い、
前記重複排除を解除する処理後に、前記重複排除処理アドレス変換部を介さずにアクセスするように変更する
ことを特徴とするストレージシステム。
【請求項４】
請求項１において、
前記重複排除判定部は、
前記第１のボリュームへのアクセス単位で前記重複度を調査して重複排除の要否を判定することを特徴とするストレージシステム。
【請求項５】
請求項２において、
アクセス単位が、データチャンクであることを特徴とするストレージシステム。
【請求項６】
請求項１において、
前記重複排除判定部は、
前記第１のボリュームに格納されるファイル単位で前記重複度を調査して重複排除の要否を判定することを特徴とするストレージシステム。
【請求項７】
プロセッサと、メモリを含むコントローラを備え、複数のデータについて、内容が重複するデータを一つのデータとして記憶装置に格納する重複排除機能を有するストレージシステムの制御方法であって、
前記コントローラが、ライト要求及びリード要求を送信する外部装置に対応する第１のボリュームと、前記記憶装置に対応する第２のボリュームと、を作成する第１のステップと、
前記コントローラが、前記第１のボリュームの領域ごとに重複度を調査し、各々の前記領域ごとに重複排除の要否を判定する第２のステップと、
前記コントローラが、前記重複排除の要否の判定に基づいて前記記憶装置へのアクセス制御を行う第３のステップと、を含み、
前記第３のステップは、前記第１のボリュームと前記第２のボリュームとの間にて、前記重複排除を行ったデータにかかるアドレス変換を行うアドレス変換ステップを含む
ことを特徴とするストレージシステムの制御方法。
【請求項８】
請求項７において、
前記第３のステップは、
前記外部装置からのアクセス要求にかかる前記第１のボリュームの領域の前記重複排除の要否が要である場合、前記アドレス変換ステップを実施してから、前記記憶装置にアクセスし、
前記重複排除の要否が否である場合、前記アドレス変換ステップを実施せずに前記記憶装置にアクセスする
ことを特徴とするストレージシステムの制御方法。
【請求項９】
請求項８において、
前記第３のステップは、
重複排除機能を稼働させていた領域について前記重複排除の要否を否と判定した場合、
前記記憶装置に格納した前記領域にかかるデータについて重複排除を解除するようにデータを移動させる処理を行い、
前記重複排除を解除する処理後に、前記アドレス変換ステップを実施せずにアクセスするように変更する
ことを特徴とするストレージシステムの制御方法。
【請求項１０】
請求項７において、
前記第２のステップは、
前記第１のボリュームへのアクセス単位で前記重複度を調査して重複排除の要否を判定することを特徴とするストレージシステムの制御方法。
【請求項１１】
請求項８において、
アクセス単位が、データチャンクであることを特徴とするストレージシステムの制御方法。
【請求項１２】
請求項７において、
前記第２のステップは、
前記第１のボリュームに格納されるファイル単位で前記重複度を調査して重複排除の要否を判定することを特徴とするストレージシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、重複排除機能を有するストレージシステムにより行われるデータ処理に関する。
【背景技術】
【０００２】
重複排除機能を有するストレージシステムが知られている。（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１６／０４６９１１号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
近年、企業内に蓄積されるデータ量が急激に増加し、このため大量のデータを低コストで格納することができるストレージシステムへのニーズが高い。そこで、ストレージ装置に格納するデータ量を削減し、ストレージシステムの運用コストや導入コストを削減することができるデータ量削減技術が注目されている。
【０００５】
このようなデータ量削減技術として、ストレージ格納データの冗長な重複データ列を検出し、冗長なデータ列を排除することでストレージ格納データを削減する重複排除技術がある。
【０００６】
前述のような重複排除技術では、重複が検出された論理アドレスをストレージシステム内で他の論理アドレスから参照される共有データ列の格納アドレスと対応付けて管理する。このため、ストレージ格納データはホストがストレージに格納した順序とは無関係なストレージシステム内の複数のアドレスに格納される。
【０００７】
したがって、ホストがストレージ格納データをリードする際は、ストレージシステム内の複数のアドレスに格納された格納データからホストがストレージシステムに格納した順序に復元するという手順が必要となる。このデータ列の復元手順を要するため、重複排除を実施するストレージシステムでのＩ／Ｏ処理は、重複排除技術を有していないストレージシステムと比較し、重複排除処理に関わる処理のオーバーヘッドが生じるため、Ｉ／Ｏ性能が低下する可能性がある。
【０００８】
また、前述のような重複排除技術では、処理対象とするデータの特性やストレージシステムの利用用途により、得られるデータ削減効果が大きく異なることが知られている。例えば、ＶＤＩ（Ｖｉｒｔｕａｌ  Ｄｅｓｋｔｏｐ  Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ）やＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）などのサーバやＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）の仮想化環境では、１つのＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のイメージを複数複製して、それぞれの用途や利用ユーザに割り当てるといった利用法が考えられる。これら用途では、複製の回数に応じてストレージシステムに格納されるデータには重複が生じることから、高いデータ量削減効果を期待することができる。一方、ストレージシステムの利用用途として従来より一般的であるデータベース用途では、ストレージ格納されるデータ各々に固有の識別番号等がホストより付与される。このため、ホスト上で運用されるデータベースソフトウエア上では内容が同一のデータであっても、ストレージ格納される際には異なるデータとして扱われるため、重複排除技術によるデータ量削減効果が期待できない。
【０００９】
前述のとおり、重複排除技術はその原理上、重複排除処理に関わるＩ／Ｏ処理のオーバーヘッドを生じ、また、処理対象とするデータの特性やストレージシステムの利用用途により、達成するデータ量削減効果が大きく異なる。このため、ストレージシステムにおいて効率的に重複排除技術を利用するには、重複排除効果がない処理対象データやストレージシステムの利用用途では重複排除処理をしないことで、重複排除処理に関わるＩ／Ｏ処理オーバーヘッドを削減し、Ｉ／Ｏ性能の低下を防ぐことが望ましい。
【００１０】
そこで本発明は、上記問題点に鑑みてなされたもので、重複排除処理のオーバーヘッドを削減し、Ｉ／Ｏ性能の低下を防ぐことを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、プロセッサと、メモリを含むコントローラを備え、複数のデータについて、内容が重複するデータを一つのデータとして記憶装置に格納する重複排除機能を有するストレージシステムであって、前記コントローラは、ライト要求及びリード要求を送信する外部装置に対応する第１のボリュームと、前記記憶装置に対応する第２のボリュームと、を作成し、前記第１のボリュームと前記第２のボリュームとの間にて、前記重複排除を行ったデータにかかるアドレス変換を行う重複排除処理アドレス変換部と、前記第１のボリュームの領域ごとに重複度を調査し、各々の前記領域ごとに重複排除の要否を判定する重複排除判定部と、を備え、前記重複排除の要否の判定に基づいて前記記憶装置へのアクセス制御を行う。
【発明の効果】
【００１２】
本発明の代表的な実施例によれば、重複排除技術を適用したストレージシステムにおいて、重複排除処理によるデータ量の削減が効果的ではない対象データや利用用途において、重複排除処理を行うことにより生じる処理オーバーヘッドを削減し、ストレージシステムのＩ／Ｏ処理性能を向上させることができる。前記した以外の課題、構成および効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施例を示し、ストレージシステム全体の構成を示すブロック図である。
【図２】本発明の実施例を示し、ストレージシステムの論理デバイス構成の一例を示す図である。
【図３Ａ】本発明の実施例を示し、重複排除処理前のデータの状況の一例を示す図である。
【図３Ｂ】本発明の実施例を示し、重複排除処理後のデータの状況の一例を示す図である。
【図４Ａ】本発明の課題の一例を示し、重複排除処理の一例を示す図である。
【図４Ｂ】本発明の実施例を示し、Ｉ／Ｏ処理の一例を示す図である。
【図５】本発明の実施例を示し、管理情報の構成を示すブロック図である。
【図６】本発明の実施例を示し、ＨＤＥＶ管理テーブルの構成の一例を示す図である。
【図７】本発明の実施例を示し、プールテーブルの構成の一例を示す図である。
【図８】本発明の実施例を示し、プールＶＯＬテーブルの構成の一例を示す図である。
【図９】本発明の実施例を示し、ＨＤＥＶ論理物理テーブルの構成の一例を示す図である。
【図１０】本発明の実施例を示し、ＨＤＥＶ物理論理テーブルの構成の一例を示す図である。
【図１１】本発明の実施例を示し、ページマッピングテーブルの構成の一例を示す図である。
【図１２】本発明の実施例を示し、削減領域テーブルの構成の一例を示す図である。
【図１３】本発明の実施例を示し、ハッシュテーブルの構成の一例を示す図である。
【図１４Ａ】本発明の実施例を示し、ＨＤＥＶ重複度情報テーブルの一例を示す図である。
【図１４Ｂ】本発明の実施例を示し、ＨＤＥＶ重複度詳細情報テーブルの一例を示す図である。
【図１５】本発明の実施例を示し、重複度調査部における処理の一例を示すフローチャートである。
【図１６】本発明の実施例を示し、重複排除ＯＮ／ＯＦＦ判定部における処理の一例を示すフローチャートである。
【図１７】本発明の実施例を示し、ホストからのコマンドを受け付けて重複排除処理の有効または無効を設定する処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明の実施形態を添付図面に基づいて説明する。
【実施例１】
【００１５】
本発明の実施例について、図面を参照して説明する。
【００１６】
なお、以下に説明する実施例は特許請求の範囲に係る発明を限定するものではなく、実施例の中で説明されている要素の組み合わせの全てが発明の解決手段に必須であるとは限らない。また、以下の説明では、「ｘｘｘテーブル」、「ｘｘｘリスト」、「ｘｘｘＤＢ」、「ｘｘｘキュー」等の表現で各種の情報を説明することがあるが、各種情報はテーブル、リスト、ＤＢ、キュー、等以外のデータ構造で表現されていてもよい。そのため、データ構造に依存しないことを示すため、「ｘｘｘのテーブル」、「ｘｘｘリスト」、「ｘｘｘＤＢ」、「ｘｘｘキュー」等を「ｘｘｘ情報」と称することがある。
【００１７】
さらに、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ＩＤ」という表現を用いるが、これらについてはお互いに置換が可能である。
【００１８】
さらに、後述する本発明の実施例は、汎用コンピュータ上で稼動するソフトウェアで実装してもよいし、専用ハードウェア又はソフトウェアとハードウェアの組み合わせで実装してもよい。
【００１９】
さらに、以下の説明では「プログラム」を主語として処理を説明することがあるが、プログラムはプロセッサ（例えば、ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）によって実行されることによって、定められた処理を記憶資源（例えば、メモリ）、通信Ｉ／Ｆ、ポートを用いて処理を実行するため、プロセッサを主語として説明してもよい。
【００２０】
プログラムを主語として説明された処理は、プロセッサを有する計算機（例えば、計算ホスト、ストレージ装置）が行う処理としてもよい。また、以下の説明では、「コントローラ」の表現で、プロセッサ又はプロセッサが行う処理の一部又は全部を行うハードウェア回路を指してもよい。
【００２１】
プログラムは、プログラムソース（例えば、プログラム配布サーバや、計算機が読み取り可能な記憶メディア）から各計算機にインストールされてもよい。この場合、プログラム配布サーバはＣＰＵと記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムを記憶している。そして、配布プログラムをＣＰＵが実行することで、プログラム配布サーバのＣＰＵは配布対象のプログラムを他の計算機に配布する。
【００２２】
また、以下の説明では、「ＰＤＥＶ」は、物理的な記憶デバイスを意味し、典型的には、不揮発性の記憶デバイス（例えば補助記憶デバイス）でよい。ＰＤＥＶは、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）又はＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）でよい。ストレージシステムに異なる種類のＰＤＥＶが混在していてもよい。
【００２３】
また、以下の説明では、「ＲＡＩＤ」は、Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  （ｏｒ  Ｉｎｅｘｐｅｎｓｉｖｅ）  Ｄｉｓｋｓの略である。ＲＡＩＤグループは、複数のＰＤＥＶ（典型的には同種のＰＤＥＶ）で構成され、ＲＡＩＤグループに関連付けられたＲＡＩＤレベルに従いデータを記憶する。ＲＡＩＤグループは、パリティグループと呼ばれてもよい。パリティグループは、例えば、パリティを格納するＲＡＩＤグループのことでよい。
【００２４】
また、以下の説明では、「ＶＯＬ」は、論理ボリュームの略であり、論理的な記憶デバイスでよい。ＶＯＬは、実体的なＶＯＬ（ＲＶＯＬ）であってもよいし、仮想的なＶＯＬ（ＶＶＯＬ）であってもよい。「ＲＶＯＬ」は、当該ＲＶＯＬを有するストレージシステムが有する物理的な記憶資源（例えば、１以上のＲＡＩＤグループ）に基づくＶＯＬでよい。
【００２５】
「ＶＶＯＬ」は、外部接続ＶＯＬ（ＥＶＯＬ）と、容量拡張ＶＯＬ（ＴＰＶＯＬ）と、スナップショットＶＯＬのうちのいずれでもよい。ＥＶＯＬは、外部のストレージシステムの記憶空間（例えばＶＯＬ）に基づいておりストレージ仮想化技術に従うＶＯＬでよい。
【００２６】
ＴＰＶＯＬは、複数の仮想領域（仮想的な記憶領域）で構成されており容量仮想化技術（典型的にはＴｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇ）に従うＶＯＬでよい。スナップショットＶＯＬは、オリジナルのＶＯＬのスナップショットとして提供されるＶＯＬでよい。スナップショットＶＯＬは、ＲＶＯＬであってもよい。
【００２７】
「プール」は、論理的な記憶領域（例えば複数のプールＶＯＬの集合）であり、用途ごとに用意されてよい。例えば、プールとして、ＴＰプールと、スナップショットプールとのうちの少なくとも１種類があってよい。ＴＰプールは、複数のページ（実体的な記憶領域）で構成された記憶領域でよい。
【００２８】
ストレージコントローラが、ホストシステム（以下、ホスト）から受信したライト要求で指定されたアドレスが属する仮想領域（ＴＰＶＯＬの仮想領域）にページが割り当てられていない場合、当該仮想領域（ライト先仮想領域）にＴＰプールからページを割り当てる（ライト先仮想領域にページが割り当て済であってもページが新たにライト先仮想領域に割り当てられてもよい）。
【００２９】
ストレージコントローラは、割り当てられたページに、ライト要求に付随するライト対象データを書き込んでよい。スナップショットプールは、オリジナルのＶＯＬから退避されたデータが格納される記憶領域でよい。１つのプールが、ＴＰプールとしてもスナップショットプールとしても使用されてもよい。「プールＶＯＬ」は、プールの構成要素となるＶＯＬでよい。プールＶＯＬは、ＲＶＯＬであってもよいしＥＶＯＬであってもよい。
【００３０】
以下の説明では、ホストから認識されるＶＯＬ（ホストに提供されるＶＯＬ）を「ＨＤＥＶ」と言う。以下の説明では、ＨＤＥＶは、ＴＰＶＯＬ（又はＲＶＯＬ）であり、プールは、ＴＰプールである。しかし、本発明は、容量拡張技術（Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇ）が採用されていないストレージシステムにも適用できる。
【００３１】
また、以下の説明では、重複排除の方式として、インライン方式が採用されるが、本発明では、他種の重複排除方式、例えば、ポストプロセス方式、又は、インライン方式とポストプロセス方式との併用が採用されてもよい。
【００３２】
なお、「インライン方式」とは、データを記憶デバイス（例えばＨＤＥＶ又はＰＤＥＶ）に書き込む前に、当該データについて重複排除を行う方式である。「ポストプロセス方式」とは、データを記憶デバイスに書き込んだ後に非同期で当該データについて重複排除を行う方式である。
【００３３】
また、以下の説明では、データチャンク単位でデータが重複排除される。以下、データチャンクを単に「チャンク」と言うことがある。実施形態では、チャンクは可変長でも固定長でもよい。
【００３４】
本発明の実施例の説明に先立ち、実施例の概要について図面を参照して説明する。
【００３５】
図３Ａと図３Ｂは、ホスト１００３が論理ボリューム５３０１にライトしたチャンク５００１をプール５５０１上の領域に格納する様子を示した図である。なお、図３Ａは、重複排除処理前のデータの状況の一例を示す図である。図３Ｂは、重複排除処理後のデータの状況の一例を示す図である。
【００３６】
図３Ａは、重複排除処理をしない場合の論理アドレスと、プール５５０１に格納されたデータの配置の関係を示す。ホスト１００３がＨＤＥＶ５３０１ａ、ＨＤＥＶ５３０１ｂ、ＨＤＥＶ５３０１ｃにライトしたチャンク５００１は、ストレージシステム２０００内部の複数のアドレス変換を経て、プール５５０１上の領域にチャンク５００１が格納される。そして、当該格納アドレスとＨＤＥＶ５０３１ａ、ＨＤＥＶ５０３１ｂ、ＨＤＥＶ５０３１ｃ上のアドレスがポインタ３００ａによって対応付けられる。
【００３７】
このときプール５５０１上に格納されたチャンクの順序は、ホスト１００３がＨＤＥＶ５３０１ａとＤＥＶ５３０１ｂ及びＨＤＥＶ５３０１ｃにデータをライトした順序が保たれている。
【００３８】
例えば、ホスト１００３がＨＤＥＶ５３０１ａにライトされたデータへアクセスする場合、対応するプール５５０１に格納されたチャンク５００１にアクセスするためにストレージシステム２０００で必要なプール５５０１上のアドレス変換処理は、チャンクＡ（内容Ａのチャンク）のみである。チャンクＡの後続となるチャンクＢ、チャンクＣは連続したアドレス領域に配置されるため、アドレス変換処理はチャンクＡからの相対的な加減算処理で可能となる。
【００３９】
図３Ｂは、重複排除処理を行った場合の論理アドレスとプール５５０１に格納されたデータの配置の関係を示す。図３Ａと同様に、ホスト１００３がＨＤＥＶ５３０１ａと、ＨＤＥＶ５３０１ｂ及びＨＤＥＶ５３０１ｃにライトしたチャンク５００１はストレージシステム２０００内部の複数のアドレス変換を経て、プール５５０１上の領域にチャンク５００１が格納される。
【００４０】
このとき、重複排除処理・アドレス変換部６０００の処理を経ることで、ホスト１００３がライトしたチャンクの内容を調査し、内容が重複するチャンクを検出する。チャンク５００１ａのように、内容が他のいずれのチャンクとも一致しない場合は、重複排除・アドレス変換部６０００がいずれのチャンクとも内容が一致しないチャンクを格納するプール５５０１上のＳＴ（非共有）領域５３１ａにチャンク５００１ａを格納し、格納アドレスをＨＤＥＶ５３０１上のアドレスとポインタ３００によって対応付ける。
【００４１】
一方、チャンク５００１ｂのように内容が他のチャンクと一致する場合は、重複排除・アドレス変換部６０００がプール５５０１上のＤＳ（データ共有）領域５３１ｄにチャンク５００１ｂを格納する。そして、重複排除・アドレス変換部６０００は、格納アドレスを複数のＨＤＥＶ５３０１上で内容を共有するチャンクの複数のアドレスとポインタ３００によって対応付ける。このようにして、重複排除・アドレス変換部６０００は、内容が同一のチャンクを重複して格納するのを禁止して、プール５５０１に格納されるチャンクを削減する。
【００４２】
なお、以下の説明では、ＤＳ領域５３１ｄとＳＴ領域５３１ａ〜５３１ｃの全体を削減領域５３１とする。
【００４３】
図４Ａは、重複排除処理を行うストレージシステムにおいて、本発明における課題を説明する図である。
【００４４】
ホスト１００３では、ＯＳやＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）ハイパーバイザー等が稼働し、ＶＭ１１０１ａ、１１０１ｂ、１１０１ｃやデータベースアプリケーション１１０１ｄ、１１０１ｅなどが稼働している。
【００４５】
これらのＶＭやＤＢアプリケーションは、ＯＳやＶＭハイパーバイザーソフトウエアが提供するファイルシステム５４００上に構築されたディスクイメージや、データベースやＶＭのアプリケーションが利用するデータを格納したファイル５１０１ａ〜５１０１ｅを介してストレージシステム２０００が提供するＨＤＥＶ５３０１にアクセスする。
【００４６】
ホスト１００３により、前述のファイル５１０１ａ〜５１０１ｅとファイルシステム５４００の管理情報を含むデータを、ストレージシステム２０００のＨＤＥＶ５３０１に格納する際に、図３Ｂで説明した重複排除処理によれば、重複排除処理・アドレス変換部６０００が、他のＨＤＥＶ５３０１やＨＤＥＶ５３０１内の他のチャンクと内容が一致しないチャンクをプール５５０１上のＳＴ領域５３１ａ、５３１ｃに格納する。また、重複排除処理・アドレス変換部６０００は、他のＨＤＥＶ５３０１やＨＤＥＶ５３０１内で他のチャンクと内容が一致するチャンク（図中網掛け部）をプール５５０１上のＤＳ領域５３１ｂに格納する。
【００４７】
ここで、ホスト１００３上のファイルシステム５４００上のファイル５１０１ａ、５１０１ｅに含まれるチャンクと、これらのチャンクに対応するＨＤＥＶ５３０１ａ、５３０１ｂに含まれるチャンクに着目すると、ファイルごとにＨＤＥＶ５３０１ａ、５３０１ｂ上で重複排除処理の対象となる網掛け部のチャンクが多く対応しているファイルと、全く対応していないファイルが存在する。
【００４８】
また、ストレージシステム２０００においては、ＨＤＥＶ５３０１ａと、ＨＤＥＶ５３０１ｂの単位で重複排除処理の有効化または無効化を制御しており、重複排除処理・アドレス変換部６０００は、重複排除処理が有効なＨＤＥＶ５３００に含まれるすべてのチャンクを対象に重複排除処理を実施する。
【００４９】
このため、例えば、ファイル５１０１ｄ、５１０１ｅはストレージのＩ／Ｏ性能を重視するＤＢファイルで、重複排除のデータ削減効果がない場合でも、重複排除処理・アドレス変換部６０００は、ホスト１００３上のファイルシステム５４００が管理するファイル５１０１ａ〜５１０１ｅの単位を認識することができない。
【００５０】
このため、ホスト１００３により、前記ファイルに対応するプール５５０１上のチャンクにアクセスする場合は、必ず重複排除処理・アドレス変換部６０００により、ＨＤＥＶ５３０１のアドレスとプール５５０１上のアドレスを変換する必要がある。このため、この処理オーバーヘッドによりＩ／Ｏ性能が低下するという課題があった。
【００５１】
図４Ｂは、重複排除処理を行うストレージシステムにおいて、図４Ａで説明した本実施例における課題解決を説明する図である。図４Ｂでは、重複度調査部８０００と重複排除ＯＮ／ＯＦＦ判定部９０００が新たに設けられる。なお、重複度調査部８０００と重複排除ＯＮ／ＯＦＦ判定部９０００は、制御プログラム３０００Ａ（３０００Ｂ）に含まれ、ＤＲＡＭ２００２Ａ（２００２Ｂ）にロードされて、ＣＰＵ２００１Ａ（２００１Ｂ）で実行される。
【００５２】
重複度調査部８０００は、ＨＤＥＶ５３０１ａ、５３０１ｂにホスト１００３が格納したデータを定期的にアクセスし、ＨＤＥＶ５３０１ａ、５３０１ｂを利用しているホスト１００３のファイルシステム５４００の形式を取得する。そして、重複度調査部８０００は、ファイルシステム５４００に格納されたファイル５１０１ａ〜５１０１ｅを認識し、ＨＤＥＶ５３００ごとのデータ（チャンク＝アクセス単位）の重複率と、ファイル５１０１ａ〜５１０１ｅ各々の重複率を調査し（８０２）、調査結果をＨＤＥＶ重複度情報テーブル４９００に格納する。
【００５３】
重複排除ＯＮ／ＯＦＦ判定部９０００は、ＨＤＥＶ重複度情報テーブル４９００の情報に基づき、ＨＤＥＶ５３０１上のチャンク５００１のそれぞれについてＩ／Ｏ処理時に重複排除処理のＯＮ（許可）またはＯＦＦ（禁止）を決定する。重複排除ＯＮ／ＯＦＦ判定部９０００は、重複排除処理をＯＮに決定した場合には、重複排除処理・アドレス変換部６０００を経由するＩ／Ｏ処理ルート８０４ａを選択する。一方、重複排除ＯＮ／ＯＦＦ判定部９０００は、重複排除処理をＯＦＦに決定した場合には、重複排除処理・アドレス変換部６０００での処理を禁止して、削減領域５３１にアクセスするＩ／Ｏ処理ルート８０４ｂを選択する。
【００５４】
重複排除ＯＮ／ＯＦＦ判定部９０００の判定結果に基づき、重複排除処理のＯＮ（許可）が設定されたチャンク５００１ａのＩ／Ｏ処理は、重複排除処理・アドレス変換部６０００を経由し、重複判定・アドレス変換処理を経て、Ｉ／Ｏ処理される。
【００５５】
一方、重複排除のＯＦＦが設定されたチャンク５００１ｂは、ＨＤＥＶ５３０１ａの仮想ＬＢＡに対応するＳＴ領域５３１ａの削減ＬＢＡに直接Ｉ／Ｏ処理される。重複排除率が低くONからOFFに変更された場合には、チャンク５００１ｂに関連するデータをDS領域５３１ｂからST領域５３１ａにコピーするデータ移動処理を行って直接I/O処理ができるようにし、当該処理後に直接I/O処理を開始する。重複率０％の場合には、この処理は不要である。このように重複排除の有効又は無効を判定する重複排除ＯＮ／ＯＦＦ判定部９０００を設けることで、例えば、ＨＤＥＶ５３０１ｂのように、用途やデータの特性が異なる複数のファイル５１０１ｃ〜５１０１ｅがファイルシステム５４００に含まれている場合、重複度調査部８０００の調査結果に基づいて、重複排除が効果的なファイル５１０１ｃに属するチャンクは重複排除をＯＮ（許可）に設定することで重複排除処理によりデータ量を削減する。
【００５６】
一方、重複排除が効果的ではないファイル５１０１ｄ、５１０１ｅに属するチャンクは、重複排除ＯＮ／ＯＦＦ判定部９０００が重複排除をＯＦＦ（禁止）に設定することで、重複排除処理・アドレス変換部６０００を経由することなく、ＨＤＥＶ５３０１ｂの仮想ＬＢＡに対応するプール５５０１上のＳＴ領域５３１ｃの削減ＬＢＡにチャンクを直接格納する。
【００５７】
これによりＨＤＥＶ単位でのみ重複排除のＯＮ／ＯＦＦを設定する従来方式と比較し、柔軟に重複排除処理の対象領域を選択することを可能とし、重複判定、アドレス変換といった重複排除処理に係る処理オーバーヘッドを削減できＩ／Ｏ処理が効率化する。
【００５８】
このように、本実施例では、論理ボリューム（ＨＤＥＶ５３０１）単位で、重複排除のＯＮまたはＯＦＦを制御する重複排除処理・アドレス変換部６０００に、データ（チャンク又はファイル）の重複率の調査結果に基づいて、重複排除のＯＮまたはＯＦＦをＩ／Ｏ処理のアクセス単位（例えば、チャンク）で制御する重複排除ＯＮ／ＯＦＦ判定部９０００を加える。
【００５９】
これにより、重複排除が効果的ではないファイルに属するチャンクは、重複排除処理・アドレス変換部６０００での重複排除処理を禁止することで、重複排除処理が有効に設定されている論理ボリュームへのアクセスであっても、重複排除処理・アドレス変換部６０００を経由することなく、論理ボリュームに対応するプール５５０１上のＳＴ領域５３１ｃに格納されて、直接アクセスされる。したがって、重複判定及びアドレス変換といった重複排除処理に係る処理のオーバーヘッドを削減し、Ｉ／Ｏ処理の効率を改善することが可能となる。
【００６０】
なお、重複排除処理・アドレス変換部６０００Ａは、重複排除プログラムとアドレス変換プログラムを含み、ＤＲＡＭ２１００ＡにロードされてＣＰＵ２００１Ａによって実行される。同様に、重複排除ＯＮ／ＯＦＦ判定部９０００は、重複排除切り替え判定プログラムを含みＤＲＡＭ２１００ＡにロードされてＣＰＵ２００１Ａによって実行される。また、重複排除プログラムとアドレス変換プログラム及び重複排除切り替え判定プログラムは、上述のように制御プログラム３０００Ａ（３０００Ｂ）に含まれる。
【００６１】
以下、本実施例を詳細に説明する。
【００６２】
＜システム全体構成＞
図１は、本実施例に係るシステム全体の構成の一例を示す。
【００６３】
ストレージシステム２０００に、ネットワーク１００８を介して１以上のホスト１００３Ａ〜１００３Ｄが接続されている。また、ストレージシステム２０００には、管理サーバ１００４が接続されている。なお、ホスト１００３Ａ〜１００３Ｄの個々について特定しない場合には、符号１００３を用いる。
【００６４】
ホスト１００３Ａ〜１００３Ｄは、ホストシステムの略であり、１以上のホストである。なお、以下では、ホスト１００３Ａ〜１００３Ｄを個々に特定しない場合には、符号１００３を用いる。
【００６５】
ホスト１００３は、Ｈ−Ｉ／Ｆ（ホストインターフェースデバイス）２００４を有しており、Ｈ−Ｉ／Ｆ２００４経由で、アクセス要求（ライト要求又はリード要求）をストレージシステム２０００に送信し、または、アクセス要求の応答（例えば、ライト完了を含んだライト応答、又は、リード対象のチャンクを含んだリード応答）を受信する。Ｈ−Ｉ／Ｆ２００４は、例えば、ＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
【００６６】
管理サーバ１００４は、管理システムの一例であり、ストレージシステム２０００の構成及び状態を管理する。管理サーバ１００４は、Ｍ−Ｉ／Ｆ（管理インターフェースデバイス）２００３を有しており、Ｍ−Ｉ／Ｆ２００３経由で、ストレージシステム２０００に命令を送信し、または命令に対する応答を受信する。Ｍ−Ｉ／Ｆ２００３は、例えばＮＩＣである。
【００６７】
ストレージシステム２０００は、複数のＰＤＥＶ２００９と、複数のＰＤＥＶ２００９に接続されたストレージコントローラ６３０とを有する。複数のＰＤＥＶ２００９を含んだ１以上のＲＡＩＤグループが構成されていてもよい。
【００６８】
ストレージコントローラ６３０は、Ｆ−Ｉ／Ｆ（フロントエンドインターフェースデバイス）２１４Ａ、２１４Ｂと、Ｂ−Ｉ／Ｆ（バックエンドインターフェースデバイス）２００６と、ＣＭ（キャッシュメモリ）２０１４と、ＮＶＲＡＭ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  ＲＡＭ）２０１３と、ＭＰＰＫ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｏｒ  ＰａｃＫａｇｅ）２１００Ａ及び２１００Ｂと、それらの要素間の通信を中継する中継器２００７とを有する。中継器２００７は、例えば、バス又はスイッチである。
【００６９】
Ｆ−Ｉ／Ｆ２１４Ａ、２１４Ｂは、ホスト１００３又は管理サーバ１００４と通信するＩ／Ｆである。Ｂ−Ｉ／Ｆ２００６は、ＰＤＥＶ２００９と通信するＩ／Ｆである。Ｂ−Ｉ／Ｆ２００６は、Ｅ／Ｄ回路（暗号化及び復号化のためのハードウェア回路）を含んでいてもよい。具体的には、例えば、Ｂ−Ｉ／Ｆ２００６は、ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）コントローラを含んでいてよく、ＳＡＳコントローラが、Ｅ／Ｄ回路を含んでいてもよい。
【００７０】
ＣＭ２０１４は、例えばＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）で構成される。ＣＭ２０１４には、ＰＤＥＶ２００９に書き込まれるデータ又はＰＤＥＶ２００９から読み出されたデータがＭＰＰＫ２１００により一時的に格納される。ＮＶＲＡＭ２０１３には、電源遮断時にバッテリ（図示せず）から電力を受けたＭＰＰＫ２１００によりＣＭ２０１４内のデータ（例えばダーティデータ（ＰＤＥＶ２００９に書き込まれていないデータ））が退避される。
【００７１】
ＭＰＰＫ２１００Ａ及び２１００Ｂによりクラスタが構成されている。ＭＰＰＫ２１００Ａ（２１００Ｂ）は、メモリ（ＤＲＡＭ２００２Ａ（２００２Ｂ）及びＬＭ（ローカルメモリ）２００５Ａ（２００５Ｂ））と、それらに接続されたＣＰＵ２００１Ａ（２００１Ｂ）とを有する。
【００７２】
ＤＲＡＭ２００２Ａ（２００２Ｂ）には、ＣＰＵ２００１Ａ（２００１Ｂ）に実行される制御プログラム３０００Ａ（３０００Ｂ）と、ＣＰＵ２００１Ａ（２００１Ｂ）により参照又は更新される管理情報４０００Ａ（４０００Ｂ）とが格納される。
【００７３】
ＣＰＵ２００１Ａ（２００１Ｂ）で制御プログラム３０００Ａ（３０００Ｂ）が実行されることにより、図１６〜図２１を参照して説明する処理の少なくとも一部（例えば、重複排除、及び、仮想アドレス間の関係の交換）が実行される。制御プログラム３０００Ａ（３０００Ｂ）及び管理情報４０００Ａ（４０００Ｂ）のうちの少なくとも一方が、複数のＭＰＰＫ２１００Ａ及び２１００Ｂに共有の記憶領域（例えばＣＭ２０１４）に格納されてもよい。ＬＭ２００５Ａ（２００５Ｂ）には、チャンクが格納される。
【００７４】
なお、ＣＰＵ２００１Ａ（２００１Ｂ）は、制御プログラム３０００Ａ（３０００Ｂ）を実行することによりストレージコントローラ６３０の制御部として機能する。
【００７５】
具体的には、例えば、ＬＭ２００５Ａ（２００５Ｂ）には、ＭＰＰＫ２１００Ａ（２１００Ｂ）によりＰＤＥＶ２００９に書き込まれるチャンクと、ＭＰＰＫ２１００Ａ（２１００Ｂ）によりＰＤＥＶ２００９から読み出されたチャンクと、ＭＰＰＫ２１００Ａ（２１００Ｂ）に転送されるチャンクと、ＭＰＰＫ２１００Ｂ（２１００Ａ）から受信したチャンク、及び、ＭＰＰＫ２１００Ａ（２１００Ｂ）により伸張されたチャンクのうちの少なくとも１つが格納される。
【００７６】
＜ストレージシステム２０００の論理デバイス構成＞
図２は、ストレージシステム２０００の論理デバイス構成の一例を示す。
【００７７】
ＨＤＥＶ５３０１Ａ〜５３０１Ｄがホスト１００３Ａ〜１００３Ｄにそれぞれ提供されている。ＨＤＥＶ５３０１にプール５５０１からページが割り当てられる。プール５５０１は、複数のプールＶＯＬ５２０１の集合である。
【００７８】
各プールＶＯＬ５２０１は、１以上のＰＤＥＶ２００９に基づくＶＯＬである。プール５５０１に関し、矢印５５１２は、プール容量（プール全体の容量）を表し、矢印５５１１は、プール割当て容量（１以上のＨＤＥＶ５３０１に割り当てられているページ群全体の容量）を表す。ストレージシステム２０００に複数のプール５５０１が存在してもよい。
【００７９】
図５は、管理情報４０００Ａの構成の一例を示す。
【００８０】
管理情報４０００Ａは、複数の管理テーブルを含む。管理テーブルとしては、例えば、ＨＤＥＶ５３０１に関する情報を保持するＨＤＥＶ管理テーブル４１００Ａと、プール５５０１に関する情報を保持するプールテーブル４２００Ａと、プールＶＯＬ５２０１に関する情報を保持するプールＶＯＬテーブル４３００Ａと、ＨＤＥＶ５３０１の論理アドレス情報と前記の論理アドレスに対応する物理アドレス情報を変換するためのＨＤＥＶ論理物理変換テーブル４４００Ａと、ＨＤＥＶ５３０１の物理アドレス情報と前記の物理アドレスに対応する論理アドレス情報を変換するためのＨＤＥＶ物理論理変換テーブル４５００Ａと、仮想領域とページ間のマッピングのためのページマッピングテーブル４７００Ａと、削減領域５３１に関する情報を保持する削減領域テーブル４６００Ａと、チャンクのハッシュ値を保持するハッシュテーブル４８００Ａと、重複度調査部８０００がＨＤＥＶ５３０１の重複度調査に利用する情報を格納するＨＤＥＶ重複度情報テーブル４９００Ａとを含む。管理情報４０００Ａ及び４０００Ｂ間で、少なくとも一部の情報が同期してもよい。
【００８１】
図６は、ＨＤＥＶ管理テーブル４１００Ａの構成の一例を示す。
【００８２】
ＨＤＥＶ管理テーブル４１００Ａは、ＨＤＥＶ５３０１毎にエントリ（レコード）を有する。各エントリーが格納する情報は、ＨＤＥＶ番号４１０１Ａと、ＨＤＥＶ容量４１０２Ａと、ＶＯＬ種別４１０３Ａと、データ削減モード４１０４Ａ及びプール番号４１０５Ａである。
【００８３】
ＨＤＥＶ番号４１０１Ａは、ＨＤＥＶ５３０１の識別番号を表す。ＨＤＥＶ容量４１０２ＡはＨＤＥＶ５３０１の容量を表す。ＶＯＬ種別４１０３ＡはＨＤＥＶの種別を表し、（例えば、「ＲＶＯＬ」または「ＴＰＶＯＬ」）を表す。削減モード４１０６ＡはＨＤＥＶ５３０１に格納されるデータの削減種別を示す。データ削減モード４１０４Ａとして、「圧縮」、「重複排除」、「圧縮＋重複排除」（圧縮および重複排除を行う）、「無効」（圧縮・重複排除のいずれも行わない）がある。
【００８４】
プール番号４１０８Ａは、ＨＤＥＶ５３０１が関連付けられているプール５５０１の識別番号を表し、プールＨＤＥＶ５３０１にはＨＤＥＶ５３０１が関連付けられているプール５５０１内の領域からデータ格納領域が割り当てられる。
【００８５】
図７は、プールテーブル４２００Ａの構成の一例を示す。
【００８６】
プールテーブル４２００Ａは、プール５５０１毎にエントリーを有する。各エントリーが格納する情報は、プール番号４２０１Ａと、プール容量４２０２Ａと、プール割当て容量４２０３Ａ及びプール使用容量４２０４Ａである。
【００８７】
プール番号４３０１Ａは、プール５５０１の識別番号を表す。プール容量４３０２は、プール５５０１の定義された容量、具体的には、プール５５０１を構成する１以上のプールＶＯＬ５２０１にそれぞれ対応した１以上のＶＯＬ容量の合計（図２の矢印５５１２が表す容量）を表す。
【００８８】
プール割当て容量４３０３Ａは、１以上のＨＤＥＶ５３０１に割り当てられた実容量、具体的には、１以上のＨＤＥＶ５３０１に割り当てられているページ群全体の容量（図２の矢印５５１１が表す容量）を表す。プール使用容量４３０４Ａは、プール５５０１に格納されているデータの総量を表す。データについてデータ削減（圧縮及び重複排除のうちの少なくとも１つ）が行われた場合、データ削減後のデータ量を基にプール使用容量４３０４ＡがＭＰＰＫ２１００Ａにより算出されてよい。
【００８９】
なお、データ圧縮をＰＤＥＶ２００９が行う場合、ＭＰＰＫ２１００Ａは、圧縮前のデータ量を基にプール使用容量４３０４Ａを算出してもよいし、圧縮後のデータ量の通知をＰＤＥＶ２００９から受け付けて圧縮後データ量を基にプール使用容量４３０４Ａを算出してもよい。
【００９０】
図８は、プールＶＯＬテーブル４３００Ａの構成の一例を示す。
【００９１】
プールＶＯＬテーブル４３００Ａは、プール番号４３０１Ａのリストと、プール番号４３０１Ａ毎のプールＶＯＬサブテーブル４３１０Ａとを有する。プールＶＯＬサブテーブル４３１０Ａは、プール５５０１内のプールＶＯＬ５２０１毎にエントリーを有する。各エントリーが格納する情報は、プールＶＯＬ番号４３１１Ａと、ＰＤＥＶ種別４３１２Ａと、圧縮機能４３１３Ａと、暗号化機能４３１４Ａと、プールＶＯＬ容量４３１５Ａである。
【００９２】
プールＶＯＬ番号４３１１Ａは、プールＶＯＬ５２０１の識別番号を表す。ＰＤＥＶ種別４３１２Ａは、プールＶＯＬ５２０１の基になっているＰＤＥＶ２００９の種別を表す。圧縮機能４３１３Ａは、プールＶＯＬ５２０１の基になっているＰＤＥＶ２００９が圧縮機能を有するか否かを表すフラグである。
【００９３】
暗号化機能４３１４Ａは、プールＶＯＬ５２０１の基になっているＰＤＥＶ２００９が暗号化機能を有するか否かを表すフラグである。プールＶＯＬ容量４３１５Ａは、プールＶＯＬ５２０１の容量を表す。
【００９４】
図９は、ＨＤＥＶ論理物理変換テーブル４４００Ａの構成の一例を示す。
【００９５】
ＨＤＥＶ論理物理変換テーブル４４００Ａは、ＨＤＥＶ５３０１の仮想ＬＢＡからプール５５０１上の削減領域５３１と削減ＬＢＡへ変換するために参照されるテーブルである。ＨＤＥＶ論理物理変換テーブル４４００Ａは、ＨＤＥＶ番号４４０１Ａの各エントリーごとに対応するＨＤＥＶ論理物理変換サブテーブル４４１０が生成される。ＨＤＥＶ論理物理変換サブテーブル４４１０Ａの各エントリーが格納する情報は、仮想ＬＢＡ４４１１Ａの識別子と、削減領域４４１２Ａと、削減ＬＢＡ４４１３Ａと、サイズ４４１４Ａである。
【００９６】
ＨＤＥＶ番号４４０１ＡはＨＤＥＶの識別番号を表す。仮想ＬＢＡ４４１１Ａは、ＨＤＥＶ５３００のＬＢＡを表す。削減領域４４１２Ａは仮想ＬＢＡ４４１１Ａに対応する削減領域５３１の識別番号を表す。削減ＬＢＡ４４１３Ａは仮想ＬＢＡ４４１１Ａに対応する変換後の削減ＬＢＡを表す。
【００９７】
図１０は、ＨＤＥＶ物理論理変換テーブル４５００Ａの構成を示す。
【００９８】
ＨＤＥＶ物理論理変換テーブル４５００Ａは、削減ＬＢＡから当該削減ＬＢＡに割当てられているＨＤＥＶ５３００と仮想ＬＢＡに変換するために参照されるテーブルである。
【００９９】
ＨＤＥＶ物理論理変換テーブル４５００Ａは、削減領域４５０１Ａの各エントリーごとに対応するＨＤＥＶ物理論理変換サブテーブル４５１０Ａを有する。ＨＤＥＶ物理論理変換サブテーブル４５１０の各エントリーが格納する情報は、削減ＬＢＡ４５１１Ａと、サイズ４５１２Ａと、当該ＬＢＡに格納しているチャンクの内容に基づくハッシュ値４５１３Ａである。
【０１００】
ＨＤＥＶ物理論理変換サブテーブル４５１０は、さらに、削減ＬＢＡ４５１１Ａの各エントリーごとに対応するＨＤＥＶ番号４５１４Ａと仮想ＬＢＡ４５１５Ａのリストを有する。前記リストは、例えば、他の領域と共有するチャンクを格納した削減ＬＢＡでは、対応する複数のＨＤＥＶ番号および仮想ＬＢＡが対応付けられる、一方で、他の領域と共有しないチャンクを格納した削減ＬＢＡでは、対応する１つのＨＤＥＶ番号および仮想ＬＢＡが対応付けられる。
【０１０１】
図１１は、ページマッピングテーブル４７００Ａの構成の一例を示す。
【０１０２】
ページマッピングテーブル４７００Ａは、プール番号４７０１Ａのリストと、プール番号４７０１Ａ毎のマッピングサブテーブル４７１０Ａとを有する。マッピングサブテーブル４７１０Ａは、プール５５０１内のページ毎にエントリーを有する。
【０１０３】
各エントリーが格納する情報は、ページ番号４７１１Ａと、ページ種別４７１２Ａと、先頭ＬＢＡ４７１３Ａと、割当て４７１４Ａと、プールＶＯＬ番号４７１５Ａ、及び、プールＶＯＬ内先頭ＬＢＡ４７１６Ａである。
【０１０４】
プール番号４７０１Ａは、プール５５０１の識別番号を表す。ページ番号４７１１Ａは、ページの識別番号を表す。ページ種別４７１２は、ページに格納されるデータの種別を表す。先頭ＬＢＡ４７１３Ａは、ページの先頭プールＬＢＡ（プール５５０１の先頭を基準とした場合のＬＢＡ）を表す。割当て４７１４Ａは、ページがＨＤＥＶ５３０１に割り当てられている（「１」）か否か（「０」）を表すフラグである。プールＶＯＬ番号４７１５Ａは、当該ページを含むプールＶＯＬ５２０１の識別番号を表す。
【０１０５】
プールＶＯＬ内先頭ＬＢＡ４７１６Ａは、先頭ＬＢＡ４７１３Ａが表すＬＢＡの、プールＶＯＬ５２０１でのＬＢＡ（プールＶＯＬ５２０１の先頭を基準とした場合のＬＢＡ）、を表す。
【０１０６】
図１２は、削減領域テーブル４６００Ａの構成の一例を示す。
【０１０７】
削減領域テーブル４６００Ａは、プール番号４６０１Ａのエントリー毎に削減領域サブテーブル４６１０Ａを有する。削減領域サブテーブル４６１０Ａの各エントリーが格納する情報は、削減領域４６１１Ａと、領域種別４６１２Ａ及び４６１３Ａ割り当てページ番号である。
【０１０８】
プール番号４６０１Ａはプール５５０１の識別番号を表す。削減領域サブテーブル４６１０Ａの削減領域４６１１Ａは、削減領域５３１の識別番号を表す。領域種別４６１２Ａは削減領域５３１の領域の種別を表し、例えば、ＨＤＥＶ５３００と対応づく他の領域からデータを共有しないチャンクを格納するＳＴ領域や、複数のＨＤＥＶ５３００や他の領域とデータを共有するチャンクを格納するＤＳ領域などの種別を表す。ページ割り当て番号４６１３Ａは、削減領域４６１１Ａに割り当てられたプール５５０１上のページ番号４７１１Ａ（図１１のマッピングサブテーブル４７１０Ａ参照）のリストを表す。
【０１０９】
図１３は、ハッシュテーブル４８００Ａの構成の一例を示す。
【０１１０】
ハッシュテーブル４８００Ａは、プール番号４８０１Ａのエントリー毎にハッシュサブテーブル４８１０Ａを有する。ハッシュサブテーブル４８１０Ａの各エントリーが格納する情報は、ハッシュ値４８１１Ａと、削減領域４８１２Ａと、削減ＬＢＡ４８１３Ａと、サイズ４８１４Ａと、参照数４８１５Ａである。
【０１１１】
ハッシュ値４８１１Ａは、チャンクのハッシュ値を表す。削減領域４８１２Ａは、ハッシュ値となるチャンク（重複元）を格納した削減ＬＢＡが属する削減領域５３１の識別番号を表す。
【０１１２】
削減ＬＢＡ４８０３Ａは、ハッシュ値となるチャンクを格納した削減ＬＢＡを表す。サイズ４８１４Ａはチャンクのサイズを示す。参照数４８１５Ａは当該チャンクを参照するＨＤＥＶ５３０１の仮想ＬＢＡの参照数を表す。
【０１１３】
図１４Ａは、ＨＤＥＶ重複度情報テーブル４９００Ａの構成の一例を示す。また、図１４Ｂは、ＨＤＥＶ重複度詳細情報テーブル４９１０Ａの構成の一例を示す。
【０１１４】
ＨＤＥＶ重複度情報テーブル４９００ＡとＨＤＥＶ重複度詳細情報テーブル４９１０Ａは図４Ｂで示した重複度調査部８０００が各ＨＤＥＶ５３０１のデータの重複率を格納する。ＨＤＥＶ重複度情報テーブル４９００Ａは、各ＨＤＥＶ５３０１ごとにデータのアクセス単位で重複率を調査した結果が格納される。
【０１１５】
ＨＤＥＶ重複度詳細情報テーブル４９１０Ａは、各ＨＤＥＶ５３０１のデータを重複度調査部８０００が分析し、ホスト１００３が利用するファイルシステム５４００に含まれるファイル５１０１単位での重複率が格納される。
【０１１６】
ＨＤＥＶ重複度情報テーブル４９００Ａにおける、ＨＤＥＶ番号４９０１ＡはＨＤＥＶ５３０１の識別番号を表す。重複排除４９０２ＡはＨＤＥＶ番号４９０１Ａにおけるホスト１００３からのＩ/Ｏアクセスにおいて、重複排除処理を実施するか否かを決定する情報である。
【０１１７】
同様の情報はＨＤＥＶ管理テーブル４１００Ａにおけるデータ削減モード４１０４Ａに存在するが、本項目はストレージ内の制御で扱う制御情報であり、前者はＨＤＥＶ構成時にユーザ操作によって指定される設定項目である点が相違する。ＦＳ  Ｔｙｐｅ４９０３ＡはＨＤＥＶ５３０１を利用するホスト１００３上で実行されるＯＳやＶＭハイパーバイザーが利用するファイルシステム５４００の種別を表す。
【０１１８】
重複率４９０４Ａは、ＨＤＥＶ５３０１ごとのデータの重複度を表す。要約情報４９０５ＡはＨＤＥＶ５３０１の重複率を調査した際の要約情報で、要約情報を他のＨＤＥＶ５３０１の要約情報と比較することで２つのＨＤＥＶ５３０１間の重複率の概算を算出できる。
【０１１９】
ＨＤＥＶ重複度詳細情報テーブル４９１０Ａについて説明する。ファイル４９１１Ａは、ホスト１００３が利用するファイルシステム５４００に含まれるファイル名を表す。重複排除４９１２Ａはファイル４９１１ＡおけるＩ/Ｏアクセスにおいて重複排除処理を実施するか否かを決定する制御情報である。
【０１２０】
サイズ４９１３Ａはホスト１００３が利用するファイルシステム５４００に含まれるファイルのサイズを表す。重複率４９１４Ａは、ホスト１００３が利用するファイルシステム５４００に含まれるファイルごとの重複率を表す。要約情報４９１５Ａは、当該ファイルの要約情報を表す。割当ＨＤＥＶ／ＬＢＡ４９１６Ａは、ホスト１００３が利用するファイルシステム５４００のファイルが格納されているＨＤＥＶ５３０１と仮想ＬＢＡを表す。
【０１２１】
図１５は重複度調査部８０００で行われる処理の一例を示すフローチャートである。
【０１２２】
重複度調査部８０００は、ストレージシステム２０００のＭＰＰＫ２１００の稼働率が低いときや、ホスト１００３からのＩ／Ｏアクセスが少ない負荷が少ない時などの所定のタイミングで起動する。まず、重複度調査部８０００は、ステップＳ１０００１でＨＤＥＶ管理テーブル４１００の情報を参照し、重複排除が有効なＨＤＥＶ５３０１を選択する。
【０１２３】
重複度調査部８０００は、ステップＳ１０００２で前のステップで選択したＨＤＥＶ５３０１を対象に仮想ＬＢＡを用いてストレージシステム２０００内に格納されているチャンクをリードする。
【０１２４】
重複度調査部８０００は、ステップＳ１０００３で前のステップでリードしたチャンクについて重複率を算出する。重複率の算出方法については公知又は周知の方法を採用することができ、プール５５０１に格納されたデータを調べてもよいし、重複排除の結果を反映して作成されているＨＤＥＶ物理論理変換テーブル４５００Ａのようなテーブルを調べてもよい。本実施例では説明のためＨＬＬ（ＨｙｐｅｒＬｏｇＬｏｇ）方式という統計アルゴリズムを用いる事とする。
【０１２５】
重複度調査部８０００は、ステップＳ１０００４でＨＤＥＶ重複度情報テーブル４９００Ａの対象のＨＤＥＶ５３０１のエントリーについて重複率およびＨＬＬの要約情報を更新する。
【０１２６】
重複度調査部８０００は、ステップＳ１０００５でＨＤＥＶ３５０１のパーティションテーブル（図示省略）を検索したのち、ステップＳ１０００６でパーティションの有無を判定する。パーティションが存在すればステップＳ１０００７へ進み、存在しなければステップＳ１００１１に進む。
【０１２７】
重複度調査部８０００は、ステップＳ１０００７でパーティションのファイルシステムの種類を特定し、ＨＤＥＶ重複度情報テーブル４９００ＡのＦＳ  Ｔｙｐｅ４９０２を更新する。
【０１２８】
重複度調査部８０００は、ステップＳ１０００８でパーティションを解析し、パーティション内の各ファイルに対応する仮想ＬＢＡを特定し、ステップＳ１０００９で各ファイルの重複率を前述の方法で算出する。ステップＳ１０００９で各ファイルのファイル名と、サイズ、重複率などの情報でＨＤＥＶ重複度詳細情報テーブル４９１０の該当エントリーを更新する。ステップＳ１００１０では、重複度調査部８０００がすべてのＨＤＥＶ３５０１について調査完了であれば終了し、そうでなければステップＳ１０００１へ戻って上記処理を繰り返す。上記処理によって、ＨＤＥＶ重複度情報テーブル４９００Ａのチャンク毎の重複率とＨＤＥＶ重複度詳細情報テーブル４９１０Ａのファイル毎の重複率が更新される。
【０１２９】
以上が、重複度調査部８０００における処理の一例であるが、ＨＤＥＶ重複度詳細情報テーブル４９１０を更新するための情報は、ホスト１００３から与えられる形態でも良く、ホスト１００３上で稼動するＯＳやハイパーバイザー、さらにその上で稼動するＶＭやアプリケーションから情報が提供される形態でも良い。
【０１３０】
図１６はデータの書き込み時における重複排除ＯＮ／ＯＦＦ判定部の処理の一例を示すフローチャートである。
【０１３１】
重複排除ＯＮ／ＯＦＦ判定部９０００はステップＳ１２００１でホスト１００３のＨＤＥＶ５３０１のライト範囲である仮想ＬＢＡから、ＨＤＥＶ論理物理変換テーブル４４００Ａを参照して対応する削減領域５３１と削除ＬＢＡを算出する。
【０１３２】
重複排除ＯＮ／ＯＦＦ判定部９０００は、ステップＳ１２００２で削減領域テーブル４６００Ａを参照し、ステップＳ１２００４で重複排除処理が有効であるか否を判定する。重複排除ＯＮ／ＯＦＦ判定部９０００は、削減領域５３１の領域種別４６１２ＡがＤＳ領域（共有領域）であるか否かを判定する。削減領域５３１がＤＳ領域であればステップＳ１２００５へ進み、ＤＳ領域以外であれば、ステップステップＳ１２０１１へ進んで、重複排除・アドレス変換を実施しないＩ／Ｏルートを選択し、処理を終了する。
【０１３３】
重複排除ＯＮ／ＯＦＦ判定部９０００は、ステップＳ１２００５でＨＤＥＶ重複度情報テーブル４９００Ａを参照し、重複率４９０４Ａが所定の基準値以上であるか否かを判断する。この基準値はストレージシステム２０００の制御プログラム３０００内で予め定義されていても良いし、ストレージシステム２０００の管理者やホスト１００３による指示によって定義されても良い。
【０１３４】
重複率４９０４Ａが基準値未満である場合は、処理中のＨＤＥＶ５３０１は重複率が低いことから、重複排除・アドレス変換を実施しないＩ／Ｏルートを選択し、処理を終了する。
【０１３５】
一方、重複率４９０４Ａが基準値以上である場合は、ステップＳ１２００６でＨＤＥＶ重複度情報テーブル４９００のＦＳ  Ｔｙｐｅ４９０２を参照し、処理中のＨＤＥＶ５３０１が使用しているＦＳの種別が判明しているか否かを判定する。判明していればステップＳ１２００７へ進み、判明していなければステップＳ１２０１０へ進む。
【０１３６】
重複排除ＯＮ／ＯＦＦ判定部９０００は、ステップＳ１２００７でＨＤＥＶ重複度詳細情報テーブル４９１０を参照し、処理中のＨＤＥＶ５３０１と仮想ＬＢＡに対応するファイルを特定する。
【０１３７】
重複排除ＯＮ／ＯＦＦ判定部９０００は、ステップＳ１２００９で、ＨＤＥＶ重複度詳細情報テーブル４９１０Ａを参照し、上記特定したファイルの重複率４９１４Ａが所定の基準値以上であるか否かを判定する。重複率４９１４Ａが所定の基準値以上の場合はステップＳ１２０１０へ進んで、重複排除処理の対象領域として、重複排除・アドレス変換を実施するＩ／Ｏルートを選択し、終了する。
【０１３８】
一方、重複率４９１４Ａが基準値未満である場合は、ステップＳ１２０１１へ進んで、重複排除のメリットが薄いと判断し当該領域は重複排除・アドレス変換を実施しないＩ／Ｏルートを選択し、終了する。
【０１３９】
上記処理により、ＨＤＥＶ重複度情報テーブル４９００Ａの重複率４９０４Ａが基準値未満であれば、アクセス対象のＬＤＥＶ＃４９０１Ａの重複排除４９０２Ａが有効であっても、重複排除処理が禁止されて、重複排除・アドレス変換を実施しないＩ／Ｏルートでアクセスが行われる。
【０１４０】
さらに、ＨＤＥＶ重複度詳細情報テーブル４９１０Ａの重複率４９１４Ａが基準値未満であれば、アクセス対象のファイル（またはＬＢＡ）４９１１Ａの重複排除４９１２Ａが有効であっても、重複排除処理が禁止されて、重複排除・アドレス変換を実施しないＩ／Ｏルートでアクセスが行われる。
【０１４１】
以上のように、重複排除処理が効果的でないアクセス対象については、重複判定、アドレス変換といった重複排除処理に係る処理オーバーヘッドを削減できＩ／Ｏ処理の効率を向上させることが可能となる。
【０１４２】
図１７はホスト１００３がストレージシステム２０００に対して明示的に重複排除処理の有効または無効を通知する処理の一例を示すフローチャートである。
【０１４３】
ストレージシステム２０００はステップＳ１３００１で、接続されているホスト１００３から図４Ｂの８０３で示すようなインタフェースを介して重複排除処理実施のＯＮ（有効）／ＯＦＦ（無効）を制御する信号（コマンド）を受信する。このインタフェース８０３は、例えば物理的に別の通信経路であってもよいし、論理的な通信経路であってもよい。あるいはストレージシステム２０００とホスト１００３を接続しているＦＣ（Fibre Channel）やＳＣＳＩ等のプロトコルにおいてストレージシステム２０００をホスト１００３が操作するためのコマンドとして実装されていても良い。
【０１４４】
ストレージシステム２０００は、ステップＳ１３００２でＨＤＥＶ重複度情報テーブル４９００Ａの該当エントリーを特定する。重複排除処理実施のＯＮ／ＯＦＦを制御するコマンドには、制御対象のＨＤＥＶ５３０１を特定する情報や、制御対象のＬＢＡやファイルを特定する情報と、重複排除処理のＯＮ（有効）またはＯＦＦ（無効）を示す情報が含まれる。
【０１４５】
ストレージシステム２０００は、ステップＳ１３００３で上記受信したコマンドの制御対象がＬＢＡまたはファイル単位であるか否かを判定し、ＬＢＡまたはファイル単位の指定範囲であれば、ステップＳ１３００４へ進み、そうでない場合（ＨＤＥＶ５３０１単位）にはステップＳ１３００８へ進む。
【０１４６】
ストレージシステム２０００は、ステップＳ１３００４でＨＤＥＶ重複度詳細情報テーブル４９１０Ａのエントリーを特定し、ステップＳ１３００５で前記コマンドが重複排除のＯＦＦ要求であるか否かを判定する。重複排除のＯＦＦ要求であればステップＳ１３００６へ進み、そうでない場合にはステップＳ１３００７へ進む。
【０１４７】
ストレージシステム２０００は、ステップＳ１３００５で前記コマンドが重複排除のＯＦＦ要求であれば当該エントリーに対応するＨＤＥＶ重複度詳細情報テーブル４９１０Ａの重複排除４９１２Ａの項目を無効（ＯＦＦ）に設定し、一方、Ｓ１３００５で前記コマンドが重複排除のＯＮ要求であれば、ステップＳ１３００７で当該エントリーに対応するＨＤＥＶ重複度情報テーブル４９００Ａの重複排除４９１２Ａの項目を有効（ＯＮ）に設定する。
【０１４８】
また、ステップＳ１３００３で前記コマンドの対象がＬＢＡまたはファイル単位ではなく、ＨＤＥＶ単位であった場合はステップＳ１３００８で、前記コマンドが重複排除のＯＦＦ要求であるか否かを判定する。
【０１４９】
ストレージシステム２０００は、ステップＳ１３００８で前記コマンドが重複排除のＯＦＦ要求であればステップＳ１３００９で当該エントリーに対応するＨＤＥＶ重複度詳細情報テーブル４９１０Ａの重複排除４９１２Ａの項目を無効に設定する。
【０１５０】
一方、ステップＳ１３００３の判定で前記コマンドが重複排除のＯＮ要求であれば、ステップＳ１３０１０で該当エントリーに対応するＨＤＥＶ重複度詳細情報テーブル４９１０Ａの重複排除４９１２Ａの項目を有効に設定する。
【０１５１】
以上の処理によって、ストレージシステム２０００は、重複排除処理の有効または無効の設定コマンドを受け付けると、ＬＢＡまたはファイル単位、あるいはＨＤＥＶ単位等の指定された制御対象に対して重複排除処理の有効または無効を設定することができる。
【０１５２】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
【０１５３】
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【０１５４】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０１５５】
６３０  コントローラ
１００３  ホスト
２０００  ストレージ装置
２００１Ａ、２００１Ｂ  ＤＲＡＭ
２００２Ａ、２００２Ｂ  ＣＰＵ
２００９  ＰＤＥＶ
６０００  重複排除・アドレス変換部６０００
９０００  重複排除ＯＮ／ＯＦＦ判定部
５００１  チャンク
５１０１  ファイル
５３０１  ＨＤＥＶ
５５０１  プール
【図１】
2019079448.tif 000003
【図２】
2019079448.tif 000004
【図３Ａ】
2019079448.tif 000005
【図３Ｂ】
2019079448.tif 000006
【図４Ａ】
2019079448.tif 000007
【図４Ｂ】
2019079448.tif 000008
【図５】
2019079448.tif 000009
【図６】
2019079448.tif 000010
【図７】
2019079448.tif 000011
【図８】
2019079448.tif 000012
【図９】
2019079448.tif 000013
【図１０】
2019079448.tif 000014
【図１１】
2019079448.tif 000015
【図１２】
2019079448.tif 000016
【図１３】
2019079448.tif 000017
【図１４Ａ】
2019079448.tif 000018
【図１４Ｂ】
2019079448.tif 000019
【図１５】
2019079448.tif 000020
【図１６】
2019079448.tif 000021
【図１７】
2019079448.tif 000022