制御装置、ストレージシステムおよび制御方法
【課題】中継装置の接続情報の異常を解消する。
【解決手段】制御装置1の記憶部1bは、制御装置1の配下に接続されている装置を示す接続情報1b1を記憶する。制御部1aは、中継装置2が作成した中継装置2に接続されている装置を示す接続情報2b1を取得し、取得した接続情報2b1と記憶部1bに記憶されている接続情報1b1との比較を行い、比較結果に基づいて中継装置2に対して接続情報2b1のリセット指示を送信する。
【解決手段】制御装置1の記憶部1bは、制御装置1の配下に接続されている装置を示す接続情報1b1を記憶する。制御部1aは、中継装置2が作成した中継装置2に接続されている装置を示す接続情報2b1を取得し、取得した接続情報2b1と記憶部1bに記憶されている接続情報1b1との比較を行い、比較結果に基づいて中継装置2に対して接続情報2b1のリセット指示を送信する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御装置、ストレージシステムおよび制御方法に関する。
【背景技術】
【0002】
磁気ディスク、光ディスク、半導体メモリ等の記憶媒体を利用してデータを記憶する記憶装置および記憶装置へのデータの書き込み、または、記憶装置からのデータの読み出しを制御する制御装置(コントローラモジュール(CM):Controller Module)を有するストレージシステムが広く用いられている。また、ストレージシステムには、記憶装置および制御装置に、記憶装置と制御装置との間に直列接続されるとともに、記憶装置と制御装置との間のアクセスを中継する、SAS(Serial Attached SCSI)エクスパンダ等の中継装置を有するものがある。
【0003】
また、ストレージシステムの中継装置は、ルーティングテーブル等に記憶している接続情報を用いて中継装置や記憶装置と接続する場合がある。
中継装置を有するストレージシステムの接続制御に関して、以下の技術が知られている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−242872号公報
【特許文献2】特開2009−181317号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記の中継装置は、自装置でDISCOVERプロセスを実行して他の装置をルーティングテーブルに設定するSD(Self−DISCOVER)モードで動作する場合と、自装置ではDISCOVERプロセスを実行せず、制御装置等の他の装置が作成したルーティングテーブルを自装置に設定するNSD(Non−Self−DISCOVER)モードで動作する場合とがある。
【0006】
ここで、SDモードで動作する中継装置とNSDモードで動作する中継装置とを混在させて制御装置と接続した場合には、SDモードで動作する中継装置のルーティングテーブルが正しく作成されない場合がある。
【0007】
例えば、新たに記憶装置がストレージシステムに接続された場合においてSDモードで動作する中継装置がルーティングテーブルを作成するものとする。このとき、上記中継装置がルーティングテーブルを作成したタイミングが早い場合等によって、接続された記憶装置との間に介在する中継装置のルーティングテーブルに設定されていないときには、接続された記憶装置が上記中継装置のルーティングテーブルに設定されないことになる。
【0008】
このように、SDモードで動作する中継装置において一部の中継装置や記憶装置が認識されない場合等が生じ得る。このように、SDモードで動作する中継装置において、接続情報が正しく作成されない場合が生じ得る。
【0009】
このような点に鑑み、中継装置の接続情報の異常を解消可能な制御装置、ストレージシステムおよび制御方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するために以下のような中継装置のデータアクセスの中継により記憶装置にデータアクセスを行う制御装置が提供される。この制御装置は、自装置の配下に接続されている装置を示す第1の接続情報を記憶する記憶部と、中継装置が作成した当該中継装置に接続されている装置を示す第2の接続情報を取得し、取得した第2の接続情報と記憶部に記憶されている第1の接続情報との比較を行い、比較結果に基づいて中継装置に対して第2の接続情報のリセット指示を送信する制御部と、を有する。
【発明の効果】
【0011】
中継装置の接続情報の異常を解消することが可能となる。
【図面の簡単な説明】
【0012】
【図1】第1の実施の形態のストレージシステムを示す図である。
【図2】第2の実施の形態のストレージシステムのハードウェアを示す図である。
【図3】第2の実施の形態のストレージシステムにおけるコントローラ、エクスパンダ、記憶装置の接続を示す図である。
【図4】第2の実施の形態のコントローラのルーティングテーブルを示す図である。
【図5】第2の実施の形態のエクスパンダのルーティングテーブルを示す図である。
【図6】第2の実施の形態におけるルーティングテーブルの比較を示す図である。
【図7】第2の実施の形態におけるルーティングテーブルの比較を示す図である。
【図8】第2の実施の形態のルーティングテーブル設定処理を示す図である。
【図9】第2の実施の形態のルーティングテーブル比較処理を示す図である。
【図10】第2の実施の形態の変形例のルーティングテーブル比較処理を示す図である。
【図11】第2の実施の形態の変形例のルーティングテーブル比較処理を示す図である。
【発明を実施するための形態】
【0013】
以下、実施の形態を、図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態のストレージシステムを示す図である。ストレージシステムは、制御装置1、中継装置2,3,4、記憶装置5,6,7を有する。
【0014】
制御装置1は、中継装置2〜4のデータアクセスの中継により記憶装置5〜7にデータアクセスを行う。制御装置1は、制御部1a、記憶部1bを有する。
ここで、第1の実施の形態では、中継装置2は、新たな装置(例えば、記憶装置7)が中継装置4に接続された場合、自装置により配下の中継装置(例えば、中継装置3)の接続情報3b1を取得し、取得した接続情報3b1に基づいて、配下に新たに接続された装置を含む接続情報2b1を作成し、記憶部2bに記憶させるものとする(自己作成可能)。一方、中継装置3,4は、新たな装置(例えば、記憶装置7)が中継装置4に接続された場合、それぞれ自ら接続情報3b1,4b1を作成せず、制御装置1がそれぞれ自装置用に作成した接続情報を受信して、それぞれ記憶部3b,4bに記憶させるものとする(自己作成不可)。
【0015】
制御部1aは、自己作成可能である中継装置2が作成した中継装置2に接続されている装置を示す接続情報2b1を取得し、取得した接続情報2b1と記憶部1bに記憶されている接続情報1b1との比較を行い、比較結果に基づいて中継装置2に対して接続情報2b1のリセット指示を送信する。
【0016】
記憶部1bは、制御装置1の配下に接続されている装置を示す接続情報1b1を記憶する。ここで、各接続情報は、自装置に対し、他の装置を介して間接的に接続されている装置を示すものとする。なお、これに限らず、自装置と直接接続されている装置を含んでもよい。接続情報1b1は、例えば、ストレージシステムの電源投入時に制御部1aが中継装置2〜4の接続状態を収集して作成される。また、接続情報1b1は、ストレージシステムに新たな装置が接続された場合等のストレージシステムの接続状態が変化した場合に、制御部1aが接続状態の変化を検出すると、これに基づいて更新される。
【0017】
中継装置2〜4は、記憶部2b〜4bを有する。また、中継装置2〜4は、それぞれ記憶装置5〜7と接続可能である。中継装置2〜4は、それぞれ記憶部2b〜4bに記憶されている接続情報2b1〜4b1に基づいて他の装置と接続する。
【0018】
記憶部2b〜4bは、それぞれ中継装置2〜4の配下に接続されている装置を示す接続情報を記憶する。
記憶装置5〜7は、ユーザデータを記憶し、制御装置1のアクセスに基づいて記憶しているデータの読み書きを行う。
【0019】
この場合、中継装置2による接続情報2b1の作成のタイミングによっては、接続情報2b1に異常が生じる場合がある。例えば、新たに中継装置4に記憶装置7が接続された際に、中継装置3の接続情報3b1の制御装置1による更新前に、中継装置2による接続情報2b1の作成が行われた場合が考えられる。この場合、中継装置2が接続情報3b1を取得した時点では、接続情報3b1には記憶装置7が設定されていない。このため、このとき、中継装置2が接続情報3b1に基づいて接続情報2b1を作成すると、接続情報2b1に記憶装置7が設定されず、中継装置2は記憶装置7にアクセスできない場合が生じ得る。
【0020】
これに対して、制御部1aは、新たな装置として記憶装置7が配下に接続されたことを検出した際等に、中継装置2が作成した接続情報2b1と制御装置1が作成した接続情報1b1との比較を行い、一致しない場合には中継装置2に対して接続情報2b1のリセット指示を送信する。これにより、中継装置2で接続情報2b1が再び作成され、接続情報2b1に記憶装置7の接続を反映させることができる。
【0021】
このようにして、中継装置2の接続情報の異常を解消することが可能となる。
[第2の実施の形態]
次に、第1の実施の形態のストレージシステムをより具体的にした実施の形態を、第2の実施の形態として説明する。
【0022】
図2は、第2の実施の形態のストレージシステムのハードウェアを示す図である。ストレージシステム100は、2つのコントローラ111a,112aを有するコントローラエンクロージャ(CE:Controller Enclosure)110を有する。さらに、ストレージシステム100は、複数のドライブエンクロージャ(DE:Drive Enclosure)150b,150c,150dを有する。
【0023】
コントローラエンクロージャ110と各ドライブエンクロージャ150b〜150dとは、それぞれ、記憶装置153a,154a,153b,154b,153c,154c,153d,154dを有する。
【0024】
ドライブエンクロージャ150b〜150dは、コントローラ111a,112aのそれぞれに接続された2つのデータ伝送経路121,122に直列に接続されている。データ伝送経路121,122には、例えば、SASが用いられている。ここで、ドライブエンクロージャ150b〜150dの数は、3つに限定されるものではなく、例えば、必要とする記憶容量に応じて適宜設定される。
【0025】
まず、ドライブエンクロージャ150bについて説明する。ドライブエンクロージャ150bは、メモリ151b1を有するエクスパンダ(EXP:Expander)151bと、メモリ152b1を有するエクスパンダ152bと、データを記憶する記憶装置153b,154bとを有する。記憶装置153b,154bには、例えば、磁気ディスク(HDD:Hard Disk Drive)やソリッドステートドライブ(SSD:Solid State Drive)が用いられている。
【0026】
エクスパンダ151b,152bはそれぞれ、SAS等のデータ伝送経路により、記憶装置153b,154bと接続されている。エクスパンダ151bは、データ伝送経路121に直列接続され、エクスパンダ152bは、データ伝送経路122に直列接続されている。エクスパンダ151bは、コントローラ111aから記憶装置153bへのデータアクセスを中継する。エクスパンダ152bは、コントローラ112aから記憶装置154bへのデータアクセスを中継する。
【0027】
エクスパンダ151bとエクスパンダ152bとの間には、通信経路159bが設けられている。通信経路159bには、例えば、I2C(商標)やEthernet(登録商標)等が用いられている。さらに、エクスパンダ151bには、エクスパンダ間ポート156bが設けられ、エクスパンダ152bには、エクスパンダ間ポート157bが設けられている。
【0028】
そして、エクスパンダ151bとエクスパンダ152bとの間には、エクスパンダ間ポート156bとエクスパンダ間ポート157bとに接続されたエクスパンダ間データ伝送経路158bが設けられている。エクスパンダ間データ伝送経路158bには、例えば、SAS等が用いられている。
【0029】
メモリ151b1には、エクスパンダ151bとコントローラ111aまたはコントローラ112aとの間が接続中であるか、または未接続であるかの接続状態と、エクスパンダ151bと記憶装置153bとの間の接続状態とが記憶されるルーティングテーブルが格納される。さらに、このルーティングテーブルには、エクスパンダ151bとエクスパンダ152bとの間の接続状態と、エクスパンダ152bと記憶装置154bとの間の接続状態とが記憶される。さらに、このルーティングテーブルには、エクスパンダ151bに接続された配下のエクスパンダが有するルーティングテーブルを包含するように設定される。エクスパンダ151bは、詳しくは後述するように、SDモードで動作するため、配下のエクスパンダ151cのメモリ151c1に記憶されているルーティングテーブルを参照して、自装置の配下の接続状態を、自装置のルーティングテーブルに設定する。
【0030】
メモリ152b1には、エクスパンダ152bとコントローラ111aまたはコントローラ112aとの間の接続状態と、エクスパンダ151bと記憶装置154bとの間の接続状態が記憶されるルーティングテーブルが格納される。さらに、このルーティングテーブルには、エクスパンダ151bとエクスパンダ152bとの間の接続状態と、エクスパンダ151bと記憶装置153bとの間の接続状態とが記憶される。さらに、このルーティングテーブルには、エクスパンダ152bに接続された配下のエクスパンダが有するルーティングテーブルを包含するように設定される。
【0031】
エクスパンダ151bは、記憶装置153b,154b、および、データ伝送経路121に接続された配下のエクスパンダとの間の接続状態を監視し、例えば、配下に新たに装置が接続されたり、接続されている装置の接続が解除されたりした場合等、この接続状態に変化が生じると、これを検出する。そして、エクスパンダ151bは、この接続状態の変化を、データ伝送経路121を介してコントローラ111aまたはコントローラ112aに通知する。
【0032】
さらに、エクスパンダ151bは、コントローラ111aまたはコントローラ112aからの指示に従って、メモリ151b1に格納されたルーティングテーブルを更新する。さらに、エクスパンダ151bは、更新したルーティングテーブルをコントローラ111aまたはコントローラ112aに通知する。
【0033】
エクスパンダ152bは、記憶装置153b,154b、および、データ伝送経路122に接続された配下のエクスパンダとの間の接続状態を監視し、この接続状態に変化が生じると、接続状態の変化を検出する。そして、エクスパンダ152bは、検出した接続状態の変化を、データ伝送経路122を介してコントローラ111aまたはコントローラ112aに通知する。
【0034】
さらに、エクスパンダ152bは、コントローラ111aまたはコントローラ112aからの指示に従って、メモリ152b1に格納されたルーティングテーブルを更新する。さらに、エクスパンダ152bは、更新したルーティングテーブルをコントローラ111aまたはコントローラ112aに通知する。
【0035】
次に、ドライブエンクロージャ150cについて説明する。ドライブエンクロージャ150cは、メモリ151c1を有するエクスパンダ151cと、メモリ152c1を有するエクスパンダ152cと、データを記憶する記憶装置153c,154cとを有する。
【0036】
エクスパンダ151c,152cはそれぞれ、SAS等のデータ伝送経路により、記憶装置153c,154cと接続されている。エクスパンダ151cは、データ伝送経路121に直列接続され、エクスパンダ152cは、データ伝送経路122に直列接続されている。エクスパンダ151c,152cはそれぞれ、コントローラ111aまたはコントローラ112aから記憶装置153c,154cへのデータアクセスを中継する。
【0037】
エクスパンダ151cとエクスパンダ152cとの間には、通信経路159cが設けられている。通信経路159cには、例えば、I2C(商標)やEthernet(登録商標)等が用いられている。さらに、エクスパンダ151cには、エクスパンダ間ポート156cが設けられ、エクスパンダ152cには、エクスパンダ間ポート157cが設けられている。
【0038】
そして、エクスパンダ151cとエクスパンダ152cとの間には、エクスパンダ間ポート156cとエクスパンダ間ポート157cとに接続されたエクスパンダ間データ伝送経路158cが設けられている。エクスパンダ間データ伝送経路158cには、例えば、SAS等が用いられている。
【0039】
メモリ151c1には、エクスパンダ151cとコントローラ111aまたはコントローラ112aとの間の接続状態と、エクスパンダ151cと記憶装置153cとの間の接続状態とが記憶されるルーティングテーブルが格納される。さらに、このルーティングテーブルには、エクスパンダ152cとエクスパンダ151cとの間の接続状態と、エクスパンダ152cと記憶装置154cとの間の接続状態とが記憶される。さらに、このルーティングテーブルには、エクスパンダ151cに接続された配下のエクスパンダが有するルーティングテーブルを包含するように設定される。エクスパンダ151bは、詳しくは後述するように、NSDモードで動作するため、コントローラ111aによって作成されたルーティングテーブルを、自装置のルーティングテーブルに設定する。
【0040】
メモリ152c1には、エクスパンダ152cとコントローラ111aまたはコントローラ112aとの間の接続状態と、エクスパンダ152cと記憶装置154cとの間の接続状態が記憶されるルーティングテーブルが格納される。さらに、このルーティングテーブルには、エクスパンダ151cとエクスパンダ152cとの間の接続状態と、エクスパンダ151cと記憶装置153cとの間の接続状態とが記憶される。さらに、このルーティングテーブルには、エクスパンダ152cに接続された配下のエクスパンダが有するルーティングテーブルを包含するように設定される。
【0041】
なお、エクスパンダ151cの機能については、ドライブエンクロージャ150bのエクスパンダ151bと同様である。エクスパンダ152cの機能については、ドライブエンクロージャ150bのエクスパンダ152bと同様である。
【0042】
次に、ドライブエンクロージャ150dについて説明する。ドライブエンクロージャ150dは、メモリ151d1を有するエクスパンダ151dと、メモリ152d1を有するエクスパンダ152dと、データを記憶する記憶装置153d,154dとを有する。
【0043】
エクスパンダ151d,152dはそれぞれ、SAS等のデータ伝送経路により、記憶装置153d,154dと接続されている。エクスパンダ151dは、データ伝送経路121に直列接続され、エクスパンダ152dは、データ伝送経路122に直列接続されている。エクスパンダ151d,152dはそれぞれ、コントローラ111aまたはコントローラ112aから記憶装置153d,154dへのデータアクセスを中継する。
【0044】
エクスパンダ151dとエクスパンダ152dとの間には、通信経路159dが設けられている。通信経路159dには、例えば、I2C(商標)やEthernet(登録商標)等が用いられている。さらに、エクスパンダ151dには、エクスパンダ間ポート156dが設けられ、エクスパンダ152dには、エクスパンダ間ポート157dが設けられている。
【0045】
そして、エクスパンダ151dとエクスパンダ152dとの間には、エクスパンダ間ポート156dとエクスパンダ間ポート157dとに接続されたエクスパンダ間データ伝送経路158dが設けられている。エクスパンダ間データ伝送経路158dには、例えば、SAS等が用いられている。
【0046】
メモリ151d1には、エクスパンダ151dとコントローラ111aまたはコントローラ112aとの間の接続状態と、エクスパンダ151dと記憶装置153dとの間の接続状態とが記憶されるルーティングテーブルが格納される。さらに、このルーティングテーブルには、エクスパンダ152dとエクスパンダ151dとの間の接続状態と、エクスパンダ152dと記憶装置154dとの間の接続状態とが記憶される。さらに、このルーティングテーブルには、エクスパンダ151dに接続された配下のエクスパンダが有するルーティングテーブルを包含するように設定される。
【0047】
メモリ152d1には、エクスパンダ152dとコントローラ111aまたはコントローラ112aとの間の接続状態と、エクスパンダ152dと記憶装置154dとの間の接続状態が記憶されるルーティングテーブルが格納される。さらに、このルーティングテーブルには、エクスパンダ151dとエクスパンダ152dとの間の接続状態と、エクスパンダ151dと記憶装置153dとの間の接続状態とが記憶される。さらに、このルーティングテーブルには、エクスパンダ152dに接続された配下のエクスパンダが有するルーティングテーブルを包含するように設定される。
【0048】
なお、エクスパンダ151dの機能については、ドライブエンクロージャ150cのエクスパンダ151cと同様である。エクスパンダ152dの機能については、ドライブエンクロージャ150cのエクスパンダ152cと同様である。
【0049】
次に、コントローラエンクロージャ110について説明する。コントローラエンクロージャ110は、コントロールモジュール(CM:Control Module)111,112と、データを記憶する記憶装置153a,154aとを有する。また、記憶装置153a,154aには、例えば、磁気ディスクやソリッドステートドライブが用いられている。
【0050】
コントロールモジュール111は、コントローラ111aと、メモリ151a1を有するエクスパンダ151aとを有する。コントロールモジュール112は、コントローラ112aと、メモリ152a1を有するエクスパンダ152aとを有する。
【0051】
コントローラ111aおよびエクスパンダ151aはデータ伝送経路121に接続され、コントローラ112aおよびエクスパンダ152aはデータ伝送経路122に接続されている。さらに、コントローラ111aは、SAS等のデータ伝送経路により、エクスパンダ152aに接続されている。コントローラ112aは、SAS等のデータ伝送経路により、エクスパンダ151aに接続されている。
【0052】
エクスパンダ151aおよびエクスパンダ152aはそれぞれ、SAS等のデータ伝送経路により、記憶装置153a,154aと接続されている。エクスパンダ151aは、記憶装置153aとコントローラ111aまたはコントローラ112aとの間のデータ伝送を中継する。エクスパンダ152aは、記憶装置154aとコントローラ111aまたはコントローラ112aとの間のデータ伝送を中継する。
【0053】
メモリ151a1には、エクスパンダ151aとコントローラ111aまたはコントローラ112aとの間の接続状態と、エクスパンダ151aと記憶装置153aとの間の接続状態とが記憶されるルーティングテーブルが格納される。さらに、このルーティングテーブルには、データ伝送経路121に接続された配下のエクスパンダ151bが有するルーティングテーブルを包含するように設定される。
【0054】
メモリ152a1には、エクスパンダ152aとコントローラ111aまたはコントローラ112aとの間の接続状態と、エクスパンダ152aと記憶装置154aとの間の接続状態とが記憶されるルーティングテーブルが格納される。さらに、このルーティングテーブルには、データ伝送経路122に接続された配下のエクスパンダ152bが有するルーティングテーブルを包含するように設定される。
【0055】
エクスパンダ151aは、コントローラ111aまたはコントローラ112aからの指示に従って、メモリ151a1に格納されたルーティングテーブルを更新する。さらに、エクスパンダ151aは、更新したルーティングテーブルをコントローラ111aまたはコントローラ112aに通知する。
【0056】
さらに、エクスパンダ151aは、記憶装置153a、および、データ伝送経路121に接続された配下のエクスパンダ151bとの間の接続状態を監視し、この接続状態に変化が生じると、これを検出する。そして、エクスパンダ151aは、この接続状態の変化をコントローラ111aまたはコントローラ112aに通知する。
【0057】
また、エクスパンダ152aは、コントローラ111aまたはコントローラ112aからの指示に従って、メモリ152a1に格納されたルーティングテーブルを更新する。さらに、エクスパンダ152aは、更新したルーティングテーブルをコントローラ111aまたはコントローラ112aに通知する。
【0058】
さらに、エクスパンダ152aは、記憶装置154a、および、データ伝送経路122に接続された配下のエクスパンダ152bとの間の接続状態を監視し、この接続状態に変化が生じると、これを検出する。そして、エクスパンダ152aは、この接続状態の変化をコントローラ111aまたはコントローラ112aに通知する。
【0059】
コントローラ111aは、制御回路111a1と、メモリ111a2と、通信ポート111a3とを有する。コントローラ111aによる処理は、制御回路111a1によって実行される。通信ポート111a3には、データ伝送経路121が接続されている。
【0060】
コントローラ112aは、制御回路112a1と、メモリ112a2と、通信ポート112a3とを有する。コントローラ112aによる処理は、制御回路112a1によって実行される。通信ポート112a3には、データ伝送経路122が接続されている。
【0061】
コントローラ111a,112aはそれぞれ、エクスパンダ151a〜151d,152a〜152dのうちの一部を経由するデータ伝送経路により、次の処理を行う。すなわち、コントローラ111a,112aはそれぞれ、各記憶装置153a〜153d,154a〜154dへのデータの書き込み、または、各記憶装置153a〜153d,154a〜154dからのデータの読み出しを行う。この処理は、例えば、ホスト装置(図示せず)からの指示に応じて行われる。
【0062】
さらに、コントローラ111a,112aはそれぞれ、エクスパンダ151a〜151d,152a〜152dのうちのいずれかから接続状態変化の通知を受信すると、次の処理を行う。すなわち、コントローラ111a,112aはそれぞれ、エクスパンダ151a〜151d,152a〜152dのすべてに対して、ルーティングテーブルの更新を指示する。
【0063】
さらに、コントローラ111a,112aはそれぞれ、エクスパンダ151a〜151d,152a〜152dが有するルーティングテーブルをすべて取得する。取得したルーティングテーブルは、メモリ111a2,112a2に格納される。さらに、コントローラ111a,112aは、メモリ111a2,112a2に格納された取得したルーティングテーブルを参照し、データ伝送経路121およびデータ伝送経路122を介した各記憶装置153a〜153d,154a〜154dへの接続状況を監視する。
【0064】
図3は、第2の実施の形態のストレージシステムにおけるコントローラ、エクスパンダ、記憶装置の接続を示す図である。第2の実施の形態のストレージシステム100では、以下、コントローラ111a、エクスパンダ151a〜151e、記憶装置153a〜153eが図3に示すように接続されているものとする。
【0065】
すなわち、コントローラ111aは、エクスパンダ151aと直接接続されている。エクスパンダ151aは、コントローラ111a、エクスパンダ151b、記憶装置153aと直接接続されている。エクスパンダ151bは、エクスパンダ151a,151c、記憶装置153bと直接接続されている。エクスパンダ151cは、エクスパンダ151b,151d、記憶装置153cと直接接続されている。エクスパンダ151dは、エクスパンダ151c,151e、記憶装置153dと直接接続されている。エクスパンダ151eは、エクスパンダ151d、記憶装置153eと直接接続されている。また、コントローラ111aは、制御回路111a1、メモリ111a2を有する。制御回路111a1は、制御部として機能する。メモリ111a2は、記憶部として機能する。
【0066】
また、エクスパンダ151a,151c,151dは、自装置でルーティングテーブルの作成や更新を行わず、コントローラ111aが作成または更新したルーティングテーブルを受信して自装置のルーティングテーブルを設定するNSDモードで動作するものとする。また、エクスパンダ151b,151eは、自装置でルーティングテーブルの作成や更新を行うとともにルーティングテーブルを設定するSDモードで動作するものとする。
【0067】
制御回路111a1は、自装置の配下に新たに装置(例えば、記憶装置153e)が接続された場合に、エクスパンダ151a〜151eのそれぞれの接続状態に応じたルーティングテーブルを作成する。そして、制御回路111a1は、配下のエクスパンダ151a〜151eのうち、SDモードで動作するエクスパンダ151bが作成した、エクスパンダ151bに接続されている装置を示すルーティングテーブルを取得する。制御回路111a1は、取得したルーティングテーブルとメモリ111a2に記憶されている、エクスパンダ151aに対応する、エクスパンダ151aの接続状態に応じた配下エクスパンダ用ルーティングテーブルとの比較を行い、比較結果に基づいてエクスパンダ151bに対してルーティングテーブルのリセット指示を送信する。具体的な比較方法については、詳しくは図6および図7において後述する。
【0068】
制御回路111a1は、SDモードで動作するエクスパンダ151b,151eに対しては、それぞれのルーティングテーブルを取得するとともにコントローラ111aが有するルーティングテーブルとの比較を行い、比較結果に基づいてエクスパンダ151b,151eに対してそれぞれのルーティングテーブルのリセット指示を送信する。制御回路111a1は、NSDモードで動作するエクスパンダ151a,151c,151dに対してはルーティングテーブルの比較を行わず、それぞれの接続状態に応じたルーティングテーブルを作成してエクスパンダ151a,151c,151dに送信することで、接続状態に応じたルーティングテーブルを設定させる。
【0069】
図4は、第2の実施の形態のコントローラのルーティングテーブルを示す図である。図4に示すルーティングテーブル111a21は、コントローラ111aと接続されている装置を示す接続情報を格納するルーティングテーブルであり、コントローラ111aのメモリ111a2に記憶されている。ルーティングテーブル111a21は、コントローラ111aにより、ストレージシステム100の電源投入時に設定される。また、ルーティングテーブル111a21は、コントローラ111aによる各装置の接続状態の変化の検出に基づいて更新される。
【0070】
ルーティングテーブル111a21には、エクスパンダを介してコントローラ111aと間接的に接続されている装置が設定される。すなわち、ルーティングテーブル111a21には、エクスパンダ151aのように、コントローラ111aと直接接続されている装置は設定されない。
【0071】
具体的には、ルーティングテーブル111a21には、記憶装置153aを示す“DISK#A1”、SDモードのエクスパンダ151bを示す“EXP#B(SD)”、記憶装置153bを示す“DISK#B1”、NSDモードのエクスパンダ151cを示す“EXP#C(NSD)”、記憶装置153cを示す“DISK#C1”、NSDモードのエクスパンダ151dを示す“EXP#D(NSD)”、記憶装置153dを示す“DISK#D1”、SDモードのエクスパンダ151eを示す“EXP#E(SD)”、記憶装置153eを示す“DISK#E1”が、コントローラ111aにより、ストレージシステム100の電源投入時にコントローラ111aからの接続されている装置を示す情報の要求に対する配下のエクスパンダからの応答に基づいて設定される。また、ルーティングテーブル111a21には、コントローラ111aにより、各装置のストレージシステム100への接続状態の変化時に、接続状態の変化を検出した配下のエクスパンダからの通知に基づいて更新される。
【0072】
図5は、第2の実施の形態のエクスパンダのルーティングテーブルを示す図である。図5(A)に示すルーティングテーブル151a11は、エクスパンダ151aと接続されている装置を示す接続情報を格納するルーティングテーブルであり、メモリ151a1に記憶されている。図5(B)に示すルーティングテーブル151b11は、エクスパンダ151bと接続されている装置を示す接続情報を格納するルーティングテーブルであり、メモリ151b1に記憶されている。図5(C)に示すルーティングテーブル151c11は、エクスパンダ151cと接続されている装置を示す接続情報を格納するルーティングテーブルであり、メモリ151c1に記憶されている。図5(D)に示すルーティングテーブル151d11は、エクスパンダ151dと接続されている装置を示す接続情報を格納するルーティングテーブルであり、メモリ151d1に記憶されている。
【0073】
図5(A)から図5(D)に示すルーティングテーブル151a11〜151d11には、当該ルーティングテーブルを記憶している自装置の配下のエクスパンダを介して自装置と間接的に接続されている装置が設定される。すなわち、ルーティングテーブル151a11〜151d11には、自装置と直接接続されている装置は設定されない。また、エクスパンダ151eには配下のエクスパンダが存在せず、間接的に接続されている装置が存在しないので、ルーティングテーブルに装置が設定されない。このため、エクスパンダ151eのルーティングテーブルについては説明を省略する。
【0074】
具体的には、図5(A)に示すルーティングテーブル151a11には、配下のエクスパンダ151b〜151eを介してエクスパンダ151aと間接的に接続されている記憶装置153b、エクスパンダ151c、記憶装置153c、エクスパンダ151d、記憶装置153d、エクスパンダ151e、記憶装置153eが設定されている。ルーティングテーブル151a11は、後述するように、エクスパンダ151aがNSDモードで動作するため、コントローラ111aにより、ストレージシステム100の電源投入時等にコントローラ111aからのエクスパンダ151aに対応する配下用ルーティングテーブルの送信に基づいて設定される。また、ルーティングテーブル151a11は、コントローラ111aにより、各装置のストレージシステム100への接続状態の変化時に、接続状態の変化を検出した配下のエクスパンダからの通知に基づいて更新される。
【0075】
図5(B)に示すルーティングテーブル151b11には、配下のエクスパンダ151c〜151eを介してエクスパンダ151bと間接的に接続されている記憶装置153c、エクスパンダ151d、記憶装置153d、エクスパンダ151e、記憶装置153eが設定されている。ルーティングテーブル151b11は、後述するように、エクスパンダ151bがSDモードで動作するため、エクスパンダ151bにより、ストレージシステム100の電源投入時等に設定される。また、ルーティングテーブル151b11は、エクスパンダ151bにより、後述する配下のエクスパンダからのBROADCAST(Change)(以下、BC(CHG))やコントローラ111aからのDISCOVERの受信時に更新される。
【0076】
図5(C)に示すルーティングテーブル151c11には、配下のエクスパンダ151d,151eを介してエクスパンダ151cと間接的に接続されている記憶装置153d、エクスパンダ151e、記憶装置153eが設定されている。ルーティングテーブル151c11は、後述するように、エクスパンダ151cがNSDモードで動作するため、コントローラ111aにより、ストレージシステム100の電源投入時等にコントローラ111aからのエクスパンダ151cに対応する配下用ルーティングテーブルの送信に基づいて設定される。また、ルーティングテーブル151c11は、コントローラ111aにより、各装置のストレージシステム100への接続状態の変化時に、接続状態の変化を検出した配下のエクスパンダからの通知に基づいて更新される。
【0077】
図5(D)に示すルーティングテーブル151d11には、配下のエクスパンダ151eを介してエクスパンダ151dと間接的に接続されている記憶装置153eが設定されている。ルーティングテーブル151d11は、後述するように、エクスパンダ151dがNSDモードで動作するため、コントローラ111aにより、ストレージシステム100の電源投入時等にコントローラ111aからのエクスパンダ151dに対応する配下用ルーティングテーブルの送信に基づいて設定される。また、ルーティングテーブル151d11は、コントローラ111aにより、各装置のストレージシステム100への接続状態の変化時に、接続状態の変化を検出した配下のエクスパンダからの通知に基づいて更新される。
【0078】
図6および図7は、第2の実施の形態におけるルーティングテーブルの比較を示す図である。図6および図7に従って、エクスパンダ151eに対して新たに記憶装置153eが接続された場合のコントローラ111aのメモリ111a2に記憶されているルーティングテーブル111a21、配下エクスパンダ用ルーティングテーブル111a22a〜111a22dとエクスパンダ151a〜151dのルーティングテーブル151a11〜151d11との比較の時の動作を説明する。ここでは、図5と同様、エクスパンダ151eのルーティングテーブルについては説明を省略する。ここで、図6には、記憶装置153eがエクスパンダ151eに接続される前のルーティングテーブルおよび配下エクスパンダ用ルーティングテーブルを示す。また、図7には、記憶装置153eがエクスパンダ151eに接続された後であって、ルーティングテーブル151b11に異常が発生しており、かつ、異常が解消される前のルーティングテーブルおよび配下エクスパンダ用ルーティングテーブルを示す。
【0079】
図6に示すように、メモリ111a2には、記憶装置153eがエクスパンダ151eに接続されていない時点におけるコントローラ111aのルーティングテーブル111a21が記憶されている。また、メモリ111a2には、当該時点の接続状態に対して正しく設定されている場合のエクスパンダ151a〜151dのルーティングテーブルを示す配下エクスパンダ用ルーティングテーブル111a22a〜111a22dが記憶されている。配下エクスパンダ用ルーティングテーブル111a22a〜111a22dは、コントローラ111aが、ルーティングテーブル111a21に基づき、最新の接続状況に応じて作成および更新する。また、メモリ151a1〜151d1には、記憶装置153eがエクスパンダ151eに接続されていない時点におけるエクスパンダ151a〜151dの実際のルーティングテーブル151a11〜151d11が記憶されている。
【0080】
ここで、ストレージシステム100において、コントローラ111aの配下のエクスパンダ151eに対して新たに記憶装置153eが接続されたものとする。この場合、エクスパンダ151eが記憶装置153eとの接続を検出すると、ストレージシステム100のトポロジー(SAS topology)の再作成を指示するBC(CHG)をエクスパンダ151dに対して送信する。
【0081】
エクスパンダ151dは、エクスパンダ151eからのBC(CHG)を受信すると、BC(CHG)をエクスパンダ151cに対して送信する。エクスパンダ151dは、NSDモードで動作しているため、ルーティングテーブル151d11の更新は行わない。このため、この時点ではルーティングテーブル151d11に記憶装置153eは設定されない。
【0082】
エクスパンダ151cは、エクスパンダ151dからのBC(CHG)を受信すると、BC(CHG)をエクスパンダ151bに対して送信する。エクスパンダ151cは、NSDモードで動作しているため、ルーティングテーブル151c11の更新は行わない。このため、この時点ではルーティングテーブル151c11に記憶装置153eは設定されない。
【0083】
エクスパンダ151bは、エクスパンダ151cからのBC(CHG)を受信すると、SDモードで動作しているため、受信したBC(CHG)に基づき、エクスパンダ151cのルーティングテーブル151c11を取得してルーティングテーブル151b11の更新を行う。このとき、エクスパンダ151bの配下のエクスパンダ151c〜151eがすべてSDモードで動作していれば、エクスパンダ151eからエクスパンダ151cまで逆順に、それぞれのルーティングテーブル151c11〜151e11に記憶装置153eが設定されていくので、エクスパンダ151bがルーティングテーブル151c11を取得してルーティングテーブル151b11に記憶装置153eを設定することができる。しかし、この時点では、上記のようにルーティングテーブル151c11には、記憶装置153eが設定されていない。このため、エクスパンダ151bによる更新ではルーティングテーブル151c11に記憶装置153eは設定されない。次に、エクスパンダ151bは、BC(CHG)をエクスパンダ151aに対して送信する。
【0084】
エクスパンダ151aは、エクスパンダ151bからのBC(CHG)を受信すると、BC(CHG)をコントローラ111aに対して送信する。エクスパンダ151aは、NSDモードで動作しているため、ルーティングテーブル151a11の更新は行わない。このため、この時点ではルーティングテーブル151a11に記憶装置153eは設定されない。
【0085】
ここで、コントローラ111aは、エクスパンダ151aからのBC(CHG)を受信すると、配下のエクスパンダ151a〜151eに対してDISCOVERを送信する。配下のエクスパンダ151a〜151eはそれぞれ、コントローラ111aに対してDISCOVERに対する応答を送信する。このとき、エクスパンダ151a〜151eは、自装置の配下に接続されている各装置に関する情報および自装置がSDモードで動作しているか、NSDモードで動作しているかを示す情報を含めて応答する。エクスパンダ151a〜151eからの応答に含まれる、自装置の配下に接続されている各装置に関する情報には、例えば、自装置と接続されている装置の種類や固有の識別情報、自装置と接続されている装置との接続ポートを示す情報が含まれる。
【0086】
コントローラ111aは、自装置と接続されている装置との接続ポートを示す情報により、ストレージシステム100におけるエクスパンダ151a〜151eおよび記憶装置153a〜153eの接続の構成(各装置が新たに接続または接続が解除された旨、各装置がいずれの装置と直接または間接的に接続されているか)を判定することができる。また、コントローラ111aは、エクスパンダ151a〜151eがそれぞれSDモードで動作しているか、NSDモードで動作しているかをDISCOVERに対するエクスパンダ151a〜151eからの応答に基づいて認識することができる。コントローラ111aは、ストレージシステム100の各装置の接続状態の判定結果およびエクスパンダ151a〜151eが動作しているモードの認識結果を示す情報をメモリ111a2に記憶する。なお、これに限らず、コントローラ111aは、エクスパンダ151a〜151eが動作しているモードを、動作起動後最初のDISCOVERに対する応答、各エクスパンダの初回起動後最初のDISCOVERに対する応答やその他の制御信号に基づいて取得してもよい。
【0087】
次に、図7に示すように、コントローラ111aは、エクスパンダ151a〜151eからの応答に基づいてストレージシステム100における各装置の接続状態を判定し、メモリ111a2に記憶されている、新たに記憶装置153eがエクスパンダ151eに接続された後の時点におけるコントローラ111aのルーティングテーブル111a21を更新する。これにより、ルーティングテーブル111a21に記憶装置153eが設定される。コントローラ111aは、更新したルーティングテーブル111a21に基づいて、メモリ111a2に記憶されている、配下エクスパンダ用ルーティングテーブル111a22a〜111a22dを更新する。これにより、配下エクスパンダ用ルーティングテーブル111a22a〜111a22dに、記憶装置153eが設定される。ここで、エクスパンダ151bに対応する配下エクスパンダ用ルーティングテーブル111a22bにも、接続情報111a23に示すように、記憶装置153eが設定される。
【0088】
このときコントローラ111aは、更新したルーティングテーブル111a21から、エクスパンダ151aと直接接続されているエクスパンダ151bおよび記憶装置153aを除外することで、エクスパンダ151aに対応する配下エクスパンダ用ルーティングテーブル111a22aを作成する。また、コントローラ111aは、作成した配下エクスパンダ用ルーティングテーブル111a22aから、エクスパンダ151bと直接接続されているエクスパンダ151cおよび記憶装置153bを除外することで、エクスパンダ151bに対応する配下エクスパンダ用ルーティングテーブル111a22bを作成する。このとき、コントローラ111aは、DISCOVERに対するエクスパンダ151a〜151eからの応答に含まれている、エクスパンダ151a〜151eと接続されている装置との接続ポートを示す情報に基づいて、配下の装置の接続の構成を判断して、エクスパンダ151bと直接接続されているエクスパンダ151cおよび記憶装置153bを除外する。また、コントローラ111aは、作成した配下エクスパンダ用ルーティングテーブル111a22bから、エクスパンダ151cと直接接続されているエクスパンダ151dおよび記憶装置153cを除外することで、エクスパンダ151cに対応する配下エクスパンダ用ルーティングテーブル111a22cを作成する。また、コントローラ111aは、作成した配下エクスパンダ用ルーティングテーブル111a22cから、エクスパンダ151dと直接接続されているエクスパンダ151eおよび記憶装置153dを除外することで、エクスパンダ151dに対応する配下エクスパンダ用ルーティングテーブル111a22dを作成する。
【0089】
次に、コントローラ111aは、NSDモードで動作するエクスパンダ151a,151c,151dについては、ルーティングテーブルの更新を実行させる。このときコントローラ111aは、NSDモードで動作するエクスパンダ151a,151c,151dに対して、それぞれ対応する配下エクスパンダ用ルーティングテーブル111a22a,111a22c,111a22dを送信し、エクスパンダ151a,151c,151dのそれぞれのルーティングテーブル151a11,151c11,151d11を更新させる。一方、SDモードで動作するエクスパンダ151b,151eでは、コントローラ111aからルーティングテーブルが送信されず、ルーティングテーブルの更新が行われない。このため、ルーティングテーブル151b11に記憶装置153eが設定されず、このままではエクスパンダ151cは、記憶装置153eにアクセスすることができない。これに対して、第2の実施の形態のコントローラ111aは、SDモードで動作するエクスパンダ151b,151eについては、それぞれ対応する配下エクスパンダ用ルーティングテーブル(例えば、配下エクスパンダ用ルーティングテーブル111a22b)と比較し、一致しない場合には、当該エクスパンダに対してSMP(SAS Management Protocol) FUNCTIONにおけるルーティングテーブルの作成を実行させるリセット指示であるDISCOVERを送信する。
【0090】
次に、図7では、エクスパンダ151bでは、ルーティングテーブル151b11に、接続情報151b23に示すように、記憶装置153bが設定されていない。これに対して、配下エクスパンダ用ルーティングテーブル111a22bに、接続情報111a23に示すように、記憶装置153eが設定されている。このため、ルーティングテーブル151b11と、配下エクスパンダ用ルーティングテーブル111a22bとが一致せず、コントローラ111aによりエクスパンダ151bに対してルーティングテーブルの作成を実行させるDISCOVERが送信される。
【0091】
エクスパンダ151b,151eは、コントローラ111aから送信されたDISCOVERを受信した場合、自装置のルーティングテーブルの作成を実行する。
ここで、図7では、コントローラ111aによってエクスパンダ151cにおいてルーティングテーブル151c11の更新が完了しており、記憶装置153eが設定されているので、エクスパンダ151bがルーティングテーブル151c11を取得してルーティングテーブル151b11を更新することで、接続情報151b23に示すように、ルーティングテーブル151b11に記憶装置153eが設定される。
【0092】
図8は、第2の実施の形態のルーティングテーブル設定処理を示す図である。第2の実施の形態の制御回路111a1は、新たに装置(例えば、記憶装置153e)が接続されたエクスパンダ(例えば、エクスパンダ151e)からのBC(CHG)を受信し、エクスパンダ151eに記憶装置153eが接続されたことを検出したものとする。この場合、制御回路111a1は、エクスパンダ151a〜151dの各ルーティングテーブル(例えば、ルーティングテーブル151a11〜151d11)を設定(更新)するルーティングテーブル設定処理を実行する。なお、上記のようにエクスパンダ151eのルーティングテーブルについては説明を省略する。以下では、図8に示すルーティングテーブル設定処理をフローチャートのステップ番号に沿って説明する。
【0093】
[ステップS11]制御回路111a1は、すべての配下のエクスパンダ151a〜151eに対して、当該エクスパンダのルーティングテーブルの更新を実行させるDISCOVERを送信する。DISCOVERを受信したエクスパンダ151a〜151eは、コントローラ111aに対して、DISCOVERに対する応答を送信する。この応答には、エクスパンダ151a〜151eにおいて、自装置が動作しているモードがSDであるかNSDであるかを示す情報、自装置と接続している装置との間の接続ポートを示す情報が含まれている。制御回路111a1は、この応答に含まれている情報に基づいて、エクスパンダ151a〜151eのモードや各装置同士の接続状態(接続されている装置、装置同士が直接接続されているか、間接的に接続されているか等)を判定する。
【0094】
[ステップS12]制御回路111a1は、コントローラ111aのルーティングテーブル111a21および配下エクスパンダ用ルーティングテーブル111a22a〜111a22dを作成し、メモリ111a2に記憶させる。また、制御回路111a1は、作成したルーティングテーブル111a21を自装置のルーティングテーブルに設定する。
【0095】
[ステップS13]制御回路111a1は、ステップS13〜ステップS15のループにおいて、配下のエクスパンダ151a〜151eのうち、未選択のエクスパンダの有無を検索する。
【0096】
[ステップS14]制御回路111a1は、ステップS13に基づいて、配下のエクスパンダ151a〜151eのうち、未選択のエクスパンダが存在するか否かを判定する。未選択のエクスパンダが存在すれば(ステップS14 YES)、処理はステップS15に進められる。一方、未選択のエクスパンダが存在しなければ(ステップS14 NO)、処理は終了する。
【0097】
[ステップS15]制御回路111a1は、未選択のエクスパンダについて図9において後述する、NSDエクスパンダに配下エクスパンダ用ルーティングテーブルを送信してSDエクスパンダにDISCOVERを実行させる比較処理を実行する。
【0098】
図9は、第2の実施の形態のルーティングテーブル比較処理を示す図である。第2の実施の形態では、制御回路111a1は、NSDエクスパンダに配下エクスパンダ用ルーティングテーブルを送信し、配下エクスパンダ用ルーティングテーブルとの比較結果に基づいてSDエクスパンダにDISCOVERを実行させることで、エクスパンダのルーティングテーブルを設定するルーティングテーブル比較処理を実行する。なお、上記のようにエクスパンダ151eのルーティングテーブルについては説明を省略する。以下では、図9に示すルーティングテーブル比較処理をフローチャートのステップ番号に沿って説明する。
【0099】
[ステップS21]制御回路111a1は、配下のエクスパンダ151a〜151eのうちの未選択のエクスパンダから1つを選択する。
[ステップS22]制御回路111a1は、ステップS21で選択したエクスパンダがNSDモードで動作するNSDエクスパンダであるか否かを判定する。NSDエクスパンダであれば(ステップS22 YES)、処理はステップS27に進められる。一方、SDモードで動作するSDエクスパンダであれば(ステップS22 NO)、処理はステップS23に進められる。
【0100】
[ステップS23]制御回路111a1は、SDエクスパンダであるステップS21で選択したエクスパンダに設定されているルーティングテーブルを取得する。例えば、エクスパンダ151bが選択されている場合、制御回路111a1は、ルーティングテーブル151b11を取得する。
【0101】
[ステップS24]制御回路111a1は、SDエクスパンダであるステップS21で選択したエクスパンダ151bのルーティングテーブル151b11と、エクスパンダ151bに設定されるべき接続情報を示す配下エクスパンダ用ルーティングテーブル111a22cとを比較する。
【0102】
[ステップS25]制御回路111a1は、ステップS24における比較結果は一致しているか否かを判定する。一致していれば(ステップS25 YES)、処理はルーティングテーブル設定処理に復帰する。一方、一致していなければ(ステップS25 NO)、処理はステップS26に進められる。
【0103】
[ステップS26]制御回路111a1は、SDエクスパンダであるステップS21で選択したエクスパンダ151bに対して、ルーティングテーブル151b11をリセットさせてDISCOVERを実行させるリセット指示を送信する。これにより、エクスパンダ151bは、DISCOVERの実行により再びルーティングテーブル151b11の作成を行う。従って、エクスパンダ151bにより、エクスパンダ151bの配下のエクスパンダ151c〜151eのルーティングテーブルから接続情報が取得され、ルーティングテーブル151b11に新たに接続された記憶装置153eが設定される。これに基づき、エクスパンダ151bが記憶装置153eにアクセスすることが可能になる。その後、処理はルーティングテーブル設定処理に復帰する。
【0104】
[ステップS27]制御回路111a1は、ルーティングテーブル設定処理のステップS12で作成したメモリ111a2に記憶されている配下エクスパンダ用ルーティングテーブル111a22a〜111a22dのうち、NSDエクスパンダであるステップS21で選択したエクスパンダに対応する配下エクスパンダ用ルーティングテーブルを設定する。例えば、エクスパンダ151aが選択されている場合、制御回路111a1は、エクスパンダ151aに配下エクスパンダ用ルーティングテーブル111a22aを設定する。その後、処理はルーティングテーブル設定処理に復帰する。
【0105】
ここで、第2の実施の形態のルーティングテーブル比較処理では、制御回路111a1は、ステップS21において、SDエクスパンダとNSDエクスパンダとを区別せずに選択するが、これに限らず、NSDエクスパンダをすべて選択してからSDエクスパンダを選択してもよい。これにより、新たな装置の接続がNSDエクスパンダのルーティングテーブルに完全に反映された後にSDエクスパンダのルーティングテーブルの更新を実行させることができる。
【0106】
以上のような第2の実施の形態のストレージシステム100は、最新のストレージシステム100に接続されている装置の状態を示すルーティングテーブルと、配下のエクスパンダとを比較する。これにより、新たな装置が接続された場合に、SDモードで動作するエクスパンダ151bのルーティングテーブル151b11の異常が発生しても、異常を検出して解消することができる。
【0107】
また、NSDエクスパンダについては、NSDエクスパンダのルーティングテーブルと、対応する配下エクスパンダ用ルーティングテーブルとの比較を行わないので、新たな装置の接続時における処理の負担の増加を抑制できる。
【0108】
また、SDエクスパンダについては、コントローラ111aが作成した配下エクスパンダ用ルーティングテーブルと比較して異常を検出し、NSDエクスパンダについては、配下エクスパンダ用ルーティングテーブルを設定するので、エクスパンダのモードに応じた処理を実行することで、新たな装置の接続時における処理の負担の増加を抑制できる。
【0109】
また、コントローラ111aは、配下に新たな装置が接続されたことを検出した場合に、SDエクスパンダのルーティングテーブルの比較を行うので、新たな装置の接続時にSDエクスパンダのルーティングテーブルの異常が発生しても、ルーティングテーブルの異常の継続を抑制できる。
【0110】
また、新たに装置が接続された場合に、配下のSDエクスパンダに設定されるべきルーティングテーブルを示す配下エクスパンダ用ルーティングテーブル111a22a〜111a22dを作成し、配下のエクスパンダと、対応する配下エクスパンダ用ルーティングテーブルとを比較することで、SDモードで動作するエクスパンダ151bのルーティングテーブル151b11の異常を解消し、エクスパンダ151bと新たに接続された記憶装置153eとのアクセスを可能にすることができる。
【0111】
[第2の実施の形態の変形例]
次に、第2の実施の形態の変形例を説明する。第2の実施の形態との差異を中心に説明し、同様の事項については説明を省略する。第2の実施の形態のストレージシステムは、ルーティングテーブル比較処理において、NSDエクスパンダについてもコントローラが有する配下エクスパンダ用ルーティングテーブルと比較し、NSDエクスパンダについても正常に設定されているか確認する点で、第2の実施の形態と異なる。
【0112】
図10および図11は、第2の実施の形態の変形例のルーティングテーブル比較処理を示す図である。第2の実施の形態の変形例では、制御回路111a1は、NSDエクスパンダに配下エクスパンダ用ルーティングテーブルを送信し、SDエクスパンダにDISCOVERを実行させることで、エクスパンダのルーティングテーブルを設定し、配下エクスパンダ用ルーティングテーブルとの比較結果に基づき、設定後に正しく設定されているか確認するルーティングテーブル比較処理を実行する。なお、上記のようにエクスパンダ151eのルーティングテーブルについては説明を省略する。以下では、図10および図11に示すルーティングテーブル比較処理をフローチャートのステップ番号に沿って説明する。
【0113】
[ステップS31]制御回路111a1は、配下のエクスパンダ151a〜151eのうちの未選択のエクスパンダから1つを選択する。
[ステップS32]制御回路111a1は、ステップS31で選択したエクスパンダがNSDエクスパンダであるか否かを判定する。NSDエクスパンダであれば(ステップS32 YES)、処理はステップS33に進められる。一方、SDエクスパンダであれば(ステップS32 NO)、処理はステップS34に進められる。
【0114】
[ステップS33]制御回路111a1は、ルーティングテーブル設定処理のステップS12で作成したメモリ111a2に記憶されている配下エクスパンダ用ルーティングテーブル111a22a〜111a22dのうち、NSDエクスパンダであるステップS31で選択したエクスパンダに対応する配下エクスパンダ用ルーティングテーブルを設定する。その後、処理はステップS34に進められる。
【0115】
[ステップS34]制御回路111a1は、SDエクスパンダであるステップS31で選択したエクスパンダに設定されているルーティングテーブルを取得する。
[ステップS35]制御回路111a1は、SDエクスパンダであるステップS31で選択したエクスパンダ151bのルーティングテーブル151b11と、エクスパンダ151bに設定されるべき接続情報を示す配下エクスパンダ用ルーティングテーブル111a22cとを比較する。
【0116】
[ステップS41]制御回路111a1は、ステップS35における比較結果は一致しているか否かを判定する。一致していれば(ステップS41 YES)、処理はルーティングテーブル設定処理に復帰する。一方、一致していなければ(ステップS41 NO)、処理はステップS42に進められる。
【0117】
[ステップS42]制御回路111a1は、ステップS31で選択したエクスパンダがNSDエクスパンダであるか否かを判定する。NSDエクスパンダであれば(ステップS42 YES)、処理はステップS44に進められる。一方、SDエクスパンダであれば(ステップS42 NO)、処理はステップS43に進められる。
【0118】
[ステップS43]制御回路111a1は、SDエクスパンダであるステップS31で選択したエクスパンダ151bに対して、ルーティングテーブル151b11をリセットさせてDISCOVERを実行させるリセット指示を送信する。これにより、エクスパンダ151bは、DISCOVERの実行により再びルーティングテーブル151b11の作成を行う。従って、エクスパンダ151bにより、エクスパンダ151bの配下のエクスパンダ151c〜151eのルーティングテーブルから接続情報が取得され、ルーティングテーブル151b11に新たに接続された記憶装置153eが設定される。これに基づき、エクスパンダ151bが記憶装置153eにアクセスすることが可能になる。その後、処理はルーティングテーブル設定処理に復帰する。
【0119】
[ステップS44]制御回路111a1は、ルーティングテーブル設定処理のステップS12で作成したメモリ111a2に記憶されている配下エクスパンダ用ルーティングテーブル111a22a〜111a22dのうち、NSDエクスパンダであるステップS31で選択したエクスパンダに対応する配下エクスパンダ用ルーティングテーブルを設定する。その後、処理はルーティングテーブル設定処理に復帰する。
【0120】
ここで、第2の実施の形態の変形例のルーティングテーブル比較処理では、制御回路111a1は、ステップS31において、SDエクスパンダとNSDエクスパンダとを区別せずに選択するが、これに限らず、NSDエクスパンダをすべて選択してからSDエクスパンダを選択してもよい。これにより、新たな装置の接続がNSDエクスパンダのルーティングテーブルに完全に反映された後にSDエクスパンダのルーティングテーブルの更新を実行させることができる。
【0121】
以上のような第2の実施の形態の変形例のストレージシステム100は、第2の実施の形態と同様の効果を有する。
また、NSDエクスパンダのルーティングテーブルを更新した後に、新たにNSDエクスパンダに設定されたルーティングテーブルと、最新のストレージシステム100に接続されている装置の状態を示すルーティングテーブルとを比較する。これにより、NSDモードで動作するエクスパンダ151bのルーティングテーブル151b11についても正常に設定されているか確認し、異常が検出された場合に再設定を行うことで、NSDエクスパンダのルーティングテーブルの異常を解消することができる。
【0122】
以上、開示の制御装置、ストレージシステムおよび制御方法を、図示の実施の形態に基づいて説明したが、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、開示の技術に他の任意の構成物や工程が付加されてもよい。また、開示の技術は前述した実施の形態のうちの任意の2以上の構成を組み合わせたものであってもよい。
【符号の説明】
【0123】
1 制御装置
1a 制御部
1b,2b,3b,4b 記憶部
1b1,2b1,3b1,4b1 接続情報
2,3,4 中継装置
5,6,7 記憶装置
【技術分野】
【0001】
本発明は、制御装置、ストレージシステムおよび制御方法に関する。
【背景技術】
【0002】
磁気ディスク、光ディスク、半導体メモリ等の記憶媒体を利用してデータを記憶する記憶装置および記憶装置へのデータの書き込み、または、記憶装置からのデータの読み出しを制御する制御装置(コントローラモジュール(CM):Controller Module)を有するストレージシステムが広く用いられている。また、ストレージシステムには、記憶装置および制御装置に、記憶装置と制御装置との間に直列接続されるとともに、記憶装置と制御装置との間のアクセスを中継する、SAS(Serial Attached SCSI)エクスパンダ等の中継装置を有するものがある。
【0003】
また、ストレージシステムの中継装置は、ルーティングテーブル等に記憶している接続情報を用いて中継装置や記憶装置と接続する場合がある。
中継装置を有するストレージシステムの接続制御に関して、以下の技術が知られている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−242872号公報
【特許文献2】特開2009−181317号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記の中継装置は、自装置でDISCOVERプロセスを実行して他の装置をルーティングテーブルに設定するSD(Self−DISCOVER)モードで動作する場合と、自装置ではDISCOVERプロセスを実行せず、制御装置等の他の装置が作成したルーティングテーブルを自装置に設定するNSD(Non−Self−DISCOVER)モードで動作する場合とがある。
【0006】
ここで、SDモードで動作する中継装置とNSDモードで動作する中継装置とを混在させて制御装置と接続した場合には、SDモードで動作する中継装置のルーティングテーブルが正しく作成されない場合がある。
【0007】
例えば、新たに記憶装置がストレージシステムに接続された場合においてSDモードで動作する中継装置がルーティングテーブルを作成するものとする。このとき、上記中継装置がルーティングテーブルを作成したタイミングが早い場合等によって、接続された記憶装置との間に介在する中継装置のルーティングテーブルに設定されていないときには、接続された記憶装置が上記中継装置のルーティングテーブルに設定されないことになる。
【0008】
このように、SDモードで動作する中継装置において一部の中継装置や記憶装置が認識されない場合等が生じ得る。このように、SDモードで動作する中継装置において、接続情報が正しく作成されない場合が生じ得る。
【0009】
このような点に鑑み、中継装置の接続情報の異常を解消可能な制御装置、ストレージシステムおよび制御方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するために以下のような中継装置のデータアクセスの中継により記憶装置にデータアクセスを行う制御装置が提供される。この制御装置は、自装置の配下に接続されている装置を示す第1の接続情報を記憶する記憶部と、中継装置が作成した当該中継装置に接続されている装置を示す第2の接続情報を取得し、取得した第2の接続情報と記憶部に記憶されている第1の接続情報との比較を行い、比較結果に基づいて中継装置に対して第2の接続情報のリセット指示を送信する制御部と、を有する。
【発明の効果】
【0011】
中継装置の接続情報の異常を解消することが可能となる。
【図面の簡単な説明】
【0012】
【図1】第1の実施の形態のストレージシステムを示す図である。
【図2】第2の実施の形態のストレージシステムのハードウェアを示す図である。
【図3】第2の実施の形態のストレージシステムにおけるコントローラ、エクスパンダ、記憶装置の接続を示す図である。
【図4】第2の実施の形態のコントローラのルーティングテーブルを示す図である。
【図5】第2の実施の形態のエクスパンダのルーティングテーブルを示す図である。
【図6】第2の実施の形態におけるルーティングテーブルの比較を示す図である。
【図7】第2の実施の形態におけるルーティングテーブルの比較を示す図である。
【図8】第2の実施の形態のルーティングテーブル設定処理を示す図である。
【図9】第2の実施の形態のルーティングテーブル比較処理を示す図である。
【図10】第2の実施の形態の変形例のルーティングテーブル比較処理を示す図である。
【図11】第2の実施の形態の変形例のルーティングテーブル比較処理を示す図である。
【発明を実施するための形態】
【0013】
以下、実施の形態を、図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態のストレージシステムを示す図である。ストレージシステムは、制御装置1、中継装置2,3,4、記憶装置5,6,7を有する。
【0014】
制御装置1は、中継装置2〜4のデータアクセスの中継により記憶装置5〜7にデータアクセスを行う。制御装置1は、制御部1a、記憶部1bを有する。
ここで、第1の実施の形態では、中継装置2は、新たな装置(例えば、記憶装置7)が中継装置4に接続された場合、自装置により配下の中継装置(例えば、中継装置3)の接続情報3b1を取得し、取得した接続情報3b1に基づいて、配下に新たに接続された装置を含む接続情報2b1を作成し、記憶部2bに記憶させるものとする(自己作成可能)。一方、中継装置3,4は、新たな装置(例えば、記憶装置7)が中継装置4に接続された場合、それぞれ自ら接続情報3b1,4b1を作成せず、制御装置1がそれぞれ自装置用に作成した接続情報を受信して、それぞれ記憶部3b,4bに記憶させるものとする(自己作成不可)。
【0015】
制御部1aは、自己作成可能である中継装置2が作成した中継装置2に接続されている装置を示す接続情報2b1を取得し、取得した接続情報2b1と記憶部1bに記憶されている接続情報1b1との比較を行い、比較結果に基づいて中継装置2に対して接続情報2b1のリセット指示を送信する。
【0016】
記憶部1bは、制御装置1の配下に接続されている装置を示す接続情報1b1を記憶する。ここで、各接続情報は、自装置に対し、他の装置を介して間接的に接続されている装置を示すものとする。なお、これに限らず、自装置と直接接続されている装置を含んでもよい。接続情報1b1は、例えば、ストレージシステムの電源投入時に制御部1aが中継装置2〜4の接続状態を収集して作成される。また、接続情報1b1は、ストレージシステムに新たな装置が接続された場合等のストレージシステムの接続状態が変化した場合に、制御部1aが接続状態の変化を検出すると、これに基づいて更新される。
【0017】
中継装置2〜4は、記憶部2b〜4bを有する。また、中継装置2〜4は、それぞれ記憶装置5〜7と接続可能である。中継装置2〜4は、それぞれ記憶部2b〜4bに記憶されている接続情報2b1〜4b1に基づいて他の装置と接続する。
【0018】
記憶部2b〜4bは、それぞれ中継装置2〜4の配下に接続されている装置を示す接続情報を記憶する。
記憶装置5〜7は、ユーザデータを記憶し、制御装置1のアクセスに基づいて記憶しているデータの読み書きを行う。
【0019】
この場合、中継装置2による接続情報2b1の作成のタイミングによっては、接続情報2b1に異常が生じる場合がある。例えば、新たに中継装置4に記憶装置7が接続された際に、中継装置3の接続情報3b1の制御装置1による更新前に、中継装置2による接続情報2b1の作成が行われた場合が考えられる。この場合、中継装置2が接続情報3b1を取得した時点では、接続情報3b1には記憶装置7が設定されていない。このため、このとき、中継装置2が接続情報3b1に基づいて接続情報2b1を作成すると、接続情報2b1に記憶装置7が設定されず、中継装置2は記憶装置7にアクセスできない場合が生じ得る。
【0020】
これに対して、制御部1aは、新たな装置として記憶装置7が配下に接続されたことを検出した際等に、中継装置2が作成した接続情報2b1と制御装置1が作成した接続情報1b1との比較を行い、一致しない場合には中継装置2に対して接続情報2b1のリセット指示を送信する。これにより、中継装置2で接続情報2b1が再び作成され、接続情報2b1に記憶装置7の接続を反映させることができる。
【0021】
このようにして、中継装置2の接続情報の異常を解消することが可能となる。
[第2の実施の形態]
次に、第1の実施の形態のストレージシステムをより具体的にした実施の形態を、第2の実施の形態として説明する。
【0022】
図2は、第2の実施の形態のストレージシステムのハードウェアを示す図である。ストレージシステム100は、2つのコントローラ111a,112aを有するコントローラエンクロージャ(CE:Controller Enclosure)110を有する。さらに、ストレージシステム100は、複数のドライブエンクロージャ(DE:Drive Enclosure)150b,150c,150dを有する。
【0023】
コントローラエンクロージャ110と各ドライブエンクロージャ150b〜150dとは、それぞれ、記憶装置153a,154a,153b,154b,153c,154c,153d,154dを有する。
【0024】
ドライブエンクロージャ150b〜150dは、コントローラ111a,112aのそれぞれに接続された2つのデータ伝送経路121,122に直列に接続されている。データ伝送経路121,122には、例えば、SASが用いられている。ここで、ドライブエンクロージャ150b〜150dの数は、3つに限定されるものではなく、例えば、必要とする記憶容量に応じて適宜設定される。
【0025】
まず、ドライブエンクロージャ150bについて説明する。ドライブエンクロージャ150bは、メモリ151b1を有するエクスパンダ(EXP:Expander)151bと、メモリ152b1を有するエクスパンダ152bと、データを記憶する記憶装置153b,154bとを有する。記憶装置153b,154bには、例えば、磁気ディスク(HDD:Hard Disk Drive)やソリッドステートドライブ(SSD:Solid State Drive)が用いられている。
【0026】
エクスパンダ151b,152bはそれぞれ、SAS等のデータ伝送経路により、記憶装置153b,154bと接続されている。エクスパンダ151bは、データ伝送経路121に直列接続され、エクスパンダ152bは、データ伝送経路122に直列接続されている。エクスパンダ151bは、コントローラ111aから記憶装置153bへのデータアクセスを中継する。エクスパンダ152bは、コントローラ112aから記憶装置154bへのデータアクセスを中継する。
【0027】
エクスパンダ151bとエクスパンダ152bとの間には、通信経路159bが設けられている。通信経路159bには、例えば、I2C(商標)やEthernet(登録商標)等が用いられている。さらに、エクスパンダ151bには、エクスパンダ間ポート156bが設けられ、エクスパンダ152bには、エクスパンダ間ポート157bが設けられている。
【0028】
そして、エクスパンダ151bとエクスパンダ152bとの間には、エクスパンダ間ポート156bとエクスパンダ間ポート157bとに接続されたエクスパンダ間データ伝送経路158bが設けられている。エクスパンダ間データ伝送経路158bには、例えば、SAS等が用いられている。
【0029】
メモリ151b1には、エクスパンダ151bとコントローラ111aまたはコントローラ112aとの間が接続中であるか、または未接続であるかの接続状態と、エクスパンダ151bと記憶装置153bとの間の接続状態とが記憶されるルーティングテーブルが格納される。さらに、このルーティングテーブルには、エクスパンダ151bとエクスパンダ152bとの間の接続状態と、エクスパンダ152bと記憶装置154bとの間の接続状態とが記憶される。さらに、このルーティングテーブルには、エクスパンダ151bに接続された配下のエクスパンダが有するルーティングテーブルを包含するように設定される。エクスパンダ151bは、詳しくは後述するように、SDモードで動作するため、配下のエクスパンダ151cのメモリ151c1に記憶されているルーティングテーブルを参照して、自装置の配下の接続状態を、自装置のルーティングテーブルに設定する。
【0030】
メモリ152b1には、エクスパンダ152bとコントローラ111aまたはコントローラ112aとの間の接続状態と、エクスパンダ151bと記憶装置154bとの間の接続状態が記憶されるルーティングテーブルが格納される。さらに、このルーティングテーブルには、エクスパンダ151bとエクスパンダ152bとの間の接続状態と、エクスパンダ151bと記憶装置153bとの間の接続状態とが記憶される。さらに、このルーティングテーブルには、エクスパンダ152bに接続された配下のエクスパンダが有するルーティングテーブルを包含するように設定される。
【0031】
エクスパンダ151bは、記憶装置153b,154b、および、データ伝送経路121に接続された配下のエクスパンダとの間の接続状態を監視し、例えば、配下に新たに装置が接続されたり、接続されている装置の接続が解除されたりした場合等、この接続状態に変化が生じると、これを検出する。そして、エクスパンダ151bは、この接続状態の変化を、データ伝送経路121を介してコントローラ111aまたはコントローラ112aに通知する。
【0032】
さらに、エクスパンダ151bは、コントローラ111aまたはコントローラ112aからの指示に従って、メモリ151b1に格納されたルーティングテーブルを更新する。さらに、エクスパンダ151bは、更新したルーティングテーブルをコントローラ111aまたはコントローラ112aに通知する。
【0033】
エクスパンダ152bは、記憶装置153b,154b、および、データ伝送経路122に接続された配下のエクスパンダとの間の接続状態を監視し、この接続状態に変化が生じると、接続状態の変化を検出する。そして、エクスパンダ152bは、検出した接続状態の変化を、データ伝送経路122を介してコントローラ111aまたはコントローラ112aに通知する。
【0034】
さらに、エクスパンダ152bは、コントローラ111aまたはコントローラ112aからの指示に従って、メモリ152b1に格納されたルーティングテーブルを更新する。さらに、エクスパンダ152bは、更新したルーティングテーブルをコントローラ111aまたはコントローラ112aに通知する。
【0035】
次に、ドライブエンクロージャ150cについて説明する。ドライブエンクロージャ150cは、メモリ151c1を有するエクスパンダ151cと、メモリ152c1を有するエクスパンダ152cと、データを記憶する記憶装置153c,154cとを有する。
【0036】
エクスパンダ151c,152cはそれぞれ、SAS等のデータ伝送経路により、記憶装置153c,154cと接続されている。エクスパンダ151cは、データ伝送経路121に直列接続され、エクスパンダ152cは、データ伝送経路122に直列接続されている。エクスパンダ151c,152cはそれぞれ、コントローラ111aまたはコントローラ112aから記憶装置153c,154cへのデータアクセスを中継する。
【0037】
エクスパンダ151cとエクスパンダ152cとの間には、通信経路159cが設けられている。通信経路159cには、例えば、I2C(商標)やEthernet(登録商標)等が用いられている。さらに、エクスパンダ151cには、エクスパンダ間ポート156cが設けられ、エクスパンダ152cには、エクスパンダ間ポート157cが設けられている。
【0038】
そして、エクスパンダ151cとエクスパンダ152cとの間には、エクスパンダ間ポート156cとエクスパンダ間ポート157cとに接続されたエクスパンダ間データ伝送経路158cが設けられている。エクスパンダ間データ伝送経路158cには、例えば、SAS等が用いられている。
【0039】
メモリ151c1には、エクスパンダ151cとコントローラ111aまたはコントローラ112aとの間の接続状態と、エクスパンダ151cと記憶装置153cとの間の接続状態とが記憶されるルーティングテーブルが格納される。さらに、このルーティングテーブルには、エクスパンダ152cとエクスパンダ151cとの間の接続状態と、エクスパンダ152cと記憶装置154cとの間の接続状態とが記憶される。さらに、このルーティングテーブルには、エクスパンダ151cに接続された配下のエクスパンダが有するルーティングテーブルを包含するように設定される。エクスパンダ151bは、詳しくは後述するように、NSDモードで動作するため、コントローラ111aによって作成されたルーティングテーブルを、自装置のルーティングテーブルに設定する。
【0040】
メモリ152c1には、エクスパンダ152cとコントローラ111aまたはコントローラ112aとの間の接続状態と、エクスパンダ152cと記憶装置154cとの間の接続状態が記憶されるルーティングテーブルが格納される。さらに、このルーティングテーブルには、エクスパンダ151cとエクスパンダ152cとの間の接続状態と、エクスパンダ151cと記憶装置153cとの間の接続状態とが記憶される。さらに、このルーティングテーブルには、エクスパンダ152cに接続された配下のエクスパンダが有するルーティングテーブルを包含するように設定される。
【0041】
なお、エクスパンダ151cの機能については、ドライブエンクロージャ150bのエクスパンダ151bと同様である。エクスパンダ152cの機能については、ドライブエンクロージャ150bのエクスパンダ152bと同様である。
【0042】
次に、ドライブエンクロージャ150dについて説明する。ドライブエンクロージャ150dは、メモリ151d1を有するエクスパンダ151dと、メモリ152d1を有するエクスパンダ152dと、データを記憶する記憶装置153d,154dとを有する。
【0043】
エクスパンダ151d,152dはそれぞれ、SAS等のデータ伝送経路により、記憶装置153d,154dと接続されている。エクスパンダ151dは、データ伝送経路121に直列接続され、エクスパンダ152dは、データ伝送経路122に直列接続されている。エクスパンダ151d,152dはそれぞれ、コントローラ111aまたはコントローラ112aから記憶装置153d,154dへのデータアクセスを中継する。
【0044】
エクスパンダ151dとエクスパンダ152dとの間には、通信経路159dが設けられている。通信経路159dには、例えば、I2C(商標)やEthernet(登録商標)等が用いられている。さらに、エクスパンダ151dには、エクスパンダ間ポート156dが設けられ、エクスパンダ152dには、エクスパンダ間ポート157dが設けられている。
【0045】
そして、エクスパンダ151dとエクスパンダ152dとの間には、エクスパンダ間ポート156dとエクスパンダ間ポート157dとに接続されたエクスパンダ間データ伝送経路158dが設けられている。エクスパンダ間データ伝送経路158dには、例えば、SAS等が用いられている。
【0046】
メモリ151d1には、エクスパンダ151dとコントローラ111aまたはコントローラ112aとの間の接続状態と、エクスパンダ151dと記憶装置153dとの間の接続状態とが記憶されるルーティングテーブルが格納される。さらに、このルーティングテーブルには、エクスパンダ152dとエクスパンダ151dとの間の接続状態と、エクスパンダ152dと記憶装置154dとの間の接続状態とが記憶される。さらに、このルーティングテーブルには、エクスパンダ151dに接続された配下のエクスパンダが有するルーティングテーブルを包含するように設定される。
【0047】
メモリ152d1には、エクスパンダ152dとコントローラ111aまたはコントローラ112aとの間の接続状態と、エクスパンダ152dと記憶装置154dとの間の接続状態が記憶されるルーティングテーブルが格納される。さらに、このルーティングテーブルには、エクスパンダ151dとエクスパンダ152dとの間の接続状態と、エクスパンダ151dと記憶装置153dとの間の接続状態とが記憶される。さらに、このルーティングテーブルには、エクスパンダ152dに接続された配下のエクスパンダが有するルーティングテーブルを包含するように設定される。
【0048】
なお、エクスパンダ151dの機能については、ドライブエンクロージャ150cのエクスパンダ151cと同様である。エクスパンダ152dの機能については、ドライブエンクロージャ150cのエクスパンダ152cと同様である。
【0049】
次に、コントローラエンクロージャ110について説明する。コントローラエンクロージャ110は、コントロールモジュール(CM:Control Module)111,112と、データを記憶する記憶装置153a,154aとを有する。また、記憶装置153a,154aには、例えば、磁気ディスクやソリッドステートドライブが用いられている。
【0050】
コントロールモジュール111は、コントローラ111aと、メモリ151a1を有するエクスパンダ151aとを有する。コントロールモジュール112は、コントローラ112aと、メモリ152a1を有するエクスパンダ152aとを有する。
【0051】
コントローラ111aおよびエクスパンダ151aはデータ伝送経路121に接続され、コントローラ112aおよびエクスパンダ152aはデータ伝送経路122に接続されている。さらに、コントローラ111aは、SAS等のデータ伝送経路により、エクスパンダ152aに接続されている。コントローラ112aは、SAS等のデータ伝送経路により、エクスパンダ151aに接続されている。
【0052】
エクスパンダ151aおよびエクスパンダ152aはそれぞれ、SAS等のデータ伝送経路により、記憶装置153a,154aと接続されている。エクスパンダ151aは、記憶装置153aとコントローラ111aまたはコントローラ112aとの間のデータ伝送を中継する。エクスパンダ152aは、記憶装置154aとコントローラ111aまたはコントローラ112aとの間のデータ伝送を中継する。
【0053】
メモリ151a1には、エクスパンダ151aとコントローラ111aまたはコントローラ112aとの間の接続状態と、エクスパンダ151aと記憶装置153aとの間の接続状態とが記憶されるルーティングテーブルが格納される。さらに、このルーティングテーブルには、データ伝送経路121に接続された配下のエクスパンダ151bが有するルーティングテーブルを包含するように設定される。
【0054】
メモリ152a1には、エクスパンダ152aとコントローラ111aまたはコントローラ112aとの間の接続状態と、エクスパンダ152aと記憶装置154aとの間の接続状態とが記憶されるルーティングテーブルが格納される。さらに、このルーティングテーブルには、データ伝送経路122に接続された配下のエクスパンダ152bが有するルーティングテーブルを包含するように設定される。
【0055】
エクスパンダ151aは、コントローラ111aまたはコントローラ112aからの指示に従って、メモリ151a1に格納されたルーティングテーブルを更新する。さらに、エクスパンダ151aは、更新したルーティングテーブルをコントローラ111aまたはコントローラ112aに通知する。
【0056】
さらに、エクスパンダ151aは、記憶装置153a、および、データ伝送経路121に接続された配下のエクスパンダ151bとの間の接続状態を監視し、この接続状態に変化が生じると、これを検出する。そして、エクスパンダ151aは、この接続状態の変化をコントローラ111aまたはコントローラ112aに通知する。
【0057】
また、エクスパンダ152aは、コントローラ111aまたはコントローラ112aからの指示に従って、メモリ152a1に格納されたルーティングテーブルを更新する。さらに、エクスパンダ152aは、更新したルーティングテーブルをコントローラ111aまたはコントローラ112aに通知する。
【0058】
さらに、エクスパンダ152aは、記憶装置154a、および、データ伝送経路122に接続された配下のエクスパンダ152bとの間の接続状態を監視し、この接続状態に変化が生じると、これを検出する。そして、エクスパンダ152aは、この接続状態の変化をコントローラ111aまたはコントローラ112aに通知する。
【0059】
コントローラ111aは、制御回路111a1と、メモリ111a2と、通信ポート111a3とを有する。コントローラ111aによる処理は、制御回路111a1によって実行される。通信ポート111a3には、データ伝送経路121が接続されている。
【0060】
コントローラ112aは、制御回路112a1と、メモリ112a2と、通信ポート112a3とを有する。コントローラ112aによる処理は、制御回路112a1によって実行される。通信ポート112a3には、データ伝送経路122が接続されている。
【0061】
コントローラ111a,112aはそれぞれ、エクスパンダ151a〜151d,152a〜152dのうちの一部を経由するデータ伝送経路により、次の処理を行う。すなわち、コントローラ111a,112aはそれぞれ、各記憶装置153a〜153d,154a〜154dへのデータの書き込み、または、各記憶装置153a〜153d,154a〜154dからのデータの読み出しを行う。この処理は、例えば、ホスト装置(図示せず)からの指示に応じて行われる。
【0062】
さらに、コントローラ111a,112aはそれぞれ、エクスパンダ151a〜151d,152a〜152dのうちのいずれかから接続状態変化の通知を受信すると、次の処理を行う。すなわち、コントローラ111a,112aはそれぞれ、エクスパンダ151a〜151d,152a〜152dのすべてに対して、ルーティングテーブルの更新を指示する。
【0063】
さらに、コントローラ111a,112aはそれぞれ、エクスパンダ151a〜151d,152a〜152dが有するルーティングテーブルをすべて取得する。取得したルーティングテーブルは、メモリ111a2,112a2に格納される。さらに、コントローラ111a,112aは、メモリ111a2,112a2に格納された取得したルーティングテーブルを参照し、データ伝送経路121およびデータ伝送経路122を介した各記憶装置153a〜153d,154a〜154dへの接続状況を監視する。
【0064】
図3は、第2の実施の形態のストレージシステムにおけるコントローラ、エクスパンダ、記憶装置の接続を示す図である。第2の実施の形態のストレージシステム100では、以下、コントローラ111a、エクスパンダ151a〜151e、記憶装置153a〜153eが図3に示すように接続されているものとする。
【0065】
すなわち、コントローラ111aは、エクスパンダ151aと直接接続されている。エクスパンダ151aは、コントローラ111a、エクスパンダ151b、記憶装置153aと直接接続されている。エクスパンダ151bは、エクスパンダ151a,151c、記憶装置153bと直接接続されている。エクスパンダ151cは、エクスパンダ151b,151d、記憶装置153cと直接接続されている。エクスパンダ151dは、エクスパンダ151c,151e、記憶装置153dと直接接続されている。エクスパンダ151eは、エクスパンダ151d、記憶装置153eと直接接続されている。また、コントローラ111aは、制御回路111a1、メモリ111a2を有する。制御回路111a1は、制御部として機能する。メモリ111a2は、記憶部として機能する。
【0066】
また、エクスパンダ151a,151c,151dは、自装置でルーティングテーブルの作成や更新を行わず、コントローラ111aが作成または更新したルーティングテーブルを受信して自装置のルーティングテーブルを設定するNSDモードで動作するものとする。また、エクスパンダ151b,151eは、自装置でルーティングテーブルの作成や更新を行うとともにルーティングテーブルを設定するSDモードで動作するものとする。
【0067】
制御回路111a1は、自装置の配下に新たに装置(例えば、記憶装置153e)が接続された場合に、エクスパンダ151a〜151eのそれぞれの接続状態に応じたルーティングテーブルを作成する。そして、制御回路111a1は、配下のエクスパンダ151a〜151eのうち、SDモードで動作するエクスパンダ151bが作成した、エクスパンダ151bに接続されている装置を示すルーティングテーブルを取得する。制御回路111a1は、取得したルーティングテーブルとメモリ111a2に記憶されている、エクスパンダ151aに対応する、エクスパンダ151aの接続状態に応じた配下エクスパンダ用ルーティングテーブルとの比較を行い、比較結果に基づいてエクスパンダ151bに対してルーティングテーブルのリセット指示を送信する。具体的な比較方法については、詳しくは図6および図7において後述する。
【0068】
制御回路111a1は、SDモードで動作するエクスパンダ151b,151eに対しては、それぞれのルーティングテーブルを取得するとともにコントローラ111aが有するルーティングテーブルとの比較を行い、比較結果に基づいてエクスパンダ151b,151eに対してそれぞれのルーティングテーブルのリセット指示を送信する。制御回路111a1は、NSDモードで動作するエクスパンダ151a,151c,151dに対してはルーティングテーブルの比較を行わず、それぞれの接続状態に応じたルーティングテーブルを作成してエクスパンダ151a,151c,151dに送信することで、接続状態に応じたルーティングテーブルを設定させる。
【0069】
図4は、第2の実施の形態のコントローラのルーティングテーブルを示す図である。図4に示すルーティングテーブル111a21は、コントローラ111aと接続されている装置を示す接続情報を格納するルーティングテーブルであり、コントローラ111aのメモリ111a2に記憶されている。ルーティングテーブル111a21は、コントローラ111aにより、ストレージシステム100の電源投入時に設定される。また、ルーティングテーブル111a21は、コントローラ111aによる各装置の接続状態の変化の検出に基づいて更新される。
【0070】
ルーティングテーブル111a21には、エクスパンダを介してコントローラ111aと間接的に接続されている装置が設定される。すなわち、ルーティングテーブル111a21には、エクスパンダ151aのように、コントローラ111aと直接接続されている装置は設定されない。
【0071】
具体的には、ルーティングテーブル111a21には、記憶装置153aを示す“DISK#A1”、SDモードのエクスパンダ151bを示す“EXP#B(SD)”、記憶装置153bを示す“DISK#B1”、NSDモードのエクスパンダ151cを示す“EXP#C(NSD)”、記憶装置153cを示す“DISK#C1”、NSDモードのエクスパンダ151dを示す“EXP#D(NSD)”、記憶装置153dを示す“DISK#D1”、SDモードのエクスパンダ151eを示す“EXP#E(SD)”、記憶装置153eを示す“DISK#E1”が、コントローラ111aにより、ストレージシステム100の電源投入時にコントローラ111aからの接続されている装置を示す情報の要求に対する配下のエクスパンダからの応答に基づいて設定される。また、ルーティングテーブル111a21には、コントローラ111aにより、各装置のストレージシステム100への接続状態の変化時に、接続状態の変化を検出した配下のエクスパンダからの通知に基づいて更新される。
【0072】
図5は、第2の実施の形態のエクスパンダのルーティングテーブルを示す図である。図5(A)に示すルーティングテーブル151a11は、エクスパンダ151aと接続されている装置を示す接続情報を格納するルーティングテーブルであり、メモリ151a1に記憶されている。図5(B)に示すルーティングテーブル151b11は、エクスパンダ151bと接続されている装置を示す接続情報を格納するルーティングテーブルであり、メモリ151b1に記憶されている。図5(C)に示すルーティングテーブル151c11は、エクスパンダ151cと接続されている装置を示す接続情報を格納するルーティングテーブルであり、メモリ151c1に記憶されている。図5(D)に示すルーティングテーブル151d11は、エクスパンダ151dと接続されている装置を示す接続情報を格納するルーティングテーブルであり、メモリ151d1に記憶されている。
【0073】
図5(A)から図5(D)に示すルーティングテーブル151a11〜151d11には、当該ルーティングテーブルを記憶している自装置の配下のエクスパンダを介して自装置と間接的に接続されている装置が設定される。すなわち、ルーティングテーブル151a11〜151d11には、自装置と直接接続されている装置は設定されない。また、エクスパンダ151eには配下のエクスパンダが存在せず、間接的に接続されている装置が存在しないので、ルーティングテーブルに装置が設定されない。このため、エクスパンダ151eのルーティングテーブルについては説明を省略する。
【0074】
具体的には、図5(A)に示すルーティングテーブル151a11には、配下のエクスパンダ151b〜151eを介してエクスパンダ151aと間接的に接続されている記憶装置153b、エクスパンダ151c、記憶装置153c、エクスパンダ151d、記憶装置153d、エクスパンダ151e、記憶装置153eが設定されている。ルーティングテーブル151a11は、後述するように、エクスパンダ151aがNSDモードで動作するため、コントローラ111aにより、ストレージシステム100の電源投入時等にコントローラ111aからのエクスパンダ151aに対応する配下用ルーティングテーブルの送信に基づいて設定される。また、ルーティングテーブル151a11は、コントローラ111aにより、各装置のストレージシステム100への接続状態の変化時に、接続状態の変化を検出した配下のエクスパンダからの通知に基づいて更新される。
【0075】
図5(B)に示すルーティングテーブル151b11には、配下のエクスパンダ151c〜151eを介してエクスパンダ151bと間接的に接続されている記憶装置153c、エクスパンダ151d、記憶装置153d、エクスパンダ151e、記憶装置153eが設定されている。ルーティングテーブル151b11は、後述するように、エクスパンダ151bがSDモードで動作するため、エクスパンダ151bにより、ストレージシステム100の電源投入時等に設定される。また、ルーティングテーブル151b11は、エクスパンダ151bにより、後述する配下のエクスパンダからのBROADCAST(Change)(以下、BC(CHG))やコントローラ111aからのDISCOVERの受信時に更新される。
【0076】
図5(C)に示すルーティングテーブル151c11には、配下のエクスパンダ151d,151eを介してエクスパンダ151cと間接的に接続されている記憶装置153d、エクスパンダ151e、記憶装置153eが設定されている。ルーティングテーブル151c11は、後述するように、エクスパンダ151cがNSDモードで動作するため、コントローラ111aにより、ストレージシステム100の電源投入時等にコントローラ111aからのエクスパンダ151cに対応する配下用ルーティングテーブルの送信に基づいて設定される。また、ルーティングテーブル151c11は、コントローラ111aにより、各装置のストレージシステム100への接続状態の変化時に、接続状態の変化を検出した配下のエクスパンダからの通知に基づいて更新される。
【0077】
図5(D)に示すルーティングテーブル151d11には、配下のエクスパンダ151eを介してエクスパンダ151dと間接的に接続されている記憶装置153eが設定されている。ルーティングテーブル151d11は、後述するように、エクスパンダ151dがNSDモードで動作するため、コントローラ111aにより、ストレージシステム100の電源投入時等にコントローラ111aからのエクスパンダ151dに対応する配下用ルーティングテーブルの送信に基づいて設定される。また、ルーティングテーブル151d11は、コントローラ111aにより、各装置のストレージシステム100への接続状態の変化時に、接続状態の変化を検出した配下のエクスパンダからの通知に基づいて更新される。
【0078】
図6および図7は、第2の実施の形態におけるルーティングテーブルの比較を示す図である。図6および図7に従って、エクスパンダ151eに対して新たに記憶装置153eが接続された場合のコントローラ111aのメモリ111a2に記憶されているルーティングテーブル111a21、配下エクスパンダ用ルーティングテーブル111a22a〜111a22dとエクスパンダ151a〜151dのルーティングテーブル151a11〜151d11との比較の時の動作を説明する。ここでは、図5と同様、エクスパンダ151eのルーティングテーブルについては説明を省略する。ここで、図6には、記憶装置153eがエクスパンダ151eに接続される前のルーティングテーブルおよび配下エクスパンダ用ルーティングテーブルを示す。また、図7には、記憶装置153eがエクスパンダ151eに接続された後であって、ルーティングテーブル151b11に異常が発生しており、かつ、異常が解消される前のルーティングテーブルおよび配下エクスパンダ用ルーティングテーブルを示す。
【0079】
図6に示すように、メモリ111a2には、記憶装置153eがエクスパンダ151eに接続されていない時点におけるコントローラ111aのルーティングテーブル111a21が記憶されている。また、メモリ111a2には、当該時点の接続状態に対して正しく設定されている場合のエクスパンダ151a〜151dのルーティングテーブルを示す配下エクスパンダ用ルーティングテーブル111a22a〜111a22dが記憶されている。配下エクスパンダ用ルーティングテーブル111a22a〜111a22dは、コントローラ111aが、ルーティングテーブル111a21に基づき、最新の接続状況に応じて作成および更新する。また、メモリ151a1〜151d1には、記憶装置153eがエクスパンダ151eに接続されていない時点におけるエクスパンダ151a〜151dの実際のルーティングテーブル151a11〜151d11が記憶されている。
【0080】
ここで、ストレージシステム100において、コントローラ111aの配下のエクスパンダ151eに対して新たに記憶装置153eが接続されたものとする。この場合、エクスパンダ151eが記憶装置153eとの接続を検出すると、ストレージシステム100のトポロジー(SAS topology)の再作成を指示するBC(CHG)をエクスパンダ151dに対して送信する。
【0081】
エクスパンダ151dは、エクスパンダ151eからのBC(CHG)を受信すると、BC(CHG)をエクスパンダ151cに対して送信する。エクスパンダ151dは、NSDモードで動作しているため、ルーティングテーブル151d11の更新は行わない。このため、この時点ではルーティングテーブル151d11に記憶装置153eは設定されない。
【0082】
エクスパンダ151cは、エクスパンダ151dからのBC(CHG)を受信すると、BC(CHG)をエクスパンダ151bに対して送信する。エクスパンダ151cは、NSDモードで動作しているため、ルーティングテーブル151c11の更新は行わない。このため、この時点ではルーティングテーブル151c11に記憶装置153eは設定されない。
【0083】
エクスパンダ151bは、エクスパンダ151cからのBC(CHG)を受信すると、SDモードで動作しているため、受信したBC(CHG)に基づき、エクスパンダ151cのルーティングテーブル151c11を取得してルーティングテーブル151b11の更新を行う。このとき、エクスパンダ151bの配下のエクスパンダ151c〜151eがすべてSDモードで動作していれば、エクスパンダ151eからエクスパンダ151cまで逆順に、それぞれのルーティングテーブル151c11〜151e11に記憶装置153eが設定されていくので、エクスパンダ151bがルーティングテーブル151c11を取得してルーティングテーブル151b11に記憶装置153eを設定することができる。しかし、この時点では、上記のようにルーティングテーブル151c11には、記憶装置153eが設定されていない。このため、エクスパンダ151bによる更新ではルーティングテーブル151c11に記憶装置153eは設定されない。次に、エクスパンダ151bは、BC(CHG)をエクスパンダ151aに対して送信する。
【0084】
エクスパンダ151aは、エクスパンダ151bからのBC(CHG)を受信すると、BC(CHG)をコントローラ111aに対して送信する。エクスパンダ151aは、NSDモードで動作しているため、ルーティングテーブル151a11の更新は行わない。このため、この時点ではルーティングテーブル151a11に記憶装置153eは設定されない。
【0085】
ここで、コントローラ111aは、エクスパンダ151aからのBC(CHG)を受信すると、配下のエクスパンダ151a〜151eに対してDISCOVERを送信する。配下のエクスパンダ151a〜151eはそれぞれ、コントローラ111aに対してDISCOVERに対する応答を送信する。このとき、エクスパンダ151a〜151eは、自装置の配下に接続されている各装置に関する情報および自装置がSDモードで動作しているか、NSDモードで動作しているかを示す情報を含めて応答する。エクスパンダ151a〜151eからの応答に含まれる、自装置の配下に接続されている各装置に関する情報には、例えば、自装置と接続されている装置の種類や固有の識別情報、自装置と接続されている装置との接続ポートを示す情報が含まれる。
【0086】
コントローラ111aは、自装置と接続されている装置との接続ポートを示す情報により、ストレージシステム100におけるエクスパンダ151a〜151eおよび記憶装置153a〜153eの接続の構成(各装置が新たに接続または接続が解除された旨、各装置がいずれの装置と直接または間接的に接続されているか)を判定することができる。また、コントローラ111aは、エクスパンダ151a〜151eがそれぞれSDモードで動作しているか、NSDモードで動作しているかをDISCOVERに対するエクスパンダ151a〜151eからの応答に基づいて認識することができる。コントローラ111aは、ストレージシステム100の各装置の接続状態の判定結果およびエクスパンダ151a〜151eが動作しているモードの認識結果を示す情報をメモリ111a2に記憶する。なお、これに限らず、コントローラ111aは、エクスパンダ151a〜151eが動作しているモードを、動作起動後最初のDISCOVERに対する応答、各エクスパンダの初回起動後最初のDISCOVERに対する応答やその他の制御信号に基づいて取得してもよい。
【0087】
次に、図7に示すように、コントローラ111aは、エクスパンダ151a〜151eからの応答に基づいてストレージシステム100における各装置の接続状態を判定し、メモリ111a2に記憶されている、新たに記憶装置153eがエクスパンダ151eに接続された後の時点におけるコントローラ111aのルーティングテーブル111a21を更新する。これにより、ルーティングテーブル111a21に記憶装置153eが設定される。コントローラ111aは、更新したルーティングテーブル111a21に基づいて、メモリ111a2に記憶されている、配下エクスパンダ用ルーティングテーブル111a22a〜111a22dを更新する。これにより、配下エクスパンダ用ルーティングテーブル111a22a〜111a22dに、記憶装置153eが設定される。ここで、エクスパンダ151bに対応する配下エクスパンダ用ルーティングテーブル111a22bにも、接続情報111a23に示すように、記憶装置153eが設定される。
【0088】
このときコントローラ111aは、更新したルーティングテーブル111a21から、エクスパンダ151aと直接接続されているエクスパンダ151bおよび記憶装置153aを除外することで、エクスパンダ151aに対応する配下エクスパンダ用ルーティングテーブル111a22aを作成する。また、コントローラ111aは、作成した配下エクスパンダ用ルーティングテーブル111a22aから、エクスパンダ151bと直接接続されているエクスパンダ151cおよび記憶装置153bを除外することで、エクスパンダ151bに対応する配下エクスパンダ用ルーティングテーブル111a22bを作成する。このとき、コントローラ111aは、DISCOVERに対するエクスパンダ151a〜151eからの応答に含まれている、エクスパンダ151a〜151eと接続されている装置との接続ポートを示す情報に基づいて、配下の装置の接続の構成を判断して、エクスパンダ151bと直接接続されているエクスパンダ151cおよび記憶装置153bを除外する。また、コントローラ111aは、作成した配下エクスパンダ用ルーティングテーブル111a22bから、エクスパンダ151cと直接接続されているエクスパンダ151dおよび記憶装置153cを除外することで、エクスパンダ151cに対応する配下エクスパンダ用ルーティングテーブル111a22cを作成する。また、コントローラ111aは、作成した配下エクスパンダ用ルーティングテーブル111a22cから、エクスパンダ151dと直接接続されているエクスパンダ151eおよび記憶装置153dを除外することで、エクスパンダ151dに対応する配下エクスパンダ用ルーティングテーブル111a22dを作成する。
【0089】
次に、コントローラ111aは、NSDモードで動作するエクスパンダ151a,151c,151dについては、ルーティングテーブルの更新を実行させる。このときコントローラ111aは、NSDモードで動作するエクスパンダ151a,151c,151dに対して、それぞれ対応する配下エクスパンダ用ルーティングテーブル111a22a,111a22c,111a22dを送信し、エクスパンダ151a,151c,151dのそれぞれのルーティングテーブル151a11,151c11,151d11を更新させる。一方、SDモードで動作するエクスパンダ151b,151eでは、コントローラ111aからルーティングテーブルが送信されず、ルーティングテーブルの更新が行われない。このため、ルーティングテーブル151b11に記憶装置153eが設定されず、このままではエクスパンダ151cは、記憶装置153eにアクセスすることができない。これに対して、第2の実施の形態のコントローラ111aは、SDモードで動作するエクスパンダ151b,151eについては、それぞれ対応する配下エクスパンダ用ルーティングテーブル(例えば、配下エクスパンダ用ルーティングテーブル111a22b)と比較し、一致しない場合には、当該エクスパンダに対してSMP(SAS Management Protocol) FUNCTIONにおけるルーティングテーブルの作成を実行させるリセット指示であるDISCOVERを送信する。
【0090】
次に、図7では、エクスパンダ151bでは、ルーティングテーブル151b11に、接続情報151b23に示すように、記憶装置153bが設定されていない。これに対して、配下エクスパンダ用ルーティングテーブル111a22bに、接続情報111a23に示すように、記憶装置153eが設定されている。このため、ルーティングテーブル151b11と、配下エクスパンダ用ルーティングテーブル111a22bとが一致せず、コントローラ111aによりエクスパンダ151bに対してルーティングテーブルの作成を実行させるDISCOVERが送信される。
【0091】
エクスパンダ151b,151eは、コントローラ111aから送信されたDISCOVERを受信した場合、自装置のルーティングテーブルの作成を実行する。
ここで、図7では、コントローラ111aによってエクスパンダ151cにおいてルーティングテーブル151c11の更新が完了しており、記憶装置153eが設定されているので、エクスパンダ151bがルーティングテーブル151c11を取得してルーティングテーブル151b11を更新することで、接続情報151b23に示すように、ルーティングテーブル151b11に記憶装置153eが設定される。
【0092】
図8は、第2の実施の形態のルーティングテーブル設定処理を示す図である。第2の実施の形態の制御回路111a1は、新たに装置(例えば、記憶装置153e)が接続されたエクスパンダ(例えば、エクスパンダ151e)からのBC(CHG)を受信し、エクスパンダ151eに記憶装置153eが接続されたことを検出したものとする。この場合、制御回路111a1は、エクスパンダ151a〜151dの各ルーティングテーブル(例えば、ルーティングテーブル151a11〜151d11)を設定(更新)するルーティングテーブル設定処理を実行する。なお、上記のようにエクスパンダ151eのルーティングテーブルについては説明を省略する。以下では、図8に示すルーティングテーブル設定処理をフローチャートのステップ番号に沿って説明する。
【0093】
[ステップS11]制御回路111a1は、すべての配下のエクスパンダ151a〜151eに対して、当該エクスパンダのルーティングテーブルの更新を実行させるDISCOVERを送信する。DISCOVERを受信したエクスパンダ151a〜151eは、コントローラ111aに対して、DISCOVERに対する応答を送信する。この応答には、エクスパンダ151a〜151eにおいて、自装置が動作しているモードがSDであるかNSDであるかを示す情報、自装置と接続している装置との間の接続ポートを示す情報が含まれている。制御回路111a1は、この応答に含まれている情報に基づいて、エクスパンダ151a〜151eのモードや各装置同士の接続状態(接続されている装置、装置同士が直接接続されているか、間接的に接続されているか等)を判定する。
【0094】
[ステップS12]制御回路111a1は、コントローラ111aのルーティングテーブル111a21および配下エクスパンダ用ルーティングテーブル111a22a〜111a22dを作成し、メモリ111a2に記憶させる。また、制御回路111a1は、作成したルーティングテーブル111a21を自装置のルーティングテーブルに設定する。
【0095】
[ステップS13]制御回路111a1は、ステップS13〜ステップS15のループにおいて、配下のエクスパンダ151a〜151eのうち、未選択のエクスパンダの有無を検索する。
【0096】
[ステップS14]制御回路111a1は、ステップS13に基づいて、配下のエクスパンダ151a〜151eのうち、未選択のエクスパンダが存在するか否かを判定する。未選択のエクスパンダが存在すれば(ステップS14 YES)、処理はステップS15に進められる。一方、未選択のエクスパンダが存在しなければ(ステップS14 NO)、処理は終了する。
【0097】
[ステップS15]制御回路111a1は、未選択のエクスパンダについて図9において後述する、NSDエクスパンダに配下エクスパンダ用ルーティングテーブルを送信してSDエクスパンダにDISCOVERを実行させる比較処理を実行する。
【0098】
図9は、第2の実施の形態のルーティングテーブル比較処理を示す図である。第2の実施の形態では、制御回路111a1は、NSDエクスパンダに配下エクスパンダ用ルーティングテーブルを送信し、配下エクスパンダ用ルーティングテーブルとの比較結果に基づいてSDエクスパンダにDISCOVERを実行させることで、エクスパンダのルーティングテーブルを設定するルーティングテーブル比較処理を実行する。なお、上記のようにエクスパンダ151eのルーティングテーブルについては説明を省略する。以下では、図9に示すルーティングテーブル比較処理をフローチャートのステップ番号に沿って説明する。
【0099】
[ステップS21]制御回路111a1は、配下のエクスパンダ151a〜151eのうちの未選択のエクスパンダから1つを選択する。
[ステップS22]制御回路111a1は、ステップS21で選択したエクスパンダがNSDモードで動作するNSDエクスパンダであるか否かを判定する。NSDエクスパンダであれば(ステップS22 YES)、処理はステップS27に進められる。一方、SDモードで動作するSDエクスパンダであれば(ステップS22 NO)、処理はステップS23に進められる。
【0100】
[ステップS23]制御回路111a1は、SDエクスパンダであるステップS21で選択したエクスパンダに設定されているルーティングテーブルを取得する。例えば、エクスパンダ151bが選択されている場合、制御回路111a1は、ルーティングテーブル151b11を取得する。
【0101】
[ステップS24]制御回路111a1は、SDエクスパンダであるステップS21で選択したエクスパンダ151bのルーティングテーブル151b11と、エクスパンダ151bに設定されるべき接続情報を示す配下エクスパンダ用ルーティングテーブル111a22cとを比較する。
【0102】
[ステップS25]制御回路111a1は、ステップS24における比較結果は一致しているか否かを判定する。一致していれば(ステップS25 YES)、処理はルーティングテーブル設定処理に復帰する。一方、一致していなければ(ステップS25 NO)、処理はステップS26に進められる。
【0103】
[ステップS26]制御回路111a1は、SDエクスパンダであるステップS21で選択したエクスパンダ151bに対して、ルーティングテーブル151b11をリセットさせてDISCOVERを実行させるリセット指示を送信する。これにより、エクスパンダ151bは、DISCOVERの実行により再びルーティングテーブル151b11の作成を行う。従って、エクスパンダ151bにより、エクスパンダ151bの配下のエクスパンダ151c〜151eのルーティングテーブルから接続情報が取得され、ルーティングテーブル151b11に新たに接続された記憶装置153eが設定される。これに基づき、エクスパンダ151bが記憶装置153eにアクセスすることが可能になる。その後、処理はルーティングテーブル設定処理に復帰する。
【0104】
[ステップS27]制御回路111a1は、ルーティングテーブル設定処理のステップS12で作成したメモリ111a2に記憶されている配下エクスパンダ用ルーティングテーブル111a22a〜111a22dのうち、NSDエクスパンダであるステップS21で選択したエクスパンダに対応する配下エクスパンダ用ルーティングテーブルを設定する。例えば、エクスパンダ151aが選択されている場合、制御回路111a1は、エクスパンダ151aに配下エクスパンダ用ルーティングテーブル111a22aを設定する。その後、処理はルーティングテーブル設定処理に復帰する。
【0105】
ここで、第2の実施の形態のルーティングテーブル比較処理では、制御回路111a1は、ステップS21において、SDエクスパンダとNSDエクスパンダとを区別せずに選択するが、これに限らず、NSDエクスパンダをすべて選択してからSDエクスパンダを選択してもよい。これにより、新たな装置の接続がNSDエクスパンダのルーティングテーブルに完全に反映された後にSDエクスパンダのルーティングテーブルの更新を実行させることができる。
【0106】
以上のような第2の実施の形態のストレージシステム100は、最新のストレージシステム100に接続されている装置の状態を示すルーティングテーブルと、配下のエクスパンダとを比較する。これにより、新たな装置が接続された場合に、SDモードで動作するエクスパンダ151bのルーティングテーブル151b11の異常が発生しても、異常を検出して解消することができる。
【0107】
また、NSDエクスパンダについては、NSDエクスパンダのルーティングテーブルと、対応する配下エクスパンダ用ルーティングテーブルとの比較を行わないので、新たな装置の接続時における処理の負担の増加を抑制できる。
【0108】
また、SDエクスパンダについては、コントローラ111aが作成した配下エクスパンダ用ルーティングテーブルと比較して異常を検出し、NSDエクスパンダについては、配下エクスパンダ用ルーティングテーブルを設定するので、エクスパンダのモードに応じた処理を実行することで、新たな装置の接続時における処理の負担の増加を抑制できる。
【0109】
また、コントローラ111aは、配下に新たな装置が接続されたことを検出した場合に、SDエクスパンダのルーティングテーブルの比較を行うので、新たな装置の接続時にSDエクスパンダのルーティングテーブルの異常が発生しても、ルーティングテーブルの異常の継続を抑制できる。
【0110】
また、新たに装置が接続された場合に、配下のSDエクスパンダに設定されるべきルーティングテーブルを示す配下エクスパンダ用ルーティングテーブル111a22a〜111a22dを作成し、配下のエクスパンダと、対応する配下エクスパンダ用ルーティングテーブルとを比較することで、SDモードで動作するエクスパンダ151bのルーティングテーブル151b11の異常を解消し、エクスパンダ151bと新たに接続された記憶装置153eとのアクセスを可能にすることができる。
【0111】
[第2の実施の形態の変形例]
次に、第2の実施の形態の変形例を説明する。第2の実施の形態との差異を中心に説明し、同様の事項については説明を省略する。第2の実施の形態のストレージシステムは、ルーティングテーブル比較処理において、NSDエクスパンダについてもコントローラが有する配下エクスパンダ用ルーティングテーブルと比較し、NSDエクスパンダについても正常に設定されているか確認する点で、第2の実施の形態と異なる。
【0112】
図10および図11は、第2の実施の形態の変形例のルーティングテーブル比較処理を示す図である。第2の実施の形態の変形例では、制御回路111a1は、NSDエクスパンダに配下エクスパンダ用ルーティングテーブルを送信し、SDエクスパンダにDISCOVERを実行させることで、エクスパンダのルーティングテーブルを設定し、配下エクスパンダ用ルーティングテーブルとの比較結果に基づき、設定後に正しく設定されているか確認するルーティングテーブル比較処理を実行する。なお、上記のようにエクスパンダ151eのルーティングテーブルについては説明を省略する。以下では、図10および図11に示すルーティングテーブル比較処理をフローチャートのステップ番号に沿って説明する。
【0113】
[ステップS31]制御回路111a1は、配下のエクスパンダ151a〜151eのうちの未選択のエクスパンダから1つを選択する。
[ステップS32]制御回路111a1は、ステップS31で選択したエクスパンダがNSDエクスパンダであるか否かを判定する。NSDエクスパンダであれば(ステップS32 YES)、処理はステップS33に進められる。一方、SDエクスパンダであれば(ステップS32 NO)、処理はステップS34に進められる。
【0114】
[ステップS33]制御回路111a1は、ルーティングテーブル設定処理のステップS12で作成したメモリ111a2に記憶されている配下エクスパンダ用ルーティングテーブル111a22a〜111a22dのうち、NSDエクスパンダであるステップS31で選択したエクスパンダに対応する配下エクスパンダ用ルーティングテーブルを設定する。その後、処理はステップS34に進められる。
【0115】
[ステップS34]制御回路111a1は、SDエクスパンダであるステップS31で選択したエクスパンダに設定されているルーティングテーブルを取得する。
[ステップS35]制御回路111a1は、SDエクスパンダであるステップS31で選択したエクスパンダ151bのルーティングテーブル151b11と、エクスパンダ151bに設定されるべき接続情報を示す配下エクスパンダ用ルーティングテーブル111a22cとを比較する。
【0116】
[ステップS41]制御回路111a1は、ステップS35における比較結果は一致しているか否かを判定する。一致していれば(ステップS41 YES)、処理はルーティングテーブル設定処理に復帰する。一方、一致していなければ(ステップS41 NO)、処理はステップS42に進められる。
【0117】
[ステップS42]制御回路111a1は、ステップS31で選択したエクスパンダがNSDエクスパンダであるか否かを判定する。NSDエクスパンダであれば(ステップS42 YES)、処理はステップS44に進められる。一方、SDエクスパンダであれば(ステップS42 NO)、処理はステップS43に進められる。
【0118】
[ステップS43]制御回路111a1は、SDエクスパンダであるステップS31で選択したエクスパンダ151bに対して、ルーティングテーブル151b11をリセットさせてDISCOVERを実行させるリセット指示を送信する。これにより、エクスパンダ151bは、DISCOVERの実行により再びルーティングテーブル151b11の作成を行う。従って、エクスパンダ151bにより、エクスパンダ151bの配下のエクスパンダ151c〜151eのルーティングテーブルから接続情報が取得され、ルーティングテーブル151b11に新たに接続された記憶装置153eが設定される。これに基づき、エクスパンダ151bが記憶装置153eにアクセスすることが可能になる。その後、処理はルーティングテーブル設定処理に復帰する。
【0119】
[ステップS44]制御回路111a1は、ルーティングテーブル設定処理のステップS12で作成したメモリ111a2に記憶されている配下エクスパンダ用ルーティングテーブル111a22a〜111a22dのうち、NSDエクスパンダであるステップS31で選択したエクスパンダに対応する配下エクスパンダ用ルーティングテーブルを設定する。その後、処理はルーティングテーブル設定処理に復帰する。
【0120】
ここで、第2の実施の形態の変形例のルーティングテーブル比較処理では、制御回路111a1は、ステップS31において、SDエクスパンダとNSDエクスパンダとを区別せずに選択するが、これに限らず、NSDエクスパンダをすべて選択してからSDエクスパンダを選択してもよい。これにより、新たな装置の接続がNSDエクスパンダのルーティングテーブルに完全に反映された後にSDエクスパンダのルーティングテーブルの更新を実行させることができる。
【0121】
以上のような第2の実施の形態の変形例のストレージシステム100は、第2の実施の形態と同様の効果を有する。
また、NSDエクスパンダのルーティングテーブルを更新した後に、新たにNSDエクスパンダに設定されたルーティングテーブルと、最新のストレージシステム100に接続されている装置の状態を示すルーティングテーブルとを比較する。これにより、NSDモードで動作するエクスパンダ151bのルーティングテーブル151b11についても正常に設定されているか確認し、異常が検出された場合に再設定を行うことで、NSDエクスパンダのルーティングテーブルの異常を解消することができる。
【0122】
以上、開示の制御装置、ストレージシステムおよび制御方法を、図示の実施の形態に基づいて説明したが、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、開示の技術に他の任意の構成物や工程が付加されてもよい。また、開示の技術は前述した実施の形態のうちの任意の2以上の構成を組み合わせたものであってもよい。
【符号の説明】
【0123】
1 制御装置
1a 制御部
1b,2b,3b,4b 記憶部
1b1,2b1,3b1,4b1 接続情報
2,3,4 中継装置
5,6,7 記憶装置
【特許請求の範囲】
【請求項1】
中継装置のデータアクセスの中継により記憶装置にデータアクセスを行う制御装置であって、
自装置の配下に接続されている装置を示す第1の接続情報を記憶する記憶部と、
中継装置が作成した当該中継装置に接続されている装置を示す第2の接続情報を取得し、前記取得した第2の接続情報と前記記憶部に記憶されている第1の接続情報との比較を行い、比較結果に基づいて前記中継装置に対して前記第2の接続情報のリセット指示を送信する制御部と、
を有することを特徴とする制御装置。
【請求項2】
前記制御部は、前記第2の接続情報を作成する第1の中継装置に対しては、前記第2の接続情報を取得するとともに前記比較を行い、比較結果に基づいて前記第1の中継装置に対して第2の接続情報のリセット指示を送信し、前記第2の接続情報を作成しない第2の中継装置に対しては、前記第2の中継装置の接続状態に応じた接続情報を示す第3の接続情報を作成して前記記憶部に記憶させ、前記第2の中継装置に対して前記記憶部に記憶されている第3の接続情報を送信して設定させることを特徴とする請求項1記載の制御装置。
【請求項3】
前記制御部は、自装置の配下に新たに装置が接続された場合に、前記中継装置が作成した当該中継装置に接続されている装置を示す第2の接続情報を取得し、前記取得した第2の接続情報と前記記憶部に記憶されている第1の接続情報との比較を行い、比較結果に基づいて前記中継装置に対して前記リセット指示を送信することを特徴とする請求項1記載の制御装置。
【請求項4】
前記制御部は、前記中継装置の接続状態に応じた接続情報を示す第3の接続情報を作成して前記記憶部に記憶させ、前記第2の接続情報を取得し、前記取得した第2の接続情報と前記記憶部に記憶されている第3の接続情報との比較を行い、比較結果に基づいて前記中継装置に対して前記リセット指示を送信することを特徴とする請求項1記載の制御装置。
【請求項5】
前記制御部は、前記第2の中継装置に対しては、前記第3の接続情報を送信して設定させ、前記第2の中継装置に設定させた第3の接続情報を取得するとともに前記比較を行い、比較結果に基づいて前記第2の中継装置に対して前記第3の接続情報を送信して設定させることを特徴とする請求項2記載の制御装置。
【請求項6】
中継装置のデータアクセスの中継により制御装置が記憶装置にデータアクセスを行うストレージシステムであって、
自装置の配下に接続されている装置を示す第2の接続情報を記憶する第2の記憶部を有し、
前記第2の接続情報を作成して前記第2の記憶部に記憶させ、前記第2の記憶部に記憶させた第2の接続情報に基づいて他装置と接続する中継装置と、
自装置の配下に接続されている装置を示す第1の接続情報を記憶する第1の記憶部と、
前記第2の接続情報を取得し、前記取得した第2の接続情報と前記第1の記憶部に記憶されている第1の接続情報との比較を行い、比較結果に基づいて前記中継装置に対して前記第2の接続情報のリセット指示を送信する制御部と、
を有する制御装置と、
を有することを特徴とするストレージシステム。
【請求項7】
中継装置のデータアクセスの中継により記憶装置にデータアクセスを行う制御方法であって、
中継装置が作成した当該中継装置に接続されている装置を示す第2の接続情報を取得し、
前記取得した第2の接続情報と制御装置の配下に接続されている装置を示す第1の接続情報との比較を行い、
比較結果に基づいて前記中継装置に対して前記第2の接続情報のリセット指示を送信する、
ことを特徴とする制御方法。
【請求項1】
中継装置のデータアクセスの中継により記憶装置にデータアクセスを行う制御装置であって、
自装置の配下に接続されている装置を示す第1の接続情報を記憶する記憶部と、
中継装置が作成した当該中継装置に接続されている装置を示す第2の接続情報を取得し、前記取得した第2の接続情報と前記記憶部に記憶されている第1の接続情報との比較を行い、比較結果に基づいて前記中継装置に対して前記第2の接続情報のリセット指示を送信する制御部と、
を有することを特徴とする制御装置。
【請求項2】
前記制御部は、前記第2の接続情報を作成する第1の中継装置に対しては、前記第2の接続情報を取得するとともに前記比較を行い、比較結果に基づいて前記第1の中継装置に対して第2の接続情報のリセット指示を送信し、前記第2の接続情報を作成しない第2の中継装置に対しては、前記第2の中継装置の接続状態に応じた接続情報を示す第3の接続情報を作成して前記記憶部に記憶させ、前記第2の中継装置に対して前記記憶部に記憶されている第3の接続情報を送信して設定させることを特徴とする請求項1記載の制御装置。
【請求項3】
前記制御部は、自装置の配下に新たに装置が接続された場合に、前記中継装置が作成した当該中継装置に接続されている装置を示す第2の接続情報を取得し、前記取得した第2の接続情報と前記記憶部に記憶されている第1の接続情報との比較を行い、比較結果に基づいて前記中継装置に対して前記リセット指示を送信することを特徴とする請求項1記載の制御装置。
【請求項4】
前記制御部は、前記中継装置の接続状態に応じた接続情報を示す第3の接続情報を作成して前記記憶部に記憶させ、前記第2の接続情報を取得し、前記取得した第2の接続情報と前記記憶部に記憶されている第3の接続情報との比較を行い、比較結果に基づいて前記中継装置に対して前記リセット指示を送信することを特徴とする請求項1記載の制御装置。
【請求項5】
前記制御部は、前記第2の中継装置に対しては、前記第3の接続情報を送信して設定させ、前記第2の中継装置に設定させた第3の接続情報を取得するとともに前記比較を行い、比較結果に基づいて前記第2の中継装置に対して前記第3の接続情報を送信して設定させることを特徴とする請求項2記載の制御装置。
【請求項6】
中継装置のデータアクセスの中継により制御装置が記憶装置にデータアクセスを行うストレージシステムであって、
自装置の配下に接続されている装置を示す第2の接続情報を記憶する第2の記憶部を有し、
前記第2の接続情報を作成して前記第2の記憶部に記憶させ、前記第2の記憶部に記憶させた第2の接続情報に基づいて他装置と接続する中継装置と、
自装置の配下に接続されている装置を示す第1の接続情報を記憶する第1の記憶部と、
前記第2の接続情報を取得し、前記取得した第2の接続情報と前記第1の記憶部に記憶されている第1の接続情報との比較を行い、比較結果に基づいて前記中継装置に対して前記第2の接続情報のリセット指示を送信する制御部と、
を有する制御装置と、
を有することを特徴とするストレージシステム。
【請求項7】
中継装置のデータアクセスの中継により記憶装置にデータアクセスを行う制御方法であって、
中継装置が作成した当該中継装置に接続されている装置を示す第2の接続情報を取得し、
前記取得した第2の接続情報と制御装置の配下に接続されている装置を示す第1の接続情報との比較を行い、
比較結果に基づいて前記中継装置に対して前記第2の接続情報のリセット指示を送信する、
ことを特徴とする制御方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2012−212202(P2012−212202A)
【公開日】平成24年11月1日(2012.11.1)
【国際特許分類】
【出願番号】特願2011−76216(P2011−76216)
【出願日】平成23年3月30日(2011.3.30)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成24年11月1日(2012.11.1)
【国際特許分類】
【出願日】平成23年3月30日(2011.3.30)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]