(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-17
(45)【発行日】2023-11-28
(54)【発明の名称】バックアップシステム及び方法
(51)【国際特許分類】
G06F 3/06 20060101AFI20231120BHJP
G06F 16/174 20190101ALI20231120BHJP
【FI】
G06F3/06 301W
G06F16/174
G06F3/06 301X
(21)【出願番号】P 2021115305
(22)【出願日】2021-07-12
【審査請求日】2021-12-24
【前置審査】
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】出口 彰
(72)【発明者】
【氏名】松上 一樹
【審査官】松平 英
(56)【参考文献】
【文献】特表2016-524220(JP,A)
【文献】国際公開第2017/109822(WO,A1)
【文献】特開2020-112972(JP,A)
【文献】米国特許第09298723(US,B1)
【文献】特開2006-338461(JP,A)
【文献】特表2015-525419(JP,A)
【文献】特開2017-146918(JP,A)
【文献】特開2017-146919(JP,A)
【文献】米国特許第08825626(US,B1)
【文献】米国特許出願公開第2014/0188822(US,A1)
【文献】米国特許出願公開第2012/0290546(US,A1)
【文献】米国特許出願公開第2013/0103945(US,A1)
【文献】米国特許第09336092(US,B1)
【文献】米国特許出願公開第2018/0218005(US,A1)
【文献】米国特許出願公開第2015/0046398(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06-3/08
12/00-12/128
13/16-13/18
16/00-16/958
(57)【特許請求の範囲】
【請求項1】
バックアップ先のストレージシステムと
ネットワークを介して通信し正ボリュームと第1の記憶装置とを有するバックアップ元のストレージシステムを少なくとも含んだバックアップシステムであって、
前記バックアップ先のストレージシステムが、前記正ボリュームとボリュームペアを構成する副ボリュームと、前記副ボリュームを通じてデータが書き込まれる第2の記憶装置とを有し、
前記バックアップ元のストレージシステムが、
前記バックアップ先のストレージシステムに転送したデータのパターンを前記バックアップ元のストレージシステムに登録するようになっており、前記バックアップ元のストレージシステムにおける登録済みパターン毎に、登録済みパターンの識別情報を管理し、
(A)前記バックアップ元のストレージシステムが、前記バックアップ先のストレージシステムへの転送対象のデータを、パターンとして抽出し、
(B)前記バックアップ元のストレージシステムが、前記転送対象のデータの前記バックアップ元のストレージシステムでの格納先領域の論理アドレスに関わらず、前記転送対象のデータに関し前記抽出されたパターンが前記バックアップ元のストレージシステムに登録済み
か否かを判定することにより、前記抽出されたパターンと同じパターンのデータを前記バックアップ先のストレージシステムに転送したことがあるか否か判定し、
(C)(B)の判定結果が偽の場合、前記バックアップ元のストレージシステムが、前記抽出されたパターンを前記バックアップ元のストレージシステムに登録し、前記転送対象のデータを前記バックアップ先のストレージシステムに転送し、前記バックアップ先のストレージシステムが、当該転送された転送対象のデータを受信し、当該受信したデータを前記副ボリュームに格納し、当該受信したデータを前記パターンとして前記バックアップ先のストレージシステムに登録し、当該パターンとしてのデータの格納先領域と当該パターンの登録先領域とを対応付け、
(D)(B)の判定結果が真の場合、前記バックアップ元のストレージシステムが、前記転送対象のデータを転送せず、(B)の判定結果が真である登録済みパターンの識別情報を、前記バックアップ先のストレージシステムに転送
し、前記バックアップ先のストレージシステムが、当該転送された登録済みパターンの識別情報を受信し、前記バックアップ先のストレージシステムに登録されたパターンのうち、当該受信した登録済みパターンの識別情報に対応したパターンを読み出し、当該読み出したパターンとしてのデータを前記副ボリュームの格納先領域に格納する、
バックアップシステム。
【請求項2】
前記バックアップ元のストレージシステムが、パターンの登録先とされる論理記憶領域を有し、
(C)において、前記抽出されたパターンの登録とは、前記論理記憶領域における、前記抽出されたパターンの登録先の論理領域を、前記第1の記憶装置における、前記転送対象のデータが存在する物理領域に関連付けることであり、
前記論理記憶領域における登録済みパターンは、当該パターンの登録先の論理領域に関連付けられている物理領域に存在するデータである、
請求項1に記載のバックアップシステム。
【請求項3】
前記バックアップ元のストレージシステムが、前記正ボリュームを構成するそれぞれ所定サイズの複数の論理領域のうち同一データが書き込まれる二つ以上の論理領域を当該データが書き込まれる一つの物理領域に関連付ける重複排除を行うようになっており、
前記転送対象のデータのアドレスと論理領域のアドレスとのアライメントを揃え、論理領域のサイズ毎に、データをパターンとして抽出する、
請求項2に記載のバックアップシステム。
【請求項4】
前記バックアップ元のストレージシステムが、パターンに関する管理情報であるパターン管理情報を記憶し、
前記パターン管理情報は、前記論理記憶領域における登録済みパターン毎に、当該パターンの登録先の論理領域のアドレスと、当該登録済みパターンとしてのデータが前記バックアップ先のストレージシステムに存在するか否かである有効か無効かを表し、
(B)の判定は、前記抽出されたパターンがいずれかの登録済みパターンに適合するか否かの判定と、前記抽出されたパターンに適合した登録済みパターンが有効か否かの判定である、
請求項2に記載のバックアップシステム。
【請求項5】
(C)において、前記抽出されたパターンの登録とは、前記抽出されたパターンの登録先の論理領域を、前記第1の記憶装置における、前記転送対象のデータが存在する物理領域に関連付けることであり、
(A)において、前記バックアップ元のストレージシステムが、前記転送対象のデータの重複数が所定の閾値よりも高い場合に、当該転送対象のデータをパターンとして抽出し、
前記バックアップ元のストレージシステムは、前記バックアップ元のストレージシステムにおける異なる二つ以上の論理領域をそれぞれ書込み先としたデータが重複している場合に当該二つ以上の論理領域を当該データが存在する物理領域に関連付ける重複排除を行うようになっており、
前記転送対象のデータの重複数は、当該データが存在する物理領域に関連付けられている、論理領域の数である、
請求項1に記載のバックアップシステム。
【請求項6】
前記第1の記憶装置における、前記転送対象のデータが存在する物理領域に、それぞれが当該データの書込み先又は当該データのパターンの登録先である一つ以上の論理領域が関連付けられ、
前記バックアップ元のストレージシステムが、登録済みパターンの登録先論理領域が関連付けられているがデータの書込み先論理領域が関連付けられていない物理領域がある場合、当該物理領域に存在するデータとしての登録済みパターンを削除する、
請求項1に記載のバックアップシステム。
【請求項7】
前記第1の記憶装置における、前記転送対象のデータが存在する物理領域に、それぞれが当該データの書込み先又は当該データとしてのパターンの登録先である一つ以上の論理領域が関連付けられ、
前記バックアップ元のストレージシステムに登録可能なパターンの数に上限があり、
前記バックアップ元のストレージシステムが、下記のうちの少なくとも一つを基に、削除対象の登録済みパターンを決定し、当該決定した登録済みパターンを削除する、
・登録済みパターンとしてのデータが格納されている物理領域に関連付けられている論理領域の数である重複数、
・登録済みパターンが登録されてからの経過時間、
・登録済みパターンが最後に使用されてからの経過時間、
・登録済みパターンとしてのデータへのアクセス頻度、
請求項1に記載のバックアップシステム。
【請求項8】
前記バックアップ元のストレージシステムが、登録済みパターン毎に、当該登録済みパターンとしてのデータが前記バックアップ先のストレージシステムに存在するか否かである有効か無効かとを管理し、
前記バックアップ元のストレージシステムが、有効な登録済みパターンを更新したが当該更新後の登録済みパターンとしてのデータが前記バックアップ先のストレージシステムに転送されていない場合、当該登録済みパターンを無効とし、
前記バックアップ元のストレージシステムが、無効の登録済みパターンを前記バックアップ先のストレージシステムに転送する、
請求項1に記載のバックアップシステム。
【請求項9】
前記正ボリュームは、それぞれが指定されたボリュームのスナップショットである一つ又は複数のスナップショットボリュームのいずれかである対象のスナップショットボリュームであり、
前記転送対象のデータは、前記対象のスナップショットボリュームの比較元のボリュームとの差分としてのデータである、
請求項1に記載のバックアップシステム。
【請求項10】
前記バックアップ先のストレージシステムが、オブジェクトストレージシステムであり、
前記バックアップ元のストレージシステムが、登録済みパターン毎に、当該登録済みパターンとしてのデータオブジェクトにアクセスするためのキーであるオブジェクトキーを管理し、
(C)において、前記バックアップ元のストレージシステムが、前記転送対象のデータのオブジェクトキーを生成し、前記対象のスナップショットボリュームのうちの前記転送対象のデータに対応した論理領域に当該生成したオブジェクトキーを関連付け、前記転送対象のデータを前記バックアップ先のストレージシステムに転送し、
(D)において、前記バックアップ元のストレージシステムが、(B)の判定結果が真である登録済みパターンのオブジェクトキーを、前記対象のスナップショットボリュームのうちの前記転送対象のデータに対応した論理領域に関連付ける、
請求項9に記載のバックアップシステム。
【請求項11】
(C)において、前記バックアップ元のストレージシステムが、前記転送対象のデータとしてのパターンが前記バックアップ先のストレージシステムに登録された場合に、前記抽出されたパターンの登録を行う、
請求項1に記載のバックアップシステム。
【請求項12】
前記バックアップ先のストレージシステムが、前記バックアップ元のストレージシステムからの識別情報から前記バックアップ先のストレージシステムにおいて管理されているパターンを特定し、
前記バックアップ先のストレージシステムが、前記特定したパターンとしてのデータが存在する物理領域に、前記副ボリュームにおける論理領域を関連付ける、又は、前記特定したパターンとしてのデータを、前記副ボリュームにコピーする、
請求項1に記載のバックアップシステム。
【請求項13】
前記バックアップ元のストレージシステムに、複数のバックアップ先のストレージシステムが接続されている場合、前記バックアップ元のストレージシステムが、登録済みパターンを、前記複数のバックアップ先のストレージシステムの各々について管理する、
請求項1に記載のバックアップシステム。
【請求項14】
前記バックアップ元のストレージシステム、及び、前記バックアップ先のストレージシステムの一方又は両方が、クラウド上のシステムである、
請求項1に記載のバックアップシステム。
【請求項15】
(A)正ボリュームと第1の記憶装置とを有
しネットワークを介してバックアップ先のストレージシステムと通信するバックアップ元のストレージシステムにより、
前記バックアップ先のストレージシステムへの転送対象のデータを、パターンとして抽出し、
前記バックアップ先のストレージシステムが、前記正ボリュームとボリュームペアを構成する副ボリュームと、前記副ボリュームを通じてデータが書き込まれる第2の記憶装置とを有し、
前記バックアップ元のストレージシステムが、
前記バックアップ先のストレージシステムに転送したデータのパターンを前記バックアップ元のストレージシステムに登録するようになっており、前記バックアップ元のストレージシステムにおける登録済みパターン毎に、登録済みパターンの識別情報を管理し、
(B)前記バックアップ元のストレージシステムにより、前記転送対象のデータの前記バックアップ元のストレージシステムでの格納先領域の論理アドレスに関わらず、前記転送対象のデータに関し前記抽出されたパターンが前記バックアップ元のストレージシステムに登録済みか否か判定し、
(C)(B)の判定結果が偽の場合、前記バックアップ元のストレージシステムにより、前記抽出されたパターンを前記バックアップ元のストレージシステムに登録し、前記転送対象のデータを前記バックアップ先のストレージシステムに転送し、前記バックアップ先のストレージシステムにより、当該転送された転送対象のデータを受信し、当該受信したデータを前記副ボリュームに格納し、当該受信したデータを前記パターンとして前記バックアップ先のストレージシステムに登録し、当該パターンとしてのデータの格納先領域と当該パターンの登録先領域とを対応付け、
(D)(B)の判定結果が真の場合、前記バックアップ元のストレージシステムにより、前記転送対象のデータを転送せず、(B)の判定結果が真である登録済みパターンの識別情報を、前記バックアップ先のストレージシステムに転送
し、前記バックアップ先のストレージシステムにより、当該転送された登録済みパターンの識別情報を受信し、前記バックアップ先のストレージシステムに登録されたパターンのうち、当該受信した登録済みパターンの識別情報に対応したパターンを読み出し、当該読み出したパターンとしてのデータを前記副ボリュームの格納先領域に格納する、
バックアップ方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、ストレージシステム間でのデータのバックアップに関する。
【背景技術】
【0002】
ストレージシステム間でのデータのバックアップに際し、転送データ量を削減することが望ましい。特許文献1に開示の技術によれば、バックアップサーバが、第1のストレージにおけるバックアップ対象となるデータの重複関係をチェックし、第1のストレージにおける重複データを複数回第2のストレージに転送することを回避する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
バックアップ元のストレージシステムにおいてデータが重複するケースに加えて又は代えて、バックアップ元のストレージシステムとバックアップ先のストレージシステムとの間でデータが重複するケースが考えられる。具体的には、例えば、下記のいずれかのケースが考えられる。
・データセンタ内のバックアップ(装置内及び装置外の両方のケースがある)に加えて、災害復旧に備えた別データセンタへのバックアップを行う場合がある。データセンタ内のバックアップデータをリストアした場合、リストアした全データが別データセンタへコピーされる。
・バックアップ元のストレージシステムのボリューム(VOL)とバックアップ先のストレージシステムのVOLとのVOLペアを一旦誤って削除した後に再び当該VOLペアを構成した場合、VOL間でのデータのコピーが再度生じる。
【0005】
このようにバックアップ元のストレージシステムとバックアップ先のストレージシステムとの間でデータが重複するケースについても、重複するデータの転送を回避し、以って、転送データ量を削減することが望ましい。
【課題を解決するための手段】
【0006】
ボリュームと第1の記憶装置とを有するバックアップ元のストレージシステムが、ボリュームを通じて第1の記憶装置に書き込まれたデータのうち、バックアップ先のストレージシステムへの転送対象のデータを、パターンとして抽出する。当該転送対象のデータのバックアップ元のストレージシステムでの格納先領域の論理アドレスに関わらず、バックアップ元のストレージシステムが、当該転送対象のデータに関し抽出されたパターンがバックアップ元のストレージシステムに登録済みか否か判定する。当該判定結果が偽の場合、バックアップ元のストレージシステムが、当該抽出されたパターンをバックアップ元のストレージシステムに登録し、転送対象のデータをバックアップ先のストレージシステムに転送する。当該判定結果が真の場合、バックアップ元のストレージシステムが、当該転送対象のデータを転送しない。
【発明の効果】
【0007】
バックアップ元のストレージシステムとバックアップ先のストレージシステムとの間で重複するデータのストレージシステム間での転送を回避することができる。
【図面の簡単な説明】
【0008】
【
図1】第1の実施形態に係るシステム全体の構成例を示す。
【
図2】ストレージシステムと保守端末の構成例を示す。
【
図3】ストレージシステムのメモリの構成例を示す。
【
図5】第1のパターン管理テーブルの構成例を示す。
【
図9A】正ストレージシステムにおける初期コピープログラムが行う初期コピー処理のフローを示す。
【
図10】副ストレージシステムにおける副コピープログラムが行う副コピー処理のフローを示す。
【
図11】正ストレージシステムにおけるI/Oプログラムが行うライト処理のフローを示す。
【
図12A】正ストレージシステムにおけるJNL作成プログラムが行うJNL作成処理のフローを示す。
【
図12B】正ストレージシステムにおけるJNL転送プログラムが行うJNL転送処理のフローを示す。
【
図13】正ストレージシステムにおけるパターン抽出プログラムが行うパターン抽出処理のフローを示す。
【
図14】正ストレージシステムにおけるパターン登録プログラムが行うパターン登録処理のフローを示す。
【
図15】第2のパターン管理テーブルの構成例を示す。
【
図16】重複排除プログラムが行う重複排除処理のフローを示す。
【
図17】パターン登録プログラムが行うパターン登録処理のフローを示す。
【
図18】正ストレージシステムにおけるパターン同期プログラムと副ストレージシステムにおける及びパターン登録プログラムとが行うパターン登録同期処理のフローを示す。
【
図19】正ストレージシステム(又は副ストレージシステム)におけるパターン削除プログラムが行うパターン削除処理のフローを示す。
【
図20A】第2の実施形態においてスナップショットデータのバックアップが行われるケースの一例の概要を示す。
【
図20B】ストレージシステムのメモリの構成例を示す。
【
図21】スナップショット管理テーブルの構成例を示す。
【
図22】第3のパターン管理テーブルの構成例を示す。
【
図23】バックアップ取得プログラムが行うバックアップ取得処理のフローを示す。
【
図24】バックアップ取得プログラムが行うバックアップ取得処理のフローを示す。
【発明を実施するための形態】
【0009】
以下の説明では、「インターフェース装置」は、一つ以上のインターフェースデバイスでよい。当該一つ以上のインターフェースデバイスは、下記のうちの少なくとも一つでよい。
・一つ以上のI/O(Input/Output)インターフェースデバイス。I/O(Input/Output)インターフェースデバイスは、I/Oデバイスと遠隔の表示用計算機とのうちの少なくとも一つに対するインターフェースデバイスである。表示用計算機に対するI/Oインターフェースデバイスは、通信インターフェースデバイスでよい。少なくとも一つのI/Oデバイスは、ユーザインターフェースデバイス、例えば、キーボード及びポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとのうちのいずれでもよい。
・一つ以上の通信インターフェースデバイス。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であってもよいし二つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
【0010】
また、以下の説明では、「メモリ」は、一つ以上の記憶デバイスの一例である一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
【0011】
また、以下の説明では、「永続記憶装置」は、一つ以上の記憶デバイスの一例である一つ以上の永続記憶デバイスでよい。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよく、具体的には、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、NVME(Non-Volatile Memory Express)ドライブ、又は、SCM(Storage Class Memory)でよい。
【0012】
また、以下の説明では、「記憶装置」は、メモリと永続記憶装置の少なくともメモリでよい。
【0013】
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスでよい。少なくとも一つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスでよいが、GPU(Graphics Processing Unit)のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも一つのプロセッサデバイスは、処理の一部又は全部を行うハードウェア記述言語によりゲートアレイの集合体である回路(例えばFPGA(Field-Programmable Gate Array)、CPLD(Complex Programmable Logic Device)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサデバイスでもよい。
【0014】
また、以下の説明では、「xxxテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、当該情報は、どのような構造のデータでもよいし(例えば、構造化データでもよいし非構造化データでもよいし)、入力に対する出力を発生するニューラルネットワーク、遺伝的アルゴリズムやランダムフォレストに代表されるような学習モデルでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、一つのテーブルは、二つ以上のテーブルに分割されてもよいし、二つ以上のテーブルの全部又は一部が一つのテーブルであってもよい。
【0015】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶装置及び/又はインターフェース装置を用いながら行うため、処理の主語が、プロセッサ(或いは、そのプロセッサを有する装置又はシステム)とされてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。また、以下の説明において、二つ以上のプログラムが一つのプログラムとして実現されてもよいし、一つのプログラムが二つ以上のプログラムとして実現されてもよい。
【0016】
また、「ボリューム」(VOL)は、論理的な記憶領域である。ボリュームは、実体的なボリューム(RVOL)であってもよいし、仮想的なボリューム(VVOL)であってもよい。「RVOL」は、記憶装置に基づくVOLでよく、「VVOL」は、容量仮想化技術(典型的にはThin Provisioning)に従うボリュームでよい。
【0017】
また、「ストレージシステム」は、複数の記憶デバイスと複数の記憶デバイスに対するデータのI/Oを行うコントローラとを備えたシステムでもよいし、一つ以上の物理的な計算機を含んだシステムでよい。後者のシステムは、例えば、一つ以上の物理的な計算機の各々が所定のソフトウェアを実行することにより、当該一つ以上の物理的な計算機がSDx(Software-Defined anything)として構築されてもよい。SDxとしては、例えば、SDS(Software-Defined Storage)又はSDDC(Software-defined Datacenter)を採用することができる。
【0018】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別して説明する場合には、参照符号を使用することがある。
【0019】
以下、幾つかの実施形態を説明する。
[第1の実施形態]
【0020】
図1は、第1の実施形態に係るシステム全体の構成例を示す。
【0021】
正ホスト100Aがネットワーク220A(例えばフロントエンドのネットワーク)を介して正ストレージシステム200Aに接続されている。副ホスト100Bがネットワーク220B(例えばフロントエンドのネットワーク)を介して副ストレージシステム200Bに接続されている。正ストレージシステム200Aと副ストレージシステム200Bがネットワーク220C(例えばバックエンドのネットワーク)を介して接続されている。ネットワーク220A~220Cのうちの二つ以上のネットワークが共通でもよいし、ネットワーク220A~220Cのうちの少なくとも一つが専用線でもよい。
【0022】
正サイト(正ホスト100A及び正ストレージシステム200Aを含んだサイト)と副サイト(副ホスト100B及び副ストレージシステム200Bを含んだサイト)は、地理的に離れていてよい。正ホスト100Aは、インターフェース装置51A、メモリ52A及びCPU(Central Processing Unit)53Aを有する計算機である。副ホスト100Bは、インターフェース装置51B、メモリ52B及びCPU53Bを有する計算機である。なお、正ホスト100Aが、仮想的な装置(例えば、VM(Virtual Machine)又はコンテナ)であってもよい。同様に、副ホスト100Bが、仮想的な装置であってもよい。また、正ホスト100Aが、仮想的な装置であり正ストレージシステム200Aに備えられてよいし、同様に、副ホスト100Bが、仮想的な装置であり副ストレージシステム200Bに備えられてよい(つまり、ストレージシステム200A及び200Bの少なくとも一つが、いわゆるハイパーコンバージドのストレージシステムでもよい)。また、副ホスト100Bはなくてもよい。また、例えばストレージシステム200A及び200B間の距離が短い場合、正ホスト100Aが正ストレージシステム200Aに加えて副ストレージシステム200Bに接続されていてもよい。副ホスト100Bが副ストレージシステム200Bに加えて正ストレージシステム200Aに接続されてもよい。ストレージシステム200A、200Bの両方、または、片方が、コロケーションに設置されたシステムでもよいし、クラウドコンピューティングサービス(ストレージサービス)を提供するクラウド上のシステムでもよい。
【0023】
正ホスト100Aが、業務処理を実行するソフトウェア(例えばDBMS(DataBase Management System))を実行し、データのライト要求を正ストレージシステム200Aに送信する。正ストレージシステム200Aが、当該ライト要求に従いデータを格納する。ストレージシステム200A及び200B間でリモートコピーが行われる。すなわち、副ストレージシステム200Bが、正ストレージシステム200Aからデータを受信し受信したデータを格納する。正ホスト100A又は正ストレージシステム200Aに障害があったときにディザスタリカバリが行われる。これにより、副ホスト100Bは、副ストレージシステム200B内のデータを利用して正ホスト100Aの業務処理を継続することができる。なお、リモートコピーシステムは、ストレージシステム200A及び200Bを含んだシステムである。
【0024】
ネットワーク220Cに接続された保守端末270が存在する。保守端末270は、ストレージシステム200の保守又は管理のために、ストレージシステム200A及び200Bの少なくとも一つと通信する。保守端末270はネットワーク220Aに接続され、正ストレージシステム200Aを保守してもよい。また、別の保守端末270がネットワーク220Bに接続され、ストレージシステム200Bを保守してもよい。
【0025】
正ストレージシステム200Aが、バックアップ元ストレージシステムの一例である。副ストレージシステム200Bが、バックアップ先ストレージシステムの一例である。一つの正ストレージシステム200Aにつき、副ストレージシステム200Bが一つ又は複数存在する。
【0026】
図2は、ストレージシステム200と保守端末270の構成例を示す。
【0027】
ストレージシステム200は、ドライブ群(複数のドライブ218)と、ドライブ群に対してデータのI/Oを行う冗長化されたコントローラ210とを有する。ドライブ218は、永続記憶デバイスの一例である。ドライブ群が、一つ以上のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループを構成してよい。ドライブ群に基づきボリューム(VOL)26が提供される。
【0028】
コントローラ210は、FE-IF(フロントエンドインターフェース)211と、BE-IF(バックエンドインターフェース)214と、M-IF(管理インターフェース)215と、メモリ213と、それらに接続されたプロセッサ212とを備える。IF211、214及び215が、インターフェース装置の一例である。
【0029】
FE-IF211は、ホスト100と通信するインターフェースデバイスである。FE-IF211は、複数のポート(例えば、Fibre Channelポート、iSCSIポート)を有してよい。リモートコピーのパス(転送対象のデータが経由するパス)が、正ストレージシステム200AのFE-IF211のポートと、副ストレージシステム200BのFE-IF211のポートとを含んだパスでよい。FE-IF200とは別にリモートコピー用のインターフェースデバイスが備えられてもよい。
【0030】
BE-IF214は、各ドライブ218と通信するインターフェースデバイスである。
【0031】
M-IF215は、保守端末270と通信するインターフェースデバイスである。M-IF215が有するポートが、FE-IF211が有するポートに代えて、リモートコピーのパスに含まれてよい。
【0032】
メモリ213は、プログラムやデータを格納する。メモリ213は、例えば、データが一時的に格納されるキャッシュメモリ領域を有してよい。プロセッサ212は、メモリ213に格納されたプログラムを実行する。
【0033】
保守端末270は、IF275と、I/O部274と、メモリ272と、それらに接続されたCPU271とを備えた計算機である。IF275は、ネットワーク220に接続されるポートを有するインターフェースデバイスである。I/O部274は、キーボード、ポインティングデバイス及び表示デバイスのようなユーザインターフェースデバイスである。メモリ272は、プログラム(例えば保守プログラム273)及びデータを格納する。CPU271は、保守プログラム273を実行することにより、ストレージシステム200の保守を行う。例えば、保守プログラム273を実行するCPU271は、I/O部274を介してユーザから情報(例えば、ストレージシステム200A及び200B間の距離を表す情報、又は、後述の必要多重度を表す情報)を受け付け、受け付けた情報をIF275経由でストレージシステム200に設定してよい。
【0034】
【0035】
メモリ213は、管理領域221と、プログラム領域222と、キャッシュメモリ領域223とを有する。
【0036】
管理領域221には、管理情報が格納される。管理情報は、パターンVOLテーブル2210、パターン管理テーブル2211A及び/又は2211Bと、ペアテーブル2213とを含む。テーブル2210及び2211については後述する。ペアテーブル2213は、リモートコピーのコピー元、コピー先の関係を管理するテーブルである。ペアテーブル2213は、VOLペア毎に、PVOL(正ボリューム)のIDとSVOL(副ボリューム)のID、コピー相手であるストレージシステム200のIDとを含む。また、ペアテーブル2213は、コピー処理の一時停止状態、正常、異常などを管理するためのペア状態なども管理してもよい。一部のテーブルは、ストレージシステム200に不必要な機能によっては無くてもよい。また、一部のテーブルに代えて又は加えて別のテーブルがあってもよい。また、典型的なリモートコピー処理、重複排除処理やデータ格納処理で必要とされるテーブルは記載を省略している。例えば、後述するジャーナルに割り当てるためのシーケンス番号、論理アドレスと物理アドレスを対応付けるマッピングテーブルやボリュームやシステムの記憶容量などに対する管理テーブルなどである。
【0037】
プログラム領域222には、プログラムが格納される。格納されるプログラムとして、例えば、PVOL内のデータの初期コピーを行うための初期コピープログラム2221と、転送されて来たデータの格納を行うための副コピープログラム2222と、ホストからのI/O要求に応答してPVOL(又はSVOL)に対しデータのI/Oを行うためのI/Oプログラム2223と、JNL(ジャーナル)を作成するためのJNL作成プログラム2224と、JNLを転送するためのJNL転送プログラム2225と、パターンを抽出するためのパターン抽出プログラム2226と、パターンを登録するためのパターン登録プログラム2227と、パターンを削除するためのパターン削除プログラム2229と、パターンの同期をとるためのパターン同期プログラム2230と、重複排除を行うための重複排除プログラム2231とがある。一部のプログラムは、ストレージシステム200に不必要な機能によっては無くてもよい。また、一部のプログラムに代えて又は加えて、別のプログラムがあってもよい。
【0038】
キャッシュメモリ領域223には、データ(典型的には、ドライブ218に入出力されるデータ)が一時的に格納される。
【0039】
このメモリ213を有するストレージシステム200は、正ストレージシステム200Aと副ストレージシステム200Bの一方又は両方のストレージシステムとして機能することができる。例えば、このストレージシステム200がPVOLを有するがSVOL(PVOLとVOLペアを構成しコピー先となるVOL)を有しない場合、このストレージシステム200は正ストレージシステム200Aとして機能する。このストレージシステム200がPVOLを有しないがSVOLを有する場合、このストレージシステム200は副ストレージシステム200Bとして機能する。このストレージシステム200が第1のVOLペアにおけるSVOLを有し第2のVOLペアにおけるPVOLを有する場合、このストレージシステム200は正ストレージシステム200Aとしても副ストレージシステム200Bとしても機能する。
【0040】
また、本実施形態では、バックアップの一例として、同期リモートコピー及び/又は非同期リモートコピーがある。同期リモートコピーによれば、ライト要求に付随するライト対象のデータのリモートコピーが行われた場合に当該ライト要求に対する応答が返る。非同期リモートコピーによれば、ライト要求に付随するライト対象のデータのリモートコピーが行われたか否かに関わらず当該ライト要求に対する応答が返る。
【0041】
図4は、パターンVOLテーブル2210の構成例を示す。
【0042】
バックアップ先のストレージシステムが既にデータを有し、バックアップ先ストレージへの転送を回避できるデータの候補をパターンとして、管理する。バックアップ先のストレージシステムのことをコピー先ストレージシステムと呼ぶことがある。
パターンVOLテーブル2210は、ストレージシステム200のコピー先ストレージシステム毎に、コピー先ストレージシステムID501及びVOL番号502といった情報を含む。コピー先ストレージシステムID501は、コピー先ストレージシステムのIDを表す。VOL番号502は、パターンVOLの識別番号を表す。VOLの識別番号は、パターンVOLテーブル2210を有するストレージシステムにおけるVOLの識別番号である。すなわち、コピー元ストレージシステムのパターンVOLテーブル2210のVOL番号502は、コピー元ストレージシステムが有するパターンVOLの識別番号である。なお、本実施形態では、IDや識別番号は識別情報の一例である。コピー先ストレージシステム毎に、管理する例を示したが、コピー先ストレージシステムの一部毎にパターンVOLを有してもよい。例えば、論理分割単位、容量プール毎などである。
【0043】
「パターンVOL」とは、パターンが格納されるVOLであり、I/O要求で指定されることが無いオフラインのVOL(ホストには提供されないVOL)である。「パターン」とは、正ストレージシステム200Aから副ストレージシステム200Bに転送されたデータである。「転送されたデータ」とは、典型的には、VOLから読み出された非圧縮のデータそれ自体であるが、転送されたデータの内容を特定可能なであればよい。パターンは、典型的には転送されたデータであるが、コピー先ストレージが有するデータとしてもよい。例えば、全ビットが0のデータや全ビットが1のようなデータをコピー元、コピー先があらかじめパターンとして管理してもよい。
【0044】
第1の副ストレージシステム200Bに転送済みのデータを第1の副ストレージシステム200Bに再度転送する必要はないが、同じデータがコピー対象のデータであり第2の副ストレージシステム200Bに対しては未転送である場合、当該データを第2の副ストレージシステム200Bに転送する必要がある。そこで、
図4に例示するように、本実施形態では、正ストレージシステム200Aに、複数の副ストレージシステム200Bが接続されている場合、正ストレージシステム200Aが、パターンVOL(つまり登録済みパターン)を、複数の副ストレージシステム200Bの各々について管理する。これにより、いずれのデータがいずれの副ストレージシステム200Bに転送要又は不要であるかを判別することが可能となる。なお、パターンVOLは、論理記憶領域の一例である。論理記憶領域がメモリ213における領域の場合、VOL番号502に代えて、メモリ213におけるアドレスを表す情報が採用されてよい。
【0045】
図5は、パターン管理テーブル2211Aの構成例を示す。
【0046】
パターン管理テーブル2211Aは、パターン毎に、フィンガープリント値601、有効フラグ602及びパターンアドレス603といった情報を含む。
【0047】
フィンガープリント値601は、パターンのフィンガープリント値であり、例えばハッシュ値である。フィンガープリント値は、識別情報の一例であり、この他の識別情報であってもよい。また、データから生成される識別情報である必要もない。有効フラグ602は、パターンが有効であるか無効であるかを表す(例えば、パターンの登録中のような或る契機では当該パターンの有効フラグ602は“OFF”(無効)とされる)。パターンアドレス603は、パターンの格納先領域のアドレス(パターンVOLにおける領域のアドレス)を表す。
【0048】
パターン管理テーブル2211Aは、副ストレージシステム200B毎に存在してもよいし、複数の副ストレージシステム200Bに共通でありパターン毎に既に転送先とされた副ストレージシステム200BのIDが記録されてもよい。また、パターン管理テーブル2211Aは、メモリ213に格納されることに代えて又は加えて、このテーブル2211Aが対応するパターンVOLに格納されてもよい。パターンアドレス603は必ずしも必要ではない。例えば、本テーブルのレコードに対して固定的にパターンVOL上のアドレスを対応付けておけば、パターンデータが格納されるアドレスを特定できる。
【0049】
図6は、パターンであるデータ本体が格納されるパターンVOL26Xの例を示す。
【0050】
パターンVOL26X(及び、PVOL及びSVOLの各々)が、連続した複数のチャンク領域で構成されている。「チャンク領域」とは、データチャンクが格納されるチャンクサイズの論理領域であり、VOLにおける所定サイズの論理領域の一例である。「データチャンク」とは、所定サイズのデータの一例である。「チャンクサイズ」とは、例えば、重複排除の単位サイズ(例えば4KB)である。パターンVOL26Xには、チャンクサイズのパターン(つまり、データチャンクとしてのパターン)が書き込まれる。
図6が示す例によれば、パターンVOL26XにパターンA、B及びCが格納されている。
【0051】
なお、「パターンVOL」は、上述したように、論理記憶領域の一例である。論理記憶領域は、メモリ213に設けられてもよい。
【0052】
【0053】
正ストレージシステムがPVOL7Pを有し、副ストレージシステムが、PVOL7PとVOLペアを構成するSVOL7Sを有している。PVOL7PにデータチャンクAが二つ存在している。つまり、PVOL7PにおいてデータチャンクAが重複している。
【0054】
このため、PVOL7Pについてコピー指示がされた場合、正ストレージシステムから副ストレージシステムにデータチャンクAが二回転送されてしまう。
【0055】
【0056】
正ストレージシステムがPVOL17Pを有し、副ストレージシステムが、PVOL17PとVOLペアを構成するSVOL17Sを有している。PVOL17P及びSVOL17Sの各々に、データチャンクB及びCが存在する。つまり、PVOL17PとSVOL17Sとの間でデータチャンクB及びCがそれぞれ重複している。
【0057】
このため、PVOL17Pについてコピー指示がされた場合、SVOL17SにデータチャンクB及びCがそれぞれ存在しているにも関わらず、正ストレージシステムから副ストレージシステムにデータチャンクB及びCがそれぞれ転送されてしまう。
【0058】
【0059】
正ストレージシステム200Aが、PVOL26Pと、パターンVOL26XPと、ドライブ群(第1の記憶装置の一例)に基づく記憶領域(以下、物理記憶領域)80Pとを備える。副ストレージシステム200Bが、PVOL26PとVOLペアを構成するSVOL26Sと、パターンVOL26XSと、ドライブ群(第2の記憶装置の一例)に基づく物理記憶領域80Sとを備える。物理記憶領域80P及び80Sの各々は、例えば、一つ以上のVOLで構成された容量プールでよい。PVOL26Pを通じて物理記憶領域80Pにデータが書き込まれ、SVOL26Sを通じて物理記憶領域80Sにデータが書き込まれるようになっている。また、PVOL26PとSVOL26Sに対して、リモートコピーが適用され、PVOL26PとSVOL26SがVOLペアを構成する。
【0060】
正ストレージシステム200Aが重複排除プログラム2231Aを有し、副ストレージシステム200Bが重複排除プログラム2231Bを有する。重複排除プログラム2231Aは、一つ又は複数のVOL26に同一データが格納される複数のチャンク領域を当該データが存在する一つの物理領域(物理記憶領域80における領域)に関連付ける(ポイントする)ことで重複排除を行う。
図8が示す例によれば、正ストレージシステム200Aにおいて、重複排除プログラム2231Aが、VOL26PにデータAが格納される二つのチャンク領域をデータAが存在する一つの物理領域に関連付ける。チャンクに格納されるデータをデータチャンクと呼ぶことがある。
【0061】
ここで、PVOL26Pについてコピー指示(例えば、初期コピーの指示)がされたことにより、PVOL26PにおけるデータチャンクAが副ストレージシステム200Bへの転送対象(SVOL26Sへのコピー対象)とされたとする。正ストレージシステム200Aが、転送対象のデータチャンクAを、パターンAとして抽出し、抽出されたパターンAがパターンVOL26XPに登録済みか否か判定する。ここではパターンAの登録が無いため、判定結果は偽となる。この場合、正ストレージシステム200Aは、抽出されたパターンAをパターンVOL26XPに登録し、転送対象のデータチャンクAを副ストレージシステム200Bに転送する。このように、一度副ストレージシステム200Bに転送されたデータチャンクがパターンとしてパターンVOL26XPに登録されることになる。副ストレージシステム200Bが、正ストレージシステム200AからデータチャンクAを受信した場合、データチャンクAをパターンAとして抽出して当該パターンAをパターンVOL26XSに登録し、且つ、データチャンクAをSVOL26Sに格納する(SVOL26Sを通じて物理記憶領域80Sに格納する)。なお、正ストレージシステム200Aにおいて、パターンAの登録は、パターンAとしてのデータチャンクAの格納先領域のアドレスとパターンAの登録先領域(例えば、パターンVOL26XPにおける領域)のアドレスとの対応付けを含んでよい。同様に、副ストレージシステム200Bにおいて、パターンAの登録は、パターンAとしてのデータチャンクAの格納先領域のアドレスとパターンAの登録先領域(例えば、パターンVOL26XSにおける領域)の論理アドレスとの対応付けを含んでよい。この段落における「格納先領域」は、物理記憶領域80における物理領域でもよいし、論理ボリュームにおける論理領域でもよい。
【0062】
その後、再び、PVOL26Pにおける別のチャンクに格納されているデータチャンクAが副ストレージシステム200Bへの転送対象とされたとする。正ストレージシステム200Aが、当該データチャンクAをパターンAとして抽出するが、パターンAはパターンVOL26XPに登録済みである。このため、上述の判定結果は真となる。この場合、正ストレージシステム200Aが、転送対象のデータチャンクAを転送しない。これにより、ストレージシステム200A及び200B間で重複するデータAのストレージシステム200A及び200B間での転送を回避することができる。
【0063】
具体的には、正ストレージシステム200Aが、転送対象のデータチャンクAに代えて、パターンAのフィンガープリント値(FP値)と、副ストレージシステム200Bに送信する。このように、データチャンクAに代えて、データチャンクAよりもデータサイズの小さいフィンガープリント値の転送により、リモートコピーを実現することができる。
【0064】
副ストレージシステム200Bが、フィンガープリント値を正ストレージシステム200Aから受信した場合、フィンガープリント値を基にパターンVOL26XSからパターンAを特定し、データAをパターンVOL26XSから読み出し、SVOL26Sのコピー先領域に書きこむ。または、データチャンクAが存在する物理領域(物理記憶領域80Sにおける物理領域)に、SVOL26Sにチャンク領域(リモートコピーのコピー先領域)を関連付ける。このようにすれば、副ストレージシステム内でパターンVOL26XSからSVOL26Sへデータ本体を転送する事が回避できる。このようにして、データチャンクAが転送されないがSVOL26SへのデータAのコピーが実現される。
【0065】
なお、正ストレージシステム200Aにおいて、PVOL26Pを通じて物理記憶領域80Pに書き込まれたデータチャンクAとパターンVOL26XPに登録されるパターンAは重複する。このため、パターンAの登録とは、重複排除プログラム2231Aが、パターンAの登録先チャンク領域(パターンVOL26XPにおけるチャンク領域)を、PVOL26Pを通じて物理記憶領域80Pに書き込まれたデータチャンクAが存在する物理領域(物理記憶領域80Pにおける物理領域)に関連付けることである。従って、パターンVOL26XPにおける登録済みパターンは、当該パターンの登録先のチャンク領域に関連付けられている物理領域に存在するデータチャンクである。これにより、パターンとして未登録のデータチャンクが転送される都度にパターンが登録されるが、パターンが登録されても物理記憶領域80Pの記憶容量は消費されることを回避することができる。つまり、PVOL26PとパターンVOL26XPとにおけるデータの重複排除が実現される。
【0066】
同様に、副ストレージシステム200Bにおいても、SVOL26Sを通じて物理記憶領域80Sに書き込まれたデータチャンクAとパターンVOL26XSに登録されるパターンAとの重複排除も実現可能である。すなわち、重複排除プログラム2231Bが、パターンAの登録先チャンク領域(パターンVOL26XSにおけるチャンク領域)を、データチャンクAが存在する物理領域(物理記憶領域80Sにおける物理領域)に関連付けることで、重複排除が実現される。
【0067】
図9Aは、正ストレージシステム200Aにおける初期コピープログラム2221が行う初期コピー処理のフローを示す。「初期コピー」とは、PVOL26P内の全データのSVOL26Sへのコピーのことである。また、
図9Aが示す処理は、同期リモートコピーと非同期リモートコピーに共通の処理でよい。
【0068】
初期コピープログラム2221が、PVOL26Pについてコピー指示を受信し(S100)、PVOL26PとSVOL26SとのVOLペアについて所定のペア状態、PVOLのID、SVOLのID、コピー先ストレージシステムのIDを有するエントリをペアテーブル2213に設定する(S101)。なお、S101において、コピー先のSVOL26Sを有する副ストレージシステム200Bが特定され、故に、当該副ストレージシステム200Bに対応したパターンVOL26XPがパターンVOLテーブル2210から特定され、また、当該副ストレージシステム200Bに対応したパターン管理テーブル2211Aも特定される。また、特定された副ストレージシステム200Bに対応するパターンVOL26XP、または、パターンVOLテーブル2210のエントリがない場合は、新規に作成される。
【0069】
初期コピープログラム2221が、当該初期コピー処理におけるコピー対象であるが未だPVOL26Pから読み出されていないデータを読み出し、読み出されたデータを一つ以上のデータチャンクとする(S102)。
【0070】
初期コピープログラム2221が、S102で得られた一つ以上のデータチャンクのうち未選択のデータチャンクを一つ選択し(S103)、当該選択したデータチャンクのフィンガープリント値を算出する(S104)。初期コピープログラム2221が、S104で算出されたフィンガープリント値と一致するフィンガープリント値601をパターン管理テーブル2211Aから検索する(S105)。初期コピープログラム2221が、S105の結果として、一致するフィンガープリント値601があり、且つ、当該フィンガープリント値601に対応した有効フラグ602が“ON”か否かを判定する(S106)。
【0071】
S106の判定結果が偽の場合(S106:NO)、初期コピープログラム2221が、データ本体を関連付けたコピー要求を副ストレージシステム200Bに転送し(S109)、正ストレージシステム200Aにおけるパターン登録プログラム2227にパターン登録処理を実行させる(S110)。ここで言う「データ本体」とは、データチャンク全体又はその一部である(詳細は後述)。S110の直後に、パターン同期プログラム2230が実行されてもよい。
【0072】
S106の判定結果が真の場合(S106:YES)、初期コピープログラム2221が、一致するフィンガープリント値601に対応したパターンアドレス603が指す論理領域(パターンVOL26XPにおける領域)からパターンを読み出し、当該パターンを、S103で選択したデータチャンクと比較して、一致することを確認する(S107)。その後、初期コピープログラム2221が、一致するフィンガープリント値を関連付けたコピー要求を副ストレージシステム200Bに転送する(S108)。このように、一致するパターンがある場合、転送対象は、データチャンクよりも小サイズのフィンガープリント値であるため、転送データ量を削減することができる。また、コピー要求には、典型的なリモートコピーの処理において、格納される各種情報を含んでもよい。例えば、PVOLまたはSVOLの転送対象データの格納アドレスなどである。ステップS107ではデータチャンクとパターンを比較したが、必ずしも比較しなくてもよい。例えば、ハッシュ値が同一であることでデータチャンクとパターンも同一であると判断してもよい。
【0073】
S108又はS110の後、初期コピープログラム2221が、S102で得られた一つ以上のデータチャンクの全てがS103で選択されたか否かを判定する(S111)。S111の判定結果が偽の場合(S111:NO)、処理がS103に戻る。
【0074】
S111の判定結果が真の場合(S111:YES)、初期コピープログラム2221が、全コピー対象のデータについてS102が行われたか否かを判定する(S112)。S112の判定結果が偽の場合(S112:NO)、処理がS102に戻る。S112の判定結果が真の場合(S112:YES)、処理が終了する。
【0075】
「チャンク」は、上述したように、重複排除プログラム2231が重複排除を実行するデータの単位である。本実施形態では、例えば、チャンクサイズは4KBである。PVOL26Pの先頭から4KB単位に領域を分割し、重複関係をチェックすることで、重複排除が実現される。登録されたパターンと、PVOL26Pに格納されるデータが重複排除されるので、パターン格納のために消費されるデータ量を削減することができる。具体的には、S102で読みだしたデータを一つ以上のデータチャンクに分割し、それぞれのデータチャンクをパターンとして登録することで容量消費を抑えることができる。
【0076】
なお、S102で読み出されたデータの先頭アドレスがチャンクの先頭アドレスと異なる場合、又は、S102で読み出されたデータの末尾アドレスがチャンクの末尾アドレスと異なる場合、初期コピープログラム2221が、S102で読みだされたデータから抽出するパターンの先頭アドレスをチャンクの先頭アドレスとする。
【0077】
例えば、
図9Bに例示するように、S102で読み出したデータ97の先頭アドレスが、重複排除単位96の先頭アドレスと異なる場合は、S102で読み出したデータ97の先頭アドレスから、重複排除単位96の先頭アドレスまでのデータ95については、初期コピープログラム2221が、S104及びS105をスキップしてS109を行ってよい。具体的には、例えば、重複排除の単位サイズが4KBであり、S102で読み出されたデータが、PVOL26Pの先頭から3KB目~15KB目までのデータである場合、5KB~8KB目の4KBのデータ、9KB~12KB目の4KBのデータは、重複排除され得るため、S104及びS105が実行されてよい。一方で、3KB目~4KB目の2KBのデータは、重複排除単位と単位が揃ってないため、S104及びS105がスキップされS109が行われてよい。13KB目~15KB目の3KBのデータ本体についても、重複排除単位とデータサイズが揃ってないため、S104及びS105がスキップされS109が行われてよい。
【0078】
また、S110のパターン登録処理は、コピー先である副ストレージシステム200Bにおいてパターン登録が正常に終了した場合に行われてよい。例えば、S109の後、初期コピープログラム2221がパターン登録完了の報告(具体的には、後述の
図10においてS201:YESの場合のS206の通知)を副ストレージシステム200Bから受けた場合に、S110が行われてよい。これにより、ストレージシステム200A及び200B間でパターン登録状況に違いが発生せず、例えば、正ストレージシステム200Aがデータチャンクとしてのパターンを転送したが、副ストレージシステム200Bで当該パターンが存在しない状況の発生を回避することができる。
【0079】
図10は、副ストレージシステム200Bにおける副コピープログラム2222が行う副コピー処理のフローを示す。また、
図10が示す処理は、同期リモートコピーと非同期リモートコピーに共通の処理でよい。
【0080】
副コピープログラム2222が、
図9AのS108で転送されたフィンガープリント値、又は、
図9AのS109で転送されたデータ本体が関連付けられたコピー要求を受信する(S200)。
【0081】
S200で受信したコピー要求にデータ本体が関連付けられている場合(S201:YES)、副コピープログラム2222が、データ本体を、コピー要求に含まれるコピー先アドレス表すアドレス(SVOL26Sにおける論理領域)に格納する(S207)。その後、副コピープログラム2222が、副ストレージシステム200Bにおけるパターン登録プログラム2227にパターン登録処理を実行させる(S208)。その後、副コピープログラム2222が、S200で受信したコピー要求に対する完了を副ストレージシステム200Bに報告する(S206)。なお、S208が省略されて、正ストレージシステム200Aが、定期的に、登録済みパターンを副ストレージシステム200Bに転送し、副ストレージシステム200Bが、転送されて来たパターンをパターンVOL26XSに登録してもよい。しかし、本実施形態のように、データ本体の受信の際にパターン登録処理が行われるので、効率的に転送量を削減できる。すなわち、副コピープログラム2222とパターン同期プログラム2230(データ本体の転送と別途動作するプログラム)の間に同じデータの転送要求が発生した場合、パターン未登録のためデータ本体を転送することになるが、データ本体の転送と合わせてパターン登録処理が実行されることで、パターン未登録のための無駄なデータ本体転送を無くすことができる。
【0082】
S200で受信したコピー要求にフィンガープリント値が関連付けられている場合(S201:NO)、副コピープログラム2222が、当該フィンガープリント値と一致するフィンガープリント値601をパターン管理テーブル2211Aから検索する(S202)。副コピープログラム2222が、S202の結果として、一致するフィンガープリント値601があり、且つ、当該フィンガープリント値601に対応した有効フラグ602が“ON”か否かを判定する(S203)。
【0083】
S203の判定結果が偽の場合(S203:NO)、副コピープログラム2222が、データ本体の転送を正ストレージシステム200Aに要求する(S209)。当該要求に応答して、データ本体を副コピープログラム2222が正ストレージシステム200Aから受信した場合、S207及びS208が行われる。
【0084】
S203の判定結果が真の場合(S203:YES)、副コピープログラム2222が、一致するフィンガープリント値601に対応したパターンアドレス603が指す論理領域(パターンVOL26XSにおける領域)からパターンを読み出し、当該パターンとしてのデータチャンクを、コピー要求に関連付けられているアドレス情報が表す領域(SVOL26Sにおける領域)に格納する(S205)。その後、その後、副コピープログラム2222が、S200で受信したコピー要求に対する完了を副ストレージシステム200Bに報告する(S206)。
【0085】
なお、S205では、重複排除が行われることで、データチャンクの格納先の論理領域が、データチャンクが存在する物理領域に関連付けられてもよい。
【0086】
また、一致するフィンガープリント値601があってもパターンVOL26XSの障害などによりパターンの読出しが不可の場合があり得る。この場合、S203の判定結果が偽となりS209が行われてよい。
【0087】
図11は、正ストレージシステム200AにおけるI/Oプログラム2223が行うライト処理のフローを示す。これは、同期リモートコピーが採用されている場合のフローである。
【0088】
I/Oプログラム2223が、PVOL26Pを指定したライト要求を例えば正ホスト100Aから受信し(S301)、当該ライト要求に付随するデータをPVOL26Pに書き込む(S302)。その後、I/Oプログラム2223が、
図9AのS103~S111を実行して、S301で受信したライト要求に対する完了を例えば正ホスト100Aに報告する(S303)。
【0089】
図12Aは、正ストレージシステム200AにおけるJNL作成プログラム2224が行うJNL作成処理のフローを示す。これは、非同期リモートコピーが採用されている場合のフローである。
【0090】
JNL作成プログラム2224が、PVOL26Pについてコピー指示を受信し(S400)、PVOL26PとSVOL26SとのVOLペアについて所定のペア状態、PVOLのID、SVOLのID、コピー先ストレージシステムのIDを有するエントリをペアテーブル2213に設定する(S401)。JNL作成プログラム2224が、PVOL26Pに格納されているデータを含んだJNLを作成し(S402)、JNLを、所定の記憶領域(例えば図示しないJNL VOL)に格納する(S403)。S402及びS403が、PVOL26P内のデータ全てについて行われる(S404)。
【0091】
なお、JNLは、I/Oプログラム2223がPVOL26Pを指定したライト要求を受信する都度に当該ライト要求に付随するデータについて作成され格納されてもよい。
【0092】
図12Bは、正ストレージシステム200AにおけるJNL転送プログラム2225が行うJNL転送処理のフローを示す。これは、非同期リモートコピーが採用されている場合のフローである。
【0093】
JNL転送プログラム2225が、例えばJNL転送要求(JNLのリード要求)を副ストレージシステム200Bから受信し(S411)、転送対象のJNLを選択する(S412)。JNLは、データの書込みの順番を表す情報(例えば、シーケンス番号)に沿って選択される。S412の後、JNL転送プログラム2225が、
図9AのS103~S112を実行する。
【0094】
なお、JNLを受信した副ストレージシステム200Bが行う処理は、
図10に示した処理でよい。副コピープログラム2222は、受信したJNLを一旦所定の記憶領域(例えば、図示しないJNL VOL)に格納し、その後に、JNL内のデータをSVOL26Sに書き込んでもよい。その場合、副コピープログラム2222が、
図10のS201~S209を実行してよい。
【0095】
図13は、正ストレージシステム200Aにおけるパターン抽出プログラム2226が行うパターン抽出処理のフローを示す。このフローによれば、初期コピー処理やライト処理によるパターン抽出とは異なる、契機や方法でパターン登録処理が行われ得る。
【0096】
パターン抽出プログラム2226が、物理記憶領域80Pにおける物理領域のアドレスである物理アドレスを取得する(S500)。パターン抽出プログラム2226が、当該物理アドレスが表す物理領域に関連付けられている論理領域の数である重複数をチェックする(S501)。重複数は、例えば、物理アドレス毎に図示しないテーブルに登録されてよく、当該テーブルが、重複排除プログラム2231を含む複数のプログラムにより共有されることで、それらのプログラムの各々が、物理アドレス毎に重複数の特定が可能であってよい。
【0097】
重複数が1を超えている場合、パターン抽出プログラム2226が、パターン登録プログラム2227にパターン登録処理を実行させる(S503)。
【0098】
図13が示す処理によれば、重複数が多いデータチャンクがパターンとして抽出され、当該パターンが登録される。重複数が高いデータは、同一のデータを複数回副ストレージシステムへ転送する可能性が高いと考えられる。このため、本例では重複数が1を超えている場合と言う条件としたが、これ以外の条件であってもよい。S503の直後に、パターン同期プログラム2230が実行されてもよい。
【0099】
図14は、正ストレージシステム200Aにおけるパターン登録プログラム2227が行うパターン登録処理のフローを示す。このパターン登録処理は、例えば、
図9AのS110、
図10のS208、又は、
図13のS503で実施される。
【0100】
パターン登録プログラム2227が、登録対象のパターン(データチャンク)のフィンガープリント値と一致するフィンガープリント値601をパターン管理テーブル2211Aから検索する(S600)。
【0101】
一致するフィンガープリント値601がある場合(S601:YES)、同じフィンガープリント値で別のデータチャンクがパターンとして登録されていることになる。すなわち、フィンガープリント値のコリジョン(異なるデータチャンクが同じフィンガープリント値となってしまうこと)が発生している。この場合、パターン登録プログラム2227が、一致するフィンガープリント値601に対応した有効フラグ602を“OFF”(つまり、登録済みパターンを“無効”)とする(S602)。パターン登録プログラム2227は、パターンVOL26XPについてアドレスを確定し(S603)、当該確定したアドレスの論理領域(パターンVOL26XPにおける領域)に、登録対象のパターンを格納する(S604)。その際、パターン登録プログラム2227が、一致するフィンガープリント値601に対応したパターンアドレス603が表すアドレスを、S603で確定したアドレスに変更する。古いパターンをパターンVOLから削除してもよい。つまり、結果として、登録済みパターンが別のパターンに差し替えられる。なお、S602で、有効フラグ602が“OFF”となることで、コリジョンが生じたフィンガープリント値に対応しPVOL26Pに新たに格納されたデータチャンクが、副ストレージシステム200Bに転送されることになる。これにより、正ストレージシステム200Aにおいて新しいデータチャンクがあるがそのデータチャンクが転送されず副ストレージシステム200Bにおいて古いデータチャンクが維持されて故にデータ化けが発生してしまうといったことを避けることができる。
上述の説明では、新しいパターンで古いパターン(本処理開始前に登録済みであったパターン)が置き換えられた。しかし、新しいパターンの登録を行わず、古いパターンを継続して利用することが行われてもよい。この場合、602、S603及びS604がスキップされる。また、コリジョンが発生した場合、新しいパターンに対して、別の識別子が生成さえ登録されてもよい。この場合、パターンの検索処理において、別の識別子で格納したパターンを別途検索する必要がある。また、同一の識別子で二つのパターンを登録し、パターン検索時に二つのパターンが登録されていることが判断できるデータ構造や情報の付加が行われておいてもよい。
【0102】
一致するフィンガープリント値601が無い場合(S601:NO)、パターン登録プログラム2227は、パターンVOL26XPについてアドレスを確定し(S605)、当該確定したアドレスの論理領域(パターンVOL26XPにおける領域)に、登録対象のパターンを格納する(S605)。次に、パターン登録プログラム2227は、登録対象のパターンがコピー先(副ストレージシステム200B)において登録済みか否かを判定する(S606)。例えば、S206でデータ本体のパターンの登録完了の報告がされてその報告を正ストレージシステム200Aが受信している場合、S606の判定結果が真となる。なお、S604、S605で格納したパターンと、当該パターン抽出元となったデータチャンクは、重複排除機能によって重複排除処理が実行される。重複排除処理は、チャンク単位で行われるため、S603及びS605において、パターン抽出元となったデータとチャンクにおける格納開始位置を揃えて格納する。上述の説明では、S103でチャンクを対象に処理を実施しているため、パターンをチャンクの先頭から格納すればよい。
【0103】
S606の判定結果が真の場合(S606:YES)、パターン登録プログラム2227は、パターン管理テーブル2211Aに、登録対象のパターンのフィンガープリント値、有効フラグ“ON”、及び、S605で確定したアドレスを登録する。
【0104】
S606の判定結果が偽の場合(S606:NO)、パターン登録プログラム2227は、パターン管理テーブル2211Aに、登録対象のパターンのフィンガープリント値、有効フラグ“OFF”、及び、S605で確定したアドレスを登録する。有効フラグ“OFF”の理由は、当該パターンとしてのデータチャンクの転送が行われるようにするためである。すなわち、コピー先にパターンが無いため、副ストレージシステム200Bは、フィンガープリント値を受信しても、SVOL26Sに格納するデータチャンクをパターンから取得できないためである。また、S604及びS605のパターンの格納においては、パターンVOLにパターンを格納してもよいし、当該パターンの抽出元であるデータチャンクがある物理領域と、パターンを格納する領域(パターンVOL26XPにおける領域)を関連付けてもよい。
【0105】
ところで、少なくとも一つのパターンVOL26Xについて、登録可能なパターンの数に上限が設けられることがある。例えば、パターンはPVOL26Pを通じて物理領域に書き込まれたデータチャンクであるためパターンそれ自体による容量消費は無いが、フィンガープリント値、有効フラグ及びパターンアドレスといった情報による容量消費はある。そのような容量消費の制限(又は別の理由)のために、登録可能なパターンの数に上限が設けられることがある。
【0106】
登録可能なパターンの数に上限が設けられたパターンVOL26Xについて、例えば、
図15~
図17を参照した説明が適用される。
【0107】
図15は、パターン管理テーブル2211Bの構成例を示す。
【0108】
本実施形態では、パターン管理テーブル2211A(登録可能なパターンの数に上限が無いパターンVOL26Xに対応したテーブル)と、パターン管理テーブル2211B(登録可能なパターンの数に上限があるパターンVOL26Xに対応したテーブル)との一方又は両方が存在する。
【0109】
パターン管理テーブル2211Bによれば、パターン毎に、フィンガープリント値601、有効フラグ602及びパターンアドレス603に加えて、重複数1501がある。各パターンについて、重複数1501は、当該パターンとしてのデータチャンクが存在する物理領域に関連付けられている論理領域の数である。登録可能なパターンの数に上限がある場合、重複数が多いデータチャンクが優先的にパターンとして登録されることで、転送データ削減効果を高めることができる。重複数以外の指標が採用されてもよい。例えば、データ転送回避実績、データ転送回避予測、パターン格納のための物理容量の消費量、パターンが登録からの経過時間、パターンとして最後に使用(参照)された時刻からの経過時間、パターンとしてのデータチャンクのI/O頻度(アクセス頻度)などを指標とすることができる。これらのうち一つ以上の指標が組み合わせて指標とされてもよい。
【0110】
図16は、重複排除プログラム2231が行う重複排除処理のフローを示す。
【0111】
重複排除プログラム2231が、対象のデータチャンクのフィンガープリント値を算出し(S700)、算出されたフィンガープリント値と同じフィンガープリント値のデータチャンクを探索する(S701)。そのようなデータチャンクが見つかった場合、重複排除プログラム2231が、そのようなデータチャンクが存在する物理領域の物理アドレスを取得し(S702)、当該物理領域からデータチャンクを読み出す(S703)。重複排除プログラム2231は、対象のデータチャンクと、S703で読み出したデータチャンクとを比較し、それらが一致することを確認する(S704)。重複排除プログラム2231が、対象のデータチャンクが格納されるチャンクを、S702で特定された物理領域に関連付けるポインタ更新を行う(S705)。
【0112】
重複排除プログラム2231が、対象のデータチャンクがパターンとして登録されていなければ(S706:NO)、パターン登録プログラム2227はパターン登録処理を実行してもよい(S707)。
【0113】
図17は、登録可能なパターンの数に上限がある場合にパターン登録プログラム2227が行うパターン登録処理のフローを示す。このパターン登録処理は、例えば、
図16のS707で実施される。
図14に示した処理との相違点を主に説明する。
【0114】
S601:YESの場合、S604に代えてS800が行われる。すなわち、パターン登録プログラム2227は、S603で確定したアドレスの論理領域(パターンVOL26XPにおける領域)に、登録対象のパターンを格納し、且つ、当該論理領域が関連付けられる物理領域について重複数1501をパターン管理テーブル2211Bに登録する(S800)。
【0115】
S601:NOの場合、S605~S608に代えてS801~S806が行われる。すなわち、パターン登録プログラム2227は、最も重複数が少ない登録済みパターンを、パターン管理テーブル2211Bを基に特定する(S801)。パターン登録プログラム2227は、S801で特定された重複数が、登録対象のパターンの重複数より少ないか否かを判定する(S802)。
【0116】
S802の判定結果が真の場合(S802:YES)、最も重複数が少ない登録済みパターンが、登録対象のパターンに差し替えられる。具体的には、パターン登録プログラム2227が、最も重複数が少ない登録済みパターンをパターンVOL26Xから削除する(S803)。削除したパターンが格納されていた領域に新しいパターンを格納する。パターン登録プログラム2227は、登録対象のパターンがコピー先(副ストレージシステム200B)において登録済みか否かを判定する(S804)。
【0117】
S804の判定結果が真の場合(S804:YES)、パターン登録プログラム2227は、パターン管理テーブル2211Bに、登録対象のパターンのフィンガープリント値、重複数、有効フラグ“ON”、及び、S803で削除されたパターンのアドレスを登録する(S805)。
【0118】
S804の判定結果が偽の場合(S804:NO)、パターン登録プログラム2227は、パターン管理テーブル2211Bに、登録対象のパターンのフィンガープリント値、重複数、有効フラグ“OFF”、及び、S803で削除されたパターンのアドレスを登録する(S806)。
【0119】
図17が示す例によれば、重複数の大小関係によってパターンの差し替えの有無が判定されるが、重複数に代えて又は加えて重複数以外の情報を基にパターンの差し替えの有無が判定されてもよい。例えば、データ転送回避実績、データ転送回避予測、パターン格納のための物理容量の消費量、パターンが登録されてからの経過時間と、パターンとして最後に使用(参照)された時刻からの経過時間と、パターンとしてのデータチャンクのI/O頻度(アクセス頻度)とのうちの少なくとも一つを基に、登録対象のパターンに差し替えられる登録済みパターン(つまり、削除される登録済みパターン)が決定されてよい。これにより、転送データ量削減に寄与する登録済みパターンを優先的に登録することが期待される。
【0120】
また、S601:NOの後、S801は、登録済みパターンの数が上限に達している場合に行われてもよい。すなわち、登録済みパターン数が上限に達していない場合は、
図14に例示した処理が実行されてもよい。
【0121】
図18は、正ストレージシステム200Aにおけるパターン同期プログラム2230と副ストレージシステム200Bにおける及びパターン登録プログラム2227とが行うパターン登録同期処理のフローを示す。
【0122】
パターン同期プログラム2230は、有効フラグ602“OFF”を探し(S900)、見つかった有効フラグ602“OFF”に対応したパターンを副ストレージシステム200Bに転送する(S901)。副ストレージシステム200Bにおいて、パターン登録プログラム2227が、パターン登録処理を実行する(S902)。例えば、
図14に示したパターン登録処理が実行される。副ストレージシステム200Bにおけるパターン登録プログラム2227が、
図14に示したパターン登録処理の完了を正ストレージシステム200Aに報告する。
【0123】
パターン同期プログラム2230は、パターン登録処理の完了を副ストレージシステム200Bから受信し(S903)、S900で見つかった有効フラグ602を“ON”にする(S904)。
【0124】
なお、S902では、副ストレージシステム200Bにおいて有効フラグ602“ON”が登録されてもよい。或いは、S902では有効フラグ602“OFF”が登録されるが、S904で有効フラグ602“ON”が正ストレージシステム200Aから副ストレージシステム200Bに通知され、当該通知を受けた副ストレージシステム200Bにおいて、有効フラグ602が“OFF”から“ON”に変更されてもよい。
【0125】
また、
図18に示した処理は、パターン同期プログラム2230がパラメタとしてフィンガープリント値を受信した場合に当該フィンガープリント値のパターンについて行われてもよい。
【0126】
図19は、正ストレージシステム200A(又は副ストレージシステム200B)におけるパターン削除プログラム2229が行うパターン削除処理のフローを示す。
【0127】
パターン削除プログラム2229が、パターンVOL26Xについて論理アドレス(パターン管理テーブル2211Aが表すパターンアドレス)を取得し(S1000)、取得した論理アドレスに対応したパターンの重複数をチェックする(S1001)。
【0128】
重複数が1(所定の重複数の一例)の場合(S1002:YES)、パターン削除プログラム2229が、物理記憶領域80P(又は80S)の容量が枯渇(空き容量が一定容量以下)になっているか否かを判定する(S1003)。
【0129】
S1003の判定結果が真の場合(S1003:YES)、パターン削除プログラム2229が、S1000で取得した論理アドレスに対応したパターン(及び、パターン管理テーブルのうち当該パターンに対応したレコード)を削除する(S1006)。
【0130】
S1003の判定結果が偽の場合(S1003:NO)、パターン削除プログラム2229が、S1000で取得した論理アドレスに対応したパターンが登録されてから(或いは最後に使われてから)所定の時間が経過したか否かを判定する(S1004)。S1004の判定結果が真の場合(S1004:YES)、S1006が実行されてよい。S1004の判定結果が偽の場合(S1004:NO)、一定時間経過した後に、同一又は別の論理アドレスについてS1000が実行されてよい。
【0131】
パターンは、S1002、S1003及びS1004の少なくとも一つが満たされた場合、又は、S1002、S1003及びS1004の少なくとも一つに代えて又は加えて当該パターンについて一つ以上の条件が満たされた場合に削除されてよい。
【0132】
このように、効率的にパターンを削除し、以って、パターン管理テーブル2211A又は2211Bの容量を適切に削減することができる。例えば、登録済みパターンの重複数が1であるとは、当該パターンとしてのデータチャンクが存在する物理領域に関連付けられている論理領域がパターンVOL26Xにおける論理領域のみであることを意味するが、この場合、PVOL26Pを通じて当該データチャンクが転送対象となることは無いため、当該パターンが削除されることが好ましい。
[第2の実施形態]
【0133】
第2の実施形態を説明する。その際、第1の実施形態との相違点を主に説明し、第1の実施形態との共通点については説明を省略又は簡略する。
【0134】
図20Aは、スナップショットデータのバックアップが行われるケースの一例の概要を示す。
【0135】
ストレージシステム200Xが、バックアップ元のストレージシステムの一例である。ストレージシステム200Xの構成は、上述したストレージシステム200A又は200Bと同じでよい。ストレージシステム200Xが、VOL26B(対象のVOLの一例)のスナップショットであるスナップショットVOL26Kを取得する。
【0136】
スナップショットVOL26K内のデータを「スナップショットデータ」という。スナップショットデータは、スナップショットVOL26Kの比較元(前回)のVOL(例えば、初期のVOL26B又は前回(例えば直前回)のスナップショットVOL26K)におけるデータに代えて又は加えて、スナップショットVOL26Kとそれの比較元のVOLとの差分としてデータを含む。差分としてのデータは、チャンク単位(重複排除単位)で管理されてもよいし、チャンク単位よりも小さい又は大きな単位で管理されてもよい。差分とは、比較元のVOLとスナップショットデータのデータが異なるデータのことである。例えば、スナップショットに書き込みが発生すると、書き込みデータが差分として管理される。また、スナップショット作成後、ボリューム26Bが更新されると、更新前のデータが差分データとして管理される。
【0137】
バックアップ先のストレージシステムの種類は問わないでよいが、本実施形態では、バックアップ先のストレージシステムは、オブジェクトストレージシステム200Yである。オブジェクトストレージシステム200Yは、パブリッククラウドのオブジェクトストレージサービスでもよいし、オブジェクトストレージインターフェースを提供するオブジェクトストレージプロダクトでもよい。当該ストレージプロダクトは別のデータセンタに設置されてもよいし、ストレージシステム200Xと同じデータセンタに設置されてもよい。オブジェクトを一つのファイルと対応付けると、本技術をファイルストレージであるNAS(Network Attached Storage)構成においても適用することができる。本実施形態によれば、スナップショットデータがオブジェクトストレージシステム200Yにバックアップされる。
図20Aは、1日1回スナップショットを取得しデータをオブジェクトストレージシステム200Yにバックアップする例を示している。具体的には、下記の通りである。
・ストレージシステム200Xが、12月1日時点の基底VOL26Bに格納されているデータをデータオブジェクトとしてオブジェクトストレージシステム200Yに格納する。一般的に、VOLとオブジェクトの数は1:N(Nは1以上の整数)になると想定されるため、
図20Aには、複数個のデータオブジェクト3000が示されている。しかし、VOLとオブジェクトの数は1:1でもよい。
・12月2日時点のスナップショットVOL26K1は、12月1日と12月2日の間に発生した差分データのみを保持する。この差分データのみがオブジェクトストレージシステム200Yに格納される。
・12月3日時点のスナップショットVOL26K2は、12月2日と12月3日の間に発生した差分データのみを保持する。この差分データのみがオブジェクトストレージシステム200Yに格納される。
【0138】
スナップショットの取得頻度は、上述の例によれば1日1回であるが、オブジェクトストレージシステム200Yへのデータの転送頻度は、スナップショットの取得頻度と同じでもよいし異なっていてもよい。例えば、スナップショットデータのうち参照されなくなったと検出された部分がオブジェクトストレージシステム200Yに転送されてもよい。
【0139】
このように、転送対象のデータを、スナップショットVOL26Kの全てのデータではなく差分データとすることで、転送データ量を削減することができる。
【0140】
そして、本実施形態によれば、ストレージシステム200Xが、12月3日時点での差分データAが転送対象である場合、差分データAは過去にオブジェクトストレージシステム200Yに転送された差分データAと同じであることを検出し、当該差分データAを再度オブジェクトストレージシステム200Yに転送することを回避することができる。以って、一層の転送データ量削減ができる。
【0141】
図20Bは、ストレージシステム200Xのメモリ213の構成例を示す。
【0142】
管理領域221における管理情報は、パターンVOLテーブル2210、パターン管理テーブル2211Cと、スナップショット管理テーブル2215とを含む。
【0143】
プログラム領域222に格納されるプログラムとして、例えば、I/Oプログラム2223と、パターン抽出プログラム2226と、パターン登録プログラム2227と、パターン削除プログラム2229と、パターン同期プログラム2230と、重複排除プログラム2231との他に、バックアップを取得するためのバックアップ取得プログラム2232と、バックアップを削除するためのプログラム2233とがある。
【0144】
図21は、スナップショット管理テーブル2215の構成例を示す。
【0145】
スナップショット管理テーブル2215は、スナップショット毎にオブジェクトストレージに転送されたデータを管理するテーブルである。すなわち、ストレージシステム200Xにおいて典型的なスナップショット機能を実現するためのテーブルは省略している。例えば、スナップショット26K1のデータの格納位置を管理するためのテーブルなどである。当該テーブルは、スナップショット26K1のチャンク毎に差分データの格納アドレスや、スナップショット元であるボリューム26Bのアドレスを管理する。スナップショット管理テーブル2215は、取得されたスナップショット毎に、スナップショット取得時刻2101、チャンク番号2102及びオブジェクトキー2103といった情報を含む。スナップショット作成契機とオブジェクトストレージへの転送契機を別契機とする場合、スナップショット管理テーブル2215でオブジェクトストレージへの転送状況を管理してもよい。例えば、転送完了、未転送、転送中等を管理する。
【0146】
スナップショット取得時刻2101が、スナップショットが取得された時刻を表す。チャンク番号2102は、データオブジェクトとされたデータチャンクの識別番号を表す。オブジェクトキー2103は、データオブジェクトにアクセスするためのキー(識別情報)である。スナップショットに対して、一つ以上のチャンク番号、オブジェクトキーが管理される。チャンク番号はチャンクを特定できる情報であればよく、アドレス情報などであってもよい。
【0147】
図21が示す例によれば、データチャンク(重複排除単位)とデータオブジェクトが1:1であるが、データチャンクとデータオブジェクトは1:N(Nは1以上の整数)でもよいしM:1(Mは1以上の整数)でもよい。
【0148】
図22は、パターン管理テーブル2211Cの構成例を示す。
【0149】
パターン管理テーブル2211Aは、パターン毎に、フィンガープリント値601、有効フラグ602及びパターンアドレス603の他、オブジェクトキー2201を含む。つまり、本実施形態では、転送対象のデータチャンクがデータオブジェクトとしてオブジェクトストレージシステム200Yに格納されることになり、データチャンクとしてのパターンに対して、当該データチャンクとしてのデータオブジェクトに対するオブジェクトキーが関連付けられる。
【0150】
図23は、バックアップ取得プログラム2232が行うバックアップ取得処理のフローを示す。
【0151】
バックアップ取得プログラム2232が、オブジェクトストレージへのスナップショット転送指示を受信し(S2300)する。本指示では、対象となるスナップショットが指定されている。指定されているスナップショットVOL26Kについて、比較元のVOL(直前回のスナップショット)との差分データを特定する(S2301)。バックアップ取得プログラム2232が、特定した差分データをデータチャンクに分割する(S2303)。本プログラムは、作成済みのスナップショットを指定した。しかし、本プログラムが新規スナップショットを作成し、当該新規スナップショットと比較元のVOLとの差分を転送してもよい。
【0152】
バックアップ取得プログラム2232が、S2303で得られた一つ以上のデータチャンクのうち未選択のデータチャンクを一つ選択し(S2304)、当該選択したデータチャンクのフィンガープリント値を算出する(S2305)。バックアップ取得プログラム2232が、S2305で算出されたフィンガープリント値と一致するフィンガープリント値601をパターン管理テーブル2211Cから検索する(S2306)。バックアップ取得プログラム2232が、S2306の結果として、一致するフィンガープリント値601があり、且つ、当該フィンガープリント値601に対応した有効フラグ602が“ON”か否かを判定する(S2307)。
【0153】
S2307の判定結果が偽の場合(S2307:NO)、バックアップ取得プログラム2232が、S2304で選択されたデータチャンクのオブジェクトキーを生成し(S2311)、当該データチャンクをオブジェクトストレージシステム200Yに転送(格納)する(S2312)。バックアップ取得プログラム2232が、当該データチャンクとしてのパターンをパターンVOL26Xに登録する(S2313)。その際、バックアップ取得プログラム2232が、S2305で算出したフィンガープリント値、有効フラグ“ON”、S2311で生成したオブジェクトキー、及び、パターンの登録先領域のパターンアドレスをパターン管理テーブル2211Cに登録する。次に、バックアップ取得プログラム2232は、スナップショット管理テーブル更新する(S2310)。オブジェクトストレージへ転送したチャンクのチャンク番号と、S2311で生成したオブジェクトキーを格納する。
【0154】
S2307の判定結果が真の場合(S2307:YES)、バックアップ取得プログラム2232が、一致するフィンガープリント値601に対応したパターンアドレス603が指す論理領域(パターンVOL26Xにおける領域)からパターンを読み出し、当該パターンを、S2304で選択したデータチャンクと比較して、一致することを確認する(S2308)。その後、バックアップ取得プログラム2232が、一致するフィンガープリント値601に対応したオブジェクトキー2201を取得し(S2309)、当該オブジェクトキー(及び、S2304で選択したデータチャンクのチャンク番号)を、今回のスナップショット取得の時刻に関連付けてスナップショット管理テーブル2215に登録する(S2310)。つまり、S2307の判定結果が真の場合、バックアップ取得プログラム2232は、オブジェクトキーをパターン管理テーブル2211Cから取得しスナップショット管理テーブルに格納する。これにより、差分データの少なくとも一部としてのデータチャンクを転送すること無しに当該データチャンクをオブジェクトストレージシステム200Yに転送したことにすることができる。
【0155】
S2310の後、バックアップ取得プログラム2232が、S2303で得られた一つ以上のデータチャンクの全てがS2304で選択されたか否かを判定する(S2314)。S2314の判定結果が偽の場合(S2314:NO)、処理がS2304に戻る。
【0156】
図24は、バックアップ削除プログラム2233が行うバックアップ削除処理のフローを示す。
【0157】
バックアップ削除プログラム2233が、スナップショット削除指示を受信し(S2400)、当該指示で指定されたスナップショットの取得時刻に対応する全データオブジェクト(全オブジェクトキー)を、スナップショット管理テーブル2215から特定する(S2401)。
【0158】
バックアップ削除プログラム2233が、S2401で特定されたデータオブジェクトのうち未選択のデータオブジェクトを一つ選択する(S2302)。バックアップ削除プログラム2233が、S2302で選択したデータオブジェクトが別のスナップショットVOL(削除対象のスナップショットVOL以外のいずれかのスナップショットVOL)から参照されているか否かを判定する(S2403)。
【0159】
S2403の判定結果が偽の場合(S2403:NO)、バックアップ削除プログラム2233が、当該データオブジェクトのオブジェクトキーを指定したオブジェクト削除指示をオブジェクトストレージシステム200Yに送信する。この指示に応答して、オブジェクトストレージシステム200Yから、当該指定されたオブジェクトキーから特定されるデータオブジェクトが削除される。つまり、別のスナップショットで参照されていないデータオブジェクトをオブジェクトストレージシステム200Yから削除することができる。
【0160】
S2403の判定結果が真の場合(S2403:YES)、又は、S2404の後、バックアップ削除プログラム2233が、S2401で特定された全データオブジェクトがそれぞれS2402で選択されたか否かを判定する(S2405)。S2405の判定結果が偽の場合(S2405:NO)、処理がS2402に戻る。
【0161】
S2405の判定結果が真の場合(S2405:YES)、バックアップ削除プログラム2233が、S2400で受信した指示で指定されているスナップショットの取得時刻に対応したスナップショットVOL26Xを削除する(S2406)。
【0162】
以上、いずれの実施形態においても、バックアップ元のストレージシステム(ストレージシステム200A又は200X)が、バックアップ先のストレージシステム(ストレージシステム200B又は200Y)への転送対象のデータを、パターンとして抽出する。バックアップ元のストレージシステムは、当該転送対象のデータのバックアップ元のストレージシステムでの格納先論理アドレス(例えばPVOL26Pに関する論理アドレス)に関わらず、当該転送対象のデータに関し抽出されたパターンがバックアップ元のストレージシステムに登録済みか否か判定する。当該判定の結果が偽の場合、バックアップ元のストレージシステムは、上記抽出されたパターンをバックアップ元のストレージシステムに登録し、当該転送対象のデータをバックアップ先のストレージシステムに転送する。一方、当該判定の結果が真の場合、バックアップ元のストレージシステムは、当該転送対象のデータを転送しない。
【0163】
幾つかの実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【符号の説明】
【0164】
200A:正ストレージシステム、200B:副ストレージシステム