(57)【要約】【課題】切り替え前にキャッシュモジュールが有していたキャッシュデータを有効利用するストレージ装置、情報処理装置、キャッシュ制御プログラム及びキャッシュ制御方法を提供する。【解決手段】キャッシュメモリ２１４は、ストレージモジュール２３に接続し、ストレージモジュール２３の情報の一部を格納する。キャッシュメモリ２２４は、ストレージモジュール２４に接続し、ストレージモジュール２４の情報の一部を格納する。リクエスト処理部２１２は、キャッシュメモリ２１４又は２２４に格納されている情報を用いて、ストレージモジュール２３及び２４に対する情報の読み出し又は書き込みの処理を行う。切替管理部２６は、ストレージモジュール２３がキャッシュメモリ２２４と接続するように接続を切り替える。リード制御部２１６は、切替管理部２６による切り替え時に、キャッシュメモリ２１４に格納されている情報をキャッシュメモリ２２４へ移動する。【選択図】図１
2015169956.tif 000002
【特許請求の範囲】
【請求項１】
第１記憶部及び第２記憶部と、
前記第１記憶部に接続され、前記第１記憶部の情報の一部を格納する第１キャッシュメモリと、
前記第２記憶部に接続され、前記第２記憶部の情報の一部を格納する第２キャッシュメモリと、
前記第１キャッシュメモリ又は前記第２キャッシュメモリに格納されている情報を用いて、前記第１記憶部及び前記第２記憶部に対する情報の読み出し又は書き込みを行う情報処理部と、
前記第１記憶部が前記第２キャッシュメモリと接続するように接続を切り替える切替管理部と、
前記切替管理部による切り替え時に、前記第１キャッシュメモリに格納されている情報を前記第２キャッシュメモリへ移動する移動部と
を備えたことを特徴とするストレージ装置。
【請求項２】
前記移動部は、前記第１キャッシュメモリ及び前記第２キャッシュメモリに格納されている情報の使用頻度を基に、前記移動を行うことを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記移動部は、前記第１キャッシュメモリ及び前記第２キャッシュメモリに格納されている情報のアクセス履歴を基に、前記移動を行うことを特徴とする請求項１又は２に記載のストレージ装置。
【請求項４】
前記移動部は、前記第１キャッシュメモリに格納されている情報をアクセスされたタイミングが新しい順に情報を移動することを特徴とする請求項３に記載のストレージ装置。
【請求項５】
前記移動部は、前記第１キャッシュメモリに格納されている情報を移動するための前記第２キャッシュメモリの空き容量が足りない場合、前記第２キャッシュメモリに格納されている情報の内、アクセスされたタイミングが古い順に情報を破棄することを特徴とする請求項２又は３に記載のストレージ装置。
【請求項６】
前記第１キャッシュメモリと前記第２キャッシュメモリは、相互に接続され、他方に接続されている記憶部の情報の一部も管理し、
前記情報処理部は、前記第１記憶部に前記第１キャッシュメモリが接続され、前記第２記憶部に前記第２キャッシュメモリが接続されている場合に、前記第１記憶部又は前記第２記憶部の一方に対する処理において、前記第１キャッシュメモリ又は前記第２キャッシュメモリに格納されている情報を使用し、
前記移動部は、前記切替管理部による切り替え時に、前記第１記憶部の情報の内、前記第１キャッシュメモリに格納されている前記第１記憶部の情報の内、前記第２キャッシュメモリに格納されている前記第１記憶部の情報よりもアクセスされたタイミングが新しい情報を、前記第２キャッシュメモリに格納されている前記第１記憶部の情報と交換する
ことを特徴とする請求項１〜５のいずれか一つに記載のストレージ装置。
【請求項７】
前記第１キャッシュメモリと前記第２キャッシュメモリは、相互に接続され、他方に接続されている記憶部の情報の一部も管理し、
前記情報処理部は、前記第１記憶部に前記第１キャッシュメモリが接続され、前記第２記憶部に前記第２キャッシュメモリが接続されている場合に、前記第１記憶部又は前記第２記憶部の一方に対する処理において、前記第１キャッシュメモリ又は前記第２キャッシュメモリに格納されている情報を使用し、
前記移動部は、前記切替管理部による切り替え時に、前記第２キャッシュメモリに格納されている前記第１記憶部の情報に切替前情報を付加し、前記第１キャッシュメモリ及び第２キャッシュメモリに格納されている情報のアクセス履歴及び前記切替情報を基に、前記移動をおこなう
ことを特徴とする請求項１〜５のいずれか一つに記載のストレージ装置。
【請求項８】
前記移動部は、前記処理要求で指定された情報が前記第１キャッシュメモリに格納されている場合、前記切替前情報が付加された情報の内アクセスされたタイミングが最も古い情報と処理要求で指定された情報とを交換し、前記処理要求で指定された情報が前記第１キャッシュメモリ及び前記第２キャッシュメモリのいずれにも存在しない場合、前記切替前情報が付加された情報の内アクセスされたタイミングが最も古い情報を削除し、前記処理要求で指定された情報を格納し、前記処理要求で指定された情報が前記切替前情報が付加された情報である場合、該情報から前記切替前情報を削除することを特徴とする請求項７に記載のストレージ装置。
【請求項９】
情報処理部は、前記第１記憶部に前記第１キャッシュメモリが接続されている場合に、前記第１記憶部への情報の書き込み処理要求を受けると、前記第１記憶部に書き込む情報を前記第１キャッシュメモリへ格納し、前記切替管理部による切り替えが行われない場合、前記第１キャッシュメモリが格納する前記第１記憶部へ書き込む情報を前記第１記憶部に書き込み、前記切替管理部による切り替えが行われた場合、前記第２キャッシュメモリが格納する前記第１記憶部へ書き込む情報を前記第１記憶部に書き込み、
前記移動部は、前記切替管理部による切り替え時に、前記第１キャッシュメモリに格納されている前記第１記憶部へ書き込む情報を前記第２キャッシュメモリに移動する
ことを特徴とする請求項１に記載のストレージ装置。
【請求項１０】
演算処理装置及びストレージ装置を備えた情報処理システムであって、
前記演算処理装置は、前記ストレージ装置に対して、情報の読み出し又は書込みの処理を要求し、
前記ストレージ装置は、
第１記憶部及び第２記憶部と、
前記第１記憶部に接続され、前記第１記憶部の情報の一部を格納する第１キャッシュメモリと、
前記第２記憶部に接続され、前記第２記憶部の情報の一部を格納する第２キャッシュメモリと、
前記第１キャッシュメモリ又は前記第２キャッシュメモリに格納されている情報を用いて、前記第１記憶部及び前記第２記憶部に対する情報の読み出し又は書き込みを行う情報処理部と、
前記第１記憶部が前記第２キャッシュメモリと接続するように接続を切り替える切替管理部と、
前記切替管理部による切り替え時に、前記第１キャッシュメモリに格納されている情報を前記第２キャッシュメモリへ移動する移動部とを備えた
ことを特徴とする情報処理装置。
【請求項１１】
第１記憶部、第２記憶部、第１キャッシュメモリ及び第２キャッシュメモリを備えたストレージ装置におけるキャッシュ制御プログラムであって、
前記第１キャッシュメモリを前記第１記憶部に接続し、前記第１キャッシュメモリに前記第１記憶部の情報の一部を格納させ、
前記第２キャッシュメモリを前記第２記憶部に接続し、前記第２キャッシュメモリに前記第２記憶部の情報の一部を格納させ、
前記第１キャッシュメモリ又は前記第２キャッシュメモリに格納されている情報を用いて、前記第１記憶部及び前記第２記憶部に対する情報の読み出し又は書き込みを行い、
前記第１記憶部が前記第２キャッシュメモリと接続するように接続を切り替え、
切り替え時に、前記第１キャッシュメモリに格納されている情報を前記第２キャッシュメモリへ移動する
処理をコンピュータに実行させることを特徴とするキャッシュ制御プログラム。
【請求項１２】
第１記憶部、第２記憶部、第１キャッシュメモリ及び第２キャッシュメモリを備えたストレージ装置におけるキャッシュ制御方法であって、
前記第１キャッシュメモリを前記第１記憶部に接続し、前記第１キャッシュメモリに前記第１記憶部の情報の一部を格納させ、
前記第２キャッシュメモリを前記第２記憶部に接続し、前記第２キャッシュメモリに前記第２記憶部の情報の一部を格納させ、
前記第１キャッシュメモリ又は前記第２キャッシュメモリに格納されている情報を用いて、前記第１記憶部及び前記第２記憶部に対する情報の読み出し又は書き込みを行い、
前記第１記憶部が前記第２キャッシュメモリと接続するように接続を切り替え、
切り替え時に、前記第１キャッシュメモリに格納されている情報を前記第２キャッシュメモリへ移動する
ことを特徴とするキャッシュ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、情報処理装置、キャッシュ制御プログラム及びキャッシュ制御方法に関する。
【背景技術】
【０００２】
情報処理装置は、演算処理を行うホスト及びデータを格納するストレージ装置を備えるものが多い。ストレージ装置はハードディスクといった補助記憶装置を有する。また、ホストは、ストレージ装置が有する補助記憶装置に対してデータの読み出しや書き込みを行う。
【０００３】
ホストによる補助記憶装置に格納された情報へのアクセスを高速化するために、補助記憶装置とホストとの間に、半導体メモリを利用したバッファ記憶装置が設けられることがある。ディスク装置用のバッファ記憶装置は、ディスクキャッシュと呼ばれ、ストレージ装置内のディスク装置を制御するディスクコントローラ内に設けられることが多い。ハードディスクなどのディスク装置を有するモジュールは、ストレージモジュールと呼ばれる。また、ディスクキャッシュを有するモジュールは、キャッシュモジュールと呼ばれる。
【０００４】
各キャッシュモジュールが管理するディスクページは、そのキャッシュモジュールに接続されたストレージモジュールに格納されているとする。ここで、ディスクページとは、あらかじめ決められた固定長の記憶領域（ブロック）に格納された情報に対応する。また、「ディスクページを管理する」とは、そのディスクページに対するアクセス要求の受け付けを行うこと、並びに、そのディスクページに対する排他制御及び一貫性保持制御等を行うことを意味する。
【０００５】
近年、キャッシュモジュールとストレージモジュールとの間の接続関係を運用中に物理的あるいは論理的に切り替えることができるようになった。キャッシュモジュールとストレージモジュールとの間の接続関係の切り替えは負荷分散などに利用できる。また、切り替えを行うことで、個々のキャッシュモジュールの持つメモリを相互に利用することで、ストレージシステム全体としての効率を上げることができる。
【０００６】
ストレージ装置に関する従来技術としては、複数のディスクアレイ装置間データ移行を行いつつ、複数台のディスクアレイ装置を１つのディスクアレイ装置として運用する技術がある。また、キャッシュの効率的な運用のために、あるデータに最も頻繁にアクセスするコントローラが有するキャッシュメモリにそのデータを移動する従来技術がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０００−１８１７６３号公報
【特許文献２】特開２００２−１８２８６４号公報
【特許文献３】特開２００９−１９９５４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、キャッシュモジュールとストレージモジュールとの間の接続関係の切り替えを行った場合、切替先のキャッシュモジュールには切り替えたストレージモジュールのキャッシュデータがないので、キャッシュモジュールが有効に使用できるまでに時間がかかる。そのため、従来の切り替え技術では、切り替え前にキャッシュモジュールが有していたキャッシュデータを有効利用することが困難であった。
【０００９】
また、複数のディスクアレイ装置間データ移行を行う従来技術を用いても、キャッシュモジュール上のデータの移動は行われず、切り替え前にキャッシュモジュールが有していたキャッシュデータを有効利用することが困難である。
【００１０】
また、あるデータに対するアクセス数の多いコントローラに対応するキャッシュにそのデータを移動する従来技術を用いても、切り替えに際してキャッシュモジュール上のデータを有効利用することは困難である。
【００１１】
開示の技術は、上記に鑑みてなされたものであって、切り替え前にキャッシュモジュールが有していたキャッシュデータを有効利用するストレージ装置、情報処理装置、キャッシュ制御プログラム及びキャッシュ制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本願の開示するストレージ装置、情報処理装置、キャッシュ制御プログラム及びキャッシュ制御方法は、一つの態様において、第１記憶部及び第２記憶部を有する。さらに、前記第１記憶部に接続され、前記第１記憶部の情報の一部を格納する第１キャッシュメモリと、前記第２記憶部に接続され、前記第２記憶部の情報の一部を格納する第２キャッシュメモリとを有する。そして、情報処理部は、前記第１キャッシュメモリ又は前記第２キャッシュメモリに格納されている情報を用いて、前記第１記憶部及び前記第２記憶部に対する情報の読み出し又は書き込みを行う。切替管理部は、前記第１記憶部が前記第２キャッシュメモリと接続するように接続を切り替える。移動部は、前記切替管理部による切り替え時に、前記第１キャッシュメモリに格納されている情報を前記第２キャッシュメモリへ移動する。
【発明の効果】
【００１３】
本願の開示するストレージ装置、情報処理装置、キャッシュ制御プログラム及びキャッシュ制御方法の一つの態様によれば、切り替え前にキャッシュモジュールが有していたキャッシュデータを有効利用することができるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施例１に係る情報処理装置のブロック図である。
【図２】図２は、キャッシュ制御テーブルの一例の図である。
【図３】図３は、データ格納テーブルの一例の図である。
【図４】図４は、実施例１に係るストレージ装置における切り替え前の状態を表す概略図である。
【図５】図５は、実施例１に係るストレージ装置における切り替え直後の状態を表す概略図である。
【図６】図６は、実施例１に係るストレージ装置におけるキャッシュページ移動後の状態を表す概略図である。
【図７】図７は、実施例１に係るキャッシュページ移動の処理のシーケンス図である。
【図８】図８は、キャッシュの割り振りが行われている状態の切り替え前の状態を表す概略図である。
【図９】図９は、キャッシュの割り振りが行われている状態の切り替え直後の状態を表す概略図である。
【図１０】図１０は、キャッシュの割り振りが行われている状態のキャッシュページ移動後の状態を表す概略図である。
【図１１】図１１は、実施例２に係るキャッシュページ移動の処理のシーケンス図である。
【図１２】図１２は、実施例３に係るストレージ装置における切り替え前の状態を表す概略図である。
【図１３】図１３は、実施例３に係るストレージ装置における切り替え直後の状態を表す概略図である。
【図１４】図１４は、実施例３に係るストレージ装置におけるリード要求で指定されたデータが移動先のキャッシュメモリにあった場合のキャッシュページの移動を説明するための概略図である。
【図１５】図１５は、実施例３に係るストレージ装置におけるリード要求で指定されたデータが移動元のキャッシュメモリにあった場合のキャッシュページの移動を説明するための概略図である。
【図１６】図１６は、実施例４に係る情報処理装置のブロック図である。
【図１７】図１７は、キャッシュデータをライトバックするキャッシュモジュールの処理のフローチャートである。
【図１８】図１８は、転送されたライトバックのデータを書き込むキャッシュモジュールの処理のフローチャートである。
【図１９】図１９は、キャッシュモジュールのハードウェア構成の一例の図である。
【発明を実施するための形態】
【００１５】
以下に、本願の開示するストレージ装置、情報処理装置、キャッシュ制御プログラム及びキャッシュ制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示するストレージ装置、情報処理装置、キャッシュ制御プログラム及びキャッシュ制御方法が限定されるものではない。
【実施例１】
【００１６】
図１は、実施例１に係る情報処理装置のブロック図である。本実施例に係る情報処理装置は、ホスト１及びストレージ装置２を有する。
【００１７】
ホスト１は、アプリケーションを実行して演算処理を行う演算処理装置である。また、ストレージ装置２は、複数のハードディスクを備えた記憶装置である。ホスト１とストレージ装置２とは通信パス３１及び３２で接続されている。通信パス３１及び３２は、例えば、ファイバチャネルである。ホスト１は、ストレージ装置２からのデータの読み出し及びストレージ装置２へのデータの書き込みを通信パス３１及び３２を介して行う。
【００１８】
ストレージ装置２は、キャッシュモジュール２１及び２２、ストレージモジュール２３及び２４、接続先切替モジュール２５、並びに、切替管理部２６を有する。以下では、ストレージモジュール２３及び２４のそれぞれを区別しない場合、単にストレージモジュール２０という。ストレージモジュール２３が、「第１記憶部」の一例にあたる。また、ストレージモジュール２４が、「第２記憶部」の一例にあたる。
【００１９】
キャッシュモジュール２１は、ホスト間送受信部２１１、リクエスト処理部２１２、キャッシュ間転送部２１３、キャッシュメモリ２１４及びディスクアクセス制御部２１５を有する。リクエスト処理部２１２は、リード制御部２１６を有する。キャッシュメモリ２１４が、「第１キャッシュメモリ」の一例にあたる。
【００２０】
キャッシュモジュール２２は、ホスト間送受信部２２１、リクエスト処理部２２２、キャッシュ間転送部２２３、キャッシュメモリ２２４及びディスクアクセス制御部２２５を有する。リクエスト処理部２２２は、リード制御部２２６を有する。キャッシュメモリ２２４が、「第２キャッシュメモリ」の一例にあたる。
【００２１】
キャッシュモジュール２１とキャッシュモジュール２２とは、同じ機能を有する。そこで、以下の説明では、キャッシュモジュール２１を例に説明を行う。
【００２２】
ホスト間送受信部２１１は、通信パス３１を介してホスト１と接続している。ホスト間送受信部２１１は、キャッシュモジュール２１が管理するストレージモジュール２０に対するリード命令やライト命令を含むＩ／Ｏ要求の入力をホスト１から受ける。ここで、「キャッシュモジュール２１が管理するストレージモジュール２０」とは、キャッシュモジュール２１が接続されており、キャッシュモジュール２１が管理するディスクページを有するストレージモジュール２０をいう。
【００２３】
ホスト間送受信部２１１は、受信したＩ／Ｏ要求をリクエスト処理部２１２へ出力する。
【００２４】
また、ホスト間送受信部２１１は、ホスト１から受信したＩ／Ｏ要求に対する応答をリクエスト処理部２１２から受信する。そして、ホスト間送受信部２１１は、受信した応答をホスト１へ出力する。
【００２５】
リクエスト処理部２１２は、ホスト間送受信部２１１からＩ／Ｏ要求の入力を受ける。そして、リクエスト処理部２１２は、Ｉ／Ｏ要求がデータ書き込み要求であるライト要求の場合、ライト要求をディスクアクセス制御部２１５へ出力する。このリクエスト処理部２１２が、「情報処理部」の一例にあたる。
【００２６】
これに対して、Ｉ／Ｏ要求がデータの読み出し要求であるリード要求の場合、リクエスト処理部２１２は、リード制御部２１６により以下の処理を行う。
【００２７】
リード制御部２１６は、読み出しを指定されたデータがリクエスト処理部２１２が有するキャッシュメモリ２１４にあるか否かを判定する。リード制御部２１６は、キャッシュメモリ２１４に指定されたデータが格納されている場合、キャッシュメモリ２１４からデータを読み出す。そして、リード制御部２１６は、Ｉ／Ｏ要求の応答として読み出したデータをホスト間送受信部２１１へ出力する。
【００２８】
また、キャッシュメモリ２１４に指定されたデータが格納されていない場合、リード制御部２１６は、ディスクアクセス制御部２１５へリード要求を出力する。その後、リード制御部２１６は、リード要求の応答としてストレージモジュール２０から読み出されたデータの入力をディスクアクセス制御部２１５から受ける。そして、リード制御部２１６は、Ｉ／Ｏ要求の応答として受信したデータをホスト間送受信部２１１へ出力する。さらに、リード制御部２１６は、受信したデータをキャッシュメモリ２１４に格納する。この時、キャッシュメモリ２１４に空き容量がなければ最もアクセス時刻が古いデータをキャッシュメモリ２１４から削除して、受信したデータをキャッシュメモリ２１４に格納する。
【００２９】
さらに、リード制御部２１６は、キャッシュモジュール２１が管理するストレージモジュール２０の接続先の切り替えが発生した場合、キャッシュページの移動指示を切替管理部２６から受信する。
【００３０】
リード制御部２１６は、図２に示すキャッシュ制御テーブル１００を記憶している。図２は、キャッシュ制御テーブルの一例の図である。
【００３１】
キャッシュ制御テーブル１００は、キャッシュページの情報を格納したテーブルである。キャッシュ制御テーブル１００には、キャッシュページが格納されているストレージモジュールの識別情報１０１、キャッシュページが格納されているストレージモジュール上の位置１０２、キャッシュモジュールのデータ長１０３が格納されている。さらに、キャッシュモジュールテーブル１００には、タイムスタンプ１０４、書込フラグ１０５及びデータ格納アドレス１０６が格納されている。タイムスタンプ１０４は、キャッシュページに対する最新のアクセス時刻である。また、書込フラグ１０５は、データをキャッシュメモリ２１４から消すときに、ストレージモジュール２０にデータを書き込むか否かを示す情報である。「書込なし」は、ストレージモジュール２０への書き込みを行わないことを示している。「書込あり」は、ストレージモジュール２０への書き込みを行うことを示している。ただし、ストレージモジュール２０へのデータの書き込みはライト要求に対してキャッシュメモリ２１４を用いる場合に実行される処理であり、本実施例では、ライト要求に対してキャッシュメモリ２１４を使用しないため、書込フラグはすべて「書込なし」になる。また、データ格納アドレス１０６は、そのキャッシュページのデータがキャッシュメモリ２１４のどこに格納されているかを表す情報である。
【００３２】
また、図３は、データ格納テーブルの一例の図である。図３のデータ格納テーブル１１０は、キャッシュメモリ２１４におけるデータの格納状態をテーブルで表している。データ格納テーブル１１０のように、キャッシュメモリ２１４には、アドレス１１１に対応させてデータ１１２が格納されている。
【００３３】
図１に戻って説明を続ける。リード制御部２１６は、キャッシュページ移動の通知を受けて、キャッシュ制御テーブル１００のタイムスタンプ１０４を基に、記憶しているキャッシュページの内の最も新しいアクセス時刻のキャッシュページを抽出する。次に、リード制御部２１６は、抽出したキャッシュページのデータ格納アドレス１０６を取得する。そして、リード制御部２１６は、データ格納アドレス１０６に格納されているキャッシュページのデータをキャッシュメモリ２１４から取得する。以下では、キャッシュページのデータも合わせて、単に「キャッシュページ」という。リード制御部２１６は、取得したキャッシュページをキャッシュ間転送部２１３へ出力する。この時、リード制御部２１６は、キャッシュ制御テーブル１００に格納されている各キャッシュページに関する情報も一緒に出力する。
【００３４】
リード制御部２１６は、移動先となるキャッシュモジュール２２における接続が切り替えられるストレージモジュール２０用のキャッシュページの数になるまで、キャッシュページ移動指示を切替管理部２６から取得する。移動先となるキャッシュモジュール２２における接続が切り替えられるストレージモジュール２０用のキャッシュページの数を、以下では「移動先キャッシュページ数」という。そして、リード制御部２１６は、キャッシュページ移動指示を受信する毎に上記キャッシュページの移動を行う。
【００３５】
また、リード制御部２１６は、キャッシュモジュール２２が管理するストレージモジュール２０の接続先がキャッシュモジュール２１に切り替えられた場合、最も古いデータの破棄の通知を切替管理部２６から受信する。このキャッシュページの破棄を、ここではパージという。
【００３６】
そして、リード制御部２１６は、キャッシュモジュール２２に格納されていたキャッシュページの入力をキャッシュ間転送部２１３から受ける。この時、リード制御部２１６は、キャッシュページに関する情報も受信する。
【００３７】
受信したキャッシュページを格納する空き容量がキャッシュメモリ２１４に存在する場合、リード制御部２１６は、受信したキャッシュテーブルをキャッシュメモリ２１４に格納する。
【００３８】
一方、受信したキャッシュテーブルを格納する空き容量がキャッシュメモリ２１４に存在しない場合、リード制御部２１６は、キャッシュモジュール２２から受信したキャッシュページの最新のアクセス時刻を取得する。また、リード制御部２１６は、キャッシュメモリ２１４に格納されている各キャッシュページの最新のアクセス時刻をキャッシュ制御テーブル１００から取得する。そして、リード制御部２１６は、受信したキャッシュページ及び自己が有するキャッシュページうち、アクセス時刻が最も古いキャッシュページをパージし、残ったキャッシュページをキャッシュメモリ２１４に格納する。
【００３９】
リード制御部２１６は、キャッシュモジュール２１の移動先キャッシュページ数になるまで、最も古いデータのパージの指示を切替管理部２６から取得する。そして、リード制御部２１６は、最も古いデータのパージの指示を受信する毎に上記最も古いデータのパージ処理を行う。このリード制御部２１６が、「移動部」の一例にあたる。
【００４０】
キャッシュ間転送部２１３は、キャッシュモジュール２１が移動元となる接続の切り替えが発生した場合、移動先キャッシュページ数分のキャッシュページをリード制御部２１６から受信する。また、キャッシュ間転送部２１３は、受信したキャッシュページに関する情報もリード制御部２１６から受信する。そして、キャッシュ間転送部２１３は、受信したキャッシュページ及び受信した各キャッシュページに関する情報をキャッシュ間転送部２２３へ出力する。
【００４１】
また、キャッシュ間転送部２１３は、キャッシュモジュール２１が移動先となる接続の切り替えが発生した場合、キャッシュモジュール２１が移動先となる移動先キャッシュページ数分のキャッシュページをキャッシュ間転送部２２３から受信する。また、キャッシュ間転送部２１３は、受信したキャッシュページに関する情報もキャッシュ間転送部２２３から受信する。そして、キャッシュ間転送部２１３は、受信したキャッシュページ及び受信した各キャッシュページに関する情報をリード制御部２１６へ出力する。
【００４２】
ディスクアクセス制御部２１５は、リクエスト処理部２１２からＩ／Ｏ要求を受信する。そして、ディスクアクセス制御部２１５は、Ｉ／Ｏ要求にしたがってキャッシュモジュール２１が管理するストレージモジュール２３に対するデータの読み出し又は書き込みなどの処理を行う。
【００４３】
接続先切替モジュール２５は、ディスクアクセス制御部２１５及び２２５とストレージモジュール２３及び２４とを結ぶ経路を切り替えるスイッチ機構を有するモジュールである。接続先切替モジュール２５は、接続の切り替えの制御を切替管理部２６から受ける。そして、接続先切替モジュール２５は、切替管理部２６の制御によりディスクアクセス制御部２１５及び２２５とストレージモジュール２３及び２４とを結ぶ経路の切り替えを行う。
【００４４】
切替管理部２６は、例えば、操作者から切り替えの指示を受ける。そして、切替管理部２６は、受信した切り替えの指示にしたがい、接続先切替モジュール２５の経路を制御する。例えば、切替管理部２６は、ディスクアクセス制御部２１５とストレージモジュール２３とが接続されている状態で、ストレージモジュール２３をディスクアクセス制御部２２５に接続する指示を受ける。この場合、切替管理部２６は、ストレージモジュール２３の接続先をディスクアクセス制御部２１５からディスクアクセス制御部２２５に切り替えるように接続先切替モジュール２５を制御する。以下では、ストレージモジュール２３の接続先をディスクアクセス制御部２１５からディスクアクセス制御部２２５に切り替える場合を例に説明する。
【００４５】
また、切替管理部２６は、接続の切り替えが発生した場合、その後、切替管理部２６は、キャッシュモジュール２１及び２２にアクセスロックを指示する。次に、切替管理部２６は、移動元となるキャッシュモジュール２１にキャッシュページ移動指示を送信する。キャッシュモジュール２１からキャッシュページが移動されると、切替管理部２６は、移動したキャッシュページの数をカウントして求める。また、切替管理部２６は、キャッシュモジュール２１からキャッシュページが移動されると、移動先となるキャッシュモジュール２２に最も古いデータのパージの指示を送信する。
【００４６】
切替管理部２６は、キャッシュモジュール２１又は２２の移動先キャッシュページ数を記憶している。そして、切替管理部２６は、移動元のキャッシュモジュール２１から移動されたキャッシュページ数が、キャッシュモジュール２２の移動先キャッシュページ数に達すると、キャッシュモジュール２１及び２２のアクセスロックを解除し、キャッシュページの移動を終了する。
【００４７】
ストレージモジュール２３及び２４は、ハードディスクなどの補助記憶装置を備えたモジュールである。ストレージモジュール２３及び２４は、接続先切替モジュール２５による接続の切り替えにより、それぞれディスクアクセス制御部２１５又は２２５のいずれかに接続する。
【００４８】
そして、ストレージモジュール２３及び２４は、ディスクアクセス制御部２１５又は２２５のいずれかの接続されている側から管理される。例えば、ストレージモジュール２３は、ディスクアクセス制御部２１５に管理されている場合、ディスクアクセス制御部２１５から受信したライト要求にしたがいデータを書き込む。同様に、ストレージモジュール２３は、ディスクアクセス制御部２１５に管理されている場合、ディスクアクセス制御部２１５から受信したリード要求にしたがいデータを読み出しディスクアクセス制御部２１５へ出力する。
【００４９】
次に、図４〜６を参照して、本実施例に係る情報処理装置における接続切替時のキャッシュページの移動の全体的な流れについて説明する。図４は、実施例１に係るストレージ装置における切り替え前の状態を表す概略図である。図５は、実施例１に係るストレージ装置における切り替え直後の状態を表す概略図である。図６は、実施例１に係るストレージ装置におけるキャッシュページ移動後の状態を表す概略図である。図４〜６では、説明の都合上、キャッシュモジュール２１に含まれる各部については図示していない。以下の説明では、キャッシュモジュール２１を動作主体として説明するが、実際には、上述した各部が処理を行っている。
【００５０】
接続の切り替え前には、図４に示すように、ストレージモジュール２３の接続経路２５１は、キャッシュモジュール２１に接続されている。また、ストレージモジュール２４の接続経路２５２は、キャッシュモジュール２２に接続されている。
【００５１】
また、ストレージモジュール２３は、１０個のデータを有している。各データは、図４の＃０〜＃９によって表されるストレージモジュール２３上の位置に格納されている。また、ストレージモジュール２４は、１０個のデータを有している。各データは、図４の＃１０〜＃１９によって表されるストレージモジュール２４上の位置に格納されている。以下では、各データをその位置を用いて表す。例えば、ストレージ装置２３の＃０に格納されているデータは「データ＃０」とあらわす。
【００５２】
そして、図４に示すように、キャッシュモジュール２１は、ストレージモジュール２３用のキャッシュページの管理用ポインタ５１１及びストレージモジュール２４用のキャッシュページの管理用ポインタ５１２を有している。また、キャッシュモジュール２２は、ストレージモジュール２３用のキャッシュページの管理用ポインタ５２１及びストレージモジュール２４用のキャッシュページの管理用ポインタ５２２を有している。
【００５３】
さらに、管理用ポインタ５１１から延びる矢印の先には、格納されているキャッシュページの最新のアクセス時刻が記載されている。各アクセス時刻は右に伸びる矢印で接続されている。右に伸びる矢印は、矢印の元のキャッシュページよりも矢印の先のキャッシュページの方が、アクセス時刻が前であることを表している。すなわち、管理用ポインタに近いほど、新しくアクセスされたキャッシュページを表している。アクセス時刻は「ｔｋ」と表し、ｋの値が大きいほどより新しくアクセスされたことを表している。さらに、各キャッシュページのアクセス時刻から下に伸びる矢印の先にそのキャッシュページのデータが記されている。例えば、キャッシュモジュール２１には、最も古いアクセス時刻ｔ２にデータ＃２が格納されている。また、キャッシュモジュール２１には、次に古いアクセス時刻ｔ４にデータ＃３が格納されている。また、キャッシュモジュール２１には、最も新しいアクセス時刻ｔ６にデータ＃５が格納されている。
【００５４】
ここで、図４では、説明の都合上模式的に表したが、実際には、管理用ポインタ５１１は、リード制御部２１６が有している。また、各データは、キャッシュメモリ２１４に格納されている。
【００５５】
他の管理ポインタ５１２〜５２２に対して図示された情報も、以上の管理ポインタ５１１に対応するアドレス時刻及びデータの記載と同様の内容を表している。そして、アクセス時刻ｔ１〜ｔ６は、キャッシュモジュール２１及び２２の双方が格納しているデータ全部を対象とした場合の各データのアクセスの順番を表している。
【００５６】
そして、図４に示す状態でストレージモジュール２３の接続先がキャッシュモジュール２１からキャッシュモジュール２２に切り替わると、図５で表される状態になる。すなわち、ストレージモジュール２３の接続経路２５１の接続先がキャッシュモジュール２１からキャッシュモジュール２２に変更される。すなわち、この場合、キャッシュモジュール２１が移動元となり、キャッシュモジュール２２が移動先となる。
【００５７】
その後、キャッシュモジュール２１に格納されていたキャッシュページがキャッシュモジュール２２に移動され、ストレージ装置２は、図６の状態となる。ここでは、移動先キャッシュページ数が３であるとする。さらに、キャッシュモジュール２２は、最大３ページが格納されるとする。
【００５８】
具体的には、キャッシュモジュール２１は、ストレージモジュール２３用のキャッシュページの内の移動先キャッシュページ数分のキャッシュページをアクセス時刻の新しい順にキャッシュモジュール２２へ送信する。そして、キャッシュモジュール２２は、受信したキャッシュページと合わせて一番古いキャッシュページをパージする。
【００５９】
例えば、キャッシュモジュール２１は、最も新しいアクセス時刻ｔ６である、データ＃５を格納するキャッシュページをキャッシュモジュール２２へ送信する。キャッシュモジュール２２は、データ＃５を格納するキャッシュページを受信し、一番古いアクセス時刻ｔ１である、データ＃１９を格納するキャッシュページをパージする。次に、キャッシュモジュール２１は、格納しているキャッシュページの中で最も新しいアクセス時刻ｔ４である、データ＃３を格納するキャッシュページをキャッシュモジュール２２へ送信する。キャッシュモジュール２２は、データ＃３を格納するキャッシュページを受信し、一番古いアクセス時刻ｔ３である、データ＃１２を格納するキャッシュページをパージする。次に、キャッシュモジュール２１は、格納しているキャッシュページの中で最も新しいアクセス時刻ｔ２である、データ＃２を格納するキャッシュページをキャッシュモジュール２２へ送信する。キャッシュモジュール２２は、データ＃２を格納するキャッシュページを受信する。この場合、一番古いアクセス時刻はｔ２である。そこで、キャッシュモジュール２２は、受信したデータ＃２を格納するキャッシュページをパージする。
【００６０】
キャッシュモジュール２２のストレージモジュール２３用の移動先キャッシュページ数は３であるので、３回でキャッシュページの移動は終了する。
【００６１】
以上の処理を行うことで、ストレージ装置２は、接続の切り替え後に図６のような状態になる。
【００６２】
そして、図６以降は、キャッシュモジュール２２は、管理用ポインタ５２１が示すキャッシュページを用いてストレージモジュール２３の管理を行い、管理用ポインタ５２２が示すキャッシュページを用いてストレージモジュール２４の管理を行う。これにより、キャッシュモジュール２２は、キャッシュモジュール５１１が有していたストレージモジュール２３用のキャッシュページを切り替え後すぐに利用することができる。
【００６３】
次に、図７を参照して、キャッシュページ移動の全体的な処理の流れを説明する。図７は、実施例１に係るキャッシュページ移動の処理のシーケンス図である。ここでは、キャッシュモジュール２１からキャッシュモジュール２２へ切り替えが行われた場合で説明する。
【００６４】
切替管理部２６は、キャッシュモジュール２１にアクセスロックを指示する（ステップＳ１）。これを受けて、キャッシュモジュール２１は、アクセスロックを実行する。また、切替管理部２６は、キャッシュモジュール２２にアクセスロックを指示する（ステップＳ２）。これを受けて、キャッシュモジュール２２は、アクセスロックを実行する。
【００６５】
そして、切替管理部２６は、接続の切替指示を接続先切替モジュール２５に送信する（ステップＳ３）。接続先切替モジュール２５は、ストレージモジュール２３の接続先をキャッシュモジュール２１からキャッシュモジュール２２に切り替える（ステップＳ４）。
【００６６】
切替管理部２６は、キャッシュページ移動指示をキャッシュモジュール２１へ通知する（ステップＳ５）。
【００６７】
キャッシュモジュール２１は、キャッシュページ移動指示を受信すると、最も新しいアクセス時刻のキャッシュページをキャッシュモジュール２２へ送信する（ステップＳ６）。その後、キャッシュモジュール２１は、キャッシュページ送信通知を切替管理部２６へ送信する（ステップＳ７）。
【００６８】
切替管理部２６は、キャッシュページ送信通知を受信すると、最も古いデータのパージ指示をキャッシュモジュール２２へ送信する（ステップＳ８）。
【００６９】
キャッシュモジュール２２は、最も古いデータのパージ指示を受信すると、受信したキャッシュページを格納する容量がキャッシュメモリ２１４に残っていればキャッシュページを格納する。また、受信したキャッシュページを格納する容量がキャッシュメモリ２１４に残っていなければ、キャッシュモジュール２２は、最も古いデータのパージ処理を行い、残りのキャッシュページをキャッシュメモリ２１４に格納する（ステップＳ９）。その後、キャッシュモジュール２２は、格納完了通知を切替管理部２６へ送信する（ステップＳ１０）。
【００７０】
切替管理部２６は、移動したキャッシュページの数を算出する。そして、切替管理部２６は、移動したキャッシュページの数が移動先キャッシュページ数に達したか否かを判定する（ステップＳ１１）。移動したキャッシュページの数が移動先キャッシュページ数に達していない場合（ステップＳ１１：否定）、切替管理部２６は、ステップＳ５に戻る。
【００７１】
これに対して、移動したキャッシュページの数が移動先キャッシュページ数に達した場合（ステップＳ１１：肯定）、切替管理部２６は、キャッシュモジュール２１にアクセスロック解除指示を送信する（ステップＳ１２）。これを受けて、キャッシュモジュール２１は、アクセスロックを解除する。また、切替管理部２６は、キャッシュモジュール２２にアクセスロック解除指示を送信する（ステップＳ１３）。これを受けて、キャッシュモジュール２２は、アクセスロックを解除する。
【００７２】
以上に説明したように、本実施例に係るストレージ装置は、ストレージモジュールに接続するキャッシュモジュールの切り替えが行われた場合に、移動元のキャッシュモジュールから移動先のキャッシュモジュールにキャッシュページを移動する。これにより、移動先のキャッシュモジュールは、移動元のキャッシュモジュールが有していた切替が行われたストレージモジュールのキャッシュページを切り替え直後から利用することができる。これにより、キャッシュページの有効利用ができ、ストレージシステムの性能を向上させることができる。
【００７３】
また、アクセス時刻が新しいデータは、使用頻度が高いと考えられるため、アクセス時刻がより新しいデータを移動することでキャッシュのヒット率を向上させることができ、ストレージシステムの性能をより向上させることができる。ただし、本実施例では、アクセス時刻を用いた場合で説明したが、使用頻度が高いデータを特定できる指標であれば他の指標を用いてもよく、例えば、アクセス回数などをデータ移動の指標として用いてもよい。
【実施例２】
【００７４】
次に、実施例２について説明する。本実施例に係るストレージモジュールは、キャッシュモジュールが、管理していないストレージモジュールのデータもキャッシュメモリに保持している。そして、そのストレージモジュールを管理するキャッシュモジュールは、他のキャッシュモジュールが保持しているデータをそのストレージモジュールに対するリード処理に使用できることが実施例１と異なる。
【００７５】
本実施例に係る情報処理装置のブロック図も図１で表される。以下の説明では、各部が実行する実施例１で説明した処理については説明を省略する。以下では、切り替え前の状態として、キャッシュモジュール２１がストレージモジュール２３を管理しており、キャッシュモジュール２２がストレージモジュール２４を管理している場合で説明する。
【００７６】
リード制御部２１６は、キャッシュモジュール２１が管理するストレージモジュール２３のアクセス頻度と、キャッシュモジュール２２が管理するストレージモジュール２４のアクセス頻度とを比較する。そして、ストレージモジュール２３がストレージモジュール２４よりも所定値以上アクセス頻度が高い場合、リード制御部２１６は、キャッシュモジュール２２における移動先キャッシュページ数分のキャッシュページをキャッシュ間転送部２１３へ出力する。
【００７７】
また、ストレージモジュール２４がストレージモジュール２３よりも所定値以上アクセス頻度が高い場合、リード制御部２１６は、キャッシュモジュール２１における移動先キャッシュページ数分のキャッシュページをキャッシュ間転送部２１３から受信する。そして、リード制御部２１６は、受信したキャッシュページをキャッシュメモリ２１４に格納する。
【００７８】
以下では、キャッシュモジュールのキャッシュメモリに、そのキャッシュモジュールが管理していないストレージモジュールのデータを格納することを、「キャッシュページの振り分け」という。
【００７９】
リード制御部２１６は、キャッシュモジュール２１が移動元となる接続の切り替えが発生した場合、キャッシュページ移動指示を切替管理部２６から受信する。そして、リード制御部２１６は、最も新しいアクセス時刻のキャッシュページをキャッシュ間転送部２１３へ出力する。リード制御部２１６は、キャッシュモジュール２２の移動先キャッシュページ数分のキャッシュページの移動を行うまでキャッシュページの出力を繰り返す。
【００８０】
一方、キャッシュモジュール２１が移動先となる接続の切り替えが発生した場合、リード制御部２１６は、最も古いキャッシュページの移動指示を切替管理部２６から受信する。その後、リード制御部２１６は、キャッシュ間転送部２１３からキャッシュページを受信する。そして、リード制御部２１６は、受信したキャッシュページを格納する空き容量がキャッシュメモリ２１４にある場合、受信したキャッシュページをキャッシュメモリ２１４に格納する。
【００８１】
これに対して、受信したキャッシュページを格納する空き容量がキャッシュメモリ２１４に無い場合、リード制御部２１６は、最も古いアクセス時刻のキャッシュページをキャッシュ間転送部２１３へ出力し、残りのキャッシュページをキャッシュメモリ２１４に格納する。
【００８２】
キャッシュ間転送部２１３は、キャッシュモジュール２１が移動元となる接続の切り替えが発生した場合、キャッシュメモリ２１４に格納されていたキャッシュページの入力をリード制御部２１６から受ける。そして、キャッシュ間転送部２１３は、受信したキャッシュページをキャッシュ間転送部２２３へ出力する。リード制御部２１６は、キャッシュモジュール２１の移動先キャッシュページ数分のキャッシュページの移動を行うまでキャッシュページの格納及び出力を繰り返す。
【００８３】
また、キャッシュ間転送部２１３は、キャッシュモジュール２１が移動先となる接続の切り替えが発生した場合、キャッシュメモリ２２４に格納されていたキャッシュページの入力をキャッシュ間転送部２２３から受ける。そして、キャッシュ間転送部２１３は、受信したキャッシュページをリード制御部２１６へ送信する。
【００８４】
ここで、図８〜１０を参照して、ストレージモジュール２３を管理しないキャッシュモジュール２２に対してストレージモジュール２３用のキャッシュページの割り振りが行われている場合の、本実施例に係るキャッシュページの移動の詳細について説明する。
【００８５】
図８は、キャッシュの割り振りが行われている状態の切り替え前の状態を表す概略図である。図９は、キャッシュの割り振りが行われている状態の切り替え直後の状態を表す概略図である。図１０は、キャッシュの割り振りが行われている状態のキャッシュページ移動後の状態を表す概略図である。図８〜１０では、説明の都合上、キャッシュモジュール２１に含まれる各部については図示していない。以下の説明では、キャッシュモジュールを動作主体として説明するが、実際には、上述した各部が処理を行っている。
【００８６】
また、ここでは、キャッシュモジュール２２の移動先キャッシュページ数を２とする。また、キャッシュモジュール２２が格納できるキャッシュページ数の上限を３とする。
【００８７】
切り替え前は、図８に示すように、ストレージモジュール２３の接続経路２５１は、キャッシュモジュール２１に接続されている。また、ストレージモジュール２４の接続経路２５２は、キャッシュモジュール２２に接続されている。さらに、キャッシュページの割り振りが行われているため、キャッシュモジュール２２のストレージモジュール２４用の管理用ポインタ５２１には、ストレージモジュール２４上のデータ＃４及び＃８を格納するキャッシュページが割り当てられている。
【００８８】
そして、図８に示す状態でストレージモジュール２３の接続先がキャッシュモジュール２１からキャッシュモジュール２２に切り替わると、図９で表される状態になる。すなわち、ストレージモジュール２３の接続経路２５１の接続先がキャッシュモジュール２１からキャッシュモジュール２２に変更される。すなわち、この場合、キャッシュモジュール２１が移動元となり、キャッシュモジュール２２が移動先となる。
【００８９】
その後、キャッシュモジュール２１に格納されていたキャッシュページがキャッシュモジュール２２に移動され、ストレージ装置２は、図１０の状態となる。
【００９０】
具体的には、キャッシュモジュール２１は、最も新しいアクセス時刻ｔ６であるデータ＃５を格納するキャッシュページをキャッシュモジュール２２へ送信する。キャッシュモジュール２２は、データ＃５を格納するキャッシュページを受信し、一番古いアクセス時刻ｔ１である、データ＃８を格納するキャッシュページをキャッシュモジュール２１へ送信する。キャッシュモジュール２１は、データ＃８を格納するキャッシュページを受信し、格納する。
【００９１】
次に、キャッシュモジュール２１は、格納しているキャッシュページの中で最も新しいアクセス時刻ｔ４である、データ＃３を格納するキャッシュページをキャッシュモジュール２２へ送信する。キャッシュモジュール２２は、データ＃３を格納するキャッシュページを受信し、一番古いアクセス時刻ｔ２である、データ＃４を格納するキャッシュページをキャッシュモジュール２１へ送信する。キャッシュモジュール２１は、データ＃４を格納するキャッシュページを受信し、格納する。
【００９２】
キャッシュモジュール２２のストレージモジュール２３用の移動先キャッシュページ数は２であるので、これでキャッシュページの移動は終了する。
【００９３】
以上の処理を行うことで、ストレージ装置２は、接続の切り替え後に図１０のような状態になる。
【００９４】
そして、図１０以降は、キャッシュモジュール２２は、管理用ポインタ５２１が示すキャッシュページを用いてストレージモジュール２３の管理を行い、管理用ポインタ５２２が示すキャッシュページを用いてストレージモジュール２４の管理を行う。これにより、キャッシュモジュール２２は、キャッシュモジュール５１１が有していたストレージモジュール２３用のキャッシュページを切り替え後すぐに利用することができる。
【００９５】
次に、図１１を参照して、キャッシュページ移動の全体的な処理の流れを説明する。図１は、実施例２に係るキャッシュページ移動の処理のシーケンス図である。ここでは、キャッシュモジュール２１からキャッシュモジュール２２へ切り替えが行われた場合で説明する。
【００９６】
切替管理部２６は、キャッシュモジュール２１にアクセスロックを指示する（ステップＳ２１）。これを受けて、キャッシュモジュール２１は、アクセスロックを実行する。また、切替管理部２６は、キャッシュモジュール２２にアクセスロックを指示する（ステップＳ２２）。これを受けて、キャッシュモジュール２２は、アクセスロックを実行する。
【００９７】
そして、切替管理部２６は、接続の切替指示を接続先切替モジュール２５に送信する（ステップＳ２３）。接続先切替モジュール２５は、ストレージモジュール２３の接続先をキャッシュモジュール２１からキャッシュモジュール２２に切り替える（ステップＳ２４）。
【００９８】
切替管理部２６は、キャッシュページ移動指示をキャッシュモジュール２１へ通知する（ステップＳ２５）。
【００９９】
キャッシュモジュール２１は、キャッシュページ移動指示を受信すると、最も新しいアクセス時刻のキャッシュページをキャッシュモジュール２２へ送信する（ステップＳ２６）。その後、キャッシュモジュール２１は、キャッシュページ送信通知を切替管理部２６へ送信する（ステップＳ２７）。
【０１００】
切替管理部２６は、キャッシュページ送信通知を受信すると、最も古いキャッシュページ移動指示をキャッシュモジュール２２へ送信する（ステップＳ２８）。
【０１０１】
キャッシュモジュール２２は、最も古いキャッシュデータ移動指示を受信すると、受信したキャッシュページを格納する容量がキャッシュメモリ２１４に残っていればキャッシュページを格納する。また、受信したキャッシュページを格納する容量がキャッシュメモリ２１４に残っていなければ、キャッシュモジュール２２は、最も古いキャッシュページをキャッシュモジュール２１へ送信し、残りのキャッシュページをキャッシュメモリ２１４に格納する（ステップＳ２９）。その後、キャッシュモジュール２２は、キャッシュページ送信通知を切替管理部２６へ送信する（ステップＳ３０）。
【０１０２】
切替管理部２６は、移動したキャッシュページの数を算出する。そして、切替管理部２６は、移動したキャッシュページの数が移動先キャッシュページ数に達したか否かを判定する（ステップＳ３１）。移動したキャッシュページの数が移動先キャッシュページ数に達していない場合（ステップＳ３１：否定）、切替管理部２６は、ステップＳ２５に戻る。
【０１０３】
これに対して、移動したキャッシュページの数が移動先キャッシュページ数に達した場合（ステップＳ３１：肯定）、切替管理部２６は、キャッシュモジュール２１にアクセスロック解除指示を送信する（ステップＳ３２）。これを受けて、キャッシュモジュール２１は、アクセスロックを解除する。また、切替管理部２６は、キャッシュモジュール２２にアクセスロック解除指示を送信する（ステップＳ３３）。これを受けて、キャッシュモジュール２２は、アクセスロックを解除する。
【０１０４】
以上に説明したように、本実施例に係るストレージ装置は、キャッシュページの割り振りが行われている状態でも、接続の切り替えが発生した場合に、アクセス時刻の新しいキャッシュページを移動先のキャッシュモジュールに移動することができる。これにより、移動先のキャッシュモジュールは、アクセス時刻のより新しいキャッシュページを利用してストレージモジュール２３を管理することができる。アクセス時刻が新しければ、使用確率の高いデータと考えることができる。そのため、移動先のキャッシュモジュールは、使用確率の高いデータをキャッシュメモリに保持しておくことができ、ストレージ装置の利用効率を向上させることができる。
【実施例３】
【０１０５】
次に、実施例３について説明する。本実施例に係るストレージモジュールは、接続の切り替え直後に、切り替え前から格納しているキャッシュページであることを示す情報を付加し、その後、リード要求に応じてキャッシュページを移動することが実施例１及び２と異なる。本実施例では、実施例２の構成に機能を追加した場合について説明する。
【０１０６】
本実施例に係る情報処理装置のブロック図も図１で表される。以下の説明では、各部が実行する実施例２で説明した処理については説明を省略する。以下では、キャッシュモジュール２１がストレージモジュール２３を管理しており、キャッシュモジュール２２がストレージモジュール２４を管理している場合で説明する。
【０１０７】
リード制御部２１６は、現在使用するキャッシュページか切替前に使用されただけのキャッシュページかを判定する情報を各キャッシュページに付加する。例えば、リード制御部２１６は、現在管理用ポインタと切替前管理用ポインタを有する。そして、リード制御部２１６は、切り替え後に切替管理用ポインタに割り当てられているキャッシュページを切替前に使用されただけのキャッシュページとして判定し、切り替え後に現在用管理ポインタに割り当てられているキャッシュページを現在使用するキャッシュページとして判定する。以下に、リード制御部２１６のキャッシュページの移動について詳細に説明する。また、以下では、説明の都合上、リード制御部２１６とリード制御部２２６とが直接データの送受信を行っているように説明するが、実際には、リード制御部２１６とリード制御部２２６とは、キャッシュ間転送部２１３及び２２３を介してデータの送受信を行っている。
【０１０８】
リード制御部２１６は、現在管理用ポインタに割り当てられているキャッシュページの情報を表すキャッシュ制御テーブル１００（図２参照）を有している。さらに、リード制御部２１６は、切替前管理用ポインタに割り当てられているキャッシュページの情報を表すキャッシュ制御テーブル１００を有している。
【０１０９】
まず、リード制御部２１６は、ストレージモジュール２３のキャッシュページをストレージモジュール２３用の現在管理用ポインタに割り当てる。また、リード制御部２１６は、接続の切り替えが実行される前には、割り振られたストレージモジュール２４のキャッシュページをストレージモジュール２３用の現在管理用ポインタに割り当てる。
【０１１０】
そして、リード制御部２１６は、キャッシュモジュール２１が移動元となる接続の切り替えが発生した場合、接続切り替えの通知を切替管理部２６から受信する。そして、リード制御部２１６は、リード制御部２２６からキャッシュページ交換の依頼を受けた場合、指定されたキャッシュページをリード制御部２２６へ出力する。さらに、リード制御部２１６は、他のキャッシュページをリード制御部２２６から受信する。そして、リード制御部２１６は、受信したキャッシュページをキャッシュメモリ２１４に格納する。
【０１１１】
一方、キャッシュモジュール２１が移動先となる接続の切り替えが発生した場合、リード制御部２１６は、接続切り替えの通知を切替管理部２６から受信する。そして、リード制御部２１６は、ストレージモジュール２４用の現在管理用ポインタに割り当てられているストレージモジュール２４のキャッシュページを、ストレージモジュール２４用の切替前管理用ポインタに割り当てなおす。
【０１１２】
その後、リード制御部２１６は、ストレージモジュール２４に対するリード要求をホスト間送受信部２１１から受信する。そして、リード制御部２１６は、リード要求で指定されたデータが、キャッシュメモリ２１４もしくはキャッシュメモリ２２４のいずれかにあるか、又は、いずれにもないかを判定する。
【０１１３】
データがキャッシュメモリ２１４及び２２４のいずれにもない場合、リード制御部２１６は、ストレージモジュール２４からデータを読み出し、ホスト間送受信部２１１に送る。さらに、リード制御部２１６は、送信したデータをキャッシュメモリ２１４に格納し、ストレージモジュール２４用の現在管理用ポインタに割り当てる。この時、キャッシュメモリ２１４に空き容量がなければ、リード制御部２１６は、ストレージモジュール２４用の切替前管理用ポインタに割り当てられているキャッシュページの内の最もアクセス時刻が古いキャッシュページをパージする。
【０１１４】
また、データがキャッシュメモリ２１４のストレージモジュール２４の切替前管理用ポインタに割り当てられたキャッシュページにある場合、リード制御部２１６は、そのキャッシュページをストレージモジュール２４の現在管理用ポインタに割り当てる。さらに、リード制御部２１６は、そのキャッシュページから読み出したデータをホスト間送受信部２１１に送る。
【０１１５】
また、データがキャッシュメモリ２２４のストレージモジュール２４の現在管理用ポインタに割り当てられたキャッシュページにある場合、リード制御部２１６は、以下の処理を行う。
【０１１６】
キャッシュメモリ２１４に空き容量がない場合、リード制御部２１６は、交換対象のキャッシュページを特定する。具体的には、リード制御部２１６は、ストレージモジュール２４の切替前管理用ポインタに割り当てられているキャッシュページの中で最もアクセス時刻が古いキャッシュページを交換対象のキャッシュページとして特定する。そして、リード制御部２１６は、指定されたデータが格納されているキャッシュページと交換対象のキャッシュページとの交換をリード制御部２２６に通知する。その後、リード制御部２１６は、交換対象のキャッシュページをリード制御部２２６へ送る。また、リード制御部２１６は、指定されたデーたが格納されているキャッシュページをリード制御部２２６から受信する。リード制御部２１６は、受信したキャッシュページをキャッシュメモリ２１４に格納し、ストレージモジュール２４の現在管理用ポインタに割り当てる。さらに、リード制御部２１６は、そのキャッシュページから読み出したデータをホスト間送受信部２１１に送る。
【０１１７】
キャッシュメモリ２１４に空き容量がある場合、リード制御部２１６は、指定されたデータが格納されているキャッシュページをリード制御部２２６から受信する。リード制御部２１６は、受信したキャッシュページをキャッシュメモリ２１４に格納し、ストレージモジュール２４の現在管理用ポインタに割り当てる。さらに、リード制御部２１６は、そのキャッシュページから読み出したデータをホスト間送受信部２１１に送る。
【０１１８】
次に、図１２〜１５を参照して、本実施例に係るキャッシュページの移動の詳細について説明する。
【０１１９】
図１２は、実施例３に係るストレージ装置における切り替え前の状態を表す概略図である。図１３は、実施例３に係るストレージ装置における切り替え直後の状態を表す概略図である。図１４は、実施例３に係るストレージ装置におけるリード要求で指定されたデータが移動先のキャッシュメモリにあった場合のキャッシュページの移動を説明するための概略図である。図１５は、実施例３に係るストレージ装置におけるリード要求で指定されたデータが移動元のキャッシュメモリにあった場合のキャッシュページの移動を説明するための概略図である。図１２〜１５では、説明の都合上、キャッシュモジュール２１に含まれる各部については図示していない。以下の説明では、キャッシュモジュールを動作主体として説明するが、実際には、上述した各部が処理を行っている。
【０１２０】
現在管理用ポインタ５１１Ａは、ストレージモジュール２３の現在管理用ポインタである。切替前管理用ポインタ５１１Ｂは、ストレージモジュール２３の切替前管理用ポインタである。現在管理用ポインタ５１２Ａは、ストレージモジュール２４の現在管理用ポインタである。切替前管理用ポインタ５１２Ｂは、ストレージモジュール２４の切替前管理用ポインタである。現在管理用ポインタ５２１Ａは、ストレージモジュール２３の現在管理用ポインタである。切替前管理用ポインタ５２１Ｂは、ストレージモジュール２３の切替前管理用ポインタである。現在管理用ポインタ５２２Ａは、ストレージモジュール２４の現在管理用ポインタである。切替前管理用ポインタ５２２Ｂは、ストレージモジュール２４の切替前管理用ポインタである。
【０１２１】
また、ここでは、キャッシュモジュール２２の移動先キャッシュページ数を２とする。また、キャッシュモジュール２２が格納できるキャッシュページ数の上限を３とする。
【０１２２】
切り替え前は、図１２に示すように、ストレージモジュール２３の接続経路２５１は、キャッシュモジュール２１に接続されている。また、ストレージモジュール２４の接続経路２５２は、キャッシュモジュール２２に接続されている。
【０１２３】
キャッシュモジュール２１のストレージモジュール２３の現在管理用ポインタ５１１Ａには、データ＃２、＃３及び＃５を格納するキャッシュページが割り当てられている。さらに、キャッシュページの割り振りが行われているため、キャッシュモジュール２２のストレージモジュール２４の現在管理用ポインタ５２１Ａには、ストレージモジュール２４上のデータ＃４及び＃８を格納するキャッシュページが割り当てられている。また、現在管理用ポインタ５２２Ａには、データ＃１６を格納するキャッシュページが割り当てられている。
【０１２４】
そして、図１２に示す状態でストレージモジュール２３の接続先がキャッシュモジュール２１からキャッシュモジュール２２に切り替わると、図１３で表される状態になる。すなわち、ストレージモジュール２３の接続経路２５１の接続先がキャッシュモジュール２１からキャッシュモジュール２２に変更される。すなわち、この場合、キャッシュモジュール２１が移動元となり、キャッシュモジュール２２が移動先となる。さらに、キャッシュモジュール２２は、ストレージモジュール２４上のデータ＃４及び＃８を格納するキャッシュページを現在管理用ポインタ５２１Ａから切替前管理用ポインタ５２１Ｂに割り当てなおす。
【０１２５】
次に、キャッシュモジュール２２は、データ＃９のリード要求を受信すると、データ＃９がキャッシュモジュール２１及び２２のいずれのキャッシュページにもないことを確認する。そして、キャッシュモジュール２２は、データ＃９をストレージモジュール２３から読み出す。そして、キャッシュモジュール２２は、読み出したデータ＃９を格納するキャッシュページを現在管理用ポインタ５２１Ａに割り当てる。この時、キャッシュモジュール２２は、データ＃９を格納するキャッシュページのアクセス時刻を、最も新しいｔ７とする。さらに、キャッシュモジュール２２は、切替前管理用ポインタ５２１Ｂに割り当てられていたキャッシュページの内で最も古いアクセスタイムｔ１である、データ＃８を格納するキャッシュページをパージする。これにより、ストレージ装置２は、図１４の状態になる。
【０１２６】
次に、キャッシュモジュール２２は、データ＃３のリード要求を受信すると、データ＃３を格納するキャッシュページをキャッシュモジュール２１が有することを確認する。そして、キャッシュモジュール２２は、切替前管理用ポインタ５２１Ｂに割り当てられていたキャッシュページの内で最も古いアクセスタイムｔ２である、データ＃４を格納するキャッシュページを交換対象のキャッシュページとして特定する。そして、キャッシュモジュール２２は、データ＃３を格納するキャッシュページをキャッシュモジュール２１から取得し、データ＃４を格納するキャッシュページをキャッシュモジュール２１へ送信する。これにより、ストレージ装置２は、図１５の状態になる。
【０１２７】
また、上述したように、この他にも、切替前用キャッシュポインタ５２１Ｂに割り当てられているデータのリード要求を受ける場合がある。その場合は、キャッシュモジュール２２は、単に、現在管理用キャッシュポインタ５２１Ａにキャッシュページの割り当てを変えるだけなので説明を省略する。
【０１２８】
以上に説明したように、本実施例に係るストレージ装置は、接続の切り替え直後に、切り替え前から有しているキャッシュページに、切り替え前からのキャッシュページであることを示す情報を付加し、その後、リード要求に応じてキャッシュページを移動する。このような方法を用いても、キャッシュページの移動を行うことができ、ストレージ装置の利用効率を向上させることができる。
【実施例４】
【０１２９】
次に、実施例４について説明する。図１６は、実施例４に係る情報処理装置のブロック図である。本実施例に係るストレージモジュールは、ライト要求にしたがいデータを書き込む際にキャッシュモジュールにデータを格納した時点でＯＫを返し、後でディスクに書き込むことが実施例１〜４と異なる。この後でディスクにデータを書き込むことを、ライトバックと呼ぶ場合がある。本実施例では、実施例１の構成に機能を追加した場合について説明する。本実施例に係る情報処理装置のブロック図も図１で表される。以下の説明では、各部が実行する実施例２で説明した処理については説明を省略する。特に、接続の切り替え時のリード要求に対するキャッシュページの移動については上述した各実施例と同様であるので、説明を省略する。
【０１３０】
リクエスト処理部２１２、ライト制御部２１７を有する。また、リクエスト処理部２２２は、ライト制御部２２７を有する。ライト制御部２１７とライト制御部２２７とは同じ機能を有するので、以下では、ライト制御部２１７を例に説明する。
【０１３１】
ライト制御部２１７は、ホスト間送受信部２１１からストレージモジュール２３に対するライト要求を受けると、キャッシュメモリ２１４にライト要求で指定されたデータを書き込む。ライト制御部２１７は、リード制御部２１６との間でキャッシュ制御テーブル１００（図２参照）を共有している。そして、ライト制御部２１７は、キャッシュメモリ２１４に書き込んだデータのキャッシュページに関する情報をキャッシュ制御テーブル１００に書き込む。この時、ライト制御部２１７は、書込フラグ１０５を「書込あり」とする。書込フラグ１０５が書込ありのキャッシュページのデータはキャッシュモジュール上から消されない。
【０１３２】
そして、キャッシュメモリ２１４へのデータの書き込みが完了すると、ライト制御部２１７は、ホスト間送受信部２１１を介して、ライト完了の通知をホスト１に送信する。
【０１３３】
その後、ライト制御部２１７は、以下の場合に、キャッシュページに格納されている書込フラグが書込ありのキャッシュページのデータをストレージモジュール２３にライトバックする。まず、データを格納しようとした際にキャッシュモジュール２１にデータを格納する空きがなく、且つ一番古いアクセス時刻のキャッシュページの書込フラグが書込ありの場合に、ライト制御部２１７は、ライトバックを行う。また、データを格納してから所定時間経過した場合に、ライト制御部２１７は、ライトバックを行う。
【０１３４】
また、ライト制御部２１７は、キャッシュメモリ２１４へのデータの書き込み完了後に、キャッシュモジュール２１を移動元とする接続の切り替えが発生した場合、ライトバックを行う際には、ライトバックするデータをライト制御部２２７へ送る。
【０１３５】
ストレージモジュール２４にライトバックするデータのキャッシュメモリ２１４への書き込み完了後、キャッシュモジュール２１を移動先とする接続の切り替えが発生した場合、ライト制御部２１７は、ライトバックするデータをライト制御部２２７から受信する。そして、ライト制御部２１７は、受信したデータをストレージモジュール２４にライトバックする。そして、ライトバック完了後、ライト制御部２１７は、ライトバック完了の通知をライト制御部２２７へ送信する。
【０１３６】
次に、図１７を参照して、キャッシュデータをライトバックするキャッシュモジュールの処理について説明する。図１７は、キャッシュデータをライトバックするキャッシュモジュールの処理のフローチャートである。ここでは、キャッシュモジュール２１がストレージモジュール２３に対してライトバックを行う場合で説明する。
【０１３７】
ライト制御部２１７は、キャッシュメモリ２１４に書込フラグが書込ありのキャッシュデータがあるか否かを判定する（ステップＳ１０１）。書込フラグが書込ありのキャッシュデータがない場合（ステップＳ１０１：否定）、ライト制御部２１７は、書込フラグが書込ありのキャッシュデータがキャッシュメモリ２１４に書き込まれるまで待機する。
【０１３８】
これに対して、書込フラグが書込ありのキャッシュデータが存在した場合（ステップＳ１０１：肯定）、ライト制御部２１７は、ライトバックのタイミングが到来したか否かを判定する（ステップＳ１０２）。ライトバックのタイミングが到来していない場合（ステップＳ１０２：否定）、ライト制御部２１７は、ライトバックのタイミングが到来するまで待機する。
【０１３９】
これに対して、ライトバックのタイミングが到来した場合（ステップＳ１０２：肯定）、ライト制御部２１７は、ストレージモジュール２３１をキャッシュモジュール２１が管理するか否かを判定する（ステップＳ１０３）。例えば、データをキャッシュメモリ２１４に格納した段階ではキャッシュモジュール２１がストレージモジュール２３を管理していたが、その後に接続の切り替えが発生した場合、キャッシュモジュール２１がストレージモジュール２３を管理しなくなる。
【０１４０】
ストレージモジュール２３がキャッシュモジュール２１に管理されている場合（ステップＳ１０３：肯定）、ライト制御部２１７は、キャッシュメモリ２１４に格納されているデータをストレージモジュール２３にライトバックする（ステップＳ１０４）。
【０１４１】
一方、ストレージモジュール２３がキャッシュモジュール２１に管理下にない場合（ステップＳ１０３：否定）、ライト制御部２１７は、ストレージモジュール２３を管理するキャッシュモジュール２２のライト制御部２２７にデータを転送する（ステップＳ１０５）。
【０１４２】
その後、ライト制御部２１７は、応答をライト制御部２２７から受信する（ステップＳ１０６）。
【０１４３】
そして、ライト制御部２１７は、ライトバックが正常終了したか否かを判定する（ステップＳ１０７）。例えば、ストレージモジュール２３へのライトバック中に接続の切り替えが発生した場合には、エラーが発生する。ライトバックが正常終了していない場合（ステップＳ１０７：否定）、ライト制御部２１７は、今回のライトバック処理を終了する。
【０１４４】
これに対して、ライトバックが正常終了した場合（ステップＳ１０７：肯定）、ライト制御部２１７は、ライトバックを行ったデータを格納するキャッシュページの書込フラグを「書込なし」に変更する（ステップＳ１０８）。そして、ライト制御部２１７は、ライトバック処理を終了する。
【０１４５】
次に、図１８を参照して、転送されたライトバックのデータを書き込むキャッシュモジュールの処理について説明する。図１８は、転送されたライトバックのデータを書き込むキャッシュモジュールの処理のフローチャートである。ここでは、キャッシュモジュール２２がキャッシュモジュール２１から転送されたライトバックのデータをストレージモジュール２３に対して書き込む場合で説明する。
【０１４６】
ライト制御部２２７は、ライトバックのデータをライト制御部２１７から受信する（ステップＳ２０１）。
【０１４７】
次に、ライト制御部２２７は、受信したデータをストレージモジュール２３に書き込む（ステップＳ２０２）。
【０１４８】
次に、ライト制御部２２７は、データの書き込み処理の結果を示す応答をライト制御部２１７へ送信する（ステップＳ２０３）。
【０１４９】
以上に説明したように、本実施例に係るストレージ装置は、接続の切替が発生した場合に、ライトバックのデータを移動元のキャッシュモジュールから取得して、対象のストレージモジュールに書き込むことができる。このため、キャッシュのデータのディスクへの書き戻しにおいて、切り替えが発生しても、移動元のキャッシュモジュールにあったデー
タのクリアを行わないため、クリアに時間を割かなくてもよくなる。このように、切り替え前にキャッシュモジュールが有していたキャッシュデータを有効利用することができ、ストレージモジュールの性能を向上させることができる。
【０１５０】
（ハードウェア構成）
次に、図１９を参照して、各実施例に係るキャッシュモジュール２１及び２２のハードウェア構成について説明する。図１９は、キャッシュモジュールのハードウェア構成の一例の図である。
【０１５１】
図１９に示すように、キャッシュモジュール２１は、Central  Processing  Unit（ＣＰＵ）９１１、メモリ９１２、ホストインタフェース９１３、ディスクインタフェース９１４及びキャッシュモジュールインタフェース９１５を有する。
【０１５２】
メモリ９１２、ホストインタフェース９１３、ディスクインタフェース９１４及びキャッシュモジュールインタフェース９１５は、それぞれＣＰＵ９２１とバスで接続されている。
【０１５３】
ホストインタフェース９１３は、ホスト１との間のインタフェースである。ホストインタフェース９１３は、ホスト１からＩ／Ｏ要求を受信する。また、ホストインタフェース９１３は、Ｉ／Ｏ要求に対する応答をホスト１へ送信する。
【０１５４】
ディスクインタフェース９１４は、ストレージモジュール２３及び２４と接続するためのインタフェースである。ディスクインタフェース９１４は、ストレージモジュール２３及び２４にＩ／Ｏ要求を送信する。
【０１５５】
キャッシュモジュールインタフェース９１５は、キャッシュモジュール２２と接続するためのインタフェースである。キャッシュモジュールインタフェース９１５は、キャッシュモジュール２２との間でＩ／Ｏ要求の送受信を行う。
【０１５６】
メモリ９１２は、キャッシュメモリ２１４を含む。さらに、メモリ９１２には、図１又は図１６に例示した、ホスト間送受信部２１１、リクエスト処理部２１２、キャッシュ間転送部２１３、ディスクアクセス制御部２１５、リード制御部２１６及びライト制御部２１７の各機能を実現するためのプログラムを含む各種プログラムが格納されている。
【０１５７】
ＣＰＵ９１１は、メモリ９１２から各種プログラムを読み出して実行する。これにより、ＣＰＵ９１１及びメモリ９１２は、実施例１に例示した、ホスト間送受信部２１１、リクエスト処理部２１２、キャッシュ間転送部２１３、ディスクアクセス制御部２１５、リード制御部２１６及びライト制御部２１７の各機能を実現する。
【符号の説明】
【０１５８】
１  ホスト
２  ストレージ装置
２１，２２  キャッシュモジュール
２３，２４  ストレージモジュール
２５  接続先切替モジュール
２６  切替管理部
２１１，２２１  ホスト間送受信部
２１２，２２２  リクエスト処理部
２１３，２２３  キャッシュ間転送部
２１４，２２４  キャッシュメモリ
２１５，２２５  ディスクアクセス制御部
２１６，２２６  リード制御部
２１７，２２７  ライト制御部
【図１】
2015169956.tif 000003
【図２】
2015169956.tif 000004
【図３】
2015169956.tif 000005
【図４】
2015169956.tif 000006
【図５】
2015169956.tif 000007
【図６】
2015169956.tif 000008
【図７】
2015169956.tif 000009
【図８】
2015169956.tif 000010
【図９】
2015169956.tif 000011
【図１０】
2015169956.tif 000012
【図１１】
2015169956.tif 000013
【図１２】
2015169956.tif 000014
【図１３】
2015169956.tif 000015
【図１４】
2015169956.tif 000016
【図１５】
2015169956.tif 000017
【図１６】
2015169956.tif 000018
【図１７】
2015169956.tif 000019
【図１８】
2015169956.tif 000020
【図１９】
2015169956.tif 000021