(57)【要約】【課題】スナップショットのマージ処理を効率的に行なう。【解決手段】記憶装置２１の複数世代のスナップショットを作成するストレージ制御装置１０であって、前記複数世代のスナップショットのうち削除対象である第１のスナップショットにおいて更新され、且つ、前記第１のスナップショットと連続する世代である第２のスナップショットにおいて更新されていない領域の数を第１の領域数として算出する第１算出部１１２と、前記第２のスナップショットにおいて更新された領域の数を第２の領域数として算出する第２算出部１１３と、前記第１の領域数が前記第２の領域数以上の場合には、前記第２のスナップショットをマージ処理におけるマージ対象として決定し、前記第１の領域数が前記第２の領域数未満の場合には、前記第１のスナップショットをマージ処理におけるマージ対象として決定する決定部１１４と、を備える。【選択図】図１
2015026112.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置の複数世代のスナップショットを作成するストレージ制御装置であって、
前記複数世代のスナップショットのうち削除対象である第１のスナップショットにおいて更新され、且つ、前記第１のスナップショットと連続する世代である第２のスナップショットにおいて更新されていない領域の数を第１の領域数として算出する第１算出部と、
前記第２のスナップショットにおいて更新された領域の数を第２の領域数として算出する第２算出部と、
前記第１の領域数が前記第２の領域数以上の場合には、前記第２のスナップショットをマージ処理におけるマージ対象とするとともに前記第１のスナップショットをマージ処理におけるマージ先として決定し、前記第１の領域数が前記第２の領域数未満の場合には、前記第１のスナップショットをマージ処理におけるマージ対象とするとともに前記第２のスナップショットをマージ処理におけるマージ先として決定する決定部と、
を備えることを特徴とするストレージ制御装置。
【請求項２】
前記マージ対象のスナップショットのデータを前記マージ先のスナップショットに書き込み、前記マージ対象のスナップショットを削除することにより、前記マージ処理を実行するマージ処理部を備えることを特徴とする請求項１に記載のストレージ制御装置。
【請求項３】
前記複数世代のスナップショットが差分を追記する方式のスナップショットである場合には、前記第２のスナップショットは、前記第１のスナップショットの後の世代のスナップショットであることを特徴とする請求項１又は２に記載のストレージ制御装置。
【請求項４】
前記複数世代のスナップショットが更新前データを退避する方式のスナップショットである場合には、前記第２のスナップショットは、前記第１のスナップショットの前の世代のスナップショットであることを特徴とする請求項１又は２に記載のストレージ制御装置。
【請求項５】
前記決定部が前記第１のスナップショットを前記マージ処理におけるマージ先として決定した場合には、前記マージ処理部は、前記第２のスナップショットにおいて前記マージ処理が完了した領域に対する書き込み又は読み込みを、前記第１のスナップショットに対して実行することを特徴とする請求項４記載のストレージ制御装置。
【請求項６】
前記決定部が前記第２のスナップショットを前記マージ処理におけるマージ先として決定し、且つ、前記第１のスナップショットが最新世代のスナップショットである場合には、前記マージ処理部は、前記第１のスナップショットにおいて前記マージ処理が完了した領域に対する書き込みを、前記第２のスナップショットに対して実行することを特徴とする請求項４又は５に記載のストレージ制御装置。
【請求項７】
記憶装置の複数世代のスナップショットを作成するストレージ制御装置に備えられるコンピュータに、
前記複数世代のスナップショットのうち削除対象である第１のスナップショットにおいて更新され、且つ、前記第１のスナップショットと連続する世代である第２のスナップショットにおいて更新されていない領域の数を第１の領域数として算出し、
前記第２のスナップショットにおいて更新された領域の数を第２の領域数として算出し、
前記第１の領域数が前記第２の領域数以上の場合には、前記第２のスナップショットをマージ処理におけるマージ対象とするとともに前記第１のスナップショットをマージ処理におけるマージ先として決定し、前記第１の領域数が前記第２の領域数未満の場合には、前記第１のスナップショットをマージ処理におけるマージ対象とするとともに前記第２のスナップショットをマージ処理におけるマージ先として決定する、
処理を実行させることを特徴とする制御プログラム。
【請求項８】
記憶装置の複数世代のスナップショットを作成するストレージ制御装置において、
前記複数世代のスナップショットのうち削除対象である第１のスナップショットにおいて更新され、且つ、前記第１のスナップショットと連続する世代である第２のスナップショットにおいて更新されていない領域の数を第１の領域数として算出し、
前記第２のスナップショットにおいて更新された領域の数を第２の領域数として算出し、
前記第１の領域数が前記第２の領域数以上の場合には、前記第２のスナップショットをマージ処理におけるマージ対象とするとともに前記第１のスナップショットをマージ処理におけるマージ先として決定し、前記第１の領域数が前記第２の領域数未満の場合には、前記第１のスナップショットをマージ処理におけるマージ対象とするとともに前記第２のスナップショットをマージ処理におけるマージ先として決定する、
ことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置，制御プログラム及び制御方法に関する。
【背景技術】
【０００２】
ストレージ装置におけるデータのバックアップ手法として、記憶装置の複数世代のスナップショットを作成する技術が知られている。また、スナップショット作成機能を備えるストレージ装置には、空き容量を増やすために複数世代のスナップショットのうち一部のスナップショットをマージ処理によって削除する機能を備えるものがある。
途中世代のスナップショットは、差分情報を保持しているため、単純に削除することができない。そのため、削除対象のスナップショットが保持するデータと、削除対象のスナップショットの次世代のスナップショットが保持するデータとを比較し、差分データを削除世代のスナップショットから次世代のスナップショットへマージする。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−２３５０５８号公報
【特許文献２】特開２００９−１２３１８７号公報
【特許文献３】特開２００９−１４６３８９号公報
【特許文献４】特開２０１０−２６９３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述したマージ処理においては、差分データの容量が大きいとコピー量が増加するため、Input/Output（Ｉ／Ｏ）負荷が増加するという課題がある。また、スナップショットの削除開始後、使用可能なデータ容量が増加するまで時間がかかるという課題もある。
１つの側面では、本発明は、スナップショットのマージ処理を効率的に行なうことを目的とする。
【０００５】
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の１つとして位置付けることができる。
【課題を解決するための手段】
【０００６】
このため、このストレージ制御装置は、記憶装置の複数世代のスナップショットを作成するストレージ制御装置であって、前記複数世代のスナップショットのうち削除対象である第１のスナップショットにおいて更新され、且つ、前記第１のスナップショットと連続する世代である第２のスナップショットにおいて更新されていない領域の数を第１の領域数として算出する第１算出部と、前記第２のスナップショットにおいて更新された領域の数を第２の領域数として算出する第２算出部と、前記第１の領域数が前記第２の領域数以上の場合には、前記第２のスナップショットをマージ処理におけるマージ対象とするとともに前記第１のスナップショットをマージ処理におけるマージ先として決定し、前記第１の領域数が前記第２の領域数未満の場合には、前記第１のスナップショットをマージ処理におけるマージ対象とするとともに前記第２のスナップショットをマージ処理におけるマージ先として決定する決定部と、を備える。
【発明の効果】
【０００７】
開示のストレージ制御装置によれば、スナップショットのマージ処理を効率的に行なうことができる。
【図面の簡単な説明】
【０００８】
【図１】第１実施形態の一例としてのストレージシステムの機能構成を模式的に示す図である。
【図２】第１実施形態の一例としてのストレージシステムにおけるマージ処理を例示する図である。
【図３】第１実施形態の一例としてのストレージシステムにおけるマージ処理を例示する図である。
【図４】第１実施形態の一例としてのストレージシステムにおけるマージ処理を例示する図である。
【図５】第１実施形態の一例としてのストレージシステムにおけるマージ処理を例示する図である。
【図６】第１実施形態の一例としてのストレージシステムにおけるマージ処理を例示する図である。
【図７】第１実施形態の一例としてのストレージシステムにおけるマージ処理を例示する図である。
【図８】第１実施形態の一例としてのストレージシステムにおけるマージ処理を例示する図である。
【図９】第１実施形態の一例としてのストレージシステムにおけるマージ処理を例示する図である。
【図１０】第１実施形態の一例としてのストレージシステムにおけるマージ処理を例示する図である。
【図１１】第１実施形態の一例としてのストレージシステムにおけるデバイス番号管理テーブルを例示する図である。
【図１２】第１実施形態の一例としてのストレージシステムにおけるマージ処理を示すフローチャートである。
【図１３】第２実施形態の一例としてのストレージシステムの機能構成を模式的に示す図である。
【図１４】（ａ），（ｂ）は第２実施形態の一例としてのストレージシステムにおけるスナップショットの作成手法を説明する図である。
【図１５】（ａ），（ｂ）は第２実施形態の一例としてのストレージシステムにおけるスナップショットのリード手法を説明する図である。
【図１６】（ａ）は第２実施形態の一例としてのストレージシステムにおけるＬＢＡ変換テーブルを例示する図であり、（ｂ）はその更新ビットマップを例示する図である。
【図１７】第２実施形態の一例としてのストレージシステムにおけるマージ処理を例示する図である。
【図１８】第２実施形態の一例としてのストレージシステムにおけるマージ処理中のマージ対象ディスクに対するライト処理を例示する図である。
【図１９】第２実施形態の一例としてのストレージシステムにおけるマージ処理中の運用ディスクに対するライト処理を例示する図である。
【図２０】第２実施形態の一例としてのストレージシステムにおけるディスク切り替え処理を例示する図である。
【図２１】第２実施形態の一例としてのストレージシステムにおけるマージ方向決定処理を示すフローチャートである。
【図２２】第２実施形態の一例としてのストレージシステムにおけるマージ処理中のライト処理を示すフローチャートである。
【図２３】第２実施形態の一例としてのストレージシステムにおけるマージ処理中のリード処理を示すフローチャートである。
【図２４】第２実施形態の一例としてのストレージシステムにおけるマージ処理中の運用ディスクに対するライト処理を示すフローチャートである。
【図２５】第２実施形態の一例としてのストレージシステムにおけるディスク切り替え処理を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、図面を参照してストレージ制御装置，制御プログラム及び制御方法に係る一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００１０】
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
〔Ａ〕第１実施形態
〔Ａ−１〕システム構成
図１は、第１実施形態の一例としてのストレージシステムの機能構成を模式的に示す図である。
【００１１】
本第１実施形態の一例としてのストレージシステム１は、図１に示すようにストレージ装置１００及びサーバ３０−１，３０−２を備える。これらのストレージ装置１００及びサーバ３０−１，３０−２は、図示するように互いに通信可能に接続されている。
以下、サーバを示す符号としては、複数のサーバのうち１つを特定する必要があるときには符号３０−１，３０−２を用いるが、任意のサーバを指すときには符号３０を用いる。
【００１２】
サーバ３０は、例えば、サーバ機能を備えたコンピュータである。図１に示す例では、ストレージシステム１が２つのサーバ３０−１，３０−２を備えているが、１つ又は３つ以上のサーバ３０を備えることとしても良い。
サーバ３０は、図示しないメモリを備えており、このメモリ上にVirtual Machine（ＶＭ；仮想マシン）３１が展開され、展開されたＶＭ３１が図示しないCentral Processing Unit（ＣＰＵ）上で実行される。
【００１３】
図１に示す例では、サーバ３０−１のＶＭ３１は１つのOperation System（ＯＳ）３２を備えており、サーバ３０−２のＶＭ３１は３つのＯＳ３２を備えている。
ＯＳ３２は、サーバ３０のハードウェアの管理などの基本機能を実現するシステムソフトウェアである。なお、ＶＭ３１が備えるＯＳ３２の数は、図１に示す例に限定されるものではなく、ＶＭ３１が１以上のＯＳ３２を備えていれば良い。
【００１４】
ストレージ装置１００は、ストレージ制御装置１０及びRedundant Arrays of Independent Disks（ＲＡＩＤ）装置２０−１，２０−２を備える。これらのストレージ制御装置１０及びＲＡＩＤ装置２０−１，２０−２は、図１に示すように互いに通信可能に接続されている。
以下、ＲＡＩＤ装置を示す符号としては、複数のＲＡＩＤ装置のうち１つを特定する必要があるときには符号２０−１，２０−２を用いるが、任意のＲＡＩＤ装置を指すときには符号２０を用いる。
【００１５】
ＲＡＩＤ装置２０は、複数の記憶装置２１を備え、これらの記憶装置２１を仮想的に１つの記憶装置として管理している。なお、ストレージ装置１００が備えるＲＡＩＤ装置２０の数は、図１に示す例に限定されるものではなく、ストレージ装置１００が１つ又３つ以上のＲＡＩＤ装置２０を備えることとしても良い。
記憶装置２１は、データを読み書き可能に格納する既知の装置であり、例えば、Hard Disk Drive（ＨＤＤ）やSolid State Drive（ＳＳＤ）である。なお、ＲＡＩＤ装置２０が備える記憶装置２１の数は、図１に示す例に限定されるものではなく、ＲＡＩＤ装置２０が１つ又３つ以上の記憶装置２１を備えることとしても良い。
【００１６】
ストレージ制御装置１０は、ＣＰＵ（コンピュータ）１１及びメモリ１２を備える。また、ストレージ制御装置１０は、例えば、図１に示すように仮想ディスク１３を生成し、この仮想ディスク１３を既知の手法を用いて記憶装置２１と対応づけることにより、記憶装置２１の構成を仮想化する装置である。
メモリ１２は、Read Only Memory（ＲＯＭ）及びRandom Access Memory（ＲＡＭ）を含む記憶装置である。メモリ１２のＲＯＭには、Basic Input/Output System（ＢＩＯＳ）等のプログラムが書き込まれている。メモリ１２上のソフトウェアプログラムは、ＣＰＵ１１に適宜読み込まれて実行される。また、メモリ１２のＲＡＭは、一次記録メモリあるいはワーキングメモリとして利用される。
【００１７】
ＣＰＵ１１は、種々の制御や演算を行なう処理装置であり、ストレージ制御装置１０が備える図示しない記憶装置に格納されたＯＳやプログラムを実行することにより、種々の機能を実現する。すなわち、ＣＰＵ１１は、図１に示すように、取得部１１１，第１算出部１１２，第２算出部１１３，決定部１１４及びマージ処理部１１５として機能する。
なお、これらの取得部１１１，第１算出部１１２，第２算出部１１３，決定部１１４及びマージ処理部１１５としての機能を実現するためのプログラム（制御プログラム）は、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体から図示しない読取装置を介してプログラムを読み取って内部記録装置または外部記録装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供してもよい。
【００１８】
取得部１１１，第１算出部１１２，第２算出部１１３，決定部１１４及びマージ処理部１１５としての機能を実現する際には、図示しない内部記憶装置に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態ではＣＰＵ１１）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行してもよい。
【００１９】
図２〜図１０は、第１実施形態の一例としてのストレージシステムにおけるマージ処理を例示する図である。具体的には、図２〜図５は削除対象のスナップショットをマージ対象とする場合におけるマージ処理を例示しており、図６〜図１０は削除対象のスナップショットをマージ先とする場合におけるマージ処理を例示している。
図２〜図１０においては、ストレージ制御装置１０がスナップショットとしての仮想ディスク＃０〜＃３及び運用仮想ディスクを作成する例を示している。
【００２０】
本第１実施形態の一例におけるスナップショット機能では、ストレージ制御装置１０は、Copy-On-Writeの技術を利用し、差分を追記する方式のスナップショット（差分スナップショット）を作成する。
仮想ディスク＃０は、オリジナルディスクであり、この仮想ディスク＃０を作成した時点において記憶装置２１が格納していた全てのデータを保持している。仮想ディスク＃１は、差分ディスクであり、この仮想ディスク＃１を作成した時点において１世代前（親世代）のディスクである仮想ディスク＃０と異なるデータ（仮想ディスク＃１との差分データ）を保持している。仮想ディスク＃２〜＃３も、仮想ディスク＃１と同様に差分ディスクであり、それぞれの仮想ディスクを作成した時点においてそれぞれの親世代のディスク（前世代ディスク）との差分データを保持している。これらのスナップショットとしての仮想ディスク＃０〜＃３は、読み込み専用ディスクであり、書き込みができないように設定されている。
【００２１】
運用仮想ディスクは、親世代のディスクである仮想ディスク＃３と異なるデータ（仮想ディスク＃３との差分データ）を保持している。この運用仮想ディスクは記憶装置２１が格納する最新のデータを保持しており、サーバ３０はこの運用仮想ディスクを用いて業務を行なう。また、運用仮想ディスクは、読み書き兼用ディスクであり、読み込みも書き込みもできるように設定されている。
【００２２】
本第１実施形態のスナップショット機能においては、世代の古いものから順に仮想ディスク＃０，＃１，＃２，＃３，運用仮想ディスクとなっている。また、新たにスナップショットを作成する際には、ストレージ制御装置１０は、運用仮想ディスクを最新世代のスナップショットとし、新たな運用仮想ディスクを作成する。
例えば、サーバ３０は、運用仮想ディスクを読み込む際に、この運用仮想ディスクが保持していないデータを仮想ディスク＃３が保持していれば、仮想ディスク＃３から読み込む。更に、サーバ３０は、仮想ディスク＃３が保持していないデータを仮想ディスク＃２が保持していれば、仮想ディスク＃２から読み込む。
【００２３】
オリジナルディスクである仮想ディスク＃０以外のディスク（仮想ディスク＃１〜＃３及び運用仮想ディスク）の管理領域には、図２に示すような差分データ管理マップ４１がそれぞれ格納されている。この差分データ管理マップ４１は、各ディスクが保持する差分データの論理アドレス（図２中の“Ｖ”）と、その差分データが実際に格納されている記憶装置２１における物理アドレス（図２中の“Ｒ”）とが対応づけられている。例えば、仮想ディスク＃１の差分データ管理マップ４１においては、仮想ディスク＃０との差分データが論理アドレス２，４，５に保持されており、論理アドレス２，４，５がそれぞれ記憶装置２１における物理アドレス１，２，３に対応づけて格納されていることを示している。差分データ管理マップ４１における論理アドレスと物理アドレスとの対応づけは、運用仮想ディスクとして用いられていた際において、この運用仮想ディスクに対する更新によって行なわれる。
【００２４】
図２に示す更新ビットマップ４２は、差分データ管理マップ４１に基づいて作成され、この差分データ管理マップ４１において格納されている論理アドレスに対応するビットにフラグ“１”が設定される。
以下、図１に示したＣＰＵ１１の取得部１１１，第１算出部１１２，第２算出部１１３，決定部１１４及びマージ処理部１１５が備える機能の概要を説明する。
【００２５】
取得部１１１は、差分データ管理マップ４１に基づいて、更新ビットマップ４２を取得（作成）する。
第１算出部１１２は、複数世代のスナップショットのうち削除対象である第１のスナップショットにおいて更新され、且つ、第１のスナップショットと連続する世代である第２のスナップショットにおいて更新されていない領域の数を第１の領域数として算出する。なお、本第１実施形態の一例において、第２のスナップショットは、第１のスナップショットの後の世代のスナップショットである。
【００２６】
第２算出部１１３は、第２のスナップショットにおいて更新された領域の数を第２の領域数として算出する。
決定部１１４は、第１の領域数が第２の領域数以上の場合には、第２のスナップショットをマージ処理におけるマージ対象とするとともに第１のスナップショットをマージ処理におけるマージ先として決定する。また、決定部１１４は、第１の領域数が第２の領域数未満の場合には、第１のスナップショットをマージ処理におけるマージ対象とするとともに第２のスナップショットをマージ処理におけるマージ先として決定する。
【００２７】
マージ処理部１１５は、マージ対象のスナップショットのデータをマージ先のスナップショットに書き込み、マージ対象のスナップショットを削除することにより、マージ処理を実行する。
以下、図２〜図１０を参照しながら、取得部１１１，第１算出部１１２，第２算出部１１３，決定部１１４及びマージ処理部１１５が備える機能の詳細を説明する。
【００２８】
まず、図２〜図５を用いて、削除対象のスナップショットをマージ対象とする場合におけるマージ処理の一例を説明する。
図２に示す例においては、途中世代のスナップショットである仮想ディスク＃２が削除対象として指定されている。スナップショットの削除は、例えば、オペレータの任意の操作や予め設定された周期の到来によって実行することができる。
【００２９】
取得部１１１は、削除対象の仮想ディスク＃２の差分データ管理マップ４１に基づいて、更新ビットマップ４２を取得（作成）する（符号Ａ１参照）。図２に示す例においては、仮想ディスク＃２の差分データ管理マップ４１において差分データを保持している論理アドレスが５，７であるため、取得部１１１は、更新ビットマップ４２の第５ビット及び第７ビットにフラグ“１”を設定する。
【００３０】
また、取得部１１１は、削除対象の仮想ディスク＃２の次の世代（子世代）である仮想ディスク＃３の差分データ管理マップ４１に基づいて、更新ビットマップ４２を取得（作成）する（符号Ａ２参照）。図２に示す例においては、仮想ディスク＃３の差分データ管理マップ４１において差分データを保持している論理アドレスが１，３，７，９であるため、取得部１１１は、更新ビットマップ４２の第１ビット，第３ビット，第７ビット及び第９ビットにフラグ“１”を設定する。
【００３１】
図３に示すように、第１算出部１１２は、更新ビットマップ４２に基づいて、仮想ディスク＃２から仮想ディスク＃３へのコピーデータ量を算出する（符号Ｂ１参照）。このコピーデータ量は、仮想ディスク＃２において更新された箇所であり、更に、仮想ディスク＃３において上書きされていない箇所のデータ量である。具体的には、第１算出部１１２は、仮想ディスク＃２の更新ビットマップ４２において“１”であり、且つ、仮想ディスク＃３の更新ビットマップ４２において“０”であるビットの数を算出する。図３に示す例においては、第１算出部１１２は、仮想ディスク＃２から仮想ディスク＃３へのコピーデータ量を表わす値として１ビットを算出する。
【００３２】
第２算出部１１３は、更新ビットマップ４２に基づいて、仮想ディスク＃３から仮想ディスク＃２へのコピーデータ量を算出する（符号Ｂ２参照）。このコピーデータ量は、仮想ディスク＃３において更新された箇所のデータ量である。具体的には、第２算出部１１３は、仮想ディスク＃３の更新ビットマップ４２において“１”であるビットの数を算出する。図３に示す例においては、第２算出部１１３は、仮想ディスク＃３から仮想ディスク＃２へのコピーデータ量を表わす値として４ビットを算出する。
【００３３】
決定部１１４は、符号Ｂ１，Ｂ２でそれぞれ算出したコピーデータ量に基づき、差分データのコピー方向を決定する。
図３に示す例においては、符号Ｂ１で算出したコピーデータ量を示す値（１ビット）が符号Ｂ２で算出したコピーデータ量を示す値（４ビット）未満であるので、決定部１１４は、仮想ディスク＃２の差分データを仮想ディスク＃３へコピーするよう決定する。
【００３４】
図４に示すように、マージ処理部１１５は、決定部１１４の決定に基づき、仮想ディスク＃２において更新され、更に、仮想ディスク＃３において上書きされていない差分データを仮想ディスク＃２からリードする（符号Ｃ１参照）。マージ処理部１１５は、このリードした差分データを例えばメモリ１２にキャッシュする。
マージ処理部１１５は、仮想ディスク＃２において更新され、更に、仮想ディスク＃３において上書きされていない差分データを仮想ディスク＃３へライトする（符号Ｃ２参照）。
【００３５】
図５に示すように、マージ処理部１１５は、仮想ディスク＃３の前世代のスナップショットを仮想ディスク＃１へ変更し（符号Ｄ１参照）、仮想ディスク＃２を削除する（符号Ｄ２参照）。
次に、図６〜図１０を用いて、削除対象のスナップショットをマージ先とする場合におけるマージ処理の一例を説明する。
【００３６】
図６に示す例においても、途中世代のスナップショットである仮想ディスク＃２が削除対象として指定されている。
取得部１１１は、削除対象の仮想ディスク＃２の差分データ管理マップ４１に基づいて、更新ビットマップ４２を取得（作成）する（符号Ｅ１参照）。図６に示す例においては、仮想ディスク＃２の差分データ管理マップ４１において差分データを保持している論理アドレスが３，５，７，９であるため、取得部１１１は、更新ビットマップ４２の第３ビット，第５ビット，第７ビット及び第９ビットにフラグ“１”を設定する。
【００３７】
また、取得部１１１は、削除対象の仮想ディスク＃２の次の世代である仮想ディスク＃３の差分データ管理マップ４１に基づいて、更新ビットマップ４２を取得（作成）する（符号Ｅ２参照）。図６に示す例においては、仮想ディスク＃３の差分データ管理マップ４１において差分データを保持している論理アドレスが１，３であるため、取得部１１１は、更新ビットマップ４２の第１ビット及び第３ビットにフラグ“１”を設定する。
【００３８】
図７に示すように、第１算出部１１２は、更新ビットマップ４２に基づいて、仮想ディスク＃２から仮想ディスク＃３へのコピーデータ量を算出する（符号Ｆ１参照）。このコピーデータ量は、仮想ディスク＃２において更新された箇所であり、更に、仮想ディスク＃３において上書きされていない箇所のデータ量である。具体的には、第１算出部１１２は、仮想ディスク＃２の更新ビットマップ４２において“１”であり、且つ、仮想ディスク＃３の更新ビットマップ４２において“０”であるビットの数を算出する。図７に示す例においては、第１算出部１１２は、仮想ディスク＃２から仮想ディスク＃３へのコピーデータ量を表わす値として３ビットを算出する。
【００３９】
第２算出部１１３は、更新ビットマップ４２に基づいて、仮想ディスク＃３から仮想ディスク＃２へのコピーデータ量を算出する（符号Ｆ２参照）。このコピーデータ量は、仮想ディスク＃３において更新された箇所のデータ量である。具体的には、第２算出部１１３は、仮想ディスク＃３の更新ビットマップ４２において“１”であるビットの数を算出する。図７に示す例においては、第２算出部１１３は、仮想ディスク＃３から仮想ディスク＃２へのコピーデータ量を表わす値として２ビットを算出する。
【００４０】
決定部１１４は、符号Ｆ１，Ｆ２でそれぞれ算出したコピーデータ量に基づき、差分データのコピー方向を決定する。
図７に示す例においては、符号Ｆ１で算出したコピーデータ量を示す値（３ビット）が符号Ｆ２で算出したコピーデータ量を示す値（２ビット）以上であるので、決定部１１４は、仮想ディスク＃３の差分データを仮想ディスク＃２へコピーするよう決定する。
【００４１】
図８に示すように、マージ処理部１１５は、仮想ディスク＃３に存在する差分データを仮想ディスク＃３からリードする（符号Ｇ１参照）。マージ処理部１１５は、このリードした差分データを例えばメモリ１２にキャッシュする。
マージ処理部１１５は、リードした差分データを、仮想ディスク＃２へライトする（符号Ｇ２参照）。
【００４２】
図９に示すように、マージ処理部１１５は、削除対象（マージ先）の仮想ディスク＃２と次世代（マージ対象）の仮想ディスク＃３とを入れ替える（符号Ｈ１参照）。つまり、マージ処理部１１５は、仮想ディスク＃２を仮想ディスク＃３とし、仮想ディスク＃３を仮想ディスク＃２とする。
更に、マージ処理部１１５は、仮想ディスク＃３（旧仮想ディスク＃２）の前世代（親世代）としての仮想ディスクを仮想ディスク＃１に変更する（符号Ｈ２参照）。
【００４３】
図１０に示すように、マージ処理部１１５は、仮想ディスク＃２（旧仮想ディスク＃３）を削除する（符号Ｉ１参照）。
図１１は、第１実施形態の一例としてのストレージシステムにおけるデバイス番号管理テーブルを例示する図である。
図１１に示すデバイス番号管理テーブルにおいては、各ディスクについて、その仮想ディスクのデバイス番号と、前世代の仮想ディスクのデバイス番号とが対応づけられている。なお、オリジナルディスクである仮想ディスク＃０については、前世代の仮想ディスクが存在しないため、前世代の仮想ディスクのデバイス番号はない。
【００４４】
オリジナルディスクである仮想ディスク＃０以外の各ディスクは、それぞれ前世代の仮想ディスクのデバイス番号を例えば各ディスクの管理領域に保持している。
図２〜図１０に示した２つのマージ処理の例においては、仮想ディスク＃２を削除したため、仮想ディスク＃２の仮想ディスクのデバイス番号及び前世代の仮想ディスクのデバイス番号は削除してある。
【００４５】
マージ処理部１１５は、仮想ディスク＃３が保持する前世代の仮想ディスクのデバイス番号を、仮想ディスク＃２を示す“0x8003”から仮想ディスク＃１を示す“0x8002”に変更する。
〔Ａ−２〕動作
上述の如く構成された第１実施形態の一例としてのストレージシステム１におけるマージ処理を図１２に示すフローチャート（ステップＳ１０〜Ｓ１３０）に従って説明する。
【００４６】
取得部１１１は、削除対象のスナップショットの差分データ管理マップ４１に基づいて、更新ビットマップ４２を取得（作成）する（ステップＳ１０）。
取得部１１１は、削除対象のスナップショットの次の世代であるスナップショットの差分データ管理マップ４１に基づいて、更新ビットマップ４２を取得（作成）する（ステップＳ２０）。
【００４７】
第１算出部１１２は、更新ビットマップ４２に基づいて、削除対象のスナップショットから次世代のスナップショットへのコピーデータ量を算出する。具体的には、第１算出部１１２は、ステップＳ１０で取得した更新ビットマップ４２において“１”であり、且つ、ステップＳ２０において取得した更新ビットマップ４２において“０”であるビットの数を算出する（ステップＳ３０）。
【００４８】
第２算出部１１３は、更新ビットマップ４２に基づいて、次世代のスナップショットから削除対象のスナップショットへのコピーデータ量を算出する。具体的には、第２算出部１１３は、ステップＳ２０において取得した更新ビットマップ４２において“１”であるビットの数を算出する（ステップＳ４０）。
決定部１１４は、ステップＳ３０，Ｓ４０でそれぞれ算出したコピーデータ量に基づき、差分データのコピー方向を決定する。つまり、決定部１１４は、ステップＳ３０において算出したビット数がステップＳ４０において算出したビット数以上であるかを判定する（ステップＳ５０）。
【００４９】
ステップＳ３０において算出したビット数がステップＳ４０において算出したビット数以上である場合には（ステップＳ５０のＹＥＳルート参照）、決定部１１４は、次世代のスナップショットの差分データを削除対象のスナップショットへコピーするよう決定する。そして、マージ処理部１１５は、次世代のスナップショットにおいて更新された差分データを次世代のスナップショットからリードする（ステップＳ６０）。マージ処理部１１５は、このリードした差分データを例えばメモリ１２にキャッシュする。
【００５０】
マージ処理部１１５は、削除対象のスナップショットへステップＳ６０でリードした差分データをライトする（ステップＳ７０）。
マージ処理部１１５は、削除対象（マージ先）のスナップショットと次世代（マージ対象）のスナップショットとを入れ替え、図１１に示したように前世代のスナップショットを変更する（ステップＳ８０）。
【００５１】
マージ処理部１１５は、削除対象のスナップショットを削除し（ステップＳ９０）、マージ処理が終了する。
一方、ステップＳ３０において算出したビット数がステップＳ４０において算出したビット数未満である場合には（ステップＳ５０のＮＯルート参照）、決定部１１４は、削除対象のスナップショットの差分データを次世代のスナップショットへコピーするよう決定する。そして、マージ処理部１１５は、削除対象のスナップショットにおいて更新され、更に、次世代のスナップショットにおいて上書きされていない差分データを削除対象のスナップショットからリードする（ステップＳ１００）。マージ処理部１１５は、このリードした差分データを例えばメモリ１２にキャッシュする。
【００５２】
マージ処理部１１５は、次世代のスナップへ差分データをライトする（ステップＳ１１０）。具体的には、マージ処理部１１５は、ステップＳ１０において取得した更新ビットマップ４２において“１”であり、且つ、ステップＳ２０において取得した更新ビットマップ４２において“０”であるビットのデータを差分データ（コピーが必要なデータ）として次世代のスナップショットへライトする。
【００５３】
マージ処理部１１５は、マージ先のスナップショットの前世代のスナップショットを変更する（ステップＳ１２０）。
マージ処理部１１５は、削除対象のスナップショットを削除し（ステップＳ１３０）、マージ処理が終了する。
〔Ａ−３〕効果
このように、第１実施形態の一例としてのストレージシステム１によれば、スナップショットのマージ処理を効率的に行なうことができる。
【００５４】
具体的には、決定部１１４がマージ処理の方向をコピーデータ量が少ない方向に決定することにより、途中世代のスナップショットの削除処理性能を改善でき、又、Ｉ／Ｏ負荷を軽減できる。
更に、決定部１１４がマージ処理の方向をコピーデータ量が少ない方向に決定することにより、マージ処理におけるコピーデータ量を削減でき、マージ処理にかかる時間を削減できる。
【００５５】
〔Ｂ〕第２実施形態
〔Ｂ−１〕システム構成
図１３は、第２実施形態の一例としてのストレージシステムの機能構成を模式的に示す図である。
本第２実施形態の一例としてのストレージシステム５は、図１３に示すようにストレージ装置５００及びホスト７０を備える。これらのストレージ装置５００及びホスト７０は、図示するように互いに通信可能に接続されている。
【００５６】
ホスト７０は、例えば、サーバ機能を備えたコンピュータである。図１３に示す例では、１つのホスト７０を備えているが、２つ以上のホスト７０を備えることとしても良い。
ストレージ装置５００は、複数（図示する例では４つ）のControl Module（ＣＭ；ストレージ制御装置）５０及び物理ボリューム６０ｂを備える。また、ＣＭ５０は、例えば、図１３に示すように論理ボリューム６０ａを生成し、この論理ボリューム６０ａを既知の手法を用いて物理ボリューム６０ｂと対応づけることにより、ホスト７０から物理ボリューム６０ｂの資源を認識できるようにしている。
【００５７】
論理ボリューム６０ａは、運用ボリューム（運用ディスク）６１及び複数のSnap Data Volume（ＳＤＶ）６２を含む。
本第２実施形態の一例においては、運用ボリューム６１がスナップショットのコピー元となり、複数のＳＤＶ６２がスナップショットのコピー先となる。
物理ボリューム６０ｂは、Snap Data Pool（ＳＤＰ；記憶装置）６３を備える。このＳＤＰ６３は、例えば、ＨＤＤやＳＳＤであり、運用ボリューム６１及び複数のＳＤＶ６２に対して割り当てられる物理容量を提供する。
【００５８】
ＣＭ５０は、種々の制御を行なう制御装置であり、ホスト７０からのストレージアクセス要求（アクセス制御信号：以下、ホストＩ／Ｏという）に従って、各種制御を行なう。このＣＭ５０は、上述した第１実施形態の一例と同様のＣＰＵ１１及びメモリ１２の他、Channel Adapter（ＣＡ）５１及びDevice Adapter（ＤＡ）５２を備える。なお、図１３に示す例においては、ストレージ装置５００が４つのＣＭ５０を備えることとしているが、これに限定されるものではなく、ストレージ装置５００は３つ以下又は５つ以上のＣＭ５０を備えることとしても良い。
【００５９】
ＣＡ５１は、ＣＭ５０とホスト７０とを通信可能に接続するインタフェースコントローラである。ＣＡ５１は、ホスト７０から送信されたデータを受信して、このデータをＣＭ５０に受け渡し、又、ＣＭ５０から受け取ったデータをホスト７０に送信する。すなわち、ＣＡ５１は、外部装置であるホスト７０との間でのデータの入出力（Ｉ／Ｏ）を制御する機能を備える。
【００６０】
ＤＡ５２は、ＣＭ５０と物理ボリューム６０ｂとを通信可能に接続するためのインタフェースであり、例えばFiber Channel（ＦＣ）である。ＣＭ５０は、このＤＡ５２を介して、物理ボリューム６０ｂに対するデータの書き込みや読み出しを行なう。なお、図１３に示す例においては、ＣＭ５０が２つのＤＡ５２を備えることとしているが、これに限定されるものではなく、ＣＭ５０は１つ又は３つ以上のＤＡ５２を備えることとしても良い。
【００６１】
本第２実施形態の一例においては、ストレージ装置５００は、ホスト７０が備える図示しないＣＰＵを使用することなく高速にスナップショットを作成するアドバンスコピー機能を備える。このアドバンスコピー機能には、例えば、各スナップショットの世代間の差分をディスク上に保持する機能が存在する。
上述した第１実施形態の一例におけるスナップショット（差分スナップショット）機能では運用ディスクは最新世代の差分ディスクであるのに対して、本第２実施形態の一例におけるスナップショット機能では運用ディスクはオリジナルディスク（全領域のデータを保持するディスク）である。すなわち、本第２実施形態の一例におけるスナップショット機能は、更新前データを退避する方式である。また、上述した第１実施形態の一例におけるスナップショット機能では差分ディスクに対してリードＩ／Ｏが発行された場合に前世代のディスクのデータを必要とするのに対して、本第２実施形態の一例におけるスナップショット機能では後世代のディスクのデータを必要とする。
【００６２】
図１４（ａ），（ｂ）は、第２実施形態の一例としてのストレージシステムにおけるスナップショットの作成手法を説明する図であり、スナップショットにおけるデータ更新手法を示す。
図１４（ａ）に示すように、運用ディスクにおけるデータ“ａ”が格納されている領域に対してデータ“ｂ”のライトＩ／Ｏが発行されると（図１４（ａ）の符号Ｊ１参照）、ＣＭ５０は、運用ディスクが保持していたデータ“ａ”を最新世代のスナップショットである第３世代ディスクにコピーする（図１４（ａ）の符号Ｊ２参照）。つまり、図１４（ｂ）に示すように、運用ディスクは新たに書き込まれたデータ“ｂ”を保持し、第３世代ディスクは運用ディスクが保持していたデータ“ａ”を保持する。
【００６３】
図１５（ａ），（ｂ）は、第２実施形態の一例としてのストレージシステムにおけるスナップショットのリード手法を説明する図であり、スナップショットにおけるデータリード手法を示す。
図１５（ａ）に示すように、第２世代ディスクに対してリードＩ／Ｏが発行され（図１５（ａ）の符号Ｋ１参照）、この第２世代ディスクがデータを保持していない場合には、図１５（ｂ）に示すように、ＣＭ５０は、第３世代ディスクからデータをリードする（図１５（ｂ）の符号Ｋ２参照）。
【００６４】
このように、本第２実施形態の一例におけるスナップショット機能では、古い世代のスナップショットが新しい世代のスナップショットが保持するデータを必要とするため、古い世代のスナップショットを残したまま新しい世代のスナップショットを削除できない。図１５（ａ），（ｂ）に示した例においては、第１世代ディスク又は第２世代ディスクを残したまま第３世代ディスクを削除できない。
【００６５】
図１６（ａ）は第２実施形態の一例としてのストレージシステムにおけるＬＢＡ変換テーブルを例示する図であり、（ｂ）はその更新ビットマップを例示する図である。
本第２実施形態の一例におけるスナップショット機能では、スナップショットのコピー先として上述したＳＤＶ６２を使用する。
ＳＤＶ６２は、図１６（ａ）に示すようなＬＢＡ変換テーブル８１を保持する。このＬＢＡ変換テーブル８１においては、スナップショット機能のコピーライトオン動作が行なわれた時点でのLogical Block Address（ＬＢＡ；論理ブロックアドレス）とPhysical Address（ＰＡ；物理アドレス）とが対応づけられている。
【００６６】
また、ＳＤＶ６２は、図１６（ｂ）に示すような更新ビットマップ８２を保持する。この更新ビットマップ８２においては、ＬＢＡ変換テーブル８１でＰＡが割り当てられているＬＢＡに対して「更新あり」を示すフラグ“１”が設定されている。また、ＬＢＡ変換テーブル８１でＰＡが割り当てられていないＬＢＡに対して「更新なし」を示すフラグ“０”が設定されている。
【００６７】
図１７は、第２実施形態の一例としてのストレージシステムにおけるマージ処理を例示する図である。
以下、図１７〜図２０においては、ディスク＃０は運用ディスク（オリジナルディスク）であり、ディスク＃１〜＃３はバックアップディスク（スナップショット）である。これらのバックアップディスクは、世代の古いものから順にディスク＃１，＃２，＃３である。
【００６８】
図１３に示したように、ＣＰＵ１１は、上述した第１実施形態の一例と同様に取得部１１１，第１算出部１１２，第２算出部１１３，決定部１１４及びマージ処理部１１５を備える。以下、図１７〜図２０を参照しながら、取得部１１１，第１算出部１１２，第２算出部１１３，決定部１１４及びマージ処理部１１５が備える機能の詳細を説明する。
図１７に示す例においては、途中世代のスナップショットであるディスク＃２が削除対象として指定されている。スナップショットの削除は、例えば、オペレータの任意の操作や予め設定された周期の到来によって実行することができる。
【００６９】
取得部１１１は、削除対象のディスク＃２のＬＢＡ変換テーブル８１に基づいて、更新ビットマップ８２を取得（作成）する。図１７に示す例においては、ディスク＃２のＬＢＡ変換テーブル８１においてＰＡが割り当てられているＬＢＡが0x0，0x10、0x30及び0x40であるため、取得部１１１は、例えば更新ビットマップ８２の第０ビット，第１ビット，第３ビット及び第４ビットにフラグ“１”を設定する。
【００７０】
また、取得部１１１は、削除対象のディスク＃２の前の世代であるディスク＃１のＬＢＡ変換テーブル８１に基づいて、更新ビットマップ８２を取得（作成）する。図１７に示す例においては、ディスク＃１のＬＢＡ変換テーブル８１においてＰＡが割り当てられているＬＢＡが0x0及び0x20であるため、取得部１１１は、例えば更新ビットマップ８２の第０ビット及び第２ビットにフラグ“１”を設定する。
【００７１】
第１算出部１１２は、更新ビットマップ８２に基づいて、ディスク＃２からディスク＃１へのコピーデータ量を算出する。このコピーデータ量は、ディスク＃２において更新された箇所であり、更に、ディスク＃１において上書きされていない箇所のデータ量である。具体的には、第１算出部１１２は、ディスク＃２の更新ビットマップ８２において“１”であり、且つ、ディスク＃１の更新ビットマップ８２において“０”であるビットの数を算出する。図１７に示す例においては、第１算出部１１２は、ディスク＃２からディスク＃１へのコピーデータ量を示す値として３ビットを算出する。
【００７２】
すなわち、第１算出部１１２は、複数世代のスナップショットのうち削除対象である第１のスナップショットにおいて更新され、且つ、第１のスナップショットと連続する世代である第２のスナップショットにおいて更新されていない領域の数を第１の領域数として算出する。本第２実施形態の一例においては、第２のスナップショットは、第１のスナップショットの前の世代のスナップショットである。
【００７３】
第２算出部１１３は、更新ビットマップ８２に基づいて、ディスク＃１からディスク＃２へのコピーデータ量を算出する。このコピーデータ量は、ディスク＃１において更新された箇所のデータ量である。具体的には、第２算出部１１３は、ディスク＃１の更新ビットマップ８２において“１”であるビットの数を算出する。図１７に示す例においては、第２算出部１１３は、ディスク＃１からディスク＃２へのコピーデータ量を示す値として２ビットを算出する。
【００７４】
すなわち、第２算出部１１３は、第２のスナップショットにおいて更新された領域の数を第２の領域数として算出する。
決定部１１４は、第１算出部１１２及び第２算出部１１３がそれぞれ算出したコピーデータ量に基づき、差分データのコピー方向を決定する。具体的には、第１算出部１１２が算出したコピーデータ量が第２算出部１１３が算出したコピーデータ量以上の場合には、決定部１１４は、ディスク＃１のデータをディスク＃２へコピーするよう決定する。一方、第１算出部１１２が算出したコピーデータ量が第２算出部１１３が算出したコピーデータ量未満の場合には、決定部１１４は、ディスク＃２のデータをディスク＃１へコピーするよう決定する。
【００７５】
すなわち、決定部１１４は、第１の領域数が第２の領域数以上の場合には、第２のスナップショットをマージ処理におけるマージ対象とするとともに第１のスナップショットをマージ処理におけるマージ先として決定する。また、決定部１１４は、第１の領域数が第２の領域数未満の場合には、第１のスナップショットをマージ処理におけるマージ対象とするとともに第２のスナップショットをマージ処理におけるマージ先として決定する。
【００７６】
図１７に示す例においては、第１算出部１１２が算出したコピーデータ量を示す値（３ビット）が、第２算出部１１３が算出したコピーデータ量を示す値（２ビット）以上であるので、決定部１１４は、ディスク＃１のデータをディスク＃２へコピーするよう決定する。
マージ処理部１１５は、ディスク＃１の更新ビットマップ８２において“１”であるビットのデータをディスク＃１からリードし、ディスク＃２へライトする。具体的には、マージ処理部１１５は、ディスク＃１及びディスク＃２のＬＢＡ変換テーブル８１を先頭から走査し、ディスク＃１のＬＢＡ変換テーブル８１においてＰＡが割り当てられているＬＢＡについて、ディスク＃１からディスク＃２へコピーする。
【００７７】
図１８は、第２実施形態の一例としてのストレージシステムにおけるマージ処理中のマージ対象ディスクに対するライト処理を例示する図である。
本ストレージシステム５においては、バックアップディスクであるディスク＃１〜＃３は、ホスト７０に認識させて運用することが可能である。ホスト７０からマージ完了済みのブロックに対してＩ／Ｏが発行された場合には、マージ処理部１１５は、マージ先のディスクに対してＩ／Ｏを反映する。一方、ホスト７０からマージ未完了のブロックに対してＩ／Ｏが発行された場合には、マージ処理部１１５は、マージ対象のディスクに対してＩ／Ｏを反映する。
【００７８】
図１８に示す例においては、ディスク＃１がマージ対象であり、ディスク＃２がマージ先であり、又、ＬＢＡ＝0x0及び0x10についてマージ処理が完了している（符号Ｌ１参照）。ホスト７０からディスク＃１のＬＢＡ＝0x0へライトＩ／Ｏが発行されると（符号Ｌ２参照）、マージ処理部１１５は、ディスク＃２のＰＡ＝0x1000へライト処理を実行する（符号Ｌ３参照）。同様に、ホスト７０からディスク＃１のＬＢＡ＝0x0へリードＩ／Ｏが発行されると、マージ処理部１１５は、ディスク＃２のＰＡ＝0x1000へリード処理を実行する。
【００７９】
すなわち、決定部１１４が第１のスナップショットをマージ処理におけるマージ先として決定した場合には、マージ処理部１１５は、第２のスナップショットにおいてマージ処理が完了した領域に対する書き込み又は読み込みを、第１のスナップショットに対して実行する。
図１９は、第２実施形態の一例としてのストレージシステムにおけるマージ処理中の運用ディスクに対するライト処理を例示する図である。
【００８０】
図１９に示すように、ディスク＃２が最新世代のディスクである場合には、通常はオリジナルディスクであるディスク＃０に対するライトＩ／Ｏを契機として、コピーオンライト動作によるバックアップデータの反映がディスク＃２に対して行なわれる。ただし、図１９に示すように、ディスク＃２が最新世代のディスクであり、且つ、削除対象である場合には、ライトＩ／Ｏが発行されたブロックがマージ処理済みであれば、マージ処理部１１５は、ディスク＃１に対して更新データの反映を即時実行する。
【００８１】
図１９に示す例においては、ディスク＃１がマージ先であり、最新世代のディスク＃２がマージ対象であり、又、ＬＢＡ＝0x0及び0x10についてマージ処理が完了している（符号Ｍ１参照）。ホスト７０からオリジナルディスクであるディスク＃０のＬＢＡ＝0x0へライトＩ／Ｏが発行されると（符号Ｍ２参照）、マージ処理部１１５は、ディスク＃１のＰＡ＝0x4000へライト処理を実行する（符号Ｍ３参照）。
【００８２】
一方、マージ処理が未完了のブロックに対するライトＩ／Ｏの発行であれば、ディスク＃１へのデータ反映はマージ処理によって実行されるため、マージ処理部１１５は、ディスク＃２に対して更新データを反映する。
すなわち、決定部１１４が第２のスナップショットをマージ処理におけるマージ先として決定し、且つ、第１のスナップショットが最新世代のスナップショットである場合には、マージ処理部１１５は、第１のスナップショットにおいてマージ処理が完了した領域に対する書き込みを、第２のスナップショットに対して実行する。
【００８３】
図２０は、第２実施形態の一例としてのストレージシステムにおけるディスク切り替え処理を例示する図である。
本第２実施形態の一例におけるストレージシステム５においては、例えば、ＣＭ５０の図示しない記憶装置は、ホスト７０から認識可能なLogical Unit Number（ＬＵＮ；ディスク番号）と論理ボリューム６０ａ内の論理的なボリューム番号とを対応づけるマッピングテーブルを保持している。
【００８４】
図２０に示す例においては、ディスク＃１及びディスク＃２に対して、ＬＵＮ＃１及びＬＵＮ＃２がそれぞれ対応づけられている。なお、ディスク＃０及びディスク＃３に対しても、図示しないＬＵＮが対応づけられている。また、ＬＵＮ＃２及びそれに対応するディスク＃２が削除対象として指定されている。ディスク＃１及びディスク＃２のＬＢＡ変換テーブル８１を参照すれば、ディスク＃１からディスク＃２へのコピーデータ量を示す値は２ビットであり、ディスク＃２からディスク＃１へのコピーデータ量を示す値は３ビットである。そのため、決定部１１４は、ディスク＃１をマージ対象とするとともに、ディスク＃２をマージ先として決定する。
【００８５】
そして、マージ処理部１１５は、決定部１１４の決定に基づき、ディスク＃１をマージ対象とするとともに、ディスク＃２をマージ先として、マージ処理を行なう。
以下、図２０を参照しながら、マージ処理部１１５によるマージ処理完了後のディスク切り替え処理を説明する。
マージ処理部１１５は、ホスト７０からＬＵＮ＃１に対する新規Ｉ／Ｏのキューイングを開始し、又、処理中Ｉ／Ｏの応答完了を待ち合わせる（符号Ｎ１参照）。
【００８６】
マージ処理部１１５は、マッピングテーブルを切り替える（符号Ｎ２参照）。具体的には、マージ処理部１１５は、ＬＵＮ＃１をマージ先のディスク＃２へ対応づける。
マージ処理部１１５は、マージ対象のディスク＃１を削除する（符号Ｎ３参照）。
マージ処理部１１５は、キューイングしていたホスト７０からＬＵＮ＃１に対するＩ／Ｏを再開する（符号Ｎ４参照）。
【００８７】
すなわち、マージ処理部１１５は、マージ対象のスナップショットのデータをマージ先のスナップショットに書き込み、マージ対象のスナップショットを削除することにより、マージ処理を実行する。
〔Ｂ−２〕動作
上述の如く構成された第２実施形態の一例としてのストレージシステム５におけるマージ方向決定処理を図２１に示すフローチャート（ステップＳ２１０〜Ｓ２７０）に従って説明する。
【００８８】
取得部１１１は、削除対象のスナップショットのＬＢＡ変換テーブル８１に基づいて、更新ビットマップ８２を取得（作成）する（ステップＳ２１０）。
取得部１１１は、削除対象のスナップショットの前の世代であるスナップショットのＬＢＡ変換テーブル８１に基づいて、更新ビットマップ８２を取得（作成）する（ステップＳ２２０）。
【００８９】
第１算出部１１２は、更新ビットマップ８２に基づいて、削除対象のスナップショットから前世代のスナップショットへのコピーデータ量を算出する。具体的には、第１算出部１１２は、ステップＳ２１０で取得した更新ビットマップ８２において“１”であり、且つ、ステップＳ２２０において取得した更新ビットマップ８２において“０”であるビットの数を算出する（ステップＳ２３０）。
【００９０】
第２算出部１１３は、更新ビットマップ８２に基づいて、前世代のスナップショットから削除対象のスナップショットへのコピーデータ量を算出する。具体的には、第２算出部１１３は、ステップＳ２２０において取得した更新ビットマップ８２において“１”であるビットの数を算出する（ステップＳ２４０）。
決定部１１４は、ステップＳ２３０，Ｓ２４０でそれぞれ算出したコピーデータ量に基づき、データのコピー方向を決定する。つまり、決定部１１４は、ステップＳ２３０において算出したビット数がステップＳ２４０において算出したビット数以上であるかを判定する（ステップＳ２５０）。
【００９１】
ステップＳ２３０において算出したビット数がステップＳ２４０において算出したビット数以上である場合には（ステップＳ２５０のＹＥＳルート参照）、決定部１１４は、前世代のスナップショットのデータを削除対象のスナップショットへコピーするよう決定する。そして、マージ処理部１１５は、前世代のスナップショットから削除対象のスナップショットに対してマージ処理を実行し（ステップＳ２６０）、処理が終了する。
【００９２】
一方、ステップＳ２３０において算出したビット数がステップＳ２４０において算出したビット数未満である場合には（ステップＳ２５０のＮＯルート参照）、決定部１１４は、削除対象のスナップショットのデータを前世代のスナップショットへコピーするよう決定する。そして、マージ処理部１１５は、削除対象のスナップショットから前世代のスナップショットに対してマージ処理を実行し（ステップＳ２７０）、処理が終了する。
【００９３】
本第２実施形態の一例としてのストレージシステム５におけるマージ処理中のライト処理を図２２に示すフローチャート（ステップＳ３１０〜Ｓ３５０）に従って説明する。
マージ処理部１１５は、ホスト７０からのライトＩ／Ｏを受領する（ステップＳ３１０）。
マージ処理部１１５は、Ｉ／Ｏ発行先ディスクがマージ元（マージ対象）であるかを判定する（ステップＳ３２０）。
【００９４】
Ｉ／Ｏ発行先ディスクがマージ元である場合には（ステップＳ３２０のＹＥＳルート参照）、マージ処理部１１５は、Ｉ／Ｏ対象範囲がマージ完了済みブロックであるかを判定する（ステップＳ３３０）。
Ｉ／Ｏ対象範囲がマージ完了済みブロックである場合には（ステップＳ３３０のＹＥＳルート参照）、マージ処理部１１５は、ライトＩ／Ｏについてのデータをマージ先ディスクへ書き込み（ステップＳ３４０）、処理が終了する。
【００９５】
一方、Ｉ／Ｏ発行先ディスクがマージ元でない場合（ステップＳ３２０のＮＯルート参照）、又は、Ｉ／Ｏ対象範囲がマージ完了済みブロックでない場合には（ステップＳ３３０のＮＯルート参照）、ステップＳ３５０へ移行する。そして、マージ処理部１１５は、ライトＩ／ＯについてのデータをＩ／Ｏ発行先ディスクへ書き込み（ステップＳ３５０）、処理が終了する。
【００９６】
本第２実施形態の一例としてのストレージシステム５におけるマージ処理中のリード処理を図２３に示すフローチャート（ステップＳ４１０〜Ｓ４５０）に従って説明する。
マージ処理部１１５は、ホスト７０からのリードＩ／Ｏを受領する（ステップＳ４１０）。
マージ処理部１１５は、Ｉ／Ｏ発行先ディスクがマージ元（マージ対象）であるかを判定する（ステップＳ４２０）。
【００９７】
Ｉ／Ｏ発行先ディスクがマージ元である場合には（ステップＳ４２０のＹＥＳルート参照）、マージ処理部１１５は、Ｉ／Ｏ対象範囲がマージ完了済みブロックであるかを判定する（ステップＳ４３０）。
Ｉ／Ｏ対象範囲がマージ完了済みブロックである場合には（ステップＳ４３０のＹＥＳルート参照）、マージ処理部１１５は、リードＩ／Ｏについてのデータをマージ先ディスクから読み出し（ステップＳ４４０）、処理が終了する。
【００９８】
一方、Ｉ／Ｏ発行先ディスクがマージ元でない場合（ステップＳ４２０のＮＯルート参照）、又は、Ｉ／Ｏ対象範囲がマージ完了済みブロックでない場合には（ステップＳ４３０のＮＯルート参照）、ステップＳ４５０へ移行する。そして、マージ処理部１１５は、リードＩ／ＯについてのデータをＩ／Ｏ発行先ディスクから読み出し（ステップＳ４５０）、処理が終了する。
【００９９】
本第２実施形態の一例としてのストレージシステム５におけるマージ処理中の運用ディスクに対するライト処理を図２４に示すフローチャート（ステップＳ５１０〜５５０）に従って説明する。
マージ処理部１１５は、ホスト７０からのライトＩ／Ｏを受領する（ステップＳ５１０）。
【０１００】
マージ処理部１１５は、最新世代ディスクがマージ元（マージ対象）であるかを判定する（ステップＳ５２０）。
最新世代ディスクがマージ元である場合には（ステップＳ５２０のＹＥＳルート参照）、マージ処理部１１５は、バックアップ範囲がマージ完了済みブロックであるかを判定する（ステップＳ５３０）。
【０１０１】
バックアップ範囲がマージ完了済みブロックである場合には（ステップＳ５３０のＹＥＳルート参照）、マージ処理部１１５は、バックアップデータをマージ先ディスクへ書き込み（ステップＳ５４０）、処理が終了する。
一方、最新世代ディスクがマージ元でない場合（ステップＳ５２０のＮＯルート参照）、又は、バックアップ範囲がマージ完了済みブロックでない場合には（ステップＳ５３０のＮＯルート参照）、ステップＳ５５０へ移行する。そして、マージ処理部１１５は、バックアップデータを最新世代ディスクへ書き込み（ステップＳ５５０）、処理が終了する。
【０１０２】
本第２実施形態の一例としてのストレージシステム５におけるディスク切り替え処理を図２５に示すフローチャート（ステップＳ６１０〜６４０）に従って説明する。
マージ処理部１１５は、ホスト７０からの新規Ｉ／Ｏのキューイングを開始し、又、処理中Ｉ／Ｏの応答完了を待ち合わせる（ステップＳ６１０）。
マージ処理部１１５は、ＬＵＮと論理ボリューム番号とを対応づけるマッピングテーブルを切り替える（ステップＳ６２０）。
【０１０３】
マージ処理部１１５は、マージ対象のディスクを削除する（ステップＳ６３０）。
マージ処理部１１５は、キューイングしていたホスト７０からのＩ／Ｏを再開し（ステップＳ６４０）、処理が終了する。
〔Ｂ−３〕効果
このように、第２実施形態の一例としてのストレージシステム１によれば、上述した第１実施形態の一例と同様の効果を奏することができる他、以下のような効果を奏することができる。
【０１０４】
決定部１１４が削除対象のスナップショットをマージ処理におけるマージ先として決定した場合には、マージ処理部１１５は、前世代のスナップショットにおいてマージ処理が完了した領域に対するＩ／Ｏを、削除対象のスナップショットに対して実行する。これにより、マージ処理中においてもホスト７０からのＩ／Ｏを処理することができ、業務を中断する必要がない。
【０１０５】
決定部１１４が前世代のスナップショットをマージ処理におけるマージ先として決定し、且つ、削除対象のスナップショットが最新世代のスナップショットである場合には、マージ処理部１１５は、削除対象のスナップショットにおいてマージ処理が完了した領域に対するＩ／Ｏを、前世代のスナップショットに対して実行する。これにより、マージ処理中においても運用ディスクのバックアップを作成することができる。
【０１０６】
〔Ｃ〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
〔Ｄ〕付記
（付記１）
記憶装置の複数世代のスナップショットを作成するストレージ制御装置であって、
前記複数世代のスナップショットのうち削除対象である第１のスナップショットにおいて更新され、且つ、前記第１のスナップショットと連続する世代である第２のスナップショットにおいて更新されていない領域の数を第１の領域数として算出する第１算出部と、
前記第２のスナップショットにおいて更新された領域の数を第２の領域数として算出する第２算出部と、
前記第１の領域数が前記第２の領域数以上の場合には、前記第２のスナップショットをマージ処理におけるマージ対象とするとともに前記第１のスナップショットをマージ処理におけるマージ先として決定し、前記第１の領域数が前記第２の領域数未満の場合には、前記第１のスナップショットをマージ処理におけるマージ対象とするとともに前記第２のスナップショットをマージ処理におけるマージ先として決定する決定部と、
を備えることを特徴とするストレージ制御装置。
【０１０７】
（付記２）
前記マージ対象のスナップショットのデータを前記マージ先のスナップショットに書き込み、前記マージ対象のスナップショットを削除することにより、前記マージ処理を実行するマージ処理部を備えることを特徴とする付記１に記載のストレージ制御装置。
（付記３）
前記複数世代のスナップショットが差分を追記する方式のスナップショットである場合には、前記第２のスナップショットは、前記第１のスナップショットの後の世代のスナップショットであることを特徴とする付記１又は２に記載のストレージ制御装置。
【０１０８】
（付記４）
前記複数世代のスナップショットが更新前データを退避する方式のスナップショットである場合には、前記第２のスナップショットは、前記第１のスナップショットの前の世代のスナップショットであることを特徴とする付記１又は２に記載のストレージ制御装置。
（付記５）
前記決定部が前記第１のスナップショットを前記マージ処理におけるマージ先として決定した場合には、前記マージ処理部は、前記第２のスナップショットにおいて前記マージ処理が完了した領域に対する書き込み又は読み込みを、前記第１のスナップショットに対して実行することを特徴とする付記４記載のストレージ制御装置。
【０１０９】
（付記６）
前記決定部が前記第２のスナップショットを前記マージ処理におけるマージ先として決定し、且つ、前記第１のスナップショットが最新世代のスナップショットである場合には、前記マージ処理部は、前記第１のスナップショットにおいて前記マージ処理が完了した領域に対する書き込みを、前記第２のスナップショットに対して実行することを特徴とする付記４又は５に記載のストレージ制御装置。
【０１１０】
（付記７）
記憶装置の複数世代のスナップショットを作成するストレージ制御装置に備えられるコンピュータに、
前記複数世代のスナップショットのうち削除対象である第１のスナップショットにおいて更新され、且つ、前記第１のスナップショットと連続する世代である第２のスナップショットにおいて更新されていない領域の数を第１の領域数として算出し、
前記第２のスナップショットにおいて更新された領域の数を第２の領域数として算出し、
前記第１の領域数が前記第２の領域数以上の場合には、前記第２のスナップショットをマージ処理におけるマージ対象とするとともに前記第１のスナップショットをマージ処理におけるマージ先として決定し、前記第１の領域数が前記第２の領域数未満の場合には、前記第１のスナップショットをマージ処理におけるマージ対象とするとともに前記第２のスナップショットをマージ処理におけるマージ先として決定する、
処理を実行させることを特徴とする制御プログラム。
【０１１１】
（付記８）
前記マージ対象のスナップショットのデータを前記マージ先のスナップショットに書き込み、前記マージ対象のスナップショットを削除することにより、前記マージ処理を前記コンピュータに実行させることを特徴とする付記７に記載の制御プログラム。
（付記９）
前記複数世代のスナップショットが差分を追記する方式のスナップショットである場合には、前記第２のスナップショットは、前記第１のスナップショットの後の世代のスナップショットであることを特徴とする付記７又は８に記載の制御プログラム。
【０１１２】
（付記１０）
前記複数世代のスナップショットが更新前データを退避する方式のスナップショットである場合には、前記第２のスナップショットは、前記第１のスナップショットの前の世代のスナップショットであることを特徴とする付記７又は８に記載の制御プログラム。
（付記１１）
前記第１のスナップショットを前記マージ処理におけるマージ先として決定した場合には、前記第２のスナップショットにおいて前記マージ処理が完了した領域に対する書き込み又は読み込みを、前記第１のスナップショットに対して実行する処理を前記コンピュータに実行させることを特徴とする付記１０に記載の制御プログラム。
【０１１３】
（付記１２）
前記第２のスナップショットを前記マージ処理におけるマージ先として決定し、且つ、前記第１のスナップショットが最新世代のスナップショットである場合には、前記第１のスナップショットにおいて前記マージ処理が完了した領域に対する書き込みを、前記第２のスナップショットに対して実行する処理を前記コンピュータに実行させることを特徴とする付記１０又は１１に記載の制御プログラム。
【０１１４】
（付記１３）
記憶装置の複数世代のスナップショットを作成するストレージ制御装置において、
前記複数世代のスナップショットのうち削除対象である第１のスナップショットにおいて更新され、且つ、前記第１のスナップショットと連続する世代である第２のスナップショットにおいて更新されていない領域の数を第１の領域数として算出し、
前記第２のスナップショットにおいて更新された領域の数を第２の領域数として算出し、
前記第１の領域数が前記第２の領域数以上の場合には、前記第２のスナップショットをマージ処理におけるマージ対象とするとともに前記第１のスナップショットをマージ処理におけるマージ先として決定し、前記第１の領域数が前記第２の領域数未満の場合には、前記第１のスナップショットをマージ処理におけるマージ対象とするとともに前記第２のスナップショットをマージ処理におけるマージ先として決定する、
ことを特徴とする制御方法。
【０１１５】
（付記１４）
前記マージ対象のスナップショットのデータを前記マージ先のスナップショットに書き込み、前記マージ対象のスナップショットを削除することにより、前記マージ処理を実行することを特徴とする付記１３に記載の制御方法。
（付記１５）
前記複数世代のスナップショットが差分を追記する方式のスナップショットである場合には、前記第２のスナップショットは、前記第１のスナップショットの後の世代のスナップショットであることを特徴とする付記１３又は１４に記載の制御方法。
【０１１６】
（付記１６）
前記複数世代のスナップショットが更新前データを退避する方式のスナップショットである場合には、前記第２のスナップショットは、前記第１のスナップショットの前の世代のスナップショットであることを特徴とする付記１３又は１４に記載の制御方法。
（付記１７）
前記第１のスナップショットを前記マージ処理におけるマージ先として決定した場合には、前記第２のスナップショットにおいて前記マージ処理が完了した領域に対する書き込み又は読み込みを、前記第１のスナップショットに対して実行することを特徴とする付記１６に記載の制御方法。
【０１１７】
（付記１８）
前記第２のスナップショットを前記マージ処理におけるマージ先として決定し、且つ、前記第１のスナップショットが最新世代のスナップショットである場合には、前記第１のスナップショットにおいて前記マージ処理が完了した領域に対する書き込みを、前記第２のスナップショットに対して実行することを特徴とする付記１６又は１７に記載の制御方法。
【符号の説明】
【０１１８】
１        ストレージシステム
１００    ストレージ装置
１０      ストレージ制御装置
１１      ＣＰＵ（コンピュータ）
１１１    取得部
１１２    第１算出部
１１３    第２算出部
１１４    決定部
１１５    マージ処理部
１２      メモリ
１３      仮想ディスク
２０      ＲＡＩＤ装置
２１      記憶装置
３０      サーバ
３１      ＶＭ
３２      ＯＳ
４１      差分データ管理マップ
４２      更新ビットマップ
５        ストレージシステム
５００    ストレージ装置
５０      ＣＭ（ストレージ制御装置）
５１      ＣＡ
５２      ＤＡ
６０ａ    論理ボリューム
６０ｂ    物理ボリューム
６１      運用ボリューム
６２      ＳＤＶ
６３      ＳＤＰ（記憶装置）
７０      ホスト
８１      ＬＢＡ変換テーブル
８２      更新ビットマップ
【図１】
2015026112.tif 000003
【図２】
2015026112.tif 000004
【図３】
2015026112.tif 000005
【図４】
2015026112.tif 000006
【図５】
2015026112.tif 000007
【図６】
2015026112.tif 000008
【図７】
2015026112.tif 000009
【図８】
2015026112.tif 000010
【図９】
2015026112.tif 000011
【図１０】
2015026112.tif 000012
【図１１】
2015026112.tif 000013
【図１２】
2015026112.tif 000014
【図１３】
2015026112.tif 000015
【図１４】
2015026112.tif 000016
【図１５】
2015026112.tif 000017
【図１６】
2015026112.tif 000018
【図１７】
2015026112.tif 000019
【図１８】
2015026112.tif 000020
【図１９】
2015026112.tif 000021
【図２０】
2015026112.tif 000022
【図２１】
2015026112.tif 000023
【図２２】
2015026112.tif 000024
【図２３】
2015026112.tif 000025
【図２４】
2015026112.tif 000026
【図２５】
2015026112.tif 000027