JP2014032516A - ストレージ装置、制御装置およびデータ保護方法 - Google Patents

ストレージ装置、制御装置およびデータ保護方法 Download PDF

Info

Publication number
JP2014032516A
JP2014032516A JP2012172268A JP2012172268A JP2014032516A JP 2014032516 A JP2014032516 A JP 2014032516A JP 2012172268 A JP2012172268 A JP 2012172268A JP 2012172268 A JP2012172268 A JP 2012172268A JP 2014032516 A JP2014032516 A JP 2014032516A
Authority
JP
Japan
Prior art keywords
data
error
memory
detected
write
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.)
Pending
Application number
JP2012172268A
Other languages
English (en)
Inventor
Hideki Matsui
秀樹 松井
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 JP2012172268A priority Critical patent/JP2014032516A/ja
Priority to US13/933,291 priority patent/US9141485B2/en
Publication of JP2014032516A publication Critical patent/JP2014032516A/ja
Pending legal-status Critical Current

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/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】メモリやメモリコントローラに誤り検出訂正機能が備わっていない場合であっても、データが消失することを防止する。
【解決手段】ストレージ装置9は、複数のCM1〜4が相互に接続する。CM4では、CPU44が、DIMM43およびメモリコントローラ42の少なくとも一方がECC非対応である場合に、ホスト8からCM1およびCM2が管轄するディスク5へのデータの書込み命令が受け付けられると、CRCが付加されたデータを、メモリコントローラ42を介してDIMM43に展開し、展開したデータに誤りが検出されるか否かを判定する。そして、CPU44は、データに誤りが検出されないと判定した場合、誤りが検出されなかったデータを予め定められた記憶領域に退避する。そして、書込み命令のデータの退避が完了した後、CA41が、ホスト8へ書き込みが完了したことを通知する。
【選択図】図1

Description

