(57)【要約】      （修正有）【課題】複数ユーザから同一正ボリュームのスナップショットを取得しても、全ユーザが問題なくスナップショット管理可能なストレージを提供するストレージシステム及びスナップショット管理方法を提供する。【解決手段】複数のインターフェースから作成されたスナップショットをグループ化する。グループ化はスナップショット作成時に行われ、グループ内のスナップショット群は、スナップショットが作成された時刻に他のインターフェースから必要とされるスナップショットである。グループ化されたスナップショットに対して削除指示がされた場合、スナップショットデータは削除せず、削除指示されたことのみを記録する。グループ内の全スナップショットが削除指示済になった場合、どのユーザからも不要なスナップショットと判断できるため、グループを削除する。グループ削除後、削除指示済でグループ化されていないスナップショットを削除する。【選択図】図１２
2020201702.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置とコントローラとを有するストレージシステムにおいて、
前記コントローラは、
前記ストレージシステムにＩＯ要求を発行するサーバシステムに接続される第１のインターフェースと、
前記ストレージシステムを管理する管理システムに接続される第２のインターフェースと、
前記サーバシステムに対し、前記記憶装置を用いて構成されるボリュームを提供し、
前記第１のインターフェースおよび前記第２のインターフェースの一方から、前記ボリュームのスナップショット取得指示を受領すると、前記スナップショット取得指示が前記第１のインターフェースと前記第２のインターフェースとのいずれを介して受領したかを示す属性情報と、取得したスナップショットが削除指示前の状態であることを示すステータス情報とを、取得するスナップショットに対応して記憶するメモリとを有することを特徴とするストレージシステム。
【請求項２】
請求項１記載のストレージシステムにおいて、
前記第１のインターフェースを介して受領する前記スナップショット取得指示は、前記サーバシステムのアプリケーションからの要求であり、
前記コントローラは、前記第１のインターフェースを介して前記アプリケーションからのスナップショット取得指示を受領すると、前記ボリュームにスナップショット管理情報を格納することを特徴とするストレージシステム。
【請求項３】
請求項２記載のストレージシステムにおいて、
前記メモリに記憶される前記ステータス情報には、取得したスナップショットが削除指示を受けた状態であることを示す情報が記憶されることを特徴とするストレージシステム。
【請求項４】
請求項３に記載のストレージシステムにおいて、
前記コントローラは、前記ボリュームの異なる時点の複数のスナップショットを取得する場合、前記属性情報と前記ステータス情報に基づいて、前記複数のスナップショットをグループ登録することを特徴とするストレージシステム。
【請求項５】
請求項４に記載のストレージシステムにおいて、
前記コントローラは、
前記第１のインターフェース及び前記第２のインターフェースの何れか一方のインターフェースから前記複数のスナップショットの何れかスナップショットの削除指示を受領した場合、
前記削除指示のあったスナップショットが前記グループ登録されている場合、前記グループ登録されている全てのスナップショットの前記ステータス情報が削除指示を受けた状態でなければ、前記受領したスナップショットの削除指示を実行しないことを特徴とするストレージシステム。
【請求項６】
請求項５に記載のストレージシステムにおいて、
前記コントローラは、前記グループ登録された全てのスナップショットの前記ステータス情報が、削除指示を受けた状態とした後、前記グループ登録を削除することを特徴とするストレージシステム。
【請求項７】
請求項６に記載のストレージシステムにおいて、
前記コントローラは、前記スナップショットの削除指示が、前記グループ登録されていないスナップショットに対するものである場合、前記スナップショットの削除を実行することを特徴とするストレージシステム。
【請求項８】
請求項４に記載のストレージシステムにおいて、
前記コントローラは、前記グループ登録の時に前記サーバシステムが認識できる前記グループ登録されたスナップショットの識別情報を前記メモリに格納することを特徴とするストレージシステム。
【請求項９】
請求項８に記載のストレージシステムにおいて、
前記コントローラは、前記グループ登録されたスナップショットをリストアする際には、前記サーバシステムが認識できる前記識別情報を復元することを特徴とするストレージシステム。
【請求項１０】
請求項９に記載のストレージシステムにおいて、
前記コントローラは、前記グループ登録されたスナップショットのリストア後は、前記サーバシステムから認識できない世代のスナップショットを削除することを特徴とするストレージシステム。
【請求項１１】
記憶装置とコントローラとを有するストレージシステムのスナップショット管理方法において、
前記コントローラは、前記ストレージシステムにＩＯ要求を発行するサーバシステムに接続される第１のインターフェースと、前記ストレージシステムを管理する管理システムに接続される第２のインターフェースとを有し、
前記サーバシステムに対し、前記記憶装置を用いて構成されるボリュームを提供し、
前記第１のインターフェースおよび前記第２のインターフェースの一方から、前記ボリュームのスナップショット取得指示を受領すると、前記スナップショット取得指示が前記第１のインターフェースと前記第２のインターフェースとのいずれを介して受領したかを示す属性情報と、取得したスナップショットが削除指示前の状態であることを示すステータス情報とを、取得するスナップショットに対応して記憶することを特徴とするストレージシステムのスナップショット管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムに関し、特にスナップショットを管理するに好適な技術に関する。
【背景技術】
【０００２】
ストレージシステムでは、ホストが処理に利用するデータを書き込むボリュームである正ボリュームのデータをバックアップすることが行われている。バックアップとしては、例えば、所定の時点のボリュームの状態のスナップショットを管理する方法が知られている。スナップショットを構成するデータは、正ボリューム又はボリュームより１つ下の論理記憶階層であるプールに記録されている。
【０００３】
スナップショット作成指示後に正ボリュームにライトアクセスが発生した際には、正ボリュームのライト先の領域のデータをプールに退避することで、所定の時点のデータを保持する。正ボリュームのデータが破壊された場合、ストレージ管理者が、プールに退避されているスナップショットデータを正ボリュームに反映させるリストア処理を行うことで、正ボリュームのデータを復旧する。
【０００４】
また、近年スナップショットはバックアップユースケースのみならず、データ２次利用のユースケースでも利用されている。データ２次利用のユースケースでは、基幹システムを正ボリュームで運用し、データ分析や開発・テスト用途は正ボリュームの複製である副ボリュームを用いることが想定される。副ボリュームは、正ボリュームの所定の時点のスナップショットを参照している。データ２次利用のユースケースでは、ストレージの管理者ではなくアプリケーション開発者やユーザがホスト上のアプリケーションからストレージ装置のスナップショット機能を利用する場合が多い。一方で、バックアップユースケースでは、従来通りストレージ管理者が定期的にスナップショットを作成してバックアップ運用するケースが多い。そのため、複数ユースケースで複数のユーザがスナップショットを併用する機会が増加している。
【０００５】
特許文献１には、スナップショット機能有するストレージシステムが記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表２０１４−５０７６９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記特許文献１に記載されたストレージシステムによれば、スナップショット機能により所定の時点のボリュームのバックアップが可能となる。
【０００８】
しかしながら、複数のユーザが同一の正ボリュームに対するスナップショット機能を使用する場合、スナップショット管理情報とスナップショットデータの整合性が取れた状態に復元が出来ない場合がある。例えば、ユーザ１が不要になったスナップショットを削除した後に、ユーザ２がユーザ１の使用しているアプリケーションの認識していない時点にリストア処理を行うと、ユーザ１が使用しているアプリケーションはユーザ２によってリストアされた過去の地点の状態に戻る。リストアされたデータには削除されたスナップショットを管理するスナップショット管理情報を有するため、ユーザ１のアプリケーションには既に消されてしまったスナップショットが存在するものと認識するが、そのスナップショットは既に削除されており、運用が出来なくなる。これは、ユーザ１が使用するスナップショットを操作するアプリケーションからスナップショット管理情報にアクセスする必要があるため、スナップショット管理情報を通常のライトデータのようにボリュームに格納する必要がある。そのため、ユーザ２がスナップショットを取得するとユーザ１によって取得したスナップショット管理情報もユーザ２が取得したスナップショットに含まれることになるためである。
【０００９】
上記特許文献１には、スナップショット機能については記載されているものの、複数のユーザによって一つのボリュームのスナップショットを取得する際に生じる課題に対する記載は見当たらない。
【００１０】
そこで、本発明の目的は、複数ユーザから同一正ボリュームのスナップショットを取得しても、全ユーザが問題なくスナップショットを管理可能なストレージシステムおよびスナップショット管理方法を提供することにある。
【課題を解決するための手段】
【００１１】
上記課題を解決するため本発明のストレージシステムの一側面は、
記憶装置とコントローラとを有するストレージシステムにおいて、コントローラは、ストレージシステムにＩＯ要求を発行するサーバシステムに接続される第１のインターフェースと、ストレージシステムを管理する管理システムに接続される第２のインターフェースと、サーバシステムに対し、記憶装置を用いて構成されるボリュームを提供し、第１のインターフェースおよび第２のインターフェースの一方から、ボリュームのスナップショット取得指示を受領すると、スナップショット取得指示が第１のインターフェースと第２のインターフェースとのいずれを介して受領したかを示す属性情報と、取得したスナップショットが削除指示前の状態であることを示すステータス情報とを、取得するスナップショットに対応して記憶するメモリとを有する。
【発明の効果】
【００１２】
本発明によれば、複数のユーザから同一正ボリュームに対するスナップショット機能を使用しても、どのユーザのスナップショット操作も他のユーザの運用に影響を与えずに、スナップショット機能を利用することができるストレージシステムを提供することが可能になる。
【図面の簡単な説明】
【００１３】
【図１】実施例１に係るストレージシステムを含むシステムの構成例を示す図である。
【図２】実施例１に係る正ボリュームと副ボリュームとの関係を説明する図である。
【図３】実施例１に係る記録階層を説明する図である。
【図４Ａ】実施例１に管理者によるスナップショット取得動作を示す図である。
【図４Ｂ】実施例１に管理者によるスナップショット取得、削除動作を示す図である。
【図４Ｃ】実施例１に管理者によるスナップショット取得動作を示す図である。
【図４Ｄ】実施例１にスナップショット管理情報を示す概念図である。
【図５】実施例１に係るメモリの構成と、メモリ内のプログラム及び管理情報の例を示す図である。
【図６】実施例１に係るペア管理テーブルの例を示す図である。
【図７】差分領域管理テーブルの例を示す図である。
【図８】実施例１に係るアドレス管理テーブルの例を示す図である。
【図９】実施例１に係るページ管理テーブルの例を示す図である。
【図１０】実施例１に係るスナップショット作成処理の流れの例を示す図である。
【図１１】実施例１に係るグループ化処理の流れの例を示す図である。
【図１２】実施例１に係るスナップショット削除処理の流れの例を示す図である。
【図１３】実施例１に係るグループ削除処理の流れの例を示す図である。
【図１４】実施例１に係る指定Snapshot削除処理の流れの例を示す図である。
【図１５】実施例１に係るリストア処理の流れの例を示す図である。
【図１６】実施例１に係るリストア確定処理の流れの例を示す図である。
【図１７】実施例１に係るリストア時のスナップショット処理方式の概念図である。
【図１８】実施例１本発明の実施形態の例を示す図である。
【図１９】実施例２のメモリの構成と、メモリ内のプログラム及び管理情報との例を示す図である。
【図２０】実施例２のリストア後処理の流れの例を示す図である。
【図２１】実施例２のリストア後処理の動作概念を示す図である。
【発明を実施するための形態】
【００１４】
以下の説明において、「インターフェース部」は、１以上のインターフェースでよい。この１以上のインターフェースは、１以上の同種の通信インターフェースデバイス（例えば１以上のＮＩＣ（Network Interface Card））であってもよいし、２以上の異種の通信インターフェースデバイス（例えばＮＩＣとＨＢＡ（Host Bus Adapter））であってもよい。
【００１５】
また、以下の説明において、「メモリ部」は、１以上のメモリであり、典型的には主記憶デバイスでよい。メモリ部における少なくとも１つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。
【００１６】
また、以下の説明において、「ＰＤＥＶ部」は、１以上のＰＤＥＶであり、典型的には補助記憶デバイスでよい。「ＰＤＥＶ」は、物理的な記憶デバイス（Physical storage DEVice）を意味し、典型的には、不揮発性の記憶デバイス、例えばＨＤＤ（Hard Disk Drive）又はＳＳＤ（Solid State Drive）である。
【００１７】
また、以下の説明において、「記憶部」は、メモリ部とＰＤＥＶ部の少なくとも１つ（典型的には少なくともメモリ部）である。
【００１８】
また、以下の説明において、「プロセッサ部」は、１以上のプロセッサである。少なくとも１つのプロセッサは、典型的には、ＣＰＵ（Central Processing Unit）のようなマイクロプロセッサであるが、ＧＰＵ（Graphics Processing Unit）のような他種のプロセッサでもよい。少なくとも１つのプロセッサは、シングルコアでもよいしマルチコアでもよい。
【００１９】
また、少なくとも１つのプロセッサは、処理の一部又は全部を行うハードウェア回路（例えばＦＰＧＡ（Field-Programmable Gate Array）又はＡＳＩＣ（Application Specific Integrated Circuit））といった広義のプロセッサでもよい。
【００２０】
また、以下の説明において、「ｘｘｘテーブル」といった表現により、入力に対して出力が得られる情報を説明することがあるが、この情報は、どのような構造のデータでもよいし、入力に対する出力を発生するニューラルネットワークのような学習モデルでもよい。従って、「ｘｘｘテーブル」を「ｘｘｘ情報」と言うことができる。
【００２１】
また、以下の説明において、各テーブルの構成は一例であり、１つのテーブルは、２以上のテーブルに分割されてもよいし、２以上のテーブルの全部又は一部が１つのテーブルであってもよい。
【００２２】
また、以下の説明において、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部及び／又はインターフェース部などを用いながら行うため、処理の主語が、プロセッサ部（或いは、そのプロセッサ部を有するコントローラのようなデバイス）とされてもよい。
【００２３】
プログラムは、計算機のような装置にインストールされてもよいし、例えば、プログラム配布サーバ又は計算機が読み取り可能な（例えば非一時的な）記録媒体にあってもよい。また、以下の説明において、２以上のプログラムが１つのプログラムとして実現されてもよいし、１つのプログラムが２以上のプログラムとして実現されてもよい。
【００２４】
また、以下の説明において、「計算機システム」は、１以上の物理的な計算機を含んだシステムである。物理的な計算機は、汎用計算機でも専用計算機でもよい。物理的な計算機は、Ｉ／Ｏ（Input/Output）要求を発行する計算機（例えばホスト計算機）として機能してもよいし、Ｉ／Ｏ要求に応答してデータのＩ／Ｏを行う計算機（例えばストレージ装置）として機能してもよい。
【００２５】
すなわち、計算機システムは、Ｉ／Ｏ要求を発行する１以上のホスト計算機であるホストシステム、及び、Ｉ／Ｏ要求に応答してデータのＩ／Ｏを行う１以上のストレージ装置であるストレージシステムのうちの少なくとも１つでよい。少なくとも１つの物理的な計算機において、１以上の仮想的な計算機（例えばＶＭ（Virtual Machine））が実行されてもよい。仮想的な計算機は、Ｉ／Ｏ要求を発行する計算機でもよいし、Ｉ／Ｏ要求に応答してデータのＩ／Ｏを行う計算機でもよい。
【００２６】
また、計算機システムは、１以上（典型的には複数）の物理的なノード装置で構成された分散システムでよい。物理的なノード装置は、物理的な計算機である。
【００２７】
また、物理的な計算機（例えばノード装置）が所定のソフトウェアを実行することにより、その物理的な計算機、又は、その物理的な計算機を含んだ計算機システムに、ＳＤｘ（Software-Defined anything）が構築されてもよい。ＳＤｘとしては、例えば、ＳＤＳ（Software Defined Storage）又はＳＤＤＣ（Software-defined Datacenter）が採用されてもよい。
【００２８】
例えば、ストレージ機能を有するソフトウェアが物理的な汎用の計算機で実行されることにより、ＳＤＳとしてのストレージシステムが構築されてもよい。
【００２９】
また、少なくとも１つの物理的な計算機（例えばストレージ装置）が、ホストシステムとしての１以上の仮想的な計算機と、ストレージシステムのストレージコントローラ（典型的には、Ｉ／Ｏ要求に応答してデータをＰＤＥＶ部に対して入出力する装置）としての仮想的な計算機とが実行されてもよい。
【００３０】
言い換えれば、このような少なくとも１つの物理的な計算機は、ホストシステムの少なくとも一部としての機能と、ストレージシステムの少なくとも一部としての機能の両方を有してもよい。
【００３１】
また、計算機システム（典型的にはストレージシステム）は、冗長構成グループを有してよい。冗長構成は、Erasure Coding、ＲＡＩＮ（Redundant Array of Independent Nodes）及びノード間ミラーリングのように複数のノード装置での構成でもよいし、ＰＤＥＶ部の少なくとも一部としての１以上のＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）グループのように単一の計算機（例えばノード装置）での構成でもよい。
【００３２】
また、以下の説明において、「データセット」とは、アプリケーションプログラムのようなプログラムから見た１つの論理的な電子データの塊であり、例えば、レコード、ファイル、キーバリューペアのうちのいずれでもよい。
【００３３】
また、以下の説明において、種々の対象の識別情報として、識別番号が使用されるが、識別番号以外の種類の識別情報（例えば、英字や符号を含んだ識別子）が採用されてもよい。
【００３４】
また、以下の説明において、同種の要素を区別しないで説明する場合には、参照符号（又は、参照符号のうちの共通符号）を使用し、同種の要素を区別して説明する場合は、要素の識別番号（又は参照符号）を使用することがある。
【００３５】
例えば、副ボリュームである「ＳＶＯＬ」を特に区別しないで説明する場合には、「ＳＶＯＬ５０１」と記載し、個々のページを区別して説明する場合には、ＳＶＯＬの世代番号を用いて「ＳＶＯＬ＃０」、「ＳＶＯＬ＃１」のように記載したり、参照番号を用いて「ＳＶＯＬ５０１a」、「ＳＶＯＬ５０１ｂ」のように記載したりすることがある。
【実施例１】
【００３６】
以下、実施例１について、図１〜図１８を用いて説明する。
【００３７】
図１は、ストレージシステム３００を含むシステムの構成例を示す図である。ストレージシステム３００は、記憶装置から構成される複数（又は１つ）のＰＤＥＶ３２０と、ＰＤＥＶ３２０に接続されたストレージコントローラ３０１とを有する。
【００３８】
ストレージコントローラ３０１は、Ｓ−Ｉ／Ｆ３１４と、Ｍ−Ｉ／Ｆ３１５と、Ｐ−Ｉ／Ｆ３１３と、メモリ３１２と、プロセッサ３１１とを有する。Ｓ−Ｉ／Ｆ３１４、Ｍ−Ｉ／Ｆ３１５、及びＰ−Ｉ／Ｆ３１３が、インターフェース部の一例である。メモリ３１２が、記憶部の一例である。
【００３９】
Ｓ−Ｉ／Ｆ３１４は、サーバシステム３０２とストレージコントローラ３０１との間のデータのやり取りを仲介する通信インターフェースデバイスである。Ｓ−Ｉ／Ｆ３１４に、ＦＣ（Fibre Channel）ネットワーク３０６を介して、サーバシステム３０２が接続される。
【００４０】
サーバシステム３０２は、ストレージコントローラ３０１に対して、Ｉ／Ｏ先（例えばＬＵＮ（Logical Unit Number）のような論理ボリューム番号や、ＬＢＡ（Logical Block Address）のような論理アドレス）を指定したＩ／Ｏ要求（ライト要求又はリード要求）を送信する。
【００４１】
Ｍ−Ｉ／Ｆ３１５は、管理システム３０８とストレージコントローラ３０１の間、サーバシステム３０２とストレージコントローラ３０１の間のデータのやり取りを仲介する通信インターフェースデバイスである。Ｍ−Ｉ／Ｆ３１５に、ＩＰ（Internet Protocol）ネットワーク３０７を介して、管理システム３０８とサーバシステム３０２が接続される。
【００４２】
ネットワーク３０６及びネットワーク３０７は、同一の通信ネットワークでもよい。サーバシステム３０２で動作するアプリケーション３０３はストレージコントローラ３０１に対して、ＡＰＩ３０４とストレージベンダから提供されるプロバイダ３０５を介して、スナップショットの作成や削除の要求を送信したり、作成された世代＃を管理したりする。
【００４３】
管理システム３０８は、ストレージシステム３００を管理する。管理システム３０８からもストレージコントローラ３０１に対して、スナップショットの作成や削除の要求を送信したり、作成された世代＃を管理したりする。
【００４４】
Ｐ−Ｉ／Ｆ３１３は、複数のＰＤＥＶ３２０とストレージコントローラ３０１の間のデータのやり取りを仲介する通信インターフェースデバイスである。Ｐ−Ｉ／Ｆ３１３には、複数（又は１つ）のＰＤＥＶ３２０が接続される。
【００４５】
メモリ３１２は、プロセッサ３１１が実行するプログラムと、プロセッサ３１１が使用するデータを記憶する。プロセッサ３１１は、メモリ３１２に格納されているプログラムを実行する。実施例１では、例えば、メモリ３１２及びプロセッサ３１１の組が二重化されている。
【００４６】
図２は、ストレージシステム３００内の正ボリュームと副ボリュームとの関係を説明する図である。正ボリューム（ＰＶＯＬ）５０２は、サーバシステム３０２が処理に利用するデータを書き込むボリュームである。ＰＶＯＬ５０２は、複数のディスク装置で構成されたＲＡＩＤグループ（所定のＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）レベルでデータを記憶するディスク装置群）に基づく実体的な論理ボリュームであっても良いし、ＲＡＩＤグループに基づかない仮想的な論理ボリューム（例えば、シンプロビジョニングに従うボリューム、或いは、外部のストレージ装置の記憶資源（例えば論理ボリューム）がマッピングされたボリューム）であっても良い。
【００４７】
一方、各副ボリューム（ＳＶＯＬ）５０１は、ＰＶＯＬ５０２に対するスナップショット取得時点におけるスナップショットを記憶するボリュームである。ＳＶＯＬ５０１は、仮想的な論理ボリュームであり、ＳＶＯＬ５０１が記憶するデータは、実際には、ＰＶＯＬ５０２又はプール５０３に記憶されている。実施例１においては、ＳＶＯＬ５０１は、世代番号（世代＃）により、そのスナップショットの取得順を表すようにしており、古いものから順に、世代＃１、世代＃２、世代＃３・・・となっており、旧い世代ほど世代番号が小さい。
【００４８】
世代＃１のＳＶＯＬ５０１ａ内の領域５１０ａと、世代＃２のＳＶＯＬ５０１ｂ内の領域５１０ｃは、ＰＶＯＬ内の領域５１０ｂを参照するように設定される。世代＃３のＳＶＯＬ５０１ｃ内の領域Ｒ５１０ｇは、世代＃２と世代＃３の間に更新された領域（ＰＶＯＬ５０２内の領域）から退避されたデータを記憶している、プール５０３内の領域５１０ｈを参照するように設定される。また、世代＃１と世代＃２の間に更新され世代＃２と世代＃３の間に更新されなかった領域（ＰＶＯＬ５０２における領域）に対応する、世代＃２のＳＶＯＬ５０１ｂ内の領域５１０ｄ、及び、世代＃３のＳＶＯＬ５０１ｃ内の領域５１０ｆついては、世代＃１と世代＃２の間に更新された領域（ＰＶＯＬ５０２における領域）から退避されたデータを記憶している、プール５０３内の領域５１０ｅを参照するように設定される。
【００４９】
図３は、ストレージシステム３００内の記憶階層を示す。なお、以下の説明では、ｎ番目のレイヤを「レイヤｎ」と呼ぶ（ｎは自然数）。ｎが小さい程、上のレイヤである。レイヤには、ＳＶＯＬ５０１、プール５０３及びＲＧ６０２がある。
【００５０】
ＳＶＯＬ５０１は、レイヤ１の論理記憶領域であり、サーバシステム３０２に提供される（サーバシステム３０２から可視の）上述の論理ボリュームである。
【００５１】
プール５０３は、レイヤ２の論理記憶領域であり、１以上のＲＧ６０２に基づく論理記憶領域である。プール５０３は、複数のページ６１０で構成されている。なお、プール５０３の全部又は一部は、少なくとも１つのＲＧ６０２に代えて又は加えて、ストレージシステム３００の外部の記憶資源に基づいていてもよい。
【００５２】
ＲＧ６０２は、レイヤ３の論理記憶領域であり、複数のＰＤＥＶ２２０で構成されたＲＡＩＤグループの空間である。
【００５３】
ＳＶＯＬ５０１に対しては、データが実際に格納される領域に対して、プール５０３のページ６１０が割り当てられる。
【００５４】
図４Ａ−図４Ｃは、管理者によるスナップショット取得動作を示す図である。図４Ｄは、スナップショット管理情報を示す図である。図４Ａ-図４Ｄを用いて、課題を説明する。
【００５５】
図４Ａに示す通り、管理者１は図１で説明した、サーバシステム３０２内アプリケーション３０３からストレージシステム３００のストレージコントローラ３０１にスナップショットの作成指示を行うユーザである。管理者１は、サーバシステム３０２からスナップショット作成指示を送信する。スナップショット作成・削除などのオペレーション実行に関する情報や、スナップショット数などの情報は、アプリケーション３０３からアクセスできるようにＰＶＯＬ５０２内のスナップショット管理情報１０（以下、ＳＳ管理情報）に記録される。
【００５６】
ＳＳ管理情報は、図４Ｄに示すように、ＰＶＯＬ Ｔ１に対し、スナップショットの世代番号 Ｔ２が対応して管理されている。世代番号 Ｔ２は、スナップショットが取得された取得日時等、各スナップショットがどのＰＶＯＬのどの世代であるか一意に特定できる情報であればよい。
【００５７】
一方、管理者２はストレージシステム３００の管理者であって、管理システム３０８からストレージコントローラ３０１にスナップショット作成指示を送信する。管理者２が管理システム３０８を用いて取得するスナップショットの管理情報は、ストレージシステム３００内のメモリ３１２（共有メモリ）内に格納される。
【００５８】
時刻Ｔ０に管理者１がアプリケーション３０３からスナップショット作成指示を実施すると世代＃０のスナップショットであるＳＶＯＬ５０１ａが作成される。スナップショット５０１aは、ＰＶＯＬ５０２に対して更新要求があった場合に、旧データを格納する。スナップショット作成完了後、アプリケーション３０３はＰＶＯＬ５０２内に、世代＃０のＳＳ管理情報１０ａを記録する。一般的に、スナップショットの管理情報はストレージシステムのメモリ３１２に格納されるが、アプリケーション３０３からはメモリ３１２に格納されたスナップショットの管理情報にアクセスすることができないため、アクセス可能なＰＶＯＬ５０２にＳＳ管理情報１０を書き込む。ＳＳ管理情報１０は、図４Ｄに示す通り、ＰＶＯＬの識別情報Ｔ１とＰＶＯＬに対するスナップショットの世代情報Ｔ２とが対応して管理される。世代情報は、スナップショットを取得した時間情報であっても良い。
【００５９】
その後、管理者２は管理システム３０８からスナップショット作成指示を実施すると、世代＃１のスナップショットであるＳＶＯＬ５０１ｂが作成される。このＳＶＯＬ５０１ｂには、ＰＶＯＬ５０２に格納されているＳＳ管理情報１０も含まれる。
【００６０】
図４Ｂに示す通り、時刻Ｔ１に、管理者１がアプリケーション３０３から世代＃０のスナップショットの削除を実施すると、世代＃０のスナップショット５０１ａが削除される。その後、世代＃２のスナップショット作成指示を実施すると、世代＃２のスナップショット、ＳＶＯＬ５０１ｃが作成される。この時、ＰＶＯＬ５０２には、世代２のＳＳ管理情報１０ｃが格納され、アプリケーション３０３から世代２のスナップショットのＳＳ管理情報を読み出すことができる。
【００６１】
図４Ｃに示す通り、時刻Ｔ２に管理者２が管理システム３０８から世代＃１時点にリストア処理を行った場合に、世代０のＳＳ管理情報を含むスナップショット５０１ｂがリストアされる。しかし、実際には世代＃０(５０１ａ)が削除されていて世代＃１時点のＳＳ管理情報１０ｂと整合性が取れないといった状況が発生する。そのため、管理者１はアプリケーション３０３からのスナップショットの運用を継続できない、という課題が発生する。
【００６２】
図５〜１８を用いて上述した課題を解決するための実施例を説明する。
図５は、メモリ３１２の構成と、メモリ３１２内のプログラム及び管理情報との例を示す図である。メモリ３１２は、ローカルメモリ４０１、キャッシュメモリ４０２、及び共有メモリ４０４というメモリ領域を含む。これらのメモリ領域のうちの少なくとも１つは、独立したメモリであってもよい。ローカルメモリ４０１は、このローカルメモリ４０１を含むメモリ２１２と同一組に属するプロセッサ３１１により使用される。
【００６３】
ローカルメモリ４０１には、スナップショット作成プログラム４１１、スナップショット削除プログラム４１２、リストアプログラム４１３、リストア確定処理プログラム４１４、コピー処理プログラム４１５、Ｉ／Ｏ処理プログラム４１６、が格納される。スナップショット作成プログラム４１１、スナップショット削除プログラム４１２、リストアプログラム４１３、リストア確定処理プログラム４１４については後述する。
【００６４】
コピー処理プログラム４１５は、データのコピー処理を実行する。Ｉ／Ｏ処理プログラム４１６は、他のプログラムを適宜呼び出して、データの入出力処理を実行する。この２つのプログラムは、特許文献１の記載と同じである為、詳細な説明は省略する。
【００６５】
キャッシュメモリ４０２には、ＰＤＥＶ３２０に対してライト又はリードされるデータセットが一時的に格納される。
【００６６】
共有メモリ４０４は、この共有メモリ４０４を含むメモリ３１２と同一組に属するプロセッサ３１１、及び異なる組に属するプロセッサ３１１の両方により使用される。共有メモリ４０４には、管理情報が格納される。
【００６７】
管理情報は、ペア管理テーブル４２１、差分領域管理テーブル４２２、アドレス管理テーブル４２３、ページ管理テーブル４２４を含む。これらのテーブルは図を参照して後述する。
【００６８】
以下、幾つかのテーブルを説明する。
【００６９】
図６は、ＰＶＯＬに対するペア情報を管理するペア管理テーブル４２１を説明する図である。なお、以下の説明では、適宜、論理ボリュームを「ＶＯＬ」と記載する。
ペア管理テーブル４２１は、ＰＶＯＬ番号（ＰＶＯＬ＃）４２１−１と、最新世代番号（最新世代＃）４２１−２と、ペアＩＤ４２１−３と、ＳＶＯＬ番号（ＳＶＯＬ＃）４２１−４と、世代番号（世代＃）４２１−５と、２つのステータス４２１−６と４２１−７と属性情報４２１−８と、登録グループ番号(登録Ｇｒ＃)４２１−９と、グループ作成時のＳＶＯＬ番号(Ｇｒ作成時ＳＶＯＬ＃)４２１−１０を対応付けたレコードを管理する。  ペアＩＤ４２１−３と、ＳＶＯＬ番号（ＳＶＯＬ＃）４２１−４と、世代番号（世代＃）４２１−５と、２つのステータス４２１−６と４２１−７と属性情報４２１−８と、登録グループ番号(登録Ｇｒ＃)４２１−９と、グループ作成時のＳＶＯＬ番号(Ｇｒ作成時ＳＶＯＬ＃)４２１−１０は、取得したスナップショットに対応する情報である。
【００７０】
ＰＶＯＬ＃４２１−１は、コピー元となるボリューム（ＰＶＯＬ）をストレージシステム３００内で一意に特定する番号である。最新世代＃４２１−２は、対応するＰＶＯＬにおける最新のスナップショットの世代番号である。ペアＩＤ４２１−３は、ＰＶＯＬと世代とのペアを一意に特定する番号である。ＳＶＯＬ＃４２１−４は、世代＃のスナップショットをマップしているボリューム（ＳＶＯＬ）を示す番号であり、ペア作成時に付与される。ＳＶＯＬ＃４２１−４は、ペア操作によって変更される場合がある。
【００７１】
世代＃４２１−５は、ＰＶＯＬのスナップショットの取得順を決定する番号である。ステータス１(４２１−６)は、対応するコピーペアの状態である。状態としては、スナップショットを保持している状態を示す「Ｓｎａｐｓｈｏｔ保持」と、対応するスナップショットの世代からのリストアを実行している状態を示す「リストア中」がある。
【００７２】
ステータス２(４２１−７)は、対応する世代のスナップショットの状態である。状態としては、スナップショットの削除指示がされていない状態を示す「指示前」とスナップショットの削除指示を受けた状態を示す「指示済」がある。属性情報４２１−８は、どのインターフェースからスナップショット作成されたかを示す情報である。登録グループ番号(登録Ｇｒ＃)４２１−９は、図１１を用いて後で説明するグループ化処理で、所属したグループ番号であり、例えば、グループ化されるタイミングで付与され、その後変更されることはない。グループ作成時のＳＶＯＬ番号(Ｇｒ作成時ＳＶＯＬ＃)４２１−１０も、図１１を用いて後で説明するグループ化処理で記録するグループ作成時のＳＶＯＬ番号である。
【００７３】
例えば、同図における一番上のレコードは、ＶＯＬ＃０のＶＯＬがＰＶＯＬであり、属性情報０のＩ／Ｆ指示で、ＶＯＬ＃６のＳＶＯＬにスナップショット作成指示がされ、そのペアＩＤが０である。このスナップショットは、世代番号が１であり、グループ０に登録され、スナップショットを保持していることを示している。また、現在は属性情報０のＩ／Ｆから削除指示がされ、ＳＶＯＬ＃４２１−４が「−」となり、サーバシステム３０２からはスナップショットが見えていない状態を示している。
【００７４】
図７は、ＰＶＯＬの各領域に対するスナップショットの情報を示す図である。図７により、差分領域管理テーブルを説明する。
差分領域管理テーブル４２２は、ＰＶＯＬ番号（ＰＶＯＬ＃）４２２−１と、領域ＩＤと４２２−２、退避状態４２２−３と、リストア状態４２２−４と、ＣＡＷ属性４２２−５と、世代番号（世代＃）４２２−６とを対応付けたレコードを管理する。
【００７５】
ＰＶＯＬ＃４２２−１は、コピー元となるＶＯＬ（ＰＶＯＬ）をストレージシステム３００内で一意に特定する番号である。領域ＩＤ４２２−２は、領域特定情報の一例であり、ＰＶＯＬにおいて区分されている領域（スロット）を特定する番号である。退避状態４２２−３は、ＰＶＯＬにおける領域に書き込まれるデータがプール５０３に退避されているか否かを示す情報である。退避状態としては、例えば、データを退避していることを示す「退避済み」と、データを退避していないことを示す「未退避」とがある。
【００７６】
リストア状態４２２−４は、リストアが実行された際のリストアの状態を示す情報である。リストア状態としては、リストアが実行された場合には、リストアが済んでいることを示す「済み」が設定され、リストアが実行されていない場合には、「未」が設定される。ＣＡＷ属性４２２−５は、当該領域についてＣＡＷを実行する必要がある場合、すなわち、対応するＰＶＯＬの領域からデータを退避させるコピーを実行する必要がある場合には、「ＯＮ」が設定され、ＣＡＷを実行する必要がない場合、すなわち、ＰＶＯＬの領域からデータを退避させる必要がない場合には、「ＯＦＦ」が設定される。
【００７７】
世代＃４２２−６は、該当する領域に書き込むべきデータ（キャッシュメモリ４０２内のデータ（データ要素））に対応するスナップショットの世代番号である。実施例１では、最新のスナップショット取得時点以降に書き込まれたデータ要素の世代＃としては、書き込まれた時点のスナップショットの最新世代＃＋１が設定される。ここで、この世代番号が、ＰＶＯＬに対するスナップショット取得時点との時間的関係を示す時間関係情報の一例である。なお、世代＃に代えて、スナップショット取得時間が管理されてもよく、要は、データ要素について、各スナップショットの取得時点との一致又は前後等の時間関係を把握できる情報であればよい。
【００７８】
例えば、同図における２番目のレコードは、ＶＯＬ＃が０のＶＯＬ内の領域＃が１の領域においては、データ要素が未退避であり、リストアは実行されておらず、当該領域に対してデータが書き込まれる場合には、ＣＡＷを実行することを示し、当該領域のデータは、スナップショットの世代＃は、２であることを示している。
【００７９】
図８は、アドレス変換テーブル４２３の例を示す図である。各世代のスナップショットを構成する各領域に関する情報となる。アドレス管理テーブル４２３は、世代番号（世代＃）４２３−１と、領域ＩＤ４２３−２と、共有ページＩＤ４２３−３と、自ページＩＤ４２３−４とを対応付けたレコードを管理する。
【００８０】
世代＃４２３−１は、ＰＶＯＬのスナップショットの世代をストレージシステム３００内で一意に特定する番号である。領域ＩＤ４２３-２は、世代番号のスナップショットにおいて区分されているＰＶＯＬの領域を特定する番号であり、図７に示した領域ＩＤ４２２-２と同じ情報である。共有ページＩＤ４２３−３は、当該領域のデータが格納される共有ページを特定する番号である。共有ページは、他の世代のからも参照される可能性があるページである。自ページＩＤ４２３−４は、当該領域のデータが格納される自ページを特定する番号である。自ページは、対応する世代のみで参照されるページである。具体的には、対応するＳＶＯＬが書き込み可能な世代のスナップショットを管理しており、当該ＳＶＯＬに対して書き込みがあった場合のデータを格納するページである。例えば、同図の一番上のレコードは、世代＃０のスナップショットデータの領域＃０の領域について、共有ページＩＤが１であり、自ページＩＤが１０であることを示している。
【００８１】
図９は、プールのアドレスを管理するための情報であるページ管理テーブル４２４の例を示す図である。ページ管理テーブル４２４は、ページ番号(ページ＃)４２４−１と、割り当てフラグ４２４−２と、ＶＯＬ番号(ＶＯＬ＃)４２４−３とＶＯＬ内アドレス４２４−４とを対応付けたレコードを管理する。ページ＃４２４−１は、ページ６１０をプール５０３内で一意に特定する番号である。割当フラグ４２４−２は、対象ページ６１０が割り当てられている状態である「割当済」か、割当てられていない状態である「未割当」かを示す。ＶＯＬ＃４２４−３は、対象ページ６１０の割当先ＶＯＬ(ＰＶＯＬ又はＳＶＯＬ)の番号を示す。ＶＯＬ内アドレスは、対応するページ６１０の割当先ＶＯＬのアドレスを示す。
【００８２】
以下、実施例１で行われる幾つかの処理を説明する。
【００８３】
図１０は、スナップショット作成処理の流れを示す。スナップショット作成処理は、サーバシステム３０２や管理システム３０８から、予め設定された時刻又はスナップショット作成要求があった場合に実行される。スナップショット作成プログラムは、ペア管理テーブル４２１に新しく行を追加し、ペアＩＤ４２１−３とＳＶＯＬ＃４２１−３を新しく設定する(Ｓ４１１−１)。スナップショットを作成するのに、ＳＶＯＬは作成されていなくてもよい。その場合、スナップショット作成プログラム４１１の処理Ｓ４１１-１が不要になる。
【００８４】
スナップショット作成プログラムは、ペア管理テーブル４２１のペアＩＤ４２１−３とＳＶＯＬ＃４２１−３を新しく設定した行のステータス１(４２１−６)に「Ｓｎａｐｓｈｏｔ保持」を設定する(Ｓ４１１−２)。また、ステータス２（４２１−７）にスナップショット削除指示前であることを示す「指示前」を登録する。
【００８５】
スナップショット作成プログラムは、ペア管理テーブル４１２の当該ＰＶＯＬの最新世代＃４２１−２をカウントアップする(Ｓ４１１−３)。
【００８６】
最新世代＃のカウントアップ後、最新世代＃をスナップショット作成対象ＳＶＯＬの世代＃４２１−５に設定(Ｓ４１１−４)。
【００８７】
スナップショット作成プログラムは、作成対象ＳＶＯＬの登録Ｇｒ＃４２１−９とＧｒ作成時ＳＶＯＬ＃４２１−１０に「−」を設定する(Ｓ４１１−５)。
Ｓ４１１−５の処理の後、スナップショット作成処理プログラム４１１は、グループ化処理(Ｓ４１１−６)を実施する。
【００８８】
図１１は、グループ化処理の流れを示す。グループ化処理プログラム４１１−６は、アプリケーション３０３がスナップショット取得時、他の管理者のスナップショットがあれば、グループ化を行う。管理システム３０８がスナップショットを取得する際にも、他の管理者のスナップショットがある場合には、グループ化を行う。
【００８９】
グループ化処理プログラム４１１−６は、ペア管理テーブル４２１を参照する(Ｓ４１１−６−１)。グループ化処理プログラム４１１−６は、スナップショット作成プログラム４１１の一部である。グループ化処理プログラム４１１−６は、同一ＰＶＯＬ＃の全ペア分、判断処理(Ｓ４１１−６−２)を実施する。グループ化処理プログラム４１１−６は、判断処理を実施するスナップショットの属性情報４２１−８がスナップショットを作成したペアの属性情報４２１−８と同一かを判断する(Ｓ４１１−６−３)。属性情報４２１−８が同一なら同一の管理者、異なっている場合異なる管理者によってスナップショットが取得されたことが把握できる。
【００９０】
Ｓ４１１−６−３の判断結果が偽の場合(Ｓ４１１−６−３：ＮＯ)、２つ目の判断処理を実施する(Ｓ４１１−６−４)。Ｓ４１１−６−３の判断結果は真の場合(Ｓ４１１−６−３：ＹＥＳ)、次のペアについて処理を行う。
【００９１】
２つ目の判断処理Ｓ４１１−６−４では、判断対象のペアのステータス２(４２１−７)が「指示前」か否かを判断する。
【００９２】
Ｓ４１１−６−４の判断結果が真の場合(Ｓ４１１−６−４：ＹＥＳ)、グループ化処理プログラム４１１−６は、判断対象ペアの登録Ｇｒ＃４２１−９に未使用のＧｒ＃を追加する(Ｓ４１１−６−５)。Ｓ４１１−６−４の判断結果が偽の場合(Ｓ４１１−６−４：ＮＯ)、次のペアについて処理を行う。
【００９３】
Ｓ４１１−６−５の後、グループ化処理プログラム４１１−６は、当該Ｇｒ作成時ＳＶＯＬ＃４２１−１０に対象ＳＶＯＬ＃を設定する。これにより、リストア処理の際には、ＳＶＯＬ＃４２１−４もＧｒ作成時のＳＶＯＬ＃に戻すことが可能となる。つまり、ＳＶＯＬ＃４２１−４は、一方の管理者によるペア操作により番号が変更さ得る場合があるが、Ｇｒ作成時のＳＶＯＬ＃４２１−１０は、グループ作成時に付与された番号から変更されることがないため、管理者１からも管理者２からも正しいバックアップイメージを参照することができる。
【００９４】
ＳＶＯＬが作成されていない場合は、Ｇｒ作成時の世代＃４２１−５をペア管理テーブル４２１に記録する。その場合、ペア管理テーブル４２１にＧｒ作成時世代＃の情報が追加され、グループ化処置プログラム４１１−６の処理Ｓ４１１−６−６の後に、当該Ｇｒ作成時世代＃に対象世代＃を設定する処理が追加される。
【００９５】
グループ化処理プログラムは、同一ＰＶＯＬ＃の全ペア分繰り返しが完了すると、グループ化処理を完了する。
【００９６】
図１２は、スナップショット削除処理の流れを示す。スナップショット削除処理４１２は、スナップショット作成処理４１１と同様、サーバシステム３０２や管理システム３０８から、予め設定された時刻又はスナップショット削除要求があった場合に実行される。
【００９７】
スナップショット削除プログラム４１２は、ペア管理テーブル４２１を参照する(Ｓ４１２−１)。スナップショット削除プログラム４１２は、スナップショット削除対象ペアのＳＶＯＬ＃４２１−４を「−」に設定する。これにより、サーバシステム３０２や管理システム３０８から、削除されたＳＶＯＬ＃でスナップショットの作成指示が来ても当該ＳＶＯＬ＃を使用することができる。
【００９８】
スナップショットを削除する際に、ＳＶＯＬはなくても良い。その場合、スナップショット削除処理４１２の処理Ｓ４１２−２が不要になる。ＳＶＯＬがない場合、世代＃４２１−５がＳＶＯＬ＃４２１−４にあたるため、当該世代＃４２１−５を「−」に設定する。
【００９９】
Ｓ４１２−２の後、スナップショット削除対象ペアのステータス２(４２１−７)に「指示済」を設定する(Ｓ４１２−３)。Ｓ４１２−３の後、スナップショット削除指示要求がされたペアがグループ化されているか、すなわち、当該ペア管理情報の登録Ｇｒ＃４２１−９にＧｒ＃が登録されているか否かを判断する(Ｓ４１２−４)。グループの登録、即ち、グループ化は属性情報４２１−８、ステータス２  ４２１−７によって行われるため、これら属性情報４２１−８、ステータス２  ４２１−７によって直接判断することもできる。
【０１００】
Ｓ４１２−４の判断結果が偽の場合(Ｓ４１２−４：ＮＯ)、削除指示要求がされたペアはグループ化されていない、すなわち、スナップショット削除対象ペアの属性情報４２１−８とは異なる属性情報４２１−８をもつ他のどのインターフェースからも当該ペアは使われないので、スナップショットデータを実際に削除する為に指定スナップショット削除処理(Ｓ４１２−５)を実施する。
【０１０１】
Ｓ４１２−４の判断結果が真の場合(Ｓ４１２−４：ＹＥＳ)、削除指示要求がされたペアを削除しても良いか、すなわち、所属グループを削除可能か判断するため、グループ削除処理(Ｓ４１２−６)を実施する。これにより、複数の管理者から同一の正ボリュームに対するスナップショット機能を使用する環境下において、一方の管理者のスナップショットの削除等のペア操作を行った場合でも、他の管理者の運用に影響を与えることなくスナップショット機能を利用することができる。
【０１０２】
スナップショット削除処理は、指定スナップショット削除処理Ｓ４１２−５又は、グループ削除処理Ｓ４１２−６が完了すると、スナップショット削除処理は完了する。
【０１０３】
図１３は、指定スナップショット削除処理の流れを示す。指定スナップショット削除処理プリグラム４１２−５は、スナップショット削除プログラム４１２の一部である。指定スナップショット削除処理プリグラム４１２−５は、差分領域管理テーブル４２２から、スナップショット削除対象となるＳＶＯＬに対応するＰＶＯＬについてのＣＡＷ属性４２２−５がＯＮの領域を検出する（Ｓ４１２−５−１）。その後、当該ＣＡＷ属性４２２−５がＯＮの領域に対して、必要に応じて退避コピーを実行する（Ｓ４１２−５−２）。具体的には、削除するＳＶＯＬが記憶している領域であって、他のスナップショットにより参照されている領域のデータについては、参照しているＳＶＯＬの領域に退避コピーをする。
【０１０４】
次いで、指定スナップショット削除処理プログラム４１２−５は、ＰＶＯＬの退避した領域について、差分領域管理テーブル４２２のＣＡＷ属性４２２−５をＯＦＦに設定し（Ｓ４１２−５−３）、ペア管理テーブル４２２の対応するペア情報をペア管理テーブルから削除する（Ｓ４１２−５−３）。
【０１０５】
図１４は、グループ削除処理の流れを示す。グループ削除処理プログラム４１２−６は、ペア管理テーブル４２１を参照する(Ｓ４１２−６−１)。グループ削除処理プログラム４１２−６は、スナップショット削除プログラム４１２の一部である。
グループ削除処理プログラム４１２−６は、削除対象グループ内の全ペア分、ステータス２(４２１−７)が削除指示済みである「指示済」かを確認し(Ｓ４１２−６−３)、削除対象グループの全ペアのステータス２(４２１−７)が「指示済」か否かを判断する(４２１−６−５)。
【０１０６】
Ｓ４１２−６−５の判断結果が真の場合(Ｓ４１２−６−５：ＹＥＳ)、削除対象グループに属している全ペアの登録Ｇｒ＃４２１−９から、削除対象グループ番号を削除し、指定スナップショット削除処理(Ｓ４１２−５)を行う。
【０１０７】
Ｓ４１２−６−５の判断結果が偽の場合(Ｓ４１２−６−５：ＮＯ)、グループは削除せず、処理を終了する。これにより、図４で説明した課題、即ち、必要なスナップショットが削除されることがない。
【０１０８】
図１５は、リストア処理の流れを示す。リストア処理プログラム４１３は、サーバシステム３０２や管理システム３０８から、ある世代＃のＳＶＯＬに対してリストア指示された場合に実行される。リストア処理時に、ＳＶＯＬなくても良い。その場合、ＰＶＯＬのある世代＃に対してリストア指示がされる。
【０１０９】
まず、リストア処理プログラム４１３は、リストア実施可能か判断する(Ｓ４１３−１)。例えば、同じＰＶＯＬに対してすでに他のＳＶＯＬがリストア中の場合、リストア不可として、リストア処理は完了する。また、リストア可能なＳＶＯＬを、リストア操作インターフェースの属性情報と同じ属性情報のＳＶＯＬに限定する場合、リストア対象ＳＶＯＬの属性情報４２１−８が操作インターフェースの属性情報４２１−８と一致するか否かの判断を実施する。
【０１１０】
Ｓ４１３−１の判断結果が真の場合(Ｓ４１３−１：ＹＥＳ)、リストア処理プログラム４１３は、当該ＳＶＯＬのステータス１(４２１−６)を「リストア中」に設定し(Ｓ４１３−２)、ＳＶＯＬからＰＶＯＬにデータ転送を実施する(Ｓ４１３−３)。
【０１１１】
Ｓ４１３−３完了後、リストア処理プログラム４１３は、リストア対象ＳＶＯＬがグループ化されているが判断する(Ｓ４１３−４)。
【０１１２】
Ｓ４１３−４の判断結果が真である場合(Ｓ４１３−４：ＹＥＳ)、リストア対象ＳＶＯＬの属するグループのＳＶＯＬ＃４２１−４変更処理(Ｓ４１３−７)を行う。
Ｓ４１３−４の判断結果が偽である場合(Ｓ４１３−４：ＮＯ)、リストア対象ＳＶＯＬのステータス１(４２１−６)を「Snapshot保持」に設定し(Ｓ４１３−９)、リストア処理を完了する。
【０１１３】
Ｓ４１３−７の処理では、リストア対象ＳＶＯＬの属するグループのＳＶＯＬ＃４２１−４の変更処理を行う。対象グループ内の全ペアに対して、ＳＶＯＬ＃４２１−４がグループ作成時のＳＶＯＬ＃４２１−４と不一致か否か判断する。
【０１１４】
Ｓ４１３−６の判断結果が真である場合(Ｓ４１３−６：ＹＥＳ)、リストア処理プログラム４１３は、当該ＳＶＯＬ＃４２１−４をＧｒ作成時ＳＶＯＬ＃４２１−１０に変更する(Ｓ４１３−７)。グループ作成時のＳＶＯＬ番号に戻すことにより、グループ作成後に管理者１や管理者２のスナップショットの操作に拘らず、スナップショット作成時状態でリストア指示を行うことができる。
【０１１５】
Ｓ４１３−６の判断結果が偽である場合(Ｓ４１３−６：ＮＯ)、リストア処理プログラムは、同一グループ内の次のペアの処理を行う。
【０１１６】
対象グループ内のＳＶＯＬ＃４２１−４変更処理が完了すると、リストア対象ＳＶＯＬのステータス１(４２１−６)を「Snapshot保持」に設定し(Ｓ４１３−９)、リストア処理を完了する。
【０１１７】
ＳＶＯＬがない場合は、ＳＶＯＬ＃４２１−４が世代＃４２１−５にあたるため、処理Ｓ４１３−６では世代＃４２１−５がＧｒ作成時世代＃と不一致かを判断する。同様に、処理Ｓ４１３−７では世代＃４２１−５をＧｒ作成時世代＃に変更する。
【０１１８】
図１６は、リストア確定処理の流れを示す。リストア確定処理プログラム４１４は、リストア処理４１３実施後、リストア世代＃を確定する際に実行される。リストア確定処理４１４は図１７に示すような状況を防ぐための処理である。図１７は、実施例１のリストア時のスナップショット処理方式の概念図である。時刻Ｔ１でリストア実施後、ＰＶＯＬ５０２内のアプリケーション３０３が利用するＳＳ管理情報１０は世代＃１の時点に戻るため、ＳＳ管理情報１０ｂには世代＃０の情報しか記録されておらず、アプリケーション３０３からは世代＃２のスナップショットが認識できない。そのため、世代＃２に対するリストア完了後の処理が必要である。実施例１では、リストア確定処理４１４で世代＃２(５０１ａ)を削除する。
【０１１９】
リストア確定処理プログラム４１４は、ペア管理テーブル４２１を参照する(Ｓ４１４−１)。
【０１２０】
リストア確定処理プログラム４１４は、リストア世代＃以降に作成された世代を全て、指定スナップショット削除処理Ｓ４１２−５を用いて削除する。これにより、アプリケーション３０３から認識することが出来ない世代のスナップショットデータを削除し、プール消費量を削減することができる。
【０１２１】
図１８は、上述した本発明の実施例１を示す概念図である。説明を簡略化するために、管理システム３０８からスナップショット作成指示された際のみ、グループ化処理を実施する。時刻Ｔ０に管理者１がアプリケーション３０３からスナップショット作成指示を実施すると世代＃０のスナップショット、ＳＶＯＬ５０１ａが作成される。その際、世代の情報として図６で説明した、属性情報及び、スナップショットが削除指示前であることを示す「指示前」という状態を記録する。
【０１２２】
スナップショット作成完了後、アプリケーション３０３はＰＶＯＬ５０２内に、世代＃０のＳＳ管理情報１０ａを記録する。その後、管理者２は管理システム３０８からスナップショット作成指示を実施すると、世代＃１のスナップショット、ＳＶＯＬ５０１ｂが作成される。このＳＶＯＬ５０１ｂは、世代０の管理情報も含むイメージが作成される。スナップショット作成処理が完了後は、図１１で説明したクループ作成処理を行う。作成したスナップショットとは異なる属性情報が記録されていて、かつ「指示前」状態のスナップショットが存在する場合、そのスナップショットと作成したスナップショットを同一グループに登録する。つまり、一の管理者（管理者２）がスナップショットを作成指示した際に、他の管理者（管理者１）が作成した同一ボリュームのスナップショットが存在する場合、グループ化を実施する。
【０１２３】
時刻Ｔ１に、管理者１がアプリケーション３０３から世代＃０のスナップショットの削除指示をすると、削除要求を受け付けたことに応答し、世代＃０のスナップショットの状態を削除指示済みである「指示済」に変更する。実際にスナップショット削除するタイミングは、図１２で説明したスナップショット削除プログラムによって判断され、後述する条件を満たしたときに非同期に行う。
【０１２４】
これにより、図１７で示したように、管理者２が管理システム３０８からリストア実施しても不整合にはならず、図４の本発明の課題で示した状況の発生を防ぐことが出来る。
【０１２５】
以って、複数のユーザから同一正ボリュームに対するスナップショット機能を使用しても、どのユーザのスナップショット操作も他のユーザの運用に影響を与えずに、スナップショット機能を利用することができる。
【０１２６】
その後、時刻Ｔ２に管理者２が管理システム３０８から世代＃１のスナップショットの削除指示をした場合、時刻Ｔ１の時と同様に世代＃１のスナップショットの状態を「指示済」に変更する。グループ１内の全スナップショットの状態が「指示済」の場合、図１４で説明したグループ削除処理を行う。その後、時刻Ｔ３の図で示すように、状態が「指示済」でグループ化されていない世代のスナップショットのみを削除することで、どのユーザからも使用されない世代のみを削除することが可能になる。
【実施例２】
【０１２７】
以下、本発明の第二の実施形態について、図１９〜図２１を用いて説明する。
【０１２８】
実施例１では、図１７に示すような状況を防ぐために、リストア確定処理プログラム４１４でアプリケーション３０３から認識出来なくなった世代のスナップショットを削除する方法を示した。実施例２では、リストア実施後にアプリケーション３０３から認識することが出来ない世代のスナップショットを自動的に削除する方法について示す。
【０１２９】
図１９は、メモリ３１２の構成と、メモリ３１２内のプログラム及び管理情報との例を示す図である。図５とはローカルメモリ４０１内のプログラム構成が異なる。
【０１３０】
ローカルメモリ４０１には、スナップショット作成プログラム４１１、スナップショット削除プログラム４１２、リストアプログラム４１３、リストア後処理プログラム４１７、コピー処理プログラム４１５、I/O処理プログラム４１６、が格納される。
【０１３１】
キャッシュメモリ４０２には、図５と同様、ＰＤＥＶ３２０に対してライト又はリードされるデータセットが一時的に格納される。
【０１３２】
共有メモリ４０４は、図５と同様、この共有メモリ４０４を含むメモリ３１２と同一組に属するプロセッサ３１１、及び異なる組に属するプロセッサ３１１の両方により使用される。共有メモリ４０４には、管理情報が格納される。
【０１３３】
管理情報は、ペア管理テーブル４２１、差分領域管理テーブル４２２、アドレス管理テーブル４２３、ページ管理テーブル４２４を含む。
【０１３４】
図２０は、リストア後処理の流れを示す図である。リストア後処理プログラム４１７は、ペア管理テーブル４２１を参照し(Ｓ４１７−１)、リストアを実施した世代＃以降のペア分、以下の処理を繰り返す。
【０１３５】
リストア後処理プログラム４１７は、リストアを実施した世代＃の属性情報４２１−８と同じか否かを判断する(Ｓ４１７−３)。
【０１３６】
４１７−３の判断結果が真である場合(Ｓ４１７−３：NO)、リストア確定処理プログラム４１７は、当該ペア管理テーブルのステータス２(Ｓ４２１−７)を「指示済」に更新する。
【０１３７】
４１７−３の判断結果が偽である場合(Ｓ４１７−３：YES)、すなわち、リストア実施世代＃と同じ属性情報４２１−８のペアである場合、次のペアの確認処理を実施する。リストア実施世代＃以降の全てのペアについて判断処理４１７−３が完了すると、リストア後処理４１７は完了する。
【０１３８】
図２１は、リストア後処理の動作概念を示す図である。時刻Ｔ１の時、リストア後処理により、リストア実施世代＃より新しい、リストア実施世代の属性情報４２１−８の異なるＳＶＯＬ(５０１ｃ)のステータス２(４２１−７)を「指示済」にすることで、時刻Ｔ２−１の時に他のＳＶＯＬから再リストアを実施しても、リストア後に必要なＳＶＯＬ(５０１ａ)を復元可能となる。加えて、時刻Ｔ２−２の時にリストア不要となったＳＶＯＬ(５０１ｄ)を削除すれば、スナップショット削除処理４１２によって、グループとスナップショットの削除が実施される。
【０１３９】
本発明は、他の種々の形態でも実施することが可能である。例えば、ライト要求のようなＩ／Ｏ要求の送信元（Ｉ／Ｏ元）は、上述の実施形態では、サーバシステム３０２であるが、ストレージシステム３００における図示しないプログラム（例えば、ＶＭ上で実行されるアプリケーションプログラム）であってもよい。
【符号の説明】
【０１４０】
１０：ＳＳ管理情報、
３００：ストレージシステム、
３０１：ストレージコントローラ、
３０２：サーバシステム、
３０３：アプリケーション、
３０８：管理システム、
３１１：プロセッサ、
３１２：メモリ、
３２０：ＰＤＥＶ、
４０１：ローカルメモリ、
４０２：キャッシュメモリ、
４０４：共有メモリ、
４１１：スナップショット作成プログラム、
４１２：スナップショット削除プログラム、
４１３：リストアプログラム、
４１４：リストア確定処理プログラム、
４１５：コピー処理プログラム、
４１６：Ｉ／Ｏ処理プログラム、
４１７：リストア後処理プログラム、
４２１：ペア管理テーブル、
４２２：差分領域管理テーブル、
４２３：アドレス管理テーブル、
４２４：ページ管理テーブル、
５０１：ＳＶＯＬ、
５０２：ＰＶＯＬ、
５０３：プール、
５１０：領域、
６１０：ページ、
６０２：ＲＧ。
【図１】
2020201702.tif 000003
【図２】
2020201702.tif 000004
【図３】
2020201702.tif 000005
【図４Ａ】
2020201702.tif 000006
【図４Ｂ】
2020201702.tif 000007
【図４Ｃ】
2020201702.tif 000008
【図４Ｄ】
2020201702.tif 000009
【図５】
2020201702.tif 000010
【図６】
2020201702.tif 000011
【図７】
2020201702.tif 000012
【図８】
2020201702.tif 000013
【図９】
2020201702.tif 000014
【図１０】
2020201702.tif 000015
【図１１】
2020201702.tif 000016
【図１２】
2020201702.tif 000017
【図１３】
2020201702.tif 000018
【図１４】
2020201702.tif 000019
【図１５】
2020201702.tif 000020
【図１６】
2020201702.tif 000021
【図１７】
2020201702.tif 000022
【図１８】
2020201702.tif 000023
【図１９】
2020201702.tif 000024
【図２０】
2020201702.tif 000025
【図２１】
2020201702.tif 000026