(57)【要約】【課題】  キャッシュ管理のための管理領域を増大させず、また、性能を劣化させないように、キャッシュ管理を行う。【解決手段】  キャッシュデータを管理するために、階層ディレクトリ方式１１０とハッシュディレクトリ方式１２０とを併用可能とする。階層ディレクトリ方式では、各テーブルＴ１〜Ｔ７を順番に参照することで、目的のデータを検索する。ハッシュディレクトリ方式では、ハッシュテーブルＴ１０及びテーブルＴ４〜Ｔ７を順番に参照して目的のデータに到達する。ハッシュキーには、EDEV番号とVDEV番号の一部とを用い、両方式間のアクセス競合を避ける。両方式を併用することで、ストレージシステムの記憶容量が増大した場合でも、管理領域を増加させず、かつ性能劣化を招くことなく、対応することができる。【選択図】        図８
2005242757.tif 000002
【特許請求の範囲】
【請求項１】
上位装置とのデータ授受をそれぞれ制御する複数のチャネルアダプタと、
論理的な記憶領域をそれぞれ提供する複数の記憶デバイス群と、
前記各記憶デバイス群とのデータ授受をそれぞれ制御する複数のディスクアダプタと、
前記各チャネルアダプタ及び前記各ディスクアダプタによりそれぞれ使用されるキャッシュメモリと、
前記キャッシュメモリを管理するための管理情報群を記憶する制御メモリと、
を備え、
前記管理情報群は、階層ディレクトリとハッシュディレクトリとを併用して管理されるストレージシステム。
【請求項２】
前記ハッシュディレクトリに使用されるハッシュコードを生成するためのハッシュキーとして、論理ブロックアドレスに由来するデータを使用する請求項１に記載のストレージシステム。
【請求項３】
前記論理ブロックアドレスに基づいて前記管理情報群にアクセスするための経路を、上流側経路と下流側経路とに分割し、前記上流側経路は、前記階層ディレクトリ及び前記ハッシュディレクトリを併用して構成し、前記下流側経路は共通の階層ディレクトリで構成する請求項２に記載のストレージシステム。
【請求項４】
前記各記憶デバイス群毎に、これら各記憶デバイス群に対応する前記管理情報群を、前記階層ディレクトリまたは前記ハッシュディレクトリのいずれか一方でそれぞれ管理する請求項２に記載のストレージシステム。
【請求項５】
前記各記憶デバイス群に設定される論理ボリューム毎に、これら各論理ボリュームに対応する前記管理情報群を、前記階層ディレクトリまたは前記ハッシュディレクトリのいずれか一方でそれぞれ管理する請求項２に記載のストレージシステム。
【請求項６】
前記各チャネルアダプタが有するポート毎に、これら各ポートに対応する前記管理情報群を、前記階層ディレクトリまたは前記ハッシュディレクトリのいずれか一方でそれぞれ管理する請求項２に記載のストレージシステム。
【請求項７】
前記管理情報群のうち、ストレージシステム内部のデータに対応する管理情報群は、前記階層ディレクトリまたは前記ハッシュディレクトリのいずれか一方で管理し、前記ストレージシステム外部のデータに対応する管理情報群は、前記ハッシュディレクトリで管理する請求項２に記載のストレージシステム。
【請求項８】
前記管理情報群をハッシュディレクトリで管理する場合も、前記階層ディレクトリを空の構造で予め用意しておく請求項２に記載のストレージシステム。
【請求項９】
前記論理ブロックアドレスに由来するデータは、前記論理ブロックアドレスから一意に決定されるスロット番号であり、前記階層ディレクトリで使用されるスロット番号と前記ハッシュディレクトリで使用されるスロット番号とが異なるように構成されている請求項２に記載のストレージシステム。
【請求項１０】
上位装置とのデータ授受をそれぞれ制御する複数のチャネルアダプタと、
論理的な記憶領域をそれぞれ提供する複数の記憶デバイス群と、
前記各記憶デバイス群とのデータ授受をそれぞれ制御する複数のディスクアダプタと、
前記各チャネルアダプタ及び前記各ディスクアダプタによりそれぞれ使用されるキャッシュメモリと、
前記キャッシュメモリを管理するための管理情報群を記憶する制御メモリと、
前記制御メモリ上に構築され、予め設定された所定範囲の管理情報群を管理するための階層ディレクトリと、
前記制御メモリ上に構築され、予め設定された他の所定範囲の管理情報群を管理するためのハッシュディレクトリと、
前記所定範囲及び前記他の所定範囲を設定するための管理方式設定部と、
を備え、
前記ハッシュディレクトリの下流側は、前記階層ディレクトリと同一構造の階層ディレクトリとなっており、
前記ハッシュディレクトリに使用されるハッシュコードを生成するためのハッシュキーとして、論理ブロックアドレスから一意に決定されるデータを使用するストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステムに関する。
【背景技術】
【０００２】
ストレージシステムは、ホストコンピュータに対して大容量かつ高性能のストレージサービスを提供可能である。ストレージシステムでは、例えば、多数のディスクドライブをアレイ状に配設し、RAID（Redundant Array of Independent Inexpensive Disks）に基づく記憶領域を構築している。各ディスクドライブが有する物理的な記憶領域上には、論理的な記憶領域である論理ボリュームが形成されている。
【０００３】
論理ボリュームには、LUN（Logical Unit Number）が予め対応付けられている。ホストコンピュータは、LUNやブロックアドレス等を特定することにより、ストレージシステムに対して所定形式の書込みコマンド又は読出しコマンドを発行する。これにより、ホストコンピュータは、ストレージシステムに対して所望のデータの読み書きを行うことができる。
【０００４】
ホストコンピュータとストレージシステムとの間のデータ授受には、キャッシュメモリが使用される。ホストコンピュータから書込みを要求されたデータ（ライトデータ）は、いったんキャッシュメモリに格納された後で、ディスクドライブに書き込まれる。また、ホストコンピュータから読み出しを要求されたデータ（リードデータ）は、キャッシュメモリを介して読み出され、ホストコンピュータに送信される。
【０００５】
このように、ホストコンピュータとの間で送受されるユーザデータは、全てキャッシュメモリを経由する。キャッシュメモリ上にキャッシュされているデータについて、読み出しが要求された場合、キャッシュメモリ上のデータが読み出されてホストコンピュータに送信される。キャッシュされていないデータについて読み出しが要求された場合は、ディスクドライブからデータが読み出され、キャッシュメモリを介して、ホストコンピュータに送信される。
【０００６】
ホストコンピュータからの要求に応じてキャッシュデータを読み出すためには、キャッシュメモリ上にキャッシュされているデータ群を管理する必要がある。この管理方式としては、複数の階層でデータ群を管理する階層ディレクトリ方式が知られている。なお、他の管理方式としては、ハッシュテーブルを用いたハッシュディレクトリ方式も知られている（特許文献１）。
【特許文献１】特開昭５８−３１４６０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
キャッシュメモリの量は、ディスクドライブが提供する記憶領域の大きさと密接に関係する。記憶領域が大きくなるほど、多量のキャッシュメモリが必要となる。記憶領域の大きさに応じたキャッシュメモリを搭載しなければ、キャッシュミスが続発し、ペナルティが増大してサービス性能が低下するためである。
【０００８】
ストレージシステムでは、例えば、企業や自治体等の各組織において使用され、膨大な数のデータを管理する。企業等で管理されるデータは、年々増大する一方であるため、ストレージシステムにも大容量化が求められている。ストレージシステムの記憶容量を増大させると、キャッシュメモリの搭載量も増大する。
【０００９】
キャッシュメモリの量が増加すると、キャッシュデータを管理するための管理情報も増加する。階層ディレクトリ方式では、キャッシュ管理テーブルを複数階層化してキャッシュデータを管理しているが、キャッシュメモリの量が大きくなるほど、管理すべきキャッシュデータの量も増大する。階層ディレクトリ方式では、管理する階層の数を増加させるか、あるいは、階層数は変化させずに各階層のテーブルサイズを大きくするか、のいずれかの方法あるいは両者の組合せにより、多量のキャッシュデータを管理可能である。
【００１０】
しかし、階層数を増加させる場合は、増加させる階層の分だけアクセス数も増加するため、ストレージシステムの性能が劣化するおそれがある。階層ディレクトリ方式では、各階層の管理テーブルを次々に参照しながら、目的とするデータを検索する。従って、階層数の増加は、テーブルへのアクセス回数の増加につながり、アクセス回数の増加は、読み出し速度の低下を招く。
【００１１】
階層数を増加させずに、テーブルサイズを大きくする場合は、管理すべき領域（キャッシュ領域）に応じてテーブルサイズも大きくなるため、管理情報のサイズが増大し、管理情報を記憶するために多量のメモリが必要となる。上述のように、キャッシュメモリの量は、ストレージシステムの記憶容量に応じて定められるため、結局、キャッシュデータを管理するための管理情報は、ストレージシステムの記憶容量に応じて増大する。
【００１２】
なお、上記特許文献では、ハッシュテーブルを用いたメモリへのアドレッシング方法を開示するのみで、大容量のストレージサービスを提供するストレージシステムへの言及は、含まれていない。
【００１３】
本発明の一つの目的は、管理情報群を記憶するための記憶領域の増加防止とサービス性能の低下防止とを両立可能としたストレージシステムを提供することにある。本発明の一つの目的は、階層ディレクトリ方式とハッシュディレクトリ方式とを容易に併用可能としたストレージシステムの提供にある。本発明の一つの目的は、階層ディレクトリ方式とハッシュディレクトリ方式との構成をできるだけ共通化することにより、両方式の共存を図ることができるようにしたストレージシステムを提供することにある。本発明の一つの目的は、階層ディレクトリ方式とハッシュディレクトリ方式とを柔軟に使い分けすることができるストレージシステムを提供することにある。本発明の他の目的は、後述する実施形態の記載から明らかになるであろう。
【課題を解決するための手段】
【００１４】
上記課題を解決すべく、本発明では、階層ディレクトリとハッシュディレクトリとを併用可能として、キャッシュデータを管理するための管理情報群を管理する。階層ディレクトリまたはハッシュディレクトリのいずれを用いて管理するかは、例えば、ストレージシステムのサービス提供単位毎に（ストレージシステムの構成要素毎に）、それぞれ選択可能である。サービス提供単位としては、例えば、物理デバイス上に構築される論理デバイス毎、論理デバイス上に設定される論理ボリューム毎、論理デバイスや論理ボリュームにアクセスするポート毎等を挙げることができる。
【００１５】
本発明に従うストレージシステムは、上位装置とのデータ授受をそれぞれ制御する複数のチャネルアダプタと、論理的な記憶領域をそれぞれ提供する複数の記憶デバイス群と、各記憶デバイス群とのデータ授受をそれぞれ制御する複数のディスクアダプタと、各チャネルアダプタ及び各ディスクアダプタによりそれぞれ使用されるキャッシュメモリと、キャッシュメモリを管理するための管理情報群を記憶する制御メモリと、を備えており、管理情報群は、階層ディレクトリとハッシュディレクトリとを併用して管理される。
【００１６】
上位装置としては、例えば、サーバ、メインフレーム、パーソナルコンピュータ等のコンピュータを挙げることができる。記憶デバイス群は、物理的な記憶デバイス群の上に構築され、論理的な記憶領域（仮想的な記憶領域）を上位装置に対して提供する。キャッシュメモリには、上位装置から書き込まれたデータ及び上位装置に読み出されるデータが記憶される。制御メモリには、キャッシュメモリにキャッシュされているデータを管理するための管理情報群が記憶される。キャッシュメモリと制御メモリとは、それぞれ別々のメモリ基板として実装することもできるし、両者を混載したメモリ基板を用いてもよい。また、メモリのある領域をキャッシュメモリとして使用し、他の領域を制御メモリとして使用してもよい。
【００１７】
管理情報群は、制御メモリに記憶される。管理情報群は、キャッシュメモリにキャッシュされたデータの所在や状態等を管理するための情報であり、各キャッシュデータ毎にそれぞれ管理情報が設けられる。キャッシュデータの状態としては、例えば、記憶デバイスに書込み済みの状態を示すクリーン状態、記憶デバイスに書き込まれていない状態を示すダーティ状態、未使用の状態を示すフリー状態を挙げることができる。キャッシュデータは、例えば、スロット単位で管理される。各スロットは、少なくとも１個以上のセグメントを含んで構成される。管理情報群は、目的とするキャッシュデータを格納したスロットを検索し、利用可能か否か等を判別するために使用される。
【００１８】
管理情報群は、階層ディレクトリまたはハッシュディレクトリのいずれかによって管理され、これら階層ディレクトリとハッシュディレクトリとは共存可能となっている。即ち、一部の管理情報群は、階層ディレクトリによって管理され、残りの管理情報群は、ハッシュディレクトリによって管理することができる。
【００１９】
ここで、階層ディレクトリを用いる場合は、目的とする管理情報に到達するまでのアクセス速度が一定（略一定でもよい）であるが、多量のキャッシュデータを管理するために多量の記憶資源を必要とする。ハッシュディレクトリを用いる場合は、より少ない記憶資源で多量のキャッシュデータを管理可能であり、アクセス速度の向上も期待できる。しかし、ハッシュディレクトリでは、アクセス速度にばらつきがあり、場合によっては階層ディレクトリ方式の場合よりも遅くなる可能性がある。
【００２０】
ストレージシステムの大容量化に対応するために、階層ディレクトリ方式のみを用いると、管理情報群を管理するための記憶領域が増大し、制御メモリを圧迫する。これに対し、ハッシュディレクトリ方式のみを採用すると、制御メモリの記憶資源を圧迫することなく、ストレージシステムの大容量化に対応可能である。しかし、ハッシュディレクトリ方式では、アクセス速度が場合によって変化するため、サービス品質の安定を図ることができない。階層ディレクトリとハッシュディレクトリとの両方を併用可能とすることにより、管理情報群を管理するための記憶領域をあまり増大させず、かつ、サービス性能の低下を防止しながら、ストレージシステムの大容量化に対応することができる。
【００２１】
ハッシュディレクトリ方式では、ハッシュテーブルを用いる。ハッシュテーブルには、各ハッシュコード毎に、それぞれのデータの格納先のポインタが対応付けられている。ハッシュコードは、ハッシュ関数により生成される。ハッシュ関数は、入力されたハッシュキーに基づいて、固定長のハッシュコードを出力する。
【００２２】
ハッシュキーとして、論理ブロックアドレスに由来するデータを採用可能である。論理ブロックアドレスは、データを論理ブロック単位で特定するためのアドレス情報であり、比較的広範囲に分布しうる情報である。従って、この論理ブロックアドレスに由来するデータ、例えば、論理ブロックアドレスから一意に決定されるスロット番号を、ハッシュキーとして用いる。これにより、ハッシュコードの競合を低減することができる。
【００２３】
なお、階層ディレクトリにおいてもスロット番号を用いてデータにアクセスする場合、ハッシュディレクトリで使用するスロット番号と階層ディレクトリで使用するスロット番号とを違えるように構成することができる。例えば、階層ディレクトリ方式においては、論理ブロックアドレスから一意に求められるスロット番号をそのまま使用し、ハッシュディレクトリ方式においては、スロット番号の一部分（例えば上位の所定ビット）と、記憶領域を拡張するための他のデータとを組み合わせることにより、ハッシュキーとして使用する。これにより、ハッシュディレクトリと階層ディレクトリとの間のアクセス競合を低減することができる。
【００２４】
本発明の一態様では、論理ブロックアドレスに基づいて管理情報群にアクセスするための経路を、上流側経路と下流側経路とに分割し、上流側経路は、階層ディレクトリ及びハッシュディレクトリを併用して構成し、下流側経路は共通の階層ディレクトリで構成している。
【００２５】
即ち、管理情報群をハッシュディレクトリ方式で管理する場合でも、管理情報にアクセスするための経路（検索経路）の全体をハッシュテーブル等で管理するのではなく、アクセス経路上流側をハッシュディレクトリ方式で管理し、下流側は階層ディレクトリ方式で管理する。ハッシュディレクトリの下流側に位置する階層ディレクトリ構造は、ハッシュディレクトリと並列的に運用される階層ディレクトリと共用可能である。従って、階層ディレクトリとハッシュディレクトリとを併用する場合でも、全体構成を簡素化することができる。また、例えば、最初は階層ディレクトリ方式で管理し、後からハッシュディレクトリ方式に変更する場合やその逆の場合も、比較的容易に変更可能である。
【００２６】
階層ディレクトリ方式とハッシュディレクトリ方式の使い分け方法としては、種々のものを採用可能である。例えば、ある記憶デバイス群に対応するキャッシュデータは階層ディレクトリで管理し、他の記憶デバイス群に対応するキャッシュデータはハッシュディレクトリで管理する場合のように、各記憶デバイス群毎にキャッシュ管理方式を設定することができる。
【００２７】
さらには、記憶デバイス群に構築される各論理ボリューム毎に、あるいは、各ポート毎に、キャッシュ管理方式を設定することができる。
【００２８】
または、ストレージシステム内の記憶資源に記憶されるデータに対応する管理情報群は、階層ディレクトリ方式で管理し、ストレージシステム外部の記憶資源に記憶されるデータに対応する管理情報群はハッシュディレクトリ方式で管理することもできる。いわゆる自社ストレージの場合は、容量が既知であるため、あまり大きな容量でなければ、階層ディレクトリ方式で管理可能である。一方、いわゆる他社ストレージの場合は、その容量が未知の場合があるため、大容量に対応可能なハッシュディレクトリ方式で管理する。
【００２９】
本発明は、例えば、ストレージシステムのキャッシュ管理方法の観点からとらえることもできる。即ち、このキャッシュ管理方法は、上位装置とのデータ授受をそれぞれ制御する複数のチャネルアダプタと、論理的な記憶領域をそれぞれ提供する複数の記憶デバイス群と、各記憶デバイス群とのデータ授受をそれぞれ制御する複数のディスクアダプタと、各チャネルアダプタ及び各ディスクアダプタによりそれぞれ使用されるキャッシュメモリと、キャッシュメモリを管理するための管理情報群を記憶する制御メモリと、を備えたストレージシステムのキャッシュ管理方法である。そして、このキャッシュ管理方法は、ストレージシステムの構成情報に基づいて、管理情報群を階層ディレクトリで管理するか、あるいはハッシュディレクトリで管理するかを決定する決定ステップと、決定ステップにより決定された管理方式に従って、管理情報群を管理するディレクトリを制御メモリ上に構築する構築ステップと、を含む。
【発明を実施するための最良の形態】
【００３０】
以下、図１〜図１５に基づき、本発明の実施の形態を説明する。本実施形態のストレージシステムは、上位装置とのデータ授受をそれぞれ制御する複数のチャネルアダプタと、論理的な記憶領域をそれぞれ提供する複数の記憶デバイス群と、各記憶デバイス群とのデータ授受をそれぞれ制御する複数のディスクアダプタと、各チャネルアダプタ及び各ディスクアダプタによりそれぞれ使用されるキャッシュメモリと、キャッシュメモリを管理するための管理情報群を記憶する制御メモリと、制御メモリ上に構築され、予め設定された所定範囲の管理情報群を管理するための階層ディレクトリと、制御メモリ上に構築され、予め設定された他の所定範囲の管理情報群を管理するためのハッシュディレクトリと、所定範囲及び他の所定範囲を設定するための管理方式設定部と、を備えている。そして、このストレージシステムでは、ハッシュディレクトリの下流側は、階層ディレクトリと同一構造の階層ディレクトリとなっており、ハッシュディレクトリに使用されるハッシュコードを生成するためのハッシュキーとして、論理ブロックアドレスから一意に決定されるデータを使用する。
【実施例１】
【００３１】
図１は、ストレージシステム１０の外観構成を示す概略斜視図である。ストレージシステム１０は、例えば、基本筐体１１と複数の増設筐体１２とから構成可能である。基本筐体１１は、ストレージシステム１０の最小構成単位であり、記憶機能及び制御機能の両方を備えている。増設筐体１２は、ストレージシステム１０のオプションであり、基本筐体１１の有する制御機能により制御される。例えば、最大４個の増設筐体１２を基本筐体１１に接続可能である。
【００３２】
基本筐体１１には、複数の制御パッケージ１３と、複数の電源ユニット１４と、複数のバッテリユニット１５と、複数のディスクドライブ８０とがそれぞれ着脱可能に設けられている。増設筐体１２には、複数のディスクドライブ８０と、複数の電源ユニット１４及び複数のバッテリユニット１５が着脱可能に設けられている。また、基本筐体１１及び各増設筐体１２には、複数の冷却ファン１６がそれぞれ設けられている。
【００３３】
制御パッケージ１３は、後述するチャネルアダプタ２０、ディスクアダプタ３０及びキャッシュメモリ４０等をそれぞれ実現するためのモジュールである。即ち、基本筐体１１には、複数のチャネルアダプタパッケージ、複数のディスクアダプタパッケージ及び１つ以上のメモリパッケージがそれぞれ着脱可能に設けられ、パッケージ単位で交換可能となっている。
【００３４】
図２は、ストレージシステム１０の全体概要を示すブロック図である。ストレージシステム１０は、通信ネットワークＣＮ１を介して、複数のホストコンピュータ１Ａ〜１Ｃ（以下、特に区別しない場合は、「ホストコンピュータ１」と呼ぶ）と双方向通信可能にそれぞれ接続可能である。
【００３５】
通信ネットワークＣＮ１は、例えば、LAN（Local Area Network）、ＳＡＮ（Storage Area Network）、インターネットあるいは専用回線等である。LANを用いる場合、ホストコンピュータ１とストレージシステム１０との間のデータ転送は、TCP/IP（Transmission Control Protocol/Internet Protocol）プロトコルに従って行われる。ＳＡＮを用いる場合、ホストコンピュータ１とストレージシステム１０とは、ファイバチャネルプロトコルに従ってデータ転送を行う。また、ホストコンピュータ１がメインフレームの場合は、例えば、FICON（Fibre Connection：登録商標）、ESCON（Enterprise System Connection：登録商標）、ACONARC（Advanced Connection Architecture：登録商標）、FIBARC（Fibre Connection Architecture：登録商標）等の通信プロトコルに従ってデータ転送が行われる。
【００３６】
各ホストコンピュータ１は、例えば、サーバ、パーソナルコンピュータ、ワークステーション、メインフレーム等として実現されるものである。例えば、各ホストコンピュータ１は、図外に位置する複数のクライアント端末と別の通信ネットワークを介して接続されている。各ホストコンピュータ１は、例えば、各クライアント端末からの要求に応じて、ストレージシステム１０にデータの読み書きを行うことにより、各クライアント端末へのサービスを提供する。
【００３７】
図中では、１つのみ図示してあるが、ストレージシステム１０内には、複数の仮想筐体（SLPR：Storage Logical Partition）を設定可能である。SLPRとは、ストレージシステム１０内の各種物理的資源及び論理的資源を各ユーザ毎に（あるいは各アプリケーションプログラム毎に）分割して割り当てることにより構成された領域である。即ち、例えば、SLPRには、それぞれ専用のチャネルアダプタ２０と、それぞれ専用のキャッシュ領域４０と、それぞれ専用の仮想的な論理デバイス（VDEV）７０等とを備えている。即ち、SLPRは、仮想的な小型のストレージシステムであるかのように振る舞う。
【００３８】
SLPRには、少なくとも１つ以上のキャッシュ分割領域（CLPR：Cache Logical Partiton）を設けることができる。図２中では、左側にSLPRを１つだけ示してあるが、複数のSLPRを設けることができる。そして、１つのSLPR内には、１つまたは複数のCLPRを設定することができる。
【００３９】
CLPRとは、キャッシュメモリ４０を論理的に複数の領域に分割したものである。CLPRは、各チャネルアダプタ２０毎にそれぞれ設定可能である。例えば、チャネルアダプタ２０をｎ個実装する場合は、ｎ個のCLPRを設けることができる。例えば、ｎ＝３２に設定可能であるが、本発明はこれに限定されない。各CLPR0〜CLPRnは、それぞれ互いに独立して使用されるものであり、各ホストコンピュータ１は、それぞれが利用可能なCLPRのみを独占的に使用することができる。そして、あるCLPRに対するホストコンピュータ１からの操作は、他のCLPRにできるだけ影響を与えないように構成されている。即ち、特定のホストコンピュータ１からのアクセスが集中した場合でも、そのホストコンピュータ１が利用可能なCLPRのみで必要なキャッシュ容量が確保され、他のCLPRの資源（キャッシュ領域）を奪うことがないように構成されている。
【００４０】
図中右側に示すCLPR0は、SLPRが定義されていない共用領域であり、この共用領域CLPR0には、ストレージシステム１０全体で使用される各種の情報が記憶される。
【００４１】
図２に示す例では、ホストコンピュータ１Ａは、共用領域CLPR0のみにアクセスして、データの入出力を行うことができる。ホストコンピュータ１ＢはCLPR1のみに、ホストコンピュータ１ＣはCLPR2のみに、ホストコンピュータ１ＮはCLPRnのみに、それぞれアクセス可能であり、他のCLPRの利用や参照等を行うことはできない。
【００４２】
SVP（Service Processor）９０は、ストレージシステム１０の管理や監視を行うためのコンピュータ装置であり、管理用のサーバ機能を提供する。SVP９０は、例えば、ストレージシステム１０内に設けられたLAN等の内部ネットワークＣＮ３（図３参照）を介して、各チャネルアダプタ２０や各ディスクアダプタ３０等から各種の環境情報や性能情報等を収集する。SVP９０が収集する情報としては、例えば、装置構成、電源アラーム、温度アラーム、入出力速度（IOPS）等が挙げられる。SVP９０と各管理端末２Ａ〜２Ｎ，３とは、例えば、LAN等の通信ネットワークＣＮ２を介して接続されている。管理者は、管理端末を介してSVP９０にログインすることにより、権限のある範囲内において、例えば、RAID構成の設定、各種パッケージ（チャネルアダプタパッケージ、ディスクアダプタパッケージ、メモリパッケージ、ディスクドライブ等）の閉塞処理や各種設定変更等を行うことができる。
【００４３】
SVP９０には、複数の管理端末２Ａ〜２Ｎ，３を接続可能である。ここで、管理端末２Ａ〜２Ｎは、各SLPR毎に設けられる端末であり、管理端末３は、ストレージシステム１０の全体を管理するために設けられる端末である。以下の説明では、１つのSLPRに１つのCLPRを設ける場合を例に挙げて説明する。従って、管理端末２Ａ〜２Ｎは、各CLPRをそれぞれ管理する管理者によりそれぞれ操作されるサブ端末である。管理端末３は、ストレージシステム１０の全体を管理するシステム管理者（あるいは全体管理者と呼ぶこともできる）により操作される全体端末である。
【００４４】
各サブ端末２Ａ〜２Ｎの管理者は、自己が管理権限を有するCLPRについてのみ各種設定変更等を行うことができ、他のCLPRの構成等を参照したり変更することは許可されない。これに対し、システム管理者は、各CLPRを含めてストレージシステム１０の全体の各種設定変更等を行うことができる。
【００４５】
システム管理者は、全体端末３を介してSVP９０にログインし、ストレージシステム１０の有する物理的資源及び論理的資源を適宜分割することにより、各ユーザ毎にSLPR（CLPR）を設定可能である。また、システム管理者は、各CLPRの管理者に対して、ユーザID等を発行することもできる。各CLPRの管理者は、システム管理者から発行された専用のユーザIDを用いてSVP９０にログインする。各CLPRの管理者は、サブ端末２を操作することにより、自己の管理下にあるCLPR内の設定を変更可能である。
【００４６】
図３は、ストレージシステム１０の論理的構成に着目したブロック図である。ストレージシステム１０は、複数のチャネルアダプタ（以下、CHA）２０と、複数のディスクアダプタ（以下、DKA）３０と、少なくとも１つ以上のキャッシュメモリ４０及び共有メモリ５０と、スイッチ部６０と、複数の仮想的論理デバイス（VDEV）７０と、複数のディスクドライブ８０と、SVP９０とを備えている。
【００４７】
各CHA２０は、各ホストコンピュータ１との間のデータ転送を制御するもので、通信ポート２１を備えている。ストレージシステム１０には、例えば３２個のCHA２０を設けることができる。CHA２０は、例えば、オープン系用CHA、メインフレーム系用CHA等のように、ホストコンピュータ１の種類に応じて用意される。
【００４８】
各CHA２０は、それぞれに接続されたホストコンピュータ１から、データの読み書きを要求するコマンド及びデータを受信し、ホストコンピュータ１から受信したコマンドに従って動作する。DKA３０の動作も含めて先に説明すると、例えば、CHA２０は、ホストコンピュータ１からデータの読出し要求を受信すると、読出しコマンドを共有メモリ５０に記憶させる。DKA３０は、共有メモリ５０を随時参照しており、未処理の読出しコマンドを発見すると、ディスクドライブ８０からデータを読み出して、キャッシュメモリ４０に記憶させる。CHA２０は、キャッシュメモリ４０に移されたデータを読み出し、コマンド発行元のホストコンピュータ１に送信する。
【００４９】
CHA２０は、ホストコンピュータ１からデータの書込み要求を受信すると、書込みコマンドを共有メモリ５０に記憶させる。また、CHA２０は、受信したデータ（ユーザデータ）をキャッシュメモリ４０に記憶させる。ここで、ホストコンピュータ１から書込みを要求されたデータは、ディスクドライブ８０に書き込まれていないダーティデータであるため、例えば複数箇所にそれぞれ記憶されて多重化される。
【００５０】
CHA２０は、キャッシュメモリ４０にデータを記憶した後、ホストコンピュータ１に対して書込み完了を報告する。そして、DKA３０は、共有メモリ５０に記憶された書込みコマンドに従って、キャッシュメモリ４０に記憶されたデータを読出し、所定のディスクドライブ８０に記憶させる。ディスクドライブ８０に書き込まれたデータは、ダーティデータからクリーンデータにステータスが変化し、キャッシュメモリ４０による多重管理から解放される。なお、本明細書において、ダーティデータとは、ディスクドライブ８０に書き込まれていない状態のデータを意味する。また、クリーンデータとは、ディスクドライブ８０に書き込み済のデータを意味する。
【００５１】
各DKA３０は、ストレージシステム１０内に例えば４個や８個等のように複数個設けることができる。各DKA３０は、各ディスクドライブ８０との間のデータ通信を制御する。各DKA３０と各ディスクドライブ８０とは、例えば、ＳＡＮ等の通信ネットワークＣＮ４を介して接続されており、ファイバチャネルプロトコルに従ってブロック単位のデータ転送を行う。各DKA３０は、ディスクドライブ８０の状態を随時監視しており、この監視結果は内部ネットワークＣＮ３を介してSVP９０に送信される。各CHA２０及び各DKA３０は、例えば、プロセッサやメモリ等が実装されたプリント基板と、メモリに格納された制御プログラム（いずれも不図示）とをそれぞれ備えており、これらのハードウェアとソフトウェアとの協働作業によって、それぞれ所定の機能を実現するようになっている。
【００５２】
キャッシュメモリ４０は、例えば、ユーザデータ等を記憶するものである。キャッシュメモリ４０は、例えば不揮発メモリから構成される。キャッシュメモリ４０は、複数のメモリから構成することができ、ダーティデータを多重管理することができる。本実施例では、キャッシュメモリ４０が有する全キャッシュ領域を複数個に分割することにより、各CLPR0〜nを設定している。
【００５３】
共有メモリ（あるいは制御メモリ）５０は、例えば不揮発メモリから構成される。共有メモリ５０には、例えば、制御情報や管理情報等が記憶される。これらの制御情報等の情報は、複数の共有メモリ５０により多重管理することができる。共有メモリ５０及びキャッシュメモリ４０は、それぞれ複数個設けることができる。また、同一のメモリ基板にキャッシュメモリ４０と共有メモリ５０とを混在させて実装することもできる。あるいは、メモリの一部をキャッシュ領域として使用し、他の一部を制御領域として使用することもできる。
【００５４】
本実施例では、キャッシュデータを管理するための管理情報を、共有メモリ５０に記憶させる。管理情報は、後述のように、階層ディレクトリまたはハッシュディレクトリのいずれかにより管理される。本実施例のストレージシステムでは、階層ディレクトリ方式とハッシュディレクトリ方式とを併用して、管理情報を管理可能である。本実施例では、上述のように、キャッシュ領域を各CLPR毎に分割しているが、これは、本発明に必須の要素ではなく、キャッシュ領域が分割される必要性はない。但し、CLPRやSLPRを設定することにより、場合によっては、各CLPR毎に、あるいは各SLPR毎にキャッシュ管理方式（階層ディレクトリ方式またはハッシュディレクトリ方式の総称）を設定することができる。
【００５５】
スイッチ部６０は、各CHA２０と、各DKA３０と、キャッシュメモリ４０と、共有メモリ５０とをそれぞれ接続するものである。これにより、全てのCHA２０，DKA３０は、キャッシュメモリ４０及び共有メモリ５０にそれぞれアクセス可能である。スイッチ部６０は、例えば超高速クロスバスイッチ等として構成することができる。
【００５６】
ストレージシステム１０は、多数のディスクドライブ８０を実装可能である。各ディスクドライブ８０は、例えば、ハードディスクドライブ（ＨＤＤ）や半導体メモリ装置等として実現することができる。
【００５７】
ディスクドライブ８０は、物理的な記憶デバイス（PDEV）である。そして、RAID構成等によっても相違するが、例えば、４個１組のディスクドライブ８０が提供する物理的な記憶領域上には、仮想的な論理デバイス（VDEV）７０が構築される。なお、VDEV７０上にさらに仮想的な論理デバイス（LU：Logigal Unit）を設定可能である。
【００５８】
ストレージシステム１０により使用される記憶資源は、全てストレージシステム１０内に設ける必要はなく、ストレージシステム１０の外部に存在する記憶資源を利用することもできる。例えば、後述の実施例のように、外部の他社製ストレージシステムが有する記憶デバイスを特定のVDEVに割り付け、他社製記憶デバイスへのアクセスパス等を管理することにより、他社の記憶デバイスをあたかも自己の記憶デバイスであるかのように、ホストコンピュータ１に見せかけることができる。
【００５９】
図４は、キャッシュメモリの管理方法等を模式的に示す説明図である。図中では、共用領域CLPR0と２個の専用CLPR1，2とによって、キャッシュメモリ４０を分割して使用する場合を示す。各CLPRには、それぞれキャッシュ領域が割り当てられている。
【００６０】
各CLPRがそれぞれ使用可能なキャッシュ領域の最大値（最大割当量）は、システム管理者により設定される。各CLPRにそれぞれ割り当てられたキャッシュ領域には、各CLPRを利用するホストコンピュータ１により使用されるデータ（ライトデータ、リードデータ）が格納される。図４中では、データが格納された領域に斜線を付し、「使用中」と表記してある。各CLPRは、それぞれが使用可能な最大割当量までのキャッシュ領域を使用可能であり、他のCLPRのキャッシュ領域を使用することはできない。
【００６１】
キャッシュメモリ４０にキャッシュされたデータは、後述する管理情報によって管理されている。本実施例では、キャッシュ管理方式として、階層ディレクトリ方式とハッシュディレクトリ方式の２つの異なる種類の管理方式を併用することができる。図４に示す例では、VDEV７０単位でキャッシュ管理方式がそれぞれ設定されている。あるVDEV７０に記憶されるデータは階層ディレクトリ方式で管理され、他のVDEV７０に記憶されるデータはハッシュディレクトリ方式で管理される。
【００６２】
図４に示すように、各CLPRには、少なくとも１つ以上のVDEV７０がそれぞれ割り当てられている。各CLPRのキャッシュ領域に書き込まれたデータは、それぞれに割り当てられたVDEV７０の所定領域に書き込まれる。また、VDEV７０から読み出されたデータは、対応するCLPRのキャッシュ領域に保持される。そして、各VDEV７０に記憶されるデータは、階層ディレクトリ方式またはハッシュディレクトリ方式のいずれかにより管理される。
【００６３】
図５は、階層ディレクトリ方式によるキャッシュデータの管理方法の概要を示す説明図である。
【００６４】
まず、ホストコンピュータ１からデータの入出力要求があると、この入出力要求に含まれるLBA（Logical Block Address）に基づいて、VDEVSLOT番号（VDEVSLOT＃）を求める。そして、VDEVSLOT番号に基づいて、VDSLOT−PAGEテーブルＴ１を参照することにより、次の階層へのポインタを取得する。VDSLOT−PAGEテーブルＴ１には、PAGE−DIRテーブルＴ２へのポインタが含まれている。PAGE−DIRテーブルＴ２には、PAGE−GRPPテーブルＴ３へのポインタが含まれている。さらに、PAGE−GRPPテーブルＴ３には、GRPT１テーブルＴ４へのポインタが含まれている。GRPT１テーブルＴ４には、GRPT２テーブルＴ５へのポインタが含まれている。GRPT２テーブルＴ５には、SLCB（スロット制御テーブル）Ｔ６へのポインタが含まれている。
【００６５】
このように、LBAから一意に決定されるVDEVSLOT番号に基づいて、各テーブルＴ１〜Ｔ５を順番に参照していくことにより、所望のデータを管理するSLCBテーブルＴ６に到達する。SLCBテーブルＴ６には、少なくとも１つ以上のSGCB（セグメント制御ブロック）テーブルＴ７が関連付けられている。SGCBテーブルＴ７は、キャッシュ管理の最小単位であるセグメントに関する制御情報を格納している。１つのスロットには、１〜４個のセグメントを関連付けることができる。なお、キャッシュ管理の最小単位はセグメントであるが、スロット単位で管理される場合もある。
【００６６】
ホストコンピュータ１からリードアクセスがあった場合は、各階層テーブルＴ１〜Ｔ６を順番に辿ることにより、要求されたデータが特定される。そして、ホストコンピュータ１が要求しているデータを物理デバイスであるディスクドライブ８０から読み出して、キャッシュ領域上の１つまたは複数のスロットに格納させる。
【００６７】
図６は、ハッシュディレクトリ方式によるキャッシュデータの管理方法の概要を示す説明図である。
【００６８】
ハッシュディレクトリ方式では、階層ディレクトリ方式におけるVDSLOT−PAGEテーブルＴ１、PAGE−DIRテーブルＴ２及びPAGE−GRPPテーブルＴ３を、１つのハッシュテーブルＴ１０に置き換えている。
【００６９】
ハッシュテーブルＴ１０には、図７に示すように、各ハッシュコード毎に、GRPT１テーブルＴ４へのポインタがそれぞれ格納されている。ハッシュコードは、ハッシュ関数ＨＦにハッシュキーを入力することにより、得られる。
【００７０】
本実施例では、ハッシュキーとして、LBAに由来するデータであるVDEVSLOT番号及びEDEV番号を用いている。EDEV番号とは、VDEVSLOT番号を拡張するために用いられる付加情報である。EDEV番号の全体（例えば６ビット）と、VDEVSLOT番号の一部（例えば、上位２６ビット）とが、ハッシュキーとして用いられる。本実施例では、ハッシュキーのデータサイズは、３２ビット固定である。ハッシュ関数ＨＦは、入力された３２ビットのハッシュキーに基づいて、固定長のハッシュコードを生成する。このハッシュコードは、ハッシュテーブルＴ１０にエントリされているポインタを検索するためのキーとなる。
【００７１】
EDEV番号及びVDEVSLOT番号から構成されるハッシュキーは、LBAに由来し、比較的大きなアドレス空間に分布する情報である。従って、ハッシュ関数ＨＦの設計等によっても相違するが、ハッシュコードの競合（異なるハッシュキーから同一のハッシュコードが生成されること）を抑制することができる。図５と共に述べた階層ディレクトリでは、VDEVSLOT番号をそのまま検索キーとして使用し、VDSLOT−PAGEテーブルＴ１を検索する。しかし、図６に示すハッシュディレクトリでは、VDEVSLOT番号をそのままハッシュキーとして使用するのではなく、VDEVSLOT番号の上位の所定ビットと記憶領域を拡張するために付加されるEDEV番号とを組み合わせることにより、ハッシュキーを得ている。
【００７２】
従って、同一のキャッシュメモリ４０にキャッシュされるデータ群を、階層ディレクトリとハッシュディレクトリとを併用して管理する場合でも、異なるキャッシュ管理方式の間でアクセスが競合する事態を低減することができる。即ち、仮に、階層ディレクトリとハッシュディレクトリの両方で、最初の検索キーとしてVDEVSLOT番号をそのまま用いた場合は、目的とするデータを得るために、階層ディレクトリとハッシュディレクトリの両方を検索する必要があり、無駄が多い。これに対し、本実施例では、階層ディレクトリとハッシュディレクトリとで、最初の検索キーであるVDEVSLOT番号を変化させる構成のため、アクセス競合が発生する可能性を少なくすることができる。また、基本的に、両方式とも、LBAに由来するデータを用いてキャッシュデータを管理するため、後述のように、下流側の構成を共通化することができる。検索の最初で各ディレクトリのいずれを用いるかが区別されれば、検索の途中のキーが共通しても不都合は生じない。
【００７３】
図８は、本実施例によるキャッシュ管理方式の様子を示す概念図である。本ストレージシステム１０では、キャッシュデータの管理に関して、階層ディレクトリ方式とハッシュディレクトリ方式の両方を併用可能としている。即ち、ストレージシステム１０は、キャッシュ管理部として、階層テーブルディレクトリ部１１０と、ハッシュディレクトリ部１２０の両方を備えている。そして、ハッシュディレクトリ部１２０では、ハッシュキーとして、EDEV番号１０２の全部（６ビット）とVDEVSLOT番号１０１の一部（上位２６ビット）とを使用する。
【００７４】
ハッシュ関数ＨＦの設計やハッシュキーの分散の度合等によって相違するが、異なるハッシュキーを与えても、同一のハッシュコードが生成される場合がある。このハッシュコードの競合が発生した場合、異なるデータのそれぞれについて、同一のポインタ（GRPT１テーブルへのポインタ）が与えられる。このハッシュコードの競合に対応するために、ハッシュディレクトリ方式において、GRPT１テーブルＴ４は、拡張されている。即ち、GRPT１テーブルＴ４Ａの未使用部分を用いて、別のテーブルGRPT１テーブルＴ４Ｂを連結することにより、テーブルＴ４を拡張する。図中では、２つのテーブルＴ４Ａ，Ｔ４Ｂが連結される様子を示しているが、２個に限らず、より多くのテーブルを連結することにより、GRPT１テーブルＴ４のサイズが拡張される。
【００７５】
但し、GRPT１テーブルＴ４の未使用箇所に連結先テーブルのポインタを格納して、複数のテーブルを連結させる構成のため、個々のGRPT１テーブルＴ４自体のサイズは変わらず、全体としてのサイズが大きくなるだけである。同じGRPT１テーブルＴ４を階層ディレクトリで使用する場合は、未使用箇所に連結先テーブルへのポインタを格納しなければよい。
【００７６】
図９は、階層ディレクトリ方式とハッシュディレクトリ方式との使い分けを決定するためのディレクトリ方式決定処理を示すフローチャートである。図９のフローチャートには、VDEV単位でキャッシュ管理方式を設定するための処理の概要が示されている。本処理は、例えば、ストレージシステム１０の初期設定時や構成変更時等に、自動的に実行させることができる。あるいは、システム管理者が管理端末３を介して、手動で実行するようにしてもよい。
【００７７】
本処理は、例えば、CHA２０のプロセッサとDKA３０のプロセッサとを協働させることにより、実行することができる。以下、これらの各プロセッサをまとめて代表プロセッサと呼ぶ。
【００７８】
ストレージシステム１０の初期設定時やVDEV７０の追加や移動等が発生した場合、代表プロセッサは、RAID構成情報を参照する（Ｓ１）。RAID構成情報とは、ストレージシステム１０の構成に関する情報であり、例えば、どのディスクドライブ８０によってVDEV７０が構成されているか、そのVDEV７０を識別するVDEV番号は何か等を示す情報を含んでいる。
【００７９】
代表プロセッサは、RAID構成情報を参照することにより、キャッシュ管理方式の設定対象となっているVDEV７０について、VDEV番号を取得し、このVDEV番号が予め設定された所定値（例えば、２５６）よりも小さいか否かを判定する（Ｓ２）。
【００８０】
VDEV番号が所定値未満の場合は（S2：YES）、階層ディレクトリ方式が選択される（Ｓ３）。即ち、そのVDEV番号で特定されるVDEV７０に記憶されるデータは、階層ディレクトリ方式により管理されることが決定される。これに対し、VDEV番号が所定値以上の場合は（S2：NO）、ハッシュディレクトリ方式が選択される（Ｓ４）。
【００８１】
そして、代表プロセッサは、Ｓ３またはＳ４で選択されたキャッシュ管理方式に基づいて、共有メモリ５０上に、そのVDEV７０に記憶されるデータを管理するためのディレクトリを構築する（Ｓ５）。ここで、ディレクトリを構築するとは、そのキャッシュ管理方式を実現するための階層ディレクトリテーブルまたはハッシュテーブルを構築することを意味する。以後、そのVDEV７０を対象とするデータの読み書きが発生する度に、Ｓ５で構築されたディレクトリにポインタ等が登録されていく。
【００８２】
キャッシュ管理方式の決定対象となっている全てのVDEV７０について、管理方式を決定し、共有メモリ５０にディレクトリを構築するまで（Ｓ６）、Ｓ１〜Ｓ５の処理が繰り返される。
【００８３】
本実施例では、Ｓ２で使用する所定値として、例えば、ストレージシステム１０内に実装可能なVDEV数の最大値（例えば２５６個）を用いる。VDEV番号が最大VDEV数を超えるものは、他社ストレージを自社ストレージに接続する場合のように、外部に追加されたVDEVである。従って、所定値を最大VDEV数に設定する場合、VDEV番号が２５６以上の外部VDEVは、全てハッシュディレクトリ方式で管理される。
【００８４】
このように、本実施例によれば、階層ディレクトリ方式とハッシュディレクトリ方式とを併用して、キャッシュデータを管理可能とした。従って、ストレージシステム１０の記憶容量が増大した場合でも、管理情報を記憶するための領域をあまり大きくせずに、アクセス性能の低下を防止することができる。例えば、VDEV７０を２５６個実装し、合計で７００ＴＢ程度の記憶容量を提供するストレージシステムにおいて、全てを階層ディレクトリ方式で管理する場合は、階層ディレクトリテーブルの記憶領域として、約１．６ＧＢ程度の領域を必要とする。これに対し、ハッシュディレクトリ方式の場合は、ストレージシステムの記憶容量にかかわらず、およそ１００ＭＢ程度の記憶領域でハッシュテーブルを記憶させることができる。従って、もしも、２５６個の内蔵VDEV７０については階層ディレクトリ方式で管理し、それ以上の外部VDEVについてはハッシュディレクトリ方式で管理する場合、キャッシュ管理に必要な領域は、階層ディレクトリテーブルの記憶領域約１．６ＧＢと、ハッシュテーブルの記憶領域約１００ＭＢとの合計約１．７ＧＢ程度となる。そして、VDEV数を増加させた場合でも、ハッシュテーブルの領域は変化しないため、管理領域の増大を招くことなく、また、アクセス性能を劣化させることなく、ストレージシステムの大容量化に対応することができる。
【００８５】
本実施例では、ハッシュコードを生成するためのハッシュキーとして、LBAに由来するVDEVSLOT番号の一部を使用する構成とした。従って、階層ディレクトリ方式とハッシュディレクトリ方式との間のアクセス競合を低減することができ、両方式の共通化を図ることもできる。また、EDEV番号及びVDEVSLOT番号の一部をハッシュキーとして用いることにより、ハッシュコードの競合を低減することもできる。
【００８６】
本実施例では、図８に示したように、ハッシュディレクトリで管理する場合でも、検索経路の下流側は、従来通りのディレクトリ構造を利用する構成とした。従って、下流側の構造を階層ディレクトリとハッシュディレクトリとで共通化することができ、全体構成を簡素化することができる。また、階層ディレクトリ方式とハッシュディレクトリ方式との間で、キャッシュ管理方式を容易に変更することができる。
【００８７】
本実施例では、VDEV毎にキャッシュ管理方式を選択可能とした。従って、論理的記憶デバイスの最小単位であるVDEV単位でキャッシュ管理方式を設定することができ、RAID構成の変更やCLPRの構成変更等にも容易に対応することができる。
【実施例２】
【００８８】
図１０及び図１１を参照して、第２実施例を説明する。この第２実施例は、第１実施例の変形例に該当するもので、その特徴は、予め設定されたディレクトリ方式管理テーブルＴ１１に基づいて、キャッシュ管理方式を選択するようにした点にある。
【００８９】
図１０は、ディレクトリ方式管理テーブルＴ１１の概略を示す説明図である。ディレクトリ方式管理テーブルＴ１１には、各VDEV番号毎に、階層ディレクトリ方式で管理するか、またはハッシュディレクトリ方式で管理するかが予め設定されている。
【００９０】
図１１に基づいて、ディレクトリ方式決定処理の概要を説明する。代表プロセッサは、RAID構成情報を参照してVDEV番号を取得する（Ｓ１１）。代表プロセッサは、VDEV番号を検索キーとしてディレクトリ方式管理テーブルＴ１１を参照し、そのVDEV番号に対応付けられているキャッシュ管理方式を読み出す（Ｓ１２）。
【００９１】
代表プロセッサは、そのVDEV番号に対応づけられているキャッシュ管理方式が階層ディレクトリ方式である場合（S13：YES）、階層ディレクトリ方式を選択し（Ｓ１４）、共有メモリ５０に階層ディレクトリを構築する（Ｓ１６）。そのVDEV番号に設定されているキャッシュ管理方式がハッシュディレクトリ方式の場合（S13：NO）、代表プロセッサは、ハッシュディレクトリ方式を選択し（Ｓ１５）、共有メモリ５０にハッシュディレクトリを構築する（Ｓ１６）。
【００９２】
ディレクトリ構築対象の全てのVDEV７０についてディレクトリを構築するまで、Ｓ１１〜Ｓ１６の処理が繰り返される（Ｓ１７）。
【実施例３】
【００９３】
図１２及び図１３に基づいて、第３実施例を説明する。この第３実施例は、第１実施例の変形例に相当するもので、複数の変形例を含んでいる。
【００９４】
図１２（ａ）の管理テーブルＴ１１Ａに示すように、各ＬＵ毎にそれぞれキャッシュ管理方式を選択できるように構成してもよい。また、図１２（ｂ）の管理テーブルＴ１１Ｂに示すように、各ポート２１毎にそれぞれキャッシュ管理方式を選択できるように構成してもよい。さらに、図１３の管理テーブルＴ１１Ｃに示すように、EDEV番号毎にそれぞれキャッシュ管理方式を選択できるように構成してもよい。
【００９５】
あるいは、これらのＬＵ単位、ポート単位、EDEV単位でのキャッシュ管理方式の設定を適宜組み合わせることも可能である。
【実施例４】
【００９６】
図１４の構成概念図に基づいて第４実施例を説明する。この第４実施例の特徴は、外部の他社ストレージシステム２００の記憶資源をストレージシステム１０の記憶資源として使用する場合において、適切なキャッシュ管理方式を選択する点にある。
【００９７】
ストレージシステム１０と外部のストレージシステム２００とは、CHA２０及び通信ネットワークＣＮ５を介して接続されている。ストレージシステム２００は、論理的な記憶領域であるＬＵ２１０を備えている。このＬＵ２１０は、ストレージシステム１０のVDEV７０としてマッピングされており、ホストコンピュータ１からは、ＬＵ２１０とVDEV７０との区別がつかない。即ち、ストレージシステム１０は、外部のＬＵ２１０を、あたかもストレージシステム１０内のVDEVであるかのように、ホストコンピュータ１に対して見せかける。
【００９８】
本実施例では、ストレージシステム１０内部のVDEV７０については、階層ディレクトリ方式により管理し、ストレージシステム１０の外部のＬＵ２１０については、ハッシュディレクトリ方式により管理する。記憶容量が未知のＬＵ２１０をハッシュディレクトリ方式で管理することにより、ストレージシステム１０に接続される外部記憶資源の容量が増大した場合でも、キャッシュデータを管理することができる。
【実施例５】
【００９９】
図１５は、第５実施例の構成概念図である。第５実施例の特徴は、全てのデータをハッシュディレクトリ方式で管理する点にある。この場合、ハッシュテーブルのサイズは、ストレージシステム１０が提供する記憶容量に依存せず、略一定である。
【実施例６】
【０１００】
次に、図１６は、第６実施例によるディレクトリ方式決定処理の概略フローチャートである。本実施例の特徴は、ハッシュディレクトリ方式で管理する場合に、空の階層ディレクトリを構築する点にある。
【０１０１】
代表プロセッサは、RAID構成情報に基づいて（Ｓ２１）、ディレクトリ方式管理テーブルＴ１１を参照し（Ｓ２２）、そのVDEV７０について階層ディレクトリ方式が設定されているか否かを判定する（Ｓ２３）。
【０１０２】
階層ディレクトリ方式が設定されている場合（S23：YES）、代表プロセッサは、階層ディレクトリ方式を選択し（Ｓ２４）、共有メモリ５０上に、そのVDEV７０を管理するための階層ディレクトリを構築する（Ｓ２５）。
【０１０３】
そのVDEV７０についてハッシュディレクトリ方式が設定されている場合（S23：NO）、代表プロセッサは、ハッシュディレクトリ方式を選択し（Ｓ２６）、共有メモリ５０上に、ハッシュディレクトリ及び階層ディレクトリをそれぞれ構築する（Ｓ２７）。但し、この階層ディレクトリを構成する階層ディレクトリテーブルの内容は空であり、実際には使用されない。
【０１０４】
これにより、最初はハッシュディレクトリ方式で管理し、後から階層ディレクトリ方式に変更する場合でも、比較的容易に移行することができる。
【０１０５】
なお、本発明は、上述した実施の形態に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。例えば、キャッシュ管理方式は、ストレージシステムの初期設定時に一括して行うこともできるし、ストレージシステムの構成変更時等に行うこともできる。また、階層ディレクトリ方式とハッシュディレクトリ方式との間で管理方式を変更することもできる。
【図面の簡単な説明】
【０１０６】
【図１】本発明の実施例に係わるストレージシステムの外観図である。
【図２】ストレージシステムの論理的な概略構成を示すブロック図である。
【図３】ストレージシステムのより詳細なブロック図である。
【図４】キャッシュ管理方式とVDEVとの関係を示す説明図である。
【図５】階層ディレクトリ方式によってキャッシュデータを管理する様子を模式的に示す説明図である。
【図６】ハッシュディレクトリ方式によってキャッシュデータを管理する様子を模式的に示す説明図である。
【図７】ハッシュテーブルの概略構成を示す説明図である。
【図８】階層ディレクトリ方式とハッシュディレクトリ方式とを併用してデータを管理する様子を示す説明図である。
【図９】ディレクトリ方式決定処理を示すフローチャートである。
【図１０】第２実施例に係るディレクトリ方式管理テーブルの説明図である。
【図１１】ディレクトリ方式決定処理を示すフローチャートである。
【図１２】第３実施例に係わるディレクトリ方式管理テーブルの説明図を示し、（ａ）はＬＵ単位でキャッシュ管理方式を設定する場合、（ｂ）はポート単位でキャッシュ管理方式を設定する場合をそれぞれ示す。
【図１３】EDEV番号単位でキャッシュ管理方式を設定する場合のディレクトリ方式管理テーブルを示す説明図である。
【図１４】第４実施例に係る構成概念図である。
【図１５】第５実施例に係る構成概念図である。
【図１６】第６実施例に係るディレクトリ方式決定処理のフローチャートである。
【符号の説明】
【０１０７】
１，１Ａ〜１Ｃ…ホストコンピュータ、２，２Ａ〜２Ｎ…各サブ端末、３…管理端末、１０…ストレージシステム、１１…基本筐体、１２…増設筐体、１３…制御パッケージ、１４…電源ユニット、１５…バッテリユニット、１６…冷却ファン、２０…チャネルアダプタ、２１…ポート、３０…ディスクアダプタ、４０…キャッシュメモリ、５０…共有メモリ、６０…スイッチ部、７０…仮想記憶デバイス（VDEV）、８０…ディスクドライブ、CLPR…キャッシュ分割領域、SLPR…仮想筐体、Ｔ１〜Ｔ７…テーブル、Ｔ１０…ハッシュテーブル、Ｔ１１…ディレクトリ方式管理テーブル、１１０…階層テーブルディレクトリ部、１２０…ハッシュディレクトリ部、２００…ストレージシステム、２１０…外部論理デバイス（ＬＵ）、ＣＮ１〜ＣＮ５…通信ネットワーク、ＨＦ…ハッシュ関数
【図１】
2005242757.tif 000003
【図２】
2005242757.tif 000004
【図３】
2005242757.tif 000005
【図４】
2005242757.tif 000006
【図５】
2005242757.tif 000007
【図６】
2005242757.tif 000008
【図７】
2005242757.tif 000009
【図８】
2005242757.tif 000010
【図９】
2005242757.tif 000011
【図１０】
2005242757.tif 000012
【図１１】
2005242757.tif 000013
【図１２】
2005242757.tif 000014
【図１３】
2005242757.tif 000015
【図１４】
2005242757.tif 000016
【図１５】
2005242757.tif 000017
【図１６】
2005242757.tif 000018