(57)【要約】【課題】２つ以上の重複排除機構の利点を考慮して効率的に重複排除処理を実行する。【解決手段】ストレージ装置の制御部は、受信したデータを１または２以上のチャンクに分割し、分割した前記チャンクを圧縮し、圧縮率が閾値以下のチャンクに対し、前記第１記憶領域に格納せずに、圧縮された前記チャンクのハッシュ値を算出し、前記ハッシュ値と既に前記第２記憶領域に格納されている他のデータのハッシュ値とを比較して第１の重複排除処理を実行し、圧縮率が閾値より大きいチャンクに対し、前記第１記憶領域に圧縮された前記チャンクを格納した後に、前記圧縮された前記チャンクを前記第１記憶領域から読み出し、圧縮された前記チャンクのハッシュ値を算出し、該ハッシュ値と既に前記第２記憶領域に格納されている他のデータのハッシュ値とを比較して第２の重複排除処理を実行する。
2014030252.tif 000002
【特許請求の範囲】
【請求項１】
第１記憶領域と第２記憶領域とを提供する記憶装置と、
前記記憶装置へのデータの入出力を制御する制御部と、
を備え、
前記制御部は、
受信したデータを１または２以上のチャンクに分割し、
分割した前記チャンクを圧縮し、
圧縮率が閾値以下のチャンクに対し、前記第１記憶領域に格納せずに、圧縮された前記チャンクのハッシュ値を算出し、前記ハッシュ値と既に前記第２記憶領域に格納されている他のデータのハッシュ値とを比較して第１の重複排除処理を実行し、
圧縮率が閾値より大きいチャンクに対し、前記第１記憶領域に圧縮された前記チャンクを格納した後に、前記圧縮された前記チャンクを前記第１記憶領域から読み出し、圧縮された前記チャンクのハッシュ値を算出し、該ハッシュ値と既に前記第２記憶領域に格納されている他のデータのハッシュ値とを比較して第２の重複排除処理を実行する
ことを特徴とする、ストレージ装置。
【請求項２】
前記制御部は、
前記第１記憶領域と第１のファイルシステムとを対応付け、前記第２記憶領域と第２のファイルシステムとを対応付け、
前記第１の重複排除処理により重複排除できないチャンクと、圧縮率が前記閾値より大きいチャンクと、を第１のファイルシステムに格納し、
前記第１のファイルシステムに格納したチャンクに対して前記第２の重複排除処理を実行した前記チャンクを第２のファイルシステムに格納する
ことを特徴とする、請求項１に記載のストレージ装置。
【請求項３】
前記制御部は、
圧縮した前記チャンクに前記第１の重複排除処理を実行したかを示す情報を含む圧縮ヘッダを付して前記第１のファイルシステムに格納し、
前記圧縮ヘッダを参照して、前記第１の重複排除処理を実行していない場合に、前記チャンクに前記第２の重複排除処理を実行する
ことを特徴とする、請求項２に記載のストレージ装置。
【請求項４】
前記制御部は、
前記チャンクに前記第１の重複排除処理を実行していない場合に、前記圧縮ヘッダに第１のフラグを設定し、
前記チャンクに前記第１の重複排除処理を実行し、当該チャンクのハッシュ値と同一のハッシュ値である他のデータが前記第２記憶領域に格納されていない場合に、前記圧縮ヘッダに第２のフラグを設定し、
前記チャンクに前記第１の重複排除処理を実行し、当該チャンクのハッシュ値と同一のハッシュ値である他のデータが前記第２記憶領域に記憶されている場合に、前記圧縮ヘッダに第３のフラグを設定する
ことを特徴とする、請求項３に記載のストレージ装置。
【請求項５】
前記制御部は、
前記圧縮ヘッダに前記第１のフラグを設定した場合に、前記チャンク及び該チャンクの圧縮ヘッダを前記第１のファイルシステムに格納し、
前記圧縮ヘッダに前記第２のフラグを設定した場合に、前記チャンク及び該チャンクの圧縮ヘッダを前記第１のファイルシステムに格納し、
前記圧縮ヘッダに前記第３のフラグを設定した場合に、前記チャンクの圧縮ヘッダのみ前記第１のファイルシステムに格納する
ことを特徴とする、請求項４に記載のストレージ装置。
【請求項６】
前記制御部は、
前記圧縮ヘッダに前記第１のフラグが設定されている場合に、前記チャンクに前記第２の重複排除処理を実行し、
前記圧縮ヘッダに前記第２のフラグが設定されている場合に、前記チャンクを前記第２記憶領域に格納し、
前記圧縮ヘッダに前記第３のフラグが設定されている場合に、前記チャンクの前記第２記憶領域の格納先を取得する
ことを特徴とする、請求項４に記載のストレージ装置。
【請求項７】
第１記憶領域と第２記憶領域とを提供する記憶装置と、前記記憶装置へのデータの入出力を制御する制御部と、を備えたストレージ装置におけるデータ管理方法であって、
前記制御部が、受信したデータを１または２以上のチャンクに分割し、分割した前記チャンクを圧縮する第１のステップと、
前記制御部が、圧縮率が閾値以下のチャンクに対して、前記第１記憶領域に格納せずに、圧縮された前記チャンクのハッシュ値を算出し、前記ハッシュ値と既に前記第２記憶領域に格納されている他のデータのハッシュ値とを比較して第１の重複排除処理を実行する第２のステップと、
前記制御部が、圧縮率が閾値より大きいチャンクに対し、前記第１記憶領域に圧縮された前記チャンクを格納した後に、前記圧縮された前記チャンクを前記第１記憶領域から読み出し、圧縮された前記チャンクのハッシュ値を算出し、該ハッシュ値と既に前記第２記憶領域に格納されている他のデータのハッシュ値とを比較して第２の重複排除処理を実行する第３のステップと
を含むことを特徴とする、データ管理方法。
【請求項８】
前記第１記憶領域と第１のファイルシステムとが対応付けられ、前記第２記憶領域と第２のファイルシステムとが対応付けられており、
前記第２のステップにおいて、前記制御部が前記第１の重複排除処理により重複排除できないチャンクと、圧縮率が前記閾値より大きいチャンクとを第１のファイルシステムに格納する第４のステップと、
前記第３のステップにおいて、前記制御部が前記第１のファイルシステムに格納したチャンクに対して前記第２の重複排除処理を実行した前記チャンクを第２のファイルシステムに格納する第５のステップと
を含むことを特徴とする、請求項７に記載のデータ管理方法。
【請求項９】
前記第４のステップにおいて、前記制御部が圧縮した前記チャンクに前記第１の重複排除処理を実行したかを示す情報を含む圧縮ヘッダを付して前記第１のファイルシステムに格納する第６のステップと、
前記圧縮ヘッダを参照して、前記第１の重複排除処理を実行していない場合に、前記チャンクに前記第２の重複排除処理を実行する第７のステップと
を含むことを特徴とする、請求項８に記載のデータ管理方法。
【請求項１０】
前記制御部が
前記チャンクに前記第１の重複排除処理を実行していない場合に、前記圧縮ヘッダに第１のフラグを設定し、
前記チャンクに前記第１の重複排除処理を実行し、当該チャンクのハッシュ値と同一のハッシュ値である他のデータが前記第２記憶領域に格納されていない場合に、前記圧縮ヘッダに第２のフラグを設定し、
前記チャンクに前記第１の重複排除処理を実行し、当該チャンクのハッシュ値と同一のハッシュ値である他のデータが前記第２記憶領域に記憶されている場合に、前記圧縮ヘッダに第３のフラグを設定する
第８のステップを含むことを特徴とする、請求項９に記載のデータ管理方法。
【請求項１１】
前記制御部が、
前記圧縮ヘッダに前記第１のフラグを設定した場合に、前記チャンク及び該チャンクの圧縮ヘッダを前記第１のファイルシステムに格納し、
前記圧縮ヘッダに前記第２のフラグを設定した場合に、前記チャンク及び該チャンクの圧縮ヘッダを前記第１のファイルシステムに格納し、
前記圧縮ヘッダに前記第３のフラグを設定した場合に、前記チャンクの圧縮ヘッダのみ前記第１のファイルシステムに格納する
第９のステップを含むことを特徴とする、請求項１０に記載のデータ管理方法。
【請求項１２】
前記制御部は、
前記圧縮ヘッダに前記第１のフラグが設定されている場合に、前記チャンクに前記第２の重複排除処理を実行し、
前記圧縮ヘッダに前記第２のフラグが設定されている場合に、前記チャンクを前記第２記憶領域に格納し、
前記圧縮ヘッダに前記第３のフラグが設定されている場合に、前記チャンクの前記第２記憶領域の格納先を取得する
第１０のステップを含むことを特徴とする、請求項１０に記載のデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置及びデータ管理方法に関し、２つ以上の重複排除機構を利用して重複排除処理を行うストレージ装置及びデータ管理方法に適用して好適なるものである。
【背景技術】
【０００２】
ストレージ装置は、ホスト装置からの大規模データを記憶するために、大容量な記憶領域を保持している。ホスト装置からのデータは、年々増加の一途をたどっており、ストレージ装置のサイズやコストの問題から、大規模データを効率的に記憶する必要がある。そこで、記憶領域に格納するデータ量の増大を抑制し、データ容量効率を高めるため、データの重複を検出して排除するデータの重複排除処理が注目されている。【０００３】
データの重複排除処理は、新たに記憶デバイスに書き込むデータ、いわゆるライトデータが、既に磁気ディスクに格納されているデータと同一内容の場合、重複するデータを磁気ディスクに書き込まない技術である。ライトデータが磁気ディスクに格納済みのデータと同一内容であるか否かは、一般的にデータのハッシュ値を用いて検証されている。【０００４】
従来、ホスト装置からのデータのすべてをディスクに記憶した後に重複排除処理を行う方式（以降、ポストプロセス方式とも称する）が採用されていた。しかし、ポストプロセス方式では、ホスト装置からのデータのすべてをディスクに書き込む必要があるため、大容量の記憶領域が必要となってしまう。そこで、ポストプロセス方式だけでなく、ディスクに書き込む前に重複排除処理を行う方式（以降、インライン方式とも称する）も併用して、重複排除処理を実行する技術が開示されている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公開第２０１１／０２８９２８１号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１では、重複排除処理において、単にポストプロセス方式とインライン方式を併用することのみ開示されている。しかし、ポストプロセス方式ではすべてのデータを一旦ディスクに書き込むため、全体の処理性能がディスクの書き込み性能に依存してしまう。また、インライン方式では、データをディスクに書き込む際に重複排除処理を行うため、全体の処理性能が重複排除処理の性能に依存してしまう。そこで、両方式の利点を考慮して重複排除処理を実行する必要があった。また、ポストプロセス方式とインライン方式を併用した場合、両方式で同様の重複排除処理を実行してしまい、無駄な重複排除処理が発生してしまう可能性があるという問題があった。【０００７】
そこで、２つ以上の重複排除機構の利点を考慮して効率的に重複排除処理を実行することが可能なストレージ装置及びデータ管理方法を提案しようとするものである。
【課題を解決するための手段】
【０００８】
かかる課題を解決するために本発明においては、第１記憶領域と第２記憶領域とを提供する記憶装置と、前記記憶装置へのデータの入出力を制御する制御部と、を備え、前記制御部は、受信したデータを１または２以上のチャンクに分割し、分割した前記チャンクを圧縮し、圧縮率が閾値以下のチャンクに対し、前記第１記憶領域に格納せずに、圧縮された前記チャンクのハッシュ値を算出し、前記ハッシュ値と既に前記第２記憶領域に格納されている他のデータのハッシュ値とを比較して第１の重複排除処理を実行し、圧縮率が閾値より大きいチャンクに対し、前記第１記憶領域に圧縮された前記チャンクを格納した後に、前記圧縮された前記チャンクを前記第１記憶領域から読み出し、圧縮された前記チャンクのハッシュ値を算出し、該ハッシュ値と既に前記第２記憶領域に格納されている他のデータのハッシュ値とを比較して第２の重複排除処理を実行することを特徴とする、ストレージ装置が提供される。【０００９】
かかる構成によれば、受信したデータを１または２以上のチャンクに分割し、分割したチャンクを圧縮し、チャンクの圧縮率が所定の閾値以下の場合に、圧縮された該チャンクのハッシュ値を算出し、該ハッシュ値と既に格納されているデータのハッシュ値とを比較して第１の重複排除処理を実行し、チャンクの圧縮率が所定の閾値より大きい場合に、圧縮された該チャンクを第１のファイルシステムに格納した後に、圧縮された該チャンクのハッシュ値を算出し、該ハッシュ値と既に格納されているデータのハッシュ値とを比較して第２の重複排除処理を実行する。【００１０】
これにより、重複排除処理のうち、処理負荷の小さいデータの分割処理を１次重複排除処理時に行うことができ、チャンクの圧縮率に基づいて、該チャンクを１次重複排除処理で重複排除を行うか、２次重複排除処理で重複排除処理を行うかを決定し、１次重複排除処理と２次重複排除処理のそれぞれの利点を考慮して効率的に重複排除処理を実行することが可能となる。
【発明の効果】
【００１１】
本発明によれば、２つ以上の重複排除機構の利点を考慮して効率的に重複排除処理を実行することにより重複排除処理の負荷を分散することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１の実施形態に係る概要を説明する概念図である。
【図２】同実施形態にかかる計算機システムのハードウェア構成を示すブロック図である。
【図３】同実施形態にかかるストレージ装置のソフトウェア構成を示すブロック図である。
【図４】同実施形態にかかるメタデータについて説明する図表である。
【図５】同実施形態にかかるチャンクの管理情報を説明する概念図である。
【図６】同実施形態にかかる１次重複排除済みデータを示す概念図である。
【図７】同実施形態にかかるチャンクの圧縮ヘッダを説明する図表である。
【図８】同実施形態にかかるバックアップ処理を示すフローチャートである。
【図９】同実施形態にかかるデータの書き込み処理を示すフローチャートである。
【図１０】同実施形態にかかる１次重複排除処理を示すフローチャートである。
【図１１】同実施形態にかかる２次重複排除処理を示すフローチャートである。
【図１２】同実施形態にかかるデータのRead処理を示すフローチャートである。
【図１３】同実施形態にかかるデータのRead処理を示すフローチャートである。
【図１４】本発明の第２の実施形態にかかるストレージ装置のソフトウェア構成を示すブロック図である。
【発明を実施するための形態】
【００１３】
以下図面について、本発明の一実施の形態を詳述する。
【００１４】
（１）第１の実施の形態
（１−１）本実施の形態の概要
まず、図１を参照して、本実施の形態の概要について説明する。本実施形態では、ストレージ装置１００は、ホスト装置２００からのバックアップデータを記憶領域に格納する。なお、ホスト装置は、バックアップサーバ等のサーバ、他のストレージ装置であってもよい。ストレージ装置１００のバックアップデータの記憶領域として、バックアップデータを一時的に格納する記憶領域（第１ファイルシステム）と、重複排除処理実施後のバックアップデータの記憶領域（第２ファイルシステム）とが備えられている。
【００１５】
ストレージ装置１００は、第１ファイルシステムにバックアップデータを格納する際に、最初の重複排除処理（以降、１次重複排除処理と称して説明する。）を実行する。このように、ホスト装置２００からのバックアップデータを格納する前に重複排除処理を行う方式を、インライン方式と称する。
【００１６】
そして、ストレージ装置１００は、第１ファイルシステムに格納されたバックアップデータに対して、さらに重複排除処理（以降、２次重複排除処理と称して説明する。）を実行して、第２ファイルシステムにバックアップデータを格納する。このように、一旦バックアップデータを格納した後に重複排除処理を行う方式をポストプロセス方式と称する。
【００１７】
ポストプロセス方式では、すべてのデータを一旦ディスクに書き込むため、全体の処理性能がディスクの書き込み性能に依存してしまう。さらに、ポストプロセス方式では、全てのデータを一旦ディスクに書き込むため、データ格納のため大きな記憶容量が消費されてしまう。また、インライン方式では、データをディスクに書き込む際に重複排除処理を行うため、全体の処理性能が重複排除処理の性能に依存してしまう。そこで、両方式の利点を考慮して重複排除処理を実行する必要がある。また、ポストプロセス方式とインライン方式を併用した場合、両方式で同様の重複排除処理を実行してしまい、無駄な重複排除処理が発生してしまう可能性があるという問題がある。
【００１８】
そこで、本実施の形態では、データの圧縮率に基づいて、該データを１次重複排除処理で重複排除を行うか、２次重複排除処理で重複排除処理を行うかを決定する。また、重複排除処理のうち、処理負荷の小さいデータの分割処理を１次重複排除処理時に行う。これにより、１次重複排除処理と２次重複排除処理のそれぞれの利点を考慮して効率的に重複排除処理を実行することが可能となる。また、圧縮率が閾値より低いデータに対してのみ１次重複排除処理を行うため、インライン方式での処理負荷を小さくしつつ、データの一時格納のための記憶領域の消費量を小さくできる。
【００１９】
（１−２）計算機システムの構成
次に、本実施の形態にかかる計算機システムのハードウェア構成について説明する。図２に示すように、計算機システムは、ストレージ装置１００とホスト装置２００とから構成されている。ホスト装置２００は、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などのネットワークを介してストレージ装置１００と接続されている。なお、図中には表記していないが、ストレージ装置１００をコントロールする管理端末を含んでもよい。
【００２０】
ストレージ装置１００は、ホスト装置２００から送信されたコマンドを解釈して、ディスクアレイ装置１１０の記憶領域内へのリード／ライトを実行する。ストレージ装置１００は、複数の仮想サーバ１０１ａ、１０１ｂ、１０１ｃ・・・１０１ｎ（以降、仮想サーバ１０１と総称して説明する場合もある。）と、ファイバチャネルケーブル（図中ＦＣケーブルと表記）１０６と、ディスクアレイ装置１１０とから構成される。仮想サーバ１０１とディスクアレイ装置１１０とは、ファイバチャネルポート１０５、１０７に接続されたファイバチャネルケーブル１０６を介して接続されている。なお、本実施形態では仮想サーバを用いているが、物理サーバであってもよい。
【００２１】
仮想サーバ１０１は、ストレージ装置１００内に仮想的に再現された計算機環境である。仮想サーバ１０１は、ＣＰＵ１０２、システムメモリ１０３、ＨＤＤ（Hard Disk Drive）１０４及びファイバチャネルポート（図中ＦＣポートと表記）１０５などを含む。
【００２２】
ＣＰＵ１０２は、演算処理装置として機能し、システムメモリ１０３に記憶されている各種プログラムや演算パラメータ等にしたがって、ストレージ装置１００全体の動作を制御する。システムメモリ１０３には、主に、１次重複排除処理を実行するプログラム及び２次重複排除処理を実行するプログラムが記憶されている。
【００２３】
ＨＤＤ１０４は、複数の記憶媒体から構成されている。例えば、ＳＳＤ（Solid State Disk）、ＳＣＳI（Small Computer System Interface）ディスク等の高価なハードディスクドライブ、または、ＳＡＴＡ（Serial AT Attachment）ディスク等の安価なハードディスクドライブでなる複数のハードディスクドライブから構成されてもよい。なお、本実施形態では、記憶媒体としてＨＤＤを用いているが、ＳＳＤ等の他の記憶媒体であってもよい。
【００２４】
複数のＨＤＤ１０４により１つのＲＡＩＤ（Redundant Array of Inexpensive Disks）グループが構成され、１又は複数のＲＡＩＤグループが提供する物理的な記憶領域上に、１又は複数の論理ユニット（ＬＵ）が設定される。そしてホスト装置２００からのデータは、この論理ユニット（ＬＵ）内に所定大きさのブロックを単位として格納される。本実施の形態では、ディスクアレイ装置１１０の複数のＨＤＤ１０４から構成されるＬＵ０を第１のファイルシステムにマウントし、ＬＵ１を第２のファイルシステムにマウントして利用する。
【００２５】
ホスト装置２００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などの演算装置や、メモリ、ディスクなどの記憶領域等の情報処理資源と、必要に応じて、キーボード、マウス、モニタディスプレイ、スピーカー、通信Ｉ／Ｆカード等の情報入出力装置を備えた計算機装置であり、例えばパーソナルコンピュータやワークステーション、メインフレーム等で構成される。
【００２６】
（１−３）ストレージ装置のソフトウェア構成
次に、図３を参照して、ストレージ装置１００のソフトウェア構成について説明する。図３に示すように、ストレージ装置１００のシステムメモリ１０３には、１次重複排除処理部２０１、２次重複排除処理部２０２及びファイルシステム管理部２０３などのプログラムが格納されている。なお、これらのプログラムは、ＣＰＵにより実行される。従って以下の説明において、これらのプログラムを主語として処理を説明している場合には、実際にはＣＰＵによりそのプログラムを実行することにより処理を実現することを意味する。
【００２７】
１次重複排除処理部２０１は、ホスト装置２００からのバックアップデータ１０を１次重複排除して第１ファイルシステムに格納する。２次重複排除処理部２０２は、第１ファイルシステムに格納された１次重複排除済みデータ１１を２次重複排除して第２ファイルシステムに格納する。
【００２８】
本実施の形態では、１次重複排除処理部２０１により実行される１次重複排除処理と、２次重複排除処理部２０２により実行される２次重複排除処理とで、異なる重複排除処理を実行している。１次重複排除処理では、重複排除処理において負荷の小さいデータの分割処理と圧縮処理を行う。また、圧縮処理後のデータの圧縮率に基づいてデータのハッシュ値の計算と重複排除処理とを１次重複排除処理で実行するか２次重複排除処理で実行するか判定している。そして、２次重複排除処理では、１次重複排除処理においてハッシュ値の計算が行われなかったデータに対して重複排除処理を実行する。
【００２９】
上記したように、バックアップデータのすべてをインライン方式である１次重複排除処理で行うと、重複排除処理に時間がかかり、ストレージ装置１００全体の処理性能が重複排除処理の性能に依存してしまう。また、バックアップデータのすべてをポストプロセス方式で重複排除した場合、すなわち、一旦第１ファイルシステムに格納した後、２次重複排除処理で重複排除処理を行う場合には、全体の処理性能がディスクの書き込み性能に依存してしまう。さらに、ポストプロセス方式では、全てのデータを一旦ディスクに書き込むため、データ格納のため大きな記憶容量が消費されてしまう。また、単純に、１次重複排除処理と２次重複排除処理を併用するだけでは、両処理で同様の重複排除処理を実行してしまい、無駄な重複排除処理が発生してしまう。
【００３０】
そこで、本実施の形態では、１次重複排除処理で、重複排除処理のうち負荷の小さいデータの分割処理と圧縮処理を行い、さらに、圧縮率の低い分割データ（一時的なデータ記憶領域の容量を大きく消費するデータ）に対して重複判定処理を実行する。ここで、１次重複排除処理において分割されたデータをチャンクと称して以下説明する。データの分割処理については、後で詳細に説明する。
【００３１】
重複排除処理における重複判定処理は、分割されたデータ（チャンク）の圧縮率に関わらず、ほぼ同等の時間がかかる。したがって、１次重複排除処理では、圧縮率の低いチャンクに対して重複判定処理を実行することにより、重複判定処理の負荷を軽減しつつ、データの書き込み処理を高速化させることが可能となる。さらに、圧縮率の低いチャンクをインライン方式にて重複排除処理することにより、データの一時格納のための記憶領域の消費量を小さくできる。
【００３２】
一方、２次重複排除処理では、１次重複排除処理で既に重複判定処理を実行したチャンク以外のチャンクに対して重複判定処理を実行することにより、１次重複排除処理と２次重複排除処理とで同様の重複排除処理を実行することを防止している。具体的に、１次重複排除処理において重複判定処理が実行されたチャンクについては、各チャンクのデータヘッダに、既に重複判定処理を実行したことを示すフラグを設定する。そして、２次重複排除処理において、設定されたフラグを参照して、１次重複排除処理で重複判定処理が実行されていないチャンクに対して重複判定処理を実行する。
【００３３】
次に、図４を参照して、第１ファイルシステム及び第２ファイルシステムに格納されているメタデータ１２について説明する。メタデータ１２は、第１ファイルシステムに格納される１次重複排除済みデータまたは第２ファイルシステムに格納される２次重複排除済みデータの管理情報を示すデータである。
【００３４】
図４に示すように、メタデータ１２には各種テーブルが含まれる。具体的に、スタブファイル（Stub file）１２１、チャンクデータセット（Chunk Data Set）１２２、チャンクデータセットインデックス（Chunk Data Set Index）１２３、コンテンツ管理テーブル１２４及びチャンクインデックス１２５などのテーブルがメタデータ１２に含まれる。
【００３５】
スタブファイル１２１は、バックアップデータとコンテンツＩＤとを関連付けるためのテーブルである。バックアップデータは、複数のファイルデータから構成される。当該ファイルデータを、記憶領域に格納される単位である論理的にまとまったコンテンツ（content）と称する。各コンテンツは複数のチャンクに分割され、各コンテンツは、コンテンツＩＤによって識別される。このコンテンツＩＤがスタブファイル１２１に格納される。ストレージ装置１００がディスクアレイ装置１１０に格納されたデータのリード／ライトを行う場合には、まず、スタブファイル１２１のコンテンツＩＤが呼び出される。
【００３６】
チャンクデータセット１２２は、複数のチャンクから構成されるユーザデータであって、ストレージ装置１００に格納されるバックアップデータである。チャンクデータセットインデックス１２３は、チャンクデータセット１２２に含まれる各チャンクの情報が格納されている。具体的に、チャンクデータセットインデックス１２３には、各チャンクの長さ情報とチャンクデータとが対応付けて格納されている。
【００３７】
コンテンツ管理テーブル１２４は、コンテンツ内のチャンク情報を管理するテーブルである。ここで、コンテンツとは、上記したコンテンツＩＤによって識別されるファイルデータである。また、チャンクインデックス１２５は、各チャンクがどのチャンクデータセット１２２に存在するかを示す情報である。また、チャンクインデックス１２５には、各チャンクを識別するチャンクのフィンガープリントと、チャンクが存在するチャンクデータセット１２２を識別するチャンクデータセットＩＤとが対応付けられている。
【００３８】
次に、図５を参照して、チャンクの管理情報について詳細に説明する。図５に示すように、スタブファイル（図中Stub fileと表記）１２１には、オリジナルのデータファイルを識別するコンテンツＩＤ（図中Content IDと表記）が格納されている。そして、１つのスタブファイル１２１に対して１つのコンテンツファイルが対応し、各コンテンツファイルはコンテンツ管理テーブル（図中Content Mng Tblと表記）１２４で管理されている。
【００３９】
コンテンツ管理テーブル１２４で管理されている各コンテンツファイルは、コンテンツＩＤ（図中Content IDと表記）によって識別される。コンテンツファイルには、各チャンクのオフセット（Content Offset）、チャンク長（Chunk Length）、チャンクが存在するコンテナの識別情報（Chunk Data Set ID）、各チャンクのハッシュ値（Fingerprint）が格納されている。
【００４０】
また、チャンクデータセットインデックス（図中Chunk Data Set Indexと表記）１２３には、チャンクの管理情報として、チャンクデータセット（図中Chunk Data Setと表記）１２２に格納されているチャンクのハッシュ値（Fingerprint）と、チャンクのオフセット及びデータ長とが対応付けられて格納されている。各チャンクデータセット１２２は、チャンクデータセットＩＤ（図中Chunk Data Set IDと表記）で識別されている。チャンクデータセットインデックス１２３では、チャンクの管理情報がチャンクデータセットごとにまとめられて管理されている。
【００４１】
チャンクデータセット１２２は、所定数のチャンクを１つのコンテナとして管理している。各コンテナは、チャンクデータセットＩＤにより識別され、各コンテナには、チャンク長が付された複数のチャンクデータが含まれる。チャンクデータセット１２２のコンテナを識別するチャンクデータセットＩＤと、上記したチャンクデータセットインデックス１２３のチャンクデータセットＩＤとが対応づけられている。
【００４２】
チャンクインデックス１２５は、各チャンクのハッシュ値（Fingerprint）とチャンクが存在するコンテナの識別情報（Chunk Data Set ID）とが対応づけられて格納されている。チャンクインデックス１２５は、重複排除処理を実行する際に、各チャンクから計算されたハッシュ値をもとに、いずれのコンテナに格納されているかを判定するためのテーブルである。
【００４３】
上記したように、バックアップデータであるコンテンツは、１次重複排除処理において、複数のチャンクに分割される。コンテンツは、通常のファイルの他、例えば、アーカイブファイル、バックアップファイルまたは仮想ボリュームファイルなどの通常のファイルを集約したファイルなどを例示することができる。
【００４４】
重複排除処理は、コンテンツからチャンクを順次切り出す処理と、切り出したチャンクの重複の有無を判定する処理と、チャンクの格納保存処理とからなる。重複排除処理を効率よく実行するためには、チャンクの切り出し処理において、内容が同一のデータセグメントをより多く切り出すことが重要となる。
【００４５】
チャンクの切り出し方法としては、固定長チャンク切り出し方式、可変長チャンク切り出し方式などがある。固定長チャンク切り出し方式は、例えば、４キロバイト（ＫＢ）や１メガバイト（ＭＢ）といった一定の長さのチャンクを順次切り出す方法である。また、可変長チャンク方式は、コンテンツデータの局所的な条件をもとにチャンクの切り出しの境界を決定してコンテンツを切り出す方法である。
【００４６】
しかし、固定長チャンク切り出し方式は、チャンクを切り出すためのオーバーヘッドが小さいが、コンテンツデータの変更がデータの挿入などの変更の場合、データが挿入された後のチャンクがずれて切り出されるため、重複排除効率が低下してしまう。一方、可変長チャンク切り出し方式は、データが挿入されてチャンクがずれてもチャンクを切り出すための境界の位置は変わらないため重複排除効率を上げることができるが、チャンクの境界を探索するための処理のオーバーヘッドが大きくなってしまう。また、基本データ切り出し方式では、基本データを切り出すために伸長処理を繰り返す必要があり、重複排除処理のオーバーヘッドが大きくなるという問題があった。
【００４７】
したがって、重複排除効率と重複排除処理のオーバーヘッドのトレードオフを考慮すると、上記したチャンク切り出し方式のうち、いずれか一つのチャンク切り出し方式を用いて重複排除処理を行っても、重複排除処理全体の最適化を図ることができないという問題があった。
【００４８】
そこで、本実施の形態では、各コンテンツ、あるいはコンテンツの各部分の特性に基づいて、チャンクの切り出し処理において適用するチャンク切り出し方式を切り替えることにより、各コンテンツの種別に応じて最適なチャンク切り出し方式を選択する。コンテンツの種別は、各コンテンツに付加されている種別を識別する情報を検出することにより判定することが可能となる。コンテンツの種別に対応するコンテンツの特性や構造を予め知っておくことにより、コンテンツの種別に応じて最適なチャンク切り出し方式を選択することが可能となる。
【００４９】
例えば、あるコンテンツについて、変更があまりない種別であれば、当該コンテンツについては固定長チャンク方式を適用してチャンクを切り出すことが好適である。また、サイズの大きいコンテンツの場合には、チャンクサイズを大きく取ったほうが、処理オーバーヘッドが小さくなり、サイズの小さいコンテンツの場合には、チャンクサイズを小さく取ることが好ましい。また、コンテンツへの挿入がある場合には、可変長チャンク方式を適用してチャンクを切り出すことが好適である。コンテンツへの挿入があるが、変更が少ない場合には、チャンクのサイズを大きめに取ることにより、重複排除効率を低下させずに、処理効率を向上させて管理オーバーヘッドを低減させることが可能となる。
【００５０】
また、所定の構造を有するコンテンツは、ヘッダ部、ボディ部、トレイラ部などの各部に分けることができ、部分毎に適用すべきチャンク切り出し方式が異なる。各部分に好適なチャンク切り出し方式を適用することにより、重複排除効率と処理効率とを最適化することが可能となる。
【００５１】
上記したように、１次重複排除処理部２０１は、コンテンツを複数のチャンクに切り出し、各チャンクを圧縮する。１次重複排除処理部２０１は、図６に示すように、まず、コンテンツをヘッダ部(図中Metaと表記)とボディ部（図中FileＸと表記）に分割する。そして、１次重複排除処理部２０１は、さらに、ボディ部を固定長または可変長に分割する。コンテンツを固定長で分割する場合には、例えば、４キロバイト（ＫＢ）や１メガバイト（ＭＢ）といった一定の長さのチャンクを順次切り出す。また、コンテンツを可変長で分割する場合には、コンテンツの局所的な条件をもとにチャンクの切り出しの境界を決定してチャンクを切り出す。また、例えば、vmdkファイル、vdiファイル、vhdファイル、zipファイルまたはgzipファイルなどコンテンツの構造に変更があまりないファイルを固定長に分割し、これらのファイル以外のファイルを可変長に分割する。
【００５２】
そして、１次重複排除処理部２０１は、分割したチャンクを圧縮し、圧縮率の低いチャンク（圧縮率が閾値よりも低いチャンク）に対して１次重複排除処理を行う。１次重複排除処理部２０１は、１次重複判定処理の対象となるチャンクのハッシュ値を算出して、該ハッシュ値をもとに同一チャンクがＨＤＤ１０４に既に格納されているかを判定する。１次重複排除処理部２０１は、１次重複排除処理を行った結果、既にＨＤＤ１０４に格納されているチャンクを排除して、第１ファイルシステムに格納するための１次重複排除済みデータを生成する。１次重複排除処理部２０１は、圧縮した各チャンクに圧縮後のデータ情報を示す圧縮ヘッダを付して管理する。なお、一次重複排除処理（インライン方式）において、圧縮率が閾値よりも高いチャンクのハッシュ値の算出及び重複排除処理を実行しない。
【００５３】
次に、チャンクの圧縮ヘッダについて説明する。図７は、圧縮された各チャンクに付される圧縮ヘッダを説明する概念図である。図７に示すように、圧縮ヘッダは、マジックナンバー３０１、ステータス３０２、フィンガープリント３０３、チャンクデータセットＩＤ３０４、圧縮前length３０５及び圧縮後length３０６を含む。
【００５４】
マジックナンバー３０１には、１次重複排除処理済みのチャンクであることを示す情報が格納される。ステータス３０２には、チャンクが重複判定処理を実行されたかを示す情報が格納される。例えば、ステータス３０２にステータス１が格納されている場合には、重複判定未実施であることを示す。ステータス３０２にステータス２が格納されている場合には、重複判定実施済みであり、未だＨＤＤ１０４に格納されていない新規チャンクであることを示す。また、ステータス３０２にステータス３が格納されている場合には、重複判定実施済みであり、既にＨＤＤ１０４に格納されている既存チャンクであることを示す。
【００５５】
フィンガープリント３０３には、チャンクから算出されたハッシュ値が格納される。なお、１次重複排除処理において、重複判定処理が行われなかったチャンクについては、フィンガープリント３０３には無効な値が格納される。すなわち、ステータス１のチャンクについては、未だ重複判定処理が実行されていないため、フィンガープリント３０３には無効値が格納される。
【００５６】
チャンクデータセットＩＤ３０４には、チャンク格納先のチャンクデータセットＩＤが格納される。チャンクデータセットＩＤ３０４は、チャンクを格納するコンテナ（Chunk Data Set１２２）を識別する情報である。なお、１次重複排除処理が実行されていないチャンクや未だＨＤＤ１０４に格納されていない新規チャンクについては、チャンクデータセットＩＤ３０４に無効な値が格納される。すなわち、ステータス１やステータス２のチャンクのチャンクデータセットＩＤ３０４には、無効値が格納される。
【００５７】
圧縮前length３０５には、圧縮前のチャンク長が格納される。圧縮後length３０６には、圧縮後のチャンク長が格納される。
【００５８】
２次重複排除処理部２０２は、１次重複排除処理部２０１により生成された１次重複排除データに含まれるチャンクの圧縮ヘッダを参照して、各チャンクの重複判定処理を実行するかを判定する。具体的に、２次重複排除処理部２０２は、チャンクの圧縮ヘッダのステータスを参照し、重複判定処理を行うか否か判断する。
【００５９】
例えば、チャンクの圧縮ヘッダのステータス３０２がスタータス１の場合には、１次重複排除処理において重複判定処理が実行されていないため、２次重複排除処理において重複判定処理を実行する。また、チャンクの圧縮ヘッダのステータス３０２がステータス２の場合には、１次重複判定処理において重複判定処理は実行されているが、チャンクデータセット１２２には格納されていないチャンクであるため、チャンクの格納先を決定して該チャンクを書き込む。また、チャンクの圧縮ヘッダのステータス３０２がステータス３の場合には、１次重複判定処理において重複判定処理が実行され、既にチャンクデータセット１２２に格納されているチャンクであるため、重複判定処理は実行せずに、チャンクの格納先を取得する。
【００６０】
上記したように、１次重複排除処理部２０１は、重複排除処理のうち負荷のかからない分割処理や圧縮処理を行い、圧縮率の低いチャンクに対してハッシュ値の計算及び重複判定処理を行う。そして、２次重複排除処理部２０２は、各チャンクの圧縮ヘッダを参照して、１次重複排除処理部２０２により重複判定処理が行われていないチャンクに対して重複判定処理を実行する。これにより、重複判定処理の負荷を軽減しつつ、データの書き込み処理を高速化させることが可能となる。さらに、圧縮率の低い（データサイズの大きい）チャンクをインライン方式にて重複排除処理することにより、データの一時格納のための記憶領域の消費量を小さくできる。
【００６１】
（１−４）重複排除処理
本実施の形態にかかる重複排除処理は、ホスト装置２００からの要求に応じてデータのバックアップを開始する。ストレージ装置１００におけるデータのバックアップ処理は、図８に示すように、まず、データの書き込み先をオープンして（Ｓ１０１）、バックアップデータのサイズ分データの書き込み処理（Ｓ１０３）を繰り返す（Ｓ１０２〜Ｓ１０４）。ストレージ装置１００は、データの書き込み処理終了後、書き込み先をクローズして（Ｓ１０５）バックアップ処理を終了する。
【００６２】
上記したステップＳ１０３におけるデータの書き込み処理において、図９に示すように、ストレージ装置１００は、ホスト装置２００からのバックアップデータをメモリ上のバッファに滞留させる（Ｓ１１１）。
【００６３】
そして、ストレージ装置１００は、バッファに規定量のデータが溜まったかを判定する（Ｓ１１２）。ステップＳ１１２において、バッファに規定量のデータが溜まったと判定された場合には、１次重複排除処理部２０１に１次重複排除処理を実行させる。一方、ステップ１１２において、バッファに規定量のデータが溜まっていないと判定された場合には、さらにバックアップデータを受領する（Ｓ１０２）。
【００６４】
（１−４−１）１次重複排除処理の詳細
次に、図１０を参照して、１次重複排除処理部２０１による１次重複排除処理の詳細について説明する。図１０に示すように、１次重複排除処理部２０１は、バッファに滞留したデータについて、バッファサイズ分ステップＳ１２１〜ステップＳ１３７までの処理を繰り返す。
【００６５】
１次重複排除処理部２０１は、上記した分割処理により、バッファから固定長または可変長で１チャンクを切り出す（Ｓ１２２）。そして、１次重複排除処理部２０１は、ステップＳ１２２において切り出したチャンクを圧縮して（Ｓ１２３）、チャンクの圧縮率を算出する（Ｓ１２４）。
【００６６】
そして、１次重複排除処理部２０１は、変数FingerPrintにnull値を代入し（Ｓ１２５）、変数ChunkDataSetIDにnull値を代入する（Ｓ１２６）。
【００６７】
続いて、１次重複排除処理部２０１は、ステップＳ１２４において算出したチャンクの圧縮率が所定の閾値より低いか否かを判定する（Ｓ１２７）。ステップＳ１２７において、チャンクの圧縮率が所定の閾値より低い場合とは、圧縮前後でチャンク長があまり変わらない場合である。
【００６８】
ステップＳ１２７において、チャンクの圧縮率が所定の閾値より低いと判定された場合には、ステップＳ１２８以降の処理を実行する。一方、ステップＳ１２７において、チャンクの圧縮率が所定の閾値より高いと判定された場合には、ステップＳ１３１以降の処理を実行する。
【００６９】
ステップＳ１２８において、１次重複排除処理部２０１は、チャンクのデータからハッシュ値を算出して、算出結果を変数FingerPrintに代入する（Ｓ１２８）。
【００７０】
そして、１次重複排除処理部２０１は、算出したハッシュ値を用いて、チャンクがチャンクデータセットに格納されているか、格納されている場合にはチャンクデータセットのチャンクデータセットＩＤ（ChankDataSetID）を確認する（Ｓ１２９）。
【００７１】
そして、１次重複排除処理部２０１は、重複判定処理の対象となるチャンクと同一のチャンクがチャンクデータセットに格納されているかを判定する（Ｓ１３０）。ステップＳ１３０において、同一のチャンクがあると判定された場合には、１次重複排除処理部２０１は、ステップＳ１３５以降の処理を実行する。一方、ステップＳ１３０において同一のチャンクがないと判定された場合には、ステップＳ１３３以降の処理を実行する。
【００７２】
ステップＳ１２７において、圧縮率が閾値よりも高いと判定された場合には、１次重複排除処理部２０１は、重複判定処理を実行せずに、ステータス１のチャンクヘッダを生成する（Ｓ１３１）。ステータス１のチャンクヘッダとは、上記したように、重複判定未実施のチャンクに付される圧縮ヘッダである。図７に示すように、チャンクヘッダがステータス１の場合、チャンクとチャンクヘッダとが第１ファイルシステムに書き込まれる。なお、重複判定処理が実施されていないため、チャンクヘッダのフィンガープリント３０３とチャンクデータセットＩＤ３０４はｎｕｌｌ値のままである。
【００７３】
また、ステップＳ１２７において、圧縮率が閾値よりも低いと判定され、重複判定処理が実行された結果、同一チャンクがチャンクデータセット１２２に存在しないと判定された場合には、ステータス２のチャンクヘッダを生成する（Ｓ１３３）。ステータス２のチャンクヘッダとは、上記したように、重複判定が実施済みであり、チャンクデータセット１２２に同一チャンクがない場合にチャンクに付される圧縮ヘッダである。図７に示すように、チャンクヘッダがステータス２の場合、チャンクとチャンクヘッダとが第１ファイルシステムに書き込まれる（Ｓ１３４）。なお、チャンクヘッダのフィンガープリント３０３には、チャンクから算出したハッシュ値が格納される。また、チャンクデータセットＩＤ３０４は、チャンクが未だ見つかっていないため、ｎｕｌｌ値のままである。
【００７４】
また、ステップＳ１２７において、圧縮率が閾値よりも低いと判定され、重複判定処理が実行された結果、同一チャンクがチャンクデータセット１２２に存在すると判定された場合には、ステータス３のチャンクヘッダを生成する（Ｓ１３５）。ステータス３のチャンクヘッダとは、上記したように、重複判定が実施済みであり、チャンクデータセット１２２に同一チャンクがある場合にチャンクに付される圧縮ヘッダである。図７に示すように、チャンクヘッダがステータス３の場合、チャンクヘッダのみ第１ファイルシステムに書き込まれる（Ｓ１３６）。つまり、チャンクのデータ自体は第１ファイルシステムに書き込まれず、記憶容量を削減することができる。
【００７５】
（１−４−２）２次重複排除処理の詳細
以上、１次重複排除処理の詳細について説明した。次に、図１１を参照して、２次重複排除処理部２０２による２次重複排除処理の詳細について説明する。２次重複排除処理は、所定時間ごとに定期的に実行するようにしてもよいし、予め決められたタイミングで実行するようにしてもよいし、管理者の入力に応じて実行するようにしてもよい。さらに、第１ファイルシステムの容量が一定量を超えた場合に、実行を開始してもよい。
【００７６】
図１１に示すように、２次重複排除処理部２０２は、まず、変数offsetに０を代入する（Ｓ２０１）。続いて、１次重複排除済みファイル（第１ファイルシステム）をオープンして、１次重複済みファイル分、２次重複排除処理を繰り返す（Ｓ２０３〜Ｓ２２２）。
【００７７】
ステップＳ２０２において、１次重複排除済みファイルをオープンした２次重複排除処理部２０２は、変数offsetに代入された値からチャンクヘッダサイズ分のデータを読み出す（Ｓ２０４）。そして、２次重複排除処理部２０２は、チャンクヘッダの変数Lengthの値から、圧縮後のチャンク長を取得する（Ｓ２０５）。さらに、２次重複排除処理部は、チャンクヘッダの変数FingerPrintから、チャンクのハッシュ値（フィンガープリント）を取得する（Ｓ２０６）。なお、１次重複排除処理において未だ１次重複判定処理が未実施の場合には、チャンクヘッダのFingerPrintに無効な値（null）が格納されている。
【００７８】
続いて、２次重複排除処理部２０２は、チャンクのチャンクヘッダに含まれるステータス（Status）を確認する（Ｓ２０７）。ステップＳ２０７において、ステータスがステータス１の場合、すなわち、対象となるチャンクが重複判定未実施である場合、２次重複排除処理部２０２は、ステップＳ２０８以降の処理を実行する。また、ステップＳ２０７において、ステータスがステータス２の場合、すなわち、対象となるチャンクが１次重複排除処理により重複判定済であるが、チャンクデータセット１２２にチャンクが存在しない場合、２次重複排除処理部２０２は、重複排除処理を実行せずにステップＳ２１６以降の処理を実行する。また、ステップＳ２０７において、ステータスがステータス３の場合、すなわち、対象となるチャンクが１次重複排除処理により重複判定済であり、チャンクデータセット１２２にチャンクが存在する場合、２次重複排除処理部２０２は、重複排除処理を実行せずにステップＳ２２４の処理を実行する。
【００７９】
次に、チャンクヘッダのステータスがステータス１の場合、すなわち、重複判定未実施の場合の処理について説明する。２次重複排除処理部２０２は、offsetの値にチャンクヘッダサイズを加算した長さ分のデータを読み出す（Ｓ２０８）。そして、ステップＳ２０８において読み出したチャンクのデータからハッシュ値（FingerPrint）を算出する（S２０９）。
【００８０】
次に、２次重複排除処理部２０２は、ステップＳ２０９において算出したFingerPrintをもとに、チャンクデータセット１２２のチャンクの有無を確認して（Ｓ２１０）、チャンクデータセット１２２に対象となるチャンクと同一のチャンクが存在するか判定する（Ｓ２１１）。
【００８１】
ステップＳ２１１において、チャンクデータセット１２２に同一のチャンクが存在すると判定された場合には、２次重複排除処理部２０２は、変数ChunkDataSetIDに既に格納されている同一のチャンクの格納先のチャンクデータセットＩＤ（ChunkDataSetID）と同じＩＤを代入して（Ｓ２１２）、ステップＳ２２０以降の処理を実行する。
【００８２】
一方、ステップＳ２１１において、チャンクデータセット１２２に同一のチャンクが存在しないと判定された場合には、２次重複排除処理部２０２は、チャンクを格納する格納先のチャンクデータセット（ChunkDataSet）１２２を決定して、決定した該チャンクデータセット１２２のチャンクデータセットＩＤを変数ChunkDataSetIDに代入する（Ｓ２１３）。
【００８３】
そして、２次重複排除処理部２０２は、チャンクデータセット（ChunkDataSet）１２２にチャンクヘッダとチャンクデータを書き込む（Ｓ２１４）。さらに、２次重複排除処理部２０２は、ステップＳ２０９において変数FingerPrintに代入した値とステップＳ２１３において変数ChunkDataSetIDに代入した値をチャンクインデックス１２５に登録して（Ｓ２１５）、ステップＳ２２０以降の処理を実行する。
【００８４】
次に、チャンクヘッダのステータスがステータス２の場合、すなわち、重複判定実施済みであるが、チャンクデータセット１２２にチャンクが存在しない場合の処理について説明する。２次重複排除処理部２０２は、offsetの値にチャンクヘッダサイズを加算した長さ分のデータを読み出す（Ｓ２１６）。
【００８５】
そして、２次重複排除処理部２０２は、チャンクを格納する格納先のチャンクデータセット（ChunkDataSet）１２２を決定して、決定した該チャンクデータセット１２２のチャンクデータセットＩＤを変数ChunkDataSetIDに代入する（Ｓ２１７）。
【００８６】
そして、２次重複排除処理部２０２は、チャンクデータセット（ChunkDataSet）１２２にチャンクヘッダとチャンクデータを書き込む（Ｓ２１８）。さらに、２次重複排除処理部２０２は、ステップＳ２０６においてFingerPrintに代入した値と、ステップＳ２１７において変数ChunkDataSetIDに代入した値をチャンクインデックス１２５に登録して（Ｓ２１９）、ステップＳ２２０以降の処理を実行する。
【００８７】
次に、チャンクヘッダのステータスがステータス３の場合、すなわち、重複判定実施済みであり、チャンクデータセット１２２にチャンクが存在する場合の処理について説明する。２次重複排除処理部２０２は、チャンクヘッダからチャンクデータセットＩＤ（ChunkDataSetID）を取得して、変数ChunkDataSetIDに代入する（Ｓ２２４）。そして、２次重複排除処理部２０２は、ステップＳ２２０以降の処理を実行する。なお、チャンクヘッダに格納されているチャンクデータセットＩＤ（ChunkDataSetID）は、一次重複排除処理において重複排除されたデータと同一のデータであって、既に格納されているデータの格納先を示すＩＤである。
【００８８】
そして、２次重複排除処理部２０２は、コンテンツ管理テーブル１２４に、チャンク長（Length）、オフセット（Offset）、フィンガープリント（FingerPrint）、チャンクデータセットＩＤ（ChunkDataSetID）を設定する（Ｓ２２０）。
【００８９】
そして、変数Offsetの値にチャンクヘッダのサイズとチャンク長（Length）とを加算して、変数Offsetに代入する（Ｓ２２１）。
【００９０】
ステップＳ２０３〜ステップＳ２２の処理を１次重複排除済みファイルのサイズ分繰り返した後、１次重複排除済みファイルをクローズして（Ｓ２２３）、２次重複排除処理を終了する。
【００９１】
（１−５）Ｒｅａｄ処理の詳細
次に、図１２を参照して、１次重複排除処理及び２次重複排除処理が行われたデータのＲｅａｄ処理について説明する。重複排除済みデータのＲｅａｄ処理は、１次重複排除処理部２０１及び２次重複排除処理部２０２によって行われる。
【００９２】
図１２に示すように、１次重複排除処理部２０２は、まず、Ｒｅａｄ対象が２次重複排除済みのデータであるかを判定する（Ｓ３０１）。例えば、１次重複排除処理部２０２は、当該データがスタブ化されている場合に、当該データが２次重複排除済みのデータであると判定する。
【００９３】
ステップＳ３０１において、Ｒｅａｄ対象のデータが２次重複排除済みであると判定された場合には、２次重複排除済みデータのＲｅａｄ処理を実行する（Ｓ３０２）。一方、ステップＳ３０１において、Ｒｅａｄ対象のデータが２次重複排除済みではないと判定された場合には、ステップＳ３０３以降の処理を実行する。
【００９４】
図１３に、２次重複排除済みデータのＲｅａｄ処理の詳細を示す。図１３に示すように、２次重複排除処理部２０２は、コンテンツデータのコンテンツＩＤ（content ID）に対応するコンテンツ管理テーブル１２４を読み出す（Ｓ３１１）。
【００９５】
そして、２次重複排除処理部２０２は、コンテンツのチャンクの数分ステップＳ３１２〜ステップＳ３１８の処理を繰り返す。
【００９６】
まず、２次重複排除処理部２０２は、コンテンツ管理テーブル１２４からフィンガープリント（FingerPrint）を取得する（Ｓ３１３）。さらに、２次重複排除処理部２０２は、コンテンツ管理テーブル１２４からチャンクデータセットＩＤ（ChunkDataSetID）を取得する（Ｓ３１４）。
【００９７】
そして、２次重複排除処理部２０２は、ステップＳ３１３において取得したフィンガープリント（FingerPrint）をキーにして、チャンクデータセットインデックス（ChunkDataSetIndex）１２３からチャンクのチャンク長（Length）及びオフセット（Offset）を取得する（Ｓ３１５）。
【００９８】
そして、２次重複排除処理部２０２は、ステップＳ３１５において取得したチャンクデータセットのオフセット（Offset）からチャンク長（Length）分のデータを読み出す（Ｓ３１６）。そして、２次重複排除処理部２０２は、ステップＳ３１６において読み出したチャンクデータを第１ファイルシステムに書き込む（Ｓ３１７）。
【００９９】
図１２に戻り、ステップＳ３０２において２次重複排除済みのデータのRead処理が実行された後、１次重複排除処理部２０１は、１次重複排除済みファイルをReadする（Ｓ３０３）。
【０１００】
そして、ステップＳ３０３においてReadしたデータを伸長する（Ｓ３０４）。そして、データを要求したホスト装置２００等のデータ要求元に圧縮前のオリジナルデータを返却する（Ｓ３０５）。以上、重複排除済みデータのRead処理について説明した。
【０１０１】
（１−６）本実施形態の効果
以上のように、本実施の形態によれば、１次重複排除処理部２０１は、ホスト装置２００からのデータを１または２以上のチャンクに分割し、分割したチャンクを圧縮し、チャンクの圧縮率が所定の閾値より低い場合に、圧縮された該チャンクのハッシュ値を算出し、該ハッシュ値とＨＤＤ１０４に既に格納されているデータのハッシュ値とを比較して第１の重複排除処理を実行し、チャンクの圧縮率が所定の閾値より大きい場合に、圧縮された該チャンクを第１のファイルシステムに格納した後に、２次重複排除処理部２０２が、圧縮された該チャンクのハッシュ値を算出し、該ハッシュ値と既にＨＤＤ１０４に格納されているデータのハッシュ値とを比較して２次重複排除処理を実行する。
【０１０２】
これにより、重複排除処理のうち、処理負荷の小さいデータの分割処理を１次重複排除処理時に行うことができ、チャンクの圧縮率に基づいて、該チャンクを１次重複排除処理で重複排除を行うか、２次重複排除処理で重複排除処理を行うかを決定し、１次重複排除処理と２次重複排除処理のそれぞれの利点を考慮して効率的に重複排除処理を実行することが可能となる。
【０１０３】
（２）第２の実施形態
次に、図１４を参照して、第２の実施形態について説明する。以下では、上記した第１の実施形態と同様の構成については詳細な説明は省略し、第１の実施形態と異なる構成について特に詳細に説明する。計算機システムのハードウェア構成は、第１の実施形態と同様であるため、詳細な説明は省略する。
【０１０４】
（２−１）ホスト装置及びストレージ装置のソフトウェア構成
本実施形態では、図１４に示すように、ホスト装置２００’に１次重複排除処理部２０１が備えられ、ストレージ装置１００’には、２次重複排除処理部２０２が備えられた構成となっている。ホスト装置２００’は、バックアップサーバ等のサーバ、他のストレージ装置であってもよい。
【０１０５】
このように、ホスト装置２００’において１次重複排除処理を実行することにより、データのバックアップ時に、ホスト装置２００’からストレージ装置１００’へのデータ量を削減することができる。例えば、ホスト装置２００’の処理能力が高く、ホスト装置２００’とストレージ装置１００’との間の転送能力が低い場合には、本実施形態の如く構成することが好ましい。
【符号の説明】
【０１０６】
１００    ストレージ装置
１０１    仮想サーバ
１０３    システムメモリ
１０５    ファイバチャネルポート
１０６    ファイバチャネルケーブル
１１０    ディスクアレイ装置
１２１    スタブファイル
１２２    チャンクデータセット
１２３    チャンクデータセットインデックス
１２４    コンテンツ管理テーブル
１２５    チャンクインデックス
２００    ホスト装置
２０１    １次重複排除処理部
２０２    ２次重複排除処理部
２０３    ファイルシステム管理部
【図１】
2014030252.tif 000003
【図２】
2014030252.tif 000004
【図３】
2014030252.tif 000005
【図４】
2014030252.tif 000006
【図５】
2014030252.tif 000007
【図６】
2014030252.tif 000008
【図７】
2014030252.tif 000009
【図８】
2014030252.tif 000010
【図９】
2014030252.tif 000011
【図１０】
2014030252.tif 000012
【図１１】
2014030252.tif 000013
【図１２】
2014030252.tif 000014
【図１３】
2014030252.tif 000015
【図１４】
2014030252.tif 000016
【手続補正書】
【提出日】平成28年4月8日(2016.4.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１記憶領域と第２記憶領域とを提供する記憶装置と、
前記記憶装置へのデータの入出力を制御する制御部と、
を備え、
前記制御部は、
受信したデータを１または２以上のチャンクに分割し、
分割した前記チャンクを圧縮し、
圧縮率が閾値以下のチャンクに対し、前記第１記憶領域に格納せずに、圧縮された前記チャンクのハッシュ値を算出し、前記ハッシュ値と既に前記第２記憶領域に格納されている他のデータのハッシュ値とを比較して、同一チャンクがあると判定された場合には、同一チャンクについて前記第１記憶領域に格納せず、同一チャンクがあると判定されなかった場合には前記第１記憶領域に格納する第１の重複排除処理を実行し、
圧縮率が閾値より大きいチャンクに対し、前記第１記憶領域に圧縮された前記チャンクを格納した後に、前記圧縮された前記チャンクを前記第１記憶領域から読み出し、圧縮された前記チャンクのハッシュ値を算出し、該ハッシュ値と既に前記第２記憶領域に格納されている他のデータのハッシュ値とを比較して、同一チャンクがあると判定された場合には、同一チャンクについて前記第２記憶領域に格納せず、同一チャンクがあると判定されなかった場合には前記第２記憶領域に格納する第２の重複排除処理を実行する
ことを特徴とする、ストレージ装置。
【請求項２】
前記制御部は、
前記第１記憶領域と第１のファイルシステムとを対応付け、前記第２記憶領域と第２のファイルシステムとを対応付け、
前記第１の重複排除処理により重複排除できないチャンクと、圧縮率が前記閾値より大きいチャンクと、を第１のファイルシステムに格納し、
前記第１のファイルシステムに格納したチャンクに対して前記第２の重複排除処理を実行した前記チャンクを第２のファイルシステムに格納する
ことを特徴とする、請求項１に記載のストレージ装置。
【請求項３】
前記制御部は、
圧縮した前記チャンクに前記第１の重複排除処理を実行したかを示す情報を含む圧縮ヘッダを付して前記第１のファイルシステムに格納し、
前記圧縮ヘッダを参照して、前記第１の重複排除処理を実行していない場合に、前記チャンクに前記第２の重複排除処理を実行する
ことを特徴とする、請求項２に記載のストレージ装置。
【請求項４】
前記制御部は、
前記チャンクに前記第１の重複排除処理を実行していない場合に、前記圧縮ヘッダに第１のフラグを設定し、
前記チャンクに前記第１の重複排除処理を実行し、当該チャンクのハッシュ値と同一のハッシュ値である他のデータが前記第２記憶領域に格納されていない場合に、前記圧縮ヘッダに第２のフラグを設定し、
前記チャンクに前記第１の重複排除処理を実行し、当該チャンクのハッシュ値と同一のハッシュ値である他のデータが前記第２記憶領域に記憶されている場合に、前記圧縮ヘッダに第３のフラグを設定する
ことを特徴とする、請求項３に記載のストレージ装置。
【請求項５】
前記制御部は、
前記圧縮ヘッダに前記第１のフラグを設定した場合に、前記チャンク及び該チャンクの圧縮ヘッダを前記第１のファイルシステムに格納し、
前記圧縮ヘッダに前記第２のフラグを設定した場合に、前記チャンク及び該チャンクの圧縮ヘッダを前記第１のファイルシステムに格納し、
前記圧縮ヘッダに前記第３のフラグを設定した場合に、前記チャンクの圧縮ヘッダのみ前記第１のファイルシステムに格納する
ことを特徴とする、請求項４に記載のストレージ装置。
【請求項６】
前記制御部は、
前記圧縮ヘッダに前記第１のフラグが設定されている場合に、前記チャンクに前記第２の重複排除処理を実行し、
前記圧縮ヘッダに前記第２のフラグが設定されている場合に、前記チャンクを前記第２記憶領域に格納し、
前記圧縮ヘッダに前記第３のフラグが設定されている場合に、前記チャンクの前記第２記憶領域の格納先を取得する
ことを特徴とする、請求項４に記載のストレージ装置。
【請求項７】
第１記憶領域と第２記憶領域とを提供する記憶装置と、前記記憶装置へのデータの入出力を制御する制御部と、を備えたストレージ装置におけるデータ管理方法であって、
前記制御部が、受信したデータを１または２以上のチャンクに分割し、分割した前記チャンクを圧縮する第１のステップと、
前記制御部が、圧縮率が閾値以下のチャンクに対して、前記第１記憶領域に格納せずに、圧縮された前記チャンクのハッシュ値を算出し、前記ハッシュ値と既に前記第２記憶領域に格納されている他のデータのハッシュ値とを比較して、同一チャンクがあると判定された場合には、同一チャンクについて前記第１記憶領域に格納せず、同一チャンクがあると判定されなかった場合には前記第１記憶領域に格納する第１の重複排除処理を実行する第２のステップと、
前記制御部が、圧縮率が閾値より大きいチャンクに対し、前記第１記憶領域に圧縮された前記チャンクを格納した後に、前記圧縮された前記チャンクを前記第１記憶領域から読み出し、圧縮された前記チャンクのハッシュ値を算出し、該ハッシュ値と既に前記第２記憶領域に格納されている他のデータのハッシュ値とを比較して、同一チャンクがあると判定された場合には、同一チャンクについて前記第２記憶領域に格納せず、同一チャンクがあると判定されなかった場合には前記第２記憶領域に格納する第２の重複排除処理を実行する第３のステップと
を含むことを特徴とする、データ管理方法。
【請求項８】
前記第１記憶領域と第１のファイルシステムとが対応付けられ、前記第２記憶領域と第２のファイルシステムとが対応付けられており、
前記第２のステップにおいて、前記制御部が前記第１の重複排除処理により重複排除できないチャンクと、圧縮率が前記閾値より大きいチャンクとを第１のファイルシステムに格納する第４のステップと、
前記第３のステップにおいて、前記制御部が前記第１のファイルシステムに格納したチャンクに対して前記第２の重複排除処理を実行した前記チャンクを第２のファイルシステムに格納する第５のステップと
を含むことを特徴とする、請求項７に記載のデータ管理方法。
【請求項９】
前記第４のステップにおいて、前記制御部が圧縮した前記チャンクに前記第１の重複排除処理を実行したかを示す情報を含む圧縮ヘッダを付して前記第１のファイルシステムに格納する第６のステップと、
前記圧縮ヘッダを参照して、前記第１の重複排除処理を実行していない場合に、前記チャンクに前記第２の重複排除処理を実行する第７のステップと
を含むことを特徴とする、請求項８に記載のデータ管理方法。
【請求項１０】
前記制御部が
前記チャンクに前記第１の重複排除処理を実行していない場合に、前記圧縮ヘッダに第１のフラグを設定し、
前記チャンクに前記第１の重複排除処理を実行し、当該チャンクのハッシュ値と同一のハッシュ値である他のデータが前記第２記憶領域に格納されていない場合に、前記圧縮ヘッダに第２のフラグを設定し、
前記チャンクに前記第１の重複排除処理を実行し、当該チャンクのハッシュ値と同一のハッシュ値である他のデータが前記第２記憶領域に記憶されている場合に、前記圧縮ヘッダに第３のフラグを設定する
第８のステップを含むことを特徴とする、請求項９に記載のデータ管理方法。
【請求項１１】
前記制御部が、
前記圧縮ヘッダに前記第１のフラグを設定した場合に、前記チャンク及び該チャンクの圧縮ヘッダを前記第１のファイルシステムに格納し、
前記圧縮ヘッダに前記第２のフラグを設定した場合に、前記チャンク及び該チャンクの圧縮ヘッダを前記第１のファイルシステムに格納し、
前記圧縮ヘッダに前記第３のフラグを設定した場合に、前記チャンクの圧縮ヘッダのみ前記第１のファイルシステムに格納する
第９のステップを含むことを特徴とする、請求項１０に記載のデータ管理方法。
【請求項１２】
前記制御部は、
前記圧縮ヘッダに前記第１のフラグが設定されている場合に、前記チャンクに前記第２の重複排除処理を実行し、
前記圧縮ヘッダに前記第２のフラグが設定されている場合に、前記チャンクを前記第２記憶領域に格納し、
前記圧縮ヘッダに前記第３のフラグが設定されている場合に、前記チャンクの前記第２記憶領域の格納先を取得する
第１０のステップを含むことを特徴とする、請求項１０に記載のデータ管理方法。
【国際調査報告】
2014030252.tif 000017
2014030252.tif 000018
2014030252.tif 000019
2014030252.tif 000020