[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP7093799B2 - ストレージシステムおよびリストア制御方法 - Google Patents

ストレージシステムおよびリストア制御方法 Download PDF

Info

Publication number
JP7093799B2
JP7093799B2 JP2020010492A JP2020010492A JP7093799B2 JP 7093799 B2 JP7093799 B2 JP 7093799B2 JP 2020010492 A JP2020010492 A JP 2020010492A JP 2020010492 A JP2020010492 A JP 2020010492A JP 7093799 B2 JP7093799 B2 JP 7093799B2
Authority
JP
Japan
Prior art keywords
volume
address
information
time
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
JP2020010492A
Other languages
English (en)
Other versions
JP2021117719A (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 JP2020010492A priority Critical patent/JP7093799B2/ja
Priority to US17/006,095 priority patent/US20210232466A1/en
Publication of JP2021117719A publication Critical patent/JP2021117719A/ja
Application granted granted Critical
Publication of JP7093799B2 publication Critical patent/JP7093799B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/128Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • 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/061Improving I/O performance
    • 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
    • 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Databases & Information Systems (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • Human Computer Interaction (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Retry When Errors Occur (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、ストレージシステムおよびリストア制御方法に関する。
ストレージシステムの障害や人的な操作ミスによるデータ喪失、またはランサムウェアなどによるデータ改ざんが発生した場合、バックアップ等からできる限りデータ損失なく復元し、正常な状態に速やかに復旧することが要求される。ストレージ管理者はデータの復元に要する時間をRTO(Recovery Time Objective)、データの復元する時点の目標をRPO(Recovery Point Objective)として設計し、バックアップ計画を立てる。
ストレージシステムの格納データのバックアップとしては、スナップショットを利用する方法が知られている。データ喪失やデータ改ざんが発生した場合には、スナップショットを指定してリストアを行うことで過去の正常な状態に復元することができる。特許文献1には、スナップショット技術としてCoW(Copy on Write)およびCaW(Copy after Write)の技術が開示されている。CoWは保護対象である業務ボリュームに対するデータのライト処理(更新ライト)に同期して、旧データを別領域に退避する技術である。CaWは更新ライトとは非同期にデータを別領域に退避する技術である。
また、バックアップとしてはCDP(Continuous Data Protection)の技術も知られている。CDPは指定された過去のどの時点(リカバリポイント)へも復旧できる技術である。特許文献2には、CDPの技術として、継続的に更新ライトの履歴情報を保管し、障害等が検出されると、データ回復時点となるリカバリポイントを指定して、履歴情報からデータを復元する技術が開示されている。
特許第5657801号公報 特開2008-65503号公報
特許文献1に開示されたCoW技術は、保護対象である業務ボリュームに対するライト処理と同期して、旧データの退避が必要であり、業務ボリュームの性能が悪化する問題がある。特に、データ障害時のデータ損失をおさえるためにRPOを短く設計し、スナップショット取得を短い間隔で行った場合、定常的に業務ボリュームの応答性能が悪化する。CaW技術は、応答性能の悪化を抑えることができるが、データの退避が必要であることはCoWと同様であり、業務ボリュームのスループットは悪化する問題は残る。
また、特許文献2に開示されたCDPは、履歴量が多くなると復元時間(RTO)が長くなる問題がある。
本発明の目的は、業務ボリュームの性能影響を抑えつつ、リストア処理時間を短縮するストレージシステムを提供することにある。
上記課題を解決するため本発明のストレージシステムの一側面は、業務ボリュームをサーバシステムに提供するコントローラを含むストレージシステムにおいて、ストレージシステムは、業務ボリュームに格納されるデータを追記して格納する追記ボリュームを有する。コントローラは、業務ボリュームの論理アドレスと、追記ボリュームの論理アドレスとの関係を管理する第1のアドレス変換情報と、業務ボリュームの論理アドレスと業務ボリュームのデータが更新される前の旧データを格納する追記ボリュームの論理アドレスとの関係を管理すると共に、業務ボリュームのデータが更新された時刻とを、履歴情報として管理するアドレス変換履歴情報とを、管理する。
コントローラは、アドレス変換履歴情報のデータ量が所定の閾値に達する度に、業務ボリュームのスナップショットを取得するタイミングを示す第1のターゲット時刻を、決定し、業務ボリュームに対して、リストアするタイミングを示すリカバリポイントを含むリカバリポイント設定コマンドを受領する度に、アドレス変換履歴情報に、リカバリポイントと共にリカバリポイント設定コマンドを受領した時刻を格納する。
さらに、コントローラは、業務ボリュームに対して、リストアするタイミングを示す第2のターゲット時刻に関する情報とリストア先ボリュームを含むリストアコマンドを受領すると、第1のターゲット時刻で取得されたスナップショットと、アドレス変換履歴情報に格納されたリカバリポイントとを用いて、業務ボリュームをリストアする。
本発明によれば、業務ボリュームへの性能影響を抑えつつ、リストア処理時間を短縮することができる。
ストレージシステムを含むシステムの構成例を示す図である。 メモリの構成と、メモリ内のプログラム及び管理情報との例を示す図である。 ストレージシステム内の論理構成の例を示す図である。 VOL/Snapshot管理テーブルの例を示す図である。 アドレス変換テーブルの例を示す図である。 アドレス更新履歴テーブルの例を示す図である。 リカバリポイント管理テーブルの例を示す図である。 Snapshot世代管理テーブルの例を示す図である。 リストア管理テーブルの例を示す図である。 リード処理の流れを示す図である。 フロントエンドライト処理の流れを示す図である。 データ削減処理の流れを示す図である。 追記処理の流れを示す図である。 リカバリポイント設定処理の流れを示す図である。 Snapshot生成処理の流れを示す図である。 Snapshot生成・リストア共通処理の流れを示す図である。 リストア処理の流れを示す図である。
以下の説明において、「インターフェース」は、1以上のインターフェースでよい。この1以上のインターフェースは、1以上の同種の通信インターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし、2以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明において、「メモリ」は、1以上のメモリであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。
また、以下の説明において、「PDEV」は、1以上のPDEVであり、典型的には補助記憶デバイスでよい。「PDEV」は、物理的な記憶デバイス(Physical storage Device)を意味し、典型的には、不揮発性の記憶デバイス、例えばHDD(Hard Disk Drive)又はSSD(Solid State Drive)である。もしくは、フラッシュパッケージでもよい。
フラッシュパッケージは不揮発性記憶媒体を含む記憶デバイスである。フラッシュパッケージの構成例としては、コントローラと、計算機システムからのライトデータを記憶するための記憶媒体であるフラッシュメモリを有する。コントローラは、ドライブI/F、プロセッサ、メモリ、フラッシュI/F、圧縮機能を有する論理回路を有し、これらは内部ネットワークを介して相互接続されている。圧縮機能は無くてもよい。
また、以下の説明において、「記憶部」は、メモリとPDEVの少なくとも1つ(典型的には少なくともメモリ)である。
また、以下の説明において、「処理部」は、1以上のプロセッサである。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、GPU(Graphics Processing Unit)のような他種のプロセッサでもよい。少なくとも1つの処理部は、シングルコアでもよいしマルチコアでもよい。
また、少なくとも1つのプロセッサは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサでもよい。
また、以下の説明において、「xxxテーブル」といった表現により、入力に対して出力が得られる情報を説明することがあるが、この情報は、どのような構造のデータでもよいし、入力に対する出力を発生するニューラルネットワークのような学習モデルでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。
また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
また、以下の説明において、「プログラム」を主語として処理を説明する場合があるが、プログラムは、処理部によって実行されることで、定められた処理を、適宜に記憶部及び/又はインターフェースなどを用いながら行うため、処理の主語が、処理部(或いは、そのプロセッサを有するコントローラのようなデバイス)とされてもよい。
プログラムは、計算機のような装置にインストールされてもよいし、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体にあってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
また、以下の説明において、「計算機システム」は、1以上の物理的な計算機を含んだシステムである。物理的な計算機は、汎用計算機でも専用計算機でもよい。物理的な計算機は、I/O(Input/Output)要求を発行する計算機(例えばホスト計算機やサーバシステムと呼ぶ)として機能してもよいし、I/O要求に応答してデータのI/Oを行う計算機(例えばストレージ装置)として機能してもよい。
すなわち、計算機システムは、I/O要求を発行する1以上のサーバシステム、及び、I/O要求に応答してデータのI/Oを行う1以上のストレージ装置であるストレージシステムのうちの少なくとも1つでよい。少なくとも1つの物理的な計算機において、1以上の仮想的な計算機(例えばVM(Virtual Machine))が実行されてもよい。仮想的な計算機は、I/O要求を発行する計算機でもよいし、I/O要求に応答してデータのI/Oを行う計算機でもよい。
また、計算機システムは、1以上(典型的には複数)の物理的なノード装置で構成された分散システムでよい。物理的なノード装置は、物理的な計算機である。
また、物理的な計算機(例えばノード装置)が所定のソフトウェアを実行することにより、その物理的な計算機、又は、その物理的な計算機を含んだ計算機システムに、SDx(Software-Defined anything)が構築されてもよい。SDxとしては、例えば、SDS(Software Defined Storage)又はSDDC(Software-defined Datacenter)が採用されてもよい。
例えば、ストレージ機能を有するソフトウェアが物理的な汎用の計算機で実行されることにより、SDSとしてのストレージシステムが構築されてもよい。
また、少なくとも1つの物理的な計算機(例えばストレージ装置)が、サーバシステムとしての1以上の仮想的な計算機と、ストレージシステムのストレージコントローラ(典型的には、I/O要求に応答してデータをPDEVに対して入出力する装置)としての仮想的な計算機とが実行されてもよい。
言い換えれば、このような少なくとも1つの物理的な計算機は、サーバシステムの少なくとも一部としての機能と、ストレージシステムの少なくとも一部としての機能の両方を有してもよい。
また、計算機システム(典型的にはストレージシステム)は、冗長構成グループを有してよい。冗長構成は、Erasure Coding、RAIN(Redundant Array of Independent Nodes)及びノード間ミラーリングのように複数のノード装置での構成でもよいし、PDEVの少なくとも一部としての1以上のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループのように単一の計算機(例えばノード装置)での構成でもよい。
また、以下の説明において、種々の対象の識別情報として、識別番号が使用されるが、識別番号以外の種類の識別情報(例えば、英字や符号を含んだ識別子)が採用されてもよい。
また、以下の説明において、同種の要素を区別しないで説明する場合には、参照符号(又は、参照符号のうちの共通符号)を使用し、同種の要素を区別して説明する場合は、要素の識別番号(又は参照符号)を使用することがある。
以下、図面を参照して、実施例1を説明する。
図1は、計算機システム100に係る構成の一例を示す図である。
計算機システム100は、ストレージシステム101と、サーバシステム102と、管理システム103と、ネットワークとを備える。ストレージシステム101とサーバシステム102とは、FC(Fibre Channel)ネットワーク104を介して接続される。ストレージシステム101と管理システム103とは、IP(Internet Protocol)ネットワーク105を介して接続される。なお、FCネットワーク104およびIPネットワーク105は、これに限らず、例えば、同一の通信ネットワークであってもよい。
ストレージシステム101は、1つ以上のストレージコントローラ110(以下、コントローラと呼ぶ場合がある)と、1つ以上のPDEV120とを備える。ストレージコントローラ110には、PDEV120が接続されている。
ストレージコントローラ110は、1つ以上のプロセッサ111と、1つ以上のメモリ112と、P-I/F113と、S-I/F114と、M-I/F115とを備える。
プロセッサ111は、処理部の一例である。プロセッサ111は、圧縮および伸張を行うハードウェア回路を含んでいてもよい。本実施の形態では、プロセッサ111は、プログラムを実行するものであり、リードおよびライトに係る処理、リストアに係る処理、圧縮および伸張の処理等を行う。
メモリ112は、記憶部の一例である。メモリ112は、プロセッサ111が実行するプログラム、プロセッサ111が使用するデータ等を記憶する。プロセッサ111は、メモリ112に格納されているプログラムを実行する。なお、本実施の形態では、例えば、メモリ112およびプロセッサ111の組が二重化されている。
P-I/F113、S-I/F114およびM-I/F115は、インターフェースの一例である。
P-I/F113は、PDEV120とストレージコントローラ110との間のデータのやり取りを仲介する通信インターフェースデバイスである。P-I/F113には、複数のPDEV120が接続される。
S-I/F114は、サーバシステム102とストレージコントローラ110との間のデータのやり取りを仲介する通信インターフェースデバイスである。S-I/F114に、FCネットワーク104を介して、サーバシステム102が接続される。
M-I/F115は、管理システム103とストレージコントローラ110の間のデータのやり取りを仲介する通信インターフェースデバイスである。M-I/F115に、IPネットワーク105を介して、管理システム103が接続される。
サーバシステム102は、1つ以上のホスト装置を含んで構成される。サーバシステム102(ホスト装置)は、ストレージコントローラ110に対して、I/O先(例えば、LUN(Logical Unit Number)のような論理ボリューム番号、LBA(Logical Block Address)のような論理アドレス等)を指定したI/O要求(ライト要求またはリード要求)を送信する。
管理システム103は、1つ以上の管理装置を含んで構成される。管理システム103は、ストレージシステム101を管理する。
PDEV120は、典型的には補助記憶デバイスである。「PDEV」は、記憶装置である物理的な記憶デバイス(Physical storage Device)を意味し、典型的には、不揮発性の記憶デバイス、例えばHDD(Hard Disk Drive)又はSSD(Solid State Drive)である。もしくは、フラッシュパッケージでもよい。
以上、一実施形態を説明したが、これは1つの例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。
本発明は、他の種々の形態でも実施することが可能である。例えば、ライト要求のようなI/O要求の送信元(I/O元)は、上述の実施形態では、サーバシステム101であるが、ストレージシステム100における図示しないプログラム(例えば、VM上で実行されるアプリケーションプログラム)であってもよい。
図2は、メモリ112の構成と、メモリ112内のプログラム及び管理情報との例を示す図である。メモリ112は、ローカルメモリ201、キャッシュメモリ202、及び共有メモリ203というメモリ領域を含む。これらのメモリ領域のうちの少なくとも1つは、独立したメモリであってもよい。ローカルメモリ201は、ストレージコントローラ内で、このローカルメモリ201を含むメモリ112と同一組に属するプロセッサ111により使用される。
ローカルメモリ201には、リードプログラム211、フロントエンドライトプログラム212、バックエンドエンドライトプログラム213、データ量削減プログラム214、スナップショット制御プログラム215と、が格納される。これらのプログラムについては後述する。
キャッシュメモリ202には、PDEV220に対してライト又はリードされるデータセットが一時的に格納される。
共有メモリ203は、ストレージコントローラ内で、この共有メモリ203を含むメモリ112と同一組に属するプロセッサ111、及び異なる組に属するプロセッサ111の両方により使用される。共有メモリ203には、管理情報が格納される。
管理情報は、VOL/Snapshot管理テーブル221、アドレス変換テーブル222、アドレス変換履歴テーブル223、リカバリポイント管理テーブル224、Snapshot世代管理テーブル225、リストア管理テーブル226と、を含む。
図3は、ストレージシステム101内の論理構成の例を示す図である。ストレージシステム101は、PVOL300、SVOL301、内部スナップショット302、追記ボリューム303、プール304といった論理構成を有する。また、ストレージシステム101は、PVOL300、SVOL301、内部スナップショット302に対応したアドレス変換テーブル222を管理する。
PVOL300は、サーバシステム102に提供され、サーバシステム102がデータを書き込む論理ボリューム(業務ボリューム)である。
SVOL301はサーバシステム102又は管理システム103から設定されたPVOL300の過去の時点(リカバリポイントと呼ぶ)のデータを復元したボリュームである。
内部スナップショット302も、SVOL301と同様、PVOL300の過去の時点を復元したボリュームであるが、サーバシステム102や管理システム103からの指示で生成するものではなく、ストレージシステム101が内部的に生成するボリュームである。
追記ボリューム303は、追記用の論理ボリュームである。1つの追記ボリューム303には、1つ又は複数のPVOL300、SVOL301、内部スナップショット302が関連付けられる。例えば、ストレージシステム101は、一つのPVOLの論理アドレスに対する更新データを受け取った場合、追記ボリューム303は更新データによって書き換えられる旧データを保持したまま、追記ボリュームの旧データの格納位置とは異なる論理アドレスに更新データを格納する。
プール304は、1以上のRAIDグループ(図示せず)に基づく論理記憶領域である。プール304は、複数のページ306で構成されている。
追記ボリューム303には、データの書き込みに応じてプール304からページ306を割り当てられる。
ストレージコントローラ110はサーバシステム102から受領したライトデータを固定長データセット307に分割し、データセット307の単位で圧縮する。
追記ボリューム303には圧縮後のデータセットが割り当てられたページ306へ追記される。ページ306において、圧縮後のデータセットが占める領域を、以下の説明では「サブブロック308」と言う。
アドレス変換テーブル222は、PVOL300、SVOL301、内部スナップショット302毎に設けられている。アドレス変換テーブル222はPVOL300、SVOL301、内部スナップショット302の論理アドレスと、追記ボリューム303の論理アドレスとの対応関係を保持したテーブルである。
図4は、VOL/Snapshot管理テーブル221の例を示す図である。本実施形態では、PVOL300やSVOL301のようにサーバシステム102に提供される論理ボリュームの情報も、内部スナップショット302や追記ボリューム303のようにサーバシステム102に提供されない論理ボリュームの情報も、VOL/Snapshot管理テーブル221で管理する。各ボリュームは、例えば、管理システム103からのボリューム作成指示に応じて、ストレージコントローラ110が作成する。作成されたボリュームは、VOL/Snapshot管理テーブル221にて管理される。
VOL/Snapshot管理テーブル221は、VOL又はSnapshotに関する情報を保持する。VOL管理テーブル221は、VOL毎にエントリを有する。各エントリは、VOL#401、VOL属性402、VOL容量403、及びプール#404を格納する。
VOL#401は、VOL又は内部スナップショットの番号(識別番号)の情報である。
VOL属性402は、VOL又は内部スナップショットの属性情報である。例えば、PVOLは”PVOL”、SVOLは”SVOL”、内部スナップショットは”Snapshot”、追記ボリュームは“追記”と保持される。
VOL容量403は、VOL又は内部スナップショットの論理容量の情報である。
プール#404は、VOLに関連付けられているプールを識別するためのプール番号の情報である。
図5は、アドレス変換テーブル222の例を示す図である。アドレス変換テーブル222は、PVOL300、SVOL301、内部スナップショット302毎に用意される。アドレス変換テーブル222は、参照元の論理アドレス(PVOL300、SVOL301、内部スナップショット302の論理アドレス)と参照先の論理アドレス(追記ボリューム303の論理アドレス)との関係に関する情報を保持し、管理する。
例えば、アドレス変換テーブル222は、固定長データセット307毎にエントリを有する。各エントリは、VOL内アドレス501、参照先VOL#502、参照先VOL内アドレス503、データサイズ504といった情報を格納する。
VOL内アドレス501は、PVOL300、SVOL301、内部スナップショット302における固定長データセットの論理アドレスの情報である。参照先VOL#502は、該データセットの参照先VOL(追記ボリューム)を識別する情報である。
参照先VOL内アドレス503は、該データセットの参照先VOL(追記ボリューム303)内の論理アドレスの情報である。
データサイズ504は、圧縮後データセットのサイズの情報である。
図6は、アドレス変換履歴テーブル223の例を示す図である。アドレス変換履歴テーブル223は、PVOL300、又はSVOL301毎に設定される。
アドレス変換履歴テーブル223には、PVOL300、又はSVOL301のアドレス変換テーブル222が更新されると、新たにエントリがテーブルに追加される。例えば、PVOL300に対する更新ライトにより、PVOL300のアドレスと、参照先VOLである追記ボリュームのアドレスとの関係が更新されると、アドレス変換履歴テーブル223に新たなエントリが追加される。
アドレス変換履歴テーブル223は、SEQ#601、アドレス変換テーブル222のエントリが退避された時刻(退避時刻602)、更新データに関するPVOL内の論理アドレス(更新アドレス603)、参照先VOL#604、参照先VOL内アドレス605、データサイズ606を保持する。
SEQ#601は、PVOL300に対し、ライト時に割り当てられるライト順を管理するシーケンス番号であり、更新ライトに対して付与される情報である。
退避時刻602は、PVOL300、又はSVOL301のデータが更新された時刻(更新データによってアドレス変換テーブル222のエントリが退避された時刻)である。t0が最も古く、t4が最も新しい時刻となる。
更新アドレス603は、アドレス変換テーブル222の退避対象となったエントリのVOL内アドレス501と同じ情報であり、サーバシステム102に提供されるPVOL300等の論理アドレスである。
参照先VOL#604、参照先VOL内アドレス605、データサイズ606も、アドレス変換テーブル222の退避対象となった旧データに関するエントリの参照先VOL#502、参照先VOL内アドレス503、データサイズ504と同じ情報である。即ち、参照先VOL#604、参照先VOL内アドレス605、データサイズ606は、退避データである旧データを格納する追記ボリューム内のアドレスに関する情報である。
図6のアドレス変換履歴テーブル223は、PVOL300に対する更新データによって旧データとなるデータに関して、PVOL300の論理アドレスである更新アドレス603と、旧データの格納先を示す追記ボリュームを特定する参照先VOL#604、参照先VOL内アドレス605、データサイズ606との対応を管理する。
これにより、PVOL300に対する更新データによって退避された旧データの格納先と、更新データのPVOL300内の論理アドレスとの関係を管理することができる。
アドレス変換履歴テーブル223は、SEQ#順にエントリが格納される。
図7は、リカバリポイント管理テーブル224の例を示す図である。リカバリポイント管理テーブル224は、PVOL300、又はSVOL301毎に設定される。
リカバリポイント管理テーブル224の各エントリは、サーバシステム102、又は管理システム103から、リカバリポイント設定コマンドを受ける度に追加される。リカバリポイント設定コマンドには、リストアされる対象となるボリューム(PVOL等)が含まれる。
リカバリポイント管理テーブル224の各エントリには、リカバリポイント#701と、リカバリポイント設定時刻(以下、設定時刻702)、SEQ#703といった情報を格納する。
リカバリポイント#701は、設定されたリカバリポイントを一意に決定する識別情報となる番号である。
設定時刻702は、リカバリポイント設定コマンドを受けた時刻である。
SEQ#703は、アドレス変換履歴テーブル223に保持されるSEQ#601と共通の情報であり、ライトとリカバリポイント設定コマンドの順番を管理するシーケンス番号である。図7の設定時刻702と同時刻の図6の退避時刻602に対応するSEQ#601が、SEQ#703に設定される。例えば、リカバリポイント#701「0」は、設定時刻「t2」であるため、アドレス変換履歴テーブル223の退避時刻t1の後に、SEQ#601「2」として格納され、同じ値がSEQ#703「2」として格納される。
尚、図7のリカバリポイント管理テーブル224の情報は、ストレージコントローラ110から管理システム103に提供される。管理システム103から、リカバリポイント管理テーブル224のリカバリポイント#701を、PVOLのリストアされる時点として指定することができる。図7のリカバリポイント管理テーブル224の情報はサーバシステム102にも提供されても良い。
図8は、Snapshot世代管理テーブル225を説明する図である。
Snapshot世代管理テーブル225は、PVOL300とPVOL300に対して取得されたSnapshotとを管理する。Snapshot世代管理テーブル225は、PVOL番号(PVOL#801)と、最新世代番号(最新世代#802)と、世代番号(世代#803)と、Snapshot時刻804とSnapshot番号(Snapshot#805)と、SEQ#806とを対応付けたエントリを管理する。
PVOL#801は、PVOLをストレージ装置内で一意に特定する番号である。
最新世代#802は、対応するPVOLにおける最新の内部スナップショットの世代番号である。PVOL#801「0」の最新世代#802は「3」であるため、Snapshotは3世代取得されていることを表している。
世代#803は、スナップショットの世代番号であり、スナップショット間の新旧の関係を特定するために用いる情報である。PVOL#801「0」の世代#803「1」は、3世代取得されたSnapshotの内、最も古い世代であることを示している。
Snapshot時刻804は、どの時点のPVOLの状態を表したSnapshotかを識別するための時刻情報である。本実施例では、Snapshotは非同期で生成される、即ち、管理システム103やサーバシステム102からの要求ではなく、ストレージ装置内で任意のタイミングで生成されるため、Snapshot時刻804はSnapshotが生成された時刻とは異なる。
Snapshot#805は、PVOLとSnapshotとの関係を一意に特定する番号であり、例えば、各PVOLに対する通し番号等の識別情報である。
SEQ#806は後述するが、Snapshot時刻の近くの更新データのSEQ#を特定する情報である。SEQ#806はリストア指示された際にアドレス変換履歴テーブル223の履歴情報を探索する開始点となる。
図9は、リストア管理テーブル226を説明する図である。リストア管理テーブル226は、PVOL300単位、又はSVOL301単位で管理され、アドレス変換履歴テーブル223に退避されたエントリ(アドレス変換情報)からリストア対象のエントリの探索結果を格納する。
サーバシステム102、又は管理システム103からリカバリポイント#を指定するリストアコマンドを受けると、指定されたリカバリポイントの時点にデータを回復させるために必要となるアドレス変換情報を管理する。リストアコマンドには、リストア処理の対象となるボリューム#と、リカバリポイント#とが含まれる。
例えば、PVOL300に対し、リストアされる時点として、リカバリポイント#701「0」が管理システム103で指定されると、リカバリポイント管理テーブル224より、リカバリポイント#701「0」に対応する設定時刻702「t2」とSEQ#703「2」が読み出される。リカバリポイント#701「0」時点のPVOL300のイメージを取得するため、アドレス変換履歴テーブル223より、SEQ#703「2」に対応する退避時刻602「t2」のエントリの前のエントリであるSEQ#「1」に対応する情報(更新アドレス603、参照先VOL#604、参照先VOL内アドレス605、データサイズ606)を取得し、リストア管理テーブル226に設定する。このように、リストア管理テーブル226は、PVOL300の論理アドレス901と、リカバリポイント時点におけるVOL内アドレス901に対応する、SEQ#601「1」のデータの格納位置である参照先VOL#902、参照先VOL内アドレス903、データサイズ904とを対応して管理する。
図10は、リード処理の流れの例を示す図である。
リード処理は、PVOL300、又はSVOL301に対するリード要求を受け付けた場合に行われる。
リードプログラム211は、キャッシュメモリ202上にリード要求を受けたアドレスのデータが存在するか否かを判定する(ステップS2001)。
ステップS2001の判定が真の場合(キャッシュヒットした場合)、ステップS2005に遷移する。
ステップS2001の判定が偽の場合(キャッシュミスした場合)、PVOL300、又はSVOL301のアドレス変換テーブル222を参照する(ステップ2002)。
リードプログラム211は、アドレス変換テーブル222に基づいて参照先VOL内アドレス503およびデータサイズ504を特定する(ステップ2002)。
リードプログラム211は、特定した参照先VOL内アドレス503からリード対象データの格納ページを特定し、特定したページから、圧縮後データセットを読み出し、圧縮後データセットを伸張し、伸張後データセットをキャッシュメモリ202に格納する(ステップ2004)。
リードプログラム211は、キャッシュメモリに格納されたデータをリード要求の発行元に転送する(ステップS2005)。
図11は、フロントエンドライト処理の流れの一例を示す図である。フロントエンドライト処理は、VOL(例えば、業務ボリューム300)に対するライト要求を受け付けた場合に行われる。
フロントエンドライトプログラム212は、キャッシュヒットしたか否かを判定する(ステップS2101)。ライト要求について、「キャッシュヒット」とは、ライト要求に従うライト先に対応したキャッシュセグメント(キャッシュメモリ202における領域)が確保されていることを意味する。
ステップS2101の判定結果が偽である場合(ステップS2101:NO)、フロントエンドライトプログラム212は、キャッシュメモリ202からキャッシュセグメントを確保する(ステップS2102)。
ステップS2101の判定結果が真である場合(ステップS2101:YES)、フロントエンドライトプログラム212は、キャッシュセグメントのデータがダーティデータであるか否かを判定する(ステップS2103)。「ダーティデータ」とは、キャッシュメモリ202に記憶されているデータであって、PDEV120に未格納のデータを意味する。すなわち、今回のライト要求より以前にライトされたデータである。
ステップS2103の判定結果が真である場合(ステップS2103:YES)、フロントエンドライトプログラム212は、ダーティデータに対してデータ量削減処理を行う(ステップS2104)。
ステップS2103の判定結果が偽である場合(ステップS2103:NO)、または、ステップS2102もしくはステップS2104の処理を行った場合、フロントエンドライトプログラム212は、今回のライト要求に対応するSEQ#を付与する。(ステップS2105)。
続いて、フロントエンドライトプログラム212は、確保されているキャッシュセグメントに、今回のライト要求に従うライト対象データを書き込む(ステップS2106)。
続いて、フロントエンドライトプログラム212は、ライト対象データを構成する1以上のデータセットの各々についてのライトコマンドを、データ量削減ダーティキューに蓄積する(ステップS2107)。
「データ量削減ダーティキュー」とは、ダーティのデータセット(ページに未格納のデータセット)であり圧縮が必要なデータセットのライトコマンドが蓄積されるキューである。
続いて、フロントエンドライトプログラム212は、GOOD応答(ライト完了報告)を、ライト要求の送信元に返す(ステップS2108)。なお、ライト要求に対するGOOD応答は、バックエンドライト処理が完結した場合に返されてもよい。
なお、ストレージコントローラ110からPDEV120に対する書込みであるバックエンドライト処理は、フロントエンド処理と同期または非同期で行われてよい。バックエンドライト処理は、バックエンドライトプログラム313により行われる。データ圧縮処理を行わない場合、ステップS2104は必要ない。
図12は、データ量削減処理の流れの一例を示す図である。データ量削減処理は、例えば、データ削減プログラム214で行われる。なお、データ量削減処理は、例えば、定期的に行われてもよい。データ量削減処理は、データ圧縮を行わない場合、本実施例において必須の処理ではないため、簡単に処理の流れを説明する。
データ量削減プログラム214は、データ量削減ダーティキューを参照し(ステップS2201)、データ量削減ダーティキューにコマンドが有るか否かを判定し(ステップS2202)、判定結果が偽である場合(ステップS2202:NO)、データ量削減処理を終了する。
ステップS2202の判定結果が真である場合(ステップS2202:YES)、データ量削減プログラム214は、データ量削減ダーティキューを参照し、ダーティデータセットを選択する(ステップS2203)。
続いて、データ量削減プログラム214は、アドレス変換テーブル222の対応するエントリ情報を退避する(ステップS2204)。より具体的には 、データ量削減プログラム214は、フロントエンドライト処理のステップ2105によって確保された当該ダーティデータセットに対応するSEQ#をSEQ#601に設定し、現在の時刻を退避時刻602に設定する。データ量削減処理を行わない場合、更新データをPDEVに書き込む際に、SEQ#601を設定すると考えればよい。
続いて、データ量削減プログラム214は、ダーティデータセットについて追記処理を行う(ステップS2205)。なお、追記処理については、図13を用いて後述する。
追記処理を終了した場合、データ量削減プログラム214は、ステップS2203で選択したダーティデータセットを破棄(例えば、キャッシュメモリ202から削除)し(ステップS2206)、ステップS2201に処理を移す。
図13は、追記処理の流れの一例を示す図である。データ量削減プログラム214は、ライトデータセットを圧縮し、圧縮後のデータセットを例えばローカルメモリ301に格納する(ステップS2301)。データ圧縮をしない場合、ステップS2301は必要なく、スキップされる。
データ量削減プログラム214は、圧縮後のデータセットのサイズ以上の空きが、ライト先ボリュームに対応した追記ボリューム303に割当済のページ461に有るか否かを判定する(ステップS2302)。
この判定をするために、例えば、追記ボリューム303に対応した追記先アドレスの情報として登録された論理アドレスが特定され、特定された論理アドレスが属する領域に割り当てられているページの番号をキーとして、追記ボリューム303に対応したサブブロック管理テーブルが参照されてもよい。
ステップS2302の判定結果が偽である場合(ステップS2302:NO)、データ量削減プログラム214は、ライト先ボリュームに対応した追記ボリューム303に、未割当のページを割り当てる(ステップS2303)。
ステップS2302の判定結果が真である場合(ステップS2302:YES)、または、ステップS2303の処理が行われた後、データ量削減プログラム214は、追記先とするサブブロックを割り当てる(ステップS2304)。
データ量削減プログラム214は、ライトデータセットの圧縮後のデータセットを追記ボリューム303にコピーする、例えば、圧縮後のデータセットを、追記ボリューム303用の領域(キャッシュメモリ202における領域)にコピーする(ステップS2305)。
データ量削減プログラム214は、圧縮後のデータセットのライトコマンドをデステージキューに登録し(ステップS2306)、ライト先ボリュームに対応したアドレス変換テーブル222を更新する(ステップS2307)。
このアドレス変換テーブル222アドレス変換テーブル222の更新で、ライト先ブロックに対応した参照先VOL#902の情報、および、参照先VOL内アドレス903の情報が、追記ボリューム303の番号、および、ステップS2304で割り当てたサブブロック702の論理アドレスに変更される。
データ量削減処理を行わない場合、図11のデータ量削減処理S2104において、PVOL300の旧データを格納する論理アドレスと、更新データを格納する追記ボリューム303の論理アドレスの関係が管理されるよう、アドレス変換テーブルの更新(S2307)が行われる。
図14は、リカバリポイント設定処理の流れの一例を示す図である。リカバリポイント設定は、管理システム103或いはサーバシステム102から、VOL#情報を含むリカバリポイント設定コマンドによって処理が開始される。リカバリポイント設定コマンドは、リカバリ受領タイミングに対象となるボリュームをリストアするタイミングを設定するため、リストア対象となるボリュームのVOL#を含む。
ストレージコントローラ110は、リカバリポイント設定コマンドを受領すると、リカバリポイント管理テーブル224に、リカバリポイント#701、設定時刻702、SEQ#703といった少ない情報で、リストア対象となるボリュームのVOL#と、リカバリポイント受領タイミングを示す情報を管理することができる。そのため、ストレージコントローラ110で生成されるSnapshotの作成とは独立して、サーバシステム102上のアプリケーションの状況に応じて、多くのリカバリポイントを作成することができる。リカバリポイント設定コマンドは、サーバシステム101上のアプリケーションが、ファイルシステムの場合にはファイル格納時、データベースの場合にはトランザクション完了時等、アプリケーションに応じて意味ある時点で発行できる。
リカバリポイント設定処理は、例えば、サーバシステム102、又は管理システム103からのリカバリポイント設定コマンドによって、スナップショット制御プログラム215が実行する。
スナップショット制御プログラム215は、リカバリポイント設定コマンドを受領すると、受領したリカバリポイント設定コマンドに対し、SEQ#を付与する(ステップS2401)。
次に、スナップショット制御プログラム215は、アドレス変換履歴テーブル223に、付与したSEQ#のエントリを追加する(ステップS2402)。具体的には、ステップS2401で付与したSEQ#をアドレス変換履歴テーブル223のSEQ#601に設定する。また、リカバリポイント設定コマンド受領時点の時刻を退避時刻602に設定する。その他の更新アドレス603、参照先VOL#604、参照先VOL内アドレス605、データサイズ606は、この段階では未設定のままでもよい。
次にスナップショット制御プログラム215は、リカバリポイント管理テーブル224にエントリを追加する(ステップS2403)。具体的には、受領したリカバリポイント設定コマンドに対し、リカバリポイント#をリカバリポイント#701に設定する。また、リカバリポイント設定コマンド受領時点の時刻を設定時刻702に設定する。設定時刻702の時刻はステップS2402でアドレス変換履歴テーブル223に設定した退避時刻602と同じ時刻である。さらに、ステップS2401で、リカバリポイント設定コマンドに対して付与したSEQ#をSEQ#703に設定する。
図14に示した処理により、リカバリポイント設定コマンドの受領に応じて、アドレス変換履歴テーブル223(図6)とリカバリポイント管理テーブル224(図7)のエントリを更新する。
図15は、スナップショット生成処理の流れの一例を示す図である。スナップショット生成処理は、スナップショット制御プログラム215が、例えば、アドレス変換履歴テーブル223に格納された履歴データの量に応じて、ストレージコントローラ110が自律的に処理を実行する。ユーザが求める復元に要する時間(RTO)が比較的短い場合、より多くのSnapshotを生成し、RTOが比較的長い場合、より少ない数のSnapshotを生成する。このように、Snapshotは、求められるRTOに応じて、ストレージコントローラ110が外部からの指示を受領することなく、アドレス変換履歴テーブル223に格納された履歴データの量に応じて生成される。
スナップショット制御プログラム215は、まず、スナップショットを生成する時刻である第1のターゲット時刻を決定する(ステップS2501)。リストアするためにアドレス変換履歴テーブル223の多くのエントリ(履歴情報)を処理すると、それだけ多くの時間を要する。そのため、各ボリュームに要求されるRTOから、復元に要する時間(RTO)を満たす範囲となるようにSnapshotを生成する。この履歴情報を一定量以下に抑えるために必要となるSnapshotを生成する時刻を第1のターゲット時刻として決定する。例えば、その時点で最新のSnapshotの時刻(例えば図8のSnapshot時刻804のT2)以降に発生したライトによりアドレス変換履歴テーブル223に退避されたエントリ料を参照する時間が、要求されたRTOを超えてしまうと判断した場合に、RTOに収まる時点のエントリの時刻(図6の退避時刻602)を第一のターゲット時刻としても良い。
第1のターゲット時刻は、スナップショットを生成した時刻ではなく、生成するスナップショットがPVOLのどの時点の状態を表現しているかを表す時刻のことである。Snapshotの生成は、サーバシステム102からのI/O処理とは非同期で行われるためである。即ち、Snapshot生成中においても、PVOL300は、サーバシステム102からI/Oを受領することができる。
第1のターゲット時刻は、例えば、その時点から設定済みの最新のリカバリポイントまでのアドレス変換履歴テーブル223に格納されたエントリ数がある閾値に達する時点、即ち、アドレス変換履歴テーブル223のデータ量が所定の閾値に達する度に、業務ボリューム300のSnapshotを生成するタイミングとして決定してもよい。
次に、スナップショット制御プログラム215は、アドレス変換履歴テーブル223を参照し、最新のSEQ#を取得し、探索開始SEQ#に設定する(ステップS2502)。
探索開始SEQ#とは、後述のスナップショット生成・リストア共通処理において、アドレス変換履歴テーブル223を探索する際に探索を開始するSEQ#のことである。
次に、スナップショット制御プログラム215は、生成するスナップショットのアドレス変換テーブル222を作成する(ステップS2503)。スナップショット302と追記ボリューム303の論理アドレスの対応を管理し、スナップショットのデータにアクセス可能とするためである。
次に、スナップショット制御プログラム215は、スナップショット生成・リストア共通処理を実行することで、スナップショットを生成する(ステップS2504)。該処理の詳細は図16で説明する。
最後に、スナップショット制御プログラム215は、Snapshot世代管理テーブル225に生成したスナップショットの情報を格納する(ステップS2506)。このステップでは、Snapshot世代管理テーブル225のPVOL#801、最新世代#802、世代#803、Snapshot時刻804、Snapshot#805、SEQ#806を更新する。SEQ#806は、後述する図16のステップS2604で記憶していた、アドレス変換履歴テーブル223の最後にチェックしたSEQ#であり、ターゲット時刻より古くかつターゲット時刻に最も近いSEQ#となる。
図16は、スナップショット生成およびリストアの共通処理の流れの一例を示す図である。
共通処理は、スナップショット制御プログラム215が、例えばスナップショット生成やリストアの処理契機で実行する。
スナップショット制御プログラム215は、前処理で決定された情報として、ステップS2501の「第1のターゲット時刻」、或いは、サーバシステム102或いは管理システム103からリストアしたい時点を示す「第2のターゲット時刻」、ステップS2502の「探索開始SEQ#」、およびS2503のスナップショットの「アドレス変換テーブル」を受領する(ステップS2601)。図16では、第1のターゲット時刻と第2のターゲット時刻を単にターゲット時刻として表している。サーバシステム102あるいは管理システム103からリストア指示を受けた場合は、図16のステップS2601のターゲット時刻は第2のターゲット時刻である。又、スナップショット制御プログラム215が図15のスナップショット生成処理のステップS2504を実行した場合には、図16のステップS2601のターゲット時刻は第1のターゲット時刻である。
第2のターゲット時刻は、サーバシステム102或いは管理システム103からリストアコマンド(リカバリポイント#を含む)を受領すると、リカバリポイント管理テーブル224を参照して特定される、設定時刻702である。
次に、スナップショット制御プログラム215は、アドレス変換履歴テーブル223の「探索開始SEQ#」のエントリから古い方向のSEQ#順にチェックを開始する。チェックするエントリがなくなったら(ステップS2602:NO)ステップS2606へ遷移する。リストアのために処理すべきエントリがアドレス変換履歴テーブルにあるか確認するためである。
チェックするエントリがまだある場合(ステップS2602:YES)、アドレス変換履歴テーブル223のデータ格納位置情報をリストア管理テーブル226へコピーする(ステップS2603)。具体的には、アドレス変換履歴テーブル223の更新アドレス603に対応するリストア管理テーブル226のVOL内アドレス901のエントリに対し、アドレス変換履歴テーブル223の参照先VOL#604、参照先VOL内アドレス605、データサイズ606をそれぞれリストア管理テーブル226の参照先VOL#902、参照先VOL内アドレス903、データサイズ904へコピーする。これにより、チェックされたSEQ#601に対応する旧データの退避ボリューム303内のアドレス情報を、リストア管理テーブル226で管理することができる。
次に、スナップショット制御プログラム215は、チェックしたSEQ#601を記憶する。図示しないが、メモリ内のいずれかの領域に記憶する(ステップS2604)。
次に、スナップショット制御プログラム215は、チェックしたエントリの退避時刻602がステップS2601で受領した「ターゲット時刻」より古いか、もしくは同時刻かを判定する。チェックすべき古い退避時刻を有するSEQ#があるかを判定するためである。この時、Snapshot生成の際には第1のターゲット時刻を用い、リストア処理の際には第2のターゲット時刻を用いる。判定結果が偽の場合(ステップS2605:NO)、チェックすべきエントリがまだ存在すると判断し、ステップS2602へ遷移する。判定結果が真の場合(ステップS2605:YES)、チェックすべきエントリがないと判定し、ステップS2606へ遷移する。チェックすべきエントリがないということは、ターゲット時刻のデータをリストアするための旧データの退避先アドレス情報を特定したことになり、この退避先アドレス情報がリストア管理テーブル226の参照先VOL#902、参照先VOL内アドレス903、データサイ904として格納されていることとなる。
ステップS2606では、生成されたリストア管理テーブル226を用いて、コピー先アドレス変換テーブルを生成する。具体的には、リストア管理テーブル226のVOL内アドレス901に対応する、参照先VOL#902、参照先VOL内アドレス903、データサイズ904を、それぞれアドレス変換テーブル222の参照先VOL#502、参照先VOL内アドレス503、データサイズ504へコピーする。これにより、ステップS2601で受領したターゲット時刻の状態を再現するアドレス変換テーブル222を作成する。
図16の処理により、探索開始SEQ#から順にアドレス変換履歴テーブルのエントリをチェックすることで、ターゲット時刻(第1及び第2のターゲット時刻)のPVOLのイメージを再現するための、旧データの格納位置(追記ボリューム303の論理アドレス)と、PVOLの論理アドレスの対応をコピー先アドレス変換テーブルにコピーすることができる。
図17は、リストア処理の流れの一例を示す図である。リストア処理はスナップショット制御プログラム215が、例えば、サーバシステム102、又は管理システム103からの指示契機(リストアコマンド)で実行する。リストアコマンドには、対象となるボリュームを特定するVOL#と、リストア先を特定するVOL#、リカバリポイント#を含む。
リカバリポイント管理テーブル224から指定されたリカバリポイント#の設定時刻702を取得し、第2のターゲット時刻を設定する(ステップS2701)。管理システム103から直接第2のターゲット時刻を取得しても良い。
次に、スナップショット制御プログラム215は、対象ボリュームのアドレス変換履歴テーブル223から最新SEQ#を取得し、探索開始SEQ#を設定する(ステップS2702)。新しい履歴情報から第2のターゲット時刻までの履歴情報を処理するためである。
次に、スナップショット制御プログラム215は、リストアコマンドに含まれているリストア先を特定するVOL#に基づいて、リストア先を設定する(ステップS2703)。リストア先がPVOLではなくSVOLが指定されている場合、SVOLを生成し、SVOLのアドレス変換テーブル222を用意する。
次に、スナップショット制御プログラム215は、Snapshot世代管理テーブル225を参照し、リストアコマンドに含まれる対象となるボリュームに対し、スナップショットが存在するかを判断する。スナップショットがない場合(ステップS2704:NO)、ステップS2711に遷移する。スナップショットがある場合(ステップS2704:YES)、さらにSnapshot世代管理テーブル225を参照し、スナップショット時刻804がステップS2701で決定した第2のターゲット時刻より新しいスナップショットがあるか否かを判断する。
判断結果が偽の場合(ステップS2705:NO)、ステップS2711に遷移する。判断結果が真の場合(ステップS2705:YES)、Snapshot世代管理テーブル225の最新世代#から順にエントリ(図8の801から806)を取得する(ステップS2706)。
Snapshot時刻804と第2のターゲット時刻を比較し(ステップS2707)、Snapshot時刻804の方が第2のターゲット時刻より古いSnapshotが見つかるまでステップS2706とステップS2707を繰り返す。
第2のターゲット時刻より古いSnapshot時刻804を持つSnapshotが見つかったら、見つかったSnapshotより一世代新しいSnapshotのSEQ#806を探索開始SEQ#に設定する(ステップS2708)。
次にスナップショット制御プログラム215は、ステップS2708で見つけたSnapshotのアドレス変換テーブル222をリストア先のアドレス変換テーブルにコピーし(ステップS2709)、図16の共通処理を実行する(ステップS2710)。
ステップS2704でスナップショットがなかった場合、又はステップS2705でターゲット時刻より古いSnapshotしかなかった場合、探索開始SEQ#はステップS2702で設定した最新SEQ#となる。ステップS2711ではリストア先がSVOLか否かを判断する。リストア先がSVOLである場合(ステップS2711:YES)、PVOLのアドレス変換テーブル222の内容をSVOLのアドレス変換テーブル222にコピーし、ステップS2710に遷移する。
リストア先がPVOLである場合(ステップS2711:NO)、ステップS2710に遷移する。
図17の処理を行うことで、第2のターゲット時刻の直後のSnapshotを特定することができる。この特定されたSnapshotから共通処理を行うことで、第2のターゲット時刻のPVOLのイメージを高速にリストアすることができる。
開示した技術によれば、アドレス変換履歴テーブル223の更新やSnapshotの生成がPVOL300(業務ボリューム)に対するI/O処理と非同期に行われるため、業務ボリュームへの性能影響を抑えることができる。
また、ストレージコントローラ110で生成されるSnapshotの作成とは独立して、サーバシステム102上のアプリケーションの状況に応じて、多くのリカバリポイントを作成することができる。
また、リストアコマンドで指定されるリカバリポイントにリストアする際に、処理すべき履歴情報を少なくすることで、リストア処理時間を短縮することができる。
このように、開示した技術によれば、業務ボリュームへの性能影響を抑えつつ、リストア処理時間を短縮することができる。
100:計算機システム
101:ストレージシステム
102:サーバシステム
103:管理システム
111:プロセッサ
112:メモリ
113:P-I/F
114:S-I/F
115:M-I/F
201:ローカルメモリ
202:キャッシュメモリ
203:共有メモリ
215:スナップショット制御プログラム
221:VOL/Snapshot管理テーブル
222:アドレス変換テーブル
223:アドレス変換履歴テーブル
224:リカバリポイント管理テーブル
225:Snapshot世代管理テーブル
226:リストア管理テーブル
300:業務ボリューム(PVOL)
301:SVOL
302:内部Snapshotボリューム
303:追記ボリューム
304:プール。

Claims (13)

  1. 業務ボリュームをサーバシステムに提供するコントローラを含むストレージシステムにおいて、
    前記ストレージシステムは、
    前記業務ボリュームに格納されるデータを追記して格納する追記ボリュームを有し、
    前記コントローラは、
    前記業務ボリュームの論理アドレスと、前記追記ボリュームの論理アドレスとの関係を管理する第1のアドレス変換情報と、
    前記業務ボリュームの論理アドレスと、前記業務ボリュームのデータが更新される前の旧データを格納する前記追記ボリュームの論理アドレスとの関係を管理すると共に、前記業務ボリュームのデータが更新された時刻とを、履歴情報として管理するアドレス変換履歴情報とを、管理し、
    前記アドレス変換履歴情報のデータ量が所定の閾値に達する度に、前記業務ボリュームの過去の時点を示す第1のターゲット時刻を、決定し、決定した第1のターゲット時刻のスナップショットを前記アドレス変換履歴情報を用いて生成し、
    前記業務ボリュームに対して、リストアするタイミングを示すリカバリポイントを含むリカバリポイント設定コマンドを受領する度に、前記アドレス変換履歴情報に、前記リカバリポイントと共に前記リカバリポイント設定コマンドを受領した時刻を格納し、
    前記業務ボリュームに対して、リストアするタイミングを示す第2のターゲット時刻に関する情報とリストア先ボリュームを含むリストアコマンドを受領すると、前記第1のターゲット時刻のスナップショットと、前記アドレス変換履歴情報に格納された前記リカバリポイントと前記アドレス変換履歴情報を用いて、前記業務ボリュームをリストアする
    ことを特徴とするストレージシステム。
  2. 請求項1に記載のストレージシステムにおいて、
    前記コントローラは、1以上のスナップショットの前記第1のターゲット時刻が前記第2のターゲット時刻より新しいかを判定し、
    前記第2のターゲット時刻より古い前記第1のターゲット時刻のスナップショットしかない場合、前記業務ボリュームのアドレス変換情報を前記リストア先ボリュームの第2のアドレス変換情報にコピーする
    ことを特徴とするストレージシステム。
  3. 請求項2に記載のストレージシステムにおいて、
    前記コントローラは、
    複数の前記第1のターゲット時刻で取得されたスナップショットについて、スナップショットボリュームの論理アドレスと前記追記ボリュームの論理アドレスとの関係を管理する第3のアドレス変換情報を管理し、
    複数の前記第1のターゲット時刻の内、前記第2のターゲット時刻の直後の第1のターゲット時刻に生成されたスナップショットの前記第3のアドレス変換情報を、前記リストア先ボリュームの第2のアドレス変換情報にコピーすること
    を特徴とするストレージシステム。
  4. 請求項2に記載のストレージシステムにおいて、
    前記コントローラは、
    前記第1のターゲット時刻より古い、前記アドレス変換履歴情報の更新時刻に対応する、前記業務ボリュームに対する更新データによって上書きされる旧データの格納場所を示す前記追記ボリュームの論理アドレスを、前記リストア先ボリュームの第2のアドレス変換情報にコピーする
    ことを特徴とするストレージシステム。
  5. 請求項2に記載のストレージシステムにおいて、
    前記コントローラは、
    前記アドレス変換履歴情報に、
    前記業務ボリュームに対するデータの更新順と、前記リカバリポイント設定コマンドの順番とを、シーケンス番号として、管理する
    ことを特徴とするストレージシステム。
  6. 請求項5に記載のストレージシステムにおいて、
    前記コントローラは、
    前記リカバリポイント設定コマンドの受領に応答して、
    設定されたリカバリポイントを一意に決定する識別情報と、設定された設定時刻と、前記リカバリポイント設定コマンドのシーケンス番号との関係を管理するリカバリポイント管理情報を管理する
    ことを特徴とするストレージシステム。
  7. 請求項6に記載のストレージシステムにおいて、
    前記コントローラは、
    前記リカバリポイント設定コマンドの受領に応答し、前記リカバリポイント設定コマンドの受領時の前記業務ボリュームにデータをリストアするため、前記業務ボリュームの論理アドレスと前記リカバリポイント設定コマンドの受領時に前記業務ボリュームに格納されていた旧データを格納する前記追記ボリュームの論理アドレスとの関係を管理するリストアポイント管理情報を管理する
    ことを特徴とするストレージシステム。
  8. 請求項6に記載のストレージシステムにおいて、
    前記コントローラは、
    前記業務ボリュームに対する、リカバリポイントを含むリストアコマンドを受領すると、前記リカバリポイント管理情報に基づいて、リストアするタイミングを示す前記第2のターゲット時刻を決定する
    ことを特徴とするストレージシステム。
  9. 請求項6に記載のストレージシステムにおいて、
    前記コントローラは、
    前記アドレス変換履歴情報の最新の更新時刻が、前記第2のターゲット時刻に到達していない場合、前記アドレス変換履歴情報の次に新しい更新時刻に対応する、旧データの格納位置を示す情報を、前記第2のアドレス変換情報の前記追記ボリュームの論理アドレスの情報としてリストア管理情報に格納する
    ことを特徴とするストレージシステム。
  10. 請求項9に記載のストレージシステムにおいて、
    前記コントローラは、
    前記リストア管理情報に格納された情報に基づいて、前記リストア先ボリュームの第2のアドレス変換情報に反映して、前記業務ボリュームの前記第2のターゲット時刻のイメージを前記リストア先ボリュームに生成することを特徴とするストレージシステム。
  11. 業務ボリュームと、前記業務ボリュームをサーバシステムに提供するコントローラと、前記業務ボリュームに格納されるデータを追記して格納する追記ボリュームを有するストレージシステムのリストア制御方法において、
    前記コントローラは、
    前記業務ボリュームの論理アドレスと、前記追記ボリュームの論理アドレスとの関係を管理する第1のアドレス変換情報と、
    前記業務ボリュームの論理アドレスと、前記業務ボリュームのデータが更新される前の旧データを格納する前記追記ボリュームの論理アドレスとの関係を管理すると共に、前記業務ボリュームのデータが更新された時刻とを、履歴情報として管理するアドレス変換履歴情報とを、管理し、
    前記アドレス変換履歴情報のデータ量が所定の閾値に達する度に、前記業務ボリュームのカノの時点を示す第1のターゲット時刻を、決定し、決定した第1のターゲット時刻のスナップショットを前記アドレス変換履歴情報を用いて生成し、
    前記業務ボリュームに対して、リストアするタイミングを示すリカバリポイントを含むリカバリポイント設定コマンドを受領する度に、前記アドレス変換履歴情報に、前記リカバリポイントと共に前記リカバリポイント設定コマンドを受領した時刻を格納し、
    前記業務ボリュームに対して、リストアするタイミングを示す第2のターゲット時刻に関する情報とリストア先ボリュームを含むリストアコマンドを受領すると、前記第1のターゲット時刻のスナップショットと、前記アドレス変換履歴情報に格納された前記リカバリポイントと前記アドレス変換履歴情報を用いて、前記業務ボリュームをリストアする
    ことを特徴とするリストア制御方法。
  12. 請求項11に記載のリストア制御方法において、
    前記コントローラは、前記第1のターゲット時刻が前記第2のターゲット時刻より新しいかを判定し、
    前記第1のターゲット時刻が前記第2のターゲット時刻より古い場合、前記業務ボリュームのアドレス変換情報を前記リストア先ボリュームの第2のアドレス変換情報にコピーする
    ことを特徴とするリストア制御方法。
  13. 請求項12に記載のリストア制御方法において、
    前記コントローラは、
    複数の前記第1のターゲット時刻で取得されたスナップショットについて、スナップショットボリュームの論理アドレスと前記追記ボリュームの論理アドレスとの関係を管理する第3のアドレス変換情報を管理し、
    複数の前記第1のターゲット時刻の内、前記第2のターゲット時刻の直後の第1のターゲット時刻に生成されたスナップショットの前記第3のアドレス変換情報を、前記リストア先ボリュームの第2のアドレス変換情報にコピーすること
    を特徴とするリストア制御方法。
JP2020010492A 2020-01-27 2020-01-27 ストレージシステムおよびリストア制御方法 Active JP7093799B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020010492A JP7093799B2 (ja) 2020-01-27 2020-01-27 ストレージシステムおよびリストア制御方法
US17/006,095 US20210232466A1 (en) 2020-01-27 2020-08-28 Storage system and restore control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020010492A JP7093799B2 (ja) 2020-01-27 2020-01-27 ストレージシステムおよびリストア制御方法

Publications (2)

Publication Number Publication Date
JP2021117719A JP2021117719A (ja) 2021-08-10
JP7093799B2 true JP7093799B2 (ja) 2022-06-30

Family

ID=76970120

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020010492A Active JP7093799B2 (ja) 2020-01-27 2020-01-27 ストレージシステムおよびリストア制御方法

Country Status (2)

Country Link
US (1) US20210232466A1 (ja)
JP (1) JP7093799B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12050683B2 (en) * 2019-11-22 2024-07-30 Pure Storage, Inc. Selective control of a data synchronization setting of a storage system based on a possible ransomware attack against the storage system
US11714722B2 (en) * 2020-09-30 2023-08-01 Micron Technology, Inc. Power loss recovery for memory devices

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007080131A (ja) 2005-09-16 2007-03-29 Hitachi Ltd 記憶制御システム及び方法
US20070271429A1 (en) 2006-05-18 2007-11-22 Hitachi, Ltd. Storage System and method of producing recovery volume
JP2009266210A (ja) 2008-02-28 2009-11-12 Huawei Technologies Co Ltd データ保護のための方法、装置および記憶デバイス
JP2015045993A (ja) 2013-08-28 2015-03-12 日本電気株式会社 ボリューム管理装置、ボリューム管理方法及びボリューム管理プログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4890160B2 (ja) * 2006-09-06 2012-03-07 株式会社日立製作所 ストレージシステム及びバックアップ/リカバリ方法
CA2774581A1 (en) * 2011-04-19 2012-10-19 Workflow Integrity Network Inc. Method and system of function analysis for optimizing productivity and performance of a workforce within a workspace
CN103392164B (zh) * 2011-05-31 2016-08-10 株式会社日立制作所 存储系统和存储控制方法
US9760446B2 (en) * 2014-06-11 2017-09-12 Micron Technology, Inc. Conveying value of implementing an integrated data management and protection system
US20220050858A1 (en) * 2014-12-19 2022-02-17 Pure Storage, Inc. Snapshot-Based Hydration Of A Cloud-Based Storage System

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007080131A (ja) 2005-09-16 2007-03-29 Hitachi Ltd 記憶制御システム及び方法
US20070271429A1 (en) 2006-05-18 2007-11-22 Hitachi, Ltd. Storage System and method of producing recovery volume
JP2007310631A (ja) 2006-05-18 2007-11-29 Hitachi Ltd ストレージシステム及びそのリカバリボリューム作成方法
JP2009266210A (ja) 2008-02-28 2009-11-12 Huawei Technologies Co Ltd データ保護のための方法、装置および記憶デバイス
JP2015045993A (ja) 2013-08-28 2015-03-12 日本電気株式会社 ボリューム管理装置、ボリューム管理方法及びボリューム管理プログラム

Also Published As

Publication number Publication date
US20210232466A1 (en) 2021-07-29
JP2021117719A (ja) 2021-08-10

Similar Documents

Publication Publication Date Title
US20210157523A1 (en) Storage system
US10133511B2 (en) Optimized segment cleaning technique
CN110244905B (zh) 具有数据量削减功能的计算机系统,和存储控制方法
JP6513888B2 (ja) データ量削減機能を有する計算機システム、及び、記憶制御方法
JP6840113B2 (ja) ストレージコントローラ及びストレージ制御方法
CN111190534B (zh) 卷管理装置、卷管理方法和存储介质
CN112596673A (zh) 具有双重raid数据保护的多活多控存储系统
JP7093799B2 (ja) ストレージシステムおよびリストア制御方法
US10733105B1 (en) Method for pipelined read optimization to improve performance of reading data from data cache and storage units
US11269550B2 (en) Storage system and history information management method
WO2015173925A1 (ja) ストレージ装置
US11288006B2 (en) Storage system and volume copying method where changes to address conversion table is rolled back
US10565120B1 (en) Method for efficient write path cache load to improve storage efficiency
US20200387477A1 (en) Storage system and snapshot management method
JP7429214B2 (ja) ストレージシステム及びストレージシステムにおけるデータ複製方法
US8935488B2 (en) Storage system and storage control method
JP5275691B2 (ja) ストレージシステム
US11074003B2 (en) Storage system and restoration method
US12105972B2 (en) Storage system and storage control method of data deduplication between virtual devices
JP7554031B2 (ja) ストレージシステムおよびストレージ制御方法
JP2023001471A (ja) ストレージシステム、計算機システム及び制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210524

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220427

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220620

R150 Certificate of patent or registration of utility model

Ref document number: 7093799

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150