データを記憶する記憶装置へのデータの入出力を制御する制御装置を有するストレージシステムにおいて、前記制御装置は、自装置における処理を分散して実行する第1の処理部および第2の処理部と、前記記憶装置に記憶されるデータの入出力に関わるコマンドを外部の装置から受け付ける複数のインタフェース部とを有し、前記第1の処理部は、前記複数のインタフェース部のうちいずれかのインタフェース部の異常に応じて当該インタフェース部のダンプデータの吸い上げ処理を実行しているときに、別のインタフェース部の異常を検知すると、異常を検知した別のインタフェース部のダンプデータの吸い上げを前記第2の処理部に依頼することを特徴とするストレージシステム。前記第1の処理部は、さらに別のインタフェース部の異常を検知すると、さらに異常を検知したインタフェース部のダンプデータの吸い上げを外部の制御装置の処理部に依頼することを特徴とする請求項1に記載のストレージシステム。前記第1の処理部は、ダンプデータの吸い上げを依頼する外部の処理部の候補が複数存在する場合、さらに異常を検知したインタフェース部のデータの吸い上げ時間が所定の規定時間より短く、且つ前記入出力に関わるコマンドの数から換算される処理時間が最も短い処理部に決定し、さらに異常を検知したインタフェース部のダンプデータの吸い上げを、決定した処理部に依頼することを特徴とする請求項2に記載のストレージシステム。データを記憶する記憶装置へのデータの入出力を制御する制御装置において、自装置における処理を分散して実行する第1の処理部および第2の処理部と、前記記憶装置に記憶されるデータの入出力に関わるコマンドを外部の装置から受け付ける複数のインタフェース部とを有し、前記第1の処理部は、前記複数のインタフェース部のうちいずれかのインタフェース部の異常に応じて当該インタフェース部のダンプデータの吸い上げ処理を実行しているときに、別のインタフェース部の異常を検知すると、異常を検知した別のインタフェース部のダンプデータの吸い上げを前記第2の処理部に依頼することを特徴とする制御装置。データを記憶する記憶装置へのデータの入出力を制御する制御装置であって、処理を分散して実行する第1の処理部および第2の処理部と、前記記憶装置に記憶されるデータの入出力に関わるコマンドを外部の装置から受け付ける複数のインタフェース部とを備える制御装置を有するストレージシステムの制御方法であって、前記第1の処理部は、前記複数のインタフェース部のうちいずれかのインタフェース部の異常を検知すると、異常を検知したインタフェース部のダンプデータの吸い上げを実行し、前記第1の処理部による吸い上げを実行する処理の実行中に、別のインタフェース部の異常を検知すると、異常を検知した別のインタフェース部のダンプデータの吸い上げを前記第2の処理部に依頼する処理を含むことを特徴とするストレージシステムの制御方法。しかしながら、1つのCM内で同時期に複数のCAに障害が発生した場合、障害が発生した全CAのダンプデータを規定時間に吸い上げることができないという問題がある。ここで、同時期とは、2つのCAのダンプデータの吸い上げ期間が重なるような障害の発生時期をいう。例えば、1つのCM内で同時期に2つのCAに障害が発生したとする。かかる場合、CM内にメインとサブの2つのCPUが存在する場合であっても、常時、メインのCPUが、障害の発生した2つのCAのダンプデータを順番に吸い上げることとなるので、規定時間に吸い上げることができない場合がある。1つの側面では、本発明は、1つの制御装置内で同時期に複数のインタフェースに障害が発生した場合であっても、障害が発生した複数のインタフェースのダンプデータを規定時間に吸い上げることができるストレージシステム等を提供することを目的とする。本願の開示するストレージシステムでは、一つの態様において、データを記憶する記憶装置へのデータの入出力を制御する制御装置を有するストレージシステムにおいて、前記制御装置が、自装置における処理を分散して実行する第1の処理部および第2の処理部と前記記憶装置に記憶されるデータの入出力に関わるコマンドを外部の装置から受け付ける複数のインタフェース部とを有する。そして、前記第1の処理部は、前記複数のインタフェース部のうちいずれかのインタフェース部の異常に応じて当該インタフェース部のダンプデータの吸い上げ処理を実行しているときに、別のインタフェース部の異常を検知すると、異常を検知した別のインタフェース部のダンプデータの吸い上げを前記第2の処理部に依頼する。本願の開示するストレージシステムの一つの態様によれば、1つの制御装置内で同時期に複数のインタフェースに障害が発生した場合であっても、障害が発生した複数のインタフェースのダンプデータを規定時間に吸い上げることができるという効果を奏する。以下に、本願の開示するストレージシステム、制御装置およびストレージシステムの制御方法の実施例を図面に基づいて詳細に説明する。なお、本実施例によりこの発明が限定されるものではない。[実施例1に係るストレージシステムの構成]図1は、実施例1に係るストレージシステムの構成を示す機能ブロック図である。図1に示すように、ストレージシステム2は、上位装置であるホストコンピュータ1と接続する。そして、ストレージシステム2は、コントローラモジュールCM3と複数のディスク装置以降、ディスクという。4とを有する。コントローラモジュールCM3は、ディスク4へのデータの入出力を制御する装置である。さらに、コントローラモジュールCM3は、複数のチャンネルアダプタCA31とI/OコントローラIOC32とBUD33とメイン制御部34とサブ制御部35とを有する。ディスク4は、データを記憶する記憶装置であり、例えばHDDHardDiskDriveやSSDSolidStateDrive等に対応する。チャンネルアダプタ31は、ホストコンピュータ1と通信接続する通信インタフェースである。例えば、チャンネルアダプタ31は、ディスク4に記憶されるデータの入出力に関わるコマンド入出力コマンドをホストコンピュータ1から受け付ける。チャンネルアダプタ31は、コントローラモジュール3内に複数存在し、ここでは、4台存在する場合を示している。これらチャンネルアダプタ31は、ダンプ機能を有する。すなわち、チャンネルアダプタ31に障害が発生して切り離しが行われる場合であっても、チャンネルアダプタ31に保持されたダンプデータが吸い上げられ、ストレージシステム2内のBUD33に格納される。BUD33に格納されたダンプデータは、後に、障害が発生したチャンネルアダプタ31の障害の解析のために用いられる。なお、障害が発生して切り離される処理を、デグレード処理という。I/OコントローラIOC32は、ディスク4と通信接続する通信インタフェースである。BUDBootupandUtilityDevice33は、チャンネルアダプタ31から吸い上げられたダンプデータを記憶する記憶装置である。メイン制御部34は、自己のコントローラモジュール3における処理を分散して実行する場合のメインの制御部である。サブ制御部35は、自己のコントローラモジュール3における処理を分散して実行する場合のサブの制御部である。なお、メイン制御部34およびサブ制御部35は、ASICApplicationSpecificIntegratedCircuitやFPGAFieldProgrammableGateArray等の集積回路、または、CPUCentralProcessingUnitやMPUMicroProcessingUnit等の電子回路である。また、メイン制御部34およびサブ制御部35に含まれる各機能部は、例えば、コントローラモジュール3を制御するCFWControllerModuleFirmwareによってそれぞれ実現される。メイン制御部34は、複数のチャンネルアダプタ31のうち1個のチャンネルアダプタ31の異常に応じて当該チャンネルアダプタ31のダンプデータの吸い上げ処理を実行する。また、メイン制御部34は、1個のチャンネルアダプタ31のダンプデータの吸い上げ処理を実行中に、別のチャンネルアダプタ31の異常を検知する。そして、メイン制御部34は、異常を検知した別のチャンネルアダプタ31のダンプデータの吸い上げをサブ制御部35に依頼する。吸い上げ処理の実行は、例えば、吸い上げがされるチャンネルアダプタ31のダンプデータをメモリ図示せず上に取得し、取得したダンプデータを圧縮し、BUD33に格納することにより行われる。このようにして、ストレージシステム2では、メイン制御部34が、1個のチャンネルアダプタ31のダンプデータの吸い上げを実行中に、別のチャンネルアダプタ31の異常を検知する場合がある。かかる場合に、メイン制御部34は、異常を検知したチャンネルアダプタ31のダンプデータの吸い上げをサブ制御部35に依頼する。このため、ストレージシステム2は、異常が発生した2個のチャンネルアダプタ31のダンプデータの吸い上げを並行して実行できるので、双方のチャンネルアダプタ31のダンプデータを規定時間に吸い上げることが可能になる。ところで、実施例1に係るストレージシステム2では、同じコントローラモジュールCM3内でさらに別のチャンネルアダプタCA31で異常が発生する場合がある。すなわち、1個のCM3内で先行して2個のCA31で異常が発生し、さらに別のCA31で異常が発生する場合がある。かかる場合に、先行して異常が発生したCA31のダンプデータの吸い上げを、メイン制御部34およびサブ制御部35がそれぞれ実行していると、さらに異常が発生したCA31のダンプデータの吸い上げを規定時間内に実行できない場合がある。ここで、メイン制御部34またはサブ制御部35は、さらに異常が発生したCA31のダンプデータの吸い上げ処理を、先行して実行中の当該処理と多重して実行することも可能である。しかしながら、CA31のダンプデータの吸い上げ処理には厳しい時間的制約が存在する場合がある。これは、異常が発生したCA31に対して早期に動作の停止要求を行うためである。そこで、実施例2では、さらに別のCA31で異常が発生した場合、さらに異常が発生したCA31のダンプデータの吸い上げをCM3外部の制御部に依頼する場合について説明する。[実施例2に係るストレージシステムの構成]図2は、実施例2に係るストレージシステムの構成を示す機能ブロック図である。なお、図1に示すストレージシステム2と同一の構成については同一符号を示すことで、その重複する構成および動作の説明については省略する。実施例1と実施例2とが異なるところは、コントローラモジュール3A1がコントローラモジュール3A2と二重化されていることである。また、実施例1と実施例2とが異なるところは、コントローラモジュール3A1、3A2にCM間通信ドライバ36を追加した点にある。また、実施例1と実施例2とが異なるところは、フロントエンドルータ5、バックエンドルータ6およびドライブエンクロージャー7を追加した点にある。フロントエンドルータFRT5は、コントローラモジュール3A間を接続する。バックエンドルータBRT6は、コンロトーラモジュール3Aおよびディスク4間を接続する。ドライブエンクロージャーDE7は、ディスク4を搭載する筐体である。CM間通信ドライバ36は、フロントエンドルータ5を介して他のコントローラモジュール3Aと通信接続する通信インタフェースである。メイン制御部34Aは、複数のチャンネルアダプタ31のうち1個のチャンネルアダプタ31の異常に応じて当該チャンネルアダプタ31のダンプデータの吸い上げ処理を実行する。また、メイン制御部34Aは、1個のチャンネルアダプタ31のダンプデータの吸い上げ処理を実行中に、別のチャンネルアダプタ31の異常を検知する。そして、メイン制御部34Aは、異常を検知した別のチャンネルアダプタ31のダンプデータの吸い上げをサブ制御部35Aに依頼する。ここで、メイン制御部34Aは、さらに別のチャンネルアダプタ31の異常を検知すると、さらに異常を検知したチャンネルアダプタ31のダンプデータの吸い上げを外部のコントローラモジュール3Aの制御部に依頼する。例えば、メイン制御部34Aは、チャンネルアダプタ31-1の異常に応じてチャンネルアダプタ31-1のダンプデータの吸い上げ処理を実行している。このとき、メイン制御部34Aは、別のチャンネルアダプタ31-2の異常を検知すると、異常を検知したチャンネルアダプタ31-2のダンプデータの吸い上げをサブ制御部35Aに依頼する。メイン制御部34Aおよびサブ制御部35Aは、それぞれチャンネルアダプタ31-1、2のダンプデータの吸い上げ処理を実行している。ここで、メイン制御部34Aは、さらに別のチャンネルアダプタ31-3の異常を検知すると、異常を検知したチャンネルアダプタ31-3のダンプデータの吸い上げを、CM間通信ドライバ36を介してコントローラモジュール3A2の制御部に依頼する。コントローラモジュール3A2のメイン制御部34Aまたはサブ制御部35Aは、異常が検知されたチャンネルアダプタ31-3のダンプデータの吸い上げ処理を実行する。吸い上げ処理の実行は、以下のように行われる。例えば、コントローラモジュール3A1のメイン制御部34Aは、チャンネルアダプタ31-3のダンプデータをメモリ図示せず上に取得する。そして、メイン制御部34Aは、取得したダンプデータを、CM間通信ドライバ36を介してコントローラモジュール3A2の吸い上げを依頼した制御部に送信する。そして、吸い上げを依頼された制御部は、送信されたダンプデータを取得し、取得したダンプデータを圧縮し、圧縮したデータをコントローラモジュール3A2のBUD33に格納する。なお、コントローラモジュール3A2のメイン制御部34Aまたはサブ制御部35Aのどちらに依頼するのかが問題となる。例えば、メイン制御部34Aは、CM間通信を介して、コントローラモジュール3A2の制御部のうち処理負荷の小さい制御部を、吸い上げを依頼する制御部として決定すれば良い。そして、メイン制御部34Aは、CM間通信を介して、決定した制御部に吸い上げを依頼する。このようにして、ストレージシステム2Aでは、メイン制御部34Aおよびサブ制御部35Aでそれぞれチャンネルアダプタ31のダンプデータの吸い上げ処理を実行中に、さらに別のチャンネルアダプタ31の異常を検知する場合がある。かかる場合に、ストレージシステム2Aは、さらに異常を検知したチャンネルアダプタ31のダンプデータの吸い上げを外部のコントローラモジュール3A2の制御部に依頼する。このため、ストレージシステム2は、異常が発生した3個のチャンネルアダプタ31のダンプデータの吸い上げを並行して実行できるので、異常が発生した全てのチャンネルアダプタ31のダンプデータを規定時間に吸い上げることが可能になる。ところで、メイン制御部34Aは、外部に依頼するコントローラモジュールCM3Aの制御部が複数存在する場合がある。かかる場合に、メイン制御部34Aは、さらに異常が発生したチャンネルアダプタCA31のダンプデータの吸い上げをCM3A外部の最適な制御部に依頼するようにすれば良い。そこで、実施例3では、さらに別のCA31で異常が発生した場合、さらに異常が発生したCA31のダンプデータの吸い上げをCM3A外部の最適な制御部に依頼する場合について説明する。ここで、最適な制御部とは、例えば、処理中の入出力処理の処理時間が最短となる制御部を一例とする。[実施例3に係るストレージシステムの構成]図3は、実施例3に係るストレージシステムの構成を示す機能ブロック図である。なお、図1に示すストレージシステム2と同一の構成については同一符号を示すことで、その重複する構成および動作の説明については省略する。実施例1と実施例3とが異なるところは、コントローラモジュール3B0がn-1nは3以上の整数個のコントローラモジュール3Bと冗長化されていることである。ここで、例えば、コントローラモジュール3B0をマスタのCMとし、その他のコントローラモジュール3B1~3Bn-1をスレーブのCMとする。さらに、コントローラモジュール3B1において、2個のチャンネルアダプタ31で異常が発生した後、さらに別のチャンネルアダプタ31で異常が発生した場合について説明する。また、実施例1と実施例3とが異なるところは、コントローラモジュール3B0~3Bn-1にそれぞれCM間通信ドライバ36を追加した点にある。また、実施例1と実施例3とが異なるところは、フロントエンドルータ5、バックエンドルータ6およびドライブエンクロージャー7を追加した点にある。また、実施例1と実施例3とが異なるところは、各コントローラモジュール3Bに記憶部37を追加し、記憶部37にCPU使用率情報372およびコマンド数情報373を追加した点にある。さらに、マスタCM3B0の記憶部37に吸い上げ制御テーブル371を追加した点にある。また、実施例1と実施例3とが異なるところは、各コントローラモジュール3Bのメイン制御部34Bに情報取得部53を追加した点にある。さらに、マスタCM3B0のメイン制御部34Bにさらに吸い上げ先決定部52を追加し、異常が発生するとしたCM3B1のメイン制御部34Bに吸い上げ処理部51を追加する点にある。なお、異常が発生するCMは、CM3B1に限られないので、全てのCMのメイン制御部34Bに吸い上げ先決定部52を追加することが望ましいが、説明の便宜上、異常が発生するCM3B1のメイン制御部34Bに吸い上げ先決定部52を追加した。また、フロントエンドルータ5、バックエンドルータ6およびドライブエンクロージャー7については、図2のストレージシステム2Aにおいて説明したので、これらの説明を省略する。また、実施例3では、メイン制御部34Bおよびサブ制御部35Aは、CPUに限定されるものではないが、説明の便宜上、メイン制御部34BをメインのCPU、サブ制御部35AをサブのCPUであるとして説明する。また、実施例3では、コントローラモジュールをCMと略記し、チャンネルアダプタをCAと略記する。記憶部37は、例えば、RAMRandomAccessMemory、フラッシュメモリFlashMemory等の半導体メモリ素子等の記憶装置に対応する。吸い上げ制御テーブル371は、制御部毎に、吸い上げ処理にかかる予測時間や処理中の入出力コマンドの数から換算される処理時間を対応付けて記憶する。かかる吸い上げ制御テーブル371は、例えば吸い上げ先決定部52により作成され、吸い上げ先を決定する場合に用いられる。CPU使用率情報372は、自CM内の各制御部の使用率を含む情報を管理する。コマンド数情報373は、自CM内の各制御部の処理中の入出力コマンドの数を含む情報を管理する。なお、吸い上げ制御テーブル371の詳細は、後述する。吸い上げ処理部51は、CA31の異常に応じて当該CA31のダンプデータの吸い上げ処理を実行する。また、吸い上げ処理部51は、1個のCA31のダンプデータの吸い上げ処理を実行中に、別のCA31の異常を検知すると、異常を検知した別のCA31のダンプデータの吸い上げをサブ制御部35Aに依頼する。ここで、吸い上げ処理部51は、さらに別のCA31の異常を検知すると、さらに異常を検知したCA31のダンプデータの吸い上げ先をマスタCM3B0に決定させる。例えば、吸い上げ処理部51は、マスタCM3B0に対し、CM間通信ドライバ36を介して、吸い上げ先を取得したい旨の要求を送信する。このとき、吸い上げ処理部51は、ダンプデータのサイズをマスタCM3B0に転送する。そして、吸い上げ処理部51は、マスタCM3B0に決定させた吸い上げ先に対して、異常を検知したCA31のダンプデータの吸い上げを依頼する。吸い上げ先決定部52は、ダンプデータの吸い上げを外部に依頼する吸い上げ先の候補が複数存在する場合、異常が検知されたCA31のダンプデータの吸い上げ時間が所定の規定時間より短い制御部に吸い上げ先の候補を絞る。さらに、吸い上げ先決定部52は、絞った吸い上げ先の候補のうち、処理中の入出力コマンドの数から換算される処理時間が最も短い制御部に吸い上げ先を決定する。すなわち、吸い上げ先決定部52は、所定の規定時間内に確実にダンプデータが吸い上げ可能か否かを予測し、吸い上げ可能と予測した吸い上げ先の候補のうち、入出力処理時間が最短の制御部を吸い上げ先として決定する。吸い上げ先決定部52が所定の規定時間内に確実にダンプデータが吸い上げ可能か否かを予測する処理について説明する。例えば、吸い上げ先決定部52は、CAのダンプデータのサイズから各制御部がダンプデータの吸い上げ処理にかかる予測時間CAダンプ吸い上げ時間を算出し、算出した予測時間を吸い上げ制御テーブル371に格納する。吸い上げ先決定部52は、CAダンプ吸い上げ時間を、以下の式1に基づいて算出する。CAダンプ吸い上げ時間={CM/CA間通信時間CM/CM間通信時間データ圧縮時間BUD格納時間}×データサイズ式1ここで、データサイズとは、異常が発生したCAのダンプデータのデータサイズを示す。CM/CA間通信時間とは、異常が発生したCAおよび当該CAが存在するCM間で1メガバイトMB:MBytesのデータが通信される場合の通信時間を示す。CM/CM間通信時間とは、異常が発生したCAが存在するCMから吸い上げ先のCMへ1MBのデータを通信する場合の通信時間を示し、吸い上げ先が異常の発生したCAを有するCMの外部である場合に使用される。データ圧縮時間とは、1MBのデータを圧縮する場合にかかる時間を示す。BUD格納時間とは、1MBの圧縮データを格納する場合に要する時間を示す。さらに、吸い上げ先決定部52は、各制御部の使用率各CPUの使用率を各CMのCPU使用率情報372から取得する。そして、吸い上げ先決定部52は、算出した各制御部のCAダンプ吸い上げ時間を用いて、各制御部の使用率各CPUの使用率に対応したダンプデータの吸い上げ処理に要する予測時間CAダンプ吸い上げ実行時間を算出する。吸い上げ先決定部52は、CAダンプ吸い上げ実行時間を、以下の式2に基づいて算出する。CAダンプ吸い上げ実行時間=CAダンプ吸い上げ時間÷{1-CPUの使用率}式2そして、吸い上げ先決定部52は、算出した各制御部のCAダンプ吸い上げ実行時間を吸い上げ制御テーブル371に格納する。そして、吸い上げ先決定部52は、吸い上げ制御テーブル371に記憶した各制御部のCAダンプ吸い上げ実行時間と吸い上げに許される規定時間とを比較し、規定時間内に吸い上げが完了可能な吸い上げ先の候補を絞る。次に、吸い上げ先決定部52が吸い上げ可能と予測した吸い上げ先の候補のうち、入出力処理時間が最短の制御部を決定する処理について説明する。例えば、吸い上げ先決定部52は、各制御部で処理中の入出力コマンドの数を各CMのコマンド数情報373から取得する。そして、吸い上げ先決定部52は、取得した制御部毎の入出力コマンド数から換算される制御部毎の処理時間I/O処理時間を算出する。吸い上げ先決定部52は、CM間通信を用いないストレートアクセスおよびCM間通信を用いるクロスアクセスの各入出力コマンドの数から、以下の式3に基づいて、各制御部のI/O処理時間を算出する。I/O処理時間=クロスアクセスの入出力コマンド数×クロスアクセスの入出力コマンド処理時間ストレートアクセスの入出力コマンド数×ストレートアクセスの入出力コマンド処理時間式3ここで、クロスアクセスの入出力コマンド数とは、クロスアクセスについて処理中の入出力コマンドの数を示す。クロスアクセスの入出力コマンド数には、CM間通信によって送信される入出力コマンドの数だけでなく、CM間通信によって受信される入出力コマンドの数も含まれる。クロスアクセスの入出力コマンドの処理時間とは、1個のクロスアクセスの入出力コマンドが処理する場合の処理時間を示す。ストレートアクセスの入出力コマンド数とは、ストレートアクセスについて処理中の入出力コマンドの数を示す。ストレートアクセスの入出力コマンド処理時間とは、1個のストレートアクセスの入出力コマンドが処理する場合の処理時間を示す。そして、吸い上げ先決定部52は、算出した各制御部のI/O処理時間を吸い上げ制御テーブル371に格納する。そして、吸い上げ先決定部52は、先行して絞った吸い上げ先の候補のうち、吸い上げ制御テーブル371に記憶した各制御部のI/O処理時間が最も短い制御部に吸い上げ先を決定する。そして、吸い上げ先決定部52は、決定した吸い上げ先を、要求元のCMに通知する。この結果、要求元のCMは、異常を検知したCA31のダンプデータの吸い上げを、決定された吸い上げ先に依頼できる。なお、吸い上げ先決定部52は、異常を検知したCA31のダンプデータの吸い上げ時間について、吸い上げに許される規定時間より短い制御部が1個も存在しない場合がある。かかる場合、吸い上げ先決定部52は、I/O処理時間が最も短い制御部に吸い上げ先を決定するようにすれば良い。これにより、吸い上げ先決定部52は、決定した吸い上げ先で吸い上げに許される規定時間までダンプデータを吸い上げさせることができ、吸い上げられたダンプデータを用いて異常に関する調査を行わせることが可能となる。[吸い上げ制御テーブルのデータ構造]次に、吸い上げ制御テーブル371のデータ構造について、図4を参照して説明する。図4は、実施例3に係る吸い上げ制御テーブルのデータ構造の一例を示す図である。図4に示すように、吸い上げ制御テーブル371は、実行中フラグ371b、吸い上げ対象CA371c、CAダンプ吸い上げ時間371d、CPU使用率371eおよびCAダンプ吸い上げ実行時間371fをCPU371aに対応付けて記憶する。さらに、吸い上げ制御テーブル371は、I/Oコマンド数371gおよびI/O処理時間371hをCPU371aに対応付けて記憶する。CPU371aは、制御部をCPUとした場合の各制御部に対応したCPUを示す。実行中フラグ371bは、吸い上げ処理を実行中であるか否かを示すフラグである。例えば、実行中である場合ONが設定され、実行中でない場合OFFが設定される。吸い上げ対象CA371bは、吸い上げ処理を実行中である場合に吸い上げ対象のCAを示す。CAダンプ吸い上げ時間371dは、CAのダンプデータのサイズから各CPUがダンプデータの吸い上げ処理にかかる予測時間を示し、前述した式1により算出される。CPU使用率371eは、各CPUの使用率を示す。CAダンプ吸い上げ実行時間371fは、各CPUの使用率に対応した吸い上げ処理を実行する予測時間を示し、前述した式2により算出される。I/Oコマンド数371gは、各CPUで処理中の入出力コマンドの数を示す。例えば、クロスアクセスおよびストレートアクセスのそれぞれの入出力コマンド数が設定される。I/O処理時間371hは、I/Oコマンド数から換算されるCPU毎の処理時間を示し、前述した式3により算出される。吸い上げ制御テーブル371の一例として、CPU371aがCM0のメインCPUである場合、実行中フラグ371bとしてOFF、吸い上げ対象CA371cとして-、CAダンプ吸い上げ時間371dとして50秒を記憶している。さらに、CPU使用率371eを0.8、CAダンプ吸い上げ実行時間371fとして250秒、I/Oコマンド数371gとしてクロス100/ストレート100、I/O処理時間371hとして2秒を記憶している。また、CPU371aがCM7のサブCPUである場合、吸い上げ対象CA371cとしてCM1-CA0を記憶している。すなわち、図4の例では、CM7のサブCPUがCM1にあるCA0のダンプデータの吸い上げを実行している。[CAダンプ吸い上げ処理の手順]次に、吸い上げ処理部51によるCAダンプ吸い上げ処理の手順について、図5を参照して説明する。図5は、実施例3に係るCAダンプ吸い上げ処理のフローチャートを示す図である。なお、CMmのメイン制御部34Bおよびサブ制御部35Aでは、それぞれ異常が発生したCAm1、CAm2のダンプデータの吸い上げ処理を実行中であるものとする。そして、CMmにおいてさらにCAm0の異常が発生したとし、異常が発生したCAm0のデグレード処理が開始されたものとする。すると、CMm内のメイン制御部34BメインCPUの吸い上げ処理部51は、システム制御から異常が発生したCAm0のダンプデータの吸い上げ依頼を取得するステップS11。ここで、システム制御とは、システムを制御する機能部であり、例えばCM内に含まれる。そして、吸い上げ処理部51は、異常が発生したCAm0からダンプデータのサイズを取得するステップS12。続いて、吸い上げ処理部51は、CAm0のダンプデータの吸い上げ先をマスタCMに決定させ、マスタCMから吸い上げ先のCPUを取得するステップS13。メイン制御部34Bおよびサブ制御部35Aでは、既に先行して異常が発生した各CAのダンプデータの吸い上げ処理を実行しているからである。例えば、吸い上げ処理部51は、CAm0のダンプデータのサイズを含む吸い上げ先のCPUを取得するコマンド吸い上げ先CPU取得コマンドを作成し、マスタCMに対し、作成したコマンドを送信する。なお、マスタCMによる吸い上げ先決定処理の詳細の手順は、後述する。そして、吸い上げ処理部51は、取得した吸い上げ先のCPUに、CAm0のダンプデータの吸い上げ処理を依頼するステップS14。例えば、吸い上げ処理部51は、CAダンプの格納を依頼するコマンドCAダンプ格納依頼コマンドを作成し、吸い上げ先のCPUに対し、作成したコマンドを送信する。続いて、吸い上げ処理部51は、CM/CA間通信で、異常が発生したCAm0からダンプデータを取得するステップS15。そして、吸い上げ処理部51は、CM/CM間通信で、吸い上げ先のCPUに対し、取得したダンプデータを転送するステップS16。そして、吸い上げ処理部51は、吸い上げ先のCPUからのダンプデータの格納が完了したことを示す格納完了通知を待つステップS17。そして、吸い上げ処理部51は、全ダンプデータの転送が完了したか否かを判定するステップS18。全ダンプデータの転送が完了していないと判定した場合ステップS18;No、吸い上げ処理部51は、残りのダンプデータの転送をすべく、ステップS15に移行する。一方、全ダンプデータの転送が完了したと判定した場合ステップS18;Yes、吸い上げ処理部51は、マスタCMへ異常が発生したCAm0のダンプデータの吸い上げが完了したことを通知するステップS19。これにより、吸い上げ処理部51によるCAダンプ吸い上げ処理が終了し、デグレード処理が終了する。[吸い上げ先決定処理の手順]次に、吸い上げ先決定部52による吸い上げ先決定処理の手順について、図6Aおよび図6Bを参照して説明する。図6Aおよび図6Bは、実施例3に係る吸い上げ先決定処理のフローチャートを示す図である。なお、吸い上げ先の対象となる各CPUには、あらかじめインデックスが振られているものとする。例えば、CM0のメインCPUに0、CM0のサブCPUに1、CM1のメインCPUに2、CM1のサブCPUに3がそれぞれ振られている。例えば、CAm0のダンプデータのサイズを含む吸い上げ先CPU取得コマンドを受信した吸い上げ先決定部52は、ダンプデータのサイズから標準の吸い上げ時間CAダンプ吸い上げ時間を算出するステップS21。CAダンプ吸い上げ時間は、式1によって算出される。そして、吸い上げ先決定部52は、算出したCAダンプ吸い上げ時間を吸い上げ制御テーブル371に格納する。そして、吸い上げ先決定部52は、各CPUの使用率とI/Oコマンド数を各CPUから取得するステップS22。各CPUの使用率は、各CMのCPU使用率情報372に記憶されている。各CPUのI/Oコマンド数は、各CMのコマンド数情報373に記憶されている。そして、吸い上げ先決定部52は、標準の吸い上げ時間および各CPUの使用率から各CPUの吸い上げ実行時間CAダンプ吸い上げ実行時間を算出するステップS23。CAダンプ吸い上げ実行時間は、式2によって算出される。そして、吸い上げ先決定部52は、算出した各CPUのCAダンプ吸い上げ実行時間を吸い上げ制御テーブル371に格納する。さらに、吸い上げ先決定部52は、I/Oコマンド数から各CPUのI/O処理時間を算出するステップS24。そして、吸い上げ先決定部52は、算出した各CPUのI/O処理時間を吸い上げ制御テーブル371に格納する。続いて、吸い上げ先決定部52は、候補CPUを初期値例えば、0xFFに設定するステップS25。なお、候補CPUとは、吸い上げ先CPUの候補を示す変数であり、候補となるCPUに振られたインデックスの値が設定される。また、吸い上げ先決定部52は、格納時間最短CPUを初期値例えば、0xFFに設定するステップS26。なお、格納時間最短CPUとは、ダンプデータの格納時間が最短のCPUを示す変数であり、格納時間が最短のCPUに振られたインデックスの値が設定される。そして、吸い上げ先決定部52は、Indexに吸い上げ先の対象となるCPUのインデックスの値0を設定し、確認CPUにIndexに設定された値を設定するステップS27。なお、Indexとは、変数であり、各CPUに振られたインデックスの値が設定される。また、確認CPUとは、吸い上げ先CPUとなるか否かを確認するCPUを示す変数であり、CPUに振られたインデックスの値が設定される。続いて、吸い上げ先決定部52は、Indexに設定された値が吸い上げ先の対象となるCPUの最大数と等しいか否かを判定するステップS28。Indexに設定された値がCPUの最大数と等しくないと判定した場合ステップS28;No、吸い上げ先決定部52は、ステップS41に移行する。ステップS41では、吸い上げ先決定部52は、吸い上げ制御テーブル371に記憶された実行中フラグに基づいて、確認CPUの実行中フラグがONであるか否かを判定するステップS41。確認CPUの実行中フラグがONであると判定した場合ステップS41;Yes、吸い上げ先決定部52は、次のCPUを確認すべく、ステップS49に移行する。一方、確認CPUの実行中フラグがONでないと判定した場合ステップS41;No、吸い上げ先決定部52は、格納時間最短CPUが初期値であるか否かを判定するステップS42。格納時間最短CPUが初期値であると判定した場合ステップS42;Yes、吸い上げ先決定部52は、格納時間最短CPUに確認CPUを設定すべく、ステップS44に移行する。格納時間最短CPUが初期値でないと判定した場合ステップS42;No、吸い上げ先決定部52は、確認CPUのCA吸い上げ実行時間が格納時間最短CPUのCA吸い上げ実行時間以下であるか否かを判定するステップS43。確認CPUのCA吸い上げ実行時間が格納時間最短CPUのCA吸い上げ実行時間以下であると判定した場合ステップS43;Yes、吸い上げ先決定部52は、格納時間最短CPUに確認CPUを設定すべく、ステップS44に移行する。ステップS44では、吸い上げ先決定部52は、格納時間最短CPUに確認CPUを設定するステップS44。すなわち、吸い上げ先決定部52は、確認したCPUの中で格納時間が最短のCPUとして現在確認中の確認CPUを設定する。一方、確認CPUが格納時間最短CPUのCA吸い上げ実行時間以下でない場合ステップS43;No、吸い上げ先決定部52は、確認CPUのCA吸い上げ実行時間が吸い上げ完了規定時間以下であるか否かを判定するステップS45。ここで、吸い上げ完了規定時間とは、あらかじめ定められた吸い上げに許される規定時間を示す。確認CPUのCA吸い上げ実行時間が吸い上げ完了規定時間より大きいと判定した場合ステップS45;No、吸い上げ先決定部52は、次のCPUを確認すべく、ステップS49に移行する。確認CPUのCA吸い上げ実行時間が吸い上げ完了規定時間以下であると判定した場合ステップS45;Yes、吸い上げ先決定部52は、候補CPUが初期値であるか否かを判定するステップS46。候補CPUが初期値でないと判定した場合ステップS46;No、吸い上げ先決定部52は、確認CPUのI/O処理時間が候補CPUのI/O処理時間以下であるか否かを判定するステップS47。ここで、確認CPUのI/O処理時間が候補CPUのI/O処理時間より大きいと判定した場合ステップS47;No、吸い上げ先決定部52は、次のCPUを確認すべく、ステップS49に移行する。候補CPUが初期値である場合ステップS46;Yesまたは確認CPUのI/O処理時間が候補CPUのI/O処理時間以下である場合ステップS47;Yes、吸い上げ先決定部52は、ステップS48に移行する。ステップS48では、吸い上げ先決定部52は、候補CPUに確認CPUを設定するステップS48。すなわち、吸い上げ先決定部52は、確認したCPUの中で、CA吸い上げ実行時間が吸い上げ完了規定時間より短く、且つI/O処理時間が最短のCPUとして、現在確認中の確認CPUを設定する。ステップS49では、吸い上げ先決定部52は、Indexを1加算し、確認CPUをIndexに更新するステップS49。そして、吸い上げ先決定部52は、ステップS28に移行する。続いて、ステップS28では、Indexに設定された値が吸い上げ先の対象となるCPUの最大数と等しいと判定した場合ステップS28;Yes、吸い上げ先決定部52は、候補CPUが初期値であるか否かを判定するステップS29。候補CPUが初期値でないと判定した場合ステップS29;No、吸い上げ先決定部52は、候補CPUを吸い上げ先のCPUに決定しステップS30、吸い上げ先決定処理を終了する。候補CPUが初期値であると判定した場合ステップS29;Yes、吸い上げ先決定部52は、格納時間最短CPUが初期値であるか否かを判定するステップS31。つまり、CA吸い上げ実行時間が吸い上げ完了規定時間より短くなるCPUが1個も存在しなかった場合である。ここで、格納時間最短CPUが初期値でないと判定した場合ステップS31;No、吸い上げ先決定部52は、格納時間最短CPUを吸い上げ先のCPUに決定しステップS32、吸い上げ先決定処理を終了する。一方、格納時間最短CPUが初期値であると判定した場合ステップS31;Yes、吸い上げ先決定部52は、吸い上げ先のCPUとして候補となるCPUは存在しないと決定しステップS33、吸い上げ先決定処理を終了する。[CAダンプ吸い上げ処理のシーケンス]次に、CAダンプ吸い上げ処理のシーケンスを、図7~図10を参照して説明する。図7~図10は、実施例3に係るCAダンプ吸い上げ処理のシーケンス図である。なお、ストレージシステム2Bでは、CM0~CM7が冗長化され、CM0がマスタCMであるものとする。さらに、CM1のCA0でさらに異常が発生したものとする。まず、CM1では、異常が発生したCA0が、デグレード処理を開始しS41、デグレード処理を開始した旨をメインCPUメイン制御部34Bに通知するS42。すると、メインCPUは、デグレード通知を受信しS43、吸い上げ処理部51で行うCAダンプ吸い上げ処理を起動するS44。そして、メインCPUは、吸い上げ先のCPUを取得したい旨の要求を示す吸い上げ先CPU取得コマンドを作成するS45。作成したコマンドには、ダンプデータのサイズが含まれる。さらに、メインCPUは、CM間通信ドライバ36を介して、作成したコマンドをマスタCMCM0に送信するS46。マスタCMでは、CM間通信ドライバ36が、CM1から送信された吸い上げ先CPU取得コマンドを受信するとS47、吸い上げ先決定部52で行う吸い上げ先CPU取得処理を起動するS48。起動後、メインCPUメイン制御部34Bは、吸い上げ制御テーブル371を初期化するS49。そして、メインCPUは、ダンプデータのサイズからCAダンプ吸い上げ時間を算出しS50、算出した値を吸い上げ制御テーブル371に格納するS51。ここでは、CAダンプ吸い上げ時間は、式1により算出される。さらに、メインCPUは、自CMのCPU使用率と処理中のI/Oコマンドの数を取得しS52、同様のCPU情報を取得したい旨のCPU情報取得コマンドを作成するS53。そして、メインCPUは、作成したコマンドを全CMCM1~CM7に対して送信するS54、S55。CM1では、CM間通信ドライバ36が、CM0から送信されたCPU情報取得コマンドを受信するとS56、メインCPUが、自CMのCPU使用率と処理中のI/Oコマンドの数を取得するS57。そして、メインCPUは、取得したCPU情報を含むCPU情報取得コマンドに対する応答コマンドを作成するS58。そして、メインCPUは、作成したコマンドをマスタCMに対して送信するS59。CM2~CM7でも、CM1で行われた処理が同様に行われる。マスタCMでは、CM間通信ドライバ36が、CPU情報取得コマンドに対する応答コマンドを各CMから受信するS60。その後、メインCPUは、全CMから受信するとS61、メインCPUは、吸い上げ先決定部52で行う吸い上げ先決定処理を起動するS62。起動後、メインCPUは、各CMから取得したCPU情報内のCPU使用率から各CPUのダンプ吸い上げ実行時間を算出しS63、算出した値を吸い上げ制御テーブル371に格納するS64。ここでは、CAダンプ吸い上げ実行時間は、式2により算出される。さらに、メインCPUは、各CMから取得したCPU情報内のI/Oコマンドの数から各CPUのI/O処理時間を算出しS65、算出した値を吸い上げ制御テーブル371に格納するS66。ここでは、I/O処理時間は、式3により算出される。そして、マスタCMでは、メインCPUが、吸い上げ制御テーブル371に記憶された情報に基づいて、吸い上げ先のCPUを決定するS67。そして、メインCPUは、吸い上げ制御テーブル371について、決定した吸い上げ先のCPUの実行中フラグにONを設定するとともにS68、吸い上げ対象CAにCM1-CA0を設定するS69。そして、メインCPUは、決定した吸い上げ先のCPUの情報を含む吸い上げ先CPU取得コマンドに対応する応答コマンドを作成しS70、作成したコマンドをCM1に送信するS71。CM1では、CM間通信ドライバ36が、吸い上げ先CPU取得コマンドに対応する応答コマンドを受信するとS72、メインCPUが、CAダンプ格納依頼コマンドを作成しS73、作成したコマンドを吸い上げ先のCPUに対して送信するS74。ここでは、吸い上げ先のCPUは、CM7のサブCPUであるとする。CM7では、CM間通信ドライバ36が、CAダンプ格納依頼コマンドを受信するとS75、受信したコマンドをサブCPUに引き渡す。すると、サブCPUは、ダンプデータの取得用のバッファをメモリに確保するS76。そして、サブCPUは、CAダンプ格納依頼コマンドに対する応答コマンドを作成しS77、作成したコマンドをCM1に送信するS78。ここでは、作成した応答コマンドには、確保したバッファアドレスおよびバッファサイズに関する情報が含まれる。CM1では、CM間通信ドライバ36が、CAダンプ格納依頼コマンドに対する応答コマンドを受信するS79。そして、メインCPUが、受信されたコマンドに含まれるバッファサイズに基づいて、ダンプデータ取得用のバッファをメモリに確保しS80、確保したバッファアドレスおよびバッファサイズをCA0に通知するS81。そして、CA0は、メインCPUから通知されたバッファアドレスおよびバッファサイズを保存するS82。その後、CA0は、メインCPUに対して、保存したバッファサイズ分のダンプデータを転送するとともにS83、ダンプデータを転送した旨を通知するS84。メインCPUは、ダンプデータ転送通知を受信するとS85、バッファサイズ分のダンプデータを、吸い上げ先CPUであるCM7のサブCPUに転送するS86。そして、メインCPUは、ダンプデータを転送した旨のダンプデータ転送コマンドを作成しS87、作成したコマンドをCM7のサブCPUに送信するS88。CM7では、CM間通信ドライバ36が、CM1のメインCPUからのダンプデータ転送コマンドを受信するとS89、メインCPUが、CM1のメインCPUから転送されたダンプデータを圧縮するS90。そして、サブCPUは、圧縮したダンプデータを自CM内のBUD33に書き込むS91~S93。そして、サブCPUは、BUD33への書き込みが完了すると、ダンプデータの格納が完了した旨のダンプデータ格納完了コマンドを作成しS94、作成したコマンドをCM1に送信するS95。CM1では、CM間通信ドライバ36がCM7からのダンプデータ格納完了コマンドを受信するとS96、メインCPUは、ダンプデータの格納完了をCA0に通知するS97。そして、CA0は、ダンプデータに続きがあるか否かを判定しS98、続きがあればS98;Yes、続きのダンプデータを転送すべく、S83に移行する。一方、CA0は、続きがなければS98;No、ダンプデータの転送が完了した旨をメインCPUに通知するS99。そして、メインCPUは、CA0からダンプデータ転送完了通知を受信するとS100、ダンプデータの転送が完了した旨のダンプデータ転送完了コマンドを作成するS101。そして、メインCPUは、作成したコマンドをCM7に送信するS102。CM7では、CM間通信ドライバ36がCM1からのダンプデータ転送完了コマンドを受信するとS103、サブCPUは、ダンプデータ用のバッファを解放するS104。そして、サブCPUは、ダンプデータ転送完了コマンドに対する応答コマンドを作成しS105、作成したコマンドをCM1に送信するS106。CM1では、CM間通信ドライバ36がCM7からのダンプデータ転送完了コマンドに対する応答コマンドを受信するとS107、メインCPUは、ダンプデータ取得用のバッファを解放するS108。そして、メインCPUは、吸い上げ制御テーブル371を更新する旨の制御テーブル更新コマンドを作成しS109、作成したコマンドをマスタCMに送信するS110。マスタCMでは、CM間通信ドライバ36がCM1からの制御テーブル更新コマンドを受信するとS111、メインCPUは、吸い上げ制御テーブル371について、吸い上げ先CPUに対応する実行中フラグをOFFに更新するS112。そして、メインCPUは、吸い上げ制御テーブル371の更新が完了した旨の制御テーブル更新完了コマンドを作成しS113、作成したコマンドをCM1に送信するS114。CM1では、CM間通信ドライバ36がマスタCMからの制御テーブル更新完了コマンドを受信するとS115、メインCPUは、CAダンプ吸い上げ処理を終了する。ここで、S49により初期状態にされた吸い上げ制御テーブルの内容について、具体的に説明する。図11は、S49により初期状態にされた吸い上げ制御テーブルの具体例を示す図である。図11に示すように、吸い上げ制御テーブル371には、ストレージシステム2B内の全てのCPU371aについて、実行中フラグ371bが実行中でないことを示すOFFを記憶している。また、ストレージシステム2B内の全てのCPU371aについて、CAダンプ吸い上げ時間371d、CAダンプ吸い上げ実行時間371fおよびI/O処理時間371hがそれぞれ初期状態を示す0秒を記憶している。次に、S51によりCAダンプ吸い上げ時間が格納された吸い上げ制御テーブルの内容について、具体的に説明する。図12は、S51によりCAダンプ吸い上げ時間が格納された吸い上げ制御テーブルの具体例を示す図である。図12に示すように、吸い上げ制御テーブル371には、CAダンプ吸い上げ時間371dが格納されている。CAダンプ吸い上げ時間371dは、マスタCMの吸い上げ先決定部52により、式1を用いて以下のように算出される。例えば、CM/CA間通信時間が0.1秒、CM/CM間通信時間が0.1秒、データ圧縮時間が0.5秒/MB、BUD格納時間が0.3秒/MB、データサイズが50MBであるとする。かかる場合に、異常が発生したCA0の存在するCM1でのCAダンプ吸い上げ時間およびCA0の存在しないCM1以外のCMでのCAダンプ吸い上げ時間は、以下のように算出される。CM1でのCAダンプ吸い上げ時間={0.10.50.3}×50=45秒CM1以外のCMでのCAダンプ吸い上げ時間={0.10.10.50.3}×50=50秒つまり、異常が発生したCA0の存在するCM1以外のCMでは、CM1からCM1以外のCMへダンプデータを転送するので、CM/CM間通信時間がかかる。これにより、CM1以外のCMでのCAダンプ吸い上げ時間は、CM1でのCAダンプ吸い上げ時間よりCAダンプ吸い上げ時間が多くかかっている。次に、S64によりCAダンプ吸い上げ実行時間が格納された吸い上げ制御テーブルの内容について、具体的に説明する。図13は、S64によりCAダンプ吸い上げ実行時間が格納された吸い上げ制御テーブルの具体例を示す図である。図13に示すように、吸い上げ制御テーブル371には、さらに、CPU使用率371eおよびCAダンプ吸い上げ実行時間371fが格納されている。CAダンプ吸い上げ実行時間371fは、マスタCMの吸い上げ先決定部52により、式2を用いて以下のように算出される。例えば、CM0のメインCPUにおけるCAダンプ吸い上げ実行時間は、以下のように算出される。ここでは、CAダンプ吸い上げ時間が50秒、CPU使用率が0.8であるとする。CAダンプ吸い上げ実行時間=50÷1-0.8=250秒また、CM7のサブCPUにおけるCAダンプ吸い上げ実行時間は、以下のように算出される。CAダンプ吸い上げ実行時間=50÷1-0.1=55.6秒次に、S66によりI/O処理時間が格納された吸い上げ制御テーブルの内容について、具体的に説明する。図14は、S66によりI/O処理時間が格納された吸い上げ制御テーブルの具体例を示す図である。図14に示すように、吸い上げ制御テーブル371には、さらに、I/Oコマンド数371gおよびI/O処理時間371hが格納されている。CAダンプ吸い上げ時間371は、マスタCMの吸い上げ先決定部52により、式3を用いて以下のように算出される。例えば、CM0のメインCPUにおけるI/O処理時間は、以下のように算出される。ここでは、クロスアクセスの入出力コマンド数が100、ストレートアクセスの入出力コマンド数が100、クロスアクセスおよびストレートアクセスの入出力コマンド処理時間がともに0.01秒とする。I/O処理時間=100×0.01100×0.01=2秒次に、S68、S69により吸い上げ先CPUが反映された吸い上げ制御テーブルの内容について、具体的に説明する。図15は、S68、S69により吸い上げ先CPUが反映された吸い上げ制御テーブルの具体例を示す図である。図15に示すように、吸い上げ制御テーブル371には、CM7のサブCPUについて、実行中フラグ371bが実行中であることを示すONを記憶している。また、CM7のサブCPUについて、吸い上げ対象CA371cが吸い上げ対象であるCM1-CA0を記憶している。吸い上げ対象CAの吸い上げ先のCPUは、マスタCMの吸い上げ先決定部52により決定される。例えば、吸い上げ完了規定時間が70秒であるとする。ここでは、CAダンプデータ吸い上げ実行時間371fについて、吸い上げ完了規定時間より短いCPUは、CM1のメインCPUおよびサブCPU、CM2のサブCPU、CM5のサブCPU、CM7のメインCPUおよびサブCPUである。この中でI/O処理時間が最も短いCPUは、CM7のサブCPUとなる。したがって、CM1の吸い上げ対象CA0の吸い上げ先のCPUは、CM7のサブCPUと決定される。その後、決定されたCM7のサブCPUに対応する実行中フラグ371bにONが格納されるとともに、吸い上げ対象CA371cに吸い上げ対象のCM1-CA0が格納される。最後に、吸い上げ完了後、S112により実行中フラグが更新された吸い上げ制御テーブルの内容について、具体的に説明する。図16は、吸い上げ完了後、S112により実行中フラグが更新された吸い上げ制御テーブルの具体例を示す図である。図16に示すように、吸い上げ制御テーブル371には、CM7のサブCPUについて、実行中フラグ371bが実行中でないことを示すOFFを記憶している。また、CM7のサブCPUについて、吸い上げ対象CA371cがクリアされている。[実施例3の効果]上記実施例3によれば、メイン制御部34Bは、ダンプデータの吸い上げを依頼する外部の制御部の候補が複数存在する場合、さらに異常を検知したCAのデータの吸い上げ時間が吸い上げ完了規定時間より短い制御部に吸い上げ先の候補を絞る。そして、メイン制御部34Bは、絞った吸い上げ先の候補のうち、I/Oコマンドの数から換算されるI/O処理時間が最も短い制御部に、吸い上げ先を決定する。そして、メイン制御部34Bは、さらに異常を検知したCAのダンプデータの吸い上げを、決定した制御部に依頼する。この結果、メイン制御部34Bは、さらに異常が発生したCAのダンプデータを規定時間内に確実に吸い上げることが可能になる。さらに、メイン制御部34Bは、ストレージシステム2B全体のI/O処理に対する影響を小さくすることができる。また、上記実施例3によれば、メイン制御部34Bは、さらに異常を検知したCAのデータの吸い上げ時間について、吸い上げ完了規定時間より短い制御部が1個も存在しない場合、I/O処理時間が最も短い制御部に決定する。この結果、メイン制御部34Bは、決定した制御部で吸い上げ完了規定時間までダンプデータを吸い上げることができ、吸い上げることができたダンプデータを用いて異常に関する調査を行わせることが可能となる。[その他]なお、吸い上げ先決定部52は、マスタCMのメイン制御部34Bに配置するものとしたが、これに限定されず、各CMのメイン制御部34Bに配置するものとしても良い。かかる場合には、異常が発生したCAが存在するCMにおいて、吸い上げ先決定部52が、自CM内でさらに異常が発生したCAのダンプデータの吸い上げを外部の制御部に決定する。そして、異常が発生したCAが存在するCMにおいて、吸い上げ処理部34Bが、決定した制御部に吸い上げを依頼する。また、CM3Bの各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、CM3、3A、3Bの分散統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散統合して構成することができる。例えば、吸い上げ先決定部52と吸い上げ処理部51とを1つの部として統合し、各CMに配置するようにしても良い。また、吸い上げ先決定部52を、規定時間内にダンプデータを吸い上げ可能か否かを予測する第1の処理部と、吸い上げ可能と予測した候補のうちI/O処理時間が最短の制御部を決定する第2の処理部とに分散しても良い。また、記憶部37をCM3Bの外部装置としてネットワーク経由で接続するようにしても良い。また、CM3、3A、3Bにて行われる各処理機能は、その全部または任意の一部が、CPUまたはMPU、MCUMicroControllerUnit等のマイクロコンピュータあるいは、ワイヤードロジックによるハードウェアとして実現されても良い。また、CM3、3A、3Bにて行われる各処理機能は、その全部または任意の一部が、CPUまたはMPU、MCU等のマイクロコンピュータにて解析実行されるプログラムにて実現されても良い。以上の実施例に係る実施形態に関し、さらに以下の付記を開示する。付記1データを記憶する記憶装置へのデータの入出力を制御する制御装置を有するストレージシステムにおいて、前記制御装置は、自装置における処理を分散して実行する第1の処理部および第2の処理部と、前記記憶装置に記憶されるデータの入出力に関わるコマンドを外部の装置から受け付ける複数のインタフェース部とを有し、前記第1の処理部は、前記複数のインタフェース部のうちいずれかのインタフェース部の異常に応じて当該インタフェース部のダンプデータの吸い上げ処理を実行中に、別のインタフェース部の異常を検知すると、異常を検知した別のインタフェース部のダンプデータの吸い上げを前記第2の処理部に依頼することを特徴とするストレージシステム。付記2前記第1の処理部は、さらに別のインタフェース部の異常を検知すると、さらに異常を検知したインタフェース部のダンプデータの吸い上げを外部の制御装置の処理部に依頼することを特徴とする付記1に記載のストレージシステム。付記3前記第1の処理部は、ダンプデータの吸い上げを依頼する外部の処理部の候補が複数存在する場合、さらに異常を検知したインタフェース部のデータの吸い上げ時間が所定の規定時間より短く、且つ前記入出力に関わるコマンドの数から換算される処理時間が最も短い処理部に決定し、さらに異常を検知したインタフェース部のダンプデータの吸い上げを、決定した処理部に依頼することを特徴とする付記2に記載のストレージシステム。付記4前記第1の処理部は、さらに異常を検知したインタフェース部のデータの吸い上げ時間について、所定の規定時間より短い処理部が1個も存在しない場合、前記入出力に関わるコマンドの数から換算される処理時間が最も短い処理部に決定することを特徴とする付記3に記載のストレージシステム。付記5データを記憶する記憶装置へのデータの入出力を制御する制御装置において、自装置における処理を分散して実行する第1の処理部および第2の処理部と、前記記憶装置に記憶されるデータの入出力に関わるコマンドを外部の装置から受け付ける複数のインタフェース部とを有し、前記第1の処理部は、前記複数のインタフェース部のうちいずれかのインタフェース部の異常に応じて当該インタフェース部のダンプデータの吸い上げ処理を実行中に、別のインタフェース部の異常を検知すると、異常を検知した別のインタフェース部のダンプデータの吸い上げを前記第2の処理部に依頼することを特徴とする制御装置。付記6データを記憶する記憶装置へのデータの入出力を制御する制御装置であって、処理を分散して実行する第1の処理部および第2の処理部と、前記記憶装置に記憶されるデータの入出力に関わるコマンドを外部の装置から受け付ける複数のインタフェース部とを備える制御装置を有するストレージシステムの制御方法であって、前記第1の処理部は、前記複数のインタフェース部のうちいずれかのインタフェース部の異常を検知すると、異常を検知したインタフェース部のダンプデータの吸い上げを実行し、前記第1の処理部による吸い上げを実行する処理の実行中に、別のインタフェース部の異常を検知すると、異常を検知した別のインタフェース部のダンプデータの吸い上げを前記第2の処理部に依頼する処理を含むことを特徴とするストレージシステムの制御方法。