(57)【特許請求の範囲】
【請求項１】
データを記憶する記憶装置と、前記記憶装置へのアクセス処理を制御する複数の制御部とを備えたストレージシステムにおいて、
前記各制御部は、
前記記憶装置に対するアクセスを中継する中継部と、
自身が属する制御部と他の制御部がともに正常である場合において、自身が属する制御部内の中継部を通る第１の経路または前記他の制御部内の中継部を通る第２の経路を選択し、選択した経路の中継部を介して前記記憶装置にアクセスするアクセス制御部と、
前記他の制御部での異常発生を検知したとき、前記他の制御部内の中継部が使用可能か否かを判断し、前記他の制御部内の中継部が使用可能である場合には、自身が属する制御部内のアクセス制御部から前記他の制御部内の中継部を通じて前記記憶装置にアクセスすることが可能な状態のまま、前記他の制御部内の少なくともアクセス制御部の動作が停止した部分動作状態に、前記他の制御部を遷移させる動作状態制御部と、
を有することを特徴とするストレージシステム。
【請求項２】
前記各制御部のアクセス制御部は、自身が属する制御部内の中継部および他の制御部内の中継部のうちどの中継部を通じて前記記憶装置にアクセスするかを、各中継部を通じて過去に前記記憶装置にアクセスした際のアクセス処理の異常検出状態に応じて選択することを特徴とする請求項１記載のストレージシステム。
【請求項３】
前記各制御部のアクセス制御部は、他の制御部内の中継部を通じて前記記憶装置にアクセスした際のアクセス処理の異常検出状態に応じて、当該他の制御部内の中継部を通じた前記記憶装置へのアクセスを禁止し、当該他の制御部が、当該他の制御部内のアクセス制御部および中継部がともに正常に動作する正常動作状態である場合より、当該他の制御部が前記部分動作状態である場合の方が、当該他の制御部内の中継部を通じた前記記憶装置へのアクセスを禁止するように判定する判定基準を厳しくすることを特徴とする請求項１または２記載のストレージシステム。
【請求項４】
データを記憶する記憶装置へのアクセス処理を制御する制御装置において、
前記記憶装置に対するアクセスを中継する中継部と、
自身が属する制御装置と他の制御装置がともに正常である場合において、自身が属する制御装置内の中継部を通る第１の経路または前記他の制御装置内の中継部を通る第２の経路を選択し、選択した経路の中継部を介して前記記憶装置にアクセスするアクセス制御部と、
前記他の制御装置での異常発生を検知したとき、前記他の制御装置内の中継部が使用可能か否かを判断し、前記他の制御装置内の中継部が使用可能である場合には、自身が属する制御装置内のアクセス制御部から前記他の制御装置内の中継部を通じて前記記憶装置にアクセスすることが可能な状態のまま、前記他の制御装置内の少なくともアクセス制御部の動作が停止した部分動作状態に、前記他の制御装置を遷移させる動作状態制御部と、
を有することを特徴とする制御装置。
【請求項５】
データを記憶する記憶装置と、前記記憶装置へのアクセス処理を制御する複数の制御部とを備えたストレージシステムにおける制御方法であって、
複数の制御部のうち一の制御部内のアクセス制御部が、前記一の制御部と他の制御部がともに正常である場合において、前記一の制御部内の中継部を通る第１の経路または前記他の制御部内の中継部を通る第２の経路を選択し、選択した経路の中継部を介して前記記憶装置にアクセスし、
前記一の制御部が備える動作状態制御部が、前記他の制御部での異常発生を検知したとき、前記他の制御部内の中継部が使用可能か否かを判断し、前記他の制御部内の中継部が使用可能である場合には、前記一の制御部内のアクセス制御部から前記他の制御部内の中継部を通じて前記記憶装置にアクセスすることが可能な状態のまま、少なくとも前記他の制御部内のアクセス制御部の動作が停止した部分動作状態に、前記他の制御部を遷移させる、
ことを特徴とする制御方法。
【請求項６】
データを記憶する記憶装置と、前記記憶装置へのアクセス処理を制御する複数の制御部とを備えたストレージシステムにおいて、
前記各制御部は、
前記記憶装置に対するアクセスを中継する中継部と、
自身が属する制御部内の中継部または他の制御部内の中継部を通じて前記記憶装置にアクセスするアクセス制御部と、
前記他の制御部での異常発生を検知したとき、異常発生を検知した前記他の制御部内の中継部が使用可能か否かを判断し、前記他の制御部内の中継部が使用可能である場合には、自身が属する制御部内のアクセス制御部から前記他の制御部内の中継部を通じて前記記憶装置にアクセスすることが可能な状態のまま、前記他の制御部内の少なくともアクセス制御部の動作が停止した部分動作状態に、前記他の制御部を遷移させる動作状態制御部と、
を有し、
前記各制御部のアクセス制御部は、他の制御部が、当該他の制御部内のアクセス制御部および中継部がともに正常に動作する正常動作状態であるときより、前記部分動作状態であるときに、自身が属する制御部内の中継部および当該他の制御部内の中継部のうち、当該他の制御部内の中継部を経由して前記記憶装置にアクセスする頻度を低くすることを特徴とするストレージシステム。
【請求項７】
前記各制御部は、前記アクセス制御部が前記記憶装置にアクセスする際に経由する中継部ごとに異常検出点数を記憶した点数記憶部を有し、
前記アクセス制御部は、前記記憶装置へのアクセスの際にアクセス処理の異常を検出するたびに、経由した中継部に対応する前記異常検出点数を増加させ、前記異常検出点数が大きい中継部ほど、前記記憶装置へアクセスする際にアクセス経路として使用する頻度を低くする、
ことを特徴とする請求項６記載のストレージシステム。
【請求項８】
データを記憶する記憶装置へのアクセス処理を制御する制御装置において、
前記記憶装置に対するアクセスを中継する中継部と、
自身が属する制御装置内の中継部または他の制御装置内の中継部を通じて前記記憶装置にアクセスするアクセス制御部と、
前記他の制御装置での異常発生を検知したとき、異常発生を検知した前記他の制御装置内の中継部が使用可能か否かを判断し、前記他の制御装置内の中継部が使用可能である場合には、自身が属する制御装置内のアクセス制御部から前記他の制御装置内の中継部を通じて前記記憶装置にアクセスすることが可能な状態のまま、前記他の制御装置内の少なくともアクセス制御部の動作が停止した部分動作状態に、前記他の制御装置を遷移させる動作状態制御部と、
を有し、
前記アクセス制御部は、前記他の制御装置が、前記他の制御装置内のアクセス制御部および中継部がともに正常に動作する正常動作状態であるときより、前記部分動作状態であるときに、自身が属する制御装置内の中継部および前記他の制御装置内の中継部のうち、前記他の制御装置内の中継部を経由して前記記憶装置にアクセスする頻度を低くすることを特徴とする制御装置。
【請求項９】
データを記憶する記憶装置と、前記記憶装置へのアクセス処理を制御する複数の制御部とを備えたストレージシステムにおける制御方法であって、
複数の制御部のうち一の制御部内のアクセス制御部が、前記一の制御部内の中継部または他の制御部内の中継部を通じて、前記記憶装置にアクセスし、
前記一の制御部が備える動作状態制御部が、前記他の制御部での異常発生を検知したとき、異常発生を検知した前記他の制御部内の中継部が使用可能か否かを判断し、前記他の制御部内の中継部が使用可能である場合には、前記一の制御部内のアクセス制御部から前記他の制御部内の中継部を通じて前記記憶装置にアクセスすることが可能な状態のまま、少なくとも前記他の制御部内のアクセス制御部の動作が停止した部分動作状態に、前記他の制御部を遷移させる、
処理を含み、
前記一の制御部内のアクセス制御部による前記記憶装置へのアクセス処理では、前記他の制御部が、前記他の制御部内のアクセス制御部および中継部がともに正常に動作する正常動作状態であるときより、前記部分動作状態であるときに、前記一の制御部内の中継部および前記他の制御部内の中継部のうち、前記他の制御部内の中継部を経由して前記記憶装置にアクセスする頻度を低くすることを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム、制御装置および制御方法に関する。
【背景技術】
【０００２】
近年、ＨＤＤ（Hard Disk Drive）などの大容量の記憶装置を複数用いたストレージシステムは、広く使用されている。一般的に、ストレージシステムには、複数の記憶装置と、これらの記憶装置に対するアクセスを制御する制御装置とが含まれる。また、制御装置を複数設けて、記憶装置へのアクセス経路を冗長化したストレージシステムもある。アクセス経路を冗長化することで、記憶装置へのアクセスの信頼性が向上する。
【０００３】
さらに、各制御装置が、自装置と記憶装置とを直接結ぶ第１のアクセス経路の他に、自装置と記憶装置との間に他の制御装置を介した第２のアクセス経路を備えるようにすることで、各制御装置と記憶装置とのアクセス経路を冗長化することができる。例えば、各制御装置が、記憶装置に対するアクセスを中継するＳＡＳ（Serial Attached SCSI，SCSI：Small Computer System Interface）エクスパンダを備える場合に、各制御装置が、自装置内のＳＡＳエクスパンダを通じて記憶装置にアクセスするアクセス経路と、他の制御装置が備えるＳＡＳエクスパンダを通じて記憶装置にアクセスするアクセス経路とを用いて、記憶装置にアクセスすることが考えられる。
【０００４】
なお、制御装置が冗長化されたストレージシステムの例として、各制御装置が有するディスクアダプタと複数の記憶装置のそれぞれとの間にルータを配置し、各ディスクアダプタと各記憶装置とを選択的に切り替えて通信可能にしたものがある。
【０００５】
また、複数の制御装置が外部の複数のＳＡＳエクスパンダを介して記憶装置にアクセスするシステムの例として、各制御装置および各ＳＡＳエクスパンダが複数の物理ポートを備えて２系統のポートグループに対応しており、制御装置−ＳＡＳエクスパンダ−記憶装置の間で、各物理ポートを組み合わせて冗長性を持つように接続されるものがある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−１５５３９２号公報
【特許文献２】特開２００６−７２６３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
制御装置を複数備えたストレージシステムでは、前述のように、各制御装置が、自装置と記憶装置とを直接結ぶ第１のアクセス経路の他に、自装置と記憶装置との間に他の制御装置を介した第２のアクセス経路を備えるようにすることで、各制御装置と記憶装置とのアクセス経路を冗長化することができる。このようなアクセス経路の冗長化により、記憶装置へのアクセスの信頼性が向上する。しかしながら、第２のアクセス経路上の制御装置に異常が発生すると、第２のアクセス経路は使用できない状態になり、アクセス経路が非冗長の状態になるという問題があった。アクセス経路が非冗長の状態になると、アクセスの信頼性が低い状態になるばかりでなく、記憶装置へのアクセスが第１のアクセス経路に集中し、記憶装置へのアクセス性能が低下してしまう。
【０００８】
本発明はこのような課題に鑑みてなされたものであり、記憶装置へのアクセスの信頼性が低下することを抑制したストレージシステム、制御装置および制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、データを記憶する記憶装置と、前記記憶装置へのアクセス処理を制御する複数の制御部とを備えたストレージシステムが提供される。このストレージシステムにおいて、前記各制御部は、前記記憶装置に対するアクセスを中継する中継部と、自身が属する制御部内の中継部または他の制御部内の中継部を通じて前記記憶装置にアクセスするアクセス制御部と、他の制御部での異常発生を検知したとき、異常発生を検知した前記他の制御部内の中継部が使用可能か否かを判断し、前記他の制御部内の中継部が使用可能である場合には、自身が属する制御部内のアクセス制御部から前記他の制御部内の中継部を通じて前記記憶装置にアクセスすることが可能な状態のまま、前記他の制御部内の少なくともアクセス制御部の動作が停止した部分動作状態に、前記他の制御部を遷移させる動作状態制御部と、を有する。
【００１０】
また、上記目的を達成するために、データを記憶する記憶装置へのアクセス処理を制御する制御装置が提供される。この制御装置は、前記記憶装置に対するアクセスを中継する中継部と、自身が属する制御装置内の中継部または他の制御装置内の中継部を通じて前記記憶装置にアクセスするアクセス制御部と、他の制御装置での異常発生を検知したとき、異常発生を検知した前記他の制御装置内の中継部が使用可能か否かを判断し、前記他の制御装置内の中継部が使用可能である場合には、自身が属する制御装置内のアクセス制御部から前記他の制御装置内の中継部を通じて前記記憶装置にアクセスすることが可能な状態のまま、前記他の制御装置内の少なくともアクセス制御部の動作が停止した部分動作状態に、前記他の制御装置を遷移させる動作状態制御部と、を有する。
【００１１】
さらに、上記目的を達成するために、上記のストレージシステムと同様の処理を行う制御方法が提供される。
【発明の効果】
【００１２】
上記のストレージシステム、制御装置および制御方法によれば、１つの制御部で異常が発生した場合に他の制御部から記憶装置へのアクセスの信頼性が低下することを抑制できる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態に係るストレージシステムの構成例を示す図である。
【図２】第２の実施の形態に係るストレージシステムの全体構成例を示す図である。
【図３】ストレージシステム内のＣＭのハードウェア構成例を示す図である。
【図４】管理端末のハードウェア構成例を示す図である。
【図５】ＣＭが備える処理機能の例を示すブロック図である。
【図６】ＣＭがＰ＿Ｓｔａｔｅ１であるときの電源供給状態を示す図である。
【図７】ＣＭがＰ＿Ｓｔａｔｅ２であるときの電源供給状態を示す図である。
【図８】一方のＣＭにおいて異常が発生した場合の動作を説明する図である。
【図９】ＩＯアクセス制御部による異常検出処理を示すフローチャートである。
【図１０】他方のＣＭにおける異常発生を検知したときの他方ＣＭ制御部の処理を示すフローチャートである。
【図１１】ＩＯＣの異常を検出したときのＳＡＳエクスパンダの処理を示すフローチャートである。
【図１２】電源状態がＰ＿Ｓｔａｔｅ２であるＣＭを取り外し可能にする処理を示すフローチャートである。
【図１３】第３の実施の形態のＩＯアクセス制御部による異常検出処理を示すフローチャートである。
【図１４】第４の実施の形態におけるＩＯアクセス制御部がアクセス経路を選択する際に参照するテーブルの例を示す図である。
【図１５】ＩＯアクセス制御部によるアクセス経路の使用比率決定処理を示すフローチャートである。
【図１６】第５の実施の形態におけるＩＯアクセス制御部によるアクセス経路の使用比率決定処理を示すフローチャートである。
【図１７】第６の実施の形態に係るストレージシステムの構成を示す図である。
【図１８】ＣＭに接続されたＤＥ内のＳＡＳエクスパンダの動作が停止した場合の動作を説明する第１の図である。
【図１９】ＣＭに接続されたＤＥ内のＳＡＳエクスパンダの動作が停止した場合の動作を説明する第２の図である。
【図２０】他方ＣＭ制御部によるＣＭ取り外し可否の判定処理を示すフローチャートである。
【図２１】ＣＭに接続されたＤＥ内のＳＡＳエクスパンダの動作が停止した場合の動作を説明する第３の図である。
【図２２】ＣＭに接続されたＤＥ内のＳＡＳエクスパンダの動作が停止した場合の動作を説明する第４の図である。
【発明を実施するための形態】
【００１４】
以下、実施の形態について図面を参照して詳細に説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係るストレージシステムの構成例を示す図である。
【００１５】
図１に示すストレージシステム１は、記憶装置１０と、複数の制御部とを有する。図１のストレージシステム１は、例として２つの制御部２０ａ，２０ｂを有しているが、３つ以上の制御部を有していてもよい。
【００１６】
記憶装置１０は、データを記憶する装置であり、例えば、複数のＨＤＤなどの記録媒体を内部に備える。制御部２０ａ，２０ｂは、記憶装置１０へのアクセス処理を制御する。制御部２０ａ，２０ｂは、例えば、図示しない上位装置からの記憶装置１０に対するアクセス要求に応じて、記憶装置１０にアクセスする。
【００１７】
例えば、制御部２０ａ，２０ｂは、それぞれ、記憶装置１０に記憶されたデータの読み出し要求を上位装置から受け付けると、読み出しを要求されたデータを記憶装置１０から読み出し、上位装置に送信する。あるいは、制御部２０ａ，２０ｂは、それぞれ、記憶装置１０へのデータの書き込み要求を上位装置から受け付けると、書き込みを要求されたデータを記憶装置１０に書き込む。また、制御部２０ａ，２０ｂは、記憶装置１０に記憶されたデータをキャッシュする機能を備えていてもよい。
【００１８】
ストレージシステム１内の各制御部は、同じ構成を有している。制御部２０ａは、アクセス制御部２１ａ、中継部２２ａおよび動作状態制御部２３ａを備えており、制御部２０ｂは、アクセス制御部２１ｂ、中継部２２ｂおよび動作状態制御部２３ｂを備えている。アクセス制御部２１ａとアクセス制御部２１ｂ、中継部２２ａと中継部２２ｂ、動作状態制御部２３ａと動作状態制御部２３ｂは、それぞれ同じ処理を実行可能とする。
【００１９】
各制御部内のアクセス制御部は、自身が属する制御部内の中継部、または、他の制御部内の中継部を通じて、記憶装置１０にアクセスする。各制御部内の中継部は、自身が属する制御部内のアクセス制御部から記憶装置１０へのアクセスを中継するとともに、他の制御部内のアクセス制御部から記憶装置１０へのアクセスを中継する。
【００２０】
図１の例では、アクセス制御部２１ａは、中継部２２ａを通じて記憶装置１０にアクセスすることも、中継部２２ｂを通じて記憶装置１０にアクセスすることも可能である。また、アクセス制御部２１ｂは、中継部２２ｂを通じて記憶装置１０にアクセスすることも、中継部２２ａを通じて記憶装置１０にアクセスすることも可能である。このように、アクセス制御部２１ａから記憶装置１０へのアクセス経路、および、アクセス制御部２１ｂから記憶装置１０へのアクセス経路のそれぞれが冗長化された構成により、記憶装置１０へのアクセスの信頼性が向上する。
【００２１】
各制御部内の動作状態制御部は、他の制御部での異常発生を検知したとき、他の制御部における異常発生箇所に応じて、他の制御部の動作状態を制御する機能を備える。通常動作状態の制御部内の動作状態制御部は、他の制御部での異常発生を検知したとき、異常発生を検知した他の制御部内の中継部が使用可能か否かを判断する。動作状態制御部は、異常発生を検知した他の制御部内の中継部が使用可能と判断した場合には、他の制御部を部分動作状態に遷移させる。動作状態制御部が他の制御部を部分動作状態に遷移させると、動作状態制御部が属する制御部内のアクセス制御部から他の制御部内の中継部を通じて記憶装置１０にアクセスすることが可能な状態のまま、他の制御部内の少なくともアクセス制御部の動作が停止する。
【００２２】
例えば、図１の上図は、制御部２０ａ，２０ｂがともに通常動作状態である場合を示す。この状態から、制御部２０ｂにおいて異常が発生すると、制御部２０ａの動作状態制御部２３ａは、制御部２０ｂでの異常発生を検知し、制御部２０ｂの中継部２２ｂが使用可能か否かを判断する。動作状態制御部２３ａは、中継部２２ｂが使用可能であると判断すると、図１の下図に示すように、制御部２０ｂを部分動作状態に遷移させる。
【００２３】
部分動作状態に遷移した制御部２０ｂでは、アクセス制御部２１ａから中継部２２ｂを通じて記憶装置１０にアクセスすることが可能な状態のまま、制御部２０ｂ内の少なくともアクセス制御部２１ｂの動作が停止する。また、部分動作状態に遷移した制御部２０ｂでは、動作状態制御部２３ｂの動作も停止してもよい。また、部分動作状態に遷移した制御部２０ｂでは、アクセス制御部２１ｂおよび動作状態制御部２３ｂへの電源供給が停止されてもよい。
【００２４】
制御部２０ｂが部分動作状態に遷移した状態では、制御部２０ｂから記憶装置１０に対してアクセスすることはできなくなるものの、制御部２０ｂ内の中継部２２ｂは制御部２０ａから使用可能な状態となる。このとき、制御部２０ａのアクセス制御部２１ａは、制御部２０ａ内の中継部２２ａだけでなく、制御部２０ｂ内の中継部２２ｂを通じて、記憶装置１０にアクセスすることが可能になる。すなわち、制御部２０ｂが部分動作状態に遷移した状態では、制御部２０ｂで異常が発生したにもかかわらず、制御部２０ａのアクセス制御部２１ａから記憶装置１０へのアクセス経路が冗長化された状態を維持でき、アクセス制御部２１ａから記憶装置１０へのアクセスの信頼性を維持できる。また、アクセス制御部２１ａと記憶装置１０との間で転送されるデータが中継部２２ａを介したアクセス経路に集中する事態も回避でき、制御部２０ａから記憶装置１０へのアクセス性能も維持できる。
【００２５】
また、制御部２０ｂ内の動作状態制御部２３ｂも、制御部２０ａの動作状態制御部２３ａと同様の処理を実行する。すなわち、動作状態制御部２３ｂは、制御部２０ａでの異常発生を検知すると、制御部２０ａの中継部２２ａが使用可能か否かを判断する。動作状態制御部２３ｂは、中継部２２ａが使用可能であると判断すると、制御部２０ａを、アクセス制御部２１ｂから中継部２２ａを通じて記憶装置１０にアクセスすることが可能な状態のまま、制御部２０ａ内の少なくともアクセス制御部２１ａの動作が停止した部分動作状態に遷移させる。これにより、制御部２０ａで異常が発生したにもかかわらず、アクセス制御部２１ｂから記憶装置１０へのアクセス経路は冗長化されたままになり、アクセス制御部２１ｂから記憶装置１０へのアクセスの信頼性を維持できる。
【００２６】
〔第２の実施の形態〕
次に、記憶装置へのアクセスを中継する中継部としてＳＡＳエクスパンダを用いたストレージシステムの構成例について説明する。図２は、第２の実施の形態に係るストレージシステムの全体構成例を示す図である。
【００２７】
図２に示すストレージシステム１００は、ストレージ装置として複数のＨＤＤを備える。ストレージシステム１００内のＤＥ（Drive Enclosure）２１０，２２０のそれぞれには、ストレージ装置を構成する複数のＨＤＤが格納されている。また、ストレージシステム１００は、ＤＥ２１０，２２０内のＨＤＤに対するアクセスを制御する２つのＣＭ（Controller Module）３００ａ，３００ｂを備えている。なお、ＤＥ２１０，２２０は、例えば、ストレージシステム１００の外部に設けられていてもよい。また、ストレージ装置としては、ＨＤＤに限らず、例えばＳＳＤ（Solid State Drive）などの他の種類のストレージ装置が使用されてもよい。
【００２８】
ストレージシステム１００には、ホスト装置１２０と管理端末１３０とが接続されている。ホスト装置１２０は、ユーザの操作に応じて、ストレージシステム１００内のＣＭ３００ａまたはＣＭ３００ｂに対して、ＤＥ２１０内のＨＤＤまたはＤＥ２２０内のＨＤＤへのアクセスを要求する。なお、ホスト装置１２０とＣＭ３００ａ，３００ｂとは、例えば、光ファイバを介して接続されている。
【００２９】
管理端末１３０は、管理者の操作に応じて、ストレージシステム１００の動作を管理する。例えば、管理端末１３０は、管理者の操作に応じて、ストレージシステム１００内のＣＭ３００ａ，３００ｂのそれぞれに対する電源投入や電源切断を要求することができる。なお、管理端末１３０とＣＭ３００ａ，３００ｂとは、例えば、ＬＡＮ（Local Area Network）ケーブルを介して接続されている。
【００３０】
ＣＭ３００ａ，３００ｂは、それぞれ、ホスト装置１２０からのアクセス要求に応じてＤＥ２１０，２２０内のＨＤＤへのアクセスを制御する。例えば、ＣＭ３００ａ，３００ｂは、それぞれ、ＨＤＤに記憶されたデータの読み出し要求をホスト装置１２０から受け付けると、読み出しを要求されたデータをＨＤＤから読み出し、ホスト装置１２０に送信する。あるいは、ＣＭ３００ａ，３００ｂは、それぞれ、ＨＤＤへのデータの書き込み要求をホスト装置１２０から受け付けると、書き込みを要求されたデータをＨＤＤに書き込む。
【００３１】
また、ＣＭ３００ａ，３００ｂは、ＤＥ２１０，２２０内のＨＤＤに記憶されたデータをキャッシュする機能を備える。また、ＣＭ３００ａとＣＭ３００ｂとは互いにデータを送受信でき、ＣＭ３００ａ，３００ｂは、例えば、他方のＣＭが保持するキャッシュデータのバックアップを互いに保持する。また、ＣＭ３００ａ，３００ｂは、他方のＣＭの電源状態を制御することも可能になっている。なお、ＣＭ３００ａ，３００ｂは、例えば、ＤＥ２１０，２２０内のＨＤＤに記憶されたデータをＲＡＩＤ（Redundant Arrays of Inexpensive Disks）によって管理してもよい。
【００３２】
図３は、ストレージシステム内のＣＭのハードウェア構成例を示す図である。
ＣＭ３００ａは、ＣＰＵ（Central Processing Unit）３０１ａ、ＲＡＭ（Random Access Memory）３０２ａ、ＰＣＩ（Peripheral Component Interconnect）スイッチ３０３ａ、ＣＡ（Channel Adapter）３０４ａ，３０５ａ、ＩＯＣ（In/Out Controller）３０６ａ、ＳＡＳエクスパンダ３０７ａ、ＰＣＨ（Platform Controller Hub）３０８ａ、ＳＳＤ３０９ａ、ＬＡＮインタフェース３１０ａ、ＦＰＧＡ（Field Programmable Gate Array）３１１ａ、ＮＶＲＡＭ（Non Volatile RAM）３１２ａ、ＬＥＤ（Light Emitting Diode）３１３ａおよびＰＳＵ（Power Supply Unit）３１４ａを備えている。
【００３３】
また、ＣＭ３００ｂは、ＣＭ３００ａと同じハードウェア構成によって実現される。すなわち、ＣＭ３００ｂ内のＣＰＵ３０１ｂ、ＲＡＭ３０２ｂ、ＰＣＩスイッチ３０３ｂ、ＣＡ３０４ｂ，３０５ｂ、ＩＯＣ３０６ｂ、ＳＡＳエクスパンダ３０７ｂ、ＰＣＨ３０８ｂ、ＳＳＤ３０９ｂ、ＬＡＮインタフェース３１０ｂ、ＦＰＧＡ３１１ｂ、ＮＶＲＡＭ３１２ｂ、ＬＥＤ３１３ｂおよびＰＳＵ３１４ｂは、ＣＭ３００ａ内のＣＰＵ３０１ａ、ＲＡＭ３０２ａ、ＰＣＩスイッチ３０３ａ、ＣＡ３０４ａ，３０５ａ、ＩＯＣ３０６ａ、ＳＡＳエクスパンダ３０７ａ、ＰＣＨ３０８ａ、ＳＳＤ３０９ａ、ＬＡＮインタフェース３１０ａ、ＦＰＧＡ３１１ａ、ＮＶＲＡＭ３１２ａ、ＬＥＤ３１３ａおよびＰＳＵ３１４ａにそれぞれ対応する。そこで、ここでは基本的に、ＣＭ３００ａのハードウェア構成について説明し、ＣＭ３００ｂのハードウェア構成の説明については省略する。
【００３４】
ＣＰＵ３０１ａは、ＣＭ３００ａ全体を統括的に制御する。ＲＡＭ３０２ａは、ＣＭ３００ａの主記憶装置として使用され、ＣＰＵ３０１ａに実行させるプログラムの少なくとも一部や、このプログラムによる処理に必要な各種データを一時的に記憶する。また、ＲＡＭ３０２ａは、ＤＥ２１０，２２０内のＨＤＤに記憶されたデータのキャッシュ領域としても使用される。
【００３５】
ＰＣＩスイッチ３０３ａは、ＣＰＵ３０１ａと、ＣＡ３０４ａ，３０５ａおよびＩＯＣ３０６ａとの間で、データを送受信する。また、ＰＣＩスイッチ３０３ａは、他方のＣＭ３００ｂ内のＰＣＩスイッチ３０３ｂと接続されている。以下、ＰＣＩスイッチ３０３ａとＰＣＩスイッチ３０３ｂとの間の通信経路を「通信経路Ｐ１」と呼ぶ。
【００３６】
ＣＭ３００ａのＣＰＵ３０１ａと、ＣＭ３００ｂのＣＰＵ３０１ｂとは、通信経路Ｐ１を通じて通信できるようになっている。例えば、ＣＭ３００ａのＣＰＵ３０１ａは、他方のＣＭ３００ｂにおいて発生した異常の内容を示す異常検出情報を、ＣＭ３００ｂのＣＰＵ３０１ｂから通信経路Ｐ１を通じて取得することができる。また、例えば、ＣＰＵ３０１ａ，３０１ｂは、ＲＡＭ３０２ａ，３０２ｂにそれぞれ記憶されたＨＤＤのキャッシュデータを、通信経路Ｐ１を通じて他方のＣＭのＣＰＵに送信し、他方のＣＭ内のＲＡＭにキャッシュデータをバックアップするように依頼することもできる。
【００３７】
ＣＡ３０４ａ，３０５ａは、ホスト装置１２０とＣＭ３００ａとの間でデータを送受信するインタフェース処理を実行する。なお、ＣＡ３０４ａ，３０５ａを、それぞれ個別の光ファイバケーブルを介してホスト装置１２０に接続することにより、ＣＭ３００ａとホスト装置１２０との間の通信経路が冗長化され、通信の信頼性を向上させることができる。
【００３８】
ＩＯＣ３０６ａは、ＳＡＳデバイスであるＤＥ２１０，２２０内のＨＤＤとの間のインタフェース処理を実行する制御回路（ＳＡＳコントローラ）である。また、ＳＡＳエクスパンダ３０７ａは、ＳＡＳコントローラとＳＡＳデバイスとの間でデータを中継する。なお、ＳＡＳエクスパンダ３０７ａは、内部にメモリを備え、ＣＭ３００ａの電源状態を示す情報を内部のメモリに保持する。
【００３９】
ここで、ＣＭ３００ａのＩＯＣ３０６ａは、ＣＭ３００ａのＳＡＳエクスパンダ３０７ａを通じてＤＥ２１０，２２０と接続されている。これとともに、ＣＭ３００ａのＩＯＣ３０６ａは、ＣＭ３００ｂ内のＳＡＳエクスパンダ３０７ｂを通じてＤＥ２１０，２２０と接続されている。このように、ＩＯＣ３０６ａとＤＥ２１０，２２０とが２つのＳＡＳエクスパンダ３０７ａ，３０７ｂを通じて接続されることで、ＩＯＣ３０６ａからＤＥ２１０，２２０へのアクセス経路が冗長化されている。
【００４０】
同様に、ＣＭ３００ｂのＩＯＣ３０６ｂは、ＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂを通じてＤＥ２１０，２２０と接続されている。これとともに、ＣＭ３００ｂのＩＯＣ３０６ｂは、ＣＭ３００ａ内のＳＡＳエクスパンダ３０７ａを通じてＤＥ２１０，２２０と接続されている。このように、ＩＯＣ３０６ｂとＤＥ２１０，２２０とが２つのＳＡＳエクスパンダ３０７ａ，３０７ｂを通じて接続されることで、ＩＯＣ３０６ｂからＤＥ２１０，２２０へのアクセス経路も冗長化されている。
【００４１】
なお、以下の説明では、ＩＯＣ３０６ａからＳＡＳエクスパンダ３０７ａを通じてＤＥ２１０，２２０へアクセスする経路と、ＩＯＣ３０６ｂからＳＡＳエクスパンダ３０７ｂを通じてＤＥ２１０，２２０へアクセスする経路を、「ストレート経路」と呼ぶ。また、ＩＯＣ３０６ａからＳＡＳエクスパンダ３０７ｂを通じてＤＥ２１０，２２０へアクセスする経路と、ＩＯＣ３０６ｂからＳＡＳエクスパンダ３０７ａを通じてＤＥ２１０，２２０へアクセスする経路を、「クロス経路」と呼ぶ。
【００４２】
ＰＣＨ３０８ａは、ＣＰＵ３０１ａと、ＳＳＤ３０９ａ、ＬＡＮインタフェース３１０ａおよびＦＰＧＡ３１１ａとの間で、データを送受信する。
ＳＳＤ３０９ａは、ＣＭ３００ａの二次記憶装置として使用され、ＣＰＵ３０１ａにより実行されるプログラムやその実行に必要な各種のデータなどを記憶する。なお、二次記憶装置としては、例えば、ＨＤＤなどの他の種類の不揮発性記憶装置が使用されてもよい。
【００４３】
ＬＡＮインタフェース３１０ａは、ＬＡＮケーブルを介して管理端末１３０と接続し、管理端末１３０との間でデータを送受信する。
ＦＰＧＡ３１１ａは、ＣＭ３００ａ内のハードウェアの状態を監視する機能を備える。ＦＰＧＡ３１１ａは、ＣＭ３００ａ内のハードウェアの異常を検出すると、検出した異常の内容を示す異常検出情報をＣＰＵ３０１ａに通知する。また、ＦＰＧＡ３１１ａは、異常検出情報をＮＶＲＡＭ３１２ａに保存する。さらに、ＦＰＧＡ３１１ａは、ＣＰＵ３０１ａによってプログラム実行時の異常が検出された場合、検出された異常の内容を示す異常検出情報をＣＰＵ３０１ａから受信し、受信した異常検出情報をＮＶＲＡＭ３１２ａに保存する。また、ＦＰＧＡ３１１ａは、ＣＰＵ３０１ａからの要求、またはＣＭ３００ｂのＦＰＧＡ３１１ｂからの要求に応じて、ＮＶＲＡＭ３１２ａに保存した異常検出情報をＣＭ３００ｂのＦＰＧＡ３１１ｂに送信することもできる。
【００４４】
また、ＦＰＧＡ３１１ａは、ＣＭ３００ａの電源状態を制御する機能を備える。ＦＰＧＡ３１１ａは、ＣＰＵ３０１ａからの要求、またはＣＭ３００ｂのＦＰＧＡ３１１ｂからの要求に応じて、ＰＳＵ３１４ａを制御し、ＣＭ３００ａの電源状態を所定の状態に遷移させる。
【００４５】
さらに、ＦＰＧＡ３１１ａは、ＣＭ３００ｂのＦＰＧＡ３１１ｂと通信する機能を備える。以下、ＦＰＧＡ３１１ａとＦＰＧＡ３１１ｂとの間の通信経路を、「通信経路Ｐ２」と呼ぶ。ＦＰＧＡ３１１ａは、例えば、ＣＰＵ３０１ａからの要求に応じて、ＣＭ３００ｂの電源状態を所定の状態に遷移させるように、通信経路Ｐ２を通じてＣＭ３００ｂのＦＰＧＡ３１１ｂに要求する。
【００４６】
なお、ＦＰＧＡ３１１ａが実行する処理は、例えば、マイクロコンピュータなどの他の種類の制御回路によって実行されてもよい。
ＮＶＲＡＭ３１２ａは、ＦＰＧＡ３１１ａでの処理に必要な各種のデータを記憶する不揮発性メモリである。また、ＮＶＲＡＭ３１２ａには、ＣＭ３００ａにおいて検出された異常の内容を示す異常検出情報が、ＦＰＧＡ３１１ａによって格納される。
【００４７】
ＬＥＤ３１３ａは、ＣＭ３００ａに異常が発生したことを示す表示手段である。ＬＥＤ３１３ａの点灯動作は、ＦＰＧＡ３１１ａによって制御される。後述するように、ＣＭ３００ａに異常が発生した場合の電源状態は２種類あり、ＬＥＤ３１３ａは、ＦＰＧＡ３１１ａの制御の下で、これらの２種類の電源状態を区別して表示する。
【００４８】
ＰＳＵ３１４ａは、ＦＰＧＡ３１１ａの制御の下で、ＣＭ３００ａの内部に電源を供給する電源回路である。ＰＳＵ３１４ａからの電源の供給先は、ＦＰＧＡ３１１ａから指定されるＣＭ３００ａの電源状態に応じて決定される。
【００４９】
図４は、管理端末のハードウェア構成例を示す図である。
管理端末１３０は、図４に示すようなコンピュータとして実現される。このコンピュータは、ＣＰＵ１３１によって装置全体が制御されている。ＣＰＵ１３１には、バス１３８を介して、ＲＡＭ１３２と複数の周辺機器が接続されている。
【００５０】
ＲＡＭ１３２は、コンピュータの主記憶装置として使用される。ＲＡＭ１３２には、ＣＰＵ１３１に実行させるプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１３２には、ＣＰＵ１３１による処理に必要な各種データが格納される。
【００５１】
バス１３８に接続されている周辺機器としては、ＨＤＤ１３３、グラフィック処理装置１３４、入力インタフェース１３５、光学ドライブ装置１３６および通信インタフェース１３７がある。
【００５２】
ＨＤＤ１３３は、コンピュータの二次記憶装置として使用される。ＨＤＤ１３３には、ＣＰＵ１３１が実行するプログラムや、各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【００５３】
グラフィック処理装置１３４には、モニタ１３４ａが接続されている。グラフィック処理装置１３４は、ＣＰＵ１３１からの命令に従って、画像をモニタ１３４ａの画面に表示させる。モニタ１３４ａとしては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００５４】
入力インタフェース１３５には、例えば、キーボード１３５ａとマウス１３５ｂとが接続されている。入力インタフェース１３５は、キーボード１３５ａやマウス１３５ｂから送られてくる信号をＣＰＵ１３１に送信する。マウス１３５ｂは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００５５】
光学ドライブ装置１３６は、レーザ光などを利用して、光ディスク１３６ａに記録されたデータの読み取りを行う。光ディスク１３６ａは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク１０６ａには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００５６】
通信インタフェース１３７は、ＣＭ３００ａ，３００ｂとの間でＬＡＮケーブルを介してデータを送受信する。
なお、ホスト装置１２０についても、図４と同様のハードウェア構成によって実現できる。ただし、ホスト装置１２０が備える通信インタフェースは、ＣＭ３００ａ，３００ｂとの間で光ファイバを介してデータを送受信する。
【００５７】
図５は、ＣＭが備える処理機能の例を示すブロック図である。
ＣＭ３００ａは、ＩＯアクセス制御部３３１ａ、異常検出部３３２ａ、他方ＣＭ制御部３３３ａ、ハードウェア監視部３４１ａおよび電源制御部３４２ａを備えている。これらのうち、ＩＯアクセス制御部３３１ａ、異常検出部３３２ａおよび他方ＣＭ制御部３３３ａの処理は、ＣＰＵ３０１ａが所定のプログラムを実行することで実現される。また、ハードウェア監視部３４１ａおよび電源制御部３４２ａの処理は、ＦＰＧＡ３１１ａによって実現される。
【００５８】
ＣＭ３００ｂは、ＣＭ３００ａと同様の処理機能を備える。すなわち、ＣＭ３００ｂが備えるＩＯアクセス制御部３３１ｂ、異常検出部３３２ｂ、他方ＣＭ制御部３３３ｂ、ハードウェア監視部３４１ｂおよび電源制御部３４２ｂは、ＣＭ３００ａが備えるＩＯアクセス制御部３３１ａ、異常検出部３３２ａ、他方ＣＭ制御部３３３ａ、ハードウェア監視部３４１ａおよび電源制御部３４２ａにそれぞれ対応する。従って、ここでは基本的に、ＣＭ３００ａが備える処理機能について説明し、ＣＭ３００ｂが備える処理機能の説明については省略する。
【００５９】
なお、ＣＭ３００ａ内の処理機能と同様に、ＣＭ３００ｂ内のＩＯアクセス制御部３３１ｂ、異常検出部３３２ｂおよび他方ＣＭ制御部３３３ｂの処理は、ＣＰＵ３０１ｂが所定のプログラムを実行することで実現される。また、ＣＭ３００ｂ内のハードウェア監視部３４１ｂおよび電源制御部３４２ｂの処理は、ＦＰＧＡ３１１ｂによって実現される。
【００６０】
ＩＯアクセス制御部３３１ａは、ＤＥ２１０，２２０内のＨＤＤに対するアクセスを制御する。ＩＯアクセス制御部３３１ａは、ホスト装置１２０から発せられた、ＤＥ２１０内のＨＤＤまたはＤＥ２２０内のＨＤＤに対するアクセス要求を、ＣＡ３０４ａまたはＣＡ３０５ａから受け付け、ＩＯＣ３０６ａと、ＳＡＳエクスパンダ３０７ａまたはＳＡＳエクスパンダ３０７ｂとを通じて、ＤＥ２１０内のＨＤＤまたはＤＥ２２０内のＨＤＤにアクセスする。
【００６１】
また、ＩＯアクセス制御部３３１ａは、ＤＥ２１０，２２０へのアクセス時に、ＩＯＣ３０６ａに対して、ストレート経路とクロス経路のどちらを利用してＤＥ２１０，２２０にアクセスするかを指定する。ＩＯアクセス制御部３３１ａは、ＤＥ２１０，２２０へのアクセスの際に、ＲＡＭ３０２ａに記憶したエクスパンダ状態情報３６１ａおよび他方エクスパンダ状態情報３６２ａに基づいて、ストレート経路とクロス経路のどちらを利用してＤＥ２１０，２２０にアクセスするかを決定する。
【００６２】
エクスパンダ状態情報３６１ａは、ＣＭ３００ａのＳＡＳエクスパンダ３０７ａの状態を示す情報であり、他方エクスパンダ状態情報３６２ａは、他方のＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂの状態を示す情報である。エクスパンダ状態情報３６１ａおよび他方エクスパンダ状態情報３６２ａは、ともに、ＳＡＳエクスパンダが使用可能状態であることを示す「Ｎｏｒｍａｌ」、ＳＡＳエクスパンダが使用不能状態であることを示す「Ｆａｕｌｔ」の２種類の値をとる。
【００６３】
ＩＯアクセス制御部３３１ａは、エクスパンダ状態情報３６１ａおよび他方エクスパンダ状態情報３６２ａのうち「Ｎｏｒｍａｌ」である状態情報に対応するＳＡＳエクスパンダを経由する経路を利用して、ＤＥ２１０，２２０にアクセスする。例えば、ＩＯアクセス制御部３３１ａは、エクスパンダ状態情報３６１ａが「Ｎｏｒｍａｌ」であり、他方エクスパンダ状態情報３６２ａが「Ｆａｕｌｔ」である場合には、ストレート経路を利用してＤＥ２１０，２２０にアクセスする。また、ＩＯアクセス制御部３３１ａは、他方エクスパンダ状態情報３６２ａが「Ｎｏｒｍａｌ」であり、エクスパンダ状態情報３６１ａが「Ｆａｕｌｔ」である場合には、クロス経路を利用してＤＥ２１０，２２０にアクセスする。
【００６４】
また、ＩＯアクセス制御部３３１ａは、エクスパンダ状態情報３６１ａおよび他方エクスパンダ状態情報３６２ａの両方が「Ｎｏｒｍａｌ」である場合は、通常、ストレート経路とクロス経路のそれぞれにおける通信負荷ができるだけ均等になるように、ストレート経路とクロス経路のどちらかを利用してＤＥ２１０，２２０にアクセスする。なお、ＩＯアクセス制御部３３１ａは、例えば、ストレート経路およびクロス経路の使用率をそれぞれ５０％とする（例えば、ストレート経路とクロス経路のそれぞれを交互に使用してＤＥ２１０，２２０にアクセスする）ことにより、ストレート経路とクロス経路のそれぞれにおける通信負荷を略均等にすることができる。あるいは、ＩＯアクセス制御部３３１ａは、例えば、ＩＯＣ３０６ａまたはＳＡＳエクスパンダ３０７ａ，３０７ｂから、ストレート経路とクロス経路のそれぞれにおける単位時間当たりの通信量の通知を受け、通知された各通信量が均等になるように、ストレート経路とクロス経路のうちどちらかを選択してもよい。
【００６５】
また、ＩＯアクセス制御部３３１ａは、ストレート経路において所定回数以上正常なアクセスができなかった場合には、エクスパンダ状態情報３６１ａを「Ｆａｕｌｔ」に更新するとともに、ストレート経路を用いた通信において異常が発生したことを異常検出部３３２ａに通知する。また、ＩＯアクセス制御部３３１ａは、クロス経路において所定回数以上正常なアクセスができなかった場合には、他方エクスパンダ状態情報３６２ａを「Ｆａｕｌｔ」に更新するとともに、クロス経路を用いた通信において異常が発生したことを他方ＣＭ制御部３３３ａに通知する。
【００６６】
異常検出部３３２ａは、ＣＭ３００ａにおける異常の発生を検出すると、検出した異常の内容を示す異常検出情報３５１ａを生成し、異常検出情報３５１ａをハードウェア監視部３４１ａを通じてＮＶＲＡＭ３１２ａに格納する。異常検出情報３５１ａは、例えば、異常の発生箇所、異常が検出された処理内容などのうち少なくとも１つを識別可能なコードとして記述される。異常検出部３３２ａは、例えば、ＣＰＵ３０１ａによるプログラムの実行時の異常を自ら検出する機能を備える。また、異常検出部３３２ａは、ＣＭ３００ａ内のハードウェアの異常については、ハードウェア監視部３４１ａからの通知に基づいて検出する。さらに、異常検出部３３２ａは、ストレート経路を用いた通信の異常については、ＩＯアクセス制御部３３１ａからの通知に基づいて検出する。
【００６７】
異常検出部３３２ａは、ＣＭ３００ａにおける異常の発生を検出すると、異常検出情報３５１ａを生成してＮＶＲＡＭ３１２ａに格納するとともに、異常検出情報３５１ａを、通信経路Ｐ１を通じてＣＭ３００ｂの他方ＣＭ制御部３３３ｂに送信する。また、異常検出部３３２ａは、ＣＭ３００ａにおける異常の発生を検出したとき、検出した異常の内容がＣＭ３００ａのＳＡＳエクスパンダ３０７ａの動作に関係するものである場合には、エクスパンダ状態情報３６１ａを「Ｆａｕｌｔ」に更新する。
【００６８】
他方ＣＭ制御部３３３ａは、他方のＣＭ３００ｂにおいて異常が発生すると、ＣＭ３００ｂにおいて発生した異常の種別を判断し、その判断結果に応じて、ＣＭ３００ｂを所定の電源状態に遷移させる。他方ＣＭ制御部３３３ａは、例えば、ＣＭ３００ｂの異常検出部３３２ｂから通知される、ＣＭ３００ｂで検出された異常の内容を示す異常検出情報３５１ｂに基づいて、ＣＭ３００ｂにおいて発生した異常の種別を判断する。また、他方ＣＭ制御部３３３ａは、通信経路Ｐ１を通じてＣＭ３００ｂのＣＰＵ３０１ｂと通信できない場合には、ＣＭ３００ｂのＮＶＲＡＭ３１２ｂに格納された異常検出情報３５１ｂを、通信経路Ｐ２を通じて取得することもできる。この場合、他方ＣＭ制御部３３３ａは、ハードウェア監視部３４１ａに対して、ＣＭ３００ｂのＮＶＲＡＭ３１２ｂに格納された異常検出情報３５１ｂを取得するように要求する。
【００６９】
さらに、他方ＣＭ制御部３３３ａは、他方のＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂの電源状態および稼働状態を認識し、認識した各状態を異常の種別の判断に利用する。ＳＡＳエクスパンダ３０７ｂの電源状態とは、ＳＡＳエクスパンダ３０７ｂに電源が投入されているか否かを示す情報であり、ＳＡＳエクスパンダ３０７ｂの稼働状態とは、ＳＡＳエクスパンダ３０７ｂが正常に稼働しているか否かを示す情報である。
【００７０】
他方ＣＭ制御部３３３ａは、ＳＡＳエクスパンダ３０７ｂの電源状態および稼働状態を、クロス経路（すなわち、ＣＭ３００ａのＩＯＣ３０６ａとＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂとを接続する経路）を通じて取得する。また、他方ＣＭ制御部３３３ａは、ＳＡＳエクスパンダ３０７ｂの電源状態および稼働状態を、通信経路Ｐ２を通じて取得することもできる。後者の場合、他方ＣＭ制御部３３３ａは、例えば、ハードウェア監視部３４１ａに対して、ＳＡＳエクスパンダ３０７ｂの電源状態および稼働状態をＣＭ３００ｂのハードウェア監視部３４１ｂから取得するように要求する。
【００７１】
他方ＣＭ制御部３３３ａは、ＣＭ３００ｂにおいて発生した異常の種別の判断結果に応じて、ＣＭ３００ｂを所定の電源状態に遷移させるように、電源制御部３４２ａに要求する。このとき、電源制御部３４２ａは、ＣＭ３００ｂの電源制御部３４２ｂと通信経路Ｐ２を通じて通信し、他方ＣＭ制御部３３３ａから要求された電源状態にＣＭ３００ｂを遷移させるように、電源制御部３４２ｂに対して要求する。なお、ＲＡＭ３０２ａには、他方のＣＭ３００ｂにおける電源状態を示す他方ＣＭ状態情報３７１ａが記憶され、他方ＣＭ制御部３３３ａは、ＣＭ３００ｂの電源状態を異なる状態に遷移させるたびに、他方ＣＭ状態情報３７１ａを、ＣＭ３００ｂにおける遷移後の電源状態を示すように更新する。
【００７２】
他方ＣＭ制御部３３３ａは、異常の種別の判断の結果、発生した異常がＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂの動作に関係するものである場合には、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ１に遷移させる。このとき、他方ＣＭ制御部３３３ａは、他方エクスパンダ状態情報３６２ａを「Ｆａｕｌｔ」に更新する。一方、他方ＣＭ制御部３３３ａは、異常の種別の判断の結果、発生した異常がＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂの動作に関係しないものである場合には、ＣＭ３００ｂの電源状態を後述するＰ＿Ｓｔａｔｅ２に遷移させる。なお、Ｐ＿Ｓｔａｔｅ１は、ＣＭ３００ｂを介したＤＥ２１０，２２０へのアクセスができないようにＣＭ３００ｂ内のハードウェアへの電源供給を停止した電源状態である。また、Ｐ＿Ｓｔａｔｅ２は、ＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂを通じたＤＥ２１０，２２０へのアクセスを可能にしたまま、ＣＭ３００ｂ内のハードウェアへの電源供給を停止した電源状態である。
【００７３】
ハードウェア監視部３４１ａは、ＣＭ３００ａ内の各ハードウェアの動作を監視し、異常の発生を検出する。ハードウェア監視部３４１ａは、ＣＭ３００ａのハードウェアにおける異常発生を検出すると、異常が発生したハードウェアを示す情報を異常検出部３３２ａに通知する。この場合、ハードウェア監視部３４１ａは、異常検出部３３２ａによって生成された異常検出情報３５１ａを異常検出部３３２ａから受信し、異常検出情報３５１ａをＮＶＲＡＭ３１２ａに格納する。また、ハードウェア監視部３４１ａは、ＣＭ３００ａのハードウェアにおける異常発生を検出したとき、異常検出部３３２ａが動作していない場合（すなわち、ＣＰＵ３０１ａの動作が停止している場合）には、自ら異常検出情報３５１ａを生成して、ＮＶＲＡＭ３１２ａに格納する。
【００７４】
さらに、ハードウェア監視部３４１ａは、ＣＭ３００ｂのハードウェア監視部３４１ｂからの要求に応じて、ＮＶＲＡＭ３１２ａから異常検出情報３５１ａを読み出し、ハードウェア監視部３４１ｂに送信することもできる。また、ハードウェア監視部３４１ａは、他方ＣＭ制御部３３３ａからの要求に応じて、ＣＭ３００ｂのハードウェア監視部３４１ｂに対して、ＣＭ３００ｂのＮＶＲＡＭ３１２ｂに格納された異常検出情報３５１ｂの読み出しを要求することもできる。この場合、ハードウェア監視部３４１ａは、ＣＭ３００ｂによってＮＶＲＡＭ３１２ｂから読み出されて送信された異常検出情報３５１ｂを、他方ＣＭ制御部３３３ａに転送する。
【００７５】
電源制御部３４２ａは、ＰＳＵ３１４ａを制御して、ＣＭ３００ａを所定の電源状態に遷移させる。後述するように、ＣＭ３００ａは、電源状態として少なくともＰ＿Ｓｔａｔｅ１，２，３の３種類の状態をとり、電源状態ごとに、ＣＭ３００ａにおけるＰＳＵ３１４ａからの電源供給対象が異なる。電源制御部３４２ａは、ＣＭ３００ａの電源状態を、他方ＣＭ制御部３３３ａ、または、ＣＭ３００ｂの電源制御部３４２ｂからの要求に応じて遷移させる。
【００７６】
また、電源制御部３４２ａは、他方ＣＭ制御部３３３ａからの要求に応じて、ＣＭ３００ｂの電源状態を所定の状態に遷移させるように、ＣＭ３００ｂの電源制御部３４２ｂに要求することもできる。ＣＭ３００ｂについても、ＣＭ３００ａと同様に、電源状態として少なくともＰ＿Ｓｔａｔｅ１，２，３の３種類の状態をとる。
【００７７】
ここで、ＣＭがとり得る電源状態について説明する。以下の図６，図７では、例として、ＣＭ３００ｂにおける電源状態について説明するが、ＣＭ３００ａも同様の電源状態をとる。また、図６，図７では、電源供給が停止されて動作停止状態にあるハードウェアブロックを点線で示すとともに、ハードウェアブロックの動作停止に伴って信号の転送が不可能になった信号経路を点線矢印で示す。
【００７８】
図６は、ＣＭがＰ＿Ｓｔａｔｅ１であるときの電源供給状態を示す図である。
ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ１であるとき、ＣＭ３００ｂ内のＣＰＵ３０１ｂ、ＲＡＭ３０２ｂ、ＰＣＩスイッチ３０３ｂ、ＣＡ３０４ｂ，３０５ｂ、ＩＯＣ３０６ｂ、ＳＡＳエクスパンダ３０７ｂ、ＰＣＨ３０８ｂ、ＳＳＤ３０９ｂおよびＬＡＮインタフェース３１０ｂに対する、ＰＳＵ３１４ｂからの電源供給が停止される。一方、ＣＭ３００ｂ内のＦＰＧＡ３１１ｂおよびＬＥＤ３１３ｂに対しては、ＰＳＵ３１４ｂから電源が供給される。また、ＦＰＧＡ３１１ｂは、ＮＶＲＡＭ３１２ｂに対する読み書きを行うことも可能である。
【００７９】
ＣＭ３００ｂがＰ＿Ｓｔａｔｅ１になると、ＣＡ３０４ｂ，３０５ｂ、ＣＰＵ３０１ｂ、ＩＯＣ３０６ｂおよびＳＡＳエクスパンダ３０７ｂの動作が停止するため、ホスト装置１２０からＣＭ３００ｂを通じてＤＥ２１０，２２０にアクセスすることは不可能になる。また、他方のＣＭ３００ａがクロス経路（すなわち、ＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂを経由するアクセス経路）を通じてＤＥ２１０，２２０にアクセスすることも不可能になる。
【００８０】
また、ＣＭ３００ｂは、Ｐ＿Ｓｔａｔｅ１であるとき、ストレージシステム１００の筐体から取り外し可能な状態となる。図５に示したＦＰＧＡ３１１ｂの電源制御部３４２ｂは、ＣＭ３００ｂをＰ＿Ｓｔａｔｅ１に遷移させたとき、ＬＥＤ３１３ｂを点灯させて、ＣＭ３００ｂが取り外し可能な状態であることを表示する。
【００８１】
また、ＣＭ３００ｂがＰ＿Ｓｔａｔｅ１であるとき、ＦＰＧＡ３１１ｂの電源制御部３４２ｂは、他方のＣＭ３００ａからの通信経路Ｐ２を通じた要求に応じて、ＣＭ３００ｂを、通常運用状態であるＰ＿Ｓｔａｔｅ３に遷移させることもできる。図示しないが、Ｐ＿Ｓｔａｔｅ３では、ＣＭ３００ｂ内のすべてのハードウェアブロックに対してＰＳＵ３１４ｂからの電源が供給される。
【００８２】
図７は、ＣＭがＰ＿Ｓｔａｔｅ２であるときの電源供給状態を示す図である。
電源状態がＰ＿Ｓｔａｔｅ２であるＣＭ３００ｂにおいては、Ｐ＿Ｓｔａｔｅ１と比較すると、ＦＰＧＡ３１１ｂおよびＬＥＤ３１３ｂに加えて、ＳＡＳエクスパンダ３０７ｂに対しても、ＰＳＵ３１４ｂからの電源が供給される。ＣＭ３００ｂがＰ＿Ｓｔａｔｅ２になると、ＣＡ３０４ｂ，３０５ｂ、ＣＰＵ３０１ｂおよびＩＯＣ３０６ｂの動作が停止するため、ホスト装置１２０からＣＭ３００ｂを通じてＤＥ２１０，２２０にアクセスすることは不可能になる。しかしながら、ＳＡＳエクスパンダ３０７ｂは動作可能な状態になっているので、他方のＣＭ３００ａは、ＳＡＳエクスパンダ３０７ｂを経由したクロス経路を利用して、ＤＥ２１０，２２０にアクセスすることが可能になる。この場合、ＣＭ３００ａはストレート経路とクロス経路の２つの経路を選択的に利用してＤＥ２１０，２２０にアクセスすることが可能であり、ＣＭ３００ａからＤＥ２１０，２２０へのアクセス経路が冗長化された状態が維持される。
【００８３】
また、ＣＭ３００ｂがＰ＿Ｓｔａｔｅ２であるとき、図５に示したＦＰＧＡ３１１ｂの電源制御部３４２ｂは、他方のＣＭ３００ａからの通信経路Ｐ２を通じた要求に応じて、ＣＭ３００ｂを、Ｐ＿Ｓｔａｔｅ１またはＰ＿Ｓｔａｔｅ３に遷移させることもできる。
【００８４】
また、ＦＰＧＡ３１１ｂの電源制御部３４２ｂは、ＣＭ３００ｂをＰ＿Ｓｔａｔｅ２に遷移させたとき、ＬＥＤ３１３ｂを点滅させる。すなわち、ＬＥＤ３１３ｂは、Ｐ＿Ｓｔａｔｅ１であるかＰ＿Ｓｔａｔｅ２であるかを明確に視認できるような点灯動作を行う。ＣＭ３００ｂがＰ＿Ｓｔａｔｅ２であるときには、ＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂが他方のＣＭ３００ａによってＤＥ２１０，２２０へのアクセス経路として使用中の場合がある。このため、Ｐ＿Ｓｔａｔｅ２となっているＣＭ３００ｂをストレージシステム１００の筐体から取り外すことは、ＣＭ３００ｂが他方のＣＭ３００ａにおけるＤＥ２１０，２２０へのアクセス処理に影響が生じる場合があることから、好ましくない。そこで、ＣＭ３００ｂがＰ＿Ｓｔａｔｅ１でなくＰ＿Ｓｔａｔｅ２であることをＬＥＤ３１３ｂによって明示することで、ＣＭ３００ｂをすぐに取り外さないように保守作業者に警告できる。
【００８５】
なお、ＣＭ３００ａ，３００ｂがとり得る電源状態としては、他に、停電時に遷移する状態であるＰ＿Ｓｔａｔｅ４があってもよい。ＣＭ３００ｂについて説明すると、電源状態がＰ＿Ｓｔａｔｅ４であるＣＭ３００ｂにおいては、Ｐ＿Ｓｔａｔｅ１と比較すると、ＦＰＧＡ３１１ｂおよびＬＥＤ３１３ｂに加えて、ＣＰＵ３０１ｂ、ＲＡＭ３０２ｂ、ＰＣＨ３０８ｂおよびＳＳＤ３０９ｂに対しても電源が供給される。ただし、これらの各ハードウェアブロックに対しては、ストレージシステム１００の筐体内に設けられたバッテリ（例えば電気二重層コンデンサなど）からの電源が供給される。
【００８６】
Ｐ＿Ｓｔａｔｅ４に遷移したＣＭ３００ｂでは、ＣＰＵ３０１ｂの処理によって、ＲＡＭ３０２ｂに格納された、ＤＥ２１０，２２０内のＨＤＤのキャッシュデータが、ＳＳＤ３０９ｂに退避される。Ｐ＿Ｓｔａｔｅ４では、キャッシュデータの退避に必要最小限のハードウェアブロックに対してのみ電源が供給されることで、電池駆動時の電力消費量が抑制される。
【００８７】
次に、一方のＣＭで異常が発生した場合の処理について説明する。以下の説明では例として、ＣＭ３００ｂにおいて異常が発生したことを、ＣＭ３００ａが検知する場合の処理について説明する。
【００８８】
まず、図８は、一方のＣＭにおいて異常が発生した場合の動作を説明する図である。
ＣＭ３００ａの他方ＣＭ制御部３３３ａは、他方のＣＭ３００ｂにおける異常発生を検知すると、ＣＭ３００ｂから、異常検出情報３５１ｂ、エクスパンダ稼働状態情報３８１ｂおよびエクスパンダ電源状態情報３８２ｂを取得する。異常検出情報３５１ｂは、前述の通り、ＣＭ３００ｂにおいて発生した異常の内容を示す情報である。エクスパンダ稼働状態情報３８１ｂは、ＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂが稼働しているか否かを示す情報である。エクスパンダ電源状態情報３８２ｂは、ＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂに電源が投入されているか否かを示す情報である。
【００８９】
異常検出情報３５１ｂを他方ＣＭ制御部３３３ａが取得する経路は、複数用意されている。このように、異常検出情報３５１ｂの取得経路が複数用意されることで、他方ＣＭ制御部３３３ａは、ＣＭ３００ｂでの異常検出後もＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂを引き続き使用可能か否かを、確実に判断できるようになる。
【００９０】
他方ＣＭ制御部３３３ａは、異常検出情報３５１ｂを、通信経路Ｐ１，Ｐ２のうちの一方から取得することができる。例えば、異常検出部３３２ｂによってＣＭ３００ｂ内の異常が検出された場合、異常検出部３３２ｂは、異常検出情報３５１ｂを生成して、異常検出情報３５１ｂをハードウェア監視部３４１ｂを通じてＮＶＲＡＭ３１２ｂに格納する。また、異常検出部３３２ｂは、生成した異常検出情報３５１ｂを、通信経路Ｐ１を通じて他方のＣＭ３００ａ内の他方ＣＭ制御部３３３ａに通知する。異常検出部３３２ｂは、例えば、他方のＣＭ３００ａ内の他方ＣＭ制御部３３３ａに対して異常の発生を通知した後、他方ＣＭ制御部３３３ａからの要求に応じて、異常検出情報３５１ｂを他方ＣＭ制御部３３３ａに通知してもよい。なお、異常検出部３３２ｂは、ＮＶＲＡＭ３１２ｂに格納した異常検出情報３５１ｂを読み出して、他方のＣＭ３００ａ内の他方ＣＭ制御部３３３ａに通知してもよい。
【００９１】
ここで、異常検出部３３２ｂによる異常検出処理について説明する。異常検出部３３２ｂは、ＣＰＵ３０１ｂによるプログラムの実行時の異常を自ら検出する。また、異常検出部３３２ｂは、ＣＭ３００ｂ内のハードウェアの異常については、ハードウェア監視部３４１ｂからの通知に基づいて検出する。ハードウェア監視部３４１ｂは、ＣＭ３００ｂ内の各ハードウェアが正常に動作しているか否かを、例えば次のように検出する。ハードウェア監視部３４１ｂは、監視対象のハードウェアごとにウォッチドッグタイマを備える。ここで、例としてＳＡＳエクスパンダ３０７ｂにおける異常検出について説明すると、ＳＡＳエクスパンダ３０７ｂは、自身に対応するハードウェア監視部３４１ｂ内のウォッチドッグタイマを、定期的にリセットする。ハードウェア監視部３４１ｂは、ＳＡＳエクスパンダ３０７ｂに対応するウォッチドッグタイマが、ＳＡＳエクスパンダ３０７ｂによってリセットされずに所定の値までカウントアップされたとき、ＳＡＳエクスパンダ３０７ｂにおいて異常が発生したと判断し、ＳＡＳエクスパンダ３０７ｂにおける異常発生を異常検出部３３２ｂに通知する。
【００９２】
また、異常検出部３３２ｂは、ストレート経路を用いた通信の異常については、ＩＯアクセス制御部３３１ｂからの通知に基づいて検出する。ＩＯアクセス制御部３３１ｂは、ＳＡＳエクスパンダ３０７ｂを経由するストレート経路において所定回数以上正常なアクセスができなかった場合に、ストレート経路において異常が発生したと判断し、ストレート経路における異常発生を異常検出部３３２ｂに通知する。なお、ＩＯアクセス制御部による異常検出処理については、図９において詳しく説明する。
【００９３】
次に、ＣＭ３００ｂにおいて異常が発生したときに、ＣＰＵ３０１ｂの動作が停止している場合には、ＣＭ３００ａの他方ＣＭ制御部３３３ａは、ＣＭ３００ｂから通信経路Ｐ２を通じて異常検出情報３５１ｂを取得する。ＣＭ３００ｂのハードウェア監視部３４１ｂは、ハードウェアの異常を検出したとき、ＣＰＵ３０１ｂが動作してないために異常検出部３３２ｂと通信できない場合には、自ら異常検出情報３５１ｂを生成して、ＮＶＲＡＭ３１２ｂに格納する。
【００９４】
ＣＭ３００ａの他方ＣＭ制御部３３３ａは、例えば、ＣＭ３００ｂのＣＰＵ３０１ｂと通信経路Ｐ１を通じて定期的に通信しており、ＣＰＵ３０１ｂとの通信が断絶したとき、ＣＭ３００ｂに対して、通信経路Ｐ２を通じて、異常検出情報３５１ｂの通知を要求する。具体的には、他方ＣＭ制御部３３３ａは、ＣＰＵ３０１ｂとの通信が断絶することでＣＭ３００ｂでの異常発生を検知すると、ハードウェア監視部３４１ａに対してＣＭ３００ｂから異常検出情報３５１ｂを取得するように要求する。要求を受けたハードウェア監視部３４１ａは、通信経路Ｐ２を通じてＣＭ３００ｂのハードウェア監視部３４１ｂと通信し、ＮＶＲＡＭ３１２ｂに格納された異常検出情報３５１ｂの通知を要求する。要求を受けたハードウェア監視部３４１ｂは、ＮＶＲＡＭ３１２ｂから異常検出情報３５１ｂを読み出し、通信経路Ｐ２を通じてＣＭ３００ａのハードウェア監視部３４１ａに送信する。ハードウェア監視部３４１ａは、受信した異常検出情報３５１ｂを他方ＣＭ制御部３３３ａに転送する。
【００９５】
なお、他方ＣＭ制御部３３３ａは、ＩＯアクセス制御部３３１ａによってＳＡＳエクスパンダ３０７ｂを経由したクロス経路における異常の発生が検出されたとき、ＩＯアクセス制御部３３１ａから、他方のＣＭ３００ｂにおける異常発生の通知を受ける場合もある。このとき、他方ＣＭ制御部３３３ａは、ＣＭ３００ｂのＣＰＵ３０１ｂが動作状態であれば、ＣＭ３００ｂの異常検出部３３２ｂに対して異常検出情報３５１ｂの通知を要求する。また、ＣＭ３００ｂのＣＰＵ３０１ｂが動作状態でなければ、他方ＣＭ制御部３３３ａは、通信経路Ｐ２を通じて異常検出情報３５１ｂを取得すればよい。
【００９６】
次に、エクスパンダ稼働状態情報３８１ｂおよびエクスパンダ電源状態情報３８２ｂの取得経路について説明する。ＣＭ３００ａの他方ＣＭ制御部３３３ａは、エクスパンダ稼働状態情報３８１ｂおよびエクスパンダ電源状態情報３８２ｂを、通信経路Ｐ２を通じてＣＭ３００ｂから取得する。具体的には、他方ＣＭ制御部３３３ａは、ＣＭ３００ｂの異常を検知すると、ハードウェア監視部３４１ａに対して、ＣＭ３００ｂからエクスパンダ稼働状態情報３８１ｂおよびエクスパンダ電源状態情報３８２ｂを取得するように要求する。要求を受けたハードウェア監視部３４１ａは、通信経路Ｐ２を通じてＣＭ３００ｂのハードウェア監視部３４１ｂと通信し、エクスパンダ稼働状態情報３８１ｂおよびエクスパンダ電源状態情報３８２ｂの通知を要求する。
【００９７】
要求を受けたハードウェア監視部３４１ｂは、エクスパンダ稼働状態情報３８１ｂおよびエクスパンダ電源状態情報３８２ｂを生成する。例えば、ハードウェア監視部３４１ｂは、前述した、ＳＡＳエクスパンダ３０７ｂに対応するウォッチドッグタイマのカウント動作に基づいて、ＳＡＳエクスパンダ３０７ｂが稼働しているか否かを判定し、判定結果をエクスパンダ稼働状態情報３８１ｂに記述する。また、ハードウェア監視部３４１ｂは、電源制御部３４２ｂに対してＣＭ３００ｂの現在の電源状態を問い合わせ、電源制御部３４２ｂから返答された電源状態に基づいて、ＳＡＳエクスパンダ３０７ｂに電源が供給されているか否かを判定し、判定結果をエクスパンダ電源状態情報３８２ｂに記述する。
【００９８】
ハードウェア監視部３４１ｂは、上記手順により生成したエクスパンダ稼働状態情報３８１ｂおよびエクスパンダ電源状態情報３８２ｂを、通信経路Ｐ２を通じてＣＭ３００ａのハードウェア監視部３４１ａに送信する。ハードウェア監視部３４１ａは、受信したエクスパンダ稼働状態情報３８１ｂおよびエクスパンダ電源状態情報３８２ｂを、他方ＣＭ制御部３３３ａに転送する。
【００９９】
なお、他方ＣＭ制御部３３３ａは、ＳＡＳエクスパンダ３０７ｂが稼働しているか否かについては、クロス経路を通じてＳＡＳエクスパンダ３０７ｂにアクセスすることで判断することもできる。このように、ＳＡＳエクスパンダ３０７ｂの稼働状態について、通信経路Ｐ２を通じたエクスパンダ稼働状態情報３８１ｂの取得と、クロス経路を通じたＳＡＳエクスパンダ３０７ｂへのアクセスという２つの方法によって判定できることで、他方ＣＭ制御部３３３ａは、ＣＭ３００ｂでの異常検出後もＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂを引き続き使用可能か否かを、確実に判断できるようになる。
【０１００】
次に、図９は、ＩＯアクセス制御部による異常検出処理を示すフローチャートである。なお、図９では例として、ＣＭ３００ａのＩＯアクセス制御部３３１ａでの処理について説明するが、ＣＭ３００ｂのＩＯアクセス制御部３３１ｂも、同様の処理を実行可能である。
【０１０１】
［ステップＳ１１］ＩＯアクセス制御部３３１ａは、ＣＡ３０４ａまたはＣＡ３０５ａを通じて、ホスト装置１２０から発せられた、ＤＥ２１０内のＨＤＤまたはＤＥ２２０内のＨＤＤ（以下、単にＨＤＤと呼ぶ）に対するアクセス要求を受け付けると、ＨＤＤに対してストレート経路またはクロス経路のどちらを通じてアクセスするかを決定する。ＩＯアクセス制御部３３１ａは、ＲＡＭ３０２ａに記憶されたエクスパンダ状態情報３６１ａおよび他方エクスパンダ状態情報３６２ａを参照し、「Ｎｏｒｍａｌ」になっているＳＡＳエクスパンダを経由するアクセス経路を選択する。ＩＯアクセス制御部３３１ａは、エクスパンダ状態情報３６１ａおよび他方エクスパンダ状態情報３６２ａの両方が「Ｎｏｒｍａｌ」の場合には、アクセスの負荷が分散するようにアクセス経路を決定する。なお、前述のように、ＩＯアクセス制御部３３１ａは、例えば、ストレート経路およびクロス経路の使用率をそれぞれ５０％とする（例えば、ストレート経路とクロス経路のそれぞれを交互に使用してＤＥ２１０，２２０にアクセスする）ことにより、ストレート経路とクロス経路のそれぞれにおける通信負荷を略均等にする。
【０１０２】
ＩＯアクセス制御部３３１ａは、ストレート経路を通じてＨＤＤにアクセスする場合には、ステップＳ１２の処理を実行し、クロス経路を通じてＨＤＤにアクセスする場合には、ステップＳ１７の処理を実行する。
【０１０３】
［ステップＳ１２］ＩＯアクセス制御部３３１ａは、ＩＯＣ３０６ａに対して、ストレート経路を通じたＨＤＤへのアクセス処理を実行させる。ここで、ＩＯアクセス制御部３３１ａは、ＩＯＣ３０６ａによるアクセス処理の実行結果に基づき、ＨＤＤに正しくアクセスできたか否かを判定する。ＩＯアクセス制御部３３１ａは、ＨＤＤに正しくアクセスできた場合（Ｓ１２：Ｙｅｓ）には、処理を終了し、ＨＤＤに正しくアクセスできなかった場合（Ｓ１２：Ｎｏ）には、ステップＳ１３の処理を実行する。
【０１０４】
［ステップＳ１３］ＣＭ３００ａのＲＡＭ３０２ａには、ストレート経路における異常の検出回数を示す異常検出点数ＣＴ１が記憶されている。異常検出点数ＣＴ１の初期値は０である。ＩＯアクセス制御部３３１ａは、異常検出点数ＣＴ１に、あらかじめ決められた加算値Ａ１を加算し、加算結果によりＲＡＭ３０２ａ内の異常検出点数ＣＴ１を更新する。
【０１０５】
［ステップＳ１４］ＩＯアクセス制御部３３１ａは、ステップＳ１３での加算結果が、所定の判定しきい値以下であるか否かを判定する。ＩＯアクセス制御部３３１ａは、加算結果が判定しきい値以下である場合（Ｓ１４：Ｙｅｓ）には、処理を終了し、加算結果が判定しきい値を超えた場合（Ｓ１４：Ｎｏ）には、ステップＳ１５の処理を実行する。
【０１０６】
［ステップＳ１５］ＩＯアクセス制御部３３１ａは、ＣＭ３００ａのＳＡＳエクスパンダ３０７ａの状態を示すエクスパンダ状態情報３６１ａを、「Ｆａｕｌｔ」に更新する。エクスパンダ状態情報３６１ａが「Ｆａｕｌｔ」とされることで、ストレート経路を利用したＨＤＤへのアクセスが禁止される。
【０１０７】
［ステップＳ１６］ＩＯアクセス制御部３３１ａは、異常検出部３３２ａに対して、ストレート経路における異常の発生を通知する。異常検出部３３２ａは、ＩＯアクセス制御部３３１ａからの通知に基づいて、異常検出情報３５１ａを生成し、ＣＭ３００ａの他方ＣＭ制御部３３３ａに対して、ＣＭ３００ａにおける異常の発生と、異常検出情報３５１ａとを通知する。
【０１０８】
［ステップＳ１７］ＩＯアクセス制御部３３１ａは、ＩＯＣ３０６ａに対して、クロス経路を通じたＨＤＤへのアクセス処理を実行させる。ここで、ＩＯアクセス制御部３３１ａは、ＩＯＣ３０６ａによるアクセス処理の実行結果に基づき、ＨＤＤに正しくアクセスできたか否かを判定する。ＩＯアクセス制御部３３１ａは、ＨＤＤに正しくアクセスできた場合（Ｓ１７：Ｙｅｓ）には、処理を終了し、ＨＤＤに正しくアクセスできなかった場合（Ｓ１７：Ｎｏ）には、ステップＳ１８の処理を実行する。
【０１０９】
［ステップＳ１８］ＣＭ３００ａのＲＡＭ３０２ａには、クロス経路における異常の検出回数を示す異常検出点数ＣＴ２が記憶されている。異常検出点数ＣＴ２の初期値は０である。ＩＯアクセス制御部３３１ａは、異常検出点数ＣＴ２に、あらかじめ決められた加算値Ａ１を加算し、加算結果によりＲＡＭ３０２ａ内の異常検出点数ＣＴ２を更新する。
【０１１０】
［ステップＳ１９］ＩＯアクセス制御部３３１ａは、ステップＳ１８での加算結果が、所定の判定しきい値以下であるか否かを判定する。このステップＳ１９で比較される判定しきい値は、ステップＳ１４で比較される判定しきい値と同じであってよい。ＩＯアクセス制御部３３１ａは、加算結果が判定しきい値以下である場合（Ｓ１９：Ｙｅｓ）には、処理を終了し、加算結果が判定しきい値を超えた場合（Ｓ１９：Ｎｏ）には、ステップＳ２０の処理を実行する。
【０１１１】
［ステップＳ２０］ＩＯアクセス制御部３３１ａは、ＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂの状態を示す他方エクスパンダ状態情報３６２ａを、「Ｆａｕｌｔ」に更新する。他方エクスパンダ状態情報３６２ａが「Ｆａｕｌｔ」とされることで、クロス経路を利用したＨＤＤへのアクセスが禁止される。
【０１１２】
［ステップＳ２１］ＩＯアクセス制御部３３１ａは、他方ＣＭ制御部３３３ａに対して、クロス経路における異常の発生を通知する。他方ＣＭ制御部３３３ａは、ＩＯアクセス制御部３３１ａからの通知により、他方のＣＭ３００ｂにおける異常発生を検知し、異常検出情報３５１ｂ、エクスパンダ稼働状態情報３８１ｂおよびエクスパンダ電源状態情報３８２ｂを、ＣＭ３００ｂから取得する。
【０１１３】
なお、図９の処理において、ＩＯアクセス制御部３３１ａが、ＨＤＤへのアクセスに失敗したときにアクセス失敗の原因を判定できる場合には、ステップＳ１３およびステップＳ１８では、アクセス失敗の原因に応じて異なる加算値Ａ１が加算されてもよい。例えば、アクセス失敗の原因の重要度が高いほど、加算値Ａ１の値が大きくされてもよい。
【０１１４】
次に、図１０は、他方のＣＭにおける異常発生を検知したときの他方ＣＭ制御部の処理を示すフローチャートである。なお、図１０では例として、ＣＭ３００ｂで異常が発生した場合のＣＭ３００ａでの処理について説明するが、ＣＭ３００ａで異常が発生した場合のＣＭ３００ｂでも、同様の処理を実行可能である。
【０１１５】
［ステップＳ３１］他方ＣＭ制御部３３３ａは、他方のＣＭ３００ｂにおいて異常が発生したことを検知する。他方ＣＭ制御部３３３ａは、例えば、ＣＭ３００ｂの異常検出部３３２ｂから異常検出通知または異常検出情報３５１ｂを受信したとき、通信経路Ｐ１を通じたＣＭ３００ｂのＣＰＵ３０１ｂとの通信が断絶したとき、ＣＭ３００ａのＩＯアクセス制御部３３１ａからクロス経路における異常発生の通知を受けたときに、ＣＭ３００ｂにおける異常発生を検知する。
【０１１６】
［ステップＳ３２］他方ＣＭ制御部３３３ａは、ＣＭ３００ｂから、異常検出情報３５１ｂ、エクスパンダ稼働状態情報３８１ｂおよびエクスパンダ電源状態情報３８２ｂを取得する。これらの各情報の取得方法については、図８で説明した通りである。なお、他方ＣＭ制御部３３３ａは、ステップＳ３１において、ＣＭ３００ｂの異常検出部３３２ｂから異常検出情報３５１ｂの通知を受けることでＣＭ３００ｂでの異常発生を検知した場合には、ステップＳ３２では、エクスパンダ稼働状態情報３８１ｂおよびエクスパンダ電源状態情報３８２ｂを取得する。
【０１１７】
［ステップＳ３３］他方ＣＭ制御部３３３ａは、ステップＳ３２（またはステップＳ３１，Ｓ３２）で取得した異常検出情報３５１ｂ、エクスパンダ稼働状態情報３８１ｂおよびエクスパンダ電源状態情報３８２ｂに基づいて、ＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂにおいて異常が発生したか否かを判定する。
【０１１８】
このステップＳ３３では、他方ＣＭ制御部３３３ａは、異常検出情報３５１ｂに記述された異常の内容がＳＡＳエクスパンダ３０７ｂの動作に関係するものでなく、かつ、エクスパンダ稼働状態情報３８１ｂが稼働状態を示し、かつ、エクスパンダ電源状態情報３８２ｂが電源投入状態を示す場合に、ＳＡＳエクスパンダ３０７ｂに異常が発生していないと判定して（Ｓ３３：Ｎｏ）、ステップＳ３４の処理を実行する。
【０１１９】
一方、他方ＣＭ制御部３３３ａは、異常検出情報３５１ｂに記述された異常の内容がＳＡＳエクスパンダ３０７ｂの動作に関係すること、エクスパンダ稼働状態情報３８１ｂが非稼働状態を示すこと、エクスパンダ電源状態情報３８２ｂが電源切断状態を示すことのうち少なくとも１つが該当する場合に、ＳＡＳエクスパンダ３０７ｂに異常が発生したと判定して（Ｓ３３：Ｙｅｓ）、ステップＳ４０の処理を実行する。
【０１２０】
［ステップＳ３４］ＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂにおいて異常が発生していないと判定した場合、他方ＣＭ制御部３３３ａは、電源制御部３４２ａに対して、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ２に遷移させるように要求する。要求を受けた電源制御部３４２ａは、ＣＭ３００ｂの電源制御部３４２ｂと通信経路Ｐ２を通じて通信し、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ２に遷移させるように電源制御部３４２ｂに要求する。要求を受けた電源制御部３４２ｂは、ＰＳＵ３１４ｂを制御して、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ２に遷移させる。
【０１２１】
［ステップＳ３５］他方ＣＭ制御部３３３ａは、ＲＡＭ３０２ａに記憶した他方ＣＭ状態情報３７１ａを、Ｐ＿Ｓｔａｔｅ２を示すように更新する。
［ステップＳ３６］他方ＣＭ制御部３３３ａは、電源制御部３４２ａに対して、ＣＭ３００ｂの電源状態を、通常運用状態であるＰ＿Ｓｔａｔｅ３に遷移させるように要求する。この処理は、ＣＭ３００ｂ全体を再起動させるものである。ただし、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ２からＰ＿Ｓｔａｔｅ３に遷移させる再起動処理は、ＳＡＳエクスパンダ３０７ｂによるＩＯＣ３０６ａとＤＥ２１０，２２０との間の中継動作を停止することなく、ＣＰＵ３０１ｂをはじめとするＣＭ３００ｂ内のハードウェアをリセットして再度使用可能にする処理である。
【０１２２】
電源状態の遷移要求を受けた電源制御部３４２ａは、ＣＭ３００ｂの電源制御部３４２ｂと通信経路Ｐ２を通じて通信し、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ３に遷移させるように電源制御部３４２ｂに要求する。要求を受けた電源制御部３４２ｂは、ＰＳＵ３１４ｂを制御して、ＳＡＳエクスパンダ３０７ｂへの電源供給を継続して、ＳＡＳエクスパンダ３０７ｂの動作が正常に継続される状態のまま、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ３に遷移させる。
【０１２３】
［ステップＳ３７］他方ＣＭ制御部３３３ａは、ＣＭ３００ｂの再起動に成功したか否かを判定する。他方ＣＭ制御部３３３ａは、例えば、ＣＭ３００ｂのＣＰＵ３０１ｂと通信経路Ｐ１を通じて正常に通信できた場合に、ＣＭ３００ｂの再起動が成功したと判定し（ステップＳ３７：Ｙｅｓ）、ステップＳ３８の処理を実行する。一方、他方ＣＭ制御部３３３ａは、ＣＭ３００ｂのＣＰＵ３０１ｂと通信経路Ｐ１を通じて正常に通信できなかった場合には、ＣＭ３００ｂの再起動が失敗したと判定し（ステップＳ３７：Ｎｏ）、ステップＳ３９の処理を実行する。
【０１２４】
［ステップＳ３８］他方ＣＭ制御部３３３ａは、ＲＡＭ３０２ａに記憶した他方ＣＭ状態情報３７１ａを、Ｐ＿Ｓｔａｔｅ３を示すように更新する。
［ステップＳ３９］他方ＣＭ制御部３３３ａは、電源制御部３４２ａに対して、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ２に遷移させるように要求する。要求を受けた電源制御部３４２ａは、ＣＭ３００ｂの電源制御部３４２ｂと通信経路Ｐ２を通じて通信し、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ２に遷移させるように電源制御部３４２ｂに要求する。要求を受けた電源制御部３４２ｂは、ＰＳＵ３１４ｂを制御して、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ２に遷移させる。
【０１２５】
［ステップＳ４０］ＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂにおいて異常が発生したと判定した場合、他方ＣＭ制御部３３３ａは、ＲＡＭ３０２ａに記憶した他方エクスパンダ状態情報３６２ａを「Ｆａｕｌｔ」に更新する。これにより、ＤＥ２１０，２２０へのアクセスの際に他方エクスパンダ状態情報３６２ａを参照するＩＯアクセス制御部３３１ａは、クロス経路を使用してＤＥ２１０，２２０にアクセスすることができなくなる。
【０１２６】
［ステップＳ４１］他方ＣＭ制御部３３３ａは、電源制御部３４２ａに対して、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ１に遷移させるように要求する。要求を受けた電源制御部３４２ａは、ＣＭ３００ｂの電源制御部３４２ｂと通信経路Ｐ２を通じて通信し、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ１に遷移させるように電源制御部３４２ｂに要求する。要求を受けた電源制御部３４２ｂは、ＰＳＵ３１４ｂを制御して、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ１に遷移させる。
【０１２７】
［ステップＳ４２］他方ＣＭ制御部３３３ａは、ＲＡＭ３０２ａに記憶した他方ＣＭ状態情報３７１ａを、Ｐ＿Ｓｔａｔｅ１を示すように更新する。
［ステップＳ４３］他方ＣＭ制御部３３３ａは、電源制御部３４２ａに対して、ＣＭ３００ｂの電源状態を、通常運用状態であるＰ＿Ｓｔａｔｅ３に遷移させるように要求する。この処理は、ＣＭ３００ｂ全体を再起動させるものである。
【０１２８】
電源状態の遷移要求を受けた電源制御部３４２ａは、ＣＭ３００ｂの電源制御部３４２ｂと通信経路Ｐ２を通じて通信し、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ３に遷移させるように電源制御部３４２ｂに要求する。要求を受けた電源制御部３４２ｂは、ＰＳＵ３１４ｂを制御して、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ３に遷移させる。
【０１２９】
［ステップＳ４４］他方ＣＭ制御部３３３ａは、ＣＭ３００ｂの再起動に成功したか否かを判定する。他方ＣＭ制御部３３３ａは、例えば、ＣＭ３００ｂのＣＰＵ３０１ｂと通信経路Ｐ１を通じて正常に通信できた場合に、ＣＭ３００ｂの再起動が成功したと判定し（ステップＳ４４：Ｙｅｓ）、ステップＳ４５の処理を実行する。一方、他方ＣＭ制御部３３３ａは、ＣＭ３００ｂのＣＰＵ３０１ｂと通信経路Ｐ１を通じて正常に通信できなかった場合には、ＣＭ３００ｂの再起動が失敗したと判定し（ステップＳ４４：Ｎｏ）、ステップＳ４６の処理を実行する。
【０１３０】
［ステップＳ４５］他方ＣＭ制御部３３３ａは、ＲＡＭ３０２ａに記憶した他方エクスパンダ状態情報３６２ａを「Ｎｏｒｍａｌ」に更新する。これにより、ＤＥ２１０，２２０へのアクセスの際に他方エクスパンダ状態情報３６２ａを参照するＩＯアクセス制御部３３１ａは、クロス経路を使用してＤＥ２１０，２２０にアクセスすることができるようになる。
【０１３１】
また、他方ＣＭ制御部３３３ａは、ＲＡＭ３０２ａに記憶した他方ＣＭ状態情報３７１ａを、Ｐ＿Ｓｔａｔｅ３を示すように更新する。
［ステップＳ４６］他方ＣＭ制御部３３３ａは、電源制御部３４２ａに対して、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ１に遷移させるように要求する。要求を受けた電源制御部３４２ａは、ＣＭ３００ｂの電源制御部３４２ｂと通信経路Ｐ２を通じて通信し、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ１に遷移させるように電源制御部３４２ｂに要求する。要求を受けた電源制御部３４２ｂは、ＰＳＵ３１４ｂを制御して、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ１に遷移させる。
【０１３２】
以上の図１０の処理では、他方ＣＭ制御部３３３ａは、他方のＣＭ３００ｂにおける異常の発生を検知すると、発生した異常がＳＡＳエクスパンダ３０７ｂの動作に関係するか否かを判断する。発生した異常がＳＡＳエクスパンダ３０７ｂの動作に関係すると判断した場合、他方ＣＭ制御部３３３ａは、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ１に遷移させて、ＣＭ３００ａからＤＥ２１０，２２０へのアクセス経路として、ＳＡＳエクスパンダ３０７ｂを経由しないストレート経路のみが使用される状態にする。
【０１３３】
一方、発生した異常がＳＡＳエクスパンダ３０７ｂの動作に関係ないと判断した場合、他方ＣＭ制御部３３３ａは、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ２に遷移させる。ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２であるとき、ＣＭ３００ｂのＩＯアクセス制御部３３１ｂからＤＥ２１０，２２０へのアクセスは不可能になるものの、ＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂからＤＥ２１０，２２０へのアクセス経路は使用可能な状態のままとなる。このとき、ＣＭ３００ａのＩＯアクセス制御部３３１ａは、ＤＥ２１０，２２０へのアクセス経路として、ストレート経路だけでなく、ＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂを経由するクロス経路も使用可能となる。
【０１３４】
すなわち、ＣＭ３００ｂで異常が発生した場合でも、ＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂが正常に動作している状態であれば、ＣＭ３００ａのＩＯアクセス制御部３３１ａからＤＥ２１０，２２０へのアクセス経路は冗長化されたままになり、ＤＥ２１０，２２０へのアクセスの信頼性が維持される。
【０１３５】
また、図１０の処理では、ＣＭ３００ｂで異常が発生し、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ１またはＰ＿Ｓｔａｔｅ２に遷移した後、ステップＳ３６またはステップＳ４３において、ＣＭ３００ｂを再起動して、ＣＭ３００ｂ全体を通常運用状態に戻そうとする処理が実行される。ここで、ＣＭ３００ｂで発生した異常がＳＡＳエクスパンダ３０７ｂの動作に関係しないものである場合には、ＳＡＳエクスパンダ３０７ｂへの電源供給を継続して、ＳＡＳエクスパンダ３０７ｂの動作が正常に継続される状態のまま、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ３に遷移して、ＣＭ３００ｂが再起動する（ステップＳ３６）。このような再起動処理により、ＣＭ３００ｂで異常が発生したときでも、発生した異常がＳＡＳエクスパンダ３０７ｂの動作に関係しない場合には、ＣＭ３００ａからＤＥ２１０，２２０へのアクセス経路の冗長性を維持したまま、ＣＭ３００ｂを通常運用状態に復帰させることができる。
【０１３６】
なお、ステップＳ３６〜Ｓ３９の処理およびステップＳ４３〜Ｓ４６の処理は、必ず実行される必要はなく、例えば、他方のＣＭ３００ｂにおける異常発生を検知したときにＣＭ３００ｂを再起動するようにＣＭ３００ａにあらかじめ設定されていた場合に、実行されればよい。
【０１３７】
ところで、ＳＡＳエクスパンダ３０７ａ，３０７ｂは、それぞれ自身が属するＣＭのＩＯＣにおける異常の発生を検出する機能を有していてもよい。この場合、ＳＡＳエクスパンダ３０７ａ，３０７ｂは、ＣＭでの異常発生を検知すると、例えば、他方のＣＭに対してクロス経路を通じて異常の発生を通知してもよい。
【０１３８】
上記のような異常検出機能を備えるＳＡＳエクスパンダ３０７ａ，３０７ｂは、自身が属するＣＭの電源状態が、通常運用状態であるＰ＿Ｓｔａｔｅ３か、あるいはＣＭ内のＣＰＵやＩＯＣの動作が停止した状態であるＰ＿Ｓｔｅｔｅ２かを識別する電源状態識別情報を、自身の内部に設けられたメモリに保持してもよい。この場合、ＳＡＳエクスパンダ３０７ａ，３０７ｂは、他方のＣＭ内の他方ＣＭ制御部の制御により、自身が属するＣＭの電源状態がＰ＿Ｓｔａｔｅ３またはＰ＿Ｓｔａｔｅ２に遷移したときに、他方のＣＭ内の他方ＣＭ制御部からどの電源状態に遷移させたかの通知を受けて、自身のメモリ内の電源状態識別情報を更新してもよい。
【０１３９】
例えば、図１０で説明したように、ＣＭ３００ａの他方ＣＭ制御部３３３ａによってＣＭ３００ｂの電源状態が制御される場合に、ＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂは、ＣＭ３００ｂをどの電源状態に遷移させたかの通知を他方ＣＭ制御部３３３ａから受け付け、ＳＡＳエクスパンダ３０７ｂ内に保持する電源状態識別情報を更新する。例えば、図１０のステップＳ３４およびステップＳ３９において、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２に遷移すると、ＣＭ３００ａの他方ＣＭ制御部３３３ａは、ＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂに対して、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ２に遷移させたことをクロス経路を通じて通知する。ＳＡＳエクスパンダ３０７ｂは、他方ＣＭ制御部３３３ａからの通知に基づいて、内部のメモリに保持した電源状態識別情報を、Ｐ＿Ｓｔａｔｅ２を示すように更新する。同様に、図１０のステップＳ３６およびステップＳ４３において、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ３に遷移すると、ＣＭ３００ａの他方ＣＭ制御部３３３ａは、ＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂに対して、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ３に遷移させたことをクロス経路を通じて通知する。ＳＡＳエクスパンダ３０７ｂは、他方ＣＭ制御部３３３ａからの通知に基づいて、内部のメモリに保持した電源状態識別情報を、Ｐ＿Ｓｔａｔｅ３を示すように更新する。
【０１４０】
ＳＡＳエクスパンダ３０７ｂは、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２またはＰ＿Ｓｔａｔｅ３であるときに、ＣＭ３００ｂのＩＯＣ３０６ｂの異常を検出すると、次の図１１に示すような処理を実行する。図１１は、ＩＯＣの異常を検出したときのＳＡＳエクスパンダの処理を示すフローチャートである。
【０１４１】
［ステップＳ６１］ＳＡＳエクスパンダ３０７ｂは、ＩＯＣ３０６ｂの異常を検出する。
［ステップＳ６２］ＳＡＳエクスパンダ３０７ｂは、自身の内部のメモリに保持した電源状態識別情報に基づいて、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２か否かを判定する。ＳＡＳエクスパンダ３０７ｂは、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２であると判定した場合（Ｓ６２：Ｙｅｓ）、処理を終了し、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２でない、すなわちＰ＿Ｓｔａｔｅ３であると判定した場合（Ｓ６２：Ｎｏ）、ステップＳ６３の処理を実行する。
【０１４２】
［ステップＳ６３］ＳＡＳエクスパンダ３０７ｂは、ＣＭ３００ａの他方ＣＭ制御部３３３ａに対して、ＣＭ３００ｂで異常が発生したことを、クロス経路を通じて通知する。なお、このステップＳ６３でＳＡＳエクスパンダ３０７ｂから発せられる異常発生通知は、図１０のステップＳ３１において他方ＣＭ制御部３３３ａがＣＭ３００ｂでの異常発生を検知することに利用されてもよい。
【０１４３】
上記の図１１の処理では、ＳＡＳエクスパンダ３０７ｂは、ＩＯＣ３０６ｂの異常を検出したときでも、その時点でのＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２であれば、想定通りの動作であると判断して、ＣＭ３００ｂの他方ＣＭ制御部３３３ａに異常の発生を通知しない。これにより、ＣＭ３００ａからＳＡＳエクスパンダ３０７ｂを経由するクロス経路を利用したＤＥ２１０，２２０へのアクセス処理が継続される。
【０１４４】
次に、異常が発生したＣＭをストレージシステム１００の筐体から取り外すメンテナンス作業について説明する。電源状態がＰ＿Ｓｔａｔｅ２であるＣＭは、内部のＳＡＳエクスパンダを継続して使用可能であるものの、異常が発生した状態にある。図１０のステップＳ３６〜Ｓ３８に示したように、Ｐ＿Ｓｔａｔｅ２からＰ＿Ｓｔａｔｅ３に復帰する再起動処理に成功した場合には、再起動したＣＭはそのまま継続して使用可能である。しかしながら、再起動処理に失敗した場合には、ＣＭはＰ＿Ｓｔａｔｅ２のままになり、この場合には最終的にＰ＿Ｓｔａｔｅ２であるＣＭの交換や修理が必要になる。
【０１４５】
ＣＭがＰ＿Ｓｔａｔｅ２であるときには、ＣＭ内のＳＡＳエクスパンダが他方のＣＭによってＤＥ２１０，２２０へのアクセス経路として使用中の場合がある。このため、Ｐ＿Ｓｔａｔｅ２となっているＣＭをストレージシステムの筐体から取り外すことは、他方のＣＭにおけるＤＥ２１０，２２０へのアクセス処理に影響が生じる場合があることから、好ましくない。Ｐ＿Ｓｔａｔｅ２となっているＣＭについては、ＣＭをＰ＿Ｓｔａｔｅ１に遷移させて、他方のＣＭがクロス経路を使用できないようにする処理を実行した後に、ＣＭをストレージシステム１００の筐体から取り外すことが望ましい。
【０１４６】
そこで、本実施の形態では、次の図１２に示すように、電源状態がＰ＿Ｓｔａｔｅ２であるＣＭのメンテナンス作業を行う際に、他方のＣＭによって、Ｐ＿Ｓｔａｔｅ２であるＣＭを取り外し可能にする処理を実行する。図１２は、電源状態がＰ＿Ｓｔａｔｅ２であるＣＭを取り外し可能にする処理を示すフローチャートである。この図１２では、例として、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ１またはＰ＿Ｓｔａｔｅ２である場合のＣＭ３００ａでの処理を示す。
【０１４７】
［ステップＳ８１］メンテナンス作業を行う作業者は、ホスト装置１２０を操作することで、ＣＭ３００ａに対してメンテナンス作業を開始することを通知する。ＣＭ３００ａの他方ＣＭ制御部３３３ａは、ホスト装置１２０から、ＣＭ３００ｂをストレージシステム１００の筐体から取り外すメンテナンス作業を開始することの通知を受けると、ステップＳ８２からの処理を開始する。
【０１４８】
なお、ホスト装置１２０からのメンテナンス作業開始通知の他、他方ＣＭ制御部３３３ａは、例えば、ストレージシステム１００の筐体に設けられたメンテナンス用スイッチ（図示せず）に対する入力操作を検知したときに、ステップＳ８２からの処理を開始してもよい。メンテナンス用スイッチは、ストレージシステム１００の筐体に取り付けられたＣＭのうち、電源状態がＰ＿Ｓｔａｔｅ１またはＰ＿Ｓｔａｔｅ２であるＣＭを取り外すことを、通常運用状態であるＰ＿Ｓｔａｔｅ３となっているＣＭに通知するものである。
【０１４９】
［ステップＳ８２］他方ＣＭ制御部３３３ａは、ＲＡＭ３０２ａに記憶した他方ＣＭ状態情報３７１ａを参照して、ＣＭ３００ｂの電源状態を認識する。他方ＣＭ制御部３３３ａは、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２である場合には、ステップＳ８３の処理を実行し、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ１である場合には、ステップＳ８６の処理を実行する。
【０１５０】
［ステップＳ８３］他方ＣＭ制御部３３３ａは、ＲＡＭ３０２ａに記憶した他方エクスパンダ状態情報３６２ａを「Ｆａｕｌｔ」にする。これにより、他方ＣＭ制御部３３３ａは、ＤＥ２１０，２２０へのアクセスの際に他方エクスパンダ状態情報３６２ａを参照するＩＯアクセス制御部３３１ａが、クロス経路を使用してＤＥ２１０，２２０にアクセスすることができないようにする。
【０１５１】
［ステップＳ８４］他方ＣＭ制御部３３３ａは、電源制御部３４２ａに対して、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ１に遷移させるように要求する。要求を受けた電源制御部３４２ａは、ＣＭ３００ｂの電源制御部３４２ｂと通信経路Ｐ２を通じて通信し、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ１に遷移させるように電源制御部３４２ｂに要求する。要求を受けた電源制御部３４２ｂは、ＰＳＵ３１４ｂを制御して、ＣＭ３００ｂの電源状態をＰ＿Ｓｔａｔｅ１に遷移させる。
【０１５２】
［ステップＳ８５］他方ＣＭ制御部３３３ａは、ＲＡＭ３０２ａに記憶した他方ＣＭ状態情報３７１ａを、Ｐ＿Ｓｔａｔｅ１を示すように更新する。
［ステップＳ８６］他方ＣＭ制御部３３３ａは、ホスト装置１２０に対して、メンテナンス作業を許可する通知を行う。ホスト装置１２０は、例えば、自身に接続されたモニタに、メンテナンス作業が許可されたことを表示する。
【０１５３】
以上の図１２の処理によれば、他方ＣＭ制御部３３３ａは、作業者の入力操作によりメンテナンス作業の開始が通知されたときに、作業の対象であるＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２であった場合には、他方エクスパンダ状態情報３６２ａを「Ｆａｕｌｔ」にして、ＣＭ３００ａからクロス経路を通じてＤＥ２１０，２２０にアクセスすることを禁止する。その後、他方ＣＭ制御部３３３ａは、ＣＭ３００ｂをＰ＿Ｓｔａｔｅ１に遷移させ、メンテナンス作業を許可することを作業者に通知する。このような処理により、例えば、メンテナンス作業の実行時に、ＣＭ３００ａからクロス経路を通じてＤＥ２１０，２２０へアクセスする処理においてエラーが検出されるなど、ＣＭ３００ａからＤＥ２１０，２２０へのアクセス処理に影響が生じる事態が防止される。
【０１５４】
なお、図１２のステップＳ８４では、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ１に遷移すると、ＣＭ３００ｂのＬＥＤ３１３ｂが点滅状態から常時点灯状態に変化する。作業者は、ＬＥＤ３１３ｂが常時点灯状態に変化したことを視認することで、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２からＰ＿Ｓｔａｔｅ１に遷移したことを確実に認識できる。
【０１５５】
〔第３の実施の形態〕
以下、第３の実施の形態として、第２の実施の形態で示したＩＯアクセス制御部３３１ａ、３３１ｂによる異常検出処理（図９参照）の手順を変形したストレージシステムを示す。
【０１５６】
図９に示した異常検出処理では、ストレート経路において異常が発生したと判定する判定基準と、クロス経路において異常が発生したと判定する判定基準とが同じになっていた。しかしながら、他方のＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２である場合には、他方のＣＭ３００ｂ内のどこかで異常が発生している状態である。このことから、他方のＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２である場合は、異常が発生していないＰ＿Ｓｔａｔｅ３である場合と比較して、ＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂを経由するクロス経路において異常が発生しやすいと考えられる。
【０１５７】
そこで、第３の実施の形態では、他方のＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２である場合には、Ｐ＿Ｓｔａｔｅ３である場合より、クロス経路で異常が発生したと判定する判定基準を厳しくする。これにより、電源状態がＰ＿Ｓｔａｔｅ２である他方のＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂにおける異常の発生を、より早く検出できるようにする。
【０１５８】
図１３は、第３の実施の形態のＩＯアクセス制御部による異常検出処理を示すフローチャートである。この図１３では、図９と同様に、ＣＭ３００ａのＩＯアクセス制御部３３１ａでの処理について説明するが、ＣＭ３００ｂのＩＯアクセス制御部３３１ｂも、同様の処理を実行可能である。また、図１３では、図９と同じ処理が実行される処理ステップには同じ符号を付して示し、それらの処理ステップについての説明を省略する。
【０１５９】
次に示すステップＳ１８ａ〜Ｓ１８ｃの処理は、図９に示したステップＳ１８に代えて実行されるものである。
［ステップＳ１８ａ］ＩＯアクセス制御部３３１ａは、ステップＳ１７においてクロス経路を通じたＨＤＤへのアクセスが正しくできなかった場合に、ＲＡＭ３０２ａに記憶した他方ＣＭ状態情報３７１ａを参照して、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２であるか否かを判定する。
【０１６０】
ＩＯアクセス制御部３３１ａは、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２であると判定した場合（Ｓ１８ａ：Ｙｅｓ）には、ステップＳ１８ｂの処理を実行する。一方、ＩＯアクセス制御部３３１ａは、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２でない場合、すなわち、ＣＭ３００ｂの電源状態が通常運用状態であるＰ＿Ｓｔａｔｅ３である場合（Ｓ１８ａ：Ｎｏ）には、ステップＳ１８ｃの処理を実行する。
【０１６１】
［ステップＳ１８ｂ］ＩＯアクセス制御部３３１ａは、クロス経路における異常の検出回数を示す異常検出点数ＣＴ２に、あらかじめ決められた加算値Ａ２を加算し、加算結果によりＲＡＭ３０２ａ内の異常検出点数ＣＴ２を更新する。ここで、加算値Ａ２は、ステップＳ１３およびステップＳ１８ｃでの加算値Ａ１より大きい値とされる。
【０１６２】
［ステップ１８ｃ］ＩＯアクセス制御部３３１ａは、異常検出点数ＣＴ２に、あらかじめ決められた加算値Ａ１を加算し、加算結果によりＲＡＭ３０２ａ内の異常検出点数ＣＴ２を更新する。
【０１６３】
ＩＯアクセス制御部３３１ａは、ステップＳ１８ｂおよびステップＳ１８ｃの各処理の後、ステップＳ１９の処理を実行し、異常検出点数ＣＴ２が判定しきい値以下であるか否かを判定する。異常検出点数ＣＴ２が判定しきい値を超えていた場合、ＩＯアクセス制御部３３１ａは、他方エクスパンダ状態情報３６２ａを「Ｆａｕｌｔ」に更新してクロス経路を通じたＤＥ２１０，２２０へのアクセスを禁止し（ステップＳ２０）、他方ＣＭ制御部３３３ａにクロス経路での異常発生を通知する（ステップＳ２１）。
【０１６４】
ここで、加算値Ａ２を加算値Ａ１より大きくしたことにより、異常検出点数ＣＴ２は、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ３である場合よりＰ＿Ｓｔａｔｅ２である場合の方が、判定しきい値に早く達する。これにより、電源状態がＰ＿Ｓｔａｔｅ２であるＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂにおける異常の発生を、より早く検出できるようになる。例えば、ＣＭ３００ａからＤＥ２１０，２２０へのアクセス処理に重大な影響が及ぶような異常がクロス経路から検出される前に、クロス経路をＣＭ３００ａから切り離し、クロス経路を通じたＤＥ２１０，２２０へのアクセスを禁止することができる。
【０１６５】
なお、上記の図１３の処理では、ステップＳ１８ｂにおける加算値Ａ２をステップＳ１８ｃにおける加算値Ａ１より大きくした。しかしながら、その他の例として、ステップＳ１８ｂ，１８ｃにおける加算値を同じにする代わりに、ステップＳ１９における判定しきい値を、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ３である場合よりＰ＿Ｓｔａｔｅ２である場合の方が小さい値になるようにしてもよい。このような処理でも、図１３の処理と同様の効果が得られる。
【０１６６】
〔第４の実施の形態〕
前述の第２の実施の形態では、ＣＭのＩＯアクセス制御部は、ストレート経路とクロス経路の両方が使用可能な状態では、各経路における通信負荷ができるだけ均等になるように、ＤＥ２１０，２２０へのアクセス経路を選択する。例えば、ＩＯアクセス制御部は、ストレート経路およびクロス経路の各使用比率が５０％ずつになるように、アクセス経路を選択する。
【０１６７】
しかしながら、他方のＣＭの電源状態がＰ＿Ｓｔａｔｅ２である場合には、他方のＣＭは異常が発生した状態であることから、ストレート経路よりクロス経路において異常が発生しやすいと言える。そこで、第４の実施の形態では、他方のＣＭの電源状態がＰ＿Ｓｔａｔｅ２である場合には、Ｐ＿Ｓｔａｔｅ３である場合より、クロス経路の使用比率を低く設定することで、クロス経路において異常が発生しにくくなるようにする。
【０１６８】
なお、以下の第４の実施の形態の説明では、例として、ＣＭ３００ａのＩＯアクセス制御部３３１ａにおける処理について説明するが、ＣＭ３００ｂのＩＯアクセス制御部３３１ｂでも同様の処理を実行可能である。
【０１６９】
また、以下の説明では、「使用比率」とはストレート経路とクロス経路のそれぞれを使用してアクセスを行う回数の比率を示す。ただし、「使用比率」は、ストレート経路とクロス経路のそれぞれにおいて実際に送受信されるデータ量の比率を指すものとしてもよい。この場合、ＩＯアクセス制御部３３１ａは、例えば、ＩＯＣ３０６ａあるいはＳＡＳエクスパンダ３０７ａ，３０７ｂから通信負荷の通知を受け、通知された通信負荷に応じて、ストレート経路とクロス経路のそれぞれにおける通信負荷が所定の比率となるようにアクセス制御を行えばよい。
【０１７０】
図１４は、第４の実施の形態におけるＩＯアクセス制御部がアクセス経路を選択する際に参照するテーブルの例を示す図である。
図１４に示すテーブルＴＢ１，ＴＢ２は、図９において説明したＩＯアクセス制御部３３１ａによる異常検出処理において算出される異常検出点数ＣＴ１，ＣＴ２と、ストレート経路およびクロス経路の使用比率との関係を示すものである。例えば、各テーブルにおいて「７０／３０」という記載は、ＩＯアクセス制御部３３１ａによるストレート経路の使用比率を７０％、クロス経路の使用比率を３０％にすることを意味する。なお、図１４では、各経路における異常発生を判定する判定しきい値（図９のステップＳ１４，Ｓ１９で使用する判定しきい値）を「２５５」とする。
【０１７１】
本実施の形態において、ＩＯアクセス制御部３３１ａは、テーブルＴＢ１またはテーブルＴＢ２を参照し、ＲＡＭ３０２ａに記憶された異常検出点数ＣＴ１，ＣＴ２の組み合わせに応じて、ストレート経路とクロス経路の使用比率を変化させる。なお、テーブルＴＢ１，ＴＢ２は、例えば、ＣＭ３００ａのＳＳＤ３０９ａに記憶される。ＩＯアクセス制御部３３１ａは、基本的に、異常検出点数が大きいアクセス経路ほど、使用比率を低下させる。これにより、アクセス処理に失敗した回数の少ないアクセス経路の使用頻度を高くし、アクセス処理の成功率ができるだけ低下しないようにする。
【０１７２】
なお、図１４の各テーブルＴＢ１，ＴＢ２において、「ＳＴＢ」という記述は、アクセス経路をスタンバイパスとして使用することを意味する。スタンバイパスは、他方のアクセス経路を使用したアクセス処理が失敗したときにのみ使用される経路である。例えば、「１００／ＳＴＢ」という記述は、基本的にストレート経路を使用したアクセス処理を行い、ストレート経路を使用したアクセス処理に失敗した場合にのみ、クロス経路を使用して再度アクセス処理を行うことを意味する。
【０１７３】
ＩＯアクセス制御部３３１ａは、他方のＣＭ３００ｂの電源状態が通常運用状態であるＰ＿Ｓｔａｔｅ３である場合には、テーブルＴＢ１を参照してアクセス経路の使用比率を決定する。テーブルＴＢ１では、異常検出点数ＣＴ１，ＣＴ２のそれぞれの値が同じ範囲にある場合には、ストレート経路とクロス経路とを均等に使用するように、使用比率が設定されている。そして、テーブルＴＢ１では、ストレート経路とクロス経路との使用比率をそれぞれ５０％とした状態を基準として、異常検出点数ＣＴ１の方がさらに高くなった場合にはストレート経路の使用比率を低くし、異常検出点数ＣＴ２の方がさらに高くなった場合にはクロス経路の使用比率を低くするように、使用比率が設定されている。
【０１７４】
一方、ＩＯアクセス制御部３３１ａは、他方のＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２である場合には、テーブルＴＢ２を参照してアクセス経路の使用比率を決定する。テーブルＴＢ２では、テーブルＴＢ１と比較して、全体的にクロス経路の使用比率が低くなるように設定されている。例えば、テーブルＴＢ２では、異常検出点数ＣＴ１，ＣＴ２のそれぞれの値が同じ範囲にある場合でも、ストレート経路の使用比率が６０％、クロス経路の使用比率が４０％に設定されている。このような設定により、異常が発生しやすいと考えられるクロス経路の使用比率が低下し、全体としてアクセス処理の成功率ができるだけ低下しないようになる。
【０１７５】
図１５は、ＩＯアクセス制御部によるアクセス経路の使用比率決定処理を示すフローチャートである。なお、図１５の処理は、ＲＡＭ３０２ａに記憶されたエクスパンダ状態情報３６１ａおよび他方エクスパンダ状態情報３６２ａがともに「Ｎｏｒｍａｌ」であり、ストレート経路とクロス経路の両方の使用が許可された状態において実行されるものである。
【０１７６】
［ステップＳ１０１］ＩＯアクセス制御部３３１ａは、ＲＡＭ３０２ａに記憶された他方ＣＭ状態情報３７１ａに基づいて、他方のＣＭ３００ｂの電源状態を判定する。ＩＯアクセス制御部３３１ａは、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ３である場合には、ステップＳ１０２の処理を実行し、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２である場合には、ステップＳ１０３の処理を実行する。
【０１７７】
［ステップＳ１０２］ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ３である場合、ＩＯアクセス制御部３３１ａは、テーブルＴＢ１に基づいて、アクセス経路の使用比率を決定する。この後、ＩＯアクセス制御部３３１ａは、ステップＳ１０１の処理を実行する。
【０１７８】
［ステップＳ１０３］ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２である場合、ＩＯアクセス制御部３３１ａは、テーブルＴＢ２に基づいて、アクセス経路の使用比率を決定する。この後、ＩＯアクセス制御部３３１ａは、ステップＳ１０１の処理を実行する。
【０１７９】
なお、以上の図１５の処理は、例えば、一定時間ごとに実行されてもよい。あるいは、図１５の処理は、ＣＭ３００ｂの電源状態が変化し、他方ＣＭ状態情報３７１ａの値が更新されたときに実行されてもよい。
【０１８０】
以上の図１５の処理によれば、他方のＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２である場合には、Ｐ＿Ｓｔａｔｅ３である場合よりクロス経路を通じたアクセス処理の成功率が低いと考えられることから、ストレート経路が使用される頻度が高くなる。これにより、全体としてＤＥ２１０，２２０へのアクセス処理の成功率が低下することが抑制される。
【０１８１】
なお、前述した第３の実施の形態では、ＩＯアクセス制御部は、他方のＣＭの電源状態がＰ＿Ｓｔａｔｅ２，Ｐ＿Ｓｔａｔｅ３のどちらの場合でも、テーブルＴＢ１に基づいてアクセス経路の使用比率を決定してもよい。第３の実施の形態では、他方のＣＭの電源状態がＰ＿Ｓｔａｔｅ２である場合には、Ｐ＿Ｓｔａｔｅ３である場合より、異常検出点数ＣＴ２が異常検出点数ＣＴ１より早く増加する。このため、ＩＯアクセス制御部がテーブルＴＢ１に基づいてアクセス経路の使用比率を決定することで、結果的に、他方のＣＭの電源状態がＰ＿Ｓｔａｔｅ２である場合には、クロス経路よりストレート経路が使用される頻度が高くなる。従って、第４の実施の形態と同様の効果が得られる。
【０１８２】
〔第５の実施の形態〕
第５の実施の形態では、他方のＣＭの電源状態がＰ＿Ｓｔａｔｅ２である場合に、上記の第４の実施の形態と比較してより積極的にストレート経路を使用するとともに、クロス経路の使用頻度を大きく低下させる。これにより、ＤＥ２１０，２２０へのアクセス処理の成功率が低下することを抑制する。
【０１８３】
図１６は、第５の実施の形態におけるＩＯアクセス制御部によるアクセス経路の使用比率決定処理を示すフローチャートである。なお、ここでは例として、ＣＭ３００ａのＩＯアクセス制御部３３１ａにおける処理について説明するが、ＣＭ３００ｂのＩＯアクセス制御部３３１ｂでも同様の処理を実行可能である。また、この図１６の処理は、第２の実施の形態におけるＩＯアクセス制御部３３１ａ、および第３の実施の形態におけるＩＯアクセス制御部３３１ａのどちらも実行可能である。
【０１８４】
［ステップＳ１２１］ＩＯアクセス制御部３３１ａは、ＲＡＭ３０２ａに記憶された他方ＣＭ状態情報３７１ａに基づいて、他方のＣＭ３００ｂの電源状態を判定する。ＩＯアクセス制御部３３１ａは、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ３である場合には、ステップＳ１２２の処理を実行し、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２である場合には、ステップＳ１２３の処理を実行する。
【０１８５】
［ステップＳ１２２］ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ３である場合、ＩＯアクセス制御部３３１ａは、ストレート経路とクロス経路の各使用比率ができるだけ均等になるようにする。例えば、ＩＯアクセス制御部３３１ａは、ストレート経路とクロス経路の使用比率をともに５０％とする。この後、ＩＯアクセス制御部３３１ａは、ステップＳ１２１の処理を実行する。
【０１８６】
［ステップＳ１２３］ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２である場合、ＩＯアクセス制御部３３１ａは、クロス経路をスタンバイパスにし、ストレート経路を使用したアクセス処理が失敗した場合にのみ、クロス経路を使用してアクセスを行うようにする。この後、ＩＯアクセス制御部３３１ａは、ステップＳ１２１の処理を実行する。
【０１８７】
なお、以上の図１６の処理は、例えば、一定時間ごとに実行されてもよい。あるいは、図１６の処理は、ＣＭ３００ｂの電源状態が変化し、他方ＣＭ状態情報３７１ａの値が更新されたときに実行されてもよい。
【０１８８】
以上の図１６の処理によれば、他方のＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２である場合には、Ｐ＿Ｓｔａｔｅ３である場合よりクロス経路を通じたアクセス処理の成功率が低いと考えられることから、ストレート経路が使用される頻度が高くなる。これにより、全体としてＤＥ２１０，２２０へのアクセス処理の成功率が低下することが抑制される。
【０１８９】
〔第６の実施の形態〕
図１７は、第６の実施の形態に係るストレージシステムの構成を示す図である。
ＤＥ２１０，２２０とＣＭ３００ａ，３００ｂとは、図１７に示すような構成によって接続されていてもよい。図１７において、ＤＥ２１０は、２つのＳＡＳエクスパンダ２１１，２１２と、複数のＨＤＤ２１３とを備える。また、ＤＥ２２０は、２つのＳＡＳエクスパンダ２２１，２２２と、複数のＨＤＤ２２３とを備える。
【０１９０】
ＤＥ２１０のＳＡＳエクスパンダ２１１は、ＣＭ３００ａのＳＡＳエクスパンダ３０７ａと、ＤＥ２１０内部のＨＤＤ２１３との間のデータ送受信を中継する。また、ＤＥ２１０のＳＡＳエクスパンダ２１２は、ＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂと、ＤＥ２１０内部のＨＤＤ２１３との間のデータ送受信を中継する。ＣＭ３００ａのＣＰＵ３０１ａおよびＣＭ３００ｂのＣＰＵ３０１ｂは、ＳＡＳエクスパンダ３０７ａ，２１１を経由してＤＥ２１０内のＨＤＤ２１３にアクセスできるとともに、ＳＡＳエクスパンダ３０７ｂ，２１２を経由してＤＥ２１０内のＨＤＤ２１３にアクセスすることができる。
【０１９１】
さらに、ＤＥ２１０のＳＡＳエクスパンダ２１１は、ＣＭ３００ａのＳＡＳエクスパンダ３０７ａと、ＤＥ２２０のＳＡＳエクスパンダ２２１との間のデータ送受信も中継する。同様に、ＤＥ２１０のＳＡＳエクスパンダ２１２は、ＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂと、ＤＥ２２０のＳＡＳエクスパンダ２２２との間のデータ送受信も中継する。
【０１９２】
ＤＥ２２０のＳＡＳエクスパンダ２２１は、ＤＥ２１０のＳＡＳエクスパンダ２１１と、ＤＥ２２０内部のＨＤＤ２２３との間のデータ送受信を中継する。また、ＤＥ２２０のＳＡＳエクスパンダ２２２は、ＤＥ２１０のＳＡＳエクスパンダ２１２と、ＤＥ２２０内部のＨＤＤ２２３との間のデータ送受信を中継する。ＣＭ３００ａのＣＰＵ３０１ａおよびＣＭ３００ｂのＣＰＵ３０１ｂは、ＳＡＳエクスパンダ３０７ａ，２１１，２２１を経由してＤＥ２１２内のＨＤＤ２２３にアクセスできるとともに、ＳＡＳエクスパンダ３０７ｂ，２１２，２２２を経由してＤＥ２２０内のＨＤＤ２２３にアクセスすることができる。
【０１９３】
ＣＭ３００ａのＩＯアクセス制御部３３１ａは、ＤＥ２１０，２２０内のＳＡＳエクスパンダ２１１，２１２，２２１，２２２の稼働状態を検出する機能を備えている。ＩＯアクセス制御部３３１ａは、ＣＭ３００ａの電源状態が通常運用状態であるＰ＿Ｓｔａｔｅ３であるとき、ＳＡＳエクスパンダ２１１，２１２，２２１，２２２のそれぞれの稼働状態を、ＳＡＳエクスパンダごとにＲＡＭ３０２ａに用意したＤＥ内エクスパンダ状態情報３９１ａに記述する。ＤＥ内エクスパンダ状態情報３９１ａのそれぞれには、ＳＡＳエクスパンダが稼働中であることを示す「Ｎｏｒｍａｌ」、ＳＡＳエクスパンダが稼働していないことを示す「Ｆａｕｌｔ」、ＳＡＳエクスパンダの状態が不明であることを示す「Ｕｎｋｎｏｗｎ」のいずれかが記述される。
【０１９４】
また、ＣＭ３００ａの他方ＣＭ制御部３３３ａは、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２である場合に、管理端末１３０から、ＣＭ３００ｂのメンテナンス作業の開始通知を受け付けたとき、ＣＭ３００ｂの取り外しを許可するか否かを判定する機能を備える。
【０１９５】
なお、ＣＭ３００ａは、その他の処理機能として、第２〜第５の実施の形態のいずれかにおけるＣＭ３００ａと同様の処理機能を備えることができる。
一方、ＣＭ３００ｂも、ＣＭ３００ａと同様の処理機能を備える。例えば、ＣＭ３００ｂのＩＯアクセス制御部３３１ｂは、ＤＥ２１０，２２０内のＳＡＳエクスパンダ２１１，２１２，２２１，２２２の稼働状態を検出する機能を備えている。ＩＯアクセス制御部３３１ｂは、ＣＭ３００ｂの電源状態が通常運用状態であるＰ＿Ｓｔａｔｅ３であるとき、ＳＡＳエクスパンダ２１１，２１２，２２１，２２２のそれぞれの稼働状態を、ＳＡＳエクスパンダごとにＲＡＭ３０２ｂに用意したＤＥ内エクスパンダ状態情報３９１ｂに記述する。ＤＥ内エクスパンダ状態情報３９１ｂのそれぞれには、ＳＡＳエクスパンダが稼働中であることを示す「Ｎｏｒｍａｌ」、ＳＡＳエクスパンダが稼働していないことを示す「Ｆａｕｌｔ」、ＳＡＳエクスパンダの状態が不明であることを示す「Ｕｎｋｎｏｗｎ」のいずれかが記述される。
【０１９６】
また、ＣＭ３００ｂの他方ＣＭ制御部３３３ｂは、ＣＭ３００ａの電源状態がＰ＿Ｓｔａｔｅ２である場合に、管理端末１３０から、ＣＭ３００ａのメンテナンス作業の開始通知を受け付けたとき、ＣＭ３００ａの取り外しを許可するか否かを判定する機能を備える。
【０１９７】
次に、一方のＣＭの電源状態がＰ＿Ｓｔａｔｅ２であるときのＤＥ２１０，２２０へのアクセス経路について説明する。ここでは例として、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２であるものとする。
【０１９８】
図１８は、ＣＭに接続されたＤＥ内のＳＡＳエクスパンダの動作が停止した場合の動作を説明する第１の図である。
図１７に示した構成によれば、ＣＭ３００ａからＤＥ２１０内のＨＤＤ２１３へのアクセス経路は、ＳＡＳエクスパンダ３０７ａ，２１１を経由する経路と、ＳＡＳエクスパンダ３０７ｂ，２１２を経由する経路とが存在する。そして、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ３からＰ＿Ｓｔａｔｅ２に遷移した場合でも、これらの２系統のアクセス経路は使用可能な状態のままになる。また、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２に遷移したときには、ＣＭ３００ａからＤＥ２２０内のＨＤＤ２２３へのアクセス経路も、ＳＡＳエクスパンダ３０７ａ，２１１，２２１を経由する経路と、ＳＡＳエクスパンダ３０７ｂ，２１２，２２２を経由する経路の両方が、使用可能な状態のままになる。
【０１９９】
ここで、図１８に示すように、ＣＭ３００ａの配下のＳＡＳエクスパンダ（すなわち、ＣＭ３００ａのＳＡＳエクスパンダ３０７ａに直列に接続されたＳＡＳエクスパンダ）の１つであるＳＡＳエクスパンダ２１１の動作が停止した場合を考える。この場合、ＣＭ３００ａは、ＳＡＳエクスパンダ３０７ａ，２１１を経由してＤＥ２１０内のＨＤＤ２１３にアクセスすることはできないが、ＳＡＳエクスパンダ３０７ｂ，２１２を経由する残り１系統のアクセス経路を利用して、ＤＥ２１０内のＨＤＤ２１３にアクセスすることができる。また、ＣＭ３００ａは、ＳＡＳエクスパンダ３０７ａ，２１１，２２１を経由してＤＥ２２０内のＨＤＤ２２３にアクセスすることはできないが、ＳＡＳエクスパンダ３０７ｂ，２１２，２２２を経由する残り１系統のアクセス経路を利用して、ＤＥ２２０内のＨＤＤ２２３にアクセスすることができる。
【０２００】
しかしながら、図１８の状態において、ＣＭ３００ｂをストレージシステム１００の筐体から取り外してしまうと、ＣＭ３００ａは、ＤＥ２１０内のＨＤＤ２１３およびＤＥ２２０内のＨＤＤ２２３のそれぞれに対して、アクセスすることができなくなる。このため、図１８の状態からＣＭ３００ｂを取り外すことは好ましくない。
【０２０１】
なお、図１８のような状態では、ＣＭ３００ａのＩＯアクセス制御部３３１ａは、ＤＥ２２０のＳＡＳエクスパンダ２２１と通信できないことから、ＳＡＳエクスパンダ２２１が稼働しているか否かを判断できない。このため、ＩＯアクセス制御部３３１ａは、ＳＡＳエクスパンダ２２１に対応するＤＥ内エクスパンダ状態情報３９１ａを「Ｕｎｋｎｏｗｎ」にする。
【０２０２】
図１９は、ＣＭに接続されたＤＥ内のＳＡＳエクスパンダの動作が停止した場合の動作を説明する第２の図である。
図１９は、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２であるときに、ＣＭ３００ａの配下のＳＡＳエクスパンダの１つであるＳＡＳエクスパンダ２２１の動作が停止した場合の状態を示している。この状態では、ＣＭ３００ａは、ＳＡＳエクスパンダ３０７ａ，２１１，２２１を経由してＤＥ２２０内のＨＤＤ２２３にアクセスすることはできないが、ＳＡＳエクスパンダ３０７ｂ，２１２，２２２を経由する残り１系統のアクセス経路を利用して、ＤＥ２２０内のＨＤＤ２２３にアクセスすることができる。
【０２０３】
しかしながら、図１９の状態において、ＣＭ３００ｂをストレージシステム１００の筐体から取り外してしまうと、ＣＭ３００ａは、ＤＥ２２０内のＨＤＤ２２３に対してアクセスすることができなくなる。このため、図１９の状態からＣＭ３００ｂを取り外すことは好ましくない。
【０２０４】
本実施の形態の他方ＣＭ制御部３３３ａは、図１８や図１９の状態からＣＭ３００ｂのメンテナンス作業の開始要求を受け付けたとき、ＣＭ３００ｂの取り外しを許可しないことを作業者に通知する処理を行う。また、他方ＣＭ制御部３３３ａは、例えば、図１８の状態からＣＭ３００ｂのメンテナンス作業の開始要求を受け付けたとき、ＣＭ３００ｂを取り外す前にＤＥ２１０のＳＡＳエクスパンダ２１１を交換するように、作業者に促す処理を行ってもよい。また、他方ＣＭ制御部３３３ａは、例えば、図１９の状態からＣＭ３００ｂのメンテナンス作業の開始要求を受け付けたとき、ＣＭ３００ｂを取り外す前にＤＥ２２０のＳＡＳエクスパンダ２２１を交換するように、作業者に促す処理を行ってもよい。
【０２０５】
図２０は、他方ＣＭ制御部によるＣＭ取り外し可否の判定処理を示すフローチャートである。この図２０は、ＣＭ３００ｂの電源状態がＰ＿Ｓｔａｔｅ２である場合の処理を示す。
【０２０６】
［ステップＳ１４１］ＣＭ３００ａの他方ＣＭ制御部３３３ａは、ホスト装置１２０から、ＣＭ３００ｂをストレージシステム１００の筐体から取り外すメンテナンス作業を開始することの通知を受けると、ステップＳ１４２からの処理を開始する。なお、このステップＳ１４１での処理内容は、図１２のステップＳ８１での処理内容と同じである。
【０２０７】
［ステップＳ１４２］他方ＣＭ制御部３３３ａは、ＤＥ２１０，２２０が備えるＳＡＳエクスパンダのうち、ＣＭ３００ａの配下の（すなわち、ＣＭ３００ａのＳＡＳエクスパンダ３０７ａに直列に接続された）すべてのＳＡＳエクスパンダ２１１，２２１に対応するＤＥ内エクスパンダ状態情報３９１ａを参照する。
【０２０８】
［ステップＳ１４３］他方ＣＭ制御部３３３ａは、ステップＳ１４２で参照したすべてのＤＥ内エクスパンダ状態情報３９１ａが「Ｎｏｒｍａｌ」か否かを判定する。他方ＣＭ制御部３３３ａは、ステップＳ１４２で参照したすべてのＤＥ内エクスパンダ状態情報３９１ａが「Ｎｏｒｍａｌ」であり、各状態情報に対応するＳＡＳエクスパンダ２１１，２２１がいずれも稼働状態であると判定した場合（Ｓ１４３：Ｙｅｓ）には、ステップＳ１４７の処理を実行する。一方、他方ＣＭ制御部３３３ａは、ステップＳ１４２で参照したＤＥ内エクスパンダ状態情報３９１ａのうち１つでも「Ｆａｕｌｔ」または「Ｕｎｋｎｏｗｎ」のものがあった場合（Ｓ１４３：Ｎｏ）には、ステップＳ１４４の処理を実行する。
【０２０９】
［ステップＳ１４４］他方ＣＭ制御部３３３ａは、ステップＳ１４２で参照したＤＥ内エクスパンダ状態情報３９１ａのうち「Ｆａｕｌｔ」または「Ｕｎｋｎｏｗｎ」である状態情報に対応するＳＡＳエクスパンダ（すなわち、異常が生じている可能性のあるＳＡＳエクスパンダ）を認識する。他方ＣＭ制御部３３３ａは、認識したＳＡＳエクスパンダと同一のＤＥに設けられた、ＣＭ３００ｂの配下の（すなわち、ＣＭ３００ｂのＳＡＳエクスパンダ３０７ｂに直列に接続された）ＳＡＳエクスパンダに対応するＤＥ内エクスパンダ状態情報３９１ａを参照する。
【０２１０】
例えば、ステップＳ１４３においてＳＡＳエクスパンダ２１１に対応するＤＥ内エクスパンダ状態情報３９１ａが「Ｆａｕｌｔ」または「Ｕｎｋｎｏｗｎ」であった場合、他方ＣＭ制御部３３３ａはステップＳ１４４において、ＳＡＳエクスパンダ２１１と同一のＤＥ２１０に設けられたＳＡＳエクスパンダ２１２に対応するＤＥ内エクスパンダ状態情報３９１ａを参照する。
【０２１１】
［ステップＳ１４５］他方ＣＭ制御部３３３ａは、ステップＳ１４４で参照したＤＥ内エクスパンダ状態情報３９１ａが「Ｎｏｒｍａｌ」か否かを判定する。他方ＣＭ制御部３３３ａは、ステップＳ１４４で参照したＤＥ内エクスパンダ状態情報３９１ａが「Ｎｏｒｍａｌ」であり、参照した状態情報に対応するＳＡＳエクスパンダが稼働状態であると判定した場合（Ｓ１４５：Ｙｅｓ）には、ステップＳ１４６の処理を実行する。一方、他方ＣＭ制御部３３３ａは、ステップＳ１４４で参照したＤＥ内エクスパンダ状態情報３９１ａが「Ｆａｕｌｔ」または「Ｕｎｋｎｏｗｎ」であり、参照した状態情報に対応するＳＡＳエクスパンダに異常が発生した可能性がある場合（Ｓ１４５：Ｎｏ）には、ステップＳ１４７の処理を実行する。
【０２１２】
［ステップＳ１４６］他方ＣＭ制御部３３３ａは、ホスト装置１２０に対して、ＣＭ３００ｂの取り外しを許可しないことを通知する。ホスト装置１２０は、例えば、自身に接続されたモニタに、ＣＭ３００ｂの取り外しが許可されなかったことを表示する。
【０２１３】
また、他方ＣＭ制御部３３３ａは、ＣＭ３００ｂを取り外す前に、ステップＳ１４３においてＤＥ内エクスパンダ状態情報３９１ａが「Ｆａｕｌｔ」または「Ｕｎｋｎｏｗｎ」であったＳＡＳエクスパンダを交換するように、ホスト装置１２０のモニタを通じて作業者に通知してもよい。
【０２１４】
このステップＳ１４６の処理は、例えば、図１８や図１９の状態において実行されるものである。ステップＳ１４６の処理が実行されることにより、ＣＭ３００ｂを取り外してしまったためにＤＥ２１０内のＨＤＤ２１３またはＤＥ２２０内のＨＤＤ２２３に対するアクセス経路がなくなってしまうという事態が回避される。
【０２１５】
また、他方ＣＭ制御部３３３ａは、例えば、図１８の状態からＣＭ３００ｂのメンテナンス作業の開始要求を受け付けた場合には、ステップＳ１４６において、ＣＭ３００ｂを取り外す前にＤＥ２１０のＳＡＳエクスパンダ２１１を交換するように、作業者に促す処理を行う。ＤＥ２１０のＳＡＳエクスパンダ２１１を交換することで、ＣＭ３００ａからＳＡＳエクスパンダ３０７ａ，２１１を経由したアクセス経路が復旧する。従って、この後にＣＭ３００ｂを取り外すことで、ＤＥ２１０内のＨＤＤ２１３やＤＥ２２０内のＨＤＤ２２３に対するアクセス経路が断絶することなく、ＣＭ３００ｂを交換することができる。
【０２１６】
［ステップＳ１４７］他方ＣＭ制御部３３３ａは、ホスト装置１２０に対して、ＣＭ３００ｂの取り外しを許可する通知を行う。ホスト装置１２０は、例えば、自身に接続されたモニタに、ＣＭ３００の取り外しが許可されたことを表示する。
【０２１７】
このステップＳ１４７の処理は、例えば、次の図２１や図２２に示す場合のように、ＣＭ３００ｂを取り外したとしてもＤＥ２１０内のＨＤＤ２１３およびＤＥ２２０内のＨＤＤ２２３のどちらに対するアクセス経路も確保される場合に実行されるものである。
【０２１８】
図２１は、ＣＭに接続されたＤＥ内のＳＡＳエクスパンダの動作が停止した場合の動作を説明する第３の図である。
図２１では、ＤＥ２２０内のＳＡＳエクスパンダ２２１，２２２の動作が停止した場合を示す。この状態において、ＣＭ３００ｂのメンテナンス作業が要求されると、他方ＣＭ制御部３３３ａは、図２０のステップＳ１４３において、ＣＭ３００ａ配下のＳＡＳエクスパンダ２２１において異常が発生した可能性があると判定する。しかしながら、他方ＣＭ制御部３３３ａは、図２０のステップＳ１４５において、ＳＡＳエクスパンダ２２１と同一のＤＥ２２０に設けられたＳＡＳエクスパンダ２２２でも、異常が発生した可能性があると判定する。
【０２１９】
ステップＳ１４３，Ｓ１４５の各判定結果から、図２１の状態では、ＤＥ２２０内のＳＡＳエクスパンダ２２１，２２２の両方の動作が停止していることがわかる。この状態では、ＣＭ３００ｂを取り外すか否かに関係なく、ＣＭ３００ａからＤＥ２２０のＨＤＤ２２３へのアクセスは不可能であることから、他方ＣＭ制御部３３３ａは、ホスト装置１２０に対して、ＣＭ３００ｂの取り外しを許可する通知を行う。
【０２２０】
図２２は、ＣＭに接続されたＤＥ内のＳＡＳエクスパンダの動作が停止した場合の動作を説明する第４の図である。
図２２では、ＤＥ２１０内のＳＡＳエクスパンダ２１２の動作と、ＤＥ２２０内のＳＡＳエクスパンダ２２１の動作とが停止した場合を示す。なお、この図２２の状態では、ＣＭ３００ａのＩＯアクセス制御部３３１ａは、ＤＥ２２０のＳＡＳエクスパンダ２２２と通信できないことから、ＳＡＳエクスパンダ２２２が稼働しているか否かを判断できない。このため、ＩＯアクセス制御部３３１ａは、ＳＡＳエクスパンダ２２２に対応するＤＥ内エクスパンダ状態情報３９１ａを「Ｕｎｋｎｏｗｎ」にする。
【０２２１】
図２２の状態において、ＣＭ３００ｂのメンテナンス作業が要求されると、他方ＣＭ制御部３３３ａは、図２０のステップＳ１４３において、ＣＭ３００ａ配下のＳＡＳエクスパンダ２２１において異常が発生した可能性があると判定する。しかしながら、他方ＣＭ制御部３３３ａは、図２０のステップＳ１４５において、ＳＡＳエクスパンダ２２１と同一のＤＥ２２０に設けられたＳＡＳエクスパンダ２２２との通信が不可能であることを判定する。
【０２２２】
ステップＳ１４３，Ｓ１４５の各判定結果から、図２２の状態では、ＣＭ３００ａはＤＥ２２０内のＳＡＳエクスパンダ２２１，２２２のどちらとも通信できない状態であることがわかる。一方、ＣＭ３００ａは、ＣＭ３００ｂが取り外されたとしても、ＳＡＳエクスパンダ２１１を通じてＤＥ２１０内のＨＤＤ２１３にアクセスすることは可能である。従って、他方ＣＭ制御部３３３ａは、ホスト装置１２０に対して、ＣＭ３００ｂの取り外しを許可する通知を行う。
【０２２３】
なお、以上の図１８〜図２２では、例としてＣＭ３００ａの他方ＣＭ制御部３３３ａの処理について説明したが、ＣＭ３００ｂの他方ＣＭ制御部３３３ｂも同様の処理を実行することができる。
【０２２４】
以上の各実施の形態に関し、さらに以下の付記を開示する。
（付記１）  データを記憶する記憶装置と、前記記憶装置へのアクセス処理を制御する複数の制御部とを備えたストレージシステムにおいて、
前記各制御部は、
前記記憶装置に対するアクセスを中継する中継部と、
自身が属する制御部内の中継部または他の制御部内の中継部を通じて前記記憶装置にアクセスするアクセス制御部と、
他の制御部での異常発生を検知したとき、異常発生を検知した前記他の制御部内の中継部が使用可能か否かを判断し、前記他の制御部内の中継部が使用可能である場合には、自身が属する制御部内のアクセス制御部から前記他の制御部内の中継部を通じて前記記憶装置にアクセスすることが可能な状態のまま、前記他の制御部内の少なくともアクセス制御部の動作が停止した部分動作状態に、前記他の制御部を遷移させる動作状態制御部と、
を有することを特徴とするストレージシステム。
【０２２５】
（付記２）  前記アクセス制御部は、他の制御部が、前記他の制御部内のアクセス制御部および中継部がともに正常に動作する正常動作状態であるときより、前記部分動作状態であるときに、自身が属する制御部内の中継部および前記他の制御部内の中継部のうち、前記他の制御部内の中継部を経由して前記記憶装置にアクセスする頻度を低くすることを特徴とする付記１記載のストレージシステム。
【０２２６】
（付記３）  前記各制御部は、前記アクセス制御部が前記記憶装置にアクセスする際に経由する中継部ごとに異常検出点数を記憶した点数記憶部を有し、
前記アクセス制御部は、前記記憶装置へのアクセスの際にアクセス処理の異常を検出するたびに、経由した中継部に対応する前記異常検出点数を増加させ、前記異常検出点数が大きい中継部ほど、前記記憶装置へアクセスする際にアクセス経路として使用する頻度を低くする、
ことを特徴とする付記２記載のストレージシステム。
【０２２７】
（付記４）  前記アクセス制御部は、他の制御部が、前記他の制御部内のアクセス制御部および中継部がともに正常に動作する正常動作状態であるときより、前記部分動作状態であるときに、前記他の制御部内の中継部を経由して前記記憶装置にアクセスする頻度を低くすることを特徴とする付記３記載のストレージシステム。
【０２２８】
（付記５）  前記アクセス制御部は、前記記憶装置に対するアクセス処理の異常を検出したとき、アクセス制御部および中継部がともに正常に動作する正常動作状態である制御部内の中継部に対応する前記異常検出点数の増加量より、前記部分動作状態である制御部内の中継部に対応する前記異常検出点数の増加量を大きくすることを特徴とする付記３記載のストレージシステム。
【０２２９】
（付記６）  前記アクセス制御部は、前記正常動作状態である制御部内の中継部を通じた前記記憶装置へのアクセスに失敗したとき、前記部分動作状態である制御部内の中継部を通じて前記記憶装置にアクセスすることを特徴とする付記２記載のストレージシステム。
【０２３０】
（付記７）  前記アクセス制御部は、自身が属する制御部内の中継部および他の制御部内の中継部のうちどの中継部を通じて前記記憶装置にアクセスするかを、各中継部を通じて過去に前記記憶装置にアクセスした際のアクセス処理の異常検出状態に応じて選択することを特徴とする付記１または２記載のストレージシステム。
【０２３１】
（付記８）  前記アクセス制御部は、他の制御部内の中継部を通じて前記記憶装置にアクセスした際のアクセス処理の異常検出状態に応じて、前記他の制御部内の中継部を通じた前記記憶装置へのアクセスを禁止し、前記他の制御部が、前記他の制御部内のアクセス制御部および中継部がともに正常に動作する正常動作状態である場合より、前記他の制御部が前記部分動作状態である場合の方が、前記他の制御部内の中継部を通じた前記記憶装置へのアクセスを禁止するように判定する判定基準を厳しくすることを特徴とする付記１または２記載のストレージシステム。
【０２３２】
（付記９）  前記アクセス制御部は、他の制御部内の中継部を通じた前記記憶装置へのアクセスの際にアクセス処理の異常を検出するたびに、記憶媒体に記憶した異常検出点数を増加させ、前記異常検出点数が所定の判定基準値に達したとき、前記他の制御部内の中継部を通じた前記記憶装置へのアクセスを禁止し、前記他の制御部が前記正常動作状態である場合より、前記他の制御部が前記部分動作状態である場合の方が、前記記憶装置へのアクセス処理の異常を検出したときの前記異常検出点数の増加量を大きくすることを特徴とする付記８記載のストレージシステム。
【０２３３】
（付記１０）  前記記憶装置は、
データ記憶部と、
各制御部内の中継部に１対１で接続して、接続した中継部から前記データ記憶部へのアクセスを中継する複数の記憶装置内中継部と、
を有し、
前記各制御部は、他方の制御部が前記部分動作状態である場合に、前記他方の制御部をストレージシステムの筐体から取り外す要求を受け付けたとき、自身が備える中継部に接続した前記記憶装置内中継部が稼働しておらず、なおかつ、前記記憶装置内の他方の前記記憶装置内中継部が稼働している場合に、前記他方の制御部の取り外しを許可しない判定を行う判定部をさらに有する、
ことを特徴とする付記１記載のストレージシステム。
【０２３４】
（付記１１）  前記各制御部は、自身が前記部分動作状態である場合と、自身が前記部分動作状態以外の異常発生状態である場合とを区別して表示する状態表示部をさらに有することを特徴とする付記１記載のストレージシステム。
【０２３５】
（付記１２）  前記各制御部は、前記部分動作状態に遷移すると、自身が備えるアクセス制御部への電源供給を停止することを特徴とする付記１記載のストレージシステム。
（付記１３）  前記動作状態制御部は、他の制御部での異常発生を検知したとき、異常発生を検知した前記他の制御部内の中継部が使用可能か否かを判断し、前記他の制御部内の中継部が使用不可能である場合には、前記他の制御部を、前記他の制御部内の少なくともアクセス制御部および中継部の各動作が停止した運用不可状態に遷移させることを特徴とする付記１記載のストレージシステム。
【０２３６】
（付記１４）  データを記憶する記憶装置へのアクセス処理を制御する制御装置において、
前記記憶装置に対するアクセスを中継する中継部と、
自身が属する制御装置内の中継部または他の制御装置内の中継部を通じて前記記憶装置にアクセスするアクセス制御部と、
他の制御装置での異常発生を検知したとき、異常発生を検知した前記他の制御装置内の中継部が使用可能か否かを判断し、前記他の制御装置内の中継部が使用可能である場合には、自身が属する制御装置内のアクセス制御部から前記他の制御装置内の中継部を通じて前記記憶装置にアクセスすることが可能な状態のまま、前記他の制御装置内の少なくともアクセス制御部の動作が停止した部分動作状態に、前記他の制御装置を遷移させる動作状態制御部と、
を有することを特徴とする制御装置。
【０２３７】
（付記１５）  データを記憶する記憶装置と、前記記憶装置へのアクセス処理を制御する複数の制御部とを備えたストレージシステムにおける制御方法であって、
複数の制御部のうち一の制御部内のアクセス制御部が、前記一の制御部内の中継部または他の制御部内の中継部を通じて、前記記憶装置にアクセスし、
前記一の制御部が備える動作状態制御部が、他の制御部での異常発生を検知したとき、異常発生を検知した前記他の制御部内の中継部が使用可能か否かを判断し、前記他の制御部内の中継部が使用可能である場合には、前記一の制御部内のアクセス制御部から前記他の制御部内の中継部を通じて前記記憶装置にアクセスすることが可能な状態のまま、少なくとも前記他の制御部内のアクセス制御部の動作が停止した部分動作状態に、前記他の制御部を遷移させる、
ことを特徴とする制御方法。
【符号の説明】
【０２３８】
１  ストレージシステム
１０  記憶装置
２０ａ，２０ｂ  制御部
２１ａ，２１ｂ  アクセス制御部
２２ａ，２２ｂ  中継部
２３ａ，２３ｂ  動作状態制御部
【図１】
0005545108.tif 000002
【図２】
0005545108.tif 000003
【図３】
0005545108.tif 000004
【図４】
0005545108.tif 000005
【図５】
0005545108.tif 000006
【図６】
0005545108.tif 000007
【図７】
0005545108.tif 000008
【図８】
0005545108.tif 000009
【図９】
0005545108.tif 000010
【図１０】
0005545108.tif 000011
【図１１】
0005545108.tif 000012
【図１２】
0005545108.tif 000013
【図１３】
0005545108.tif 000014
【図１４】
0005545108.tif 000015
【図１５】
0005545108.tif 000016
【図１６】
0005545108.tif 000017
【図１７】
0005545108.tif 000018
【図１８】
0005545108.tif 000019
【図１９】
0005545108.tif 000020
【図２０】
0005545108.tif 000021
【図２１】
0005545108.tif 000022
【図２２】
0005545108.tif 000023