(58)【調査した分野】(Int.Cl.,DB名)
複製ターゲットが、シンプロビジョニングストレージシステム上の未使用記憶空間を再利用できるようにするためのコンピュータ実行方法であって、前記方法の少なくとも一部が、少なくとも1つのプロセッサを含むコンピューティング装置によって実行され、前記方法が、
複製ターゲットにおいて複製源から複製されたデータを受信することと、
前記複製源から複製された前記データ内の未使用記憶空間を識別することと、
前記複製ターゲット用にシンプロビジョニングストレージを提供するシンプロビジョニングストレージシステムから前記未使用記憶空間を再利用するための再利用要求を生成することと、
前記シンプロビジョニングストレージシステムから前記未使用記憶空間を再利用するために、前記シンプロビジョニングストレージシステムに前記再利用要求を発行することと、
を含む方法。
【発明を実施するための形態】
【0013】
以下は、複製ターゲットが、シンプロビジョニングストレージシステム上の未使用記憶空間を再利用できるようにするための例示的なシステムの詳細を、
図1−3に関連して提供する。対応するコンピュータ実行方法の詳細な説明がまた、
図4に関連して提供される。さらに、本明細書で説明する実施形態の1つまたは複数を実行できる例示的なコンピューティングシステムおよびネットワークアーキテクチャの詳細な説明が、
図5および6にそれぞれ関連して提供される。
【0014】
図1は、複製ターゲットが、シンプロビジョニングストレージシステム上の未使用記憶空間を再利用できるようにするための例示的なシステム100のブロック図である。この図に示すように、例示的なシステム100には、1つまたは複数のタスクを実行するための1つまたは複数のモジュール102を含んでもよい。例えば、以下でより詳細に説明するように、例示的なシステム100には、複製源から複製ターゲットにデータを複製するようにプログラムされた複製モジュール104を含んでもよい。例示的なシステム100にはまた、複製されたデータ内の未使用記憶空間を識別するようにプログラムされた識別モジュール106を含んでもよい。
【0015】
さらに、以下でより詳細に説明するように、例示的なシステム100には、複製ターゲット用に記憶空間を提供するシンプロビジョニングストレージシステムから未使用記憶空間を再利用するようにプログラムされた再利用モジュール108を含んでもよい。別個の要素として示したが、
図1におけるモジュール102の1つまたは複数は、単一のモジュールまたはアプリケーションの一部を表してもよい。
【0016】
ある実施形態において、
図1におけるモジュール102の1つまたは複数は、コンピューティング装置によって実行される場合にコンピューティング装置に1つまたは複数のタスクを実行させ得る1つまたは複数のソフトウェアアプリケーションまたはプログラムを表してもよい。例えば、以下でより詳細に説明するように、モジュール102の1つまたは複数は、
図2に示す装置(例えば、複製源202および/もしくは複製ターゲット222)、
図3に示す装置(例えば、複製源302および/もしくは複製ターゲット322)、
図5におけるコンピューティングシステム510、ならびに/または
図6における例示的なネットワークアーキテクチャ600の一部など、1つまたは複数のコンピューティング装置上に記憶され、かつそこで走行するように構成されたソフトウェアモジュールを表してもよい。
図1におけるモジュール102の1つまたは複数はまた、1つまたは複数のタスクを実行するように構成された1つまたは複数の専用コンピュータの全てまたは一部を表してもよい。
【0017】
図1に示すように、例示的なシステム100にはまた、データベース120などの1つまたは複数のデータベースを含んでもよい。一例において、データベース120には、複製源から複製ターゲットに複製されるデータ122(例えば複製源上に記憶された)を含んでもよい。データベース120は、単一のデータベースもしくはコンピューティング装置、または複数のデータベースもしくはコンピューティング装置の一部を表してもよい。例えば、データベース120は、
図2に示す装置(例えば、複製源202および/もしくは複製ターゲット222)の一部、
図3に示す装置(例えば、複製源302および/もしくは複製ターゲット322)、
図5におけるコンピューティングシステム510、ならびに/または
図6における例示的なネットワークアーキテクチャ600の一部を表してもよい。代替として、
図1におけるデータベース120は、
図2に示す装置(例えば、複製源202および/もしくは複製ターゲット222)、
図3に示す装置(例えば、複製源302および/もしくは複製ターゲット322)、
図5におけるコンピューティングシステム510、ならびに/または
図6における例示的なネットワークアーキテクチャ600の一部など、コンピューティング装置によってアクセスできる1つまたは複数の物理的に別個の装置を表してもよい。
【0018】
図1における例示的なシステム100は、様々な方法で配置してもよい。例えば、例示的なシステム100の全てまたは一部は、
図2における例示的なシステム200の一部を表してもよい。
図2に示すように、システム200には、複製ターゲット222と通信する複製源202を含んでもよい。この例において、シンプロビジョニングストレージシステム232は、複製源202用にシンプロビジョニング記憶空間(例えば、割り当てられた空間235(1))を提供してもよい。同様に、追加のシンプロビジョニングストレージシステム252は、複製ターゲット222用にシンプロビジョニング記憶空間(例えば、割り当てられた空間255(1))を提供してもよい。
【0019】
一実施形態において、以下でより詳細に説明するように、
図1におけるモジュール102の1つまたは複数は、以下のことによって、複製ターゲット222が、シンプロビジョニングストレージシステム252上の未使用記憶空間を再利用できるようにしてもよい。すなわち、1)複製されたデータを複製源(例えば、複製源202)から受信することと、2)複製されたデータ内の未使用記憶空間(例えば、割り当てられた空間255(1)の未使用部分259(1))を識別すること(例えば、本明細書で説明する様々な技術の1つを用いて)と、3)複製ターゲット用にシンプロビジョニングストレージを提供するシンプロビジョニングストレージシステム(例えば、シンプロビジョニングストレージシステム252)から未使用記憶空間を再利用するための再利用要求を生成することと、次に4)シンプロビジョニングストレージシステムから未使用記憶空間を再利用するために、シンプロビジョニングストレージシステムに再利用要求を発行することと、である。
【0020】
複製源202は、一般に、データを複製ターゲットに複製できる任意のタイプまたは形態のコンピューティング装置を表す。複製源202の例には、限定するわけではないが、様々なデータベースサービスを提供し、かつ/またはあるソフトウェアアプリケーションを実行するように構成されたアプリケーションサーバおよびデータベースサーバ、
図5における例示的なコンピューティングシステム510、または任意の他の適切なコンピューティング装置が含まれる。同様に、複製ターゲット222は、一般に、複製されたデータを受信および記憶できる任意のタイプまたは形態のコンピューティング装置を表す。一例において、複製源202は、データを複製し、かつ/または帯域内通信プロトコル210を介して、複製されたデータに関するメタデータを複製ターゲット222に送信してもよい。
【0021】
図2に示すように、いくつかの例において、複製源202には、アプリケーション204を含んでもよい。アプリケーション204は、一般に、データを生成および/または管理できる任意のタイプまたは形態のアプリケーション(例えば、データベースなど)を表す。いくつかの例において、アプリケーション204は、シンプロビジョニングストレージシステム(シンプロビジョニングストレージシステム232など)および/またはローカル記憶装置(
図3に関連して以下で説明するような)内にデータを記憶してもよい。
【0022】
複製源202にはまた、ファイルシステム206を含んでもよい。いくつかの例において、ファイルシステム206には、複数のシンプロビジョニングボリューム(すなわち、シンプロビジョニングストレージシステム232などのシンプロビジョニングストレージシステム上のストレージによってバックアップされた論理ボリューム)を含んでもよい。複製源202にはまた、複製源202から複製ターゲット222にデータを複製するための複製エージェント208を含んでもよい。複製エージェント208は、一般に、複製源(複製源202など)から複製ターゲット(複製ターゲット222など)にデータを複製できる任意のタイプまたは形態のホストまたはサーバ側エージェントもしくはモジュールを表す。以下でより詳細に説明するように、複製エージェント208は、ファイルレベルまたはブロックレベルの複製技術のいずれかを用いてデータを複製してもよい。
【0023】
同様に、複製ターゲット222上の複製エージェント228は、複製されたデータを複製源(複製源202など)から受信できる任意のタイプまたは形態のクライアント側エージェントまたはモジュールを表してもよい。以下でより詳細に説明するように、いくつかの例において、アプリケーション204、ファイルシステム206、複製エージェント208、および/または複製エージェント228は、
図1のモジュール102における1つまたは複数を含んでもよい。
【0024】
シンプロビジョニングストレージシステム232および252は、一般に、必要に応じてかまたはジャストインタイム方式で、コンピューティングシステム用にデータを記憶できる任意のタイプまたは形態のストレージシステムまたは装置(ディスクアレイなど)を表す。一例において、シンプロビジョニングストレージシステム232および252は、複数の論理装置番号(LUN)(例えば、それぞれLUN234(1)−(N)および254(1)−(N))に論理的に分割してもよく、論理装置番号のそれぞれは、シンプロビジョニングストレージシステム232または252の物理的部分への論理的参照を表してもよい。LUN234(1)−(N)および254(1)−(N)は、シンプロビジョニングストレージシステム232または252内のディスク、ディスクのセクション、全ディスクアレイ、および/またはディスクアレイのセクションを表してもよい。いくつかの例において、シンプロビジョニングストレージシステム232は、複製源202の1つまたは複数のアプリケーションまたはファイルシステム(例えば、アプリケーション204および/またはファイルシステム206)用のシンプロビジョニングストレージを提供してもよい。
【0025】
いくつかの例において、複製源202および/または複製ターゲット222は、API240を介して、シンプロビジョニングストレージシステム232および252とそれぞれインターフェースしてもよい。API240は、一般に、シンプロビジョニングストレージシステムとインターフェースするための任意のタイプまたは形態のプログラミングインターフェースを表す。
【0026】
いくつかの例において、
図2とは対照的に、複製源は、シンプロビジョニングストレージを利用しなくてもよい。例えば、
図3における複製源302は、1つまたは複数のローカル記憶装置(例えば、データセット334(1)−(N))内に記憶されたデータを、帯域内通信プロトコル310を介して複製ターゲット322に複製してもよい。この例において、データセット334(1)−(N)には、複製源302におけるアプリケーションまたはファイルシステム(アプリケーション304および/またはファイルシステム306など)によって生成および/または管理されたデータを含んでもよい。
図2における例示的なシステム200と同様に、シンプロビジョニングストレージシステム352は、複製ターゲット322用にシンプロビジョニングストレージを提供してもよい。
【0027】
図4は、複製ターゲットが、シンプロビジョニングストレージシステム上の未使用記憶空間を再利用できるようにするための例示的なコンピュータ実行方法400の流れ図である。
図4に示すステップは、任意の適切なコンピュータ実行可能コードおよび/またはコンピューティングシステムによって実行してもよい。いくつかの実施形態において、
図4に示すステップは、
図1のシステム100、
図2のシステム200、
図5のコンピューティングシステム510のコンポーネント、および/または
図6の例示的なネットワークアーキテクチャ600における部分の1つまたは複数によって実行してもよい。
【0028】
図4に示すように、ステップ402において、本明細書で説明する様々なシステムの1つまたは複数が、複製源から複製ターゲットにデータを複製してもよい。例えば、
図1における複製モジュール104は、
図2における複製源202の一部として(例えば、複製エージェント208の一部として)、複製源202から複製ターゲット222にデータを複製してもよい。
【0029】
本明細書で説明するシステムは、様々な複製技術のいずれかを用いてデータを複製してもよい。例えば、複製エージェント208は、ブロックベースの複製技術(すなわち、複製エージェント208は、複製されるデータをブロックレベルで識別してもよい)および/またはファイルベースの複製技術(すなわち、複製エージェント208は、複製されるデータをファイルレベルで識別してもよい)を用いて、複製源202から複製ターゲット222にデータを複製してもよい。
【0030】
いくつかの例において、本明細書で説明するシステムは、ディスクベースの複製技術とは対照的に、サーバまたはホストベースの複製技術を用いてデータを複製してもよい。例えば、複製エージェント208は、複製源202によって利用されるストレージ(シンプロビジョニングストレージシステム232など)上で動作するのとは対照的に、複製源202上で動作してもよい。
【0031】
いくつかの例において、ステップ402で複製されるデータは、アプリケーションおよび/またはファイルシステムによって記憶および/または管理されるデータを表してもよい。例えば、複製エージェント208は、アプリケーション204などのデータベースアプリケーションによって記憶および/または管理されるデータを複製してもよい。追加または代替として、複製エージェント208は、ファイルシステム206などのファイルシステムの1つまたは複数のボリュームを複製してもよい。
【0032】
本明細書で説明するシステムは、ローカルに記憶された、および/またはシンプロビジョニングストレージシステム上に記されたデータを複製してもよい。例えば、
図2に示す例において、複製エージェント208は、シンプロビジョニングストレージシステム232上に記憶されたデータを複製してもよい(例えば、複製エージェント208は、シンプロビジョニングストレージシステム232のLUN234(1)内の複製源202に割り当てられたデータを複製ターゲット222に複製してもよい)。同様に、
図3における複製エージェント308は、ローカルに記憶されたデータセット334(1)を、複製源302から複製ターゲット322に複製してもよい。
【0033】
図4に戻ると、ステップ404において、本明細書で説明するシステムは、複製されたデータ内の未使用記憶空間を識別してもよい。例えば、
図1における識別モジュール106は、複製源202および/または複製ターゲット222の一部として(例えば、アプリケーション204、ファイルシステム206、複製エージェント208、および/または複製エージェント228の一部として)、複製源202から複製ターゲット222に複製されたデータ内の未使用記憶空間を識別してもよい。同様に、識別モジュール106は、
図3における複製源302および/または複製ターゲット322の一部として(例えば、アプリケーション304、ファイルシステム306、複製エージェント308、および/または複製エージェント328の一部として)、複製源302から複製ターゲット322に複製されたデータ内の未使用記憶空間を識別してもよい。
【0034】
本明細書で説明するシステムは、複製されたデータ内の未使用記憶空間を様々な方法および様々な文脈で識別してもよい。例えば、ステップ404の全てまたは一部は、複製源、複製ターゲット、またはそれらの組み合わせによって実行してもよい。
【0035】
例えば、複製ターゲット222は、複製源202から複製されたデータ内の未使用記憶空間を識別する情報を複製源202から受信することによって、ステップ404を実行してもよい。例えば、識別モジュール106は、
図2における複製源202上のアプリケーション204、ファイルシステム206、および/または複製エージェント208の一部として、1)割り当てられた空間235内の記憶空間の未使用部分239(1)を(例えば、アプリケーションまたはファイルシステムAPIを用いて)識別してもよく、次に2)この未使用記憶空間を識別する情報を複製ターゲット222に送信してもよい。同様に、識別モジュール106は、
図3における複製源302上のアプリケーション304、ファイルシステム306、および/または複製エージェント308の一部として、1)データセット334(1)の未使用部分339(1)を(例えば、アプリケーションまたはファイルシステムAPIを用いて)識別してもよく、次に2)この未使用記憶空間を識別する情報を複製ターゲット322に送信してもよい。
【0036】
いくつかの例において、識別モジュール106は、この空き空間情報を、
図2における帯域内通信プロトコル210などの帯域内通信プロトコルを介して複製源から複製ターゲットに送信してもよい。本明細書で用いられるような語句「帯域内通信プロトコル」は、同じ通信帯域内で、複製されたデータおよびこの複製されたデータに関連するメタデータの両方を転送可能な任意のタイプまたは形態の通信機構を指してもよい。帯域内通信プロトコルの例には、限定するわけではないが、VERITAS VOLUME REPLICATORによって用いられるIBC APIが含まれる。
【0037】
いくつかの例において、複製ターゲット222は、複製ターゲット222によって発行された要求に応じた空き空間情報を複製源202から受信してもよい。例えば、識別モジュール106は、複製ターゲット222の一部として、1)複製源202に空き空間情報を要求し、次に2)この空き空間情報を複製源202から受信してもよい。複製ターゲット222は、例えば周期的および必要な場合を含む様々な文脈において、この情報を複製源202に要求してもよい。
【0038】
いくつかの例において、複製源から受信された空き空間情報は、複製源用にシンプロビジョニングストレージを提供するシンプロビジョニングストレージシステムに(例えば、シンプロビジョニングAPIを介して)複製源から元々は送信された、インターセプトされた再利用要求を表してもよい。例えば、識別モジュール106は、(例えば、複製源202上の複製エージェント208用の一部として)API240を介してアプリケーション204および/またはファイルシステム206によりシンプロビジョニングストレージシステム232へ発行された再利用要求をインターセプトして、割り当てられた空間235(1)の未使用部分239(1)を再利用してもよい。この再利用要求をインターセプトすると、識別モジュール106は、この再利用要求を、帯域内通信プロトコル210を介して複製ターゲット222に送信してもよい。次に、複製ターゲット222は、このインターセプトされた再利用要求を用いて、複製源202から複製されたデータ内の未使用記憶空間を識別してもよい。
【0039】
いくつかの例において、複製源から受信された空き空間情報は、複製源で実行されたコンピューティング動作によって解放された記憶空間を識別してもよい。例えば、識別モジュール106は、
図3における複製源302上のアプリケーション304、ファイルシステム306、および/または複製エージェント308の一部として、アプリケーション304および/またはファイルシステム306により実行されたコンピューティング動作によって解放された記憶空間(例えば、データセット334(1)の未使用部分339(1))を識別してもよい。次に、識別モジュール106は、コンピューティング動作によって解放された記憶空間(例えば、未使用部分339(1))を識別する情報を、帯域内通信プロトコル310を介して複製ターゲット322に送信してもよい。
【0040】
上記の例において、語句「コンピューティング動作」は、ストレージシステム内の空間を解放できる任意のタイプまたは形態のコンピューティング動作を指してもよい。かかるコンピューティング動作の例には、限定するわけではないが、デフラグメント動作、ファイル削除動作等が含まれる。かかる動作は、アプリケーション(アプリケーション304など)、ファイルシステム(ファイルシステム306など)等によって実行してもよい。
【0041】
別の例において、複製ターゲットは、1)データ複製を停止することと、次に2)データ管理APIを用いて、複製されたデータ内の未使用記憶空間を識別することと、により、ステップ404において、複製されたデータ内の未使用記憶空間を識別してもよい。例えば、
図1における複製モジュール104は、
図2における複製ターゲット222の一部として(例えば、複製エージェント228の一部として)、複製源202から複製ターゲット222へのデータの複製を停止または休止するように、(例えば、帯域内指示プロトコル210を介して)複製源202に命令してもよい。この命令を受信すると、複製エージェント208(上記で詳述したように
図1の複製モジュール104を含んでもよい)は、複製源202における複製されたデータを整合状態にしてもよい。例えば、複製エージェント208は、アプリケーション204および/またはファイルシステム206の動作を凍結または停止し、かくしてシンプロビジョニングストレージシステム232内で複製源202に割り当てられたストレージ(例えば、割り当てられた空間235(1))が、整合状態であることを保証してもよい。次に、複製エージェント208は、複製されたデータ(この例において、シンプロビジョニングストレージシステム232によって複製源に202に割り当てられたストレージ)が整合状態であることを示す通信を、(例えば、帯域内通信プロトコル210を介して)複製源202から複製ターゲット222に送信してもよい。
【0042】
この通信を複製源202から受信すると、複製ターゲット222は、1)全ての未完の複製書き込みの適用を差し控え、次に2)データ管理APIを用いて、シンプロビジョニングストレージシステム252上の割り当てられた空間255(1)内の未使用記憶空間を識別してもよい。例えば、
図1の識別モジュール106は、
図2における複製ターゲット222の一部として、ファイルシステムAPIおよび/またはアプリケーションAPIを用いて、シンプロビジョニングストレージシステム252上の割り当てられた空間255(1)内の未使用部分259(1)を識別してもよい。この未使用記憶空間を再利用すると(ステップ406および408に関連して以下で詳述する方法で)、複製ターゲット222上の複製エージェント228は、複製源202に、データ複製を再開するように命令してもよい。
【0043】
図4に戻ると、ステップ406において、本明細書で説明するシステムは、複製ターゲット用にシンプロビジョニングストレージを提供するシンプロビジョニングストレージシステムから、ステップ404で識別された未使用記憶空間を再利用するための再利用要求を生成してもよい。例えば、
図1における再利用モジュール108は、
図2における複製ターゲット222の一部として、シンプロビジョニングストレージシステム252から未使用部分259(1)を再利用するための再利用要求を生成してもよい。同様に、
図1の再利用モジュール108は、
図3における複製ターゲット322の一部として、シンプロビジョニングストレージシステム352から未使用部分359(1)を再利用するための再利用要求を生成してもよい。
【0044】
本明細書で説明するシステムは、様々な方法でステップ406を実行してもよい。一例において、再利用モジュール108は、
図2および3におけるAPI240および340などのシンプロビジョニングAPIを用いて、再利用要求を生成してもよい。
【0045】
ステップ408において、本明細書で説明するシステムは、シンプロビジョニングストレージシステムから未使用記憶空間を再利用するために、シンプロビジョニングストレージシステムに再利用要求を発行してもよい。例えば、
図1における再利用モジュール108は、未使用部分259(1)を再利用するために、
図2における複製ターゲット222の一部として、ステップ406で生成された再利用要求をシンプロビジョニングストレージシステム252に発行してもよい。同様に、
図1における再利用モジュール108は、未使用部分359(1)を再利用するために、
図3における複製ターゲット322の一部として、ステップ406で生成された再利用要求をシンプロビジョニングストレージシステム352に発行してもよい。
【0046】
本明細書で説明するシステムは、様々な方法でステップ408を実行してもよい。一例において、再利用モジュール108は、
図2および3におけるAPI240および340などのシンプロビジョニングAPIを用いて、再利用要求を発行してもよい。ステップ408が完了すると、
図4における例示的な方法400は、終了してもよい。
【0047】
上記で詳述したように、本明細書で説明するシステムおよび方法によって、複製ターゲットは、複製ターゲット用にシンプロビジョニングストレージを提供するシンプロビジョニングストレージシステムから未使用記憶空間を再利用することが可能になり得る。かかるものとして、これらのシステムおよび方法は、システム管理者が、シンプロビジョニングストレージ環境内で複製ソリューションを展開させることができるようにし、潜在的な空間的および金銭的節約を結果としてもたらし得る。
【0048】
図5は、本明細書で説明および/または図示する実施形態の1つまたは複数を実行できる例示的なコンピューティングシステム510のブロック図である。コンピューティングシステム510は、コンピュータ可読命令を実行できる任意のシングルもしくはマルチプロセッサコンピューティング装置またはシステムを広く表す。コンピューティングシステム510の例には、限定するわけではないが、ワークステーション、ラップトップ、クライアント側端末、サーバ、分散コンピューティングシステム、ハンドヘルド装置、または任意の他のコンピューティングシステムもしくは装置が含まれる。コンピューティングシステム510には、その最も基本的な構成において、少なくとも1つのプロセッサ514およびシステムメモリ516を含んでもよい。
【0049】
プロセッサ514は、一般に、データを処理できるかまたは命令を解釈および実行できる任意のタイプまたは形態の処理装置を表す。ある実施形態において、プロセッサ514は、ソフトウェアアプリケーションまたはモジュールから命令を受信してもよい。これらの命令は、本明細書で説明および/または図示する例示的な実施形態の1つまたは複数の機能を、プロセッサ514に実行させてもよい。例えば、プロセッサ514は、本明細書で説明する複製ステップ、識別ステップ、生成ステップ、再利用ステップ、発行ステップ、受信ステップ、送信ステップ、要求ステップ、停止ステップ、使用ステップ、および再開ステップの1つまたは複数を、単独でまたは他の要素と一緒に実行するか、かつ/または実行するための手段であってもよい。プロセッサ514はまた、本明細書で説明および/または図示する任意の他のステップ、方法またはプロセスを実行するか、かつ/または実行するための手段であってもよい。
【0050】
システムメモリ516は、一般に、データおよび/または他のコンピュータ可読命令を記憶できる任意のタイプまたは形態の揮発性または不揮発性記憶装置または媒体を表す。システムメモリ516の例には、限定するわけではないが、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、フラッシュメモリ、または任意の他の適切なメモリ装置が含まれる。要求はされないが、ある実施形態において、コンピューティングシステム510には、揮発性メモリユニット(例えば、システムメモリ516など)および不揮発性記憶装置(例えば、以下で詳細に説明するような主記憶装置532など)の両方を含んでもよい。一例において、
図1のモジュール102の1つまたは複数は、システムメモリ516にロードしてもよい。
【0051】
ある実施形態において、例示的なコンピューティングシステム510にはまた、プロセッサ514およびシステムメモリ516に加えて1つまたは複数のコンポーネントまたは要素を含んでもよい。例えば、
図5に示すように、コンピューティングシステム510には、メモリコントローラ518、入力/出力(I/O)コントローラ520、および通信インターフェース522を含んでもよく、これらのそれぞれは、通信インフラストラクチャ512を介して相互接続してもよい。通信インフラストラクチャ512は、一般に、コンピューティング装置の1つまたは複数のコンポーネント間の通信を促進できる任意のタイプまたは形態のインフラストラクチャを表す。通信インフラストラクチャ512の例には、限定するわけではないが、通信バス(ISA、PCI、PCIeまたは類似のバスなど)およびネットワークが含まれる。
【0052】
メモリコントローラ518は、一般に、メモリもしくはデータを扱うか、またはコンピューティングシステム510の1つまたは複数のコンポーネント間の通信を制御することができる任意のタイプまたは形態の装置を表す。例えば、ある実施形態において、メモリコントローラ518は、通信インフラストラクチャ512を介して、プロセッサ514、システムメモリ516、およびI/Oコントローラ520間の通信を制御してもよい。ある実施形態において、メモリコントローラ518は、複製、識別、生成、再利用、発行、受信、送信、要求、停止、使用、および再開など、本明細書で説明および図示するステップまたは機能の1つまたは複数を、単独でまたは他の要素と一緒に実行するか、かつ/または実行するための手段であってもよい。
【0053】
I/Oコントローラ520は、一般に、コンピューティング装置の入力および出力機能を調整および/または制御できる任意のタイプまたは形態のモジュールを表す。例えば、ある実施形態において、I/Oコントローラ520は、プロセッサ514、システムメモリ516、通信インターフェース522、ディスプレイアダプタ526、入力インターフェース530、および記憶インターフェース534など、コンピューティングシステム510の1つまたは複数の要素間におけるデータ転送を制御または促進してもよい。I/Oコントローラ520は、例えば、本明細書で説明する複製ステップ、識別ステップ、生成ステップ、再利用ステップ、発行ステップ、受信ステップ、送信ステップ、要求ステップ、停止ステップ、使用ステップ、および再開ステップの1つまたは複数を、単独でまたは他の要素と一緒に実行するか、かつ/または実行するための手段となるように用いてもよい。I/Oコントローラ520はまた、本開示で述べる他のステップおよび機能を実行するか、かつ/または実行するための手段となるように用いてもよい。
【0054】
通信インターフェース522は、例示的なコンピューティングシステム510と1つまたは複数の追加装置との間の通信を促進できる任意のタイプまたは形態の通信装置またはアダプタを広く表す。例えば、ある実施形態において、通信インターフェース522は、コンピューティングシステム510と、追加コンピューティングシステムを含むプライベートまたはパブリックネットワークとの間の通信を促進してもよい。通信インターフェース522の例には、限定するわけではないが、有線ネットワークインターフェース(ネットワークインターフェースカードなど)、無線ネットワークインターフェース(無線ネットワークインターフェースカードなど)、モデム、および任意の他の適切なインターフェースが含まれる。少なくとも一実施形態において、通信インターフェース522は、インターネットなどのネットワークへの直接リンクを介して、遠隔サーバへの直接接続を提供してもよい。通信インターフェース522はまた、例えば、ローカルエリアネットワーク(イーサネット(登録商標)ネットワークなど)、パーソナルエリアネットワーク、電話もしくはケーブルネットワーク、携帯電話接続、衛星データ接続、または任意の他の適切な接続を通して、かかる接続を間接的に提供してもよい。
【0055】
ある実施形態において、通信インターフェース522はまた、外部バスまたは通信チャネルを介して、コンピューティングシステム510と1つまたは複数の追加ネットワークまたは記憶装置との間の通信を促進するように構成されたホストアダプタを表してもよい。ホストアダプタの例には、限定するわけではないが、SCSIホストアダプタ、USBホストアダプタ、IEEE1394ホストアダプタ、SATAおよびeSATAホストアダプタ、ATAおよびPATAホストアダプタ、ファイバチャンネルインターフェースアダプタ、イーサネットアダプタ等が含まれる。また、通信インターフェース522によって、コンピューティングシステム510は、分散または遠隔コンピューティングに従事することが可能になり得る。例えば、通信インターフェース522は、実行用に、遠隔装置から命令を受信するか、または遠隔装置に命令を送信してもよい。ある実施形態において、通信インターフェース522は、本明細書で開示する複製ステップ、識別ステップ、生成ステップ、再利用ステップ、発行ステップ、受信ステップ、送信ステップ、要求ステップ、停止ステップ、使用ステップ、および再開ステップの1つまたは複数を、単独でまたは他の要素と一緒に実行するか、かつ/または実行するための手段であってもよい。通信インターフェース522はまた、本開示で述べる他のステップおよび機能を実行するか、かつ/または実行するための手段となるように用いてもよい。
【0056】
図5に示すように、コンピューティングシステム510にはまた、ディスプレイアダプタ526を介して通信インフラストラクチャ512に結合される少なくとも1つのディスプレイ装置524を含んでもよい。ディスプレイ装置524は、一般に、ディスプレイアダプタ526によって転送された情報を視覚的に表示できる任意のタイプまたは形態の装置を表す。同様に、ディスプレイアダプタ526は、一般に、ディスプレイ装置524における表示のために、通信インフラストラクチャ512から(または当該技術分野において周知のようなフレームバッファから)グラフィックス、テキストおよび他のデータを転送するように構成された任意のタイプまたは形態の装置を表す。
【0057】
図5に示すように、例示的なコンピューティングシステム510にはまた、入力インターフェース530を介して通信インフラストラクチャ512に結合される少なくとも1つの入力装置528を含んでもよい。入力装置528は、一般に、コンピュータまたは人間によって生成された入力を例示的なコンピューティングシステム510に供給できる任意のタイプまたは形態の装置を表す。入力装置528の例には、限定するわけではないが、キーボード、ポインティング装置、音声認識装置、または任意の他の入力装置が含まれる。少なくとも一実施形態において、入力装置528は、本明細書で開示する複製ステップ、識別ステップ、生成ステップ、再利用ステップ、発行ステップ、受信ステップ、送信ステップ、要求ステップ、停止ステップ、使用ステップ、および再開ステップの1つまたは複数を、単独でまたは他の要素と一緒に実行するか、かつ/または実行するための手段であってもよい。入力装置528はまた、本開示で述べる他のステップおよび機能を実行するか、かつ/または実行するための手段となるように用いてもよい。
【0058】
図5に示すように、例示的なコンピューティングシステム510にはまた、記憶インターフェース534を介して通信インフラストラクチャ512に結合される主記憶装置532およびバックアップ記憶装置533を含んでもよい。記憶装置532および533は、一般に、データおよび/または他のコンピュータ可読命令を記憶できる任意のタイプまたは形態の記憶装置または媒体を表す。例えば、記憶装置532および533は、磁気ディスク装置(例えば、いわゆるハードドライブ)、フロッピー(登録商標)ディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブ等であってもよい。記憶インターフェース534は、一般に、コンピューティングシステム510の記憶装置532および533と他のコンポーネントとの間でデータを転送するための任意のタイプまたは形態のインターフェースまたは装置を表す。一例において、
図1のデータベース120は、主記憶装置532に記憶してもよい。
【0059】
ある実施形態において、記憶装置532および533は、コンピュータソフトウェア、データ、または他のコンピュータ可読情報を記憶するように構成されたリムーバブル記憶ユニットから読み出すか、かつ/またはそこに書き込むように構成してもよい。適切なリムーバブル記憶ユニットの例には、限定するわけではないが、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリ装置等が含まれる。記憶装置532および533にはまた、コンピュータソフトウェア、データ、または他のコンピュータ可読命令をコンピューティングシステム510にロードできるようにするための他の類似構造または装置を含んでもよい。例えば、記憶装置532および533は、ソフトウェア、データ、または他のコンピュータ可読情報を読み出し、かつ書き込むように構成してもよい。記憶装置532および533はまた、コンピューティングシステム510の一部であってもよく、または他のインターフェースシステムを介してアクセスされる別個の装置であってもよい。
【0060】
ある実施形態において、記憶装置532および533は、例えば、本明細書で開示する複製ステップ、識別ステップ、生成ステップ、再利用ステップ、発行ステップ、受信ステップ、送信ステップ、要求ステップ、停止ステップ、使用ステップ、および再開ステップの1つまたは複数を、単独でまたは他の要素と一緒に実行するか、かつ/または実行するための手段となるように用いてもよい。記憶装置532および533はまた、本開示で述べる他のステップおよび機能を実行するか、かつ/または実行するための手段となるように用いてもよい。
【0061】
多くの他の装置またはサブシステムを、コンピューティングシステム510に接続してもよい。反対に、
図5に示すコンポーネントおよび装置の全てが、本明細書で説明および/または図示する実施形態を実行するために存在する必要があるわけではない。上記で参照した装置およびサブシステムはまた、
図5に示す方法とは異なる方法で相互接続してもよい。コンピューティングシステム510はまた、任意の数のソフトウェア、ファームウェア、および/またはハードウェア構成を用いてもよい。本明細書で開示する例示的な実施形態の1つまたは複数は、例えば、コンピュータ可読媒体上のコンピュータプログラム(コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、またはコンピュータ制御論理とも呼ばれる)としてコード化してもよい。語句「コンピュータ可読媒体」は、一般に、コンピュータ可読命令を記憶または担持できる任意の形態の装置、キャリア、または媒体を指す。コンピュータ可読媒体の例には、限定するわけではないが、搬送波などの伝送型媒体、および磁気記憶媒体(例えば、ハードディスクドライブおよびフロッピーディスク)、光記憶媒体(例えば、CD−ROMまたはDVD−ROM)、電子記憶媒体(例えば、ソリッドステートドライブおよびフラッシュ媒体)などの物理媒体、ならびに他の分散システムが含まれる。
【0062】
コンピュータプログラムを含むコンピュータ可読媒体は、コンピューティングシステム510にロードしてもよい。次に、コンピュータ可読媒体上に記憶されたコンピュータプログラムの全てまたは一部は、システムメモリ516、ならびに/または記憶装置532および533の様々な部分に記憶してもよい。プロセッサ514によって実行される場合に、コンピューティングシステム510にロードされたコンピュータプログラムが、本明細書で説明および/または図示する例示的な実施形態の1つまたは複数における機能を、プロセッサ514に実行させるか、かつ/またはプロセッサ514を実行するための手段にしてもよい。追加または代替として、本明細書で説明および/または図示する例示的な実施形態の1つまたは複数は、ファームウェアおよび/またはハードウェアにおいて実行してもよい。例えば、コンピューティングシステム510は、本明細書で開示する例示的な実施形態の1つまたは複数を実行するように適合された特定用途向け集積回路(ASIC)として構成してもよい。
【0063】
図6は、例示的なネットワークアーキテクチャ600のブロック図であり、そこでは、クライアントシステム610、620、630、ならびにサーバ640および645は、ネットワーク650に結合してもよい。クライアントシステム610、620および630は、一般に、
図5における例示的なコンピューティングシステム510など、任意のタイプまたは形態のコンピューティング装置またはシステムを表す。
【0064】
同様に、サーバ640および645は、一般に、様々なデータベースサービスを提供し、かつ/またはあるソフトウェアアプリケーションを実行するように構成された、アプリケーションサーバまたはデータベースサーバなどのコンピューティング装置またはシステムを表す。ネットワーク650は、一般に、例えば、イントラネット、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、パーソナルエリアネットワーク(PAN)、またはインターネットを含む任意の電気通信またはコンピュータネットワークを表す。一例において、クライアントシステム610、620および/もしくは630で、ならびに/またはサーバ640および/もしくは645は、
図1のモジュール102を含んでもよい。
【0065】
図6に示すように、1つまたは複数の記憶装置660(1)−(N)は、サーバ640に直接装着してもよい。同様に、1つまたは複数の記憶装置670(1)−(N)は、サーバ645に直接装着してもよい。記憶装置660(1)−(N)および記憶装置670(1)−(N)は、一般に、データおよび/または他のコンピュータ可読命令を記憶できる任意のタイプまたは形態の記憶装置または媒体を表す。ある実施形態において、記憶装置660(1)−(N)および記憶装置670(1)−(N)は、NFS、SMBまたはCIFSなどの様々なプロトコルを用いて、サーバ640および645と通信するように構成されたネットワーク接続ストレージ(NAS)装置を表してもよい。
【0066】
サーバ640および645はまた、ストレージエリアネットワーク(SAN)ファブリック680に接続してもよい。SANファブリック680は、一般に、複数の記憶装置間の通信を促進できる任意のタイプまたは形態のコンピュータネットワークまたはアーキテクチャを表す。SANファブリック680は、サーバ640および645と、複数の記憶装置690(1)−(N)および/またはインテリジェント記憶アレイ695との間の通信を促進してもよい。SANファブリック680はまた、装置690(1)−(N)およびアレイ695が、クライアントシステム610、620および630にローカルに装着された装置として現れるような方法で、ネットワーク650ならびにサーバ640および645を介して、クライアントシステム610、620、630と、記憶装置690(1)−(N)および/またはインテリジェント記憶アレイ695との間の通信を、促進してもよい。記憶装置660(1)−(N)および記憶装置670(1)−(N)と同様に、記憶装置690(1)−(N)およびインテリジェント記憶アレイ695は、一般に、データおよび/または他のコンピュータ可読命令を記憶できる任意のタイプまたは形態の記憶装置または媒体を表す。
【0067】
ある実施形態において、かつ
図5の例示的なコンピューティングシステム510に関連して、
図5における通信インターフェース522などの通信インターフェースを用いて、各クライアントシステム610、620および630とネットワーク650との間の接続を提供してもよい。クライアントシステム610、620および630は、例えばウェブブラウザまたは他のクライアントソフトウェアを用いて、サーバ640または645上の情報にアクセスすることができる。かかるソフトウェアによって、クライアントシステム610、620および630は、サーバ640、サーバ645、記憶装置660(1)−(N)、記憶装置670(1)−(N)、記憶装置690(1)−(N)、またはインテリジェント記憶アレイ695によりホストされる情報にアクセスすることが可能になる。
図6は、データを交換するためにネットワーク(インターネットなど)を使用することを示すが、本明細書で説明および/または図示する実施形態は、インターネットにも、どんな特定のネットワークベースの環境にも限定されない。
【0068】
少なくとも一実施形態において、本明細書で開示する例示的な実施形態の1つまたは複数における全てまたは一部は、コンピュータプログラムとしてコード化し、サーバ640、サーバ645、記憶装置660(1)−(N)、記憶装置670(1)−(N)、記憶装置690(1)−(N)、インテリジェント記憶アレイ695、またはそれらの任意の組み合わせにロードし、かつそれらによって実行してもよい。本明細書で開示する例示的な実施形態の1つまたは複数における全てまたは一部はまた、コンピュータプログラムとしてコード化し、サーバ640に記憶し、サーバ645によって実行し、かつネットワーク650を通じてクライアントシステム610、620および630に分配してもよい。したがって、ネットワークアーキテクチャ600は、本明細書で開示する複製ステップ、識別ステップ、生成ステップ、再利用ステップ、発行ステップ、受信ステップ、送信ステップ、要求ステップ、停止ステップ、使用ステップ、および再開ステップの1つまたは複数を、単独でまたは他の要素と一緒に実行するか、かつ/または実行するための手段であってもよい。ネットワークアーキテクチャ600はまた、本開示で述べる他のステップおよび機能を実行するか、かつ/または実行するための手段となるように用いてもよい。
【0069】
上記で詳述したように、コンピューティングシステム510および/またはネットワークアーキテクチャ600の1つまたは複数のコンポーネントは、複製ターゲットが、シンプロビジョニングストレージシステム上の未使用記憶空間を再利用できるようにするための例示的な方法の1つまたは複数のステップを、単独でまたは他の要素と一緒に実行するか、かつ/または実行するための手段であってもよい。一例において、かかる方法には、1)複製源から複製ターゲットにデータを複製することと、2)複製されたデータ内の未使用記憶空間を識別することと、3)複製ターゲット用にシンプロビジョニングストレージを提供するシンプロビジョニングストレージシステムから未使用記憶空間を再利用するための再利用要求を生成することと、次に4)シンプロビジョニングストレージシステムから未使用記憶空間を再利用するために、再利用要求をシンプロビジョニングストレージシステムに発行することと、を含んでもよい。
【0070】
いくつかの例において、複製源から複製ターゲットにデータを複製することには、ブロックベースまたはファイルベースの複製技術を用いてデータを複製することを含んでもよい。さらに、複製源は、サーバコンピューティング装置を表してもよく、複製ターゲットは、クライアントコンピューティング装置を表してもよい。
【0071】
一例において、複製されたデータ内の未使用記憶空間を識別することには、未使用記憶空間を識別する情報を複製源から受信することを含んでもよい。いくつかの例において、この情報には、複製源用にシンプロビジョニングストレージを提供するシンプロビジョニングストレージシステムに複製源から元々は送信された、インターセプトされた再利用要求を含んでもよい。他の例において、この情報は、複製源で実行されたコンピューティング動作によって解放された記憶空間を識別してもよい。
【0072】
いくつかの実施形態において、複製源から情報を受信することには、帯域内通信プロトコルを介して情報を受信することを含んでもよい。複製源から情報を受信することにはまた、1)複製源に情報を要求することと、次に2)要求に応じた複製源からの情報を受信することと、を含んでもよい。いくつかの例において、複製源に情報を要求することには、周期的におよび/または必要に応じて複製源に情報を要求することを含んでもよい。
【0073】
一例において、複製されたデータ内の未使用記憶空間を識別することには、1)データ複製を停止することと、次に2)データ管理APIを用いて、複製ターゲットにおけるデータの複製内の未使用記憶空間を識別することと、を含んでもよい。この例において、データ複製を停止することには、1)複製源における複製されたデータを整合状態にすることと、次に2)複製されたデータが整合状態にあることを示す通信を複製源から受信することと、を含んでもよい。この例において、方法にはまた、再利用要求を発行するとデータ複製を再開することを含んでもよい。データ管理APIには、ファイルシステムAPIおよび/またはアプリケーションAPIを含んでもよい。
【0074】
前述の開示は、特定のブロック図、フローチャート、および例を用いて様々な実施形態を説明したが、本明細書で説明および/または図示する各ブロック図の要素、フローチャートのステップ、動作、および/またはコンポーネントは、広範囲なハードウェア、ソフトウェア、もしくはファームウェア(またはそれらの任意の組み合わせ)構成を用いて、個別に、かつ/または集団的に実現してもよい。さらに、他のコンポーネント内に含まれるコンポーネントのどんな開示もまた、本質的に例示的であると考えるべきである。なぜなら、同じ機能を達成するために他の多くのアーキテクチャを実現することができるからである。
【0075】
いくつかの例において、
図1における例示的なシステム100の全てまたは一部は、クラウドコンピューティングまたはネットワークベース環境の一部を表してもよい。クラウドコンピューティング環境は、インターネットを介して様々なサービスおよびアプリケーションを提供してもよい。これらのクラウドベースサービス(例えば、サービスとしてのソフトウェア、サービスとしてのプラットホーム、サービスとしてのインフラストラクチャ等)は、ウェブブラウザまたは他の遠隔インターフェースを介してアクセス可能であってもよい。本明細書で説明する様々な機能は、遠隔デスクトップ環境または任意の他のクラウドベースコンピュータ環境を介して提供してもよい。
【0076】
本明細書で説明および/または図示するステップのプロセスパラメータおよびシーケンスは、例としてのみ与えられており、必要に応じて変更することができる。例えば、本明細書で図示および/または説明するステップは、特定の順序で図示または説明してもよいが、これらのステップは、必ずしも図示または説明される順序で実行する必要はない。本明細書で説明および/または図示する様々な例示的な方法はまた、本明細書で説明または図示するステップの1つもしくは複数を省略してもよく、または開示されるステップに加えて追加ステップを含んでもよい。
【0077】
完全に機能的なコンピューティングシステムの文脈において、様々な実施形態を本明細書で説明および/または図示したが、これらの例示的な実施形態の1つまたは複数は、分散を実際に実行するために用いられる特定のタイプのコンピュータ可読媒体に関係なく、プログラムプロダクトとして様々な形態で分散してもよい。本明細書で開示する実施形態はまた、あるタスクを実行するソフトウェアモジュールを用いて実行してもよい。これらのソフトウェアモジュールには、コンピュータ可読記憶媒体またはコンピューティングシステムに記憶可能なスクリプト、バッチ、または他の実行可能ファイルを含んでもよい。いくつかの実施形態において、これらのソフトウェアモジュールは、本明細書で開示する例示的な実施形態の1つまたは複数を実行するようにコンピューティングシステムを構成してもよい。
【0078】
さらに、本明細書で説明するモジュールの1つまたは複数は、データ、物理装置、および/または物理装置の表現を、ある形態から別の形態へと変形してもよい。例えば、
図1における再利用モジュール108は、シンプロビジョニングストレージシステム252および/または352から未使用記憶空間(例えば、未使用部分259(1)および/または359(1))を再利用することによって、
図2および3におけるシンプロビジョニングストレージシステム252および/または353の特性または特徴を変形してもよい。
【0079】
前述の説明は、当業者が、本明細書で開示する例示的な実施形態の様々な態様を最も良く利用できるようにするために提供された。この例示的な説明は、網羅的であるようにも、開示されるいずれかの形態に正確に限定されるようにも意図されていない。多くの修正および変更が、本開示の趣旨および範囲から逸脱せずに可能である。本明細書で開示する実施形態は、全ての点において、実例であり限定ではないと考えるべきである。本開示の範囲を決定する際には、添付の特許請求の範囲およびその均等物を参照するべきである。
【0080】
特に断りのない限り、明細書および特許請求の範囲において用いられるような用語「a」または「an」は、「〜の少なくとも1つ」を意味すると解釈するべきである。さらに、使い易さのために、明細書および特許請求の範囲において用いられるような単語「含む(including)」および「有する(having)」は、「含む(comprising)」と交換可能であり、かつそれと同じ意味を有する。