(58)【調査した分野】(Int.Cl.,DB名)
前記ストレージコントローラは、前記第1のボリュームの前記第1の範囲にアクセスする必要なしに前記第1のボリュームの前記第1の範囲をコピーするための前記要求を満たすよう更に構成されることを特徴とする、請求項1に記載のコンピュータシステム。
前記ストレージコントローラは更に、前記第2の論理表現の生成を、前記第1のボリュームの第1の範囲を標的とする書き込み要求を受信するまで遅延させるよう構成されることを特徴とする、請求項1に記載のコンピュータシステム。
前記方法は更に、前記第1のボリュームの前記第1の範囲をコピーするための前記要求を、前記第1のボリュームの前記第1の範囲にアクセスすることなく満たすステップを更に含むことを特徴とする、請求項6に記載の方法。
前記第2の論理表現の生成を、前記第1のボリュームの第1の範囲を標的とする書き込み要求を受信するまで遅延させるステップを更に含むことを特徴とする、請求項6に記載の方法。
前記コンピュータ可読ストレージ媒体は更に、前記第1のボリュームの前記第1の範囲をコピーするための前記要求を、前記第1のボリュームの前記第1の範囲にアクセスすることなく満たすステップが前記ストレージコントローラの前記プロセッサによって実行可能なプログラム命令を更に含むことを特徴とする、請求項11に記載のコンピュータ可読ストレージ媒体。
前記第2の論理表現の生成を、前記第1のボリュームの前記第1の範囲を標的とする書き込み要求を受信するまで遅延させるために、前記プログラム命令を前記プロセッサによって更に実行できることを特徴とする、請求項11に記載のコンピュータ可読ストレージ媒体。
【発明を実施するための形態】
【0009】
本発明は様々な修正例及び代替形態を許容するものであるが、例として複数の具体的実施形態を図面に示し、また本明細書において詳細に説明する。しかしながら、図面及びこれに対する詳細な説明は、本出願において開示されている特定の形態に本発明を限定することを意図したものではなく、その反対に、本発明は、添付の請求項によって定義される本発明の精神及び範囲内のあらゆる修正例、均等物、代替例を包含できることを理解されたい。
【0010】
以下の説明では、本発明の完全な理解を提供するために、多数の具体的な詳細を挙げる。しかしながら、これらの具体的な詳細を用いずに本発明を実施してもよいことを、当業者は認識するべきである。例えば公知の回路、構造、信号、コンピュータプログラム命令、技術については、本発明を不明瞭にするのを回避するために、詳細には示していない。
【0011】
ここで
図1を参照すると、ストレージシステム100の一実施形態の概略ブロック図が示されている。ストレージシステム100は、ストレージコントローラ110及びストレージデバイス群130、140を含んでよく、上記ストレージデバイス群130、140はいずれの個数のストレージデバイス群(又はデータストレージアレイ)の代表例である。図示したように、ストレージデバイス群130はストレージデバイス135A〜Nを含み、これらはいずれの個数及びタイプのストレージデバイス(例えばソリッドステートドライブ(solid−state drive:SDD))の代表例である。ストレージコントローラ110はクライアントコンピュータシステム125に直接接続してよく、またストレージコントローラ110は、ネットワーク120を介して、クライアントコンピュータシステム115から離間した状態でクライアントコンピュータシステム115に接続してよい。クライアント115、125は、システム100においてデータを記憶しデータにアクセスするためにストレージコントローラ110を利用できるいずれの個数のクライアントの代表例である。なお、いくつかのシステムは、ストレージコントローラ110に直接又は離間した状態で接続された単一のクライアントしか含まなくてもよい。
【0012】
ストレージコントローラ110は、ストレージデバイス135A〜Nへのアクセスを提供するよう構成されたソフトウェア及び/又はハードウェアを含んでよい。ストレージデバイス群130、140から離間したものとしてストレージコントローラ110を図示しているが、いくつかの実施形態では、ストレージコントローラ110をストレージデバイス群130、140のうちの一方又はそれぞれの中に配置してよい。ストレージコントローラ110は、ベースオペレーティングシステム(operating system:OS)、ボリュームマネージャ、本明細書で開示される様々な技術を実装するための追加の制御論理を含んでよく、又はこれらに接続してよい。
【0013】
ストレージコントローラ110は実施形態に応じて、いずれの個数のプロセッサを含んでよく、及び/又はいずれの個数のプロセッサ上で実行されてよく、また、単一のホストコンピューティングデバイスを含んでよく、及び/若しくは単一のホストコンピューティングデバイス上で実行されてよく、又は複数のホストコンピューティングデバイスに亘って分散されていてよい。いくつかの実施形態では、ストレージコントローラ110は一般に、1つ若しくは複数のファイルサーバ及び/若しくはブロックサーバを含むか、又は1つ若しくは複数のファイルサーバ及び/若しくはブロックサーバ上で実行されてよい。ストレージコントローラ110は、デバイスの不良又はデバイス内のストレージ位置の不良によるデータの損失を防止するために、デバイス135A〜Nに亘ってデータを複製するための様々な技術のうちのいずれを使用してよい。ストレージコントローラ110は、共通のデータを重複排除することによって、デバイス135A〜Nに記憶されるデータ量を削減するための、様々な重複排除、圧縮又はその他の技術のうちのいずれを利用してよい。
【0014】
ストレージコントローラ110はまた、システム100内でスナップショットを生成してこれを管理するよう構成してよい。媒体のセットは、ストレージコントローラ110によって記録され、保守される。媒体のほとんどは、特定のボリュームが使用中の最新の媒体等の1つ又は複数の選択された媒体を除いて、読み出し専用であってよい。各媒体は論理的に、媒体内の全てのブロックを含む。しかしながら、媒体が生成された時点から媒体が閉鎖された時点までに変化したブロックのみが保存され、これらのブロックに対するマッピングを上記媒体を用いて保守してもよい。
【0015】
様々な実施形態では、ストレージコントローラ110が複数のマッピングテーブルを保守してよい。これらのマッピングテーブルは、媒体マッピングテーブル及びボリューム−媒体間マッピングテーブルを含んでよい。これらのテーブルを利用して、媒体と下層媒体との間のマッピング及びボリュームと媒体との間のマッピングを記録及び保守してよい。ストレージコントローラ110はまた、複数のエントリを有するアドレス翻訳テーブルを含んでよく、各エントリは、対応するデータ成分に関する仮想−物理間マッピングを保持する。このマッピングテーブルを用いて、クライアントコンピュータシステム115、125からストレージデバイス135A〜N内の物理的位置へ、論理読み書き要求をマッピングできる。受信した読み書き要求に対応する探索動作の間に、所定の媒体に関連するマッピングから「物理」ポインタ値を読み出してよい。用語「マッピング(mapping)」は、所定の媒体ID及びブロック番号を物理ポインタ値に変換するアドレス翻訳マッピングテーブルの1つ又は複数のエントリとして定義される。続いてこの物理ポインタ値を用いて、ストレージデバイス135A〜N内の物理的位置を配置してよい。なお、物理ポインタ値を用いて、ストレージデバイス135A〜Nのうちの所定のストレージデバイス内の別のマッピングテーブルにアクセスしてもよい。その結果、物理ポインタ値と標的ストレージ位置との間に1つ又は複数のレベル間接参照を存在させることができる。
【0016】
なお代替実施形態では、クライアントコンピュータ、ストレージコントローラ、ネットワーク、ストレージデバイス群、データストレージデバイスの個数及びタイプは、
図1に示したものに限定されない。様々な時点において、1つ又は複数のクライアントがオフラインで動作できる。更に動作中、ユーザがシステム100に対して接続、接続解除、再接続を行うのに従って、個々のクライアントコンピュータ接続タイプを変更してよい。更に本明細書に記載のシステム及び方法は、直接接続型ストレージシステム又はネットワーク接続型ストレージシステムに適用してよく、また本明細書に記載の方法の1つ又は複数の態様を実行するよう構成されたホストオペレーティングシステムを含んでよい。多数のこのような代替例が可能であり、考察の対象となる。
【0017】
ネットワーク120は:無線接続;直接ローカルエリアネットワーク(local area network:LAN)接続;インターネット、ルータ、ストレージエリアネットワーク、イーサネット(登録商標)等の広域ネットワーク(wide area network:WAN)接続を含む多様な技術を利用してよい。ネットワーク120は、無線式であってもよい1つ又は複数のLANを備えてよい。ネットワーク120は更に、リモートダイレクトメモリアクセス(remote direct memory access:RDMA)ハードウェア及び/若しくはソフトウェア、伝送制御プロトコル/インターネット・プロトコル(transmission control protocol/internet protocol:TCP/IP)ハードウェア及び/若しくはソフトウェア、ルータ、リピータ、スイッチ並びに/又はグリッド並びに/又はその他のものを含んでよい。ファイバチャネル、ファイバチャネルオーバイーサネット(Fibre Channel over Ethernet:FCoE)、iSCSI等のプロトコルをネットワーク120において使用してよい。ネットワーク120は、伝送制御プロトコル(Transmission Control Protocol:TCP)及びインターネット・プロトコル(Internet Protocol:IP)、即ちTCP/IP等の、インターネット用に使用される一連の通信プロトコルとインタフェース接続してよい。
【0018】
クライアントコンピュータ115、125は、デスクトップパーソナルコンピュータ(personal computer:PC)、サーバ、サーバファーム、ワークステーション、ラップトップ、ハンドヘルドコンピュータ、サーバ、パーソナルデジタルアシスタント(personal digital assistant:PDA)、スマートフォン等の、いずれの個数の据置型又は移動体コンピュータの代表例である。一般にクライアントコンピュータシステム115、125は、1つ又は複数のプロセッサコアを備える1つ又は複数のプロセッサを含む。各プロセッサコアは、事前に定義された汎用命令セットに従って命令を実行するための回路構成を含む。例えばx86命令セットアーキテクチャを選択してよい。あるいはARM(登録商標)、Alpha(登録商標)、PowerPC(登録商標)、SPARC(登録商標)又は他のいずれの汎用命令セットアーキテクチャを選択してよい。プロセッサコアは、データ及びコンピュータプログラム命令のためのキャッシュメモリサブシステムにアクセスしてよい。上記キャッシュサブシステムは、ランダムアクセスメモリ(random access memory:RAM)及びストレージデバイスを備えるメモリ階層に接続してよい。
【0019】
ここで
図2を参照すると、媒体の有向非巡回グラフ(DAG)200を示すブロック図が示されている。また
図2は、各ボリュームに関して、ストレージシステムによって使用されている間にボリュームがどの媒体にマッピングされるかを示す、ボリューム−媒体間マッピングテーブル205も示す。ボリュームはグラフ200への考えられるポインタであり得る。
【0020】
本明細書で使用される用語「媒体(medium)」は、データの論理グループ化として定義される。媒体は、データの論理グループ化を識別するための対応する識別子を有してよい。各媒体はまた、コンテンツ位置、重複排除エントリ及びその他の情報に対する論理ブロック番号のマッピングを含むか、又はこれに関連してよい。一実施形態では、媒体の識別子をストレージコントローラが使用してよいが、媒体の識別子はユーザ管理下でなくてよい。ユーザ(又はクライアント)は、ボリュームIDに付随するデータ要求を送信して、この要求がどのデータを標的とするかを特定してよく、ストレージコントローラはボリュームIDを媒体IDに対してマッピングして、上記要求を処理する際に媒体IDを使用してよい。
【0021】
用語「媒体」を用語「ストレージ媒体(storage medium)」又は「コンピュータ可読ストレージ媒体(computer readable storage medium)」と混同してはならない。ストレージ媒体は、データを記憶するために利用される実際の物理デバイス(例えばSSD、HDD)として定義される。コンピュータ可読ストレージ媒体(又は非一時的コンピュータ可読ストレージ媒体)は、プロセッサ又はその他のハードウェアデバイスが実行できるプログラム命令を記憶するよう構成された物理ストレージ媒体として定義される。本明細書に記載の方法及び/又はメカニズムを実装する様々なタイプのプログラム命令を、コンピュータ可読媒体上で搬送又は記憶してよい。プログラム命令を記憶するよう構成された多数のタイプの媒体利用手可能であり、これにはハードディスク、フロッピー(登録商標)ディスク、CD−ROM、DVD、フラッシュメモリ、プログラマブルROM(Programmable ROM:PROM)、ランダムアクセスメモリ(RAM)、他の様々な形態の揮発性又は不揮発性ストレージが含まれる。
【0022】
また、用語「ボリューム−媒体間マッピングテーブル(volume to medium mapping table)」は、単なる単一のテーブルではなく複数のテーブルを指してよいことにも留意されたい。同様に用語「媒体マッピングテーブル(medium mapping table)」も、単なる単一のテーブルではなく複数のテーブルを指してよい。更に、ボリューム−媒体間マッピングテーブル205は、ボリューム−媒体間マッピングテーブルの一例にすぎないことにも留意されたい。他のボリューム−媒体間マッピングテーブルは、異なる個数のボリュームのための異なる個数のエントリを有してよい。
【0023】
各媒体を、3つの結合されたボックスとしてグラフ200に示し、左のボックスは媒体IDを示し、中央のボックスは下層媒体を示し、右のボックスは媒体のステータス(RO:読み出し専用(read−only))又は(RW:読み書き(read−write))を示す。グラフ200内では、媒体はその下層媒体を指す。例えば媒体20は媒体12を指し、これによって媒体12が媒体20の下層媒体であることを表す。また媒体12は媒体10を指し、媒体10は媒体5を指し、媒体5は媒体1を指す。いくつかの媒体は、2つ以上の高次の媒体に対する下層媒体となる。例えば3つの別個の媒体(12、17、11)は媒体10を指し、2つの別個の媒体(18、10)は媒体5を指し、2つの別個の媒体(6、5)は媒体1を指す。少なくとも1つの高次媒体に対する下層媒体となる媒体はそれぞれ、読み出し専用のステータスを有する。
【0024】
グラフ200の左下の媒体のセットは、線形セットの例である。グラフ200に示すように、まず媒体3が生成され、続いてスナップショットが実行され、その結果媒体3は安定する(即ちこの時点以降、媒体3内の所定のブロックの探索の結果が常に同一の値を返すことになる)。媒体3を下層媒体として用いて、媒体7が生成される。媒体3が安定した後に書かれるいずれのブロックは、媒体7内にあるものとして標識される。媒体7に対する探索は、媒体7内に値が見つかる場合は媒体7から値を返すが、媒体7内にブロックが見つからない場合は媒体3を探索することになる。その後媒体7のスナップショットを実行し、媒体7は安定となり、媒体14が生成される。媒体14内のブロックの探索により、媒体7、続いて媒体3を検査して、標的論理ブロックを見つける。最後に媒体14のスナップショットを実行し、媒体14は安定となり、媒体15が生成される。グラフ200のこの時点において媒体14は、媒体15へと向かうボリューム102への書き込みによって安定となる。
【0025】
ボリューム−媒体間マッピングテーブル205は、ユーザ管理下のボリュームを媒体に対してマッピングする。各ボリュームは、アンカー媒体としても知られる単一の媒体に対してマッピングしてよい。このアンカー媒体は、他の全ての媒体と同様に、それ固有の探索を処理してよい。複数のボリュームが依存する媒体(例えば媒体10)は、それ自体の複数のブロックを、これらブロックが依存するボリュームとは別個に追跡する。各媒体をブロックの範囲に分解してもよく、各範囲を媒体のDAG200内で別個に処理してよい。
【0026】
ここで
図3を参照すると、媒体マッピングテーブル300の一実施形態を示す。媒体マッピングテーブル300のいずれの部分又は全体は、ストレージコントローラ110及び/又はストレージデバイス135A〜Nのうちの1つ若しくは複数に記憶してよい。ボリューム識別子(ID)を使用してボリューム−媒体間マッピングテーブル205にアクセスし、このボリュームIDに対応する媒体IDを決定してよい。次にこの媒体IDを使用して媒体マッピングテーブル300にアクセスしてよい。なおテーブル300は媒体マッピングテーブルの単なる一例であり、他の実施形態では、異なる個数のエントリを有する異なる媒体マッピングテーブルを利用してよい。更に他の実施形態では、媒体マッピングテーブルは他の属性を含んでよく、
図3に示したものとは異なる方法で整理されてよい。
【0027】
テーブル300の左列に示すように、媒体IDによって各媒体を識別してよい。テーブル300の各エントリに範囲属性も含んでよく、この範囲はデータブロックに関するものであってよい。データのブロックのサイズ(例えば4KB、8KB)は、実施形態に応じて変化し得る。媒体は複数の範囲に分解してよく、媒体の各範囲を、固有の属性及びマッピングを有する独立した媒体であるかのように処理してよい。例えば媒体ID2は2つの別個の範囲を有する。媒体ID2の範囲0〜99は、テーブル300内で媒体ID2の範囲100〜999のためのエントリから離間したエントリを有する。
【0028】
媒体ID2のこれらの範囲を共に下層媒体ID1に対してマッピングするが、同一のソース媒体の別個の範囲を異なる下層媒体に対してマッピングすることもできる。例えば媒体ID35の別個の範囲を別個の下層媒体に対してマッピングする。例えば媒体ID35の範囲0〜299を、オフセット400で下層媒体ID18に対してマッピングする。これは、媒体ID35のブロック0〜299を媒体ID18のブロック400〜699に対してマッピングすることを示す。更に媒体ID35の範囲300〜499を、〜300のオフセットで下層媒体ID33に対してマッピングし、媒体ID35の範囲500〜899を、〜400のオフセットで下層媒体ID5に対してマッピングする。これらのエントリは、媒体ID35のブロック300〜499が媒体ID33のブロック0〜199に対してマッピングされ、媒体ID35のブロック500〜899が媒体ID5のブロック100〜499に対してマッピングされることを示す。なお他の実施形態では、媒体は4つ以上の範囲に分解してよい。
【0029】
テーブル300の「状態」列は、ブロックのための探索をより効率的に実行できるようにする情報を記録する。状態「Q」は、媒体が静止状態(quiescent)であることを示し、「R」は媒体が登録状態(registered)であることを示し、「U」は媒体が非マスク状態(unmasked)であることを示す。静止状態では、テーブル300内で特定された1つ又は2つの媒体だけに対して探索を実行する。登録状態では、探索を再帰的に実行する。非マスク状態は、探索を基底媒体において実行するべきか、又は探索を下層媒体においてのみ実行するべきかを決定する。いずれのエントリに関してテーブル300には示されていないが、別の状態「X」を用いて、ソース媒体が非マッピング状態であることを特定してよい。この非マッピング状態は、ソース媒体が到達可能なデータを全く含まず、破棄できることを示す。この非マッピング状態はソース媒体の範囲に適用してよい。媒体全体が非マッピング状態である場合、媒体IDをシーケンス無効化テーブルに入力して最終的に破棄してよい。
【0030】
一実施形態では、媒体が生成されると、この媒体が下層媒体を有する場合はこの媒体は登録状態となり、又はこの媒体が既存の状態を有さない新規のボリュームである場合はこの媒体は静止状態となる。媒体に書き込みが行われると、この媒体の一部は非マスク状態となり得、媒体自体及び下層媒体内にマッピングが存在する。これは、単一の範囲を複数の範囲のエントリに分割することによって実行でき、上記複数の範囲のエントリのうちのいくつかは、初期のマスク状態に保持され、その他は非マスク状態として記録される。
【0031】
更にテーブル300内の各エントリは、基底属性を含んでよく、これは媒体の基底を示し、これはこの場合ソース媒体自体を指す。各エントリはまた、オフセットフィールドを含んでよく、これは下層媒体に対してソース媒体にマッピングする際にブロックのアドレスに適用するべきオフセットを特定する。これにより媒体は、下層媒体の開始ブロックから下層媒体の頂部に構成されるだけではなく、下層媒体内の他の位置に対してマッピングできる。テーブル300に示すように、媒体8は500のオフセットを有し、これは媒体8のブロック0を下層媒体(媒体1)のブロック500に対してマッピングすることを示す。従って媒体8による媒体1の探索は、500のオフセットを、その要求の初期ブロック番号に付加することになる。「オフセット」の行により、媒体を複数の媒体で構成できる。例えば一実施形態では、媒体は「ゴールドマスター(gold master)」オペレーティングシステム画像及びVM(仮想マシン)毎のスクラッチスペースからなる。その他の柔軟なマッピングも可能であり、考察の対象となる。
【0032】
各エントリは下層媒体属性も含み、これはソース媒体の下層媒体を示す。(媒体1と同様に)下層媒体がソース媒体を指す場合、これはソース媒体が下層媒体を有さず、全ての探索はソース媒体のみにおいて実行されることを示す。各エントリは安定属性も含み、「Y」(yes:はい)は媒体が安定であること(又は読み出し専用であること)を示し、「N」(no:いいえ)は媒体が読み書き可能であることを示す。安定である媒体では、媒体内の所定のブロックに対応するデータは変化しないが、このデータを生成するマッピングは変化し得る。例えば媒体2は安定であるが、媒体2のブロック50は媒体2又は媒体1に記録してよく、媒体2及び媒体1はこの順に論理的に探索されるが、この探索は必要に応じて並列に実行してよい。一実施形態では、媒体がこれ自体以外のいずれの媒体によって下層媒体として使用される場合、この媒体は安定となる。
【0033】
ここで
図4を参照すると、コピーオフロード動作の一実施形態を示す。
図4に示すコピーオフロード動作は、ボリューム8のブロック400〜599はボリューム12のブロック850〜1049にコピーされることになることを特定する。ボリューム8及びボリューム12の論理表現を、連続データ構造として
図4に示しているが、ボリューム8及びボリューム12に対応するデータは、ホストストレージシステムのストレージデバイス全体に亘って、多数の別個の非連続的な位置に配置され得ることを理解されたい。
【0034】
ストレージコントローラは、このコピーオフロード動作を実行するための要求の受信に応答して、ボリューム8及びボリューム12がどの媒体を指すかを決定できる。一実施形態では、ストレージコントローラはボリューム−媒体間マッピングテーブルに問い合わせを行うことによって、ボリューム8及びボリューム12のアンカー媒体を決定してよい。この議論の目的に関して、(コピーオフロード動作実行前のボリューム−媒体間マッピングテーブルの2つのエントリを表すボリューム−媒体間マッピングテーブル405Aに示すように)ボリューム8のアンカー媒体が媒体123である、及びボリューム12のアンカー媒体が媒体234であると考えられる。また媒体マッピングテーブル410Aは、コピーオフロード動作実行前の媒体マッピングテーブルの2つのエントリを表す。
【0035】
要求されたコピーオフロード動作を実行するために、ストレージコントローラは媒体「x」を生成してよく、媒体xの下層媒体として媒体123を記録してよい。この時点において、媒体123は安定となる。値「x」は現在使用中でないいずれの媒体ID値であってよい。また、(コピーオフロード動作実行後のボリューム−媒体間マッピングテーブルの2つのエントリを表す)ボリューム−媒体間マッピングテーブル405Bに示すように、ボリューム8は媒体xを指すように更新してよい。更に媒体「y」を生成してよく、媒体yの下層媒体として媒体234を記録してよい。またボリューム12は媒体yを指すように更新してよい。コピーされる媒体yの範囲に関してエントリを生成してよく、このエントリは、その下層(underlying:U)媒体として媒体123を有してよい。他の範囲の媒体yのための他の全てのエントリは、下層媒体として媒体234を有してよい。これらのエントリを媒体マッピングテーブル410Bに示し、これはコピーオフロード動作実行後の媒体マッピングテーブルの一部分を表す。なお媒体マッピングテーブル410A−Bのエントリは、
図4に示しているものに対する追加の情報を含んでよい。
【0036】
上述のステップに従ってコピーオフロード動作を実行することにより、ストレージコントローラは、実際に問題のデータブロックをコピーすることなく、要求されたコピーオフロード動作を実行できる。その代わりにコピーオフロード動作は、ボリューム−媒体マッピングテーブル及び媒体マッピングテーブルに対して変更を行うだけで遂行される。その結果として、コピーオフロード動作を実装するにあたって即時データ書き込みは実行されず、コピーオフロード動作を最小のリソース利用によって迅速に実行できる。
【0037】
コピーオフロード動作の上述の説明はまた、他のタイプのコピーオフロード動作を実行する異なる実施形態にも応用できる。例えば別の実施形態では、第1のボリュームの第1の範囲から複数の別個のボリュームに対してコピーオフロード動作を要求してよい。このコピーオフロード動作に関して、媒体「x」及びボリューム8に対応する上述の複数のステップを、ソースボリュームに対して1回実行してよい。媒体「y」及びボリューム12に対応する複数のステップを、このコピーオフロード動作の標的である各対象ボリュームに関して反復してよく、各対象ボリュームに関して新規の媒体を生成する。
【0038】
いくつかの実施形態では、コピーオフロード動作を実行するための上述の複数のステップは、コピーオフロード動作を実行するための要求の受信後すぐに実装するのではなく、バッファリングしてよい。複数のコピーオフロード動作をバッファリングして、これを後にバッチ・モードで実行してよい。更にいくつかの実施形態では、ソースボリュームに対応するコピーオフロード動作の複数のステップを、ソースボリュームを標的とする要求をストレージコントローラが受信するまで遅延させてよい。この時点において、ソースボリュームに対応するコピーオフロード動作の一部分を実行してよい。同様に対象ボリュームに対応するコピーオフロード動作の複数のステップを、対象ボリュームを標的とする要求をストレージコントローラが受信するまで遅延させてよい。
【0039】
ここで
図5を参照すると、コピーオフロード動作の別の実施形態のブロック図が示されている。このコピーオフロード動作では、複数のデータブロックのセットが、あるボリューム内の第1の位置から、同じボリューム内の第2の位置へとコピーされている。ボリューム35の論理表現を
図5に示しており、データは位置200〜499から位置1800〜2099へとコピーされる。この議論の目的に関して、媒体355はテーブル505Aに示すように、ボリューム35のアンカー媒体であると考えられる。媒体355に関するエントリを媒体マッピングテーブル510Aに示しており、コピーオフロード動作実行前の媒体マッピングテーブルの1つのエントリの代表例である。
【0040】
一実施形態では、このコピーオフロード動作を実行するための要求の受信に応答して、ストレージコントローラは新規の媒体「z」を生成してよい。テーブル505Bに示すように、媒体zはボリューム35のアンカー媒体として記録してよい。また、媒体zに関する3つの別個のエントリを、媒体マッピングテーブル(その一部分をテーブル510Bに示す)に追加してよい。媒体zに関する第1のエントリは、データブロックの範囲0〜1799のためのものであり、これに対する下層(U)媒体は媒体355として記録される。第1のエントリのためのオフセットは0に設定される。同様に、データブロックの範囲2100〜Nのための、媒体zに関する第3のエントリは、第1のエントリと同一の属性を有する。第1のエントリ及び第3のエントリはそれぞれ0のオフセットを有し、これは下層媒体(媒体355)に対するマッピング時に使用される。媒体zに関する第2のエントリは、コピーされたデータが標的とする範囲(1800〜2099)に対応する。第2のエントリはまた、その下層媒体として記録された媒体355を有する。しかしながらこの第2のエントリは〜1600のオフセットを有し、これにより、コピーオフロード動作において特定されたデータに対応する媒体355内の正しい位置に対してマッピングできる。
【0041】
上述の技術を用いることによって、ストレージコントローラは、問題のデータブロックを物理的にコピーすることなく、要求されたコピーオフロード動作を達成できる。寧ろコピーオフロード動作は、データブロックにアクセスせずにボリューム及び媒体マッピングテーブルを操作するだけで実行される。コピーのために要求されるデータが記憶されている実際の物理ストレージ位置は、このコピーオフロード動作中にアクセスされることはない。
【0042】
ここで
図6に移ると、コピーオフロード動作を実行するための方法600の一実施形態が示されている。上述のシステム100に統合されている構成部品(例えばストレージコントローラ110)は一般に、方法600に従って動作し得る。更にこの実施形態のステップを順番に示す。しかしながら別の実施形態では、いくつかのステップは図示したものと異なる順序で実行してよく、いくつかのステップは同時に実行してよく、いくつかのステップは他のステップと組み合わせてよく、またいくつかのステップが存在しなくてもよい。
【0043】
第1のボリュームの第1の範囲から第2のボリュームの第2の範囲へのコピーオフロード動作を実行するための要求を、ストレージコントローラが受信してよい(ブロック605)。この議論の目的に関して、第1のボリュームは第1の媒体に関連する(即ち第1の媒体を指す)と考えられる。また第2のボリュームは第2の媒体を指すと考えられる。一実施形態では、これらの関連はボリューム−媒体マッピングテーブルに問い合わせを行うことによって決定してよい。
【0044】
この要求の受信に応答して、第3の媒体を生成してよく、媒体マッピングテーブルにおいてこの第3の媒体に関する新規のエントリを生成してよい(ブロック610)。様々な実施形態では、新規の媒体の生成プロセスは、この媒体に関する新規のIDを生成して、媒体マッピングテーブルにおいて上記媒体に関する新規のエントリを生成することを伴う。第3の媒体の下層媒体として第1の媒体を指定する指示を記憶してよい(ブロック615)。一実施形態では、ブロック615は、媒体マッピングテーブルの新規のエントリに第3の媒体の下層媒体として第1の媒体を記録することによって実装してよい。
【0045】
続いてボリューム−媒体間マッピングテーブルを更新して、第1のボリュームを第3の媒体に関連させてよい(ブロック620)。換言すると、第3の媒体を第1のボリュームのアンカー媒体として特定してよい。また、第1の媒体を読み出し専用(即ち安定)として特定するインジケータを記憶してよい(ブロック625)。一実施形態では、このインジケータを媒体マッピングテーブル内の対応するエントリに記憶してよい。
【0046】
更に第4の媒体を生成してよく、媒体マッピングテーブル内でこの第4の媒体に関する新規のエントリを生成してよい(ブロック630)。第2の媒体を、第4の媒体の下層媒体として指定してよい(ブロック635)。また、第1の媒体の第1の範囲が第4の媒体の第2の範囲の下層となるよう指定するインジケータを記憶してよい(ブロック640)。第4の媒体の第2の範囲に関して、別個の範囲のエントリを媒体マッピングテーブル内に生成してよく、この別個の範囲のエントリは、第4の媒体の第2の範囲を第1の媒体の第1の範囲に対してマッピングできる。一実施形態では、オフセット値をこの範囲のエントリに含むことにより、第4の媒体の第2の範囲を第1の媒体の第1の範囲に対して整列させる方法を特定してよい。第2の媒体は、第4の媒体の他の全ての範囲に関して下層媒体として保持され得る。
【0047】
更に第4の媒体を、第2のボリュームのアンカー媒体として特定してよい(ブロック645)。また更に、第2の媒体を読み出し専用と特定するインジケータを記憶してよい(ブロック650)。ブロック650の後、方法600を終了してよい。上述の方法を用いて、いずれの数のコピーオフロード動作を並行して実行してよい。なお上述のステップのうちのいくつかを、コピーオフセット動作が作用するボリュームの領域を標的とする読み出し又は書き込み動作が受信されるまで遅延させてよい。
【0048】
ここで
図7を参照すると、コピーオフロード動作のための別の方法700の一実施形態が示されている。上述のシステム100に統合されている構成部品(例えばストレージコントローラ110)は一般に、方法700に従って動作し得る。更にこの実施形態のステップを順番に示す。しかしながら別の実施形態では、いくつかのステップは図示したものと異なる順序で実行してよく、いくつかのステップは同時に実行してよく、いくつかのステップは他のステップと組み合わせてよく、またいくつかのステップが存在しなくてもよい。
【0049】
コピーオフロード動作を実行するための要求をストレージコントローラが受信してよい(ブロック705)。この議論の目的に関して、コピーオフロード動作の目標は、第1のボリュームの第1の範囲から第2のボリュームの第2の範囲にコピーされることになるデータであると考えられる。しかしながら他の動作は、異なるソース及び/又は対象を有してよい。要求の受信に応答して、受信したコピーオフロード要求に対応する動作は、即座に実行するのではなくバッファリングしてよい(ブロック710)。様々な実施形態では、複数の動作を別個にバッファリングしてよい。例えば第1のボリュームの第1の範囲を後続の要求が標的とした時に、第1のボリュームに対応する動作を生成し、バッファリングし、実行準備状態としてよい。同様に、第2のボリュームの第2の範囲が標的とされた時に、第2のボリュームに対応する動作を生成し、バッファリングし、実行準備状態とする。
【0050】
ブロック710の後、ストレージコントローラが、過去に受信したコピーオフロード動作が作用する領域を標的とする読み出し又は書き込み要求を受信したかどうかを決定してよい(条件ブロック715)。作用される位置を標的とする要求が受信されていなかった場合(条件ブロック715の「いいえ(No)」分岐)、ストレージコントローラは、1つ又は複数のバッファリングされたコピーオフロード動作の実行を防止できる(ブロック720)。ブロック720の後、別のコピーオフロード要求を受信したかどうかを決定してよい(ブロック725)。コピーオフロード要求が受信されていた場合(条件ブロック725の「はい(Yes)」分岐)、方法700はブロック710に戻り、受信したコピーオフロード要求を実行できる。なお、ストレージコントローラは、コピーオフロード要求を(ブロック725が表す時点だけではなく)いずれの時点において受信してよく、この場合方法700はこれに従ってブロック710にジャンプして、受信したコピーオフロード要求をバッファリングしてよい。コピーオフロード要求が受信されていなかった場合(条件725の「いいえ」分岐)、方法700はブロック715に戻り、バッファリングされたコピーオフロード要求に対応する領域を標的とする要求を受信したかどうかを決定してよい。
【0051】
作用される位置を標的とする要求が受信されていた場合(条件ブロック715の「はい」分岐)、ストレージコントローラによって対応するコピーオフロード動作を実行してよい(ブロック730)。バッファリングされたコピーオフロード動作は、ソースボリューム及び対象ボリュームを標的としてよく、受信された要求がこれらのボリュームのうちの1つのみを標的とする場合、上記作用されるボリュームを標的とするコピーオフロード動作のみを実行してよい。コピーオフロード動作のその他の部分はバッファリングされたままであってよく、(対応するボリューム内における上記部分の位置が標的とされた場合、又は処理リソースがアイドル状態であり、使用できる状態である場合に)後の時点で実行してよい。ブロック730の後、方法700はブロック725に戻り、別のコピーオフロード要求を受信したかどうかを決定してよい。
【0052】
作用される領域(又はボリューム)を標的とする後続の要求が受信されるまで、コピーオフロード動作の実行を待機することによって、ストレージシステムの処理リソースを、他のタスクを実行できるよう自由にすることができる。コピーオフロード動作のバッファリングはまた、追加の媒体の生成を、それが実際に必要となるまで防止することによって補助できる。ストレージシステムに不要な負荷を与えることなく、複数のコピーオフロード動作を受信してバッファリングできる。また、ストレージシステムのリソースが利用可能な期間中、ストレージコントローラはアイドル状態の処理性能を用いて、多数のバッファリングされたコピーオフロード動作を実行してよい。このようにして、ストレージシステムが実行している他のタスクに干渉することなく、コピーオフロード動作を実行できる。従っていくつかの実施形態では、ブロック710が指示するように、全ての受信したコピーオフロード動作をバッファリングするのではなく、ストレージコントローラは、受信したコピーオフロード動作がケースバイケースでバッファリングされているかどうかを決定してよい。この決定は、少なくともストレージシステムの現在の実行条件(例えば処理負荷、ストレージ利用、保留中の要求の個数)に基づいてよい。他の実施形態では、受信したコピーオフロード動作を自動的にバッファリングしてよく、またバッファリングされるコピーオフロード動作の個数が閾値を超えると、ストレージコントローラは、バッチ・モードで複数のコピーオフロード動作を実行してよい。これらの実施形態では、作用される領域を標的とするデータ要求を受信すると、対応するバッファリングされたコピーオフロード動作を、その他のコピーオフロード動作がバッファリングされたままの状態で実行してよい。
【0053】
なお上述の実施形態はソフトウェアを備えてよい。このような実施形態では、本方法及び/又は機構を実装するプログラム命令を、コンピュータ可読媒体上で搬送又は記憶してよい。プログラム命令を記憶するよう構成された多数のタイプの媒体が利用可能であり、これにはハードディスク、フロッピーディスク、CD−ROM、DVD、フラッシュメモリ、プログラマブルROM(PROM)、ランダムアクセスメモリ(RAM)、他の様々な形態の揮発性又は不揮発性ストレージが含まれる。
【0054】
様々な実施形態において、本明細書に記載の方法及び機構の1つ又は複数の部分は、クラウドコンピューティング環境の一部を形成してよい。このような実施形態では、1つ又は複数の様々なモデルに従って、必要に応じてインターネットを介してリソースを提供してよい。このようなモデルは、インフラストラクチャ・アズ・ア・サービス(Infrastructure as a Service:IaaS)、プラットフォーム・アズ・ア・サービス(Platform as a Service:PaaS)、ソフトウェア・アズ・ア・サービス(Software as a Service:SaaS)を含んでよい。IaaSでは、コンピュータインフラストラクチャを必要に応じて提供する。このような場合、一般にサービスプロバイダがコンピュータ設備を所有し、動作させる。PaaSモデルでは、サービスプロバイダが、開発者がソフトウェアによる解決法を開発するために使用するソフトウェアツール及びその下層設備を必要に応じて提供し、そのホストとなってよい。SaaSは典型的には、サービスに応じてソフトウェアを認可するサービスプロバイダを含む。このサービスプロバイダはソフトウェアのホストとなってよく、又はソフトウェアを所定の期間だけカスタマに対して配備してよい。上述のモデルの多数の組み合わせが可能であり、考察の対象となる。
【0055】
以上の実施形態についてかなり詳細に説明したが、上述の開示を完全に理解すれば、当業者には多数の変形例及び修正例が明らかとなるであろう。以下の請求項は、これらの変形例及び修正例の全てを包含するものと解釈されることを意図したものである。