JP2012133456A - ストレージ装置及びストレージ装置の制御方法 - Google Patents

ストレージ装置及びストレージ装置の制御方法 Download PDF

Info

Publication number
JP2012133456A
JP2012133456A JP2010283108A JP2010283108A JP2012133456A JP 2012133456 A JP2012133456 A JP 2012133456A JP 2010283108 A JP2010283108 A JP 2010283108A JP 2010283108 A JP2010283108 A JP 2010283108A JP 2012133456 A JP2012133456 A JP 2012133456A
Authority
JP
Japan
Prior art keywords
data
unit
controller
failure
data controller
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
JP2010283108A
Other languages
English (en)
Other versions
JP5966243B2 (ja
Inventor
Satoru Nishida
悟 西田
Yukio Nishimura
幸夫 西村
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 JP2010283108A priority Critical patent/JP5966243B2/ja
Priority to US13/279,491 priority patent/US8572428B2/en
Publication of JP2012133456A publication Critical patent/JP2012133456A/ja
Application granted granted Critical
Publication of JP5966243B2 publication Critical patent/JP5966243B2/ja
Active 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1443Transmit or communication errors
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】データ受信側のCMに波及する異常が発生時に、データ受信側のCMの動作を継続させるとともに、メモリに異常データが書き込まれたままになる状態を回避するストレージ装置及びストレージ装置の制御方法を提供する。
【解決手段】データ送信部23は、メモリ25に記憶されたデータをCM1へ送信する。障害検出部21は、PCIeブリッジ24の障害を検出し、異常が発生したデータを再送信させる。そして、データ書込部13は、データ送信部23により送信されたデータを取得し、メモリ15に書き込む。障害検出部11は、PCIeブリッジ14及びデータ書込部13における障害を検出し、検出した障害がデータ送信部23によるものか否かを判定する。制御部12は、発生した障害がデータ送信部23による場合、再送信されてくるデータを受信するようデータ書込部13及びPCIeブリッジ14を制御する。
【選択図】図1

Description

本発明は、ストレージ装置及びストレージ装置の制御方法に関する。
ホストから送信されたデータを記憶するストレージ装置は、受信したデータをハードディスクに書き込むためのコントローラモジュール(CM:Controller Module、以下では「CM」と呼ぶこともある。)を有している。このCMは、揮発性のメモリを有している。そして、CMは、処理の高速化のため、受信データを書き込む際に、一旦自己のメモリにデータを蓄積した後、メモリ上のデータをハードディスクに書き込むことを行っている。
近年、信頼性の向上の要求を受けて、ストレージ装置では、CMが故障した場合にも処理を継続できるように、CMを複数設け、それぞれのCMを相互に接続し、各CMのメモリ上のデータの二重化を行っている。
この二重化において、一方のCMで発生した異常は二重化されている他方のCM内部までは波及しないと考えられていた。そこで、CMに設けられているデバイスの異常情報から故障が発生しているCMを特定し、そのCMをダウンさせるなどの切り離し処理を行っていた。
しかし、発生した異常の種類によってはCMの内部まで異常が波及する場合があることが明らかになってきた。この場合、故障が発生しているCMだけでなく、故障が発生していない側のCMにおいても異常が発生していると判定されることになり、両方のCM共にダウンさせてしまう問題があった。このような問題が発生する異常の種類としては、PCIe(Peripheral Component Interconnect express)ブリッジの故障などがある。
そこで、PCIeブリッジが故障した場合のストレージの動作を具体的に説明する。ここでは、ストレージ装置がCM#0及びCM#1という2つのCMを有している場合で説明する。
CM#1のPCIeブリッジにて異常が発生する。この異常が発生する原因としては、例えばデータパリティエラーなどがある。そこで、CM#1は、この異常情報から自己が故障していると判定し、自己をダウンする。
これに対して、CM#0のPCIeブリッジにおいても異常が検出される。そして、CM#0は、この異常情報からCM#1が異常と判定する。
ここで、CM#0のPCIeブリッジを通過した異常データはメモリコントローラまで到達し、パリティエラーとなる。そして、CM#0は、メモリコントローラにおけるパリティエラーによる異常を検出する。この場合、CM#0は、メモリコントローラの故障と判定し、自己をダウンする。
さらに、CM#0がダウンする前に、異常データを受けたメモリコントローラも異常データを止めることなくメモリに異常データを書き込んでしまう。このとき、メモリはECC(Error Check and Correct)保護されているが、メモリコントローラは異常データを基にECCを生成するため、書き込んだデータが異常であることの検出ができない状態となる。
この点、ストレージの耐障害性向上のために様々な技術が提案されている。例えば、CMからディスクへの書き込みで異常が発生した場合に、故障CMからディスクへのパスを再構築してデータの書き込みを完了させる従来技術がある。また、障害が発生した場合に故障箇所を判定する従来技術が提案されている。さらに、障害が発生した部位を特定し再起動させる従来技術が提案されている。また、アクセス性能を向上させるため、最適な経路を選択する従来技術が提案されている。
特開2006−107053号公報 特開2000−181887号公報 特開2009−266119号公報 特開2007−293448号公報
しかしながら、従来の技術では、パリティエラーなどによる故障発生の場合には、故障が発生していない側のCMにも異常が波及してしまうため、実際には故障が発生していないCMでも故障が発生していると判定されてしまう。例えば、ディスクへのパスを再構築する従来技術では、ディスクへのアクセスは確保されるが、メモリへの書き込み時にエラーが発生し、正常なCMのメモリにエラーが書き込まれてしまった場合には、対処することは困難である。また、障害箇所の特定や障害部位の再起動の従来技術でも、書き込み先のCMへの異常の波及の影響を抑えることは困難である。さらに、アクセス性能の向上のために最適な経路を選択する技術でも、エラー発生時の動作は考慮されておらず、書き込み先のCMへの異常の波及の影響を抑えることは困難である。
開示の技術は、上記に鑑みてなされたものであって、データ受信側のCMに波及する異常が発生しても、データ受信側のCMの動作を継続させるとともに、メモリに異常データが書き込まれたままになる状態を回避するストレージ装置及びストレージ装置の制御方法を提供することを目的とする。
本願の開示するストレージ装置及びストレージ装置の制御方法は、一つの態様において、第1データコントローラと第2データコントローラとを有する。そして、前記第1データコントローラは、外部から入力されたデータを記憶する第1記憶部と、前記第1データコントローラのデータの伝送経路と前記第2データコントローラのデータの伝送経路とを接続する第1バス接続部と、前記第1バス接続部を介して前記第1記憶部に記憶された前記データを前記第2データコントローラへ送信するデータ送信部と、前記第1バス接続部のデータの送信における障害を検出し、送信時に障害を発生させたデータを前記データ送信部に再送信させる第1障害検出部とを備える。そして、前記第2データコントローラは、前記第1データコントローラから送信されたデータを記憶する第2記憶部と、前記第1データコントローラのデータの伝送経路と前記第2データコントローラのデータの伝送経路とを接続する第2バス接続部と、前記第2バス接続部を介して前記データ送信部により送信されたデータを取得し、前記第2記憶部に書き込むデータ書込部と、前記第2バス接続部及び前記データ書込部における障害を検出し、検出した障害が前記データ送信部によるものか否かを判定する第2障害検出部と、前記第2バス接続部及び前記データ書込部において発生した障害が前記データ送信部によるものの場合、前記データ送信部から再送信されてくるデータを受信するよう前記第2バス接続部及び前記データ書込部を制御する制御部とを備える。
本願の開示するストレージ装置及びストレージ装置の制御方法の一つの態様によれば、データ受信側のCMに波及する異常が発生しても、データ受信側のCMの動作を継続させることができるという効果を奏する。さらに、メモリに異常データが書き込まれたままになる状態を回避することができるという効果を奏する。
図1は、実施例1に係るコントローラモジュールのブロック図である。 図2は、ストレージ装置のハードウェアの全体構成を示すハードウェア構成図である。 図3は、実施例1に係るストレージ装置のデータ二重化におけるパリティエラー発生時の処理のシーケンス図である。 図4は、実施例2に係るコントローラモジュールのブロック図である。 図5は、実施例2に係るストレージ装置のデータ二重化におけるパリティエラー発生時の処理のシーケンス図である。 図6は、実施例2の変形例に係るストレージ装置のデータ二重化におけるパリティエラー発生時の処理のシーケンス図である。 図7は、実施例3に係るコントローラモジュールのブロック図である。 図8は、実施例3に係るストレージ装置のデータ二重化におけるパリティエラー発生時の処理のシーケンス図である。
以下に、本願の開示するストレージ装置及びストレージ装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示するストレージ装置及びストレージ装置の制御方法が限定されるものではない。
図1は、本実施例に係るストレージ装置に配置されたコントローラモジュール(CM)のブロック図である。図1に示すように、CM1は、障害検出部11、制御部12、データ書込部13、バス接続部14及び揮発性記憶部15を有している。また、CM2は、障害検出部21、制御部22、データ送信部23、バス接続部24及び揮発性記憶部25を有している。ここで、本実施例では、バス接続部14及びバス接続部24は、PCIeブリッジにあたるので、以下では、PCIeブリッジ14及びPCIeブリッジ24と言う。また、本実施例では揮発性記憶部15及び揮発性記憶部25は、メモリにあたるので、以下では、メモリ15及びメモリ25という。この、CM1が「第2データコントローラ」の一例にあたり、CM2が「第1データコントローラ」の一例にあたる。また、揮発性記憶部25が「第1記憶部」の一例にあたり、揮発性記憶部15が「第2記憶部」の一例にあたる。
また、CM2はサーバなどのホストコンピュータ(以下では、単に「ホスト」と言う。)と接続しており、ホストからのデータ及びそのデータの書き込み命令を受信する。そして、CM2は、ホストからのデータの書き込み命令を受信すると、メモリ25にデータを一時的に格納する。そして、CM2は、メモリ25に蓄積しているデータをハードディスクに書き込む。これらのストレージ装置の全体的な動作については後で詳細に説明する。このとき、CM2及びCM1はメモリ25に格納されているデータをメモリ15にコピーすることで、データの二重化を行う。以下では、このデータの二重化時のCM1及びCM2の動作について説明する。
以下の説明では、ホストから送信されたデータがメモリ25に既に格納されている場合で説明する。また、以下の説明ではデータのパリティエラーが起こった場合を例に説明する。ここで、以下の説明では、発生するエラーとしてパリティエラーを例に説明するが、検出するエラーは、データ受信側のCMの内部に異常が波及するエラーであれば特に制限は無い。例えば、このエラーの他の例としては、データの格納先のアドレスの異常や伝送路異常などでもよい。
データ送信部23は、メモリ25からデータを読み出す。そして、データ送信部23は、PCIeブリッジ24に読み出したデータを送信する。また、データ送信部23は、後述する障害検出部21からデータの再送の命令を受けると、PCIeブリッジ24に向けて最後に送信したデータをメモリ25から読み出す。そして、データ送信部23は、読み出したデータをPCIeブリッジ24へ再送信する。
PCIeブリッジ24は、後述するPCIeブリッジ14とともにCM1のバスとCM2のバスとの間を繋ぎ、CM1とCM2との間でデータの授受が行えるようにする。PCIeブリッジ24は、データ送信部23からデータを受信する。そして、PCIeブリッジ24は、受信したデータのパリティチェックなどのデータのチェックを行う。そして、PCIeブリッジ24は、パリティチェックの結果を障害検出部21へ出力する。さらに、CM1のPCIeブリッジ14にデータを送信する。このとき、PCIeブリッジ24は、例えデータのパリティチェックの結果に異常があっても、データの送信を行う。このPCIeブリッジ24が「第1バス接続部」の一例にあたる。
障害検出部21は、PCIeブリッジ24において、パリティエラーなどを含む予め決められた種類のエラーなどの所定の異常が発生したか否かを判定する。例えば、障害検出部21は、PCIeブリッジ24からパリティチェックの結果を取得する。そして、障害検出部21は、パリティエラーが発生している場合、PCIeブリッジ24において、所定の異常が発生したと判定する。そして、障害検出部21は、送信したデータを異常データと判定する。さらに、障害検出部21は、PCIeブリッジ24で故障が発生したと判定する。そして、障害検出部21は、異常が発生したデータの再送をデータ送信部23に指示する。この障害検出部21が「第1障害検出部」の一例にあたる。
制御部22は、PCIeブリッジ24の障害の検出の通知を障害検出部21から受ける。そして、データの再送信において障害検出部21から障害の検出の通知を受けなければ、制御部22は、データの再送信が正常に行われたと判定する。また、制御部22は、データの再送信において障害検出部21が障害を検出した回数をカウントし、カウントしている回数が所定回数に達した場合に、再送信が所定回数行われたと判定する。そして、制御部22は、データ送信部23によるデータの再送信において、正常に送信できた場合、もしくはデータ送信部23がデータの再送信を所定回数行った場合、CM2をダウンさせる。
PCIeブリッジ14は、PCIeブリッジ24とともにCM1のバスとCM2のバスとの間を繋ぎ、CM1とCM2との間でデータの授受が行えるようにする。PCIeブリッジ14は、PCIeブリッジ24からデータを受信する。また、PCIeブリッジ14は、データ送信部23によって再送信されたデータをPCIeブリッジ24から受信する。そして、PCIeブリッジ14は、受信したデータのパリティチェックを行う。そして、PCIeブリッジ14は、受信したデータをデータ書込部13へ送信する。このとき、PCIeブリッジ14は、例えデータのパリティチェックの結果に異常があっても、データの送信を行う。このPCIeブリッジ14が「第2バス接続部」の一例にあたる。
データ書込部13は、データ送信部23から送られてきたデータをPCIeブリッジ14から受信する。また、データ書込部13は、データ送信部23によって再送信されたデータをPCIeブリッジ14から受信する。そして、データ書込部13は、受信したデータのパリティチェックを行う。そして、データ書込部13は、受信したデータをメモリ15に書き込む。このとき、データ書込部13は、例えデータのパリティチェックの結果に異常があっても、データの書き込みを行う。
障害検出部11は、パリティエラーなどを含む予め決められた種類のエラーを所定の異常として記憶している。そして、障害検出部11は、PCIeブリッジ14及びデータ書込部13において所定の異常が発生しているか否かを判定する。例えば、障害検出部11は、PCIeブリッジ14及びデータ書込部13からパリティチェックの結果を取得する。そして、障害検出部11は、パリティチェックの結果に異常が有る場合、所定の異常が発生していると判定する。そして、障害検出部11は、異常が発生したデータを異常データと判定する。そして、障害検出部11は、異常発生の通知を制御部12に通知する。この障害検出部11が「第2障害検出部」の一例にあたる。
制御部12は、異常データがCM2から送られてきたのか否かを判定する。この判定方法の一例として、制御部12は、異常データがPCIeブリッジ14及びデータ書込部13でパリティエラーを起こしていることから、PCIeブリッジ14と接続されているCM2から異常データが送られてきたと判定することができる。また、他の例として、制御部12は、異常データと判定されたデータをデータ書込部13から取得し、その取得したデータのヘッダなどから送信元を調べることでそのデータがCM2から送られてきたか否かを判定してもよい。
そして、制御部12は、パリティチェックの結果に異常があるデータがCM2から送られてきたと判定した場合、PCIeブリッジ14及びデータ書込部13に対して異常が発生したデータが再送信されてくるまで待機するように命令する。これに対し、制御部12は、異常データがCM2から送られたデータでない場合や、障害検出部11がパリティエラーなど所定の異常以外の異常を検出した場合には、CM1をダウンさせる。この制御部12が「制御部」の一例にあたる。
図2は、ストレージ装置のハードウェアの全体構成を示すハードウェア構成図である。次に、図2を参照して、ストレージ装置全体の構成及び全体の動作の流れを説明する。図2に示すように、ストレージ装置は、CM1、CM2及びハードディスク3を有している。ここで、図2に示すように、ストレージ装置は、ハードディスクを複数本有しているが、ここではまとめてハードディスク3と呼ぶ。
CM1は、CPU101、低速バスコントローラ102、PCIeブリッジ103、DMA(Direct Memory Access)コントローラ104、メモリコントローラ105、メモリ106及びI/Oコントローラ107を有している。また、CM2も同様に、CPU201、低速バスコントローラ202、PCIeブリッジ203、DMAコントローラ204、メモリコントローラ205、メモリ206及びI/Oコントローラ207を有している。さらに、図2には記載していないが、CM1及びCM2のバスはホストと接続されている。
ストレージ装置におけるホストからのデータの書き込み及び読み出しの動作を説明する。ここで、CM1とCM2は同じ動作を行うので、CM1を例に動作を説明する。
CPU101は、ホストからのデータの書き込み命令を受けて、ホストから送られてきたデータをメモリ106に書き込むように、メモリコントローラ105に命令する。さらに、CPU101は、メモリ106に蓄積されたデータをハードディスク3へ書込むようI/Oコントローラ107に命令する。また、CPU101は、ホストからのデータの読み込み命令を受けて、I/Oコントローラ107に対し指定されたデータのハードディスク3からの読み出し及びホストへの送信を命令する。
メモリコントローラ105は、CPU101からのデータ書き込み命令を受けて、ホストから受信したデータをメモリ106に書き込む。また、メモリコントローラ105は、I/Oコントローラ107にメモリ106に蓄積されているデータを送信する。
I/Oコントローラ107は、CPU101からのデータ書き込み命令を受けて、メモリ106が蓄積しているデータをメモリコントローラ105から受信し、ハードディスク3にデータを書き込む。また、I/Oコントローラ107は、CPU101からのデータ読出し命令を受けて、指定されたデータをハードディスク3から読み出す。
また、低速バスコントローラ102と低速バスコントローラ202とは、パス5で接続されている。CPU101及びCPU201からの命令を受けて、低速バスコントローラ102及び低速バスコントローラ202は、CPU101とCPU201との間の制御情報の授受を行っている。制御情報はサイズが小さいため、このパス5は、パス4と比較して遅い転送速度でよい。本実施例では、パス5は、数十KB/secの転送速度を有している。
次に、CM1及びCM2におけるメモリ上のデータの二重化について説明する。ここでは、CM1のメモリ106のデータをCM2のメモリ206にコピーし二重化する場合について説明する。
DMAコントローラ104は、メモリコントローラ105がメモリ106に書き込んだデータをメモリコントローラ105から受信する。そして、DMAコントローラ104は、CM2のメモリ206にデータを書き込むためにPCIeブリッジ103にデータを渡す。
PCIeブリッジ103は、DMAコントローラ104から受信したデータをパス4を経由させてCM2のPCIeブリッジ203に送信する。
パス4は、データ伝送用の高速パスである。例えば、本実施例では、パス4の転送速度は700MB/secである。
PCIeブリッジ203は、PCIeブリッジ103からデータを受信する。
DMAコントローラ204は、PCIeブリッジ103が受信したデータを取得し、取得したデータをメモリコントローラ205に渡し、さらにメモリコントローラ205に対してメモリ206へのデータの書き込みを指示する。
メモリコントローラ205は、DMAコントローラ204からのデータ書き込みの指示を受けて、メモリ206にデータを書き込む。
このように、一方のメモリに蓄積されたデータを他方のメモリに書き込むことで、一方のCMが故障した場合にも、他方のCMのメモリ上のデータが残る。
DMAコントローラ204及びメモリコントローラ205が、図1のデータ送信部23の機能を有する。また、DMAコントローラ204が、図1の障害検出部21の機能を有する。また、メモリ206が、図1の揮発性記憶部25の機能を有する。また、PCIeブリッジ203が、図1のバス接続部24の機能を有する。また、CPU201が、図1の制御部22の機能を有する。
また、PCIeブリッジ103が、図1のバス接続部14の機能を有する。また、DMAコントローラ104及びメモリコントローラ105が、図1のデータ書込部13の機能を有する。また、メモリ106が、図1の不揮発性記憶部15の機能を有する。また、CPU101が、図1の制御部12及び障害検出部11の機能を有する。
次に、図3を参照して、本実施例に係るストレージ装置のデータ二重化におけるパリティエラー発生時の処理の流れについて説明する。図3は、実施例1に係るストレージ装置のデータ二重化におけるパリティエラー発生時の処理のシーケンス図である。図3の縦軸は紙面の下に向かって時間が経過していることを表している。そして、各縦軸上の各処理は縦軸の上部に記載された各CMが行う処理を表している。さらに、縦軸間を繋ぐ矢印は、矢印の方向に向けてデータが送信されることを表している。
CM2のデータ送信部23は、PCIeブリッジ24を介してメモリ25に記憶されているデータをCM1に送信する。異常検出部21は、PCIeブリッジ24からパリティチェックの結果を受信する。そして、異常検出部21は、受信したパリティチェックの結果に異常があると判定し、PCIeブリッジ24の故障を検出する(ステップS101)。
パリティチェックの結果に異常がある異常データが、PCIeブリッジ24からPCIeブリッジ14へ送信される(ステップS102)。
PCIeブリッジ14は、パリティチェックの結果に異常がある異常データを受信する(ステップS103)。このとき、PCIeブリッジ14は、受信したデータのパリティチェックを行い、チェック結果を障害検出部11へ送信する。
データ書込部13は、パリティチェックの結果に異常がある異常データをPCIeブリッジ14から受信する(ステップS104)。このとき、データ書込部13は、受信したデータのパリティチェックを行い、チェック結果を障害検出部11へ送信する。
障害検出部11は、受信したパリティチェックの結果から異常が発生していると判定し、制御部12に通知する。制御部12は、PCIeブリッジ14及びデータ書込部13で発生した異常がCM2による異常であると判定する(ステップS105)。
そして、制御部12は、CM2から再送信されるデータを受信するまでPCIeブリッジ14及びデータ書込部13を待機させる(ステップS106)。
この間、CM2の故障検出部21は、パリティの異常という異常の種別からリトライが必要であると判定する(ステップS107)。そして、データ転送部23は、最後に送信したデータをCM1に向けて再送信する(ステップS108)。
再送信データが、CM2からCM1に向けて送信される(ステップS109)。このとき、データ送信部23は、データのパリティチェックで異常が出なくなるまで、もしくは予め決められている所定回数までデータの再送信を行う。
CM1の制御部12は、CM1の各部に通常処理を継続させる(ステップS110)。
また、CM2の制御部22は、CM2をダウンさせる(ステップS111)。
以上に説明したように、本実施例に係るストレージ装置では、データを送信する側のCMのPCIeブリッジでパリティエラーなどの異常が発生した場合、その異常データによってデータ受信側のCMで異常が引き起こされても、データ受信側のCMをダウンさせない。さらに、パリティエラーなどが発生したデータを再送することで、データ受信側のCMのメモリに異常データが書き込まれたままになる状態の回避に寄与することができる。
(変形例)
次に、実施例1に係るストレージ装置の変形例について説明する。実施例1では、データにパリティの異常が発生した場合、単に異常が発生したデータの再送信を行っていたが、本変形例ではCM1とCM2との間のパスのデータ転送の負荷を軽減した後に、データの再送信を行う。
具体的には、図示していないが、本変形例に係るストレージ装置では、CM1もデータ送信部を有している。そして、CM1は、ホストからデータを受信し、受信したデータをメモリ15に一時的に蓄積する。このCM1のデータ送信部が「送信部」の一例にあたる。
CM1のデータ送信部は、メモリ15に蓄積されているデータをCM2のメモリ25にコピーする。すなわち、本変形例では、CM1及びCM2のいずれからも二重化用のデータが送られる。このデータ送信部の機能は、図2のDMAコントローラ104及びメモリコントローラ105が有している。
この点、PCIeブリッジ14とPCIeブリッジ24との間のパス(図2の「パス4」など)においてデータの転送負荷が高い場合、PCIeブリッジ24において異常が発生する確率が上がるおそれがある。そこで、本変形例の制御部12は、パリティチェックの結果に異常があるデータがCM2から送られてきたと判定した場合、CM1のデータ送信部によるCM2のメモリ25に対するデータのコピーを停止させる。すなわち、異常が発生したときの状態では、CM1及びCM2の双方からデータが送信されていたためCM1とCM2との間のパスの負荷が高くなっていた。そこで、CM1からのデータの送信を停止することで、CM1とCM2との間のパスの負荷を軽減することができる。
そして、CM1からのデータの送信が停止した後、CM2のデータ送信部23は、異常が発生したデータを再送信する。
このようにすることで、パスのデータ転送の負荷が高いことが原因での異常の発生を回避することができ、データの再送信を正常に行える確率を高くすることができる。したがって、本変形例に係るストレージ装置によれば、データ受信側のCMのメモリに異常データが書き込まれたままになる状態の回避率を向上させることができる。
図4は、実施例2に係るコントローラモジュールのブロック図である。本実施例に係るコントローラモジュールは、異常が発生したデータの再送が正常に行えなかった場合に、ハードディスク経由でそのデータをデータ受信側のメモリにコピーすることが実施例1と異なるものである。そこで、以下では、ハードディスク経由でのデータのコピーについて主に説明する。
本実施例に係るCMは図4に示すように、実施例1のCMに読出部16及び書込部26がさらに加えられている。ここで、図4において、図1と同様の符号を有する各部は特に説明の無い限り同様の機能を有するものとする。また、本実施例に係るストレージ装置のハードウェア構成は図2と同様である。
本実施例では読出部16及び書込部26はディスク装置30に接続している。ここで、本実施例ではディスク装置30は、図2のハードディスク3を有している。そこで、以下では、ディスク装置30が有するハードディスク3へのデータの書き込こみ又は読み出しを、ディスク装置30へのデータを書き込み又は呼び出しという。
CM2の制御部22は、データの再送信において障害検出部21が障害を検出した回数をカウントし、カウントしている回数が所定回数に達した場合に、異常が発生したデータの再送信が正常に行えなかったと判定する。そして、再送信が正常に行えなかったと判定すると、制御部22は、送信時に異常が発生したデータのディスク装置30への書き込みを書込部26に指示する。そして、制御部22は、書込部26によるディスク装置30へのデータの書き込みが終了すると、CM2をダウンさせる。この制御部22が「書込制御部」の一例にあたる。
書込部26は、送信時に異常が発生したデータのディスク装置30への書き込みの指示を制御部22から受ける。そして、書込部26は、送信時に異常が発生したデータをメモリ25から読み出す。そして、書込部26は、メモリ25から読み出したデータをディスク装置30に書き込む。この書込部26の機能は、図2におけるI/Oコントローラ207が有する。
CM1の制御部12は、カウンタを有している。さらに、制御部12は、データの再送失敗を判定するための閾値として所定値を記憶している。そして、制御部12は、障害検出部11からの異常発生の通知を受けると自己のカウンタをインクリメントする。そして、制御部12は、カウンタが所定値に達するとデータの再送が失敗したと判定する。この制御部12による、再送の失敗の判定は他の方法でも良い。例えば、制御部12は、閾値として所定の時間を記憶しておき、障害検出部11からの異常発生の通知後、所定の時間内に異常が発生したデータを正常に受信できなければ再送失敗と判定しても良い。さらに、制御部12は、異常が発生したデータの識別情報を障害検出部11から受信する。そして、制御部12は、CM2がダウンするまで待機する。例えば、CM1とCM2と起動している間は制御部12と制御部22との間で図2のパス5などを用いてハートビートを相互に送ることで、制御部12は制御部22からのハートビートが届かなくなった場合にCM2がダウンしたと判定できる。また、再送失敗の他の検知方法として、制御部12は、異常発生の通知を障害検出部11から受けた後に、異常が発生したデータを正常に受信しない間にCM2がダウンした場合に再送が失敗したと判定してもよい。
そして、制御部12は、CM2がダウンすると、障害検出部11から受信した異常が圧制したデータの識別情報を用いて、再送信が失敗したデータのディスク装置30からの読み出し及びメモリ15への格納を読出部16に指示する。そして、制御部12は、メモリ15にデータが格納されると通常処理に戻る。
読出部16は、再送信が失敗したデータのディスク装置30からの読み出し及びメモリ15への格納の指示を制御部12から受ける。そして、読出部16は、ディスク装置30から再送信が失敗したデータを読み出す。そして、読出部16は、ディスク装置30から読み出したデータをメモリ15へ格納する。この読出部16の機能は、図2におけるI/Oコントローラ107が有する。
次に、図5を参照して、本実施例に係るストレージ装置のデータ二重化におけるパリティエラー発生時の処理の流れについて説明する。図5は、実施例2に係るストレージ装置のデータ二重化におけるパリティエラー発生時の処理のシーケンス図である。
CM2のデータ送信部23は、PCIeブリッジ24を介してメモリ25に記憶されているデータをCM1に送信する。異常検出部21は、PCIeブリッジ24からパリティチェックの結果を受信する。そして、異常検出部21は、受信したパリティチェックの結果からパリティエラーを検出する。そして、異常検出部21は、PCIeブリッジ24の故障を検出する(ステップS201)。
パリティエラーが発生している異常データが、PCIeブリッジ24からPCIeブリッジ14へ送信される(ステップS202)。
PCIeブリッジ14は、パリティエラーが発生している異常データを受信する(ステップS203)。このとき、PCIeブリッジ14は、受信したデータのパリティチェックを行い、チェック結果を障害検出部11へ送信する。
データ書込部13は、パリティエラーが発生している異常データをPCIeブリッジ14から受信する(ステップS204)。このとき、データ書込部13は、受信したデータのパリティチェックを行い、チェック結果を障害検出部11へ送信する。
障害検出部11は、受信したパリティチェックの結果からパリティエラーを検出し、制御部12に通知する。制御部12は、PCIeブリッジ14及びデータ書込部13で発生した異常がCM2による異常であると判定する(ステップS205)。
そして、制御部12は、CM2から再送信されるデータを受信するまでPCIeブリッジ14及びデータ書込部13を待機させる(ステップS206)。
この間、CM2の故障検出部21は、パリティエラーという異常の種別からリトライが必要であると判定する(ステップS207)。そして、データ転送部23は、最後に送信したデータをCM1に向けて再送信する(ステップS208)。
再送信データが、CM2からCM1に向けて送信される(ステップS209)。
制御部22は、データ送信部23によるデータの再送信が成功したか否かを判定する(ステップS210)。データの再送信が成功した場合(ステップS210肯定)、制御部22は、CM2をダウンさせる(ステップS211)。
これに対して、データの再送信が失敗した場合(ステップS210否定)、制御部22は、メモリ25に格納されている再送信に失敗したデータをディスク装置30に書き込むよう書込部26へ指示する。書込部26は、再送信に失敗したデータをメモリ25から読み出し、読み出したデータをディスク装置30に書き込む(ステップS212)。
制御部22は、再送信に失敗したデータのディスク装置30への書き込みが完了すると、CM2をダウンさせる(ステップS213)。
CM1の制御部12は、データの再送信が成功したか否かを判定する(ステップS214)。データの再送信が失敗した場合(ステップS214否定)、制御部12は、CM2がダウンするまで待機し、その後CM2のダウンを検出する(ステップS215)。
そして、制御部12は、再送信に失敗したデータのディスク装置30からの読み出し及びメモリ15への書き込みを読出部16に指示する。読出部16は、指示を受けて、ディスク装置30から再送信に失敗したデータを読み出し、読み出したデータをメモリ15へ格納する(ステップS216)。
制御部12は、データの再送信が成功した場合(ステップS214肯定)又はディスク装置30に書き込まれた再送信に失敗したデータのメモリ15への格納が完了した場合、通常処理を継続する(ステップS217)。
以上に説明したように、本実施例に係るストレージ装置は、DMAによるデータの再送信が失敗した場合でも、ハードディスク経由でデータをデータ受信側のCMのメモリに移すことができる。これにより、データ受信側のCMのメモリに異常データが書き込まれたままになる状態の回避率を向上させることができる。
(変形例)
次に、実施例2に係るストレージ装置の変形例について説明する。本変形例に係るストレージ装置は、CM1及びCM2がいずれもダウンした場合にメモリの内容を維持しつつ再起動する機能を有している。そこで、本実施形態に係るストレージ装置は、この機能を用いてCM1及びCM2を再起動した後、再送信に失敗したデータをハードディスク経由でCM1のメモリに移す。図6は、実施例2の変形例に係るストレージ装置のデータ二重化におけるパリティエラー発生時の処理のシーケンス図である。そこで、図6を参照して、本変形例に係るストレージ装置のデータ二重化におけるパリティエラー発生時の処理の流れについて説明する。
CM2のデータ送信部23は、PCIeブリッジ24を介してメモリ25に記憶されているデータをCM1に送信する。異常検出部21は、PCIeブリッジ24からパリティチェックの結果を受信する。そして、異常検出部21は、受信したパリティチェックの結果からパリティエラーを検出する。そして、異常検出部21は、PCIeブリッジ24の故障を検出する(ステップS301)。
パリティエラーが発生している異常データが、PCIeブリッジ24からPCIeブリッジ14へ送信される(ステップS302)。
PCIeブリッジ14は、パリティエラーが発生している異常データを受信する(ステップS303)。このとき、PCIeブリッジ14は、受信したデータのパリティチェックを行い、チェック結果を障害検出部11へ送信する。
データ書込部13は、パリティエラーが発生している異常データをPCIeブリッジ14から受信する(ステップS304)。このとき、データ書込部13は、受信したデータのパリティチェックを行い、チェック結果を障害検出部11へ送信する。
障害検出部11は、受信したパリティチェックの結果からパリティエラーを検出し、制御部12に通知する。制御部12は、PCIeブリッジ14及びデータ書込部13で発生した異常がCM2による異常であると判定する(ステップS305)。
そして、制御部12は、CM2から再送信されるデータを受信するまでPCIeブリッジ14及びデータ書込部13を待機させる(ステップS306)。
この間、CM2の故障検出部21は、パリティエラーという異常の種別からリトライが必要であると判定する(ステップS307)。そして、データ転送部23は、最後に送信したデータをCM1に向けて再送信する(ステップS308)。
再送信データが、CM2からCM1に向けて送信される(ステップS309)。
制御部22は、データ送信部23によるデータの再送信が成功したか否かを判定する(ステップS310)。データの再送信が成功した場合(ステップS310肯定)、制御部22は、CM2をダウンさせる(ステップS311)。
これに対して、データの再送信が失敗した場合(ステップS310否定)、制御部22は、CM1に対してダウンを指示する(ステップS313)。
ダウン指示が、CM1に送信される(ステップS314)。
制御部22は、ダウン指示の送信後、CM2をダウンさせる(ステップS315)。この場合、制御部22は、不揮発性メモリなどのバックアップ用のデバイスにメモリ25上のデータを移動した後CM2をダウンさせる。
これに対して、CM1の制御部12も、データの再送信が成功したか否かを判定する(ステップS312)。データの再送信が失敗した場合(ステップS312否定)、制御部12は、CM2からのダウン指示を受けてCM1をダウンさせる(ステップS316)。この場合も、制御部12は、不揮発性メモリなどのバックアップ用のデバイスにメモリ15上のデータを移動した後CM1をダウンさせる。
ストレージ装置は、CM1及びCM2のダウンが完了後、両方を再起動させる(ステップS317)。ここで、CM1及びCM2の双方のダウンの監視並びに再起動は、例えば、後からダウンした側のCMの制御部に実行させることができる。また、CM1及びCM2の双方のダウンを監視する監視制御部をさらに設け、その監視制御部が再起動を行っても良い。また、この起動においては、CM1及びCM2共に、起動後バックアップ用のデバイスに保持しているデータを自己が有するメモリ上に展開する。
CM2の制御部22は、再起動後に各種ログのチェックなどにより再送信に失敗してダウンしたことを検出する(ステップS318)。そして、制御部22は、メモリ25に格納されている再送信に失敗したデータをディスク装置30に書き込むよう書込部26へ指示する。書込部26は、再送信に失敗したデータをメモリ25から読み出し、読み出したデータをディスク装置30に書き込む(ステップS319)。
制御部22は、再送信に失敗したデータのディスク装置30への書き込みが完了すると、CM2をダウンさせる(ステップS320)。
制御部12は、再起動後に各種ログのチェックなどを行い、CM2からの指示をうけてダウンしたことを検出し、CM2のダウンを検出するまで待機する(ステップS321)。その後、制御部12は、CM2のダウンを検出する(ステップS322)。
そして、制御部12は、再送信に失敗したデータのディスク装置30からの読み出し及びメモリ15への書き込みを読出部16に指示する。読出部16は、指示を受けて、ディスク装置30から再送信に失敗したデータを読み出し、読み出したデータをメモリ15へ格納する(ステップS323)。
制御部12は、データの再送信が成功した場合(ステップS312肯定)又はディスク装置30に書き込まれた再送信に失敗したデータのメモリ15への格納が完了した場合、通常処理を継続する(ステップS324)。
以上に説明したように、本変形例に係るストレージ装置は、両方のCMがダウンした場合にメモリの情報を保持したまま起動するという機能を用いてハードディスク経由のデータの移行を行うことができる。
図7は、実施例3に係るコントローラモジュールのブロック図である。本実施例に係るコントローラモジュールは、異常が発生したデータの再送が正常に行えなかった場合に、PCIeブリッジ間のパスよりも転送速度が遅い伝送経路を用いてデータを送信することが実施例2と異なるものである。そこで、以下では、転送速度が遅い伝送経路を用いたデータの送信について主に説明する。
本実施例に係るCMは図7に示すように、実施例2のCMに低速受信部17及び低速送信部27がさらに加えられている。ここで、図7において、図4と同様の符号を有する各部は特に説明の無い限り同様の機能を有するものとする。また、本実施例に係るストレージ装置のハードウェア構成は図2と同様である。
そして、図2における低速バスコントローラ202が低速送信部27の機能を有し、低速バスコントローラ102が低速受信部17の機能を有する。そして、低速バスコントローラ102と低速バスコントローラ202とを結んでいるパス5が、転送速度が遅い伝送経路にあたる。上述したように、本実施例ではパス5は、数十KB/secの転送速度を有している。この転送速度が遅い伝送路が「低速伝送経路」の一例にあたる。
低速送信部27は、転送速度が遅い伝送経路を用いて低速受信部17にデータを送信する。
制御部22は、障害検出部21から障害の検出の通知を受ける。
CM2の制御部22は、障害検出部21から障害の検出の通知を受けた場合、データ送信部23から異常が発生したデータのサイズを取得する。制御部22は、低速伝送路を用いた送信の可否を判断する閾値として所定サイズを記憶している。本実施例では、制御部22は、所定サイズを1KBと記憶している。そして、制御部22は、異常が発生したデータのサイズが1KB以下か否かを判定する。そして、1KB以下の場合、制御部22は、低速送信部27を介して異常が発生したデータを送信することをデータ送信部23に指示する。そして、制御部22は、転送速度が遅い伝送経路を用いたデータの送信が完了すると、CM2をダウンさせる。ここで、本実施例では、バス5が数十KB/secの転送速度を有しているため、パス5で十分に転送できるサイズとして閾値を1KB/secと設定したが、この閾値は転送速度が遅い伝送経路の実際の転送速度に応じて決めることが好ましい。
これに対して、異常が発生したデータのサイズが1KBよりも大きい場合、制御部22は、データ送信部23に異常が発生したデータの再送信を指示する。そして、データの再送信において障害検出部21から障害の検出の通知を受けなければ、制御部22は、パリティエラーが発生せずに送信できたと判定する。その後、制御部22は、CM2をダウンさせる。また、データの再送信において障害検出部21が障害を検出した回数が所定回数に達した場合、制御部22は、異常が発生したデータのディスク装置30への書き込みを書込部26に指示する。そして、制御部22は、書込部26によるディスク装置30へのデータの書き込みが終了すると、CM2をダウンさせる。
データ送信部23は、低速送信部27を介して異常が発生したデータを送信する指示を制御部22から受けて、異常が発生したデータを低速送信部27に送信する。また、異常が発生したデータの再送信の指示を受けた場合、データ送信部23は、異常が発生したデータを、PCIeブリッジ24を介してCM1に送信する。
低速送信部27は、データ送信部23から異常が発生したデータを受信する。そして、低速送信部27は、異常が発生したデータを転送速度が遅い伝送経路を介して低速受信部17に送信する。
CM1の低速受信部17は、転送速度が遅い伝送経路を介してデータを低速送信部27から受信する。そして、低速受信部17は、受信したデータをデータ書込部13に送信する。
データ書込部13は、低速受信部17からデータを受信する。そして、データ書込部13は、受信したデータをメモリ15に書き込む。
制御部12は、低速受信部17を介して受信した異常が発生したデータがメモリ15に格納されると、通常処理に戻る。
これに対して、制御部12は、異常が発生したデータが低速受信部17を介して送られてこない場合、異常が発生したデータの再送信を受信するようPCIeブリッジ14及びデータ書込部13に指示する。そして、異常が発生したデータの再送信が正常に行われた場合、制御部12は通常処理に戻る。これに対して、制御部12は、再送信の回数が所定値を超えた場合、CM2のダウンの通知を受けた後に、ディスク装置30に格納されている再送信に失敗したデータをメモリ15に格納するよう読出部16に指示する。
次に、図8を参照して、本実施例に係るストレージ装置のデータ二重化におけるパリティエラー発生時の処理の流れについて説明する。図8は、実施例3に係るストレージ装置のデータ二重化におけるパリティエラー発生時の処理のシーケンス図である。
CM2のデータ送信部23は、PCIeブリッジ24を介してメモリ25に記憶されているデータをCM1に送信する。異常検出部21は、PCIeブリッジ24からパリティチェックの結果を受信する。そして、異常検出部21は、受信したパリティチェックの結果からパリティエラーを検出する。そして、異常検出部21は、PCIeブリッジ24の故障を検出する(ステップS401)。
パリティエラーが発生している異常データが、PCIeブリッジ24からPCIeブリッジ14へ送信される(ステップS402)。
PCIeブリッジ14は、パリティエラーが発生している異常データを受信する(ステップS403)。このとき、PCIeブリッジ14は、受信したデータのパリティチェックを行い、チェック結果を障害検出部11へ送信する。
データ書込部13は、パリティエラーが発生している異常データをPCIeブリッジ14から受信する(ステップS404)。このとき、データ書込部13は、受信したデータのパリティチェックを行い、チェック結果を障害検出部11へ送信する。
障害検出部11は、受信したパリティチェックの結果からパリティエラーを検出し、制御部12に通知する。制御部12は、PCIeブリッジ14及びデータ書込部13で発生した異常がCM2による異常であると判定する(ステップS405)。
そして、制御部12は、CM2から異常が発生したデータを受信するまでPCIeブリッジ14及びデータ書込部13を待機させる(ステップS406)。
この間、CM2の故障検出部21は、パリティエラーという異常の種別からリトライが必要であると判定する(ステップS407)。
制御部22は、異常が発生したデータのサイズが1KB以下か否かを判定する(ステップS408)。1KB以下の場合(ステップS408肯定)、制御部22は、異常が発生したデータをパス5を介してCM1に送信することをデータ送信部23に指示する。データ送信部23は、制御部22からの指示を受けて、パス5を経由させて異常が発生したデータをCM1に送信する(ステップS409)。そして、パス5経由で異常が発生したデータを送信後、制御部22はCM2をダウンさせる(ステップS411)。
異常が発生したデータは、低速送信部27、パス5及び低速受信部17を経由してデータ書込部13に送信される(ステップS410)。データ書込部13は、パス5経由で送られてきたデータを受信してメモリ15に書き込む。
制御部21は、低速受信部17及びデータ書込部13を監視して、バス5経由でデータを受信したか否かを判定する(ステップS412)。例えば、制御部21は、低速受信部17からのデータを低速送信部27から受信したという情報及びデータ書込部13からの低速受信部17からデータを受信したという情報を受けてデータの受信を確認する。パス5経由でデータを受信している場合(ステップS412肯定)、制御部21は、通常の処理を継続する(ステップS421)。
これに対して、異常が発生したデータのサイズが1KBより大きい場合(ステップS408否定)、データ送信部23は、最後に送信したデータをCM1に向けてパス4経由で再送信する(ステップS413)。
再送信データが、CM2からCM1に向けて送信される(ステップS414)。
制御部22は、データ送信部23によるデータの再送信が成功したか否かを判定する(ステップS415)。データの再送信が成功した場合(ステップS415肯定)、制御部22は、CM2をダウンさせる(ステップS411)。
これに対して、データの再送信が失敗した場合(ステップS415否定)、制御部22は、メモリ25に格納されている再送信に失敗したデータをディスク装置30に書き込むよう書込部26へ指示する。書込部26は、再送信に失敗したデータをメモリ25から読み出し、読み出したデータをディスク装置30に書き込む(ステップS416)。
制御部22は、再送信に失敗したデータのディスク装置30への書き込みが完了すると、CM2をダウンさせる(ステップS417)。
CM1の制御部12は、データの再送信が成功したか否かを判定する(ステップS418)。データの再送信が失敗した場合(ステップS418否定)、制御部12は、CM2がダウンするまで待機し、その後CM2のダウンを検出する(ステップS419)。
そして、制御部12は、再送信に失敗したデータのディスク装置30からの読み出し及びメモリ15への書き込みを読出部16に指示する。読出部16は、指示を受けて、ディスク装置30から再送信に失敗したデータを読み出し、読み出したデータをメモリ15へ格納する(ステップS420)。
制御部12は、データの再送信が成功した場合(ステップS418肯定)又はディスク装置30に書き込まれた再送信に失敗したデータのメモリ15への格納が完了した場合、通常処理を継続する(ステップS421)。
以上に説明したように、本実施例に係るストレージ装置は、二重化を行う際に送信側のCMのPCIeブリッジの故障によりデータが正常に送信できない場合、データのサイズが小さければ、転送速度の遅い伝送経路を用いて受信側のCMにデータを送信する。これにより、データ受信側のCMのメモリに異常データが書き込まれたままになる状態の回避率を向上させることができる。
また、以上の各実施例では主にCM2のメモリ内のデータをCM1のメモリへコピーしてデータの二重化を行う場合で説明したが、この二重化はCM1及びCM2の間で双方向に行われていても良い。その場合、CM1及びCM2は、以上の各実施例で説明した互いの機能と同様の機能を有し、CM1のメモリ内のデータをCM2に二重化する場合にも各実施例と同様の処理を行う。
1 コントローラモジュール(CM)
2 コントローラモジュール(CM)
3 ハードディスク
4 パス
5 パス
11、21 障害検出部
12、22 制御部
13 データ書込部
14、24 バス接続部(PCIeブリッジ)
15、25 揮発性記憶部(メモリ)
16 読出部
17 低速受信部
23 データ送信部
26 書込部
27 低速送信部
30 ディスク装置
101、201 CPU
102、202 低速バスコントローラ
103、203 PCIeブリッジ
104、204 DMAコントローラ
105、205 メモリコントローラ
106、206 メモリ
107、207 I/Oコントローラ

Claims (5)

  1. 第1データコントローラと第2データコントローラとを有するストレージ装置であって、
    前記第1データコントローラは、
    外部から入力されたデータを記憶する第1記憶部と、
    前記第1データコントローラのデータの伝送経路と前記第2データコントローラのデータの伝送経路とを接続する第1バス接続部と、
    前記第1バス接続部を介して前記第1記憶部に記憶された前記データを前記第2データコントローラへ送信するデータ送信部と、
    前記第1バス接続部のデータの送信における障害を検出し、送信時に障害を発生させたデータを前記データ送信部に再送信させる第1障害検出部とを備え、
    前記第2データコントローラは、
    前記第1データコントローラから送信されたデータを記憶する第2記憶部と、
    前記第1データコントローラのデータの伝送経路と前記第2データコントローラのデータの伝送経路とを接続する第2バス接続部と、
    前記第2バス接続部を介して前記データ送信部により送信されたデータを取得し、前記第2記憶部に書き込むデータ書込部と、
    前記第2バス接続部及び前記データ書込部における障害を検出し、検出した障害が前記第1データコントローラによるものか否かを判定する第2障害検出部と、
    前記第2バス接続部及び前記データ書込部において発生した障害が前記第1データコントローラによるものの場合、前記データ送信部から再送信されてくるデータを受信して書き込むように前記第2バス接続部及び前記データ書込部を制御する制御部とを備えた
    ことを特徴とするストレージ装置。
  2. 前記ストレージ装置はディスク装置をさらに備え、
    前記第1データコントローラは、前記ディスク装置にデータを書き込む書込部と、
    前記データ送信部によるデータの再送信においても前記第1障害検出部により障害の発生が検出された場合、送信時に障害を発生させたデータを前記ディスク装置に書き込ませるよう前記書込部を制御する書込制御部をさらに備え、
    前記第2データコントローラは、前記ディスク装置に記憶されているデータを読み出し前記第2記憶部に記憶させる読出部をさらに備え、
    前記制御部は、前記データ送信部からデータが再送信されたときに、前記第2バス接続部及び前記データ書込部において前記第1データコントローラによる障害が発生したか否かを判定し、障害が発生している場合には、前記ディスク装置に記憶されている前記書込部が書き込んだデータを読み出し前記第2ディスク装置に書き込むよう前記読出部を制御する
    ことを特徴とする請求項1に記載のストレージ装置。
  3. 前記第1データコントローラは、前記第1バス接続部と第2バス接続部との間の伝送経路よりも転送速度の遅い低速伝送経路を用いて前記第2データコントローラにデータを送信する低速送信部をさらに備え、
    前記第2データコントローラは、前記低速伝送経路を介して前記低速送信部により送信されたデータを受信する低速受信部をさらに備え、
    前記第1障害検出部は、前記第1バス接続部のデータの送信における障害の発生を検出すると、送信時に障害を発生させたデータのサイズが所定値以下か否かを判定し、前記所定値以下の場合には前記低速送信部にデータを送信させ、前記所定値以上の場合には送信時に障害を発生させたデータを前記データ送信部に再送信させ、
    前記制御部は、送信時に障害を発生させたデータを前記低速受信部が受信している場合には該データを前記第2記憶部に記憶させる
    ことを特徴とする請求項1又は請求項2に記載のストレージ装置。
  4. 前記第2データコントローラは、第2バス接続部を介して前記第2記憶部に記憶されている外部から入力されたデータを前記第1データコントローラへ送信する送信部をさらに備え、
    前記制御部は、前記第2バス接続部及び前記データ書込部において発生した障害が前記第1データコントローラによるものの場合、前記送信部のデータ送信を禁止する
    ことを特徴とする請求項1〜請求項3のいずれか一つに記載のストレージ装置。
  5. 第1データコントローラと第2データコントローラとを有するストレージ装置の制御方法であって、
    前記第1データコントローラは、外部から入力されたデータを前記第1データコントローラのメモリに記憶し、
    前記第1データコントローラは、前記第1データコントローラのメモリに記憶されたデータを読み出し、前記第1データコントローラのPCIeブリッジを介して前記第2データコントローラに送信し、
    前記第1データコントローラは、前記データの送信における前記第1データコントローラのPCIeブリッジの障害を検出し、
    前記第2データコントローラは、前記第2データコントローラのPCIeブリッジを介して前記第1データコントローラから送信されたデータを受信し、
    前記第2データコントローラは、受信したデータを前記第2データコントローラのメモリに書き込み、
    前記第2データコントローラは、受信したデータをメモリに書き込むときに、前記第2データコントローラのメモリコントローラ及びPCIeブリッジで障害が発生した場合、該障害が第1データコントローラによるか否かを判定し、
    前記第1データコントローラ及び前記第2データコントローラにおいて障害が検出され、且つ該障害が第1データコントローラによるものの場合、前記第1データコントローラは、送信時に障害を発生させたデータを前記第1データコントローラのPCIeブリッジを介して再送信し、前記第2データコントローラは、前記第1データコントローラのPCIeブリッジから再送信されてくるデータを前記第2データコントローラのPCIeブリッジを介して受信する
    ことを特徴とするストレージ装置の制御方法。
JP2010283108A 2010-12-20 2010-12-20 ストレージ装置及びストレージ装置の制御方法 Active JP5966243B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010283108A JP5966243B2 (ja) 2010-12-20 2010-12-20 ストレージ装置及びストレージ装置の制御方法
US13/279,491 US8572428B2 (en) 2010-12-20 2011-10-24 Storage apparatus and control method for storage apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010283108A JP5966243B2 (ja) 2010-12-20 2010-12-20 ストレージ装置及びストレージ装置の制御方法

Publications (2)

Publication Number Publication Date
JP2012133456A true JP2012133456A (ja) 2012-07-12
JP5966243B2 JP5966243B2 (ja) 2016-08-10

Family

ID=46236092

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010283108A Active JP5966243B2 (ja) 2010-12-20 2010-12-20 ストレージ装置及びストレージ装置の制御方法

Country Status (2)

Country Link
US (1) US8572428B2 (ja)
JP (1) JP5966243B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5639441B2 (ja) * 2010-10-29 2014-12-10 キヤノン株式会社 情報処理装置、印刷装置、印刷データ処理方法およびプログラム
JP5966243B2 (ja) * 2010-12-20 2016-08-10 富士通株式会社 ストレージ装置及びストレージ装置の制御方法
US9405566B2 (en) 2013-05-24 2016-08-02 Dell Products L.P. Access to storage resources using a virtual storage appliance
US9645872B1 (en) * 2015-03-27 2017-05-09 EMC IP Holding Company LLC Method to use multipath to reduce IO error handle duration
JP7179489B2 (ja) * 2018-05-18 2022-11-29 キヤノン株式会社 ストレージシステム及びその制御方法、プログラム、並びに記憶制御システム

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0426234A (ja) * 1990-05-22 1992-01-29 Fujitsu Ltd 同報型衛星通信システム
JPH04501343A (ja) * 1987-04-27 1992-03-05 アメリカン テレフォン アンド テレグラフ カムパニー 放射線結合連鎖
JPH0485769A (ja) * 1990-07-26 1992-03-18 Fujitsu Ltd 電力節減状態からの復帰時間短縮方法
JPH08249130A (ja) * 1994-12-15 1996-09-27 Hewlett Packard Co <Hp> 障害検出システム
JPH11249820A (ja) * 1998-03-03 1999-09-17 Fujitsu Ltd ディスク制御システムおよび記録媒体
JP2000348262A (ja) * 1999-06-03 2000-12-15 Funai Electric Co Ltd 販売促進システム、および、制御システム
JP2001333001A (ja) * 2000-05-22 2001-11-30 Hitachi Ltd データ伝送方式
JP2002538711A (ja) * 1999-03-05 2002-11-12 タンティビ・コミュニケーションズ・インコーポレーテッド 高性能符号化を可能にする多重化cdmaチャネルの順方向誤り訂正
JP2004342071A (ja) * 2003-04-22 2004-12-02 Hitachi Ltd ストレージ装置及びネットワークシステム
JP2005122763A (ja) * 2004-12-03 2005-05-12 Hitachi Ltd 記憶装置
JP2009053946A (ja) * 2007-08-27 2009-03-12 Toshiba Corp 二重化コントーラ構成ブロックデバイス制御装置
JP2009094589A (ja) * 2007-10-03 2009-04-30 Yamaha Corp 音響信号処理装置及びネットワークシステム
JP2009094588A (ja) * 2007-10-03 2009-04-30 Yamaha Corp ネットワークシステム
JP2009171529A (ja) * 2008-01-21 2009-07-30 Fujitsu Ltd 受信装置及び通信データリオーダリング処理方法
JP2009266119A (ja) * 2008-04-28 2009-11-12 Hitachi Ltd ストレージ装置及びデータ転送方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4132322B2 (ja) 1998-12-16 2008-08-13 株式会社日立製作所 記憶制御装置およびその制御方法
JP4294568B2 (ja) 2004-10-04 2009-07-15 富士通株式会社 ディスクアレイ装置及びその制御方法
JP2007293448A (ja) 2006-04-21 2007-11-08 Hitachi Ltd ストレージシステム及びその電源制御方法
US8225019B2 (en) * 2008-09-22 2012-07-17 Micron Technology, Inc. SATA mass storage device emulation on a PCIe interface
US8402307B2 (en) * 2010-07-01 2013-03-19 Dell Products, Lp Peripheral component interconnect express root port mirroring
US8677176B2 (en) * 2010-12-03 2014-03-18 International Business Machines Corporation Cable redundancy and failover for multi-lane PCI express IO interconnections
JP5966243B2 (ja) * 2010-12-20 2016-08-10 富士通株式会社 ストレージ装置及びストレージ装置の制御方法
US8589723B2 (en) * 2010-12-22 2013-11-19 Intel Corporation Method and apparatus to provide a high availability solid state drive
US8495252B2 (en) * 2011-01-17 2013-07-23 International Business Machines Corporation Implementing PCI-express memory domains for single root virtualized devices
US9086945B2 (en) * 2011-09-01 2015-07-21 Dell Products, Lp System and method to correlate errors to a specific downstream device in a PCIe switching network

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04501343A (ja) * 1987-04-27 1992-03-05 アメリカン テレフォン アンド テレグラフ カムパニー 放射線結合連鎖
JPH0426234A (ja) * 1990-05-22 1992-01-29 Fujitsu Ltd 同報型衛星通信システム
JPH0485769A (ja) * 1990-07-26 1992-03-18 Fujitsu Ltd 電力節減状態からの復帰時間短縮方法
JPH08249130A (ja) * 1994-12-15 1996-09-27 Hewlett Packard Co <Hp> 障害検出システム
JPH11249820A (ja) * 1998-03-03 1999-09-17 Fujitsu Ltd ディスク制御システムおよび記録媒体
JP2002538711A (ja) * 1999-03-05 2002-11-12 タンティビ・コミュニケーションズ・インコーポレーテッド 高性能符号化を可能にする多重化cdmaチャネルの順方向誤り訂正
JP2000348262A (ja) * 1999-06-03 2000-12-15 Funai Electric Co Ltd 販売促進システム、および、制御システム
JP2001333001A (ja) * 2000-05-22 2001-11-30 Hitachi Ltd データ伝送方式
JP2004342071A (ja) * 2003-04-22 2004-12-02 Hitachi Ltd ストレージ装置及びネットワークシステム
JP2005122763A (ja) * 2004-12-03 2005-05-12 Hitachi Ltd 記憶装置
JP2009053946A (ja) * 2007-08-27 2009-03-12 Toshiba Corp 二重化コントーラ構成ブロックデバイス制御装置
JP2009094589A (ja) * 2007-10-03 2009-04-30 Yamaha Corp 音響信号処理装置及びネットワークシステム
JP2009094588A (ja) * 2007-10-03 2009-04-30 Yamaha Corp ネットワークシステム
JP2009171529A (ja) * 2008-01-21 2009-07-30 Fujitsu Ltd 受信装置及び通信データリオーダリング処理方法
JP2009266119A (ja) * 2008-04-28 2009-11-12 Hitachi Ltd ストレージ装置及びデータ転送方法

Also Published As

Publication number Publication date
US8572428B2 (en) 2013-10-29
JP5966243B2 (ja) 2016-08-10
US20120159265A1 (en) 2012-06-21

Similar Documents

Publication Publication Date Title
US8943358B2 (en) Storage system, apparatus, and method for failure recovery during unsuccessful rebuild process
US7124244B2 (en) Storage system and a method of speeding up writing data into the storage system
EP1881407A2 (en) Storage control system, control method for storage control system, port selector, and controller
US20060020846A1 (en) Mechanism for enabling enhanced fibre channel error recovery across redundant paths using SCSI level commands
JP4391954B2 (ja) ファイル制御システムおよびファイル制御装置
JP2002108572A (ja) バックアップシステム、及び複製装置
JP5966243B2 (ja) ストレージ装置及びストレージ装置の制御方法
US9141485B2 (en) Storage device, control device and data protection method
JP2008225753A (ja) 計算機システム、アクセス制御方法及び管理計算機
JPH08227344A (ja) 二重磁気ディスク制御装置間の通信制御装置
JP5285786B2 (ja) 回復動作中に使用するためのキャッシュ内の修正済みデータを決定するためのシステム
JP4451837B2 (ja) データ転送装置およびデータ転送方法
JP5852674B2 (ja) 情報機器間のデータ転送のデータ欠落を検出する方法
CN103678517B (zh) 修复硬盘逻辑错误的方法及控制器
CN102436430B (zh) 存储设备、主机控制器和存储系统
US8868517B2 (en) Scatter gather list for data integrity
JP4535371B2 (ja) ディスクアレイ制御プログラム、方法及び装置
JP3748117B2 (ja) 鏡像化メモリ用エラー検出システム
JP2020021313A (ja) データ処理装置および診断方法
JPWO2007099584A1 (ja) エラー検出装置
US10014983B2 (en) System, receiving device, and method
JP2007206949A (ja) ディスクアレイ装置、ディスクアレイ装置の制御方法、ディスクアレイ装置の制御プログラム
JP5748214B2 (ja) 二重化情報処理システム
JP2008041080A (ja) 記憶制御システム、記憶制御システムの制御方法、ポートセレクタ、及びコントローラ
JP5145860B2 (ja) メモリ二重化システム及び情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130904

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140327

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140430

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140627

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150210

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150410

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151117

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151222

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160620

R150 Certificate of patent or registration of utility model

Ref document number: 5966243

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150