(57)【要約】【課題】ライト回数或いは消去回数に制限のある記憶装置がある場合に、記憶装置の長寿命化を図る。読出し性能に比べて書き込み性能が悪い記憶装置がある場合に、書き込み性能の向上を図る。【解決手段】上位装置からの第一のデータを記憶装置に書込む前に、記憶装置上の書き込み予定位置に格納されている第二のデータをリードし、第一のデータと比較し、一致した場合には、第一のデータを記憶装置に書込まない。【選択図】図２
2008084270.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置を備え、上位装置から送信された書き込み要求を受信し、該書き込み要求に従うデータを前記記憶装置に記憶するストレージシステムであって、
キャッシュ領域と、
前記上位装置から受信した書き込み要求に従う第一のデータを前記キャッシュ領域に書込み、前記受信した書込み要求に従う、前記記憶装置における書き込み先場所から、第二のデータを読出し、該読み出した第二のデータを前記キャッシュ領域に書込む制御部と、
前記キャッシュ領域に書込まれた第一のデータと第二のデータとの比較を行うデータ比較部と
を備え、
前記制御部は、前記比較の結果、前記第一のデータと前記第二のデータとが一致の場合には、前記第一のデータを前記記憶装置に書込まず、前記第一のデータと前記第二のデータとが不一致の場合に、前記キャッシュ領域上の前記第一のデータを前記記憶装置に書込む、
ストレージシステム。
【請求項２】
請求項１に記載のストレージシステムであって、
前記データ比較部が、前記第一のデータと前記第二のデータとの一部分同士を比較し、それらが一致の場合に、前記データ比較部が、残りの部分同士の比較を行い、
前記制御部は、前記一部分同士の比較の結果、或いは、前記残りの部分同士の比較の結果、不一致の場合に、前記第一のデータを前記記憶装置に書き込む、
ストレージシステム。
【請求項３】
請求項１に記載のストレージシステムであって、
前記制御部は、前記書き込み先場所から、前記第二のデータの一部を読出し、該第二のデータの一部を前記キャッシュ領域に書き込み、
前記データ比較部が、前記キャッシュ領域に書き込まれている第一のデータの一部と、該キャッシュ領域に書込まれた第二のデータの一部とを比較し、
それらが不一致の場合に、前記制御部が、前記第一のデータを前記記憶装置に書き込む、
ストレージシステム。
【請求項４】
請求項３に記載のストレージシステムであって、
前記制御部は、前記比較の結果が一致の場合に、前記第二のデータの残りの部分を前記記憶装置から読み出して前記キャッシュ領域に書き込み、
前記データ比較部が、前記第一のデータの残りの部分と前記第二のデータの残りの部分とを比較し、
それらが一致の場合には、前記制御部は、前記第一のデータを前記記憶装置に書込まず、それらが不一致の場合に、前記第一のデータを前記記憶装置に書込む、
ストレージシステム。
【請求項５】
請求項３に記載のストレージシステムであって、
前記記憶装置から読み出される、前記第二のデータの一部のデータサイズは、前記比較に必要な最小のデータサイズ以上であり前記記憶装置の読出し単位である、
ストレージシステム。
【請求項６】
請求項１に記載のストレージシステムであって、
前記制御部は、前記書き込み要求に従うデータを基に冗長化データを生成し、該データと該冗長化データとを前記記憶装置に書込むように構成されており、
前記データ比較部は、前記第一のデータと前記第二のデータとの比較を行い、該第一のデータの冗長化データである第一の冗長化データと該第二のデータの冗長化データである第二の冗長化データとの比較を行わず、
前記制御部は、前記比較の結果が一致の場合には、前記第一のデータ及び前記第一の冗長化データの書込みを行わず、前記比較の結果が不一致の場合に、前記第一のデータ及び前記第一の冗長化データを前記記憶装置に書込む、
ストレージシステム。
【請求項７】
請求項６に記載のストレージシステムであって、
前記データ比較部が、前記第一のデータと前記第二のデータとの一部分同士を比較し、それらが一致の場合に、前記データ比較部が、残りの部分同士の比較を行い、
前記制御部は、前記一部分同士の比較の結果、或いは、前記残りの部分同士の比較の結果、不一致の場合に、前記第一のデータ及び前記第一の冗長化データを前記記憶装置に書き込む、
ストレージシステム。
【請求項８】
請求項６に記載のストレージシステムであって、
前記記憶装置は複数個存在し、前記複数の記憶装置によりＲＡＩＤグループが構成されており、該ＲＡＩＤグループのＲＡＩＤレベルは、パリティデータの生成を必要とするＲＡＩＤレベルであり、
前記冗長化データは、前記パリティデータである、
ストレージシステム。
【請求項９】
請求項６に記載のストレージシステムであって、
前記冗長化データは、誤り訂正符号である、
ストレージシステム。
【請求項１０】
請求項１に記載のストレージシステムであって、
前記記憶装置は複数個存在し、
前記制御部は、前記複数の記憶装置にデータを多重化して書込むミラーリング処理を行うように構成されており、前記書込み要求を受信した場合、前記複数の記憶装置の中から一つの記憶装置を選択し、選択した記憶装置における、前記書き込み先場所から、前記第二のデータを読み出す、
ストレージシステム。
【請求項１１】
請求項１に記載のストレージシステムであって、
前記比較されるデータ単位が、以下の（１）乃至（４）、
（１）前記第一のデータを１つ以上に分割したものの１つのデータサイズ、
（２）書き込みに必要な最小のデータサイズの整数倍、
（３）読出しに必要な最小のデータサイズの整数倍、
（４）消去最小サイズの整数倍、
のうちのいずれかである、
ストレージシステム。
【請求項１２】
請求項１に記載のストレージシステムであって、
前記制御部は、前記比較の結果、前記第一のデータのうちの前記第二のデータとの不一致部分のみを、前記記憶装置に書込む、
ストレージシステム。
【請求項１３】
請求項１に記載のストレージシステムであって、
前記上位装置から書き込み要求を受信し前記記憶装置にデータの書き込みを行うコントローラを備え、
前記キャッシュ領域、前記制御部及び前記データ比較部が、前記記憶装置に搭載されている、
ストレージシステム。
【請求項１４】
請求項１に記載のストレージシステムであって、
前記記憶装置は、フラッシュメモリデバイスである、
ストレージシステム。
【請求項１５】
請求項１に記載のストレージシステムであって、
前記記憶装置は複数個存在し、
前記複数の記憶装置は、一つの記憶装置内の複数の記憶領域である、
ストレージシステム。
【請求項１６】
請求項１に記載のストレージシステムであって、
前記記憶装置が複数個存在し、
前記制御部は、前記書き込み先場所が、前記複数の記憶装置のうち、書き込み抑制を必要とする記憶装置の場合に、該書き込み先場所から前記第二のデータを読出し、そうではない場合には、前記第二のデータを読み出すことなく前記第一のデータを該書き込み先場所に書き込む、
ストレージシステム。
【請求項１７】
請求項１６に記載のストレージシステムであって、
前記書き込み抑制を必要とする記憶装置は、書き込み回数、消去回数、書き込み頻度、消去頻度のうちの少なくとも一つが一定値以上の記憶装置である、
ストレージシステム。
【請求項１８】
上位装置から送信された書き込み要求を受信し、
前記受信した書き込み要求に従う第一のデータをキャッシュ領域に書込み、
前記受信した書込み要求に従う、記憶装置における書き込み先場所から、第二のデータを読出し、
該読み出した第二のデータを前記キャッシュ領域に書き込み、
前記キャッシュ領域に書込まれた第一のデータと第二のデータとの比較を行い、
前記比較の結果、前記第一のデータと前記第二のデータとが一致の場合には、前記第一のデータを前記記憶装置に書込まず、前記第一のデータと前記第二のデータとが不一致の場合に、前記キャッシュ領域上の前記第一のデータを前記記憶装置に書込む、
記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムに関する。
【背景技術】
【０００２】
従来、複数の記憶装置を並列的に動作させることによって、ホストからの読み出し／書き込み要求処理の高速化を図るとともに、冗長構成によって信頼性を向上させる、ＲＡＩＤ（ＲＡＩＤ：Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）技術を用いたストレージシステムが開発されている。非特許文献１に、ＲＡＩＤ１からＲＡＩＤ５までの５種類のＲＡＩＤ構成について詳しく記載されている。また、５種類のＲＡＩＤ構成の他にも、ＲＡＩＤ０やＲＡＩＤ６等の構成も存在し、用途に応じてこれらの構成を使い分けている。
【０００３】
従来、このストレージシステムの記憶装置には、磁気記憶装置の一種であるＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）と呼ばれる記憶装置を用いるのが一般的であった。
【０００４】
一方、前記のＨＤＤの他に、不揮発性半導体メモリの一種であるフラッシュメモリと呼ばれる記憶媒体を用いた記憶装置が存在する。近年、ＮＡＮＤ型フラッシュメモリと呼ばれる記憶媒体を用いたフラッシュメモリメディアは、大容量化および単位容量あたりの低価格化が進み、一般のコンピュータ機器にも採用されている。
【０００５】
フラッシュメモリは、ＨＤＤのように磁気ヘッドの移動時間が必要ないため、データアクセスに必要なオーバヘッド時間の短縮化が可能であり、ＨＤＤに比べて応答性能の向上を図ることができる。
【０００６】
しかしながら、フラッシュメモリの各記憶素子には、データ書き換えのための消去回数に制限（保証回数）が存在する。特許文献１では、フラッシュメモリの消去単位ごとに消去回数を管理し、消去回数の多い記憶領域に消去回数の少ない領域のデータを書き込む事により消去処理の実行回数の偏りを少なくし、フラッシュメモリの劣化を鈍化させる記憶装置に関する技術が開示されている。
【特許文献１】特許第３４０７３１７号
【非特許文献１】D.Patterson, et al:"A Case for Redundant Arrays of Inexpensive Disks (RAID)",Proceedings of the 1988 ACM SIGMOD international conference on Management of data,pp.109-116,1988
【発明の開示】
【発明が解決しようとする課題】
【０００７】
特許文献１の技術を利用することにより、各記憶素子における消去処理の実行回数の偏りを少なくして、消去回数が保証回数に達する時期を遅らせることが可能となる。しかしながら、フラッシュメモリを備えたストレージシステムで同技術を用いる場合、ストレージシステムにはＩ／Ｏが大量に発生することがあるため、短期間で消去回数が保証回数に達して（つまり寿命が尽きて）当該フラッシュメモリを交換する必要が出てくる。このような問題点は、書き込み回数あるいは消去回数に制限のある他種の記憶装置を備える場合にも同様に生じ得る。
【０００８】
また、フラッシュメモリの特徴の１つとして、読み出し性能（例えば速度）に比べて書き込み性能が悪い（例えば遅い）という点が挙げられる。このような特徴点を有する他種の記憶装置が存在し得る。
【０００９】
本発明は、上記の問題に鑑みてなされたもので、その目的はストレージシステムに備えられる記憶装置が、書き込み回数あるいは消去回数に制限がある場合に、記憶装置の長寿命化を図ることにある。
【００１０】
本発明の他の目的は、ストレージシステムに備えられる記憶装置が、読み出し性能に比べて書き込み性能が悪い記憶装置である場合に、書き込み性能を向上することにある。
【課題を解決するための手段】
【００１１】
ストレージシステムに、キャッシュ領域と、データ比較部とを備え、ストレージシステムの制御部が、以下の処理を実行する。すなわち、制御部は、上位装置から受信した書き込み要求に従う第一のデータをキャッシュ領域に書込み、その書込み要求に従う、記憶装置における書き込み先場所から、第二のデータを読出し、該読み出した第二のデータをキャッシュ領域に書込む。データ比較部は、キャッシュ領域に書込まれた第一のデータと第二のデータとの比較を行う。制御部は、その比較の結果、第一のデータと第二のデータとが一致の場合には、第一のデータを記憶装置に書込まず、第一のデータと第二のデータとが不一致の場合に、キャッシュ領域上の第一のデータを記憶装置に書込む。
【００１２】
キャッシュ領域は、例えばメモリに設けることができる。また、制御部及びデータ比較部の各々は、ハードウェア、コンピュータプログラム又はそれらの組み合わせ（例えば一部をコンピュータプログラムにより実現し残りをハードウェアで実現すること）により構築することができる。コンピュータプログラムは、所定のプロセッサに読み込まれて実行される。また、コンピュータプログラムがプロセッサに読み込まれて行われる情報処理の際、適宜に、メモリ等のハードウェア資源上に存在する記憶域が使用されてもよい。また、コンピュータプログラムは、ＣＤ−ＲＯＭ等の記録媒体から計算機にインストールされてもよいし、通信ネットワークを介して計算機にダウンロードされてもよい。
【発明の効果】
【００１３】
本発明によれば、ストレージシステムに備えられる記憶装置が、書き込み回数あるいは消去回数に制限がある場合に、記憶装置の長寿命化を図ることができる。
【００１４】
本発明の他の目的は、ストレージシステムに備えられる記憶装置が、読み出し性能に比べて書き込み性能が遅い記憶装置である場合に、書き込み性能を向上することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施形態の例として、第１から第３の実施例を説明する。
【実施例１】
【００１６】
図１から図７に基づいて、本発明の実施例１について述べる。
【００１７】
図１は、ストレージシステムの構成例を示す。
【００１８】
このストレージシステム２００は、１つまたは複数のホスト計算機１００とネットワーク１０１を解して接続することができる。また、必要に応じて、１つまたは複数の管理用計算機１１０とネットワーク１１１を介して接続することができる。ネットワーク１０１は、例えばＳＡＮ（Storage Area Network）とすることができる。ネットワーク１１１は、例えばＬＡＮ（Local Area Network）とすることができる。ネットワーク１０１，１１１は、別々のネットワークでなくても良い。
【００１９】
ホスト計算機１００は、例えば、ワークステーション、メインフレーム、パーソナルコンピュータ等として構成される、コンピュータ装置である。ホスト計算機１００は、ストレージシステム２００にアクセスし、データの読み書きを行う。
【００２０】
管理用計算機１１０は、ストレージシステム２００にアクセスし、ストレージシステム２００の管理を行うコンピュータ装置である。なお、管理用計算機１１０とホスト計算機１００が同一のコンピュータ装置であっても構わない。
【００２１】
ストレージシステム２００は、大きくストレージ制御部３００とデータ記憶部４００に分けて考えることができる。
【００２２】
ストレージ制御部３００は、ホストインタフェース３１０と、管理インタフェース３２０と、プロセッサ３３０と、ローカルメモリ３４０と、キャッシュメモリ３５０と、データ比較回路３６０と、記憶装置用インタフェース３７０とを備えることができる。ストレージ制御部３００は、例えば、一又は複数枚の回路基盤で構成することができる。
【００２３】
ホストインタフェース３１０は、ホスト計算機１００とストレージシステム２００の間で通信を行うためのインタフェースである。管理インタフェース３２０は、管理用計算機１１０とストレージシステム２００の間で通信を行うためのインタフェースである。また、記憶装置用インタフェース３７０は、ストレージ制御部３００とデータ記憶部４００の間で通信を行うためのインタフェースである。
【００２４】
プロセッサ３３０は、ホスト計算機１００とストレージシステム２００間の通信を制御したり、管理用計算機１１０とストレージシステム２００間の通信を制御したり、ストレージ制御部３００とデータ記憶部４００の間の通信を制御したり、その他ローカルメモリ３４０に格納される各種プログラムを実行したりする。
【００２５】
ローカルメモリ３４０は、プロセッサ３３０が実行する各種プログラムを格納したり、ストレージシステム２００を制御する上で必要なデータを格納したりする。なお、プロセッサ３３０が実行するプログラムには、後述するデータのコンペアライトを実現するプログラムを含む。
【００２６】
キャッシュメモリ３５０は、ホスト計算機１００および管理用計算機１１０およびデータ記憶部４００からストレージ制御部３００に転送されるデータを一時的に記憶するデータバッファの役割をしたり、ストレージシステム２００を制御する上で必要なデータを格納したりする。
【００２７】
データ比較回路３６０は、後述するデータコンペアライト処理において、２つのデータの一致あるいは不一致を判断するための回路である。なお、データ比較回路３６０は、実施例の中ではハードウェアとして実現しているように表記しているが、ローカルメモリ３４０に格納されプロセッサ３３０が実行するプログラムとして実現してもよい。
【００２８】
データ記憶部４００は、１つまたは複数のデータ記憶装置４１０を備えて構成することができる。データ記憶装置４１０の例としては、フラッシュメモリ、ハードディスクドライブ、光ディスク、光磁気ディスク、磁気テープ等があるが、特に限定しない。また、複数種類のデータ記憶装置をデータ記憶部に混在させてもよい。
【００２９】
ストレージシステム２００がホスト計算機１００からライト要求を受けた際に、コンペアライト処理が実行される。以下、幾つかのコンペアライト処理について説明する。なお、以下の説明では、ライト要求のあったデータをデータ記憶装置４１０ａ（図では「デバイスＡ」と表記）に格納する場合を考える。ここで、ホスト計算機１００からのライト要求に従うライト対象のデータを、「新データ」と呼び、新データの格納予定アドレス（記憶装置４１０ａの中のアドレス）に既に書かれているデータを「旧データ」と呼ぶ。
【００３０】
図２に、第一のコンペアライト処理のフローの一例を示す。図では、ステップを「Ｓ」と略記している。
【００３１】
第一のコンペアライト処理では、新データと旧データが、それぞれの部分同士ではなく全体同士が比較される。そのため、以下の説明では、データの全体を指す場合には、適宜、「データ全体」と表現することがある。
【００３２】
まず、ステップ５００において、所定のコンピュータプログラムを読み込んで実行するプロセッサ３３０が、受信したライト要求に従う新データ全体をキャッシュメモリ３５０にライトし、且つ、データ記憶装置４１０ａから旧データ全体をリードし、該旧データ全体をキャッシュメモリ３５０にライトする。具体的には、例えば、プロセッサ３３０は、受信したライト要求で指定されているライト先情報から、前述した格納予定アドレスを特定し、該特定した格納予定アドレスから、旧データ全体をリードする。
【００３３】
次に、ステップ５１０において、データ比較回路３６０が、キャッシュメモリ３５０上の新データ全体と旧データ全体とを比較する。この場合、例えば、プロセッサ３３０が、新データ及び旧データをそれぞれキャッシュメモリ３５０のどこにライトしたのかをデータ比較回路３６０に設定し、データ比較回路３６０が、その設定を契機に、設定されたアドレスから新データ全体及び旧データ全体を読んで、それらを比較しても良い。或いは、例えば、新データ及び旧データが、それぞれ、キャッシュメモリ３５０のどこにライトされるかが、予め決められていても良く、データ比較回路３６０は、その決められた場所から、新データ及び旧データを読み出しても良い。
【００３４】
ステップ５２０において、ステップ５１０の比較結果が一致していた場合は、ステップ５４０に進む。新データ全体と同じ内容である旧データ全体が既に格納予定アドレスに存在するため、わざわざ新データ全体をライトする必要がないためである。ステップ５４０では、例えば、プロセッサ３３０は、キャッシュメモリ３５０上の新データを消去可能な状態にして、コンペアライト処理を終了する。消去可能な状態とは、上書き禁止フラグのクリア等により、当該データの格納領域に対する他データのライトを許可するデータ管理状態を指す。
【００３５】
ステップ５２０において、ステップ５１０の比較結果が一致していない場合は、ステップ５３０に進む。新データ全体を格納予定アドレスにライトする必要があるためである。ステップ５３０では、例えば、プロセッサ３３０は、データ記憶装置４１０ａに新データをライトした後に、ステップ５４０に進む。
【００３６】
なお、ステップ５１０におけるデータの比較単位として、新データ全体を１つ以上に分割したものの１つ、データ記憶装置４１０ａのライト最小単位（一回のライトでの最小データサイズ）の整数倍、データ記憶装置４１０ａのリード最小単位（一回のリードでの最小データサイズ）の整数倍、データ記憶装置４１０ａの消去最小単位（一回の消去で消される最小データサイズ）の整数倍等が考えられる。
【００３７】
さて、図２を参照して説明した第一のコンペアライト処理では、新データと旧データを全体同士で比較しているが、次に説明する第二のコンペアライト処理では、部分的に比較した後に全体を比較することもできる。
【００３８】
図３は、第二のコンペアライト処理のフローの一例を示す。以下、第一のコンペアライト処理との相違点を主に説明し、重複する点については説明を省略或いは簡略する。
【００３９】
まず、ステップ６００において、プロセッサ３３０が、新データをキャッシュメモリ３５０にライトし、データ記憶装置４１０ａから旧データをリードし、キャッシュメモリ３５０にライトする。
【００４０】
次に、ステップ６１０において、データ比較回路３６０が、新データの一部と旧データの一部とを比較する。ここで、互いに比較されるデータ部分は、互いのデータ全体における同一の場所に存在するデータ部分である。例えば、新データの一部が、新データの先頭から所定位置までに存在するデータ部分であれば、それと比較される、旧データの一部も、旧データの先頭から所定位置までに存在するデータ部分となる。比較対象位置については後述する。
【００４１】
ステップ６２０において、ステップ６１０の部分比較結果が一致しなかった場合は、ステップ６５０に進む。すなわち、プロセッサ３３０が、データ記憶装置４１０ａに、新データ全体をライトする。その後に、ステップ６６０に進む。
【００４２】
ステップ６２０において、ステップ６１０の部分比較が一致した場合は、ステップ６３０に進む。すなわち、データ比較回路３６０が、新データ全体と旧データ全体を比較する（比較されていない残りの部分同士の比較でも良い）。
【００４３】
ステップ６４０において、ステップ６３０の全体比較結果が一致しなかった場合は、ステップ６５０に進む。すなわち、プロセッサ３３０が、データ記憶装置４１０ａに、新データをライトする。その後に、ステップ６６０に進む。
【００４４】
ステップ６４０において、ステップ６３０の全体比較結果が一致した場合は、ステップ６６０に進む。
【００４５】
ステップ６６０では、上記ステップ５４０と同様に、プロセッサ３３０が、キャッシュメモリ３５０上の新データを消去可能な状態にして、コンペアライト処理を終了する。
【００４６】
さて、ステップ６１０で述べた比較対象位置に関しては、例えば特開２００１−２０２２９５号公報に示すようなデータ保証コードのようなものであったり、ライトデータの先頭部分であったり、ライトデータの末尾であったり、ライトデータの任意の箇所でよい。
【００４７】
前述した図３の第二のコンペアライト処理は、図２の第一のコンペアライト処理と比べて、部分比較処理が余分に入っている。これにより、新データによるデータの更新が必要な場合に、代表的なデータを比較することにより、データ全体のコンペアを待たずに、更新必要性（つまり新データをデータ記憶装置４１０ａにライトする必要性）を判定することができる。このため、一定時間内に比較可能なデータ量が限られている場合に有効である。
【００４８】
なお、図３の第二のコンペアライト処理では、部分比較（ステップ６１０）の時点で旧データ全体をデータ記憶装置４１０からリードしているが、第三のコンペアライト処理では、全体比較が必要となってからリードしてもよい。
【００４９】
図４は、第三のコンペアライト処理のフローの一例を示す。
【００５０】
まず、ステップ７００において、プロセッサ３３０が、新データをキャッシュメモリ３５０にライトし、データ記憶装置４１０ａから、旧データの一部（部分比較対象部分）をリードし、キャッシュメモリ３５０にライトする。
【００５１】
次に、ステップ７１０において、データ比較回路３６０が、新データの一部と当該位置の旧データ（すなわち、リードされた、旧データの一部）とを比較する。
【００５２】
ステップ７２０において、ステップ７１０の部分比較結果が一致しなかった場合は、ステップ７６０に進む。すなわち、プロセッサ３３０が、データ記憶装置４１０ａに、新データをライトする。その後に、ステップ７７０に進む。
【００５３】
ステップ７２０において、ステップ７１０の部分比較が一致した場合は、ステップ７３０に進む。すなわち、プロセッサ３３０が、データ記憶装置４１０ａから、ライト対象領域全体の旧データ全体（新データ全体が書かれる予定の範囲にわたって存在する旧データ全体）をリードし、キャッシュメモリ３５０にライトする。その後、ステップ７４０に進む。すなわち、データ比較回路３６０が、新データ全体と旧データ全体とを比較する。
【００５４】
ステップ７５０において、ステップ７４０の全体比較結果が一致しなかった場合は、ステップ７６０に進む。すなわち、プロセッサ３３０が、データ記憶装置４１０ａに、新データをライトする。その後に、ステップ７７０に進む。
【００５５】
ステップ７５０において、ステップ７４０の全体比較結果が一致した場合は、ステップ７７０に進む。
【００５６】
ステップ７７０では、上記ステップ５４０と同様に、プロセッサ３３０が、キャッシュメモリ３５０上の新データを消去可能な状態にして、コンペアライト処理を終了する。
【００５７】
図４に示す第三のコンペアライト処理の場合、図３に示すコンペアライト処理と比べて、部分比較で不一致のときにデータ記憶装置４１０ａからリードする旧データの量が少なくなる。これにより、新データによるデータの更新が必要な場合に比較処理のための準備に要する時間が短縮可能となる。このため、データ更新が多い場合に有効である。
【００５８】
上記コンペアライト処理は、データ記憶部４００内の全ての記憶領域に適用することも可能であるが、一部のみに適用することも可能である。この場合、ホスト計算機１００からストレージシステム２００に対してライト要求があったならば、図５に示すように、例えば、プロセッサ３３０が、後述するコンペアライト設定管理テーブル９００を参照し、ライト対象のデバイスが、コンペア対象のデバイスであるかを判定する（ステップ８００）。ステップ８００にて対象であった場合には、前述した第一乃至第三のコンペアライト処理のいずれかを実行し（ステップ８１０）、対象でない場合には、コンペアライト処理を行わない、つまり、通常のライト処理を実行する（ステップ８２０）。
【００５９】
図６に、コンペアライト設定管理テーブル９００の構成例を示す。
【００６０】
コンペアライト設定管理テーブル９００では、一定の単位ごとにコンペアライト処理を実行するか否かの情報を保持する。一定の単位の例としては、ストレージシステム単位、論理デバイス（ＬＵ）単位、物理デバイス単位、データ記憶装置４１０の種類ごと等が考えられる。ちなみに、論理デバイスとは、一又は複数のデータ記憶装置４１０の記憶空間を利用して設定される論理的な記憶デバイスであり、論理ボリューム或いは論理ユニットと呼ばれるものである。
【００６１】
コンペアライト設定管理テーブル９００の設定値は、データ記憶装置４１０へのライト回数等ストレージシステム２００内部の状況に応じてプロセッサ３３０が変更したり、後述するように、ユーザが管理用計算機１１０を用いて変更したりすることができる。
【００６２】
具体的には、例えば、プロセッサ３３０が、各ＬＵ毎に、ライト回数、消去回数、ライト頻度（単位時間当たりのライト回数）及び消去頻度（単位時間当たりの消去回数）のうちの少なくとも一つを監視する。監視により得られた値が、所定の閾値を超えた場合に、プロセッサ３３０が、閾値を超えた値のＬＵを有するデータ記憶装置を特定し（例えばＬＵとデータ記憶装置との対応関係が記録されたテーブルを参照することにより特定し）、特定したデータ記憶装置に対して、コンペアを"有効"とすることができる。
【００６３】
図７に、ユーザが管理用計算機１１０を用いてコンペアライト設定管理テーブル９００の値を変更する画面を示す。
【００６４】
同画面では、コンペアライト処理の実行可否を管理する単位ごとに、その設定値の表示をするとともに、変更設定を行うことができる。なお、コンペアライト処理の実行可否の設定は、グラフィカルなインタフェースに限らず、コマンドラインのインタフェースのような別のインタフェースを用いることができる。
【００６５】
本実施例は、上述のように構成されているので、データ記憶装置へのライト回数を抑えることができる。これにより、書き込み回数に制限のあるデータ記憶装置を用いて構成するストレージシステムにおいて、記憶装置の長寿命化を図ることが可能となる。また、読み出し性能に比べて書き込み性能が悪いデータ記憶装置を用いて構成するストレージシステムにおいて、書き込み性能の向上を図ることが可能となる。
【実施例２】
【００６６】
次に、図８から図１０に基づいて、本発明の実施例２を説明する。本実施例は実施例１の変形例に該当するため、上述した構成と重複する構成の説明を省略或いは簡略し、相違点を中心に説明する。本実施例では、ＲＡＩＤ技術を用いて複数のデータ記憶装置４１０間で格納データに冗長性を持たせる場合を説明する。
【００６７】
図８を用いて、実施例２の説明に用いるＲＡＩＤ５の構成を示す。まず一般的な処理について説明し、後ほど本発明のコンペアライト処理を用いた方式について述べる。
【００６８】
ここでは、データ記憶装置４１０ａから４１０ｅの５台を用いた４Ｄ＋１Ｐ構成を考える（すなわち、５台のデータ記憶装置で構成されたＲＡＩＤグループがＲＡＩＤ５である場合を考える）。あるパリティを生成するためのデータグループに対し、記憶装置４１０ａに格納するデータをＤ１１、記憶装置４１０ｂに格納するデータをＤ１２、記憶装置４１０ｃに格納するデータをＤ１３、記憶装置４１０ｄに格納するデータをＤ１４、記憶装置４１０ｅに格納するパリティをＰ１と呼ぶ。このとき、Ｐ１＝Ｄ１１  ＸＯＲ  Ｄ１２  ＸＯＲ  Ｄ１３  ＸＯＲ  Ｄ１４の関係が成立する。なお、ＸＯＲは排他的論理和を指す。
【００６９】
この状態において、Ｄ１１をＤ１１'に更新する場合、Ｐ１もＰ１'に更新する必要があり、Ｐ１'＝Ｄ１１  ＸＯＲ  Ｄ１１'  ＸＯＲ  Ｐ１という式に基づき算出することが可能である。
【００７０】
この処理を、図９を用いて示す。まずステップ１０００において、プロセッサ３３０が、データ記憶装置４１０ａに格納されているデータＤ１１（旧データＤ１１）をリードし、キャッシュメモリ３５０に格納する。次に、ステップ１０１０において、プロセッサ３３０が、データ記憶装置４１０ｂに格納されているパリティＰ１（旧パリティＰ１）をリードし、キャッシュメモリ３５０に格納する。その後、ステップ１０２０において、プロセッサ３３０が、旧データＤ１１と新データＤ１１'と旧パリティＰ１を用いて、新パリティＰ１'を計算する。その後、ステップ１０３０において、プロセッサ３３０が、新データＤ１１'をデータ記憶装置４１０ａにライトし、ステップ１０４０において、新パリティＰ１'をデータ記憶装置４１０ｅにライトする。なお、ステップ１０５０を実行するタイミングは、ステップ１０００の前や、ステップ１０００とステップ１０１０の間など、どこでもよい。
【００７１】
次に、第二実施例での第一のコンペアライト処理について、図１０を用いて説明する。
【００７２】
まず、ステップ１１００において、プロセッサ３３０が、新データＤ１１´をキャッシュメモリ３５０にライトし、データ記憶装置４１０ａに格納されているデータＤ１１（旧データＤ１１）をリードしてキャッシュメモリ３５０にライトする。
【００７３】
次に、ステップ１１１０において、プロセッサ３３０が、データ記憶装置４１０ｂに格納されているパリティＰ１（旧パリティＰ１）をリードしてキャッシュメモリ３５０にライトする。
【００７４】
その後、ステップ１１２０において、データ比較回路３６０が、新データＤ１１'と旧データＤ１１とを比較する。
【００７５】
ステップ１１３０の判定において一致していた場合、データ記憶装置４１０ａのデータに対する更新がないため、ステップ１１４０に進む。つまり、プロセッサ３３０が、キャッシュメモリ３５０上の新データＤ１１'を消去可能な状態にする。
【００７６】
ステップ１１３０の判定において一致しなかった場合、ステップ１１５０に進む。すなわち、プロセッサ３３０が、旧データＤ１１と新データＤ１１'と旧パリティＰ１を用いて、新パリティＰ１'を計算する。その後、プロセッサ３３０が、データ記憶装置４１０ａへの新データＤ１１'のライト処理（ステップ１１６０）、データ記憶装置４１０ｅへの新パリティＰ１'のライト処理（ステップ１１７０）、キャッシュメモリ３５０上の新データＤ１１'を消去可能な状態にする処理（ステップ１１８０）、キャッシュメモリ３５０上の新パリティＰ１'を消去可能な状態にする処理（ステップ１１９０）を行い、コンペアライト処理を終了する。
【００７７】
また、ステップ１１６０からステップ１１９０の４つのステップに関しては、当該新データＤ１１´のライト処理を行った後にキャッシュメモリ３５０上のデータを消去可能な状態にするという順序を守っていれば、その順序を入れ替えて構成することもできる。
【００７８】
また、ステップ１１１０のパリティリードを行うタイミングに関しては、ステップ１１５０における新パリティＰ１'を計算する前であれば、どのタイミングでもよく、ステップ１１３０において比較結果が一致する場合にはリードしなくてもよい。
【００７９】
なお、上記例ではＲＡＩＤ５を用いて説明をしたが、同様にデータからパリティや誤り訂正符合を生成して格納する他のＲＡＩＤレベルを用いて構成することも可能である。
【００８０】
また、ＲＡＩＤ１のように同一のデータを複数のデータ記憶装置４１０にライトする場合は、実施例１においてデータを比較するステップにおいて、各データに関して比較を行うのではなく、例えば、複製されたデータを記憶するデータ記憶装置４１０のうちの一方から旧データをリードし、新データと比較することにより、旧データのリード回数および比較回数を削減して構成することも可能である。
【００８１】
また、本実施例２では、新データ全体と当該旧データを比較する場合を示したが、実施例１に示したように、部分的に比較した後に全体を比較するように構成することも可能である。
【００８２】
本実施例は、上述のように構成されているので、実施例１と同様の効果を得るだけでなく、ＲＡＩＤ構成を活用してコンペアライト処理にかかるオーバヘッドを削減することが可能となる。
【実施例３】
【００８３】
次に、図１１に基づいて、本発明の実施例３を説明する。本実施例は実施例１および実施例２の変形例に該当するため、上述した構成と重複する構成の説明を省略或いは簡略し、相違点を中心に説明する。本実施例では、新データと旧データの比較をデータ記憶部で行う場合を説明する。
【００８４】
図１１は、本実施例３におけるストレージシステムの構成例を示したものである。図１との違いは、ストレージ制御部３００内にデータ比較回路３６０を持たないことと、データ記憶装置４１０として内部にデータバッファ４３０およびデータ比較回路４４０およびプロセッサ４５０を持つ装置を用いることである。
【００８５】
本実施例では、実施例１においてストレージ制御部３００が行っていたデータ記憶装置４１０からの旧データのリードおよび新データと旧データの比較を、データ記憶装置４１０内の記憶装置制御部４２０で行う。すなわち、プロセッサ４５０が記憶領域４６０から旧データをデータバッファ４３０にリードした後に、データ比較回路４４０を用いてデータを比較し、比較結果に基づき必要に応じて記憶領域４６０へのライトを行う。
【００８６】
なお、データ記憶装置４１０全体あるいはデータ記憶装置４１０内のデータ記憶領域４６０の一定単位ごとに、コンペアライト処理の実行可否を設定可能なデータ記憶装置４１０を用いて構成する場合は、管理用計算機１１０からの設定やデータ記憶装置４１０の利用頻度等に応じて、ストレージ制御部３００からデータ記憶装置４１０に対して実行可否を設定することができる。
【００８７】
また、例えば、記憶領域460間でRAID構成を組んでもよい。具体的には、例えば、（１）データ記憶装置４１０ａがストレージシステムの障害部品交換単位である場合、或いは、（２）記憶領域４６０が交換単位である場合に、記憶領域460間でRAID構成を組んでもよい。
【００８８】
本実施例は、上述のように構成されているので、ストレージ制御部３００が、データ記憶装置４１０へのライトの度に旧データリードあるいは新データと旧データの比較等を行う必要がなくなるため、ストレージ制御部３００への負荷をデータ記憶部４００内へオフロードすることが可能となる。
【００８９】
なお、本発明は上述した各実施例に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。例えば、ストレージ制御部の構成は、上記の構成に代えて、上位装置（例えばホスト計算機或いは他のストレージシステム１）との通信を制御する複数の第一の制御部（例えば制御回路基板）と、データ記憶装置との通信を制御する複数の第二の制御部（例えば制御回路基板）と上位装置とデータ記憶装置の間で授受されるデータを記憶することができるキャッシュメモリと、ストレージシステムを制御するためのデータを記憶することができる制御メモリと、各第一の制御部、各第二の制御部、キャッシュメモリ及び制御メモリを接続する接続部（例えば、クロスバスイッチなどのスイッチ）とを備えることができる。この場合、第一の制御部と第二の制御部の一方が、又は双方が協働して、ストレージ制御部としての処理を行うことができる。この場合、例えば、データ比較回路は、第一の制御部、第二の制御部、接続部のいずれに存在しても良い。また、前述したプロセッサ３３０が行う処理は、例えば、第一の制御部に搭載されるプロセッサ、第二の制御部に搭載されるプロセッサのいずれで行われても良い。また、制御メモリは無くても良く、その場合、キャッシュメモリに、制御メモリが記憶する情報を記憶する領域が設けられても良い。
【図面の簡単な説明】
【００９０】
【図１】ストレージシステムの全体構成を示す説明図である。
【図２】実施例１での第一のコンペアライト処理のフローの一例を示す。
【図３】実施例１での第二のコンペアライト処理のフローの一例を示す。
【図４】実施例１での第三のコンペアライト処理のフローの一例を示す。
【図５】コンペアライト処理を実施しないデバイスがある場合の、ライト処理全体を示すフローチャートである。
【図６】コンペアライト処理の実施可否設定を管理するテーブルの構成例を示す。
【図７】コンペアライト処理の実施可否設定を行う画面を示すユーザインタフェースを示す説明図である。
【図８】ＲＡＩＤ５構成におけるデータ構造を示す説明図である。
【図９】ＲＡＩＤ５構成でのライト処理のフローチャートである。
【図１０】第二実施例において、ＲＡＩＤ５構成での第一のコンペアライト処理のフローチャートである。
【図１１】実施例３に係るストレージシステムの全体構成を示す説明図である。
【図１２】実施例２において、ＲＡＩＤ１構成でのコンペアライト処理についての説明図。
【符号の説明】
【００９１】
１００…ホスト計算機、１１０…管理用計算機、２００…ストレージシステム、３００…ストレージ制御部、３１０…ホストインタフェース、３２０…管理インタフェース、３３０…プロセッサ、３４０…ローカルメモリ、３５０…キャッシュメモリ、３６０…データ比較部、３７０…記憶装置用インタフェース、３７１…通信ケーブル、４００…データ記憶部、４１０…データ記憶装置、４２０…記憶装置制御部、４３０…データバッファ、４４０…データ比較部、４５０…プロセッサ、４６０…記憶領域、９００…コンペアライト設定管理テーブル、１０００…コンペアライト設定画面
【図１】
2008084270.tif 000003
【図２】
2008084270.tif 000004
【図３】
2008084270.tif 000005
【図４】
2008084270.tif 000006
【図５】
2008084270.tif 000007
【図６】
2008084270.tif 000008
【図７】
2008084270.tif 000009
【図８】
2008084270.tif 000010
【図９】
2008084270.tif 000011
【図１０】
2008084270.tif 000012
【図１１】
2008084270.tif 000013
【図１２】
2008084270.tif 000014