(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0016】
以下、図面に基づいて、本発明の実施の形態を説明する。なお、本発明の実施態様は、後述する形態例に限定されるものではなく、その技術思想の範囲において、種々の変形が可能である。
【0017】
(1)第1の実施形態
(1−1)ストレージ装置に搭載する重複排除機能の概要
まず、本実施形態に係る重複排除機能の概要を説明する。実施形態に係るストレージ装置は、ネットワーク経由でホスト計算機に接続される。ストレージ装置は、データを記憶する記憶デバイスとして、例えば複数のハードディスク装置(HDD:Hard Disk Drive)を有する。ストレージ装置には、記憶デバイスにデータを格納する際にデータ量を削減する処理機能が搭載されている。データ量の削減には、例えばファイル圧縮処理(Compression)や重複排除処理(Deduplication)が用いられる。ファイル圧縮処理は、1ファイル内で同一内容のデータセグメントを縮約することにより、データ容量を削減する。一方、重複排除処理は、1ファイル内だけでなく、ファイル間で検出される同一内容のデータセグメントを縮約することにより、ファイルシステムやストレージシステムの総データ容量を削減する。
【0018】
本実施形態の説明でも、重複排除処理の単位となるデータセグメントを「チャンク(Chunk)」といい、複数のチャンクをまとめたデータを「コンテナ」という。また、記憶デバイスに格納する単位である論理的にまとまったデータを「コンテンツ(Content)」という。以下に説明する実施形態の場合も、コンテンツには、通常のファイルの他、例えばアーカイブファイル、バックアップファイル、仮想ボリュームファイルなどの通常のファイルを集約したファイルが含まれる。また、重複排除処理されたチャンクは、コンテナ単位で記憶デバイスに格納される。
【0019】
チャンク単位の重複排除処理は、以下のように実行される。ストレージ装置は、任意のチャンクをハードディスク装置に格納する前に、同じ内容のチャンクがハードディスク装置に既に格納されているか否かを判定する。同じチャンクはハードディスク上に存在しないと判定された場合、ストレージ装置は、当該チャンクをそのままハードディスク装置に格納する。一方、同じチャンクがハードディスク装置に存在すると判定された場合、ストレージ装置は、当該チャンク(以下「重複チャンク」という)をハードディスク装置に格納せずに、その格納場所を示すリンク情報をハードディスク装置に格納する。このように、実施形態に係るストレージ装置は、チャンクの重複排除処理を繰り返し実行し、重複チャンクの多重登録を排除する。この重複チャンクの排除処理により、実施形態に係るストレージ装置は、ハードディスク装置の使用容量を抑制し、バックアップ処理を高速化する。
【0020】
前述したように、「コンテナ」は、1または2以上のコンテンツを分割して得られる複数のチャンクで構成される、ハードディスク装置に格納する際の処理単位である。また、各「コンテナ」に対し、ストレージ装置は、コンテナを構成する各チャンクの配置を管理するコンテナ索引表を作成する。コンテナ索引表には、チャンクのオフセット(コンテナ内における位置)とチャンクのサイズが格納される。コンテナ索引表は、チャンクの重複判定に利用される。
【0021】
この他、ストレージ装置は、チャンク索引表も作成する。チャンク索引表は、バックアップデータの分割により生成されたチャンクがどのコンテナ索引表に格納されているかを示すテーブルである。チャンク索引表は、チャンクを格納するコンテナが決定された時に、ストレージ装置により作成される。チャンク索引表は、バックアップ処理の実行時に、チャンクの重複排除判定に使用するコンテナ索引表を決定するために利用される。
【0022】
一般に、チャンクのサイズは数キロバイト以上である。このため、重複判定処理の実行時に、チャンクの先頭から順番にチャンク同士を比較すると、多くの処理時間とコストを必要とする。そこで、実施形態に係るストレージ装置は、チャンクのメッセージダイジェストを利用し、短時間かつ低コストで重複判定処理の実行を可能とする。メッセージダイジェストとは、任意の長さのデータ入力に対し、固定長のダイジェストを出力する技術である。本明細書では、メッセージダイジェストの出力結果を、フィンガプリント(FP:finger print)という。フィンガプリントは、ハッシュ関数を用いて取得することができる。例えばSHA256などの乱数性が極めて高く、チャンクに対して一意に定まる可能性の高いハッシュ関数を利用する。
【0023】
本実施形態では、前述したコンテナ索引表に各チャンクのフィンガプリントを格納し、重複判定処理時には、チャンクのフィンガプリント同士を比較する。これにより、チャンク同士をビット単位で比較する場合に比べて、重複判定処理の高速化及び低コスト化を実現する。
【0024】
また、データの完全性を保証し、信頼性の高いバックアップを実現するために、本実施形態では、ライトワンス型の記憶装置を使用する。ライトワンス型の記憶装置は、データの書き込みは1回限りであるが、読み取りは何度でも可能である。ライトワンス型の記憶装置に書き込まれたデータは、消去も改変もできないため、証拠保全のアーカイブなどに適している。このような記憶装置には、例えばROM(Read Only Memory)光ディスクを使用する光ディスク装置がある。一般的に、磁気ディスク装置は書き込まれたデータを更新できるため、ライトワンス型の記憶装置ではない。しかし、ファイルシステムやドライバ装置の構成を工夫して追記のみを許可することにより(データの上書きを禁止することにより)、磁気ディスク装置をライトワンス型の記憶装置として利用することができる。本実施形態の望ましい形態では、主に、データのバックアップに適した追記型のハードディスク装置をバックアップ用の記憶デバイスに適用する。
【0025】
前述したコンテナには、予め所定のチャンク数または容量が設定されている。このため、チャンクは、コンテナが一杯になるまでメモリ側で集約され、コンテナが一杯になると、コンテナ単位でバックアップ用の記憶デバイスに書き込まれる。例えば記憶デバイスに追記型のハードディスク装置を使用する場合、ストレージ装置は、コンテナが一杯になるまでメモリ上のコンテナにチャンクを追記する。同時に、ストレージ装置は、コンテナ内のチャンクの配置を管理するコンテナ索引表と、チャンクとコンテナ索引表の対応関係を管理するチャンク索引表を作成する。なお、バックアップデータには、バックアップ世代毎に必ず出現する普遍チャンクが存在し、その普遍チャンクは初期バックアップ時に用意されたコンテナに格納される。
【0026】
前述したように、普遍チャンクを初期バックアップ時に用意したコンテナに格納する場合、従来手法では、同じコンテナ内に普遍チャンク以外のチャンクも一緒に保存される。このため、従来手法では、複数世代目に重複排除処理を実行したバックアップデータをリストアする際に、普遍チャンクを含んでいるが、そのリストアでは参照する必要がないチャンクも含むコンテナを参照する。しかし、コンテナに占める普遍チャンクの割合が少ない場合、普遍チャンクが複数のコンテナに分散する場合もある。この場合、必要とする普遍チャンクを含む他のコンテナを別途参照する必要があり、ハードディスク装置からの読み出し回数が増加してしまう。このため、リストア性能が劣化する問題がある。また、普遍チャンクを含むコンテナをメモリ上に展開すると、ほとんど参照されないチャンクも一緒に展開されることになるため、メモリの利用効率が悪い問題がある。
【0027】
また、従来手法では、バックアップの際、必ずコンテナ索引表を参照し、データの重複排除処理を実行する。この際、複数世代目の重複排除処理に際し、普遍チャンクだけでなく、ほとんど参照されないチャンクの管理情報も含むコンテナ索引表を参照する必要がある。このため、バックアップ性能が低下する問題がある。また、コンテナ索引表では、普遍チャンクの管理情報だけでなく、ほとんど参照されないチャンクの管理情報も含まれるため、メモリの利用効率が悪い問題もある。
【0028】
そこで、本実施形態では、複数世代に亘るバックアップデータを重複排除して記憶デバイスに格納する際に、各バックアップ世代に普遍的に出現する普遍チャンクを、普遍チャンク専用のコンテナ(以下「普遍コンテナ」という)に格納する。さらに、本実施形態では、作成した普遍コンテナを常にメモリ上に保持し、ハードディスク装置からの読み出し回数を低減する。これにより、バックアップ性能およびリストア性能の向上を実現する。
【0029】
なお、普遍チャンクは、コンテンツタイプ(通常ファイル、仮想ディスクボリューム、アーカイブファイル等のファイルフォーマット)毎に共通して出現する。従って、普遍チャンクは、コンテンツタイプ毎の重複チャンクを比較することにより、特定することができる。
【0030】
(1−2)ストレージ装置の構成
図1に、本実施形態に係るストレージ装置100のハードウェア構成を示す。
図1に示すように、ストレージ装置100は、ネットワーク174を介して不図示のバックアップサーバその他の上位装置に接続されている。ネットワーク174は、例えばLAN(Local Area Network)、インターネット、公衆回線または専用回線などであってもよい。
【0031】
ストレージ装置100は、管理者端末装置172とネットワーク経由で接続されている。管理者端末装置172は、例えばCPUおよびメモリ等の情報処理資源、ディスプレイ等の出力装置、キーボード等の入力装置を備えるコンピュータ装置である。管理者端末装置172は、オペレータによる入力操作等に応じてストレージ装置100の起動や停止を指示する。また、管理者端末装置172は、ストレージ装置100の動作をモニタし、動作結果や障害発生等のログを記録する。また、管理者端末装置172は、ストレージ装置100におけるバックアップ処理やリストア処理に関するシステム設定を指定する。
【0032】
ストレージ装置100は、主に、プロセッサ102、メモリ104、ディスク106及びネットワークインタフェース108で構成される。
【0033】
プロセッサ102は、演算処理装置として機能し、メモリ104に記憶されているプログラムや演算パラメータ等に従って、ストレージ装置100の動作を制御する。
【0034】
メモリ104には、オペレーティングシステム154と、当該オペレーティングシステム154と連携動作する各種プログラム、バックアッププログラム150、リストアプログラム152、新規チャンク判定フィルタ(不図示)及び各種テーブルが格納されている。
【0035】
バックアッププログラム150は、コンテナ索引表(T)110、チャンク索引表162、普遍コンテナ索引表118、計測表160及びライトバッファ142を利用し、ネットワーク174を通じて提供されたバックアップ対象データをディスク106に格納する。
【0036】
図1に示すように、コンテナ索引表110は、メモリ104上に複数存在する。以下では、バックアッププログラム150が利用するコンテナ索引表110をコンテナ索引表(T
f)112と呼び、リストアプログラム152が利用するコンテナ索引表110をコンテナ索引表(T
F)114と呼ぶ。コンテナ索引表110は、コンテナ単位でのチャンクの格納先を管理するテーブルである。コンテナ索引表110の構成については、後に詳細に説明する。
【0037】
普遍コンテナ索引表(T
c)118は、バックアップ世代毎に必ず出現する普遍チャンクの格納先を管理するテーブルである。普遍コンテナ索引表(T
c)118は、バックアッププログラム150と共にメモリ104に展開され、そのままメモリ104上に保持される。
【0038】
コンテナ索引表112は、各コンテナに対してそれぞれ作成される。バックアッププログラム150が重複判定処理を行う際には、少なくとも1つ以上のコンテナ索引表112のフィンガプリントを参照する。このため、コンテナ索引表112をメモリ104上に展開させる必要がある。しかし、メモリ104の容量は有限である。このため、全てのコンテナ索引表112をメモリ104上に展開させることは困難である。そこで、ストレージ装置100においては、ディスク106からメモリ104にコンテナ索引表112をロールインしたり、メモリ104からディスク106にコンテナ索引表112をロールアウトして、メモリ104の資源を有効活用する。
【0039】
本実施形態において、コンテナ索引表112のロールイン/ロールアウトは、LRU(Least Recently Used)方式で行われる。LRU方式では、メモリ104上で最も長い間参照されていないデータをロールアウトする一方、新たに参照するデータをディスク106からメモリ104にロールインする。この制御動作は、最も長い間参照されていないデータは、次に参照される可能性が一番低いという性質に基づく。ロールイン/ロールアウトの制御は、メモリ104とディスク106の両方に透過的にアクセスする必要がある。このため、この制御は、オペレーティングシステム154またはプロセッサ102により提供される。この制御技術は、仮想記憶管理技術(virtual memory management)と呼ばれる。仮想記憶におけるページ置き換え処理は、参照ビット(rビット)、更新ビット(cビット)及び有効/無効ビット(vビット)の3種類のビットを利用して実行される。これらのビットは、コンテンツに含まれるチャンクが到着する毎に更新される。
【0040】
本実施形態では、このような仮想記憶管理技術を、コンテナ索引表(Tf)112を用いて実現する。例えばコンテンツに重複チャンクが含まれる場合、該当チャンクを格納するコンテナの参照ビット(rビット)が「1」に設定される。一方、コンテンツに含まれるチャンクをディスク106に書き込む場合、該当チャンクを格納するコンテナの更新ビット(cビット)が「1」に設定される。また、該当コンテナ索引表112がロールインされる場合、vビットが「1」に設定される。また、該当コンテナ索引表112がロールアウトされる場合、vビットが「0」に設定される。
【0041】
また、LRU方式の実装方式の1つとしてaging 方式が挙げられる(例えば非特許文献1を参照)。aging 方式は、参照ビット(rビット)を複数備える。aging 方式では、所定の時間間隔毎に、参照ビット(rビット)のビット値を右方向にシフトする。特に、参照があった場合、aging 方式は、右シフト後に最上位ビットを「1」に設定する。このようなシフト演算処理により、以下で述べる重み付けを容易に実現することができる。例えば参照時期が過去であるほど重みを軽くし、参照時期が現在に近いほど重みを重くする。例えば、あるデータについて、所定の時間間隔で取得された5回分の参照ビットは、以下のように与えられる。ここで、ビットの「1」は参照があったことを表している。
1回目…1
2回目…0
3回目…1
4回目…0
5回目…0
【0042】
前述した参照ビットに重みを付けて8ビットのカウンタ値で表現すると、以下のようになる。なお、初期値は00000000である。
1回目…10000000
2回目…01000000(右シフト+「0」付与)
3回目…10100000(右シフト+「1」付与)
4回目…01010000(右シフト+「0」付与)
5回目…00101000(右シフト+「0」付与)
【0043】
このように、8ビットのカウンタ値によって参照ビット(rビット)を表現することにより、過去に参照されたデータほどその値は小さい値で表現され、参照された時期が現在に近いほど大きい値で表現される。
【0044】
計測表160は、コンテナ索引表110のロールイン/ロールアウト管理だけでなく、コンテナ単位での重複チャンクの有無や数などの管理にも使用される。ロールイン/ロールアウトを管理するテーブルと、重複チャンクを管理するテーブルは必ずしも1つのテーブルで構成される必要は無く、別々のテーブルで構成されてもよい。前述したように、本実施形態では、ロールイン/ロールアウトを管理するテーブルと重複チャンクを管理するテーブルとを1つのテーブルで構成する。計測表160の構成については、後に詳細に説明する。
【0045】
リストアプログラム152は、コンテンツ索引表(S)164、コンテナ索引表(TF)114及びリードキャッシュ144を利用し、ディスク106に格納されているバックアップデータを読み出す。
【0046】
コンテンツ索引表(S)164は、コンテンツ単位でチャンクの格納先を管理するテーブルである。コンテンツ索引表164の構成内容については、後に詳細に説明する。
【0047】
ディスク106は、ハードディスク装置などから構成され、コンテナ索引表用(T 表用)DB120、チャンク索引表用(U 表用)DB182、コンテンツ索引表用(S 表用)DB184及び複数のコンテナ(コンテナ132、134、136、138)が格納されている。コンテナ索引表用DB120には、複数のコンテナ索引表が格納されている(表122、124、126、128)。チャンク索引表用DB182には、複数のチャンク索引表が格納されている。コンテンツ索引表用DB184には、複数のコンテンツ索引表が格納されている。
【0048】
普遍コンテナ索引表118は、コンテナ索引表用DB120に格納してもよいし、別の独立した(不図示)DBとして保存してもよい。また、コンテナ132、134、136、138には、バックアッププログラム150により重複排除処理されたバックアップデータが格納される。この格納時にライトバッファ142が使用される。
【0049】
(1−3)バックアップ処理及びリストア処理の概要
本実施形態に係るバックアップ処理及びリストア処理の理解のために、まず、従来のバックアップ処理及びリストア処理について説明する。
【0050】
(1−3−1)従来のバックアップ処理及びリストア処理
従来手法を
図2を用いて説明する。従来手法で用いるバックアッププログラム1450は、コンテンツf
1(1460)、コンテンツf
2(1470)及びコンテンツf
3(1480)を到達順にバックアップする。因みに、コンテンツf
1(1460)は第1世代のバックアップデータであり、コンテンツf
2(1470)は第2世代のバックアップデータであり、コンテンツf
3(1480)は第3世代のバックアップデータである。
【0051】
図2に示すように、コンテンツf
1 は、チャンクa(1462)、普遍チャンクf(1464)を含む。コンテンツf
2 は、チャンクb(1472)、チャンクc(1474)、普遍チャンクf(1476)を含む。コンテンツf
3 は、チャンクb(1482)、チャンクc(1484)、チャンクd(1486)、チャンクe(1488)、普遍チャンクf(1489)を含む。コンテンツf
1〜f
3 は、バックアッププログラム1450による重複排除処理後に記憶デバイスに格納される。このため、コンテナCf(1430)、Cg(1432)、Ch(1434)には、チャンクa(1462)、普遍チャンクf(1464)、チャンクb(1472)、チャンクc(1476)、チャンクd(1486)及びチャンクe(1488)が格納される。
【0052】
ここで、第1世代のバックアップデータと第2世代のバックアップデータの到着間隔が大きく開いている場合、すなわちコンテンツf
1(1460)をバックアップしてからコンテンツf
2(1470)をバックアップするまでの間隔が大きく空いている場合を考える。この場合、バックアッププログラム1450は、コンテナCf(1430)に、コンテンツf
1 のチャンクa(1462)と普遍チャンクf(1464)を格納する。
【0053】
ところが、従来手法は、チャンクを到着順にコンテナに格納する。すなわち、チャンクの内容は判断しない。このため、コンテンツf
2 のバックアップ時には、既に、コンテナCf が、世代関係のない他のコンテンツのチャンクで一杯になることが起こり得る。この場合、チャンクb(1472)とチャンクc(1476)は、チャンクaとは異なるコンテナCg(1432)に格納される。同様に、コンテンツf
3 のチャンクdとチャンクeは、コンテナCf(1430)ともコンテナCg(1432)とも異なるコンテナCh(1434)に格納される。また、これらのコンテナに対応して、コンテナ索引表Tf(1410)、Tg(1412)、Th(1414)が作成される。すなわち、普遍チャンクfは初期のコンテナCf(1430)に格納され、対応するコンテナ索引表はコンテナ索引表Tf(1410)に格納される。
【0054】
例えばコンテンツf
3(1480)をリストアする場合、従来手法では、コンテナCf(1430)、コンテナCg(1432)、コンテナCh(1434)の3つをメモリ上に展開する。
【0055】
この際、リストアプログラム1452は、展開されたコンテナCf(1430)から普遍チャンクf(1464)だけを参照する。すなわち、チャンクaは参照しない。このように、リストアプログラム1452は、コンテンツf
3(1480)のリストアには参照の必要がないチャンクa(1462)もメモリ上に展開する必要がある。
【0056】
また、データをバックアップする場合も、従来手法では、バックアッププログラム1450が、コンテナ索引表Tf(1410)等を参照してデータの重複排除処理を実行する。例えばコンテンツf
3(1480)をバックアップする場合、バックアッププログラム1450は、コンテナ索引表Tf(1410)とコンテナ索引表Tg(1412)をメモリに展開し、コンテンツf
3(1480)から切り出されるチャンクの管理情報と照合する。ここで、展開されたコンテナ索引表Tf(1410)は、普遍チャンクfの重複排除処理のためだけに参照されればよく、それ以外のチャンク(すなわちb、c、d、e)の重複排除処理では参照が不要である。このように、従来手法は、コンテナ及びコンテナ索引表単位でメモリに展開する必要があるため、ほとんど参照されないデータもメモリ上に展開する必要がある。
【0057】
このように、従来手法では、バックアップ時やリストア時にほとんど参照する必要の無いデータも含めてメモリ上に展開する必要があり、これらほとんど参照する必要の無いデータの存在がバックアップ性能やリストア性能を低下させている。
【0058】
(1−3−2)実施形態によるバックアップ処理の概要
図3を参照し、本実施形態に係るストレージ装置100によるバックアップ処理の概要を説明する。
図2の場合と同様、バックアッププログラム150は、コンテンツf
1(260)、コンテンツf
2(270)及びコンテンツf
3(280)を到着順にバックアップするものとする。因みに、コンテンツf
1(260)が1番最初に到達し、コンテンツf
2(270)が2番目に到達し、コンテンツf
3(280)が3番目に到着するものとする。
【0059】
図3に示すように、コンテンツf
1 は、チャンクa(262)、普遍チャンクf(264)を含む。コンテンツf
2 は、チャンクb(272)、チャンクc(274)、普遍チャンクf(276)を含む。コンテンツf
3 は、チャンクb(282)、チャンクc(284)、チャンクd(286)、チャンクe(288)、普遍チャンクf(289)を含む。
【0060】
図3に示すように、本実施形態の場合、バックアッププログラム150は、普遍コンテナCc(138)と対応する普遍コンテナ索引表Tc(128)を用意する。ここで、コンテナ索引表Tc は、常にメモリ104 上に保持させてもよい。また、コンテナCc も常にメモリ104上に保持させてもよい。普遍コンテナCc および普遍コンテナ索引表Tc には、普遍チャンクとその管理情報だけが格納される。例えばバックアッププログラム150の起動時に、普遍コンテナ索引表Tc(128)をメモリ104に展開し、同プログラムの終了時に普遍コンテナ索引表Tc(128)をディスク106に保存する。同様に、普遍コンテナCc(138)もバックアッププログラム150の起動時にメモリ104に展開し、同プログラムの終了時にディスク106に保存してもよい。
【0061】
バックアッププログラム150に対するこれらの指示(コマンド等の発行)は、オペレータによる管理者端末装置172に対する操作入力を通じて行う。もっとも、バックアッププログラム150に対するこれらの指示は、管理者端末装置172から指定しない場合も考えられる。この場合、対応する指示は、初期化ファイル等に初期値として予め格納しておき、バックアッププログラム150の起動時に当該初期値を読み込んでもよい。
【0062】
本実施形態の場合、バックアッププログラム150は、コンテンツf
1 を格納するために、コンテナCf(132)を新規に作成し、当該コンテナにチャンクa(264)を格納する。なお、チャンクf(242)は、普遍コンテナ索引表Tc(128)の参照により重複排除される。このため、チャンクfは、コンテナCf(132)には格納されない。その結果、コンテナ索引表Tf(122)には、チャンクaの管理情報FPa(220)が格納される。なお、普遍コンテナ索引表Tc(128)には、普遍チャンクfの管理情報FPf(222)が格納される。
【0063】
次に、バックアッププログラム150は、コンテンツf
2(270)をバックアップする。この場合、バックアッププログラム150は、チャンクb(272)、チャンクc(274)及びチャンクf(276)のうち重複チャンクであるチャンクf以外のチャンクb及びチャンクcだけをコンテナCg(134)に格納する。勿論、コンテンツf2(270)がコンテンツf1(260)に続いて到達する場合、バックアッププログラム150は、コンテナCf(132)にチャンクb、チャンクcを格納する可能性もあるが、ここではコンテナCf(132)が既に一杯になっているものとする。バックアッププログラム150は、コンテナCg(134)に対応してコンテナ索引表Tg(124)を作成し、チャンクbとチャンクcの管理情報FPb(224)、FPc(226)を格納する。
【0064】
同様に、コンテンツf
3 をバックアップする場合、バックアッププログラム150は、チャンクb(282)、チャンクc(284)、チャンクd(286)、チャンクe(288)、チャンクf(289)のうち重複チャンクであるチャンクb、チャンクc、チャンクfを普遍コンテナ索引表Tc(128)とコンテナ索引表Tg(124)を用いて検出し、それら以外のチャンクd及びチャンクeをコンテナCh(136)に格納する。その後、バックアッププログラム150は、コンテナ索引表Th(126)に、チャンクd及びチャンクeの管理情報FPd(228)、FPe(229)をそれぞれ格納する。
【0065】
このように、本実施形態に係るバックアッププログラム150では、コンテンツf
3 の重複排除判定に際し、普遍コンテナ索引表Tc(128)とコンテナ索引表Tg(124)をメモリ104上に展開するだけでよい。一方、リストアプログラム152は、コンテンツf
3(280)をリストアする場合、コンテナCg(134)、コンテナCh(136)及び普遍コンテナCc(138)を参照し、コンテンツf
3(280)を読み出す。
【0066】
(1−3−3)実施形態で使用する各種索引表の構成
図4Aを参照して、バックアップ処理時とリストア処理時の両方で使用されるコンテナ索引表T(110)の構成例とチャンク索引表U(162)の構成例を説明する。コンテナ索引表110は、コンテナ単位で作成されるテーブルである。また、チャンク索引表162は、コンテナに格納されるチャンクを管理するテーブルである。
【0067】
図4Aには、コンテナ索引表110のうち一例であるコンテナ索引表Tg(124)と普遍コンテナ索引表Tc(128)を表している。コンテナ索引表110と普遍コンテナ索引表Tc(128)の構造は同じであり、フィンガプリント欄322、コンテナオフセット欄324及びチャンク長欄326から構成される。
【0068】
フィンガプリント欄322には、チャンクのフィンガプリントが格納される。コンテナオフセット欄324には、コンテナ内におけるチャンクの先頭位置を与えるオフセット値が格納される。チャンク長欄326には、チャンクの長さを示す情報が格納される。すなわち、コンテナ索引表110の各行には、チャンク毎の管理情報が格納される。
図4Aのコンテナ索引表110は、
図3に示すコンテンツf2 の到着後の状態に対応する。このため、チャンクbの管理情報224と、チャンクcの管理情報226が格納されている。
【0069】
複数のコンテナ索引表110は、チャンク索引表162により管理される。チャンク索引表162には、コンテナを識別するコンテナID314と、チャンクのフィンガプリント312とが対応づけられている。ここでのコンテナID314は、コンテナ索引表110を参照可能とするポインタ情報としても利用される。本実施形態では、コンテナID(CF)と対応するコンテナ索引表(TF)は、uuid(Universally Unique Identifier)と呼ばれる識別子で共通化されている。
【0070】
なお、チャンク索引表162の参照は、新規チャンクか否かを識別するフィルタ処理の処理結果に応じて判断してもよい。すなわち、チャンク索引表162に記録されていないことが確実なチャンクは、チャンク索引表162の参照処理自体をスキップし、新規コンテナに直接格納してもよい。この処理手法を採用すれば、チャンク索引表162を参照する回数を低減することができる。
【0071】
例えばディスク106に、コンテナと、コンテナ索引表、チャンク索引表とコンテンツ索引表の4つのファイルが存在し、それぞれ4つのディレクトリの下に配置されているものとする。
Container/uuid-Cf…コンテナ本体
ContainerIndexIndex/uuid-Cf…コンテナ索引表データベース(テーブルTFを格納するファイル)
ChunkIndex/fp の上位Nbit…チャンク索引表データベース
Contents/uuid-Cf…コンテンツ索引表データベース
【0072】
例えばコンテナ索引表Tg がメモリ104上に展開されていない場合において、コンテンツf
3 がバックアップされるとき、バックアッププログラム150は、チャンクbの管理情報FPb を使用してチャンク索引表162を検索する。
図4Aの場合、管理情報FPb には、コンテナIDのTg(230)が対応付けられている。そこで、バックアッププログラム150は、コンテナ索引表Tg(124)をメモリ104上に展開する。チャンクcの格納情報は、展開されたコンテナ索引表Tg(124)を検索することにより、重複判定を行うことができる。
【0073】
前述の通り、普遍コンテナ索引表Tc(128)は、コンテナ索引表110と同じ構造を有している。すなわち、普遍コンテナ索引表Tc(128)は、フィンガプリント欄322、コンテナオフセット欄324及びチャンク長欄326から構成される。
図4Aでは紙面の都合から既述を省略している。ただし、普遍コンテナ索引表Tc(128)は、バックアッププログラム150の起動時に、メモリ104に展開され保持されている。このため、例えば普遍チャンクfが格納される普遍コンテナ索引Tc(128)の情報は、チャンク索引表162に登録してもよいし、登録してなくてもよい。なぜなら、本実施形態の場合、後述するように、チャンク索引表162の検索前には必ず普遍コンテナ索引表Tc(128)が検索されるため、普遍チャンクfがどのコンテナ索引表に登録されているかを検出する目的で、チャンク索引表162を参照する必要はないからである。
【0074】
次に、
図4Bを参照して、リストア時に使用するコンテンツ索引表S(164)の構成例を説明する。コンテンツ索引表164は、コンテンツ単位で作成されるテーブルであって、コンテンツに含まれるチャンクを管理するテーブルである。コンテンツ索引表164は、コンテンツID欄361、フィンガプリント欄362、コンテナID欄364、コンテンツオフセット欄366及びチャンク長欄368から構成される。
【0075】
コンテンツID欄361には、コンテンツを識別する情報が格納される。フィンガプリント欄362には、チャンクのフィンガプリントが格納される。コンテナID欄364には、チャンクが格納されているコンテナの識別情報が格納される。コンテンツオフセット欄366には、コンテンツ内のチャンクの位置を示す情報が格納される。チャンク長欄368には、チャンクの長さを示す情報が格納される。
【0076】
例えば
図4Bでは、コンテンツ索引表164の例として、Sf
1(202)、Sf
2(204)、Sf
3(200)、Sf
n(360)を描いている。このうち、Sf
3(200)には、
図3に示すコンテンツf
3 の情報が格納されている。Sf
3(200)の情報により、コンテンツf
3 は、チャンクbと、チャンクc、チャンクd、チャンクe及びチャンクfにより再構成できること、各チャンクはどのコンテナのどの領域(オフセットとチャンク長)に格納されているかが分かる。
【0077】
コンテンツ索引表164を構成するコンテンツのオフセット(366)とチャンク長(368)は、コンテンツ内のチャンクの論理的な配置を示している。なお、前述したコンテナ索引表110(
図4A)におけるチャンクのオフセット(324)とチャンク長(326)は、ディスク106内のチャンクの物理的な配置を示している。
【0078】
リストア処理時、リストアプログラム152は、コンテンツ索引表164を参照し、各チャンクのコンテナIDを取得して、当該コンテナIDからコンテナ索引表110を検索する。次に、リストアプログラム152は、コンテナ索引表110に格納されている情報に基づいて各チャンクの物理的な格納位置を取得し、該当チャンクをディスク106から読み込む。この後、リストアプログラム152は、コンテンツ索引表164の論理的な配
置に従ってコンテンツを再構成する。
【0079】
(1−3−4)実施形態によるバックアップ処理動作の詳細
図5に、バックアッププログラム150により実行されるバックアップ処理動作の詳細を示す。まず、バックアッププログラム150は、バックアップ対象のコンテンツをチャンクs
i(i=1、2、…、n)に分解する(ステップS101)。
【0080】
次に、バックアッププログラム150は、チャンクs
i の管理情報ms
i(i=1、2、…、n)を作成する(ステップS102)。チャンクの管理情報ms
i には、チャンクのフィンガプリント、チャンクのコンテンツ内の位置(オフセット)、チャンクの長さが含まれる。
【0081】
続いて、バックアッププログラム150は、ループ処理に用いられるカウンタiを初期化(i=0)し、以下で説明するチャンクs
i の重複判定を開始する(ステップS103)。
【0082】
バックアッププログラム150は、メモリ104上に展開された普遍コンテナ索引表Tc(118)を検索し、重複判定を行う(ステップS110)。具体的には、バックアッププログラム150は、ステップS101において分解したチャンクのフィンガプリントと一致するフィンガプリントが普遍コンテナ索引表Tc(128)に含まれるか否かを判定する。バックアッププログラム150は、チャンクのフィンガプリントが普遍コンテナ索引表Tc(128)のフィンガプリントと一致する場合に「重複あり」と判定し、一致しない場合に「重複なし」と判定する。因みに、普遍コンテナ索引表Tc(128)は、バックアッププログラム150のプログラム起動時にメモリ104に読み込まれて常駐し、バックアッププログラム150の終了時にディスク106に書き出される。
【0083】
ステップS110においてフィンガプリントが一致するチャンクs
i が見つかった場合(重複チャンクであると判定された場合)、バックアッププログラム150は、ステップS140の処理を実行する。一方、ステップS110においてフィンガプリントが一致するチャンクs
i が見つからなかった場合(重複チャンクではないと判定された場合)、バックアッププログラム150は、ステップS112の処理を実行する。
【0084】
ステップS112において、バックアッププログラム150は、メモリ104上にあるコンテナ索引表Tf(112)を検索し、重複判定を行う。ステップS112においてフィンガプリントが一致するチャンクs
i が見つかった場合(重複チャンクであると判定された場合)、バックアッププログラム150は、ステップS140の処理を実行する。一方、ステップS112においてフィンガプリントが一致するチャンクs
i が見つからなかった場合(重複チャンクではないと判定された場合)、バックアッププログラム150は、ステップS120の処理を実行する。
【0085】
ステップS120において、バックアッププログラム150は、フィルタを用いて重複チャンクか否かを判定する。ステップS120においてチャンクs
i が新規チャンクであると判定された場合、バックアッププログラム150は、ステップS130の処理を実行する。一方、ステップS120においてチャンクs
i が重複チャンクの可能性が高いと判定された場合、バックアッププログラム150は、ステップS122の処理を実行する。
【0086】
ステップS122において、バックアッププログラム150は、チャンク索引表U(162)を検索し、チャンクs
i が重複チャンクか否かを判定する。ステップS122においてチャンクs
i が見つからなかった場合、バックアッププログラム150は、ステップS130の処理を実行する。一方、ステップ122においてチャンクs
i が見つかった場合、バックアッププログラム150は、チャンクs
i が格納されているコンテナIDを取得し、ステップS114の処理を実行する。
【0087】
ステップS114において、バックアッププログラム150は、メモリ上の上限コンテナ索引数までコンテナ索引表Tf(112)をメモリ104上に展開しているか否か判定する。ステップS114で上限まで使用されていると判定された場合、バックアッププログラム150は、メモリ上に展開されているコンテナ索引表Tf(112)のうち最も参照されていないコンテナをロールアウトし(ステップS116)、ステップS118の処理を実行する。一方、ステップS114で上限まで使用していないと判定された場合、バックアッププログラム150は、ステップS118の処理を実行する。
【0088】
因みに、バックアッププログラム150が参照する「メモリ上の上限コンテナ索引表数」は、オペレータによる管理者端末装置172に対する操作入力を介して発生されるコマンド等を通じて指定されている。また、「メモリ上の上限コンテナ索引表数」を管理者端末装置172を通じて指定しない場合、これらの値は、初期値として初期化ファイル等に予め格納しておいてもよい。この初期値は、バックアッププログラム150がその起動時に読み込む。
【0089】
ステップ118において、バックアッププログラム150は、チャンクs
i が格納されているコンテナ索引表Tf(112)をメモリ104上に展開する。ステップS118の実行後、バックアッププログラム150は、ステップS112に戻る。
【0090】
前述したように、本実施形態の場合、バックアッププログラム150は、チャンク索引表U(162)とコンテナ索引表T(110)を併用して重複判定処理を実行する。メモリ104は有限であるため、全てのコンテナ索引表110をメモリ104に展開することはできない。そのため、コンテナ索引表110とチャンク索引表162の2段階で重複判定を実行し、コンテナ索引表に関連性の高いチャンクを集約させることにより、重複判定に必要なコンテナ索引表のエントリ数を減らし、メモリ104の記憶容量を逼迫させずに、かつ、ディスク106との入出力回数を減らすことができる。
【0091】
前述のステップS120で新規チャンクと判定された場合、又は、ステップS122で検索対象のチャンクがチャンク索引表に見つからなかった場合、バックアッププログラム150は、コンテナ領域がFULLか否かを判定する(ステップS130)。ステップS130においてFULLと判定された場合、バックアッププログラム150は、新規コンテナとそのコンテナ索引表を作成し(ステップS132)、ステップS134を実行する。一方、ステップS130においてFULLでないと判定された場合、バックアッププログラムは、ステップS134を実行する。
【0092】
ステップS134において、バックアッププログラム150は、コンテナにチャンクs
iを書き出し、コンテナ索引表にチャンクs
i の管理情報ms
i を書き出し、チャンク索引表にチャンクs
i のメッセージダイジェストを書き出す。因みに、ステップS134の処理は、ステップS130の処理において、ライトバッファ142に書き出したコンテナがFULLだった場合には、コンテナ、コンテナ索引表、チャンク索引表を書き出し、一方、FULLでなかった場合には、ライトバッファ142上のコンテナ、コンテナ索引表、チャンク索引表に書き出すという処理を採用してもよい。この処理の採用により、ディスク106との間の入出力回数を減らすことができ、バックアップ性能を向上させることができる。
【0093】
ステップS134の実行後、バックアッププログラム150は、ステップS140を実行する。ステップS140において、バックアッププログラム150は、リストア用にコンテンツ索引表S(164)を書き出す。
【0094】
この後、バックアッププログラム150は、全てのチャンクについて、重複判定処理及び書き出し処理が終わったか否かを判定する(ステップS104)。具体的には、バックアッププログラム150は、コンテンツに含まれるチャンク数nと、カウンタiのカウンタ数とを比較する。
【0095】
ステップS104において、全てのチャンクに対して重複判定処理及び書き出し処理が終わったと判定された場合、バックアッププログラム150は、当該コンテンツのバックアップ処理を終了する。一方、ステップS104において、全てのチャンクに対して重複判定処理及び書き出し処理が終わっていないと判定された場合、バックアッププログラム150は、カウンタiに1を加算し、ステップS104に戻る(ステップS105)。
【0096】
(1−3−5)実施形態によるリストア処理動作の詳細
図6に、リストアプログラム152により実行されるリストア処理動作の詳細を示す。まず、リストアプログラム152は、コンテンツ索引表S(164)を参照し、読み込み対象であるコンテンツに含まれるチャンクs
i(s
i=1、2、…、n)の情報を取得する(ステップS201)。具体的には、リストアプログラム152は、コンテンツ索引表164から、読み込む必要のあるチャンクs
i のリストを作成する。
【0097】
次に、リストアプログラム152は、カウンタiに0を設定する(ステップS202)。その後、リストアプログラム152は、コンテナ索引表T
F(114)の管理情報ms
i を読み込む(ステップS203)。具体的には、リストアプログラム152は、ステップS201において取得したコンテンツ索引表164のチャンクs
i の情報から、当該チャンクs
i が属するコンテナ索引表114をディスク106から読み込み、該当チャンクの管理情報を読み込む。チャンクの管理情報とは、前述したように、チャンクのフィンガプリント、コンテナ内における位置、チャンクの長さの情報などである。
【0098】
次に、リストアプログラム152は、ステップS203で読み込んだチャンクの管理情報ms
i に基づいて、コンテナ索引表114に対応するコンテナ132等に格納されているチャンクs
i を読み込む(ステップS204)。
【0099】
続いて、リストアプログラム152は、リストア対象のコンテンツに含まれる全てのチャンクについて読み込みが終了したか否かを判定する(ステップS205)。具体的には、リストアプログラム152は、コンテンツに含まれるチャンク数nと、カウンタiのカウンタ数とを比較する。
【0100】
ステップS205において、全てのチャンクについて読み込みが終了したと判定された場合、リストアプログラム152は、読み込んだチャンクs
i(i=1、2、…、n)に基づいてコンテンツを再合成し、リストア処理を終了する(ステップS207)。具体的には、リストアプログラム152は、コンテンツ索引表164に既述されたコンテンツ内のオフセット情報やチャンク長情報に基づいて、読み込んだチャンクs
i をコンテンツに再合成する。一方、ステップS205において、全てのチャンクについて読み込みが終了していないと判定された場合、リストアプログラム152は、カウンタiに1を加算し、ステップS203に戻る(ステップS206)。
【0101】
(1−4)普遍コンテナの構成
(1−4−1)普遍チャンクの定義
続いて、本実施形態に係る普遍コンテナCc(138)の構成方法について説明する。普遍コンテナ138は、普遍チャンクの集合として構成される。普遍チャンクは、コンテンツタイプ毎に必ず出現するチャンクであり、必ずしも普遍チャンクのアクセスが多いわけではない。従って、コンテンツ毎に1回しかアクセスされなくても、必ずアクセスされるチャンクは普遍チャンクである。
【0102】
(1−4−2)普遍チャンクの特定処理の概念
バックアッププログラム150は、計測表R(160)を使用して普遍チャンクを特定する。
図7に、計測表160の具体的な構成を示す。計測表160は、メッセージダイジェスト300と、参照(reference)ビット302と、ni ビット310で構成される。メッセージダイジェスト300は、処理対象の特定に使用される。参照ビット302は、初期化時に「0」に更新され、登録されたメッセージダイジェスト300に参照があった場合に「1」に更新される。ni ビット310は、初期登録かどうかを示す。ni ビット310は、「0」に初期化され、初期登録でなくなった場合に「1」に更新される。
【0103】
以下では、コンテンツf
1(260)、コンテンツf
2(270)、コンテンツf
3(280)がバックアップされる場合について説明する。
図7(1)に示す計測表160は、バックアッププログラム150がコンテンツf
1(260)をバックアップした後の計測表160の状態を示す。前述したように、コンテンツf
1 は、チャンクaおよびチャンクfで構成される。ここでは、チャンクのFP(Finger Print)値をメッセージダイジェスト300に登録している。なお、ni ビット310が「0」であるため、コンテンツf
1 を構成する全てのチャンクが計測表160に登録される。バックアッププログラム150は、コンテンツf
1 のバックアップが終了した時点で、ni ビットを「1」に更新する。
【0104】
次に、バックアッププログラム150は、コンテンツf
2(270)をバックアップする。この際、ni ビットに「1」が設定されている。このため、バックアッププログラム150は、コンテンツf
2 に重複チャンクがある場合、重複チャンクに対応する参照ビット302を「1」に更新する。
図7(2)に示す計測表160は、コンテンツf
2 のバックアップを行った時点における計測表160の状態である。ここでのコンテンツf
2 は、チャンクb、チャンクc及びチャンクfで構成される。このため、チャンクfに対応するFP値FPf の参照ビットのみが「1」に更新される。
【0105】
続いて、バックアッププログラム150は、コンテンツf
2 のバックアップが終了した時点において参照ビット302が「0」であるメッセージダイジェストを削除する。そして、計測表160に残っている登録がある場合には、その参照ビットを「0」で更新する。
【0106】
バックアッププログラム150は、同様の処理をコンテンツf
3 に繰り返し適用する。
図7(3)に示す計測表160は、コンテンツf
3 のバックアップ処理後の計測表160の状態を表している。このとき、計測表160に登録されているデータは、チャンクfである。この際、バックアッププログラム150は、チャンクfが普遍チャンクであると判定する。
【0107】
(1−4−3)普遍チャンク特定処理の詳細
図8に、バックアッププログラム150により実行される普遍チャンク特定処理の詳細を示す。なお、本実施形態の場合、普遍チャンク特定処理は、本来のバックアップ処理(ストレージ装置の運用開始)に先立って実行される。
【0108】
まず、バックアッププログラム150は、計測するコンテンツ数をmにセットし(ステップS301)、変数jを0に初期化する(ステップS302)。
【0109】
続いて、バックアッププログラム150は、
図5のステップS101、S102、S103と同様の処理を実行し、コンテンツf
j を構成するチャンクs
i の管理情報ms
i を作成する。その後、バックアッププログラム150は、計測表160(
図7)のni ビット310を参照し、2個以上のコンテンツの計測か否かを判定する(ステップS310)。
【0110】
最初のコンテンツの計測であると判定された場合(ステップS310で否定結果の場合)、バックアッププログラム150は、ステップS314の処理を実行する。ステップS314において、バックアッププログラム150は、チャンクs
i のFP 値FP
si を計測表160に登録する。この後、バックアッププログラム150は、ステップS104の処理を実行する。
【0111】
一方、ステップS310において、2個以上のコンテンツの計測であると判定された場合、バックアッププログラム150は、ステップS312の処理を実行する。ステップS312において、バックアッププログラム150は、チャンクs
i のFP 値FP
si が計測表160に既に登録済みか否かを判定する。FP 値FP
si が既登録だった場合、バックアッププログラム150は、ステップS316を実行する。一方、FP 値FP
si が既登録でなかった場合、バックアッププログラム150は、ステップS104の処理を実行する。ステップS316において、バックアッププログラム150は、FP 値FP
si の参照ビット302を「1」に更新する。この後、バックアッププログラム150は、ステップS104の処理を実行する。
【0112】
ステップS104において、バックアッププログラム150は、コンテンツf
j の全てのチャンクについて処理が終了したか否かを判定する(ステップS104)。具体的には、バックアッププログラム150は、変数iとチャンク数nを比較する。変数iがチャンク数nより小さい場合、バックアッププログラム150は、変数iに1を加え、ステップS310に戻る(ステップS105)。一方、iがn以上の場合、バックアッププログラム150は、ステップS320の処理を実行する。
【0113】
ステップS320において、バックアッププログラム150は、計測表160(
図7)のni ビット310を参照し、2個以上のコンテンツの計測か否かを判定する。2個以上のコンテンツの計測であると判定した場合、バックアッププログラム150はステップS322の処理を実行する。一方、最初のコンテンツの計測であると判定した場合は、バックアッププログラム150は、ステップS304の処理を実行する。
【0114】
ステップS322において、バックアッププログラム150は、参照ビット302が「0」であるメッセージダイジェスト300を計測表160から削除する。この処理により、コンテンツf
j の計測において参照のなかったチャンク情報が計測表160から削除される。この後、バックアッププログラム150は、計測表160に残ったデータの参照ビットを全て「0」に設定し、次の計測に備える(ステップS324)。
【0115】
この後、バックアッププログラム150は、変数jと計測コンテンツ数mを比較する(ステップS304)。変数jが計測コンテンツ数mより小さい場合、バックアッププログラム150は、変数jに1を加え、ステップS101に戻る(ステップS305)。一方、変数jがm以上であった場合、バックアッププログラム150は、処理を終了する。
【0116】
ところで、
図7及び
図8の場合、バックアッププログラム150は、チャンクs
i のFP(finger print)値を用いて、普遍チャンクの特定処理を実行している。しかし、普遍チャンクの特定には、FP(finger print)値に代えて、ローリングハッシュ方式により導出されたハッシュ値を使用してもよい。例えば非特許文献2及び非特許文献3に記されているように、ローリングハッシュ方式は、決められたウィンドウ幅に収められたデータ列のハッシュ値を高速に計算する方式である。具体的には、あるウィンドウ幅のハッシュ値を計算すると、ウィンドウをずらし、そのウィンドウ内のデータ列のハッシュ値を、ずらす前のハッシュ値を用いて計算する。
【0117】
(1−4−4)普遍コンテナ及び普遍コンテナ索引表の作成処理の詳細
前述した普遍チャンク特定処理は、コンテンツのバックアップ開始前に、バックアッププログラム150を利用して実行される。また、バックアッププログラム150は、計測表160のメッセージダイジェスト300を利用し、普遍コンテナCc(138)と普遍コンテナ索引表Tc(128)を作成する。なお、普遍コンテナ138と普遍コンテナ索引表128は、普遍チャンク特定処理に伴って作成されたコンテナとコンテナ索引表を参照して作成される。普遍コンテナ138と普遍コンテナ索引表128の作成後、普遍チャンク特定処理に伴って作成されたチャンク索引表、コンテナ、コンテナ索引表はいずれも削除される。
【0118】
この普遍チャンクの特定処理は、オペレータによる管理者端末装置172に対する操作入力を介して発生されるコマンド等を通じて指定されている。これらの指定に管理者端末装置172からのコマンド等を使用しない場合、指示内容を初期化ファイル等に初期値として予め格納し、バックアッププログラム150の起動時に読み込んで使用してもよい。
【0119】
普遍コンテナ索引表128は、バックアッププログラム150の起動時に、メモリ104に展開され保持される。また、普遍コンテナ138も、バックアッププログラム150の起動時に、メモリ104に展開され保持されてもよい。プログラムの終了時、バックアッププログラム150は、メモリ上に展開した普遍コンテナ索引表128を終了する。もし、普遍コンテナ138もメモリ上に展開していた場合には、バックアッププログラム150は、プログラムの終了時に普遍コンテナ138も終了する。
【0120】
(1−5)本実施形態の効果
以上説明したように、本実施形態に係るストレージ装置100は、普遍チャンクを集約的に管理する普遍コンテナ138と普遍コンテナ索引表128を用意する。普遍チャンク用のコンテナとその索引表を用意することにより、従来方式のように、普遍チャンクの属するコンテナに普遍チャンク以外のチャンクが混在したまま管理されることはない。このため、バックアップ処理時には、普遍チャンクに関する管理情報だけを集約した普遍コンテナ索引表128をメモリ104上に展開し、格納するチャンクが普遍チャンクか否かの判定に使用することができる。
【0121】
一方、従来方式の場合には、ほとんど参照されることが無い普遍チャンク以外のチャンクも一緒に管理するコンテナ索引表をメモリ上に展開する必要がある。このため、ほとんど参照されることのない情報がメモリ上に何度も展開されてしまう。
【0122】
本実施形態に係るストレージ装置100は、コンテンツから切り出したチャンクが重複チャンクか否かを検出する際に、アクセス頻度は低くとも必ず参照される普遍チャンクだけを含む普遍コンテナ索引表をメモリ104上に展開するため、メモリ104の効率的な利用を実現できる。
【0123】
また、リストアに際しても、普遍チャンクは普遍コンテナに集約的に格納されているため、普遍チャンクをディスク106からメモリ104に読み出す際の入出力回数を従来方式に比して削減し、メモリ104の効率的な利用を実現することができる。
【0124】
以上の結果、ストレージ装置100のバックアップ性能及びリストア性能を、従来方式
に比して向上させることができる。
【0125】
(2)第2の実施形態
(2−1)ストレージ装置に搭載する重複排除機能の概要
まず、本実施形態に係る重複排除機能の概要について説明する。第1の実施形態では、バックアッププログラム150を利用して、コンテンツのバックアップ開始前に普遍コンテナCc(138)を作成し、ストレージ装置100によるバックアップ処理の運用開始後は、普遍チャンクの特定処理を実行しない場合について説明した。
【0126】
しかし、本実施形態に係るストレージ装置の場合には、運用開始後も普遍チャンクの特定処理を実行し、特定した普遍チャンクを普遍コンテナに追加登録できるようにする。
【0127】
本実施形態に係るバックアッププログラム150は、バックアップ対象のコンテンツが到着した時点で、
図8と同様の普遍チャンク特定処理を開始する。バックアッププログラム150による特定処理の終了は、世代毎のバックアップが完了した時であり、計測表160で特定した普遍チャンクを普遍コンテナCc(138)に登録する。続いて、バックアッププログラム150は、普遍コンテナ138をディスク106に書き出し、普遍コンテナに追加登録された普遍チャンクのデータが、次回のバックアップ処理に反映されるように処理する。
【0128】
図9に、本実施形態による普遍コンテナおよびその索引表の登録イメージを示す。
図9に示すように、運用開始前に特定された普遍チャンクおよびその管理情報の組502と、運用開始後に特定された普遍チャンクとその管理情報の組504は、同じ普遍コンテナ索引表128および普遍コンテナ138に格納される。
【0129】
(2−2)ストレージ装置の構成
本実施形態に係るストレージ装置100の機能構成は、バックアッププログラム150に設ける追加機能を除き、第1の実施形態と同様である。従って、詳細な説明は省略する。
【0130】
(2−3)バックアップ処理及びリストア処理
本実施形態に係るバックアップ処理及びリストア処理は、第1の実施の形態とほぼ同様である。従って、詳細な説明は省略する。
【0131】
(2−4)普遍コンテナの構成
本実施形態に係るバックアップ処理開始前の普遍コンテナの構成は、第1の実施形態と
同様である。従って、詳細な説明は省略する。
【0132】
(2−5)バックアップ処理中における普遍チャンクの登録および削除
ここでは、バックアップ処理の開始後に普遍チャンクが特定された場合に、特定された
普遍チャンクを普遍コンテナに追加登録するための処理手順を説明する。
【0133】
本実施形態の場合、バックアッププログラム150は、バックアップ処理の開始と同時に、普遍チャンク特定処理を開始する。バックアッププログラム150は、処理対象とするコンテンツのバックアップが完了し、新たなバックアップ世代が作成されると、計測表160に登録されたデータに基づいてコンテナ索引表T(110)を検索し、その検索結果である管理情報を普遍コンテナ索引表Tc(118)に追加登録する。すなわち、バックアッププログラム150は、特定した普遍チャンクの管理情報のコピーを、普遍コンテナCc(138)に登録する。
【0134】
リストア性能の向上を期待する場合には、チャンクデータそのものを普遍コンテナ138に追加し、コピーを作成してもよい。しかし、この手法では、チャンクデータの重複が生じてしまう。また、追加登録するチャンクデータそのものは、普遍コンテナ以外のコンテナに既に登録されているため、必ずしも普遍コンテナ138へ登録する必要はない。
【0135】
例えばバックアッププログラム150は、以下の処理動作を実行する。バックアッププログラム150は、新規バックアップの開始後にあってバックアップ世代を進める際、計測表160のコピーをとり、新規の普遍チャンク特定処理を開始する。普遍チャンク特定処理の完了後、バックアッププログラム150は、コピーをとっておいた1世代前の計測表160と比較し、1世代前の計測表160にはあるが、現在の計測表160にはない普遍チャンク情報を、普遍コンテナ索引表118から削除する。もし、普遍コンテナ138にもチャンクデータが登録されていた場合、バックアッププログラム150は、同様にチャンクデータを削除する。
【0136】
(2−6)本実施形態の効果
以上のように、本実施形態では、普遍チャンク特定処理をバックアップの運用開始後も適用し、バックアップ世代が進む度に新規な普遍チャンクの特定を可能にする。また、本実施形態では、使用されなくなった普遍チャンクを削除し、普遍コンテナ及び普遍コンテナ索引表が無限に増加することを回避する。これにより、バックアップ世代の変化に対応した普遍コンテナ及び普遍コンテナ索引表の運用が可能になる。
【0137】
(3)第3の実施形態
(3−1)ストレージ装置に搭載する重複排除機能の概要
まず、本実施形態に係る重複排除機能の概要を説明する。第2の実施形態に係るストレージ装置は、バックアッププログラム150が、運用開始前に普遍コンテナ138を作成するだけでなく、運用開始後も普遍チャンク特定処理を実行する。そして、第2の実施形態に係るバックアッププログラム150は、新たに特定された普遍チャンクを普遍コンテナに追加登録する一方、使用しない普遍チャンクを普遍コンテナから削除する。このように、第2の実施形態の場合、予め作成され登録されていた普遍チャンクが、普遍コンテナから事後的に削除される可能性がある。ところが、データベースは、通常、レコードの登録と削除を繰り返すことでフラグメンテーションが発生し、レコードの検索性能も登録性能も劣化する。
【0138】
そこで、本実施形態に係るストレージ装置では、予め作成した普遍コンテナ索引表(以下「静的普遍コンテナ索引表」という)と、運用開始後に新たに特定された普遍チャンクが登録される普遍コンテナ索引表(以下「動的普遍コンテナ索引表」という)とを別の表として管理する手法を採用する。なお、本実施形態に係るストレージ装置は、運用開始後は、静的普遍コンテナ索引表を読み込み処理だけに制限し、フラグメンテーションによる性能劣化部位を動的普遍コンテナ索引表のみに制限する。
【0139】
本実施形態において、バックアッププログラム150は、プログラムの起動時に、静的普遍コンテナ索引表および動的普遍コンテナ索引表をメモリ104上に展開し、バックアップ対象のコンテンツが到着したときに、普遍チャンク特定処理を開始する。
【0140】
バックアッププログラム150による普遍チャンク特定処理の終了は、世代毎のバックアップが完了した時であり、計測表160で新たに特定された普遍チャンクを動的普遍コンテナに登録する。続いて、バックアッププログラム150は、動的普遍コンテナをディスク106へ書き出し、動的普遍コンテナに追加登録された普遍チャンクのデータが、次回のバックアップ処理に反映されるように処理する。
【0141】
図10に、本実施形態による普遍コンテナおよびその索引表の登録イメージを示す。
図10に示すように、運用開始前に特定された普遍チャンクおよびその管理情報の組502は、静的普遍コンテナ索引表512と静的普遍コンテナ522に格納され、運用開始後に特定された普遍チャンクとその管理情報の組504は、動的普遍コンテナ索引表514と動的普遍コンテナ524に格納される。
【0142】
(3−2)ストレージ装置の構成
本実施形態に係るストレージ装置100の機能構成は、バックアッププログラム150に設ける追加機能を除き、第1の実施形態とほぼ同様である。従って、詳細な説明は省略する。
【0143】
(3−3)バックアップ処理およびリストア処理
本実施形態に係るバックアップ処理及びリストア処理は、第1の実施の形態とほぼ同様である。従って、詳細な説明は省略する。
【0144】
(3−4)普遍コンテナの構成
本実施形態の場合も、バックアップ処理開始前の普遍コンテナの構成は、第2の実施形態と同様である。従って、バックアップ処理開始前の普遍コンテナの構成についての詳細な説明は省略する。
【0145】
(3−5)バックアップ処理中における普遍チャンクの登録および削除
ここでは、バックアップ処理開始後に普遍チャンクが新たに特定された場合に、特定された普遍チャンクを普遍コンテナに追加登録するための処理手順について説明する。
【0146】
本実施形態の場合、バックアッププログラム150は、バックアップ処理の開始と同時に、普遍チャンク特定処理を開始する。バックアッププログラム150は、処理対象とするコンテンツのバックアップが完了し、新たなバックアップ世代が作成されると、計測表160に登録されたデータに基づいてコンテナ索引表を検索し、その検索結果である管理情報を動的普遍コンテナ索引表514に追加登録する。すなわち、バックアッププログラム150は、特定した普遍チャンクの管理情報のコピーを、動的普遍コンテナ索引表514に登録する。リストア性能の向上を期待する場合には、チャンクデータそのものを動的普遍コンテナ524に追加し、コピーを作成してもよい。しかし、この手法では、チャンクデータの重複が生じてしまう。また、追加登録するチャンクデータそのものは、普遍コンテナ以外のコンテナに既に登録されているため、必ずしも動的普遍コンテナ524に登録する必要はない。
【0147】
例えばバックアッププログラム150は、以下の処理動作を実行する。バックアッププログラム150は、新規バックアップの開始後にあってバックアップ世代を進める際、計測表160のコピーをとり、新規の普遍チャンク特定処理を開始する。普遍チャンク特定処理の完了後、バックアッププログラム150は、コピーをとっておいた1世代前の計測表160と比較し、1世代前の計測表160にはあるが、現在の計測表160にはない動的普遍チャンク情報を、動的普遍コンテナ索引表514から削除する。もし、動的普遍コンテナにもチャンクデータが登録されていた場合、バックアッププログラム150は、同様にチャンクデータを削除する。
【0148】
更に、削除により全てのデータがなくなった場合、バックアッププログラム150は、動的普遍コンテナ索引表514の初期化を実行する。初期化とは、データベースに付随する初期化機能を利用してもよいし、既存の動的普遍コンテナ索引表514を削除して、新規に動的普遍コンテナ索引表514を作成してもよい。これらの処理により、データベース内部で起きたフラグメンテーションによる性能劣化を回避することができる。
【0149】
(3−6)本実施形態の効果
以上のように、本実施形態では、普遍チャンク特定処理をバックアップの運用開始後も適用し、バックアップ世代が進む度に新規に特定される普遍チャンクを動的普遍コンテナ524に登録し、使用されなくなった普遍チャンクを動的普遍コンテナ索引表514から削除する。これにより、静的普遍コンテナ522内の登録データが削除されることを回避することができ、データベースのフラグメンテーションによる性能劣化を回避することができる。
【0150】
(4)第4の実施形態
(4−1)ストレージ装置に搭載する重複排除機能の概要
まず、本実施形態に係る重複排除機能の概要を説明する。前述した第1、第2及び第3の実施形態では、バックアッププログラム150が、バックアップ世代毎に普遍チャンクを特定していた。通常、普遍チャンクは、ファイルフォーマットに依存し、コンテンツタイプ毎に存在する。
【0151】
バックアップするコンテンツに複数のコンテンツタイプが含まれる場合、バックアップ世代毎に普遍チャンクの特定処理を実行しても、コンテンツタイプ毎の普遍チャンクを特定することはできず、複数のコンテンツタイプに共通する普遍チャンクのみが特定される。すなわち、コンテンツタイプ毎の普遍チャンクは、他のチャンクと同様、通常のコンテナに登録される。
【0152】
例えば、あるバックアップ世代では、コンテンツタイプAのコンテンツがバックアップされたものの、後続する1又は複数のバックアップ世代では、コンテンツタイプAのコンテンツのバックアップが実行されず、それ以後のバックアップ世代で、コンテンツタイプAのコンテンツのバックアップが実行される場合に、前述した状況が発生する。
【0153】
このため、コンテンツタイプ毎に必ず出現する普遍チャンクを参照する際には、ほとんど参照されることのない他のデータの管理情報も含むコンテナ索引表や対応するコンテナをメモリ上に展開する必要がある。この場合、必要性の低いデータの読み書きが多く発生すると共に、必要性の低いデータでメモリ資源が消費される。このことは、バックアップ性能およびリストア性能の低下に通じる。
【0154】
そこで、本実施形態では、普遍チャンクをコンテンツタイプ毎に特定する手法を採用する。このために、本実施形態に係るバックアッププログラム150は、静的普遍コンテナを作成する際に、コンテンツタイプ毎に計測表160を作成し、普遍チャンクを特定する。また、バックアッププログラム150は、特定した普遍チャンクを静的普遍コンテナに登録し、静的普遍コンテナ索引表を作成する。
【0155】
バックアッププログラム150は、その起動時に静的普遍コンテナ索引表および動的普遍コンテナ索引表をメモリ104に展開し、バックアップ対象のコンテンツが到着すると、普遍チャンク特定処理をコンテンツタイプ別に開始する。本実施形態における普遍チャンク特定処理の終了は、世代毎のバックアップが完了した時であり、計測表160で特定された普遍チャンクを動的普遍コンテナに登録する。続いて、バックアッププログラム150は、動的普遍コンテナをディスク106へ書き出し、動的普遍コンテナに追加登録された普遍チャンクのデータが、次回のバックアップ処理に反映されるように処理する。
【0156】
図11に、本実施形態に係る普遍チャンクおよび管理情報の登録イメージを示す。
図11の場合、運用開始前に特定された普遍チャンクおよびその管理情報の組600は、コンテンツタイプ別の組610、612、614で構成される。コンテンツタイプ別に生成された管理情報は静的普遍コンテナ索引表512に格納され、コンテンツタイプ別に特定された普遍チャンクは静的普遍コンテナ522に格納される。運用開始後に特定される普遍チャンクおよびその管理情報の組602は、コンテンツタイプ別の組620、622、624、626で構成される。なお、運用開始後に初めて扱う1又は複数のコンテンツタイプについては、それらを1つのグループとして扱い、それらに共通する普遍チャンクおよびその管理情報の組626とする。コンテンツタイプ別に生成された管理情報は動的普遍コンテナ索引表514に格納され、コンテンツタイプ別に特定された普遍チャンクは動的普遍コンテナ524に格納される。
【0157】
(4−2)ストレージ装置の構成
本実施形態に係るストレージ装置100の機能構成は、バックアッププログラム150に設ける追加機能を除き、第1の実施形態とほぼ同様である。従って、詳細な説明は省略する。
【0158】
(4−3)バックアップ処理およびリストア処理
本実施形態に係るバックアップ処理及びリストア処理は、第1の実施の形態とほぼ同様である。従って、詳細な説明は省略する。
【0159】
(4−4)普遍コンテナの構成
本実施形態の場合も、バックアップ処理の開始前には、コンテンツタイプ毎に計測表160を用意して普遍チャンクを特定し、特定された普遍チャンクを静的普遍コンテナに登録する点以外は、前述した実施形態と同様である。また、バックアップ処理の開始中には、コンテンツタイプ毎に計測表160を用いて普遍チャンクを特定し、特定された普遍チャンクを動的普遍コンテナに登録する点以外は、前述した実施形態と同様である。
【0160】
図11に示したように、本実施形態の場合、静的普遍コンテナ、動的普遍コンテナおよびそれらの索引表を、コンテンツタイプ毎にディスク106に格納する。各コンテンツタイプに対応する静的普遍コンテナ522は、バックアッププログラム150の起動時に、メモリ104に展開される。この際、バックアッププログラム150は、コンテンツタイプ別に用意された静的普遍コンテナ522を、1つの静的普遍コンテナおよびその索引表に集約した形態で新規登録することもできる。勿論、バックアッププログラム150は、それぞれを独立した静的コンテナおよび索引表としてメモリに展開してもよい。動的普遍コンテナおよびその索引表についても、コンテンツタイプ毎に独立したものとして構成してもよいし、それぞれを集約したものとして構成してもよい。
【0161】
(4−5)コンテンツタイプ毎に普遍チャンクを特定する処理
図12に、コンテンツタイプ毎に普遍チャンクを特定するための処理手順を示す。バックアッププログラム150は、まず、バックアップ対象であるコンテンツ毎にそのコンテンツタイプを認識する(ステップS401)。このコンテンツタイプは、コンテンツのヘッダに格納されているマジックナンバーや拡張子などに基づいて認識することができる。なお、認識できなかったコンテンツタイプは1つのグループとして扱う。
【0162】
コンテンツタイプの認識後、バックアッププログラム150は、コンテンツタイプ別に
図8に示した処理(ステップS402、S403、S404およびS405)を実行する。すなわち、コンテンツタイプ毎に普遍チャンクを特定する。
【0163】
(4−6)本実施形態の効果
以上のように、本実施形態では、普遍チャンク特定処理をコンテンツタイプ毎に適用する。このため、バックアップするコンテンツに複数のコンテンツタイプが混在している場合にも、コンテンツタイプ別の普遍チャンクを特定し、普遍コンテナおよびその索引表として管理することができる。このため、バックアップやリストアの実行時には、バックアップ対象であるコンテンツに必ず出現する普遍チャンクだけを格納する普遍コンテナとその索引表だけをメモリ上に展開することができる。すなわち、普遍チャンクの参照時以外にはほとんど参照されることがないコンテナ索引表やコンテナがメモリ上に展開される可能性を回避できる。この結果、バックアップ性能およびリストア性能を向上することができる。
【0164】
(5)第5の実施形態
(5−1)ストレージ装置に搭載する重複排除機能の概要
まず、本実施形態に係る重複排除機能の概要を説明する。前述した第4の実施形態では、バックアッププログラム150が、コンテンツタイプ毎の普遍チャンクの特定処理を静的にも動的にも実行する場合について説明した。しかし、コンテンツタイプは多数存在する。
【0165】
従って、全てのコンテンツタイプに対応して普遍チャンクの特定処理を実行することは処理負荷が大きい。また、コンテンツタイプの数だけ計測表160が必要となり、メモリ領域を消費する。また、実用上は、バックアップシステム毎に使用されるファイルフォーマットについてのみ静的普遍コンテナ、動的普遍コンテナおよびそれらの索引表を構成できればよく、全てのファイルフォーマットについて個別に普遍チャンクを登録する必要は無い。実際、全てのファイルフォーマットについて、静的普遍コンテナ、動的普遍コンテナおよびそれらの索引表を登録すると、使用頻度の少ない普遍チャンクの登録が発生し、リソースの無駄でもある。
【0166】
そこで、本実施形態では、実際に使用されるコンテンツタイプについてのみ、静的普遍コンテナ、動的普遍コンテナおよびそれらの索引表を構成することを可能にする。具体的には、静的普遍コンテナの作成に先立って、普遍コンテナとその索引表を作成するコンテンツタイプを、予めオペレータが指定する方式を採用する。選択後は、選択されたコンテンツタイプについてのみ計測表160を作成し、該当するコンテンツタイプについて普遍チャンクの特定処理を実行する。バックアッププログラム150は、特定された普遍チャンクを静的普遍コンテナに登録し、その管理情報の格納用に静的普遍コンテナ索引表を作成する。
【0167】
運用開始後、バックアッププログラム150は、その起動時に静的普遍コンテナ索引表および動的普遍コンテナ索引表をメモリ104上に展開し、バックアップ対象のコンテンツが到着するたびに、普遍チャンク特定処理を選択されたコンテンツタイプ毎に開始する。普遍チャンク特定処理は、世代毎のバックアップが完了した時に終了する。バックアッププログラム150は、計測表160を用いて特定された普遍チャンクを動的普遍コンテナに登録する。次にバックアッププログラム150は、動的普遍コンテナをディスク106に書き出し、動的普遍コンテナに追加登録された普遍チャンクのデータが、次回のバックアップに反映されるように処理する。
【0168】
使用予定のコンテンツタイプの選択および指定は、オペレータによる管理者端末装置172に対する操作入力を通じて行う。管理者端末装置172は、操作入力に応じた指示(コマンド等)をバックアッププログラム150に発行する。もっとも、バックアッププログラム150に対するこれらの指示は、管理者端末装置172から指定しない場合も考えられる。この場合、対応する指示は、初期化ファイル等に初期値として予め格納しておき、バックアッププログラム150の起動時に当該初期値を読み込んでもよい。
【0169】
図13に、管理者端末装置172の操作画面に表示されるコンテンツタイプ選択画面700の構成例を示す。
図13(A)は、コンテンツタイプを選択する前の画面構成例を示す。選択画面700は、選択可能コンテンツタイプのリスト欄702、選択済みコンテンツタイプ欄704、リスト欄702で選択されたコンテンツタイプを選択済みコンテンツタイプ欄704に反映させるボタン710、選択済みコンテンツタイプ欄704に選択されたコンテンツタイプをバックアップシステムに反映させる登録ボタン712から構成される。
【0170】
図13(B)は、コンテンツタイプを選択した後の画面構成を説明する画面例である。
図13(B)は、リスト欄702に示される4つのコンテンツタイプの中からコンテンツタイプFT2が選択され、ボタン710がクリック操作された後の画面を表している。リスト欄702の網掛け表示720は、コンテンツタイプFT2が選択状態にあることを表している。選択状態は、例えば選択前とは異なる色で表示される。ボタン710の操作後であるので、選択済コンテンツタイプ欄704には、選択されたコンテンツタイプの名称722が示される。
【0171】
図14に、本実施形態による普遍コンテナおよびその索引表の登録イメージを示す。
図14は、運用開始前に特定された(又は特定可能な)普遍チャンクおよびその管理情報の組600のうち
図13(B)に示す操作画面で選択されたコンテンツタイプだけが静的普遍コンテナ522および静的普遍コンテナ索引表512に格納される様子を表している。
【0172】
図14では、普遍チャンクおよびその管理情報の組600として、コンテンツタイプFT1に対応する組610、コンテンツタイプFT2に対応する組612、コンテンツタイプFTxに対応する組614を描いている。また、選択済みのコンテンツタイプFT2に対応する静的普遍コンテナが静的普遍コンテナ522に登録され、対応する管理情報が静的普遍コンテナ索引表512に登録されている。
【0173】
本実施形態の場合、運用開始後における普遍チャンクの特定処理は、選択されたコンテンツタイプとそれ以外のコンテンツタイプについて実行される。
図13(B)の場合、選択されたコンテンツタイプは1つである。従って、
図14においても、運用開始後に特定される普遍チャンクおよびその管理情報の組602は、コンテンツタイプFT2に対応する組622とそれ以外のコンテンツタイプに対応する組626の2種類となる。この場合、これら2種類のコンテンツタイプについてそれぞれ特定された普遍チャンクは動的普遍コンテナ524に格納され、その管理情報は動的普遍コンテナ索引表514に登録される。
【0174】
(5−2)ストレージ装置の構成
本実施形態に係るストレージ装置100の機能構成は、バックアッププログラム150に設ける追加機能を除き、第1の実施形態とほぼ同様である。従って、詳細な説明は省略する。
【0175】
(5−3)バックアップ処理およびリストア処理
本実施形態に係るバックアップ処理及びリストア処理は、第1の実施の形態とほぼ同様である。従って、詳細な説明は省略する。
【0176】
(5−4)普遍コンテナの構成
本実施形態の場合も、バックアップ処理の開始前には、選択されたコンテンツタイプ毎に計測表160を用意して普遍チャンクを特定し、特定された普遍チャンクを静的普遍コンテナに登録する点以外は第4の実施形態と同じである。
【0177】
同様に、本実施形態の場合も、バックアップ処理の開始中には、選択されたコンテンツタイプとそれ以外のコンテンツタイプ毎に計測表160を用いて普遍チャンクを特定し、特定された普遍チャンクを動的普遍コンテナに登録する点以外は、前述した実施形態と同様である。
【0178】
また、本実施形態の場合も、静的普遍コンテナ、動的普遍コンテナおよびそれらの索引表を、コンテンツタイプ毎にディスク106に格納する。選択されたコンテンツタイプに対応する静的普遍コンテナ522は、バックアッププログラム150の起動時に、メモリ104に展開される。この際、選択された複数のコンテンツタイプに対応する静的普遍コンテナおよびその索引表を、1つの静的普遍コンテナおよびその索引表に集約した形態で新規登録することもできる。勿論、バックアッププログラム150は、それぞれを独立した静的コンテナおよび索引表としてメモリに展開してもよい。動的普遍コンテナおよびその索引表についても、選択されたコンテンツタイプ毎に独立したものとして構成してもよいし、それぞれを集約したものとして構成してもよい。
【0179】
(5−5)本実施形態の効果
以上のように、本実施形態では、普遍チャンク特定処理を指定されたコンテンツタイプについてのみ適用する。このため、考えられる又は出現する全てのコンテンツタイプについて、個別に普遍チャンク特定処理を実行する場合に比して処理負荷を抑制することができる。また、本実施形態の場合には、考えられる又は出現する全てのコンテンツタイプについて個別の計測表160を用意する必要がない。従って、コンテンツタイプを選択しない場合に比して、メモリの消費量を必要最低限に抑制することができる。また、考えられる又は出現する全てのファイルフォーマット毎に普遍チャンクを登録する場合には、静的普遍コンテナ、動的普遍コンテナおよびその索引表に、使用頻度の小さい普遍チャンクの登録が発生し、リソースの無駄でもある。しかし、本実施形態の場合には、選択されたコンテンツタイプについてのみ、静的普遍コンテナ、動的普遍コンテナおよびその索引表を生成し、管理することにより、バックアップ性能およびリストア性能を向上することができる。
【0180】
(6)他の実施の形態
前述の実施形態においては、各種処理機能の全体を制御する制御部としてプロセッサ102を適用する場合について説明した。しかし、本発明はこれに限らず、かかる制御部としての処理を実行するハードウェアやソフトウェアを、プロセッサ102とは別に用意してもよい。このような構成を採用する場合にも、前述の実施形態と同様の効果を実現することができる。
【0181】
また、各実施形態に係る重複排除機能を実現する処理ステップは、必ずしもフローチャートに記載した順序に沿って時系列に処理する必要はない。すなわち、ストレージ装置100等で実行される処理ステップの実行順序は実施形態とは異なっていてもよいし、並列的に実行されてもよい。
【0182】
また、ストレージ装置100等に内蔵されるCPU、ROMおよびRAMなどのハードウェア構成を、これらと同等の機能を有するコンピュータプログラムの処理を通じて実現してもよい。また、このコンピュータプログラムは、ネットワーク経由で配信してもよいし、記憶媒体に記憶した状態で提供してもよい。