本発明は、ストレージ装置などに関する。
ストレージ装置は、ホストからデータの書き込み要求を受け取ると、データを正しく受け取ったことをホストへ通知し、受け取ったデータをディスクに書き込む。仮に、ストレージ装置が、データを正しく受け取れなかった場合、データを正しく受け取れなかったことをホストへ通知し、ホストから再度同じデータを受け取る。そして、ストレージ装置からデータを正しく受け取ったことを通知されたホストは、保持していた当該データを削除し、データの書き込みに使用されていた資源を別の作業に使用する。すなわち、ストレージ装置は、データの受信完了をできるだけ早くホストに通知し、加えてデータを正しく書き込むことが求められる。
このため、ストレージ装置は、データの受信完了をホストに早期に通知することができるように設計される。例えば、ストレージ装置は、ホストからデータを受信すると、受信したデータを一旦メモリに書き込む。その後、ストレージ装置は、実際にデータをディスクに書き込む前に、ホストへ受信完了を通知する。そして、ストレージ装置は、メモリでデータ化けが検出されても訂正できるように、誤り検出訂正機能を備えたメモリを搭載することが多い。なお、誤り検出訂正機能には、例えばECC(Error Detection And Correction)がある。
特開平9−288619号公報 特開2008−158779号公報
しかしながら、メモリやメモリコントローラに誤り検出訂正機能が備わっていない場合、書き込み要求のデータが消失してしまう場合があるという問題がある。
具体的に、書き込み要求のデータが消失してしまう問題を、図8および図9を参照して説明する。ここでは、メモリをDIMM(Dual Inline Memory Module)として説明し、誤り検出訂正機能をECCとして説明する。図8は、DIMMがECC対応である場合のディスクへの書き込み処理を説明する図である。図9は、DIMMがECC非対応である場合のディスクへの書き込み処理を説明する図である。
図8に示すように、ストレージ装置900は、CM#0およびCM#1が冗長化され、CM#2およびCM#3が冗長化され、CM#0〜CM#3は、PCIeスイッチで接続されている。そして、CM#0、CM#3がホストと接続されている。CM#0〜CM#3は、CPU910とDIMM920とメモリコントローラ930とを有する。さらに、CM#0〜CM#3は、CA(Channel Adapter)940とDI(Disk Interface)950とDMA(Direct Memory Access)チップ960とPCIeスイッチ970とを有する。DIMM920は、ECC対応のメモリモジュールである。メモリコントローラ930は、DIMM920を制御する、ECC対応のコントローラである。CA940は、ホストとのインタフェースである。DI950は、ディスクとのインタフェースである。DMAチップ960は、DMAにおけるCM間のインタフェースである。なお、DMAとは、CPU910を介さないで直接データを転送するデータ転送方式のことをいう。PCIeスイッチ970は、入出力デバイスとしてメモリコントローラ930、CA940、DI950およびDMAチップ960と接続する。
このようなストレージ装置900において、ホストからCM#0およびCM#1が管轄するディスク領域への書き込み要求が発生した場合、書き込み処理の流れは以下のようになる。まず、ホストからデータの書き込み要求を受け取ったCM#3のCA940は、DMA機能により書き込み要求のデータをDIMM920に転送し、転送したデータをDIMM920に展開する(図8(1))。このとき、CA940は、データに誤り検出符号(例えば、CRC(Cyclic Redundancy Check))が付加されていなければ、データに誤り検出符号を付加してからデータをDIMM920に転送する。DIMM920では、仮にデータ化けが検出されても、ECC対応であるので、データ化けを自動的に修正する。
そして、CA940がデータの転送が完了したことをCPU910に通知すると、CPU910は、ホストへデータの受信完了を通知する(図8(2))。そして、ホスト側では、書き込み要求のデータを削除する。
その後、CPU910は、DMAチップ960に対して、ディスク管轄のCM#0およびCM#1にデータを転送するように要求する。そして、DMAチップ960は、CM#0およびCM#1のDIMM920へデータを転送し、転送したデータをDIMM920に展開する(図8(3))。DIMM920では、仮にデータ化けが検出されても、ECC対応であるので、データ化けを自動的に修正する。
そして、DI950が、DIMM920からデータを読み込み、読み込んだデータの誤りをチェックし、誤りがなければディスクへ書き込む。仮に、誤りがあっても、DI950は、DIMM920から再度データを読み込むことで、正しいデータをディスクへ書き込むことができる(図8(4))。
次に、図9を用いて、DIMMがECC非対応である場合の書き込み処理について説明する。なお、DIMM920Aは、ECC非対応のメモリモジュールである。図9に示すように、ホストからデータの書き込み要求が出力されると、CM#3のCA940が、DMA機能により書き込み要求のデータをDIMM920Aに転送し、転送したデータをDIMM920Aに展開する(図9(1))。このとき、CA940は、データに誤り検出符号(例えば、CRC)が付加されていなければ、データに誤り検出符号を付加してからデータをDIMM920Aに転送する。DIMM920Aでは、仮にデータ化けが検出されても、ECC非対応であるので、データ化けを自動的に修正できずデータ化けのままとなる。
そして、CA940が、データの転送が完了したことをCPU910に通知すると、CPU910は、ホストへデータの受信完了を送信する(図9(2))。そして、ホスト側では、書き込み要求のデータを削除する。
その後、CPU910は、DMAチップ960に対して、ディスク管轄のCM#0およびCM#1にデータを転送するように要求する。そして、DMAチップ960は、CM#0およびCM#1のDIMM920Aへデータを転送し、転送したデータをDIMM920Aに展開する(図9(3))。DIMM920Aでは、仮にデータ化けが検出されても、ECC非対応であるので、データ化けを自動的に修正できない。
そして、DI950が、DIMM920Aからデータを読み込み、読み込んだデータの誤りをチェックし、誤りがなければディスクへ書き込む(図9(4))。しかし、誤りがあると、DI950は、CM#0のDIMM920Aから再度データを読み込んでも、データ化けのデータであれば、チェックで誤りとなる。同様に、DI950は、CM#3のDIMM920Aから再度データを読み込むとしても、データ化けのデータであれば、チェックで誤りとなる。既に、ホスト側には、データが削除されているので、データが消失しているという結果になる。
1つの側面では、本発明は、メモリやメモリコントローラに誤り検出訂正機能が備わっていない場合であっても、データが消失することを防止することを目的とする。
本願の開示するストレージ装置は、1つの態様において、ストレージと、前記ストレージへの書き込みデータを受信する制御装置と、を備え、前記制御装置は、メモリと、前記メモリへのデータの入出力制御を行うメモリコントローラと、前記メモリおよび前記メモリコントローラの少なくとも一方が誤り訂正機能を有しない場合に、前記ストレージへのデータ書き込み処理時に、書き込みデータに前記誤り訂正機能と異なる誤り検出方式で用いられる誤り検出符号が付加されたデータを前記メモリに前記メモリコントローラを介して展開し、誤りが検出されるか否かを判定するデータ判定部と、前記データ判定部による判定の結果、前記メモリに展開されたデータに誤りが検出されなかった場合、前記誤りが検出されなかったデータを予め定められた記憶領域に退避する退避部と、を有する。
本願の開示するストレージ装置の1つの態様によれば、メモリやメモリコントローラに誤り検出訂正機能が備わっていない場合であっても、データが消失することを防止できる。
図1は、実施例1に係るストレージ装置のハードウェア構成を示す図である。 図2は、実施例1に係るストレージ装置の書き込み処理のフローチャートを示す図(1)である。 図3は、実施例1に係るストレージ装置の書き込み処理のフローチャートを示す図(2)である。 図4は、実施例1に係るストレージ装置の変形例のハードウェア構成を示す図である。 図5は、実施例2に係るストレージ装置のハードウェア構成を示す図である。 図6は、実施例2に係るストレージ装置の読み込み処理のフローチャートを示す図(1)である。 図7は、実施例2に係るストレージ装置の読み込み処理のフローチャートを示す図(2)である。 図8は、DIMMがECC対応である場合のディスクへの書き込み処理を説明する図である。 図9は、DIMMがECC非対応である場合のディスクへの書き込み処理を説明する図である。
以下に、本願の開示するストレージ装置、制御装置およびデータ保護方法の実施例を図面に基づいて詳細に説明する。なお、本実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[ストレージ装置の構成]
図1は、実施例1に係るストレージ装置のハードウェア構成を示す図である。図1に示すように、ストレージ装置9は、複数のCM(Controller Module)1〜4とディスク5、6とPCIeスイッチ7とを有する。CM1〜4は、PCIeスイッチ7を介して互いに接続されている。CM1、2は、ディスク5と接続し、データを冗長化する。CM3、4は、ディスク6と接続し、データを冗長化する。さらに、CM4は、サーバなどのホストコンピュータを示すホスト8と接続する。以下では、CM4が、ホスト8からCM1、2が管轄するディスク5へのデータの書き込み要求を受け取った場合の書き込み動作を中心に説明する。なお、CM4が「第1の制御装置」の一例であり、CM1が「第2の制御装置」の一例であり、CM2が「第3の制御装置」の一例である。
CM4は、CA41と、メモリコントローラ42と、DIMM43と、CPU44と、PCIeスイッチ45と、DMAチップ46と、DI47とを有する。なお、CM3は、CM1と同様の構成であるため、その説明を省略する。
CA41は、ホストとのインタフェースである。例えば、CA41は、ホスト8からCM1、2が管轄するディスク5へのデータの書き込み要求を受け取ると、メモリコントローラ42を介してDIMM43へデータを書き込む(図1(11))。すなわち、CA41は、DMAによるデータ転送方式で、データをDIMM41へ展開する。また、CA41は、データをDIMM43へ書き込む際、データに誤り検出符号が付加されていなければ、データに誤り検出符号を付加してからデータをDIMM43に転送する。また、CA41は、データについてDIMM43への転送を完了すると、後述するCPU44にデータの転送完了を通知する。なお、データに付加される誤り検出符号は、例えばCRCであるが、これに限定されるものではない。
メモリコントローラ42は、後述するDIMM43へのデータの入出力制御を行う、ECC対応のコントローラである。すなわち、メモリコントローラ42では、仮にデータにデータ化けが検出されても、ECC対応であるので、データ化けを自動的に修正する。なお、ECC対応であるか否かは、内部に備えられたレジスタの値によって判別できる。例えば、ECC対応である場合、レジスタの値が「1」に設定され、ECC対応でない場合、レジスタの値が「0」に設定される。
DIMM43は、ECC非対応のメモリモジュールである。すなわち、DIMM43では、仮にデータがデータ化けであっても、ECC非対応であるので、データ化けを自動的に修正できず、データ化けのまま保持する。例えば、DIMM43は、CA41によってデータが書き込まれたとき、データ化けとなっても、データ化けのまま保持する。なお、ECC対応であるか否かは、内部に備えられたSPD(Serial Presence Detect)情報によって判別できる。
CPU44は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。一例として、CPU44は、DIMM43へのデータの転送完了通知をCA41から受け取ると、転送されたデータのCRCをチェックする。ここで、CPU44は、データにデータ化けが検出されないと、DIMM43の別領域にデータをコピーする(図1(12))。データを別領域にコピーするのは、データ化けが検出されなかった正常なデータを保護しておき、書き込み要求のデータの消失を防止するためである。
また、CPU44は、ホスト8へ受信完了を送信する(図1(13))。これにより、CPU44は、受信完了をできるだけ早くホスト8側に送信することができ、ホスト8側では、書き込み要求のデータを削除し、データの書き込みに使用していた資源を別の作業に使用することができる。そして、CPU44は、PCIeスイッチ45を介して後述するDMAチップ46に対して、データの書き込み先のCM1およびCM2へデータを転送するように要求する(図1(14))。なお、CPU44は、CRCをチェックした結果、データにデータ化けが検出されると、ホスト8にデータの再送を要求する。
PCIeスイッチ45は、入出力デバイスとしてCA41、メモリコントローラ42、DMAチップ46およびDI47と接続し、接続した入出力デバイス間でデータを中継する。
DMAチップ46は、CM間のDMAにおけるコントローラである。例えば、DMAチップ46は、データの書き込み要求のあったCM1のDIMMへデータを転送する。また、DMAチップ46は、データの書き込み要求のあったCM1と冗長化されたCM2のDIMMへデータを転送する(図1(14))。これは、CM1の万一の故障に備えてデータをミラーリングしておくためである。そして、DMAチップ46は、データについてDIMMへの転送を完了すると、自CM4のCPU44および転送先のCM1、2のCPUにデータの転送完了を通知する。これにより、DIMM43上の転送されたデータの領域が解放可能となる。なお、転送されるデータは、例えば、DIMM43上の保護元のデータであるが、保護先のデータであっても良い。
DI47は、ディスク6とのインタフェースである。
CM1は、CA11と、メモリコントローラ12と、DIMM13と、CPU14と、PCIeスイッチ15と、DMAチップ16と、DI17とを有する。なお、CM2は、CM1と同様の構成であるため、その説明を省略する。
CA11は、ホストとのインタフェースである。
メモリコントローラ12は、後述するDIMM13へのデータの入出力制御を行う。このメモリコントローラ12は、一例として、ECC対応のコントローラであるが、ECC非対応のコントローラであっても良い。なお、ECC対応であるか否かは、内部に備えられたレジスタの値によって判別できる。例えば、ECC対応である場合、レジスタの値が「1」に設定され、ECC対応でない場合、レジスタの値が「0」に設定される。
DIMM13は、メモリモジュールである。このDIMM13は、一例として、ECC非対応のDIMMであるが、ECC対応のDIMMであっても良い。仮に、DIMM13が、ECC非対応である場合、データがデータ化けであっても、データ化けを自動的に修正できず、データ化けのまま保持する。一方、仮にDIMM13が、ECC対応である場合、データがデータ化けであっても、データ化けを自動的に修正できる。なお、ECC対応であるか否かは、内部に備えられたSPD情報によって判別できる。
CPU14は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。一例として、CPU14は、DIMM13へのデータの転送完了通知をCM4のDMAチップ46から受け取ると、後述するDI17へ、当該データをディスク5へ書き込むように要求する。また、CPU14は、DI17から、当該データの書き込み要求に対してエラーが通知されると、自CMと冗長化されたCM2へ、ミラーリングされたデータの書き込みを要求する。これにより、CPU14は、当該データの書き込みにエラーがあっても、CM2にミラーリングされたデータを使ってディスク5への書き込みを完了させることが可能となる。また、CPU14は、CM2から、当該データの書き込み要求に対してエラーが通知されると、CM4のCPU44に対して、当該データをコピーしたデータの書き込みを要求する。これにより、CPU14は、当該データの書き込みにエラーがあっても、コピーされたデータを使ってディスク5への書き込みを完了させることが可能となる。
DI17は、ディスク5とのインタフェースである。例えば、DI17は、CPU14から書き込み要求を受け取ると、DIMM13から書き込み要求のデータを読み込み、読み込んだデータのCRCをチェックする。ここで、DI17は、読み込んだデータにデータ化けが検出されないと、当該データをディスク5に書き込む(図1(15))。一方、DI17は、読み込んだデータにデータ化けが検出されると、CPU14に対してエラーであることを通知する。なお、データがデータ化けとなるタイミングの一例として、CM1においてDIMM13がECC非対応である場合に、データがDIMM13に書き込まれるタイミングがある。また、別の例としてDIMM13までの伝送路内やDIMM13からDI17までの伝送路内でのタイミングがある。
[書き込み処理のフローチャート]
次に、実施例1に係るストレージ装置9の書き込み処理のフローチャートを、図2および図3を参照して説明する。図2および図3は、実施例1に係るストレージ装置の書き込み処理のフローチャートを示す図である。なお、図2および図3では、CM1をCM#0とし、CM2をCM#1とし、CM3をCM#2とし、CM4をCM#3として説明するものとする。なお、CM#3がホスト8からCM#0、#1が管轄するディスク5へのデータの書き込み要求を受け取るものとする。
まず、CM#3では、CA41が、ホスト8から書き込み要求を受信したか否かを判定する(ステップS11)。ホスト8から書き込み要求を受信していないと判定した場合(ステップS11;No)、CA41は、書き込み要求を受信するまで、判定処理を繰り返す。
一方、ホスト8から書き込み要求を受信したと判定した場合(ステップS11;Yes)、CA41は、DIMM43へ書き込み要求のデータを転送する(ステップS12)。このとき、CA41は、書き込み要求のデータにCRCが付加されていなければ、当該データにCRCを付加してから、付加した後のデータをDIMM43へ転送する。ここで、説明の便宜上、DIMM43へ転送したデータをData#0とする。そして、CA41は、転送完了時に、CM#3のCPU44へ転送完了を通知する(ステップS13)。
続いて、CM#3のCPU44は、DIMM43およびメモリコントローラ42がECC対応であるか否かを判定する(ステップS13A)。例えば、CPU44は、DIMM43について、SPD情報を用いてECC対応であるか否かを判定する。また、CPU44は、メモリコントローラ42について、内部に備えられたレジスタを用いてECC対応であるか否かを判定する。そして、DIMM43およびメモリコントローラ42がECC対応であると判定した場合(ステップS13A;Yes)、CPU44は、CRCのチェックをしないで、ステップS17に移行する。一方、DIMM43およびメモリコントローラ42のどちらか一方でもECC対応でないと判定した場合(ステップS13A;No)、CPU44は、CRCのチェックをすべく、ステップS14に移行する。
ステップS14では、CM#3のCPU44が、Data#0のCRCのチェックをし、CRCのチェックが正常であるか否かを判定する(ステップS14)。CRCのチェックが正常でないと判定した場合(ステップS14;No)、CPU44は、ホスト8へ再送要求を送信する(ステップS15)。CRCのチェックが正常でない場合とは、例えばデータ化けとなった場合である。そして、書き込み処理は、ステップS11に移行する。
一方、CRCのチェックが正常であると判定した場合(ステップS14;Yes)、CPU44は、DIMM43の別領域にData#0をコピーする(ステップS16)。これは、データ化けが検出されなかったデータを保護するためである。ここで、説明の便宜上、別領域にコピーしたデータをData#1とする。そして、CPU44は、ホスト8へ受信完了を送信する(ステップS17)。
さらに、CM#3では、CPU44が、CM#3のDMAチップ46に対して、CM#0へData#0の転送を要求する(ステップS18)。そして、DMAチップ46は、CM#0のDIMM13へData#0を転送し、転送完了時にCM#3のCPU44およびCM#0のCPU14へ転送完了を通知する(ステップS19)。
続いて、DMAチップ46は、CM#0と冗長化されたCM#1へData#0を転送し、転送完了時にCM#3のCPU44およびCM#1のCPUへ転送完了を通知する(ステップS21)。そして、CM#3のCPU44は、CM#3のDMAチップ46からCM#0およびCM#1の転送完了通知を受けると、Data#0の領域を解放することが可能となる(ステップS22)。
続いて、CM#0では、DMAチップ46からの転送完了通知を受け取ったCPU14が、DI17に対して、転送されたData#0をディスク5へ書き込むように要求する(ステップS31)。すると、DI17は、DIMM13からData#0を読み込み、読み込んだData#0をディスク5へ書き込む(ステップS32)。
そして、DI17は、Data#0のCRCのチェックをし、CRCのチェックが正常であるか否かを判定する(ステップS33)。CRCのチェックが正常であると判定した場合(ステップS33;Yes)、DI17は、CPU14へ書き込みの完了を通知する(ステップS34)。そして、CPU14は、CM#3のCPU44へ書き込みの完了通知を送信する(ステップS35)。
CM#3では、CPU44が、CM#0のCPU14から書き込みの完了通知を受けると、書き込み要求がされたデータの書き込みが完了したので、Data#1の領域を解放することが可能となる(ステップS36)。そして、書き込み処理は、次の書き込み要求を待つべく、ステップS11に移行する。
ステップS33では、CRCのチェックが正常でないと判定した場合(ステップS33;No)、DI17は、CM#0のCPU14へエラーであることを通知する(ステップS37)。そして、CM#0のCPU14は、CM#1へ、ミラーリングしたデータの書き込みを要求する(ステップS38)。その後、CM#0のCPU14は、CM#1から書き込みが正常である旨の通知を受信すると、CM#3へ書き込みの完了を通知すべく、ステップS34に移行する。
一方、CM#0のCPU14は、CM#1から書き込みがエラーである旨の通知を受信すると、CM#3のCPU44へ、コピーしたData#1の書き込みを要求する(ステップS39)。そして、書き込み処理は、Data#0を用いて行った処理をData#1を用いて行うべく、ステップS18に移行する。
なお、実施例1に係るストレージ装置9では、メモリコントローラ42がECC対応であってDIMM43がECC非対応の場合を説明した。しかしながら、ストレージ装置9では、メモリコントローラ42がECC非対応であってDIMM43がECC対応であっても良いし、どちらもがECC非対応であっても良い。すなわち、データに誤りがあっても自動的に修正できない場合であれば良い。
ところで、実施例1に係るストレージ装置9では、メモリコントローラ42がCPU44に内蔵していない場合について説明した。しかしながら、ストレージ装置9では、これに限定されず、メモリコントローラ42がCPU44に内蔵している場合であっても良い。そこで、実施例1に係るストレージ装置9の変形例として、メモリコントローラ42がCPU44に内蔵しているストレージ装置9Aについて説明する。
[ストレージ装置の変形例の構成]
図4は、実施例1に係るストレージ装置の変形例のハードウェア構成を示す図である。なお、図1に示すストレージ装置9と同一の構成については同一符号を示すことで、その重複する構成および動作の説明については省略する。図1と図4とが異なるところは、CM4について、メモリコントローラ42とCPU44とをCPU+メモリコントローラ44Aに変更した点にある。また、CM1について、メモリコントローラ12とCPU14とをCPU+メモリコントローラ14Aに変更した点にある。
DIMM43は、ECC対応のメモリモジュールである。なお、ECC対応であるか否かは、内部に備えられたSPD情報によって判別できる。
CPU+メモリコントローラ44Aは、メモリコントローラ内蔵のCPUであり、1つの機能として、DIMM43を制御する。そして、CPU+メモリコントローラ44Aは、一例としてECC非対応であるとする。なお、ECC対応であるか否かは、内部に備えられたレジスタの値によって判別できる。
また、CPU+メモリコントローラ44Aは、別の機能として、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。一例として、CPU+メモリコントローラ44Aは、CA41からDIMM43へのデータの転送完了通知を受け取ると、当該データのCRCをチェックする。ここで、CPU+メモリコントローラ44Aは、データにデータ化けが検出されないと、DIMM43の別領域にデータをコピーする(図4(12))。データを別領域にコピーするのは、データ化けが検出されなかった正常なデータを保護しておき、書き込み要求のデータの消失を防止するためである。
また、CPU+メモリコントローラ44Aは、ホスト8へ受信完了を送信する(図4(13))。これにより、CPU+メモリコントローラ44Aは、受信完了をできるだけ早くホスト8側に送信することができ、ホスト8側では、書き込み要求のデータを削除し、データの書き込みに使用していた資源を別の作業に使用することができる。そして、CPU+メモリコントローラ44Aは、PCIeスイッチ45を介してDMAチップ46に対して、データの書き込み先のCM#0およびCM#1へデータを転送するように要求する(図4(14))。なお、CPU+メモリコントローラ44Aは、データにデータ化けが検出されると、ホスト8にデータの再送を要求する。
CPU+メモリコントローラ14Aは、メモリコントローラ内蔵のCPUであり、1つの機能として、DIMM13を制御する。そして、CPU+メモリコントローラ14Aは、一例として、ECC対応であるが、ECC非対応であっても良い。なお、ECC対応であるか否かは、内部に備えられたレジスタの値によって判別できる。
CPU+メモリコントローラ14Aは、別の機能として、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。一例として、CPU+メモリコントローラ14Aは、DIMM13へのデータの転送完了通知をCM4のDMAチップ46から受け取ると、DI17へ、当該データをディスク5へ書き込むように要求する。また、CPU+メモリコントローラ14Aは、DI17から、当該データの書き込み要求に対してエラーが通知されると、自CMと冗長化されたCM2へ、ミラーリングされたデータの書き込みを要求する。これにより、CPU+メモリコントローラ14Aは、当該データの書込みにエラーがあっても、CM2にミラーリングされたデータを使ってディスク5への書き込みを完了させることが可能となる。また、CPU+メモリコントローラ14Aは、CM2から、当該データの書き込み要求に対してエラーが通知されると、CM4のCPU+メモリコントローラ44Aへ、当該データをコピーしたデータの書き込みを要求する。これにより、CPU+メモリコントローラ14Aは、当該データの書込みにエラーがあっても、コピーされたデータを使ってディスク5への書き込みを完了させることが可能となる。
なお、変形例における書き込み処理のフローチャートについては、図2および図3で説明したとおりであるので、その説明を省略する。すなわち、CPU44およびメモリコントローラ42をCPU+メモリコントローラ44Aに置き換え、CPU14およびメモリコントローラ12をCPU+メモリコントローラ14Aに置き換えれば良い。
[実施例1の効果]
上記実施例1によれば、ストレージ装置9では、DIMM43およびメモリコントローラ42の少なくとも一方がECC非対応である場合に、CM4が、ホスト8からCM1およびCM2が管轄するストレージへのデータの書込み要求を受け付ける。CM4は、書込み要求のCRCが付加されたデータを、メモリコントローラ42を介してDIMM43に展開し、展開したデータに誤りが検出されるか否かを判定する。そして、CM4は、データに誤りが検出されないと判定された場合、展開されたDIMM43の領域と異なる領域にデータを退避する。そして、CM4は、書込み要求のデータの退避が完了した後、ホスト8へ書き込みが完了したことを通知する。かかる構成によれば、ストレージ装置9は、DIMM43およびメモリコントローラ42の少なくとも一方がECC非対応であっても、書き込み要求のデータをDIMM43に展開した、誤りのないデータを退避するようにした。この結果、ストレージ装置9は、ホスト8へ書き込みが完了したことを通知しても、その後ディスク5への書き込みが完了するまで書き込み要求のデータが消失することを防止できる。
また、上記実施例1によれば、CM4は、DIMM43に展開されたデータをCM1およびCM1と冗長化されたCM2のDIMMへ転送する。そして、CM1は、DIMM13へ転送されたデータをディスク5へ書き込む際、さらにデータに誤りが検出されるか否かを判定する。そして、CM1は、誤りが検出されたと判定する場合、CM2に対して、転送されたデータの書き込みを要求する。そして、CM1は、誤りが検出されなかったと判定する場合、誤りが検出されなかったデータをディスク5へ書き込む。かかる構成によれば、ストレージ装置9は、CM1でデータに誤りが検出されても、ディスク5への書き込みにCM1と冗長化されたCM2に転送されたデータを用いることにより、ディスク5への書き込みを正常に完了することが可能となる。
上記実施例1によれば、CM1は、CM2に要求したデータの書き込みが失敗したことを、CM2から受け付けた場合、CM4によって退避されたデータの書き込みをすべく、CM4に対して当該データの転送を要求する。かかる構成によれば、ストレージ装置9は、CM2でデータの書き込みに失敗しても、退避されたデータを用いることにより、ディスク5への書き込みを正常に完了することが可能となる。
ところで、実施例1に係るストレージ装置9では、DIMMおよびメモリコントローラの少なくとも一方がECC非対応である場合に、データの書き込み要求があった際、書き込み要求のデータをDIMMにコピーするようにした。しかしながら、ストレージ装置9は、これに限定されず、DIMMおよびメモリコントローラの少なくとも一方がECC非対応である場合に、書き込み要求のみならず読み込み要求があった際、読み込み要求のデータをDIMMにコピーするようにしても良い。そこで、DIMMおよびメモリコントローラの少なくとも一方がECC非対応である場合に、書き込み要求のみならず読み込み要求があった際、読み込み要求のデータもDIMMにコピーするストレージ装置について説明する。
[ストレージ装置の構成]
図5は、実施例2に係るストレージ装置のハードウェア構成を示す図である。なお、図1に示すストレージ装置9と同一の構成については同一符号を示すことで、その重複する構成および動作の説明については省略する。ここでは、CM4が、ホスト8からCM1、2が管轄するディスク5へのデータの書き込み要求を受け取った場合の書き込み動作の説明については省略する。以下では、CM4が、ホスト8からCM1、2が管轄するディスク5への読み込み要求を受け取った場合の読み込み動作を中心に説明する。
CPU14は、CM4から読み込み要求を受け取ると、DI17へディスク5からデータを読み込むように要求する。また、CPU14は、DIMM13へのデータの転送完了通知をDI17から受け取ると、当該データのCRCをチェックする。ここで、CPU14は、データにデータ化けが検出されないと、DIMM13の別領域にデータをコピーする(図5(22))。データを別領域にコピーするのは、データ化けが検出されなかった正常なデータを保護するためである。また、CPU14は、PCIeスイッチ15を介してDMAチップ16に対して、ホスト8と接続するCM4へデータを転送するように要求する(図5(23))。なお、CPU14は、データにデータ化けが検出されると、DI17へデータの再送を依頼する。
DMAチップ16は、CPU14からデータの転送要求を受け取ると、ホスト8と接続するCM4のDIMM43へデータを転送する。そして、DMAチップ16は、データについてDIMM43への転送を完了すると、自CM1のCPU14および転送先のCM4のCPU44にデータの転送完了を通知する。これにより、DIMM13上の転送されたデータの領域が解放可能となる。なお、転送されるデータは、例えば、DIMM13上の保護元のデータであるが、保護先のデータであっても良い。
DI17は、CPU14からデータの読み込み要求を受け取ると、読み込み要求に応じてディスク5からデータの読み込みを行う。そして、DI17は、メモリコントローラ12を介してデータをDIMM13へ書き込む(図5(21))。また、DI17は、データをDIMM13へ書き込む際、データに誤り検出符号が付加されていなければ、データに誤り検出符号を付加してからデータをDIMM13に転送する。また、DI17は、データについてDIMM13への転送を完了すると、CPU14にDIMM13へのデータの転送完了を通知する。なお、データに付加される誤り検出符号は、例えばCRCであるが、これに限定されるものではない。
CA41は、CPU44からデータの転送要求を受け取ると、DIMM43から転送するデータを読み込み、読み込んだデータのCRCをチェックする。ここで、CA41は、読み込んだデータにデータ化けが検出されないと、当該データをホスト8に引き渡す(図5(24))。これにより、ホスト8からの読み込み要求に対する処理が完了する。一方、CA41は、読み込んだデータにデータ化けが検出されると、CPU44に対してエラーであることを通知する。なお、データがデータ化けとなるタイミングの一例として、データがDIMM43に書き込まれるタイミングがある。また、別の例としてDIMM43に書き込まれるまでの伝送路内やDIMM43からCA41までの伝送路内でのタイミングがある。
CPU44は、CM1のDMAチップ16からデータの転送完了通知を受け取ると、当該データをホスト8に転送するようにCA41に要求する。また、CPU44は、CA41から、データの転送要求に対してエラーが通知されると、CM1のCPU14へ当該データをコピーしたデータの再送を要求する。これにより、CPU44は、転送要求のデータがデータ化けであっても、コピーされたデータを使ってホスト8への転送を完了させることが可能となる。
[読み込み処理のフローチャート]
次に、実施例2に係るストレージ装置9Bの読み込み処理のフローチャートを、図6および図7を参照して説明する。図6および図7は、実施例2に係るストレージ装置の読み込み処理のフローチャートを示す図である。なお、図6および図7では、CM1をCM#0とし、CM2をCM#1とし、CM3をCM#2とし、CM4をCM#3として説明するものとする。なお、CM#3がホスト8からCM#0、#1が管轄するディスク5への読み込み要求を受け取るものとする。
まず、CM#3では、ホスト8から読み込み要求を受信したか否かを判定する(ステップS41)。ホスト8から読み込み要求を受信していないと判定した場合(ステップS41;No)、CM#3では、読み込み要求を受信するまで、判定処理を繰り返す。一方、ホスト8から読み込み要求を受信したと判定した場合(ステップS41;Yes)、CM#3では、CM#3を経由してCM#0のCPU14へ読み込み要求を通知する(ステップS42)。
続いて、CM#0のCPU14は、CM#0のDI17へディスク5からデータを読み込むよう要求する(ステップS43)。そして、DI17は、要求に応じてディスク5からデータ読み込み、読み込んだデータをDIMM13へ転送する(ステップS44)。このとき、D117は、読み込んだデータにCRCが付加されていなければ、当該データにCRCを付加してから、付加した後のデータをDIMM13へ転送する。ここで、説明の便宜上、DIMM13へ転送したデータをData#0とする。そして、DI17は、転送完了時に、CM#0のCPU14へ転送完了を通知する(ステップS45)。
続いて、CM#0のCPU14は、DIMM13およびメモリコントローラ12がECC対応であるか否かを判定する(ステップS45A)。例えば、CPU14は、DIMM13について、SPD情報を用いてECC対応であるか否かを判定する。また、CPU14は、メモリコントローラ12について、内部に備えられたレジスタを用いてECC対応であるか否かを判定する。そして、DIMM13およびメモリコントローラ12がECC対応であると判定した場合(ステップS45A;Yes)、CPU14は、CRCのチェックをしないで、ステップS49に移行する。一方、DIMM13およびメモリコントローラ12のどちらか一方でもECC対応でないと判定した場合(ステップS45A;No)、CPU14は、CRCのチェックをすべく、ステップS46に移行する。
ステップS46では、CM#0のCPU14が、Data#0のCRCのチェックをし、CRCのチェックが正常であるか否かを判定する(ステップS46)。CRCのチェックが正常でないと判定した場合(ステップS46;No)、CPU14は、DI17へ再送を依頼する(ステップS47)。CRCのチェックが正常でない場合とは、例えばデータ化けとなった場合である。そして、読み込み処理は、ステップS44に移行する。
一方、CRCのチェックが正常であると判定した場合(ステップS46;Yes)、CPU14は、DIMM13の別領域にData#0をコピーする(ステップS48)。これは、データ化けが検出されなかったデータを保護するためである。ここで、説明の便宜上、別領域にコピーしたデータをData#1とする。そして、CPU14は、DMAチップ16に対して、CM#3へData#0の転送を要求する(ステップS49)。そして、DMAチップ16は、CM#3のDIMM43へData#0を転送し、転送完了時にCM#3のCPU44およびCM#0のCPU14へ転送完了を通知する(ステップS50)。
続いて、CM#0では、転送完了通知を受け取ったCPU14が、Data#0の領域を解放することが可能となる(ステップS51)。
続いて、CM#3では、転送完了通知を受け取ったCPU44が、CA41に対して、転送されたData#0をホスト8に転送するように要求する(ステップS52)。すると、CA41は、DIMM43からData#0を読み込み、読み込んだData#0をホスト8へ引き渡す(ステップS53)。
このとき、CA41は、Data#0のCRCをチェックし、CRCのチェックが正常であるか否かを判定する(ステップS54)。CRCのチェックが正常であると判定した場合(ステップS54;Yes)、CA41は、CPU44へ読み込みの完了を通知する(ステップS55)。そして、CPU44は、CM#0のCPU14へ読み込みの完了通知を送信する(ステップS56)。
CM#0では、CPU14が、CM#3のCPU44から読み込みの完了通知を受けると、読み込み要求の読み込みが完了したので、Data#1の領域を解放することが可能となる(ステップS57)。そして、読み込み処理は、次の読み込み要求を待つべく、ステップS141に移行する。
ステップS54では、CRCのチェックが正常でないと判定した場合(ステップS54;No)、CA41は、CM#3のCPU44へエラーであることを通知する(ステップS58)。そして、CM#3のCPU44は、CM#0のCPU14へ、コピーしたData#1の再送を要求する(ステップS59)。そして、読み込み処理は、Data#0を用いて行った処理をData#1を用いて行うべく、ステップS49に移行する。
[実施例2の効果]
上記実施例2によれば、ストレージ装置9Bでは、CM1が、CM4を経由してホスト8からデータの読み込み要求を受け付けると、読み込み要求に応じてディスク5から読み込んだデータを、メモリコントローラ12を介してDIMM13に展開する。そして、CM1は、展開したデータに誤りが検出されるか否かを判定する。そして、CM1は、データに誤りが検出されなかったと判定した場合、展開したDIMM13の領域と異なる領域にデータを退避する。そして、CM1は、読み込み要求のデータの退避が完了した後、誤りが検出されなかったデータをCM4へ転送する。かかる構成によれば、ストレージ装置9Bは、読み込み要求に応じて読み込んだデータをDIMM13に展開した、誤りのないデータを退避するようにした。この結果、ストレージ装置9Bは、ホスト8への応答までに、CM4へ転送したデータに何らかの理由で誤りが検出されても、退避したデータを用いることで、ホスト8の読み込み性能を高速化できる。
また、上記実施例2によれば、ストレージ装置9Bでは、CM4が、CM1から転送されたデータをホスト8へ引き渡す際、さらにデータに誤りが検出されるか否かを判定する。そして、CM4は、データに誤りが検出されたと判定した場合、CM1に対して退避されたデータの再送を要求する。そして、CM4は、データに誤りが検出されなかったと判定した場合、誤りが検出されなかったデータをホスト8へ引き渡す。かかる構成によれば、ストレージ装置9Bは、CM4でデータに誤りが検出されても、ホスト8への引き渡しに、退避したデータを用いることにより、読み込み要求に対する応答を確実に且つ高速に完了することが可能となる。
[その他]
なお、実施例1、2では、CM4が、ホスト8から別のCMが管轄するディスク5へのデータの書き込み要求を受け取った場合について説明した。しかしながら、CM4は、これに限定されず、ホスト8から自CMが管轄するディスク6へのデータの書き込み要求を受け取った場合であっても良い。かかる場合、CPU44は、CA41からDIMM43へのデータの転送完了通知を受け取ると、当該データにデータ化けが検出されなければ、DIMM44の別領域にデータをコピーする。そして、CPU44は、ホスト8へ受信完了を送信する。その後、CPU44は、DI47へ当該データをディスク6へ書き込むように要求するようにすれば良い。これにより、CM4は、DIMM43がECC非対応であっても、DIMM44の別領域に誤りのないデータが退避されているので、ディスク6への書き込みが完了するまで書き込み要求のデータが消失することを防止できる。
また、実施例2では、CM4が、ホスト8から別のCMが管轄するディスク5への読み込み要求を受け取った場合について説明した。しかしながら、CM4は、これに限定されず、ホスト8から自CMが管轄するディスク6への読み込み要求を受け取った場合であっても良い。かかる場合、CPU44は、ホスト8から読み込み要求を受け取ると、DI47へディスク6からデータを読み込むように要求する。そして、CPU44は、DI47から、DIMM43へのデータの転送完了通知を受け取ると、当該データのCRCをチェックする。ここで、CPU44は、データにデータ化けが検出されないと、DIMM43の別領域にデータをコピーし、CA41に対してデータ化けが検出されなかったデータをホスト8に転送するように要求するようにすれば良い。これにより、CM4は、ホスト8に転送するデータに何らかの理由で誤りが検出されても、退避したデータを用いることで、ホスト8の読み込み性能を高速化できる。
また、実施例1では、CM1への書き込みデータをホスト8からCM4で受信した場合の処理を説明したが、これに限定されず、CM1への書き込みデータをホストからCM1で受信した場合であっても良い。
また、実施例では、ストレージ装置9、9A、9Bが、4台のCMを、2台ずつに冗長化するものと説明した。しかしながら、ストレージ装置9、9A、9Bは、これに限定されず、6台のCMを複数台ずつに冗長化しても良いし、8台のCMを複数台ずつに冗長化しても良いし、10台のCMを複数台ずつに冗長化しても良い。
以上説明した実施形態及びその変形例に関し、更に以下の付記を開示する。
(付記1)ストレージと、
前記ストレージへの書き込みデータを受信する制御装置と、
を備え、
前記制御装置は、
メモリと、
前記メモリへのデータの入出力制御を行うメモリコントローラと、
前記メモリおよび前記メモリコントローラの少なくとも一方が誤り訂正機能を有しない場合に、前記ストレージへのデータ書き込み処理時に、書き込みデータに前記誤り訂正機能と異なる誤り検出方式で用いられる誤り検出符号が付加されたデータを前記メモリに前記メモリコントローラを介して展開し、誤りが検出されるか否かを判定するデータ判定部と、
前記データ判定部による判定の結果、前記メモリに展開されたデータに誤りが検出されなかった場合、前記誤りが検出されなかったデータを予め定められた記憶領域に退避する退避部と、を有する
ことを特徴とするストレージ装置。
(付記2)前記ストレージへの書き込みデータを受信する第1の制御装置と、前記書き込みデータの書き込み先のストレージへの入出力制御を行う第2の制御装置が異なる場合において、
前記第1の制御装置は、
前記メモリに展開されたデータを前記第2の制御装置および前記第2の制御装置と冗長化された第3の制御装置のメモリへ転送する転送部を、さらに有し、
前記第2の制御装置は、
前記転送部によって自装置のメモリへ転送されたデータを前記ストレージへ書き込む際、さらに前記データに誤りが検出されるか否かを判定するデータ判定部と、
前記データ判定部による判定の結果、自装置のメモリへ転送されたデータに誤りが検出された場合、前記第3の制御装置に対して前記転送部によって転送されたデータの書き込みを要求する書込要求部と、
前記データ判定部による判定の結果、自装置のメモリへ転送されたデータに誤りが検出されなかった場合、誤りが検出されなかったデータを前記ストレージへ書き込むデータ書込部とをさらに有する
ことを特徴とする付記1に記載のストレージ装置。
(付記3)前記第2の制御装置は、
前記書込要求部によって要求された書き込みが失敗したことを、前記第3の制御装置から受け付けた場合、前記退避部によって退避されたデータの書き込みをすべく、前記第1の制御装置に対して当該データの転送を要求する転送要求部をさらに有する
ことを特徴とする付記2に記載のストレージ装置。
(付記4)前記第2の制御装置は、
前記第1の制御装置を経由した読込み処理時に、前記ストレージから読み込んだデータを、前記メモリに前記メモリコントローラを介して展開し、誤りが検出されるか否かを判定するデータ判定部と、
前記データ判定部による判定の結果、前記メモリに展開されたデータに誤りが検出されなかった場合、前記誤りが検出されなかったデータを予め定められた記憶領域に退避する退避部と、
前記退避部によって退避が完了した後、前記誤りが検出されなかったデータを前記第1の制御装置へ転送する転送部とをさらに有する
ことを特徴とする付記3に記載のストレージ装置。
(付記5)前記第1の制御装置は、
前記転送部によって転送されたデータをホストへ引き渡す際、さらに前記データに誤りが検出されるか否かを判定するデータ判定部と、
前記データ判定部によって前記データに誤りが検出されたと判定された場合、前記第2の制御装置に対して前記退避部によって退避されたデータの再送を要求する再送要求部と、
前記データ判定部によって前記データに誤りが検出されなかったと判定された場合、誤りが検出されなかったデータを前記ホストへ引き渡すデータ引渡部とをさらに有する
ことを特徴とする付記4に記載のストレージ装置。
(付記6)メモリと、
前記メモリへのデータの入出力制御を行うメモリコントローラと、
前記メモリおよび前記メモリコントローラの少なくとも一方が誤り訂正機能を有しない場合に、ストレージへのデータ書き込み処理時に、書き込みデータに前記誤り訂正機能と異なる誤り検出方式で用いられる誤り検出符号が付加されたデータを前記メモリに前記メモリコントローラを介して展開し、誤りが検出されるか否かを判定するデータ判定部と、
前記データ判定部による判定の結果、前記メモリに展開されたデータに誤りが検出されなかった場合、前記誤りが検出されなかったデータを予め定められた記憶領域に退避する退避部と、
を有することを特徴とする制御装置。
(付記7)前記データ判定部は、読込み処理時に、前記ストレージから読み込んだデータを、前記メモリに前記メモリコントローラを介して展開し、誤りが検出されるか否かを判定し、
前記退避部は、前記データ判定部によって前記メモリに展開されたデータに誤りが検出されなかった場合、前記誤りが検出されなかったデータを予め定められた記憶領域に退避する
ことを特徴とする付記6に記載の制御装置。
(付記8)ストレージへの書き込みデータを受信し、
メモリおよび前記メモリへのデータの入出力制御を行うメモリコントローラの少なくとも一方が誤り訂正機能を有しない場合に、該受信する処理によって受信された書き込みデータにおけるストレージへのデータ書き込み処理時に、当該書き込みデータに前記誤り訂正機能と異なる誤り検出方式で用いられる誤り検出符号が付加されたデータを前記メモリに前記メモリコントローラを介して展開し、誤りが検出されるか否かを判定し、
該判定する処理による判定の結果、前記メモリに展開されたデータに誤りが検出されなかった場合、前記誤りが検出されなかったデータを予め定められた記憶領域に退避する
各処理を実行することを特徴とするデータ保護方法。
1〜4 CM
5、6 ディスク
7 PCIeスイッチ
8 ホスト
13、43 DIMM
12、42 メモリコントローラ
11、41 CA
17、47 DI
16、46 DMAチップ
15、45 PCIeスイッチ
14、44 CPU
14A、44A CPU+メモリコントローラ
9、9A、9B ストレージ装置

