(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-31
(45)【発行日】2024-08-08
(54)【発明の名称】ストレージシステム、計算機システム及び制御方法
(51)【国際特許分類】
G06F 3/06 20060101AFI20240801BHJP
G06F 13/10 20060101ALI20240801BHJP
G06F 11/14 20060101ALI20240801BHJP
G06F 16/182 20190101ALI20240801BHJP
G06F 16/28 20190101ALI20240801BHJP
【FI】
G06F3/06 304F
G06F3/06 301X
G06F3/06 301Z
G06F13/10 340A
G06F11/14 648
G06F11/14 656
G06F16/182 100
G06F16/28
(21)【出願番号】P 2021102223
(22)【出願日】2021-06-21
【審査請求日】2022-06-21
【前置審査】
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】松下 貴記
(72)【発明者】
【氏名】出口 彰
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2013-011919(JP,A)
【文献】特開2009-146389(JP,A)
【文献】国際公開第2017/081747(WO,A1)
【文献】特開2014-006845(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06-3/08
G06F 13/10-13/14
G06F 11/14
G06F 16/10-16/188
(57)【特許請求の範囲】
【請求項1】
ネットワークを介して他のストレージシステムに接続されるストレージシステムであって、
メモリと、前記メモリに記憶されるプログラムを実行するプロセッサと、記憶デバイスと、を備え、
前記プログラムの実行により前記プロセッサは、
仮想ボリュームを提供し、
前記仮想ボリュームについて異なるタイミングで複数のスナップショットを生成し、
前記仮想ボリュームおよびスナップショットのデータを、前記記憶デバイスの記憶領域に対応付けられたプールボリュームに格納し、
前記仮想ボリュームおよびスナップショットに複数含まれる同一のデータについて、前記プールボリュームの同一の記憶領域を割り当てており、
前記スナップショットには、基準となるスナップショットである基底スナップショットと、他のスナップショットとの差分を示す差分スナップショットとが含まれており、前記基底スナップショットと前記差分スナップショットとは、所定の条件に基づいてそれぞれ繰り返し生成され、
前記複数のスナップショットのうち基準となるスナップショットである基底スナップショットを前記記憶デバイスに保持させ、
前記基底スナップショットより後に生成された
差分スナップショットと
、当該
差分スナップショットの直前に生成されたスナップショットとの差分を示す差分データ
と、を前記他のストレージシステムに送信して保持させ
ることで当該差分スナップショットをスタブ化し、前記スタブ化された差分スナップショットのみから参照されていた差分データを前記記憶デバイスから削除し、
前記プロセッサは、前記記憶デバイスが保持していた前記基底スナップショット
及びそのデータと、前記他のストレージシステムから取得した前記
差分スナップショット及び差分データとを用いて、前記仮想ボリュームのリストアを行う
ことを特徴とするストレージシステム。
【請求項2】
前記プロセッサは、前記他のストレージシステムに転送した最新のスナップショットを前記記憶デバイスに保持させ、前記基底スナップショットと前記最新のスナップショットとの間に生成した他のスナップショットのデータを解放可能なデータとすることを特徴とする請求項1に記載のストレージシステム。
【請求項3】
前記プロセッサは、所定の条件が満たされた場合に、前記基底スナップショットを更新することを特徴とする請求項1に記載のストレージシステム。
【請求項4】
前記プロセッサは、前記異なるタイミングで生成された複数のスナップショットに対応する複数の差分データを前記他のストレージシステムから受信し、前記基底スナップショットを書き戻した前記仮想ボリュームに対して前記複数の差分データを時系列に沿って適用することで前記リストアを行うことを特徴とする請求項1に記載のストレージシステム。
【請求項5】
前記プロセッサは、前記異なるタイミングで生成された複数のスナップショットに対応する複数の差分データを統合した差分マージデータを前記他のストレージシステムから受信し、前記基底スナップショットを書き戻した前記仮想ボリュームに前記差分マージデータを反映させて前記リストアを行うことを特徴とする請求項1に記載のストレージシステム。
【請求項6】
前記プロセッサとして、前記仮想ボリュームに対する読み書きを処理する第1のプロセッサと、前記差分データの通信に係る処理を行う第2のプロセッサとを備えることを特徴とする請求項1に記載のストレージシステム。
【請求項7】
第一ストレージシステムと、
ネットワークを介して前記第一ストレージシステムに接続される第二ストレージシステムと、
を備え、
前記第一ストレージシステムは、
仮想ボリュームを提供し、
前記仮想ボリュームについて異なるタイミングで複数のスナップショットを生成し、
前記仮想ボリュームおよびスナップショットのデータを、記憶デバイスの記憶領域に対応付けられたプールボリュームに格納し、
前記仮想ボリュームおよびスナップショットに複数含まれる同一のデータについて、前記プールボリュームの同一の記憶領域を割り当てており、
前記スナップショットには、基準となるスナップショットである基底スナップショットと、他のスナップショットとの差分を示す差分スナップショットとが含まれており、前記基底スナップショットと前記差分スナップショットとは、所定の条件に基づいてそれぞれ繰り返し生成され、
前記複数のスナップショットのうち基準となるスナップショットである基底スナップショットを保持し、
前記基底スナップショットより後に生成された
差分スナップショットと
、当該
差分スナップショットの直前に生成されたスナップショットとの差分を示す差分データ
と、を前記第二ストレージシステムに送信して保持させ
ることで当該差分スナップショットをスタブ化し、前記スタブ化された差分スナップショットのみから参照されていた差分データを前記記憶デバイスから削除し、
前記第二ストレージシステムは、複数のスナップショットに対応する
複数の差分スナップショットと複数の差分データを保持し、
前記第一ストレージシステムは、前記第一ストレージシステムで保持していた前記基底スナップショット
及びそのデータと、前記第二ストレージシステムから取得した前記
差分スナップショット及び差分データとを用いて、前記仮想ボリュームのリストアを行う
ことを特徴とする計算機システム。
【請求項8】
前記第二ストレージシステムは、複数のスナップショットに対応する複数の差分データを保持し、前記仮想ボリュームのリストアを行う場合に、前記複数の差分データを前記第一ストレージシステムに送信し、
前記第一ストレージシステムは、前記基底スナップショットを前記仮想ボリュームに書き戻した後、前記第二ストレージシステムから受信した複数の差分データを時系列に沿って適用することで前記リストアを行うことを特徴とする請求項7に記載の計算機システム。
【請求項9】
前記第二ストレージシステムは、複数のスナップショットに対応する複数の差分データを保持し、前記仮想ボリュームのリストアを行う場合に、前記複数の差分データを統合した差分マージデータを前記第一ストレージシステムに送信し、
前記第一ストレージシステムは、前記基底スナップショットを前記仮想ボリュームに書き戻した後、前記差分マージデータを反映させて前記リストアを行うことを特徴とする請求項7に記載の計算機システム。
【請求項10】
ネットワークを介して第二ストレージシステムに接続される第一ストレージシステムの制御方法であって、
前記第一ストレージシステムが、仮想ボリュームを提供するステップと、
前記第一ストレージシステムが、前記仮想ボリュームについて異なるタイミングで、
基準となるスナップショットである基底スナップショット及び他のスナップショットとの差分を示す差分スナップショットを含む複数のスナップショットを
、所定の条件に基づいてそれぞれ繰り返し生成するステップと、
前記第一ストレージシステムが、前記仮想ボリュームおよびスナップショットのデータを、記憶デバイスの記憶領域に対応付けられたプールボリュームに格納し、前記仮想ボリュームおよびスナップショットに複数含まれる同一のデータについて、前記プールボリュームの同一の記憶領域を割り当てるステップと、
前記第一ストレージシステムが、前記複数のスナップショットのうち基準となるスナップショットである基底スナップショットを保持するステップと、
前記第一ストレージシステムが、前記基底スナップショットより後に生成された
差分スナップショットと
、当該
差分スナップショットの直前に生成されたスナップショットとの差分を示す差分データ
と、を前記第二ストレージシステムに送信
して保持させることで当該差分スナップショットをスタブ化し、前記スタブ化された差分スナップショットのみから参照されていた差分データを前記記憶デバイスから削除するステップと、
前記第二ストレージシステムが、複数のスナップショットに対応する
複数の差分スナップショットと複数の差分データを保持するステップと、
前記第一ストレージシステムが、前記第一ストレージシステムで保持していた前記基底スナップショット
及びそのデータと、前記第二ストレージシステムから取得した前記
差分スナップショット及び差分データとを用いて、前記仮想ボリュームのリストアを行うステップと
を含むことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージシステム、計算機システム及び制御方法に関する。
【背景技術】
【0002】
大規模なデータを扱う計算機システムは、ホスト計算機とは別個に設けられた大容量のストレージシステム(例えばクラウドストレージ)を用いてデータを管理している。クラウドストレージの活用形態の一つとして、顧客のデータセンタ(以後、オンプレミスと呼ぶ)に配置されているストレージがクラウドストレージへのデータの格納を制御するものがある。すなわち、ホスト計算機はクラウドストレージを意識しない。
【0003】
特許文献1には、「オンプレミスのストレージ装置の容量の節約と、オンプレミスのストレージ装置の高アクセス性能と、オンプレミスのリソースに障害があったとき、クラウド上のデータを用いて、高速かつ正確に業務を再開することとを実現する。」、「プロセッサは、仮想ボリュームである第一ボリュームを提供し、第一ボリュームと、他のストレージシステムにより提供される第二ボリュームとのコピーペアを設定する。第一ボリュームへのライトデータは、コピーペアに基づいて、ネットワークを介して第二ボリュームへ転送される。プロセッサは、第二ボリュームへ書き込まれるデータの一部をメモリへ書き込み、メモリへ書き込まれたデータを記憶デバイスへ書き込む。」との記載がある。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
オンプレミスのボリュームのスナップショットを、オンプレミスではなくクラウドストレージに保持させることとすれば、オンプレミスの容量の節約が実現できる。しかし、スナップショットをクラウドストレージにアップロードするにも、また、リストア時にスナップショットをクラウドストレージからダウンロードするにも、大量のデータ転送を行う必要が生じ、回線コストの増大とRTO(Recovery Time Objective)の悪化を招く。
【0006】
そこで、本発明では、ストレージシステム間のデータ転送量を削減することを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するために、代表的な本発明のストレージシステムの一つは、ネットワークを介して他のストレージシステムに接続されるストレージシステムであって、メモリと、前記メモリに記憶されるプログラムを実行するプロセッサと、記憶デバイスと、を備え、前記プログラムの実行により前記プロセッサは、仮想ボリュームを提供し、前記仮想ボリュームについて異なるタイミングで複数のスナップショットを生成し、前記複数のスナップショットのうち基準となるスナップショットである基底スナップショットを前記記憶デバイスに保持させ、前記基底スナップショットより後に生成されたスナップショットと当該スナップショットの直前に生成されたスナップショットとの差分を示す差分データを前記他のストレージシステムに送信して保持させることを特徴とする。
また、代表的な本発明の計算機システムの一つは、第一ストレージシステムと、ネットワークを介して前記第一ストレージシステムに接続される第二ストレージシステムと、を備え、前記第一ストレージシステムは、仮想ボリュームを提供し、前記仮想ボリュームについて異なるタイミングで複数のスナップショットを生成し、前記複数のスナップショットのうち基準となるスナップショットである基底スナップショットを保持し、前記基底スナップショットより後に生成されたスナップショットと当該スナップショットの直前に生成されたスナップショットとの差分を示す差分データを前記第二ストレージシステムに送信して保持させることを特徴とする。
また、代表的な本発明の制御方法の一つは、ネットワークを介して第二ストレージシステムに接続される第一ストレージシステムの制御方法であって、仮想ボリュームを提供するステップと、前記仮想ボリュームについて異なるタイミングで複数のスナップショットを生成するステップと、前記複数のスナップショットのうち基準となるスナップショットである基底スナップショットを第一ストレージシステムに保持させるステップと、前記基底スナップショットより後に生成されたスナップショットと当該スナップショットの直前に生成されたスナップショットとの差分を示す差分データを前記第二ストレージシステムに送信して保持させるステップとを含むことを特徴とする。
【発明の効果】
【0008】
本発明によれば、ストレージシステム間のデータ転送量を削減することができる。上記した以外の課題、構成及び効果は以下の実施の形態の説明により明らかにされる。
【図面の簡単な説明】
【0009】
【
図6】バックアップスケジュールの設定画面の説明図。
【
図10】仮想ボリュームマッピングテーブルの具体例。
【
図11】スナップショットマッピングテーブルの具体例。
【
図12】スナップショットペア管理テーブルの具体例。
【
図14】バックアップスケジュールプログラムの処理手順を示すフローチャート。
【
図15】スナップショット取得処理の処理手順を示すフローチャート。
【
図16】基底スナップショット更新処理の詳細を示すフローチャート。
【
図17】差分取得処理の詳細を示すフローチャート。
【
図18】差分データアップロード処理の詳細を示すフローチャート。
【
図19】スナップショット削除処理の詳細を示すフローチャート。
【
図20】スナップショットリストア処理の処理手順を示すフローチャート。
【
図21】差分データダウンロード処理の詳細を示すフローチャート。
【
図24】実施例2の差分データアップロード処理の詳細を示すフローチャート。
【
図25】実施例2に係るスナップショットリストア処理の処理手順を示すフローチャート。
【
図26】差分マージデータダウンロード処理の詳細を示すフローチャート。
【
図27】クラウドにおける差分データマージ処理の詳細を示すフローチャート。
【
図28】変形例に係るストレージシステムの構成図。
【
図29】変形例に係るメモリが記憶するデータの説明図。
【発明を実施するための形態】
【0010】
以下、実施例を図面を用いて説明する。
【0011】
以下の説明では、「×××テーブル」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「×××テーブル」を「×××情報」と呼ぶことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
【0012】
また、以下の説明では、要素の識別情報として、IDが使用されるが、それに代えて又は加えて他種の識別情報が使用されてもよい。
【0013】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号又は参照符号における共通番号を使用し、同種の要素を区別して説明する場合は、その要素の参照符号を使用又は参照符号に代えてその要素に割り振られたIDを使用することがある。
【0014】
また、以下の説明では、I/O(Input/Output)要求は、ライト要求又はリード要求であり、アクセス要求と呼ばれてもよい。
【0015】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又はインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理又はシステムとしてもよい。また、プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサ(例えばCPU)と記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムとを記憶してよい。そして、プログラム配布サーバのプロセッサが配布プログラムを実行することで、プログラム配布サーバのプロセッサは配布対象のプログラムを他の計算機に配布してよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
【実施例1】
【0016】
実施例1に開示する計算機システムは、第一ストレージシステムと第二ストレージシステムを有する。
第一ストレージシステムは、顧客のデータセンタに設置されたオンプレミスのストレージシステムであり、ホストコンピュータに対してボリュームを提供し、ホストコンピュータのアクセス要求を処理する。第一ストレージシステムがホストコンピュータに提供するボリュームを、プロダクションボリューム(Production Volume)という。プロダクションボリュームは、物理的な記憶デバイスを利用して生成された仮想ボリュームである。
第二ストレージシステムは、クラウドストレージであり、プロダクションボリュームのスナップショットを保持するために用いられる。
【0017】
プロダクションボリュームのスナップショットを定期的に生成する場合に、スナップショットに係るデータを全てオンプレミスで管理すると、オンプレミスの記憶デバイスに多くの容量が必要となる。一方、スナップショットに係るデータを全てクラウドで管理すると、オンプレミスとクラウドとの間で大量のデータ転送が必要となる。
【0018】
そこで、実施例1に係る計算機システムは、基準となる基底スナップショットをオンプレミスの記憶デバイスに保持させ、基底スナップショットより後に生成されたスナップショットと当該スナップショットの直前に生成されたスナップショットとの差分を示す差分データをクラウドストレージに転送して保持させる。このため、オンプレミスで要求される容量を抑えつつ、ストレージ間のデータ転送量を削減することができる。
【0019】
図1は、実施例1に係る差分転送の説明図である。
図1では、時刻t0から時刻t6に次の各処理が行われる。
時刻(t0)には、オンプレミスのストレージシステムが、プロダクションボリュームから基底スナップショットを取得し、オンプレミスで保持している。この基底スナップショットを、基底スナップショットSS(t0)とする。時刻t0では、プロダクションボリュームにはデータA0とデータB0が格納されており、基底スナップショットSS(t0)にはデータA0とデータB0が含まれる。
【0020】
時刻(t1)には、プロダクションボリュームのデータA0はデータA1に更新されている。この時点で、オンプレミスのストレージシステムがプロダクションボリュームからスナップショットSS(t1)を取得し、オンプレミスで保持する。したがって、オンプレミスには基底スナップショットSS(t0)とスナップショットSS(t1)が保持されており、スナップショットSS(t1)には、データA1とデータB0が含まれる。
【0021】
時刻(t2)には、プロダクションボリュームのデータA1はデータA2に更新されている。この時点で、オンプレミスのストレージシステムがプロダクションボリュームからスナップショットSS(S2)を取得し、オンプレミスで保持する。したがって、オンプレミスには基底スナップショットSS(t0)、スナップショットSS(t1)及びスナップショットSS(t2)が保持されており、スナップショットSS(t2)には、データA2とデータB0が含まれる。
【0022】
時刻(t3)には、プロダクションボリュームのデータB0はデータB1に更新されている。この時点で、オンプレミスのストレージシステムがプロダクションボリュームからスナップショットSS(S3)を取得し、オンプレミスで保持する。したがって、オンプレミスには基底スナップショットSS(t0)、スナップショットSS(t1)、スナップショットSS(t2)及びスナップショットSS(t3)が保持されており、スナップショットSS(t3)には、データA2とデータB1が含まれる。
【0023】
時刻(t4)において、オンプレミスのストレージシステムは、基底スナップショットSS(t0)とスナップショットSS(t1)との差分を取得し、オブジェクト(t1)としてクラウドに転送する。このため、オブジェクト(t1)には、データA1が含まれることになる。
【0024】
時刻(t5)において、オンプレミスのストレージシステムは、差分転送済みの最新のスナップショットSS(t1)とスナップショットSS(t2)との差分を取得し、オブジェクト(t2)としてクラウドに転送する。このため、オブジェクト(t2)には、データA2が含まれることになる。
【0025】
時刻(t6)において、オンプレミスのストレージシステムは、差分転送済みの最新のスナップショットSS(t2)と基底スナップショットSS(t0)を残し、スナップショットSS(t1)を削除する。スナップショットを削除する場合には、スナップショットに含まれていたデータA1を記憶デバイスから削除するが、スナップショットの履歴情報は残される。このように、実体としてのデータを持たず、履歴情報のみが残されたスナップショットを便宜上、スタブという。
【0026】
図2は、実施例1に係るリストアの説明図である。
図2では、時刻t10から時刻t16に次の各処理が行われる。
時刻(t10)には、プロダクションボリュームのデータに異常が発生している。具体的には、プロダクションボリュームがマルウェアに感染し、既存のデータが暗号化されてデータXとデータYに置き換えられている。
【0027】
時刻(t11)において、オンプレミスのストレージシステムは、プロダクションボリュームからスナップショットSS(t11)を取得し、オンプレミスで保持する。したがって、オンプレミスには基底スナップショットSS(t0)とスナップショットSS(t11)が保持されており、スナップショットSS(t1)には、データXとデータYが含まれる。
【0028】
時刻(t12)において、オンプレミスのストレージシステムは、プロダクションボリュームからマルウェアを駆除する。
時刻(t13)において、オンプレミスのストレージシステムは、基底スナップショットSS(t0)をプロダクションボリュームに書き戻す。この結果、プロダクションボリュームには、データA0とデータB0が含まれることになる。
【0029】
時刻(t14)において、オンプレミスのストレージシステムは、クラウドからオブジェクト(t1)の差分転送を受け、プロダクションボリュームに反映させる。この結果、プロダクションボリュームには、データA1とデータB0が含まれることになる。
【0030】
時刻(t15)において、オンプレミスのストレージシステムは、クラウドからオブジェクト(t2)の差分転送を受け、プロダクションボリュームに反映させる。この結果、プロダクションボリュームには、データA2とデータB0が含まれることになる。
【0031】
時刻(t16)において、オンプレミスのストレージシステムは、クラウドからオブジェクト(t3)の差分転送を受け、プロダクションボリュームに反映させる。この結果、プロダクションボリュームには、データA2とデータB1が含まれることになる。
【0032】
このように、オンプレミスで保持していた基底スナップショットを書き戻した後、複数の差分データを時系列に沿って適用することで、プロダクションボリュームのリストアを行うことができる。
【0033】
図3は、実施例1に係る計算機システムの構成図である。
本実施例の計算機システムは、オンプレミス100と、クラウド200とを含む。
オンプレミス100は、ストレージシステム103と、当該ストレージシステムにデータを保存するホストコンピュータ101とを含む。ホストコンピュータ101は、アプリケーション102を実行し、当該アプリケーション102で使用されるデータがストレージシステム103に格納される。ホストコンピュータ101とストレージシステム103はネットワーク111で接続されている。ストレージシステム103は、ストレージ装置と呼ばれることがある。
クラウド200は、1又は複数のオブジェクトストレージ201を提供する。
ストレージシステム300とオブジェクトストレージ201は、ネットワーク300を介して接続されている。
【0034】
ストレージシステム103は、物理記憶デバイスを用いて、仮想ボリューム104と容量プール107を形成する。容量プール107は、ストレージシステム103に搭載されているHDD(Hard Disk Drive)などの物理記憶デバイスに対応付けられ、物理的な容量を有する。
仮想ボリューム104は、ホストコンピュータ101からアクセス可能に提供される記憶領域である。ホストコンピュータ101は、仮想ボリューム104を、通常のボリュームと同等に扱うことができる。
【0035】
ストレージシステム103は、ホストコンピュータ101から仮想ボリューム104へのライト要求を受け付けた時、容量プール107から領域を確保し、ライト要求に示されたアドレスと関連付ける。ライトデータ自体は、容量プールに格納される。本実施例で、仮想ボリューム104にデータを格納するとは、仮想ボリューム104のデータとしてストレージシステム103内のキャッシュにデータを格納すること、または、仮想ボリューム104に対応する容量プール107にデータを格納することを意味する。なお、物理記憶デバイスを、記憶デバイスと呼ぶことがある。
【0036】
ストレージシステム103は、複数の物理記憶デバイスの物理記憶領域からプールボリューム108を作成する。容量プール107は、一つ以上のプールボリューム108を含む。プールボリューム108には、仮想ボリューム104への割当単位となる物理記憶領域であるページ109が含まれる。ページ109の容量は、例えば、数KB~数十MBである。
【0037】
仮想ボリューム104内の仮想記憶領域に対して、データの書き込みがあると、ストレージシステム103は、その仮想記憶領域に対して、プールボリューム108内のページ109を割当てる。すなわち、仮想ボリューム104の使用されていない領域については、ページ109が割り当てられていない。
【0038】
ストレージシステム103は、定期的にプロダクションボリュームである仮想ボリューム104のスナップショットを作成する。スナップショットのデータも、プールボリューム108に保持されている。
図3では、仮想ボリューム104はデータA2とデータB1を含み、基底スナップショットSS(t0)はデータA0とデータB0を含む。
また、スナップショットSS(t2)はデータA2とデータB0を含み、スナップショットSS(t3)はデータA2とデータB1を含む。
【0039】
ここで、仮想ボリューム104のデータA2と、スナップショットSS(t3)のデータA2とは、プールボリューム108における同一のページが割り当てられた状態である。このように、プールボリューム108や複数のスナップショットにおいて、同一のデータには同一のページが割り当てられるため、データの重複によりプールボリューム108の容量が消費されることはない。
【0040】
言い換えれば、ストレージシステム103は、スナップショットを生成した後、ライト要求により仮想ボリューム104のデータ更新が発生した場合には、更新先の仮想記憶領域に新たなページを割り当てることで、スナップショットのデータを保護しつつ、仮想ボリューム104のデータ更新を実現する。そして、スナップショットをスタブ化したならば、そのスナップショットにのみ使用されていたページは解放される。
【0041】
図4は、ストレージシステム103の構成図である。
ストレージシステム103は、1又は複数のコントローラ409と、1又は複数の物理記憶デバイス408とを有する。物理記憶デバイス408としては、SSD(Solid State Drive)など、任意のデバイスを用いることができる。
【0042】
コントローラ409は、フロントエンドIF402、外部転送用IF403、マネジメントIF404、プロセッサ405、メモリ406、バックエンドIF407を有し、これらをバス410で接続している。
【0043】
フロントエンドIF402は、ネットワーク111を介してホストコンピュータ101と接続するインタフェースである。
外部転送用IF403は、ネットワーク300を介してクラウド200と接続するインタフェースである。
マネジメントIF404は、ネットワーク401を介して管理用コンピュータ400と接続するインタフェースである。
バックエンドIF407は、ストレージシステム103内の物理記憶デバイス408と接続するインタフェースである。
【0044】
プロセッサ405は、メモリ406に記憶されるプログラムを実行することで各種機能を実現する。例えば、プロセッサ405は、ホストコンピュータ101に仮想ボリュームを提供する。また、プロセッサ405は、仮想ボリュームについて異なるタイミングで複数のスナップショットを生成し、複数のスナップショットのうち基準となるスナップショットである基底スナップショットを物理記憶デバイス408に保持させ、基底スナップショットと当該基底スナップショット以降に生成したスナップショットとの差分を示す差分データを他のストレージシステムであるクラウド200に送信して保持させる。
【0045】
図5は、メモリ406が記憶するデータの説明図である。
メモリ406は、例えば、1以上のメモリデバイスにより構成され、制御情報を記憶する制御情報部520と、プログラムを記憶するプログラム部530と、データをキャッシュするキャッシュメモリの一例としてのキャッシュ部540とを有する。なお、キャッシュ部540を、キャッシュやキャッシュメモリと呼ぶことがある。
【0046】
メモリ406の制御情報部520には、スケジュール情報テーブル500、プールテーブル501、仮想ボリュームマッピングテーブル502、スナップショットマッピングテーブル503、スナップショットペア管理テーブル504及び差分ビットマップ505が格納される。
【0047】
スケジュール情報テーブル500は、バックアップのスケジュール設定情報(スナップショットの取得周期や保護期間)を保持するテーブルである。
プールテーブル501は、プール内のページから仮想ボリュームまたはスナップショットの論理アドレスへのポインタ情報を保持するアドレスマッピングテーブルである。
仮想ボリュームマッピングテーブル502は、仮想ボリュームの論理アドレスからのプール内ページへのポインタ情報を保持するアドレスマッピングテーブルである。
スナップショットマッピングテーブル503は、スナップショットの論理アドレスからのプール内ページ、又はクラウドオブジェクトへのポインタ情報を保持するアドレスマッピングテーブルである。
スナップショットペア管理テーブル504は、ボリューム毎に1以上のスナップショットペアを管理するテーブルである。
差分ビットマップ505は、スナップショット毎に直前の世代との差分位置を管理するビットマップテーブルである。
【0048】
メモリ406のプログラム部530には、バックアップスケジュールプログラム506、スナップショット取得プログラム507、スナップショットリストアプログラム508、差分取得プログラム509、差分データアップロードプログラム510、差分データダウンロードプログラム511及びスナップショット削除プログラム512が格納されている。
【0049】
バックアップスケジュールプログラム506は、スケジュール設定情報に基づき、バックアップ処理及びスナップショット削除処理を実行するプログラムである。
スナップショット取得プログラム507は、スナップショットを取得するプログラムである。
スナップショットリストアプログラム508は、スナップショットからプロダクションボリュームへデータ復元(リストア)を実行するプログラムである。
差分取得プログラム509は、直前の世代のスナップショットとの差分位置を取得するプログラムである。
差分データアップロードプログラム510は、差分データ群をストレージ装置からクラウドオブジェクトストレージへアップロードするプログラムである。
差分データダウンロードプログラム511は、クラウドオブジェクトストレージから、差分データ群をストレージ装置へダウンロードするプログラムである。
スナップショット削除プログラム512は、スナップショットを削除するプログラムである。
【0050】
図6は、バックアップスケジュールの設定画面の説明図である。設定画面におけるボリュームID601は、バックアップスケジュールを設定する仮想ボリュームを特定する識別情報である。
初回スナップショット取得時刻602は、対象の仮想ボリュームについて、最初にスナップショットを取得する時刻を指定する入力欄である。
取得周期603は、スナップショットを取得する周期を指定する入力欄である。
保護期間604は、スナップショットの保護期間を指定する入力欄である。
クラウドバックアップ指定欄605は、クラウドストレージに差分データを転送するかを指定する入力欄である。クラウドバックアップ指定欄605を「Enable」に指定すれば、基底スナップショットより後に生成されたスナップショットと当該スナップショットの直前に生成されたスナップショットとの差分をクラウドに転送して保持させることができる。クラウドバックアップ指定欄605を「Disable」に指定すれば、スナップショットはすべてストレージシステム103で保持される。
【0051】
クラウドバックアップ指定欄605を「Enable」に指定した場合には、装置内スナップショット保持数指定欄606と基底スナップショット作成閾値指定欄607に対する入力が可能になる。
装置内スナップショット保持数指定欄606は、基底スナップショット以外にどれだけのスナップショットをストレージシステム103に保持するかを指定する入力欄であり、スナップショットが指定された数を超えた場合に、古いスナップショットからクラウドに転送する。
基底スナップショット作成閾値指定欄607は、基底スナップショットを更新する条件を指定する入力欄であり、基底スナップショットとの差分データの合計がこの閾値を超えた場合に、基底スナップショットの更新を行う。
【0052】
なお、クラウドバックアップ「Enable」でも取得周期と保護期間によっては、装置内スナップショット保持数に到達せずに保護期間が経過し、装置内で削除される、すなわちクラウドバックアップが動作しないケースがある。
例えば、取得周期120分、保護期間24時間であれば、クラウドバックアップせずに装置内スナップショット12個で運用可能である。
【0053】
また、基底スナップショット作成閾値によっては、装置内スナップショット保持数に到達していないにもかかわらず、基底スナップショットの更新によって、装置内から古いスナップショットが削除されるケースがある。
【0054】
図7は、リストア実行画面の説明図である。リストアの実行画面におけるボリュームID701は、リストアする仮想ボリュームを特定する識別情報である。
選択欄702は、リスト表示されたスナップショットのうち、どのスナップショットの状態にリストアするかを指定するチェックボックスである。
スナップショットID703は、スナップショットの識別情報であり、取得時刻704は当該スナップショットを取得した時刻を示す。
属性705は、当該スナップショットの属性を示し、「基底」、「クラウド」、「通常」などの値を取る。属性705が「基底」であれば、当該スナップショットは基底スナップショットである。属性705が「クラウド」であれば、当該スナップショットはクラウドに転送済みである。属性705が「通常」であれば、当該スナップショットはクラウドに転送されておらず、オンプレミスに全てのデータが存在する。
【0055】
図8は、スケジュール情報テーブル500の具体例である。スケジュール情報テーブル500は、各仮想ボリュームついてバックアップスケジュールを管理するテーブルであり、ボリュームID800、初回スナップショット取得時刻801、取得周期802、保護期間803、クラウドバックアップ804、装置内スナップショット保持数805及び基底スナップショット作成閾値806の項目を有する。これらの項目は、
図6に示した設定画面で入力された値を保持する。
【0056】
図9は、プールテーブル501の具体例である。プールテーブル501は、ページナンバー900、プールボリュームID901、スタートアドレス902、ステータス903、割当先仮想ボリュームID/スナップショットID904、割当先アドレス905の項目を有する。
これらのうち、ステータス903は、割当済(Allocated)であるか、未割当(Free)であるかを示す。そして、割当済である場合に割当先仮想ボリュームID/スナップショットID904及び割当先アドレス905により、割当先が特定される。なお、割当先は、仮想ボリュームの場合もスナップショットの場合もある。
【0057】
図10は、仮想ボリュームマッピングテーブル502の具体例である。仮想ボリュームマッピングテーブル502は、仮想ボリュームID1000、スタートアドレス1001、ステータス1002、参照先アドレス1003の項目を有する。
ステータス1002は、割当済(Allocated)である未割当(Free)であるかを示す。
参照先アドレス1003は、ステータス1002が割当済である場合に、プールページナンバーによって特定される。
【0058】
図11は、スナップショットマッピングテーブル503の具体例である。スナップショットマッピングテーブル503は、スナップショットID1100、スタートアドレス1101、ステータス1102及び参照先アドレス1103の項目を有する。
ステータス1102は、割当済(Allocated)である未割当(Free)であるかを示す。
参照先アドレス1103は、ステータス1102が割当済である場合に、プールページナンバー又はクラウドオブジェクトによって特定される。
【0059】
図12は、スナップショットペア管理テーブル504の具体例である。スナップショットペア管理テーブル504は、ボリュームID1200、スナップショットID1201、スナップショット取得時刻1202及び属性1203の項目を有する。
図12では、ボリュームID「0」の仮想ボリュームについて、時刻「t0」~時刻「t5」のスナップショットが取得された状態を示している。
時刻「t0」に取得されたスナップショットID「0」の属性は「基底」である。
時刻「t1」に取得されたスナップショットID「1」の属性は「クラウド」である。
時刻「t2」に取得されたスナップショットID「2」の属性は「クラウド」である。
時刻「t3」に取得されたスナップショットID「3」の属性は「クラウド」である。
時刻「t4」に取得されたスナップショットID「4」の属性は「通常」である。
時刻「t5」に取得されたスナップショットID「5」の属性は「通常」である。
【0060】
図13は、差分ビットマップ505の具体例である。差分ビットマップ505は、スナップショットID1300、スタートアドレス1301及び差分ビット1302の項目を有する。
差分ビット1302は、「1」で直前に取得されたスナップショットとの差分があることを示し、「0」で直前に取得されたスナップショットとの差分がないことを示す。
【0061】
図14は、バックアップスケジュールプログラムの処理手順を示すフローチャートである。バックアップスケジュールプログラム506は、まず、スケジュール情報テーブル500を参照し(ステップ1400)、現在時刻がスナップショット取得時刻を超過しているかを判定する(ステップ1401)。
【0062】
現在時刻がスナップショット取得時刻を超過しているならば(ステップ1401;Yes)、スナップショット取得処理を開始させる(ステップ1402)。スナップショット取得処理の後、もしくは現在時刻がスナップショット取得時刻を超過していない場合(ステップ1401;No)、バックアップスケジュールプログラム506は、クラウドバックアップが「Enable」であるか否かを判定する(ステップ1403)。
【0063】
クラウドバックアップが「Enable」ならば(ステップ1403;Yes)、基底スナップショット更新処理を開始させる(ステップ1404)。基底スナップショット更新処理の後、バックアップスケジュールプログラム506は、装置内のスナップショット数が装置内保持スナップショット数を超過しているか否かを判定する(ステップ1405)。
【0064】
装置内のスナップショット数が装置内保持スナップショット数を超過しているならば(ステップ1405;Yes)、バックアップスケジュールプログラム506は、超過分のスナップショットを全てアップロード済みであるか否かを判定する(ステップ1406)。
【0065】
超過分のスナップショットを全てアップロード済みでなければ(ステップ1406;No)、差分データアップロード処理を開始する(ステップ1407)。ステップ1407の後、ステップ1406に戻る。
【0066】
クライドバックアップ「Disable」の場合(ステップ1403;No)、装置内のスナップショット数が装置内保持スナップショット数以下である場合(ステップ1405;No)、超過分のスナップショットを全てアップロード済みである場合(ステップ1406;Yes)、ステップ1408に移行する。
【0067】
ステップ1408では、バックアップスケジュールプログラム506は、スナップショットペア管理テーブル504を参照する。そして、基底スナップショットより古い、もしくは保護期間超過(現在時刻-取得時間 ≧ 保護期間)のスナップショットがあるか否かを判定する(ステップ1409)。判定の結果、該当するスナップショットが無ければ(ステップ1409;No)、処理を終了する。一方、該当するスナップショットがあるならば(ステップ1409;Yes)、スナップショット削除処理を実行し(ステップ1410)、ステップ1408に戻る。
【0068】
図15は、スナップショット取得処理の処理手順を示すフローチャートである。スナップショット取得プログラム507は、スナップショット取得処理が開始されると、指定ボリュームにキャッシュダーティデータがあるか否かを判定する(ステップ1500)。
【0069】
指定ボリュームにキャッシュダーティデータがあるならば(ステップ1500;Yes)、スナップショット取得プログラム507は、ページを割り当ててプールテーブルを更新し(ステップ1501)、指定ボリュームのキャッシュダーティデータのデステージを行い(ステップ1502)、仮想ボリュームマッピングテーブルを更新する(ステップ1503)。
【0070】
ステップ1503の後、若しくは指定ボリュームにキャッシュダーティデータが無い場合(ステップ1500;No)、スナップショット取得プログラム507は、対象ボリュームの仮想ボリュームマッピングテーブル502をスナップショットマッピングテーブル503にコピーする(ステップ1504)。その後、スナップショットペア管理テーブル504を更新して(ステップ1505)、処理を終了する。
【0071】
図16は、基底スナップショット更新処理の詳細を示すフローチャートである。バックアップスケジュールプログラム506は、基底スナップショット更新処理が開始されると、直前に取得したスナップショットが初回のスナップショットであったか否かを判定する(ステップ1601)。
【0072】
直前に取得したスナップショットが初回のスナップショットでない場合(ステップ1601;No)、スナップショット取得プログラム507は、差分量合計をゼロに初期化する(ステップ1602)。
【0073】
ステップ1602の後、スナップショット取得プログラム507は、最新の基底スナップショットより新しい全てのスナップショットについて差分取得処理が済んでいるかを判定する(ステップ1603)。最新の基底スナップショットより新しい全てのスナップショットについて差分取得処理が済んでいるならば(ステップ1603;Yes)、そのまま処理を終了する。一方、未処理のスナップショットが残っていれば(ステップ1603;No)、差分取得処理を実行し(ステップ1604)、差分値合計に差分量を加算する(ステップ1605)。ステップ1605の後、ステップ1603に戻る。
【0074】
ステップ1605の後、バックアップスケジュールプログラム506は、差分量合計が基底スナップショット作成閾値以上であるか否かを判定する(ステップ1606)。判定の結果、差分量合計が基底スナップショット作成閾値に満たない場合には(ステップ1606;No)、ステップS1603に戻る。
【0075】
差分量合計が基底スナップショット作成閾値以上である場合(ステップ1606;Yes)、もしくは直前に取得したスナップショットが初回スナップショットである場合(ステップ1601;Yes)、バックアップスケジュールプログラム506は、スナップショットペア管理テーブル504を更新して基底スナップショットを設定し(ステップ1607)、処理を終了する。
【0076】
図17は、差分取得処理の詳細を示すフローチャートである。差分取得プログラム509は、差分取得処理が開始されると、スナップショットマッピングテーブル503を用い、対象スナップショットと一世代前のスナップショットの同一論理アドレスの参照先アドレスを比較する(ステップ1700)。
【0077】
比較の結果、参照先アドレスが異なるならば(ステップ1701;Yes)、差分取得プログラム509は、差分ビットマップ505の対象論理アドレスの差分ビットを「1」に更新する(ステップ1702)。
【0078】
ステップ1702の後、若しくは参照先アドレスが同一である場合(ステップ1701;No)、差分取得プログラム509は、全ての論理アドレスについて比較が完了したか否かを判定する(ステップ1703)。
【0079】
比較が完了していない論理アドレスが残っているならば(ステップ1703;No)、ステップ1700に戻る。全ての論理アドレスについて比較が完了したならば(ステップ1703;Yes)。差分取得プログラム509は、差分量を算出して(ステップ1704)、処理を終了する。差分量の算出は差分ビットマップの差分ビットが1になった数を用いて行えばよい。
【0080】
図18は、差分データアップロード処理の詳細を示すフローチャートである。差分データアップロードプログラム510は、差分データアップロード処理が開始されると、アップロード対象のスナップショットを特定する(ステップ1800)。なお、アップロード対象のスナップショットが複数存在するならば、古いものから特定する。
【0081】
ステップ1800の後、差分データアップロードプログラム510は、差分ビットが「1」のアドレスの全データを転送バッファにリードする(ステップ1801)。そして、転送バッファのデータをクラウドにアップロードし(ステップ1802)、スナップショットマッピングテーブル503の参照先アドレスをアップロード先に更新し(ステップ1803)、処理を終了する。参照先アドレスをアップロード先へ更新した結果、全てのスナップショットから参照されなくなったデータは、オンプレミスで使用されることのない無効化されたデータとなる。このように無効化されたデータは解放可能であり、解放によりオンプレミスの容量が節約できる。
【0082】
図19は、スナップショット削除処理の詳細を示すフローチャートである。スナップショット削除プログラム512は、スナップショット削除処理が開始されると、スナップショットペア管理テーブル504を更新し、削除対象のスナップショットのエントリを削除する(ステップ1900)。
【0083】
ステップ1900の後、スナップショット取得プログラム507は、差分ビットマップを削除し(ステップ1901)、指定スナップショットの属性がクラウドであるか否かを判定する(ステップ1902)。
【0084】
指定スナップショットの属性がクラウドであるならば(ステップ1902;Yes)、当該スナップショットのアップロード先オブジェクトを削除して(ステップ1904)、処理を終了する。
【0085】
指定スナップショットの属性がクラウドでなければ(ステップ1902:No)、スナップショット削除プログラム512は、対応するスナップショットマッピングテーブル503を削除して(ステップS1903)、処理を終了する。
【0086】
図20は、スナップショットリストア処理の処理手順を示すフローチャートである。スナップショットリストアプログラム508は、まず、リストア先ボリュームのキャッシュ領域をパージする(ステップ2000)。その後、スナップショットペア管理テーブル504を参照し、リストア元スナップショットの属性がクラウドであるか否かを判定する(ステップ2001)。
【0087】
リストア元スナップショットの属性がクラウドでなければ(ステップ2001;No)、リストア元スナップショットのマッピングテーブルをリストア先ボリュームのマッピングテーブルにコピーする書き戻しを行って(ステップ2007)、処理を終了する。
【0088】
リストア元スナップショットの属性がクラウドであるならば(ステップ2001;Yes)、スナップショットリストアプログラム508は、基底スナップショットについてスナップショットリストア処理を実行する(ステップ2002)。基底スナップショットについてステップ2000とステップ2001を実行すると、ステップ2001の判定結果はNoとなるため、ステップ2007を行って終了することになる。
【0089】
基底スナップショットについてのリストア処理(ステップ2002)を終えた後、スナップショットリストアプログラム508は、スナップショットペア管理テーブル504を参照して、前回のリストアより1世代新しいクラウド属性スナップショットを特定する(ステップ2003)。
【0090】
スナップショットリストアプログラム508は、特定したクラウド属性スナップショットについて差分データダウンロード処理を実行し(ステップ2004)、前回ダウンロード済のクラウド属性スナップショットは今回のリストア対象であるか否かを判定する(ステップ2005)。
【0091】
前回ダウンロード済のクラウド属性スナップショットが今回のリストア対象でない場合(ステップ2005;No)、すなわち、今回リストアすべきスナップショットまで到達していない場合、ステップ2003に戻り、次の世代のクラウド属性スナップショットを特定する。
【0092】
前回ダウンロード済のクラウド属性スナップショットが今回のリストア対象である場合(ステップ2005;Yes)、すなわち、今回リストアすべきスナップショットまで到達した場合、スナップショットリストアプログラム508は、リストア用テンポラリマッピングテーブルの参照先アドレスが有効なエントリのみをリストア先ボリュームのマッピングテーブルにコピーすることで反映し(ステップ2006)、スナップリストア処理を終了する。
【0093】
図21は、差分データダウンロード処理の詳細を示すフローチャートである。差分データダウンロードプログラム511は、差分データダウンロード処理が開始されると、スナップショットマッピングテーブル503から対象のクラウド属性のスナップショットを特定する(ステップ2100)。そして、クラウドへダウンロード要求し、受信バッファに差分データを受信する(ステップ2101)。
【0094】
ステップ2101の後、差分データダウンロードプログラム511は、対象スナップショットの差分ビットマップを参照し、未処理でビットオン(差分ビット「1」)のアドレスがあるか否かを判定する(ステップ2102)。
【0095】
未処理でビットオンのアドレスがあるならば(ステップ2102;Yes)、差分データダウンロードプログラム511は、受信バッファのデータをページ単位に分割し、デステージする(ステップ2103)。その後、差分データダウンロードプログラム511は、リストア用テンポラリマッピングテーブルを更新することで、差分ビットオンの論理アドレスをデステージ先アドレスに更新し(ステップ2104)、ステップ2102に戻る。
未処理でビットオンのアドレスが無ければ(ステップ2102;No)、処理を終了する。
【実施例2】
【0096】
実施例1では、オンプレミスのストレージシステムが、クラウドに保持させた複数の差分データを取得し、オンプレミスで時系列に沿って適用してリストアを行う構成について説明を行った。本実施例2では、クラウドのストレージシステムが複数の差分データを統合して差分マージデータを生成し、オンプレミスのストレージシステムが差分マージデータを取得して適用する構成について説明する。
【0097】
図22は、実施例2に係る計算機システムの構成図である。
本実施例の計算機システムは、仮想ストレージで構成されたリカバリーボリューム202を有する点が実施例1と異なる。
本実施例では、クラウド200のオブジェクトストレージ201が格納する複数の差分データは、リカバリーボリューム202上で統合され、その結果得られた差分マージデータがオンプレミスのストレージシステム103に送信される。
その他の構成及び動作については実施例1と同様であるので、同一の構成要素には同一の符号を付して説明を省略する。
【0098】
図23は、実施例2に係るリストアの説明図である。時刻(t10)から時刻(t13)までの処理については、実施例1と同様であるので説明を省略する。
【0099】
実施例2の時刻(t14)では、クラウドにおいて、オブジェクトを統合するマージ処理を行う。この結果、クラウドのリカバリーボリュームには、データA2とデータB1が含まれることになる。
【0100】
時刻(t15)において、オンプレミスのストレージシステムは、統合により得られた差分マージデータの差分転送を受け、プロダクションボリュームに反映させる。この結果、プロダクションボリュームには、データA2とデータB1が含まれることになる。
【0101】
このように、オンプレミスで保持していた基底スナップショットを書き戻した後、クラウドで統合された差分マージデータを適用することで、プロダクションボリュームのリストアを行うことができる。
【0102】
実施例1の
図2と比較すると、データA1からデータA2への変更がクラウドで反映されてからオンプレミスに送られているため、クラウドからオンプレミスにデータA1を送らない分転送量が抑えられることになる。
【0103】
図24は、実施例2の差分データアップロード処理の詳細を示すフローチャートである。差分データアップロードプログラム510は、差分データアップロード処理が開始されると、アップロード対象のスナップショットを特定する(ステップ2400)。なお、アップロード対象のスナップショットが複数存在するならば、古いものから特定する。
【0104】
ステップ2400の後、差分データアップロードプログラム510は、差分ビットが「1」のアドレスの全データを転送バッファにリードする(ステップ2401)。そして、転送バッファのデータをクラウドにアップロードし(ステップ2402)、対象スナップショットの差分ビットマップ505をクラウドにアップロードする(ステップ2403)。クラウドで差分データのマージをする際に必要となるからである。その後、差分データアップロードプログラム510は、スナップショットマッピングテーブル503の参照先アドレスをアップロード先に更新し(ステップ2404)、処理を終了する。
【0105】
図25は、実施例2に係るスナップショットリストア処理の処理手順を示すフローチャートである。
図25は、
図20に示したステップ2003~ステップ2005に代えて、ステップ2500の差分マージデータダウンロード処理を行う。その他の処理は、
図20と同様である。
具体的には、ステップ2500~ステップ2501がステップ2000~ステップ2001に対応し、ステップ2505がステップ2007に対応し、ステップ2504がステップ2006に対応する。
【0106】
図26は、差分マージデータダウンロード処理の詳細を示すフローチャートである。差分データダウンロードプログラム511は、差分マージデータダウンロード処理が開始されると、スナップショットマッピングテーブル503から対象のクラウド属性のスナップショットを特定し(ステップ2600)、クラウドへダウンロード要求する(ステップ2601)。クラウドでは、後述する差分データマージ処理を実行し、差分マージデータをオンプレミスに送信する。
【0107】
差分データダウンロードプログラム511は、受信バッファに差分マージデータを受信し(ステップ2602)、差分ビットマップをマージする(ステップ2603)。差分ビットマップのマージでは、リストアに必要な差分ビットマップ群に対して、ビットの論理和を取る処理が行われる。
【0108】
ステップ2603の後、差分データダウンロードプログラム511は、対象スナップショットの差分ビットマップを参照し、未処理でビットオン(差分ビット「1」)のアドレスがあるか否かを判定する(ステップ2604)。
【0109】
未処理でビットオンのアドレスがあるならば(ステップ2604;Yes)、差分データダウンロードプログラム511は、受信バッファのデータをページ単位に分割し、デステージする(ステップ2605)。その後、差分データダウンロードプログラム511は、リストア用テンポラリマッピングテーブルを更新することで、差分ビットオンの論理アドレスをデステージ先アドレスに更新し(ステップ2606)、ステップ2604に戻る。
未処理でビットオンのアドレスが無ければ(ステップ2604;No)、処理を終了する。
【0110】
図27は、クラウドにおける差分データマージ処理の詳細を示すフローチャートである。クラウドの仮想ストレージシステムは、オンプレミスからダウンロード要求を受信し(ステップ2700)、リカバリー用のボリュームを作成する(ステップ2701)。
【0111】
ステップ2701の後、仮想ストレージシステムは、リストアに必要な差分データオブジェクト群を古い方から選択する(ステップ2702)。仮想ストレージシステムは、差分ビットマップを参照し、差分ビットオンのアドレスの差分データをリカバリーボリュームの同一アドレスに転送して(ステップ2703)、リカバリーボリュームのマッピングテーブルを更新する(ステップ2704)。
【0112】
ステップ2704の後、仮想ストレージシステムは、リストア対象の差分データオブジェクトであるか否か、すなわち、今回リストアすべきスナップショットまで到達しているか否かを判定する(ステップ2705)。
【0113】
リストア対象の差分データオブジェクトでない場合(ステップ2705;No)、ステップ2702に戻る。
リストア対象の差分データオブジェクトである場合(ステップ2705;Yes)、仮想ストレージシステムは、リカバリーボリュームのマッピングテーブルを参照し、参照先アドレスが有効なデータを転送用バッファにリードする(ステップ2706)。そして、転送用バッファにリードしたデータを差分マージデータとして転送し(ステップ2707)、処理を終了する。
【0114】
次に、システム構成の変形例について説明する。
図28は、変形例に係るストレージシステム103の構成図である。
図28に示した構成では、外部転送用IF403に代えて、スマートNIC(Network Interface Controller )411を設けている点が
図4と異なる。
【0115】
スマートNIC411は、その内部にポート412、プロセッサ413及びメモリ414を有している。
メモリ414は、
図29に示すように、差分取得プログラム2900、差分データアップロードプログラム2901及び差分データダウンロードプログラム2902を記憶する。
プロセッサ413はこれらのプログラムを実行することで、差分データの通信に係る処理を行う。このため、プロセッサ405は、差分データの通信に係る処理を行う必要がなく、仮想ボリュームに対する読み書きを処理すればよい。
その他の構成及び動作については
図4と同様であるので、同一の構成要素に同一の符号を付して説明を省略する。
【0116】
上述してきたように、開示のストレージシステム103は、ネットワークを介して他のストレージシステムであるクラウド200に接続されるストレージシステムであって、メモリ406(又は414)と、前記メモリに記憶されるプログラムを実行するプロセッサ405(又は413)と、記憶デバイスとしての物理記憶デバイス408と、を備え、前記プログラムの実行により前記プロセッサは、仮想ボリューム104を提供し、前記仮想ボリューム104について異なるタイミングで複数のスナップショットを生成し、前記複数のスナップショットのうち基準となるスナップショットである基底スナップショットを前記記憶デバイスに保持させ、前記基底スナップショットより後に生成されたスナップショットと当該スナップショットの直前に生成されたスナップショットとの差分を示す差分データを前記他のストレージシステムに送信して保持させる。
かかる構成及び動作により、ストレージシステム103は、ストレージシステム間のデータ転送量を削減することができる。
【0117】
また、前記プロセッサは、前記仮想ボリュームのリストアを行う場合に、前記基底スナップショットを前記仮想ボリュームに書き戻した後、前記他のストレージシステムから取得した前記差分データを前記仮想ボリュームに反映する処理を行う。
このため、リストア時にも差分データのみを転送すればよく、転送量を削減できる。
【0118】
また、前記プロセッサは、前記他のストレージシステムに転送した最新のスナップショットを前記記憶デバイスに保持させ、前記基底スナップショットと前記最新のスナップショットとの間に生成した他のスナップショットのデータを無効化する。
このため、オンプレミスの容量を抑えることができる。
【0119】
また、前記プロセッサは、所定の条件が満たされた場合に、前記基底スナップショットを更新する。
このため、差分データの蓄積によるオンプレミスのデータ量増大を抑えることができる。
【0120】
また、実施例1に開示したように、前記プロセッサは、前記異なるタイミングで生成された複数のスナップショットに対応する複数の差分データを、時系列に沿って適用することで前記リストアを行うことができる。
【0121】
また、実施例2に開示したように、前記プロセッサは、前記異なるタイミングで生成された複数のスナップショットに対応する複数の差分データを統合した差分マージデータを前記他のストレージシステムから受信し、前記基底スナップショットを書き戻した前記仮想ボリュームに前記差分マージデータを反映させて前記リストアを行うことができる。
【0122】
また、変形例に開示したように、前記プロセッサとして、前記仮想ボリュームに対する読み書きを処理する第1のプロセッサと、前記差分データの通信に係る処理を行う第2のプロセッサとを備えることで、プロセッサの負荷を分散してもよい。
【0123】
なお、本発明は上記の実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、かかる構成の削除に限らず、構成の置き換えや追加も可能である。
【符号の説明】
【0124】
100:オンプレミス、101:ホストコンピュータ、102:アプリケーション、103:ストレージシステム、104:仮想ボリューム、107:容量プール、108:プールボリューム、109:ページ、111:ネットワーク、120:取得周期、200:クラウド、201:オブジェクトストレージ、202:リカバリーボリューム、300:ネットワーク、400:管理用コンピュータ、401:ネットワーク、405:プロセッサ、406:メモリ、408:物理記憶デバイス、409:コントローラ、410:バス、412:ポート、413:プロセッサ、414:メモリ、500:スケジュール情報テーブル、501:プールテーブル、502:仮想ボリュームマッピングテーブル、503:スナップショットマッピングテーブル、504:スナップショットペア管理テーブル、505:差分ビットマップ、506:バックアップスケジュールプログラム、507:スナップショット取得プログラム、508:スナップショットリストアプログラム、509:差分取得プログラム、510:差分データアップロードプログラム、511:差分データダウンロードプログラム、520:制御情報部、530:プログラム部、540:キャッシュ部、602:初回スナップショット取得時刻、603:取得周期、604:保護期間、2900:差分取得プログラム、2901:差分データアップロードプログラム、2902:差分データダウンロードプログラム