最初に、本発明の実施形態を、図面を用いて詳細に説明する。
図1は、本発明の実施形態の計算機システムの構成を示すブロック図である。
本実施形態の計算機システムは、アプリケーションサーバ101、バックアップサーバ102、テープ装置103、管理サーバ111、第1のストレージシステム125及び第2のストレージシステム161を備える。第1のストレージシステム125は、第1のネットワーク121を介して、アプリケーションサーバ101、バックアップサーバ102及びテープ装置103に接続される。第2のストレージシステム161は、第2のネットワーク123を介して第1のストレージシステム125に接続される。アプリケーションサーバ101、バックアップサーバ102、テープ装置103、管理サーバ111、第1のストレージシステム125及び第2のストレージシステム161は、第3のネットワーク108を介して相互に接続される。
第1のネットワーク121、第2のネットワーク123及び第3のネットワーク108は、いかなる種類のネットワークであってもよい。本実施形態は、例として、第1のネットワーク121及び第2のネットワーク123が、FC(Fibre Channel)プロトコルが使用される、いわゆるSAN(Storage Area Network)である場合を示す。一方、第3のネットワーク108は、例えば、IP(インターネットプロトコル)が使用される、いわゆるLAN(Local Area Network)であってもよい。
アプリケーションサーバ101は、第1のストレージシステム125によって提供される論理ボリュームにアクセスする計算機である。アプリケーションサーバ101の詳細な構成については後述する(図3参照)。
バックアップサーバ102は、第1のストレージシステム125に格納されたデータのバックアップを制御する計算機である。バックアップサーバ102の詳細な構成については後述する(図4参照)。
管理サーバ111は、第3のネットワーク108に接続されているアプリケーションサーバ101、バックアップサーバ102、テープ装置103、第1のストレージシステム125及び第2のストレージシステム161を管理する計算機である。管理サーバ111の詳細な構成については後述する(図5参照)。
第1のストレージシステム125は、コントローラ及び記憶デバイス群を備える。コントローラは、例えば、複数のフロントエンドインタフェース127と、複数のバックエンドインタフェース137と、第1の内部ネットワーク156と、一以上のキャッシュメモリ147と、一以上の制御メモリ145と、一以上の制御プロセッサ143とを備える。
記憶デバイス群は、複数の物理記憶デバイス(以下、「PDEV」と記載する)151で構成される。
フロントエンドインタフェース127は、ストレージシステム125にネットワークを介して接続されたアプリケーションサーバ101、バックアップサーバ102又は第2のストレージシステム161と通信するためのインタフェース回路である。従って、図1の例において、第1のストレージシステム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)、或いは、フラッシュメモリデバイスを用いたいわゆるSSD(Solid State Drive)である。二以上のPDEV151によって、RAIDの規則に従うPDEVグループであるRAID(Redundant Array of Independent Disks)グループが構成されてもよい。
コントローラの構成要素であるフロントエンドインタフェース127、バックエンドインタフェース137、キャッシュメモリ147、制御メモリ145及び制御プロセッサ143に、第2の内部ネットワーク(例えばLAN)155が接続される。第2の内部ネットワーク155には、さらに、保守管理端末153が接続される。保守管理端末153は、第3のネットワーク108にも接続される。
保守管理端末153は、ストレージシステム125を保守又は管理する計算機である。ストレージシステム125の保守員は、例えば、保守管理端末153(又は、その保守管理端末153と通信可能な管理サーバ111)を操作して、制御メモリ145に記憶される種々の情報を定義することができる。保守管理端末153の詳細な構成については後述する(図6参照)。
第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と同様のものであってもよい。
本実施形態の第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に格納する機能が、外部接続機能と呼ばれる。
テープ装置103は、一つ以上のテープドライブ(図示省略)及び一つ以上のテープ記憶媒体(図示省略)を備える。テープ装置103は、主に、第1のストレージシステム125又は第2のストレージシステム161に格納されたデータのバックアップ(すなわち複製)を格納するために使用される。
例えば、バックアップサーバ102が第1のストレージシステム125又は第2のストレージシステム161に格納されたデータを読み出し、その読み出したデータの書き込みをテープ装置103に要求する。この書き込み要求を受信したテープ装置103は、要求されたデータをテープ記憶媒体に格納する。さらに、テープ装置103は、テープ記憶媒体に格納されたデータを読み出す要求をバックアップサーバ102から受信すると、要求されたデータをテープ記憶媒体から読み出してバックアップサーバ102に送信する。
テープ装置103は、テープドライブ及びテープ記憶媒体の代わりにディスク記憶装置又はその他の記憶装置を備える仮想テープライブラリ(VTL)によって置き換えられてもよい。
図2は、本発明の実施形態の第1のストレージシステム125の制御メモリ145に記憶されているコンピュータプログラム及び情報を示す説明図である。
以下の説明において、プログラムが実行する処理は、実際には、そのプログラムを実行する制御プロセッサ143が行う処理である。
制御メモリ145には、コマンド制御プログラム201、新スナップショット処理プログラム202、新スナップショットコピー処理プログラム203、プール制御プログラム205、構成制御プログラム206、プール管理情報221、LDEV管理情報222、VDEV管理情報223及びペア管理情報224が記憶される。
コマンド制御プログラム201は、上位の計算機から送信されたコマンドを実行する。例えば、コマンド制御プログラム201は、アプリケーションサーバ101からのI/Oコマンド(すなわち、データ書き込みコマンド又はデータ読み出しコマンド)に従うI/Oを制御する。さらに、コマンド制御プログラム201は、管理サーバ111から送信されたコマンドを実行する。新スナップショット処理プログラム202は、スナップショットを作成する処理を制御する。新スナップショットコピー処理プログラム203は、スナップショットを作成するために実行されるデータのコピーを制御する。プール制御プログラム205は、後述する容量プールを設定する。構成制御プログラム206は、第1のストレージシステム125が保持する管理情報を設定する。
プール管理情報221には、容量プールを管理する情報が含まれる。LDEV管理情報222には、LDEV802を管理する情報が含まれる。VDEV管理情報223には、VDEV801を管理する情報が含まれる。LDEV802及びVDEV801については後述する(図8参照)。ペア管理情報224には、後述するPVOL701とSVOL702とからなるペアを管理する情報が含まれる。
以下の説明において第1のストレージシステム125が実行する処理は、実際には、制御プロセッサ143が制御メモリ145に記憶されている上記のプログラムを実行することによって実行される。
図3は、本発明の実施形態のアプリケーションサーバ101の構成を示すブロック図である。
アプリケーションサーバ101は、CPU(Central Processing Unit)302、メモリ305、補助記憶デバイス303、入力装置(例えばキーボード及びポインティングデバイス)301、出力装置(例えば表示装置)304、SAN121に接続されるストレージアダプタ(例えばホストバスアダプタ)307、及び、第3のネットワーク108に接続されるネットワークアダプタ306を備える計算機である。
メモリ305には、CPU302によって実行されるプログラムが格納される。本実施形態のメモリ305には、例えば、オペレーティングシステム(OS)(図示省略)及びその上で動作するアプリケーションプログラム(図示省略)が格納される。
アプリケーションプログラムを実行するCPU302は、必要に応じて、ストレージアダプタ307を介して、アドレスを指定したI/Oコマンド(ライトコマンド又はリードコマンド)を送信する。
図4は、本発明の実施形態のバックアップサーバ102の構成を示すブロック図である。
バックアップサーバ102は、CPU402、メモリ405、補助記憶デバイス403、入力装置(例えばキーボード及びポインティングデバイス)401、出力装置(例えば表示装置)404、SAN121に接続されるストレージアダプタ(例えばホストバスアダプタ)407、及び、第3のネットワーク108に接続されるネットワークアダプタ406を備える計算機である。
メモリ405には、CPU402によって実行されるプログラムが格納される。本実施形態のメモリ405には、例えば、OS(図示省略)及びその上で動作するバックアップ制御プログラム(図示省略)が格納される。
バックアップサーバ102は、第1のストレージシステム125に格納されたデータをテープ装置103にバックアップする処理を制御する。例えば、バックアップ制御プログラムを実行するCPU402は、ユーザからの指示又はあらかじめ設定されたスケジュールに基づいて、第1のストレージシステム125からデータを読み出し、読み出したデータをテープ装置103に書き込む。このような処理については後述する。
図5は、本発明の実施形態の管理サーバ111の構成を示すブロック図である。
管理サーバ111は、CPU502、メモリ505、補助記憶デバイス503、入力装置(例えばキーボード及びポインティングデバイス)501、出力装置(例えば表示装置)504、及び、第3のネットワーク108に接続されるネットワークアダプタ506を備える計算機である。
CPU502は、ネットワークアダプタ506を介して、コマンドを、第3のネットワーク108に接続されているアプリケーションサーバ101、第1のストレージシステム125又は第2のストレージシステム161に送信する。メモリ505は、第1のストレージシステム125及び第2のストレージシステム161を管理するために使用される管理プログラム(図示省略)及び管理情報(図示省略)を記憶するメモリである。CPU502がメモリ505に格納されている管理プログラムを実行することによって、第1のストレージシステム125等を管理するための処理が実行される。
図6は、本発明の実施形態の保守管理端末153の構成を示すブロック図である。
保守管理端末153は、CPU602、メモリ605、補助記憶デバイス603、入力装置(例えばキーボード及びポインティングデバイス)601、出力装置(例えば表示装置)604、第3のネットワーク108に接続されるネットワークアダプタ606、及び、第2の内部ネットワーク155に接続されるネットワークアダプタ607を備える計算機である。
CPU602がメモリ605に格納された保守管理プログラム(図示省略)を実行することによって、第1のストレージシステム125を保守・管理するための処理(例えば、第1のストレージシステム125の設定変更等)が実行される。この処理は、保守管理端末153を直接操作する保守員からの指示に従って実行されてもよいし、管理サーバ111からの指示に従って実行されてもよい。
図7は、本発明の実施形態の第1のストレージシステム125が提供する論理ボリューム及びスナップショットの説明図である。
PVOL(Primary Volume)701は、第1のストレージシステム125がアプリケーションサーバ101に提供する記憶領域である。アプリケーションサーバ101は、PVOL701を対象とするデータの書き込み要求及びデータの読み出し要求を送信する。PVOL701は、PDEV151に対応付けられた論理ボリュームであってもよいし、PDEV163に対応付けられた論理ボリュームであってもよい。
PVOL701に対応する複数のSVOL(SnapShot Volume)702は、第1のストレージシステム125がバックアップサーバ102に提供する仮想的な論理ボリュームである。各SVOL702は、ある時刻におけるPVOL701のスナップショット(すなわちその時刻におけるPVOL701の複製)である。例えば、図7に示すSVOL702A〜702C及びSVOL702Xは、複数のSVOL702の例である。以下の説明において、SVOL702A〜702C及びSVOL702Xのいずれにも共通する説明をする場合、これらを総称してSVOL702とも記載する。
図7の例において、SVOL702Aは、時刻10:00に作成されたPVOL701のスナップショットである。すなわち、SVOL702Aから読み出されるデータは、時刻10:00においてPVOL701に格納されていたデータと同一である。同様に、SVOL702Bは、時刻11:00に作成されたPVOL701のスナップショットである。SVOL702Cは、時刻12:00に作成されたPVOL701のスナップショットである。SVOL702Xは、時刻XX:00に作成されたPVOL701のスナップショットである。
バックアップサーバ102は、スナップショットの作成時刻(又は、作成時刻と1対1に対応するスナップショットの世代番号等)を指定して、SVOL702に対するデータの読み出し要求を送信する。例えば時刻11:00が指定された場合、SVOL702Bからデータが読み出され、バックアップサーバ102に送信される。バックアップサーバ102は、そのようにして取得したSVOL702Bのデータをテープ記憶媒体に格納する要求をテープ装置103に送信することができる。
なお、後述するように、複数のSVOL702の各々が、PVOL701と同様の論理ボリュームとして管理されているわけではない。後述するように、バックアップサーバ102からいずれかのSVOL702を指定した読み出し要求を受信すると、第1のストレージシステム125は、スナップショット用容量プール703に格納されたデータのうち、指定された時刻に対応するものを読み出して応答する(図8から図10参照)。
スナップショット用容量プール703は、一つ以上の論理ボリュームを含む。スナップショット用容量プール703には、各時刻のSVOL702に含まれるデータが格納される。具体的には、スナップショット用容量プール703には、後述するように、ある時刻におけるPVOL701の全体コピー及びその全体コピーに対する差分コピーが格納される。
図8は、本発明の実施形態のストレージシステムの論理構成を示す第1の説明図である。
具体的には、図8は、本実施形態の第1のストレージシステム125によって提供される論理ボリュームの階層構造を説明するものである。
第1のストレージシステム125は、PDEV151及びPDEV163の記憶領域を、一つ以上の仮想デバイス(VDEV)801として管理する。
例えば、VDEV801は、一つ以上のPDEV151と対応付けられる。複数のPDEV151がRAIDを構成する場合、一つのRAIDグループが一つのVDEV801に対応付けられてもよい。その場合、VDEV801の記憶容量は、RAIDグループの記憶容量のうち、パリティのための容量を除いたものと等しい。
あるいは、第1のストレージシステム125に外部接続された第2のストレージシステム161の一つ以上のPDEV163がVDEV801と対応付けられてもよい。
一つ以上のVDEV801の記憶領域は、一つ以上の論理デバイス(LDEV)802に対応付けられる。例えば、一つのVDEV801の記憶領域の一部が複数のLDEV802に対応付けられてもよいし、複数のVDEV801の記憶領域が一つのLDEV802に対応付けられてもよい。第1のストレージシステム125の管理者は、VDEV801の記憶領域のLDEV802への対応付けを任意に設定することができる。
PVOL701は、一つ以上のLDEV802に対応付けられる。第1のストレージシステム125は、例えばPVOL701のいずれかの記憶領域へのデータの書き込み要求を受信すると、そのPVOL701の記憶領域に対応するLDEV802の記憶領域を特定し、特定されたLDEV802の記憶領域に対応するVDEV801の記憶領域を特定し、特定されたVDEV801の記憶領域に対応するPDEV151又はPDEV163の記憶領域を特定し、特定されたPDEV151又はPDEV163の記憶領域に、要求されたデータを書き込む。
PVOL701に対応付けられないLDEV802のうち少なくとも一つは、仮想ボリューム用容量プール803として使用される。仮想ボリューム用容量プール803として使用される各LDEV802は、プールボリュームとも呼ばれる。
仮想ボリューム用容量プール803内の記憶領域は、必要に応じて、スナップショット用容量プール703が提供する記憶領域に割り当てられる。スナップショット用容量プール703の記憶領域は、必要に応じて、スナップショット用仮想ボリューム804が提供する記憶領域に割り当てられる。一つのスナップショット用仮想ボリューム804が一つのSVOL702に対応する。
例えば、第1のストレージシステム125は、SVOL702のいずれかのアドレスを書き込み先として指定したデータの書き込み要求を受信した場合、そのアドレスに対応するスナップショット用仮想ボリューム804の記憶領域にスナップショット用容量プール703の記憶領域が割り当てられているか否かが判定される。スナップショット用容量プール703の記憶領域が割り当てられていないと判定された場合、第1のストレージシステム125は、スナップショット用容量プール703の記憶領域のうち、まだスナップショット用仮想ボリューム804のいずれの記憶領域にも割り当てられていない記憶領域を、書き込み先として指定された記憶領域に割り当てる。
このときに割り当てられたスナップショット用容量プール703の記憶領域に、仮想ボリューム用容量プール803の記憶領域がまだ割り当てられていない場合、第1のストレージシステム125は、仮想ボリューム用容量プール803の記憶領域のうち、まだスナップショット用容量プール703のいずれの記憶領域にも割り当てられていない記憶領域を、スナップショット用容量プール703の当該記憶領域に割り当てる。
なお、このような記憶領域の割り当ては、所定の大きさの割り当て単位(例えば、ページと呼ばれる所定の大きさの仮想的な記憶領域)ごとに実行される。
図9は、本発明の実施形態のストレージシステムの論理構成を示す第2の説明図である。
具体的には、図9は、本実施形態の第1のストレージシステム125によって提供されるPVOLとSVOLとからなる組(ペア)を説明するものである。
PVOL701と、そのPVOL701に対応するSVOL702は、一つのペアを構成する。図7を参照して説明したように、一つのPVOL701に複数のSVOLが対応付けられる場合、一つのPVOL701と各SVOL702とが一つのペアを構成する。例えば、PVOL701とSVOL702Aが一つのペアを構成し、PVOL701とSVOL702Bとが別のペアを構成する。
スナップショット用容量プール703には、各SVOL702を提供するために必要なデータが格納される。具体的には、スナップショット用容量プール703には、フルコピー901、差分コピー902及びSYS領域903が含まれる。
フルコピー901は、最初に作成されたスナップショットの全データを含む。図9に示すように、時刻10:00におけるPVOL701のスナップショット(すなわちSVOL702A)が最初に作成される場合、時刻10:00におけるPVOL701の全データのコピーがフルコピー901として格納される。この場合、SVOL702Aがフルコピー901に対応する。
ただし、上記のようにPVOL701の全データのコピーがフルコピー901として格納されてもよいが、PVOL701の全データのうち、あらかじめ定められた特定のパターンのデータ以外のデータのみがフルコピー901として格納されてもよい。ここで、特定のパターンのデータとは、例えば論理ボリュームを初期化するときに書き込まれるデータ、具体的には、例えば「0」のみからなるデータであってもよい。
図8を参照して説明したように、スナップショット用容量プール703の記憶領域には、データが書き込まれない限り、仮想ボリューム用容量プール803の記憶領域が割り当てられない。すなわち、データが書き込まれていないスナップショット用容量プール703の記憶領域は、PDEV151等の物理的な記憶領域を消費しない。特定パターンのデータをフルコピー901として格納しないことによって、特定パターンのデータを格納するための物理的な記憶領域の消費を防ぐことができる。
具体的には、第1のストレージシステム125は、最初のスナップショットを作成するときに、各割り当て単位に格納されるべきデータが特定パターンのデータ以外のデータを含むか否かを判定する。そのデータが特定パターンのデータ以外のデータを含む場合のみ、第1のストレージシステム125は、そのデータを、スナップショット用容量プール703に書き込む。あるいは、第1のストレージシステム125は、PVOL701の全データをスナップショット用容量プール703にフルコピー901として一旦格納してもよい。その後、第1のストレージシステム125は、フルコピー901の各割り当て単位を順次参照し、その割り当て単位に特定パターンのデータのみが格納されている場合、その割り当て単位への仮想ボリューム用容量プール803の記憶領域の割り当てを解除する。
このように、フルコピー901として特定パターンのデータ以外のデータのみが格納される場合、スナップショット用容量プール703の所定の記憶領域に、特定パターンのデータが格納される。そして、フルコピー901の割り当て単位のうち、仮想ボリューム用容量プール803の記憶領域が割り当てられていない箇所への読み出し要求を受信した場合、第1のストレージシステム125は、上記の所定の記憶領域に格納された特定パターンのデータを読み出して応答する。
最初の世代のスナップショットが作成された後、2番目以降の世代のスナップショットが作成されると、フルコピー901からの差分が差分コピー902としてスナップショット用容量プール703に格納される。
SYS領域903には、スナップショット用容量プール703に格納されたデータ(具体的にはフルコピー901及び差分コピー902に含まれるデータ)と、PVOL701及びSVOL702のアドレスとの対応関係を管理するアドレスマップ(すなわち、後述するダイレクトアクセス管理テーブル1102)が格納される。
例えば、図9のように時刻10:00にPVOL701の最初の世代のスナップショットが作成され、時刻11:00及び時刻12:00にそれぞれ2番目及び3番目の世代のスナップショットが作成される場合について説明する。この場合、時刻10:00から時刻11:00までの間に更新されたPVOL701のデータが、2番目の世代のスナップショット(すなわちSVOL702B)に対応する差分コピー902として格納される。そして、時刻11:00から時刻12:00までの間に更新されたPVOL701のデータが、3番目の世代のスナップショット(すなわちSVOL702C)に対応する差分コピー902として格納される。
その後、例えば、SVOL702B(すなわち2番目の世代のスナップショット)のデータを読み出す要求を受信すると、第1のストレージシステム125は、その要求によって読み出し対象として指定されたアドレスに対応するスナップショットのデータを読み出して応答する。具体的には、第1のストレージシステム125は、指定されたアドレスに対応する2番目の世代のスナップショットのデータが差分コピー902として格納されている場合、そのデータを読み出して応答する。一方、指定されたアドレスのデータが時刻10:00から時刻11:00までの間に変更されなかった場合、指定されたアドレスに対応する2番目の世代のスナップショットのデータが差分コピー902として格納されていない。この場合、第1のストレージシステム125は、指定されたアドレスに対応する一つ前の世代(上記の例では最初の世代)のデータをフルコピー901から読み出して応答する。
上記のように、いずれかの世代のスナップショットのデータを読み出す場合に、その世代に対応する差分コピー902、それより古い世代に対応する差分コピー902、又は、最も古い世代のフルコピー901の少なくともいずれかのデータを読み出す必要があるが、PVOL701のデータを読み出す必要はない。
図10は、本発明の実施形態のスナップショット用容量プール703に含まれるSYS領域903に格納されるデータの説明図である。
第1のストレージシステム125が起動すると、SYS領域903に格納されたデータは、高速なアクセスが可能なメモリ(例えばキャッシュメモリ147)に展開される。これは、これによって、SVOL702への高速なアクセスが実現される。図10は、キャッシュメモリ147に展開されたSYS領域903を示す。
SYS領域903には、少なくともSVOLイメージディレクトリ1000及びフルコピーイメージディレクトリ1010が格納される。
SVOLイメージディレクトリ1000は、各世代のスナップショットに対応する複数のVVOLDIR(仮想ボリュームディレクトリ)1001を含む。図10には、例として、時刻10:00のスナップショットに対応するVVOLDIR1001A〜1001E、時刻11:00のスナップショットに対応するVVOLDIR1001F〜1001J、及び、時刻XX:00のスナップショットに対応するVVOLDIR1001K〜1001Oを示す。以下、VVOLDIR1001A〜1001Oのうち不特定の一つ又は複数を指す場合、これらをVVOLDIR1001とも記載する。
各VVOLDIR1001は、データの入出力先として指定されるSVOL702内の各アドレス(例えばいわゆる論理ブロックアドレス)に対応する。各VVOLDIR1001が各論理ブロックアドレスに対応する場合、各VVOLDIR1001は、自VVOLDIR1001に対応する論理ブロックアドレス、自VVOLDIR1001に対応するFCCB1011(後述)のアドレス、及び、自VVOLDIR1001に対応するスナップショットの世代を示す情報を含む。
なお、スナップショットの世代を示す情報とは、例えば、スナップショットの世代番号、その世代のスナップショットが作成された時刻、その世代のスナップショットに対応するSVOL702の識別子、又は、そのSVOL702とPVOL701とからなるペアの識別子等、スナップショットの世代を特定するために使用される情報である。
フルコピーイメージディレクトリ1010は、複数のFCCB(フルコピーコントロールブロック)1011を含む。図10には、例としてFCCB1011A〜1011Eを示す。以下、FCCB1011A〜1011Eのうち不特定の一つ又は複数を指す場合、これらをFCCB1011とも記載する。
各FCCB1011は、データの入出力先として指定されるSVOL702内の各アドレス(例えばいわゆる論理ブロックアドレス)に対応する。すなわち、各FCCB1011は、各世代の各VVOLDIR1001に対応する。例えば、VVOLDIR1001A、VVOLDIR1001F及びVVOLDIR1001Kが、それぞれ異なるSVOLの同一の論理ブロックアドレスに対応する場合、VVOLDIR1001A、VVOLDIR1001F及びVVOLDIR1001Kは、いずれも、一つのFCCB1011(例えばFCCB1011A)に対応付けられる。
各FCCB1011は、自FCCB1011と他の管理情報(例えば後述するSSCB又はPSCB)とを対応付けるポインタを含む。本実施形態の各FCCB1011は、SSCBを介してPSCB(プールスロットコントロールブロック)1012と対応付けられる(図10及び図12参照)。
図10には、例としてPSCB1012A〜1012Dを示す。以下、PSCB1012A〜1012Dのうち不特定の一つ又は複数を指す場合、これらをPSCB1012とも記載する。各PSCB1012は、自PSCB1012と他のPSCB1012とを対応付けるポインタを含む。図10の例では、PSCB1012Aは、PSCB1012Bと対応付けられる。さらに、各PSCB1012は、スナップショット用容量プール703の差分コピー902内の論理ブロックアドレスを含む。
図11は、本発明の実施形態においてSVOL702へのアクセスが実行される際のマッピングの説明図である。
スナップショット用容量プール703のSYS領域903には、ダイレクトアクセス管理テーブル1102が格納されている。このダイレクトアクセス管理テーブル1102は、図10に示したSVOLイメージディレクトリ1000及びフルコピーイメージディレクトリ1010等を含む。これらの詳細な構成については後述する(図12参照)。
フルバックアップ/差分バックアップ1101は、フルコピー901及び差分コピー902に相当する。すなわち、フルバックアップ/差分バックアップ1101の一部がフルコピー901に相当し、残りが差分コピー902に相当する。
第1のストレージシステム125は、SVOL702へのデータ入出力要求(すなわちデータ書き込み要求又はデータ読み出し要求)を受信すると、ダイレクトアクセス管理テーブル1102を参照して、その要求によってデータ入出力先として指定されたアドレスに対応するフルバックアップ/差分バックアップ1101内の領域を特定し、特定された領域へのデータの書き込み又はその領域からのデータの読み出しを実行する。実際には、特定された領域に割り当てられた仮想ボリューム用容量プールの記憶領域に対するデータの書き込み又は読み出しが実行される。
図12は、本発明の実施形態のダイレクトアクセス管理テーブル1102の説明図である。
図10を参照して説明したように、SVOLイメージディレクトリ1000は、フルコピーイメージディレクトリ1010に対応付けられる。より具体的には、SVOLイメージディレクトリ1000に含まれる各VVOLDIR1001は、フルコピーイメージディレクトリ1010に含まれる各FCCB1011に対応付けられる。
各FCCB1011は、各SSCB(スナップショットコントロールブロック)1201に対応付けられる。ただし、特定パターンのデータが書き込まれた論理ブロックに対応するFCCB1011には、SSCB1201が割り当てられない。この場合、FCCB1011内の、FCCB1011とSSCB1201とを対応付けるためのポインタの値は無効値となる。
SSCB1201は、スナップショット用容量プール703が提供する記憶領域を管理するために使用される管理情報である。一つのSSCBが、スナップショット用容量プール703の所定の大きさの記憶領域(言い換えると、所定の長さのアドレス範囲)に対応する。この所定の大きさの記憶領域は、スナップショット用容量プール703への仮想ボリューム用容量プール803の記憶領域の記憶領域の割り当ての単位である。
既に説明したように、スナップショット用容量プール703内の記憶領域へは、必要に応じて、仮想ボリューム用容量プール803内の記憶領域が割り当てられる。このとき、割り当て先であるスナップショット用容量プール703内の記憶領域は、後述するスナップショット用容量プール空き領域管理リスト1210によって管理される。一方、割り当てられる仮想ボリューム用容量プール803内の記憶領域は、後述する仮想ボリューム用容量プール空き領域管理キュー1220によって管理される。
各SSCB1201は、仮想ボリューム番号1212、仮想ボリュームアドレス1213、割り当て情報1214及び世代情報1215を含む。
仮想ボリューム番号1212は、各SSCB1201によって管理されるスナップショット用容量プール703の識別子である。
仮想ボリュームアドレス1213は、スナップショット用容量プール703内の、各SSCB1201に対応する記憶領域のアドレスである。
割り当て情報1214は、仮想ボリュームアドレス1213によって識別される記憶領域に、物理的な記憶領域(すなわち、仮想ボリューム用容量プール803の記憶領域)が割り当てられているか否かを示す情報である。
世代情報1215は、仮想ボリュームアドレス1213によって識別される記憶領域に格納されたデータに対応するスナップショットの世代を識別する情報である。スナップショットの世代を識別する情報とは、例えば、スナップショットの世代番号、スナップショットが作成された時刻情報、又は、スナップショットに対応するSVOLの識別子等である。
さらに、各SSCB1201は、そのSSCB1201とPSCB1012とを対応付ける情報、及び、そのSSCB1201と他のSSCB1201とを対応付ける情報を含む。SSCB1201とPSCB1012とを対応付ける情報に基づいて、SSCB1201に対応するスナップショット用容量プール703内の記憶領域に割り当てられた仮想ボリューム用容量プール803の記憶領域を特定することができる。SSCB1201と他のSSCB1201とを対応付ける情報に基づいて、そのSSCB1201の次の世代のSSCB1201を特定することができる。
スナップショット用容量プール703の記憶領域へは、仮想ボリューム用容量プール803の記憶領域が、必要に応じて割り当てられる。この割り当ては、例えば、スナップショット用容量プール703の記憶領域のアドレスの順に実行される。その場合、記憶領域の割り当ては、スナップショット用容量プール空き領域管理リスト1210を用いて管理される。スナップショット用容量プール空き領域管理リスト1210は、スナップショット用容量プール703の全記憶領域に対応する全SSCB1201のリスト、及び、次の割り当てブロックオフセット1211を含む。全SSCB1201のリストは、例えば、仮想ボリューム番号1212及び仮想ボリュームアドレス1213の順に並べられてもよい。
スナップショット用容量プール703いずれの記憶領域にも仮想ボリューム用容量プール803の記憶領域が割り当てられていない場合、全SSCB1201の割り当て情報1214の値は「未割り当て」であり、次の割り当てブロックオフセット1211の値はリストの先頭のSSCB1201を示す。
スナップショット用容量プール703の記憶領域に最初に仮想ボリューム用容量プール803の記憶領域を割り当てる必要が生じた場合、次の割り当てブロックオフセット1211が示す記憶領域、すなわち、リストの先頭のSSCB1201に対応する記憶領域に、仮想ボリューム用容量プール803の記憶領域が割り当てられる。このとき、リストの先頭のSSCB1201の割り当て情報1214の値が「割り当て済み」に更新され、さらに、次の割り当てブロックオフセット1211の値がリストの2番目のSSCB1201を示す値に変更される。
以後、さらに割り当ての必要が生じた場合、上記と同様に、次の割り当てブロックオフセット1211示す記憶領域に、仮想ボリューム用容量プール803の記憶領域が割り当てられる。このように、リストに登録された順に、割り当てが実行される。
一方、スナップショット用容量プール703に割り当てられる仮想ボリューム用容量プール803の記憶領域は、仮想ボリューム用容量プール空き領域管理キュー1220によって管理される。仮想ボリューム用容量プール空き領域管理キュー1220は、ポインタによって相互に関連付けられた複数のPSCB1012からなる。
各PSCB1012は、LDEV番号1221、プールボリュームアドレス1222、PSCB前方ポインタ1223及びPSCB後方ポインタ1224を含む。LDEV番号1221は、各PSCB1012に対応するLDEV802(すなわち、仮想ボリューム用容量プール803を構成するプールボリューム)の識別子である。プールボリュームアドレス1222は、各PSCB1012に対応するLDEV802内の所定の大きさの記憶領域のアドレスである。
PSCB前方ポインタ1223及びPSCB後方ポインタ1224は、各PSCB1012に対応する記憶領域の割り当てらの前後に割り当てられる記憶領域を示す。例えば、あるPSCB1012(ここでは第1のPSCBと記載する)のPSCB前方ポインタ1223が別のPSCB1012(ここでは第2のPSCBと記載する)を示し、第1のPSCB1012のPSCB後方ポインタ1224がさらに別のPSCB1012(ここでは第3のPSCBと記載する)を示す場合、第2のPSCB1012に対応する記憶領域がスナップショット用容量プール703に割り当てられた次に第1のPSCB1012に対応する記憶領域がスナップショット用容量プール703に割り当てられ、その次に第3のPSCB1012に対応する記憶領域がスナップショット用容量プール703に割り当てられる。
図13は、本発明の実施形態のSYS領域903の展開の説明図である。
第1のストレージシステム125の電源が遮断されている間(より具体的には、キャッシュメモリ147に電力が供給されていない間)、SYS領域903は、スナップショット用容量プール703に割り当てられた仮想ボリューム用容量プール803に格納される。
第1のストレージシステム125の電源が投入され、キャッシュメモリ147への電力の供給が開始されると、SYS領域903に格納されたダイレクトアクセス管理テーブル1102がキャッシュメモリ147に展開される。具体的には、SYS領域903のうち、仮想ボリューム用SYS領域1301がキャッシュメモリ147に展開され、さらに、スナップショット用SYS領域1302がキャッシュメモリ147に展開される。
スナップショット用SYS領域1302には、SVOL702とスナップショット用容量プール703との対応関係を管理する情報が格納される。具体的には、スナップショット用SYS領域1302には、ダイレクトアクセス管理テーブル1102に含まれる情報のうち、少なくとも、VVOLDIR1001とSSCB1201とを対応付ける情報が格納される。
仮想ボリューム用SYS領域1301には、スナップショット用容量プール703と仮想ボリューム用容量プール803との対応関係を管理する情報が格納される。具体的には、仮想ボリューム用SYS領域1301には、ダイレクトアクセス管理テーブル1102に含まれる情報のうち、少なくとも、SSCB1201とPSCB1012とを対応付ける情報が格納される。
スナップショット用SYS領域1302及び仮想ボリューム用SYS領域1301に格納された情報に基づいて、スナップショット用容量プール703が提供される。
図14は、本発明の実施形態における最新のSVOL702へのアクセスの説明図である。
最新のSVOL702とは、最も新しいスナップショット作成要求によって作成されたSVOL702である。例えば、図10において、時刻10:00のスナップショット作成要求に従ってSVOL702Aが作成され、時刻11:00のスナップショット作成要求に従ってSVOL702Bが作成され、時刻12:00のスナップショット作成要求に従ってSVOL702Cが作成される。現在時刻が12:00より後であり、かつ、時刻12:00より後に新たな世代のスナップショットが作成されていない場合、SVOL702Cが最新のSVOL702である。
SVOL702を作成するために、差分ビットマップ(BM)1401及びコピー要否ビットマップ(BM)1402が参照される。これらのビットマップは、例えば、SYS領域903に格納される。
差分BM1401は、複数のビットを含む。以下、差分BM1401に含まれる各ビットを差分ビットとも記載する。各差分ビットは、PVOL701内の所定の大きさの記憶領域に対応する。以下、一つの差分ビットに対応する所定の大きさの記憶領域を管理ブロックと記載する。論理ボリューム内の記憶領域が論理ブロックアドレスを用いて管理される場合、各管理ブロックは、一つの論理ブロックであってもよいが、複数の(所定の数の)論理ブロックによって構成されてもよい。
各差分ビットの値は、その差分ビットに対応する管理ブロックのデータが更新されたか否かを示す。例えば、差分ビットの値「1」が、データが更新されたことを示し、差分ビットの値「0」が、データが更新されていないことを示してもよい。
コピー要否BM1402は、複数のビットを含む。以下、コピー要否BM1402に含まれる各ビットをコピー要否ビットとも記載する。各コピー要否ビットは、差分ビットの場合と同様、PVOL701内の各管理ブロックに対応する。各コピー要否ビットの値は、そのコピー要否ビットに対応する管理ブロックのデータをスナップショット用容量プール703にコピーする必要があるか否かを示す。例えば、コピー要否ビットの値「1」が、コピーする必要があることを示し、コピー要否ビットの値「0」が、コピーする必要がないことを示してもよい。
ここで、スナップショット作成要求を受けた第1のストレージシステム125がSVOLを作成する処理について説明する。
例えば、第1のストレージシステム125が時刻10:00にPVOL701を対象とするスナップショット作成要求を受信する。第1のストレージシステム125は、そのスナップショット作成要求を受信した時点で、差分BM1401の全ビットを「0」に更新する。そのスナップショット作成要求がPVOL701の最初の世代のスナップショットの作成を要求するものである場合、第1のストレージシステム125は、そのスナップショット作成要求を受信した時点で、コピー要否BM1402の全ビットを「1」に更新する。
その後、第1のストレージシステム125は、値が「1」であるコピー要否ビットに対応する管理ブロックに格納されたデータをPVOL701から読み出して、スナップショット用容量プール703に書き込む。これによって、スナップショット作成要求を受信した時点で管理ブロックに格納されていたデータがスナップショット用容量プール703に退避される。この退避(すなわちPVOL701からスナップショット用容量プール703へのコピー)が終了した管理ブロックに対応するコピー要否ビットの値は「0」に更新される。
上記のように、最初のスナップショット作成要求を受信した場合には、全コピー要否ビットが「1」に更新されるため、その時点のPVOLに格納された全データがスナップショット用容量プール703に退避される。
ただし、図9を参照して説明したように、管理ブロックから読み出されたデータが特定パターンのデータである場合には、そのデータのスナップショット用容量プール703への書き込みを省略してもよい。
次に、PVOL701へのデータの書き込み要求及び読み出し要求を受信した第1のストレージシステム125が実行する処理について説明する。
上記のPVOL701からの読み出し及びスナップショット用容量プール703への書き込みは、通常の(すなわちアプリケーションサーバ101による)PVOL701へのアクセスのバックグラウンドで実行される。このため、まだ退避が終了していない管理ブロック内のアドレスを対象とする書き込み要求がアプリケーションサーバ101から送信される可能性がある。このような書き込み要求によって、まだ退避が終了していないデータが更新されると、そのデータを含むSVOL702を作成することができなくなる。
このため、第1のストレージシステム125は、PVOL701への書き込み要求を受信すると、書き込み先として指定されたアドレスを含む管理ブロックに対応するコピー要否ビットが「1」又は「0」のいずれであるかを判定する。
コピー要否ビットが「1」である場合、第1のストレージシステム125は、そのコピー要否ビットに対応する管理ブロックのデータをスナップショット用容量プール703に退避し、その後、要求された書き込みを実行する。このような退避は、以下の説明において、先行コピーとも記載される。そして、第1のストレージシステム125は、書き込みが実行された管理ブロックに対応する差分ビットを「1」に、コピー要否ビットを「0」に更新する。
一方、コピー要否ビットが「0」である場合、第1のストレージシステム125は、データの退避を実行せずに要求された書き込みを実行し、書き込みが実行された管理ブロックに対応する差分ビットを「1」に更新する。
なお、PVOL701からのデータの読み出しは、コピー要否ビットの値と関係なく、通常の場合と同様に実行される。
次に、最新のSVOL702へのデータの書き込み要求及び読み出し要求を受信した第1のストレージシステム125が実行する処理について説明する。
上記のように第1のストレージシステム125が時刻10:00のスナップショット作成要求を受信し、次回のスナップショット作成要求を受信していない時点において、時刻10:00のスナップショットに対応するSVOL702Aが最新のSVOL702である。
第1のストレージシステム125は、最新のSVOL702への書き込み要求を受信すると、その書き込み先に対応するコピー要否ビットを参照する。コピー要否ビットの値が「1」である場合、そのコピー要否ビットに対応するPVOL701の管理ブロックのデータをスナップショット用容量プール703に退避し、その後、退避されたデータに、要求されたデータを上書きする。そして、第1のストレージシステム125は、退避されたデータに対応するコピー要否ビットの値を「0」に更新する。
一方、参照されたコピー要否ビットの値が「0」である場合、第1のストレージシステム125は、上記のようなデータの退避を実行せず、書き込み要求によって指定されたアドレスに対応するスナップショット用容量プール703の記憶領域に、要求されたデータを書き込む。
第1のストレージシステム125は、最新のSVOL702からデータを読み出すための読み出し要求を受信すると、その読み出し要求によって指定されたアドレスに対応するコピー要否ビットを参照する。コピー要否ビットの値が「1」である場合、そのコピー要否ビットに対応するPVOL701の管理ブロックのデータをスナップショット用容量プール703に退避する。その後、第1のストレージシステム125は、読み出し要求によって指定されたPVOL701のアドレスからデータを読み出して、要求元に送信する。
一方、参照されたコピー要否ビットの値が「0」である場合、第1のストレージシステム125は、上記のようなデータの退避を実行せず、読み出し要求によって指定されたPVOL701のアドレスからデータを読み出して、要求元に送信する。
上記のようなSVOL702へのアクセスの詳細な手順については後述する(図23〜図25参照)。
図15は、本発明の実施形態における最新でないSVOL702へのアクセスの説明図である。
例えば、図10に示すように、SVOL702A、SVOL702B及びSVOL702Cが作成され、SVOL702Cが最新のSVOL702である場合、SVOL702A及びSVOL702Bが最新でないSVOL702である。
最新でないSVOL702には、コピー要否BM1402が対応付けられていない。したがって、最新でないSVOL702へのアクセスを実行する際に、コピー要否BM1402を参照する必要はない。しかし、複数の世代のSVOL702が共有しているデータに対する書き込み要求は、その共有されているデータが失われないように実行する必要がある。
例えば、最初の世代(第1世代)のSVOL702Aが作成され、その後、PVOL701のある管理ブロックのデータが全く更新されないままに次の世代(第2世代)のSVOL702Bが作成された場合、その管理ブロックに対応するSVOL702Aの管理ブロックのデータ(すなわち、そのSVOL702Aの管理ブロックに対応するスナップショット用容量プール703内の記憶領域に格納されたデータ)は、SVOL702Bにも共有されている。
例えば、図15に示すSVOL702Bの管理ブロック1501にスナップショット用容量プール703内の記憶領域1502が対応付けられている場合、SVOL702Bに対する書き込み要求によって管理ブロック1501に新たにデータが書き込まれると、それによって記憶領域1502に格納されたデータが更新される。この例において、更新される前の記憶領域1502に格納されていたデータがSVOL702AとSVOL702Bとによって共有されていた場合、記憶領域1502の更新の結果、SVOL702Aを復元することができなくなる。
このため、第1のストレージシステム125は、書き込み要求によって指定されたアドレスを含む管理ブロック(以下、書き込み対象管理ブロックと記載)に対応付けられた記憶領域が複数の世代によって共有されている場合、要求されたデータをスナップショット用容量プール703内の空き記憶領域に書き込む。そして、第1のストレージシステム125は、その記憶領域を、書き込み対象管理ブロックと新たに対応付ける。
一方、書き込み対象管理ブロックに対応付けられたスナップショット用容量プール703の記憶領域が複数の世代によって共有されていない場合、第1のストレージシステム125は、その記憶領域に要求されたデータを書き込む。
第1のストレージシステム125は、最新でないSVOL702のいずれかのアドレスからデータを読み出す要求を受信した場合、要求されたアドレスを含む管理ブロックに対応付けられたスナップショット用容量プール703の記憶領域からデータを読み出して、要求元に応答する。
図16A及び図16Bは、本発明の実施形態において容量プールを設定するために実行される処理のフローチャートである。
具体的には、図16A及び図16Bは、仮想ボリューム用容量プール803を設定するために実行される。以下、フローチャートの説明において第1のストレージシステム125内の各プログラムが実行する処理は、実際には、そのプログラムを実行する制御プロセッサ143によって実現される。
仮想ボリューム用容量プール803の設定は、管理サーバ111によって開始される。
まず、管理者は、仮想ボリューム用容量プール803に対応付けるLDEV802の情報を入力する。具体的には、管理者は、入力装置501を操作して、POOL−ID(すなわち仮想ボリューム用容量プール803の識別子)、閾値、対応付けるLDEV802の数及びそれらのLDEV802を識別するLDEV番号を入力する(S1601)。
管理サーバ111は、入力された情報を含む仮想ボリューム用容量プール設定の指示コマンドを生成して、ネットワークアダプタ506を介して第1のストレージシステム125に送信する(S1602)。
第1のストレージシステム125において、管理サーバ111から送信された指示コマンドは、保守管理端末153を介してコマンド制御プログラム201が受信する(S1603)。
次に、コマンド制御プログラム201は、受信した指示コマンドの内容を確認する。指示コマンドの内容が無効である場合、コマンド制御プログラム201はこれを拒否する(S1604)。
次に、コマンド制御プログラム201は、指示コマンドが仮想ボリューム用容量プール803の設定である場合、プール制御プログラム205に受信した指示コマンドを渡す。プール制御プログラム205は、指示コマンドを受け取って、容量プール設定処理を実行する(S1605)。
プール制御プログラム205は、まず、指示コマンドに係るPOOL−IDが有効であるか否かを確認し、さらに、そのPOOL−IDが定義されたか否かを確認する(図16BのS1606)。
指示コマンドに係るPOOL−IDが有効であり、かつ、そのPOOL−IDがまだ定義されていない場合、プール制御プログラム205は、プール管理情報221から、指示コマンドに係るPOOL−IDのPOOL固有情報を取得する。さらに、プール制御プログラム205は、POOL−IDが定義されたことを示す情報をPOOL管理情報に登録する(S1607)。
次に、プール制御プログラム205は、指示コマンドに係るLDEV番号が使用可能であるか否かを確認する(S1608)。具体的には、指示コマンドに係るLDEV番号が閉塞している又はフォーマット中である場合、当該LDEV番号は使用不可であるため、プール制御プログラム205はコマンドを拒否する(S1609)。
指示コマンドに係るLDEV802が既に使用中である場合(例えば、LDEV802へのパスが定義されている場合、コピー機能等によって使用されている場合、又は、コピー先として予約されている場合)、当該LDEVは使用不可であるため、プール制御プログラム205はコマンドを拒否する(S1610)。
次に、プール制御プログラム205は、プール管理情報221内のPOOL固有情報に、容量、空き容量、閾値、POOL−VOL数及びPOOL−VOLデバイスリストを設定する(S1611)。
次に、プール制御プログラム205は、仮想ボリューム用容量プール803に対応付けられたLDEV802にPSCB1012を割り当てる(S1612)。
上記のようなプール制御プログラム205の処理によってLDEV802が仮想ボリューム用容量プール803に対応付けられる。
仮想ボリューム用容量プール803の設定後、構成制御プログラム206は、LDEV管理情報222を設定する(S1613)。具体的には、構成制御プログラム206は、LDEV管理情報222を参照して、仮想ボリューム用容量プール803に割り当てられたLDEV802に対応するLDEV固有情報(図示省略)を取得する。構成制御プログラム206は、取得したLDEV固有情報デバイス属性として、POOL−VOL属性(すなわち、そのLDEV802が仮想ボリューム用容量プール803に対応付けられていることを示す情報)を設定する。さらに、構成制御プログラム206は、LDEV管理情報222のPOOL−ID(図示省略)に、指示コマンドに係るPOOL−IDを設定する。
次に、構成制御プログラム206は、プール管理情報221のPOOL−IDの状態を「POOL有効」に設定する(S1614)。そして、構成制御プログラム206は、管理サーバ111に、コマンドが成功した旨の応答を送信する(図16AのS1615)。
管理サーバ111は、第1のストレージシステム125からの応答を受信すると(S1616)、処理を終了する。
この処理によってLDEV802が仮想ボリューム用容量プール803に対応付けられる。
図17は、本発明の実施形態においてVDEV801を設定するために実行される処理のフローチャートである。
まず、管理サーバ111は、管理サーバ111のメモリに保持されたストレージシステム構成情報(図示省略)を検索して、未定義のVDEV801の番号(VDEV#)を取得する(S1701)。
管理者は、入力装置501を操作して、VDEV801の情報を設定する(S1702)。このとき、管理者は、VDEV801に割り当てられるPDEV151のRAIDグループの情報及びそのエミュレーションタイプを指示する。
管理サーバ111は、設定された情報を含むVDEV作成の指示コマンドを生成し、生成した指示コマンドを第1のストレージシステム125に送信する(S1703)。
第1のストレージシステム125において、管理サーバ111から送信された指示コマンドは、保守管理端末153を介してコマンド制御プログラム201が受信する(S1704)。コマンド制御プログラム201は、受信した指示コマンドの内容を確認する。指示コマンドの内容が無効である場合、コマンド制御プログラム201はこれを拒否する(S1705)。
コマンド制御プログラム201は、指示コマンドがVDEV801の設定である場合、受信した指示コマンドを構成制御プログラム206に渡す。構成制御プログラム206は、指示コマンドを受け取って、VDEV作成処理を実行する(S1706)。
構成制御プログラム206は、指示コマンドに係るVDEV番号が、既に使われているVDEV番号であるか否か確認する(S1707)。指示コマンドに係るVDEV番号が既に使われている場合、構成制御プログラム206はその指示コマンドを拒否する。
次に、構成制御プログラム206は、VDEV管理情報223にVDEV固有情報を新たに作成する。構成制御プログラム206は、このVDEV固有情報に、指示コマンドに係るVDEVの情報を設定する(S1708)。具体的には、構成制御プログラム206は、指示されたRAIDグループの容量に基づいて総サイズ、残サイズ及びエミュレーションタイプを、VDEV固有情報に設定する。これによって、指示コマンドに係るVDEV801が設定される。当該VDEV801を仮想ボリュームに設定する場合は、デバイス属性を「仮想ボリューム」に設定する。
コマンド制御プログラム201は、VDEV作成処理が完了すると、管理サーバ111に、コマンド成功の応答を送信する(S1709)。
管理サーバ111は、第1のストレージシステム125からの応答を受信すると(S1710)、処理を終了する。
この処理によってVDEV801が設定される。
図18は、本発明の実施形態においてLDEV802を設定するために実行される処理のフローチャートである。
この処理は、VDEV801に、記憶領域であるLDEV802を設定する(すなわち対応付ける)ために実行される。なお、この処理のVDEV801は、図17の処理で設定されたVDEV801であってもよいし、既に設定されているVDEV801であってもよい。
まず、管理サーバ111は、LDEV802に対応付けられるVDEV801の番号(VDEV#)を取得する(S1801)。このVDEV番号として、図17の処理で設定されたVDEV番号が、管理サーバ111によって自動的に設定される。あるいは、管理者が、既に設定されているVDEV番号を指定してもよい。
次に、管理者は、入力装置501を操作して、設定するLDEV802の情報を指定する。具体的には、管理者は、設定するLDEV番号、VEDV番号、VDEV801の先頭スロット番号及び終了スロット番号の情報を指定する(S1802)。
次に、管理サーバ111は、管理者によって指定された情報を含むLDEV設定の指示コマンドを生成し、生成した指示コマンドを第1のストレージシステム125に送信する(S1803)。
第1のストレージシステム125において、管理サーバ111から送信された指示コマンドは、保守管理端末153を介してコマンド制御プログラム201が受信する(S1804)。
コマンド制御プログラム201は、受信した指示コマンドの内容を確認する。指示コマンドの内容が無効である場合、コマンド制御プログラム201はこれを拒否する(S1805)。
コマンド制御プログラム201は、指示コマンドがLDEV設定である場合、構成制御プログラム206に受信した指示コマンドを渡す。構成制御プログラム206は指示コマンドを受け取って、LDEV設定処理を実行する(S1806)。
構成制御プログラム206は、指示コマンドに係るVEDV番号が、既に使われているVEDV番号であるか否かを確認する(S1807)。指示コマンドに係るVEDV番号が既に使われている場合、構成制御プログラム206はその指示コマンドを拒否する。
次に、構成制御プログラム206は、指示コマンドに係るVDEV801の総サイズを、VDEV管理情報223から取得する。そして、構成制御プログラム206は、指示コマンドに係るLDEV802のサイズが、そのVDEV801に定義可能であるか否かを確認する(S1808)。LDEV802のサイズは指示コマンドの先頭スロット番号と終了スロット番号とから算出される。LDEV802が定義不可能である場合、構成制御プログラム206はコマンドを拒否する。
次に、構成制御プログラム206は、指示コマンドに係るVDEV801のエミュレーションタイプを、VDEV固有情報から取得する。このエミュレーションタイプを、指示コマンドに係るLDEV802のエミュレーションタイプとして設定する(S1809)。
次に、構成制御プログラム206は、指示コマンドに係るLDEV番号のLDEV固有情報を設定する。さらに、構成制御プログラム206は、指示コマンドに係るVDEV番号のVDEV固有情報を設定する。(S1810)。
具体的には、構成制御プログラム206は、指示コマンドに係るLDEV番号のLDEV固有情報を新たに作成する。そして、構成制御プログラム206は、そのLDEV固有情報に、LDEV番号、先頭スロット番号、終了スロット番号及びデバイス属性を定義する。さらに、構成制御プログラム206は、LDEV固有情報を設定した後に、指示コマンドに係るVDEV番号のVDEV固有情報を設定する。具体的には、構成制御プログラム206は、設定したLDEV数を加算し、指示コマンドに係るLDEV番号、残サイズ、先頭LDEVスロット及び終了LDEVスロットを設定する。これによって、指示コマンドに係るLDEVが、VDEVに対応付けられる。
コマンド制御プログラム201は、LDEV設定の処理が完了すると、管理サーバ111に、コマンド成功の応答を送信する(S1811)。
管理サーバ111は、第1のストレージシステム125からの応答を受信すると(S1812)、処理を終了する。
この処理によってVDEVにLDEVが対応付けられる。
なお、上記の図16Aから図18の処理において管理サーバ111が実行する処理は、保守管理端末153によって実行されてもよい。その場合、管理者の保守管理端末153への入力には入力装置601が使用され、保守管理端末153とコマンド制御プログラム201との間の通信は、ネットワークアダプタ606を介して実行される。
図19は、本発明の実施形態において実行されるPVOL701へのデータの書き込み処理の説明図である。
第1のストレージシステム125のコマンド制御プログラム201がアプリケーションサーバ101等からPVOL701を対象とするライトコマンド(すなわちデータの書き込みを要求するコマンド)を受信すると、図19に示す書き込み処理が開始される(S1901)。
次に、コマンド制御プログラム201は、ライトコマンドによってデータの書き込み先として指定された論理ボリュームを判定する(S1902)。図19の例では、書き込み先としてPVOL701が指定される。
次に、新スナップショット処理プログラム202は、指定されたPVOL701を含むペア(以下、当該ペアと記載)の状態を確認する(S1903)。当該ペアの状態を示す情報は、ペア管理情報224に含まれる。
次に、コマンド制御プログラム201は、ライトコマンドによってデータの書き込み先として指定されたアドレス(以下、ライト対象アドレスと記載)を確認する(S1904)。図19の例では、PVOL701内のアドレスが指定される。
次に、コマンド制御プログラム201は、ライトコマンドによって書き込みを要求されたデータ(以下、ライトデータと記載)を受信し、そのライトデータをLR133のメモリ131に格納する(S1905)。
次に、コマンド制御プログラム201は、ライトコマンドによってデータの書き込み先として指定された論理ボリュームを判定する(S1906)。
次に、新スナップショット処理プログラム202は、当該ペアの状態を確認する(S1907)。
次に、新スナップショット処理プログラム202は、当該ペアの状態が「Copy」状態、すなわち、初期コピーが実行されている状態であるか否かを判定する(S1908)。初期コピーとは、最初の世代のスナップショットを作成するために、PVOL701に格納された全データ(ただし、特定のパターンのデータを除く)をSVOL702にコピーする(より詳細には、スナップショット用容量プール703の特定パターン削除フルコピー901としてコピーする)処理である。
S1908において、当該ペアが「Copy」状態であると判定された場合、処理は後述するS1911に進む。
一方、S1908において、当該ペアが「Copy」状態でないと判定された場合、新スナップショット処理プログラム202は、当該ペアの状態が「PSUS」状態、すなわち、SVOL702へのコピーが停止している状態であるか否かを判定する(S1909)。当該ペアが「PSUS」状態であるとき、当該ペアのPVOL701にデータが書き込まれても、その書き込みがSVOL702に反映されない。その代わり、データが書き込まれたPVOL701の管理ブロックに対応する差分BM1401の差分ビットが「1」に更新される(図14参照)。
S1909において、当該ペアが「PSUS」状態であると判定された場合、処理は後述するS1911に進む。
一方、S1909において、当該ペアが「PSUS」状態でないと判定された場合、新スナップショット処理プログラム202は、当該ペアの状態が「Copy RS」状態、すなわち、リストアのためのコピーが実行されている状態であるか否かを判定する(S1910)。
リストアとは、指定された世代のスナップショットが作成された時点のPVOL701を復元する処理である。リストアを実行するために、指定された世代に対応するSVOL702のデータがPVOL701にコピーされる。
S1910において、当該ペアが「Copy RS」状態でないと判定された場合、処理は後述するS1914に進む。
S1908において当該ペアが「Copy」状態であると判定されたか、S1909において当該ペアが「PSUS」状態であると判定されたか、又は、S1910において当該ペアが「Copy RS」状態であると判定された場合、新スナップショット処理プログラム202は、当該ペアのコピー要否BM1402を確認する(S1911)。
次に、新スナップショット処理プログラム202は、コピー要否BM1402を確認した結果に基づいて、ライト対象アドレスに対応する領域に格納されたデータをコピーする必要があるか否かを判定する(S1912)。具体的には、新スナップショット処理プログラム202は、ライト対象アドレスに対応するコピー要否ビット(すなわち、ライト対象アドレスに対応する領域を含む管理ブロックに対応するコピー要否ビット)の値が、コピーが必要であることを示す値(図14の例では「1」)である場合、ライト対象アドレスに対応する領域に格納されたデータをコピーする必要があると判定する。
S1912においてコピーの必要がないと判定された場合、処理は後述するS1914に進む。
一方、S1912においてコピーの必要があると判定された場合、先行コピー処理が実行される(S1913)。先行コピー処理については後述する(図20参照)。なお、S1910において当該ペアが「Copy RS」状態であると判定され、かつ、S1912においてコピーの必要があると判定された場合、S1913において、先行コピー処理の代わりに、リストア中の先行コピー処理が実行される。リストア中の先行コピー処理については後述する(図21参照)。
S1910において当該ペアが「Copy RS」状態でないと判定されたか、S1912においてコピーの必要がないと判定されたか、又は、S1913が終了した場合、コマンド制御プログラム201は、LR133のメモリ131に格納されたデータをキャッシュメモリ147に転送する(S1914)。転送されたデータは、その後、PVOL701の、ライト対象アドレスによって指示された領域に格納される。
次に、新スナップショット処理プログラム202は、ライト対象アドレスに対応する差分BM1401の差分ビットを、データが更新されたことを示す値(図14の例では「1」)に更新する(S1915)。
次に、コマンド制御プログラム201は、ライトコマンドに基づくデータの書き込み処理が終了したことを、ライトコマンドの送信元に報告する(S1916)。
以上で、PVOL701へのデータの書き込み処理が終了する。
図20は、本発明の実施形態において、PVOL701へのデータの書き込みの際に実行される先行コピー処理の説明図である。
図20に示す先行コピー処理は、図19のS1912においてコピー要否ビットが「コピー要」を示す値であると判定された場合に、そのコピー要否ビットに対応するPVOL701の管理ブロックを対象として、図19のS1913において実行される。以下、この処理の対象の管理ブロックを「ライト対象領域」と記載する。
先行コピー処理が開始されると、新スナップショットコピー処理プログラム203は、先行コピーメッセージを送信する(S2001)。
次に、新スナップショットコピー処理プログラム203は、PVOL701のライト対象領域に格納されているデータを読み出して、キャッシュメモリ147に格納(すなわちステージング)する(S2002)。
次に、新スナップショットコピー処理プログラム203は、スナップショット用容量プール703のコピー先の領域を確認する(S2003)。
次に、新スナップショットコピー処理プログラム203は、S2003における確認の結果に基づいて、スナップショット用容量プール703にコピー先の領域が確保されているか否かを判定する(S2004)。
S2004においてコピー先の領域が確保されていないと判定された場合、新スナップショットコピー処理プログラム203は、スナップショット用容量プール703にコピー先の領域を確保する(S2005)。
S2005が終了したか、又は、S2004においてコピー先の領域が確保されていると判定された場合、新スナップショットコピー処理プログラム203は、キャッシュメモリ147上に、フルバックアップ領域(すなわちフルコピー901)に対応する領域を確保する(S2006)。
次に、新スナップショットコピー処理プログラム203は、コピー元及びコピー先を決定する(S2007)。S2002においてステージングされたデータがコピー元、S2006において確保された領域がコピー先として決定される。
次に、新スナップショットコピー処理プログラム203は、決定されたコピー元からコピー先へのデータコピーを実行する(S2008)。キャッシュメモリ147上でコピーされたデータは、その後、スナップショット用容量プール703に確保されたコピー先領域に格納される。
次に、新スナップショットコピー処理プログラム203は、S2008においてコピーされたデータと、あらかじめ定められた特定パターンのデータとを比較する(S2009)。ここでは、特定パターンのデータが「0」のみからなるデータである場合を例として示す。
新スナップショットコピー処理プログラム203は、S2008においてコピーされたデータが、「0」のみからなるデータであるか否かを判定する(S2010)。
ステップ2010においてデータが「0」のみからなると判定された場合、新スナップショットコピー処理プログラム203は、スナップショット用容量プール703に確保されたコピー先の領域を開放する(S2011)。具体的には、これによって、スナップショット用容量プール703のコピー先領域に対する、仮想ボリューム用容量プール803の記憶領域の割り当てが解除される。
一方、ステップ2010において「0」以外のデータが含まれると判定された場合、新スナップショットコピー処理プログラム203は、アドレス管理情報を更新する(S2012)。
S2011が終了したか、又は、S2012が終了した場合、新スナップショットコピー処理プログラム203は、コピー要否BM1402の、ライト対象領域に対応するコピー要否ビットを、コピーが不要であることを示す値(図14の例では「0」)に更新する(S2013)。
以上で先行コピー処理が終了する。
図21は、本発明の実施形態において実行されるリストア中の先行コピー処理の説明図である。
図21に示すリストア中の先行コピー処理は、図19のS1910において当該ペアが「Copy RS」状態であると判定され、かつ、S1912においてコピー要否ビットが「コピー要」を示す値であると判定された場合に、そのコピー要否ビットに対応する管理ブロックを対象として、図19のS1913において実行される。
図21に示す処理のうち、S2101〜S2108は、それぞれ、図20のS2001〜S2008と同様であるため、説明を省略する。新スナップショットコピー処理プログラム203は、S2108の次にS2109を実行し、その次にS2110を実行する。S2109及びS2110は、それぞれ、図20のS2012及びS2013と同様であるため、説明を省略する。
ただし、図21の処理において、SVOL702(すなわちスナップショット用容量プール703)からPVOL701へのコピーが実行される。具体的には、図21の処理におけるライト対象領域は、図19のS1912において「コピー要」と判定されたコピー要否ビットに対応するSVOL702の管理ブロックである。S2102において、SVOL702のライト対象領域に格納されているデータがキャッシュメモリ147にステージングされる。S2103〜S2105において、コピー先の領域は、PVOL701に確保される。
図22は、本発明の実施形態において実行されるPVOL701からのデータの読み出し処理の説明図である。
第1のストレージシステム125のコマンド制御プログラム201がアプリケーションサーバ101等からPVOL701を対象とするリードコマンド(すなわちデータの読み出しを要求するコマンド)を受信すると、図22に示す読み出し処理が開始される(S2201)。
次に、コマンド制御プログラム201は、リードコマンドによってデータの読み出しの対象として指定されたアドレス(以下、リード対象アドレスと記載)を確認する(S2202)。図22の例では、PVOL701内のアドレスが指定される。
次に、コマンド制御プログラム201は、リードコマンドによってデータの読み出し対象として指定された論理ボリュームを判定する(S2203)。
次に、新スナップショット処理プログラム202は、指定されたPVOL701を含むペア(以下、当該ペアと記載)の状態を確認する(S2204)。
次に、新スナップショット処理プログラム202は、当該ペアの状態が「Copy RS」状態であるか否かを判定する(S2205)。
S2205において当該ペアが「Copy RS」状態でないと判定された場合、処理は後述するS2209に進む。
S2205において当該ペアが「Copy RS」状態であると判定された場合、新スナップショット処理プログラム202は、当該ペアのコピー要否BM1402を確認する(S2206)。
次に、新スナップショット処理プログラム202は、コピー要否BM1402を確認した結果に基づいて、リード対象アドレスに対応する領域に格納されたデータをコピーする必要があるか否かを判定する(S2207)。この判定は、図19のS1912と同様に実行される。
S2207においてコピーの必要がないと判定された場合、処理は後述するS2209に進む。
一方、S2207においてコピーの必要があると判定された場合、リストア中の先行コピー処理が実行される(S2208)。S2208において実行されるリストア中の先行コピー処理は、図21を参照して説明した通りである。
S2205において当該ペアが「Copy RS」状態でないと判定されたか、又は、S2208が終了した場合、コマンド制御プログラム201は、キャッシュヒットしたか否か、すなわち、リード対象アドレスに格納されたデータがキャッシュメモリ147に格納されているか否かを判定する(S2209)。
S2209においてキャッシュミスしたと判定された場合、コマンド制御プログラム201は、PVOL701の、リード対象アドレスに対応する領域からデータを読み出して、それをキャッシュメモリ147に格納する(S2210)。
次に、コマンド制御プログラム201は、S2210で読み出されたデータをアプリケーションサーバ101に送信する(S2211)。
一方、S2209においてキャッシュヒットしたと判定された場合、コマンド制御プログラム201は、S2210を実行せずに、キャッシュメモリ147から読み出したデータをアプリケーションサーバ101等に送信する(S2211)。
以上で、PVOL701からのデータの読み出し処理が終了する。
図23は、本発明の実施形態において実行されるSVOL702へのデータの書き込み処理の説明図である。
第1のストレージシステム125のコマンド制御プログラム201がバックアップサーバ102等からSVOL702を対象とするライトコマンドを受信すると、図23に示す書き込み処理が開始される(S2301)。
次に、コマンド制御プログラム201は、ライトコマンドによってデータの書き込み先として指定された論理ボリュームを判定する(S2302)。図23の例では、書き込み先としてSVOL702が指定される。
次に、新スナップショット処理プログラム202は、指定されたSVOL702を含むペア(以下、当該ペアと記載)の状態を確認する(S2303)。
次に、新スナップショット処理プログラム202は、当該ペアの状態が「PSUS」状態であるか否かを判定する(S2304)。
S2304において当該ペアが「PSUS」状態でないと判定された場合、コマンド制御プログラム201は、ライトコマンドに対して、Check Statusが付与されたエラーを応答する(S2306)。
一方、S2304において当該ペアが「PSUS」状態であると判定された場合、コマンド制御プログラム201は、ライト対象アドレスを確認し、転送可能であることをコマンド応答によって通知する(S2305)。
S2305が実行された場合、新スナップショット処理プログラム202は、ライトデータをLR133のメモリ131に格納する(S2307)。
次に、コマンド制御プログラム201は、ライトコマンドによってデータの書き込み先として指定された論理ボリュームを判定する(S2308)。
次に、新スナップショット処理プログラム202は、当該ペアの状態を確認する(S2309)。
次に、新スナップショット処理プログラム202は、当該ペアの状態が「PSUS」状態であるか否かを判定する(S2310)。
S2310において当該ペアが「PSUS」状態でないと判定された場合、コマンド制御プログラム201は、ライトコマンドに対して、Check Statusが付与されたエラーを応答する(S2306)。
一方、S2310において当該ペアが「PSUS」状態であると判定された場合、新スナップショット処理プログラム202は、当該ペアのコピー要否BM1402を確認する(S2311)。
次に、新スナップショット処理プログラム202は、コピー要否BM1402を確認した結果に基づいて、ライト対象アドレスに対応する領域に格納されたデータをコピーする必要があるか否かを判定する(S2312)。この判定は、図19のS1912と同様に実行される。
S2312においてコピーの必要がないと判定された場合、処理は後述するS2314に進む。
一方、S2312においてコピーの必要があると判定された場合、先行コピー処理が実行される(S2313)。先行コピー処理については後述する(図24参照)。
S2312においてコピーの必要がないと判定されたか、又は、S2313が終了した場合、コマンド制御プログラム201は、LR133のメモリ131に格納されたデータをキャッシュメモリ147に転送する(S2314)。転送されたデータは、その後、SVOL702の、ライト対象アドレスによって指示された領域(すなわち、実際には、スナップショット用容量プール703の対応する領域)に格納される。
次に、コマンド制御プログラム201は、ライトコマンドに基づくデータの書き込み処理が終了したことを、ライトコマンドの送信元に報告する(S2315)。
以上で、SVOL702へのデータの書き込み処理が終了する。
図24は、本発明の実施形態において、SVOL702へのデータの書き込みの際に実行される先行コピー処理の説明図である。
図24に示す先行コピー処理は、図23のS2312においてコピー要否ビットが「コピー要」を示す値であると判定された場合に、そのコピー要否ビットに対応するSVOL702の管理ブロックを対象として、図23のS2313において実行される。以下、この処理の対象の管理ブロックを「ライト対象領域」と記載する。
先行コピー処理が開始されると、新スナップショットコピー処理プログラム203は、先行コピーメッセージを送信する(S2401)。
次に、新スナップショットコピー処理プログラム203は、SVOL702のライト対象領域に格納されているデータを読み出して、キャッシュメモリ147に格納(すなわちステージング)する(S2402)。
次に、新スナップショットコピー処理プログラム203は、スナップショット用容量プール703のフルバックアップ領域を確認する(S2403)。
次に、新スナップショットコピー処理プログラム203は、S2403における確認の結果に基づいて、スナップショット用容量プール703のフルバックアップ領域が確保されているか否かを判定する(S2404)。
S2404においてフルバックアップ領域が確保されていないと判定された場合、新スナップショットコピー処理プログラム203は、スナップショット用容量プール703にフルバックアップ領域を確保する(S2505)。
S2405が終了したか、又は、S2404においてフルバックアップ領域が確保されていると判定された場合、新スナップショットコピー処理プログラム203は、キャッシュメモリ147上に、フルバックアップ領域に対応する領域を確保する(S2406)。
次に、新スナップショットコピー処理プログラム203は、コピー元及びコピー先を決定する(S2407)。S2402においてステージングされたデータがコピー元、S2406において確保された領域がコピー先として決定される。
次に、新スナップショットコピー処理プログラム203は、決定されたコピー元からコピー先へのデータコピーを実行する(S2408)。キャッシュメモリ147上でコピーされたデータは、その後、スナップショット用容量プール703に確保されたフルバックアップ領域に格納される。
次に、新スナップショットコピー処理プログラム203は、アドレス管理情報を更新する(S2409)。
次に、新スナップショットコピー処理プログラム203は、コピー要否BM1402の、ライト対象領域に対応するコピー要否ビットを、コピーが不要であることを示す値(図14の例では「0」)に更新する(S2410)。
以上で先行コピー処理が終了する。
図25は、本発明の実施形態において実行されるSVOL702からのデータの読み出し処理の説明図である。
第1のストレージシステム125のコマンド制御プログラム201がバックアップサーバ102等からSVOL702を対象とするリードコマンドを受信すると、図25に示す読み出し処理が開始される(S2501)。
次に、コマンド制御プログラム201は、リードコマンドによってデータの読み出し対象として指定された論理ボリュームを判定する(S2502)。図25の例では、SVOL702がデータの読み出し対象として指定される。
次に、新スナップショット処理プログラム202は、指定されたSVOL702を含むペア(以下、当該ペアと記載)の状態を確認する(S2503)。
次に、新スナップショット処理プログラム202は、当該ペアの状態が「PSUS」状態であるか否かを判定する(S2504)。
S2504において当該ペアが「PSUS」状態でないと判定された場合、コマンド制御プログラム201は、リードコマンドに対して、Check Statusが付与されたエラーを応答する(S2505)。
S2504において当該ペアが「PSUS」状態であると判定された場合、新スナップショット処理プログラム202は、当該ペアのコピー要否BM1402を確認する(S2506)。
次に、新スナップショット処理プログラム202は、コピー要否BM1402を確認した結果に基づいて、リード対象アドレスに対応する領域に格納されたデータをコピーする必要があるか否かを判定する(S2507)。この判定は、図19のS1912と同様に実行される。
S2507においてコピーの必要があると判定された場合、先行コピー処理が実行される(S2508)。S2508において実行される先行コピー処理は、図24を参照して説明した通りである。
次に、コマンド制御プログラム201は、先行コピー処理のために読み出されたデータ(すなわち、先行コピー処理によってコピーされたデータ)をバックアップサーバ102等に送信する(S2511)。
一方、S2507においてコピーの必要がないと判定された場合、コマンド制御プログラム201は、キャッシュヒットしたか否かを判定する(S2509)。
S2509においてキャッシュミスしたと判定された場合、コマンド制御プログラム201は、SVOL702の、リード対象アドレスに対応する領域(実際には、その領域に対応するスナップショット用容量プール703の領域)からデータを読み出して、それをキャッシュメモリ147に格納する(S2510)。
次に、コマンド制御プログラム201は、S2510で読み出されたデータをバックアップサーバ102等に送信する(S2211)。
以上で、PVOL701からのデータの読み出し処理が終了する。
以上に説明したように、本実施形態によれば、差分データによって2番目以降の世代のスナップショットを作成することができる。このため、容量効率の高いスナップショットを実現することができる。
さらに、本実施形態によれば、SVOL702に格納されたデータを読み出すために、PVOL701にアクセスする必要がない。このため、PVOL701に障害が発生した場合であっても、バックアップサーバ102は、SVOL702に格納されたデータを読み出すことができる。さらに、バックアップサーバ102は、アプリケーションサーバ101によるPVOL701へのアクセスに影響を与えることなく、SVOL702へのデータの書き込み及び読み出しを実行することができる。