Claims (7)

  1. ストレージと、
    前記ストレージへの書き込みデータを受信する制御装置と、
    を備え、
    前記制御装置は、
    メモリと、
    前記メモリへのデータの入出力制御を行うメモリコントローラと、
    前記メモリおよび前記メモリコントローラの少なくとも一方が誤り訂正機能を有しない場合に、前記ストレージへのデータ書き込み処理時に、書き込みデータに前記誤り訂正機能と異なる誤り検出方式で用いられる誤り検出符号が付加されたデータを前記メモリに前記メモリコントローラを介して展開し、誤りが検出されるか否かを判定するデータ判定部と、
    前記データ判定部による判定の結果、前記メモリに展開されたデータに誤りが検出されなかった場合、前記誤りが検出されなかったデータを予め定められた記憶領域に退避する退避部と、を有する
    ことを特徴とするストレージ装置。
  2. 前記ストレージへの書き込みデータを受信する第1の制御装置と、前記書き込みデータの書き込み先のストレージへの入出力制御を行う第2の制御装置が異なる場合において、
    前記第1の制御装置は、
    前記メモリに展開されたデータを前記第2の制御装置および前記第2の制御装置と冗長化された第3の制御装置のメモリへ転送する転送部を、さらに有し、
    前記第2の制御装置は、
    前記転送部によって自装置のメモリへ転送されたデータを前記ストレージへ書き込む際、さらに前記データに誤りが検出されるか否かを判定するデータ判定部と、
    前記データ判定部による判定の結果、自装置のメモリへ転送されたデータに誤りが検出された場合、前記第3の制御装置に対して前記転送部によって転送されたデータの書き込みを要求する書込要求部と、
    前記データ判定部による判定の結果、自装置のメモリへ転送されたデータに誤りが検出されなかった場合、誤りが検出されなかったデータを前記ストレージへ書き込むデータ書込部とをさらに有する
    ことを特徴とする請求項1に記載のストレージ装置。
  3. 前記第2の制御装置は、
    前記書込要求部によって要求された書き込みが失敗したことを、前記第3の制御装置から受け付けた場合、前記退避部によって退避されたデータの書き込みをすべく、前記第1の制御装置に対して当該データの転送を要求する転送要求部をさらに有する
    ことを特徴とする請求項2に記載のストレージ装置。
  4. 前記第2の制御装置は、
    前記第1の制御装置を経由した読込み処理時に、前記ストレージから読み込んだデータを、前記メモリに前記メモリコントローラを介して展開し、誤りが検出されるか否かを判定するデータ判定部と、
    前記データ判定部による判定の結果、前記メモリに展開されたデータに誤りが検出されなかった場合、前記誤りが検出されなかったデータを予め定められた記憶領域に退避する退避部と、
    前記退避部によって退避が完了した後、前記誤りが検出されなかったデータを前記第1の制御装置へ転送する転送部とをさらに有する
    ことを特徴とする請求項3に記載のストレージ装置。
  5. メモリと、
    前記メモリへのデータの入出力制御を行うメモリコントローラと、
    前記メモリおよび前記メモリコントローラの少なくとも一方が誤り訂正機能を有しない場合に、ストレージへのデータ書き込み処理時に、書き込みデータに前記誤り訂正機能と異なる誤り検出方式で用いられる誤り検出符号が付加されたデータを前記メモリに前記メモリコントローラを介して展開し、誤りが検出されるか否かを判定するデータ判定部と、
    前記データ判定部による判定の結果、前記メモリに展開されたデータに誤りが検出されなかった場合、前記誤りが検出されなかったデータを予め定められた記憶領域に退避する退避部と、
    を有することを特徴とする制御装置。
  6. 前記データ判定部は、読込み処理時に、前記ストレージから読み込んだデータを、前記メモリに前記メモリコントローラを介して展開し、誤りが検出されるか否かを判定し、
    前記退避部は、前記データ判定部によって前記メモリに展開されたデータに誤りが検出されなかった場合、前記誤りが検出されなかったデータを予め定められた記憶領域に退避する
    ことを特徴とする請求項5に記載の制御装置。
  7. ストレージへの書き込みデータを受信し、
    メモリおよび前記メモリへのデータの入出力制御を行うメモリコントローラの少なくとも一方が誤り訂正機能を有しない場合に、該受信する処理によって受信された書き込みデータにおけるストレージへのデータ書き込み処理時に、当該書き込みデータに前記誤り訂正機能と異なる誤り検出方式で用いられる誤り検出符号が付加されたデータを前記メモリに前記メモリコントローラを介して展開し、誤りが検出されるか否かを判定し、
    該判定する処理による判定の結果、前記メモリに展開されたデータに誤りが検出されなかった場合、前記誤りが検出されなかったデータを予め定められた記憶領域に退避する
    各処理を実行することを特徴とするデータ保護方法。
