(57)【要約】  複数のインデックスを使用する重複排除ストレージシステムについて記述している。１つ又は複数のインデックスの第１グループをランダムアクセスメモリ（ＲＡＭ）又は別のタイプの高速ストレージ内に保存してもよい。１つ又は複数のインデックスの第２グループを１つ又は複数のディスクドライブ又は大量のデータを廉価に保存可能な別のタイプのストレージ上に保存してもよい。新しいファイルを重複排除ストレージシステムに追加する際に、新しいファイルのファイルセグメントが既に保存されているかどうかを判定するべく、インデックスの第１グループを使用してもよい。ファイルを回復する際に、ファイルのセグメントをルックアップするべく、インデックスの第２グループを使用してもよい。【選択図】      図４
2013508810.tif 000002
【特許請求の範囲】
【請求項１】
プログラム命令を保存するコンピュータアクセス可能なストレージ媒体であって、前記プログラム命令は、
１つ又は複数のインデックスの第１グループを第１タイプのストレージ装置上に保存するステップであって、前記第１グループのそれぞれのインデックスは、重複排除ストレージシステム内に保存されたファイルセグメントの保存場所を規定している、ステップと、
１つ又は複数のインデックスの第２グループを第２タイプのストレージ装置上に保存するステップであって、前記第２グループのそれぞれのインデックスは、前記重複排除ストレージシステム内に保存されたファイルセグメントの保存場所を規定している、ステップと、
前記重複排除ストレージシステム内に保存される対象の第１ファイルを受信するのに応答して、
前記第１ファイルを複数のファイルセグメントに分割するサブステップと、
前記インデックスの第２グループではなく、前記インデックスの第１グループを使用し、前記第１ファイルの前記複数のファイルセグメントの保存場所をルックアップするべく試みるサブステップと、
を含むステップと、
前記重複排除ストレージシステムから第２ファイルを回復するための要求を受信するのに応答して、
前記インデックスの第２グループの特定のインデックスが前記第２ファイルのファイルセグメントの保存場所を規定していると判定するサブステップと、
前記第２ファイルを回復するべく前記インデックスの第２グループの前記特定のインデックスを使用して前記第２ファイルの前記ファイルセグメントの前記保存場所をルックアップするサブステップと、
を含むステップと、
を実行可能である、コンピュータアクセス可能なストレージ媒体。
【請求項２】
前記第１ファイルの前記複数のファイルセグメントは、前記第１ファイルを受信する前に前記重複排除ストレージシステム内に既に保存されていた特定のファイルセグメントを含み、
前記インデックスの第２グループは、前記特定のファイルセグメントの保存場所を規定するインデックスを含み、
前記プログラム命令は、前記インデックスの第１グループのいずれのインデックスも前記特定のファイルセグメントの前記保存場所を規定していないと判定するのに応答して、前記特定のファイルセグメントの重複するコピーを前記重複排除ストレージシステム内に保存するステップを更に実行可能である請求項１に記載のコンピュータアクセス可能なストレージ媒体。
【請求項３】
前記プログラム命令は、
前記第１グループの特定のインデックスが最大サイズに到達したと判定するのに応答して、前記ＲＡＭ内に保存されている前記第１グループの前記特定のインデックスを１つ又は複数のディスクドライブ上に保存されている前記第２グループに移動させるステップを更に実行可能である請求項１に記載のコンピュータアクセス可能なストレージ媒体。
【請求項４】
前記インデックスの第１グループは、頻繁に使用されるファイルセグメントの保存場所を規定する第１インデックスを含み、
前記プログラム命令は、
前記第１グループの前記特定のインデックスの複数の最も頻繁に使用されるファイルセグメントを判定するステップと、
前記第１グループの前記特定のインデックスを前記第２グループに移動させることを要すると判定するのに応答して、前記複数の最も頻繁に使用されるファイルセグメントを前記第１インデックスに追加するステップと、
を更に実行可能である請求項３に記載のコンピュータアクセス可能なストレージ媒体。
【請求項５】
前記プログラム命令は、
前記第１グループの前記特定のインデックスを前記ＲＡＭ内に保存されている新しいインデックスによって置換するステップ、
を更に実行可能である請求項３に記載のコンピュータアクセス可能なストレージ媒体。
【請求項６】
前記第１グループの前記インデックスは、前記ファイルセグメントのフィンガプリントを前記ファイルセグメントの前記保存場所にマッピングすることにより、ファイルセグメントの保存場所を規定しており、
前記プログラム命令は、
前記第１ファイルの前記複数のファイルセグメントのフィンガプリントを判定することにより、且つ、
前記第１ファイルの前記複数のファイルセグメントの前記フィンガプリントを使用して前記第１グループの１つ又は複数のインデックス内において前記第１ファイルの前記複数のファイルセグメントの前記保存場所をルックアップするべく試みることにより、
前記インデックスの第１グループを使用して前記第１ファイルの前記複数のファイルセグメントの前記保存場所をルックアップするべく試みるステップ、
を実行可能である請求項１に記載のコンピュータアクセス可能なストレージ媒体。
【請求項７】
前記ストレージ装置の第１タイプは、
ランダムアクセスメモリ（ＲＡＭ）と、
半導体ドライブ（ＳＳＤ）と、
のうちの１つである請求項１に記載のコンピュータアクセス可能なストレージ媒体。
【請求項８】
前記第２タイプのストレージ装置は、１つ又は複数のディスクドライブである請求項１に記載のコンピュータアクセス可能なストーレージ媒体。
【請求項９】
１つ又は複数のインデックスの第１グループを第１タイプのストレージ装置上に保存するステップであって、前記第１グループのそれぞれのインデックスは、重複排除ストレージシステム内に保存されたファイルセグメントの保存場所を規定している、ステップと、
１つ又は複数のインデックスの第２グループを第２タイプのストレージ装置上に保存するステップであって、前記第２グループのそれぞれのインデックスは、前記重複排除ストレージシステム内に保存されたファイルセグメントの保存場所を規定している、ステップと、
前記重複排除ストレージシステム内に保存される対象の第１ファイルを受信するのに応答して、前記第１ファイルを複数のファイルセグメントに分割するサブステップと、
前記インデックスの第２グループではなく、前記インデックスの第１グループを使用して前記第１ファイルの前記複数のファイルセグメントの保存場所をルックアップするべく試みるサブステップと、
を含むステップと、
前記重複排除ストレージシステムから第２ファイルを回復するための要求を受信するのに応答して、
前記インデックスの第２グループの特定のインデックスが前記第２ファイルのファイルセグメントの保存場所を規定していると判定するサブステップと、
前記第２ファイルを回復するべく前記インデックスの第２グループの前記特定のインデックスを使用して前記第２ファイルの前記ファイルセグメントの前記保存場所をルックアップするサブステップと、
を含むステップと、
を含む方法。
【請求項１０】
前記第１ファイルの前記複数のファイルセグメントは、前記第１ファイルを受信する前に前記重複排除ストレージシステム内に既に保存されていた特定のファイルセグメントを含み、
前記インデックスの第２グループは、前記特定のファイルセグメントの保存場所を規定するインデックスを含み、
前記方法は、前記インデックスの第１グループのいずれのインデックスも前記特定のファイルセグメントの前記保存場所を規定していないと判定するのに応答して、前記特定のファイルセグメントの重複するコピーを前記重複排除ストレージシステム内に保存するステップを更に含む請求項９に記載の方法。
【請求項１１】
前記第１グループの特定のインデックスが最大サイズに到達したと判定するのに応答して、前記ＲＡＭ内に保存されている前記第１グループの前記特定のインデックスを前記１つ又は複数のディスクドライブ上に保存されている前記第２グループに移動させるステップを更に含む請求項９に記載の方法。
【請求項１２】
前記インデックスの第１グループは、頻繁に使用されるファイルセグメントの保存場所を規定する第１インデックスを含み、
前記方法は、
前記第１グループの前記特定のインデックスの複数の最も頻繁に使用されるファイルセグメントを判定するステップと、
前記第１グループの前記特定のインデックスを前記第２グループに移動させることを要すると判定するのに応答して、前記複数の最も頻繁に使用されるファイルセグメントを前記第１インデックスに追加するステップと、
を更に含む請求項１１に記載の方法。
【請求項１３】
前記第１グループの前記特定のインデックスを前記ＲＡＭ内に保存されている新しいインデックスによって置換するステップを更に含む請求項１１に記載の方法。
【請求項１４】
前記第１グループの前記インデックスは、前記ファイルセグメントのフィンガプリントを前記ファイルセグメントの前記保存場所にマッピングすることによってファイルセグメントの保存場所を規定しており、
前記方法は、
前記第１ファイルの前記複数のファイルセグメントのフィンガプリントを判定することにより、且つ、
前記第１ファイルの前記複数のファイルセグメントの前記フィンガプリントを使用して前記第１グループの１つ又は複数のインデックス内において前記第１ファイルの前記複数のファイルセグメントの前記保存場所をルックアップするべく試みることにより、
前記第１ファイルの前記複数のファイルセグメントの前記保存場所をルックアップするべく試みるステップ
を含む請求項９に記載の方法。
【請求項１５】
１つ又は複数のプロセッサと、
プログラム命令を保存するランダムアクセスメモリと、
を有するシステムであって、
前記プログラム命令は、
１つ又は複数のインデックスの第１グループを第１タイプのストレージ装置上に保存するステップであって、前記第１グループのそれぞれのインデックスは、重複排除ストレージシステム内に保存されたファイルセグメントの保存場所を規定している、ステップと、
１つ又は複数のインデックスの第２グループを第２タイプのストレージ装置上に保存するステップであって、前記第２グループのそれぞれのインデックスは、前記重複排除ストレージシステム内に保存されたファイルセグメントの保存場所を規定している、ステップと、
前記重複排除ストレージシステム内に保存される対象の第１ファイルを受信するのに応答して、
前記第１ファイルを複数のファイルセグメントに分割するサブステップと、
前記インデックスの第２グループではなく、前記インデックスの第１グループを使用して前記第１ファイルの前記複数のファイルセグメントの保存場所をルックアップするべく試みるサブステップと、
を含むステップと、
前記重複排除ストレージシステムから第２ファイルを回復するための要求を受信するのに応答して、
前記インデックスの第２グループの特定のインデックスが前記第２ファイルのファイルセグメントの保存場所を規定していると判定するサブステップと、
前記第２ファイルを回復するべく前記インデックスの第２グループの前記特定のインデックスを使用して前記第２ファイルの前記ファイルセグメントの前記保存場所をルックアップするサブステップと、
を含むステップと、
を前記１つ又は複数のプロセッサによって実行可能である、システム。
【請求項１６】
前記第１ファイルの前記複数のファイルセグメントは、前記第１ファイルを受信する前に前記重複排除ストレージシステム内に既に保存されていた特定のファイルセグメントを含み、
前記インデックスの第２グループは、前記特定のファイルセグメントの保存場所を規定するインデックスを含み、
前記プログラム命令は、前記インデックスの第１グループのいずれのインデックスも前記特定のファイルセグメントの前記保存場所を規定していないと判定するのに応答して、前記特定のファイルセグメントの重複するコピーを前記重複排除ストレージシステム内に保存するステップを前記１つ又は複数のプロセッサによって更に実行可能である請求項１５に記載のシステム。
【請求項１７】
前記プログラム命令は、
前記第１グループの特定のインデックスが最大サイズに到達したと判定するのに応答して、前記ＲＡＭ内に保存されている前記第１グループの前記特定のインデックスを前記１つ又は複数のディスクドライブ上に保存されている前記第２グループに移動させるステップ
を前記１つ又は複数のプロセッサによって更に実行可能である請求項１５に記載のシステム。
【請求項１８】
前記インデックスの第１グループは、頻繁に使用されるファイルセグメントの保存場所を規定する第１インデックスを含み、
前記プログラム命令は、
前記第１グループの前記特定のインデックスの複数の最も頻繁に使用されるファイルセグメントを判定するステップと、
前記第１グループの前記特定のインデックスを前記第２グループに移動させることを要すると判定するのに応答して、前記複数の最も頻繁に使用されるファイルセグメントを前記第１インデックスに追加するステップと、
を前記１つ又は複数のプロセッサによって更に実行可能である請求項１６に記載のシステム。
【請求項１９】
前記第１グループの前記インデックスは、前記ファイルセグメントのフィンガプリントを前記ファイルセグメントの前記保存場所にマッピングすることによってファイルセグメントの保存場所を規定しており、
前記プログラム命令は、
前記第１ファイルの前記複数のファイルセグメントのフィンガプリントを判定することにより、且つ、
前記第１ファイルの前記複数のファイルセグメントの前記フィンガプリントを使用して前記第１グループの１つ又は複数のインデックス内において前記第１ファイルの前記複数のファイルセグメントの前記保存場所をルックアップするべく試みることにより、
前記インデックスの第１グループを使用して前記第１ファイルの前記複数のファイルセグメントの前記保存場所をルックアップするべく試みるステップ
を前記１つ又は複数のプロセッサによって更に実行可能である請求項１５に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータシステム用のデータバックアップソフトウェアに関する。更に詳しくは、本発明は、重複排除ストレージシステムのために複数のインデックスを生成及び使用するべく動作するバックアップソフトウェアに関する。
【背景技術】
【０００２】
大規模な組織は、しばしば、複数のクライアントコンピュータシステムによって使用されるファイルをバックアップするバックアップストレージシステムを使用している。バックアップストレージシステムは、データ重複排除技法を利用し、保存を要するデータ量を回避してもよい。例えば、ファイルが、バックアップの時点間において、ほとんど又はまったく変化していない場合が起こりうる。重複排除技法を使用すれば、既にバックアップ済みのファイルデータの一部の再度のバックアップ作業を不要にすることができる。ファイルは、複数のセグメントに分割してもよく、且つ、ファイルセグメントは、セグメントオブジェクトとして、バックアップストレージシステム内において個別に保存してもよい。ファイルの新しいバージョンをバックアップする際には、バックアップソフトウェアは、現在のファイルセグメントを表すセグメントオブジェクトがバックアップストレージシステム内に既に保存されているかどうかをチェックしてもよい。セグメントオブジェクトの新しい複製を保存することなしに、既に保存済みのそれぞれのセグメントオブジェクトを再度参照してもよい。
【０００３】
バックアップストレージシステムは、バックアップストレージシステム内におけるセグメントオブジェクトの保存場所を規定するインデックスを使用してもよい。ハッシュ関数をセグメントオブジェクトに適用することにより、セグメントオブジェクトのフィンガプリントを生成してもよい。インデックスは、セグメントオブジェクトのフィンガプリントをセグメントオブジェクトの保存場所にマッピングしてもよい。ファイルをシステムにバックアップする際には、ファイルをセグメントに分割し、且つ、セグメントのフィンガプリントをインデックス内においてルックアップする。セグメントがインデックス内において見出された場合には、そのセグメントを再使用可能であり、且つ、そのセグメントを再度保存する必要はない。従って、それぞれの一意のセグメントの１つのコピーのみが保存され、且つ、そのセグメントの単一のコピーを複数のファイルによって共有することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
インデックスのルックアップ速度を高速化するべく、インデックスをＲＡＭ内に保存することができる。この解決策は、小規模なバックアップストレージシステムの場合に有効であるが、大規模なシステムの場合には、同様に機能しない。システム容量が数百テラバイトに到達すると、セグメント数が百億を超過することになろう。メモリ内に納まるにはインデックスのサイズが過大となるため、１００億個のフィンガプリントを１つのインデックスで管理する方式は、問題となる。
【０００５】
又、インデックスをディスク上に保存した場合には、低速であるため、インデックス内におけるエントリのルックアップ、生成、削除、及び変更が問題となる。ランダムディスクアクセスは、非常に性能が乏しく、いくつかのシステムにおいては、１０００インデックスエントリアクセス／秒以下である。
【課題を解決するための手段】
【０００６】
重複排除ストレージシステムにおいてファイルをバックアップ及び回復するシステム及び方法の様々な形態を開示している。この方法の一実施形態によれば、１つ又は複数のインデックスの第１グループを第１タイプのストレージ装置上に保存してもよい。いくつかの実施形態においては、第１タイプのストレージ装置は、ストレージ装置のすべてのコンテンツに対する高速アクセスを可能にするストレージ装置であってよい。いくつかの実施形態においては、第１タイプのストレージ装置は、ランダムアクセスメモリ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：ＲＡＭ）であってよい。その他の実施形態においては、第１タイプのストレージ装置は、半導体ドライブ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ：ＳＳＤ）であってよい。第１グループのそれぞれのインデックスは、重複排除ストレージシステム内に保存されているファイルセグメントの保存場所を規定している。
【０００７】
１つ又は複数のインデックスの第２グループを第２タイプのストレージ装置上に保存してもよい。いくつかの実施形態においては、第２タイプのストレージ装置は、例えば、１つ又は複数のディスクドライブなどの大量のデータを廉価に保存可能なストレージ装置であってよい。この場合にも、第２グループのそれぞれのインデックスは、重複排除ストレージシステム内に保存されているファイルセグメントの保存場所を規定している。
【０００８】
重複排除ストレージシステム内に保存される対象の第１ファイルを受信するのに応答して、本方法は、第１ファイルを複数のファイルセグメントに分割するべく動作してもよい。インデックスの第２グループではなく、インデックスの第１のグループを使用し、第１ファイルの複数のファイルセグメントの保存場所をルックアップするべく試みてもよい。
【０００９】
重複排除ストレージシステムから第２ファイルを回復するための要求を受信するのに応答して、本方法は、インデックスの第２グループの特定のインデックスが第２ファイルのファイルセグメントの保存場所を規定していると判定するべく動作してもよい。第２ファイルを回復するべくインデックスの第２グループの特定のインデックスを使用して第２ファイルのファイルセグメントの保存場所をルックアップしてもよい。
【００１０】
いくつかの実施形態においては、第１ファイルの複数のファイルセグメントは、第１ファイルを受信する前に重複排除ストレージシステム内に既に保存されていた特定のファイルセグメントを含んでいてもよい。インデックスの第２グループが特定のファイルセグメントの保存場所を規定したインデックスを含んでいるが、インデックスの第１グループのインデックスのいずれもが特定のファイルセグメントの保存場所を規定していないという状況が起こりうる。この場合に、本方法は、インデックスの第１グループのいずれのインデックスも特定のファイルセグメントの保存場所を規定していないと判定するのに応答して、特定のファイルセグメントの重複したコピーを重複排除ストレージシステム内に保存するべく動作してもよい。
【００１１】
更なる実施形態において、本方法は、第１グループの特定のインデックスが最大サイズに到達したか又は一杯になっていると判定するのに応答して、ＲＡＭ内に保存されている第１グループの特定のインデックスを１つ又は複数のディスクドライブ上に保存されている第２グループに移動させるべく動作してもよい。又、いくつかの実施形態においては、本方法は、第１グループの特定のインデックスを第２グループに移動させることを要すると判定するのに応答して、第１グループの特定のインデックスの複数の最も頻繁に使用されるファイルセグメントを判定し、且つ、最も頻繁に使用されるファイルセグメントを第１グループの別のインデックスに追加してもよい。
【００１２】
添付図面との関連において以下の詳細な説明を参照することにより、本発明について十分に理解することができよう。
【図面の簡単な説明】
【００１３】
【図１】重複排除ストレージシステムに結合された複数のクライアントコンピュータシステムを示す。
【図２】重複排除ストレージシステム内のバックアップサーバーコンピュータの一例を示す図である。
【図３】バックアップサーバーコンピュータのシステムメモリ内に保存された様々なソフトウェアモジュールを示す。
【図４】新しいファイルを重複排除ストレージシステムにバックアップする方法の一実施形態を示すフローチャート図である。
【図５】重複排除ストレージシステムからファイルを回復する方法の一実施形態を示すフローチャート図である。
【図６】重複排除ストレージシステムによって使用されるインデックスを示す。
【図７】重複排除ストレージシステムによって使用されるインデックスを示す。
【図８】重複排除ストレージシステムによって使用されるインデックスを示す。
【発明を実施するための形態】
【００１４】
本発明は、様々な変更及び代替形態が可能であるが、一例として、その特定の実施形態を図面に示し、且つ、詳細に説明することとする。但し、図面及びそれらの図面に対する詳細な説明は、本発明を特定の開示された形態に限定することを意図したものではなく、むしろ、本発明は、添付の請求項によって規定される本発明の精神及び範囲に含まれるすべての変更、均等物、及び代替肢を含むことを理解されたい。
【００１５】
ファイルをバックアップ及び回復するシステム及び方法の様々な実施形態を開示する。本方法は、ファイルデータの重複するコピーの保存を回避するために重複排除技法を利用するストレージシステムにファイルをバックアップするべく動作してもよい。本明細書においては、重複排除を使用してデータオブジェクトの重複するコピーの保存を回避するストレージシステムを重複排除ストレージシステムと呼称する。ファイルをセグメントに分割してもよく、且つ、ファイルデータを個別のセグメントとして重複排除ストレージシステム内に保存してもよい。後述するように、本システムは、重複排除ストレージシステム内に保存されているセグメントの保存場所を規定する複数のインデックスを使用してもよく、これらのインデックスのうちの１つ又は複数のものは、ＲＡＭ又は半導体ドライブなどの高速ストレージ内に保存され、且つ、１つ又は複数のものは、ディスクドライブなどの廉価なストレージ内に保存される。
【００１６】
図１は、ネットワーク８４によって重複排除ストレージシステム３０に結合された複数のクライアントコンピュータシステム８２を示している。様々な実施形態において、クライアントコンピュータシステム８２を任意のタイプのネットワーク又はネットワークの組合せによって重複排除ストレージシステム３０に結合してもよい。例えば、ネットワーク８４は、任意のタイプの又は組合せのローカルエリアネットワーク（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ：ＬＡＮ）、ワイドエリアネットワーク（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ：ＷＡＮ）、イントラネット、インターネットなどを含んでもよい。ローカルエリアネットワークの例は、Ｅｔｈｅｒｎｅｔネットワーク、ＦＤＤＩ（Ｆｉｂｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ）ネットワーク（Ｅｔｈｅｒｎｅｔは登録商標、以下同じ）、及びトークンリングネットワークを含む。又、それぞれのコンピュータ又は装置を任意のタイプの有線又は無線接続媒体を使用してネットワークに結合してもよい。例えば、有線媒体は、Ｅｔｈｅｒｎｅｔ、ファイバチャネル、ＰＯＴＳ（Ｐｌａｉｎ  Ｏｌｄ  Ｔｅｌｅｐｈｏｎｅ  Ｓｅｒｖｉｃｅ）に接続されたモデムなどを含んでもよい。無線接続媒体は、衛星リンク、セルラーサービスを通じたモデムリンク、Ｗｉ−Ｆｉ（商標）などの無線リンク、ＩＥＥＥ８０２．１１（無線Ｅｔｈｅｒｎｅｔ）、Ｂｌｕｅｔｏｏｔｈ（Ｂｌｕｅｔｏｏｔｈは登録商標）などの無線通信プロトコルを使用する無線接続を含んでもよい。
【００１７】
重複排除ストレージシステム３０は、クライアントコンピュータシステム８２からネットワーク８４を介してファイルを受信すると共に、例えば、バックアップ保存のためにファイルを保存するバックアップソフトウェア１００を実行してもよい。例えば、バックアップソフトウェア１００は、クライアントコンピュータシステム８２上に配置されているファイルをバックアップするべくクライアントコンピュータシステム８２と定期的に通信してもよい。
【００１８】
重複排除ストレージシステム３０は、バックアップソフトウェア１００を実行すると共にクライアントコンピュータシステム８２と通信する１つ又は複数のバックアップサーバーコンピュータ３２を含んでもよい。図２は、一実施形態に従ってバックアップサーバーコンピュータ３２の一例を詳細に示す図である。一般に、バックアップサーバーコンピュータ３２は、任意のタイプの物理的コンピュータ又は演算装置であってよく、且つ、図２は、一例として付与されるに過ぎない。図示の実施形態においては、バックアップサーバー３２は、１つ又は複数の中央プロセッサユニット２１４、システムメモリ２１７（通常は、ＲＡＭであるが、ＲＯＭ、フラッシュＲＡＭ、又はこれらに類似したものを含んでもよい）、入出力コントローラ２１８、オーディオ出力インターフェイス２２２を介したスピーカシステム２２０などの外部オーディオ装置、ディスプレイアダプタ２２６を介した表示画面２２４などの外部装置、シリアルポート２２８及び２３０、（キーボードコントローラ２３３とインターフェイスされた）キーボード２３２、ストレージインターフェイス２３４、フロッピーディスク２３８（フロッピーは登録商標、以下同じ）を受け入れるべく動作可能なフロッピーディスクドライブ２３７、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌネットワーク２９０と接続するべく動作可能なＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｏｒ）インターフェイスカード２３５Ａ、ＳＣＳＩバス２３９に接続するべく動作可能なＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｏｒ）インターフェイスカード２３５Ｂ、光ディスク２４２を受け入れるべく動作可能な光ディスクドライブ２４０などのバックアップサーバー３２の主要なサブシステム又はコンポーネントを相互接続するバス２１２を含む。又、マウス２４６（又は、シリアルポート２２８を介してバス２１２に結合されたその他のポイント及びクリック装置）、（シリアルポート２３０を介してバス２１２に結合された）モデム２４７、及び（バス２１２に直接結合された）ネットワークインターフェイス２４８も含まれている。
【００１９】
バス２１２により、１つ又は複数の中央プロセッサ２１４とシステムメモリ２１７はデータ通信が可能であり、システムメモリは、前述のように、読み出し専用メモリ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ：ＲＯＭ）又はフラッシュメモリ（いずれも図示されてはいない）及びランダムアクセスメモリ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：ＲＡＭ）を含んでもよい。ＲＡＭは、一般に、その内部にバックアップソフトウェア１００を含むソフトウェアプログラムが読み込まれる主メモリである。ＲＯＭ又はフラッシュメモリは、その他のコードに加えて、周辺コンポーネントとのやり取りなどの基本的なハードウェア動作を制御するＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ−Ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）を収容することができる。バックアップサーバー３２と共に常駐するソフトウェアは、一般に、ハードディスクドライブ（例えば、ハードディスク２４４）、光ドライブ（例えば、光ドライブ２４０）、フロッピーディスクユニット２３７、又はその他のストレージ媒体などのコンピュータ可読媒体上に保存され、且つ、これを介してアクセスされる。更には、ソフトウェアは、ネットワークモデム２４７又はネットワークインターフェイス２４８を通じて受信することも可能である。
【００２０】
ストレージインターフェイス２３４は、ノード１０のその他のストレージインターフェイスと同様に、情報の保存及び／又は取得のためにディスクドライブ２４４などの標準的なコンピュータ可読媒体に接続することができる。バックアップソフトウェア１００は、クライアントコンピュータシステム８２から受信したファイルデータを１つ又は複数のディスクドライブ２４４上に保存してもよい。いくつかの実施形態においては、これに加えて又はこの代わりに、バックアップソフトウェア１００は、共有されたストレージ装置４０上にファイルを保存してもよい。いくつかの実施形態においては、共有されたストレージ装置４０をファイバチャネルネットワーク２９０を通じてバックアップサーバー３２に接続してもよい。その他の実施形態においては、共有されたストレージ装置４０を様々なその他のタイプのストレージインターフェイス又はネットワークの任意のものを通じてバックアップサーバー３２に結合してもよい。又、その他の実施形態においては、バックアップソフトウェア１００は、例えば、テープストレージ装置などのバックアップサーバーコンピュータ３２内に含まれた又はこれに結合された様々なその他のタイプのストレージ装置の任意のものにファイルデータを保存してもよい。
【００２１】
多くのその他の装置又はサブシステム（図示されてはいない）を同様の方式によってバックアップサーバー３２に接続してもよい。逆に、本開示を実施するために、図２に示されている装置のすべてのものが存在する必要はない。装置及びサブシステムは、図２に示されているものとは異なる方式によって相互接続することも可能である。本明細書に記述されているバックアップソフトウェア１００を実装するためのコードは、システムメモリ２１７、ディスクドライブ２４４、光ディスク２４２、又はフロッピーディスク２３８のうちの１つ又は複数のものなどのコンピュータ可読ストレージ媒体内に保存してもよい。バックアップサーバー３２上に提供されるオペレーティングシステムは、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステム、ＵＮＩＸ（登録商標）オペレーティングシステム、Ｌｉｎｕｘ（登録商標）オペレーティングシステム、又はその他のオペレーティングシステムであってよい。
【００２２】
図３は、バックアップサーバー３２のシステムメモリ２１７内に保存されている様々なソフトウェアモジュールを示している。ソフトウェアモジュールのプログラム命令は、バックアップサーバー３２の１つ又は複数のプロセッサによって実行可能である。図３に示されているソフトウェアモジュールは、本明細書に記述されている様々な機能を実装するソフトウェアアーキテクチャの一例として付与されている。その他の実施形態においては、その他のソフトウェアアーキテクチャを使用してもよい。
【００２３】
図示の実施形態においては、バックアップサーバー３２のソフトウェアは、バックアップサーバー３２の基本的な動作を管理するオペレーティングシステムソフトウェア９０２を含む。又、バックアップサーバー３２のソフトウェアは、ネットワーク通信モジュール９０４をも含む。オペレーティングシステムソフトウェア９０２、バックアップソフトウェア１００、又はその他のソフトウェアモジュールは、クライアントコンピュータシステム８２などのその他のコンピュータシステムと通信するべく、ネットワーク通信モジュール９０４を使用してもよい。又、バックアップサーバー３２のソフトウェアは、バックアップソフトウェア１００をも含む。バックアップソフトウェア１００は、インデックス管理モジュール９０８、保存モジュール９１０、及び回復モジュール９１２などの様々なモジュールを含む。バックアップソフトウェア１００の様々なモジュールによって実行される機能については、後述する。
【００２４】
バックアップソフトウェア１００のインデックス管理モジュール９０８は、１つの大きなインデックスの代わりに、複数のインデックスを生成及び使用してもよい。それぞれのインデックスは、重複排除システム内に保存されている様々なファイルセグメントの保存場所を規定してもよい。１つ又は複数のインデックスの第１のグループを第１タイプのストレージ装置上に保存してもよい。第１タイプのストレージ装置は、ストレージ装置のすべてのコンテンツに対する高速アクセスを可能にするストレージ装置であってよい。いくつかの実施形態においては、第１タイプのストレージ装置は、例えば、システムメモリ２１７などのランダムアクセスメモリ（ＲＡＭ）であってよい。その他の実施形態においては、第１タイプのストレージ装置は、半導体ドライブ（ＳＳＤ）、フラッシュメモリ装置、又はその他のタイプのストレージ装置であってよい。
【００２５】
１つ又は複数のインデックスの第２グループを別のタイプのストレージ装置上に保存してもよい。この第２タイプのストレージ装置は、その内部に非常に大量のデータを廉価に保存可能な経済的に廉価なストレージ装置であってよい。いくつかの実施形態においては、第２タイプのストレージ装置は、例えば、ディスクドライブ２４４などの１つ又は複数のディスクドライブであってよい。
【００２６】
ファイルをバックアップする際には、バックアップソフトウェア１００は、ディスクドライブ上に保存されているインデックスの第２グループではなく、高速ストレージ（例えば、ＲＡＭ）内に保存されているインデックスの第１グループを使用し、そのファイルのファイルセグメントの保存場所をルックアップするべく試みてもよい。インデックスの第１グループは、必要とされる大部分のファイルセグメントをルックアップすることができるように十分に大きくてよいが、ＲＡＭ内に収容されるべく十分に小さい。ファイルを回復する際には、後述するように、ディスクドライブ上に保存されているインデックスの第２グループを使用してもよい。
【００２７】
図４は、新しいファイルを重複排除ストレージシステム３０にバックアップする方法の一実施形態を示すフローチャート図である。本方法は、重複排除ストレージシステム３０の１つ又は複数のバックアップサーバーコンピュータ３２上において稼働するバックアップソフトウェア１００によって実装してもよい。
【００２８】
ブロック５０１に示されているように、ファイルを複数のセグメントに分割してもよい。ブロック５０３に示されているように、ハッシュ関数又はその他のアルゴリズムをセグメントのデータに適用することにより、それぞれのセグメントのフィンガプリント又はシグネチャを演算してもよい。それぞれのフィンガプリントごとに、以下のステップを実行してもよい。
【００２９】
ブロック５０５に示されているように、バックアップソフトウェア１００は、高速ストレージ（例えば、ＲＡＭ）内に保存されているインデックスの第１グループをチェックしてフィンガプリントのルックアップを試みてもよい。廉価なストレージ（例えば、ディスクドライブ）内に保存されているインデックスの第２グループは、フィンガプリントについてチェックされない。インデックスの第１グループは、ＲＡＭ又は別のタイプの高速ストレージ装置内に保存されているため、これらのインデックスには、迅速にアクセスすることができる。
【００３０】
フィンガプリントが見出されない場合には、これは、対応するファイルセグメントが重複排除ストレージシステム３０内に保存されていないであろうことを示している。従って、ブロック５０７に示されているように、そのセグメントを重複排除ストレージシステム３００に追加し、且つ、そのセグメントにアクセス可能な保存場所を規定する情報と共に、フィンガプリントを第１グループ内のインデックスに追加する。フィンガプリントを追加した後にインデックスが一杯になった場合には、ブロック５０９に示されているように、インデックスを、ディスクドライブ上に保存されているインデックスの第２グループに移動させてもよい。そのインデックスを第１グループ内において新しい空のインデックスによって置換してもよい。
【００３１】
又、バックアップソフトウェア１００は、ファイルのセグメントのフィンガプリントのリストを規定するファイル情報を保存してもよい。ブロック５１１に示されているように、現在のフィンガプリントをファイル情報内のフィンガプリントのリストに追加してもよい。更には、フィンガプリントが見出されたインデックス（又は、フィンガプリントが追加されたインデックス）をファイル情報に追加してもよい。この結果、バックアップソフトウェア１００は、ファイルの回復が必要になった場合に、フィンガプリントをルックアップするべく使用可能なインデックスを判定することができる。
【００３２】
図５は、重複排除ストレージシステム３０からファイルを回復する方法の一実施形態を示すフローチャート図である。本方法は、重複排除ストレージシステム３０の１つ又は複数のバックアップサーバーコンピュータ３２上において稼働するバックアップソフトウェア１００によって実装してもよい。
【００３３】
バックアップソフトウェア１００は、ファイルがバックアップされた際に保存されたファイルからファイル情報を取得してもよい。前述のように、ファイル情報は、ファイルのセグメントのフィンガプリントのリストを含む。ブロック６０１、６０３、及び６０５は、リスト内のそれぞれのフィンガプリントごとに実行してもよい。
【００３４】
ブロック６０１に示されているように、バックアップソフトウェア１００は、ファイル情報をチェックし、フィンガプリントによって識別された対応するファイルセグメントの保存場所を規定するインデックスを判定してもよい。次いで、ブロック６０３に示されているように、このインデックスにアクセスし、ファイルセグメントの保存場所を見出してもよい。次いで、ブロック６０５に示されているように、ファイルセグメントを取得してもよい。
【００３５】
すべてのファイルセグメントが取得されたら、それらのセグメントを連結してファイルを回復することができる。
【００３６】
いくつかの実施形態においては、ＲＡＭ内に保存されているインデックスの第１グループは、最も頻繁に遭遇するフィンガプリントを保存するベースインデックスと呼ばれる特殊なインデックスを含んでもよい。この結果、頻繁に使用されるフィンガプリントは、新しいファイルを重複排除ストレージシステムにバックアップする際にそれらのフィンガプリントを迅速に見出すことが可能な高速ストレージ内に留まることができよう。その他の実施形態においては、ベースインデックスは、その他の特殊なフィンガプリントを含んでもよい。例えば、いくつかの実施形態においては、それぞれのファイルの第１セグメントのフィンガプリントをベースインデックスに追加してもよい。
【００３７】
図６は、３つのインデックスがシステムメモリ（ＲＡＭ）２１７内に保存されている一例を示している。ベースインデックスと呼ばれるインデックス９０１Ａは、常にメモリ内に留まってよいが、その他の２つのインデックス９０１Ｂ及び９０１Ｃは、それらが一杯になった際には、ディスクドライブに移動させてもよい。ベースインデックス９０１Ａは、最も頻繁に使用されるファイルセグメントのフィンガプリントを最も頻繁に使用されるファイルセグメントの保存場所にマッピングしている。新しいファイルがストレージシステムに追加されるのに伴って、ファイルに収容されている新しいセグメントのフィンガプリントがインデックス９０１Ｂに追加される。この例においては、インデックス９０１Ｂは、現在、フィンガプリントＦＰ６、ＦＰ７、ＦＰ８、ＦＰ９、ＦＰ１０、及びＦＰ１１を含む。図７は、後の時点におけるインデックスを示している。インデックス９０１Ｂは、いまや、一杯であり、従って、新しいフィンガプリントは、いまや、インデックス９０１Ｃに追加されている。
【００３８】
図８は、インデックス９０１Ｃが一杯になった後の時点におけるインデックスを示している。新しいフィンガプリントを追加可能な新しいインデックス用の場所を生成するべく、インデックス９０１Ｂは、ＲＡＭ２１７からハードディスクドライブ２４４上に移動されている。更には、バックアップソフトウェア１００は、インデックス９０１Ｂの最も頻繁に使用されるフィンガプリント（ＦＰ８及びＦＰ１１）を判定し、且つ、これらをインデックス９０１Ａに追加している。新しいファイルセグメントの新しいフィンガプリントを追加するべく、新しいインデックス９０１Ｄが生成されている。
【００３９】
ここで、ストレージシステムに保存される対象である新しいファイルが受信され、且つ、そのファイルが、フィンガプリントＦＰ９を有するセグメントを含んでいると仮定する。バックアップソフトウェア１００の保存モジュール９１０は、フィンガプリントＦＰ９を使用することにより、ＲＡＭ２１７内に保存されているインデックス内においてセグメントの保存場所をルックアップするべく試みる。しかしながら、ＲＡＭ２１７内のインデックスのいずれもがフィンガプリントＦＰ９を含んでいないため、セグメントは見出されない。従って、この場合には、重複するセグメントがストレージシステムに追加される。但し、ＲＡＭ２１７内に保存されるインデックスは、必要とされる大部分のフィンガプリントの「ワーキングセット」を含むように、十分に大きなものであってよい。従って、重複するセグメントが追加される状況は、相対的に稀であろう。いくつかの実施形態においては、インデックス９０１Ｂ及び９０１Ｃは、数日間分又は数週間分のバックアップ作業において遭遇するすべてのセグメントのフィンガプリントを収容するべく、十分に大きなものであってよい。
【００４０】
ここで、フィンガプリントＦＰ１０を有するセグメントを使用するファイルの回復が必要であると仮定する。この場合にも、フィンガプリントＦＰ１０は、ＲＡＭ２１７内に保存されているインデックスのいずれにも含まれていない。しかしながら、ファイル情報は、そのファイルのセグメントをインデックス付けするべく使用したインデックスを示している。即ち、ファイル情報は、ファイルを回復することができるように、インデックス９０１Ｂを使用してファイルのセグメントの保存場所をルックアップするべきであると示している。従って、バックアップソフトウェア１００の回復モジュール９１２は、ディスクドライブ２４４上のインデックス９０１Ｂにアクセスしてもよい。
【００４１】
従って、ＲＡＭ内又はディスク上における保存を要する１つの大きなインデックスを使用する代わりに、複数の相対的に小さなインデックスが使用されている。最近追加されたセグメント及び最も頻繁に使用されるセグメントの大部分をルックアップするべく十分に大きな１つ又は複数のインデックスがＲＡＭ内に保存されている。新しいファイルをシステムに追加する際には、ＲＡＭ内のインデックスのみを使用し、ファイルセグメントの保存場所をルックアップする。この結果、ルックアップが、高速化され、且つ、スケーラブルになる。長期間使用されなかったインデックスは、ディスク上に保存され、且つ、これらのインデックスは、ファイルを回復する際にセグメントの保存場所をルックアップするべく使用することができる。
【００４２】
最も頻繁に使用されるセグメントのフィンガプリントは、ベースインデックス内に維持されており、且つ、常に利用可能な状態にある。ＲＡＭがセグメントのフィンガプリントのワーキングセットを維持するように十分に大きいものである限り、重複排除におけるセグメントルックアップにより、スケーラビリティを犠牲にすることなしに、高速を実現することができる。ＲＡＭ内に存在していないインデックスは、回復のためにのみ使用される。それぞれのファイルは、そのセグメントに使用されるインデックスを記録している。回復の際には、ディスクから古いインデックスをルックアップすることにより、それぞれのファイルのそれぞれのセグメントを依然として見出すことができる。
【００４３】
それぞれのインデックスは、１つの大きなインデックスを使用する従来のシステムよりも小さいため、エントリのルックアップ、生成、削除、及び変更などのインデックスを使用する動作が相対的に効率的である。ＲＡＭ内に保存されているインデックスは、システム内に保存されているすべてのセグメントのサブセットのフィンガプリントのみを収容しているため、これらのインデックスをサーチしてそれらが所与のフィンガプリントを収容しているかどうかの判定が相対的に高速である。ファイルデータのかなりの部分が新しいデータである場合があるため、特定のフィンガプリントがインデックス内に存在していないことを判定するための速度は、重要である。
【００４４】
ＲＡＭ内に保存されているインデックス内のフィンガプリントのワーキングセットが十分に大きくない場合には、システムは、セグメントの重複を結果的にもたらすことになろう。これは、費用と効率の間におけるトレードオフである。
【００４５】
回復の際には、いくつかのインデックスエントリのディスクからのサーチを要することになろう。これを更に高速化するべく、いくつかの実施形態においては、ディスク上のインデックスを、そのインデックスが使用されている間、ＲＡＭ内に読み込んでもよい。
【００４６】
以上、ファイルをバックアップ及び回復する方法の様々な実施形態について説明した。本方法は、相互の関連において動作する様々な装置によって実装され、且つ、これらの装置のうちの１つ又は複数のものの変形をもたらす。例えば、前述のように、インデックスを保存することにより、重複排除ストレージシステムのバックアップサーバーコンピュータ（又は、バックアップサーバーコンピュータによって使用されるストレージ装置）を変形させてもよい。
【００４７】
本明細書に記述されている様々な機能は、いくつかの実施形態においては、クラウドに基づいた演算技法又はＳａａｓ（Ｓｏｆｔｗａｒｅ  Ａｓ  Ａ  Ｓｅｒｖｉｃｅ）技法に従って実行してもよいことに留意されたい。例えば、いくつかの実施形態においては、バックアップソフトウェア１００の機能をクラウド演算サービスとして提供してもよい。
【００４８】
様々な実施形態は、コンピュータアクセス可能なストレージ媒体上において、上述の説明に従って実装された命令及び／又はデータを受信、送信、又は保存するステップを更に含んでもよいことに留意されたい。一般に、コンピュータアクセス可能なストレージ媒体は、使用の際に、命令及び／又はデータをコンピュータに提供するべく、１つ又は複数のコンピュータ（又は、プロセッサ）によってアクセス可能な任意のストレージ媒体を含んでもよい。例えば、コンピュータアクセス可能なストレージ媒体は、例えば、１つ又は複数のディスク（固定又はリムーバブル）、テープ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷなどの磁気又は光学媒体などのストレージ媒体を含んでもよい。ストレージ媒体は、ＲＡＭ（例えば、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  ＲＡＭ）、ＲＤＲＡＭ（Ｒａｍｂｕｓ  ＤＲＡＭ）、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）など）、ＲＯＭ、フラッシュメモリ、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）インターフェイスなどの周辺インターフェイスを介してアクセス可能な不揮発性メモリ（例えば、フラッシュメモリ）などの揮発性又は不揮発性メモリ媒体を更に含んでもよい。いくつかの実施形態においては、１つ又は複数のコンピュータは、ネットワーク及び／又は無線リンクなどの通信手段を介してストレージ媒体にアクセスしてもよい。
【００４９】
以上の内容は、説明を目的として、特定の実施形態を参照して記述した。しかしながら、以上の例示用の説明は、すべてを網羅したり、又は本発明を開示された形態そのままに限定することを意図したものではない。以上の開示内容に鑑み、多くの変更及び変形が可能である。実施形態は、本発明の原理とその実際的な適用を最良に説明することによって当業者が想定される特定の使用法に好適な様々な変更を伴って本発明及び様々な実施形態を最良に利用できるようにするべく、選択及び説明した。
【図１】
2013508810.tif 000003
【図２】
2013508810.tif 000004
【図３】
2013508810.tif 000005
【図４】
2013508810.tif 000006
【図５】
2013508810.tif 000007
【図６】
2013508810.tif 000008
【図７】
2013508810.tif 000009
【図８】
2013508810.tif 000010
【手続補正書】
【提出日】平成24年6月19日(2012.6.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プログラム命令を保存するコンピュータアクセス可能なストレージ媒体であって、
前記プログラム命令は、
１つ又は複数のインデックスの第１グループを第１タイプのストレージ装置上に保存するステップであって、前記第１グループのそれぞれのインデックスは、重複排除ストレージシステム内に保存されたファイルセグメントの保存場所を規定している、ステップと、
１つ又は複数のインデックスの第２グループを第２タイプのストレージ装置上に保存するステップであって、前記第２グループのそれぞれのインデックスは、前記重複排除ストレージシステム内に保存されたファイルセグメントの保存場所を規定している、ステップと、
前記重複排除ストレージシステム内に保存される対象の第１ファイルを受信するのに応答して、
前記第１ファイルを複数のファイルセグメントに分割するサブステップであって、前記複数のファイルセグメントは、前記第１ファイルを受信する前に前記重複排除ストレージシステム内に既に保存されていた特定のファイルセグメントを含み、前記インデックスの第２グループは、前記特定のファイルセグメントの保存場所を規定するインデックスを含む、サブステップと、
前記インデックスの第２グループではなく、前記インデックスの第１グループを使用して前記第１ファイルの前記複数のファイルセグメントの保存場所をルックアップするべく試みるサブステップと、
前記インデックスの第１グループのいずれのインデックスも前記特定のファイルセグメントの前記保存場所を規定していないと判定するのに応答して、前記特定のファイルセグメントの重複するコピーを前記重複排除ストレージシステム内に保存するサブステップと、
を含むステップと、
前記重複排除ストレージシステムから第２ファイルを回復するための要求を受信するのに応答して、
前記インデックスの第２グループの特定のインデックスが前記第２ファイルのファイルセグメントの保存場所を規定していると判定するサブステップと、
前記第２ファイルを回復するべく前記インデックスの第２グループの前記特定のインデックスを使用して前記第２ファイルの前記ファイルセグメントの前記保存場所をルックアップするサブステップと、
を含むステップと、
を実行可能である、コンピュータアクセス可能なストレージ媒体。
【請求項２】
前記プログラム命令は、
前記第１グループの特定のインデックスが最大サイズに到達したと判定するのに応答して、前記第１タイプのストレージ装置上に保存されている前記第１グループの前記特定のインデックスを前記ストレージ装置の第２タイプ上に保存されている前記第２グループに移動させるステップを更に実行可能である請求項１に記載のコンピュータアクセス可能なストレージ媒体。
【請求項３】
前記インデックスの第１グループは、頻繁に使用されるファイルセグメントの保存場所を規定する第１インデックスを含み、
前記プログラム命令は、
前記第１グループの前記特定のインデックスの複数の最も頻繁に使用されるファイルセグメントを判定するステップと、
前記第１グループの前記特定のインデックスを前記第２グループに移動させることを要すると判定するのに応答して、前記複数の最も頻繁に使用されるファイルセグメントを前記第１インデックスに追加するステップと、
を更に実行可能である請求項２に記載のコンピュータアクセス可能なストレージ媒体。
【請求項４】
前記プログラム命令は、
前記第１グループの前記特定のインデックスを前記第１タイプのストレージ装置上に保存されている新しいインデックスによって置換するステップを更に実行可能である請求項２に記載のコンピュータアクセス可能なストレージ媒体。
【請求項５】
前記第１グループの前記インデックスは、前記ファイルセグメントのフィンガプリントを前記ファイルセグメントの前記保存場所にマッピングすることにより、ファイルセグメントの保存場所を規定しており、
前記プログラム命令は、
前記第１ファイルの前記複数のファイルセグメントのフィンガプリントを判定することにより、且つ、
前記第１ファイルの前記複数のファイルセグメントの前記フィンガプリントを使用して前記第１グループの１つ又は複数のインデックス内において前記第１ファイルの前記複数のファイルセグメントの前記保存場所をルックアップするべく試みることにより、
前記インデックスの第１グループを使用して前記第１ファイルの前記複数のファイルセグメントの前記保存場所をルックアップするべく試みるステップ、
を実行可能である請求項１に記載のコンピュータアクセス可能なストレージ媒体。
【請求項６】
前記ストレージ装置の第１タイプは、
ランダムアクセスメモリ（ＲＡＭ）と、
半導体ドライブ（ＳＳＤ）と、
のうちの１つである請求項１に記載のコンピュータアクセス可能なストレージ媒体。
【請求項７】
前記第２タイプのストレージ装置は、１つ又は複数のディスクドライブである請求項１に記載のコンピュータアクセス可能なストーレージ媒体。
【請求項８】
１つ又は複数のインデックスの第１グループを第１タイプのストレージ装置上に保存するステップであって、前記第１グループのそれぞれのインデックスは、重複排除ストレージシステム内に保存されたファイルセグメントの保存場所を規定している、ステップと、
１つ又は複数のインデックスの第２グループを第２タイプのストレージ装置上に保存するステップであって、前記第２グループのそれぞれのインデックスは、前記重複排除ストレージシステム内に保存されたファイルセグメントの保存場所を規定している、ステップと、
前記重複排除ストレージシステム内に保存される対象の第１ファイルを受信するのに応答して、
前記第１ファイルを複数のファイルセグメントに分割するサブステップであって、前記複数のファイルセグメントは、前記第１ファイルを受信する前に前記重複排除ストレージシステム内に既に保存されていた特定のファイルセグメントを含み、前記インデックスの第２グループは、前記特定のファイルセグメントの保存場所を規定するインデックスを含む、サブステップと、
前記インデックスの第２グループではなく、前記インデックスの第１グループを使用して前記第１ファイルの前記複数のファイルセグメントの保存場所をルックアップするべく試みるサブステップと、
前記インデックスの第１グループのいずれのインデックスも前記特定のファイルセグメントの前記保存場所を規定していないと判定するのに応答して、前記特定のファイルセグメントの重複するコピーを前記重複排除システム内に保存するサブステップと、
を含むステップと、
前記重複排除ストレージシステムから第２ファイルを回復するための要求を受信するのに応答して、
前記インデックスの第２グループの特定のインデックスが前記第２ファイルのファイルセグメントの保存場所を規定していると判定するサブステップと、
前記第２ファイルを回復するべく前記インデックスの第２グループの前記特定のインデックスを使用して前記第２ファイルの前記ファイルセグメントの前記保存場所をルックアップするサブステップと、
を含むステップと、
を含む方法。
【請求項９】
前記第１グループの特定のインデックスが最大サイズに到達したと判定するのに応答して、前記第１タイプのストレージ装置上に保存されている前記第１グループの前記特定のインデックスを前記第２タイプのストレージ装置上に保存されている第２グループに移動させるステップを更に含む請求項８に記載の方法。
【請求項１０】
前記インデックスの第１グループは、頻繁に使用されるファイルセグメントの保存場所を規定する第１インデックスを含み、
前記方法は、
前記第１グループの前記特定のインデックスの複数の最も頻繁に使用されるファイルセグメントを判定するステップと、
前記第１グループの前記特定のインデックスを前記第２グループに移動させることを要すると判定するのに応答して、前記複数の最も頻繁に使用されるファイルセグメントを前記第１インデックスに追加するステップと、
を更に含む請求項９に記載の方法。
【請求項１１】
前記第１グループの前記特定のインデックスを前記第１タイプのストレージ装置上に保存されている新しいインデックスによって置換するステップを更に含む請求項９に記載の方法。
【請求項１２】
前記第１グループの前記インデックスは、前記ファイルセグメントのフィンガプリントを前記ファイルセグメントの前記保存場所にマッピングすることによってファイルセグメントの保存場所を規定しており、
前記方法は、
前記第１ファイルの前記複数のファイルセグメントのフィンガプリントを判定することにより、且つ、
前記第１ファイルの前記複数のファイルセグメントの前記フィンガプリントを使用して前記第１グループの１つ又は複数のインデックス内において前記第１ファイルの前記複数のファイルセグメントの前記保存場所をルックアップするべく試みることにより、
前記第１ファイルの前記複数のファイルセグメントの前記保存場所をルックアップするべく試みるステップ
を含む請求項８に記載の方法。
【請求項１３】
１つ又は複数のプロセッサと、
プログラム命令を保存するランダムアクセスメモリと、
を有するシステムであって、
前記プログラム命令は、
１つ又は複数のインデックスの第１グループを第１タイプのストレージ装置上に保存するステップであって、前記第１グループのそれぞれのインデックスは、重複排除ストレージシステム内に保存されたファイルセグメントの保存場所を規定している、ステップと、
１つ又は複数のインデックスの第２グループを第２タイプのストレージ装置上に保存するステップであって、前記第２グループのそれぞれのインデックスは、前記重複排除ストレージシステム内に保存されたファイルセグメントの保存場所を規定している、ステップと、
前記重複排除ストレージシステム内に保存される対象の第１ファイルを受信するのに応答して、
前記第１ファイルを複数のファイルセグメントに分割するサブステップであって、前記複数のファイルセグメントは、前記第１ファイルを受信する前に前記重複排除ストレージシステム内に既に保存されていた特定のファイルセグメントを含み、前記インデックスの第２グループは、前記特定のファイルセグメントの保存場所を規定するインデックスを含む、サブステップと、
前記インデックスの第２グループではなく、前記インデックスの第１グループを使用して前記第１ファイルの前記複数のファイルセグメントの保存場所をルックアップするべく試みるサブステップと、
前記インデックスの第１グループのいずれのインデックスも前記特定のファイルセグメントの前記保存場所を規定していないと判定するのに応答して、前記特定のファイルセグメントの重複するコピーを前記重複排除ストレージシステム内に保存するサブステップと、
を含むステップと、
前記重複排除ストレージシステムから第２ファイルを回復するための要求を受信するのに応答して、
前記インデックスの第２グループの特定のインデックスが前記第２ファイルのファイルセグメントの保存場所を規定していると判定するサブステップと、
前記第２ファイルを回復するべく前記インデックスの第２グループの前記特定のインデックスを使用して前記第２ファイルの前記ファイルセグメントの前記保存場所をルックアップするサブステップと、
を含むステップと、
を前記１つ又は複数のプロセッサによって実行可能である、システム。
【請求項１４】
前記プログラム命令は、
前記第１グループの特定のインデックスが最大サイズに到達したと判定するのに応答して、前記第１タイプのストレージ装置上に保存されている前記第１グループの前記特定のインデックスを前記第２タイプのストレージ装置上に保存されている前記第２グループに移動させるステップ
を１つ又は複数のプロセッサによって更に実行可能である請求項１３に記載のシステム。
【請求項１５】
前記インデックスの第１グループは、頻繁に使用されるファイルセグメントの保存場所を規定する第１インデックスを含み、
前記プログラム命令は、
前記第１グループの前記特定のインデックスの複数の最も頻繁に使用されるファイルセグメントを判定するステップと、
前記第１グループの前記特定のインデックスを前記第２グループに移動させることを要すると判定するのに応答して、前記複数の最も頻繁に使用されるファイルセグメントを前記第１インデックスに追加するステップと、
を前記１つ又は複数のプロセッサによって更に実行可能である請求項１３に記載のシステム。
【請求項１６】
前記第１グループの前記インデックスは、前記ファイルセグメントのフィンガプリントを前記ファイルセグメントの前記保存場所にマッピングすることによってファイルセグメントの保存場所を規定しており、
前記プログラム命令は、
前記第１ファイルの前記複数のファイルセグメントのフィンガプリントを判定することにより、且つ、
前記第１ファイルの前記複数のファイルセグメントの前記フィンガプリントを使用して前記第１グループの１つ又は複数のインデックス内において前記第１ファイルの前記複数のファイルセグメントの前記保存場所をルックアップするべく試みることにより、
前記インデックスの第１グループを使用して前記第１ファイルの前記複数のファイルセグメントの前記保存場所をルックアップするべく試みるステップ
を前記１つ又は複数のプロセッサによって更に実行可能である請求項１３に記載のシステム。
【国際調査報告】
2013508810.tif 000011
2013508810.tif 000012