JP5404804B2 - ストレージサブシステム - Google Patents

ストレージサブシステム Download PDF

Info

Publication number
JP5404804B2
JP5404804B2 JP2011537759A JP2011537759A JP5404804B2 JP 5404804 B2 JP5404804 B2 JP 5404804B2 JP 2011537759 A JP2011537759 A JP 2011537759A JP 2011537759 A JP2011537759 A JP 2011537759A JP 5404804 B2 JP5404804 B2 JP 5404804B2
Authority
JP
Japan
Prior art keywords
storage device
memory controller
write command
parity
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011537759A
Other languages
English (en)
Other versions
JP2012519319A (ja
Inventor
潤 北原
正法 高田
定広 杉本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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
Publication of JP2012519319A publication Critical patent/JP2012519319A/ja
Application granted granted Critical
Publication of JP5404804B2 publication Critical patent/JP5404804B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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/0613Improving I/O performance in relation to throughput
    • 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
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1054Parity-fast hardware, i.e. dedicated fast hardware for RAID systems with parity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、記憶装置にフラッシュメモリなどの不揮発性半導体メモリが搭載されたストレージサブシステムに関する。
近年、記憶デバイスとしてフラッシュメモリに代表される不揮発性半導体メモリが注目されている。フラッシュメモリはHDD(Hard Disk Drive)に代表される磁気記憶装置のような駆動部分を持たないため、HDDよりも低消費電力である。このため、外部記憶装置として、HDDの代わりに、フラッシュメモリを複数枚搭載したメモリドライブを用いたものが提案されている(特許文献1参照)。
一方、ストレージサブシステムは、安定性が要求されるところから、構成要素を2重化し、構成要素の一部に障害が発生したときでも処理を可能とする構成が採用されている。例えば、データの信頼性と処理性能を高めるために、RAID(Redundant Array of Inexpensive Disks)技術によって、複数の記憶デバイスを1つのRAIDグループとして管理し、データを冗長化して格納するものがある。この際、RAIDグループは、1つ以上の論理的な記憶領域を形成する。この記憶領域にデータを記憶するときに、RAIDグループを構成する記憶デバイスに冗長データを記憶する。記憶デバイスに冗長データを記憶することで、記憶デバイスの1つが故障した場合であってもデータを復元することができる。
例えば、フラッシュメモリで構成されたメモリドライブをRAID5として構成した場合、複数のデータによって計算されるECC(Error Correct Code)をECC用メモリドライブに記録し、1台のメモリドライブに障害が発生しても、障害の生じたメモリドライブに格納されたデータを、残りのデータとECCを用いて復元することができる。
しかし、RAIDを構成したサブストレージシステムにおいても、所定の台数以上のメモリドライブに障害が発生すると、データを復元することができなくなる。そこで、ストレージサブシステムでは、一般的に、スペアドライブと呼ばれる、データを保存していない予備ドライブを用意している。
そして、ストレージサブシステムにおいては、RAIDを構成しているメモリドライブの1台に障害が発生した場合に、RAIDを構成している残りのメモリドライブのデータを用いて、障害が発生したメモリドライブのデータを復元してスペアドライブに格納する構成が採用されている。
特開2008−204041号公報
RAID5を構成するストレージサブシステムにおいて、最初のデータ書き込み時に、例えば、データa、b、cを記憶デバイスに書き込む場合、データa、b、cをそれぞれ3台のHDDまたはメモリドライブに格納するとともに、データa、b、cを用いて排他的論理和演算を行ってパリティを生成し、生成したパリティをパリティ格納用HDDまたはメモリドライブに格納することが行われる。
この際、記憶デバイスに対するデータの入出力を制御するためのプロセッサは、キャッシュメモリ上のデータa、b、cを用いて排他的論理和演算を行ってパリティを生成し、生成したパリティをパリティ格納用HDDまたはメモリドライブに格納するようになっている。
また、プロセッサは、データの更新に伴うランダムライト時には、更新対象となる旧データと新データおよび旧パリティ(旧データに対応したパリティ)を基に新パリティを排他的論理和演算によって生成し、生成した新パリティをパリティ格納用HDDまたはメモリドライブに格納する。
ところで、HDDのデータを更新する場合、HDDのデータは上書きされることがある。このため、HDDに格納されている旧パリティは、上書き処理によって消失する可能性がる。この場合、HDDのデータを更新するときに、旧パリティを利用して新パリティを生成することができなくなる。
これに対して、フラッシュメモリのデータを更新する場合、新たなデータは、新データとして更新領域に書き込まれ、更新の対象となる旧データは、ブロック全体が消去されるまで残っている。このため、メモリドライブに格納された新パリティも、ブロック全体が消去されるまではそのまま残っている。この場合、フラッシュメモリのデータを更新するときに、旧パリティを利用して新パリティを生成することができる。
しかし、プロセッサがキャッシュメモリを用いて新パリティを生成するための演算を行う構成では、プロセッサのキャッシュメモリに対するアクセスが多くなり、プロセッサの負荷を軽減することができない。
本発明の目的は、データの更新に伴う処理を、キャッシュメモリを制御対象とする制御部と不揮発性半導体メモリを制御対象とするメモリコントローラで分散して行うことができるストレージサブシステムを提供することにある。
前記目的を達成するために、本発明は、不揮発性半導体メモリのデータを更新する際に、キャッシュメモリを制御対象とする制御部でデータ更新に関するコマンドを生成し、生成したコマンドを、制御部から、不揮発性半導体メモリを制御対象とするメモリコントローラに転送し、メモリコントローラでコマンドを基に排他的論理和演算を行って新パリティを生成し、生成した新パリティをパリティ格納用不揮発性半導体メモリに格納することを特徴とする。
本発明によれば、不揮発性半導体メモリのデータを更新するときに、キャッシュメモリを制御対象とする制御部の負荷を低減することができる。
本発明の第1実施例を示すストレージシステムのブロック構成図である。 フラッシュモジュールのブロック構成図である。 フラッシュメモリコントローラのブロック構成図である。 フラッシュメモリのブロック構成図である。 ブロックの構成図である。 (A)メモリセルの回路構成図、(B)メモリセルのセル構造を説明するための回路構成図である。 シーケンシャルライト処理を説明するための構成図である。 (A)HDDに対するXORライトコマンドの構成図、(B)フラッシュメモリに対するXORライトコマンドの構成図である。 HDDに対するランダムライト時の動作を説明するための構成図である。 フラッシュモジュールに対するランダムライト時の動作を説明するための構成図である。 パリティをページの1セクター分の更新領域に格納する方法を説明するための模式図である。 本発明の第1実施例の作用を説明するためのフローチャートである。 リクラメーション処理を説明するための構成図である。 本発明の第2実施例に用いられるフラッシュメモリコントローラのブロック構成図である。 本発明の第2実施例の作用を説明するためのフローチャートである。
本実施例は、ランダムライト時に、フラッシュモジュールに対して更新データを書き込むに際して、キャッシュを制御対象とする主プロセッサは、XORライトコマンドを生成し、生成したXORライトコマンドを、フラッシュメモリを制御対象とするフラッシュメモリコントローラに転送し、フラッシュメモリコントローラは、XORライトコマンドを解析して、パリティ格納用フラッシュメモリから旧パリティを読み出し、読み出した旧パリティとXORライトコマンドに付加された旧データおよび新データを用いて排他的論理和演算を行って新パリティを生成し、生成した新パリティをパリティ格納用フラッシュメモリに格納することとしている。
以下、本発明の第1実施例を図面に基づいて説明する。図1は、本発明の第1実施例を示すストレージシステムのブロック構成図である。
図1において、ストレージシステムは、複数の上位ホストシステム10と、ストレージサブシステム12を備え、各上位ホストシステム10はネットワーク14を介してストレージサブシステム12に接続されている。
ネットワーク14としては、例えば、SAN(Storage Area Network)、LAN(Local Area Network)、インターネット、専用回線、公衆回線などを用いることができ、データ通信を行うことのできるネットワークであれがよい。また、ネットワーク14におけるプロトコルとしては、ファイバチャネルプロトコルや、TCP/IPプロトコルを用いることができ、上位ホストシステム10とストレージサブシステム12との間でデータのやりとりが可能なプロトコルであれば、任意のプロトコルであってもよい。
上位ホストシステム10は、ホスト計算機(図示せず)を備えて構成されている。ホスト計算機は、例えば、CPU(Central Processing Unit)、メモリ、入力装置、出力装置、ホストアダプタを備えている。CPUは、メモリに格納されたアプリケーションプログラムに従ってリード要求(リードコマンド)やライト要求(ライトコマンド)を生成して、ホストアダプラから送信する。この際、上位ホストシステム10から送信されるリード要求には、例えば、リード対象のデータが管理されているLUN(Logical Unit Number)およびLBA(Logical Block Address)が含まれる。また、上位ホストシステム10から送信されるライト要求には、例えば、ライト対象のデータを書き込むLUNおよびLBAと、ライト対象のデータが含まれる。
ストレージサブシステム12は、複数の上位ホストシステムインターフェースユニット16と、複数の主プロセッサ18と、スイッチ20と、複数のキャッシュメモリ(以下、キャッシュと称する。)22と、複数のディスクドライブコントロールユニット24と、複数の記憶装置26を備え、各記憶装置26によって構築される論理ボリュームを、ネットワーク14を介して各上位ホストシステム10に提供することができる。
各上位ホストシステムインターフェースユニット16は、内部ネットワーク28を介してスイッチ20に接続され、各主プロセッサ18は、内部ネットワーク30を介してスイッチ20に接続され、各キャッシュ22は、内部ネットワーク32を介してスイッチ20に接続されている。スイッチ20は、内部ネットワーク34を介して各ディスクドライブコントロールユニット24に接続され、各ディスクドライブコントロールユニット24は、内部ネットワーク36を介してそれぞれ記憶装置26に接続されている。
各上位ホストシステムインターフェースユニット16は、ネットワーク14を介して、各上位ホストシステム10と情報の授受を行い、各上位ホストシステム10に対するデータの入出力処理を行う第一インターフェース部として構成されている。
各主プロセッサ18は、記憶装置26とキャッシュ22を制御対象とする制御部として、プログラムや各上位ホストシステム10からのコマンドに従って各種の演算、例えば、キャッシュ22や記憶装置26を制御対象とした制御演算やランダムライトに伴う処理などを実行する。この際、各主プロセッサ18は、処理に伴うデータを一時的にキャッシュ22に格納し、キャッシャ22に格納されたデータを利用してデータの入出力処理などを実行する。
各ディスクドライブコントロールユニット24は、スイッチ20を介して各主プロセッサ18を情報の授受を行うとともに、内部ネットワーク36を介して各記憶装置26と情報の授受を行い、記憶装置26内の記憶デバイス群に対するデータの入出力処理を行う第二インターフェース部として構成されている。
記憶装置26は、複数のHDD38を備えているとともに複数のフラッシュモジュール40を備え、複数のHDD38はディスクアレーとして構成され、複数のフラッシュモジュール40はフラッシュモジュールアレーとして構成されている。
この際、各HDD38または各フラッシュモジュール40の記憶領域には、上位ホストシステム10から参照できる論理的な記憶デバイスである論理デバイス(VDEV:Virtual Device)または論理ボリュームが割り当てることができる。この場合、複数のHDD38や複数のフラッシュモジュール40でRAID(Redundant Array of Inexpensive Disks)グループを構成した場合、RAIDグループの記憶領域を論理デバイスまたは論理ボリュームの記憶領域として用いることもできる。
各フラッシュモジュール40は、図2に示すように、フラッシュメモリコントローラ42と、複数のフラッシュメモリ44を備えて構成されている。各フラッシュメモリ44は、バス46を介してフラッシュメモリコントローラ42に接続され、フラッシュメモリコントローラ42は、内部ネットワーク36を介してディスクドライブコントロールユニット24に接続されている。
フラッシュメモリコントローラ42は、図3に示すように、マイクロプロセッサ(MPU;Microprocessing Unit)48と、RAM(Random Access Memory)50と、ROM(Read Only Memory)52と、ホストインターフェース54と、フラッシュメモリインターフェース56を備えている。マイクロプロセッサ48と、RAM50およびROM52は、それぞれバス58に接続され、ホストインターフェース54およびフラッシュメモリインターフェース56は、バス60に接続されている。ホストインターフェース54は、内部ネットワーク36を介してディスクドライブコントロールユニット24に接続されているとともに、バス58を介してマイクロプロセッサ48とRAM50およびROM52に接続されている。ホストインターフェース54は、バス60を介してフラッシュメモリインターフェース56に接続され、フラッシュメモリインターフェース56は、バス46を介して各フラッシュメモリ44に接続されている。
ホストインターフェース54は、マイクロプロセッサ48の管理の下で、内部ネットワーク36を介してディスクドライブコントロールユニット24に対するデータの入出力処理を実行する。フラッシュメモリインターフェース56は、マイクロプロセッサ48の管理の下で、バス46を介して各フラッシュメモリ44に対するデータの入出力処理などを実行する。この際、ホストインターフェース54に内蔵されたダイレクトメモリアクセスコントローラ62は、マイクロプロセッサ48の管理によらず、フラッシュメモリ44に関するデータの入出力処理を外部に対して実行する。
マイクロプロセッサ48は、補助プロセッサとして、ROM52に格納されたプログラムにしたがって各種演算処理を実行するとともに、ホストインターフェース54から入力されたコマンドを解析し、この解析結果をRAM50に格納するとともに、解析結果にしたがった演算処理を実行し、フラッシュメモリインターフェース56を介して各フラッシュメモリ44に対するデータの入出力処理を制御する。
各フラッシュメモリ44は、図4に示すように、フラッシュメモリチップ64を備え、フラッシュメモリチップ64にはメモリセルアレー66と内部バッファ68が形成されている。メモリセルアレー66には、データの消去単位となるブロック70が数1000〜数10万個形成されており、各ブロック70には、データの読み出しまたは書き込み単位となるページ72が複数ページ分形成されている。
このフラッシュメモリチップ64には、バス46に属する信号線として、チップセレクト線461、制御線462、レディ/ビジー線463が接続されている。さらにバス46に属する信号線として、8ビットのI/O線464が内部バッファ48に接続されている。
各ブロック70は、図5に示すように、ユーザ領域74と更新領域76を備えている。ユーザ領域74は、#0のページ72〜#95のページ72に分割され、更新領域76は、#96のページ72〜#127のページ72に分割されている。#0〜#127のページ72はそれぞれ物理アドレスが#0〜#127に設定されている。
#0〜#95のページ72には、#0〜#95のデータ78が格納されているとともに、各データ78を管理するための管理情報としてのメタデータ80が格納されるようになっている。
一方、更新領域76は、更新時のデータを格納するための記憶領域である。このため、データ更新前には、更新領域76の#96〜#127のページ72は空き領域となっている。
各ブロック70は、図6(A)および図6(B)に示すように、複数のメモリセル82を備えており、各メモリセル82は格子状に配列されている。これらメモリセル82のうち横1列のメモリセル82によってページ72が構成されている。各メモリセル82はフローティングゲート84を有する電界効果トランジスタ88で構成されている。各メモリセル82には、ビット線88が接続されているとともに、ワード線90が接続されている。各ビット線88と各ワード線90は互いに直交する方向に配置されている。
上記構成において、主プロセッサ18は、上位ホストシステム10からのコマンドを解析し、この解析結果を基に、コマンドに付加された論理アドレスを変換テーブルに従って物理アドレスに変換するための処理を行うとともに、記憶装置26に対する入出力処理を行う。この際、データを最初に書き込むとのシーケンシャルライト時には、例えば、図7に示すように、「a」、「b」、「c」のデータ78を書き込むときには、「a」のデータ78を#1のHDD38に、「b」のデータ78を#2のHDD38に、「c」のデータ78を#3のHDD38にそれぞれ書き込むための処理を行う。さらに、主プロセッサ18は、「a」〜「c」のデータ78を基にパリティ92を生成し、パリティ92を#4のHDD38に書き込むための処理を行う。
すなわち、主プロセッサ18は、パリティ92を生成するための演算を行うとともに、生成したパリティ92を「a」、「b」、「c」のデータ78とともにディスクドライブコントロールユニット24に転送し、ディスクドライブコントロールユニット24に対して、「a」、「b」、「c」のデータ78とパリティ92を指定のHDD38に格納するための指示を行う。
この場合、主プロセッサ18は、フラッシュモジュール40に対して「a」、「b」、「c」のデータ78とパリティ92をそれぞれ分散して格納するときにも、パリティ92を生成するための演算を行い、その後、ディスクドライブコントロールユニット24を介してフラッシュメモリコントローラ42に対して、「a」、「b」「c」のデータ78とパリティ92を#1〜#4のフラッシュモジュール40にそれぞれ分散して格納するための指示を行う。
一方、ランダムライト時には、主プロセッサ18は、図8(A)に示すように、XORライトコマンド94にしたがってXORライトを実行する。XORライトコマンド94は、論理ブロックアドレス(LBA)941、サイズ942、データ943、チェックコード944から構成される。
ランダムライト時にデータを更新するに際して、例えば、図9に示すように、「b」のデータ78を旧データとし、「d」のデータ78を新データとして、旧データを新データに更新するときには、主プロセッサ18は、#4のHDD38からパリティ92を旧パリティ96として取り込むとともに、#2のHDD38から、旧データとして「b」のデータ78を取り込み、「b」のデータ78と「d」のデータ78および旧パリティ96を基に排他的論理和演算を行って新パリティ98を生成し、新パリティ98を#4のHDD38に書き込むためのXOR(Exclusive OR)ライト処理を実行する。
一方、ランダムライト時に、フラッシュモジュール40に対して更新データを書き込むに際して、主プロセッサ18は、新パリティ98を生成するための演算などを行うことなく、図8(B)に示すように、XORライトコマンド100を生成し、生成したXORライトコマンド100を、ディスクドライブコントロールユニット24を介してフラッシュメモリコントローラ42に転送する。
この際、XORライトコマンド100は、旧パリティ96の物理アドレスとなるフラッシュメモリアドレス1001、新パリティ98の物理アドレスとなるフラッシュメモリアドレス1002、サイズ/番号1003、データ1004、データ1005、チェックコード1006から構成される。
フラッシュメモリコントローラ42は、図10に示すように、#2のフラッシュモジュール40に格納された「b」のデータ78を旧データとし、「d」のデータ78を新データとして更新する場合、#4のフラッシュモジュール(パリティ格納用フラッシュモジュール)40に格納された旧パリティ96を読み出し、読み出した旧パリティ96と「b」のデータ78および「d」のデータ78を用いて排他的論理和演算を行って新パリティ98を生成し、生成した新パリティ98を、図5の更新領域76のページ、例えば、#96のページ72に対してXORライト処理を実行する。
すなわち、旧パリティ96が存在するブロック70に対して消去動作が行われない限りは、#4のフラッシュモジュール40には、旧パリティ96が存在しているため、フラッシュメモリコントローラ42は、旧パリティ96を利用して新パリティ98を生成するための排他的論理和演算を行うこととしている。
この場合、主プロセッサ18は、XORライトコマンド100を生成し、生成したXORライトコマンド100を、ディスクドライブコントロールユニット24を介してフラッシュメモリコントローラ42に転送するだけでよく、キャッシュ22を利用してパリティ生成の演算を行う必要がないため、フラッシュモジュール40に対するランダムライト時の処理(負荷)を軽減することができる。
また、XORライトコマンド100のうちフラッシュメモリアドレス1001には旧パリティ96の物理アドレスが格納され、フラッシュメモリアドレス1002には新パリティ98の物理アドレスが格納され、データ104には旧データである「b」データ78が格納され、データ1005には新データである「d」のデータ78が格納される。
フラッシュメモリコントローラ42のマイクロプロセッサ48は、XORライトコマンド100を解析し、図11に示すように、フラッシュメモリアドレス1001に付加された物理アドレスに従って、#4のフラッシュモジュール40に属するフラッシュメモリ44のユーザ領域74のページ72から旧パリティ96を読み出し、読み出した旧パリティ96と、データ104に付加された旧データである「b」のデータ78およびデータ1005に付加された新データである「d」のデータ78を用いて排他的論理和演算を行って新パリティ98を生成し、生成した新パリティ98を、フラッシュメモリアドレス1002に付加された物理アドレスに従って、更新領域76に属する、#96〜#127のページ72の中の指定のページ72の微小領域761に格納する。
上述したように、ランダムライト時に、フラッシュモジュール40に対して更新データを書き込むに際して、主プロセッサ18は、XORライトコマンド100を生成し、生成したXORライトコマンド100を、ディスクドライブコントロールユニット24を介してフラッシュメモリコントローラ42に転送するだけでよいことなる。
一方、フラッシュメモリコントローラ42のマイクロプロセッサ48は、XORライトコマンド100を解析して、フラッシュメモリ44のユーザ領域74のページ72から旧パリティ96を読み出し、読み出した旧パリティ96と、XORライトコマンド100に付加された旧データである「b」のデータ78およびXORライトコマンド100に付加された新データである「d」のデータ78を用いて排他的論理和演算を行って新パリティ98を生成し、生成した新パリティ98を、XORライトコマンド100に付加された物理アドレスに従って、更新領域76の指定のページ72に格納することができる。
次に、ランダムライト時における主プロセッサ18の処理を図12のフローチャートにしたがって説明する。まず、主プロセッサ18は、フラッシュモジュール40に対するXORライト処理として、XORライトコマンド100を生成し、生成したXORライトコマンド100を、ディスクドライブコントロールユニット24を介してフラッシュメモリコントローラ42に転送し(S1)、フラッシュモジュール40においてエラーが生じたか否かを判定し(S2)、エラーが生じないときにはフラッシュモジュール40においてXORライト処理が正常に終了したとして、このルーチンでの処理を終了し、エラーが発生したときには、エラーの内容に応じた処理を行う。
具体的には、主プロセッサ18は、設定時間内にフラッシュメモリコントローラ42からエラーステータスが送信されたときには(S3)、更新領域76に新パリティ98を書き込むことができなかったとして、リクラメーション処理を実行する(S4)。
リクラメーション処理を行うに際して、主プロセッサ18は、図13に示すように、ブロック70の中から最新のデータ78を収集し、収集した最新のデータ78を主プロセッサ18内のバッファ18Aに取り込み、バッファ18Aに取り込んだ最新のデータ78を消去済みブロック70Aに書き込むための処理を行う。この際、最新のデータ78に関する論理アドレスと物理アドレスが変更されるため、論理アドレスを物理アドレスに変換するための変換テーブルを更新するための処理を行う。
この後、主プロセッサ18は、再度、更新領域76に新パリティ98を書き込むための処理として、新たにXORライトコマンド100を生成し、生成したXORライトコマンド100をフラッシュメモリコントローラ42に転送し、再度フラッシュメモリコントローラ42に対して、XORライト処理を実行させる(S5)。この後、主プロセッサ18は、再度ステップS2の処理に戻り、フラッシュモジュール40においてエラーが発生したか否かを判定する。
一方、ステップS2において、エラーが発生したと判定したときに、一定時間経過してもエラーステータスが戻ってこなかったときには、主プロセッサ18は、処理が中断されたとして、タイムアウトとしての処理を実行し(S6)、フラッシュモジュール40をチェックするための処理を行う(S7)。
フラッシュモジュール40をチェックするに際して、主プロセッサ18は、フラッシュメモリコントローラ42にエラーが発生したか否かを判定し(S8)、エラーが発生したと判定したときには、コレクションコピーを実行する(S9)。
すなわち、フラッシュメモリコントローラ42にエラーが発生したことが原因で、一定時間経過してもエラーステータスが戻ってこなかったときには、パリティを格納するためのフラッシュメモリ44自体が故障であると判定し、3つのデータ、例えば、「a」、「b」、「c」のデータ78からパリティ92を生成し、生成したパリティ92をパリティ格納用フラッシュメモリ44にコピーするための処理を行う。
この後、主プロセッサ18は、ステップS1と同様のXORライトするための処理を再度行い(S10)、ステップS2の処理に戻る。
一方、ステップS8で、フラッシュメモリコントローラ42のエラーでないと、すなわち正常と判定したときには、主プロセッサ18は、パリティ格納用フラッシュメモリ44の更新領域76に書き込まれた新パリティ98をチェックするための処理を行い(S11)、新パリティ98に付加されたECCにエラーがあるか否かを判定する(S12)。このとき、ECCにエラーがないと判定したとき、すなわち正常なときには、主プロセッサ18は、フラッシュメモリコントローラ42からステータスが戻らなかっただけで、XORライト処理は正常に終了したとして、XORライト処理が正常に終了した旨の処理を行い(S13)、このルーチンでの処理を終了する。
一方、ステップS12において、ECCにエラーが生じたと判定したときには、主プロセッサ18は、ECCにエラーがあったとして、パリティ格納用フラッシュメモリ44の更新領域76は消去済みか否かを判定する(S14)。ここで、消去済みであると判定したときには、主プロセッサ18は、XORライトそのものができなかったとして、パリティ格納用フラッシュメモリ44の更新領域76の同じページ72に再度XORライトを行うための処理を実行し(S15)、再びステップS2の処理に戻る。
また、ステップS14において、消去済みでないと判定したときには、主プロセッサ18は、処理の途中でパリティの書き込みが終了したとして、パリティ格納用フラッシュメモリ44の更新領域76の新たなページに、再度XORライトを行うための処理を行い(S16)、ステップS2の処理に戻る。
このように、主プロセッサ18は、XORライトの完了を示すステータスがフラッシュメモリコントローラ42から戻ってこなかったときには、XORライト対象のフラッシュモジュール40をチェックし、フラッシュモジュール40に障害が発生し、電源投入状態でも正常にフラッシュモジュール40をアクセスできないときには、スペアのフラッシュモジュール40へコレクションコピーを行ってパリティを復元する。
また、フラッシュモジュール40の電源遮断などが原因で、途中で処理が終了した場合、主プロセッサ18は、新パリティ98を呼び出して、データおよびECCをチェックし、新パリティ98が未書き込みか、または新パリティ98の書き込み途中でエラーが生じたか、あるいは新パリティ98の書き込みが完了しているかを判定することとしている。
そして、主プロセッサ18は、新パリティ98が未書き込みのときには同じページに対してリトライ(再度のXORライト処理)を行い、新パリティ98の書き込み途中であるときには、新しい更新領域76に対してリトライを行い、新パリティ98の書き込みが完了しているときには、完了ステータスを主プロセッサ18へ回答する直前で電源が遮断したと判断し、XORライトの正常完了としている。
本実施例においては、ランダムライト時に、フラッシュモジュール40に対して更新データを書き込むに際して、主プロセッサ18は、XORライトコマンド100を生成し、生成したXORライトコマンド100を、ディスクドライブコントロールユニット24を介してフラッシュメモリコントローラ42に転送し、フラッシュメモリコントローラ42のマイクロプロセッサ48は、XORライトコマンド100を解析して、フラッシュメモリ44のユーザ領域74のページ72から旧パリティ96を読み出し、読み出した旧パリティ96と、XORライトコマンド100に付加された旧データである「b」のデータ78およびXORライトコマンド100に付加された新データである「d」のデータ78を用いて排他的論理和演算を行って新パリティ98を生成し、生成した新パリティ98を更新領域76の指定のページ72に格納することとしている。
本実施例によれば、ランダムライト時に、フラッシュモジュール40に対して更新データを書き込むに際して、主プロセッサ18は、XORライトコマンド100を生成し、生成したXORライトコマンド100を、ディスクドライブコントロールユニット24を介してフラッシュメモリコントローラ42に転送するだけでよいので、主プロセッサ18の処理(負荷)を軽減することができる。
次に、本発明の第2実施例を図13にしたがって説明する。本実施例は、フラッシュメモリコントローラ42に、状態記録メモリとしてのNV-RAM(Non Volatile Random Access Memory)110を設けるとともに、RAM50に、論理アドレスを物理アドレスに変換するための変換テーブルを格納し、マイクロプロセッサ48が各フラッシュモジュール40に対する入出力処理を行う過程で、変換テーブルの内容を更新するとともに、処理過程の状態を順次NV-RAM110に記録し、記録した内容をホストインターフェース54を介して主プロセッサ18に転送し、処理の途中で異常が生じたときでも、主プロセッサ18からの指示情報で指示されたところから処理が開始できるようにしたものであり、他の構成は第1実施例と同様である。
次に、マイクロプロセッサ48の処理を図14のフローチャートにしたがって説明する。まず、フラッシュメモリコントローラ42のマイクロプロセッサ48は、XORライト処理を開始するに先立って、旧パリティ96を読み出すための処理を行い(S21)、新パリティ98を生成するための処理を開始する(S22)。この後、マイクロプロセッサ48は、2つのデータ、例えば「b」、「d」のデータ78と旧パリティ96から新パリティ98を生成し、生成した新パリティ98を、パリティ格納用フラッシュメモリ44の更新領域76のページ72に格納するための処理を行い、各処理結果をNV-RAM110に記録する。
次に、マイクロプロセッサ48は、パリティ格納用フラッシュメモリ44の更新領域76の指定のページ72に新パリティ98を書き込んだときには、新パリティ98の書き込みが終了した旨をNV-RAM110に記録し(S24)、RAM50に格納された変換テーブルのマッピングを更新するための処理を開始し(S25)、変換テーブル上のポインタを移動するための処理を行う。
この後、マイクロプロセッサ48は、変換テーブル上のポインタの移動が完了したときには、その旨をNV-RAM110に記録し(S26)、XORライト処理が完了した旨のステータスを主プロセッサ18へ応答する旨の処理を行い(S27)、このルーチンでの処理を終了する。
上述したように、マイクロプロセッサ48は、XORライト処理に関して、新パリティ98の書き込み開始、新パリティ98の書き込み終了、ポインタの更新、XORライト処理の完了を示すステータスの報告の少なくとも4つの状態をNV-RAM110に記録し、記録した内容を主プロセッサ18に転送するようにしているので、主プロセッサ18は、XORライト処理の対象となるフラッシュモジュール40において、どの状態まで処理が遷移したかを判別することができる。
この場合、主プロセッサ18は、マイクロプロセッサ48から転送された報告を基に、マイクロプロセッサ48の処理内容に応じた指示情報を作成し、作成した指示情報をマイクロプロセッサ48に送信することができる。これにより、マイクロプロセッサ48は、処理が途中で中断した場合でも、主プロセッサ18からの指示情報に従って処理を継続することができる。
例えば、新パリティ98の書き込み開始以前で処理が中断したときには、主プロセッサ18は、パリティ格納用フラッシュメモリ44の更新領域76の同じページ72に対して、再度XORライトを行うための指示情報を生成してマイクロプロセッサ48に転送する。これにより、マイクロプロセッサ48は、主プロセッサ18からの指示情報に従って、パリティ格納用フラッシュメモリ44の更新領域76の同じページ72に対して、再度XORライトを行うことができる。
新パリティ98の書き込み終了以前で処理が中断したときには、主プロセッサ18は、パリティ格納用フラッシュメモリ44の更新領域76の新たなページ72に対して、再度XORライトを行うための指示情報を生成してマイクロプロセッサ48に転送する。これにより、マイクロプロセッサ48は、主プロセッサ18からの指示情報に従って、パリティ格納用フラッシュメモリ44の更新領域76の新たなページ72に対して、再度XORライトを行う。
ポインタ更新以前で処理が中断したときには、主プロセッサ18は、ポインタ更新するための指示情報を生成してマイクロプロセッサ48に転送する。これにより、マイクロプロセッサ48は、主プロセッサ18からの指示情報に従って、ポインタ更新処理を行う。
ステータス報告以前で処理が中断したときには、主プロセッサ18は、XORライト処理は正常に終了した旨の指示情報を生成してマイクロプロセッサ48に転送する。これにより、マイクロプロセッサ48は、XORライト処理は正常に終了したと判断する。
本実施例においては、マイクロプロセッサ48は、主プロセッサ18からのXORライトコマンド100を基にパリティ格納用フラッシュメモリ44の更新領域76のページ72に新パリティ98を書き込むことができるとともに、各フラッシュモジュール40に対する入出力処理を行う過程で、処理過程の状態を順次NV-RAM110に記録し、記録した内容を主プロセッサ18に転送することで、主プロセッサ18からの指示情報を基に処理を再開することができる。
本実施例によれば、主プロセッサ18の処理(負荷)を軽減することができるとともに、主プロセッサ18からの指示情報を基に処理を再開することができる。
10 上位ホストシステム、12 ストレージサブシステム、14 ネットワーク、16 上位ホストシステムインターフェースユニット、18 主プロセッサ、20 スイッチ、22 キャッシュ、24 ディスクドライブコントロールユニット、26 記憶装置、38 HDD、40 フラッシュモジュール、42 フラッシュメモリコントローラ、44 フラッシュメモリ、48 マイクロプロセッサ、50 RAM、52 ROM、64 フラッシュメモリチップ、70 ブロック、72 ページ、74 ユーザ領域、76 更新領域

Claims (10)

  1. それぞれが、複数のフラッシュメモリと、前記複数のフラッシュメモリに対するデータの読み出し/書き込み処理を制御するメモリコントローラとを備える、複数の記憶装置と、
    ホスト計算機とネットワークを介して情報の授受を行う第一インターフェース部と、
    前記複数の記憶装置との間でデータの入出力処理を行う第二インターフェース部と、
    旧データを格納する第一記憶装置及び旧データに対応する旧パリティを格納する第二記憶装置を含む前記複数の記憶装置をRAIDグループとして制御し、前記複数の記憶装置の記憶領域に割り当てられた複数の論理デバイスに対する入出力処理を、前記第二インターフェース部を介して制御する制御部と、
    前記制御部の制御対象として、前記制御部の処理に伴うデータを一時的に記憶するキャッシュメモリを備え、
    前記複数のフラッシュメモリのそれぞれは複数のページを有し、前記複数のページのそれぞれはデータの読み出し/書き込みの単位であり、
    前記制御部は、
    前記旧データを更新する新データを受信し、前記第二記憶装置に対してXORライトの実行を指示するためのXORライトコマンドを生成し、前記生成したXORライトコマンドを前記第二インターフェース部を介して前記第二記憶装置のメモリコントローラに転送し、
    前記第二記憶装置のメモリコントローラは、
    前記XORライトコマンドを受信し、前記XORライトコマンドで指定された旧パリティを前記旧パリティが格納されている第一ページから読み出し、前記読み出した旧パリティと前記旧データと前記新データを基に排他的論理和演算を行って新パリティを生成し、前記生成した新パリティを前記第一ページとは異なる第二ページに書き込み、
    前記新パリティの書き込み時に、前記第二記憶装置においてエラーが発生し、前記第二記憶装置のメモリコントローラが異常であるとき、または、第二記憶装置のメモリコントローラが正常であり、前記第二ページに書き込まれた新パリティの付加情報が異常であるとき、
    前記制御部は、新たにXORライトコマンドを生成して、前記第二記憶装置のメモリコントローラに送信し、
    前記第二記憶装置のメモリコントローラは、
    前記新たに生成されたXORライトコマンドの受信に応じて、前記第一ページに格納された旧パリティを読み出し、前記読み出した旧パリティと前記旧データと前記新データを基に排他的論理和演算を行って新パリティを生成するストレージサブシステム。
  2. 前記制御部は、前記XORライトコマンドに前記旧パリティを格納する前記第一ページの物理アドレスと前記新パリティを格納する前記第二ページの物理アドレスを付加するとともに、前記旧データと前記新データを付加し、
    前記第二記憶装置のメモリコントローラは、XORライトコマンドに付加された、前記第一ページの物理アドレスに従って、前記第一ページから前記旧パリティを読み出し、前記読み出した旧パリティと前記XORライトコマンドに付加された旧データおよび新データを用いて排他的論理和演算を行って新パリティを生成し、生成した新パリティを、前記XORライトコマンドに付加された、前記第二ページの物理アドレスに従って、前記第二ページに格納する、請求項1に記載のストレージサブシステム。
  3. 前記第二記憶装置のメモリコントローラは、前記XORライトコマンドに対する応答として、前記XORライトコマンドで指定された処理の成否を示すステータスを前記制御部に転送し、前記制御部は、前記第二記憶装置のメモリコントローラから前記ステータスとして完了ステータスを受信したときには、前記XORライトコマンドの生成に伴う処理を完了し、前記第二記憶装置のメモリコントローラから前記ステータスとしてエラーステータスを受信したときには、前記第一ページ及び前記第二ページとは異なる第三ページに新パリティを書き込むためのXORライトコマンドを新たに生成し、前記新たに生成したXORライトコマンドを前記第二記憶装置のメモリコントローラに転送し、前記第二記憶装置のメモリコントローラに対して、前記新たに生成したXORライトコマンドに従った処理を指示する、請求項1に記載のストレージサブシステム。
  4. 前記第二記憶装置のメモリコントローラは、前記XORライトコマンドに対する応答として、前記XORライトコマンドで指定された処理の成否を示すステータスを前記制御部に転送し、前記制御部は、前記第二記憶装置のメモリコントローラから前記ステータスが設定時間内に戻ってこなかったときには、前記第二記憶装置のメモリコントローラの異常の有無を判定し、前記第二記憶装置のメモリコントローラが異常であるときには、複数のデータから旧パリティを生成し、前記生成した旧パリティをスペア用フラッシュメモリにコピーするためのコレクションコピーを実行し、前記スペア用フラッシュメモリのうち新たな更新領域である第三ページに新パリティを書き込むためのXORライトコマンドを新たに生成し、前記新たに生成したXORライトコマンドを前記第二記憶装置のメモリコントローラに転送し、前記第二記憶装置のメモリコントローラに対して、前記新たに生成したXORライトコマンドに従った処理を指示し、前記第二記憶装置のメモリコントローラが正常であるときには、前記第二ページに書き込まれた新パリティの付加情報が正常であることを条件に、前記第二ページに前記新パリティが正常に書き込まれたとして、前記XORライトコマンドの生成に伴う処理を完了する、請求項1に記載のストレージサブシステム。
  5. 前記第二記憶装置のメモリコントローラは、前記XORライトコマンドに対する応答として、前記XORライトコマンドで指定された処理の成否を示すステータスを前記制御部に転送し、前記制御部は、前記第二記憶装置のメモリコントローラから前記ステータスが設定時間内に戻ってこなかったときには、前記第二記憶装置のメモリコントローラの異常の有無を判定し、前記第二記憶装置のメモリコントローラが異常であるときには、複数のデータからパリティを生成し、前記生成したパリティをスペア用フラッシュメモリにコピーするためのコレクションコピーを実行し、前記スペア用フラッシュメモリのうち新たな更新領域である第三ページに新パリティを書き込むためのXORライトコマンドを新たに生成し、前記新たに生成したXORライトコマンドを前記第二記憶装置のメモリコントローラに転送し、前記第二記憶装置のメモリコントローラに対して、前記新たに生成したXORライトコマンドに従った処理を指示し、前記第二記憶装置のメモリコントローラが正常であるときには、前記第二ページに書き込まれた新パリティの付加情報が正常であるか否かを判定し、前記新パリティの付加情報が正常であるときには、前記第二ページに前記新パリティが正常に書き込まれたとして、前記XORライトコマンドの生成に伴う処理を完了し、前記新パリティの付加情報が異常であるときには、前記新パリティを格納すべき第二ページは消去済みか否かを判定し、前記新パリティを格納すべき第二ページが消去済みのときには、前記新パリティを格納すべき第二ページに前記新パリティを書き込むためのXORライトコマンドを新たに生成し、前記新たに生成したXORライトコマンドを前記第二記憶装置のメモリコントローラに転送し、前記第二記憶装置のメモリコントローラに対して、前記新たに生成したXORライトコマンドに従った処理を指示し、前記新パリティを格納すべき前記第二ページが消去済みでないときには、前記新パリティを格納すべき前記第二ページとは異なる第三ページに前記新パリティを書き込むためのXORライトコマンドを新たに生成し、前記新たに生成したXORライトコマンドを前記第二記憶装置のメモリコントローラに転送し、前記第二記憶装置のメモリコントローラに対して、前記新たに生成したXORライトコマンドに従った処理を指示する、請求項1に記載のストレージサブシステム。
  6. 前記第二記憶装置のメモリコントローラが前記フラッシュメモリに対して、データの入出力処理を行うときの状態を順次記録する状態記録メモリを備え、前記第二記憶装置のメモリコントローラは、前記状態記憶メモリに記録された内容を前記制御部に転送し、前記制御部は、前記第二記憶装置のメモリコントローラから、前記状態記憶メモリに記録された内容を受信したときには、前記受信した内容を基に指示情報を生成するとともに、前記生成した指示情報を前記第二記憶装置のメモリコントローラに転送し、前記第二記憶装置のメモリコントローラに対して、前記指示情報に従った処理を指示する、請求項1に記載のストレージサブシステム。
  7. 前記第二記憶装置のメモリコントローラが前記フラッシュメモリに対して、データの入出力処理を行うときの状態を順次記録する状態記録メモリを備え、前記第二記憶装置のメモリコントローラは、前記状態記憶メモリに記録された内容を前記制御部に転送し、前記制御部は、前記第二記憶装置のメモリコントローラから、前記状態記憶メモリに記録された内容として、前記新パリティの書き込み開始以前で処理が中断したことを示す情報を受信したときには、前記受信した内容を基に前記フラッシュメモリの同じページに新パリティを書き込むためのXORライトコマンドを新たに生成し、前記新たに生成したXORライトコマンドを含む指示情報を生成するとともに、前記生成した指示情報を前記第二記憶装置のメモリコントローラに転送し、前記第二記憶装置のメモリコントローラに対して、前記指示情報に従った処理を指示する、請求項1に記載のストレージサブシステム。
  8. 前記第二記憶装置のメモリコントローラが前記フラッシュメモリに対して、データの入出力処理を行うときの状態を順次記録する状態記録メモリを備え、前記第二記憶装置のメモリコントローラは、前記状態記憶メモリに記録された内容を前記制御部に転送し、前記制御部は、前記第二記憶装置のメモリコントローラから、前記状態記憶メモリに記録された内容として、前記新パリティの書き込み終了以前で処理が中断したことを示す情報を受信したときには、前記受信した内容を基に前記フラッシュメモリのうち新たな更新領域である第三ページに新パリティを書き込むためのXORライトコマンドを新たに生成し、前記新たに生成したXORライトコマンドを含む指示情報を生成するとともに、前記生成した指示情報を前記第二記憶装置のメモリコントローラに転送し、前記第二記憶装置のメモリコントローラに対して、前記指示情報に従った処理を指示する、請求項1に記載のストレージサブシステム。
  9. 前記第二記憶装置のメモリコントローラが前記フラッシュメモリに対して、データの入出力処理を行うときの状態を順次記録する状態記録メモリを備え、前記第二記憶装置のメモリコントローラは、前記状態記憶メモリに記録された内容を前記制御部に転送し、前記制御部は、前記第二記憶装置のメモリコントローラから、前記状態記憶メモリに記録された内容として、ポインタ更新以前で処理が中断したことを示す情報を受信したときには、前記受信した内容を基に前記ポインタ更新するための指示情報を生成するとともに、前記生成した指示情報を前記第二記憶装置のメモリコントローラに転送し、前記第二記憶装置のメモリコントローラに対して、前記指示情報に従った処理を指示する、請求項1に記載のストレージサブシステム。
  10. 前記第二記憶装置のメモリコントローラが前記フラッシュメモリに対して、データの入出力処理を行うときの状態を順次記録する状態記録メモリを備え、前記第二記憶装置のメモリコントローラは、前記状態記憶メモリに記録された内容を前記制御部に転送し、前記制御部は、前記第二記憶装置のメモリコントローラから、前記状態記憶メモリに記録された内容として、ステータス報告以前で処理が中断したことを示す情報を受信したときには、前記受信した内容を基に前記新パリティを書き込むための処理は正常に終了した旨の指示情報を生成するとともに、前記生成した指示情報を前記第二記憶装置のメモリコントローラに転送し、前記第二記憶装置のメモリコントローラに対して、前記指示情報に従った処理を指示する、請求項1に記載のストレージサブシステム。
JP2011537759A 2009-05-25 2009-05-25 ストレージサブシステム Expired - Fee Related JP5404804B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/059921 WO2010137178A1 (en) 2009-05-25 2009-05-25 Storage subsystem

Publications (2)

Publication Number Publication Date
JP2012519319A JP2012519319A (ja) 2012-08-23
JP5404804B2 true JP5404804B2 (ja) 2014-02-05

Family

ID=41716335

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011537759A Expired - Fee Related JP5404804B2 (ja) 2009-05-25 2009-05-25 ストレージサブシステム

Country Status (3)

Country Link
US (3) US8806300B2 (ja)
JP (1) JP5404804B2 (ja)
WO (1) WO2010137178A1 (ja)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8566508B2 (en) 2009-04-08 2013-10-22 Google Inc. RAID configuration in a flash memory data storage device
US8447918B2 (en) 2009-04-08 2013-05-21 Google Inc. Garbage collection for failure prediction and repartitioning
US8402217B2 (en) * 2009-09-15 2013-03-19 Marvell International Ltd. Implementing RAID in solid state memory
US8988800B1 (en) 2009-09-15 2015-03-24 Marvell International Ltd. Error correction for storage devices
KR101732030B1 (ko) * 2010-12-22 2017-05-04 삼성전자주식회사 데이터 저장 장치 및 그것의 동작 방법
US8713357B1 (en) 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
US8700834B2 (en) 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US9195530B1 (en) * 2011-09-06 2015-11-24 Western Digital Technologies, Inc. Systems and methods for improved data management in data storage systems
CN103597461B (zh) * 2011-09-30 2016-04-27 株式会社日立制作所 闪存组件
US9053008B1 (en) 2012-03-26 2015-06-09 Western Digital Technologies, Inc. Systems and methods for providing inline parameter service in data storage devices
US20130304970A1 (en) * 2012-04-20 2013-11-14 Stec, Inc. Systems and methods for providing high performance redundant array of independent disks in a solid-state device
CN104205059B (zh) 2012-04-27 2017-07-14 株式会社日立制作所 存储系统和存储控制装置
EP2942713B1 (en) * 2012-04-27 2018-11-28 Hitachi, Ltd. Storage system and storage apparatus
CN102915212B (zh) * 2012-09-19 2015-06-10 记忆科技(深圳)有限公司 一种固态硬盘的raid实现方法、固态硬盘及电子设备
EP2915049B1 (en) * 2012-10-30 2020-03-04 Hewlett-Packard Enterprise Development LP Smart memory buffers
US9183081B2 (en) * 2013-03-12 2015-11-10 Sandisk Technologies Inc. Systems and methods for performing defect detection and data recovery in a memory system
US9122399B2 (en) 2013-04-18 2015-09-01 Hitachi, Ltd. Storage system and storage control method
EP3113027A4 (en) 2014-02-27 2017-11-01 Mitsubishi Electric Corporation Data storage device
US9704540B2 (en) * 2014-06-05 2017-07-11 Micron Technology, Inc. Apparatuses and methods for parity determination using sensing circuitry
US9455020B2 (en) 2014-06-05 2016-09-27 Micron Technology, Inc. Apparatuses and methods for performing an exclusive or operation using sensing circuitry
US9431052B2 (en) 2014-06-26 2016-08-30 Marvell World Trade Ltd. Two dimensional magnetic recording systems, devices and methods
US20160232088A1 (en) * 2014-07-17 2016-08-11 Sandisk Enterprise Ip Llc Garbage Collection in Storage System with Distributed Processors
US10067833B2 (en) 2014-07-31 2018-09-04 Hitachi, Ltd. Storage system
KR20160028680A (ko) * 2014-09-04 2016-03-14 삼성전자주식회사 데이터 저장 장치와 이의 작동 방법
US9830092B2 (en) * 2015-02-20 2017-11-28 Netapp, Inc. Solid state device parity caching in a hybrid storage array
JP2016184372A (ja) * 2015-03-27 2016-10-20 富士通株式会社 ストレージシステム,情報処理装置,パリティ生成プログラム及びパリティ生成方法
JP6328335B2 (ja) * 2015-06-01 2018-05-23 株式会社日立製作所 ストレージ装置及びその制御方法
JP6551024B2 (ja) * 2015-08-04 2019-07-31 富士通株式会社 情報処理システム、情報処理方法、情報処理プログラムおよび情報処理装置
US10275160B2 (en) 2015-12-21 2019-04-30 Intel Corporation Method and apparatus to enable individual non volatile memory express (NVME) input/output (IO) Queues on differing network addresses of an NVME controller
US10013168B2 (en) * 2015-12-24 2018-07-03 Intel Corporation Disaggregating block storage controller stacks
US20170322843A1 (en) * 2016-05-04 2017-11-09 Sandisk Technologies Inc. Multi-die data storage device with in-memory parity circuitry
US10200376B2 (en) 2016-08-24 2019-02-05 Intel Corporation Computer product, method, and system to dynamically provide discovery services for host nodes of target systems and storage resources in a network
CN109313593B (zh) * 2016-09-16 2022-03-01 株式会社日立制作所 存储系统
US10176116B2 (en) 2016-09-28 2019-01-08 Intel Corporation Computer product, method, and system to provide discovery services to discover target storage resources and register a configuration of virtual target storage resources mapping to the target storage resources and an access control list of host nodes allowed to access the virtual target storage resources
US10481803B2 (en) 2017-06-16 2019-11-19 Western Digital Technologies, Inc. Low write overhead consensus protocol for distributed storage
US10289489B2 (en) * 2017-07-11 2019-05-14 Western Digital Technologies, Inc. Update efficient consensus protocols for erasure coded data stores
US11442661B2 (en) * 2020-04-02 2022-09-13 Dell Products L.P. Raid parity data generation offload system
CN113364564A (zh) * 2021-06-04 2021-09-07 上海矽印科技有限公司 数据传输方法、微处理器、数据传输设备及存储介质
CN115793985B (zh) * 2023-01-09 2023-04-21 苏州浪潮智能科技有限公司 一种安全存储方法、装置、设备及存储介质

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5191584A (en) 1991-02-20 1993-03-02 Micropolis Corporation Mass storage array with efficient parity calculation
JP2913917B2 (ja) 1991-08-20 1999-06-28 株式会社日立製作所 記憶装置および記憶装置システム
WO1993023803A1 (fr) 1992-05-21 1993-11-25 Fujitsu Limited Appareil de commande pour pile de disques
JP2857288B2 (ja) * 1992-10-08 1999-02-17 富士通株式会社 ディスクアレイ装置
US5594862A (en) * 1994-07-20 1997-01-14 Emc Corporation XOR controller for a storage subsystem
JP3661205B2 (ja) * 1994-09-09 2005-06-15 株式会社日立製作所 ディスクアレイシステムおよびディスクアレイシステムのパリティデータの生成方法
JP3011035B2 (ja) * 1994-12-08 2000-02-21 株式会社日立製作所 計算機システム
US5799140A (en) 1995-04-21 1998-08-25 International Business Machines Corporation Disk array system and method for storing data
JP3941149B2 (ja) * 1996-12-03 2007-07-04 ソニー株式会社 半導体不揮発性記憶装置
JPH10260792A (ja) * 1997-03-19 1998-09-29 Hitachi Ltd ディスク制御装置
JP3618529B2 (ja) * 1997-11-04 2005-02-09 富士通株式会社 ディスクアレイ装置
JPH11154058A (ja) * 1997-11-20 1999-06-08 Toshiba Corp ディスクアレイ装置及びデータ保守方法
US20020194428A1 (en) 2001-03-30 2002-12-19 Intransa, Inc., A Delaware Corporation Method and apparatus for distributing raid processing over a network link
US7035974B2 (en) * 2002-11-06 2006-04-25 Synology Inc. RAID-5 disk having cache memory implemented using non-volatile RAM
US7206899B2 (en) * 2003-12-29 2007-04-17 Intel Corporation Method, system, and program for managing data transfer and construction
CN100535933C (zh) 2004-02-03 2009-09-02 松下电器产业株式会社 存储卡和数据处理装置及存储卡的控制方法和设定方法
US7353423B2 (en) * 2004-09-24 2008-04-01 International Business Machines Corporation System and method for improving the performance of operations requiring parity reads in a storage array system
US20060195657A1 (en) * 2005-02-28 2006-08-31 Infrant Technologies, Inc. Expandable RAID method and device
JP2008204041A (ja) 2007-02-19 2008-09-04 Hitachi Ltd ストレージ装置及びデータ配置制御方法
JP2009238094A (ja) * 2008-03-28 2009-10-15 Hitachi Ltd ストレージシステム及びデータ保存方法
US8020035B2 (en) * 2008-07-30 2011-09-13 Hewlett-Packard Development Company, L.P. Expander circuit for a solid state persistent storage device that provides a plurality of interfaces to corresponding storage controllers
US8250453B2 (en) * 2008-12-22 2012-08-21 Hitachi Ltd. Storage apparatus and data verification method in storage apparatus
US8364923B2 (en) * 2009-03-30 2013-01-29 Oracle America, Inc. Data storage system manager and method for managing a data storage system

Also Published As

Publication number Publication date
JP2012519319A (ja) 2012-08-23
US20140304461A1 (en) 2014-10-09
US20110238885A1 (en) 2011-09-29
US8806300B2 (en) 2014-08-12
US20120297244A1 (en) 2012-11-22
WO2010137178A1 (en) 2010-12-02
US8549381B2 (en) 2013-10-01

Similar Documents

Publication Publication Date Title
JP5404804B2 (ja) ストレージサブシステム
US7984325B2 (en) Storage control device, data recovery device, and storage system
US7831764B2 (en) Storage system having plural flash memory drives and method for controlling data storage
US8484522B2 (en) Apparatus, system, and method for bad block remapping
JP5242264B2 (ja) データ制御装置、ストレージシステムおよびプログラム
US20150331624A1 (en) Host-controlled flash translation layer snapshot
JP5353887B2 (ja) ディスクアレイ装置の制御ユニット、データ転送装置及び復電処理方法
WO2013160972A1 (en) Storage system and storage apparatus
US20090327803A1 (en) Storage control device and storage control method
US20080086585A1 (en) Storage apparatus, controller and control method
US8312315B2 (en) Storage control device and RAID group extension method
US20120063255A1 (en) Storage device, electronic device, and storage device control method
WO2015011825A1 (ja) ストレージシステムおよびストレージシステムの制御方法
JP6652647B2 (ja) ストレージシステム
KR20210041158A (ko) 기입 오류가 발생한 데이터를 복구하는 메모리 시스템 및 호스트의 동작 방법
JP5773446B2 (ja) 記憶装置、冗長性回復方法、およびプログラム
US20230100149A1 (en) Recovery From HMB Loss
TWI728634B (zh) 在儲存伺服器中進行資料存取管理的方法與裝置
JP3793544B2 (ja) ディスクアレイ装置及びその制御方法
JP3256329B2 (ja) ディスクアレイ装置及びその制御方法
JP2011065313A (ja) ストレージデバイス
JP2008217811A (ja) 不揮発メモリを使用したディスク制御装置
KR20220147292A (ko) 메타 데이터 관리를 수행하는 스토리지 장치 및 이의 동작 방법
CN115840661A (zh) 从hmb丢失恢复的无dram ssd
JP2004164666A (ja) 記憶制御装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130314

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130319

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130520

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130702

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130828

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131001

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131029

LAPS Cancellation because of no payment of annual fees