(57)【要約】【課題】  制御ブロックを記憶する記憶資源を無駄に消費してしまうことのないようにする。【解決手段】  ストレージシステム２００のロック構築部８１１が、ストレージシステム２００に実際に接続されるホスト１０１の数であるホスト数と、複数の記憶装置グループ３０１のうちアクセス排他制御を行う必要のある記憶装置グループの数であるグループ数とを、ホスト１０１又はＳＶＰ３１から受ける。また、ロック構築部８１１は、受けたホスト数やグループ数に基づいて、どの記憶装置グループに対応する制御ブロックを用意するかや、どの制御ブロックにどれだけの数の制御サブブロックを用意するかを、制御する。ストレージシステム。【選択図】  図３
2007047863.tif 000002
【特許請求の範囲】
【請求項１】
複数のホストコンピュータに接続されたストレージシステムにおいて、
複数の記憶領域単位毎により構成された記憶領域を有する複数の記憶装置グループと、
前記複数のホストコンピュータからの各記憶領域単位に対するアクセスの排他制御のために使用される制御ブロック群と、
前記制御ブロックを記憶することができる記憶資源と、
前記制御ブロック群を用いて前記排他制御を行うコントローラと
を備え、
前記複数の記憶装置グループの各々は、一以上の記憶装置により構成され、
前記制御ブロック群は、一以上の制御ブロックで構成され、
各制御ブロックは、前記複数の記憶装置グループのうちの一つに対応し、一つの記憶領域単位に対するアクセス排他制御を行うための制御サブブロックを複数個有し、
前記コントローラは、
同一の記憶領域単位に実際にアクセスし得るホストコンピュータの数であるホスト数、及び／又は、前記複数の記憶装置グループのうち前記排他制御を行う必要のある記憶装置グループの数であるグループ数を把握し、
前記把握されたホスト数及び／又はグループ数に基づいて、前記制御ブロック群を構築する、
ストレージシステム。
【請求項２】
前記コントローラは、前記複数のホストコンピュータのうちの少なくとも一つのホストコンピュータ、又は、前記ストレージシステムに接続された別のコンピュータマシンから前記ホスト数及び／又はグループ数の入力を受け付ける制御インターフェースを有し、該制御インターフェースにより前記ホスト数及び／又は前記グループ数の入力を受け付けることにより、前記ホスト数及び／又はグループ数を把握する、
請求項１記載のストレージシステム。
【請求項３】
前記制御サブブロックのサイズは、その制御サブロックを用いてアクセスの排他制御がされる前記ホスト数が多いほど、大きくなり、
前記コントローラは、
前記把握されたホスト数と、前記記憶資源における、前記制御ブロック群を記憶するための領域のサイズとに基づいて、該領域に記憶することができる制御サブブロックの数を計算し、
算出された数を、前記ホストコンピュータ及び／又は前記別のコンピュータマシンに通知する、
請求項２記載のストレージシステム。
【請求項４】
前記制御サブブロックのサイズは、その制御サブロックを用いてアクセスの排他制御がされる前記ホスト数が多いほど、大きくなり、
前記コントローラは、
前記把握されたホスト数と、前記記憶資源における、前記制御ブロック群を記憶するための領域のサイズとに基づいて、該領域に記憶することができる制御サブブロックの第一の数を計算し、
前記算出された第一の数と、前記把握されたグループ数とに基づいて、前記排他制御を行う必要のある各記憶装置グループに対応した制御ブロックを構成する制御サブブロックの第二の数を計算し、
前記算出された第二の数を、前記ホストコンピュータ及び／又は前記別のコンピュータマシンに通知する、
請求項２記載のストレージシステム。
【請求項５】
前記コントローラは、
前記排他制御を行う必要のある記憶装置グループがどれであるかを把握し、
前記制御ブロック群の構築において、前記把握された各記憶装置グループに対応した制御ブロックを構成する制御サブブロックの数を均等にする、
請求項１記載のストレージシステム。
【請求項６】
前記コントローラは、
前記排他制御を行う必要のある記憶装置グループがどれで、どの記憶装置グループにどれだけの数の制御サブブロックを割り当てるべきかを把握し、
前記制御ブロック群の構築において、前記把握された各記憶装置グループに対応した制御ブロックを、前記把握された数の制御サブブロックで構成する、
請求項１記載のストレージシステム。
【請求項７】
前記コントローラは、
或る記憶装置グループにおける或る記憶領域単位に対するアクセス要求を受けた場合、その記憶装置グループに対応する制御ブロックから、未使用状態の制御サブブロックを探して、探し出された制御サブブロックを使用状態にし、当該アクセス要求の処理が済んだ場合に、該制御サブブロックを未使用状態に戻し、
各制御ブロックにおける未使用状態の制御サブブロックの数であるブロック使用状況を把握し、
把握されたブロック使用状況を前記ホストコンピュータ又は前記別のコンピュータマシンに通知する、
請求項２記載のストレージシステム。
【請求項８】
複数のホストコンピュータとストレージシステムとを備えるシステムにおいて実現される記憶制御方法において、
前記ストレージシステムが、
複数の記憶領域単位毎により構成された記憶領域を有する複数の記憶装置グループと、
前記複数のホストコンピュータからの各記憶領域単位に対するアクセスの排他制御のために使用される制御ブロック群と、
前記制御ブロックを記憶することができる記憶資源と
を有し、
前記複数の記憶装置グループの各々は、一以上の記憶装置により構成されており、
前記制御ブロック群は、一以上の制御ブロックで構成されており、
各制御ブロックは、前記複数の記憶装置グループのうちの一つに対応し、一つの記憶領域単位に対するアクセス排他制御を行うための制御サブブロックを複数個有し、
前記記憶制御方法は、
同一の記憶領域単位に実際にアクセスし得るホストコンピュータの数であるホスト数、及び／又は、前記複数の記憶装置グループのうち前記排他制御を行う必要のある記憶装置グループの数であるグループ数を把握し、
前記把握されたホスト数及び／又はグループ数に基づいて、前記制御ブロック群を構築する、
記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶制御技術に関し、特に、アクセス排他の制御に関する。
【背景技術】
【０００２】
例えば、データセンタ等のような大規模なデータを取り扱うデータベースシステムでは、ホストコンピュータとは別に構成されたストレージシステムを用いてデータを管理する。このストレージシステムは、例えば、多数の記憶装置をアレイ状に配設して構成されたRAID（Redundant Array of Independent Inexpensive Disks）のようなディスクアレイシステムである。
【０００３】
このようなストレージシステムには、例えば、特開平５−１２８００２号公報に開示されている磁気ディスクサブシステムがある。このサブシステムは、キャッシュメモリ２８と、制御テーブル３０と、複数の磁気ディスク装置２４〜２７とを有する。キャッシュメモリ２８は、ホストコンピュータ２２、２３が処理する業務毎に複数の領域２８Ａ、２８Ｂに分割される。制御テーブル３０が、複数の領域２８Ａ、２８Ｂにそれぞれ対応した複数の制御テーブル３０Ａ、３０Ｂに分割される。ホストコンピュータ２２、２３は、各領域２８Ａ、２８Ｂ毎に、磁気ディスク装置２４〜２７を指定する。
【０００４】
【特許文献１】特開平５−１２８００２号公報（例えば要約）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
例えば、大規模なコンピュータシステムでは、複数のホストコンピュータ（以下、単に「ホスト」と呼称）から成るホストコンピュータ群と、複数のストレージシステムから成るストレージシステム群とが備えられる。各ストレージシステムは、複数の物理的な記憶装置（例えばハードディスクドライブ）の記憶資源により提供される複数の論理的な記憶装置（以下、単に「ＬＤＥＶ」と呼称）を備える。各ＬＤＥＶの記憶領域は、多数の記憶領域単位（以下、「レコード」と呼ぶ）から構成される。
【０００６】
このコンピュータシステムでは、複数のホストが同一のＬＤＥＶにアクセスすることがあり得る。この場合、例えば、或るホストが、或るレコードからデータを読み出す前に、そのデータが、別のホストによって更新されてしまうことが生じ得る。これでは、各レコードのコヒーレンシーを保つことができない。
【０００７】
各レコードのコヒーレンシーを保つための方法として、ストレージシステムの記憶資源（例えばメモリ）上に、各レコードに対するアクセス排他を制御するための制御サブブロックを複数個有する制御ブロックを設け、その制御ブロックを利用して、各レコードのアクセス排他を制御する方法が考えられる。具体的には、例えば、或るレコードに対するアクセス要求を或るホストから受けた場合、そのレコードに割り付けた制御ブロックを使用状態にし、その後、そのレコードに対するアクセス要求を別のホストから受けても、その制御ブロックが未使用状態になるまで、別のホストのアクセスを許可しないようにする方法が考えられる。
【０００８】
しかし、通常、レコードの数は膨大である。また、例えば、ストレージシステム内には、どのホストにもアクセスされないレコードもあるだろうし、必ずしもアクセス排他制御の必要性が生じないレコードもあるであろう。故に、アクセス排他制御の方法が何ら工夫されないと、制御ブロックを記憶する記憶資源を無駄に消費してしまうことになる。
【０００９】
従って、本発明の目的は、制御ブロックを記憶する記憶資源を無駄に消費してしまうことのないようにすることにある。
【００１０】
本発明の更なる目的は、後の記載から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本発明に従うストレージシステムは、複数の記憶領域単位毎により構成された記憶領域を有する複数の記憶装置グループ（例えば後述のＣＵ）と、前記複数のホストコンピュータからの各記憶領域単位（例えば後述のレコード）に対するアクセスの排他制御のために使用される制御ブロック群（例えば後述の論理ロック構造体群）と、前記制御ブロックを記憶することができる記憶資源（例えば後述の共有メモリ）と、前記制御ブロック群を用いて前記排他制御を行うコントローラとを備える。前記複数の記憶装置グループの各々は、一以上の記憶装置（例えば後述のＬＤＥＶ）により構成されている。前記制御ブロック群は、一以上の制御ブロック（例えば後述の論理ロック構造体）で構成される。各制御ブロックは、前記複数の記憶装置グループのうちの一つに対応し、一つの記憶領域単位に対するアクセス排他制御を行うための制御サブブロック（例えば後述のロックテーブル）を複数個有する。前記コントローラは、同一の記憶領域単位に実際にアクセスし得るホストコンピュータの数であるホスト数、及び／又は、前記複数の記憶装置グループのうち前記排他制御を行う必要のある記憶装置グループの数であるグループ数を把握し、前記把握されたホスト数及び／又はグループ数に基づいて、前記制御ブロック群を構築する。具体的には、例えば、前記コントローラは、前記把握されたホスト数及び／又はグループ数に基づいて、どの記憶装置グループに対応する制御ブロックを用意するかや、どの制御ブロックにどれだけの数の制御サブブロックを用意するかを制御することができる。
【００１２】
上記の把握は、例えば、把握手段により行うことができる。また、構築は、構築手段により行うことができる。前記コントローラは、把握手段と構築手段とにより構成することができる。上記の把握及び構築は、例えば、所定のコンピュータプログラムを或る記憶領域から読込んで実行したプロセッサにより行われても良い（以下の各手段が行う動作についても同様）。
【００１３】
本発明の第一の態様では、前記コントローラは、前記複数のホストコンピュータのうちの少なくとも一つのホストコンピュータ、又は、前記ストレージシステムに接続された別のコンピュータマシンから前記ホスト数及び／又はグループ数の入力を受け付ける制御インターフェースを有することができる。前期コントローラは、該制御インターフェースにより前記ホスト数及び／又は前記グループ数の入力を受け付けることにより、前記ホスト数及び／又はグループ数を把握することができる。
【００１４】
本発明の第二の態様では、前記第一の態様において、前記制御サブブロックのサイズは、その制御サブロックを用いてアクセスの排他制御がされる前記ホスト数が多いほど、大きくなる。前記コントローラは、前記把握されたホスト数と、前記記憶資源における、前記制御ブロック群を記憶するための領域のサイズとに基づいて、該領域に記憶することができる制御サブブロックの数を計算することができる（例えば計算手段）。また、コントローラは、算出された数を、前記ホストコンピュータ及び／又は前記別のコンピュータマシンに通知することができる（例えば通知手段）。
【００１５】
本発明の第三の態様では、前記第一の態様において、前記制御サブブロックのサイズは、その制御サブロックを用いてアクセスの排他制御がされる前記ホスト数が多いほど、大きくなる。前記コントローラは、前記把握されたホスト数と、前記記憶資源における、前記制御ブロック群を記憶するための領域のサイズとに基づいて、該領域に記憶することができる制御サブブロックの第一の数を計算することができる（例えば第一の計算手段）。また、前記コントローラは、前記算出された第一の数と、前記把握されたグループ数とに基づいて、前記排他制御を行う必要のある各記憶装置グループに対応した制御ブロックを構成する制御サブブロックの第二の数を計算することができる（例えば第二の計算手段）。また、前記コントローラは、前記算出された第二の数を、前記ホストコンピュータ及び／又は前記別のコンピュータマシンに通知することができる（例えば通知手段）。
【００１６】
本発明の第四の態様では、前記コントローラは、前記排他制御を行う必要のある記憶装置グループがどれであるかを把握することができる（例えば別の把握手段）。また、前記コントローラは、前記制御ブロック群の構築において、前記把握された各記憶装置グループに対応した制御ブロックを構成する制御サブブロックの数を均等にすることができる。
【００１７】
本発明の第五の態様では、前記コントローラは、前記排他制御を行う必要のある記憶装置グループがどれで、どの記憶装置グループにどれだけの数の制御サブブロックを割り当てるべきかを把握することができる（例えばまた別の把握手段）。前記コントローラは、前記制御ブロック群の構築において、前記把握された各記憶装置グループに対応した制御ブロックを、前記把握された数の制御サブブロックで構成することができる。
【００１８】
本発明の第六の態様では、前記第一の態様において、前記コントローラは、或る記憶装置グループにおける或る記憶領域単位に対するアクセス要求を受けた場合、その記憶装置グループに対応する制御ブロックから、未使用状態の制御サブブロックを探して、探し出された制御サブブロックを使用状態にし、当該アクセス要求の処理が済んだ場合に、該制御サブブロックを未使用状態に戻すことができる（例えばアクセス手段）。前記コントローラは、各制御ブロックにおける未使用状態の制御サブブロックの数であるブロック使用状況を把握し（例えば使用状況把握手段）、把握されたブロック使用状況を前記ホストコンピュータ又は前記別のコンピュータマシンに通知することができる（例えば通知手段）。
【００１９】
ストレージシステムは、制御ブロック群の構成が終了した場合、構築された制御ブロック群の構成と、所定の終了報告とを、前記ホストコンピュータに通知することができる。前記ホストコンピュータは、制御ブロック群の構成と終了報告とを受けた場合、起動処理を実行し、稼動することができる。
【発明の効果】
【００２０】
本発明によれば、制御ブロックを記憶する記憶資源を無駄に消費してしまうことのないようにすることができる。
【発明を実施するための最良の形態】
【００２１】
図１は、本発明の一実施形態に係るストレージシステムを備えたコンピュータシステムのハードウェア構成の概略を示す。なお、以下の説明では、同種の構成要素について、区別して説明する場合には、親番号（例えば１０１）と子符号（例えば、Ａ、Ｂ、Ｃ又はＤ）との組み合わせで区別し、格別区別しない場合には、親番号のみで表すことがある。
【００２２】
本実施形態に係るコンピュータシステムは、例えば、基幹業務用のトランザクションシステムとすることができる。例えば、通信ネットワーク１００に、複数（例えば４台）のホストコンピュータ（以下、単に「ホスト」と言う）１０１Ａ〜１０１Ｄと、一以上（例えば一台）のストレージシステム２００とが接続されている。
【００２３】
複数のホスト１０１Ａ〜１０１Ｄのうちのいずれも、メインフレーム系のコンピュータであっても良いし、オープンシステム系のコンピュータであっても良い。各ホスト１０１は、例えば、パーソナルコンピュータ、サーバマシン或いはワークステーションとすることができる。各ホスト１０１は、例えば１０１Ａを代表的に示す通り、データやコンピュータプログラム等の電子的な情報を記憶することができる記憶資源３４（例えばメモリ及び主記憶装置）や、ホストの動作を制御するＣＰＵ３２や、通信ネットワーク１００に接続される通信ポート２１等のハードウェア資源を備えることができる。
【００２４】
ストレージシステム２００は、例えば、複数のＣＨＡ（チャネルアダプタ）７と、複数のＤＫＡ（ディスクアダプタ）３５と、キャッシュメモリ４１と、共有メモリ３９と、接続部３３と、複数の物理的な記憶装置（例えばハードディスクドライブ）４５と、ＳＶＰ（サービスプロセッサ）３１とを備える。
【００２５】
ＣＨＡ７は、記憶装置４５に対するデータ入出力（書込み及び読み出しといったアクセス）のための処理を行うインターフェース制御基板である。ＣＨＡ７は、例えば、通信ネットワーク１００に接続される通信ポート１７や、ＣＰＵ１３や、メモリ１５や、接続部３３に接続される通信ポート１９等のハードウェア資源を備える。
【００２６】
ＤＫＡ３５は、記憶装置４５との間のデータ授受を行うものである。ＤＫＡ３５は、ＣＰＵやメモリ等を備えた一種のインターフェース制御基板として構成されている。ＤＫＡ３５のハードウェア構成は、ＣＨＡ７と同じにすることができる。
【００２７】
キャッシュメモリ４１は、例えば揮発性又は不揮発性のメモリであり、ホスト１０１Ａ〜１０１Ｄから受信されたデータや、記憶装置４５から読出されたデータを一時的に記憶することができる。
【００２８】
共有メモリ３９は、例えば不揮発性のメモリであり、ホスト１０１との間でやり取りされるデータに関する制御情報（例えば、キャッシュメモリ４１上に確保されたどのキャッシュ領域にどのデータが格納されるべきかを示す情報）等が格納される。なお、図示の例では、キャッシュメモリ４１と共有メモリ３９とは、物理的に分離しているが、一つのメモリであっても良い。その場合、そのメモリ上のメモリ空間が、論理的に、キャッシュメモリ用の空間と共有メモリ用の空間とに分けられても良い。
【００２９】
接続部３３は、ＣＨＡ７、ＤＫＡ３５、キャッシュメモリ４１及び共有メモリ１２０を相互に接続させる第一のサブ接続部（例えば、高速スイッチング動作によってデータ伝送を行う超高速クロスバスイッチ）と、ＳＶＰ３１をＣＨＡ７、ＤＫＡ３５、キャッシュメモリ４１及び共有メモリ１２０と通信可能に接続するための第二のサブ接続部（例えばＬＡＮ（Local Area Network））とを備える。
【００３０】
ＳＶＰ３１は、ＣＨＡ７、ＤＫＡ３５、キャッシュメモリ４１又は共有メモリ３９にアクセスすることができる装置である。具体的には、例えば、ＳＶＰ３１は、保守用の端末であり、管理者が操作する入力装置（例えばキーボードやマウス）や、管理者による操作に従う処理を実行する制御装置（例えばＣＰＵ等が搭載されたマザーボード）や、共有メモリ３９等に設定されている情報が表示される表示装置（例えばディスプレイ画面）を備えることができる。ＳＶＰ３１は、ストレージシステム２００に搭載されていても良いし、ＬＡＮ等の通信ネットワークを介して遠隔に備えられてもよい。また、ＳＶＰ３１の機能が、少なくとも一つのホスト１０１に搭載され、そのホスト１０１が、ＳＶＰ３１として、ストレージシステム２００をコントロールしても良い。
【００３１】
このようなコンピュータシステムでは、以下のような流れで、記憶装置４５に対するデータの入出力を行うことができる。
【００３２】
例えば、データの読出し要求がホスト１０１Ａから発行された場合、ＣＨＡ７が、その読出し要求を受信し、受信した読出し要求をＤＫＡ３５に送信することができる。ＤＫＡ３５は、読出し要求を受信し、その要求に従って、記憶装置３５からデータを読み出し、読み出したデータをキャッシュメモリ４１に書き込むことができる。ＣＨＡ７は、キャッシュメモリ４１に書き込まれたデータを読み出し、読み出したデータを、ホスト１０１Ａに送信することができる。
【００３３】
また、例えば、データの書込み要求がホスト１０１Ａから発行された場合、ＣＨＡ７が、その書込み要求及びデータを受信し、受信した書込み要求をＤＫＡ３５に送信し、且つ、受信したデータをキャッシュメモリ４１に書き込むことができる。ＤＫＡ３５は、書込み要求を受信し、その要求に従って、キャッシュメモリ４１からデータを読み出し、読み出したデータを記憶装置４５に書き込むことができる。
【００３４】
以上が、本実施形態に係るコンピュータシステムについての概要である。以下、図２以降を参照して、本実施形態の主要な部分について説明する。
【００３５】
図２は、本実施形態に係るコンピュータシステムの機能ブロックを示し、特に、ストレージシステム２００の起動中における或る時点でのコンピュータシステムの様子を示す。
【００３６】
各ホスト１０１には、ロック管理部８０１が備えられ、ストレージシステム２００には、ロック構築部８１１及びアクセス制御部８１２が備えられる。ロック管理部８０１及びロック構築部８１１は、ホスト１０１とストレージシステム２００の間で、後述する論理ロック構造体に関する情報を送受する機能を持った制御プログラムとすることができる。アクセス制御部８１２は、論理ロック構造体におけるロックテーブルに基づいてアクセス制御を行うためのコンピュータプログラムである。ロック管理部８０１は、例えば、ホスト１０１の記憶資源３４からＣＰＵ３２に読込まれて実行される。ロック構築部８１１及びアクセス制御部８１２は、例えば、ＣＨＡ７において、メモリ１５からＣＰＵ１３に読込まれて実行される。
【００３７】
ストレージシステム２００には、複数（例えば最大２５６個）のＬＤＥＶ３１１を含んだ一以上の論理コントロールユニット（以下、単に「ＣＵ」と称呼）３０１が備えられる。ＬＤＥＶ３１１は、物理的な記憶装置４５上に設けられる論理的な記憶装置である。各ＣＵ３０１は、各ホスト１０１に、一つのＬＤＥＶグループとして認識され得る。この実施形態では、例えば、ＣＵ３０１Ａは、多数のオンライン用のＬＤＥＶ３１１Ａを有し、ＣＵ３０１Ｂは、少数のオンライン用のＬＤＥＶ３１１Ｂを有し、ＣＵ３０１Ｃは、ＣＵ３０１Ａの各ＬＤＥＶ３１１Ａのコピー先となる多数のオフライン用のＬＤＥＶ３１１Ｃを有する。ＣＵ３０１Ａ〜３０１Ｃのうち、ＣＵ３０１Ａ及び３０１Ｂは、二つ以上のホスト１０１Ａ〜１０１Ｄに認識されるが、ＣＵ３０１Ｃは、どのホスト１０１Ａ〜１０１Ｄにも認識されないものとする（故に、ＬＤＥＶ３１１Ａ及び３１１Ｂは実線で示し、ＬＤＥＶ３１１Ｃは点線で示す）。
【００３８】
ロック構築部８１１は、例えば、ストレージシステム２００の起動中（例えば、ＣＨＡ７の起動中）における或る時点において、論理ロック構造体群４００を構築することができる。具体的には、ロック構築部８１１は、所定の初期設定（例えば、デフォルトの設定）に従がって、複数のＣＵ３０１Ａ〜３０１Ｃにそれぞれ対応した複数の論理ロック構造体４０１Ａ〜４０１Ｃを、各ＣＨＡ７がアクセス可能な記憶資源（例えば共有メモリ３９）上に構築することができる。論理ロック構造体４０１とは、その構造体４０１に対応するＣＵ内のレコードのアクセス排他を制御するためのものである。この時点に構築される各論理ロック構造体４０１は、予め決められた個数（例えば１６０００個）のロックテーブル６００で構成される。ロックテーブル６００は、そのロックテーブル６００を有する論理ロック構造体４０１に対応するＣＵ３０１内のレコードのアクセス排他（以下、これを「論理ロック」と言う場合もある）を制御するためのものである。ロックテーブル６００は、所定のレコードに予め割り付けられているわけではなく、動的に割り付け及び解放される。具体的には、例えば、ロックテーブル６００は、ストレージシステム２００の稼動中において、ホスト１０１からのロック要求に応答して割り付けられ、アクセスが済んだ場合（データの書込み又は読出しが完了した場合）に解放される。アクセス制御部８１２は、各ホスト１０１からの或るレコードに対する論理ロックを、そのレコードを有するＣＵ３０１に対応した論理ロック構造体４０１を使用して制御することができる（論理ロック制御の具体的な流れの一例は、後に図５Ａ及び図５Ｂを参照して詳細に説明する）。
【００３９】
さて、この実施形態では、ストレージシステム２００の起動中の或る時点において、ストレージシステム２００に接続されるホスト１０１の数や、ＣＵ３０１が使用されるか否かに関わらず、各ＣＵ３０１毎に、一律に、所定個数のロックテーブル６００を有した論理ロック構造体４０１が構築される。このまま、論理ロック構造体群４００の後述するような再構築処理が行われることなく、各ホスト１０１及びストレージシステム２００が稼動し、所定の業務が行われるようにすることもできる。
【００４０】
しかし、そうすると、以下の問題点が生じると考えられる。
【００４１】
ストレージシステム２００に、二台以上のホスト１０１に認識されるＬＤＥＶ（例えばオンライン用のＬＤＥＶ）３１１Ａ、３１１Ｂと、二台以上のホスト１０１には認識されないＬＤＥＶ（例えばオフライン用のＬＤＥＶ）３１１Ｃが混在する場合がある。後者のＬＤＥＶ３１１Ｃ内のデータは、二台以上のホスト１０１から更新されるようなことが無い。それにも関わらず、全てのＣＵ３０１に論理ロック構造体４０１を準備すると、使われない論理ロック構造体４０１によって、ストレージシステム２００内の記憶資源が無駄に消費されてしまう。
【００４２】
また、例えば、或るトランザクションシステムにおいて、接続可能なホストの最大数が定められているとする。この場合、その最大数のホストからのアクセスを排他制御することができるように各ロックテーブル６００が構築されることとなる。しかし、実際に接続されているホスト１０１の数が、上記最大数よりも少ない場合には、無駄にサイズの大きいロックテーブル６００が構築されてしまうこととなる。これは、例えば、ロックテーブル６００の個数の増大が要求される場合には、より顕著な問題点となる。
【００４３】
以上のような理由から、ホスト１０１やストレージシステム２００が稼動する前に、以下に説明するような、論理ロック構造体群の再構築処理が行うことが好ましい。
【００４４】
図３は、論理ロック構造体群の再構築処理の説明図である。
【００４５】
或るホスト１０１Ａのロック制御部８０１が、後述するホスト設定コマンド及びホスト設定パラメータを、ロック構築部８１１に送信する。
【００４６】
ロック構築部８１１は、ホスト設定コマンド及びホスト設定パラメータを受信し、そのホスト設定コマンド及びホスト設定パラメータに従がって、論理ロック構造体群を再構築する。その結果、例えば、図示の論理ロック構造体５０１Ａ、５０１Ｂを有する論理ロック構造体群５００となる。具体的には、例えば、ＣＵ３０１Ｃ内のＬＤＥＶ３１１Ｃは、二台以上のホスト１０１からアクセスされることがない、換言すれば、アクセス排他制御を行う必要が無いので、ＣＵ３０１Ｃに対応する論理ロック構造体は削除される。また、ＣＵ３０１Ｂに存在するＬＤＥＶ３１１Ｂの数（別の言い方をすれば、レコードの数）よりも、ＣＵ３０１Ａに存在するＬＤＥＶ３１１Ａの数の方が多いので、ＣＵ３０１Ｂに対応する論理ロック構造体５０１Ｂを構成するロックテーブル７００の数（例えば８０００個）よりも、ＣＵ３０１Ａに対応する論理ロックテーブル５０１Ａを構成するロックテーブル７００の数（例えば６４０００個）の方が多くされる。また、各ロックテーブル７００のサイズは、再構築処理の前に構築されたロックテーブル６００よりも小さくされる。例えば、図４Ａに例示するように、再構築処理前のロックテーブル６００は、ホストの最大数が３２であるとして構築されたものであるが、再構築処理後のロックテーブル７００は、図４Ｂに例示するように、実際に接続されているホストの台数４に基づいて構築されたものである。故に、例えば、再構築処理前の論理ロック構造体４０１のサイズと、再構築処理後の論理ロック構造体５０１のサイズが同じ場合には、図４Ａ及び図４Ｂに示すように、再構築処理後の論理ロック構造体５０１の方が、より多くのロックテーブル７００を備えることができる。
【００４７】
ロック構築部８１１は、再構築後の論理ロック構造体群５００に基づいて、各ＣＵ３０１毎に用意される割当ロックテーブル数６５１及び未使用ロックテーブル数６５３を更新することができる（図３では、ＣＵ３０１Ｂについては、ブロックの中に参照番号を付してある）。ただし、ＣＵ３０１Ｃには、それに対応する論理ロック構造体が用意されないので、割当ロックテーブル数６５１、未使用ロックテーブル数６５３及び後述の最小未使用数６５５は用意されない。割当ロックテーブル数６５１、未使用ロックテーブル数６５３及び最小未使用数６５５は、ストレージシステム２００の記憶資源（例えば共有メモリ３９）に記憶されるデータである。割当ロックテーブル数６５１は、対応するＣＵ３０１に対応した論理ロック構造体５０１を構成するロックテーブルの数を表す。未使用ロックテーブル数６５３は、その論理ロック構造体５０１のうち、未使用状態のロックテーブルの数を表す（従って、どのロックテーブル７００も使用されていない場合（例えば初期の場合）には、割当ロックテーブル数６５１と同じ数となる）。最小未使用数６５５は、ストレージシステム２００の稼動中において、未使用ロックテーブル数６５３の最小値を表す情報である。
【００４８】
ホスト１０１Ａのロック制御部８０１は、ホスト設定コマンド及びホスト設定パラメータに従がって論理ロック構造体群が再構築されたと認識できた場合、再構築後の論理ロック構造体群５００に関する構成（例えば、どのＣＵ３０１に対応する論理ロック構造体には幾つのロックテーブルが存在するか等）を、ＩＰＬ（イニシャル・プログラム・ローダ）ファイル６５０に書き込むことができる。ＩＰＬファイル６５０は、各ホスト１０１の起動の際に、各ホスト１０１のＣＰＵ３２に読込まれるファイルである。各ホスト１０１は、このＩＰＬファイル６５０に書かれている情報に基づいて起動し、それにより、論理ロック構造体群５００に関する構成を認識することができる。ＩＰＬファイル６５０は、例えば、種々の方法で各ホスト１０１に提供することができる。この実施形態では、例えば、ホスト１０１Ａのロック制御部８０１が、図示しないシステム用のＬＤＥＶに、更新後のＩＰＬファイル６５０を書き、他のホスト１０１Ｂ〜１０１Ｄが、そのシステム用のＬＤＥＶからＩＰＬファイル６５０を読込むことができる。
【００４９】
ホスト１０１及びストレージシステム２００の起動が終了し、稼動するようになった場合、以下のようなアクセス排他制御を行うことができる。以下、具体的に説明する。
【００５０】
図５Ａは、ロックテーブル７００の構成例を示す。
【００５１】
ロックテーブル７００は、例えば、全体ステータスと、ロックテーブルＩＤと、ロックサブステータス７０３と、キュー７０２とを有する。全体ステータスは、このロックテーブル７００が使用状態か未使用状態かを表すステータスである。ロックテーブルＩＤは、全体ステータスが使用状態となった場合に付与されるＩＤであり、例えば、このロックテーブル７００がどのレコードに割り付けられたのかを表す。ロックサブステータス７０３は、一つのホスト７０１に対応しており、そのホスト７０１に関するステータス（例えば、未使用、使用中、或いは解放待ち）を表す。接続されるホストの数が少ないほど、ロックサブステータス７０３の数が少なくなり、故に、ロックテーブル７００のサイズが小さくなる。キュー７０２は、ホスト１０１からのロック要求を蓄積するためのものである。
【００５２】
図５Ｂは、アクセス排他制御の流れの一例を示す。
【００５３】
例えば、図５Ｂ−１に示すように、ホスト１０１が、ＣＵ３０１Ａ内の或るＬＤＥＶ３１１Ａにおける或るレコード３１２に対するロック要求を、ストレージシステム２００に発行したとする。ここでは、レコード３１２には、未だどのロックテーブル７００も割り付けられていない。
【００５４】
この場合、アクセス制御部８１２（例えば図３参照）は、全体ステータスが未使用状態を表すロックテーブル７００Ｅを、ＣＵ３０１Ａに対応する論理ロック構造体７０１Ａから探し、探し出されたロックテーブル７００Ｅに、レコード３１２に割り付けられたことを意味するロックテーブルＩＤを付与し、且つ、そのテーブル７００Ｅの全体ステータスを、図５Ｂ−２に例示するように、使用状態に変える。これにより、未使用状態のロックテーブル７００Ｅは、レコード３１２に割り付けられた使用状態のロックテーブル７００Ｕとなる。
【００５５】
この状態になったら、ホスト１０１Ａは、レコード３１２にアクセスすることができる。この状態において、例えば、アクセス制御部８１２は、図５Ｂ−３に示すように、他のホスト１０１Ｂから、同一のレコード３１２に対するロック要求を受けても、ホスト１０１Ｂに対してアクセスを許可せず、解放待ちとする。
【００５６】
その後、図５Ｂ−４に示すように、アクセス制御部８１２は、ホスト１０１Ａのレコード３１２に対するアクセスが済んだ場合には（例えば、ホスト１０１Ａからアンロック要求を受信した場合には）、ホスト１０１に対してはロックテーブル７００Ｕを解放し、解放待ちとなっていたホスト１０１Ｂに対して論理ロック完了を通知し、アクセスを受け付ける。
【００５７】
その後、図５Ｂ−５に示すように、アクセス制御部８１２は、ホスト１０１Ｂのレコード３１２に対するアクセスも済み、且つ、他のどのホスト１０１のサブステータス７０３も未使用になっていれば、当該ロックテーブル７００Ｕを解放することにより、未使用状態のロックテーブル７００Ｅに変える。
【００５８】
以上のような流れで、アクセス排他制御が行われる。なお、このアクセス排他制御において、論理ロック構造体７０１に未使用状態のロックテーブル７００Ｅが全く存在しない場合には、その論理ロック構造体７０１に対応するＣＵ３０１内のレコードに対する論理ロックは、未使用状態のロックテーブル７００Ｅができるまで待ちとなる。そのため、そのレコードに対するアクセスも待ちとなる。
【００５９】
従って、例えば、ＣＵ３０１Ａに対するアクセス頻度の方が、ＣＵ３０１Ｂに対するアクセス頻度よりも多い場合には、図３に示したように、論理ロック構造体７０１Ａを構成するロックテーブル７００の数を、論理ロック構造体７０１Ｂを構成するロックテーブル７００の数よりも多くした方が良い。図２に示したように、初期設定に従って論理ロック構造体群４００が構築された場合、図３に示したように、論理ロック構造体群を再構築した方が良い。
【００６０】
以下、図６を参照して、論理ロック構造体群の再構築処理の流れの一例を説明する。なお、再構築処理は、ＳＶＰ３１にもロック制御部８０１を搭載し、そのロック制御部８０１とストレージシステム２００内のロック構築部８１１との間で行われても良い。しかし、ここでは、ホスト１０１内のロック制御部８０１とストレージシステム２００内のロック構築部８１１との間で再構築処理が行われるものとする。
【００６１】
ホスト１０１とストレージシステム２００の間で、論理ロック構造体群に係る情報を送受するのに用いるコマンドとして、例えば、矢印８２０に示すホスト設定コマンドと、矢印８３０に示すホスト読み出しコマンドとの２種がある。この実施形態では、ロック制御部８０１が、ホスト設定コマンド８２０、ホスト読み出しコマンド８３０の順で、ストレージシステム２００に対してコマンドを発行することにより、再構築処理が行われる。
【００６２】
具体的に言うと、例えば、ストレージシステム２００の起動中に、ロック構築部８１１が、所定の初期設定に従がって、論理ロック構造体群４００を構築する（ステップＳ１００）。
【００６３】
ロック制御部８０１は、任意のタイミングで（例えば、ホスト１０１のユーザから所定の要求を受けたタイミングで）、図７Ａに例示されるような構成のホスト設定コマンド８２０を、ストレージシステム２００に送信する。ホスト設定コマンド８２０には、例えば、オペレーション（ＯＰ）部フィールド１８２２、ＣＵ数フィールド１８２３及びホスト数フィールド１８２４がある。ＯＰ部フィールド１８２２には、ストレージシステム２００に何をしてもらいたいかを表す情報が記述される。当該情報としては、例えば、初期設定に従って構築された論理ロック構造体群４００を要求することを意味する初期割り当て準備、再構築処理の際には全ての論理ロック構造体のロックテーブル数を所定値にすることを意味する固定割り当て準備、再構築処理の際には各論理ロック構造体のロックテーブル数をユーザ任意の値にすることを意味する可変割り当て準備、割当てを実行することの要求を意味する割り当て実行、及び、各論理ロック構造体の最小未使用数を要求する最小値準備がある。ＣＵ数フィールド１８２３には、ストレージシステム２００内に配設されるＣＵ３０１の数を表す情報が記述される。ホスト数フィールド１８２４には、ストレージシステム２００に接続されるホスト１０１の数を表す情報が記述される。
【００６４】
ロック構築部８１１は、ホスト設定コマンド８２０を受信したならば、ホスト数フィールド１８２４に記述されているホスト数に基づいて、ストレージシステム２００の記憶資源（例えば共有メモリ３９）に確保することができるロックテーブル総数n1（論理ロック構造体群に含まれるロックテーブルの数）を計算したり、ＣＵ数フィールド１８２３に記述されているＣＵ数に基づいて、一つの論理ロック構造体のロックテーブル数n2を計算したりすることができる（Ｓ１５０）。ロック構築部８１１は、算出されたn1、n2と、コマンド受領報告８２１とを、ホスト１０１に返送することができる(n1、n2の算出方法の例については後述する)。
【００６５】
ロック制御部８０１は、n1、n2及びコマンド受領報告８２１を受信したならば、n1、n2をホスト１０１のディスプレイ画面に表示することができる。ホスト１０１のオペレータは、表示されたn1、n2に基づいて、図７Ｂに例示の構成を有するホスト設定パラメータ８２２に入力する値を決め、決めた値を入力することができる。ロック制御部８０１は、入力された値を記述したホスト設定パラメータ８２２を、ストレージシステム２００に送信する。ホスト設定パラメータ８２２は、例えば、所定個数（例えば５１６個）のＣＵ割当数フィールドを有している。各ＣＵ割当数フィールドは、所定のＣＵに対応している（例えば、先頭のＣＵ割当数フィールドは、ＣＵ３０１Ａに対応している）。ＣＵ割当数フィールドには、論理ロック構造体を生成するか否かを表す情報か、或いは、論理ロック構造体を構成するロックテーブルの数を表す情報が記述される。このホスト設定パラメータ８２２は、先に送信されたホスト設定コマンド８２０のＯＰ部フィールド１８２２に書かれた情報に依存した情報である。換言すれば、ＯＰ部フィールド１８２２にどんな情報が記述されたかによって、ロック構築部８１１による解釈が異なる。具体的には、例えば、ＯＰ部フィールド１８２２に書かれた情報が「固定割り当て準備」である場合に、１００００という値を示す情報が、ＣＵ割当数フィールドに記述されていた場合、ロック構築部８１１は、予め決められた個数（例えば１６０００個）又は後述の算出されたn2のロックテーブルを有する論理ロック構造体を生成することを要求されていると解釈することができる。一方、例えば、ＯＰ部フィールド１８２２に書かれた情報が「可変割り当て準備」である場合に、１００００という値を示す情報が、ＣＵ割当数フィールドに記述されていた場合、ロック構築部８１１は、１００００個のロックテーブルを有する論理ロック構造体を生成することを要求されていると解釈することができる。
【００６６】
ロック構築部８１１は、ホスト設定パラメータ８２２を受信した場合（それに加えて、割り当て実行が記述された別のホスト設定コマンド８２０を受信した場合）、先に受信したホスト設定コマンド８２０と、受信したホスト設定パラメータ８２２とに基づいて、論理ロック構造体群の再構築処理を行うことができる（Ｓ２００）。具体的には、例えば、ロック構築部８１１は、ホスト設定コマンド８２０及びホスト設定パラメータ８２２の内容に基づいて、指定されたＣＵに、所定の又は指定されたロックテーブル数を有する論理ロック構造体５０１を構築することができる。また、ロック構築部８１１は、指定されたＣＵ毎に、割当ロックテーブル数６５１及び未使用ロックテーブル数６５３等を準備し、割当ロックテーブル数６５１に、そのＣＵ３０１の論理ロック構造体５０１を構成するロックテーブル７００の数を記述し、且つ、未使用ロックテーブル数６５３にも、その数を記述することができる。
【００６７】
ロック制御部８０１は、ホスト読み出しコマンド８３０をストレージシステム２００に発行する。ロック構築部８１１は、ホスト読み出しコマンド８３０を受信したならば、コマンド受領報告８３１をホスト１０１に送信する。
【００６８】
次に、ロック構築部８１１は、図７Ｃに例示する構成のコマンド読み出しデータ８３２を、ホスト１０１に送信する。コマンド読み出しデータ８３２は、再構築処理後の論理ロック構造体群５００に関する構成を表すデータである。コマンド読み出しデータ８３２には、例えば、フラグフィールド１８３２、ＣＵ数フィールド１８３３、ホスト数フィールド１８３４及びエクステントフィールド１８３５がある。フラグフィールド１８３２には、割り当て準備が完了したか或いは未完であるかを表すフラグ（例えば１又は０）が設定される。ＣＵ数フィールド１８３３には、ストレージシステム２００に備えられたＣＵ３０１の数を表す情報が記述される。ホスト数フィールド１８３４には、ストレージシステム２００に接続されているホスト１０１の数を表す情報が記述される。エクステントフィールド１８３５は、所定個数のＣＵ割当数フィールドで構成される。各ＣＵ割当数フィールドは、所定のＣＵに対応している。或るＣＵに対応するＣＵ割当数フィールドには、そのＣＵに対応する論理ロック構造体５０１を構成するロックテーブル７００の数を表す情報が記述される。
【００６９】
ロック制御部８０１は、コマンド読み出しデータ８３２を受信する。ロック制御部８０１は、そのデータ８３２において、フラグフィールド１８３２に、割り当て準備完了を表すフラグが設定されていたならば、相互認識比較処理（換言すれば、ホスト１０１とストレージシステム２００との間での認識確認）を行うことができる（Ｓ３００）。具体的には、例えば、ロック制御部８０１は、先に送信したホスト設定コマンド８２０及びホスト設定パラメータ８２２の内容と、コマンド読み出しデータ８３２の内容とを比較し、互いに一致するか否かを判断することができる。換言すれば、ロック制御部８０１は、自分が要求した、論理ロック構造体群５００に関する構成と、その要求に応じて構築された論理ロック構造体群５００に関する構成とが一致しているか否かを判断することができる。一致していなければ、図６に示す処理を、最初から（例えばホスト設定コマンド８２０の発行から）やり直すことができる。一致していれば、ロック制御部８０１は、コマンド読み出しデータ８３２の内容、換言すれば、再構築された後の論理ロック構造体群５００に関する構成をＩＰＬファイル６５０に書く。ホスト１０１のＣＰＵ３２は、そのＩＰＬファイル６５０を読み込んで、処理する。それにより、ホスト１０１の起動が完了する。
【００７０】
この後、ホスト１０１もストレージシステム２００も稼動中となって、図５Ｂを参照して説明したように、再構築処理後の論理ロック構造体群５００に基づいて、アクセス排他の制御が行われるようになる。
【００７１】
以下、図６に示した処理流れにおける種々の段階での処理を、より詳細に説明する。
【００７２】
例えば、ホスト設定コマンド８２２のＯＰ部フィールド１８２２に書かれた情報が、固定割り当て準備である場合、ホスト設定パラメータ８２２において、各ＣＵ割当数フィールドに記述されている情報は、そのフィールドに対応するＣＵ３０１が必要とするロックテーブル数を示すのではなく、単に、当該ＣＵが論理ロック構造体を必要とするか否かを示す情報となる。
【００７３】
ロック構築部８１１は、ホスト設定コマンド８２０のＣＵ数フィールド１８２３に記述されているＣＵ数と、ホスト設定パラメータ８２２に表されている、論理ロック構造体を必要とするＣＵの数とが一致するか否かを判断する。ロック構築部８１１は、一致していないと判断した場合、ホスト１０１に対し、コマンド完了報告８２３と共に、不当な条件を検出したことを表す情報とを送信することができる。一致したと判断した場合には、ロック構築部８１１は、ホスト設定コマンド８２０及びホスト設定パラメータ８２２の処理を継続することができる。
【００７４】
また、ロック構築部８１１は、Ｓ１００の構築処理では、所定台数（例えば３２台）のホスト１０１を制御可能なロックテーブル６００を構築した。しかし、この固定割り当て準備の場合では、ロック構築部８１１は、ホスト数フィールド１８２４を参照し、例えばホスト数として８が記述されていたならば、８台のホストを制御可能なロックテーブル７００として仮定し、確保可能なロックテーブル数を算出することができる。
【００７５】
制御可能なホスト数が３２から８に減少したことで、ロック構築部８１１は、各ロックテーブル６００から、必要としない２４台のホスト分に関する情報（例えば、２４台分のホストのロックサブステータス）を省くことが可能となり、故に、個々のロックテーブルのサイズが小さくすることができる。
【００７６】
具体的には、例えば、論理ロック構造体群に使用可能な記憶容量をt、１個のロックテーブルにおける、ホスト数に依存しない情報量をf、１台のホストに対し必要な情報量をhとした場合、初期設定の構築処理（Ｓ１００）で確保することができたロックテーブル総数n0は、n0=TRUNC(t/(f+32h))で求めることができる。そして、この固定割り当て準備の場合では、n1=TRUNC(t/(f+8h))の個数を確保することができる。n0とn1の関係は、n0＜n1となる。ホスト数に依存しない情報量fが非常に小さい場合、接続ホスト数が、初期設定の1/N倍となれば、ロックテーブル数は略N倍の個数を確保出来るようになる。
【００７７】
また、ロック構築部８１１は、新たなロックテーブル数n1と、ＣＵ数フィールド１８２３に記述されている値c（例えば、c≦512）とを用いて、各ＣＵ３０１の論理ロック構造体を構成するロックテーブル数n2を算出することができる（例えば、n2=1024×TRUNC(n1/c/1024)）。
【００７８】
ロック制御部８０１は、オペレータから、複数のＣＵ３０１のうちのどのＣＵに対応する論理ロック構造体が必要となるかの指定（例えばＣＵ番号の指定）を受け付ける。また、ロック制御部８０１は、n1やn2の通知を受けた場合、指定されたＣＵに対応するＣＵ割当フィールドに所定値を記入したホスト設定パラメータ８２２を生成し、そのホスト設定パラメータ８２２を、ストレージシステム２００に送信することができる。
【００７９】
ロック構築部８１１は、所定のタイミングで（例えば、n1及びn2の通知の際）、コマンド読み出しデータ８３２を準備することができる。この固定割り当て準備の場合では、例えば、ＣＵ数フィールド１８３３には、ホスト設定コマンド８２０に従って設定されたＣＵの数が記述され、ホスト数フィールド１８３４には、ホスト設定コマンド８２０で記述されていたホスト数が記述される。
【００８０】
ロック制御部８０１は、受信したコマンド読み出しデータ８３２において、割り当て準備完了を表すフラグが設定されていた場合、ＯＰ部フィールド１８２２に割り当て実行を記述した別のホスト設定コマンド８２０を発行することができる。その際、ロック制御部８０１は、ＣＵ数フィールド１８２３及びホスト数フィールド１８２４に、それぞれ所定値（例えば、0(0x0000)、0(0x00)）を設定することができる。
【００８１】
ロック構築部８１１は、割り当て準備が記述されたホスト設定コマンドをロック制御部８０１から受信した場合、割り当て（すなわち、固定割り当て準備に従う再構築処理）を実行することができる。ロック構築部８１１は、コマンド読み出しデータ８３２に、割り当て結果を設定し、そのコマンド読み出しデータ８３２を、送信することができる。そのデータ８３２に、割り当て準備完了を表すフラグが設定されていた場合、論理ロック構造体の配設が完了となる。
【００８２】
以上が、ホスト設定コマンド８２２のＯＰ部フィールド１８２２に書かれた情報が、固定割り当て準備である場合についての説明である。
【００８３】
なお、ホスト設定コマンド８２２のＯＰ部フィールド１８２２に書かれた情報が、可変割り当て準備の場合には、固定割り当て準備の場合と、例えば以下の点で異なる。
【００８４】
各ＣＵ３０１が論理ロック構造体を必要とするか否かは、ホスト設定パラメータ８２２において、そのＣＵ３０１に対応する論理ロック構造体を構成するロックテーブル数で表すことができる。すなわち、例えば、ロック制御部８０１は、論理ロック構造体が必要なＣＵ（例えばＣＵ番号）の指定と、指定されたＣＵについて、必要とするロックテーブル数の指定とを受け付けることができる。それらが指定された場合、ロック制御部８０１は、論理ロック構造体が不要なＣＵについては、そのＣＵに対応したＣＵ割当数フィールドに、0(0x00)と設定し、それが必要なＣＵについては、そのＣＵに対応したＣＵ割当数フィールドに、指定されたロックテーブル数を設定することができる。
【００８５】
また、例えば、割り当て実行において、ストレージシステム２００に構築される論理ロック構造体のロックテーブル数は、ホスト設定パラメータ８２２に設定された数とすることができる。すなわち、ホスト設定パラメータ８２２において、各ＣＵのアクセス頻度等に応じて、ロックテーブル数を調節することができる。
【００８６】
また、ロック構築部８１１は、例えば、ストレージシステム２００で確保可能なロックテーブル総数（論理ロック構造体群のロックテーブル数）n1から、指定された或るＣＵ割当数（例えばＣＵ０の割当数）が確保可能か否かを判定することができる。確保可能であると判定された場合には、コマンド読み出しデータ８３２に、ＣＵ０のＣＵ割当数を設定し、n1から本値を減算し、減算後の値を所定記憶域（例えば所定のワーク領域）に記憶させることができる。次に、ロック構築部８１１は、指定されたＣＵ１の割当数が確保可能かを判定することができる。確保可能であると判定された場合には、ロック構築部８１１は、読み出しコマンドデータ８２２に、ＣＵ１の割当数を設定し、上記減算後の値から本値を更に減算し、これを記憶させることができる。ロック構築部８１１は、このような処理を繰り返すことができる。その際、指定された個数のロックテーブルの確保ができないと判定された場合には、ロック構築部８１１は、確保できないＣＵの割当数としてゼロ（例えば0(0x00)）を設定し、フラグフィールド１８３２に割り当て準備完了を設定して、コマンド読み出しデータ８３２を確定することができる。
【００８７】
以上が、ホスト設定コマンド８２２のＯＰ部フィールド１８２２に書かれた情報が、可変割り当て準備である場合についての説明である。
【００８８】
ホスト設定コマンド８２２のＯＰ部フィールド１８２２に書かれた情報が、初期割り当て準備である場合、ロック構築部８１１は、再構築処理された論理ロック構造体群５００を、初期設定に基づいて構築されるべき論理ロック構造体群４００に戻すことができる。
【００８９】
また、ホスト１０１及びストレージシステム２００の稼動中では、上記の通り、アクセス排他制御が行われる。その際、ロックテーブル７００は、動的に、未使用状態にされたり、使用状態にされたりする。この場合、例えば、アクセス制御部８１２が、或るＣＵ３０１におけるロックテーブルを使用状態にしたり解放したりする都度に、そのＣＵ３０１に対応した未使用ロックテーブル数６５３が表す数値を、減らしたり増やしたりすることができる。
【００９０】
また、例えば、アクセス制御部８１２は、未使用ロックテーブル数６５３が減少したタイミングで、最小未使用数（初期値は、例えば、初期の未使用ロックテーブル数６５３の値と同じ）６５５の値と、更新後の未使用ロックテーブル数６５３の値とを比較することができる。この場合、更新後の未使用ロックテーブル数６５３の値がより小さい場合、アクセス制御部８１２は、最小未使用数６５５に、更新後の未使用ロックテーブル数６５３の値を書き込むことができる。これにより、最小未使用数６５５には、未使用ロックテーブル数６５３の最小値を記録することができる。なお、この最小未使用数６５５は、例えば、ホスト１０１又はＳＶＰ３１からストレージシステム２００に、ＯＰ部フィールド１８２２に最小値準備が書かれたホスト設定コマンド８２０が送信された場合に、ストレージシステム２００から、各ＣＵ３０１毎の最小未使用数６５５がホスト１０１又はＳＶＰ３１に返送される。
【００９１】
また、ストレージシステム２００では、未使用ロックテーブル数６５３の監視が行われる。以下、図８を参照して、未使用ロックテーブル数６５３の監視処理について説明する。
【００９２】
例えば、ＳＶＰ３１（及び／又はホスト１０１）に、モニタ制御部９５１が備えられる。モニタ制御部９５１は、例えば、ＳＶＰ３１内のＣＰＵに読み込まれて実行されるコンピュータプログラムである。
【００９３】
また、ストレージシステム２００には、各ＣＵ３０１の論理ロック構造体５０１における未使用ロックテーブル数の監視を行うことができるモニタ実行部９６１が備えられる。モニタ実行部９６１は、例えば、ＣＨＡ７のＣＰＵ１３に読み込まれて実行されるコンピュータプログラムである。
【００９４】
例えば、ストレージシステム２００及びホスト１０１が稼動した場合、ＳＶＰ３１のオペレータ（例えば保守員）からの指示により、ＳＶＰ３１内で、モニタ制御部９５１が起動する。モニタ制御部９５１は、例えば、起動が完了した場合に、モニタ起動指示９７０、具体的は、例えば、ＯＰ部フィールド１８２２にモニタ準備が書かれたホスト設定コマンド９７０を、ストレージシステム２００に送信することができる。
【００９５】
ストレージシステム２００のモニタ実行部９６１が、該指示９７０を受信したならば、ＳＶＰ３１に、受領報告９７１を送信する。ロック実行部９６１は、各ＣＵ３０１毎の未使用ロックテーブル数６５３を読み出し、読み出された未使用ロックテーブル数６５３を、矢印９７２で示すように、ＳＶＰ３１に送信する。その後、以下の（Ａ）及び（Ｂ）の処理が繰り返される。
【００９６】
（Ａ）モニタ制御部９５１は、未使用ロックテーブル数６５３を受信した場合、時計９５２から、時刻に係る情報を取得し、その時刻と、未使用ロックテーブル数６５３とを、セットにして、モニタ情報記憶域９５３に書き込むことができる。モニタ制御部９５１は、その後、ストレージシステム２００に受領報告９７３を送信することができる。
【００９７】
（Ｂ）モニタ実行部９６１は、受領報告９７３を受信した場合、クロックカウンタ９６２を読み出し、読み出されたカウント値を所定記憶域に記憶させて、一旦、終了することができる。その後、ストレージシステム２００では、モニタ実行部９６１が周期的に起動される。モニタ実行部９６１は、起動されると、クロックカウンタ９６２のカウント値を読み出し、記憶していたカウンタ値との差分が、一定時刻、例えば１０分を超過する差分に相当するか否かを判定する。カウンタ値の差分が、一定時刻に満たない場合、モニタ実行部９６１は、再度休眠するが、そうではない場合、各ＣＵ３０１毎の未使用ロックテーブル６５３を読み出し、読み出された未使用ロックテーブル数６５３を、ＳＶＰ３１に送信する。
【００９８】
ＳＶＰ３１は、モニタ情報記憶域９５３に記録された複数のセット（時刻と各ＣＵ毎の未使用ロックテーブル数６５３とのセット）の一覧を、保守員に対して表示することができる。保守員は、その表示された情報から、現行の論理ロック構造体の状態を認識し、論理ロック構造体群の構成をどのように改良したら良いか（具体的には、ホスト１０１の起動の際（ＩＰＬ時）に送信するホスト設定コマンド８２０及びパラメータ８２２の内容をどのようにしたら良いか）を判断することができる。
【００９９】
また、モニタ情報記憶域９５３には、ＳＶＰ３１に返送された各ＣＵ毎の最小未使用数６５５が記憶され、上記セットの一覧と共に、或いは、別々に、保守員に対して表示されても良い。保守員は、その表示された各ＣＵ毎の最小未使用数６５５から、論理ロック構造体群の構成をどのように改良したら良いかを判断しても良い。
【０１００】
また、ＳＶＰ３１は、各ＣＵ毎の割当ロックテーブル数６５１を取得し、ＣＵ番号と割当ロックテーブル数６５１が表す数値（つまり、そのＣＵ番号のＣＵに対応する論理ロック構造体を構成するロックテーブルの数）とを一覧で表示しても良い。保守員は、その表示された一覧と、上記複数のセットの一覧と、各ＣＵ毎の最小未使用数６５５とに基づいて、論理ロック構造体群の構成をどのように改良したら良いかを判断することができる。
【０１０１】
以上が、本実施形態についての説明である。
【０１０２】
上述した実施形態によれば、ホスト１０１又はＳＶＰ３１に、論理ロック構造体群の構成を変えることの要求を発行する制御プログラムとしてロック制御部８０１が搭載され、ストレージシステム２００に、その要求を解析しその要求に従って論理ロック構造体群の構成を変更する制御プログラムとしてロック構築部８１１が搭載される。ロック制御部８０１は、ホスト１０１又はＳＶＰ３１のオペレータから、ホスト設定コマンド８２０の各フィールド１８２２、１８２３及び１８２４や、ホスト設定パラメータ８２２に記述する種々の情報の入力を受け付ける。ロック制御部８０１は、入力された情報が記述されたホスト設定コマンド８２０やホスト設定パラメータ８２２を、ストレージシステム２００に送信する。ロック構築部８１１は、ホスト設定コマンド８２０及びホスト設定パラメータ８２２を受信し、そのコマンド８２０及びパラメータ８２２の内容に従がって、どのＣＵに、どれだけの数のロックテーブルで構成される論理ロック構造体を構築するかを制御することができる。これにより、全く使用されることのない論理ロック構造体が存在することをなくせるので、有限の記憶資源を有効に利用することができる。
【０１０３】
また、上述した実施形態によれば、ストレージシステム２００の稼動中における各ＣＵ毎の未使用ロックテーブル数６５３の時間的遷移が、ＳＶＰ３１で取得される。また、各ＣＵ毎の未使用ロックテーブル数６５３の最小値６５５や、現時点の論理ロック構造体群の構成も、ＳＶＰ３１で取得される。ＳＶＰ３１のディスプレイ画面には、それら取得された種々の情報が表示される。保守員は、表示された種々の情報に基づいて、論理ロック構造体群の構成をどのように改良したら良いかを判断することができる。
【０１０４】
また、上述した実施形態によれば、ＣＵに存在する全てのレコードに予めロックテーブルが割り付けられているのではなく、ＣＵに存在するレコードの数よりも少ない数のロックテーブルで論理ロック構造体が構成され、各ロックテーブルは、動的に、レコードに対して割り付けられたり、解放されたりする。このため、論理ロック構造体のサイズを抑えることができる。
【０１０５】
また、上述した実施形態によれば、固定割り当て準備の場合、例えば、ストレージシステム２００に備えられるＣＵの数よりも少ない数のＣＵが、論理ロック構造体を必要とするＣＵとして指定された場合、初期割り当て準備と比べて、たとえホスト数が同じであったとしても、一つの論理ロック構造体を構成するロックテーブル数を多くすることができる。また、可変割り当て準備の場合、例えばＣＵのサイズやＣＵに対するアクセス頻度等に基づいて、各論理ロック構造体のロックテーブル数を調節することができる。
【０１０６】
以上、本発明の好適な一実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【０１０７】
例えば、ロック制御部８０１は、ホスト１０１及びストレージシステム２００の稼動中であっても、再構築処理の指示（例えば、ホスト設定コマンド８２０やホスト設定パラメータ８２２に記述する情報の入力）を、ホスト１０１又はＳＶＰ３１のオペレータから受け付けることができる。その場合、ロック制御部８０１は、ホスト１０１及びストレージシステム２００が既に稼動中のため、今回入力された情報に基づく再構築処理は次回のホスト１０１及びストレージシステム２００の起動時に行われること、或いは、すぐに再構築処理を行って欲しい場合にはホスト１０１及びストレージシステム２００を再起動することを、ホスト１０１又はＳＶＰ３１のディスプレイ画面に表示することにより、オペレータに通知することができる。
【０１０８】
また、例えば、ストレージシステム２００には、直前回に構築した論理ロック構造体群の構成（例えば、どのＣＵにどんな論理ロック構造体が構築されたか）が記憶されても良い。この場合、ロック構築部８１１は、ストレージシステム２００の起動の際、その直前回の構成に基づいて、論理ロック構造体群を構築しても良い。
【０１０９】
また、例えば、ＣＵ毎に、アクセスし得るホストの数が異なっていても良い。この場合、論理ロック構造体のロックテーブルのサイズは、ＣＵ別に異なっていても良い。
【図面の簡単な説明】
【０１１０】
【図１】本発明の一実施形態に係るストレージシステムを備えたコンピュータシステムのハードウェア構成の概略を示す。
【図２】図２は、本実施形態に係るコンピュータシステムの機能ブロックを示し、特に、ストレージシステム２００の起動中における或る時点でのコンピュータシステムの様子を示す。
【図３】図３は、論理ロック構造体群の再構築処理の説明図である。
【図４】図４Ａは、再構築処理前の或る論理ロック構造体４０１及びロックテーブル６００の構成例を示す。図４Ｂは、再構築処理後の或る論理ロック構造体５０１及びロックテーブル７００の構成例を示す。
【図５】図５Ａは、ロックテーブル７００の構成例を示す。図５Ｂは、アクセス排他制御の流れの一例を示す。
【図６】図６は、論理ロック構造体群の再構築処理の流れの一例を示す。
【図７】図７Ａは、ホスト設定コマンド８２０の構成例を示す。図７Ｂは、ホスト設定パラメータ８２２の構成例を示す。図７Ｃは、コマンド読出しデータ８３２の構成例を示す。
【図８】図８は、未使用ロックテーブル数６５３の監視処理の一例の説明図である。
【符号の説明】
【０１１１】
１０１Ａ〜１０１Ｄ…ホストコンピュータ  ７…ＣＨＡ  ３１…ＳＶＰ  ３５…ＤＫＡ  ２００…ストレージシステム  ３０１Ａ〜３０１Ｃ…ＣＵ  ４００、５００…論理ロック構造体群  ４０１Ａ〜４０１Ｃ、５０１Ａ〜５０１Ｂ…論理ロック構造体  ６００、７００…ロックテーブル  ６５０…ＩＰＬファイル  ８０１…ロック制御部  ８１１…ロック構築部
【図１】
2007047863.tif 000003
【図２】
2007047863.tif 000004
【図３】
2007047863.tif 000005
【図４】
2007047863.tif 000006
【図５】
2007047863.tif 000007
【図６】
2007047863.tif 000008
【図７】
2007047863.tif 000009
【図８】
2007047863.tif 000010