(57)【特許請求の範囲】
【請求項１】
複数のホストサーバと、
前記複数のホストサーバによって共有される複数のストレージ装置と、
前記複数のストレージ装置の少なくとも一部の記憶領域が割り当てられる複数の論理ユニットを前記複数のホストサーバに提供する管理サーバと、
前記複数のホストサーバ、前記複数のストレージ装置及び前記管理サーバを接続するスイッチと
を具備し、
前記管理サーバは、前記複数の論理ユニット毎に、前記複数の論理ユニットの各々の仮想アドレスと、当該仮想アドレスに割り当てられるストレージ装置の実アドレスと、当該ストレージ装置を示すストレージ識別子との対応を、第１のアドレス管理情報を用いて管理し、且つ前記第１のアドレス管理情報のリビジョンを第１のリビジョンデータを用いて管理し、
前記複数のホストサーバの各々は、前記論理ユニットに対応する前記第１のアドレス管理情報及び前記第１のリビジョンデータそれぞれのコピーである第２のアドレス管理情報及び第２のリビジョンデータを保持し、第１の論理ユニットの第１の仮想アドレスにアクセスする場合、前記第１の論理ユニットに対応する前記第２のアドレス管理情報から前記第１の仮想アドレスに対応付けられた第１の実アドレス及び第１のストレージ識別子を取得して、前記第１の論理ユニットを示す第１の論理ユニット識別子、前記第１の実アドレス、及び前記第１の論理ユニットに対応する前記第２のリビジョンデータを用いて、前記第１のストレージ識別子で示されるストレージ装置にアクセスを要求し、
前記複数のストレージ装置の各々は、前記第１のアドレス管理情報の更新に応じて前記管理サーバによって通知される前記第１のアドレス管理情報のリビジョンを示す第３のリビジョンデータを含む更新管理情報を保持し、前記複数のホストサーバの１つである第１のホストサーバから、前記第１の論理ユニット識別子、前記第１の実アドレス、及び前記第２のリビジョンデータを用いてアクセスが要求された場合、少なくとも、前記第２のリビジョンデータが前記第１の論理ユニットに対応する前記第３のリビジョンデータに一致していることを条件として、要求されたアクセスを前記第１の実アドレスに基づいて実行する
共有ストレージシステム。
【請求項２】
前記第１のホストサーバは、前記第１の論理ユニットへのライトアクセスの要求が発生し、且つ当該ライトアクセスが、前記第１の論理ユニットに対応する前記第１のアドレス管理情報の更新を必要とする場合、前記更新の必要を前記管理サーバに通知し、
前記管理サーバは、前記第１のホストサーバによる前記更新の必要の通知に基づいて、前記第１の論理ユニットに対応する前記第１のアドレス管理情報及び前記第１のリビジョンデータを更新し、且つ前記第１の論理ユニットに対応する前記第１のアドレス管理情報の更新を、少なくとも、前記第１の論理ユニットに割り当てられる記憶領域を有するストレージ装置に通知し、
前記管理サーバによって前記更新が通知されたストレージ装置は、当該更新の通知に基づいて、前記更新管理情報に含まれていて、且つ前記第１の論理ユニットに対応する前記第１のアドレス管理情報のリビジョンを示す前記第３のリビジョンデータを更新し、
前記管理サーバは、前記更新の必要を通知した前記第１のホストサーバに、前記更新された第１のアドレス管理情報及び第１のリビジョンデータそれぞれのコピーを送信し、
前記第１のホストサーバは、前記第１のホストサーバが保持している前記第２のアドレス管理情報及び第２のリビジョンデータを、前記送信されたコピーに基づいて更新する
請求項１記載の共有ストレージシステム。
【請求項３】
前記複数のストレージ装置の１つである第１のストレージ装置は、前記第２のリビジョンデータが前記第１の論理ユニットに対応する前記第３のリビジョンデータに一致していない場合、前記第１のホストサーバにリビジョン不一致を示すエラーステータスを返し、
前記第１のホストサーバは、前記エラーステータスに応じて、前記管理サーバから、前記第１の論理ユニットに対応する前記第１のアドレス管理情報及び前記第１のリビジョンデータそれぞれのコピーを取得して、前記第１のホストサーバが保持している前記第２のアドレス管理情報及び第２のリビジョンデータを当該コピーに基づいて更新する
請求項２記載の共有ストレージシステム。
【請求項４】
前記第１のホストサーバは、前記管理サーバに障害が発生している場合、前記複数のホストサーバの１つであって、且つ前記第１の論理ユニットに対応する最新の第２のアドレス管理情報を保持している第２のホストサーバから、当該最新の第２のアドレス管理情報及び当該最新の第２のアドレス管理情報のリビジョンを示す第２のリビジョンデータのコピーを取得して、前記第１のホストサーバが保持している前記第２のアドレス管理情報及び第２のリビジョンデータを当該コピーに基づいて更新する
請求項３記載の共有ストレージシステム。
【請求項５】
前記管理サーバは、前記第１の論理ユニットに対応する前記第１のアドレス管理情報の更新を通知する場合、前記更新の必要を通知した前記第１のホストサーバを示す第１のホストサーバ識別子も通知し、
前記複数のストレージ装置の各々に保持される前記更新管理情報は、前記複数のストレージ装置の各々の記憶領域が割り当てられた論理ユニットに対応付けられたホストサーバ識別子であって、前記対応する第１のアドレス管理情報の更新を通知したホストサーバを示すホストサーバ識別子を更に含み、
前記更新が通知されたストレージ装置は、当該更新の通知に基づいて、前記更新管理情報に含まれていて、且つ前記第１の論理ユニットに対応するホストサーバ識別子も更新し、
前記第１のストレージ装置は、前記第１の論理ユニットに対応する最新の第２のアドレス管理情報を保持している第２のホストサーバを前記更新管理情報に基づいて前記第１のホストサーバに通知する
請求項４記載の共有ストレージシステム。
【請求項６】
前記第１のホストサーバは、前記管理サーバに障害が発生している状態で前記第１のストレージ装置から前記リビジョン不一致を示すエラーステータスを受け取った場合、前記第１の論理ユニットに対応する最新の第２のアドレス管理情報を保持しているホストサーバを前記第１のストレージ装置に問い合わせ、
前記第１のストレージ装置は、前記第１のホストサーバからの前記問い合わせに応じて、前記第２のホストサーバを前記第１のホストサーバに通知する
請求項５記載の共有ストレージシステム。
【請求項７】
前記第１のストレージ装置は、前記リビジョン不一致を示すエラーステータスを用いて、前記第２のホストサーバを前記第１のホストサーバに通知する請求項５記載の共有ストレージシステム。
【請求項８】
前記第１のホストサーバは、前記第２のアドレス管理情報及び第２のリビジョンデータを更新した場合、前記更新された第２のアドレス管理情報及び第２のリビジョンデータに基づいて前記第１のストレージ装置に再びアクセスを要求する請求項３記載の共有ストレージシステム。
【請求項９】
複数のホストサーバと、前記複数のホストサーバによって共有される複数のストレージ装置と、前記複数のストレージ装置の少なくとも一部の記憶領域が割り当てられる複数の論理ユニットを前記複数のホストサーバに提供する管理サーバと、前記複数のホストサーバ、前記複数のストレージ装置及び前記管理サーバを接続するスイッチとを具備し、前記管理サーバは、前記複数の論理ユニット毎に、前記複数の論理ユニットの各々の仮想アドレスと、当該仮想アドレスに割り当てられるストレージ装置の実アドレスと、当該ストレージ装置を示すストレージ識別子との対応を、第１のアドレス管理情報を用いて管理し、且つ前記第１のアドレス管理情報のリビジョンを第１のリビジョンデータを用いて管理し、前記複数のホストサーバの各々は、前記論理ユニットに対応する前記第１のアドレス管理情報及び前記第１のリビジョンデータそれぞれのコピーである第２のアドレス管理情報及び第２のリビジョンデータを保持し、前記複数のストレージ装置の各々は、前記第１のアドレス管理情報の更新に応じて前記管理サーバによって通知される前記第１のアドレス管理情報のリビジョンを示す第３のリビジョンデータを含む更新管理情報を保持する共有ストレージシステムにおいて、ストレージ装置へのアクセスを制御する方法であって、
前記複数のホストサーバの１つである第１のホストサーバから第１の論理ユニットの第１の仮想アドレスにアクセスする場合、前記第１の仮想アドレスに対応付けられた第１の実アドレス及び第１のストレージ識別子を、前記第１の論理ユニットに対応する前記第２のアドレス管理情報から前記第１のホストサーバによって取得し、
前記第１の論理ユニットを示す第１の論理ユニット識別子、前記第１の実アドレス、及び前記第１の論理ユニットに対応する前記第２のリビジョンデータを用いて、前記第１のストレージ識別子で示され、且つ前記複数のストレージ装置の１つである第１のストレージ装置に前記第１のホストサーバからアクセスを要求し、
前記第１のホストサーバから前記第１のストレージ装置に、前記第１の論理ユニット識別子、前記第１の実アドレス、及び前記第２のリビジョンデータを用いてアクセスが要求された場合、少なくとも、前記第２のリビジョンデータが前記第１の論理ユニットに対応する前記第３のリビジョンデータに一致していることを条件として、要求されたアクセスを前記第１の実アドレスに基づいて前記第１のストレージ装置によって実行する
ストレージ装置へのアクセスを制御する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、共有ストレージシステム、及びストレージ装置へのアクセスを制御する方法に関する。
【背景技術】
【０００２】
近年、共有ストレージシステムが盛んに開発されている。共有ストレージシステムは、複数のストレージ装置が複数のホストサーバによって共有されるストレージシステムとして知られている。このような共有ストレージシステムは、一般に管理サーバを備えている。管理サーバは、共有ストレージシステム全体を管理する。【０００３】
共有ストレージシステムでは、論理ユニットが用いられる。論理ユニットは論理ボリューム或いは論理ディスクとも呼ばれ、論理的な記憶領域を有している。論理的な記憶領域内の任意の記憶位置は、仮想アドレスによって指定される。論理的な記憶領域は、複数のストレージ装置の少なくとも１つの物理的な記憶領域の少なくとも一部と対応付けられる。管理サーバは、共有ストレージシステム内の論理ユニット毎に仮想アドレスとストレージ装置の実アドレスとの対応を管理するために、当該論理ユニット毎にアドレス管理情報（例えば、アドレス管理テーブル）を保持する。【０００４】
ここで、共有ストレージシステム内のホストサーバが、自身がマウントする（自身に提供される）論理ユニット内の目的の記憶位置にアクセスするものとする。この場合、ホストサーバは、目的の記憶位置の仮想アドレスに対応付けられたストレージ装置内の記憶位置のアドレス（つまり実アドレス）及び当該ストレージ装置（より詳細には、当該ストレージ装置の識別子）を管理サーバに問い合わせる。つまりホストサーバは、論理ユニット内の目的の記憶位置にアクセスするに際し、当該目的の記憶位置に対応付けられたストレージ装置の記憶位置を知るために管理サーバにアクセスする。このような管理サーバへのアクセスは、共有ストレージシステム内の他のそれぞれのホストサーバが論理ユニット内の目的の記憶位置にアクセスしようとする場合にも発生する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−２３３１９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述のように、共有ストレージシステム内の複数のホストサーバは、当該複数のホストサーバにそれぞれ提供される論理ユニット内の目的の記憶位置にアクセスするに際し、管理サーバにアクセスする必要がある。このような共有ストレージシステムでは、複数のホストサーバから管理サーバへのアクセスの集中が、共有ストレージシステム全体の性能向上のボトルネックとなっている。つまり、共有ストレージシステムの例えばホストサーバの数、またはストレージ装置の数（もしくは記憶容量）が増加されても、管理サーバへのアクセスが一層集中するために、このような増加に見合ったシステム性能を得ることは難しい。【０００７】
そこで、管理サーバへのアクセスの集中を解消するために、次のような構成が考えられる。それは、共有ストレージシステム内の複数のホストサーバが、当該管理サーバに保持されているアドレス管理情報のコピーをそれぞれ有する構成である。このような構成によれば、複数のサーバの各々は、目的の記憶位置の仮想アドレスに対応付けられた実アドレスを、自身が有するアドレス管理情報のコピーに基づいて取得することができる。つまり、複数のサーバの各々は、管理サーバへの問い合わせを必要とせずに、目的の記憶位置にアクセスすることが可能となる。【０００８】
しかし、上述の構成では、例えば第１のホストサーバによるデータ更新に応じてアドレス管理情報が更新された場合に、第１のホストサーバと他のホストサーバとの間でアドレス管理情報を一致させることが困難となる。【０００９】
本発明が解決しようとする課題は、複数のホストサーバが、管理サーバに保持されているアドレス管理情報のコピーをそれぞれ有する構成を適用するにも拘わらずに、ホストサーバ間でアドレス管理情報を一致させる処理を不要とすることができる共有ストレージシステム、及びストレージ装置へのアクセスを制御する方法を提供することにある。
【課題を解決するための手段】
【００１０】
実施形態によれば、共有ストレージシステムは、複数のホストサーバと、複数のストレージ装置と、管理サーバと、スイッチとを具備する。複数のストレージ装置は、前記複数のホストサーバによって共有される。前記管理サーバは、前記複数のストレージ装置の少なくとも一部の記憶領域が割り当てられる複数の論理ユニットを前記複数のホストサーバに提供する。前記スイッチは、前記複数のホストサーバ、前記複数のストレージ装置及び前記管理サーバを接続する。前記管理サーバは、前記複数の論理ユニット毎に、前記複数の論理ユニットの各々の仮想アドレスと、当該仮想アドレスに割り当てられるストレージ装置の実アドレスと、当該ストレージ装置を示すストレージ識別子との対応を、第１のアドレス管理情報を用いて管理し、且つ前記第１のアドレス管理情報のリビジョンを第１のリビジョンデータを用いて管理する。前記複数のホストサーバの各々は、前記管理サーバによって提供される論理ユニットに対応する前記第１のアドレス管理情報及び前記第１のリビジョンデータそれぞれのコピーである第２のアドレス管理情報及び第２のリビジョンデータを保持する。前記複数のホストサーバの各々は、第１の論理ユニットの第１の仮想アドレスにアクセスする場合、前記第１の論理ユニットに対応する前記第２のアドレス管理情報から前記第１の仮想アドレスに対応付けられた第１の実アドレス及び第１のストレージ識別子を取得する。前記複数のホストサーバの各々は更に、前記第１の論理ユニットを示す第１の論理ユニット識別子、前記第１の実アドレス、及び前記第１の論理ユニットに対応する前記第２のリビジョンデータを用いて、前記第１のストレージ識別子で示されるストレージ装置にアクセスを要求する。前記複数のストレージ装置の各々は、少なくとも、前記複数のストレージ装置の各々の記憶領域が割り当てられた論理ユニットに対応付けられた第３のリビジョンデータを含む更新管理情報を保持する。前記第３のリビジョンデータは、対応する前記第１のアドレス管理情報の更新に応じて前記管理サーバによって通知される前記対応する第１のアドレス管理情報のリビジョンを示す。前記複数のストレージ装置の各々は、前記複数のホストサーバの１つである第１のホストサーバから、前記第１の論理ユニット識別子、前記第１の実アドレス、及び前記第２のリビジョンデータを用いてアクセスが要求された場合、少なくとも、前記第２のリビジョンデータが前記第１の論理ユニット識別子の示す前記第１の論理ユニットに対応する前記第３のリビジョンデータに一致していることを条件として、要求されたアクセスを前記第１の実アドレスに基づいて実行する。
【図面の簡単な説明】
【００１１】
【図１】図１は、１つの実施形態に係る共有ストレージシステムの典型的な構成を示すブロック図である。
【図２】図２は、論理ユニットの論理的な記憶領域と２つのストレージ装置の物理的な記憶領域との対応の例を示す概念図である。
【図３】図３は、図１に示される管理情報のデータ構造の例を示す図である。
【図４】図４は、同実施形態におけるリードアクセス処理の典型的な手順を示すフローチャートである。
【図５】図５は、図１に示されるアドレス管理テーブルのデータ構造の例を示す図である。
【図６】図６は、同実施形態で適用されるコマンドの典型的なフォーマットを示す図である。
【図７】図７は、同実施形態におけるライトアクセス処理の典型的な手順を示すフローチャートである。
【図８】図８は、図７に示されるライトアクセス処理に含まれているアドレス管理テーブル更新処理の典型的な手順を示すフローチャートである。
【図９】図９は、アドレス管理テーブル更新処理を説明するための図である。
【図１０】図１０は、同実施形態における管理サーバダウン時のアクセス処理の典型的な手順を示すフローチャートである。
【図１１】図１１は、は管理サーバダウン時のアクセス処理を説明するための図である。
【発明を実施するための形態】
【００１２】
以下、種々の実施の形態につき図面を参照して説明する。  
図１は、１つの実施形態に係る共有ストレージシステムの典型的な構成を示すブロック図である。図１に示される共有ストレージシステムは、複数のストレージ装置（例えば、２つのストレージ装置１１ａ及び１１ｂ）と、複数のホストサーバ（例えば、３つのホストサーバ１２ａ，１２ｂ及び１２ｃ）と、管理サーバ１３とを備えている。このように本実施形態では、共有ストレージシステムは、２つのストレージ装置１１ａ及び１１ｂを備えている。しかし、共有ストレージシステムが、２つを超えるストレージ装置を備えていても良い。また本実施形態では、共有ストレージシステムは、３つのホストサーバ１２ａ，１２ｂ及び１２ｃを備えている。しかし、共有ストレージシステムが、２つのストレージ装置または３つを超えるストレージ装置を備えていても良い。
【００１３】
ホストサーバ１２ａ，１２ｂ及び１２ｃは、それぞれホストバスアダプタ（ＨＢＡ）１２０ａ，１２０ｂ及び１２０ｃを備えている。ＨＢＡ１２０ａ，１２０ｂ及び１２０ｃはホストコントローラとも呼ばれ、ホストサーバ１２ａ，１２ｂ及び１２ｃと他のネットワーク機器、或いはストレージ装置とを接続する。
【００１４】
ストレージ装置１１ａ及び１１ｂと、ホストサーバ１２ａ，１２ｂ及び１２ｃ（より詳細には、ホストサーバ１２ａ，１２ｂ及び１２ｃのＨＢＡ１２０ａ，１２０ｂ及び１２０ｃ）と、管理サーバ１３とは、スイッチングハブ（ネットワークスイッチ）のようなスイッチ１４を介して接続されている。この接続により、ストレージ装置１１ａ及び１１ｂと、ホストサーバ１２ａ，１２ｂ及び１２ｃと、管理サーバ１３とを含むネットワーク（共有ストレージシステム）が構築され、ストレージ装置１１ａ及び１１ｃは、ホストサーバ１２ａ，１２ｂ及び１２ｃによって共有される。
【００１５】
本実施形態において、サーバ１２ａ，１２ｂ，１２ｃ及び１３は、それぞれ独立のコンピュータである。しかし、ホストサーバ１２ａ，１２ｂ及び１２ｃの少なくとも２つが、１つのコンピュータ上で動作しても構わない。また、ホストサーバ１２ａ，１２ｂ及び１２ｃの少なくとも１つと管理サーバ１３とが、１つのコンピュータ上で動作しても構わない。
【００１６】
ストレージ装置１１ａ及び１１ｂの記憶領域（つまり、物理的な記憶領域）の一部は、例えば論理ユニットＬＵ０乃至ＬＵ３（図２）の記憶領域（つまり、論理的な記憶領域）の一部に割り当てられる。図２は、論理ユニットＬＵ０乃至ＬＵ３の記憶領域とストレージ装置１１ａ及び１１ｂの記憶領域との対応の例を示す概念図である。本実施形態において、ストレージ装置１１ａ及び１１ｂはそれぞれハードディスクドライブ（ＨＤＤ）アレイを用いて構成される。より詳細に述べるならば、ストレージ装置１１ａは、複数のハードディスクドライブ（ＨＤＤ）を備えたＲＡＩＤ（Redundant Arrays of Inexpensive DisksまたはRedundant Arrays of Independent Disks）構成のストレージ装置である。同様にストレージ装置１１ｂも、複数のＨＤＤを備えたＲＡＩＤ構成のストレージ装置である。なお、ストレージ装置１１ａ及び１１ｂの少なくとも１つが、ＨＤＤ以外の記憶装置のアレイ（例えばフラッシュアレイ）を用いて構成されていても良い、また、ストレージ装置１１ａ及び１１ｂが必ずしもアレイ構成を有している必要はない。
【００１７】
図２の例では、論理ユニットＬＵ０乃至ＬＵ３それぞれの記憶領域の一部は、ストレージ装置１１ａの記憶領域の一部と対応付けられている。また、論理ユニットＬＵ０乃至ＬＵ３それぞれの記憶領域の他の一部は、ストレージ装置１１ｂの記憶領域の一部と対応付けられている。しかし、論理ユニットＬＵ０，ＬＵ１，ＬＵ２またはＬＵ３の記憶領域全体が、ストレージ装置１１ａまたは１１ｂのいずれか一方の記憶領域の少なくとも一部だけと対応付けられていても構わない。
【００１８】
ここで、論理ユニットＬＵｉ（ｉは０，１，２または３）を利用（認識）可能なホストサーバ１２ｊ（ｊはａ，ｂまたはｃ）が、論理ユニットＬＵｉ内の目的の記憶位置（以下、第１の記憶位置と称する）にアクセスするものとする。この場合、ホストサーバ１２ｊは、第１の記憶位置に対応付けられたストレージ装置１１ｋ（ｋはａまたはｂ）内の記憶位置（以下、第２の記憶位置と称する）と、当該ストレージ装置１１ｋとを知る（認識する）必要がある。
【００１９】
第１の記憶位置のアドレスは仮想アドレスと呼ばれ、第２の記憶位置のアドレスは実アドレスと呼ばれる。本実施形態では、論理ユニットＬＵｉの記憶領域及びストレージ装置１１ｋの記憶領域は、管理のために、ブロック（より詳細には、仮想ブロック及び実ブロック）と呼ばれる一定サイズ（第１のサイズ）の小領域に分割される。即ち、論理ユニットＬＵｉ及びストレージ装置１１ｋは、それぞれ、複数の仮想ブロック及び複数の実ブロックを備えている。このため本実施形態では、仮想アドレス及び実アドレスとして、それぞれ、仮想ブロックアドレス（ＶＢＡ）及び実ブロックアドレス（ＲＢＡ）が用いられる。なお、仮想ブロックアドレス及び実ブロックアドレスが、それぞれ、論理ブロックアドレス及び物理ブロックアドレスと呼ばれることもある。
【００２０】
再び図１を参照する。管理サーバ１３は、論理ユニットを構築し、且つ構築された論理ユニットをホストサーバ１２ａ，１２ｂ及び１２ｃの少なくとも１つに提供する。本実施形態では管理サーバ１３は論理ユニットＬＵ０乃至ＬＵ３を構築する。管理サーバ１３はまた、論理ユニットＬＵ０をホストサーバ１２ａ及び１２ｃに提供し、論理ユニットＬＵ１をホストサーバ１２ａ及び１２ｂに提供する。管理サーバ１３は更に、論理ユニットＬＵ２をホストサーバ１２ｃに提供し、論理ユニットＬＵ３をホストサーバ１２ｂに提供する。つまり、ホストサーバ１２ａは論理ユニットＬＵ０及びＬＵ１をマウントする。ホストサーバ１２ｂは論理ユニットＬＵ１及びＬＵ３をマウントし、ホストサーバ１２ｃは論理ユニットＬＵ０及びＬＵ２をマウントする。
【００２１】
管理サーバ１３は、論理ユニットＬＵ０乃至ＬＵ３を管理するのに用いられる管理情報１３０を保持する。より詳細に述べるならば、管理情報１３０は、管理サーバ１３が有するローカル記憶装置に格納されている。本実施形態において、このローカル記憶装置は、不揮発性の記憶装置、例えばフラッシュメモリのような不揮発性メモリまたはＨＤＤのようなディスク記憶装置である。
【００２２】
管理情報１３０は、論理ユニットＬＵ０乃至ＬＵ３にそれぞれ対応するアドレス管理テーブル（以下、ＡＭテーブルと称する）１３４＿ＬＵ０乃至１３４＿ＬＵ３を含む。ＡＭテーブル（第１のアドレス管理情報）１３４＿ＬＵｉ（ｉ＝０，１，２，３）は、論理ユニットＬＵｉの仮想ブロックアドレス毎に対応するアドレス管理データを保持するエントリを有する。このエントリ（アドレス管理データ）は、詳細を後述するように、論理ユニット番号（ＬＵＮ）フィールド、仮想ブロックアドレスフィールド、ストレージ識別子（ＩＤ）フィールド及び実ブロックアドレスフィールドの組を含む。
【００２３】
管理情報１３０はまた、リビジョンデータ（第１のリビジョンデータ）１３５＿ＬＵ０乃至１３５＿ＬＵ３を含む。リビジョンデータ１３５＿ＬＵ０乃至１３５＿ＬＵ３は、論理ユニットＬＵ０乃至ＬＵ３にそれぞれ対応するＡＭテーブル１３４＿ＬＵ０乃至１３４＿ＬＵ３のリビジョンを示す。本実施形態では、リビジョンデータ１３５＿ＬＵ０乃至１３５＿ＬＵ３は、ＡＭテーブル１３４＿ＬＵ０乃至１３４＿ＬＵ３のリビジョンを示すリビジョン番号（ＲＮ）を含む。図１の例では、ＡＭテーブル１３４＿ＬＵ０，１３４＿ＬＵ１，１３４＿ＬＵ２及び１３４＿ＬＵ３のリビジョン（ｒｅｖ．）は、それぞれ０１（ｒｅｖ．０１），０２（ｒｅｖ．０２），０４（ｒｅｖ．０４）及び０２（ｒｅｖ．０２）である。本実施形態では、リビジョンデータ１３５＿ＬＵ０乃至１３５＿ＬＵ３は、それぞれ対応するＡＭテーブル１３４＿ＬＵ０乃至１３４＿ＬＵ３に付加されているものとする。
【００２４】
ホストサーバ１２ａ，１２ｂ及び１２ｃは、管理サーバ１３に保持されている管理情報１３０に含まれていて、且つ自身がマウントする（つまり、自身が認識可能な）論理ユニットに対応するＡＭテーブルのコピーを保持する。本実施形態では、ホストサーバ１２ａは、ＡＭテーブル（第１のアドレス管理情報）１３４＿ＬＵ０及び１３４＿ＬＵ１のコピーであるＡＭテーブル（第２のアドレス管理情報）１２４ａ＿ＬＵ０及び１２４ａ＿ＬＵ１を保持する。ホストサーバ１２ｂは、ＡＭテーブル（第１のアドレス管理情報）１３４＿ＬＵ１及び１３４＿ＬＵ３のコピーであるＡＭテーブル（第２のアドレス管理情報）１２４ｂ＿ＬＵ１及び１２４ｂ＿ＬＵ３を保持する。ホストサーバ１２ｃは、ＡＭテーブル（第１のアドレス管理情報）１３４＿ＬＵ０及び１３４＿ＬＵ２のコピーであるＡＭテーブル（第２のアドレス管理情報）１２４ｃ＿ＬＵ０及び１２４ｃ＿ＬＵ２を保持する。
【００２５】
また、ホストサーバ１２ａは、ＡＭテーブル１２４ａ＿ＬＵ０及び１２４ａ＿ＬＵ１のリビジョン（リビジョン番号）を示すリビジョンデータ（第２のリビジョンデータ）１２５ａ＿ＬＵ０及び１２５ａ＿ＬＵ１を保持する。ホストサーバ１２ｂは、ＡＭテーブル１２４ｂ＿ＬＵ１及び１２４ｂ＿ＬＵ３のリビジョンを示すリビジョンデータ（第２のリビジョンデータ）１２５ｂ＿ＬＵ１及び１２５ｂ＿ＬＵ３を保持する。ホストサーバ１２ｃは、ＡＭテーブル１２４ｃ＿ＬＵ０及び１２４ｃ＿ＬＵ２のリビジョンを示すリビジョンデータ（第２のリビジョンデータ）１２５ｃ＿ＬＵ０及び１２５ｃ＿ＬＵ２を保持する。
【００２６】
本実施形態では、ＡＭテーブル１２４ａ＿ＬＵ０及び１２４ａ＿ＬＵ１とリビジョンデータ１２５ａ＿ＬＵ０及び１２５ａ＿ＬＵ１とは、ホストサーバ１２ａのＨＢＡ１２０ａが有するローカル記憶装置に格納されている。本実施形態において、このローカル記憶装置は、不揮発性の記憶装置、例えばフラッシュメモリのような不揮発性メモリである。同様に、ＡＭテーブル１２４ｂ＿ＬＵ１及び１２４ｂ＿ＬＵ３と、リビジョンデータ１２５ｂ＿ＬＵ１及び１２５ｂ＿ＬＵ３とは、ホストサーバ１２ｂのＨＢＡ１２０ｂが有するローカル記憶装置に格納されている。同様に、ＡＭテーブル１２４ｃ＿ＬＵ０及び１２４ｃ＿ＬＵ２とリビジョンデータ１２５ｃ＿ＬＵ０及び１２５ｃ＿ＬＵ２とは、ホストサーバ１２ｃのＨＢＡ１２０ｃが有するローカル記憶装置に格納されている。但し図１では、ＡＭテーブル及びリビジョンデータは、作図の都合でＨＢＡの外側に配置されている。
【００２７】
ストレージ装置１１ａ及び１１ｂは、それぞれ更新管理テーブル（以下、ＵＭテーブルと称する）１１０ａ及び１１０ｂを保持する。本実施形態では、ＵＭテーブル（更新管理情報）１１０ａ及び１１０ｂは、ストレージ装置１１ａ及び１１ｂそれぞれのコントローラが有するローカル記憶装置に格納されている。このローカル記憶装置は、不揮発性の記憶装置、例えばフラッシュメモリのような不揮発性メモリまたはＨＤＤのようなディスク記憶装置である。
【００２８】
ＵＭテーブル１１０ａ及び１１０ｂは、少なくとも、ストレージ装置１１ａ及び１１ｂの物理的な記憶領域の一部が割り当てられる論理ユニットＬＵｉ（ここでは、ｉ＝０，１，２，３）毎に、対応する更新管理データを保持するエントリを有する。このエントリ（更新管理データ）は、論理ユニット番号（ＬＵＮ）フィールド、リビジョン番号（ＲＮ）フィールド及び更新サーバＩＤフィールドの組を含む。ＬＵＮフィールドは、更新管理データに対応する論理ユニットＬＵｉの論理ユニット番号を保持するのに用いられる。論理ユニット番号は、論理ユニットＬＵｉの識別子として用いられる。ＲＮフィールドは、更新管理データに対応する論理ユニットＬＵｉに関するＡＭテーブル１３４＿ＬＵｉの最新のリビジョンを表す情報（第３のリビジョンデータ）、例えばリビジョン番号を保持するのに用いられる。更新サーバＩＤフィールドは、更新管理データに対応する論理ユニットＬＵｉに関するＡＭテーブル１３４＿ＬＵｉのリビジョンを更新するよう管理サーバ１３に要求したホストサーバのＩＤ（つまり、更新サーバＩＤ）を保持するのに用いられる。更新サーバＩＤで示されるホストサーバの要求に基づいて、管理サーバ１３がＡＭテーブル１３４＿ＬＵｉのリビジョンを更新した結果として、更新後のＡＭテーブル１３４＿ＬＵｉのリビジョン番号がＲＮフィールドに保持される。つまり、更新管理データのＬＵＮフィールドは、更新管理データに対応する論理ユニットＬＵｉの論理ユニット番号を保持し、更新管理データの更新サーバＩＤフィールドは、更新管理データに対応する論理ユニットＬＵｉに関するＡＭテーブル１３４＿ＬＵｉのリビジョンの更新を要求したホストサーバのＩＤを保持し、更新管理データのＲＮフィールドは、更新後のＡＭテーブル１３４＿ＬＵｉのリビジョン番号を保持する。
【００２９】
図３は、図１に示される管理情報１３０のデータ構造の例を示す。管理情報１３０は、ポインタリスト１３１と、ポインタテーブル１３２＿０乃至１３２＿３と、論理ユニットＬＵ０乃至ＬＵ３に対応するホストサーバリスト１３３＿ＬＵ０乃至１３３＿ＬＵ３と、論理ユニットＬＵ０乃至ＬＵ３に対応するＡＭテーブル１３４＿ＬＵ０乃至１３４＿ＬＵ３と、論理ユニットＬＵ０乃至ＬＵ３に対応するリビジョンデータから構成される。図３では、作図の都合で、論理ユニットＬＵ０及びＬＵ１に対応する、ホストサーバリスト、ＡＭテーブル及びリビジョンデータのみが示されている。つまり、図３では、ホストサーバリスト１３３＿ＬＵ０及び１３３＿ＬＵ１と、ＡＭテーブル１３４＿ＬＵ０及び１３４＿ＬＵ１と、リビジョンデータ１３５＿ＬＵ０及び１３５＿ＬＵ１は示されているものの、論理ユニットＬＵ２及びＬ３１に対応する、ホストサーバリスト、ＡＭテーブル及びリビジョンデータは省略されている。
【００３０】
ポインタリスト１３１は、第１の要素と、第２の要素の配列とから構成される。第１の要素は例えばポインタリスト１３１の先頭の要素であり、第２の要素の数を示すリスト管理データＮ＿ＬＵを含む。本実施形態において、リスト管理データＮ＿ＬＵは、管理サーバ１３が管理する（管理サーバ１３によって提供される）論理ユニットＬＵ０乃至ＬＵ３の数に一致する４（Ｎ＿ＬＵ＝４）を示す。第２の要素の配列は、リスト管理データＮ＿ＬＵで示される数のポインタＰＰ＿ＬＵ０乃至ＰＰ＿ＬＵ３を含む。つまり、ポインタリスト１３１には、リスト管理データＮ＿ＬＵ及びポインタＰＰ＿ＬＵ０乃至ＰＰ＿ＬＵ３が保持される。
【００３１】
ポインタＰＰ＿ＬＵ０乃至ＰＰ＿ＬＵ３は、論理ユニットＬＵ０乃至ＬＵ３に対応し、それぞれポインタテーブル１３２＿０乃至１３２＿３を指し示す。ポインタテーブル１３２＿０乃至１３２＿３には、ポインタ（ホストサーバリストポインタ）ＨＳＬＰ＿ＬＵ０乃至ＨＳＬＰ＿ＬＵ３及びポインタ（ＡＭテーブルポインタ）ＡＭＴＰ＿ＬＵ０乃至ＡＭＴＰ＿ＬＵ３が保持される。
【００３２】
ポインタＨＳＬＰ＿Ｕ０乃至ＨＳＬＰ＿ＬＵ３は、ホストサーバリスト１３３＿ＬＵ０乃至１３３＿ＬＵ３を指し示す。ポインタＡＭＴＰ＿ＬＵ０乃至ＡＭＴＰ＿ＬＵ３は、ＡＭテーブル１３４＿ＬＵ０乃至１３４＿ＬＵ３（及びリビジョンデータ１３５＿ＬＵ０乃至１３５＿ＬＵ３）を指し示す。但し図３では、ホストサーバリスト１３３＿ＬＵ２及び１３３＿ＬＵ３と、ＡＭテーブル１３４＿ＬＵ２及び１３４＿ＬＵ３（更にはリビジョンデータ１３５＿ＬＵ２及び１３５＿ＬＵ３）は、作図の都合で省略されている。
【００３３】
ホストサーバリスト１３３＿ＬＵｉ（ｉ＝０，１，２，３）は、第３の要素と、第４の要素の配列とから構成される。第３の要素は例えばホストサーバリスト１３３＿ＬＵｉの先頭の要素であり、第４の要素の数を示すリスト管理データＮ＿ＨＳを含む。第４の要素の配列は、リスト管理データＮ＿ＨＳで示される数（ｊ）のホストサーバのＩＤ（ホストサーバＩＤ）を含む。ホストサーバリスト１３３＿ＬＵｉに保持されるｊ個のホストサーバＩＤは、論理ユニットＬＵｉが提供（マウント）されるｊ個のホストサーバを指す。本実施形態では、例えば、論理ユニットＬＵ０はホストサーバ１２ａ及び１２ｃに提供され、論理ユニットＬＵ１はホストサーバ１２ａ及び１２ｂに提供される。ここで、ホストサーバ１２ａ，１２ｂ及び１２ｃのホストサーバＩＤが、ＨＳＩＤａ，ＨＳＩＤｂ及びＨＳＩＤｃであるものとする。この場合、ホストサーバリスト１３３＿ＬＵ０にはＨＳＩＤａ及びＨＳＩＤｃが保持され、ホストサーバリスト１３３＿ＬＵ１にはＨＳＩＤａ及びＨＳＩＤｂが保持される。なお、図３では省略されているが、ホストサーバリスト１３３＿ＬＵ２にはＨＳＩＤｃが保持され、ホストサーバリスト１３３＿ＬＵ３にはＨＳＩＤｂが保持される。
【００３４】
次に、本実施形態の動作について、リードアクセス処理を例に図４を参照して説明する。図４は、リードアクセス処理の典型的な手順を示すフローチャートである。図４において、フローチャートの各ステップを表す図形（矩形または菱形の図形）内に記載された下線が付された文字列は、対応するステップの動作の主体を表す。これは、図７，８及び１０に示される後述のフローチャートにおいても同様である。
【００３５】
今、例えばホストサーバ１２ａにおいて、論理ユニットＬＵ０へのリードアクセスの要求が発生したものとする。するとホストサーバ１２ａ（より詳細には、ホストサーバ１２ａのＨＢＡ１２０ａ）は、自身が保持するＡＭテーブル１３４＿ＬＵ０のコピー（即ちＡＭテーブル１２４ａ＿ＬＵ０）に従ってリードコマンドを生成して、当該リードコマンドをストレージ装置に対して発行する（ステップＳ１）。
【００３６】
図５は、ＡＭテーブル１３４＿ＬＵｉ（ｉ＝０，１，２，３）のデータ構造の例を示す。ＡＭテーブル１３４＿ＬＵｉは、論理ユニットＬＵｉの仮想ブロックアドレス毎に対応するアドレス管理データを保持するエントリを有する。このエントリ（アドレス管理データ）は、論理ユニット番号（ＬＵＮ）フィールド、仮想ブロックアドレスフィールド、ストレージＩＤフィールド及び実ブロックアドレスフィールドの組を含む。
【００３７】
ＬＵＮフィールドは、対応する論理ユニットＬＵｉに固有の番号、つまり論理ユニット番号（ＬＵＮ＝ＬＵＮｉ）を保持するのに用いられる。仮想ブロックアドレスフィールドは、対応する論理ユニットＬＵｉ内の仮想ブロックアドレス（ＶＢＡ）を保持するのに用いられる。ストレージＩＤフィールドは、対応する仮想ブロックアドレスに割り当てられる実ブロックアドレスで指定される記憶位置を含むストレージ装置のＩＤ、つまりストレージＩＤ（ＳＩＤ）を保持するのに用いられる。実ブロックアドレスフィールドは、対応する仮想ブロックアドレス（ＶＢＡ）に割り当てられる実ブロックアドレス（ＲＢＡ）を保持するのに用いられる。ＡＭテーブル１３４＿ＬＵｉのコピーのデータ構造も、図５に示される当該ＡＭテーブル１３４＿ＬＵｉのそれと同様である。
【００３８】
図５に示されるＡＭテーブル１３４＿ＬＵｉの場合、例えば、論理ユニットＬＵｉの仮想ブロックアドレスＶＢＡ０，ＶＢＡ１及びＶＢＡ２には、ストレージＩＤがＳＩＤａのストレージ装置の実ブロックアドレスＲＢＡ０，ＲＢＡ１及びＲＢＡ２が割り当てられている。ＳＩＤａは、ストレージ装置１１ａのストレージＩＤを示すものとする。また、図５に示されるＡＭテーブル１３４＿ＬＵｉがＡＭテーブル１３４＿ＬＵ０（ｉ＝０）であり、ホストサーバ１２ａ内のＡＭテーブル１２４ａ＿ＬＵ０が、当該ＡＭテーブル１３４＿ＬＵｉ（１３４＿ＬＵ０）のコピーであるものとする。更に、ホストサーバ１２ａにおいて発生したリードアクセス要求が、論理ユニットＬＵ０の仮想ブロックアドレスＶＢＡ０からのデータリードを示すものとする。
【００３９】
この場合、ホストサーバ１２ａは、論理ユニットＬＵ０の仮想ブロックアドレスＶＢＡ０とＡＭテーブル１２４ａ＿ＬＵ０とに基づいて、実際に（物理的に）アクセスすべきストレージ装置のＩＤ（ストレージＩＤ）及び実ブロックアドレスを決定する。ここでは、ストレージ装置１１ａのＩＤ（ＳＩＤａ）及び実ブロックアドレスＲＢＡ０が決定される。またホストサーバ１２ａは、リビジョンデータ１２５ａ＿ＬＵ０に基づいて、ＡＭテーブル１２４ａ＿ＬＵ０のリビジョン（つまり、自身が認識しているＡＭテーブル１３４＿ＬＵ０のリビジョン）を特定する。ここでは、リビジョン０１（ＲＮ＝０１）が特定される。
【００４０】
したがって、ステップＳ１においてホストサーバ１２ａは、ストレージ装置１１ａ内の実ブロックアドレスＲＢＡ０からのデータリードを指定するリードコマンドを、当該ストレージ装置１１ａに発行する。このリードコマンドは、上述のように決定された実ブロックアドレスＲＢＡ０を含む。また、リードコマンドは、上述のように特定されたリビジョン０１を示すリビジョン番号（ＲＮ＝０１）を含む。
【００４１】
つまり、リードコマンドは、アクセスされるべきアドレスだけでなく、当該アドレスを取得するのに用いられたＡＭテーブル１２４ａ＿ＬＵ０のリビジョン番号を、ストレージ装置１１ａに通知するのに用いられる。このリードコマンドを用いてストレージ装置１１ａに通知されるリビジョン番号は、当該リードコマンドを発行するホストサーバ１２ａが認識するＡＭテーブル１３４＿ＬＵ０のリビジョン番号を指す。このリードコマンドには、例えばコマンドデスクリプタブロック（ＣＤＢ）が用いられる。ＣＤＢは、スモールコンピュータシステムインタフェース（ＳＣＳＩ）で定義されている。
【００４２】
図６は、本実施形態で適用されるコマンド（ＣＤＢ）の典型的なフォーマットを示す。図６に示されるように、本実施形態では、１２バイトのＣＤＢが用いられる。１２バイトのＣＤＢの先頭バイト（第０バイト）は、オペレーションコードを保持するのに用いられる。オペレーションコードは、３ビット（上位）のグループコードと５ビット（下位）のコマンドコードとから構成される。グループコードが６または７（つまり、グループ６または７）の場合、対応するＣＤＢはベンダー固有に定義されるＣＤＢであり、一般には６または１０バイトＣＤＢである。本実施形態は、この定義を拡張して、１０バイトＣＤＢの後ろに２バイトが追加された１２バイトＣＤＢを、拡張されたグループ７のＣＤＢ（以下、拡張ＣＤＢと称する）として定義する。
【００４３】
拡張ＣＤＢの第１バイトの上位３ビットは、論理ユニット番号（ＬＵＮ）を保持するのに用いられる。拡張ＣＤＢの第２乃至第５バイトは、実ブロックアドレスを保持するのに用いられる。一般にＣＤＢの第２乃至第５バイトは、論理ブロックアドレスを保持するのに用いられる。つまり本実施形態で適用される拡張ＣＤＢの第２乃至第５バイトには、論理ブロックアドレスに代えて実ブロックアドレスが保持される。上述の例では、この実ブロックアドレスには、論理ユニットＬＵ０の仮想ブロックアドレスＶＢＡ０とＡＭテーブル１２４ａ＿ＬＵ０とに基づいて決定された実ブロックアドレスＲＢＡ０が用いられる。拡張ＣＤＢの第２乃至第５バイトに保持される実ブロックアドレスは、転送されるデータブロックの先頭位置（先頭実ブロックアドレス）を示す。拡張ＣＤＢの第６バイトは予備として用いられる。拡張ＣＤＢの第７及び第８バイトは、転送されるデータブロックの数（つまり、転送データ長）を保持するのに用いられる。拡張ＣＤＢの第９及び第１０バイトは、ＡＭテーブルのリビジョンを示す情報（例えばＲＮ）を保持するのに用いられる。このＲＮ（リビジョン番号）は、拡張ＣＤＢにおいて新たに定義される情報である。このように本実施形態では、拡張ＣＤＢ（コマンド）に、ＡＭテーブルのＲＮ（リビジョン情報）が含められる。拡張ＣＤＢの第１１バイト（最終バイト）は、コントロールバイトを保持するのに用いられる。
【００４４】
ストレージ装置１１ａは、ホストサーバ１２ａによって発行されたリードコマンドを受信すると、当該受信リードコマンドの指定するリード動作を正常に実行可能であるかを判定する。即ちストレージ装置１１ａは、受信リードコマンドに関するステータスがグッド（ｇｏｏｄ）であるかを判定する（ステップＳ２）。
【００４５】
以下、ステップＳ２における判定の詳細について説明する。まず、ストレージ装置１１ａは、受信されたリードコマンドに含まれている論理ユニット番号ＬＵＮの示す論理ユニットに対応する最新のＡＭテーブルのリビジョン番号（ＲＮ）を次のように取得する。ストレージ装置１１ａは、受信されたリードコマンドに含まれている論理ユニット番号ＬＵＮ（ここでは、ＬＵＮ＝ＬＵＮ０）に基づいて、ＵＭテーブル１１０ａを参照する。そしてストレージ装置１１ａは、論理ユニット番号ＬＵＮ（ＬＵＮ０）に対応付けられたＵＭテーブル１１０ａ内のエントリから、リビジョン番号（ＲＮ）を取得する。論理ユニット番号ＬＵＮがＬＵＮ０である本実施形態では、最新のＡＭテーブル１３４＿ＬＵ０のリビジョン番号が取得される。
【００４６】
次にストレージ装置１１ａは、受信リードコマンドに含まれているリビジョン番号を、取得されたリビジョン番号（つまり、最新のＡＭテーブル１３４＿ＬＵ０のリビジョン番号）と比較する。そしてストレージ装置１１ａは、上述の両リビジョン番号が一致し、且つ受信されたリードコマンドで指定されたデータリードが正常に実行可能であるかに基づいて、当該リードコマンドの実行に関するステータスがグッドであるかを判定する（ステップＳ２）。
【００４７】
もし、グッドであるならば（ステップＳ２のＹｅｓ）、ストレージ装置１１ａは、ホストサーバ１２ａからのリードコマンドに対する応答として、周知のグッドステータス（つまり、ステータスバイトを用いて構成されるグッドステータス）を当該ホストサーバ１２ａに返す（ステップＳ３）。そしてストレージ装置１１ａは、リードコマンドで指定されたリード動作を実行する（ステップＳ４）。
【００４８】
これに対し、リードコマンドの実行に関するステータスがグッドでなく（ステップＳ２のＮｏ）、しかもその要因がリビジョンの不一致であるものとする（ステップＳ５のＹｅｓ）。この場合、ストレージ装置１１ａは、ホストサーバ１２ａからのリードコマンドに対する応答として、リビジョン不一致を示すエラーステータスを当該ホストサーバ１２ａに返す（ステップＳ６）。本実施形態において、リビジョン不一致を示すエラーステータス（エラーステータスバイト）は、例えば“１１０００”のような、通常のステータスバイトで定義されていないパターン（つまり、予備として定義されているパターン）を用いて実現される。
【００４９】
ホストサーバ１２ａは、リビジョン不一致を示すエラーステータスを受け取ると、管理サーバ１３から論理ユニットＬＵ０に関する最新のＡＭテーブル１３４＿ＬＵ０のコピーを取得して、当該コピーを最新のＡＭテーブル１２４ａ＿ＬＵ０として保持する（ステップＳ７）。つまり、ホストサーバ１２ａは、自身が保持するＡＭテーブル１２４ａ＿ＬＵ０を、管理サーバ１３から取得したＡＭテーブル１３４＿ＬＵ０のコピーで更新する。ＡＭテーブル１３４＿ＬＵ０にはリビジョンデータ１３５＿ＬＵ０が付されている。したがってホストサーバ１２ａは、ＡＭテーブル１３４＿ＬＵ０のコピーを取得することにより、リビジョンデータ１３５＿ＬＵ０のコピーも取得する。これによりホストサーバ１２ａは、ＡＭテーブル１２４ａ＿ＬＵ０を最新の内容に更新すると同時に、リビジョンデータ１２５ａ＿ＬＵ０も最新のリビジョン番号を示すように更新する。
【００５０】
次にホストサーバ１２ａはステップＳ１に戻り、最新のＡＭテーブル１２４ａ＿ＬＵ０（つまり、最新のＡＭテーブル１３４＿ＬＵ０のコピー）に従ってリードコマンドを生成し直す。ステップＳ１においてホストサーバ１２ａは、生成し直されたリードコマンドをストレージ装置１１ａに対して発行する。
【００５１】
一方、リードコマンドの実行に関するステータスがグッドでなく（ステップＳ２のＮｏ）、しかもその要因がリビジョンの不一致以外であるものとする（ステップＳ５のＮｏ）。このようなエラーとして、例えば、ストレージ装置１１ａによって認識不可の実ブロックアドレスが、リードコマンドに含まれている場合が挙げられる。このようなエラーの場合、ストレージ装置１１ａは従来技術と同様に対応するエラー処理を実行する（ステップＳ８）。
【００５２】
本実施形態によれば、ホストサーバ１２ａによってストレージ装置１１ａに発行されるコマンドに、当該ホストサーバ１２ａが保持するＡＭテーブル１２４＿ＬＵ０のＲＮ（リビジョン番号）が含められる。これによりホストサーバ１２ａは、当該ホストサーバ１２ａが保持するＡＭテーブル１２４＿ＬＵ０（ＡＭテーブル１３４＿ＬＵ０のコピー）のリビジョンを、特別のプロトコルを用いることなく、アクセスの要求と同時にストレージ装置１１ａに通知できる。
【００５３】
ストレージ装置１１ａは、ホストサーバ１２ａによって発行されたリードコマンドを受信した場合に、当該リードコマンドに含まれているリビジョン番号を、当該ストレージ装置１１ａが保持するリビジョン番号と比較することができる。つまりストレージ装置１１ａは、リードコマンドの発行元（ホストサーバ１２ａ）が保持するＡＭテーブル１２４＿ＬＵ０（ＡＭテーブル１３４＿ＬＵ０のコピー）が最新であるかを、当該リードコマンドに基づいて判定することができる。本実施形態によれば、この判定を可能とするための特別なアクセスは不要であり、そのためのオーバーヘッドも増加しない。また本実施形態によれば、ストレージ装置における上述の判定の導入により、管理サーバ１３が保持するＡＭテーブル１３４＿ＬＵ０のコピーを全てのホストサーバに配信する処理を不要とすることができる。
【００５４】
上述の実施形態の効果は、ホストサーバ１２ｂ及び１２ｃにおいて論理ユニットへのアクセスの要求が発生した場合にも、同様に得られることは明白である。また本実施形態によれば、ホストサーバはＡＭテーブルのコピーを保持しているため、論理ユニットへのアクセスの要求が発生する都度、管理サーバ１３に実ブロックアドレスを問い合わせる必要がない。このため本実施形態によれば、短い待ち時間（low latency）でのアクセスが実現できる。また本実施形態によれば、管理サーバ１３へのアクセスが集中しないので、ボトルネックのない共有ストレージシステムを実現でき、しかもホストサーバの数またはストレージ装置の数（もしくは記憶容量）の増加に見合ったシステム性能を得ることができる。
【００５５】
次に、本実施形態におけるライトアクセス処理について図７乃至図９を参照して説明する。図７はライトアクセス処理の典型的な手順を示すフローチャート、図８は図７に示されるライトアクセス処理に含まれているＡＭ（アドレス管理）テーブル更新処理の典型的な手順を示すフローチャートである。図９は、ＡＭテーブル更新処理を説明するための図である。
【００５６】
今、例えばホストサーバ１２ａにおいて、論理ユニットＬＵ０へのライトアクセスの要求が発生したものとする。するとホストサーバ１２ａは、要求されたライトアクセスが、管理サーバ１３に保持されているＡＭテーブル１３４＿ＬＵ０の更新を必要とするかを判定する（ステップＳ１１）。例えば、論理ユニットＬＵ０内の新規領域へのライトの場合、ＡＭテーブル１３４＿ＬＵ０の更新が必要となる。この場合、ライトアクセスの実行前に、ＡＭテーブル１３４＿ＬＵ０が更新される必要がある。新規領域とは、論理ユニットＬＵ０に含まれていて、且つストレージ装置１１ａまたは１１ｂ内の記憶領域が割り当てられていない記憶領域（つまりＡＭテーブル１３４＿ＬＵ０に未登録の記憶領域）を指す。
【００５７】
そこで、ＡＭテーブル１３４＿ＬＵ０の更新が必要な場合（ステップＳ１１のＹｅｓ）、ホストサーバ１２ａは、その旨を管理サーバ１３に通知する（ステップＳ１２）。この通知には、ホストサーバ１２ａが保持するＡＭテーブル１２４ａ＿ＬＵ０のリビジョンを示すリビジョン番号（ＲＮ）が付されている。このＡＭテーブル１２４ａ＿ＬＵ０のリビジョン番号は、ホストサーバ１２ａが保持するリビジョンデータ１２５ａ＿ＬＵ０によって示される。
【００５８】
管理サーバ１３は、ホストサーバ１２ａからの通知に基づいて、当該ホストサーバ１２ａが保持するＡＭテーブル１２４ａ＿ＬＵ０のリビジョンが最新であるかを、次のように判定する（ステップＳ１３）。まず管理サーバ１３は、ホストサーバ１２ａからの通知に含まれているリビジョン番号を、自身が保持するリビジョンデータ１３５＿ＬＵ０によって示されるリビジョン番号（つまり、最新のリビジョン番号）と比較する。そして管理サーバ１３は、両リビジョン番号が一致するかに基づいて、ホストサーバ１２ａが保持するＡＭテーブル１２４ａ＿ＬＵ０のリビジョンが最新であるかを判定する。
【００５９】
ここで、ＡＭテーブル１２４ａ＿ＬＵ０のリビジョンが最新でないものとする（ステップＳ１３のＮｏ）。この場合、管理サーバ１３は、ホストサーバ１２ａからの上述の通知（ステップＳ１２）に対する応答として、自身が保持する最新のＡＭテーブル１３４＿ＬＵ０及びリビジョンデータ１３５＿ＬＵ０のコピーを当該ホストサーバ１２ａに返す。ホストサーバ１２ａは、このコピーに基づいて、ＡＭテーブル１２４ａ＿ＬＵ０及びリビジョンデータ１２５ａ＿ＬＵ０を更新する（ステップＳ１４）。
【００６０】
すると管理サーバ１３は、ホストサーバ１２ａ及びストレージ装置と共同して、ＡＭテーブル更新処理（ステップＳ１５）を実行する。本実施形態において、ＡＭテーブル更新処理を管理サーバ１３及びホストサーバ１２ａと共同して実行するストレージ装置は、自身の記憶領域が論理ユニットＬＵ０に割り当てられているストレージ装置（つまり、ストレージ装置１１ａ及び１１ｂ）である。これに対し、ＡＭテーブル１２４ａ＿ＬＵ０のリビジョンが最新であるならば（ステップＳ１３のＹｅｓ）、管理サーバ１３は、ホストサーバ１２ａ及びストレージ装置と共同して、ＡＭテーブル更新処理（ステップＳ１５）を実行する。
【００６１】
以下、ＡＭテーブル更新処理（ステップＳ１５）について、図８及び図９を参照して説明する。まずホストサーバ１２ａは、図９において矢印Ａ１で示されるように、管理サーバ１３にＡＭテーブル１３４＿ＬＵ０の変更（更新）を要求する（ステップＳ３１）。この要求は、データがライトされるべき論理ユニットＬＵ０内の仮想ブロックアドレス（先頭のライトアドレス）とサイズ（ライトされるデータブロックの数）とを含む。即ちホストサーバ１２ａは、ＡＭテーブル１３４＿ＬＵ０の変更を管理サーバ１３に要求することにより、ライトアドレス（仮想ブロックアドレス）とサイズとを当該管理サーバ１３に通知する。ここでは、ライトアドレスは、仮想ブロックアドレスＶＢＡ３であり、サイズ（ライトされるデータブロックの数）は１であるものとする。
【００６２】
管理サーバ１３は、ホストサーバ１２ａによって通知されたライトアドレス（仮想ブロックアドレスＶＢＡ３）及びサイズ（＝１）の示す論理ユニットＬＵ０内の記憶領域（新規領域）に割り当てられるべき、ストレージ装置１１ａまたは１１ｂ内の記憶領域を決定する（ステップＳ３２）。ここでは、論理ユニットＬＵ０内の新規領域は、仮想ブロックアドレスＶＢＡ３で指定される記憶領域であり、ストレージ装置１１ａまたは１１ｂ内の空き記憶領域の一部が、当該新規領域に割り当てられるべき記憶領域として決定されるものとする。また、決定された記憶領域が、ストレージ装置１１ａまたは１１ｂに含まれていて、且つ実ブロックアドレスＲＢＡ３で指定される記憶領域であるものとする。ステップＳ３２において管理サーバ１３は、決定された記憶領域を、論理ユニットＬＵ０内の新規領域に割り当てる。即ち管理サーバ１３は、ホストサーバ１２ａによって通知された論理ユニットＬＵ０内の新規領域の仮想ブロックアドレスＶＢＡ３に、決定された記憶領域の実ブロックアドレスＲＢＡ３を割り当てる。
【００６３】
次に管理サーバ１３は、現在、ホストサーバ１２ａ以外のホストサーバからの変更要求（つまり、ステップＳ３１に相当する変更要求）を当該管理サーバ１３が処理しているかを判定する（ステップＳ３３）。もし、他のホストサーバからの変更要求を処理しているならば（ステップＳ３３のＹｅｓ）、管理サーバ１３は当該他のホストサーバからの変更要求の処理の完了を待つ（ステップＳ３４）。
【００６４】
これに対し、他のホストサーバからの変更要求を処理していないならば（ステップＳ３３のＮｏ）、管理サーバ１３はステップＳ３５に進む。ステップＳ３５において管理サーバ１３は、仮想ブロックアドレスＶＢＡ３への実ブロックアドレスＲＢＡ３の割り当て（ステップＳ３２）が反映されるように、ＡＭテーブル１３４＿ＬＵ０及びリビジョンデータ１３５＿ＬＵ０を更新する。即ち管理サーバ１３は、ホストサーバ１２ａによって通知された仮想ブロックアドレスＶＢＡ３と当該仮想ブロックアドレスＶＢＡ３に割り当てられた実ブロックアドレスＲＢＡ３とを含むアドレス管理データを、図９において矢印Ａ２で示されるように、ＡＭテーブル１３４＿ＬＵ０に追加する。また、リビジョンデータ１３５＿ＬＵ０の示すリビジョン番号を、図９において矢印Ａ３で示されるように変更する。ここでは、リビジョンデータ１３５＿ＬＵ０の示すリビジョン番号が０１から０２に変更される。この変更されたリビジョンデータ１３５＿ＬＵ０は、更新されたＡＭテーブル１３４＿ＬＵ０のリビジョン（リビジョン番号）が０２であることを示す。
【００６５】
次に管理サーバ１３は、ＡＭテーブル１３４＿ＬＵ０の更新を、論理ユニットＬＵ０に割り当てられた記憶領域を有するストレージ装置に通知する（ステップＳ３６）。本実施形態において論理ユニットＬＵ０に割り当てられた記憶領域を有するストレージ装置は、ストレージ装置１１ａ及び１１ｂである。この場合、ＡＭテーブル１３４＿ＬＵ０の更新が、図９において矢印Ａ４で示されるようにストレージ装置１１ａに通知される。また、図９では省略されているが、ＡＭテーブル１３４＿ＬＵ０の更新は、ストレージ装置１１ｂにも通知される。この通知は、ＡＭテーブル１３４＿ＬＵ０の更新を要求したホストサーバ１２ａのＩＤと、論理ユニットＬＵ０の論理ユニット番号ＬＵ０とを含む。
【００６６】
ストレージ装置１１ａは、管理サーバ１３からの更新通知を受け取ると、ＡＭテーブル１３４＿ＬＵ０と対応付けられた論理ユニットＬＵ０（つまり、更新通知で指定された論理ユニットＬＵ０）へのアクセスをロックする（ステップＳ３７）。またストレージ装置１１ｂもストレージ装置１１ａと同様にステップＳ３７を実行する。次にストレージ装置１１ａは、ＵＭテーブル１１０ａに含まれていて、且つ論理ユニットＬＵ０の論理ユニット番号ＬＵ０に対応付けられているリビジョン番号（ＲＮ）及び更新サーバＩＤを、図９において矢印Ａ５で示されるように更新する（ステップＳ３８）。またストレージ装置１１ｂもストレージ装置１１ａと同様に、ステップＳ３８を実行する。ここでは、リビジョン番号は０１から０２に更新され、更新サーバＩＤはホストサーバ１２ａのホストサーバＩＤに更新される。
【００６７】
次にストレージ装置１１ａは、ＵＭテーブル１１０ａの更新の完了を、図９において矢印Ａ６で示されるように管理サーバ１３に通知し、しかる後に論理ユニットＬＵ０へのアクセスがロックされている状態を解除する（ステップＳ３９）。またストレージ装置１１ｂもストレージ装置１１ａと同様に、ステップＳ３９を実行する。
【００６８】
すると管理サーバ１３は、更新されたＡＭテーブル１３４＿ＬＵ０及びリビジョンデータ１３５＿ＬＵ０のコピーを、図９において矢印Ａ７で示されるようにホストサーバ１２ａに送信する（ステップＳ４０）。ホストサーバ１２ａは、送信されたＡＭテーブル１３４＿ＬＵ０及びリビジョンデータ１３５＿ＬＵ０のコピーを、最新のＡＭテーブル１２４ａ＿ＬＵ０及びリビジョンデータ１２５ａ＿ＬＵ０として保持する（ステップＳ４１）。つまり、ホストサーバ１２ａは、自身が保持するＡＭテーブル１２４ａ＿ＬＵ０及びリビジョンデータ１２５ａ＿ＬＵ０を、送信されたＡＭテーブル１３４＿ＬＵ０及びリビジョンデータ１３５＿ＬＵ０のコピーで更新する。これにより、ＡＭテーブル更新処理（ステップＳ１５）は終了する。
【００６９】
次にホストサーバ１２ａは、更新されたＡＭテーブル１２４ａ＿ＬＵ０に従って、図６に示されるデータ構造を有するライトコマンド（ＣＤＢ）を生成して、当該ライトコマンドをストレージ装置に対して発行する（ステップＳ１６）。ここでは、図９において矢印Ａ８で示されるように、ホストサーバ１２ａからストレージ装置１１ａにライトコマンドが発行されるものとする。このライトコマンドの詳細についての説明は省略する。必要があれば、後述のステップＳ１８で発行されるライトコマンドの説明を参照されたい。
【００７０】
ストレージ装置１１ａは、ホストサーバ１２ａによって発行されたライトコマンドを受信する。この場合、ストレージ装置１１ａは受信ライトコマンドで指定されたライト動作を実行する（ステップＳ１７）。なお、図７のフローチャートでは、ストレージ装置１１ａがライトコマンドを受信した際の受信ライトコマンドの実行に関するステータスについての記載は省略されている。必要があれば、ステップＳ１８で発行されるライトコマンドがストレージ装置１１ａによって受信された場合の説明を参照されたい。
【００７１】
次に、ホストサーバ１２ａで発生したライトアクセスの要求が、ＡＭテーブル１３４＿ＬＵ０の更新を必要としないものとする（ステップＳ１１のＮｏ）。例えば、論理ユニットＬＵ０内の既存のデータを変更するだけのライトアクセスは、ＡＭテーブル１３４＿ＬＵ０の更新を必要としない。このような場合、ホストサーバ１２ａは、現在自身が保持しているＡＭテーブル１２４ａ＿ＬＵ０に従ってライトコマンドを生成して、当該ライトコマンドをストレージ装置に対して発行する（ステップＳ１８）。ここでは、ストレージ装置１１ａにライトコマンドが発行されたものとする。このライトコマンドは、論理ユニットＬＵ０を示す論理ユニット番号ＬＵ０を含む。このライトコマンドは、仮想ブロックアドレスＶＢＡ３に対応付けられた実ブロックアドレスＲＢＡ３、及び転送データ長（ライトされるデータブロックの数＝１）をも含む。このライトコマンドは更に、ＡＭテーブル１２４ａ＿ＬＵ０のリビジョンを示すリビジョン番号（ＲＮ）も含む。このリビジョン番号には、ホストサーバ１２ａが保持しているリビジョンデータ１２５ａ＿ＬＵ０が用いられる。
【００７２】
ストレージ装置１１ａは、ホストサーバ１２ａによって発行されたライトコマンドを受信すると、当該ホストサーバ１２ａに保持されているＡＭテーブル１２４ａ＿ＬＵ０のリビジョンが最新であるかを次のように判定する（ステップＳ１９）。まずストレージ装置１１ａは、受信されたライトコマンドに含まれている論理ユニット番号ＬＵＮ０に対応付けられたＵＭテーブル１１０ａ内のエントリから、リビジョン番号（ＲＮ）を取得する。次にストレージ装置１１ａは、受信ライトコマンドに含まれているリビジョン番号を、取得されたリビジョン番号と比較する。そしてストレージ装置１１ａは、両リビジョン番号が一致しているかに基づいて、ＡＭテーブル１２４ａ＿ＬＵ０のリビジョンが最新であるかを判定する。
【００７３】
もし、ＡＭテーブル１２４ａ＿ＬＵ０のリビジョンが最新であるならば（ステップＳ１９のＹｅｓ）、ストレージ装置１１ａはステップＳ１７に進んで、受信ライトコマンドで指定されたライト動作を実行する。より詳細に述べるならば、ＡＭテーブル１２４ａ＿ＬＵ０のリビジョンが最新であることを含めて、受信ライトコマンドの実行に関するステータスがグッドである場合、ストレージ装置１１ａは受信ライトコマンドで指定されたライト動作を実行する（ステップＳ１７）。
【００７４】
これに対し、ＡＭテーブル１２４ａ＿ＬＵ０のリビジョンが最新でないならば（ステップＳ１９のＮｏ）、ストレージ装置１１ａはリビジョン不一致を示すエラーステータスをホストサーバ１２ａに返す。即ち、受信ライトコマンドの実行に関するステータスがグッドでなく、しかもその要因がリビジョンの不一致であるならば、ストレージ装置１１ａはリビジョン不一致を示すエラーステータスをホストサーバ１２ａに返す。
【００７５】
するとホストサーバ１２ａは、管理サーバ１３から論理ユニットＬＵ０に関する最新のＡＭテーブル１３４＿ＬＵ０及びリビジョンデータ１３５＿ＬＵ０のコピーを取得して、当該コピーを最新のＡＭテーブル１２４ａ＿ＬＵ０及びリビジョンデータ１２５ａ＿ＬＵ０として保持する（ステップＳ２０）。
【００７６】
次にホストサーバ１２ａは、最新のＡＭテーブル１２４ａ＿ＬＵ０に従ってライトコマンドを再び生成し、当該生成されたライトコマンドをストレージ装置１１ａに対して再び発行する（ステップＳ２１）。ホストサーバ１２ａによって再発行されたライトコマンドは、ストレージ装置１１ａによって受信される。ストレージ装置１１ａは、リビジョンの一致を含めて、受信ライトコマンドの実行に関するステータスがグッドである場合、受信ライトコマンドで指定されたライト動作を実行する（ステップＳ１７）。なお、受信ライトコマンドの実行に関するステータスがグッドでなく、しかもその要因がリビジョンの不一致以外であるならば、ストレージ装置１１ａは対応するエラー処理を実行する。
【００７７】
図７に示されるフローチャートでは、ホストサーバ１２ａはステップＳ２０を実行した後にステップＳ２１に進んで、再びライトコマンドを発行する。しかし、ステップＳ２０を実行した後に、ホストサーバ１２ａがステップＳ１８に戻って再びライトコマンドを発行しても良い。
【００７８】
次に本実施形態において、図１に示される共有ストレージシステムにホストサーバが追加される場合の動作について説明する。ホストサーバの追加は、以下に述べる手順で実現される。まず、追加されるべきホストサーバが、共有ストレージシステムにおいてストレージ装置１１ａ及び１１ｂと管理サーバ１３とを接続するスイッチ１４に接続される。スイッチ１４に接続されたホストサーバは、論理ユニットＬＵｉをマウントするものとする。この場合、スイッチ１４に接続されたホストサーバは、論理ユニットＬＵｉに対応付けられたＡＭテーブル１３４＿ＬＵｉ及びリビジョンデータ１３５＿ＬＵｉのコピーを管理サーバ１３から取得して、当該コピーを保持する。これにより、共有ストレージシステムにホストサーバが追加される。
【００７９】
次に、共有ストレージシステムにおいて障害が発生した場合の動作について説明する。共有ストレージシステムにおける主要な障害として、ネットワーク接続の一時的な切断と、管理サーバ１３のダウンとが挙げられる。
【００８０】
そこでまず、ネットワーク接続が一時的に切断した場合について説明する。まず、本実施形態とは異なって、管理サーバ１３が最新のＡＭテーブルを共有ストレージシステム内の全てのホストサーバ（つまり、ホストサーバ１２ａ，１２ｂ及び１２ｃ）に配信するような一般に想定される場合を検討する。このようなシステムにおいて、ネットワーク接続が一時的に切断した場合、ホストサーバ間で、ＡＭテーブルの不一致が発生する可能性がある。そこで、このようなシステムでは、ホストサーバ間でＡＭテーブルが一致しているかを例えば定期的に監視するための仕組み（監視機能）が必要となる。
【００８１】
これに対して本実施形態では、ホストサーバが例えば論理ユニットＬＵｉにアクセスする際に、当該ホストサーバ（より詳細には、当該ホストサーバによってアクセスが要求されたストレージ装置）は、当該論理ユニットＬＵｉに対応付けられたＡＭテーブル１３４＿ＬＵｉのコピーが最新であるかを判定する。したがって本実施形態では、ネットワーク接続の一時的な切断が発生しても、ホストサーバ間でＡＭテーブルが一致しているかを考慮する必要はない。
【００８２】
次に、管理サーバがダウンした場合の動作について、アクセス処理を例に、図１０及び図１１を参照して説明する。図１０は管理サーバダウン時のアクセス処理の典型的な手順を示すフローチャート、図１１は管理サーバダウン時のアクセス処理を説明するための図である。
【００８３】
今、管理サーバ１３がダウンしている状態で、ホストサーバ１２ａにおいて、論理ユニットＬＵ０またはＬＵ１へのアクセスの要求が発生したものとする。なお、共有ストレージシステム内の各ホストサーバが、管理サーバ１３のダウンを検出する方法は、従来から種々知られている。このため、この方法の説明は省略する。
【００８４】
まず、ホストサーバ１２ａは、要求されたアクセスが、ＡＭテーブル１３４＿ＬＵ０または１３４＿ＬＵ１の更新を必要とするかを判定する（ステップＳ５１）。ＡＭテーブル１３４＿ＬＵ０または１３４＿ＬＵ１の更新を必要とするアクセスは、例えば、論理ユニットＬＵ０またはＬＵ１内の新規領域へのライトアクセスの場合である。この場合（ステップＳ５１のＹｅｓ）、ホストサーバ１２ａはアクセス不可を判断して（ステップＳ５２）、アクセス処理を終了する。このように管理サーバ１３がダウンしている状態では、ホストサーバ１２ａは、管理サーバ１３が保持するＡＭテーブルの更新を必要とするアクセスの実行を不可と判断する。その理由は、管理サーバ１３が保持するＡＭテーブルは常に最新でなければならないためである。
【００８５】
一方、ＡＭテーブル１３４＿ＬＵ０または１３４＿ＬＵ１の更新が不要なアクセスは、例えば、リードアクセスの場合、或いは論理ユニットＬＵ０またはＬＵ１内の既存のデータを変更するだけのライトアクセスの場合である。このようなアクセスの実行は、ホストサーバ１２ａが最新のＡＭテーブル１３４＿ＬＵ０または１３４＿ＬＵ１のコピーをＡＭテーブル１２４ａ＿ＬＵ０または１２４ａ＿ＬＵ１に保持しているならば可能である。
【００８６】
そこで、このようなアクセスの場合（ステップＳ５１のＮｏ）、ホストサーバ１２ａは、現在自身が保持しているＡＭテーブル１２４ａ＿ＬＵ０または１２４ａ＿ＬＵ１に従って、アクセスコマンドを生成して、当該アクセスコマンドをストレージ装置に対して発行する（ステップＳ５３）。ここでは、アクセスコマンドがストレージ装置１１ａに発行されたものとする。このアクセスコマンドは、論理ユニットＬＵ０またはＬＵ１を示す論理ユニット番号ＬＵ０またはＬＵ１を含む。このライトコマンドはまた、ＡＭテーブル１２４ａ＿ＬＵ０または１２４ａ＿ＬＵ１のリビジョンを示すリビジョン番号（ＲＮ）をも含む。
【００８７】
ストレージ装置１１ａは、ホストサーバ１２ａによって発行されたアクセスコマンドを受信すると、前述のステップＳ１３と同様に、当該ホストサーバ１２ａに保持されているＡＭテーブル１２４ａ＿ＬＵ０または１２４ａ＿ＬＵ１のリビジョンが最新であるかを判定する（ステップＳ５４）。即ちストレージ装置１１ａは、受信アクセスコマンドに含まれているリビジョン番号を、ＵＭテーブル１１０ａから取得される論理ユニット番号ＬＵＮ０またはＬＵ１に対応付けられたリビジョン番号と比較する。この比較の結果（リビジョンの一致または不一致）に基づいて、ホストサーバ１２ａはＡＭテーブル１２４ａ＿ＬＵ０または１２４ａ＿ＬＵ１のリビジョンが最新であるかを判定する
図１１の例では、ＡＭテーブル１２４ａ＿ＬＵ０及び１２４ａ＿ＬＵ１のリビジョン番号は、それぞれ０１及び０１である。また、ストレージ装置１１ａに保持されているＵＭテーブル１１０ａの示す、論理ユニット番号ＬＵ０及びＬＵ１に対応付けられたリビジョン番号（つまり、ＡＭテーブル１３４＿ＬＵ０及び１３４＿ＬＵ１のリビジョン番号）は、それぞれ０１及び０２である。したがって図１１の例では、ＡＭテーブル１２４ａ＿ＬＵ０のリビジョン番号はＡＭテーブル１３４＿ＬＵ０のリビジョン番号に一致するものの、ＡＭテーブル１２４ａ＿ＬＵ１のリビジョン番号はＡＭテーブル１３４＿ＬＵ１のリビジョン番号に一致しない。
【００８８】
今、ホストサーバ１２ａによって発行されたアクセスコマンドが、論理ユニットＬＵ０へのアクセスを要求しているものとする。この場合、図１１において矢印Ａ１１で示されるように、ＡＭテーブル１２４ａ＿ＬＵ０のリビジョン番号（０１）はＡＭテーブル１３４＿ＬＵ０のリビジョン番号（０１）に一致する。つまり、ＡＭテーブル１２４ａ＿ＬＵ０のリビジョンは最新である（ステップＳ５４のＹｅｓ）。ストレージ装置１１ａは、リビジョンの一致を含めて、受信ライトコマンドの実行に関するステータスがグッドである場合、受信アクセスコマンドによって要求されたアクセスを実行する（ステップＳ５９）。
【００８９】
次に、ホストサーバ１２ａによって受信されたアクセスコマンドが、論理ユニットＬＵ１へのアクセスを要求しているものとする。この場合、図１１において矢印Ａ１２で示されるように、ＡＭテーブル１２４ａ＿ＬＵ１のリビジョン番号（０１）はＡＭテーブル１３４＿ＬＵ１のリビジョン番号（０２）に一致しない。つまり、ＡＭテーブル１２４ａ＿ＬＵ１のリビジョンは最新でない（ステップＳ５４のＮｏ）。この場合、ストレージ装置１１ａは、ホストサーバ１２ａからのアクセスコマンドに対する応答として、リビジョン不一致を示すエラーステータスを当該ホストサーバ１２ａに返す。ホストサーバ１２ａは、管理サーバ１３がダウンしている状態で、ストレージ装置１１ａからリビジョン不一致を示すエラーステータスが返された場合、最新のＡＭテーブル１３４＿ＬＵ１のコピーを持つホストサーバを当該ストレージ装置１１ａに問い合わせる。ＡＭテーブル１２４ａ＿ＬＵ１のリビジョンが最新でない場合の上述の動作は、図１０に示すフローチャートでは省略されている。
【００９０】
なお、管理サーバ１３がダウンしていることをホストサーバ１２ａが認識していない状態で、ストレージ装置１１ａからリビジョン不一致を示すエラーステータスが返された場合、当該ホストサーバ１２ａは次のように動作する。まずホストサーバ１２ａは、ステップＳ７またはＳ２０と同様に、管理サーバ１３から論理ユニットＬＵ１に関する最新のＡＭテーブル１３４＿ＬＵ１のコピーを取得しようとする。しかし、管理サーバ１３がダウンしているため、ホストサーバ１２ａは最新のＡＭテーブル１３４＿ＬＵ１のコピーの取得に失敗する。これにより管理サーバ１３は管理サーバ１３がダウンしていることを認識する。そこでホストサーバ１２ａは、最新のＡＭテーブル１３４＿ＬＵ１のコピーを持つホストサーバをストレージ装置１１ａに問い合わせる。
【００９１】
ストレージ装置１１ａはホストサーバ１２ａからの上述の問い合わせに応じて、最新のＡＭテーブル１３４＿ＬＵ１のコピーを持つホストサーバを、ＵＭテーブル１１０ａに基づいて次のように特定する（ステップＳ５５）。まずストレージ装置１１ａは、ＵＭテーブル１１０ａの示す、論理ユニット番号ＬＵ１に対応付けられている更新サーバＩＤを取得する。そしてストレージ装置１１ａは、取得された更新サーバＩＤの示すホストサーバを、最新のＡＭテーブル１３４＿ＬＵ１のコピーを持つホストサーバとして特定する。ここでは、ホストサーバ１２ｂが特定されたものとする。
【００９２】
次にストレージ装置１１ａは、ホストサーバ１２ａからの問い合わせに対する応答として、特定されたホストサーバ１２ｂのＩＤを当該ホストサーバ１２ａに通知する（ステップＳ５６）。するとホストサーバ１２ａは、図１１において矢印Ａ１３で示されるように、通知されたホストサーバ１２ｂから、論理ユニットＬＵ１に対応する最新のＡＭテーブル１２４ｂ＿ＬＵ１及びリビジョンデータ１２５ｂ＿ＬＵ１のコピーを取得する（ステップＳ５７）。ステップＳ５７においてホストサーバ１２ａは、取得されたコピーに基づいて、ＡＭテーブル１２４ａ＿ＬＵ１及びリビジョンデータ１２５ａ＿ＬＵ１を更新する。つまりホストサーバ１２ａは、ＡＭテーブル１２４ｂ＿ＬＵ１及びリビジョンデータ１２５ｂ＿ＬＵ１のコピーを、最新のＡＭテーブル１３４＿ＬＵ１及びリビジョンデータ１３５＿ＬＵ１のコピーであるＡＭテーブル１２４ａ＿ＬＵ１及びリビジョンデータ１２５ａ＿ＬＵ１として保持する。
【００９３】
次にホストサーバ１２ａは、最新のＡＭテーブル１２４ａ＿ＬＵ１に従ってアクセスコマンドを再び生成し、当該生成されたライトコマンドをストレージ装置１１ａに対して再び発行する（ステップＳ５８）。ホストサーバ１２ａによって再発行されたライトコマンドは、ストレージ装置１１ａによって受信される。ストレージ装置１１ａは、リビジョンの一致を含めて、受信ライトコマンドの実行に関するステータスがグッドである場合、受信ライトコマンドで指定されたライト動作を実行する（ステップＳ５９）。
【００９４】
なお、ストレージ装置１１ａが、リビジョン不一致を示すエラーステータスをホストサーバ１２ａに返す前に、最新のＡＭテーブル１３４＿ＬＵ１のコピーを持つホストサーバを特定しても良い。そして、特定されたホストサーバ（例えばホストサーバ１２ｂ）を、リビジョン不一致を示すエラーステータスを用いてホストサーバ１２ａに通知しても良い。この場合、ホストサーバ１２ａは、管理サーバ１３がダウンしていることを認識しているならば、通知されたホストサーバ１２ｂから最新のＡＭテーブル１２４ｂ＿ＬＵ１及びリビジョンデータ１２５ｂ＿ＬＵ１のコピーを取得すれば良い。また、管理サーバ１３がダウンしていないか、或いは管理サーバ１３がダウンしていることをホストサーバ１２ａが認識していないならば、ホストサーバ１２ａは、まず管理サーバ１３から最新のＡＭテーブル１３４＿ＬＵ１及びリビジョンデータ１３５＿ＬＵ１のコピーを取得する動作を実行すれば良い。
【００９５】
本実施形態によれば、ストレージ装置１１ａは、論理ユニット毎に、対応する論理ユニットに関する最新のＡＭテーブルのリビジョン番号と、当該ＡＭテーブルを最後に更新したホストサーバのＩＤとを、ＵＭテーブル１１０ａを用いて管理している。このためストレージ装置１１ａは、上述のようにホストサーバ１２ａから論理ユニット番号及びリビジョン番号を含むアクセスコマンドが発行された場合に（ステップＳ５３）、当該ホストサーバ１２ａの保持するＡＭテーブルが最新であるかを判定することができる（ステップＳ５４）。
【００９６】
また、ホストサーバ１２ａの保持するＡＭテーブルが最新でない場合（ステップＳ５４のＮｏ）、ストレージ装置１１ａは、ＡＭテーブルを最後に更新したホストサーバを特定して、当該特定されたホストサーバをホストサーバ１２ａ（アクセス要求元）に通知することもできる（ステップＳ５５及びＳ５６）。よってホストサーバ１２ａは、通知されたホストサーバから最新のＡＭテーブルのコピーを取得して、当該コピーに基づいて目的の論理ユニットにアクセスすることができる（ステップＳ５７及びＳ５８）。
【００９７】
また、ホストサーバ１２ａ，１２ｂ及び１２ｃでは、ＡＭテーブルがフラッシュメモリのような不揮発性記憶装置に格納されている。このため、ホストサーバ１２ａ，１２ｂ及び１２ｃの電源の遮断またはホストサーバ１２ａ，１２ｂ及び１２ｃのリブートに起因して、ホストサーバ１２ａ，１２ｂ及び１２ｃ内のＡＭテーブルが破壊されるおそれはない。なお、ホストサーバ１２ａ，１２ｂ及び１２ｃにおいて、ＡＭテーブルがＲＡＭのような揮発性記憶装置に格納されていても構わない。この場合、上述の電源遮断またはリブートによってＡＭテーブルが破壊されている可能性がある。しかし、ストレージ装置１１ａ及び１１ｂは、ホストサーバ１２ａ，１２ｂまたは１２ｃからのアクセスコマンドを受け取った場合、当該アクセスコマンドで通知されるリビジョンが最新であるかを確認する。このため、ストレージ装置１１ａ及び１１ｂが誤ったアドレスにアクセスするおそれはない。
【００９８】
図１０に示されるフローチャートでは、ホストサーバ１２ａはステップＳ５７を実行した後にステップＳ５８に進んで、再びアクセスコマンドを発行する。しかし、ステップＳ５７を実行した後に、ホストサーバ１２ａがステップＳ５３に戻って再びアクセスコマンドを発行しても良い。
【００９９】
以上説明した少なくとも１つの実施形態によれば、複数のホストサーバが、管理サーバに保持されているアドレス管理情報のコピーをそれぞれ有する構成を適用するにも拘わらずに、ホストサーバ間でアドレス管理情報を一致させる処理を不要とすることができる。
【０１００】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【要約】
実施形態によれば、共有ストレージシステムは、複数のホストサーバと、複数のストレージ装置と、管理サーバとを具備する。前記管理サーバは、複数の論理ユニットの各々を第１のアドレス管理情報を用いて管理し、且つ前記第１のアドレス管理情報のリビジョンを第１のリビジョンデータを用いて管理する。前記複数のホストサーバの各々は、前記第１のアドレス管理情報及び前記第１のリビジョンデータそれぞれのコピーを保持する。第１のホストサーバから第１のストレージ装置に、前記第１のリビジョンデータのコピー（第２のリビジョンデータ）に基づいてアクセスが要求された場合、前記第１のストレージ装置は、前記第２のリビジョンデータが、前記管理サーバによって通知されたリビジョンデータに一致していることを条件として、要求されたアクセスを実行する。【図１】
0005747133.tif 000002
【図２】
0005747133.tif 000003
【図３】
0005747133.tif 000004
【図４】
0005747133.tif 000005
【図５】
0005747133.tif 000006
【図６】
0005747133.tif 000007
【図７】
0005747133.tif 000008
【図８】
0005747133.tif 000009
【図９】
0005747133.tif 000010
【図１０】
0005747133.tif 000011
【図１１】
0005747133.tif 000012