特許第5747133号(P5747133)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社東芝の特許一覧 ▶ 東芝ソリューション株式会社の特許一覧

特許5747133共有ストレージシステム、及びストレージ装置へのアクセスを制御する方法
<>
  • 特許5747133-共有ストレージシステム、及びストレージ装置へのアクセスを制御する方法 図000002
  • 特許5747133-共有ストレージシステム、及びストレージ装置へのアクセスを制御する方法 図000003
  • 特許5747133-共有ストレージシステム、及びストレージ装置へのアクセスを制御する方法 図000004
  • 特許5747133-共有ストレージシステム、及びストレージ装置へのアクセスを制御する方法 図000005
  • 特許5747133-共有ストレージシステム、及びストレージ装置へのアクセスを制御する方法 図000006
  • 特許5747133-共有ストレージシステム、及びストレージ装置へのアクセスを制御する方法 図000007
  • 特許5747133-共有ストレージシステム、及びストレージ装置へのアクセスを制御する方法 図000008
  • 特許5747133-共有ストレージシステム、及びストレージ装置へのアクセスを制御する方法 図000009
  • 特許5747133-共有ストレージシステム、及びストレージ装置へのアクセスを制御する方法 図000010
  • 特許5747133-共有ストレージシステム、及びストレージ装置へのアクセスを制御する方法 図000011
  • 特許5747133-共有ストレージシステム、及びストレージ装置へのアクセスを制御する方法 図000012
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】5747133
(24)【登録日】2015年5月15日
(45)【発行日】2015年7月8日
(54)【発明の名称】共有ストレージシステム、及びストレージ装置へのアクセスを制御する方法
(51)【国際特許分類】
   G06F 3/06 20060101AFI20150618BHJP
   G06F 13/14 20060101ALI20150618BHJP
【FI】
   G06F3/06 301Z
   G06F13/14 320H
