JP6035908B2 - ストレージシステム - Google Patents

ストレージシステム Download PDF

Info

Publication number
JP6035908B2
JP6035908B2 JP2012147887A JP2012147887A JP6035908B2 JP 6035908 B2 JP6035908 B2 JP 6035908B2 JP 2012147887 A JP2012147887 A JP 2012147887A JP 2012147887 A JP2012147887 A JP 2012147887A JP 6035908 B2 JP6035908 B2 JP 6035908B2
Authority
JP
Japan
Prior art keywords
siphoning
control unit
cpu
storage
dump
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.)
Expired - Fee Related
Application number
JP2012147887A
Other languages
English (en)
Other versions
JP2014010710A (ja
Inventor
隼 安土
隼 安土
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012147887A priority Critical patent/JP6035908B2/ja
Priority to US13/870,508 priority patent/US20140006876A1/en
Publication of JP2014010710A publication Critical patent/JP2014010710A/ja
Application granted granted Critical
Publication of JP6035908B2 publication Critical patent/JP6035908B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、ストレージシステムに関する。
ストレージシステムでは、コントローラモジュール(Controller Module:以下CMと記す)が複数のディスク装置へのデータ制御を実施する。例えば、CMは、ホストコンピュータとのインタフェースであるチャンネルアダプタ(Channel Adapter:以下CAと記す)を介して、ホストコンピュータからディスク装置に対するI/O(Input/Output)コマンドを受け付ける。そして、CMは、受け付けたI/Oコマンドに基づいて、ディスク装置へのデータの入出力を制御する。
CAの中には、内部のファイルやメモリの内容をダンプデータ(障害情報)として記録するダンプ機能を有するものが存在する。ダンプ機能を有するCAに異常が発生すると、CM内のCPU(Central Processing Unit)は、異常が発生したCAからダンプデータを吸い上げてシステム内のBUD(Bootup and Utility Device)と呼ばれる記憶装置に格納する。
そして、異常が発生したCAは、ダンプデータが吸い上げられた後に、CMから切り離される。また、BUDに格納されたダンプデータは、障害情報を含んでおり、CAに生じた異常の解析や修復に利用される。
特開2006−107053号公報 特開2001−34508号公報 特開2007−334668号公報 特開2003−330781号公報
しかしながら、上述した従来の技術では、ダンプデータを記録できない場合がある。例えば、CPUは、CAの異常に続いて、BUDにも異常が発生した場合、CAから吸い上げたダンプデータをBUDに格納できない。
1つの側面では、本発明は、確実にダンプデータを記録することができるストレージシステムおよびストレージシステムの制御方法を提供することを目的とする。
本願の開示するストレージシステムは、一つの態様において、データを記憶する記憶装置へのデータの入出力を制御する複数のコントローラモジュールを備えたストレージシステムである。各コントローラモジュールは、記憶装置へのデータの入出力に関わる命令が入力されるチャネルアダプタと、チャネルアダプタから命令を受け取って実行する制御部とを有する。各制御部は、チャネルアダプタに異常が生じた場合、ダンプデータの格納処理時間に基づいて制御部を複数選択して選択された制御部に当該チャネルアダプタのダンプデータをブート用記憶装置に格納する処理の実行を依頼する。
1実施形態におけるストレージシステムによれば、確実にダンプデータを記録することができる。
図1は、実施例1に係るストレージシステムの構成を示す機能ブロック図である。 図2は、実施例2に係るストレージシステムの構成を示す機能ブロック図である。 図3は、実施例2に係る吸い上げ制御テーブルのデータ構造の一例を示す図である。 図4Aは、ダンプデータの格納処理の処理動作の一例を示す図である。 図4Bは、ダンプデータの格納処理の処理動作の一例を示す図である。 図4Cは、ダンプデータの格納処理の処理動作の一例を示す図である。 図5Aは、CAダンプの格納先であるCM#5にデグレードが発生し、CM#7を新たな格納先に選択した後に各CMのBUDに格納されるダンプデータの一例を示す図である。 図5Bは、CM#6のBUDからCM#7のBUDにダンプデータをコピーする処理の一例を示す図である。 図5Cは、CM#6のBUDからダンプデータがコピーされた後に、CM#7のBUDに格納されるダンプデータの一例を示す図である。 図5Dは、CAダンプの格納先であるCM#5のデグレードが発生した後、更に、CAダンプの格納先であるCM#6のデグレードが発生する場合の一例を示す図である。 図5Eは、CM#5のデグレードが発生した後に、CM#6にもデグレードが発生した場合、CM#7のBUDに格納されるダンプデータの一例を示す図である。 図6Aは、ストレージシステムによるCAダンプの吸い上げ処理を示すシーケンス図である。 図6Bは、ストレージシステムによるCAダンプの吸い上げ処理を示すシーケンス図である。 図7Aは、実施例2に係る吸い上げ先決定処理の処理手順を示すフローチャートである。 図7Bは、実施例2に係る吸い上げ先決定処理の処理手順を示すフローチャートである。
以下に、本願の開示するストレージシステムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[実施例1に係るストレージシステムの構成]
図1は、実施例1に係るストレージシステム2の構成を示す機能ブロック図である。図1に示すように、実施例1に係るストレージシステム2は、コントローラモジュール(Controller Module:以下CMと記す)3と、ディスク4と、フロントエンドルータ(Front-End Router:以下FRTと記す)5とを有する。また、実施例1に係るストレージシステム2は、バックエンドルータ(Back-End Router:以下BRTと記す)6と、ドライブエンクロージャー(Drive Enclosure:以下DEと記す)7とを有する。なお、ストレージシステム2が有するCMの数は、3以上であれば図1に示した数に限定されるものではない。また、ストレージシステム2が有するディスク4の数は、図1に示した数に限定されるものではない。
また、実施例1に係るストレージシステム2は、上位装置であるホストコンピュータ1と接続する。そして、ストレージシステム2は、ホストコンピュータ1からディスク4に対するI/O(Input/Output)コマンドを受け付け、受け付けたI/Oコマンドを制御する。なお、ストレージシステム2と接続するホストコンピュータ1の数は、図1に示した数に限定されるものではない。
CM3は、ディスク4へのデータの入出力を制御する装置である。図1は、CM3が3つである場合を示す。また、これら各CM3それぞれを区別する場合には、図1に示すように、CM#0、CM#1およびCM#2と適宜記載する。
ディスク4は、データを記憶する記憶装置であり、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)等に対応する。FRT5は、CM3間を接続する。なお、FRT5は、各CM間通信を行うパスを4パス有する。BRT6は、CM3とディスク4との間を接続する。DE7は、ディスク4を搭載する筐体である。
[CMの機能構成]
各CM3は、複数のチャンネルアダプタ(Channel Adapter:以下CAと記す)31とI/Oコントローラ(Input/Output Controller:以下IOCと記す)32とを有する。また、各CM3は、BUD(Bootup and Utility Device)33とメイン制御部34とサブ制御部35とCM間通信ドライバ36と記憶部37とを有する。なお、メイン制御部34とサブ制御部35とを区別しない場合には、制御部と記載する。また、CAと当該CAが存在するCM間通信を行うパスは1パスである。また、各CM3が有する制御部の数は、図1に示した数に限定されるものではない。例えば、各CM3は、制御部を一つ有するようにしてもよい。
CA31は、ホストコンピュータ1と通信接続する通信インタフェースである。例えば、CA31は、ディスク4に記憶されるデータの入出力に関わるコマンドであるI/Oコマンドをホストコンピュータ1から受け付ける。なお、CA31は、CM3内に複数存在し、図1では、4台存在する場合を示している。これら各CA31を区別する場合、CA31−1(CA#1)、CA31−2(CA#2)、CA31−3(CA#3)およびCA31−4(CA#4)と記載する。
また、これらCA31は、内部のファイルやメモリの内容をダンプデータとして記録するダンプ機能を有する。また、CA31が保持するダンプデータは、CA31に障害が発生した場合、メイン制御部34により吸い上げられ、ストレージシステム2内のBUD33に格納される。なお、以下の記載では、CA31が保持するダンプデータのことを「CAダンプ」と称する。また、CMまたはCMが有するCAなどの各部に障害が発生して切り離される処理を、デグレード処理という。
IOC32は、ディスク4と通信接続する通信インタフェースである。BUD33は、CA31に障害が発生した場合に、メイン制御部34によりCA31から吸い上げられたダンプデータを記憶する記憶装置である。このBUD33に格納されたダンプデータは、後に、障害が発生したCA31の障害の解析のために利用される。
メイン制御部34は、CA31と接続し、自身のCM3における処理を分散して実行する場合のメインの制御部である。以下では、このメイン制御部34は、CPU(Central Processing Unit)であるものとして説明するが、メイン制御部34は、MPU(Micro Processing Unit)などの電子回路であってもよい。また、メイン制御部34に含まれる各機能部は、例えば、CM3を制御するCFW(Controller Module Firmware)によってそれぞれ実現される。
また、メイン制御部34は、自身と接続するCA31に障害が発生した場合に、CA31から吸い上げたダンプデータを記憶部37に保持させ、記憶部37でダンプデータを圧縮してからBUD33に格納する。なお、CAからダンプデータを吸い上げてからBUDに格納する処理のことを「吸い上げ処理」と称する。
また、メイン制御部34は、他のCM3が有するメイン制御部34またはサブ制御部35を選択し、選択したメイン制御部34またはサブ制御部35にダンプデータの格納処理の実行を依頼する。
一例をあげると、CM#0のメイン制御部34は、CM#0のCA31において異常が発生した場合、CM#0のBUD33にCA31から吸い上げたダンプデータを格納する。また、CM#0のメイン制御部34は、CM#1のメイン制御部34にCM#0のCA31から吸い上げたダンプデータの格納処理の実行を依頼する。これにより、CM#1のBUD33にもCM#0のCA31から吸い上げたダンプデータが格納される。
また、メイン制御部34は、選択した他のCM3が有するメイン制御部34またはサブ制御部35に異常が生じた場合、メイン制御部34またはサブ制御部35を新たに選択し、CA31のダンプデータの格納処理の実行を依頼する。
例えば、CM#1に異常が生じた場合、CM#0のメイン制御部34は、CM#2のメイン制御部34を新たに選択し、CM#0のCA31から吸い上げたダンプデータの格納処理の実行を依頼する。
サブ制御部35は、CA31と接続し、自身のCM3における処理を分散して実行する場合のサブの制御部である。なお、以下では、このサブ制御部35は、CPUであるものとして説明するが、サブ制御部35は、MPUなどの電子回路であってもよい。また、サブ制御部35に含まれる各機能部は、例えば、CM3を制御するCFWによってそれぞれ実現される。
CM間通信ドライバ36は、FRT5を介して他のCM3と通信接続する通信インタフェースである。記憶部37は、メイン制御部34またはサブ制御部35が処理に用いる各種データを記憶する。
このように、実施例1に係るストレージシステム2において、CM3は、自身が有するCA31から吸い上げたダンプデータの格納先を冗長化する。このため、CM3は、自身が有するBUD33に異常が生じた場合でも、CA31から吸い上げたダンプデータを格納できる。さらに、CM3は、選択した他のCM3が有するメイン制御部34またはサブ制御部35に異常が生じた場合、メイン制御部34またはサブ制御部35を新たに選択し、CA31のダンプデータの格納処理の実行を依頼する。このため、CM3は、冗長化した格納先に異常が生じた場合でも、CA31から吸い上げたダンプデータを格納できる。
実施例1では、異常が発生したCA31と接続するメイン制御部34が、ダンプデータの吸い上げ処理を実行するとともに他の制御部にダンプデータの吸い上げ処理を依頼する場合について説明した。ところで、異常が発生したCAと接続するメイン制御部34において、I/O負荷が高い場合がある。このような場合、メイン制御部34は、吸い上げたダンプデータを最後までBUD33に格納することができない可能性がある。このようなことから、あるCAに異常が発生した場合、I/O負荷の低いメイン制御部34あるいはサブ制御部35をストレージシステム内から複数選択し、選択した複数のメイン制御部あるいはサブ制御部に格納処理を実行させてもよいものである。
そこで、実施例2では、ストレージシステム内に設定したマスターCMが、CAに異常が発生した場合、I/O負荷の低いメイン制御部あるいはサブ制御部を複数選択し、選択した複数のメイン制御部あるいはサブ制御部に格納処理を実行させる例を説明する。
[実施例2に係るストレージシステムの構成]
図2は、実施例2に係るストレージシステム2Aの構成を示す機能ブロック図である。図2に示すように、ストレージシステム2Aは、CM3Aと、CM3Bと、ディスク4と、FRT5と、BRT6と、DE7とを有する。また、ストレージシステム2Aは、上位装置であるホストコンピュータ1と接続する。なお、実施例2に係るストレージシステム2Aにおいて、図1に示したストレージシステム2の構成と同様の機能を有する各部については、同一の符号を付与し、詳細な説明を省略する。また、図2に示す例では、ストレージシステム2Aが有するCMの数はCM3Aが1であり、CM3Bが7であり、計8とするが、3以上であれば図2に示した数に限定されるものではない。なお、7つのCM3Bのうち4つのみを図示する。また、ストレージシステム2Aが有するディスク4の数は、図2に示した数に限定されるものではない。
ここで、例えば、CM3AをマスターCMとし、CM3BをスレーブCMとする。なお、マスターCMとは、CAに異常が発生した場合、格納処理の実行を依頼するメイン制御部あるいはサブ制御部をストレージシステム2A内から複数選択する役割を果たすCMである。また、説明の便宜上、CM3AをCM#0と適宜記載する。また、CM3Bそれぞれを区別する場合には、図2に示すように、CM#1、CM#5、CM#6およびCM#7と適宜記載する。
[マスターCMの機能構成]
CM3Aは、ディスク4へのデータの入出力を制御する装置であり、複数のCA31とIOC32とBUD33とメイン制御部34Aとサブ制御部35AとCM間通信ドライバ36と記憶部37Aとを有する。なお、実施例2に係るCM3Aにおいて、図1に示したCM3の構成と同様の機能を有する各部については、同一の符号を付与し、詳細な説明を省略する。また、CM3Aが有する制御部の数は、図2に示した数に限定されるものではない。例えば、CM3Aは、制御部を一つ有するようにしてもよい。
メイン制御部34Aは、自己のCM3Aにおける処理を分散して実行する場合のメインの制御部であり、吸い上げ処理部51と、吸い上げ先決定部52と、情報取得部53とを有する。なお、以下では、このメイン制御部34Aは、CPUであるものとして説明するが、メイン制御部34Aは、MPUなどの電子回路であってもよい。また、メイン制御部34Aに含まれる各機能部は、例えば、CM3Aを制御するCFWによってそれぞれ実現される。
吸い上げ処理部51は、自制御部と接続するCA31の異常を検知すると、異常を検知したCA31のダンプデータの吸い上げ先をマスターCM3Aの吸い上げ先決定部52に決定させる。例えば、吸い上げ処理部51は、マスターCM3Aの吸い上げ先決定部52に対し、CM間通信ドライバ36を介して、吸い上げ先を取得したい旨の要求を送信する。このとき、吸い上げ処理部51は、ダンプデータのサイズをマスターCM3Aの吸い上げ先決定部52に転送する。
そして、吸い上げ処理部51は、マスターCM3Aの吸い上げ先決定部52に決定させた吸い上げ先に対して、異常を検知したCA31のダンプデータの吸い上げを依頼する。
また、吸い上げ処理部51は、他の吸い上げ処理部51からダンプデータの吸い上げを依頼された場合、異常が発生したCA31のダンプデータの吸い上げ処理を実行する。例えば、吸い上げ処理部51は、異常が発生したCA31のダンプデータを取得し、自身と接続する記憶部37Aに保持させる。そして、吸い上げ処理部51は、記憶部37Aに保持させたダンプデータを圧縮し、圧縮したダンプデータをBUD33に格納させる。
また、吸い上げ処理部51は、格納処理の実行を依頼する制御部のいずれかに異常が生じた場合、CA31のダンプデータの新たな吸い上げ先をマスターCM3Aの吸い上げ先決定部52に決定させる。そして、吸い上げ処理部51は、マスターCM3Aの吸い上げ先決定部52に決定させた新たな吸い上げ先に対して、異常を検知したCA31のダンプデータの吸い上げを依頼する。
また、吸い上げ処理部51は、格納処理の実行を依頼する制御部のいずれかに異常が生じた場合、正常な制御部により格納されるダンプデータのうち、新たに選択された制御部により格納されていないダンプデータを、新たに選択された制御部に格納させる。なお、この正常な制御部により格納されるダンプデータのうち、新たに選択された制御部により格納されていないダンプデータを、新たに選択された制御部に格納させる処理をコピー処理と称する。
吸い上げ先決定部52は、メイン制御部34A、メイン制御部34Bまたはサブ制御部35Aの吸い上げ処理部51から吸い上げ先の決定を依頼された場合、以下の処理を実行する。すなわち、吸い上げ先決定部52は、ダンプデータの格納処理の時間が所定の時間より短く、且つI/Oコマンドの数から算出される格納処理の時間が短いものから順に、格納処理の実行を依頼する制御部を複数選択する。
例えば、吸い上げ先決定部52は、異常が検知されたCA31のダンプデータの吸い上げ時間が所定の規定時間より短い制御部に吸い上げ先の候補を絞る。さらに、吸い上げ先決定部52は、絞った吸い上げ先の候補のうち、処理中のI/Oコマンドの数から換算される処理時間が短い制御部から順に吸い上げ先を2つ決定する。
吸い上げ先決定部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は、各制御部の使用率を各CMのCPU使用率情報372から取得する。そして、吸い上げ先決定部52は、算出した各制御部のCAダンプ吸い上げ時間を用いて、各制御部の使用率に対応したダンプデータの吸い上げ処理に要する予測時間を「CAダンプ吸い上げ実行時間」として算出する。ここで、吸い上げ先決定部52は、「CAダンプ吸い上げ実行時間」を、以下の式(2)に基づいて算出する。
「CAダンプ吸い上げ実行時間」=(CAダンプ吸い上げ時間)÷{1−(制御部の使用率)}・・・式(2)
そして、吸い上げ先決定部52は、算出した各制御部の「CAダンプ吸い上げ実行時間」を吸い上げ制御テーブル371に格納する。そして、吸い上げ先決定部52は、吸い上げ制御テーブル371に記憶した各制御部の「CAダンプ吸い上げ実行時間」と吸い上げに許される規定時間とを比較し、規定時間内に吸い上げが完了可能な吸い上げ先の候補を絞る。ここで、吸い上げ先決定部52は、「実行中フラグ」がオンではない制御部を吸い上げ先の候補に選択する。
次に、吸い上げ先決定部52が吸い上げ可能と予測した吸い上げ先の候補のうち、入出力処理時間が最短の制御部を決定する処理について説明する。例えば、吸い上げ先決定部52は、各制御部で処理中のI/Oコマンドの数を各CMのコマンド数情報373から取得する。そして、吸い上げ先決定部52は、取得した制御部毎のI/Oコマンド数から換算される制御部毎の処理時間である「I/O処理時間」を算出する。吸い上げ先決定部52は、CM間通信を用いないストレートアクセスおよびCM間通信を用いるクロスアクセスの各I/Oコマンドの数から、以下の式(3)に基づいて、各制御部の「I/O処理時間」を算出する。
「I/O処理時間」=(クロスアクセスのI/Oコマンド数)×(クロスアクセスのI/Oコマンド処理時間)+(ストレートアクセスのI/Oコマンド数)×(ストレートアクセスのI/Oコマンド処理時間)・・・式(3)
ここで、クロスアクセスのI/Oコマンド数とは、クロスアクセスについて処理中のI/Oコマンドの数を示す。クロスアクセスのI/Oコマンド数には、CM間通信によって送信されるI/Oコマンドの数だけでなく、CM間通信によって受信されるI/Oコマンドの数も含まれる。クロスアクセスのI/Oコマンドの処理時間とは、1個のクロスアクセスのI/Oコマンドが処理する場合の処理時間を示す。ストレートアクセスのI/Oコマンド数とは、ストレートアクセスについて処理中のI/Oコマンドの数を示す。ストレートアクセスのI/Oコマンド処理時間とは、1個のストレートアクセスのI/Oコマンドが処理する場合の処理時間を示す。
そして、吸い上げ先決定部52は、算出した各制御部のI/O処理時間を吸い上げ制御テーブル371に格納する。そして、吸い上げ先決定部52は、先行して絞った吸い上げ先の候補のうち、吸い上げ制御テーブル371に記憶した各制御部のI/O処理時間が短い制御部から順に吸い上げ先を2つ決定する。そして、吸い上げ先決定部52は、決定した吸い上げ先を、要求元のCMに通知する。この結果、要求元のCMは、異常を検知したCA31のダンプデータの吸い上げを、決定された吸い上げ先に依頼できる。
なお、吸い上げ先決定部52は、異常を検知したCA31のダンプデータの吸い上げ時間について、吸い上げに許される規定時間より短い制御部が1個も存在しない場合がある。かかる場合、吸い上げ先決定部52は、I/O処理時間が最も短い制御部に吸い上げ先を決定するようにすれば良い。これにより、吸い上げ先決定部52は、決定した吸い上げ先で吸い上げに許される規定時間までダンプデータを吸い上げさせることができ、吸い上げられたダンプデータを用いて異常に関する調査を行わせることが可能となる。
また、吸い上げ先決定部52は、選択した制御部のいずれかに異常が生じた場合、制御部を新たに選択し、新たに選択した制御部に、CA31のダンプデータの格納処理の実行を依頼する。なお、ここで、吸い上げ先決定部52は、異常が検知されたCA31のダンプデータの吸い上げ時間が所定の規定時間より短い制御部に吸い上げ先の候補を絞る。さらに、吸い上げ先決定部52は、絞った吸い上げ先の候補のうち、処理中のI/Oコマンドの数から換算される処理時間が短い最短となる制御部を新たな吸い上げ先に決定する。
情報取得部53は、制御部の使用率を取得し、取得した値を後述する記憶部37Aが記憶するCPU使用率情報372に記憶させる。また、情報取得部53は、I/Oコマンド数を取得し、取得した値を後述する記憶部37Aが記憶するコマンド数情報373に記憶させる。
サブ制御部35Aは、自己のCM3Aにおける処理を分散して実行する場合のサブの制御部であり、吸い上げ処理部51と、情報取得部53とを有する。なお、以下では、このサブ制御部35Aは、CPUであるものとして説明するが、サブ制御部35Aは、MPUなどの電子回路であってもよい。また、サブ制御部35Aに含まれる各機能部は、例えば、CM3Aを制御するCFWによってそれぞれ実現される。
記憶部37Aは、メイン制御部34Aまたはサブ制御部35Aが処理に用いる各種データを記憶する。例えば、記憶部37Aは、吸い上げ制御テーブル371と、CPU使用率情報372と、コマンド数情報373とを記憶する。
吸い上げ制御テーブル371は、制御部毎に、吸い上げ処理にかかる予測時間や処理中の入出力コマンドの数から換算される処理時間を対応付けて記憶する。かかる吸い上げ制御テーブル371は、例えば吸い上げ先決定部52により作成され、吸い上げ先を決定する場合に用いられる。なお、吸い上げ制御テーブル371の詳細は、後述する。
CPU使用率情報372は、自CM内の各制御部の使用率を含む情報を管理する。コマンド数情報373は、自CM内の各制御部の処理中の入出力コマンドの数を含む情報を管理する。
[スレーブCMの機能構成]
CM3Bは、ディスク4へのデータの入出力を制御する装置であり、複数のCA31とIOC32とBUD33とメイン制御部34Bとサブ制御部35AとCM間通信ドライバ36と記憶部37Bとを有する。なお、実施例2に係るCM3Bにおいて、図2に示したCM3Aの構成と同様の機能を有する各部については、同一の符号を付与し、詳細な説明を省略する。また、CM3Bが有する制御部の数は、図2に示した数に限定されるものではない。例えば、CM3Bは、制御部を一つ有するようにしてもよい。
メイン制御部34Bは、自己のCM3Bにおける処理を分散して実行する場合のサブの制御部であり、吸い上げ処理部51と、情報取得部53とを有する。なお、以下では、このメイン制御部34Bは、CPUであるものとして説明するが、メイン制御部34Bは、MPUなどの電子回路であってもよい。また、メイン制御部34Bに含まれる各機能部は、例えば、CM3Bを制御するCFWによってそれぞれ実現される。
記憶部37Bは、メイン制御部34Bまたはサブ制御部35Aが処理に用いる各種データを記憶する。例えば、記憶部37Bは、CPU使用率情報372と、コマンド数情報373とを記憶する。
[吸い上げ制御テーブルのデータ構造]
次に、吸い上げ制御テーブル371のデータ構造について、図3を参照して説明する。図3は、実施例2に係る吸い上げ制御テーブルのデータ構造の一例を示す図である。図3に示すように、吸い上げ制御テーブル371は、実行中フラグ371b、吸い上げ対象CA371c、CAダンプ吸い上げ時間371d、CPU使用率371eおよびCAダンプ吸い上げ実行時間371fをCPU371aに対応付けて記憶する。さらに、吸い上げ制御テーブル371は、I/Oコマンド数371gおよびI/O処理時間371hをCPU371aに対応付けて記憶する。
CPU371aは、制御部をCPUとした場合の各制御部に対応したCPUを示す。実行中フラグ371bは、吸い上げ処理を実行中であるか否かを示すフラグである。例えば、実行中である場合「ON」が設定され、実行中でない場合「OFF」が設定される。吸い上げ対象CA371cは、吸い上げ処理を実行中である場合に吸い上げ対象のCAを示す。CAダンプ吸い上げ時間371dは、CAのダンプデータのサイズから各CPUがダンプデータの吸い上げ処理にかかる予測時間を示す。CPU使用率371eは、各CPUの使用率を示す。CAダンプ吸い上げ実行時間371fは、各CPUの使用率に対応した吸い上げ処理を実行する予測時間を示す。I/Oコマンド数371gは、各CPUで処理中のI/Oコマンドの数を示す。例えば、クロスアクセスおよびストレートアクセスのそれぞれのI/Oコマンド数が設定される。I/O処理時間371hは、I/Oコマンド数から換算されるCPU毎の処理時間を示す。
吸い上げ制御テーブル371の一例として、CPU371aが「CM#0のメインCPU」である場合、実行中フラグ371bとして「OFF」、吸い上げ対象CA371cとして「−」、CAダンプ吸い上げ時間371dとして「50」秒を記憶している。さらに、CPU使用率371eを「0.8」、CAダンプ吸い上げ実行時間371fとして「250」秒、I/Oコマンド数371gとして「クロス100/ストレート100」、I/O処理時間371hとして「2」秒を記憶している。また、CPU371aが「CM#7のサブCPU」である場合、吸い上げ対象CA371cとして「CM#1−CA#0」を記憶している。すなわち、図3の例では、CM#7のサブCPUがCM#1にあるCA#0のダンプデータの吸い上げを実行している。
[ストレージシステムによる処理動作]
次に、図4A〜図4Cおよび図5A〜5Eを用いて、ストレージシステムによる処理動作を説明する。ここでは、図4A〜図4Cを用いて、ダンプデータの格納処理の処理動作を説明し、図5A〜5Eを用いて、コピー処理の処理動作を説明する。
(ダンプデータ格納処理)
図4A〜図4Cは、ダンプデータの格納処理の処理動作の一例を示す図である。図4Aに示すように、CM#1のCA#1にデグレードが発生した場合、マスターCMであるCM#0において、吸い上げ先決定部52は、制御部をそれぞれ別のCMから2つ選択する。図4Aに示す例では、吸い上げ先決定部52は、CM#5のメイン制御部34Bと、CM#6のメイン制御部34Bとを選択する場合を示す。
CM#1のメイン制御部34Bにおいて、吸い上げ処理部51は、CM#5のメイン制御部34B、CM#6のメイン制御部34Bに同じダンプデータを転送する。また、CM#5のメイン制御部34Bと、CM#6のメイン制御部34Bとは、それぞれがダンプデータの圧縮とダンプデータのBUDへの格納とをパラレルに実行する。
これにより、CAダンプ吸い上げ中に一方の格納CMの制御部にデグレードが発生した場合でも、他方のCMの制御部は、CAダンプを採取することが可能となる。例えば、図4Bに示すように、処理中に格納CM#5がデグレードした場合でも、CM#6のメイン制御部34Bは、CM#1からCAダンプを採取する。
また、CAダンプの吸い上げ処理中にCM#5がデグレードした場合、マスターCMであるCM#0のメイン制御部34Aにおいて、吸い上げ先決定部52は、新たにCMの制御部を検索し、格納先として割り当てる。図4Cに示す例では、吸い上げ先決定部52は、CM#7のメイン制御部34Bを格納先として割り当てる。
そして、CM#1のメイン制御部34Bにおいて、吸い上げ処理部51は、CM#6のメイン制御部34B、CM#7のメイン制御部34Bへダンプデータの転送を再開する。なお、CAダンプデータは先頭からシーケンシャルに転送されるため、CM#7のメイン制御部34Bにはダンプデータが途中から転送されてくる。このため、CM#7のBUD33には先頭が欠けたCAダンプデータが格納される。
(コピー処理)
図5Aは、CAダンプの格納先であるCM#5にデグレードが発生し、CM#7を新たな格納先に選択した後に各CMのBUD33に格納されるダンプデータの一例を示す図である。図5Bは、CM#6のBUD33からCM#7のBUD33にダンプデータをコピーする処理の一例を示す図である。図5Cは、CM#6のBUD33からダンプデータがコピーされた後に、CM#7のBUD33に格納されるダンプデータの一例を示す図である。図5Dは、CAダンプの格納先であるCM#5のデグレードが発生した後、更に、CAダンプの格納先であるCM#6のデグレードが発生する場合の一例を示す図である。図5Eは、CM#5のデグレードが発生した後に、CM#6にもデグレードが発生した場合、CM#7のBUD33に格納されるダンプデータの一例を示す図である。
図5Aに示すように、CM#5のBUD33には、CM#5のデグレードが発生するまでに吸い上げられたダンプデータ100aが格納される。また、CM#6のBUD33には、CM#5のデグレードが発生するまでに吸い上げられたダンプデータ100bと、CM#5のデグレードが発生後に吸い上げられたダンプデータ100cとが格納される。また、CM#7のBUD33には、CM#5のデグレードが発生後に吸い上げられたダンプデータ100dが格納される。このように、CM#7のBUD33には、CM#5のデグレードが発生するまでに吸い上げられたダンプデータが欠けて格納される。
このため、図5Bに示すように、ストレージシステム2Aでは、CM#6のメイン制御部34Bは、ダンプデータの吸い上げ処理と並行して、BUDに格納済みのダンプデータをCM#7のメイン制御部34Bに転送する。CM#6のBUD33に格納されたCAダンプの先頭は圧縮されておりサイズも小さく、CAダンプデータ吸い上げよりも短時間で完了させることが可能である。言い換えると、格納済みのダンプデータをコピーする時間は、CAダンプを格納する時間よりも短い。なお、CAダンプ格納時間が100ms/MBオーダーであるのに対し、格納ダンプのコピー処理は1ms/MBオーダーである。
この結果、図5Cに示すように、CM#7のBUD33には、CM#6のBUD33に格納されるダンプデータ100bと、CM#5のデグレードが発生後に吸い上げられたダンプデータ100dとが格納される。このように、CM#7にCAダンプデータを格納させることができれば、さらにCM#6またはCM#7がデグレードしてもCAダンプを採取することが可能となる。
図5Dに示す例では、CM#5がデグレードした後、さらにCM#6がデグレードする場合を示す。この場合、ストレージシステム2Aは、CM#7にCAダンプデータを格納させる。さらに、図5Dに示す例において、CM#7にコピーさせる前にCM#6がデグレードしたとしても、ストレージシステム2Aは、CM#7のBUD33に、可能な限り大きなサイズのダンプデータを残すことができる。
例えば図5Eに示すように、ストレージシステム2Aにおいて、CM#7のBUD33は、CM#6のデグレードが発生後も、CAから吸い上げられるダンプデータ100dとダンプデータ100eとをBUD33に格納する。
[ストレージシステムによる処理の処理手順]
次に、図6A〜図6Bおよび図7A〜図7Bを用いて、ストレージシステムによる処理の処理手順を説明する。図6A〜図6Bを用いて、ストレージシステムによるCAダンプの吸い上げ処理の処理手順を説明し、図7A〜図7Bを用いて、吸い上げ先決定部52による吸い上げ先決定処理の手順を説明する。なお、以下の説明では、各CMが有するメイン制御部のことをCPU#0と記載し、各CMが有するサブ制御部のことをCPU#1と記載する。
(ストレージシステムによるCAダンプの吸い上げ処理)
図6Aおよび図6Bは、ストレージシステム2AによるCAダンプの吸い上げ処理を示すシーケンス図である。なお、図6Aおよび図6Bは、CM#1のCPU#1において、CA#1のデグレードが発生し、マスターCMであるCM#0のCPU#0が、CM#5のCPU#1とCM#6のCPU#0とを格納先として選択する場合を示す。さらに、図6Aおよび図6Bは、CM#5のデグレードが発生し、マスターCMであるCM#0のCPU#0が、CM#7のCPU#1を新たな格納先として選択する場合を示す。
図6Aに示すように、CM#1のCPU#0において、CA#1のデグレードが発生した場合、CM#1のCPU#0は、CA#1のダンプデータのサイズを取得し(ステップS101)、吸い上げ先の取得をマスターCMに要求する(ステップS102)。
CM#0のCPU#0は、CPU負荷とI/Oコマンド数とをストレージシステム2内の各CPUから取得する(ステップS103)。そして、CM#0のCPU#0は、吸い上げ制御テーブルを更新し(ステップS104)、格納先CPUを2つ選択し、CM#1のCPU#0に通知する(ステップS105)。なお、ここでは、CM#0のCPU#0は、CM#5のCPU#1とCM#6のCPU#0とを格納先CPUとして選択するものとして説明する。
CM#1のCPU#0は、CA#1のダンプデータの格納をCM#5のCPU#1とCM#6のCPU#0とに依頼する(ステップS106)。続いて、CM#1のCPU#0は、CA#1のダンプデータを取得し(ステップS107)、取得したCA#1のダンプデータをCM#5のCPU#1とCM#6のCPU#0とに転送する(ステップS108)。
CM#5のCPU#1とCM#6のCPU#0とは、それぞれ、CM#1のCPU#0から受信したCA#1のダンプデータを圧縮し、BUDに格納する(ステップS109、ステップS110)。また、CM#5のCPU#1とCM#6のCPU#0とは、それぞれ、格納が完了したことをCM#1のCPU#0に通知する(ステップS111、ステップS112)。
ここで、図6Aは、格納が完了したことを通知されたCM#1のCPU#0が、CA#1のダンプデータに続きがあると判定する場合を示す。CM#1のCPU#0は、CA#1のダンプデータを取得し(ステップS113)、取得したCA#1のダンプデータをCM#5のCPU#1とCM#6のCPU#0とに転送する(ステップS114)。
CM#6のCPU#0は、CM#1のCPU#0から受信したCA#1のダンプデータを圧縮し、BUDに格納する(ステップS115)。また、CM#6のCPU#0は、格納が完了したことをCM#1のCPU#0に通知する(ステップS116)。また、CM#5のデグレードが発生する。このため、CM#5のCPU#1は、CM#1のCPU#0にデグレードを通知する(ステップS117)。
CM#1のCPU#0は、吸い上げ先の取得をマスターCMに要求する(ステップS118)。CM#0のCPU#0は、吸い上げ制御テーブルを更新し(ステップS119)、新たな格納先CPUを選択し、CM#1のCPU#0に通知する(ステップS120)。なお、ここでは、CM#0のCPU#0は、CM#7のCPU#1を新たな格納先CPUとして選択するものとして説明する。
続いて、図6Bに示すように、CM#1のCPU#0は、CA#1のダンプデータの格納をCM#7のCPU#1に依頼する(ステップS121)。続いて、CM#1のCPU#0は、CA#1のダンプデータのコピーをCM#6のCPU#0に依頼する(ステップS122)。すなわち、CM#1のCPU#0は、CM#6のCPU#0が格納したCA#1のダンプデータをCM#7のCPU#1に転送し、CM#7のCPU#1に格納させる。
CM#6のCPU#0は、CM#7のCPU#1にコピーデータを転送する(ステップS123)。そして、CM#7のCPU#1は、受信したコピーデータをBUDに格納する(ステップS124)。CM#6のCPU#0は、コピーが終了したか否かを判定し(ステップS125)、コピーが終了したと判定する場合(ステップS125、Yes)、コピー終了をCM#7のCPU#1に通知する(ステップS126)。なお、CM#6のCPU#0は、コピーが終了していないと判定する場合(ステップS125、No)、ステップS123に移行する。
CM#1のCPU#0は、CA#1のダンプデータを取得し(ステップS127)、取得したCA#1のダンプデータをCM#6のCPU#0とCM#7のCPU#1とに転送する(ステップS128)。
CM#6のCPU#0とCM#7のCPU#1とは、それぞれ、CM#1のCPU#0から受信したCA#1のダンプデータを圧縮し、BUDに格納する(ステップS129、ステップS130)。また、CM#6のCPU#0とCM#7のCPU#1とは、それぞれ、格納が完了したことをCM#1のCPU#0に通知する(ステップS131、ステップS132)。
格納が完了したことを通知されたCM#1のCPU#0は、格納処理を終了するか否かを判定する(ステップS133)。言い換えると、CM#1のCPU#0は、CA#1のダンプデータに続きがあるか否かを判定する。ここで、CM#1のCPU#0は、格納処理を終了すると判定する場合(ステップS133、Yes)、吸い上げ処理の終了をCM#0のCPU#0に通知する(ステップS134)。
吸い上げ処理の終了を通知されたCM#0のCPU#0は、吸い上げ制御テーブルを更新する(ステップS135)。なお、CM#1のCPU#0は、格納処理を終了しないと判定する場合(ステップS133、No)、ステップS127に移行する。
(吸い上げ先決定処理の手順)
図7Aおよび図7Bは、実施例2に係る吸い上げ先決定処理の処理手順を示すフローチャートである。なお、吸い上げ先の対象となる各CPUには、あらかじめインデックスが振られているものとする。例えば、CM#0のメインCPUに「0」、CM#0のサブCPUに「1」、CM#1のメインCPUに「2」、CM#1のサブCPUに「3」がそれぞれ振られている。
例えば、異常が発生したCAのダンプデータのサイズを含む吸い上げ先CPU取得コマンドを受信した吸い上げ先決定部52は、ダンプデータのサイズから標準の吸い上げ時間(CAダンプ吸い上げ時間)を算出する(ステップS201)。CAダンプ吸い上げ時間は、式(1)によって算出される。そして、吸い上げ先決定部52は、算出したCAダンプ吸い上げ時間を吸い上げ制御テーブル371に格納する。
そして、吸い上げ先決定部52は、各CPUの使用率とI/Oコマンド数を各CPUから取得する(ステップS202)。各CPUの使用率は、各CMのCPU使用率情報372に記憶されている。各CPUのI/Oコマンド数は、各CMのコマンド数情報373に記憶されている。
そして、吸い上げ先決定部52は、標準の吸い上げ時間および各CPUの使用率から各CPUの吸い上げ実行時間(CAダンプ吸い上げ実行時間)を算出する(ステップS203)。CAダンプ吸い上げ実行時間は、式(2)によって算出される。そして、吸い上げ先決定部52は、算出した各CPUのCAダンプ吸い上げ実行時間を吸い上げ制御テーブル371に格納する。
さらに、吸い上げ先決定部52は、I/Oコマンド数から各CPUのI/O処理時間を算出する(ステップS204)。そして、吸い上げ先決定部52は、算出した各CPUのI/O処理時間を吸い上げ制御テーブル371に格納する。
続いて、吸い上げ先決定部52は、候補CPUを初期値(例えば、0xFF)に設定する(ステップS205)。なお、候補CPUとは、吸い上げ先CPUの候補を示す変数であり、候補となるCPUに振られたインデックスの値が設定される。また、吸い上げ先決定部52は、格納時間最短CPUを初期値(例えば、0xFF)に設定する(ステップS206)。なお、格納時間最短CPUとは、ダンプデータの格納時間が最短のCPUを示す変数であり、格納時間が最短のCPUに振られたインデックスの値が設定される。
そして、吸い上げ先決定部52は、Indexに吸い上げ先の対象となるCPUのインデックスの値0を設定し、確認CPUにIndexに設定された値を設定する(ステップS207)。なお、Indexとは、変数であり、各CPUに振られたインデックスの値が設定される。また、確認CPUとは、吸い上げ先CPUとなるか否かを確認するCPUを示す変数であり、CPUに振られたインデックスの値が設定される。
続いて、吸い上げ先決定部52は、Indexに設定された値が吸い上げ先の対象となるCPUの最大数と等しいか否かを判定する(ステップS208)。
一方、Indexに設定された値がCPUの最大数と等しくないと判定した場合(ステップS208、No)、吸い上げ先決定部52は、ステップS214に移行する。
ステップS214では、吸い上げ先決定部52は、吸い上げ制御テーブル371に記憶された実行中フラグに基づいて、確認CPUの実行中フラグがONであるか否かを判定する(ステップS214)。確認CPUの実行中フラグがONであると判定した場合(ステップS214、Yes)、吸い上げ先決定部52は、次のCPUを確認すべく、ステップS222に移行する。
確認CPUの実行中フラグがONでないと判定した場合(ステップS214、No)、吸い上げ先決定部52は、格納時間最短CPUが初期値であるか否かを判定する(ステップS215)。格納時間最短CPUが初期値であると判定した場合(ステップS215、Yes)、吸い上げ先決定部52は、格納時間最短CPUに確認CPUを設定すべく、ステップS217に移行する。
格納時間最短CPUが初期値でないと判定した場合(ステップS215、No)、吸い上げ先決定部52は、確認CPUのCA吸い上げ実行時間が格納時間最短CPUのCA吸い上げ実行時間以下であるか否かを判定する(ステップS216)。確認CPUのCA吸い上げ実行時間が格納時間最短CPUのCA吸い上げ実行時間以下であると判定した場合(ステップS216、Yes)、吸い上げ先決定部52は、格納時間最短CPUに確認CPUを設定すべく、ステップS217に移行する。
ステップS217では、吸い上げ先決定部52は、格納時間最短CPUに確認CPUを設定する(ステップS217)。すなわち、吸い上げ先決定部52は、確認したCPUの中で格納時間が最短のCPUとして現在確認中の確認CPUを設定する。
一方、確認CPUが格納時間最短CPUのCA吸い上げ実行時間以下でない場合(ステップS216、No)、吸い上げ先決定部52は、確認CPUのCA吸い上げ実行時間が吸い上げ完了規定時間以下であるか否かを判定する(ステップS218)。ここで、吸い上げ完了規定時間とは、あらかじめ定められた吸い上げに許される規定時間を示す。確認CPUのCA吸い上げ実行時間が吸い上げ完了規定時間より大きいと判定した場合(ステップS218、No)、吸い上げ先決定部52は、次のCPUを確認すべく、ステップS222に移行する。
確認CPUのCA吸い上げ実行時間が吸い上げ完了規定時間以下であると判定した場合(ステップS218、Yes)、吸い上げ先決定部52は、候補CPUが初期値であるか否かを判定する(ステップS219)。候補CPUが初期値でないと判定した場合(ステップS219、No)、吸い上げ先決定部52は、確認CPUのI/O処理時間が候補CPUのI/O処理時間以下であるか否かを判定する(ステップS220)。ここで、確認CPUのI/O処理時間が候補CPUのI/O処理時間より大きいと判定した場合(ステップS220、No)、吸い上げ先決定部52は、次のCPUを確認すべく、ステップS222に移行する。
候補CPUが初期値である場合(ステップS219、Yes)または確認CPUのI/O処理時間が候補CPUのI/O処理時間以下である場合(ステップS220、Yes)、吸い上げ先決定部52は、ステップS221に移行する。ステップS221では、吸い上げ先決定部52は、候補CPUに確認CPUを設定する(ステップS221)。すなわち、吸い上げ先決定部52は、確認したCPUの中で、CA吸い上げ実行時間が吸い上げ完了規定時間より短く、且つI/O処理時間が最短のCPUとして、現在確認中の確認CPUを設定する。
ステップS222では、吸い上げ先決定部52は、Indexを1加算し、確認CPUをIndexに更新する(ステップS222)。そして、吸い上げ先決定部52は、ステップS208に移行する。
続いて、ステップS208では、Indexに設定された値が吸い上げ先の対象となるCPUの最大数と等しいと判定した場合(ステップS208、Yes)、吸い上げ先決定部52は、候補CPUが初期値であるか否かを判定する(ステップS209)。候補CPUが初期値でないと判定した場合(ステップS209、No)、吸い上げ先決定部52は、候補CPUを吸い上げ先のCPUに決定し(ステップS210)、吸い上げ先決定処理を終了する。
候補CPUが初期値であると判定した場合(ステップS209、Yes)、吸い上げ先決定部52は、格納時間最短CPUが初期値であるか否かを判定する(ステップS211)。つまり、CA吸い上げ実行時間が吸い上げ完了規定時間より短くなるCPUが1個も存在しなかった場合である。ここで、格納時間最短CPUが初期値でないと判定した場合(ステップS211、No)、吸い上げ先決定部52は、格納時間最短CPUを吸い上げ先のCPUに決定し(ステップS212)、吸い上げ先決定処理を終了する。
一方、格納時間最短CPUが初期値であると判定した場合(ステップS211、Yes)、吸い上げ先決定部52は、吸い上げ先のCPUとして候補となるCPUは存在しないと決定し(ステップS213)、吸い上げ先決定処理を終了する。
[実施例2の効果]
上述してきたように、実施例2に係るストレージシステム2Aは、各CPUで処理しているI/Oコマンド数を利用することにより、I/Oコマンドを最も処理していないCPUを選択して、CAダンプの吸い上げを実施する。すなわち、実施例2に係るストレージシステム2Aは、吸い上げCMと格納CMとを分離させる。この結果、実施例2に係るストレージシステム2Aは、CAのダンプデータを吸い上げる処理がストレージシステム2Aの性能に及ぼす影響を小さくすることが可能となる。
また、実施例2に係るストレージシステム2Aは、吸い上げCMと格納CMとを分離させるので、CAダンプ吸い上げ処理に絡む装置部品が多くなる。ここで、実施例2に係るストレージシステム2Aは、CAダンプの吸い上げを実施する制御装置を二重化することで、CAダンプ吸い上げ処理中に一方の制御装置に異常が発生した場合であっても、確実にダンプデータを記録できる。言い換えると、実施例2に係るストレージシステム2Aは、吸い上げCMと格納CMとを分離させることによってCAダンプ吸い上げ処理に絡む装置部品が多くなるが、確実にダンプデータを記録できる。なお、CAと当該CAが存在するCM間通信を行うパスは1パスであり、各CM間通信を行うパスは4パス存在する。従って、吸い上げCM−CPUと格納CM−CPUが分離している制御の場合でも、格納CM−CPUとして2つのCM−CPUを指定することが可能である。
また、実施例2に係るストレージシステム2Aは、吸い上げを実施する制御装置にデグレードが発生した場合、新たな格納先を選択し、選択した格納先に吸い上げを実施させる。これにより、実施例2に係るストレージシステム2Aは、CAダンプ吸い上げ処理中に格納CMのデグレードが発生した場合でも、CAダンプデータを採取することが可能である。また、実施例2に係るストレージシステム2Aは、複数の格納CMがデグレードしても、より多くのダンプデータを残すことができる。
なお、実施例2に係るストレージシステム2Aにおいて、CM3Bにも吸い上げ先決定部52を備えるようにしてもよい。なお、この場合、CM3Bの記憶部37Bには、吸い上げ制御テーブル371が保持される。
ところで、本発明は、上述した実施例以外にも、種々の異なる形態にて実施されてよい。そこで、実施例3では、本発明に含まれる他の実施例について説明する。
(システム構成等)
本実施例において説明した各処理のうち自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文章中や図面中で示した処理手順、制御手順、具体的名称については、特記する場合を除いて任意に変更することができる。
また、実施例1に係るストレージシステム2において、メイン制御部34は、CA31に異常が発生した場合、ストレージシステム2内の制御部の使用率と、I/Oコマンド数とに基づいて、CA31から吸い上げたダンプデータの格納先を選択するようにしてもよい。
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理の順番を変更してもよい。また、図示した各構成部は、機能概念的なものであり、必ずしも物理的に図示のごとく構成されていることを要しない。さらに、各装置にて行われる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)データを記憶する記憶装置へのデータの入出力を制御する複数の制御装置を備えたストレージシステムにおいて、
各制御装置は、
前記記憶装置へのデータの入出力に関わる命令が入力されるインタフェース部と、前記インタフェース部から前記命令を受け取って実行する演算処理部とを有し、
各演算処理部は、
前記インタフェース部に異常が生じた場合、演算処理部を複数選択して前記選択された演算処理部に当該インタフェース部のダンプデータの格納処理の実行を依頼する
ことを特徴とするストレージシステム。
(付記2)各演算処理部は、
前記インタフェース部に異常が生じた場合、複数選択する演算処理装置の一つに自演算処理部を選択する
ことを特徴とする付記1に記載のストレージシステム。
(付記3)各演算処理部は、更に、
格納処理の実行を依頼した他の演算処理部のいずれかが格納処理を実行できなくなる場合、演算処理部を新たに選択し、前記インタフェース部のダンプデータの格納処理の実行を前記新たに選択された演算処理部に依頼することを特徴とする付記1または2に記載のストレージシステム。
(付記4)各演算処理部は、更に、
格納処理の実行を依頼した他の演算処理部のいずれかが格納処理を実行できなくなる場合、正常な前記演算処理部により格納されるダンプデータのうち、新たに選択された前記演算処理部により格納されていないダンプデータを、該新たに選択された演算処理装置に格納させることを特徴とする付記3に記載のストレージシステム。
(付記5)各演算処理部は、前記複数の制御装置が有する演算処理部の使用率に基づいて算出するダンプデータの格納処理の時間が所定の時間より短く、且つ前記命令の数から算出される格納処理の時間が短いものから順に、格納処理の実行を依頼する演算処理部を選択することを特徴とする付記1−4のいずれか一つに記載のストレージシステム。
(付記6)記憶装置へのデータの入出力に関わる命令が入力されるインタフェース部と、該インタフェース部から前記命令を受け取って実行する演算処理部とを備えた制御装置を複数有するストレージシステムの制御方法において、
各演算処理部が、
前記インタフェース部に異常が生じた場合、演算処理部を複数選択して前記選択された演算処理部に当該インタフェース部のダンプデータの格納処理の実行を依頼する
処理を含んだことを特徴とするストレージシステムの制御方法。
(付記7)各演算処理部が、
前記インタフェース部に異常が生じた場合、複数選択する演算処理装置の一つに自演算処理部を選択する
ことを特徴とする付記6に記載のストレージシステムの制御方法。
(付記8)各演算処理部が、更に、
格納処理の実行を依頼した他の演算処理部のいずれかが格納処理を実行できなくなる場合、演算処理部を新たに選択し、前記インタフェース部のダンプデータの格納処理の実行を前記新たに選択された演算処理部に依頼することを特徴とする付記6または7に記載のストレージシステムの制御方法。
(付記9)各演算処理部が、更に、
格納処理の実行を依頼した他の演算処理部のいずれかが格納処理を実行できなくなる場合、正常な前記演算処理部により格納されるダンプデータのうち、新たに選択された前記演算処理部により格納されていないダンプデータを、該新たに選択された演算処理装置に格納させることを特徴とする付記8に記載のストレージシステムの制御方法。
(付記10)各演算処理部が、前記複数の制御装置が有する演算処理部の使用率に基づいて算出するダンプデータの格納処理の時間が所定の時間より短く、且つ前記命令の数から算出される格納処理の時間が短いものから順に、格納処理の実行を依頼する演算処理部を選択することを特徴とする付記6−9のいずれか一つに記載のストレージシステムの制御方法。
1 ホストコンピュータ
2、2A ストレージシステム
3、3A、3B CM
4 ディスク
5 FRT
6 BRT
7 DE
31 CA
32 IOC
33 BUD
34、34A、34B メイン制御部
35、35A サブ制御部
36 CM間通信ドライバ
37、37A、37B 記憶部
51 吸い上げ処理部
52 吸い上げ先決定部
53 情報取得部
371 吸い上げ制御テーブル
372 CPU使用率情報
373 コマンド数情報

Claims (6)

  1. データを記憶する記憶装置へのデータの入出力を制御する複数のコントローラモジュールを備えたストレージシステムにおいて、
    コントローラモジュールは、
    前記記憶装置へのデータの入出力に関わる命令が入力されるチャネルアダプタと、前記チャネルアダプタから前記命令を受け取って実行する制御部とを有し、
    制御部は、
    前記チャネルアダプタに異常が生じた場合、ダンプデータの格納処理時間に基づいて制御部を複数選択して前記選択された制御部に当該チャネルアダプタのダンプデータをブート用記憶装置に格納する処理の実行を依頼する
    ことを特徴とするストレージシステム。
  2. 制御部は、更に、
    格納処理の実行を依頼した他の制御部のいずれかが格納処理を実行できなくなる場合、制御部を新たに選択し、前記チャネルアダプタのダンプデータの格納処理の実行を前記新たに選択された制御部に依頼することを特徴とする請求項に記載のストレージシステム。
  3. 制御部は、更に、
    格納処理の実行を依頼した他の制御部のいずれかが格納処理を実行できなくなる場合、正常な前記制御部により格納されるダンプデータのうち、新たに選択された前記制御部により格納されていないダンプデータを、該新たに選択された制御部に格納させることを特徴とする請求項に記載のストレージシステム。
  4. 制御部は、前記複数のコントローラモジュールが有する制御部の使用率に基づいて算出するダンプデータの格納処理の時間が所定の時間より短く、且つ前記チャネルアダプタに入力された命令の数から算出される格納処理の時間が短いものから順に、格納処理の実行を依頼する制御部を選択することを特徴とする請求項1−のいずれか一つに記載のストレージシステム。
  5. 各制御部は、
    前記チャネルアダプタに異常が生じた場合、入出力処理時間及びダンプデータの格納処理時間に基づいて制御部を複数選択することを特徴とする請求項1−3のいずれか一つに記載のストレージシステム。
  6. データを記憶する記憶装置へのデータの入出力を制御する複数のコントローラモジュールを備えたストレージシステムにおいて、
    各コントローラモジュールは、
    前記記憶装置へのデータの入出力に関わる命令が入力されるチャネルアダプタと、前記チャネルアダプタから前記命令を受け取って実行する制御部とを有し、
    各制御部は、
    前記チャネルアダプタに異常が生じた場合、入出力処理時間に基づいて制御部を複数選択して前記選択された制御部に当該チャネルアダプタのダンプデータをブート用記憶装置に格納する処理の実行を依頼する
    ことを特徴とするストレージシステム。
JP2012147887A 2012-06-29 2012-06-29 ストレージシステム Expired - Fee Related JP6035908B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012147887A JP6035908B2 (ja) 2012-06-29 2012-06-29 ストレージシステム
US13/870,508 US20140006876A1 (en) 2012-06-29 2013-04-25 Storage system and method for controlling storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012147887A JP6035908B2 (ja) 2012-06-29 2012-06-29 ストレージシステム

Publications (2)

Publication Number Publication Date
JP2014010710A JP2014010710A (ja) 2014-01-20
JP6035908B2 true JP6035908B2 (ja) 2016-11-30

Family

ID=49779556

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012147887A Expired - Fee Related JP6035908B2 (ja) 2012-06-29 2012-06-29 ストレージシステム

Country Status (2)

Country Link
US (1) US20140006876A1 (ja)
JP (1) JP6035908B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6477266B2 (ja) * 2015-06-03 2019-03-06 富士通株式会社 ダンプ管理装置、ダンプ管理プログラム及びダンプ管理方法
CN105843698A (zh) * 2016-04-22 2016-08-10 浪潮电子信息产业股份有限公司 一种自动调节bios选项值的方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0214669D0 (en) * 2002-06-26 2002-08-07 Ibm Method for maintaining data access during failure of a controller
US7085958B2 (en) * 2003-01-17 2006-08-01 International Business Machines Corporation System and method for isolating a faulty switch, storage device or SFP in a daisy-chained configuration
JP2004234555A (ja) * 2003-01-31 2004-08-19 Hitachi Ltd ストレージシステムの制御方法、ストレージシステム、及びプログラム
US7281163B2 (en) * 2004-06-22 2007-10-09 Hewlett-Packard Development Company, L.P. Management device configured to perform a data dump
JP4927339B2 (ja) * 2005-02-23 2012-05-09 株式会社日立製作所 記憶制御装置及びその制御方法
JP2006268403A (ja) * 2005-03-24 2006-10-05 Fujitsu Ltd データストレージシステム及びストレージ制御装置のログデータの等価制御方法
US7882393B2 (en) * 2007-03-28 2011-02-01 International Business Machines Corporation In-band problem log data collection between a host system and a storage system
US8448013B2 (en) * 2009-01-19 2013-05-21 International Business Machines Corporation Failure-specific data collection and recovery for enterprise storage controllers
JP5359601B2 (ja) * 2009-06-25 2013-12-04 富士通株式会社 ダンプ出力制御装置、ダンプ出力制御プログラム、ダンプ出力制御方法
JP5225515B2 (ja) * 2010-07-06 2013-07-03 三菱電機株式会社 プロセッサ装置及びプログラム

