(57)【要約】【課題】本発明の記憶制御装置は、先にハッシュコード同士を比較することにより、データ同士を比較する対象を絞り込み、重複データを高速に検出する。【解決手段】ハッシュ値設定部７は、ホスト３から受信されるデータにハッシュコードを設定する。論理ボリューム２Ａにはハッシュコード付きのデータが記憶される。マイクロプロセッサ部４は、比較対象の各データについて、それぞれのハッシュコード同士を比較する。ハッシュコードが一致する場合、データ比較部６は、対象のデータ同士を比較し、重複データであるか否かを判定する。重複データが検出された場合、マイクロプロセッサ部４は、重複データを排除する。【選択図】図１
2009251725.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータとの間でデータ通信を行うための第１通信制御部と、記憶装置との間でデータ通信を行うための第２通信制御部と、前記第１通信制御部と前記第２通信制御部との間のデータ送受信に使用されるキャッシュメモリと、前記第１通信制御部と前記第２通信制御部及び前記キャッシュメモリをそれぞれ制御するための制御部とを備える記憶制御装置であって、
他のデータと一致するか否かを一次判定するための判定用データを、各データにそれぞれ設定するための判定用データ設定部と、
複数の所定データが重複するデータであるか否かを検出するための重複データ検出部であって、前記各所定データのそれぞれに設定される前記各判定用データを比較することにより、前記各所定データが一致するか否かを一次判定する一次判定部と、前記一次判定部により前記各所定データが一致すると一次判定された場合には、前記各所定データをそれぞれ比較して前記各所定データが重複するデータであるか否かを二次判定する二次判定部とを備える、重複データ検出部と、
前記各所定データが前記重複するデータであると二次判定された場合には、前記重複するデータについて予め設定される所定処理を実施する重複データ処理部と、
を備え、
少なくとも前記判定用データ設定部と前記二次判定部とは、前記制御部とは別の専用回路として構成される、記憶制御装置。
【請求項２】
前記重複データ検出部は、前記各所定データが前記キャッシュメモリにそれぞれ転送された場合に、前記各所定のデータにそれぞれ設定される前記各判定用データを比較して前記一次判定を実行し、前記各所定データが一致すると一次判定された場合には、前記各所定データを前記キャッシュメモリからそれぞれ読み出して比較することにより、前記各所定データが前記重複するデータであるか否かを二次判定する、
請求項１に記載の記憶制御装置。
【請求項３】
前記重複データ処理部は、前記重複するデータのうち一方のデータのみを保存し、前記重複するデータのうち他方のデータを消去させる、請求項１または請求項２のいずれかに記載の記憶制御装置。
【請求項４】
前記重複データ処理部は、前記重複するデータのうち一方のデータのみを保存し、前記重複するデータのうち他方のデータには前記一方のデータへのリンク情報を設定する、請求項１または請求項２のいずれかに記載の記憶制御装置。
【請求項５】
前記重複データ処理部は、前記各所定データが前記重複するデータでは無い場合に、前記各所定データのうちいずれか新しい方のデータを所定の記憶領域に転送させる、請求項１または請求項２のいずれかに記載の記憶制御装置。
【請求項６】
前記判定用データ設定部は、前記第１通信制御部または第２通信制御部のいずれか一方または両方に設けられており、
前記一次判定部は、前記制御部に設けられており、
前記二次判定部は、前記第１通信制御部、前記第２通信制御部、前記キャッシュメモリ、前記制御部のうちいずれか一つまたは複数に設けられている、
請求項１〜請求項５のいずれかに記載の記憶制御装置。
【請求項７】
前記判定用データ設定部による前記判定用データの設定と前記重複データ検出部による前記重複するデータの検出と前記重複データ処理部による前記所定処理の実行とは、前記記憶装置単位でそれぞれ実行される、
請求項１〜請求項６のいずれかに記載の記憶制御装置。
【請求項８】
前記各所定データは、前記ホストコンピュータから受信される複数のデータ、あるいは、前記記憶装置から読み出される複数のデータ、あるいは、前記ホストコンピュータから受信されるデータと前記記憶装置から読み出されるデータ、のいずれかである、請求項１〜請求項７のいずれかに記載の記憶制御装置。
【請求項９】
ホストコンピュータと記憶装置との間のデータ通信を制御する記憶制御装置を用いて、重複したデータを検出するための方法であって、
他のデータと一致するか否かを一次判定するための判定用データを、専用回路を用いて、各データにそれぞれ設定させるステップと、
比較対象となる複数の所定データをそれぞれキャッシュメモリに転送して記憶させるステップと、
前記各所定データのそれぞれについて生成される各判定用データが一致するか否かを比較することにより、一次判定を行うステップと、
前記判定用データが一致すると一次判定された場合に、前記各所定データを比較用回路に入力することにより比較して、前記各所定データが重複するデータであるか否かを二次判定するステップと、
前記各所定データが前記重複するデータであると二次判定された場合に、予め設定される所定処理を、前記各所定データのいずれか一方または両方に実施するステップと、
をそれぞれ実行する、記憶制御装置を用いた重複データ検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶制御装置及び記憶制御装置を用いた重複データ検出方法。
【背景技術】
【０００２】
企業等では、比較的大規模な記憶制御装置を使用することにより、日々増大するデータを管理している。そのような記憶制御装置として、チャネルアダプタ、メモリアダプタ及びプロセッサアダプタ間で、データをＤＭＡ（Direct Memory Access）転送できるようにした装置も知られている（特許文献１）。
【０００３】
記憶制御装置は、重複するデータも多数管理している。重複データとは、例えば、オリジナルファイルとコピーファイルのように、その内容が全く同一のデータである。重複データが多数存在するほど、記憶制御装置の有する記憶領域は無駄に使用されることになり、記憶制御装置の運用コストが増大する。また、多数の重複データが存在するために、ユーザは、必要とするデータへ直ちにアクセスするのが難しい。そこで、ハッシュ値に基づいて重複データであるか否かを判定し、重複データの場合は保存しないようにした技術も提案されている（特許文献２）。
【特許文献１】特開２００５−２２８２４５号公報
【特許文献２】特開２００７−３０５１２２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
前記第２の文献に示される従来技術では、ハッシュ値に基づいて重複データを排除している。しかし、その従来技術では、マイクロプロセッサが、比較対象のデータをマイクロプロセッサ内のローカルメモリに読み込んで、データを比較する。重複データの検出及び重複データの排除のためにマイクロプロセッサがそれぞれ使用されるため、記憶制御装置の応答性能が低下する。
【０００５】
本発明は、上記の問題点に鑑みてなされたもので、その目的は、応答性能の低下を抑制して、重複データの検出及び排除を行うことができるようにした、記憶制御装置及び記憶制御装置を用いた重複データ検出方法を提供することにある。本発明の更なる目的は、後述する実施形態の記載から明らかになるであろう。
【課題を解決するための手段】
【０００６】
上記課題を解決すべく、本発明の第１観点に従う記憶制御装置は、ホストコンピュータとの間でデータ通信を行うための第１通信制御部と、記憶装置との間でデータ通信を行うための第２通信制御部と、第１通信制御部と第２通信制御部との間のデータ送受信に使用されるキャッシュメモリと、第１通信制御部と第２通信制御部及びキャッシュメモリをそれぞれ制御するための制御部とを備える記憶制御装置であって、他のデータと一致するか否かを一次判定するための判定用データを、各データにそれぞれ設定するための判定用データ設定部と、複数の所定データが重複するデータであるか否かを検出するための重複データ検出部であって、各所定データのそれぞれに設定される各判定用データを比較することにより、各所定データが一致するか否かを一次判定する一次判定部と、一次判定部により各所定データが一致すると一次判定された場合には、各所定データをそれぞれ比較して各所定データが重複するデータであるか否かを二次判定する二次判定部とを備える、重複データ検出部と、各所定データが重複するデータであると二次判定された場合には、重複するデータについて予め設定される所定処理を実施する重複データ処理部と、を備え、少なくとも判定用データ設定部と二次判定部とは、制御部とは別の専用回路として構成される。
【０００７】
第２観点では、第１観点において、重複データ検出部は、各所定データがキャッシュメモリにそれぞれ転送された場合に、各所定のデータにそれぞれ設定される各判定用データを比較して一次判定を実行し、各所定データが一致すると一次判定された場合には、各所定データをキャッシュメモリからそれぞれ読み出して比較することにより、各所定データが重複するデータであるか否かを二次判定する。
【０００８】
第３観点では、第１観点または第２観点のいずれかにおいて、重複データ処理部は、重複するデータのうち一方のデータのみを保存し、重複するデータのうち他方のデータを消去させる。
【０００９】
第４観点では、第１観点または第２観点のいずれかにおいて、重複データ処理部は、重複するデータのうち一方のデータのみを保存し、重複するデータのうち他方のデータには一方のデータへのリンク情報を設定する。
【００１０】
第５観点では、第１観点または第２観点のいずれかにおいて、重複データ処理部は、各所定データが重複するデータでは無い場合に、各所定データのうちいずれか新しい方のデータを所定の記憶領域に転送させる。
【００１１】
第６観点では、第１観点〜第５観点のいずれかにおいて、判定用データ設定部は、第１通信制御部または第２通信制御部のいずれか一方または両方に設けられており、一次判定部は、制御部に設けられており、二次判定部は、第１通信制御部、第２通信制御部、キャッシュメモリ、制御部のうちいずれか一つまたは複数に設けられている。
【００１２】
第７観点では、第１観点〜第６観点のいずれかにおいて、判定用データ設定部による判定用データの設定と重複データ検出部による重複するデータの検出と重複データ処理部による所定処理の実行とは、記憶装置単位でそれぞれ実行される。
【００１３】
第８観点では、第１観点〜第７観点のいずれかにおいて、各所定データは、ホストコンピュータから受信される複数のデータ、あるいは、記憶装置から読み出される複数のデータ、あるいは、ホストコンピュータから受信されるデータと記憶装置から読み出されるデータ、のいずれかである。
【００１４】
本発明の第９観点に従う方法は、ホストコンピュータと記憶装置との間のデータ通信を制御する記憶制御装置を用いて、重複したデータを検出するための方法であって、他のデータと一致するか否かを一次判定するための判定用データを、専用回路を用いて、各データにそれぞれ設定させるステップと、比較対象となる複数の所定データをそれぞれキャッシュメモリに転送して記憶させるステップと、各所定データのそれぞれについて生成される各判定用データが一致するか否かを比較することにより、一次判定を行うステップと、判定用データが一致すると一次判定された場合に、各所定データを比較用回路に入力することにより比較して、各所定データが重複するデータであるか否かを二次判定するステップと、各所定データが重複するデータであると二次判定された場合に、予め設定される所定処理を、各所定データのいずれか一方または両方に実施するステップと、をそれぞれ実行する。
【００１５】
本発明の各部、各ステップの少なくとも一部は、コンピュータプログラムにより実現可能な場合がある。このようなコンピュータプログラムは、例えば、記憶デバイスに記憶されて、あるいは、通信ネットワークを介して、流通される。
【発明を実施するための最良の形態】
【００１６】
図１は、本発明の実施形態の概要を示す説明図である。図１に示す構成は、本発明の理解及び実施に必要な程度で本発明の概要を示しており、本発明の範囲は図１に示すものに限定されない。
【００１７】
図１に示す情報処理システムは、例えば、コントローラ１と、記憶装置ユニット２と、ホストコンピュータ３とを備える。以下の説明では、ホストコンピュータをホストと省略して記載する。
【００１８】
先に、ホスト３及び記憶装置ユニット（図中「ＨＤＵ」と略記。ＨＤＵとは、Hard Disk drive Unitの略。）２を説明し、最後にコントローラ１を説明する。なお、以下の説明では、記憶装置ユニットをＨＤＵと略記する。
【００１９】
ホスト３は、例えば、サーバコンピュータやメインフレームコンピュータ、パーソナルコンピュータ等のコンピュータ装置として構成される。ホスト３は、例えば、「上位装置」と呼ぶこともできる。ホスト３は、例えば、ＦＣ＿ＳＡＮ（Fibre Channel_Storage Area Network）やＩＰ＿ＳＡＮ（Internet Protocol_SAN）のような通信経路を介してコントローラ１に接続される。ホスト３は、コントローラ１を介して、所望の論理ボリューム２Ａにアクセスし、データの読み書きを行う。
【００２０】
ＨＤＵ２は、「記憶装置」としての論理ボリューム２Ａを、一つまたは複数保持する装置である。ＨＤＵ２は、ＦＣ＿ＳＡＮやＩＰ＿ＳＡＮのような通信経路を介して、コントローラ１に接続されている。図２で後述するように、例えばハードディスクドライブやフラッシュメモリデバイス等の物理的な記憶装置を用いて、論理的な記憶装置である論理ボリューム２Ａが生成される。
【００２１】
「記憶制御装置」としてのコントローラ１は、例えば、図３で後述するように、ホスト３との間で通信を行うための回路（ＦＥＰＫ１１０）と、ＨＤＵ２との間で通信を行うための回路（ＢＥＰＫ１２０）と、データをキャッシュする回路（ＣＭＰＫ１４０）と、制御回路（ＭＰＰＫ１３０）等を備えて構成することができる。
【００２２】
図１では、本発明に関してコントローラ１が実現する機能に着目する。コントローラ１は、例えば、「制御部」としてのマイクロプロセッサ部４と、キャッシュメモリ５と、「二次判定部」としてのデータ比較部６と、「判別用データ設定部」としてのハッシュ値設定部７と、を備える。
【００２３】
マイクロプロセッサ部４は、例えば、キャッシュディレクトリ４Ａと、ハッシュ値比較部４Ｂと、重複データ排除処理部４Ｃとを備える。キャッシュディレクトリ４Ａは、キャッシュメモリ５のどの領域にどのデータが記憶されているか等を管理する。キャッシュメモリ５は、データ及びそのデータのハッシュ値（図中、ＨＣと略記）を記憶する。キャッシュディレクトリには、ハッシュ値も管理される。
【００２４】
「一次判定部」としてのハッシュ値比較部４Ｂは、比較対象の複数の所定データについて、それぞれに設定されているハッシュ値が一致するか否かを比較する。ハッシュ値が一致する場合、それらの各所定データは、データ比較部６によって検査される。なお、ハッシュ値が一致するとは、比較対象の複数の所定データが重複したデータである可能性が高いことを意味する。従って、２つのハッシュ値が完全に一致する場合のほかに、２つのハッシュ値が近似する場合も含めることができる。
【００２５】
検査の結果、各所定データの内容が一致しており、重複データであると判定されると、「重複データ処理部」としての重複データ排除処理部４Ｃは、重複データに対して、予め設定されている所定処理を実施する。所定処理としては、後述のように、例えば、重複した２つのデータのうちいずれか一方のデータを破棄する処理、重複した２つのデータのうち新しい方のデータの中身を古い方のデータへのリンクに書き換える処理、重複していないデータについてのみコピー等を行う処理、を挙げることができる。
【００２６】
キャッシュメモリ５は、ホスト３から受信したデータや論理ボリューム２Ａから読み出したデータを、一時的に記憶するためのメモリである。上述の通り、キャッシュメモリ５のどこにどのようなデータが記憶されているかは、キャッシュディレクトリ４Ａによって管理されている。
【００２７】
データ比較部６は、例えば、データ比較用バッファ６Ａと、データ比較回路６Ｂとを備えて構成される。データ比較用バッファ６Ａは、比較対象のデータを一時的に記憶するためのメモリである。データ比較回路６Ｂは、比較対象の各データが一致するか否かを、所定サイズ単位で比較し、その比較結果を出力する回路である。比較回路６Ｂによる比較結果は、重複データ排除処理部４Ｃに入力される。
【００２８】
ハッシュ値設定部７は、ホスト３からデータを受信する回路（例えば、ＦＥＰＫ１１０）や論理ボリューム２Ａからデータを受信する回路（例えば、ＢＥＰＫ１２０）にそれぞれ設けることができる。ハッシュ値設定部７は、予め用意されたハッシュ関数に受信データを入力することにより、その受信データのハッシュ値を算出する。
【００２９】
次に、図１に示す構成の動作例を説明する。ホスト３が論理ボリューム２Ａを指定してライトコマンドを発行すると、ホスト３側に設けられているハッシュ値設定部７は、ホスト３から受信したライトデータにハッシュ値を設定する。キャッシュメモリ５は、ハッシュ値の設定されたデータを記憶する。キャッシュメモリ５に記憶されたハッシュ値付きのデータは、論理ボリューム２Ａに書き込まれる。
【００３０】
所定タイミングが到来すると、コントローラ１は、比較対象の複数の所定データについて、重複したデータであるか否かを判定する。所定タイミングとしては、例えば、ユーザが実行を指示した場合、データのバックアップ時、データのリモートコピー時等を挙げることができる。また、例えば、前回の判定処理から所定時間が経過した場合、前回の判定処理から所定量以上のデータが論理ボリューム２Ａに書き込まれた場合、予め指定された時刻になった場合等のように、コントローラ１が自動的に、重複データの判定時期を決定する構成でもよい。
【００３１】
マイクロプロセッサ部４のハッシュ値比較部４Ｂは、比較対象の各所定データにそれぞれ対応付けられているハッシュ値を比較することにより、各所定データが重複データである可能性が高いか否かを判定する。
【００３２】
ハッシュ値比較部４Ｂによって検査の必要ありと判定された場合、各所定データはデータ比較部６によって比較され、重複データであるか否かが検査される。検査結果は、データ比較部６からマイクロプロセッサ部４に通知される。重複データ排除処理部４Ｃは、重複データであると判定されたデータについて、予め設定される所定処理を実施する。所定処理についてはさらに後述する。
【００３３】
このように構成される本実施形態では、ハッシュ値に基づく一次判定によってデータ比較を行う対象を絞り込み、重複データについて所定処理を実施する。従って、データ比較部６で比較するデータの範囲を絞り込むことができ、データ比較部６によって重複データであると判定された場合にのみ、マイクロプロセッサ部４によって所定処理を実施させることができる。この結果、本実施形態では、マイクロプロセッサ部４の負荷を軽減することができ、応答性能の低下を抑制しつつ重複データを検出して所定処理を実施することができる。以下、本発明の実施例を詳細に説明する。
【実施例１】
【００３４】
図２は、本実施例による情報処理システムの全体概要を示す説明図である。このシステムは、例えば、コントローラ１０と、ＨＤＵ２０と、ホスト３０とを備える。コントローラ１０は図１中のコントローラ１に、ＨＤＵ２０は図１中のＨＤＵ２に、ホスト３０は図１中のホスト３に、それぞれ対応する。
【００３５】
ホスト３０とコントローラ１０とは、通信ネットワークＣＮ１０を介して双方向通信可能に接続されている。ＨＤＵ２０とコントローラ１０とは、通信ネットワークＣＮ２０を介して双方向通信可能に接続されている。各通信ネットワークＣＮ１０，ＣＮ２０は、例えば、ＦＣ＿ＳＡＮやＩＰ＿ＳＡＮとして構成される。
【００３６】
複数のコントローラ１０を連携させて使用することもできる。図２に示すように、各コントローラ１０内の各スイッチ回路１５１を通信経路ＣＮ３０を介してそれぞれ接続することにより、一方のコントローラ１０が他方のコントローラ１０内のデータについて処理を行うこともできる。例えば、図中左側のコントローラ１０に障害が生じた場合、図中右側のコントローラ１０が、左側のコントローラ１０の管理下にあるデータにアクセスし、重複データの検出処理や重複データの排除処理等を行うことができる。コントローラ１０の詳細は、図３で述べる。
【００３７】
ＨＤＵ２０は、複数のディスクドライブ２１０を備える。以下、ハードディスクドライブを例に挙げて説明するが、本発明は、ハードディスクドライブに限定されない。
【００３８】
物理的記憶装置としては、例えば、ハードディスクデバイス、半導体メモリデバイス、光ディスクデバイス、光磁気ディスクデバイス、磁気テープデバイス、フレキシブルディスクデバイス等のデータを読み書き可能な種々のデバイスを利用可能である。ハードディスクデバイスを用いる場合、例えば、ＦＣ（Fibre Channel）ディスク、ＳＣＳＩ（Small Computer System Interface）ディスク、ＳＡＴＡディスク、ＡＴＡ（AT Attachment）ディスク、ＳＡＳ（Serial Attached SCSI）ディスク等を用いることができる。
半導体メモリデバイスを用いる場合、例えば、フラッシュメモリ、ＦｅＲＡＭ（Ferroelectric Random Access Memory）、ＭＲＡＭ（MagnetoresistiveRandom Access Memory）、相変化メモリ（Ovonic Unified Memory）、ＲＲＡＭ（Resistance RAM）」等の種々のメモリデバイスを利用可能である。
【００３９】
複数のディスクドライブ２１０によって一つのＲＡＩＤグループ（パリティグループとも呼ばれる）２１１が形成される。ＲＡＩＤグループ２１１は、各ディスクドライブ２１０の有する物理的記憶領域をＲＡＩＤレベルに従って仮想化したものである。
【００４０】
ＲＡＩＤグループ２１１の有する物理的な記憶領域には、所定サイズまたは任意サイズで、論理ボリューム２１２を一つまたは複数設けることができる。論理ボリューム２１２を図中では「ＬＵ」と表示する。論理ボリューム２１２は、論理的記憶デバイスと呼ぶことができる。
【００４１】
図３は、コントローラ１０の詳細を示すブロック図である。コントローラ１０は、それぞれ後述するように、複数種類の制御パッケージ１１０，１２０，１３０，１４０，１５０を備えている。
【００４２】
フロントエンドパッケージ１１０（図中、ＦＥＰＫ１１０）は、ホスト３０との間の通信を担当する制御パッケージであり、「第１通信制御部」に該当する。ＦＥＰＫ１１０は、チャネルアダプタと呼ぶこともできる。ＦＥＰＫ１１０は、例えば、ローカルルータ１１１（図中、ＬＲ１１１）と、プロトコル制御チップ１１２（図中、ＰＥ１１２）と、チャネルメモリ１１３（図中、ＨＭ１１３）とを備えて構成される。
【００４３】
ローカルルータ１１１は、ＦＥＰＫ１１０の動作を制御する。プロトコル制御チップ１１２は、ホスト３０と通信を行う。チャネルメモリ１１３は、ホスト３０から受信したデータやキャッシュメモリ１４２から読み込んだデータ等を一時的に記憶する。
【００４４】
ローカルルータ１１１は、ハッシュコード生成回路１１４（図中、ＨＥ１１４）と、比較回路１１５（図中、ＣＯＥ１１５）と、比較バッファ１１６（図中、ＣＯＢ１１６）とをそれぞれ備えることができる。ハッシュコード生成回路１１４は、図１に示すホスト側のハッシュ値設定部７に該当する。比較回路１１５は、図１中のデータ比較回路６Ｂに該当する。比較バッファ１１６は、図１中のデータ比較用バッファ６Ａに該当する。
【００４５】
ハッシュコード生成回路１１４は、ホスト３０から受信したデータについて、所定サイズ毎にハッシュコード（ハッシュ値とも呼ぶ）をそれぞれ算出し、算出されたハッシュコードをデータに対応付ける。比較バッファ１１６には、比較対象となる２つのデータのうち一方のデータが格納される。比較回路１１５は、比較バッファ１１６から読み出したデータとキャッシュメモリ１４２から読み出したデータとを比較し、その比較結果を出力する回路である。
【００４６】
バックエンドパッケージ１２０（図中、ＢＥＰＫ１２０）は、ＨＤＵ２０内の各ディスクドライブ２１０と通信を行うための制御パッケージであり、「第２通信制御部」に該当する。バックエンドパッケージ１２０は、ディスクアダプタと呼ぶこともできる。バックエンドパッケージ１２０は、フロントエンドパッケージ１１０と同様に構成することができる。
【００４７】
つまり、ＢＥＰＫ１２０は、例えば、ローカルルータ１２１（図中、ＬＲ１２１）と、プロトコル制御チップ１２２（図中、ＰＥ１２２）と、チャネルメモリ１２３（図中、ＨＭ１２３）とを備えて構成される。
【００４８】
ローカルルータ１１１は、ＢＥＰＫ１２０の動作を制御する。プロトコル制御チップ１２２は、ディスクドライブ２１０と通信を行う。チャネルメモリ１２３は、ディスクドライブ２１０から読み出したデータやキャッシュメモリ１４２から読み込んだデータ等を一時的に記憶する。
【００４９】
ＦＥＰＫ１１０で述べたと同様に、ローカルルータ１２１は、ハッシュコード生成回路１２４（図中、ＨＥ１２４）と、比較回路１２５（図中、ＣＯＥ１２５）と、比較バッファ１２６（図中、ＣＯＢ１２６）とをそれぞれ備える。ハッシュコード生成回路１２４は、図１に示す論理ボリューム側のハッシュ値設定部７に該当する。比較回路１２５は、図１中のデータ比較回路６Ｂに該当する。比較バッファ１２６は、図１中のデータ比較用バッファ６Ａに該当する。
【００５０】
ハッシュコード生成回路１２４は、ディスクドライブ２１０から読み出したたデータについて、所定サイズ毎にハッシュコードをそれぞれ算出し、算出されたハッシュコードをデータに対応付ける。比較バッファ１２６には、比較対象となる２つのデータのうち一方のデータが格納される。比較回路１２５は、比較バッファ１２６から読み出したデータとキャッシュメモリ１４２から読み出したデータとを比較し、その比較結果を出力する回路である。
【００５１】
なお、図３に示す例では、ＦＥＰＫ１１０及びＢＥＰＫ１２０のそれぞれが、ハッシュコードの生成機能とデータ比較機能とを備えている場合を示す。必要に応じて、ＦＥＰＫ１１０内の機能またはＢＥＰＫ１２０内の機能のいずれかが使用される。
【００５２】
マイクロプロセッサパッケージ１３０（図中、ＭＰＰＫ１３０）は、コントローラ１０内の動作を制御するための制御パッケージであり、「制御部」に該当する。マイクロプロセッサパッケージ１３０は、図１中のマイクロプロセッサ部４に対応する。ＭＰＰＫ１３０は、例えば、マイクロプロセッサ１３１（図中、ＭＰ１３１）と、プロセッサメモリコントローラ１３２（図中、ＭＣ１３２）と、プロセッサメモリ１３３（図中、ＬＭ１３３）とを備えて構成される。
【００５３】
マイクロプロセッサ１３１は、所定のプログラムコードを読み込んで実行することにより、重複データを排除する処理やコピー処理等を実施する。プロセッサメモリコントローラ１３２は、プロセッサメモリ１３３を制御する。
【００５４】
キャッシュメモリパッケージ１４０（図中、ＣＭＰＫ１４０）は、ホスト３０やディスクドライブ２１０から受信したデータを一時的に記憶するためのパッケージである。キャッシュメモリパッケージ１４０は、例えば、キャッシュメモリコントローラ１４１（図中、ＣＭＣ１４１）と、キャッシュメモリ１４２（図中、ＣＭ１４２）とを備える。キャッシュメモリコントローラ１４１は、キャッシュメモリ１４２を制御する。
【００５５】
スイッチパッケージ１５０（以下、ＳＷＰＫ１５０とも呼ぶ）は、各パッケージ１１０，１２０，１３０，１４０をそれぞれ接続させるためのパッケージである。スイッチパッケージ１５０は、スイッチ回路１５１を備えている。
【００５６】
ＨＤＵ２０の構成を説明する。各ディスクドライブ２１０は、ディスクドライブスイッチ２２０（図中、ＳＳＷ２２０）にそれぞれ接続されている。バックエンドパッケージ１２０は、ディスクドライブスイッチ２２０を介して、所望のディスクドライブ２１０にアクセスし、データの読み書きを行うことができる。各ディスクドライブ２１０には、二つの独立した経路からアクセスすることができる。一方の経路に障害が発生した場合でも、バックエンドパッケージ１２０は、他方の経路から各ディスクドライブ２１０にアクセスすることができる。
【００５７】
なお、図３に示すように、一つのコントローラ１０は、それぞれ同一機能のパッケージを複数ずつ備えている。つまり、コントローラ１０の有する各機能（ホストとの通信機能、ディスクドライブとの通信機能、キャッシュ機能、制御機能、スイッチ機能）は、それぞれ冗長化されている。従って、同一機能を実現するいずれか一方のパッケージに障害が発生した場合でも、他方のパッケージを用いて処理を実行することができる。
【００５８】
図４は、フロントエンドパッケージ１１０の詳細な構成を示すブロック図である。なお、ＤＭＡコントローラ１１０５の詳細な構成は、図１０で後述する。図４において、ローカルルータ１１１は、例えば、内部ネットワークインターフェース１１００（図中、ＨＳＮ＿ＩＦ１１００）と、プロトコル制御チップインターフェース１１０１（図中、ＰＥ＿ＩＦ１１０１）と、内部スイッチ１１０２（図中、ＬＳＷ１１０２）と、第１のＤＭＡコントローラ１１０３（図中、ＤＭＡＣ１１０３）と、ローカルルータ制御回路１１０４（図中、ＬＲ＿ＣＴＬ１１０４）と、第２のＤＭＡコントローラ１１０５（図中、ＤＭＡＣ１１０５）と、比較回路１１５と、比較バッファ１１６とを備えている。
【００５９】
内部ネットワークインターフェース１１００は、ローカルルータ１１１をスイッチ回路１５１に接続するためのインターフェース回路である。ローカルルータ１１１内の各ＤＭＡコントローラ１１０３，１１０４等は、内部スイッチ１１０２及び内部ネットワークインターフェース１１００を介してスイッチ回路１５１に接続され、さらに、スイッチ回路１５１を介してキャッシュメモリ１４２に接続される。
【００６０】
プロトコル制御チップインターフェース１１０１は、プロトコル制御チップ１１２に接続するためのインターフェース回路である。ローカルルータ１１１は、プロトコル制御チップインターフェース１１０１及びプロトコル制御チップ１１２等を介して、ホスト３０に接続される。
【００６１】
第１のＤＭＡコントローラ１１０３は、キャッシュメモリ１４２にデータを転送するために使用される。ホスト３０から受信されたデータ（ライトデータ）は、チャネルメモリ１１３にいったん記憶され、第１のＤＭＡコントローラ１１０３に入力される。ライトデータは、第１のＤＭＡコントローラ１１０３を介して、キャッシュメモリ１４２にＤＭＡ転送される。ライトデータをキャッシュメモリ１４２にＤＭＡ転送する際に、ハッシュコード生成回路１１４は、例えば、各論理ブロック毎にハッシュコードをそれぞれ生成し、各論理ブロックにハッシュコードを対応付ける。図４中の下側に示すローカルルータ制御回路１１０４は、ホスト３０から受信したライトデータのキャッシュメモリ１４２への転送を制御する。
【００６２】
第２のＤＭＡコントローラ１１０５は、ハッシュコードの一致する複数のデータをキャッシュメモリ１４２から読み出すために使用される。キャッシュメモリ１４２から読み出される複数のデータは、比較回路１１５によって一致するか否か判定される。判定結果は、マイクロプロセッサ１３１に通知される。
【００６３】
図４に示すように、本実施例では、複数のＤＭＡコントローラ１１０３，１１０５を備えており、複数のＤＭＡ転送を並列的に行わせることができる。
【００６４】
図５，図６を参照して、ホスト３０から受信したライトデータの処理を説明する。図５は、各パッケージ間を流れるデータの動き等を示す説明図である。まず図５を用いて、動作の概要を説明する。図５中の太線は、データの流れを示す。以下、説明の便宜上、例えば５１２バイトの論理ブロックを一つだけ受信した場合を説明する。
【００６５】
ホスト３０から受信されたライトデータ５０（図中、ＤＴ５０）は、ＦＥＰＫ１１０内のチャネルメモリ１１３に記憶される（Ｓ１０）。ハッシュコード生成回路１１４は、ライトデータに基づいてハッシュコード５２（図中、ＨＣ５２）を生成する。
【００６６】
ライトデータ５０には、書込先の論理アドレス５１（図中、ＬＡ５１）及びハッシュコード５２がそれぞれ対応付けられる。つまり、ホスト３０から受信したライトデータ５０は、ＦＥＰＫ１１０によって、ハッシュコード付きチャネルメモリデータ５００に変換される。ライトデータ５０が複数の論理ブロックから構成される場合、各論理ブロック毎に論理アドレス５１及びハッシュコード５２が対応付けられる。
【００６７】
ハッシュコード付きのライトデータは、スイッチ回路１５１を介して、キャッシュメモリパッケージ１４０内のキャッシュメモリ１４２に転送され、キャッシュメモリ１４２に記憶される（Ｓ１１）。これにより、キャッシュメモリ１４２には、ハッシュコード付きのキャッシュデータ５３０が記憶される。
【００６８】
なお、理解の容易のために図５中では符号を変えているが、ハッシュコード付きキャッシュデータ５３０と、ハッシュコード付きチャネルメモリデータ５００とは実質的に同一のデータである。
【００６９】
ＦＥＰＫ１１０は、Ｓ１０で受信したライトデータに関するハッシュコード５２を、マイクロプロセッサパッケージ１３０に通知する（Ｓ１２）。マイクロプロセッサパッケージ１３０は、この通知に基づいて、キャッシュディレクトリ５２０を更新する。キャッシュディレクトリ５２０は、キャッシュアドレス５３（図中、ＣＭＡ５３）と、論理アドレス５１と、ハッシュコード５２とを対応付けて管理している。つまり、キャッシュディレクトリ５２０は、キャッシュメモリ１４２のどの領域（ＣＭＡ５３）に論理ボリューム２１２内のどこ（ＬＡ５１）に格納されるべきデータが記憶されているか、及び、そのデータに対応付けられているハッシュコード５２の値は幾つかを管理する。
【００７０】
キャッシュメモリ１４２に記憶されたライトデータは、所定のタイミングで、論理ボリューム２１２内の所定場所に書き込まれる。キャッシュメモリ１４２から論理ボリューム２１２にデータを転送して記憶させる処理は、デステージ処理と呼ばれる。デステージ処理は、ホスト３０から受信するライトコマンドに同期させて実施することもできるし、ライトコマンドの処理と非同期に実施することもできる。
【００７１】
デステージ処理の開始が指示されると、キャッシュメモリ１４２からＢＥＰＫ１２０内のチャネルメモリ１２３に向けて、ハッシュコード付きのライトデータが転送される（Ｓ１３）。ＢＥＰＫ１２０は、チャネルメモリ１２３内のデータ５００を、書込先として指定された論理ボリューム２１２を構成するディスクドライブ２１０に転送し、そのディスクドライブ２１０に記憶させる（Ｓ１４）。この際、ＢＥＰＫ１２０は、論理アドレス５１をディスクドライブ２１０の物理アドレスに変換する。さらに、ＢＥＰＫ１２０は、書込先の論理ボリューム２１２に設定されているＲＡＩＤレベルに応じて、パリティデータを算出する。書込先の論理ボリューム２１２には、ハッシュコード付きのディスクデータ５４０が記憶される。
【００７２】
図６は、図５に示す処理概要の詳細を示すフローチャートである。図６では、ステップ番号を改めて説明する。ＦＥＰＫ１１０は、ホスト３０から発行されるライト要求を受信する（Ｓ２０）。ライト要求は、ライトコマンド及びライトデータから構成される。
【００７３】
ＦＥＰＫ１１０は、ホスト３０からライト要求を受信した旨を、ＭＰＰＫ１３０に通知する（Ｓ２１）。ＭＰＰＫ１３０は、ＦＥＰＫ１１０に、ライトデータのＤＭＡ転送を要求する（Ｓ２２）。
【００７４】
ＦＥＰＫ１１０は、ＭＰＰＫ１３０からの転送要求に従って、チャネルメモリ１１３に記憶されたハッシュコード付きライトデータ（図５中のハッシュコード付きチャネルメモリデータ５００）を、キャッシュメモリパッケージ１４０に向けて、ＤＭＡ転送させる（Ｓ２３）。キャッシュメモリパッケージ１４０へのＤＭＡ転送が完了すると、ＦＥＰＫ１１０は、ＤＭＡ転送が完了した旨をＭＰＰＫ１３０に通知する（Ｓ１２）。
【００７５】
ＦＥＰＫ１１０は、キャッシュメモリ１４２にライトデータを書き込んだ時点で、ホスト３０に、ライトコマンドの処理が完了した旨を報告することができる。あるいは、ＦＥＰＫ１１０は、ライトデータがディスクドライブ２１０に書き込まれたことを確認した後で、ライトコマンドの処理が完了した旨をホスト３０に報告することもできる。
【００７６】
ＭＰＰＫ１３０は、デステージ処理を開始させるべく、ＢＥＰＫ１２０にＤＭＡ転送を要求する（Ｓ２５）。ＢＥＰＫ１２０は、キャッシュメモリ１４２に記憶されたハッシュコード付きライトデータ（図５中のハッシュコード付きキャッシュデータ５３０）を、ＢＥＰＫ１２０内のチャネルメモリ１２３にＤＭＡ転送させる（Ｓ２６）。ＢＥＰＫ１２０は、ＤＭＡ転送が完了した旨をＭＰＰＫ１３０に通知する（Ｓ２７）。
【００７７】
ＭＰＰＫ１３０は、ＢＥＰＫ１２０にデステージ処理の実行を要求する（Ｓ２８）。ＢＥＰＫ１２０は、チャネルメモリ１２３に記憶されたハッシュコード付きライトデータ（図５中のハッシュコード付きチャネルメモリデータ５００）を、ホスト３０から指定される論理ボリューム２１２に転送して書き込む（Ｓ２９）。正確には、書込先の論理ボリューム２１２を構成するディスクドライブ２１０に、ハッシュコード付きライトデータを書き込む。ＢＥＰＫ１２０は、デステージ処理が完了すると、ＭＰＰＫ１３０に処理完了を報告する（Ｓ３０）。このようにして、ホスト３０から受信されたライトデータにハッシュコード５２が設定され、論理ボリューム２１２に記憶される。
【００７８】
図７，図８に基づいて、論理ボリューム２１２に記憶された複数のデータが重複したデータであるか否かを判定するための処理を説明する。図７は、論理ボリューム２１２内のデータ同士を比較するための処理の概要を示す。より詳細な処理内容は、図８のフローチャートに示す。図７と図８とで共通のステップ番号を使用する。そこで、図８を中心に説明する。
【００７９】
例えば、ユーザから重複データの検出や重複データの排除が指示されたり、予め設定された所定の検査タイミングが到来した場合に、ＭＰＰＫ１３０は、ＢＥＰＫ１２０に比較対象のデータの読出しを要求する（Ｓ４０）。
【００８０】
ＢＥＰＫ１２０は、論理ボリューム２１２から比較対象のデータを読出してチャネルメモリ１２３に記憶させ（Ｓ４１）、読出しが完了した旨をＭＰＰＫ１３０に通知する（Ｓ４２）。
【００８１】
ＭＰＰＫ１３０は、ＢＥＰＫ１２０にＤＭＡ転送を要求する（Ｓ４３）。ＢＥＰＫ１２０は、チャネルメモリ１２３内のデータをキャッシュメモリ１４２にＤＭＡ転送させ（Ｓ４４）、ＤＭＡ転送が完了した旨をＭＰＰＫ１３０に通知する（Ｓ４５）。
【００８２】
論理ボリューム２１２から読み出したデータをキャッシュメモリ１４２に転送して記憶させる処理をステージング処理と呼ぶ。キャッシュメモリ１４２にデータをステージングする際に、そのデータのハッシュコードがＭＰＰＫ１３０に通知され、そのハッシュコードはＭＰＰＫ１３０内のキャッシュディレクトリ５２０に登録される。そこで、ＭＰＰＫ１３０は、比較対象としてステージングされた複数のデータのハッシュコード比較し、両者のハッシュコードが一致するか否かを判定する（Ｓ４６）。
【００８３】
比較対象の各データのハッシュコードが不一致の場合は、処理を完了する。ハッシュコードが一致しない各データは、明らかに別々のデータであるため、それ以上の検査は不要である。これに対し、ステージングされた各データのハッシュコードが一致する場合は、さらに詳細な検査が行われる。
【００８４】
ＭＰＰＫ１３０は、ＢＥＰＫ１２０に、ステージングされた各データ同士の比較を要求する（Ｓ４７）。つまり、ＭＰＰＫ１３０は、ハッシュコード同士の比較ではなく、データ同士の比較を要求する。
【００８５】
ＢＥＰＫ１２０は、キャッシュメモリ１４２から比較対象のデータをそれぞれ読出す（Ｓ４８）。所定量のデータがキャッシュメモリ１４２から読み出されるたびに、ＢＥＰＫ１２０は、受信した旨をキャッシュメモリパッケージ１４０に通知する（Ｓ４９）。
【００８６】
ＢＥＰＫ１２０は、キャッシュメモリ１４２から読み出した２つのデータについて、比較バッファ１２６及び比較回路１２５を用いて比較し、その比較結果をＭＰＰＫ１３０に通知する（Ｓ５０）。
【００８７】
比較結果は、例えば、バイト単位で行うことができる。それぞれ５１２バイトの２つのデータを比較する場合、各バイト毎に比較結果が示される。一致する場合に「０」、不一致の場合に「１」を設定することができる。例えば、「００００００１００００・・・・」のように、論理ブロック同士の比較結果は、５１２ビットのデータとなる。
【００８８】
ＭＰＰＫ１３０は、重複データを排除するための処理を実行する（Ｓ５１）。検出された重複データをどのように処理するかは、予め設定されている。その詳細は、さらに後述する。
【００８９】
図９は、図８で述べたデータ比較処理を別の観点から示すフローチャートである。既に述べたように、本実施例では、比較対象の複数のデータをキャッシュメモリ１４２に記憶させ（Ｓ６０）、各データのハッシュコード（ハッシュ値）をキャッシュディレクトリ５２０からそれぞれ取得する（Ｓ６１）。
【００９０】
そして、本実施例では、一方のハッシュコードと他方のハッシュコードとが一致するか否かを判定し（Ｓ６２）、各ハッシュコードが一致する場合（S62:YES）、各データ同士を比較する（Ｓ６３）。
【００９１】
本実施例では、各データの比較結果が「一致」であるか「不一致」であるかを判定し（Ｓ６４）、比較結果が「一致」の場合（S64:YES）、Ｓ６０でキャッシュメモリ１４２に記憶された２つのデータは一致すると判定する（Ｓ６５）。つまり、重複データであると判定される（Ｓ６５）。
【００９２】
重複データであると判定された場合、本実施例では、重複データを排除する処理が実行される（Ｓ６７）。比較対象の各データに設定されているハッシュコードが一致しない場合（S62:NO）、または、データ同士の比較結果が不一致の場合（S64:NO）のいずれかの場合には、各データは一致せず、異なるデータであると判定される（Ｓ６６）。
【００９３】
図１０は、データ同士を比較する様子を示す説明図である。図１０（ａ）は、データを比較するための回路構成を示し、図１０（ｂ）はフローチャートを示す。図１０（ａ）及び図１０（ｂ）を参照して説明する。図１０では、説明の便宜上、フロントエンドパッケージ１１０内の構成を例に挙げて説明するが、バックエンドパッケージ１２０内でも同様にデータを比較することができる。論理ボリューム内のデータを比較する場合は、バックエンドパッケージ１２０内の比較回路１２５等を用いることができる。
【００９４】
内部ネットワークインターフェース受信回路１１０５Ｄ（図中、ＨＳＮ＿ＲＸ１１０５Ｄ）は、内部ネットワークインターフェース１１００を介して、キャッシュメモリ１４２から比較対象の第１データを受信する。受信回路１１０５Ｄは、受信した第１データを受信バッファ１１０５Ｃ（図中、ＢＵＦ＿ＲＸ１１０５Ｃ）に記憶させる（Ｓ７０）。比較回路１１５は、受信バッファ１１０５Ｃから第１データを取得し（Ｓ７１）、この第１データを比較バッファに入力して記憶させる（Ｓ７２）。
【００９５】
同様に、比較対象の第２データも、受信バッファ１１０５Ｃを介して（Ｓ７３）、比較回路１１５に入力される（Ｓ７４）。比較回路１１５は、第２データを読み込むタイミングに合わせて、比較バッファ１１６から第１データを読み込む（Ｓ７５）。これにより、比較回路１１５は、第１データと第２データとを、データの先頭から所定量ずつ順番に比較する。
【００９６】
比較回路１１５による比較結果は、比較バッファ１１６を介して（Ｓ７６）、送信バッファ１１０５Ａ（図中、ＢＵＦ＿ＴＸ１１０５Ａ）に入力される（Ｓ７７）。比較結果は、送信バッファ１１０５Ａから内部ネットワークインターフェース送信回路１１０５Ｂ（図中、ＨＳＮ＿ＴＸ１１０５Ｂ）及び内部スイッチ１１０２等を介して、キャッシュメモリパッケージ１４０に送信される（Ｓ７８）。
【００９７】
また、比較結果のステータス（一致しているか否かのステータス情報）は、比較回路１１５から比較バッファ１１６及び送信バッファ１１０５Ａ等を介して（Ｓ８０，Ｓ８１）、ＭＰＰＫ１３０に送信される（Ｓ８２）。
【００９８】
図１１は、図１０中にＳ６７で示す重複データの排除処理を示す。この処理はＭＰＰＫ１３０によって実行される。論理ブロック単位で処理する場合を説明する。
【００９９】
ＭＰＰＫ１３０は、対象ブロック番号を、対象データの先頭ブロック番号に設定する（Ｓ９０）。そして、ＭＰＰＫ１３０は、対象ブロックのデータが重複しているか否かを判定する（Ｓ９１）。
【０１００】
対象ブロックのデータが重複している場合（S91:YES）、ＭＰＰＫ１３０は、対象ブロックの内容を、重複する別の論理ブロックへのポインタ情報に変更する（Ｓ９２）。対象ブロックのデータが重複していない場合（S91:NO）、ＭＰＰＫ１３０は、Ｓ９２をスキップしてＳ９３に移り、対象データの全ブロックについて処理したか否かを判定する。
【０１０１】
未処理のブロックが残っている場合（S93:NO）、ＭＰＰＫ１３０は、対象ブロック番号を１つ増加させて（Ｓ９４）、Ｓ９１に戻る。対象データの全ブロックについて処理した場合（S93:YES）、ＭＰＰＫ１３０は本処理を終了する。
【０１０２】
図１１の下側に（ａ）として示すように、第１データの各ブロック（ＢＬＫ０１−ＢＬＫ０ｎ）と第２データの各ブロック（ＢＬＫ１１−ＢＬＫ１ｎ）とを比較する場合を例に挙げて説明する。（ａ）に示す例では、ＢＬＫ０３とＢＬＫ１３とは異なるが、それ以外の他のブロックは全て同一データであるとする。第１データの方が古く、第２データの方が新しい。
【０１０３】
図１１に（ｂ）として示すように、ＭＰＰＫ１３０は、第２データの重複ブロック（ＢＬＫ１１，１２，１４，．．．１ｎ）に、第１データの対応するブロックへアクセスするためのポインタ情報（ＰＮＴ）を設定する。例えば、第２データの第１ブロック（ＢＬＫ１１）には、第２データの第１ブロックにリンクするためのポインタ情報（ＰＮＴ（ＢＬＫ０１））が設定される。つまり、古い方のデータを基準として、新しい方のブロックには古いデータを利用するためのポインタ情報が格納される。これにより、新しい方のデータのサイズを低減することができ、論理ボリューム２１２の記憶領域を有効に使用することができる。
【０１０４】
図１２は、ホスト３０から受信したライトデータ同士を比較する場合を示す。図１３は、図１２に示す処理概要の詳細を示す。図１２と図１３とでステップ番号を変えて説明することにする。
【０１０５】
図１２の概略図に示すように、ホスト３０から発行されたライトデータは、ＦＥＰＫ１１０内のチャネルメモリ１１３に記憶される（Ｓ１００）。ハッシュコード生成回路１１４は、ライトデータの各ブロック毎にそれぞれハッシュコードを生成し、各ブロックに対応付ける。
【０１０６】
ハッシュコードの付加されたライトデータは、ＣＭＰＫ１４０に転送され、キャッシュメモリ１４２に記憶される（Ｓ１０１）。ハッシュコード生成回路１１４により生成されたハッシュコードは、ＭＰＰＫ１３０に転送され、キャッシュディレクトリ５２０に登録される（Ｓ１０２）。
【０１０７】
データ比較を行う場合、まず比較対象の各データのハッシュコードが比較される。ハッシュコードの一致するデータのみが、データ同士の比較対象となる。比較対象となった２つのデータは、キャッシュメモリ１４２からＢＥＰＫ１２０内の比較回路１２５に送信されて比較される（Ｓ１０３）。ＦＥＰＫ１１０内の比較回路１１５を用いてもよい。
【０１０８】
比較結果は、ＭＰＰＫ１３０に送信される。ＭＰＰＫ１３０は、図１１で述べたように、重複したデータについて所定の処理を実施する。
【０１０９】
図１３は、図１２の処理の詳細を示す。便宜上、ステップ番号を改めて説明する。ＦＥＰＫ１１０は、ホスト３０からライト要求を受信すると（Ｓ１００）、ライト要求を受信した旨をＭＰＰＫ１３０に通知する（Ｓ１１１）。
【０１１０】
ＭＰＰＫ１３０は、ＦＥＰＫ１１０にＤＭＡ転送を要求する（Ｓ１１２）。ＦＥＰＫ１１０は、チャネルメモリ１１３に記憶されているライトデータを、キャッシュメモリ１４２にＤＭＡ転送させ（Ｓ１０１）、ＤＭＡ転送が完了した旨をＭＰＰＫ１３０に通知する（Ｓ１０２）。説明は省略するが、別のライト要求に関するライトデータも、上記Ｓ１１０〜Ｓ１１３で述べたと同様に、キャッシュメモリ１４２に転送されるものとする。
【０１１１】
ＭＰＰＫ１３０は、キャッシュメモリ１４２に転送された各ライトデータについて、ハッシュコードを比較する（Ｓ１１５）。各ライトデータのハッシュコードが一致する場合、ＭＰＰＫ１３０は、ＢＥＰＫ１２０にデータ比較を要求する（Ｓ１１６）。ＢＥＰＫ１２０は、キャッシュメモリ１４２から比較対象のデータをそれぞれ読出し（Ｓ１０３）、比較回路１２５によって比較する。ＢＥＰＫ１２０は、比較結果をＭＰＰＫ１３０に通知する（Ｓ１０４）。ＭＰＰＫ１３０は、重複データを排除する処理を実行する（Ｓ１２０）。
【０１１２】
このように構成される本実施例によれば、ハッシュコードに基づいて比較対象のデータを絞り込んだ後で、実際にデータ同士を比較し、その比較結果に応じて重複データを排除させる。従って、重複データの検出及び排除を行う場合でも、ＭＰＰＫ１３０の処理負担を軽減でき、コントローラ１０の応答性能低下を抑制できる。
【０１１３】
本実施例では、比較回路を用いてデータ同士を比較する。従って、ＭＰＰＫ１３０内のマイクロプロセッサ１３１によって比較する場合よりも処理を高速化することができ、ＭＰＰＫ１３０の処理負担をより一層軽減することができる。
【０１１４】
本実施例では、ＦＥＰＫ１１０及び／またはＢＥＰＫ１２０に比較回路等を設ける構成のため、通信ポートの増大に応じて、データを比較するための構成を増大させることができ、スケーラビリティに優れる。
【０１１５】
なお、本実施例では、論理ボリューム２１２内に記憶された複数のデータ同士の比較と、ホスト３０から受信された複数のデータ同士の比較とを例に挙げて説明したが、これに限らず、ホスト３０から受信したデータと論理ボリューム２１２内のデータの比較にも用いることができる。また、ＢＥＰＫ１２０内の比較回路１２５に代えて、ＦＥＰＫ１１０内の比較回路１１５を用いてデータを比較してもよい。
【実施例２】
【０１１６】
図１４〜図１６に基づいて本発明の第２実施例を説明する。以下に述べる各実施例は、第１実施例の変形例に相当する。従って、以下の各実施例では、第１実施例と異なる点を主に説明する。本実施例では、キャッシュメモリパッケージ１４０内に、比較回路１４５及び比較バッファ１４６を設ける。
【０１１７】
図１４は、本実施例によるコントローラ１０のブロック図である。本実施例では、ＦＥＰＫ１１０及びＢＥＰＫ１２０から、比較回路及び比較バッファがそれぞれ取り除かれている。その代わりに、本実施例のキャッシュメモリパッケージ１４０は、比較回路１４５及び比較バッファ１４６を備える。
【０１１８】
図１５，図１６を参照して本実施例によるデータ比較処理を説明する。図１５及び図１６では、共通のステップ番号を使用する。そこで、図１６のフローチャートを中心に説明する。
【０１１９】
ユーザからの比較指示等に応じて、ＭＰＰＫ１３０は、ＢＥＰＫ１２０に、比較対象のデータの読出しを要求する（Ｓ１３０）。ＢＥＰＫ１２０は、論理ボリューム２１２から比較対象のデータを読出してチャネルメモリ１２３に記憶させ（Ｓ１３１）、読出し完了をＭＰＰＫ１３０に通知する（Ｓ１３２）。
【０１２０】
ＭＰＰＫ１３０は、ＢＥＰＫ１２０にＤＭＡ転送を要求する（Ｓ１３３）。この要求に応じて、ＢＥＰＫ１２０は、チャネルメモリ１２３に記憶されたデータをキャッシュメモリ１４２にＤＭＡ転送する（Ｓ１３４）。ＢＥＰＫ１２０は、ＤＭＡ転送が完了した旨をＭＰＰＫ１３０に通知する（Ｓ１３５）。
【０１２１】
ＭＰＰＫ１３０は、比較対象の２つのデータについて、それぞれのハッシュコードが一致するか否かを判定する（Ｓ１３６）。各ハッシュコードが一致する場合、ＭＰＰＫ１３０は、キャッシュメモリパッケージ１４０にデータ比較を要求する（Ｓ１３７）。
【０１２２】
キャッシュメモリパッケージ１４０は、キャッシュメモリ１４２に記憶されている２つのデータを比較回路１４５に送り込み、両データを比較させる（Ｓ１３８）。キャッシュメモリパッケージ１４０は、比較結果をＭＰＰＫ１３０に通知する（Ｓ１４０）。ＭＰＰＫ１３０は、重複データを排除する（Ｓ１４１）。
【０１２３】
このように構成される本実施例も第１実施例と同様の効果を奏する。さらに、本実施例では、データを比較するための構成（１４５，１４６）をキャッシュメモリパッケージ１４０内に設けるため、第１実施例のようにキャッシュメモリ１４２からＦＥＰＫ１１０の比較回路１１５やＢＥＰＫ１２０の比較回路１２５にデータを転送する必要がない。従って、データ比較を高速に行うことができる。
【実施例３】
【０１２４】
図１７，図１８に基づいて第３実施例を説明する。本実施例では、ＭＰＰＫ１３０内に比較回路１３５及び比較バッファ１３６を設ける。
【０１２５】
図１７は、本実施例によるコントローラ１０のブロック図である。本実施例では、ＭＰＰＫ１３０内に比較回路１３５及び比較バッファ１３６を設ける。図１８は、本実施例によるデータ比較処理を示す。
【０１２６】
まず最初に、ＭＰＰＫ１３０は、ＢＥＰＫ１２０に比較対象データの読出しを要求する（Ｓ１５０）。この要求に応じて、ＢＥＰＫ１２０は、論理ボリューム２１２からデータを読み出し、チャネルメモリ１２３に格納する（Ｓ１５１）。ＢＥＰＫ１２０は、読出しが完了した旨をＭＰＰＫ１３０に通知する（Ｓ１５２）。
【０１２７】
ＭＰＰＫ１３０は、ＢＥＰＫ１２０に、比較対象データをキャッシュメモリ１４２にＤＭＡ転送するように要求する（Ｓ１５３）。ＢＥＰＫ１２０は、チャネルメモリ１２３に格納されたデータをキャッシュメモリ１４２にＤＭＡ転送し（Ｓ１５４）、ＤＭＡ転送が完了した旨をＭＰＰＫ１３０に通知する（Ｓ１５５）。
【０１２８】
ＭＰＰＫ１３０は、キャッシュメモリ１４２に転送された２つのデータについて、それぞれに設定されるハッシュコードを比較する（Ｓ１５６）。各ハッシュコードが一致する場合、ＭＰＰＫ１３０は、キャッシュメモリ１４２から比較対象の２つのデータを読込み（Ｓ１５７）、比較回路１３５で比較させる。比較結果に応じて、ＭＰＰＫ１３０は、重複データを排除する（Ｓ１５８）。
【０１２９】
このように構成される本実施例も第１実施例と同様の効果を奏する。さらに、本実施例では、ＭＰＰＫ１３０内にデータを比較するためのハードウェア回路（１３５，１３６）を設けるため、ＭＰＰＫ１３０内の専用ハードウェア回路を用いて、データを比較することができ、マイクロプロセッサ１３１の制御プログラムを簡素化できる。
【実施例４】
【０１３０】
図１９，図２０に基づいて第４実施例を説明する。本実施例では、重複データを排除して差分バックアップを生成する方法を説明する。
【０１３１】
図１９は、本実施例による情報処理システムの構成を示す。本実施例のコントローラ１０は、例えば、判定用データ設定部１０１と、重複データ検出部１０２と、重複データ排除部１０３とを備える。
【０１３２】
判定用データ設定部１０１は、ハッシュ値設定部１０１Ａを備える。ハッシュ値設定部１０１Ａは、例えば、第１実施例で説明したハッシュコード生成回路に相当する。重複データ検出部１０２は、例えば、ハッシュ値（以下、ハッシュコードとも呼ぶ）同士を比較するハッシュ値比較部１０２Ａと、データ同士を比較するデータ比較部１０２Ｂとを備えている。ハッシュ値比較部１０２Ａは、第１実施例においては、ＭＰＰＫ１３０の提供する一つの機能に相当する。データ比較部１０２Ｂは、第１実施例においては、比較回路及び比較バッファに相当する。
【０１３３】
重複データ排除部１０３は、例えば、差分データ取得部１０３Ａと、差分データ書込み部１０３Ｂとを備える。差分データ取得部１０３Ａは、重複していないデータ（差分データ）を取得する。差分データ書込み部１０３Ｂは、取得した差分データを差分バックアップボリュームに書き込む。重複データ排除部１０３は、第１実施例においては、ＭＰＰＫ１３０の提供する一つの機能である。
【０１３４】
ＨＤＵ２０に着目する。本実施例では、正ボリューム（ＬＵ１）と、スナップショットボリューム（ＬＵ２）と、最新のフルバックアップボリューム（ＬＵ３）と、差分バックアップボリューム（ＬＵ４）とを備える。スナップショットボリューム（ＬＵ２）には、ある時点におけるスナップショットイメージが記憶される。
【０１３５】
図２０は、差分バックアップ処理を示すフローチャートである。コントローラ１０は、ホスト３０からライトデータを受信すると（Ｓ２００）、ライトデータにハッシュコードを設定する（Ｓ２０１）。コントローラ１０は、ハッシュコード付きのライトデータを、正ボリューム（ＬＵ１）に記憶させる（Ｓ２０２）。
【０１３６】
コントローラ１０は、ユーザからの指示や予め設定されたスケジュール等に基づいて、正ボリューム（ＬＵ１）のスナップショットイメージを取得する（Ｓ２０３）。コントローラ１０は、スナップショットイメージ（ＬＵ２）とフルバックアップボリューム（ＬＵ３）内のファイルとをハッシュコードに基づいて比較する（Ｓ２０４）。
【０１３７】
コントローラ１０は、ハッシュコードの一致するファイルデータ同士を比較し、重複データを検出する（Ｓ２０５）。コントローラ１０は、重複データに基づいて、重複していないデータを検出し、重複していないデータのみを差分バックアップボリューム（ＬＵ４）に書き込む（Ｓ２０６）。
【０１３８】
このように構成される本実施例も第１実施例と同様の効果を奏する。さらに、本実施例では、重複データを検出することにより、重複していないデータのみを抽出して差分バックアップボリューム（ＬＵ４）に記憶させることができる。従って、より高速に差分バックアップ処理を行うことができる。
【実施例５】
【０１３９】
図２１，図２２に基づいて第５実施例を説明する。本実施例では、ホスト３０から受信したライトデータとフルバックアップボリューム（ＬＵ３）内のデータとを比較し、重複していないデータ（差分データ）のみを差分バックアップボリューム（ＬＵ４）に記憶させる。
【０１４０】
図２１は、本実施例による情報処理システムの全体構成を示す。ハッシュ値比較部１０２Ａには、ホスト３０から受信したデータのハッシュコードとフルバックアップボリューム（ＬＵ３）に記憶されているデータのハッシュコードとが入力される。
【０１４１】
図２２は、本実施例による差分バックアップ処理を示すフローチャートである。コントローラ１０は、ホスト３０からライトデータを受信すると（Ｓ２１０）、ライトデータの各ブロック毎にそれぞれハッシュコードを設定する（Ｓ２１１）。コントローラ１０は、ライトデータを正ボリューム（ＬＵ１）に記憶させる（Ｓ２１２）。
【０１４２】
コントローラ１０は、ライトデータに設定されたハッシュコードとフルバックアップボリューム（ＬＵ３）内のデータに設定されたハッシュコードとを比較し（Ｓ２１３）、さらに、ハッシュコードの一致するデータ同士を比較する（Ｓ２１４）。これにより、重複データが検出される。コントローラ１０は、重複データに基づいて、重複していないデータを検出し、重複していないデータのみを差分バックアップボリューム（ＬＵ４）に書き込む（Ｓ２１５）。
【０１４３】
このように構成される本実施例も第１実施例と同様の効果を奏する。さらに、本実施例では、ホストから受信したデータのうちフルバックアップされたデータと異なるデータのみを、リアルタイムで差分バックアップボリュームに書き込むことができ、差分バックアップ処理を高速化できる。
【実施例６】
【０１４４】
図２３，図２４に基づいて第６実施例を説明する。本実施例では、リモートコピー処理に応用する場合を説明する。
【０１４５】
図２３は、本実施例による情報処理システムの全体構成を示す。プライマリサイトに設けられるコントローラ１０Ａは、判定用データ設定部１０１とリモートコピー制御部１０４とを備える。プライマリサイトから離れた場所に位置するリモートサイトには、コントローラ１０Ｂが設けられる。コントローラ１０Ｂは、重複データ検出部１０２及び重複データ排除部１０３を備える。
【０１４６】
図２４は、リモートコピー処理のフローチャートである。プライマリサイトのコントローラ１０Ａは、ホスト３０からライトデータを受信すると（Ｓ２２０）、ライトデータの各ブロック毎にそれぞれハッシュコードを設定する（Ｓ２２１）。コントローラ１０Ａは、プライマリサイト内の正ボリューム（ＬＵ１）に、ハッシュコード付きのライトデータを書き込む（Ｓ２２２）。さらに、コントローラ１０Ａは、リモートサイトのコントローラ１０Ｂに向けて、ライトデータを転送する（Ｓ２２３）。
【０１４７】
リモートサイトのコントローラ１０Ｂは、ハッシュコード付きのライトデータを受信すると（Ｓ２３０）、ライトデータに設定されているハッシュコードとフルバックアップボリューム（ＬＵ３）に格納されているデータに設定されているハッシュコードとを比較する（Ｓ２３１）。
【０１４８】
コントローラ１０Ｂは、ハッシュコードの一致するデータ同士を比較して、重複データを検出する（Ｓ２３２）。コントローラ１０Ｂは、重複データに基づいて重複していないデータを特定し、重複していないデータのみを差分バックアップボリューム（ＬＵ４）に書き込む（Ｓ２３３）。
【０１４９】
このように構成される本実施例も第１実施例と同様の効果を奏する。さらに、本実施例では、重複していないデータのみを差分バックアップボリュームに保存するため、リモートコピー処理を高速に行うことができる。
【実施例７】
【０１５０】
図２５に基づいて第７実施例を説明する。本実施例では、重複データを検出する対象や時期の設定方法の一例を示す。
【０１５１】
図２５は、データ比較処理に関する設定を行うための処理を示す。ユーザは、例えば、コントローラ１０に接続される管理端末を介して、重複データの排除を行う対象を指定する（Ｓ２４０）。ユーザは、例えば、ビットコスト管理テーブルＴ１０を用いて、重複データの排除対象を指定することができる。
【０１５２】
ビットコスト管理テーブルＴ１０は、例えば、論理ボリューム番号（ＬＵ＃）Ｃ１０と、用途Ｃ１１と、デバイスタイプＣ１２と、ビットコストＣ１３と、その他Ｃ１４とを対応付けて管理する。
【０１５３】
論理ボリューム番号Ｃ１０は、各論理ボリューム２１２を特定する情報である。用途Ｃ１１は、その論理ボリュームの用途を示す情報である。用途としては、例えば、正ボリュームとして使用、フルバックアップボリュームとして使用、差分バックアップボリュームとして使用等を挙げることができる。
【０１５４】
デバイスタイプＣ１２は、その論理ボリュームを構成する記憶装置の種類を示す情報である。デバイスタイプとしては、例えば、ＦＣディスク、ＳＡＴＡディスク、フラッシュメモリデバイス（ＳＳＤ）等を挙げることができる。ビットコストＣ１３は、その論理ボリュームのビットコストを示す情報である。ビットコストは正確な金額である必要はなく、価格の大小がわかる相対的な値でよい。その他Ｃ１４としては、例えば、ボリュームサイズやＲＡＩＤレベル等を挙げることができる。
【０１５５】
ユーザは、ビットコスト管理テーブルＴ１０を参照することにより、例えば、ビットコストの相対的に高い論理ボリュームを、重複データの排除対象として指定することができる（Ｓ２４０）。
【０１５６】
続いて、ユーザは、重複データの排除処理（データ比較処理）を行うタイミングを指定する（Ｓ２４１）。ユーザは、タイミング管理テーブルＴ２０を用いて、実行タイミングを選択する。タイミング管理テーブルＴ２０に示すように、実行タイミングとしては、ユーザの指定した日時Ｃ２０、バックアップ実行時Ｃ２１、指定周期毎Ｃ２２等を挙げることができる。
【０１５７】
このように構成される本実施例も第１実施例と同様の効果を奏する。さらに、本実施例では、重複データの検出及び排除を行う対象をビットコスト等を考慮してボリューム単位で決定することができ、さらに、重複データ排除を行うタイミングを論理ボリューム毎に指定することができる。従って、例えば、ビットコストの高い論理ボリュームでは、こまめに重複データを排除することにより、ビットコストの高い論理ボリュームの記憶領域を効率的に使用することができ、ユーザの使い勝手も向上する。
【実施例８】
【０１５８】
図２６に基づいて第８実施例を説明する。本実施例では、重複データの検出及び排除を行う場合にのみ、ハッシュコードを生成する。第１実施例では、ホスト３０から受信したライトデータにハッシュコードを設定して、論理ボリューム２１２に記憶させる場合を説明した。これに代えて、本実施例では、図２６のフローチャートに示すように、必要な場合にのみハッシュコードを設定して比較する。
【０１５９】
コントローラ１０は、比較対象のデータを論理ボリューム２１２から読み出し（Ｓ２５０）、論理ボリューム２１２から読み出されるデータについてハッシュコードを生成し、そのデータに設定する（Ｓ２５１）。例えば、ＢＥＰＫ１２０内のハッシュコード生成回路１２４によって、ハッシュコードが生成される。生成されたハッシュコードは、ＭＰＰＫ１３０に送信され、キャッシュディレクトリに登録される。コントローラ１０は、一方のデータのハッシュコードと他方のデータのハッシュコードとが一致するか否かを判定する（Ｓ２５２）。
【０１６０】
各ハッシュコードが一致する場合（S252:YES）、コントローラ１０は、２つのデータ同士を比較し（Ｓ２５３）、比較結果が「一致」であるか否かを判定する（Ｓ２５４）。比較結果が「一致」の場合（S254:YES）、コントローラ１０は、２つのデータは一致すると判定し（Ｓ２５５）、重複データの排除処理を実施する（Ｓ２５６）。
【０１６１】
これに対し、ハッシュコードが不一致の場合（S252:NO）または比較結果が「不一致」の場合（S254:NO）のいずれかの場合には、その２つのデータは不一致であると判定される（Ｓ２５７）。
【０１６２】
このように構成される本実施例も第１実施例と同様の効果を奏する。さらに、本実施例では、データ比較処理を実行する場合のみハッシュコードを生成するため、ハッシュコード付きデータを論理ボリューム２１２に記憶させる必要はない。従って、論理ボリューム２１２の記憶領域を効率的に使用することができる。
【０１６３】
なお、本発明は、上述した実施例に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。
【図面の簡単な説明】
【０１６４】
【図１】本発明の実施形態の全体概要を示す説明図である。
【図２】第１実施例に係る記憶制御装置を含むシステムの構成図である。
【図３】コントローラのブロック図である。
【図４】ローカルルータのブロック図である。
【図５】ホストからのライトデータをボリュームに書き込む様子を示す説明図である。
【図６】ホストからのライトデータをボリュームに書き込む処理のフローチャートである。
【図７】ボリューム内のデータを比較する様子を示す説明図である。
【図８】ボリューム内のデータを比較する処理を示すフローチャートである。
【図９】データ比較処理を示すフローチャートである。
【図１０】データ同士を比較する処理を示すフローチャート及び構成図である。
【図１１】重複データを排除するための処理を示すフローチャートである。
【図１２】ホストから受信したデータ同士を比較する様子を示す説明図である。
【図１３】ホストから受信したデータ同士を比較する処理を示すフローチャートである。
【図１４】第２実施例に係るコントローラのブロック図である。
【図１５】キャッシュメモリパッケージ内でデータを比較する様子を示す説明図である。
【図１６】データ比較処理を示すフローチャートである。
【図１７】第３実施例に係るコントローラのブロック図である。
【図１８】データ比較処理を示すフローチャートである。
【図１９】第４実施例に係るシステムの構成図である。
【図２０】差分バックアップ処理のフローチャートである。
【図２１】第５実施例に係るシステムの構成図である。
【図２２】差分バックアップ処理のフローチャートである。
【図２３】第６実施例に係るシステムの構成図である。
【図２４】リモートコピー処理のフローチャートである。
【図２５】第７実施例に係るコントローラで実行される、データ比較処理に関する設定を行うためのフローチャートである。
【図２６】第８実施例に係るコントローラで実行される、データ比較処理を示すフローチャートである。
【符号の説明】
【０１６５】
１：コントローラ、２：記憶装置ユニット、２Ａ：論理ボリューム、３：ホストコンピュータ、４：マイクロプロセッサ部、４Ａ：キャッシュディレクトリ、４Ｂ：ハッシュ値比較部、４Ｃ：重複データ排除処理部、５：キャッシュメモリ、６：データ比較部、６Ａ：データ比較用バッファ、６Ｂ：データ比較回路、７：ハッシュ値設定部、１０，１０Ａ，１０Ｂ：コントローラ、２０：記憶装置ユニット、３０：ホストコンピュータ、５０：ライトデータ（ＤＴ）、５１：論理アドレス（ＬＡ）、５２：ハッシュコード（ＨＣ）、５３：キャッシュアドレス、１０１：判定用データ設定部、１０１Ａ：ハッシュ値設定部、１０２：重複データ検出部、１０２Ａ：ハッシュ値比較部、１０２Ｂ：データ比較部、１０３：重複データ排除部、１０３Ａ：差分データ取得部、１０３Ｂ：差分データ書込み部、１０４：リモートコピー制御部、１１０：フロントエンドパッケージ、１１００：内部ネットワークインターフェース、１１０１：プロトコル制御チップインターフェース、１１０２：内部スイッチ、１１０３，１１０５：ＤＭＡコントローラ、１１０４：ローカルルータ制御回路、１１０５Ａ：送信バッファ、１１０５Ｂ：内部ネットワークインターフェース送信回路、１１０５Ｃ：受信バッファ、１１０５Ｄ：内部ネットワークインターフェース受信回路、１１０５Ｄ：受信回路、１１１：ローカルルータ、１１２：プロトコル制御チップ、１１３：チャネルメモリ、１１４：ハッシュコード生成回路、１１５：比較回路、１１６：比較バッファ、１２０：バックエンドパッケージ、１２１：ローカルルータ、１２２：プロトコル制御チップ、１２３：チャネルメモリ、１２４：ハッシュコード生成回路、１２５：比較回路、１２６：比較バッファ、１３０：マイクロプロセッサパッケージ、１３１：マイクロプロセッサ、１３２：プロセッサメモリコントローラ、１３３：プロセッサメモリ、１３５：比較回路、１３６：比較バッファ、１４０：キャッシュメモリパッケージ、１４１：キャッシュメモリコントローラ、１４２：キャッシュメモリ、１４５：比較回路、１４６：比較バッファ、１５０：スイッチパッケージ、１５１：スイッチ回路、２１０：ディスクドライブ、２１１：ＲＡＩＤグループ、２１２：論理ボリューム。
【図１】
2009251725.tif 000003
【図２】
2009251725.tif 000004
【図３】
2009251725.tif 000005
【図４】
2009251725.tif 000006
【図５】
2009251725.tif 000007
【図６】
2009251725.tif 000008
【図７】
2009251725.tif 000009
【図８】
2009251725.tif 000010
【図９】
2009251725.tif 000011
【図１０】
2009251725.tif 000012
【図１１】
2009251725.tif 000013
【図１２】
2009251725.tif 000014
【図１３】
2009251725.tif 000015
【図１４】
2009251725.tif 000016
【図１５】
2009251725.tif 000017
【図１６】
2009251725.tif 000018
【図１７】
2009251725.tif 000019
【図１８】
2009251725.tif 000020
【図１９】
2009251725.tif 000021
【図２０】
2009251725.tif 000022
【図２１】
2009251725.tif 000023
【図２２】
2009251725.tif 000024
【図２３】
2009251725.tif 000025
【図２４】
2009251725.tif 000026
【図２５】
2009251725.tif 000027
【図２６】
2009251725.tif 000028