(58)【調査した分野】(Int.Cl.,DB名)
前記コンテンツ種別識別情報に対応する前記チャンク切り出し方式は、前記コンテンツを単一のチャンクとして切り出す単体チャンク方式、前記コンテンツを所定の長さのチャンクに切り出す固定長チャンク方式及び前記コンテンツに含まれる可変長のデータセグメントの境界位置ごとに前記チャンクを切り出す可変長チャンク方式である
ことを特徴とする、請求項5に記載のストレージ装置。
ネットワークを介して接続された上位装置からのコンテンツの格納要求に応じて、当該コンテンツをバックアップボリュームに格納するストレージ装置を用いた重複データ検出方法であって、
チャンク切り出し部が、前記コンテンツを1または2以上のチャンクに切り出す第1のステップと、
重複判定部が、前記第1のステップにより切り出された前記チャンクの重複状態を管理する第2のステップと、
を備え、
前記第1のステップにおいて、前記チャンク切り出し部が前記コンテンツの種別を示すコンテンツ種別識別情報により前記コンテンツがサブコンテンツを含むコンテンツであると判断した場合、前記コンテンツから前記サブコンテンツを切り出し、前記サブコンテンツに含まれる前記コンテンツ種別識別情報に基づいて前記サブコンテンツの前記チャンクの切り出し方式を選択する
ことを特徴とする、重複データ検出方法。
前記コンテンツ種別識別情報に対応する前記チャンク切り出し方式は、前記コンテンツを単一のチャンクとして切り出す単体チャンク方式、前記コンテンツを所定の長さのチャンクに切り出す固定長チャンク方式及び前記コンテンツに含まれる可変長のデータセグメントの境界位置ごとに前記チャンクを切り出す可変長チャンク方式である
ことを特徴とする、請求項13に記載の重複データ検出方法。
【発明を実施するための形態】
【0016】
以下図面について、本発明の一実施の形態を詳述する。
【0017】
(1)第1の実施の形態
(1−1)本実施の形態の概要
まず、本実施の形態の概要について説明する。データ量を削減する方法として、ファイル圧縮処理(Compression)や重複排除処理(Deduplication)などが挙げられる。ファイル圧縮処理では、1ファイル内の同内容のデータセグメントを縮約してデータ容量を削減している。一方、重複排除処理では、1ファイル内だけでなく、ファイル間で検出される同内容のデータセグメントを縮約してファイルシステムやストレージシステムにおけるデータの総容量を削減している。重複排除処理では、重複排除効率を向上させてストレージ容量をより多く削減することや、重複排除処理の処理性能を向上させて重複排除にかかる処理時間を短縮することや、重複排除したデータの管理オーバーヘッドを小さくすることなどが一般的な課題となっている。
【0018】
以下では、重複排除処理の単位となるデータセグメントをチャンク(Chunk)と称する。また、記憶デバイスに格納する単位である論理的にまとまったデータをコンテンツ(Content)と称する。コンテンツとしては、通常のファイルの他、例えば、アーカイブファイル、バックアップファイル、仮想ボリュームファイルなどの通常のファイルを集約したファイルを例示することができる。
【0019】
重複排除処理は、コンテンツからチャンクを順次切り出す処理と、切り出したチャンクの重複の有無を判定する処理と、チャンクの格納保存処理とからなる。重複排除処理を効率よく実行するためには、チャンクの切り出し処理において、内容が同一のデータセグメントをより多く切り出すことが重要となる。
【0020】
チャンクの切り出し方法としては、固定長チャンク切り出し方式、可変長チャンク切り出し方式などがある。固定長チャンク切り出し方式は、例えば、4キロバイト(KB)や1メガバイト(MB)といった一定の長さのチャンクを順次切り出す方法である。また、可変長チャンク方式は、コンテンツデータの局所的な条件をもとにチャンクの切り出しの境界を決定してコンテンツを切り出す方法である。
【0021】
また、コンテンツの分割方法として、基本オブジェクト(primitive object)切り出し方式がある。基本オブジェクトとは、画像やテキスト、図面といった様々なデータであり、この基本オブジェクトはリッチメディアファイルと呼ばれるデータオブジェクトに埋め込まれている。1つのリッチメディアファイルには、複数の基本オブジェクトが含まれており、通常、それらの基本オブジェクトは圧縮されてリッチメディアファイルに埋め込まれている。基本オブジェクト切り出し方式では、リッチメディアファイルの構造を検知して、論理的に意味のあるデータセグメントを取り出し、必要に応じて圧縮データを伸長して基本オブジェクトを切り出している。
【0022】
しかし、上記した固定長チャンク切り出し方式は、チャンクを切り出すためのオーバーヘッドが小さいが、コンテンツデータの変更がデータの挿入などの変更の場合、データが挿入された後のチャンクがずれて切り出されるため、重複排除効率が低下してしまう。一方、可変長チャンク切り出し方式は、データが挿入されてチャンクがずれてもチャンクを切り出すための境界の位置は変わらないため重複排除効率を上げることができるが、チャンクの境界を探索するための処理のオーバーヘッドが大きくなってしまう。
【0023】
また、基本データ切り出し方式では、データを伸長することにより圧縮によって隠されていたデータの重複を検出することができるものの、基本データを切り出すためにデータの伸長処理を繰り返す必要があり、重複排除処理のオーバーヘッドが大きくなる。一方、リッチメディアファイルが単純にコピーされて圧縮されていない場合には、基本データまで分解せずに、複数の基本データが埋め込まれた状態からチャンクの切り出し処理を行っても、重複排除効率に大きな影響は与えず、基本データを取り出すためのオーバーヘッドを節約することができないという問題があった。
【0024】
すなわち、重複排除効率と重複排除処理のオーバーヘッドのトレードオフを考慮すると、上記したチャンク切り出し方式のうち、いずれか一つのチャンク切り出し方式を用いて重複排除処理を行っても、重複排除処理全体の最適化を図ることができないという問題があった。
【0025】
そこで、本実施の形態では、各コンテンツ、あるいはコンテンツの各部分の特性に基づいて、チャンクの切り出し処理において適用するチャンク切り出し方式を切り替えることにより、各コンテンツの種別に応じて最適なチャンク切り出し方式を選択する。コンテンツの種別は、各コンテンツに付加されている種別を識別する情報を検出することにより判定することが可能となる。コンテンツの種別に対応するコンテンツの特性や構造を予め知っておくことにより、コンテンツの種別に応じて最適なチャンク切り出し方式を選択することが可能となる。
【0026】
例えば、あるコンテンツについて、変更があまりない種別であれば、当該コンテンツについては固定長チャンク方式を適用してチャンクを切り出すことが好適である。また、サイズの大きいコンテンツの場合には、チャンクサイズを大きく取ったほうが、処理オーバーヘッドが小さくなり、サイズの小さいコンテンツの場合には、チャンクサイズを小さく取ることが好ましい。また、コンテンツへの挿入がある場合には、可変長チャンク方式を適用してチャンクを切り出すことが好適である。コンテンツへの挿入があるが、変更が少ない場合には、チャンクのサイズを大きめに取ることにより、重複排除効率を低下させずに、処理効率を向上させて管理オーバーヘッドを低減させることが可能となる。
【0027】
また、所定の構造を有するコンテンツは、ヘッダ部、ボディ部、トレイラ部などの各部に分けることができ、部分毎に適用すべきチャンク切り出し方式が異なる。各部分に好適なチャンク切り出し方式を適用することにより、重複排除効率と処理効率とを最適化することが可能となる。
【0028】
また、バックアップファイルやアーカイブファイル、仮想ボリュームファイルなどのコンテンツは、ファイルの内部(ボディ部)にさらに複数のファイルを含んで構成されている。これらのファイルをサブコンテンツと呼ぶ。コンテンツにサブコンテンツが含まれている場合、サブコンテンツを対象に重複排除処理を行うことにより重複排除の効率を向上させることが期待できる。そこで、サブコンテンツについても、サブコンテンツの種別に好適なチャンク切り出し方式を採用する。さらに、サブコンテンツが所定の構造を有する場合には、サブコンテンツのヘッダ部、ボディ部及びトレイラ部の各特性に応じたチャンク切り出し方式を選択して、重複排除処理の最適化を図る。
【0029】
このように、本実施の形態によれば、コンテンツの種別に応じた最適なチャンク切り出し方式を選択して、重複排除効率及び重複排除処理の処理効率を向上させることができる。
【0030】
(1−2)計算機システムのハードウェア構成
次に、計算機システム1のハードウェア構成について説明する。
図1に示すように、計算機システム1は、バックアップ装置100と、クライアント164と、ストレージ装置170と、第1のバックアップサーバ150と、第2のバックアップサーバ152などから構成されている。本実施の形態にかかるバックアップ装置100は、ポストプロセス型の重複排除システムを利用している。ポストプロセス型の重複排除システムとは、バックアップ装置100内の記憶媒体に一旦格納されたデータを後から取り出して重複排除して、バックアップ装置100内のデータ容量の削減を図るシステムである。
【0031】
バックアップ装置100は、CPUおよびメモリ等の情報処理資源を備えたコンピュータ装置であって、LAN(Local Area Network)インタフェース145を介してLAN140に接続され、第1のバックアップサーバ150及び第2のバックアップサーバ152と接続されている。
【0032】
第1のバックアップサーバ150は、CPUおよびメモリ等の情報処理資源を備えたコンピュータ装置であって、LAN140に接続されるとともに、LAN168を介して複数のクライアント164と接続されている。クライアント164は、データを格納するローカルボリューム160を備えている。バックアップサーバ150は、ローカルボリューム160に格納されたデータをまとめてバックアップファイルとして、バックアップ装置100のバックアップボリューム112に格納させる。バックアップボリューム112に格納されるバックアップファイルは、ファイルサーバ154が、OS(Operating System)120のローカルファイルシステム122を利用して、アクセスパス132を介してバックアップボリューム112に格納する。
【0033】
また、第2のバックアップサーバ152は、CPUおよびメモリ等の情報処理資源を備えたコンピュータ装置であって、LAN140に接続されるとともに、SAN178を介してストレージ装置170に接続される。そして、第2のバックアップサーバ152は、ストレージ装置170にアクセスして、ストレージ装置170内の記憶領域内に記憶されているデータをまとめてバックアップファイルとして、バックアップ装置100のバックアップボリューム112に格納させる。当該バックアップファイルも、ファイルサーバ154が、OS120のローカルファイルシステム122を利用して、アクセスパスを介してバックアップボリューム112に格納する。
【0034】
管理サーバ108は、バックアップ装置100と管理用通信路139を介して接続されている。管理サーバ108は、CPUおよびメモリ等の情報処理資源を備えたコンピュータ装置であって、オペレータ等の入力に応じてバックアップ装置100の重複排除処理等を管理する装置である。管理用通信路139は、LAN140を利用してもよいし、専用に設けられたシリアルインタフェースであってもよい。
【0035】
(1−3)バックアップ装置の機能構成
バックアップ装置100は、
図1に示すように、重複排除ボリューム110、バックアップボリューム112、プロセッサ114及びメモリ116などを備える。メモリ116には、プロセッサ114、OS120、ファイルサーバ154及び各種プログラムが格納されている。メモリ116に格納されているOS120の制御のもと、各種ソフトウェアが稼働している。メモリ116に格納されているソフトウェアは、例えば、コンテンツ移動プログラム102、チャンク切り出しプログラム104及び重複判定プログラム106などである。
【0036】
コンテンツ移動プログラム102は、バックアップボリューム112に格納されたバックアップファイルを読み出し、コンテンツとしてチャンク切り出しプログラム104に提供する。また、チャンク切り出しプログラム104は、コンテンツ移動プログラム102から提供されたコンテンツから重複排除処理の単位となるチャンクを切り出す。チャンク切り出しプログラム104は、コンテンツの種別に応じた最適なチャンク切り出し方式を利用してコンテンツからチャンクを切り出す。チャンク切り出しプログラム104によるチャンク切り出し処理については後で詳細に説明する。
【0037】
そして、重複判定プログラム106は、チャンク切り出しプログラム104により切り出されたチャンクの重複状態を判定し、必要に応じて、アクセスパス137を介して重複排除ボリューム110にチャンクを書き込む。また、重複判定プログラム106は、管理サーバ108を介して入力されたオペレータ等の指示に応じて、重複排除処理を実行したり、重複排除の状態を監視したりする。
【0038】
重複排除ボリューム110及びバックアップボリューム112は、例えば、ハードディスク装置(HDD:Hard Disk Drive)から構成される。
【0039】
(1−4)チャンク切り出し処理
次に、本実施の形態にかかるチャンク切り出し処理について説明する。上記したように、チャンク切り出しプログラム104は、コンテンツ移動プログラム102から提供されたコンテンツについて、当該コンテンツの種別に応じた最適なチャンク切り出し方式を選択する。そして、選択したチャンク切り出し方式を用いて、コンテンツの切り出し処理を実行する。
【0040】
図2を参照して、チャンクの切り出し方式について説明する。まず、固定長チャンク方式について説明する。
図2に示すように、コンテンツ500は、固定長のチャンクA(501)〜チャンクD(504)が切り出されてバックアップボリューム112に格納保存されているものとする。また、コンテンツ510は、コンテンツ500のチャンクB(502)が上書きされ、新たなデータが追記された後にバックアップボリューム112に格納保存されたものである。
【0041】
コンテンツ500の書き換えにより、書き換え後のコンテンツ510の2番目のチャンクは変更されてチャンクB'(512)となり、追記されたデータはチャンクE(515)として切り出される。また、コンテンツ500のチャンクD(504)については、チャンクD(504)の長さが所定の固定長より短い場合には、チャンクD(504)の後に追記されたデータが加えられて所定の固定長に切り出される。このため、コンテンツ510のチャンクD’(514)は、チャンクD(504)に追記したデータが加えられ、チャンクD(504)とは異なる新たなチャンクD’(514)として格納される。
【0042】
一方、チャンクA及びチャンクCには変更はなく、さらに、コンテンツ内での位置も変わらないため、固定長チャンク方式によりコンテンツ510からチャンクA(511)及びチャンクC(513)が切り出される。したがって、コンテンツ510のチャンクA(511)及びチャンクC(513)は、コンテンツ500のチャンクA(501)及びチャンクC(503)と重複するため、重複判定プログラム106によりチャンクA(511)及びチャンクC(513)は重複排除される。すなわち、チャンクA(511)及びチャンクC(513)は重複排除ボリューム110には格納されずに、チャンクA(511)及びチャンクC(513)の参照情報のみが記録される。
【0043】
また、コンテンツ520は、コンテンツ500にデータX(529)が挿入されたものである。データX(529)の挿入に伴って、チャンクC(523)及びチャンクD(524)のコンテンツ内の位置(オフセット)が変化する。固定長チャンク方式の場合、コンテンツ520は、チャンクA(531)、チャンクF(535)、チャンクG(536)、チャンクH(537)及びチャンクI(538)のように切り出される。すなわち、既に保存されているチャンクC(523)やチャンクD(524)の内容を含むにもかかわらず、チャンクF(535)〜チャンクI(538)を新たなチャンクとして重複排除ボリューム110に格納しなければならないこととなる。
【0044】
次に、可変長チャンク方式について説明する。可変長チャンク方式では、コンテンツ520のチャンクC(523)のように、チャンクの位置(オフセット)がずれた場合でもチャンクを切り出すことができる。具体的には、可変長チャンク方式では、チャンクの局所的なデータがある条件を満たした場合に、条件を満たした箇所をチャンクの境界として認識する。例えば、コンテンツ内の連続48バイトのデータに対するハッシュ値を1バイトずつずらしながら順次計算する。そして、計算した結果が一定の条件を満たした場合に、条件を満たした箇所を境界とする。また、データが挿入された後であっても、境界となる48バイトや48バイト付近に変化がなければ、その部分のハッシュ値は変化せず、その箇所をチャンクの境界とすることができる。
【0045】
例えば、
図5において、可変長チャンク方式によって、コンテンツ500がチャンクA(501)〜チャンクD(504)に分割されているとする。すなわち、チャンクA(501)とチャンクB(502)との境界は、この境界の周辺の48バイトのデータのハッシュ値によって決定されており、チャンクB(502)とチャンクC(503)との境界、チャンクC(503)とチャンクD(504)との境界も同様に境界周辺のデータのハッシュ値によって決定されている。
【0046】
コンテンツ510は、チャンクB(502)が書き換えられてチャンクB’(512)に変更されているが、各チャンク間の境界周辺のデータは変化していないことが高い確率で期待できる。したがって、コンテンツ510については、チャンクC及びチャンクDを切り出すことができるため、チャンクC及びチャンクDを重複排除することができる。コンテンツ520も同様に、データX(529)が挿入されたとしても、各チャンク間の境界周辺のデータは変化していないと考えられる。このため、チャンクC(523)及びチャンクD(524)を切り出すことができ、コンテンツ510のチャンクC及びチャンクDを重複排除することができる。
【0047】
このように、可変長チャンク方式では、データが挿入される可能性のあるコンテンツの重複排除効率を高めることができる半面、チャンクの境界を決定するためのハッシュ値の計算処理のためのオーバーヘッドが大きくなってしまう。
【0048】
また、上記した固定長チャンク方式や可変長チャンク方式によるチャンクの切り出しを行わず、1つのコンテンツ全体を1つのチャンクとして重複排除処理を行う単一チャンク(Single instance)方式も考えられる。
【0049】
図3は、上記したチャンク切り出し方式をコンテンツに適用してチャンクを切り出した結果を示す。例えば、コンテンツ600は、8キロバイトの固定長でチャンクを切り出した結果を示す。チャンクA(601)〜チャンクD(604)は、いずれも先頭から順に8キロバイトになるように切り出されている。したがって、チャンクA(601)のオフセットは0、チャンクB(602)のオフセットは8キロバイト、チャンクC(603)のオフセットは16キロバイトとオフセットが8キロバイトずつ加算されていくこととなる。
【0050】
一方、コンテンツ610は、A’(611)〜チャンクD’(614)が切り出されているが、それぞれチャンクの長さが異なっている。その結果、各チャンクのコンテンツ内のオフセットも8キロバイトの倍数とは限らない。可変長チャンクの長さは、チャンクの境界をコンテンツのデータの局所的な性質、例えば、局所48バイトのハッシュ値を元にして決定されるため、長さそのものには意味がない。ただし、チャンクを切り出す際に、チャンク長の最小値、及び最大値を与えて、極端に短かったり長かったりするチャンクが切り出されないようにしてもよい。
【0051】
また、コンテンツ620は、コンテンツを複数のチャンクに切り出さずに、コンテンツ全体を1つのチャンク621として扱う単一チャンク方式により切り出された結果を示す。
【0052】
次に、
図4を参照して、コンテンツの典型的な構造の例について説明する。コンテンツ700は、特に構造を有さないコンテンツである。ここで、構造とは、コンテンツの特定の位置に特定のデータが存在するような、データ配置に関する規則をいう。また、コンテンツに構造が含まれていることをチャンク切り出しプログラム104などの各プログラムが認識している。すなわち、コンテンツが何らかの構造を有して構成されていても、その構造をプログラムが認識していない場合には、実質的にコンテンツの構造は存在しないこととなる。
【0053】
コンテンツ700には、コンテンツ種別識別情報702が含まれ、その他の部分は実質的に構造のないボディ部706となっている。また、コンテンツ種別識別情報すら有さず、コンテンツ全体が構造を有さないデータである場合もある。このようなコンテンツは、コンテンツ種別識別情報702とボディ部706とを一括して取り扱う。
【0054】
コンテンツ750は、コンテンツ種別識別情報752、ヘッダ部754、ボディ部756及びトレイラ部758からなる。コンテンツ種別識別情報は、コンテンツ全体のデータ種別とこのコンテンツを作成したアプリケーションの情報が含まれる。コンテンツ種別識別情報は、通常、コンテンツの先頭部に配置される。データ種別によって、そのコンテンツ上でのデータの位置や長さ、データの読み出し方を認識することができる。したがって、データ種別によって、ヘッダ部やボディ部の解析方法を変更することができる。なお、本実施の形態では、コンテンツ種別識別情報752は、コンテンツの先頭部に配置されるものとしているが、かかる例に限定されず、コンテンツの先頭部以外の位置に配置されていてもよい。
【0055】
ヘッダ部754は、コンテンツの構造を記述し、通常、コンテンツの先頭付近に配置される。ヘッダ部754を解析することにより、ボディ部756、トレイラ部758のコンテンツ上での位置を認識する。また、ボディ部756の詳細な構成要素やそれらの位置に関する情報を得ることができる。なお、コンテンツ種別識別情報752とヘッダ部754とを一括して取り扱ってもよい。
【0056】
トレイラ部758は、通常、コンテンツの最後尾に配置される。トレイラ部758に格納される情報は、例えば、コンテンツの長さ情報などのように、コンテンツ750全体に関する情報が格納される。また、トレイラ部758の情報をコンテンツ処理の正当性チェックに利用することもできる。また、論理的な意味のないパディングデータが格納されることもある。
【0057】
コンテンツ790も同様に、コンテンツ種別識別情報M(792)、ヘッダ部H(794)、ボディ部D(796)、トレイラ部T(798)からなる。ボディ部D(796)は、1つまたは複数のサブコンテンツを含み、コンテンツ790には、例えば、2つのサブコンテンツ、サブコンテンツ1(710)とサブコンテンツ2(720)が含まれている。
【0058】
サブコンテンツは、それ自身がまた、コンテンツ700やコンテンツ750のような構造を有することがある。例えば、サブコンテンツ1(710)は、コンテンツ700と同様のコンテンツ種別識別情報M1(712)とボディ部D1(716)のみからなる。また、サブコンテンツ2(720)は、コンテンツ750と同様の構造を有し、サブコンテンツ2のコンテンツ種別識別情報M2(722)、ヘッダ部H2(724)、ボディ部D2(726)、トレイラ部T2(728)からなる。このような構造は、コンテンツ790がサブコンテンツ1(710)及びサブコンテンツ2(720)を一まとめにしたアーカイブファイルなどである場合に存在し得る。その他、このような構造を持つコンテンツとしては、バックアップファイル、仮想ディスクボリューム、リッチメディアファイルなどが挙げられる。
【0059】
次に、バックアップ装置100のチャンク切り出しプログラム104により実行されるチャンク切り出し処理の概要について説明する。
図5に示すように、チャンク切り出しプログラム104は、
図4に示すコンテンツ700、コンテンツ750またはコンテンツ790などをコンテンツ移動プログラム102から提供されると、当該コンテンツの長さを評価する(S101)。コンテンツの長さは、コンテンツがバックアップボリューム112に格納される際のメタデータやなどに含まれており、コンテンツ移動プログラム102がチャンク切り出しプログラム104にコンテンツを渡す際にコンテンツとともに渡される情報に含まれている。具体的に、チャンク切り出しプログラム104は、コンテンツの長さが予め設定された所定の最小値以下か否かを判定する。
【0060】
ステップS101において、コンテンツの長さが所定の最小値以下であると判定された場合には、チャンク切り出しプログラム104は、当該コンテンツを単体チャンクとしてチャンク切り出し処理を実行する(S102)。所定の最小値以下のコンテンツについては、重複排除の対象としても重複排除効率やデータ格納効率を大きく向上させることができないため、コンテンツに複数のチャンクが含まれているとしても、全体で一つのチャンクとして扱う。
【0061】
ステップS101において、コンテンツの長さが所定の最小値より大きいと判定された場合には、チャンク切り出しプログラム104は、コンテンツ種別識別情報を取得する(S103)。コンテンツ種別識別情報は、
図4に示すように、コンテンツがコンテンツ700、750及び792のようないずれの構造を有している場合でも、コンテンツの先頭など同様の場所に位置していると想定できる。したがって、コンテンツがいずれの構造を有しているかを区別せずとも、コンテンツ種別識別情報を取得することができる。なお、コンテンツ種別識別情報のデータをそのまま利用しても、コンテンツ種別識別情報の一部のデータを利用したり、コンテンツ種別識別情報を扱いやすいデータに加工したりして利用してもよい。以下では、コンテンツ種別識別情報として取り出したデータを、それぞれコンテンツ種別と対応させて、コンテンツ種別毎に適切なチャンク切り出し処理を用意している。
【0062】
そして、ステップS103において取得したコンテンツ種別識別情報をもとに、各コンテンツ特有のチャンク切り出し処理を選択する。具体的に、まず、チャンク切り出しプログラム104は、コンテンツ種別識別情報がAであるかを判定する(S104)。ステップS104において、コンテンツ種別識別情報がAであると判定された場合には、チャンク切り出しプログラム104は、コンテンツ種別がAのコンテンツ用に用意されたチャンク切り出し処理を実行する(S108)。
【0063】
ステップS104において、コンテンツ種別識別情報がAではないと判定された場合には、チャンク切り出しプログラム104は、コンテンツ種別識別情報がBであるかを判定する(S105)。ステップS105において、コンテンツ種別識別情報がBであると判定された場合には、チャンク切り出しプログラム104は、コンテンツ種別がBのコンテンツ用に用意されたチャンク切り出し処理を実行する(S109)。
【0064】
ステップS105において、コンテンツ種別識別情報がBではないと判定された場合には、チャンク切り出しプログラム104は、コンテンツ種別識別情報がCであるかを判定する(S106)。ステップS106において、コンテンツ種別識別情報がCであると判定された場合には、チャンク切り出しプログラム104は、コンテンツ種別がCのコンテンツ用に用意されたチャンク切り出し処理を実行する(S110)。
【0065】
ステップS106において、コンテンツ種別識別情報がCではないと判定された場合には、チャンク切り出しプログラム104は、その他のコンテンツのチャンク切り出し処理を実行して(S107)、チャンク切り出し処理は終了する。上記ではコンテンツ種別がA〜Cの場合について各コンテンツ種別に対応するチャンク切り出し処理を用意しているとしたが、かかる例に限定されず、複数個のコンテンツ種別に対応するチャンク切り出し処理を用意してもよい。この場合、ステップS103〜105と同様に、コンテンツ種別識別情報を順次判定して、各コンテンツ種別に対応するチャンク切り出し処理を実行する。
【0066】
チャンク切り出しプログラム104は、上記処理により切り出したチャンクを、1つずつ、または複数個まとめて重複判定プログラム106に提供する。そして、重複判定プログラム106は、各チャンクの重複状況を調べて、重複するチャンクの排除処理や、新規チャンクの格納処理を実行する。
【0067】
チャンク切り出しプログラム104は、
図6のチャンク切り出し方式制御テーブル900を用いて切り出し処理を実行する。
図6のチャンク切り出し方式制御テーブルを参照して、切り出し処理の詳細について説明する。チャンク切り出し方式制御テーブル900は、コンテンツ種別に対応するチャンク切り出し方法を管理するテーブルであって、種別情報欄901、種別欄902、チャンク切り出し方法欄903及び処理関数欄904から構成される。種別情報欄901には、コンテンツに含まれるコンテンツ種別識別情報が格納される。種別欄902には、コンテンツ種別識別情報に対応するコンテンツ種別が格納される。チャンク切り出し方法欄903には、コンテンツ種別に対応するチャンク切り出し方法が格納される。また、コンテンツが、ヘッダ部やボディ部やトレイラ部から構成されている場合には、チャンク切り出し方法欄903には、ヘッダ部チャンク長欄907、ボディ部チャンク長欄908及びトレイラ部チャンク長欄909が含まれる。処理関数欄904には、切り出し処理の処理関数の情報が格納される。
【0068】
図5に示すステップS104、S105、S106では、ステップS103において取得したコンテンツのコンテンツ種別識別情報と、チャンク切り出し方式制御テーブル900の各エントリの種別情報欄901に格納されているコンテンツ種別識別情報とを比較して、一致するものがある場合には、当該コンテンツは、対応する種別欄902に格納されているコンテンツ種別であると判定する。そして、当該コンテンツ種別のエントリに対応する処理関数欄904に格納されている処理関数を呼び出して、当該処理関数にしたがった処理を実行する。
【0069】
例えば、コンテンツに含まれるコンテンツ種別識別情報がAの場合、対応するコンテンツ種別は「A」、処理関数は「Func_A」である。したがって、
図5のステップS108において処理関数「Func_A」が呼び出されて、チャンク切り出し処理が実行される。
【0070】
また、コンテンツに含まれるコンテンツ種別識別情報がBの場合、対応するコンテンツ種別は「B」、処理関数は「Func_B」である。したがって、
図5のステップS109において処理関数「Func_B」が呼び出されて、チャンク切り出し処理が実行される。
【0071】
また、コンテンツに含まれるコンテンツ種別識別情報がCの場合、対応するコンテンツ種別は「C」、処理関数は「Func_C」である。したがって、
図5のステップS110において処理関数「Func_C」が呼び出されて、チャンク切り出し処理が実行される。
【0072】
また、コンテンツに含まれるコンテンツ種別識別情報がA〜C以外の場合、対応するコンテンツ種別は「O」、処理関数は「Func_O」である。したがって、
図5のステップS107において処理関数「Func_O」が呼び出されて、チャンク切り出し処理が実行される。
【0073】
ステップS107では、
図4に示すコンテンツ700のように、構造を有さないコンテンツに対するチャンク切り出し処理を実行する。すなわち、構造を有さないコンテンツは、コンテンツ種別「O」であり、対応するチャンク切り出し方法は、「可変長チャンク切り出し方式」であり、切り出すチャンクの最小チャンク長と最大チャンク長とが予め設定されている。コンテンツ種別「O」に対応する処理関数Func_Oは、チャンク切り出し方法欄903に格納されたパラメータを反映させた処理を実行する。例えば、最小チャンク長が4KB、最大チャンク長が12KBに設定されていた場合、最後にチャンクを切り出したオフセットの位置から4KB加算した位置と12KB加算した位置の間に新たなチャンクの切れ目が定められる。
【0074】
また、ステップS110では、コンテンツ種別が「C」であるコンテンツのチャンク切り出し処理が実行されるが、コンテンツ種別Cに対応するチャンク切り出し方法欄903には、チャンク切り出し方法が「固定長チャンク切り出し方式」であり、ヘッダ部を固定長Lbバイト、ヘッダ部以外のデータをLcバイトで切り出すことが設定されている。このようなコンテンツとしては、例えば、zipファイルを例示できる。コンテンツ種別Cに対応する処理関数「Func_C」は、指定された固定長が32KBの場合、コンテンツから32KBずつデータを順次切り出し、切り出したデータを1つのチャンクとする。
【0075】
また、ステップS108では、コンテンツ種別が「A」であるコンテンツのチャンク切り出し処理が実行されるが、コンテンツ種別Aに対応する切り出し方法欄903には、コンテンツが
図4に示すコンテンツ750のような構造を有しており、コンテンツがヘッダ部、ボディ部、トレイラ部に分けて処理すべきことが示されている。このようなコンテンツは、例えば、PDF(Portable Document Format)ファイルや仮想ディスクファイルなどを例示できる。また、切り出し方法欄903には、ヘッダ部は単一のチャンクとして切り出すこと、ボディ部は指定する最大長と最小長との間の長さの可変長チャンクを切り出すこと、トレイラ部は単一のチャンクとして切り出すことが示されている。コンテンツ種別Aに対応する処理関数「Func_A」は、切り出し方法欄903に格納された指定に従ってチャンク切り出し処理を実行する。
【0076】
ここで、
図7を参照して、
図5のステップS108におけるコンテンツ種別Aのチャンク切り出し処理の詳細について説明する。以下では、コンテンツ種別Aのコンテンツとして、
図4に示すコンテンツ750を例示して説明する。
【0077】
図5のステップS108では、チャンク切り出しプログラム104が、処理関数Func_Aを呼び出すことによりチャンク切り出し処理が実行される。上記したように、ステップS103においてコンテンツ種別識別情報が取得されており、チャンク切り出しプログラム104は、当該情報によりコンテンツのヘッダ部の構造を知ることができる。コンテンツのヘッダ部には、ヘッダ部の長さ、ボディ部のコンテンツ内での位置(オフセット)と長さ、及びトレイラ部の位置と長さに関する情報が含まれる。これらの情報をもとに、チャンク切り出しプログラム104は、ヘッダ部、ボディ部及びトレイラ部をそれぞれ取り出す。
【0078】
具体的に、まず、チャンク切り出しプログラム104は、コンテンツ750のヘッダ部(752及び754)を取り出す(S201)。チャンク切り出しプログラム104は、チャンク切り出し方式制御テーブル900の切り出し方法欄903の指定に従い、ヘッダ部を一つのチャンクとして切り出す(S202)。チャンク切り出しプログラム104は、ステップS202において切り出したチャンクの重複排除処理を重複判定プログラム106に実行させる(S203)。
【0079】
続いて、チャンク切り出しプログラム104は、コンテンツ750のボディ部756を取り出す(S204)。実際には、メモリ上においたコンテンツデータの中のボディ部の先頭と末尾のアドレスを確定させる。これは、ボディ部の先頭と末尾のアドレスは予めヘッダ部の内容を参照して取得することができる。そして、チャンク切り出しプログラム104は、チャンク切り出し方式制御テーブル900の切り出し方法欄903の指定に従い、可変長チャンク切り出し方式によりボディ部756からチャンクを切り出す(S205)。ステップS205においてチャンクを切り出した後、当該チャンクの重複排除処理を重複判定プログラム106に実行させる(S206)。重複判定プログラム106による重複排除処理については後で詳細に説明する。
【0080】
そして、チャンク切り出しプログラム104は、ボディ部756のデータのうち、チャンクとして切り出していないデータが残っているかを判定する(S207)。ステップS207において、ボディ部756のデータが残っている場合には、チャンク切り出しプログラム104は、ステップS205以降の処理を繰り返す。ステップS207において、ボディ部756のデータが残っていない(残りバイト=0)場合には、チャンク切り出しプログラム104は、ステップS208以降の処理を実行する。
【0081】
続いて、チャンク切り出しプログラム104は、コンテンツ750のトレイラ部758を取り出す(S208)。実際には、ヘッダ部及びボディ部として取り出したデータ以外の残りのデータの全てをトレイラ部として取り出す。そして、チャンク切り出しプログラム104は、チャンク切り出し方式制御テーブル900の切り出し方法欄903の指定に従い、トレイラ部全体を単一チャンクとして切り出す(S209)。ステップS209においてチャンクを切り出した後、当該チャンクの重複排除処理を重複判定プログラム106に実行させて(S210)、コンテンツ種別Aのチャンク切り出し処理を終了する。
【0082】
図5のステップS109では、コンテンツ種別が「B」であるコンテンツのチャンク切り出し処理が実行されるが、コンテンツ種別Bに対応する切り出し方法欄903には、コンテンツが
図4に示すコンテンツ790のような構造を有しており、コンテンツがヘッダ部、ボディ部、トレイラ部に分かれているだけでなく、ボディ部にさらにサブコンテンツが分かれていることが示されている。このようなコンテンツは、例えば、tar(tape archives)ファイルや、バックアップソフトウェアによって作成されるアーカイブファイルなどを例示できる。バックアップソフトウェアによって、ボディ部やトレイラ部のコンテンツ内のオフセットや、サブコンテンツの格納方法など、アーカイブファイルのファイル形式が異なってくる。コンテンツ種別Bに対応する処理関数「Func_B」は、ファイル形式の違いなどを区別して、各部やサブコンテンツを取り出す。そして、切り出し方法欄903に格納された指定に従って、チャンク切り出し処理を実行する。
【0083】
図6に示すチャンク切り出し方式制御テーブル900のコンテンツ種別Bに対応するチャンク切り出し方法欄903には、コンテンツをヘッダ部、ボディ部、トレイラ部に分けて処理すべきこと、ヘッダ部は指定長の固定長方式で切り出すこと、ボディ部はサブコンテンツに分割し、各サブコンテンツについてチャンク切り出し方式を選択すること、さらに、トレイラ部は単一チャンクとして切り出すことが示されている。コンテンツ種別Bに対応する処理関数Func_Bは、上記の指定に従って切り出し処理を実行する。
【0084】
サブコンテンツに対するチャンク切り出し方法は、コンテンツに対する切り出し方法と同様である。サブコンテンツ1(710)のように、特別な構造を有していない場合には、例えば、サブコンテンツ全体から順次可変長チャンクを切り出してもよい。また、サブコンテンツ720のような構造を有している場合には、コンテンツ種別Aに対応する切り出し方式でヘッダ部、ボディ部、トレイラ部のデータからチャンクを切り出してもよい。ただし、サブコンテンツ720のボディ部726がさらに下位のサブコンテンツに分けられている場合でも、サブコンテンツに分けたうえでのチャンク切り出し処理は必ずしも行う必要はない。これは、サブコンテンツに含まれるサブコンテンツをさらに分解すると、サブコンテンツへの分解処理のオーバーヘッドが大きくなるためである。
【0085】
ここで、
図8を参照して、
図5のステップS109におけるコンテンツ種別Bのチャンク切り出し処理の詳細について説明する。以下では、コンテンツ種別Bのコンテンツとして、
図4に示すコンテンツ790を例示して説明する。
【0086】
図5のステップS109では、チャンク切り出しプログラム104が、処理関数Func_Bを呼び出すことによりチャンク切り出し処理が実行される。上記したように、ステップS103においてコンテンツ種別識別情報が取得されており、チャンク切り出しプログラム104は、当該情報によりコンテンツのヘッダ部の構造を知ることができる。チャンク切り出しプログラム104は、コンテンツ790からヘッダ部(792及び794)を取り出し、ヘッダ部794の位置情報、ボディ部796の位置情報及びトレイラ部798の位置情報を取得する(S301)。さらに、ステップS111において、ヘッダ部796から、ボディ部のサブコンテンツ710及び720の位置情報を取得する。これらの情報は、以降のボディ部の切り出し処理において、サブコンテンツの取り出しに利用される。
【0087】
チャンク切り出しプログラム104は、チャンク切り出し方式制御テーブル900の切り出し方法欄903の指定に従い、ヘッダ部を一つのチャンクとして切り出す(S302)。チャンク切り出しプログラム104は、ステップS202において切り出したチャンクの重複排除処理を重複判定プログラム106に実行させる(S303)。そして、チャンク切り出しプログラム104は、ヘッダ部794のデータのうち、チャンクとして切り出していないデータが残っているかを判定する(S304)。ステップS304において、ヘッダ部794のデータが残っている場合には、チャンク切り出しプログラム104は、ステップS302以降の処理を繰り返す。ステップS304において、ヘッダ部794のデータが残っていない(残りバイト=0)場合には、チャンク切り出しプログラム104は、ステップS305以降の処理を実行する。
【0088】
続いて、チャンク切り出しプログラム104は、ボディ部796からサブコンテンツを取り出す(S305)。コンテンツ790内におけるサブコンテンツの位置は、上記したように、ヘッダ部794から取得した情報をもとに知ることができる。
【0089】
そして、チャンク切り出しプログラム104は、ステップS305において取得したサブコンテンツの種別を判定する(S306)。ここでは、サブコンテンツとして、コンテンツ種別AとOの2通りの種別のサブコンテンツが含まれている場合について説明する。
【0090】
サブコンテンツ710のコンテンツ種別はOとする。この場合、コンテンツ種別Oに対応する切り出し方式によりコンテンツが切り出される。すなわち、チャンク切り出しプログラム104は、サブコンテンツ710全体を可変長チャンク方式で切り出した後、重複判定プログラム106に重複排除処理を実行させる(S307)。
【0091】
一方、サブコンテンツ720のコンテンツ種別はAとする。この場合、コンテンツ種別Aに対応する切り出し方式によりコンテンツが切り出される。すなわち、チャンク切り出しプログラム104は、サブコンテンツ720からヘッダ部722、724を取り出して単一チャンクとして切り出して、重複判定プログラム106に重複排除処理を実行させる(S308)。そして、チャンク切り出しプログラム104は、サブコンテンツ720からボディ部726を取り出して、可変長チャンク切り出し方式で切り出した後、重複判定プログラム106に重複排除処理を実行させる(S309)。そして、チャンク切り出しプログラム104は、サブコンテンツ720からトレイラ部728を取り出し、単一チャンクとして切り出して、重複判定プログラム106に重複排除処理を実行させる(S310)。
【0092】
チャンク切り出しプログラム104は、1つのサブコンテンツの切り出し処理が終わった後に、切り出し処理を行っていないサブコンテンツが残っていないかを確認して(S311)、残っている場合には、ステップS305以降の処理を繰り返す。一方、ステップS311において、すべてのサブコンテンツの処理が終わっていると判定された場合にはチャンク切り出しプログラム104は、コンテンツ790のチャンク切り出し処理を実行し、重複判定プログラム106に重複排除処理を実行させて(S312)、コンテンツ種別Bのチャンク切り出し処理を終了する。
【0093】
(1−5)重複排除処理
次に、ステップS206、S210、S303、S307、S308、S309などにおいて実行される重複判定プログラム106による重複排除処理について説明する。以下では、適宜、
図10の重複排除処理の概要を参照して、
図9に示す重複排除処理について説明する。
図9に示すように、重複判定プログラム106は、チャンク切り出しプログラム104から提供されたチャンク及びチャンクの情報を取得する(S401)。チャンクの情報とは、例えば、チャンクの属するコンテンツのコンテンツIDや、チャンクの位置(オフセット)、チャンクの長さなどの情報である。
【0094】
続いて、重複判定プログラム106は、ステップS401において取得したチャンクのフィンガプリント(FP)を計算する(S402)。フィンガプリントは、ハッシュ関数を用いて取得することができる。ここで、ハッシュ関数は、SHA256など、乱数性が極めて高く、チャンク400のデータに対するハッシュ値によって、当該データが一意に定まる可能性の高いハッシュ関数が利用される。
【0095】
そして、重複判定プログラム106は、チャンク-コンテナテーブル420を検索して、チャンクコンテナテーブル420にステップS402において算出したフィンガプリントが登録済みかを判定する(S403)。
図10に示すように、チャンク-コンテナテーブル420には、フィンガプリント(FP)423とコンテナID425が関連付けて管理されている。重複判定プログラム106は、チャンク400から算出したフィンガプリント413が、チャンク-コンテナテーブル420のFP欄423に登録されているかを判定する。
【0096】
図9に戻り、ステップS403において、算出したフィンガプリントがチャンク-コンテナテーブル420に登録されていると判定された場合には、重複判定プログラム106は、算出したフィンガプリントに対応するコンテナIDをチャンク-コンテナテーブル420から取得して、ステップS406以降の処理を実行する。一方、ステップS403において、算出したフィンガプリントがチャンク-コンテナテーブル420に登録されていないと判定された場合には、重複判定プログラム106は、ステップS404以降の処理を実行する。
【0097】
図10に示すように、チャンク-コンテナテーブル420には、すでに登録済みのチャンクが列挙されている。すなわち、ステップS403において、算出したフィンガプリントがチャンク-コンテナテーブル420に登録されている場合には、ステップS401において取得したチャンクを新たに重複排除ボリューム110に格納する必要はなく、重複排除に成功したこととなる。一方、ステップS403において、算出したフィンガプリントがチャンク-コンテナテーブル420に登録されていない場合には、ステップS401において取得したチャンクを新たに重複排除ボリューム110に格納する必要がある。
【0098】
図9に戻り、重複排除プログラム106は、チャンク-コンテナテーブル420にチャンク400を格納するためのコンテナを用意する(S404)。コンテナとは、いくつかのチャンクをまとめたデータブロックである。チャンクは、コンテナの一部として重複排除ボリューム110に格納される。各コンテナは、コンテナ管理テーブル430により管理される。
【0099】
図10に示すようにコンテナ管理テーブル430は、コンテナを構成するチャンクを管理するテーブルであって、フィンガプリント(FP)欄433、コンテナオフセット欄437及びチャンク長欄439から構成されている。フィンガプリント欄322には、チャンクのフィンガプリントが格納される。コンテナオフセット欄437には、コンテナ内のチャンクの格納場所の情報が格納される。チャンク長欄439には、チャンクの長さの情報が格納される。また、コンテナ管理テーブル430には、チャンクに関するその他の情報が格納されてもよい。
【0100】
図9に戻り、重複排除プログラム106は、ステップS404において用意したコンテナ440にチャンクデータを書き込むとともに、コンテナ管理テーブル430にチャンクに関する管理情報を格納する(S405)。具体的に、重複排除プログラム106は、コンテナ440のいずれの場所にチャンクを格納するかを決定し、その場所のアドレスとチャンク長とをコンテナ管理テーブル430に格納する。これにより、チャンクを読み出す場合には、チャンクのフィンガプリントの値から、当該フィンガプリントに対応するコンテナ管理テーブル430のエントリを検索し、フィンガプリントに対応するコンテナオフセットとチャンク長を読み出す。さらに、チャンク-コンテナテーブル420のFP欄324にフィンガプリントを格納し、コンテナID欄425にチャンクを格納するコンテナのコンテナIDを格納する。これにより、チャンク400と同内容のチャンクについて、以降の重複排除処理における重複排除が可能となる。
【0101】
続いて、重複排除プログラム106は、コンテンツ管理テーブル450にコンテンツ管理情報を登録して(S406)、重複排除処理を終了する。
図10に示すように、コンテンツ管理テーブル450は、FP欄453、コンテンツ内オフセット欄456、長さ欄459及びコンテナID欄455から構成されている。FP欄453には、チャンクのフィンガプリントが格納される。コンテンツ内オフセット欄456には、コンテンツ内のチャンク位置として、コンテンツ内の先頭からのバイト数が格納される。長さ欄459には、チャンクの長さが格納される。コンテナID欄455には、チャンクが属するコンテナのコンテナIDが格納される。コンテンツ管理テーブル450により、コンテンツのデータを読み出す際に、コンテンツを構成している各チャンクを格納するコンテナをコンテナIDにより特定し、コンテンツ内オフセット及びチャンク長さから、コンテンツ内から読み出し対象のチャンクを読み出すことができる。
【0102】
次に、
図11を参照して、コンテンツ種別の設定及び変更、コンテンツやサブコンテンツのチャンク切り出し方式を設定及び変更するための重複排除最適化画面1200について説明する。重複排除最適化画面1200は、管理サーバ108の表示画面に表示され、オペレータの入力に応じてパラメータの設定等がなされる。オペレータは、各コンテンツ種別1210に対して、適応方式1220フィールドやチャンク長フィールド1230の各フィールドに値を入力する。各フィールドの値は予め設定されている値からオペレータが選択するようにしてもよい。重複排除最適化画面1200を介して設定されたチャンク切り出し方式等の設定値は、
図6のチャンク切り出し方式制御テーブル900の各欄に格納される。
【0103】
例えば、コンテンツ種別1210がAの場合、オペレータは、適用方式1220として、内部構造を解析することを示す「構造別」を選択する。また、ヘッダ部は1つのチャンクとして切り出すことを示す「単一」、ボディ部は可変長切り出し方式でチャンクを切り出すことを示す「可変長」、トレイラ部は1つのチャンクとして切り出すことを示す「単一」を選択する。また、コンテンツ種別1210がCの場合、オペレータは、固定長切り出し方式でチャンクを切り出すことを示す「固定長」を選択する。また、固定長を選択した場合には、固定値を入力し、可変長を選択した場合には、最大値と最小値の中間値を入力する。可変長が選択された場合、入力された中間値の半分が最小値、中間値の2倍が最大値とされる。また、可変長の場合に、重複排除最適化画面1200において、最小値と最大値が指定されるインタフェースとしてもよい。
【0104】
次に、
図12を参照して、コンテンツを指定して重複排除処理を実行し、重複排除の結果を監視するための重複排除試行画面1400について説明する。重複排除試行画面1400は、管理サーバ108の表示画面に表示され、オペレータの入力に応じてコンテンツ等が指定される。具体的に、オペレータは、コンテンツ指定ウインドウ1440に対象となるファイルボリューム112上のファイルを指定する。コンテンツ種別フィールド1410には、コンテンツに適用するチャンク切り出し方式が表示される。
【0105】
重複排除指令ボタン1450が押下されると、指定されたファイルに対して重複排除処理が実行され、実行結果が重複排除率表示ウインドウ1480及び重複排除時間表示ウインドウ1490に表示される。その他、重複排除率や重複排除時間以外の重複排除に関する情報が表示されてもよい。また、コンテンツ指定ウインドウ1440にコンテンツを指定して、適用方式指定1420やチャンク長指定1430の値を変更して、重複排除指令ボタン1450を押下することにより、重複排除率や重複排除時間が再計算される。重複排除率や重複排除時間の算出は、重複判定プログラム116が呼び出されることにより実現される。
【0106】
リストア指令ボタン1460が押下されると、指定されたコンテンツが重複排除ボリューム110から取り出されて、ファイルボリューム112に再度格納される。
【0107】
もっとも、バックアップ世代間のチャンク切り出し方式や、チャンク長の指定が異なれば、重複排除率は低下してしまう。重複排除試行画面1400におけるチャンク切り出し方式や、チャンク長の変更は、チャンク切り出し方式の適用方式をチューニングする際に利用される。重複排除試行画面1400を介して設定されたチャンク切り出し方式やチャンク長などの設定値は、チャンク切り出し方式制御テーブル900の各欄に格納される。
【0108】
(1−6)本実施の形態の効果
以上のように、本実施の形態では、バックアップ装置100は、第1のバックアップサーバ150または第2のバックアップサーバ152から提供されたバックアップファイルをコンテンツとして、当該コンテンツを1または2以上のチャンクに切り出して、切り出したチャンクの重複状態を管理する。バックアップ装置100は、チャンクを切り出す際にコンテンツの種別を示すコンテンツ種別識別情報に基づいて、当該コンテンツを固定長チャンク切り出し方式か、可変長チャンク切り出し方式か、または単一チャンク切り出し方式かを選択する。このように、コンテンツ種別に応じてチャンク切り出し方式を選択して選択した方式によりチャンクを切り出すことにより、重複排除効率及び重複排除処理の処理効率を向上させることが可能となる。
【0109】
(2)第2の実施の形態
(2−1)計算機システムのハードウェア構成
次に、
図13を参照して、本実施の形態にかかる計算機システム2の構成について説明する。計算機システム2は、インライン(Inline)型の重複排除システムを構成している。インライン型の重複排除システムとは、上位装置から提供されたデータについて、直ちに重複排除処理を行うことを意味する。具体的に、
図13に示すように、計算機システム2のバックアップ装置200は、バックアップ装置200内にバックアップボリュームが不要な点で第1の実施の形態と異なっている。バックアップ装置200は、バックアップ装置100のファイルサーバ154に代えてインラインファイルサーバ254を備え、コンテンツ移動プログラム102に代えてインラインコンテンツ移動プログラム202を備えている。
【0110】
インラインファイルサーバ254は、第1のバックアップサーバ150または第2のバックアップサーバ152からのバックアップファイルの格納要求に応じて、当該バックアップファイルをインラインコンテンツ移動プログラム202に提供する。そして、インラインコンテンツ移動プログラム202は、インラインファイルサーバ254から提供されたバックアップファイルをコンテンツとしてチャンク切り出しプログラム104に提供する。
【0111】
チャンク切り出しプログラム104及び重複判定プログラム106の機能及び処理については第1の実施の形態と同様のため、詳細な説明は省略する。
【0112】
(2−2)本実施の形態の効果
以上のように、本実施の形態では、バックアップ装置200内にバックアップボリュームを不要とするため、ストレージシステムの資源を削減することができる。また、バックアップボリュームにバックアップファイル等のデータを格納せずに、直ちに重複排除処理を実行することができるため、バックアップ処理の処理時間を短縮することが可能となる。
【0113】
(3)第3の実施の形態
(3−1)計算機システムのハードウェア構成
次に、
図14を参照して、本実施の形態にかかる計算機システム3の構成について説明する。計算機システム3は、データをバックアップするバックアップ装置300とは別に、重複排除処理を実行する重複排除装置301を備えている点で第1の実施の形態と異なっている。
【0114】
バックアップ装置300は、バックアップボリューム112、プロセッサ114、メモリ116、OS120及びローカルファイルシステム122を備えている。また、メモリ116に格納されているソフトウェアは、コンテンツ移動プログラム302及びチャンク切り出しプログラム304などである。
【0115】
コンテンツ移動プログラム302は、バックアップボリューム112に格納されたバックアップファイルを読み出し、コンテンツとしてチャンク切り出しプログラム304に提供する。また、チャンク切り出しプログラム304は、コンテンツ移動プログラム302から提供されたコンテンツから重複排除処理の単位となるチャンクを切り出す。チャンク切り出しプログラム304は、コンテンツの種別に応じた最適なチャンク切り出し方式を利用してコンテンツからチャンクを切り出す。チャンク切り出しプログラム103によるチャンク切り出し処理は、第1の実施の形態と同様の処理であるため詳細な説明は省略する。チャンク切り出しプログラム304により切り出されたチャンクは、LAN140を介して重複排除装置301の重複判定プログラム306に提供される。
【0116】
重複排除装置301は、重複排除ボリューム110、プロセッサ114、メモリ116、OS120及びローカルファイルシステム122を備えている。また、メモリ116に格納されているソフトウェアは、重複判定プログラム306などである。
【0117】
重複判定プログラム306は、バックアップ装置300のチャンク切り出しプログラム304から提供されたチャンクの重複状況を調べて、重複するチャンクの排除処理を行って、新規チャンクを重複排除ボリューム110に格納する。
【0118】
管理サーバ308は、バックアップ装置300と重複排除装置301とに接続されている。管理サーバ308は、管理用ネットワーク334を介して、チャンク切り出しプログラム304の稼働パラメータの設定や稼働状態を監視する。また、管理サーバ308は、管理用ネットワーク336を介して、重複判定プログラム306の稼働パラメータの設定や稼働状態を監視する。
【0119】
(3−2)本実施の形態の効果
以上のように、本実施の形態では、バックアップ装置300にチャンク切り出しプログラム304を搭載し、重複排除装置301に重複判定プログラム306を搭載して、チャンク切り出し処理と重複判定処理とを別々の装置で実行させている。これにより、異なる装置のプロセッサによりチャンク切り出し処理と重複判定処理とが実行されるため、全体として、より効率のよい重複排除処理を実行することが可能となる。
【0120】
(4)他の実施の形態
上述の実施の形態においては、本実施の形態による各種機能に関する処理の全体を制御する制御部としてプロセッサ114を適用するようにした場合について述べたが、本発明はこれに限らず、かかる制御部としての処理を実行するハードウェアやソフトウェアをプロセッサ114とは別個に設けるようにしても良い。このようにしても上述の実施の形態と同様の効果を得ることができる。
【0121】
また、例えば、本明細書のバックアップ装置100等の処理における各ステップは、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はない。すなわち、バックアップ装置100等の処理における各ステップは、異なる処理であっても並列的に実行されてもよい。
【0122】
また、バックアップ装置100等に内蔵されるCPU、ROMおよびRAMなどのハードウェアを、上述したバックアップ装置100等の各構成と同等の機能を発揮させるためのコンピュータプログラムも作成可能である。また、該コンピュータプログラムを記憶させた記憶媒体も提供される。