(57)【特許請求の範囲】
【請求項１】
複数の計算機と、一又は複数の記憶装置と、前記複数の計算機及び前記一又は複数の記憶装置と接続される中継装置とを有する計算機システムであって、
第一の計算機が前記一又は複数の記憶装置内の第一の記憶領域への排他的なアクセスを要求する第一のアクセス要求を送信し、
前記中継装置が、前記第一のアクセス要求に基づいて前記第一の記憶領域を排他的なアクセス領域に指定し、
前記中継装置は、第二の計算機から、前記第一の記憶領域を含み、かつ、前記第一の記憶領域より広い第二の記憶領域へのアクセスを要求する、第二のアクセス要求を受信した場合に、前記指定した排他的なアクセス領域を、前記第一の記憶領域から前記第二の記憶領域に拡張し、また、前記第二の計算機に前記第二の記憶領域への前記第二のアクセス要求を拒絶し、
前記第一の計算機が、前記第一のアクセス要求に関する前記排他的なアクセス領域の指定の解除を要求する解除要求を送信し、
前記中継装置が前記解除要求に基づいて、前記拡張した排他的なアクセス領域の指定を解除することを特徴とする計算機システム。
【請求項２】
複数の計算機及び一又は複数の記憶装置と接続される中継装置であって、
前記複数の計算機と接続するための計算機側ポートと、
前記一又は複数の記憶装置と接続するための記憶装置側ポートと、
プロセッサと、
メモリとを有し、
前記計算機側ポートを介して、中継装置が、第一の計算機から前記一又は複数の記憶装置内の第一の記憶領域への排他的なアクセスを要求する、第一のアクセス要求を受信した場合に、前記プロセッサは前記第一の記憶領域が排他的なアクセス領域であることを示す第一の情報を前記メモリに格納し、
前記計算機側ポートを介して、中継装置が、第二の計算機から前記第一の記憶領域を含み、かつ、前記第一の記憶領域より広い第二の記憶領域へのアクセスを要求する第二のアクセス要求を受信した場合に、前記プロセッサは、前記第二の記憶領域が排他的なアクセス領域であることを示す第二の情報を前記メモリに格納し、かつ、前記第一の情報に基づいて、前記第二の計算機にアクセス拒否応答を送信するよう制御し、
前記計算機側ポートを介して、中継装置が、前記第一の計算機から排他的なアクセス領域の開放を要求する解除要求を受信した場合に、前記プロセッサは前記メモリから前記第一の情報および前記第二の情報を消去するよう制御することを特徴とする中継装置。
【請求項３】
請求項２記載の中継装置において、
前記計算機側ポートを介して、中継装置が、前記第一の計算機から排他的なアクセス領域の開放を要求する解除要求を受信する前に、第三の計算機から前記第二の記憶領域へのアクセスを要求する第三のアクセス要求を受信した場合に、  前記プロセッサは、前記第二の情報に基づいて、前記第三の計算機にアクセス拒否応答を送信するよう制御することを特徴とする中継装置。
【請求項４】
請求項２記載の中継装置において、
前記計算機側ポートを介して、中継装置が、第一の計算機から前記一又は複数の記憶装置上の記憶領域からのデータの読み出しを要求する、アクセス要求を受信した場合に、前記プロセッサは、前記第一の計算機が前記記憶領域にアクセスしたことを示す第三の情報を前記メモリに格納し、
前記計算機側ポートを介して、中継装置が、第二の計算機から前記記憶領域へのデータの書き込みを要求するアクセス要求を受信した場合に、前記プロセッサは、前記第三の情報に基づいて、前記第一の計算機が有するキャッシュメモリに格納されているデータを使用しないよう通知するための無効化メッセージを、該第一の計算機に送信することを特徴とする中継装置。
【請求項５】
複数の計算機と、一又は複数の記憶装置とに接続される中継装置が、該複数の計算機各々から該一又は複数の記憶装置内の記憶領域へのアクセスを制御するアクセス制御方法であって、
第一の計算機から、前記一又は複数の記憶装置内の第一の記憶領域に対する排他的なアクセスを要求する第一のアクセス要求を受信するステップと、
前記第一の記憶領域を排他的なアクセス領域に指定するステップと、
第二の計算機から、第二の記憶領域に対するアクセスを要求する第二のアクセス要求を受信するステップと、
前記第二の記憶領域が、前記第一の記憶領域を含み、かつ、前記第一の記憶領域より広い記憶領域である場合に、前記第二の記憶領域を排他的なアクセス領域に指定するステップと、
前記第二の計算機に、前記第二のアクセス要求に対する応答として、アクセス拒否応答を送信するステップと、
前記第一の計算機から排他的なアクセス領域の指定の解除を要求する解除要求を受信するステップと、および
前記解除要求に基づいて、前記第二の記憶領域に対する排他的なアクセス領域の指定を解除するステップとを有することを特徴とするアクセス制御方法。
【請求項６】
請求項５記載のアクセス制御方法において、
更に第三の計算機から前記第二の記憶領域に含まれる記憶領域へのアクセスを要求する第三のアクセス要求を受信するステップと、
前記第三の計算機に、第三のアクセス要求の応答として、アクセス拒否応答を送信するステップを有することを特徴とするアクセス制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、各々独立に演算処理を実行する複数の計算機と、複数の計算機からアクセスされる共有データが格納された外部記憶装置と、複数の計算機各々から外部記憶装置に格納されているデータへのアクセス要求を受信して、アクセス要求を外部記憶装置に中継する中継装置を有する計算機システムに関する。
【０００２】
【従来の技術】
計算機で利用されるデータの量の増加に伴い、計算機の外部にネットワークを介して複数の記憶装置を接続させる技術が利用されている。この技術によれば、ネットワークに接続された複数の計算機間でネットワークに接続される記憶装置に格納されているデータを共有して利用することができる。複数の計算機間で記憶装置に格納されているデータを共有する場合、ある計算機がデータにアクセスしている間は他の計算機からのそのデータに対するアクセスを制限する排他制御等の技術により、データの一貫性を保障する必要がある。排他制御を可能にする技術の１つとして非特許文献１に記載されているSCSIプロトコルのReserve/Releaseコマンドを用いた排他制御がある。この技術では論理ブロックアドレス単位での排他制御が可能である。
【０００３】
【非特許文献１】
“スカジ-３  プライマリコマンド（SCSI-3 Primary Commands）”、[online]、1997年3月28日、アメリカンナショナルスタンダードインスティテュート（American National Standards Institute）、p.70-72 p.88-93、[検索日2002年9月20日]、インターネット<URL:ftp://ftp.t10.org/t10/drafts/spc/spc-r11a.pdf>
【０００４】
【発明が解決しようとする課題】
排他制御は、記憶装置によって実行されている。複数の計算機間で共有されるデータ（以下、共有データと呼ぶ。）が格納されている記憶装置の記憶領域（以下、共有領域と呼ぶ。）へ排他的にアクセスする権利（以下排他アクセス権、と呼ぶ）を取得している計算機が存在する場合、他の計算機が排他アクセス権の対象となっている共有領域（以下、排他アクセス領域と呼ぶ。）に対してアクセス要求を発行すると、このアクセス要求は拒否される。この際、記憶装置から計算機に対してアクセス拒否応答が送信される。アクセス拒否応答を受信した計算機がアクセス要求を再発行すると、アクセス拒否応答とアクセス要求とが記憶装置と計算機の間で頻繁に発生し、記憶装置が接続されるネットワークの帯域が消費され、ネットワーク性能が低下する。この結果、排他アクセス権を取得している計算機と記憶装置間のネットワークの性能が低下するだけでなく、排他アクセス領域以外をアクセスする他の計算機と記憶装置間のネットワークの性能も低下する。
【０００５】
また非特許文献１に記載されている排他制御はSCSIプロトコルの必須機能に指定されていない。従って、記憶装置の中には排他制御機能を実装していない記憶装置も存在し、計算機システムにおいて排他制御を実行できない場合がある。
【０００６】
更に、複数の記憶装置がネットワークに接続された計算機システムでは、排他制御機能を有する記憶装置と、有さない記憶装置とが計算機システム内に混在する可能性がある。この場合、計算機システムにおいて排他制御を実行するためには、排他制御機能を有する記憶装置を選別する必要があるが、選別は困難である。
【０００７】
計算機に対し仮想的な記憶領域（以下、仮想ボリュームと呼ぶ）を提供する仮想化機能を持った計算機システムでは、記憶装置の記憶領域が仮想化されるため、記憶装置や記憶領域が有する特徴が隠蔽される。従って、排他制御機能を備えた記憶装置の記憶領域のみから仮想ボリュームを構成し、これを計算機に提供するのは困難である。
【０００８】
本発明の目的は、排他制御によるネットワーク性能の低下を防止し、記憶装置が排他制御機能を有しているか否かに関わらず計算機が記憶領域へ排他的にアクセスすることができる計算機システム、排他制御方法を提供することである。
【０００９】
【課題を解決するための手段】
本発明では、排他制御機能を記憶装置以外の装置で実現する。具体的には、通信路を介して複数の計算機および記憶装置と接続される中継装置に、排他制御を実行させる。このために、中継装置は記憶装置上の記憶領域が排他アクセス領域であるか否かを示す情報を有しており、この情報に基づいて中継装置は、計算機から受け付けた記憶領域へのアクセス要求が排他アクセス領域へのアクセス要求か否かを判断する。そして、排他アクセス領域へのアクセス要求である場合には、計算機に対してアクセス拒否応答を送信する。
【００１０】
【発明の実施の形態】
図面を参照しながら本発明の実施形態を説明する。尚、これにより本発明が限定されるものではない。図１は本発明における、計算機システムの一例を示す。計算機システムは、複数の計算機１０００、一又は複数の記憶装置１８００、複数の計算機１０００及び一又は複数の記憶装置１８００と各々と通信路１１１０及び通信路１１３０を介して接続される中継装置１１００、及び中継装置１１００と通信路を介して接続されるリモート操作用の端末装置１９００を有する。
【００１１】
中継装置１１００は計算機と接続するためのポート１１１０、記憶装置と接続するためのポート１１３０、ポート１１１０に接続されるI/O処理装置１２００、ポート１１３０に接続されるＩ/Ｏ処理装置１４００、中継装置１１００を制御する制御装置１６００、I/O処理装置間の経路切替えを行う切替え装置１７００を有する。
【００１２】
Ｉ/Ｏ処理装置１２００及び１４００は、ポート１１１０又はポート１１３０と接続されポートから受信するデータやポートから送信するデータを一時的に格納するポートバッファ１２１０、Ｉ／Ｏ処理装置１２００を制御するＩ/Ｏプロセッサ１２２０、Ｉ/Ｏ処理装置によって受信された要求が排他制御に関する要求か否かを判定する排他制御部１２３０、後述する仮想情報テーブル１２４７や排他情報テーブル１２４５を格納するメモリであるＩ/Ｏ情報記憶部１２４０、Ｉ/Ｏ処理装置によって受信されたデータを一時的に格納するデータ一時保存用メモリ１２７０、制御装置１６００と通信するための通信Ｉ/Ｆ部１２５０、経路切り替え装置１７００と接続するための経路選択部１２６０、及び計算機から受信したアクセス要求を、仮想化処理が必要な記憶領域へのアクセス要求と仮想化処理が不要な記憶領域へのアクセス要求とに分ける振り分け部１２８０とを有し、これらが内部バス等（図示せず）の通信路によって相互に接続された構成を有している。尚、本実施例では振り分け部１２８０及び排他判定部１２３０はハードウェアによって実現される例を示したが、Ｉ/Ｏ情報記憶部１２４０に記憶されているプログラムをＩ/Ｏプロセッサ１２２０が実行することによって振り分け部１２８０及び判定部１２３０が実現される構成であっても良い。
【００１３】
制御装置１６００は、後述する詳細排他情報１６１２やアクセス履歴テーブル１６１４や全仮想構成情報テーブル１６１６を格納するメモリである制御情報記憶部１６１０と、制御装置１６００を制御する制御プロセッサ１６２０と、Ｉ/Ｏ処理装置１２００、１４００と接続するための通信Ｉ/Ｆ部１６３０とを有し、これらが内部バス等（図示せず）の内部通信路で相互に接続された構成を有している。
【００１４】
経路切替え装置１７００は、スイッチ等で構成される。
【００１５】
計算機１０００は、プロセッサ（図示せず）、主記憶装置（図示せず）、及び通信路１１１５を介して送受信されるデータを一時的に格納するためのキャッシュメモリ１００５を有し、これらが内部バス等（図示せず）の内部通信路で相互に接続された構成を有している。
【００１６】
１．中継装置における仮想化の設定方法
まず図１及び図１１を参照しながら、中継装置１１００における仮想化の設定方法を説明する。中継装置における仮想化の設定とは、仮想化処理を行うために事前に行う仮想ボリュームの構成の設定を意味する。また、仮想化処理とは、指定された容量・及び機能を有する仮想ボリュームを指定された数分、計算機に提供するための処理を意味する。
【００１７】
仮想化の設定は、２つの処理工程からなる。記憶装置の管理者が中継装置に対し端末装置１９００を介して設定内容を登録する工程と、設定内容を有効にする工程である。
【００１８】
設定内容を登録する工程では、まず管理者から端末装置１９００に入力される指示に従って、仮想ボリュームの容量、仮想ボリュームと記憶装置内の実際の記憶領域（以下、実ボリュームと呼ぶ）との対応関係、及び仮想ボリュームが有する機能が図１１に示す全仮想構成情報テーブル１６１６に登録される。次に、端末装置１９００に入力される指示に従って、仮想ボリュームに仮想的な入出力ポート（以下、仮想ポートとよぶ）が割り当てられ、割り当てられた入出力ポートの識別情報が全仮想構成情報テーブル１６１６に登録される。ここで全仮想構成情報テーブル１６１６は３つの情報部で構成される。図１１に示す仮想ポート部２３１０、仮想ＬＵＮ部２３２０、及び実記憶装置情報部２３３０である。仮想ポート部は仮想ポートのポートアドレスと仮想ＬＵＮ部へのアドレスなどを保持する。仮想ＬＵＮ部では仮想ＬＵＮの容量、機能情報、仮想テーブル情報といったヘッダ情報、及び特定の論理ブロックアドレス（ＬＢＡ）毎の実記憶装置情報部２３３０へのアドレスを保持する。仮想テーブル情報には当該仮想ＬＵＮ部をローカルに持っているＩ/Ｏ処理装置をビットマップ情報として保持する。実記憶装置情報部は実記憶装置のアクセス先記述子（実ポートアドレス、ＬＵＮ番号により構成）、機能、および特性情報などを保持する。
【００１９】
次に中継装置は、仮想ボリュームを構成する実ボリュームが存在する記憶装置の機能及び特性を調査し、記憶装置の属性として調査結果を全仮想構成情報テーブル１６１６に登録する。尚、記憶装置の機能及び特性は、管理者から端末装置に入力される情報に基づいて、全仮想構成情報テーブル１６１６に登録されるようにしても良い。ここで、記憶装置の機能には例えば記憶装置の排他制御機能の有無などがあり、記憶装置の特性には記憶装置内の実ボリュームの容量などがある。次に中継装置は、計算機から仮想ポートへのアクセスを可能にするため、仮想ポートに対する仮想的なアドレスの割り当てを行い、また計算機から仮想ポートに割り当てられた仮想ボリュームへのアクセスを可能にするため、仮想ボリュームに対して仮想的な論理ユニット番号（以下、仮想LUNと呼ぶ）の割り当てを行って、仮想ポートの仮想的なアドレス及び仮想ＬＵＮを全仮想構成情報テーブル１６１６に登録する。
【００２０】
計算機システムの管理者が、端末装置１９００を介して全仮想構成情報テーブル１６１６に登録されている任意の仮想ポートごとに、登録内容の有効化を指示すると、計算機では仮想ボリュームの存在を確認することが可能となる。
【００２１】
２．中継装置の動作
次に図１を参照しながら、中継装置が記憶装置内の記憶領域へのアクセス要求を計算機１０００から受信した場合に、中継装置１１００が実行する処理の概要を説明する。
【００２２】
計算機１０００は記憶装置１８００に格納された共有データへアクセスするため、アクセス要求フレームを中継装置１１００に発行する。中継装置１１００は、計算機から送信されたアクセス要求フレームをポート１１１０を介して受信し、I/O処理装置１２００内のポートバッファ１２１０にアクセス要求フレームを格納する。
【００２３】
振り分け部１２８０はポートバッファ１２１０にアクセス要求フレームが格納されたことを検知し、アクセス要求フレーム内のヘッダを取り出す。ヘッダには、アクセス要求フレーム発行元のID、アクセス先のID（仮想ポートのアドレス）、フレームの種類を示す情報、シーケンシャル番号等が含まれる。ここで、フレームの種類としては、記憶装置の操作記述ブロックを有するフレーム、記憶装置からの応答フレーム、記憶装置からの書き込み許可応答フレーム等がある。振り分け部１２８０では抽出したヘッダのフレームの種類を示す情報を調査することにより、フレームの解析を行う。解析の結果、アクセス要求フレームが操作記述ブロックを有することが検出されると、振り分け部１２８０は操作記述ブロック及び仮想ＬＵＮを取り出す。ここで、操作記述ブロックとは、記憶装置を操作するコマンドのことであり、記憶装置からデータを読み出すための読み出し系コマンド、記憶装置へデータを書き込むための書き込み系コマンド、記憶装置の構成を参照するための状態構成参照系コマンド、及び排他制御を要求するための排他制御系コマンドがある。排他制御系コマンドには、排他アクセス領域設定要求と，排他アクセス領域解除要求とがある。振り分け部１２８０は操作記述ブロック及び仮想ＬＵＮを取り出した後、ヘッダ情報、操作記述ブロック、仮想ＬＵＮ、及び中継装置内部の情報を有する内部メッセージを作成する。
【００２４】
次に振り分け部１２８０は、仮想化処理の必要性を調査する。仮想化処理の必要性は、アクセス要求フレームのヘッダに含まれるアクセス先ID及び仮想ＬＵＮ（以下、アクセス先ＩＤと仮想ＬＵＮを組み合わせたものをアクセス先記述子と呼ぶ）と仮想構成情報テーブル１２４７に登録されたアクセス先記述子とを振り分け部が比較することにより判断される。ここで、仮想構成情報テーブル１２４７はＩ/Ｏ処理装置のＩ/Ｏ情報記憶部１２４０に格納されている。仮想構成情報テーブル１２４７には、端末装置１９００を介して計算機システムの管理者から入力された情報に従ってあらかじめ設定された構成情報のサブセットが記憶されており、フルセットの仮想化構成情報は図１１に示す制御装置内の全仮想構成情報テーブル１６１６に記憶されている。
【００２５】
アクセス先記述子が仮想構成情報テーブルに登録された仮想ポートアドレスおよび仮想ＬＵＮと一致する場合は、振り分け部１２８０が仮想化構成情報テーブルからこの仮想ポートアドレスおよび仮想ＬＵＮと対応付けられている記憶装置の実ボリュームのアクセス先記述子（以降、実アクセス先記述子と呼ぶ）を取得し、この実アクセス先記述子を前述の内部メッセージに挿入する。そして振り分け部１２８０は、I/Oプロセッサ１２２０及び排他判定部１２３０にこの内部メッセージを送信する。
【００２６】
一方、アクセス先記述子が仮想構成情報テーブルに登録された仮想ポートアドレスおよび仮想ＬＵＮと一致しない場合は、振り分け部１２８０はアクセス先記述子が一致しないことを前述の内部メッセージに明記し、アクセス先記述子を内部メッセージに挿入して、I/Oプロセッサにこの内部メッセージを送信する。
【００２７】
アクセス先記述子が一致しない旨が明記されている内部メッセージを受信したI/Oプロセッサは、アクセス先記述子が全仮想構成情報テーブル１６１６に登録されている仮想ポートアドレス及び仮想ＬＵＮと一致するか否かの調査要求を制御装置１６００に内部メッセージとして送信する。制御装置では制御プロセッサ１６２０が全仮想構成情報テーブル１６１６を検索し、受信した内部メッセージ内に格納されているアクセス先記述子と一致する仮想ポートアドレス及び仮想ＬＵＮの登録有無を調査する。
【００２８】
全仮想構成情報テーブルにアクセス先記述子と一致する仮想ポートアドレス及び仮想ＬＵＮが登録されている場合は、このアクセス記述子に関する全仮想構成情報テーブル１６１６内の仮想構成情報を制御プロセッサ１６２０が読み出し、問い合わせ元のI/O処理装置に送信する。また、制御プロセッサはこの仮想ポートアドレス及び仮想ＬＵＮに関する全仮想構成情報テーブル１６１６内の仮想構成情報に、問い合わせ元のI/O処理装置のIDを関連情報として追加する。制御プロセッサ１６２０から仮想構成情報を受信したI/O処理装置は、Ｉ/Ｏプロセッサ１２２０の制御により、受信した仮想構成情報を仮想構成情報テーブル１２４７に登録する。その後、振り分け部１２８０は、上述のアクセス要求に含まれるアクセス先記述子が仮想構成情報テーブル１２４７に登録された仮想ポートアドレスおよび仮想ＬＵＮと一致する場合の処理と同様の処理を実行する。
【００２９】
一方、全仮想構成情報テーブルにアクセス先記述子と一致する仮想ポートアドレスおよび仮想ＬＵＮが登録されていない場合、制御プロセッサ１６２０はこのアクセス先記述子が未登録であることを問い合わせ元のI/O処理装置に通知する。この通知を受信したI/O処理装置では、上述の操作記述ブロックを有する内部メッセージに変更を加えることなく、振り分け部１２８０がこの内部メッセージを経路選択部１２６０に送信する。
【００３０】
内部メッセージの送信後、振り分け部１２８０は計算機から受信したアクセス要求フレームをデータ一時保存用メモリ１２７０に格納する。
【００３１】
内部メッセージを受信したI/Oプロセッサ１２２０は、仮想化処理を開始する。I/Oプロセッサ１２２０は計算機１０００に提供する仮想ボリュームと実際の記憶装置１８００との対応関係を仮想構成情報テーブル１２４７を用いて管理する。Ｉ/Ｏプロセッサ１２２０は計算機から受信したアクセス要求フレーム中のアクセス先記述子を、受信した内部メッセージに格納されている実アクセス先記述子に変換する。また、計算機から受信したアクセス要求フレーム中のアクセス先記述子が示す仮想ボリュームが、２以上の記憶装置内の実ボリュームから構成されている場合には、当該アクセス要求フレームに基づいて、これら2以上の記憶装置に対するアクセス要求フレームを作成する。I/Oプロセッサ１２２０はこれらの処理の結果を、振り分け部１２８０から受信した内部メッセージにも反映させる。すなわち、アクセス先記述子の変換を行った場合は内部メッセージに変換後のアクセス先記述子を書き込み、アクセス要求フレームを作成した場合は作成したアクセス要求フレームの個数分内部メッセージを作成する。内部メッセージへ処理結果を反映した後は、I/Oプロセッサ１２２０は排他判定部１２３０から特定の信号を受信するまで仮想化処理を続行しない。当該信号を受信すると、I/Oプロセッサ１２２０は受信した信号の種類に応じて、計算機１０００に応答を返す処理、内部メッセージに格納されている操作記述ブロックに基づいた応答を計算機１０００に返す処理、若しくは記憶装置に内部メッセージを送信する処理を行う。尚記憶装置に内部メッセージを送信する場合には、Ｉ/Ｏプロセッサ１２２０はその内部メッセージを経路選択部１２６０に送信する。
【００３２】
排他判定部１２３０は振り分け部１２８０から受信した内部メッセージを基に後述の排他判定を行う。判定の結果、計算機から受信したアクセス要求が排他制御を要しない場合は、排他判定部１２３０は排他制御を要しないことを示す信号をI/Oプロセッサ１２２０に送信する。アクセス要求が排他制御を要する場合は更に詳細な排他判定を行うため、排他判定部は、排他制御を要する旨の情報を振り分け部１２８０から受信した内部メッセージに付加して、これを通信I/F部を介して制御装置１６００に送信する。制御装置１６００では後述するデッドロックを考慮した詳細な排他判定を行い、内部メッセージに格納されている実アクセス先記述子と関連付けて全仮想構成情報テーブル１６１２に登録されているI/O処理装置に対して判定結果を送信する。
【００３３】
経路選択部１２６０では、受信した内部メッセージ及びデータ一時記憶用メモリ１２７０に格納されたアクセス要求フレームを、経路切替え装置１７００を介して，当該内部メッセージの実アクセス先記述子の記述に基づいて記憶装置側のI/O処理装置１４００に送信する。内部メッセージ及びアクセス要求を受信したI/O処理装置では、内部メッセージを取り除き、アクセス要求フレームに格納されているアクセス要求フレーム発行元のIDを中継装置のIDに変更し、ポートから記憶装置に対してアクセス要求フレームを送信する。
【００３４】
３．排他アクセス制御の概要
次に図６、図７及び図８を用いて、排他アクセス制御の概要を説明する。
【００３５】
図８は、排他アクセス領域設定要求５００、データの読み書きのために発行される記憶領域へのアクセス要求５１０、および排他アクセス領域解除要求５２０が時系列的に処理される様子を示す図である。ある計算機から排他アクセス領域設定要求５００が発行されると、当該排他アクセス領域設定要求５００が示す記憶領域が排他アクセス領域５３０として設定され、中継装置にもその旨が登録される。従って、他の計算機から排他アクセス領域５３０を含む記憶領域に対してアクセス要求５１０が発行されると、このアクセス要求５１０は中継装置１１００によって抑止される。この様に、ある計算機からの要求によって排他アクセス領域に設定されている記憶領域に対して他の計算機がアクセス要求を発行する事象を排他ヒットとよぶ。一旦抑止されたアクセス要求５１０は、計算機から再発行される。アクセス要求５１０が再発行された時に、既に排他アクセス領域設定要求５００を発行した計算機によって排他アクセス領域解除要求５２０が発行されており、排他アクセス領域５３０の排他制御が解除されていれば、アクセス要求５１０は抑止されることなく、処理される。このような排他アクセス制御によって、排他アクセス領域設定要求５００を発行した計算機は、排他アクセス領域解除要求５２０を発行するまでの間、排他アクセス領域へ排他的にアクセスすることができる。尚上述の例では、アクセス要求５１０と排他アクセス領域設定要求５００の開始アドレス及びアクセス幅は同じである。
【００３６】
図７は、排他アクセス領域設定要求４１０よりアクセス要求４２０の方が大きなアクセス幅を有する場合の例を示す。第一の計算機が排他アクセス領域設定要求４１０を発行すると、当該排他アクセス領域設定要求４１０が示す記憶領域が排他アクセス領域４１１として設定され、中継装置にもその旨が登録される。次に第二の計算機が排他アクセス領域４１１を含む記憶領域に対するアクセス要求４２０を発行すると、このアクセス要求４２０は排他アクセス領域４４１に対して排他ヒットとなるため、中継装置によって抑止される。次に第三の計算機が排他アクセス領域４１１を含まない他の記憶領域４４１に対して排他アクセス領域設定要求４４０を発行する。すると、当該記憶領域４１１は第三の計算機についての排他アクセス領域４４１として設定され、その旨が中継装置に登録される。その後、第二の計算機がアクセス要求４２０を再発行したとき、既に第一の計算機が排他アクセス領域４１１について排他アクセス領域解除要求４３０を発行していたとしても、再発行されたアクセス要求４２０は今度は第三の計算機の排他アクセス領域４４１に対して排他ヒットとなるので、再び中継装置によって抑止される。この様にアクセス要求が指定するアクセス幅が排他アクセス領域の幅より大きい場合には、アクセス要求が繰り返し発生しうる。このような現象をデッドロックという。
【００３７】
デッドロックの発生を回避するために本発明では、図６に示す排他アクセス制御を実行する。第一の計算機が排他アクセス領域設定要求３００を発行した後に、第二の計算機が排他アクセス領域設定要求３００によって設定された排他アクセス領域を含み、当該排他アクセス領域より広い記憶領域に対するアクセス要求３１０を発行した場合、アクセス要求３１０は第一の計算機の排他アクセス領域に対して排他ヒットとなるので、中継装置によって抑止される。この場合中継装置１１００は、排他ヒットになった時点で排他アクセス領域を、第二の計算機から受信したアクセス要求３１０のアクセス幅にまで拡大する。排他アクセス領域の拡大によって、その後第三の計算機から拡大された排他アクセス領域に含まれる記憶領域についての排他アクセス領域設定要求３４０が発行された場合には、この排他アクセス領域設定要求３４０は拡大された排他アクセス領域への排他アクセス領域設定要求であるため中継装置によって抑止される。第一の計算機が排他アクセス領域解除要求３２０を発行すると、拡大された排他アクセス領域に対する排他制御は解除される。従ってその後に第二の計算機がアクセス要求３１０を再発行すれば、このアクセス要求は中継装置によって抑止されることなく処理される。尚アクセス要求３１０の再発行は、中継装置が拡大された排他アクセス領域に対する排他制御を解除した後に、中継装置自身によって実行することとしても良い。
【００３８】
４．排他アクセス制御の処理動作
図２はI/O処理装置に格納される排他情報テーブル１２４５の一例を示す図である。排他情報テーブルはI/O処理装置に接続された計算機に見せる仮想ボリュームごとに存在し、エントリには各計算機についてアドレス２０００、領域長２０１０、I/O属性２０２０が記憶される。アドレスとは排他アクセス領域の開始アドレスのことであり、領域長とは排他アクセス領域内の論理ブロック数を意味し、I/O属性とは排他制御の種類（読み込み共有、排他書き込み、排他読み込み、読み書き排他）及び排他制御の識別番号（リザベーションID）を意味する。
【００３９】
図３は、制御装置１６００に格納される詳細排他情報テーブル１６１２の一例を示す図である。詳細排他情報テーブル１６１２は中継装置中のI/O処理装置各々に接続される計算機に見せる仮想ボリュームごとに存在し、エントリには各計算機について排他情報テーブルで管理する情報と同じ情報（アドレス２１１０、領域長２１２０、Ｉ/Ｏ属性２１５０）に加え、排他アクセス領域を拡大して排他制御を実行する場合の拡大された排他アクセス領域の開始アドレス（拡大アドレス２１３０）及び拡大された排他アクセス領域内の論理ブロック数（拡大領域長２１４０）が記憶される。
【００４０】
次に図４を用いて、中継装置１１００において実行される、デッドロック発生回避を考慮した排他制御の処理手順を説明する。排他制御処理は、中継装置１１００ですべての排他制御処理を行う場合（以下、全処理ケースとよぶ）と、排他制御機能を有さない記憶装置には中継装置が排他制御機能を提供し、記憶装置が排他制御機能を有す場合には記憶装置が排他制御を実行する場合（以下、選択処理ケースとよぶ）とで、一部処理手順が異なる。そこで以下にそれぞれのケースに分けて、処理手順を説明する。
【００４１】
４−１．全処理ケース
はじめに、全処理ケースについて述べる。排他制御は、（１）排他アクセス領域の設定及び解除、（２）アクセス要求受付時の排他アクセス領域の拡大及び抑止判定制御、の２種類の処理または制御からなる。
【００４２】
（１）排他アクセス領域の設定及び解除
I/O処理装置１２００内の排他判定部１２３０は振り分け部１２８０から内部メッセージを受け取ると、内部メッセージに含まれる操作記述ブロックを参照して計算機から受信したアクセス要求フレームの種類を判定する。
【００４３】
アクセス要求フレームの種類が、排他アクセス領域解除要求である場合（ステップ１０５YES）には、当該アクセス要求フレームが示す排他アクセス領域について排他制御の解除処理を行う（ステップ１５５）。この場合、排他アクセス領域解除要求は、I/O処理装置１２００から制御装置１６００へ内部メッセージによって送られる。制御装置１６００では制御プロセッサ１６２０が制御情報記憶部１６１０に格納されている詳細排他情報テーブル１６１２から、要求元の計算機についての（排他アクセス領域解除要求フレームに含まれる発行元IDが詳細排他情報テーブルに登録されている要求元ＩＤと一致する）テーブルを検索し、検索して得られたテーブルの属性部２１５０に記憶されている識別番号が排他アクセス領域解除要求フレームの識別番号と一致する場合には、当該エントリ（すなわちアドレス部、領域長、属性、拡大アドレス、拡大領域長）を０にリセットする。詳細排他情報テーブル１６１２が更新された後、もしくは詳細排他情報テーブル１６１２から要求元計算機についてのテーブルが抽出できなかった場合又は属性部に記載されている識別番号と排他アクセス領域解除フレームの識別番号が一致しなかった場合には、制御装置１６００は排他アクセス領域解除要求フレームに含まれるアクセス先記述子に対応付けられたI/O処理装置を、全仮想構成情報テーブル１６１６から抽出し、このI/O処理装置に宛てて排他情報テーブル１２４５の変更要求を内部メッセージにより送信する。内部メッセージを受信したI/O処理装置では、I/Oプロセッサ１２２０が排他情報テーブル１２４５から排他アクセス領域解除要求フレームに含まれる発行元ＩＤが排他情報テーブル１２４５に登録されている要求元ＩＤと一致するテーブルを検索し、該当するテーブルの属性部２０２０に登録されている識別番号が排他アクセス領域解除要求フレームが有する識別番号と一致する場合には当該エントリ（すなわちアドレス部、領域長、属性）を０にする。そして、排他アクセス領域解除要求フレームを受信したI/O処理装置のI/Oプロセッサが、排他アクセス領域解除処理の完了を示す応答メッセージを作成し、排他アクセス領域解除要求フレームの送信元計算機に送信する。以上の処理によって、排他アクセス領域解除処理が終了する。
【００４４】
アクセス要求フレームが、構成情報やセンス情報の取得といった記憶装置への読み書きを伴わない処理を要求する排他アクセス制御対象外のフレームである場合（ステップ１１０NO）、排他判定部１２３０は排他アクセス制御に関する処理を終了し、排他制御を要さないことを示す信号をI/Oプロセッサ１２２０に送信する。
【００４５】
アクセス要求フレームが、排他制御対象のフレームであり、かつ排他アクセス領域の設定を要求するアクセス要求フレーム（排他アクセス領域設定要求フレーム）である場合（ステップ１２０YES）、排他判定部１２３０は制御装置１６００に対して判定要求を内部メッセージにより送信する。
【００４６】
制御装置１６００内では、制御プロセッサ１６２０が、排他判定部１２３０から受信した判定要求に係る排他アクセス領域設定要求フレームが、既に設定されている排他アクセス領域（拡大された排他アクセス領域を含む）へのアクセス要求を伴うフレームであるか否かを、詳細排他情報テーブル１６１２を基に判定する。排他アクセス領域設定要求フレームが詳細排他情報テーブル１６１２に登録されているアドレス若しくは拡大アドレス及び領域長若しくは拡大領域長が示す記憶領域への排他アクセス領域設定要求を伴うものでない場合には（ステップ１４５NO）、制御プロセッサがこの排他アクセス領域設定要求フレームが有する情報を詳細排他情報テーブル１６１２に登録する。また、排他アクセス領域設定要求フレームが詳細排他情報テーブル１６１２に登録されているアドレス２１１０及び領域長２１２０、若しくは拡大アドレス２１３０及び拡大領域長２１４０が示す記憶領域への排他アクセス領域の設定要求を伴うものであっても、設定を要求している排他アクセス領域の属性と、詳細排他情報テーブルの属性部２１５０に登録されている属性（読み込み共有、排他書き込み、排他読み込み、読み書き排他）とを制御プロセッサ１６２０が比較した結果、排他的なアクセスを排他アクセス領域設定要求フレームの発行元の計算機に許可できると制御プロセッサが判断した場合には（ステップ１４５NO）、排他アクセス領域設定要求フレームが有する情報を詳細排他情報テーブル１６１２に登録する（ステップ１５０）。
【００４７】
ここで、排他アクセス領域設定要求フレームが有する属性情報と、詳細排他情報テーブルの属性部２１５０に登録されている属性とが、いかなる組み合わせであれば、当該排他アクセス領域設定要求フレームの送信元計算機に排他的なアクセスが許可されるかを図５に示す。例えば、排他アクセス領域設定要求フレームが有する属性情報が排他読み込みである場合、詳細排他情報テーブル１６１２の属性部２１５０に登録されている属性情報が排他書き込みであれば排他アクセス領域設定要求フレームの発行元計算機に対して排他的なアクセスが許可されるが、詳細情報テーブル１６１２の属性部２１５０に登録されている属性情報が排他読み込みであれば排他アクセス領域設定要求フレームの発行元計算機に対して排他的なアクセスを許可することはできない。
【００４８】
制御プロセッサが詳細排他情報テーブル１６１２に登録する情報は、排他アクセス領域設定要求フレーム中の排他アクセス領域の開始アドレス、領域長、I/O属性である。テーブル更新後制御プロセッサは、排他アクセス領域設定要求フレームが示すアクセス先記述子に対応付けられたI/O処理装置を全仮想構成情報テーブル１６１６から検索し、このＩ/Ｏ処理装置に排他情報テーブルの変更要求を送信する。I/O処理装置ではI/OプロセッサがI/O情報記憶部に格納されている排他情報テーブル１２４５の該当するエントリに、詳細排他情報テーブルに登録された値と同様の値（開始アドレス、領域長、I/O属性）を登録する。そして、排他アクセス領域設定要求フレームを受信したI/O処理装置のI/Oプロセッサが、排他アクセス領域設定処理の完了を示す応答メッセージを作成し、排他アクセス領域設定要求フレームの送信元計算機に応答メッセージを送信し、処理を終了する。
【００４９】
（２）排他アクセス領域の拡大及び抑止制御
計算機から受信したアクセス要求フレームが、排他制御対象のフレームであり（ステップ１１０YES）かつ排他アクセス領域設定要求フレームではない場合（ステップ１２０NO）、排他情報テーブル１２４５を基に排他判定部１２３０は、排他アクセス領域設定要求フレーム受信時に設定した排他アクセス領域（拡大前の排他アクセス領域）を含む記憶領域へのアクセス要求を伴うアクセス要求フレームであるか否か、及び拡大前の排他アクセス領域を含む記憶領域へのアクセス要求を伴う場合には当該排他アクセス領域が図５に示したテーブルに基づきアクセス許可が可能な排他アクセス領域であるか否かを判定する（ステップ１２５）。
【００５０】
判定の結果、拡大前の排他アクセス領域へのアクセス要求を含まないアクセス要求フレームである場合、若しくは拡大前の排他アクセス領域へのアクセス要求を含むアクセス要求フレームであっても当該排他アクセス領域が図５のテーブルに基づいてアクセスが可能な排他アクセス領域である場合（ステップ１２５NO）は、排他判定部１２３０は排他制御を要しないことを示す信号をI/Oプロセッサ１２２０に送信し、処理を終了する。
【００５１】
判定の結果、拡大前の排他アクセス領域へのアクセス要求を含むアクセス要求フレームであって、かつ当該排他アクセス領域が図５のテーブルに基づきアクセスが不可能な排他アクセス領域であると判断された場合には、計算機から受信したアクセス要求フレームが示すアクセス領域が排他アクセス領域を跨ぐか否か（排他アクセス領域を含み更に他の記憶領域を含むか否か）の判定を行うよう要求する内部メッセージが、排他判定部１２３０から制御装置１６００へ送信される。そして、計算機から受信したアクセス要求フレームが示すアクセス領域が判定時に既に設定されている排他アクセス領域を跨ぐか否かを、制御装置１６００の制御プロセッサ１６２０が詳細排他情報テーブル１６１２に基づいて判定する(ステップ１３０）。尚ステップ１４５において、計算機から受信された排他アクセス領域設定要求フレームが、既に設定されている排他アクセス領域についての排他アクセス領域設定要求を含み、かつ図５に基づいて排他的なアクセスを許可できないと判断される排他アクセス領域についての排他アクセス領域設定要求を含む排他アクセス設定要求フレームであると判断された場合にも、上述のステップ１３０に示す処理が実行される。
【００５２】
排他アクセス領域を跨ぐ場合（ステップ１３０YES）、制御プロセッサ１６００は計算機から受信したアクセス要求フレームが示すアクセス領域を包含するように排他アクセス領域の開始アドレス及び排他領域長を算出する。そして制御プロセッサ１６００は算出結果を詳細排他情報テーブル１６１２に反映させるため、当該テーブル内の該当エントリの拡大アドレス部２１３０及び拡大領域長２１４０を更新する（ステップ１３５）。
【００５３】
詳細排他情報テーブルの更新後、若しくはステップ１３０にて排他アクセス領域を跨がないと判断された場合（ステップ１３０ＮＯ）、制御プロセッサ１６００は内部メッセージの発行元I/O処理装置に当該内部メッセージを返送し、これを受信したＩ/Ｏ処理装置は計算機から受信したアクセス要求の抑止処理を行う。抑止処理は、排他ヒットによりアクセス要求が抑止されたことを明示する応答を当該I/O処理装置内のI/Oプロセッサ１２２０が作成し、アクセス要求フレームの送信元計算機に返送することにより実行される（ステップ１４０）。
【００５４】
４−２．選択処理ケース
次に選択処理ケースについて、図４を参照しながら説明する。
（１）排他アクセス領域の設定及び解除
I/O処理装置１２００内の排他判定部１２３０は振り分け部１２８０から内部メッセージを受け取ると、内部メッセージに含まれる操作記述ブロックを参照して計算機から受信したアクセス要求フレームの種類を判定する。
【００５５】
アクセス要求フレームが排他アクセス領域解除要求フレームである場合（ステップ１０５YES）には、該当する排他アクセス領域への排他制御解除の処理を行う（ステップ１５５）。この場合、排他アクセス領域解除要求は、I/O処理装置１２００から制御装置１６００へ内部メッセージによって送られる。制御装置１６００では制御プロセッサ１６２０が、制御情報記憶部１６１０に格納されている詳細排他情報テーブル１６１２から要求元の計算機についての（排他アクセス領域解除要求フレームに含まれる発行元IDが詳細排他情報テーブルに登録されている要求元ＩＤと一致する）テーブルを検索し、検索して得られたテーブルの属性部２１５０に記憶されている識別番号が排他アクセス領域解除要求フレームの識別番号と一致する場合には、当該エントリ（すなわちアドレス部、領域長、属性、拡大アドレス、拡大アドレス長）を０にリセットする。また、制御プロセッサ１６２０は、要求元計算機のＩＤが登録されていない詳細排他情報テーブル上の全エントリを０にリセットする。詳細排他情報テーブル１６１２が更新された後、もしくは詳細排他情報テーブル１６１２から要求元計算機についてのテーブルが抽出できなかった場合又は属性部に記憶されている識別番号と排他アクセス領域解除フレームの識別番号が一致しなかった場合には、制御装置１６００は排他アクセス領域解除要求フレームに含まれるアクセス先記述子に対応付けられたI/O処理装置を、全仮想構成情報テーブル１６１６から抽出し、このI/O処理装置に宛てて排他情報テーブル１２４５の変更要求を内部メッセージにより送信する。内部メッセージを受信したI/O処理装置では、I/Oプロセッサ１２２０が排他情報テーブル１２４５から、排他アクセス領域解除要求フレームに含まれる発行元ＩＤが排他情報テーブル１２４５に登録されている要求元ＩＤと一致するテーブルを検索し、該当するテーブルの属性部２０２０に登録されている識別番号が排他アクセス領域解除要求フレームが有する識別番号と一致する場合には当該エントリ（すなわちアドレス部、領域長、属性）を０にする。
【００５６】
I/O処理装置へ内部メッセージ送信した後、制御プロセッサは、排他アクセス領域解除要求フレームが示すアクセス先記述子と対応付けて登録されている実アクセス先記述子を全仮想構成情報テーブル１６１６から取得し、当該実アクセス先記述子が示す実記憶装置に宛ててアクセス領域解除要求を送信するよう、当該記憶装置に接続されたＩ/Ｏ処理装置に内部メッセージを送信する。この内部メッセージを受信したI/O処理装置は、排他アクセス領域解除要求を記憶装置に送信する。Ｉ/Ｏ処理装置から送信した排他アクセス領域解除要求の送信先記憶装置全てから応答を受信した時点で、制御プロセッサは、排他アクセス領域解除要求フレームの送信元計算機と接続されるI/Oプロセッサ１２２０に対し、内部メッセージを送信する。この内部メッセージを受信したI/Oプロセッサは、排他アクセス領域解除処理の完了を示す応答メッセージを作成し、これを排他アクセス領域解除要求フレームの送信元計算機に送信し、排他アクセス領域解除要求の処理を終了する。
【００５７】
アクセス要求フレームが、構成情報やセンス情報の取得といった記憶装置への読み書きが発生しない排他アクセス制御対象外のフレームである場合（ステップ１１０NO）、排他判定部１２３０は排他アクセス制御に関する処理を終了し、排他制御を要しないことを示す信号をI/Oプロセッサ１２２０に送信する。
【００５８】
アクセス要求フレームが排他制御対象のフレームであり、かつ排他アクセス領域設定要求である場合（ステップ１２０YES）、排他判定部１２３０は制御装置１６００に判定要求を内部メッセージにより送信する。
【００５９】
制御装置１６００内では、制御プロセッサ１６２０が、排他判定部１２３０から受信した判定要求に係る排他アクセス領域設定要求フレームが、既に設定されている排他アクセス領域（拡大された排他アクセス領域を含む）へのアクセス要求を伴うフレームであるか否かを、詳細排他情報テーブル１６１２を基に判定する。排他アクセス領域設定要求フレームが、既に設定されている排他アクセス領域（拡大された排他アクセス領域を含む）へのアクセス要求を伴い、かつ図５に基づいて排他的なアクセスを許可できないと判断される排他アクセス領域についての排他アクセス領域設定要求を含む排他アクセス領域設定要求フレームである場合には（ステップ１４５YES）、ステップ１３０に示す処理が実行される。排他アクセス領域設定要求フレームが詳細排他情報テーブル１６１２に登録されているアドレス及び領域長若しくは拡大アドレス及び拡大領域長が示す記憶領域への排他アクセス領域設定要求を伴うものでない場合、若しくは排他アクセス領域設定要求フレームが詳細排他情報テーブル１６１２に登録されているアドレス２１１０及び領域長若しくは拡大アドレス２１３０及び拡大領域長が示す記憶領域への排他アクセス領域の設定要求を伴うものであっても、設定を要求している排他アクセス領域の属性と、詳細排他情報テーブルの属性部２１５０に登録されている属性とを図５に基づき制御プロセッサ１６２０が比較した結果、排他的なアクセスを排他アクセス領域設定要求フレームの発行元の計算機に許可できると制御プロセッサが判断した場合には、制御プロセッサは以下の処理を実行する。
【００６０】
制御プロセッサは、排他アクセス領域設定要求フレームが有するアクセス先記述子と対応付けられている実アクセス先記述子と、この実アクセス記述子が示す実ボリュームが存在する記憶装置が排他制御機能を有するか否かを示す記憶装置の属性情報を、全仮想構成情報テーブル１６３０から取得する。制御プロセッサは、取得した属性情報を参照し、排他制御機能を有する記憶装置が存在する場合は、この排他制御機能を有する記憶装置に接続されたI/O処理装置に対して内部メッセージを送信して、排他アクセス領域設定要求フレームを複製し、これを記憶装置へ送信するよう指示する。内部メッセージを受信したI/O処理装置では，I/Oプロセッサが排他アクセス領域設定要求フレームのコピーを生成し、これを記憶装置に対して送信し、記憶装置からの応答を待つ。Ｉ/Ｏ処理装置が応答を受信すると、当該応答は制御装置に送信され、制御プロセッサ１６２０は応答の内容を解析する。
【００６１】
既に他の計算機からの要求により排他アクセス領域が設定済みであることを示す応答が存在する場合（以下、装置ヒットとよぶ）は、ステップ１４５の判断結果がYESである場合に該当する。この場合、制御プロセッサは排他アクセス領域設定要求フレームの送信先記憶装置と接続されるＩ/Ｏ処理装置に対して内部メッセージを送信し、排他アクセス領域設定要求フレームが有する排他制御の識別番号と同一の識別番号を持った排他アクセス領域解除要求を生成し、これを当該記憶装置に送信するよう指示する。内部メッセージを受信したI/O処理装置では、内部メッセージに基づいて排他アクセス領域解除要求を作成し、これを記憶装置に送信して、当該記憶装置からの応答を待つ。Ｉ/Ｏ処理装置が排他アクセス領域解除要求の送信先記憶装置すべてから応答を受信した後、ステップ１３０に示す処理が実行される。
【００６２】
記憶装置から受信した応答が全て、排他アクセス領域の設定完了を示している（装置ヒットではない）場合、もしくは制御プロセッサが全仮想構成情報テーブル１６１６から取得した属性情報を参照した結果、排他制御機能を有する記憶装置が存在しないことが判明した場合は、計算機から受信した排他アクセス領域設定要求フレームが有する情報を制御プロセッサが詳細排他情報テーブル１６１２に登録する。登録される情報は排他領域の開始アドレス、領域長、I/O属性である。詳細テーブル更新後制御プロセッサは、排他アクセス領域設定要求フレームが有するアクセス先記述子に対応付けられたI/O処理装置を全仮想構成情報テーブルから検索し、このＩ/Ｏ処理装置に排他情報テーブル変更要求を送信する。変更要求を受信したI/O処理装置では、I/OプロセッサがI/O情報記憶部に記載されている排他情報テーブル１２４５の該当するエントリに、詳細排他情報テーブルに登録した値と同様の値（開始アドレス、領域長、I/O属性）を登録する。そして、I/Oプロセッサは排他アクセス領域設定処理の完了を示す応答メッセージを作成し、この応答メッセージを排他アクセス領域設定要求フレームの送信元計算機に送信して、処理を終了する。
（２）アクセス要求の排他領域拡大及び抑止制御
計算機から受信したアクセス要求フレームが、排他制御対象のフレームであり（ステップ１１０YES）かつ排他アクセス領域設定要求フレームではない場合（ステップ１２０NO）、受信したアクセス要求フレームが、排他アクセス領域設定拡大前の排他アクセス領域を含む記憶領域へのアクセス要求を伴うアクセス要求フレームであるか否か、及び拡大前の排他アクセス領域を含む記憶領域へのアクセス要求を伴う場合には当該排他アクセス領域が図５に示したテーブルに基づきアクセス許可が可能な排他アクセス領域であるか否かを、排他情報テーブル１２４５を基に排他判定部１２３０が判定する（ステップ１２５）。
【００６３】
判定の結果、拡大前の排他アクセス領域へのアクセス要求を含まないアクセス要求フレームである場合、若しくは拡大前の排他アクセス領域へのアクセス要求を含むアクセス要求フレームであっても、当該排他アクセス領域が図５のテーブルに基づいてアクセスが可能な排他アクセス領域である場合（ステップ１２５NO）は、排他判定部１２３０は排他制御を要しないことを示す信号をI/Oプロセッサ１２２０に送信し、処理を終了する。
【００６４】
判定の結果、拡大前の排他アクセス領域へのアクセス要求を含むアクセス要求フレームであって、かつ当該排他アクセス領域が図５のテーブルに基づきアクセスが不可能な排他アクセス領域である場合、排他判定部１２３０は制御装置１６００に内部メッセージを送信し、計算機から受信したアクセス要求フレームが示すアクセス領域が排他アクセス領域を跨ぐか否かの判定を行うよう指示する。内部メッセージを受信した制御装置の制御プロセッサ１６２０は、詳細排他情報テーブル１６１２に基づいて、アクセス要求フレームが示すアクセス領域が排他アクセス領域を跨ぐか否かを判定する（ステップ１３０）。
【００６５】
排他アクセス領域を跨ぐ場合（ステップ１３０YES）、制御プロセッサ１６００は計算機から受信したアクセス要求フレームが示すアクセス領域を包含するように、排他アクセス領域の開始アドレス及び排他領域長を算出する。そして制御プロセッサ１６００は、算出結果を詳細排他情報テーブル１６１２に反映させるため、当該テーブル内の該当エントリの拡大アドレス部２１３０及び拡大領域長２１４０を更新する（ステップ１３５）。
【００６６】
尚、ステップ１３５においては、排他アクセス領域を跨がない場合でも、ステップ１４５において装置ヒットが生じていると判断された場合は、特別な領域拡大処理が実行されるものとする。すなわち制御プロセッサは、要求元計算機が存在しない（要求元IDが存在しない）詳細排他情報エントリを作成し、当該エントリに対して計算機から受信した排他アクセス領域設定要求フレームが有する開始アドレス、領域長それぞれを拡大アドレス部２１３０、及び拡大領域長２１４０に登録する。また制御プロセッサは詳細排他情報テーブルのI/O属性２１５０には、排他の種類として読み書き排他を登録し、排他制御の識別番号として０を登録する。
【００６７】
詳細排他情報テーブルの更新後、若しくはステップ１３０において排他アクセス領域を跨がないと判断され詳細排他情報テーブルの更新を要さない場合（ステップ１３０NO）、制御プロセッサ１６００はアクセス要求フレームの送信元の計算機と接続されるI/O処理装置に対して内部メッセージを送信し、アクセス要求抑止処理を行うよう指示する。内部メッセージを受信したI/O処理装置のI/Oプロセッサ１２２０は、抑止されたアクセス要求の内容を明示する応答を作成し、アクセス要求フレームの送信元計算機に送信する。
【００６８】
以上のように、仮想化処理が可能な中継装置１１００は、仮想化処理対象となっているアクセス要求のみを排他制御対象とし、また中継装置内のI/O処理装置では排他制御を要するアクセス要求のみを検出し、制御装置１６００ではI/O処理装置で選別したアクセス要求のみについて詳細な排他制御判定を行う。この結果排他制御判定の負荷を分散させ、効率的に排他制御を実現することが出来る。
【００６９】
また、計算機１０００が発行するアクセス要求の内、排他制御判定の結果アクセスの抑止が必要な要求に対しては、計算機１０００と中継装置１１００の間でアクセス抑止処理が実行される。従って、排他制御によって生じるアクセス拒否応答及び再発行されるアクセス要求は中継装置とアクセス要求の再発行元の計算機との間で送受信されることになるので、中継装置と記憶装置間の通信線１１３５の性能には影響を与えない。従って、排他的アクセス権を取得している計算機が排他アクセス領域にアクセスする場合や、他の計算機が排他アクセス領域以外の記憶領域にアクセスする場合に、アクセス拒否応答やアクセスを拒否された計算機によって再発行されるアクセス要求の影響を受けることはない。
【００７０】
更に、記憶装置が排他制御機能を実装していな場合にも、中継装置が記憶装置が有する記憶容量と同容量の仮想ボリュームをこの記憶装置に割り当て、仮想ボリュームに対して排他制御機能を提供することにより、排他制御を実行することができる。また、ネットワークに接続される複数の記憶装置中に排他制御機能を有する記憶装置と排他制御機能を具備しない記憶装置とが混在する場合には、排他制御機能を有する記憶装置に対しては排他制御を実行するよう中継装置が指示し、排他制御機能を具備しない記憶装置に対しては中継装置が上述のように仮想ボリュームに対して排他制御機能を実行することにより、排他制御機能を提供することができる。また、記憶装置が排他制御機能を具備するか否かに関わらず、全ての記憶装置に対して中継装置が排他制御機能を提供することもできる。
【００７１】
中継装置が仮想化機能を有する場合には、１）全ての仮想ボリュームに対して一様に中継装置が排他制御機能を提供するか、もしくは２）仮想ボリュームと関連付けられている記憶装置の内、排他制御機能を有しない記憶装置を予め中継装置に登録しておき、排他制御機能を有しない記憶装置の仮想ボリュームに対して中継装置が排他制御機能を提供することにより、計算機に対しては一様に排他制御機能を具備したボリュームが存在するように見せることが可能となる。
【００７２】
次に本発明の他の実施形態について説明する。本実施形態においては、記憶装置上のデータを一時的に保管することを目的として計算機が有しているローカルキャッシュメモリ（ライトスルー形式）に対し、記憶装置上のデータとローカルキャッシュメモリ上のデータとの間の整合性を維持するよう、中継装置が指示する方法について説明する。具体的には、中継装置１１００が、計算機から受信した読み込みアクセス要求の履歴を保存するアクセス履歴テーブルを有し、中継装置は計算機上のキャッシュに格納されているデータのうち無効にすべきデータをアクセス履歴テーブルに基づいて特定し、このキャッシュを有する計算機に対して定められた事象を契機として無効化要求メッセージを送信する。
【００７３】
システム構成は図１に示すシステム構成とほぼ同様であるが、中継装置１１００の制御情報記憶部１６１０は、アクセス要求の履歴を保管するアクセス履歴テーブル１６１４を有している。図９はアクセス履歴テーブルの一例を示している。アクセス履歴テーブルは計算機に提供するボリュームごとに設けられる。アクセス履歴テーブルは各計算機について、論理ブロックアドレスごと、若しくは一定数のブロックのまとまりごとにエントリ２２００を有する。エントリでとる数値は０か１の２値であり、１の場合は過去に当該エントリに対応する計算機から当該エントリに対応する論理ブロックの該当アドレスに読み込みアクセス要求があったことを示す。
【００７４】
中継装置の制御プロセッサは振り分け部１２８０で生成される内部メッセージを利用して、計算機から受信したアクセス要求フレームが読み込みアクセス要求に関するものであるかを判断し、アクセス履歴テーブルの更新を行う。具体的には、計算機１０００から読み込みアクセス要求フレームを中継装置１１００が受信すると、振り分け部１２１０が内部メッセージを生成する。この内部メッセージは通信I/F部１２５０から制御装置１６００に送信される。制御装置１６００では制御プロセッサ１６２０が、内部メッセージが有する操作記述ブロック及び実アクセス先記述子を解析し、計算機から受信したアクセス要求フレームが読み込みアクセス要求に関するものであると判断した場合には、当該アクセス先記述子及びアクセス要求フレーム送信元計算機に対応するアクセス履歴テーブル１６１４のエントリに１を登録する。尚、制御装置が受信した内部メッセージは一旦I/O処理装置内のI/O情報記憶部１６１０にバッファリングされ、特定の契機でアクセス履歴テーブルの更新処理を実行することとしても良い。この場合は、バッファリングされている内部メッセージの内容を特定の契機が訪れる前に制御装置１６００が特定することはできない。従って、I/O処理装置に障害が生じた場合には、当該I/O処理装置と接続していた計算機のローカルメモリ全体について無効化処理を実行する必要がある。
【００７５】
無効化要求メッセージは、中継装置１１００が書き込みアクセス要求もしくは排他アクセス領域設定要求を受信したときを契機として、生成される。具体的には中継装置が書き込みアクセス要求フレーム若しくは排他アクセス領域設定要求フレームを計算機から受信した場合に、振り分け部１２８０が内部メッセージを生成して制御装置１６００に送信する。制御プロセッサ１６２０は当該内部メッセージを解析し、内部メッセージが有するアクセス先記述子が示すアクセス領域に対応するアクセス履歴テーブルのエントリから、アクセス履歴を取得する。そして制御装置は、取得したアクセス履歴から無効化の対象となる（１が登録されているエントリに対応する）計算機及び記憶領域を特定し、無効化の対象となる計算機と通信するI/O処理装置に対して、無効化すべき記憶領域を示す情報を挿入した内部メッセージを送信する。内部メッセージ送信後制御プロセッサ１６３０は、アクセス履歴を取得したエントリを０にリセットする。
【００７６】
I/O処理装置ではI/Oプロセッサが計算機に送信する無効化要求メッセージを制御装置から受信した内部メッセージを用いて作成する。無効化要求メッセージは非同期で計算機に送信されるイベント通知として送信される。計算機は無効化要求メッセージを受信すると、ネットワークドライバもしくはOSが無効化要求メッセージに基づいてキャッシュ１００５の無効化処理を実行する。
【００７７】
以上に説明したように、中継装置１１００では、読み込み系アクセス要求の受信をI/O処理装置で検出し、検出結果を基に制御装置１６００がアクセス履歴テーブル１６１４を更新することで、アクセス履歴を保持する。また、予め定められた種類のアクセス要求をI/O処理装置が受信した際に、制御装置がアクセス履歴テーブルを参照し、I/O処理装置に無効化要求メッセージの作成を指示する。I/O処理装置は制御装置からの指示に基づいて無効化メッセージを作成し、これを計算機に送信する。この結果、計算機においてキャッシュの無効化処理が実行される。
【００７８】
上述のデッドロック発生を回避するための処理を有する排他制御方法は、複数のプロセッサが接続される主記憶装置を有するメモリシステムにおいても実行され得る。図１０はメモリシステムの一例を示す。メモリシステムは、複数のプロセッサ（IP）１０、主記憶装置６０、及び複数のプロセッサと主記憶装置６０とを接続する中間記憶装置３０を有する。中間記憶装置３０はキャッシュメモリ装置５０、排他制御装置４５及び抑止要求管理装置５５を有する。更に排他制御装置４５は排他情報記憶部３５と排他判定部４０を有する。排他制御は主に排他制御装置４５により実行される。排他制御装置４５では、排他制御に必要な情報を排他情報記憶部３５に格納しており、排他制御処理において実行される図４に示す判定を排他判定部４０で行う。判定の結果メモリリクエストの抑止が必要な場合は抑止要求管理装置５５が抑止処理を実行する。
【００７９】
図１０のメモリシステム以外でも、ファイルシステムを自装置内に備えた記憶装置（NAS：Network Attached Storage）においても、上述のデッドロック発生を回避するための処理を有する排他制御方法は実行可能である。
【００８０】
【発明の効果】
本発明により、排他制御によるネットワーク性能の低下を防止し、記憶装置が排他制御機能を有しているか否かに関わらず計算機は記憶領域へ排他的にアクセスすることができる。
【図面の簡単な説明】
【図１】計算機システムの構成例を示す図である。
【図２】I/O処理装置内の排他情報テーブルの一例を示す図である。
【図３】制御装置内の詳細排他情報テーブルの一例を示す図である。
【図４】排他アクセス制御の処理手順の一例を示すフローチャートである。
【図５】排他アクセス領域の種類の違いによるアクセス可否を示す図である。
【図６】排他制御方法の一例を示す図である。
【図７】排他アクセス領域の拡大処理を行わない排他制御方法の一例を示す図である。
【図８】排他制御方法の他の一例を示す図である。
【図９】アクセス履歴テーブルの一例を示す図である。
【図１０】メモリシステムの構成例を示す図である。
【図１１】全仮想構成情報テーブルの一例を示す図である。
【符号の説明】
１０００…計算機
１１００…中継装置
１２００…I/O処理装置
１４００…I/O処理装置
１６００…制御装置
１７００…経路切替え装置
１８００…記憶装置
１９００…端末装置
【図１】
0004207520.tif 000002
【図２】
0004207520.tif 000003
【図３】
0004207520.tif 000004
【図４】
0004207520.tif 000005
【図５】
0004207520.tif 000006
【図６】
0004207520.tif 000007
【図７】
0004207520.tif 000008
【図８】
0004207520.tif 000009
【図９】
0004207520.tif 000010
【図１０】
0004207520.tif 000011
【図１１】
0004207520.tif 000012