JP2012172268A 2012-08-02 2012-08-02 ストレージ装置、制御装置およびデータ保護方法 Pending JP2014032516A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012172268A JP2014032516A (ja) 2012-08-02 2012-08-02 ストレージ装置、制御装置およびデータ保護方法
US13/933,291 US9141485B2 (en) 2012-08-02 2013-07-02 Storage device, control device and data protection method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012172268A JP2014032516A (ja) 2012-08-02 2012-08-02 ストレージ装置、制御装置およびデータ保護方法

Publications (1)

Publication Number Publication Date
JP2014032516A true JP2014032516A (ja) 2014-02-20

Family

ID=50026726

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012172268A Pending JP2014032516A (ja) 2012-08-02 2012-08-02 ストレージ装置、制御装置およびデータ保護方法

Country Status (2)

Country Link
US (1) US9141485B2 (ja)
JP (1) JP2014032516A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020062250A (ja) * 2018-10-18 2020-04-23 株式会社ユニバーサルエンターテインメント 遊技機

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9304902B2 (en) 2013-03-15 2016-04-05 Saratoga Speed, Inc. Network storage system using flash storage
US10313236B1 (en) 2013-12-31 2019-06-04 Sanmina Corporation Method of flow based services for flash storage
US9547616B2 (en) * 2014-02-19 2017-01-17 Datadirect Networks, Inc. High bandwidth symmetrical storage controller
US9608936B1 (en) 2014-07-03 2017-03-28 Sanmina Corporation Network system with offload services for flash storage
US9672180B1 (en) * 2014-08-06 2017-06-06 Sanmina Corporation Cache memory management system and method
US9715428B1 (en) * 2014-09-24 2017-07-25 Sanmina Corporation System and method for cache data recovery
CN111782472B (zh) * 2020-06-30 2022-04-26 平安科技(深圳)有限公司 系统异常检测方法、装置、设备及存储介质
US20240054037A1 (en) * 2022-08-12 2024-02-15 Micron Technology, Inc. Common rain buffer for multiple cursors

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0773113A (ja) * 1993-09-07 1995-03-17 Fuji Electric Co Ltd Icカードのデータ保護方法
JPH10187549A (ja) * 1996-12-27 1998-07-21 Rohm Co Ltd Icカード
JP2002023966A (ja) * 2000-06-30 2002-01-25 Toshiba Corp 転送データを冗長化したディスクシステム
JP2006134241A (ja) * 2004-11-09 2006-05-25 Fujitsu Ltd 記憶制御装置および外部記憶装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09288619A (ja) 1996-04-22 1997-11-04 Mitsubishi Electric Corp 主記憶装置
JP2008158779A (ja) 2006-12-22 2008-07-10 Toshiba Corp 情報処理装置、ecc制御装置およびecc制御方法
US8276043B2 (en) * 2008-03-01 2012-09-25 Kabushiki Kaisha Toshiba Memory system
US8136024B2 (en) * 2008-05-06 2012-03-13 Dell Products L.P. Optional memory error checking
KR20120126389A (ko) * 2011-05-11 2012-11-21 삼성전자주식회사 멀티-비트 메모리 장치를 포함한 데이터 저장 시스템 및 그것의 온칩 버퍼 프로그램 방법
US20130024735A1 (en) * 2011-07-19 2013-01-24 Ocz Technology Group Inc. Solid-state memory-based storage method and device with low error rate
JP2013041634A (ja) * 2011-08-11 2013-02-28 Fujitsu Ltd 不揮発性半導体記憶装置
US9098445B2 (en) * 2013-03-14 2015-08-04 Apple Inc. Selection of redundant storage configuration based on available memory space

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0773113A (ja) * 1993-09-07 1995-03-17 Fuji Electric Co Ltd Icカードのデータ保護方法
JPH10187549A (ja) * 1996-12-27 1998-07-21 Rohm Co Ltd Icカード
JP2002023966A (ja) * 2000-06-30 2002-01-25 Toshiba Corp 転送データを冗長化したディスクシステム
JP2006134241A (ja) * 2004-11-09 2006-05-25 Fujitsu Ltd 記憶制御装置および外部記憶装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020062250A (ja) * 2018-10-18 2020-04-23 株式会社ユニバーサルエンターテインメント 遊技機

