JP7309025B2 - ストレージシステム及びストレージシステムにおけるデータ複製方法 - Google Patents

ストレージシステム及びストレージシステムにおけるデータ複製方法 Download PDF

Info

Publication number
JP7309025B2
JP7309025B2 JP2022124525A JP2022124525A JP7309025B2 JP 7309025 B2 JP7309025 B2 JP 7309025B2 JP 2022124525 A JP2022124525 A JP 2022124525A JP 2022124525 A JP2022124525 A JP 2022124525A JP 7309025 B2 JP7309025 B2 JP 7309025B2
Authority
JP
Japan
Prior art keywords
data
snapshot
meta information
information
area
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.)
Active
Application number
JP2022124525A
Other languages
English (en)
Other versions
JP2022145781A (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
Priority claimed from JP2020130440A external-priority patent/JP7121079B2/ja
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2022124525A priority Critical patent/JP7309025B2/ja
Publication of JP2022145781A publication Critical patent/JP2022145781A/ja
Priority to JP2023110267A priority patent/JP2023118859A/ja
Application granted granted Critical
Publication of JP7309025B2 publication Critical patent/JP7309025B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Description

本発明は、ストレージシステム及びストレージシステムにおけるデータ複製方法に関する。
近年、データ利活用ニーズが高まり、データ複製の機会が増えている。これに伴い、ストレージシステムにおいて、Snapshot機能がますます重要になっている。従来から、Snapshotの代表的な実現手段にRedirect on Write(RoW)方式がある(例えば特許文献1参照)。RoW方式には、データやメタ情報のコピーがないため、Snapshot作成時のI/O性能に対する影響が小さいという利点がある。RoW方式は、AFA(All Flash Array)装置で多く採用されている。
RoW方式は、データを追い書きする方式である。追い書きとは、ストレージシステムにデータをライトする際、ライト前に格納されていたデータを上書きせず、新規領域にライトデータを格納し、新規領域に格納したデータを参照するようにメタ情報を書き換えるデータ格納方式のことである。メタ情報はツリー構造で管理される。ある複製元ボリュームのSnapshotを取得すると、その時点の複製元ボリュームのメタ情報ツリーのRootをSnapshotのメタ情報ツリーのRootから参照する。この時点で、複製元ボリュームのRootはSnapshotから参照されているため、書き換え不可能になりリードのみ許可される。又、複製元ボリュームへのライトに伴い複製元に新たなRootが用意され、更新データの格納場所を参照する新たなメタ情報を作成し新Root配下に接続する。さらに、ライトされていない領域のデータ格納位置を特定できるように新Rootから旧Rootを参照する。すなわち、Snapshot取得に伴いメタ情報を直接書き換えることはできず、メタ情報も追い書きされる。
米国特許第9646039号明細書
しかしながら従来技術のRoW方式では、リード時にメタ情報のツリーから所望のデータ及びメタ情報を探索する必要があり、リード性能(特にレスポンス)が悪いという問題がある。また、ライトが増えるとツリー階層が深くなり、ツリー段数を減らす非同期処理が動作し、I/O性能に影響が出てくるという問題がある。
また、ツリーのRoot以外のメタ情報は、複数のボリューム及びSnapshotで共有される。しかし、Rootのメタ情報はボリューム及びSnapshot毎の情報である。このため、特定ボリュームやSnapshotに負荷が偏った場合、各ボリューム及び各Snapshotをそれぞれ制御する複数のコントローラのうち特定のコントローラに負荷が集中し、マルチコントローラの資源を使い切れないという問題がある。
本発明は上記の課題に鑑みてなされたもので、ストレージシステムにおいてSnapshotの操作性能とI/O性能を両立することを目的とする。
上記目的を達成するために、複数のコントローラを有し、論理ボリュームの複製であるスナップショットを作成可能なストレージシステムであって、前記コントローラには、担当する前記論理ボリューム又は前記スナップショットが割り当てられ、前記論理ボリューム又は前記スナップショットのデータを格納する追記領域、及び追記領域に追記したデータのメタ情報を格納するメタ情報領域が割り当てられ、前記論理ボリュームのデータを追記領域に追記するデータ制御部と、前記データ制御部により前記追記領域に追記されたデータのメタ情報をメタ情報領域に格納するデータ管理部と、を備え、前記メタ情報は、前記論理ボリュームにおけるデータの位置情報と前記追記領域における前記データの位置情報とを関係付ける第1階層のメタ情報及び第2階層のメタ情報からなり、前記第1階層のメタ情報は、前記論理ボリュームにおけるデータの位置情報と該データに関する前記第2階層のメタ情報の格納位置とを関係付ける情報であり、前記第2階層のメタ情報は、前記追記領域における前記データの位置情報を管理する情報であり、前記論理ボリューム、又は前記スナップショットのデータを格納する前記追記領域及び前記論理ボリューム、又は前記スナップショットのデータのメタ情報を格納する前記メタ情報領域は、複数のデータストアボリュームに割り当てられ、前記第1階層のメタ情報及び前記第2階層のメタ情報は、複数の前記データストアボリュームのそれぞれに分散配置されることを特徴とする。
本発明によれば、ストレージシステムにおいてSnapshotの操作性能とI/O性能を両立できる。
実施例に係るストレージシステムの論理構成の概要の説明図。 実施例1に係る計算機システムのハードウェア構成の説明図。 ストレージシステムが使用するプログラム及び情報の説明図。 ディレクトリテーブルの構成の説明図。 マッピングテーブルの構成の説明図。 ボリューム管理テーブルの構成の説明図。 ディレクトリ領域管理テーブルの構成の説明図。 マッピング領域管理テーブルの構成の説明図。 ディレクトリ領域割り当てテーブルの構成の説明図。 マッピング領域割り当てテーブルの構成の説明図。 Snapshot世代管理テーブルの構成の説明図。 VOL作成処理の処理手順を示すフローチャート。 Snapshot作成処理の処理手順を示すフローチャート。 追記処理の処理手順を示すフローチャート。 リード処理の処理手順を示すフローチャート。 フロントエンドライト処理(PVOL/Snapshot共通)の処理手順を示すフローチャート。 バックエンドライト処理の処理手順を示すフローチャート。 実施例1のリストア処理の処理手順を示すフローチャート。 実施例1のリシンク処理の処理手順を示すフローチャート。 PVOL/Snapshot削除処理の処理手順を示すフローチャート。 実施例1の効果を説明するための図(その1)。 実施例1の効果を説明するための図(その2)。 実施例2のリストア処理の処理手順を示すフローチャート。 実施例2のリシンク処理の処理手順を示すフローチャート。
以下、本発明の実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。また、発明の構成に必須だが周知である構成については、図示及び説明を省略する場合がある。
以下の説明において、「xxxテーブル」といった表現により、入力に対して出力が得られる情報を説明することがあるが、この情報は、どのような構造のデータでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。
また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
また、以下の説明において、「プログラム」を主語として処理を説明する場合がある。プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部及び/又はインターフェース部などを用いながら行うため、処理の主語が、プロセッサ部(或いは、そのプロセッサ部を有するコントローラのようなデバイス)とされてもよい。
プログラムは、計算機のような装置にインストールされてもよいし、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体にあってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
また、「プロセッサ部」は、1又は複数のプロセッサである。プロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、GPU(Graphics Processing Unit)のような他種のプロセッサでもよい。また、プロセッサは、シングルコアでもよいしマルチコアでもよい。また、プロセッサは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサでもよい。
また、以下の説明において、種々の対象の識別情報として、識別番号が使用されるが、識別番号以外の種類の識別情報(例えば、英字や符号を含んだ識別子)が採用されてもよい。以下の説明において、“#”は番号を表し、例えば“xxx#”は、番号で識別されるxxxを表す。
また、以下の説明において、同種の要素を区別しないで説明する場合には、参照符号(又は、参照符号のうちの共通符号)を使用し、同種の要素を区別して説明する場合は、要素の識別番号(又は参照符号)を使用することがある。また各図に示す各要素の数は一例であって、図示に限られるものではない。
図1は、実施例に係るストレージシステム201の論理構成の概要の説明図である。ストレージシステム201は、Snapshotを作成する際、RoW(Redirect on Write)方式を用いるストレージシステムである。図1に示すように、ストレージシステム201は、論理構成として、PVOL(Primary Volume)100、Snapshot101、DSVOL(Data Store Volume)102、及びPool107を有する。
PVOL100は、ホスト装置に提供される論理ボリュームである。Snapshot101は、RoW方式により作成されたPVOL100の複製ボリュームであり、ホスト装置に提供される。
Pool107は、物理ドライブ(不図示)から物理記憶領域が割り当てられている。DSVOL102は、Pool107から切り出される論理記憶領域で、複数のDSVOL102-i(i=0,1,・・・,n-1(nはPool107毎に固定のDSVOL数))を含む論理記憶領域である。DSVOL102-iは、全て同一容量である。
DSVOL102には、PVOL100の管理情報(メタ情報)を保存するPVOL用のディレクトリテーブル103が、DSVOL102-iのそれぞれに、ディレクトリテーブル103-i(i=0,1,・・・,n-1)として分散配置される。PVOL100の管理情報は、2段階層のツリー構成のマッピング情報であり、PVOL用のディレクトリテーブル103は第1階層のマッピング情報に該当する。
PVOL用のディレクトリテーブル103は、ディレクトリテーブル103-i(i=0,1,・・・,n-1)のグループであり、PVOL100毎に設けられる。ディレクトリテーブル103にはディレクトリ#が付与される。PVOLの容量によって複数のディレクトリテーブル103が1つのPVOLに割り当てられることがある。その場合、ディレクトリ#も複数割り当てられる。
PVOL用のディレクトリテーブル103は、PVOL100上のデータ111-j(j=0,1,2)のPVOL内アドレスを、マッピングテーブル105が格納されるDSVOL102内のアドレスへ変換するテーブルである。
またDSVOL102には、Snapshot101の管理情報(メタ情報)を保存するSS(SnapShot)用のディレクトリテーブル104が、DSVOL102-iのそれぞれに、ディレクトリテーブル104-i(i=0,1,・・・,n-1)として分散配置される。SS用のディレクトリテーブル104のうちのディレクトリテーブル104-iは、PVOL用のディレクトリテーブル103のうちのディレクトリテーブル103-iのコピーである。
SS用のディレクトリテーブル104は、ディレクトリテーブル104-i(i=0,1,・・・,n-1)のグループであり、Snapshot101毎に設けられる。ディレクトリテーブル104にはディレクトリ#が付与される。Snapshotの容量によって複数のディレクトリテーブル104が1つのSnapshotに割り当てられることがある。その場合、ディレクトリ#も複数割り当てられる。SS用のディレクトリテーブル104は、PVOL用のディレクトリテーブル103と同一のテーブル構成である。
SS用のディレクトリテーブル104は、Snapshot101上のデータ111-j(j=1,2,3)のSnapshot内アドレスを、マッピングテーブル105が格納されるDSVOL102内のアドレスへ変換するテーブルである。
またDSVOL102には、PVOL100及びSnapshot101の管理情報(メタ情報)を保存するマッピングテーブル105が、DSVOL102-iのそれぞれに、マッピングテーブル105-i(i=0,1,・・・,n-1)として分散配置される。マッピングテーブル105は、上述の2段階層のツリー構成のマッピング情報のうちの第2階層のマッピング情報に該当する。
マッピングテーブル105は、マッピングテーブル105-i(i=0,1,・・・,n-1)のグループであり、PVOL100毎に設けられる。複数のマッピングテーブル105を、マッピング#のように番号で区別する。マッピング#は、Snapshotツリー(あるPVOLをRootとしたSnapshotのグループ)毎に割り当てられ、PVOL又はSnapshotへのライトによるデータ容量の増加に応じて増える。
マッピングテーブル105は、データ111-j(j=0,1,2,3)のPVOL/Snapshot内アドレスを、追記領域106内アドレスへ変換するテーブルである。
またDSVOL102には、PVOL100及びSnapshot101のデータを格納する追記領域106が、DSVOL102-iのそれぞれに、追記領域106-i(i=0,1,・・・,n-1)として分散配置される。
以上のように、各DSVOL102-iには、1つ以上の(PVOL用の)ディレクトリテーブル103-i、1つ以上の(SS用の)ディレクトリテーブル104-i、1つ以上のマッピングテーブル105-i、及び追記領域106-iが配置される。
図2は、実施例1に係る計算機システム100のハードウェア構成の説明図である。計算機システム100は、ストレージシステム201、サーバシステム202、及び管理システム203を備える。ストレージシステム201とサーバシステム202とは、FC(Fiber Channel)ネットワーク204を介して接続される。ストレージシステム201と管理システム203とは、IP(Internet Protocol)ネットワーク205を介して接続される。なお、FCネットワーク204及びIPネットワーク205は、同一の通信ネットワークであってもよい。
ストレージシステム201は、複数のストレージコントローラ210と、複数のPDEV220とを備える。ストレージコントローラ210には、物理ドライブであるPDEV220が接続されている。1つのストレージコントローラ210に対して、1又は複数のDSVOL102-i(i=0,1,・・・,n-1)が割り当てられている。
ストレージコントローラ210は、1つ以上のプロセッサ211と、1つ以上のメモリ212と、P-I/F213と、S-I/F214と、M-I/F215とを備える。
プロセッサ211は、プロセッサ部の一例である。プロセッサ211は、圧縮及び伸張を行うハードウェア回路を含んでいてもよい。本実施例では、プロセッサ211は、Snapshot作成、リストア、リシンク、圧縮、及び伸張に係る制御等を行う。
メモリ212は、記憶部の一例である。メモリ212は、プロセッサ211が実行するプログラム、プロセッサ211が使用するデータ等を記憶する。プロセッサ211は、メモリ212に格納されているプログラムを実行する。なお、本実施例では、例えば、メモリ212及びプロセッサ211の組でメモリが二重化されている。
P-I/F213、S-I/F214及びM-I/F215は、インターフェース部の一例である。
P-I/F213は、PDEV220とストレージコントローラ210との間のデータのやり取りを仲介する通信インターフェースデバイスである。P-I/F213には、複数のPDEV220が接続される。
S-I/F214は、サーバシステム202とストレージコントローラ210との間のデータのやり取りを仲介する通信インターフェースデバイスである。S-I/F214に、FCネットワーク204を介して、サーバシステム202が接続される。
M-I/F215は、管理システム203とストレージコントローラ210の間のデータのやり取りを仲介する通信インターフェースデバイスである。M-I/F215に、IPネットワーク205を介して、管理システム203が接続される。
サーバシステム202は、1つ以上のホスト装置を含んで構成される。サーバシステム202は、ストレージコントローラ210に対して、I/O先を指定したI/O要求(ライト要求又はリード要求)を送信する。I/O先は、例えば、LUN(Logical Unit Number)のような論理ボリューム番号、LBA(Logical Block Address)のような論理アドレス等である。
管理システム203は、1つ以上の管理装置を含んで構成される。管理システム203は、ストレージシステム201を管理する。
図3は、ストレージシステム201が使用するプログラム及び情報の説明図である。メモリ212は、ローカルメモリ300、キャッシュメモリ301、共有メモリ302等のメモリ領域を含む。これらのメモリ領域のうちの少なくとも1つは、独立したメモリであってもよい。ローカルメモリ300は、このローカルメモリ300を含むメモリ212と同一組に属するプロセッサ211により使用される。
ローカルメモリ300には、ボリューム作成プログラム303、Snapshot作成プログラム304、リードプログラム305、フロントエンドライトプログラム306、バックエンドライトプログラム307、リストアプログラム308、リシンクプログラム309、及びPVOL/Snapshot削除プログラム310が格納される。これらのプログラムは、複数のストレージコントローラ210毎に設けられ、互いに協働して目的の処理を行う。これらのプログラムについては後述する。
キャッシュメモリ301には、PDEV220に対してライト又はリードされるデータセットが一時的に格納される。
共有メモリ302は、この共有メモリ302を含むメモリ212と同一組に属するプロセッサ211、及び異なる組に属するプロセッサ211の両方により使用される。共有メモリ302には、管理情報が格納される。
管理情報は、ボリューム管理テーブル311、ディレクトリ領域管理テーブル312、マッピング領域管理テーブル313、ディレクトリ領域割り当てテーブル314、マッピング領域割り当てテーブル315、及びSnapshot世代管理テーブル316を含む。これらのテーブルについては、図を参照して後述する。
図4は、ディレクトリテーブル103-i,104-i(i=0,1,・・・,n-1)の構成の説明図である。PVOL用のディレクトリテーブル103-iとSS用のディレクトリテーブル104-iは同一構成かつ同一データサイズであり、それぞれDSVOL102-iに分散配置される。各ディレクトリテーブル103-i,104-iの1つのエントリは、PVOL100の論理データの粒度(例えば256KB)単位のデータに対応する。すなわちディレクトリテーブル103,104は、PVOL100の論理データの粒度を単位として、複数のDSVOL102-iに分散配置される。ディレクトリテーブル104-i(i=0,1,・・・,n-1)は、DSVOL102-iのストレージコントローラ210の制御により、ディレクトリテーブル103-i(i=0,1,・・・,n-1)がコピーされたテーブルである。
ディレクトリテーブル103-i,104-iは、PVOL/Snapshot内アドレス400及び参照先アドレス(マッピング領域内アドレス)401を有する。PVOL/Snapshot内アドレス400は、ディレクトリテーブル103-iの場合はPVOL100内での対象データの格納論理アドレスであり、ディレクトリテーブル104-iの場合はSnapshot101内での対象データの格納論理アドレスである。参照先アドレス(マッピング領域内アドレス)401は、マッピングテーブル105-iへのポインタ情報である。PVOL/Snapshot内アドレス400には上限値(図4の例では1000000)があり、上限値を超過すると新たなグループ(ディレクトリ#)のディレクトリテーブルが作成される。
またアクセスしたPVOL/Snapshot内アドレス400と参照先アドレス(マッピング領域内アドレス)401の対応関係を格納しているテーブルが、該当のディレクトリ#の何れのディレクトリテーブル103-i,104-iであるかは、PVOL/Snapshot内アドレス400をDSVOLの数nで割った剰余で求められる。
参照先アドレス(マッピング領域内アドレス)401は、当該ディレクトリテーブル103-i,104-iに対応付けられたマッピングテーブル105-iのマッピング領域内アドレス500に対応する。
図5は、マッピングテーブル105-i(i=0,1,・・・,n-1)の構成の説明図である。マッピングテーブル105-iは、マッピング領域内アドレス500、参照先アドレス(追記領域内アドレス)501、及び圧縮後容量502を有する。
マッピング領域内アドレス500は、当該マッピングテーブル105-iに対応付けられたディレクトリテーブル103-i,104-iの参照先アドレス(マッピング領域内アドレス)401である。参照先アドレス(追記領域内アドレス)501は、対象データが格納される追記領域106内のアドレスである。圧縮後容量502は、PVOL100又はSnapshot101の対象データが、追記領域106-iに格納される際の圧縮後のデータ量である。
図6は、ボリューム管理テーブル311の構成の説明図である。ボリューム管理テーブル311は、PVOL100、Snapshot101、及びDSVOL102等のボリュームを管理するテーブルである。ボリューム管理テーブル311は、VOL#600、属性601、ディレクトリ#602、マッピング#603、容量604、及びPool#605を有する。
VOL#600は、ボリュームを識別する番号である。属性601は、VOL#600で識別されるボリュームの種別であり、PVOL、Snapshot、DSVOL等がある。ディレクトリ#は、VOL#600で識別されるボリュームに割り当てられたディレクトリテーブルのグループの番号である。
ディレクトリ#として、当該ボリュームの容量に応じて、DSVOL102上の領域が複数割り当てられる。例えば図6では、VOL#が0のPVOLには、ディレクトリ#が0,10,200のPVOL用のディレクトリテーブルのグループが割り当てられる。またVOL#が1のSnapshotには、ディレクトリ#が1,5,20のSnapshot用のディレクトリテーブルのグループが割り当てられる。DSVOL102のディレクトリ#602は、NULLである。
マッピング#603は、VOL#600で識別されるボリュームに割り当てられるマッピングテーブルのグループの番号である。PVOL100をコピーしたSnapshot101のマッピング#は、複写元のPVOLと共通である。例えば図6では、VOL#が0,1の各ボリュームには、マッピング#が2,5,10のマッピングテーブルのグループが割り当てられる。DSVOL102のマッピング#603は、NULLである。
容量604は、VOL#600で識別されるボリュームの容量である。Pool#605は、VOL#600で識別されるボリュームが切り出されるPoolの番号である。
図7は、ディレクトリ領域管理テーブル312の構成の説明図である。ディレクトリ領域管理テーブル312は、DSVOL102上における各ディレクトリ#の先頭アドレスを管理するテーブルである。ディレクトリ領域管理テーブル312は、ディレクトリ#700及びディレクトリ領域先頭アドレス701を有する。例えばディレクトリ#が0のディレクトリには、同一のDSVOL102上のアドレス50を先頭アドレスとする領域が確保されている。
対象データのPVOL/Snapshot内アドレスを、1つのディレクトリテーブルの管理可能容量で除算した商から、当該VOL/Snapshot内のディレクトリ#の通番が求まる。ディレクトリ#700は、図6のディレクトリ#602を参照し、ディレクトリ#の通番から求められる。
図8は、マッピング領域管理テーブル313の構成の説明図である。マッピング領域管理テーブル313は、DSVOL102上における各マッピング#の先頭アドレスを管理するテーブルである。マッピング領域管理テーブル313は、マッピング#800及びマッピング領域先頭アドレス801を有する。
図9は、ディレクトリ領域割り当てテーブル314の構成の説明図である。ディレクトリ領域割り当てテーブル314は、DSVOL102上のディレクトリ領域先頭アドレス900に割り当てられている各ディレクトリ#を管理するテーブルであり、ディレクトリ領域管理テーブル312の逆引きテーブルである。ディレクトリ領域割り当てテーブル314は、ディレクトリ領域先頭アドレス900及び割り当てディレクトリ#901を有する。
図10は、マッピング領域割り当てテーブル315の構成の説明図である。マッピング領域割り当てテーブル315は、DSVOL102上のマッピング領域先頭アドレス1000に割り当てられている各マッピング#を管理するテーブルであり、マッピング領域管理テーブル313の逆引きテーブルである。マッピング領域割り当てテーブル315は、マッピング領域先頭アドレス1000及び割り当てマッピング#1001を有する。
図11は、Snapshot世代管理テーブル316の構成の説明図である。Snapshot世代管理テーブル316では、複製元であるPVOL100のPVOL#毎に、Snapshotの最新世代が管理される。Snapshot世代管理テーブル316は、PVOL#1100、最新世代#1101、世代#1102、Snapshot作成時刻1103、Snapshot#1104、及び状態1105を有する。Snapshot世代管理テーブル316は、PVOL#毎に例えば1024個の世代を管理する(世代#=0~1023)。
Snapshot世代管理テーブル316では、各PVOL#のSnapshot作成毎に最新世代#がインクリメントされ、最新世代#1101に該当するSnapshot作成時刻1103、Snapshot#1104、及び状態1105が更新される。状態1105には、PVOLのSnapshot作成後に、Snapshotに対するI/Oを不可としつつPVOLとSnapshotのデータを同期させるPAIRがある。また状態1105には、PVOLとSnapshotのデータを同期させないSUSPEND(分割)がある。
図12は、VOL作成処理の処理手順を示すフローチャートである。VOL作成処理は、管理システム203からの指示に応じて、ボリューム作成プログラム303によって実行される。
先ずS1200では、ボリューム作成プログラム303は、指定条件(ボリュームの容量等)を充足するPVOLのディレクトリ領域及びマッピング領域の確保が各DSVOL102-iで可能かを、各DSVOL102-iを制御する全てのストレージコントローラ210により確認する。ボリューム作成プログラム303は、S1200で領域確保が可能と判定された場合(S1201Yes)にS1202へ処理を移し、S1200で領域確保が不可能と判定された場合(S1201No)にVOL作成処理を終了する。
S1202では、ボリューム作成プログラム303は、S1201で割り当て可能とされた当該PVOLに割り当てるディレクトリ領域の先頭アドレス及び割り当てディレクトリ#を決定する。ボリューム作成プログラム303は、決定したディレクトリ領域の先頭アドレス及び割り当てディレクトリ#を追記してディレクトリ領域割り当てテーブル314を更新する。
次にS1203では、ボリューム作成プログラム303は、S1201で割り当て可能とされた当該PVOLに割り当てるマッピング領域の先頭アドレス及び割り当てマッピング#を決定する。ボリューム作成プログラム303は、決定したマッピング領域の先頭アドレス及び割り当てマッピング#を追記してマッピング領域割り当てテーブル315を更新する。
次にS1204では、ボリューム作成プログラム303は、S1202で更新したディレクトリ領域割り当てテーブル314のディレクトリ領域先頭アドレス900の値をディレクトリ領域先頭アドレス701の値とし、割り当てディレクトリ#901の値をディレクトリ#700の値として、ディレクトリ領域管理テーブル312を更新する。
次にS1205では、ボリューム作成プログラム303は、S1203で更新したマッピング領域割り当てテーブル315のマッピング領域先頭アドレス1000の値をマッピング領域先頭アドレス801の値とし、割り当てマッピング#1001の値をマッピング#800の値として、マッピング領域管理テーブル313を更新する。
次にS1205では、ボリューム作成プログラム303は、本VOL作成処理で作成された属性=PVOLのディレクトリ#、マッピング#、容量、及びPool#を含むボリューム情報をボリューム管理テーブル311に追記して更新する。
図13は、Snapshot作成処理の処理手順を示すフローチャートである。Snapshot作成処理は、管理システム203からの指示に応じて、Snapshot作成プログラム304によって実行される。
先ずS1300では、Snapshot作成プログラム304は、Snapshot作成対象のPVOLである複製元VOLのVOL#を受領する。次にS1301では、Snapshot作成プログラム304は、S1300で受領した複製元VOLへデステージされていないダーティデータがキャッシュメモリ301にあるかを判定する。Snapshot作成プログラム304は、複製元VOLへデステージされていないダーティデータがある場合(S1301Yes)にS1302へ処理を移し、ダーティデータがない場合(S1301No)にS1303へ処理を移す。S1302では、Snapshot作成プログラム304は、ダーティデータの追記処理を行うが、詳細は図14を参照して後述する。
S1303では、Snapshot作成プログラム304は、ボリューム管理テーブル311から、複製元VOLの容量及びディレクトリ#を取得する。次にS1304では、Snapshot作成プログラム304は、複製元VOLの複製であるSnapshot(複製先)のディレクトリ領域がDSVOL102で確保可能か確認する。Snapshot作成プログラム304は、Snapshot(複製先)のディレクトリ領域が確保可能の場合(S1305Yes)にS1306へ処理を移し、確保不可能の場合(S1305No)に本Snapshot作成処理を終了する。
S1306では、Snapshot作成プログラム304は、本Snapshot作成処理で作成された属性=Snapshotのディレクトリ#、マッピング#、容量、及びPool#を含むボリューム情報をボリューム管理テーブル311に追記して更新する。Snapshotのマッピング#603の値は、複製元PVOLのマッピング#の値のコピーである。
次にS1307では、Snapshot作成プログラム304は、作成したSnapshotの最新世代#1101を+1インクリメントし、Snapshot作成時刻1103、Snapshot#1104(ボリューム管理テーブル311のVOL#に該当)、状態1105=SUSPENDを設定してSnapshot世代管理テーブル316を更新する。
次にS1308では、Snapshot作成プログラム304は、S1305で割り当て可能とされた当該Snapshotに割り当てるディレクトリ領域の先頭アドレス及び割り当てディレクトリ#を追記してディレクトリ領域割り当てテーブル314を更新する。
次にS1309では、Snapshot作成プログラム304は、S1308で更新したディレクトリ領域割り当てテーブル314のディレクトリ領域先頭アドレス900の値をディレクトリ領域先頭アドレス701の値とし、割り当てディレクトリ#901の値をディレクトリ#700の値として、ディレクトリ領域管理テーブル312を更新する。
次にS1310では、Snapshot作成プログラム304は、複数のDSVOL102-iの各ストレージコントローラ210に対してディレクトリコピーを指示する。次に1311では、Snapshot作成プログラム304は、S1310のディレクトリコピーの指示を受け、複数のDSVOL102-iの各ストレージコントローラ210を制御し、複製元VOLであるPVOLのディレクトリテーブル103-iを、S1308,S1309で確保した各DSVOL102-iのディレクトリ領域へ並列処理でコピーする。コピーにより作成されたディレクトリテーブル104-iには、新しいディレクトリ#が付与される。
図14は、追記処理の処理手順を示すフローチャートである。図14は、図13のS1302、図16のS1604、図17のS1701、図18のS1802、図19のS1902、図23のS2102、図24のS2202で実行される各追記処理の詳細を示す。以下、図13のS1302で実行される追記処理として、Snapshot作成プログラム304を処理主体として説明する。
なお図16のS1604ではフロントエンドライトプログラム306、図17のS1701ではバックエンドライトプログラム307、図18のS1802ではリストアプログラム308、図19のS1902ではリシンクプログラム309、図23のS2102ではリストアプログラム308、図24のS2202ではリシンクプログラム309のそれぞれが処理主体になる。
先ずS1400では、Snapshot作成プログラム304は、ダーティデータを特定する。次にS1401では、Snapshot作成プログラム304は、Snapshot世代管理テーブル316を参照し、PVOLがSUSPEND状態のSnapshotを有しているかを判定する。Snapshot作成プログラム304は、SUSPEND状態のSnapshotが存在しない場合(S1401No)、S1404に処理を移し、SUSPEND状態のSnapshotが存在する場合(S1401Yes)、S1402に処理を移す。
S1402では、Snapshot作成プログラム304は、追記処理対象のダーティデータの論理アドレス(LBA)に対応するディレクトリコピーが完了しているかを判定する。Snapshot作成プログラム304は、ディレクトリコピーが完了している場合(S1402Yes)、S1404に処理を移し、ディレクトリコピーが完了していない場合(S1402No)、当該領域のディレクトリ情報を追出しコピーする。追出しコピーとは、図13のS1311でのコピー処理で未コピーの領域を追記処理する場合に、追記処理対象の領域のディレクトリ情報のみをピンポイントでコピーする処理である。
次にS1404では、Snapshot作成プログラム304は、S1400で特定したダーティデータを圧縮する。次にS1405では、Snapshot作成プログラム304は、S1404で圧縮した圧縮データセットを複製元VOLの追記領域にコピーする。
次にS1406では、Snapshot作成プログラム304は、マッピングテーブル105の各エントリのうち、参照先アドレス(追記領域内アドレス)501が設定されていない未使用のエントリに、S1404で圧縮したデータの追記領域内の格納位置を保持する。すなわち圧縮データのコピー先アドレスを参照先アドレス(追記領域内アドレス)501に設定する。
次にS1407では、Snapshot作成プログラム304は、ディレクトリテーブル103の各エントリのうち、当該データの論理アドレス(ホストからアクセス可能なLBA)に対応するエントリに、S1406で作成したマッピング情報のマッピング領域内アドレス500を参照先アドレス(マッピング領域内アドレス)401に設定する。
次にS1408では、Snapshot作成プログラム304は、S1405で追記領域にコピーされたダーティデータをデステージする。
図15は、リード処理の処理手順を示すフローチャートである。リード処理は、ホスト装置からのリード要求に応じて、リードプログラム305によって実行される。
先ずS1500では、リードプログラム305は、サーバシステム202からのリード要求が対象とするデータのPVOL又はSnapshot内でのアドレスを取得する。次にS1501では、リードプログラム305は、リード要求の対象データがキャッシュヒットするかを判定する。リードプログラム305は、リード要求の対象データがキャッシュヒットする場合(S1501Yes)にS1505へ処理を移し、キャッシュヒットしない場合(S1501No)にS1502へ処理を移す。
S1502では、リードプログラム305は、ディレクトリテーブル103,104を参照して、S1500で取得したPVOL/Snapshot内アドレスを基に、参照先アドレス(マッピング領域内アドレス)401を取得する。リードプログラム305は、リード要求の対象データが、PVOL100内のデータである場合にはPVOL用のディレクトリテーブル103を参照し、Snapshot101内のデータである場合にはSnapshot用のディレクトリテーブル104を参照する。
次にS1503では、リードプログラム305は、マッピングテーブル105を参照し、S1502で取得した参照先アドレス(マッピング領域内アドレス)を基に参照先アドレス(追記領域内アドレス)501を取得する。次にS1504では、リードプログラム305は、S1503で特定した追記領域内アドレスに格納されているデータを伸長しつつキャッシュメモリにステージングする。
次にS1505では、リードプログラム305は、S1501でキャッシュヒットしたデータ又はS1504でステージングしたデータをホスト装置に転送する。
図16は、フロントエンドライト処理(PVOL/Snapshot共通)の処理手順を示すフローチャートである。フロントエンドライト処理は、ホスト装置から、PVOL100又はSnapshot101に対するライト要求を受け付けた場合に、フロントエンドライトプログラム306によって実行される。
先ずS1600では、フロントエンドライトプログラム306は、ホスト装置からのライト要求の対象データがキャッシュヒットするかを判定する。フロントエンドライトプログラム306は、ライト要求の対象データがキャッシュヒットする場合(S1600Yes)にS1602へ処理を移し、キャッシュヒットしない場合(S1600No)にS1601へ処理を移す。S1601では、フロントエンドライトプログラム306は、キャッシュメモリ301においてキャッシュ領域を確保する。
S1602では、フロントエンドライトプログラム306は、S1600でキャッシュヒットした対象データがダーティデータであるかを判定する。フロントエンドライトプログラム306は、S1600でキャッシュヒットした対象データがダーティデータである場合(S1602Yes)にS1603へ処理を移し、ダーティデータでない場合(S1602No)にS1605へ処理を移す。
S1603では、フロントエンドライトプログラム306は、S1602で判定されたダーティデータのWR(WRight)世代#と、当該ライト要求の対象データの世代#が一致するかを判定する。WR世代#はキャッシュデータの管理情報(不図示)に保持される。又、当該ライト要求の対象データの世代#は図11の最新世代#1101から取得される。S1603は、直前に取得されたスナップショットの対象データ(ダーティデータ)の追記処理がされていないうちに、当該ライト要求の対象データでダーティデータを更新してしまい、スナップショットのデータを書きつぶしてしまうことを防ぐ。フロントエンドライトプログラム306は、WR世代#と最新世代#が一致する場合(S1603Yes)にS1605へ処理を移し、WR世代#と最新世代#が一致しない場合(S1603No)にS1604へ処理を移す。
S1604では、フロントエンドライトプログラム306は、図14を参照して説明した追記処理を実行する。S1604により、最新世代#と一致しないWR世代#のダーティデータを追記領域へ書き込み、キャッシュメモリ301からデステージする。
S1605では、フロントエンドライトプログラム306は、S1601で確保したキャッシュ領域、又は、追記処理が必要なダーティデータを追記処理して再度ダーティデータを生成可能になったキャッシュ領域へ、ライト要求の対象データを書き込む。
S1606では、フロントエンドライトプログラム306は、S1605でキャッシュメモリ301へ書き込んだキャッシュデータのWR世代#を、S1603で比較した最新世代#に設定する。S1607では、フロントエンドライトプログラム306は、ホスト装置へ正常応答(Good応答)を返却する。
図17は、バックエンドライト処理の処理手順を示すフローチャートである。バックエンドライト処理は、DSVOL102の追記領域106に未反映のデータ(ダーティデータ)がキャッシュメモリ301上にある場合、未反映のデータを追記領域106に書き込む処理である。バックエンドライト処理は、フロントエンド処理と同期又は非同期で行われる。バックエンドライト処理は、バックエンドライトプログラム307により実行される。
先ずS1700では、バックエンドライトプログラム307は、キャッシュメモリ301上にダーティデータが有るかを判定する。バックエンドライトプログラム307は、キャッシュメモリ301上にダーティデータが有る場合(S1700Yes)にS1701へ処理を移し、ダーティデータが無い場合(S1700No)に本バックエンドライト処理を終了する。S1701では、バックエンドライトプログラム307は、図14で説明した追記処理を実行する。
図18は、実施例1のリストア処理の処理手順を示すフローチャートである。リストア処理は、管理システム203からのリストア(データ復元)の指示に応じて、リストアプログラム308によって実行される。
先ずS1800では、リストアプログラム308は、管理システム203から、リストア先のPVOL#及びリストア元のSnapshot#を受領する。次にS1801では、リストアプログラム308は、S1800でSnapshot#を受領したリストア元Snapshotにダーティデータが有るかを判定する。リストアプログラム308は、リストア元Snapshotにダーティデータが有る場合(S1801Yes)にS1802へ処理を移し、ダーティデータが無い場合(S1801No)にS1803へ処理を移す。
S1802では、リストアプログラム308は、図14で説明した追記処理を実行する。
S1803では、リストアプログラム308は、ボリューム管理テーブル311からリストア元Snapshotのディレクトリ#及びリストア先PVOLのディレクトリ#を取得する。次にS1804では、リストアプログラム308は、複数のDSVOL102-iの各ストレージコントローラ210に対して、S1803で取得されたリストア元/先のディレクトリコピーを指示する。
次にS1805では、リストアプログラム308は、各ストレージコントローラ210の並列処理によって、S1803で取得したリストア元のSnapshotのディレクトリ#のディレクトリテーブル104-iを、リストア先のPVOLのディレクトリ#のディレクトリテーブル103-iへそれぞれコピーする。
図19は、実施例1のリシンク処理の処理手順を示すフローチャートである。リシンク処理は、管理システム203からのリシンク(データ再同期)の指示に応じて、リシンクプログラム309によって実行される。
先ずS1900では、リシンクプログラム309は、管理システム203から、リシンク先Snapshot#及びリシンク元PVOL#を受領する。次にS1901では、リシンクプログラム309は、リシンク元PVOLにダーティデータが有るかを判定する。リシンクプログラム309は、リシンク元PVOLにダーティデータが有る場合(S1901Yes)にS1902へ処理を移し、ダーティデータが無い場合(S1901No)にS1903へ処理を移す。
S1902では、リシンクプログラム309は、図14で説明した追記処理を実行する。
S1903では、リシンクプログラム309は、ボリューム管理テーブル311からリシンク元PVOLのディレクトリ#及びリシンク先Snapshotのディレクトリ#を取得する。次にS1904では、リシンクプログラム309は、複数のDSVOL102-iの各ストレージコントローラ210に対して、S1903で取得されたディレクトリコピーを指示する。
次にS1905では、リシンクプログラム309は、各ストレージコントローラ210の並列処理によって、S1903で取得したリシンク元のPVOLのディレクトリ#のディレクトリテーブル103-iを、リシンク先のSnapshotのディレクトリ#のディレクトリテーブル104-iへそれぞれコピーする。
図20は、PVOL/Snapshot削除処理の処理手順を示すフローチャートである。PVOL/Snapshot削除処理は、管理システム203からのボリューム削除又はSnapshot削除の指示に応じて、PVOL/Snapshot削除プログラム310によって実行される。
先ずS2000では、PVOL/Snapshot削除プログラム310は、削除対象のPVOL#又はSnapshot#を受領する。次にS2001では、PVOL/Snapshot削除プログラム310は、ボリューム管理テーブル311から、削除対象のPVOL又はSnapshotのディレクトリ#及びマッピング#を取得する。
次にS2002では、PVOL/Snapshot削除プログラム310は、削除対象のPVOL又はSnapshotのディレクトリテーブルの削除を、各ディレクトリテーブルが分散配置されている各DSVOL102を制御する各ストレージコントローラ210に対して指示する。
次にS2003では、PVOL/Snapshot削除プログラム310は、ディレクトリ領域管理テーブル312から、S2002で削除されたディレクトリテーブルに該当するレコードを削除する。次にS2004では、PVOL/Snapshot削除プログラム310は、S2003でディレクトリ領域管理テーブル312から削除したレコードに対応するディレクトリ領域先頭アドレス900のレコードを、ディレクトリ領域割り当てテーブル314から削除する。
次にS2005では、PVOL/Snapshot削除プログラム310は、マッピング領域削除可能(つまり削除対象が、SnapshotがないPVOL、又は、SnapshotがあるPVOL単体)であるかを判定する。PVOL/Snapshot削除プログラム310は、マッピング領域削除可能の場合(S2005Yes)にS2006へ処理を移し、マッピング領域削除不可能の場合(S2005No)にS2009へ処理を移す。
S2006では、PVOL/Snapshot削除プログラム310は、削除対象のPVOLのマッピングテーブルの削除を、各マッピングデーブルが分散配置されている各DSVOL102を制御する各ストレージコントローラ210に対して指示する。
次にS2007では、PVOL/Snapshot削除プログラム310は、マッピング領域管理テーブル313から、削除されたマッピングテーブルに該当するレコードを削除する。次にS2008では、PVOL/Snapshot削除プログラム310は、S2007でマッピング領域管理テーブル313から削除したレコードに対応するマッピング領域先頭アドレス1000のレコードを、マッピング領域割り当てテーブル315から削除する。
次にS2009では、PVOL/Snapshot削除プログラム310は、削除したPVOL又はSnapshotに該当するボリュームのレコードをボリューム管理テーブル311から削除する。
次にS2010では、PVOL/Snapshot削除プログラム310は、削除したボリュームはSnapshotかを判定する。PVOL/Snapshot削除プログラム310は、削除したボリュームがSnapshotである場合(S2010Yes)にS2011へ処理を移し、削除したボリュームがPVOLである場合(S2010No)に本PVOL/Snapshot削除処理を終了する。
S2011では、PVOL/Snapshot削除プログラム310は、削除したSnapshotのレコードをSnapshot世代管理テーブル316から削除する。この際、Snapshot世代管理テーブル316において、削除したSnapshotが最新世代である場合には、最新世代を削除したSnapshotの次に新しい世代のSnapshotを最新世代とする。
次に図21及び図22を参照して、実施例1の効果を説明する。
本実施例では、図21に示すように、メタ情報のツリーを、第1階層のメタ情報であるPVOL用のディレクトリテーブル103と、第2階層のメタ情報であるPVOLとSnapshot共用のマッピングテーブル105の2段構成とする。PVOL用のディレクトリテーブル103は、データを参照するメタ情報へのポインタを管理するテーブルである。
そしてSnapshot取得時には、1段目のPVOL用のディレクトリテーブル103のみをコピーし、Snapshot用のディレクトリテーブル104を作成する。PVOL100からのリード及びライトは、ディレクトリテーブル103及びマッピングテーブル105に基づいてデータにアクセスされる。またSnapshot101からのリード及びライトは、ディレクトリテーブル104及びマッピングテーブル105に基づいてデータにアクセスされる。これにより、データアクセス時の探索のオーバーヘッドを低減できる。
また本実施例では、図22に示すように、各ストレージコントローラ210により制御される複数のDSVOL102へ、PVOL用のディレクトリテーブル103を、細粒度で分散配置する。そして、Snapshot取得時は、複数のストレージコントローラ210がそれぞれのDSVOL102内に分散配置されているPVOL用のディレクトリテーブル103単位でテーブルコピーを行う。この並列処理によるコピーのため、Snapshot作成時間を短縮できる。さらに、特定のPVOL/SnapshotにI/O負荷が偏って高負荷になっても、複数のストレージコントローラ210に負荷分散するため、複数のストレージコントローラ資源を有効活用することができる。
よって本実施例によれば、ストレージシステムに求められる機能の性能を損ねず、I/O性能と、ストレージシステム操作性能の両立を図ることができる。またI/O負荷の偏りがあっても、1つのストレージコントローラの性能に律速されることなく、マルチコントローラのメリットを十分に享受できる。またストレージシステムの性能低下や容量を気にすることなく、オンデマンドにボリュームの複製を作成することができる。
実施例2は実施例1と比較して、リストア処理及びリシンク処理が異なる。実施例2のリストア処理では、ディレクトリテーブルをコピーせず、リストア先のディレクトリ#をリストア元のディレクトリ#と共通となるようにボリューム管理テーブル(図6)を更新し、リストア元/先で同じディレクトリ領域を参照する。
また実施例2のリシンク処理では、ディレクトリテーブルをコピーせず、リシンク先のディレクトリ#をリシンク元のディレクトリ#と共通となるようにボリューム管理テーブル(図6)を更新し、リストア元/先で同じディレクトリ領域を参照する。
図23は、実施例2のリストア処理の処理手順を示すフローチャートである。図23におけるS2100,S2101,S2102,S2103は、図18におけるS1800,S1801,S1802,S1803のそれぞれと同じである。
S2103に続きS2104では、リストアプログラム308は、ボリューム管理テーブル311において、リストア先PVOLのディレクトリ#をリストア元Snapshotのディレクトリ#で更新する。図6の例では、リストア元のVOL#=1の属性=Snapshotのディレクトリ#(1,5,20)で、リストア先のVOL#=0の属性=PVOLのディレクトリ#602を更新する。次にS2105では、リストアプログラム308は、Snapshot世代管理テーブル316のリストア元Snapshotの状態1105をPAIRに変更する。
図24は、実施例2のリシンク処理の処理手順を示すフローチャートである。図24におけるS2200,S2201,S2202,S2203は、図19におけるS1900,S1901,S1902,S1903のそれぞれと同じである。
S2203に続きS2204では、リシンクプログラム309は、ボリューム管理テーブル311において、リシンク先Snapshotのディレクトリ#をリシンク元PVOLのディレクトリ#で更新する。図6の例では、リシンク元のVOL#=0の属性=PVOLのディレクトリ#(0,10,200)で、リシンク先のVOL#=1の属性=Snapshotのディレクトリ#602を更新する。次にS2205では、リシンクプログラム309は、Snapshot世代管理テーブル316のリシンク先Snapshotの状態1105をPAIRに変更する。
このように実施例2では、実施例1のリストア処理及びリシンク処理と比較して、ディレクトリテーブルのコピーを行わず、参照先の変更のみであるので、処理量が少ないという利点がある。
なお、本発明は上述の実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、かかる構成の削除に限らず、構成の置き換えや追加も可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記録媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記録媒体に格納されたプログラムコードを読み出す。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記録媒体は本発明を構成することになる。このようなプログラムコードを供給するための記録媒体としては、例えば、フレキシブルディスク、CD-ROM、DVD-ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD-R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装できる。
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
100:計算機システム、103,103-i,104,104-i:ディレクトリテーブル、105,105-i:マッピングテーブル、106,106-i:追記領域、201:ストレージシステム、202:サーバシステム、203:管理システム、210:ストレージコントローラ

Claims (8)

  1. 複数のコントローラを有し、論理ボリュームの複製であるスナップショットを作成可能なストレージシステムであって、
    前記コントローラには、
    担当する前記論理ボリューム又は前記スナップショットが割り当てられ、
    前記論理ボリューム又は前記スナップショットのデータを格納する追記領域、及び追記領域に追記したデータのメタ情報を格納するメタ情報領域が割り当てられ、
    前記論理ボリュームのデータを追記領域に追記するデータ制御部と、
    前記データ制御部により前記追記領域に追記されたデータのメタ情報をメタ情報領域に格納するデータ管理部と、を備え、
    前記メタ情報は、
    前記論理ボリュームにおけるデータの位置情報と前記追記領域における前記データの位置情報とを関係付ける第1階層のメタ情報及び第2階層のメタ情報からなり、前記第1階層のメタ情報は、前記論理ボリュームにおけるデータの位置情報と該データに関する前記第2階層のメタ情報の格納位置とを関係付ける情報であり、前記第2階層のメタ情報は、前記追記領域における前記データの位置情報を管理する情報であり、
    前記論理ボリューム、又は前記スナップショットのデータを格納する前記追記領域及び前記論理ボリューム、又は前記スナップショットのデータのメタ情報を格納する前記メタ情報領域は、複数のデータストアボリュームに割り当てられ、
    前記第1階層のメタ情報及び前記第2階層のメタ情報は、複数の前記データストアボリュームのそれぞれに分散配置される
    ことを特徴とするストレージシステム。
  2. 前記データ管理部は、
    前記論理ボリュームのスナップショットを作成する際、複数のコントローラに割り当てられた複数のメタ情報領域に格納された前記第1階層のメタ情報の複製を複製元と同じメタ情報領域内に作成し、
    前記第1階層のメタ情報の複製を作成したメタ情報領域にかかるコントローラのデータ制御部は、
    前記第1階層のメタ情報を基に参照した前記第2階層のメタ情報に基づいて、前記論理ボリュームから前記追記領域のデータにアクセスし、
    前記第1階層のメタ情報の複製を基に参照した前記第2階層のメタ情報に基づいて、前記スナップショットから前記追記領域のデータにアクセスする
    ことを特徴とする請求項1に記載のストレージシステム。
  3. 前記第1階層のメタ情報は、前記論理ボリュームの論理データの粒度を単位として、複数の前記データストアボリュームに分散配置される
    ことを特徴とする請求項1に記載のストレージシステム。
  4. 前記データ管理部は、
    前記論理ボリュームのスナップショットを作成する際、複数のコントローラに割り当てられた複数のメタ情報領域に格納された前記第1階層のメタ情報の複製を複製元と同じメタ情報領域内に作成し、
    前記スナップショットから前記論理ボリュームをリストアする際、前記第1階層のメタ情報の複製で前記第1階層のメタ情報を更新する
    ことを特徴とする請求項1に記載のストレージシステム。
  5. 前記データ管理部は、
    前記論理ボリュームのスナップショットを作成する際、複数のコントローラに割り当てられた複数のメタ情報領域に格納された前記第1階層のメタ情報の複製を複製元と同じメタ情報領域内に作成し、
    前記論理ボリュームと前記スナップショットをリシンクする際、前記第1階層のメタ情報で前記第1階層のメタ情報の複製を更新する
    ことを特徴とする請求項1に記載のストレージシステム。
  6. 前記データ管理部は、
    前記スナップショットから前記論理ボリュームをリストアする際、ボリューム毎に前記第1階層のメタ情報を管理する管理情報において、前記論理ボリュームに対応付けられる前記第1階層のメタ情報の識別情報を、前記スナップショットに対応付けられる前記第1階層のメタ情報の識別情報で更新する
    ことを特徴とする請求項1に記載のストレージシステム。
  7. 前記データ管理部は、
    前記論理ボリュームと前記スナップショットをリシンクする際、ボリューム毎に前記第1階層のメタ情報を管理する管理情報において、前記スナップショットに対応付けられる前記第1階層のメタ情報の識別情報を、前記論理ボリュームに対応付けられる前記第1階層のメタ情報の識別情報で更新する
    ことを特徴とする請求項1に記載のストレージシステム。
  8. 複数のコントローラを有し、論理ボリュームの複製であるスナップショットを作成可能なストレージシステムにおけるデータ複製方法であって、
    前記コントローラには、
    担当する前記論理ボリューム又は前記スナップショットが割り当てられ、
    前記論理ボリューム又は前記スナップショットのデータを格納する追記領域、及び追記領域に追記したデータのメタ情報を格納するメタ情報領域が割り当てられ、
    前記論理ボリュームのデータを追記領域に追記するデータ制御部と、
    前記データ制御部により前記追記領域に追記されたデータのメタ情報をメタ情報領域に格納するデータ管理部と、を備え、
    前記メタ情報は、
    前記論理ボリュームにおけるデータの位置情報と前記追記領域における前記データの位置情報とを関係付ける第1階層のメタ情報及び第2階層のメタ情報からなり、前記第1階層のメタ情報は、前記論理ボリュームにおけるデータの位置情報と該データに関する前記第2階層のメタ情報の格納位置とを関係付ける情報であり、前記第2階層のメタ情報は、前記追記領域における前記データの位置情報を管理する情報であり、
    前記論理ボリューム、又は前記スナップショットのデータを格納する前記追記領域及び前記論理ボリューム、又は前記スナップショットのデータのメタ情報を格納する前記メタ情報領域は、複数のデータストアボリュームに割り当てられ、
    前記第1階層のメタ情報及び前記第2階層のメタ情報は、複数の前記データストアボリュームのそれぞれに分散配置される
    ことを特徴とするストレージシステムのデータ複製方法。
JP2022124525A 2020-07-31 2022-08-04 ストレージシステム及びストレージシステムにおけるデータ複製方法 Active JP7309025B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2022124525A JP7309025B2 (ja) 2020-07-31 2022-08-04 ストレージシステム及びストレージシステムにおけるデータ複製方法
JP2023110267A JP2023118859A (ja) 2020-07-31 2023-07-04 ストレージシステム及びストレージシステムにおけるデータ複製方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2020130440A JP7121079B2 (ja) 2020-07-31 2020-07-31 ストレージシステム及びストレージシステムにおけるデータ複製方法
JP2022124525A JP7309025B2 (ja) 2020-07-31 2022-08-04 ストレージシステム及びストレージシステムにおけるデータ複製方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2020130440A Division JP7121079B2 (ja) 2020-07-31 2020-07-31 ストレージシステム及びストレージシステムにおけるデータ複製方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2023110267A Division JP2023118859A (ja) 2020-07-31 2023-07-04 ストレージシステム及びストレージシステムにおけるデータ複製方法

Publications (2)

Publication Number Publication Date
JP2022145781A JP2022145781A (ja) 2022-10-04
JP7309025B2 true JP7309025B2 (ja) 2023-07-14

Family

ID=87103392

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2022124525A Active JP7309025B2 (ja) 2020-07-31 2022-08-04 ストレージシステム及びストレージシステムにおけるデータ複製方法
JP2023110267A Pending JP2023118859A (ja) 2020-07-31 2023-07-04 ストレージシステム及びストレージシステムにおけるデータ複製方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2023110267A Pending JP2023118859A (ja) 2020-07-31 2023-07-04 ストレージシステム及びストレージシステムにおけるデータ複製方法

Country Status (1)

Country Link
JP (2) JP7309025B2 (ja)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005085117A (ja) 2003-09-10 2005-03-31 Toshiba Corp ディスクアレイコントローラ、ディスクアレイ装置及びディスクアレイ制御プログラム
JP2009211401A (ja) 2008-03-04 2009-09-17 Hitachi Ltd ストレージ装置及びその制御方法
JP2012512482A (ja) 2008-12-17 2012-05-31 エルエスアイ コーポレーション Ssd技術支援のストレージシステムのスナップショット
JP2012216044A (ja) 2011-03-31 2012-11-08 Nec Corp ストレージ装置、ストレージ方法及びプログラム
JP2018181190A (ja) 2017-04-20 2018-11-15 富士通株式会社 ストレージ装置、およびストレージ制御プログラム
JP2019057178A (ja) 2017-09-21 2019-04-11 東芝メモリ株式会社 メモリシステムおよび制御方法
JP2020080130A (ja) 2018-11-14 2020-05-28 株式会社日立製作所 ボリューム管理装置、ボリューム管理方法、及びボリューム管理プログラム

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005085117A (ja) 2003-09-10 2005-03-31 Toshiba Corp ディスクアレイコントローラ、ディスクアレイ装置及びディスクアレイ制御プログラム
JP2009211401A (ja) 2008-03-04 2009-09-17 Hitachi Ltd ストレージ装置及びその制御方法
JP2012512482A (ja) 2008-12-17 2012-05-31 エルエスアイ コーポレーション Ssd技術支援のストレージシステムのスナップショット
JP2012216044A (ja) 2011-03-31 2012-11-08 Nec Corp ストレージ装置、ストレージ方法及びプログラム
JP2018181190A (ja) 2017-04-20 2018-11-15 富士通株式会社 ストレージ装置、およびストレージ制御プログラム
JP2019057178A (ja) 2017-09-21 2019-04-11 東芝メモリ株式会社 メモリシステムおよび制御方法
JP2020080130A (ja) 2018-11-14 2020-05-28 株式会社日立製作所 ボリューム管理装置、ボリューム管理方法、及びボリューム管理プログラム

Also Published As

Publication number Publication date
JP2022145781A (ja) 2022-10-04
JP2023118859A (ja) 2023-08-25

Similar Documents

Publication Publication Date Title
US10152381B1 (en) Using storage defragmentation function to facilitate system checkpoint
US10235066B1 (en) Journal destage relay for online system checkpoint creation
US6779095B2 (en) Apparatus and method for instant copy of data using pointers to new and original data in a data location
JP4292882B2 (ja) 複数のスナップショット維持方法及びサーバ装置及びストレージ装置
US6779094B2 (en) Apparatus and method for instant copy of data by writing new data to an additional physical storage area
US7685378B2 (en) Methods and apparatus for adjusting a journal area for continuous data protection
US7634594B1 (en) System and method for identifying block-level write operations to be transferred to a secondary site during replication
US7603529B1 (en) Methods, systems, and computer program products for mapped logical unit (MLU) replications, storage, and retrieval in a redundant array of inexpensive disks (RAID) environment
JP4199993B2 (ja) スナップショット取得方法
US8261030B2 (en) Using delete notifications to free related storage resources
US20130205109A1 (en) Data archiving using data compression of a flash copy
US20020112113A1 (en) Storage virtualization system and methods
CN113868192B (zh) 一种数据存储设备、方法与分布式数据存储系统
JP2007234026A (ja) ユニークブロックプールマネージャを含むデータ記憶システムおよび階層記憶装置における応用
JP7121079B2 (ja) ストレージシステム及びストレージシステムにおけるデータ複製方法
US20110246731A1 (en) Backup system and backup method
JPWO2017068904A1 (ja) ストレージシステム
US20180307440A1 (en) Storage control apparatus and storage control method
US6629203B1 (en) Alternating shadow directories in pairs of storage spaces for data storage
WO2016139787A1 (ja) ストレージシステム及びデータ書込み制御方法
JP7190421B2 (ja) ストレージシステム及びボリューム複製方法
JP7309025B2 (ja) ストレージシステム及びストレージシステムにおけるデータ複製方法
CN110134551B (zh) 一种持续数据保护方法及装置
US20180307615A1 (en) Storage control apparatus and storage control method
JP7304215B2 (ja) ストレージシステムおよび履歴情報管理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230531

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: 20230606

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230704

R150 Certificate of patent or registration of utility model

Ref document number: 7309025

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150