JP5275691B2 - ストレージシステム - Google Patents

ストレージシステム Download PDF

Info

Publication number
JP5275691B2
JP5275691B2 JP2008151288A JP2008151288A JP5275691B2 JP 5275691 B2 JP5275691 B2 JP 5275691B2 JP 2008151288 A JP2008151288 A JP 2008151288A JP 2008151288 A JP2008151288 A JP 2008151288A JP 5275691 B2 JP5275691 B2 JP 5275691B2
Authority
JP
Japan
Prior art keywords
data
generation
size
block
logical volume
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008151288A
Other languages
English (en)
Other versions
JP2009123187A (ja
Inventor
山本  彰
賢哲 江口
康友 山本
学 北村
愛 里山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2008151288A priority Critical patent/JP5275691B2/ja
Priority to US12/190,925 priority patent/US8285953B2/en
Priority to US12/275,289 priority patent/US20090125692A1/en
Publication of JP2009123187A publication Critical patent/JP2009123187A/ja
Priority to US13/606,280 priority patent/US8607012B2/en
Application granted granted Critical
Publication of JP5275691B2 publication Critical patent/JP5275691B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、データのバックアップに関する。
例えば、ストレージシステムが有する機能として、スナップショット機能やジャーナル機能が知られている。
スナップショット機能とは、或る時点(例えばホストからスナップショット取得要求を受けた時点)の或る論理ボリュームのイメージを保持する機能である。定期的にスナップショット機能を実行することにより、論理ボリューム内のデータのレプリケーション(バックアップ)を間欠的に取得しておくことが可能となる。また、スナップショット機能を用いた場合、スナップショット取得時点の論理ボリュームをリストアすることが可能である。
ジャーナル機能とは、ホスト計算機からのライトコマンドで指定されている論理ボリュームにライトデータを書き込む場合に、そのライトデータ及びその書込みに関する制御情報を含んだデータ(ジャーナル)を作成し、作成したジャーナルを保存する機能である。
特許文献1には、スナップショット機能によって取得したスナップショットに、ジャーナル内のライトデータを書き込むことによって、スナップショットを作成したポイント以外のポイントにおいて実行されるリカバリ処理について開示されている。
特許文献2には、スナップショットとジャーナルの切り替えについての開示がある。
特許文献3には、スナップショットのリストアボリュームの運用についての開示がある。
特開2005−18738号公報 特開2007−80131号公報 特開2007−133471号公報
ところで、一般に、バックアップとして取得されるデータ要素(データの一単位)のサイズは、ストレージシステムで管理されている単位記憶領域のサイズである。
しかし、ホストからのライトデータ要素(ライトデータの一単位)のサイズは、ストレージシステムで管理されている単位記憶領域のサイズよりも小さいことがある(或いは、ライトデータ要素が単位記憶領域より大きくても、ライトデータ要素のサイズが単位記憶領域のサイズの倍数になっていないことがある)。この場合、単位記憶領域にライトデータ要素が格納された場合に、単位記憶領域に余りの領域が生じることになる。それ故、バックアップとして取得されるデータ要素は、ホストからのライトデータ要素とその他の情報とを含んだ、そのライトデータ要素よりも大サイズとなる。従って、ストレージシステムには、ホストからのライトデータ要素以外の情報もバックアップデータ要素として保存されてしまうおそれがある。
そこで、本発明の一つの目的は、バックアップとして取得されるデータのサイズを削減することにある。
ストレージシステムが、第一の論理ボリュームを含んだ一以上の論理ボリュームとジャーナルエリアとの基になる物理記憶デバイスと、前記上位装置から前記ライトコマンド及び前記ライトデータ要素を受け付け、前記ライトコマンドから特定される前記第一の論理ボリュームに前記ライトデータ要素を書き込むコントローラとを備える。前記ジャーナルエリアは、論理ボリュームを構成する複数の記憶領域のうちのいずれかの記憶領域に記憶されているデータ要素又はその記憶領域に書き込まれるデータ要素であるジャーナルデータ要素が記憶される記憶領域である。前記コントローラが、前記上位装置から受信するライトデータ要素のサイズであるライト単位サイズを受け付けるサイズ受付部と、前記一以上の論理ボリュームについて、前記受け付けたライト単位サイズを、前記メモリに設定するサイズ設定部とを有する。前記設定されたライト単位サイズに基づく、前記ジャーナルエリアに格納されるジャーナルデータ要素のサイズが、前記ライト単位サイズである。
以下、図面を参照して、本発明の幾つかの実施形態を説明する。
図1は、本発明の第一の実施形態に係る計算機システムの構成を示す。
第一のネットワーク121に、一以上のホスト計算機101及び第一のストレージシステム125が接続されている。第二のネットワーク123に、第一及び第二のストレージシステム125及び161が接続されている。第三のネットワーク108に、一以上のホスト計算機101、管理サーバ111、第一及び第二のストレージシステム125及び161が接続されている。ネットワーク121、123及び108は、それぞれ、任意の種類のネットワークを採用することができる。例えば、第一及び第二のネットワーク121及び123は、SAN(Storage Area Network)であって、第三のネットワーク108は、LAN(Local Area Network)である。また、例えば、ストレージシステム125及び161同士は、第二のネットワーク123に代えて専用線で接続されても良い。また、第二ストレージシステム161は、外部接続先のストレージシステムであっても良いし、リモートコピー先のストレージシステムであっても良い。
ホスト計算機101は、第一のストレージシステム125から提供される論理ボリュームにアクセスする計算機である。ホスト計算機101は、CPU(Central Processing Unit)103、メモリ106、補助記憶デバイス104、入力装置(例えばキーボード及びポインティングデバイス)102、出力装置(例えば表示装置)105、第一のネットワーク121に接続されるストレージアダプタ(例えばホストバスアダプタ)109、及び、第三のネットワーク108に接続されるネットワークアダプタ107を備えている。CPU103は、ストレージアダプタ109を介して、アドレスを指定したI/Oコマンド(ライトコマンド又はリードコマンド)を送信する。
管理サーバ111は、第三のネットワーク108に接続されている機器101、111、125及び161を管理する計算機である。管理サーバ111は、CPU(Central Processing Unit)113、メモリ116、補助記憶デバイス114、入力装置(例えばキーボード及びポインティングデバイス)112、出力装置(例えば表示装置)115、及び、第三のネットワーク108に接続されるネットワークアダプタ117を備えている。CPU113は、ネットワークアダプタ117を介して、コマンドを、第三のネットワーク108に接続されている機器101、111、125又は161に送信する。
第一ストレージシステム125は、コントローラと記憶デバイス群とを有する。コントローラは、例えば、複数のフロントエンドインタフェース127と、複数のバックエンドインタフェース137と、第一の内部ネットワーク156と、一以上のキャッシュメモリ147と、一以上の制御メモリ145と、一以上のプロセッサ143とを備える。記憶デバイス群は、複数の物理記憶デバイス(以下、「PDEV」と言う)151で構成されている。
フロントエンドインタフェース127は、第一ストレージシステム125の外部の機器101又は161と通信するためのインタフェース回路である。従って、フロントエンドインタフェース127としては、第一のネットワーク121に接続されるインタフェースと、第二のネットワーク123に接続されるインタフェースがある。フロントエンドインタフェース127は、例えば、ネットワーク121又は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が接続されている。
第一の内部ネットワーク156は、例えば、スイッチ(一例としてクロスバスイッチ)或いはバスで構成される。第一の内部ネットワーク156に、複数のフロントエンドインタフェース127、複数のバックエンドインタフェース137、一以上のキャッシュメモリ147、一以上の制御メモリ145及び一以上のプロセッサ143が接続されている。これらの要素間の通信は、第一の内部ネットワーク156を介して行われる。
キャッシュメモリ147は、ホスト計算機101からのI/Oコマンドに従って読み出される又は書き込まれるデータを一時記憶するメモリである。
制御メモリ145は、種々のコンピュータプログラム及び/又は情報(例えば図4に示すコンピュータプログラム及び情報)を記憶するメモリである。例えば、制御メモリ145には、どのP−VOL(プライマリの論理ボリューム)がどのホスト計算機からアクセスされるVOLであるかを表す情報や、どのP−VOLがどのS−VOL(セカンダリの論理ボリューム)とペアを構成するかを表す情報や、どのP−VOLがどのR−VOL(リストアされた論理ボリューム)に関連するかを表す情報が記憶されている。これらの情報から、どのS−VOL及びR−VOLがどのホスト計算機に関わる論理ボリュームであるかを特定することが可能である。後述するように、或るホスト計算機についてのホストライトサイズを第一のストレージシステム125が受領した場合、制御プロセッサ143は、その或るホスト計算機に関わるP−VOL、S−VOL及びR−VOLを、制御メモリ145に記憶されている情報を参照することで特定し、特定されたP−VOL、S−VOL及びR−VOLについて、ホストライトサイズを設定することができる。
プロセッサ143は、制御メモリ145に記憶されている種々のコンピュータプログラムを実行することで、後述する処理を行う。
PDEV151は、不揮発性の記憶デバイスであり、例えば、ハードディスクドライブ或いはフラッシュメモリデバイスである。二以上のPDEV151で、RAIDの規則に従うPDEVグループであるRAID(Redundant Array of Independent Disks)グループが構成される。
コントローラの各構成要素127、137、147、145及び143に、第二の内部ネットワーク(例えばLAN)155が接続されており、その第二の内部ネットワーク155に、保守管理端末153が接続されている。保守管理端末153は、第三のネットワーク108にも接続されており、第一のストレージシステム125を保守又は管理する計算機である。第一のストレージシステム125の保守員は、例えば、保守管理端末153(又は、その端末153と通信可能な管理サーバ111)を操作して、制御メモリ145に記憶される種々の情報を定義することができる。
第二のストレージシステム161は、コントローラ165とPDEV163群とを有する。コントローラ165は、例えば、ホストアダプタ164と、ネットワークアダプタ162と、制御メモリ171と、キャッシュメモリ172と、プロセッサ167と、ストレージアダプタ169とを有する。ホストアダプタ164、ネットワークアダプタ162、制御メモリ171、キャッシュメモリ172、プロセッサ167及びストレージアダプタ169の機能は、それぞれ、フロントエンドインタフェース127、ネットワークアダプタ162、制御メモリ145、キャッシュメモリ147、プロセッサ167及びバックエンドインタフェース137の機能とそれぞれ実質的に同じである。
図2は、第一のストレージシステム125における記憶領域構成の概要を示す。
論理的な記憶階層として、下位から上位にかけて順に、VDEV層185、ストレージプール189A及び189B、及びLDEV層183がある。
VDEV層185には、一以上の仮想的なデバイス(VDEV)がある。VDEVは、所定のアドレス範囲が設定された記憶空間である。その記憶空間を構成する複数の記憶空間部分が、それぞれ、論理ボリュームである。
図2の例では、第一のVDEV193Aは、一つのRAIDグループ195が提供する実体的な記憶空間である。第一VDEV193Aは、例えば、第一実VOL187A、プールVOL191A及び191Bの基になっている。従って、これらの論理ボリューム187A、191A及び191Bに書き込まれるデータは、実際には、第一VDEV193Aの基になっているRAIDグループ195に書き込まれる。
一方、第二のVDEV193Bは、仮想的な記憶空間である。第二のVDEV193Bは、第二実VOL187C、プールVOL191C及び191Dの基になっている。従って、これらの論理ボリューム187C、191C及び191Dに書き込まれるデータは、実際には、第二VDEV193Bの基になっている、第二ストレージシステム161内の記憶資源(例えばRAIDグループ)に書き込まれる。具体的には、例えば、第二実VOL187Cに対応した記憶空間部分が、第二ストレージシステム161内のターゲットデバイス181Dに割り当てられており、この場合、仮想VOL187Cに書き込まれるデータは、実際には、第二のストレージシステム161に転送され、ターゲットデバイス181Dに割り当てられている論理ボリュームに書き込まれる。
ストレージプールは、一以上のプールVOLの集合である。図2の例では、第一ストレージプール189Aは、プールVOL191A及び191Cの集合であり、第二ストレージプール189Bは、プールVOL191B及び191Dの集合である。プールVOL191A〜191Dは、ターゲットデバイス181A〜181Cに関連付けられない論理ボリューム(すなわちホスト計算機101に提供されない論理ボリューム)である。なお、第一ストレージシステム125内の全てのプールVOLが、第一ストレージシステム125内のRAIDグループに基づくVDEVを基に形成されていても良いし、反対に、第二ストレージシステム161内の記憶資源に基づくVDEVを基に形成されていても良い。
LDEV層183には、複数の論理ボリューム187A〜187Cと、JNL関連エリア188とがある(“JNL”はジャーナルの略語である)。論理ボリューム187A〜187Cは、いずれも、プールVOLと違って、ホスト計算機101に認識され得る論理ボリュームである。図2の例によれば、論理ボリューム187Aは、実体的な記憶領域が第一ストレージシステム125内にある論理ボリューム(以下、「第一実VOL」と言う)である。論理ボリューム187Bは、ストレージプール189Bに関連付けられている仮想的な論理ボリューム(以下、「仮想VOL」と言う)である。例えば、仮想VOL187Bは、複数の仮想領域で構成されており、ストレージプール189Bが、複数のプール領域で構成されている。仮想VOL187B内の仮想領域にデータが書き込まれることに起因して、その仮想領域にプール領域がストレージプール189Bから割り当てられ、書込み対象のデータが、そのプール領域に書き込まれる。そのプール領域がプールVOL191Bに属していれば、データは第一ストレージシステム125内に保存され、そのプール領域がプールVOL191Dに属していれば、そのデータは第二ストレージシステム161内に保存される。
JNL関連エリア188は、ホスト計算機101に非提供の記憶領域である。このエリア188は、例えば、第一ストレージプール189内に存在する。このエリア188は、後述のJNCBエリアとJNLエリアで構成されている。「JNCB」とは、後述の第二のJNL管理テーブルを意味する文字列である。
ターゲットデバイス181A〜181Cは、ホスト計算機101から見える論理的なデバイスであり、具体的には、例えば、オープンシステムでは“LUN”(Logical Unit Number)であり、メインフレームシステムでは“デバイス”である。ターゲットデバイス181A〜181Cは、ポート129と、LDEV層181における論理ボリューム187A〜187Cとに関連付けられている。図2の例によれば、I/Oコマンドにおいて、ターゲットデバイス181Aが指定されていると、そのデバイス181Aに関連付けられている第一実VOL187AにI/O(ライト又はリード)が発生し、ターゲットデバイス181Bが指定されていると、そのデバイス181Bに関連付けられている仮想VOL187BにI/Oが発生し、ターゲットデバイス181Cが指定されていると、そのデバイス181Cに関連付けられている第二実VOL187CにI/Oが発生する。
図3は、JNLデータ要素の格納の概要を示す。なお、図3では、ライトという言葉を「WR」と略記しており、他の図でも、ライトという言葉をそのように略記することがある。
第一ストレージシステム125に、P−VOL187A及びS−VOL187Sがある。また、R−VOL187Rの構築が可能であるP−VOL187P及びS−VOL187Sは、例えば、前述した第一又は第二実VOL187A又は187Cであり、R−VOL187Rは、前述した仮想VOL187Bである。
P−VOL187Pは、プライマリの論理ボリューム(オンラインの論理ボリューム)である。ホスト計算機101Aからライトデータが書き込まれることで、P−VOL187Pは更新される。
S−VOL187Sは、P−VOL187Pとペアにされたセカンダリの論理ボリュームであり、P−VOL187Pと同じ記憶容量を有する。
R−VOL187Rは、指定された世代のP−VOL187Pの内容を有する論理ボリュームである。R−VOL187Rは、前述したように仮想ボリュームであり、後に説明するように、ユーザ或いは管理者からの要求に応答して作成される。
JNL関連エリア188は、前述したように、JNCBエリア501と、JNLエリア503とで構成されている。JNCBエリア501には、図3に示すように、未確定世代に対応した差分BM(BMは“ビットマップ”の略語である)と、確定した世代毎に対応した差分BMとが格納される。JNLエリア503には、未確定世代に対応したオンライン更新差分データと、確定した世代毎に対応した世代間差分データとが格納される。
ここで、「世代」とは、P−VOL187Pについての或る時点のことである。例えば、世代(N)とは、世代(N−1)を過ぎてP−VOL187Pについて所定の世代確定イベントが発生した時(本実施形態では、ホスト計算機101から後述のマーカを受領した時)のことである。なお、図3の例では、確定している最新の世代が世代(N)のため、未確定世代は、世代(N+1)である。マーカを受領した時のP−VOL187Pのイメージが第一のストレージシステム125で取得されるので、マーカは、スナップショット取得要求と言うこともできる。
「オンライン更新差分データ」とは、オンライン更新差分データ要素の集合である。「オンライン更新差分データ要素」は、P−VOL187PについてのJNLデータ要素である。「JNLデータ要素」とは、P−VOL187Pについての単位記憶領域のサイズ(後述のホストライトサイズ)分のJNLデータのことである。JNLデータ要素は、アフターJNLデータ要素であっても良いしビフォアJNLデータ要素であっても良い。「アフターJNLデータ要素」とは、P−VOL187Pに書き込まれるライトデータ要素である。「ビフォアJNLデータ要素」とは、P−VOL187Pにライトデータ要素が書き込まれることに起因したCOW(Copy On Write)でP−VOL187Pから退避されたデータ要素(ライトデータ要素のライト先記憶領域に記憶されているデータ要素)である。以下の説明では、論理ボリューム内のデータ要素が記憶されている単位記憶領域(後述のホストライトサイズ単位で管理されている単位記憶領域)を、便宜上「ブロック」と言い、JNLエリア503内のデータ要素が記憶されている記憶領域を、便宜上「セグメント」と言うことがある。また、以下の説明では、オンライン更新差分データ要素はアフターJNLデータ要素であるとする。
なお、オンライン更新差分データの最大サイズは、そのデータに対応するP−VOLのサイズと同じである。なぜなら、対応するP−VOLにおける同一のブロックに対応したオンライン更新差分データ要素は、JNLエリア503内で上書きされるからである。従って、後述の世代間差分データの最大サイズも、そのデータに対応するP−VOLのサイズと同じである。言い換えれば、オンライン更新差分データ要素の書込み先のJNLサブエリアのサイズは、最大で、P−VOLと同じサイズとすれば良い(この点は、世代間差分データ及び後述のマージ差分データについても同様である)。
「世代間差分データ」とは、世代間差分データ要素の集合である。「世代間差分データ要素」とは、S−VOL187Sにオンライン更新差分データ要素が書き込まれることに起因したCOWが発生することによりS−VOL187Sから退避されたデータ要素である。具体的には、例えば、未確定世代が世代(N)の場合、第一ストレージシステム125がホスト計算機101からマーカ(特定の電子データ)を受領した時に、世代(N)が確定し、未確定世代が(N+1)となる。その場合、JNLエリア503に蓄積されているオンライン更新差分データ(つまり、世代(N)のP−VOL187Pと世代(N−1)のP−VOL187Pとの差分に相当するデータ)が、S−VOL187Sに書き込まれる。オンライン更新差分データ要素が書き込まれる都度に、COWで、S−VOL187Sからデータ要素が世代間差分データ要素としてJNLエリア503に退避される。これにより、S−VOL187Sは、世代(N)のP−VOL187Pの複製となり、JNLエリア503には、世代(N−1)に対応した世代間差分データ(すなわち、世代(N−1)のS−VOL187Sと世代(N−2)のS−VOL187Sとの差分に相当するデータ)が蓄積される。このため、S−VOL187Sの世代は、P−VOL187Pの世代の一つ前の世代である。
「差分BM」とは、論理ボリュームの世代間での差分を表すビットマップである。具体的には、例えば、図3の例において、世代(N)に対応した差分BMは、世代(N)のP−VOL187Pと世代(N−1)のP−VOL187Pとの差分を表すビットマップである。P−VOL187P内の或るブロックに、世代(N−1)より後の或る時点で初めてライトデータ要素が書き込まれた場合、その或るブロックに対応したビット(世代(N)に対応した差分BM内のビット)が、オンにされ(すなわち、ライト発生を表す値(例えば“1”)に更新され)、そのライトデータ要素に対応するオンライン更新差分データ要素が、JNLエリア503に格納される。なお、差分BMを構成する各ビットは、P−VOL187Pの各ブロックに対応している。各ブロックのサイズは、図7を参照して説明するフォーマット処理によってホストライトサイズとなっている。「ホストライトサイズ」とは、ホスト計算機101から書き込まれるデータの単位サイズ(ライトデータ要素のサイズ)である。
なお、後に図11及び図12を参照して説明するように、複数の世代分の世代間差分データ及び差分BMのマージが可能である。これにより、消費される記憶容量を削減することができる。以下、マージ後の世代間差分データを「マージ差分データ」と言う。
また、図3には、ソート処理と、リストア処理とが示される。各処理の概要は、以下の通りである。
<ソート処理>JNLエリア503には、オンライン更新差分データ要素は、時系列で(すなわち、JNLエリア503に書き込まれた順序で)、並んでいる(敷き詰められている)。JNLエリア503からオンライン更新差分データが読み出されてS−VOL187Sに書き込まれる場合、オンライン更新差分データ要素は、時系列ではなくP−VOL187Pのアドレス順(アドレスの昇順又は降順)に読み出される。このため、S−VOL187Sには、アドレス順にオンライン更新差分データ要素が書き込まれ、故に、COWでS−VOL187SからJNLエリア503に書き込まれた世代間差分データ要素はP−VOL187Pのアドレス順に並ぶことになる(敷き詰められることになる)。このように、時系列に並んでいるオンライン更新差分データ要素をアドレス順でS−VOL187Sに反映することで世代間差分データがアドレス順でJNLエリア503に並ぶようにする処理が、「ソート処理」である。なお、後述の第三の実施形態のように、オンライン更新差分データが無いケースでのソート処理は、世代間差分データがアドレス順でJNLエリア503に並ぶようにする処理である。
<リストア処理>「リストア処理」は、ユーザ又は管理者からの要求に応答してR−VOL187Rを作成する処理である。R−VOL187Rからのリードが可能である。また、それに限らずR−VOL187Rに対するライトも可能であるR−VOL187Rについてのリード及びライトの処理は、後に、図14及び図15を参照して説明する。
図4は、制御メモリ145に記憶されているコンピュータプログラム及び情報を示す。以下の説明において、プログラムが主語になる処理は、実際には、そのプログラムを実行するプロセッサ143が行う処理である。
制御メモリ145には、構成管理テーブル201、JNLエリア管理テーブル203、バックアップ世代管理テーブル205、第一のJNL管理テーブル207、R−VOLアクセス管理テーブル209、R/Wプログラム213、ライトサイズ管理プログラム215、JNLソートプログラム217、JNLマージプログラム219、リストアプログラム221及びマーカ処理プログラム223が記憶されている。また、制御メモリ145には、システム領域211がある。R/Wプログラム213は、ホスト計算機101からのI/Oコマンドに従うI/Oを制御する。ライトサイズ管理プログラム215は、ホストライトサイズの設定を行う。JNLソートプログラム217は、ソート処理を実行する。JNLマージプログラム219は、複数の世代の世代間差分データをマージする。リストアプログラム221はR−VOL187Rを作成する。マーカ処理プログラム223は、ホスト計算機101からのマーカを処理する。制御メモリ145に記憶されている各種プログラム及び情報の詳細は、後に説明する。また、以下の説明では、論理ボリュームを「VOL」と略記することがある。
図5は、図4に示した構成管理テーブル201、JNLエリア管理テーブル203、バックアップ世代管理テーブル205及び第一のJNL管理テーブル207の例を示す。なお、図5には、図4に示されていない第二のJNL管理テーブル(JNCB)307と、JNCB307で管理されているJNLデータとが示されているが、JNCB307及びJNLデータは、制御メモリ145には記憶されず、PDEV群(前述の例ではストレージプール)に記憶される。
構成管理テーブル201は、P−VOL毎に用意されるテーブルであって、P−VOL及びそれに関したS−VOL及びR−VOLを管理するためのテーブルである。構成管理テーブル201には、例えばP−VOLと、それに関連したS−VOL及びP−VOLとのそれぞれのVOLについて、[ポート#](VOLに対応したターゲットデバイスに割り当てられているポートの番号)、[ターゲットデバイス#](VOLに対応したターゲットデバイスの番号)、[LDEV#](VOLを同定するための番号)、[JNLエリア#](複数のJNLエリアのうちVOLに対応付けられたJNLエリアの番号)、[状態](VOLの状態、例えば、R/W不可、Rのみ可といったアクセス制限状態)、[容量](VOLの容量)、[I/Oサイズ](前述したホストライトサイズ)、及び[プール#](VOLに割り当てられているストレージプールの番号)が記録される。
JNLエリア管理テーブル203は、P−VOL毎に用意されP−VOLに対応するオンライン更新差分データ、世代間差分データ及びマージ差分データの在り処を管理するためのテーブルである。具体的には、オンライン更新差分データ、世代間差分データ及びマージ差分データのそれぞれについて、[JNLサブエリア先頭アドレス](JNLサブエリアの先頭を表すアドレス)、[容量](データに対応したJNLサブエリアの容量)、[使用容量](データが占める容量)、[状態](例えば、JNLサブエアリアが普通に使える状態であれば“ノーマル”、JNLサブエリアが何らかの理由で使えなければ“閉塞”、JNLの空き容量(容量と使用容量との差分)が所定の閾値より少なければ“容量不足”など)、[JNCB先頭アドレス](JNCBの先頭を表すアドレス)、[容量](JNCBの容量)、及び、[使用容量](JNCB群が占める容量)がある。なお、「JNLサブエリア」とは、JNLエリア503の一部分である。また、世代間差分データ及びマージ差分データについては、世代毎に、[JNLサブエリア先頭アドレス]、[容量]、[使用容量]、[状態]、[JNCB先頭アドレス]、[容量]及び[使用容量]が登録される。
バックアップ世代管理テーブル205は、P−VOL毎に用意されており、P−VOLに関するバックアップデータを管理するためのテーブルである。バックアップ世代管理テーブル205には、例えば、[P−VOL#](P−VOLの番号)、[世代#](最新世代を表す番号)、[S−VOL#](P−VOLとペアを構成するS−VOLの番号)、[世代#](S−VOLの最新世代を表す番号)、[取得世代数](P−VOLについてのバックアップの世代の個数)、[バックアップ期間]及び[マージ世代数](何世代分の世代間差分データが溜まったときにマージ処理を実行するか)が記録される。また、バックアップ世代管理テーブル205には、P−VOLについての世代毎に、[世代#](世代を表す番号)、[バックアップ取得時間](いつバックアップが取得されたか(言い換えれば、その世代の確定の原因となったマーカ受領の日時))、[ユーザコメント](ユーザがバックアップを管理するためのユーザ任意の情報)、バックアップの[状態](例えば、バックアップに成功又は失敗した等)がある。
第一のJNL管理テーブル207は、P−VOL毎に用意され、P−VOLに対応したオンライン更新差分データ、世代間差分データ及びマージ差分データを管理するためのテーブルである。オンライン更新差分データについては、例えば、[先頭アドレス](JNCBの先頭アドレス)、[長さ](オンライン更新差分データのサイズ、例えば、オンライン更新差分データ要素の数)、[作成時刻](オンライン更新差分データ要素を記憶することになった時刻(例えば、最新世代の確定の原因となったマーカの受領時刻))が記録される。また、世代間差分データについては、[先頭アドレス]、[長さ]及び[作成時刻]が、世代毎に記録される。なお、ここでの[作成時刻]は、対応する世代間差分データがJNLサブエリアに格納された時刻である。同様に、マージ差分データについても、世代毎に、[先頭アドレス]、[長さ]及び[作成時刻]が、世代毎に記録される。なお、ここでの「世代」は、マージ差分データに対応する複数世代のうちの或る世代(例えば、最新又は最古の世代)であり、[作成時刻]は、対応するマージ差分データがJNLサブエリアに格納された時刻である。オンライン更新差分データなどのJNLデータに対応した[先頭アドレス]を参照することで、そのJNLデータに対応したJNCBを参照することが可能となる。
JNCB307は、世代間差分データ及びマージ差分データのそれぞれについて、世代毎に存在する。JNCB307は、世代に対応した差分BMとデータ要素の在り処とを管理するためのテーブルである。具体的には、例えば、JNCBテーブル307には、[デバイス#](対応するP−VOLの番号)、[長さ](対応するJNLデータ(オンライン更新差分データ、世代間差分データ又はマージ差分データ)の長さ)、差分BM(世代に対応した差分BM)、及び、対応するJNLデータを構成する各JNLデータ要素に対応したデータ格納アドレスが記録される。
図6は、オンライン更新差分データ、世代間差分データ及びマージ差分データのうちの世代間差分データを例に採ったデータ管理方式を示す。
図6に示すように、JNCBエリア501には、複数の世代に対応した複数のJNCBが記憶され、JNLエリア503には、それら複数の世代に対応した複数のJNLサブエリアが存在する。
指定された世代(例えば世代(i))に対応したJNCB307内の差分BMから、その世代のP−VOLのどこに更新があったかを知ることができる。また、その世代に対応したJNCB307に記録されている各データ格納アドレスを参照することで、その世代に対応した世代間差分データを構成する各データ要素がJNLエリア503内のどこに存在するのかを知ることができる。
図7は、ホストライトサイズ設定処理のフローを示す。
管理サーバ111が、ホスト計算機101に、ホストライトサイズの問合せを発行する(ステップ7001)。ホスト計算機101内の所定のコンピュータプログラム(上記問合せに応答してホストライトサイズを回答する機能を有したコンピュータプログラム)がCPU103で実行されることで、ホスト計算機101からホストライトサイズが回答される(ステップ7002)。その所定のコンピュータプログラムとしては、例えば、ファイルシステム或いはデータベース管理システム(DBMS)がある。
管理サーバ111は、回答されたホストライトサイズと、そのホストライトサイズに対応したホスト識別子(又はP−VOLの番号など)とを、第一ストレージシステム125(及び第二ストレージシステム161)に送信する。
ライトサイズ管理プログラム215(図4参照)が、管理サーバ111からのホスト識別子(又はP−VOLの番号)に対応した各P−VOLを特定し、その各P−VOLに対応した構成管理テーブル201に、管理サーバ111からのホストライトサイズを、I/Oサイズとして設定する(ステップ7004)。
そして、ライトサイズ管理プログラム215は、そのホストライトサイズを基に、フォーマット処理を実行する(ステップ7005)。フォーマット処理では、例えば、上記特定された各P−VOLに対応したJNLエリア管理テーブル203、バックアップ世代管理テーブル205、第一JNL管理テーブル207及びJNCB307が作成される。具体的には、例えば、P−VOLを構成するブロックのサイズや、JNLエリア503を構成するセグメントのサイズが、ホストライトサイズと同じサイズとして管理される。従って、JNCB307内の差分BMを構成するビットの数は、P−VOLがホストライトサイズで区切られることにより得られたブロックの数となる。これにより、例えば、オンライン更新差分データ要素のサイズ、S−VOLから退避されるデータ要素のサイズ、或いは、P−VOLからS−VOLへとコピーされるデータ要素のサイズは、それぞれ、ホストライトサイズとなる。
なお、I/Oサイズとしてホストライトサイズが設定されない場合、作成されるJNLデータ要素のサイズは、I/Oサイズの初期値(例えば、キャッシュメモリ147の単位管理サイズ、或いは、ファイルシステムの単位管理ブロックサイズ)である。また、ライトサイズ管理プログラム215が、ホスト計算機101からホストライトサイズを受けても良い。また、P−VOL毎に、ブロックのサイズや、P−VOLとペアを構成するS−VOLのブロックのサイズや、P−VOLに関わるJNLサブエリアのセグメントのサイズが異なることがある。なぜなら、P−VOLを使用するホスト計算機101(又はオペレーティングシステム)が異なれば、ホストライトサイズも異なることがあるためである。具体的には、例えば、第一種のホスト計算機からアクセスされるP−VOLのブロックのサイズは、その第一種のホスト計算機に対応した第一のホストライトサイズであり、第二種のホスト計算機からアクセスされるP−VOLのブロックのサイズは、その第二種のホスト計算機に対応した、第一のホストライトサイズとは異なる第二のホストライトサイズとなることがある。
図8は、P−VOLにライトデータ要素を書き込むライト処理のフローを示す。以下、ライトコマンドで指定されているP−VOLを、それぞれ、図8の説明において「対象P−VOL」と言う。また、以下の説明では、説明が冗長になるのを防ぐ観点から、世代Kに対応した対象のことを、その対象の名称の後に(K)を付けて表すことがある。具体的には、例えば、世代(j)に対応したJNCBを「JNCB(j)」と表し、世代(j−1)に対応したS−VOLのことを「S−VOL(j−1)」と表すことがある。
フロントエンドインタフェース127が、ホスト計算機101から、ライトコマンド及びライトデータ要素を受信し、メモリ137でライトデータ要素を記憶する(ステップ8001)。ライトコマンドは、プロセッサ143に転送される。
R/Wプログラム213(図4参照)が、ライトコマンドの受領に応答して、キャッシュメモリ147から第一のスロットを確保する(ステップ8002)。なお、「スロット」とは、キャッシュメモリ147の単位管理領域である。スロットのサイズは、例えば、ホストライトサイズよりも大きい。ホストライトサイズが未設定の場合には、初期値として例えばスロットのサイズでJNLデータ要素が作成される。
R/Wプログラム213が、対象P−VOL187Sの未確定時点に対応する差分BM(最新の差分BM)における、ライトコマンドで指定されているライト先ブロックに対応したビットを参照する(ステップ8003)。
もし、そのビットが更新済みを表していれば、R/Wプログラム213は、そのビットに対応したデータ格納アドレスを参照し、そのアドレスが表すセグメントを特定する(ステップ8004)。
一方、ステップ8003で参照したビットが未更新を表していれば、R/Wプログラム213は、対象P−VOL187Pに対応するJNLエリア管理テーブル203を参照することで、対象P−VOL187Pについてのオンライン更新差分データに対応するJNLサブエリア内の空きセグメントを特定する(ステップ8005)。なお、もし、空きセグメントが無ければ、新たにJNLサブエリアを確保することが可能である。
R/Wプログラム213が、キャッシュメモリ147から、第二のスロットを確保する(ステップ8006)。
R/Wプログラム213が、ライトコマンド完了を、ライトコマンドの送信元のホスト計算機101に報告する(ステップ8007)。それに応答して、ライトデータ要素がホスト計算機101から送られて来て、フロントエンドインタフェース127内のメモリ131に記憶される。
R/Wプログラム213が、フロントエンドインタフェース127内のメモリ131に記憶されたライトデータ要素を、第一及び第二のスロットにそれぞれ書き込む(ステップ8008)。
R/Wプログラム213が、対象P−VOL187Pのオンライン更新差分データに対応したJNCB307を更新する(ステップ8009)。具体的には、例えば、ライトデータ要素がオンライン更新差分データ要素として書き込まれる先のセグメント(図8の説明で「JNL先セグメント」と言う)に対応したデータ格納アドレスが追加される。また、例えば、ライト先ブロックが未更新であったならば、ライト先ブロックに対応したビット(差分BM内のビット)が、オン(更新済みを表す値)に更新される。
R/Wプログラム213が、第一のスロット内のライトデータ要素を、対象P−VOL187P内のライト先ブロックに書き込み、第二のスロット内のライトデータ要素を、上記JNL先セグメント(ステップ8004又は8005で特定されたセグメント)に書き込む(ステップ8010)。第一及び第二のスロット内のライトデータ要素は、同じタイミングで書き込まれてもよいし、異なるタイミングで書き込まれてもよい。
図9は、マーカ受領及びマーカ受領に応答して行われる処理のフローを示す。なお、図9及び次の図10の説明では、マーカで指定されているP−VOLを「対象P−VOL」と言い、対象P−VOLとペアを構成するS−VOLを「対象S−VOL」と言う。
フロントエンドインタフェース127が、ホスト計算機101からマーカを受領する(ステップ9001)。受領したマーカは、プロセッサ143に転送される。
マーカ処理プログラム223は、マーカの受領に応答して、対象P−VOL187P及び対象S−VOL187Sの世代をそれぞれ1インクリメントする(ステップ9002)。例えば、対象P−VOL187Pの世代が、jからj+1に更新され、対象S−VOL187Sの世代が、j−1からjに更新される。具体的には、例えば、バックアップ世代管理テーブル205において、対象P−VOL及び対象S−VOLのそれぞれの世代#が更新される。すなわち、対象P−VOL187Pの世代(j)が確定し、世代(j+1)は、未確定の世代である。
マーカ処理プログラム223は、第一のJNL管理テーブル207に、オンライン更新差分データ(j+1)に対応した[先頭アドレス]、[長さ]及び[作成時刻]を追加する(ステップ9003)。すなわち、オンライン更新差分データ(j+1)が格納されるJNLサブエリアが用意される。これにより、マーカ受領直のオンライン更新差分データ(j)が、オンライン更新差分データ(j+1)で上書きされないようにすることができる。
マーカ処理プログラム223は、バックアップ世代管理テーブル205に、確定した世代(j)の行を追加し、その行に、バックアップ取得時間(マーカ受領時刻)や、マーカ受領時に同時に受領したユーザコメントなどを登録する(ステップ9004)。
マーカ処理プログラム223は、第一のJNL管理テーブル207に、世代間差分データについて世代(j−1)の行を追加する(ステップ9005)。その際、S−VOLの[I/Oサイズ](つまりホストライトサイズ)に基づいて、JNCB(j−1)が作成される(具体的には、例えば、差分BM(j−1)を構成するビットの数が、その[I/Oサイズ]のブロックの数とされる)。追加された行には、JNCB(j−1)の先頭位置を[先頭アドレス]が書かれる。JNCB(j−1)は、ソート処理に基づき更新される。そのソート処理を、図10を参照して説明する。
図10は、ソート処理のフローを示す。なお、図10に示すオンライン更新差分データ及びそれに対応する差分BMは、世代(j)に対応している。
マーカ受領に応答して、JNLソートプログラム217(図4参照)が起動する。JNLソートプログラム217が、図10に示す流れで、ソート処理を実行する。
すなわち、JNLソートプログラム217は、対象P−VOL187Pに対応した差分BM(j)におけるビットを、先頭ビットから順次参照する(ステップ10001)。参照したビットがオンであれば(更新済みを表していれば)、そのビットについて、ステップ10003が行われ、参照したビットがオフであれば(未更新を表していれば)、次のビットが参照される(ステップ10002)。
JNLソートプログラム217は、差分BM(j)におけるオンのビットに対応した、差分BM(j−1)におけるビットをオンにする(ステップ10003)。
JNLソートプログラム217は、JNCB(j−1)内に、ステップ10003でオンにしたビットに対応するデータ格納アドレスを追加する(ステップ10004)。そのデータ格納アドレスは、ステップ10005での退避先のセグメント(JNLサブエリア(j−1)内のセグメント)を表す。その退避先のセグメントは、直前回の退避先セグメントの次のセグメントである。これにより、対象S−VOL(j)から退避された各データ要素がJNLサブエリア(j−1)内の連続したセグメントに書き込まれることになる。
JNLソートプログラム217は、差分BM(j−1)におけるオンにされたビットに対応したブロック(対象S−VOL187S内のブロック)に記憶されているデータ要素“A”を、そのブロックから上記退避先のセグメントに退避する(ステップ10005)。
JNLソートプログラム217は、退避元のブロック(対象S−VOL(j)内のブロック)に、差分BM(j)におけるオンのビットに対応したデータ格納アドレスが表すセグメント(JNLサブエリア(j)内のセグメント)に記憶されているデータ要素“B”を書き込む(ステップ10006)。
以上のステップ10005及び10006により、オンライン更新差分データ要素“B”が対象S−VOL(j)内のブロックに書き込まれることに起因したCOWで、そのブロックに記憶されているデータ要素“A”がJNLサブエリア(j−1)内のセグメントに退避され、オンライン更新差分データ要素“B”が、対象S−VOL(j)内のブロックに書き込まれる。
以上のように、差分BM(j)を構成するビットが、ブロックのアドレス順に参照され、オンのビットが検出される都度に、ステップ10003乃至10006が行われることで、JNLデータ要素がソートされる。すなわち、JNLサブエリア(j)に時系列に連続していたオンライン更新差分データ要素が、ブロックのアドレス順に対象S−VOLに反映されることで、JNLサブエリア(j−1)に、世代間差分データ要素がブロックのアドレス順に連続することになる。
なお、以上のソート処理が終了した後、オンライン更新差分データに対応した差分BMを構成する全てのビットがオフとされる(オンライン更新差分データ要素がS−VOLに書き込まれる都度に、そのデータ要素に対応したビットがオフとされても良い)。
図11は、世代間差分データのマージ処理のフローである。図12は、そのマージ処理に関するデータ要素の動きを示す。以下、図11及び図12を参照して、マージ処理を説明する。
図12に示すように、JNLマージプログラム219(図4参照)は、或る世代数分(例えば(m+1)世代(世代(N)〜世代(N+m))の世代間差分データが溜まっていることを検出したときに、(m+1)世代分の世代間差分データをマージ差分データに変換するマージ処理を開始する。なお、マージ処理の開始の契機として、(m+1)世代分の世代間差分データが溜まっていることが検出されたということは一例にすぎず、他の契機、例えば、直前回のマージ処理から所定期間が経過したであっても良い。
JNLマージプログラム219は、バックアップ世代管理テーブル205でマージ対象の世代(N)〜世代(N+m)の[状態]を“マージ中”にする。そして、JNLマージプログラム219は、マージ対象の最古の世代(N)の世代間差分データを、対象として選択する(ステップ11001)。
JNLマージプログラム219は、対象の世代間差分データに対応した差分BM(N)の先頭ビットを参照位置として決定する(ステップ11002)。
JNLマージプログラム219は、差分BM(N)について参照位置とされているビットがオンであれば、ステップ11004を実行し、そのビットがオフであれば、ステップ11009を実行する。以下、図11及び図12の説明において、その参照位置とされているビットを「対象ビット」と言い、そのビットがオンであれば「対象オンビット」と言い、そのビットがオフであれば「対象オフビット」と言う。
JNLマージプログラム219は、今回作成するマージ差分データに対応した差分BM(以下、図11及び図12の説明において、「マージ差分BM」と言う)について、上記対象ビットと同じ位置にあるビットがオフであれば、ステップ11005を実行し、そのビットがオンであれば、ステップ11009を実行する。
JNLマージプログラム219は、差分BM(N)における対象オンビットに対応したデータ格納アドレスを探し(ステップ11005)、そのアドレスを特定する(ステップ11006)。そして、JNLマージプログラム219は、そのアドレスが示すセグメントに記憶されている世代間差分データ要素を、そのセグメントから、今回作成されるマージ差分データに対応したJNLサブエリア内のセグメント(直前回のコピー先のセグメントの次のセグメント)にコピーする(ステップ11007)。そして、JNLマージプログラム219は、マージ差分BMにおける、上記対象ビットと同じ位置にあるビットを、オンにする(ステップ11008)。
JNLマージプログラム219は、差分BM(N)において、これまでの参照位置の次の位置に未参照のビットがあれば(ステップ11009でY)、次のビットを参照位置として(ステップ11010)、ステップ11003を実行する。次の位置に未参照のビットが無ければ(ステップ11009でN)、その世代(N)についての処理が終了となり(ステップ11011)、次の世代があれば(ステップ11012でY)、次の世代(N+1)について、ステップ11001が行われる。もし、次の世代が無ければ(すなわち、直前回に処理された世代が(N+m)であれば(ステップ11012でN)、マージ処理の終了となる。
以上の流れによれば、図12に示すように、マージ対象の世代(N)〜(N+m)のうちの古い世代に対応した世代間差分データから先に処理される。世代間差分データに対応した差分BMではオンビットであって、マージ差分BMにおいて、そのオンビットに対応したビットがオフであれば、そのオンビットに対応した世代間差分データ要素が、マージ差分データに対応したJNLサブエリアにコピーされる。一方、世代間差分データに対応した差分BMではオンビットであり、マージ差分BMにおいても、そのオンビットに対応したビットがオンであれば、世代間差分データに対応した差分BM内のオンビットに対応したデータ要素はコピーされない。
要するに、古い世代に対応した世代間差分データ要素ほど、優先的に、マージ差分データに対応したJNLサブエリアにコピーされる。具体的には、例えば、図12によれば、世代(N)と世代(N+m)の2つの世代について、P−VOLの先頭ブロックに対応した世代間差分データ要素“A”及び“G”が存在している。この場合、前述したように、古い世代に対応した世代間差分データ要素ほど優先されるので、世代(N)についてのデータ要素“A”は、マージ差分データに対応したJNLサブエントリにコピーされるが、その世代(N)よりも新しい世代についてのデータ要素“G”は、そのJNLサブエントリにはコピーされない。
なお、このマージ処理では、古い世代から先に処理されるが、新しい世代から先に処理されても良い。但し、この場合、世代間差分データに対応した差分BMではオンビットであり、マージ差分BMにおいても、そのオンビットに対応したビットがオンであれば、世代間差分データに対応した差分BM内のオンビットに対応したデータ要素が、マージ差分データに対応したJNLサブエリアに記憶されている、オンビットに対応したマージ差分データ要素に上書きされても良い。また、マージ差分データが作成された場合、そのマージ差分データの基になった複数世代分の世代間差分データは、マージ差分データの作成完了の直後に、又は計算機(例えば、ホスト計算機101又は管理サーバ111)からの指示に応答して、削除されても良い。
また、世代間差分データやマージ差分データが古い世代から削除されて良い。この場合、例えば、図示しないJNL削除プログラムが、削除対象の世代に対応したJNCB及びJNLデータを解放し空きの領域として管理する。また、JNL削除プログラムは、第一のJNL管理テーブル207及びバックアップ世代管理テーブル205から、削除対象の世代に対応したエントリを削除する。
図13は、リストア処理のフローを示す。
ユーザによって指定されたリストア対象世代を有するリストア要求を、リストアプログラム221(図4参照)が、ホスト計算機101又は管理サーバ111から受領する。具体的には、例えば、リストアプログラム221が、ホスト計算機101又は管理サーバ111からの要求に応答して、バックアップ世代管理テーブル205などの情報を、ホスト計算機101又は管理サーバ111に送信する。ユーザは、そのテーブル205などにある[世代#]、[バックアップ取得時間]及び[ユーザコメント]などを参照して、リストア対象世代を決定し、決定したリストア対象世代をホスト計算機101又は管理サーバ111に指定する。その指定されたリストア対象世代(N)を有するリストア要求が、ホスト計算機101又は管理サーバ111からリストアプログラム221に送られる。
リストアプログラム221は、リストア要求に応答して、リストア処理を実行する。リストア処理では、R−VOLアクセス管理テーブル209が作成されるR−VOLアクセス管理テーブル209は、複数のアドレスレコードで構成される。各アドレスレコードはR−VOLを構成する各ブロック(仮想的なブロック)に対応し、故に、差分BMにおける各ビットに対応する。
リストアプログラム221は、リストア要求に応答して、世代間差分データ(もしくはマージ差分データ)の差分BMを、リストア対象世代(N)から順次新しい世代(N+1)、(N+2)へと参照する(ステップ12001)。以下、参照先の差分BMがリストア対象世代(N)である場合を例に採り説明する。
リストアプログラム221は、差分BM(N)の先頭ビットから、オンかオフかの判定を行う(ステップ12002)。参照したビットがオンだった場合、リストアプログラム221は、そのオンビットに対応したアドレスレコードを参照する(ステップ12003)。そのレコードに無効なアドレス(例えばNull)があれば、リストアプログラム221は、参照したオンビットに対応するデータ格納アドレスを、JNCB(N)内から読み出して(ステップ12004)、そのレコードに登録し(ステップ12005)、一方、そのレコードに有効なアドレスが登録済みであれば、次のビットを参照する(ステップ12006)。
以上のステップ12002乃至12006が、リストア対象世代(N)だけでなく、それよりも新しい世代(N+1)及び(N+2)についても行われることでR−VOLアクセス管理テーブル209が完成する。すなわち、例えば、ステップ12006において、参照先となる次のビットが無ければ、リストア対象世代(N)の次の世代(N+1)について、ステップ12002乃至12006が行われる。
以上のようにしてR−VOLアクセス管理テーブル209が作成されたならばR−VOLへのリード処理(及びライト処理)が可能になる。この場合、構成管理テーブル201において、R−VOLに対応した[状態]が“ノーマル”(つまりR/W可)となる(それ以前は、その[状態]は、“R/W不可”である)。
ちなみに、R−VOLアクセス管理テーブル209を作成することに代えて、実VOLとしてのR−VOLが用意されても良い。この場合は、例えば、R−VOLアクセス管理テーブル209を作成する方法と同じ方法でデータ格納アドレスが特定され、特定されたアドレスが表すセグメントから、R−VOL(実VOL)内の、そのアドレスが対応するビットに対応したブロックに、データ要素がコピーされても良い。
図14は、R−VOL管理テーブル209を利用したリード処理のフローを示す。
R/Wプログラム213(図4参照)が、ホスト計算機101から、図13に示すR−VOL187Rを指定したリードコマンドを受信する(ステップ14001)。
R/Wプログラム213は、そのリードコマンドで指定されているリード元ブロックに対応したレコード(R−VOLアクセス管理テーブル209内のレコード)を参照する(ステップ14002)。
ステップ14002の結果、参照先のレコードに有効なアドレスが登録されていれば、R/Wプログラム213は、そのアドレスが表すセグメントからデータ要素を読出し、そのデータ要素をホスト計算機101に送信する(ステップ14003)。
一方、ステップ14003の結果、参照先のレコードに無効なアドレスが登録されていれば、R/Wプログラム213は、R−VOLに対応するS−VOL(フルバックアップボリューム)内の、上記リード元ブロックと同じアドレスのブロックから、データ要素を読出し、そのデータ要素をホスト計算機101に送信する(ステップ14004)。
図15は、R−VOL管理テーブル209を利用したライト処理のフローを示す。
R/Wプログラム213が、ホスト計算機101から、図13に示すR−VOL187Rを指定したライトコマンドを受信する(ステップ15001)。R/Wプログラム213は、そのライトコマンドで指定されているライト先ブロックに対応したレコード(R−VOLアクセス管理テーブル209内のレコード)を参照する。
参照先のレコードに有効なアドレス“アドレス3”が登録されていれば、R/Wプログラム213は、ストレージプール189A又は189Bから、ホストライトサイズ分の領域を確保し(ステップ15002)、上記の有効なアドレス“アドレス3”を、その確保された領域を表すアドレス“アドレスP1”に変更する(ステップ15003)。そして、R/Wプログラム213は、その確保されている領域に、ライトデータ要素を書き込む(ステップ15004)。
なお、参照先のレコードに無効なアドレスが登録されていれば、その無効なアドレスが、ストレージプール189A又は189B内の確保された領域を表すアドレスに変更される。
図20は、R−VOL有りでのソート処理のフローを示す。
マーカを受領すると、オンライン更新差分データがS−VOLにコピーされることで、S−VOLに格納されていたデータ要素が退避される。このため、R−VOLが有る状態でマーカが受領されると、R−VOLアクセス管理テーブルに格納されている各アドレスと各データ要素との対応関係が変わってしまうおそれがある。具体的には、例えば、R−VOLアクセス管理テーブルにおける参照先レコードに無効なアドレスが登録されているが故に、その参照先レコードに対応したブロック(S−VOL内のブロック)に記憶されているデータ要素のリードが期待できるが、上記マーカ受領によりそのブロックにオンライン更新差分データ要素がコピーされることになると、そのデータ要素がJNLサブエリアに退避されるため、期待されるデータ要素をS−VOLから取得できなくなる。
そのため、図20を参照して説明する処理が行われる。
まず、ステップ10001〜10002が行われる(ステップ20001)。
次に、JNLソートプログラム217は、R−VOLにアクセスがあった場合に、対応するS−VOLにアクセスすることになるかどうかを判断する(ステップ20002)。具体的には、JNLソートプログラム217は、R−VOLアクセス管理テーブル209に、無効なアドレスが登録されているか否かを判断する。
その結果、無効なアドレスが見つかれば、JNLソートプログラム217は、無効なアドレスが登録されているレコードに対応したブロックを特定し、特定したブロックに対応するデータ各要素アドレス(差分BM(j−1)内のビットに対応したデータ格納アドレス)“アドレス3”を参照する。そして、JNLソートプログラム217は、そのアドレス“アドレス3”が表すセグメントに、無効なアドレスが登録されているレコードに対応したブロック(S−VOL内のブロック)に記憶されているデータ要素“A”を退避する(ステップ20003)。JNLソートプログラム217は、R−VOLアクセス管理テーブル209において、無効なアドレス“Null”を、データ要素“A”の退避先セグメントを表すアドレス“アドレスP1”に変更する(ステップ20004)。そして、JNLソートプログラム217は、退避元のブロックに、そのブロックに対応したオンライン更新差分データ要素“B”を書き込む(ステップ20005)。
以上の処理により、R−VOL有りの状態でマーカを受領しても、R−VOL内の各ブロックと各データ要素との対応関係を維持したソート処理を行うことができる。
以下、本発明の第二の実施形態を説明する。その際、第一の実施形態との共通点については、説明を省略或いは簡略し、第一の実施形態との相違点を主に説明する(なお、この点は、第二の実施形態に限らず、第三の実施形態以降も同様である)。
第二の実施形態では、オンライン更新差分データ要素は、P−VOLのビフォアJNLデータ要素である。
図16は、第二の実施形態においてP−VOLにライトデータ要素を書き込むライト処理のフローを示す。
R/Wプログラム213は、ホスト計算機101からライトコマンドを受領すると(ステップ16001)、ライトデータ要素を格納するためのスロットを確保する(ステップ16002)。さらに、R/Wプログラム213は、オンライン更新差分データに対応した差分BM内の、ライトコマンドで指定されているライト先ブロックに対応したビットを参照する(ステップ16003)。
ステップ16003の結果、参照先がオンビットの場合、R/Wプログラム213は、ステップ16008以降を実行する(ステップ16004)。すなわち、ライト先ブロックに記憶されているデータ要素がオンライン更新差分データ要素としてJNLサブエントリに退避されることは行われない。
一方、ステップ16003の結果、参照先がオフビットの場合、R/Wプログラム213は、対象P−VOL(ライトコマンドで指定されているP−VOL)187Pに対応するJNLエリア管理テーブル203を参照することで、対象P−VOL187Pについてのオンライン更新差分データに対応するJNLサブエリア内の空きセグメントを特定する(ステップ16005)。なお、もし、空きセグメントが無ければ、新たにJNLサブエリアを確保することが可能である。
ステップ16005の次に、R/Wプログラム213は、ライト先ブロックに記憶されているデータ要素を、上記特定された空きセグメントに退避する(ステップ16006)。そして、R/Wプログラム213は、オンライン更新差分データに対応するJNCBを更新する(ステップ16007)。具体的には、R/Wプログラム213は、ライト先ブロックに対応したビット(差分BM内の上記参照先のオフビット)をオンにし、そのライト先ブロックに対応したデータ格納アドレスとして、上記空きセグメントを表すアドレスを追加する。
その後、R/Wプログラム213が、フロントエンドインタフェース127内のメモリ131に記憶されているライトデータ要素を、ステップ16002で確保されたスロットに書き込む(ステップ16008)。
R/Wプログラム213は、そのスロットに書き込まれているライトデータ要素を、P−VOL内のライト先ブロックに書き込む(ステップ16009)。
図17は、第二の実施形態でのソート処理のフローを示す。
ステップ10001〜10005と同じ処理が行われる(ステップ17001〜17005)。
その後、JNLソートプログラム217は、オンライン更新差分データに対応する差分BM内の各オンビットに対応した、P−VOL内の各ブロックから、S−VOL内の同じアドレスの各ブロックに、データ要素をコピーする(ステップ17006)。
第三の実施形態では、オンライン更新差分データが格納されない。このため、第一及び/又は第二の実施形態と、以下の点で相違する。
例えば、図18のステップ18001〜18005に示すように、P−VOLに対するライト処理では、P−VOLについてのJNLデータ要素がJNLエリアに格納されない。
また、例えば、ソート処理では、図19に示すように、図17と同じソート処理が行われる。すなわち、図19におけるステップ19001〜19006は、図17におけるステップ17001〜17006とそれぞれ同じである。
図21は、第三の実施形態(及び第二の実施形態)におけるマーカ受領直後のP−VOLのライト処理を示す。以下の説明では、S−VOLから退避されるべき全てのデータ要素のうちの一部のデータ要素が未だ退避されていないタイミングが考慮されている。
R/Wプログラム213は、ライトコマンドを受領すると(ステップ21001)、ライトコマンドで指定されているVOLのボリューム属性を確認する(ステップ21002)。R/Wプログラム213は、そのVOLがP−VOLであると判定したら、そのP−VOLについての最新の差分BM内の、ライト先ブロックに対応したビットを参照する(ステップ21003)。
そのビットが、図21に示すようにオンであれば、ライト先ブロックに記憶されているデータ要素がライトデータ要素に上書きされる前に、そのデータ要素が、S−VOLにコピーされなければならない。そのために、R/Wプログラム213は、ライトデータ要素に対応した第一のスロットの確保と、P−VOLから退避されるデータ要素に対応した第二のスロットの確保と、S−VOLから退避されるデータ要素に対応した第三のスロットの確保とを行う(ステップ21004)。
その後、R/Wプログラム213は、ライト先ブロックと同じアドレスのブロック(S−VOL内のブロック)から第三のスロットを介してJNLサブエリアにデータ要素を退避する(ステップ21005)。また、R/Wプログラム213は、ライト先ブロックから第二のスロットを介してライト先ブロックと同じアドレスのブロック(S−VOL内のブロック)にデータ要素を退避する(ステップ21006)。
R/Wプログラム213は、ライトコマンドに対応する応答をホスト計算機101に送信し(ステップ21007)、それに応答してライトデータ要素をホスト計算機101から受領し(ステップ21008)、受領したライトデータ要素を第一のスロットに書き込む(ステップ21009)。第一のスロットに書き込まれたライトデータ要素は、P−VOL内のライト先ブロックに書き込まれる。
なお、これまでの説明では、基本的に、取得された第一のJNLデータ要素(例えばオンライン更新差分データ要素)が、JNLサブエリアに存在する第二のJNLデータ要素と同じブロックに対応しているならば、第二のJNLデータ要素はJNLサブエリアにおいて第一のJNLデータ要素に上書きされ、それ故、JNLデータ(例えばオンライン更新差分データ)の最大サイズは、P−VOLやS−VOLと同じサイズとされていた。しかし、それに限らず、取得されたJNLデータ要素は上書きされることなくJNLサブエリアに蓄積されていっても良い。この場合、オンライン更新差分データ、世代間差分データ及びマージ差分データは、いずれも、P−VOLやS−VOLのサイズを超える可能性がある。
図22は、本発明の第四の実施形態でのリストア処理の概要を示す。図23は、本実施形態でのP−VOL、R−VOL及びJNL関連エリアの構成例を示す。図24は、そのリストア処理でのキャッシュメモリ147の使い方を示す。なお、図22〜図24を参照した説明では、JNLデータ要素は、ビフォアJNLデータ要素である。また、リストア対象世代を世代(N)とする。
本実施形態では、図22及び図23に示すように、R−VOL187Rからバックアップサーバ501にデータが読み出され、バックアップサーバ501に接続されている記憶装置(例えばテープライブラリ)502に、そのデータが書き込まれる。データは、例えば、R−VOLの先頭アドレスからシーケンシャルに読み出され、記憶装置502にシーケンシャルに書き込まれる。
図22に示すように、リストアプログラム221が、P−VOL(又はS−VOL)内の各スロットサイズ領域からデータをキャッシュメモリ147に読み出す(符号46001)。スロットのサイズは、例えば、ホストライトサイズよりも大きい。従って、スロットサイズ領域は、例えば、複数個のブロックで構成されている。
次に、リストアプログラム221が、リストア対象世代(N)から最新世代までのJNCBを基に(符合46002)、リストア対象世代(N)のP−VOLにあった世代間差分データ要素をJNLエリアから読み出し、キャッシュメモリ147内のスロットサイズのデータにおける、JNCB内のデータ格納アドレスに従う箇所に、その世代間差分データ要素を上書きする(符号46003)。こうすることで、キャッシュメモリ147内で、世代(N)に対応した或るスロットサイズ分のデータが確定した後に、キャッシュメモリ147内の確定したスロットサイズ分のデータが、バックアップサーバ501に転送される。
図23に示すように、本実施形態では、P−VOL(及び/又はS−VOL)、R−VOL(実質的にはキャッシュメモリ)、JNCBエリア及びJNLエリアは、複数のサブ領域に分割されている。以下、そのサブ領域を「分割領域」と言い、個々の分割領域に通し番号p(pは自然数)を付して説明する。P−VOL、R−VOL、JNCBエリア及びJNLエリア内のそれぞれの分割領域pは、互いに対応している。また、例えば、一つの世代に対応したJNCBは、JNCBエリアにおける複数の分割領域1〜Mに分割して格納され、同様に、一つの世代に対応したJNLデータ(例えば世代間差分データ)も、JNLエリアにおける複数の分割領域1〜Mに分割して格納される。
本実施形態では、複数の制御プロセッサ143があり、一又は二以上の分割領域毎に、個々の制御プロセッサ143が割り当てられている。各制御プロセッサ143は、それぞれ、自身が担当する分割領域について、図22を参照して説明した処理を実行する。複数の制御プロセッサ143が、並行して図22を参照して説明した処理を実行する。
一つの分割領域について、例えば下記の処理が行われる。
すなわち、図24に示すように、その分割領域を担当する制御プロセッサ143が、キャッシュメモリ147における分割領域に、世代(N)から最新世代に対応した複数のスロットと、R−VOLに対応したスロットとを確保する。
次に、制御プロセッサ143が、世代(N)から最新世代までの差分BM部分(分割領域に対応した差分BM部分)をマージし(符号48000)、マージされた差分BM部分におけるオンビットに対応したデータ要素を含むスロットサイズ分のデータを、P−VOL187P(又はS−VOL)から、R−VOLに対応したスロットに読み出す(符号48001)。その際、各データ要素は、スロット内の、JNCB内のデータ格納アドレスに基づく位置に記憶される。
次に、制御プロセッサ143は、世代(N)に対応した差分BM部分におけるオンビットに対応したデータ要素(N)を、スロット(N)に読み出す(符号48002)。制御プロセッサ143は、世代(N)よりも新しい各世代についても同様の処理を行う(符号48003)。
制御プロセッサ143は、世代(N)から最新世代にかけて、スロット内のデータ要素を、R−VOLに対応したスロットにコピーする(符号48004)。その際、コピー先にデータ要素が存在する場合には、より新しい世代に対応したデータ要素が上書きされる(符号48005)。世代(N)から最新世代にかけてこのようなコピーが完了した場合に、世代(N)に対応したスロットサイズのデータが確定する。
なお、制御プロセッサ143は、キャッシュメモリ147にスロットが確保できない場合、キャッシュメモリ147における確定済のスロットサイズのデータを、R−VOL用退避領域(例えば、ストレージプールの一部分(例えばプールVOL))699に退避する。或いは、例えば、制御プロセッサ143は、R−VOLに対するライトデータ要素を受領した場合、そのライトデータ要素を、R−VOL用退避領域699に退避する。
また、制御プロセッサ143は、図24を参照して説明した方法に代えて、図25を参照して説明する方法で、R−VOL187Rに対応したスロットサイズ分のデータをキャッシュメモリ147上に確定することが可能である。すなわち、図25に示すように、制御プロセッサ143は、差分BM部分(N)におけるオンビットに対応したデータ要素を対象スロットに読み出す。次に、制御プロセッサ143は、差分BM部分(N+1)におけるオンビットに対応したデータ要素を、上記対象スロットに読み出す。その際、前の世代で既にデータ要素が読み出されていれば、差分BM部分(N+1)におけるオンビットに対応したデータ要素は、対象スロットに書き込まれない。このような処理が、世代(N)から最新世代について行われることで、R−VOL187Rに対応したスロットサイズ分のデータが確定される。
図26は、本発明の第五の実施形態で行われる圧縮処理と解凍処理の概要を示す。これらの処理は、例えば、図示しない圧縮/解凍プログラムが制御プロセッサ143で実行されることにより行われる。
制御プロセッサ143が、ホスト計算機101又は管理サーバ111から圧縮対象世代の指定を受け付ける。制御プロセッサ143は、圧縮対象世代の指定を受けた場合、圧縮対象世代に対応したJNLデータ(世代間差分データまたはマージ差分データ)の位置及びデータサイズを、圧縮対象世代に対応した[先頭アドレス]及び[長さ](第一のJNL管理テーブル207に記録されている情報要素)を参照することにより、特定する。また、制御プロセッサ143は、圧縮方式(例えば圧縮率を含む)を基に、特定されたデータサイズに基づくサイズの空き領域を、JNL関連エリア188から確保する。
そして、制御プロセッサ143は、圧縮対象世代に対応したJNCB及びJNLデータをJNL関連エリア188から読み出して圧縮し、圧縮後のJNCB及びJNLデータを、確保した空き領域に格納する。その後、制御プロセッサ143は、読出し元の領域(JNCB及びJNLデータが記憶されている記憶領域)を解放する。これにより、その領域は空き領域として管理されることになる。
制御プロセッサ143は、世代毎に、圧縮の有無と、圧縮後のJNCB及びJNLデータの在り処を示す情報と、圧縮後及び圧縮前のJNCB及びJNLデータのサイズ(圧縮後サイズ及び圧縮前サイズ)とを、所定の記憶資源(例えば制御メモリ145)で管理する。
制御プロセッサ143は、解凍対象世代の指定を受け付けた場合、解凍対象世代に対応した圧縮前サイズ分の空き領域を、JNL関連エリア188から確保する。制御プロセッサ143は、解凍対象世代に対応した圧縮後のJNCB及びJNLデータの在り処を上記所定の記憶資源で管理されている情報を参照することにより特定し、特定された在り処にある圧縮後のJNCB及びJNLデータを読み出す。そして、制御プロセッサ143は、その圧縮後のJNCB及びJNLデータを伸張し、解凍後のJNCB及びJNLデータを、上記確保した空き領域に格納する。その後、制御プロセッサ143は、読出し元の領域(圧縮後のJNCB及びJNLデータが記憶されている記憶領域)を解放する。これにより、その領域は空き領域として管理されることになる。
以上が、第五の実施形態についての説明である。なお、圧縮及び/又は解凍は、制御プロセッサ143に代えて又は加えて、ハードウェア回路で行われてもよい。
以上、本発明の幾つかの実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
例えば、第一乃至第五のいずれの実施形態でも、計算機システムは、オープンシステムであってもメインフレームシステムであっても良い。
また、例えば、ストレージシステム125及び/又は161は、NAS(Network Attached Storage)であっても良い。
また、S−VOLは、無くても良い。その場合、R−VOLにアクセスがあった場合の参照先は、S−VOL内のブロックに代えて、P−VOL内のブロック、又は、オンライン更新差分データ要素が記憶されているセグメントである。また、この場合、マーカが受領された時に、オンライン更新差分データが、世代間差分データになることになる。その際、ソート処理として、オンライン更新差分データ要素が、アドレス順にJNLサブエリアから読み出され、別のJNLサブエリアにアドレス順に書き込まれる。S−VOLが有れば、ソート処理がやり易く、S−VOLが無ければ、S−VOLのサイズ分の記憶容量の消費を削減することができる。
本発明の第一の実施形態に係る計算機システムの構成を示す。 第一のストレージシステムにおける記憶領域構成の概要を示す。 JNLデータ要素の格納の概要を示す。 第一のストレージシステム内の制御メモリに記憶されているコンピュータプログラム及び情報を示す。 図4に示した構成管理テーブル、JNLエリア管理テーブル、バックアップ世代管理テーブル及び第一のJNL管理テーブルの例を示す。 オンライン更新差分データ、世代間差分データ及びマージ差分データのうちの世代間差分データを例に採ったデータ管理方式を示す。 ホストライトサイズ設定処理のフローを示す。 P−VOLにライトデータ要素を書き込むライト処理のフローを示す。 マーカ受領及びマーカ受領に応答して行われる処理のフローを示す。 第一の実施形態でのソート処理のフローを示す。 第一の実施形態でのマージ処理のフローである。 第一の実施形態でのマージ処理に関するデータ要素の動きを示す。 リストア処理のフローを示す。 R−VOL管理テーブルを利用したリード処理のフローを示す。 R−VOL管理テーブルを利用したライト処理のフローを示す。 本発明の第二の実施形態においてP−VOLにライトデータ要素を書き込むライト処理のフローを示す。 第二の実施形態でのソート処理のフローを示す。 本発明の第三の実施形態においてP−VOLにライトデータ要素を書き込むライト処理のフローを示す。 第三の実施形態でのソート処理のフローを示す。 R−VOL有りでのソート処理のフローを示す。 第二、第三の実施形態におけるマーカ受領直後のP−VOLのライト処理を示す。 本発明の第四の実施形態でのリストア処理の概要を示す。 第四の実施形態でのP−VOL、R−VOL及びJNL関連エリアの構成例を示す。 第四の実施形態のキャッシュメモリの使い方を示す。 第四の実施形態の一変形例の説明図である。 本発明の第五の実施形態で行われる圧縮処理と解凍処理の概要を示す。
符号の説明
101…ホスト計算機、111…管理サーバ、125…第一のストレージシステム、161…第二のストレージシステム

Claims (14)

  1. 上位装置からライトコマンドとライトデータの一単位であるライトデータ要素とを受け付けるストレージシステムであって、
    第一の論理ボリュームを含んだ一以上の論理ボリュームとジャーナルエリアとの基になる物理記憶デバイスと、
    前記上位装置から前記ライトコマンド及び前記ライトデータ要素を受け付け、前記ライトコマンドから特定される前記第一の論理ボリュームに前記ライトデータ要素を書き込むコントローラと
    を備え、
    前記ジャーナルエリアは、論理ボリュームを構成する複数のブロックのうちのいずれかのブロックに記憶されているデータ要素又はそのブロックに書き込まれるデータ要素であるジャーナルデータ要素が記憶される記憶領域であり、複数のセグメントで構成されており、
    前記コントローラが、
    メモリと、
    前記上位装置から受信するライトデータ要素のサイズであるライト単位サイズを受け付けるサイズ受付部と、
    前記受け付けたライト単位サイズを、前記メモリに設定し、前記ブロックのサイズ及び前記セグメントのサイズが前記ライト単位サイズと同じサイズになるように前記一以上の論理ボリュームの各々の各ブロックと前記ジャーナルエリアを構成する各セグメントを管理するサイズ管理部と
    を有る、
    ストレージシステム。
  2. 前記第一の論理ボリュームの他に、前記第一の論理ボリュームとペアを構成する第二の論理ボリュームがあり、
    前記物理記憶デバイスに基づく記憶領域であるジャーナル管理エリアがあり、
    前記第一の論理ボリュームについて、第一のサブ管理情報が前記ジャーナル管理エリアに記憶され、
    前記第二の論理ボリュームについて、世代毎の第二のサブ管理情報が前記ジャーナル管理エリアに記憶され、
    前記第一のサブ管理情報は、前記第一の論理ボリュームを構成する各ブロックに対応した各情報要素を有する第一の差分管理情報を含み、前記各情報要素は、その情報要素に対応するブロックに更新が発生したか否かを表し、前記各ブロックは、前記設定されたホスト単位サイズであり、
    前記第二のサブ管理情報は、前記第二の論理ボリュームを構成する各ブロックに対応した各情報要素を有する第二の差分管理情報と、データ格納アドレス情報とを含み、前記各情報要素は、その情報要素に対応する記憶領域に更新が発生したか否かを表し、前記各ブロックは、前記設定されたホスト単位サイズであり、前記データ格納アドレス情報は、前記ジャーナルエリアにおけるセグメントのアドレスを表し、
    前記メモリが、前記第一のサブ管理情報と世代毎の前記第二のサブ管理情報とのそれぞれの情報の在り処を表す管理情報を記憶し、
    前記コントローラが、
    前記上位装置から前記ライトコマンド及び前記ライトデータ要素を受け付け、前記ライトコマンドから特定される前記第一の論理ボリューム内のライト先ブロックに前記ライトデータ要素を書き込み、前記第一の差分管理情報における、前記ライト先ブロックに対応した情報要素が未更新を表していれば更新済みに更新するライト処理部と、
    世代確定イベントが発生したことによって前記第一の論理ボリュームの世代(j)が確定した時に、下記(2−1)及び(2−2)を実行する世代確定部と
    (2−1)前記第二の論理ボリュームの世代(j−1)に対応した前記第二の差分管理情報(j−1)を含んだ前記第二のサブ管理情報(j−1)を、前記第二の論理ボリュームについての前記ホスト単位サイズに基づいて前記ジャーナル管理エリア内に追加する、
    (2−2)前記第一の差分管理情報において更新済みを表す各情報要素について、以下の(2−2−1)乃至(2−2−4)を実行する、
    (2−2−1)前記第一の差分管理情報において更新済みを表す情報要素に対応した、前記第二の差分管理情報(j−1)内の情報要素を、更新済みを表す情報要素に更新する、
    (2−2−2)前記第二のサブ管理情報に、データ格納アドレス情報を追加し、前記追加されたデータ格納アドレス情報は、前記第一の差分管理情報において更新済みを表す情報要素に対応したブロックと同じ位置にある、前記第二の論理ボリューム内のブロック、に記憶されているデータ要素の、前記ジャーナルエリアにおける退避先のセグメントのアドレスを表している、
    (2−2−3)前記第一の差分管理情報において更新済みを表す情報要素に対応したブロックと同じ位置にある、前記第二の論理ボリューム内のブロック、に記憶されているデータ要素を、前記追加されたデータ格納アドレス情報が表す、前記ジャーナルエリア内のセグメントに、退避する、
    (2−2−4)前記データ要素の退避元である、前記第二の論理ボリューム内のセグメントに、前記第一の差分管理情報において更新済みを表す情報要素に対応した、前記第一の論理ボリュームに関連するデータ要素を、書込む、
    を有し、
    前記(2−2−3)で前記ジャーナルエリアに退避されたデータ要素の集合が、世代(j−1)の前記第二の論理ボリュームと世代(j−2)の前記第二の論理ボリュームとの差分を表す世代間差分データ(j−1)である、
    請求項1記載のストレージシステム。
  3. 前記(2−2−2)において、前記ジャーナルエリアにおける、前記退避先のセグメントは、直前回に退避先とされたセグメントに連続したセグメントであり、
    前記世代確定部は、前記(2−2−1)乃至(2−2−4)を、前記第一の論理ボリュームのブロックのアドレス順に実行する、
    請求項2記載のストレージシステム。
  4. 前記(2−2−4)における、前記第一の論理ボリュームに関連するデータ要素は、以下の(4−1)又は(4−2)である、
    (4−1)前記ジャーナルエリア内に記憶された、前記第一の論理ボリュームについてのジャーナルデータ要素であって、前記第一の論理ボリュームに書き込まれるライトデータ要素であるアフタージャーナルデータ要素、
    (4−2)前記第一の差分管理情報において更新済みを表す情報要素に対応した、前記第一の論理ボリューム内の記憶領域、に記憶されているデータ要素、
    請求項2又は3記載のストレージシステム。
  5. 前記コントローラが、複数の世代の前記第二のサブ管理情報及び世代間差分データをマージするマージ処理部を更に有し、
    前記マージ後の第二のサブ管理情報及び世代間差分データには、同一のブロックに対応した情報要素及び世代間差分データ要素については、より古い世代の情報要素及び世代間差分データ要素が含まれ、その世代より新しい情報要素及び世代間差分データ要素が含まれていない、
    請求項2乃至4のうちのいずれか1項に記載のストレージシステム。
  6. 前記コントローラが、リストア対象世代の前記第一の論理ボリュームを表す第三の論理ボリュームを準備するリストア処理部を更に有する、
    請求項2乃至5のうちのいずれか1項に記載のストレージシステム。
  7. 前記リストア処理部が、リストア対象世代から最新世代までの前記第二のサブ管理情報を用いて、仮想的な論理ボリュームである前記第三の論理ボリュームを構成する各ブロックに対応した各参照先アドレスを有したリストア管理情報を作成し、前記第三の論理ボリュームの或るブロックを指定したリードの要求を上位装置から受けた場合、前記或るブロックについて有効な参照先アドレスがあれば、その参照先アドレスが示すセグメントからデータ要素を読み出して、前記上位装置に提供し、前記或るブロックについて有効な参照先アドレスがなければ、前記第一又は第二の論理ボリュームにおける、前記或るブロックと同じ位置にあるブロック、からデータ要素を読み出して、前記上位装置に提供する、
    請求項6記載のストレージシステム。
  8. 前記第三の論理ボリュームに記憶されているデータが、前記ライト単位サイズよりも大きいスロットサイズ単位がバックアップされるようになっており、
    前記メモリには、キャッシュメモリが含まれており、
    前記リストア処理部が、前記キャッシュメモリに、前記スロットサイズ分の領域であるスロットを確保し、前記確保したスロットに、前記リストア対象世代に該当する複数のデータ要素を格納し、スロットに格納されたデータ要素群である前記スロットサイズ分のデータを、バックアップする、
    請求項6記載のストレージシステム。
  9. 前記コントローラが、圧縮対象世代に属する前記第二のサブ管理情報及び世代間差分データが圧縮された圧縮後情報を記憶するための第一の領域を、前記第一又は第二の物理記憶デバイスから確保し、圧縮対象世代に属する前記第二のサブ管理情報及び世代間差分データが記憶されている第二の領域から、前記圧縮対象世代に属する前記第二のサブ管理情報及び世代間差分データを読み出し、読み出された第二のサブ管理情報及び世代間差分データを圧縮することで前記圧縮後情報を生成し、生成された圧縮後情報を前記第二の領域に格納し、前記第二の領域を空き領域として管理する、
    請求項2乃至8のうちのいずれか1項に記載のストレージシステム。
  10. 前記コントローラが、前記論理ボリュームの各世代について、サブ管理情報の在り処を表すジャーナル管理情報を前記メモリに記憶し、前記物理記憶デバイスが基になっているジャーナル管理エリアに、サブ管理情報を記憶し、
    前記サブ管理情報は、前記論理ボリュームを構成する各ブロックに対応した各情報要素を有する差分管理情報と、データ格納アドレス情報とを含み、前記各情報要素は、その情報要素に対応するブロックに更新が発生したか否かを表し、前記データ格納アドレス情報は、対応するジャーナルデータ要素が記憶されている、前記ジャーナルエリアにおけるセグメント、のアドレスを表す、
    請求項1記載のストレージシステム。
  11. 前記コントローラが、世代確定イベントが発生した時に、前記第二の論理ボリューム内の複数の更新対象ブロックに記憶されている複数のデータ要素をブロックのアドレス順に前記ジャーナルエリアに退避し、その際、退避先のセグメントを、直前回に退避先とされたセグメントに連続したセグメントとする、
    請求項1又は10記載のストレージシステム。
  12. 前記コントローラが、リストア対象世代から最新世代までのサブ管理情報を用いて、仮想的な論理ボリュームである第三の論理ボリュームを構成する各ブロックに対応した各参照先アドレスを有したリストア管理情報を作成し、前記第三の論理ボリュームの或るブロックを指定したリードの要求を上位装置から受けた場合、前記或るブロックについて有効な参照先アドレスがあれば、その参照先アドレスが示すセグメントからデータ要素を読み出して、前記上位装置に提供し、前記或るブロックについて有効な参照先アドレスがなければ、前記第一の論理ボリューム又はそれのフルバックアップである第二の論理ボリュームにおける、前記或るブロックと同じ位置にあるブロック、からデータ要素を読み出して、前記上位装置に提供し、
    前記サブ管理情報は、前記論理ボリュームを構成する各ブロックに対応した各情報要素を有する差分管理情報と、データ格納アドレス情報とを含み、前記各情報要素は、その情報要素に対応するブロックに更新が発生したか否かを表し、前記データ格納アドレス情報は、対応するジャーナルデータ要素が記憶されている、前記ジャーナルエリアにおけるセグメント、のアドレスを表す、
    請求項1又は10及び11のうちのいずれか1項に記載のストレージシステム。
  13. 前記物理記憶デバイスが、前記一以上の論理ボリュームとジャーナルエリアの他に、別の上位装置についての第三の論理ボリュームを含んだ別の一以上の論理ボリュームの基になっており、
    前記ジャーナルエリアは、前記一以上の論理ボリュームについての第一のジャーナルサブエリアと、前記別の一以上の論理ボリュームについての第二のジャーナルサブエリアとを含み、
    前記サイズ受付部が、前記ライト単位サイズの他に、前記別の上位装置から受信するライトデータ要素のサイズである別のライト単位サイズを受け付け、
    前記サイズ管理部が、
    前記上位装置について、前記受け付けたライト単位サイズを、前記メモリに設定し、前記一以上の論理ボリュームの各々のブロックのサイズ及び前記第一のジャーナルサブエリアのセグメントのサイズが前記ライト単位サイズと同じサイズになるように前記一以上の論理ボリュームの各々の各ブロックと前記第一のジャーナルサブエリアを構成する各セグメントを管理し、
    前記別の上位装置について、前記受け付けた別のライト単位サイズを、前記メモリに設定し、前記別の一以上の論理ボリュームの各々のブロックのサイズ及び前記第二のジャーナルサブエリアのセグメントのサイズが前記別のライト単位サイズと同じサイズになるように前記別の一以上の論理ボリュームの各々の各ブロックと前記第二のジャーナルサブエリアを構成する各セグメントを管理する、
    請求項1乃至12のうちのいずれか1項に記載のストレージシステム。
  14. 前記サイズ管理部は、前記ライト単位サイズが受け付けられた場合に、前記ブロックのサイズ及び前記セグメントのサイズが前記ライト単位サイズと同じサイズになるように前記一以上の論理ボリュームの各々を複数のブロックに区切り且つ前記ジャーナルエリアを複数のセグメントに区切る、
    請求項1乃至13のうちのいずれか1項に記載のストレージシステム。
JP2008151288A 2007-10-24 2008-06-10 ストレージシステム Expired - Fee Related JP5275691B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2008151288A JP5275691B2 (ja) 2007-10-24 2008-06-10 ストレージシステム
US12/190,925 US8285953B2 (en) 2007-10-24 2008-08-13 Storage system group
US12/275,289 US20090125692A1 (en) 2007-10-24 2008-11-21 Backup system and method
US13/606,280 US8607012B2 (en) 2007-10-24 2012-09-07 Storage system group

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2007276254 2007-10-24
JP2007276254 2007-10-24
JP2008151288A JP5275691B2 (ja) 2007-10-24 2008-06-10 ストレージシステム

Publications (2)

Publication Number Publication Date
JP2009123187A JP2009123187A (ja) 2009-06-04
JP5275691B2 true JP5275691B2 (ja) 2013-08-28

Family

ID=40815231

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008151288A Expired - Fee Related JP5275691B2 (ja) 2007-10-24 2008-06-10 ストレージシステム

Country Status (1)

Country Link
JP (1) JP5275691B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8627034B2 (en) 2011-06-15 2014-01-07 Hitachi, Ltd. Storage control apparatus and storage control method
JP5776474B2 (ja) 2011-09-29 2015-09-09 富士通株式会社 ストレージ装置、ストレージ制御装置およびコピー先データアクセス方法
JP2015026112A (ja) 2013-07-24 2015-02-05 富士通株式会社 ストレージ制御装置、制御プログラム及び制御方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007200182A (ja) * 2006-01-30 2007-08-09 Hitachi Ltd ストレージ装置、及びストレージシステム
JP2007219657A (ja) * 2006-02-14 2007-08-30 Hitachi Ltd ストレージシステム及びそのリカバリ方法
JP5089901B2 (ja) * 2006-03-28 2012-12-05 株式会社日立製作所 記憶制御装置及び記憶制御装置の制御方法

Also Published As

Publication number Publication date
JP2009123187A (ja) 2009-06-04

Similar Documents

Publication Publication Date Title
US20210157523A1 (en) Storage system
JP4749112B2 (ja) 記憶制御システム及び方法
US8607012B2 (en) Storage system group
US8255647B2 (en) Journal volume backup to a storage device
US8060468B2 (en) Storage system and data recovery method
US8200631B2 (en) Snapshot reset method and apparatus
JP5257672B2 (ja) ジャーナルの階層を管理する計算機システム及び方法
JP5367086B2 (ja) 計算機システムとそのデータ制御方法
JP5275692B2 (ja) ストレージシステム群
US20090125692A1 (en) Backup system and method
US10817209B2 (en) Storage controller and storage control method
US10739999B2 (en) Computer system having data amount reduction function and storage control method
JP2009146389A (ja) バックアップシステム及び方法
US9164941B2 (en) Storage system group
US7152147B2 (en) Storage control system and storage control method
US11288006B2 (en) Storage system and volume copying method where changes to address conversion table is rolled back
JP5275691B2 (ja) ストレージシステム
US20210232466A1 (en) Storage system and restore control method
US20240176520A1 (en) Storage system and storage control method
US11531474B1 (en) Storage system and data replication method in storage system
US20200387477A1 (en) Storage system and snapshot management method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100723

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120329

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120410

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120611

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120821

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121017

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130507

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130516

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5275691

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees