JP2009009200A - ストレージシステム及びストレージシステムの制御方法 - Google Patents

ストレージシステム及びストレージシステムの制御方法 Download PDF

Info

Publication number
JP2009009200A
JP2009009200A JP2007167470A JP2007167470A JP2009009200A JP 2009009200 A JP2009009200 A JP 2009009200A JP 2007167470 A JP2007167470 A JP 2007167470A JP 2007167470 A JP2007167470 A JP 2007167470A JP 2009009200 A JP2009009200 A JP 2009009200A
Authority
JP
Japan
Prior art keywords
control unit
failure
unit
storage system
control
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.)
Granted
Application number
JP2007167470A
Other languages
English (en)
Other versions
JP4475598B2 (ja
Inventor
Masanori Takada
正法 高田
Takahito Nakamura
崇仁 中村
Kentaro Shimada
健太郎 島田
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2007167470A priority Critical patent/JP4475598B2/ja
Priority to US12/007,461 priority patent/US7809981B2/en
Publication of JP2009009200A publication Critical patent/JP2009009200A/ja
Application granted granted Critical
Publication of JP4475598B2 publication Critical patent/JP4475598B2/ja
Priority to US12/880,639 priority patent/US7958391B2/en
Priority to US13/107,163 priority patent/US8312314B2/en
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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2089Redundant storage control functionality
    • G06F11/2092Techniques of failing over between control units
    • 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/0721Error 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 within a central processing unit [CPU]
    • G06F11/0724Error 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 within a central processing unit [CPU] in a multiprocessor or a multi-core unit
    • 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
    • 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/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • G06F11/2007Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media
    • 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/079Root cause analysis, i.e. error or fault 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/0793Remedial or corrective actions

Abstract

【課題】本発明は、耐障害性に優れたストレージシステムを提供することである。
【解決手段】本発明は、複数のプロセッサを有する制御部及び他のユニットを含んで構成されるストレージシステムである。当該ストレージシステムは、制御部内のいずれかのコンポーネントに障害が発生した場合に、当該制御部の入出力パスを遮断し、当該遮断された状態において障害が発生したコンポーネントを特定し、これを無効化する。また、ストレージシステムは、当該障害が発生したコンポーネントを無効化した後、正常なコンポーネントのみで動作可能であるか否かを判断し、動作可能であると判断した場合に、当該入出力パスの遮断を解除(開放)して、再起動により、動作を再開する。
【選択図】図1

Description

本発明は、ストレージシステム及びストレージシステムの制御方法に関する。
ストレージシステムは、ホスト装置に対してデータストレージサービスを提供する装置である。ストレージシステムは、典型的には、ハードディスクドライブ等からなる複数のディスクアレイ装置とこれを制御する各種のディスクコントローラとで構成される。ディスクコントローラは、ストレージシステム全体を制御するためのプロセッサと、ホスト装置に接続するためのホストインターフェースと、ディスクアレイに接続するためのディスクインターフェースとを備え、さらに、ユーザデータをキャッシュするためのキャッシュメモリが両者のインターフェースの間に配置される。
ストレージシステムは、一般に、銀行や証券等におけるミッションクリティカルな業務に用いられることから、ユーザデータを失うことのない高い信頼性、ホスト装置に対してストレージサービスを継続する高い可用性が求められる。
ストレージシステムを構成するコンポーネントの障害は、確率的に起こりうることであり、避けることはできず、従って、システム設計の観点から耐障害性を十分に考慮する必要がある。
下記の非特許文献1には、サーバコンピュータに関して、「CPUガード」と呼ばれるプロセッサの動的なデアロケーション技術が開示されている。このデアロケーション技術では、複数のプロセッサのいずれかで障害が発生した場合に、当該障害が発生したプロセッサを使用しないで、残されたプロセッサのみで動作するように、システム構成を再構築(デアロケート)する。
より具体的には、ハードウェアエラーが検出された場合、システムの再起動処理において診断プログラムが起動される。障害がCPUやL3キャッシュにあった場合には、そのようなハードウェアコンポーネントはシステム構成から取り除れることになる。
"IBM System p5 570 Technical Overview and Introduction," 2006年9月,部位3.1.7
上述したようなデアロケーション技術では、障害が発生したコンポーネントが特定されるまでの間、障害が発生したコンポーネントの誤動作により、他の正常なコンポーネントすなわち、キャッシュメモリやホストインターフェース、ディスクインターフェースに対して不正にアクセスを働きかけてしまい、その結果、キャッシュメモリに格納されているデータが破壊され、又はホストインターフェースやディスクインターフェースが誤ったデータを転送するおそれがあった。
そこで、本発明は、耐障害性を有するストレージシステム、すなわち、ストレージシステム内のコンポーネント(部位)に障害が発生した場合であっても、ユーザデータを失うことのない高い信頼性、ホスト装置に対してストレージサービスを継続する高い可用性を有するストレージシステムを提供することを課題としている。
より具体的には、本発明の課題は、ストレージシステムを構成するコンポーネントに障害が発生した場合であっても、その障害の影響範囲を最小限にとどめつつ、ストレージシステム内の他の正常なコンポーネントを用いて、ストレージシステムの稼働を継続させることである。
本発明のある観点によれば、本発明は、ホスト装置に対してデータストレージサービスを提供するストレージシステムである。当該ストレージシステムは、前記ホスト装置に接続可能に構成されたホストインターフェース部と、データを格納するボリュームが形成されたディスクアレイ部に接続可能に構成されたディスクインターフェース部と、前記ホストインターフェース部及び前記ディスクインターフェース部にそれぞれ接続され、前記ユーザデータをキャッシュするキャッシュメモリ部と、前記ホストインターフェース部、前記ディスクインターフェース部、及びキャッシュメモリ部にそれぞれ接続されたスイッチLSIと、複数のプロセッサを有し、前記スイッチLSIに接続された制御部と、を備える。
そして、前記スイッチLSIは、前記制御部内の部位に障害が発生した場合に出力されるエラー信号に基づいて、前記制御部との間の入出力パスを遮断し、前記制御部は、前記複数のプロセッサのいずれかの制御の下、所定の障害処理を行った後、前記スイッチLSIに対して前記遮断の解除を指示する。
また、本発明の別の観点によれば、本発明は、ホスト装置に対してデータストレージサービスを提供するストレージシステムの制御方法である。当該制御方法は、複数のプロセッサを有する少なくとも一つの制御部が、前記各プロセッサの制御の下、前記データストレージサービスを遂行するステップと、前記制御部内の部位に障害が発生した場合に出力されるエラー信号を、前記スイッチLSIが検出するステップと、前記スイッチLSIが、前記検出された障害に基づいて、前記制御部との間の入出力パスを遮断するステップと、前記制御部が、前記入出力パスが遮断されている間に、所定の障害処理を行うステップと、前記制御部が、前記スイッチLSIに対して、前記遮断の解除を指示するステップと、を含む。
また、本発明のさらに別の観点によれば、ストレージシステムを構成するさまざまなユニットに適用することができる。より具体的には、ストレージシステムを構成する、複数の部位を含むあるユニットは、前記複数の部位のいずれかに障害が発生したことを検出する障害検出部と、前記検出された障害の発生に基づいて、外部のユニットとの間の入出力パスを遮断する遮断処理部と、前記入出力パスが遮断されている間に、前記障害が発生した部位を特定する障害特定部と、前記特定された部位を閉塞状態に設定する閉塞状態設定部と、を備える。そして、前記遮断処理部は、前記閉塞状態に設定された後に、前記遮断を解除する。
本発明によれば、ストレージシステムを構成するコンポーネント(部位)に障害が発生した場合であっても、その障害の影響範囲を最小限にとどめることができ、従って、ユーザデータを失うことがなく、信頼性の高いストレージシステムが実現される。
また、本発明によれば、ストレージシステムを構成するコンポーネントに障害が発生した場合であっても、ストレージシステム内の他の正常なコンポーネントを用いてストレージシステムの稼働を継続させることができ、従って、可用性の高いストレージシステムが実現される。
次に、本発明の実施の形態について、図面を参照しつつ説明する。
[第1の実施形態]
本実施形態は、耐障害性に優れたストレージシステムを説明している。具体的には、本実施形態のストレージシステムは、制御部内のいずれかのコンポーネント乃至は部位に障害が発生した場合に、当該制御部の入出力パスを遮断し、当該遮断された状態において障害が発生したコンポーネントを特定し、これを無効化する機能を有するストレージシステムについて説明している。本実施形態のストレージシステムはまた、当該障害が発生したコンポーネントを無効化した後、正常なコンポーネントのみで動作可能であるか否かを判断し、動作可能であると判断した場合に、当該入出力パスの遮断を解除(開放)し、再起動によって、動作を再開する。当該制御部の入出力パスの遮断/開放は、障害検出信号に基づいて、制御部と他のユニットを仲介するスイッチLSIによって行われる。
図1は、本発明の実施形態に係るストレージシステム1の構成を示す図である。同図に示すように、ストレージシステム1は、ネットワークNを介してホスト装置Hに接続され、全体としてコンピュータシステムを形成している。コンピュータシステムは、例えば、銀行の業務システムや航空機の座席予約業務システム等として構築される。
ストレージシステム1は、ホスト装置Hに対してデータストレージサービスを提供するためのシステムである。ストレージシステム1は、制御部2と、スイッチLSI3を介して接続された他のユニット、すなわち、ホストインターフェース4と、ディスクアレイ部5と、ディスクインターフェース部6と、キャッシュメモリ部7と、を備える。スイッチLSI3、ホストインターフェース4、ディスクアレイ部5、及びキャッシュメモリ部7間は、内部ネットワーク8で接続される。
制御部2は、複数のプロセッサ21と、制御メモリ部22と、不揮発性メモリ部23と、チップセット24とを備え、ストレージシステム1全体の動作を司る。
プロセッサ21は、不揮発性メモリ部23に格納された各種のプログラムを実行し、これによって、ストレージシステム1のデータストレージサービスを実現する。本例では、制御部2には2つのプロセッサ21が設けられ、さらに、各プロセッサ21には、2つのプロセッサコア211が設けられている(図2参照)。以下では、説明の便宜上、プロセッサ21をそれぞれ区別するときは、プロセッサP1及びP2と表記する。
各プロセッサ21とチップセット24とは、フロントサイドバス(FSB)25(同様に、「FSB A」及び「FSB B」と表記する。)でそれぞれ接続されている。また、各プロセッサ21は、第1のエラー信号線27を介して、後述するスイッチLSI3に接続されている。各プロセッサ21は、自身のエラーを検出した場合、第1のエラー信号線27を介して、スイッチLSI3に通知する。
プロセッサ21(プロセッサコア211)は、制御部2において障害が発生した場合に、後述する障害処理プログラム232を実行して、障害が発生した部位を特定し、当該特定した部位を除く正常な部位のみによる稼働の継続を試みる。
図2は、本発明の実施形態に係るプロセッサ21の概略構成を示す図である。同図に示すように、各プロセッサ21は、複数のプロセッサコア211を有し、各プロセッサコア211は、並列に処理を行うことができる。本例では、各プロセッサ21は、2つのプロセッサコア211を含んで構成されている。従って、制御部2は、全体として、4つのプロセッサコア211を有することになる。ただし、プロセッサ21は、シングルコア構造であってもよい。以下では、説明の便宜上、プロセッサコア211をそれぞれ区別するときは、プロセッサP1の各プロセッサコア211をプロセッサコアC1及びC2、プロセッサP2の各プロセッサコア211をプロセッサコアC3及びC4と表記することにする。
各プロセッサコア211は、その内部にL1キャッシュ212を備え、その外部には同一プロセッサ21内の各プロセッサコア211によって共有されるL2キャッシュ213が配置されている。また、本実施形態では、各プロセッサコア211は、障害要因レジスタ214を含んで構成されている。障害要因レジスタ214の内容は、障害発生時に実行される障害処理プログラム232により不揮発性メモリ部23に書き出される。
図1に戻り、制御メモリ部22は、DRAM等の揮発性メモリからなる複数のメモリモジュール221(同様に、これらを区別するときは「M1」及び「M2」と表記する。)によって構成されている。各メモリモジュール221は、データ信号線によりチップセット24に接続されている。メモリモジュール221は、キャッシュメモリ部7に格納されたユーザデータに関連付けられた制御データ及びシステム構成情報等のその他の情報を格納する。制御データは、ストレージシステム1によるデータストレージサービスの遂行に必要な管理情報を含んでいる。
なお、制御データは、複数のメモリモジュール221内の記憶領域に非連続的に格納されうるが、これらの領域は、プロセッサコア211上で動作するI/O処理プログラムが単一の連続したメモリ空間として認識可能なように、メモリ管理がなされる。以下では、メモリモジュール221に格納される制御データは、特に断りのない限り、単一のメモリ空間に格納されているものとして説明する。
不揮発性メモリ部23は、フラッシュメモリ等の書き換え可能な不揮発性のメモリによって構成されている。不揮発性メモリ部23は、各種のプログラム及び各種の情報を格納する。本実施形態では、図3に示すように、不揮発性メモリ部23は、起動プログラム231、及び障害処理プログラム232並びに閉塞部位管理テーブル233が格納されている。また、不揮発性メモリ部23には、ストレージシステム1がデータストレージサービスを提供するためのI/O処理を行うI/O処理プログラムが格納される。
起動プログラム231は、ストレージシステム1の電源が投入がされた場合や、本実施形態で説明されるように障害発生時にリセットされた場合に、I/O処理プログラムを実行可能にするためのイニシャライズ処理を行うプログラムである。障害処理プログラム232は、制御部2内で何らかの障害が発生した場合に呼び出され、データストレージサービスの継続に向けて必要な処理を行うプログラムである。閉塞部位管理テーブル233は、制御部2内の各部位の閉塞状態を管理するテーブルである。部位は、障害の発生を特定できるレベルで定義されている。閉塞部位管理テーブル233は、障害処理プログラム232により更新される。
図1に戻り、チップセット24は、制御部2内の接続されているコンポーネント(部位)間のブリッジとして機能する。また、チップセット24は、接続されている部位の有効/無効の状態を管理している。また、チップセット24は、アドレス/データ信号線26を介してスイッチLSI3に接続されている。制御部2内のコンポーネントと他のユニットと間のデータのやり取りは、アドレス/データ信号線26を介して行われる。さらに、チップセット124は、第2のエラー信号線28を介してスイッチLSI3に接続されている。
本実施形態では、制御部2は、2つのプロセッサ21を有しているが、特に、これにこだわるものではない。また、プロセッサ21についても、本実施形態では2つのプロセッサコア211を有しているが、特に、これにこだわるものではない。さらに、メモリモジュール221及び不揮発性メモリ部23も必要な数及び容量だけ設けられる。さらにまた、各コンポーネント間を接続するデータ信号線やエラー信号線についてもさまざまな規格のものを採用することができる。
図4は、本発明の実施形態に係るチップセット24内に設けられたレジスタを説明するための図である。同図に示すように、チップセット24は、障害要因レジスタ241と、部位有効化レジスタ242とを含んでいる。障害要因レジスタ241は、チップセット24に接続された部位における障害の有無を記録する。部位有効化レジスタ242は、チップセット24に接続された部位のうち、どの部位を有効化するかを指定する。
図5は、本発明の実施形態に係るスイッチLSI3の構成を示す図である。同図に示すように、スイッチLSI3は、ルーティング部31と、遮断処理部32と、遮断状態レジスタ33とを含んで構成されている。
ルーティング部31は、アドレス/データ信号線26を介して制御部2のチップセット24に接続され、また、内部ネットワーク8を介してストレージシステム1内の他のユニットに接続されている。ルーティング部31は、遮断状態レジスタ33の値が“Y”でない限り、データのルーティングを行う。すなわち、遮断状態レジスタ33は、“Y”又は“N”の2値の状態を持つ。ルーティング部31は、遮断状態レジスタ33の値が“N”であれば、制御部2のチップセット24から受領したデータをストレージシステム1内の他のユニットに転送し、また、ストレージシステム1内の他のユニットから受領したデータを制御部2のチップセット24に転送する。ルーティング部31は、典型的には、受領したデータを転送する際に、所定のプロトコル変換を行う。
遮断処理部32は、第1のエラー信号線27を介していずれかのプロセッサ21から送出されるプロセッサエラー信号及び/又は第2のエラー信号線28を介してチップセット24から送出されるチップセットエラー信号を受け付けると、遮断状態レジスタ33の値を“N”から“Y”に書き換える。また、遮断処理部32は、後述するように、ルーティング部31を介して閉塞解除指示のコマンドを受領すると、遮断状態レジスタ33の値を“Y”から“N”に書き換える。
図6は、本発明の実施形態に係る障害処理プログラム232が有する処理乃至は機能を列挙している。障害処理プログラム232は、上述したように、制御部11内で障害が発生したときに呼び出され、プロセッサコア211により実行される。
同図に示すように、障害処理プログラム232は、これを実行するプロセッサコア211自身が正常に動作可能であるか否かを診断する自己診断機能、自身以外のプロセッサコア211が正常に動作可能であるか否かを診断する他プロセッサコア診断機能、他のプロセッサコア211との間で排他制御を行う排他制御機能、障害が発生した部位を特定する障害部位特定機能、障害部位を切り離したとしても制御部2が正常に動作できるかどうかを判定する稼働可能判定機能、障害部位が使用されないように制御部2の動作モードを設定する動作モード設定機能、及びハードウェアリセットを行うリセット機能を含んでいる。
図7は、本発明の実施形態に係る制御部2のプロセッサ21に設けられた障害要因レジスタ214の一例を示す図である。障害要因レジスタ214は、プロセッサ21内部の各部位における障害の有無(状態)を示す。具体的には、障害要因レジスタ214には、プロセッサコア211、L1キャッシュ212、及びL2キャッシュ213における障害の発生の有無が記録される。また、L2キャッシュ213については、障害の程度が示される。
図8は、本発明の実施形態に係る不揮発性メモリ部23に格納された閉塞部位管理テーブル233の一例を示す図である。
閉塞部位管理テーブル233は、制御部2内の各部位についての閉塞状態を管理するために用いられる。閉塞部位管理テーブル233の各エントリは、部位2331と閉塞状態2332とを含んでいる。部位2331は、制御部2内のコンポーネント自身(例えば、プロセッサ21)やそのコンポーネントの部分(例えば、プロセッサコアC1〜C4やメモリモジュールM1及びM2)として定義されている。これは、障害の発生が特定できるレベルに対応している。また、部位2331“共通部位”は、例えば、チップセット24の内部バスのように、それ自体冗長的に構成されていない部位を示している。部位が閉塞している状態(つまり、使用不能の状態)の場合には、閉塞状態は“Y”となり、閉塞していない状態(つまり、使用可能の状態)の場合には、閉塞状態は“N”となる。本例では、閉塞部位管理テーブル233は、メモリモジュールM1が閉塞状態にあることを示している。
図9は、本発明の実施形態に係るチップセット24に設けられた障害要因レジスタ241の一例を示す図である。
チップセット24内の障害要因レジスタ241は、チップセット22及びこれに接続される信号線で発生する障害(エラー)の有無を記録する。障害要因レジスタ241はまた、コンポーネントによっては、当該エラーの程度(すなわち、修正可能か否か)を示している。例えば、メモリモジュールM1及びM2を接続する信号線においては、修正可能なエラーと修正不可能なエラーのいずれかが検出される。具体的には、ECC(Error Correction Code)を用いて、修正可能か否かが判別される。本例では、メモリモジュールM1で修正不可能なエラーが発生したことを示している。
図10は、本発明の実施形態に係る制御部2のチップセット24に設けられた部位有効化レジスタ242の構成の一例を示す図である。部位有効化レジスタ242は、チップセット24に接続されたハードウェアリソース、すなわち、FSB A及びB並びにメモリモジュールM1及びM2を使用するか否かを示す。本例では、メモリモジュールM1が無効化され、使用できない状態になっている。
次に、以上のように構成されるストレージシステム1における障害発生時の動作例について説明する。図11は、本発明の実施形態に係るストレージシステム1において障害が発生した場合の処理の流れを説明するためのシーケンスチャートである。より具体的には、同図は、制御部2内のプロセッサコア211のいずれかで障害が発生した場合に、障害が発生していないプロセッサコア211がI/O処理を再開するまでの処理の流れを説明している。
まず、4つのプロセッサコアC1〜C4が正常にI/O処理を遂行していたところ、プロセッサコアC3で障害が発生したとする(S1)。これは、プロセッサコアC3自身又はその内部のL1キャッシュに障害が発生した場合である。プロセッサコアC3は、障害を検出すると、第1のエラー信号線27を介してプロセッサエラー信号をスイッチLSI3に送出し、スイッチLSI3は、エラー信号を検出する(S2)。
スイッチLSI3は、第1のエラー信号線27を介してプロセッサコアC3からのエラー信号を検出すると、直ちに、遮断状態レジスタ33の値を“Y”に変更する。これにより、スイッチLSI3は、アクセス遮断モードに移行して、入力される全てのデータのルーティングを停止し(S3)、プロセッサコアC1〜4に対して割り込みをかける(S4)。これにより、アクセス遮断モード中は、たとえ障害を起こしたプロセッサC3が誤動作により、スイッチLSI3を介して外部のユニットにアクセスしようとしても、当該アクセスが遮断されることになる。
プロセッサコアC1〜C4のそれぞれは、当該割り込みを受けると、障害処理プログラム232を呼び出して、所定の障害処理を実行する。すなわち、プロセッサコアC1〜C4のそれぞれは、まず、自己診断処理を実行し、自身が正常に動作可能であるか否かを判定する(S5)。このとき、プロセッサコアC1〜C4のそれぞれは、自己診断処理により得られた障害要因レジスタ214の内容を、自身以外のプロセッサコアが参照可能なように、不揮発性メモリ部23に書き出す。本例では、プロセッサコアC1,C2,及びC4が正常に動作可能であると判定されたとする。また、障害が発生し、正常に動作できないと診断したプロセッサコアC3は、他プロセッサコア診断処理(図示せず)を経て、障害処理プログラム232の実行を終了する。
次に、正常に動作可能であると自身で判定したプロセッサコアC1,C2,及びC4は、以降の障害処理を続行する一のプロセッサコアを決定するために、排他制御処理を実行する(S6)。排他制御は、例えば、どのプロセッサコアが共有フラグ(排他権)を先に取得したか否かにより行われる。ここでは、プロセッサコアC2が排他権を取得したものとする。これ以降は、排他権を取得できなかったプロセッサコアC1及びC4は、障害処理プログラム232の実行を停止する。
排他権を取得したプロセッサコアC2は、次に、障害部位特定処理を実行し、制御部2内で障害が発生したであろう部位の特定を試みる(S7)。具体的には、プロセッサコアC2は、不揮発メモリ部113に書き出された各プロセッサコアC1〜C4の障害要因レジスタの内容を参照するとともに、チップセット24内の障害要因レジスタの内容を参照し、障害が発生した部位(以下、「障害部位」という。)を特定する。ここでは、プロセッサC3内部で障害が発生したものとする。
続いて、プロセッサコアC2は、稼働可能判定処理を実行し、特定された障害部位(すなわち、プロセッサコアC3)を使用しない設定においても制御部2がなお動作するか否かを判定し(S8)、稼働可能であると判定した場合には、動作モード設定処理を実行して、当該障害部位が無効化されるようにチップセット24の設定を変更する(S9)。そして、プロセッサコアC2は、制御部2自体の初期化を行うために、ハードリセット処理を実行する(S10)。ハードリセット処理の実行により、無効化されていないプロセッサコアC1,C2,及びC4のいずれかが、起動プログラムを実行する(S11)。本例では、プロセッサコアC4が起動プログラムを実行したものとする。
起動プログラムを実行したプロセッサコアC4は、障害部位が閉塞状態になっていることを確認した後、スイッチLSI3に対してアクセス遮断の解除を指示する(S12)。そして、プロセッサコアC4は、有効なプロセッサコアC1及びC2にI/O処理を再開するよう指示するとともに、自身も当該I/O制御処理を再開する(S13)。
以上のように、制御部2内で障害が検出されると直ちにスイッチLSI3は、ルーティングを停止するので、たとえ障害部位の誤動作によりアクセスされた場合であっても、当該アクセスは確実に遮断されることになる。
次に、制御部2内のプロセッサ21で実行される障害処理プログラム232の各機能について説明する。なお、上述したように、本実施形態のプロセッサ21は、2つプロセッサコア211を有し、従って、実際上は、各プロセッサコア211が障害処理プログラム232を並列的に実行する。障害処理プログラム232は、制御部2内のいずれかのコンポーネントで障害が検出された場合に、呼び出される。
図12は、本発明の実施形態に係る障害処理プログラム232を説明するための全体フローチャートである。障害処理プログラム232は、制御部2内のいずれかのコンポーネントで障害が検出されると、各プロセッサコア211により実行される。
障害処理プログラム232を実行しているプロセッサコア211は、まず、自己診断処理を実行し(STEP1201)、プロセッサコア211自身が正常に動作可能であるか否かを判断する(STEP1202のYes)。プロセッサコア211自身が正常に動作可能でないと判断される場合、他プロセッサコア診断処理を行い(STEP1203)、他のプロセッサコア211のいずれかが、動作可能であるか否かを判断する(STEP1204)。他のプロセッサコア211のいずれかが動作可能である場合には、当該プロセッサコアは、そのまま終了する(STEP1204のYes)。これに対して、他のプロセッサコア211のいずれも動作不能である場合には、当該プロセッサコア211は、後述する障害部位特定処理を実行するために続行を試みる(STEP1204のNo)。
プロセッサコア211は、STEP1202において正常動作可能であると判断する場合又はSTEP1204において他プロセッサコア211のいずれも動作不能であると判断する場合には、排他制御処理を実行し(STEP1205)、プロセッサコア211自身が排他権を取得することに成功したか否かを判断する(STEP1206)。
プロセッサコア211は、自身が排他権を取得することに成功したと判断する場合には(STEP1206のYes)、次に、障害部位特定処理を実行する(STEP1207)。これに対して、障害処理プログラム232は、排他権を取得できなかった場合には、排他権を取得した他のプロセッサコア211が以降の処理を継続することになるため、自身は障害処理プログラム232の実行を終了する。
排他権を取得し、障害部位特定処理を実行したプロセッサコア211は、次に、障害が発生した制御部2内の部位を特定できたか否かを判断する(STEP1208)。プロセッサコア211は、障害部位を特定できた場合には(STEP1208のYes)、稼働可能判定処理を実行し(STEP1209)、稼働可能な部位が制御部2内に存在するか否かを判断する(STEP1210)。これは、稼働可能な部位が制御部2内に存在することで、たとえ当該障害が発生した状態であっても、稼働可能な部位のみを使用する動作モードでストレージサービスの継続が可能であるか否かを判断するものである。
プロセッサコア211は、稼働可能な部位が制御部2内に存在すると判断すると(STEP1210のYes)、次に、動作モード設定処理を実行する(STEP1211)。
そして、プロセッサコア211は、ハードウェアリセット処理を実行する(STEP1212)。これにより、制御部2内の全てのプロセッサコア211はリセットされ、起動プログラムが呼び出されることになる。
図13は、本発明の実施形態に係る障害処理プログラム232における自己診断処理を説明するためのフローチャートである。自己診断処理では、これを実行しているプロセッサコア211は、自身が正常に動作可能であるか否かを判断するとともに、他のプロセッサコア211が自身の障害要因レジスタ214の内容を参照できるように、障害要因レジスタ214の内容を不揮発性メモリ部23に書き出す。
すなわち、同図に示すように、プロセッサコア211は、まず、自身の障害要因レジスタ214の内容を読み出して(STEP1301)、これを不揮発性メモリ部23に書き出す(STEP1302)。さらに、プロセッサコア211は、障害要因レジスタ214に修正不可能なエラーが記録されているか否かを判断する(STEP1303)。障害要因レジスタ214に修正不可能なエラーが記録されている場合、プロセッサコア211は、正常に動作できないと判断し、処理を終了する(STEP1308)。
これに対して、障害要因レジスタ214にエラーが記録されていない場合、又は修正可能なエラーのみが記録されている場合には、プロセッサコア211は、次に、チップセット24内の障害要因レジスタ241を読み出す(STEP1304)。プロセッサコア211は、障害要因レジスタ241に修正不可能なエラーが記録されているか否かを判断し(STEP1305)、障害要因レジスタ241に修正不可能なエラーが記録されている場合、プロセッサコア211は、同様に、正常に動作できないと判断し、処理を終了する(STEP1308)。
障害要因レジスタ241にエラーが記録されていない場合、又は修正可能なエラーのみが記録されている場合には、プロセッサコア211は、次に、自身が接続されているフロントサイドバス(FSB)25におけるエラーが記憶されているか否かを判断する(STEP1306)。当該FSB25におけるエラーが記録されている場合には(STEP1306のYes)、同様に、正常に動作できないと判断し、処理を終了する(STEP1308)。
これに対して、当該FSB25におけるエラーが記録されていない場合には(STEP1306のNo)、プロセッサコア211は、正常に動作できると判断し、処理を終了する(STEP1307)。
図14は、本発明の実施形態に係る障害処理プログラム232における他プロセッサコア診断処理を説明するためのフローチャートである。他プロセッサコア診断処理では、当該プロセッサコア211が、他のプロセッサコア211のいずれかが正常に動作して障害処理を行うことができるか否かを判断する。
すなわち、同図に示すように、障害処理プログラムを実行しているプロセッサコア211は、不揮発性メモリ部23に書き出された他のプロセッサコア211の障害要因レジスタ214を読み出すとともに(STEP1401)、閉塞部位管理テーブル233を読み出す(STEP1402)。続いて、プロセッサコア211は、チップセット24内の障害要因レジスタ241を読み出す(STEP1403)。
プロセッサコア211は、次に、これら読み出した障害要因レジスタ214及び閉塞部位管理テーブル233並びに障害要因レジスタ241に基づいて、プロセッサコア内エラー又はL1キャッシュエラーであり、かつ、閉塞状態にない他のプロセッサコア211が少なくとも1つ以上あるか否かを判断する(STEP1404)。プロセッサコア内エラー又はL1キャッシュエラーであり、かつ、閉塞状態にない他のプロセッサコア211が少なくとも1つ以上ある場合(STEP1404のYes)、プロセッサコア211は、他のプロセッサコア211は動作可能であると判定する(STEP1407)。
これに対して、プロセッサコア内エラー及びL1キャッシュエラーのいずれでもない場合、あるいは、閉塞状態にない他のプロセッサコア211がない場合、プロセッサコア211は、さらに、L2キャッシュエラー又はFSBエラーであり、かつ、閉塞状態にない他のプロセッサコア211が少なくとも1つ以上あるか否かを判断する(STEP1405)。L2キャッシュエラー又はFSBエラーであり、かつ、閉塞状態にない他のプロセッサ21が少なくとも1つ以上ある場合には、当該プロセッサコア211は、同様に、他のプロセッサコア211は動作可能であると判定する(STEP1407)。これに対して、L2キャッシュエラー及びFSBエラーのいずれでもない場合、あるいは、閉塞状態にない他のプロセッサコア211がない場合、当該プロセッサコア211は、他プロセッサコア211は動作不可能であると判定する(STEP1406)。
図15は、本発明の実施形態に係る障害処理プログラム232における障害部位特定処理を説明するためのフローチャートである。障害部位特定処理では、プロセッサコア211は、制御部2内のどの部分で障害が発生したかを特定する。障害部位特定処理を実行するプロセッサコア211は、排他制御処理において排他権を取得したプロセッサコア211のみである。
すなわち、同図に示すように、プロセッサコア211は、各プロセッサコア211の自己診断処理において不揮発性メモリ部23に書き出された各プロセッサコア211の障害要因レジスタ214の内容を読み出す(STEP1501)。プロセッサコア211は、全てのプロセッサコア211の障害要因レジスタ214の内容を読み出したか否かを判断し(STEP1502)、読み出していなければ上記読み出し処理を繰り返す。
プロセッサコア211は、次に、チップセット24内の障害要因レジスタ241の内容を読み出して(STEP1503)、いずれかのプロセッサコア211に障害があるか否かを判断する(STEP1504)。プロセッサコア211は、いずれかのプロセッサコア211に障害があると判断する場合には(STEP1504のYes)、不揮発性メモリ部23に記憶されている閉塞部位管理テーブル233における対応するプロセッサ211のエントリを“Y”に設定する(STEP1505)。これに対して、プロセッサコア211の障害でないと判断する場合には、当該プロセッサコア211は、そのまま次の処理に進む。
続いて、プロセッサコア211は、いずれかのL2キャッシュ又はFSBに障害が発生しているか否かを判断する(STEP1506)。いずれかのL2キャッシュ213又はFSB25に障害が発生していると判断する場合(STEP1506のYes)、プロセッサ21は使用できないとして、プロセッサコア211は、閉塞部位管理テーブル233における対応するFSB25のエントリを“Y”に設定する(STEP1507)。
さらに、プロセッサコア211は、いずれかのメモリモジュール221に障害があるか否かを判断する(STEP1508)。プロセッサコア211は、いずれかのメモリモジュール221に障害があると判断する場合には(STEP1508のYes)、不揮発性メモリ部23に記憶されている閉塞部位管理テーブル233における対応するメモリモジュール221のエントリを“Y”に設定する(STEP1508)。
さらにまた、プロセッサコア211は、共通部位に障害があるか否かを判断する(STEP1510)。共通部位は、例えば、チップセット24内の内部バスのように冗長的に構成されていない部位である。プロセッサコア211は、共通部位に障害があると判断する場合には、不揮発性メモリ部23に記憶されている閉塞部位管理テーブル233における共通部位のエントリを“Y”に設定する(STEP1511)。
そして、プロセッサコア211は、以上の処理の結果、閉塞部位管理テーブル233における各部位に閉塞状態(“Y”)が設定されたか否かをチェックする(STEP1512)。閉塞部位管理テーブル233のいずれかの部位に閉塞状態が設定されている場合には、障害部位の特定に成功したとして障害部位特定処理を終了する(STEP1513)。これに対して、閉塞部位管理テーブル233に閉塞状態が設定されていない場合には、障害処理プログラム232が呼び出されたにもかかわらず、障害部位が特定できなかったことになる。従って、この場合には、プロセッサコア211は、障害処理が正しく動作しなかったと判断して、障害部位の特定に失敗したとして、障害部位特定処理を終了する(STEP1514)。
このように、障害部位特定処理では、プロセッサコア211は、制御部2における全てのプロセッサコア211内の障害要因レジスタ214及びチップセット24内の障害要因レジスタ241に基づいて、障害が発生した部位を特定し、当該障害部位が閉塞されるように閉塞部位管理テーブル233の閉塞状態を書き換える。
図16は、本発明の実施形態に係る障害処理プログラム232における稼働可能判定処理を説明するためのフローチャートである。稼働可能判定処理では、プロセッサコア211は、制御部2内の正常な部位のみで制御部2を稼働させることができるか否かを判断する。
すなわち、同図に示すように、プロセッサコア211は、不揮発性メモリ部23に記憶された閉塞部位管理テーブル233を読み出す(STEP1601)。次に、プロセッサコア211は、起動用のプロセッサコア211が閉塞状態に設定されているか否かを判断する(STEP1602)。起動用のプロセッサコア211は、プロセッサ21内の予め定められた一のプロセッサコア211である。例えば、プロセッサP1のプロセッサコアC1及びプロセッサP2のプロセッサコアC3が起動用として設定される。この場合、起動時には、プロセッサコアC1又はC3のいずれかが起動プログラムを実行することになる。このため、プロセッサコアC1が閉塞状態になっている場合には、プロセッサP1を閉塞状態にする必要がある。
従って、プロセッサコア211は、起動用のプロセッサコア211が閉塞状態に設定されていると判断する場合には(STEP1602のYes)、障害が発生したプロセッサコア211を含むプロセッサ21が起動プログラムを実行しないことを保証するため、閉塞部位管理テーブル233における当該起動用のプロセッサコア211を含むプロセッサ21のエントリを“Y”に設定する(STEP1603)。
プロセッサコア211は、次に、全てのプロセッサ21が閉塞状態になっているか否かを判断する(STEP1604)。全てのプロセッサ21が閉塞状態になっていると判断する場合(STEP1604のYes)、プロセッサコア211は、制御部2内に稼働可能な部位がないものと判断する(STEP1608)。これに対して、全てのプロセッサ21が閉塞状態になっていないと判断する場合(STEP1604のNo)、プロセッサコア211は、続いて、全てのメモリモジュール221が閉塞状態になっているか否かを判断する(STEP1605)。
全てのメモリモジュール221が閉塞状態になっていると判断する場合(STEP1605のYes)、プロセッサコア211は、同様に、制御部2内に稼働可能な部位がないものと判断する(STEP1608)。これに対して、全てのメモリモジュール221が閉塞状態になっていないと判断する場合(STEP1605のNo)、プロセッサコア21は、さらに、共通部位が閉塞状態になっているか否かを判断する(STEP1606)。
そして、共通部位が閉塞状態になっていると判断する場合(STEP1606のYes)、プロセッサコア211は、制御部2内に稼働可能な部位がないものと判断する(STEP1608)。これに対して、共通部位が閉塞状態になっていないと判断する場合(STEP1604のNo)、プロセッサコア211は、稼働可能な部位があるものと判断し(STEP1607)、稼働可能判定処理を終了する。
図17は、本発明の実施形態に係る障害処理プログラム232における動作モード設定処理を説明するためのフローチャートである。動作モード設定処理では、プロセッサコア211は、制御部2が閉塞部位を使用しないで動作するように、チップセット24の部位有効化レジスタ242の設定を変更する。
すなわち、同図に示すように、プロセッサコア211は、まず、不揮発性メモリ部23に記憶された閉塞部位管理テーブル233の内容を読み出す(STEP1701)。続いて、プロセッサコア211は、一のプロセッサ21を選択し(STEP1702)、当該選択したプロセッサ21が閉塞状態であるか否かを判断する(STEP1703)。
当該選択したプロセッサ21が閉塞状態である場合(STEP1703のYes)、プロセッサコア211は、部位有効化レジスタ242における対応するプロセッサ21に接続されたFSBのエントリを“N”に設定する(STEP1704)。つまり、この場合、選択したプロセッサ21は、使用されないことになる。
そして、プロセッサコア211は、全てのプロセッサ21を選択したか否かを判断し(STEP1705)、全てのプロセッサ21を選択していないと判断する場合に(STEP1705のNo)、次のプロセッサ21を選択し、同様に処理を行う。当該選択したプロセッサ21が閉塞状態でなければ(STEP1703のNo)、当該プロセッサコア211は、部位有効化レジスタ242を書き換えず、全てのプロセッサを選択したか否かを判断する(STEP1705)。
以上により、プロセッサ21が閉塞状態にある場合には、チップセット24内の部位有効化レジスタ242における、当該閉塞状態にあるプロセッサ21に接続されたFSB25が無効化されるので、当該プロセッサ21は動作しないことになる。
図18は、本発明の実施形態に係る起動プログラムを説明するためのフローチャートである。起動プログラムは、障害プログラムを実行したプロセッサコア211によりハードウェアリセット処理が実行されることにより、最初に実行される。起動プログラムを実行するプロセッサコア211は、制御部2内の正常な部位のみを稼働させ、閉塞させるべき部位が稼働していないことを確認した後、スイッチLSI3に対して遮断解除を指示し、他のプロセッサコア211を起動させる。
すなわち、同図に示すように、起動プログラムの実行を開始したプロセッサコア211は、まず、不揮発性メモリ部23に記憶された閉塞部位管理テーブル233の内容を読み出す(STEP1801)。続いて、プロセッサコア211は、一のメモリモジュール221を選択し(STEP1802)、読み出した閉塞部位管理テーブル233を参照し、当該選択したメモリモジュール221が閉塞状態であるか否かを判断する(STEP1803)。当該選択したメモリモジュール221が閉塞状態でない場合、プロセッサコア211は、部位有効化レジスタ242の対応するメモリモジュール221のエントリを“Y”に設定する(STEP1804)。これに対して、当該選択したメモリモジュール221が閉塞状態である場合、プロセッサコア211は、部位有効化レジスタ242の対応するメモリモジュール221のエントリを“N”に設定する(STEP1805)。プロセッサコア211は、全てのメモリモジュール221を選択したか否かを判断し(STEP1806)、全てのメモリモジュール221を選択していないと判断する場合に(STEP1806のNo)、次のメモリモジュール221を選択し、同様に処理を行う。
全てのメモリモジュール221についてチェックした後、当該プロセッサコア211は、不揮発性メモリ部23に記憶された閉塞部位管理テーブル233におけるプロセッサ閉塞状態と、チップセット24に記憶された部位有効化レジスタ242におけるFSB有効化状態とが、矛盾なく対応しているか否かを判断する(STEP1807)。もし、閉塞部位管理テーブル233におけるプロセッサ閉塞状態と、部位有効化レジスタ242におけるFSB有効化状態とが一致していない場合には(STEP1807のNo)、障害処理が正しく処理されていないことになるため、起動処理を停止する(STEP1810)。
これに対して、閉塞部位管理テーブル233におけるプロセッサ閉塞状態と、部位有効化レジスタ242におけるFSB有効化状態とが一致している場合(STEP1807のYes)、当該プロセッサコア211は、スイッチLSI3に対して遮断解除コマンドを送出する(STEP1808)。これを受けて、スイッチLSI3は、遮断状態レジスタ33の値を“N”にして、停止していたルーティング処理を再開する。
そして、プロセッサコア211は、閉塞部位管理テーブル233において閉塞状態にないプロセッサコアに対して起動の指示を行う(STEP1809)。
なお、チップセット24内の部位有効化レジスタ242に対する設定は、適宜のタイミングでなされればよい。例えば、上記の実施形態では、プロセッサ21に対する有効化/無効化の設定は、ハードウェアリセット処理前の動作モード設定処理において行われ、メモリモジュール221に対する有効化/無効化の設定は、ハードウェアリセット処理後の起動処理において行われているが、特にこれに限定されるものではない。
図19は、本発明の実施形態に係るスイッチLSI3の遮断処理を説明するためのフローチャートである。
すなわち、同図に示すように、スイッチLSI3は、その動作中、第1のエラー信号線27及び第2のエラー信号線28を監視している(STEP1901)。そして、スイッチLSI3は、第1のエラー信号線27及び第2のエラー信号線28のいずれかでエラー信号を検出した場合には(STEP1901のYes)、直ちに、遮断状態レジスタ33の値を“Y”に設定する。これにより、制御部2内で障害が発生した時点でスイッチLSI3は、全てのアクセスを遮断するため、制御部2の誤動作がストレージシステム1内の他のユニットに対して影響を与えることがない。
図20は、本発明の実施形態に係るスイッチLSI3のルーティング部31の動作を説明するためのフローチャートである。同図は、スイッチLSI3がチップセット24を介してプロセッサ21からデータを受信した場合の処理を説明している。
すなわち、同図に示すように、スイッチLSI3は、アドレス/データ線26を介してデータを受信すると(STEP2001のYes)、遮断状態レジスタ33を参照して、遮断状態レジスタ33の値が“Y”であるか否かを判断する(STEP2002)。遮断状態レジスタ33の値が“N”である場合、スイッチLSI3は、ルーティングテーブルに従って、当該データをストレージシステム1内の内部ネットワーク8に送出する(STEP2003)。
これに対して、遮断状態レジスタ33の値が“Y”である場合、スイッチLSI3は、続いて、当該データが遮断解除コマンドであるか否かを判断する(STEP2004)。スイッチLSI3は、当該データが遮断解除コマンドでないと判断する場合(STEP2004のNo)、当該データを破棄する(STEP2005)。これは、スイッチLSI3に入ってくるデータが遮断されることを意味している。これに対して、当該データが遮断解除コマンドであると判断する場合(STEP2004のYes)、スイッチLSI3は、遮断状態レジスタ33の値を“N”に設定する(STEP2006)。
以上のように、制御部2内のプロセッサ21が障害が発生した場合、スイッチLSI3は、残された正常なコンポーネントで制御部2が再稼働するまで、すべてのアクセスを遮断する。従って、障害が発生したプロセッサ21が誤動作を引き起こすような場合であっても、そのような誤動作がストレージシステム1全体に波及することを防止することができ、その結果、ストレージシステム1の信頼性、可用性が向上することになる。
[第2の実施形態]
上記実施形態では、制御部2内のいずれかのコンポーネント(部位)において障害が発生した場合の障害処理について説明したが、以下の実施形態では、ストレージシステム1内の他のユニット、例えば、キャッシュメモリ部16内で障害が発生した場合について説明する。
図21は、本発明の実施形態に係るキャッシュメモリ部7の構成を示す図である。同図に示すように、キャッシュメモリ部7は、メモリコントローラ71と、複数のメモリモジュール72とを含んで構成されている。メモリコントローラ71は、ストレージシステム1内の他のユニットからアクセス要求を受け付けて、適切なメモリモジュール162にアクセスするための制御を行う。
メモリコントローラ71と複数のメモリモジュール72との間は、メモリバス73及び制御信号線74により接続されている。メモリバス73は、メモリコントローラ71がメモリモジュール72に格納されているデータにアクセスするために、アドレス及び当該データの転送に使用される。制御信号線74は、メモリモジュール72やメモリバス73で障害が発生した場合に、障害の発生通知やその障害要因情報の転送に使用される。以下では、説明の便宜上、メモリモジュール72をそれぞれ区別するときは、メモリモジュールCM1及びCM2と表記する。
図22は、本発明の実施形態に係るキャッシュメモリ部7のメモリコントローラ71の構成を示す図である。同図に示すように、メモリコントローラ71は、閉塞部位管理テーブル711と、障害検出部712と、障害部位特定部713と、コマンド変換部714とを含んで構成されている。
閉塞部位管理テーブル711は、キャッシュメモリ部7内の各メモリモジュール72の閉塞状態を管理するテーブルであり、さらに、メモリモジュール72に対してアクセスが許可されているか否かを管理している。
図23は、本発明の実施形態に係るキャッシュメモリ部7の閉塞部位管理テーブル711の一例を示す図である。同図に示すように、閉塞管理テーブル711は、アクセス遮断状態エントリ7111及び複数の閉塞部位エントリ7112を含んでいる。
遮断状態エントリ7111は、メモリモジュール72に対するアクセスが許可されているか否かを示す。遮断状態エントリ7111は、障害の発生を検出したが、それがどの部位で発生したかが特定されていない場合に、“Y”で示される。閉塞部位エントリ7112は、各メモリモジュール72又はそれに接続されたメモリバス73で障害が発生した場合に、“Y”で示される。
図22に戻り、障害検出部712は、キャッシュメモリ部7内で発生した障害を検出し、直ちに、閉塞部位管理テーブル711におけるアクセス遮断状態エントリ7111を“Y”に設定する。
障害部位特定部713は、障害検出部712により障害が検出された場合に起動される。障害部位特定部713は、制御信号線714をポーリングして、各メモリモジュール72の状態を診断し、障害部位の特定を行う。また、障害部位特定部713は、特定した障害部位を使用しないように、閉塞処理を行う。
コマンド変換部714は、ストレージシステム1内の他のユニットからコマンド及びユーザデータを受領し、閉塞部位管理テーブル711のアクセス遮断状態エントリ7111に従って、メモリモジュール72に対するアクセスを制御する。
図24は、本発明の実施形態に係るキャッシュメモリ部7の障害検出部712の動作を説明するためのフローチャートである。
すなわち、障害検出部712は、キャッシュメモリ部7内における障害の発生を監視している(STEP2401)。障害検出部712は、障害を検出すると(STEP2401のYes)、閉塞部位管理テーブル711のアクセス遮断状態を“Y”に設定する(S2402)。そして、障害検出部712は、障害部位を特定するために、障害部位特定部713を起動する(STEP2403)。
これにより、障害部位特定部713が障害部位を特定するまでの間、メモリモジュール72に対するアクセスが制限されるようになる。
図25は、本発明の実施形態に係るキャッシュメモリ部7の障害部位特定部713の動作を説明するためのフローチャートである。
すなわち、同図に示すように、障害部位特定部713は、まず、制御信号線74を用いて、各メモリモジュール72のステータスを取得する(STEP2501)。その結果、メモリバス73の障害(エラー)であると判断される場合(STEP2502のYes)、障害部位特定部713は、閉塞部位管理テーブル711における当該メモリバス73に接続されたメモリモジュール72のエントリを“Y”に設定する(STEP2503)。続いて、障害部位特定部713は、閉塞部位管理テーブル711のアクセス遮断状態エントリ7111を“N”に設定し(STEP2504)、処理を終了する。
これに対して、STEP2502においてメモリバス73の障害でないと判断される場合、障害部位特定部713は、メモリモジュール72内のエラーか否かを判断する(STEP2505)。メモリモジュール72内のエラーであると判断される場合には、障害部位特定部713は、閉塞部位管理テーブル711における当該メモリモジュール72のエントリを“Y”に設定する(STEP2506)。続いて、障害部位特定部713は、閉塞部位管理テーブル711の遮断状態エントリ7111を“N”に設定し(STEP2507)、処理を終了する。
一方、STEP2505においてメモリモジュール80内のエラーでないと判断した場合は、障害部位を特定できなかったことになるので、アクセス遮断を解除することなく、そのまま処理を終了する。
これにより、キャッシュメモリ部7内で障害が発生した場合、障害部位が特定されるまでの間、誤動作を引き起こす可能性のあるメモリモジュール72に対するアクセスを遮断することができるようになる。また、障害部位が特定された後は、正常なメモリモジュール72のみが使用されることになる。
図26は、本発明の実施形態に係るキャッシュメモリ部7のコマンド変換部714の動作を説明するためのフローチャートである。
すなわち、同図に示すように、コマンド変換部714は、コマンド及びユーザデータを受領すると、閉塞部位管理テーブル711を参照し(STEP2601)、アクセス遮断中であるか否かを判断する(STEP2602)。具体的には、コマンド変換部714は、閉塞部位管理テーブル711の遮断状態エントリ7111が“Y”であるか否かを判断する。
アクセス遮断中であると判断する場合、コマンド変換部714は、データ送信元にリトライを要求し(STEP2603)、処理を終了する。
これに対して、アクセス遮断中でないと判断する場合、コマンド変換部714は、受領したコマンド及びユーザデータに基づいて、アクセス先のメモリモジュール72を特定する(STEP2604)。次に、コマンド変換部714は、閉塞部位管理テーブル711を参照し、特定したメモリモジュール72が閉塞状態であるか否かを判断する(STEP2605)。
特定したメモリモジュール72が閉塞状態であると判断する場合(STEP2605のYes)、コマンド変換部714は、データ送信元にエラーステータスを送出し(STEP2606)、処理を終了する。
これに対して、特定したメモリモジュール72が閉塞状態でないと判断する場合(STEP2605のNo)、コマンド変換部714は、特定したメモリモジュール72に対してアクセスを行い(STEP2607)、その結果をデータ送信元に送出する(STEP2608)。
このように、キャッシュメモリ部7は、アクセス遮断状態に応じて、データ送信元のユニットに対して適切に応答することができる。
以上のように、キャッシュメモリ部7内で障害が発生した場合、障害部位が特定されるまでの間、誤動作を引き起こす可能性のあるメモリモジュール72に対するアクセスを遮断することができるようになる。また、障害部位が特定された後は、正常なメモリモジュール72のみが使用されることになる。従って、ストレージシステム1のデータストレージサービスに対する信頼性、可用性が向上することになる。
本実施形態から明らかなように、本発明は、ストレージシステム1内の制御部2の障害処理のみならず、例えばキャッシュメモリ部7にも適用することができる。同様にして、ホストI/F部4やディスクI/F部6にも適用することができる。
[第3の実施形態]
本実施形態は、多重化構成された制御部2のフェイルオーバ/フェイルバックメカニズムについて説明している。具体的には、本実施形態は、制御部2の一方において障害が発生した場合に、当該制御部2による障害処理の間、他方の制御部2に処理を引き継ぎ、当該障害処理が完了した時点で、他方の制御部2に引き継がれていた処理を当該制御部2に戻すメカニズムを説明している。
図27は、本発明の実施形態に係るストレージシステム1の構成を示す図である。同図に示すストレージシステム1は、多重化構成を採用しており、従って、制御部2、スイッチLSI3、ホストインターフェース(I/F)部4、ディスクインターフェース(I/F)部6、及びキャッシュメモリ部7がそれぞれ複数配置されている。
本実施形態の制御部2の基本的構成は、上述した実施形態のそれと同じである。ただし、多重化構成されているため、各制御部2のアドレス/データ信号線26は、複数のスイッチLSI3のそれぞれに接続されている。また、第1の信号線27及び第2の信号線28も、複数のスイッチLSI3のそれぞれに接続されている。本実施形態では、制御部2A及び2Bが設けられているものとする。
図28は、本発明の実施形態に係る制御部2の制御メモリ部22の内容を説明するための図である。
制御メモリ部22は、ストレージシステム1によるデータストレージサービスの遂行に必要な管理情報である制御データを記憶する制御データ記憶領域を有する。
制御データ記憶領域には、制御部2自身が担当する論理デバイス及び物理デバイスに対する、ユーザデータとキャッシュメモリ部7上の格納位置とを対応付けるキャッシュディレクトリ情報や、ホスト装置HからのI/O要求又は当該I/O要求に対するディスクアレイ部5の処理の進捗状況が格納される。制御部2は、後述するように、制御データの更新とともに、キャッシュメモリ部7上にバックアップ(コピー)された制御データを更新する。
論理デバイス(論理ボリューム)は、ホスト装置Hが認識する論理的なデバイスである。また、物理デバイス(物理ボリューム)は、ハードディスクドライブ等の物理的なデバイスである。図示はしないが、論理デバイスとディスクアレイ部7上の物理デバイスとは、例えば、論理デバイス/物理デバイス割当てテーブルにおいて対応付けられ、制御部2は、これを参照することにより、I/O要求で指定された論理デバイス上のアドレスを、物理デバイス上のアドレスに変換する。以下では、論理デバイス及び物理デバイスを、「ボリューム」と総称することもある。
また、本実施形態では、制御メモリ部22は、各種のプログラムを記憶するプログラム記憶領域を有する。プログラム記憶領域には、プロセッサ21上で動作するI/O処理プログラムが制御データを更新する時に呼び出される制御データ更新処理プログラム、制御部2に障害が発生した際のフェイルオーバ先を決定するフェイルオーバ先決定プログラム、フェイルオーバを行なうフェイルオーバ処理プログラム、及びフェイルバックを行うフェイルバックプログラムが記憶されている。なお、これらの各プログラムの処理の詳細については後述する。
図29は、本発明の実施形態に係るストレージシステム1のホストI/F部4の構成を示す図である。同図に示すように、ホストI/F部4は、プロトコル制御部41と、ルーティング部42と、ルーティングテーブル43とを含んで構成されている。
プロトコル制御部41は、図示しないポートに接続されたネットワークNを介してホスト装置Hに接続される。プロトコル制御部41は、ホスト装置Hとストレージシステム1との間でやりとりされるデータのプロトコル変換を行う。すなわち、プロトコル制御部41は、ネットワークN上を伝送されてきたホスト装置Hからの外部データとしてのI/O要求を、ストレージシステム1内で処理するための内部データに変換し、また、I/O要求に対してホスト装置Hに送信すべき内部データをネットワークN上に伝送するために適した外部データに変換する。
ルーティング部42は、プロトコル制御部41によりプロトコル変換されたホスト装置HからのI/O要求を、ルーティングテーブル43に従って、適切な制御部2に転送する。
ルーティングテーブル43は、例えば論理デバイス番号と、制御部2を識別するための制御部識別子とが対応付けたテーブルである。従って、ルーティング部42は、I/O要求で指定される論理デバイス番号に従って、当該I/O要求に基づく制御データを、当該論理デバイスに対するアクセスを受け持つ制御部2に振り分ける。
図30は、本発明の実施形態に係るストレージシステム1のホストI/F部4のルーティングテーブル43の一例を示す図である。
ホストI/F部4のルーティングテーブル42は、ホスト装置Hが認識する論理デバイスを識別するための論理デバイス番号(LDEV #)421と、当該論理デバイスに対するI/O処理を受け持つ制御部2を識別するための制御部識別子422とを対応付けたテーブル構造を有する。
図31は、本発明の実施形態に係るディスクI/F部6の構成を示す図である。ディスクI/F部6は、装置間でやりとりされるデータのプロトコル変換を行う点で、ホストI/F部4と同等の構成を有する。
すなわち、プロトコル制御部61は、図示しないポートに接続されたチャネルを介してディスクアレイ部5に接続され、ストレージシステム1内部の他のユニットとディスクアレイ部5との間でやりとりされるデータのプロトコル変換を行う。
ルーティング部62は、ディスクアレイ部5から読み出され、プロトコル制御部61によりプロトコル変換されたユーザデータに関連付けられた制御データを、ルーティングテーブル63に従って、適切な制御部2に転送する。
図32は、本発明の実施形態に係るディスクI/F部6のルーティングテーブル63の一例を示す図である。
ディスクI/F部6のルーティングテーブル63は、ディスクアレイ部7の物理デバイスを識別するための物理デバイス番号(PDEV #)と、当該物理デバイスに対するI/O処理を担う制御部2を識別するための制御部識別子622とを対応付けたテーブル構造を有する。
図33は、本発明の実施形態に係るストレージシステム1のキャッシュメモリ部7の構成を示す図である。
同図に示すように、キャッシュメモリ部7は、メモリコントローラ71と、メモリモジュール72とを含んで構成されている。メモリコントローラ71は、ストレージシステム1内の他のユニットからアクセス要求を受け付けて、メモリモジュール72にアクセスするための制御を行う。メモリモジュール72は、図21で示したように、複数のメモリモジュールで構成されていてもよいが、ここでは、一つの連続した記憶空間として示している。メモリモジュール72の当該記憶空間には、I/O要求に伴うユーザデータを格納するためのユーザデータ記憶領域721と、制御部2内で扱われる制御データをバックアップするための制御データバックアップ領域722と、論理デバイス又は物理デバイスであるボリュームを担当する制御部2を管理するボリューム割当てテーブル723と、どのボリュームをどの制御部2からどの制御部2にフェイルオーバしたかを記憶するフェイルオーバ記憶領域724とが形成されている。
図34は、本発明の実施形態に係るキャッシュメモリ部7の制御データバックアップ領域722の内容を説明するための図である。
制御データバックアップ領域722は、ホスト装置Hとのデータのやり取りに使用される論理デバイスごとのバックアップ領域7221と、ディスクアレイ部5とのデータのやり取りに使用される物理デバイスごとのバックアップ領域7222を有する。各領域7221及び7222には、ユーザデータとキャッシュメモリ部7上の格納位置とを対応付けるキャッシュディレクトリ情報や、ホスト装置HからのI/O要求又は当該I/O要求に対するディスクアレイ部5の処理の進捗状況が記録される。
図35は、本発明の実施形態に係るキャッシュメモリ部7のボリューム割当てテーブル723の内容を説明するための図である。
ボリューム割当てテーブル723は、どのボリューム(論理デバイス及び物理デバイス)をどの制御部2が受け持ち、また、障害発生時にどの制御部2が引き継ぐかを予め定義したテーブルである。ボリューム割当てテーブル723は、ボリューム番号7231と、そのボリューム番号7231で識別されるボリュームを管理する制御部2の制御部識別子7232と、フェイルオーバにより引き継がれる制御部2の制御部識別子7233とを対応付けたテーブル構造を有する。
図36は、本発明の実施形態に係るキャッシュメモリ部7のフェイルオーバボリューム記憶領域724の内容を説明するための図である。
フェイルオーバボリューム記憶領域724は、フェイルオーバに関する情報、すなわち、どのボリュームをどの制御部2がどの制御部2から引き継いだかを記録する。フェイルオーバボリューム記憶領域724は、ボリューム番号(論理デバイス番号又は物理デバイス番号)7241ごとに、フェイルオーバ元の制御部2の制御部識別子7242と、フェイルオーバ先の制御部2の制御部識別子7243とを対応付けたテーブル構造を有する。
次に、以上のように構成される本実施形態のストレージシステム1における障害発生時の動作例について説明する。
図37は、本発明の実施形態に係るストレージシステム1において障害が発生した場合の処理の流れを説明するためのシーケンスチャートである。より具体的には、同図は、多重化構成の制御部2A及び2Bのいずれかにおいて障害が発生した場合の処理の流れを説明している。
制御部2A及び2Bのそれぞれは、平常時、所定のボリュームに対するI/O処理を受け持っている。つまり、ホストI/F部4及びディスクI/F部6のルーティングテーブル43及び63には、I/O要求で指定される論理デバイス又は物理デバイスに応じて当該I/Oを転送すべき制御部2が定義されている。
今、制御部2Aにおいて障害が発生したとする(S1)。これにより、図示はしていないが、上記実施形態で述べたように、スイッチLSI3A及び3Bは、制御部2Aとストレージシステム1内の他のユニットとの間の入出力パスを直ちに遮断する。
制御部2Bは、スイッチLSI3A又は3Bのいずれかを介して障害発生の通知を受けると、制御部Aが受け持っていたI/O処理を引き継ぐためのフェイルオーバ処理を行う(S2)。従って、フェイルオーバ処理を行った制御部2Bは、自身が受け持っていたボリュームに対するI/O処理に加え、制御部2Aが受け持っていたボリュームに対するI/O処理を行うことになる。
一方、障害が発生した制御部2Aは、障害処理を行って、稼働が継続可能であるか否かを判断する(S3)。制御部2Aは、自身の稼働が継続可能な場合に、リセット処理後、フェイルバック処理を行う(S4)。これにより、制御部2Bに引き継がれていたI/O処理は、制御部2Aに戻され、2つの制御部2A及び2Bにより、データストレージサービスが中断されることなく、継続されることになる。
図38は、本発明の実施形態に係る制御部2における制御データ更新プログラムの動作を説明するためのフローチャートである。制御データ更新プログラムは、制御部2内のプロセッサ21(プロセッサコア211)により、I/O処理に伴って、実行される。
すなわち、同図に示すように、プロセッサコア211は、I/O処理に伴い、制御メモリ部22に新たに制御データを格納し、又は制御メモリ部22にすでに格納されている制御データを更新する(STEP3801)。続いて、プロセッサコア211は、キャッシュメモリ部7上の制御データバックアップ領域722に制御データを追加し又は更新する(STEP3802)。
従って、制御メモリ部22に格納された最新の制御データは、キャッシュメモリ81上にバックアップされることになり、いずれかの制御部2に障害が発生したとしても、他の制御部2は、障害が発生した制御部2のI/O処理を引き継ぐことが可能になる。
図39は、本発明の実施形態に係る制御部2におけるフェイルオーバ先決定プログラムの処理の流れを説明するためのフローチャートである。フェイルオーバ先決定プログラムは、ストレージシステム1内に設けられた複数の制御部2のそれぞれについて、フェイルオーバによりI/O処理を引き継ぐべき制御部2を決定するための処理を行うプログラムであり、例えば、起動用のプロセッサコア211により、データストレージサービスに先立ち、実行される。
すなわち、同図に示すように、プロセッサコア211は、ボリューム割当てテーブル722からエントリを一つ選択し(STEP3901)、当該選択したエントリの制御部識別子7232を取得する(STEP3902)。ボリューム割当てテーブル722において、ボリューム番号7231と制御部識別子7232との対応関係は、ホストI/F部4のルーティングテーブル43及びディスクI/F部6のルーティングテーブル63から作成されている。
次に、プロセッサコア211は、取得した制御部識別子7232以外の、ストレージシステム1内に設けられた制御部2の制御部識別子7232を選択する(STEP3903)。ストレージシステム1内の全ての制御部2の制御部識別子7232は、例えば、システム構成情報として制御メモリ部6に保持されている。続いて、プロセッサコア211は、当該選択した制御部識別子7232を、当該選択したエントリのフェイルオーバ先制御部識別子7233に設定する(STEP3904)。
そして、プロセッサコア211は、ボリューム割当てテーブル722における全てのエントリを、フェイルオーバ先制御部の制御部識別子7233を設定するために、選択したか否かを判断し(STEP3905)、全てのエントリについて処理を行うまで、上記処理を繰り返す。
従って、例えば、ストレージシステム1内に2つの制御部2A及び2Bが設けられている場合(制御部識別子をそれぞれ「A」及び「B」とする。)、制御部2Aが受け持つボリュームに対するフェイルオーバ先は、制御部2Bとなり、制御部2Bが受け持つボリュームに対するフェイルオーバ先は、制御部2Aとなる。
図40は、本発明の実施形態に係る制御部2におけるフェイルオーバ処理プログラムの処理の流れを説明するためのフローチャートである。フェイルオーバ処理プログラムは、いずれかの制御部2で障害が発生した場合に、正常な制御部2がI/O処理を引き継ぐためのものであり、障害が発生した制御部2以外の他の制御部2のプロセッサコア211によって、実行される。
すなわち、同図に示すように、フェイルオーバ処理プログラムを実行することとなったプロセッサコア211は、まず、キャッシュメモリ部7に記憶されているボリューム割り当てテーブル722を読み出す(STEP4001)。続いて、プロセッサコア211は、ストレージシステム1内の全てのホストI/F部4及び全てのディスクI/F部6の中からルーティングテーブル43又は63を一つ選択し(STEP4002)、さらに、当該選択したルーティングテーブルの中からエントリを一つ選択する(STEP4003)。
プロセッサコア211は、次に、ボリューム割当てテーブル722を参照し、選択したエントリのボリューム番号(すなわち、論理デバイス番号421又は物理デバイス番号631)と一致する、ボリューム割当てテーブル722のエントリを検索する(STEP4004)。
次に、プロセッサコア211は、障害が発生した制御部2の制御部識別子と検索されたエントリの制御部識別子7232とが一致するか否かを判断する(STEP4005)。これは、障害が発生した制御部2が受け持つボリュームを特定するためである。障害が発生した制御部2の制御部識別子と検索されたエントリの制御部識別子7232とが一致しないと判断する場合(STEP4005のNo)、プロセッサコア211は、未処理のエントリを選択するために、STEP4003に戻る(STEP4010のNo)。
障害が発生した制御部2の制御部識別子と検索されたエントリの制御部識別子7232とが一致すると判断する場合(STEP4005のYes)、プロセッサコア211は、さらに、自身の制御部2の制御部識別子と検索されたエントリのフェイルオーバ先制御部識別子7233とが一致するか否かを判断する(STEP4006)。これは、自身の制御部2がフェイルオーバ先として定義されているか否かを判断するためである。自身の制御部2の制御部識別子と検索されたエントリのフェイルオーバ先制御部識別子7233とが一致しないと判断する場合、プロセッサコア211は、未処理のエントリを選択するために、STEP4003に戻る(STEP4010のNo)。
これに対して、自身の制御部2の制御部識別子と検索されたエントリのフェイルオーバ先制御部識別子7233とが一致すると判断する場合、プロセッサコア211は、当該ルーティングテーブル43又は63における選択したエントリを自身の制御部識別子で書き換える(STEP4007)。これにより、障害が発生した制御部2が受け持っていたボリュームに対するI/O処理は、自身の制御部2に振り分けられることになる。続いて、プロセッサコア211は、当該選択したエントリのボリューム番号に対する制御データをキャッシュメモリ部7から読み出して、自身の制御メモリ部22に書き込む(STEP4008)。
さらに、プロセッサコア211は、書き換えたルーティングテーブル43又は63のエントリの内容をキャッシュメモリ部7上のフェイルオーバボリューム記憶領域724に記録する(STEP4008)。
そして、プロセッサコア211は、選択したルーティングテーブルの全てのエントリを選択したか否かを判断し(STEP4010)、まだ選択していないエントリがある場合には(STEP4009のNo)、全てのエントリについて処理するまで、上記処理を繰り返す。
選択したルーティングテーブルの全てのエントリを選択した場合(STEP4010のYes)、プロセッサコア211は、全てのホストI/F部4及びディスクI/F部6を選択したか否かを判断する(STEP4011)。プロセッサコア211は、まだ、選択していないホストI/F部4又はディスクI/F部6がある場合には、上記処理を繰り返す。
図41は、本発明の実施形態に係る制御部2におけるフェイルバック処理プログラムの動作を説明するためのフローチャートである。フェイルバック処理プログラムは、障害処理の終了により、稼働の継続が可能になった制御部2が、フェイルオーバ処理により一時的にI/O処理を引き継いでいた他の制御部2から当該I/O処理を引き戻すための処理を行うプログラムである。フェイルバック処理プログラムは、障害処理プログラムの終了後、起動プログラムから呼び出される。
フェイルバック処理プログラムを実行するプロセッサコア211は、キャッシュメモリ部7に記憶されたフェイルオーバボリューム記憶領域724からエントリを一つ選択する(STEP4101)。プロセッサコア211は、次に、フェイルオーバ元制御部2の制御部識別子7242と自身の制御部識別子とが一致するか否かを判断する(STEP4102)。プロセッサコア211は、フェイルオーバ元制御部2の制御部識別子7242と自身の制御部識別子とが一致しないと判断する場合(STEP4102のNo)、未処理のエントリを選択するためにSTEP4101の処理に戻る(STEP4106のNo)。
これに対して、フェイルオーバ元制御部2の制御部識別子7242と自身の制御部識別子とが一致すると判断する場合(STEP4102のYes)、プロセッサコア211は、フェイルオーバボリューム記憶領域724のボリューム番号7241と一致する、ホストI/F部4のルーティングテーブル43及びディスクインターフェース部6のルーティングテーブル63のエントリを検索し(STEP4103)、当該検索されたエントリを自身の制御部識別子で書き換える(STEP4104)。
プロセッサコア211は、さらに、該当するボリューム番号に対する制御データを、キャッシュメモリ部7の制御データバックアップ領域722に格納された該当するボリューム番号に対する制御データを、制御メモリ部6の制御データ領域に転送する(STEP4105)。
そして、プロセッサコア211は、フェイルオーバ記憶領域724の全てのエントリを選択したか否かを判断し(STEP4106)、全てのエントリを選択するまで上記処理を繰り返す(STEP4106のNo)。
これにより、ホストI/F部4のルーティングテーブル43及びディスクインターフェース部6のルーティングテーブル63は、フェイルオーバ処理前の状態に戻ることになり、障害が発生し、障害処理を行った制御部2は、I/O処理を再開することができるようになる。
以上のように、本実施形態によれば、多重化構成された制御部2のいずれかに障害が発生した場合であっても、これを検出したスイッチLSI13が、当該障害が発生した制御部2との入出力パスを直ちに遮断するので、誤動作等によりストレージシステム1内の他のユニットに対する影響を阻止することができるようになる。
また、障害が発生していない他の制御部2は、当該障害が発生した制御部2が受け持っていたI/O処理を引き継ぐので、ストレージシステム1全体としてのデータストレージサービスを停止させることなく、継続することができる。
さらに、当該障害が発生した制御部2は、I/O処理を引き継いでもらっている間に、障害処理を行い、その結果、稼働が継続可能な場合には、当該引き継いでもらっていたI/O処理を引き戻すことで、ストレージシステム全体としての高いパフォーマンスを維持することができるようになる。
[第4の実施形態]
本実施形態は、多重化された制御部2を含むストレージシステム1において、稼働率(負荷)の高い制御部2のI/O処理を稼働率の低い制御部2に引き継いでもらうことで、制御部2間の負荷を均等化することを特徴とする。従って、ある制御部2で障害が発生し、上記実施形態で述べたようなフェイルオーバ処理によって、障害が発生した制御部2のI/O処理を引き継いだ制御部2は、一時的に、負荷が高い状況が考えられる。このような場合であっても、フェイルオーバ処理によってI/O処理を引き継いだ制御部2が、負荷の低い制御部2がI/O処理を引き継ぐように制御することで、負荷が特定の制御部2に集中する事態を回避できるようになる。
図42は、本発明の実施形態に係るストレージシステム1の構成を示す図である。同図に示すように、本実施形態のストレージシステム1においては、各ユニットは多重化されている。本例では、4つの制御部2及び4つのスイッチLSI3が設けられ、これらはアドレス/データ線26を介して互いに接続されている。また、図の簡略のため省略されているが、各スイッチLSI3は、各制御部2の第1のエラー信号線27及び第2のエラー信号28を受けている。障害発生時には、上記実施形態同様、スイッチLSI3は、障害が発生した制御部2との入出力パスを遮断し、障害が発生した制御部2は、障害処理を行って、稼働を再開する。この場合、障害が発生した制御部2のI/O処理は、他の制御部2に一時的に引き継がれ、障害処理後、稼働を再開した制御部2に戻される。
本実施形態の各ユニット内部の基本的構成は、上記実施形態のものと同様であるが、各制御部2の負荷状況に従ってI/O処理を振り分けるためのいくつかのメカニズム乃至は機能が実装されている。
図43は、本発明の実施形態に係る制御部2の制御メモリ部22の内容を説明するための図である。同図に示すように、本実施形態の制御メモリ部22には、上記第3の実施形態で説明された内容に加え、さらに、負荷均等化プログラム、I/O処理引き継ぎプログラム、及びフェイルオーバ負荷分散プログラムが記憶されている。
負荷均等化プログラムは、各制御部2が行うI/O処理の量を制御部2間で均等化して、特定の制御部2の処理性能が限界に到達することを防ぐプログラムである。負荷均等化プログラムは、フェイルオーバ負荷分散プログラムによって呼び出され、実行されるが、平常時において常に実行されてもよい。
また、I/O処理引き継ぎプログラムは、制御部2間でI/O処理の一部を引き継ぐための処理を行うプログラムである。
そして、フェイルオーバ負荷分散プログラムは、フェイルオーバ処理によりI/O処理を一時的に引き継いだ制御部2の負荷が高くならないように、I/O処理を振り分けて負荷の分散を行うプログラムである。
図44は、本発明の実施形態に係るキャッシュメモリ部7の内容を説明するための図である。同図に示すように、キャッシュメモリ部7は、上記実施形態で説明した内容に加え、負荷記録テーブル725を保持している。
図45は、本発明の実施形態に係るキャッシュメモリ部7の負荷記録テーブル725の一例を示す図である。負荷記録テーブル725は、各制御部2についての稼働率を示し、制御部識別子7251と、稼働率7252とを対応付けたテーブル構造を有する。負荷記録テーブル725は、制御部2のプロセッサコア211によって更新される。例えば、制御部2内のプロセッサコア211は、定期的に、自身のプロセッサ21の稼働率(CPU負荷率)を算出して、キャッシュメモリ部7の負荷記録テーブル725に書き込む。あるいは、ホストI/F部4が、ホスト装置Hから受け取ったI/O要求の数に基づいて稼働率を算出し、キャッシュメモリ部7の負荷記録テーブル725に書き込むようにしてもよい。
図46は、本発明の実施形態に係る制御部2における負荷均等化プログラムの動作を説明するためのフローチャートである。負荷均等化プログラムは、各制御部2が行うI/O処理の量(負荷)に偏っているか否かを判断し、偏っている場合には、I/O処理の一部が他の制御部2に移行されるように制御する。
同図に示すように、負荷均等化プログラムを実行するプロセッサコア211は、キャッシュメモリ部7上の負荷記録テーブル725を読み出す(STEP4601)。プロセッサコア211は、次に、読み出した負荷記録テーブル725を参照して、自身の制御部2の稼働率7252が所定のしきい値以上であるか否かを判断する(STEP4602)。自身の制御部2の稼働率が所定のしきい値以上であると判断する場合(STEP4602のYes)、ホストI/F部4のルーティングテーブル43又はディスクI/F部6のルーティングテーブル63を参照して、自身が受け持っているボリュームを一つ選択する(STEP4603)。
次に、プロセッサコア211は、負荷記録テーブル725から稼働率7252が低い制御部2を一つ選択する(STEP4604)。この場合、稼働率が最低の制御部2が選択されることが好ましいが、例えば、所定の下限値を下回る稼働率の制御部2の中からランダムに一の制御部2を選択するようにしてもよい。
そして、プロセッサコア211は、当該選択したボリュームに対するI/O処理を引き継ぐように、スイッチLSI3を介して、当該選択した制御部2に対して引き継ぎ指示を送出する(STEP4604)。プロセッサコア21は、自身の稼働率が所定のしきい値を下回るまで、上記処理を繰り返す。
図47は、本発明の実施形態に係る制御部2におけるI/O処理引き継ぎプログラムの動作を説明するためのフローチャートである。I/O処理引き継ぎプログラムは、稼働率が高い制御部2のプロセッサコア211からの引き継ぎ指示に従い、I/O処理を引き継ぐための処理を行うプログラムであり、当該引き継ぎ指示を受けた制御部2のプロセッサコア211によって実行される。
すなわち、同図に示すように、負荷均等化プログラムを実行する制御部2から引き継ぎ指示を受けた制御部2のプロセッサコア211は、ホストI/F部4のルーティングテーブル43及びディスクI/F部6のルーティングテーブル63における、負荷均等化プログラムの実行により選択されたボリュームのボリューム番号を含むエントリを、自身の制御部2の制御部識別子で書き換える(STEP4701)。
次に、プロセッサコア211は、当該ボリュームボリュームに対する制御データを、キャッシュメモリ部7から読み出して、制御メモリ部22に転送する。
そして、プロセッサコア211は、ルーティングテーブル43及び64における書き換えたエントリに基づいて、キャッシュボリューム割当てテーブル725を更新する(STEP4703)。
図48は、本発明の実施形態に係る制御部2におけるフェイルオーバ負荷分散プログラムの動作を説明するためのフローチャートである。フェイルオーバ負荷分散プログラムは、障害が発生した制御部2からフェイルオーバ処理によりI/O処理を引き継いだ制御部2が、必要に応じて、負荷分散を行うためのプログラムである。
I/O処理を引き継いだ制御部2は、自身が元々受け持つI/O処理に加え、引き継いだI/O処理を受け持つことになり、従って、稼働率が高くなり、レスポンス性能の低下を引き起こすおそれがある。特に、障害が発生した制御部2が、再稼働できなかった場合には、引き継いだI/O処理をさらに他の制御部2に振り分ける必要がある。このため、I/O処理を引き継いだ制御部2は、所定の条件の下、負荷均等化処理を行って、制御部2間でI/O処理の均等化を図る。
すなわち、同図に示すように、I/O処理を引き継いだ制御部2のプロセッサコア211は、障害が発生した制御部2が、フェイルバック処理を行って、再稼働したか否かを判断する(STEP4801)。障害が発生した制御部2が再稼働したと判断する場合(STEP4801のYes)、プロセッサコア211は、続いて、フェイルオーバ処理が行われてから所定の時間が経過したか否かを判断する(STEP4802)。所定の時間が経過していないと判断する場合には(STEP4802のNo)、プロセッサコア211は、障害が発生した制御部2が再稼働を待つ。
これに対して、所定の時間が経過した場合、障害が発生した制御部2は、稼働可能部位がなく、従って、再稼働できなかったものとして、プロセッサコア211は、負荷均等化処理プログラムを実行する(STEP4803)。
これにより、フェイルオーバ処理によってI/O処理を引き継いだ制御部2は、自身の稼働率が所定のしきい値以上であれば、自身が受け持っているボリュームの一部に対するI/O処理を他の制御部2に割り振ることにより、負荷の均等化を図ることができるようになる。
従って、複数の制御部2を備えるストレージシステム1においてある制御部2に障害が発生した場合であっても、障害が発生した制御部2以外の制御部2が、I/O処理を引き継ぐことにより、データストレージサービスを停止させることなく、継続させることができるようになる。
また、障害が発生した制御部2以外の制御部2がI/O処理を引き継いでいる間に、障害が発生した制御部2は、障害処理を行って、再稼働可能であるか否かを判断する。この場合、再稼働可能であれば、障害が発生した制御部2は、引き継いでもらったI/O処理を引き戻すことで、負荷の均等化に寄与することになる。一方、再稼働可能でない場合は、I/O処理を引き継いだ制御部2は、負荷均等化処理を行うことで、制御部2間で負荷の均等化を図り、これによって、システムパフォーマンスの低下を招くことなく、データストレージサービスを継続させることができるようになる。
本発明は、データを格納するためのストレージシステムに広く適用することができる。
本発明の実施形態に係るストレージシステムの構成を示す図である。 本発明の実施形態に係る制御部内のプロセッサの概略構成を示す図である。 本発明の実施形態に係る制御部内の不揮発性メモリ部の内容を示す図である。 本発明の実施形態に係る制御部内のチップセット内に設けられたレジスタを説明するための図である。 本発明の実施形態に係るスイッチLSIの構成を示す図である。 本発明の実施形態に係る障害処理プログラムが有する処理乃至は機能を列挙している。 本発明の実施形態に係る制御部内のプロセッサに設けられた障害要因レジスタの一例を示す図である。 本発明の実施形態に係る制御部内の不揮発性メモリ部に格納された閉塞部位管理テーブルの一例を示す図である。 本発明の実施形態に係る制御部内のチップセットに設けられた障害要因レジスタの一例を示す図である。 本発明の実施形態に係る制御部内のチップセットに設けられた部位有効化レジスタの構成の一例を示す図である。 本発明の実施形態に係るストレージシステムにおいて障害が発生した場合の処理の流れを説明するためのシーケンスチャートである。 本発明の実施形態に係る障害処理プログラムを説明するための全体フローチャートである。 本発明の実施形態に係る障害処理プログラムにおける自己診断処理を説明するためのフローチャートである。 本発明の実施形態に係る障害処理プログラムにおける他プロセッサコア診断処理を説明するためのフローチャートである。 本発明の実施形態に係る障害処理プログラムにおける障害部位特定処理を説明するためのフローチャートである。 本発明の実施形態に係る障害処理プログラムにおける稼働可能判定処理を説明するためのフローチャートである。 本発明の実施形態に係る障害処理プログラムにおける動作モード設定処理を説明するためのフローチャートである。 本発明の実施形態に係る起動プログラムを説明するためのフローチャートである。 本発明の実施形態に係るスイッチLSIの遮断処理を説明するためのフローチャートである。 本発明の実施形態に係るスイッチLSIのルーティング部の動作を説明するためのフローチャートである。 本発明の実施形態に係るキャッシュメモリ部の構成を示す図である。 本発明の実施形態に係るキャッシュメモリ部のメモリコントローラの構成を示す図である。 本発明の実施形態に係るキャッシュメモリ部の閉塞部位管理テーブルの一例を示す図である。 本発明の実施形態に係るキャッシュメモリ部の障害検出部の動作を説明するためのフローチャートである。 本発明の実施形態に係るキャッシュメモリ部の障害部位特定部の動作を説明するためのフローチャートである。 本発明の実施形態に係るキャッシュメモリ部のコマンド変換部の動作を説明するためのフローチャートである。 本発明の実施形態に係るストレージシステムの構成を示す図である。 本発明の実施形態に係る制御部の制御メモリ部の内容を説明するための図である。 本発明の実施形態に係るストレージシステムのホストI/F部の構成を示す図である。 本発明の実施形態に係るホストI/F部のルーティングテーブルの一例を示す図である。 本発明の実施形態に係るストレージシステムのディスクI/F部の構成を示す図である。 本発明の実施形態に係るディスクI/F部のルーティングテーブルの一例を示す図である。 本発明の実施形態に係るストレージシステムのキャッシュメモリ部の構成を示す図である。 本発明の実施形態に係るキャッシュメモリ部の制御データバックアップ領域の内容を説明するための図である。 本発明の実施形態に係るキャッシュメモリ部のボリューム割当てテーブルの内容を説明するための図である。 本発明の実施形態に係るキャッシュメモリ部のフェイルオーバボリューム記憶領域の内容を説明するための図である。 本発明の実施形態に係るストレージシステムにおいて障害が発生した場合の処理の流れを説明するためのシーケンスチャートである。 本発明の実施形態に係る制御部における制御データ更新プログラムの動作を説明するためのフローチャートである。 本発明の実施形態に係る制御部におけるフェイルオーバ先決定プログラムの処理の流れを説明するためのフローチャートである。 本発明の実施形態に係る制御部におけるフェイルオーバ処理プログラムの処理の流れを説明するためのフローチャートである。 本発明の実施形態に係る制御部におけるフェイルバック処理プログラムの動作を説明するためのフローチャートである。 本発明の実施形態に係るストレージシステムの構成を示す図である。 本発明の実施形態に係る制御部の制御メモリ部の内容を説明するための図である。 本発明の実施形態に係るキャッシュメモリ部の内容を説明するための図である。 本発明の実施形態に係るキャッシュメモリ部の負荷記録テーブルの一例を示す図である。 本発明の実施形態に係る制御部における負荷均等化プログラムの動作を説明するためのフローチャートである。 本発明の実施形態に係る制御部におけるI/O処理引き継ぎプログラムの動作を説明するためのフローチャートである。 本発明の実施形態に係る制御部2におけるフェイルオーバ負荷分散プログラムの動作を説明するためのフローチャートである。
符号の説明
1…ストレージシステム
2…制御部
21…プロセッサ
22…制御メモリ部
23…不揮発性メモリ部
24…チップセット
25…フロントサイドバス
26…アドレス/データ信号線
27…第1のエラー信号線
28…第2のエラー信号線
3…スイッチLSI
4…ホストインターフェース部
5…ディスクアレイ部
6…ディスクインターフェース部
7…キャッシュメモリ部
8…内部ネットワーク

Claims (20)

  1. ホスト装置に対してデータストレージサービスを提供するストレージシステムであって、
    前記ホスト装置に接続可能に構成されたホストインターフェース部と、
    データを格納するボリュームが形成されたディスクアレイ部に接続可能に構成されたディスクインターフェース部と、
    前記ホストインターフェース部及び前記ディスクインターフェース部にそれぞれ接続され、前記ユーザデータをキャッシュするキャッシュメモリ部と、
    前記ホストインターフェース部、前記ディスクインターフェース部、及びキャッシュメモリ部にそれぞれ接続されたスイッチLSIと、
    複数のプロセッサを有し、前記スイッチLSIに接続された制御部と、を備え、
    前記スイッチLSIは、
    前記制御部内の部位に障害が発生した場合に出力されるエラー信号に基づいて、前記制御部との間の入出力パスを遮断し、
    前記制御部は、
    前記複数のプロセッサのいずれかの制御の下、所定の障害処理を行った後、前記スイッチLSIに対して前記遮断の解除を指示することを特徴とするストレージシステム。
  2. 前記複数のプロセッサはそれぞれ、前記エラー信号に基づいて、自身が正常に動作可能であるか否かを判断し、
    自身が正常に動作可能であると判断したプロセッサのうち一のプロセッサが、前記所定の障害処理を行うことを特徴とする請求項1記載のストレージシステム。
  3. 前記制御部内の少なくとも一の部位は、障害要因を記録する障害要因レジスタを有することを特徴とする請求項2記載のストレージシステム。
  4. 前記制御部は、前記一のプロセッサの制御の下、前記障害要因レジスタに基づいて、前記障害が発生した部位を特定することを特徴とする請求項3記載のストレージシステム。
  5. 前記制御部は、前記一のプロセッサの制御の下、前記特定した部位が使われない閉塞状態に設定することを特徴とする請求項4記載のストレージシステム。
  6. 前記制御部は、前記一のプロセッサの制御の下、前記閉塞状態に設定された部位以外の部位により前記制御部自身が正常に稼働可能であるか否かを判断し、前記制御部自身が正常に稼働可能であると判断する場合に、前記閉塞状態に設定された部位以外の部位で稼働を再開するように制御することを特徴とする請求項5記載のストレージシステム。
  7. 前記ストレージシステムは、前記ディスクアレイ部に形成された複数のボリュームのそれぞれに対するI/O処理を受け持つ複数の制御部を備え、
    第1の制御部内の部位に障害が発生した場合に、第2の制御部が、前記第1の制御部が受け持つI/O処理を引き継ぐことを特徴とする請求項1記載のストレージシステム。
  8. 前記2の制御部は、前記所定の障害処理を行った後、前記第2の制御部から前記I/O処理を引き戻すことを特徴とする請求項7記載のストレージシステム。
  9. 前記第2の制御部は、前記I/O処理を引き継いだ結果、自身の負荷が所定のしきい値よりも高いと判断する場合に、自身が受け持つI/O処理の一部を第3の制御部が引き継ぐように制御することを特徴とする請求項9記載のストレージシステム。
  10. 前記キャッシュメモリ部は、前記複数の制御部のそれぞれが保持する制御データのバックアップデータを保持することを特徴とする請求項7記載のストレージシステム。
  11. ホスト装置に対してデータストレージサービスを提供するストレージシステムの制御方法であって、
    複数のプロセッサを有する少なくとも一つの制御部が、前記各プロセッサの制御の下、前記データストレージサービスを遂行するステップと、
    前記制御部内の部位に障害が発生した場合に出力されるエラー信号を、前記スイッチLSIが検出するステップと、
    前記スイッチLSIが、前記検出された障害に基づいて、前記制御部との間の入出力パスを遮断するステップと、
    前記制御部が、前記入出力パスが遮断されている間に、所定の障害処理を行うステップと、
    前記制御部が、前記スイッチLSIに対して、前記遮断の解除を指示するステップと、
    を含むことを特徴とするストレージシステムの制御方法。
  12. 前記複数のプロセッサがそれぞれ、前記エラー信号に基づいて、自身が正常に動作可能であるか否かを判断し、
    自身が正常に動作可能であると判断したプロセッサのうち一のプロセッサが、前記所定の障害処理を行うことを特徴とする請求項11記載のストレージシステムの制御方法。
  13. 前記制御部内の少なくとも一の部位は、障害要因を記録する障害要因レジスタを有することを特徴とする請求項12記載のストレージシステム。
  14. 前記制御部は、前記一のプロセッサの制御の下、前記障害要因レジスタに基づいて、前記障害が発生した部位を特定することを特徴とする請求項13記載のストレージシステムの制御方法。
  15. 前記制御部は、前記一のプロセッサの制御の下、前記特定した部位を閉塞状態に設定することを特徴とする請求項14記載のストレージシステムの制御方法。
  16. 前記制御部は、前記一のプロセッサの制御の下、前記閉塞状態に設定された部位以外の部位により前記制御部自身が正常に稼働可能であるか否かを判断し、前記制御部自身が正常に稼働可能であると判断する場合に、前記閉塞状態に設定された部位以外の部位で稼働を再開するように制御することを特徴とする請求項15記載のストレージシステムの制御方法。
  17. 第1の制御部内の部位に障害が発生した場合に、第2の制御部が、前記第1の制御部が受け持つI/O処理を引き継ぐステップ、をさらに含むことを特徴とする請求項11記載のストレージシステムの制御方法。
  18. 前記2の制御部が、前記所定の障害処理を行った後、前記第2の制御部から前記I/O処理を引き戻すステップ、をさらに含むことを特徴とする請求項17記載のストレージシステムの制御方法。
  19. 前記第2の制御部が、前記I/O処理を引き継いだ結果、自身の負荷が所定のしきい値よりも高いと判断する場合に、自身が受け持つI/O処理の一部を第3の制御部が引き継ぐように制御するステップ、をさらに含むことを特徴とする請求項19記載のストレージシステムの制御方法。
  20. ホスト装置に対してデータストレージサービスを提供するストレージシステムを構成する、複数の部位を有するユニットであって、
    前記複数の部位のいずれかに障害が発生したことを検出する障害検出部と、
    前記検出された障害の発生に基づいて、外部のユニットとの間の入出力パスを遮断する遮断処理部と、
    前記入出力パスが遮断されている間に、前記障害が発生した部位を特定する障害特定部と、
    前記特定された部位を閉塞状態に設定する閉塞状態設定部と、を備え、
    前記遮断処理部は、前記閉塞状態に設定された後に、前記遮断を解除することを特徴とするユニット。
JP2007167470A 2007-06-26 2007-06-26 ストレージシステム及びストレージシステムの制御方法 Expired - Fee Related JP4475598B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2007167470A JP4475598B2 (ja) 2007-06-26 2007-06-26 ストレージシステム及びストレージシステムの制御方法
US12/007,461 US7809981B2 (en) 2007-06-26 2008-01-10 Storage system and control method of storage system
US12/880,639 US7958391B2 (en) 2007-06-26 2010-09-13 Storage system and control method of storage system
US13/107,163 US8312314B2 (en) 2007-06-26 2011-05-13 Storage system and control method of storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007167470A JP4475598B2 (ja) 2007-06-26 2007-06-26 ストレージシステム及びストレージシステムの制御方法

Publications (2)

Publication Number Publication Date
JP2009009200A true JP2009009200A (ja) 2009-01-15
JP4475598B2 JP4475598B2 (ja) 2010-06-09

Family

ID=40162220

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007167470A Expired - Fee Related JP4475598B2 (ja) 2007-06-26 2007-06-26 ストレージシステム及びストレージシステムの制御方法

Country Status (2)

Country Link
US (3) US7809981B2 (ja)
JP (1) JP4475598B2 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010211529A (ja) * 2009-03-10 2010-09-24 Fujitsu Ltd ストレージ装置、中継装置、及び、診断方法
JP2011086244A (ja) * 2009-10-19 2011-04-28 Fujitsu Ltd ストレージシステム,制御装置および診断方法
WO2012073287A1 (en) 2010-12-01 2012-06-07 Hitachi, Ltd. Storage control apparatus and storage control method
US8219760B2 (en) 2009-04-06 2012-07-10 Hitachi, Ltd. Storage subsystem and its control method
JP2012523024A (ja) * 2009-09-01 2012-09-27 株式会社日立製作所 マルチコアプロセッサを有する要求処理システム
JP2013513137A (ja) * 2010-05-13 2013-04-18 株式会社日立製作所 情報処理装置、及びデータの転送方法
WO2015033433A1 (ja) * 2013-09-06 2015-03-12 株式会社日立製作所 ストレージ装置及び障害部位特定方法
JP2015525424A (ja) * 2012-06-25 2015-09-03 ネットアップ,インコーポレイテッド ネットワークストレージシステムにおける無停止のコントローラの交換

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4475598B2 (ja) * 2007-06-26 2010-06-09 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
US8006128B2 (en) * 2008-07-31 2011-08-23 Datadirect Networks, Inc. Prioritized rebuilding of a storage device
US8010835B2 (en) * 2008-11-11 2011-08-30 Datadirect Networks, Inc. Storage device realignment
US20110283116A1 (en) * 2009-08-10 2011-11-17 Hitachi Ltd. Storage controller and power saving method
US8533539B2 (en) * 2010-09-17 2013-09-10 Symantec Corporation Fault handling systems and methods
TW201218075A (en) * 2010-10-20 2012-05-01 Hon Hai Prec Ind Co Ltd Dual processor startup system
WO2013128490A1 (en) * 2012-03-01 2013-09-06 Hitachi, Ltd. Method for reusing resource and storage sub-system using the same
US8990615B1 (en) * 2012-09-28 2015-03-24 Emc Corporation System and method for cache management
WO2015011749A1 (ja) * 2013-07-22 2015-01-29 株式会社日立製作所 ストレージシステムおよびストレージシステムの障害管理方法
US9239797B2 (en) * 2013-08-15 2016-01-19 Globalfoundries Inc. Implementing enhanced data caching and takeover of non-owned storage devices in dual storage device controller configuration with data in write cache
GB2527067B (en) * 2014-06-10 2021-05-19 Advanced Risc Mach Ltd Malfunction escalation
KR101704787B1 (ko) * 2014-12-31 2017-02-22 주식회사 효성 제어기의 이중화 시스템
US10303572B2 (en) * 2017-01-23 2019-05-28 Wipro Limited Methods and systems for improving fault tolerance in storage area network
CN110310672B (zh) * 2018-03-27 2023-06-23 厦门歌乐电子企业有限公司 一种音乐播放器及其控制方法
JP2020171002A (ja) * 2019-04-05 2020-10-15 キヤノン株式会社 情報処理装置及びその制御方法
TWI722447B (zh) * 2019-06-03 2021-03-21 瑞昱半導體股份有限公司 傳輸介面的錯誤處理方法以及相關的錯誤處理架構

Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62236056A (ja) * 1986-04-07 1987-10-16 Nec Corp 情報処理システムの入出力制御装置
JPH04275664A (ja) * 1991-03-01 1992-10-01 Fuji Electric Co Ltd プロセッサ間相互監視方法及びその装置
JPH04324569A (ja) * 1991-04-24 1992-11-13 Mitsubishi Electric Corp マルチプロセッサシステム
JPH04329461A (ja) * 1991-04-30 1992-11-18 Nec Corp 障害処理方式
JPH0546502A (ja) * 1991-08-09 1993-02-26 Fujitsu Ltd ポート単位のパス閉塞機能を備えたデバイスコントローラ
JPH0916535A (ja) * 1995-06-27 1997-01-17 Mitsubishi Electric Corp マルチプロセッサ計算機
JPH1139223A (ja) * 1997-07-18 1999-02-12 Nec Corp 電子ディスク装置
JPH1165868A (ja) * 1997-08-26 1999-03-09 Nec Corp 冗長化起動方式
JPH11224244A (ja) * 1998-02-09 1999-08-17 Nec Corp 情報処理装置及びそのシステム構成情報の自動生成方法及び記録媒体
JPH11250026A (ja) * 1998-02-26 1999-09-17 Nec Corp 並列マルチプロセッサシステムの障害リカバリ方法及び方式
JPH11296311A (ja) * 1998-04-08 1999-10-29 Hitachi Ltd 記憶装置の耐故障制御方式
JP2001243207A (ja) * 2000-03-01 2001-09-07 Nec Corp 情報処理システム
JP2004213125A (ja) * 2002-12-27 2004-07-29 Hitachi Ltd 高可用ディスク制御装置とその障害処理方法及び高可用ディスクサブシステム
JP2005316861A (ja) * 2004-04-30 2005-11-10 Hitachi Ltd ディスクアレイ装置
JP2006107045A (ja) * 2004-10-04 2006-04-20 Hitachi Ltd ストレージ装置
JP2006285778A (ja) * 2005-04-01 2006-10-19 Hitachi Ltd ストレージシステム及び記憶制御方法
JP2007115019A (ja) * 2005-10-20 2007-05-10 Hitachi Ltd ストレージのアクセス負荷を分散する計算機システム及びその制御方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5222219A (en) * 1988-10-25 1993-06-22 Hewlett-Packard Company Pipeline computer system having write order preservation
US5222217A (en) * 1989-01-18 1993-06-22 International Business Machines Corporation System and method for implementing operating system message queues with recoverable shared virtual storage
US5206860A (en) * 1990-08-31 1993-04-27 International Business Machines Corporation Recovery from a possible switching error in a computer i/o system
WO1992005495A1 (en) * 1990-09-20 1992-04-02 Fujitsu Limited Input/output controller
US5615329A (en) * 1994-02-22 1997-03-25 International Business Machines Corporation Remote data duplexing
US5619644A (en) * 1995-09-18 1997-04-08 International Business Machines Corporation Software directed microcode state save for distributed storage controller
US6003114A (en) * 1997-06-17 1999-12-14 Emc Corporation Caching system and method providing aggressive prefetch
US6594785B1 (en) * 2000-04-28 2003-07-15 Unisys Corporation System and method for fault handling and recovery in a multi-processing system having hardware resources shared between multiple partitions
US6606690B2 (en) * 2001-02-20 2003-08-12 Hewlett-Packard Development Company, L.P. System and method for accessing a storage area network as network attached storage
US7370239B2 (en) * 2001-05-31 2008-05-06 Fisher-Rosemount Systems, Inc. Input/output device with configuration, fault isolation and redundant fault assist functionality
US7343524B2 (en) * 2002-09-16 2008-03-11 Finisar Corporation Network analysis omniscent loop state machine
US7263593B2 (en) * 2002-11-25 2007-08-28 Hitachi, Ltd. Virtualization controller and data transfer control method
JP4433372B2 (ja) * 2003-06-18 2010-03-17 株式会社日立製作所 データアクセスシステム及び方法
US7441154B2 (en) * 2003-09-12 2008-10-21 Finisar Corporation Network analysis tool
US7624302B2 (en) * 2004-10-25 2009-11-24 Hewlett-Packard Development Company, L.P. System and method for switching the role of boot processor to a spare processor responsive to detection of loss of lockstep in a boot processor
US7668981B1 (en) * 2007-03-28 2010-02-23 Symantec Operating Corporation Storage paths
JP4475598B2 (ja) * 2007-06-26 2010-06-09 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法

Patent Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62236056A (ja) * 1986-04-07 1987-10-16 Nec Corp 情報処理システムの入出力制御装置
JPH04275664A (ja) * 1991-03-01 1992-10-01 Fuji Electric Co Ltd プロセッサ間相互監視方法及びその装置
JPH04324569A (ja) * 1991-04-24 1992-11-13 Mitsubishi Electric Corp マルチプロセッサシステム
JPH04329461A (ja) * 1991-04-30 1992-11-18 Nec Corp 障害処理方式
JPH0546502A (ja) * 1991-08-09 1993-02-26 Fujitsu Ltd ポート単位のパス閉塞機能を備えたデバイスコントローラ
JPH0916535A (ja) * 1995-06-27 1997-01-17 Mitsubishi Electric Corp マルチプロセッサ計算機
JPH1139223A (ja) * 1997-07-18 1999-02-12 Nec Corp 電子ディスク装置
JPH1165868A (ja) * 1997-08-26 1999-03-09 Nec Corp 冗長化起動方式
JPH11224244A (ja) * 1998-02-09 1999-08-17 Nec Corp 情報処理装置及びそのシステム構成情報の自動生成方法及び記録媒体
JPH11250026A (ja) * 1998-02-26 1999-09-17 Nec Corp 並列マルチプロセッサシステムの障害リカバリ方法及び方式
JPH11296311A (ja) * 1998-04-08 1999-10-29 Hitachi Ltd 記憶装置の耐故障制御方式
JP2001243207A (ja) * 2000-03-01 2001-09-07 Nec Corp 情報処理システム
JP2004213125A (ja) * 2002-12-27 2004-07-29 Hitachi Ltd 高可用ディスク制御装置とその障害処理方法及び高可用ディスクサブシステム
JP2005316861A (ja) * 2004-04-30 2005-11-10 Hitachi Ltd ディスクアレイ装置
JP2006107045A (ja) * 2004-10-04 2006-04-20 Hitachi Ltd ストレージ装置
JP2006285778A (ja) * 2005-04-01 2006-10-19 Hitachi Ltd ストレージシステム及び記憶制御方法
JP2007115019A (ja) * 2005-10-20 2007-05-10 Hitachi Ltd ストレージのアクセス負荷を分散する計算機システム及びその制御方法

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010211529A (ja) * 2009-03-10 2010-09-24 Fujitsu Ltd ストレージ装置、中継装置、及び、診断方法
US8219760B2 (en) 2009-04-06 2012-07-10 Hitachi, Ltd. Storage subsystem and its control method
JP2012519316A (ja) * 2009-04-06 2012-08-23 株式会社日立製作所 ストレージサブシステム、及びその制御方法
JP2012523024A (ja) * 2009-09-01 2012-09-27 株式会社日立製作所 マルチコアプロセッサを有する要求処理システム
JP2011086244A (ja) * 2009-10-19 2011-04-28 Fujitsu Ltd ストレージシステム,制御装置および診断方法
JP2013513137A (ja) * 2010-05-13 2013-04-18 株式会社日立製作所 情報処理装置、及びデータの転送方法
WO2012073287A1 (en) 2010-12-01 2012-06-07 Hitachi, Ltd. Storage control apparatus and storage control method
US8438429B2 (en) 2010-12-01 2013-05-07 Hitachi, Ltd. Storage control apparatus and storage control method
JP2015525424A (ja) * 2012-06-25 2015-09-03 ネットアップ,インコーポレイテッド ネットワークストレージシステムにおける無停止のコントローラの交換
WO2015033433A1 (ja) * 2013-09-06 2015-03-12 株式会社日立製作所 ストレージ装置及び障害部位特定方法
US9575855B2 (en) 2013-09-06 2017-02-21 Hitachi, Ltd. Storage apparatus and failure location identifying method

Also Published As

Publication number Publication date
US8312314B2 (en) 2012-11-13
US20090006890A1 (en) 2009-01-01
US20110246818A1 (en) 2011-10-06
US7958391B2 (en) 2011-06-07
US20110004785A1 (en) 2011-01-06
JP4475598B2 (ja) 2010-06-09
US7809981B2 (en) 2010-10-05

Similar Documents

Publication Publication Date Title
JP4475598B2 (ja) ストレージシステム及びストレージシステムの制御方法
US6732289B1 (en) Fault tolerant data storage system
US7895287B2 (en) Clustered storage system with external storage systems
JP4939102B2 (ja) ネットワークブート計算機システムの高信頼化方法
US7770053B1 (en) Systems and methods for maintaining data integrity during a migration
US7185222B2 (en) Apparatus, system, and method for maintaining data in a storage array
US8788636B2 (en) Boot controlling method of managed computer
US8412892B2 (en) Storage system and ownership control method for storage system
US8762648B2 (en) Storage system, control apparatus and control method therefor
US20180260123A1 (en) SEPARATION OF DATA STORAGE MANAGEMENT ON STORAGE devices FROM LOCAL CONNECTIONS OF STORAGE DEVICES
US11573737B2 (en) Method and apparatus for performing disk management of all flash array server
US20120117321A1 (en) Storage system and ownership control method for storage system
JP2008225753A (ja) 計算機システム、アクセス制御方法及び管理計算機
JP2007025933A (ja) ストレージシステム及びそのファームウェア自動更新方法
US20090177916A1 (en) Storage system, controller of storage system, control method of storage system
US8095828B1 (en) Using a data storage system for cluster I/O failure determination
US20170277914A1 (en) Computer system and control method therefor
JP5484434B2 (ja) ネットワークブート計算機システム、管理計算機、及び計算機システムの制御方法
JP2005122763A (ja) 記憶装置
US10656867B2 (en) Computer system, data management method, and data management program
US9952805B2 (en) Storage system and data write method using a logical volume to either store data successfully onto a first memory or send a failure response to a server computer if the storage attempt fails
JP4808793B2 (ja) 障害管理装置及びプログラム
JP2006092166A (ja) ライブラリ制御システム
JP5490067B2 (ja) 障害管理装置及びプログラム
JP5425146B2 (ja) 障害管理装置及びプログラム

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20090220

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090626

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091217

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100210

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: 20100303

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100305

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees