(57)【要約】【課題】コンピューティング環境におけるデータ重複排除システム中でデータ冗長性を維持するための様々な実施形態を提供すること。【解決手段】一実施形態では、このような維持の方法を開示する。データ重複排除システムを介して書き込まれることになる選択されたデータ・セグメントが重複排除操作を受けないように、選択されたデータ・セグメントが暗号化される。他のシステムおよびコンピュータ・プログラム製品の実施形態が開示され、これらは関連する利点をもたらす。【選択図】図６
2015515216.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサによってコンピューティング環境におけるデータ重複排除システム中でデータ冗長性を維持する方法であって、
前記データ重複排除システムを介して書き込まれることになる選択されたデータ・セグメントが重複排除操作を受けないように、前記選択されたデータ・セグメントを暗号化することを含む方法。
【請求項２】
前記選択されたデータ・セグメントに対する前記重複排除操作の実施が控えられるように、前記コンピューティング環境を介して前記暗号化済みの選択されたデータ・セグメントを処理するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記選択されたデータ・セグメントを暗号化することが、基礎をなす記憶コントローラ・デバイスに書込み要求を発する前に、関連する仮想デバイスについての固有の暗号化鍵で前記選択されたデータ・セグメントを暗号化することをさらに含む、請求項２に記載の方法。
【請求項４】
前記選択されたデータ・セグメントを前記固有の鍵で暗号化することが、前記選択されたデータ・セグメントについての論理ブロック・アドレス（ＬＢＡ）の開始と、ファイル内における前記選択されたデータ・セグメントのオフセットとのうちの一方に関連するように前記暗号化鍵を選択することをさらに含み、暗号化機能が、前記暗号化機能を介して処理された暗号化済みデータのサイズを保持するように選ばれる、請求項３に記載の方法。
【請求項５】
前記選択されたデータ・セグメントを暗号化することが、ユニットとして書かれた複数の選択されたデータ・セグメントを選ぶことを含み、それにより、前記複数の選択されたデータ・セグメントの各々を暗号化解除すると各セグメントごとの元のデータが返されることと、前記複数の選択されたデータ・セグメントの各々が前記ユニットとして暗号化解除されることとのうちの一方となる、請求項４に記載の方法。
【請求項６】
前記暗号化済みの選択されたデータ・セグメントを処理することが、前記コンピューティング環境における記憶コントローラ中の重複排除エンジンを介して、前記暗号化済みの選択されたデータ・セグメントに対する書込み要求を発することを含む、請求項２に記載の方法。
【請求項７】
前記暗号化済みの選択されたデータ・セグメントに対する前記書込み要求の実行中に、前記データ重複排除エンジンが、前記暗号化済みの選択されたデータ・セグメントを新しいデータ・セグメントとして認識し、前記重複排除操作の実施を控える、請求項６に記載の方法。
【請求項８】
前記選択されたデータ・セグメントの後続の読出し操作時に前記選択されたデータ・セグメントを暗号化解除することをさらに含む、請求項１に記載の方法。
【請求項９】
前記選択されたデータ・セグメントを暗号化解除することが、弱い固有の予測可能な暗号化鍵で前記選択されたデータ・セグメントを暗号化解除することを含む、請求項８に記載の方法。
【請求項１０】
コンピューティング環境におけるデータ重複排除システム中でデータ冗長性を維持するためのシステムであって、
ファイル・システム・モジュールと、
前記ファイル・システム・モジュールと動作可能に通信する記憶コントローラとを備え、
前記ファイル・システム・モジュールが、前記データ重複排除システムを介して書き込まれることになる選択されたデータ・セグメントが重複排除操作を受けないように、前記選択されたデータ・セグメントを暗号化するように構成された、システム。
【請求項１１】
前記記憶コントローラが、前記選択されたデータ・セグメントに対する前記重複排除操作の実施が控えられるように、前記コンピューティング環境を介して前記暗号化済みの選択されたデータ・セグメントを処理するように構成された、請求項１０に記載のシステム。
【請求項１２】
前記ファイル・システム・モジュールが、前記記憶コントローラに書込み要求を発する前に、関連する仮想デバイスについての固有の鍵で前記選択されたデータ・セグメントを暗号化するようにさらに構成された、請求項１１に記載のシステム。
【請求項１３】
前記暗号化鍵が、前記選択されたデータ・セグメントについての論理ブロック・アドレス（ＬＢＡ）の開始と、ファイル内における前記選択されたデータ・セグメントのオフセットとのうちの一方に関連するように選択され、暗号化機能が、前記暗号化機能を介して処理された暗号化済みデータのサイズを保持するように選ばれる、請求項１２に記載のシステム。
【請求項１４】
前記ファイル・システム・モジュールが、ユニットとして書かれた複数の選択されたデータ・セグメントを選ぶようにさらに構成され、それにより、前記複数の選択されたデータ・セグメントの各々を暗号化解除すると各セグメントごとの元のデータが返されることと、前記複数の選択されたデータ・セグメントの各々が前記ユニットとして暗号化解除されることとのうちの一方となる、請求項１３に記載のシステム。
【請求項１５】
前記記憶コントローラに関連するデータ重複排除エンジンをさらに備え、
前記ファイル・システム・モジュールが、前記重複排除エンジンを介して前記暗号化済みの選択されたデータ・セグメントに対する書込み要求を発するようにさらに構成された、請求項１１に記載のシステム。
【請求項１６】
前記暗号化済みの選択されたデータ・セグメントに対する前記書込み要求の実行中に、前記データ重複排除エンジンが、前記暗号化済みの選択されたデータ・セグメントを新しいデータ・セグメントとして認識し、前記重複排除操作の実施を控える、請求項１５に記載のシステム。
【請求項１７】
前記ファイル・システム・モジュールが、前記選択されたデータ・セグメントの後続の読出し操作時に前記選択されたデータ・セグメントを暗号化解除するようにさらに構成された、請求項１１に記載のシステム。
【請求項１８】
前記選択されたデータ・セグメントが、弱い固有の予測可能な暗号化鍵で暗号化解除される、請求項１７に記載のシステム。
【請求項１９】
プロセッサによってコンピューティング環境におけるデータ重複排除システム中でデータ冗長性を維持するためのコンピュータ・プログラムであって、コンピュータ可読プログラム・コード部分が記憶されたコンピュータ可読記憶媒体を備え、前記コンピュータ可読プログラム・コード部分が、
前記データ重複排除システムを介して書き込まれることになる選択されたデータ・セグメントが重複排除操作を受けないように、前記選択されたデータ・セグメントを暗号化するための、第１の実行可能部分を備える、コンピュータ・プログラム。
【請求項２０】
前記選択されたデータ・セグメントに対する前記重複排除操作の実施が控えられるように、前記コンピューティング環境を介して前記暗号化済みの選択されたデータ・セグメントを処理するための、第２の実行可能部分をさらに備える、請求項１９に記載のコンピュータ・プログラム。
【請求項２１】
前記選択されたデータ・セグメントを暗号化することに従って、基礎をなす記憶コントローラ・デバイスに書込み要求を発する前に、関連する仮想デバイスについての固有の暗号化鍵で前記選択されたデータ・セグメントを暗号化するための、第３の実行可能部分をさらに備える、請求項２０に記載のコンピュータ・プログラム。
【請求項２２】
前記選択されたデータ・セグメントを前記固有の暗号化鍵で暗号化することに従って、前記選択されたデータ・セグメントについての論理ブロック・アドレス（ＬＢＡ）の開始と、ファイル内における前記選択されたデータ・セグメントのオフセットとのうちの一方に関連するように前記暗号化鍵を選択するための、第４の実行可能部分をさらに備え、暗号化機能が、前記暗号化機能を介して処理された暗号化済みデータのサイズを保持するように選ばれる、請求項２１に記載のコンピュータ・プログラム。
【請求項２３】
前記選択されたデータ・セグメントを暗号化することに従って、ユニットとして書かれた複数の選択されたデータ・セグメントを選ぶための第５の実行可能部分をさらに備え、それにより、前記複数の選択されたデータ・セグメントの各々を暗号化解除すると各セグメントごとの元のデータが返されることと、前記複数の選択されたデータ・セグメントの各々が前記ユニットとして暗号化解除されることとのうちの一方となる、請求項２２に記載のコンピュータ・プログラム。
【請求項２４】
前記暗号化済みの選択されたデータ・セグメントを処理することに従って、前記コンピューティング環境における記憶コントローラ中の重複排除エンジンを介して、前記暗号化済みの選択されたデータ・セグメントに対する書込み要求を発するための、第３の実行可能部分をさらに備える、請求項２０に記載のコンピュータ・プログラム。
【請求項２５】
前記暗号化済みの選択されたデータ・セグメントに対する前記書込み要求の実行中に、前記データ重複排除エンジンが、前記暗号化済みの選択されたデータ・セグメントを新しいデータ・セグメントとして認識し、前記重複排除操作の実施を控える、請求項２４に記載のコンピュータ・プログラム。
【請求項２６】
前記選択されたデータ・セグメントの後続の読出し操作時に前記選択されたデータ・セグメントを暗号化解除するための第３の実行可能部分をさらに備える、請求項２０に記載のコンピュータ・プログラム。
【請求項２７】
前記選択されたデータ・セグメントを暗号化解除することに従って、弱い固有の予測可能な暗号化鍵で前記選択されたデータ・セグメントを暗号化解除するための、第４の実行可能部分をさらに備える、請求項２６に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータに関し、より詳細には、データ重複排除システム（datadeduplication system）が組み込まれたコンピューティング環境で冗長性および他のデータ・セキュリティ特性を維持するための方法、システム、およびコンピュータ・プログラムに関する。
【背景技術】
【０００２】
コンピュータおよびコンピュータ・システムは、今日の社会において様々な場に見出される。コンピューティング環境およびネットワークは、家庭、職場、学校、政治、および他の場に見出すことができる。コンピューティング環境はますますデータを１つまたは複数の記憶環境で記憶しているが、これらの記憶環境は、多くの場合、ユーザに提示されるローカル・インタフェースから離れている。
【０００３】
これらのコンピューティング記憶環境は、ディスク・ドライブなど、しばしば共同で働く多くの記憶デバイスを使用して、多量のデータの記憶、取出し、および更新を行うことができ、次いでこのデータを、データの要求元または送信元であるホスト・コンピュータに提供することができる。場合によっては、いくつかのデータ記憶サブシステムが、単一のデータ記憶システムとして一括管理される。これらのサブシステムは、ホスト「シスプレックス（ｓｙｓｐｌｅｘ）」（システム・コンプレックス）構成によって管理されてよく、これらの構成は、いくつかの処理ユニットを、または処理ユニットのクラスタを結合する。このようにすれば、様々なタイプの記憶デバイスをしばしば含む多層／多システム・コンピューティング環境を使用して、大量のデータを整理および処理することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
多くの多層／多システム・コンピューティング環境は、データ重複排除技術を実装して、記憶デバイスにまたがる複製される記憶域の量を削減することによって記憶性能を向上させる。データ重複排除システムは、データを記憶するのに必要とされる物理記憶域の総量を削減するのに役立つので、ますます利用されつつある。この削減は、重複するデータが複数回にわたって記憶されることが確実にないようにすることによって達成される。そうではなく、例えば、データ・チャンクが、既に記憶済みのデータ・チャンクと一致する場合は、新しいデータ・チャンクに新しい物理記憶空間を割り振るのではなく、元のデータへのポインタを仮想記憶マップに記憶する。
【０００５】
しかし、状況によっては、重複排除の挙動は、例えばホストされるアプリケーションの冗長性要件、または記憶ポリシ、または他の要件に反する場合がある。冗長性要件を有するデータが保護され、しかもなお、そのような要件を有さない残りのデータには重複排除を行えるようにすることによって、重複排除システムの利益が減少しないメカニズムが必要とされている。
【課題を解決するための手段】
【０００６】
以上に鑑みて、データ重複排除システム中でデータ冗長性を維持するための様々な実施形態を開示する。一実施形態では、単なる例として、このような維持の方法を開示する。データ重複排除システムを介して書き込まれることになる選択されたデータ・セグメントが重複排除操作を受けないように、選択されたデータ・セグメントが暗号化される。
【０００７】
前述の例示的な実施形態に加えて、様々なシステムおよびコンピュータ・プログラム実施形態も提供され、これらは、関連する利点をもたらす。
【０００８】
本発明の利点が容易に理解されるように、上に簡単に述べた本発明に関するより詳しい記述を、添付の図面に示す特定の実施形態を参照することにより提供する。これらの図面は本発明の典型的な実施形態のみを示し、したがって本発明の範囲を限定するものと見なすべきでないことを理解した上で、添付の図面を使用してさらに具体的かつ詳細に本発明について記述および説明する。
【図面の簡単な説明】
【０００９】
【図１】本発明の態様を実装できる例示的なコンピューティング環境を示すブロック図である。
【図２】やはり本発明の態様をその中で実装できる、データ記憶システムのハードウェア構造を示すブロック図である。
【図３】本発明の態様をその中で実装できる、例示的なデータ・セグメントのブロック図である。
【図４】暗号化された書込みデータを得るための、暗号化モジュールを介した例示的なデータ書込みプロセスのブロック図である。
【図５】暗号化された書込みデータを、データ重複排除エンジンおよびキャッシュを介して物理記憶域に書き込む例示的なプロセスの関連ブロック図である。
【図６】本発明による、データ重複排除システム中で冗長性を保証するための例示的な方法の図である。
【図７】本発明の態様をその中で実装できる例示的なデータ処理方法の図である。
【図８】やはり本発明の態様をその中で実装できる、追加の例示的なデータ処理方法の図である。
【発明を実施するための形態】
【００１０】
記憶コントローラにおけるデータ重複排除は、通常はアプリケーションの「陰で」働き、また、重複排除操作がアプリケーションのニーズに反して実施されるときにアプリケーションの利益とは逆に作用することがある。この状況は、アプリケーションが、同じデータの複数のコピーを書き込んで複数の物理コピーを保持しようとするが、重複排除サブシステム（重複排除エンジン）がこれらの一致するコピーを見つけ、コピーの重複を排除してデータを記憶してしまう場合に、生じることがある。このことは、アプリケーションにとって不利益である可能性があり、そのアプリケーションは、様々な場所で複数のコピーを見出すことを予期し、またそのようにしたと記憶サブシステムによって思わされるが、実際にはデータの単一のコピーしか書き込まれていない。
【００１１】
次の例を考えてみる。ファイル・システムは普通、「スーパーブロック」すなわち、ブロックベースの記憶デバイス上のファイル・システムを記述するメタデータのセグメント（または他のメタデータ情報）の、複数の物理コピーを仮想ディスクに書き込んで、冗長性を保証することを好む。スーパーブロックの内容は同じなので、データ重複排除の結果、スーパーブロックの単一の物理コピーが保持されることになり、同じ物理ブロックへ複数の仮想アドレスがポイントされることになる。この状況は、きわめて不得策である。というのは、スーパーブロックの冗長コピーがないので、スーパーブロックの物理コピー上の単一ブロックが損失すれば、ファイル・システムが完全に使用不可能になるからである。従来、データ重複排除システムにおけるこの問題に直接に対処する既存の方法はない。
【００１２】
様々な間接的な方法を利用して、この問題への対処を試みることはできる。一例では、データ重複排除サブシステムが物理記憶域を切り分ける元となる記憶域プールを、ミラーリングすることができる（すなわち、同じデータのコピーを２つまたは３つ含む）。よって、重複排除にもかかわらず、複数の冗長コピーを生み出すことができる。しかしこれは、次の理由で、アプリケーションに対する保護として不十分である。第１に、アプリケーションは、同じデータのコピーを、例えば１０個保持したい場合がある。しかし、記憶域プールが２方向ミラーリングされる場合、記憶域プールは、最大２つのコピーしか保持できない。第２に、データ重複排除は、大量の記憶域および複数のファイル・システムにわたる物理記憶域プールを切り分けるので、複数のアプリケーションおよびファイル・システムが、同じ物理記憶域プールを共有する可能性が高い。よって、データ（スーパーブロックのような）の、いくつかのクリティカルなコピーが、同じディスク上に物理的に配置される可能性がある。重複排除は、同じデータの複数のコピーが複数の物理位置に書き込まれないようにすることになるので、クリティカルなデータのコピーの数が減少し、これらのコピーは、複数のファイル・システムについて同じ物理ディスク上に配置される可能性がある。これにより、単一の障害が致命的になるリスクが増大する。
【００１３】
例証する実施形態は、上に論じた問題に対処するための複数のメカニズムを提供する。これらのメカニズムの目標の１つは、記憶コントローラ中の（またはどこに位置しようと）重複排除サブシステムが、クリティカルなデータの複数のコピーを物理的に割り振るアプリケーション要件に対して、データのコピー数を削減する利益のバランスをとることを保証することである。後続の例証する実施形態で述べる各方法は、様々な状況で使用されてよく、これらの状況に特有の付随する利益を有することができる。
【００１４】
このような一実施形態では、選択されたデータ・セグメント（ブロックなど）を、所有元アプリケーションによって暗号化することができ、それにより、データ重複排除システムを「騙して」、選択されたデータが複製でない新しいデータであり新しい記憶空間に割り振られなければならないと思わせることができる。例えば、所有元アプリケーションが同一データの複数の物理コピーを記憶しなければならないデータ・ブロックの場合、アプリケーションは、データ・ブロックの開始論理ブロック・アドレス（ＬＢＡ）（または別法として、コピー番号など、追加のメタデータ記憶空間を必要としない、データ・ブロックに対する何らかの他のよく知られた鍵（例えば、第１のコピーは鍵１で暗号化され、第２のコピーは鍵２で暗号化される等））でデータを暗号化することができる。同一のコピーを異なる鍵で暗号化することにより、これらのコピーは、調べている重複排除エンジンの目には「異なって」見えることになり、したがって、重複排除エンジンを組み込んだ記憶コントローラまたは他の記憶管理デバイスがブロックの重複を排除しないことが保証される。
【００１５】
前述の暗号化技法は、記憶コントローラ（またはやはり、任意の記憶管理デバイス）が所望の特性を実装するために何も変更する必要がないという利点を有する。所有元アプリケーションもやはり、単純な技法を使用して記憶コントローラを「騙し」または「かつぎ」、これを、余分なオーバヘッドも、かなりの処理またはリソース割振りも被ることなく行う（例えば、当業者なら理解するように、追加のメタデータ記憶オーバヘッドを被るが、追加のリソースを維持する）。
【００１６】
述べた実施形態に鑑みて、書込みが暗号化されなければならないかどうかをアプリケーションが指示する（かつ、それにより、どのデータの重複排除を見送るかを決定する）ことができるようにすることによって、アプリケーションには、アプリケーションが生成するデータに関連する記憶ポリシを実施するためのフレキシビリティが与えられる。このようにして、アプリケーションは、選択されたデータ・ブロックが同一であってもなお別々の物理位置になければならないかどうか判定するのに、重複排除システムよりも優位な立場にある。加えて、記憶コントローラ（または他の記憶管理デバイス）は、重複排除によるデータ削減というその役割を実施し続けると同時に、必要時には重複排除を除外するためにアプリケーションに対する十分な制御が与えられる。
【００１７】
選択されたデータ・チャンクを、暗号化されるものとして指定することによって、非常にきめの細かい制御がアプリケーションに提供され、実装のフレキシビリティがもたらされるがなお、重複排除機能の利点は保持され、重要なデータについては冗長性が保持される。
【００１８】
後続の記述では、本明細書の一部をなし本発明のいくつかの実施形態を示す添付の図面を参照する。本発明の範囲を逸脱することなく、他の実施形態を利用してもよいこと、ならびに、構造上および動作上の変更を加えてもよいことを理解されたい。
【００１９】
図１に目を向けると、本発明の態様をその中で実現できる例示的なコンピュータ・システム１０が描かれている。コンピュータ・システム１０は中央処理装置（ＣＰＵ）１２を含み、ＣＰＵ１２は、大容量記憶デバイス（複数可）１４およびメモリ・デバイス１６に接続される。大容量記憶デバイスは、ハード・ディスク・ドライブ（ＨＤＤ）デバイスを含んでよく、ＨＤＤデバイスは、独立ディスク冗長アレイ（ＲＡＩＤ）に構成されてよい。後述するように本発明の態様をその中で実装できるデータ管理操作は、システム１０中にまたは他の場所に位置するデバイス（複数可）１４に対して実行されてよい。メモリ・デバイス１６は、電気的消去可能プログラム可能な読取専用メモリ（ＥＥＰＲＯＭ）などのメモリ、または多数の関連デバイスを含んでよい。
【００２０】
メモリ１６は、アプリケーション・プログラム１５およびアプリケーション・プログラム１７を含んで示され、アプリケーション・プログラム１７中では、ファイル・システム１９ならびに暗号化モジュール２１が動作する。アプリケーション１５およびアプリケーション１７は、データ・チャンクやデータ・ブロックなど、大容量記憶デバイス１４などのデバイスに物理的に記憶されたデータのセグメントを、作成、削除、または他の方法で管理することができる。ファイル・システム１９は、データの記憶、取出し、および更新を行うための、ならびにデータを含むデバイス（複数可）上の利用可能空間を管理するための手順を提供することによって、アプリケーション・プログラム１７が終了した後も保持されることが予期されるデータを整理する手段を提供する。ファイル・システム１９は、データを効率的な方式で整理し、デバイス（コンピュータ１０またはメモリ１６あるいはその両方など）に特有の特性に合わせて調整される。一実施形態では、アプリケーション１７はオペレーティング・システム（ＯＳ）１７とすることができ、ファイル・システム１９は、ＯＳ１７とファイル・システム１９との間の密な結合を保持する。ファイル・システム１９は、データおよびメタデータへのアクセスを制御するためのメカニズムを提供することができ、また、当業者なら理解するように、本発明のいくつかの態様を促進するのに必要なものなど、データ信頼性を保証するためのメカニズムを含むことができる。ファイル・システム１９は、複数のアプリケーション・プログラム１５、１７がほぼ同時点で同じファイル中のデータを更新するための手段を提供することができる。
【００２１】
暗号化モジュール２１を、アプリケーション１５、アプリケーション１７、ファイル・システム１９、または他のコンピューティング・ハードウェアもしくはソフトウェア・コンポーネントと共に使用して、本発明の目的を達成することができる。一実施形態では、例えば、暗号化モジュール２１は、重複排除を見送るように指定された選択されたデータ・チャンクを処理して、データ・チャンクの少なくとも一部を、弱いセキュリティ鍵で暗号化する（やはり、かなりの処理またはリソース割振りオーバヘッドあるいはその両方を被るのを避けるために）。当業者なら理解するであろうが、暗号化メカニズムの実装は様々である場合があり、暗号化メカニズム自体も、特定の実装形態に従って様々である場合がある。一実施形態では、暗号化メカニズムの目標は、可能な限り最小量のリソースおよびオーバヘッド割振りしか必要とせずに、データが「新しい」データであると重複排除エンジンが思うのに足りるだけデータの特性を「変更する」ことである。
【００２２】
例証する実施形態では、メモリ・デバイス１６および大容量記憶デバイス１４は、信号担持媒体を介してＣＰＵ１２に接続される。加えて、ＣＰＵ１２は、通信ポート１８を介して通信ネットワーク２０に接続され、通信ネットワーク２０は、付属する追加の複数のコンピュータ・システム２２および２４を有する。コンピュータ・システム１０は、コンピュータ・システム１０の個別コンポーネントの各々が本明細書に記載の各動作を実行および実施して本発明の目的を達成するために、１つまたは複数のプロセッサ・デバイス（例えばＣＰＵ１２）および追加のメモリ・デバイス１６を含んでよい。
【００２３】
図２は、本発明による、コンピュータ・システム中のデータ記憶システムのハードウェア構造を示す例示的なブロック図２００である。ホスト・コンピュータ２１０、２２０、２２５が示されており、各ホスト・コンピュータは、データ記憶システム２００の一部としてデータ処理を実施するための中央処理装置としての役割を果たす。ホスト（物理または仮想デバイス）２１０、２２０、および２２５は、データ記憶システム中の、本発明の目的を達成するための１つまたは複数の新しい物理デバイスまたは論理デバイスとすることができる。一実施形態では、単なる例として、データ記憶システム２００は、ＩＢＭ（Ｒ）Ｓｙｓｔｅｍ  Ｓｔｏｒａｇｅ（ＴＭ）ＤＳ８０００（ＴＭ）として実装することができる。ネットワーク接続２６０は、ファイバ・チャネル・ファブリック、ファイバ・チャネル・ポイント・ツー・ポイント・リンク、ファイバ・チャネル・オーバ・イーサネット（Ｒ）・ファブリックもしくはポイント・ツー・ポイント・リンク、ＦＩＣＯＮもしくはＥＳＣＯＮ  Ｉ／Ｏインタフェース、他の任意のＩ／Ｏインタフェース・タイプ、ワイヤレス・ネットワーク、有線ネットワーク、ＬＡＮ、ＷＡＮ、異質、同質、公衆（すなわちインターネット）、私設、またはこれらの任意の組合せとすることができる。ホスト２１０、２２０、および２２５は、１つまたは複数の位置間で、ローカルであっても分散してもよく、ホスト２１０、２２０、および２２５には、ファイバ・チャネル、ＦＩＣＯＮ、ＥＳＣＯＮ、イーサネット（Ｒ）、光ファイバ、ワイヤレス、または同軸アダプタなど、記憶コントローラ２４０への任意のタイプのファブリック（もしくはファブリック・チャネル）（図２には示さず）またはネットワーク・アダプタ２６０が装備されてよい。したがって、データ記憶システム２００には、通信するための適切なファブリック（図２には示さず）またはネットワーク・アダプタ２６０が装備される。図２では、データ記憶システム２００は、記憶コントローラ２４０および記憶装置２３０を備えて描かれている。
【００２４】
本明細書に述べる方法のより明確な理解を容易にするために、図２では、記憶コントローラ２４０は、マイクロプロセッサ２４２とシステム・メモリ２４３と不揮発性記憶装置（ＮＶＳ）２１６とを含む単一の処理ユニットとして示されており、これらについては後でより詳細に述べる。いくつかの実施形態では、記憶コントローラ２４０は複数の処理ユニットからなり、各処理ユニットは、それ自体のプロセッサ・コンプレックスおよびシステム・メモリを有し、データ記憶システム２００内の専用ネットワークによって相互接続されることに留意されたい。記憶装置２３０は、ストレージ・アレイなど、１つまたは複数の記憶デバイスからなるものとすることができ、これらの記憶デバイスは、ストレージ・ネットワークによって記憶コントローラ２４０に接続される。
【００２５】
いくつかの実施形態では、記憶装置２３０に含まれるデバイスは、ループ・アーキテクチャで接続されてよい。記憶コントローラ２４０は、記憶装置２３０を管理し、記憶装置２３０に向けられた書込み要求および読出し要求の処理を容易にする。記憶コントローラ２４０のシステム・メモリ２４３は、記憶装置２３０の管理に関連する機能を実行するためにプロセッサ２４２がアクセスする可能性のあるプログラム命令およびデータを記憶する。一実施形態では、システム・メモリ２４３は、オペレーション・ソフトウェア２５０を含む、またはそれに関連付けられる、またはそれと通信し、本発明の機能を達成するように部分的に構成される。図２に示すように、システム・メモリ２４３はまた、「書込みデータ」および「読出しデータ」をバッファリングするために、記憶装置２３０のためのキャッシュ２４５（本明細書では「キャッシュ・メモリ」とも呼ばれる）を含んでも、またはそれと通信してもよく、「書込みデータ」および「読出しデータ」とはそれぞれ、書込み／読出し要求およびそれらの関連データを指す。一実施形態では、キャッシュ２４５は、システム・メモリ２４３の外部のデバイス中で割り振られるが、なおマイクロプロセッサ２４２によってアクセス可能なままであり、本明細書に述べる動作を実施することに加えて、データ損失に対する追加のセキュリティを提供するのに役立つことができる。
【００２６】
いくつかの実施形態では、キャッシュ２４５は、揮発性メモリおよび不揮発性メモリによって実装され、データ記憶システム２００の性能向上のために、ローカル・バス（図２には示さず）を介してマイクロプロセッサ２４２に結合される。データ記憶コントローラに含まれるＮＶＳ２１６は、マイクロプロセッサ２４２によってアクセス可能であり、他の図に記載のような本発明の動作および実行のための、追加のサポートを提供するのに役立つ。ＮＶＳ２１６は、「永続」キャッシュまたは「キャッシュ・メモリ」と呼ばれることもあり、内部に記憶されたデータを保持するために外部電力を利用する場合と利用しない場合のある不揮発性メモリによって実装される。ＮＶＳは、本発明の目的を達成するのに適した任意の目的で、キャッシュ２４５に記憶されることおよびキャッシュ２４５によって記憶されることが可能である。いくつかの実施形態では、データ記憶システム２００に対する停電の場合に、バッテリなどのバックアップ電源（図２には示さず）が、ＮＶＳ２１６に記憶されたデータを保持するのに十分な電力をＮＶＳ２１６に供給する。ある実施形態では、ＮＶＳ２１６の容量は、キャッシュ２４５の総容量以下である。
【００２７】
記憶装置２３０は、ストレージ・アレイなど、１つまたは複数の記憶デバイスで物理的に構成されてよい。ストレージ・アレイは、ハード・ディスクなどの個別の記憶デバイスの論理的グループ化である。ある実施形態では、記憶装置２３０は、ＪＢＯＤ（Just a Bunch of Disks）アレイまたはＲＡＩＤ（RedundantArray of Independent Disks）アレイからなる。物理ストレージ・アレイの集まりをさらに結合して、ランクを形成することができ、ランクは、物理記憶域を論理構成から切り離す。ランク中の記憶空間は、論理ボリュームに割り振ることができ、論理ボリュームは、書込み／読出し要求の中で指定される記憶位置を定義する。
【００２８】
一実施形態では、単なる例として、図２に示すような記憶システムは、論理ボリュームまたは単に「ボリューム」を含んでよく、様々な種類の割振りを有する場合がある。記憶装置２３０ａ、２３０ｂ、および２３０ｎは、データ記憶システム２００中のランクとして示されており、本明細書では、ランク２３０ａ、２３０ｂ、および２３０ｎと呼ばれる。ランクは、データ記憶システム２００に対してローカルであってもよく、または、物理的にリモートの場所に位置してもよい。言い換えれば、ローカル記憶コントローラが、リモート記憶コントローラと接続し、リモート位置の記憶域を管理することができる。ランク２３０ａは、２つの全体的ボリューム２３４および２３６、ならびに１つの部分的ボリューム２３２ａで構成されて示される。ランク２３０ｂは、別の部分的ボリューム２３２ｂで構成されて示される。このように、ボリューム２３２は、ランク２３０ａと２３０ｂとにまたがって割り振られる。ランク２３０ｎは、ボリューム２３８に完全に割り振られて示される。すなわち、ランク２３０ｎは、ボリューム２３８に対する物理記憶域全体を指す。上記の例から、ランクは、１つまたは複数の部分的または全体的あるいはその両方のボリュームを含むように構成されてよいことは理解されるであろう。ボリュームおよびランクはさらに、「トラック」と呼ばれるものに分割することができ、トラックは、記憶域の固定ブロックを表す。したがって、トラックは所与のボリュームに関連し、トラックには所与のランクが与えられてよい。
【００２９】
記憶コントローラ２４０は、ホスト・コンピュータ２１０、２２０、２２５へのファイバ・チャネル・プロトコルを制御するための制御スイッチ２４１と；記憶コントローラ２４０の全てを制御するためのマイクロプロセッサ２４２と；記憶コントローラ２４０の動作を制御するためのマイクロプログラム（オペレーション・ソフトウェア）２５０と制御のためのデータと後述する各テーブルとを記憶するための不揮発性制御メモリ２４３と；データを一時的に記憶（バッファリング）するためのキャッシュ２４５と；キャッシュ２４５がデータの読出しおよび書込みを行うのを補助するためのバッファ２４４と；記憶デバイス２３０との間のデータ転送を制御するプロトコルを制御し；データ重複排除モジュールまたはエンジン２５５、情報を設定するデータ２５９および暗号化鍵２５７とを含むことができる。本発明を用いて複数のバッファ２４４を実装して、本明細書に述べる動作を補助することができる。
【００３０】
一実施形態では、ホスト・コンピュータ、すなわち１つもしくは複数の物理もしくは仮想デバイス２１０、２２０、２２５と、記憶コントローラ２４０とは、インタフェースとしてのネットワーク・アダプタ（ファイバ・チャネルとすることができる）２６０を介して、すなわち、「ファブリック」と呼ばれる少なくとも１つのスイッチを介して接続される。一実施形態で、図２に示すシステムの動作について述べる。マイクロプロセッサ２４２は、メモリ２４３を制御して、ホスト・デバイス（物理または仮想）２１０からのコマンド情報と、ホスト・デバイス（物理または仮想）２１０を識別するための情報とを記憶する。制御スイッチ２４１、バッファ２４４、キャッシュ２４５、オペレーティング・ソフトウェア２５０、マイクロプロセッサ２４２、メモリ２４３、ＮＶＳ２１６、データ重複排除モジュールまたはエンジン２５５、およびデータ２５９および暗号化鍵２５７は相互と通信し、これらは、別々のコンポーネントまたは１つの個別コンポーネントとすることができる。また、オペレーション・ソフトウェア２５０など、全てのとは言わないまでもいくつかのコンポーネントは、メモリ２４３と共に含まれてもよい。図示のデバイス内の各コンポーネントは、本発明に適合する目的で、共にリンクされてよく、相互と通信することができる。
【００３１】
記憶コントローラ２４０は、データ重複排除エンジン２５５を含んで示され、データ重複排除エンジン２５５中で、いくつかの書込みデータ２５９が処理される。データ重複排除エンジン２５５は、構造上、１つの完全なモジュールであってもよく、あるいは、他の個別モジュールに関連する、もしくは他の個別モジュール内に組み込まれる、またはその両方であってもよい。データ重複排除エンジン２５５は、マイクロプロセッサ２４２など、記憶コントローラ２４０の他のコンポーネントと共に、記憶コントローラ２４０を介して記憶装置２３０に渡される書込みデータ２５９に対してデータ重複排除操作を実施するように構成される。
【００３２】
前に示したように、記憶コントローラ２４０は、キャッシュ（または全体的にキャッシュ・システムと呼ばれることがあるもの）２４５を含み、ホスト２１０、２２０、および２２５、または類似のデバイスから書込みデータを受け入れ、次いで書込みデータは、キャッシュ・メモリ２４５中に配置される。次いで、データ重複排除エンジン２５５は、キャッシュ・メモリ２４５中で書込みデータを重複があるかテストする。アプリケーション１７（図１）が重複排除操作から保護したい書込みデータ２５９は、図示のように暗号化鍵２５７で暗号化される（暗号化済みデータ２５７）。データ重複排除エンジン２５５の中を通される書込みデータ２５９のうちの、暗号化鍵２５７を有するデータは、これらが「新しい」データでありしたがって重複排除操作（例えば、既に記憶装置２３０中に配置された既存のデータへのポインタで置き換えられる）を受けないことを、データ重複排除エンジン２５５に対して示す。
【００３３】
一実施形態では、アプリケーション１７／ファイル・システム１９は最初に、所与のデータ・ブロックが複数回にわたって物理記憶域に記憶されなければならないかどうか判定する。このデータ・ブロックは、例えば、ファイル・システム１９自体に関連するスーパーブロック・メタデータ、または他の関連するファイル・システム情報とすることができる。次いでアプリケーション１７は、書込みが発せられる前に、この仮想デバイスについての固有の鍵でこれらのデータ・ブロックを暗号化する。続くステップとして、アプリケーションは、暗号化済みデータ２５７と共に、基礎をなすディスク（デバイス）ドライバへの書込み要求を開始することができ、アプリケーションは実質的に、たとえ暗号化前のブロックが、前に書き込まれたデータ・ブロックと同一であっても、このデータ・ブロックが「新しい」ものであり重複排除されてはならないことを示す。暗号化は、所有元アプリケーションによって、このブロックのＬＢＡを弱い暗号化鍵として使用してディスク・ブロック単位で実施することができる。
【００３４】
ここでもやはり、選択される暗号化方法（暗号化鍵を含む）は、基礎をなす記憶コントローラまたは記憶管理デバイスから後で鍵が読み戻されたときに鍵の推定が単純であるように、選ばれる。暗号化鍵の例としては、（１）選択されたデータ・ブロックの開始ＬＢＡ、（２）ファイル内におけるデータ・ブロックのオフセット、および、当業者なら熟知しているであろう他の類似の暗号化メカニズムを含めることができる。暗号化鍵は、弱く、かつ予測可能であるべきである（すなわち、所有元アプリケーションは、鍵をどこにも記憶せずに、特定のメタブロックに対する暗号化鍵がどんなものであるかがわかることになる）。
【００３５】
続くステップで、ディスク・ドライバは、記憶コントローラ２４０への、スモール・コンピュータ・システムズ・インタフェース（ＳＣＳＩ）コマンドなどの書込みコマンドを準備する。記憶コントローラ２４０は、指定された暗号化済みデータ・ブロックを受け取ると、たとえ同一データのより前のインスタンスが記憶コントローラ２４０に記憶されている可能性があっても、データ重複排除エンジン２５５を介して、当業者なら理解するようなフィンガプリント生成やマッチングなどの重複排除ステップをスキップし、選択されたデータ・ブロックを新しい物理ディスク位置に直接書き込む。後でこれらのデータ・ブロック（アプリケーションにはよくわかっている）が次に読み出されるとき、アプリケーションは、よく知られた単純な鍵（例えば、弱い鍵／暗号化メカニズム）を使用してデータを暗号化解除する。本明細書で使用される暗号化技法は必ずしもデータ・セキュリティのためのものではないので、このような技法を実施するためのどんなオーバヘッドも、可能な限り、効率的に最小限に抑えることができる。
【００３６】
好ましい一実施形態では、結果的なデータのサイズが改変されないままとなるような、暗号化またはデータ変換機能が選ばれるべきである。例えば、５１２バイトのデータが変換されることになる状況では、５１２バイトの結果的な暗号化済みデータが生成される。
【００３７】
一実施形態では、所有元アプリケーションは、１つのユニットとして書かれた複数のデータ・ブロックを暗号化することを選ぶことができる。データ変換機能（暗号化機能）は、個別ブロックの各々を暗号化解除すればこのブロックの元のデータが返されるようなものであるべきである。別法として、アプリケーションは、これらの複数ブロック・ユニットをデータ・チャンクとして読み出し、これらのデータ・チャンクを１つのユニットとして暗号化解除すべきである。
【００３８】
次に図３に移ると、例証する実施形態の様々な態様を組み込むことのできる、例示的なデータ・セグメント２５９（すなわちブロック）のブロック図３００が示されている。データ・セグメント２５９は、弱い暗号化鍵３０２（現コピー１、２、３など）を含み、この弱い暗号化鍵３０２は、図示のようにブロックＡの一部として付加される。
【００３９】
図４に、例示的なフローとして描かれた、本発明の様々な機能的態様のブロック図４００を示す。具体的には、データ重複排除エンジンを介して書き込まれることになるがまだどんな重複排除操作によっても処理されていないデータ４０２が、まず、記憶コントローラに対して書込みコマンドが発せられる前に、暗号化モジュール２１（図１）の中を通され、暗号化モジュール２１において、選択されたデータに弱い暗号化が適用され、図示のように、暗号化された書込みデータ４０４が生成される。
【００４０】
図５に進み、ブロック図４０６に、やはり例示的なフローとして描かれた、本発明の様々な追加の機能的態様を示す。具体的には、暗号化された書込みデータ４０８は、記憶装置２３０（やはり図２）に書き込まれるように記憶コントローラに渡される。暗号化された書込みデータは、図示のようにデータ重複排除エンジン２５５の中を通され、データ重複排除エンジン２５５において、暗号化済みデータ２５９は、重複する可能性のある既存データに対して、新しいデータと考えられる。したがって、データ重複排除エンジンは、暗号化済みデータを、書込み要求４１０と共に、キャッシュ・システム２４５などの、記憶コントローラの他の部分に渡し、暗号化済みデータには記憶装置２３０中の新しい空間が割り振られ、暗号化済みデータは最終的にここに書き込まれる。
【００４１】
以上に鑑みて、続く図６は、例証する実施形態の態様をその中で実現することのできる、データ重複排除システムを有する記憶サブシステム中でデータ冗長性を保証するための例示的な方法５００である。方法５００は開始し（ステップ５０２）、データ重複排除システムを介して書き込まれることになる選択されたデータ・セグメントが重複排除操作を受けないように、選択されたデータ・セグメントが暗号化される（ステップ５０４）。次いで方法５００は終了する（ステップ５０６）。
【００４２】
続く図７には、ここでもやはり本発明の様々な態様をその中で実現することのできる例示的なデータ処理方法６００が示されている。方法６００は開始し（ステップ６０２）、重複排除を見送るように所有元アプリケーションによって選ばれたデータ・セグメントに関連付けられることになる固有の暗号化鍵が、所有元アプリケーションによって選択される（ステップ６０４）。次いで、所有元アプリケーションまたはファイル・システムあるいはその両方は、選択されたデータ・セグメントを固有の暗号化鍵で暗号化する（ステップ６０６）。
【００４３】
続くステップとして、暗号化済みの選択されたデータ・セグメントと共に、書込み要求が記憶コントローラに提供される（ステップ６０８）。次いで、暗号化済みデータ・セグメントは重複排除エンジンを介して処理され、その結果、選択されたデータ・セグメントは重複排除エンジンによって「新しい」データとして認識される／扱われるので、暗号化済みデータに対する重複排除操作の実施が控えられる（ステップ６１０）。
【００４４】
ステップ６１２で、暗号化済みデータ・セグメントは、新たに割り振られた物理記憶位置に書き込まれる。後で暗号化データが次に読み出される際、次いで暗号化済みデータは、所有元アプリケーションまたはファイル・システムあるいはその両方に返される（ステップ６１４）。次いで、暗号化済みデータ・セグメントは、アプリケーションまたはファイル・システムあるいはその両方によって、関連の暗号化アルゴリズムを使用して暗号化解除され（ステップ６１６）、関連の暗号化アルゴリズムはやはり、当業者なら理解するように、特定の適用例に従って様々である場合があるが、オーバヘッドおよび帯域幅を最小限に抑えるように選択されてよい。次いで方法６００は終了する（ステップ６１８）。
【００４５】
続く図８は、ここでもやはり本発明の様々な態様を組み込んだ、関連する例示的なデータ処理方法７００である。方法７００は開始し（ステップ７０２）、書込み要求が、書き込まれることになる付随するデータと共に、記憶コントローラ／データ重複排除エンジンによって処理のために受け取られる（ステップ７０４）。
【００４６】
ステップ７０６で、方法７００は、付随するデータが暗号化されているかどうか照会する（ステップ７０６）。暗号化されている場合は、重複排除エンジン／記憶コントローラは、データ重複排除操作の実施を見送り（ステップ７０８）、暗号化済みデータは、新たに割り振られた物理記憶位置に書き込まれる（ステップ７１０）。「方法」７００では、説明のために、データが暗号化されているかどうか照会するという言い方をすることに留意されたい。しかし実際には、データ重複排除システムは、データが暗号化されているか否かを理解せず照会しない。前に説明したように、暗号化により、データ・ブロックは、所有元アプリケーションによって前に書き込まれたその重複コピーと一致しないことになる。よって、重複排除システムは、このデータ・ブロックを「新しい」データ・ブロックとして扱うことになり、このブロックを物理記憶域に書き込むことになる。ステップ７０６に戻り、付随するデータが暗号化されていない場合は、重複排除エンジン／記憶コントローラは、データに対して様々な重複排除操作を実施する（ステップ７１２）。次いで方法７００は終了する（ステップ７１４）。
【００４７】
当業者には理解されるであろうが、本発明の態様は、システム、方法、またはコンピュータ・プログラムとして具体化することができる。したがって、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、または、ソフトウェアとハードウェアの態様を組み合わせた実施形態の形をとることができ、本明細書ではこれらを全て「回路」、「モジュール」、「プロセス」、または「システム」と一般に呼ぶ場合がある。さらに、本発明の態様は、コンピュータ可読プログラム・コードが組み入れられた１つまたは複数のコンピュータ可読媒体において具体化されるコンピュータ・プログラムの形をとることもできる。
【００４８】
１つまたは複数のコンピュータ可読媒体の、任意の組合せを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体とすることができる。コンピュータ可読記憶媒体は、例えば、電子、磁気、光学、電磁、赤外線、もしくは半導体の、システム、装置、もしくはデバイス、またはこれらの任意の適切な組合せとすることができるが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例（非網羅的なリスト）は、１つもしくは複数のワイヤを有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、消去可能プログラム可能な読取専用メモリ（ＥＰＲＯＭもしくはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読取専用メモリ（ＣＤ−ＲＯＭ）、光学記憶デバイス、磁気記憶デバイス、またはこれらの任意の適切な組合せを含むことになる。この文書のコンテキストでは、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによって使用される、またはそれらに関連して使用されるプログラムを、収録または記憶することのできる、任意の有形媒体とすることができる。
【００４９】
コンピュータ可読媒体上で具体化されるプログラム・コードは、ワイヤレス、有線、光ファイバ・ケーブル、ＲＦなど、またはこれらの任意の適切な組合せを含むがこれらに限定されない、任意の適切な媒体を使用して伝送することができる。本発明の態様に関する動作を実施するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および、「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含めた、１つまたは複数のプログラミング言語の任意の組合せで書かれてよい。プログラム・コードは、完全にユーザのコンピュータ上で実行されるか、部分的にユーザのコンピュータ上で実行されるか、または完全にリモート・コンピュータもしくはサーバ上で実行されてよい。最後のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含めた任意のタイプのネットワークを介してユーザのコンピュータに接続されてよく、または、接続は、外部コンピュータに対して（例えばインターネット・サービス・プロバイダを使用してインターネットを介して）行われてもよい。
【００５０】
本発明の態様を、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラムのフローチャート説明またはブロック図あるいはその両方に関して以上に述べた。フローチャート説明またはブロック図あるいはその両方の各ブロック、ならびに、フローチャート説明またはブロック図あるいはその両方の中のブロックの組合せを、コンピュータ・プログラム命令によって実装できることは理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供して、マシンを生み出すことができ、したがって、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令は、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロック中で指定される機能／行為を実装する手段をもたらす。
【００５１】
これらのコンピュータ・プログラム命令はまた、コンピュータ可読媒体に記憶されてよく、このコンピュータ可読媒体は、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに、特定の方式で機能するよう指示することができ、したがって、コンピュータ可読媒体に記憶された命令は、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロック中で指定される機能／行為を実装する命令を含む製造品を生み出す。コンピュータ・プログラム命令はまた、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされてよく、それにより、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップが実施されて、コンピュータ実装プロセスが生み出され、したがって、コンピュータまたは他のプログラム可能装置上で実行される命令は、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロック中で指定される機能／行為を実装するためのプロセスを提供する。
【００５２】
上記の図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラムの可能な実装形態の、アーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図中の各ブロックは、モジュール、セグメント、またはコード部分を表すことができ、これは、指定される論理機能（複数可）を実現するための１つまたは複数の実行可能命令を備える。また、いくつかの代替実装形態では、ブロック中で示される機能は、図中で示される順序とは異なる順序で生じる場合があることにも留意されたい。例えば、関連する機能に応じて、連続して示される２つのブロックが実際にはほぼ同時に実行される場合もあり、またはこれらのブロックが逆の順序で実行されることもある。また、ブロック図またはフローチャート説明あるいはその両方の各ブロック、および、ブロック図またはフローチャート説明あるいはその両方の中のブロックの組合せは、指定される機能もしくは行為を実施する専用ハードウェアベースのシステムによって、または、専用ハードウェアとコンピュータ命令との組合せによって、実装されてよいことにも留意されたい。
【００５３】
本発明の１つまたは複数の実施形態を詳細に例証したが、添付の特許請求の範囲に示す本発明の範囲を逸脱することなく、これらの実施形態に対する変更および適合を行うことができることを、当業者なら理解するであろう。
【図１】
2015515216.tif 000003
【図２】
2015515216.tif 000004
【図３】
2015515216.tif 000005
【図４】
2015515216.tif 000006
【図５】
2015515216.tif 000007
【図６】
2015515216.tif 000008
【図７】
2015515216.tif 000009
【図８】
2015515216.tif 000010
【手続補正書】
【提出日】平成26年10月27日(2014.10.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサによってコンピューティング環境におけるデータ重複排除システム中でデータ冗長性を維持する方法であって、
前記データ重複排除システムを介して書き込まれることになる選択されたデータ・セグメントが重複排除操作を受けないように、前記選択されたデータ・セグメントを暗号化することを含む方法。
【請求項２】
前記選択されたデータ・セグメントに対する前記重複排除操作の実施が控えられるように、前記コンピューティング環境を介して前記暗号化済みの選択されたデータ・セグメントを処理するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記選択されたデータ・セグメントを暗号化することが、基礎をなす記憶コントローラ・デバイスに書込み要求を発する前に、関連する仮想デバイスについての固有の暗号化鍵で前記選択されたデータ・セグメントを暗号化することをさらに含む、請求項２に記載の方法。
【請求項４】
前記選択されたデータ・セグメントを前記固有の鍵で暗号化することが、前記選択されたデータ・セグメントについての論理ブロック・アドレス（ＬＢＡ）の開始と、ファイル内における前記選択されたデータ・セグメントのオフセットとのうちの一方に関連するように前記暗号化鍵を選択することをさらに含み、暗号化機能が、前記暗号化機能を介して処理された暗号化済みデータのサイズを保持するように選ばれる、請求項３に記載の方法。
【請求項５】
前記選択されたデータ・セグメントを暗号化することが、ユニットとして書かれた複数の選択されたデータ・セグメントを選ぶことを含み、それにより、前記複数の選択されたデータ・セグメントの各々を暗号化解除すると各セグメントごとの元のデータが返されることと、前記複数の選択されたデータ・セグメントの各々が前記ユニットとして暗号化解除されることとのうちの一方となる、請求項４に記載の方法。
【請求項６】
前記暗号化済みの選択されたデータ・セグメントを処理することが、前記コンピューティング環境における記憶コントローラ中の重複排除エンジンを介して、前記暗号化済みの選択されたデータ・セグメントに対する書込み要求を発することを含む、請求項２に記載の方法。
【請求項７】
前記暗号化済みの選択されたデータ・セグメントに対する前記書込み要求の実行中に、前記データ重複排除エンジンが、前記暗号化済みの選択されたデータ・セグメントを新しいデータ・セグメントとして認識し、前記重複排除操作の実施を控える、請求項６に記載の方法。
【請求項８】
前記選択されたデータ・セグメントの後続の読出し操作時に前記選択されたデータ・セグメントを暗号化解除することをさらに含む、請求項１に記載の方法。
【請求項９】
前記選択されたデータ・セグメントを暗号化解除することが、弱い固有の予測可能な暗号化鍵で前記選択されたデータ・セグメントを暗号化解除することを含む、請求項８に記載の方法。
【請求項１０】
コンピューティング環境におけるデータ重複排除システム中でデータ冗長性を維持するためのシステムであって、
ファイル・システム・モジュールと、
前記ファイル・システム・モジュールと動作可能に通信する記憶コントローラとを備え、
前記ファイル・システム・モジュールが、前記データ重複排除システムを介して書き込まれることになる選択されたデータ・セグメントが重複排除操作を受けないように、前記選択されたデータ・セグメントを暗号化するように構成された、システム。
【請求項１１】
前記記憶コントローラが、前記選択されたデータ・セグメントに対する前記重複排除操作の実施が控えられるように、前記コンピューティング環境を介して前記暗号化済みの選択されたデータ・セグメントを処理するように構成された、請求項１０に記載のシステム。
【請求項１２】
前記ファイル・システム・モジュールが、前記記憶コントローラに書込み要求を発する前に、関連する仮想デバイスについての固有の鍵で前記選択されたデータ・セグメントを暗号化するようにさらに構成された、請求項１１に記載のシステム。
【請求項１３】
前記暗号化鍵が、前記選択されたデータ・セグメントについての論理ブロック・アドレス（ＬＢＡ）の開始と、ファイル内における前記選択されたデータ・セグメントのオフセットとのうちの一方に関連するように選択され、暗号化機能が、前記暗号化機能を介して処理された暗号化済みデータのサイズを保持するように選ばれる、請求項１２に記載のシステム。
【請求項１４】
前記ファイル・システム・モジュールが、ユニットとして書かれた複数の選択されたデータ・セグメントを選ぶようにさらに構成され、それにより、前記複数の選択されたデータ・セグメントの各々を暗号化解除すると各セグメントごとの元のデータが返されることと、前記複数の選択されたデータ・セグメントの各々が前記ユニットとして暗号化解除されることとのうちの一方となる、請求項１３に記載のシステム。
【請求項１５】
前記記憶コントローラに関連するデータ重複排除エンジンをさらに備え、
前記ファイル・システム・モジュールが、前記重複排除エンジンを介して前記暗号化済みの選択されたデータ・セグメントに対する書込み要求を発するようにさらに構成された、請求項１１に記載のシステム。
【請求項１６】
前記暗号化済みの選択されたデータ・セグメントに対する前記書込み要求の実行中に、前記データ重複排除エンジンが、前記暗号化済みの選択されたデータ・セグメントを新しいデータ・セグメントとして認識し、前記重複排除操作の実施を控える、請求項１５に記載のシステム。
【請求項１７】
前記ファイル・システム・モジュールが、前記選択されたデータ・セグメントの後続の読出し操作時に前記選択されたデータ・セグメントを暗号化解除するようにさらに構成された、請求項１１に記載のシステム。
【請求項１８】
前記選択されたデータ・セグメントが、弱い固有の予測可能な暗号化鍵で暗号化解除される、請求項１７に記載のシステム。
【請求項１９】
プロセッサによってコンピューティング環境におけるデータ重複排除システム中でデータ冗長性を維持するためのコンピュータ・プログラムであって、
前記データ重複排除システムを介して書き込まれることになる選択されたデータ・セグメントが重複排除操作を受けないように、前記選択されたデータ・セグメントを暗号化することを、前記プロセッサに実行させるコンピュータ・プログラム。
【請求項２０】
前記選択されたデータ・セグメントに対する前記重複排除操作の実施が控えられるように、前記コンピューティング環境を介して前記暗号化済みの選択されたデータ・セグメントを処理することを、前記プロセッサに実行させる請求項１９に記載のコンピュータ・プログラム。
【請求項２１】
前記選択されたデータ・セグメントを暗号化することに従って、基礎をなす記憶コントローラ・デバイスに書込み要求を発する前に、関連する仮想デバイスについての固有の暗号化鍵で前記選択されたデータ・セグメントを暗号化することを、前記プロセッサに実行させる請求項２０に記載のコンピュータ・プログラム。
【請求項２２】
前記選択されたデータ・セグメントを前記固有の暗号化鍵で暗号化することに従って、前記選択されたデータ・セグメントについての論理ブロック・アドレス（ＬＢＡ）の開始と、ファイル内における前記選択されたデータ・セグメントのオフセットとのうちの一方に関連するように前記暗号化鍵を選択するための、第４の実行可能部分をさらに備え、暗号化機能が、前記暗号化機能を介して処理された暗号化済みデータのサイズを保持するように選ばれることを、前記プロセッサに実行させる請求項２１に記載のコンピュータ・プログラム。
【請求項２３】
前記選択されたデータ・セグメントを暗号化することに従って、ユニットとして書かれた複数の選択されたデータ・セグメントを選ぶための第５の実行可能部分をさらに備え、それにより、前記複数の選択されたデータ・セグメントの各々を暗号化解除すると各セグメントごとの元のデータが返されることと、前記複数の選択されたデータ・セグメントの各々が前記ユニットとして暗号化解除されることとのうちの一方となることを、前記プロセッサに実行させる請求項２２に記載のコンピュータ・プログラム。
【国際調査報告】
2015515216.tif 000011
2015515216.tif 000012