JP2019159471A - ストレージシステム、その制御方法およびプログラム - Google Patents
ストレージシステム、その制御方法およびプログラム Download PDFInfo
- Publication number
- JP2019159471A JP2019159471A JP2018041887A JP2018041887A JP2019159471A JP 2019159471 A JP2019159471 A JP 2019159471A JP 2018041887 A JP2018041887 A JP 2018041887A JP 2018041887 A JP2018041887 A JP 2018041887A JP 2019159471 A JP2019159471 A JP 2019159471A
- Authority
- JP
- Japan
- Prior art keywords
- bridge
- bridges
- storage
- cpu
- connection configuration
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0009—RRAM elements whose operation depends upon chemical change
- G11C13/0011—RRAM elements whose operation depends upon chemical change comprising conductive bridging RAM [CBRAM] or programming metallization cells [PMCs]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1075—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for multiport memories each having random access ports and serial ports, e.g. video RAM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0032—Serial ATA [SATA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Debugging And Monitoring (AREA)
- Information Transfer Systems (AREA)
- Facsimiles In General (AREA)
Abstract
【課題】 ブリッジと複数の記憶装置との接続構成が前回動作時から変更された場合、ブリッジの動作モードと記憶装置との間に不整合が発生するのを防止するストレージシステム、その制御方法、プログラムを提供する。【解決手段】 コントローラ100と、コントローラにカスケード接続された第1乃至第3のブリッジ300〜310と、各々がいずれかのブリッジに接続された複数の記憶装置400〜403と、を有するストレージシステムであって、コントローラおよび第1乃至第3のブリッジの少なくとも1つは、各ブリッジと記憶装置との接続構成を含む情報を格納する記憶手段と、ブリッジとそれに接続された複数の記憶装置との接続構成が前回の動作時から変更されたか否かを、記憶手段に格納された情報に基づき判断する判断手段と、接続構成が変更されたと判断されると、その変更に合わせて各ブリッジの動作モードを再設定する再設定手段と、を有する。【選択図】 図7A
Description
本発明は、ストレージシステム、その制御方法およびプログラムに関する。
MFP(Multi Function Printer)に代表される画像形成装置等の情報処理装置は、装置のプログラムやユーザの画像データを保存するため、記憶装置を備えている。記憶装置としては、HDD(Hard Disk Drive)やSSD(Solid State Drive)などがある。
従来から、記憶装置のインターフェース規格であるSATA(Serial Advanced Technology Attachment)などを用いたストレージシステムの制御方法が提案されている。
例えば、2つのHDDが接続されたストレージ制御装置において、複数の動作モードを設け、動作モードを切り替えることにより転送方式を切り替えてデータ転送を行なうような制御方法が知られている。
例えば、2つのHDDが接続されたストレージ制御装置において、複数の動作モードを設け、動作モードを切り替えることにより転送方式を切り替えてデータ転送を行なうような制御方法が知られている。
特許文献1は、ホスト側のメインコントローラに接続され、デバイス側のポートマルチプライヤとして機能するSATAブリッジに対して、さらにSATAブリッジを複数段カスケード接続して、ポートマルチプライヤの機能を拡張する制御方法を提案している。
複数の動作モードを持ち、特許文献1に記載のようにカスケードに接続されたSATAブリッジから成るストレージシステムにおいて、SATAブリッジの先にさらに接続された複数の記憶装置のいずれかが入れ替えられて接続される場合等がある。その場合、入れ替え前のSATAブリッジの動作モードが継続されると、その動作モードは、入れ替え後の記憶装置に対して不整合となる恐れがある。さらには、カスケード接続されたSATAブリッジ間で動作モードが不整合となる恐れもある。
このように、ブリッジの動作モードと、そのブリッジに接続された記憶装置の間に不整合が生じた場合、ブリッジは正常に動作できなくなってしまう。さらにはカスケード接続されたブリッジ間においても動作モードが不整合となり正常な動作ができなくなってしまうといった課題がある。
本発明は、上記の課題を解決するためになされたものである。
本発明の目的は、ブリッジとそれに接続された複数の記憶装置との接続構成が前回の動作時から変更された場合に、ブリッジの動作モードと記憶装置との間に不整合が発生するのを防止するストレージシステム、その制御方法、プログラムを提供することにある。
本発明の目的は、ブリッジとそれに接続された複数の記憶装置との接続構成が前回の動作時から変更された場合に、ブリッジの動作モードと記憶装置との間に不整合が発生するのを防止するストレージシステム、その制御方法、プログラムを提供することにある。
上記目的を達成するため、本発明のストレージシステムは以下の構成を備える。
コントローラと、前記コントローラに接続された第1のブリッジと、前記第1のブリッジに接続された第2のブリッジおよび第3のブリッジと、各々が前記第1乃至第3のブリッジのいずれかに接続された複数の記憶装置と、を有するストレージシステムであって、前記コントローラ、前記第1乃至第3のブリッジの少なくとも1つは、前記第1乃至第3のブリッジと前記記憶装置との接続構成を含む情報を格納する記憶手段と、前記第1乃至第3のブリッジとそれに接続された前記複数の記憶装置との接続構成が前回の動作時から変更されたか否かを、前記記憶手段に格納された情報に基づき判断する判断手段と、前記判断手段により前記接続構成が変更されたと判断された場合、その接続構成の変更に合わせて前記第1乃至第3のブリッジの動作モードを再設定する再設定手段と、を有することを特徴とするストレージシステム。
コントローラと、前記コントローラに接続された第1のブリッジと、前記第1のブリッジに接続された第2のブリッジおよび第3のブリッジと、各々が前記第1乃至第3のブリッジのいずれかに接続された複数の記憶装置と、を有するストレージシステムであって、前記コントローラ、前記第1乃至第3のブリッジの少なくとも1つは、前記第1乃至第3のブリッジと前記記憶装置との接続構成を含む情報を格納する記憶手段と、前記第1乃至第3のブリッジとそれに接続された前記複数の記憶装置との接続構成が前回の動作時から変更されたか否かを、前記記憶手段に格納された情報に基づき判断する判断手段と、前記判断手段により前記接続構成が変更されたと判断された場合、その接続構成の変更に合わせて前記第1乃至第3のブリッジの動作モードを再設定する再設定手段と、を有することを特徴とするストレージシステム。
本発明によれば、カスケード接続されたブリッジとその先に接続された複数の記憶装置との接続構成が前回の動作時から変更された場合、その変更に合わせて各ブリッジの動作モードは再設定される。それにより、記憶装置が前回動作時から入れ替えられて接続される等の接続構成の変更があったとしても、ブリッジの動作モードと当該ブリッジに接続された記憶装置との間の不整合が防止され、ストレージシステムは正常に動作を継続できる。
以下、本発明を実施するための形態について図面を用いて例示的に詳しく説明する。ただし、この実施の形態に記載されている構成要素はあくまで例示であり、この発明の範囲をそれらのみに限定する趣旨のものではない。
図1に、本発明の実施例によるストレージシステムを含む情報処理装置全体の構成図を示す。本実施例では、情報処理装置の一例として、MFP等の画像形成装置に適用した例について説明するが、それに限定されるものではなく、複数の記憶装置を備えた構成の情報処理装置に適応可能である。特に、カスケード接続されたブリッジとそれらに接続された複数の記憶装置を備えた構成の情報処理装置に好適に適応可能である。
図1に示す本実施例の情報処理装置は、メインコントローラ100と、データを格納する複数、例えば、4つの記憶装置400、401、402、403と、複数、例えば、3つのブリッジ200、300、310によって構成されている。ブリッジ200、300、310は、これら記憶装置に対してデータの送受信を行う。メインコントローラ100は情報処理装置全体を制御するとともに、内部のMFPも制御する
本実施例では、記憶装置1(400)、記憶装置2(401)は、高速なアクセス速度が要求されないデータを格納する機能を有する第1の種別の記憶装置、ここではディスクを有する不揮発性記憶装置である。即ち、第1の種別の記憶装置はディスクアクセスを伴う不揮発性記憶装置であり、例えば、HDD(HDD1、HDD2)である。また、記憶装置3(402)、記憶装置4(403)は、高速なアクセス速度が要求されるデータを格納する機能を有する第2の種別の記憶装置、ここでは半導体メモリを有する不揮発性記憶装置である。即ち、第2の種別の記憶装置はSSDなどの半導体フラッシュメモリを有する記憶装置であり、ここでは、SSD(SSD1、SSD2)とする。しかし、第1の種別、第2の種別の記憶装置としては、HDD、SSDに限定されるものではない。また、第1の種別、第2の種別の定義も例示であり、これらに限定されるものではない。
また、本実施例ではブリッジの個数を3つとしたが、これに限定されるものではなく、ブリッジ300、310のうち少なくとも1つを削減したり、非図示のブリッジをさらに追加接続する構成にも対応できる。
また、本実施例ではブリッジの個数を3つとしたが、これに限定されるものではなく、ブリッジ300、310のうち少なくとも1つを削減したり、非図示のブリッジをさらに追加接続する構成にも対応できる。
図2に、ホストとしてのメインコントローラ100の具体的な構成例を示す。
メインコントローラ100は、CPU101、ROM102、DRAM103、各種の画像処理部、例えば、スキャン画像処理部105およびプリンタ画像処理部107、スキャナ106、プリンタ108、操作部109を有する。これら構成要素は、MFPを構成する。メインコントローラ100は、さらに、Network104、SATAコントローラ110を有する。
CPU101は、メインコントローラ100および情報処理装置全体を制御するもので、システム制御、演算処理、OSやアプリケーションを実行する。
メインコントローラ100は、CPU101、ROM102、DRAM103、各種の画像処理部、例えば、スキャン画像処理部105およびプリンタ画像処理部107、スキャナ106、プリンタ108、操作部109を有する。これら構成要素は、MFPを構成する。メインコントローラ100は、さらに、Network104、SATAコントローラ110を有する。
CPU101は、メインコントローラ100および情報処理装置全体を制御するもので、システム制御、演算処理、OSやアプリケーションを実行する。
ROM102は、読出し専用のメモリであり、CPU101で実行される制御プログラムおよび設定情報を格納する。DRAM103は、CPU101で実行される制御プログラムを格納するとともに、一時的なワークエリアとしても機能する。
Network104は、ネットワークI/Fであり、MFP内で画像処理を施した画像データをLAN(Local Area Network)111経由で外部情報機器(不図示)に送信する。または、Network104は、外部情報機器から画像データを入力する。
Network104は、ネットワークI/Fであり、MFP内で画像処理を施した画像データをLAN(Local Area Network)111経由で外部情報機器(不図示)に送信する。または、Network104は、外部情報機器から画像データを入力する。
スキャナ106は、画像入力デバイスであり、原稿となる紙上の画像に光を照射し、CCDラインセンサ(不図示)を走査することでラスター・イメージデータを得、電気信号に変換して出力する。
スキャン画像処理部105は、スキャナ106から受信した電気信号の画像データに画像処理を施す。画像処理された画像データは、SATAコントローラ110、ブリッジ200等を経由して、記憶装置400〜403のいずれかに格納される。
スキャン画像処理部105は、スキャナ106から受信した電気信号の画像データに画像処理を施す。画像処理された画像データは、SATAコントローラ110、ブリッジ200等を経由して、記憶装置400〜403のいずれかに格納される。
プリンタ画像処理部107は、受信した画像データに画像処理を施し、画像処理した画像データをプリンタ108へ送信する。プリンタ108は、画像出力デバイスであり、受信したラスター・イメージデータ等の画像データを用紙上に画像として印刷する。
操作部109は、表示機能と操作機能を兼ね備えたタッチパネル等のユーザインターフェイスデバイスである。操作部109は、メインコントローラ100に入力された画像データを表示する機能、システム使用者(ユーザ)が入力した情報をCPU101に伝える機能等を有する。
SATAコントローラ110は、CPU101の制御の下で、SATAコントローラ110に接続されたブリッジ200等のデバイスをSATA規格に準拠して制御し、ブリッジ200等とデータの送受信を行う。
操作部109は、表示機能と操作機能を兼ね備えたタッチパネル等のユーザインターフェイスデバイスである。操作部109は、メインコントローラ100に入力された画像データを表示する機能、システム使用者(ユーザ)が入力した情報をCPU101に伝える機能等を有する。
SATAコントローラ110は、CPU101の制御の下で、SATAコントローラ110に接続されたブリッジ200等のデバイスをSATA規格に準拠して制御し、ブリッジ200等とデータの送受信を行う。
図3に、ブリッジ200の詳細な構成例を示す。
ブリッジ200のCPU201は、ブリッジ200におけるシステム制御、演算処理、ATAコマンド処理等を行うとともに、記憶装置400〜403、ブリッジ300、310への送信コマンド処理等を行う。ROM202は、CPU201で実行される制御プログラムや各種モードの設定値のデータを格納する。RAM203は、CPU201で実行される制御プログラムを格納するとともに、一時的なワークエリアとしても機能する。
ブリッジ200のCPU201は、ブリッジ200におけるシステム制御、演算処理、ATAコマンド処理等を行うとともに、記憶装置400〜403、ブリッジ300、310への送信コマンド処理等を行う。ROM202は、CPU201で実行される制御プログラムや各種モードの設定値のデータを格納する。RAM203は、CPU201で実行される制御プログラムを格納するとともに、一時的なワークエリアとしても機能する。
SATAデバイスI/F204は、メインコントローラ100に接続され、SATA規格に準拠して、メインコントローラ100内のSATAコントローラ110と通信する。SATAホストI/F205、206は、それぞれブリッジ300、310に接続され、SATA規格に準拠してブリッジ300、310と通信する。
図4に、カスケード接続されたブリッジ200とブリッジ300、同じくブリッジ200とカスケード接続されたブリッジ310の詳細な構成例を示す。ブリッジ200、300、310は内部の構成が同一であるとして説明するが、同一の構成に限定されるものではない。本発明の目的を果たす範囲で、一部のブリッジにおいて機能を追加または削除して良いことは言うまでもない。
ブリッジ300のCPU301は、システム制御、演算処理、ATAコマンド処理を行うとともに、記憶装置400、記憶装置401への送信コマンド処理等を行う。ROM302は、CPU301の制御プログラムや各種モードの設定値のデータを格納する。RAM303は、CPU301で実行する制御プログラムを格納するとともに、一時的なワークエリアとしても機能する。
ブリッジ300のCPU301は、システム制御、演算処理、ATAコマンド処理を行うとともに、記憶装置400、記憶装置401への送信コマンド処理等を行う。ROM302は、CPU301の制御プログラムや各種モードの設定値のデータを格納する。RAM303は、CPU301で実行する制御プログラムを格納するとともに、一時的なワークエリアとしても機能する。
SATAデバイスI/F304は、ブリッジ200に接続され、SATA規格に準拠してブリッジ200内のSATAホストI/F205と通信する。
SATAホストI/F305、306は、それぞれ、デバイス、ここでは記憶装置400、401に接続され、SATA規格に準拠して記憶装置400、401と通信する。
SATAホストI/F305、306は、それぞれ、デバイス、ここでは記憶装置400、401に接続され、SATA規格に準拠して記憶装置400、401と通信する。
同様に、ブリッジ310のCPU311は、システム制御、演算処理、ATAコマンド処理を行うとともに、記憶装置402、記憶装置403への送信コマンド処理等を行う。ROM312は、CPU311の制御プログラムや各種モードの設定値のデータを格納する。RAM313は、CPU311で実行する制御プログラムを格納するとともに、一時的なワークエリアとしても機能する。
SATAデバイスI/F314は、ブリッジ200に接続され、SATA規格に準拠してブリッジ200内のSATAホストI/F206と通信する。
SATAホストI/F315、316は、それぞれ、デバイス、ここでは記憶装置402、403に接続され、SATA規格に準拠して記憶装置402、403と通信する。
SATAホストI/F315、316は、それぞれ、デバイス、ここでは記憶装置402、403に接続され、SATA規格に準拠して記憶装置402、403と通信する。
本実施例では、ブリッジ200、300、310は、SATAインターフェースで接続されるSATAブリッジとして説明するが、これに限定されるものではない。各ブリッジは、例えば、PCIE(Peripheral Component Interconnect Express)などの他のインターフェースでもよい。
また、本実施例では、SATAコントローラ110、ブリッジ200、300、310はそれぞれ別チップで構成されるものとして説明するが、これに限定されるものではない。例えば、SATAコントローラ110、ブリッジ200、300、310のいずれか2つ以上が同一チップ内に含まれるよう構成されてもよい。
また、本実施例では、SATAコントローラ110、ブリッジ200、300、310はそれぞれ別チップで構成されるものとして説明するが、これに限定されるものではない。例えば、SATAコントローラ110、ブリッジ200、300、310のいずれか2つ以上が同一チップ内に含まれるよう構成されてもよい。
図5に、実施例1におけるブリッジ200、300、310の状態遷移図を示す。
図5を参照して、以下にブリッジ200、300、310の動作を説明する。
ここでは代表例として、ブリッジ300の動作について図4を参照して説明するが、他のブリッジ200、310も同様に動作する。また、ブリッジ300に接続された記憶装置400、401として、HDDを用いた場合について説明する。
図5を参照して、以下にブリッジ200、300、310の動作を説明する。
ここでは代表例として、ブリッジ300の動作について図4を参照して説明するが、他のブリッジ200、310も同様に動作する。また、ブリッジ300に接続された記憶装置400、401として、HDDを用いた場合について説明する。
各ブリッジ200、300、310は、シングルモード(S501)、ミラーリングモード(S502)、ハイブリッドモード(S503)の3つの動作モードを有する。
シングルモード(S501)は、ブリッジが、その1台のSATAホストI/FのみにHDDが装着された状態で動作するモードである。ブリッジ300においては、シングルモード(S501)は、SATAホストI/F305かSATAホストI/F306のいずれか片方のみにHDDが接続された状態で動作するモードである。
シングルモード(S501)は、ブリッジが、その1台のSATAホストI/FのみにHDDが装着された状態で動作するモードである。ブリッジ300においては、シングルモード(S501)は、SATAホストI/F305かSATAホストI/F306のいずれか片方のみにHDDが接続された状態で動作するモードである。
CPU301は、シングルモード(S501)において、SATAデバイスI/F304を介して、ホスト側(ブリッジ200側)からミラーリングモード(S502)への移行命令を受けると、ミラーステート(S504)へ移行する。
また、CPU301は、シングルモード(S501)において、SATAデバイスI/F304を介して、ホスト側からハイブリッドモード(S503)への移行命令を受けると、ハイブリッドステート(S508)へ移行する。
また、CPU301は、シングルモード(S501)において、SATAデバイスI/F304を介して、ホスト側からハイブリッドモード(S503)への移行命令を受けると、ハイブリッドステート(S508)へ移行する。
CPU301は、各ステートに移行した際に、移行したステートをROM302に格納する。
シングルモード(S501)はデフォルトの動作モードであり、CPU301は起動時にROM302に前回動作時(起動などの初期化時またはデバイスにアクセスする際)のモードが記憶されていない場合には、シングルモード(S501)で動作を開始する。
また、CPU301は、起動時にROM302に前回動作時のモードが記憶されていた場合には、その記憶されていた動作モードにて動作を開始する。
シングルモード(S501)はデフォルトの動作モードであり、CPU301は起動時にROM302に前回動作時(起動などの初期化時またはデバイスにアクセスする際)のモードが記憶されていない場合には、シングルモード(S501)で動作を開始する。
また、CPU301は、起動時にROM302に前回動作時のモードが記憶されていた場合には、その記憶されていた動作モードにて動作を開始する。
ミラーリングモード(S502)は、2つのSATAホストI/F305、306それぞれにHDDが装着された状態で動作するモードである。
ミラーリングモード(S502)には、ミラーステート(S504)、デグレードステート(S505)、リビルドステート(S506)、ホールトステート(S507)の4つの状態が存在する。
ミラーリングモード(S502)には、ミラーステート(S504)、デグレードステート(S505)、リビルドステート(S506)、ホールトステート(S507)の4つの状態が存在する。
ミラーリングモード(S502)では、CPU301は、2つのSATAホストI/F305、306それぞれに接続されたHDDに対して、片方をマスターHDD、もう片方をスレーブHDDとして扱う。
ミラーステート(S504)は、2つのSATAホストI/F305、306にHDDが装着された状態で両方のHDDが正常に動作している状態である。
ミラーステート(S504)において、CPU301は、SATAデバイスI/F304を介してホスト側からデータ読み出し命令を受けると、当該命令を、SATAホストI/F305、306に接続されたHDDのうちマスターHDDのみに対して実行する。
ミラーステート(S504)は、2つのSATAホストI/F305、306にHDDが装着された状態で両方のHDDが正常に動作している状態である。
ミラーステート(S504)において、CPU301は、SATAデバイスI/F304を介してホスト側からデータ読み出し命令を受けると、当該命令を、SATAホストI/F305、306に接続されたHDDのうちマスターHDDのみに対して実行する。
ミラーステート(S504)において、CPU301は、SATAデバイスI/F304を介してホスト側からデータ書き込み命令を受けると、当該命令を、SATAホストI/F305、306に接続されたHDDに対して実行する。即ち、CPU301は、当該命令をマスターHDDとスレーブHDDの両方に対して実行する。
ミラーステート(S504)において、マスターHDDとスレーブHDDのどちらか片方のHDDに異常、例えば故障が生じると、デグレードステート(S505)へ移行する。
ミラーステート(S504)において、CPU301は、SATAデバイスI/F304を介してホスト側からリビルドステート(S506)への移行命令を受けると、リビルドステート(S506)へ移行する。
ミラーステート(S504)において、マスターHDDとスレーブHDDのどちらか片方のHDDに異常、例えば故障が生じると、デグレードステート(S505)へ移行する。
ミラーステート(S504)において、CPU301は、SATAデバイスI/F304を介してホスト側からリビルドステート(S506)への移行命令を受けると、リビルドステート(S506)へ移行する。
デグレードステート(S505)は、一方のSATAホストI/Fに接続されているHDDに異常、例えば故障を検知してそのHDDへのアクセスを中止し、他方のSATAホストI/Fに接続されている正常なHDDのみで動作している状態である。
デグレードステート(S505)において、CPU301は、故障しているHDDの代わりに新たに正常なHDDがSATAホストI/Fに接続されたことを検知すると、リビルドステート(S506)へ移行する。
デグレードステート(S505)において、CPU301は、SATAホストI/F305、306に接続されているHDDがともに異常であると検知すると、ホールトステート(S507)へ移行する。これは、例えば、他方のSATAホストI/Fに接続されているHDDも故障した場合に該当する。
デグレードステート(S505)において、CPU301は、SATAホストI/F305、306に接続されているHDDがともに異常であると検知すると、ホールトステート(S507)へ移行する。これは、例えば、他方のSATAホストI/Fに接続されているHDDも故障した場合に該当する。
リビルドステート(S506)は、片方のHDD(前から装着され故障していないHDD)のみで動作している状態ではあるが、他方のHDD(故障したHDDの代わりに新たに装着されたHDD)へデータをコピー(リビルド)している状態である。
この時、CPU301は、コピー元のHDD(前から装着され故障していないHDD)をマスターHDD、コピー先のHDD(故障したHDDの代わりに新たに装着されたHDD)をスレーブHDDとして扱う。
この時、CPU301は、コピー元のHDD(前から装着され故障していないHDD)をマスターHDD、コピー先のHDD(故障したHDDの代わりに新たに装着されたHDD)をスレーブHDDとして扱う。
リビルドステート(S506)において、リビルドが完了すると、ミラーステート(S504)へ移行する。リビルドステート(S506)において、スレーブHDDが故障すると、デグレードステート(S505)へ移行する。また、リビルドステート(S506)において、マスターHDDが故障すると、ホールトステート(S507)へ移行する。
ホールトステート(S507)は、両方のHDDが異常状態になったことにより、ミラーリング動作が継続できなくなった状態である。
ホールトステート(S507)は、両方のHDDが異常状態になったことにより、ミラーリング動作が継続できなくなった状態である。
ここではSATAホストI/F305、306に接続されるデバイスの例としてHDDを挙げたが、SSDやブリッジの場合も同様である。
SATAホストI/F305、306に接続されるデバイスがSSDの場合には、CPU301は、HDDの場合と同様に、SSD自体が、例えば故障している場合に、異常なデバイスが接続されていると判断する。
SATAホストI/F305、306に接続されるデバイスがブリッジの場合には、CPU301は、そのブリッジが、例えば故障により異常状態であることが通知された場合に、異常なデバイスが接続されていると判断する。
SATAホストI/F305、306に接続されるデバイスがSSDの場合には、CPU301は、HDDの場合と同様に、SSD自体が、例えば故障している場合に、異常なデバイスが接続されていると判断する。
SATAホストI/F305、306に接続されるデバイスがブリッジの場合には、CPU301は、そのブリッジが、例えば故障により異常状態であることが通知された場合に、異常なデバイスが接続されていると判断する。
ハイブリッドモード(S503)は、2つのSATAホストI/F305、306に対して異なる種別の記憶装置、ここではHDDとSSDが装着された状態で動作するモードである。
ハイブリッドモード(S503)には、ハイブリッドステート(S508)、エラーステート(S509)の2つの状態が存在する。
ハイブリッドモード(S502)では、CPU301は2つのSATAホストI/F305、306に接続されるHDDとSSDに対してアドレスを統合し、SATAデバイスI/F304を介してホスト側からは1つの記憶装置として見えるように動作する。
ハイブリッドモード(S503)には、ハイブリッドステート(S508)、エラーステート(S509)の2つの状態が存在する。
ハイブリッドモード(S502)では、CPU301は2つのSATAホストI/F305、306に接続されるHDDとSSDに対してアドレスを統合し、SATAデバイスI/F304を介してホスト側からは1つの記憶装置として見えるように動作する。
ハイブリッドステート(S508)は、2つのSATAホストI/F305、306にHDDとSSDが装着された状態で、これらHDDとSSDが正常に動作している状態である。
ハイブリッドステート(S508)において、CPU301はHDDとSSDのどちらか片方に異常、例えば、故障が発生すると、エラーステート(S509)へ移行する。
エラーステート(S509)は、HDDとSSDのどちらか片方が異常状態になったことにより、ハイブリッド動作が継続できなくなった状態である。
ハイブリッドステート(S508)において、CPU301はHDDとSSDのどちらか片方に異常、例えば、故障が発生すると、エラーステート(S509)へ移行する。
エラーステート(S509)は、HDDとSSDのどちらか片方が異常状態になったことにより、ハイブリッド動作が継続できなくなった状態である。
図6Aのフローチャートを用いて、本実施例においてメインコントローラ100内のCPU101が実行する、SATAコントローラ110に接続されたSATAデバイスに対する初期化処理を説明する。
図6Aのフローチャートに係るCPU101上で動作するプログラムは、DRAM103、ROM102または記憶装置400〜403のいずれかに格納されてよい。
ここでは初期化処理をメインコントローラ100内のCPU101が実行するものとして説明するが、本処理はブリッジ200、300、310のいずれかで行うようにしてもよい。
なお、以下の説明において、符号Sはステップを示す。これは、以下に説明する他のフローチャートについても同様である。
図6Aのフローチャートに係るCPU101上で動作するプログラムは、DRAM103、ROM102または記憶装置400〜403のいずれかに格納されてよい。
ここでは初期化処理をメインコントローラ100内のCPU101が実行するものとして説明するが、本処理はブリッジ200、300、310のいずれかで行うようにしてもよい。
なお、以下の説明において、符号Sはステップを示す。これは、以下に説明する他のフローチャートについても同様である。
図6Aのフローチャートに示す処理は、起動などの初期化時に実行されるものとして説明するが、これに限定されるものではない。この処理フローは、SATAコントローラ110に接続されているSATAデバイスにアクセスする際、例えば、アクセスする毎に実行されても構わない。
先ず、S601において、CPU101は、SATAコントローラ110を介して、SATAコントローラ110に接続されたデバイスの有無等、ここではSATAデバイスが接続されているか否か等をデバイス側に確認する。具体例としては、CPU101から、IDENTIFY DEVICEコマンドなどのATAコマンドをSATAコントローラ110を介してデバイス側に発行し、SATAデバイスが接続されているか否か等を確認する。即ち、CPU101は、SATAコントローラ110を介して接続デバイスの有無等の確認の通知をデバイス側に送る。
先ず、S601において、CPU101は、SATAコントローラ110を介して、SATAコントローラ110に接続されたデバイスの有無等、ここではSATAデバイスが接続されているか否か等をデバイス側に確認する。具体例としては、CPU101から、IDENTIFY DEVICEコマンドなどのATAコマンドをSATAコントローラ110を介してデバイス側に発行し、SATAデバイスが接続されているか否か等を確認する。即ち、CPU101は、SATAコントローラ110を介して接続デバイスの有無等の確認の通知をデバイス側に送る。
S601で発行したIDENTIFY DEVICEコマンドに対してデバイス側からSATAコントローラ110を介して返答があった場合(S602でYes)、CPU101は、SATAコントローラ110に接続デバイスありと判断する。即ち、CPU101は、SATAコントローラ110にSATAデバイスが接続されていると判断し、処理をS603に進める。
一方、IDENTIFY DEVICEコマンドに対してデバイス側から返答がない場合(S602でNo)、CPU101は、SATAコントローラ110に接続デバイスなし、即ち、SATAデバイスが接続されていないと判断し、処理をS605に進める。S605において、CPU101は、SATAコントローラ110に接続デバイスなしとして、操作部109にエラー表示を行なう。その後、CPU101は、処理をS610に進め、S602で得られた情報をROM102に格納するようにしてよい。
一方、IDENTIFY DEVICEコマンドに対してデバイス側から返答がない場合(S602でNo)、CPU101は、SATAコントローラ110に接続デバイスなし、即ち、SATAデバイスが接続されていないと判断し、処理をS605に進める。S605において、CPU101は、SATAコントローラ110に接続デバイスなしとして、操作部109にエラー表示を行なう。その後、CPU101は、処理をS610に進め、S602で得られた情報をROM102に格納するようにしてよい。
S603において、CPU101は、S601で発行したIDENTIFY DEVICEコマンドに対する返答内容から、SATAコントローラ110にSATAデバイスとしてブリッジが接続されているか否かを判断する。
S603において、CPU101は、SATAコントローラ110にブリッジ(図2の具体例ではブリッジ200)が接続されていると判断した場合(S603でYes)、処理をS604に進める。
一方、S603において、CPU101は、SATAコントローラ110にブリッジではなく記憶装置が接続されていると判断した場合(S603でNo)、処理をS609に進め、その記憶装置に対して後述する初期化処理を行なう。
S603において、CPU101は、SATAコントローラ110にブリッジ(図2の具体例ではブリッジ200)が接続されていると判断した場合(S603でYes)、処理をS604に進める。
一方、S603において、CPU101は、SATAコントローラ110にブリッジではなく記憶装置が接続されていると判断した場合(S603でNo)、処理をS609に進め、その記憶装置に対して後述する初期化処理を行なう。
S604において、CPU101は、S601で発行したIDENTIFY DEVICEコマンドに対する返答内容から、SATAコントローラ110に接続されたブリッジ200の先にさらに接続デバイスがあるか否かを判断する。
S604において、CPU101は、ブリッジ200の先にさらに接続デバイスがあると判断した場合(S604でYes)、処理をS606に進め、接続デバイスはないと判断した場合(S604でNo)、処理をS605に進める。
なお、IDENTIFY DEVICEコマンドに対する返答内容には、接続デバイスの有無と共に、接続デバイスがある場合においては、その接続デバイスの情報も含まれる。即ち、接続デバイスとしては、図1の具体例ではブリッジ300、310の設定情報や動作モード、ブリッジ300、310とそれに接続された記憶装置400〜403の接続関係(接続構成ともいう)や各記憶装置の種別等が含まれる。
S604において、CPU101は、ブリッジ200の先にさらに接続デバイスがあると判断した場合(S604でYes)、処理をS606に進め、接続デバイスはないと判断した場合(S604でNo)、処理をS605に進める。
なお、IDENTIFY DEVICEコマンドに対する返答内容には、接続デバイスの有無と共に、接続デバイスがある場合においては、その接続デバイスの情報も含まれる。即ち、接続デバイスとしては、図1の具体例ではブリッジ300、310の設定情報や動作モード、ブリッジ300、310とそれに接続された記憶装置400〜403の接続関係(接続構成ともいう)や各記憶装置の種別等が含まれる。
S605において、CPU101は、ブリッジ200に、またはその先に接続されているデバイスは検出できないとして、操作部109にエラー表示を行ない、処理をS610に進める。S610において、CPU101は、IDENTIFY DEVICEコマンドに対する返答内容に含まれる接続デバイス情報から得られたブリッジ200の設定情報等を接続構成情報として、ROM102に格納する。
S606において、CPU101はS601で発行したIDENTIFY DEVICEコマンドに対する返答内容から、SATAコントローラ110にブリッジがカスケード接続されているか否かを判断する。ここでブリッジがカスケード接続されている例としては、図1に示すように、ブリッジ200の先に、少なくともブリッジ300、310のうち1つが接続されている場合が挙げられる。
S606において、CPU101はS601で発行したIDENTIFY DEVICEコマンドに対する返答内容から、SATAコントローラ110にブリッジがカスケード接続されているか否かを判断する。ここでブリッジがカスケード接続されている例としては、図1に示すように、ブリッジ200の先に、少なくともブリッジ300、310のうち1つが接続されている場合が挙げられる。
S606において、CPU101は、SATAコントローラ110にブリッジがカスケード接続されていると判断した場合(S606でYes)、処理をS608に進める。
一方、S606において、CPU101は、SATAコントローラ110にはブリッジ200のみが接続され、カスケード接続はなされていないと判断した場合(S606でNo)、処理をS607に進める。
一方、S606において、CPU101は、SATAコントローラ110にはブリッジ200のみが接続され、カスケード接続はなされていないと判断した場合(S606でNo)、処理をS607に進める。
S607において、CPU101は、デバイス側からの返答内容に含まれる接続デバイス情報に基づき、SATAコントローラ110を介してブリッジ200にモード設定指示を送り、ブリッジ200の動作モードを再設定する。即ち、CPU101は、接続デバイス情報に含まれる各ブリッジと各記憶装置との接続関係(接続構成)と各記憶装置の種別とから各ブリッジの動作モードを決定し、各ブリッジに決定された動作モードを設定する。その際、ブリッジ200に対して設定する動作モードはミラーリングモードS502かハイブリッドモードS503のいずれかである。
具体例としては、CPU101は、ブリッジ200に接続されている2つの記憶装置が同一種別の記憶装置(例えば、HDDまたはSSD)であれば、ミラーリングモードを設定する。一方、CPU101は、ブリッジ200に接続されている2つの記憶装置が異なる種別の記憶装置(例えば、HDDとSSD)であれば、ハイブリッドモードを設定する。
CPU101は、その後、処理をS609に進め、SATAコントローラ110からブリッジ200に、接続されている記憶装置に対する初期化処理指示を送信し、記憶装置の初期化処理を実行させる。
なお、勿論、ブリッジ200に1つの記憶装置のみが接続されている場合には、シングルモードを再設定するようにしてよい。
具体例としては、CPU101は、ブリッジ200に接続されている2つの記憶装置が同一種別の記憶装置(例えば、HDDまたはSSD)であれば、ミラーリングモードを設定する。一方、CPU101は、ブリッジ200に接続されている2つの記憶装置が異なる種別の記憶装置(例えば、HDDとSSD)であれば、ハイブリッドモードを設定する。
CPU101は、その後、処理をS609に進め、SATAコントローラ110からブリッジ200に、接続されている記憶装置に対する初期化処理指示を送信し、記憶装置の初期化処理を実行させる。
なお、勿論、ブリッジ200に1つの記憶装置のみが接続されている場合には、シングルモードを再設定するようにしてよい。
S608において、CPU101は、SATAコントローラ110を介して、カスケード接続されているブリッジにモード設定指示を送り、ブリッジの動作モードを再設定する。ここでは図1に示すように、3つのブリッジ200、300、310がカスケード接続され、ブリッジ300、310それぞれに2つの記憶装置が接続されているとする。その際、ブリッジ200、300、310に対して設定する動作モードはミラーリングモードS502とハイブリッドモードS503の両方である。
具体例としては、図1に示す構成のように、ブリッジ300に接続されている2つの記憶装置400、401が共に、同一種別である第1の種別の記憶装置(HDD1、HDD2)であれば、CPU101は、ブリッジ300にミラーリングモードを設定する。同様に、ブリッジ310に接続されている2つの記憶装置402、403が共に、同一種別である第2の種別の記憶装置(SSD1、SSD2)であれば、CPU101は、ブリッジ310にミラーリングモードを設定する。従って、この場合、CPU101は、ブリッジ200にはハイブリッドモードを設定する。
別の具体例として、ブリッジ300、310各々において、接続されている2つの記憶装置が異なる種別の記憶装置、例えばHDDとSSDであれば、CPU101は、ブリッジ300、310それぞれにハイブリッドモードを設定する。従って、この場合、CPU101は、ブリッジ200にはミラーリングモードを設定する。このようにして、ブリッジ200、300、310の動作モードとそれらに接続された記憶装置の組み合わせとの整合性が保持される。
S609において、CPU101は、SATAコントローラ110からブリッジ200に、ブリッジ300、310に接続されている記憶装置400〜403に対する初期化処理指示を送信し、記憶装置400〜403の初期化処理を実行させる。
次いで、S610において、CPU101は、IDENTIFY DEVICEコマンドに対するデバイス側からの返答内容に含まれる、SATAコントローラ110の先に接続されている接続デバイスの情報を接続構成情報として格納する。ここでは、接続構成情報としては、各ブリッジと記憶装置との接続関係(接続構成)、各記憶装置の種別、各ブリッジの動作モードや設定情報等であり、ROM102あるいは記憶装置400〜403のいずれかに格納される。
次いで、S610において、CPU101は、IDENTIFY DEVICEコマンドに対するデバイス側からの返答内容に含まれる、SATAコントローラ110の先に接続されている接続デバイスの情報を接続構成情報として格納する。ここでは、接続構成情報としては、各ブリッジと記憶装置との接続関係(接続構成)、各記憶装置の種別、各ブリッジの動作モードや設定情報等であり、ROM102あるいは記憶装置400〜403のいずれかに格納される。
本実施例では、接続されているデバイス構成を確認するための方法として、IDENTIFY DEVICEコマンドを用いる例について説明した。しかし、デバイス構成を確認する方法はこれに限定されるものではなく、SATAデバイスの有無等の確認、ブリッジが存在の有無等の確認、ブリッジがカスケード接続されているか否か等の確認ができる方法であれば、どのような方法でも良い。また、接続されているデバイス構成を確認するための方法としてはATAコマンドに限定されるものではなく、拡張コマンド等を発行しても構わない。
次に図6Bのフローチャートを用いて、本実施例において各ブリッジ200、300、310が実行する、それらに接続されたSATAデバイスに対する初期化処理を説明する。
ここでは一例としてブリッジ200内のCPU201が実行する初期化処理を説明するが、本処理は他のブリッジ300、310においても同様に実行される。
図6Bのフローチャートに係るCPU201上で動作するプログラムは、RAM203、ROM202または記憶装置400〜403のいずれかに格納されてよい。
ここでは一例としてブリッジ200内のCPU201が実行する初期化処理を説明するが、本処理は他のブリッジ300、310においても同様に実行される。
図6Bのフローチャートに係るCPU201上で動作するプログラムは、RAM203、ROM202または記憶装置400〜403のいずれかに格納されてよい。
図6Bのフローチャートに示す処理は、起動などの初期化時に実行されるものとして説明するが、これに限定されるものではなく、ブリッジに接続されているSATAデバイスにアクセスする際、例えば、アクセスする毎に実行されても構わない。
先ず、S621において、CPU201は、SATAデバイスI/F204を介して、ホスト側(SATAコントローラ110)から接続デバイスの有無等の確認の通知を受ける。すると、CPU201は、SATAホストI/F205、206の先にSATAデバイスが接続されているか否か等を確認する。具体例としては、CPU201から、IDENTIFY DEVICEコマンドなどのATAコマンドをSATAホストI/F205、206を介してデバイス側に発行し、SATAデバイスが接続されているか否か等を確認する。
先ず、S621において、CPU201は、SATAデバイスI/F204を介して、ホスト側(SATAコントローラ110)から接続デバイスの有無等の確認の通知を受ける。すると、CPU201は、SATAホストI/F205、206の先にSATAデバイスが接続されているか否か等を確認する。具体例としては、CPU201から、IDENTIFY DEVICEコマンドなどのATAコマンドをSATAホストI/F205、206を介してデバイス側に発行し、SATAデバイスが接続されているか否か等を確認する。
S621で発行したIDENTIFY DEVICEコマンドに対してデバイス側からSATAコントローラ110を介して返答があった場合(S622でYes)、CPU201は、SATAホストI/F205、206の先にSATAデバイスありと判断する。その後、CPU201は、処理をS623に進める。
一方、S621で発行したIDENTIFY DEVICEコマンドに対してデバイス側から返答がない場合(S622でNo)、CPU201は、SATAホストI/F205、206に接続デバイスなしと判断する。即ち、CPU201は、SATAホストI/F205、206にSATAデバイスが接続されていないと判断し、処理をS627に進める。
一方、S621で発行したIDENTIFY DEVICEコマンドに対してデバイス側から返答がない場合(S622でNo)、CPU201は、SATAホストI/F205、206に接続デバイスなしと判断する。即ち、CPU201は、SATAホストI/F205、206にSATAデバイスが接続されていないと判断し、処理をS627に進める。
S623において、CPU201は、S621で発行したIDENTIFY DEVICEコマンドに対するデバイス側からの返答に、SATAホストI/F205、206に接続デバイスがない旨のエラー通知が含まれているか否かを判断する。
S623において、CPU201は、IDENTIFY DEVICEコマンドに対するデバイス側からの返答にエラー通知が含まれていると判断した場合(S623でYes)、処理をS627に進める。
一方、S623において、CPU201は、IDENTIFY DEVICEコマンドに対するデバイス側からの返答にエラー通知が含まれていないと判断した場合(S623でNo)、処理をS624に進める。
S623において、CPU201は、IDENTIFY DEVICEコマンドに対するデバイス側からの返答にエラー通知が含まれていると判断した場合(S623でYes)、処理をS627に進める。
一方、S623において、CPU201は、IDENTIFY DEVICEコマンドに対するデバイス側からの返答にエラー通知が含まれていないと判断した場合(S623でNo)、処理をS624に進める。
S627において、CPU201は、SATAホストI/F205、206にデバイスが接続されていないエラー状態であることをホスト側へ通知する。それにより、メインコントローラ100においては、SATAホストI/F205、206に接続デバイスなしとして、操作部109にエラー表示がなされる。その後、CPU201は、処理をS628に進め、S622で得られた接続デバイスの情報を接続構成情報としてROM202に格納するようにしてよい。
S624において、CPU201は、S621で発行したIDENTIFY DEVICEコマンドに対するデバイス側からの返答内容とブリッジ200自身の情報とをマージして接続デバイスの情報を得る。S624において、さらにCPU201は、接続デバイス情報をSATAデバイスI/F204を介してホスト側へ返答する。
なお、デバイス側からの返答内容には、ブリッジ200に接続されたSATAデバイスの接続デバイス情報、即ち、図1の例ではブリッジ300、310の設定情報、これらブリッジに接続された記憶装置400〜403の接続構成や種別等が含まれる。
なお、デバイス側からの返答内容には、ブリッジ200に接続されたSATAデバイスの接続デバイス情報、即ち、図1の例ではブリッジ300、310の設定情報、これらブリッジに接続された記憶装置400〜403の接続構成や種別等が含まれる。
その後、S625において、CPU201は、通知した接続デバイス情報に応答したホスト側からのモード設定指示を、SATAデバイスI/F204を介して受信する。
さらに、CPU201は、受信したモード設定指示から、ブリッジ200宛てのモード設定指示内容とSATAホストI/F205、206に接続されているデバイス宛て(図1の具体例ではブリッジ300、310宛て)のモード設定指示内容の識別を行なう。
さらに、CPU201は、受信したモード設定指示から、ブリッジ200宛てのモード設定指示内容とSATAホストI/F205、206に接続されているデバイス宛て(図1の具体例ではブリッジ300、310宛て)のモード設定指示内容の識別を行なう。
次いで、S625において、CPU201は、識別された、ブリッジ200宛てのモード設定指示に従い、自己の動作モードの設定を行なう。また、CPU201は、識別された、SATAホストI/F205、206に接続されているデバイス宛てのモード設定指示内容を、SATAホストI/F205、206を介してブリッジ300、310に通知する。それにより、当該モード設定指示に従い、ブリッジ300、310の動作モードの設定がなされる。
その後、S626において、CPU201は、ホスト側からSATAデバイスI/F204を介して、記憶装置400〜403に対する初期化処理指示を受信する。するとCPU201は、受信した初期化処理指示をSATAホストI/F205、206に接続されているデバイスに対して通知する。それにより、ブリッジ300、310に接続されている記憶装置400〜403の初期化処理がなされる。
次いで、S628において、CPU201は、S625で設定したブリッジ200の動作モードやS622で得た接続デバイスの情報を、接続構成情報としてROM202に格納する。
以上により、ブリッジ200における初期化処理を終了する。
ブリッジ200に接続された他のブリッジ300、310においても、同様にして初期化処理が実施される。
以上により、ブリッジ200における初期化処理を終了する。
ブリッジ200に接続された他のブリッジ300、310においても、同様にして初期化処理が実施される。
図7Aのフローチャートを用いて、本実施例においてメインコントローラ100内のCPU101が実行する、SATAコントローラ110に接続されたデバイスのモード再設定処理を説明する。
図7Aのフローチャートに係るCPU101上で動作するプログラムは、DRAM103、ROM102または記憶装置400〜403のいずれかに格納されてよい。
ここでは、本フローチャートによるモード再設定処理をメインコントローラ100内のCPU101が実行するものとして説明するが、本処理はブリッジ200、300、310のいずれかで行うようにしてもよい。
図7Aのフローチャートに係るCPU101上で動作するプログラムは、DRAM103、ROM102または記憶装置400〜403のいずれかに格納されてよい。
ここでは、本フローチャートによるモード再設定処理をメインコントローラ100内のCPU101が実行するものとして説明するが、本処理はブリッジ200、300、310のいずれかで行うようにしてもよい。
図7Aの処理フローは、ここでは起動などの初期化時に実行されるものとして説明するが、これに限定されるものではなく、接続されているSATAデバイスにアクセスする際、例えば、アクセスする毎に実行されても構わない。
先ず、S701において、CPU101は、IDENTIFY DEVICEコマンドなどのATAコマンドを、SATAコントローラ110を介してデバイス側に発行し、SATAデバイスが接続されているか否か等を確認する。即ち、CPU101は、SATAコントローラ110を介して接続デバイスの有無等の確認の通知をデバイス側に送る。
S701で発行したIDENTIFY DEVICEコマンドに対してデバイス側から返答があった場合(S702でYes)、CPU101は、SATAコントローラ110に接続デバイスありと判断する。即ち、CPU101は、SATAコントローラ110にSATAデバイスが接続されていると判断し、処理をS703に進める。
先ず、S701において、CPU101は、IDENTIFY DEVICEコマンドなどのATAコマンドを、SATAコントローラ110を介してデバイス側に発行し、SATAデバイスが接続されているか否か等を確認する。即ち、CPU101は、SATAコントローラ110を介して接続デバイスの有無等の確認の通知をデバイス側に送る。
S701で発行したIDENTIFY DEVICEコマンドに対してデバイス側から返答があった場合(S702でYes)、CPU101は、SATAコントローラ110に接続デバイスありと判断する。即ち、CPU101は、SATAコントローラ110にSATAデバイスが接続されていると判断し、処理をS703に進める。
一方、S701で発行したIDENTIFY DEVICEコマンドに対してデバイス側から返答がない場合(S702でNo)、CPU101は、SATAコントローラ110に接続デバイスなしと判断する。即ち、CPU101は、SATAコントローラ110にSATAデバイスが接続されていないと判断し、処理をS704に進める。
S704において、CPU101は、SATAコントローラ110に接続デバイスなしとして、具体的には、デバイス側にSATAデバイスを検出できないとして操作部109にエラー表示を行ない、処理を終了する。なお、CPU101は、S702で得られた情報をROM102に格納した後に処理を終了するようにしてもよい。
S704において、CPU101は、SATAコントローラ110に接続デバイスなしとして、具体的には、デバイス側にSATAデバイスを検出できないとして操作部109にエラー表示を行ない、処理を終了する。なお、CPU101は、S702で得られた情報をROM102に格納した後に処理を終了するようにしてもよい。
S703において、CPU101は、S701で発行したIDENTIFY DEVICEコマンドに対するデバイス側からの返答内容と、図6Aの初期化処理の際にROM102等に記憶されている前回起動時の接続構成と、の比較を行なう。ここで、ROM102等に記憶されている前回起動時の接続構成とは、図1の具体例に示すように、ブリッジ200、300、310間の接続構成、記憶装置400〜403間の接続構成、これらブリッジと記憶装置との接続構成を示すものとする。また、デバイス側からの返答内容は、同様に、SATAコントローラ110に接続されているデバイス、即ち、ブリッジ200、300、310間の接続構成、記憶装置400〜403間の接続構成、これらブリッジと記憶装置との接続構成を示すものとする。
CPU101は、前回起動時のブリッジと記憶装置との接続構成と、S701で発行したIDENTIFY DEVICEコマンドに対するデバイス側からの返答内容が示す接続構成と、で変更がないと判断した場合(S703でNo)、処理をS706に進める。ここで、接続構成に変更がないとは、図1の具体例において、SATAコントローラ110に接続されているブリッジ200、300、310間の接続関係、およびブリッジ300、310と記憶装置400〜403との接続構成に一切変更がないことをいう。即ち、接続構成の変更とは、ブリッジ間の接続構成またはブリッジと記憶装置間の接続構成の変更、ブリッジに接続された記憶装置の少なくとも一部の相互入れ替え、記憶装置の削除または新たな記憶装置の追加接続等である。さらに、ブリッジに接続されている一部の記憶装置が新たな記憶装置と交換される場合等も含む。
従って、接続構成に一切変更がない場合には、各ブリッジ200、300、310の動作モードについても変更はない。
従って、接続構成に一切変更がない場合には、各ブリッジ200、300、310の動作モードについても変更はない。
S706において、CPU101は、SATAコントローラ110に接続されているブリッジ200、300、310と記憶装置400〜403の接続構成に一切変更はないものとして、前回起動時の構成、動作モードのまま各ブリッジを起動する。その後、CPU101は、処理を終了する。なお、CPU101は、S702で得られた情報をROM102等に格納した後に処理を終了するようにしてもよい。
一方、CPU101は、前回起動時の記憶装置とブリッジとの接続構成と、S701で発行したIDENTIFY DEVICEコマンドに対する返答内容が示す接続構成とで変更があると判断した場合(S703でYes)、処理をS705に進める。S705において、CPU101は、前回起動時の記憶装置とブリッジとの接続構成と、IDENTIFY DEVICEコマンドに対するデバイス側からの返答内容が示す接続構成とから、ブリッジ200〜310の接続構成に変更があったか否かを判断する。ブリッジの接続構成の変更とは、ブリッジの接続形態(例えば、図1のカスケード接続形態)の変更、ブリッジ200、300、310のいずれかの削除、または新たなブリッジの追加、(さらにブリッジの接続デバイスの変更も含む)等を含む。
CPU101は、ブリッジ200、300、310の接続構成に変更があったと判断した場合(S705でYes)、処理をS711に進める。
一方、CPU101は、ブリッジ200、300、310の接続構成には変更がないと判断した場合(S705でNo)、処理をS708に進める。
一方、CPU101は、ブリッジ200、300、310の接続構成には変更がないと判断した場合(S705でNo)、処理をS708に進める。
S708において、CPU101は、前回起動時の記憶装置とブリッジとの接続構成と、IDENTIFY DEVICEコマンドに対する返答内容とから、ブリッジと記憶装置との組み合わせのみが変更されたか否かを判断する。ブリッジと記憶装置との組み合わせのみの変更例としては、ブリッジ300、310に接続されている記憶装置400〜403の少なくとも一部が互いに入れ替わる場合や、ブリッジ200、300、310相互間での入替えを含む。例えば、図1に示す構成においては、記憶装置401(HDD2)と記憶装置402(SSD1)が互いに入れ替わる場合や、ブリッジ300と310とが互いに入れ替わる場合等である。
CPU101は、ブリッジと記憶装置との組み合わせのみの変更ではないと判断した場合(S708でNo)、処理をS716に進める。ブリッジと記憶装置との組み合わせのみの変更ではない場合とは、ブリッジに接続されている記憶装置400〜403の少なくとも一部が新たな記憶装置と交換された場合、新たな記憶装置が追加された場合等である。S716において、CPU101は、SATAコントローラ110、ブリッジ200を介して、ブリッジ300、310に対して記憶装置の初期化処理指示を行ない、初期化処理を実行させる。その後、CPU101は処理をS717に進める。
一方、CPU101は、ブリッジと記憶装置との組み合わせのみの変更と判断した場合(S708でYes)、処理をS709に進める。
S709において、CPU101は、SATAコントローラ110を介してブリッジ200、300、310に対して現在の動作モードや設定情報等の問い合わせの通知を行ない、処理をS710に進める。
S709において、CPU101は、SATAコントローラ110を介してブリッジ200、300、310に対して現在の動作モードや設定情報等の問い合わせの通知を行ない、処理をS710に進める。
S710において、CPU101は、ROM102等に格納されている接続構成情報と、問い合わせの通知に対する各ブリッジからの返答内容に含まれる各ブリッジの現在の動作モードや設定情報等に基づき、各ブリッジのモード再設定を行なう。具体的には、CPU101は、SATAコントローラ110を介して各ブリッジ200、300、310に対してモード再設定指示を行う。即ち、CPU101は、S702、S703、S705、S708で得られた各ブリッジと記憶装置との接続関係(接続構成)と各記憶装置の種別とから各ブリッジの設定すべき動作モードを決定する。そして、CPU101は、決定された動作モードと現在の動作モードとが異なるブリッジがあれば、当該ブリッジに決定された動作モードを再設定する。CPU101は、他のブリッジについては、動作モードに変更がないため現在の動作モードのままとする。
例えば、CPU101は、ブリッジ200の動作モードや設定情報をブリッジ300、310に対して設定し、逆にブリッジ300、310の動作モードや設定情報を、ブリッジ200に対して設定する。
例えば、CPU101は、ブリッジ200の動作モードや設定情報をブリッジ300、310に対して設定し、逆にブリッジ300、310の動作モードや設定情報を、ブリッジ200に対して設定する。
一例として、CPU101は、ブリッジ300、310各々において、それに接続されている記憶装置の種別(HDD、SSD)の組み合わせが前回起動時から変更されたと判断した場合には、各ブリッジ、300、310の動作モードを変更する。
例えば、図1に示す構成において、記憶装置401(HDD2)と記憶装置402(SSD1)が互いに入れ替わった場合、ブリッジ300、310各々において、それに接続されている記憶装置の種別はHDDとSSDとなり、異なる種別となる。現状では、ブリッジ200はハイブリッドモード、ブリッジ300、310は各々ミラーリングモードであるため、このままではブリッジ200、300、310の各動作モードと入れ替えられた記憶装置の組み合わせとで不整合が生じる。
そこて、CPU101は、モード再設定指示を各ブリッジに行い、ブリッジ300、310各々の動作モードをミラーリングモードからハイブリッドモードに変更設定し、ブリッジ200の動作モードをハイブリッドモードからミラーリングモードに変更設定する。これにより、ブリッジ200、300、310の各動作モードとそれらに接続された記憶装置の組み合わせとの整合性が保持される。
例えば、図1に示す構成において、記憶装置401(HDD2)と記憶装置402(SSD1)が互いに入れ替わった場合、ブリッジ300、310各々において、それに接続されている記憶装置の種別はHDDとSSDとなり、異なる種別となる。現状では、ブリッジ200はハイブリッドモード、ブリッジ300、310は各々ミラーリングモードであるため、このままではブリッジ200、300、310の各動作モードと入れ替えられた記憶装置の組み合わせとで不整合が生じる。
そこて、CPU101は、モード再設定指示を各ブリッジに行い、ブリッジ300、310各々の動作モードをミラーリングモードからハイブリッドモードに変更設定し、ブリッジ200の動作モードをハイブリッドモードからミラーリングモードに変更設定する。これにより、ブリッジ200、300、310の各動作モードとそれらに接続された記憶装置の組み合わせとの整合性が保持される。
なお、ブリッジと記憶装置との組み合わせのみの変更であっても、ブリッジ300、310各々において、それに接続される記憶装置の種別の組み合わせが変更されない場合には、各ブリッジ200、300、310の動作モードは変更されない。例えば、記憶装置400(HDD1)、記憶装置401(HDD2)の組み合わせと記憶装置402(SSD1)、記憶装置403(SSD2)の組み合わせとが入れ替わった場合、各ブリッジ300、310における記憶装置は同一種別の組み合わせのままである。従って、各ブリッジ300、310の動作モードはミラーリングモードのまま、ブリッジ200の動作モードはハイブリッドモードのままとし、動作モードは変更されない。これにより、ブリッジ200、300、310の各動作モードとそれらに接続された記憶装置の組み合わせとの整合性が保持される。
CPU101は、S710を終了すると処理をS717に進め、入れ替えたモード設定等を、ROM102等に接続構成情報として格納し、処理を終了する。
CPU101は、S710を終了すると処理をS717に進め、入れ替えたモード設定等を、ROM102等に接続構成情報として格納し、処理を終了する。
CPU101は、ブリッジの接続構成に変更があったと判断すると(S705でYes)、S711において、S701で発行したIDENTIFY DEVICEコマンドに対する返答内容から、接続デバイスの有無を判断する。即ち、CPU101は、SATAコントローラ110に接続されたブリッジ200の先に接続デバイスがあるか否かを判断する。
S711において、CPU101は、ブリッジ200の先に接続デバイスはないと判断した場合(S711でNo)、処理をS713に進める。
S713において、CPU101は、SATAコントローラ110に接続されているブリッジ200の先にSATAデバイスは検出できないとして操作部109にエラー表示をし、処理をS717に進める。S717において、CPU101は、S702で得られた変更後のブリッジの接続構成などの情報をROM102等に格納し、処理を終了する。
S711において、CPU101は、ブリッジ200の先に接続デバイスはないと判断した場合(S711でNo)、処理をS713に進める。
S713において、CPU101は、SATAコントローラ110に接続されているブリッジ200の先にSATAデバイスは検出できないとして操作部109にエラー表示をし、処理をS717に進める。S717において、CPU101は、S702で得られた変更後のブリッジの接続構成などの情報をROM102等に格納し、処理を終了する。
一方、S711において、CPU101は、ブリッジ200の先に接続デバイスがあると判断した場合(S711でYes)、処理をS712に進める。
S712において、CPU101は、S701で発行したIDENTIFY DEVICEコマンドに対する返答内容から、SATAコントローラ110にブリッジを含むSATAデバイスがカスケード接続されているか否かを判断する。
ここでカスケード接続の構成例としては、コントローラ110に、少なくとも2つのブリッジ(200、300)と複数のデバイスとがカスケード接続される場合が挙げられる。例えば、ブリッジ200の先に少なくとも1つの記憶装置およびブリッジ300が接続され、ブリッジ300の先に複数のデバイス、例えば、複数の記憶装置、または少なくとも1つ記憶装置およびブリッジ310が接続される場合がある。この場合、ブリッジ310の先にさらに複数のデバイスが接続されてよい。また、他の例として、ブリッジ200の先にブリッジ300が接続され、ブリッジ300の先に複数のデバイス、例えば、複数の記憶装置、または少なくとも1つ記憶装置およびブリッジ310が接続される場合がある。この場合、ブリッジ310の先にさらに複数のデバイスが接続されてよい。
これらはカスケード接続の例示であり、本実施例はこのような多様なカスケード接続に適用可能である。
S712において、CPU101は、S701で発行したIDENTIFY DEVICEコマンドに対する返答内容から、SATAコントローラ110にブリッジを含むSATAデバイスがカスケード接続されているか否かを判断する。
ここでカスケード接続の構成例としては、コントローラ110に、少なくとも2つのブリッジ(200、300)と複数のデバイスとがカスケード接続される場合が挙げられる。例えば、ブリッジ200の先に少なくとも1つの記憶装置およびブリッジ300が接続され、ブリッジ300の先に複数のデバイス、例えば、複数の記憶装置、または少なくとも1つ記憶装置およびブリッジ310が接続される場合がある。この場合、ブリッジ310の先にさらに複数のデバイスが接続されてよい。また、他の例として、ブリッジ200の先にブリッジ300が接続され、ブリッジ300の先に複数のデバイス、例えば、複数の記憶装置、または少なくとも1つ記憶装置およびブリッジ310が接続される場合がある。この場合、ブリッジ310の先にさらに複数のデバイスが接続されてよい。
これらはカスケード接続の例示であり、本実施例はこのような多様なカスケード接続に適用可能である。
S712において、CPU101は、SATAコントローラ110にブリッジがカスケード接続されていないと判断した場合(S712でNo)、即ち、ブリッジ200のみが接続されていると判断すると、処理をS715に進める。
S715において、CPU101は、SATAコントローラ110を介してブリッジ200に対してモード再設定指示を行い、その動作モードを再設定する。即ち、CPU101は、S702、S703、S705等で得られたブリッジ200と記憶装置との接続関係(接続構成)と各記憶装置の種別とからブリッジ200の設定すべき動作モードを決定し、決定された動作モードをブリッジ200に設定する。その際、CPU101は、ブリッジ200には同一種別または異なる種別の2つの記憶装置が接続されているとし、ミラーリングモードS502、ハイブリッドモードS503のいずれかを設定する。
なお、勿論、ブリッジ200に1つの記憶装置のみが接続されている場合には、シングルモードを再設定するようにしてよい。
S715において、CPU101は、SATAコントローラ110を介してブリッジ200に対してモード再設定指示を行い、その動作モードを再設定する。即ち、CPU101は、S702、S703、S705等で得られたブリッジ200と記憶装置との接続関係(接続構成)と各記憶装置の種別とからブリッジ200の設定すべき動作モードを決定し、決定された動作モードをブリッジ200に設定する。その際、CPU101は、ブリッジ200には同一種別または異なる種別の2つの記憶装置が接続されているとし、ミラーリングモードS502、ハイブリッドモードS503のいずれかを設定する。
なお、勿論、ブリッジ200に1つの記憶装置のみが接続されている場合には、シングルモードを再設定するようにしてよい。
一方、S712において、CPU101は、SATAコントローラ110にブリッジがカスケード接続されていると判断した場合(S712でYes)、処理をS714に進める。ここでは、ブリッジ200等が図1とは異なる接続関係でカスケード接続されているとする。
S714において、CPU101は、IDENTIFY DEVICEコマンドに対する返答内容が示す接続デバイス情報に基づき、SATAコントローラ110を介してブリッジ200等にモード再設定指示を行い、各ブリッジの動作モードを再設定する。即ち、CPU101は、S702、S703、S705、S711、S712で得られた各ブリッジと記憶装置との接続関係(接続構成)と各記憶装置の種別とから各ブリッジの設定すべき動作モードを決定し、各ブリッジに決定された動作モードを設定する。その際、ブリッジ200等に対して設定する動作モードはミラーリングモードS502とハイブリッドモードS503の両方とする。なお、勿論、ブリッジに1つの記憶装置のみが接続されている場合には、シングルモードを再設定するようにしてよい。
S714において、CPU101は、IDENTIFY DEVICEコマンドに対する返答内容が示す接続デバイス情報に基づき、SATAコントローラ110を介してブリッジ200等にモード再設定指示を行い、各ブリッジの動作モードを再設定する。即ち、CPU101は、S702、S703、S705、S711、S712で得られた各ブリッジと記憶装置との接続関係(接続構成)と各記憶装置の種別とから各ブリッジの設定すべき動作モードを決定し、各ブリッジに決定された動作モードを設定する。その際、ブリッジ200等に対して設定する動作モードはミラーリングモードS502とハイブリッドモードS503の両方とする。なお、勿論、ブリッジに1つの記憶装置のみが接続されている場合には、シングルモードを再設定するようにしてよい。
S716において、CPU101は、SATAコントローラ110を介してブリッジ200等に、接続されている記憶装置400〜403等に対する初期化処理を実行させる。
次いで、S717において、CPU101は、SATAコントローラ110の先に接続されている変更後の各デバイスの情報を接続構成情報として格納する。即ち、CPU101は、変更後のブリッジや記憶装置の接続構成や、ブリッジ200等の動作モードおよび設定情報等を、接続構成情報としてROM102あるいは記憶装置400〜403等のいずれかに格納する。
次いで、S717において、CPU101は、SATAコントローラ110の先に接続されている変更後の各デバイスの情報を接続構成情報として格納する。即ち、CPU101は、変更後のブリッジや記憶装置の接続構成や、ブリッジ200等の動作モードおよび設定情報等を、接続構成情報としてROM102あるいは記憶装置400〜403等のいずれかに格納する。
次に図7Bのフローチャートを用いて、ブリッジ200、300、310が実行するモード再設定処理の動作を説明する。ここでは一例としてブリッジ200内のCPU201が実行するモード再設定処理を説明するが、本処理は他のブリッジ300、310各々においても同様にして実行される。
図7Bのフローチャートに係るCPU201上で動作するプログラムは、RAM203、ROM202または記憶装置400〜403のいずれかに格納されてよい。
図7Bのフローチャートに係るCPU201上で動作するプログラムは、RAM203、ROM202または記憶装置400〜403のいずれかに格納されてよい。
図7Bの処理フローは、ここでは起動などの初期化時に実行されるものとして説明するが、これに限定されるものではなく、接続されているSATAデバイスにアクセスする際、例えば、アクセスする毎に実行されてもよい。
先ず、S721においてCPU201は、SATAデバイスI/F204を介して、ホスト側からの接続デバイスの有無等の確認の通知を受けると、SATAホストI/F205、206の先にSATAデバイスが接続されているか否かを確認する。具体例としては、CPU201は、IDENTIFY DEVICEコマンドなどのATAコマンドをSATAホストI/F205、206を介してデバイス側に発行し、SATAデバイスが接続されているか否かを確認する。
先ず、S721においてCPU201は、SATAデバイスI/F204を介して、ホスト側からの接続デバイスの有無等の確認の通知を受けると、SATAホストI/F205、206の先にSATAデバイスが接続されているか否かを確認する。具体例としては、CPU201は、IDENTIFY DEVICEコマンドなどのATAコマンドをSATAホストI/F205、206を介してデバイス側に発行し、SATAデバイスが接続されているか否かを確認する。
S721で発行したIDENTIFY DEVICEコマンドに対してデバイス側から返答があった場合(S722でYes)、CPU201は、SATAホストI/F205、206の先にSATAデバイスが接続されていると判断する。その後、CPU201は処理をS723に進める。
一方、S721で発行したIDENTIFY DEVICEコマンドに対してデバイス側から返答がない場合(S722でNo)、CPU201は、SATAホストI/F205、206にデバイスが接続されていないと判断し、処理をS724に進める。
一方、S721で発行したIDENTIFY DEVICEコマンドに対してデバイス側から返答がない場合(S722でNo)、CPU201は、SATAホストI/F205、206にデバイスが接続されていないと判断し、処理をS724に進める。
S723において、CPU201は、S721で発行したIDENTIFY DEVICEコマンドに対するデバイス側からの返答に、SATAホストI/F205、206に接続デバイスがない旨のエラー通知が含まれているか否かを判断する。
S723において、CPU201は、IDENTIFY DEVICEコマンドに対するデバイス側からの返答にエラー通知が含まれていると判断した場合(S723でYes)、処理をS724へ進める。
一方、S723において、CPU201は、IDENTIFY DEVICEコマンドに対するデバイス側からの返答にエラー通知が含まれていないと判断した場合(S723でNo)、処理をS725へ進める。
S723において、CPU201は、IDENTIFY DEVICEコマンドに対するデバイス側からの返答にエラー通知が含まれていると判断した場合(S723でYes)、処理をS724へ進める。
一方、S723において、CPU201は、IDENTIFY DEVICEコマンドに対するデバイス側からの返答にエラー通知が含まれていないと判断した場合(S723でNo)、処理をS725へ進める。
S724において、CPU201は、SATAホストI/F205、206にデバイスが接続されていないエラー状態であることをホスト側へ通知する。それにより、メインコントローラ100においては、SATAホストI/F205、206に接続デバイスなしとして、操作部109にエラー表示がなされる。その後、CPU201は、処理を終了する。なお、CPU201は、処理を終了する代わりに処理をS733に進め、S722で得られた接続デバイスの情報を、接続構成情報としてROM202に格納するようにしてもよい。
S725において、CPU201は、S721で発行したIDENTIFY DEVICEコマンドに対する返答内容とブリッジ200自身の情報とをマージして接続デバイス情報を得る。S725において、さらにCPU201は、接続デバイス情報をSATAデバイスI/F204を介してホスト側へ通知し、その後、処理をS726に進める。
S726において、CPU201は、S721で発行したIDENTIFY DEVICEコマンドに対する返答内容と、図6Bの初期化処理の際にROM202等に記憶されている前回起動時の接続構成等との比較を行なう。前回起動時の接続構成等とは、記憶装置400〜403とブリッジ200、300、310との接続構成等をいう。
CPU201は、前回起動時のブリッジと記憶装置の接続構成等と、S721で発行したIDENTIFY DEVICEコマンドに対する返答内容とで変更がないと判断した場合(S726でNo)、処理をS733に進める。CPU201は、S733において、S722で得られた接続デバイスの情報を、接続構成情報としてROM202に格納する。なお、CPU201は、処理をS733に進める代わりに終了するようにしてもよい。
ここで、接続構成の変更とは、ブリッジ間の接続構成またはブリッジと記憶装置間の接続構成の変更、ブリッジに接続された記憶装置の少なくとも一部の相互入れ替え、記憶装置の削除または新たな記憶装置の追加接続等である。さらに、ブリッジに接続されている一部の記憶装置が新たな記憶装置と交換される場合等も含む。
CPU201は、前回起動時のブリッジと記憶装置の接続構成等と、S721で発行したIDENTIFY DEVICEコマンドに対する返答内容とで変更がないと判断した場合(S726でNo)、処理をS733に進める。CPU201は、S733において、S722で得られた接続デバイスの情報を、接続構成情報としてROM202に格納する。なお、CPU201は、処理をS733に進める代わりに終了するようにしてもよい。
ここで、接続構成の変更とは、ブリッジ間の接続構成またはブリッジと記憶装置間の接続構成の変更、ブリッジに接続された記憶装置の少なくとも一部の相互入れ替え、記憶装置の削除または新たな記憶装置の追加接続等である。さらに、ブリッジに接続されている一部の記憶装置が新たな記憶装置と交換される場合等も含む。
一方、CPU201は、前回起動時の記憶装置とブリッジの接続構成等と、S721で発行したIDENTIFY DEVICEコマンドに対する返答内容とで変更があると判断した場合(S726でYes)、処理をS728に進める。
S728において、CPU201は、前回起動時の記憶装置とブリッジとの接続構成と、S721でのIDENTIFY DEVICEコマンドに対する返答内容とから、ブリッジと記憶装置との組み合わせのみが変更されたか否かを判断する。ブリッジと記憶装置との組み合わせのみの変更例としては、ブリッジに接続されている記憶装置400〜403の少なくとも一部が互いに入れ替わる場合や、ブリッジ200、300、310相互間の入替えを含む。
S728において、CPU201は、前回起動時の記憶装置とブリッジとの接続構成と、S721でのIDENTIFY DEVICEコマンドに対する返答内容とから、ブリッジと記憶装置との組み合わせのみが変更されたか否かを判断する。ブリッジと記憶装置との組み合わせのみの変更例としては、ブリッジに接続されている記憶装置400〜403の少なくとも一部が互いに入れ替わる場合や、ブリッジ200、300、310相互間の入替えを含む。
CPU201は、組み合わせのみの変更と判断した場合(S728でYes)、処理をS729に進める。
一方、CPU201は、組み合わせのみの変更ではない判断した場合(S728でNo)、処理をS731に進める。ブリッジと記憶装置との組み合わせのみの変更ではない場合とは、ブリッジに接続されている記憶装置400〜403の少なくとも一部が新たな記憶装置と交換された場合、削除された場合、新たな記憶装置等のデバイスが追加された場合等である。
一方、CPU201は、組み合わせのみの変更ではない判断した場合(S728でNo)、処理をS731に進める。ブリッジと記憶装置との組み合わせのみの変更ではない場合とは、ブリッジに接続されている記憶装置400〜403の少なくとも一部が新たな記憶装置と交換された場合、削除された場合、新たな記憶装置等のデバイスが追加された場合等である。
S729において、CPU201は、S709でのメインコントローラ100からのブリッジ200、300、310に対する動作モードや設定情報等の問い合わせの通知を受信する。さらにS729において、CPU201は、ブリッジ300、310に対する動作モードや設定情報等の問い合わせを、SATAホストI/F205、206を介してブリッジ300、310に通知する。さらにCPU201は、ブリッジ300、310に対する動作モードや設定情報等の問い合わせに対するブリッジ300、310からの返答内容と、ブリッジ200自身の動作モードや設定情報とをマージして接続デバイスの情報を得る。そして、CPU201は、接続デバイス情報をSATAデバイスI/F204を介してホスト側へ通知する。その後、CPU201は処理をS731に進める。
S731において、CPU201は、SATAデバイスI/F204を介して、ホスト側からの、S714またはS715における接続デバイス情報に応答したモード再設定指示を受信する。さらにS731において、CPU201は、受信したホスト側からのモード設定指示のうち、ブリッジ200自身宛てのモード設定指示内容と、SATAホストI/F205、206に接続されているデバイス宛てのモード設定指示内容の識別を行なう。さらにCPU201は、識別された、SATAホストI/F205、206に接続されているデバイス宛(図1の例ではブリッジ300、310)へのモード再設定指示内容を、SATAホストI/F205、206を介してブリッジ300、310へ通知する。それにより、ブリッジ300、310の動作モードは再設定される。また、識別された、ブリッジ200宛てのモード設定指示に従い、CPU201は、ブリッジ200自身のモード設定を行なう。その後、CPU201は処理をS732に進める。
S732において、CPU201は、SATAデバイスI/F204を介して、ホスト側からの記憶装置に対する再初期化処理指示(S716)を受信する。さらにS732において、CPU201は、受信した再初期化処理指示をSATAホストI/F205、206に接続されているデバイスに対して通知し、記憶装置に対する初期化処理を実行させる。その後、CPU201は処理をS733に進める。
S733において、CPU201はS731で再設定したブリッジ200等の動作モードやS721で確認した接続デバイスの情報等を、接続構成情報としてROM202に格納する。
以上により、ブリッジ200のモード再設定処理を終了する。
ブリッジ200に接続された他のブリッジ300、310においても同様にして初期化処理が実施される。
S733において、CPU201はS731で再設定したブリッジ200等の動作モードやS721で確認した接続デバイスの情報等を、接続構成情報としてROM202に格納する。
以上により、ブリッジ200のモード再設定処理を終了する。
ブリッジ200に接続された他のブリッジ300、310においても同様にして初期化処理が実施される。
上記のように、本実施例によるストレージシステムは、コントローラ(110)と、コントローラに接続された第1のブリッジ(200)と、第1のブリッジに接続された第2のブリッジ(300)および第3のブリッジ(310)とを有する。さらに、ストレージシステムは、各々が第1乃至第3のブリッジのいずれかに接続された複数の記憶装置(400〜403)を有する。コントローラ、第1乃至第3のブリッジの少なくとも1つは、記憶手段(102、202,302,312)と、判断手段(S703〜S708、S728)と、再設定手段(S710 S714,S731)とを有する。記憶手段は、第1乃至第3のブリッジと記憶装置との接続構成を含む情報を格納する。判断手段は、第1乃至第3のブリッジとそれに接続された複数の記憶装置との接続構成が前回の動作時(起動などの初期化時またはデバイスにアクセスする際)から変更されたか否かを、記憶手段に格納された情報に基づき判断する。再設定手段は、判断手段により接続構成が変更されたと判断された場合、その接続構成の変更に合わせて第1乃至第3のブリッジの動作モードを再設定する。
従って、本発明によれば、カスケード接続されたブリッジとその先に接続された複数の記憶装置との接続構成が前回の起動時等の動作時から変更された場合、その変更に合わせて各ブリッジの動作モードは再設定される。それにより、記憶装置が前回起動時等の動作時から入れ替えられて接続される等の接続構成の変更があったとしても、ブリッジの動作モードと当該ブリッジに接続された記憶装置との間の不整合が防止され、ストレージシステムは正常に動作を継続できる。
また、ブリッジの接続構成やブリッジに接続された複数の記憶装置が前回の起動時等の動作時から変更された場合においても、その変更に合わせて各ブリッジの動作モードは再設定される。従って、ストレージシステムはより柔軟に接続構成の変更に対応することができる。
また、ブリッジの接続構成やブリッジに接続された複数の記憶装置が前回の起動時等の動作時から変更された場合においても、その変更に合わせて各ブリッジの動作モードは再設定される。従って、ストレージシステムはより柔軟に接続構成の変更に対応することができる。
なお、図6Aおよび図7Aのフローチャートに示す処理は、メインコントローラ100内のCPU101により実行されるとしたが、SATAコントローラ110に設けたCPUにより実行されるようにしてもよい。
また、本発明による、半導体メモリを有する不揮発性記憶装置と、ディスクを有する不揮発性記憶装置とを接続可能な制御装置またはその制御方法(110、200、300)は、動作モードを設定する設定手段または設定工程(S710、 S714、S731)を備える。設定手段(設定工程)は、制御装置に対して半導体メモリを有する不揮発性記憶装置とディスクを有する不揮発性記憶装置が接続されたことに応じて設定される所定の動作モードを設定する。また、制御装置に対して半導体メモリを有する記憶装置が複数個接続されディスクを有する不揮発性記憶装置が接続されない場合、接続された複数の不揮発性装置をミラーリングする上記所定の動作モードとは別のミラーリングに関する動作モードを設定する。同様に、制御装置に対して半導体メモリを有する記憶装置が接続されずディスクを有する不揮発性記憶装置が複数接続される場合に、上記所定の動作モードとは別のミラーリングに関する動作モードを設定する。
(その他の実施例)
本発明は、上述の実施例の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、上述の実施例の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
100・・・メインコントローラ
110・・・SATAコントローラ
200、300、310・・・ブリッジ
201・・・CPU
400、401、402、403・・・記憶装置
110・・・SATAコントローラ
200、300、310・・・ブリッジ
201・・・CPU
400、401、402、403・・・記憶装置
Claims (13)
- コントローラと、
前記コントローラに接続された第1のブリッジと、
前記第1のブリッジに接続された第2のブリッジおよび第3のブリッジと、
各々が前記第1乃至第3のブリッジのいずれかに接続された複数の記憶装置と、を有するストレージシステムであって、
前記コントローラ、前記第1乃至第3のブリッジの少なくとも1つは、
前記第1乃至第3のブリッジと前記記憶装置との接続構成、を含む情報を格納する記憶手段と、
前記第1乃至第3のブリッジとそれに接続された前記複数の記憶装置との接続構成が前回の動作時から変更されたか否かを、前記記憶手段に格納された情報に基づき判断する判断手段と、
前記判断手段により前記接続構成が変更されたと判断された場合、その接続構成の変更に合わせて前記第1乃至第3のブリッジの動作モードを再設定する再設定手段と、を有することを特徴とするストレージシステム。 - 前記複数の記憶装置の各々は第一の種別の記憶装置または第二の種別の記憶装置であり、
前記記憶手段は、前記複数の記憶装置の各々の種別を情報として格納し、
前記判断手段は、前記第1乃至第3のブリッジそれぞれについて、接続されている複数の記憶装置が同一種別か異なる種別かを判断する、ことを特徴とする請求項1記載のストレージシステム。 - 前記第一の種別の記憶装置は、高速なアクセス速度が要求されないデータを格納する記憶装置であり、前記第二の種別の記憶装置は、高速なアクセス速度が要求されるデータを格納する記憶装置である、ことを特徴とする請求項2に記載のストレージシステム。
- 前記再設定手段は、前記ブリッジに複数の同一の種別の記憶装置が接続されていると前記判断手段により判断された場合に、当該ブリッジの動作モードとして第一の動作モードを再設定し、前記ブリッジに複数の異なる種別の記憶装置が接続されていると前記判断手段により判断された場合に、当該ブリッジに第二の動作モードを再設定する、ことを特徴とする請求項2または3に記載のストレージシステム。
- 前記第一の動作モードはミラーリングモードであり、前記第二の動作モードはハイブリッドモードである、ことを特徴とする請求項4に記載のストレージシステム。
- 前記判断手段および前記再設定手段を前記コントローラが有する場合に、動作時に、
前記判断手段は、前記第1乃至第3のブリッジに接続されているデバイスの確認の通知を前記第1乃至第3のブリッジに対して発行し、前記記憶手段に格納された情報と当該通知に対する前記第1乃至第3のブリッジからの返答内容とに基づき、前記第1乃至第3のブリッジとそれに接続されている前記複数の記憶装置との接続構成が前回の動作時から変更されたか否かを判断し、
前記判断手段により接続構成が前回の動作時から変更されたと判断されると、前記再設定手段は、前記第1乃至第3のブリッジに対して動作モードなどの問い合わせの通知を行ない、当該問い合わせの通知に対する前記第1乃至第3のブリッジからの返答内容に含まれる前記各ブリッジの現在の動作モードと前記デバイスの確認の通知に対する返答内容に含まれる前記複数の記憶装置の各々の種別とに基づき、前記各ブリッジのモードの再設定を行なう、ことを特徴とする請求項2乃至5のいずれか1項に記載のストレージシステム。 - 前記判断手段および前記再設定手段を前記第1乃至第3のブリッジのいずれかが有する場合に、動作時に、
前記判断手段は、他のブリッジに接続されているデバイスの確認の通知を前記他のブリッジに対して発行し、前記記憶手段に格納された情報と当該通知に対する前記他のブリッジからの返答内容と自己のブリッジに接続されている記憶装置の構成とに基づき、前記第1乃至第3のブリッジとそれに接続されている前記複数の記憶装置との接続構成が前回の動作時から変更されたか否かを判断し、
前記判断手段により接続構成が前回の動作時から変更されたと判断されると、前記再設定手段は、前記他のブリッジに対して動作モードなどの問い合わせの通知を行ない、当該問い合わせの通知に対する前記他のブリッジからの返答内容に含まれる前記各ブリッジの現在の動作モードと自己のブリッジの動作モードと前記デバイスの確認の通知に対する返答内容に含まれる前記複数の記憶装置の各々の種別とに基づき、前記各ブリッジのモードの再設定を行なう、ことを特徴とする請求項2乃至5のいずれか1項に記載のストレージシステム。 - 前記判断手段および前記再設定手段を前記コントローラが有する場合に、動作時に、
前記判断手段は、前記コントローラに接続されているブリッジの接続構成、および当該ブリッジの各々とそれに接続されている記憶装置との接続構成が前回の動作時から変更されたか否かを判断し、
前記判断手段により前記いずれかの接続構成が前回の動作時から変更されたと判断されると、前記再設定手段は、当該ブリッジの各々に対して動作モードなどの問い合わせの通知を行ない、当該問い合わせの通知に対する当該各ブリッジからの返答内容に含まれる当該各ブリッジの現在の動作モードに基づき、当該各ブリッジのモードの再設定を行なう、ことを特徴とする請求項1乃至5のいずれか1項に記載のストレージシステム。 - コントローラと、
前記コントローラにカスケード接続された、少なくとも第1および第2のブリッジと複数のデバイスと、を有するストレージシステムであって、
前記コントローラ、前記第1および第2のブリッジの少なくとも1つは、
前記第1および第2のブリッジと前記複数のデバイスとの接続構成、を含む情報を格納する記憶手段と、
前記第1および第2のブリッジと前記複数のデバイスとの接続構成が前回の動作時から変更されたか否かを、前記記憶手段に格納された情報に基づき判断する判断手段と、
前記判断手段により前記接続構成が変更されたと判断された場合、その接続構成の変更に合わせて前記第1および第2のブリッジの動作モードを再設定する再設定手段と、を有することを特徴とするストレージシステム。 - 前記複数のデバイスは記憶装置を含む、ことを特徴とする請求項1に記載のストレージシステム。
- 半導体メモリを有する不揮発性記憶装置と、ディスクを有する不揮発性記憶装置とを接続可能な制御装置において、
前記制御装置に対して前記半導体メモリを有する不揮発性記憶装置と前記ディスクを有する不揮発性記憶装置が接続されたことに応じて設定される所定の動作モードと、前記制御装置に対して前記半導体メモリを有する記憶装置が複数個接続され前記ディスクを有する不揮発性記憶装置が接続されない場合、または、前記制御装置に対して前記半導体メモリを有する記憶装置が接続されず前記ディスクを有する不揮発性記憶装置が複数接続される場合に、接続された複数の不揮発性装置をミラーリングする前記所定の動作モードとは別のミラーリングに関する動作モードを設定する設定手段を、備える制御装置。 - コントローラと
前記コントローラに接続された第1のブリッジと、
前記第1のブリッジに接続された第2のブリッジおよび第3のブリッジと、
各々が前記第1乃至第3のブリッジのいずれかに接続された複数の記憶装置と、を有するストレージシステムの制御方法であって、
前記コントローラ、前記第1乃至第3のブリッジの少なくとも1つにより、
前記第1乃至第3のブリッジと前記記憶装置との接続構成、を含む情報を記憶手段に格納する格納工程と、
前記第1乃至第3のブリッジとそれに接続された前記複数の記憶装置との接続構成が前回の動作時から変更されたか否かを、前記記憶手段に格納された情報に基づき判断する判断工程と、
前記判断工程により、接続構成が変更されたと判断された場合に、その接続構成の変更に合わせて前記第1乃至第3のブリッジの動作モードを再設定する再設定工程と、が実行されることを特徴とする制御方法。 - コンピュータを請求項1乃至11のいずれか1項に記載された各手段として機能させるためのプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018041887A JP2019159471A (ja) | 2018-03-08 | 2018-03-08 | ストレージシステム、その制御方法およびプログラム |
US16/294,671 US20190278732A1 (en) | 2018-03-08 | 2019-03-06 | Storage system and control method therefor |
CN201910175421.0A CN110246527A (zh) | 2018-03-08 | 2019-03-08 | 存储系统和控制装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018041887A JP2019159471A (ja) | 2018-03-08 | 2018-03-08 | ストレージシステム、その制御方法およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019159471A true JP2019159471A (ja) | 2019-09-19 |
Family
ID=67844015
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018041887A Pending JP2019159471A (ja) | 2018-03-08 | 2018-03-08 | ストレージシステム、その制御方法およびプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20190278732A1 (ja) |
JP (1) | JP2019159471A (ja) |
CN (1) | CN110246527A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110989921B (zh) * | 2019-10-24 | 2023-05-26 | 西安艾可萨科技有限公司 | 可配置存储阵列系统及其控制方法、通信设备 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5619722A (en) * | 1994-01-18 | 1997-04-08 | Teramar Group, Inc. | Addressable communication port expander |
US7882509B2 (en) * | 2007-06-29 | 2011-02-01 | Emulex Design & Manufacturing Corporation | Expander-based solution to the dynamic STP address problem |
US7904566B2 (en) * | 2008-03-14 | 2011-03-08 | Silicon Image, Inc. | Method, apparatus, and system for employing an enhanced port multiplier |
US9063655B2 (en) * | 2010-05-12 | 2015-06-23 | Silicon Image, Inc. | Multi-level port expansion for port multipliers |
US9195530B1 (en) * | 2011-09-06 | 2015-11-24 | Western Digital Technologies, Inc. | Systems and methods for improved data management in data storage systems |
KR20130070251A (ko) * | 2011-12-19 | 2013-06-27 | 에스케이하이닉스 주식회사 | 브릿지 칩셋 및 그것을 포함하는 데이터 저장 시스템 |
US20140163716A1 (en) * | 2012-12-10 | 2014-06-12 | Skymedi Corporation | Bridge device, automated production system and method thereof for storage device |
US8954655B2 (en) * | 2013-01-14 | 2015-02-10 | Western Digital Technologies, Inc. | Systems and methods of configuring a mode of operation in a solid-state memory |
JP6700662B2 (ja) * | 2015-02-10 | 2020-05-27 | キヤノン株式会社 | 情報処理装置、情報処理装置の制御方法、及びプログラム |
-
2018
- 2018-03-08 JP JP2018041887A patent/JP2019159471A/ja active Pending
-
2019
- 2019-03-06 US US16/294,671 patent/US20190278732A1/en not_active Abandoned
- 2019-03-08 CN CN201910175421.0A patent/CN110246527A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN110246527A (zh) | 2019-09-17 |
US20190278732A1 (en) | 2019-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9122653B2 (en) | Migrating virtual machines across sites | |
US9274901B2 (en) | I/O request mirroring in a clustered storage system | |
JP6136629B2 (ja) | ストレージ制御装置,ストレージシステム,および制御プログラム | |
JP2006085543A (ja) | 仮想計算機システム | |
JP6237406B2 (ja) | 情報処理装置、ストレージシステム、およびプログラム | |
US20220179812A1 (en) | Method for Improving Reliability of Storage System, and Related Apparatus | |
JP2018190376A (ja) | 管理コントローラによるsas/sataハードディスクドライブ更新 | |
KR20140139973A (ko) | 하이버네이션 기능을 구비한 화상 형성장치 및 그 제어방법과, 기억매체 | |
JP2005196490A (ja) | データ多重化のためのシステム及び方法 | |
US20150278048A1 (en) | Systems and methods for restoring data in a degraded computer system | |
JP2013041430A (ja) | 画像形成装置、画像形成装置の制御方法 | |
JP2019159471A (ja) | ストレージシステム、その制御方法およびプログラム | |
JP6544454B1 (ja) | サーバ、サーバによる制御方法及びプログラム | |
JP2006260141A (ja) | 記憶システムの制御方法、記憶システム、記憶制御装置、記憶システムの制御プログラム、情報処理システム | |
KR20180018195A (ko) | 공정 관리 장치, 이와 연동하는 데이터 서버를 포함하는 반도체 공정 관리 시스템 및 이를 이용한 반도체 공정 관리 방법 | |
JP2012014239A (ja) | フォールトトレラントの計算機システム、複数の物理サーバとストレージ装置とに接続されるスイッチ装置、及び、サーバ同期制御方法 | |
JP2019086959A (ja) | 情報処理装置及びその制御方法、並びにプログラム | |
JP2005115472A (ja) | 運行管理装置 | |
JP7263067B2 (ja) | 情報処理装置および情報処理装置の制御方法 | |
JP2011076528A (ja) | Raidカードの冗長化方法及びraidカードの冗長化装置 | |
JP7332280B2 (ja) | 冗長化システム、冗長化プログラム、及び情報処理装置 | |
JP2011180871A (ja) | フォールトトレラントシステム及び仮想マシン構築方法 | |
JP6930153B2 (ja) | パス切替装置、パス切替方法及びパス切替プログラム、並びに、コンピュータシステム | |
JP2019212026A (ja) | 情報処理装置及びその制御方法、並びにプログラム | |
JP2010033379A (ja) | 仮想化システム及び仮想化の復旧方法 |