(57)【要約】  幾つかの実施例に基づき、インデックスを処理するための技術が、識別子(identifier)に関連するインデックスの一部を受信することを含む。また、前記インデックスを処理するための技術は、前記識別子が格納されているかを判断し、且つ前記識別子が格納されていると判断された場合、前記受信したインデックスの一部をその格納されている識別子と実質上同じエントリに格納することを含む。【選択図】図１
2008515114.tif 000002
【特許請求の範囲】
【請求項１】
識別子(identifier)に関連するインデックスの一部を受信するステップと、
前記識別子が格納されているかを判断するステップと、
前記識別子が格納されていると判断される場合、前記受信したインデックスの一部をその格納されている識別子と実質上同じエントリに格納するステップと、
を含むインデックス処理方法。
【請求項２】
前記識別子が格納されていないと判断される場合、前記受信したインデックスの一部を新しいエントリとして格納するステップを、更に備えた請求項１に記載の方法。
【請求項３】
前記受信したインデックスの一部をディスクに格納する、請求項２に記載の方法。
【請求項４】
前記インデックスの一部がインデックスのＤＩＲコンポーネントである、請求項１に記載の方法。
【請求項５】
前記インデックスの一部が前記インデックスのノードコンポーネントである、請求項１に記載の方法。
【請求項６】
前記識別子が固有の(unique)識別子である、請求項１に記載の方法。
【請求項７】
前記識別子がｉノード(inode)ナンバーである、請求項１に記載の方法。
【請求項８】
前記識別子がディスクに格納されている、請求項１に記載の方法。
【請求項９】
最初の識別子を探すステップと、前記最初の識別子に一致する親の識別子を持つエントリを探すステップとを、更に含む請求項１に記載の方法。
【請求項１０】
前記一致する親の識別子のエントリがインデックスツリーの次のレベルとして識別される、請求項９に記載の方法。
【請求項１１】
インデックス処理システムであって、
識別子(identifier)に関連するインデックスの一部を受信し、
識別子が格納されているかを判断し、
前記受信したインデックスの一部を、前記識別子が格納されていると判断された場合、その格納されている識別子と実質上同じエントリに格納する、ように構成されたプロセッサーと、
前記プロセッサーと接合し、当該プロセッサーに命令を提供するメモリと、
を備えたインデックス処理システム。
【請求項１２】
前記プロセッサーが、前記識別子が格納されていないと判断された場合、前記受信したインデックスの一部を新しいエントリとして格納するよう更に構成された、請求項１１に記載のインデックス処理システム。
【請求項１３】
前記受信したインデックスの一部をディスクに格納する、請求項１２に記載のインデックス処理システム。
【請求項１４】
前記プロセッサーが、最初の識別子を探し、且つ前記最初の識別子に一致する親の識別子をもつエントリを探すよう更に構成された、請求項１１に記載のインデックス処理システム。
【請求項１５】
前記一致する親の識別子のエントリがインデックスツリーの次のレベルとして識別される、請求項１４に記載のインデックス処理システム。
【請求項１６】
インデックスを処理するコンピュータプログラム製品であって、コンピュータ読み取り可能な記憶媒体に実装され、
識別子(identifier)に関連するインデックスの一部を受信すること、
前記識別子が格納されているかを判断すること、
前記識別子が格納されていると判断された場合、前記受信したインデックスの一部をその格納されている識別子と実質上同じエントリに格納すること、についてのコンピュータ命令を含んだコンピュータプログラム製品。
【請求項１７】
前記識別子が格納されていないと判断された場合、前記受信したインデックスの一部を新しいエントリとして格納する命令を更に含む、請求項１６に記載のコンピュータプログラム製品。
【請求項１８】
前記受信したインデックスの一部をディスクに格納する、請求項１７に記載のコンピュータプログラム製品。
【請求項１９】
最初の識別子を探す命令と、前記最初の識別子に一致する親の識別子のエントリを探す命令とを更に含む、請求項１６に記載のコンピュータプログラム製品。
【請求項２０】
前記一致する親の識別子をもつエントリがインデックスツリーの次のレベルとして識別される、請求項１９に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ環境に係り、より詳細には、データのバックアップに係る。
【背景技術】
【０００２】
コンピュータ環境においてデータをバックアップすることは日常茶飯事である。テープドライブ装置やハードドライブ装置などのバックアップメディアにデータをバックアップするとき、追加的な情報（ここではインデックスと言う）もまた、そのデータをバックアップするコンピュータシステムから渡される。このインデックスはバックアップ中のデータに関する情報、（例えばどのようにバックアップデータが構成されているか）を提供する。インデックスをランダムな順序で受け取ることもあり、通常は、受け取ったインデックスを再編成する必要がある。多数のインデックスに対して、バックアップの最後にインデックスを編成することは、長い時間が必要であり、且つ高いシステムリソースが消費されることとなる。通常、インデックスの再編には非常に長時間が必要であり、この時間を回避する方法で、インデックスを編成できることが望まれている。
【発明の開示】
【課題を解決するための手段】
【０００３】
本発明は様々な方法で実現し得る。様々な方法とは、プロセス、装置、システム、合成物、あるいは、コンピュータで読み取り可能なメディア（例えば、コンピュータ読み取り可能記録メディア又は、プログラム命令が光若しくは電気的な通信リンクに送られるネットワーク等）を含むものである。本明細書では、このような実現方法や本発明がとり得る他の形式を技術として言及する。一般に、開示された処理ステップの順序は発明の範囲内で変わり得る。
【０００４】
本発明の一又は複数の実施例の詳細な説明が、本発明の原理を示した添付図に従って開示される。そのような実施例に関連して本発明を記載するが、本発明は開示した実施例に限るものではない。発明の範囲は請求項のみにより限定され、発明は多数の代替案、修正、あるいは均等物を含む。本発明の完全な理解を得るため、以下に幾つかの具体的な詳細を説明する。これらの詳細は例を示すためのものであり、本発明は、説明した詳細に関わらず請求項に従い実現され得る。明確さを目的として、本発明を不必要に不明瞭にしないようにするため、本発明に関連する技術分野で知られている技術構成については詳細には説明しない。
【発明を実施するための最良の形態】
【０００５】
図１は、本発明を実現するのに適切なシステムのブロック図である。この例では、データサーバ１００はバックアップメディア１０２にデータを送る。また、データサーバ１００はバックアップサーバ１０４にもインデックスを送る。
【０００６】
図２は、インデックス処理のための実施例による方法を示すフロー図である。この例では、インデックスをばらばらに受信する。例えば、特別なデータ断片のインデックスはＤＩＲコンポーネントとＮＯＤＥコンポーネントを有している。ここで、ＤＩＲはinodeナンバーと、親のinodeナンバーと、インデックス名とを含んでいる。この実施例では、inodeナンバーはインデックスを識別する固有の番号である。インデックスのＮＯＤＥコンポーネントもまた、stat infoなどのインデックス属性と同様なＤＩＲinodeナンバーに一致するinodeナンバーを含む。stat infoの例として、サイズ、タイプ、許可、作成日、更新日のようなインデックスに関する情報がある。
【０００７】
この例ではインデックスコンポーネントが受信される（２００）。ここで使用されるインデックスコンポーネントは、ＤＩＲコンポーネントやＮＯＤＥコンポーネントなど、インデックスの一部である。次に、インデックスコンポーネントのinodeナンバーが既に格納されているかどうかを調べる（２０２）。一つの実施例では、inodeナンバーはＢ＋ツリーのようなディスク上のバランスツリー構造で格納される。Ｂ＋ツリー構造は、Ｌｅｇａｔｏ株式会社ＥＭＣ部門のＷＩＳＳなどのサーチライブラリと関連して使用される。また、他の実施例としては、inodeナンバーはインデックスを識別する固有の番号であり、インデックスのすべてのコンポーネントはそのナンバーに関連している。
【０００８】
もし、この特別なインデックスのinodeナンバーが格納されていなければ、受信したインデックスコンポーネントを新しいエントリとして格納する（２０８）。例えば、ＮＯＤＥコンポーネントを受信して、そのインデックスのinodeナンバーがディスク上のバランスツリーに格納されていなければ、この受信したコンポーネントを新しいエントリとしてバランスツリーに格納する。
【０００９】
もしこの特別なインデックスのinodeナンバーが格納されていると判れば、受信したインデックスコンポーネントがＤＩＲであるか否かを調べる（２０４）。もしＤＩＲでなければ、ＮＯＤＥコンポーネントであるかと仮定し、全てのマッチングinodeナンバーのために、格納されたマッチングinodeナンバーと同じエントリに記録する（２１０）。もし受信したインデックスコンポーネントがＤＩＲであれば（２０４）、格納されたマッチング・インデックスのエントリがＮＯＤＥを含むかどうかを調べる（２０６）。含まなければ、受信したＤＩＲを新しいエントリとして格納する（２１２）。
【００１０】
格納されたマッチング・インデックスのエントリがＮＯＤＥを含む場合（２０６）、格納済みのマッチング・インデックスのひとつがＤＩＲであるか調べる（２２０）。もし、マッチングinodeナンバーを持つどんなＤＩＲコンポーネントも格納されてはいないが、ＮＯＤＥエントリがあれば、マッチングＮＯＤＥエントリを受信したＤＩＲコンポーネントにアップデートする（２２４）。しかしながら、格納されたマッチング・インデックスのエントリのひとつがＤＩＲであれば（２２０）、ＮＯＤＥの属性をマッチング・エントリのひとつからコピーし、受信したＤＩＲコンポーネントとともに新しいエントリに格納する（２２２）。
【００１１】
図３は幾つかの実施例に基づくインデックス処理方法のフロー図である。この例では、インデックスの断片を再構成し、インデックスのエントリとしてバランスツリーに格納し、インデックスツリーを再構築する。図４と関連して論ずると、図３がよく理解できる。
【００１２】
図４は図３と関連して論ずるインデックスツリーの一例であり、幾つかの実施例に基づき、inodeナンバーによりインデックスを同定する。この例では、トップのインデックスがinodeナンバー２を持つインデックス構造を含むツリーを示す。inodeナンバー３及び４を持つインデックスはinodeナンバー２の子として示され、inodeナンバー５，６，７、および８はinodeナンバー３と４の子である。ここではinodeナンバー２はinodeナンバー３及びinodeナンバー４の親として参照され、inodeナンバー３はinodeナンバー５とinodeナンバー６の親として参照される。この例では、inodeナンバー２は、inodeナンバー３のディレクトリとinodeナンバー４の別のディレクトリを含むディレクトリである。inodeナンバー３は、inodeナンバー５を持つファイルとinodeナンバー６を持つ別のファイルとを含むディレクトリである。
【００１３】
図３に示した例では、最上位のinodeナンバーは格納されたinodeナンバーから見出せる（３００）。例えば、ツリーの最上位のinodeナンバーをinodeナンバー２とあらかじめ決めておく。従って、Ｂ＋ツリーのようなバランスツリーでサーチを実行し、inodeナンバー２を見つける。
【００１４】
次に、親が最上位のinodeナンバーであるインデックスエントリを見つける（３０２）。例えば、図４に示した例では、親が最上位のinodeナンバーであるインデックスはinodeナンバー３とinodeナンバー４である。従って、親の情報に基づくバランスツリーでサーチを行い、inodeナンバー２と等しい親を持つインデックスエントリを見つける。幾つかの実施形態では、親のinodeナンバーをインデックスのＤＩＲコンポーネントに格納する。
【００１５】
これらのインデックスエントリはインデックスツリーの次のレベルとして識別される（３０４）。次に、これらのinodeナンバーが親であるエントリがあるか否かを調べる（３０６）。これらのinodeナンバーが親であるインデックスエントリが存在しなければ、再構成は完了する。しかしながら、これらのinodeナンバーが親であるエントリが存在すれば、新しく発見されたインデックスエントリがインデックスツリーの次のレベルとして識別される（３０４）。
【００１６】
図５は、幾つかの実施例に基づいたインデックス処理方法のフロー図である。この例では、インデックスは、データサーバからバックアップサーバに、多重断片というより単一断片として配信される。ここで、inodeナンバーは受信されず、インデックスのパスが受信される。例えば、インデックスｄがａ／ｂ／ｃ／ｄのパスとして受信される。ここで、ｃはｄの親であり、ｂはｃの親であり、ａはｂの親である。さらに付け加えると、別のインデックスｄがそのパスに沿って受信される場合、そのインデックスｄは先のインデックスｄとは同じではない。同じ名前のファイルが、例えばａ／ｃ／ｂ／ｄという異なるディレクトリの下で起こり得る。これらのファイルは同じパスを持っていない。従って、この例においては、ｄといった名前でサーチすることは有用ではない。ある実施例として、擬似のinodeナンバーをパスのエントリとして生成する。他の実施例として、このinodeナンバーは固有である。ディレクトリのツリーをメモリ内に生成する。そこには、インデックス名と割り当てられたinodeナンバーと、親のinodeナンバーが含まれ、inodeナンバーか親のinodeナンバーかのどちらか一方をサーチすることでクイックサーチが行われる。
【００１７】
図５に示した例では、インデックスがａ／ｂ／ｃ／ｄなどのインデックスのパスで受信される（５００）。パスエントリがパスから検索されたか否か調べる（５０２）。もしパスエントリがパスから検索されていないのでなければ、処理は終了である。もし、「ｂ」のようにパスエントリがパスより検索されたのであれば、親のinodeナンバーをディレクトリツリーから検索する（５０４）。ディレクトリツリーはディレクトリのリストを含んでいる。幾つかの実施例の場合、ディレクトリツリーはメモリに記憶される、一方でインデックスツリーはディスクに記憶される。次に、パスエントリがディレクトリツリーの中にあるか否かを調べる（５０６）。もしパスエントリがすでにディレクトリツリーにあれば、次のエントリを受信したパスから検索する（５０２）。幾つかの実施例では、パスエントリは左から右へ−親から子へ−と検索される。例えば、パスａ／ｂ／ｃ／ｄにおいては、ａ、次にｂ、次にｃ、次にｄの順である。
【００１８】
もしパスエントリがディレクトリツリーにない場合（５０６）、この例では、固有のinodeナンバーをパスエントリに割り当てる（５０８）。パスエントリがディレクトリであるか否かを調べる（５１０）。幾つかの実施例では、ファイルはディレクトリツリーに保存されないが、ディレクトリは保存される。ディレクトリには少なくとも一人の子がいるが、ファイルにはいない。もしパスエントリがディレクトリであれば、ディレクトリツリーに加える（５１２）。幾つかの実施例では、ディレクトリ名と、その割り当てられたinodeナンバーと、親のinodeナンバーとがディレクトリツリーに格納される。例えば、パスａ／ｂ／ｃ／ｄがインデックス「ｄ」として受信され、「ｃ」がinodeナンバー４に割り当てられ、「ｄ」がinodeナンバー５に割り当てられるならば、「ｄ」の親のinodeナンバーは４である。パスエントリがディレクトリツリーに加えられるか（５１２）、又はパスエントリがディレクトリであれば（５１０）、インデックスはディスク上のバランスツリーに格納される（５１４）。そして、次のパスエントリがもしあれば検索される（５０２）。
【００１９】
その後、図３に例示した方法と類似の方法によりインデックスツリーを再構築することができる。本実施例では、バランスツリーよりもむしろメモリに保存されたディレクトリツリーがサーチされ、inodeナンバー及び親のinodeナンバーが見出される。
【００２０】
上述の実施例は明瞭な理解を目的として詳しく記述したが、本発明はその詳細な記述に限るものではない。本発明を実現する多くの代替手段がある。説明した実施形態は実施例であり、限定するものではない。
【図面の簡単な説明】
【００２１】
【図１】本発明の実施形態に基づくシステムの一例を示すブロック図である。
【図２Ａ】インデックス処理を実現する方法の一例を示すフロー図である。
【図２Ｂ】インデックス処理を実現する方法の一例を示すフロー図である。
【図３】インデックス処理を実現する他の実施例を示すフロー図である。
【図４】図３に関する、inodeナンバーにより識別されるインデックスエントリによるインデックスツリーの一例である。
【図５】インデックス処理を実現する他の実施例を示すフロー図である。
【図１】
2008515114.tif 000003
【図２Ａ】
2008515114.tif 000004
【図２Ｂ】
2008515114.tif 000005
【図３】
2008515114.tif 000006
【図４】
2008515114.tif 000007
【図５】
2008515114.tif 000008
【国際調査報告】
2008515114.tif 000009