Also Published As

Publication number Publication date
US20140040677A1 (en) 2014-02-06
US9141485B2 (en) 2015-09-22

Similar Documents

Publication Publication Date Title
JP2014032516A (ja) ストレージ装置、制御装置およびデータ保護方法
KR100640037B1 (ko) 파일 제어 시스템 및 파일 제어 장치
JP5039061B2 (ja) メモリトランザクション再生メカニズム
US6691205B2 (en) Method for using RAM buffers with simultaneous accesses in flash based storage systems
US20110047440A1 (en) Systems and Methods to Respond to Error Detection
US9191030B2 (en) Memory controller, data storage device, and memory controlling method
US20150052385A1 (en) Implementing enhanced data caching and takeover of non-owned storage devices in dual storage device controller configuration with data in write cache
JP6713740B2 (ja) メモリモジュール
JP4451837B2 (ja) データ転送装置およびデータ転送方法
JP2009301194A (ja) 半導体記憶装置の制御システム
JP2008262325A (ja) メモリ制御装置、メモリ制御方法、情報処理システム、そのプログラム及び記憶媒体
JP2008090442A (ja) メモリ制御装置
JP2001249911A (ja) データ転送方法及びデータ処理システム
US8572428B2 (en) Storage apparatus and control method for storage apparatus
JP4535371B2 (ja) ディスクアレイ制御プログラム、方法及び装置
US6938188B1 (en) Method for verifying functional integrity of computer hardware, particularly data storage devices
US20150200685A1 (en) Recording and reproducing device, error correction method, and control device
US20180181465A1 (en) Synchronized read and write flags for error-free memory module interface
JP5213061B2 (ja) ミラーリング制御装置、ミラーリング制御回路、ミラーリング制御方法およびそのプログラム
US20170070316A1 (en) System, receiving device, and method
US10740179B2 (en) Memory and method for operating the memory
JP5748214B2 (ja) 二重化情報処理システム
JP2008158724A (ja) ディスクアレイ装置のステージング方法
CN109343986B (zh) 处理内存故障的方法与计算机系统
JP2005070993A (ja) 転送モード異常検出機能を有する装置並びにストレージ制御装置および同装置用インターフェイスモジュール

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150406

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160315

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160513

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160705