(57)【要約】【課題】ホストＩ／Ｏとデステージとのキャッシュブロック上での競合が頻繁に発生するのを抑制する。【解決手段】キャッシュ管理モジュール３３は、ＮＡＳコントローラ１０からのコミット処理またはチェックポイント処理の開始に伴う書き込み要求を受けて、要求されたデータをキャッシュメモリ３２上のキャッシュブロックに格納する。キャッシュ管理モジュール３３は、キャッシュメモリ３２上の更新されたキャッシュブロックのデータを、ログ領域３１１が確保されるディスク３１上の本来の書き込み先に書き込むためのデステージ操作を実行する場合、当該ログ領域３１１内を本来の書き込み先とするデータが格納されたキャッシュブロック（つまりログ領域相当のキャッシュブロック）がデステージ操作の対象となるのを抑制する。【選択図】      図１
2005258789.tif 000002
【特許請求の範囲】
【請求項１】
ホストからのデータ更新の履歴を時系列順に保存するための、論理アドレスが連続するログ領域が確保される２次記憶領域と、前記２次記憶領域に書き込むべきデータを一時格納するための、キャッシュブロック単位で管理されるライトバックキャッシュとを備えたストレージ装置において、
前記ホストのコミット処理またはチェックポイント処理の開始に伴う書き込み要求を受けて、要求されたデータを前記ライトバックキャッシュ上の前記キャッシュブロックに格納するデータ格納手段と、
前記ライトバックキャッシュ上の更新されたキャッシュブロックのデータを前記２次記憶上の本来の書き込み先に書き込むためのデステージ操作を制御するデステージ制御手段であって、前記ログ領域内を本来の書き込み先とする前記ライトバックキャッシュ上のデータが格納された、ログ領域相当のキャッシュブロックが前記デステージ操作の対象となるのを抑制するデステージ制御手段と
を具備することを特徴とするストレージ装置。
【請求項２】
前記ライトバックキャッシュはロウとカラムとによって管理されるセットアソシアティブ方式のキャッシュであり、
前記ストレージ装置は、前記ライトバックキャッシュ上の前記デステージ操作の対象となるダーティなキャッシュブロックの順番を、前記カラム毎にＬＲＵルールに従って更新される前記カラム毎のデステージ待ち行列により管理するデステージ待ちブロック管理手段を更に具備し、
前記デステージ制御手段は、前記カラム毎の前記デステージ待ち行列の後尾側のキャッシュブロックを前記ログ領域相当のキャッシュブロックであると推定し、当該デステージ待ち行列の最後尾に近いほどデステージ対象としての優先度を低くする
ことを特徴とする請求項１記載のストレージ装置。
【請求項３】
前記デステージ制御手段は、前記ライトバックキャッシュの前記各カラムにおいて、前記デステージの対象とすべきダーティなキャッシュブロックの占める割合が、前記ホストから予め通知される前記ログ領域の前記ライトバックキャッシュの容量に対する割合よりも大きい場合に、当該カラムに対応する前記デステージ待ち行列の先頭側のキャッシュブロックから前記デステージ操作の対象として選択する
ことを特徴とする請求項２記載のストレージ装置。
【請求項４】
前記ライトバックキャッシュ上の前記デステージ操作の対象となるダーティなキャッシュブロックの順番を、ＬＲＵルールに従って更新されるデステージ待ち行列により管理するデステージ待ちブロック管理手段を更に具備し、
前記デステージ制御手段は、前記デステージ待ち行列の後尾側のキャッシュブロックを前記ログ領域相当のキャッシュブロックであると推定し、当該デステージ待ち行列の最後尾に近いほどデステージ対象としての優先度を低くする
ことを特徴とする請求項１記載のストレージ装置。
【請求項５】
前記デステージ制御手段は、前記ライトバックキャッシュにおいて、前記デステージの対象とすべきダーティなキャッシュブロックの占める総容量が、前記ホストから予め通知される前記ログ領域の容量よりも大きい場合に、前記デステージ待ち行列の先頭側のキャッシュブロックから前記デステージ操作の対象として選択する
ことを特徴とする請求項４記載のストレージ装置。
【請求項６】
前記ホストから予め通知される前記ログ領域の論理アドレスをもとに、前記ライトバックキャッシュ上の、前記ログ領域の論理アドレスに対応する領域を、ログ相当領域として割り当てるログ相当領域割り当て手段を更に具備し、
前記データ格納手段は、前記書き込み要求で指定される論理アドレスが前記ログ領域の論理アドレス範囲内であるか否かにより、前記要求されたデータを前記ライトバックキャッシュ上の前記ログ相当領域内または前記ログ相当領域外のキャッシュブロックに格納し、
前記デステージ制御手段は、前記ライトバックキャッシュ上の前記ログ相当領域に含まれるキャッシュブロックを前記ログ領域相当のキャッシュブロックであると推定して前記デステージ操作の対象外とする
ことを特徴とする請求項１記載のストレージ装置。
【請求項７】
前記ライトバックキャッシュの前記キャッシュブロック毎に当該ブロックのアクセス頻度を管理するためのアクセス頻度管理手段を更に具備し、
前記デステージ制御手段は、前記アクセス頻度管理手段によって管理されている前記キャッシュブロック毎のアクセス頻度をもとに、当該アクセス頻度が一定レベルを超えるキャッシュブロックを前記ログ領域相当のキャッシュブロックである推定して前記デステージ操作の対象外とする
ことを特徴とする請求項１記載のストレージ装置。
【請求項８】
ホストからのデータ更新の履歴を時系列順に保存するための、論理アドレスが連続するログ領域が確保される２次記憶領域へのアクセスを制御するストレージコントローラにおいて、
前記２次記憶領域に書き込むべきデータを一時格納するための、キャッシュブロック単位で管理されるライトバックキャッシュと、
前記ホストのコミット処理またはチェックポイント処理の開始に伴う書き込み要求を受けて、要求されたデータを前記ライトバックキャッシュ上の前記キャッシュブロックに格納するデータ格納手段と、
前記ライトバックキャッシュ上の更新されたキャッシュブロックのデータを前記２次記憶上の本来の書き込み先に書き込むためのデステージ操作を制御するデステージ制御手段であって、前記ログ領域内を本来の書き込み先とする前記ライトバックキャッシュ上のデータが格納された、ログ領域相当のキャッシュブロックが前記デステージ操作の対象となるのを抑制するデステージ制御手段と
を具備することを特徴とするストレージコントローラ。
【請求項９】
ホストからのデータ更新の履歴を時系列順に保存するための、論理アドレスが連続するログ領域が確保される２次記憶領域と、当該２次記憶領域に書き込むべきデータを一時格納するための、キャッシュブロック単位で管理されるライトバックキャッシュとを備えたストレージ装置に適用される、前記ライトバックキャッシュを制御するためのライトバックキャッシュ制御方法であって、
前記ホストのコミット処理の開始に伴う書き込み要求を受けて、要求されたデータを前記ライトバックキャッシュ上の前記キャッシュブロックに格納するステップと、
前記ホストのチェックポイント処理の開始に伴う書き込み要求を受けて、要求されたデータを前記ライトバックキャッシュ上の前記キャッシュブロックに格納するステップと、
前記ライトバックキャッシュ上の更新されたキャッシュブロックのデータを前記２次記憶領域内の本来の書き込み先に書き込むためのデステージ操作を制御するステップであって、前記ログ領域内を本来の書き込み先とする前記ライトバックキャッシュ上のデータが格納された、ログ領域相当のキャッシュブロックが前記デステージ操作の対象となるのを抑制するステップと
を具備することを特徴とするライトバックキャッシュ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ログ領域が確保される２次記憶領域と、当該２次記憶領域に書き込むべきデータを一時格納するライトバックキャッシュとを備えたストレージ装置に係り、当該ライトバックキャッシュに記憶されているデータブロックを上記２次記憶領域に書き込むデステージ操作を含むキャッシュ制御に好適なストレージ装置、ストレージコントローラ及びライトバックキャッシュ制御方法に関する。
【背景技術】
【０００２】
２次記憶領域を備えたストレージ装置のホスト（上位装置）として、ネットワーク・アタッチド・ストレージ（Network Attached Storage)コントローラ（以下、ＮＡＳコントローラと称する）が知られている。このＮＡＳコントローラとストレージ装置とから構成される装置はＮＡＳ装置と呼ばれる。ＮＡＳコントローラは、ファイルサーバ、或いはデータベースサーバに代表されるサーバとして機能する。ＮＡＳコントローラは、当該コントローラを介してストレージ装置を利用するクライアントマシン（クライアントコンピュータ）とＬＡＮ（ローカル・エリアネット・ワーク）等のネットワークを介して接続される。
【０００３】
ＮＡＳコントローラは、一般にライトバックキャッシュを持つ。しかし、クライアントマシンからのネットワーク・ファイル・システム（Network File System）オペレーション、いわゆるＮＦＳオペレーションなどによるストレージ装置へのアクセスの際には、ＮＡＳコントローラは単純なライトバック動作を行うことができない。即ち、ＮＡＳコントローラは、クライアントマシンから送信されたデータを受け取ると、そのデータがストレージ装置（の２次記憶領域）に書き込まれたことを保障した上でクライアントマシンに受信完了を返す必要がある。その理由は、ＮＡＳコントローラがクライアントマシンから受け取ったデータを、当該コントローラ内のライトバックキャッシュに一時記憶しただけで、クライアントマシンに受信完了を返すと、次のような不具合が発生する可能性があるためである。つまり、ＮＡＳコントローラが実際にストレージ装置にデータを書き込む前にシステムダウンした場合には、受信完了したはずのデータが失われてしまうためである。
【０００４】
ところで、システムのファイルシステムレベルでの無矛盾性を保障し、且つストレージ装置に対する入出力（Ｉ／Ｏ）性能を向上する技術として、ジャーナルファイルシステムが知られている。ジャーナルファイルシステムは、クライアントマシンからのデータ書き込み（データ更新）要求により、ストレージ装置の２次記憶領域内のデータイメージを変更するような操作を行う必要がある場合、次の動作を行う。まずジャーナルファイルシステムは、要求されたデータを、ＮＡＳコントローラのライトバックキャッシュを介して、ログ領域と呼ばれる２次記憶領域内の特定の領域に一時保存して、クライアントマシンに書き込み完了を返す。その後の適切なタイミングで、ジャーナルファイルシステムは、上記書き込み要求で要求されたデータを２次記憶領域内の本来更新すべき箇所に実際に書き込む。この本来更新すべき箇所のデータを実データと呼び、この箇所へのデータ書き込みを、実データの書き込みまたは実データの更新と呼ぶ。この更新には、処理の高速化のために、ログ領域に保存されたデータではなくて、ＮＡＳコントローラのライトバックキャッシュに記憶されたデータが用いられる。
【０００５】
ログ領域は連続する論理アドレスの領域に割り当てられており、データ（データ更新の履歴）を時系列順に保存するためのリングバッファとして用いられる。ログ領域に保存されたデータの集合はジャーナルファイルと呼ばれる。ログ領域にデータを保存することは「コミット処理」と呼ばれる。また、実データの更新を行うことは「チェックポイント処理」と呼ばれる。
【０００６】
一旦コミット処理を経たオペレーションでは、いずれ対応する実データの更新が行われることが保障される。これに対し、コミットを完了していないオペレーションでは、実データの更新が行われることはない。特にコミット処理はファイルシステム的に意味のあるオペレーションの集合としてまとめられており、複数のＩ／Ｏを伴う処理をまとめて１つのコミット単位として扱うことが多い。このため、もし不慮のシステムダウンが発生した場合でも、コミット単位で、オペレーションと２次記憶領域内のデータイメージとの一貫性が保障できる。
【０００７】
コミット処理中は、対応するオペレーションに関して実データの更新は行われておらず、また上位装置への書き込み完了も返されていない。このため、コミット処理完了以前にシステムダウンが発生した場合は、上記オペレーションは行われなかったことと等価になる。コミット処理を完了すれば、チェックポイントを経なくても上位装置へ書き込み完了を返すことができる。但し、これを可能にするためには、一旦コミット処理を完了したデータはいずれ必ず実データに反映されることを保障しなければならない。そこでジャーナルファイルシステムには、システムダウン等により、コミット処理は終わっているもののチェックポイント処理が未完のデータが存在する場合に、当該データがシステムリブート時に実データに反映されることを保障する機能が要求される。
【０００８】
最近のＮＡＳコントローラは、上述の機能を持つジャーナルファイルシステムを適用するようになっている。この種のＮＡＳコントローラは、データをストレージ装置のログ領域に保存完了した時点でクライアントマシンに受信完了を返すことができる。したがって、この種のＮＡＳコントローラは、コミット処理以降は性能的に有利なライトバック動作を行うことが可能であり、ファイルシステムレベルでの無矛盾性も保障することができる。
【０００９】
クライアントマシンからのデータ書き込み要求に対するストレージ装置へのＩ／Ｏ性能を決める重要なポイントは、コミット処理、即ちログ領域への書き込み（ログ書き込み）の応答性である。コミット処理が遅い場合には、それだけクライアントマシンへの処理完了通知も遅くなる。
【００１０】
ところで、最近のストレージ装置は、ライトバックキャッシュ（ライトバック方式を適用するディスクキャッシュ）を備えているのが一般的である（例えば、特許文献１参照）。このストレージ装置のライトバックキャッシュは、バッテリバックアップ等により、不慮のシステムダウンの際にも当該キャッシュ上のデータが保護されるように設計されている。したがって、一旦ストレージ装置のライトバックキャッシュに保存されたデータは、いずれストレージ装置の２次記憶領域に書き込まれることが保障される。
【００１１】
そこで最近は、ログ書き込みの際に、ログ領域に書き込むべきデータを、その書き込み先に対応する、ストレージ装置のライトバックキャッシュ内の箇所に一時保存して、コミット処理を完了させることで、一層の性能向上が図られている。このストレージ装置のライトバックキャッシュを利用すると、チェックポイント処理も、ＮＡＳコントローラのライトバックキャッシュ上のデータを、２次記憶領域内の本来更新すべき箇所に対応する、ストレージ装置のライトバックキャッシュの箇所に一時保存するだけで、完了させることができる。
【特許文献１】特開平１０−２９３７１７（段落０００３乃至０００５）
【発明の開示】
【発明が解決しようとする課題】
【００１２】
上記した従来技術においては、ストレージ装置を利用するホスト（例えばＮＡＳコントローラ）が、当該ストレージ装置が有するライトバックキャッシュを利用してコミット処理及びチェックポイント処理を行うことにより、当該コミット処理及びチェックポイント処理の高速化が図られている。
【００１３】
ストレージ装置のライトバックキャッシュに保存されたデータは、当該ストレージ装置自身によって、ホストによるストレージ装置に対するＩ／Ｏ動作（以下、ホストＩ／Ｏと称する）とは非同期に、ストレージ装置の２次記憶領域に書き込まれる。この書き込みを、デステージまたはデステージ操作と呼ぶ。
【００１４】
さて、デステージ操作の対象となっているライトバックキャッシュ上のデータブロック（つまりキャッシュブロック）はリザーブ状態となり、ホストＩ／Ｏによるデータの更新を行うことはできない。したがって、ある論理アドレスに割り当てられたキャッシュブロックがデステージ中の場合、同じ論理アドレスに対するホストＩ／Ｏは、デステージ操作が完了してキャッシュブロックのリザーブ状態が解除されるまで待たされる。つまり、ライトバックキャッシュを備えたストレージ装置では、ホストＩ／Ｏとデステージとのキャッシュブロック上での競合が発生する。この競合の発生は、ストレージ装置としての性能に大きく影響を与える。特に、ホストがジャーナルファイルシステムを採用している場合には、この競合が頻繁に発生するため問題である。本発明者は、この競合が頻繁に発生する原因が、ホストＩ／Ｏによるログ書き込み（ストレージ装置の２次記憶領域に確保されているログ領域に対応する論理アドレスに対する書き込み）が繰り返し行われることにあると認識するに至った。
【００１５】
本発明は上記事情を考慮してなされたものでその目的は、ホストＩ／Ｏとデステージとのキャッシュブロック上での競合が頻繁に発生するのを抑制することができるストレージ装置、ストレージコントローラ及びライトバックキャッシュ制御方法を提供することにある。
【課題を解決するための手段】
【００１６】
本発明の１つの観点によれば、ホストからのデータ更新の履歴を時系列順に保存するための、論理アドレスが連続するログ領域が確保される２次記憶領域と、前記２次記憶領域に書き込むべきデータを一時格納するための、キャッシュブロック単位で管理されるライトバックキャッシュとを備えたストレージ装置が提供される。このストレージ装置は、上記ホストのコミット処理またはチェックポイント処理の開始に伴う書き込み要求を受けて、要求されたデータを上記ライトバックキャッシュ上の上記キャッシュブロックに格納するデータ格納手段と、上記ライトバックキャッシュ上の更新されたキャッシュブロックのデータを上記２次記憶上の本来の書き込み先に書き込むためのデステージ操作を制御するデステージ制御手段であって、上記ログ領域内を本来の書き込み先とする上記ライトバックキャッシュ上のデータが格納された、ログ領域相当のキャッシュブロックが上記デステージ操作の対象となるのを抑制するデステージ制御手段とを具備する。
【００１７】
上記の構成において、ホストからストレージ装置に対して、コミット処理の開始またはチェックポイント処理の開始に伴う書き込み要求が送られた場合、当該ストレージ装置では、当該書き込み要求に従って２次記憶領域にデータを書き込む代わりに、その２次記憶領域内の本来の書き込み先に対応する、ライトバックキャッシュ上のキャッシュブロックにデータを書き込む（格納する）動作（ホストＩ／Ｏ）が行われる。ここで、ホストからの書き込み要求で指定される２次記憶領域の書き込み先は、上記ログ領域内またはログ領域外（つまり実データ領域内）のいずれかである。
【００１８】
デステージ制御手段は、上記のデータ書き込み（ホストＩ／Ｏ）によって更新されたライトバックキャッシュ上のキャッシュブロックのデータを、上記２次記憶領域内の本来の書き込み先に書き込むためのデステージ操作の実行に際し、上記ログ領域内を本来の書き込み先とする上記ライトバックキャッシュ上のデータが格納されたキャッシュブロックが上記デステージ操作の対象となるのを抑制する。
【００１９】
一般に、ログ領域が上記２次記憶領域内に占める割合は極めて小さい。また、ログ領域はリング状に使用される。したがって、ログ領域内の各ブロックが使用される頻度は、ログ領域外（つまり実データ領域内）の各ブロックが使用される頻度に比べて著しく高い。そこで、上記の構成において、ログ領域内を本来の書き込み先とするライトバックキャッシュ上のデータが格納されたキャッシュブロック、つまりログ領域相当のキャッシュブロックが、上記デステージ操作の対象となるのを抑制することにより、当該キャッシュブロックが頻繁にリザーブ状態となるのを極力避けることができる。これにより、ホストＩ／Ｏとデステージとのキャッシュブロック上での競合が頻繁に発生するのを抑制でき、ログ書き込みのレスポンスタイムの遅延を抑止して、ストレージ装置としての性能を向上できる。
【００２０】
ここで、ログ領域相当のキャッシュブロックが、上記デステージ操作の対象となるのを抑制するためには、デステージ制御手段が、ライトバックキャッシュ上の各キャッシュブロックを、ログ領域相当のキャッシュブロックであるかそれ以外のキャッシュブロック（実データ領域相当のキャッシュブロック）であるかを判定または推定できれば良い。例えば、ホストからストレージ装置に対して、ログ領域が割り当てられる論理アドレス範囲が通知されるならば、上記判定が可能である。しかし、ログ領域内の各ブロックが使用される頻度が、実データ領域内の各ブロックが使用される頻度に比べて著しく高いことを利用するならば、使用される頻度が高いキャッシュブロックをログ領域相当のキャッシュブロックと推定しても、誤って推定される確率は極めて低く、したがってホストＩ／Ｏとデステージとのキャッシュブロック上での競合が頻繁に発生するのを効果的に抑制できる。
【発明の効果】
【００２１】
本発明によれば、ログ領域内を本来の書き込み先とするライトバックキャッシュ上のデータが格納されたキャッシュブロックがデステージ操作の対象となるのを抑制することにより、ホストＩ／Ｏとデステージとのキャッシュブロック上での競合が頻繁に発生するのを抑制でき、ログ書き込みのレスポンスタイムの遅延を抑止して、ストレージ装置としての性能を向上できる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の実施の形態につき図面を参照して説明する。  
図１は本発明の一実施形態に係るストレージシステムの構成を示すブロック図である。図１において、ＮＡＳコントローラ１０は例えばＳＣＳＩ（Small Computer System Interface）バス２０を介してストレージ装置３０と接続されている。ＳＣＳＩバス２０に代えてＦＣ（Fibre Channel）バスを用いることも可能である。ＮＡＳコントローラ１０はまた、ネットワーク４０を介してクライアントマシン（以下、クライアントと称する）４１-1〜４１-Nと接続されている。
【００２３】
ＮＡＳコントローラ１０は、例えば、ジャーナルファイルシステムを実現するためのファイルサーバとして機能し、クライアント４１-1〜４１-Nに対してネットワーク４０を介してストレージ装置３０のストレージ領域を提供する。ＮＡＳコントローラ１０は、ストレージ装置３０を管理するためのストレージ管理モジュール１１と、ライトバック方式を適用するキャッシュ（つまりライトバックキャッシュ）として用いられるキャッシュメモリ１２とを備えている。ストレージ管理モジュール１１は、ジャーナルファイルを含むファイルを管理するファイルシステム（図示せず）を含む。
【００２４】
ストレージ装置３０は、２次記憶領域を実現するためのディスク３１と、当該ディスク３１へのアクセスを制御するストレージコントローラＳＣとを備えている。ストレージコントローラＳＣは、ライトバックキャッシュ（ライトバック方式を適用するディスクキャッシュ）として用いられるキャッシュメモリ３２と、当該キャッシュメモリ３２を管理するキャッシュ管理モジュール３３とを備えている。キャッシュ管理モジュール３３は、ストレージ装置３０にインストールされた特定のソフトウェアプログラムを当該ストレージ装置３０が読み取って実行することにより実現される。このプログラムは、コンピュータで読み取り可能な記憶媒体、例えばフロッピー（登録商標）ディスクに代表される磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤに代表される光ディスク、フラッシュメモリに代表される半導体メモリ等の記憶媒体に予め格納して頒布可能である。また、このプログラムが、ネットワークを介してダウンロード（頒布）されても構わない。
【００２５】
ディスク３１は、物理ディスク、或いは当該物理ディスクの集合体としての論理ディスクのいずれであっても構わない。ディスク３１の領域（２次記憶領域）には、ログ領域３１１と実データ領域３１２とが確保されている。ログ領域３１１と実データ領域３１２とに割り当てられるディスク３１上の領域は、ＮＡＳコントローラ１０のストレージ管理モジュール１１によって指定される。ログ領域３１１は連続する論理アドレスの領域に割り当てられている。ログ領域３１１は、データ更新の履歴を時系列順に保存するための、論理アドレスが連続するリングバッファとして用いられる。
【００２６】
キャッシュメモリ３２は、バッテリバックアップ等によりシステムダウンの際にも当該キャッシュ上のデータが保護されるように構成されている。したがって、たとえキャッシュメモリ３２自体に揮発性メモリが用いられているとしても、当該キャッシュメモリ３２は機能的には一種の書き換え可能な不揮発性メモリである。キャッシュメモリ３２は、例えばｍウェイセットアソシアティブ方式（ｍは２以上の整数）のキャッシュである。
【００２７】
図２は、キャッシュメモリ３２の構成（キャッシュ構成）を示す。同図に示すように、キャッシュメモリ３２の領域は、ｍ行（ロウ）ｎ桁（カラム）に分割して、つまりｎ×ｍ個のキャッシュブロックに分割して用いられる。本実施形態では、キャッシュメモリ３２の一部の領域、例えば第０行乃至第ｋ−１行（つまりセット０乃至ｋ−１）のｋ行（ｋセット）は、ディスク３１のログ領域３１１に相当する特定領域（以下、ログ相当領域と称する）３２１に割り当てられる。キャッシュメモリ３２の残りの領域、つまり第ｋ行乃至第ｍ−１行（つまりセットｋ乃至ｍ−１）のｍ−ｋ行（ｍ−ｋセット）は、ディスク３１の実データ領域３１２に相当する特定領域（以下、実データ相当領域と称する）３２２に割り当てられる。
【００２８】
次に、図１のシステムの動作を説明する。  
まず、ＮＡＳコントローラ１０のシステムブート時の動作について、図３のシーケンスチャートを参照して説明する。
【００２９】
ＮＡＳコントローラ１０のストレージ管理モジュール１１は、システムブート時に、ストレージ装置３０のキャッシュ管理モジュール３３に対し、ディスク３１上でログ領域３１１として使用するディスク３１上の領域の論理アドレスを通知する（ステップＳ１）。すると、キャッシュ管理モジュール３３はログ相当領域割り当て手段として機能して、ストレージ管理モジュール１１によって通知されたログ領域３１１の論理アドレスに相当するキャッシュメモリ３２上の領域を、ログ相当領域３２１として割り当てる（ステップＳ２）。この場合、キャッシュメモリ３２上のログ相当領域３２１以外の領域は、ディスク３１上の実データ領域３１２に相当する実データのためのキャッシュ領域、即ち実データ相当領域３２２として使用することができる。
【００３０】
次に、クライアント４１-1からＮＡＳコントローラ１０に対するデータ書き込み要求が発生した場合の動作について、図４のシーケンスチャートを参照して説明する。  
今、クライアント４１-1からＮＡＳコントローラ１０に対して、データ書き込み要求が送信されたものとする（ステップＳ１１）。ＮＡＳコントローラ１０のストレージ管理モジュール１１は、クライアント４１-1からのデータ書き込み要求に応じて、要求された書き込みデータを受け取り、コミット処理を開始する（ステップＳ１２）。
【００３１】
ストレージ管理モジュール１１はまず、受け取ったデータをキャッシュメモリ１２に格納すると共に、ストレージ装置３０に対して書き込み要求（ここではログ書き込み要求）を送出する（ステップＳ１３）。この場合の書き込み要求（ログ書き込み要求）で指定される書き込み先（ログ書き込み先）の論理アドレスは、システムブート時にＮＡＳコントローラ１０のストレージ管理モジュール１１から通知されたログ領域の論理アドレスの範囲内、つまりディスク３１上に確保されるログ領域３１１の論理アドレスの範囲に入っている。
【００３２】
ストレージ装置３０のキャッシュ管理モジュール３３は、ＮＡＳコントローラ１０のストレージ管理モジュール１１からの書き込み要求を受け取ると、当該要求で指定される書き込み先の論理アドレスがログ領域３１１の論理アドレス範囲に入っているか否かを判定する。この例のように、、ストレージ管理モジュール１１から要求された書き込み先の論理アドレスがログ領域３１１の論理アドレス範囲に入っている場合、キャッシュ管理モジュール３３は当該書き込み要求がログ書き込み要求であると判定する。この場合、キャッシュ管理モジュール３３はデータ格納手段として機能して、要求されたデータを、キャッシュメモリ３２上のログ相当領域３２１に保存する（ステップＳ１４）。ここでは、要求されたデータは、ブロック単位で、ログ相当領域３２１内の第ｉ（ｉは０〜ｋ−１のいずれか）行（セットｉ）のうちの対応するカラムのキャッシュブロックに保存される。キャッシュ管理モジュール３３はステップＳ１４の後、ＮＡＳコントローラ１０のストレージ管理モジュール１１に対して書き込み完了を通知する（ステップＳ１５）。
【００３３】
ストレージ管理モジュール１１は、ストレージ装置３０のキャッシュ管理モジュール３３から書き込み完了（ここではログ書き込み完了）が通知されると、コミット処理を完了し、クライアント４１-1に書き込み完了を通知する（ステップＳ１６，Ｓ１７）。
【００３４】
その後、ＮＡＳコントローラ１０のストレージ管理モジュール１１はチェックポイント処理を開始する（ステップＳ１８）。ストレージ管理モジュール１１はまず、キャッシュメモリ１２上で更新されたデータ（つまり、キャッシュメモリ１２上での更新がストレージ装置３０に反映されていないダーティなデータ）を当該ストレージ装置３０の実データ領域３１２に書き込ませるために、ストレージ装置３０のキャッシュ管理モジュール３３に書き込み要求（実データ書き込み要求）を発行する（ステップＳ１９）。この場合の書き込み要求で指定される書き込み先（実データ書き込み先）の論理アドレスは、ログ領域３１１の論理アドレスの範囲から外れている。
【００３５】
ストレージ装置３０のキャッシュ管理モジュール３３は、ＮＡＳコントローラ１０のストレージ管理モジュール１１からの書き込み要求を受け取ると、当該要求で指定される書き込み先の論理アドレスがログ領域３１１の論理アドレス範囲に入っているか否かを判定する。この例のように、ストレージ管理モジュール１１から要求された書き込み先の論理アドレスがログ領域３１１の論理アドレス範囲から外れている場合、キャッシュ管理モジュール３３は当該書き込み要求がログ書き込み要求でない、つまり実データ書き込み要求であると判定する。この場合、キャッシュ管理モジュール３３はデータ格納手段として機能して、要求されたデータを、キャッシュメモリ３２上の実データ相当領域３２２に保存する（ステップＳ２０）。ここでは、要求されたデータは、ブロック単位で、実データ相当領域３２２内の第ｊ（ｊはｋ〜ｍ−１のいずれか）行（セットｊ）のうちの対応するカラムのキャッシュブロックに保存される。キャッシュ管理モジュール３３はステップＳ２０の後、ＮＡＳコントローラ１０のストレージ管理モジュール１１に対して書き込み完了を通知する（ステップＳ２１）。
【００３６】
ストレージ管理モジュール１１は、ストレージ装置３０のキャッシュ管理モジュール３３から書き込み完了（ここでは実データ書き込み完了）が通知されると、書き込みを完了した実データに対応して自身が管理しているログ上のデータを破棄して、チェックポイント処理を完了する（ステップＳ２２）。
【００３７】
ストレージ装置３０のキャッシュ管理モジュール３３は、ＮＡＳコントローラ１０からのストレージ装置３０に対するＩ／Ｏ（ホストＩ／Ｏ）とは非同期にデステージ制御手段として機能して、予め定められたタイミングでデステージ操作を行う。本実施形態の特徴は、このデステージ操作が、キャッシュメモリ３２の実データ相当領域３２２上で更新されたデータ（つまり、キャッシュメモリ３２の実データ相当領域３２２上での更新がストレージ装置３０に反映されていないダーティなデータ）のみを対象に行われる点にある（ステップＳ２３）。換言すれば、本実施形態の特徴は、キャッシュメモリ３２のログ相当領域３２１のデータブロックをデステージの対象としない点にある。上記の予め定められたタイミングとは、定期的なタイミングであるものとする。この他に、上記ステップＳ２０でキャッシュメモリ１２の実データ相当領域３２２にデータを格納しようとした際に、当該実データ相当領域３２２内の対応するカラムのキャッシュブロックが全てダーティブロックとなっている場合、つまり対応するカラムに空きブロックがない場合を、上記の予め定められたタイミングとしても良い。
【００３８】
以上の処理により、通常のＮＡＳコントローラ１０とクライアント４１-1〜４１-Nとの間のデータの受け渡しの途中で、ストレージ装置３０のキャッシュメモリ３２のログ相当領域３２１を対象とするデステージが発生するのを抑制することができる。つまり、ホストＩ／Ｏとデステージとのキャッシュブロック上での競合が頻繁に発生するのを抑制できる。この結果、たとえログ書き込みが頻繁に行われても、キャッシュメモリ３２上の対応するキャッシュブロックがリザーブ状態となることを抑止して、ログ書き込みの遅延を小さくすることが可能になり、ストレージ装置３０としての性能を向上できる。
【００３９】
なお、ＮＡＳコントローラ１０のシャットダウン処理、或いはＮＡＳコントローラ１０から要求されるキャッシュシンク処理（つまりキャッシュメモリ３２の内容をディスク３１に反映させるための処理）の場合は、キャッシュ管理モジュール３３は、ログ相当領域３２１と実データ相当領域３２２とに無関係に、キャッシュメモリ３２上の全ての更新されたデータをディスク３１に書き出す。
【００４０】
［第１の変形例］
次に、上記実施形態の第１の変形例について説明する。第１の変形例では、上記実施形態と異なって、ＮＡＳコントローラ１０のストレージ管理モジュール１１からストレージ装置３０のキャッシュ管理モジュール３３に対して、ディスク３１上でログ領域３１１として使用するディスク３１上の領域の論理アドレスは通知されない。このため、キャッシュ管理モジュール３３は、キャッシュメモリ３２のキャッシュメモリ領域を、ログ相当領域３２１と実データ相当領域３２２とに区分して用いることはできない。そこで第１の変形例では、キャッシュメモリ３２の各キャッシュブロックのうち、ログ領域３１１内のブロックが割り当てられるキャッシュブロック（以下、ログ領域相当のブロックまたはログ領域相当のキャッシュブロックと称する）のデータ（つまりログデータ）は頻繁に更新されることを利用して、キャッシュメモリ３２上のログデータを対象とするデステージの発生を抑制可能としている。つまり第１の変形例の特徴は、キャッシュメモリ３２の各キャッシュブロックのうちデステージの対象とするブロックを、アクセス頻度に応じて選択するようにした点にある。
【００４１】
そこで、ストレージ装置３０のキャッシュ管理モジュール３３は、キャッシュメモリ３２の各キャッシュブロックのアクセス頻度を管理するために、図５に示すアクセス頻度管理テーブル３３１を有する。このアクセス頻度管理テーブル３３１の各エントリは、キャッシュメモリ３２の各キャッシュブロックＢij（ｉ＝０〜ｍ−１，ｊ＝０〜ｎ−１）に対応付けられており、当該ブロックＢijのアクセス頻度を管理するためのアクセス頻度情報Ｆijを保持する。アクセス頻度情報Ｆijは、対応するブロックが一定時間にアクセス（更新）された回数を示す。但し、キャッシュブロックのデータがデステージされた場合には、アクセス頻度情報Ｆijは初期化され、当該アクセス頻度情報Ｆijの示すアクセス頻度は０となる。
【００４２】
次に、上記実施形態の第１の変形例の動作を、上記実施形態と同様に、クライアント４１-1からＮＡＳコントローラ１０に対するデータ書き込み要求が発生した場合を例に、図６のシーケンスチャートを参照して説明する。。
【００４３】
ＮＡＳコントローラ１０のストレージ管理モジュール１１は、クライアント４１-1からのデータ書き込み要求に応じて（ステップＳ３１）、要求された書き込みデータを受け取り、コミット処理を開始する（ステップＳ３２）。ストレージ管理モジュール１１は、受け取ったデータをキャッシュメモリ１２に格納すると共に、ストレージ装置３０に対して書き込み要求（ここではログ書き込み要求）を送出する（ステップＳ３３）。
【００４４】
ストレージ装置３０のキャッシュ管理モジュール３３は、ＮＡＳコントローラ１０のストレージ管理モジュール１１からの書き込み要求を受け取るとデータ格納手段として機能して、要求されたデータを、キャッシュメモリ３２上のキャッシュブロックに保存する（ステップＳ３４ａ）。同時にキャッシュ管理モジュール３３はアクセス頻度管理手段として機能して、要求されたデータが保存されたキャッシュブロックに対応するアクセス頻度管理テーブル３３１のエントリに保持されているアクセス頻度情報を更新する（ステップＳ３４ｂ）。その後、キャッシュ管理モジュール３３は、ＮＡＳコントローラ１０のストレージ管理モジュール１１に対して書き込み完了を通知する（ステップＳ３５）。
【００４５】
ストレージ管理モジュール１１は、ストレージ装置３０のキャッシュ管理モジュール３３から書き込み完了（ここではログ書き込み完了）が通知されると、コミット処理を完了し、クライアント４１-1に書き込み完了を通知する（ステップＳ３６，Ｓ３７）。
【００４６】
その後、ＮＡＳコントローラ１０のストレージ管理モジュール１１はチェックポイント処理を開始する（ステップＳ３８）。ストレージ管理モジュール１１はまず、キャッシュメモリ１２上で更新されたデータをディスク３１の実データ領域３１２に書き込ませるために、ストレージ装置３０のキャッシュ管理モジュール３３に書き込み要求（実データ書き込み要求）を発行する（ステップＳ３９）。
【００４７】
ストレージ装置３０のキャッシュ管理モジュール３３は、ＮＡＳコントローラ１０のストレージ管理モジュール１１からの書き込み要求（実データ書き込み要求）を受け取るとデータ格納手段として機能して、要求されたデータを、キャッシュメモリ３２上の対応するキャッシュブロックに保存する（ステップＳ４０ａ）。同時にキャッシュ管理モジュール３３はアクセス頻度管理手段として機能して、要求されたデータが保存されたキャッシュブロックに対応するアクセス頻度管理テーブル３３１のエントリに保持されているアクセス頻度情報を更新する（ステップＳ４０ｂ）。その後、キャッシュ管理モジュール３３は、ＮＡＳコントローラ１０のストレージ管理モジュール１１に対して書き込み完了を通知する（ステップＳ４１）。
【００４８】
ストレージ管理モジュール１１は、ストレージ装置３０のキャッシュ管理モジュール３３から書き込み完了（ここでは実データ書き込み完了）が通知されると、書き込みを完了したログ上のデータを破棄して、チェックポイント処理を完了する（ステップＳ４２）。
【００４９】
ストレージ装置３０のキャッシュ管理モジュール３３は、ＮＡＳコントローラ１０からのストレージ装置３０に対するＩ／Ｏ（ホストＩ／Ｏ）とは非同期にデステージ制御手段として機能して、上記実施形態と同様のタイミングでデステージ処理（ステップＳ４３）を行う。このデステージ処理（ステップＳ４３）の具体的な手順について、図７のフローチャートを参照して説明する。
【００５０】
まずキャッシュ管理モジュール３３は、アクセス頻度管理テーブル３３１の各エントリに保持されているアクセス頻度情報Ｆijを参照する（ステップＳ４３ａ）。次にキャッシュ管理モジュール３３は、各アクセス頻度情報Ｆijによって示される、キャッシュメモリ３２の各キャッシュブロックＢijのアクセス頻度をもとに、当該各キャッシュブロックのうち、アクセス頻度が一定レベルよりも低いキャッシュブロックを、実データ領域３１２内のブロックが割り当てられるキャッシュブロック（以下、実データ領域相当のブロックまたは実データ領域相当のキャッシュブロックと称する）であると推定して選択する（ステップＳ４３ｂ）。キャッシュ管理モジュール３３は、この選択されたキャッシュブロック、即ちアクセス頻度が一定レベルよりも低い、実データ領域相当のキャッシュブロックであると推定されたキャッシュブロックだけを対象にデステージ操作を行う（ステップＳ４３ｃ）。デステージされたキャッシュブロックのアクセス頻度情報は初期化される。ここでは、アクセス頻度が一定レベルを超えているキャッシュブロックは、ログ領域相当のキャッシュブロックと推定されて、デステージの対象から外される。
【００５１】
以上の処理により、アクセス頻度が一定レベルを超えているキャッシュブロックはデステージの対象とはならない。ここで、ディスク３１の記憶領域（２次記憶領域）のうち、ログ領域３１１の占める割合は実データ領域３１２に比較して著しく小さい。しかし、ログ書き込み要求と実データ書き込み要求とは同一回数発生する。このことは、ログ領域３１１内の各ブロックのアクセス頻度をＦ１、実データ領域３１２内の各ブロックのアクセス頻度をＦ２で表すと、Ｆ１≫Ｆ２となることを意味する。したがって、ストレージ装置３０のキャッシュメモリ３２の各キャッシュブロックのうちアクセス頻度が高いブロックは、ログ領域３１１に対応するキャッシュブロック（ログ領域相当のキャッシュブロック）である確率が高い。同様に、キャッシュメモリ３２の各キャッシュブロックのうちアクセス頻度が低いブロックは、実データ領域３１２に対応するキャッシュブロック（実データ領域相当のキャッシュブロック）である確率が高い。したがって第１の変形例においては、キャッシュメモリ３２のキャッシュブロックのうち、実データ領域相当のキャッシュブロックがデステージの対象となる確率が高い。よって第１の変形例によれば、通常のＮＡＳコントローラ１０とクライアント４１-1〜４１-Nとの間のデータの受け渡しの途中で、キャッシュメモリ３２上のログ領域相当のブロックを対象とするデステージ（つまりログデータのデステージ）が発生するのを抑制することができる。この結果、たとえログ書き込みが頻繁に行われても、キャッシュメモリ３２上の対応するキャッシュブロックがリザーブ状態となることを抑止して、ログ書き込みの遅延を小さくすることが可能になる。
【００５２】
なお、ＮＡＳコントローラ１０のシャットダウン処理、或いはＮＡＳコントローラ１０から要求されるキャッシュシンク処理の場合は、キャッシュ管理モジュール３３は、アクセス頻度に無関係に、キャッシュメモリ３２上の全ての更新されたデータをディスク３１に書き出す。
【００５３】
［第２の変形例］
次に、上記実施形態の第２の変形例について説明する。第２の変形例の特徴は、キャッシュメモリ３２の各キャッシュブロックのアクセス頻度を管理する代わりに、デステージの対象となるキャッシュブロックの順番を、ＬＲＵ（Least Recently Used）ルールに従って管理するようにした点にある。
【００５４】
そこで、ストレージ装置３０のキャッシュ管理モジュール３３は、キャッシュメモリ３２上のデステージの対象となるキャッシュブロック（つまりダーティブロック）の順番を管理するためのデステージ待ちブロック管理テーブルとしての、図８に示すデステージ待ち行列（デステージキュー）３３２を有する。このデステージ待ち行列３３２は、キャッシュメモリ３２上の各ダーティブロックＢijの識別子（ブロックＩＤ）の列であり、デステージの対象となるダーティブロックの列を表す。デステージ待ち行列３３２におけるブロックＩＤの並び順、つまりダーティブロックの並び順はＬＲＵルールに従って管理される。
【００５５】
次に、第２の変形例の動作の概要について説明する。まず、ＮＡＳコントローラ１０のストレージ管理モジュール１１は、システムブート時に、ストレージ装置３０のキャッシュ管理モジュール３３に対し、ディスク３１上でログ領域３１１として使用するディスク３１上の領域のサイズ（つまりログサイズ）を通知する。ここでは、キャッシュメモリ３２のキャッシュメモリ領域は、ログ相当領域３２１と実データ相当領域３２２とに区分されない。
【００５６】
ストレージ装置３０のキャッシュ管理モジュール３３は、キャッシュメモリ３２内のデステージ操作の対象となるダーティブロックの順番を、ＬＲＵルールに従って更新されるデステージ待ち行列３３２により管理する。つまりキャッシュ管理モジュール３３は、ダーティブロックであっても使用頻度の高いキャッシュブロックは、デステージ対象としての優先度を低くする。このため、ログ領域相当のキャッシュブロックのように、使用頻度の高いキャッシュブロックは他のダーティブロックよりもデステージの優先度が低くなる。更にキャッシュ管理モジュール３３は、キャッシュメモリ３２内のダーティブロックの総容量が、ＮＡＳコントローラ１０のストレージ管理モジュール１１から通知されたログサイズ以下の状態では、キャッシュメモリ３２内のダーティブロックは全てログ領域相当のキャッシュブロックである可能性が高いとして、デステージを行わない。以上の仕組みにより、使用頻度の高いログ領域相当のキャッシュブロックがデステージ対象として選択されることを避けることができる。
【００５７】
次に、第２の変形例の動作の詳細について、クライアント４１-1からＮＡＳコントローラ１０に対するデータ書き込み要求が発生した場合を例に、図９のシーケンスチャートを参照して説明する。
【００５８】
ＮＡＳコントローラ１０のストレージ管理モジュール１１は、クライアント４１-1からのデータ書き込み要求に応じて（ステップＳ５１）、要求された書き込みデータを受け取り、コミット処理を開始する（ステップＳ５２）。ストレージ管理モジュール１１は、受け取ったデータをキャッシュメモリ１２に格納すると共に、ストレージ装置３０に対して書き込み要求（ここではログ書き込み要求）を送出する（ステップＳ５３）。
【００５９】
ストレージ装置３０のキャッシュ管理モジュール３３は、ＮＡＳコントローラ１０のストレージ管理モジュール１１からの書き込み要求を受け取るとデータ格納手段として機能して、要求されたデータを、キャッシュメモリ３２上のキャッシュブロックに保存する（ステップＳ５４ａ）。同時にキャッシュ管理モジュール３３はデステージ待ちブロック管理手段として機能して、要求されたデータが保存されたキャッシュブロック（つまりダーティブロック）のＩＤを、デステージ待ち行列３３２の最後尾につなぐ（ステップＳ５４ｂ）。以下の説明では、説明を簡略化するために、デステージ待ち行列３３２がキャッシュブロック（ダーティブロック）の列であるとして扱う。その後、キャッシュ管理モジュール３３は、ＮＡＳコントローラ１０のストレージ管理モジュール１１に対して書き込み完了を通知する（ステップＳ５５）。
【００６０】
ストレージ管理モジュール１１は、ストレージ装置３０のキャッシュ管理モジュール３３から書き込み完了（ここではログ書き込み完了）が通知されると、コミット処理を完了し、クライアント４１-1に書き込み完了を通知する（ステップＳ５６，Ｓ５７）。
【００６１】
その後、ＮＡＳコントローラ１０のストレージ管理モジュール１１はチェックポイント処理を開始する（ステップＳ５８）。ストレージ管理モジュール１１はまず、キャッシュメモリ１２上で更新されたデータをディスク３１の実データ領域３１２に書き込ませるために、ストレージ装置３０のキャッシュ管理モジュール３３に書き込み要求（実データ書き込み要求）を発行する（ステップＳ５９）。
【００６２】
ストレージ装置３０のキャッシュ管理モジュール３３は、ＮＡＳコントローラ１０のストレージ管理モジュール１１からの書き込み要求（実データ書き込み要求）を受け取るとデータ格納手段として機能して、要求されたデータを、キャッシュメモリ３２上の対応するキャッシュブロックに保存する（ステップＳ６０ａ）。同時にキャッシュ管理モジュール３３はデステージ待ちブロック管理手段として機能して、要求されたデータが保存されたキャッシュブロックを、デステージ待ち行列３３２の最後尾につなぐ（ステップＳ６０ｂ）。その後、キャッシュ管理モジュール３３は、ＮＡＳコントローラ１０のストレージ管理モジュール１１に対して書き込み完了を通知する（ステップＳ６１）。
【００６３】
ストレージ管理モジュール１１は、ストレージ装置３０のキャッシュ管理モジュール３３から書き込み完了（ここでは実データ書き込み完了）が通知されると、書き込みを完了したログ上のデータを破棄して、チェックポイント処理を完了する（ステップＳ６２）。
【００６４】
ストレージ装置３０のキャッシュ管理モジュール３３は、ＮＡＳコントローラ１０からのストレージ装置３０に対するＩ／Ｏ（ホストＩ／Ｏ）とは非同期にデステージ制御手段として機能して、予め定められたタイミングで（例えば定期的に）デステージ処理（ステップＳ６３）を行う。このデステージ処理（ステップＳ６３）の具体的な手順について、図１０のフローチャートを参照して説明する。
【００６５】
まずキャッシュ管理モジュール３３は、キャッシュメモリ３２内のダーティブロックの数をカウントして、当該ダーティブロックの数からダーティブロックの総容量を算出する（ステップＳ６３ａ，Ｓ６３ｂ）。次にキャッシュ管理モジュール３３は、ダーティブロックの総容量が、ＮＡＳコントローラ１０のストレージ管理モジュール１１から通知されたログサイズを超えているかを判定する（ステップＳ６３ｃ）。キャッシュ管理モジュール３３は、ダーティブロックの総容量が、ログサイズを超えている場合に限り、キャッシュメモリ３２内のダーティブロックが、実データ領域相当のキャッシュブロックを含んでいるとして、デステージの対象となるキャッシュブロックを選択する（ステップＳ６３ｄ）。ここでは、ステージ待ち行列３３２によって管理されているダーティブロックのうち、ログサイズを超えた分の先頭側のダーティブロック、つまり最後にアクセスがあってからの時間経過がより大きいダーティブロックが、実データ領域相当のキャッシュブロックであると推定されて選択される。これに対し、ステージ待ち行列３３２の後尾側のダーティブロック、即ち頻繁にアクセスされるダーティブロックは、ログ領域相当のキャッシュブロックであると推定されて、デステージの対象から外される。キャッシュ管理モジュール３３は、ステップＳ６３ｃで選択されたダーティブロックを対象にデステージ操作を行う（ステップＳ６３ｅ）。デステージされたブロックは、デステージ待ち行列３３２から外される。
【００６６】
以上の処理により、キャッシュメモリ３２上の使用頻度の高いログ領域相当のキャッシュブロックがデステージ対象として選択されるのを抑制できる。よって第２の変形例によれば、通常のＮＡＳコントローラ１０とクライアント４１-1〜４１-Nとの間のデータの受け渡しの途中で、ログデータのデステージが発生するのを抑制することができる。この結果、たとえログ書き込みが頻繁に行われても、キャッシュメモリ３２上の対応するキャッシュブロックがリザーブ状態となることを抑止して、ログ書き込みの遅延を小さくすることが可能になる。
【００６７】
なお、ＮＡＳコントローラ１０のシャットダウン処理、或いはＮＡＳコントローラ１０から要求されるキャッシュシンク処理の場合は、キャッシュ管理モジュール３３は、デステージ待ち行列３３２の状態に無関係に、キャッシュメモリ３２上の全ての更新されたデータをディスク３１に書き出す。
【００６８】
［第３の変形例］
次に、上記実施形態の第３の変形例について説明する。第３の変形例の特徴は、デステージの対象となるキャッシュブロック（ダーティブロック）の順番を、キャッシュメモリ３２のカラム（キャッシュカラム）毎に、ＬＲＵルールに従って管理するようにした点にある。
【００６９】
そこで、ストレージ装置３０のキャッシュ管理モジュール３３は、キャッシュメモリ３２のカラム０〜ｎ−１に対応して、図１１に示すデステージ待ち行列（デステージキュー）３３２-0〜３３２-(n-1)を有する。デステージ待ち行列３３２-j（ｊ＝０〜ｎ−１）は、キャッシュメモリ３２のカラムｊに属する各ダーティブロックＢijのブロックＩＤの列であり、カラムｊにおいてデステージの対象となるダーティブロックの列を表す。デステージ待ち行列３３２-jにおけるブロックＩＤの並び順、つまりダーティブロックの並び順はＬＲＵルールに従って管理される。
【００７０】
次に、第３の変形例の動作の概要について説明する。まず、ＮＡＳコントローラ１０のストレージ管理モジュール１１は、システムブート時に、ストレージ装置３０のキャッシュ管理モジュール３３に対し、ディスク３１上でログ領域３１１として使用するディスク３１上の領域の、ストレージ装置３０のキャッシュメモリ３２の総容量に対する割合Ｒを通知する。ここでは、キャッシュメモリ３２のキャッシュメモリ領域は、ログ相当領域３２１と実データ相当領域３２２とに区分されない。
【００７１】
キャッシュメモリ３２は、図２に示されているように、ｍウェイセットアソシアティブ方式のキャッシュである。キャッシュメモリ３２の各カラム（キャッシュカラム）ｊには、論理アドレスに対して同一のハッシュ値を持つキャッシュブロックが割り当てられる。このため、ログ領域３１１のように論理アドレス上で連続する領域に相当するキャッシュブロックは、各カラムに一様に分散して割り当てられることになる。なお、上記実施形態、第１の変形例及び第２の変形例では、キャッシュメモリ３２は必ずしもｍウェイセットアソシアティブ方式のキャッシュである必要はない。
【００７２】
ストレージ装置３０のキャッシュ管理モジュール３３は、キャッシュメモリ３２内のデステージ操作の対象となるキャッシュブロックの順番を、カラムｊ毎にＬＲＵルールに従って更新されるデステージ待ち行列３３２-jにより管理する。つまりキャッシュ管理モジュール３３は、カラムｊに属するキャッシュブロックのうち、使用頻度の高いキャッシュブロックはダーティブロックであってもデステージ対象としての優先度を低くする。このため、ログ領域相当のキャッシュブロックのように、使用頻度の高いキャッシュブロックは他のダーティブロックよりもデステージの優先度が低くなる。更にキャッシュ管理モジュール３３は、カラムｊに属するキャッシュブロックの数に対するダーティブロックの数の割合Ｒｊが、ＮＡＳコントローラ１０のストレージ管理モジュール１１から通知された割合Ｒ以下の状態では、カラムｊに属するダーティブロックは全てログ領域相当のキャッシュブロックである可能性が高いとして、デステージを行わない。以上の仕組みにより、使用頻度の高いログ領域に相当するキャッシュブロックがデステージ対象として選択されることを避けることができる。
【００７３】
次に、第３の変形例の動作の詳細について、クライアント４１-1からＮＡＳコントローラ１０に対するデータ書き込み要求が発生した場合を例に、図１２のシーケンスチャートを参照して説明する。
【００７４】
ＮＡＳコントローラ１０のストレージ管理モジュール１１は、クライアント４１-1からのデータ書き込み要求に応じて（ステップＳ７１）、要求された書き込みデータを受け取り、コミット処理を開始する（ステップＳ７２）。ストレージ管理モジュール１１は、受け取ったデータをキャッシュメモリ１２に格納すると共に、ストレージ装置３０に対して書き込み要求（ここではログ書き込み要求）を送出する（ステップＳ７３）。
【００７５】
ストレージ装置３０のキャッシュ管理モジュール３３は、ＮＡＳコントローラ１０のストレージ管理モジュール１１からの書き込み要求を受け取るとデータ格納手段として機能して、要求されたデータを、キャッシュメモリ３２上のキャッシュブロックに保存する（ステップＳ７４ａ）。このキャッシュブロックは、書き込み要求で指定された論理アドレスで決まるキャッシュメモリ３２上のカラムｊに属するクリーンなキャッシュブロック（つまり、データ更新がディスク３１に既に反映されているキャッシュブロック）の中から選択される。同時にキャッシュ管理モジュール３３はデステージ待ちブロック管理手段として機能して、要求されたデータが保存されたキャッシュブロック（のＩＤ）を、デステージ待ち行列３３２-jの最後尾につなぐ（ステップＳ７４ｂ）。その後、キャッシュ管理モジュール３３は、ＮＡＳコントローラ１０のストレージ管理モジュール１１に対して書き込み完了を通知する（ステップＳ７５）。
【００７６】
ストレージ管理モジュール１１は、ストレージ装置３０のキャッシュ管理モジュール３３から書き込み完了（ここではログ書き込み完了）が通知されると、コミット処理を完了し、クライアント４１-1に書き込み完了を通知する（ステップＳ７６，Ｓ７７）。
【００７７】
その後、ＮＡＳコントローラ１０のストレージ管理モジュール１１はチェックポイント処理を開始する（ステップＳ７８）。ストレージ管理モジュール１１はまず、キャッシュメモリ１２上で更新されたデータをディスク３１の実データ領域３１２に書き込ませるために、ストレージ装置３０のキャッシュ管理モジュール３３に書き込み要求（実データ書き込み要求）を発行する（ステップＳ７９）。
【００７８】
ストレージ装置３０のキャッシュ管理モジュール３３は、ＮＡＳコントローラ１０のストレージ管理モジュール１１からの書き込み要求（実データ書き込み要求）を受け取るとデータ格納手段として機能して、要求されたデータを、キャッシュメモリ３２上の対応するカラムに属するキャッシュブロックに保存する（ステップＳ８０ａ）。同時にキャッシュ管理モジュール３３はデステージ待ちブロック管理手段として機能して、要求されたデータが保存されたキャッシュブロックを、デステージ待ち行列３３２-0〜３３２-(n-1)のうちの対応するデステージ待ち行列の最後尾につなぐ（ステップＳ８０ｂ）。その後、キャッシュ管理モジュール３３は、ＮＡＳコントローラ１０のストレージ管理モジュール１１に対して書き込み完了を通知する（ステップＳ８１）。
【００７９】
ストレージ管理モジュール１１は、ストレージ装置３０のキャッシュ管理モジュール３３から書き込み完了（ここでは実データ書き込み完了）が通知されると、書き込みを完了したログ上のデータを破棄して、チェックポイント処理を完了する（ステップＳ８２）。
【００８０】
ストレージ装置３０のキャッシュ管理モジュール３３は、ＮＡＳコントローラ１０からのストレージ装置３０に対するＩ／Ｏ（ホストＩ／Ｏ）とは非同期にデステージ制御手段として機能して、予め定められたタイミングで（例えば定期的に）デステージ処理（ステップＳ８３）を行う。このデステージ処理（ステップＳ８３）の具体的な手順について、図１３のフローチャートを参照して説明する。
【００８１】
まずキャッシュ管理モジュール３３は、キャッシュメモリ３２のカラムｊ毎にダーティブロック数をカウントして、当該カラムｊに属するキャッシュブロックの数に対するダーティブロックの数の割合Ｒｊを算出する（ステップＳ８３ａ，Ｓ８３ｂ，Ｓ８３ｃ，Ｓ８３ｇ，Ｓ８３ｈ）。次にキャッシュ管理モジュール３３は、カラムｊ毎に、ダーティブロックの数の割合Ｒｊが、ＮＡＳコントローラ１０のストレージ管理モジュール１１から通知された割合Ｒを超えているかを判定する（ステップＳ８３ｄ）。キャッシュ管理モジュール３３は、ＲｊがＲを超えているカラムｊに限り、当該カラムｊのダーティブロックが、実データ領域相当のキャッシュブロックを含んでいるとして、デステージの対象となるキャッシュブロックを選択する（ステップＳ８３ｅ）。ここでは、デステージ待ち行列３３２-jによって管理されているダーティブロックのうち、割合Ｒを超えた分の先頭側のダーティブロック、つまり最後にアクセスがあってから時間経過がより大きいダーティブロックが、実データ領域相当のキャッシュブロックであると推定されて選択される。これに対し、ステージ待ち行列３３２-jの後尾側のダーティブロック、即ち頻繁にアクセスされるダーティブロックは、ログ領域相当のキャッシュブロックであると推定されて、デステージの対象から外される。キャッシュ管理モジュール３３は、ステップＳ８３ｃで選択されたダーティブロックを対象にデステージ操作を行う（ステップＳ８３ｆ）。デステージされたキャッシュブロックは、デステージ待ち行列３３２-jから外される。
【００８２】
以上の処理により、キャッシュメモリ３２上の使用頻度の高いログ領域相当のキャッシュブロックがデステージ対象として選択されるのを、カラム単位で抑制できる。よって第２の変形例によれば、通常のＮＡＳコントローラ１０とクライアント４１-1〜４１-Nとの間のデータの受け渡しの途中で、ログデータのデステージが発生するのを抑制することができる。この結果、たとえログ書き込みが頻繁に行われても、キャッシュメモリ３２上の対応するキャッシュブロックがリザーブ状態となることを抑止して、ログ書き込みの遅延を小さくすることが可能になる。
【００８３】
なお、ストレージ装置３０のシャットダウン処理、或いはＮＡＳコントローラ１０から要求されるキャッシュシンク処理の場合は、キャッシュ管理モジュール３３は、デステージ待ち行列３３２-0〜３３２-(n-1)の状態に無関係に、キャッシュメモリ３２上の全ての更新されたデータをディスク３１に書き出す。
【００８４】
本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態または変形例に亘る構成要素を適宜組み合せてもよい。
【図面の簡単な説明】
【００８５】
【図１】本発明の一実施形態に係るストレージシステムの構成を示すブロック図。
【図２】図１中のキャッシュメモリ３２の構成を示すブロック図。
【図３】同実施形態におけるＮＡＳコントローラ１０のシステムブート時の動作手順を示すシーケンスチャート。
【図４】同実施形態においてクライアント４１-1からＮＡＳコントローラ１０に対するデータ書き込み要求が発生した場合の動作手順を示すシーケンスチャート。
【図５】同実施形態の第１の変形例で適用されるアクセス頻度管理テーブル３３１のデータ構造例を示す図。
【図６】同第１の変形例においてクライアント４１-1からＮＡＳコントローラ１０に対するデータ書き込み要求が発生した場合の動作手順を示すシーケンスチャート。
【図７】図６中のデステージ処理（ステップＳ４３）の具体的な手順を示すフローチャート。
【図８】同実施形態の第２の変形例で適用されるデステージ待ち行列３３２のデータ構造例を示す図。
【図９】同第２の変形例においてクライアント４１-1からＮＡＳコントローラ１０に対するデータ書き込み要求が発生した場合の動作手順を示すシーケンスチャート。
【図１０】図９中のデステージ処理（ステップＳ６３）の具体的な手順を示すフローチャート。
【図１１】同実施形態の第３の変形例で適用されるデステージ待ち行列３３２-0〜３３２-(n-1)のデータ構造例を示す図。
【図１２】同第３の変形例においてクライアント４１-1からＮＡＳコントローラ１０に対するデータ書き込み要求が発生した場合の動作手順を示すシーケンスチャート。
【図１３】図１２中のデステージ処理（ステップＳ８３）の具体的な手順を示すフローチャート。
【符号の説明】
【００８６】
１０…ＮＡＳコントローラ（ホスト）、１１…ストレージ管理モジュール、１２…キャッシュメモリ、３０…ストレージ装置、３１…ディスク（２次記憶領域）、３２…キャッシュメモリ（ライトバックキャッシュ）、３３…キャッシュ管理モジュール、４０…ネットワーク、４１-1〜４１-N…クライアント、３１１…ログ領域、３１２…実データ領域、３２１…ログ相当領域、３２２…実データ相当領域、３３１…アクセス頻度管理テーブル、３３２，３３２-0〜３３２-(n-1)…デステージ待ち行列、ＳＣ…ストレージコントローラ。
【図１】
2005258789.tif 000003
【図２】
2005258789.tif 000004
【図３】
2005258789.tif 000005
【図４】
2005258789.tif 000006
【図５】
2005258789.tif 000007
【図６】
2005258789.tif 000008
【図７】
2005258789.tif 000009
【図８】
2005258789.tif 000010
【図９】
2005258789.tif 000011
【図１０】
2005258789.tif 000012
【図１１】
2005258789.tif 000013
【図１２】
2005258789.tif 000014
【図１３】
2005258789.tif 000015