【請求項の数】9
【全頁数】25
(21)【出願番号】特願2014-543654(P2014-543654)
(86)(22)【出願日】2014年6月11日
(86)【国際出願番号】JP2014065471
【審査請求日】2014年9月5日
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(73)【特許権者】
【識別番号】301063496
【氏名又は名称】東芝ソリューション株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】特許業務法人スズエ国際特許事務所
(72)【発明者】
【氏名】石井 君明
【審査官】 古河 雅輝
(56)【参考文献】
【文献】 特開2010−231690(JP,A)
【文献】 特開2011−197945(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06− 3/08
G06F 12/00−12/06
G06F 13/10−13/18
H04N 7/10
H04N 7/14− 7/173
H04N 7/20− 7/68
H04N 21/00−21/858
(57)【特許請求の範囲】
【請求項1】
複数のホストサーバと、
前記複数のホストサーバによって共有される複数のストレージ装置と、
前記複数のストレージ装置の少なくとも一部の記憶領域が割り当てられる複数の論理ユニットを前記複数のホストサーバに提供する管理サーバと、
前記複数のホストサーバ、前記複数のストレージ装置及び前記管理サーバを接続するスイッチと
を具備し、
前記管理サーバは、前記複数の論理ユニット毎に、前記複数の論理ユニットの各々の仮想アドレスと、当該仮想アドレスに割り当てられるストレージ装置の実アドレスと、当該ストレージ装置を示すストレージ識別子との対応を、第1のアドレス管理情報を用いて管理し、且つ前記第1のアドレス管理情報のリビジョンを第1のリビジョンデータを用いて管理し、
前記複数のホストサーバの各々は、前記論理ユニットに対応する前記第1のアドレス管理情報及び前記第1のリビジョンデータそれぞれのコピーである第2のアドレス管理情報及び第2のリビジョンデータを保持し、第1の論理ユニットの第1の仮想アドレスにアクセスする場合、前記第1の論理ユニットに対応する前記第2のアドレス管理情報から前記第1の仮想アドレスに対応付けられた第1の実アドレス及び第1のストレージ識別子を取得して、前記第1の論理ユニットを示す第1の論理ユニット識別子、前記第1の実アドレス、及び前記第1の論理ユニットに対応する前記第2のリビジョンデータを用いて、前記第1のストレージ識別子で示されるストレージ装置にアクセスを要求し、
前記複数のストレージ装置の各々は、前記第1のアドレス管理情報の更新に応じて前記管理サーバによって通知される前記第1のアドレス管理情報のリビジョンを示す第3のリビジョンデータを含む更新管理情報を保持し、前記複数のホストサーバの1つである第1のホストサーバから、前記第1の論理ユニット識別子、前記第1の実アドレス、及び前記第2のリビジョンデータを用いてアクセスが要求された場合、少なくとも、前記第2のリビジョンデータが前記第1の論理ユニットに対応する前記第3のリビジョンデータに一致していることを条件として、要求されたアクセスを前記第1の実アドレスに基づいて実行する
共有ストレージシステム。
【請求項2】
前記第1のホストサーバは、前記第1の論理ユニットへのライトアクセスの要求が発生し、且つ当該ライトアクセスが、前記第1の論理ユニットに対応する前記第1のアドレス管理情報の更新を必要とする場合、前記更新の必要を前記管理サーバに通知し、
前記管理サーバは、前記第1のホストサーバによる前記更新の必要の通知に基づいて、前記第1の論理ユニットに対応する前記第1のアドレス管理情報及び前記第1のリビジョンデータを更新し、且つ前記第1の論理ユニットに対応する前記第1のアドレス管理情報の更新を、少なくとも、前記第1の論理ユニットに割り当てられる記憶領域を有するストレージ装置に通知し、
前記管理サーバによって前記更新が通知されたストレージ装置は、当該更新の通知に基づいて、前記更新管理情報に含まれていて、且つ前記第1の論理ユニットに対応する前記第1のアドレス管理情報のリビジョンを示す前記第3のリビジョンデータを更新し、
前記管理サーバは、前記更新の必要を通知した前記第1のホストサーバに、前記更新された第1のアドレス管理情報及び第1のリビジョンデータそれぞれのコピーを送信し、
前記第1のホストサーバは、前記第1のホストサーバが保持している前記第2のアドレス管理情報及び第2のリビジョンデータを、前記送信されたコピーに基づいて更新する
請求項1記載の共有ストレージシステム。
【請求項3】
前記複数のストレージ装置の1つである第1のストレージ装置は、前記第2のリビジョンデータが前記第1の論理ユニットに対応する前記第3のリビジョンデータに一致していない場合、前記第1のホストサーバにリビジョン不一致を示すエラーステータスを返し、
前記第1のホストサーバは、前記エラーステータスに応じて、前記管理サーバから、前記第1の論理ユニットに対応する前記第1のアドレス管理情報及び前記第1のリビジョンデータそれぞれのコピーを取得して、前記第1のホストサーバが保持している前記第2のアドレス管理情報及び第2のリビジョンデータを当該コピーに基づいて更新する
請求項2記載の共有ストレージシステム。
【請求項4】
前記第1のホストサーバは、前記管理サーバに障害が発生している場合、前記複数のホストサーバの1つであって、且つ前記第1の論理ユニットに対応する最新の第2のアドレス管理情報を保持している第2のホストサーバから、当該最新の第2のアドレス管理情報及び当該最新の第2のアドレス管理情報のリビジョンを示す第2のリビジョンデータのコピーを取得して、前記第1のホストサーバが保持している前記第2のアドレス管理情報及び第2のリビジョンデータを当該コピーに基づいて更新する
請求項3記載の共有ストレージシステム。
【請求項5】
前記管理サーバは、前記第1の論理ユニットに対応する前記第1のアドレス管理情報の更新を通知する場合、前記更新の必要を通知した前記第1のホストサーバを示す第1のホストサーバ識別子も通知し、
前記複数のストレージ装置の各々に保持される前記更新管理情報は、前記複数のストレージ装置の各々の記憶領域が割り当てられた論理ユニットに対応付けられたホストサーバ識別子であって、前記対応する第1のアドレス管理情報の更新を通知したホストサーバを示すホストサーバ識別子を更に含み、
前記更新が通知されたストレージ装置は、当該更新の通知に基づいて、前記更新管理情報に含まれていて、且つ前記第1の論理ユニットに対応するホストサーバ識別子も更新し、
前記第1のストレージ装置は、前記第1の論理ユニットに対応する最新の第2のアドレス管理情報を保持している第2のホストサーバを前記更新管理情報に基づいて前記第1のホストサーバに通知する
請求項4記載の共有ストレージシステム。
【請求項6】
前記第1のホストサーバは、前記管理サーバに障害が発生している状態で前記第1のストレージ装置から前記リビジョン不一致を示すエラーステータスを受け取った場合、前記第1の論理ユニットに対応する最新の第2のアドレス管理情報を保持しているホストサーバを前記第1のストレージ装置に問い合わせ、
前記第1のストレージ装置は、前記第1のホストサーバからの前記問い合わせに応じて、前記第2のホストサーバを前記第1のホストサーバに通知する
請求項5記載の共有ストレージシステム。
【請求項7】
前記第1のストレージ装置は、前記リビジョン不一致を示すエラーステータスを用いて、前記第2のホストサーバを前記第1のホストサーバに通知する請求項5記載の共有ストレージシステム。
【請求項8】
前記第1のホストサーバは、前記第2のアドレス管理情報及び第2のリビジョンデータを更新した場合、前記更新された第2のアドレス管理情報及び第2のリビジョンデータに基づいて前記第1のストレージ装置に再びアクセスを要求する請求項3記載の共有ストレージシステム。
【請求項9】
複数のホストサーバと、前記複数のホストサーバによって共有される複数のストレージ装置と、前記複数のストレージ装置の少なくとも一部の記憶領域が割り当てられる複数の論理ユニットを前記複数のホストサーバに提供する管理サーバと、前記複数のホストサーバ、前記複数のストレージ装置及び前記管理サーバを接続するスイッチとを具備し、前記管理サーバは、前記複数の論理ユニット毎に、前記複数の論理ユニットの各々の仮想アドレスと、当該仮想アドレスに割り当てられるストレージ装置の実アドレスと、当該ストレージ装置を示すストレージ識別子との対応を、第1のアドレス管理情報を用いて管理し、且つ前記第1のアドレス管理情報のリビジョンを第1のリビジョンデータを用いて管理し、前記複数のホストサーバの各々は、前記論理ユニットに対応する前記第1のアドレス管理情報及び前記第1のリビジョンデータそれぞれのコピーである第2のアドレス管理情報及び第2のリビジョンデータを保持し、前記複数のストレージ装置の各々は、前記第1のアドレス管理情報の更新に応じて前記管理サーバによって通知される前記第1のアドレス管理情報のリビジョンを示す第3のリビジョンデータを含む更新管理情報を保持する共有ストレージシステムにおいて、ストレージ装置へのアクセスを制御する方法であって、
前記複数のホストサーバの1つである第1のホストサーバから第1の論理ユニットの第1の仮想アドレスにアクセスする場合、前記第1の仮想アドレスに対応付けられた第1の実アドレス及び第1のストレージ識別子を、前記第1の論理ユニットに対応する前記第2のアドレス管理情報から前記第1のホストサーバによって取得し、
前記第1の論理ユニットを示す第1の論理ユニット識別子、前記第1の実アドレス、及び前記第1の論理ユニットに対応する前記第2のリビジョンデータを用いて、前記第1のストレージ識別子で示され、且つ前記複数のストレージ装置の1つである第1のストレージ装置に前記第1のホストサーバからアクセスを要求し、
前記第1のホストサーバから前記第1のストレージ装置に、前記第1の論理ユニット識別子、前記第1の実アドレス、及び前記第2のリビジョンデータを用いてアクセスが要求された場合、少なくとも、前記第2のリビジョンデータが前記第1の論理ユニットに対応する前記第3のリビジョンデータに一致していることを条件として、要求されたアクセスを前記第1の実アドレスに基づいて前記第1のストレージ装置によって実行する
ストレージ装置へのアクセスを制御する方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、共有ストレージシステム、及びストレージ装置へのアクセスを制御する方法に関する。
【背景技術】
【0002】
近年、共有ストレージシステムが盛んに開発されている。共有ストレージシステムは、複数のストレージ装置が複数のホストサーバによって共有されるストレージシステムとして知られている。このような共有ストレージシステムは、一般に管理サーバを備えている。管理サーバは、共有ストレージシステム全体を管理する。
【0003】
共有ストレージシステムでは、論理ユニットが用いられる。論理ユニットは論理ボリューム或いは論理ディスクとも呼ばれ、論理的な記憶領域を有している。論理的な記憶領域内の任意の記憶位置は、仮想アドレスによって指定される。論理的な記憶領域は、複数のストレージ装置の少なくとも1つの物理的な記憶領域の少なくとも一部と対応付けられる。管理サーバは、共有ストレージシステム内の論理ユニット毎に仮想アドレスとストレージ装置の実アドレスとの対応を管理するために、当該論理ユニット毎にアドレス管理情報(例えば、アドレス管理テーブル)を保持する。
【0004】
ここで、共有ストレージシステム内のホストサーバが、自身がマウントする(自身に提供される)論理ユニット内の目的の記憶位置にアクセスするものとする。この場合、ホストサーバは、目的の記憶位置の仮想アドレスに対応付けられたストレージ装置内の記憶位置のアドレス(つまり実アドレス)及び当該ストレージ装置(より詳細には、当該ストレージ装置の識別子)を管理サーバに問い合わせる。つまりホストサーバは、論理ユニット内の目的の記憶位置にアクセスするに際し、当該目的の記憶位置に対応付けられたストレージ装置の記憶位置を知るために管理サーバにアクセスする。このような管理サーバへのアクセスは、共有ストレージシステム内の他のそれぞれのホストサーバが論理ユニット内の目的の記憶位置にアクセスしようとする場合にも発生する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2010−233190号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述のように、共有ストレージシステム内の複数のホストサーバは、当該複数のホストサーバにそれぞれ提供される論理ユニット内の目的の記憶位置にアクセスするに際し、管理サーバにアクセスする必要がある。このような共有ストレージシステムでは、複数のホストサーバから管理サーバへのアクセスの集中が、共有ストレージシステム全体の性能向上のボトルネックとなっている。つまり、共有ストレージシステムの例えばホストサーバの数、またはストレージ装置の数(もしくは記憶容量)が増加されても、管理サーバへのアクセスが一層集中するために、このような増加に見合ったシステム性能を得ることは難しい。
【0007】
そこで、管理サーバへのアクセスの集中を解消するために、次のような構成が考えられる。それは、共有ストレージシステム内の複数のホストサーバが、当該管理サーバに保持されているアドレス管理情報のコピーをそれぞれ有する構成である。このような構成によれば、複数のサーバの各々は、目的の記憶位置の仮想アドレスに対応付けられた実アドレスを、自身が有するアドレス管理情報のコピーに基づいて取得することができる。つまり、複数のサーバの各々は、管理サーバへの問い合わせを必要とせずに、目的の記憶位置にアクセスすることが可能となる。
【0008】
しかし、上述の構成では、例えば第1のホストサーバによるデータ更新に応じてアドレス管理情報が更新された場合に、第1のホストサーバと他のホストサーバとの間でアドレス管理情報を一致させることが困難となる。
【0009】
本発明が解決しようとする課題は、複数のホストサーバが、管理サーバに保持されているアドレス管理情報のコピーをそれぞれ有する構成を適用するにも拘わらずに、ホストサーバ間でアドレス管理情報を一致させる処理を不要とすることができる共有ストレージシステム、及びストレージ装置へのアクセスを制御する方法を提供することにある。
【課題を解決するための手段】
【0010】
実施形態によれば、共有ストレージシステムは、複数のホストサーバと、複数のストレージ装置と、管理サーバと、スイッチとを具備する。複数のストレージ装置は、前記複数のホストサーバによって共有される。前記管理サーバは、前記複数のストレージ装置の少なくとも一部の記憶領域が割り当てられる複数の論理ユニットを前記複数のホストサーバに提供する。前記スイッチは、前記複数のホストサーバ、前記複数のストレージ装置及び前記管理サーバを接続する。前記管理サーバは、前記複数の論理ユニット毎に、前記複数の論理ユニットの各々の仮想アドレスと、当該仮想アドレスに割り当てられるストレージ装置の実アドレスと、当該ストレージ装置を示すストレージ識別子との対応を、第1のアドレス管理情報を用いて管理し、且つ前記第1のアドレス管理情報のリビジョンを第1のリビジョンデータを用いて管理する。前記複数のホストサーバの各々は、前記管理サーバによって提供される論理ユニットに対応する前記第1のアドレス管理情報及び前記第1のリビジョンデータそれぞれのコピーである第2のアドレス管理情報及び第2のリビジョンデータを保持する。前記複数のホストサーバの各々は、第1の論理ユニットの第1の仮想アドレスにアクセスする場合、前記第1の論理ユニットに対応する前記第2のアドレス管理情報から前記第1の仮想アドレスに対応付けられた第1の実アドレス及び第1のストレージ識別子を取得する。前記複数のホストサーバの各々は更に、前記第1の論理ユニットを示す第1の論理ユニット識別子、前記第1の実アドレス、及び前記第1の論理ユニットに対応する前記第2のリビジョンデータを用いて、前記第1のストレージ識別子で示されるストレージ装置にアクセスを要求する。前記複数のストレージ装置の各々は、少なくとも、前記複数のストレージ装置の各々の記憶領域が割り当てられた論理ユニットに対応付けられた第3のリビジョンデータを含む更新管理情報を保持する。前記第3のリビジョンデータは、対応する前記第1のアドレス管理情報の更新に応じて前記管理サーバによって通知される前記対応する第1のアドレス管理情報のリビジョンを示す。前記複数のストレージ装置の各々は、前記複数のホストサーバの1つである第1のホストサーバから、前記第1の論理ユニット識別子、前記第1の実アドレス、及び前記第2のリビジョンデータを用いてアクセスが要求された場合、少なくとも、前記第2のリビジョンデータが前記第1の論理ユニット識別子の示す前記第1の論理ユニットに対応する前記第3のリビジョンデータに一致していることを条件として、要求されたアクセスを前記第1の実アドレスに基づいて実行する。
【図面の簡単な説明】
【0011】
図1図1は、1つの実施形態に係る共有ストレージシステムの典型的な構成を示すブロック図である。
図2図2は、論理ユニットの論理的な記憶領域と2つのストレージ装置の物理的な記憶領域との対応の例を示す概念図である。
図3図3は、図1に示される管理情報のデータ構造の例を示す図である。
図4図4は、同実施形態におけるリードアクセス処理の典型的な手順を示すフローチャートである。
図5図5は、図1に示されるアドレス管理テーブルのデータ構造の例を示す図である。
図6図6は、同実施形態で適用されるコマンドの典型的なフォーマットを示す図である。
図7図7は、同実施形態におけるライトアクセス処理の典型的な手順を示すフローチャートである。
図8図8は、図7に示されるライトアクセス処理に含まれているアドレス管理テーブル更新処理の典型的な手順を示すフローチャートである。
図9図9は、アドレス管理テーブル更新処理を説明するための図である。
図10図10は、同実施形態における管理サーバダウン時のアクセス処理の典型的な手順を示すフローチャートである。
図11図11は、は管理サーバダウン時のアクセス処理を説明するための図である。
【発明を実施するための形態】
【0012】
以下、種々の実施の形態につき図面を参照して説明する。
図1は、1つの実施形態に係る共有ストレージシステムの典型的な構成を示すブロック図である。図1に示される共有ストレージシステムは、複数のストレージ装置(例えば、2つのストレージ装置11a及び11b)と、複数のホストサーバ(例えば、3つのホストサーバ12a,12b及び12c)と、管理サーバ13とを備えている。このように本実施形態では、共有ストレージシステムは、2つのストレージ装置11a及び11bを備えている。しかし、共有ストレージシステムが、2つを超えるストレージ装置を備えていても良い。また本実施形態では、共有ストレージシステムは、3つのホストサーバ12a,12b及び12cを備えている。しかし、共有ストレージシステムが、2つのストレージ装置または3つを超えるストレージ装置を備えていても良い。
【0013】
ホストサーバ12a,12b及び12cは、それぞれホストバスアダプタ(HBA)120a,120b及び120cを備えている。HBA120a,120b及び120cはホストコントローラとも呼ばれ、ホストサーバ12a,12b及び12cと他のネットワーク機器、或いはストレージ装置とを接続する。
【0014】
ストレージ装置11a及び11bと、ホストサーバ12a,12b及び12c(より詳細には、ホストサーバ12a,12b及び12cのHBA120a,120b及び120c)と、管理サーバ13とは、スイッチングハブ(ネットワークスイッチ)のようなスイッチ14を介して接続されている。この接続により、ストレージ装置11a及び11bと、ホストサーバ12a,12b及び12cと、管理サーバ13とを含むネットワーク(共有ストレージシステム)が構築され、ストレージ装置11a及び11cは、ホストサーバ12a,12b及び12cによって共有される。
【0015】
本実施形態において、サーバ12a,12b,12c及び13は、それぞれ独立のコンピュータである。しかし、ホストサーバ12a,12b及び12cの少なくとも2つが、1つのコンピュータ上で動作しても構わない。また、ホストサーバ12a,12b及び12cの少なくとも1つと管理サーバ13とが、1つのコンピュータ上で動作しても構わない。
【0016】
ストレージ装置11a及び11bの記憶領域(つまり、物理的な記憶領域)の一部は、例えば論理ユニットLU0乃至LU3(図2)の記憶領域(つまり、論理的な記憶領域)の一部に割り当てられる。図2は、論理ユニットLU0乃至LU3の記憶領域とストレージ装置11a及び11bの記憶領域との対応の例を示す概念図である。本実施形態において、ストレージ装置11a及び11bはそれぞれハードディスクドライブ(HDD)アレイを用いて構成される。より詳細に述べるならば、ストレージ装置11aは、複数のハードディスクドライブ(HDD)を備えたRAID(Redundant Arrays of Inexpensive DisksまたはRedundant Arrays of Independent Disks)構成のストレージ装置である。同様にストレージ装置11bも、複数のHDDを備えたRAID構成のストレージ装置である。なお、ストレージ装置11a及び11bの少なくとも1つが、HDD以外の記憶装置のアレイ(例えばフラッシュアレイ)を用いて構成されていても良い、また、ストレージ装置11a及び11bが必ずしもアレイ構成を有している必要はない。
【0017】
図2の例では、論理ユニットLU0乃至LU3それぞれの記憶領域の一部は、ストレージ装置11aの記憶領域の一部と対応付けられている。また、論理ユニットLU0乃至LU3それぞれの記憶領域の他の一部は、ストレージ装置11bの記憶領域の一部と対応付けられている。しかし、論理ユニットLU0,LU1,LU2またはLU3の記憶領域全体が、ストレージ装置11aまたは11bのいずれか一方の記憶領域の少なくとも一部だけと対応付けられていても構わない。
【0018】
ここで、論理ユニットLUi(iは0,1,2または3)を利用(認識)可能なホストサーバ12j(jはa,bまたはc)が、論理ユニットLUi内の目的の記憶位置(以下、第1の記憶位置と称する)にアクセスするものとする。この場合、ホストサーバ12jは、第1の記憶位置に対応付けられたストレージ装置11k(kはaまたはb)内の記憶位置(以下、第2の記憶位置と称する)と、当該ストレージ装置11kとを知る(認識する)必要がある。
【0019】
第1の記憶位置のアドレスは仮想アドレスと呼ばれ、第2の記憶位置のアドレスは実アドレスと呼ばれる。本実施形態では、論理ユニットLUiの記憶領域及びストレージ装置11kの記憶領域は、管理のために、ブロック(より詳細には、仮想ブロック及び実ブロック)と呼ばれる一定サイズ(第1のサイズ)の小領域に分割される。即ち、論理ユニットLUi及びストレージ装置11kは、それぞれ、複数の仮想ブロック及び複数の実ブロックを備えている。このため本実施形態では、仮想アドレス及び実アドレスとして、それぞれ、仮想ブロックアドレス(VBA)及び実ブロックアドレス(RBA)が用いられる。なお、仮想ブロックアドレス及び実ブロックアドレスが、それぞれ、論理ブロックアドレス及び物理ブロックアドレスと呼ばれることもある。
【0020】
再び図1を参照する。管理サーバ13は、論理ユニットを構築し、且つ構築された論理ユニットをホストサーバ12a,12b及び12cの少なくとも1つに提供する。本実施形態では管理サーバ13は論理ユニットLU0乃至LU3を構築する。管理サーバ13はまた、論理ユニットLU0をホストサーバ12a及び12cに提供し、論理ユニットLU1をホストサーバ12a及び12bに提供する。管理サーバ13は更に、論理ユニットLU2をホストサーバ12cに提供し、論理ユニットLU3をホストサーバ12bに提供する。つまり、ホストサーバ12aは論理ユニットLU0及びLU1をマウントする。ホストサーバ12bは論理ユニットLU1及びLU3をマウントし、ホストサーバ12cは論理ユニットLU0及びLU2をマウントする。
【0021】
管理サーバ13は、論理ユニットLU0乃至LU3を管理するのに用いられる管理情報130を保持する。より詳細に述べるならば、管理情報130は、管理サーバ13が有するローカル記憶装置に格納されている。本実施形態において、このローカル記憶装置は、不揮発性の記憶装置、例えばフラッシュメモリのような不揮発性メモリまたはHDDのようなディスク記憶装置である。
【0022】
管理情報130は、論理ユニットLU0乃至LU3にそれぞれ対応するアドレス管理テーブル(以下、AMテーブルと称する)134_LU0乃至134_LU3を含む。AMテーブル(第1のアドレス管理情報)134_LUi(i=0,1,2,3)は、論理ユニットLUiの仮想ブロックアドレス毎に対応するアドレス管理データを保持するエントリを有する。このエントリ(アドレス管理データ)は、詳細を後述するように、論理ユニット番号(LUN)フィールド、仮想ブロックアドレスフィールド、ストレージ識別子(ID)フィールド及び実ブロックアドレスフィールドの組を含む。
【0023】
管理情報130はまた、リビジョンデータ(第1のリビジョンデータ)135_LU0乃至135_LU3を含む。リビジョンデータ135_LU0乃至135_LU3は、論理ユニットLU0乃至LU3にそれぞれ対応するAMテーブル134_LU0乃至134_LU3のリビジョンを示す。本実施形態では、リビジョンデータ135_LU0乃至135_LU3は、AMテーブル134_LU0乃至134_LU3のリビジョンを示すリビジョン番号(RN)を含む。図1の例では、AMテーブル134_LU0,134_LU1,134_LU2及び134_LU3のリビジョン(rev.)は、それぞれ01(rev.01),02(rev.02),04(rev.04)及び02(rev.02)である。本実施形態では、リビジョンデータ135_LU0乃至135_LU3は、それぞれ対応するAMテーブル134_LU0乃至134_LU3に付加されているものとする。
【0024】
ホストサーバ12a,12b及び12cは、管理サーバ13に保持されている管理情報130に含まれていて、且つ自身がマウントする(つまり、自身が認識可能な)論理ユニットに対応するAMテーブルのコピーを保持する。本実施形態では、ホストサーバ12aは、AMテーブル(第1のアドレス管理情報)134_LU0及び134_LU1のコピーであるAMテーブル(第2のアドレス管理情報)124a_LU0及び124a_LU1を保持する。ホストサーバ12bは、AMテーブル(第1のアドレス管理情報)134_LU1及び134_LU3のコピーであるAMテーブル(第2のアドレス管理情報)124b_LU1及び124b_LU3を保持する。ホストサーバ12cは、AMテーブル(第1のアドレス管理情報)134_LU0及び134_LU2のコピーであるAMテーブル(第2のアドレス管理情報)124c_LU0及び124c_LU2を保持する。
【0025】
また、ホストサーバ12aは、AMテーブル124a_LU0及び124a_LU1のリビジョン(リビジョン番号)を示すリビジョンデータ(第2のリビジョンデータ)125a_LU0及び125a_LU1を保持する。ホストサーバ12bは、AMテーブル124b_LU1及び124b_LU3のリビジョンを示すリビジョンデータ(第2のリビジョンデータ)125b_LU1及び125b_LU3を保持する。ホストサーバ12cは、AMテーブル124c_LU0及び124c_LU2のリビジョンを示すリビジョンデータ(第2のリビジョンデータ)125c_LU0及び125c_LU2を保持する。
【0026】
本実施形態では、AMテーブル124a_LU0及び124a_LU1とリビジョンデータ125a_LU0及び125a_LU1とは、ホストサーバ12aのHBA120aが有するローカル記憶装置に格納されている。本実施形態において、このローカル記憶装置は、不揮発性の記憶装置、例えばフラッシュメモリのような不揮発性メモリである。同様に、AMテーブル124b_LU1及び124b_LU3と、リビジョンデータ125b_LU1及び125b_LU3とは、ホストサーバ12bのHBA120bが有するローカル記憶装置に格納されている。同様に、AMテーブル124c_LU0及び124c_LU2とリビジョンデータ125c_LU0及び125c_LU2とは、ホストサーバ12cのHBA120cが有するローカル記憶装置に格納されている。但し図1では、AMテーブル及びリビジョンデータは、作図の都合でHBAの外側に配置されている。
【0027】
ストレージ装置11a及び11bは、それぞれ更新管理テーブル(以下、UMテーブルと称する)110a及び110bを保持する。本実施形態では、UMテーブル(更新管理情報)110a及び110bは、ストレージ装置11a及び11bそれぞれのコントローラが有するローカル記憶装置に格納されている。このローカル記憶装置は、不揮発性の記憶装置、例えばフラッシュメモリのような不揮発性メモリまたはHDDのようなディスク記憶装置である。
【0028】
UMテーブル110a及び110bは、少なくとも、ストレージ装置11a及び11bの物理的な記憶領域の一部が割り当てられる論理ユニットLUi(ここでは、i=0,1,2,3)毎に、対応する更新管理データを保持するエントリを有する。このエントリ(更新管理データ)は、論理ユニット番号(LUN)フィールド、リビジョン番号(RN)フィールド及び更新サーバIDフィールドの組を含む。LUNフィールドは、更新管理データに対応する論理ユニットLUiの論理ユニット番号を保持するのに用いられる。論理ユニット番号は、論理ユニットLUiの識別子として用いられる。RNフィールドは、更新管理データに対応する論理ユニットLUiに関するAMテーブル134_LUiの最新のリビジョンを表す情報(第3のリビジョンデータ)、例えばリビジョン番号を保持するのに用いられる。更新サーバIDフィールドは、更新管理データに対応する論理ユニットLUiに関するAMテーブル134_LUiのリビジョンを更新するよう管理サーバ13に要求したホストサーバのID(つまり、更新サーバID)を保持するのに用いられる。更新サーバIDで示されるホストサーバの要求に基づいて、管理サーバ13がAMテーブル134_LUiのリビジョンを更新した結果として、更新後のAMテーブル134_LUiのリビジョン番号がRNフィールドに保持される。つまり、更新管理データのLUNフィールドは、更新管理データに対応する論理ユニットLUiの論理ユニット番号を保持し、更新管理データの更新サーバIDフィールドは、更新管理データに対応する論理ユニットLUiに関するAMテーブル134_LUiのリビジョンの更新を要求したホストサーバのIDを保持し、更新管理データのRNフィールドは、更新後のAMテーブル134_LUiのリビジョン番号を保持する。
【0029】
図3は、図1に示される管理情報130のデータ構造の例を示す。管理情報130は、ポインタリスト131と、ポインタテーブル132_0乃至132_3と、論理ユニットLU0乃至LU3に対応するホストサーバリスト133_LU0乃至133_LU3と、論理ユニットLU0乃至LU3に対応するAMテーブル134_LU0乃至134_LU3と、論理ユニットLU0乃至LU3に対応するリビジョンデータから構成される。図3では、作図の都合で、論理ユニットLU0及びLU1に対応する、ホストサーバリスト、AMテーブル及びリビジョンデータのみが示されている。つまり、図3では、ホストサーバリスト133_LU0及び133_LU1と、AMテーブル134_LU0及び134_LU1と、リビジョンデータ135_LU0及び135_LU1は示されているものの、論理ユニットLU2及びL31に対応する、ホストサーバリスト、AMテーブル及びリビジョンデータは省略されている。
【0030】
ポインタリスト131は、第1の要素と、第2の要素の配列とから構成される。第1の要素は例えばポインタリスト131の先頭の要素であり、第2の要素の数を示すリスト管理データN_LUを含む。本実施形態において、リスト管理データN_LUは、管理サーバ13が管理する(管理サーバ13によって提供される)論理ユニットLU0乃至LU3の数に一致する4(N_LU=4)を示す。第2の要素の配列は、リスト管理データN_LUで示される数のポインタPP_LU0乃至PP_LU3を含む。つまり、ポインタリスト131には、リスト管理データN_LU及びポインタPP_LU0乃至PP_LU3が保持される。
【0031】
ポインタPP_LU0乃至PP_LU3は、論理ユニットLU0乃至LU3に対応し、それぞれポインタテーブル132_0乃至132_3を指し示す。ポインタテーブル132_0乃至132_3には、ポインタ(ホストサーバリストポインタ)HSLP_LU0乃至HSLP_LU3及びポインタ(AMテーブルポインタ)AMTP_LU0乃至AMTP_LU3が保持される。
【0032】
ポインタHSLP_U0乃至HSLP_LU3は、ホストサーバリスト133_LU0乃至133_LU3を指し示す。ポインタAMTP_LU0乃至AMTP_LU3は、AMテーブル134_LU0乃至134_LU3(及びリビジョンデータ135_LU0乃至135_LU3)を指し示す。但し図3では、ホストサーバリスト133_LU2及び133_LU3と、AMテーブル134_LU2及び134_LU3(更にはリビジョンデータ135_LU2及び135_LU3)は、作図の都合で省略されている。
【0033】
ホストサーバリスト133_LUi(i=0,1,2,3)は、第3の要素と、第4の要素の配列とから構成される。第3の要素は例えばホストサーバリスト133_LUiの先頭の要素であり、第4の要素の数を示すリスト管理データN_HSを含む。第4の要素の配列は、リスト管理データN_HSで示される数(j)のホストサーバのID(ホストサーバID)を含む。ホストサーバリスト133_LUiに保持されるj個のホストサーバIDは、論理ユニットLUiが提供(マウント)されるj個のホストサーバを指す。本実施形態では、例えば、論理ユニットLU0はホストサーバ12a及び12cに提供され、論理ユニットLU1はホストサーバ12a及び12bに提供される。ここで、ホストサーバ12a,12b及び12cのホストサーバIDが、HSIDa,HSIDb及びHSIDcであるものとする。この場合、ホストサーバリスト133_LU0にはHSIDa及びHSIDcが保持され、ホストサーバリスト133_LU1にはHSIDa及びHSIDbが保持される。なお、図3では省略されているが、ホストサーバリスト133_LU2にはHSIDcが保持され、ホストサーバリスト133_LU3にはHSIDbが保持される。
【0034】
次に、本実施形態の動作について、リードアクセス処理を例に図4を参照して説明する。図4は、リードアクセス処理の典型的な手順を示すフローチャートである。図4において、フローチャートの各ステップを表す図形(矩形または菱形の図形)内に記載された下線が付された文字列は、対応するステップの動作の主体を表す。これは、図7,8及び10に示される後述のフローチャートにおいても同様である。
【0035】
今、例えばホストサーバ12aにおいて、論理ユニットLU0へのリードアクセスの要求が発生したものとする。するとホストサーバ12a(より詳細には、ホストサーバ12aのHBA120a)は、自身が保持するAMテーブル134_LU0のコピー(即ちAMテーブル124a_LU0)に従ってリードコマンドを生成して、当該リードコマンドをストレージ装置に対して発行する(ステップS1)。
【0036】
図5は、AMテーブル134_LUi(i=0,1,2,3)のデータ構造の例を示す。AMテーブル134_LUiは、論理ユニットLUiの仮想ブロックアドレス毎に対応するアドレス管理データを保持するエントリを有する。このエントリ(アドレス管理データ)は、論理ユニット番号(LUN)フィールド、仮想ブロックアドレスフィールド、ストレージIDフィールド及び実ブロックアドレスフィールドの組を含む。
【0037】
LUNフィールドは、対応する論理ユニットLUiに固有の番号、つまり論理ユニット番号(LUN=LUNi)を保持するのに用いられる。仮想ブロックアドレスフィールドは、対応する論理ユニットLUi内の仮想ブロックアドレス(VBA)を保持するのに用いられる。ストレージIDフィールドは、対応する仮想ブロックアドレスに割り当てられる実ブロックアドレスで指定される記憶位置を含むストレージ装置のID、つまりストレージID(SID)を保持するのに用いられる。実ブロックアドレスフィールドは、対応する仮想ブロックアドレス(VBA)に割り当てられる実ブロックアドレス(RBA)を保持するのに用いられる。AMテーブル134_LUiのコピーのデータ構造も、図5に示される当該AMテーブル134_LUiのそれと同様である。
【0038】
図5に示されるAMテーブル134_LUiの場合、例えば、論理ユニットLUiの仮想ブロックアドレスVBA0,VBA1及びVBA2には、ストレージIDがSIDaのストレージ装置の実ブロックアドレスRBA0,RBA1及びRBA2が割り当てられている。SIDaは、ストレージ装置11aのストレージIDを示すものとする。また、図5に示されるAMテーブル134_LUiがAMテーブル134_LU0(i=0)であり、ホストサーバ12a内のAMテーブル124a_LU0が、当該AMテーブル134_LUi(134_LU0)のコピーであるものとする。更に、ホストサーバ12aにおいて発生したリードアクセス要求が、論理ユニットLU0の仮想ブロックアドレスVBA0からのデータリードを示すものとする。
【0039】
この場合、ホストサーバ12aは、論理ユニットLU0の仮想ブロックアドレスVBA0とAMテーブル124a_LU0とに基づいて、実際に(物理的に)アクセスすべきストレージ装置のID(ストレージID)及び実ブロックアドレスを決定する。ここでは、ストレージ装置11aのID(SIDa)及び実ブロックアドレスRBA0が決定される。またホストサーバ12aは、リビジョンデータ125a_LU0に基づいて、AMテーブル124a_LU0のリビジョン(つまり、自身が認識しているAMテーブル134_LU0のリビジョン)を特定する。ここでは、リビジョン01(RN=01)が特定される。
【0040】
したがって、ステップS1においてホストサーバ12aは、ストレージ装置11a内の実ブロックアドレスRBA0からのデータリードを指定するリードコマンドを、当該ストレージ装置11aに発行する。このリードコマンドは、上述のように決定された実ブロックアドレスRBA0を含む。また、リードコマンドは、上述のように特定されたリビジョン01を示すリビジョン番号(RN=01)を含む。
【0041】
つまり、リードコマンドは、アクセスされるべきアドレスだけでなく、当該アドレスを取得するのに用いられたAMテーブル124a_LU0のリビジョン番号を、ストレージ装置11aに通知するのに用いられる。このリードコマンドを用いてストレージ装置11aに通知されるリビジョン番号は、当該リードコマンドを発行するホストサーバ12aが認識するAMテーブル134_LU0のリビジョン番号を指す。このリードコマンドには、例えばコマンドデスクリプタブロック(CDB)が用いられる。CDBは、スモールコンピュータシステムインタフェース(SCSI)で定義されている。
【0042】
図6は、本実施形態で適用されるコマンド(CDB)の典型的なフォーマットを示す。図6に示されるように、本実施形態では、12バイトのCDBが用いられる。12バイトのCDBの先頭バイト(第0バイト)は、オペレーションコードを保持するのに用いられる。オペレーションコードは、3ビット(上位)のグループコードと5ビット(下位)のコマンドコードとから構成される。グループコードが6または7(つまり、グループ6または7)の場合、対応するCDBはベンダー固有に定義されるCDBであり、一般には6または10バイトCDBである。本実施形態は、この定義を拡張して、10バイトCDBの後ろに2バイトが追加された12バイトCDBを、拡張されたグループ7のCDB(以下、拡張CDBと称する)として定義する。
【0043】
拡張CDBの第1バイトの上位3ビットは、論理ユニット番号(LUN)を保持するのに用いられる。拡張CDBの第2乃至第5バイトは、実ブロックアドレスを保持するのに用いられる。一般にCDBの第2乃至第5バイトは、論理ブロックアドレスを保持するのに用いられる。つまり本実施形態で適用される拡張CDBの第2乃至第5バイトには、論理ブロックアドレスに代えて実ブロックアドレスが保持される。上述の例では、この実ブロックアドレスには、論理ユニットLU0の仮想ブロックアドレスVBA0とAMテーブル124a_LU0とに基づいて決定された実ブロックアドレスRBA0が用いられる。拡張CDBの第2乃至第5バイトに保持される実ブロックアドレスは、転送されるデータブロックの先頭位置(先頭実ブロックアドレス)を示す。拡張CDBの第6バイトは予備として用いられる。拡張CDBの第7及び第8バイトは、転送されるデータブロックの数(つまり、転送データ長)を保持するのに用いられる。拡張CDBの第9及び第10バイトは、AMテーブルのリビジョンを示す情報(例えばRN)を保持するのに用いられる。このRN(リビジョン番号)は、拡張CDBにおいて新たに定義される情報である。このように本実施形態では、拡張CDB(コマンド)に、AMテーブルのRN(リビジョン情報)が含められる。拡張CDBの第11バイト(最終バイト)は、コントロールバイトを保持するのに用いられる。
【0044】
ストレージ装置11aは、ホストサーバ12aによって発行されたリードコマンドを受信すると、当該受信リードコマンドの指定するリード動作を正常に実行可能であるかを判定する。即ちストレージ装置11aは、受信リードコマンドに関するステータスがグッド(good)であるかを判定する(ステップS2)。
【0045】
以下、ステップS2における判定の詳細について説明する。まず、ストレージ装置11aは、受信されたリードコマンドに含まれている論理ユニット番号LUNの示す論理ユニットに対応する最新のAMテーブルのリビジョン番号(RN)を次のように取得する。ストレージ装置11aは、受信されたリードコマンドに含まれている論理ユニット番号LUN(ここでは、LUN=LUN0)に基づいて、UMテーブル110aを参照する。そしてストレージ装置11aは、論理ユニット番号LUN(LUN0)に対応付けられたUMテーブル110a内のエントリから、リビジョン番号(RN)を取得する。論理ユニット番号LUNがLUN0である本実施形態では、最新のAMテーブル134_LU0のリビジョン番号が取得される。
【0046】
次にストレージ装置11aは、受信リードコマンドに含まれているリビジョン番号を、取得されたリビジョン番号(つまり、最新のAMテーブル134_LU0のリビジョン番号)と比較する。そしてストレージ装置11aは、上述の両リビジョン番号が一致し、且つ受信されたリードコマンドで指定されたデータリードが正常に実行可能であるかに基づいて、当該リードコマンドの実行に関するステータスがグッドであるかを判定する(ステップS2)。
【0047】
もし、グッドであるならば(ステップS2のYes)、ストレージ装置11aは、ホストサーバ12aからのリードコマンドに対する応答として、周知のグッドステータス(つまり、ステータスバイトを用いて構成されるグッドステータス)を当該ホストサーバ12aに返す(ステップS3)。そしてストレージ装置11aは、リードコマンドで指定されたリード動作を実行する(ステップS4)。
【0048】
これに対し、リードコマンドの実行に関するステータスがグッドでなく(ステップS2のNo)、しかもその要因がリビジョンの不一致であるものとする(ステップS5のYes)。この場合、ストレージ装置11aは、ホストサーバ12aからのリードコマンドに対する応答として、リビジョン不一致を示すエラーステータスを当該ホストサーバ12aに返す(ステップS6)。本実施形態において、リビジョン不一致を示すエラーステータス(エラーステータスバイト)は、例えば“11000”のような、通常のステータスバイトで定義されていないパターン(つまり、予備として定義されているパターン)を用いて実現される。
【0049】
ホストサーバ12aは、リビジョン不一致を示すエラーステータスを受け取ると、管理サーバ13から論理ユニットLU0に関する最新のAMテーブル134_LU0のコピーを取得して、当該コピーを最新のAMテーブル124a_LU0として保持する(ステップS7)。つまり、ホストサーバ12aは、自身が保持するAMテーブル124a_LU0を、管理サーバ13から取得したAMテーブル134_LU0のコピーで更新する。AMテーブル134_LU0にはリビジョンデータ135_LU0が付されている。したがってホストサーバ12aは、AMテーブル134_LU0のコピーを取得することにより、リビジョンデータ135_LU0のコピーも取得する。これによりホストサーバ12aは、AMテーブル124a_LU0を最新の内容に更新すると同時に、リビジョンデータ125a_LU0も最新のリビジョン番号を示すように更新する。
【0050】
次にホストサーバ12aはステップS1に戻り、最新のAMテーブル124a_LU0(つまり、最新のAMテーブル134_LU0のコピー)に従ってリードコマンドを生成し直す。ステップS1においてホストサーバ12aは、生成し直されたリードコマンドをストレージ装置11aに対して発行する。
【0051】
一方、リードコマンドの実行に関するステータスがグッドでなく(ステップS2のNo)、しかもその要因がリビジョンの不一致以外であるものとする(ステップS5のNo)。このようなエラーとして、例えば、ストレージ装置11aによって認識不可の実ブロックアドレスが、リードコマンドに含まれている場合が挙げられる。このようなエラーの場合、ストレージ装置11aは従来技術と同様に対応するエラー処理を実行する(ステップS8)。
【0052】
本実施形態によれば、ホストサーバ12aによってストレージ装置11aに発行されるコマンドに、当該ホストサーバ12aが保持するAMテーブル124_LU0のRN(リビジョン番号)が含められる。これによりホストサーバ12aは、当該ホストサーバ12aが保持するAMテーブル124_LU0(AMテーブル134_LU0のコピー)のリビジョンを、特別のプロトコルを用いることなく、アクセスの要求と同時にストレージ装置11aに通知できる。
【0053】
ストレージ装置11aは、ホストサーバ12aによって発行されたリードコマンドを受信した場合に、当該リードコマンドに含まれているリビジョン番号を、当該ストレージ装置11aが保持するリビジョン番号と比較することができる。つまりストレージ装置11aは、リードコマンドの発行元(ホストサーバ12a)が保持するAMテーブル124_LU0(AMテーブル134_LU0のコピー)が最新であるかを、当該リードコマンドに基づいて判定することができる。本実施形態によれば、この判定を可能とするための特別なアクセスは不要であり、そのためのオーバーヘッドも増加しない。また本実施形態によれば、ストレージ装置における上述の判定の導入により、管理サーバ13が保持するAMテーブル134_LU0のコピーを全てのホストサーバに配信する処理を不要とすることができる。
【0054】
上述の実施形態の効果は、ホストサーバ12b及び12cにおいて論理ユニットへのアクセスの要求が発生した場合にも、同様に得られることは明白である。また本実施形態によれば、ホストサーバはAMテーブルのコピーを保持しているため、論理ユニットへのアクセスの要求が発生する都度、管理サーバ13に実ブロックアドレスを問い合わせる必要がない。このため本実施形態によれば、短い待ち時間(low latency)でのアクセスが実現できる。また本実施形態によれば、管理サーバ13へのアクセスが集中しないので、ボトルネックのない共有ストレージシステムを実現でき、しかもホストサーバの数またはストレージ装置の数(もしくは記憶容量)の増加に見合ったシステム性能を得ることができる。
【0055】
次に、本実施形態におけるライトアクセス処理について図7乃至図9を参照して説明する。図7はライトアクセス処理の典型的な手順を示すフローチャート、図8図7に示されるライトアクセス処理に含まれているAM(アドレス管理)テーブル更新処理の典型的な手順を示すフローチャートである。図9は、AMテーブル更新処理を説明するための図である。
【0056】
今、例えばホストサーバ12aにおいて、論理ユニットLU0へのライトアクセスの要求が発生したものとする。するとホストサーバ12aは、要求されたライトアクセスが、管理サーバ13に保持されているAMテーブル134_LU0の更新を必要とするかを判定する(ステップS11)。例えば、論理ユニットLU0内の新規領域へのライトの場合、AMテーブル134_LU0の更新が必要となる。この場合、ライトアクセスの実行前に、AMテーブル134_LU0が更新される必要がある。新規領域とは、論理ユニットLU0に含まれていて、且つストレージ装置11aまたは11b内の記憶領域が割り当てられていない記憶領域(つまりAMテーブル134_LU0に未登録の記憶領域)を指す。
【0057】
そこで、AMテーブル134_LU0の更新が必要な場合(ステップS11のYes)、ホストサーバ12aは、その旨を管理サーバ13に通知する(ステップS12)。この通知には、ホストサーバ12aが保持するAMテーブル124a_LU0のリビジョンを示すリビジョン番号(RN)が付されている。このAMテーブル124a_LU0のリビジョン番号は、ホストサーバ12aが保持するリビジョンデータ125a_LU0によって示される。
【0058】
管理サーバ13は、ホストサーバ12aからの通知に基づいて、当該ホストサーバ12aが保持するAMテーブル124a_LU0のリビジョンが最新であるかを、次のように判定する(ステップS13)。まず管理サーバ13は、ホストサーバ12aからの通知に含まれているリビジョン番号を、自身が保持するリビジョンデータ135_LU0によって示されるリビジョン番号(つまり、最新のリビジョン番号)と比較する。そして管理サーバ13は、両リビジョン番号が一致するかに基づいて、ホストサーバ12aが保持するAMテーブル124a_LU0のリビジョンが最新であるかを判定する。
【0059】
ここで、AMテーブル124a_LU0のリビジョンが最新でないものとする(ステップS13のNo)。この場合、管理サーバ13は、ホストサーバ12aからの上述の通知(ステップS12)に対する応答として、自身が保持する最新のAMテーブル134_LU0及びリビジョンデータ135_LU0のコピーを当該ホストサーバ12aに返す。ホストサーバ12aは、このコピーに基づいて、AMテーブル124a_LU0及びリビジョンデータ125a_LU0を更新する(ステップS14)。
【0060】
すると管理サーバ13は、ホストサーバ12a及びストレージ装置と共同して、AMテーブル更新処理(ステップS15)を実行する。本実施形態において、AMテーブル更新処理を管理サーバ13及びホストサーバ12aと共同して実行するストレージ装置は、自身の記憶領域が論理ユニットLU0に割り当てられているストレージ装置(つまり、ストレージ装置11a及び11b)である。これに対し、AMテーブル124a_LU0のリビジョンが最新であるならば(ステップS13のYes)、管理サーバ13は、ホストサーバ12a及びストレージ装置と共同して、AMテーブル更新処理(ステップS15)を実行する。
【0061】
以下、AMテーブル更新処理(ステップS15)について、図8及び図9を参照して説明する。まずホストサーバ12aは、図9において矢印A1で示されるように、管理サーバ13にAMテーブル134_LU0の変更(更新)を要求する(ステップS31)。この要求は、データがライトされるべき論理ユニットLU0内の仮想ブロックアドレス(先頭のライトアドレス)とサイズ(ライトされるデータブロックの数)とを含む。即ちホストサーバ12aは、AMテーブル134_LU0の変更を管理サーバ13に要求することにより、ライトアドレス(仮想ブロックアドレス)とサイズとを当該管理サーバ13に通知する。ここでは、ライトアドレスは、仮想ブロックアドレスVBA3であり、サイズ(ライトされるデータブロックの数)は1であるものとする。
【0062】
管理サーバ13は、ホストサーバ12aによって通知されたライトアドレス(仮想ブロックアドレスVBA3)及びサイズ(=1)の示す論理ユニットLU0内の記憶領域(新規領域)に割り当てられるべき、ストレージ装置11aまたは11b内の記憶領域を決定する(ステップS32)。ここでは、論理ユニットLU0内の新規領域は、仮想ブロックアドレスVBA3で指定される記憶領域であり、ストレージ装置11aまたは11b内の空き記憶領域の一部が、当該新規領域に割り当てられるべき記憶領域として決定されるものとする。また、決定された記憶領域が、ストレージ装置11aまたは11bに含まれていて、且つ実ブロックアドレスRBA3で指定される記憶領域であるものとする。ステップS32において管理サーバ13は、決定された記憶領域を、論理ユニットLU0内の新規領域に割り当てる。即ち管理サーバ13は、ホストサーバ12aによって通知された論理ユニットLU0内の新規領域の仮想ブロックアドレスVBA3に、決定された記憶領域の実ブロックアドレスRBA3を割り当てる。
【0063】
次に管理サーバ13は、現在、ホストサーバ12a以外のホストサーバからの変更要求(つまり、ステップS31に相当する変更要求)を当該管理サーバ13が処理しているかを判定する(ステップS33)。もし、他のホストサーバからの変更要求を処理しているならば(ステップS33のYes)、管理サーバ13は当該他のホストサーバからの変更要求の処理の完了を待つ(ステップS34)。
【0064】
これに対し、他のホストサーバからの変更要求を処理していないならば(ステップS33のNo)、管理サーバ13はステップS35に進む。ステップS35において管理サーバ13は、仮想ブロックアドレスVBA3への実ブロックアドレスRBA3の割り当て(ステップS32)が反映されるように、AMテーブル134_LU0及びリビジョンデータ135_LU0を更新する。即ち管理サーバ13は、ホストサーバ12aによって通知された仮想ブロックアドレスVBA3と当該仮想ブロックアドレスVBA3に割り当てられた実ブロックアドレスRBA3とを含むアドレス管理データを、図9において矢印A2で示されるように、AMテーブル134_LU0に追加する。また、リビジョンデータ135_LU0の示すリビジョン番号を、図9において矢印A3で示されるように変更する。ここでは、リビジョンデータ135_LU0の示すリビジョン番号が01から02に変更される。この変更されたリビジョンデータ135_LU0は、更新されたAMテーブル134_LU0のリビジョン(リビジョン番号)が02であることを示す。
【0065】
次に管理サーバ13は、AMテーブル134_LU0の更新を、論理ユニットLU0に割り当てられた記憶領域を有するストレージ装置に通知する(ステップS36)。本実施形態において論理ユニットLU0に割り当てられた記憶領域を有するストレージ装置は、ストレージ装置11a及び11bである。この場合、AMテーブル134_LU0の更新が、図9において矢印A4で示されるようにストレージ装置11aに通知される。また、図9では省略されているが、AMテーブル134_LU0の更新は、ストレージ装置11bにも通知される。この通知は、AMテーブル134_LU0の更新を要求したホストサーバ12aのIDと、論理ユニットLU0の論理ユニット番号LU0とを含む。
【0066】
ストレージ装置11aは、管理サーバ13からの更新通知を受け取ると、AMテーブル134_LU0と対応付けられた論理ユニットLU0(つまり、更新通知で指定された論理ユニットLU0)へのアクセスをロックする(ステップS37)。またストレージ装置11bもストレージ装置11aと同様にステップS37を実行する。次にストレージ装置11aは、UMテーブル110aに含まれていて、且つ論理ユニットLU0の論理ユニット番号LU0に対応付けられているリビジョン番号(RN)及び更新サーバIDを、図9において矢印A5で示されるように更新する(ステップS38)。またストレージ装置11bもストレージ装置11aと同様に、ステップS38を実行する。ここでは、リビジョン番号は01から02に更新され、更新サーバIDはホストサーバ12aのホストサーバIDに更新される。
【0067】
次にストレージ装置11aは、UMテーブル110aの更新の完了を、図9において矢印A6で示されるように管理サーバ13に通知し、しかる後に論理ユニットLU0へのアクセスがロックされている状態を解除する(ステップS39)。またストレージ装置11bもストレージ装置11aと同様に、ステップS39を実行する。
【0068】
すると管理サーバ13は、更新されたAMテーブル134_LU0及びリビジョンデータ135_LU0のコピーを、図9において矢印A7で示されるようにホストサーバ12aに送信する(ステップS40)。ホストサーバ12aは、送信されたAMテーブル134_LU0及びリビジョンデータ135_LU0のコピーを、最新のAMテーブル124a_LU0及びリビジョンデータ125a_LU0として保持する(ステップS41)。つまり、ホストサーバ12aは、自身が保持するAMテーブル124a_LU0及びリビジョンデータ125a_LU0を、送信されたAMテーブル134_LU0及びリビジョンデータ135_LU0のコピーで更新する。これにより、AMテーブル更新処理(ステップS15)は終了する。
【0069】
次にホストサーバ12aは、更新されたAMテーブル124a_LU0に従って、図6に示されるデータ構造を有するライトコマンド(CDB)を生成して、当該ライトコマンドをストレージ装置に対して発行する(ステップS16)。ここでは、図9において矢印A8で示されるように、ホストサーバ12aからストレージ装置11aにライトコマンドが発行されるものとする。このライトコマンドの詳細についての説明は省略する。必要があれば、後述のステップS18で発行されるライトコマンドの説明を参照されたい。
【0070】
ストレージ装置11aは、ホストサーバ12aによって発行されたライトコマンドを受信する。この場合、ストレージ装置11aは受信ライトコマンドで指定されたライト動作を実行する(ステップS17)。なお、図7のフローチャートでは、ストレージ装置11aがライトコマンドを受信した際の受信ライトコマンドの実行に関するステータスについての記載は省略されている。必要があれば、ステップS18で発行されるライトコマンドがストレージ装置11aによって受信された場合の説明を参照されたい。
【0071】
次に、ホストサーバ12aで発生したライトアクセスの要求が、AMテーブル134_LU0の更新を必要としないものとする(ステップS11のNo)。例えば、論理ユニットLU0内の既存のデータを変更するだけのライトアクセスは、AMテーブル134_LU0の更新を必要としない。このような場合、ホストサーバ12aは、現在自身が保持しているAMテーブル124a_LU0に従ってライトコマンドを生成して、当該ライトコマンドをストレージ装置に対して発行する(ステップS18)。ここでは、ストレージ装置11aにライトコマンドが発行されたものとする。このライトコマンドは、論理ユニットLU0を示す論理ユニット番号LU0を含む。このライトコマンドは、仮想ブロックアドレスVBA3に対応付けられた実ブロックアドレスRBA3、及び転送データ長(ライトされるデータブロックの数=1)をも含む。このライトコマンドは更に、AMテーブル124a_LU0のリビジョンを示すリビジョン番号(RN)も含む。このリビジョン番号には、ホストサーバ12aが保持しているリビジョンデータ125a_LU0が用いられる。
【0072】
ストレージ装置11aは、ホストサーバ12aによって発行されたライトコマンドを受信すると、当該ホストサーバ12aに保持されているAMテーブル124a_LU0のリビジョンが最新であるかを次のように判定する(ステップS19)。まずストレージ装置11aは、受信されたライトコマンドに含まれている論理ユニット番号LUN0に対応付けられたUMテーブル110a内のエントリから、リビジョン番号(RN)を取得する。次にストレージ装置11aは、受信ライトコマンドに含まれているリビジョン番号を、取得されたリビジョン番号と比較する。そしてストレージ装置11aは、両リビジョン番号が一致しているかに基づいて、AMテーブル124a_LU0のリビジョンが最新であるかを判定する。
【0073】
もし、AMテーブル124a_LU0のリビジョンが最新であるならば(ステップS19のYes)、ストレージ装置11aはステップS17に進んで、受信ライトコマンドで指定されたライト動作を実行する。より詳細に述べるならば、AMテーブル124a_LU0のリビジョンが最新であることを含めて、受信ライトコマンドの実行に関するステータスがグッドである場合、ストレージ装置11aは受信ライトコマンドで指定されたライト動作を実行する(ステップS17)。
【0074】
これに対し、AMテーブル124a_LU0のリビジョンが最新でないならば(ステップS19のNo)、ストレージ装置11aはリビジョン不一致を示すエラーステータスをホストサーバ12aに返す。即ち、受信ライトコマンドの実行に関するステータスがグッドでなく、しかもその要因がリビジョンの不一致であるならば、ストレージ装置11aはリビジョン不一致を示すエラーステータスをホストサーバ12aに返す。
【0075】
するとホストサーバ12aは、管理サーバ13から論理ユニットLU0に関する最新のAMテーブル134_LU0及びリビジョンデータ135_LU0のコピーを取得して、当該コピーを最新のAMテーブル124a_LU0及びリビジョンデータ125a_LU0として保持する(ステップS20)。
【0076】
次にホストサーバ12aは、最新のAMテーブル124a_LU0に従ってライトコマンドを再び生成し、当該生成されたライトコマンドをストレージ装置11aに対して再び発行する(ステップS21)。ホストサーバ12aによって再発行されたライトコマンドは、ストレージ装置11aによって受信される。ストレージ装置11aは、リビジョンの一致を含めて、受信ライトコマンドの実行に関するステータスがグッドである場合、受信ライトコマンドで指定されたライト動作を実行する(ステップS17)。なお、受信ライトコマンドの実行に関するステータスがグッドでなく、しかもその要因がリビジョンの不一致以外であるならば、ストレージ装置11aは対応するエラー処理を実行する。
【0077】
図7に示されるフローチャートでは、ホストサーバ12aはステップS20を実行した後にステップS21に進んで、再びライトコマンドを発行する。しかし、ステップS20を実行した後に、ホストサーバ12aがステップS18に戻って再びライトコマンドを発行しても良い。
【0078】
次に本実施形態において、図1に示される共有ストレージシステムにホストサーバが追加される場合の動作について説明する。ホストサーバの追加は、以下に述べる手順で実現される。まず、追加されるべきホストサーバが、共有ストレージシステムにおいてストレージ装置11a及び11bと管理サーバ13とを接続するスイッチ14に接続される。スイッチ14に接続されたホストサーバは、論理ユニットLUiをマウントするものとする。この場合、スイッチ14に接続されたホストサーバは、論理ユニットLUiに対応付けられたAMテーブル134_LUi及びリビジョンデータ135_LUiのコピーを管理サーバ13から取得して、当該コピーを保持する。これにより、共有ストレージシステムにホストサーバが追加される。
【0079】
次に、共有ストレージシステムにおいて障害が発生した場合の動作について説明する。共有ストレージシステムにおける主要な障害として、ネットワーク接続の一時的な切断と、管理サーバ13のダウンとが挙げられる。
【0080】
そこでまず、ネットワーク接続が一時的に切断した場合について説明する。まず、本実施形態とは異なって、管理サーバ13が最新のAMテーブルを共有ストレージシステム内の全てのホストサーバ(つまり、ホストサーバ12a,12b及び12c)に配信するような一般に想定される場合を検討する。このようなシステムにおいて、ネットワーク接続が一時的に切断した場合、ホストサーバ間で、AMテーブルの不一致が発生する可能性がある。そこで、このようなシステムでは、ホストサーバ間でAMテーブルが一致しているかを例えば定期的に監視するための仕組み(監視機能)が必要となる。
【0081】
これに対して本実施形態では、ホストサーバが例えば論理ユニットLUiにアクセスする際に、当該ホストサーバ(より詳細には、当該ホストサーバによってアクセスが要求されたストレージ装置)は、当該論理ユニットLUiに対応付けられたAMテーブル134_LUiのコピーが最新であるかを判定する。したがって本実施形態では、ネットワーク接続の一時的な切断が発生しても、ホストサーバ間でAMテーブルが一致しているかを考慮する必要はない。
【0082】
次に、管理サーバがダウンした場合の動作について、アクセス処理を例に、図10及び図11を参照して説明する。図10は管理サーバダウン時のアクセス処理の典型的な手順を示すフローチャート、図11は管理サーバダウン時のアクセス処理を説明するための図である。
【0083】
今、管理サーバ13がダウンしている状態で、ホストサーバ12aにおいて、論理ユニットLU0またはLU1へのアクセスの要求が発生したものとする。なお、共有ストレージシステム内の各ホストサーバが、管理サーバ13のダウンを検出する方法は、従来から種々知られている。このため、この方法の説明は省略する。
【0084】
まず、ホストサーバ12aは、要求されたアクセスが、AMテーブル134_LU0または134_LU1の更新を必要とするかを判定する(ステップS51)。AMテーブル134_LU0または134_LU1の更新を必要とするアクセスは、例えば、論理ユニットLU0またはLU1内の新規領域へのライトアクセスの場合である。この場合(ステップS51のYes)、ホストサーバ12aはアクセス不可を判断して(ステップS52)、アクセス処理を終了する。このように管理サーバ13がダウンしている状態では、ホストサーバ12aは、管理サーバ13が保持するAMテーブルの更新を必要とするアクセスの実行を不可と判断する。その理由は、管理サーバ13が保持するAMテーブルは常に最新でなければならないためである。
【0085】
一方、AMテーブル134_LU0または134_LU1の更新が不要なアクセスは、例えば、リードアクセスの場合、或いは論理ユニットLU0またはLU1内の既存のデータを変更するだけのライトアクセスの場合である。このようなアクセスの実行は、ホストサーバ12aが最新のAMテーブル134_LU0または134_LU1のコピーをAMテーブル124a_LU0または124a_LU1に保持しているならば可能である。
【0086】
そこで、このようなアクセスの場合(ステップS51のNo)、ホストサーバ12aは、現在自身が保持しているAMテーブル124a_LU0または124a_LU1に従って、アクセスコマンドを生成して、当該アクセスコマンドをストレージ装置に対して発行する(ステップS53)。ここでは、アクセスコマンドがストレージ装置11aに発行されたものとする。このアクセスコマンドは、論理ユニットLU0またはLU1を示す論理ユニット番号LU0またはLU1を含む。このライトコマンドはまた、AMテーブル124a_LU0または124a_LU1のリビジョンを示すリビジョン番号(RN)をも含む。
【0087】
ストレージ装置11aは、ホストサーバ12aによって発行されたアクセスコマンドを受信すると、前述のステップS13と同様に、当該ホストサーバ12aに保持されているAMテーブル124a_LU0または124a_LU1のリビジョンが最新であるかを判定する(ステップS54)。即ちストレージ装置11aは、受信アクセスコマンドに含まれているリビジョン番号を、UMテーブル110aから取得される論理ユニット番号LUN0またはLU1に対応付けられたリビジョン番号と比較する。この比較の結果(リビジョンの一致または不一致)に基づいて、ホストサーバ12aはAMテーブル124a_LU0または124a_LU1のリビジョンが最新であるかを判定する
図11の例では、AMテーブル124a_LU0及び124a_LU1のリビジョン番号は、それぞれ01及び01である。また、ストレージ装置11aに保持されているUMテーブル110aの示す、論理ユニット番号LU0及びLU1に対応付けられたリビジョン番号(つまり、AMテーブル134_LU0及び134_LU1のリビジョン番号)は、それぞれ01及び02である。したがって図11の例では、AMテーブル124a_LU0のリビジョン番号はAMテーブル134_LU0のリビジョン番号に一致するものの、AMテーブル124a_LU1のリビジョン番号はAMテーブル134_LU1のリビジョン番号に一致しない。
【0088】
今、ホストサーバ12aによって発行されたアクセスコマンドが、論理ユニットLU0へのアクセスを要求しているものとする。この場合、図11において矢印A11で示されるように、AMテーブル124a_LU0のリビジョン番号(01)はAMテーブル134_LU0のリビジョン番号(01)に一致する。つまり、AMテーブル124a_LU0のリビジョンは最新である(ステップS54のYes)。ストレージ装置11aは、リビジョンの一致を含めて、受信ライトコマンドの実行に関するステータスがグッドである場合、受信アクセスコマンドによって要求されたアクセスを実行する(ステップS59)。
【0089】
次に、ホストサーバ12aによって受信されたアクセスコマンドが、論理ユニットLU1へのアクセスを要求しているものとする。この場合、図11において矢印A12で示されるように、AMテーブル124a_LU1のリビジョン番号(01)はAMテーブル134_LU1のリビジョン番号(02)に一致しない。つまり、AMテーブル124a_LU1のリビジョンは最新でない(ステップS54のNo)。この場合、ストレージ装置11aは、ホストサーバ12aからのアクセスコマンドに対する応答として、リビジョン不一致を示すエラーステータスを当該ホストサーバ12aに返す。ホストサーバ12aは、管理サーバ13がダウンしている状態で、ストレージ装置11aからリビジョン不一致を示すエラーステータスが返された場合、最新のAMテーブル134_LU1のコピーを持つホストサーバを当該ストレージ装置11aに問い合わせる。AMテーブル124a_LU1のリビジョンが最新でない場合の上述の動作は、図10に示すフローチャートでは省略されている。
【0090】
なお、管理サーバ13がダウンしていることをホストサーバ12aが認識していない状態で、ストレージ装置11aからリビジョン不一致を示すエラーステータスが返された場合、当該ホストサーバ12aは次のように動作する。まずホストサーバ12aは、ステップS7またはS20と同様に、管理サーバ13から論理ユニットLU1に関する最新のAMテーブル134_LU1のコピーを取得しようとする。しかし、管理サーバ13がダウンしているため、ホストサーバ12aは最新のAMテーブル134_LU1のコピーの取得に失敗する。これにより管理サーバ13は管理サーバ13がダウンしていることを認識する。そこでホストサーバ12aは、最新のAMテーブル134_LU1のコピーを持つホストサーバをストレージ装置11aに問い合わせる。
【0091】
ストレージ装置11aはホストサーバ12aからの上述の問い合わせに応じて、最新のAMテーブル134_LU1のコピーを持つホストサーバを、UMテーブル110aに基づいて次のように特定する(ステップS55)。まずストレージ装置11aは、UMテーブル110aの示す、論理ユニット番号LU1に対応付けられている更新サーバIDを取得する。そしてストレージ装置11aは、取得された更新サーバIDの示すホストサーバを、最新のAMテーブル134_LU1のコピーを持つホストサーバとして特定する。ここでは、ホストサーバ12bが特定されたものとする。
【0092】
次にストレージ装置11aは、ホストサーバ12aからの問い合わせに対する応答として、特定されたホストサーバ12bのIDを当該ホストサーバ12aに通知する(ステップS56)。するとホストサーバ12aは、図11において矢印A13で示されるように、通知されたホストサーバ12bから、論理ユニットLU1に対応する最新のAMテーブル124b_LU1及びリビジョンデータ125b_LU1のコピーを取得する(ステップS57)。ステップS57においてホストサーバ12aは、取得されたコピーに基づいて、AMテーブル124a_LU1及びリビジョンデータ125a_LU1を更新する。つまりホストサーバ12aは、AMテーブル124b_LU1及びリビジョンデータ125b_LU1のコピーを、最新のAMテーブル134_LU1及びリビジョンデータ135_LU1のコピーであるAMテーブル124a_LU1及びリビジョンデータ125a_LU1として保持する。
【0093】
次にホストサーバ12aは、最新のAMテーブル124a_LU1に従ってアクセスコマンドを再び生成し、当該生成されたライトコマンドをストレージ装置11aに対して再び発行する(ステップS58)。ホストサーバ12aによって再発行されたライトコマンドは、ストレージ装置11aによって受信される。ストレージ装置11aは、リビジョンの一致を含めて、受信ライトコマンドの実行に関するステータスがグッドである場合、受信ライトコマンドで指定されたライト動作を実行する(ステップS59)。
【0094】
なお、ストレージ装置11aが、リビジョン不一致を示すエラーステータスをホストサーバ12aに返す前に、最新のAMテーブル134_LU1のコピーを持つホストサーバを特定しても良い。そして、特定されたホストサーバ(例えばホストサーバ12b)を、リビジョン不一致を示すエラーステータスを用いてホストサーバ12aに通知しても良い。この場合、ホストサーバ12aは、管理サーバ13がダウンしていることを認識しているならば、通知されたホストサーバ12bから最新のAMテーブル124b_LU1及びリビジョンデータ125b_LU1のコピーを取得すれば良い。また、管理サーバ13がダウンしていないか、或いは管理サーバ13がダウンしていることをホストサーバ12aが認識していないならば、ホストサーバ12aは、まず管理サーバ13から最新のAMテーブル134_LU1及びリビジョンデータ135_LU1のコピーを取得する動作を実行すれば良い。
【0095】
本実施形態によれば、ストレージ装置11aは、論理ユニット毎に、対応する論理ユニットに関する最新のAMテーブルのリビジョン番号と、当該AMテーブルを最後に更新したホストサーバのIDとを、UMテーブル110aを用いて管理している。このためストレージ装置11aは、上述のようにホストサーバ12aから論理ユニット番号及びリビジョン番号を含むアクセスコマンドが発行された場合に(ステップS53)、当該ホストサーバ12aの保持するAMテーブルが最新であるかを判定することができる(ステップS54)。
【0096】
また、ホストサーバ12aの保持するAMテーブルが最新でない場合(ステップS54のNo)、ストレージ装置11aは、AMテーブルを最後に更新したホストサーバを特定して、当該特定されたホストサーバをホストサーバ12a(アクセス要求元)に通知することもできる(ステップS55及びS56)。よってホストサーバ12aは、通知されたホストサーバから最新のAMテーブルのコピーを取得して、当該コピーに基づいて目的の論理ユニットにアクセスすることができる(ステップS57及びS58)。
【0097】
また、ホストサーバ12a,12b及び12cでは、AMテーブルがフラッシュメモリのような不揮発性記憶装置に格納されている。このため、ホストサーバ12a,12b及び12cの電源の遮断またはホストサーバ12a,12b及び12cのリブートに起因して、ホストサーバ12a,12b及び12c内のAMテーブルが破壊されるおそれはない。なお、ホストサーバ12a,12b及び12cにおいて、AMテーブルがRAMのような揮発性記憶装置に格納されていても構わない。この場合、上述の電源遮断またはリブートによってAMテーブルが破壊されている可能性がある。しかし、ストレージ装置11a及び11bは、ホストサーバ12a,12bまたは12cからのアクセスコマンドを受け取った場合、当該アクセスコマンドで通知されるリビジョンが最新であるかを確認する。このため、ストレージ装置11a及び11bが誤ったアドレスにアクセスするおそれはない。
【0098】
図10に示されるフローチャートでは、ホストサーバ12aはステップS57を実行した後にステップS58に進んで、再びアクセスコマンドを発行する。しかし、ステップS57を実行した後に、ホストサーバ12aがステップS53に戻って再びアクセスコマンドを発行しても良い。
【0099】
以上説明した少なくとも1つの実施形態によれば、複数のホストサーバが、管理サーバに保持されているアドレス管理情報のコピーをそれぞれ有する構成を適用するにも拘わらずに、ホストサーバ間でアドレス管理情報を一致させる処理を不要とすることができる。
【0100】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【要約】
実施形態によれば、共有ストレージシステムは、複数のホストサーバと、複数のストレージ装置と、管理サーバとを具備する。前記管理サーバは、複数の論理ユニットの各々を第1のアドレス管理情報を用いて管理し、且つ前記第1のアドレス管理情報のリビジョンを第1のリビジョンデータを用いて管理する。前記複数のホストサーバの各々は、前記第1のアドレス管理情報及び前記第1のリビジョンデータそれぞれのコピーを保持する。第1のホストサーバから第1のストレージ装置に、前記第1のリビジョンデータのコピー(第2のリビジョンデータ)に基づいてアクセスが要求された場合、前記第1のストレージ装置は、前記第2のリビジョンデータが、前記管理サーバによって通知されたリビジョンデータに一致していることを条件として、要求されたアクセスを実行する。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11