図1は、本発明の第一の実施例に係る計算機システムの構成に関するブロック図である。
計算機システムは、管理計算機100、ホスト計算機200、ストレージシステム300及び管理端末1600を備える。
管理計算機100及びホスト計算機200は、それぞれ一台ずつが図示されているが、何台備わっていてもよい。また、ストレージシステム300は、一台が図示されているが、何台備わっていてもよい。
管理計算機100、ホスト計算機200及びストレージシステム300が、第一の通信ネットワーク(例えばSAN(Storage Area Network))500を介して相互に接続される。また、管理計算機100は、ホスト計算機200及びストレージシステム300に、第二の通信ネットワーク(例えばLAN(Local Area Network)を介して接続される。図1の例では、管理端末1600が、ストレージシステム300に直接的に接続されているが、第一及び第二の通信ネットワーク500、550のうちの少なくとも一つを介してストレージシステム300に接続されても良い。
管理計算機100は、メモリ110、プロセッサ120及びIO処理部130を備える計算機である。メモリ110、プロセッサ120及びIO処理部130は、内部ネットワーク(図示省略)によって相互に接続される。
プロセッサ120は、メモリ110に記憶されるプログラムを実行することによって、各種処理を行う。例えば、プロセッサ120は、ストレージシステム300にIO要求を送信することによって、当該ストレージシステム300によって実行されるリモートコピーを制御する。なお、IO要求は、書込要求、読出要求又はリモートコピー制御要求等を含む。IO要求については、図11を参照して後に詳細に説明する。
メモリ110には、プロセッサ120によって実行されるプログラム及びプロセッサ120によって必要とされる情報等が記憶される。具体的には、メモリ110には、オフラインボリューム管理テーブル111、ストレージ管理プログラム112、コピー情報テーブル113及びストレージ情報テーブル114が記憶される。更に、メモリ110には、OS(Operating System)及びアプリケーションプログラム(AP)が記憶されてもよい。以下、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するプロセッサ(例えばCPU)によって処理が行われるものとする。
ストレージ管理プログラム112は、ストレージシステム300を管理する。
オフラインボリューム管理テーブル111は、後述するオフラインボリュームを管理するための情報である。なお、オフライン管理テーブル111については、図4を参照して後に詳細に説明する。
コピー情報テーブル113は、ローカルコピーおよびリモートコピーの構成及び状態を管理するための情報である。そのため、メモリ110は、管理計算機100によって管理されるローカルコピーの数と同数のコピー情報テーブル113を記憶する。なお、コピー情報テーブル113については、図5を参照して後に詳細に説明する。また、ローカルコピー及びリモートコピーについても後述する。
ストレージ情報テーブル114は、当該管理計算機100によって管理されるストレージシステム300に関する情報である。なお、ストレージ情報テーブル114については、図6で詳細に説明する。
IO処理部130は、データ通信線510を介してホスト計算機200及びストレージシステム300に接続されるインタフェースである。
ホスト計算機200は、メモリ210、プロセッサ220及びIO処理部230を備える計算機である。メモリ210、プロセッサ220及びIO処理部230は、内部ネットワーク(図示省略)によって相互に接続される。
プロセッサ220は、メモリ210に記憶されるプログラムを実行することによって、各種処理を行う。例えば、プロセッサ220は、ストレージシステム300にIO要求を送信することによって、そのストレージシステム300にある論理ボリュームのデータにアクセスする。
メモリ210には、プロセッサ220によって実行されるプログラム及びプロセッサ220によって必要とされる情報等が記憶される。具体的には、メモリ210には、アプリケーションプログラム(AP)211、OS212、エージェントプログラム213及びIO静止化プログラム214が記憶される。
AP211は、各種処理を実行する。例えば、AP211は、データベース機能又はWEBサーバ機能を提供する。OS212は、ホスト計算機200の処理の全体を制御する。エージェントプログラム213は、管理計算機100からの指示を受け付ける。IO静止化プログラムは、OSと連携し、IO要求を制御する。
IO処理部230は、管理計算機100及びストレージシステム300と通信するためのインタフェースである。具体的には、例えば、IO処理部230は、ストレージシステム300にIO要求を送信する。
ストレージシステム300は、記憶制御装置1000及び複数(又は一つ)のディスクドライブ1500を備える。
ディスクドライブ1500は、ディスク型の記憶メディアのドライブであり、ホスト計算機200から書き込み要求されたデータを記憶する。ディスクドライブ1500に代えて、他種の記憶デバイス(例えばフラッシュメモリドライブ)が採用されても良い。また、複数のディスクドライブ1500のうちの少なくとも一つが、リムーバブルの記憶装置であっても良い。そして、リムーバブルの記憶装置に、仮想ボリュームのバックアップ先とされる実ボリュームが設けられても良い。
記憶制御装置1000は、ストレージシステム300の動作を制御する。具体的には、例えば、記憶制御装置1000は、ディスクドライブ1500へのデータの書き込み及びディスクドライブ1500からのデータの読み出しを制御する。また、記憶制御装置1000は、一以上の論理ボリュームをホスト計算機200に提供する。一以上の論理ボリュームには、一以上のディスクドライブ1500の記憶空間を基に形成された論理的な一以上の記憶領域である一つ以上の実ボリュームと、仮想ボリュームとのうちの少なくとも一つが含まれる。
記憶制御装置1000は、キャッシュメモリ1100、共有メモリ1200、入出力制御部1300及びディスク制御部1400を備える。キャッシュメモリ1100、共有メモリ1200、入出力制御部1300及びディスク制御部1400は、内部ネットワーク(図示省略)によって相互に接続される。
キャッシュメモリ1100は、ディスクドライブ1500へ書き込まれるデータ及びディスクドライブ1500から読み出されるデータを、一時的に記憶する。
ディスク制御部1400は、ディスクドライブ1500へのデータの書き込み及びディスクドライブ1500からのデータの読み出しを制御する。また、ディスク制御部1400は、一以上のディスクドライブ1500の記憶空間を基に実ボリュームを生成する。
入出力制御部1300は、プロセッサ1310、IO送受信部1320及びメモリ1330を備える。プロセッサ1310、IO送受信部1320及びメモリ1330は、内部ネットワーク(図示省略)によって相互に接続される。
IO送受信部1320は、第一の通信ネットワーク500を介して通信する(例えば、管理計算機100、ホスト計算機200及び他のストレージシステム300の少なくとも一つと通信する)インタフェースである。具体的には、例えば、IO送受信部1320は、管理計算機100又はホスト計算機200からIO要求を受信する。また、IO送受信部1320は、ディスクドライブ1500から読み出されたデータを、管理計算機100又はホスト計算機200に送信する。
プロセッサ1310は、メモリ1330又は共有メモリ1200に記憶されるプログラムを実行することによって、各種処理を行う。具体的には、例えば、プロセッサ1310は、IO送受信部1320によって受信されたIO要求を処理する。
メモリ1330には、プロセッサ1310によって実行されるプログラム及びプロセッサ1310によって必要とされる情報等が記憶される。
共有メモリ1200には、プロセッサ1310によって実行されるプログラム及びプロセッサ1310によって必要とされる情報等が記憶される。更に、共有メモリ1200には、ディスク制御部1400によって実行されるプログラム及びディスク制御部1400によって必要とされる情報等が記憶される。具体的には、例えば、共有メモリ1200には、コピーペア管理情報1210、仮想ボリューム処理プログラム1220、コピー処理プログラム1230、入出力処理プログラム1240、ボリューム管理情報1250、仮想ボリューム管理情報1270及びプール管理情報1290が記憶される。
コピーペア管理情報1210は、当該ストレージシステム300によって提供される論理ボリュームを含むコピーペアを管理するための情報である。コピーペアは、ローカルコピー、リモートコピーの対象となる二つの論理ボリュームからなるコピー構成である。また、コピーペア管理情報1210については、図7を参照して後に詳細に説明する。
仮想ボリューム処理プログラム1220は、仮想ボリュームに関わる処理を実施する。コピー処理プログラム1230は、ローカルコピーを行う。入出力処理プログラム1290は、IO送受信部1320によって受信されたIO要求を処理する。
ボリューム管理情報1250は、ストレージシステム300によって提供される論理ボリューム及び仮想ボリュームを管理するための情報である。なお、ボリューム管理情報1250については、図8を参照して詳細に説明する。
仮想ボリューム管理情報1270は、仮想ボリュームの仮想的な記憶領域と論理ボリュームの割り当て領域の対応情報である。なお、仮想ボリューム管理情報1270については、図9を参照して詳細に説明する。
プール管理情報1290は、仮想ボリュームに割り当て可能な論理ボリュームを管理するための情報である。なお、プール管理情報1290については、図10を参照して詳細に説明する。
入出力処理プログラムは、IO要求を処理するためのプログラムである。
管理端末1600は、ストレージシステム300に備わる記憶制御装置1000に接続される。管理端末1600は、プロセッサ、メモリ及びインタフェースを備える計算機である。管理端末1600は、システム使用者(ユーザ)から入力された情報を、ストレージシステム300の記憶制御装置1000に送信する。
次に、本発明の第一の実施例で行われる処理の概要を説明する。
図2は、ストレージシステム300における仮想ボリューム処理の説明図である。
ストレージシステム300は、仮想ボリュームをホスト計算機200に提供する。仮想ボリュームの提供先であるホスト計算機200には、特定容量の論理ボリュームがストレージシステム内に存在するものとして認識される(つまり実ボリュームと同様に認識される)。ストレージシステム300は、仮想ボリューム及びそれの仮想領域を指定したデータIO要求(ライト要求或いはリード要求)をホスト計算機200から受けた場合に、その仮想領域に実領域(後述するプールを構成する実ボリュームにおける実領域)を割り当てる。
図2では、例えば、ストレージシステム300は、ホスト計算機200に20GB(ギガバイト)の仮想ボリューム(Vol1)を提供している。ここで、例えば、ホスト計算機200からのデータIO要求で仮想ボリューム(Vol1)の仮想領域に、データ要素D3が記憶されるが、実際には、その仮想領域に割り当てられた実領域(P3)にデータ要素D3が記憶される。仮想ボリュームに対する割り当て単位としての実領域を、以後、「ページ」と呼び、ページに記憶されるデータ(言い換えれば、ページの割当て先の仮想領域に記憶されるデータ)を、「データ要素」と呼ぶ。ページP3は、実ボリューム(Vol3)から提供される。また、通常、ホスト計算機200からアクセスされる通常の実ボリュームと区別するために、ストレージシステム300では、ページ提供用途の実ボリュームが特別なボリュームグループ(以下、「プール」と呼ぶ)に属する論理ボリュームとして管理されている。
次に、図3を用いて、仮想ボリュームのバックアップ処理の概要を説明する。
図3は、仮想ボリュームのバックアップ処理の概要の説明図である。
仮想ボリュームを論理ボリュームにバックアップするために、ストレージシステム300が、仮想ボリュームに割り当てられているページに記憶されているデータ要素を、論理ボリューム(例えば実ボリューム)にコピーする。その際、ストレージシステム300は、論理ボリュームには、データ要素を連続的に配置する。
図3では、データ要素D1及びD2はコピー済みで、ストレージシステム300は、データ要素D3を論理ボリューム(Vol2)にコピーするが、その際、データ要素D3とデータ要素D2との間で空き領域を生じさせないよう、データ要素D2が記憶されている実領域と連続した次の実領域に、データ要素D3を書込む。
このように、ストレージシステム300は、仮想ボリューム(Vol1)に記憶されている各データ要素を論理ボリューム(Vol2)にバックアップする場合には、仮想ボリューム(Vol1)内で仮想的に散在している複数のデータ要素を、論理ボリューム(Vol2)の連続した複数の実領域にコピーする(言い換えれば、論理ボリューム(Vol2)にシーケンシャルに書込む)。これにより、論理ボリューム(Vol2)に無駄な空き領域が生じてしまうことを防ぐことができる。
なお、ストレージシステム300は、一つの論理ボリューム(Vol2)に、複数の仮想ボリュームに存在する複数のデータ要素をシーケンシャルにコピーすることもできる。また、論理ボリューム(Vol2)の記憶容量は、図示のように、仮想ボリューム(Vol1)と同じであっても良いし、仮想ボリューム(Vol1)より大きくても小さくても良い。
図4は、管理計算機100に記憶されるオフラインボリューム管理テーブル111の構成図である。
オフラインボリューム管理テーブル111を構成する各レコード(行)には、例えば、バックアップストレージID1111、バックアップボリュームID1112、保管ストレージID1113、保管ボリュームID1114、OS管理ボリューム情報1115、バックアップ時刻1116及びコメント1117が記録される。
バックアップストレージID1111は、バックアップ対象の仮想ボリュームを提供するストレージシステム300の一意な識別子である。
バックアップボリュームID1112は、バックアップ対象の仮想ボリュームの一意な識別子である。
保管ストレージID1113は、バックアップ先の論理ボリュームを提供するストレージシステム300の一意な識別子である。
保管ボリュームID1114は、バックアップ先の論理ボリュームの一意な識別子である。
OS管理ボリューム情報1115は、ホスト計算機200がバックアップ対象の仮想ボリュームに付与していた、OSのボリューム管理情報である。たとえば、ドライブ名やボリュームシリアル番号などが該当する。
バックアップ時刻1116は、管理計算機100がバックアップ処理の開始を指示した時刻である。
コメント1117は、バックアップ対象の仮想ボリュームに格納されるデータの内容を理解するために必要な付加的な情報である。
図5は、管理計算機100に記憶されるコピー情報テーブル113の構成図である。
コピー情報テーブル113には、コピー情報1131、グループID1132及びコピー構成情報が含まれる。
コピー情報1131は、コピー種別及びコピーオプション情報を含む。コピー種別は、このコピー情報テーブル113によって管理されるコピーがローカルコピー又はリモートコピーのいずれであるかを示す。ローカルコピーとは、同一のストレージシステム300内で行われるコピーであり、この場合、コピー元の論理ボリュームとコピー先の論理ボリュームとが同一のストレージシステム300に存在する。リモートコピーとは、異なるストレージシステム300間で行われるコピーであり、この場合、コピー元の論理ボリュームとコピー先の論理ボリュームとが別々のストレージシステム300に存在する。コピーオプション情報は、コピー種別毎に備わるオプションを表す情報である。例えば、オプション情報は、ローカルコピーの一時停止時に副ボリューム(コピー先の論理ボリューム)への書き込みが可能か否かを表す。ローカルコピーの一時停止とは、管理計算機100からの指示によるローカルコピーの一時停止である。
グループID1132は、複数のコピーペアを含むグループの一意な識別子である。グループを用いることで、管理計算機100は当該グループに含まれるコピーペアをまとめて制御することができる。
コピー構成情報は、正ストレージID1133、正ボリュームID1134、副ストレージID1135及び副ボリュームID1136、コピー状態情報1137を含む。
正ストレージID1133は、コピー元となった論理ボリューム(正ボリューム)を提供するストレージシステム(正ストレージシステム)300の一意な識別子である。正ボリュームID1134は、コピー元となった論理ボリューム(正ボリューム)の一意な識別子である。
副ストレージID1135は、コピー先となった論理ボリュームを提供するストレージシステム(副ストレージシステム)300の一意な識別子である。ローカルコピーの場合は、正ストレージシステムと同一のIDになる。副ボリューム1136は、コピー先となった論理ボリューム(副ボリューム)の一意な識別子である。
コピー状態情報1137は、このコピー情報テーブル113によって管理されるコピーの現在の状態を示す。具体的には、例えば、コピー状態情報1132は、このコピー情報テーブル113によって管理されるコピーの状態が、コピー中、一時停止中、ペア状態又は異常状態のいずれであるかを示す。
図6は、管理計算機100に記憶されるストレージ情報テーブル114の構成図である。
ストレージ情報テーブル114は、ストレージID1141及び論理ボリュームID1142を含む。
ストレージID1141は、管理計算機100によって管理されるストレージシステム300の一意な識別子である。論理ボリュームID1142は、ストレージID1141によって識別されるストレージシステム300によって提供される論理ボリュームの一意な識別子である。仮想フラグ1143は、論理ボリュームが仮想ボリュームであるか否かを示す。たとえば、仮想フラグが、“1”である場合、この仮想フラグに対応するボリュームIDから識別される論理ボリュームが仮想ボリュームであることを示す。
図7は、ストレージシステム300に記憶されるコピーペア管理情報1210の構成図である。
コピーペア管理情報1210は、論理ボリュームID12101、コピー状態情報12102、コピー対象ストレージID12103、コピー対象ボリュームID12104、コピーペアID12105、コピーグループID12106及びコピー種別12107を含む。
論理ボリュームID12101は、このコピーペア管理情報1210を記憶するストレージシステム300によって提供される論理ボリュームの一意な識別子である。
コピー状態情報12102は、論理ボリュームID12101によって識別される論理ボリュームに対するコピーの現在の状態を示す。具体的には、例えば、コピー状態情報12101は、論理ボリュームID12101によって識別される論理ボリュームが、正ボリューム、副ボリューム、コピー中、一時停止中又は異常のいずれであるかを示す。
コピー対象ボリュームID12104は、論理ボリュームID12101によって識別される論理ボリュームとコピーペアになる論理ボリュームの一意な識別子である。つまり、コピー対象ボリュームID12104は、論理ボリュームID12101によって識別される論理ボリュームに記憶されるデータのコピー先又はコピー元となる論理ボリュームの一意な識別子である。
コピー対象ストレージID12103は、論理ボリュームID12101によって識別される論理ボリュームとコピーペアになる論理ボリュームを提供するストレージシステム300の一意な識別子である。つまり、コピー対象ストレージID12103は、コピー対象ボリュームID12104によって識別される論理ボリュームを提供するストレージシステム300の一意な識別子である。
コピーペアID12105は、論理ボリュームID12101によって識別される論理ボリューム及びコピー対象ボリュームID12104によって識別される論理ボリュームを含むコピーペアの一意な識別子である。
コピーグループID12106は、コピーペアID12105によって識別されるコピーペアが属するコピーグループの一意な識別子である。ストレージシステム300は、一つ以上のコピーペアを含むコピーグループを管理する。そのため、管理計算機100は、コピーグループを指定して、ローカルコピーもしくはリモートコピーの運用の一時停止、再開又は解除をグループに含まれるコピーペアを一括して指示できる。
コピー種別12107は、コピーペアID12105によって識別されるコピーペアに実行されるコピーの種類である。具体的には、例えば、コピー種別12107は、ローカルコピー、リモートコピーのいずれかを表す。
図8は、ストレージシステム300に記憶されるボリューム管理情報1250の構成図である。
ボリューム管理情報1250は、論理ボリュームID12501、ボリューム状態情報12502、容量12503、コピーペアID12505、グループID12506及び仮想フラグ12506を含む。
論理ボリュームID12501は、このボリューム管理情報1250を記憶するストレージシステム300によって提供される論理ボリュームの一意な識別子である。
ボリューム状態情報12502は、論理ボリュームID12501によって識別される論理ボリュームの現在の状態を示す。具体的には、例えば、ボリューム状態情報12502は、正ボリューム、副ボリューム、正常、異常又は未実装のうち少なくとも一つを表す。より具体的には、例えば、論理ボリュームID12501によって識別される論理ボリュームが正ボリュームの場合、ボリューム状態情報12502は、「正ボリューム」を表す。また、論理ボリュームID12501によって識別される論理ボリュームが副ボリュームの場合、ボリューム状態情報12502は、「副ボリューム」を表す。また、論理ボリュームID12501によって識別される論理ボリュームにホスト計算機200が正常にアクセスできる場合、ボリューム状態情報12502は、「正常」を表す。また、論理ボリュームID12501によって識別される論理ボリュームにホスト計算機200が正常にアクセスできない場合、ボリューム状態情報12502は、「異常」を表す。例えば、ディスクドライブ1500の故障時、コピーの障害時に、ボリューム状態情報12502は、「異常」を表す。また、論理ボリュームID12501によって識別される論理ボリュームにデータが格納されていない場合、ボリューム状態情報12502は、「未実装」を表す。
容量12503は、論理ボリュームID12501によって識別される論理ボリュームの容量である。
コピーペアID12505は、論理ボリュームID12501によって識別される論理ボリュームを含むコピーペアの一意な識別子である。
グループID12505は、コピーペアID12505によって識別されるコピーペアが属するコピーグループの一意な識別子である。
仮想フラグ12506は、論理ボリュームID12501によって識別される論理ボリュームが仮想ボリュームであるか否かを示す。
図9は、ストレージシステム300に記憶される仮想ボリューム管理情報1270の構成図である。
仮想ボリューム管理情報1270は、仮想ボリュームに関する情報である。仮想ボリューム管理情報1270の数は、ストレージシステム300が保持する仮想ボリュームの個数と同数である。つまり、仮想ボリューム管理情報1270と仮想ボリュームは1対1で対応する。仮想ボリューム管理情報1270は、ボリュームID12701、直前参照アドレス12702、プールID12703及びアドレスマップを含む。以下、この仮想ボリューム情報1270を記憶するストレージシステム300を「当該ストレージシステム300」と呼び、この仮想ボリューム管理情報1270に対応する仮想ボリュームを「当該仮想ボリューム」と呼ぶ。
ボリュームID12701は、当該仮想ボリュームの一意な識別子である。
直前参照アドレス12702は、当該仮想ボリュームを構成する仮想領域のアドレスであって、直前回にアクセスされた仮想領域のアドレスである。ストレージシステム300がホスト計算機200から仮想ボリュームを指定したデータ更新もしくはデータ参照のIO要求を受信した場合に、直前参照アドレス12702が、そのIO要求で指定されているアクセス先アドレス(仮想領域のアドレス)に更新される。
プールID12703は、当該ストレージシステム300によって管理されるプールを一意に示す識別子である。プールID12703は、当該仮想ボリュームにページを提供する実ボリューム群を特定するために使用される。
アドレスマップは、仮想アドレス12704、論理ボリュームID12705、論理アドレスポインタ12705及び更新フラグ12706で構成される。
仮想アドレス12704は、仮想ボリュームにおける仮想領域を指すエクステントアドレスである。仮想領域のサイズはページのサイズと同一である。ホスト計算機200からのIO要求において仮想ボリュームが指定される場合、仮想ボリュームにおけるアクセス先の仮想領域を表す仮想アドレスも指定される。
論理アドレスポインタ12705は、プールID12703に属する実ボリュームの論理ボリュームIDと、その実ボリュームにおけるページのアドレスからなる。つまり、仮想領域にページが割り当てられている場合、論理アドレスポインタ12705は、そのページのアドレスと、そのページを有する実ボリュームの論理ボリュームIDとを含んだ情報である。なお、仮想領域にページが割り当てられていない場合、その仮想領域の仮想アドレス12704に対応した論理アドレスポインタ12705としては、「空き」を示す情報となる。
更新フラグ12706は、当該仮想ボリュームのコピー処理中に使用するフラグである。更新フラグの用法は後述する。
図10は、ストレージシステム300に記憶されるプール管理情報1290の構成図である。
プール管理情報1290は、プールを管理するための情報である。プール管理情報1290の数は、プールの数と同数である。つまり、プール管理情報1290とプールは1対1で対応する。プール管理情報1290は、プールID12901、前回割り当てボリュームID12906及び論理ボリューム記憶領域管理情報を含む。以下、このプール管理情報1290に対応するプールを「当該プール」と呼ぶ。
プールID12901は、当該プールを一意に示す識別子である。
前回割り当てボリュームID12906は、当該プールに属する実ボリュームを一意に示す識別子である。前回割り当てボリュームID12906は、当該プールに属する実ボリュームで、最後に割り当てられたページを有する実ボリュームのIDが格納される。
論理ボリューム記憶領域管理情報は、当該プールに属する実ボリュームを管理するための情報である。論理ボリューム記憶領域管理情報の数は、当該プールに属する実ボリュームの数と同数である。つまり、論理ボリューム記憶領域管理情報と当該プールに属する実ボリュームは1対1で対応する。論理ボリューム記憶領域管理情報は、論理ボリュームID12902、空きポインタ12903、アドレス12904及び割り当てフラグ12905を含む。以下、この論理ボリューム記憶領域管理情報に対応する実ボリュームを「当該実ボリューム」と呼ぶ。
論理ボリュームID12902は、当該実ボリュームの一意な識別子である。
空きポインタ12903は、当該実ボリュームにおける或る割当て可能なページ(例えば、仮想領域に割り当てられていないページ)のアドレス12904を指すポインタである(例えば、複数の割当て可能のページがあった場合には、それら複数の割当て可能なページのうちの先頭の割当て可能なページを指すポインタである)。
アドレス12904は、ページのアドレスを表す。
割り当てフラグ12905は、それに対応するページが割当て済みか未割当てか(つまり、割り当て不可能か割り当て可能か)を表す。
図11は、IO要求7300の説明図である。
IO要求7300は、管理計算機100又はホスト計算機200によって発行される。IO要求7300は、宛先73001、指示内容73002、通し番号73003、グループID73004及びオプション73005を含む。
宛先73001は、このIO要求7300についての宛先に関する情報である。宛先73001は、例えば、このIO要求7300の送信先となるストレージシステム300の識別子と、そのストレージシステム300における論理ボリューム(例えば仮想ボリューム或いは実ボリューム)の識別子と、その論理ボリュームにおける記憶領域(例えば仮想領域或いは実領域)のアドレス(ボリュームアドレス)とを含んだ情報である。
指示内容73002は、このIO要求7300によって指示される処理の内容である。例えば、指示内容73002は、ローカルコピー又はリモートコピーの制御指示か、或いは、データアクセスの指示等である。ローカルコピー又はリモートコピーの制御指示としては、例えば、指示内容73002は、ローカルコピー新規開始、ローカルコピー追加、ローカルコピークローズ、リモートコピー新規開始、リモートコピー追加、リモートコピークローズ、リストア準備、高速リストア、通常リストア(リストア準備、高速リストア、通常リストアはローカルコピーリモートコピー共通)、又は状態取得などである。データアクセスの指示としては、例えば、データ書き込み又はデータ参照である。
通し番号73003は、このIO要求7300が発行された順番を示す。そのため、通し番号73003は、このIO要求7300の発行元である管理計算機100又はホスト計算機200によって決められる。
グループ73004は、このIO要求7300による処理の対象となるコピーグループの一意な識別子である。
オプション73005は、コピー構成情報、このIO要求7300を補助するオプション情報及びこのIO要求7300によって書き込みが要求されるデータ等である。なお、コピー構成情報は、コピー種別、コピー先のストレージID、コピー元の論理ボリュームIDもしくは仮想ボリュームID、コピー先のストレージID及びコピー元の論理ボリュームIDもしくは仮想ボリュームID等を含む。
図12は、ストレージシステム300におけるデータアクセス処理のフローチャートである。
ストレージシステム300の入出力制御部1300は、ホスト計算機200からデータアクセス指示のIO要求7300を受信すると、そのIO要求7300の宛先73001が仮想ボリュームを現しているか否かを判定する(ステップ5000)。具体的には、例えば、入出力制御部1300は、IO要求7300のあて先73001を参照し、あて先73001に含まれているボリュームIDを取得する。次に、入出力制御部1300は、取得したボリュームIDに合致する論理ボリュームに関する情報を、ボリューム管理情報1250から取得する。そのボリューム管理情報1250の仮想フラグ12506が仮想ボリュームを表している場合(ステップ5000でYes)、入出力制御部1300は、ステップ5005以降を実行し、仮想ボリュームを表していない場合(ステップ5000でNo)、ステップ5090を実行する。以下、図12及び図13の説明において、上記取得したボリュームIDに対応する仮想ボリュームを「当該仮想ボリューム」と呼ぶ。
ステップ5005において、入出力制御部1300は、上記取得したボリュームIDに合致するボリュームID12701を有した仮想ボリューム管理情報1270を複数の仮想ボリューム管理情報1270の中から特定する(この特定された仮想ボリューム管理情報1270を、以下、図12及び図13の説明において、「当該仮想ボリューム管理情報1270」と呼ぶ)。次に、入出力制御部1300は、当該仮想ボリューム管理情報1270から、上記IO要求7300のあて先73001に含まれているボリュームアドレス(以下、図12及び図13の説明において「当該ボリュームアドレス」と言う)に合致する仮想アドレス12704を特定する。入出力制御部1300は、特定した仮想アドレス12704に対応した当該仮想アドレスエントリを参照する(なお、仮想アドレスエントリとは、論理アドレスポインタ12705及び更新フラグ12706で構成されたエントリである)。
入出力制御部1300は、上記IO要求7300の指示内容73002がデータ更新か否かを調べる(ステップ5010)。データ更新である場合(ステップ5010でYes)、入出力制御部1300は、さらに、当該仮想ボリュームでローカルコピー又はリモートコピーが処理中であるか否かを、コピーペア管理情報1210のコピー状態情報12102(上記取得したボリュームIDに合致する論理ボリュームID12101に対応したコピー状態情報12102)を参照することで判定する(ステップ5020)。
ステップ5020の判定の結果、ローカルコピーかリモートコピーの処理中(コピー状態情報12102がコピー中)である場合(ステップ5020でYes)、入出力制御部1300は、コピー処理中のデータアクセス処理(ステップ5030)を実施する。コピー処理中のデータアクセス処理については後述する。
ステップ5020の判定の結果、ローカルコピーもリモートコピーも処理中でない場合(ステップ5020でNo)、もしくは、上記のコピー処理中のデータアクセス処理(ステップ5030)の終了後、入出力制御部1300は、当該仮想アドレスエントリにおける論理アドレスポインタ12705を参照する(ステップ5060)。参照の結果、論理アドレスポインタ12705が「空き」を表している場合(ステップ5060でNo)、入出力制御部1300は、プールからページを割り当てる処理(ステップ5070)を実施する。ステップ5070の詳細については後述する。
プールからページを割り当てる処理(ステップ5070)の後、もしくは、上記ステップ5060の判定で論理アドレスポインタ12705が「空き」を表していない場合(ステップ5060でYes)、入出力制御部1300は、当該仮想ボリューム管理情報1270における直前参照アドレス12702を、IO要求7300の宛先73001に含まれているボリュームアドレス(仮想アドレス)に置き換える(ステップ5080)。
ここで、ステップ5010の判定で、上記IO要求7300における指示内容73002がデータ参照である場合(ステップ5010でNo)、入出力制御部1300は、当該仮想アドレスエントリの論理アドレスポインタ12705を参照する。参照の結果、論理アドレスポインタ12705が「空き」を表している場合(ステップ5040でNo)、入出力制御部1300は、上記IO要求7300でデータ参照の結果を“0”として(つまり、“0”を表すデータ要素が読み出されたとして)、ホスト計算機200にデータ要素“0”を返信し(5050)、データアクセス処理を終了する。
次に、ステップ5080の処理が終了した場合、もしくは、ステップ5040の判定で、論理アドレスポインタ12705が「空き」を表していない場合(ステップ5040でYes)、入出力制御部1300は、論理ボリューム(仮想ボリューム又は実ボリューム)へのデータアクセス処理(ステップ5090)を実施する。論理ボリュームへのデータアクセス処理で、IO要求7300のあて先73001が表す論理ボリュームが仮想ボリュームである場合、入出力制御部1300は、当該仮想アドレスエントリの論理アドレスポインタ12705から特定されるページにアクセスする。また、IO要求7300のあて先73001が表す論理ボリュームが実ボリュームである場合、入出力制御部1300は、その宛先73001におけるボリュームアドレスから特定される実領域にアクセスする。
以上が、データアクセス処理の流れの一例である。なお、図12の説明において、入出力制御部1300が行う処理を、例えば、入出力処理プログラム1240を実行するプロセッサ1310が行うことができる。そのプロセッサ1310は、仮想ボリュームに関わる処理については、仮想ボリューム処理プログラム1220を実行することで行うことができる。
図13は、図12のステップ5070での処理(プールからページを割り当てる処理)の流れを表すフローチャートである。
ストレージシステム300の入出力制御部1300は、当該仮想ボリューム管理情報1270における直前参照アドレス12702から、当該仮想ボリュームについての直前回のアクセス先の仮想領域のアドレス(以下、「過去アドレス」と呼ぶ)を特定する(ステップ5100)。
次に、入出力制御部1300は、特定された過去アドレスと当該ボリュームアドレスとを比較し、両アドレスが近傍(例えば、当該ボリュームアドレスが過去アドレスの前後1ページ領域長以内に収まっている)か否かを判定する(ステップ5110)。
このステップ5110の判定は、以下の理由、すなわち、連続した二以上の仮想領域がアクセスされる場合は、プール内の同一実ボリュームにおける連続した(連続していなくてもページ間隔が所定のページ数以下である)ページを割り当てることで、その実ボリュームにおいてシーケンシャルなアクセスを可能にし、また、離散的な仮想領域がアクセスされる場合は、プール内の異なる実ボリュームからページが割り当てられることで、並行したデータアクセスを可能にする理由により、行われる。結果として、一度検出したデータは短時間に大量にアクセスが可能な論理ボリューム(厳密には論理ボリュームを構成するハードディスクドライブ)のデータアクセス特性を効率的に引き出すことができる。
ここで、ステップ5110の判定の結果、当該ボリュームアドレスと過去アドレスとが近傍である場合(ステップ5110でYes)、入出力制御部1300は、当該仮想ボリューム管理情報1270のプールID12701からプール管理情報1290を特定し、さらに、そのプール管理情報1290の前回割り当てボリュームID12906を参照する。次に、入出力制御部1300は、その前回割り当てボリュームIDと同じボリュームIDが格納された論理ボリューム記憶領域管理情報の空きポインタ12903を参照し、その空きポインタ12903が「空きなし」を表しているか否かを判定する(ステップ5120)。
一方、ステップ5110の判定の結果、当該ボリュームアドレスと過去アドレスが近傍ではない場合(ステップ5110でNo)、入出力制御部1300は、当該仮想ボリューム管理情報1270のプールID12701からプール管理情報1290を特定し、さらに、そのプール管理情報1290の前回割り当てボリュームID12906を参照する。次に、入出力制御部1300は、その前回割り当てボリュームIDとは異なるボリュームIDが格納された二以上の論理ボリューム記憶領域管理情報に、空きポインタ12903が「空きなし」を表す論理ボリューム記憶領域管理情報が存在するか否かを判定する(ステップ5180)。
ステップ5180の判定の結果、空きポインタ12903が「空きなし」でない論理ボリューム記憶領域管理情報がある場合(ステップ5180でYes)、入出力制御部1300は、そのような論理ボリューム記憶領域管理情報が複数個存在するならば、任意で一つの論理ボリューム記憶領域管理情報を選出する。また、ステップ5120の判定の結果、上記の前回割り当てボリュームIDと同じボリュームIDが格納された論理ボリューム記憶領域管理情報の空きポインタ12903が「空きなし」ではない場合(ステップ5120でYes)、入出力制御部1300は、その論理ボリューム記憶領域管理情報を選出する。
次に、入出力制御部1300は、ステップ5180でYesもしくはステップ5120でYesの場合に選出された論理ボリューム記憶領域管理情報における空きポインタ12903が示すアドレス12904に対応した割り当てフラグ12905を、「割り当てあり」をあらわす情報に更新する(ステップ5140)。
次に、入出力制御部1300は、上記選出された論理ボリューム記憶領域管理情報において、値のなるべく小さいアドレス12904に対応し「割当てなし」を表す割り当てフラグ12905を検索する(ステップ5150)。
ここで、ステップ5150の検索の結果、上記選出された論理ボリューム記憶領域管理情報から「割当てなし」を表す割り当てフラグ12905が見つかれば(ステップ5150Yes)、入出力制御部1300は、空きポインタ12903を、見つかった割り当てフラグ12905に対応したアドレス12904が表す情報に更新する(ステップ5160)。
一方、ステップ5150の判定の結果、上記選出された論理ボリューム記憶領域管理情報から「割当てなし」を表す割り当てフラグ12905が見つからなければ(ステップ5150でNo)、入出力制御部1300は、上記選出された記憶領域管理情報における空きポインタ12903を「空きなし」を表す情報に更新する。
ステップ5120及び5180のいずれかの判定でNoになった場合、入出力制御部1300は、空きポインタ12903が「空きなし」でない論理ボリューム記憶領域管理情報を検索する(ステップ5190)。
ステップ5190での検索の結果、空きポインタ12903が「空きなし」でない論理ボリューム記憶領域管理情報が見つかれば(ステップ5190でYes)、入出力制御部1300は、見つかった論理ボリューム記憶領域管理情報を選択し、上記のステップ5140以降のステップを実施する。
ステップ5190での検索の結果、空きポインタ12903が「空きなし」でない論理ボリューム記憶領域管理情報が見つからなければ(ステップ5190でNo)、入出力制御部1300は、ホスト計算機200にIO要求7300のエラーを報告し、IO要求7300のデータアクセス処理を終了する。
以上が、ページ割当て処理の流れの一例である。なお、図13の説明において、入出力制御部1300が行う処理を、例えば、入出力処理プログラム1240を実行するプロセッサ1310が行うことができる。そのプロセッサ1310は、仮想ボリュームに関わる処理については、仮想ボリューム処理プログラム1220を実行することで行うことができる。
次に、仮想ボリュームのバックアップ処理を、図14を用いて説明する。
図14は、ストレージシステム300における仮想ボリュームのバックアップ処理のフローチャートである。
ストレージシステム300は、管理計算機100からのIO要求7300によるコピー制御指示(指示内容73002は「ローカルコピー新規開始」)を受信すると、仮想ボリュームのバックアップ処理を開始する。以下、図14の説明において、そのIO要求7300を「コピーIO要求7300」と言い、バックアップ対象の仮想ボリュームを、「当該仮想ボリューム」と言う。
入出力制御部1300は、当該仮想ボリュームの実容量(仮想ボリュームに割り当てられている一以上のページの総記憶容量)がコピー先の論理ボリュームの記憶容量よりも小さいか否かを判定する(ステップ5300)。具体的には、例えば、入出力制御部1300は、当該仮想ボリュームに対応した仮想ボリューム管理情報1270(以下、図14の説明において「当該仮想ボリューム管理情報1270」と言う)で、論理アドレスポインタ12705が「空き」ではない仮想アドレスエントリの個数を数える。次に、入出力制御部1300は、仮想アドレスエントリの個数にページ容量(ページの記憶容量)を積算することで、仮想ボリュームの実容量を算出する。さらに、入出力制御部1300は、コピー先の論理ボリュームの記憶容量(その論理ボリュームに対応した、ボリューム管理情報1250における容量12503から特定される記憶容量)と、仮想ボリュームの実容量とを比較する(ステップ5300)。
ステップ5300の判定の結果、仮想ボリュームの実容量がコピー先の論理ボリュームの記憶容量よりも小さい場合(ステップ5300でYes)、入出力制御部1300は、コピーが不可能であることを示すメッセージを管理計算機100に報告する。
また、ステップ5300の判定の結果、仮想ボリュームの実容量がコピー先の論理ボリュームの記憶容量以上の場合(ステップ5300でNo)、入出力制御部1300は、当該仮想ボリューム管理情報1270の複製を作成して、入出力制御部1300内のメモリ1330に格納する。さらに、入出力制御部1300は、Sポインタ1391、Tポインタ1392及び構成表1393を、入出力制御部1300のメモリ1330に格納する(ステップ5310)。
ここで、Sポインタ1391とは、当該仮想ボリューム管理情報1270におけるアドレスマップ内のいずれかの仮想アドレスエントリを指すポインタである(例えば、Sポインタ1391は、仮想アドレス12704を指すことで、その仮想アドレス12704に対応した仮想アドレスエントリを指す)。当該仮想ボリュームのコピーは、アドレスマップにおける先頭の仮想アドレスエントリに対応した仮想領域からSポインタ1391が表す仮想アドレスエントリに対応した仮想領域まで完了している。Sポインタ1391の初期値は、先頭の仮想アドレスエントリ(仮想アドレス12704)を指す。一方、Tポインタ1392とは、コピー先の論理ボリュームにおける直近のコピー先の実領域のアドレスを表すポインタである。Tポインタ1392の初期値は、コピー先の論理ボリュームの先頭実領域のアドレスを指す。図17及び図18に、それぞれ、Sポインタ1391及びTポインタ1392を示す。
また、構成表1393とは、コピー先論理ボリュームに保存されるデータ要素のコピー元である仮想ボリュームの一覧を管理する情報である。図19に構成表1393の構成例を示す。構成表1393は、仮想ボリュームの個数13936及びTポインタ13937を含む。また、コピー先論理ボリュームに保存されるデータ要素のコピー元である仮想ボリューム毎に、ボリュームID(仮想ボリュームの識別子)13931、OSアドレス(ホスト計算機200が仮想ボリュームに付与したボリューム識別子)13932、仮想ボリュームの容量13933、ユーザ情報(例えば、IO要求7300のオプション73005に含まれている、ユーザに関する情報)13934、及び、バックアップポインタ(コピー先論理ボリュームにおける、当該仮想ボリュームに対応した仮想ボリューム管理情報1270が記憶された実領域のアドレス)13935が含まれる。ステップ5310において、入出力制御部1300は、コピーペア管理情報1210に、エントリを追加する。そのエントリには、論理ボリュームID12101として、コピー元の当該仮想ボリュームを表す識別子が含まれ、コピー状態情報12102として、コピー中を表す情報が含まれ、コピー対象ストレージID12103として、コピー先論理ボリュームを有するストレージシステム300の識別子が含まれ、コピー対象ボリュームID12104として、コピー先論理ボリュームの識別子が含まれ、コピーペアID12105として、上記コピーIO要求7300に含まれているコピーペアIDが含まれ、コピー種別12107として、ローカルコピーを表す情報が含まれている。
次に、入出力制御1300は、Sポインタ1391が指す仮想アドレスエントリを参照する(ステップ5320)。
次に、入出力制御部1300は、参照した仮想アドレスエントリにおける論理アドレスポインタ12705が「空き」か否かを判定する(ステップ5330)。
ステップ5330の判定の結果、論理アドレスポインタ12705が「空き」の場合(ステップ5330でYes)、入出力制御部1300は、Sポインタ1391にページ領域長(ページのサイズ)を加算することで、Sポインタ1391が次の仮想アドレスエントリを指すよう変更し(5390)、再度、ステップ5320の処理を実施する。
一方、5330の判定の結果、論理アドレスポインタ12705が「空き」ではない場合(ステップ5330でNo)、入出力制御部1300は、Sポインタ1391が指す仮想アドレスエントリの更新フラグ12706を参照し、更新フラグ12706が立っているか否かを判定する(ステップ5340)。更新フラグ12706は、バックアップ処理中に、ローカルコピーで仮想ボリュームにおけるデータ要素のコピーが完了する前にそのデータ要素を更新するためアクセスがあった場合に、そのデータ要素(バックアップ対象のデータ要素)を一時退避するために、データ更新回避バッファ1110に更新前のデータ要素を保存する処理を実施したか否かを示す。データ更新回避バッファ1110にコピー前且つ更新前のデータ要素を退避することで、バックアップ開示直後(コピーIO要求7300の受信時)の仮想ボリュームに存在する全てのデータ要素をコピーすることが可能となる。
図20にデータ更新回避バッファの一例を示す。データ更新回避バッファ1110には、退避されるデータ要素毎に、データ要素の退避元のページに対応する仮想領域のアドレス1102と、その仮想領域を有する仮想ボリュームのID11101と、退避されたデータ要素11103とが格納される。
ステップ5340の判定の結果、上記の更新フラグ12706が立っている場合(ステップ5340でYes)、入出力制御部1300は、Sポインタ1391が指す仮想アドレスエントリに対応したデータ要素をデータ更新回避バッファ1110から読み出す。入出力制御部1300は、データ更新回避バッファ1110からデータ要素を読み出した後、更新フラグ12706をリセットする(つまり倒す)(ステップ5400)。
一方、ステップ5340の判定の結果、上記の更新フラグ12706が立っていない場合(ステップ5340でNo)、入出力制御部1300は、Sポインタ1391が指す仮想アドレスエントリから特定されるページからデータ要素を読み出す(ステップ5350)。
次に、入出力制御部1300は、Tポインタ1392が指す、コピー先論理ボリュームにおける実領域に、ステップ5340又は5350で読み出されたデータ要素を書込む(ステップ5360)。
次に、入出力制御部1300は、ステップ5310で作成した当該仮想ボリューム管理情報1270の複製において、Sポインタ1391が指す仮想アドレスエントリにおける論理アドレスポインタ12705を、Tポインタ1392が表す、実領域のアドレスに置換える(ステップ5370)。
次に、入出力制御部1300は、Sポインタ1391及びTポインタ1392に、それぞれ、1ページ領域長分の値(つまり、ページのサイズに相当するアドレス値)を加算することで、Sポインタ1391及びTポインタ1392を更新する(ステップ5380)。
次に、入出力制御部1300は、更新後のSポインタ1391が当該仮想ボリューム管理情報1270における最終の仮想アドレスエントリを表しているか否かを判定する(ステップ5420)。
ステップ5420の判定の結果、Sポインタ1391が最終の仮想アドレスエントリに到達していない場合(ステップ5420でNo)、入出力制御部1300は、ステップ5320の処理を実行する。
一方、ステップ5420の判定の結果、Sポインタ1391が最終の仮想アドレスエントリに到達している場合、入出力制御部1300は、上記の当該仮想ボリューム管理情報1270の複製を、コピー先論理ボリュームのTポインタ1392が指す実領域に書込む(ステップ5430)。
最後に、入出力制御部1300は、構成表1393の仮想ボリュームの個数13936に1を加算し、Tポインタ1392に、当該仮想ボリューム管理情報1270の複製の領域長分(つまりサイズ分)のアドレス値を加算し、更新後のTポインタ1392を構成表1393のTポインタ13937として格納し(ステップ5440)、コピーペア管理情報1210の上記コピー状態情報12102を一時停止中に変更して、処理を終了する。
以上が、仮想ボリュームのバックアップ処理の説明である。なお、図14の説明において、入出力制御部1300が行う処理を、例えば、コピー処理プログラム1230を実行するプロセッサ1310が行うことができる。そのプロセッサ1310は、仮想ボリュームに関わる処理については、仮想ボリューム処理プログラム1220を実行することで行うことができる。
仮想ボリュームのバックアップ処理中に、その仮想ボリュームにおけるデータ要素の更新のためのアクセスが発生する場合、データ更新回避バッファ1110に、更新前のデータ要素が退避される。この処理は、図12で示したデータアクセス処理(ステップ5030)で必要になる。
ここで、図15を用いて、コピー処理中のデータアクセス処理について説明する。
図15は、コピー処理中のデータアクセス処理のフローチャートである。
入出力制御部1300は、Sポインタ1391が表す仮想アドレスと、IO要求7300のあて先73001に含まれるボリュームアドレスとを比較する(ステップ5500)。
ステップ5500の判定の結果、Sポインタ1391が表す仮想アドレスがIO要求7300中のボリュームアドレスより大きい場合(ステップ5500でNo)、入出力制御部1300は、当該データアクセス処理を終了する。なぜなら、ボリュームアドレスが表すアクセス先の仮想領域に割当てられているページ上のデータ要素は、コピー済みであるためである。
一方、ステップ5500の判定の結果、Sポインタ1391が表す仮想アドレスがIO要求7300中のボリュームアドレス以下の場合、入出力制御部1300は、ステップ5510を実行する。なぜなら、ボリュームアドレスが表すアクセス先の仮想領域に割当てられているページ上のデータ要素は、コピー先論理ボリュームに未だコピーされていないためである。
ステップ5510において、入出力制御部1300は、IO要求7300中のボリュームアドレスが表すアクセス先の仮想領域に割当てられているページを、当該仮想ボリューム管理情報1270を参照することで特定し、特定したページに記憶されているデータ要素を読み出し、その仮想領域に対応した仮想アドレスエントリにおける更新フラグ12706を立てる。更に、入出力制御部1300は、IO要求7300におけるボリュームID及びボリュームアドレスと読み出したデータ要素を、データ更新回避バッファ1110に書込む。
以上が、コピー処理中のデータアクセス処理についての説明である。なお、図15の説明において、入出力制御部1300が行う処理を、例えば、入出力処理プログラム1240を実行するプロセッサ1310が行うことができる。そのプロセッサ1310は、仮想ボリュームに関わる処理については、仮想ボリューム処理プログラム1220を実行することで行うことができる。
ストレージシステム300は、仮想ボリュームの実容量分のページにあるデータ要素及びその仮想ボリュームに対応する仮想ボリューム管理情報1270の複製をコピー先論理ボリュームにコピーした後、そのコピー先論理ボリュームに、別の仮想ボリュームの実容量分のページにあるデータ要素及びその別の仮想ボリュームに対応する仮想ボリューム管理情報1270の複製をコピーすることが可能である。以下、その処理を、「追加バックアップ処理」と言う。図16を用いて、追加バックアップ処理を説明する。
図16は、追加バックアップ処理のフローチャートである。
ストレージシステム300は、管理計算機100からのIO要求によるコピー制御指示(指示内容73002は「ローカルコピー追加」)を受信すると、追加バックアップ処理を開始する。
追加バックアップ処理は、図14を参照して説明した仮想ボリュームのバックアップ処理との共通点が多く、そのバックアップ処理との異なるステップは、ステップ5300及び5310のみである。そのため、以下、相違点を主に説明し、共通点については説明を省略或いは簡略する(なお、図16における各ステップには、図14と実質的に同じ処理が行われるステップに付した番号と同じ番号が付されている)。
入出力制御部1300は、追加バックアップ処理でのバックアップ対象の仮想ボリューム(以下、「追加仮想ボリューム」と呼ぶ)の実容量がコピー先の論理ボリュームの空き容量よりも小さいか否かを判定する(ステップ5300)。論理ボリュームの空き容量は、コピー先論理ボリュームに対応した構成表1393におけるTポインタ13937と、コピー先論理ボリュームの記憶容量(コピー先論理ボリュームに対応した、ボリューム管理情報1250の容量12403が表す記憶容量)から計算する。次に、入出力制御部1300は、コピー先の論理ボリュームの空き容量と追加仮想ボリュームの実容量とを比較する(ステップ5600)。
ステップ5600の判定の結果、追加仮想ボリュームの実容量がコピー先論理ボリュームの空き容量以上の場合(ステップ5600でYes)、入出力制御部1300は、追加仮想ボリュームに対応する仮想ボリューム管理情報1270の複製を作成して、入出力制御部1300内のメモリ1330に格納する。さらに、入出力制御部1300は、Sポインタ1391をメモリ1330に格納する。さらに、入出力制御部1300は、入出力制御部1300のメモリ1330に記憶されている作成済みの構成表1393から、Tポインタを読み出す。次に、入出力制御部1300は、コピーペア管理情報1210に、エントリを追加する。追加したエントリに、追加仮想ボリュームのID12101と、コピー先論理ボリュームを有するストレージシステムのID12103と、コピー先論理ボリュームのID12014とを含める。さらに、入出力制御部1300は、IO要求中のコピーペアID12105と、ローカルコピーを表すコピー種別12107と、コピー中を表すコピー状態情報12102とも、上記追加したエントリに含める(ステップ5610)。
ステップ5610より後に行われる処理と、ステップ5600でYESの場合に行われる処理は、図14を参照して説明済みであるため、説明を諸略する。
この第一の実施例において、コピー先論理ボリュームに対して仮想ボリュームのバックアップを完全に終了する場合、そのコピー先論理ボリュームについてバックアップの終了手続きを実施する必要がある。以降、コピー先論理ボリュームについてのバックアップ終了手続きを、コピー先論理ボリュームのクローズ処理と呼ぶことにする。
図21は、コピー先論理ボリュームのクローズ処理のフローチャートである。
ストレージシステム300は、管理計算機100からのIO要求によるコピー制御指示(指示内容73002は「ローカルコピークローズ」)を受信すると、論理ボリュームのクローズ処理を開始する。IO要求では、クローズ処理の対象となるコピー先論理ボリューム(以下、「クローズ対象ボリューム」と言う)が指定されている。
入出力制御部1300は、メモリ1330に記憶されている構成表1393(クローズ対象ボリュームに対応した構成表1393)から、Tポインタ13937を取得する。次に、入出力制御部1300は、その構成表1393を、クローズ対象ボリュームにおける実領域であって、上記取得したTポインタが指すアドレスに対応した実領域に、書込む(ステップ5650)。
次に、入出力制御部1300は、クローズ対象ボリュームにおける、ストレージシステム300でのみ使用可能な領域であるヘッダ領域(言い換えれば、ホスト計算機200から指定されることの無い領域)に、上記取得したTポインタ(言い換えれば、構成表1393の書込み先アドレス)を書込む(ステップ5660)。次に、入出力制御部1300は、コピーペア管理情報1210におけるコピー状態情報12102から該当エントリ(クローズ対象ボリュームのIDを含んだエントリ)を削除し、処理を終了する。
このクローズ処理では、構成表1393の配置場所を表すアドレスが、クローズ対象ボリュームのヘッダ領域に書込まれるが、ヘッダ領域の使用が出来ない場合、ヘッダ領域を使用しない方法が採用される。たとえば、ステップ5650において、Tポインタの指すアドレスを利用せず、特定のアドレス(たとえば、クローズ対象ボリュームの先頭アドレス或いは最終アドレスなど)が使用されれば良い。
クローズ処理が終了した後のクローズ対象ボリュームにおけるデータ配置を図31に示す。図31から分かるように、クローズ対象ボリュームには、仮想ボリュームの実容量分の一以上のデータ要素がシーケンシャルに配置される。シーケンシャルに配置された終端のデータ要素が記憶されている実領域の隣にある記憶領域から、その仮想ボリュームに対応した仮想ボリューム管理情報1270の複製が配置される。そして、追加バックアップ処理が行われた場合には(言い換えれば、本クローズ対象ボリュームに複数の仮想ボリュームがバックアップされた場合には)、その仮想ボリューム管理情報1270の複製がある次の実領域から、別の仮想ボリュームの実容量分の一以上のデータ要素が、上記と同様にシーケンシャルに配置される。一以上の仮想ボリュームについてのデータ要素及び仮想ボリューム管理情報1270の複製の次の記憶領域から、構成表1393が書かれる。なお、構成表1393が占める複数の記憶領域のうちの終端の記憶領域と論理ボリュームにおける終端記憶領域との間に空きの記憶領域が生じても良い。
クローズ処理の終了した論理ボリュームから、任意の仮想ボリュームに記憶されていたデータ要素を取り出し、そのデータ要素をホスト計算機からアクセス可能にする処理がある。これをリストア処理とよぶ。リストア処理は、リストア準備処理とリストア本処理という2つの処理に区別することができる。リストア準備処理は、クローズ対象ボリュームから構成表1393を取り出す処理である。リストア本処理は、取り出された構成表1393を用いて、任意の仮想ボリュームに記憶されていたデータ要素をクローズ対象ボリュームから取り出してそのデータ要素をホスト計算機200からアクセス可能にする処理である。
はじめに、リストア準備処理について説明する。
図22は、ストレージシステム300におけるリストア準備処理のフローチャートである。
ストレージシステム300は、管理計算機100からのIO要求によるコピー制御指示(指示内容73002は「リストア準備」)を受信すると、仮想ボリュームのリストア準備処理を開始する。
入出力制御部1300は、リストア準備を指定したIO要求のオプション73005に格納されているコピー構成情報を基に、論理ボリュームの識別子を特定する(ステップ5700)。
入出力制御部1300は、特定された識別子に対応する論理ボリューム(以下、「リストア元論理ボリューム」のヘッダ領域に格納されたTポインタを取得する。次に、入出力制御部1300は、そのTポインタから特定される場所(リストア元論理ボリュームにおける記憶領域)から、構成表1393を取得する(ステップ5710)。
入出力制御部1300は、得られた構成表5710を、入出力制御部1300のメモリ1330に格納する(5720)。
以上のリストア準備処理により、ストレージシステム300は、リストア元論理ボリュームから構成表1393を取得できる。なお、図22の説明において、入出力制御部1300が行う処理を、例えば、入出力処理プログラム1240を実行するプロセッサ1310が行うことができる。
次に、リストア本処理について説明する。本実施例では、高速リストア本処理と通常リストア本処理という二種類のリストア本処理がある。高速リストア本処理とは、仮想ボリューム管理情報1270の複製のみをリストア元論理ボリュームから取り出す処理である。通常リストア本処理とは、仮想ボリューム管理情報1270の複製のみならずデータ要素もリストア元論理ボリュームから取り出す処理である。高速リストア本処理は、高速に処理が完了するが、リストア先となる仮想ボリュームへのデータ要素の更新が出来ない。一方、通常リストア本処理は、リストア先仮想ボリュームへのデータ要素の更新が可能であるが、高速リストア本処理よりも処理に長い時間が必要である。
図23は、ストレージシステム300における高速リストア本処理のフローチャートである。
ストレージシステム300は、管理計算機100からのIO要求によるコピー制御指示(指示内容73002は「高速リストア」)を受信すると、仮想ボリュームの高速リストア本処理を開始する。
入出力制御部1300は、IO要求のオプション73005に含まれる、リストア先仮想ボリュームの識別子を取得し、その識別子と合致するボリュームID13931(入出力制御部1300のメモリ1330に格納されている構成表1383におけるボリュームID13931)に対応したバックアップポインタ13935を取得する(ステップ5750)。
次に、入出力制御部1300は、取得したバックアップポインタ13935が指す記憶領域(リストア元論理ボリュームにおける記憶領域)に格納されている仮想ボリューム管理情報1270の複製をリストア元論理ボリュームから取得し、共有メモリ1200に、取得した仮想ボリューム管理情報1270の複製を格納する(ステップ5760)。
次に、入出力制御部1300は、その仮想ボリューム管理情報1270の複製を基に、リストア先仮想ボリュームを利用可能にする(ステップ5770)。具体的には、例えば、入出力制御部1300は、リストア先仮想ボリュームの識別子と合致するボリュームID12501(ボリューム管理情報1250における論理ボリュームID12501)に対応した仮想フラグ12506を有効にし、そのID12501に対応するボリューム状態12502を、「未実装」から「正常」に更新する。
次に、入出力制御部1300は、リストア先仮想ボリュームをオンラインにする(ステップ5780)。具体的には、例えば、入出力制御部1300は、ホスト計算機200とリストア先仮想ボリュームとを結ぶ論理的なパスを設定する。論理的なパスを設定すると、ホスト計算機200からリストア先仮想ボリュームへのアクセスが可能になる。たとえば、ホスト計算機からのSCSIの状態取得要求や、チャネルステータス要求などで、ストレージシステム300は、該当仮想ボリュームが存在すると応答を返す。結果として、ホスト計算機200は、そのストレージシステム300に論理ボリュームが存在すると認識し、データアクセス可能なボリューム一覧(例えばホスト計算機200のOSで管理されるボリューム一覧情報)に、その認識した論理ボリュームに関する情報(例えば識別子)を登録する。
以上が、高速リストア本処理の流れの一例である。なお、図23の説明において、入出力制御部1300が行う処理を、例えば、入出力処理プログラム1240を実行するプロセッサ1310が行うことができる。
入出力制御部1300は、高速リストア本処理によってアクセス可能になった仮想ボリューム(以下、高速リストア仮想ボリューム)について、ホスト計算機200からのリード要求を受け付けるが、ホスト計算機200からのライト要求を受け付けない。具体的には、例えば、入出力制御部1300は、高速リストア仮想ボリュームを指定したリード要求を受けた場合、そのリード要求で指定されている仮想領域に対応した記憶領域を、高速リストア仮想ボリュームに対応した仮想ボリューム管理情報1270の複製(共有メモリ1200に記憶されている情報)におけるアドレスマップから特定し、特定した記憶領域(リストア元論理ボリュームにおける記憶領域)からデータ要素を読み出してホスト計算機200に送信する。一方、例えば、入出力制御部1300は、高速リストア仮想ボリュームを指定したライト要求を受けた場合、エラーをホスト計算機200に返す。
図24は、ストレージシステム300における通常リストア本処理のフローチャートである。
ストレージシステム300は、管理計算機100からのIO要求によるコピー制御指示(指示内容73002は「通常リストア」)を受信すると、仮想ボリュームの通常リストア本処理を開始する。
入出力制御部1300は、IO要求のオプション73005に含まれる、リストア先仮想ボリュームの識別子を取得し、その識別子と合致するボリュームID13931(入出力制御部1300のメモリ1330に格納されている構成表1383におけるボリュームID13931)に対応したバックアップポインタ13935を取得する(ステップ5800)。
次に、入出力制御部1300は、取得したバックアップポインタ13935が指す記憶領域(リストア元論理ボリュームにおける記憶領域)に格納されている仮想ボリューム管理情報1270の複製をリストア元論理ボリュームから取得し、入出力制御部1300のメモリ1330に、取得した仮想ボリューム管理情報1270の複製を格納する(ステップ5810)。
次に、入出力制御部1300は、リストア先仮想ボリュームに対応したプールの残り空き容量(一以上の未割当てのページの総記憶容量)が、リストア先仮想ボリュームに求められる実容量よりも小さいか否かを判定する(ステップ5820)。具体的には、例えば、入出力制御部1300は、そのプールのプールIDを有するプール管理情報1290において、「空き」を表す割り当てフラグ12905の個数を数える。次に、入出力制御部1300は、その個数にページ容量(ページの記憶容量)を積算し、プールの空き容量を特定する。さらに、入出力制御部1300は、図14のフローで説明した仮想ボリュームの実用量の計算方法を用いて、リストア先仮想ボリュームに求められる実容量を特定し、空き容量と実容量とを比較する。
ステップ5820の判定の結果、プールの残り空き容量が仮想ボリュームの実容量よりも小さい場合(ステップ5820Yes)、入出力制御部1300は、コピーが不可能であることを示すメッセージを管理計算機100に報告する。
ステップ5820の判定の結果、プールの残り空き容量が仮想ボリュームの実容量以上の場合(ステップ5820でNo)、入出力制御部1300は、Sポインタ1391を、入出力制御部1300のメモリ1330に格納する(ステップ5310)。ここでのSポインタ1391は、リストア先仮想ボリュームに対応した仮想ボリューム管理情報1270の複製における先頭の仮想アドレスエントリを指している。入出力制御部1300は、コピーペア管理情報1210に、エントリを追加し、そのエントリに、リストア元の論理ボリュームのID12101と、リストア先仮想ボリュームを有するストレージシステムの識別子12103と、リストア先仮想ボリュームの識別子12014と、そのストレージシステムにおいて現時点使用中でない空きのコピーペアID12105と、ローカルコピーを表すコピー種別12107と、コピー中を表すコピー状態情報12102とを含める(ステップ5830)。
次に、入出力制御1300は、Sポインタ1391が指す仮想アドレスエントリ(メモリ1330に記憶されている仮想ボリューム管理情報1270の複製における仮想アドレスエントリ)を参照する(ステップ5840)。
次に、入出力制御部1300は、参照した仮想アドレスエントリの論理アドレスポインタ12705が「空き」か否かを判定する(ステップ5850)。
ステップ5850の判定の結果、論理アドレスポインタ12705が「空き」の場合(ステップ5850でYes)、入出力制御部1300は、Sポインタ1391にページ領域長を加算することで、Sポインタ1391を、次の仮想アドレスエントリを指すよう変更し(ステップ5890)、再度、ステップ5840の処理を実施する。
一方、ステップ5850の判定の結果、論理アドレスポインタ12705が「空き」ではない場合(ステップ5850でNo)、入出力制御部1300は、その論理アドレスポインタ12705が指す記憶領域(リストア元論理ボリュームにおける記憶領域)から、データ要素を読み出す(ステップ5860)。
次に、入出力制御部1300は、Sポインタ1391が指す仮想アドレスに対応した仮想領域にデータIO要求があったものとして、その仮想領域に、リストア先仮想ボリュームに対応したプールにある未割当てのページを割当て、読み出したデータ要素を、その割当てたページに書込む(ステップ5070)。なお、この処理の詳細は、図13を参照して説明した通りである。
次に、入出力制御部1300は、上記Sポインタ1391が指す仮想アドレスエントリにおける論理アドレスポインタ12705を、上記のステップ5070の処理で割り当てたページのアドレスを含んだ情報に置換える(ステップ5870)。
次に、入出力制御部1300は、Sポインタ1391に1ページ領域長分のアドレス値を加算することで、Sポインタ1391を更新する(ステップ5880)。
次に、入出力制御部1300は、更新後のSポインタ1391が、仮想ボリューム管理情報1270の複製における最終の仮想アドレスエントリを指しているか否かを判定する(ステップ5910)。
ステップ5910の判定の結果、Sポインタ1391が最終の仮想アドレスエントリに到達していない場合(ステップ5910でNo)、入出力制御部1300は、ステップ5840の処理を行う。
一方、ステップ5910の判定の結果、Sポインタ1391が最終の仮想アドレスエントリに到達している場合(ステップ5910でYes)、入出力制御部1300は、上記の仮想ボリューム管理情報1270の複製を、メモリ1330から共有メモリ1200に移す(ステップ5930)。
入出力制御部1300は、共有メモリ1200に格納した仮想ボリューム管理情報1270の複製を基に、リストア先仮想ボリュームを利用可能にする(ステップ5940)。
最後に、入出力制御部1300は、リストア先仮想ボリュームをオンラインにし(ステップ5950)、通常リストア本処理を終了する。
以上が、通常リストア本処理の流れの一例である。なお、図24の説明において、入出力制御部1300が行う処理を、例えば、コピー処理プログラム1230を実行するプロセッサ1310が行うことができる。そのプロセッサ1310は、仮想ボリュームに関わる処理については、仮想ボリューム処理プログラム1220を実行することで行うことができる。
次に、管理計算機100が行うバックアップ指示手順及びリストア指示手順を説明する。
図25Aは、管理計算機100が行うバックアップ指示手順の流れを示す。
管理計算機100は、ストレージシステム300の情報を取得する(6000)。具体的には、例えば、管理計算機100のプロセッサ(以下、便宜上「管理プロセッサ」と呼ぶ)120が、ストレージ情報テーブル114を作成し、次に、管理プロセッサ120が認識している論理ボリュームを指定し且つ指示内容73002に状態取得を指定したIO要求7300を、ストレージシステム300に発行する。そのIO要求7300の結果には、ストレージシステムID、ボリュームID、仮想ボリューム有無が含まれる。管理プロセッサ120は、上記IO要求7300の結果を、ストレージ情報テーブル114に登録する。管理プロセッサ120は、上記のようなIO要求の発行を、管理プロセッサ120が認識している(もしくはユーザが指定した)全ての論理ボリュームについて実施し、各IO要求の結果を、ストレージ情報テーブル114に登録する。
次に、管理プロセッサ120は、バックアップ構成を定義するため、コピー情報テーブル113を作成する(ステップ6010)。管理プロセッサ120は、ステップ6000で得られたストレージ情報テーブル114を基に、コピー元及びコピー先のストレージシステムのそれぞれの識別子を、正ストレージID1133及び副ストレージID1135として登録する。ただし、第一の実施例では、ローカルコピーが行われるため、正ストレージID1133及び副ストレージID1135は同一のIDである。さらに、管理プロセッサ120は、コピー元及びコピー先のそれぞれのボリュームのIDを、正ボリュームID1134及び副ボリュームID1136として登録する。ここで、第一の実施例では、バックアップにおいては、コピー元は仮想ボリュームである必要があるため、正ボリュームID1134としては、ストレージ情報テーブル114において仮想フラグ1143が立っている(仮想ボリュームであることを示す)ボリュームID1142が登録される。一方、副ボリュームID1136としては、ストレージ情報テーブル114において仮想フラグ1143が立っていないボリュームID1142が登録される。さらに、管理プロセッサ120は、コピー情報テーブル1131に、ローカルコピーを表す情報を含んだコピー情報1131と、ストレージシステムで未使用のグループIDを表したグループID1132とを含める。
次に、バックアップを開始するため、管理プロセッサ120は、上記コピー情報テーブル113を基に、ストレージシステム300に、コピー制御指示を含んだIO要求7300を発行する(ステップ6020)。具体的には、管理プロセッサ120は、IO要求7300におけるあて先73001に、コピー情報テーブル113における正ストレージID1133と正ボリュームID1134とを含め、指示内容73002に、ローカルコピー新規開始、コピー元ボリュームID(正ボリュームID1134)、コピー先ボリュームID(副ボリュームID1136)を含める。また、グループID73004としては、コピー情報テーブル113におけるグループID1132が指定される。また、必要に応じ、コピー対象の仮想ボリュームの付加情報としてOSが管理するボリューム情報(たとえばドライブ名や、ボリュームシリアル番号など)および、バックアップ開始時刻などが、オプション73005に含まれる。次に、管理プロセッサ120は、ストレージシステム300に、作成したIO要求7300を発行する。
ここで、管理プロセッサ120は、ホスト計算機200で動作するAP211によっては、当該プログラムを一時停止する必要がある。その場合、管理プロセッサ120は、バックアップ開始のためのIO要求7300をストレージシステム300に発行する前に、ホスト計算機200上のIO静止化プログラム214に指示を出し、上記AP211を一時停止させる。管理プロセッサ120からホスト計算機200への指示は、エージェントプログラム213を介して行われる。ホスト計算機200上のエージェントプログラム213が、管理プロセッサ120からの指示に応答して、IO静止化プログラム214に対し、AP211の静止化のための指示を出す。また、管理プロセッサ120は、オフラインボリューム管理テーブル111に、上記の仮想ボリュームのバックアップの情報(バックアップした仮想ボリューム、バックアップ先ボリューム、バックアップ時刻、バックアップデータの説明情報など)を保存する。
ストレージシステム300では、上記IO要求を受信すると、仮想ボリュームのバックアップ処理が開始される。同一仮想ボリュームで別世代(異なる時点の仮想ボリュームにおけるデータ要素群)、もしくは異なる仮想ボリュームのバックアップが必要な場合は、管理プロセッサ120は、その都度、上述した手続きを実施する。ただし、或る仮想ボリュームのバックアップ先となっている論理ボリュームをバックアップ先とする場合には、管理プロセッサ1200は、コピー開始のためのIO要求7300に、ローカルコピー新規開始ではなく、ローカルコピー追加を指定する。
管理プロセッサ120は、バックアップが終了した後(バックアップが終了したかどうかの判定は、管理プロセッサ120がバックアップ元の仮想ボリューム及び状態取得を指定したIO要求を発行し、その結果が一時停止中であるかどうかにより行うことが可能)、ユーザからクローズ実行を受けた場合には、クローズ処理を実施する(ステップ6030)。管理プロセッサ120は、ストレージシステム300に、クローズを指定したIO要求を発行する。
図25Bは、管理計算機100が行うリストア指示手順の流れを示す。
管理プロセッサ120は、クローズ処理が済んでいる論理ボリュームから仮想ボリュームをリストアするために、リストア準備処理のための指示をストレージシステム300に送信する(ステップ6040)。具体的には、管理プロセッサ120は、ストレージシステム300に、リストア準備を指定したIO要求を発行する。そのIO要求では、正ボリュームIDとしてリストア元論理ボリュームのIDが指定され、副ボリュームIDは指定されない。リストア準備処理の結果、管理プロセッサ120は、例えばそのリストア準備処理で取得された構成表1393をストレージシステム300から取得することで、ストレージシステム300のリストア元論理ボリュームにバックアップされている仮想ボリュームに関する情報の一覧(以下、仮想ボリューム一覧)を作成することが可能になる。仮想ボリューム一覧は、状態取得を指定したIO要求を管理プロセッサ120がストレージシステム300に発行することで取得できる。仮想ボリューム一覧には、仮想ボリュームのIDの他、ステップ6020で作成されたIO要求のオプション73005におけるバックアップ対象仮想ボリュームのOS管理情報や、バックアップアップ時刻などが含まれてもよい。この仮想ボリューム一覧を利用することで、たとえオフラインボリューム管理テーブル111が消去されてしまったとしても、管理プロセッサ120は、バックアップしたボリュームのリストアが可能となる。
次に、管理プロセッサ120は、リストア準備処理の済んだリストア元論理ボリュームについてリストア本処理の指示をストレージシステム300に送信する(ステップ6050)。具体的には、管理プロセッサ120は、ストレージシステム300に、リストア本処理を指定したIO要求を発行する。このIO要求では、例えば、正ボリュームIDとしてリストア元論理ボリュームのIDが指定され、副ボリュームIDとして、リストア先の論理ボリューム(仮想ボリューム)のIDが指定される。本実施例において、バックアップした仮想ボリュームをリストアする場合、その時点では、リストア先の論理ボリューム(言い換えればリストア本処理における副ボリューム)として、ホスト計算機200が使用していない仮想ボリュームを指定する必要があり、故に、ストレージシステム300がホスト計算機200に公開していない論理ボリュームを指定する必要がある。また、リストア本処理を指定したIO要求では、例えばホスト計算機200に関する情報(例えば、用途、仕様或いは種類など)に応じて、高速リストア本処理と通常リストア本処理のいずれかが指定される。
以上が、第一の実施例についての説明である。この第一の実施例によれば、仮想ボリュームのバックアップにおいては、コピー先の論理ボリュームに、仮想ボリュームに割り当てられている一以上のページに記憶されている一以上のデータ要素がコピーされ、仮想ボリュームにおいてページの割り当てられていない仮想領域についてはコピーが発生しない。これにより、コピー先の論理ボリュームにおける記憶領域を無駄に消費してしまうことを防ぐことができる。
また、第一の実施例によれば、仮想ボリュームに記憶された一以上のデータ要素が、コピー先の論理ボリュームにおいてシーケンシャルに(言い換えれば詰めて)配置される。これにより、コピー先の論理ボリュームにおいて空きの記憶領域を散在させないようにすることができる。また、これにより、一つの論理ボリュームに複数の仮想ボリュームのバックアップを取得することが可能となる。なお、一つの論理ボリュームに複数の仮想ボリュームのバックアップを取得した場合、仮想ボリューム毎に仮想ボリューム管理情報1270の複製の存在場所を表す構成表1393もコピー先論理ボリュームに格納されるため、コピー先論理ボリュームから任意の仮想ボリュームのみをリストアすることが可能となる。
また、第一の実施例によれば、仮想領域とページとの対応関係を表す仮想ボリューム管理情報1270の複製もコピー先論理ボリュームに書き込まれ、バックアップの際、その仮想ボリューム管理情報1270の複製において、仮想領域に対応したページのアドレスが、そのページに記憶されているデータ要素のコピー先の記憶領域のアドレスに変更される。これにより、仮想ボリュームのリストアが可能である。具体的には、リストアの場合には、その仮想ボリューム管理情報1270の複製から、どのバックアップ元の仮想領域に記憶されていたデータ要素が、リストア元論理ボリューム(バックアップの際のコピー先論理ボリューム)におけるどの記憶領域に記憶されているかが特定され、特定された記憶領域に記憶されているデータ要素が、バックアップ元の仮想領域(具体的には、その仮想領域にリストアの際に割り当てられたページ)に書き込まれる。
なお、コピー先の論理ボリュームは、実ボリュームであっても良いし、仮想ボリュームであっても良い。仮想ボリュームとしては、Thin Provisioning技術に従う論理ボリュームでも良いが、記憶領域が無駄に消費されることを防ぐというメリットを享受するためには、仮想ボリュームにおけるどの仮想領域がアクセス先となるとどの実領域にアクセスされることになるかが一義的に定まるタイプの仮想ボリュームが採用されることが好ましい。そのタイプの仮想ボリュームとしては、例えば、ストレージ仮想化技術に従う仮想ボリューム、具体的には、例えば、図32Aに例示するように、外部のストレージシステムに存在する実ボリュームが対応付けられている仮想ボリュームとすることができる。その仮想ボリュームは、例えば、ストレージ仮想化装置(スイッチでもストレージシステムでも良い)が提供できる。また、コピー先の論理ボリュームとしては、図32Bに例示するように、上記のようなストレージ仮想化技術に従う仮想ボリュームの集合体が採用されても良い。この場合、仮想ボリュームの集合体(一論理ボリューム)を構成する各仮想ボリュームに対応した各外部ボリューム(実ボリューム)は、一又は複数の外部ストレージしシステムに存在する。