(57)【要約】【課題】格納データの重複排除率を低下させることなくデータ復元処理に要する時間を短縮する。【解決手段】ストレージ装置に格納しようとする前記データを前記データ断片に分割するステップと、前記データを分割後の前記データ断片の構成によって記録するステップと、前記データ断片について、同一の前記データ断片が存在するか判定するステップと、同一の前記データ断片が存在すると判定した場合、１の前記データ断片を前記ストレージ装置の記憶領域に格納し、当該データ断片固有の属性を示す情報であるデータ断片属性情報を生成して記録するステップと、前記ストレージ装置の前記記憶領域に格納されている前記データの読み出し要求を受けた場合に、読み出し対象データを形成している前記データ断片の構成を取得して、該当する前記データ断片を前記ストレージ装置の前記記憶領域から読みだして前記データを復元するステップと、記録された前記データ断片を取得して連結することによりチャンク統合可否を判定する対象である統合対象データを生成し、当該統合対象データについて特定のデータパターンの繰り返しを繰り返しデータパターンがあるか検出するステップと、検出された前記繰り返しデータパターンを有する複数の前記データ断片の列を統合データ断片として、各統合データ断片から当該統合データ断片の属性を表す情報である統合データ断片属性情報を生成して記録するステップとを有する。
2013051129.tif 000002
【特許請求の範囲】
【請求項１】
ストレージ装置に格納されるデータを構成する１のデータ断片と重複するデータ断片である重複データ断片を前記ストレージ装置の記憶領域から排除するための格納データの重複排除方法であって、
前記ストレージ装置に格納しようとする前記データを前記データ断片に分割するステップと、
前記データを分割後の前記データ断片の構成によって記録するステップと、
前記データ断片について、同一の前記データ断片が存在するか判定するステップと、
同一の前記データ断片が存在すると判定した場合、１の前記データ断片を前記ストレージ装置の記憶領域に格納し、当該データ断片固有の属性を示す情報であるデータ断片属性情報を生成して記録するステップと、
前記ストレージ装置の前記記憶領域に格納されている前記データの読み出し要求を受けた場合に、読み出し対象データを形成している前記データ断片の構成を取得して、該当する前記データ断片を前記ストレージ装置の前記記憶領域から読みだして前記データを復元するステップと、
記録された前記データ断片を取得して連結することによりチャンク統合可否を判定する対象である統合対象データを生成し、当該統合対象データについて特定のデータパターンの繰り返しを繰り返しデータパターンがあるか検出するステップと、
検出された前記繰り返しデータパターンを有する複数の前記データ断片の列を統合データ断片として、各統合データ断片から当該統合データ断片の属性を表す情報である統合データ断片属性情報を生成して記録するステップとを有する、格納データの重複排除方法。
【請求項２】
請求項１に記載の格納データの重複排除方法であって、前記データ断片属性情報は当該データ断片について所定のハッシュ関数を使用して算出されたハッシュ値と当該データ断片の前記記憶領域における保存先情報とを含み、前記データ断片に重複データ断片が存在するかは、各データ断片について前記ハッシュ値を比較することで実行される、格納データの重複排除方法。
【請求項３】
請求項２に記載の格納データの重複排除方法であって、前記統合データ断片に含まれている複数の前記データ断片について前記保存先情報を取得し、前記統合データ断片に含まれている前記データ断片が前記保存先情報に従って、前記ストレージ装置との前記記憶領域上で連続して格納されるように再配置する、格納データの重複排除方法。
【請求項４】
請求項１に記載の格納データの重複排除方法であって、検出した前記繰り返しデータパターンの中に、同一の前記データ断片が複数含まれる場合、前記繰り返しデータパターンを分割して前記同一のデータ断片が含まれないようにする、格納データの重複排除方法。
【請求項５】
請求項１に記載の格納データの重複排除方法であって、前記繰り返しデータパターンが所定の長さに満たない場合、又は前記繰り返しデータパターンの検出数が所定値に満たない場合、該当する繰り返しデータパターンを記録しない、格納データの重複排除方法。
【請求項６】
請求項１に記載の格納データの重複排除方法であって、検出された複数の前記繰り返しデータパターンが、同一の前記データ断片を含んでいる場合、所定の規則により選択したいずれか１の前記繰り返しデータパターン以外の繰り返しデータパターンを記録しない、格納データの重複排除方法。
【請求項７】
請求項１に記載の格納データの重複排除方法であって、前記データ断片を取得して連結する際に、前記ストレージ装置に対して書き込みあるいは読み出しされる前記データの区切り位置をまたいで前記繰り返しデータパターンを認識しない、格納データの重複排除方法。
【請求項８】
請求項１に記載の格納データの重複排除方法であって、前記繰り返しデータパターンを検出する際に、すでに記録されている前記統合データ断片の長さより短い箇所に存在する前記データ断片の区切り位置は、前記繰り返しデータパターンの検出に関しては認識しないように構成されている、格納データの重複排除方法。
【請求項９】
ストレージ装置に格納されるデータを構成する１のデータ断片と重複するデータ断片である重複データ断片を前記ストレージ装置の記憶領域から排除するための格納データの重複排除装置であって、プロセッサとメモリとを有し、それぞれが前記メモリ上で該当するプログラムを前記プロセッサが実行することにより実現される、
前記ストレージ装置に格納しようとする前記データを前記データ断片に分割するデータ分割部と、
前記データを分割後の前記データ断片の構成によって記録するデータ登録部と、
前記データ断片について、同一の前記データ断片が存在するか判定し、同一の前記データ断片が存在すると判定した場合、１の前記データ断片を前記ストレージ装置の記憶領域に格納し、当該データ断片固有の属性を示す情報であるデータ断片属性情報を生成して記録するデータ照合部と、
前記ストレージ装置の前記記憶領域に格納されている前記データの読み出し要求を受けた場合に、読み出し対象データを形成している前記データ断片の構成を取得して、該当する前記データ断片を前記ストレージ装置の前記記憶領域から読みだして前記データを復元するデータ復元部と、
記録された前記データ断片を取得して連結することによりチャンク統合可否を判定する対象である統合対象データを生成し、当該統合対象データについて特定のデータパターンの繰り返しを繰り返しデータパターンがあるか検出するデータ解析部と、
検出された前記繰り返しデータパターンを有する複数の前記データ断片の列を統合データ断片として、各統合データ断片から当該統合データ断片の属性を表す情報である統合データ断片属性情報を生成して記録するデータ更新部とを有する、格納データの重複排除装置。
【請求項１０】
請求項９に記載の格納データの重複排除装置であって、前記データ断片属性情報は当該データ断片について所定のハッシュ関数を使用して算出されたハッシュ値と当該データ断片の前記記憶領域における保存先情報とを含み、前記データ断片に重複データ断片が存在するかは、各データ断片について前記ハッシュ値を比較することで実行される、格納データの重複排除装置。
【請求項１１】
請求項１０に記載の格納データの重複排除装置であって、前記統合データ断片に含まれている複数の前記データ断片について前記保存先情報を取得し、前記統合データ断片に含まれている前記データ断片が前記保存先情報に従って、前記ストレージ装置との前記記憶領域上で連続して格納されるように再配置する、格納データの重複排除装置。
【請求項１２】
請求項９に記載の格納データの重複排除装置であって、検出した前記繰り返しデータパターンの中に、同一の前記データ断片が複数含まれる場合、前記繰り返しデータパターンを分割して前記同一のデータ断片が含まれないようにする、格納データの重複排除装置。
【請求項１３】
請求項９に記載の格納データの重複排除装置であって、前記繰り返しデータパターンが所定の長さに満たない場合、又は前記繰り返しデータパターンの検出数が所定値に満たない場合、該当する繰り返しデータパターンを記録しない、格納データの重複排除装置。
【請求項１４】
請求項９に記載の格納データの重複排除装置であって、検出された複数の前記繰り返しデータパターンが、同一の前記データ断片を含んでいる場合、所定の規則により選択したいずれか１の前記繰り返しデータパターン以外の繰り返しデータパターンを記録しない、格納データの重複排除装置。
【請求項１５】
請求項１０に記載の格納データの重複排除装置であって、前記データ断片を取得して連結する際に、前記ストレージ装置に対して書き込みあるいは読み出しされる前記データの区切り位置をまたいで前記繰り返しデータパターンを認識しない、格納データの重複排除装置。
【請求項１６】
請求項９に記載の格納データの重複排除装置であって、前記繰り返しデータパターンを検出する際に、すでに記録されている前記統合データ断片の長さより短い箇所に存在する前記データ断片の区切り位置は、前記繰り返しデータパターンの検出に関しては認識しないように構成されている、格納データの重複排除装置。
【請求項１７】
ストレージ装置に格納されるデータを構成する１のデータ断片と重複するデータ断片である重複データ断片を前記ストレージ装置の記憶領域から排除するために使用される重複排除プログラムであって、
前記ストレージ装置に格納しようとする前記データを前記データ断片に分割するステップと、
前記データを分割後の前記データ断片の構成によって記録するステップと、
前記データ断片について、同一の前記データ断片が存在するか判定するステップと、
同一の前記データ断片が存在すると判定した場合、１の前記データ断片を前記ストレージ装置の記憶領域に格納し、当該データ断片固有の属性を示す情報であるデータ断片属性情報を生成して記録するステップと、
前記ストレージ装置の前記記憶領域に格納されている前記データの読み出し要求を受けた場合に、読み出し対象データを形成している前記データ断片の構成を取得して、該当する前記データ断片を前記ストレージ装置の前記記憶領域から読みだして前記データを復元するステップと、
記録された前記データ断片を取得して連結することによりチャンク統合可否を判定する対象である統合対象データを生成し、当該統合対象データについて特定のデータパターンの繰り返しを繰り返しデータパターンがあるか検出するステップと、
検出された前記繰り返しデータパターンを有する複数の前記データ断片の列を統合データ断片として、各統合データ断片から当該統合データ断片の属性を表す情報である統合データ断片属性情報を生成して記録するステップとをコンピュータに実行させる重複排除プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、格納データの重複を排除する方法、情報処理装置、及び重複排除プログラムに関し、ハードディスクなどの記録媒体内に格納されるデータについて格納データの重複を排除してデータ容量を削減することができる、格納データの重複を排除する方法、情報処理装置、及び重複排除プログラムに関する。
【背景技術】
【０００２】
企業などで生成されるデジタルデータの量は年々増加している。それに伴い、このデジタルデータを格納するために必要なストレージ容量も増加し、データ管理コストの増大を引き起こしている。そのような背景のもと、「重複排除」と呼ばれるデータ削減機能を備えたストレージ製品及び技術が注目されている。【０００３】
一般的な重複排除の処理は、次の３プロセスで行われる。
（１）チャンキング処理：ストレージに格納されているデータを、チャンクと呼ばれるデータ断片に分割する。
（２）重複判定処理：新たに作成したチャンクと同一のチャンクがすでにストレージ内に存在するか（重複して格納されているか）を判定する。
（３）メタデータ作成処理：新たに作成したチャンクのうち、重複しないチャンクのみをストレージに保存し、重複判定処理及び格納されたチャンクデータから元データを復元する際に使う情報（以下、「メタデータ」と呼ぶ）を作成する。【０００４】
上記の処理では、重複する複数のチャンクに対して実データを一つだけストレージに保存するので、バックアップデータなどほぼ同一なデータが何度も現れる場合に大幅なデータ削減が期待できる。【０００５】
この重複排除処理では、チャンキングの仕方が、性能を決める重要な要素となる。一般に、作成するチャンクのチャンクサイズが小さいほど、削減できる実データの割合（重複排除率）は大きくなる。しかし、チャンクサイズを過度に小さく設定した場合、各チャンクを管理するのに必要なメタデータの量と、チャンクからもとのデータを復元するのにかかる時間が増大するという問題が生じる。逆に、チャンクサイズを大きく設定するほど、各チャンクに対応するメタデータの量とデータ復元にかかる時間とを小さくすることができるが、重複排除率は低下するという問題がある。【０００６】
上記のチャンクサイズに関するジレンマへの対応策として、重複排除処理対象であるデータに応じて複数のチャンクサイズを適用する技術が知られている（例えば特許文献１、２を参照。）。特許文献１では、はじめに小さなチャンクサイズを設定してチャンキングを行った後、作成された各チャンクに含まれている最長繰り返しチャンク（Largest sequence of Repeated Chunks）を検出し、初期値よりも大きなチャンクサイズを有するチャンクとして新たに出力する手法が開示されている。また、特許文献２では、格納すべきチャンキング処理対象データのうち、大きく広がる重複データと大きく広がる非重複データについては、大きなサイズでチャンキングし、重複データと非重複データとの境界付近では、小さなサイズでチャンキングする手法が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許出願公開第２００９／０３１３２４８号明細書
【特許文献２】特表２０１０−５１５１１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述した特許文献１には、データ内で連続するチャンクを１つの大きなチャンクにまとめることで、重複排除率を大きく低下させることなく、データ復元時のディスクアクセスの回数を減らすことができ、結果として、データ復元にかかる時間を短縮できると述べられている。また、特許文献２には、データの重複、非重複に合わせてチャンクサイズを変えることで、高い重複排除率と少ないメタデータとを両立できると述べられている。【０００９】
しかし、特許文献１、２の手法は、全データのチャンクのパターンを分析する処理、過去のチャンキングの履歴を参照しつつチャンキングを行う処理を、それぞれ含む。一般に、これらの処理は、非常に時間がかかる。重複排除処理は、データの定期的バックアップ処理と並行して行われることが多く、バックアップウィンドウ内に処理が終わることを求められる。毎回のバックアップ処理実行時に特許文献１、２の手法でチャンキング処理を行うことは、実際の運用においては困難な可能性がある。【００１０】
本発明は、上記の問題点を考慮し、ストレージシステムの実際の運用において実施可能な重複排除処理を提供し、重複排除処理後のデータから元のデータ復元に要する時間を短縮することができる、格納データの重複を排除する方法、情報処理装置、及び重複排除プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
前記の、及び他の目的を達成するための本発明の一態様は、ストレージ装置に格納されるデータを構成する１のデータ断片と重複するデータ断片である重複データ断片を前記ストレージ装置の記憶領域から排除するための格納データの重複排除方法であって、
前記ストレージ装置に格納しようとする前記データを前記データ断片に分割するステップと、
前記データを分割後の前記データ断片の構成によって記録するステップと、
前記データ断片について、同一の前記データ断片が存在するか判定するステップと、
同一の前記データ断片が存在すると判定した場合、１の前記データ断片を前記ストレージ装置の記憶領域に格納し、当該データ断片固有の属性を示す情報であるデータ断片属性情報を生成して記録するステップと、
前記ストレージ装置の前記記憶領域に格納されている前記データの読み出し要求を受けた場合に、読み出し対象データを形成している前記データ断片の構成を取得して、該当する前記データ断片を前記ストレージ装置の前記記憶領域から読みだして前記データを復元するステップと、
記録された前記データ断片を取得して連結することによりチャンク統合可否を判定する対象である統合対象データを生成し、当該統合対象データについて特定のデータパターンの繰り返しを繰り返しデータパターンがあるか検出するステップと、
検出された前記繰り返しデータパターンを有する複数の前記データ断片の列を統合データ断片として、各統合データ断片から当該統合データ断片の属性を表す情報である統合データ断片属性情報を生成して記録するステップとを有する。
また、本発明の他の態様は、上記の重複排除方法を実現するための重複排除装置である。また、本発明のさらに他の態様は、コンピュータに前記の重複排除方法を実行させるための重複排除プログラムである。
【発明の効果】
【００１２】
本発明により、ストレージシステムの実際の運用において実施可能な重複排除処理を提供し、重複排除処理後のデータから元のデータ復元に要する時間を短縮することができる、格納データの重複を排除する方法、情報処理装置、及び重複排除プログラムを提供することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の一実施形態によるストレージシステム１のシステム構成の例を示した図である。
【図２】重複排除装置１３０のソフトウェア構成の例を示した図である。
【図３Ａ】チャンク管理テーブル３００（２１６）の例を示した図である。
【図３Ｂ】チャンク管理テーブル３００（２１６）の例を示した図である。
【図４】ストレージ装置上でのデータ再配置の例を示した図である。
【図５Ａ】ファイル管理テーブル５００（２１５）の例を示した図である。
【図５Ｂ】ファイル管理テーブル５００（２１５）の例を示した図である。
【図６Ａ】第１の実施形態におけるチャンクパターン情報テーブル６００（２２３）の例を示した図である。
【図６Ｂ】第１の実施形態におけるチャンクパターン情報テーブル６００（２２３）の例を示した図である。
【図７】統合チャンク情報テーブル７００（２２４）の例を示した図である。
【図８】チャンキングモジュール２１１の処理の流れの例を示した図である。
【図９】チャンク照合モジュール２１２の処理の流れの例を示した図である。
【図１０】チャンク登録モジュール２１３の処理の流れの例を示した図である。
【図１１】ファイル復元モジュール２１４の処理の流れの例を示した図である。
【図１２】チャンクパターン解析モジュール２２１の処理の流れの例を示した図である。
【図１３】チャンク管理テーブル更新モジュール２２２の処理の流れの例を示した図である。
【図１４Ａ】第２の実施形態に関わるチャンク管理テーブル３００（２１６）の例を示した図である。
【図１４Ｂ】第２の実施形態に関わるチャンク管理テーブル３００（２１６）の例を示した図である。
【発明を実施するための形態】
【００１４】
前記目的を達成するため、毎回のバックアップ時などに行う通常の重複排除の処理と、データ復元にかかる時間削減のために行うデータの再分析処理を分ける。その結果、短時間で終わることが求められる通常の重複排除の処理を高速に行い、サーバメンテナンス時などある程度作業時間を確保できるときに再分析処理を行うことができる。
【００１５】
上記のデータ再分析処理を特許文献１、２で開示されている方法で行うことには、以下のような問題がある。特許文献１、２は、ともに、背景技術で述べた重複排除の３つのプロセスのうち、チャンキングに関する処理しか開示していない。そのため、データ再分析時に特許文献１、２の手法でチャンキングを行っても、メタデータを介して、通常の重複排除処理に反映することができない。また、特許文献１、２では、既に重複排除を行った後のデータに対して、メタデータを利用して、チャンキングを行う方法は開示されていない。そのため、実データを再度分析する必要がある。
【００１６】
これらの問題に対し、データの再分析を行った後、通常の重複排除処理で利用できるメタデータを作成する。具体的には、まず、通常の重複排除の処理で生成されたチャンクの集合を分析し、重複排除率を変えずに統合できるチャンクを決定する。次に、決定したチャンクから通常の重複排除の処理で利用するメタデータを作成し、統合する前のチャンクのメタデータとともに管理する。これにより、通常の重複排除の処理において、メタデータを使った重複判定及びデータ復元が可能になる。また、通常の重複排除処理で生成されたチャンクのメタデータを用いて分析をすることで、実データを再度分析するよりも効率的に統合チャンクを決定することができる。
【００１７】
以下、本発明を実施するための形態（以下、「実施形態」という。）について、適宜図面を参照しつつ、説明する。
【００１８】
≪第１の実施形態≫
以下、本発明の第１の実施形態について、説明する。
図１は、本発明の第１実施形態を適用したストレージシステム１のシステム構成の例を示した図である。図１に示すように、本システム１は、ホストコンピュータ１１０、ストレージ装置１２０、及び重複排除装置１３０を含み、これらの装置はネットワーク１０１を介して相互に通信可能に接続されて構成される。
【００１９】
ホストコンピュータ１１０は、少なくともＣＰＵ（Central Processing Unit）１１１、メモリ１１２、及びネットワークインターフェース１１３を備える一般的なコンピュータである。ホストコンピュータ１１０は、ストレージ装置１２０に格納されたデータを、ネットワークインターフェース１１３を介しメモリ１１２上に読み出す機能、及びメモリ１１２上のデータを、ネットワークインターフェース１１３を介しストレージ装置１２０に書き込む機能を備える。ホストコンピュータ１１０は、メモリ１１２の他に、ハードディスクドライブ（HDD）、半導体ドライブ（Solid State Drive, SSD）等の補助記憶デバイスを備えていてもよい。また、ネットワークインターフェース１１３は、ホストコンピュータ１１０が接続されるネットワーク１０１の種類により選定され、例えばネットワーク１０１がＬＡＮ（Local Area Network）であれば、ネットワークインターフェース１１３としてはＮＩＣ（Network Interface Card）が設けられる。
【００２０】
なお、以下の説明では、データは１つ以上のファイルから構成されると仮定するが、本発明で扱うデータはそのような構成に限らず、バイナリ列として表現されるデジタルデータ一般を含むものとする。
【００２１】
ストレージ装置１２０は、少なくともストレージ制御装置１２１、及び記憶装置１２３を備える。ストレージ装置１２０は、例えばデータをファイル単位で格納することができるファイルストレージの形式をとることができるが、ブロックストレージを含む他の形式であってもよい。ストレージ制御装置１２１は、ネットワークインターフェース１２２を備え、ホストコンピュータ１１０及び重複排除装置１３０からデータ読み出し／書き込み命令を受け付け、記憶装置１２３に対しデータ読み出し／書き込みを行うことができる。記憶装置１２３は、ＨＤＤ（Hard Disk Drive）１２４などの記憶媒体で構成され、ホストコンピュータ１１０及びあるいは重複排除装置１３０から書き込み命令を受けたデータを格納する。ストレージ制御装置１２１は、図示を省略するＣＰＵ等のプロセッサ、メモリ、及び記憶装置１２３との間のＩ／Ｏ（Input/Output）インターフェースとしてのディスクアダプタを備える。ストレージ制御装置１２１は、そのような構成に基づいて、記憶装置１２３の物理的記憶領域から適宜のＲＡＩＤレベルにより論理記憶領域を編成する機能、及び論理記憶領域から複数の論理ボリュームを作成してホストコンピュータ１１０に提供する機能等を備える。
【００２２】
重複排除装置１３０は、少なくともネットワークインターフェース１３５、ＣＰＵ１３１、メモリ１３２、補助記憶装置１３３、Ｉ／Ｏインターフェース１３４、及び入出力装置１３６を備える。重複排除装置１３０は、ストレージ装置１２０に格納されたデータを、ネットワークインターフェース１３５を介しメモリ１３２上に読み出す機能及び、及びメモリ１３２上のデータを、ネットワークインターフェース１３５を介しストレージ装置１２０に書き込む機能を備える。Ｉ／Ｏインターフェース１３４は、キーボード、マウス等のデータ入力デバイス、ディスプレイ、プリンタ等のデータ出力デバイスであり、コンピュータのデータ入出力機能を有する種々のデバイスを含む。なお、図１の例では重複排除装置１３０は、ストレージ装置１２０とは別個のコンピュータとして構成されているが、後述する重複排除装置１３０の機能をストレージ装置１２０内に実装するように構成してもよい。
【００２３】
次に、図２を参照して、第１実施形態による重複排除装置１３０の機能の例について説明する。重複排除装置１３０の機能は、補助記憶装置１３３に格納されている、各機能を実現するためのプログラム及びデータを、ＣＰＵ１３１がメモリ１３２へ読み出して実行することによって提供される。
【００２４】
重複排除装置１３０は、標準重複排除機能部２１０とチャンク統合機能部２２０とを備える。標準重複排除機能２１０は、ストレージ装置１２０に格納するデータを、複数のチャンク（データ断片）のシーケンスに分割し、互いに重複するチャンク（重複データ断片）については１つのチャンクのみについて実データをストレージ装置１２０に格納する機能を提供する。この標準重複排除機能部２１０の機能により、記憶装置１２３の利用可能な容量を増やすことが可能となる。
【００２５】
チャンク統合機能部２２０は、標準重複排除機能部２１０により生成されたチャンクのシーケンス中で、繰り返し現れるチャンクのデータパターンを解析し、複数のチャンクを一つの統合チャンクとして管理することで、データ再構築に要するコストを削減する機能を提供する。以下、各機能を実現するための手段について具体的に説明する。
【００２６】
標準重複排除機能部２１０は、少なくともチャンキングモジュール２１１（データ分割部）、チャンク照合モジュール２１２（データ照合部）、チャンク登録モジュール２１３（データ登録部）、ファイル復元モジュール２１４（データ復元部）、チャンク管理テーブル２１６、及びファイル管理テーブル２１５を備えて構成される。
【００２７】
まず、上記した標準重複排除機能部２１０に設けられている各部の概要を説明する。チャンキングモジュール２１１は、ストレージ装置１２０に格納されたデータを読み込み、複数のチャンクに分割する機能を有する。チャンキングモジュール２１１による処理の詳細は、図８を参照して後述する。
【００２８】
チャンク照合モジュール２１２は、チャンキングモジュール２１１が生成した各チャンクについて、データが重複するチャンクが存在するかを判定する。チャンキングモジュール２１１による処理の詳細は、図９を参照して後述する。
【００２９】
チャンク登録モジュール２１３は、チャンキングモジュール２１１が生成した各チャンクから、チャンクＩＤ３０１、ハッシュ値３０２、及びチャンクサイズ３０３を含む、各チャンクを管理するために用いられる属性情報を生成し、ファイル管理テーブル２１５及びチャンク管理テーブル２１６に、それらの属性情報を登録する機能を有する。さらに、チャンク登録モジュール２１３は、チャンク照合モジュール２１２が重複するチャンクが存在しないと判定したチャンクのみの実データを、ストレージ装置１２０に格納する機能をも有する。チャンク登録モジュール２１３による処理の詳細は、図１０を参照して後述する。
【００３０】
ファイル復元モジュール２１４は、ファイル管理テーブル２１５及びチャンク管理テーブル２１６が格納する属性情報と、ストレージ装置１２０に格納された、チャンクに対応するデータとを用いて、チャンキングモジュール２１３によってチャンクに分割される前のデータを復元する機能を有する。ファイル復元モジュール２１４による処理の詳細は、図１１を参照して後述する。
【００３１】
チャンク管理テーブル２１６は、チャンキングモジュール２１３が生成したチャンクの属性情報を保持し、チャンク照合モジュール２１２による重複チャンクの判定処理、及びファイル復元モジュール２１４がチャンクからデータを復元する際に参照される。チャンク管理テーブル２１６の詳細は、図３を参照して後述する。
【００３２】
ファイル管理テーブル２１５は、各ファイルを構成しているチャンクのシーケンスに関する情報を保持しており、ホストコンピュータ１１０からのデータ読み出し命令に従って、読み出し対象データ（ファイル）を復元する際に参照される。ファイル管理テーブル２１５の詳細は、図４を参照して後述する。
【００３３】
以上説明した標準重複排除機能部２１０の機能により、ホストコンピュータ１１０から書き込まれるもとのデータは、互いに重複しない複数のチャンクの集合と、ファイル管理テーブル２１５及びチャンク管理テーブル２１６が保持する書くチャンクの属性情報とに変換される。本願では、この一連の変換処理を「重複排除処理」と呼び、互いに重複しない複数のチャンクの集合を重複排除されたデータと、ファイル管理テーブル２１５及びチャンク管理テーブル２１６が保持する各チャンクの属性情報をメタデータと呼ぶこととする。重複排除されたデータ及びメタデータからもとのデータを復元することが可能であるから、重複排除処理を行って重複するチャンクに関する１つの実データを格納した後は、ホストコンピュータ１１０から受信したもとのデータを保持しておく必要はない。そのため、重複する複数のチャンクが存在する場合には、もとのデータをそのまま格納する場合と比較して、重複排除処理されたデータのサイズは小さくなる。
【００３４】
次に、チャンク統合機能部２２０について説明する。チャンク統合機能部２２０は、少なくともチャンクパターン解析モジュール２２１（データ解析部）、チャンク管理テーブル更新モジュール２２２（データ更新部）、チャンクパターン情報テーブル２２３、及び統合チャンク情報テーブル２２４を備えて構成される。
【００３５】
チャンクパターン解析モジュール２２１は、ファイル管理テーブル２１５が管理する各ファイルについてのチャンクのシーケンスを分析し、再構築コスト削減のために統合すべきチャンクを決定する機能を有する。チャンクパターン解析モジュール２２１による処理の詳細は、図１２を参照して後述する。
【００３６】
チャンク管理テーブル更新モジュール２２２は、チャンクパターン解析モジュール２２１が決定した統合すべきチャンクに応じて、ストレージ装置１２０に格納されたデータを再配置し、そのデータ再配置結果に従ってファイル管理テーブル２１５及びチャンク管理テーブル２１６に保持されている情報を更新する機能を有する。チャンク管理テーブル更新モジュール２２２による処理の詳細は、図１３を参照して後述する。
【００３７】
チャンクパターン情報テーブル２２３は、チャンクパターン解析モジュール２２１が、統合すべきチャンクを決定するために利用する情報を保持する。チャンクパターン情報テーブル２２３の構成の詳細は、図６を参照して後述する。
【００３８】
統合チャンク情報テーブル２２４は、チャンクパターン解析モジュール２２１が統合すべきと判定したチャンクに関する情報を保持している。統合チャンク情報テーブル２２４の構成の詳細は、図７を参照して後述する。
【００３９】
重複排除装置１３０にはまた、オペレーティングシステム（Operating System, OS）２３０及びデータＩ／Ｏ部２４０が実装されている。ＯＳ２３０は、重複排除装置１３０のコンピュータとしての基本的なデータ処理機能を有する基本ソフトウェアであり、一般的なコンピュータのＯＳとして利用可能なものを適宜採用することができる。データＩ／Ｏ部２４０は、ＯＳ２３０の制御下で、標準重複排除機能部２１０あるいはチャンク統合機能部２２０に備えられる各モジュールと、ネットワークインターフェース１３５を介した外部とのデータＩ／Ｏ処理を管理する。
【００４０】
次に、図３Ａ、図３Ｂを参照して、第１の実施形態に係るチャンク管理テーブル２１６の例について説明する。なお、以下の各テーブルの説明については、各テーブルの構成要素に付す符号を分かりやすくするために、図２において使用した符号とは別個の符号を付して説明する。例えば、チャンク管理テーブル２１６の単体について説明する場合には、チャンク管理テーブル３００の符号を用いることとし、必要に応じて「チャンク管理テーブル３００（２１６）」と表示する。図３Ａは、重複排除装置１３０の標準重複排除機能部２１０が、データの重複排除処理を行った後のファイル管理テーブル２１５の状態の例を表す。図３Ｂは、重複排除装置１３０のチャンク統合機能部２２０が、チャンクＩＤ３０１が１、２、３で特定されるチャンクを統合し、チャンクＩＤ３０１が９の新たなチャンクを生成しチャンク管理テーブル２１６に登録した後の状態を表す。チャンク統合処理については後述する。
【００４１】
図３Ａ、図３Ｂに例示するチャンク管理テーブル３００は、チャンクＩＤ３０１、ハッシュ値３０２、チャンクサイズ３０３、重複数３０４、及び保存先３０６の各項目を含む。チャンクＩＤ３０１は、各チャンクを一意に識別するためのＩＤであり、チャンク登録モジュール２１３がチャンク管理テーブル２１６に新たなチャンクの属性情報を追加する際、他のチャンクＩＤ３０１と同じにならないように、チャンク登録モジュール２１３が各チャンクに割り当てる。ハッシュ値３０２は、各チャンクに含まれているデータをハッシュ関数に入力して得られる出力値を格納している。ハッシュ関数としては、例えばＳＨＡ−１などを利用することができる。なお、ここで、各チャンクについて算出したハッシュ値３０２を、チャンクＩＤ３０１として利用してもよい。ただし、その場合、異なるチャンクに対しハッシュ値３０２が同一の値となった場合は、同一ハッシュ値３０２を有する複数のチャンクを互いに区別する識別子を追加するものとする。チャンクサイズ３０３は、各チャンクのデータとしてのサイズを表し、図３Ａ、図３Ｂの例ではキロバイト単位で表示している。重複数３０４は、重複排除処理を実行する前のデータ中に、対応するチャンクＩＤ３０１又はハッシュ値３０２によって特定されるチャンクが何回出現したかを表す。保存先３０５は、対応するチャンクＩＤ３０１又はハッシュ値３０２によって特定されるチャンクが保存されている記憶装置１２３上の位置を表し、例えば記憶装置１２３が提供する論理記憶領域上のブロックアドレス等として記録される。保存先３０５は、重複排除装置１３０が記憶装置１２３上にあるチャンクのデータを取得する際に利用される。ファイル復元モジュール２１４は、チャンク管理テーブル３００に保持されている保存先３０５とチャンクサイズ３０３とを参照することで、読み出し対象であるファイルを構成するチャンクを記憶装置１２３上から読み込むことができる。
【００４２】
次に、図４を参照して、チャンクの統合処理が実行された場合の、記憶装置１２３上のデータの再配置について説明する。図４（ａ）は、チャンク統合機能部２２０がチャンクの再配置を行う前における、記憶装置１２３上に格納されているチャンクの例を表す。図４（ａ）の例では、チャンクＩＤ３０１が１、２、３のチャンクが、保存先３０５がL_1、L_2、L_3で示される不連続な位置にそれぞれ保存されている。これに対し、図４（ｂ）は、チャンク統合機能部２２０が、チャンクＩＤ３０１が１、２、３で特定されるチャンクを統合してチャンクＩＤ３０１が９のチャンクを生成し、ディスク上のチャンクを再配置した後の状態の例を表す。図４（ｂ）では、チャンクＩＤ３０１が９で特定される新たなチャンクとして、もとの３つのチャンクが連続する位置に保存されている。記憶装置１２３の論理記憶領域においてこのようなデータ配置にすることで、チャンクＩＤ３０１が９で特定されるチャンクを取得する際、重複排除装置１３０から記憶装置１２３上へのアクセス回数は、データ再配置前の３回から１回で済むことになる。
【００４３】
次に、図５Ａ、図５Ｂを参照して、ファイル管理テーブル５００（２１５）について説明する。図５Ａ、図５Ｂは、それぞれファイル管理テーブル５００の構成例を示しており、図５Ａはチャンク統合処理前の状態を、図５Ｂはチャンク統合処理後の状態を例示している。ファイル管理テーブル５００は、ファイル名５０１、ファイルサイズ５０２、チャンク数５０３、及び構成チャンクＩＤ５０５の各項目を含む。ファイル名５０１は、各ファイルを一意に識別する識別子を表す。ファイルサイズ５０２は、各ファイルのサイズを、例えばキロバイト単位で表す。チャンク数５０３は、各ファイルを構成するチャンクの数を表す。構成チャンクＩＤ５０５は、各ファイルを構成するチャンクのシーケンスを、チャンクＩＤ３０１の並びとして表す。ホストコンピュータ１１０からファイルの読み出し命令を受領した場合、重複排除装置１３０は、このファイル管理テーブル５００において記録されている読み出し対象ファイルのファイル名５０１と、それに対応して記録されている構成チャンクＩＤ５０５とを取得することにより、記憶装置１２３に格納されているチャンクから読み出し対象ファイルを復元することができる。図５Ａの例では、ファイル名５０１が「sample1.txt」で特定されるファイルは、構成チャンクＩＤ５０５に記録されている１０個のチャンクから構成される。構成チャンクＩＤ５０５に記録されているように、各チャンクのＩＤは「１−２−３−４−１−２−３−５−６−１」であり、この順番でチャンクが並んでいる。一方、チャンク統合処理後の状態を表している図５Ｂでは、ファイル名５０１が「sample1.txt」のファイルは６個のチャンクから構成されている。これは、図３Ｂに示したように、チャンクＩＤ３０１が「１−２−３」で構成される新たなチャンクをチャンクＩＤ３０１が９のチャンクと定義したためである。したがって、図５Ｂにおいては、ファイル名「sample1.txt」を構成している各チャンクのＩＤの配列は、「９−４−９−５−６−１」となる。
【００４４】
次に、図６Ａ、図６Ｂを参照して、チャンクパターン情報テーブル６００（２２３）について説明する。図６Ａは後述する繰り返しチャンクパターン検出処理後のチャンクパターン情報テーブル６００の構成例を、図６Ｂは同一チャンクを有するパターンを分割した後のチャンクパターン情報テーブル６００の構成例を示している。チャンクパターン情報テーブル２２３は、チャンクパターン６０１、長さ６０２、出現数６０３、及び出現位置６０４の各項目を含む。チャンクパターン６０１は、記憶装置１２３が提供する論理記憶領域に格納される一連のチャンクシーケンス内に繰り返し現れるパターンを、チャンクＩＤ３０１の並びとして表している。長さ６０２は、チャンクパターン６０１を構成するチャンクの個数を表す。出現数６０３は、チャンクパターン６０１がチャンクシーケンス内で何回出現するかを表す。出現位置６０４は、記憶装置１２３が提供する論理記憶領域に格納される一連のデジタルデータシーケンス内のどの位置に、チャンクパターン６０１が出現するかを、論理記憶領域内のブロックアドレス等を用いて表す。例えば、図６Ａでは、チャンクＩＤ３０１が１−２−３で表されるチャンクパターン６０１が、デジタルデータシーケンスの先頭から数えて、１番目、１００番目、２１２番目に出現することを表している。チャンクパターン解析モジュール２２１は、統合するチャンクを決定するために、チャンクパターン情報テーブル２２３を動的に更新する。チャンクパターン解析モジュール２２１によるチャンクパターン解析処理の詳細は、図１２を参照して後述する。
【００４５】
次に、図７を参照して、統合チャンク情報テーブル７００（２２４）について説明する。図７は、統合チャンク情報テーブル７００の構成例を示している。統合チャンク情報テーブル７００は、統合チャンクＩＤ７０１、サブチャンクＩＤ７０２、出現数７０３、及び更新日時７０４の各項目を含む。統合チャンクＩＤ７０１は、チャンクパターン解析モジュール２２１が統合すべきと決定したチャンクパターン６０１に対して、チャンクパターン解析モジュール２２１が新たに割り当てたチャンクＩＤ３０１である。サブチャンクＩＤ７０２は、統合されたチャンクを構成する、より小さなチャンク（以下「サブチャンク」と呼ぶ。）を表すチャンクＩＤ３０１である。出現数７０３は、統合したチャンクが記憶装置１２３の論理記憶領域上にあるチャンクのシーケンス内で何回出現するかを表す。図７の例では、サブチャンク１−２−３を統合して統合チャンクを生成し、新たなチャンクＩＤ３０１として９を割り当てている。更新日時７０４は、チャンクパターン解析モジュール２２１が統合したチャンクを登録した日時を表す。
【００４６】
次に、図８を参照して、チャンキングモジュール２１１による処理の流れを説明する。図８は、チャンキングモジュール２１１によって実行されるデータ処理フローの一例を示している。
【００４７】
チャンキングモジュール２１１が処理を開始することで、重複排除装置１３０の標準重複排除機能部２１０による一連の重複排除処理が開始される。重複排除処理の開始のタイミングを決定するには、大別して２つの方式がある。１つ目は、ホストコンピュータ１１０がストレージ装置１２０へデータを送信したタイミングで重複排除処理を行う方式である。この場合は、ストレージ制御装置１２１が記憶装置１２３にデータを書き込む前に、重複排除装置１３０がネットワークインターフェース１３５を介してデータを受信し、重複排除処理を行った後記憶装置１２３に、チャンクに分割したデータを書き込む。この１つ目の方式は、インライン方式と呼ばれる。２つ目は、ホストコンピュータ１１０がストレージ装置１２０へ送信したデータを、ストレージ制御装置１２１が記憶装置１２３にデータを書き込んだ後に重複排除処理を行う方式である。この場合は、重複排除装置１３０が、記憶装置１２３上のデータを読み込み、重複排除処理を行った後、再び記憶装置１２３に重複排除処理されたデータを書き込む。この２つ目の方式はポストプロセス方式と呼ばれる。ポストプロセス方式の場合、重複排除装置１３０による重複排除処理は、例えば記憶装置１２３に格納されたデータのバックアップ処理等のタイミングに合わせて、毎週決められた時刻などに開始される。以下では、説明の便宜上、ポストプロセス方式を想定して説明するが、重複排除処理の開始タイミングと重複排除装置１３０のデータ読み込み先を変更するだけで、インライン方式にも本発明は適用可能である。
【００４８】
図８に戻ると、Ｓ８０１（符号Ｓは「ステップ」を表す。以下本明細書中で同じ。）において、チャンキングモジュール２１１は新規データを読み込む。ここで、新規データとは、ストレージ装置１２０が格納するデータのうち、標準重複排除機能部２１０がまだ重複排除を行っていないデータを指す。ストレージ装置１２０における新規データの識別は、例えば記憶装置１２３の論理記憶領域のアドレスに対してビットマップで、あるいは受信したファイル単位で重複排除処理を実施済みか否か記録しておくことで行うことができる。チャンキングモジュール２１１は、新規データを読み込んだ後Ｓ８０２の処理に進む。
【００４９】
Ｓ８０２において、チャンキングモジュール２１１は、Ｓ８０１で読み込んだデータをチャンクに分割する。チャンクへの分割方式には、大別して、１ＫＢ単位など固定のデータサイズで分割する固定長方式と、デジタルデータシーケンス中に特定のバイトパターンが現れた場合にその箇所を分割位置とする可変長方式とがある。
【００５０】
固定長方式のチャンキングについては、例えば以下の文献で説明されている。
S. Quinlan and S. Dorward, "Venti: a new approach to archival 
storage,” The First USENIX conference on File and Storage 
Technologies (Fast'02), January 2002.
【００５１】
可変長方式のチャンキングについては、例えば以下の文献で説明されている。
A. Muthitacharoen, B. Chen, and D. Mazieres, "A low-bandwidth
network file system,” The 18th ACM Symposium on Operating Systems
Principles (SOSP), Banff, Alberta, Canada, October 2001.
B. Zhu, K.Li, and H. Patterson, "Avoiding the disk bottleneck in
the Data Domain deduplication file system,” The 6th USENIX
Conference on File and Storage Technologies (FAST '08),
February 2008.
【００５２】
本実施形態では、図４で例示したように、各々のチャンクサイズ３０３が異なる、すなわち可変長方式のチャンキングを行うものとして説明しているが、本発明は、分割方式によらず適用可能である。チャンキングモジュール２１１は、適宜の分割方式によってチャンクの分割位置を決定した後、Ｓ８０３の処理に進む。
【００５３】
Ｓ８０３において、チャンキングモジュール２１１は、Ｓ８０２で決定したチャンクの情報をチャンク照合モジュール２１２に送信する。チャンキングモジュール２１１は、このチャンクの情報に、新規データとチャンクへの分割位置を表すアドレス等の情報を含める。
【００５４】
次に、図９を参照して、チャンク照合モジュール２１２の処理の流れについて説明する。図９は、本実施形態のチャンク照合モジュール２１２が実行するデータ処理フローの一例である。
【００５５】
まず、Ｓ９０１において、チャンク照合モジュール２１２は、チャンキングモジュール２１１が送信したチャンク情報を受信する。チャンク照合モジュール２１２は、チャンク情報を受信した後Ｓ９０２の処理に進む。
【００５６】
Ｓ９０２において、チャンク照合モジュール２１２は、Ｓ８０２で決定した各チャンクがチャンク管理テーブル３００にすでに存在するかを確認する。この確認は、例えば次のように行う。まず、チャンク照合モジュール２１２は、チャンク管理テーブル３００において各チャンクについて記録されているハッシュ値３０２を求めるのに用いたハッシュ関数と同一のハッシュ関数を用いて、受信した各チャンクのハッシュ値を計算する。次に、算出された各ハッシュ値に基づいて、チャンク管理テーブル３００に記録されている各チャンクのハッシュ値３０２との照合を行い、同一のハッシュ値を持つチャンクが存在するかを確認する。このチャンク照合処理は、例えば以下の文献で説明しているように、ブルームフィルタ（Bloom Filter）を用いて行ってもよい。
B. Zhu, K.Li, and H. Patterson, "Avoiding the disk bottleneck in the
Data Domain deduplication file system,” The 6th USENIX Conference
on File and Storage Technologies (FAST '08), February 2008.
【００５７】
理想的なハッシュ関数を用いる場合、異なるチャンクについてハッシュ値が同一になる（ハッシュ値の衝突が起こる）可能性は限りなく小さい。そのため、チャンクの同一性をそれらについて算出したハッシュ値の同一性で判断することができる。よりチャンク照合処理の精度を高めるために、ハッシュ値の衝突が起こる可能性を考慮する場合には、同一のハッシュ値を持つと判定されたチャンクに対しては、記憶装置１２３が格納するチャンクのバイナリデータを直接比較することで、正しくチャンクの同一性を判定することができる。以上のように、受信した各チャンクがチャンク管理テーブル２１６に存在するかを確認した後、チャンク照合モジュール２１２はＳ９０３の処理に進む。
【００５８】
Ｓ９０３において、チャンク照合モジュール２１２は、Ｓ９０２で照合した結果をチャンク登録モジュール２１３へ送信して処理を終了する。
【００５９】
次に、図１０を参照して、チャンク登録モジュール２１３の処理の流れを説明する。図１０は、チャンク登録モジュール２１３により実行されるデータ処理フローの一例を示している。
【００６０】
Ｓ１００１において、チャンク登録モジュール２１３は、Ｓ９０３でチャンク照合モジュールが送信した照合結果を受信する。照合結果は、受信したチャンクと同一のチャンクが既にチャンク管理テーブル３００に格納されているかの情報を含む。チャンク登録モジュール２１３は、各チャンクについての照合結果を受信した後、各チャンクを対象にＳ１００２以下の処理を行う。
【００６１】
Ｓ１００２において、チャンク登録モジュール２１３は、対象チャンクがチャンク管理テーブル３００に存在するかを判定する。判定は、Ｓ９０２においてチャンク照合モジュール２１２が確認した結果をもとに行われる。対象チャンクがチャンク管理テーブル２１６に存在する場合は、記憶装置１２３内にすでに同一チャンクが存在するので、対象チャンクは重複するチャンクと呼ばれる。チャンク登録モジュール２１３は、対象チャンクが重複すると判定した場合（Ｓ１００２、Ｙｅｓ）、Ｓ１００５の処理に進む。対象チャンクが重複しないと判定した場合は（Ｓ１００２、Ｎｏ）、チャンク登録モジュール２１３は、Ｓ１００３の処理に進む。
【００６２】
Ｓ１００３において、チャンク登録モジュール２１３は、対象チャンクのデータを記憶装置１２３に保存する。このとき、対象チャンクごとに記憶装置１２３に保存せず、一時的にメモリ１３２に保存しておき、他の重複しないチャンクと合わせて一度に記憶装置１２３へ保存する方式をとってもよい。記憶装置１２３あるいはメモリ１３２に保存した後、チャンク登録モジュール２１３は、Ｓ１００４の処理に進む。
【００６３】
Ｓ１００４において、チャンク登録モジュール２１３は、チャンク管理テーブル３００に、対象チャンクの属性情報を登録する。チャンク登録モジュール２１３は、チャンクＩＤ３０１には、既存のチャンクＩＤ３０１と同一にならない値あるいは符号を割り当てる。ハッシュ値３０２には、Ｓ９０２において計算した値を登録する。チャンクサイズ３０３には、対象チャンクのサイズを計算して登録する。重複数３０４には、他に重複するチャンクは存在しないため数値１を登録する。保存先３０５には、Ｓ１００３でチャンクを保存した場所を表す情報を登録する。チャンク登録モジュール２１３は、以上のようにチャンク管理テーブル３００に各チャンクの属性情報を登録した後、Ｓ１００６の処理に進む。
【００６４】
一方、Ｓ１００５において、チャンク登録モジュール２１３は、チャンク管理テーブル３００内にすでに登録されている対象チャンクと重複するチャンクの属性情報を更新する。この場合、チャンク登録モジュール２１３は、該当するチャンクについて記録されている重複数３０４の値を１つ増加させる。チャンク管理テーブル３００の属性情報を更新した後、チャンク登録モジュール２１３はＳ１００６の処理に進む。
【００６５】
Ｓ１００６において、チャンク登録モジュール２１３は、ファイル管理テーブル５００に、処理した新規データ（新規ファイル）の情報を追加する。すなわち、チャンク登録モジュール２１３は、その新規データに含まれる各ファイルについて、ファイル名５０１、ファイルサイズ５０２、チャンク数５０３、及び構成チャンクＩＤ５０５を、ファイル管理テーブル５００に登録する。
【００６６】
次に、図１１を参照して、ファイル復元モジュール２１４の処理の流れについて説明する。図１１は、本実施形態のファイル復元モジュール２１４が実行するデータ処理フローの一例を示している。
【００６７】
ファイル復元モジュール２１４は、ホストコンピュータ１１０がストレージ装置１２０へデータ読み込み命令を送信し、このデータ読み込み命令を重複排除装置１３０の標準重複排除機能部２１０がネットワークインターフェース１３５を介して受信したタイミングで処理を開始する。重複排除されて記憶装置１２３に格納されているデータは、もとのデータと同一ではないので、データ読み込み命令を受け付けた場合、重複排除装置１３０は、重複排除されたデータをもとのデータ（ファイル）に戻す必要がある。本明細書では、この処理をデータの復元と呼ぶ。データの復元は、記憶装置１２３が格納する全部あるいは一部のデータに対して行われる。以下では、１つのファイルを復元する処理を説明するが、一般のデータの場合にも、そのデータを複数のファイルに分割してファイルごとにチャンキングを行い、データ復元にあたっては分割したファイルごとに同様の処理を行うことでデータを復元できる。
【００６８】
まず、Ｓ１１０１において、ファイル復元モジュール２１４は、データ読み込み命令に含まれている復元対象のファイル名５０１をもとにファイル管理テーブル５００を検索する。復元対象のファイル名を有するファイルがファイル管理テーブル５００に記録されていると判定した場合（Ｓ１１０１、Ｙｅｓ）、ファイル復元モジュール２１４は、Ｓ１１０３において該当ファイルの構成チャンクＩＤ５０５を取得した後Ｓ１１０４の処理に進む。該当するファイル名５０１によるファイルのエントリがファイル管理テーブル５００にないと判定した場合（Ｓ１１０１、Ｎｏ）、ファイル復元モジュール２１４は、Ｓ１１０２においてエラーメッセージを出すなどして処理を終了する。
【００６９】
一方、Ｓ１１０４において、ファイル復元モジュール２１４は、ファイルを構成するチャンクのデータを記憶装置１２３から取得する。具体的には、Ｓ１１０３で取得した構成チャンクＩＤ５０５に含まれるチャンクＩＤ３０１ごとに以下の処理を行う。まず、チャンクＩＤ３０１をもとに、チャンク管理テーブル３００を検索し、該当チャンクの保存先３０５を取得する。次に取得した保存先３０５をもとに、記憶装置１２３からチャンクのデータを取得する。取得したチャンクのデータは、一時的にメモリ１３２に保存する。構成チャンクＩＤ５０５に含まれるすべてのチャンクＩＤ３０１に対して、上記の処理を行った後、取得した各チャンクのデータを構成チャンクＩＤ５０５の順番に連結する。その後、Ｓ１１０５に進む。
【００７０】
Ｓ１１０５において、ファイル復元モジュール２１４は、Ｓ１１０４で連結したデータを、ネットワークインターフェース１３５を介して、ホストコンピュータ１１０へ送信し、処理を終了する。
【００７１】
次に、図１２を参照して、チャンクパターン解析モジュール２２１の処理の流れについて説明する。図１２は、本実施形態のチャンクパターン解析モジュール２２１が実行するデータ処理フローの一例を示している。チャンクパターン解析モジュール２２１は、重複排除装置１３０のＯＳ２３０からのタイマー起動により週一回など定期的に、あるいは管理者の手動により開始されるように構成することができる。
【００７２】
まず、Ｓ１２０１において、チャンクパターン解析モジュール２２１は、ファイル管理テーブル５００に含まれる構成チャンクＩＤ５０５を読み込む。このとき、チャンクパターン解析モジュール２２１は、ファイル管理テーブル５００に含まれるすべてのファイルを読み込み対象にしてもよいし、一部のファイルを対象にしてもよい。構成チャンクＩＤ５０５を読み込んだ後、チャンクパターン解析モジュール２２１は、Ｓ１２０２の処理に進む。
【００７３】
Ｓ１２０２において、チャンクパターン解析モジュール２２１は、Ｓ１２０１で読み込んだ構成チャンクＩＤ５０５に含まれるチャンクＩＤ３０１のうち、統合チャンクであるチャンクＩＤ３０１をサブチャンクＩＤに置き換える。この処理は、チャンクパターン解析モジュール２２１が、統合チャンク情報テーブル７００を参照し、読み込んだチャンクＩＤ３０１が統合チャンクＩＤ７０１に登録されているかを確認することで行う。例えば、Ｓ１２０１で読み込んだチャンクＩＤ３０１に「９」が含まれている場合、チャンクパターン解析モジュール２２１は、統合チャンク情報テーブル７００を参照し、サブチャンクＩＤ「１−２−３」で置換え、Ｓ１２０３の処理に進む。
【００７４】
次に、Ｓ１２０３において、チャンクパターン解析モジュール２２１は、図６Ａに示すチャンクパターン情報テーブル６００を作成する。これは、以下の処理で実現する。まず、チャンクパターン解析モジュール２２１は、Ｓ１２０２でサブチャンクＩＤへの書き換えを行った後の構成チャンクＩＤ５０５の集合を連結して一つの文字列とする。構成チャンクＩＤ５０５を連結する際、チャンクパターン解析モジュール２２１は、構成チャンクＩＤ５０５の間のファイルの区切りとなる位置に、そのファイルの区切りを示す識別子を挿入する。この識別子には、チャンクＩＤ３０１及び他のファイル間の区切りを示す識別子と異なる値が割り当てられる。例えば、３つのファイルを構成する構成チャンクＩＤ５０５「１−２−３−４−１−２−３−５−６−１」、「７−８−４−２−５」、及び「３−２」を連結する場合、チャンクパターン解析モジュール２２１は、ファイルの区切り位置に識別子＄、￥を挿入して「１−２−３−４−１−２−３−５−６−１−＄−７−８−４−２−５―￥−３−２」とする。このようにして、チャンクＩＤ３０１及びファイル区切り識別子からなる１つの文字列が生成される。
【００７５】
次に、この生成した文字列の中で、互いに一致し、直前及び直後の文字が異なる部分文字列を検索する。このような文字列を、本明細書では「繰り返しパターン」と定義する。例えば、前記の文字列「１−２−３−４−１−２−３−５−６−１−＄−７−８−４−２−５―￥−３−２」では、「１−２−３」が繰り返しパターンとして抽出される。なお、部分文字列「１−２」も上記の文字列中に２回現れるが、直後の文字が同じ３なので、繰り返しパターンには該当しない。このような文字列に対する操作は、「Suffix Tree」、「Suffix Array」と呼ばれるデータ構造を利用することで効率的に行えることが知られている。繰り返しパターン検索の詳細は、例えば、以下の文献で説明されている。
Gusfield, Dan (1999) [1997]. Algorithms on Strings, Trees and Sequences: Computer Science and Computational Biology. USA: Cambridge University Press. p. 143.
【００７６】
このようにして、チャンクパターン解析モジュール２２１は、部分文字列検索対象となる、構成チャンクＩＤ５０５を連結してなる文字列について、すべての繰り返しパターンを検索する。さらに、チャンクパターン解析モジュール２２１は、各繰り返しパターンの長さ６０２、出現数６０３、及び出現位置６０４を取得し、チャンクパターン情報テーブル６００に登録する。以上がチャンクパターン情報テーブル６００作成の処理である。なお、上記の処理では、読み込んだすべての構成チャンクＩＤ５０５を対象に繰り返しパターン検索を実行したが、あらかじめ重複しているチャンクのみを対象に同様の処理を行うことで、検索に必要なメモリの削減及び検索速度の向上を実現することができる。各チャンクが重複しているかどうかの判定は、チャンク管理テーブル５００を参照し、各チャンクＩＤ３０１に対応する重複数５０３が２以上であるかを確認することで行うことができる。チャンクパターン解析モジュール２２１は、チャンクパターン情報テーブル２２３を作成した後、Ｓ１２０４の処理へ進む。
【００７７】
Ｓ１２０４において、チャンクパターン解析モジュール２２１は、チャンクパターン情報テーブル２２３に含まれるチャンクパターンのうち、内部に同一チャンクを含むチャンクパターンを複数のチャンクパターンに分割する。例えば、図６Ａの３行目のチャンクパターン「１−２−３−１−５−６」は、その内部に同一チャンク「１」を持つ。そこで、図６Ｂ上表のように、内部に同一チャンクを持たないチャンクパターンである「１−２−３」と「１−５−６」とに分割する。一般に、この分割は、一意ではないが、なるべく分割後のチャンクが大きくなるよう分割を採用する。この分割の結果、チャンクパターン情報テーブル２２３内に同一のチャンクパターン６０１が生じることがある。その場合は、同一のチャンクパターン６０１を一つのエントリにまとめる。その際、出現数６０３はそれぞれの出現数６０３の和に、出現位置６０４はそれぞれの出現位置６０４の連結に書き換える。例えば図６Ｂ上表では、チャンクパターン「１−２−３」が２つ存在しているので、図６Ｂ下表のように、１つのエントリにまとめることができる。内部に同一チャンクを持つチャンクパターンを分割した後、チャンクパターン解析モジュール２２１は、Ｓ１２０５の処理に進む。
【００７８】
次に、Ｓ１２０５において、チャンクパターン解析モジュール２２１は、チャンクパターン６０１についてのポリシを満たさないチャンクパターンをチャンクパターン情報テーブル６００から除外する。ここで、チャンクパターンについてのポリシは、チャンクパターン６０１の最小長さ、最小出現数などを含み、これらの値は、管理者などがチャンク統合機能部２２０にパラメータ記憶領域を用意して予め設定しておくものとする。一般に、チャンクパターン６０１の長さ６０２は長いほど、出現数６０３が多いほど、チャンクを統合した場合の効果が高い。よって、チャンクパターンの長さ６０２の最小値、最小出現数６０３をポリシに設定することで、チャンク統合の効果が高い場合のみ統合チャンクを生成するように構成することができる。また、ポリシとして、チャンクパターン６０１の長さ６０２の最大値、最大出現数６０３などを設定してもよい。チャンクパターン解析モジュール２２１は、上記設定されたポリシに応じてチャンクパターン６０１のエントリをチャンクパターン情報テーブル６００から除外した後、Ｓ１２０６の処理に進む。
【００７９】
Ｓ１２０６において、チャンクパターン解析モジュール２２１は、他のチャンクパターン６０１と同一のチャンクを含むチャンクパターン６０１を除外する。これは、異なる統合チャンク内に含まれる重複するチャンクの格納を行わないようにして、重複排除効率をより一層高めるための処理である。例えば、図６Ｂ下表において、チャンクパターン「１−２−３」と「１−５−６」とは同一のチャンク「１」を含む。よって、どちらかをチャンクパターン情報テーブル６００から除外する。どちらのチャンクパターンを除外するかは、予め設定したルールに従い決定することができる。このルールは、例えば、「出現数６０３が低いほうを除外」、「長さ６０２が小さいほうを除外」というように設定することができる。チャンクパターン解析モジュール２２１は、同一チャンクを含むチャンクパターン６０１のエントリをチャンクパターン情報テーブル６００から除外した後、Ｓ１２０７の処理に進む。
【００８０】
Ｓ１２０７において、チャンクパターン解析モジュール２２１は、統合チャンク情報テーブル７００を更新する。チャンクパターン解析モジュール２２１は、Ｓ１２０６の処理を実行後のチャンクパターン情報テーブル６００に含まれるチャンクパターン６０１を統合するチャンクとして決定し、各チャンクパターン６０１に関する情報を統合チャンク情報テーブル７００に新規登録する。その際、チャンクパターン解析モジュール２２１は、各チャンクパターン６０１に新たなチャンクＩＤ３０１を割り当て、統合チャンクＩＤ７０１に登録する。また、各統合チャンクＩＤ７０１で特定されるチャンクパターンを構成するチャンクＩＤ３０１をサブチャンクＩＤ７０２に、当該チャンクパターンの出現数を出現数７０３に、統合チャンクＩＤ７０１の新規登録を行った日時を更新日時７０４にそれぞれ登録する。
【００８１】
以上説明したチャンクパターン解析処理によれば、ストレージ装置１２０への格納データをいったん分割して生成したチャンクを、より長い統合チャンクとして再構成することができる。ので、ストレージ装置１２０の格納効率を向上させることができ、またストレージ装置１２０からのデータの読み出し速度を向上させることができる。
【００８２】
次に、図１３を参照して、チャンク管理テーブル更新モジュール２２２の処理の流れを説明する。図１３は、チャンク管理テーブル更新モジュール２２２が実行するデータ処理フローの一例を示している。チャンク管理テーブル更新モジュール２２２は、チャンクパターン解析モジュール２２１の処理が終わった直後、または、しばらく時間が経過した後に処理を開始させることができる。
【００８３】
Ｓ１３０１において、チャンク管理テーブル更新モジュール２２２は、記憶装置１２３上のデータの再配置を行う。この処理は、統合チャンク情報テーブル７００に含まれる統合チャンクＩＤ７０１に対応するエントリごとに以下の処理を行うことで実現する。まず、チャンク管理テーブル更新モジュール２２２は、統合チャンクに含まれるサブチャンクに対し、チャンク管理テーブル３００を参照し、各サブチャンクのデータ保存先３０５を取得する。次に、チャンク管理テーブル更新モジュール２２２は、記憶装置１２３から各サブチャンクのデータを取得し、連結してメモリ１３２に一時的に保存する。次に、チャンク管理テーブル更新モジュール２２２は、連結したサブチャンクのデータを新たなチャンクとして、記憶装置１２３に書き込む。このとき、チャンク管理テーブル更新モジュール２２２は、書き込んだ位置を内部で保持しておく。最後に、チャンク管理テーブル更新モジュール２２２は、記憶装置１２３上のもとのサブチャンクのデータを消去する。チャンク管理テーブル更新モジュール２２２は、以上のデータ再配置処理を行った後、Ｓ１３０２の処理に進む。
【００８４】
Ｓ１３０２において、チャンク管理テーブル更新モジュール２２２は、統合チャンクの属性情報をチャンク管理テーブル３００に追加する。例として、図４Ｂに、統合チャンク「９」を新たにチャンク管理テーブル３００に追加した後の状態を示している。ハッシュ値３０２には、登録する統合チャンクのデータに対して所定のハッシュ関数を用いて計算した値を登録する。チャンクサイズ３０３には、統合チャンク情報テーブル７００の出現数７０３の値を登録する。保存先３０５には、Ｓ１３０１において、統合チャンクのデータを記憶装置１２３に書き込んだ位置を登録する。統合チャンクを追加した後、チャンク管理テーブル更新モジュール２２２は、統合チャンクに含まれるサブチャンクの保存先３０５を変更する。サブチャンクの保存先３０５は、統合チャンクの保存先３０５、統合チャンクの中のサブチャンクの順序、及び統合チャンクを構成するサブチャンクのサイズをもとに決定することができる。例えば、チャンク「３」は、チャンク「９」の保存先３０５から、チャンク「１」と「２」のデータ長分進めた位置で指定できる。チャンク管理テーブル更新モジュール２２２は、チャンク管理テーブル３００を更新した後、Ｓ１３０３の処理に進む。
【００８５】
次に、Ｓ１３０３において、チャンク管理テーブル更新モジュール２２２は、ファイル管理テーブル５００の構成チャンクＩＤ５０５を統合チャンクで置換えて処理を終了する。図５Ｂに、ファイル名「sample1.txt」で特定されるファイルの構成チャンクＩＤ５０５である「１−２−３」を統合チャンク「９」で置換えた後のファイル管理テーブル５００の状態を示している。
【００８６】
以上説明したチャンク管理テーブル更新処理によれば、再構成された統合チャンクを用いてストレージ装置１２０へのデータ格納を行うので、ストレージ装置１２０の格納効率を向上させることができ、またストレージ装置１２０からのデータの読み出し速度を向上させることができる。
【００８７】
≪第２の実施形態≫
次に、本発明の第２実施形態について説明する。上述した第１の実施形態では、標準重複排除機能部２１０のチャンキングモジュール２１１は、図８に例示するデータ処理フローのＳ８０２において、基本的に、サブチャンクを生成した時と同様のチャンキング方式でチャンキングを行う。仮に、ホストコンピュータ１１０がストレージ装置１２０に格納しようとするデータの特性等から、そのデータ内にはサブチャンクが単体で現れることはほとんどなく、統合チャンクとしてのみ現れることがあらかじめわかっている場合には、チャンキング方式を一時的に変更し、サブチャンクに分割することなくはじめから統合チャンクとして出力することができる。以下第２の実施形態でそのチャンキング方式について説明する。
【００８８】
第２の実施形態に係る重複排除装置１３０は、基本的に第１の実施形態と同一の構成を有して、同様のデータ処理を実行する。ここでは、第２の実施形態の構成のうち、第１の実施形態と異なる部分のみを説明する。
【００８９】
第２の実施形態では、第１の実施形態での構成とは異なるチャンク管理テーブル３００（２１６）を使用する。図１４Ａ、図１４Ｂを参照して、第２の実施形態に係るチャンク管理テーブル３００の構成例について説明する。第２の実施形態に係るチャンク管理テーブル３００は、第１実施形態にはなかったあらたな項目として、スキップサイズ１４０３を含む。スキップサイズ１４０３は、チャンキングモジュール２１１が、ホストコンピュータ１１０から受信した新規データをチャンクに分割する際に、分割位置検索処理をスキップすることができるようにあらかじめ設定したデータサイズを表す。具体的には、チャンキングモジュール２１１は、図８のＳ８０２において、ホストコンピュータ１１０から受信した新規データを先頭から順に走査していき、新規データをチャンクに分割するための分割位置を探す。その際、チャンキングモジュール２１１が、ある１つのチャンクを生成したとする。生成したチャンクが、チャンク管理テーブル２１６に登録されているチャンク（例えば「１」）と同一であると判定した場合、チャンキングモジュール２１１は、スキップサイズ１４０３の２．３ＫＢ分先に走査する位置を移動する。チャンク「１−２−３」が連続で現れる場合（この可能性は上記データ特性から高いと仮定される）、チャンキングモジュール２１１は、２．３ＫＢ分スキップ後の走査でチャンク「３」の終わりの区切り位置を発見する。その結果、チャンキングモジュールは、統合チャンクである「１−２−３」を分割したチャンクとして出力する。チャンク照合モジュール２１２は、図９のデータ処理フロー例において、Ｓ９０２でチャンク管理テーブル３００と前記分割されたチャンクの照合を行い、チャンキングモジュール２１１が出力したチャンクが統合チャンク「９」と同一であることを判定する。
【００９０】
第２の実施形態によれば、分割位置判定のスキップによるチャンキング処理の速度向上と、照合対象のチャンク数削減を実現することができる。本実施形態の構成は統合チャンクの長さが長いほど特に有効であり、チャンキング処理に要する時間をより短縮することにより、重複排除処理の所要時間を短縮することができる。
【００９１】
以上説明した本実施形態の重複排除方法によれば、格納データの重複排除率を低下させることなくデータ復元処理に要する時間を短縮することができる。
【００９２】
以上、本発明についてその実施形態に基づき詳細に説明したが、本発明はこれらの実施形態に制約されることはない。また、本発明の範囲には、請求の範囲に記載された発明の均等物も含まれる。
【符号の説明】
【００９３】
１  ストレージシステム、１０１  ネットワーク、１１０  ホストコンピュータ、１１１，１３１  ＣＰＵ、１１２，１３２  メモリ、１１３，１２２，１３５  ネットワークインターフェース、１２１  ストレージ制御装置、１２３  記憶装置、１２４  ハードディスク、１３３  補助記憶装置、１３４  Ｉ／Ｏインターフェース、２１０  標準重複排除機能部、２１１  チャンキングモジュール、２１２  チャンク照合モジュール、２１３  チャンク登録モジュール、２１４  ファイル復元モジュール、２１５，５００  ファイル管理テーブル、２１６，３００  チャンク管理テーブル、２２０  チャンク統合機能部、２２０  チャンクパターン解析モジュール、２２２  チャンク管理テーブル更新モジュール、２２３，６００  チャンクパターン情報テーブル、２２４，７００  統合チャンク情報テーブル
【図１】
2013051129.tif 000003
【図２】
2013051129.tif 000004
【図３Ａ】
2013051129.tif 000005
【図３Ｂ】
2013051129.tif 000006
【図４】
2013051129.tif 000007
【図５Ａ】
2013051129.tif 000008
【図５Ｂ】
2013051129.tif 000009
【図６Ａ】
2013051129.tif 000010
【図６Ｂ】
2013051129.tif 000011
【図７】
2013051129.tif 000012
【図８】
2013051129.tif 000013
【図９】
2013051129.tif 000014
【図１０】
2013051129.tif 000015
【図１１】
2013051129.tif 000016
【図１２】
2013051129.tif 000017
【図１３】
2013051129.tif 000018
【図１４Ａ】
2013051129.tif 000019
【図１４Ｂ】
2013051129.tif 000020
【国際調査報告】
2013051129.tif 000021
2013051129.tif 000022
2013051129.tif 000023
2013051129.tif 000024