(57)【要約】【課題】削除されたボリュームを復元できるシステム及び方法。【解決手段】ボリューム動作の安全性を維持するためのシステム及び方法。ストレージコントローラは、第１のボリュームを削除するための要求を受信する。この要求に応答して、ストレージコントローラは、第１のボリュームとそのアンカー媒体との間のリンクを削除できる。ストレージコントローラはまた、第１のボリュームのアンカー媒体の削除を遅延させることもできる。後にユーザが第１のボリュームを復元したい場合、ストレージコントローラは第１のボリュームをその過去のアンカー媒体に再接続でき、第１のボリュームをその以前の状態に効果的に復元して、削除動作を取り消すことができる。【選択図】図６
2019096355.tif 000002
【特許請求の範囲】
【請求項１】
１つ又は複数のストレージデバイス；及び
前記１つ又は複数のストレージデバイスに接続されたストレージコントローラを備える、コンピュータシステムであって、
前記ストレージコントローラは：
第１のボリュームを削除するための要求を受信し；
前記第１のボリュームを削除するための前記要求の受信に応答して：
第１の媒体が前記第１のボリュームのアンカー媒体であることの決定に応答して、前記第１のボリュームが過去に前記第１の媒体にリンクされていたことのインジケータを記憶し；
前記第１のボリュームが有効であることのいずれのインジケータを除去するよう構成される、コンピュータシステム。
【請求項２】
前記ストレージコントローラは更に、ボリューム−媒体間マッピングテーブルを保守することによって、前記ボリュームとアンカー媒体との間の関係を媒体間で追跡するよう構成され、
前記第１のボリュームが有効であることのいずれの前記インジケータを除去することは、前記第１のボリュームに対応する第１のエントリを、前記ボリューム−媒体間マッピングテーブルから削除することを含む、請求項１に記載のコンピュータシステム。
【請求項３】
前記第１のボリュームを削除するための前記要求を受信した後、前記ストレージコントローラは更に：
前記第１のボリュームを復元するための要求を受信し；
前記第１のボリュームを復元するための前記要求に応答して：
前記第１のボリュームが過去に前記第１の媒体にリンクされていたことの前記インジケータを取得し；
前記ボリューム−媒体間マッピングテーブル内に新規のエントリを生成し、前記新規のエントリは前記第１のボリュームを前記第１の媒体にリンクさせる
よう構成される、請求項２に記載のコンピュータシステム。
【請求項４】
前記第１のボリュームを削除するための前記要求を受信した後、前記ストレージコントローラは更に：
前記第１のボリュームを復元するための要求を受信し；
前記第１のボリュームを復元するための前記要求に応答して：
前記第１のボリュームが過去に前記第１の媒体にリンクされていたことの前記インジケータを取得し；
第２の媒体を生成し；
前記第１の媒体が前記第２の媒体の下層にあることのインジケータを記憶し；
前記ボリューム−媒体間マッピングテーブル内に新規のエントリを生成し、前記新規のエントリは前記第１のボリュームを前記第２の媒体にリンクさせる
よう構成される、請求項２に記載のコンピュータシステム。
【請求項５】
前記第１のボリュームを削除するための前記要求の受信に応答して、前記ストレージコントローラは更に、第１の期間だけ前記第１の媒体の削除を遅延させるよう構成される、
請求項１に記載のコンピュータシステム。
【請求項６】
前記第１の期間が経過した後、前記ストレージコントローラは、前記第１の媒体を、再利用の準備ができた状態としてマークするよう構成される、請求項５に記載のコンピュータシステム。
【請求項７】
前記第１の期間が経過した後、前記ストレージコントローラは更に、前記第２の媒体が前記第１の媒体の下層にある場合、かつ他のいずれの媒体も前記第２の媒体にリンクされていない場合に、前記第２の媒体を、再利用の準備ができた状態としてマークするよう構成される、請求項６に記載のコンピュータシステム。
【請求項８】
第１のボリュームを削除するための要求を受信するステップ；
前記第１のボリュームを削除するための前記要求の受信に応答して：
第１の媒体が前記第１のボリュームのアンカー媒体であることの決定に応答して、前記第１のボリュームが過去に前記第１の媒体にリンクされていたことのインジケータを記憶するステップ；及び
前記第１のボリュームが有効であることのいずれのインジケータを除去するステップを含む、ストレージシステムにおいて使用するための方法。
【請求項９】
ボリューム−媒体間マッピングテーブルを保守することによって、前記ボリュームと前記アンカー媒体との間の関係を媒体間で追跡するステップを更に含み、
前記第１のボリュームが有効であることのいずれの前記インジケータを除去することは、前記第１のボリュームに対応する第１のエントリを、前記ボリューム−媒体間マッピングテーブルから削除することを含む、請求項８に記載の方法。
【請求項１０】
前記第１のボリュームを削除するための前記要求を受信した後、前記方法は：
前記第１のボリュームを復元するための要求を受信するステップ；
前記第１のボリュームを復元するための前記要求に応答して：
前記第１のボリュームが過去に前記第１の媒体にリンクされていたことの前記インジケータを取得するステップ；及び
前記ボリューム−媒体間マッピングテーブル内に新規のエントリを生成し、前記新規のエントリは前記第１のボリュームを前記第１の媒体にリンクさせる、ステップ
を更に含む、請求項９に記載の方法。
【請求項１１】
前記第１のボリュームを復元するための要求を受信するステップ；
前記第１のボリュームを復元するための前記要求に応答して：
前記第１のボリュームが過去に前記第１の媒体にリンクされていたことの前記インジケータを取得するステップ；
第２の媒体を生成するステップ；
前記第１の媒体が前記第２の媒体の下層にあることのインジケータを記憶するステップ；及び
前記ボリューム−媒体間マッピングテーブル内に新規のエントリを生成し、前記新規のエントリは前記第１のボリュームを前記第２の媒体にリンクさせる、ステップ
を更に含む、請求項９に記載の方法。
【請求項１２】
前記第１のボリュームを削除するための前記要求の受信に応答して、前記方法は、第１の期間だけ前記第１の媒体の削除を遅延させるステップを更に含む、請求項８に記載の方法。
【請求項１３】
前記第１の期間が経過した後、前記方法は、前記第１の媒体を、再利用の準備ができた状態としてマークするステップを含む、請求項１２に記載の方法。
【請求項１４】
前記第１の期間が経過した後、前記方法は、前記第２の媒体が前記第１の媒体の下層にある場合、かつ他のいずれの媒体も前記第２の媒体にリンクされていない場合に、前記第２の媒体を、再利用の準備ができた状態としてマークするステップを更に含む、請求項１３に記載の方法。
【請求項１５】
プログラム命令を記憶する非一時的コンピュータ可読ストレージ媒体であって、
前記プログラム命令は：
第１のボリュームを削除するための要求を受信し；
前記第１のボリュームを削除するための前記要求の受信に応答して：
第１の媒体が前記第１のボリュームのアンカー媒体であることの決定に応答して、前記第１のボリュームが過去に前記第１の媒体にリンクされていたことのインジケータを記憶し；
前記第１のボリュームが有効であることのいずれのインジケータを除去する
ために、プロセッサによって実行できる、コンピュータ可読ストレージ媒体。
【請求項１６】
ボリューム−媒体間マッピングテーブルを保守することによって、前記ボリュームと前記アンカー媒体との間の関係を媒体間で追跡するために、前記プログラム命令をプロセッサによって更に実行でき、
前記第１のボリュームが有効であることのいずれの前記インジケータを除去することは、前記第１のボリュームに対応する第１のエントリを、前記ボリューム−媒体間マッピングテーブルから削除することを含む、請求項１５に記載のコンピュータ可読ストレージ媒体。
【請求項１７】
前記第１のボリュームを削除するための前記要求を受信した後：
前記第１のボリュームを復元するための要求を受信し；
前記第１のボリュームを復元するための前記要求に応答して：
前記第１のボリュームが過去に前記第１の媒体にリンクされていたことの前記インジケータを取得し；
前記ボリューム−媒体間マッピングテーブル内に新規のエントリを生成し、前記新規のエントリは前記第１のボリュームを前記第１の媒体にリンクさせる
ために、前記プログラム命令をプロセッサによって更に実行できる、請求項１６に記載のコンピュータ可読ストレージ媒体。
【請求項１８】
前記第１のボリュームを削除するための前記要求を受信した後：
前記第１のボリュームを復元するための要求を受信し；
前記第１のボリュームを復元するための前記要求に応答して：
前記第１のボリュームが過去に前記第１の媒体にリンクされていたことの前記インジケータを取得し；
第２の媒体を生成し；
前記第１の媒体が前記第２の媒体の下層にあることのインジケータを記憶し；
前記ボリューム−媒体間マッピングテーブル内に新規のエントリを生成し、前記新規のエントリは前記第１のボリュームを前記第２の媒体にリンクさせる
ために、前記プログラム命令をプロセッサによって更に実行できる、請求項１６に記載のコンピュータ可読ストレージ媒体。
【請求項１９】
前記第１のボリュームを削除するための前記要求の受信に応答して、第１の期間だけ前記第１の媒体の削除を遅延させるために、前記プログラム命令をプロセッサによって更に実行できる、請求項１５に記載のコンピュータ可読ストレージ媒体。
【請求項２０】
前記第１の期間が経過した後、前記第１の媒体を、再利用の準備ができた状態としてマークするために、前記プログラム命令をプロセッサによって実行できる、請求項１９に記載のコンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム内で削除されたボリュームを復元することに関する。
【背景技術】
【０００２】
コンピュータメモリストレージ及びデータ帯域幅が増大するに従って、業務において日常的に管理されるデータの量及び複雑性も増大する。データセンタ等の大規模分散型ストレージシステムは典型的には、多数の業務動作を実行する。サーバルームと呼ばれることもあるデータセンタは、１つ又は複数の業務に付随するデータの記憶、管理及び配布のための、物理又は仮想中央レポジトリである。分散型ストレージシステムは、１つ又は複数のネットワークによって相互接続されたクライアントコンピュータに接続してよい。分散型ストレージシステムのいずれの部分の性能が不良である場合、会社の運営を害し得る。従って分散型ストレージシステム、データ可用性及び高性能機能化に関する高い基準を維持する。
【０００３】
論理ボリュームマネージャ又はディスクアレイマネージャ等のソフトウェアアプリケーションは、マスストレージアレイ上にスペースを割り当てる手段を提供する。更にこのソフトウェアにより、システム管理者は、論理ボリュームを含むストレージグループのユニットを生成できるようになる。ストレージ仮想化により、物理ストレージから論理ストレージを抽出し、これによりエンドユーザが物理ストレージを識別することなく論理ストレージにアクセスできる。
【０００４】
ストレージ仮想化を支援するために、ボリュームマネージャは、エンドユーザからの論理アドレスを用いた入ってくる入力／出力（Ｉ／Ｏ）要求を、ストレージデバイス内の物理位置に関連するアドレスを用いた新規の要求に翻訳することによって、Ｉ／Ｏリダイレクションを実行する。いくつかのストレージデバイスは、ソリッドステートストレージデバイス内で使用してよいアドレス翻訳層といった、追加のアドレス翻訳機構を含んでよいため、論理アドレスから上述の別のアドレスへの翻訳は、唯一の又は最終的なアドレス翻訳を表さない場合がある。
【０００５】
多くのストレージシステムに関して、ボリューム動作は頻繁に実行され得る。例えば多数のボリュームは毎日生成及び削除され得る。ユーザは時にボリュームを不注意に削除してしまい、そのボリュームを復元したいことに気付くことがある。しかしながら従来のストレージシステムでは、ボリュームを削除してしまうと、削除したボリュームを復元することは不可能である。
【０００６】
以上に鑑みて、削除されたボリュームを復元できるシステム及び方法に対する需要が存在する。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ボリューム反転動作を実行するためのシステム及び方法の様々な実施形態を考える。
【課題を解決するための手段】
【０００８】
ストレージシステムは、ストレージコントローラ及び１つ又は複数のストレージデバイスを含んでよい。このストレージシステムは、１つ又は複数のホストクライアントシステムに接続してよい。一実施形態では、ストレージコントローラはボリューム及び媒体を利用して、ストレージシステム内に記憶されているクライアントデータを追跡する。媒体はデータの論理グループ化として定義され、各媒体は、データの論理グループ化を識別するための識別子を有する。
【０００９】
ストレージコントローラは、ボリューム−媒体マッピングテーブルを保守することによって各ボリュームを単一の媒体にマッピングでき、この媒体をそのボリュームのアンカー媒体と呼ぶ。各媒体は、いずれの個数の他の媒体に対してマッピングでき、ストレージコントローラはまた、媒体マッピングテーブルを保守することによって、アンカー媒体と下層媒体との間の関係を追跡でき、各下層媒体はスナップショットを表す。
【００１０】
一実施形態では、ストレージコントローラを、ボリューム動作を反転できるよう構成してよい。ストレージコントローラは第１のボリュームを削除するための第１の要求を受信してよい。第１のボリュームはそのアンカー媒体として第１の媒体を有してよい。第１の要求の受信に応答して、ストレージコントローラは、第１のボリュームと第１の媒体との間のリンクを除去してよい。ストレージコントローラは第１の期間に亘って、又は第１の媒体が利用しているストレージ空間が、他のデータを記憶するために必要となるまで、第１の媒体の削除を遅らせてよい。上記第１の期間はプログラム可能であってよく、実施形態によって変化し得る。ストレージコントローラはまた、第１のボリュームと第１の媒体との間の過去のリンクのインジケータを、ユーザがこのリンクを復元したい場合に備えて一時的に記憶してよい。
【００１１】
後の時点において、ユーザが第１のボリュームを復元したい場合がある。ユーザは第１のボリュームを復元するための第２の要求を生成して、この第２の要求をストレージコントローラに送信してよい。一実施形態では、第２の要求の受信に応答して、ストレージコントローラは第１のボリュームと第１の媒体との間のリンクを復元してよい。別の実施形態では、第２の要求の受信に応答して、ストレージコントローラは第２の媒体を生成し、第１の媒体が第２の媒体の下層にあることのインジケータを記憶し、その後第１のボリュームと第２のボリュームとの間のリンクを生成してよい。この実施形態では、再接続されるボリュームに対する変更を、接続解除に先行する変更と区別できる。
【００１２】
これらの及びその他の実施形態は、以下の説明及び添付の図面を考察することによって明らかになるであろう。
【図面の簡単な説明】
【００１３】
【図１】図１は、ストレージシステムの一実施形態を示す概略ブロック図である。
【図２】図２は、媒体の有向非巡回グラフ（ｄｉｒｅｃｔｅｄ  ａｃｙｃｌｉｃ  ｇ    ｒａｐｈ：ＤＡＧ）の一実施形態の概略ブロック図である。
【図３】図３は、媒体マッピングテーブルの一実施形態を示す。
【図４】図４は、ボリュームを削除及び復元するための動作の一実施形態を示す。
【図５】図５は、削除されたボリュームを復元するための代替動作の一実施形態を示    す。
【図６】図６は、ボリューム動作を取り消すための方法の一実施形態を示す概略フロ    ー図である。
【図７】図７は、削除されたボリュームを復元するための代替方法の一実施形態を示    す概略フロー図である。
【発明を実施するための形態】
【００１４】
本発明は様々な修正例及び代替形態を許容するものであるが、例として複数の具体的実施形態を図面に示し、また本明細書において詳細に説明する。しかしながら、図面及びこれに対する詳細な説明は、本出願において開示されている特定の形態に本発明を限定することを意図したものではなく、その反対に、本発明は、添付の請求項によって定義される本発明の精神及び範囲内のあらゆる修正例、均等物、代替例を包含できることを理解されたい。
【００１５】
以下の説明では、本発明の完全な理解を提供するために、多数の具体的な詳細を挙げる。しかしながら、これらの具体的な詳細を用いずに本発明を実施してもよいことを、当業者は認識するべきである。例えば公知の回路、構造、信号、コンピュータプログラム命令、技術については、本発明を不明瞭にするのを回避するために、詳細には示していない。
【００１６】
ここで図１を参照すると、ストレージシステム１００の一実施形態の概略ブロック図が示されている。ストレージシステム１００は、ストレージコントローラ１１０及びストレージデバイス群１３０、１４０を含んでよく、上記ストレージデバイス群１３０、１４０はいずれの個数のストレージデバイス群（又はデータストレージアレイ）の代表例である。図示したように、ストレージデバイス群１３０はストレージデバイス１３５Ａ〜Ｎを含み、これらはいずれの個数及びタイプのストレージデバイス（例えばソリッドステートドライブ（ｓｏｌｉｄ−ｓｔａｔｅ  ｄｒｉｖｅ：ＳＤＤ））の代表例である。ストレージコントローラ１１０はクライアントコンピュータシステム１２５に直接接続してよく、またストレージコントローラ１１０は、ネットワーク１２０を介して、クライアントコンピュータシステム１１５から離間した状態でクライアントコンピュータシステム１１５に接続してよい。クライアント１１５、１２５は、システム１００においてデータを記憶しデータにアクセスするためにストレージコントローラ１１０を利用できるいずれの個数のクライアントの代表例である。なお、いくつかのシステムは、ストレージコントローラ１１０に直接又は離間した状態で接続された単一のクライアントしか含まなくてもよい。
【００１７】
ストレージコントローラ１１０は、ストレージデバイス１３５Ａ〜Ｎへのアクセスを提供するよう構成されたソフトウェア及び／又はハードウェアを含んでよい。ストレージデバイス群１３０、１４０から離間したものとしてストレージコントローラ１１０を図示しているが、いくつかの実施形態では、ストレージコントローラ１１０をストレージデバイス群１３０、１４０のうちの一方又はそれぞれの中に配置してよい。ストレージコントローラ１１０は、ベースオペレーティングシステム（ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ：ＯＳ）、ボリュームマネージャ、本明細書で開示される様々な技術を実装するための追加の制御論理を含んでよく、又はこれらに接続してよい。
【００１８】
ストレージコントローラ１１０は実施形態に応じて、いずれの個数のプロセッサを含んでよく、及び／又はいずれの個数のプロセッサ上で実行されてよく、また、単一のホストコンピューティングデバイスを含んでよく、及び／若しくは単一のホストコンピューティングデバイス上で実行されてよく、又は複数のホストコンピューティングデバイスに亘って分散されていてよい。いくつかの実施形態では、ストレージコントローラ１１０は一般に、１つ若しくは複数のファイルサーバ及び／若しくはブロックサーバを含むか、又は１つ若しくは複数のファイルサーバ及び／若しくはブロックサーバ上で実行されてよい。ストレージコントローラ１１０は、デバイスの不良又はデバイス内のストレージ位置の不良によるデータの損失を防止するために、デバイス１３５Ａ〜Ｎに亘ってデータを複製するための様々な技術のうちのいずれを使用してよい。ストレージコントローラ１１０はまた、共通のデータセグメントを重複排除することによって、デバイス１３５Ａ〜Ｎに記憶されるデータ量を削減するための、様々な微粒度重複排除技術のうちのいずれを利用してよい。
【００１９】
ストレージコントローラ１１０はまた、システム１００内でスナップショットを生成してこれを管理するよう構成してよい。従って媒体のセットは、ストレージコントローラ１１０によって記録され、保守される。媒体のほとんどは、特定のボリュームが使用中の最新の媒体等の１つ又は複数の選択された媒体を除いて、読み出し専用であってよい。読み出し専用媒体は既に生成されたスナップショットを表す。各媒体は論理的に、媒体内の全てのブロックを含む。しかしながら、媒体が生成された時点から媒体が閉鎖された時点までに変化したブロックのみが保存され、これらのブロックに対するマッピングを上記媒体を用いて保守してもよい。
【００２０】
様々な実施形態では、ストレージコントローラ１１０が複数のマッピングテーブルを保守してよい。これらのマッピングテーブルは、媒体マッピングテーブル、ボリューム−媒体間マッピングテーブル、アドレス翻訳テーブル、重複排除テーブル、オーバレイテーブル及び／又はその他のテーブルを含んでよい。いくつかの実施形態では、これらのテーブルのうちの２つ以上に記憶された情報を、単一のテーブルへと結合してよい。媒体マッピングテーブルを利用して、媒体と下層の媒体との間のマッピング及びボリュームと媒体との間のマッピングを記録及び保守してよく、ボリューム−媒体間マッピングテーブルを利用して、ボリュームと媒体との間のマッピングを記録及び保守してよい。
【００２１】
アドレス翻訳テーブルは、複数のエントリを有するアドレス翻訳テーブルを含んでよく、各エントリは、対応するデータ成分に関する仮想−物理間マッピングを保持する。このマッピングテーブルを用いて、クライアントコンピュータシステム１１５、１２５からストレージデバイス１３５Ａ〜Ｎ内の物理的位置へ、論理読み書き要求をマッピングできる。受信した読み書き要求に対応する探索動作の間に、所定の媒体に関連するマッピングから「物理」ポインタ値を読み出してよい。続いてこの物理ポインタ値を用いて、ストレージデバイス１３５Ａ〜Ｎ内の物理的位置を配置してよい。なお、物理ポインタ値を用いて、ストレージデバイス１３５Ａ〜Ｎのうちの所定のストレージデバイス内の別のマッピングテーブルにアクセスしてもよい。その結果、物理ポインタ値と標的ストレージ位置との間に１つ又は複数のレベル間接参照を存在させることができる。
【００２２】
様々な実施形態において、媒体ＩＤ、論理又は仮想アドレス、セクタ番号等を含むキーを用いて、アドレス翻訳テーブルにアクセスしてよい。受信された読み書きストレージアクセス要求は、特定のボリューム、セクタ及び長さを識別してよい。ボリュームＩＤは、ボリューム−媒体間マッピングテーブルを用いて媒体ＩＤに対してマッピングしてよい。セクタは媒体内に記憶されたデータの論理ブロックであってよい。セクタは異なる媒体において異なるサイズを有してよい。アドレス翻訳テーブルは媒体を、セクタサイズのユニットとしてマッピングしてよい。一実施形態では、アドレス翻訳テーブルにアクセスするためのキー値は、媒体ＩＤ及び受信したセクタ番号の組み合わせであってよい。キーは、データのある行を別の行と区別するマッピングテーブル内のエンティティである。他の実施形態では、他のタイプのアドレス翻訳テーブルを利用してよい。
【００２３】
一実施形態では、アドレス翻訳テーブルは、媒体を物理ポインタ値に対してマッピングしてよい。実施形態に応じて、物理ポインタ値は、ストレージデバイスがデバイス内の物理位置に対してマッピングする物理アドレス又は論理アドレスであってよい。一実施形態では、アドレス翻訳テーブルにアクセスするためにインデックスを利用してよい。このインデックスは、アドレス翻訳テーブル内のマッピングの位置を識別してよい。媒体ＩＤ及びセクタ番号から生成されたキー値を用いてインデックスを問い合わせてよく、また、キー値に適合するか又はそれ以外の様式で対応する１つ又は複数のエントリについてインデックスを検索してよい。次に適合エントリからの情報を用いて、受信した読み出し又は書き込み要求の標的であるストレージ位置を識別するマッピングを配置及び取得してよい。一実施形態では、インデックス内でのヒットにより、ストレージシステムのストレージデバイス内のページを識別する、対応する仮想ページＩＤが提供され、ページはキー値と、対応する物理ポインタ値との両方を記憶する。次にキー値を用いてこのページを検索して、物理ポインタ値を見つけることができる。
【００２４】
重複排除テーブルは、微粒度レベルでデータを重複排除するために使用される情報を含んでよい。重複排除テーブルに記憶された情報は、所定のデータ成分に関して計算された１つ又は複数のハッシュ値と、上記所定のデータ成分を保持するストレージデバイス１３５Ａ〜Ｎのうちの１つ内の物理位置に対する物理ポインタとの間のマッピングを含んでよい。更に重複排除テーブルには、上記所定のデータ成分の長さと、対応するエントリに関するステータス情報とを記憶してよい。なお、いくつかの実施形態では、物理ポインタ値と対応する物理ストレージ位置との間には１つ又は複数のレベルの間接参照が存在してよい。従ってこれらの実施形態では、物理ポインタを用いて、ストレージデバイス１３５Ａ〜Ｎのうちの所定のストレージデバイス内の別のマッピングテーブルにアクセスできる。
【００２５】
ストレージコントローラ１１０は、ユーザがボリュームを誤って削除してしまったと決定した場合に、削除されたボリュームを復元できるよう構成してよい。一実施形態では、ストレージコントローラ１１０は、ボリューム−媒体間マッピングテーブル内の、あるボリュームに対応するエントリを削除することによって、そのボリュームを削除してよい。これはボリュームとそのアンカー媒体との間のリンクを除去することになる。またストレージコントローラは、削除されたボリュームとそのアンカー媒体との間の過去のマッピングのインジケータを記憶してよい。このマッピングは実施形態に応じて、ログ、テーブル又は別の位置に記憶してよい。次に後の時点において、ユーザが削除されたボリュームの復元を要求すると、ストレージコントローラは上記マッピングを取得して、これを用いて削除されたボリュームとそのアンカー媒体との間のリンクを再生成してよい。このリンクが再生成されると、これによって削除されたボリュームが過去の状態に効果的に復元される。
【００２６】
なお代替実施形態では、クライアントコンピュータ、ストレージコントローラ、ネットワーク、ストレージデバイス群、データストレージデバイスの個数及びタイプは、図１に示したものに限定されない。様々な時点において、１つ又は複数のクライアントがオフラインで動作できる。更に動作中、ユーザがシステム１００に対して接続、接続解除、再接続を行うのに従って、個々のクライアントコンピュータ接続タイプを変更してよい。更に本明細書に記載のシステム及び方法は、直接接続型ストレージシステム又はネットワーク接続型ストレージシステムに適用してよく、また本明細書に記載の方法の１つ又は複数の態様を実行するよう構成されたホストオペレーティングシステムを含んでよい。多数のこのような代替例が可能であり、考察の対象となる。
【００２７】
ネットワーク１２０は：無線接続；直接ローカルエリアネットワーク（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ：ＬＡＮ）接続；インターネット、ルータ、ストレージエリアネットワーク、イーサネット（登録商標）等の広域ネットワーク（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ：ＷＡＮ）接続を含む多様な技術を利用してよい。ネットワーク１２０は、無線式であってもよい１つ又は複数のＬＡＮを備えてよい。ネットワーク１２０は更に、リモートダイレクトメモリアクセス（ｒｅｍｏｔｅ  ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ：ＲＤＭＡ）ハードウェア及び／若しくはソフトウェア、伝送制御プロトコル／インターネット・プロトコル（ｔｒａｎｓｍｉｓｓｉｏｎ  ｃｏｎｔｒｏｌ  ｐｒｏｔｏｃｏｌ／ｉｎｔｅｒｎｅｔ  ｐｒｏｔｏｃｏｌ：ＴＣＰ／ＩＰ）ハードウェア及び／若しくはソフトウェア、ルータ、リピータ、スイッチ並びに／又はグリッド並びに／又はその他のものを含んでよい。ファイバチャネル、ファイバチャネルオーバイーサネット（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  ｏｖｅｒ  Ｅｔｈｅｒｎｅｔ：ＦＣｏＥ）、ｉＳＣＳＩ等のプロトコルをネットワーク１２０において使用してよい。ネットワーク１２０は、伝送制御プロトコル（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ：ＴＣＰ）及びインターネット・プロトコル（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ：ＩＰ）、即ちＴＣＰ／ＩＰ等の、インターネット用に使用される一連の通信プロトコルとインタフェース接続してよい。
【００２８】
クライアントコンピュータ１１５、１２５は、デスクトップパーソナルコンピュータ（ｐｅｒｓｏｎａｌ  ｃｏｍｐｕｔｅｒ：ＰＣ）、サーバ、サーバファーム、ワークステーション、ラップトップ、ハンドヘルドコンピュータ、サーバ、パーソナルデジタルアシスタント（ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ：ＰＤＡ）、スマートフォン等の、いずれの個数の据置型又は移動体コンピュータの代表例である。一般にクライアントコンピュータシステム１１５、１２５は、１つ又は複数のプロセッサコアを備える１つ又は複数のプロセッサを含む。各プロセッサコアは、事前に定義された汎用命令セットに従って命令を実行するための回路構成を含む。例えばｘ８６命令セットアーキテクチャを選択してよい。あるいはＡＲＭ（登録商標）、Ａｌｐｈａ（登録商標）、ＰｏｗｅｒＰＣ（登録商標）、ＳＰＡＲＣ（登録商標）又は他のいずれの汎用命令セットアーキテクチャを選択してよい。プロセッサコアは、データ及びコンピュータプログラム命令のためのキャッシュメモリサブシステムにアクセスしてよい。上記キャッシュサブシステムは、ランダムアクセスメモリ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ：ＲＡＭ）及びストレージデバイスを備えるメモリ階層に接続してよい。
【００２９】
ここで図２を参照すると、媒体の有向非巡回グラフ（ＤＡＧ）２００を示すブロック図が示されている。また図２は、各ボリュームに関して、ストレージシステムによって使用されている間にボリュームがどの媒体にマッピングされるかを示す、ボリューム−媒体間マッピングテーブル２０５も示す。ボリュームはグラフ２００への考えられるポインタであり得る。
【００３０】
本明細書で使用される用語「媒体（ｍｅｄｉｕｍ）」は、データの論理グループ化として定義される。媒体は、データの論理グループ化を識別するための対応する識別子を有してよい。各媒体はまた、コンテンツ位置、重複排除エントリ及びその他の情報に対する論理ブロック番号のマッピングを含むか、又はこれに関連してよい。一実施形態では、媒体の識別子をストレージコントローラが使用してよいが、媒体の識別子はユーザ管理下でなくてよい。ユーザ（又はクライアント）は、ボリュームＩＤに付随するデータ要求を送信して、この要求がどのデータを標的とするかを特定してよく、ストレージコントローラはボリュームＩＤを媒体ＩＤに対してマッピングして、上記要求を処理する際に媒体ＩＤを使用してよい。
【００３１】
用語「媒体」を用語「ストレージ媒体（ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）」又は「コンピュータ可読ストレージ媒体（ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）」と混同してはならない。ストレージ媒体は、データを記憶するために利用される実際の物理デバイス（例えばＳＳＤ、ＨＤＤ）として定義される。コンピュータ可読ストレージ媒体（又は非一時的コンピュータ可読ストレージ媒体）は、プロセッサ又はその他のハードウェアデバイスが実行できるプログラム命令を記憶するよう構成された物理ストレージ媒体として定義される。本明細書に記載の方法及び／又はメカニズムを実装する様々なタイプのプログラム命令を、コンピュータ可読媒体上で搬送又は記憶してよい。プログラム命令を記憶するよう構成された多数のタイプの媒体利用手可能であり、これにはハードディスク、フロッピー(登録商標）ディスク、ＣＤ−ＲＯＭ、ＤＶＤ、フラッシュメモリ、プログラマブルＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ：ＰＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、他の様々な形態の揮発性又は不揮発性ストレージが含まれる。
【００３２】
また、用語「ボリューム−媒体間マッピングテーブル（ｖｏｌｕｍｅ  ｔｏ  ｍｅｄｉｕｍ  ｍａｐｐｉｎｇ  ｔａｂｌｅ）」は、単なる単一のテーブルではなく複数のテーブルを指してよいことにも留意されたい。同様に用語「媒体マッピングテーブル（ｍｅｄｉｕｍ  ｍａｐｐｉｎｇ  ｔａｂｌｅ）」も、単なる単一のテーブルではなく複数のテーブルを指してよい。更に、ボリューム−媒体間マッピングテーブル２０５は、ボリューム−媒体間マッピングテーブルの一例にすぎないことにも留意されたい。他のボリューム−媒体間マッピングテーブルは、異なる個数のボリュームのための異なる個数のエントリを有してよい。
【００３３】
各媒体を、３つの結合されたボックスとしてグラフ２００に示し、左のボックスは媒体ＩＤを示し、中央のボックスは下層の媒体を示し、右のボックスは媒体のステータス（ＲＯ：読み出し専用（ｒｅａｄ−ｏｎｌｙ））又は（ＲＷ：読み書き（ｒｅａｄ−ｗｒｉｔｅ））を示す。読み書き型媒体をアクティブ媒体と呼んでよく、読み出し専用媒体は既に生成されたスナップショットを表してよい。グラフ２００内では、媒体はその下層の媒体を指す。例えば媒体２０は媒体１２を指し、これによって媒体１２が媒体２０の下層の媒体であることを表す。また媒体１２は媒体１０を指し、媒体１０は媒体５を指し、媒体５は媒体１を指す。いくつかの媒体は、２つ以上の高次の媒体に対する下層の媒体となる。例えば３つの別個の媒体（１２、１７、１１）は媒体１０を指し、２つの別個の媒体（１８、１０）は媒体５を指し、２つの別個の媒体（６、５）は媒体１を指す。少なくとも１つの高次媒体に対する下層媒体となる媒体はそれぞれ、読み出し専用のステータスを有する。
【００３４】
グラフ２００の左下の媒体のセットは、線形セットの例である。グラフ２００に示すように、まず媒体３が生成され、続いてスナップショットが実行され、その結果媒体３は安定する（即ちこの時点以降、媒体３内の所定のブロックの探索の結果が常に同一の値を返すことになる）。媒体３を下層の媒体として用いて、媒体７が生成される。媒体３が安定した後に書かれるいずれのブロックは、媒体７内にあるものとして標識される。媒体７に対する探索は、媒体７内に値が見つかる場合は媒体７から値を返すが、媒体７内にブロックが見つからない場合は媒体３を探索することになる。その後媒体７のスナップショットを実行し、媒体７は安定となり、媒体１４が生成される。媒体１４内のブロックの探索により、媒体７、続いて媒体３を検査して、標的論理ブロックを見つける。最後に媒体１４のスナップショットを実行し、媒体１４は安定となり、媒体１５が生成される。グラフ２００のこの時点において媒体１４は、媒体１５へと向かうボリューム１０２への書き込みによって安定となる。
【００３５】
ボリューム−媒体間マッピングテーブル２０５は、ユーザ管理下のボリュームを媒体に対してマッピングする。各ボリュームは、アンカー媒体としても知られる単一の媒体に対してマッピングしてよい。このアンカー媒体は、他の全ての媒体と同様に、それ固有の探索を処理してよい。複数のボリュームが依存する媒体（例えば媒体１０）は、それ自体の複数のブロックを、これらブロックが依存するボリュームとは別個に追跡する。各媒体をブロックの範囲に分解してもよく、各範囲を媒体のＤＡＧ２００内で別個に処理してよい。
【００３６】
ここで図３を参照すると、媒体マッピングテーブル３００の一実施形態を示す。媒体マッピングテーブル３００のいずれの部分又は全体は、ストレージコントローラ１１０及び／又はストレージデバイス１３５Ａ〜Ｎのうちの１つ若しくは複数に記憶してよい。ボリューム識別子（ＩＤ）を使用してボリューム−媒体間マッピングテーブル２０５にアクセスし、このボリュームＩＤに対応する媒体ＩＤを決定してよい。次にこの媒体ＩＤを使用して媒体マッピングテーブル３００にアクセスしてよい。なおテーブル３００は媒体マッピングテーブルの単なる一例であり、他の実施形態では、異なる個数のエントリを有する異なる媒体マッピングテーブルを利用してよい。更に他の実施形態では、媒体マッピングテーブルは他の属性を含んでよく、図３に示したものとは異なる方法で整理されてよい。また、効率的な検索を提供するために、いずれの適切なデータ構造（例えばＢツリー、バイナリツリー、ハッシュテーブル等）を用いて、マッピングテーブル情報を記憶してよいことに留意されたい。これらのデータ構造全てが考察の対象となる。
【００３７】
テーブル３００の左列に示すように、媒体ＩＤによって各媒体を識別してよい。テーブル３００の各エントリに範囲属性も含んでよく、この範囲はデータブロックに関するものであってよい。データのブロックのサイズ（例えば４ＫＢ、８ＫＢ）は、実施形態に応じて変化し得る。媒体は複数の範囲に分解してよく、媒体の各範囲を、固有の属性及びマッピングを有する独立した媒体であるかのように処理してよい。例えば媒体ＩＤ２は２つの別個の範囲を有する。媒体ＩＤ２の範囲０〜９９は、テーブル３００内で媒体ＩＤ２の範囲１００〜９９９のためのエントリから離間したエントリを有する。
【００３８】
媒体ＩＤ２のこれらの範囲を共に下層媒体ＩＤ１に対してマッピングするが、同一のソース媒体の別個の範囲を異なる下層媒体に対してマッピングすることもできる。例えば媒体ＩＤ３５の別個の範囲を別個の下層媒体に対してマッピングする。例えば媒体ＩＤ３５の範囲０〜２９９を、オフセット４００で下層媒体ＩＤ１８に対してマッピングする。これは、媒体ＩＤ３５のブロック０〜２９９を媒体ＩＤ１８のブロック４００〜６９９に対してマッピングすることを示す。更に媒体ＩＤ３５の範囲３００〜４９９を、〜３００のオフセットで下層媒体ＩＤ３３に対してマッピングし、媒体ＩＤ３５の範囲５００〜８９９を、〜４００のオフセットで下層媒体ＩＤ５に対してマッピングする。これらのエントリは、媒体ＩＤ３５のブロック３００〜４９９が媒体ＩＤ３３のブロック０〜１９９に対してマッピングされ、媒体ＩＤ３５のブロック５００〜８９９が媒体ＩＤ５のブロック１００〜４９９に対してマッピングされることを示す。なお他の実施形態では、媒体は４つ以上の範囲に分解してよい。
【００３９】
テーブル３００の「状態」列は、ブロックのための探索をより効率的に実行できるようにする情報を記録する。状態「Ｑ」は、媒体が静止状態（ｑｕｉｅｓｃｅｎｔ）であることを示し、「Ｒ」は媒体が登録状態（ｒｅｇｉｓｔｅｒｅｄ）であることを示し、「Ｕ」は媒体が非マスク状態（ｕｎｍａｓｋｅｄ）であることを示す。静止状態では、テーブル３００内で特定された１つ又は２つの媒体だけに対して探索を実行する。登録状態では、探索を再帰的に実行する。非マスク状態は、探索を基底媒体において実行するべきか、又は探索を下層媒体においてのみ実行するべきかを決定する。いずれのエントリに関してテーブル３００には示されていないが、別の状態「Ｘ」を用いて、ソース媒体が非マッピング状態であることを特定してよい。この非マッピング状態は、ソース媒体が到達可能なデータを全く含まず、破棄できることを示す。この非マッピング状態はソース媒体の範囲に適用してよい。媒体全体が非マッピング状態である場合、媒体ＩＤをシーケンス無効化テーブルに入力して最終的に破棄してよい。
【００４０】
一実施形態では、媒体が生成されると、この媒体が下層媒体を有する場合はこの媒体は登録状態となり、又はこの媒体が既存の状態を有さない新規のボリュームである場合はこの媒体は静止状態となる。媒体に書き込みが行われると、この媒体の一部は非マスク状態となり得、媒体自体及び下層の媒体内にマッピングが存在する。これは、単一の範囲を複数の範囲のエントリに分割することによって実行でき、上記複数の範囲のエントリのうちのいくつかは、初期のマスク状態に保持され、その他は非マスク状態として記録される。
【００４１】
更にテーブル３００内の各エントリは、基底属性を含んでよく、これは媒体の基底を示し、これはこの場合ソース媒体自体を指す。各エントリはまた、オフセットフィールドを含んでよく、これは下層媒体に対してソース媒体にマッピングする際にブロックのアドレスに適用するべきオフセットを特定する。これにより媒体は、下層媒体の開始ブロックから下層媒体の頂部に構成されるだけではなく、下層媒体内の他の位置に対してマッピングできる。テーブル３００に示すように、媒体８は５００のオフセットを有し、これは媒体８のブロック０を下層媒体（媒体１）のブロック５００に対してマッピングすることを示す。従って媒体８による媒体１の探索は、５００のオフセットを、その要求の初期ブロック番号に付加することになる。「オフセット」の行により、媒体を複数の媒体で構成できる。例えば一実施形態では、媒体は「ゴールドマスター（ｇｏｌｄ  ｍａｓｔｅｒ）」オペレーティングシステム画像及びＶＭ（仮想マシン）毎のスクラッチスペースからなる。その他の柔軟なマッピングも可能であり、考察の対象となる。
【００４２】
各エントリは下層媒体属性も含み、これはソース媒体の下層媒体を示す。（媒体１と同様に）下層媒体がソース媒体を指す場合、これはソース媒体が下層媒体を有さず、全ての探索はソース媒体のみにおいて実行されることを示す。各エントリは安定属性も含み、「Ｙ」（ｙｅｓ：はい）は媒体が安定であること（又は読み取り専用であること）を示し、「Ｎ」（ｎｏ：いいえ）は媒体が読み書き可能であることを示す。安定である媒体では、媒体内の所定のブロックに対応するデータは変化しないが、このデータを生成するマッピングは変化し得る。例えば媒体２は安定であるが、媒体２のブロック５０は媒体２又は媒体１に記録してよく、媒体２及び媒体１はこの順に論理的に探索されてよいが、この探索は必要に応じて並列に実行してよい。一実施形態では、媒体がこれ自体以外のいずれの媒体によって下層媒体として使用される場合、この媒体は安定となる。
【００４３】
図４に移ると、ボリュームを削除及び復元する動作の一実施形態が示されている。ユーザは所定のボリュームを削除したい場合があり、この所定のボリュームを削除するための要求は、ストレージコントローラへと搬送され得る。削除されるボリュームは、図４においてボリューム４１０で表されている。この削除動作を実行する前に、ボリューム−媒体間マッピングテーブル４２５Ａ内にはボリューム４１０に対応するエントリが存在し得、このエントリは、媒体４１５がボリューム４１０のアンカー媒体であることを記録していてよい。この議論の目的のために、媒体４１５は下層媒体を有すると考えられ、この下層媒体は媒体４２０として示されている。媒体４２０は状況に応じて下層媒体を有していても有しなくてもよい。なお、場合によっては媒体４１５は下層媒体を有しなくてもよい。
【００４４】
ストレージコントローラは、削除済みボリュームテーブル４３０内にアンカー媒体４１５に対するボリューム４１０の過去のマッピングを記録して、ボリューム−媒体間マッピングテーブル４２５Ｂ内のボリューム４１０に対応するエントリを削除することにより、ボリューム４１０の削除動作を実行してよい。ボリューム及びアンカー媒体の番号は、ボリューム−媒体マッピングテーブル４２５Ｂ内で消去され、これはこのエントリがテーブル４２５Ｂから削除されたことを表す。またこのブロック図は、ボリューム４１０が削除されていること、及びボリューム４１０と媒体４１５との間のリンクがもはや存在しないことを表すために、ボリューム４１０を消去されたものとして示している。
【００４５】
ボリューム４１０に対応するエントリがボリューム−媒体間マッピングテーブル４２５Ｂから削除されると、これによりボリューム４１０はストレージシステムから効果的に削除される。ボリューム４１０が削除される結果として、そのアンカー媒体（媒体４１５）は安定となる。削除ボリュームテーブル４３０は、削除されたボリューム及び削除されたボリュームとアンカー媒体との過去の接続に関する情報を記憶するために利用できる、あるタイプのストレージ構造である。他の実施形態では、この情報を記憶するその他のタイプの構造及びその他の方法を利用してよい。この情報を記憶することにより、後の時点において、削除されたボリュームの復元動作を実行できる。更に、媒体４１５、媒体４２０及び他のいずれの下層媒体に対応する媒体マッピングテーブル（図示せず）中のエントリを、削除動作後に保持してよい。ストレージコントローラは、削除動作が実行された後、ある期間に亘って媒体４１５を保持してよい。場合によっては、他のボリュームが媒体４１５を利用する場合又は他の媒体が下層媒体として媒体４１５を利用する場合、媒体４１５は無期限に保持されることになる。
【００４６】
ボリューム４１０の削除動作実行後のいずれの時点において、ユーザはボリューム４１０の復元動作を要求してよい。ストレージコントローラは、削除ボリュームテーブル４３０に記憶された情報に基づいて、ボリューム４１０を復元してよい。図４の下部の点線のボックスは、復元動作実行後のボリューム−媒体マッピングテーブル４２５Ｃのステータスを示す。復元動作により、ボリューム４１０は媒体４１５に再接続される。換言すると、復元動作はボリューム４１０を、削除動作実行前の状態に復元している。媒体４１５のステータスもこの時点において安定からアクティブへと更新され得る。
【００４７】
一般にストレージコントローラは、所定のボリュームの削除動作の後、最短の期間だけ、削除ボリューム連携情報を保持してよい。あるいはストレージコントローラは、他のデータの記憶のために空間が必要になるまで、削除ボリューム連携情報を保持してよい。ストレージコントローラがこの特定の期間だけ待機したら、上記所定のボリュームに対応する連携情報を削除してよい。この時点において、ストレージコントローラはこの削除されたボリュームの所定のアンカー媒体を即座に再利用してよく、又はストレージコントローラは、上記所定のアンカー媒体を再利用するのに更に便利な後の時点まで待機してよい。場合によっては、ストレージコントローラは、他のデータの記憶のために空間が必要になるまで、上記所定のアンカー媒体の再利用を待機してよい。この所定のアンカー媒体のいずれの下層媒体もまた、他のボリューム又は媒体によって利用されていなければ再利用してよい。
【００４８】
ここで図５を参照すると、削除されたボリュームを復元するための代替動作の一実施形態が示されている。この実施形態では、過去に削除したボリューム４１０を復元するための動作は、ボリューム４１０を復元するための要求を受信した後、新規の媒体（媒体５０５）を生成することを伴う。そして媒体５０５に関して、媒体マッピングテーブル５１５内に新規のエントリを生成してよく、媒体４１５が媒体５０５の下層にあることのインジケータをこの新規のエントリに記憶してよい。媒体４１５に関する既存のエントリも媒体マッピングテーブル５１５に示されており、この既存のエントリは、媒体４２０を媒体４１５の下層媒体として示している。
【００４９】
また、ボリューム−媒体間マッピングテーブル５２５に新規のエントリを生成してよく、媒体５０５を媒体４１０のアンカー媒体としてこのエントリに記録してよい。図５からわかるように、復元動作の後、ボリューム４１０は媒体５０５を指しており、媒体５０５は媒体４１５を指している。媒体５０５を生成して、媒体５０５をボリューム４１０とその過去のアンカー媒体（媒体４１５）との間に配置することにより、ストレージコントローラは、ボリューム４１０の復元後にボリューム４１０に発生するいずれの変更を、ボリューム４１０が削除される前に発生した変更と確実に区別できる。
【００５０】
ここで図６を参照すると、ボリューム動作を取り消すための方法６００の一実施形態が示されている。上述のシステム１００に統合されている構成部品（例えばストレージコントローラ１１０）は一般に、方法６００に従って動作し得る。更にこの実施形態のステップを順番に示す。しかしながら別の実施形態では、いくつかのステップは図示したものと異なる順序で実行してよく、いくつかのステップは同時に実行してよく、いくつかのステップは他のステップと組み合わせてよく、またいくつかのステップが存在しなくてもよい。
【００５１】
ストレージコントローラは、第１のボリュームを削除するための要求を受信してよい（ブロック６０５）。この要求の受信に応答して、ストレージコントローラは第１のボリュームのアンカー媒体を決定してよい（ブロック６１０）。ストレージコントローラは、ボリューム−媒体間マッピングテーブル内の、第１のボリュームに対応するエントリから、アンカー媒体を決定してよい。この議論の目的のために、第１のボリュームのアンカー媒体を「第１の媒体」と呼んでよい。次にストレージコントローラは、第１のボリュームと第１の媒体との間のマッピングのインジケータを記憶してよい（ブロック６１５）。一実施形態では、このマッピングを削除ボリュームテーブルに記憶してよい。他の実施形態では、このマッピングを他のいずれの適切な構造（例えばログファイル）に記憶してよい。一実施形態では、このマッピングは、第１のボリュームが削除された後一定の期間だけ保持してよい。ストレージコントローラは、第１のボリュームの復元をユーザが望む場合に第１のボリュームを復元できるよう、適切な期間だけこのマッピングを保持するよう構成される。この期間が経過すると、マッピングを削除してよい。別の実施形態では、マッピングを無期限に保持してよい。なお、マッピングを削除すると、ストレージコントローラは第１のボリュームをその過去の状態に復元できなくなる。
【００５２】
次にストレージコントローラは、第１のボリュームが有効であることのいずれのインジケータを除去してよい（ブロック６２０）。第１のボリュームが有効であることのいずれのインジケータを除去することによって、ストレージコントローラは第１のボリュームを、ユーザにとって利用不可能とする。一実施形態では、ストレージコントローラは、ボリューム−媒体間マッピングテーブル内の、第１のボリュームに対応するエントリを削除することによって、第１のボリュームが有効であることのいずれのインジケータを除去してよい。他の実施形態では、この情報をテーブルに記憶する以外の、ボリュームと媒体との間のマッピングを維持するための他の技術を用いてよい。これらの実施形態では、ストレージコントローラは第１のボリュームのステータスをいずれの適切な様式で更新してよい。また、一定の期間が経過した後、ストレージコントローラは第１の媒体を、再利用の準備ができた状態としてマークしてよく、続いて第１の媒体を、次回ゴミ集め動作が実施される際に削除してよい。場合によっては、ストレージコントローラは、削除されたボリュームより前に、他のタイプの空き空間の再利用を優先してよい。例えばストレージコントローラは、削除されたボリュームから空間を再利用する前に、（上書きによって）到達できない空間を要求するよう試みてよい。なお、第１の媒体が削除されると、ストレージコントローラは第１のボリュームをその過去の状態に復元できなくなる。しかしながらストレージコントローラは、第１のボリュームを過去の状態に復元するための復元動作をユーザが要求した場合にこの復元動作を可能とするよう、相当な期間に亘って第１の媒体を保持してよい。
【００５３】
そしてブロック６２０の後、後の時点において、ストレージコントローラは第１のボリュームを復元するための要求を受信してよい（ブロック６２５）。例えばユーザは、第１のボリュームを誤って削除してしまったことに気付く場合があり、従ってこの第１のボリュームをその過去の状態に復元したい場合がある。第１のボリュームを復元するためのこの要求は、第１の媒体に対する第１のボリュームのマッピングが削除される前、かつ第１の媒体が削除される前に、ストレージコントローラが受信すると想定され得る。第１のボリュームを復元するための要求の受信に応答して、ストレージコントローラは、削除ボリュームテーブル内の、第１のボリュームに対応するマッピングを取得してよい（ブロック６３０）。次にこの取得したマッピングを用いて、ストレージコントローラは、ボリューム−媒体間マッピングテーブル内に第１のボリュームに関するエントリを生成してよく、このエントリは第１の媒体を、第１のボリュームのアンカー媒体として記録してよい（ブロック６３５）。ボリューム−媒体間マッピングテーブル内に第１のボリュームに関する上記エントリを生成することによって、ストレージコントローラは第１のボリュームをその過去の状態に復元する。ブロック６３５の後、方法６００を終了してよい。
【００５４】
ここで図７を参照すると、削除されたボリュームを復元するための代替方法７００の一実施形態が示されている。上述のシステム１００に統合されている構成部品（例えばストレージコントローラ１１０）は一般に、方法７００に従って動作し得る。更にこの実施形態のステップを順番に示す。しかしながら別の実施形態では、いくつかのステップは図示したものと異なる順序で実行してよく、いくつかのステップは同時に実行してよく、いくつかのステップは他のステップと組み合わせてよく、またいくつかのステップが存在しなくてもよい。
【００５５】
ストレージコントローラは、過去に削除された第１のボリュームを復元するための要求を受信してよい（ブロック７０５）。この要求の受信に応答して、ストレージコントローラは、削除ボリュームテーブル内の、第１のボリュームに対応するマッピングを取得してよい（ブロック７１０）。取得したマッピングは、第１のボリュームが削除される前の第１のボリュームのアンカー媒体の識別を記憶してよく、この議論の目的のために、このアンカー媒体を「第１の媒体」と呼んでよい。またこの要求の受信に応答して、ストレージコントローラは新規の媒体を生成してよい（ブロック７１５）。この議論の目的のために、この新規の媒体を「第２の媒体」と呼んでよい。次にストレージコントローラは、第２の媒体に関して媒体マッピングテーブル内に新規のエントリを生成してよい（ブロック７２０）。ストレージコントローラは、媒体マッピングテーブル内のこの新規のエントリにおいて第１の媒体が第２の媒体の下層にあることのインジケータを記憶してよい（ブロック７２５）。
【００５６】
またストレージコントローラは、第１のボリュームに関してボリューム−媒体間マッピングテーブル内に新規のエントリを生成してよい（ブロック７３０）。ストレージコントローラは、ボリューム−媒体間マッピングテーブル内のこの新規のエントリにおいて第２の媒体を第１のボリュームのアンカー媒体として記録してよい（ブロック７３５）。方法７００は、過去に削除されたボリュームを復元するための代替実装形態である。この代替実装形態では、新規の媒体を生成し、復元されるボリュームがこの新規のボリュームを指すようにすることによって、ストレージコントローラは、復元されたボリュームに対する変更を、ボリュームが削除される前に発生したいずれの変化と確実に区別できる。
【００５７】
なお上述の実施形態はソフトウェアを備えてよい。このような実施形態では、本方法及び／又は機構を実装するプログラム命令を、コンピュータ可読媒体上で搬送又は記憶してよい。プログラム命令を記憶するよう構成された多数のタイプの媒体が利用可能であり、これにはハードディスク、フロッピーディスク、ＣＤ−ＲＯＭ、ＤＶＤ、フラッシュメモリ、プログラマブルＲＯＭ（ＰＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、他の様々な形態の揮発性又は不揮発性ストレージが含まれる。
【００５８】
様々な実施形態において、本明細書に記載の方法及び機構の１つ又は複数の部分は、クラウドコンピューティング環境の一部を形成してよい。このような実施形態では、１つ又は複数の様々なモデルに従って、必要に応じてインターネットを介してリソースを提供してよい。このようなモデルは、インフラストラクチャ・アズ・ア・サービス（Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ：ＩａａＳ）、プラットフォーム・アズ・ア・サービス（Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ：ＰａａＳ）、ソフトウェア・アズ・ア・サービス（Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ：ＳａａＳ）を含んでよい。ＩａａＳでは、コンピュータインフラストラクチャを必要に応じて提供する。このような場合、一般にサービスプロバイダがコンピュータ設備を所有し、動作させる。ＰａａＳモデルでは、サービスプロバイダが、開発者がソフトウェアによる解決法を開発するために使用するソフトウェアツール及びその下層設備を必要に応じて提供し、そのホストとなってよい。ＳａａＳは典型的には、サービスに応じてソフトウェアを認可するサービスプロバイダを含む。このサービスプロバイダはソフトウェアのホストとなってよく、又はソフトウェアを所定の期間だけカスタマに対して配備してよい。上述のモデルの多数の組み合わせが可能であり、考察の対象となる。
【００５９】
以上の実施形態についてかなり詳細に説明したが、上述の開示を完全に理解すれば、当業者には多数の変形例及び修正例が明らかとなるであろう。以下の請求項は、これらの変形例及び修正例の全てを包含するものと解釈されることを意図したものである。
【図１】
2019096355.tif 000003
【図２】
2019096355.tif 000004
【図３】
2019096355.tif 000005
【図４】
2019096355.tif 000006
【図５】
2019096355.tif 000007
【図６】
2019096355.tif 000008
【図７】
2019096355.tif 000009
【手続補正書】
【提出日】平成31年4月1日(2019.4.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ストレージシステムにおいて使用するための方法であって、
前記ストレージシステムの論理ストレージを表す論理ボリュームを削除するための要求を受信することと、
前記論理ボリュームを削除するための前記要求の受信に応答して、
前記論理ボリュームが、前記ストレージシステムに記憶されるデータに現在マッピングしている特定の論理データ表現にマッピングされていることを決定することと、
前記論理ボリュームが過去に前記論理ボリュームの前記特定の論理データ表現にマッピングされていたこと、を示すことと、
前記論理ボリュームが有効であることのいずれのインジケータを除去すること、
を含む方法。
【請求項２】
請求項１に記載の方法において、
論理ボリュームと、論理ボリュームの論理データ表現との間の関係を追跡するためにボリューム−論理データ表現マッピングテーブルを保守すること、を更に含み、
前記論理ボリュームが有効であることのいずれのインジケータを除去することは、前記ボリューム−論理データ表現マッピングテーブル内において、前記論理ボリュームに対応するエントリを除去することを含む、
方法。
【請求項３】
請求項１に記載の方法において、
前記論理ボリュームを削除するための前記要求の受信に応答して、前記特定の論理データ表現の除去を第１の期間だけ遅延させること、
を更に含む方法。
【請求項４】
請求項１に記載の方法において、
前記論理ボリュームを復元するための要求を受信すること、を更に含み、
前記論理ボリュームを削除するための前記要求の受信に応答して、
前記論理ボリュームが過去に前記特定の論理データ表現にマッピングされていたことを決定することと、
前記論理ボリュームが過去に前記特定の論理データ表現にマッピングされていたことの決定に応答して、前記論理ボリュームと前記ストレージシステムに記憶される前記データとの接続を、前記論理ボリュームを前記特定の論理データ表現に論理的に再マッピングすることによって復元すること、
を更に含む方法。
【請求項５】
請求項４に記載の方法において、
前記論理ボリュームを前記特定の論理データ表現に論理的に再マッピングすることは、
ボリューム−論理データ表現マッピングテーブル内に新規のエントリを生成することを含み、この新規のエントリは、前記論理ボリュームが前記特定のデータ表現にマッピングされていることを示すインジケーションを含んでいる、
方法。
【請求項６】
請求項５に記載の方法において、
前記論理ボリュームを前記特定の論理データ表現に論理的に再マッピングすることは、
前記論理ボリュームの第２の論理データ表現を生成することと、
前記第２の論理データ表現が前記論理データ表現にマッピングされていることのインジケータを記憶することと、
前記ボリューム−論理データ表現マッピングテーブル内に新規のエントリを生成することを含み、この新規のエントリは、前記論理ボリュームが前記特定の論理データ表現にマッピングされていることを示す第２のインジケーションを含んでいる、
方法。
【請求項７】
請求項１に記載の方法において、
ボリューム−論理データ表現マッピングテーブル内で、前記論理ボリュームが過去に前記特定の論理データ表現にマッピングされていたこと、を示すことを含み、この特定の論理データ表現は、前記データが前記ストレージシステムに記憶された時点を引用する、
方法。
【請求項８】
１つ又は複数のストレージデバイス及び前記１つ又は複数のストレージデバイスに接続されたストレージコントローラを備える、コンピュータシステムであって、
前記ストレージコントローラは、
前記コンピュータシステムの論理ストレージを表す論理ボリュームを削除するための要求を受信し、
前記論理ボリュームを削除するための前記要求の受信に応答して、
前記論理ボリュームが、前記コンピュータシステムに記憶されるデータに現在マッピングしている特定の論理データ表現にマッピングされていることを決定し、
前記論理ボリュームが過去に前記論理ボリュームの前記特定の論理データ表現にマッピングされていたこと、を示し、
前記論理ボリュームが有効であることのいずれのインジケータを除去する、
ように構成される、コンピュータシステム。
【請求項９】
請求項８に記載のコンピュータシステムにおいて、
前記ストレージコントローラは、更に、
論理ボリュームと、論理ボリュームの論理データ表現との間の関係を追跡するためにボリューム−論理データ表現マッピングテーブルを保守するように構成され、
前記論理ボリュームが有効であることのいずれのインジケータを除去することは、前記ボリューム−論理データ表現マッピングテーブル内において、前記論理ボリュームに対応するエントリを除去することを含む、
コンピュータシステム。
【請求項１０】
請求項８に記載のコンピュータシステムにおいて、
前記ストレージコントローラは、更に、前記論理ボリュームを削除するための前記要求の受信に応答して、前記特定の論理データ表現の除去を第１の期間だけ遅延するように構成される、コンピュータシステム。
【請求項１１】
請求項８に記載のコンピュータシステムにおいて、
前記ストレージコントローラは、
更に、前記論理ボリュームを復元するための要求を受信するように構成され、
前記論理ボリュームを削除するための前記要求の受信に応答して、
前記論理ボリュームが過去に前記特定の論理データ表現にマッピングされていたことを決定し、
前記論理ボリュームが過去に前記特定の論理データ表現にマッピングされていたことの決定に応答して、前記論理ボリュームと前記コンピュータシステムに記憶される前記データとの接続を、前記論理ボリュームを前記特定の論理データ表現に論理的に再マッピングすることによって復元するように構成される、
コンピュータシステム。
【請求項１２】
請求項１１に記載のコンピュータシステムにおいて、
前記論理ボリュームを前記特定の論理データ表現に論理的に再マッピングすることは、
ボリューム−論理データ表現マッピングテーブル内に新規のエントリを生成することを含み、この新規のエントリは、前記論理ボリュームが前記特定のデータ表現にマッピングされていることを示すインジケーションを含んでいる、
コンピュータシステム。
【請求項１３】
請求項１２に記載のコンピュータシステムにおいて、
前記論理ボリュームを前記特定の論理データ表現に論理的に再マッピングすることは、
前記論理ボリュームの第２の論理データ表現を生成することと、
前記第２の論理データ表現が前記論理データ表現にマッピングされていることのインジケータを記憶することと、
前記ボリューム−論理データ表現マッピングテーブル内に新規のエントリを生成することを含み、この新規のエントリは、前記論理ボリュームが前記特定の論理データ表現にマッピングされていることを示す第２のインジケーションを含んでいる、
コンピュータシステム。
【請求項１４】
請求項８に記載のコンピュータシステムにおいて、
ボリューム−論理データ表現マッピングテーブル内で、前記論理ボリュームが過去に前記特定の論理データ表現にマッピングされていたこと、を示すことを含み、この特定の論理データ表現は、前記データが前記コンピュータシステムに記憶された時点を引用する、
コンピュータシステム。
【請求項１５】
命令から構成されるコンピュータプログラムであって、前記命令は、コンピュータのプロセッサに、
コンピュータシステムの論理ストレージを表す論理ボリュームを削除するための要求を受信させ、
前記論理ボリュームを削除するための前記要求の受信に応答して、
前記論理ボリュームが、前記コンピュータシステムに記憶されるデータに現在マッピングしている特定の論理データ表現にマッピングされていることを決定させ、
前記論理ボリュームが過去に前記論理ボリュームの前記特定の論理データ表現にマッピングされていたこと、を示させ、
前記論理ボリュームが有効であることのいずれのインジケータを除去させる、
ことを実行可能であるコンピュータプログラム。
【請求項１６】
請求項１５に記載のコンピュータプログラムであって、コンピュータのプロセッサに、論理ボリュームと、論理ボリュームの論理データ表現との間の関係を追跡するためにボリューム−論理データ表現マッピングテーブルを保守させる、ことを実行可能な命令を更に含み、
前記論理ボリュームが有効であることのいずれのインジケータを除去することは、前記ボリューム−論理データ表現マッピングテーブル内において、前記論理ボリュームに対応するエントリを除去することを含む、
コンピュータプログラム。
【請求項１７】
請求項１５に記載のコンピュータプログラムであって、コンピュータのプロセッサに、前記論理ボリュームを削除するための前記要求の受信に応答して、前記特定の論理データ表現の除去を第１の期間だけ遅延させる、ことを実行可能な命令を更に含む、
コンピュータプログラム。
【請求項１８】
請求項１５に記載のコンピュータプログラムであって、コンピュータのプロセッサに、
前記論理ボリュームを復元するための要求を受信させ、
前記論理ボリュームを削除するための前記要求の受信に応答して、
前記論理ボリュームが過去に前記特定の論理データ表現にマッピングされていたことを決定させ、
前記論理ボリュームが過去に前記特定の論理データ表現にマッピングされていたことの決定に応答して、前記論理ボリュームと前記コンピュータシステムに記憶される前記データとの接続を、前記論理ボリュームを前記特定の論理データ表現に論理的に再マッピングすることによって復元させる、
ことを実行可能な命令を更に含む、
コンピュータプログラム。
【請求項１９】
請求項１８に記載のコンピュータプログラムにおいて、
前記論理ボリュームを前記特定の論理データ表現に論理的に再マッピングすることは、
ボリューム−論理データ表現マッピングテーブル内に新規のエントリを生成することを含み、この新規のエントリは、前記論理ボリュームが前記特定のデータ表現にマッピングされていることを示すインジケーションを含んでいる、
コンピュータプログラム。
【請求項２０】
請求項１９に記載のコンピュータプログラムにおいて、
前記論理ボリュームを前記特定の論理データ表現に論理的に再マッピングすることは、
前記論理ボリュームの第２の論理データ表現を生成することと、
前記第２の論理データ表現が前記論理データ表現にマッピングされていることのインジケータを記憶することと、
前記ボリューム−論理データ表現マッピングテーブル内に新規のエントリを生成することを含み、この新規のエントリは、前記論理ボリュームが前記特定の論理データ表現にマッピングされていることを示す第２のインジケーションを含んでいる、
コンピュータプログラム。
【外国語明細書】
2019096355000001.pdf