JP3932860B2 - クラスタ構成記憶システム - Google Patents
クラスタ構成記憶システム Download PDFInfo
- Publication number
- JP3932860B2 JP3932860B2 JP2001327108A JP2001327108A JP3932860B2 JP 3932860 B2 JP3932860 B2 JP 3932860B2 JP 2001327108 A JP2001327108 A JP 2001327108A JP 2001327108 A JP2001327108 A JP 2001327108A JP 3932860 B2 JP3932860 B2 JP 3932860B2
- Authority
- JP
- Japan
- Prior art keywords
- segment
- storage system
- slot
- information
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の属する技術分野】
本発明は記憶システムに関し、特に複数の記憶システムを1つの記憶システムとして運用可能とするクラスタ構成記憶システムに関する。
【0002】
【従来の技術】
記憶システムに関する従来技術として、例えば特開平11−167521号公報等に記載された技術が知られている。この従来技術は、記憶システムを使用する上位装置(ホストコンピュータ)に対するインタフェース(ホストアダプタ、CHA)、記憶システム内の磁気ディスク装置等の記憶装置に対するインタフェース(ディスクアダプタ、DKA)、キャッシュメモリ(CACHE)、共有メモリ(SM)の相互間をコモンパス方式で接続して構成したものである。
【0003】
図26は従来技術による記憶システムの構成例を示すブロック図であり、以下、図26を参照して従来技術について説明する。図26において、100は記憶システム、110はホストアダプタ(CHA)、120はディスクアダプタ、130はキャッシュメモリ(CACHE)、140は共有メモリ(SM)、150は記憶装置(HDD)、160はコモンパス、170は接続線、180はホストコンピュータである。
【0004】
従来技術による記憶システム100は、図26に示すように、ホストアダプタ110、ディスクアダプタ120、キャッシュメモリ130、共有メモリ140、記憶装置150、コモンパス160、接続線170により構成される。ホストアダプタ110、ディスクアダプタ120、キャッシュメモリ130、共有メモリ140はコモンパス160により相互間が接続されている。コモンパス160はコモンパス160の障害時のために2重化されている。ディスクアダプタ120と記憶装置150との間は、1つのディスクアダプタ120あるいは1つの接続線170の障害時にも記憶装置150を使用できるように、1つの記憶装置150に2つのディスクアダプタ120が異なる接続線170で接続されている。
【0005】
ホストアダプタ110は、ホストコンピュータ180とキャッシュメモリ130との間のデータ転送を制御する。ディスクアダプタ120は、キャッシュメモリ130と記憶装置150との間のデータ転送を制御する。キャッシュメモリ130は、ホストコンピュータ180から受信したデータあるいは、記憶装置150から読み取ったデータを一時的に蓄えるメモリである。共有メモリ140は、全てのホストアダプタ110とディスクアダプタ120とが共有するメモリである。また、図示していないが、記憶システム100の設定、監視、保守等を行なうために保守端末(SVP)が全てのホストアダプタ110とディスクアダプタ120とに専用線を用いて接続されている。
【0006】
前記したような構成をもつ記憶システム100のシステム構成を拡張する場合、ホストアダプタ110、ディスクアダプタ120、キャッシュメモリ130、共有メモリ140、記憶装置150等の構成要素が新たに追加される。例えば、ホストコンピュータ180との接続数を増やす場合、ホストアダプタ110が新たにコモンパス160に接続される。また、記憶システム100の記憶容量を増やす場合、記憶装置150を追加する、あるいは、ディスクアダプタ120を新たにコモンパス160に接続して記憶装置150を追加する。
【0007】
【発明が解決しようとする課題】
前記した従来技術では、記憶システムのシステム拡張にあたり、ホストアダプタ、ディスクアダプタ、キャッシュメモリ、共有メモリ及び記憶装置等の記憶システムの構成要素を増設することにより対応しているため、記憶システムの拡張性が記憶システムの構成要素の最大搭載数に制限されている。この結果、前述の従来技術は、大規模な記憶システムの要求に応じるために、記憶システムの最大搭載数を大きくすると、小規模な記憶システムの要求時にコストおよび設置面積が大きくなってしまう問題点を有している。
【0008】
前述したような問題点を解決する方法として、クラスタ構成記憶システムが考えられる。クラスタ構成記憶システムは、複数の前記したような記憶システムを接続した構成で、ホストコンピュータからは1つの記憶システムとして運用可能とした記憶システムである。以下、クラスタ構成記憶システムを構成する記憶システムを記憶システムノードと呼ぶ。クラスタ構成記憶システムは、小規模な記憶システムの要求時には、少数の記憶システムノードでクラスタ構成記憶システムを構成し、記憶システムの規模を拡大する場合、クラスタ構成記憶システムに記憶システムノードを増設していくことにより対応することができる。このように、クラスタ構成記憶システムは、小規模なシステムから大規模なシステムまで対応することができ、また、ホストコンピュータからは1つの記憶システムとして運用可能であるため、管理が容易になるという利点を有している。
【0009】
しかし、クラスタ構成記憶システムはホストコンピュータからのアクセス命令を受信する記憶システムノードとアクセス対象のデータを保持する記憶システムノードが異なる場合、記憶システムノード間のデータ転送が必要となり、アクセス性能が低下するという問題が生じる。
【0010】
本発明の目的は、前述したようなクラスタ構成記憶システムの問題点を解決し、アクセス性能を向上させることができるクラスタ構成記憶システムを提供することにある。
【0011】
【課題を解決するための手段】
本発明によれば前記目的は、複数の記憶システムを1つの記憶システムとして運用可能とするクラスタ構成記憶システムにおいて、アクセス情報を採取する手段と、採取したアクセス情報をユーザに提示する手段と、ユーザからホストコンピュータとデータの管理単位である論理ボリューム毎の属性を受け付ける手段と、前記ユーザの指示に基づいてキャッシュメモリを使用する手段を有することにより達成される。
【0012】
前述において、アクセス情報は、例えば、単位時間内のリード回数、ライト回数、キャッシュヒット率、リードデータ量、ライトデータ量、キャッシュヒットデータ量等であり、アクセス命令を発行したホストコンピュータとデータの管理単位である論理ボリュームとの組み合わせ単位に採取する。このようにアクセス情報を採取することにより、どのホストコンピュータからどの論理ボリュームへのアクセスが多いか、さらにリードとライトの比率、キャッシュヒット率の高さが判る。前述において、ホストコンピュータと論理ボリューム毎の属性は、クラスタ構成記憶システムに前記ホストコンピュータの前記論理ボリュームへのアクセスの場合にクラスタ構成記憶システム内部のキャッシュメモリの使用方針を指示するものである。ユーザは保守端末を利用してアクセス情報を参照することにより、リード回数が多くキャッシュヒット率の高い論理ボリュームを把握でき、そのようなホストコンピュータと論理ボリュームの組み合わせをクラスタ構成システムに通知でき、クラスタ構成システムは前記ホストコンピュータからの前記論理ボリュームへのアクセスの場合に、アクセス命令を受信する記憶システムノード内のキャッシュメモリにデータを保持することで、キャッシュヒット時の記憶システムノード間のデータ転送を不要とすることができ、これによりクラスタ構成記憶システムのアクセス性能の向上を図ることができる。
【0013】
また、本発明では、1つのデータを複数の記憶システムノード内部のキャッシュメモリに多重に保持することができ、これによりさらに記憶システムノード間のデータ転送を削減でき、クラスタ構成記憶システムのアクセス性能の向上を図ることができる。
【0014】
また、本発明では、クラスタ構成記憶システムあるいは、保守端末に前記アクセス情報に基づいて、ホストコンピュータとデータの管理単位である論理ボリューム毎の属性を変更する機能を持たせることができ、これによりユーザの管理にかかる負荷を減らすことができる。
【0015】
【発明の実施の形態】
以下、本発明による記憶システムの実施形態を図面により詳細に説明する。以下に説明する本発明の実施形態は、複数の記憶システムを有するクラスタ構成記憶システムがホストコンピュータとデータの管理単位である論理ボリュームの組単位にアクセス情報を採取し、ユーザから指示されたホストコンピュータと論理ボリュームの組み合わせに対応した属性に基づいて、最適な記憶システムノード内部のキャッシュメモリを選択するものである。なお、以下の説明において、クラスタ構成記憶システムを構成する記憶システムを記憶システムノードとよぶこととする。また、保守端末は、クラスタ構成記憶システム内に備えられていても、外部に備えられていてもよく、いずれの場合も、各記憶システムノードに接続可能であればよい。
【0016】
図1は本発明の一実施形態によるクラスタ構成記憶システムの構成を示すブロック図、図2は記憶システムノードの構成を示すブロック図、図3は物理位置情報の例を説明する図、図4はセグメント情報の例を説明する図、図5はフリーセグメント管理情報の例を説明する図、図6は第一実施形態でのスロット情報の例を説明する図、図7はクリーンスロット管理情報の例を説明する図、図8はアクセス情報の例を説明する図である。図1から図8において、200はクラスタ構成記憶システム、210−1〜210−nは記憶システムノード、220は記憶システムノード間の接続線、230は論理ボリューム、300は物理位置情報、310はデータ転送コントローラ、400はセグメント情報、500はフリーセグメント管理情報、600はスロット情報、700はクリーンスロット管理情報、800はアクセス情報であり、他の符号は図26の場合と同一である。
【0017】
本発明の一実施形態によるクラスタ構成記憶システム200は、複数の記憶システムノード210−1〜210−n(以下の説明では、これらの区別をする必要がない場合、あるいは、全体を示す場合、単に210と示す)と図示しない保守端末とから構成される。保守端末は、専用線を用いて全ての記憶システムノード210と接続されている。クラスタ構成記憶システム200は、物理位置情報300、セグメント情報400、フリーセグメント管理情報500、スロット情報600、クリーンスロット管理情報700、アクセス情報800を有する。アクセス情報800は保守端末から参照することができる。クラスタ構成記憶システム200の記憶領域は、分割して管理されており、分割した記憶領域を論理ボリューム230と呼ぶ。各論理ボリューム230の容量およびクラスタ構成記憶システム200内の物理的な格納位置(物理アドレス)は、保守端末を用いて指定できる。各論理ボリューム230の物理アドレスは後述する物理位置情報300に保存されている。論理ボリューム230は記憶システムノード210内であれば、複数の記憶装置150に分割して保持することができる。データは記憶装置150の故障時のデータ保護のために、クラスタ構成記憶システム200内で2重に保持する。2重に保持したデータの一方を正データ、他方を副データと呼ぶ。ホストコンピュータ180がクラスタ構成記憶システムのデータを指定するために論理アドレスを使用する。論理アドレスは例えば、論理ボリューム230と論理ボリューム230内の位置とからなる。クラスタ構成記憶システム200内では、連続した論理アドレスを一定量(スロットサイズとよぶ)に分割して管理しており、分割した論理アドレスをスロットと呼ぶ。例えば、スロット番号は、論理アドレスをスロットサイズで割った商とする。記憶システムノード210の内部構造を図2に示す。記憶システムノード210は、基本的に図26により説明したものと同様な内部構造を有し、記憶システムノード210と記憶システム100との差異は、記憶システムノード210が他の記憶システムノード210との通信のためのデータ転送制御コントローラ310を有している点である。そして、記憶システムノード210は、1つ以上のホストアダプタ110、1つ以上のディスクアダプタ120、1つ以上のキャッシュメモリ130、1つ以上の共有メモリ140、1つ以上の記憶装置150、2つ以上のコモンパス160、1つ以上の接続線170、1つ以上のデータ転送制御コントローラ310を備えて構成される。ホストアダプタ110、ディスクアダプタ120、キャッシュメモリ130、共有メモリ140、データ転送制御コントローラ310はコモンパス160により相互間が接続されている。コモンパス160は、コモンパス160の障害時のために2重化されてある。ディスクアダプタ120と記憶装置150とは接続線170によって接続されている。また、図示していないが、クラスタ構成記憶システム200の設定、監視、保守等を行なうために保守端末が全てのホストアダプタ110とディスクアダプタ120とに専用線を用いて接続されている。
【0018】
ホストアダプタ110は、ホストコンピュータ180とキャッシュメモリ130間のデータ転送を制御する。ホストアダプタ110は、ホストコンピュータ180との接続のための複数のポート240を持つ。ディスクアダプタ120は、キャッシュメモリ130と記憶装置150との間のデータ転送を制御する。キャッシュメモリ130は、ホストコンピュータ180から受信したデータあるいは記憶装置150から読み出したデータを一時的に保持するメモリである。キャッシュメモリ130は、一定量に分割して管理されており、分割したキャッシュメモリをセグメントと呼ぶ。各セグメントの状態は、後述するセグメント情報400で管理する。共有メモリ140は、クラスタ構成記憶システム200内の全てのホストアダプタ110とディスクアダプタ120とが共有するメモリである。ホストアダプタ110及びディスクアダプタ120は、データ転送制御コントローラ310及び接続線220を用いて、他の記憶システムノード210内のホストアダプタ110、ディスクアダプタ120との通信及び他の記憶システムノード210内のキャッシュメモリ130、共有メモリ140の使用が可能である。
【0019】
物理位置情報300は、論理ボリューム230の容量及び2組のクラスタ構成記憶システム200内の物理的な格納位置(物理アドレス)を保持する。データはクラスタ構成記憶システム200内で2重に保持されるため、物理アドレスは2組あり、一方を正物理アドレス、他方を副物理アドレスと呼ぶ。物理位置情報300は、共有メモリ140に保存される。図3に示す物理位置情報例において、物理アドレスは、記憶システムノード番号と記憶システムノード内位置とからになる。図3に示す物理アドレス例では、論理ボリューム2は、記憶システムノード1内の5000の位置から9999の位置までと記憶システムノード1内の15000の位置から19999の位置までであることを示す。論理アドレス:(論理ボリューム2、論理ボリューム230内位置40)に対するリード命令は、記憶システムノード1の記憶システムノード内位置5040あるいは記憶システムノード1の記憶システムノード内位置15040からのデータ読み出し命令となる。
【0020】
フリーセグメント管理情報500、スロット情報600、クリーンスロット管理情報700は、ホストアダプタ110あるいはディスクアダプタ120が同時に更新する可能性があり、データの整合性を保つために、当該情報を参照及びおよび変更する場合、当該情報をロックし、他のホストアダプタ110あるいはディスクアダプタ120が変更できない状態にした後、当該情報の参照及び変更を行い、変更後、当該情報のロックを解除する。例えば、情報毎にロック情報を保持し、情報のロックおよびロックの解除を以下のように行う。ロック情報は、1ビットがホストアダプタ110あるいはディスクアダプタ120を表し、ビット状態1がホストアダプタ110あるいはディスクアダプタ120が当該情報をロックしていることを示す。当該情報のロックの方法は、アトミック命令で当該情報のロック情報内の自ホストアダプタ110あるいは自ディスクアダプタ120を示すビットを1に変更する。ロックの成否は、アトミック命令の戻り値である変更前のロック情報を参照することで判る。変更前のロック情報内の自ホストアダプタ110あるいは自ディスクアダプタ120を示すビット以外のビットが1の場合は、他のホストアダプタ110あるいは他のディスクアダプタ120が既に当該情報をロックしているため、ロックは失敗であり、アトミック命令でロック情報内の自ホストアダプタ110あるいは自ディスクアダプタ120を示すビットを0に戻す。そして、しばらく時間が経過後、再度ロック取得を試みる。変更前のロック情報が内の自ホストアダプタ110あるいは自ディスクアダプタ120を示すビットのみが1の場合は、ロックは成功であり、当該情報の修正を行う。当該情報のロックの解除方法は、アトミック命令で当該情報のロック情報内の自ホストアダプタ110あるいは自ディスクアダプタ120を示すビットを0に戻す。
【0021】
セグメント情報400は、セグメントのブロック情報と次セグメント番号を保持する。セグメント情報400は、共有メモリ140に保存される。ブロック情報は、ホストコンピュータ180からのアクセスの単位(以下、ブロックよぶ)で、セグメントの当該位置に保持しているデータが有効か無効を示す。図4に示すセグメント情報例では、セグメントサイズが2048バイト、ブロックサイズが512バイトの場合であり、セグメント情報400は4つのブロック情報をもち、セグメント1のブロック位置0とブロック位置2が有効、すなわち、セグメントの先頭から511バイトと1024バイトから1535バイトまでに有効なデータがあることを示す。次セグメント番号は、後述するフリーセグメント管理情報500で未使用のセグメントを管理するために、セグメント番号を保持する。ただし、次セグメント番号への設定が不要な場合は、次セグメント番号が無意味であることを示すために、セグメント番号で使用していない無効値を設定する。図4に示すセグメント情報例および以下の説明では、次セグメント番号が無意味であることを示すために、無効値に”255”を使用する。
【0022】
フリーセグメント管理情報500は、未使用のセグメントを管理するために、ロック情報、未使用セグメント個数、最古セグメント番号、最新セグメント番号を保持する。フリーセグメント管理情報500は共有メモリ140に保存される。未使用セグメント量は、当該フリーセグメント管理情報500が管理しているセグメント数を保持する。最古セグメント番号は、当該フリーセグメント管理情報500が管理しているセグメントの中で、未使用状態になってから最も時間が経過したセグメント番号を保持する。最新セグメント番号は、当該フリーセグメント管理情報500が管理しているセグメントの中で、未使用状態になってから最も時間が経過していないセグメント番号を保持する。ただし、当該フリーセグメント管理情報500が管理しているセグメントが存在しない場合は、有効な数値が設定されていないことを示すため、最古セグメント番号および最新セグメント番号にセグメント番号で使用していない無効値を設定する。以下の例および説明では、最古セグメント番号および最新セグメント番号に有効な数値が設定されていないことを示すため、無効値に”255”を使用する。図5に示すフリーセグメント管理情報例では、未使用のセグメントが3つ存在し、最古セグメント番号からセグメント2が未使用であることがわかる。さらに、図4に示すセグメント情報例の場合には、セグメント情報2の次セグメント番号4から、セグメント4が未使用、セグメント情報4の次セグメント番号3から、セグメント3が未使用であることがわかる。
【0023】
フリーセグメント管理情報500はクラスタ構成記憶システム200に少なくとも1つ必要であるが、本実施例では、記憶システムノード210を指定したセグメントの取得を容易にするため、記憶システムノード210毎に1つずつ設ける。以下、記憶システムノードAのフリーセグメント管理情報500をフリーセグメント管理情報Aと記載する。
【0024】
スロット情報600はスロットのロック状態、前スロット番号、次スロット番号、1つ以上のセグメント番号を保持する。スロット情報600は共有メモリ140に保存される。前スロット番号および次スロット番号は、後述するクリーンスロット管理情報700で有効なデータを保持するスロットを管理するために、スロット番号を保持する。ただし、前スロット番号および次スロット番号への設定が不要な場合は、前スロット番号および次スロット番号が無意味であることを示すために、セグメント番号で使用していない無効値を設定する。図6に示すスロット情報例および以下の説明では、前スロット番号および次スロット番号が無意味であることを示すため、無効値に”255”を使用する。スロット情報600が保持するセグメント番号数はスロットサイズをセグメントサイズで割った商である。例えば、スロットのサイズが8KB、セグメントのサイズが2KBの場合は、スロット情報600は4つのセグメント番号を保持し、論理アドレスの順に、セグメント位置0、セグメント位置1、セグメント位置2、セグメント位置3とする。セグメント位置nのセグメント番号nが有効なセグメント番号を保持する場合は、論理アドレス:(スロット番号×スロットサイズ+セグメントサイズ×n)から論理アドレス:(スロット番号×スロットサイズ+セグメントサイズ×(n+1)−1)のデータに対し、セグメントが割り当てられていることを示す。上記論理アドレスにセグメントを割り当てていない場合は、セグメント番号で使用していない無効値を設定する。図6に示すスロット情報例および以下の説明では、当該論理アドレスにセグメントを割り当てていないことを示すため、無効値に”255”を使用する。
【0025】
クリーンスロット管理情報700はアクセス後のスロットを管理するために、ロック情報、クリーンスロット数、最古使用スロット番号、最新使用スロット番号を保持する。クリーンスロット管理情報700は共有メモリ140に保存される。クリーンスロット数は当該クリーンスロット管理情報700が管理しているスロット数を保持する。最古使用スロット番号は、当該クリーンスロット管理情報700が管理しているスロットの中で、アクセスされてから最も時間が経過したスロット番号を保持する。最新使用スロット番号は、当該クリーンスロット管理情報700が管理しているスロットの中で、アクセスされてから最も時間が経過していないスロット番号を保持する。ただし、当該クリーンスロット管理情報700が管理しているスロットが存在しない場合は、有効な数値が設定されていないことを示すため、最古使用スロット番号および最新使用スロット番号にスロット番号で使用していない無効値を設定する。以下の例および説明では、最古使用スロット番号および最新使用スロット番号に有効な数値が設定されていないことを示すため、無効値に”255”を使用する。例えば、クリーンスロット管理情報例が図7に示す例かつスロット情報600が図6に示す例の場合には、最古使用スロット番号2から、スロット2が、当該クリーンスロット管理情報700が管理しているスロットの中で、アクセスされてから最も時間が経過していることがわかる。スロット情報2の次スロット番号4から、スロット4が、スロット2の次に当該クリーンスロット管理情報700が管理しているスロットの中で、アクセスされてから最も時間が経過していることがわかる。
【0026】
クリーンスロット管理情報700は、クラスタ構成記憶システム200に少なくとも1つ必要であるが、本実施例では、記憶システムノード210を指定したセグメントの取得を容易にするため、記憶システムノード210毎に1つずつ設ける。以下、記憶システムノードAのクリーンスロット管理情報700をクリーンスロット管理情報Aと記載する。このようにクリーンスロット管理情報700を用い、キャッシュメモリに保持しているデータをアクセス順に管理することで、キャッシュヒットの可能性を向上している。
【0027】
アクセス情報800は、論理ボリューム230とホストコンピュータ180毎に、属性、単位時間内に当該ホストコンピュータ180から当該論理ボリューム230に対して行われたリード回数、キャッシュヒット回数、ライト回数等を保持する。また、回数ではなく単位時間内のリードデータ量合計、ライトデータ量合計、キャッシュヒットデータ量合計等を保持してもよい。アクセス情報800は、例えば共有メモリ140に保持する。属性は、後述するセグメント確定処理にて使用するキャッシュメモリの選択に使用し、通常、フロント、条件付きフロントの3つの数値があり、ユーザが保守端末により設定する。属性のフロントは、新たにセグメントを確保する場合、主にアクセス命令を受信した記憶システムノード210にセグメントを確保することを示す。属性の条件付きフロントは、新たにセグメントを確保する場合、指定条件が成立すれば、主にアクセス命令を受信した記憶システムノード210にセグメントを確保することを示す。指定条件は、例えば、単位時間内の当該ホストコンピュータ180からの当該論理ボリューム230へのリード回数、全アクセスに対するリード比率、キャッシュヒット率等であり、1分間のリード回数が100回以上、全アクセスに対するリード比率が80%以上、キャッシュヒット率が50%以上という形式で指定する。属性の通常は新たにセグメントを確保する場合、主にデータを保持する記憶システムノード210のセグメントを確保することを示す。クラスタ構成記憶システム200は、単位時間内のリード回数、単位時間内のキャッシュヒット回数、単位時間内のライト回数を予め指定された間保持している。
【0028】
クラスタ構成記憶システム200内に保持したアクセス情報800は、予め指定された時間毎もしくは保守端末を用いたユーザの指示によって、保守端末に転送され、保守端末に保持される。保守端末に保持したアクセス情報800は、保守端末から参照できる。また、上記単位時間は保守端末を用いて設定できる。
【0029】
また、ユーザが属性を指定するのではなく、クラスタ構成記憶システム200が周期的にアクセス情報800を参照し、例えば全アクセスに対するリード比率が70%以上、キャッシュヒット率が50%以上の場合に、当該論理ボリューム230と当該ホストコンピュータ180に対応する属性をフロントに変更してもよい。
【0030】
図9はクラスタ構成記憶システム200がホストコンピュータ180からリード命令を受信した際の、クラスタ構成記憶システム200の動作を説明する図、図10はホストコンピュータ180からリード命令を受信したホストアダプタ110の動作(データ送信処理910)のフローチャート、図11はリード対象データを保持する記憶装置150を制御するディスクアダプタ120の動作(データリード処理920)のフローチャートであり、以下、これらについて説明する。
【0031】
ホストコンピュータ180からリード命令を受信したホストアダプタ110は、データ送信処理910によってセグメント内にリード対象データが存在するか調べ、存在する場合は当該セグメントからホストコンピュータ180にデータを転送する。存在しない場合はセグメントを確保し、当該データを保持するディスクアダプタ120に当該セグメント内にデータを読み込むようリード命令930を発行する。ここで、図9に示すようにリード命令を受信した記憶システムノード210−2内のセグメント2にデータを保持する場合と対象データを保持する記憶装置150を持つ記憶システムノード210−3内のセグメント3にデータを保持する場合を比較すると、次の同一論理アドレスへのリード時にキャッシュヒットとなれば、前者は記憶システムノード210間のデータ転送が不要となる。従って、リード命令の場合は、リード命令を受信した記憶システムノード210−2内のセグメント2を確保する。ディスクアダプタ120はデータリード処理920によって、リード命令930を受け、記憶装置150から指定データを指定されたセグメントに読み込んだ後、ホストアダプタ110に終了報告をする。ホストアダプタ110はセグメント内のデータをホストコンピュータに転送する。
【0032】
ホストコンピュータ180からリード命令を受信したホストアダプタ110が行うデータ送信処理910について説明する。リード命令は、リード対象のデータの論理アドレスA、データ量等を含んでいる。
(1)リード対象の論理アドレスAからスロット番号A、セグメント位置A、ブロック位置Aを求める。論理アドレスをスロットサイズで割った商がスロット番号、余りをセグメントサイズで割った商がセグメント位置、さらに余りをブロックサイズで割った余りがブロック位置である(ステップ1005)。
(2)スロット情報Aを参照および変更する間、他のホストアダプタ110あるいは他のディスクアダプタ120が当該スロット情報Aを変更しないために、当該スロットAをロックする。ロック取得後、後述するセグメント確定処理を行う。セグメント確定処理は当該データ用にセグメントが割当てられているか否かを調べ、割り当てられている場合は、当該データが有効か否かを調べ、割り当てられていない場合は、セグメントの割り当てを試みる。セグメント確定処理の結果は、キャッシュヒット、キャッシュミス、セグメント確保不可のいずれかとなる(ステップ1010、1015)。
(3)セグメント確定処理の結果がキャッシュヒットの場合は、リード命令を発行したホストコンピュータ180とリード対象のデータを含む論理ボリューム230に対応するアクセス情報800のキャッシュヒット回数に1を加え、当該セグメントからホストコンピュータ180にデータを転送し、ホストコンピュータ180にデータ転送終了を報告する(ステップ1020〜1035)。
(4)セグメント確定処理の結果がセグメント確保不可の場合は、クラスタ構成記憶システム200内の全てのセグメントが使用中なため、しばらく時間が経過後、再度セグメント確定処理を行う(ステップ1045、1050)。
(5)セグメント確定処理の結果がキャッシュミスの場合は、スロットAのロックを解除し、物理位置情報300を用い、論理アドレスAから物理アドレスAを求め、当該データを保持する記憶装置150を含む記憶システムノード210内のディスクアダプタ120に、リード命令930を発行する。リード命令は、スロット番号A、セグメント位置A、ブロック位置A、物理アドレスA、論理アドレスA、転送量等を含む(ステップ1045〜1060)。
(6)ホストアダプタ110は当該ディスクアダプタ120からのリード終了報告を受けた後、スロットAをロックし、スロット情報Aのセグメント位置Aのセグメントのブロック位置Aからホストコンピュータ180にデータを転送し、ホストコンピュータ180にデータ転送終了を報告する(ステップ1065、1070、1030、1035)。
(7)ホストコンピュータ180へのデータ転送終了の報告後、リード命令を発行したホストコンピュータ180とリード対象のデータを含む論理ボリューム230に対応するアクセス情報800のリード回数に1を加え、スロットAのロックを解除する。スロットAのセグメントの使用は終わったが、直ぐに破棄せず、キャッシュヒットする可能性があるため、キャッシュミスの場合は後述するクリーンスロット追加処理によってスロットAをクリーンスロット管理情報700に追加し、暫くの間、有効なデータとしてセグメントを保持する。キャッシュヒットの場合は、より長くセグメントを保持するために、クリーンスロット位置変更処理を行う(ステップ1040、1085〜1095)。
【0033】
次に、ホストアダプタ110からのリード命令930を受信したディスクアダプタ120が行うデータリード処理920について説明する。
(1)スロット情報Aを参照および変更する間、他のホストアダプタ110あるいは他のディスクアダプタ120が当該スロット情報Aを参照および変更しないために、当該スロットAをロックする(ステップ1110)。
(2)物理アドレスAが示すデータを記憶装置150からスロット情報Aのセグメント位置Aのセグメントのブロック位置Aに読み込む(ステップ1120)。
(3)スロット情報Aのセグメント位置Aのセグメントのブロック位置Aのブロック情報を有効にする(ステップ1130)。
(4)スロットAのロックを解除し、ホストアダプタ110にリード命令の完了を報告する(ステップ1140、1150)。
【0034】
図12はクラスタ構成記憶システム200がホストコンピュータ180からライト命令を受信した際の、クラスタ構成記憶システム200の動作を説明する図、図13はホストコンピュータ180からライト命令を受信したホストアダプタ110の動作(データ受信処理1210)のフローチャート、図14はライト対象データを保持する記憶装置150を制御するディスクアダプタ120の動作(データライト処理1220)のフローチャートであり、以下、これらについて説明する。
【0035】
ホストコンピュータ180からライト命令を受信したホストアダプタ110は、データ受信処理1210によってライト対象のデータのためのセグメントが確保されているか調べ、存在する場合は当該セグメントに、存在しない場合はセグメントを確保し、ホストコンピュータ180からのデータを転送する。ここで、図12に示すようにライト命令を受信した記憶システムノード210−1内のセグメント1にデータを受信する場合と対象データを保持する記憶システムノード210−3内のセグメント3にデータを保持する場合とを比較すると、次の同一論理アドレスへのリード時にキャッシュヒットとなれば、前者は記憶システムノード210間のデータ転送が不要となる。従って、ホストコンピュータ1からの論理ボリューム230へのアクセスにキャッシュヒットが期待できる場合はリード命令を受信した記憶システムノード210−1内のセグメント1を確保する。但し、記憶装置150へのデータの書きこみのために、記憶システムノード210間のデータ転送が2回必要となるため、ヒットが期待できない場合は対象データを保持する記憶システムノード210−2内のセグメント2を確保する。データを受信後、ホストアダプタ110は、ディスクアダプタ120にライト命令930を発行する。ディスクアダプタ120はライト命令930を受け、データライト処理1220によって記憶装置150にデータを正副2回書き込む。
【0036】
ホストコンピュータ180からライト命令を受信したホストアダプタ110が行うデータ受信処理1210について説明する。このホストコンピュータ180からのライト命令は、ライト対象の論理アドレスA、データ量、ライトデータ等を含んでいる。
(1)ライト対象の論理アドレスAからスロット番号A、セグメント位置A、ブロック位置Aを求める。論理アドレスをスロットサイズで割った商がスロット番号、余りをセグメントサイズで割った商がセグメント位置、さらに余りをブロックサイズで割った余りがブロック位置である。(ステップ1305)。
(2)スロット情報Aを参照および変更する間、他のホストアダプタ110あるいは他のディスクアダプタ120が当該スロット情報Aを参照および変更しないために、当該スロットAをロックする。ロック取得後、セグメント確定処理を行う。セグメント確定処理は当該データ用にセグメントが割当てられているか否かを調べ、割り当てられていない場合は、セグメントの割り当てを試みる。セグメント確定処理の結果は、キャッシュヒット、キャッシュミス、セグメント確保不可のいずれかとなる(ステップ1310、1320)。
(3)セグメント確定処理の結果がセグメント確保不可の場合は、クラスタ構成記憶システム200内の全てのセグメントが使用中なため、しばらく時間が経過後、再度セグメント確定処理を行う(ステップ1320、1325)。
(4)セグメント確定処理の結果がキャッシュヒットおよびキャッシュミスの場合は、スロット情報Aのセグメント位置Aのセグメントのブロック位置Aにホストコンピュータ180からのデータを保存し、ホストコンピュータ180にデータ転送終了を報告する(ステップ1330、1335)。
(5)ホストコンピュータ180へのデータ転送終了の報告後、ライト命令を発行したホストコンピュータ180とライト対象のデータを含む論理ボリューム230に対応するアクセス情報800のライト回数に1を加える(ステップ1340)。
(6)スロット情報Aのセグメント位置Aのセグメントのセグメント情報400のブロック位置Aのブロック情報を有効にし、スロットAのロックを解除する(ステップ1345、1350)。
(7)セグメントに保持したデータを記憶装置150に保存するために、物理位置情報300を用い、論理アドレスAから正物理アドレスAを求め、当該データを保持する記憶装置150を含む記憶システムノード210内のディスクアダプタ120に、ライト命令1230を発行し処理を終える。ライト命令1230は、スロット番号A、セグメント位置A、ブロック位置A、物理アドレスA、論理アドレスA、転送量等を含む(ステップ1355)。
【0037】
次に、ホストアダプタ110からのライト命令1230を受信したディスクアダプタ120が行うデータライト処理1220について説明する。
(1)スロット情報Aを参照および変更する間、他のホストアダプタ110あるいは他のディスクアダプタ120が当該スロット情報Aを変更しないために、当該スロットAをロックする。論理アドレスAが示すデータを物理アドレスAが示す記憶装置150に書き込み、スロットAのロックを解除する。物理アドレスが正物理アドレスの場合、物理位置情報300を用い、論理アドレスAから副物理アドレスBを求め、当該データを保持する記憶装置150を含む記憶システムノード210内のディスクアダプタ120にライト命令1230を発行する。ライト命令は、スロット番号A、セグメント位置A、ブロック位置A、物理アドレスB、論理アドレスA、転送量等を含む(ステップ1405〜1425)。(2)ステップ1420の調べで、物理アドレスが副物理アドレスの場合は、スロットAのセグメントの使用は終わったが、当該データがキャッシュヒットする可能性があるため、後述するクリーンスロット追加処理によってスロットAをクリーンスロット管理情報700に追加し、暫くの間、有効なデータとしてセグメントを保持する(ステップ1430)。
【0038】
図15に示すセグメント確定処理について説明する。入力はリード命令もしくはライト命令、スロットA、セグメント位置A、ブロック位置Aである。以下の説明で、リードもしくはライト命令を受信した記憶システムノード210を記憶システムノードA、アクセス対象のデータを保持する記憶装置150を含む記憶システムノード210を記憶システムノードB、上記以外の全ての記憶システムノード210を記憶システムノードCとする。
(1)スロット情報Aのセグメント位置Aのセグメント番号Aを調べ、有効なセグメント番号であり、かつセグメント情報Aのブロック位置Aのブロック情報が有効であればキャッシュヒットとして、処理を終了する。ステップ1505の調べて、ブロック情報が無効であればキャッシュミスとして、処理を終了する(ステップ1500〜1515)。
(2)ステップ1500の調べで、セグメント番号Aが無効値の場合は、リード命令かライト命令かを調べ、リード命令あるいはライト命令の場合で、アクセス命令を発行したホストコンピュータ180とアクセス対象のデータを含む論理ボリューム230に対応するアクセス情報800の属性がフロントの場合もしくは、属性が条件付きフロントかつ条件を満足する場合は、記憶システムノードA、B、Cの順にセグメント確保対象としてセグメントを確保する。優先して記憶システムノードAのセグメントの取得を試みるのは、属性がフロントであるため、全アクセスに対するリード率が高く、キャッシュヒットが期待でき、同一論理アドレスへの再アクセスの際に、記憶システムノード210間のデータ転送が不要となる可能性が高いためである。次に優先して記憶システムノードBのセグメントの取得を試みるのは、図12で説明したように記憶システムノード210間のデータ転送が1回で記憶装置150への2回のデータ書き込みができるためである。クリーンスロット管理情報700に管理されているスロットはキャッシュヒットする可能性があるため、フリーセグメント管理情報500に管理されているセグメントを優先して確保するために、セグメント取得処理、クリーンスロット破棄処理の順で処理を行う(ステップ1520〜1530)。
(3)アクセス命令がライト命令かつステップ1525の調べで、条件を満足しない場合は、記憶システムノードB、A、Cの順にセグメント確保対象としてセグメントを確保する。優先して記憶システムノードBのセグメントの取得を試みるのは、記憶システムノード210間のデータ転送が1回で記憶装置150への2回のデータ書き込みができるためである。次に優先して記憶システムノードAのセグメントの取得を試みるのは、記憶システムノード210間のデータ転送が2回で記憶装置150への2回のデータ書き込みができるためである。クリーンスロット管理情報700に管理されているスロットはキャッシュヒットする可能性があるため、フリーセグメント管理情報500に管理されているセグメントを優先して確保するために、セグメント取得処理、クリーンスロット破棄処理の順で処理を行う(ステップ1540)。
(4)ステップ1530あるいはステップ1540の処理結果が成功の場合は、当該セグメントをスロットAのセグメント位置Aのセグメント情報に登録し、キャッシュミスとして処理を終了する(ステップ1550)。
(5)ステップ1530あるいはステップ1540の処理結果がセグメント確保不可の場合は、全セグメントが使用中であるため、セグメント確保不可として処理を終了する(ステップ1560)。
【0039】
このように、リード命令、アクセス情報800の属性がフロントの場合あるいは条件付きフロントでかつ条件を満足場合、リード命令もしくはライト命令を受信した記憶システムノード210内のセグメントを使用することで、次回の同一論理アドレスに対するリード命令の際に、記憶システムノード210間のデータ転送が不要であるため、クラスタ構成記憶システム200のアクセス性能を向上することができる。さらに、他の記憶システムノード210内のセグメントを使用する場合よりレスポンスタイムが短縮できる。
【0040】
また、ライト命令かつ属性が通常の場合もしくは、属性が条件付きフロントでかつ条件を満足しない場合にアクセス対象のデータを保持する記憶装置150を含む記憶システムノード210内のセグメントを使用することで、記憶システムノード210間のデータ転送1回により記憶装置150への2回のデータ書き込みが可能となる。さらに、アクセス情報800の属性に条件付きフロントを設けることで、リードが多い場合のみフロントにする等、アクセス状況に応じたセグメントの利用が可能となる。
【0041】
次に、セグメントの管理方法について説明する。セグメントは、スロット情報600あるいはフリーセグメント管理情報500に管理される。未使用状態のセグメントは、セグメントを持つ記憶システムノード210に対応するフリーセグメント管理情報500により管理される。図16は未使用状態のセグメントのフリーセグメント管理情報500への登録処理(フリーセグメント追加処理)のフローチャート、図17はフリーセグメント管理情報500からセグメントを取得する処理(フリーセグメント取得処理)のフローチャートであり、以下、これらについて説明する。
【0042】
フリーセグメント追加処理は、ホストアダプタ110あるいはディスクアダプタ120がクラスタ構成記憶システムの起動時に全セグメントを処理対象として行う。さらに、一定周期毎もしくは、未使用のセグメントが少ない場合に、ホストアダプタ110あるいはディスクアダプタ120が後述するクリーンスロット破棄処理によりスロット情報600に登録されているセグメントを処理対象として行う。以下の説明ではセグメントAを処理対象とする。
(1)フリーセグメント管理情報500をロックし、クリーンスロット管理情報700の最新セグメント番号を取得する。以下、取得したセグメント番号をBとする(ステップ1600、1610)。
(2)スロット番号Bが無効値の場合は、クリーンスロット管理情報700の最古セグメント番号にセグメント番号Aを設定する(ステップ1615、1620)。
(3)ステップ1615の調べで、スロット番号Bが有効値の場合は、セグメントBとセグメントAを関連づけるために、セグメント情報Bの次セグメント番号にセグメント番号Aを設定する(ステップ1625)。
(4)クリーンスロット管理情報700の最新セグメント番号にセグメント番号Aを設定する。セグメント情報Aの次セグメント番号に無効値を設定し、フリーセグメント管理情報500をロックを解除する(ステップ1630〜1650)。
【0043】
フリーセグメント取得処理はホストアダプタ110あるいはディスクアダプタ120が新たにセグメントを必要とする場合に、セグメント確定処理内で行う。
(1)フリーセグメント管理情報500をロックし、フリーセグメント管理情報500の未使用セグメント個数を調べ、未使用セグメント個数が0の場合は、未使用のセグメントが存在しないため、フリーセグメント管理情報500のロックを解除し、セグメント確保不可として処理を終了する(ステップ1700〜1730)。
(2)ステップ1710の調べで、フリーセグメント管理情報500の未使用セグメント個数が1以上の場合は、フリーセグメント管理情報500の最古セグメント番号を取得する。以下、取得したセグメント番号をAとする。フリーセグメント管理情報500の最古セグメント番号にセグメント情報Aの次セグメント番号を設定する。フリーセグメント管理情報500の未使用セグメント個数から1を引く。フリーセグメント管理情報500のロックを解除し、セグメントAを確保として処理を終了する(ステップ1740〜1780)。
【0044】
次に、スロットの管理方法について説明する。リード命令およびライト命令後の有効なデータを保持するスロットは、キャッシュヒットを期待し、暫くの間セグメントの破棄を行わない。その間はクリーンスロット管理情報700により管理し、未使用セグメント量が少なくなった場合もしくは、一定周期毎にアクセスされてから時間が経過したものからセグメントの破棄を行う。
【0045】
図18はクリーンスロット管理情報700に管理されているスロットから、セグメントを取得する際の処理(クリーンスロット破棄処理)のフローチャート、図19はクリーンスロット管理情報700にスロットを追加する際の処理(クリーンスロット追加処理)のフローチャート、図20はクリーンスロット管理情報700の修正処理(クリーンスロット位置変更処理)のフローチャートであり、以下、これらについて説明する。
【0046】
クリーンスロット破棄処理はホストアダプタ110あるいはディスクアダプタ120が未使用セグメント量が少なくなった場合もしくは、一定周期毎に行う。
(1)クリーンスロット管理情報700をロックし、クリーンスロット管理情報700のクリーンスロット数を調べ、クリーンスロット数が0の場合は登録されているスロットが存在しないため、クリーンスロット管理情報700のロックを解除し、セグメント確保不可として処理を終了する(ステップ1800〜1815)。
(2)ステップ1805の調べで、クリーンスロット管理情報700のクリーンスロット数が1以上の場合は、クリーンスロット管理情報700の最古使用スロット番号を取得する。以下、取得したスロット番号をAとする。スロットAをロックし、クリーンスロット管理情報700の最古使用スロット番号にスロット情報Aの次スロット番号を設定する。以下、次スロット番号をBとする。クリーンスロット管理情報700のクリーンスロット数から1を引く。スロット情報Aの次スロット番号Bが有効値の場合、スロットBをロックし、スロット情報Bの前セグメント番号に無効値を設定し、ロックを解除する。クリーンスロット管理情報700のロックを解除する。スロット情報Aの次スロット番号に設定するスロット番号がないことを示す無効値を設定する(ステップ1820〜1845)。
(3)スロット情報Aの全てのセグメント番号を調べ、有効なセグメント番号が設定されている場合、当該セグメント番号Aを一次的に記憶し、設定するセグメント番号がないことを示す無効値を設定する(ステップ1855)。
(4)ステップ1855の調べで、セグメント番号Aが確保するセグメント数以上存在した場合は、不要なセグメントはフリーセグメント追加処理にて、フリーセグメント管理情報500に追加する(ステップ1860)。
(5)スロットAのロックを解除し、セグメントAを確保として処理を終了する(ステップ1865、1870)。
【0047】
クリーンスロット追加処理は、リード時の処理で、ホストアダプタ110がデータ送信処理910終了時あるいはディスクアダプタ120がデータライト処理1220終了時に処理対象スロットに対して行う。以下、追加対象のスロットをAとする。
(1)クリーンスロット管理情報700およびスロットAをロックする(ステップ1900、1905)。
(2)クリーンスロット管理情報700のクリーンスロット数が0の場合は、スロット情報Aの前スロット番号と次スロット番号に無効値を設定し、クリーンスロット管理情報700の最古使用スロット番号と最新使用スロット番号にAを設定する。スロットAのロックおよびクリーンスロット管理情報700のロックを解除し、処理を終了する(ステップ1910〜1930)。
(3)ステップ1910の調べで、クリーンスロット数が1以上の場合は、クリーンスロット管理情報700の最新使用スロット番号を取得する。以下、取得したスロット番号をBとする。スロットBをロックし、スロット情報Bの次スロット番号にスロット番号Aを設定し、スロットBのロックを解除する(ステップ1935〜1950)。
(4)クリーンスロット管理情報700の最新使用スロット番号にスロット番号Aを設定する。スロット情報Aの前スロット番号にスロット番号Bを設定し、次スロット番号に無効値を設定する。スロットAのロックおよびクリーンスロット管理情報700のロックを解除し、処理を終了する(ステップ1955〜1970)。
【0048】
クリーンスロット位置変更処理はリード命令かつキャッシュヒット時、ホストアダプタ110が当該データをより長くキャッシュメモリに保持する目的で行う。以下の説明ではスロットAを処理対象とする。
(1)クリーンスロット管理情報700およびスロットAをロックする。スロット情報Aの前スロット番号Bと次スロット番号Cを取得する(ステップ2000〜2010)。
(2)スロット番号Bが無効値の場合は、クリーンスロット管理情報700の最古使用スロット番号に、スロット番号Cを設定する(ステップ2015、2020)。
(3)ステップ2015の調べで、スロット番号Bが有効値の場合は、スロット情報Bをロックし、スロット情報Bの次スロット番号にスロット番号Cを設定し、スロット情報Bをロックを解除する(ステップ2025〜2035)。
(4)スロット番号Cが無効値の場合は、クリーンスロット管理情報700の最新使用スロット番号にスロット番号Bを設定する(ステップ2040、2045)。
(5)ステップ2040の調べで、スロット番号Cが有効値の場合は、スロット情報Cをロックし、スロット情報Cの前スロット番号にスロット番号Bを設定し、スロット情報Cをロックを解除する(ステップ2050〜2060)。
(6)クリーンスロット管理情報700およびスロットAのロックを解除する。スロットAをクリーンスロット追加処理にてクリーンスロット管理情報700に追加し、処理を終了する(ステップ2065〜2075)。
【0049】
次に、前述で説明した本発明の実施形態の拡張例を説明する。この拡張例は、1つのデータを複数の記憶システムノード210内部のセグメントに保持できるものとする。これにより、異なる記憶システムノード210と接続している2つ以上のホストコンピュータ180の同一論理ボリューム230へのアクセスに関する記憶システムノード210間のデータ転送頻度の削減が可能となる。さらに、ライト命令の場合、記憶システムノード210のセグメント間のコピーを行うことで、記憶システムノード210間のデータ転送頻度を削減できる。
【0050】
拡張例のクラスタ構成記憶システム200は、基本的に前述した実施例と同様に、物理位置情報300、セグメント情報400、フリーセグメント管理情報500、クリーンスロット管理情報700、アクセス情報800を有するが、スロット情報2100は図21に示すように拡張し、アクセス情報800の属性値を追加する。拡張例のクラスタ構成記憶システム200の内部構造は前述した実施例と同様な内部構造を有する。
【0051】
拡張例でのスロット情報2100は、基本的にはスロット情報600と同様だが、スロット情報600と差異は、記憶システムノード数に比例したセグメント番号数を保持することである。スロット情報2100のセグメント番号数は、スロットサイズをセグメントサイズで割った商とクラスタ構成記憶システム200内の記憶システムノード数の積である。図21に示すスロット情報2100は、クラスタ構成記憶システム200内の記憶システムノード数が2、スロットのサイズが4KB、セグメントのサイズが2KBであり、4つのセグメント番号を保持する。以下の説明では、記憶システムノードmのセグメント位置nのセグメント番号を”セグメント番号m−n”と記載する。セグメント番号m−nが有効なセグメント番号を保持する場合は、論理アドレス:(スロット番号×スロットサイズ+セグメントサイズ×n)から論理アドレス:(スロット番号×スロットサイズ+セグメントサイズ×(n+1)−1)のデータに対し、セグメントが割り当てられていることを示し、さらに、そのセグメントが記憶システムノードm内部のキャッシュメモリにあることも示す。上記論理アドレスにセグメントを割り当てていない場合は、セグメント番号で使用していない無効値を設定する。図21及び以下の説明では、当該論理アドレスにセグメントを割り当てていないことを示すため、無効値に”255”を使用する。
【0052】
拡張例でのアクセス情報800は属性に多重化許可、条件付き多重化許可を追加する。属性の多重化許可は、当該ホストコンピュータ180からの当該論理ボリューム230へのアクセスのために、1つのデータを複数の記憶システムノード210内部のセグメントに保持することを許可すること示す。例えば、リード命令を受信した記憶システムノード210以外の記憶システムノード210内部のセグメントに当該データが存在する場合にも、リード命令を受信した記憶システムノード210にセグメントを確保することを示す。
【0053】
属性の条件付き多重化許可は、条件が成立する場合は当該ホストコンピュータ180からの当該論理ボリューム230へのアクセスのために、1つのデータを複数の記憶システムノード210内部のセグメントに保持することを許可すること示す。指定条件は、例えば、単位時間内の当該ホストコンピュータ180からの当該論理ボリューム230へのリード回数、全アクセスに対するリード比率、キャッシュヒット率等で、1分間のリード回数が100回以上、全アクセスに対するリード比率が90%以上、キャッシュヒット率が70%以上という形式で指定する。
【0054】
クラスタ構成記憶システム200がホストコンピュータ180からリード命令を受信した場合の動作は、図10、図11に示したフローチャートと基本的に同じだが、セグメント確定処理のみ異なる。以下、図22は拡張例のクラスタ構成記憶システム200がホストコンピュータ180からリード命令を受信した際の、クラスタ構成記憶システム200の動作を説明する図であり、図23はリード命令の場合のセグメント確定処理を説明するフローチャートであり、次に、これについて説明する。
【0055】
ホストコンピュータ180からリード命令を受信したホストアダプタ110は、データ送信処理910によってセグメント内にリード対象のデータが存在するか調べる。ここで、リード命令を受信した記憶システムノード210−2と異なる記憶システムノード210−3内部のセグメント3に当該データが存在し、かつキャッシュヒットが期待できる場合は、記憶システムノード210−2内部のセグメント2を確保し、記憶システムノード210−3内部のセグメント3から記憶システムノード210−2内部のセグメント2にデータをコピーする。キャッシュヒットが期待できるかの判断は、アクセス情報800の属性等を用いて行う。その後、ホストアダプタ110は、記憶システムノード210−2内部のセグメント2からホストコンピュータ180にデータを転送する。また、記憶システムノード210−3内部のセグメント3から記憶システムノード210−2内部のセグメント2へのデータのコピーと平行して、ホストコンピュータ180にデータを転送してもよい。
【0056】
図23に示すリード命令の場合のセグメント確定処理について説明する。セグメント確定処理の入力は、スロットN、セグメント位置N、ブロック位置Nである。以下の説明で、リード命令を受信した記憶システムノード210を記憶システムノードA、アクセス対象のデータを保持する記憶装置150を含む記憶システムノード210を記憶システムノードB、上記以外の全記憶システムノード210を記憶システムノードCとする。さらに、記憶システムノードAを除くクラスタ構成記憶システム内の全記憶システムノード210を記憶システムノードa、記憶システムノードBを除くクラスタ構成記憶システム内の全記憶システムノード210を記憶システムノードbとする。
(1)スロット情報2100のセグメント番号A−Nを調べ、有効なセグメント番号であり、かつ当該セグメント情報400のブロック位置Nのブロック情報が有効であればキャッシュヒットとして、処理を終了する(ステップ2300〜2310)。
(2)ステップ2300の調べで、スロット情報2100のセグメント番号A−Nが無効値の場合は、スロット情報2100のセグメント番号a−Nの全セグメント番号を調べ、少なくとも1つのセグメントが有効値を持つ場合は、当該セグメント情報400のブロック位置Nのブロック情報が有効であるか調べ、ブロック情報が有効なセグメントが存在しない場合は、セグメントは確保されているが、データは無効なため、キャッシュミスとして処理を終了する(ステップ2315〜2325)。
(3)ステップ2320の調べで、ブロック位置Nのブロック情報が有効であるセグメントが存在する場合は、リード命令を発行したホストコンピュータ180とアクセス対象のデータを含む論理ボリューム230に対応するアクセス情報800を参照し、属性が多重化許可、条件付き多重化許可で条件を満足する場合は、フリーセグメント取得処理もしくはクリーンスロット破棄処理を行い、記憶システムノードAにセグメントAを確保し、当該データをセグメントAにコピーする。ただし、記憶システムノードAにセグメントAを確保できない場合はコピーは行わない。記憶システムノードAのセグメントAにデータをコピーするのは、アクセス情報800の属性から、キャッシュヒットが期待でき、同一論理アドレスへの再アクセスの際に、記憶システムノード210間のデータ転送が不要となる可能性が高いためである。コピー終了後あるいはステップ2330の条件を満足しない場合は、有効なセグメントが存在し、データが有効であるため、キャッシュヒットとして処理を終了する(ステップ2330〜2340)。
(4)ステップ2315の調べで、スロット情報2100のセグメント番号a−Nの全セグメント番号が無効値を持つ場合は、セグメントが割り当てられていないため、セグメントを確保する。リード命令を発行したホストコンピュータ180とアクセス対象のデータを含む論理ボリューム230に対応するアクセス情報800を参照し、属性が多重化許可、条件付き多重化許可で条件を満足する場合、フロント、条件付きフロントで条件を満足する場合は、記憶システムノードA、B、Cの順にセグメント確保対象とし、セグメントを確保する。優先して記憶システムノードAのセグメントの取得を試みるのは、アクセス情報800の属性から、キャッシュヒットが期待でき、同一論理アドレスへの再アクセスの際に、記憶システムノード210間のデータ転送が不要となる可能性が高いためである。次に優先して記憶システムノードBのセグメントの取得を試みるのは、記憶システムノード210間のデータ転送が1回であり、記憶システムノードCの場合の2回と比べ少ないからである。クリーンスロット管理情報700に管理されているスロットはキャッシュヒットする可能性があるため、フリーセグメント管理情報500に管理されているセグメントを優先するためにセグメント取得処理、クリーンスロット破棄処理の順で処理を行う(ステップ2355)。
(5)ステップ2350の調べて、条件を満足しない場合は、記憶システムノードB、A、Cの順にセグメント確保対象とする。優先して記憶システムノードBのセグメントの取得を試みるのは、記憶システムノード210間のデータ転送が1回であり、もし、その後他のホストコンピュータをも含む同一論理アドレスへのライト命令を処理する場合、セグメントの再利用が可能なためである。次に優先して記憶システムノードAのセグメントの取得を試みるのは、記憶システムノード210間のデータ転送が1回であるためである。クリーンスロット管理情報700に管理されているスロットはキャッシュヒットする可能性があるため、フリーセグメント管理情報500に管理されているセグメントを優先して確保するために、セグメント取得処理、クリーンスロット破棄処理の順で処理を行う(ステップ2360)。
(6)ステップ2355あるいはステップ2360のフリーセグメント取得処理あるいはクリーンスロット破棄処理にてセグメントを確保できた場合は、当該セグメントをスロットAのセグメント番号m−Aに登録し、キャッシュミスとして処理を終了する。mは確保したセグメントの記憶システムノード番号である。セグメントを確保できない場合は、セグメント確保不可として処理を終了する(ステップ2365、2370)。
【0057】
クラスタ構成記憶システム200がホストコンピュータ180からライト命令を受信した際の動作は、図13、図14に示したフローチャートと基本的に同じだが、セグメント確定処理のみ異なる。以下、図24は拡張例のクラスタ構成記憶システム200がホストコンピュータ180からライト命令を受信した際の、クラスタ構成記憶システム200の動作を説明する図であり、図25はライト命令の場合のセグメント確定処理を説明するフローチャートであり、次に、これについて説明する。
【0058】
ホストコンピュータ180からライト命令を受信したホストアダプタ110は、スロット情報2100を用い、後述するセグメント確定処理にてデータを受信するセグメントを確保する。ここで、当該データのためのセグメントが存在する場合は、当該セグメントが保持するデータは更新前のデータであるため、データを無効化あるいはセグメントを破棄する必要がある。ホストアダプタ110は、確保したセグメントにホストコンピュータ180からのデータを保存し、ディスクアダプタ120にライト命令1230を発行する。ディスクアダプタ120はライト命令1230を受け、データライト処理1220によって正、副2個所の記憶装置150にデータを書き込む。ここで、図24に示すように、記憶システムノード210−2のディスクアダプタ120が、ライト命令を受信した記憶システムノード210−3内部のセグメント3にデータを保存しているデータを記憶装置150にデータを書き込む場合、まず、記憶システムノード210−2内部のセグメント2を確保し、記憶システムノード210−3内部のセグメント3から記憶システムノード210−2内部のセグメント2にデータをコピーした後、正、副2個所の記憶装置150にデータを書き込んでもよい。これにより、記憶システムノード210間のデータ転送を減らすことができる。
【0059】
図25に示すライト命令の場合のセグメント確定処理について説明する。セグメント確定処理の入力は、スロットN、セグメント位置N、ブロック位置Nである。以下の説明で、ライト命令を受信した記憶システムノード210を記憶システムノードA、アクセス対象のデータを保持する記憶装置150を含む記憶システムノード210を記憶システムノードB、上記以外の記憶システムノード210を記憶システムノードCとする。さらに、記憶システムノードAを除くクラスタ構成記憶システム200内の全記憶システムノード210を記憶システムノードa、記憶システムノードBを除くクラスタ構成記憶システム内の全記憶システムノード210を記憶システムノードbとする。
(1)ライト命令を発行したホストコンピュータ180とアクセス対象のデータを含む論理ボリューム230に対応するアクセス情報800を参照し、属性が多重化許可、フロント、条件付き多重化許可で条件を満足する場合もしくは条件付きフロントで条件を満足する場合は、記憶システムノードA、B、Cの順にセグメント確保対象とし、セグメントを確保する。優先して記憶システムノードAのセグメントの取得を試みるのは、アクセス情報800の属性から、キャッシュヒットが期待でき、同一論理アドレスへのリード命令の際に、記憶システムノード210間のデータ転送が不要となる可能性が高いためである。次に優先して記憶システムノードBのセグメントの取得を試みるのは、記憶システムノード210間のデータ転送が1回であり、記憶システムノードCの3回と比べ少ないからである。セグメントを取得する対象は、クリーンスロット管理情報700に管理されているスロットはキャッシュヒットする可能性がありため、フリーセグメント管理情報500に管理されているセグメントを優先し、セグメント取得処理、クリーンスロット破棄処理の順で処理を行う。ただし、記憶システムノードAのフリーセグメント管理情報Aを対象としたセグメント取得処理を行う前に、スロット情報Aを調べ、セグメント番号A−Nが有効値を持つ場合は、セグメントが割り当てられているため、セグメント確保成功とする。記憶システムノードB、Cでも同様に行う(ステップ2500、2510)。
(2)ステップ2500の調べで、条件を満足しない場合は、記憶システムノードB、A、Cの順にセグメント確保対象とし、セグメントを確保する。優先して記憶システムノードBのセグメントの取得を試みるのは、記憶装置150への書き込みの際に、記憶システムノード210間のデータ転送が1回となるためである。次に優先して記憶システムノードAのセグメントの取得を試みるのは、同一論理アドレスへの再ライト命令の際に、セグメントの再利用できる可能性があるためである。さらに記憶システムノード210間のデータ転送が2回であり、記憶システムノードCの場合の3回と比べ少ないからである。セグメントを取得する対象は、クリーンスロット管理情報700に管理されているスロットはキャッシュヒットする可能性があるため、フリーセグメント管理情報500に管理されているセグメントを優先して確保するために、セグメント取得処理、クリーンスロット破棄処理を行う。ただし、記憶システムノードBのフリーセグメント管理情報Bを対象としたセグメント取得処理を行う前に、スロット情報2100を調べ、セグメント番号B−Nが有効値を持つ場合は、セグメントが割り当てられているため、セグメント確保成功とする。記憶システムノードA、Cでも同様に行う(ステップ2520)。
(3)ステップ2510、2520の処理結果が、セグメント確保成功の場合は、当該セグメントをスロットAのセグメント番号m−Aに登録し、確保したセグメント以外の当該セグメントを無効化するために、当該セグメントを対象にフリーセグメント追加処理を行い、キャッシュミスとして処理を終了する。mはセグメントを確保した記憶システムノード番号である(ステップ2530、2550)。
(4)ステップ2510、2520の処理結果が、セグメント確保不可の場合は、セグメント確保不可として処理を終了する(ステップ2540)。
【0060】
【発明の効果】
以上説明したように本発明によれば、クラスタ構成システムを構成する記憶システムノード間のデータ転送の頻度を削減でき、クラスタ構成記憶システムのアクセス性能の向上を図ることができる。
【図面の簡単な説明】
【図1】本発明の一実施形態によるクラスタ構成記憶システムの構成を示すブロック図である。
【図2】記憶システムノードの構成を示すブロック図である。
【図3】物理位置情報の例を示す図である。
【図4】セグメント情報の例を説明する図である。
【図5】フリーセグメント管理情報の例を説明する図である。
【図6】第一実施形態でのスロット情報の例を説明する図である。
【図7】クリーンスロット管理情報の例を説明する図である。
【図8】アクセス情報の例を説明する図である。
【図9】リード命令を受信した場合のクラスタ構成記憶システムの動作を説明する図である。
【図10】リード命令を受信した場合のホストアダプタの処理動作を説明するフローチャートである。
【図11】リード命令を受信した場合のディスクアダプタの処理動作を説明するフローチャートである。
【図12】ライト命令を受信した場合のクラスタ構成記憶システムの動作を説明する図である。
【図13】ライト命令を受信した場合のホストアダプタの処理動作を説明するフローチャートである。
【図14】ライト命令を受信した場合のディスクアダプタの処理動作を説明するフローチャートである。
【図15】第一実施形態でのセグメント確定処理での処理動作を説明するフローチャートである。
【図16】フリーセグメント追加処理での処理動作を説明するフローチャートである。
【図17】フリーセグメント取得処理での処理動作を説明するフローチャートである。
【図18】クリーンスロット破棄処理での処理動作を説明するフローチャートである。
【図19】クリーンスロット追加処理での処理動作を説明するフローチャートである。
【図20】クリーンスロット位置変更処理での処理動作を説明するフローチャートである。
【図21】第二実施形態でのスロット情報の例を説明する図である。
【図22】第二実施形態でのリード命令を受信した場合のクラスタ構成記憶システムの動作を説明する図である。
【図23】第二実施形態でのリード命令を受信した場合のセグメント確定処理での処理動作を説明するフローチャートである。
【図24】第二実施形態でのライト命令を受信した場合のクラスタ構成記憶システムの動作を説明する図である。
【図25】第二実施形態でのライト命令を受信した場合のセグメント確定処理での処理動作を説明するフローチャートである。
【図26】従来技術による記憶システムの構成例を示すブロック図である。
【符号の説明】
100…記憶システム、110…ホストアダプタ、120…ディスクアダプタ、130…キャッシュメモリ、140…共有メモリ、150…記憶装置、160…コモンパス、200…クラスタ構成記憶システム、210…記憶システムノード、220…記憶システムノード間の接続線、230…論理ボリューム、240…ポート、300…物理位置情報、400…セグメント情報、500…フリーセグメント管理情報、600…スロット情報、700…クリーンスロット管理情報、800…アクセス情報。
Claims (4)
- 磁気記憶装置とキャッシュメモリを有する記憶システムノードを複数個接続したクラスタ構成記憶システムにおいて、
前記クラスタ構成記憶システムにアクセスする複数のホストと複数の記憶システムノード内の記憶装置との間の各々のアクセス情報を保持し、
前記クラスタ構成記憶システムが前記ホストからアクセスを受けた場合に、前記保持したアクセス情報に基づいて、ホストよりアクセスを受けた記憶システムノード内のキャッシュメモリ又は、ホストからのアクセス対象となる記憶装置を有する記憶システムノード内のキャッシュメモリを選択してセグメントを確保することを特徴とするクラスタ構成記憶システム。 - 前記アクセス情報が単位時間内でのリード回数、ライト回数、キャッシュヒット回数を含むことを特徴とする請求項1記載のクラスタ構成記憶システム。
- 前記アクセス情報が単位時間内でのリードデータ量合計、ライトデータ量合計、キャッシュヒットデータ量合計を含むことを特徴とする請求項1記載のクラスタ構成記憶システム。
- 前記アクセス情報は共有メモリに保持され、
前記アクセス情報にユーザが設定する属性が含まれることを特徴とする請求項1乃至3のいずれかに記載のクラスタ構成記憶システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001327108A JP3932860B2 (ja) | 2001-10-25 | 2001-10-25 | クラスタ構成記憶システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001327108A JP3932860B2 (ja) | 2001-10-25 | 2001-10-25 | クラスタ構成記憶システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003131944A JP2003131944A (ja) | 2003-05-09 |
JP3932860B2 true JP3932860B2 (ja) | 2007-06-20 |
Family
ID=19143377
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001327108A Expired - Fee Related JP3932860B2 (ja) | 2001-10-25 | 2001-10-25 | クラスタ構成記憶システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3932860B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100594249B1 (ko) | 2004-02-13 | 2006-06-30 | 삼성전자주식회사 | 데이터 저장 시스템에서의 적응적 데이터 액세스 제어방법 및 이를 이용한 디스크 드라이브 |
US7096325B2 (en) * | 2004-03-29 | 2006-08-22 | Hitachi, Ltd. | Method and apparatus for multistage volume locking |
JP2006252031A (ja) * | 2005-03-09 | 2006-09-21 | Nec Corp | ディスクアレイコントローラ |
-
2001
- 2001-10-25 JP JP2001327108A patent/JP3932860B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2003131944A (ja) | 2003-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6457102B1 (en) | Cache using multiple LRU's | |
US7246187B1 (en) | Method and apparatus for controlling exclusive access to a shared resource in a data storage system | |
US7636816B2 (en) | Global address space management | |
US8001333B2 (en) | Memory management in a shared memory system | |
US6968425B2 (en) | Computer systems, disk systems, and method for controlling disk cache | |
US6119209A (en) | Backup directory for a write cache | |
US7849254B2 (en) | Create virtual track buffers in NVS using customer segments to maintain newly written data across a power loss | |
US6105085A (en) | Lock mechanism for shared resources having associated data structure stored in common memory include a lock portion and a reserve portion | |
US8185710B2 (en) | Hardware memory locks | |
US5504888A (en) | File updating system employing the temporary connection and disconnection of buffer storage to extended storage | |
JP2005532611A (ja) | 仮想記憶装置 | |
JP5531091B2 (ja) | 計算機システム及びその負荷均等化制御方法 | |
JP2005258918A (ja) | ストレージシステムおよびストレージシステムのキャッシュメモリ制御方法 | |
EP1400894A2 (en) | Storage controller | |
JP2006196011A (ja) | 変化するサービスレベルを提供するためのキャッシュのセグメント化 | |
CN109947575A (zh) | 读写锁的加锁、释放方法及相关系统 | |
US20080082622A1 (en) | Communication in a cluster system | |
JP3932860B2 (ja) | クラスタ構成記憶システム | |
JPH11143779A (ja) | 仮想記憶装置におけるページング処理システム | |
JP2685530B2 (ja) | 共用データの管理方法 | |
JP4286857B2 (ja) | ノード間共用ファイル制御方法 | |
JP3882461B2 (ja) | 記憶装置システム及びそのバックアップ取得方法 | |
US5802557A (en) | System and method for caching information in a digital data storage subsystem | |
KR100472207B1 (ko) | 다중 레이드 제어기를 통한 데이터 분산 공유 레이드 제어시스템 | |
JP3866448B2 (ja) | ノード間共用ファイル制御方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20060419 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061213 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061219 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070209 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070227 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070312 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110330 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110330 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120330 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130330 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130330 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140330 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |