(57)【特許請求の範囲】
【請求項１】
磁気記憶装置とキャッシュメモリを有する記憶システムノードを複数個接続したクラスタ構成記憶システムにおいて、
前記クラスタ構成記憶システムにアクセスする複数のホストと複数の記憶システムノード内の記憶装置との間の各々のアクセス情報を保持し、
前記クラスタ構成記憶システムが前記ホストからアクセスを受けた場合に、前記保持したアクセス情報に基づいて、ホストよりアクセスを受けた記憶システムノード内のキャッシュメモリ又は、ホストからのアクセス対象となる記憶装置を有する記憶システムノード内のキャッシュメモリを選択してセグメントを確保することを特徴とするクラスタ構成記憶システム。
【請求項２】
前記アクセス情報が単位時間内でのリード回数、ライト回数、キャッシュヒット回数を含むことを特徴とする請求項１記載のクラスタ構成記憶システム。
【請求項３】
前記アクセス情報が単位時間内でのリードデータ量合計、ライトデータ量合計、キャッシュヒットデータ量合計を含むことを特徴とする請求項１記載のクラスタ構成記憶システム。
【請求項４】
前記アクセス情報は共有メモリに保持され、
前記アクセス情報にユーザが設定する属性が含まれることを特徴とする請求項１乃至３のいずれかに記載のクラスタ構成記憶システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は記憶システムに関し、特に複数の記憶システムを１つの記憶システムとして運用可能とするクラスタ構成記憶システムに関する。
【０００２】
【従来の技術】
記憶システムに関する従来技術として、例えば特開平１１−１６７５２１号公報等に記載された技術が知られている。この従来技術は、記憶システムを使用する上位装置（ホストコンピュータ）に対するインタフェース（ホストアダプタ、ＣＨＡ）、記憶システム内の磁気ディスク装置等の記憶装置に対するインタフェース（ディスクアダプタ、ＤＫＡ）、キャッシュメモリ（ＣＡＣＨＥ）、共有メモリ（ＳＭ）の相互間をコモンパス方式で接続して構成したものである。
【０００３】
図２６は従来技術による記憶システムの構成例を示すブロック図であり、以下、図２６を参照して従来技術について説明する。図２６において、１００は記憶システム、１１０はホストアダプタ（ＣＨＡ）、１２０はディスクアダプタ、１３０はキャッシュメモリ（ＣＡＣＨＥ）、１４０は共有メモリ（ＳＭ）、１５０は記憶装置（ＨＤＤ）、１６０はコモンパス、１７０は接続線、１８０はホストコンピュータである。
【０００４】
従来技術による記憶システム１００は、図２６に示すように、ホストアダプタ１１０、ディスクアダプタ１２０、キャッシュメモリ１３０、共有メモリ１４０、記憶装置１５０、コモンパス１６０、接続線１７０により構成される。ホストアダプタ１１０、ディスクアダプタ１２０、キャッシュメモリ１３０、共有メモリ１４０はコモンパス１６０により相互間が接続されている。コモンパス１６０はコモンパス１６０の障害時のために２重化されている。ディスクアダプタ１２０と記憶装置１５０との間は、１つのディスクアダプタ１２０あるいは１つの接続線１７０の障害時にも記憶装置１５０を使用できるように、１つの記憶装置１５０に２つのディスクアダプタ１２０が異なる接続線１７０で接続されている。
【０００５】
ホストアダプタ１１０は、ホストコンピュータ１８０とキャッシュメモリ１３０との間のデータ転送を制御する。ディスクアダプタ１２０は、キャッシュメモリ１３０と記憶装置１５０との間のデータ転送を制御する。キャッシュメモリ１３０は、ホストコンピュータ１８０から受信したデータあるいは、記憶装置１５０から読み取ったデータを一時的に蓄えるメモリである。共有メモリ１４０は、全てのホストアダプタ１１０とディスクアダプタ１２０とが共有するメモリである。また、図示していないが、記憶システム１００の設定、監視、保守等を行なうために保守端末（ＳＶＰ）が全てのホストアダプタ１１０とディスクアダプタ１２０とに専用線を用いて接続されている。
【０００６】
前記したような構成をもつ記憶システム１００のシステム構成を拡張する場合、ホストアダプタ１１０、ディスクアダプタ１２０、キャッシュメモリ１３０、共有メモリ１４０、記憶装置１５０等の構成要素が新たに追加される。例えば、ホストコンピュータ１８０との接続数を増やす場合、ホストアダプタ１１０が新たにコモンパス１６０に接続される。また、記憶システム１００の記憶容量を増やす場合、記憶装置１５０を追加する、あるいは、ディスクアダプタ１２０を新たにコモンパス１６０に接続して記憶装置１５０を追加する。
【０００７】
【発明が解決しようとする課題】
前記した従来技術では、記憶システムのシステム拡張にあたり、ホストアダプタ、ディスクアダプタ、キャッシュメモリ、共有メモリ及び記憶装置等の記憶システムの構成要素を増設することにより対応しているため、記憶システムの拡張性が記憶システムの構成要素の最大搭載数に制限されている。この結果、前述の従来技術は、大規模な記憶システムの要求に応じるために、記憶システムの最大搭載数を大きくすると、小規模な記憶システムの要求時にコストおよび設置面積が大きくなってしまう問題点を有している。
【０００８】
前述したような問題点を解決する方法として、クラスタ構成記憶システムが考えられる。クラスタ構成記憶システムは、複数の前記したような記憶システムを接続した構成で、ホストコンピュータからは１つの記憶システムとして運用可能とした記憶システムである。以下、クラスタ構成記憶システムを構成する記憶システムを記憶システムノードと呼ぶ。クラスタ構成記憶システムは、小規模な記憶システムの要求時には、少数の記憶システムノードでクラスタ構成記憶システムを構成し、記憶システムの規模を拡大する場合、クラスタ構成記憶システムに記憶システムノードを増設していくことにより対応することができる。このように、クラスタ構成記憶システムは、小規模なシステムから大規模なシステムまで対応することができ、また、ホストコンピュータからは１つの記憶システムとして運用可能であるため、管理が容易になるという利点を有している。
【０００９】
しかし、クラスタ構成記憶システムはホストコンピュータからのアクセス命令を受信する記憶システムノードとアクセス対象のデータを保持する記憶システムノードが異なる場合、記憶システムノード間のデータ転送が必要となり、アクセス性能が低下するという問題が生じる。
【００１０】
本発明の目的は、前述したようなクラスタ構成記憶システムの問題点を解決し、アクセス性能を向上させることができるクラスタ構成記憶システムを提供することにある。
【００１１】
【課題を解決するための手段】
本発明によれば前記目的は、複数の記憶システムを１つの記憶システムとして運用可能とするクラスタ構成記憶システムにおいて、アクセス情報を採取する手段と、採取したアクセス情報をユーザに提示する手段と、ユーザからホストコンピュータとデータの管理単位である論理ボリューム毎の属性を受け付ける手段と、前記ユーザの指示に基づいてキャッシュメモリを使用する手段を有することにより達成される。
【００１２】
前述において、アクセス情報は、例えば、単位時間内のリード回数、ライト回数、キャッシュヒット率、リードデータ量、ライトデータ量、キャッシュヒットデータ量等であり、アクセス命令を発行したホストコンピュータとデータの管理単位である論理ボリュームとの組み合わせ単位に採取する。このようにアクセス情報を採取することにより、どのホストコンピュータからどの論理ボリュームへのアクセスが多いか、さらにリードとライトの比率、キャッシュヒット率の高さが判る。前述において、ホストコンピュータと論理ボリューム毎の属性は、クラスタ構成記憶システムに前記ホストコンピュータの前記論理ボリュームへのアクセスの場合にクラスタ構成記憶システム内部のキャッシュメモリの使用方針を指示するものである。ユーザは保守端末を利用してアクセス情報を参照することにより、リード回数が多くキャッシュヒット率の高い論理ボリュームを把握でき、そのようなホストコンピュータと論理ボリュームの組み合わせをクラスタ構成システムに通知でき、クラスタ構成システムは前記ホストコンピュータからの前記論理ボリュームへのアクセスの場合に、アクセス命令を受信する記憶システムノード内のキャッシュメモリにデータを保持することで、キャッシュヒット時の記憶システムノード間のデータ転送を不要とすることができ、これによりクラスタ構成記憶システムのアクセス性能の向上を図ることができる。
【００１３】
また、本発明では、１つのデータを複数の記憶システムノード内部のキャッシュメモリに多重に保持することができ、これによりさらに記憶システムノード間のデータ転送を削減でき、クラスタ構成記憶システムのアクセス性能の向上を図ることができる。
【００１４】
また、本発明では、クラスタ構成記憶システムあるいは、保守端末に前記アクセス情報に基づいて、ホストコンピュータとデータの管理単位である論理ボリューム毎の属性を変更する機能を持たせることができ、これによりユーザの管理にかかる負荷を減らすことができる。
【００１５】
【発明の実施の形態】
以下、本発明による記憶システムの実施形態を図面により詳細に説明する。以下に説明する本発明の実施形態は、複数の記憶システムを有するクラスタ構成記憶システムがホストコンピュータとデータの管理単位である論理ボリュームの組単位にアクセス情報を採取し、ユーザから指示されたホストコンピュータと論理ボリュームの組み合わせに対応した属性に基づいて、最適な記憶システムノード内部のキャッシュメモリを選択するものである。なお、以下の説明において、クラスタ構成記憶システムを構成する記憶システムを記憶システムノードとよぶこととする。また、保守端末は、クラスタ構成記憶システム内に備えられていても、外部に備えられていてもよく、いずれの場合も、各記憶システムノードに接続可能であればよい。
【００１６】
図１は本発明の一実施形態によるクラスタ構成記憶システムの構成を示すブロック図、図２は記憶システムノードの構成を示すブロック図、図３は物理位置情報の例を説明する図、図４はセグメント情報の例を説明する図、図５はフリーセグメント管理情報の例を説明する図、図６は第一実施形態でのスロット情報の例を説明する図、図７はクリーンスロット管理情報の例を説明する図、図８はアクセス情報の例を説明する図である。図１から図８において、２００はクラスタ構成記憶システム、２１０−１〜２１０−ｎは記憶システムノード、２２０は記憶システムノード間の接続線、２３０は論理ボリューム、３００は物理位置情報、３１０はデータ転送コントローラ、４００はセグメント情報、５００はフリーセグメント管理情報、６００はスロット情報、７００はクリーンスロット管理情報、８００はアクセス情報であり、他の符号は図２６の場合と同一である。
【００１７】
本発明の一実施形態によるクラスタ構成記憶システム２００は、複数の記憶システムノード２１０−１〜２１０−ｎ（以下の説明では、これらの区別をする必要がない場合、あるいは、全体を示す場合、単に２１０と示す）と図示しない保守端末とから構成される。保守端末は、専用線を用いて全ての記憶システムノード２１０と接続されている。クラスタ構成記憶システム２００は、物理位置情報３００、セグメント情報４００、フリーセグメント管理情報５００、スロット情報６００、クリーンスロット管理情報７００、アクセス情報８００を有する。アクセス情報８００は保守端末から参照することができる。クラスタ構成記憶システム２００の記憶領域は、分割して管理されており、分割した記憶領域を論理ボリューム２３０と呼ぶ。各論理ボリューム２３０の容量およびクラスタ構成記憶システム２００内の物理的な格納位置（物理アドレス）は、保守端末を用いて指定できる。各論理ボリューム２３０の物理アドレスは後述する物理位置情報３００に保存されている。論理ボリューム２３０は記憶システムノード２１０内であれば、複数の記憶装置１５０に分割して保持することができる。データは記憶装置１５０の故障時のデータ保護のために、クラスタ構成記憶システム２００内で２重に保持する。２重に保持したデータの一方を正データ、他方を副データと呼ぶ。ホストコンピュータ１８０がクラスタ構成記憶システムのデータを指定するために論理アドレスを使用する。論理アドレスは例えば、論理ボリューム２３０と論理ボリューム２３０内の位置とからなる。クラスタ構成記憶システム２００内では、連続した論理アドレスを一定量（スロットサイズとよぶ）に分割して管理しており、分割した論理アドレスをスロットと呼ぶ。例えば、スロット番号は、論理アドレスをスロットサイズで割った商とする。記憶システムノード２１０の内部構造を図２に示す。記憶システムノード２１０は、基本的に図２６により説明したものと同様な内部構造を有し、記憶システムノード２１０と記憶システム１００との差異は、記憶システムノード２１０が他の記憶システムノード２１０との通信のためのデータ転送制御コントローラ３１０を有している点である。そして、記憶システムノード２１０は、１つ以上のホストアダプタ１１０、１つ以上のディスクアダプタ１２０、１つ以上のキャッシュメモリ１３０、１つ以上の共有メモリ１４０、１つ以上の記憶装置１５０、２つ以上のコモンパス１６０、１つ以上の接続線１７０、１つ以上のデータ転送制御コントローラ３１０を備えて構成される。ホストアダプタ１１０、ディスクアダプタ１２０、キャッシュメモリ１３０、共有メモリ１４０、データ転送制御コントローラ３１０はコモンパス１６０により相互間が接続されている。コモンパス１６０は、コモンパス１６０の障害時のために２重化されてある。ディスクアダプタ１２０と記憶装置１５０とは接続線１７０によって接続されている。また、図示していないが、クラスタ構成記憶システム２００の設定、監視、保守等を行なうために保守端末が全てのホストアダプタ１１０とディスクアダプタ１２０とに専用線を用いて接続されている。
【００１８】
ホストアダプタ１１０は、ホストコンピュータ１８０とキャッシュメモリ１３０間のデータ転送を制御する。ホストアダプタ１１０は、ホストコンピュータ１８０との接続のための複数のポート２４０を持つ。ディスクアダプタ１２０は、キャッシュメモリ１３０と記憶装置１５０との間のデータ転送を制御する。キャッシュメモリ１３０は、ホストコンピュータ１８０から受信したデータあるいは記憶装置１５０から読み出したデータを一時的に保持するメモリである。キャッシュメモリ１３０は、一定量に分割して管理されており、分割したキャッシュメモリをセグメントと呼ぶ。各セグメントの状態は、後述するセグメント情報４００で管理する。共有メモリ１４０は、クラスタ構成記憶システム２００内の全てのホストアダプタ１１０とディスクアダプタ１２０とが共有するメモリである。ホストアダプタ１１０及びディスクアダプタ１２０は、データ転送制御コントローラ３１０及び接続線２２０を用いて、他の記憶システムノード２１０内のホストアダプタ１１０、ディスクアダプタ１２０との通信及び他の記憶システムノード２１０内のキャッシュメモリ１３０、共有メモリ１４０の使用が可能である。
【００１９】
物理位置情報３００は、論理ボリューム２３０の容量及び２組のクラスタ構成記憶システム２００内の物理的な格納位置（物理アドレス）を保持する。データはクラスタ構成記憶システム２００内で２重に保持されるため、物理アドレスは２組あり、一方を正物理アドレス、他方を副物理アドレスと呼ぶ。物理位置情報３００は、共有メモリ１４０に保存される。図３に示す物理位置情報例において、物理アドレスは、記憶システムノード番号と記憶システムノード内位置とからになる。図３に示す物理アドレス例では、論理ボリューム２は、記憶システムノード１内の５０００の位置から９９９９の位置までと記憶システムノード１内の１５０００の位置から１９９９９の位置までであることを示す。論理アドレス：（論理ボリューム２、論理ボリューム２３０内位置４０）に対するリード命令は、記憶システムノード１の記憶システムノード内位置５０４０あるいは記憶システムノード１の記憶システムノード内位置１５０４０からのデータ読み出し命令となる。
【００２０】
フリーセグメント管理情報５００、スロット情報６００、クリーンスロット管理情報７００は、ホストアダプタ１１０あるいはディスクアダプタ１２０が同時に更新する可能性があり、データの整合性を保つために、当該情報を参照及びおよび変更する場合、当該情報をロックし、他のホストアダプタ１１０あるいはディスクアダプタ１２０が変更できない状態にした後、当該情報の参照及び変更を行い、変更後、当該情報のロックを解除する。例えば、情報毎にロック情報を保持し、情報のロックおよびロックの解除を以下のように行う。ロック情報は、１ビットがホストアダプタ１１０あるいはディスクアダプタ１２０を表し、ビット状態１がホストアダプタ１１０あるいはディスクアダプタ１２０が当該情報をロックしていることを示す。当該情報のロックの方法は、アトミック命令で当該情報のロック情報内の自ホストアダプタ１１０あるいは自ディスクアダプタ１２０を示すビットを１に変更する。ロックの成否は、アトミック命令の戻り値である変更前のロック情報を参照することで判る。変更前のロック情報内の自ホストアダプタ１１０あるいは自ディスクアダプタ１２０を示すビット以外のビットが１の場合は、他のホストアダプタ１１０あるいは他のディスクアダプタ１２０が既に当該情報をロックしているため、ロックは失敗であり、アトミック命令でロック情報内の自ホストアダプタ１１０あるいは自ディスクアダプタ１２０を示すビットを０に戻す。そして、しばらく時間が経過後、再度ロック取得を試みる。変更前のロック情報が内の自ホストアダプタ１１０あるいは自ディスクアダプタ１２０を示すビットのみが１の場合は、ロックは成功であり、当該情報の修正を行う。当該情報のロックの解除方法は、アトミック命令で当該情報のロック情報内の自ホストアダプタ１１０あるいは自ディスクアダプタ１２０を示すビットを０に戻す。
【００２１】
セグメント情報４００は、セグメントのブロック情報と次セグメント番号を保持する。セグメント情報４００は、共有メモリ１４０に保存される。ブロック情報は、ホストコンピュータ１８０からのアクセスの単位（以下、ブロックよぶ）で、セグメントの当該位置に保持しているデータが有効か無効を示す。図４に示すセグメント情報例では、セグメントサイズが２０４８バイト、ブロックサイズが５１２バイトの場合であり、セグメント情報４００は４つのブロック情報をもち、セグメント１のブロック位置０とブロック位置２が有効、すなわち、セグメントの先頭から５１１バイトと１０２４バイトから１５３５バイトまでに有効なデータがあることを示す。次セグメント番号は、後述するフリーセグメント管理情報５００で未使用のセグメントを管理するために、セグメント番号を保持する。ただし、次セグメント番号への設定が不要な場合は、次セグメント番号が無意味であることを示すために、セグメント番号で使用していない無効値を設定する。図４に示すセグメント情報例および以下の説明では、次セグメント番号が無意味であることを示すために、無効値に”２５５”を使用する。
【００２２】
フリーセグメント管理情報５００は、未使用のセグメントを管理するために、ロック情報、未使用セグメント個数、最古セグメント番号、最新セグメント番号を保持する。フリーセグメント管理情報５００は共有メモリ１４０に保存される。未使用セグメント量は、当該フリーセグメント管理情報５００が管理しているセグメント数を保持する。最古セグメント番号は、当該フリーセグメント管理情報５００が管理しているセグメントの中で、未使用状態になってから最も時間が経過したセグメント番号を保持する。最新セグメント番号は、当該フリーセグメント管理情報５００が管理しているセグメントの中で、未使用状態になってから最も時間が経過していないセグメント番号を保持する。ただし、当該フリーセグメント管理情報５００が管理しているセグメントが存在しない場合は、有効な数値が設定されていないことを示すため、最古セグメント番号および最新セグメント番号にセグメント番号で使用していない無効値を設定する。以下の例および説明では、最古セグメント番号および最新セグメント番号に有効な数値が設定されていないことを示すため、無効値に”２５５”を使用する。図５に示すフリーセグメント管理情報例では、未使用のセグメントが３つ存在し、最古セグメント番号からセグメント２が未使用であることがわかる。さらに、図４に示すセグメント情報例の場合には、セグメント情報２の次セグメント番号４から、セグメント４が未使用、セグメント情報４の次セグメント番号３から、セグメント３が未使用であることがわかる。
【００２３】
フリーセグメント管理情報５００はクラスタ構成記憶システム２００に少なくとも１つ必要であるが、本実施例では、記憶システムノード２１０を指定したセグメントの取得を容易にするため、記憶システムノード２１０毎に１つずつ設ける。以下、記憶システムノードＡのフリーセグメント管理情報５００をフリーセグメント管理情報Ａと記載する。
【００２４】
スロット情報６００はスロットのロック状態、前スロット番号、次スロット番号、１つ以上のセグメント番号を保持する。スロット情報６００は共有メモリ１４０に保存される。前スロット番号および次スロット番号は、後述するクリーンスロット管理情報７００で有効なデータを保持するスロットを管理するために、スロット番号を保持する。ただし、前スロット番号および次スロット番号への設定が不要な場合は、前スロット番号および次スロット番号が無意味であることを示すために、セグメント番号で使用していない無効値を設定する。図６に示すスロット情報例および以下の説明では、前スロット番号および次スロット番号が無意味であることを示すため、無効値に”２５５”を使用する。スロット情報６００が保持するセグメント番号数はスロットサイズをセグメントサイズで割った商である。例えば、スロットのサイズが８ＫＢ、セグメントのサイズが２ＫＢの場合は、スロット情報６００は４つのセグメント番号を保持し、論理アドレスの順に、セグメント位置０、セグメント位置１、セグメント位置２、セグメント位置３とする。セグメント位置ｎのセグメント番号ｎが有効なセグメント番号を保持する場合は、論理アドレス：（スロット番号×スロットサイズ＋セグメントサイズ×ｎ）から論理アドレス：（スロット番号×スロットサイズ＋セグメントサイズ×（ｎ＋１）−１）のデータに対し、セグメントが割り当てられていることを示す。上記論理アドレスにセグメントを割り当てていない場合は、セグメント番号で使用していない無効値を設定する。図６に示すスロット情報例および以下の説明では、当該論理アドレスにセグメントを割り当てていないことを示すため、無効値に”２５５”を使用する。
【００２５】
クリーンスロット管理情報７００はアクセス後のスロットを管理するために、ロック情報、クリーンスロット数、最古使用スロット番号、最新使用スロット番号を保持する。クリーンスロット管理情報７００は共有メモリ１４０に保存される。クリーンスロット数は当該クリーンスロット管理情報７００が管理しているスロット数を保持する。最古使用スロット番号は、当該クリーンスロット管理情報７００が管理しているスロットの中で、アクセスされてから最も時間が経過したスロット番号を保持する。最新使用スロット番号は、当該クリーンスロット管理情報７００が管理しているスロットの中で、アクセスされてから最も時間が経過していないスロット番号を保持する。ただし、当該クリーンスロット管理情報７００が管理しているスロットが存在しない場合は、有効な数値が設定されていないことを示すため、最古使用スロット番号および最新使用スロット番号にスロット番号で使用していない無効値を設定する。以下の例および説明では、最古使用スロット番号および最新使用スロット番号に有効な数値が設定されていないことを示すため、無効値に”２５５”を使用する。例えば、クリーンスロット管理情報例が図７に示す例かつスロット情報６００が図６に示す例の場合には、最古使用スロット番号２から、スロット２が、当該クリーンスロット管理情報７００が管理しているスロットの中で、アクセスされてから最も時間が経過していることがわかる。スロット情報２の次スロット番号４から、スロット４が、スロット２の次に当該クリーンスロット管理情報７００が管理しているスロットの中で、アクセスされてから最も時間が経過していることがわかる。
【００２６】
クリーンスロット管理情報７００は、クラスタ構成記憶システム２００に少なくとも１つ必要であるが、本実施例では、記憶システムノード２１０を指定したセグメントの取得を容易にするため、記憶システムノード２１０毎に１つずつ設ける。以下、記憶システムノードＡのクリーンスロット管理情報７００をクリーンスロット管理情報Ａと記載する。このようにクリーンスロット管理情報７００を用い、キャッシュメモリに保持しているデータをアクセス順に管理することで、キャッシュヒットの可能性を向上している。
【００２７】
アクセス情報８００は、論理ボリューム２３０とホストコンピュータ１８０毎に、属性、単位時間内に当該ホストコンピュータ１８０から当該論理ボリューム２３０に対して行われたリード回数、キャッシュヒット回数、ライト回数等を保持する。また、回数ではなく単位時間内のリードデータ量合計、ライトデータ量合計、キャッシュヒットデータ量合計等を保持してもよい。アクセス情報８００は、例えば共有メモリ１４０に保持する。属性は、後述するセグメント確定処理にて使用するキャッシュメモリの選択に使用し、通常、フロント、条件付きフロントの３つの数値があり、ユーザが保守端末により設定する。属性のフロントは、新たにセグメントを確保する場合、主にアクセス命令を受信した記憶システムノード２１０にセグメントを確保することを示す。属性の条件付きフロントは、新たにセグメントを確保する場合、指定条件が成立すれば、主にアクセス命令を受信した記憶システムノード２１０にセグメントを確保することを示す。指定条件は、例えば、単位時間内の当該ホストコンピュータ１８０からの当該論理ボリューム２３０へのリード回数、全アクセスに対するリード比率、キャッシュヒット率等であり、１分間のリード回数が１００回以上、全アクセスに対するリード比率が８０％以上、キャッシュヒット率が５０％以上という形式で指定する。属性の通常は新たにセグメントを確保する場合、主にデータを保持する記憶システムノード２１０のセグメントを確保することを示す。クラスタ構成記憶システム２００は、単位時間内のリード回数、単位時間内のキャッシュヒット回数、単位時間内のライト回数を予め指定された間保持している。
【００２８】
クラスタ構成記憶システム２００内に保持したアクセス情報８００は、予め指定された時間毎もしくは保守端末を用いたユーザの指示によって、保守端末に転送され、保守端末に保持される。保守端末に保持したアクセス情報８００は、保守端末から参照できる。また、上記単位時間は保守端末を用いて設定できる。
【００２９】
また、ユーザが属性を指定するのではなく、クラスタ構成記憶システム２００が周期的にアクセス情報８００を参照し、例えば全アクセスに対するリード比率が７０％以上、キャッシュヒット率が５０％以上の場合に、当該論理ボリューム２３０と当該ホストコンピュータ１８０に対応する属性をフロントに変更してもよい。
【００３０】
図９はクラスタ構成記憶システム２００がホストコンピュータ１８０からリード命令を受信した際の、クラスタ構成記憶システム２００の動作を説明する図、図１０はホストコンピュータ１８０からリード命令を受信したホストアダプタ１１０の動作（データ送信処理９１０）のフローチャート、図１１はリード対象データを保持する記憶装置１５０を制御するディスクアダプタ１２０の動作（データリード処理９２０）のフローチャートであり、以下、これらについて説明する。
【００３１】
ホストコンピュータ１８０からリード命令を受信したホストアダプタ１１０は、データ送信処理９１０によってセグメント内にリード対象データが存在するか調べ、存在する場合は当該セグメントからホストコンピュータ１８０にデータを転送する。存在しない場合はセグメントを確保し、当該データを保持するディスクアダプタ１２０に当該セグメント内にデータを読み込むようリード命令９３０を発行する。ここで、図９に示すようにリード命令を受信した記憶システムノード２１０−２内のセグメント２にデータを保持する場合と対象データを保持する記憶装置１５０を持つ記憶システムノード２１０−３内のセグメント３にデータを保持する場合を比較すると、次の同一論理アドレスへのリード時にキャッシュヒットとなれば、前者は記憶システムノード２１０間のデータ転送が不要となる。従って、リード命令の場合は、リード命令を受信した記憶システムノード２１０−２内のセグメント２を確保する。ディスクアダプタ１２０はデータリード処理９２０によって、リード命令９３０を受け、記憶装置１５０から指定データを指定されたセグメントに読み込んだ後、ホストアダプタ１１０に終了報告をする。ホストアダプタ１１０はセグメント内のデータをホストコンピュータに転送する。
【００３２】
ホストコンピュータ１８０からリード命令を受信したホストアダプタ１１０が行うデータ送信処理９１０について説明する。リード命令は、リード対象のデータの論理アドレスＡ、データ量等を含んでいる。
（１）リード対象の論理アドレスＡからスロット番号Ａ、セグメント位置Ａ、ブロック位置Ａを求める。論理アドレスをスロットサイズで割った商がスロット番号、余りをセグメントサイズで割った商がセグメント位置、さらに余りをブロックサイズで割った余りがブロック位置である（ステップ１００５）。
（２）スロット情報Ａを参照および変更する間、他のホストアダプタ１１０あるいは他のディスクアダプタ１２０が当該スロット情報Ａを変更しないために、当該スロットＡをロックする。ロック取得後、後述するセグメント確定処理を行う。セグメント確定処理は当該データ用にセグメントが割当てられているか否かを調べ、割り当てられている場合は、当該データが有効か否かを調べ、割り当てられていない場合は、セグメントの割り当てを試みる。セグメント確定処理の結果は、キャッシュヒット、キャッシュミス、セグメント確保不可のいずれかとなる（ステップ１０１０、１０１５）。
（３）セグメント確定処理の結果がキャッシュヒットの場合は、リード命令を発行したホストコンピュータ１８０とリード対象のデータを含む論理ボリューム２３０に対応するアクセス情報８００のキャッシュヒット回数に１を加え、当該セグメントからホストコンピュータ１８０にデータを転送し、ホストコンピュータ１８０にデータ転送終了を報告する（ステップ１０２０〜１０３５）。
（４）セグメント確定処理の結果がセグメント確保不可の場合は、クラスタ構成記憶システム２００内の全てのセグメントが使用中なため、しばらく時間が経過後、再度セグメント確定処理を行う（ステップ１０４５、１０５０）。
（５）セグメント確定処理の結果がキャッシュミスの場合は、スロットＡのロックを解除し、物理位置情報３００を用い、論理アドレスＡから物理アドレスＡを求め、当該データを保持する記憶装置１５０を含む記憶システムノード２１０内のディスクアダプタ１２０に、リード命令９３０を発行する。リード命令は、スロット番号Ａ、セグメント位置Ａ、ブロック位置Ａ、物理アドレスＡ、論理アドレスＡ、転送量等を含む（ステップ１０４５〜１０６０）。
（６）ホストアダプタ１１０は当該ディスクアダプタ１２０からのリード終了報告を受けた後、スロットＡをロックし、スロット情報Ａのセグメント位置Ａのセグメントのブロック位置Ａからホストコンピュータ１８０にデータを転送し、ホストコンピュータ１８０にデータ転送終了を報告する（ステップ１０６５、１０７０、１０３０、１０３５）。
（７）ホストコンピュータ１８０へのデータ転送終了の報告後、リード命令を発行したホストコンピュータ１８０とリード対象のデータを含む論理ボリューム２３０に対応するアクセス情報８００のリード回数に１を加え、スロットＡのロックを解除する。スロットＡのセグメントの使用は終わったが、直ぐに破棄せず、キャッシュヒットする可能性があるため、キャッシュミスの場合は後述するクリーンスロット追加処理によってスロットＡをクリーンスロット管理情報７００に追加し、暫くの間、有効なデータとしてセグメントを保持する。キャッシュヒットの場合は、より長くセグメントを保持するために、クリーンスロット位置変更処理を行う（ステップ１０４０、１０８５〜１０９５）。
【００３３】
次に、ホストアダプタ１１０からのリード命令９３０を受信したディスクアダプタ１２０が行うデータリード処理９２０について説明する。
（１）スロット情報Ａを参照および変更する間、他のホストアダプタ１１０あるいは他のディスクアダプタ１２０が当該スロット情報Ａを参照および変更しないために、当該スロットＡをロックする（ステップ１１１０）。
（２）物理アドレスＡが示すデータを記憶装置１５０からスロット情報Ａのセグメント位置Ａのセグメントのブロック位置Ａに読み込む（ステップ１１２０）。
（３）スロット情報Ａのセグメント位置Ａのセグメントのブロック位置Ａのブロック情報を有効にする（ステップ１１３０）。
（４）スロットＡのロックを解除し、ホストアダプタ１１０にリード命令の完了を報告する（ステップ１１４０、１１５０）。
【００３４】
図１２はクラスタ構成記憶システム２００がホストコンピュータ１８０からライト命令を受信した際の、クラスタ構成記憶システム２００の動作を説明する図、図１３はホストコンピュータ１８０からライト命令を受信したホストアダプタ１１０の動作（データ受信処理１２１０）のフローチャート、図１４はライト対象データを保持する記憶装置１５０を制御するディスクアダプタ１２０の動作（データライト処理１２２０）のフローチャートであり、以下、これらについて説明する。
【００３５】
ホストコンピュータ１８０からライト命令を受信したホストアダプタ１１０は、データ受信処理１２１０によってライト対象のデータのためのセグメントが確保されているか調べ、存在する場合は当該セグメントに、存在しない場合はセグメントを確保し、ホストコンピュータ１８０からのデータを転送する。ここで、図１２に示すようにライト命令を受信した記憶システムノード２１０−１内のセグメント１にデータを受信する場合と対象データを保持する記憶システムノード２１０−３内のセグメント３にデータを保持する場合とを比較すると、次の同一論理アドレスへのリード時にキャッシュヒットとなれば、前者は記憶システムノード２１０間のデータ転送が不要となる。従って、ホストコンピュータ１からの論理ボリューム２３０へのアクセスにキャッシュヒットが期待できる場合はリード命令を受信した記憶システムノード２１０−１内のセグメント１を確保する。但し、記憶装置１５０へのデータの書きこみのために、記憶システムノード２１０間のデータ転送が２回必要となるため、ヒットが期待できない場合は対象データを保持する記憶システムノード２１０−２内のセグメント２を確保する。データを受信後、ホストアダプタ１１０は、ディスクアダプタ１２０にライト命令９３０を発行する。ディスクアダプタ１２０はライト命令９３０を受け、データライト処理１２２０によって記憶装置１５０にデータを正副２回書き込む。
【００３６】
ホストコンピュータ１８０からライト命令を受信したホストアダプタ１１０が行うデータ受信処理１２１０について説明する。このホストコンピュータ１８０からのライト命令は、ライト対象の論理アドレスＡ、データ量、ライトデータ等を含んでいる。
（１）ライト対象の論理アドレスＡからスロット番号Ａ、セグメント位置Ａ、ブロック位置Ａを求める。論理アドレスをスロットサイズで割った商がスロット番号、余りをセグメントサイズで割った商がセグメント位置、さらに余りをブロックサイズで割った余りがブロック位置である。（ステップ１３０５）。
（２）スロット情報Ａを参照および変更する間、他のホストアダプタ１１０あるいは他のディスクアダプタ１２０が当該スロット情報Ａを参照および変更しないために、当該スロットＡをロックする。ロック取得後、セグメント確定処理を行う。セグメント確定処理は当該データ用にセグメントが割当てられているか否かを調べ、割り当てられていない場合は、セグメントの割り当てを試みる。セグメント確定処理の結果は、キャッシュヒット、キャッシュミス、セグメント確保不可のいずれかとなる（ステップ１３１０、１３２０）。
（３）セグメント確定処理の結果がセグメント確保不可の場合は、クラスタ構成記憶システム２００内の全てのセグメントが使用中なため、しばらく時間が経過後、再度セグメント確定処理を行う（ステップ１３２０、１３２５）。
（４）セグメント確定処理の結果がキャッシュヒットおよびキャッシュミスの場合は、スロット情報Ａのセグメント位置Ａのセグメントのブロック位置Ａにホストコンピュータ１８０からのデータを保存し、ホストコンピュータ１８０にデータ転送終了を報告する（ステップ１３３０、１３３５）。
（５）ホストコンピュータ１８０へのデータ転送終了の報告後、ライト命令を発行したホストコンピュータ１８０とライト対象のデータを含む論理ボリューム２３０に対応するアクセス情報８００のライト回数に１を加える（ステップ１３４０）。
（６）スロット情報Ａのセグメント位置Ａのセグメントのセグメント情報４００のブロック位置Ａのブロック情報を有効にし、スロットＡのロックを解除する（ステップ１３４５、１３５０）。
（７）セグメントに保持したデータを記憶装置１５０に保存するために、物理位置情報３００を用い、論理アドレスＡから正物理アドレスＡを求め、当該データを保持する記憶装置１５０を含む記憶システムノード２１０内のディスクアダプタ１２０に、ライト命令１２３０を発行し処理を終える。ライト命令１２３０は、スロット番号Ａ、セグメント位置Ａ、ブロック位置Ａ、物理アドレスＡ、論理アドレスＡ、転送量等を含む（ステップ１３５５）。
【００３７】
次に、ホストアダプタ１１０からのライト命令１２３０を受信したディスクアダプタ１２０が行うデータライト処理１２２０について説明する。
（１）スロット情報Ａを参照および変更する間、他のホストアダプタ１１０あるいは他のディスクアダプタ１２０が当該スロット情報Ａを変更しないために、当該スロットＡをロックする。論理アドレスＡが示すデータを物理アドレスＡが示す記憶装置１５０に書き込み、スロットＡのロックを解除する。物理アドレスが正物理アドレスの場合、物理位置情報３００を用い、論理アドレスＡから副物理アドレスＢを求め、当該データを保持する記憶装置１５０を含む記憶システムノード２１０内のディスクアダプタ１２０にライト命令１２３０を発行する。ライト命令は、スロット番号Ａ、セグメント位置Ａ、ブロック位置Ａ、物理アドレスＢ、論理アドレスＡ、転送量等を含む（ステップ１４０５〜１４２５）。（２）ステップ１４２０の調べで、物理アドレスが副物理アドレスの場合は、スロットＡのセグメントの使用は終わったが、当該データがキャッシュヒットする可能性があるため、後述するクリーンスロット追加処理によってスロットＡをクリーンスロット管理情報７００に追加し、暫くの間、有効なデータとしてセグメントを保持する（ステップ１４３０）。
【００３８】
図１５に示すセグメント確定処理について説明する。入力はリード命令もしくはライト命令、スロットＡ、セグメント位置Ａ、ブロック位置Ａである。以下の説明で、リードもしくはライト命令を受信した記憶システムノード２１０を記憶システムノードＡ、アクセス対象のデータを保持する記憶装置１５０を含む記憶システムノード２１０を記憶システムノードＢ、上記以外の全ての記憶システムノード２１０を記憶システムノードＣとする。
（１）スロット情報Ａのセグメント位置Ａのセグメント番号Ａを調べ、有効なセグメント番号であり、かつセグメント情報Ａのブロック位置Ａのブロック情報が有効であればキャッシュヒットとして、処理を終了する。ステップ１５０５の調べて、ブロック情報が無効であればキャッシュミスとして、処理を終了する（ステップ１５００〜１５１５）。
（２）ステップ１５００の調べで、セグメント番号Ａが無効値の場合は、リード命令かライト命令かを調べ、リード命令あるいはライト命令の場合で、アクセス命令を発行したホストコンピュータ１８０とアクセス対象のデータを含む論理ボリューム２３０に対応するアクセス情報８００の属性がフロントの場合もしくは、属性が条件付きフロントかつ条件を満足する場合は、記憶システムノードＡ、Ｂ、Ｃの順にセグメント確保対象としてセグメントを確保する。優先して記憶システムノードＡのセグメントの取得を試みるのは、属性がフロントであるため、全アクセスに対するリード率が高く、キャッシュヒットが期待でき、同一論理アドレスへの再アクセスの際に、記憶システムノード２１０間のデータ転送が不要となる可能性が高いためである。次に優先して記憶システムノードＢのセグメントの取得を試みるのは、図１２で説明したように記憶システムノード２１０間のデータ転送が１回で記憶装置１５０への２回のデータ書き込みができるためである。クリーンスロット管理情報７００に管理されているスロットはキャッシュヒットする可能性があるため、フリーセグメント管理情報５００に管理されているセグメントを優先して確保するために、セグメント取得処理、クリーンスロット破棄処理の順で処理を行う（ステップ１５２０〜１５３０）。
（３）アクセス命令がライト命令かつステップ１５２５の調べで、条件を満足しない場合は、記憶システムノードＢ、Ａ、Ｃの順にセグメント確保対象としてセグメントを確保する。優先して記憶システムノードＢのセグメントの取得を試みるのは、記憶システムノード２１０間のデータ転送が１回で記憶装置１５０への２回のデータ書き込みができるためである。次に優先して記憶システムノードＡのセグメントの取得を試みるのは、記憶システムノード２１０間のデータ転送が２回で記憶装置１５０への２回のデータ書き込みができるためである。クリーンスロット管理情報７００に管理されているスロットはキャッシュヒットする可能性があるため、フリーセグメント管理情報５００に管理されているセグメントを優先して確保するために、セグメント取得処理、クリーンスロット破棄処理の順で処理を行う（ステップ１５４０）。
（４）ステップ１５３０あるいはステップ１５４０の処理結果が成功の場合は、当該セグメントをスロットＡのセグメント位置Ａのセグメント情報に登録し、キャッシュミスとして処理を終了する（ステップ１５５０）。
（５）ステップ１５３０あるいはステップ１５４０の処理結果がセグメント確保不可の場合は、全セグメントが使用中であるため、セグメント確保不可として処理を終了する（ステップ１５６０）。
【００３９】
このように、リード命令、アクセス情報８００の属性がフロントの場合あるいは条件付きフロントでかつ条件を満足場合、リード命令もしくはライト命令を受信した記憶システムノード２１０内のセグメントを使用することで、次回の同一論理アドレスに対するリード命令の際に、記憶システムノード２１０間のデータ転送が不要であるため、クラスタ構成記憶システム２００のアクセス性能を向上することができる。さらに、他の記憶システムノード２１０内のセグメントを使用する場合よりレスポンスタイムが短縮できる。
【００４０】
また、ライト命令かつ属性が通常の場合もしくは、属性が条件付きフロントでかつ条件を満足しない場合にアクセス対象のデータを保持する記憶装置１５０を含む記憶システムノード２１０内のセグメントを使用することで、記憶システムノード２１０間のデータ転送１回により記憶装置１５０への２回のデータ書き込みが可能となる。さらに、アクセス情報８００の属性に条件付きフロントを設けることで、リードが多い場合のみフロントにする等、アクセス状況に応じたセグメントの利用が可能となる。
【００４１】
次に、セグメントの管理方法について説明する。セグメントは、スロット情報６００あるいはフリーセグメント管理情報５００に管理される。未使用状態のセグメントは、セグメントを持つ記憶システムノード２１０に対応するフリーセグメント管理情報５００により管理される。図１６は未使用状態のセグメントのフリーセグメント管理情報５００への登録処理（フリーセグメント追加処理）のフローチャート、図１７はフリーセグメント管理情報５００からセグメントを取得する処理（フリーセグメント取得処理）のフローチャートであり、以下、これらについて説明する。
【００４２】
フリーセグメント追加処理は、ホストアダプタ１１０あるいはディスクアダプタ１２０がクラスタ構成記憶システムの起動時に全セグメントを処理対象として行う。さらに、一定周期毎もしくは、未使用のセグメントが少ない場合に、ホストアダプタ１１０あるいはディスクアダプタ１２０が後述するクリーンスロット破棄処理によりスロット情報６００に登録されているセグメントを処理対象として行う。以下の説明ではセグメントＡを処理対象とする。
（１）フリーセグメント管理情報５００をロックし、クリーンスロット管理情報７００の最新セグメント番号を取得する。以下、取得したセグメント番号をＢとする（ステップ１６００、１６１０）。
（２）スロット番号Ｂが無効値の場合は、クリーンスロット管理情報７００の最古セグメント番号にセグメント番号Ａを設定する（ステップ１６１５、１６２０）。
（３）ステップ１６１５の調べで、スロット番号Ｂが有効値の場合は、セグメントＢとセグメントＡを関連づけるために、セグメント情報Ｂの次セグメント番号にセグメント番号Ａを設定する（ステップ１６２５）。
（４）クリーンスロット管理情報７００の最新セグメント番号にセグメント番号Ａを設定する。セグメント情報Ａの次セグメント番号に無効値を設定し、フリーセグメント管理情報５００をロックを解除する（ステップ１６３０〜１６５０）。
【００４３】
フリーセグメント取得処理はホストアダプタ１１０あるいはディスクアダプタ１２０が新たにセグメントを必要とする場合に、セグメント確定処理内で行う。
（１）フリーセグメント管理情報５００をロックし、フリーセグメント管理情報５００の未使用セグメント個数を調べ、未使用セグメント個数が０の場合は、未使用のセグメントが存在しないため、フリーセグメント管理情報５００のロックを解除し、セグメント確保不可として処理を終了する（ステップ１７００〜１７３０）。
（２）ステップ１７１０の調べで、フリーセグメント管理情報５００の未使用セグメント個数が１以上の場合は、フリーセグメント管理情報５００の最古セグメント番号を取得する。以下、取得したセグメント番号をＡとする。フリーセグメント管理情報５００の最古セグメント番号にセグメント情報Ａの次セグメント番号を設定する。フリーセグメント管理情報５００の未使用セグメント個数から１を引く。フリーセグメント管理情報５００のロックを解除し、セグメントＡを確保として処理を終了する（ステップ１７４０〜１７８０）。
【００４４】
次に、スロットの管理方法について説明する。リード命令およびライト命令後の有効なデータを保持するスロットは、キャッシュヒットを期待し、暫くの間セグメントの破棄を行わない。その間はクリーンスロット管理情報７００により管理し、未使用セグメント量が少なくなった場合もしくは、一定周期毎にアクセスされてから時間が経過したものからセグメントの破棄を行う。
【００４５】
図１８はクリーンスロット管理情報７００に管理されているスロットから、セグメントを取得する際の処理（クリーンスロット破棄処理）のフローチャート、図１９はクリーンスロット管理情報７００にスロットを追加する際の処理（クリーンスロット追加処理）のフローチャート、図２０はクリーンスロット管理情報７００の修正処理（クリーンスロット位置変更処理）のフローチャートであり、以下、これらについて説明する。
【００４６】
クリーンスロット破棄処理はホストアダプタ１１０あるいはディスクアダプタ１２０が未使用セグメント量が少なくなった場合もしくは、一定周期毎に行う。
（１）クリーンスロット管理情報７００をロックし、クリーンスロット管理情報７００のクリーンスロット数を調べ、クリーンスロット数が０の場合は登録されているスロットが存在しないため、クリーンスロット管理情報７００のロックを解除し、セグメント確保不可として処理を終了する（ステップ１８００〜１８１５）。
（２）ステップ１８０５の調べで、クリーンスロット管理情報７００のクリーンスロット数が１以上の場合は、クリーンスロット管理情報７００の最古使用スロット番号を取得する。以下、取得したスロット番号をＡとする。スロットＡをロックし、クリーンスロット管理情報７００の最古使用スロット番号にスロット情報Ａの次スロット番号を設定する。以下、次スロット番号をＢとする。クリーンスロット管理情報７００のクリーンスロット数から１を引く。スロット情報Ａの次スロット番号Ｂが有効値の場合、スロットＢをロックし、スロット情報Ｂの前セグメント番号に無効値を設定し、ロックを解除する。クリーンスロット管理情報７００のロックを解除する。スロット情報Ａの次スロット番号に設定するスロット番号がないことを示す無効値を設定する（ステップ１８２０〜１８４５）。
（３）スロット情報Ａの全てのセグメント番号を調べ、有効なセグメント番号が設定されている場合、当該セグメント番号Ａを一次的に記憶し、設定するセグメント番号がないことを示す無効値を設定する（ステップ１８５５）。
（４）ステップ１８５５の調べで、セグメント番号Ａが確保するセグメント数以上存在した場合は、不要なセグメントはフリーセグメント追加処理にて、フリーセグメント管理情報５００に追加する（ステップ１８６０）。
（５）スロットＡのロックを解除し、セグメントＡを確保として処理を終了する（ステップ１８６５、１８７０）。
【００４７】
クリーンスロット追加処理は、リード時の処理で、ホストアダプタ１１０がデータ送信処理９１０終了時あるいはディスクアダプタ１２０がデータライト処理１２２０終了時に処理対象スロットに対して行う。以下、追加対象のスロットをＡとする。
（１）クリーンスロット管理情報７００およびスロットＡをロックする（ステップ１９００、１９０５）。
（２）クリーンスロット管理情報７００のクリーンスロット数が０の場合は、スロット情報Ａの前スロット番号と次スロット番号に無効値を設定し、クリーンスロット管理情報７００の最古使用スロット番号と最新使用スロット番号にＡを設定する。スロットＡのロックおよびクリーンスロット管理情報７００のロックを解除し、処理を終了する（ステップ１９１０〜１９３０）。
（３）ステップ１９１０の調べで、クリーンスロット数が１以上の場合は、クリーンスロット管理情報７００の最新使用スロット番号を取得する。以下、取得したスロット番号をＢとする。スロットＢをロックし、スロット情報Ｂの次スロット番号にスロット番号Ａを設定し、スロットＢのロックを解除する（ステップ１９３５〜１９５０）。
（４）クリーンスロット管理情報７００の最新使用スロット番号にスロット番号Ａを設定する。スロット情報Ａの前スロット番号にスロット番号Ｂを設定し、次スロット番号に無効値を設定する。スロットＡのロックおよびクリーンスロット管理情報７００のロックを解除し、処理を終了する（ステップ１９５５〜１９７０）。
【００４８】
クリーンスロット位置変更処理はリード命令かつキャッシュヒット時、ホストアダプタ１１０が当該データをより長くキャッシュメモリに保持する目的で行う。以下の説明ではスロットＡを処理対象とする。
（１）クリーンスロット管理情報７００およびスロットＡをロックする。スロット情報Ａの前スロット番号Ｂと次スロット番号Ｃを取得する（ステップ２０００〜２０１０）。
（２）スロット番号Ｂが無効値の場合は、クリーンスロット管理情報７００の最古使用スロット番号に、スロット番号Ｃを設定する（ステップ２０１５、２０２０）。
（３）ステップ２０１５の調べで、スロット番号Ｂが有効値の場合は、スロット情報Ｂをロックし、スロット情報Ｂの次スロット番号にスロット番号Ｃを設定し、スロット情報Ｂをロックを解除する（ステップ２０２５〜２０３５）。
（４）スロット番号Ｃが無効値の場合は、クリーンスロット管理情報７００の最新使用スロット番号にスロット番号Ｂを設定する（ステップ２０４０、２０４５）。
（５）ステップ２０４０の調べで、スロット番号Ｃが有効値の場合は、スロット情報Ｃをロックし、スロット情報Ｃの前スロット番号にスロット番号Ｂを設定し、スロット情報Ｃをロックを解除する（ステップ２０５０〜２０６０）。
（６）クリーンスロット管理情報７００およびスロットＡのロックを解除する。スロットＡをクリーンスロット追加処理にてクリーンスロット管理情報７００に追加し、処理を終了する（ステップ２０６５〜２０７５）。
【００４９】
次に、前述で説明した本発明の実施形態の拡張例を説明する。この拡張例は、１つのデータを複数の記憶システムノード２１０内部のセグメントに保持できるものとする。これにより、異なる記憶システムノード２１０と接続している２つ以上のホストコンピュータ１８０の同一論理ボリューム２３０へのアクセスに関する記憶システムノード２１０間のデータ転送頻度の削減が可能となる。さらに、ライト命令の場合、記憶システムノード２１０のセグメント間のコピーを行うことで、記憶システムノード２１０間のデータ転送頻度を削減できる。
【００５０】
拡張例のクラスタ構成記憶システム２００は、基本的に前述した実施例と同様に、物理位置情報３００、セグメント情報４００、フリーセグメント管理情報５００、クリーンスロット管理情報７００、アクセス情報８００を有するが、スロット情報２１００は図２１に示すように拡張し、アクセス情報８００の属性値を追加する。拡張例のクラスタ構成記憶システム２００の内部構造は前述した実施例と同様な内部構造を有する。
【００５１】
拡張例でのスロット情報２１００は、基本的にはスロット情報６００と同様だが、スロット情報６００と差異は、記憶システムノード数に比例したセグメント番号数を保持することである。スロット情報２１００のセグメント番号数は、スロットサイズをセグメントサイズで割った商とクラスタ構成記憶システム２００内の記憶システムノード数の積である。図２１に示すスロット情報２１００は、クラスタ構成記憶システム２００内の記憶システムノード数が２、スロットのサイズが４ＫＢ、セグメントのサイズが２ＫＢであり、４つのセグメント番号を保持する。以下の説明では、記憶システムノードｍのセグメント位置ｎのセグメント番号を”セグメント番号ｍ−ｎ”と記載する。セグメント番号ｍ−ｎが有効なセグメント番号を保持する場合は、論理アドレス：（スロット番号×スロットサイズ＋セグメントサイズ×ｎ）から論理アドレス：（スロット番号×スロットサイズ＋セグメントサイズ×（ｎ＋１）−１）のデータに対し、セグメントが割り当てられていることを示し、さらに、そのセグメントが記憶システムノードｍ内部のキャッシュメモリにあることも示す。上記論理アドレスにセグメントを割り当てていない場合は、セグメント番号で使用していない無効値を設定する。図２１及び以下の説明では、当該論理アドレスにセグメントを割り当てていないことを示すため、無効値に”２５５”を使用する。
【００５２】
拡張例でのアクセス情報８００は属性に多重化許可、条件付き多重化許可を追加する。属性の多重化許可は、当該ホストコンピュータ１８０からの当該論理ボリューム２３０へのアクセスのために、１つのデータを複数の記憶システムノード２１０内部のセグメントに保持することを許可すること示す。例えば、リード命令を受信した記憶システムノード２１０以外の記憶システムノード２１０内部のセグメントに当該データが存在する場合にも、リード命令を受信した記憶システムノード２１０にセグメントを確保することを示す。
【００５３】
属性の条件付き多重化許可は、条件が成立する場合は当該ホストコンピュータ１８０からの当該論理ボリューム２３０へのアクセスのために、１つのデータを複数の記憶システムノード２１０内部のセグメントに保持することを許可すること示す。指定条件は、例えば、単位時間内の当該ホストコンピュータ１８０からの当該論理ボリューム２３０へのリード回数、全アクセスに対するリード比率、キャッシュヒット率等で、１分間のリード回数が１００回以上、全アクセスに対するリード比率が９０％以上、キャッシュヒット率が７０％以上という形式で指定する。
【００５４】
クラスタ構成記憶システム２００がホストコンピュータ１８０からリード命令を受信した場合の動作は、図１０、図１１に示したフローチャートと基本的に同じだが、セグメント確定処理のみ異なる。以下、図２２は拡張例のクラスタ構成記憶システム２００がホストコンピュータ１８０からリード命令を受信した際の、クラスタ構成記憶システム２００の動作を説明する図であり、図２３はリード命令の場合のセグメント確定処理を説明するフローチャートであり、次に、これについて説明する。
【００５５】
ホストコンピュータ１８０からリード命令を受信したホストアダプタ１１０は、データ送信処理９１０によってセグメント内にリード対象のデータが存在するか調べる。ここで、リード命令を受信した記憶システムノード２１０−２と異なる記憶システムノード２１０−３内部のセグメント３に当該データが存在し、かつキャッシュヒットが期待できる場合は、記憶システムノード２１０−２内部のセグメント２を確保し、記憶システムノード２１０−３内部のセグメント３から記憶システムノード２１０−２内部のセグメント２にデータをコピーする。キャッシュヒットが期待できるかの判断は、アクセス情報８００の属性等を用いて行う。その後、ホストアダプタ１１０は、記憶システムノード２１０−２内部のセグメント２からホストコンピュータ１８０にデータを転送する。また、記憶システムノード２１０−３内部のセグメント３から記憶システムノード２１０−２内部のセグメント２へのデータのコピーと平行して、ホストコンピュータ１８０にデータを転送してもよい。
【００５６】
図２３に示すリード命令の場合のセグメント確定処理について説明する。セグメント確定処理の入力は、スロットＮ、セグメント位置Ｎ、ブロック位置Ｎである。以下の説明で、リード命令を受信した記憶システムノード２１０を記憶システムノードＡ、アクセス対象のデータを保持する記憶装置１５０を含む記憶システムノード２１０を記憶システムノードＢ、上記以外の全記憶システムノード２１０を記憶システムノードＣとする。さらに、記憶システムノードＡを除くクラスタ構成記憶システム内の全記憶システムノード２１０を記憶システムノードａ、記憶システムノードＢを除くクラスタ構成記憶システム内の全記憶システムノード２１０を記憶システムノードｂとする。
（１）スロット情報２１００のセグメント番号Ａ−Ｎを調べ、有効なセグメント番号であり、かつ当該セグメント情報４００のブロック位置Ｎのブロック情報が有効であればキャッシュヒットとして、処理を終了する（ステップ２３００〜２３１０）。
（２）ステップ２３００の調べで、スロット情報２１００のセグメント番号Ａ−Ｎが無効値の場合は、スロット情報２１００のセグメント番号ａ−Ｎの全セグメント番号を調べ、少なくとも１つのセグメントが有効値を持つ場合は、当該セグメント情報４００のブロック位置Ｎのブロック情報が有効であるか調べ、ブロック情報が有効なセグメントが存在しない場合は、セグメントは確保されているが、データは無効なため、キャッシュミスとして処理を終了する（ステップ２３１５〜２３２５）。
（３）ステップ２３２０の調べで、ブロック位置Ｎのブロック情報が有効であるセグメントが存在する場合は、リード命令を発行したホストコンピュータ１８０とアクセス対象のデータを含む論理ボリューム２３０に対応するアクセス情報８００を参照し、属性が多重化許可、条件付き多重化許可で条件を満足する場合は、フリーセグメント取得処理もしくはクリーンスロット破棄処理を行い、記憶システムノードＡにセグメントＡを確保し、当該データをセグメントＡにコピーする。ただし、記憶システムノードＡにセグメントＡを確保できない場合はコピーは行わない。記憶システムノードＡのセグメントＡにデータをコピーするのは、アクセス情報８００の属性から、キャッシュヒットが期待でき、同一論理アドレスへの再アクセスの際に、記憶システムノード２１０間のデータ転送が不要となる可能性が高いためである。コピー終了後あるいはステップ２３３０の条件を満足しない場合は、有効なセグメントが存在し、データが有効であるため、キャッシュヒットとして処理を終了する（ステップ２３３０〜２３４０）。
（４）ステップ２３１５の調べで、スロット情報２１００のセグメント番号ａ−Ｎの全セグメント番号が無効値を持つ場合は、セグメントが割り当てられていないため、セグメントを確保する。リード命令を発行したホストコンピュータ１８０とアクセス対象のデータを含む論理ボリューム２３０に対応するアクセス情報８００を参照し、属性が多重化許可、条件付き多重化許可で条件を満足する場合、フロント、条件付きフロントで条件を満足する場合は、記憶システムノードＡ、Ｂ、Ｃの順にセグメント確保対象とし、セグメントを確保する。優先して記憶システムノードＡのセグメントの取得を試みるのは、アクセス情報８００の属性から、キャッシュヒットが期待でき、同一論理アドレスへの再アクセスの際に、記憶システムノード２１０間のデータ転送が不要となる可能性が高いためである。次に優先して記憶システムノードＢのセグメントの取得を試みるのは、記憶システムノード２１０間のデータ転送が１回であり、記憶システムノードＣの場合の２回と比べ少ないからである。クリーンスロット管理情報７００に管理されているスロットはキャッシュヒットする可能性があるため、フリーセグメント管理情報５００に管理されているセグメントを優先するためにセグメント取得処理、クリーンスロット破棄処理の順で処理を行う（ステップ２３５５）。
（５）ステップ２３５０の調べて、条件を満足しない場合は、記憶システムノードＢ、Ａ、Ｃの順にセグメント確保対象とする。優先して記憶システムノードＢのセグメントの取得を試みるのは、記憶システムノード２１０間のデータ転送が１回であり、もし、その後他のホストコンピュータをも含む同一論理アドレスへのライト命令を処理する場合、セグメントの再利用が可能なためである。次に優先して記憶システムノードＡのセグメントの取得を試みるのは、記憶システムノード２１０間のデータ転送が１回であるためである。クリーンスロット管理情報７００に管理されているスロットはキャッシュヒットする可能性があるため、フリーセグメント管理情報５００に管理されているセグメントを優先して確保するために、セグメント取得処理、クリーンスロット破棄処理の順で処理を行う（ステップ２３６０）。
（６）ステップ２３５５あるいはステップ２３６０のフリーセグメント取得処理あるいはクリーンスロット破棄処理にてセグメントを確保できた場合は、当該セグメントをスロットＡのセグメント番号ｍ−Ａに登録し、キャッシュミスとして処理を終了する。ｍは確保したセグメントの記憶システムノード番号である。セグメントを確保できない場合は、セグメント確保不可として処理を終了する（ステップ２３６５、２３７０）。
【００５７】
クラスタ構成記憶システム２００がホストコンピュータ１８０からライト命令を受信した際の動作は、図１３、図１４に示したフローチャートと基本的に同じだが、セグメント確定処理のみ異なる。以下、図２４は拡張例のクラスタ構成記憶システム２００がホストコンピュータ１８０からライト命令を受信した際の、クラスタ構成記憶システム２００の動作を説明する図であり、図２５はライト命令の場合のセグメント確定処理を説明するフローチャートであり、次に、これについて説明する。
【００５８】
ホストコンピュータ１８０からライト命令を受信したホストアダプタ１１０は、スロット情報２１００を用い、後述するセグメント確定処理にてデータを受信するセグメントを確保する。ここで、当該データのためのセグメントが存在する場合は、当該セグメントが保持するデータは更新前のデータであるため、データを無効化あるいはセグメントを破棄する必要がある。ホストアダプタ１１０は、確保したセグメントにホストコンピュータ１８０からのデータを保存し、ディスクアダプタ１２０にライト命令１２３０を発行する。ディスクアダプタ１２０はライト命令１２３０を受け、データライト処理１２２０によって正、副２個所の記憶装置１５０にデータを書き込む。ここで、図２４に示すように、記憶システムノード２１０−２のディスクアダプタ１２０が、ライト命令を受信した記憶システムノード２１０−３内部のセグメント３にデータを保存しているデータを記憶装置１５０にデータを書き込む場合、まず、記憶システムノード２１０−２内部のセグメント２を確保し、記憶システムノード２１０−３内部のセグメント３から記憶システムノード２１０−２内部のセグメント２にデータをコピーした後、正、副２個所の記憶装置１５０にデータを書き込んでもよい。これにより、記憶システムノード２１０間のデータ転送を減らすことができる。
【００５９】
図２５に示すライト命令の場合のセグメント確定処理について説明する。セグメント確定処理の入力は、スロットＮ、セグメント位置Ｎ、ブロック位置Ｎである。以下の説明で、ライト命令を受信した記憶システムノード２１０を記憶システムノードＡ、アクセス対象のデータを保持する記憶装置１５０を含む記憶システムノード２１０を記憶システムノードＢ、上記以外の記憶システムノード２１０を記憶システムノードＣとする。さらに、記憶システムノードＡを除くクラスタ構成記憶システム２００内の全記憶システムノード２１０を記憶システムノードａ、記憶システムノードＢを除くクラスタ構成記憶システム内の全記憶システムノード２１０を記憶システムノードｂとする。
（１）ライト命令を発行したホストコンピュータ１８０とアクセス対象のデータを含む論理ボリューム２３０に対応するアクセス情報８００を参照し、属性が多重化許可、フロント、条件付き多重化許可で条件を満足する場合もしくは条件付きフロントで条件を満足する場合は、記憶システムノードＡ、Ｂ、Ｃの順にセグメント確保対象とし、セグメントを確保する。優先して記憶システムノードＡのセグメントの取得を試みるのは、アクセス情報８００の属性から、キャッシュヒットが期待でき、同一論理アドレスへのリード命令の際に、記憶システムノード２１０間のデータ転送が不要となる可能性が高いためである。次に優先して記憶システムノードＢのセグメントの取得を試みるのは、記憶システムノード２１０間のデータ転送が１回であり、記憶システムノードＣの３回と比べ少ないからである。セグメントを取得する対象は、クリーンスロット管理情報７００に管理されているスロットはキャッシュヒットする可能性がありため、フリーセグメント管理情報５００に管理されているセグメントを優先し、セグメント取得処理、クリーンスロット破棄処理の順で処理を行う。ただし、記憶システムノードＡのフリーセグメント管理情報Ａを対象としたセグメント取得処理を行う前に、スロット情報Ａを調べ、セグメント番号Ａ−Ｎが有効値を持つ場合は、セグメントが割り当てられているため、セグメント確保成功とする。記憶システムノードＢ、Ｃでも同様に行う（ステップ２５００、２５１０）。
（２）ステップ２５００の調べで、条件を満足しない場合は、記憶システムノードＢ、Ａ、Ｃの順にセグメント確保対象とし、セグメントを確保する。優先して記憶システムノードＢのセグメントの取得を試みるのは、記憶装置１５０への書き込みの際に、記憶システムノード２１０間のデータ転送が１回となるためである。次に優先して記憶システムノードＡのセグメントの取得を試みるのは、同一論理アドレスへの再ライト命令の際に、セグメントの再利用できる可能性があるためである。さらに記憶システムノード２１０間のデータ転送が２回であり、記憶システムノードＣの場合の３回と比べ少ないからである。セグメントを取得する対象は、クリーンスロット管理情報７００に管理されているスロットはキャッシュヒットする可能性があるため、フリーセグメント管理情報５００に管理されているセグメントを優先して確保するために、セグメント取得処理、クリーンスロット破棄処理を行う。ただし、記憶システムノードＢのフリーセグメント管理情報Ｂを対象としたセグメント取得処理を行う前に、スロット情報２１００を調べ、セグメント番号Ｂ−Ｎが有効値を持つ場合は、セグメントが割り当てられているため、セグメント確保成功とする。記憶システムノードＡ、Ｃでも同様に行う（ステップ２５２０）。
（３）ステップ２５１０、２５２０の処理結果が、セグメント確保成功の場合は、当該セグメントをスロットＡのセグメント番号ｍ−Ａに登録し、確保したセグメント以外の当該セグメントを無効化するために、当該セグメントを対象にフリーセグメント追加処理を行い、キャッシュミスとして処理を終了する。ｍはセグメントを確保した記憶システムノード番号である（ステップ２５３０、２５５０）。
（４）ステップ２５１０、２５２０の処理結果が、セグメント確保不可の場合は、セグメント確保不可として処理を終了する（ステップ２５４０）。
【００６０】
【発明の効果】
以上説明したように本発明によれば、クラスタ構成システムを構成する記憶システムノード間のデータ転送の頻度を削減でき、クラスタ構成記憶システムのアクセス性能の向上を図ることができる。
【図面の簡単な説明】
【図１】本発明の一実施形態によるクラスタ構成記憶システムの構成を示すブロック図である。
【図２】記憶システムノードの構成を示すブロック図である。
【図３】物理位置情報の例を示す図である。
【図４】セグメント情報の例を説明する図である。
【図５】フリーセグメント管理情報の例を説明する図である。
【図６】第一実施形態でのスロット情報の例を説明する図である。
【図７】クリーンスロット管理情報の例を説明する図である。
【図８】アクセス情報の例を説明する図である。
【図９】リード命令を受信した場合のクラスタ構成記憶システムの動作を説明する図である。
【図１０】リード命令を受信した場合のホストアダプタの処理動作を説明するフローチャートである。
【図１１】リード命令を受信した場合のディスクアダプタの処理動作を説明するフローチャートである。
【図１２】ライト命令を受信した場合のクラスタ構成記憶システムの動作を説明する図である。
【図１３】ライト命令を受信した場合のホストアダプタの処理動作を説明するフローチャートである。
【図１４】ライト命令を受信した場合のディスクアダプタの処理動作を説明するフローチャートである。
【図１５】第一実施形態でのセグメント確定処理での処理動作を説明するフローチャートである。
【図１６】フリーセグメント追加処理での処理動作を説明するフローチャートである。
【図１７】フリーセグメント取得処理での処理動作を説明するフローチャートである。
【図１８】クリーンスロット破棄処理での処理動作を説明するフローチャートである。
【図１９】クリーンスロット追加処理での処理動作を説明するフローチャートである。
【図２０】クリーンスロット位置変更処理での処理動作を説明するフローチャートである。
【図２１】第二実施形態でのスロット情報の例を説明する図である。
【図２２】第二実施形態でのリード命令を受信した場合のクラスタ構成記憶システムの動作を説明する図である。
【図２３】第二実施形態でのリード命令を受信した場合のセグメント確定処理での処理動作を説明するフローチャートである。
【図２４】第二実施形態でのライト命令を受信した場合のクラスタ構成記憶システムの動作を説明する図である。
【図２５】第二実施形態でのライト命令を受信した場合のセグメント確定処理での処理動作を説明するフローチャートである。
【図２６】従来技術による記憶システムの構成例を示すブロック図である。
【符号の説明】
１００…記憶システム、１１０…ホストアダプタ、１２０…ディスクアダプタ、１３０…キャッシュメモリ、１４０…共有メモリ、１５０…記憶装置、１６０…コモンパス、２００…クラスタ構成記憶システム、２１０…記憶システムノード、２２０…記憶システムノード間の接続線、２３０…論理ボリューム、２４０…ポート、３００…物理位置情報、４００…セグメント情報、５００…フリーセグメント管理情報、６００…スロット情報、７００…クリーンスロット管理情報、８００…アクセス情報。
【図１】
0003932860.tif 000002
【図２】
0003932860.tif 000003
【図３】
0003932860.tif 000004
【図４】
0003932860.tif 000005
【図５】
0003932860.tif 000006
【図６】
0003932860.tif 000007
【図７】
0003932860.tif 000008
【図８】
0003932860.tif 000009
【図９】
0003932860.tif 000010
【図１０】
0003932860.tif 000011
【図１１】
0003932860.tif 000012
【図１２】
0003932860.tif 000013
【図１３】
0003932860.tif 000014
【図１４】
0003932860.tif 000015
【図１５】
0003932860.tif 000016
【図１６】
0003932860.tif 000017
【図１７】
0003932860.tif 000018
【図１８】
0003932860.tif 000019
【図１９】
0003932860.tif 000020
【図２０】
0003932860.tif 000021
【図２１】
0003932860.tif 000022
【図２２】
0003932860.tif 000023
【図２３】
0003932860.tif 000024
【図２４】
0003932860.tif 000025
【図２５】
0003932860.tif 000026
【図２６】
0003932860.tif 000027