以下、実施の形態について図面を参照して詳細に説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るストレージシステムの構成例を示す図である。
図1に示すストレージシステム1は、記憶装置10と、複数の制御部とを有する。図1のストレージシステム1は、例として2つの制御部20a,20bを有しているが、3つ以上の制御部を有していてもよい。
記憶装置10は、データを記憶する装置であり、例えば、複数のHDDなどの記録媒体を内部に備える。制御部20a,20bは、記憶装置10へのアクセス処理を制御する。制御部20a,20bは、例えば、図示しない上位装置からの記憶装置10に対するアクセス要求に応じて、記憶装置10にアクセスする。
例えば、制御部20a,20bは、それぞれ、記憶装置10に記憶されたデータの読み出し要求を上位装置から受け付けると、読み出しを要求されたデータを記憶装置10から読み出し、上位装置に送信する。あるいは、制御部20a,20bは、それぞれ、記憶装置10へのデータの書き込み要求を上位装置から受け付けると、書き込みを要求されたデータを記憶装置10に書き込む。また、制御部20a,20bは、記憶装置10に記憶されたデータをキャッシュする機能を備えていてもよい。
ストレージシステム1内の各制御部は、同じ構成を有している。制御部20aは、アクセス制御部21a、中継部22aおよび動作状態制御部23aを備えており、制御部20bは、アクセス制御部21b、中継部22bおよび動作状態制御部23bを備えている。アクセス制御部21aとアクセス制御部21b、中継部22aと中継部22b、動作状態制御部23aと動作状態制御部23bは、それぞれ同じ処理を実行可能とする。
各制御部内のアクセス制御部は、自身が属する制御部内の中継部、または、他の制御部内の中継部を通じて、記憶装置10にアクセスする。各制御部内の中継部は、自身が属する制御部内のアクセス制御部から記憶装置10へのアクセスを中継するとともに、他の制御部内のアクセス制御部から記憶装置10へのアクセスを中継する。
図1の例では、アクセス制御部21aは、中継部22aを通じて記憶装置10にアクセスすることも、中継部22bを通じて記憶装置10にアクセスすることも可能である。また、アクセス制御部21bは、中継部22bを通じて記憶装置10にアクセスすることも、中継部22aを通じて記憶装置10にアクセスすることも可能である。このように、アクセス制御部21aから記憶装置10へのアクセス経路、および、アクセス制御部21bから記憶装置10へのアクセス経路のそれぞれが冗長化された構成により、記憶装置10へのアクセスの信頼性が向上する。
各制御部内の動作状態制御部は、他の制御部での異常発生を検知したとき、他の制御部における異常発生箇所に応じて、他の制御部の動作状態を制御する機能を備える。通常動作状態の制御部内の動作状態制御部は、他の制御部での異常発生を検知したとき、異常発生を検知した他の制御部内の中継部が使用可能か否かを判断する。動作状態制御部は、異常発生を検知した他の制御部内の中継部が使用可能と判断した場合には、他の制御部を部分動作状態に遷移させる。動作状態制御部が他の制御部を部分動作状態に遷移させると、動作状態制御部が属する制御部内のアクセス制御部から他の制御部内の中継部を通じて記憶装置10にアクセスすることが可能な状態のまま、他の制御部内の少なくともアクセス制御部の動作が停止する。
例えば、図1の上図は、制御部20a,20bがともに通常動作状態である場合を示す。この状態から、制御部20bにおいて異常が発生すると、制御部20aの動作状態制御部23aは、制御部20bでの異常発生を検知し、制御部20bの中継部22bが使用可能か否かを判断する。動作状態制御部23aは、中継部22bが使用可能であると判断すると、図1の下図に示すように、制御部20bを部分動作状態に遷移させる。
部分動作状態に遷移した制御部20bでは、アクセス制御部21aから中継部22bを通じて記憶装置10にアクセスすることが可能な状態のまま、制御部20b内の少なくともアクセス制御部21bの動作が停止する。また、部分動作状態に遷移した制御部20bでは、動作状態制御部23bの動作も停止してもよい。また、部分動作状態に遷移した制御部20bでは、アクセス制御部21bおよび動作状態制御部23bへの電源供給が停止されてもよい。
制御部20bが部分動作状態に遷移した状態では、制御部20bから記憶装置10に対してアクセスすることはできなくなるものの、制御部20b内の中継部22bは制御部20aから使用可能な状態となる。このとき、制御部20aのアクセス制御部21aは、制御部20a内の中継部22aだけでなく、制御部20b内の中継部22bを通じて、記憶装置10にアクセスすることが可能になる。すなわち、制御部20bが部分動作状態に遷移した状態では、制御部20bで異常が発生したにもかかわらず、制御部20aのアクセス制御部21aから記憶装置10へのアクセス経路が冗長化された状態を維持でき、アクセス制御部21aから記憶装置10へのアクセスの信頼性を維持できる。また、アクセス制御部21aと記憶装置10との間で転送されるデータが中継部22aを介したアクセス経路に集中する事態も回避でき、制御部20aから記憶装置10へのアクセス性能も維持できる。
また、制御部20b内の動作状態制御部23bも、制御部20aの動作状態制御部23aと同様の処理を実行する。すなわち、動作状態制御部23bは、制御部20aでの異常発生を検知すると、制御部20aの中継部22aが使用可能か否かを判断する。動作状態制御部23bは、中継部22aが使用可能であると判断すると、制御部20aを、アクセス制御部21bから中継部22aを通じて記憶装置10にアクセスすることが可能な状態のまま、制御部20a内の少なくともアクセス制御部21aの動作が停止した部分動作状態に遷移させる。これにより、制御部20aで異常が発生したにもかかわらず、アクセス制御部21bから記憶装置10へのアクセス経路は冗長化されたままになり、アクセス制御部21bから記憶装置10へのアクセスの信頼性を維持できる。
〔第2の実施の形態〕
次に、記憶装置へのアクセスを中継する中継部としてSASエクスパンダを用いたストレージシステムの構成例について説明する。図2は、第2の実施の形態に係るストレージシステムの全体構成例を示す図である。
図2に示すストレージシステム100は、ストレージ装置として複数のHDDを備える。ストレージシステム100内のDE(Drive Enclosure)210,220のそれぞれには、ストレージ装置を構成する複数のHDDが格納されている。また、ストレージシステム100は、DE210,220内のHDDに対するアクセスを制御する2つのCM(Controller Module)300a,300bを備えている。なお、DE210,220は、例えば、ストレージシステム100の外部に設けられていてもよい。また、ストレージ装置としては、HDDに限らず、例えばSSD(Solid State Drive)などの他の種類のストレージ装置が使用されてもよい。
ストレージシステム100には、ホスト装置120と管理端末130とが接続されている。ホスト装置120は、ユーザの操作に応じて、ストレージシステム100内のCM300aまたはCM300bに対して、DE210内のHDDまたはDE220内のHDDへのアクセスを要求する。なお、ホスト装置120とCM300a,300bとは、例えば、光ファイバを介して接続されている。
管理端末130は、管理者の操作に応じて、ストレージシステム100の動作を管理する。例えば、管理端末130は、管理者の操作に応じて、ストレージシステム100内のCM300a,300bのそれぞれに対する電源投入や電源切断を要求することができる。なお、管理端末130とCM300a,300bとは、例えば、LAN(Local Area Network)ケーブルを介して接続されている。
CM300a,300bは、それぞれ、ホスト装置120からのアクセス要求に応じてDE210,220内のHDDへのアクセスを制御する。例えば、CM300a,300bは、それぞれ、HDDに記憶されたデータの読み出し要求をホスト装置120から受け付けると、読み出しを要求されたデータをHDDから読み出し、ホスト装置120に送信する。あるいは、CM300a,300bは、それぞれ、HDDへのデータの書き込み要求をホスト装置120から受け付けると、書き込みを要求されたデータをHDDに書き込む。
また、CM300a,300bは、DE210,220内のHDDに記憶されたデータをキャッシュする機能を備える。また、CM300aとCM300bとは互いにデータを送受信でき、CM300a,300bは、例えば、他方のCMが保持するキャッシュデータのバックアップを互いに保持する。また、CM300a,300bは、他方のCMの電源状態を制御することも可能になっている。なお、CM300a,300bは、例えば、DE210,220内のHDDに記憶されたデータをRAID(Redundant Arrays of Inexpensive Disks)によって管理してもよい。
図3は、ストレージシステム内のCMのハードウェア構成例を示す図である。
CM300aは、CPU(Central Processing Unit)301a、RAM(Random Access Memory)302a、PCI(Peripheral Component Interconnect)スイッチ303a、CA(Channel Adapter)304a,305a、IOC(In/Out Controller)306a、SASエクスパンダ307a、PCH(Platform Controller Hub)308a、SSD309a、LANインタフェース310a、FPGA(Field Programmable Gate Array)311a、NVRAM(Non Volatile RAM)312a、LED(Light Emitting Diode)313aおよびPSU(Power Supply Unit)314aを備えている。
また、CM300bは、CM300aと同じハードウェア構成によって実現される。すなわち、CM300b内のCPU301b、RAM302b、PCIスイッチ303b、CA304b,305b、IOC306b、SASエクスパンダ307b、PCH308b、SSD309b、LANインタフェース310b、FPGA311b、NVRAM312b、LED313bおよびPSU314bは、CM300a内のCPU301a、RAM302a、PCIスイッチ303a、CA304a,305a、IOC306a、SASエクスパンダ307a、PCH308a、SSD309a、LANインタフェース310a、FPGA311a、NVRAM312a、LED313aおよびPSU314aにそれぞれ対応する。そこで、ここでは基本的に、CM300aのハードウェア構成について説明し、CM300bのハードウェア構成の説明については省略する。
CPU301aは、CM300a全体を統括的に制御する。RAM302aは、CM300aの主記憶装置として使用され、CPU301aに実行させるプログラムの少なくとも一部や、このプログラムによる処理に必要な各種データを一時的に記憶する。また、RAM302aは、DE210,220内のHDDに記憶されたデータのキャッシュ領域としても使用される。
PCIスイッチ303aは、CPU301aと、CA304a,305aおよびIOC306aとの間で、データを送受信する。また、PCIスイッチ303aは、他方のCM300b内のPCIスイッチ303bと接続されている。以下、PCIスイッチ303aとPCIスイッチ303bとの間の通信経路を「通信経路P1」と呼ぶ。
CM300aのCPU301aと、CM300bのCPU301bとは、通信経路P1を通じて通信できるようになっている。例えば、CM300aのCPU301aは、他方のCM300bにおいて発生した異常の内容を示す異常検出情報を、CM300bのCPU301bから通信経路P1を通じて取得することができる。また、例えば、CPU301a,301bは、RAM302a,302bにそれぞれ記憶されたHDDのキャッシュデータを、通信経路P1を通じて他方のCMのCPUに送信し、他方のCM内のRAMにキャッシュデータをバックアップするように依頼することもできる。
CA304a,305aは、ホスト装置120とCM300aとの間でデータを送受信するインタフェース処理を実行する。なお、CA304a,305aを、それぞれ個別の光ファイバケーブルを介してホスト装置120に接続することにより、CM300aとホスト装置120との間の通信経路が冗長化され、通信の信頼性を向上させることができる。
IOC306aは、SASデバイスであるDE210,220内のHDDとの間のインタフェース処理を実行する制御回路(SASコントローラ)である。また、SASエクスパンダ307aは、SASコントローラとSASデバイスとの間でデータを中継する。なお、SASエクスパンダ307aは、内部にメモリを備え、CM300aの電源状態を示す情報を内部のメモリに保持する。
ここで、CM300aのIOC306aは、CM300aのSASエクスパンダ307aを通じてDE210,220と接続されている。これとともに、CM300aのIOC306aは、CM300b内のSASエクスパンダ307bを通じてDE210,220と接続されている。このように、IOC306aとDE210,220とが2つのSASエクスパンダ307a,307bを通じて接続されることで、IOC306aからDE210,220へのアクセス経路が冗長化されている。
同様に、CM300bのIOC306bは、CM300bのSASエクスパンダ307bを通じてDE210,220と接続されている。これとともに、CM300bのIOC306bは、CM300a内のSASエクスパンダ307aを通じてDE210,220と接続されている。このように、IOC306bとDE210,220とが2つのSASエクスパンダ307a,307bを通じて接続されることで、IOC306bからDE210,220へのアクセス経路も冗長化されている。
なお、以下の説明では、IOC306aからSASエクスパンダ307aを通じてDE210,220へアクセスする経路と、IOC306bからSASエクスパンダ307bを通じてDE210,220へアクセスする経路を、「ストレート経路」と呼ぶ。また、IOC306aからSASエクスパンダ307bを通じてDE210,220へアクセスする経路と、IOC306bからSASエクスパンダ307aを通じてDE210,220へアクセスする経路を、「クロス経路」と呼ぶ。
PCH308aは、CPU301aと、SSD309a、LANインタフェース310aおよびFPGA311aとの間で、データを送受信する。
SSD309aは、CM300aの二次記憶装置として使用され、CPU301aにより実行されるプログラムやその実行に必要な各種のデータなどを記憶する。なお、二次記憶装置としては、例えば、HDDなどの他の種類の不揮発性記憶装置が使用されてもよい。
LANインタフェース310aは、LANケーブルを介して管理端末130と接続し、管理端末130との間でデータを送受信する。
FPGA311aは、CM300a内のハードウェアの状態を監視する機能を備える。FPGA311aは、CM300a内のハードウェアの異常を検出すると、検出した異常の内容を示す異常検出情報をCPU301aに通知する。また、FPGA311aは、異常検出情報をNVRAM312aに保存する。さらに、FPGA311aは、CPU301aによってプログラム実行時の異常が検出された場合、検出された異常の内容を示す異常検出情報をCPU301aから受信し、受信した異常検出情報をNVRAM312aに保存する。また、FPGA311aは、CPU301aからの要求、またはCM300bのFPGA311bからの要求に応じて、NVRAM312aに保存した異常検出情報をCM300bのFPGA311bに送信することもできる。
また、FPGA311aは、CM300aの電源状態を制御する機能を備える。FPGA311aは、CPU301aからの要求、またはCM300bのFPGA311bからの要求に応じて、PSU314aを制御し、CM300aの電源状態を所定の状態に遷移させる。
さらに、FPGA311aは、CM300bのFPGA311bと通信する機能を備える。以下、FPGA311aとFPGA311bとの間の通信経路を、「通信経路P2」と呼ぶ。FPGA311aは、例えば、CPU301aからの要求に応じて、CM300bの電源状態を所定の状態に遷移させるように、通信経路P2を通じてCM300bのFPGA311bに要求する。
なお、FPGA311aが実行する処理は、例えば、マイクロコンピュータなどの他の種類の制御回路によって実行されてもよい。
NVRAM312aは、FPGA311aでの処理に必要な各種のデータを記憶する不揮発性メモリである。また、NVRAM312aには、CM300aにおいて検出された異常の内容を示す異常検出情報が、FPGA311aによって格納される。
LED313aは、CM300aに異常が発生したことを示す表示手段である。LED313aの点灯動作は、FPGA311aによって制御される。後述するように、CM300aに異常が発生した場合の電源状態は2種類あり、LED313aは、FPGA311aの制御の下で、これらの2種類の電源状態を区別して表示する。
PSU314aは、FPGA311aの制御の下で、CM300aの内部に電源を供給する電源回路である。PSU314aからの電源の供給先は、FPGA311aから指定されるCM300aの電源状態に応じて決定される。
図4は、管理端末のハードウェア構成例を示す図である。
管理端末130は、図4に示すようなコンピュータとして実現される。このコンピュータは、CPU131によって装置全体が制御されている。CPU131には、バス138を介して、RAM132と複数の周辺機器が接続されている。
RAM132は、コンピュータの主記憶装置として使用される。RAM132には、CPU131に実行させるプログラムの少なくとも一部が一時的に格納される。また、RAM132には、CPU131による処理に必要な各種データが格納される。
バス138に接続されている周辺機器としては、HDD133、グラフィック処理装置134、入力インタフェース135、光学ドライブ装置136および通信インタフェース137がある。
HDD133は、コンピュータの二次記憶装置として使用される。HDD133には、CPU131が実行するプログラムや、各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
グラフィック処理装置134には、モニタ134aが接続されている。グラフィック処理装置134は、CPU131からの命令に従って、画像をモニタ134aの画面に表示させる。モニタ134aとしては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
入力インタフェース135には、例えば、キーボード135aとマウス135bとが接続されている。入力インタフェース135は、キーボード135aやマウス135bから送られてくる信号をCPU131に送信する。マウス135bは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置136は、レーザ光などを利用して、光ディスク136aに記録されたデータの読み取りを行う。光ディスク136aは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク106aには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
通信インタフェース137は、CM300a,300bとの間でLANケーブルを介してデータを送受信する。
なお、ホスト装置120についても、図4と同様のハードウェア構成によって実現できる。ただし、ホスト装置120が備える通信インタフェースは、CM300a,300bとの間で光ファイバを介してデータを送受信する。
図5は、CMが備える処理機能の例を示すブロック図である。
CM300aは、IOアクセス制御部331a、異常検出部332a、他方CM制御部333a、ハードウェア監視部341aおよび電源制御部342aを備えている。これらのうち、IOアクセス制御部331a、異常検出部332aおよび他方CM制御部333aの処理は、CPU301aが所定のプログラムを実行することで実現される。また、ハードウェア監視部341aおよび電源制御部342aの処理は、FPGA311aによって実現される。
CM300bは、CM300aと同様の処理機能を備える。すなわち、CM300bが備えるIOアクセス制御部331b、異常検出部332b、他方CM制御部333b、ハードウェア監視部341bおよび電源制御部342bは、CM300aが備えるIOアクセス制御部331a、異常検出部332a、他方CM制御部333a、ハードウェア監視部341aおよび電源制御部342aにそれぞれ対応する。従って、ここでは基本的に、CM300aが備える処理機能について説明し、CM300bが備える処理機能の説明については省略する。
なお、CM300a内の処理機能と同様に、CM300b内のIOアクセス制御部331b、異常検出部332bおよび他方CM制御部333bの処理は、CPU301bが所定のプログラムを実行することで実現される。また、CM300b内のハードウェア監視部341bおよび電源制御部342bの処理は、FPGA311bによって実現される。
IOアクセス制御部331aは、DE210,220内のHDDに対するアクセスを制御する。IOアクセス制御部331aは、ホスト装置120から発せられた、DE210内のHDDまたはDE220内のHDDに対するアクセス要求を、CA304aまたはCA305aから受け付け、IOC306aと、SASエクスパンダ307aまたはSASエクスパンダ307bとを通じて、DE210内のHDDまたはDE220内のHDDにアクセスする。
また、IOアクセス制御部331aは、DE210,220へのアクセス時に、IOC306aに対して、ストレート経路とクロス経路のどちらを利用してDE210,220にアクセスするかを指定する。IOアクセス制御部331aは、DE210,220へのアクセスの際に、RAM302aに記憶したエクスパンダ状態情報361aおよび他方エクスパンダ状態情報362aに基づいて、ストレート経路とクロス経路のどちらを利用してDE210,220にアクセスするかを決定する。
エクスパンダ状態情報361aは、CM300aのSASエクスパンダ307aの状態を示す情報であり、他方エクスパンダ状態情報362aは、他方のCM300bのSASエクスパンダ307bの状態を示す情報である。エクスパンダ状態情報361aおよび他方エクスパンダ状態情報362aは、ともに、SASエクスパンダが使用可能状態であることを示す「Normal」、SASエクスパンダが使用不能状態であることを示す「Fault」の2種類の値をとる。
IOアクセス制御部331aは、エクスパンダ状態情報361aおよび他方エクスパンダ状態情報362aのうち「Normal」である状態情報に対応するSASエクスパンダを経由する経路を利用して、DE210,220にアクセスする。例えば、IOアクセス制御部331aは、エクスパンダ状態情報361aが「Normal」であり、他方エクスパンダ状態情報362aが「Fault」である場合には、ストレート経路を利用してDE210,220にアクセスする。また、IOアクセス制御部331aは、他方エクスパンダ状態情報362aが「Normal」であり、エクスパンダ状態情報361aが「Fault」である場合には、クロス経路を利用してDE210,220にアクセスする。
また、IOアクセス制御部331aは、エクスパンダ状態情報361aおよび他方エクスパンダ状態情報362aの両方が「Normal」である場合は、通常、ストレート経路とクロス経路のそれぞれにおける通信負荷ができるだけ均等になるように、ストレート経路とクロス経路のどちらかを利用してDE210,220にアクセスする。なお、IOアクセス制御部331aは、例えば、ストレート経路およびクロス経路の使用率をそれぞれ50%とする(例えば、ストレート経路とクロス経路のそれぞれを交互に使用してDE210,220にアクセスする)ことにより、ストレート経路とクロス経路のそれぞれにおける通信負荷を略均等にすることができる。あるいは、IOアクセス制御部331aは、例えば、IOC306aまたはSASエクスパンダ307a,307bから、ストレート経路とクロス経路のそれぞれにおける単位時間当たりの通信量の通知を受け、通知された各通信量が均等になるように、ストレート経路とクロス経路のうちどちらかを選択してもよい。
また、IOアクセス制御部331aは、ストレート経路において所定回数以上正常なアクセスができなかった場合には、エクスパンダ状態情報361aを「Fault」に更新するとともに、ストレート経路を用いた通信において異常が発生したことを異常検出部332aに通知する。また、IOアクセス制御部331aは、クロス経路において所定回数以上正常なアクセスができなかった場合には、他方エクスパンダ状態情報362aを「Fault」に更新するとともに、クロス経路を用いた通信において異常が発生したことを他方CM制御部333aに通知する。
異常検出部332aは、CM300aにおける異常の発生を検出すると、検出した異常の内容を示す異常検出情報351aを生成し、異常検出情報351aをハードウェア監視部341aを通じてNVRAM312aに格納する。異常検出情報351aは、例えば、異常の発生箇所、異常が検出された処理内容などのうち少なくとも1つを識別可能なコードとして記述される。異常検出部332aは、例えば、CPU301aによるプログラムの実行時の異常を自ら検出する機能を備える。また、異常検出部332aは、CM300a内のハードウェアの異常については、ハードウェア監視部341aからの通知に基づいて検出する。さらに、異常検出部332aは、ストレート経路を用いた通信の異常については、IOアクセス制御部331aからの通知に基づいて検出する。
異常検出部332aは、CM300aにおける異常の発生を検出すると、異常検出情報351aを生成してNVRAM312aに格納するとともに、異常検出情報351aを、通信経路P1を通じてCM300bの他方CM制御部333bに送信する。また、異常検出部332aは、CM300aにおける異常の発生を検出したとき、検出した異常の内容がCM300aのSASエクスパンダ307aの動作に関係するものである場合には、エクスパンダ状態情報361aを「Fault」に更新する。
他方CM制御部333aは、他方のCM300bにおいて異常が発生すると、CM300bにおいて発生した異常の種別を判断し、その判断結果に応じて、CM300bを所定の電源状態に遷移させる。他方CM制御部333aは、例えば、CM300bの異常検出部332bから通知される、CM300bで検出された異常の内容を示す異常検出情報351bに基づいて、CM300bにおいて発生した異常の種別を判断する。また、他方CM制御部333aは、通信経路P1を通じてCM300bのCPU301bと通信できない場合には、CM300bのNVRAM312bに格納された異常検出情報351bを、通信経路P2を通じて取得することもできる。この場合、他方CM制御部333aは、ハードウェア監視部341aに対して、CM300bのNVRAM312bに格納された異常検出情報351bを取得するように要求する。
さらに、他方CM制御部333aは、他方のCM300bのSASエクスパンダ307bの電源状態および稼働状態を認識し、認識した各状態を異常の種別の判断に利用する。SASエクスパンダ307bの電源状態とは、SASエクスパンダ307bに電源が投入されているか否かを示す情報であり、SASエクスパンダ307bの稼働状態とは、SASエクスパンダ307bが正常に稼働しているか否かを示す情報である。
他方CM制御部333aは、SASエクスパンダ307bの電源状態および稼働状態を、クロス経路(すなわち、CM300aのIOC306aとCM300bのSASエクスパンダ307bとを接続する経路)を通じて取得する。また、他方CM制御部333aは、SASエクスパンダ307bの電源状態および稼働状態を、通信経路P2を通じて取得することもできる。後者の場合、他方CM制御部333aは、例えば、ハードウェア監視部341aに対して、SASエクスパンダ307bの電源状態および稼働状態をCM300bのハードウェア監視部341bから取得するように要求する。
他方CM制御部333aは、CM300bにおいて発生した異常の種別の判断結果に応じて、CM300bを所定の電源状態に遷移させるように、電源制御部342aに要求する。このとき、電源制御部342aは、CM300bの電源制御部342bと通信経路P2を通じて通信し、他方CM制御部333aから要求された電源状態にCM300bを遷移させるように、電源制御部342bに対して要求する。なお、RAM302aには、他方のCM300bにおける電源状態を示す他方CM状態情報371aが記憶され、他方CM制御部333aは、CM300bの電源状態を異なる状態に遷移させるたびに、他方CM状態情報371aを、CM300bにおける遷移後の電源状態を示すように更新する。
他方CM制御部333aは、異常の種別の判断の結果、発生した異常がCM300bのSASエクスパンダ307bの動作に関係するものである場合には、CM300bの電源状態をP_State1に遷移させる。このとき、他方CM制御部333aは、他方エクスパンダ状態情報362aを「Fault」に更新する。一方、他方CM制御部333aは、異常の種別の判断の結果、発生した異常がCM300bのSASエクスパンダ307bの動作に関係しないものである場合には、CM300bの電源状態を後述するP_State2に遷移させる。なお、P_State1は、CM300bを介したDE210,220へのアクセスができないようにCM300b内のハードウェアへの電源供給を停止した電源状態である。また、P_State2は、CM300bのSASエクスパンダ307bを通じたDE210,220へのアクセスを可能にしたまま、CM300b内のハードウェアへの電源供給を停止した電源状態である。
ハードウェア監視部341aは、CM300a内の各ハードウェアの動作を監視し、異常の発生を検出する。ハードウェア監視部341aは、CM300aのハードウェアにおける異常発生を検出すると、異常が発生したハードウェアを示す情報を異常検出部332aに通知する。この場合、ハードウェア監視部341aは、異常検出部332aによって生成された異常検出情報351aを異常検出部332aから受信し、異常検出情報351aをNVRAM312aに格納する。また、ハードウェア監視部341aは、CM300aのハードウェアにおける異常発生を検出したとき、異常検出部332aが動作していない場合(すなわち、CPU301aの動作が停止している場合)には、自ら異常検出情報351aを生成して、NVRAM312aに格納する。
さらに、ハードウェア監視部341aは、CM300bのハードウェア監視部341bからの要求に応じて、NVRAM312aから異常検出情報351aを読み出し、ハードウェア監視部341bに送信することもできる。また、ハードウェア監視部341aは、他方CM制御部333aからの要求に応じて、CM300bのハードウェア監視部341bに対して、CM300bのNVRAM312bに格納された異常検出情報351bの読み出しを要求することもできる。この場合、ハードウェア監視部341aは、CM300bによってNVRAM312bから読み出されて送信された異常検出情報351bを、他方CM制御部333aに転送する。
電源制御部342aは、PSU314aを制御して、CM300aを所定の電源状態に遷移させる。後述するように、CM300aは、電源状態として少なくともP_State1,2,3の3種類の状態をとり、電源状態ごとに、CM300aにおけるPSU314aからの電源供給対象が異なる。電源制御部342aは、CM300aの電源状態を、他方CM制御部333a、または、CM300bの電源制御部342bからの要求に応じて遷移させる。
また、電源制御部342aは、他方CM制御部333aからの要求に応じて、CM300bの電源状態を所定の状態に遷移させるように、CM300bの電源制御部342bに要求することもできる。CM300bについても、CM300aと同様に、電源状態として少なくともP_State1,2,3の3種類の状態をとる。
ここで、CMがとり得る電源状態について説明する。以下の図6,図7では、例として、CM300bにおける電源状態について説明するが、CM300aも同様の電源状態をとる。また、図6,図7では、電源供給が停止されて動作停止状態にあるハードウェアブロックを点線で示すとともに、ハードウェアブロックの動作停止に伴って信号の転送が不可能になった信号経路を点線矢印で示す。
図6は、CMがP_State1であるときの電源供給状態を示す図である。
CM300bの電源状態がP_State1であるとき、CM300b内のCPU301b、RAM302b、PCIスイッチ303b、CA304b,305b、IOC306b、SASエクスパンダ307b、PCH308b、SSD309bおよびLANインタフェース310bに対する、PSU314bからの電源供給が停止される。一方、CM300b内のFPGA311bおよびLED313bに対しては、PSU314bから電源が供給される。また、FPGA311bは、NVRAM312bに対する読み書きを行うことも可能である。
CM300bがP_State1になると、CA304b,305b、CPU301b、IOC306bおよびSASエクスパンダ307bの動作が停止するため、ホスト装置120からCM300bを通じてDE210,220にアクセスすることは不可能になる。また、他方のCM300aがクロス経路(すなわち、CM300bのSASエクスパンダ307bを経由するアクセス経路)を通じてDE210,220にアクセスすることも不可能になる。
また、CM300bは、P_State1であるとき、ストレージシステム100の筐体から取り外し可能な状態となる。図5に示したFPGA311bの電源制御部342bは、CM300bをP_State1に遷移させたとき、LED313bを点灯させて、CM300bが取り外し可能な状態であることを表示する。
また、CM300bがP_State1であるとき、FPGA311bの電源制御部342bは、他方のCM300aからの通信経路P2を通じた要求に応じて、CM300bを、通常運用状態であるP_State3に遷移させることもできる。図示しないが、P_State3では、CM300b内のすべてのハードウェアブロックに対してPSU314bからの電源が供給される。
図7は、CMがP_State2であるときの電源供給状態を示す図である。
電源状態がP_State2であるCM300bにおいては、P_State1と比較すると、FPGA311bおよびLED313bに加えて、SASエクスパンダ307bに対しても、PSU314bからの電源が供給される。CM300bがP_State2になると、CA304b,305b、CPU301bおよびIOC306bの動作が停止するため、ホスト装置120からCM300bを通じてDE210,220にアクセスすることは不可能になる。しかしながら、SASエクスパンダ307bは動作可能な状態になっているので、他方のCM300aは、SASエクスパンダ307bを経由したクロス経路を利用して、DE210,220にアクセスすることが可能になる。この場合、CM300aはストレート経路とクロス経路の2つの経路を選択的に利用してDE210,220にアクセスすることが可能であり、CM300aからDE210,220へのアクセス経路が冗長化された状態が維持される。
また、CM300bがP_State2であるとき、図5に示したFPGA311bの電源制御部342bは、他方のCM300aからの通信経路P2を通じた要求に応じて、CM300bを、P_State1またはP_State3に遷移させることもできる。
また、FPGA311bの電源制御部342bは、CM300bをP_State2に遷移させたとき、LED313bを点滅させる。すなわち、LED313bは、P_State1であるかP_State2であるかを明確に視認できるような点灯動作を行う。CM300bがP_State2であるときには、CM300bのSASエクスパンダ307bが他方のCM300aによってDE210,220へのアクセス経路として使用中の場合がある。このため、P_State2となっているCM300bをストレージシステム100の筐体から取り外すことは、CM300bが他方のCM300aにおけるDE210,220へのアクセス処理に影響が生じる場合があることから、好ましくない。そこで、CM300bがP_State1でなくP_State2であることをLED313bによって明示することで、CM300bをすぐに取り外さないように保守作業者に警告できる。
なお、CM300a,300bがとり得る電源状態としては、他に、停電時に遷移する状態であるP_State4があってもよい。CM300bについて説明すると、電源状態がP_State4であるCM300bにおいては、P_State1と比較すると、FPGA311bおよびLED313bに加えて、CPU301b、RAM302b、PCH308bおよびSSD309bに対しても電源が供給される。ただし、これらの各ハードウェアブロックに対しては、ストレージシステム100の筐体内に設けられたバッテリ(例えば電気二重層コンデンサなど)からの電源が供給される。
P_State4に遷移したCM300bでは、CPU301bの処理によって、RAM302bに格納された、DE210,220内のHDDのキャッシュデータが、SSD309bに退避される。P_State4では、キャッシュデータの退避に必要最小限のハードウェアブロックに対してのみ電源が供給されることで、電池駆動時の電力消費量が抑制される。
次に、一方のCMで異常が発生した場合の処理について説明する。以下の説明では例として、CM300bにおいて異常が発生したことを、CM300aが検知する場合の処理について説明する。
まず、図8は、一方のCMにおいて異常が発生した場合の動作を説明する図である。
CM300aの他方CM制御部333aは、他方のCM300bにおける異常発生を検知すると、CM300bから、異常検出情報351b、エクスパンダ稼働状態情報381bおよびエクスパンダ電源状態情報382bを取得する。異常検出情報351bは、前述の通り、CM300bにおいて発生した異常の内容を示す情報である。エクスパンダ稼働状態情報381bは、CM300bのSASエクスパンダ307bが稼働しているか否かを示す情報である。エクスパンダ電源状態情報382bは、CM300bのSASエクスパンダ307bに電源が投入されているか否かを示す情報である。
異常検出情報351bを他方CM制御部333aが取得する経路は、複数用意されている。このように、異常検出情報351bの取得経路が複数用意されることで、他方CM制御部333aは、CM300bでの異常検出後もCM300bのSASエクスパンダ307bを引き続き使用可能か否かを、確実に判断できるようになる。
他方CM制御部333aは、異常検出情報351bを、通信経路P1,P2のうちの一方から取得することができる。例えば、異常検出部332bによってCM300b内の異常が検出された場合、異常検出部332bは、異常検出情報351bを生成して、異常検出情報351bをハードウェア監視部341bを通じてNVRAM312bに格納する。また、異常検出部332bは、生成した異常検出情報351bを、通信経路P1を通じて他方のCM300a内の他方CM制御部333aに通知する。異常検出部332bは、例えば、他方のCM300a内の他方CM制御部333aに対して異常の発生を通知した後、他方CM制御部333aからの要求に応じて、異常検出情報351bを他方CM制御部333aに通知してもよい。なお、異常検出部332bは、NVRAM312bに格納した異常検出情報351bを読み出して、他方のCM300a内の他方CM制御部333aに通知してもよい。
ここで、異常検出部332bによる異常検出処理について説明する。異常検出部332bは、CPU301bによるプログラムの実行時の異常を自ら検出する。また、異常検出部332bは、CM300b内のハードウェアの異常については、ハードウェア監視部341bからの通知に基づいて検出する。ハードウェア監視部341bは、CM300b内の各ハードウェアが正常に動作しているか否かを、例えば次のように検出する。ハードウェア監視部341bは、監視対象のハードウェアごとにウォッチドッグタイマを備える。ここで、例としてSASエクスパンダ307bにおける異常検出について説明すると、SASエクスパンダ307bは、自身に対応するハードウェア監視部341b内のウォッチドッグタイマを、定期的にリセットする。ハードウェア監視部341bは、SASエクスパンダ307bに対応するウォッチドッグタイマが、SASエクスパンダ307bによってリセットされずに所定の値までカウントアップされたとき、SASエクスパンダ307bにおいて異常が発生したと判断し、SASエクスパンダ307bにおける異常発生を異常検出部332bに通知する。
また、異常検出部332bは、ストレート経路を用いた通信の異常については、IOアクセス制御部331bからの通知に基づいて検出する。IOアクセス制御部331bは、SASエクスパンダ307bを経由するストレート経路において所定回数以上正常なアクセスができなかった場合に、ストレート経路において異常が発生したと判断し、ストレート経路における異常発生を異常検出部332bに通知する。なお、IOアクセス制御部による異常検出処理については、図9において詳しく説明する。
次に、CM300bにおいて異常が発生したときに、CPU301bの動作が停止している場合には、CM300aの他方CM制御部333aは、CM300bから通信経路P2を通じて異常検出情報351bを取得する。CM300bのハードウェア監視部341bは、ハードウェアの異常を検出したとき、CPU301bが動作してないために異常検出部332bと通信できない場合には、自ら異常検出情報351bを生成して、NVRAM312bに格納する。
CM300aの他方CM制御部333aは、例えば、CM300bのCPU301bと通信経路P1を通じて定期的に通信しており、CPU301bとの通信が断絶したとき、CM300bに対して、通信経路P2を通じて、異常検出情報351bの通知を要求する。具体的には、他方CM制御部333aは、CPU301bとの通信が断絶することでCM300bでの異常発生を検知すると、ハードウェア監視部341aに対してCM300bから異常検出情報351bを取得するように要求する。要求を受けたハードウェア監視部341aは、通信経路P2を通じてCM300bのハードウェア監視部341bと通信し、NVRAM312bに格納された異常検出情報351bの通知を要求する。要求を受けたハードウェア監視部341bは、NVRAM312bから異常検出情報351bを読み出し、通信経路P2を通じてCM300aのハードウェア監視部341aに送信する。ハードウェア監視部341aは、受信した異常検出情報351bを他方CM制御部333aに転送する。
なお、他方CM制御部333aは、IOアクセス制御部331aによってSASエクスパンダ307bを経由したクロス経路における異常の発生が検出されたとき、IOアクセス制御部331aから、他方のCM300bにおける異常発生の通知を受ける場合もある。このとき、他方CM制御部333aは、CM300bのCPU301bが動作状態であれば、CM300bの異常検出部332bに対して異常検出情報351bの通知を要求する。また、CM300bのCPU301bが動作状態でなければ、他方CM制御部333aは、通信経路P2を通じて異常検出情報351bを取得すればよい。
次に、エクスパンダ稼働状態情報381bおよびエクスパンダ電源状態情報382bの取得経路について説明する。CM300aの他方CM制御部333aは、エクスパンダ稼働状態情報381bおよびエクスパンダ電源状態情報382bを、通信経路P2を通じてCM300bから取得する。具体的には、他方CM制御部333aは、CM300bの異常を検知すると、ハードウェア監視部341aに対して、CM300bからエクスパンダ稼働状態情報381bおよびエクスパンダ電源状態情報382bを取得するように要求する。要求を受けたハードウェア監視部341aは、通信経路P2を通じてCM300bのハードウェア監視部341bと通信し、エクスパンダ稼働状態情報381bおよびエクスパンダ電源状態情報382bの通知を要求する。
要求を受けたハードウェア監視部341bは、エクスパンダ稼働状態情報381bおよびエクスパンダ電源状態情報382bを生成する。例えば、ハードウェア監視部341bは、前述した、SASエクスパンダ307bに対応するウォッチドッグタイマのカウント動作に基づいて、SASエクスパンダ307bが稼働しているか否かを判定し、判定結果をエクスパンダ稼働状態情報381bに記述する。また、ハードウェア監視部341bは、電源制御部342bに対してCM300bの現在の電源状態を問い合わせ、電源制御部342bから返答された電源状態に基づいて、SASエクスパンダ307bに電源が供給されているか否かを判定し、判定結果をエクスパンダ電源状態情報382bに記述する。
ハードウェア監視部341bは、上記手順により生成したエクスパンダ稼働状態情報381bおよびエクスパンダ電源状態情報382bを、通信経路P2を通じてCM300aのハードウェア監視部341aに送信する。ハードウェア監視部341aは、受信したエクスパンダ稼働状態情報381bおよびエクスパンダ電源状態情報382bを、他方CM制御部333aに転送する。
なお、他方CM制御部333aは、SASエクスパンダ307bが稼働しているか否かについては、クロス経路を通じてSASエクスパンダ307bにアクセスすることで判断することもできる。このように、SASエクスパンダ307bの稼働状態について、通信経路P2を通じたエクスパンダ稼働状態情報381bの取得と、クロス経路を通じたSASエクスパンダ307bへのアクセスという2つの方法によって判定できることで、他方CM制御部333aは、CM300bでの異常検出後もCM300bのSASエクスパンダ307bを引き続き使用可能か否かを、確実に判断できるようになる。
次に、図9は、IOアクセス制御部による異常検出処理を示すフローチャートである。なお、図9では例として、CM300aのIOアクセス制御部331aでの処理について説明するが、CM300bのIOアクセス制御部331bも、同様の処理を実行可能である。
[ステップS11]IOアクセス制御部331aは、CA304aまたはCA305aを通じて、ホスト装置120から発せられた、DE210内のHDDまたはDE220内のHDD(以下、単にHDDと呼ぶ)に対するアクセス要求を受け付けると、HDDに対してストレート経路またはクロス経路のどちらを通じてアクセスするかを決定する。IOアクセス制御部331aは、RAM302aに記憶されたエクスパンダ状態情報361aおよび他方エクスパンダ状態情報362aを参照し、「Normal」になっているSASエクスパンダを経由するアクセス経路を選択する。IOアクセス制御部331aは、エクスパンダ状態情報361aおよび他方エクスパンダ状態情報362aの両方が「Normal」の場合には、アクセスの負荷が分散するようにアクセス経路を決定する。なお、前述のように、IOアクセス制御部331aは、例えば、ストレート経路およびクロス経路の使用率をそれぞれ50%とする(例えば、ストレート経路とクロス経路のそれぞれを交互に使用してDE210,220にアクセスする)ことにより、ストレート経路とクロス経路のそれぞれにおける通信負荷を略均等にする。
IOアクセス制御部331aは、ストレート経路を通じてHDDにアクセスする場合には、ステップS12の処理を実行し、クロス経路を通じてHDDにアクセスする場合には、ステップS17の処理を実行する。
[ステップS12]IOアクセス制御部331aは、IOC306aに対して、ストレート経路を通じたHDDへのアクセス処理を実行させる。ここで、IOアクセス制御部331aは、IOC306aによるアクセス処理の実行結果に基づき、HDDに正しくアクセスできたか否かを判定する。IOアクセス制御部331aは、HDDに正しくアクセスできた場合(S12:Yes)には、処理を終了し、HDDに正しくアクセスできなかった場合(S12:No)には、ステップS13の処理を実行する。
[ステップS13]CM300aのRAM302aには、ストレート経路における異常の検出回数を示す異常検出点数CT1が記憶されている。異常検出点数CT1の初期値は0である。IOアクセス制御部331aは、異常検出点数CT1に、あらかじめ決められた加算値A1を加算し、加算結果によりRAM302a内の異常検出点数CT1を更新する。
[ステップS14]IOアクセス制御部331aは、ステップS13での加算結果が、所定の判定しきい値以下であるか否かを判定する。IOアクセス制御部331aは、加算結果が判定しきい値以下である場合(S14:Yes)には、処理を終了し、加算結果が判定しきい値を超えた場合(S14:No)には、ステップS15の処理を実行する。
[ステップS15]IOアクセス制御部331aは、CM300aのSASエクスパンダ307aの状態を示すエクスパンダ状態情報361aを、「Fault」に更新する。エクスパンダ状態情報361aが「Fault」とされることで、ストレート経路を利用したHDDへのアクセスが禁止される。
[ステップS16]IOアクセス制御部331aは、異常検出部332aに対して、ストレート経路における異常の発生を通知する。異常検出部332aは、IOアクセス制御部331aからの通知に基づいて、異常検出情報351aを生成し、CM300aの他方CM制御部333aに対して、CM300aにおける異常の発生と、異常検出情報351aとを通知する。
[ステップS17]IOアクセス制御部331aは、IOC306aに対して、クロス経路を通じたHDDへのアクセス処理を実行させる。ここで、IOアクセス制御部331aは、IOC306aによるアクセス処理の実行結果に基づき、HDDに正しくアクセスできたか否かを判定する。IOアクセス制御部331aは、HDDに正しくアクセスできた場合(S17:Yes)には、処理を終了し、HDDに正しくアクセスできなかった場合(S17:No)には、ステップS18の処理を実行する。
[ステップS18]CM300aのRAM302aには、クロス経路における異常の検出回数を示す異常検出点数CT2が記憶されている。異常検出点数CT2の初期値は0である。IOアクセス制御部331aは、異常検出点数CT2に、あらかじめ決められた加算値A1を加算し、加算結果によりRAM302a内の異常検出点数CT2を更新する。
[ステップS19]IOアクセス制御部331aは、ステップS18での加算結果が、所定の判定しきい値以下であるか否かを判定する。このステップS19で比較される判定しきい値は、ステップS14で比較される判定しきい値と同じであってよい。IOアクセス制御部331aは、加算結果が判定しきい値以下である場合(S19:Yes)には、処理を終了し、加算結果が判定しきい値を超えた場合(S19:No)には、ステップS20の処理を実行する。
[ステップS20]IOアクセス制御部331aは、CM300bのSASエクスパンダ307bの状態を示す他方エクスパンダ状態情報362aを、「Fault」に更新する。他方エクスパンダ状態情報362aが「Fault」とされることで、クロス経路を利用したHDDへのアクセスが禁止される。
[ステップS21]IOアクセス制御部331aは、他方CM制御部333aに対して、クロス経路における異常の発生を通知する。他方CM制御部333aは、IOアクセス制御部331aからの通知により、他方のCM300bにおける異常発生を検知し、異常検出情報351b、エクスパンダ稼働状態情報381bおよびエクスパンダ電源状態情報382bを、CM300bから取得する。
なお、図9の処理において、IOアクセス制御部331aが、HDDへのアクセスに失敗したときにアクセス失敗の原因を判定できる場合には、ステップS13およびステップS18では、アクセス失敗の原因に応じて異なる加算値A1が加算されてもよい。例えば、アクセス失敗の原因の重要度が高いほど、加算値A1の値が大きくされてもよい。
次に、図10は、他方のCMにおける異常発生を検知したときの他方CM制御部の処理を示すフローチャートである。なお、図10では例として、CM300bで異常が発生した場合のCM300aでの処理について説明するが、CM300aで異常が発生した場合のCM300bでも、同様の処理を実行可能である。
[ステップS31]他方CM制御部333aは、他方のCM300bにおいて異常が発生したことを検知する。他方CM制御部333aは、例えば、CM300bの異常検出部332bから異常検出通知または異常検出情報351bを受信したとき、通信経路P1を通じたCM300bのCPU301bとの通信が断絶したとき、CM300aのIOアクセス制御部331aからクロス経路における異常発生の通知を受けたときに、CM300bにおける異常発生を検知する。
[ステップS32]他方CM制御部333aは、CM300bから、異常検出情報351b、エクスパンダ稼働状態情報381bおよびエクスパンダ電源状態情報382bを取得する。これらの各情報の取得方法については、図8で説明した通りである。なお、他方CM制御部333aは、ステップS31において、CM300bの異常検出部332bから異常検出情報351bの通知を受けることでCM300bでの異常発生を検知した場合には、ステップS32では、エクスパンダ稼働状態情報381bおよびエクスパンダ電源状態情報382bを取得する。
[ステップS33]他方CM制御部333aは、ステップS32(またはステップS31,S32)で取得した異常検出情報351b、エクスパンダ稼働状態情報381bおよびエクスパンダ電源状態情報382bに基づいて、CM300bのSASエクスパンダ307bにおいて異常が発生したか否かを判定する。
このステップS33では、他方CM制御部333aは、異常検出情報351bに記述された異常の内容がSASエクスパンダ307bの動作に関係するものでなく、かつ、エクスパンダ稼働状態情報381bが稼働状態を示し、かつ、エクスパンダ電源状態情報382bが電源投入状態を示す場合に、SASエクスパンダ307bに異常が発生していないと判定して(S33:No)、ステップS34の処理を実行する。
一方、他方CM制御部333aは、異常検出情報351bに記述された異常の内容がSASエクスパンダ307bの動作に関係すること、エクスパンダ稼働状態情報381bが非稼働状態を示すこと、エクスパンダ電源状態情報382bが電源切断状態を示すことのうち少なくとも1つが該当する場合に、SASエクスパンダ307bに異常が発生したと判定して(S33:Yes)、ステップS40の処理を実行する。
[ステップS34]CM300bのSASエクスパンダ307bにおいて異常が発生していないと判定した場合、他方CM制御部333aは、電源制御部342aに対して、CM300bの電源状態をP_State2に遷移させるように要求する。要求を受けた電源制御部342aは、CM300bの電源制御部342bと通信経路P2を通じて通信し、CM300bの電源状態をP_State2に遷移させるように電源制御部342bに要求する。要求を受けた電源制御部342bは、PSU314bを制御して、CM300bの電源状態をP_State2に遷移させる。
[ステップS35]他方CM制御部333aは、RAM302aに記憶した他方CM状態情報371aを、P_State2を示すように更新する。
[ステップS36]他方CM制御部333aは、電源制御部342aに対して、CM300bの電源状態を、通常運用状態であるP_State3に遷移させるように要求する。この処理は、CM300b全体を再起動させるものである。ただし、CM300bの電源状態をP_State2からP_State3に遷移させる再起動処理は、SASエクスパンダ307bによるIOC306aとDE210,220との間の中継動作を停止することなく、CPU301bをはじめとするCM300b内のハードウェアをリセットして再度使用可能にする処理である。
電源状態の遷移要求を受けた電源制御部342aは、CM300bの電源制御部342bと通信経路P2を通じて通信し、CM300bの電源状態をP_State3に遷移させるように電源制御部342bに要求する。要求を受けた電源制御部342bは、PSU314bを制御して、SASエクスパンダ307bへの電源供給を継続して、SASエクスパンダ307bの動作が正常に継続される状態のまま、CM300bの電源状態をP_State3に遷移させる。
[ステップS37]他方CM制御部333aは、CM300bの再起動に成功したか否かを判定する。他方CM制御部333aは、例えば、CM300bのCPU301bと通信経路P1を通じて正常に通信できた場合に、CM300bの再起動が成功したと判定し(ステップS37:Yes)、ステップS38の処理を実行する。一方、他方CM制御部333aは、CM300bのCPU301bと通信経路P1を通じて正常に通信できなかった場合には、CM300bの再起動が失敗したと判定し(ステップS37:No)、ステップS39の処理を実行する。
[ステップS38]他方CM制御部333aは、RAM302aに記憶した他方CM状態情報371aを、P_State3を示すように更新する。
[ステップS39]他方CM制御部333aは、電源制御部342aに対して、CM300bの電源状態をP_State2に遷移させるように要求する。要求を受けた電源制御部342aは、CM300bの電源制御部342bと通信経路P2を通じて通信し、CM300bの電源状態をP_State2に遷移させるように電源制御部342bに要求する。要求を受けた電源制御部342bは、PSU314bを制御して、CM300bの電源状態をP_State2に遷移させる。
[ステップS40]CM300bのSASエクスパンダ307bにおいて異常が発生したと判定した場合、他方CM制御部333aは、RAM302aに記憶した他方エクスパンダ状態情報362aを「Fault」に更新する。これにより、DE210,220へのアクセスの際に他方エクスパンダ状態情報362aを参照するIOアクセス制御部331aは、クロス経路を使用してDE210,220にアクセスすることができなくなる。
[ステップS41]他方CM制御部333aは、電源制御部342aに対して、CM300bの電源状態をP_State1に遷移させるように要求する。要求を受けた電源制御部342aは、CM300bの電源制御部342bと通信経路P2を通じて通信し、CM300bの電源状態をP_State1に遷移させるように電源制御部342bに要求する。要求を受けた電源制御部342bは、PSU314bを制御して、CM300bの電源状態をP_State1に遷移させる。
[ステップS42]他方CM制御部333aは、RAM302aに記憶した他方CM状態情報371aを、P_State1を示すように更新する。
[ステップS43]他方CM制御部333aは、電源制御部342aに対して、CM300bの電源状態を、通常運用状態であるP_State3に遷移させるように要求する。この処理は、CM300b全体を再起動させるものである。
電源状態の遷移要求を受けた電源制御部342aは、CM300bの電源制御部342bと通信経路P2を通じて通信し、CM300bの電源状態をP_State3に遷移させるように電源制御部342bに要求する。要求を受けた電源制御部342bは、PSU314bを制御して、CM300bの電源状態をP_State3に遷移させる。
[ステップS44]他方CM制御部333aは、CM300bの再起動に成功したか否かを判定する。他方CM制御部333aは、例えば、CM300bのCPU301bと通信経路P1を通じて正常に通信できた場合に、CM300bの再起動が成功したと判定し(ステップS44:Yes)、ステップS45の処理を実行する。一方、他方CM制御部333aは、CM300bのCPU301bと通信経路P1を通じて正常に通信できなかった場合には、CM300bの再起動が失敗したと判定し(ステップS44:No)、ステップS46の処理を実行する。
[ステップS45]他方CM制御部333aは、RAM302aに記憶した他方エクスパンダ状態情報362aを「Normal」に更新する。これにより、DE210,220へのアクセスの際に他方エクスパンダ状態情報362aを参照するIOアクセス制御部331aは、クロス経路を使用してDE210,220にアクセスすることができるようになる。
また、他方CM制御部333aは、RAM302aに記憶した他方CM状態情報371aを、P_State3を示すように更新する。
[ステップS46]他方CM制御部333aは、電源制御部342aに対して、CM300bの電源状態をP_State1に遷移させるように要求する。要求を受けた電源制御部342aは、CM300bの電源制御部342bと通信経路P2を通じて通信し、CM300bの電源状態をP_State1に遷移させるように電源制御部342bに要求する。要求を受けた電源制御部342bは、PSU314bを制御して、CM300bの電源状態をP_State1に遷移させる。
以上の図10の処理では、他方CM制御部333aは、他方のCM300bにおける異常の発生を検知すると、発生した異常がSASエクスパンダ307bの動作に関係するか否かを判断する。発生した異常がSASエクスパンダ307bの動作に関係すると判断した場合、他方CM制御部333aは、CM300bの電源状態をP_State1に遷移させて、CM300aからDE210,220へのアクセス経路として、SASエクスパンダ307bを経由しないストレート経路のみが使用される状態にする。
一方、発生した異常がSASエクスパンダ307bの動作に関係ないと判断した場合、他方CM制御部333aは、CM300bの電源状態をP_State2に遷移させる。CM300bの電源状態がP_State2であるとき、CM300bのIOアクセス制御部331bからDE210,220へのアクセスは不可能になるものの、CM300bのSASエクスパンダ307bからDE210,220へのアクセス経路は使用可能な状態のままとなる。このとき、CM300aのIOアクセス制御部331aは、DE210,220へのアクセス経路として、ストレート経路だけでなく、CM300bのSASエクスパンダ307bを経由するクロス経路も使用可能となる。
すなわち、CM300bで異常が発生した場合でも、CM300bのSASエクスパンダ307bが正常に動作している状態であれば、CM300aのIOアクセス制御部331aからDE210,220へのアクセス経路は冗長化されたままになり、DE210,220へのアクセスの信頼性が維持される。
また、図10の処理では、CM300bで異常が発生し、CM300bの電源状態がP_State1またはP_State2に遷移した後、ステップS36またはステップS43において、CM300bを再起動して、CM300b全体を通常運用状態に戻そうとする処理が実行される。ここで、CM300bで発生した異常がSASエクスパンダ307bの動作に関係しないものである場合には、SASエクスパンダ307bへの電源供給を継続して、SASエクスパンダ307bの動作が正常に継続される状態のまま、CM300bの電源状態がP_State3に遷移して、CM300bが再起動する(ステップS36)。このような再起動処理により、CM300bで異常が発生したときでも、発生した異常がSASエクスパンダ307bの動作に関係しない場合には、CM300aからDE210,220へのアクセス経路の冗長性を維持したまま、CM300bを通常運用状態に復帰させることができる。
なお、ステップS36〜S39の処理およびステップS43〜S46の処理は、必ず実行される必要はなく、例えば、他方のCM300bにおける異常発生を検知したときにCM300bを再起動するようにCM300aにあらかじめ設定されていた場合に、実行されればよい。
ところで、SASエクスパンダ307a,307bは、それぞれ自身が属するCMのIOCにおける異常の発生を検出する機能を有していてもよい。この場合、SASエクスパンダ307a,307bは、CMでの異常発生を検知すると、例えば、他方のCMに対してクロス経路を通じて異常の発生を通知してもよい。
上記のような異常検出機能を備えるSASエクスパンダ307a,307bは、自身が属するCMの電源状態が、通常運用状態であるP_State3か、あるいはCM内のCPUやIOCの動作が停止した状態であるP_Stete2かを識別する電源状態識別情報を、自身の内部に設けられたメモリに保持してもよい。この場合、SASエクスパンダ307a,307bは、他方のCM内の他方CM制御部の制御により、自身が属するCMの電源状態がP_State3またはP_State2に遷移したときに、他方のCM内の他方CM制御部からどの電源状態に遷移させたかの通知を受けて、自身のメモリ内の電源状態識別情報を更新してもよい。
例えば、図10で説明したように、CM300aの他方CM制御部333aによってCM300bの電源状態が制御される場合に、CM300bのSASエクスパンダ307bは、CM300bをどの電源状態に遷移させたかの通知を他方CM制御部333aから受け付け、SASエクスパンダ307b内に保持する電源状態識別情報を更新する。例えば、図10のステップS34およびステップS39において、CM300bの電源状態がP_State2に遷移すると、CM300aの他方CM制御部333aは、CM300bのSASエクスパンダ307bに対して、CM300bの電源状態をP_State2に遷移させたことをクロス経路を通じて通知する。SASエクスパンダ307bは、他方CM制御部333aからの通知に基づいて、内部のメモリに保持した電源状態識別情報を、P_State2を示すように更新する。同様に、図10のステップS36およびステップS43において、CM300bの電源状態がP_State3に遷移すると、CM300aの他方CM制御部333aは、CM300bのSASエクスパンダ307bに対して、CM300bの電源状態をP_State3に遷移させたことをクロス経路を通じて通知する。SASエクスパンダ307bは、他方CM制御部333aからの通知に基づいて、内部のメモリに保持した電源状態識別情報を、P_State3を示すように更新する。
SASエクスパンダ307bは、CM300bの電源状態がP_State2またはP_State3であるときに、CM300bのIOC306bの異常を検出すると、次の図11に示すような処理を実行する。図11は、IOCの異常を検出したときのSASエクスパンダの処理を示すフローチャートである。
[ステップS61]SASエクスパンダ307bは、IOC306bの異常を検出する。
[ステップS62]SASエクスパンダ307bは、自身の内部のメモリに保持した電源状態識別情報に基づいて、CM300bの電源状態がP_State2か否かを判定する。SASエクスパンダ307bは、CM300bの電源状態がP_State2であると判定した場合(S62:Yes)、処理を終了し、CM300bの電源状態がP_State2でない、すなわちP_State3であると判定した場合(S62:No)、ステップS63の処理を実行する。
[ステップS63]SASエクスパンダ307bは、CM300aの他方CM制御部333aに対して、CM300bで異常が発生したことを、クロス経路を通じて通知する。なお、このステップS63でSASエクスパンダ307bから発せられる異常発生通知は、図10のステップS31において他方CM制御部333aがCM300bでの異常発生を検知することに利用されてもよい。
上記の図11の処理では、SASエクスパンダ307bは、IOC306bの異常を検出したときでも、その時点でのCM300bの電源状態がP_State2であれば、想定通りの動作であると判断して、CM300bの他方CM制御部333aに異常の発生を通知しない。これにより、CM300aからSASエクスパンダ307bを経由するクロス経路を利用したDE210,220へのアクセス処理が継続される。
次に、異常が発生したCMをストレージシステム100の筐体から取り外すメンテナンス作業について説明する。電源状態がP_State2であるCMは、内部のSASエクスパンダを継続して使用可能であるものの、異常が発生した状態にある。図10のステップS36〜S38に示したように、P_State2からP_State3に復帰する再起動処理に成功した場合には、再起動したCMはそのまま継続して使用可能である。しかしながら、再起動処理に失敗した場合には、CMはP_State2のままになり、この場合には最終的にP_State2であるCMの交換や修理が必要になる。
CMがP_State2であるときには、CM内のSASエクスパンダが他方のCMによってDE210,220へのアクセス経路として使用中の場合がある。このため、P_State2となっているCMをストレージシステムの筐体から取り外すことは、他方のCMにおけるDE210,220へのアクセス処理に影響が生じる場合があることから、好ましくない。P_State2となっているCMについては、CMをP_State1に遷移させて、他方のCMがクロス経路を使用できないようにする処理を実行した後に、CMをストレージシステム100の筐体から取り外すことが望ましい。
そこで、本実施の形態では、次の図12に示すように、電源状態がP_State2であるCMのメンテナンス作業を行う際に、他方のCMによって、P_State2であるCMを取り外し可能にする処理を実行する。図12は、電源状態がP_State2であるCMを取り外し可能にする処理を示すフローチャートである。この図12では、例として、CM300bの電源状態がP_State1またはP_State2である場合のCM300aでの処理を示す。
[ステップS81]メンテナンス作業を行う作業者は、ホスト装置120を操作することで、CM300aに対してメンテナンス作業を開始することを通知する。CM300aの他方CM制御部333aは、ホスト装置120から、CM300bをストレージシステム100の筐体から取り外すメンテナンス作業を開始することの通知を受けると、ステップS82からの処理を開始する。
なお、ホスト装置120からのメンテナンス作業開始通知の他、他方CM制御部333aは、例えば、ストレージシステム100の筐体に設けられたメンテナンス用スイッチ(図示せず)に対する入力操作を検知したときに、ステップS82からの処理を開始してもよい。メンテナンス用スイッチは、ストレージシステム100の筐体に取り付けられたCMのうち、電源状態がP_State1またはP_State2であるCMを取り外すことを、通常運用状態であるP_State3となっているCMに通知するものである。
[ステップS82]他方CM制御部333aは、RAM302aに記憶した他方CM状態情報371aを参照して、CM300bの電源状態を認識する。他方CM制御部333aは、CM300bの電源状態がP_State2である場合には、ステップS83の処理を実行し、CM300bの電源状態がP_State1である場合には、ステップS86の処理を実行する。
[ステップS83]他方CM制御部333aは、RAM302aに記憶した他方エクスパンダ状態情報362aを「Fault」にする。これにより、他方CM制御部333aは、DE210,220へのアクセスの際に他方エクスパンダ状態情報362aを参照するIOアクセス制御部331aが、クロス経路を使用してDE210,220にアクセスすることができないようにする。
[ステップS84]他方CM制御部333aは、電源制御部342aに対して、CM300bの電源状態をP_State1に遷移させるように要求する。要求を受けた電源制御部342aは、CM300bの電源制御部342bと通信経路P2を通じて通信し、CM300bの電源状態をP_State1に遷移させるように電源制御部342bに要求する。要求を受けた電源制御部342bは、PSU314bを制御して、CM300bの電源状態をP_State1に遷移させる。
[ステップS85]他方CM制御部333aは、RAM302aに記憶した他方CM状態情報371aを、P_State1を示すように更新する。
[ステップS86]他方CM制御部333aは、ホスト装置120に対して、メンテナンス作業を許可する通知を行う。ホスト装置120は、例えば、自身に接続されたモニタに、メンテナンス作業が許可されたことを表示する。
以上の図12の処理によれば、他方CM制御部333aは、作業者の入力操作によりメンテナンス作業の開始が通知されたときに、作業の対象であるCM300bの電源状態がP_State2であった場合には、他方エクスパンダ状態情報362aを「Fault」にして、CM300aからクロス経路を通じてDE210,220にアクセスすることを禁止する。その後、他方CM制御部333aは、CM300bをP_State1に遷移させ、メンテナンス作業を許可することを作業者に通知する。このような処理により、例えば、メンテナンス作業の実行時に、CM300aからクロス経路を通じてDE210,220へアクセスする処理においてエラーが検出されるなど、CM300aからDE210,220へのアクセス処理に影響が生じる事態が防止される。
なお、図12のステップS84では、CM300bの電源状態がP_State1に遷移すると、CM300bのLED313bが点滅状態から常時点灯状態に変化する。作業者は、LED313bが常時点灯状態に変化したことを視認することで、CM300bの電源状態がP_State2からP_State1に遷移したことを確実に認識できる。
〔第3の実施の形態〕
以下、第3の実施の形態として、第2の実施の形態で示したIOアクセス制御部331a、331bによる異常検出処理(図9参照)の手順を変形したストレージシステムを示す。
図9に示した異常検出処理では、ストレート経路において異常が発生したと判定する判定基準と、クロス経路において異常が発生したと判定する判定基準とが同じになっていた。しかしながら、他方のCM300bの電源状態がP_State2である場合には、他方のCM300b内のどこかで異常が発生している状態である。このことから、他方のCM300bの電源状態がP_State2である場合は、異常が発生していないP_State3である場合と比較して、CM300bのSASエクスパンダ307bを経由するクロス経路において異常が発生しやすいと考えられる。
そこで、第3の実施の形態では、他方のCM300bの電源状態がP_State2である場合には、P_State3である場合より、クロス経路で異常が発生したと判定する判定基準を厳しくする。これにより、電源状態がP_State2である他方のCM300bのSASエクスパンダ307bにおける異常の発生を、より早く検出できるようにする。
図13は、第3の実施の形態のIOアクセス制御部による異常検出処理を示すフローチャートである。この図13では、図9と同様に、CM300aのIOアクセス制御部331aでの処理について説明するが、CM300bのIOアクセス制御部331bも、同様の処理を実行可能である。また、図13では、図9と同じ処理が実行される処理ステップには同じ符号を付して示し、それらの処理ステップについての説明を省略する。
次に示すステップS18a〜S18cの処理は、図9に示したステップS18に代えて実行されるものである。
[ステップS18a]IOアクセス制御部331aは、ステップS17においてクロス経路を通じたHDDへのアクセスが正しくできなかった場合に、RAM302aに記憶した他方CM状態情報371aを参照して、CM300bの電源状態がP_State2であるか否かを判定する。
IOアクセス制御部331aは、CM300bの電源状態がP_State2であると判定した場合(S18a:Yes)には、ステップS18bの処理を実行する。一方、IOアクセス制御部331aは、CM300bの電源状態がP_State2でない場合、すなわち、CM300bの電源状態が通常運用状態であるP_State3である場合(S18a:No)には、ステップS18cの処理を実行する。
[ステップS18b]IOアクセス制御部331aは、クロス経路における異常の検出回数を示す異常検出点数CT2に、あらかじめ決められた加算値A2を加算し、加算結果によりRAM302a内の異常検出点数CT2を更新する。ここで、加算値A2は、ステップS13およびステップS18cでの加算値A1より大きい値とされる。
[ステップ18c]IOアクセス制御部331aは、異常検出点数CT2に、あらかじめ決められた加算値A1を加算し、加算結果によりRAM302a内の異常検出点数CT2を更新する。
IOアクセス制御部331aは、ステップS18bおよびステップS18cの各処理の後、ステップS19の処理を実行し、異常検出点数CT2が判定しきい値以下であるか否かを判定する。異常検出点数CT2が判定しきい値を超えていた場合、IOアクセス制御部331aは、他方エクスパンダ状態情報362aを「Fault」に更新してクロス経路を通じたDE210,220へのアクセスを禁止し(ステップS20)、他方CM制御部333aにクロス経路での異常発生を通知する(ステップS21)。
ここで、加算値A2を加算値A1より大きくしたことにより、異常検出点数CT2は、CM300bの電源状態がP_State3である場合よりP_State2である場合の方が、判定しきい値に早く達する。これにより、電源状態がP_State2であるCM300bのSASエクスパンダ307bにおける異常の発生を、より早く検出できるようになる。例えば、CM300aからDE210,220へのアクセス処理に重大な影響が及ぶような異常がクロス経路から検出される前に、クロス経路をCM300aから切り離し、クロス経路を通じたDE210,220へのアクセスを禁止することができる。
なお、上記の図13の処理では、ステップS18bにおける加算値A2をステップS18cにおける加算値A1より大きくした。しかしながら、その他の例として、ステップS18b,18cにおける加算値を同じにする代わりに、ステップS19における判定しきい値を、CM300bの電源状態がP_State3である場合よりP_State2である場合の方が小さい値になるようにしてもよい。このような処理でも、図13の処理と同様の効果が得られる。
〔第4の実施の形態〕
前述の第2の実施の形態では、CMのIOアクセス制御部は、ストレート経路とクロス経路の両方が使用可能な状態では、各経路における通信負荷ができるだけ均等になるように、DE210,220へのアクセス経路を選択する。例えば、IOアクセス制御部は、ストレート経路およびクロス経路の各使用比率が50%ずつになるように、アクセス経路を選択する。
しかしながら、他方のCMの電源状態がP_State2である場合には、他方のCMは異常が発生した状態であることから、ストレート経路よりクロス経路において異常が発生しやすいと言える。そこで、第4の実施の形態では、他方のCMの電源状態がP_State2である場合には、P_State3である場合より、クロス経路の使用比率を低く設定することで、クロス経路において異常が発生しにくくなるようにする。
なお、以下の第4の実施の形態の説明では、例として、CM300aのIOアクセス制御部331aにおける処理について説明するが、CM300bのIOアクセス制御部331bでも同様の処理を実行可能である。
また、以下の説明では、「使用比率」とはストレート経路とクロス経路のそれぞれを使用してアクセスを行う回数の比率を示す。ただし、「使用比率」は、ストレート経路とクロス経路のそれぞれにおいて実際に送受信されるデータ量の比率を指すものとしてもよい。この場合、IOアクセス制御部331aは、例えば、IOC306aあるいはSASエクスパンダ307a,307bから通信負荷の通知を受け、通知された通信負荷に応じて、ストレート経路とクロス経路のそれぞれにおける通信負荷が所定の比率となるようにアクセス制御を行えばよい。
図14は、第4の実施の形態におけるIOアクセス制御部がアクセス経路を選択する際に参照するテーブルの例を示す図である。
図14に示すテーブルTB1,TB2は、図9において説明したIOアクセス制御部331aによる異常検出処理において算出される異常検出点数CT1,CT2と、ストレート経路およびクロス経路の使用比率との関係を示すものである。例えば、各テーブルにおいて「70/30」という記載は、IOアクセス制御部331aによるストレート経路の使用比率を70%、クロス経路の使用比率を30%にすることを意味する。なお、図14では、各経路における異常発生を判定する判定しきい値(図9のステップS14,S19で使用する判定しきい値)を「255」とする。
本実施の形態において、IOアクセス制御部331aは、テーブルTB1またはテーブルTB2を参照し、RAM302aに記憶された異常検出点数CT1,CT2の組み合わせに応じて、ストレート経路とクロス経路の使用比率を変化させる。なお、テーブルTB1,TB2は、例えば、CM300aのSSD309aに記憶される。IOアクセス制御部331aは、基本的に、異常検出点数が大きいアクセス経路ほど、使用比率を低下させる。これにより、アクセス処理に失敗した回数の少ないアクセス経路の使用頻度を高くし、アクセス処理の成功率ができるだけ低下しないようにする。
なお、図14の各テーブルTB1,TB2において、「STB」という記述は、アクセス経路をスタンバイパスとして使用することを意味する。スタンバイパスは、他方のアクセス経路を使用したアクセス処理が失敗したときにのみ使用される経路である。例えば、「100/STB」という記述は、基本的にストレート経路を使用したアクセス処理を行い、ストレート経路を使用したアクセス処理に失敗した場合にのみ、クロス経路を使用して再度アクセス処理を行うことを意味する。
IOアクセス制御部331aは、他方のCM300bの電源状態が通常運用状態であるP_State3である場合には、テーブルTB1を参照してアクセス経路の使用比率を決定する。テーブルTB1では、異常検出点数CT1,CT2のそれぞれの値が同じ範囲にある場合には、ストレート経路とクロス経路とを均等に使用するように、使用比率が設定されている。そして、テーブルTB1では、ストレート経路とクロス経路との使用比率をそれぞれ50%とした状態を基準として、異常検出点数CT1の方がさらに高くなった場合にはストレート経路の使用比率を低くし、異常検出点数CT2の方がさらに高くなった場合にはクロス経路の使用比率を低くするように、使用比率が設定されている。
一方、IOアクセス制御部331aは、他方のCM300bの電源状態がP_State2である場合には、テーブルTB2を参照してアクセス経路の使用比率を決定する。テーブルTB2では、テーブルTB1と比較して、全体的にクロス経路の使用比率が低くなるように設定されている。例えば、テーブルTB2では、異常検出点数CT1,CT2のそれぞれの値が同じ範囲にある場合でも、ストレート経路の使用比率が60%、クロス経路の使用比率が40%に設定されている。このような設定により、異常が発生しやすいと考えられるクロス経路の使用比率が低下し、全体としてアクセス処理の成功率ができるだけ低下しないようになる。
図15は、IOアクセス制御部によるアクセス経路の使用比率決定処理を示すフローチャートである。なお、図15の処理は、RAM302aに記憶されたエクスパンダ状態情報361aおよび他方エクスパンダ状態情報362aがともに「Normal」であり、ストレート経路とクロス経路の両方の使用が許可された状態において実行されるものである。
[ステップS101]IOアクセス制御部331aは、RAM302aに記憶された他方CM状態情報371aに基づいて、他方のCM300bの電源状態を判定する。IOアクセス制御部331aは、CM300bの電源状態がP_State3である場合には、ステップS102の処理を実行し、CM300bの電源状態がP_State2である場合には、ステップS103の処理を実行する。
[ステップS102]CM300bの電源状態がP_State3である場合、IOアクセス制御部331aは、テーブルTB1に基づいて、アクセス経路の使用比率を決定する。この後、IOアクセス制御部331aは、ステップS101の処理を実行する。
[ステップS103]CM300bの電源状態がP_State2である場合、IOアクセス制御部331aは、テーブルTB2に基づいて、アクセス経路の使用比率を決定する。この後、IOアクセス制御部331aは、ステップS101の処理を実行する。
なお、以上の図15の処理は、例えば、一定時間ごとに実行されてもよい。あるいは、図15の処理は、CM300bの電源状態が変化し、他方CM状態情報371aの値が更新されたときに実行されてもよい。
以上の図15の処理によれば、他方のCM300bの電源状態がP_State2である場合には、P_State3である場合よりクロス経路を通じたアクセス処理の成功率が低いと考えられることから、ストレート経路が使用される頻度が高くなる。これにより、全体としてDE210,220へのアクセス処理の成功率が低下することが抑制される。
なお、前述した第3の実施の形態では、IOアクセス制御部は、他方のCMの電源状態がP_State2,P_State3のどちらの場合でも、テーブルTB1に基づいてアクセス経路の使用比率を決定してもよい。第3の実施の形態では、他方のCMの電源状態がP_State2である場合には、P_State3である場合より、異常検出点数CT2が異常検出点数CT1より早く増加する。このため、IOアクセス制御部がテーブルTB1に基づいてアクセス経路の使用比率を決定することで、結果的に、他方のCMの電源状態がP_State2である場合には、クロス経路よりストレート経路が使用される頻度が高くなる。従って、第4の実施の形態と同様の効果が得られる。
〔第5の実施の形態〕
第5の実施の形態では、他方のCMの電源状態がP_State2である場合に、上記の第4の実施の形態と比較してより積極的にストレート経路を使用するとともに、クロス経路の使用頻度を大きく低下させる。これにより、DE210,220へのアクセス処理の成功率が低下することを抑制する。
図16は、第5の実施の形態におけるIOアクセス制御部によるアクセス経路の使用比率決定処理を示すフローチャートである。なお、ここでは例として、CM300aのIOアクセス制御部331aにおける処理について説明するが、CM300bのIOアクセス制御部331bでも同様の処理を実行可能である。また、この図16の処理は、第2の実施の形態におけるIOアクセス制御部331a、および第3の実施の形態におけるIOアクセス制御部331aのどちらも実行可能である。
[ステップS121]IOアクセス制御部331aは、RAM302aに記憶された他方CM状態情報371aに基づいて、他方のCM300bの電源状態を判定する。IOアクセス制御部331aは、CM300bの電源状態がP_State3である場合には、ステップS122の処理を実行し、CM300bの電源状態がP_State2である場合には、ステップS123の処理を実行する。
[ステップS122]CM300bの電源状態がP_State3である場合、IOアクセス制御部331aは、ストレート経路とクロス経路の各使用比率ができるだけ均等になるようにする。例えば、IOアクセス制御部331aは、ストレート経路とクロス経路の使用比率をともに50%とする。この後、IOアクセス制御部331aは、ステップS121の処理を実行する。
[ステップS123]CM300bの電源状態がP_State2である場合、IOアクセス制御部331aは、クロス経路をスタンバイパスにし、ストレート経路を使用したアクセス処理が失敗した場合にのみ、クロス経路を使用してアクセスを行うようにする。この後、IOアクセス制御部331aは、ステップS121の処理を実行する。
なお、以上の図16の処理は、例えば、一定時間ごとに実行されてもよい。あるいは、図16の処理は、CM300bの電源状態が変化し、他方CM状態情報371aの値が更新されたときに実行されてもよい。
以上の図16の処理によれば、他方のCM300bの電源状態がP_State2である場合には、P_State3である場合よりクロス経路を通じたアクセス処理の成功率が低いと考えられることから、ストレート経路が使用される頻度が高くなる。これにより、全体としてDE210,220へのアクセス処理の成功率が低下することが抑制される。
〔第6の実施の形態〕
図17は、第6の実施の形態に係るストレージシステムの構成を示す図である。
DE210,220とCM300a,300bとは、図17に示すような構成によって接続されていてもよい。図17において、DE210は、2つのSASエクスパンダ211,212と、複数のHDD213とを備える。また、DE220は、2つのSASエクスパンダ221,222と、複数のHDD223とを備える。
DE210のSASエクスパンダ211は、CM300aのSASエクスパンダ307aと、DE210内部のHDD213との間のデータ送受信を中継する。また、DE210のSASエクスパンダ212は、CM300bのSASエクスパンダ307bと、DE210内部のHDD213との間のデータ送受信を中継する。CM300aのCPU301aおよびCM300bのCPU301bは、SASエクスパンダ307a,211を経由してDE210内のHDD213にアクセスできるとともに、SASエクスパンダ307b,212を経由してDE210内のHDD213にアクセスすることができる。
さらに、DE210のSASエクスパンダ211は、CM300aのSASエクスパンダ307aと、DE220のSASエクスパンダ221との間のデータ送受信も中継する。同様に、DE210のSASエクスパンダ212は、CM300bのSASエクスパンダ307bと、DE220のSASエクスパンダ222との間のデータ送受信も中継する。
DE220のSASエクスパンダ221は、DE210のSASエクスパンダ211と、DE220内部のHDD223との間のデータ送受信を中継する。また、DE220のSASエクスパンダ222は、DE210のSASエクスパンダ212と、DE220内部のHDD223との間のデータ送受信を中継する。CM300aのCPU301aおよびCM300bのCPU301bは、SASエクスパンダ307a,211,221を経由してDE212内のHDD223にアクセスできるとともに、SASエクスパンダ307b,212,222を経由してDE220内のHDD223にアクセスすることができる。
CM300aのIOアクセス制御部331aは、DE210,220内のSASエクスパンダ211,212,221,222の稼働状態を検出する機能を備えている。IOアクセス制御部331aは、CM300aの電源状態が通常運用状態であるP_State3であるとき、SASエクスパンダ211,212,221,222のそれぞれの稼働状態を、SASエクスパンダごとにRAM302aに用意したDE内エクスパンダ状態情報391aに記述する。DE内エクスパンダ状態情報391aのそれぞれには、SASエクスパンダが稼働中であることを示す「Normal」、SASエクスパンダが稼働していないことを示す「Fault」、SASエクスパンダの状態が不明であることを示す「Unknown」のいずれかが記述される。
また、CM300aの他方CM制御部333aは、CM300bの電源状態がP_State2である場合に、管理端末130から、CM300bのメンテナンス作業の開始通知を受け付けたとき、CM300bの取り外しを許可するか否かを判定する機能を備える。
なお、CM300aは、その他の処理機能として、第2〜第5の実施の形態のいずれかにおけるCM300aと同様の処理機能を備えることができる。
一方、CM300bも、CM300aと同様の処理機能を備える。例えば、CM300bのIOアクセス制御部331bは、DE210,220内のSASエクスパンダ211,212,221,222の稼働状態を検出する機能を備えている。IOアクセス制御部331bは、CM300bの電源状態が通常運用状態であるP_State3であるとき、SASエクスパンダ211,212,221,222のそれぞれの稼働状態を、SASエクスパンダごとにRAM302bに用意したDE内エクスパンダ状態情報391bに記述する。DE内エクスパンダ状態情報391bのそれぞれには、SASエクスパンダが稼働中であることを示す「Normal」、SASエクスパンダが稼働していないことを示す「Fault」、SASエクスパンダの状態が不明であることを示す「Unknown」のいずれかが記述される。
また、CM300bの他方CM制御部333bは、CM300aの電源状態がP_State2である場合に、管理端末130から、CM300aのメンテナンス作業の開始通知を受け付けたとき、CM300aの取り外しを許可するか否かを判定する機能を備える。
次に、一方のCMの電源状態がP_State2であるときのDE210,220へのアクセス経路について説明する。ここでは例として、CM300bの電源状態がP_State2であるものとする。
図18は、CMに接続されたDE内のSASエクスパンダの動作が停止した場合の動作を説明する第1の図である。
図17に示した構成によれば、CM300aからDE210内のHDD213へのアクセス経路は、SASエクスパンダ307a,211を経由する経路と、SASエクスパンダ307b,212を経由する経路とが存在する。そして、CM300bの電源状態がP_State3からP_State2に遷移した場合でも、これらの2系統のアクセス経路は使用可能な状態のままになる。また、CM300bの電源状態がP_State2に遷移したときには、CM300aからDE220内のHDD223へのアクセス経路も、SASエクスパンダ307a,211,221を経由する経路と、SASエクスパンダ307b,212,222を経由する経路の両方が、使用可能な状態のままになる。
ここで、図18に示すように、CM300aの配下のSASエクスパンダ(すなわち、CM300aのSASエクスパンダ307aに直列に接続されたSASエクスパンダ)の1つであるSASエクスパンダ211の動作が停止した場合を考える。この場合、CM300aは、SASエクスパンダ307a,211を経由してDE210内のHDD213にアクセスすることはできないが、SASエクスパンダ307b,212を経由する残り1系統のアクセス経路を利用して、DE210内のHDD213にアクセスすることができる。また、CM300aは、SASエクスパンダ307a,211,221を経由してDE220内のHDD223にアクセスすることはできないが、SASエクスパンダ307b,212,222を経由する残り1系統のアクセス経路を利用して、DE220内のHDD223にアクセスすることができる。
しかしながら、図18の状態において、CM300bをストレージシステム100の筐体から取り外してしまうと、CM300aは、DE210内のHDD213およびDE220内のHDD223のそれぞれに対して、アクセスすることができなくなる。このため、図18の状態からCM300bを取り外すことは好ましくない。
なお、図18のような状態では、CM300aのIOアクセス制御部331aは、DE220のSASエクスパンダ221と通信できないことから、SASエクスパンダ221が稼働しているか否かを判断できない。このため、IOアクセス制御部331aは、SASエクスパンダ221に対応するDE内エクスパンダ状態情報391aを「Unknown」にする。
図19は、CMに接続されたDE内のSASエクスパンダの動作が停止した場合の動作を説明する第2の図である。
図19は、CM300bの電源状態がP_State2であるときに、CM300aの配下のSASエクスパンダの1つであるSASエクスパンダ221の動作が停止した場合の状態を示している。この状態では、CM300aは、SASエクスパンダ307a,211,221を経由してDE220内のHDD223にアクセスすることはできないが、SASエクスパンダ307b,212,222を経由する残り1系統のアクセス経路を利用して、DE220内のHDD223にアクセスすることができる。
しかしながら、図19の状態において、CM300bをストレージシステム100の筐体から取り外してしまうと、CM300aは、DE220内のHDD223に対してアクセスすることができなくなる。このため、図19の状態からCM300bを取り外すことは好ましくない。
本実施の形態の他方CM制御部333aは、図18や図19の状態からCM300bのメンテナンス作業の開始要求を受け付けたとき、CM300bの取り外しを許可しないことを作業者に通知する処理を行う。また、他方CM制御部333aは、例えば、図18の状態からCM300bのメンテナンス作業の開始要求を受け付けたとき、CM300bを取り外す前にDE210のSASエクスパンダ211を交換するように、作業者に促す処理を行ってもよい。また、他方CM制御部333aは、例えば、図19の状態からCM300bのメンテナンス作業の開始要求を受け付けたとき、CM300bを取り外す前にDE220のSASエクスパンダ221を交換するように、作業者に促す処理を行ってもよい。
図20は、他方CM制御部によるCM取り外し可否の判定処理を示すフローチャートである。この図20は、CM300bの電源状態がP_State2である場合の処理を示す。
[ステップS141]CM300aの他方CM制御部333aは、ホスト装置120から、CM300bをストレージシステム100の筐体から取り外すメンテナンス作業を開始することの通知を受けると、ステップS142からの処理を開始する。なお、このステップS141での処理内容は、図12のステップS81での処理内容と同じである。
[ステップS142]他方CM制御部333aは、DE210,220が備えるSASエクスパンダのうち、CM300aの配下の(すなわち、CM300aのSASエクスパンダ307aに直列に接続された)すべてのSASエクスパンダ211,221に対応するDE内エクスパンダ状態情報391aを参照する。
[ステップS143]他方CM制御部333aは、ステップS142で参照したすべてのDE内エクスパンダ状態情報391aが「Normal」か否かを判定する。他方CM制御部333aは、ステップS142で参照したすべてのDE内エクスパンダ状態情報391aが「Normal」であり、各状態情報に対応するSASエクスパンダ211,221がいずれも稼働状態であると判定した場合(S143:Yes)には、ステップS147の処理を実行する。一方、他方CM制御部333aは、ステップS142で参照したDE内エクスパンダ状態情報391aのうち1つでも「Fault」または「Unknown」のものがあった場合(S143:No)には、ステップS144の処理を実行する。
[ステップS144]他方CM制御部333aは、ステップS142で参照したDE内エクスパンダ状態情報391aのうち「Fault」または「Unknown」である状態情報に対応するSASエクスパンダ(すなわち、異常が生じている可能性のあるSASエクスパンダ)を認識する。他方CM制御部333aは、認識したSASエクスパンダと同一のDEに設けられた、CM300bの配下の(すなわち、CM300bのSASエクスパンダ307bに直列に接続された)SASエクスパンダに対応するDE内エクスパンダ状態情報391aを参照する。
例えば、ステップS143においてSASエクスパンダ211に対応するDE内エクスパンダ状態情報391aが「Fault」または「Unknown」であった場合、他方CM制御部333aはステップS144において、SASエクスパンダ211と同一のDE210に設けられたSASエクスパンダ212に対応するDE内エクスパンダ状態情報391aを参照する。
[ステップS145]他方CM制御部333aは、ステップS144で参照したDE内エクスパンダ状態情報391aが「Normal」か否かを判定する。他方CM制御部333aは、ステップS144で参照したDE内エクスパンダ状態情報391aが「Normal」であり、参照した状態情報に対応するSASエクスパンダが稼働状態であると判定した場合(S145:Yes)には、ステップS146の処理を実行する。一方、他方CM制御部333aは、ステップS144で参照したDE内エクスパンダ状態情報391aが「Fault」または「Unknown」であり、参照した状態情報に対応するSASエクスパンダに異常が発生した可能性がある場合(S145:No)には、ステップS147の処理を実行する。
[ステップS146]他方CM制御部333aは、ホスト装置120に対して、CM300bの取り外しを許可しないことを通知する。ホスト装置120は、例えば、自身に接続されたモニタに、CM300bの取り外しが許可されなかったことを表示する。
また、他方CM制御部333aは、CM300bを取り外す前に、ステップS143においてDE内エクスパンダ状態情報391aが「Fault」または「Unknown」であったSASエクスパンダを交換するように、ホスト装置120のモニタを通じて作業者に通知してもよい。
このステップS146の処理は、例えば、図18や図19の状態において実行されるものである。ステップS146の処理が実行されることにより、CM300bを取り外してしまったためにDE210内のHDD213またはDE220内のHDD223に対するアクセス経路がなくなってしまうという事態が回避される。
また、他方CM制御部333aは、例えば、図18の状態からCM300bのメンテナンス作業の開始要求を受け付けた場合には、ステップS146において、CM300bを取り外す前にDE210のSASエクスパンダ211を交換するように、作業者に促す処理を行う。DE210のSASエクスパンダ211を交換することで、CM300aからSASエクスパンダ307a,211を経由したアクセス経路が復旧する。従って、この後にCM300bを取り外すことで、DE210内のHDD213やDE220内のHDD223に対するアクセス経路が断絶することなく、CM300bを交換することができる。
[ステップS147]他方CM制御部333aは、ホスト装置120に対して、CM300bの取り外しを許可する通知を行う。ホスト装置120は、例えば、自身に接続されたモニタに、CM300の取り外しが許可されたことを表示する。
このステップS147の処理は、例えば、次の図21や図22に示す場合のように、CM300bを取り外したとしてもDE210内のHDD213およびDE220内のHDD223のどちらに対するアクセス経路も確保される場合に実行されるものである。
図21は、CMに接続されたDE内のSASエクスパンダの動作が停止した場合の動作を説明する第3の図である。
図21では、DE220内のSASエクスパンダ221,222の動作が停止した場合を示す。この状態において、CM300bのメンテナンス作業が要求されると、他方CM制御部333aは、図20のステップS143において、CM300a配下のSASエクスパンダ221において異常が発生した可能性があると判定する。しかしながら、他方CM制御部333aは、図20のステップS145において、SASエクスパンダ221と同一のDE220に設けられたSASエクスパンダ222でも、異常が発生した可能性があると判定する。
ステップS143,S145の各判定結果から、図21の状態では、DE220内のSASエクスパンダ221,222の両方の動作が停止していることがわかる。この状態では、CM300bを取り外すか否かに関係なく、CM300aからDE220のHDD223へのアクセスは不可能であることから、他方CM制御部333aは、ホスト装置120に対して、CM300bの取り外しを許可する通知を行う。
図22は、CMに接続されたDE内のSASエクスパンダの動作が停止した場合の動作を説明する第4の図である。
図22では、DE210内のSASエクスパンダ212の動作と、DE220内のSASエクスパンダ221の動作とが停止した場合を示す。なお、この図22の状態では、CM300aのIOアクセス制御部331aは、DE220のSASエクスパンダ222と通信できないことから、SASエクスパンダ222が稼働しているか否かを判断できない。このため、IOアクセス制御部331aは、SASエクスパンダ222に対応するDE内エクスパンダ状態情報391aを「Unknown」にする。
図22の状態において、CM300bのメンテナンス作業が要求されると、他方CM制御部333aは、図20のステップS143において、CM300a配下のSASエクスパンダ221において異常が発生した可能性があると判定する。しかしながら、他方CM制御部333aは、図20のステップS145において、SASエクスパンダ221と同一のDE220に設けられたSASエクスパンダ222との通信が不可能であることを判定する。
ステップS143,S145の各判定結果から、図22の状態では、CM300aはDE220内のSASエクスパンダ221,222のどちらとも通信できない状態であることがわかる。一方、CM300aは、CM300bが取り外されたとしても、SASエクスパンダ211を通じてDE210内のHDD213にアクセスすることは可能である。従って、他方CM制御部333aは、ホスト装置120に対して、CM300bの取り外しを許可する通知を行う。
なお、以上の図18〜図22では、例としてCM300aの他方CM制御部333aの処理について説明したが、CM300bの他方CM制御部333bも同様の処理を実行することができる。
以上の各実施の形態に関し、さらに以下の付記を開示する。
(付記1) データを記憶する記憶装置と、前記記憶装置へのアクセス処理を制御する複数の制御部とを備えたストレージシステムにおいて、
前記各制御部は、
前記記憶装置に対するアクセスを中継する中継部と、
自身が属する制御部内の中継部または他の制御部内の中継部を通じて前記記憶装置にアクセスするアクセス制御部と、
他の制御部での異常発生を検知したとき、異常発生を検知した前記他の制御部内の中継部が使用可能か否かを判断し、前記他の制御部内の中継部が使用可能である場合には、自身が属する制御部内のアクセス制御部から前記他の制御部内の中継部を通じて前記記憶装置にアクセスすることが可能な状態のまま、前記他の制御部内の少なくともアクセス制御部の動作が停止した部分動作状態に、前記他の制御部を遷移させる動作状態制御部と、
を有することを特徴とするストレージシステム。
(付記2) 前記アクセス制御部は、他の制御部が、前記他の制御部内のアクセス制御部および中継部がともに正常に動作する正常動作状態であるときより、前記部分動作状態であるときに、自身が属する制御部内の中継部および前記他の制御部内の中継部のうち、前記他の制御部内の中継部を経由して前記記憶装置にアクセスする頻度を低くすることを特徴とする付記1記載のストレージシステム。
(付記3) 前記各制御部は、前記アクセス制御部が前記記憶装置にアクセスする際に経由する中継部ごとに異常検出点数を記憶した点数記憶部を有し、
前記アクセス制御部は、前記記憶装置へのアクセスの際にアクセス処理の異常を検出するたびに、経由した中継部に対応する前記異常検出点数を増加させ、前記異常検出点数が大きい中継部ほど、前記記憶装置へアクセスする際にアクセス経路として使用する頻度を低くする、
ことを特徴とする付記2記載のストレージシステム。
(付記4) 前記アクセス制御部は、他の制御部が、前記他の制御部内のアクセス制御部および中継部がともに正常に動作する正常動作状態であるときより、前記部分動作状態であるときに、前記他の制御部内の中継部を経由して前記記憶装置にアクセスする頻度を低くすることを特徴とする付記3記載のストレージシステム。
(付記5) 前記アクセス制御部は、前記記憶装置に対するアクセス処理の異常を検出したとき、アクセス制御部および中継部がともに正常に動作する正常動作状態である制御部内の中継部に対応する前記異常検出点数の増加量より、前記部分動作状態である制御部内の中継部に対応する前記異常検出点数の増加量を大きくすることを特徴とする付記3記載のストレージシステム。
(付記6) 前記アクセス制御部は、前記正常動作状態である制御部内の中継部を通じた前記記憶装置へのアクセスに失敗したとき、前記部分動作状態である制御部内の中継部を通じて前記記憶装置にアクセスすることを特徴とする付記2記載のストレージシステム。
(付記7) 前記アクセス制御部は、自身が属する制御部内の中継部および他の制御部内の中継部のうちどの中継部を通じて前記記憶装置にアクセスするかを、各中継部を通じて過去に前記記憶装置にアクセスした際のアクセス処理の異常検出状態に応じて選択することを特徴とする付記1または2記載のストレージシステム。
(付記8) 前記アクセス制御部は、他の制御部内の中継部を通じて前記記憶装置にアクセスした際のアクセス処理の異常検出状態に応じて、前記他の制御部内の中継部を通じた前記記憶装置へのアクセスを禁止し、前記他の制御部が、前記他の制御部内のアクセス制御部および中継部がともに正常に動作する正常動作状態である場合より、前記他の制御部が前記部分動作状態である場合の方が、前記他の制御部内の中継部を通じた前記記憶装置へのアクセスを禁止するように判定する判定基準を厳しくすることを特徴とする付記1または2記載のストレージシステム。
(付記9) 前記アクセス制御部は、他の制御部内の中継部を通じた前記記憶装置へのアクセスの際にアクセス処理の異常を検出するたびに、記憶媒体に記憶した異常検出点数を増加させ、前記異常検出点数が所定の判定基準値に達したとき、前記他の制御部内の中継部を通じた前記記憶装置へのアクセスを禁止し、前記他の制御部が前記正常動作状態である場合より、前記他の制御部が前記部分動作状態である場合の方が、前記記憶装置へのアクセス処理の異常を検出したときの前記異常検出点数の増加量を大きくすることを特徴とする付記8記載のストレージシステム。
(付記10) 前記記憶装置は、
データ記憶部と、
各制御部内の中継部に1対1で接続して、接続した中継部から前記データ記憶部へのアクセスを中継する複数の記憶装置内中継部と、
を有し、
前記各制御部は、他方の制御部が前記部分動作状態である場合に、前記他方の制御部をストレージシステムの筐体から取り外す要求を受け付けたとき、自身が備える中継部に接続した前記記憶装置内中継部が稼働しておらず、なおかつ、前記記憶装置内の他方の前記記憶装置内中継部が稼働している場合に、前記他方の制御部の取り外しを許可しない判定を行う判定部をさらに有する、
ことを特徴とする付記1記載のストレージシステム。
(付記11) 前記各制御部は、自身が前記部分動作状態である場合と、自身が前記部分動作状態以外の異常発生状態である場合とを区別して表示する状態表示部をさらに有することを特徴とする付記1記載のストレージシステム。
(付記12) 前記各制御部は、前記部分動作状態に遷移すると、自身が備えるアクセス制御部への電源供給を停止することを特徴とする付記1記載のストレージシステム。
(付記13) 前記動作状態制御部は、他の制御部での異常発生を検知したとき、異常発生を検知した前記他の制御部内の中継部が使用可能か否かを判断し、前記他の制御部内の中継部が使用不可能である場合には、前記他の制御部を、前記他の制御部内の少なくともアクセス制御部および中継部の各動作が停止した運用不可状態に遷移させることを特徴とする付記1記載のストレージシステム。
(付記14) データを記憶する記憶装置へのアクセス処理を制御する制御装置において、
前記記憶装置に対するアクセスを中継する中継部と、
自身が属する制御装置内の中継部または他の制御装置内の中継部を通じて前記記憶装置にアクセスするアクセス制御部と、
他の制御装置での異常発生を検知したとき、異常発生を検知した前記他の制御装置内の中継部が使用可能か否かを判断し、前記他の制御装置内の中継部が使用可能である場合には、自身が属する制御装置内のアクセス制御部から前記他の制御装置内の中継部を通じて前記記憶装置にアクセスすることが可能な状態のまま、前記他の制御装置内の少なくともアクセス制御部の動作が停止した部分動作状態に、前記他の制御装置を遷移させる動作状態制御部と、
を有することを特徴とする制御装置。
(付記15) データを記憶する記憶装置と、前記記憶装置へのアクセス処理を制御する複数の制御部とを備えたストレージシステムにおける制御方法であって、
複数の制御部のうち一の制御部内のアクセス制御部が、前記一の制御部内の中継部または他の制御部内の中継部を通じて、前記記憶装置にアクセスし、
前記一の制御部が備える動作状態制御部が、他の制御部での異常発生を検知したとき、異常発生を検知した前記他の制御部内の中継部が使用可能か否かを判断し、前記他の制御部内の中継部が使用可能である場合には、前記一の制御部内のアクセス制御部から前記他の制御部内の中継部を通じて前記記憶装置にアクセスすることが可能な状態のまま、少なくとも前記他の制御部内のアクセス制御部の動作が停止した部分動作状態に、前記他の制御部を遷移させる、
ことを特徴とする制御方法。