(57)【要約】【課題】  ブリッジと複数の記憶装置との接続構成が前回動作時から変更された場合、ブリッジの動作モードと記憶装置との間に不整合が発生するのを防止するストレージシステム、その制御方法、プログラムを提供する。【解決手段】  コントローラ100と、コントローラにカスケード接続された第１乃至第３のブリッジ300〜310と、各々がいずれかのブリッジに接続された複数の記憶装置400〜403と、を有するストレージシステムであって、コントローラおよび第１乃至第３のブリッジの少なくとも１つは、各ブリッジと記憶装置との接続構成を含む情報を格納する記憶手段と、ブリッジとそれに接続された複数の記憶装置との接続構成が前回の動作時から変更されたか否かを、記憶手段に格納された情報に基づき判断する判断手段と、接続構成が変更されたと判断されると、その変更に合わせて各ブリッジの動作モードを再設定する再設定手段と、を有する。【選択図】  図７Ａ
2019159471.tif 000002
【特許請求の範囲】
【請求項１】
コントローラと、
前記コントローラに接続された第１のブリッジと、
前記第１のブリッジに接続された第２のブリッジおよび第３のブリッジと、
各々が前記第１乃至第３のブリッジのいずれかに接続された複数の記憶装置と、を有するストレージシステムであって、
前記コントローラ、前記第１乃至第３のブリッジの少なくとも１つは、
前記第１乃至第３のブリッジと前記記憶装置との接続構成、を含む情報を格納する記憶手段と、
前記第１乃至第３のブリッジとそれに接続された前記複数の記憶装置との接続構成が前回の動作時から変更されたか否かを、前記記憶手段に格納された情報に基づき判断する判断手段と、
前記判断手段により前記接続構成が変更されたと判断された場合、その接続構成の変更に合わせて前記第１乃至第３のブリッジの動作モードを再設定する再設定手段と、を有することを特徴とするストレージシステム。
【請求項２】
前記複数の記憶装置の各々は第一の種別の記憶装置または第二の種別の記憶装置であり、
前記記憶手段は、前記複数の記憶装置の各々の種別を情報として格納し、
前記判断手段は、前記第１乃至第３のブリッジそれぞれについて、接続されている複数の記憶装置が同一種別か異なる種別かを判断する、ことを特徴とする請求項１記載のストレージシステム。
【請求項３】
前記第一の種別の記憶装置は、高速なアクセス速度が要求されないデータを格納する記憶装置であり、前記第二の種別の記憶装置は、高速なアクセス速度が要求されるデータを格納する記憶装置である、ことを特徴とする請求項２に記載のストレージシステム。
【請求項４】
前記再設定手段は、前記ブリッジに複数の同一の種別の記憶装置が接続されていると前記判断手段により判断された場合に、当該ブリッジの動作モードとして第一の動作モードを再設定し、前記ブリッジに複数の異なる種別の記憶装置が接続されていると前記判断手段により判断された場合に、当該ブリッジに第二の動作モードを再設定する、ことを特徴とする請求項２または３に記載のストレージシステム。
【請求項５】
前記第一の動作モードはミラーリングモードであり、前記第二の動作モードはハイブリッドモードである、ことを特徴とする請求項４に記載のストレージシステム。
【請求項６】
前記判断手段および前記再設定手段を前記コントローラが有する場合に、動作時に、
前記判断手段は、前記第１乃至第３のブリッジに接続されているデバイスの確認の通知を前記第１乃至第３のブリッジに対して発行し、前記記憶手段に格納された情報と当該通知に対する前記第１乃至第３のブリッジからの返答内容とに基づき、前記第１乃至第３のブリッジとそれに接続されている前記複数の記憶装置との接続構成が前回の動作時から変更されたか否かを判断し、
前記判断手段により接続構成が前回の動作時から変更されたと判断されると、前記再設定手段は、前記第１乃至第３のブリッジに対して動作モードなどの問い合わせの通知を行ない、当該問い合わせの通知に対する前記第１乃至第３のブリッジからの返答内容に含まれる前記各ブリッジの現在の動作モードと前記デバイスの確認の通知に対する返答内容に含まれる前記複数の記憶装置の各々の種別とに基づき、前記各ブリッジのモードの再設定を行なう、ことを特徴とする請求項２乃至５のいずれか１項に記載のストレージシステム。
【請求項７】
前記判断手段および前記再設定手段を前記第１乃至第３のブリッジのいずれかが有する場合に、動作時に、
前記判断手段は、他のブリッジに接続されているデバイスの確認の通知を前記他のブリッジに対して発行し、前記記憶手段に格納された情報と当該通知に対する前記他のブリッジからの返答内容と自己のブリッジに接続されている記憶装置の構成とに基づき、前記第１乃至第３のブリッジとそれに接続されている前記複数の記憶装置との接続構成が前回の動作時から変更されたか否かを判断し、
前記判断手段により接続構成が前回の動作時から変更されたと判断されると、前記再設定手段は、前記他のブリッジに対して動作モードなどの問い合わせの通知を行ない、当該問い合わせの通知に対する前記他のブリッジからの返答内容に含まれる前記各ブリッジの現在の動作モードと自己のブリッジの動作モードと前記デバイスの確認の通知に対する返答内容に含まれる前記複数の記憶装置の各々の種別とに基づき、前記各ブリッジのモードの再設定を行なう、ことを特徴とする請求項２乃至５のいずれか１項に記載のストレージシステム。
【請求項８】
前記判断手段および前記再設定手段を前記コントローラが有する場合に、動作時に、
前記判断手段は、前記コントローラに接続されているブリッジの接続構成、および当該ブリッジの各々とそれに接続されている記憶装置との接続構成が前回の動作時から変更されたか否かを判断し、
前記判断手段により前記いずれかの接続構成が前回の動作時から変更されたと判断されると、前記再設定手段は、当該ブリッジの各々に対して動作モードなどの問い合わせの通知を行ない、当該問い合わせの通知に対する当該各ブリッジからの返答内容に含まれる当該各ブリッジの現在の動作モードに基づき、当該各ブリッジのモードの再設定を行なう、ことを特徴とする請求項１乃至５のいずれか１項に記載のストレージシステム。
【請求項９】
コントローラと、
前記コントローラにカスケード接続された、少なくとも第１および第２のブリッジと複数のデバイスと、を有するストレージシステムであって、
前記コントローラ、前記第１および第２のブリッジの少なくとも１つは、
前記第１および第２のブリッジと前記複数のデバイスとの接続構成、を含む情報を格納する記憶手段と、
前記第１および第２のブリッジと前記複数のデバイスとの接続構成が前回の動作時から変更されたか否かを、前記記憶手段に格納された情報に基づき判断する判断手段と、
前記判断手段により前記接続構成が変更されたと判断された場合、その接続構成の変更に合わせて前記第１および第２のブリッジの動作モードを再設定する再設定手段と、を有することを特徴とするストレージシステム。
【請求項１０】
前記複数のデバイスは記憶装置を含む、ことを特徴とする請求項１に記載のストレージシステム。
【請求項１１】
半導体メモリを有する不揮発性記憶装置と、ディスクを有する不揮発性記憶装置とを接続可能な制御装置において、
前記制御装置に対して前記半導体メモリを有する不揮発性記憶装置と前記ディスクを有する不揮発性記憶装置が接続されたことに応じて設定される所定の動作モードと、前記制御装置に対して前記半導体メモリを有する記憶装置が複数個接続され前記ディスクを有する不揮発性記憶装置が接続されない場合、または、前記制御装置に対して前記半導体メモリを有する記憶装置が接続されず前記ディスクを有する不揮発性記憶装置が複数接続される場合に、接続された複数の不揮発性装置をミラーリングする前記所定の動作モードとは別のミラーリングに関する動作モードを設定する設定手段を、備える制御装置。
【請求項１２】
コントローラと
前記コントローラに接続された第１のブリッジと、
前記第１のブリッジに接続された第２のブリッジおよび第３のブリッジと、
各々が前記第１乃至第３のブリッジのいずれかに接続された複数の記憶装置と、を有するストレージシステムの制御方法であって、
前記コントローラ、前記第１乃至第３のブリッジの少なくとも１つにより、
前記第１乃至第３のブリッジと前記記憶装置との接続構成、を含む情報を記憶手段に格納する格納工程と、
前記第１乃至第３のブリッジとそれに接続された前記複数の記憶装置との接続構成が前回の動作時から変更されたか否かを、前記記憶手段に格納された情報に基づき判断する判断工程と、
前記判断工程により、接続構成が変更されたと判断された場合に、その接続構成の変更に合わせて前記第１乃至第３のブリッジの動作モードを再設定する再設定工程と、が実行されることを特徴とする制御方法。
【請求項１３】
コンピュータを請求項１乃至１１のいずれか１項に記載された各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム、その制御方法およびプログラムに関する。
【背景技術】
【０００２】
ＭＦＰ（Multi Function Printer）に代表される画像形成装置等の情報処理装置は、装置のプログラムやユーザの画像データを保存するため、記憶装置を備えている。記憶装置としては、ＨＤＤ（Hard  Disk  Drive）やＳＳＤ（Solid State Drive）などがある。
【０００３】
従来から、記憶装置のインターフェース規格であるＳＡＴＡ（Serial Advanced        Technology Attachment）などを用いたストレージシステムの制御方法が提案されている。
例えば、２つのＨＤＤが接続されたストレージ制御装置において、複数の動作モードを設け、動作モードを切り替えることにより転送方式を切り替えてデータ転送を行なうような制御方法が知られている。
【０００４】
特許文献１は、ホスト側のメインコントローラに接続され、デバイス側のポートマルチプライヤとして機能するSATAブリッジに対して、さらにSATAブリッジを複数段カスケード接続して、ポートマルチプライヤの機能を拡張する制御方法を提案している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２０１１−５１５７４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
複数の動作モードを持ち、特許文献１に記載のようにカスケードに接続されたSATAブリッジから成るストレージシステムにおいて、SATAブリッジの先にさらに接続された複数の記憶装置のいずれかが入れ替えられて接続される場合等がある。その場合、入れ替え前のSATAブリッジの動作モードが継続されると、その動作モードは、入れ替え後の記憶装置に対して不整合となる恐れがある。さらには、カスケード接続されたSATAブリッジ間で動作モードが不整合となる恐れもある。
【０００７】
このように、ブリッジの動作モードと、そのブリッジに接続された記憶装置の間に不整合が生じた場合、ブリッジは正常に動作できなくなってしまう。さらにはカスケード接続されたブリッジ間においても動作モードが不整合となり正常な動作ができなくなってしまうといった課題がある。
【０００８】
本発明は、上記の課題を解決するためになされたものである。
本発明の目的は、ブリッジとそれに接続された複数の記憶装置との接続構成が前回の動作時から変更された場合に、ブリッジの動作モードと記憶装置との間に不整合が発生するのを防止するストレージシステム、その制御方法、プログラムを提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明のストレージシステムは以下の構成を備える。
コントローラと、前記コントローラに接続された第１のブリッジと、前記第１のブリッジに接続された第２のブリッジおよび第３のブリッジと、各々が前記第１乃至第３のブリッジのいずれかに接続された複数の記憶装置と、を有するストレージシステムであって、前記コントローラ、前記第１乃至第３のブリッジの少なくとも１つは、前記第１乃至第３のブリッジと前記記憶装置との接続構成を含む情報を格納する記憶手段と、前記第１乃至第３のブリッジとそれに接続された前記複数の記憶装置との接続構成が前回の動作時から変更されたか否かを、前記記憶手段に格納された情報に基づき判断する判断手段と、前記判断手段により前記接続構成が変更されたと判断された場合、その接続構成の変更に合わせて前記第１乃至第３のブリッジの動作モードを再設定する再設定手段と、を有することを特徴とするストレージシステム。
【発明の効果】
【００１０】
本発明によれば、カスケード接続されたブリッジとその先に接続された複数の記憶装置との接続構成が前回の動作時から変更された場合、その変更に合わせて各ブリッジの動作モードは再設定される。それにより、記憶装置が前回動作時から入れ替えられて接続される等の接続構成の変更があったとしても、ブリッジの動作モードと当該ブリッジに接続された記憶装置との間の不整合が防止され、ストレージシステムは正常に動作を継続できる。
【図面の簡単な説明】
【００１１】
【図１】情報処理装置全体の構成図。
【図２】実施例におけるメインコントローラの詳細構成図。
【図３】実施例におけるブリッジの詳細構成図。
【図４】実施例におけるカスケード接続されたブリッジの詳細構成図。
【図５】実施例におけるブリッジの状態遷移図。
【図６Ａ】実施例におけるメインコントローラによる初期化処理のフローチャート。
【図６Ｂ】実施例におけるブリッジによる初期化処理のフローチャート。
【図７Ａ】実施例におけるメインコントローラによるモード再設定処理のフローチャート。
【図７Ｂ】実施例におけるブリッジによるモード再設定処理のフローチャート。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態について図面を用いて例示的に詳しく説明する。ただし、この実施の形態に記載されている構成要素はあくまで例示であり、この発明の範囲をそれらのみに限定する趣旨のものではない。
【実施例１】
【００１３】
図１に、本発明の実施例によるストレージシステムを含む情報処理装置全体の構成図を示す。本実施例では、情報処理装置の一例として、ＭＦＰ等の画像形成装置に適用した例について説明するが、それに限定されるものではなく、複数の記憶装置を備えた構成の情報処理装置に適応可能である。特に、カスケード接続されたブリッジとそれらに接続された複数の記憶装置を備えた構成の情報処理装置に好適に適応可能である。
【００１４】
図１に示す本実施例の情報処理装置は、メインコントローラ100と、データを格納する複数、例えば、４つの記憶装置400、401、402、403と、複数、例えば、３つのブリッジ200、300、310によって構成されている。ブリッジ200、300、310は、これら記憶装置に対してデータの送受信を行う。メインコントローラ100は情報処理装置全体を制御するとともに、内部のＭＦＰも制御する
【００１５】
本実施例では、記憶装置１（400）、記憶装置２（401）は、高速なアクセス速度が要求されないデータを格納する機能を有する第１の種別の記憶装置、ここではディスクを有する不揮発性記憶装置である。即ち、第１の種別の記憶装置はディスクアクセスを伴う不揮発性記憶装置であり、例えば、ＨＤＤ（ＨＤＤ1、ＨＤＤ2）である。また、記憶装置３（402）、記憶装置４（403）は、高速なアクセス速度が要求されるデータを格納する機能を有する第２の種別の記憶装置、ここでは半導体メモリを有する不揮発性記憶装置である。即ち、第２の種別の記憶装置はＳＳＤなどの半導体フラッシュメモリを有する記憶装置であり、ここでは、ＳＳＤ（ＳＳＤ1、ＳＳＤ2）とする。しかし、第１の種別、第２の種別の記憶装置としては、ＨＤＤ、ＳＳＤに限定されるものではない。また、第１の種別、第２の種別の定義も例示であり、これらに限定されるものではない。
また、本実施例ではブリッジの個数を３つとしたが、これに限定されるものではなく、ブリッジ300、310のうち少なくとも１つを削減したり、非図示のブリッジをさらに追加接続する構成にも対応できる。
【００１６】
図２に、ホストとしてのメインコントローラ100の具体的な構成例を示す。
メインコントローラ100は、ＣＰＵ101、ＲＯＭ102、ＤＲＡＭ103、各種の画像処理部、例えば、スキャン画像処理部105およびプリンタ画像処理部107、スキャナ106、プリンタ108、操作部109を有する。これら構成要素は、ＭＦＰを構成する。メインコントローラ100は、さらに、Network104、SATAコントローラ110を有する。
ＣＰＵ101は、メインコントローラ100および情報処理装置全体を制御するもので、システム制御、演算処理、ＯＳやアプリケーションを実行する。
【００１７】
ＲＯＭ102は、読出し専用のメモリであり、ＣＰＵ101で実行される制御プログラムおよび設定情報を格納する。ＤＲＡＭ103は、ＣＰＵ101で実行される制御プログラムを格納するとともに、一時的なワークエリアとしても機能する。
Network104は、ネットワークＩ／Ｆであり、ＭＦＰ内で画像処理を施した画像データをＬＡＮ（Local Area Network）111経由で外部情報機器（不図示）に送信する。または、Network104は、外部情報機器から画像データを入力する。
【００１８】
スキャナ106は、画像入力デバイスであり、原稿となる紙上の画像に光を照射し、ＣＣＤラインセンサ（不図示）を走査することでラスター・イメージデータを得、電気信号に変換して出力する。
スキャン画像処理部105は、スキャナ106から受信した電気信号の画像データに画像処理を施す。画像処理された画像データは、SATAコントローラ110、ブリッジ200等を経由して、記憶装置400〜403のいずれかに格納される。
【００１９】
プリンタ画像処理部107は、受信した画像データに画像処理を施し、画像処理した画像データをプリンタ108へ送信する。プリンタ108は、画像出力デバイスであり、受信したラスター・イメージデータ等の画像データを用紙上に画像として印刷する。
操作部109は、表示機能と操作機能を兼ね備えたタッチパネル等のユーザインターフェイスデバイスである。操作部109は、メインコントローラ100に入力された画像データを表示する機能、システム使用者（ユーザ）が入力した情報をＣＰＵ101に伝える機能等を有する。
SATAコントローラ110は、ＣＰＵ101の制御の下で、SATAコントローラ110に接続されたブリッジ200等のデバイスをSATA規格に準拠して制御し、ブリッジ200等とデータの送受信を行う。
【００２０】
図３に、ブリッジ200の詳細な構成例を示す。
ブリッジ200のＣＰＵ201は、ブリッジ200におけるシステム制御、演算処理、ATAコマンド処理等を行うとともに、記憶装置400〜403、ブリッジ300、310への送信コマンド処理等を行う。ＲＯＭ202は、ＣＰＵ201で実行される制御プログラムや各種モードの設定値のデータを格納する。ＲＡＭ203は、ＣＰＵ201で実行される制御プログラムを格納するとともに、一時的なワークエリアとしても機能する。
【００２１】
SATAデバイスＩ／Ｆ204は、メインコントローラ100に接続され、SATA規格に準拠して、メインコントローラ100内のSATAコントローラ110と通信する。SATAホストＩ／Ｆ205、206は、それぞれブリッジ300、310に接続され、SATA規格に準拠してブリッジ300、310と通信する。
【００２２】
図４に、カスケード接続されたブリッジ200とブリッジ300、同じくブリッジ200とカスケード接続されたブリッジ310の詳細な構成例を示す。ブリッジ200、300、310は内部の構成が同一であるとして説明するが、同一の構成に限定されるものではない。本発明の目的を果たす範囲で、一部のブリッジにおいて機能を追加または削除して良いことは言うまでもない。
ブリッジ300のＣＰＵ301は、システム制御、演算処理、ATAコマンド処理を行うとともに、記憶装置400、記憶装置401への送信コマンド処理等を行う。ＲＯＭ302は、ＣＰＵ301の制御プログラムや各種モードの設定値のデータを格納する。ＲＡＭ303は、ＣＰＵ301で実行する制御プログラムを格納するとともに、一時的なワークエリアとしても機能する。
【００２３】
SATAデバイスＩ／Ｆ304は、ブリッジ200に接続され、SATA規格に準拠してブリッジ200内のSATAホストＩ／Ｆ205と通信する。
SATAホストＩ／Ｆ305、306は、それぞれ、デバイス、ここでは記憶装置400、401に接続され、SATA規格に準拠して記憶装置400、401と通信する。
【００２４】
同様に、ブリッジ310のＣＰＵ311は、システム制御、演算処理、ATAコマンド処理を行うとともに、記憶装置402、記憶装置403への送信コマンド処理等を行う。ＲＯＭ312は、ＣＰＵ311の制御プログラムや各種モードの設定値のデータを格納する。ＲＡＭ313は、ＣＰＵ311で実行する制御プログラムを格納するとともに、一時的なワークエリアとしても機能する。
【００２５】
SATAデバイスＩ／Ｆ314は、ブリッジ200に接続され、SATA規格に準拠してブリッジ200内のSATAホストＩ／Ｆ206と通信する。
SATAホストＩ／Ｆ315、316は、それぞれ、デバイス、ここでは記憶装置402、403に接続され、SATA規格に準拠して記憶装置402、403と通信する。
【００２６】
本実施例では、ブリッジ200、300、310は、SATAインターフェースで接続されるSATAブリッジとして説明するが、これに限定されるものではない。各ブリッジは、例えば、ＰＣＩＥ（Peripheral Component Interconnect Express）などの他のインターフェースでもよい。
また、本実施例では、SATAコントローラ110、ブリッジ200、300、310はそれぞれ別チップで構成されるものとして説明するが、これに限定されるものではない。例えば、SATAコントローラ110、ブリッジ200、300、310のいずれか２つ以上が同一チップ内に含まれるよう構成されてもよい。
【００２７】
図５に、実施例１におけるブリッジ200、300、310の状態遷移図を示す。
図５を参照して、以下にブリッジ200、300、310の動作を説明する。
ここでは代表例として、ブリッジ300の動作について図４を参照して説明するが、他のブリッジ200、310も同様に動作する。また、ブリッジ300に接続された記憶装置400、401として、ＨＤＤを用いた場合について説明する。
【００２８】
各ブリッジ200、300、310は、シングルモード（S501）、ミラーリングモード（S502）、ハイブリッドモード（S503）の３つの動作モードを有する。
シングルモード（S501）は、ブリッジが、その１台のSATAホストＩ／ＦのみにＨＤＤが装着された状態で動作するモードである。ブリッジ300においては、シングルモード（S501）は、SATAホストＩ／Ｆ305かSATAホストＩ／Ｆ306のいずれか片方のみにＨＤＤが接続された状態で動作するモードである。
【００２９】
ＣＰＵ301は、シングルモード（S501）において、SATAデバイスＩ／Ｆ304を介して、ホスト側（ブリッジ200側）からミラーリングモード（S502）への移行命令を受けると、ミラーステート（S504）へ移行する。
また、ＣＰＵ301は、シングルモード（S501）において、SATAデバイスＩ／Ｆ304を介して、ホスト側からハイブリッドモード（S503）への移行命令を受けると、ハイブリッドステート（S508）へ移行する。
【００３０】
ＣＰＵ301は、各ステートに移行した際に、移行したステートをＲＯＭ302に格納する。
シングルモード（S501）はデフォルトの動作モードであり、ＣＰＵ301は起動時にＲＯＭ302に前回動作時（起動などの初期化時またはデバイスにアクセスする際）のモードが記憶されていない場合には、シングルモード（S501）で動作を開始する。
また、ＣＰＵ301は、起動時にＲＯＭ302に前回動作時のモードが記憶されていた場合には、その記憶されていた動作モードにて動作を開始する。
【００３１】
ミラーリングモード（S502）は、２つのSATAホストＩ／Ｆ305、306それぞれにＨＤＤが装着された状態で動作するモードである。
ミラーリングモード（S502）には、ミラーステート（S504）、デグレードステート（S505）、リビルドステート（S506）、ホールトステート（S507）の４つの状態が存在する。
【００３２】
ミラーリングモード（S502）では、ＣＰＵ301は、２つのSATAホストＩ／Ｆ305、306それぞれに接続されたＨＤＤに対して、片方をマスターＨＤＤ、もう片方をスレーブＨＤＤとして扱う。
ミラーステート（S504）は、２つのSATAホストＩ／Ｆ305、306にＨＤＤが装着された状態で両方のＨＤＤが正常に動作している状態である。
ミラーステート（S504）において、ＣＰＵ301は、SATAデバイスＩ／Ｆ304を介してホスト側からデータ読み出し命令を受けると、当該命令を、SATAホストＩ／Ｆ305、306に接続されたＨＤＤのうちマスターＨＤＤのみに対して実行する。
【００３３】
ミラーステート（S504）において、ＣＰＵ301は、SATAデバイスＩ／Ｆ304を介してホスト側からデータ書き込み命令を受けると、当該命令を、SATAホストＩ／Ｆ305、306に接続されたＨＤＤに対して実行する。即ち、ＣＰＵ301は、当該命令をマスターＨＤＤとスレーブＨＤＤの両方に対して実行する。
ミラーステート（S504）において、マスターＨＤＤとスレーブＨＤＤのどちらか片方のＨＤＤに異常、例えば故障が生じると、デグレードステート（S505）へ移行する。
ミラーステート（S504）において、ＣＰＵ301は、SATAデバイスＩ／Ｆ304を介してホスト側からリビルドステート（S506）への移行命令を受けると、リビルドステート（S506）へ移行する。
【００３４】
デグレードステート（S505）は、一方のSATAホストＩ／Ｆに接続されているＨＤＤに異常、例えば故障を検知してそのＨＤＤへのアクセスを中止し、他方のSATAホストＩ／Ｆに接続されている正常なＨＤＤのみで動作している状態である。
【００３５】
デグレードステート（S505）において、ＣＰＵ301は、故障しているＨＤＤの代わりに新たに正常なＨＤＤがSATAホストＩ／Ｆに接続されたことを検知すると、リビルドステート（S506）へ移行する。
デグレードステート（S505）において、ＣＰＵ301は、SATAホストＩ／Ｆ305、306に接続されているＨＤＤがともに異常であると検知すると、ホールトステート（S507）へ移行する。これは、例えば、他方のSATAホストＩ／Ｆに接続されているＨＤＤも故障した場合に該当する。
【００３６】
リビルドステート（S506）は、片方のＨＤＤ（前から装着され故障していないＨＤＤ）のみで動作している状態ではあるが、他方のＨＤＤ（故障したＨＤＤの代わりに新たに装着されたＨＤＤ）へデータをコピー（リビルド）している状態である。
この時、ＣＰＵ301は、コピー元のＨＤＤ（前から装着され故障していないＨＤＤ）をマスターＨＤＤ、コピー先のＨＤＤ（故障したＨＤＤの代わりに新たに装着されたＨＤＤ）をスレーブＨＤＤとして扱う。
【００３７】
リビルドステート（S506）において、リビルドが完了すると、ミラーステート（S504）へ移行する。リビルドステート（S506）において、スレーブＨＤＤが故障すると、デグレードステート（S505）へ移行する。また、リビルドステート（S506）において、マスターＨＤＤが故障すると、ホールトステート（S507）へ移行する。
ホールトステート（S507）は、両方のＨＤＤが異常状態になったことにより、ミラーリング動作が継続できなくなった状態である。
【００３８】
ここではSATAホストＩ／Ｆ305、306に接続されるデバイスの例としてＨＤＤを挙げたが、ＳＳＤやブリッジの場合も同様である。
SATAホストＩ／Ｆ305、306に接続されるデバイスがＳＳＤの場合には、ＣＰＵ301は、ＨＤＤの場合と同様に、ＳＳＤ自体が、例えば故障している場合に、異常なデバイスが接続されていると判断する。
SATAホストＩ／Ｆ305、306に接続されるデバイスがブリッジの場合には、ＣＰＵ301は、そのブリッジが、例えば故障により異常状態であることが通知された場合に、異常なデバイスが接続されていると判断する。
【００３９】
ハイブリッドモード（S503）は、２つのSATAホストＩ／Ｆ305、306に対して異なる種別の記憶装置、ここではＨＤＤとＳＳＤが装着された状態で動作するモードである。
ハイブリッドモード（S503）には、ハイブリッドステート（S508）、エラーステート（S509）の２つの状態が存在する。
ハイブリッドモード（S502）では、ＣＰＵ301は２つのSATAホストＩ／Ｆ305、306に接続されるＨＤＤとＳＳＤに対してアドレスを統合し、SATAデバイスＩ／Ｆ304を介してホスト側からは１つの記憶装置として見えるように動作する。
【００４０】
ハイブリッドステート（S508）は、２つのSATAホストＩ／Ｆ305、306にＨＤＤとＳＳＤが装着された状態で、これらＨＤＤとＳＳＤが正常に動作している状態である。
ハイブリッドステート（S508）において、ＣＰＵ301はＨＤＤとＳＳＤのどちらか片方に異常、例えば、故障が発生すると、エラーステート（S509）へ移行する。
エラーステート（S509）は、ＨＤＤとＳＳＤのどちらか片方が異常状態になったことにより、ハイブリッド動作が継続できなくなった状態である。
【００４１】
図６Ａのフローチャートを用いて、本実施例においてメインコントローラ100内のＣＰＵ101が実行する、SATAコントローラ110に接続されたSATAデバイスに対する初期化処理を説明する。
図６Ａのフローチャートに係るＣＰＵ101上で動作するプログラムは、ＤＲＡＭ103、ＲＯＭ102または記憶装置400〜403のいずれかに格納されてよい。
ここでは初期化処理をメインコントローラ100内のＣＰＵ101が実行するものとして説明するが、本処理はブリッジ200、300、310のいずれかで行うようにしてもよい。
なお、以下の説明において、符号Sはステップを示す。これは、以下に説明する他のフローチャートについても同様である。
【００４２】
図６Ａのフローチャートに示す処理は、起動などの初期化時に実行されるものとして説明するが、これに限定されるものではない。この処理フローは、SATAコントローラ110に接続されているSATAデバイスにアクセスする際、例えば、アクセスする毎に実行されても構わない。
先ず、S601において、ＣＰＵ101は、SATAコントローラ110を介して、SATAコントローラ110に接続されたデバイスの有無等、ここではSATAデバイスが接続されているか否か等をデバイス側に確認する。具体例としては、ＣＰＵ101から、IDENTIFY DEVICEコマンドなどのATAコマンドをSATAコントローラ110を介してデバイス側に発行し、SATAデバイスが接続されているか否か等を確認する。即ち、ＣＰＵ101は、SATAコントローラ110を介して接続デバイスの有無等の確認の通知をデバイス側に送る。
【００４３】
S601で発行したIDENTIFY DEVICEコマンドに対してデバイス側からSATAコントローラ110を介して返答があった場合（S602でYes）、ＣＰＵ101は、SATAコントローラ110に接続デバイスありと判断する。即ち、ＣＰＵ101は、SATAコントローラ110にSATAデバイスが接続されていると判断し、処理をS603に進める。
一方、IDENTIFY DEVICEコマンドに対してデバイス側から返答がない場合（S602でNo）、ＣＰＵ101は、SATAコントローラ110に接続デバイスなし、即ち、SATAデバイスが接続されていないと判断し、処理をS605に進める。S605において、ＣＰＵ101は、SATAコントローラ110に接続デバイスなしとして、操作部109にエラー表示を行なう。その後、ＣＰＵ101は、処理をS610に進め、S602で得られた情報をＲＯＭ102に格納するようにしてよい。
【００４４】
S603において、ＣＰＵ101は、S601で発行したIDENTIFY DEVICEコマンドに対する返答内容から、SATAコントローラ110にSATAデバイスとしてブリッジが接続されているか否かを判断する。
S603において、ＣＰＵ101は、SATAコントローラ110にブリッジ（図2の具体例ではブリッジ200）が接続されていると判断した場合（S603でYes）、処理をS604に進める。
一方、S603において、ＣＰＵ101は、SATAコントローラ110にブリッジではなく記憶装置が接続されていると判断した場合（S603でNo）、処理をS609に進め、その記憶装置に対して後述する初期化処理を行なう。
【００４５】
S604において、ＣＰＵ101は、S601で発行したIDENTIFY DEVICEコマンドに対する返答内容から、SATAコントローラ110に接続されたブリッジ200の先にさらに接続デバイスがあるか否かを判断する。
S604において、ＣＰＵ101は、ブリッジ200の先にさらに接続デバイスがあると判断した場合（S604でYes）、処理をS606に進め、接続デバイスはないと判断した場合（S604でNo）、処理をS605に進める。
なお、IDENTIFY DEVICEコマンドに対する返答内容には、接続デバイスの有無と共に、接続デバイスがある場合においては、その接続デバイスの情報も含まれる。即ち、接続デバイスとしては、図１の具体例ではブリッジ300、310の設定情報や動作モード、ブリッジ300、310とそれに接続された記憶装置400〜403の接続関係（接続構成ともいう）や各記憶装置の種別等が含まれる。
【００４６】
S605において、ＣＰＵ101は、ブリッジ200に、またはその先に接続されているデバイスは検出できないとして、操作部109にエラー表示を行ない、処理をS610に進める。S610において、ＣＰＵ101は、IDENTIFY DEVICEコマンドに対する返答内容に含まれる接続デバイス情報から得られたブリッジ200の設定情報等を接続構成情報として、ＲＯＭ102に格納する。
S606において、ＣＰＵ101はS601で発行したIDENTIFY DEVICEコマンドに対する返答内容から、SATAコントローラ110にブリッジがカスケード接続されているか否かを判断する。ここでブリッジがカスケード接続されている例としては、図１に示すように、ブリッジ200の先に、少なくともブリッジ300、310のうち１つが接続されている場合が挙げられる。
【００４７】
S606において、ＣＰＵ101は、SATAコントローラ110にブリッジがカスケード接続されていると判断した場合（S606でYes）、処理をS608に進める。
一方、S606において、ＣＰＵ101は、SATAコントローラ110にはブリッジ200のみが接続され、カスケード接続はなされていないと判断した場合（S606でNo）、処理をS607に進める。
【００４８】
S607において、ＣＰＵ101は、デバイス側からの返答内容に含まれる接続デバイス情報に基づき、SATAコントローラ110を介してブリッジ200にモード設定指示を送り、ブリッジ200の動作モードを再設定する。即ち、ＣＰＵ101は、接続デバイス情報に含まれる各ブリッジと各記憶装置との接続関係（接続構成）と各記憶装置の種別とから各ブリッジの動作モードを決定し、各ブリッジに決定された動作モードを設定する。その際、ブリッジ200に対して設定する動作モードはミラーリングモードS502かハイブリッドモードS503のいずれかである。
具体例としては、ＣＰＵ101は、ブリッジ200に接続されている２つの記憶装置が同一種別の記憶装置（例えば、ＨＤＤまたはＳＳＤ）であれば、ミラーリングモードを設定する。一方、ＣＰＵ101は、ブリッジ200に接続されている２つの記憶装置が異なる種別の記憶装置（例えば、ＨＤＤとＳＳＤ）であれば、ハイブリッドモードを設定する。
ＣＰＵ101は、その後、処理をS609に進め、SATAコントローラ110からブリッジ200に、接続されている記憶装置に対する初期化処理指示を送信し、記憶装置の初期化処理を実行させる。
なお、勿論、ブリッジ200に１つの記憶装置のみが接続されている場合には、シングルモードを再設定するようにしてよい。
【００４９】
S608において、ＣＰＵ101は、SATAコントローラ110を介して、カスケード接続されているブリッジにモード設定指示を送り、ブリッジの動作モードを再設定する。ここでは図１に示すように、３つのブリッジ200、300、310がカスケード接続され、ブリッジ300、310それぞれに２つの記憶装置が接続されているとする。その際、ブリッジ200、300、310に対して設定する動作モードはミラーリングモードS502とハイブリッドモードS503の両方である。
【００５０】
具体例としては、図１に示す構成のように、ブリッジ300に接続されている２つの記憶装置400、401が共に、同一種別である第1の種別の記憶装置（ＨＤＤ１、ＨＤＤ２）であれば、ＣＰＵ101は、ブリッジ300にミラーリングモードを設定する。同様に、ブリッジ310に接続されている２つの記憶装置402、403が共に、同一種別である第２の種別の記憶装置（ＳＳＤ１、ＳＳＤ２）であれば、ＣＰＵ101は、ブリッジ310にミラーリングモードを設定する。従って、この場合、ＣＰＵ101は、ブリッジ200にはハイブリッドモードを設定する。
【００５１】
別の具体例として、ブリッジ300、310各々において、接続されている２つの記憶装置が異なる種別の記憶装置、例えばＨＤＤとＳＳＤであれば、ＣＰＵ101は、ブリッジ300、310それぞれにハイブリッドモードを設定する。従って、この場合、ＣＰＵ101は、ブリッジ200にはミラーリングモードを設定する。このようにして、ブリッジ200、300、310の動作モードとそれらに接続された記憶装置の組み合わせとの整合性が保持される。
【００５２】
S609において、ＣＰＵ101は、SATAコントローラ110からブリッジ200に、ブリッジ300、310に接続されている記憶装置400〜403に対する初期化処理指示を送信し、記憶装置400〜403の初期化処理を実行させる。
次いで、S610において、ＣＰＵ101は、IDENTIFY DEVICEコマンドに対するデバイス側からの返答内容に含まれる、SATAコントローラ110の先に接続されている接続デバイスの情報を接続構成情報として格納する。ここでは、接続構成情報としては、各ブリッジと記憶装置との接続関係（接続構成）、各記憶装置の種別、各ブリッジの動作モードや設定情報等であり、ＲＯＭ102あるいは記憶装置400〜403のいずれかに格納される。
【００５３】
本実施例では、接続されているデバイス構成を確認するための方法として、IDENTIFY DEVICEコマンドを用いる例について説明した。しかし、デバイス構成を確認する方法はこれに限定されるものではなく、SATAデバイスの有無等の確認、ブリッジが存在の有無等の確認、ブリッジがカスケード接続されているか否か等の確認ができる方法であれば、どのような方法でも良い。また、接続されているデバイス構成を確認するための方法としてはATAコマンドに限定されるものではなく、拡張コマンド等を発行しても構わない。
【００５４】
次に図６Ｂのフローチャートを用いて、本実施例において各ブリッジ200、300、310が実行する、それらに接続されたSATAデバイスに対する初期化処理を説明する。
ここでは一例としてブリッジ200内のＣＰＵ201が実行する初期化処理を説明するが、本処理は他のブリッジ300、310においても同様に実行される。
図６Ｂのフローチャートに係るＣＰＵ201上で動作するプログラムは、ＲＡＭ203、ＲＯＭ202または記憶装置400〜403のいずれかに格納されてよい。
【００５５】
図６Ｂのフローチャートに示す処理は、起動などの初期化時に実行されるものとして説明するが、これに限定されるものではなく、ブリッジに接続されているSATAデバイスにアクセスする際、例えば、アクセスする毎に実行されても構わない。
先ず、S621において、ＣＰＵ201は、SATAデバイスＩ／Ｆ204を介して、ホスト側（SATAコントローラ110）から接続デバイスの有無等の確認の通知を受ける。すると、ＣＰＵ201は、SATAホストＩ／Ｆ205、206の先にSATAデバイスが接続されているか否か等を確認する。具体例としては、ＣＰＵ201から、IDENTIFY DEVICEコマンドなどのATAコマンドをSATAホストＩ／Ｆ205、206を介してデバイス側に発行し、SATAデバイスが接続されているか否か等を確認する。
【００５６】
S621で発行したIDENTIFY DEVICEコマンドに対してデバイス側からSATAコントローラ110を介して返答があった場合（S622でYes）、ＣＰＵ201は、SATAホストＩ／Ｆ205、206の先にSATAデバイスありと判断する。その後、ＣＰＵ201は、処理をS623に進める。
一方、S621で発行したIDENTIFY DEVICEコマンドに対してデバイス側から返答がない場合（S622でNo）、ＣＰＵ201は、SATAホストＩ／Ｆ205、206に接続デバイスなしと判断する。即ち、ＣＰＵ201は、SATAホストＩ／Ｆ205、206にSATAデバイスが接続されていないと判断し、処理をS627に進める。
【００５７】
S623において、ＣＰＵ201は、S621で発行したIDENTIFY DEVICEコマンドに対するデバイス側からの返答に、SATAホストＩ／Ｆ205、206に接続デバイスがない旨のエラー通知が含まれているか否かを判断する。
S623において、ＣＰＵ201は、IDENTIFY DEVICEコマンドに対するデバイス側からの返答にエラー通知が含まれていると判断した場合（S623でYes）、処理をS627に進める。
一方、S623において、ＣＰＵ201は、IDENTIFY DEVICEコマンドに対するデバイス側からの返答にエラー通知が含まれていないと判断した場合（S623でNo）、処理をS624に進める。
【００５８】
S627において、ＣＰＵ201は、SATAホストＩ／Ｆ205、206にデバイスが接続されていないエラー状態であることをホスト側へ通知する。それにより、メインコントローラ100においては、SATAホストＩ／Ｆ205、206に接続デバイスなしとして、操作部109にエラー表示がなされる。その後、ＣＰＵ201は、処理をS628に進め、S622で得られた接続デバイスの情報を接続構成情報としてＲＯＭ202に格納するようにしてよい。
【００５９】
S624において、ＣＰＵ201は、S621で発行したIDENTIFY DEVICEコマンドに対するデバイス側からの返答内容とブリッジ200自身の情報とをマージして接続デバイスの情報を得る。S624において、さらにＣＰＵ201は、接続デバイス情報をSATAデバイスＩ／Ｆ204を介してホスト側へ返答する。
なお、デバイス側からの返答内容には、ブリッジ200に接続されたSATAデバイスの接続デバイス情報、即ち、図１の例ではブリッジ300、310の設定情報、これらブリッジに接続された記憶装置400〜403の接続構成や種別等が含まれる。
【００６０】
その後、S625において、ＣＰＵ201は、通知した接続デバイス情報に応答したホスト側からのモード設定指示を、SATAデバイスＩ／Ｆ204を介して受信する。
さらに、ＣＰＵ201は、受信したモード設定指示から、ブリッジ200宛てのモード設定指示内容とSATAホストＩ／Ｆ205、206に接続されているデバイス宛て（図１の具体例ではブリッジ300、310宛て）のモード設定指示内容の識別を行なう。
【００６１】
次いで、S625において、ＣＰＵ201は、識別された、ブリッジ200宛てのモード設定指示に従い、自己の動作モードの設定を行なう。また、ＣＰＵ201は、識別された、SATAホストＩ／Ｆ205、206に接続されているデバイス宛てのモード設定指示内容を、SATAホストＩ／Ｆ205、206を介してブリッジ300、310に通知する。それにより、当該モード設定指示に従い、ブリッジ300、310の動作モードの設定がなされる。
【００６２】
その後、S626において、ＣＰＵ201は、ホスト側からSATAデバイスＩ／Ｆ204を介して、記憶装置400〜403に対する初期化処理指示を受信する。するとＣＰＵ201は、受信した初期化処理指示をSATAホストＩ／Ｆ205、206に接続されているデバイスに対して通知する。それにより、ブリッジ300、310に接続されている記憶装置400〜403の初期化処理がなされる。
【００６３】
次いで、S628において、ＣＰＵ201は、S625で設定したブリッジ200の動作モードやS622で得た接続デバイスの情報を、接続構成情報としてＲＯＭ202に格納する。
以上により、ブリッジ200における初期化処理を終了する。
ブリッジ200に接続された他のブリッジ300、310においても、同様にして初期化処理が実施される。
【００６４】
図７Ａのフローチャートを用いて、本実施例においてメインコントローラ100内のＣＰＵ101が実行する、SATAコントローラ110に接続されたデバイスのモード再設定処理を説明する。
図７Ａのフローチャートに係るＣＰＵ101上で動作するプログラムは、ＤＲＡＭ103、ＲＯＭ102または記憶装置400〜403のいずれかに格納されてよい。
ここでは、本フローチャートによるモード再設定処理をメインコントローラ100内のＣＰＵ101が実行するものとして説明するが、本処理はブリッジ200、300、310のいずれかで行うようにしてもよい。
【００６５】
図７Ａの処理フローは、ここでは起動などの初期化時に実行されるものとして説明するが、これに限定されるものではなく、接続されているSATAデバイスにアクセスする際、例えば、アクセスする毎に実行されても構わない。
先ず、S701において、ＣＰＵ101は、IDENTIFY DEVICEコマンドなどのATAコマンドを、SATAコントローラ110を介してデバイス側に発行し、SATAデバイスが接続されているか否か等を確認する。即ち、ＣＰＵ101は、SATAコントローラ110を介して接続デバイスの有無等の確認の通知をデバイス側に送る。
S701で発行したIDENTIFY DEVICEコマンドに対してデバイス側から返答があった場合（S702でYes）、ＣＰＵ101は、SATAコントローラ110に接続デバイスありと判断する。即ち、ＣＰＵ101は、SATAコントローラ110にSATAデバイスが接続されていると判断し、処理をS703に進める。
【００６６】
一方、S701で発行したIDENTIFY DEVICEコマンドに対してデバイス側から返答がない場合（S702でNo）、ＣＰＵ101は、SATAコントローラ110に接続デバイスなしと判断する。即ち、ＣＰＵ101は、SATAコントローラ110にSATAデバイスが接続されていないと判断し、処理をS704に進める。
S704において、ＣＰＵ101は、SATAコントローラ110に接続デバイスなしとして、具体的には、デバイス側にSATAデバイスを検出できないとして操作部109にエラー表示を行ない、処理を終了する。なお、ＣＰＵ101は、S702で得られた情報をＲＯＭ102に格納した後に処理を終了するようにしてもよい。
【００６７】
S703において、ＣＰＵ101は、S701で発行したIDENTIFY DEVICEコマンドに対するデバイス側からの返答内容と、図６Ａの初期化処理の際にＲＯＭ102等に記憶されている前回起動時の接続構成と、の比較を行なう。ここで、ＲＯＭ102等に記憶されている前回起動時の接続構成とは、図１の具体例に示すように、ブリッジ200、300、310間の接続構成、記憶装置400〜403間の接続構成、これらブリッジと記憶装置との接続構成を示すものとする。また、デバイス側からの返答内容は、同様に、SATAコントローラ110に接続されているデバイス、即ち、ブリッジ200、300、310間の接続構成、記憶装置400〜403間の接続構成、これらブリッジと記憶装置との接続構成を示すものとする。
【００６８】
ＣＰＵ101は、前回起動時のブリッジと記憶装置との接続構成と、S701で発行したIDENTIFY DEVICEコマンドに対するデバイス側からの返答内容が示す接続構成と、で変更がないと判断した場合（S703でNo）、処理をS706に進める。ここで、接続構成に変更がないとは、図１の具体例において、SATAコントローラ110に接続されているブリッジ200、300、310間の接続関係、およびブリッジ300、310と記憶装置400〜403との接続構成に一切変更がないことをいう。即ち、接続構成の変更とは、ブリッジ間の接続構成またはブリッジと記憶装置間の接続構成の変更、ブリッジに接続された記憶装置の少なくとも一部の相互入れ替え、記憶装置の削除または新たな記憶装置の追加接続等である。さらに、ブリッジに接続されている一部の記憶装置が新たな記憶装置と交換される場合等も含む。
従って、接続構成に一切変更がない場合には、各ブリッジ200、300、310の動作モードについても変更はない。
【００６９】
S706において、ＣＰＵ101は、SATAコントローラ110に接続されているブリッジ200、300、310と記憶装置400〜403の接続構成に一切変更はないものとして、前回起動時の構成、動作モードのまま各ブリッジを起動する。その後、ＣＰＵ101は、処理を終了する。なお、ＣＰＵ101は、S702で得られた情報をＲＯＭ102等に格納した後に処理を終了するようにしてもよい。
【００７０】
一方、ＣＰＵ101は、前回起動時の記憶装置とブリッジとの接続構成と、S701で発行したIDENTIFY DEVICEコマンドに対する返答内容が示す接続構成とで変更があると判断した場合（S703でYes）、処理をS705に進める。S705において、ＣＰＵ101は、前回起動時の記憶装置とブリッジとの接続構成と、IDENTIFY DEVICEコマンドに対するデバイス側からの返答内容が示す接続構成とから、ブリッジ200〜310の接続構成に変更があったか否かを判断する。ブリッジの接続構成の変更とは、ブリッジの接続形態（例えば、図１のカスケード接続形態）の変更、ブリッジ200、300、310のいずれかの削除、または新たなブリッジの追加、（さらにブリッジの接続デバイスの変更も含む）等を含む。
【００７１】
ＣＰＵ101は、ブリッジ200、300、310の接続構成に変更があったと判断した場合（S705でYes）、処理をS711に進める。
一方、ＣＰＵ101は、ブリッジ200、300、310の接続構成には変更がないと判断した場合（S705でNo）、処理をS708に進める。
【００７２】
S708において、ＣＰＵ101は、前回起動時の記憶装置とブリッジとの接続構成と、IDENTIFY DEVICEコマンドに対する返答内容とから、ブリッジと記憶装置との組み合わせのみが変更されたか否かを判断する。ブリッジと記憶装置との組み合わせのみの変更例としては、ブリッジ300、310に接続されている記憶装置400〜403の少なくとも一部が互いに入れ替わる場合や、ブリッジ200、300、310相互間での入替えを含む。例えば、図１に示す構成においては、記憶装置401（ＨＤＤ２）と記憶装置402（ＳＳＤ１）が互いに入れ替わる場合や、ブリッジ300と310とが互いに入れ替わる場合等である。
【００７３】
ＣＰＵ101は、ブリッジと記憶装置との組み合わせのみの変更ではないと判断した場合（S708でNo）、処理をS716に進める。ブリッジと記憶装置との組み合わせのみの変更ではない場合とは、ブリッジに接続されている記憶装置400〜403の少なくとも一部が新たな記憶装置と交換された場合、新たな記憶装置が追加された場合等である。S716において、ＣＰＵ101は、SATAコントローラ110、ブリッジ200を介して、ブリッジ300、310に対して記憶装置の初期化処理指示を行ない、初期化処理を実行させる。その後、ＣＰＵ101は処理をS717に進める。
【００７４】
一方、ＣＰＵ101は、ブリッジと記憶装置との組み合わせのみの変更と判断した場合（S708でYes）、処理をS709に進める。
S709において、ＣＰＵ101は、SATAコントローラ110を介してブリッジ200、300、310に対して現在の動作モードや設定情報等の問い合わせの通知を行ない、処理をS710に進める。
【００７５】
S710において、ＣＰＵ101は、ＲＯＭ102等に格納されている接続構成情報と、問い合わせの通知に対する各ブリッジからの返答内容に含まれる各ブリッジの現在の動作モードや設定情報等に基づき、各ブリッジのモード再設定を行なう。具体的には、ＣＰＵ101は、SATAコントローラ110を介して各ブリッジ200、300、310に対してモード再設定指示を行う。即ち、ＣＰＵ101は、S702、S703、S705、S708で得られた各ブリッジと記憶装置との接続関係（接続構成）と各記憶装置の種別とから各ブリッジの設定すべき動作モードを決定する。そして、ＣＰＵ101は、決定された動作モードと現在の動作モードとが異なるブリッジがあれば、当該ブリッジに決定された動作モードを再設定する。ＣＰＵ101は、他のブリッジについては、動作モードに変更がないため現在の動作モードのままとする。
例えば、ＣＰＵ101は、ブリッジ200の動作モードや設定情報をブリッジ300、310に対して設定し、逆にブリッジ300、310の動作モードや設定情報を、ブリッジ200に対して設定する。
【００７６】
一例として、ＣＰＵ101は、ブリッジ300、310各々において、それに接続されている記憶装置の種別（ＨＤＤ、ＳＳＤ）の組み合わせが前回起動時から変更されたと判断した場合には、各ブリッジ、300、310の動作モードを変更する。
例えば、図１に示す構成において、記憶装置401（ＨＤＤ２）と記憶装置402（ＳＳＤ１）が互いに入れ替わった場合、ブリッジ300、310各々において、それに接続されている記憶装置の種別はＨＤＤとＳＳＤとなり、異なる種別となる。現状では、ブリッジ200はハイブリッドモード、ブリッジ300、310は各々ミラーリングモードであるため、このままではブリッジ200、300、310の各動作モードと入れ替えられた記憶装置の組み合わせとで不整合が生じる。
そこて、ＣＰＵ101は、モード再設定指示を各ブリッジに行い、ブリッジ300、310各々の動作モードをミラーリングモードからハイブリッドモードに変更設定し、ブリッジ200の動作モードをハイブリッドモードからミラーリングモードに変更設定する。これにより、ブリッジ200、300、310の各動作モードとそれらに接続された記憶装置の組み合わせとの整合性が保持される。
【００７７】
なお、ブリッジと記憶装置との組み合わせのみの変更であっても、ブリッジ300、310各々において、それに接続される記憶装置の種別の組み合わせが変更されない場合には、各ブリッジ200、300、310の動作モードは変更されない。例えば、記憶装置400（ＨＤＤ１）、記憶装置401（ＨＤＤ２）の組み合わせと記憶装置402（ＳＳＤ１）、記憶装置403（ＳＳＤ２）の組み合わせとが入れ替わった場合、各ブリッジ300、310における記憶装置は同一種別の組み合わせのままである。従って、各ブリッジ300、310の動作モードはミラーリングモードのまま、ブリッジ200の動作モードはハイブリッドモードのままとし、動作モードは変更されない。これにより、ブリッジ200、300、310の各動作モードとそれらに接続された記憶装置の組み合わせとの整合性が保持される。
ＣＰＵ101は、S710を終了すると処理をS717に進め、入れ替えたモード設定等を、ＲＯＭ102等に接続構成情報として格納し、処理を終了する。
【００７８】
ＣＰＵ101は、ブリッジの接続構成に変更があったと判断すると（S705でYes）、S711において、S701で発行したIDENTIFY DEVICEコマンドに対する返答内容から、接続デバイスの有無を判断する。即ち、ＣＰＵ101は、SATAコントローラ110に接続されたブリッジ200の先に接続デバイスがあるか否かを判断する。
S711において、ＣＰＵ101は、ブリッジ200の先に接続デバイスはないと判断した場合（S711でNo）、処理をS713に進める。
S713において、ＣＰＵ101は、SATAコントローラ110に接続されているブリッジ200の先にSATAデバイスは検出できないとして操作部109にエラー表示をし、処理をS717に進める。S717において、ＣＰＵ101は、S702で得られた変更後のブリッジの接続構成などの情報をＲＯＭ102等に格納し、処理を終了する。
【００７９】
一方、S711において、ＣＰＵ101は、ブリッジ200の先に接続デバイスがあると判断した場合（S711でYes）、処理をS712に進める。
S712において、ＣＰＵ101は、S701で発行したIDENTIFY DEVICEコマンドに対する返答内容から、SATAコントローラ110にブリッジを含むSATAデバイスがカスケード接続されているか否かを判断する。
ここでカスケード接続の構成例としては、コントローラ110に、少なくとも２つのブリッジ（200、300）と複数のデバイスとがカスケード接続される場合が挙げられる。例えば、ブリッジ200の先に少なくとも１つの記憶装置およびブリッジ300が接続され、ブリッジ300の先に複数のデバイス、例えば、複数の記憶装置、または少なくとも１つ記憶装置およびブリッジ310が接続される場合がある。この場合、ブリッジ310の先にさらに複数のデバイスが接続されてよい。また、他の例として、ブリッジ200の先にブリッジ300が接続され、ブリッジ300の先に複数のデバイス、例えば、複数の記憶装置、または少なくとも１つ記憶装置およびブリッジ310が接続される場合がある。この場合、ブリッジ310の先にさらに複数のデバイスが接続されてよい。
これらはカスケード接続の例示であり、本実施例はこのような多様なカスケード接続に適用可能である。
【００８０】
S712において、ＣＰＵ101は、SATAコントローラ110にブリッジがカスケード接続されていないと判断した場合（S712でNo）、即ち、ブリッジ200のみが接続されていると判断すると、処理をS715に進める。
S715において、ＣＰＵ101は、SATAコントローラ110を介してブリッジ200に対してモード再設定指示を行い、その動作モードを再設定する。即ち、ＣＰＵ101は、S702、S703、S705等で得られたブリッジ200と記憶装置との接続関係（接続構成）と各記憶装置の種別とからブリッジ200の設定すべき動作モードを決定し、決定された動作モードをブリッジ200に設定する。その際、ＣＰＵ101は、ブリッジ200には同一種別または異なる種別の２つの記憶装置が接続されているとし、ミラーリングモードS502、ハイブリッドモードS503のいずれかを設定する。
なお、勿論、ブリッジ200に１つの記憶装置のみが接続されている場合には、シングルモードを再設定するようにしてよい。
【００８１】
一方、S712において、ＣＰＵ101は、SATAコントローラ110にブリッジがカスケード接続されていると判断した場合（S712でYes）、処理をS714に進める。ここでは、ブリッジ200等が図1とは異なる接続関係でカスケード接続されているとする。
S714において、ＣＰＵ101は、IDENTIFY DEVICEコマンドに対する返答内容が示す接続デバイス情報に基づき、SATAコントローラ110を介してブリッジ200等にモード再設定指示を行い、各ブリッジの動作モードを再設定する。即ち、ＣＰＵ101は、S702、S703、S705、S711、S712で得られた各ブリッジと記憶装置との接続関係（接続構成）と各記憶装置の種別とから各ブリッジの設定すべき動作モードを決定し、各ブリッジに決定された動作モードを設定する。その際、ブリッジ200等に対して設定する動作モードはミラーリングモードS502とハイブリッドモードS503の両方とする。なお、勿論、ブリッジに１つの記憶装置のみが接続されている場合には、シングルモードを再設定するようにしてよい。
【００８２】
S716において、ＣＰＵ101は、SATAコントローラ110を介してブリッジ200等に、接続されている記憶装置400〜403等に対する初期化処理を実行させる。
次いで、S717において、ＣＰＵ101は、SATAコントローラ110の先に接続されている変更後の各デバイスの情報を接続構成情報として格納する。即ち、ＣＰＵ101は、変更後のブリッジや記憶装置の接続構成や、ブリッジ200等の動作モードおよび設定情報等を、接続構成情報としてＲＯＭ102あるいは記憶装置400〜403等のいずれかに格納する。
【００８３】
次に図７Ｂのフローチャートを用いて、ブリッジ200、300、310が実行するモード再設定処理の動作を説明する。ここでは一例としてブリッジ200内のＣＰＵ201が実行するモード再設定処理を説明するが、本処理は他のブリッジ300、310各々においても同様にして実行される。
図７Ｂのフローチャートに係るＣＰＵ201上で動作するプログラムは、ＲＡＭ203、ＲＯＭ202または記憶装置400〜403のいずれかに格納されてよい。
【００８４】
図７Ｂの処理フローは、ここでは起動などの初期化時に実行されるものとして説明するが、これに限定されるものではなく、接続されているSATAデバイスにアクセスする際、例えば、アクセスする毎に実行されてもよい。
先ず、S721においてＣＰＵ201は、SATAデバイスＩ／Ｆ204を介して、ホスト側からの接続デバイスの有無等の確認の通知を受けると、SATAホストＩ／Ｆ205、206の先にSATAデバイスが接続されているか否かを確認する。具体例としては、ＣＰＵ201は、IDENTIFY DEVICEコマンドなどのATAコマンドをSATAホストＩ／Ｆ205、206を介してデバイス側に発行し、SATAデバイスが接続されているか否かを確認する。
【００８５】
S721で発行したIDENTIFY DEVICEコマンドに対してデバイス側から返答があった場合（S722でYes）、ＣＰＵ201は、SATAホストＩ／Ｆ205、206の先にSATAデバイスが接続されていると判断する。その後、ＣＰＵ201は処理をS723に進める。
一方、S721で発行したIDENTIFY DEVICEコマンドに対してデバイス側から返答がない場合（S722でNo）、ＣＰＵ201は、SATAホストＩ／Ｆ205、206にデバイスが接続されていないと判断し、処理をS724に進める。
【００８６】
S723において、ＣＰＵ201は、S721で発行したIDENTIFY DEVICEコマンドに対するデバイス側からの返答に、SATAホストＩ／Ｆ205、206に接続デバイスがない旨のエラー通知が含まれているか否かを判断する。
S723において、ＣＰＵ201は、IDENTIFY DEVICEコマンドに対するデバイス側からの返答にエラー通知が含まれていると判断した場合（S723でYes）、処理をS724へ進める。
一方、S723において、ＣＰＵ201は、IDENTIFY DEVICEコマンドに対するデバイス側からの返答にエラー通知が含まれていないと判断した場合（S723でNo）、処理をS725へ進める。
【００８７】
S724において、ＣＰＵ201は、SATAホストＩ／Ｆ205、206にデバイスが接続されていないエラー状態であることをホスト側へ通知する。それにより、メインコントローラ100においては、SATAホストＩ／Ｆ205、206に接続デバイスなしとして、操作部109にエラー表示がなされる。その後、ＣＰＵ201は、処理を終了する。なお、ＣＰＵ201は、処理を終了する代わりに処理をS733に進め、S722で得られた接続デバイスの情報を、接続構成情報としてＲＯＭ202に格納するようにしてもよい。
【００８８】
S725において、ＣＰＵ201は、S721で発行したIDENTIFY DEVICEコマンドに対する返答内容とブリッジ200自身の情報とをマージして接続デバイス情報を得る。S725において、さらにＣＰＵ201は、接続デバイス情報をSATAデバイスＩ／Ｆ204を介してホスト側へ通知し、その後、処理をS726に進める。
【００８９】
S726において、ＣＰＵ201は、S721で発行したIDENTIFY DEVICEコマンドに対する返答内容と、図６Ｂの初期化処理の際にＲＯＭ202等に記憶されている前回起動時の接続構成等との比較を行なう。前回起動時の接続構成等とは、記憶装置400〜403とブリッジ200、300、310との接続構成等をいう。
ＣＰＵ201は、前回起動時のブリッジと記憶装置の接続構成等と、S721で発行したIDENTIFY DEVICEコマンドに対する返答内容とで変更がないと判断した場合（S726でNo）、処理をS733に進める。ＣＰＵ201は、S733において、S722で得られた接続デバイスの情報を、接続構成情報としてＲＯＭ202に格納する。なお、ＣＰＵ201は、処理をS733に進める代わりに終了するようにしてもよい。
ここで、接続構成の変更とは、ブリッジ間の接続構成またはブリッジと記憶装置間の接続構成の変更、ブリッジに接続された記憶装置の少なくとも一部の相互入れ替え、記憶装置の削除または新たな記憶装置の追加接続等である。さらに、ブリッジに接続されている一部の記憶装置が新たな記憶装置と交換される場合等も含む。
【００９０】
一方、ＣＰＵ201は、前回起動時の記憶装置とブリッジの接続構成等と、S721で発行したIDENTIFY DEVICEコマンドに対する返答内容とで変更があると判断した場合（S726でYes）、処理をS728に進める。
S728において、ＣＰＵ201は、前回起動時の記憶装置とブリッジとの接続構成と、S721でのIDENTIFY DEVICEコマンドに対する返答内容とから、ブリッジと記憶装置との組み合わせのみが変更されたか否かを判断する。ブリッジと記憶装置との組み合わせのみの変更例としては、ブリッジに接続されている記憶装置400〜403の少なくとも一部が互いに入れ替わる場合や、ブリッジ200、300、310相互間の入替えを含む。
【００９１】
ＣＰＵ201は、組み合わせのみの変更と判断した場合（S728でYes）、処理をS729に進める。
一方、ＣＰＵ201は、組み合わせのみの変更ではない判断した場合（S728でNo）、処理をS731に進める。ブリッジと記憶装置との組み合わせのみの変更ではない場合とは、ブリッジに接続されている記憶装置400〜403の少なくとも一部が新たな記憶装置と交換された場合、削除された場合、新たな記憶装置等のデバイスが追加された場合等である。
【００９２】
S729において、ＣＰＵ201は、S709でのメインコントローラ100からのブリッジ200、300、310に対する動作モードや設定情報等の問い合わせの通知を受信する。さらにS729において、ＣＰＵ201は、ブリッジ300、310に対する動作モードや設定情報等の問い合わせを、SATAホストＩ／Ｆ205、206を介してブリッジ300、310に通知する。さらにＣＰＵ201は、ブリッジ300、310に対する動作モードや設定情報等の問い合わせに対するブリッジ300、310からの返答内容と、ブリッジ200自身の動作モードや設定情報とをマージして接続デバイスの情報を得る。そして、ＣＰＵ201は、接続デバイス情報をSATAデバイスＩ／Ｆ204を介してホスト側へ通知する。その後、ＣＰＵ201は処理をS731に進める。
【００９３】
S731において、ＣＰＵ201は、SATAデバイスＩ／Ｆ204を介して、ホスト側からの、S714またはS715における接続デバイス情報に応答したモード再設定指示を受信する。さらにS731において、ＣＰＵ201は、受信したホスト側からのモード設定指示のうち、ブリッジ200自身宛てのモード設定指示内容と、SATAホストＩ／Ｆ205、206に接続されているデバイス宛てのモード設定指示内容の識別を行なう。さらにＣＰＵ201は、識別された、SATAホストＩ／Ｆ205、206に接続されているデバイス宛（図１の例ではブリッジ300、310）へのモード再設定指示内容を、SATAホストＩ／Ｆ205、206を介してブリッジ300、310へ通知する。それにより、ブリッジ300、310の動作モードは再設定される。また、識別された、ブリッジ200宛てのモード設定指示に従い、ＣＰＵ201は、ブリッジ200自身のモード設定を行なう。その後、ＣＰＵ201は処理をS732に進める。
【００９４】
S732において、ＣＰＵ201は、SATAデバイスＩ／Ｆ204を介して、ホスト側からの記憶装置に対する再初期化処理指示（S716）を受信する。さらにS732において、ＣＰＵ201は、受信した再初期化処理指示をSATAホストＩ／Ｆ205、206に接続されているデバイスに対して通知し、記憶装置に対する初期化処理を実行させる。その後、ＣＰＵ201は処理をS733に進める。
S733において、ＣＰＵ201はS731で再設定したブリッジ200等の動作モードやS721で確認した接続デバイスの情報等を、接続構成情報としてＲＯＭ202に格納する。
以上により、ブリッジ200のモード再設定処理を終了する。
ブリッジ200に接続された他のブリッジ300、310においても同様にして初期化処理が実施される。
【００９５】
上記のように、本実施例によるストレージシステムは、コントローラ（110）と、コントローラに接続された第１のブリッジ（200）と、第１のブリッジに接続された第２のブリッジ（300）および第３のブリッジ（310）とを有する。さらに、ストレージシステムは、各々が第１乃至第３のブリッジのいずれかに接続された複数の記憶装置（400〜403）を有する。コントローラ、第１乃至第３のブリッジの少なくとも１つは、記憶手段（102、202，302，312）と、判断手段（S703〜S708、S728）と、再設定手段（S710 S714，S731）とを有する。記憶手段は、第１乃至第３のブリッジと記憶装置との接続構成を含む情報を格納する。判断手段は、第１乃至第３のブリッジとそれに接続された複数の記憶装置との接続構成が前回の動作時（起動などの初期化時またはデバイスにアクセスする際）から変更されたか否かを、記憶手段に格納された情報に基づき判断する。再設定手段は、判断手段により接続構成が変更されたと判断された場合、その接続構成の変更に合わせて第１乃至第３のブリッジの動作モードを再設定する。
【００９６】
従って、本発明によれば、カスケード接続されたブリッジとその先に接続された複数の記憶装置との接続構成が前回の起動時等の動作時から変更された場合、その変更に合わせて各ブリッジの動作モードは再設定される。それにより、記憶装置が前回起動時等の動作時から入れ替えられて接続される等の接続構成の変更があったとしても、ブリッジの動作モードと当該ブリッジに接続された記憶装置との間の不整合が防止され、ストレージシステムは正常に動作を継続できる。
また、ブリッジの接続構成やブリッジに接続された複数の記憶装置が前回の起動時等の動作時から変更された場合においても、その変更に合わせて各ブリッジの動作モードは再設定される。従って、ストレージシステムはより柔軟に接続構成の変更に対応することができる。
【００９７】
なお、図６Ａおよび図７Ａのフローチャートに示す処理は、メインコントローラ100内のＣＰＵ101により実行されるとしたが、SATAコントローラ110に設けたＣＰＵにより実行されるようにしてもよい。
【００９８】
また、本発明による、半導体メモリを有する不揮発性記憶装置と、ディスクを有する不揮発性記憶装置とを接続可能な制御装置またはその制御方法（110、200、300）は、動作モードを設定する設定手段または設定工程（S710、 S714、S731）を備える。設定手段（設定工程）は、制御装置に対して半導体メモリを有する不揮発性記憶装置とディスクを有する不揮発性記憶装置が接続されたことに応じて設定される所定の動作モードを設定する。また、制御装置に対して半導体メモリを有する記憶装置が複数個接続されディスクを有する不揮発性記憶装置が接続されない場合、接続された複数の不揮発性装置をミラーリングする上記所定の動作モードとは別のミラーリングに関する動作モードを設定する。同様に、制御装置に対して半導体メモリを有する記憶装置が接続されずディスクを有する不揮発性記憶装置が複数接続される場合に、上記所定の動作モードとは別のミラーリングに関する動作モードを設定する。
【００９９】
(その他の実施例) 
本発明は、上述の実施例の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【符号の説明】
【０１００】
１００・・・メインコントローラ
１１０・・・SATAコントローラ
２００、３００、３１０・・・ブリッジ
２０１・・・ＣＰＵ
４００、４０１、４０２、４０３・・・記憶装置
【図１】
2019159471.tif 000003
【図２】
2019159471.tif 000004
【図３】
2019159471.tif 000005
【図４】
2019159471.tif 000006
【図５】
2019159471.tif 000007
【図６Ａ】
2019159471.tif 000008
【図６Ｂ】
2019159471.tif 000009
【図７Ａ】
2019159471.tif 000010
【図７Ｂ】
2019159471.tif 000011