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

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

Info

Publication number
JP7429214B2
JP7429214B2 JP2021165438A JP2021165438A JP7429214B2 JP 7429214 B2 JP7429214 B2 JP 7429214B2 JP 2021165438 A JP2021165438 A JP 2021165438A JP 2021165438 A JP2021165438 A JP 2021165438A JP 7429214 B2 JP7429214 B2 JP 7429214B2
Authority
JP
Japan
Prior art keywords
generation
control information
information
snapshot
data
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
JP2021165438A
Other languages
English (en)
Other versions
JP2023056222A (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 JP2021165438A priority Critical patent/JP7429214B2/ja
Priority to US17/691,159 priority patent/US11531474B1/en
Priority to CN202211067365.7A priority patent/CN115951819A/zh
Priority to US18/083,680 priority patent/US11947811B2/en
Publication of JP2023056222A publication Critical patent/JP2023056222A/ja
Application granted granted Critical
Publication of JP7429214B2 publication Critical patent/JP7429214B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms

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を参照する。
米国特許第9646039号明細書
しかしながら、従来の技術では、Snapshotを用いてリストアを行うときに、参照されなくなるデータやメタ情報を無効化する必要がり、リストアに長時間を要する。また、逆参照系のメタ情報(例えばPoolの格納データからプライマリボリュームまたはスナップショットへの参照情報)を持たずに、特定のデータやメタ情報の無効化可否を判定しようとすると、全てのSnapshotについて参照の有無を確認する必要が生じ、無効化可否判定の処理効率が低くなる。
このため、リストアの高速化や無効化処理可否判定の高速化を行い、データの複製に関係する処理時間を短縮することが課題となっている。
本発明は上記の課題に鑑みてなされたもので、ストレージシステムにおいてデータの複製に関係する処理の高速化を実現することを目的とする。
上記目的を達成するために、代表的な本発明のストレージシステムの一つは、ホスト装置に対して論理ボリュームを提供するコントローラと、データを格納する物理記憶デバイスとを有し、前記論理ボリュームの複製であるスナップショットを作成可能なストレージシステムであって、前記コントローラは、前記物理記憶デバイスを用いて前記論理ボリュームに対応させるプールボリュームを形成し、前記論理ボリューム及び前記スナップショットに対応付けられる第1の制御情報と前記プールボリューム上のデータに対して対応付けられる第2の制御情報とを保持し、前記第1の制御情報と前記第2の制御情報とを対応付けることで、前記論理ボリューム及び前記スナップショットのデータを管理し、前記論理ボリュームと1又は複数のスナップショットの時系列を前記第1の制御情報に関連付けた世代情報により管理し、前記プールボリューム上の各データについて、当該データが作成された世代を示す世代情報を前記第2の制御情報に関連付けて管理し、前記論理ボリューム及び/又は前記スナップショットに係るデータの処理とは非同期に前記第1の制御情報及び/又は前記第2の制御情報の無効化を実行し、前記無効化にあたり、前記第1の制御情報に関連付けた世代情報と前記第2の制御情報に関連付けた世代情報とを参照して、無効化の可否を判定することを特徴とする。
また、代表的な本発明のストレージシステムにおけるデータ複製方法の一つは、ホスト装置に対して論理ボリュームを提供するコントローラと、データを格納する物理記憶デバイスとを有し、前記論理ボリュームの複製であるスナップショットを作成可能なストレージシステムにおけるデータ複製方法であって、前記コントローラが、前記物理記憶デバイスを用いて前記論理ボリュームに対応させるプールボリュームを形成し、前記論理ボリューム及び前記スナップショットに対応付けられる第1の制御情報と前記プールボリューム上のデータに対して対応付けられる第2の制御情報とを保持し、前記第1の制御情報と前記第2の制御情報とを対応付けることで、前記論理ボリューム及び前記スナップショットのデータを管理し、前記論理ボリュームと1又は複数のスナップショットの時系列を前記第1の制御情報に関連付けた世代情報により管理し、前記プールボリューム上の各データについて、当該データが作成された世代を示す世代情報を前記第2の制御情報に関連付けて管理し、前記論理ボリューム及び/又は前記スナップショットに係るデータの処理とは非同期に前記第1の制御情報及び/又は前記第2の制御情報の無効化を実行し、前記無効化にあたり、前記第1の制御情報に関連付けた世代情報と前記第2の制御情報に関連付けた世代情報とを参照して、無効化の可否を判定することを特徴とする。
本発明によれば、ストレージシステムにおいてデータの複製に関係する処理を高速化できる。
ストレージシステムのスナップショット取得についての説明図。 スナップショット取得後の最初の書き込みについての説明図。 スナップショット取得後の2回目以降の書き込みについての説明図。 スナップショットからのリストアの説明図。 リストア後の最初の書き込みについての説明図。 リストア後の非同期ディレクトリ情報の回収処理についての説明図。 スナップショットの削除についての説明図。 スナップショット削除後の非同期ディレクトリ情報の回収処理についての説明図。 計算機システム100のハードウェア構成の説明図。 ストレージシステムの論理構成の説明図。 ストレージシステムが使用するプログラム及び情報の説明図。 スナップショット管理テーブルの構成の説明図。 VOL/スナップショット-Dir情報管理テーブルの構成の説明図。 最新世代#の構成の説明図。 回収要求Dir情報#管理ビットマップの構成の説明図。 Dir情報世代管理ツリーの構成の説明図。 プール管理テーブルの構成の説明図。 Dir情報管理テーブルの構成の説明図。 マッピング情報管理テーブルの構成の説明図。 スナップショット取得処理の処理手順を示すフローチャート。 スナップショットリストア処理の処理手順を示すフローチャート。 スナップショット削除処理の処理手順を示すフローチャート。 非同期ディレクトリ情報回収処理の処理手順を示すフローチャート。 フロントエンドライト処理の処理手順を示すフローチャート。 バックエンドライト処理の処理手順を示すフローチャート。 追記処理の処理手順を示すフローチャート。 ライタブルスナップショットの取得についての説明図。 ライタブルスナップショットへの書き込みについての説明図。 ライタブルスナップショットからのリストアの説明図。
以下、本発明の実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。また、発明の構成に必須だが周知である構成については、図示及び説明を省略する場合がある。
以下の説明において、「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は、実施例1に係るストレージシステムのスナップショット取得についての説明図である。
ストレージシステムは、ホスト装置に対して論理ボリュームを提供することができる。この論理ボリュームを以降、プライマリボリューム(PVOL)という。
また、ストレージシステムは、プライマリボリュームの複製であるスナップショットをRoW(Redirect on Write)方式で作成することができる。
ストレージシステムは、データを格納する物理記憶デバイスを用いてプールボリュームを形成し、メタ情報を用いてプライマリボリュームやスナップショットとプールボリュームとの関係を管理している。
ストレージシステムは、メタ情報として、ディレクトリ(Dir)情報と、マッピング情報とを用いる。
ディレクトリ情報は、プライマリボリュームやスナップショットに対応付けられる第1の制御情報である。
マッピング情報は、プールボリューム上のデータに対して1対1に対応付けられる第2の制御情報である。
ストレージシステムは、ディレクトリ情報とマッピング情報とを対応付けることで、プライマリボリュームやスナップショットのデータを管理する。
さらに、ストレージシステムは、論理ボリュームとスナップショットの時系列をディレクトリ情報に関連付けた世代情報により管理し、プールボリューム上の各データについて、当該データが作成された世代を示す世代情報をマッピング情報に関連付けて管理している。加えて、ストレージシステムは、その時点の最新の世代情報を最新世代として管理している。
図1では、ストレージシステムが最初のスナップショットを作成する場合の動作を示している。
まず、スナップショット取得前の段階では、プライマリボリュームは「A0」「B0」「C0」のデータが仮想的に格納された状態であり、最新世代は「0」である。
プライマリボリュームに対応付けられたディレクトリ情報は、世代情報として「0」を関連付けられており、プライマリボリュームの全データ(「A0」「B0」「C0」)の参照先を示す参照情報を含む。以降、ディレクトリ情報に関連付けられた世代情報が「X」である場合に、ディレクトリ情報が世代Xである、と表記する。
プールボリュームには、「A0」「B0」「C0」のデータが実体的に格納されており、それぞれのデータ(「A0」「B0」「C0」)に対してマッピング情報が対応付けられている。また、それぞれのマッピング情報は、世代情報として「0」を関連づけられている。以降、マッピング情報に関連付けられた世代情報が「X」である場合に、マッピング情報が世代Xである、と表記する。
スナップショット取得前の状態では、ディレクトリ情報の「A0」「B0」「C0」は、それぞれマッピング情報の「A0」「B0」「C0」を参照する参照情報となっている。このようにディレクトリ情報とマッピング情報を対応付けることで、プライマリボリュームとプールボリュームを対応させ、プライマリボリュームに対する仮想的なデータ処理を実現できる。
図1において、スナップショット取得する場合には、ディレクトリ情報をコピーし、リードオンリースナップショット#0のディレクトリ情報とする。そして、プライマリボリュームのディレクトリ情報の世代をインクリメントし、最新世代もインクリメントする。
この結果、マッピング情報の「A0」「B0」「C0」は、世代0のディレクトリ情報と世代1のディレクトリ情報の双方から参照される。
このように、ディレクトリ情報の複製によりスナップショットを作成すれば、プールボリューム上のデータやマッピング情報を増やすことなく、スナップショットを作成することができる。
ここで、スナップショットを取得すると、取得時点で書き込みが禁止されてデータが固定したスナップショットが世代0、取得以降もデータを書き込み可能なプールボリュームが世代1となる。世代0は、世代1に対して「直系における1世代古い世代」であり、便宜上「親」という。同様に、世代1は世代0に対して「直系における1世代新しい世代」であり、便宜上「子」という。ストレージシステムは、世代の親子関係をDir情報世代管理ツリーとして管理している。
図2は、スナップショット取得後の最初の書き込みについての説明図である。
ホスト装置から「A0」を「A1」に書き換えるライト要求を受けたならば、ストレージシステムは、プールボリュームの新たな領域を確保し、書き込み対象のデータ「A1」を格納する。プールボリュームの新たなデータ「A1」に対しては、新たなマッピング情報「A1」が生成され、マッピング情報「A1」にはディレクトリ情報の世代が世代情報として与えられる。このため、マッピング情報「A1」は世代1となる。
ストレージシステムは、世代1のディレクトリ情報とマッピング情報の参照関係(対応関係)を切り替えることで、プライマリボリュームにおける書き込み先のアドレスと書き込み対象のデータ「A1」を対応付ける。
この参照先の切り替えによりマッピング情報「A0」は、世代1のディレクトリ情報からの参照が解消される。しかし、マッピング情報「A0」は、スナップショット#0のディレクトリ情報(世代0)から参照されたままであるため、無効化を許可すべきでない。
この無効化の可否の判定は、無効化可否の判定対象のマッピング情報の世代と、Write対象VOL(ここではプライマリボリューム)のディレクトリ情報の世代を比較して、一致していれば無効化可能、マッピング情報世代の方が古ければ、無効化不可と判定すればよい。なお、マッピング情報世代の方が新しい状態は発生しない。
図3は、スナップショット取得後の2回目以降の書き込みについての説明図である。
ホスト装置から「A1」を「A2」に書き換えるライト要求を受けたならば、ストレージシステムは、プールボリュームの新たな領域を確保し、書き込み対象のデータ「A2」を格納する。プールボリュームの新たなデータ「A2」に対しては、新たなマッピング情報「A2」が生成され、マッピング情報「A2」にはディレクトリ情報の世代が世代情報として与えられる。このため、マッピング情報「A2」は世代1となる。
ストレージシステムは、世代1のディレクトリ情報とマッピング情報の参照関係(対応関係)を切り替えることで、プライマリボリュームにおける書き込み先のアドレスと書き込み対象のデータ「A2」を対応付ける。
この参照先の切り替えによりマッピング情報「A1」は、世代1のディレクトリ情報からの参照が解消され、どのディレクトリ情報からも参照されない状態となるので、無効化が可能である。
具体的には、マッピング情報「A1」は世代1であり、Write対象VOLのディレクトリ情報「世代1」と一致するので、無効化が可能と判定される。また、プールボリューム上のデータ「A1」も無効化可能である。
図4は、スナップショットからのリストアの説明図である。前提として、世代0から世代2までの3つのスナップショット#0~#2が順次作成され、最新世代は3である。
スナップショットSS#1からリストアする場合には、世代1のディレクトリ情報を複製してプライマリボリュームに対応付け、最新世代をインクリメントする。この結果、最新世代は4となり、プライマリボリュームのディレクトリ情報も世代4である。
また、世代4のプライマリボリュームは、世代1のスナップショットを親とする。このため、世代1のスナップショットは、世代2のスナップショットと世代4のプライマリボリュームを子として持つことになる。
リストアにより、世代3のディレクトリ情報は、プライマリボリュームとの対応関係を解除され、プライマリボリュームやスナップショットからの参照がなくなった非同期回収対象となる。すなわち、世代3が無効化の対象世代として特定される。
図5は、リストア後の最初の書き込みについての説明図である。
リストアの終了時点において、プライマリボリュームのデータは「A2」「B0」「C0」である。
ホスト装置から「A2」「B0」「C0」のそれぞれについて初回のライト要求を受けつけて、「A4」「B2」「C2」を書き込む場合には、ストレージシステムは、プールボリュームに「A4」「B2」「C2」をそれぞれ格納し、新たなマッピング情報「A4」「B2」「C2」を生成する。そして、「A4」「B2」「C2」のマッピング情報を世代4とする。
ストレージシステムは、世代4のディレクトリ情報とマッピング情報の参照関係(対応関係)を切り替えることで、書き込みを完了する。この切り替えにより、「A2」「B0」「C0」のディレクトリ情報は、プライマリボリュームからの参照を受けなくなるが、親世代である世代1のスナップショットから参照を受けている(Write対象VOLの世代>マッピング情報の世代)。このため、「A2」「B0」「C0」のディレクトリ情報は無効化することができず、プールボリュームにおける「A2」「B0」「C0」のデータも無効化することができない。
図6は、リストア後の非同期ディレクトリ情報の回収処理についての説明図である。既に説明したように、リストアによって世代3のディレクトリ情報が無効化対象として特定されたならば、ストレージシステムは、リストアと非同期に世代3のディレクトリ情報を無効化する。
図6では、世代3のディレクトリ情報は「A3」「B1」「C1」を参照している。そこで、ストレージシステムは、「A3」「B1」「C1」のマッピング情報の世代を親世代と比較して、参照の有無をチェックする。なお、この例では無効化対象である世代3が世代管理ツリー上末端である(=子を持たない)ために、子世代を確認する必要が無い。
ここで、マッピング情報の世代と比較する親世代とは、無効化対象である世代3のディレクトリ情報の親であり、その世代は2である。したがって、マッピング情報の世代が親世代より大きければ、無効化可能となる。
具体的には、マッピング情報「C1」は世代3であり、親世代の世代2より大きい。すなわち、マッピング情報「C1」は世代2のスナップショットから参照を受けていないため、無効化可能である。一方、マッピング情報「A3」「B1」は世代2であり、親世代の世代2と等しい。すなわち、マッピング情報「A3」「B1」は世代2のスナップショットから参照を受けているため、無効化不可である。
無効化対象のディレクトリ情報と、無効化可能のマッピング情報を無効化した結果、図6に示すように、世代3のディレクトリ情報が削除され、マッピング情報「C3」とプールボリューム上のデータ「C3」が削除される。
図7は、スナップショットの削除についての説明図である。図7では、スナップショット#0の子がスナップショット#1であり、スナップショット#1の子がスナップショット#2と世代4のプライマリボリュームである。この状態で、スナップショット#0の削除を実行すると、ストレージシステムは、スナップショット#0を直ちに削除し、スナップショット#0からの参照がなくなった世代0のディレクトリ情報を非同期回収対象とする。世代0が無効化の対象世代として特定される。
図8は、スナップショット削除後の非同期ディレクトリ情報の回収処理についての説明図である。スナップショット#0の削除によって世代0のディレクトリ情報が無効化対象として特定されたならば、ストレージシステムは、スナップショットの削除と非同期に世代0のディレクトリ情報を無効化する。
この無効化では、ストレージシステムは、対象世代のディレクトリ情報に参照される(対応付けられた)マッピング情報について、マッピング情報の世代が、対象世代の親世代と比較して新しく、かつ、対象世代の子世代からも参照を受けていない場合に、無効化が可能であると判定する。このように、子を持つディレクトリ情報の無効化の場合、子からの参照有無も確認する必要がある。
図8では、世代0のディレクトリ情報はマッピング情報「A0」「B0」「C0」を参照している。また、対象世代0には親世代が存在しない。そこで、ストレージシステムは、マッピング情報「A0」「B0」「C0」が、対象世代の子世代である世代1のディレクトリ情報から参照されているか否かを判定する。
世代1のディレクトリ情報は、「A2」「B0」「C0」を参照しているため、マッピング情報「A0」は無効化可能、マッピング情報「B0」「C0」は無効化不可と判定される。
なお、図6では子世代が1つであったが、子世代が2つある場合には、回収後のDir情報世代ツリーが分離するため、無効化処理をスキップする。
無効化対象のディレクトリ情報と、無効化可能のマッピング情報を無効化した結果、図8に示すように、世代0のディレクトリ情報が削除され、マッピング情報「A0」とプールボリューム上のデータ「A0」が削除される。
図9は、実施例1に係る計算機システム100のハードウェア構成の説明図である。計算機システム100は、ストレージシステム201、サーバシステム202、及び管理システム203を備える。ストレージシステム201とサーバシステム202とは、FC(Fiber Channel)などを用いたストレージネットワーク204を介して接続される。ストレージシステム201と管理システム203とは、IP(Internet Protocol)などを用いた管理ネットワーク205を介して接続される。なお、ストレージネットワーク204及び管理ネットワーク205は、同一の通信ネットワークであってもよい。
ストレージシステム201は、複数のストレージコントローラ210と、複数のSSD220とを備える。ストレージコントローラ210には、物理記憶デバイスであるSSD220が接続されている。
ストレージコントローラ210は、1つ以上のプロセッサ211と、1つ以上のメモリ212と、バックエンドインターフェース213と、フロントエンドインターフェース214と、マネジメントインターフェース215とを備える。
プロセッサ211は、プロセッサ部の一例である。プロセッサ211は、圧縮及び伸張を行うハードウェア回路を含んでいてもよい。本実施例では、プロセッサ211は、リードライト、スナップショット作成、リストア、スナップショット削除、メタ情報の回収削除に係る制御等を行う。
メモリ212は、記憶部の一例である。メモリ212は、プロセッサ211が実行するプログラム、プロセッサ211が使用するデータ等を記憶する。プロセッサ211は、メモリ212に格納されているプログラムを実行する。なお、本実施例では、例えば、メモリ212及びプロセッサ211の組でメモリが二重化されている。
バックエンドインターフェース213、フロントエンドインターフェース214、マネジメントインターフェース215は、インターフェース部の一例である。
バックエンドインターフェース213は、SSD220とストレージコントローラ210との間のデータのやり取りを仲介する通信インターフェースデバイスである。バックエンドインターフェース213には、複数のSSD220が接続される。
フロントエンドインターフェース214は、サーバシステム202とストレージコントローラ210との間のデータのやり取りを仲介する通信インターフェースデバイスである。フロントエンドインターフェース214に、ストレージネットワーク204を介して、サーバシステム202が接続される。
マネジメントインターフェース215は、管理システム203とストレージコントローラ210の間のデータのやり取りを仲介する通信インターフェースデバイスである。マネジメントインターフェース215に、管理ネットワーク205を介して、管理システム203が接続される。
サーバシステム202は、1つ以上のホスト装置を含んで構成される。サーバシステム202は、ストレージコントローラ210に対して、I/O先を指定したI/O要求(ライト要求又はリード要求)を送信する。I/O先は、例えば、LUN(Logical Unit Number)のような論理ボリューム番号、LBA(Logical Block Address)のような論理アドレス等である。
管理システム203は、1つ以上の管理装置を含んで構成される。管理システム203は、ストレージシステム201を管理する。
図10は、ストレージシステム201の論理構成の説明図である。サーバシステム202が指定するI/O先は、プライマリボリュームの論理ボリューム番号、論理アドレス等である。プライマリボリュームは、すでに説明したように、メタ情報(図示省略)を介してプールボリューム上のデータを参照する。この参照関係により、プライマリボリュームに対するデータのリードライトを、プールボリュームへのリードライトとして処理できる。
さらに、ストレージシステム201は、プライマリボリュームのスナップショットの作成を、メタ情報の複製により実現する。このため、プライマリボリュームやスナップショットで重複して保持されるデータであっても、プールボリュームの同一のデータを参照するので、プールボリュームでデータを重複して保持する必要はない。
図11は、ストレージシステム201が使用するプログラム及び情報の説明図である。メモリ212のメモリ領域は、制御情報部301、プログラム部302、キャッシュ部303として用いられる。
なお、メモリ領域のうちの少なくとも一部は、独立したメモリであってもよい。
制御情報部301は、スナップショット管理テーブル401、VOL/スナップショット-Dir情報管理テーブル402、最新世代#403、回収要求Dir情報#管理ビットマップ404、Dir情報世代管理ツリー405、プール管理テーブル406、Dir情報管理テーブル407、マッピング情報管理テーブル408を格納する。これらのテーブルについては、図を参照して後述する。
プログラム部302には、スナップショット取得プログラム411、スナップショットリストアプログラム412、スナップショット削除プログラム413、非同期回収プログラム414、リード/ライトプログラム415、追記プログラム416などが格納される。これらのプログラムは、複数のストレージコントローラ210毎に設けられ、互いに協働して目的の処理を行う。
キャッシュ部303には、SSD220に対してライト又はリードされるデータセットが一時的に格納される。
図12は、スナップショット管理テーブル401の構成の説明図である。スナップショット管理テーブル401は、プライマリボリュームのIDに、そのプライマリボリュームから取得したスナップショットのIDと、スナップショットの取得時刻を対応づけたテーブルである。プライマリボリュームが複数ある場合には、プライマリボリュームごとにスナップショット管理テーブル401を設ける。
図13は、VOL/スナップショット-Dir情報管理テーブル402の構成の説明図である。VOL/スナップショット-Dir情報管理テーブル402は、VOL#/SS#と、RootVOL#と、Dir情報#とを有する。
VOL#/SS#は、プライマリボリューム又はスナップショットを特定する情報である。RootVOL#は、どのプライマリボリュームに対応するかを示す。VOL#/SS#がプライマリボリュームであれば、VOL#/SS#とRootVOL#は一致する。Dir情報#は、VOL#/SS#に対応するディレクトリ情報を特定する。
図14は、最新世代#403の構成の説明図である。最新世代#403は、ホスト装置に提供されているプライマリボリュームの世代であり、プライマリボリュームが複数ある場合には、プライマリボリュームごとに存在する。
図15は、回収要求Dir情報#管理ビットマップ404の構成の説明図である。回収要求Dir情報#管理ビットマップ404は、Dir情報#ごとに、回収要求のフラグを管理している。例えば、回収を要求するDir情報#には「1」、回収を要求しないDir情報#には「0」をフラグとして与える。
図16は、Dir情報世代管理ツリー405の構成の説明図である。Dir情報世代管理ツリー405は、Dir情報#と、Dir情報世代#と、Prevと、Next1と、Next2とを有する。
Dir情報#はディレクトリ情報を特定する情報であり、Dir情報世代#はディレクトリ情報の世代を示す。Prevは、ディレクトリ情報の親を示し、Next1とNext2はディレクトリ情報の子を示す。
図17は、プール管理テーブル406の構成の説明図である。プール管理テーブル406は、プールボリューム上の記憶領域を区分するページナンバー、プールボリュームのID、スタートアドレス、ステータス、割当先VOL#/SS#、割当先アドレスを有する。
ステータスは、その記憶領域を割り当て済みであるか否かを示す。
ステータスが[1:割当済み]であれば、割当先VOL#/SS#と割当先アドレスにより、どのボリュームまたはスナップショットのどのアドレスに割り当てられているかが示される。
ステータスが[2:未割当]であれば、割当先VOL#/SS#と割当先アドレスは「n/a」である。
図18は、Dir情報管理テーブル407の構成の説明図である。
Dir情報管理テーブル407は、VOL/SS内アドレスと、参照先マッピング情報#とを対応付けるテーブルである。Dir情報管理テーブル407は、プライマリボリューム、スナップショットごとに設ける。
図19は、マッピング情報管理テーブル408の構成の説明図である。マッピング情報管理テーブル408は、マッピング情報#、参照先プールアドレス、マッピング情報世代#を対応付けるテーブルであり、マッピング情報がプールボリュームのどの記憶領域を参照するかと、マッピング情報の世代を示す。
図20は、スナップショット取得処理の処理手順を示すフローチャートである。スナップショット取得処理は、管理システム203からの指示に応じて、スナップショット取得プログラム411によって実行される。
まず、スナップショット取得プログラム411は、コピー先となるDir情報管理テーブル407を割当て、VOL/スナップショット-Dir情報管理テーブル402を更新する(ステップS101)。
スナップショット取得プログラム411は、最新世代をインクリメントし(ステップS102)、Dir情報世代管理ツリー405を更新する(ステップS103)。このとき、複製元には最新世代を設定し、複製先にはインクリメント前の世代を設定する。
スナップショット取得プログラム411は、指定のボリュームにキャッシュダーティデータがあるか否かを判定する(ステップS104)。
指定のボリュームにキャッシュダーティデータがあるならば(ステップS104;Yes)、スナップショット取得プログラム411は、ページを割り当ててプール管理テーブル406を更新し(ステップS105)、追記処理を実行する(ステップS106)。
追記処理の後、若しくは指定のボリュームにキャッシュダーティデータがない場合(ステップS104;No)、スナップショット取得プログラム411は、対象ボリュームのDir情報管理テーブル407をコピー先のDir情報管理テーブル407へコピーする(ステップS107)。
その後、スナップショット管理テーブル401を更新して(ステップS108)、処理を終了する。
図21は、スナップショットリストア処理の処理手順を示すフローチャートである。スナップショットリストア処理は、管理システム203からの指示に応じて、スナップショットリストアプログラム412によって実行される。
まず、スナップショットリストアプログラム412は、リストア先となるDir情報管理テーブル407を割当て、VOL/スナップショット-Dir情報管理テーブル402を更新する(ステップS201)。
スナップショットリストアプログラム412は、最新世代をインクリメントし(ステップS202)、Dir情報世代管理ツリー405を更新する(ステップS203)。このとき、複製元にはインクリメント前の世代を設定し、複製先には最新世代を設定する。
スナップショットリストアプログラム412は、リストア先のボリュームのキャッシュ領域をパージする(ステップS204)。
スナップショットリストアプログラム412は、リストア元のボリュームDir情報管理テーブル407をリストア先のDir情報管理テーブル407へコピーする(ステップS205)。
その後、リストア先の旧Dir情報#を回収要求Dir情報#管理ビットマップ404に登録して(ステップS206)、処理を終了する。
図22は、スナップショット削除処理の処理手順を示すフローチャートである。スナップショット削除処理は、管理システム203からの指示に応じて、スナップショット削除プログラム413によって実行される。
まず、スナップショット削除プログラム413は、VOL/スナップショット-Dir情報管理テーブル402における削除対象のスナップショットのディレクトリ情報を無効化する(ステップS301)。
そして、スナップショット管理テーブル401を更新し(ステップS302)、削除対象のスナップショットの旧Dir情報#を回収要求Dir情報#管理ビットマップ404に登録して(ステップS303)、処理を終了する。
図23は、非同期ディレクトリ情報回収処理の処理手順を示すフローチャートである。非同期ディレクトリ情報回収処理は、非同期回収プログラム414によって、例えば定期的に実行される。
まず、非同期回収プログラム414は、回収要求Dir情報#管理ビットマップ404から回収対象Dir情報#を特定する(ステップS401)。このとき、非同期回収プログラム414は、Dir情報世代管理ツリー405を参照し、回収要求ビットが立っているディレクトリ情報のエントリを確認し、子を2つ持つディレクトリ情報は選択しない。
その後、非同期回収プログラム414は、未処理のエントリが存在するか否かを判定する(ステップS402)。
未処理のエントリが存在するならば(ステップS402;Yes)、非同期回収プログラム414は、ディレクトリ情報の処理対象エントリを決定し(ステップS403)、ディレクトリ情報の処理対象エントリをリードして、参照先のマッピング情報#を特定する(ステップS404)。
非同期回収プログラム414は、Dir情報世代管理ツリー405から子世代のディレクトリ情報が存在するか否かを判定する(ステップS405)。
子世代のディレクトリ情報が存在するならば(ステップS405;Yes)、非同期回収プログラム414は、子世代のディレクトリ情報の同一エントリをリードし、参照先マッピング情報#が一致するか否かを判定する(ステップS406)。
子世代のディレクトリ情報の同一エントリと参照先マッピング情報#が一致するならば(ステップS406;Yes)、ステップS402に戻る。
子世代のディレクトリ情報の同一エントリと参照先マッピング情報#が一致しない場合(ステップS406;No)、若しくは子世代のディレクトリ情報が存在しない場合(ステップS405;No)、非同期回収プログラム414は、親世代のディレクトリ情報世代#が処理対象エントリの参照先マッピング情報の世代#よりも古いか否かを判定する(ステップS407)。
親世代のディレクトリ情報世代#が処理対象エントリの参照先マッピング情報の世代#よりも古くなければ(ステップS407;No)、S402に戻る。
親世代のディレクトリ情報世代#が処理対象エントリの参照先マッピング情報の世代#よりも古いならば(ステップS407;Yes)、非同期回収プログラム414は、マッピング情報管理テーブルの対象エントリを初期化し、プール管理テーブル406の対象ページの割り当てを解放する(ステップS408)。その後、ステップS402に戻る。
ステップS402で未処理のエントリが存在しないと判定すれば(ステップS402;No)、非同期回収プログラム414は、回収要求Dir情報#管理ビットマップ404を更新する(ステップS409)とともに、Dir情報世代管理ツリー405を更新し(ステップS410)、処理を終了する。
図24は、フロントエンドライト処理の処理手順を示すフローチャートである。フロントエンドライト処理は、ホスト装置からのライト要求を受け付けた場合に、リード/ライトプログラム415によって実行される。
まず、リード/ライトプログラム415は、キャッシュ部303を参照し、ホスト装置からのライト要求の対象データがキャッシュヒットするかを判定する。リード/ライトプログラム415は、ライト要求の対象データがキャッシュヒットする場合(ステップS501;Yes)にS502へ処理を移し、キャッシュヒットしない場合(ステップS501;No)にS503へ処理を移す。S502では、リード/ライトプログラム415は、キャッシュ部303においてキャッシュ領域を確保する。
S503では、リード/ライトプログラム415は、S501でキャッシュヒットした対象データがダーティデータであるかを判定する。リード/ライトプログラム415は、S501でキャッシュヒットした対象データがダーティデータである場合(ステップS503;Yes)にS504へ処理を移し、ダーティデータでない場合(ステップS504;No)にS506へ処理を移す。
S504では、リード/ライトプログラム415は、S503で判定されたダーティデータのWR(WRight)世代#と、当該ライト要求の対象データの世代#が一致するかを判定する。WR世代#はキャッシュデータの管理情報(不図示)に保持される。又、当該ライト要求の対象データの世代#は最新世代#403から取得される。S504は、直前に取得されたスナップショットの対象データ(ダーティデータ)の追記処理がされていないうちに、当該ライト要求の対象データでダーティデータを更新してしまい、スナップショットのデータを書きつぶしてしまうことを防ぐ。リード/ライトプログラム415は、WR世代#と最新世代#が一致する場合(ステップS504;Yes)にS506へ処理を移し、WR世代#と最新世代#が一致しない場合(ステップS504;No)にS505へ処理を移す。
S505では、リード/ライトプログラム415は、追記処理を実行する。S505により、最新世代#と一致しないWR世代#のダーティデータをプールへ書き込み、キャッシュ部303からデステージする。
S506では、リード/ライトプログラム415は、S502で確保したキャッシュ領域、又は、追記処理が必要なダーティデータを追記処理して再度ダーティデータを生成可能になったキャッシュ領域へ、ライト要求の対象データを書き込む。
S507では、リード/ライトプログラム415は、S506でキャッシュ部303へ書き込んだキャッシュデータのWR世代#を、S504で比較した最新世代#に設定する。S508では、リード/ライトプログラム415は、ホスト装置へ正常応答(Good応答)を返却する。
図25は、バックエンドライト処理の処理手順を示すフローチャートである。バックエンドライト処理は、未反映のデータ(ダーティデータ)がキャッシュ部303上にある場合、未反映のデータをプール書き込む処理である。バックエンドライト処理は、フロントエンド処理と同期又は非同期で行われる。バックエンドライト処理は、リード/ライトプログラム415により実行される。
先ずS601では、リード/ライトプログラム415は、キャッシュ部303上にダーティデータが有るかを判定する。リード/ライトプログラム415は、キャッシュ部303上にダーティデータが有る場合(ステップS601;Yes)にS602へ処理を移し、ダーティデータが無い場合(ステップS602;No)に本バックエンドライト処理を終了する。S602では、リード/ライトプログラム415は、追記処理を実行する。
図26は、追記処理の処理手順を示すフローチャートである。追記処理は、スナップショット取得プログラム411やリード/ライトプログラム415に呼び出された追記プログラム416によって実行される。
まず、追記プログラム416は、追記後のマッピング情報管理テーブル408を更新し、マッピング情報の世代として最新世代を設定する(ステップS701)。
その後、追記プログラム416は、Dir情報管理テーブル407を更新し(ステップS702)、プール管理テーブル406を更新して(ステップS703)、キャッシュ部303からデステージする(ステップS704)。
その後、追記プログラム416は、Dir情報世代管理ツリー405を参照し(ステップS705)、Write対象VOLのDir情報世代#が追記前のマッピング情報世代#と一致するか否かを判定する(ステップS706)。
Write対象VOLのDir情報世代#が追記前のマッピング情報世代#より古ければ(ステップS706;No)、そのまま処理を終了する。
Write対象VOLのDir情報世代#が追記前のマッピング情報世代#と一致するならば(ステップS706;Yes)、追記プログラム416は、追記前のマッピング情報管理テーブル408の対象エントリを初期化し、プール管理テーブル406の対象ページを割り当て解放して(ステップS707)、処理を終了する。
実施例1では、書き込みを禁止したスナップショットを例示して説明を行ったが、書き込みを許可したスナップショットを取得することも可能である。本実施例2では、書き込みを許可したスナップショットの作成、スナップショットへの書き込み、リストアについて説明する。なお、本実施例2では、書き込みを許可したスナップショットをライタブルスナップショット(Writable Snapshot)という。
図27は、ライタブルスナップショットの取得についての説明図である。ライタブルスナップショットを作成する場合には、ストレージシステムは、プライマリボリュームのディレクトリ情報の複製を2つ作成し、1つを書き込み禁止(Read Only )のディレクトリ情報とし、1つを書き込み許可の(Read / Write用の)ディレクトリ情報とする。
そして、スナップショット作成前の前記最新世代情報を書き込み禁止のディレクトリ情報の世代とし、書き込み禁止のディレクトリ情報の世代をインクリメントした世代を書き込み許可のディレクトリ情報の世代とし、書き込み許可のディレクトリ情報の世代をインクリメントした世代を最新世代情報、及びプライマリボリュームのディレクトリ情報の世代とする。
図27では、スナップショット作成前の最新世代が0であるため、書き込み禁止のディレクトリ情報が世代0、書き込み許可のディレクトリ情報が世代1、スナップショット作成後の最新世代、及びプライマリボリュームのディレクトリ情報の世代が2となる。
また、Dir世代情報管理ツリーとしては、世代0に対応する書き込み禁止スナップショットが親となり、世代1に対応する書き込み許可のスナップショットと、世代2のプライマリボリュームが子となる。
図28は、ライタブルスナップショットへの書き込みについての説明図である。ライタブルスナップショットの「A0」を「A1」に書き換える場合には、ストレージシステムは、プールボリュームの新たな領域を確保し、書き込み対象のデータ「A1」を格納する。プールボリュームの新たなデータ「A1」に対しては、新たなマッピング情報「A1」が生成され、マッピング情報「A1」にはライタブルスナップショットの世代が世代情報として与えられる。このため、マッピング情報「A1」は世代1となる。
ストレージシステムは、世代1のディレクトリ情報とマッピング情報の参照関係(対応関係)を切り替えることで、プライマリボリュームにおける書き込み先のアドレスと書き込み対象のデータ「A1」を対応付ける。
この参照先の切り替えによりマッピング情報「A0」は、世代1からの参照が解消される。しかし、マッピング情報「A0」は、スナップショット#0の書き込み禁止のディレクトリ情報(世代0)から参照されたままであるため、無効化を許可すべきでない。
この無効化の可否の判定は、無効化可否の判定対象のマッピング情報の世代と、Write対象VOL(ここではWritable Snapshot #0)のディレクトリ情報の世代を比較して、一致していれば無効化可能、マッピング情報世代の方が古ければ無効化不可と判定すればよい。なお、マッピング情報世代の方が新しい状態は発生しない。
図29は、ライタブルスナップショットからのリストアの説明図である。
ライタブルスナップショットからリストアする場合には、書き込み許可のディレクトリ情報の複製を2つ作成し、1つを書き込み禁止(Read Only )のディレクトリ情報とし、1つを書き込み許可の(Read / Write用の)ディレクトリ情報とする。
新たな書き込み禁止のディレクトリ情報は、リストア時点のプライマリボリュームの状態を示し、リストア元の世代を引き継ぐ。新たな書き込み許可のディレクトリ情報は、プライマリボリュームの状態の最新状態を示し、リストア元の世代に2を加算した最新世代と同じ世代が付与される。そして、リストア元の書き込み許可のディレクトリ情報は、世代をインクリメントする。
図29では、この結果、最新世代は4となり、リストア元の書き込み禁止ディレクトリ情報が世代0、リストア先の書き込み禁止ディレクトリ情報が世代1、リストア先の旧ディレクトリ情報が世代2で、ともに世代0の子となる。リストア元の書き込み許可ディレクトリ情報が世代3、リストア先の書き込み許可ディレクトリ情報が世代4となり、ともに世代1の子となる。
リストアにより、世代2のディレクトリ情報は、プライマリボリュームとの対応関係を解除され、プライマリボリュームやスナップショットからの参照がなくなった非同期回収対象となる。すなわち、世代2が無効化の対象世代として特定される。
上述してきたように、実施例に開示したストレージシステムは、ホスト装置に対して論理ボリューム(プライマリボリューム)へのアクセスを提供するコントローラ(ストレージコントローラ210)と、データを格納する物理記憶デバイスとしてのSSD220とを有し、前記論理ボリュームの複製であるスナップショットを作成可能なストレージシステムであって、前記コントローラは、前記物理記憶デバイスを用いて前記論理ボリュームに対応させるプールボリュームを形成し、前記論理ボリューム及び前記スナップショットに対応付けられる第1の制御情報(ディレクトリ情報)と前記プールボリューム上のデータに対して対応付けられる第2の制御情報(マッピング情報)とを保持し、前記第1の制御情報と前記第2の制御情報とを対応付けることで、前記論理ボリューム及び前記スナップショットのデータを管理し、前記論理ボリュームと1又は複数のスナップショットの時系列を前記第1の制御情報に関連付けた世代情報により管理し、前記プールボリューム上の各データについて、当該データが作成された世代を示す世代情報を前記第2の制御情報に関連付けて管理し、前記論理ボリューム及び/又は前記スナップショットに係るデータの処理とは非同期に前記第1の制御情報及び/又は前記第2の制御情報の無効化を実行し、前記無効化にあたり、前記第1の制御情報に関連付けた世代情報と前記第2の制御情報に関連付けた世代情報とを参照して、無効化の可否を判定する。
かかる構成及び動作によれば、リストアの時点でメタ情報の無効化が不要となるためにリストアを高速化し、逆参照系のメタ情報(例えばPoolの格納データからプライマリボリュームまたはスナップショットへの参照情報)を持つことなく効率的に無効化可否判定を行うことができるので、データの複製に関係する処理を高速化できる。
また、開示のストレージシステムによれば、前記コントローラは、前記無効化の対象となる前記第1の制御情報の世代が対象世代として特定された場合に、前記対象世代の直系における1世代古い世代における参照状態と、前記対象世代の直系における1世代新しい世代における参照状態に基づいて、前記無効化の可否を判定する。
すなわち、開示のストレージシステムは、全世代を見る必要が無く、前後1世代で良いため、効率的に無効化可否の判定が可能である。
また、開示のストレージシステムによれば、前記コントローラは、最新世代情報を管理し、前記論理ボリュームについて前記スナップショットを作成した場合に、作成前の前記最新世代情報を作成したスナップショットの世代情報に格納して前記最新世代情報をインクリメントし、前記スナップショットから前記論理ボリュームのリストアを行った場合にも前記最新世代情報をインクリメントする。
このため、最新世代との比較により、無効化可否を効率的に管理することができる。
また、開示のストレージシステムによれば、前記コントローラは、前記論理ボリュームにおいて書き込みを行う場合に、前記プールボリュームの新たな領域に書き込み対象のデータを格納し、前記第1の制御情報と前記第2の制御情報の対応関係を切り替えることで、前記論理ボリュームにおける書き込み先のアドレスと書き込み対象のデータを対応付けるとともに、前記論理ボリュームの世代を前記第2の制御情報に関連付け、前記対応関係の切り替えにより前記第1の制御情報との対応関係が解消された第2の制御情報を無効化の対象とし、無効化の対象となった第2の制御情報の世代が、前記論理ボリュームの前記第1の制御情報に関連づいた世代と比較して一致していれば、無効化が可能であると判定する。
かかる構成によれば、ライト処理契機で既格納データの無効化を判定でき、効率的に無効化可否の判定が可能である。
また、開示のストレージシステムによれば、前記コントローラは、最新世代情報を管理し、前記スナップショットから前記論理ボリュームのリストアを行った場合に、リストア元のスナップショットの第1の制御情報を複製して前記論理ボリュームに対応付け、前記最新世代情報をインクリメントし、前記リストアの前に前記論理ボリュームに対応付けられていた第1の制御情報の世代情報を無効化の対象世代とて特定し、前記対象世代の第1の制御情報に対応付けられた第2の制御情報について、第2の制御情報に関連付けられた世代が、前記対象世代の直系における1世代古い世代と比較して新しく、かつ、前記対象世代の直系における1世代新しい世代からも参照を受けていない場合に、無効化が可能であると判定する。
かかる構成によれば、リストアに伴い発生する不要なデータやメタ情報の無効化処理を効率化できる。
また、開示のストレージシステムによれば、前記コントローラは、前記スナップショットを削除した場合に、削除したスナップショットの第1の制御情報に関連付けられた世代情報を無効化の対象世代として特定し、前記対象世代の第1の制御情報に対応付けられた第2の制御情報について、第2の制御情報に関連付けられた世代が、前記対象世代の直系における1世代古い世代と比較して新しく、かつ、前記対象世代の直系における1世代新しい世代からも参照を受けていない場合に、無効化が可能であると判定する。
かかる構成によれば、スナップショットの削除に伴い発生する不要なデータやメタ情報の無効化処理を効率化できる。
また、開示のストレージシステムによれば、前記コントローラは、前記第2の制御情報を無効化した場合に、対応するデータを無効化する。
このため、メタ情報とデータを非同期で効率的に無効化することができる。
また、開示のストレージシステムによれば、前記コントローラは、最新世代情報を管理し、前記論理ボリュームについて書き込み可能なスナップショットを作成する場合に、書き込み禁止の第1の制御情報と、書き込み許可の第1の制御情報とを作成し、スナップショット作成前の前記最新世代情報を前記書き込み禁止の第1の制御情報の世代とし、前記書き込み禁止の第1の制御情報の世代をインクリメントした世代を前記書き込み許可の第1の制御情報の世代とする。
かかる構成によれば、書き込み可能なスナップショットを採用する場合にも、データの複製に関係する処理の高速化を実現することができる。
なお、本発明は上述の実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、かかる構成の削除に限らず、構成の置き換えや追加も可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記録媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記録媒体に格納されたプログラムコードを読み出す。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記録媒体は本発明を構成することになる。このようなプログラムコードを供給するための記録媒体としては、例えば、フレキシブルディスク、CD-ROM、DVD-ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD-R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装できる。
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
100:計算機システム、201:ストレージシステム、202:サーバシステム、203:管理システム、210:ストレージコントローラ、401:スナップショット管理テーブル、402:VOL/スナップショット-Dir情報管理テーブル、403:最新世代#、404:回収要求Dir情報#管理ビットマップ、405:Dir情報世代管理ツリー、406:プール管理テーブル、407:Dir情報管理テーブル、408:マッピング情報管理テーブル、411:スナップショット取得プログラム、412:スナップショットリストアプログラム、413:スナップショット削除プログラム、414:非同期回収プログラム、415:リード/ライトプログラム、416:追記プログラム

Claims (9)

  1. ホスト装置に対して論理ボリュームを提供するコントローラと、データを格納する物理記憶デバイスとを有し、前記論理ボリュームの複製であるスナップショットを作成可能なストレージシステムであって、
    前記コントローラは、
    前記物理記憶デバイスを用いて前記論理ボリュームに対応させるプールボリュームを形成し、
    前記論理ボリューム及び前記スナップショットに対応付けられる第1の制御情報と前記プールボリューム上のデータに対して対応付けられる第2の制御情報とを保持し、
    前記第1の制御情報と前記第2の制御情報とを対応付けることで、前記論理ボリューム及び前記スナップショットのデータを管理し、
    前記論理ボリュームと1又は複数のスナップショットの時系列を前記第1の制御情報に関連付けた世代情報により管理し、
    前記プールボリューム上の各データについて、当該データが作成された論理ボリューム又はスナップショットの世代を示す世代情報を前記第2の制御情報に関連付けて管理し、
    前記論理ボリューム及び/又は前記スナップショットに係るデータの処理とは非同期に前記第1の制御情報及び/又は前記第2の制御情報を回収する無効化を実行し、
    前記無効化にあたり、前記第1の制御情報に関連付けた世代情報と前記第2の制御情報に関連付けた世代情報とを参照して、無効化の可否を判定する
    ことを特徴とするストレージシステム。
  2. 前記コントローラは、前記無効化の対象となる前記第1の制御情報の世代が対象世代として特定された場合に、前記対象世代の第1の制御情報に対応付けられた第2の制御情報について、前記対象世代の直系における1世代古い世代の論理ボリューム又はスナップショットから参照されているかと、前記対象世代の直系における1世代新しい世代の論理ボリューム又はスナップショットから参照されているかと、に基づいて、前記無効化の可否を判定する
    ことを特徴とする請求項1に記載のストレージシステム。
  3. 前記コントローラは、
    最新世代情報を管理し、
    前記論理ボリュームについて前記スナップショットを作成した場合に、作成前の前記最新世代情報を作成したスナップショットの世代情報に格納して前記最新世代情報をインクリメントし、
    前記スナップショットから前記論理ボリュームのリストアを行った場合にも前記最新世代情報をインクリメントする
    ことを特徴とする請求項1に記載のストレージシステム。
  4. 前記コントローラは、
    前記論理ボリュームにおいて書き込みを行う場合に、前記プールボリュームの新たな領域に書き込み対象のデータを格納し、前記第1の制御情報と前記第2の制御情報の対応関係を切り替えることで、前記論理ボリュームにおける書き込み先のアドレスと書き込み対象のデータを対応付けるとともに、前記論理ボリュームの世代を前記第2の制御情報に関連付け、
    前記対応関係の切り替えにより前記第1の制御情報との対応関係が解消された第2の制御情報を無効化の対象とし、
    無効化の対象となった第2の制御情報の世代が、前記論理ボリュームの前記第1の制御情報に関連づいた世代と比較して一致していれば、無効化が可能であると判定する
    ことを特徴とする請求項1に記載のストレージシステム。
  5. 前記コントローラは、
    最新世代情報を管理し、
    前記スナップショットから前記論理ボリュームのリストアを行った場合に、リストア元のスナップショットの第1の制御情報を複製して前記論理ボリュームに対応付け、前記最新世代情報をインクリメントし、
    前記リストアの前に前記論理ボリュームに対応付けられていた第1の制御情報の世代情報を無効化の対象世代として特定し、
    前記対象世代の第1の制御情報に対応付けられた第2の制御情報について、第2の制御情報に関連付けられた世代が、前記対象世代の直系における1世代古い世代と比較して新しく、かつ、前記対象世代の直系における1世代新しい世代からも参照を受けていない場合に、無効化が可能であると判定する
    ことを特徴とする請求項1に記載のストレージシステム。
  6. 前記コントローラは、
    前記スナップショットを削除した場合に、削除したスナップショットの第1の制御情報に関連付けられた世代情報を無効化の対象世代として特定し、
    前記対象世代の第1の制御情報に対応付けられた第2の制御情報について、第2の制御情報に関連付けられた世代が、前記対象世代の直系における1世代古い世代と比較して新しく、かつ、前記対象世代の直系における1世代新しい世代からも参照を受けていない場合に、無効化が可能であると判定する
    ことを特徴とする請求項1に記載のストレージシステム。
  7. 前記コントローラは、
    前記第2の制御情報を無効化した場合に、対応するデータを無効化する
    ことを特徴とする請求項1に記載のストレージシステム。
  8. 前記コントローラは、
    最新世代情報を管理し、
    前記論理ボリュームについて書き込み可能なスナップショットを作成する場合に、
    書き込み禁止の第1の制御情報と、書き込み許可の第1の制御情報とを作成し、
    スナップショット作成前の前記最新世代情報を前記書き込み禁止の第1の制御情報の世代とし、
    前記書き込み禁止の第1の制御情報の世代をインクリメントした世代を前記書き込み許可の第1の制御情報の世代とする
    ことを特徴とする請求項1に記載のストレージシステム。
  9. ホスト装置に対して論理ボリュームを提供するコントローラと、データを格納する物理記憶デバイスとを有し、前記論理ボリュームの複製であるスナップショットを作成可能なストレージシステムにおけるデータ複製方法であって、
    前記コントローラが、
    前記物理記憶デバイスを用いて前記論理ボリュームに対応させるプールボリュームを形成し、
    前記論理ボリューム及び前記スナップショットに対応付けられる第1の制御情報と前記プールボリューム上のデータに対して対応付けられる第2の制御情報とを保持し、
    前記第1の制御情報と前記第2の制御情報とを対応付けることで、前記論理ボリューム及び前記スナップショットのデータを管理し、
    前記論理ボリュームと1又は複数のスナップショットの時系列を前記第1の制御情報に関連付けた世代情報により管理し、
    前記プールボリューム上の各データについて、当該データが作成された論理ボリューム又はスナップショットの世代を示す世代情報を前記第2の制御情報に関連付けて管理し、
    前記論理ボリューム及び/又は前記スナップショットに係るデータの処理とは非同期に前記第1の制御情報及び/又は前記第2の制御情報を回収する無効化を実行し、
    前記無効化にあたり、前記第1の制御情報に関連付けた世代情報と前記第2の制御情報に関連付けた世代情報とを参照して、無効化の可否を判定する
    ことを特徴とするデータ複製方法。
JP2021165438A 2021-10-07 2021-10-07 ストレージシステム及びストレージシステムにおけるデータ複製方法 Active JP7429214B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2021165438A JP7429214B2 (ja) 2021-10-07 2021-10-07 ストレージシステム及びストレージシステムにおけるデータ複製方法
US17/691,159 US11531474B1 (en) 2021-10-07 2022-03-10 Storage system and data replication method in storage system
CN202211067365.7A CN115951819A (zh) 2021-10-07 2022-09-01 存储系统以及存储系统中的数据复制方法
US18/083,680 US11947811B2 (en) 2021-10-07 2022-12-19 Storage system and data replication method in storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021165438A JP7429214B2 (ja) 2021-10-07 2021-10-07 ストレージシステム及びストレージシステムにおけるデータ複製方法

Publications (2)

Publication Number Publication Date
JP2023056222A JP2023056222A (ja) 2023-04-19
JP7429214B2 true JP7429214B2 (ja) 2024-02-07

Family

ID=84492704

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021165438A Active JP7429214B2 (ja) 2021-10-07 2021-10-07 ストレージシステム及びストレージシステムにおけるデータ複製方法

Country Status (3)

Country Link
US (2) US11531474B1 (ja)
JP (1) JP7429214B2 (ja)
CN (1) CN115951819A (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009187142A (ja) 2008-02-04 2009-08-20 Hitachi Ltd コンピュータシステム及び物理ディスク回収方法
JP2013077074A (ja) 2011-09-29 2013-04-25 Fujitsu Ltd ストレージ装置、ストレージ制御装置およびコピー先データアクセス方法
JP2020047036A (ja) 2018-09-20 2020-03-26 株式会社日立製作所 ストレージコントローラ及びストレージ制御方法
US10963485B1 (en) 2020-07-31 2021-03-30 Hitachi, Ltd. Storage system and data replication method in storage system

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003316522A (ja) * 2002-04-26 2003-11-07 Hitachi Ltd 計算機システムおよび計算機システムの制御方法
US7899989B2 (en) * 2005-11-04 2011-03-01 Oracle America, Inc. Method and system for using a block allocation policy
JP4920979B2 (ja) * 2006-01-25 2012-04-18 株式会社日立製作所 ストレージ装置及びその制御方法
US8880480B2 (en) * 2007-01-03 2014-11-04 Oracle International Corporation Method and apparatus for data rollback
US8209410B2 (en) * 2007-08-23 2012-06-26 Ubs Ag System and method for storage management
US8566362B2 (en) * 2009-01-23 2013-10-22 Nasuni Corporation Method and system for versioned file system using structured data representations
JP2012505439A (ja) * 2009-02-25 2012-03-01 株式会社日立製作所 ストレージ装置及びその制御方法
CN102511030B (zh) * 2009-04-23 2015-05-20 株式会社日立制作所 计算机系统及其控制方法
WO2013076795A1 (ja) * 2011-11-21 2013-05-30 株式会社日立製作所 ストレージ装置の管理装置及び管理方法
US9436720B2 (en) 2013-01-10 2016-09-06 Pure Storage, Inc. Safety for volume operations
US9619154B2 (en) * 2013-01-18 2017-04-11 Hitachi, Ltd. Computer system, data management method, and host computer
US9053002B2 (en) * 2013-11-12 2015-06-09 International Business Machines Corporation Thick and thin data volume management
WO2015189988A1 (ja) * 2014-06-13 2015-12-17 株式会社日立製作所 ファイル再配置ポリシーを出力する管理サーバ、及びストレージシステム
US20170102874A1 (en) * 2014-06-20 2017-04-13 Hitachi, Ltd. Computer system
US10248319B2 (en) * 2015-03-31 2019-04-02 International Business Machines Corporation Storage pool capacity management
WO2016174764A1 (ja) * 2015-04-30 2016-11-03 株式会社日立製作所 管理装置および管理方法
US10324790B1 (en) * 2015-12-17 2019-06-18 Amazon Technologies, Inc. Flexible data storage device mapping for data storage systems
US9898223B2 (en) * 2016-03-28 2018-02-20 International Business Machines Corporation Small storage volume management
WO2019000368A1 (en) * 2017-06-30 2019-01-03 Intel Corporation DETERMINING THE OPTIMUM DATA SIZE FOR DATA DEDUPLICATION OPERATION
US10838624B2 (en) * 2018-01-31 2020-11-17 Hewlett Packard Enterprise Development Lp Extent pool allocations based on file system instance identifiers
JP6851350B2 (ja) * 2018-08-30 2021-03-31 株式会社日立製作所 ストレージシステム及び記憶制御方法
US11163476B2 (en) * 2019-10-04 2021-11-02 International Business Machines Corporation Dynamic rebalancing of free space between storage pools
US11636089B2 (en) * 2020-08-03 2023-04-25 EMC IP Holding Company LLC Deferred reclamation of invalidated entries that are associated with a transaction log in a log-structured array

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009187142A (ja) 2008-02-04 2009-08-20 Hitachi Ltd コンピュータシステム及び物理ディスク回収方法
JP2013077074A (ja) 2011-09-29 2013-04-25 Fujitsu Ltd ストレージ装置、ストレージ制御装置およびコピー先データアクセス方法
JP2020047036A (ja) 2018-09-20 2020-03-26 株式会社日立製作所 ストレージコントローラ及びストレージ制御方法
US10963485B1 (en) 2020-07-31 2021-03-30 Hitachi, Ltd. Storage system and data replication method in storage system

Also Published As

Publication number Publication date
US11947811B2 (en) 2024-04-02
CN115951819A (zh) 2023-04-11
US11531474B1 (en) 2022-12-20
JP2023056222A (ja) 2023-04-19
US20230123498A1 (en) 2023-04-20

Similar Documents

Publication Publication Date Title
US20210157523A1 (en) Storage system
US9146877B2 (en) Storage system capable of managing a plurality of snapshot families and method of snapshot family based read
KR101717644B1 (ko) 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법
US9311015B2 (en) Storage system capable of managing a plurality of snapshot families and method of operating thereof
US9454317B2 (en) Tiered storage system, storage controller and method of substituting data transfer between tiers
US9519666B2 (en) Snapshots and thin-provisioning in distributed storage over shared storage devices
US20140258628A1 (en) System, method and computer-readable medium for managing a cache store to achieve improved cache ramp-up across system reboots
US20160077746A1 (en) Optimized segment cleaning technique
US20140189204A1 (en) Information processing apparatus and cache control method
JP6450598B2 (ja) 情報処理装置、情報処理方法およびプログラム
US10552377B2 (en) Data discard method for journaling file system and memory management apparatus thereof
JP6398102B2 (ja) メモリシステム
US20190095132A1 (en) Computer system having data amount reduction function and storage control method
US11288006B2 (en) Storage system and volume copying method where changes to address conversion table is rolled back
JP7429214B2 (ja) ストレージシステム及びストレージシステムにおけるデータ複製方法
US20180307615A1 (en) Storage control apparatus and storage control method
KR101153688B1 (ko) 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템
JP5275691B2 (ja) ストレージシステム
JP7093799B2 (ja) ストレージシステムおよびリストア制御方法
US20210064244A1 (en) Storage system and restoration method
JP6640940B2 (ja) メモリシステムの制御方法
US11609698B1 (en) Data storage system and storage control method including storing a log related to the stored data
WO2019038897A1 (ja) ストレージシステム及び記憶制御方法
US20200387477A1 (en) Storage system and snapshot management method
JP2023152247A (ja) ストレージシステムおよびストレージ制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220701

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230905

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231018

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240126

R150 Certificate of patent or registration of utility model

Ref document number: 7429214

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150