Also Published As

Publication number Publication date
JP2014010710A (ja) 2014-01-20
US20140006876A1 (en) 2014-01-02

Similar Documents

Publication Publication Date Title
US10877682B2 (en) Non-disruptive cross-protocol live data migration
US9619311B2 (en) Error identification and handling in storage area networks
US11102299B2 (en) Data processing system
US20080281959A1 (en) Managing addition and removal of nodes in a network
US8046392B2 (en) Storage system and information transfer method for the same
CN1794206A (zh) 虚拟存储结构的管理系统、信息处理设备、生成方法及存储介质
US20190155922A1 (en) Server for torus network-based distributed file system and method using the same
JP6035909B2 (ja) ストレージシステムおよびストレージシステムの制御方法
CN110865835A (zh) 配置文件更新方法、装置、计算机设备和存储介质
JP2010044635A (ja) ファイルサーバシステム及びファイルサーバシステム起動方法
WO2015072026A1 (ja) 計算機システム
CN1278254C (zh) 确定高可用性集群之活跃度的方法和系统
CN110989923A (zh) 一种分布式存储系统的部署方法及装置
JP6035908B2 (ja) ストレージシステム
EP2866136B1 (en) Storage apparatus, method of controlling storage apparatus, and storage apparatus control program
JP2005251188A (ja) 冗長パス制御装置及び冗長パス制御方法
JP6451308B2 (ja) ストレージ装置およびストレージ装置制御プログラム
JP6940761B2 (ja) 情報処理装置、仮想マシン監視プログラム、および情報処理システム
US9417942B1 (en) Event-based in-band host registration
JP2016119020A (ja) ストレージ装置、ストレージ装置の制御方法およびストレージ装置制御プログラム
JP6035905B2 (ja) ストレージシステムおよびストレージシステムの制御方法
KR101460408B1 (ko) 스토리지 시스템, 제어 장치 및 스토리지 시스템의 제어 방법
US8677363B2 (en) Method for managing, tracking and distributing job programs for processing to a plurality of execution computers
US20220374256A1 (en) Information processing system, information processing apparatus, method of controlling the same, and storage medium
JP6127754B2 (ja) プログラム、排他制御要求振り分け方法およびシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150319

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160308

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160427

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161004

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161017

R150 Certificate of patent or registration of utility model

Ref document number: 6035908

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees