最初に、本発明の第1の実施形態を、図面を用いて詳細に説明する。
図1は、本発明の第1の実施形態の計算機システムの構成を示すブロック図である。
本実施形態の計算機システムは、一つ以上のホスト計算機101、管理サーバ111、第1のストレージシステム125及び第2のストレージシステム161を備える。第1のストレージシステム125は、第1のネットワーク121を介してホスト計算機101に接続される。第2のストレージシステム161は、第2のネットワーク123を介して第1のストレージシステム125に接続される。一つ以上のホスト計算機101、管理サーバ111、第1のストレージシステム125及び第2のストレージシステム161は、第3のネットワーク108を介して相互に接続される。
第1のネットワーク121、第2のネットワーク123及び第3のネットワーク108は、いかなる種類のネットワークであってもよい。例えば、第1のネットワーク121及び第2のネットワーク123は、いわゆるSAN(Storage Area Network)であってもよい。第3のネットワーク108は、いわゆるLAN(Local Area Network)であってもよい。
ホスト計算機101は、ストレージシステム125によって提供される論理ボリュームにアクセスする計算機である。ホスト計算機101は、CPU(Central Processing Unit)103、メモリ106、補助記憶デバイス104、入力装置(例えばキーボード及びポインティングデバイス)102、出力装置(例えば表示装置)105、第1のネットワーク121に接続されるストレージアダプタ(例えばホストバスアダプタ)109、及び、第3のネットワーク108に接続されるネットワークアダプタ107を備える。
メモリ106には、CPU103によって実行されるプログラムが格納される。本実施形態のメモリ106には、少なくとも、アプリケーションプログラム(AP)601及びストレージシステムエージェントプログラム602が格納される(図6参照)。
メモリ106に格納されたプログラムを実行するCPU103は、必要に応じて、ストレージアダプタ109を介して、アドレスを指定したI/Oコマンド(ライトコマンド又はリードコマンド)を送信する。
管理サーバ111は、第3のネットワーク108に接続されているホスト計算機101、第1のストレージシステム125及び第2のストレージシステム161を管理する計算機である。管理サーバ111は、CPU113、メモリ116、補助記憶デバイス114、入力装置(例えばキーボード及びポインティングデバイス)112、出力装置(例えば表示装置)115、及び、第3のネットワーク108に接続されるネットワークアダプタ117を備える。
CPU113は、ネットワークアダプタ117を介して、コマンドを、第3のネットワーク108に接続されているホスト計算機101、第1のストレージシステム125又は第2のストレージシステム161に送信する。メモリ116は、図3に示すコンピュータプログラム及び情報を記憶するメモリである。
第1のストレージシステム125は、コントローラと記憶デバイス群とを備える。コントローラは、例えば、複数のフロントエンドインタフェース127と、複数のバックエンドインタフェース137と、第1の内部ネットワーク156と、一以上のキャッシュメモリ147と、一以上の制御メモリ145と、一以上の制御プロセッサ143とを備える。
記憶デバイス群は、複数の物理記憶デバイス(以下、「PDEV」と記載する)151で構成される。
フロントエンドインタフェース127は、ストレージシステム125にネットワークを介して接続されたホスト計算機101又は第2のストレージシステム161と通信するためのインタフェース回路である。従って、ストレージシステム125は、少なくとも二つのフロントエンドインタフェース127を備え、それらのうち一つは第1のネットワーク121に接続され、別の一つは第2のネットワーク123に接続される。
フロントエンドインタフェース127は、例えば、第1のネットワーク121又は第2のネットワーク123に接続されるポート129と、メモリ131と、ローカルルータ(以下、「LR」と略記する)133とを備える。LR133に、ポート129及びメモリ131が接続される。
LR133は、ポート129を介して受けたデータを任意の制御プロセッサ143で処理するために振り分ける。具体的には、例えば、制御プロセッサ143が、或るアドレスを指定するI/Oコマンドをその制御プロセッサ143に実行させるようにLR133を設定する。その設定に従って、LR133が、I/Oコマンド及びデータを振り分ける。
バックエンドインタフェース137は、PDEV151と通信するためのインタフェース回路である。バックエンドインタフェース137は、例えば、PDEV151に接続されるディスクインタフェース141と、メモリ135と、LR139と、を備える。LR139に、ディスクインタフェース141及びメモリ135が接続される。
第1の内部ネットワーク156は、例えば、スイッチ(例えばクロスバスイッチ)或いはバスで構成される。第1の内部ネットワーク156に、複数のフロントエンドインタフェース127、複数のバックエンドインタフェース137、一以上のキャッシュメモリ147、一以上の制御メモリ145及び一以上の制御プロセッサ143が接続されている。これらの要素間の通信は、第1の内部ネットワーク156を介して行われる。
キャッシュメモリ147は、ホスト計算機101からのI/Oコマンドに従って読み出される又は書き込まれるデータを一時記憶するメモリである。
制御メモリ145は、種々のコンピュータプログラム及び情報を記憶するメモリである。制御メモリ145に格納されるコンピュータプログラム及び情報の内容については後述する(図2等参照)。
制御プロセッサ143は、コントローラによる制御を実現するプロセッサである。具体的には、制御プロセッサ143は、制御メモリ145に記憶されている種々のコンピュータプログラムを実行することで、後述する処理を実行する。
PDEV151は、不揮発性の記憶デバイスであり、例えば、ハードディスクドライブ(HDD)或いはフラッシュメモリデバイスである。二以上のPDEV151によって、RAIDの規則に従うPDEVグループであるRAID(Redundant Array of Independent Disks)グループが構成されてもよい。
コントローラの構成要素であるフロントエンドインタフェース127、バックエンドインタフェース137、キャッシュメモリ147、制御メモリ145及び制御プロセッサ143に、第2の内部ネットワーク(例えばLAN)155が接続され、その第2の内部ネットワーク155に、保守管理端末153が接続される。保守管理端末153は、第3のネットワーク108にも接続されており、ストレージシステム125を保守又は管理する計算機である。ストレージシステム125の保守員は、例えば、保守管理端末153(又は、その保守管理端末153と通信可能な管理サーバ111)を操作して、制御メモリ145に記憶される種々の情報を定義することができる。
第2のストレージシステム161は、コントローラ165及びPDEV163を備える。コントローラ165は、例えば、ネットワークアダプタ162と、ホストアダプタ164と、キャッシュメモリ172と、制御メモリ171と、プロセッサ167と、ストレージアダプタ169と、を備える。
ネットワークアダプタ162は、第3のネットワーク108に接続され、管理サーバ111と通信するインタフェースである。
ホストアダプタ164は、第2のネットワーク123に接続され、第1のストレージシステム125と通信するインタフェースである。ホストアダプタ164は、例えば、第1のストレージシステム125のフロントエンドインタフェース127と同様のものであってもよい。
制御メモリ171は、種々のコンピュータプログラム及び情報を記憶するメモリである。
キャッシュメモリ172は、第1のストレージシステム125からのI/Oコマンドに従って読み出される又は書き込まれるデータを一時記憶するメモリである。
プロセッサ167は、制御メモリ171に記憶されている種々のコンピュータプログラムを実行する。少なくとも、プロセッサ167は、第1のストレージシステム125からのI/Oコマンドに従って、キャッシュメモリ172及びPDEV163に対するデータの書き込み及び読み出しを制御する。
PDEV163は、物理記憶デバイスであり、例えば、第1のストレージシステムのPDEV151と同様のものであってもよい。あるいは、PDEVは、テープ記憶媒体であってもよい。
本実施形態の第1のストレージシステム125は、いわゆる外部接続機能を備える。第2のストレージシステム161は、この機能によって第1のストレージシステム125に外部接続されている。ここで、外部接続について説明する。
既に説明したように、第1のストレージシステム125は、一つ又は複数の論理ボリュームをホスト計算機101に提供する。各論理ボリュームは、ホスト計算機101によって一つの記憶デバイスと認識される。例えば、第1のストレージシステム125が提供する論理ボリュームが、第1のストレージシステム125内のPDEV151に対応付けられてもよい。その場合、第1のストレージシステム125は、論理ボリュームへのライトコマンドを受信すると、その論理ボリュームに対応付けられたPDEV151にデータを格納する。このような論理ボリュームは、以下の説明において通常ボリュームとも記載される。
あるいは、第1のストレージシステム125が提供する論理ボリュームは、第2のストレージシステム161内のPDEV163に対応付けられてもよい。この場合、第1のストレージシステム125は、論理ボリュームへのライトコマンドを受信すると、その論理ボリュームに対応付けられたPDEV163にデータを書き込むためのライトコマンドを生成し、生成したライトコマンドを第2のストレージシステム161に送信する。第2のストレージシステム161は、第1のストレージシステム125から受信したライトコマンドに従って、データをPDEV163に格納する。このような論理ボリュームは、以下の説明において仮想ボリュームとも記載される。
このように、第1のストレージシステム125が提供する論理ボリュームに格納されるデータを、実際には第1のストレージシステム125の外部に接続された第2のストレージシステム161に格納する機能が、外部接続機能と呼ばれる。
なお、以下の説明において、上記のような外部接続機能を利用して外部接続されたストレージシステムを、外部ストレージシステムとも記載する。第1の実施形態において、第2のストレージシステム161が、外部ストレージシステムである。
図2は、本発明の第1の実施形態の第1のストレージシステム125の制御メモリ145に記憶されているコンピュータプログラム及び情報を示す説明図である。
以下の説明において、プログラムが実行する処理は、実際には、そのプログラムを実行する制御プロセッサ143が行う処理である。
制御メモリ145には、R/Wプログラム201、CoW(Copy on Write)プログラム202、移動可否判定プログラム203、移動対象決定プログラム204、ジャーナル(JNL)管理プログラム205、JNLバックアッププログラム206、JNLリストアプログラム207、JNLマージプログラム208、P−VOL作成プログラム209、複製P−VOL/JNLコピープログラム210、P−VOL/JNLペア管理プログラム211、デバイス構成管理テーブル221、LU管理テーブル222、P−VOL構成管理テーブル223、JNL管理テーブル224及びP−VOL/JNLペア管理テーブル225が記憶される。
R/Wプログラム201は、ホスト計算機101からのI/Oコマンドに従うI/Oを制御する。JNLマージプログラム208は、複数の世代の世代間差分データをマージする。JNLバックアッププログラム206は、ジャーナルデータを第2のストレージシステム161へバックアップするために環境を作る。JNLリストアプログラム207は、第2のストレージシステム161にバックアップしたジャーナルデータをストレージシステム125内で指定された世代のボリュームとして復元する。制御メモリ145に記憶されている各種プログラム及び情報の詳細は、後に説明する。
図3は、本発明の第1の実施形態の管理サーバ111のメモリ116に記憶されているコンピュータプログラム及び情報を示す説明図である。
メモリ116には、移動可否判定プログラム301、移動対象決定プログラム302、カタログ管理プログラム303及びカタログ管理情報テーブル311が記憶される。これらのプログラム及び情報の詳細は、後に説明する。
次に、本実施形態のジャーナル(JNL)データのフォーマットについて、図4Aから図4Eを参照して説明する。
本実施形態において、ジャーナルデータとは、所望の時点におけるP−VOLのイメージを保存するために、第1のストレージシステム125のスナップショット機能によって作成されるデータである。なお、P−VOL(Primary Volume)とは、ホスト計算機101によるデータI/Oの対象として指定される論理ボリュームである。後述するように、例えば現在のP−VOLのデータにジャーナルデータを反映させることによって、指定された世代のP−VOL(言い換えると、過去の指定された時刻におけるP−VOL)に格納されたデータを復元することができる。
具体的には、図4Aから図4Eは、図2に示したデバイス構成管理テーブル221、LU管理テーブル222、P−VOL構成管理テーブル223、JNL管理テーブル224、及びP−VOL/JNLペア管理テーブル225の例を示す。なお、図4Cには、図2に示されていないJNL情報テーブル231、JNL制御情報テーブル232及びJNLデータ233も示されているが、これらは、制御メモリ145には記憶されず、PDEV151に記憶される。
図4Aは、本発明の第1の実施形態のデバイス構成管理テーブル221の説明図である。
デバイス構成管理テーブル221は、P−VOL毎に用意されるテーブルである。デバイス構成管理テーブル221には、各P−VOLについて、デバイス#401、状態402、パスの有無403、接続ホスト情報404、容量405及び属性406が記録される。
デバイス#401は、各P−VOLの識別子である。
状態402は、各P−VOLの状態を示す情報である。各P−VOLの状態を示す情報とは、例えば、各P−VOLに設定されたアクセス制限(具体的には、書き込み及び読み出しの禁止、又は、読み出しのみ許可、など)を示す情報である。
パスの有無403は、各P−VOLとホスト計算機101との間にアクセスパスが定義されているか否かを示す情報である。
接続ホスト情報404は、各P−VOLにアクセスするホスト計算機101の種類を示す情報、例えば、ホスト計算機101で稼動しているオペレーティングシステムの種類などを示す情報である。
容量405は、各P−VOLの容量を示す情報である。
属性406は、各P−VOLが通常ボリュームであるか仮想ボリュームであるかを示す情報である。
図4Bは、本発明の第1の実施形態のLU管理テーブル222の説明図である。
LU管理テーブル222は、オープンホストが入出力するためのLUに用意されるテーブルである。LU管理テーブル222には、各LUについて、LU#411、ポート#412、デバイス#413及びLUN#414が記録される。
LU#411は、各LUの識別子である。
ポート#412は、デバイス#413によって識別されるP−VOLに対応するターゲットデバイスに割り当てられているポート129の番号である。
デバイス#413は、各LUに対応するP−VOLの識別子である。
LUN#414は、論理ユニット番号(LUN:Logical Unit Number)であり、各LUを識別するための識別子である。
なお、LU#411は、ポート#412に対して一意である。言い換えると、同一のポート129に割り当てられた複数のLUには、それぞれ異なるLU#411が付与されるが、二つのLUがそれぞれ異なるポート129に割り当てられている場合、それらのLUに同一のLU#411が付与される場合がある。一方、LUN#414は、第1のストレージシステム125内で一意である。
図4Cは、本発明の第1の実施形態のP−VOL構成管理テーブル223及びそれに関連するテーブルの説明図である。
P−VOL構成管理テーブル223は、デバイス構成管理テーブル221の属性406が「通常ボリューム」であるP−VOLについて用意されるテーブルである。P−VOL構成管理テーブル223には、デバイス#421、JNLG#422及びJNL情報テーブル先頭アドレス423が記録される。
デバイス#421は、各P−VOLの識別子である。
JNLG#422は、各P−VOLに対応するジャーナルが属するジャーナルグループ(JNLG)の番号である。同一のジャーナルグループに属する複数のジャーナルデータ(又はボリューム)の世代は、同一のタイミングで切り替えられる。
JNL情報テーブル先頭アドレス423は、各P−VOLに対応するジャーナルに関するJNL情報テーブル231が格納された領域の先頭アドレスを示す。
JNL情報テーブル231は、P−VOL毎に用意され、P−VOLに対応する世代間差分データ(すなわちジャーナルデータ)を管理するためのテーブルである。JNL情報テーブル231には、世代間差分データについて、世代毎に、先頭アドレス432、長さ433及び作成時刻434が記録される。
先頭アドレス432は、各世代に対応するJNL制御情報テーブル232が格納された領域の先頭アドレスを示す。
長さ433は、世代間差分データの、各世代に対応するデータサイズ及び要素数を示す。
作成時刻434は、各世代の差分を記憶することになった時刻、例えば、最新世代を確定する原因となったマーカの受領時刻を示す。マーカとは、ホスト計算機101がP−VOLのイメージをバックアップデータの世代として確定するために第1のストレージシステム125に送信するコマンドである。マーカを受信したストレージシステム125は、スナップショット機能を用いて、マーカの受信時点における、マーカによって指定されたP−VOLのイメージを最新世代として確定する。
さらに、JNL情報テーブル231は、複数の世代間差分データをマージすることによって作成されたマージ差分データも管理する。JNL情報テーブル231には、マージ差分データについても、世代毎に、先頭アドレス432、長さ433及び作成時刻434が記録される。なお、マージ差分データにおける「世代」は、マージ差分データに対応する複数世代のうちの或る世代(例えば、最新又は最古の世代)であり、作成時刻434は、対応するマージ差分データがJNLエリアに格納された時刻である。
世代間差分データ及びマージ差分データに対応した先頭アドレス432を参照することで、その世代間差分データ又はマージ差分データに対応したJNL制御情報テーブル232を参照することができる。
JNL制御情報テーブル232は、世代間差分データ及びマージ差分データのそれぞれについて、世代毎に存在する。JNL制御情報テーブル232は、世代に対応した差分ビットマップ(BM)と、データ要素の在り処とを管理するためのテーブルである。
具体的には、例えば、JNL制御情報テーブル232には、デバイス#441、長さ442、差分BM443、及び、対応するJNLデータ233を構成する各JNLデータ要素451に対応したデータ格納アドレス444が記録される。
デバイス#441は、JNL制御情報テーブル232が示すジャーナルに対応するP−VOLの識別子を示す。
長さ442は、各世代に対応するジャーナルデータ(すなわち世代間差分データ又はマージ差分データ)の長さを示す。
差分BM443は、各世代に対応する差分BMである。
データ格納アドレス444は、各世代に対応するJNLデータ233を構成する各JNLデータ要素451が格納された領域のアドレスを示す。各世代に対応するJNLデータ233が複数のJNLデータ要素451(例えばJNLデータ要素451A及びJNLデータ要素451B)を含む場合、データ格納アドレス444は、それらの複数のJNLデータ要素451に対応する複数のアドレス(例えばデータ格納アドレス444A及びデータ格納アドレス444B)を含む。
図4Dは、本発明の第1の実施形態のJNL管理テーブル224の説明図である。
JNL管理テーブル224は、P−VOL毎に用意され、P−VOLに関するバックアップデータを管理するためのテーブルである。JNL管理テーブル224には、例えば、P−VOL#461、スナップショット取得時刻462及びバックアップ取得時刻463が記録される。
P−VOL#461は、P−VOLの番号(識別子)である。P−VOL#461として、デバイス#401と同様の識別子が用いられてもよい。
スナップショット取得時刻462は、P−VOLとペアを構成するS−VOL(Secondary Volume)を作成した時刻を示す。例えば、マーカを受信した第1のストレージシステム125は、そのマーカに従って作成されるスナップショットの世代に対応するS−VOLを作成し、その世代に対応するJNLデータ233を、作成されたS−VOLに格納してもよい。
バックアップ取得時刻463は、バックアップが取得された時刻、言い換えると、スナップショット取得時刻462が示すスナップショットの世代が確定される原因となったマーカを受信した時刻を示す。
さらに、JNL管理テーブル224には、図4Dには記載されていないが、取得世代数、バックアップ期間及びマージ世代数などが記録されてもよい。取得世代数は、P−VOLについて取得されたバックアップの世代の数を示す。マージ世代数は、何世代分の世代間差分データが蓄積されたときにマージ処理を実行するかを示す、世代数の閾値である。
図4Eは、本発明の第1の実施形態のP−VOL/JNLペア管理テーブル225の説明図である。
P−VOL/JNLペア管理テーブル225は、各P−VOLと、そのP−VOLに対応するジャーナルとの組(ペア)を管理するための情報を含む。具体的には、P−VOL/JNLペア管理テーブル225には、P−VOL#471、P−VOL格納装置番号472、複製P−VOL#473、複製P−VOL作成時刻474、JNL−VOL#475及び複製P−VOL/JNLペア番号476が記録される。
P−VOL#471は、P−VOLの番号(識別子)である。P−VOL#471として、デバイス#401と同様の識別子が用いられてもよい。
P−VOL格納装置番号472は、P−VOLを格納する(すなわちそのP−VOLをホスト計算機101に提供する)ストレージシステムの装置識別子である。
複製P−VOL#473は、P−VOL#471によって識別されるP−VOLの複製の識別子である。後述するように、任意のP−VOLの複製を作成し、その複製(以下、複製P−VOLとも記載する)を、元のP−VOLを格納するストレージシステムに外部接続された別のストレージシステムに格納することができる。複製P−VOL#473は、このように複製され、外部のストレージシステムに格納された複製P−VOLの識別子である。
複製P−VOL作成時刻474は、複製P−VOLが作成された時刻(又は作成された期間)を示す。
JNL−VOL#475は、複製P−VOL#473によって識別される複製P−VOLに対応するジャーナルデータが格納された論理ボリュームの識別子を示す。
複製P−VOL/JNLペア番号は、複製P−VOLと、それに対応するジャーナルデータとのペアを識別する番号である。
図5は、本発明の第1の実施形態におけるカタログ管理情報テーブル311のフォーマットの説明図である。
カタログ管理情報テーブル311は、各P−VOLの各世代のジャーナルデータがどの装置に格納されているかを示す情報である。具体的には、カタログ管理情報テーブル311には、P−VOL#501、P−VOL格納装置番号502、世代番号503、ジャーナル格納外部装置番号504、外部世代番号505、複製P−VOL#506、外部JNL−VOL番号507及びバックアップ取得時刻508が記録される。
P−VOL#501は、管理サーバ111の管理下にあるストレージシステムに格納された各P−VOLの番号(識別子)である。P−VOL#501として、デバイス#401と同様の識別子が用いられてもよい。
P−VOL格納装置番号502は、各P−VOLを格納する(すなわちそのP−VOLをホスト計算機101に提供する)ストレージシステムの装置識別子である。
世代番号503は、各P−VOLに対応して作成されたスナップショットの世代の番号である。各P−VOLに対応する複数の世代のスナップショットが作成された(言い換えると、一つのP−VOLの複数の時点におけるイメージを復元するためのジャーナルデータが記録された)場合、一つのP−VOL#501に対応する世代番号503に複数の値(すなわち作成された複数の世代の番号)が記録される。
ジャーナル格納外部装置番号504は、作成された世代のジャーナルデータの複製を格納するストレージシステムの装置識別子である。後述するように、ジャーナルデータの複製が、P−VOLを格納するストレージシステムに外部接続されたストレージシステム(すなわち外部ストレージシステム)に格納され、もとのジャーナルデータが削除されてもよい。この場合、ジャーナルデータの複製を格納するストレージシステムの識別子がジャーナル格納外部装置番号504として記録される。
外部世代番号505は、上記のようにジャーナルデータの複製が外部ストレージシステムに格納された場合、外部ストレージシステムがそのジャーナルデータの複製を管理するために付与した世代番号である。
複製P−VOL#506は、P−VOLの複製の識別子である。上記のように、ジャーナルデータの複製が外部ストレージシステムに格納される場合、さらに、P−VOLの複製が作成され、それが外部ストレージシステムに格納されてもよい。複製P−VOL#506は、そのようにして作成された複製の識別子である。
外部JNL−VOL番号507は、ジャーナルデータの複製を格納する外部ストレージシステム内の論理ボリュームの識別子である。
バックアップ取得時刻508は、ジャーナルデータの複製が外部ストレージシステムに格納された時刻を示す。
ここで、カタログ管理情報テーブル311の具体例を説明する。
例えば、第1のストレージシステム125の装置識別子が「ST1」、第2のストレージシステム161の装置識別子が「ST2」、第1のストレージシステム125に格納されたP−VOL(以下、図5の説明において「当該P−VOL」と記載する。ただし、このP−VOLは通常ボリュームである)の識別子が「P−VOL01」である場合について説明する。この場合、P−VOL#501として「P−VOL01」、それに対応するP−VOL格納装置番号502として「ST1」が記録される。
この例において、当該P−VOLのスナップショットが過去に2回作成された場合、1回目の(すなわち古い)スナップショットの世代番号「1」、及び、2回目の(すなわち新しい)スナップショットの世代番号「2」が、「P−VOL01」に対応する世代番号503として記録される。
各世代のスナップショットのジャーナルデータ(少なくとも、それらの世代のJNLデータ233)は、通常、第1のストレージシステム125(すなわち、当該P−VOLを格納するストレージシステム)内のいずれかの論理ボリュームに格納される。しかし、それらのうち少なくとも一つの複製が第2のストレージシステム161内の論理ボリュームに格納されてもよい。複製が第2のストレージシステム161内の論理ボリュームに格納されたあと、その複製元のジャーナルデータは、第1のストレージシステム125から削除されてもよい。
例えば、2回目のスナップショットの世代のジャーナルデータが第1のストレージシステム125から削除され、その複製が第2のストレージシステム161の識別子「JNL−VOL11」によって識別される論理ボリュームに格納された場合、世代番号503の値「2」に対応するジャーナル格納外部装置番号504及び外部JNL−VOL番号507として、それぞれ、「ST2」及び「JNL−VOL11」が記録される。さらに、そのジャーナルデータが、第2のストレージシステム161内で第1世代として管理される場合、世代番号503の値「2」に対応する外部世代番号505として「1」が記録される。
この場合、第2世代のジャーナルデータの複製が第2のストレージシステム161に格納された時刻が、世代番号503の値「2」に対応するバックアップ取得時刻508として記録される。
さらに、当該P−VOLの複製が作成され、第2のストレージシステム161に格納されてもよい。例えば、当該P−VOLの複製が第2のストレージシステム161の識別子「P−VOL11」によって識別される論理ボリュームとして格納される場合、「P−VOL01」に対応する複製P−VOL#506として「P−VOL11」が記録される。
なお、図2の例では、管理サーバ111のメモリ116のみにカタログ管理情報テーブル311が格納されているが、カタログ管理情報テーブル311と同等の情報がホスト計算機101のメモリ106に格納されてもよいし、第1のストレージシステム125の制御メモリ145内に格納されてもよいし、さらに第2のストレージシステム161の制御メモリ171に格納されてもよい。
ここで、ジャーナルデータを格納する処理の概要を説明する。
図19は、本発明の第1の実施形態においてJNLデータ要素を格納する処理の概要を示す説明図である。
図19の例において、第1のストレージシステム125に、P−VOL187Pが格納されている。P−VOL187Pは、プライマリの論理ボリューム(すなわちオンラインの論理ボリューム)である。ホスト計算機101からライトデータが書き込まれることで、P−VOL187Pは更新される。
JNL関連エリア188は、第1のストレージシステム125のいずれかの論理ボリュームに確保された記憶領域であり、JNL制御情報格納エリア2501及びJNLデータ格納エリア2503を含む。JNL制御情報格納エリア2501には、図19に示すように、確定した各世代に対応する差分BM443(BMは“ビットマップ”の略語である)を含むJNL制御情報テーブル232が格納される。JNLデータ格納エリア2503には、確定した各世代に対応するJNLデータ233が格納される。
図19の例では、世代(N−2)に対応する差分BM443A及びJNLデータ233A、世代(N−1)に対応する差分BM443B及びJNLデータ233B、世代(N)に対応する差分BM443C及びJNLデータ233C、及び、世代(N+1)に対応する差分BM443D及びJNLデータ233Dが格納される。図19の説明において、差分BM443A〜443Dに共通する説明をする場合、これらを総称して差分BM443とも記載する。JNLデータ233A〜233Dに共通する説明をする場合、これらを総称してJNLデータ233とも記載する。
なお、図19にはジャーナルデータの代表的な要素として差分BM443及びJNLデータ233を図示したが、実際には、図4Cに示すように、種々の必要な情報が格納される。
ここで、「世代」とは、P−VOL187Pについての或る時点のことである。例えば、世代(N)とは、世代(N−1)の時点を過ぎた後、P−VOL187Pについて所定の世代確定イベントが発生した時(本実施形態では、ホスト計算機101から後述のマーカを受領した時)のことである。
なお、図19の例では、確定している最新の世代が世代(N)であるため、未確定世代は、世代(N+1)である。次回にマーカを受領すると、世代(N+1)が確定する。これによって、世代(N+1)が、確定している最新の世代となり、未確定世代は世代(N+2)である。
上記のように世代が更新された場合、JNL情報テーブル231に、新たに確定した世代に関するエントリが追加される。
図4Cにおいて説明したように、JNLデータ233は、一つ以上のJNLデータ要素451の集合である。JNLデータ要素451は、P−VOL187Pにデータ要素が書き込まれることに起因してP−VOL187Pから退避されたデータ要素である。
具体的には、例えば、未確定世代が世代(N)である場合、ストレージシステム125がホスト計算機101からマーカを受信した時に、世代(N)が確定し、未確定世代が世代(N+1)となる。その場合、JNLデータ格納エリア2503に蓄積されているJNLデータ233B(つまり、世代(N)のP−VOL187Pと世代(N−1)のP−VOL187Pとの差分に相当するデータ)が、一つ前の世代(この例では世代(N−1))のP−VOLを復元するためのJNLデータ要素451としてJNLデータ格納エリア2503に退避される。
これによって、JNLデータ格納エリア2503には、世代(N)に対応したJNLデータ233(すなわち、世代(N)と世代(N−1)との差分に相当するデータ)が蓄積される。
差分BM443は、論理ボリュームの世代間の差分を表すビットマップである。具体的には、例えば、図19の例において、世代(N)に対応した差分BM443は、世代(N)のP−VOL187Pと世代(N−1)のP−VOL187Pとの差分を表すビットマップである。
より具体的には、P−VOL187P内の或るブロックに、世代(N−1)より後の或る時点で初めてライトデータ要素が書き込まれた場合、その或るブロックに対応したビット(世代(N)に対応した差分BM443内のビット)が、オンにされ(すなわち、ライト発生を表す値(例えば“1”)に更新され)、そのライトデータ要素に対応するJNLデータ要素451が、JNLデータ格納エリア2503に格納される。なお、差分BM443を構成する各ビットは、P−VOL187Pの各ブロックに対応している。
図19の例では、月曜日に書き込まれたライトデータ要素に対応する差分BM443及びそれに対応するJNLデータ233が「月曜日のジャーナル」、火曜日に書き込まれたライトデータ要素に対応する差分BM443及びそれに対応するJNLデータ233が「火曜日のジャーナル」として扱われる。
次に、JNLデータを取得する方法について説明する。
JNLを取得する方法は二つ存在する。図20に示す方法によれば、ライトデータ要素はP−VOLへ格納され、その格納によって更新される前のP−VOLのデータがJNLデータ233として格納される。このようにして作成されたジャーナルは、Beforeジャーナルとも呼ばれる。一方、図22に示す方法によれば、ライトデータ要素はP−VOLへ格納され、マーカ受信時に、更新データがJNLデータ233として格納される。このようにして作成されたジャーナルは、Afterジャーナルとも呼ばれる。
図20は、本発明の第1の実施形態において、Beforeジャーナルが作成される場合に、P−VOLにライトデータ要素を書き込むライト処理の説明図である。
図20の説明において、ライトコマンドによってライト先として指定されているP−VOLを、「対象P−VOL」と記載する。
R/Wプログラム201は、ホスト計算機101から(例えばP−VOL187Pをライト先として指定した)ライトコマンドを受信すると(S16001)、ライトデータ要素を格納するためのスロットを確保する(S16002)。「スロット」とは、キャッシュメモリ147の単位管理領域である。
さらに、R/Wプログラム201は、差分BM443内の、ライトコマンドで指定されているライト先ブロックに対応したビットを参照する(S16003)。
S16003の結果、参照先がオンビットである場合、ライトコマンドで指定されているライト先ブロックに格納されたデータは、前回のマーカ受信時から現在までの間に少なくとも1回更新されている。この場合、R/Wプログラム201は、S16008以降の処理を実行する。すなわち、ライト先ブロックに格納されているデータ要素を退避させずに、S16007へ進む。
一方、S16003の結果、参照先がオフビットである場合、ライトコマンドで指定されているライト先ブロックに格納されたデータは、前回のマーカ受信時から現在までの間に一度も更新されていない。言い換えると、ライトコマンドで指定されているライト先ブロックに格納されたデータは、前回のマーカ受信時にそのブロックに格納されていたデータである。前回のマーカ受信時の対象P−VOL187Pを復元するためには、そのデータを保存しておく必要がある。このため、R/Wプログラム201は、ライト先ブロックに記憶されているデータ要素を、JNLデータ格納エリア2503にJNLデータ要素451として格納(すなわち退避)する(S16006)。
そして、R/Wプログラム201は、S16006の格納が反映されるように、JNL制御情報テーブル232を更新する(S16007)。具体的には、R/Wプログラム201は、ライト先ブロックに対応する差分BM443のビットをオンにし、そのライト先ブロックに対応するデータ格納アドレスとして、S16006においてJNLデータ要素451が格納された領域のアドレスを追加する。
その後、R/Wプログラム201が、フロントエンドインタフェース127内のメモリ131に記憶されているライトデータ要素を、S16002で確保されたスロットに書き込む(S16008)。
R/Wプログラム201は、そのスロットに書き込まれているライトデータ要素を、P−VOL内のライト先ブロックに書き込む(S16009)。
図21は、本発明の第1の実施形態において、Beforeジャーナルが作成される場合の、作成されたジャーナルデータの例の説明図である。
具体的には、図21は、P−VOL187Pに格納されたデータの推移を例示するものである。
図21に示す最も古い時点において、P−VOL187Pは、データ2701A、データ2701B及びデータ2701Cを格納している(世代N)。説明を簡単にするため、データ2701A、データ2701B及びデータ2701Cは、それぞれ、P−VOL187Pの三つのブロックの各々に格納されるものと仮定する。
その後、第1のストレージシステム125は、マーカ2703Aをホスト計算機101から受信する。この時点で、世代Nが確定する。
その後、ホスト計算機101からのライトコマンドに従って、データ2701Aがデータ2701Dに更新される。この場合、第1のストレージシステム125は、データ2701Aの複製をJNLデータ要素2702AとしてJNLデータ格納エリア2503に格納する。なお、JNLデータ要素2702Aは、図4Cにおいて説明したJNLデータ要素451(JNLデータ要素451A、451B等)のいずれかに相当する。後述するJNLデータ要素2702B等についても同様である。
同様に、データ2701Bがデータ2701Fに更新されると、データ2701Bの複製がJNLデータ要素2702BとしてJNLデータ格納エリア2503に格納される。
さらに、図21では省略されているが、データ2701Aが格納されていたブロック及びデータ2701Bが格納されていたブロックの各々に対応する差分BM443のビットがONに更新される。
その後、データ2701Dはさらにデータ2701Eに更新される。しかし、この場合、既にデータ2701A(すなわち、マーカ2703A受信時点に格納されていたデータ)の複製がJNLデータ要素2702Aとして格納されているため、データ2701Dの複製は格納されない。
その後、第1のストレージシステム125は、マーカ2703Bをホスト計算機101から受信する。この時点で、世代N+1が確定する。この時点の差分BM443、JNLデータ要素2702A及び2702Bは、世代NのP−VOL187Pを復元するために必要であるため、世代Nが破棄又はマージされるまで、変更されることなく保持される。
その後、データ2701Eがデータ2701Gに更新され、データ2701Cがデータ2701Hに更新される。この場合、データ2701Eの複製がJNLデータ要素2702Eとして、データ2701Cの複製がJNLデータ要素2702Cとして、JNLデータ格納エリア2503内の新たに用意された領域に格納される。
さらに、新たに差分BM443が用意され、データ2701Eが格納されていたブロック及びデータ2701Cが格納されていたブロックの各々に対応するビットがONに更新される。
現在時刻におけるP−VOL187Pは、上記の更新の結果、データ2701G、データ2701F及びデータ2701Hを格納していると仮定する。現在時刻のP−VOL187Pは、世代N+2に相当するが、次回のマーカ(図示省略)を受信するまで確定しない。
現在時刻のP−VOL187Pのデータ2701G及びデータ2701Hを、それぞれ、JNLデータ要素2702E及びJNLデータ要素2702Cによって置き換えることによって、確定した世代N+1のP−VOL187Pを復元することができる。さらに、その復元された世代N+1のP−VOL187PのJNLデータ要素2702E及びデータ2701Fを、それぞれ、JNLデータ要素2702A及びJNLデータ要素2702Bによって置き換えることによって、世代NのP−VOL187Pを復元することができる。
この置き換えは、データを上書きすることによって物理的に実行されてもよいが、アクセス先を変更することによって仮想的に実行されてもよい。
例えば、上記のようにP−VOL187Pのデータ2701GがJNLデータ要素2702Eによって置き換えられる場合を例として説明すると、P−VOL187Pのデータ2701GにJNLデータ要素2702Eが上書きされてもよい。あるいは、R/Wプログラム201が、データ2701Gが格納されたブロックへのリード要求を受信すると、要求されたブロックからデータ2701Gを読み出す代わりに、JNLデータ要素2702Eが格納された記憶領域からJNLデータ要素2702Eを読み出し、それをリード要求に対する応答として送信してもよい。
なお、本実施形態の説明において、「P−VOLにジャーナルデータを反映させる」のような記載がある場合、この「反映」は、上記のような置き換えを意味する。
図22は、本発明の第1の実施形態において、Afterジャーナルが作成される場合に、P−VOLにライトデータ要素を書き込むライト処理の説明図である。
図22の説明において、ライトコマンドで指定されているP−VOLを、「対象P−VOL」と記載する。また、以下の説明では、説明が冗長になるのを防ぐために、世代Kに対応する対象のことを、その対象の名称の後に(K)を付けて記載することがある。具体的には、例えば、世代(j)に対応したJNL制御情報を「JNL制御情報(j)」と記載することがある。
フロントエンドインタフェース127が、ホスト計算機101から、ライトコマンド及びライトデータ要素を受信し、メモリ131でライトデータ要素を記憶する(S8010)。ライトコマンドは、制御プロセッサ143に転送される。
R/Wプログラム201が、ライトコマンドの受信に応答して、キャッシュメモリ147からスロットを確保する(S8020)。
R/Wプログラム201が、ライトコマンド完了の報告を、ライトコマンドの送信元のホスト計算機101に送信する(S8030)。それに応答して、ライトデータ要素がホスト計算機101から送信され、フロントエンドインタフェース127内のメモリ131に記憶される。
R/Wプログラム201が、フロントエンドインタフェース127内のメモリ131に記憶されたライトデータ要素を、確保されたスロットに書き込む(S8040)。
R/Wプログラム201が、スロット内のライトデータ要素を、対象P−VOL187P内のライト先ブロックに書き込む(S8050)。さらに、R/Wプログラム201が、P−VOL187Pの差分BM443のビットのうち、更新のあったブロックに対応するビットをONする(S8060)。
その後、任意のタイミングで、ホスト計算機101はP−VOL187Pへのマーカを送信する。ストレージシステム125は、マーカを受信したら(S8070)、ジャーナルを取得する(S8080)。すなわち、ストレージシステム125は、対象P−VOL187Pに対応する差分BM443のビットのうち、ONになっているビットに対応するブロックのデータを、JNLデータ格納エリア2503内にJNLデータ233としてコピーする。ストレージシステム125は、コピー先の領域のアドレスをデータ格納アドレス444として管理する。
上記の処理によってジャーナルの作成が完了すると、ストレージシステム125はホスト計算機101へ完了報告を送信する(S8090)。
以降の説明は、特に明記しない限り、Beforeジャーナルが作成される場合を例として採用するが、Afterジャーナルが作成される場合にも同様の処理によって本発明を適用することができる。
次に、ジャーナルデータを外部ストレージシステムに移動する処理について説明する。ジャーナルデータの外部ストレージシステムへの移動とは、第1のストレージシステム125に格納されたジャーナルデータ(少なくともJNL制御情報テーブル232及びJNLデータ233)の複製を第2のストレージシステム161に格納し、元のジャーナルデータを第1のストレージシステム125から削除することを意味する。
図6は、本発明の第1の実施形態において実行される、ジャーナルデータを外部ストレージシステムに移動する処理の概要の説明図である。
図6の例では、管理サーバ111は、所定の条件が満たされる場合に、ホスト計算機のストレージシステムエージェントプログラム602にジャーナルデータ移動指示を送信する。
ホスト計算機101は、ジャーナルデータ移動指示を第1のストレージシステム125に送信する。
第1のストレージシステム125は、受信した指示によって指定されたジャーナルデータ(例えば、最も古い世代のジャーナルデータ)の複製を第2のストレージシステム161に送信する。
第2のストレージシステム161は、受信したジャーナルデータの複製を論理ボリュームに格納する。
第1のストレージシステム125は、ジャーナルデータの複製が第2のストレージシステム161に格納されると、指定されたジャーナルデータを第1のストレージシステム125のJNL関連エリア188から削除する。この削除によって空いた領域は、新たな世代のジャーナルデータを格納するために使用することができる。
図7は、本発明の第1の実施形態において実行される、ジャーナルデータを外部ストレージシステムに移動する処理を示すフローチャートである。
図7は、図6に示した処理の詳細を示すものである。
最初に、管理サーバ111の移動可否判定プログラム301は、ジャーナルデータを外部ストレージシステムに移動する必要があるか否かを判定する(S3010)。具体的には、移動可否判定プログラム301は、所定の条件が満たされるか否かを判定し、満たされると判定された場合に、ジャーナルデータを外部ストレージシステムに移動する必要があると判定してもよい。
例えば、移動可否判定プログラム301は、第1のストレージシステム125に格納されたジャーナルデータ量を監視し、そのジャーナルデータ量が所定の閾値を超えた場合、所定の条件が満たされたと判定してもよい。
第1のストレージシステム125に格納されたジャーナルデータ量は、例えば、全世代のJNL制御情報テーブル232に記録された長さ442の値を合計することによって算出される。移動可否判定プログラム301は、長さ442の値又はその合計値を第1のストレージシステム125から取得することによってジャーナルデータ量を監視することができる。
このようにして取得されたジャーナルデータ量が所定の閾値を超えた場合、移動可否判定プログラム301は、所定の条件が満たされた(すなわち、ジャーナルデータを外部ストレージシステムに移動する必要がある)と判定してもよい。
あるいは、移動可否判定プログラム301は、第1のストレージシステム125に格納された全データ量が所定の閾値を超えた場合に、所定の条件が満たされたと判定してもよい。
あるいは、移動可否判定プログラム301は、第1のストレージシステム125に格納されたジャーナルデータのアクセス頻度を監視し、あるジャーナルデータのアクセス頻度が所定の閾値を下回った場合、所定の条件が満たされた(すなわち、そのジャーナルデータを外部ストレージシステムに移動する必要がある)と判定してもよい。なお、アクセス頻度は、例えば、後述する方法によって算出されてもよい(S3020参照)。
あるいは、移動可否判定プログラム301は、ジャーナルデータを移動する指示をユーザから受けた場合に、所定の条件が満たされたと判定してもよい。
S3010において、所定の条件が満たされると判定された場合、管理サーバ111の移動対象決定プログラム302は、移動すべきジャーナルデータを選択する(S3020)。具体的には、移動対象決定プログラム302は、移動すべきJNLデータ233の世代又は作成時刻を選択する。
移動対象決定プログラム302は、任意の世代のジャーナルデータを外部ストレージシステムに移動することができる。しかし、外部ストレージシステムに移動されたジャーナルデータを用いて所望の世代のP−VOLを復元するためには、ジャーナルデータを外部ストレージシステムから第1のストレージシステム125にコピーするための時間を要する。このようなコピーのための時間を少なくするためには、アクセス頻度の低いジャーナルデータ(言い換えると、復元される頻度が低い世代に関するジャーナルデータ)を外部ストレージシステムに移動することが望ましい。
一般に、古い世代を復元する必要が生じる可能性は低いと予想される。このため、最も古い世代のジャーナルデータがS3020において選択されてもよい。
あるいは、移動対象決定プログラム302は、各世代のアクセス頻度を取得し、最もアクセス頻度の低い世代のジャーナルデータを選択してもよい。この場合、第1のストレージシステム125は、各世代のアクセス頻度を示す情報を管理サーバ111に提供する必要がある。例えば、JNL情報テーブル231に、さらに、世代ごとのアクセス回数(すなわちその世代が復元された回数)が記録され、そのアクセス回数(図示省略)と作成時刻434とに基づいてアクセス頻度が計算されてもよい。
あるいは、移動対象決定プログラム302は、S3020において、ユーザによって指定されたジャーナルデータを選択してもよい。ユーザは、例えば、任意の世代を指定する情報を、管理サーバ111の入力装置112を用いて入力してもよい。この場合、移動対象決定プログラム302は、ユーザによって指定された世代のジャーナルデータを選択する。
さらに、移動対象決定プログラム302は、S3020において、選択されたジャーナルデータの移動先も選択する。具体的には、例えば、移動対象決定プログラム302は、第2のストレージシステム161の論理ボリュームのうち、選択されたジャーナルデータの量と同等以上の空き容量を持つものを、移動先として選択してもよい。
次に、管理サーバ111は、ジャーナルデータ移動指示をホスト計算機101に送信する(S3030)。このジャーナルデータ移動指示は、移動すべきジャーナルデータ及び移動先(すなわち、S3020において選択されたジャーナルデータ及び移動先)の指定を含む。
ホスト計算機101は、管理サーバ111から受信したジャーナルデータ移動指示を第1のストレージシステム125に送信する(S3040)。
第1のストレージシステム125のJNLバックアッププログラムは、受信したジャーナルデータ移動指示に従って、指定されたジャーナルデータを指定された移動先に移動する(S3050)。具体的には、例えば移動すべきジャーナルデータの世代が指定されている場合、JNLバックアッププログラムは、指定された世代に対応するジャーナルデータ(少なくとも、差分BM443及びJNLデータ233)をJNL関連エリア188から読み出し、読み出したジャーナルデータを指定された移動先に格納する指示を第2のストレージシステム161に送信する。
第2のストレージシステム161(すなわち外部ストレージシステム)は、送信された指示に従って、送信されたジャーナルデータを、指定された移動先に格納する(S3060)。この格納が終了すると、第2のストレージシステム161は、格納が終了したことの報告を第1のストレージシステム125に送信する。
第1のストレージシステム125は、上記の報告に基づいて、送信したジャーナルデータが第2のストレージシステム161に格納されたことを確認すると、ジャーナルデータの移動が終了したことの報告を管理サーバ111に送信する(S3070)。
さらに、第1のストレージシステム125は、指定されたジャーナルデータをJNL関連エリア188から削除する。第1のストレージシステム125は、この削除を、S3050において実行してもよいし、送信したジャーナルデータが第2のストレージシステム161に格納されたことを確認した後(すなわち、S3060の報告を受信した後)に実行してもよい。
さらに、第1のストレージシステム125のJNL管理プログラム205は、JNL管理テーブル224を更新する。具体的には、移動したジャーナルデータに対応するP−VOLの識別子がP−VOL#461として記録される。移動したジャーナルデータに対応する作成時刻434の値がスナップショット取得時刻462として記録される。S3060の格納が実行された時刻がバックアップ取得時刻463として記録される。
管理サーバ111のカタログ管理プログラム303は、S3070の報告を受信すると、S3050からS3060において実行されたジャーナルデータの移動を反映させるようにカタログ管理情報テーブル311を更新する(S3080)。
具体的には、S3050において移動したジャーナルデータに対応するジャーナル格納外部装置番号504、外部世代番号505、外部JNL−VOL番号507及びバックアップ取得時刻508が、次のように更新される。すなわち、ジャーナル格納外部装置番号504として、第2のストレージシステム161の識別子が記録される。外部世代番号505として、第2のストレージシステム161が移動後のジャーナルデータに付与した世代番号が記録される。外部JNL−VOL番号507として、ジャーナルデータの移動先の論理ボリュームの識別子が記録される。バックアップ取得時刻508として、S3060の格納が実行された時刻が記録される。
以上で、ジャーナルデータを外部ストレージシステムに移動する処理が終了する。
このように、ジャーナルデータを外部ストレージシステムに移動することによって、第1のストレージシステム125の空き容量を確保することができる。これによって、維持及び管理するバックアップデータの量及び世代数を拡大することができる。
図8は、本発明の第1の実施形態において実行される、ジャーナルデータを外部ストレージシステムに移動する処理の別の例を示すフローチャートである。
図8は、図6及び図7に示す処理の変形例である。図6及び図7では、管理サーバ111がジャーナルデータを移動するか否かを判定し、移動すべきジャーナルデータ及び移動先を選択した。一方、図8では、第1のストレージシステム125が、ジャーナルデータをするか否かを判定し、移動すべきジャーナルデータ及び移動先を選択する。以下、図8の処理について説明する。
最初に、第1のストレージシステム125の移動可否判定プログラム203は、ジャーナルデータを外部ストレージシステムに移動する必要があるか否かを判定する(S4010)。この判定は、図7のS3010と同様に実行されてもよい。
次に、第1のストレージシステム125の移動対象決定プログラム204は、移動すべきジャーナルデータを選択する(S4020)。この選択は、図7のS3020と同様に実行されてもよい。
次に、第1のストレージシステム125のJNLバックアッププログラムは、選択されたジャーナルデータを選択された移動先に移動する(S4030)。この移動は、図7のS3050と同様に実行されてもよい。
第2のストレージシステム161は、第1のストレージシステム125から送信された指示に従って、送信されたジャーナルデータを、指定された移動先に格納する(S4040)。この格納が終了すると、第2のストレージシステム161は、格納が終了したことの報告を第1のストレージシステム125に送信する。
第1のストレージシステム125のJNL管理プログラム205は、上記の報告を受信すると、JNL管理テーブル224を更新する(S4050)。具体的には、移動したジャーナルデータに対応するP−VOLの識別子がP−VOL#461として記録される。移動したジャーナルデータに対応する作成時刻434の値がスナップショット取得時刻462として記録される。S4040の格納が実行された時刻がバックアップ取得時刻463として記録される。
さらに、第1のストレージシステム125は、例えば、送信したジャーナルデータが第2のストレージシステム161に格納されたことを確認した後、指定されたジャーナルデータをJNL関連エリア188から削除する。
次に、第1のストレージシステム125は、ジャーナルデータの移動が終了したことの報告を管理サーバ111に送信する(S4060)。
管理サーバ111のカタログ管理プログラム303は、S4060の報告を受信すると、S4030からS4040において実行されたジャーナルデータの移動を反映させるようにカタログ管理情報テーブル311を更新する(S4070)。この更新は、図7のS3080と同様に実行されてもよい。
以上で、ジャーナルデータを外部ストレージシステムに移動する処理が終了する。
図9は、本発明の第1の実施形態において実行される、ジャーナルデータを外部ストレージシステムからリストアする処理の概要の説明図である。
図6から図8に示す方法によってジャーナルデータが外部ストレージシステムに移動した場合、そのジャーナルデータを用いて所望の世代のP−VOLを復元するためには、移動したジャーナルデータを第1のストレージシステム125内に戻す必要がある。このための処理の概要を、図9を参照して説明する。
最初に、管理サーバ111は、ある世代(又は時刻)の論理ボリュームのデータをホスト計算機101に要求する。より具体的には、管理サーバ111は、現在のP−VOLではなく、過去のある世代のP−VOLに格納されていたデータを要求する。
ホスト計算機101は、管理サーバ111から受信した要求を第1のストレージシステム125に送信する。
第1のストレージシステム125は、要求された世代を復元するために、外部ストレージシステム(すなわち第2のストレージシステム161)に格納されたジャーナルデータを使用する必要がある場合、その必要なジャーナルデータの送信を第2のストレージシステム161に要求する。そして、その要求に従って送信されたジャーナルデータを使用して、要求された世代の論理ボリュームを復元し、要求されたデータを返す。
図10は、本発明の第1の実施形態において実行される、ジャーナルデータを外部ストレージシステムからリストアする処理を示すフローチャートである。
図10は、図9に示した処理の詳細を示すものである。
最初に、管理サーバ111は、ある世代(又は時刻)の論理ボリュームのデータをホスト計算機101に要求する(S5010)。より具体的には、管理サーバ111は、現在のP−VOLではなく、過去のある世代のP−VOLに格納されていたデータを要求する。
ホスト計算機101は、管理サーバ111から受信した要求を第1のストレージシステム125に送信する(S5020)。
ホスト計算機101から要求を受信した第1のストレージシステム125は、要求された世代を復元するために必要なジャーナルデータが第2のストレージシステム161に格納されているか否かを判定する(S5030)。
ジャーナルデータがどこに格納されているかは、カタログ管理情報テーブル311を参照することによって知ることができる。例えば、管理サーバ111は、要求した世代を復元するために必要なジャーナルデータの所在を示す情報を、S5010の要求に含めて送信してもよい。その場合、第1のストレージシステム125は、送信された要求に基づいて、必要なジャーナルデータが第2のストレージシステム161に格納されているか否かを判定することができる。
あるいは、第1のストレージシステム125は、必要なジャーナルデータの所在を管理サーバ111に問い合わせてもよい。
あるいは、第1のストレージシステム125は、カタログ管理情報テーブル311と同等の情報を制御メモリ145内に保持していてもよい。その場合、第1のストレージシステム125は、制御メモリ145内に保持された情報に基づいて、S5030の判定を実行することができる。
必要なジャーナルデータが第2のストレージシステム161に格納されていると判定された場合、必要なジャーナルデータを第2のストレージシステム161から第1のストレージシステム125にコピーする必要がある。このため、第1のストレージシステム125は、まず、必要なジャーナルデータを格納するための領域を第1のストレージシステム125内に確保する(S5040)。
次に、第1のストレージシステム125は、必要なジャーナルデータの転送を第2のストレージシステム161に要求する(S5050)。
この要求を受信した第2のストレージシステム161は、要求されたジャーナルデータを読み出して第1のストレージシステム125に送信する(S5060)。
第1のストレージシステム125は、第2のストレージシステム161から受信したジャーナルデータを、S5040で確保した領域に格納する(S5070)。
次に、第1のストレージシステム125は、必要なジャーナルデータを使用して、要求された世代のP−VOLを復元する(S5080)。
一方、S5030において、必要なジャーナルデータが第2のストレージシステム161に格納されていない(すなわち、必要なジャーナルデータが第1のストレージシステム125に格納されている)と判定された場合、第1のストレージシステム125は、S5040からS5070を実行せずに、S5080を実行する。
次に、第1のストレージシステム125は、復元されたP−VOLに対して、要求されたデータを読み出すための通常のリード処理を実行し、それによって読み出されたデータをホスト計算機101に送信する(S5090)。
さらに、第1のストレージシステム125は、S5060及びS5070によってジャーナルデータが移動したことを通知する情報を管理サーバ111に送信する(S5095)。
管理サーバ111のカタログ管理プログラムは、S5060及びS5070によってジャーナルデータが移動したことを反映させるために、カタログ管理情報テーブル311を更新する(S5100)。
以上で、ジャーナルデータを外部ストレージシステムからリストアする処理が終了する。
例えば、図21の例において、世代NのP−VOL187Pに格納されたデータを要求された場合について説明する。この場合において、少なくとも世代N+1に対応するジャーナルデータ(図21の例ではJNLデータ要素2702A及び2702B)を含む一つ以上の世代のジャーナルデータが第2のストレージシステム161に格納されている場合、それらのジャーナルデータが第2のストレージシステム161から第1のストレージシステム125に転送され(S5060)、格納される(S5070)。
第1のストレージシステム125は、少なくとも世代N+1に対応するジャーナルデータを含む一つ以上の世代のジャーナルデータを現在の(すなわちオンラインの)P−VOL187Pに反映させることによって、世代NのP−VOL187Pに格納されたデータを復元し(S5080)、リード処理を実行する(S5090)。
上記の図6から図8によれば、ジャーナルデータのみが外部ストレージシステムに移動する。このため、外部ストレージシステムに移動したジャーナルデータを用いて論理ボリュームを復元するためには、そのジャーナルデータを第1のストレージシステムにコピーする(すなわち戻す)必要があった。
一方、ジャーナルデータの移動先の外部ストレージシステムに、さらに、P−VOLの複製(ただし、現在の(すなわちオンラインの)P−VOLの複製ではなく、復元されたある世代のP−VOLの複製)が格納されてもよい。このようなP−VOLの複製の移動について、図11等を参照して説明する。
図11は、本発明の第1の実施形態において実行される、外部ストレージシステムへのデータ移動の処理の概要の説明図である。
図11の例では、図6及び図7の場合と同様、所定の条件が満たされる場合に、管理サーバが、ホスト計算機のストレージシステムエージェントプログラム602にジャーナルデータ移動指示を送信する。
ホスト計算機101は、ジャーナルデータ移動指示を第1のストレージシステム125に送信する。
第1のストレージシステム125は、受信した指示によって指定されたジャーナルデータ(例えば、最も古い世代のジャーナルデータ)の複製を第2のストレージシステム161に送信する。
それに加えて、第1のストレージシステム125は、送信されたジャーナルデータを用いてP−VOLを復元するために必要なP−VOLの複製を送信する。
第2のストレージシステム161は、受信したジャーナルデータ及びP−VOLの複製を格納する。
第1のストレージシステム125は、ジャーナルデータの複製が第2のストレージシステム161に格納されると、指定されたジャーナルデータを第1のストレージシステム125のJNL関連エリア188から削除する。この削除によって空いた領域は、新たな世代のジャーナルデータを格納するために使用することができる。
さらに、図11の例では、ジャーナルデータ及びP−VOLの複製が第2のストレージシステム161に格納された後、第2のストレージシステム161を第1のストレージシステム125から切り離してもよい。第2のストレージシステム161を第1のストレージシステム125から切り離しても、第2のストレージシステム161に格納されたデータのみを用いてP−VOLを復元することができる(図14Aから図14D等参照)。
図12は、本発明の第1の実施形態において実行される、外部ストレージシステムへのデータ移動の処理を示すフローチャートである。
図12は、図11に示した処理の詳細を示すものである。
最初に、管理サーバ111の移動可否判定プログラム301は、ジャーナルデータを外部ストレージシステムに移動する必要があるか否かを判定する(S6010)。この判定は、図7のS3010と同様に実行されてもよい。
S3010において、所定の条件が満たされる(すなわち、ジャーナルデータを外部ストレージシステムに移動する必要がある)と判定された場合、管理サーバ111の移動対象決定プログラム302は、移動すべきジャーナルデータ及びその移動先を選択する(S6020)。この選択は、図7のステップ3020と同様に実行されてもよい。
次に、管理サーバ111は、ジャーナルデータ移動指示をホスト計算機101に送信する(S6025)。このジャーナルデータ移動指示は、移動すべきジャーナルデータ及び移動先(すなわち、S6020において選択されたジャーナルデータ及び移動先)の指定を含む。
ホスト計算機101は、管理サーバ111から受信したジャーナルデータ移動指示を第1のストレージシステム125に送信する(S6030)。
第1のストレージシステム125は、S6030の指示を受信すると、P−VOLを作成(すなわち復元)する必要があるか否かを判定する(S6040)。ここで、この判定について説明する。
図12の処理では、ジャーナルデータに加えて、そのジャーナルデータを用いてP−VOLを復元するために必要な別のP−VOLの複製が外部ストレージシステムに移動する。
例えば、図21において、世代N+1のジャーナルデータ、すなわち、JNLデータ要素2702A及び2702Bが移動する場合、それらを用いて世代NのP−VOL187Pを復元するためには、世代N+1のP−VOL187Pが必要である。世代N+1のP−VOL187Pのデータ2701E及び2701Fを、それぞれ、JNLデータ要素2702A及び2702Bによって置き換えることによって、世代NのP−VOL187Pが復元されるからである。
したがって、S6030の指示によって世代N+1のジャーナルデータが移動すべきものとして指定された場合には、S6040において、世代N+1のP−VOL187Pを作成する必要があるか否かが判定される。
例えば、既に世代N+1のP−VOL187Pが作成されている場合には、世代N+1のP−VOL187Pを作成する必要がないと判定され、まだ世代N+1のP−VOL187Pが作成されていない場合には、世代N+1のP−VOL187Pを作成する必要があると判定されてもよい。
あるいは、既に世代N+1のP−VOL187Pが第2のストレージシステム161にコピーされている場合には、世代N+1のP−VOL187Pを作成する必要がないと判定されてもよい。一方、まだ世代N+1のP−VOL187Pが第2のストレージシステム161にコピーされておらず、かつ、まだ世代N+1のP−VOL187Pが作成されていない場合には、世代N+1のP−VOL187Pを作成する必要があると判定されてもよい。
なお、図21の例において、世代N+1のジャーナルデータに加えて、世代N+2のジャーナルデータ(すなわちJNLデータ要素2702C及び2702E)も移動すべきものとして指定されている場合、それらのジャーナルデータを用いてP−VOLを復元するために必要なP−VOLは、世代N+2のP−VOL187Pのみである。世代N+2のP−VOL187Pのデータを世代N+2のジャーナルデータによって置き換えることによって世代N+1のP−VOL187Pを復元することができ、復元された世代N+1のP−VOL187Pを世代N+1のジャーナルデータによって置き換えることによって世代NのP−VOL187Pを復元することができるからである。
S6040においてP−VOLを作成する必要があると判定された場合、第1のストレージシステム125は、必要と判定されたP−VOLを復元する(S6050)。この復元は、図21において説明したように実行される。
一方、S6040においてP−VOLを作成する必要がないと判定された場合、S6050は実行されず、処理はS6060に進む。
次に、第1のストレージシステム125は、移動対象として指定されたジャーナルデータを選択する(S6060)。具体的には、S6030の指示によって指定されたジャーナルデータ(すなわちS6020において選択されたジャーナルデータ)が選択される。
次に、第1のストレージシステム125は、選択されたジャーナルデータ、及び、S6050で作成されたP−VOLの全データを読み出し、第2のストレージシステム161に送信する(S6070)。S6040においてP−VOLを作成する必要がないと判定された場合は、既に作成されているP−VOLの全データが読み出され、送信される。
S6070で送信されたデータを受信した第2のストレージシステム161は、受信したP−VOLのデータ及びジャーナルデータを格納する。例えば、第2のストレージシステムは、受信したP−VOLのデータを、移動先として指定された論理ボリュームに格納し、その空き論理ボリュームに関連するJNL関連エリア188に、受信したジャーナルデータを格納してもよい。この格納が終了すると、第2のストレージシステム161は、格納が終了したことの報告を第1のストレージシステム125に送信する。
第1のストレージシステム125は、上記の報告に基づいて、送信したジャーナルデータが第2のストレージシステム161に格納されたことを確認すると、ジャーナルデータの移動が終了したことの報告を管理サーバ111に送信する(S6090)。
さらに、第1のストレージシステム125は、例えば、送信したジャーナルデータが第2のストレージシステム161に格納されたことを確認した後、指定されたジャーナルデータをJNL関連エリア188から削除する。
さらに、第1のストレージシステム125のJNL管理プログラム205は、JNL管理テーブル224を更新する。この更新は、図7のステップ3070と同様に実行されてもよい。加えて、図12の例におけるJNL管理プログラム205は、P−VOL/JNLペア管理テーブル225も更新する。
管理サーバ111のカタログ管理プログラム303は、S6090の報告を受信すると、S6070からS6080において実行されたジャーナルデータの移動を反映させるようにカタログ管理情報テーブル311を更新する(S6100)。この更新は、図7のS3080と同様に実行されてもよい。
以上で、外部ストレージシステムへのデータ移動の処理が終了する。
図13は、本発明の第1の実施形態において実行される、外部ストレージシステムへのデータ移動の処理の別の例を示すフローチャートである。
図13は、図11及び図12に示す処理の変形例である。図11及び図12では、管理サーバ111がジャーナルデータを移動するか否かを判定し、移動すべきジャーナルデータ及び移動先を選択した。一方、図13では、第1のストレージシステム125が、ジャーナルデータを移動するか否かを判定し、移動すべきジャーナルデータ及び移動先を選択する。以下、図13の処理について説明する。
最初に、第1のストレージシステム125の移動可否判定プログラム203は、ジャーナルデータを外部ストレージシステムに移動する必要があるか否かを判定する(S7010)。この判定は、図12のS6010と同様に実行されてもよい。
次に、第1のストレージシステム125の移動対象決定プログラム204は、移動すべきジャーナルデータを選択する(S7020)。この選択は、図12のS6020と同様に実行されてもよい。
続くS7040からS7100は、それぞれ、S6040からS6100と同様であるため、説明を省略する。S7100が終了すると、外部ストレージシステムへのデータ移動の処理が終了する。
図11から図13に示すように、ジャーナルデータだけでなく、ある時点のP−VOLの複製も外部ストレージシステムに移動することによって、外部ストレージシステムに格納されたデータだけを用いてP−VOLを復元することができる。これによって、第2のストレージシステム161を第1のストレージシステム125から切り離すことが可能になる。この切り離しは、第2のストレージシステム161と第1のストレージシステム125との間の物理的な接続を解除することによって実行されてもよいし、第1のストレージシステム125への第2のストレージシステム161の外部接続の設定を解除することによって実行されてもよい。
第1のストレージシステム125から切り離された第2のストレージシステム161は、新たにホスト計算機に直接接続されてもよい。このホスト計算機は、第1のストレージシステムに接続されたホスト計算機101であってもよいし、それとは異なる計算機であってもよい。あるいは、第2のストレージシステム161は、第1のストレージシステム以外のストレージシステム(例えば、後述する図17に示す第3のストレージシステム2201)に新たに外部接続されてもよい。
いずれの場合も、第2のストレージシステムは、第1のストレージシステムから移動したデータを用いて復元されたいずれかの世代のP−VOLを、直接、又は、第3のストレージシステム2201を介して、ホスト計算機に提供することができる。
図14Aから図14Dは、本発明の第1の実施形態におけるストレージシステムの切り離しの類型の説明図である。
図14Aの例では、第2のストレージシステム161が第1のストレージシステム125と同等の機能を備え、さらに、カタログ管理情報テーブル311と同等の情報(図14A〜図14Dでは、これをカタログ管理情報311と記載)を保持している場合を示す。この場合、第2のストレージシステム161に新たにホスト計算機101を直接(すなわち、他のストレージシステムを介することなく)接続することができる。この場合、第2のストレージシステム161は、カタログ管理情報テーブル311、第1のストレージシステム125から移動したP−VOLの複製及びジャーナルデータを用いて、復元したP−VOLをホスト計算機101に提供することができる。
図14Bの例では、第2のストレージシステム161が第1のストレージシステム125と同等の機能を備えるが、カタログ管理情報テーブル311を保持していない。この場合、管理サーバ111からカタログ管理情報テーブル311を第2のストレージシステム161にコピーすることによって、図14Aの場合と同様、第2のストレージシステム161は、復元したP−VOLをホスト計算機101に提供することができる。
図14Cの例は、第2のストレージシステム161が第1のストレージシステム125から切り離された後、ホスト計算機101とは別のホスト計算機1401に接続される場合を示す。この例において、第2のストレージシステム161は、第1のストレージシステムと同等の機能を備えない。この場合、ホスト計算機1401がカタログ管理情報テーブル311を保持することによって、図14Aの場合と同様、第2のストレージシステム161は、復元したP−VOLをホスト計算機1401に提供することができる。
カタログ管理情報テーブル311は、管理サーバ111からホスト計算機1401にコピーされてもよい。その場合、ホスト計算機1401は、いずれかの世代のP−VOLに格納されたデータを読み出す要求を受ける。この読み出し要求は、例えば、管理サーバ111から送信されたものであってもよいし、ユーザによってホスト計算機1401に入力されたものであってもよいし、アプリケーションプログラム601によって発行されたものであってもよい。
ホスト計算機1401は、受信した読み出し要求を第2のストレージシステム161に送信する。この読み出し要求を受信した第2のストレージシステム161は、要求された世代のP−VOLのデータを復元するために必要なP−VOLの複製が格納された論理ボリューム、及び、その復元のために必要なジャーナルデータが格納された論理ボリュームを特定する。この特定は、例えば、次に示すいずれかの方法によってなされてもよい。
例えば、ホスト計算機1401は、カタログ管理情報テーブル311に基づいて、要求された世代のP−VOLのデータを復元するために必要なP−VOLの複製が格納された論理ボリューム、及び、その復元のために必要なジャーナルデータが格納された論理ボリュームを特定し、特定された論理ボリュームの指定を読み出し要求に含めて送信してもよい。
あるいは、読み出し要求を受信した第2のストレージシステム161は、カタログ管理情報テーブル311のうち必要な情報(又は、カタログ管理情報テーブル311全体)をホスト計算機1401から取得し、その取得した情報に基づいて上記の論理ボリュームを特定してもよい。
図14Dの例では、第2のストレージシステム161が、第1のストレージシステム125と同等の機能を備える第3のストレージシステム2201に新たに外部接続される。この場合、第3のストレージシステム2201がカタログ管理情報テーブル311を保持することによって、第2のストレージシステム161は、第3のストレージシステム2201を介してホスト計算機101に復元したP−VOLを提供することができる。
なお、図14Dのように接続された場合のP−VOLの復元の例については後述する(図17等参照)。
図15は、本発明の第1の実施形態において実行される、外部ストレージシステムへのデータ移動の処理の、さらに別の例を示すフローチャートである。
図11に示す処理が繰り返し実行されると、第2のストレージシステム161内に、ジャーナルデータと、そのジャーナルデータを復元するために必要なP−VOLの複製(レプリカ)と、の組が複数格納される場合がある(図15の第2のストレージシステム161参照)。
あるいは、第1のストレージシステム125に複数の外部ストレージシステムが接続される場合もある。図15の例では、第2のストレージシステム161に加えて、外部ストレージシステム161A及び161Bが第1のストレージシステム125に外部接続されている。なお、外部ストレージシステム161A及び161Bは、第2のストレージシステム161と同様のものであってよい。
上記のような場合に、図11に示す処理が各外部ストレージシステムに対して実行されると、上記のようなジャーナルデータとP−VOLのレプリカとの組(ペア)が、各外部ストレージシステム内に一組又は複数組格納される場合がある。このような場合、ある世代のP−VOLを復元しようとして、P−VOLのレプリカのデータを、そのP−VOLのレプリカが属するペアとは異なるペアに属するジャーナルデータによって置き換えると、誤ったP−VOLが復元される。
このような誤った復元を防ぐために、ジャーナルデータとP−VOLのレプリカとのペアを管理する必要がある。そのために、既に説明したP−VOL/JNLペア管理テーブル225が使用される(図4E参照)。
P−VOL/JNLペア管理テーブル225において、P−VOL#471は、複製元のオンラインのP−VOLの識別子、すなわち、図15の例では第1のストレージシステム125に格納されたP−VOLの識別子である。
複製P−VOL#473は、第1のストレージシステム125に格納されたP−VOLから派生した複製P−VOL(第1のストレージシステム125に格納されたP−VOL及びジャーナルデータに基づいて、図11に示す処理によって作成されたP−VOLの複製)の識別子である。
JNL−VOL#475は、複製P−VOL#473によって識別される複製P−VOLが属するペアに属するジャーナルデータが格納された論理ボリュームの識別子を示す。
図16は、本発明の第1の実施形態において実行される、外部ストレージシステムへのデータ移動の処理の具体例の説明図である。
最初に、Afterジャーナルが作成される場合について説明する。
例えば、現在日時が、4月30日が終了した時点(すなわち5月1日午前0時)である場合、現在の(すなわちオンラインの)P−VOL187Pに、JNLデータ233のうち4月1日〜4月30日に作成されたものを反映させることによって、3月31日が終了した時点(すなわち4月1日午前0時)のP−VOL187P1を復元することができる(図16(A)参照)。
その後、第1のストレージシステム125は、JNLデータ233のうち4月1日〜4月30日に作成されたものをJNLデータ233S1として第2のストレージシステム161にコピーし、さらに、復元されたP−VOL187P1をP−VOL187Sとして第2のストレージシステム161にコピーする。
これによって、第2のストレージシステム161は、第1のストレージシステム125から切り離されたとしても、少なくとも、4月1日午前0時のP−VOL187S、及び、それにJNLデータ233S1を反映させることによって作成される5月1日午前0時のP−VOLを提供することができる。
第1のストレージシステム125からは、JNLデータ233のうち4月1日〜4月30日に作成されたもの、及び、復元されたP−VOL187P1が削除される。これによって、第1のストレージシステム125内の空き容量が増加するため、さらに新しい世代のジャーナルデータを格納することができる。
さらに、1ヶ月が経過すると、第1のストレージシステム125は、JNLデータ233のうち5月1日〜5月31日に作成されたものをJNLデータ233S2として第2のストレージシステム161にコピーする(図16(B)参照)。この場合、さらに復元されたP−VOLをコピーする必要はない。既に図16(A)に示すように、4月1日午前0時のP−VOL187S及び4月1日〜4月30日に作成されたJNLデータ233S1が格納されているため、これらとJNLデータ233S2とを用いて6月1日午前0時のP−VOLを復元することができるからである。
ただし、JNLデータ233S2をコピーしようとするときに、P−VOL187S及びJNLデータ233S1が第2のストレージシステム161に格納されていない場合、第1のストレージシステム125は、図16(A)と同様の手順によって、5月1日午前0時のP−VOLを復元し、第2のストレージシステム161にコピーする必要がある。
あるいは、図16(B)に示すようにP−VOL187S、JNLデータ233S1及びJNLデータ233S2が第2のストレージシステム161に格納されている場合であっても、現在日時が8月1日午前0時であり、6月1日〜6月30日に作成されたJNLデータ233が第1のストレージシステム125及び第2のストレージシステム161のいずれからも既に削除されている場合、図16(A)と同様の手順によってP−VOLを復元してコピーする必要がある。
具体的には、この場合、第1のストレージシステム125は、オンラインのP−VOL187Pに7月1日〜7月31日に作成されたJNLデータ233を反映させることによって、7月1日午前0時のP−VOL(図示省略)を復元し、それを第2のストレージシステム161にコピーする。さらに、7月1日〜7月31日に作成されたJNLデータ233も第2のストレージシステム161にコピーされる。この場合、7月1日午前0時のP−VOLの複製と、7月1日〜7月31日に作成されたJNLデータ233とが第2のストレージシステムにおいて一つのペア(図16(B)の例ではペア2101B)として管理される。一方、P−VOL187S、JNLデータ233S1及びJNLデータ233S2は、別のペア(図16(B)の例ではペア2101A)として管理される。
次に、Beforeジャーナルが作成される場合について説明する。
例えば、現在日時が5月11日午前0時である場合、現在の(すなわちオンラインの)P−VOL187Pに、JNLデータ233のうち5月1日〜5月10日に作成されたもの(図示省略)を反映させることによって、4月30日が終了した時点(すなわち5月1日午前0時)のP−VOL187P1を復元することができる(図16(A)参照)。
その後、第1のストレージシステム125は、JNLデータ233のうち4月1日〜4月30日に作成されたものをJNLデータ233S1として第2のストレージシステム161にコピーし、さらに、復元されたP−VOL187P1をP−VOL187Sとして第2のストレージシステム161にコピーする。
これによって、第2のストレージシステム161は、第1のストレージシステム125から切り離されたとしても、少なくとも、5月1日午前0時のP−VOL187S、及び、それにJNLデータ233S1を反映させることによって作成される4月1日午前0時のP−VOLを提供することができる。
第1のストレージシステム125からは、JNLデータ233のうち4月1日〜4月30日に作成されたもの、及び、復元されたP−VOL187P1が削除される。これによって、第1のストレージシステム125内の空き容量が増加するため、さらに新しい世代のジャーナルデータを格納することができる。
さらに、1ヶ月が経過すると、第1のストレージシステム125は、JNLデータ233のうち5月1日〜5月31日に作成されたものをJNLデータ233S2として第2のストレージシステム161にコピーする(図16(B)参照)。この場合、第1のストレージシステム125は、上記と同様の手順によって、6月1日午前0時のP−VOL187P1を復元し、それを第2のストレージシステム161にコピーする必要がある。Beforeジャーナルが作成される場合、JNLデータ233S2を用いて5月1日午前0時のP−VOLを復元するためには、6月1日午前0時のP−VOL187P1が必要だからである。
この場合、先にコピーされたP−VOL187S(すなわち5月1日午前0時のP−VOL187P1の複製)及びJNLデータ233S1が第1のペア(例えばペア2101A)として管理され、後にコピーされた6月1日午前0時のP−VOL187P1の複製及びJNLデータ233S2が第2のペア(例えばペア2101B)として管理されてもよい。
あるいは、6月1日午前0時のP−VOL187P1が新たなP−VOL187Sとして第2のストレージシステム161にコピーされてもよい。この場合、先にコピーされた5月1日午前0時のP−VOL187Sは削除される。そして、新たなP−VOL187S、JNLデータ233S1及びJNLデータ233S2が一つのペア(例えばペア2101A)として管理されてもよい。
次に、上記のように復元されたP−VOLが外部ストレージシステムにコピーされた場合に、P−VOL及びジャーナルデータを外部ストレージシステムからリストアする処理について説明する。
図17は、本発明の第1の実施形態において実行される、P−VOL及びジャーナルデータを外部ストレージシステムからリストアする処理の概要の説明図である。
具体的には、図17は、第2のストレージシステム161が第1のストレージシステム125から切り離され、第1のストレージシステム125と同等の機能を備える第3のストレージシステム2201に新たに外部接続された場合の、P−VOL及びジャーナルデータのリストアを示す。
この場合、管理サーバ111は、ホスト計算機101を介して、少なくとも、カタログ管理情報テーブル311を第3のストレージシステム2201に提供し、さらに、過去のある世代のP−VOLのデータを第3のストレージシステム2201に要求する。
第3のストレージシステム2201は、要求された世代を復元するために、必要なジャーナルデータ及びP−VOLのデータの送信を第2のストレージシステム161に要求する。そして、その要求に従って送信されたジャーナルデータ及びP−VOLのデータを使用して、要求された世代のP−VOLを復元し、要求されたデータを返す。
図18は、本発明の第1の実施形態において実行される、P−VOL及びジャーナルデータを外部ストレージシステムからリストアする処理を示すフローチャートである。
図18は、図17に示した処理の詳細を示すものである。
図18に示す処理は、図10を参照して説明した処理とほとんど同じである。具体的には、図18のS9010〜S9100が、それぞれ、図10のS5010〜S5100に対応する。
ただし、図10においてS5030〜S5090(S5060を除く)が第1のストレージシステム125によって実行されるのに対して、図18のS9030〜S9090(S9060を除く)は、第3のストレージシステム2201によって実行される。この場合であっても、管理サーバ111が保持するカタログ管理情報テーブル311に基づいて、第3のストレージシステム2201は、ジャーナルデータの所在を知ることができる。
さらに、P−VOL/JNLペア管理テーブル225が第1のストレージシステム125から第3のストレージシステム2201にコピーされていれば、第3のストレージシステム2201は、P−VOL/JNLペア管理テーブル225に基づいて、ジャーナルデータと、そのジャーナルデータを用いてP−VOLを復元するために必要なP−VOLと、の対応関係を知ることができる。このため、S9030において、第3のストレージシステム2201は、復元のために必要なP−VOLの所在も特定することができる。
例えば、管理サーバ111は、P−VOL/JNLペア管理テーブル225の複製を保持し、第2のストレージシステム161が新たに第3のストレージシステム2201に外部接続されたときに、そのP−VOL/JNLペア管理テーブル225の複製を第3のストレージシステム2201に送信してもよい。これによって、第3のストレージシステム2201は、P−VOL/JNLペア管理テーブル225の複製を保持することができる。
そして、第3のストレージシステム2201は、必要なジャーナルデータを格納するための領域に加えて、第2のストレージシステム161から転送される、必要なP−VOLを格納するための領域も確保する(S9040)。
そして、第3のストレージシステム2201は、必要なジャーナルデータ及び必要なP−VOLの転送を第2のストレージシステム161に要求する(S9050)。
この要求を受信した第2のストレージシステム161は、要求されたジャーナルデータ及びP−VOLのデータを読み出して第3のストレージシステム2201に送信する(S9060)。
第3のストレージシステム2201は、第2のストレージシステム161から受信したジャーナルデータ及びP−VOLのデータを格納し(S9070)、それらを使用してP−VOLを復元する(S9080)。
例えば、第2のストレージシステム161が、図16(B)に示すようなジャーナルデータ及びP−VOLの複製を格納している場合、第3のストレージシステム2201は、JNLデータ233S1及び233S2を用いて6月1日のP−VOLを復元するために、P−VOL187Sが必要であることを知ることができる。そして、S9060において、JNLデータ233S1及び233S2を含むジャーナルデータに加えて、P−VOL187Sが転送される。
なお、図17及び図18には、第2のストレージシステム161から転送されたP−VOL及びジャーナルデータを使用して要求された世代のP−VOLを復元する処理を第3のストレージシステム2201が実行する例を示したが、第2のストレージシステムが要求された世代のP−VOLを復元してもよい。その場合、第2のストレージシステムは、復元したP−VOLを第3のストレージシステム2201にコピーしてもよいし、第3のストレージシステム2201が管理サーバ111から要求されたデータのみを第3のストレージシステム2201に送信してもよい。
具体的には、第3のストレージシステム2201は、S9050において、S9020で受信した要求と同様の要求を第2のストレージシステム161に送信してもよい。この要求には、必要なジャーナルデータ及び必要なP−VOLの所在を示す情報が含まれる。この情報は、カタログ管理情報テーブル311に基づいて作成される。
図10の場合と同様、カタログ管理情報テーブル311と同等の情報が第3のストレージシステム2201に保持されてもよい。その場合、必要なジャーナルデータ及び必要なP−VOLの所在を示す情報は、第3のストレージシステム2201に保持された情報に基づいて作成されてもよい。第2のストレージシステムは、受信した要求に基づいて、P−VOLを復元する。
上記のように第2のストレージシステム161がP−VOLを復元する場合、S9040及びS9080を実行する必要はない。
以上、図11から図18を参照して説明したように、ジャーナルデータに加えて、復元されたP−VOLの複製も外部ストレージシステムに移動すれば、外部ストレージシステムは、第1のストレージシステム125から切り離された後、ホスト計算機101に、直接、又は第3のストレージシステム2201を介して、一つ以上の世代のP−VOLを提供することができる。これによって、外部ストレージシステムをオフラインバックアップ又はアーカイブとして使用することができる。
次に、世代間差分データ等のマージについて説明する。
図23及び図24を参照して説明するように、本実施形態では、複数の世代分の世代間差分データ及び差分BMをマージすることができる。これによって、消費される記憶容量を削減することができる。以下、マージ後の世代間差分データを「マージ差分データ」と記載する。
図23は、本発明の第1の実施形態において実行される、世代間差分データをマージする処理を示すフローチャートである。
図24は、本発明の第1の実施形態において実行されるマージ処理に関するデータ要素の動きを示す説明図である。
以下、図23及び図24を参照して、マージ処理を説明する。
図24に示すように、JNLマージプログラム208(図2参照)は、或る世代数分(例えば(m+1)世代、すなわち、世代(N)から世代(N+m)までの世代)の世代間差分データが格納されていることを検出したときに、(m+1)世代分の世代間差分データをマージ差分データに変換するマージ処理を開始する。
なお、マージ処理は、上記のように、(m+1)世代分の世代間差分データが溜まっていることが検出されたことを契機として開始されてもよい。しかし、この契機は一例にすぎず、他の契機に基づいてマージ処理が開始されてもよい。例えば、直前回のマージ処理から所定期間が経過したことを契機としてマージ処理が開始されてもよい。
JNLマージプログラム208は、JNL情報テーブル231のうち、マージ対象の世代(N)〜世代(N+m)の[状態](図示せず)を“マージ中”に更新する。そして、JNLマージプログラム208は、マージ対象の最古の世代(N)の世代間差分データを、対象として選択する(S17001)。
JNLマージプログラム208は、対象の世代間差分データに対応した差分BM(N)(すなわち、第(N)世代の差分BM443)の先頭ビットを参照位置として決定する(S17002)。
JNLマージプログラム208は、差分BM(N)について参照位置と決定されたビットがオンであれば、S17004を実行し、そのビットがオフであれば、S17009を実行する。以下、図23及び図24の説明において、その参照位置と決定されたビットを「対象ビット」と記載し、そのビットがオンであれば「対象オンビット」と記載し、そのビットがオフであれば「対象オフビット」と記載する。
JNLマージプログラム208は、今回作成するマージ差分データに対応する差分BM(以下、図23及び図24の説明において、「マージ差分BM」と記載する)について、上記対象ビットと同じ位置にあるビットがオフであれば、S17005を実行し、そのビットがオンであれば、S17009を実行する。
JNLマージプログラム208は、差分BM(N)における対象オンビットに対応するデータ格納アドレスを探し(S17005)、そのアドレスを特定する(S17006)。そして、JNLマージプログラム208は、そのアドレスが示すセグメントに記憶されている世代間差分データ要素を、そのセグメントから、今回作成されるマージ差分データに対応したJNLサブエリア内のセグメント(すなわち、直前回のコピー先のセグメントの次のセグメント)にコピーする(S17007)。そして、JNLマージプログラム208は、マージ差分BMにおける、上記対象ビットと同じ位置にあるビットを、オンにする(S17008)。
JNLマージプログラム208は、差分BM(N)において、これまでの参照位置の次の位置に未参照のビットがあるか否かを判定する(S17009)。これまでの参照位置の次の位置に未参照のビットがあれば(すなわちS17009で「Y」と判定された場合)、次のビットを新たな参照位置に決定して(S17010)、S17003を実行する。
一方、次の位置に未参照のビットが無ければ(すなわちS17009で「N」と判定された場合)、その世代(N)についての処理が終了する(S17011)。そして、JNLマージプログラム208は、次の世代があるか否かを判定する。次の世代があれば(すなわちS17012で「Y」と判定された場合)、JNLマージプログラム208は、次の世代(N+1)について、S17001を実行する。もし、次の世代が無ければ(すなわち、直前回に処理された世代が(N+m)であれば(S17012で「N」)、マージ処理が終了する。
以上の流れによれば、図24に示すように、マージ対象の世代(N)〜(N+m)のうちの古い世代に対応した世代間差分データから先に処理される。世代間差分データに対応した差分BMではオンビットであって、マージ差分BMにおいて、そのオンビットに対応したビットがオフであれば、そのオンビットに対応した世代間差分データ要素が、マージ差分データに対応したJNLサブエリアにコピーされる。一方、世代間差分データに対応した差分BMではオンビットであり、マージ差分BMにおいても、そのオンビットに対応したビットがオンであれば、世代間差分データに対応した差分BM内のオンビットに対応したデータ要素はコピーされない。
要するに、古い世代に対応した世代間差分データ要素ほど、優先的に、マージ差分データに対応したJNLサブエリアにコピーされる。具体的には、例えば、図24によれば、世代(N)と世代(N+m)(m=2の場合、世代(N+2))の2つの世代について、P−VOLの先頭ブロックに対応した世代間差分データ要素“A”及び“G”が存在している。この場合、前述したように、古い世代に対応した世代間差分データ要素ほど優先されるので、世代(N)についてのデータ要素“A”は、マージ差分データに対応したJNLサブエントリにコピーされるが、その世代(N)よりも新しい世代についてのデータ要素“G”は、そのJNLサブエントリにはコピーされない。
なお、このマージ処理では、古い世代から先に処理されるが、新しい世代から先に処理されてもよい。但し、この場合、世代間差分データに対応した差分BMではオンビットであり、マージ差分BMにおいても、そのオンビットに対応したビットがオンであれば、世代間差分データに対応した差分BM内のオンビットに対応したデータ要素が、マージ差分データに対応したJNLサブエリアに記憶されている、オンビットに対応したマージ差分データ要素に上書きされてもよい。
また、マージ差分データが作成された場合、そのマージ差分データの基になった複数世代分の世代間差分データは、マージ差分データの作成完了の直後に、又は計算機(例えば、ホスト計算機101又は管理サーバ111)からの指示に応答して、削除されてもよい。
また、世代間差分データやマージ差分データが古い世代から削除されてもよい。この場合、例えば、JNL削除プログラム(図示省略)が、削除対象の世代に対応したJNL制御情報及びJNLデータを解放し、それらが格納されていた領域を空き領域として管理する。また、JNL削除プログラムは、第一のJNL管理テーブル224から、削除対象の世代に対応したエントリを削除する。
例えば、第1のストレージシステム125が、上記のように、自身に格納されている差分をマージしてから、マージされた差分(すなわちマージされたジャーナルデータ)を第2のストレージシステム161へバックアップしてもよい。
ここで、図21を参照して、世代のマージの具体例を説明する。説明を簡単にするため、現在時刻が、世代N+2が確定した時点であると仮定する。すなわち、現時点のオンラインのP−VOL187Pは、確定した世代N+2のP−VOL187Pと同一である。
この場合において、世代N+1と世代N+2とをマージする処理について説明する。
マージが実行される前の時点で、世代N+2に対応する差分データとして、JNLデータ要素2702C及び2702Eが保持されている。これらは、世代N+2のP−VOL187Pに基づいて世代N+1のP−VOL187Pを復元するために必要な差分データである。さらに、世代N+1に対応する差分データとして、JNLデータ要素2702A及び2702Bが保持されている。これらは、世代N+1のP−VOL187Pに基づいて世代NのP−VOL187Pを復元するために必要な差分データである。
世代N+1と世代N+2とをマージする処理とは、世代N+2のP−VOL187Pに基づいて世代NのP−VOL187Pを復元するために必要な差分データ(言い換えると、世代N+2のP−VOL187Pと、世代NのP−VOL187Pとの差分データ)を残し、その他のデータを削除する処理である。
図21の例では、データ2701Gが格納されたブロックに対応する二つの差分データ、すなわち、世代N+2のJNLデータ要素2702E及びJNLデータ要素2702Aが保持されている。この場合、より古い世代のJNLデータ要素2702Aが残され、JNLデータ要素2702Eは削除される。JNLデータ要素2702Eは、世代N+1のP−VOL187Pを復元するためには必要であるが、世代NのP−VOL187Pを復元するためには必要ないからである。
同様に、JNLデータ要素2702B及びJNLデータ要素2702Cが残される。
上記のように世代をマージすることによって、世代N+1のP−VOL187Pを復元するためだけに必要なJNLデータ要素2702Eが削除されるため、空き記憶領域が増加するかわりに、世代N+1のP−VOL187Pを復元することはできなくなる。すなわち、世代をマージすることによって、保存する必要性の低い世代を復元するためだけに必要なジャーナルデータを削除することができ、これによって、ジャーナルデータを格納するための記憶領域の容量を削減することができる。
次に、外部ストレージシステムへのジャーナルデータの移動の別の例について、図25から図27を参照して説明する。
図25は、本発明の第1の実施形態において、外部ストレージシステムがジャーナルデータを階層管理する場合のジャーナルデータの移動の説明図である。
本実施形態の第2のストレージシステム161は、第1のストレージシステム125とは異なる種類の記憶媒体を備えてもよい。例えば、第1のストレージシステム125が一つ以上のHDDを備えるのに対して、第2のストレージシステム161は、HDDに加えて磁気テープ記憶装置(例えばテープライブラリ)3101を備えてもよい。この場合、第2のストレージシステム161は、HDDに格納されるジャーナルデータと磁気テープ記憶装置3101に格納されるジャーナルデータとを階層管理することができる。
なお、図25の例において磁気テープ記憶装置3101は一例に過ぎず、磁気テープ記憶装置3101がその他の種類の記憶装置によって置き換えられてもよい。
例えば、既に説明したように、アクセス頻度が所定の値(第1の値)より低いジャーナルデータが第1のストレージシステム125から第2のストレージシステム161に移動する場合、第2のストレージシステム161に移動したジャーナルデータのうち、アクセス頻度が第2の値より低いジャーナルデータが磁気テープ記憶装置3101に格納される。ただし、第2の値は、第1の値より低いアクセス頻度を示す。
古い世代のジャーナルデータほどアクセス頻度が低い場合、第1のストレージシステム125に格納されたジャーナルデータのうち比較的古い世代のものが第2のストレージシステムに移動し、第2のストレージシステムに移動したジャーナルデータの中で比較的古い世代のものが磁気テープ記憶装置3101に格納される。
図11等を参照して説明したように、第2のストレージシステム161にP−VOLの複製が格納されてもよい。その場合、磁気テープ記憶装置3101にもP−VOLの複製が格納されてもよい。あるいは、第2のストレージシステム161にオンラインのP−VOLが格納されてもよい。
図26は、本発明の第1の実施形態において、外部ストレージシステムが磁気テープ記憶装置を備える場合のジャーナルデータの移動の説明図である。
具体的には、図26は、図25の例において第2のストレージシステムに内蔵される記憶装置が磁気テープ記憶装置3101である場合の、テープへのジャーナルデータの格納の例を示す。
図26の例では、一つの世代のジャーナルデータが一つ(すなわち1巻)のテープ記憶媒体に格納される。具体的には、図26の例において、第1のストレージシステム125のJNL関連エリア188には、世代1から世代4までの4世代のジャーナルデータが、それぞれ、識別番号(識別子)「1」から「4」までで識別される四つの論理ボリュームに格納される。以下の説明において、これらの四つの論理ボリュームを、それぞれ、J−VOL#1〜J−VOL#4と記載する。
JNL関連エリア188内の一つの論理ボリュームに格納されたジャーナルデータは、第2のストレージシステム161内の一つの論理ボリュームに移動する。そして、第2のストレージシステム161内の一つの論理ボリュームに格納されたジャーナルデータは、1巻のテープ記憶媒体に格納される。
図26の例では、第2のストレージシステム161内に、ジャーナルデータの移動先として三つの論理ボリューム、すなわち、識別番号「100」から「102」までで識別される三つの論理ボリュームが格納される。以下の説明において、これらの三つの論理ボリュームを、それぞれ、VOL#100〜VOL#102と記載する。さらに、図26の磁気テープ記憶装置3101は、それぞれ識別番号「1」から「3」までで識別される三つのテープ記憶媒体を備える。以下の説明において、これらの三つのテープ記憶媒体を、それぞれ、テープ#1〜テープ#3と記載する。
ただし、JNL関連エリア188内の一つの論理ボリュームに格納されたジャーナルデータが、第2のストレージシステム161内の一つの論理ボリュームに移動した後、さらにJNL関連エリア188内の別の論理ボリュームに格納されたジャーナルデータが第2のストレージシステム161内の同じ論理ボリュームに移動する場合がある。
図26の例では、世代1のジャーナルデータが、J−VOL#1からVOL#100に移動し、さらに、テープ#1に格納される。世代2のジャーナルデータが、J−VOL#2からVOL#101に移動し、さらに、テープ#2に格納される。同様に、世代3のジャーナルデータが、J−VOL#3からVOL#102に移動する。しかし、その後、世代4のジャーナルデータがJ−VOL#4からVOL#102に移動する。このとき、先に移動した世代3のジャーナルデータはVOL#102から消去される。このため、テープ#3には、世代4のジャーナルデータが格納される。
管理サーバ111は、どのテープ記憶媒体にどの世代のジャーナルデータが格納されているかを示す情報も管理する。
第2のストレージシステム161内の論理ボリュームに、動的に記憶領域が割り当てられてもよい。すなわち、各論理ボリュームのうち、データが書き込まれた領域のみに物理的な記憶領域が割り当てられてもよい。この場合、各論理ボリュームが実際に使用している物理的な記憶領域の容量より大きい容量が各論理ボリュームに定義される場合がある。このような場合でも、各論理ボリュームに実際に格納されたデータのみがテープ記憶媒体に格納される。
図27は、本発明の第1の実施形態において、外部ストレージシステムに磁気テープ記憶装置が接続される場合のジャーナルデータの移動の説明図である。
図27では、図25及び図26の例と異なり、第2のストレージシステム161に、ネットワークを介して磁気テープ記憶装置173が接続される。そのネットワークには、さらにバックアップサーバ174が接続される。バックアップサーバ174は、第2のストレージシステム161の論理ボリュームに格納されたデータの磁気テープ記憶装置へのバックアップを制御する計算機である。
例えば、図25の場合と同様、第1のストレージシステム125に格納されたジャーナルデータのうち比較的古い世代のものが第2のストレージシステム161に移動し、さらに、第2のストレージシステム161に移動したジャーナルデータのうち比較的古いものが磁気テープ記憶装置173に格納されてもよい。
第2のストレージシステム161には、移動したジャーナルデータを用いてP−VOLを復元するために必要なP−VOLの複製がさらに格納される。第2のストレージシステム161が第1のストレージシステム125から切り離された場合、第2のストレージシステム161に格納されたP−VOLの複製、ジャーナルデータ、及び、磁気テープ記憶装置173に格納されたジャーナルデータを用いて、P−VOLを復元することができる。
磁気テープ記憶装置173には、ジャーナルデータのみが格納されてもよいし、ジャーナルデータに加えて、P−VOLの複製が格納されてもよいし、ある世代の論理ボリュームが格納されてもよい。
次に、本発明の第2の実施形態について説明する。
図28は、本発明の第2の実施形態の計算機システムの構成を示すブロック図である。
第2の実施形態の計算機システムは、第2のストレージシステム161が第4のストレージシステム128によって置き換えられている点、第1のストレージシステム125がリモートコピー(RC)用ポート134を備える点、及び、第1のストレージシステム125と第4のストレージシステム128とが第4のネットワーク124を介して接続される点を除き、第1の実施形態の計算機システムと同様である。
第4のストレージシステム128は、例えば、第1のストレージシステム125と同等の構成及び機能を備えるストレージシステムである。第1のストレージシステム125のRC用ポート134は、第4のネットワーク124を介して、第4のストレージシステム128のRC用ポート(図示省略)に接続される。
本実施形態の第1のストレージシステム125及び第4のストレージシステム128は、いわゆるリモートコピー機能を備える。すなわち、第1のストレージシステム125内の論理ボリュームと、第4のストレージシステム128内の論理ボリュームとがコピーペアを構成することができる。コピーペアに属する第1のストレージシステム125内の論理ボリュームにデータが書き込まれた場合、そのデータが、そのコピーペアに属する第4のストレージシステム128内の論理ボリュームにコピーされる。これによって、一つのコピーペアに属する二つの論理ボリュームに同一のデータが格納される。
上記のようにリモートコピー機能を備えるストレージシステムを含む計算機システムにおいても、第4のストレージシステム128を第1の実施形態の外部ストレージシステムとして扱うことによって、第1の実施形態と同様のジャーナルデータの移動及び復元を実行することができる。
さらに、第1のストレージシステム125と第4のストレージシステム128との間でリモートコピーが実行される場合、第4のストレージシステム128もカタログ管理情報311を保持する。このため、第4のストレージシステム128が第1のストレージシステム125から切り離された場合、図14Aに示す切り離しの処理を実行することができる。この場合、図14Aの第2のストレージシステム161が第4のストレージシステム128によって置き換えられる。