(57)【特許請求の範囲】
【請求項１】
記憶装置を制御するストレージ制御装置であって、
前記記憶装置における重複排除ボリュームに対する書込対象単位データが既存のデータと重複する場合、前記重複排除ボリュームについて単位データ毎に各単位データの論理領域に割り当てられる物理領域を示すマップ情報において、前記書込対象単位データの論理領域を前記既存のデータの物理領域に対応付ける重複排除処理を行なう重複排除部と、
前記重複排除ボリュームに対するスナップショット作成要求を受けた場合、前記重複排除ボリュームについての前記マップ情報をスナップショット領域にコピーして、前記マップ情報のコピーを、前記重複排除ボリュームのスナップショットのマップ情報とすることで、前記重複排除ボリュームのスナップショットの作成を完了するスナップショット作成部と、を有する、ストレージ制御装置。
【請求項２】
前記スナップショット作成部は、
前記スナップショット作成要求を受けた前記重複排除ボリュームの各単位データに対応するビットを有し、各ビットによって各単位データに対応する前記マップ情報のコピー完了／未完了を管理するビットマップを作成し、
作成したビットマップを参照しながら、前記重複排除ボリュームについての前記マップ情報を前記スナップショット領域にコピーする、請求項１に記載のストレージ制御装置。
【請求項３】
前記スナップショット作成部は、
前記書込対象単位データが前記スナップショットの作成中の前記重複排除ボリュームに含まれる場合、前記ビットマップを参照し、
前記ビットマップにおける前記書込対象単位データに対応するビットにコピー未完了が設定されていれば、前記書込対象単位データに対応する前記マップ情報を前記スナップショット領域にコピーし、
前記ビットマップにおける前記書込対象単位データに対応するビットにコピー完了を設定する、請求項２に記載のストレージ制御装置。
【請求項４】
前記スナップショット作成部は、
前記書込対象単位データが前記スナップショットの作成中の前記重複排除ボリュームに含まれる場合、前記ビットマップを参照し、
前記ビットマップにおける前記書込対象単位データに対応するビットにコピー完了が設定されていれば、前記書込対象単位データに対応する前記マップ情報を前記スナップショット領域にコピーする処理をスキップする、請求項２に記載のストレージ制御装置。
【請求項５】
前記スナップショット作成部は、
前記重複排除ボリュームについての前記マップ情報の、前記スナップショット領域へのコピーを完了すると、前記ビットマップを保持する領域を解放する、請求項２〜請求項４のいずれか一項に記載のストレージ制御装置。
【請求項６】
前記重複排除ボリュームと前記スナップショット領域とが同一の重複排除単位ストレージプールに属している場合、前記スナップショット作成部は、前記マップ情報を前記スナップショット領域にコピーすることで前記重複排除ボリュームのスナップショットを作成する、請求項１〜請求項５のいずれか一項に記載のストレージ制御装置。
【請求項７】
前記重複排除ボリュームと前記スナップショット領域とが異なる重複排除単位ストレージプールに属している場合、前記スナップショット作成部は、前記重複排除ボリュームの更新前単位データを前記スナップショット領域にコピーすることで前記重複排除ボリュームのスナップショットを作成する、請求項１〜請求項５のいずれか一項に記載のストレージ制御装置。
【請求項８】
前記重複排除ボリュームの復元要求を受けた場合、前記スナップショット領域における前記マップ情報を復元先にコピーすることで前記重複排除ボリュームを復元する復元部をさらに有する、請求項１〜請求項７のいずれか一項に記載のストレージ制御装置。
【請求項９】
記憶装置を制御するコンピュータに、
前記記憶装置における重複排除ボリュームに対する書込対象単位データが既存のデータと重複する場合、前記重複排除ボリュームについて単位データ毎に各単位データの論理領域に割り当てられる物理領域を示すマップ情報において、前記書込対象単位データの論理領域を前記既存のデータの物理領域に対応付ける重複排除処理を行ない、
前記重複排除ボリュームに対するスナップショット作成要求を受けた場合、前記重複排除ボリュームについての前記マップ情報をスナップショット領域にコピーして、前記マップ情報のコピーを、前記重複排除ボリュームのスナップショットのマップ情報とすることで、前記重複排除ボリュームのスナップショットの作成を完了する、
処理を実行させる、ストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、ストレージ制御装置およびストレージ制御プログラムに関する。
【背景技術】
【０００２】
業務で取り扱うデータ量の増大や仮想環境の普及に伴って、ストレージ（記憶装置）の使用量は著しく増大している。このため、ストレージシステムでは、データ量を削減すべく、ストレージ制御装置によるデータ重複排除機能（deduplication）が用いられる場合がある。データ重複排除機能を用いる場合、同一内容をもつ複数のデータに対して一つのデータ物理領域のみが割り当てられる。ここで、ストレージは、例えばＨＤＤ（Hard Disk Drive），ＳＳＤ（Solid State Drive）等のドライブである。
【０００３】
一方、ストレージシステムでは、ストレージ上におけるコピー元ボリュームの、ある一時点でのイメージを、スナップショットとして採取し作成するスナップショット作成機能が用いられる場合がある。スナップショットの作成時には、管理領域（スナップショット領域）が確保され、コピー元ボリュームの実データのコピーは行なわれない。サーバからコピー元ボリュームに対してデータ更新が行なわれる際、コピー元ボリュームにおける更新前データが未コピーであれば、当該更新前データが管理領域にコピーされる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−４７９３３号公報
【特許文献２】特開平１１−１３４１１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述したデータ重複排除処理とスナップショット作成処理とでは、使用される状況が異なっているが、同一内容をもつ複数のデータに対して異なる物理領域を割り当てないという考え方は同じである。しかしながら、現状において、上述したデータ重複排除処理とスナップショット作成処理とは、連携しておらず、例えば図１７に示すようにそれぞれ独立に制御される。なお、図１７は、既存のストレージシステムにおいてデータ重複排除処理とスナップショット作成処理との両方を実行する際の処理手順を説明するフローチャートである。
【０００６】
図１７に示すように、ストレージシステムにおいて、サーバからコピー元ボリュームに対するＩ／Ｏ（Input/Output；入出力）要求を受信すると（ステップＳ１）、まず、スナップショットの判定処理（ステップＳ２）が行なわれる。受信したＩ／Ｏ要求がコピー元ボリュームに対するデータ更新要求（書込み要求）である場合、スナップショットの判定処理では、コピー元ボリュームにおける更新前データがコピー済みであるか否かのチェックが行なわれる。当該チェックの結果、コピー元ボリュームにおける更新前データが未コピーであれば、当該更新前データを管理領域（スナップショット領域）に退避させる処理が行なわれる。このような処理が、スナップショット作成処理におけるオーバヘッドとなる。
【０００７】
この後に実行されるデータ重複排除処理（ステップＳ３）では、受信したＩ／Ｏ要求がコピー元ボリュームに対するデータ更新要求である場合、更新後データが、既存のデータと重複するか否かの重複チェックが行なわれる。そして、重複チェックの結果に応じたデータ重複排除処理の実行後、Ｉ／Ｏ要求に応じたＩ／Ｏ処理（ステップＳ４）が実行される。なお、重複する場合、Ｉ／Ｏ要求の対象データの論理領域は、前記既存のデータの物理領域に対応付けられる。一方、重複しない場合、Ｉ／Ｏ要求の対象データの論理領域は、新たに割り当てられる物理領域に対応付けられる。上述のような重複チェック処理が、データ重複排除処理におけるオーバヘッドとなる。
【０００８】
図１７を参照しながら上述したように、単純にスナップショット作成機能とデータ重複排除機能とを組み合わせると、上述した二つのオーバヘッドが単純に足し合わされ、ストレージの性能が低下する。
【０００９】
一つの側面で、本件明細書に開示の発明は、記憶装置の性能低下を招くことなく重複排除機能とスナップショット作成機能とを組み合わせ、機能の最適化を図ることを目的とする。
【課題を解決するための手段】
【００１０】
本件のストレージ制御装置は、記憶装置を制御するものであって、重複排除部およびスナップショット作成部を有する。前記重複排除部は、前記記憶装置における重複排除ボリュームに対する書込対象単位データが既存のデータと重複する場合、前記重複排除ボリュームについて単位データ毎に各単位データの論理領域に割り当てられる物理領域を示すマップ情報において、前記書込対象単位データの論理領域を前記既存のデータの物理領域に対応付ける重複排除処理を行なう。前記スナップショット作成部は、前記重複排除ボリュームに対するスナップショット作成要求を受けた場合、前記重複排除ボリュームについての前記マップ情報をスナップショット領域にコピーして、前記マップ情報のコピーを、前記重複排除ボリュームのスナップショットのマップ情報とすることで、前記重複排除ボリュームのスナップショットの作成を完了する。
【発明の効果】
【００１１】
記憶装置の性能低下を招くことなく重複排除機能とスナップショット作成機能との組合せ、機能の最適化を実現することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態としてのストレージ制御装置を含むストレージ装置のハードウェア構成の一例を示すブロック図である。
【図２】本発明の一実施形態としてのストレージ制御装置の機能構成の一例を示すブロック図である。
【図３】（Ａ）および（Ｂ）は、それぞれ、異なる二つの重複排除ボリューム（論理ボリューム）についてのブロックマップの例を示す図である。
【図４】本実施形態のスナップショット作成動作の概要を説明する図である。
【図５】（Ａ）および（Ｂ）は、それぞれ、本実施形態のスナップショット作成動作の概要を説明すべく、重複排除ボリュームについてのブロックマップ、および、当該重複排除ボリュームのスナップショットについてのブロックマップの例を示す図である。
【図６】（Ａ）および（Ｂ）は、それぞれ、本実施形態のスナップショット作成動作の概要を説明すべく、重複排除ボリュームについてのブロックマップ、および、当該重複排除ボリュームのスナップショットについてのブロックマップの例を示す図である。
【図７】（Ａ）および（Ｂ）は、それぞれ、本実施形態のスナップショット作成動作の概要を説明すべく、重複排除ボリュームについてのブロックマップ、および、当該重複排除ボリュームのスナップショットについてのブロックマップの例を示す図である。
【図８】本実施形態のスナップショット作成動作の概要を説明すべく、図７（Ｂ）に示すブロックマップに対応するビットマップの例を示す図である。
【図９】本実施形態の復元動作の概要を説明する図である。
【図１０】（Ａ）および（Ｂ）は、それぞれ、本実施形態の復元動作の概要を説明すべく、重複排除ボリュームについてのブロックマップ、および、当該重複排除ボリュームのスナップショットについてのブロックマップの例を示す図である。
【図１１】（Ａ）および（Ｂ）は、それぞれ、本実施形態の復元動作の概要を説明すべく、重複排除ボリュームについてのブロックマップ、および、当該重複排除ボリュームのスナップショットについてのブロックマップの例を示す図である。
【図１２】本実施形態におけるストレージ制御動作全体の流れを説明するフローチャートである。
【図１３】本実施形態のスナップショット作成要求受信時の処理の手順を説明するフローチャートである。
【図１４】既存のストレージシステムにおける書込み要求受信時の処理の手順を説明するフローチャートである。
【図１５】本実施形態の書込み要求受信時の処理の手順を説明するフローチャートである。
【図１６】本実施形態の読出し要求受信時の処理の手順を説明するフローチャートである。
【図１７】既存のストレージシステムにおいてデータ重複排除処理とスナップショット作成処理との両方を実行する際の処理手順を説明するフローチャートである。
【発明を実施するための形態】
【００１３】
以下に、図面を参照し、本願の開示するストレージ制御装置およびストレージ制御プログラムの実施形態について、詳細に説明する。ただし、以下に示す実施形態は、あくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能を含むことができる。そして、各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【００１４】
〔１〕本実施形態のストレージ装置のハードウェア構成
まず、図１を参照しながら、本実施形態のストレージ制御装置１００を含むストレージ装置（ストレージシステム）１について説明する。なお、図１は、本実施形態のストレージ制御装置１００を含むストレージ装置１のハードウェア構成の一例を示すブロック図である。
【００１５】
本ストレージ装置１は、ドライブエンクロージャ（ＤＥ：Drive Enclosure）３０に格納された記憶装置３１を仮想化して、仮想ストレージ環境を形成する。そして、ストレージ装置１は、仮想ボリュームを、上位装置であるホスト装置（サーバ）２に提供する。
【００１６】
本ストレージ装置１は、１以上（図１に示す例では１つ）のホスト装置２に対して通信可能に接続されている。ホスト装置２とストレージ装置１とは、後述するＣＡ（Communication Adapter）１０１，１０２により接続されている。
【００１７】
ホスト装置２は、例えば、サーバ機能をそなえた情報処理装置であり、本ストレージ装置１との間において、ＮＡＳ（Network Attached Storage）やＳＡＮ（Storage Area Network）のコマンドを送受信する。ホスト装置２は、例えば、ストレージ装置１に対してＮＡＳにおけるリード／ライト等のストレージアクセスコマンドを送信することにより、ストレージ装置１が提供するボリュームにデータの書込または読出を行なう。
【００１８】
そして、本ストレージ装置１は、ホスト装置２からボリュームに対して行なわれる入出力要求（例えば、書込み要求や読出し要求）に応じて、このボリュームに対応する記憶装置３１に対して、データの読出（リード）や書込（ライト）等の処理を行なう。なお、ホスト装置２からの入出力要求のことをＩ／Ｏ要求という場合がある。
【００１９】
なお、図１に示す例においては１つのホスト装置２が図示されているが、これに限定されるものではなく、ストレージ装置１に２つ以上のホスト装置２を接続してもよい。
【００２０】
また、ストレージ装置１には、管理端末３が通信可能に接続されている。管理端末３は、キーボードやマウス等の入力装置や、表示装置を備える情報処理装置であって、システム管理者等のユーザが各種情報の入力操作を行なう。例えば、ユーザは、管理端末３を介して、各種設定等に係る情報を入力する。入力された情報は、ホスト装置２やストレージ装置１に送信される。
【００２１】
本ストレージ装置１は、図１に示すように、複数（本実施形態では２つ）のＣＭ（Controller Module）１００ａ，１００ｂ及び１つ以上（図１に示す例では３つ）のドライブエンクロージャ３０をそなえる。
【００２２】
ドライブエンクロージャ３０は、１以上（図１に示す例では４つ）の記憶装置（物理ディスク）３１を搭載可能であり、これらの記憶装置３１の記憶領域（実ボリューム，実ストレージ）を、本ストレージ装置１に対して提供する。
【００２３】
例えば、ドライブエンクロージャ３０は、複数段のスロット（図示省略）をそなえ、これらのスロットに、記憶装置３１を挿入することにより、実ボリューム容量を随時変更することができる。また、複数の記憶装置３１を用いてＲＡＩＤ（Redundant Arrays of Inexpensive Disks）を構成することができる。
【００２４】
記憶装置３１は、後述するメモリ１０６と比較すると容量の大きい、ＨＤＤ，ＳＳＤ等の記憶装置（ストレージ）であって、種々のデータを格納するものである。なお、以下では、記憶装置のことをドライブもしくはディスクという場合がある。
【００２５】
各ドライブエンクロージャ３０は、ＣＭ１００ａのデバイスアダプタ（Device Adapter：ＤＡ）１０３，１０３とＣＭ１００ｂのＤＡ１０３，１０３とそれぞれ接続されている。そして、各ドライブエンクロージャ３０には、ＣＭ１００ａ，１００ｂのいずれからもアクセスして、データの書込や読出を行なうことができる。すなわち、ドライブエンクロージャ３０の各記憶装置３１に対して、ＣＭ１００ａ，１００ｂのそれぞれを接続することにより、記憶装置３１へのアクセス経路が冗長化されている。
【００２６】
コントローラエンクロージャ４０は、１以上（図１に示す例では２つ）のＣＭ１００ａ，１００ｂを備える。
【００２７】
ＣＭ１００ａ，１００ｂは、ストレージ装置１内の動作を制御するコントローラ（ストレージ制御装置）であり、ホスト装置２から送信されるＩＯコマンドに従って、ドライブエンクロージャ３０の記憶装置３１へのデータアクセス制御等、各種制御を行なう。又、ＣＭ１００ａ，１００ｂは互いに同様の構成を有している。以下、ＣＭを示す符号としては、複数のＣＭのうち１つを特定する場合には符号１００ａ，１００ｂを用い、任意のＣＭを指すときには符号１００を用いる。また、ＣＭ１００ａをＣＭ＃１と、ＣＭ１００ｂをＣＭ＃２と、それぞれ表す場合がある。
【００２８】
ＣＭ１００ａ，１００ｂは二重化されており、通常は、ＣＭ１００ａ（ＣＭ＃１）がプライマリとして各種制御を行なう。しかし、プライマリＣＭ１００ａの故障時には、セカンダリのＣＭ１００ｂ（ＣＭ＃２）がプライマリとしてＣＭ１００ａの動作を引き継ぐ。
【００２９】
ＣＭ１００ａ，１００ｂは、ＣＡ１０１，１０２を介して、それぞれホスト装置２に接続される。そして、ＣＭ１００ａ，１００ｂは、ホスト装置２から送信されるリード／ライト等のＩ／Ｏ要求を受信し、ＤＡ１０３等を介して記憶装置３１の制御を行なう。また、ＣＭ１００ａ，１００ｂは、ＰＣＩｅ（Peripheral Component Interconnect Express）等の図示しないインタフェースを介して相互に通信可能に接続される。
【００３０】
ＣＭ１００は、図１に示すように、ＣＡ１０１，１０２と複数（図１に示す例では２つ）のＤＡ１０３，１０３とをそなえるとともに、ＣＰＵ（Central Processing Unit）１０５，メモリ１０６，フラッシュメモリ１０７およびＩＯＣ（Input Output Controller）１０８をそなえる。ＣＡ１０１，１０２，ＤＡ１０３，ＣＰＵ１０５，メモリ１０６，フラッシュメモリ１０７，ＩＯＣ１０８は、例えばＰＣＩｅインタフェース１０４を介して相互に通信可能に接続される。
【００３１】
ＣＡ１０１，１０２は、ホスト装置２や管理端末３等から送信されたデータを受信したり、ＣＭ１００から出力するデータをホスト装置２や管理端末３等に送信する。すなわち、ＣＡ１０１，１０２は、ホスト装置２等の外部装置との間でのデータの入出力を制御する。
【００３２】
ＣＡ１０１は、ＮＡＳを介してホスト装置２や管理端末３と通信可能に接続するネットワークアダプタであり、例えば、ＬＡＮ（Local Area Network）インタフェース等である。各ＣＭ１００は、ＣＡ１０１により図示しない通信回線を介してホスト装置２等とＮＡＳにより接続され、Ｉ／Ｏ要求の受信やデータの送受信等を行なう。図１に示す例においては、ＣＭ１００ａ，１００ｂのそれぞれに２つのＣＡ１０１，１０１がそなえられている。
【００３３】
ＣＡ１０２は、ＳＡＮを介してホスト装置２と通信可能に接続するネットワークアダプタであり、例えば、ｉＳＣＳＩ（Internet Small Computer System Interface）インタフェースやＦＣ（Fibre Channel）インタフェースである。各ＣＭ１００は、ＣＡ１０２により図示しない通信回線を介してホスト装置２等とＳＡＮにより接続され、Ｉ／Ｏ要求の受信やデータの送受信等を行なう。図１に示す例においては、ＣＭ１００ａ，１００ｂのそれぞれに１つのＣＡ１０２がそなえられている。
【００３４】
ＤＡ１０３は、ドライブエンクロージャ３０や記憶装置３１等と通信可能に接続するためのインタフェースである。ＤＡ１０３は、ドライブエンクロージャ３０の記憶装置３１が接続され、各ＣＭ１００は、ホスト装置２から受信したＩ／Ｏ要求に基づき、記憶装置３１に対するアクセス制御を行なう。
【００３５】
各ＣＭ１００は、ＤＡ１０３を介して、記憶装置３１に対するデータの書込や読出を行なう。また、図１に示す例においては、ＣＭ１００ａ，１００ｂのそれぞれに２つのＤＡ１０３，１０３がそなえられている。そして、ＣＭ１００ａ，１００ｂのそれぞれにおいて、各ＤＡ１０３にドライブエンクロージャ３０が接続されている。
【００３６】
これにより、ドライブエンクロージャ３０の記憶装置３１には、ＣＭ１００ａ，１００ｂのいずれからもデータの書込や読出を行なうことができる。
【００３７】
フラッシュメモリ１０７は、ＣＰＵ１０５が実行するプログラムや種々のデータ等を格納する記憶装置である。
【００３８】
メモリ１０６は、種々のデータやプログラムを一時的に格納する記憶装置であり、後述するキャッシュ領域１６１やメモリ領域１６２をそなえる（図２参照）。キャッシュ領域１６１は、ホスト装置２から受信したデータや、ホスト装置２に対して送信するデータを一時的に格納する。アプリケーション用メモリ領域１６２は、ＣＰＵ１０５がアプリケーションプログラムを実行する際に、データやプログラムを一時的に格納する。アプリケーションプログラムは、例えば、本実施形態のストレージ制御機能を実現すべくＣＰＵ１０５が実行するストレージ制御プログラム１６０（図２参照）であり、ストレージ制御プログラム１６０は、メモリ１０６あるいはフラッシュメモリ１０７に保存される。なお、メモリ１０６は、前述した記憶装置（ドライブ）３１と比較するとアクセス速度は高速であるが容量の小さい、ＲＡＭ（Random Access Memory）等である。
【００３９】
ＩＯＣ１０８は、各ＣＭ１００内におけるデータ転送を制御する制御装置であり、例えば、メモリ１０６に格納されたデータをＣＰＵ１０５を介することなく転送させるＤＭＡ（Direct Memory Access）転送を実現する。
【００４０】
ＣＰＵ１０５は、種々の制御や演算を行なう処理装置であり、例えばマルチコアプロセッサ（マルチＣＰＵ）である。ＣＰＵ１０５は、メモリ１０６，フラッシュメモリ１０７等に格納されたＯＳ（Operating System）やプログラムを実行することにより、種々の機能を実現する。
【００４１】
〔２〕本実施形態のストレージ制御装置の機能構成
ついで、図２を参照しながら、本実施形態のストレージ制御装置（ＣＭ）１００の機能構成について説明する。なお、図２は、ＣＭ１００の機能構成の一例を示すブロック図である。
【００４２】
本実施形態のＣＭ１００において、ＣＰＵ１０５は、ストレージ制御プログラム１６０を実行することで、図２に示すように、重複排除部１５１，スナップショット作成部１５２，復元部１５３およびＩ／Ｏ処理部（入出力処理部）１５４として機能する。
【００４３】
なお、ストレージ制御プログラム１６０は、コンピュータ読取可能な記録媒体であって可搬型の非一時的な記録媒体に記録された形態で提供される。当該記録媒体としては、磁気ディスク，光ディスク，光磁気ディスクなどが挙げられる。また、光ディスクとしては、ＣＤ（Compact Disk），ＤＶＤ（Digital Versatile Disk），ブルーレイディスクなどが挙げられる。ＣＤは、ＣＤ−ＲＯＭ（Read Only Memory），ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などを含む。ＤＶＤは、ＤＶＤ−ＲＡＭ，ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ(High Definition) ＤＶＤなどを含む。
【００４４】
このとき、ＣＰＵ１０５は、上述のごとき記録媒体からストレージ制御プログラム１６０を読み取って内部記憶装置（例えばメモリ１０６やフラッシュメモリ１０７）または外付けの記憶装置に格納して用いる。なお、ＣＰＵ１０５は、ストレージ制御プログラム１６０を、ネットワーク（図示略）を介して受信し内部記憶装置または外付けの記憶装置に格納して用いてもよい。
【００４５】
本実施形態のＣＭ１００は、ＤＥ３０における各記憶装置３１を制御するもので、重複排除部（重複排除エンジン）１５１によるデータ重複排除機能と、スナップショット作成部（スナップショット作成エンジン）１５２によるスナップショット作成機能との両機能を有する。
【００４６】
重複排除部１５１は、各記憶装置３１に保存される各単位データが重複するのを排除するデータ重複排除機能を実現する。重複排除部１５１は、ブロックマップ（マッピングテーブル）５１（図３（Ａ）等参照）を用いて、重複排除ボリュームに対する書込対象単位データについて重複排除処理を行なう。ブロックマップ５１は、記憶装置３１における重複排除ボリュームについて単位データ毎に各単位データの論理領域に割り当てられる物理領域を示すマップ情報に相当する。ブロックマップ５１は、メモリ１０６のアプリケーション用メモリ領域１６２に保存されてもよいし、記憶装置３１に保存されてもよい。なお、論理領域は、論理アドレス（ＬＢＡ：Logical Block Address）によって示されてもよい。また、物理領域は、物理アドレス（各記憶装置３１における実アドレス）によって示されてもよい。ブロックマップ５１については、図３（Ａ），図３（Ｂ），図５（Ａ）〜図７（Ｂ），図１０（Ａ）〜図１１（Ｂ）を参照しながら具体的に説明する。
【００４７】
図２に示す例では、ＤＥ３０（記憶装置３１）におけるストレージプール＃１，＃２，…が、それぞれ重複排除単位である。ストレージプール＃１は、３つの論理ボリューム＃１〜＃３をそれぞれ重複排除ボリュームとして含むとともに、ストレージプール＃２は、３つの論理ボリューム＃４〜＃６をそれぞれ重複排除ボリュームとして含む。
【００４８】
ストレージプール＃１においては、重複排除ボリューム＃１〜＃３のそれぞれについてブロックマップ５１が作成され、当該ブロックマップ５１を用いて、重複排除ボリューム＃１〜＃３のデータと当該ストレージプール＃１内のデータとの重複が排除される。同様に、ストレージプール＃２においては、重複排除ボリューム＃４〜＃６のそれぞれについてブロックマップ５１が作成され、当該ブロックマップ５１を用いて、重複排除ボリューム＃４〜＃６のデータと当該ストレージプール＃２内のデータとの重複が排除される。
【００４９】
重複排除部１５１は、ホスト装置２から重複排除ボリュームに対する書込み要求（データ更新要求）を受信した場合、重複チェックを行なう。当該重複チェックでは、ホスト装置２からの書込対象単位データ（更新後データ）が、同一の重複排除単位ストレージプール（重複排除プール）における既存のデータと重複するか否かがチェックされる。重複する場合、重複排除部１５１は、重複排除ボリュームのブロックマップ５１において、書込み要求の対象データの論理領域を、前記既存のデータの物理領域に対応付ける。一方、重複しない場合、重複排除部１５１は、書込対象単位データの論理領域を、新たに割り当てられる物理領域に対応付け、書込対象単位データは、新たに割り当てられる物理領域に書き込まれる。
【００５０】
なお、本実施形態において、前記重複チェックの対象となる単位データ（書込対象単位データ）は、ＨＤＤ，ＳＳＤ等への書込み単位（物理ブロック単位；例えば５１２Ｂ（バイト））のサイズを有するデータブロックであってもよいし、複数のデータブロックを一つにまとめたデータブロック群（例えば４キロバイト）であってもよい。
【００５１】
スナップショット作成部１５２は、ホスト装置２から重複排除ボリュームに対するスナップショット作成要求を受けた場合、当該重複排除ボリューム（コピー元）とスナップショット領域（コピー先）とが同一の重複排除プールに属しているか否かを判断する。
【００５２】
コピー元とコピー先とが同一の重複排除プールに属していない場合つまり異なる重複排除プールに属している場合、スナップショット作成部１５２は、図１７を参照しながら前述したスナップショット作成処理と同様の処理を実行する。つまり、スナップショット作成部１５２は、重複排除ボリュームの更新前単位データ（書込前単位データ）を、重複排除ボリュームの属する重複排除プールとは異なる重複排除プール内のスナップショット領域にコピーする。これにより、重複排除ボリュームのスナップショットが作成される。
【００５３】
コピー元とコピー先とが同一の重複排除プールに属している場合、スナップショット作成部１５２は、以下の処理を行なう。つまり、スナップショット作成部１５２は、スナップショット作成対象の重複排除ボリュームについてのブロックマップ５１を、エントリ毎に、順次、重複排除ボリュームの属する重複排除プール内のスナップショット領域にコピーする。これにより、重複排除ボリュームのスナップショットが作成される。ブロックマップ５１の各エントリは、各単位データに対応する、一組の論理領域と物理領域とに関する情報を含む。
【００５４】
このとき、スナップショット作成部１５２は、スナップショット作成対象の重複排除ボリュームについてのブロックマップ５１のコピー状態を管理するビットマップ５２（図８参照）を作成する。ビットマップ５２は、スナップショット作成要求を受けた重複排除ボリュームの各単位データに対応するビットを有する。そして、ビットマップ５２は、各ビットによって、各単位データに対応するブロックマップ５１の一エントリ分のコピー完了／未完了を管理する。図８を参照しながら後述するように、対応エントリのコピーが未完了の場合、対応ビットには“１”が設定される一方、対応エントリのコピーが完了している場合、対応ビットには“０”が設定される。なお、ビットマップ５２は、メモリ１０６のアプリケーション用メモリ領域１６２に保存されてもよいし、記憶装置３１に保存されてもよい。また、ビットマップ５２の領域は、重複排除ボリュームについてのブロックマップ５１の全てのエントリのコピーを完了すると解放される。
【００５５】
スナップショット作成部１５２は、以下に説明するように、作成したビットマップ５２に従って、重複排除ボリュームについてのブロックマップ５１を、エントリ毎に、スナップショット領域にコピーする。その際、スナップショット作成部１５２は、ホスト装置２からの書込対象単位データがスナップショット作成中の重複排除ボリュームに含まれるか否かを判断する。書込対象単位データがスナップショット作成中の重複排除ボリュームに含まれない場合、Ｉ／Ｏ処理部１５４は、書込対象単位データについて通常の書込みＩ／Ｏ処理を実行する。
【００５６】
書込対象単位データがスナップショット作成中の重複排除ボリュームに含まれる場合、スナップショット作成部１５２は、当該重複排除ボリューム（コピー元）とスナップショット領域（コピー先）とが同一の重複排除プールに属しているか否かを判断する。
【００５７】
コピー元とコピー先とが同一の重複排除プールに属していない場合つまり異なる重複排除プールに属している場合、スナップショット作成部１５２は、図１７を参照しながら前述した処理と同様の処理を実行する。つまり、スナップショット作成部１５２は、書込対象単位データを書き込むべき論理領域における更新前単位データがコピー済みであるか否かを判断する。未コピーであれば、スナップショット作成部１５２は、当該更新前単位データをスナップショット領域（管理領域）にコピーしてスナップショットを作成し、Ｉ／Ｏ処理部１５４は、当該論理領域に新たな物理領域を割り当て、割り当てた物理領域に書込対象単位データを書き込む。コピー済みであれば、スナップショット作成部１５２は、当該更新前単位データのコピーを行なうことなく、Ｉ／Ｏ処理部１５４は、当該論理領域に新たな物理領域を割り当て、割り当てた物理領域に書込対象単位データを書き込む。
【００５８】
一方、コピー元とコピー先とが同一の重複排除プールに属している場合、スナップショット作成部１５２は、コピー元の重複排除ボリュームについてのビットマップ５２を参照する。スナップショット作成部１５２は、ビットマップ５２における書込対象単位データに対応するビットにコピー未完了“１”が設定されていれば、書込対象単位データに対応するブロックマップ５１のエントリを、スナップショット領域にコピーする。そして、スナップショット作成部１５２は、ビットマップ５２における書込対象単位データに対応するビットにコピー完了“０”を設定する。この後、Ｉ／Ｏ処理部１５４は、書込対象単位データについて通常の書込みＩ／Ｏ処理を実行する。
【００５９】
また、スナップショット作成部１５２は、ビットマップ５２における書込対象単位データに対応するビットにコピー完了“０”が設定されていれば、書込対象単位データに対応するブロックマップ５１のエントリのコピー処理や、ビットマップ５２の更新処理をスキップする。この後、Ｉ／Ｏ処理部１５４は、書込対象単位データについて通常の書込みＩ／Ｏ処理を実行する。
【００６０】
復元部１５３は、重複排除ボリュームの復元要求（リストア要求）を受けた場合、スナップショット領域におけるブロックマップ５１（各エントリにおける情報）を復元先にコピーすることで重複排除ボリュームを復元する。復元部１５３による復元処理については、図９〜図１１（Ｂ）を参照しながら後述する。
【００６１】
〔３〕本実施形態のストレージ制御装置の動作概要
次に、図３（Ａ）〜図１１（Ｂ）を参照しながら、上述のような機能構成を有する本実施形態のストレージ制御装置１００の動作概要について説明する。
【００６２】
まず、前述した既存のストレージシステムと、本実施形態のストレージ装置１との動作上の差異について説明する。
【００６３】
コピー元（重複排除ボリューム）とコピー先（スナップショット領域）とは、前述した既存のストレージシステムでは、同一のストレージプールに属していても異なるストレージプールに属していてもよい。これに対し、本実施形態において、コピー元とコピー先とは、同一のストレージプール（重複排除プール）に属している。
【００６４】
本実施形態のストレージ装置１において、重複排除ボリュームのスナップショット作成は、コピー元の重複排除ボリュームのブロックマップ５１を、スナップショット先ボリュームのブロックマップ（スナップショット領域）にコピーすることによって実行される。
【００６５】
また、前述した既存のストレージシステムでは、スナップショットの作成時、コピー元の各単位データのコピー完了／未完了が、単位データ毎のビットマップによって管理される。これに対し、本実施形態のストレージ制御装置１００において、重複排除ボリュームのスナップショット作成時には、ブロックマップ５１のエントリ毎のビットマップ５２（図８参照）を用いて、ブロックマップ５１の各エントリのコピー完了／未完了が管理される。ビットマップ５２を用いることにより、ブロックマップ５１のコピー中に、ホスト装置２によるストレージ装置１に対するアクセスを待ち状態で停止させるのを抑止することができる。
【００６６】
ブロックマップ５１の全エントリのコピー完了後、ストレージ制御装置１００は、コピー元ボリューム（重複排除ボリューム）とスナップショットボリューム（スナップショット領域）とに対するアクセスを、それぞれ独立して管理する。
【００６７】
既存のストレージシステムにおいて、スナップショットからコピー元へのリストア処理は、差分データを物理コピーすることによって実行される。これに対し、本実施形態において、スナップショットからコピー元ボリュームへのリストア処理は、ストレージ制御装置１００の復元部１５３によってスナップショットのブロックマップ５１をコピー元ボリュームへコピーすることで実行される。このとき、本実施形態のストレージ装置１において、データの物理コピーは行なわれない。
【００６８】
重複排除機能では、上述したように、所定サイズ（例えば４ＫＢ）の単位データ毎に論理領域がどの物理領域に割り当てられているかを示すブロックマップ５１が存在する。本実施形態のストレージ装置１では、重複排除ボリュームのスナップショット作成時に、重複排除部１５１に、重複排除ボリュームにおける各単位データについてのブロックマップ５１の作成が依頼される。これにより、スナップショット作成後のデータ書込み時のオーバヘッドが削減される。
【００６９】
ここで、図３（Ａ）および図３（Ｂ）を参照して、重複排除ボリュームについてのブロックマップ５１の構造の具体例について説明する。図３（Ａ）および図３（Ｂ）は、それぞれ、異なる二つの重複排除ボリューム（論理ボリューム）についてのブロックマップ５１の例を示す図である。
【００７０】
図３（Ａ）は、例えば、ＬＵＮ（Logical Unit Number）＝0x0000の論理ボリューム＃１のブロックマップ５１を示し、図３（Ｂ）は、例えば、ＬＵＮ＝0x0004の論理ボリューム＃２のブロックマップ５１を示している。図３（Ａ）に示す論理ボリューム＃１では、論理領域（論理アドレス）0x00000008と0x00000028とに割り当てられた物理領域（物理アドレス）0x00001118が重複している（矢印Ａ１参照）。また、図３（Ａ）および図３（Ｂ）に示す論理ボリューム＃１および＃２では、それぞれ論理領域0x00000020と0x00000018とに割り当てられた物理領域0x00007088が重複している（矢印Ａ２参照）。
【００７１】
ついで、図４〜図８を参照して、本実施形態のスナップショット作成部１５２によるスナップショット作成動作の概要について説明する。図４〜図８は、いずれも本実施形態のスナップショット作成動作の概要を説明する図である。特に、図５（Ａ），図６（Ａ），図７（Ａ）は、重複排除ボリュームについてのブロックマップ５１の例を示す図である。図５（Ｂ），図６（Ｂ），図７（Ｂ）は、それぞれ図５（Ａ），図６（Ａ），図７（Ａ）に示す重複排除ボリュームのスナップショットについてのブロックマップ５１の例を示す図である。図８は、図７（Ｂ）に示すブロックマップ５１に対応するビットマップ５２の例を示す図である。
【００７２】
ここでは、例えば図４に示すように、ＬＵＮ＝0x0000のコピー元論理ボリューム＃１のブロックマップ５１（図３（Ａ）および図５（Ａ）参照）が、同一ストレージプール内のＬＵＮ＝0x0100のコピー先スナップショット領域（スナップショット＃１；図５（Ｂ）参照）にコピーされる。これにより、論理ボリューム＃１のスナップショットが、スナップショット＃１に作成される。
【００７３】
スナップショット作成完了時点において、ＬＵＮ＝0x0100のデータは、コピー元のＬＵＮ＝0x0000のデータと全く同じであるため、ＬＵＮ＝0x0100には、図５（Ｂ）に示すように、図５（Ａ）に示すブロックマップ５１と同一のブロックマップ５１が作成される。
【００７４】
スナップショット（ブロックマップ５１のコピー）が一旦作成された後は、コピー元とコピー先とはそれぞれ独立にアクセスされる。これは、更新前単位データの物理領域と別の物理領域の割当てを受け当該別の物理領域に対し重複排除における書込みを行なうように制御することを前提としている。これにより、書込み前データ（更新前単位データ）が上書きによって消去されることが抑止される。
【００７５】
例えば、図５（Ａ）に示すブロックマップ５１において、ＬＵＮ＝0x0000の論理領域（ＬＢＡ）0x00000018に対する書込みが行なわれた場合、図５（Ａ）に示すブロックマップ５１は、図６（Ａ）に示すブロックマップ５１のように更新される。例えば、図６（Ａ）では、ＬＢＡ＝0x00000018に対し、物理領域0x00000090に代えて物理領域0x00003058が新規に割り当てられ、当該物理領域0x00003058に対し書換対象単位データが書き込まれる。このとき、図６（Ｂ）に示すように、ＬＵＮ＝0x0100のスナップショットのブロックマップ５１に対する更新は何ら行なわれない。
【００７６】
ただし、既存のストレージシステムにおける通常のスナップショット作成時には、前述した単位データ毎のビットマップが作成され、単位データ毎にコピー完了／未完了の管理が行なわれるだけであり、単位データ毎のビットマップの作成は高速で行なえる。このため、ホストアクセスとしては、待ち時間がほぼゼロである。
【００７７】
一方、重複排除におけるブロックマップ作成（スナップショット先ボリュームのブロックマップ作成）は、マッピングテーブル（ブロックマップ）５１をコピーする必要があるため、そのコピーに時間を要する。例えば、４００ＧＢのＬＵＮのスナップショット作成に際しては、８００ＭＢのマッピングテーブル５１のコピーを行なうため、数秒〜数十秒程度の時間を要し、ホスト装置２に、アクセスの遅延が見えてしまう。
【００７８】
そこで、本実施形態では、スナップショット先のブロックマップ５１の各エントリのコピー完了／未完了について、ビットマップ管理が行なわれる。ブロックマップ５１のコピーは、先頭のエントリから順に行なわれる。その際、ブロックマップ５１がコピー未完了の領域（エントリ）に対して書込み要求があった場合、当該コピー未完了の領域（エントリ）のコピーが先行して実行され、ビットマップ５２において当該コピー未完了の領域（エントリ）に対応するビットがオン（１）からオフ（０）に更新される。ビットマップ５２におけるビットがオフの領域は、ブロックマップ５１の対応エントリのコピーが完了済みであるため、エントリの先頭から行なわれるコピー処理に際しスキップ対象となる。
【００７９】
例えば図７（Ａ）および図７（Ｂ）に示すように、ＬＵＮ＝0x0000のブロックマップ５１の上から二つのエントリがＬＵＮ＝0x0100にコピーされた時点で、ＬＵＮ＝0x0000のブロックマップ５１の上から４番目のエントリ（論理領域0x00000018）に対し書込み要求があった場合、本実施形態では、以下のように動作する。
【００８０】
つまり、図７（Ｂ）に示すように、ＬＵＮ＝0x0000のブロックマップ５１の上から３番目のエントリ（論理領域0x00000010）のコピーに先行して、ＬＵＮ＝0x0000のブロックマップ５１の上から４番目のエントリ（論理領域0x00000018）が、ＬＵＮ＝0x0100にコピーされる。これに伴って、図８に示すように、ビットマップ５２において上記４番目のエントリに対応するビット（左から４番目のビット）がオン（１）からオフ（０）に更新される。また、図６（Ａ）に示す例と同様、図７（Ａ）に示すように、ＬＢＡ＝0x00000018に対し、物理領域0x00000090に代えて物理領域0x00003058が新規に割り当てられ、当該物理領域0x00003058に対し書換対象単位データが書き込まれる。このように、ブロックマップ５１はボリュームの先頭のエントリから順にコピーされるが、ブロックマップ５１において未コピーの領域へアクセスが行なわれた場合、アクセス対象のブロックマップ５１のエントリが先行してコピーされる。
【００８１】
ついで、図９〜図１１（Ｂ）を参照して、本実施形態の復元部１５３によるリストア動作（復元動作）の概要について説明する。図９〜図１１（Ｂ）は、いずれも本実施形態の復元動作の概要を説明する図である。特に、図１０（Ａ）および図１１（Ａ）は、重複排除ボリュームについてのブロックマップ５１の例を示す図である。図１０（Ｂ）および図１１（Ｂ）は、それぞれ図１０（Ａ）および図１１（Ａ）に示す重複排除ボリュームのスナップショットについてのブロックマップ５１の例を示す図である。
【００８２】
スナップショットのリストア処理では、通常のスナップショットの作成処理と逆の処理が行なわれる。つまり、スナップショットのリストア処理では、ブロックマップ５１をスナップショット先からコピー元へのコピーを行なうのみであり、データの物理コピーは発生しない。
【００８３】
リストア前の状態を、例えば図１０（Ａ）および図１０（Ｂ）に示す状態とする。図１０（Ａ）および図１０（Ｂ）に示す例では、ブロックマップ５１の上から１番目と４番目のエントリにおいて、コピー元とスナップショットとの差分が生じている。したがって、これらの二つのエントリについて、リストア処理（スナップショットからコピー元へのコピー処理）が行なわれる。
【００８４】
つまり、図１０（Ａ）および図１０（Ｂ）に示すブロックマップ５１についてリストア処理を行なった場合、図１１（Ａ）および図１１（Ｂ）に示すように、上から１番目と４番目のエントリについて、スナップショットのエントリ（物理領域）がコピーされる。これにより、データの物理コピーを行なうことなく、図１１（Ａ）に示すように、コピー元のブロックマップ５１の上から１番目と４番目のエントリ（物理領域）が復元される。
【００８５】
〔４〕本実施形態のストレージ制御装置の詳細な動作
〔４−１〕ストレージ制御動作全体の流れ
次に、図１２に示すフローチャート（ステップＳ１０１〜Ｓ１１０）に従って、本実施形態におけるストレージ制御動作全体の流れについて説明する。
【００８６】
本実施形態のＣＭ１００（ＣＰＵ１０５）は、ホスト装置（サーバ）２からの要求受信を待機する（ステップＳ１０１のＮＯルート）。ＣＰＵ１０５は、何らかの要求を受信すると（ステップＳ１０１のＹＥＳルート）、受信した要求がスナップショット作成要求であるか否かを判断する（ステップＳ１０２）。
【００８７】
受信した要求がスナップショット作成要求であれば（ステップＳ１０２のＹＥＳルート）、ＣＰＵ１０５は、スナップショット作成処理を実行する（ステップＳ１０３）。当該スナップショット作成処理の手順については、図１３を参照しながら後述する。この後、ＣＰＵ１０５は、ステップＳ１０１の処理に戻る。
【００８８】
受信した要求がスナップショット作成要求でなければ（ステップＳ１０２のＮＯルート）、ＣＰＵ１０５は、受信した要求が書込み要求であるか否かを判断する（ステップＳ１０４）。
【００８９】
受信した要求が書込み要求であれば（ステップＳ１０４のＹＥＳルート）、ＣＰＵ１０５は、書込みＩ／Ｏ処理を実行する（ステップＳ１０５）。当該書込みＩ／Ｏ処理の手順については、図１５を参照しながら後述する。この後、ＣＰＵ１０５は、ステップＳ１０１の処理に戻る。
【００９０】
受信した要求が書込み要求でなければ（ステップＳ１０４のＮＯルート）、ＣＰＵ１０５は、受信した要求が読出し要求であるか否かを判断する（ステップＳ１０６）。
【００９１】
受信した要求が読出し要求であれば（ステップＳ１０６のＹＥＳルート）、ＣＰＵ１０５は、読出しＩ／Ｏ処理を実行する（ステップＳ１０７）。当該読出しＩ／Ｏ処理の手順については、図１６を参照しながら後述する。この後、ＣＰＵ１０５は、ステップＳ１０１の処理に戻る。
【００９２】
受信した要求が読出し要求でなければ（ステップＳ１０６のＮＯルート）、ＣＰＵ１０５は、受信した要求が復元要求（リストア要求）であるか否かを判断する（ステップＳ１０８）。
【００９３】
受信した要求が復元要求であれば（ステップＳ１０８のＹＥＳルート）、ＣＰＵ１０５は、図９〜図１１（Ｂ）を参照しながら前述した復元処理（リストア処理）を実行する（ステップＳ１０９）。この後、ＣＰＵ１０５は、ステップＳ１０１の処理に戻る。
【００９４】
受信した要求が復元要求でなければ（ステップＳ１０８のＮＯルート）、ＣＰＵ１０５は、受信した要求に応じた処理を実行してから（ステップＳ１１０）、ステップＳ１０１の処理に戻る。
【００９５】
〔４−２〕スナップショット作成処理の手順
次に、図１３に示すフローチャート（ステップＳ２０１〜Ｓ２１２）に従って、本実施形態のスナップショット作成要求受信時の処理（スナップショット作成処理；図１２のステップＳ１０３の処理）の手順について説明する。
【００９６】
ホスト装置（サーバ）２から重複排除ボリュームに対するスナップショット作成要求を受けると、ＣＰＵ１０５のスナップショット作成部１５２は、当該重複排除ボリューム（コピー元）とスナップショット領域（コピー先）とが同一の重複排除プールに属しているか否かを判断する（ステップＳ２０１）。
【００９７】
コピー元とコピー先とが同一の重複排除プールに属していない場合（ステップＳ２０１のＮＯルート）、スナップショット作成部１５２は、図１７を参照しながら前述したスナップショット作成処理と同様の処理を実行する（ステップＳ２０２）。つまり、スナップショット作成部１５２は、重複排除ボリュームの更新前単位データを、重複排除ボリュームの属する重複排除プールとは異なる重複排除プール内のスナップショットボリューム（スナップショット領域）にコピーする。これにより、重複排除ボリュームのスナップショットが作成される。
【００９８】
コピー元とコピー先とが同一の重複排除プールに属している場合（ステップＳ２０１のＹＥＳルート）、スナップショット作成部１５２は、スナップショット作成対象の重複排除ボリュームについてのブロックマップ５１のコピー完了／未完了を管理するビットマップ５２（図８参照）を作成する（ステップＳ２０３）。このとき、スナップショット作成部１５２は、作成したビットマップ５２の初期化を行ない、ビットマップ５２の全てのビットに“１”を設定する。
【００９９】
また、スナップショット作成部１５２は、ビットマップ５２の着目ビット位置（着目エントリに対応するビット）を、重複排除ボリュームのブロックマップ５１の先頭（ＬＢＡ＝０）に設定する（ステップＳ２０４）。
【０１００】
この時点で、ＣＰＵ１０５は、ユーザ側（ホスト装置２）へ、重複排除ボリュームのスナップショットの作成完了を先行して通知してから（ステップＳ２０５）、重複排除ボリュームのブロックマップ５１のコピー処理を開始する（ステップＳ２０６）。
【０１０１】
スナップショット作成部１５２は、コピー処理を開始すると、まず、ビットマップ５２における着目ビット位置の値が“０”であるか否か、つまり、着目ビット位置に対応するエントリのコピーが完了しているか否かを判断する（ステップＳ２０７）。
【０１０２】
着目ビット位置の値が“１”の場合つまり着目ビット位置に対応するエントリのコピーが未完了の場合（ステップＳ２０７のＮＯルート）、スナップショット作成部１５２は、着目ビット位置に対応するブロックマップ５１のエントリを、コピー先にコピーする（ステップＳ２０８）。ここで、コピー先は、重複排除ボリュームの属する重複排除プール内のスナップショット領域である。
【０１０３】
そして、スナップショット作成部１５２は、ビットマップ５２における着目ビット位置の値を、“１”（コピー未完了）から“０”（コピー完了）に更新する（ステップＳ２０９）。
【０１０４】
一方、着目ビット位置の値が“０”の場合つまり着目ビット位置に対応するエントリのコピーが完了している場合（ステップＳ２０７のＹＥＳルート）、または、ステップＳ２０９の処理後、スナップショット作成部１５２は、ステップＳ２１０の処理を実行する。つまり、ステップＳ２１０において、スナップショット作成部１５２は、着目ビット位置が重複排除ボリュームのブロックマップ５１の最終位置（最終エントリ）であるか否かを判断する（ステップＳ２１０）。
【０１０５】
着目ビット位置が重複排除ボリュームのブロックマップ５１の最終位置でない場合（ステップＳ２１０のＮＯルート）、スナップショット作成部１５２は、ビットマップ５２における着目ビット位置（ブロックマップにおける着目エントリ）を次に進める（ステップＳ２１１）。この後、スナップショット作成部１５２は、ステップＳ２０７の処理に戻る。
【０１０６】
着目ビット位置が重複排除ボリュームのブロックマップ５１の最終位置である場合（ステップＳ２１０のＹＥＳルート）、スナップショット作成部１５２は、重複排除ボリュームのスナップショットの作成が完了したものと判断する。つまり、スナップショット作成部１５２は、重複排除ボリュームについてのブロックマップ５１の全てのエントリのコピーを完了したものと判断し、ビットマップ５２の領域を解放する（ステップＳ２１２）。
【０１０７】
〔４−３〕書込み要求受信時の処理の手順
次に、本実施形態の動作例（図１５参照）と比較すべく、図１４に示すフローチャート（ステップＳ５００〜Ｓ５１０）に従って、既存のストレージシステムにおける書込み要求受信時の処理（書込みＩ／Ｏ処理）の手順について説明する。
【０１０８】
前述した既存のストレージシステムにおいて、サーバから書込み要求を受信すると（ステップＳ５００）、当該書込み要求が、スナップショット作成対象のボリューム（コピー元ボリューム）に対するものであるか否かが判断される（ステップＳ５０１）。
【０１０９】
当該書込み要求がスナップショット作成対象のボリュームに対するものでない場合（ステップＳ５０１のＮＯルート）、当該書込み要求に応じた通常の書込みＩ／Ｏ処理が実行される（ステップＳ５０２）。
【０１１０】
当該書込み要求がスナップショット作成対象のボリュームに対するものである場合（ステップＳ５０１のＹＥＳルート）、スナップショット用の単位データ毎のビットマップがチェックされ、当該書込み要求による書込み先の単位データに対応する対象ビットが“１”であるか否かが判断される（ステップＳ５０３）。
【０１１１】
対象ビットが“１”でない場合つまり対象ビットが“０”である場合（ステップＳ５０３のＮＯルート）、書込み先の単位データ（更新前単位データ）が、スナップショット領域（スナップショットボリューム）に対しコピー済みであると判断される。そして、当該書込み要求に応じた通常の書込みＩ／Ｏ処理が実行される（ステップＳ５０４）。
【０１１２】
対象ビットが“１”である場合（ステップＳ５０３のＹＥＳルート）、書込み先の単位データ（更新前単位データ）がスナップショット領域に対し未コピーであると判断される。この場合、コピー元ボリュームからスナップショット領域に対しコピーされる更新前単位データが、既存のデータと重複する重複データであるか否かを判断する、重複チェックが行なわれる（ステップＳ５０５）。
【０１１３】
重複チェックの結果、更新前単位データが重複データである場合（ステップＳ５０６のＹＥＳルート）、スナップショットボリュームのブロックマップにおいて、書込み箇所（ＬＢＡ）に対応する物理領域が、既存の重複データの物理領域（物理アドレス）に更新される（ステップＳ５０７）。
【０１１４】
そして、スナップショット用の単位データ毎のビットマップにおける対象ビットが“１”（未コピー）から“０”（コピー済み）に変更される（ステップＳ５０８）。この後、サーバから、当該書込み要求によって書き込むべき書込対象単位データが受信され、通常の書込みＩ／Ｏ処理が実行される（ステップＳ５０９）。
【０１１５】
一方、重複チェックの結果、更新前単位データが重複データでない場合（ステップＳ５０６のＮＯルート）、新規領域（物理アドレス）が割り当てられ、割り当てられた新規領域に、更新前単位データがコピーされて書き込まれる。その後、スナップショットボリュームのブロックマップが更新されてから（ステップＳ５１０）、処理は、ステップＳ５０８へ移行する。
【０１１６】
上述したステップＳ５０１およびＳ５０３の処理は、図１７を参照しながら上述した既存のストレージシステムにおけるスナップショットの判定処理（ステップＳ２）に相当する。また、上述したステップＳ５０５〜Ｓ５０８は、図１７を参照しながら上述した既存のストレージシステムにおける重複排除処理（ステップＳ３）に相当する。
【０１１７】
次に、図１５に示すフローチャート（ステップＳ３０１〜Ｓ３１０）に従って、本実施形態の書込み要求受信時の処理（書込みＩ／Ｏ処理；図１２のステップＳ１０５の処理）の手順について説明する。
【０１１８】
ホスト装置（サーバ）２から重複排除ボリュームに対する書込み要求を受けると、ＣＰＵ１０５のＩ／Ｏ処理部１５４は、当該書込み要求がスナップショット作成対象のボリュームに対するものであるか否かを判断する（ステップＳ３０１）。
【０１１９】
当該書込み要求がスナップショット作成対象のボリュームに対するものでない場合（ステップＳ３０１のＮＯルート）、Ｉ／Ｏ処理部１５４は、重複排除部１５１による重複排除処理を伴って、当該書込み要求に応じた通常の書込みＩ／Ｏ処理を実行する（ステップＳ３０２）。
【０１２０】
当該書込み要求がスナップショット作成対象のボリュームに対するものである場合（ステップＳ３０１のＹＥＳルート）、ＣＰＵ１０５は、当該重複排除ボリューム（コピー元）とスナップショット領域（コピー先）とが同一の重複排除プールに属しているか否かを判断する（ステップＳ３０３）。
【０１２１】
コピー元とコピー先とが同一の重複排除プールに属していない場合（ステップＳ３０３のＮＯルート）、ＣＰＵ１０５は、他の重複排除プールにおけるスナップショットに対する通常の書込みＩ／Ｏ処理を実行する（ステップＳ３０４）。
【０１２２】
一方、コピー元とコピー先とが同一の重複排除プールに属している場合（ステップＳ３０３のＹＥＳルート）、スナップショット作成部１５２は、当該書込み要求による書込み位置に対応するビットマップ５２のビット位置（ブロックマップ５１のエントリ位置）を計算する（ステップＳ３０５）。
【０１２３】
スナップショット作成部１５２は、ビットマップ５２における、計算したビット位置の値（対象ビットの値）を参照し、対象ビットの値が“０”（コピー完了）であるか否かを判断する（ステップＳ３０６）。
【０１２４】
対象ビットの値が“０”（コピー完了）である場合（ステップＳ３０６のＹＥＳルート）、Ｉ／Ｏ処理部１５４は、重複排除部１５１による重複排除処理を伴って、当該書込み要求に応じた通常の書込みＩ／Ｏ処理を実行する（ステップＳ３０７）。
【０１２５】
対象ビットの値が“１”（コピー未完了）の場合（ステップＳ３０６のＮＯルート）、スナップショット作成部１５２は、対象ビット位置に対応する、コピー元ボリュームのブロックマップ５１のエントリを、コピー先ボリューム（スナップショット領域）のブロックマップ５１にコピーする（ステップＳ３０８）。
【０１２６】
そして、スナップショット作成部１５２は、ビットマップ５２における対象ビット位置の値を、“１”（コピー未完了）から“０”（コピー完了）に設定する（ステップＳ３０９）。
【０１２７】
この後、Ｉ／Ｏ処理部１５４は、重複排除部１５１による重複排除処理を伴って、当該書込み要求に応じた通常の書込みＩ／Ｏ処理を実行する（ステップＳ３１０）。
【０１２８】
〔４−４〕読出し要求受信時の処理の手順
次に、図１６に示すフローチャート（ステップＳ４０１〜Ｓ４０９）に従って、本実施形態の読出し要求受信時の処理（読出しＩ／Ｏ処理；図１２のステップＳ１０７の処理）の手順について説明する。
【０１２９】
ホスト装置（サーバ）２から読出し要求を受けると、ＣＰＵ１０５のＩ／Ｏ処理部１５４は、当該読出し要求がスナップショットボリューム（コピー先ボリューム）に対するものであるか否かを判断する（ステップＳ４０１）。
【０１３０】
当該書込み要求がスナップショットボリュームに対するものでない場合（ステップＳ４０１のＮＯルート）、Ｉ／Ｏ処理部１５４は、当該読出し要求に応じた通常の読出しＩ／Ｏ処理を実行する（ステップＳ４０２）。
【０１３１】
当該読出し要求がスナップショットボリュームに対するものである場合（ステップＳ４０１のＹＥＳルート）、ＣＰＵ１０５は、当該重複排除ボリューム（コピー元）とスナップショット領域（コピー先）とが同一の重複排除プールに属しているか否かを判断する（ステップＳ４０３）。
【０１３２】
コピー元とコピー先とが同一の重複排除プールに属していない場合（ステップＳ４０３のＮＯルート）、ＣＰＵ１０５は、他の重複排除プールにおけるスナップショットに対する通常の読出しＩ／Ｏ処理を実行する（ステップＳ４０４）。
【０１３３】
一方、コピー元とコピー先とが同一の重複排除プールに属している場合（ステップＳ４０３のＹＥＳルート）、スナップショット作成部１５２は、当該読出し要求による読出し位置に対応するビットマップ５２のビット位置（ブロックマップ５１のエントリ位置）を計算する（ステップＳ４０５）。
【０１３４】
スナップショット作成部１５２は、ビットマップ５２における、計算したビット位置の値（対象ビットの値）を参照し、対象ビットの値が“０”（コピー完了）であるか否かを判断する（ステップＳ４０６）。
【０１３５】
対象ビットの値が“０”（コピー完了）である場合（ステップＳ４０６のＹＥＳルート）、Ｉ／Ｏ処理部１５４は、当該読出し要求に応じた通常の読出しＩ／Ｏ処理を実行する（ステップＳ４０７）。
【０１３６】
対象ビットの値が“１”（コピー未完了）の場合（ステップＳ４０６のＮＯルート）、Ｉ／Ｏ処理部１５４は、対象ビット位置に対応する、コピー元ボリュームのブロックマップ５１のエントリを読み込み、対象ビット位置に対応する論理領域（ＬＢＡ）を取得する（ステップＳ４０８）。
【０１３７】
そして、Ｉ／Ｏ処理部１５４は、取得したＬＢＡにおけるデータを読み込み、ホスト装置２へ転送し、Ｉ／Ｏ処理を終了する（ステップＳ４０９）。
【０１３８】
上述したように、本実施形態では、重複排除ボリュームについてのスナップショット作成処理が、ブロックマップ（重複排除ボリューム毎に保持されている物理領域を示すマッピングテーブル）５１をコピーする処理によって実現される。したがって、ブロックマップ５１のコピーが完了すればスナップショットの作成処理は完了することになる。
【０１３９】
また、ブロックマップ５１のコピー中にコピー元ボリュームへのアクセスを可能にするため、本実施形態では、ブロックマップ５１の各エントリについてコピー完了／未完了を示すビットマップ５２が作成される。このとき、ブロックマップ５１は、ボリュームの先頭（先頭のエントリ）から順にコピーされるが、ブロックマップ５１のエントリが未だコピーされていない領域に対するアクセスが行なわれた場合、ビットマップ５２を用いることで、ブロックマップ５１の対象エントリが先行してコピーされる。
【０１４０】
これにより、記憶装置３１の性能低下を招くことなく重複排除機能とスナップショット作成機能とを組み合わせ、機能の最適化を実現することができる。
【０１４１】
〔５〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
【０１４２】
〔６〕付記
以上の各実施形態を含む実施形態に関し、さらに以下の付記を開示する。
【０１４３】
（付記１）
記憶装置を制御するストレージ制御装置であって、
前記記憶装置における重複排除ボリュームについて単位データ毎に各単位データの論理領域に割り当てられる物理領域を示すマップ情報を用いて、前記重複排除ボリュームに対する書込対象単位データについて重複排除処理を行なう重複排除部と、
前記重複排除ボリュームに対するスナップショット作成要求を受けた場合、前記重複排除ボリュームについての前記マップ情報をスナップショット領域にコピーすることで前記重複排除ボリュームのスナップショットを作成するスナップショット作成部と、を有する、ストレージ制御装置。
【０１４４】
（付記２）
前記スナップショット作成部は、
前記スナップショット作成要求を受けた前記重複排除ボリュームの各単位データに対応するビットを有し、各ビットによって各単位データに対応する前記マップ情報のコピー完了／未完了を管理するビットマップを作成し、
作成したビットマップに従って、前記重複排除ボリュームについての前記マップ情報を前記スナップショット領域にコピーする、付記１に記載のストレージ制御装置。
【０１４５】
（付記３）
前記スナップショット作成部は、
前記書込対象単位データが前記スナップショットの作成中の前記重複排除ボリュームに含まれる場合、前記ビットマップを参照し、
前記ビットマップにおける前記書込対象単位データに対応するビットにコピー未完了が設定されていれば、前記書込対象単位データに対応する前記マップ情報を前記スナップショット領域にコピーし、
前記ビットマップにおける前記書込対象単位データに対応するビットにコピー完了を設定する、付記２に記載のストレージ制御装置。
【０１４６】
（付記４）
前記スナップショット作成部は、
前記書込対象単位データが前記スナップショットの作成中の前記重複排除ボリュームに含まれる場合、前記ビットマップを参照し、
前記ビットマップにおける前記書込対象単位データに対応するビットにコピー完了が設定されていれば、前記書込対象単位データに対応する前記マップ情報を前記スナップショット領域にコピーする処理をスキップする、付記２に記載のストレージ制御装置。
【０１４７】
（付記５）
前記スナップショット作成部は、
前記重複排除ボリュームについての前記マップ情報の、前記スナップショット領域へのコピーを完了すると、前記ビットマップを保持する領域を解放する、付記２〜付記４のいずれか一項に記載のストレージ制御装置。
【０１４８】
（付記６）
前記重複排除ボリュームと前記スナップショット領域とが同一の重複排除単位ストレージプールに属している場合、前記スナップショット作成部は、前記マップ情報を前記スナップショット領域にコピーすることで前記重複排除ボリュームのスナップショットを作成する、付記１〜付記５のいずれか一項に記載のストレージ制御装置。
【０１４９】
（付記７）
前記重複排除ボリュームと前記スナップショット領域とが異なる重複排除単位ストレージプールに属している場合、前記スナップショット作成部は、前記重複排除ボリュームの更新前単位データを前記スナップショット領域にコピーすることで前記重複排除ボリュームのスナップショットを作成する、付記１〜付記５のいずれか一項に記載のストレージ制御装置。
【０１５０】
（付記８）
前記重複排除ボリュームの復元要求を受けた場合、前記スナップショット領域における前記マップ情報を復元先にコピーすることで前記重複排除ボリュームを復元する復元部をさらに有する、付記１〜付記７のいずれか一項に記載のストレージ制御装置。
【０１５１】
（付記９）
記憶装置を制御するコンピュータに、
前記記憶装置における重複排除ボリュームについて単位データ毎に各単位データの論理領域に割り当てられる物理領域を示すマップ情報を用いて、前記重複排除ボリュームに対する書込対象単位データについて重複排除処理を行ない、
前記重複排除ボリュームに対するスナップショット作成要求を受けた場合、前記重複排除ボリュームについての前記マップ情報をスナップショット領域にコピーすることで前記重複排除ボリュームのスナップショットを作成する、
処理を実行させる、ストレージ制御プログラム。
【０１５２】
（付記１０）
前記スナップショット作成要求を受けた前記重複排除ボリュームの各単位データに対応するビットを有し、各ビットによって各単位データに対応する前記マップ情報のコピー完了／未完了を管理するビットマップを作成し、
作成したビットマップに従って、前記重複排除ボリュームについての前記マップ情報を前記スナップショット領域にコピーする、
処理を、前記コンピュータに実行させる、付記９に記載のストレージ制御プログラム。
【０１５３】
（付記１１）
前記書込対象単位データが前記スナップショットの作成中の前記重複排除ボリュームに含まれる場合、前記ビットマップを参照し、
前記ビットマップにおける前記書込対象単位データに対応するビットにコピー未完了が設定されていれば、前記書込対象単位データに対応する前記マップ情報を前記スナップショット領域にコピーし、
前記ビットマップにおける前記書込対象単位データに対応するビットにコピー完了を設定する、
処理を、前記コンピュータに実行させる、付記１０に記載のストレージ制御プログラム。
【０１５４】
（付記１２）
前記書込対象単位データが前記スナップショットの作成中の前記重複排除ボリュームに含まれる場合、前記ビットマップを参照し、
前記ビットマップにおける前記書込対象単位データに対応するビットにコピー完了が設定されていれば、前記書込対象単位データに対応する前記マップ情報を前記スナップショット領域にコピーする処理をスキップする、
処理を、前記コンピュータに実行させる、付記１０に記載のストレージ制御プログラム。
【０１５５】
（付記１３）
前記重複排除ボリュームについての前記マップ情報の、前記スナップショット領域へのコピーを完了すると、前記ビットマップを保持する領域を解放する、
処理を、前記コンピュータに実行させる、付記１０〜付記１２のいずれか一項に記載のストレージ制御プログラム。
【０１５６】
（付記１４）
前記重複排除ボリュームと前記スナップショット領域とが同一の重複排除単位ストレージプールに属している場合、前記マップ情報を前記スナップショット領域にコピーすることで前記重複排除ボリュームのスナップショットを作成する、
処理を、前記コンピュータに実行させる、付記９〜付記１３のいずれか一項に記載のストレージ制御プログラム。
【０１５７】
（付記１５）
前記重複排除ボリュームと前記スナップショット領域とが異なる重複排除単位ストレージプールに属している場合、前記重複排除ボリュームの更新前単位データを前記スナップショット領域にコピーすることで前記重複排除ボリュームのスナップショットを作成する、
処理を、前記コンピュータに実行させる、付記９〜付記１３のいずれか一項に記載のストレージ制御プログラム。
【０１５８】
（付記１６）
前記重複排除ボリュームの復元要求を受けた場合、前記スナップショット領域における前記マップ情報を復元先にコピーすることで前記重複排除ボリュームを復元する、
処理を、前記コンピュータに実行させる、付記９〜付記１５のいずれか一項に記載のストレージ制御プログラム。
【符号の説明】
【０１５９】
１    ストレージ装置（ストレージシステム）
２    ホスト装置（サーバ）
３    管理端末
１００，１００ａ，１００ｂ    ＣＭ（ストレージ制御装置）
１０１，１０２    ＣＡ
１０３    ＤＡ
１０４    ＰＣＩｅインタフェース
１０５    ＣＰＵ（処理部，コンピュータ）
１５１    重複排除部
１５２    スナップショット作成部
１５３    復元部
１５４    Ｉ／Ｏ処理部（入出力要求処理部）
１０６    メモリ
１６０    ストレージ制御プログラム
１６１    キャッシュ領域
１６２    アプリケーション用メモリ領域
１０７    フラッシュメモリ
１０８    ＩＯＣ
３０    ドライブエンクロージャ（ＤＥ；記憶装置）
３１    記憶装置（ドライブ）
４０    ＣＥ
５１    ブロックマップ（マッピングテーブル）
５２    ビットマップ
【図１】
0006561765.tif 000002
【図２】
0006561765.tif 000003
【図３】
0006561765.tif 000004
【図４】
0006561765.tif 000005
【図５】
0006561765.tif 000006
【図６】
0006561765.tif 000007
【図７】
0006561765.tif 000008
【図８】
0006561765.tif 000009
【図９】
0006561765.tif 000010
【図１０】
0006561765.tif 000011
【図１１】
0006561765.tif 000012
【図１２】
0006561765.tif 000013
【図１３】
0006561765.tif 000014
【図１４】
0006561765.tif 000015
【図１５】
0006561765.tif 000016
【図１６】
0006561765.tif 000017
【図１７】
0006561765.tif 000018