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

ストレージシステム Download PDF

Info

Publication number
JP5937697B2
JP5937697B2 JP2014550959A JP2014550959A JP5937697B2 JP 5937697 B2 JP5937697 B2 JP 5937697B2 JP 2014550959 A JP2014550959 A JP 2014550959A JP 2014550959 A JP2014550959 A JP 2014550959A JP 5937697 B2 JP5937697 B2 JP 5937697B2
Authority
JP
Japan
Prior art keywords
parity
data
controller
page
old
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
JP2014550959A
Other languages
English (en)
Other versions
JP2015515033A (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 JP2015515033A publication Critical patent/JP2015515033A/ja
Application granted granted Critical
Publication of JP5937697B2 publication Critical patent/JP5937697B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/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/1059Parity-single bit-RAID5, i.e. RAID 5 implementations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、ストレージ装置に格納される冗長コードを演算する技術に関する。
ストレージシステムのコントローラが複数の記憶装置を制御することでRAID(Redundant Array of Independent Disks)を構成し、データロストの発生を防ぐ技術が知られている。例えば、RAID5を採用するストレージシステムでは、記憶装置の上位装置にあたるストレージシステムのコントローラが、複数のデータブロックからパリティを生成する。
前述のようなパリティ生成に伴うストレージシステムのコントローラの処理を軽減するため、下位装置にあたる各記憶装置が、RAIDを構成するストレージシステムがある。各記憶装置は、例えば、HDD(Hard Disk Drive)であり、各HDDのコントローラ(以下、HDDコントローラ)がパリティを生成する。
例えば、特許文献1では、更新前データ(旧データ)に対するデータの更新要求があると、HDDコントローラは、更新データ(新データ)と更新前データ(旧データ)からパリティを生成するための中間値(中間パリティ)を生成した後に、新データで旧データを更新する。HDDコントローラは、生成した中間パリティを旧データに対応する旧パリティが格納しているHDDに転送する。中間パリティを受信したHDDでは、HDDコントローラが、中間パリティと旧パリティから新パリティを生成し、生成した新パリティで旧パリティを更新する。
近年のフラッシュメモリの低価格化に伴い、記憶装置としてHDDの代わりにFlash SSD(Flash Solid State Drive)が使用されるケースが増えつつある。HDDではある範囲の論理アドレスで特定されるデータに対する更新要求があると当該データ(旧データ)が格納されている物理領域に更新データ(新データ)が上書きされる。しかし、FlashSSDでは、データを上書きすることができないため、論理アドレスで特定されるデータに対する更新要求があると、当該データが格納されている物理領域とは異なる物理領域に更新データ(新データ)が格納され、特定された論理アドレスと新しい物理領域とがマッピングされる。これにより、Flash SSDの旧データが格納されている物理領域が無効にされる。
US5,191,584
特許文献1では、中間パリティを生成した後に新データで旧データを上書きするため、中間パリティを生成した後は、旧データが存在しなくなる。そのため、パリティの更新前(例えば、中間パリティを、旧パリティを格納しているHDDに対して転送する前)に障害が発生し、中間パリティが消失した場合、旧データが存在しないため、中間パリティを再度、生成することができない。
一方、記憶装置をFlash SSDに置き換えた場合、フラッシュメモリはデータを上書きしないため、中間パリティを生成した後に、旧データが残っている可能性はある。しかし、Flash SSDでは、新データを書き込むと旧データを格納している物理領域を無効とし、所定のタイミングで旧データを消去する。すなわち、Flash SSDでも、引用文献1と同様に、障害発生時に旧データが存在しない可能性があり、その場合、中間パリティを生成することができない。
本発明の一態様であるストレージシステムは、第1のコントローラと、複数の記憶装置を備える。RAIDを構成する複数の記憶装置のそれぞれは、ホストコンピュータからのデータを格納する記憶空間を提供する一つ以上の不揮発メモリチップと、不揮発メモリチップに接続される第2のコントローラとを有している。第1のコントローラが、第1のデータを第2のデータに更新する更新要求を受信した場合、複数の記憶装置のうちの第1の記憶装置内の第2のコントローラは、第2のデータを、第1の記憶装置の記憶空間内であって、第1のデータが格納されている領域とは異なる領域に格納し、第1と第2のデータとを関連付ける情報を生成し、そして第1及び第2のデータから中間パリティを生成するよう構成されている。複数の記憶装置のうち、第1のデータに対応する第1のパリティが格納されている第2の記憶装置における第2のコントローラは、前記中間パリティを受信し、前記中間パリティと第1のパリティから第2のパリティを生成し、第2のパリティを第2の記憶装置の記憶空間の領域内に格納するよう構成されている。第1の記憶装置の第2のコントローラは、第2のパリティが第2の記憶装置の記憶空間の領域内に格納された後に、前記情報を消去し、第1のデータが格納されている前記領域を消去対象領域として設定するよう構成されている。
図1は、ストレージシステムの構成の一例を示す。 図2は、システムコントローラ20の構成の一例を示す。 図3は、実施例1に係る計算機システムの構成の一例を示す。 図4は、RG及びLUの構成の一例を示す。 図5は、RG管理テーブル600の一例を示す。 図6は、LU管理テーブル700の一例を示す。 図7は、FMPK管理テーブル800の一例を示す。 図8は、RG上のアドレス空間の一例を示す。 図9は、RGに所属するFMPK50上のアドレス空間の一例を示す。 図10は、FMPK50におけるページマッピングの一例を示す。 図11は、ページマッピング管理テーブル1100の一例を示す。 図12は、パリティ演算機能登録処理の一例を示す。 図13は、パリティ演算実施装置の決定方法1300の一例を示す。 図14は、システムコントローラ20のライト処理の一例を示す。 図15は、第1パリティ演算選択処理の一例を示す。 図16は、第2パリティ演算選択処理の一例を示す。 図17は、第3パリティ演算選択処理の一例を示す。 図18は、第4パリティ演算選択処理の一例を示す。 図19は、ライト方法選択処理1403の一例を示す。 図20は、第1リードモディファイライト処理の一例を示す。 図21は、第1リードモディファイライト処理におけるシステムコントローラ20の動作の一例を示す。 図22は、第2リードモディファイライト処理の一例を示す。 図23は、第2リードモディファイライト処理におけるシステムコントローラ20の動作の一例を示す。 図24は、第3リードモディファイライト処理の一例を示す。 図25は、第3リードモディファイライト処理におけるシステムコントローラ20の動作の一例を示す。 図26は、第1フルストライプライト処理の一例を示す。 図27は、第1フルストライプライト処理におけるシステムコントローラ20の動作の一例を示す。 図28は、第2フルストライプライト処理の一例を示す。 図29は、第2フルストライプライト処理におけるシステムコントローラ20の動作の一例を示す。 図30は、第1データ復旧処理の一例を示す。 図31は、第1データ復旧処理におけるシステムコントローラ20の動作の一例を示す。 図32は、第2データ復旧処理の一例を示す。 図33は、第2データ復旧処理におけるシステムコントローラ20の動作の一例を示す。 図34は、通常のライトコマンドによるデバイスコントローラ60の処理の一例を示す。 図35は、旧データ保持ライトコマンドによるデバイスコントローラ60の処理の一例を示す。 図36は、中間パリティリードコマンドによるデバイスコントローラ60の処理の一例を示す。 図37は、パリティ更新ライトコマンドによるデバイスコントローラ60の処理の一例を示す。 図38は、パリティ生成ライトコマンドによるデバイスコントローラ60の処理の一例を示す。 図39は、デバイスコントローラ60による、旧データ破棄処理の一例を示す。 図40は、Qパリティの生成方法の一例を示す。 図41は、D0,D1の復旧方法の一例を示す。 図42は、第4リードモディファイライト処理の一例を示す。 図43は、第4リードモディファイライト処理におけるシステムコントローラ20の動作の一例を示す。 図44は、実施例3に係る計算機システムの構成の一例を示す。 図45は、実施例4に係る計算機システムの構成の一例を示す。
幾つかの実施例を説明する。なお、本発明の技術的範囲は各実施例に限定されない。
なお、以後の説明では、「***テーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。各種情報がデータ構造に依存しないことを示すために「***テーブル」を「***情報」と呼ぶことができる。
また、以後の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit ))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び通信制御装置(例えば通信ポート)を用いながら行うため、処理の主語がプロセッサとされてもよい。また、プログラムを主語として説明された処理は、管理システムが行う処理としても良い。また、プログラムの一部又は全ては専用ハードウェアによって実現されてもよい。このため、プログラムを主語として説明された処理は、コントローラが行う処理としても良い。コントローラは、プロセッサと、プロセッサに実行されるコンピュータプログラムを記憶する記憶資源とを含んでも良いし、上記の専用ハードウェアを含んでも良い。また、コンピュータプログラムは、プログラムソースから各計算機にインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであっても良い。
また、以下の説明では、管理システムは、一以上の計算機、例えば、管理計算機、又は、管理計算機と表示用計算機との組み合わせである。具体的には、例えば、管理計算機が表示用情報を表示する場合は、管理計算機が管理システムである。また、処理の高速化や高信頼化のために、複数の計算機で管理計算機と同等の機能が実現されてもよく、この場合は、当該複数の計算機(表示を表示用計算機が行う場合は表示用計算機を含んで良い)が、管理システムである。
まず、本発明の適用例であるストレージシステムの構成について説明する。
図1は、ストレージシステム30の構成の一例を示す。このストレージシステム30は、データを格納する複数のストレージ装置50と、これら複数のストレージ装置に接続されているシステムコントローラ20とを有する。ストレージ装置は、例えば、FMPK(Flash Memory Package)50である。
FMPK50は、データを格納する不揮発メモリと、不揮発メモリ及びシステムコントローラ20に接続されているデバイスコントローラ60とを有する。不揮発メモリは例えば、NAND型のFM(Flash Memory)55である。不揮発メモリはフラッシュメモリに限定されず、追記型のメモリ(例えば、相変化メモリ)でも良い。デバイスコントローラ60は、通信インタフェースデバイス、記憶デバイス及びそれらに接続された制御デバイスを有する。通信インタフェースデバイスは例えば、システムインタフェース53とFMインタフェース54である。以下の説明において、インタフェースをI/Fと示すことがある。システムI/F53は、システムコントローラ20に接続される。FM I/F54は、FM55に接続される。
記憶デバイスは例えば、メモリ52及びバッファ66である。制御デバイスは例えば、CPU51である。制御デバイスは、CPU51のようなプロセッサの他に、所定の処理(例えば圧縮、伸長、暗号化又は復号化)を行う専用ハードウェア回路を含んでも良い。専用ハードウェア回路は例えば、パリティ又は中間パリティを計算するパリティ演算回路65である。メモリ52には、FM55を制御するためのプログラム及び各種情報が記憶される。CPU51は、メモリ52に記憶されているプログラムを実行することにより各種機能を実現させる。バッファ66は例えば、DRAM(Dynamic Random Access Memory)等の揮発メモリである。また、バッファ66は、FM55へ書き込むデータ、FM55から読み出したデータ、パリティ演算中のデータ等を一時的に格納する。
FMPK50は、複数のFM55を有していても良い。複数のFM55は、異種の記憶媒体を含んでも良いし、同種の記憶媒体であっても良い。例えば、FM55は、複数の物理ブロックで構成されている。各物理ブロックは複数の物理ページで構成されている。FM55内の各セルは、SLC(Single Level Cell)であってもMLC(Multiple LevelCell)であっても良い。また、不揮発メモリは、他の不揮発メモリであっても良いし、相変化メモリ等の記録可能なメモリであっても良い。
図2は、システムコントローラ20の構成を示す。システムコントローラ20は、通信インタフェースデバイス、記憶デバイス、及びそれらに接続された制御デバイスを有する。通信インタフェースデバイスは例えば、通信ネットワークに接続するための通信I/F18、FMPK50に接続するためのディスクI/F19である。記憶デバイスは例えば、メモリ12及びバッファ26である。制御デバイスは例えば、CPU11である。制御デバイスは、CPU11のようなプロセッサの他に、所定の処理(例えば圧縮、伸長、暗号化又は復号化)を行う専用ハードウェア回路を含んでも良い。専用ハードウェア回路は例えば、パリティ又は中間パリティのいずれかを計算するパリティ演算回路25である。メモリ12には、FMPK50を制御するためのプログラム及び各種情報が記憶される。CPU11は、メモリ12に記憶された情報に基づき、プログラムを実行することにより各種機能を実現させる。バッファ26は例えば、DRAM等の揮発メモリである。また、バッファ26は、FMPK50へライトするデータ、FMPK50からリードしたデータ、パリティ演算中のデータ等を一時的に格納する。なお、システムコントローラ20に接続される全てのFMPK50がパリティ演算回路65を有している場合には、システムコントローラ20は、パリティ演算回路25を有していなくても良い。
システムコントローラ20に相当する従来のシステムコントローラが提供していた機能として、パリティ演算、スナップショット、データ圧縮、重複排除などがあるが、これらの機能をFMPK50等の記憶媒体が実現できる。この実施例では、パリティ演算機能を説明する。
システムコントローラ20とデバイスコントローラ60が階層を形成していることから、システムコントローラ20を上位コントローラ、デバイスコントローラ60を下位コントローラ、と定義することもできる。
次に、システムコントローラ20がRAID(Redundant Array of Independent Disks)機能をサポートしているコントローラである場合のストレージシステム30の適用例である、計算機システムについて説明する。
図3は、実施例1に係る計算機システムの構成の一例を示す。この計算機システムは、ホスト計算機10と、ストレージシステム30とを有する。ホスト計算機10とストレージシステム30とは、通信ネットワーク、例えば、SAN(Storage Area Network)1を介して接続される。なお、計算機システムは、複数のホスト計算機10を有していても良い。この場合、ストレージシステム30は、SAN1を介して複数のホスト計算機10に接続される。
ストレージシステム30は、複数のFMPK50と、これらのFMPK50を制御するシステムコントローラ20とを有する。ストレージ装置は例えば、FMPK50である。この例においてシステムコントローラ20は例えば、RAIDコントローラである。また、この例において、ストレージシステム30は、複数のシステムコントローラ20を有する。各システムコントローラ20は、SAN1を介してホスト計算機10に接続されている。複数のFMPK50の夫々は、複数のシステムコントローラ20に接続されている。なお、ストレージシステム30は、一つのシステムコントローラ20だけを有していても良い。
システムコントローラ20の構成は、図2に示された構成と同様である。メモリ12には更に、複数のFMPK50を用いるRAID機能のためのプログラム及び各種情報が記憶される。この例において、システムコントローラ20は、パリティ演算回路25を有しているが、パリティ演算回路25を有していなくても良い。
ホスト計算機10は、管理システムであっても良い。
以下、システムコントローラ20がRAID5の制御を行う場合について説明する。
システムコントローラ20は、RG(RAID Group)とLU(Logical Unit、論理ボリュームと呼ばれることもある)とFMPK50と関連付けられている。図4は、RG及びLUの構成の一例を示す。システムコントローラ20は、FMPK50の幾つかをRGに割り当て、RGの記憶領域の一部又は全部をLUに割り当てる。なお、論理ボリュームは、シンプロビジョニング技術によりボリュームの容量が仮想化された仮想ボリュームであってもよい。仮想ボリュームには予めデータを格納するための物理的な記憶領域が割当てられていない。当該仮想ボリュームへのライト要求に応じて所定の単位で、当該仮想ボリュームに対して、物理的な記憶領域が割当てられる。
図5は、RG管理テーブル600の一例を示す。図6は、LU管理テーブル700の一例を示す。図7は、FMPK管理テーブル800の一例を示す。システムコントローラ20は、RG(RAID Group)とLU(Logical Unit)とFMPK50との関係を、メモリ12内のRG管理テーブル600とLU管理テーブル700とFMPK管理テーブル800へ書き込む
RG管理テーブル600は、RG毎のレコードを有する。或るRGのレコードは、このRGを示すRG番号601と、このRGに割り当てられたFMPK50を示すFMPK番号602と、このRGのRAIDレベル603とを示す。
LU管理テーブル700は、LU毎のレコードを有する。或るLUのレコードは、このLUを示すLU番号701と、このLUに割り当てられたRGを示すRG番号702と、このLUに割り当てられたストライプブロックのサイズであるストライプサイズ703と、このLUの開始論理アドレスであるLU開始アドレス704と、このLUのサイズであるLUサイズ705と、このLUのIO特性706とを示す。IO特性706はこのLUに対して行われたIOパターンの傾向であり、シーケンシャルの傾向が強いか、或いはランダムの傾向が強いか、を示す。
IO特性706は、ユーザにより予め指定されても良いし、システムコントローラ20により判定されても良い。また、これらを組み合わせ、IO特性706の初期値がユーザにより予め指定され、所定の時間が経過した後、システムコントローラ20が判定により初期値を最適化しても良い。また、IO特性706の判定方法として例えば、システムコントローラ20は、単位時間毎に、或るLUに対するコマンドの統計を取り、ランダムI/OパターンとシーケンシャルのI/Oパターンのうち高いほうを当該LUのIO特性706と判定しても良い。コマンドの種類は、ランダムライト及びシーケンシャルライトを含む。ランダムライトの割合とシーケンシャルライトの割合の比較は、これらのコマンドの頻度を比較しても良いし、これらのコマンドにより書き込まれたデータ量を比較しても良い。また、システムコントローラ20は、一定周期でIO特性706を前述の判定方法によりモニタリングし、変更の必要があれば、LU管理テーブル700を更新しても良い。
FMPK管理テーブル800は、FMPK50毎のレコードを有する。或るFMPK50のレコードは、このFMPK50を示すFMPK番号801と、このFMPK50が所属するRGを示す所属RG番号802と、このFMPK50のパリティ演算機能を示すパリティ演算機能サポート情報803とを示す。パリティ演算機能サポート情報803は例えば、このFMPK50がパリティ演算回路65等のパリティ演算機能を有するか否かを示すフラグである。
図8は、RG上のアドレス空間の一例を示す。図9は、RGに所属するFMPK50上のアドレス空間の一例を示す。この例において、システムコントローラ20は、RAID5のRG#0のために、4個のFMPK50であるFMPK#0〜FMPK#3を割り当てる。更にシステムコントローラ20は、RG#0上のアドレス空間から、連続する領域をLU#0に割り当て、別の連続する領域をLU#1に割り当てる。システムコントローラ20は、FMPK#0〜FMPK#3上のアドレス空間に亘るストライプラインを割り当て、ストライプライン順、FMPK番号順にストライプブロック及びパリティを割り当てる。ここでシステムコントローラ20は、ストライプライン毎に、ストライプブロック及びパリティを割り当てるFMPK番号をシフトさせる。このときシステムコントローラ20は、RG#0,LU#0,LU#1に関する情報を、RG管理テーブル600とLU管理テーブル700とFMPK管理テーブル800へ書き込む。
図10は、FMPK50におけるページマッピングの一例を示す。FMPK50上の論理アドレス空間は、複数の論理ページに分割されている。一方、FMPK50上の物理アドレス空間は、複数の物理ブロックに分割されており、更に各物理ブロックは、所定のブロックサイズを有し、複数の物理ページに分割されている。各論理ページ及び各物理ページは、所定のページサイズを有する。
なお、物理ページの代わりに、物理ブロック等、他の物理領域が用いられても良い。また、論理ページの代わりに、論理ユニット等、他の論理領域が用いられても良い。
図11は、ページマッピング管理テーブル1100の一例を示す。デバイスコントローラ60は、論理ページを物理ページに関連付け、その関連をメモリ52内のページマッピング管理テーブル1100へ書き込む。ページマッピング管理テーブル1100は、論理ページ毎のレコードを有する。或る論理ページのレコードは、この論理ページを示す論理ページ番号1101と、現在この論理ページに割り当てられている物理ページである現物理ページを示す物理ページ番号1102と、現物理ページの直前にこの論理ページに割り当てられていた物理ページである旧物理ページを示す旧物理ページ番号1103とを示す。即ち、或る論理ページに関連付けられている旧物理ページは、一世代前にこの論理ページに関連付けられていた現物理ページを示す。論理ページに関連付けられた旧物理ページは有効ページとして、論理ページとの関連付けが解除されるまでその関連性が保持される。関連付けが解除された旧物理ページは無効ページとなるため、リクラメーション処理等により所定のタイミングで、旧物理ページ内のデータが消去される。リクラメーション処理とは、メモリの特性上データを上書きできないフラッシュメモリにおいて、無効データ(無効ページに格納されているデータ)を消去して、その無効データが格納されていたページを再度書き込み可能な状態にする処理を言う。フラッシュメモリではブロック単位でデータを消去するので、デバイスコントローラ60は、対象ブロック内に有効ページと無効ページの両方がある場合、有効ページ内のデータを他ブロックへ移動してから、対象ブロックに格納されている無効データを消去する。本実施例においては、デバイスコントローラ60は、論理ページに関連付けられた物理ページ1102及び旧物理ページ1103を有効ページと判断して、リクラメーション処理を実行する。
旧物理ページの管理方法の具体例について説明する。デバイスコントローラ60は、ページマッピング管理テーブル1100に示されている旧物理ページが不要か否かを判定し、或る旧物理ページが不要と判定された場合、この旧物理ページと論理ページの関連付けを解除しても良い。例えば、デバイスコントローラ60により管理される旧物理ページ数の上限が予め設定され、デバイスコントローラ60は、ページマッピング管理テーブル1100から旧物理ページを古い順に削除する。また、デバイスコントローラ60は、システムコントローラ20からの指示により、ページマッピング管理テーブル1100から旧物理ページを削除しても良い。判定基準の一例としては、データ更新に伴うパリティの更新が終了したことである。また、システムコントローラ20は、旧物理ページのデータが必要か否かを判定し、この旧物理ページが不要であると判定された場合に、この旧物理ページに対応するデバイスコントローラ60へ、ページマッピング管理テーブル1100からこの旧物理ページを削除することを指示しても良い。また、システムコントローラ20又はデバイスコントローラ60は、FM55の使用済みの容量が一定値以上になった場合に、ページマッピング管理テーブル1100から旧物理ページを削除しても良い。また、旧物理ページのデータの読み出しが要求され、且つ旧物理ページがページマッピング管理テーブル1100に残っている場合、デバイスコントローラ60は、旧物理ページのデータを読み出すことができる。
次に、システムコントローラ20の動作について説明する。
まず、データ更新時のライト方法について説明する。
ライト方法は例えば、リードモディファイライト及びフルストライプライトである。この例におけるリードモディファイライトは、一つのストライプラインの中で指定された一つのストライプブロックのデータを更新する処理である。あるいは、この例におけるフルストライプライトは、一つのストライプライン内の全てのデータを更新する処理である。リードモディファイライトは、指定されたストライプブロックの旧データと新データから中間パリティを計算し、中間パリティと旧パリティから新パリティを計算する。フルストライプライトは、全ての新データから新パリティを計算する。ここで、旧データは更新前のデータを示し、新データは更新後のデータを示し、旧パリティは更新前のパリティを示す、新パリティは更新後のパリティを示す。中間パリティは、パリティ演算の途中のパリティであり、旧パリティと新パリティの差分を示す。
次に、パリティ演算機能について説明する。
パリティ演算機能は例えば、パリティ演算回路25及びパリティ演算回路65であり、一つのストライプラインにおける二つのストライプブロックのデータの間の排他的論理和(exclusive OR)をパリティとして計算する。また、パリティ演算機能は、旧データと新データの間の排他的論理和を中間パリティとして計算する。また、パリティ演算機能は、旧パリティと中間パリティの間の排他的論理和を新パリティとして計算する。旧データをDi、新データをDi_new、旧パリティをPとすると、新パリティP_newは次式で表される。
P_new = P+(Di+Di_new)
ここで、演算子「+」は排他的論理和を表し、(Di+Di_new)は中間パリティを表す。中間パリティは、Di以外の全てのデータ間の排他的論理和に等しい。
なお、パリティの代わりに、ハミング符号等、他の冗長コードが用いられても良い。
次に、システムコントローラ20がFMPK管理テーブル800にパリティ演算機能サポート情報803を登録するパリティ演算機能登録処理について説明する。
図12は、パリティ演算機能登録処理の一例を示す。システムコントローラ20は、新規のFMPK50をインストールする時や、システムコントローラ20の立ち上げ時等に、パリティ演算機能登録処理を行う。
まずシステムコントローラ20は、パリティ演算機能サポート確認コマンドをFMPK50のデバイスコントローラ60へ発行し、その応答を受領する(1201)。このときパリティ演算機能サポート確認コマンドを受けたデバイスコントローラ60は、デバイスコントローラ60自身がパリティ演算機能を有しているか否かを示す応答をシステムコントローラ20へ送る。次にシステムコントローラ20は、応答に基づいて、デバイスコントローラ60がパリティ演算機能を有しているか否かを示す情報を、FMPK管理テーブル800のパリティ演算機能サポート情報803へ登録し(1202)、この処理のフローを終了する。
なお、パリティ演算機能登録処理を行う代わりに、ユーザが予めパリティ演算機能サポート情報803を登録しても良い。
次に、パリティ演算を行うパリティ演算実施装置の決定方法について説明する。
図13は、パリティ演算実施装置の決定方法1300の一例を示す。システムコントローラ20は決定方法1300に従って、システムコントローラ20又はデバイスコントローラ60をパリティ演算実施装置として決定する。システムコントローラ20は、システムコントローラ20がパリティ演算回路25等のパリティ演算機能を有するか否かを示す情報と、FMPK管理テーブル800のパリティ演算機能サポート情報803とに基づいて、システムコントローラ20とデバイスコントローラ60の何れかをパリティ演算実施装置として決定する。パリティ演算実施装置を決定するための4個のケースが定義されている。各ケースは、ケース番号1301、システムコントローラ20がパリティ演算機能を有するか否かを示すシステム機能情報1302と、デバイスコントローラ60がパリティ演算機能を有するか否かを示すデバイス機能情報1303と、パリティ演算実施装置を示すパリティ演算実施情報1304と、オプション1305とを示す。
ケース#1は、システムコントローラ20がパリティ演算機能を有しており、且つデバイスコントローラ60もパリティ演算機能を有しているケースである。パリティ演算実施情報1304によれば、このケースにおいてシステムコントローラ20は、パリティ演算実施装置としてシステムコントローラ20とデバイスコントローラ60の何れも選択することができる。この場合、システムコントローラ20は、オプション1305に基づいて後述のライト処理を行う。
ケース#2は、システムコントローラ20がパリティ演算機能を有しており、且つデバイスコントローラ60がパリティ演算機能を有していないケースである。パリティ演算実施情報1304によれば、このケースにおいてシステムコントローラ20は、パリティ演算実施装置としてシステムコントローラ20を選択する。
ケース#3は、システムコントローラ20がパリティ演算機能を有しておらず、且つデバイスコントローラ60がパリティ演算機能を有しているケースである。パリティ演算実施情報1304によれば、このケースにおいてシステムコントローラ20は、パリティ演算実施装置としてデバイスコントローラ60を選択する。
ケース#4は、システムコントローラ20がパリティ演算機能を有しておらず、且つデバイスコントローラ60もパリティ演算機能を有していないケースである。パリティ演算実施情報1304によれば、このケースにおいてシステムコントローラ20は、パリティ演算実施装置としてシステムコントローラ20とデバイスコントローラ60の何れも選択することができない。
なお、パリティ演算機能登録処理及びパリティ演算実施装置の決定は、省かれても良い。例えば、システムコントローラ20と全てのデバイスコントローラ60がパリティ演算機能を有している場合、システムコントローラ20は、パリティ演算機能登録処理及びパリティ演算実施装置の決定を省き、後述するケース#1におけるライト処理を行う。また、管理者等によりパリティ演算実施装置が予め設定されている場合も、これらの処理を省略可能である。
次に、ケース#1〜#3におけるシステムコントローラ20のライト処理について説明する。
図14は、システムコントローラ20のライト処理の一例を示す。まずシステムコントローラ20は、外部ホストからIO要求としてライト要求を受領する(1401)。外部ホストは例えば、SAN1を介してシステムコントローラ20に接続されたホスト計算機10である。次にシステムコントローラ20は、パリティ演算を行うパリティ演算実施装置としてシステムコントローラ20及びデバイスコントローラ60の一方を選択するパリティ演算選択処理を行う(1402)。なお、ケース#2及びケース#3では、パリティ演算実施装置は選択済みなので、ステップ1402の処理は省略する。次にシステムコントローラ20は、受領した命令に基づいてライト方法を選択するライト方法選択処理を行う(1403)。ライト方法は、リードモディファイライト及びフルストライプライトの一方である。次にシステムコントローラ20は、選択されたライト方法に従ってデバイスコントローラ60にデータ及びパリティを更新させるデータ更新処理を行う(1404)。
次に、パリティ演算選択処理1402の幾つかの具体例について説明する。
まず、システムコントローラ20がLU毎のIO特性706に基づいてパリティ演算実施装置を選択する処理の具体例である、第1パリティ演算選択処理について説明する。
図15は、第1パリティ演算選択処理の一例を示す。まずシステムコントローラ20は、LU管理テーブル700に基づいて、当該ライトの対象のLUのIO特性706がランダムを示すか否かを判定する(1501)。当該LUのIO特性706がランダムを示す場合(1501,Yes)、システムコントローラ20は、パリティ演算実施装置としてデバイスコントローラ60を選択することにより、デバイスコントローラ60にパリティ演算を指示することを決定し(1502)、この処理のフローを終了する。一方、当該LUのIO特性706がランダムを示さない場合(1501,No)、すなわち後述するシーケンシャルライトの場合は、システムコントローラ20は、パリティ演算実施装置としてシステムコントローラ20を選択することにより、システムコントローラ20がパリティ演算を実施することを決定し(1503)、この処理のフローを終了する。
即ち、システムコントローラ20は、IO契機で、LU管理テーブル700のIO特性706を参照し、IO特性706が、当該LUへの書き込みにおいてランダムライトがシーケンシャルライトより多いことを示す場合、デバイスコントローラ60にパリティ生成を指示する。一方、IO特性706が、当該LUへの書き込みにおいてランダムライトがシーケンシャルライトより少ないことを示す場合、システムコントローラ20がパリティ生成を実施する。
次に、システムコントローラ20がシステムコントローラ20のハードウェアの負荷を検出し、この負荷に基づいてパリティ演算実施装置を選択する処理の具体例である、第2パリティ演算選択処理について説明する。
図16は、第2パリティ演算選択処理の一例を示す。ハードウェアは例えば、CPU11、メモリ12、パリティ演算回路25である。まずシステムコントローラ20は、自身のハードウェアの負荷が基準より高いか否かを判定する(1601)。ハードウェアの負荷が基準より高いと判定された場合(1601,Yes)、システムコントローラ20は、パリティ演算実施装置としてデバイスコントローラ60を選択し、デバイスコントローラ60にパリティ演算を指示し(1602)、この処理のフローを終了する。一方、ハードウェアの負荷が基準より高くないと判定された場合(1601,No)、システムコントローラ20は、パリティ演算実施装置としてシステムコントローラ20を選択し(1603)、この処理のフローを終了する。
ここで、システムコントローラ20は例えば、システムコントローラ20のハードウェアの負荷を計測し、計測結果が所定の閾値を超えた場合に、ハードウェアの負荷が高いと判定する。計測結果は例えば、CPU11の利用率、メモリ12の使用量、パリティ演算回路25へ入力されたデータ量等である。
次に、システムコントローラ20が当該ライトのIOパターンに基づいてパリティ演算実施装置を選択する処理の具体例である、第3パリティ演算選択処理について説明する。
図17は、第3パリティ演算選択処理の一例を示す。まずシステムコントローラ20は、当該IO要求のIOパターンがランダムライトか否かを判定する(1701)。IOパターンがランダムライトであると判定された場合(1701,Yes)、システムコントローラ20はパリティ演算実施装置としてデバイスコントローラ60を選択し、デバイスコントローラ60にパリティ演算を指示し(1702)、この処理のフローを終了する。一方、IOパターンがランダムライトでないと判定された場合、即ちIOパターンがシーケンシャルライトであると判定された場合(1701,No)、システムコントローラ20は、パリティ演算実施装置としてシステムコントローラ20を選択し(1703)、この処理のフローを終了する。
次に、システムコントローラ20が当該ライトのIOパターンとシステムコントローラ20のハードウェアの負荷とに基づいてパリティ演算実施装置を選択する処理の具体例である、第4パリティ演算選択処理について説明する。
図18は、第4パリティ演算選択処理の一例を示す。まずシステムコントローラ20は、当該ライトのIOパターンがランダムライトか否かを判定する(1801)。IOパターンがランダムライトであると判定された場合(1801,Yes)、システムコントローラ20はパリティ演算実施装置としてデバイスコントローラ60を選択し、デバイスコントローラ60にパリティ演算を指示し(1802)、この処理のフローを終了する。一方、IOパターンがランダムライトでないと判定された場合(1801,No)、システムコントローラ20は、ハードウェアの負荷が高いか否かを判定する(1803)。ハードウェアの負荷が高いと判定された場合(1803,Yes)、システムコントローラ20は、処理のフローを1802へ移行させる。一方、ハードウェアの負荷が高くないと判定された場合(1803,No)、システムコントローラ20は、パリティ演算実施装置としてシステムコントローラ20を選択し(1804)、この処理のフローを終了する。
なお、システムコントローラ20は、以上に示された複数の種類のパリティ演算選択処理1402を組み合わせることにより、パリティ演算実施装置を選択しても良い。
シーケンシャルライト時及びフルストライプライト時、システムコントローラ20がパリティ演算を行うことにより、システムコントローラ20からデバイスコントローラ60へのデータ転送量の増大を防ぐことができる。これによりライト速度の低下を防ぐことができる。
次に、ライト方法選択処理1403の具体例について説明する。
図19は、ライト方法選択処理1403の一例を示す。ライト方法の選択肢は例えば、リードモディファイライト及びフルストライプライトである。まずシステムコントローラ20は、当該IO要求であるライトのIOパターンがランダムライトか否かを判定する(1901)。IOパターンがランダムライトであると判定された場合(1901,Yes)、システムコントローラ20は、ライト方法としてリードモディファイライトを選択し(1902)、この処理のフローを終了する。一方、IOパターンがランダムライトでないと判定された場合(1901,No)、即ちIOパターンがシーケンシャルライトであると判定された場合、システムコントローラ20は、ライト方法としてフルストライプライトを選択し(1903)、この処理のフローを終了する。
次に、パリティ演算実施装置の選択結果とライト方法の選択結果に応じたデータ更新処理1404の幾つかの具体例について説明する。
まず、パリティ演算実施装置としてデバイスコントローラ60が選択され、ライト方法としてリードモディファイライトが選択された場合のデータ更新処理1404の具体例である、第1リードモディファイライト処理について説明する。
図20は、第1リードモディファイライト処理の一例を示す。図21は、第1リードモディファイライト処理におけるシステムコントローラ20の動作の一例を示す。この例において、4個のFMPK50であるFMPK#0,#1,#2,#3は、一つのストライプライン内のデータD0,D1,D2、パリティPを夫々格納している。ここでシステムコントローラ20が、ライトの命令により、D0の旧データを更新するための新データを受けた状態を初期状態とする。以下の説明において、FMPK#0,#1,#2,#3のうち、更新されるデータを格納しているFMPK#0をデータFMPKと呼ぶことがある。また、FMPK#0,#1,#2,#3のうち、パリティを格納しているFMPK#3をパリティFMPKと呼ぶことがある。
まずシステムコントローラ20は、FMPK#0,#1,#2,#3の中からD0に対応するFMPK#0(データFMPK)を選択し、旧データの保持と新データの書き込みとを指示する旧データ保持ライトコマンドをFMPK#0へ発行することにより、新データをFMPK#0へ転送する(2101)。このコマンドを受けたFMPK#0のデバイスコントローラ60は、システムコントローラ20からの新データをFMPK#0内の旧データの物理ページと異なる物理ページへ書き込む。通常ライトコマンドでは、論理ページに新物理ページが割り当てられると旧物理ページは無効となり、旧物理ページに格納されている旧データは消去の対象となる。そこで、システムコントローラ20は、パリティの更新が完了するまで旧データが保持されるようにするため、通常ライトコマンドではなく旧データ保持ライトコマンドを利用する。以後の説明において、ライトコマンドとは、通常ライトコマンドを示すものとする。
次にシステムコントローラ20は、中間パリティを要求する中間パリティリードコマンドをFMPK#0へ発行することにより、FMPK#0から中間パリティを取得する(2102)。中間パリティは、旧パリティのパリティ演算により新パリティを生成するための、中間演算結果である。このコマンドを受けたFMPK#0のデバイスコントローラ60は、FMPK#0内に格納された旧データとFMPK#0内に格納された新データとから中間パリティを計算し、応答として中間パリティをシステムコントローラ20へ送る。ここでFMPK#0のデバイスコントローラ60は、計算された中間パリティを、バッファ66へ書き込んでも良いし、FMPK#0内のFM55の中で旧データの物理ページ及び新データの物理ページの両方と異なる物理ページへ書き込んでも良い。
次にシステムコントローラ20は、FMPK#0,#1,#2,#3の中からPに対応するFMPK#3(パリティFMPK)を選択し、パリティの更新を指示するパリティ更新ライトコマンドをFMPK#3へ発行することにより、FMPK#0から受信した中間パリティをFMPK#3へ転送する(2103)。このコマンドを受けたFMPK#3は、FMPK#3内の旧パリティとシステムコントローラ20からの中間パリティから新パリティを計算し、新パリティをFMPK#3へ書き込む。FMPK#3のデバイスコントローラ60は、新パリティをFMPK#3へ書き込んだら、システムコントローラ20に対してパリティ更新ライトの完了応答を通知する。ここでFMPK#3のデバイスコントローラ60は、システムコントローラ20からの中間パリティを、バッファ66へ書き込んでも良いし、FMPK#3内のFM55の中で旧パリティの物理ページ及び新パリティの物理ページの両方と異なる物理ページへ書き込んでも良い。
次にシステムコントローラ20は、FMPK#3からの完了応答を受信すると、旧データを無効にすることを指示する旧データ破棄コマンドを、FMPK#0へ発行し(2104)、このフローを終了する。このコマンドを受けたFMPK#0のデバイスコントローラ60は、保持していた旧データを無効とするため、マッピング管理テーブル1100から旧データ破棄コマンドにより特定された論理ページにマッピングされた物理ページを削除する。
なお、システムコントローラ20は、パリティ更新ライトコマンド発行後、FMPK#3からの完了応答を所定の時間以内に受信しなかった場合は、パリティの更新が失敗したものと判断して、FMPK#0から中間パリティを再取得し、その中間パリティをFMPK#3へ再転送することで、パリティの更新処理を再実行してもよい。
具体的には、システムコントローラ20は、パリティ更新ライトコマンド発行後、FMPK#3からの完了応答を所定の時間以内に受信しなかった場合は、中間パリティリードコマンドをFMPK#0へ再発行し、このコマンドに応じて再計算された中間パリティを受信する。そして、システムコントローラ20は、パリティ更新ライトコマンドをFMPK#3へ再発行することにより、再計算された中間パリティをFMPK#3に書き込む。
この処理によれば、一つのストライプブロックのデータの更新におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
(1)更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60へ転送される。
(2)中間パリティがデータFMPKのデバイスコントローラ60からシステムコントローラ20へ転送される。
(3)中間パリティがシステムコントローラ20からパリティFMPKのデバイスコントローラ60へ転送される。
これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。あるいは、システムコントローラ20がパリティ演算を行う場合、システムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
(1)更新前のデータがデータFMPKのデバイスコントローラ60からシステムコントローラ20へ転送される。
(2)更新前のパリティがパリティFMPKのデバイスコントローラ60からシステムコントローラ20へ転送される。
(3)更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60へ転送される。
(4)更新後のパリティがシステムコントローラ20からパリティFMPKのデバイスコントローラ60へ転送される。
このようにシステムコントローラ20がパリティ演算を行う場合に比べると、第1リードモディファイライト処理のデータ転送は少ない。
また、データFMPKが更新前のデータと更新後のデータの両方をFM55に保持することにより、データFMPKのデバイスコントローラ60が中間パリティを演算するために使用するバッファ66を削減することができる。
更に、新データのライト後も旧データをパリティが更新されるまで保持することで、パリティ更新前に障害が起きた場合にも、データ復旧が可能となる。また、パリティ更新後は旧データを無効にして旧データを消去対象とすることで、旧データによる記憶領域の使用量を削減することができる。
次に、パリティ演算実施装置としてデバイスコントローラ60が選択され、ライト方法としてリードモディファイライトが選択された場合の別のデータ更新処理1404の別の具体例である、第2リードモディファイライト処理について説明する。
図22は、第2リードモディファイライト処理の一例を示す。図23は、第2リードモディファイライト処理におけるシステムコントローラ20の一例の動作を示す。この例における初期状態は、第1リードモディファイライト処理の初期状態と同様である。まずシステムコントローラ20は、リードコマンドをD0に対応するFMPK#0(データFMPK)へ発行することにより、FMPK#0から旧データを取得する(2301)。このコマンドを受けたFMPK#0のデバイスコントローラ60は、FMPK#0内の旧データを読み出し、旧データを応答としてシステムコントローラ20へ送る。
次にシステムコントローラ20は、パリティ更新ライトコマンドをPに対応するFMPK#3(パリティFMPK)へ発行することにより、新データと旧データをFMPK#3へ転送する(2302)。このコマンドを受けたFMPK#3のデバイスコントローラ60は、システムコントローラ20からの新データとシステムコントローラ20からの旧データとFMPK#3内の旧パリティから新パリティを計算し、この新パリティを、FMPK#3へ書き込む。
次にシステムコントローラ20は、ライトコマンドをFMPK#0に発行することにより、新データをFMPK#0に転送する(2303)。このコマンドを受けたFMPK#0のデバイスコントローラ60は新データをFMPK#0へ書き込む。
この処理によれば、一つのストライプブロックのデータの更新におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
(1)更新前のデータがデータFMPKのデバイスコントローラ60からシステムコントローラ20へ転送され、更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60に転送される。
(2)更新前のデータと更新後のデータとがシステムコントローラ20からパリティFMPKのデバイスコントローラ60へ転送される。
これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。
2302において、システムコントローラ20は、1回のパリティ更新ライトコマンドで、新データと旧データをパリティFMPKへ転送する。この時の転送データ量は、第1リードモディファイライト処理が中間パリティをシステムコントローラ20からパリティFMPKへ転送する場合の転送データ量に比べて、2倍になる。しかし、転送回数が1回であるため、データ転送のオーバヘッドの増加を防ぐことができる。データ転送が、例えばSAS(Serial Attached Small Computer System Interface)−6GBのような高速インタフェースにより行われる場合、転送データ量が増加するデメリットより転送回数が減少するメリットの方が大きい。
更に、新データのライト後も旧データをパリティが更新されるまで保持することで、パリティ更新前に障害が起きた場合にもデータ復旧が可能となる。また、パリティ更新後は旧データを無効にして、旧データを消去対象とすることで、旧データによる記憶領域の使用量を削減することができる。
なお、パリティ演算実施装置としてデバイスコントローラ60が選択され、ライト方法としてリードモディファイライトが選択された場合、第1リードモディファイライト処理及び第2リードモディファイライト処理の何れが行われても良い。
次に、パリティ演算実施装置としてシステムコントローラ20が選択され、ライト方法としてリードモディファイライトが選択された場合のデータ更新処理1404の具体例である、第3リードモディファイライト処理について説明する。
図24は、第3リードモディファイライト処理の一例を示す。図25は、第3リードモディファイライト処理におけるシステムコントローラ20の動作の一例を示す。この例における初期状態は、第1リードモディファイライト処理の初期状態と同様である。まずシステムコントローラ20は、D0を要求するリードコマンドをD0に対応するFMPK#0へ発行することによりFMPK#0から旧データを取得し、リードコマンドをPに対応するFMPK#3へ発行することによりFMPK#3から旧パリティを取得する(2501)。このリードコマンドを受けたFMPK#0は、FMPK#0内の旧データを読み出し、旧データを応答としてシステムコントローラ20へ送る。また、このリードコマンドを受けたFMPK#3のデバイスコントローラ60は、FMPK#3内の旧パリティを読み出し、旧パリティを応答としてシステムコントローラ20へ送る。
次にシステムコントローラ20は、旧データと旧パリティと新データから新パリティを計算する(2502)。次にシステムコントローラ20は、ライトコマンドをFMPK#0へ発行することによりFMPK#0へ新データを転送し、ライトコマンドをPに対応するFMPK#3へ発行することによりFMPK#3へ新パリティを転送し(2503)、この処理のフローを終了する。このライトコマンドを受けたFMPK#0のデバイスコントローラ60は、FMPK#0へ新データを書き込む。また、このライトコマンドを受けたFMPK#3は、FMPK#3へ新パリティを書き込む。
この処理によれば、一つのストライプブロックのデータの更新におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
(1)更新前のデータがデータFMPKのデバイスコントローラ60からシステムコントローラ20へ転送され、更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60に転送される。
(2)更新前のパリティがパリティFMPKのデバイスコントローラ60からシステムコントローラ20へ転送される。
(3)更新後のパリティがシステムコントローラ20からパリティFMPKのデバイスコントローラ60へ転送される。
これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。
次に、フルストライプライトの幾つかの具体例について説明する。
まず、パリティ演算実施装置としてデバイスコントローラ60が選択され、ライト方法としてフルストライプライトが選択された場合の別のデータ更新処理1404の具体例である、第1フルストライプライト処理について説明する。
図26は、第1フルストライプライト処理の一例を示す。図27は、第1フルストライプライト処理におけるシステムコントローラ20の動作の一例を示す。この例において、FMPK#0,#1,#2,#3は、D0,D1,D2,Pを夫々格納している。ここでシステムコントローラ20が、ライトの命令により、D0,D1,D2の旧データを更新するための新データを受けた状態を初期状態とする。以下の説明において、FMPK#0,#1,#2,#3のうち、更新されるデータを格納しているFMPK#0,#1,#2をデータFMPKと呼ぶことがある。
まずシステムコントローラ20は、D0,D1,D2に夫々対応するFMPK#0,#1,#2(データFMPK)へライトコマンドを発行することにより、受領データをD0,D1,D2の新データに分割し、D0,D1,D2の新データをFMPK#0,#1,#2へ夫々転送する(2701)。このライトコマンドを受けたFMPK#0,#1,#2のデバイスコントローラ60は、システムコントローラ20からの新データをFMPK#0,#1,#2へ夫々書き込む。
次にシステムコントローラ20は、パリティの生成と書き込みを指示するパリティ生成ライトコマンドをPに対応するFMPK#3(パリティFMPK)へ発行することにより、D0,D1,D2の新データをFMPK#3へ転送し(2702)、この処理のフローを終了する。このライトコマンドを受けたFMPK#3のデバイスコントローラ60は、D0,D1,D2の新データから新パリティを計算し、新パリティをFMPK#3へ書き込む。
この処理によれば、一つのストライプラインのデータの更新におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
(1)更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60へ転送される。
(2)更新後のパリティデータがシステムコントローラ20からパリティFMPKのデバイスコントローラ60へ転送される。
これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。
次に、パリティ演算実施装置としてシステムコントローラ20が選択され、ライト方法としてフルストライプライトが選択された場合の別のデータ更新処理1404の具体例である、第2フルストライプライト処理について説明する。
図28は、第2フルストライプライト処理の一例を示す。図29は、第2フルストライプライト処理におけるシステムコントローラ20の動作の一例を示す。この例における初期状態は、第1フルストライプライト処理の初期状態と同様である。まずシステムコントローラ20は、D0,D1,D2の新データから新パリティを計算する(2901)。次にシステムコントローラ20は、D0,D1,D2に夫々対応するFMPK#0,#1,#2へライトコマンドを発行することにより、D0,D1,D2の新データをFMPK#0,#1,#2へ夫々転送し、Pに対応するFMPK#3へライトコマンドを発行することにより、計算された新パリティをFMPK#3へ転送し(2902)、この処理のフローを終了する。ライトコマンドを受けたFMPK#0,#1,#2のデバイスコントローラ60は、システムコントローラ20からの新データをFMPK#0,#1,#2へ夫々書き込む。また、ライトコマンドを受けたFMPK#3のデバイスコントローラ60は、システムコントローラ20からの新パリティをFMPK#3へ書き込む。
この処理によれば、一つのストライプラインのデータの更新におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
(1)更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60へ転送される。
(2)、更新後のパリティがシステムコントローラ20からパリティFMPKのデバイスコントローラ60へ転送される。
これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。
次に、パリティ演算実施装置の選択結果に応じたデータ復旧処理の幾つかの具体例について説明する。
まず、パリティ演算実施装置としてデバイスコントローラ60が選択された場合のデータ復旧処理の具体例である、第1データ復旧処理について説明する。
図30は、第1データ復旧処理の一例を示す。図31は、第1データ復旧処理におけるシステムコントローラ20の動作の一例を示す。この例において、FMPK#0,#1,#2,#3は、D0,D1,D2,Pを夫々格納している。ここで、FMPK#1内のFM55に障害が発生し、このFM55が新たなFM55に交換された状態を初期状態とする。以下の説明において、FMPK#0,#1,#2,#3のうち、復旧されるデータを格納しているFMPK#1を復旧中FMPKと呼ぶことがある。
まずシステムコントローラ20は、FMPK#0,#1,#2,#3が所属するRG内の生存しているFMPK#0,#2,#3へリードコマンドを発行することにより、FMPK#0,#2,#3に夫々格納されたD0,D2,Pを取得する(3101)。このリードコマンドを受けたFMPK#0,#2,#3のデバイスコントローラ60は、D0,D2,Pを夫々読み出し、読み出したD0,D2,Pをシステムコントローラ20へ転送する。ここで読み出されるデータであってもパリティであっても良い。
次にシステムコントローラ20は、復旧中のFMPK#1(復旧中FMPK)へパリティ生成を示すライトコマンドを発行することにより、読み出されたD0,D2,PをFMPK#1へ転送し(3102)、この処理のフローを終了する。このライトコマンドを受けたFMPK#1のデバイスコントローラ60は、D0,D2,PからD1を計算することによりD1の復旧データを生成し、D1の復旧データをFMPK#1へ書き込む。
この処理によれば、一つのストライプブロックのデータの復旧におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
(1)復旧中FMPK以外のFMPK50のデータが対応するデバイスコントローラ60からシステムコントローラ20へ転送される。
(2)転送されたデータがシステムコントローラ20から復旧中FMPKのデバイスコントローラ60へ転送される。
これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。
次に、パリティ演算実施装置としてシステムコントローラ20が選択された場合のデータ復旧処理の具体例である、第2データ復旧処理について説明する。
図32は、第2データ復旧処理の一例を示す。図33は、第2データ復旧処理におけるシステムコントローラ20の動作の一例を示す。この例における初期状態は、第1の具体例と同様である。まずシステムコントローラ20は、FMPK#0,#1,#2,#3が所属するRG内の生存しているFMPK#0,#2,#3へリードコマンドを発行することにより、FMPK#0,#2,#3からD0,D2,Pを読み出す(3301)。このリードコマンドを受けたFMPK#0,#2,#3のデバイスコントローラ60は、D0,D2,Pを夫々読み出し、読み出したD0,D2,Pをシステムコントローラ20へ転送する。ここで読み出されるデータであってもパリティであっても良い。
次にシステムコントローラ20は、D0,D2,PからD1を計算することにより、D1の復旧データを生成する(3302)。次にシステムコントローラ20は、ライトコマンドをFMPK#1へ発行することにより、復旧されたD1をFMPK#1へ書き込み(3303)、この処理のフローを終了する。このライトコマンドを受けたFMPK#1のデバイスコントローラ60は、受けたD1をFMPK#1へ書き込む。
この処理によれば、一つのストライプブロックのデータの復旧におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
(1)復旧中FMPK以外のFMPK50のデータが対応するデバイスコントローラ60からシステムコントローラ20へ転送される。
(2)転送されたデータがシステムコントローラ20から復旧中FMPKのデバイスコントローラ60へ転送される。
これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。
次に、デバイスコントローラ60の動作について説明する。
まず、通常のライトコマンドを受けた場合のデバイスコントローラ60の処理の具体例である、通常ライト処理について説明する。
この通常ライト処理において、デバイスコントローラ60は、旧データを保持する必要がない。
図34は、通常ライト処理の一例を示す。まずデバイスコントローラ60は、通常のライトコマンドを受領する(3401)。次にデバイスコントローラ60は、このライトコマンドにより指定された論理アドレスから論理ページ番号を求め、この論理ページ番号の論理ページをライト先論理ページとする(3402)。次にデバイスコントローラ60は、新規に空きページを取得し、取得された物理ページをライト先物理ページとして割り当てる(3403)。次にデバイスコントローラ60は、ライトコマンドにより受領したライトデータをライト先物理ページへ書き込む(3404)。
次にデバイスコントローラ60は、ページマッピング管理テーブル1100においてライト先論理ページにライト先物理ページを関連付け、物理ページ番号としてライト先物理ページの番号を登録する(3405)。次にデバイスコントローラ60は、コマンド完了を示す応答をシステムコントローラ20へ送り(3406)、この処理のフローを終了する。
3403において、デバイスコントローラ60は、未使用の物理ページを確保する、物理ブロックを消去してその物理ブロック内の物理ページを確保する、等の処理を行うことにより、空きの物理ページを取得しても良い。このとき、デバイスコントローラ60は、物理ブロックの消去のために、ページマッピング管理テーブル1100における他の論理ページと旧物理ページの関連付けを解除しても良い。
次に、旧データ保持ライトコマンドを受けた場合のデバイスコントローラ60の処理の具体例である、旧データ保持ライトコマンド処理について説明する。
この旧データ保持ライト処理は例えば、前述の第1リードモディファイライト処理に用いられる。
図35は、旧データ保持ライト処理の一例を示す。まずデバイスコントローラ60は、旧データ保持ライトコマンドを受領する(3501)。次にデバイスコントローラ60は、このライトコマンドにより指定された論理アドレスから論理ページ番号を求め、この論理ページ番号の論理ページをライト先論理ページとする(3502)。次にデバイスコントローラ60は、ページマッピング管理テーブル1100を参照することにより、ライト先論理ページに物理ページが割り当てられているか否かを判定する(3503)。
ライト先論理ページに物理ページが割り当てられている場合(3503,Yes)、デバイスコントローラ60は、ページマッピング管理テーブル1100においてライト先論理ページに関連付けられている物理ページ番号を旧物理ページ番号として登録する(3504)。
ライト先論理ページに物理ページが割り当てられていない場合(3503、No)又は3504の後、デバイスコントローラ60は、新規に空きページを取得し、取得された物理ページをライト先物理ページとして割り当てる(3505)。次にデバイスコントローラ60は、ライトコマンドにより受領したライトデータをライト先物理ページへ書き込む(3506)。
次にデバイスコントローラ60は、ページマッピング管理テーブル1100においてライト先論理ページにライト先物理ページを関連付け、物理ページ番号としてライト先物理ページの番号を登録する(3507)。次にデバイスコントローラ60は、コマンド完了を示す応答をシステムコントローラ20へ送り(3508)、この処理のフローを終了する。
この処理によれば、データFMPKは、データの更新時に更新前のデータを保持することができる。更に、データFMPKのデバイスコントローラ60は、更新された論理ページと、旧データを格納する旧物理ページと、新データを格納する物理ページとを関連付けることができる。これにより、データFMPKは、データ更新時、更新前のデータと更新後のデータの両方を不揮発メモリに保持することができる。また、データFMPKのデバイスコントローラ60は、揮発メモリを用いることなく、更新前のデータと更新後のデータの両方を読み出すことができる。更に、システムコントローラ20は、データFMPKのデバイスコントローラ60に更新前のデータと更新後のデータの両方を保持させることができる。
次に、中間パリティリードコマンドを受けた場合のデバイスコントローラ60の処理の具体例である、中間パリティリード処理について説明する。
この中間パリティリード処理は、指定されたアドレスの旧データと新データのパリティ演算を行うことにより、中間パリティを生成して返す。この中間パリティリード処理は例えば、前述の第1リードモディファイライト処理に用いられる。
図36は、中間パリティリード処理の一例を示す。まずデバイスコントローラ60は、中間パリティリードコマンドを受領する(3601)。次にデバイスコントローラ60は、この中間パリティリードコマンドにより指定された論理アドレスから論理ページ番号を求め、この論理ページ番号の論理ページをリード先論理ページとする(3602)。次にデバイスコントローラ60は、ページマッピング管理テーブル1100を参照することにより、リード先論理ページに対応する旧物理ページが登録されているか否かを判定する(3603)。
リード先論理ページに対応する旧物理ページが登録されている場合(3603,Yes)、デバイスコントローラ60は、リード先論理ページに対応する旧物理ページのデータと現在の物理ページのデータとを読み出し、読み出されたデータから中間パリティを計算する(3604)。次にデバイスコントローラ60は、中間パリティをシステムコントローラ20へ転送し(3606)、この処理のフローを終了する。
3603において、リード先論理ページに対応する旧物理ページが登録されていない場合(3603,No)、デバイスコントローラ60は、リード先論理ページの旧データがないことを示すコマンド結果をシステムコントローラ20へ報告し(3605)、この処理のフローを終了する。
3605においてリード先論理ページの旧データがないことを示す結果を受けたシステムコントローラ20は例えば、新データと同一ストライプライン内の全てのデータを読み出し、読み出されたデータから新パリティを計算し、パリティに対応するデバイスコントローラ60へ新パリティを書き込むためのライトコマンドを発行しても良い。或いはこの場合、システムコントローラ20は例えば、新データと同一ストライプライン内の全てのデータを読み出し、パリティに対応するデバイスコントローラ60へ、読み出されたデータから新パリティを計算するためのパリティ生成ライトコマンドを発行しても良い。
この処理によれば、データFMPKのデバイスコントローラ60は、システムコントローラ20から中間パリティの演算の指示を受けた場合、更新前のデータと更新後のデータとを読み出し、読み出されたデータから中間パリティを生成することができる。更に、システムコントローラ20は、データFMPKのデバイスコントローラ60に中間パリティを生成させ、デバイスコントローラ60から中間パリティを取得することができる。
仮に、データFMPKのデバイスコントローラ60がシステムコントローラ20の動作と非同期で中間パリティを生成したとする。この場合、中間パリティの演算がデバイスコントローラ60のバッファ66をに負担をかけることにより、このデバイスコントローラ60の性能が低下する。また、中間パリティ演算に必要なデータがバッファ66に格納されている状態で電源断が発生した場合、このデータが消失し、データ復旧が不可能になる可能性がある。一方、この実施例によれば、データFMPKのデバイスコントローラ60が中間パリティリードコマンドを受けたタイミングで中間パリティを生成することにより、ストレージシステム30の性能低下を防ぐことができる。また、中間パリティ演算に必要なデータの消失を防ぎ、ストレージシステム30の信頼性を向上させることができる。
次に、パリティ更新ライトコマンドを受けた場合のデバイスコントローラ60の処理の具体例である、パリティ更新ライト処理について説明する。
このパリティ更新ライト処理は、転送された中間パリティと指定された旧パリティとのパリティ演算を行うことにより、新パリティを生成して、この新パリティをFM55へ書き込む。このパリティ更新ライトコマンドは例えば、前述の第1リードモディファイライト処理に用いられる。
図37は、パリティ更新ライト処理の一例を示す。まずデバイスコントローラ60は、パリティ更新ライトコマンドを受領する(3701)。次にデバイスコントローラ60は、このライトコマンドにより指定された論理アドレスから論理ページ番号を求め、この論理ページ番号の論理ページをリード先論理ページとする(3702)。次にデバイスコントローラ60は、ページマッピング管理テーブル1100を参照することにより、リード先論理ページに対応する物理ページ番号を求め、この物理ページ番号に示された物理ページからデータを読み出す(3703)。読み出されたデータは例えば、旧パリティである。次にデバイスコントローラ60は、新規に空きページを取得し、取得された物理ページを結果格納先物理ページとして割り当てる(3704)。次にデバイスコントローラ60は、読み出されたデータと受領したデータとを用いてパリティ演算を行い、演算結果を結果格納先物理ページへ書き込む(3705)。
次にデバイスコントローラ60は、ページマッピング管理テーブル1100においてライト先論理ページに結果格納先物理ページを関連付け、物理ページ番号として結果格納先物理ページの番号を登録する(3706)。次にデバイスコントローラ60は、コマンド完了を示す応答をシステムコントローラ20へ送り(3707)、この処理のフローを終了する。
この処理によれば、パリティFMPKのデバイスコントローラ60は、システムコントローラ20からの更新後のデータと、パリティFMPKに格納されている更新前のパリティとから更新後のパリティを算出し、更新後のパリティをFM55へ送信することができる。更に、システムコントローラ20は、パリティFMPKのデバイスコントローラ60に更新後のパリティを生成させ保存させることができる。
次に、パリティ生成ライトコマンドを受けた場合のデバイスコントローラ60の処理の具体例である、パリティ生成ライト処理について説明する。
このパリティ生成ライト処理は、複数ストライプブロック分の転送されたデータを用いてパリティを生成し、このパリティを指定アドレスへ書き込むコマンドである。このパリティ生成ライト処理は例えば、前述の第1フルストライプライト処理及びデータ復旧処理に用いられる。
図38は、パリティ生成ライトコマンドによるデバイスコントローラ60の処理の一例を示す。まずデバイスコントローラ60は、パリティ生成ライトコマンドを受領する(3801)。次にデバイスコントローラ60は、このライトコマンドにより指定された論理アドレスから論理ページ番号を求め、この論理ページ番号の論理ページをライト先論理ページとする(3802)。次にデバイスコントローラ60は、新規に空きページを取得し、取得された物理ページをライト先物理ページとして割り当てる(3803)。次にデバイスコントローラ60は、ライトコマンドにより受領したライトデータをライト先物理ページへ書き込む(3804)。
次にデバイスコントローラ60は、ページマッピング管理テーブル1100においてライト先論理ページにライト先物理ページを関連付け、物理ページ番号としてライト先物理ページの番号を登録する(3805)。次にデバイスコントローラ60は、コマンド完了を示す応答をシステムコントローラ20へ送り(3806)、この処理のフローを終了する。
この処理によれば、パリティFMPKのデバイスコントローラ60は、システムコントローラ20からの更新後のデータから更新後のパリティを算出し、更新後のパリティをパリティFMPKへ書き込むことができる。更に、システムコントローラ20は、パリティFMPKのデバイスコントローラ60に更新後のパリティを生成させ保存させることがでる。
図39は、デバイスコントローラ60による、旧データ破棄処理の一例を示す。まず、デバイスコントローラ60は、システムコントローラ20から旧データ破棄コマンドを受領する(3901)。次に、デバイスコントローラ60は、この旧データ破棄コマンドで指定された論理アドレスから論理ページ番号を求め、この論理ページ番号に対応する旧物理ページ番号をページマッピング管理テーブル1100から削除する(3902)。デバイスコントローラ60は、旧データ破棄コマンドを受領するまで、旧データを無効にしない。つまり、デバイスコントローラ60は、新データをライトした後であっても、パリティが更新される(旧データ破棄コマンドを受領する)まで旧データを確実に保持することができる。このように、パリティが更新されるまで旧データを維持することにより、パリティ更新前に障害が起きた場合であっても、データ復旧が可能となる。また、パリティ更新後は旧データを無効にして消去対象とすることで、旧データによる記憶領域の使用量を削減することができる。
この実施例では、システムコントローラ20がRAID6の制御を行う場合について説明する。
この実施例における計算機システムの構成は、実施例1の計算機システムの構成と同様である。そこで、実施例1との違いについて以下に説明する。
システムコントローラ20は、RAID6の制御を行う。そこで、まずRAID5とRAID6の違いについて説明する。
前述のRAID5をRAID6へ拡張するために、パリティ演算回路25又はパリティ演算回路65は、更に係数付きパリティ演算を行う。ここで、5個のFMPK50が、データD0,D1,D2、パリティP,Qを夫々格納しているとする。Qの生成のための係数としてA0,A1,A2が使用される場合、P,Qは次式により生成される。
P = D0+D1+D2
Q = A0・D0+A1・D1+A2・D2
図40は、Qパリティの生成方法の一例を示す。パリティ演算実施装置は、A0,A1,A2を予めメモリに格納している。Qは、D0,D1,D2,A0,A1,A2から計算される。図中に黒の菱形で示された演算器は、それに付された係数を乗算する。
また、P生成式及びQ生成式を連立方程式として解くことにより、データロスト時に任意のデータ又はパリティを復旧することができる。例えばD0,Pを復旧する場合、次式によりこれらを生成することができる。
D0 = A1/A0・D1+A2/A0D2+1/A0・Q
P = D0+D1+D2
また、例えばD0,D1を復旧する場合、次式によりこれらを生成することができる。
D0 = (A1+A2)/(A0+A1)・D2+A1/(A0+A1)・P
+1/(A0+A1)・Q
D1 = (A0+A2)/(A0+A1)・D2+A0/(A0+A1)・P
+1/(A0+A1)・Q
図41は、D0,D1の復旧方法の一例を示す。に示すように、D0,D1はそれぞれ、D2、P、Qの線形式αD2+βP+γQと表現することが出来る。
ここで係数α、β、γはA0、A1、A2に基づく値である。
パリティ演算実施装置は、A0,A1、A2に基づくα、β、γを予めメモリに格納していても良い。D0は、D2,P,Q,及びA0,A1、A2に基づく値である α、β、γから計算される。
本例はあくまでも概念を示すための一例であり、実際には、処理が高速化されるよう、またメモリ使用量が削減されるような設計がなされる。
次に、パリティ演算実施装置としてデバイスコントローラ60が選択され、ライト方法としてリードモディファイライトが選択された場合のデータ更新処理1404の具体例である、第4リードモディファイライト処理について説明する。
図42は、第4リードモディファイライト処理の一例を示す。図42は、第4リードモディファイライト処理におけるシステムコントローラ20の動作の一例を示す。この例において、FMPK#0,#1,#2,#3,#4は、D0,D1,D2,P,Qを夫々格納している。ここでシステムコントローラ20が、ライトの命令により、D0の旧データを更新するための新データを受けた状態を初期状態とする。以下の説明において、FMPK#0,#1,#2,#3,#4のうち、更新されるデータであるD0を格納しているFMPK#0をデータFMPKと呼ぶことがある。また、FMPK#0,#1,#2,#3,#4のうち、Pを格納しているFMPK#3をPパリティFMPKと呼ぶことがある。また、FMPK#0,#1,#2,#3,#4のうち、Qを格納しているFMPK#4をQパリティFMPKと呼ぶことがある。
まずシステムコントローラ20は、旧データ保持ライトコマンドをD0に対応するFMPK#0(データFMPK)へ発行することにより、新データをFMPK#0へ書き込む(4101)。このコマンドを受けたFMPK#0のデバイスコントローラ60は、システムコントローラ20からの新データをFMPK#0内の旧データの物理ページと異なる物理ページへ書き込む。
次にシステムコントローラ20は、中間パリティリードコマンドをFMPK#0へ発行することにより、FMPK#0から中間パリティを取得する(4102)。このコマンドを受けたFMPK#0のデバイスコントローラ60は、FMPK#0内に格納された旧データと新データから中間パリティを計算し、中間パリティを応答としてシステムコントローラ20へ送る。
次にシステムコントローラ20は、RAID5の場合と同様のパリティ更新ライトコマンドを、Pに対応するFMPK#3(PパリティFMPK)へ発行することにより、中間パリティをFMPK#3へ送信する(4103)。このコマンドを受けたFMPK#3のデバイスコントローラ60は、FMPK#3内の旧パリティとシステムコントローラ20からの中間パリティから新パリティを計算し、新パリティをFMPK#3へ書き込む。
iが0,1,2の何れか一つであって、当該RG内のデータDiをDi_newへ更新する場合の新パリティP_newの計算について説明する。RAID5と同様、パリティ更新ライトコマンドを受けたデバイスコントローラ60は、中間パリティ(Di+Di_new)と旧パリティPとから、P_newを次式により計算する。
P_new = P+(Di+Di_new)
データFMPKのデバイスコントローラ60は、中間パリティリードコマンドに応じて(Di+Di_new)を計算する。PパリティFMPKのデバイスコントローラ60は、パリティ更新ライトコマンドに応じてP+(Di+Di_new)を計算する。
次にシステムコントローラ20は、Qを更新するためのパリティ更新コマンドであるQパリティ更新ライトコマンドをQに対応するFMPK#4へ発行することにより、中間パリティをFMPK#4(QパリティFMPK)へ転送し(4104)、この処理のフローを終了する。このコマンドを受けたFMPK#4のデバイスコントローラ60は、FMPK#4内の旧パリティとシステムコントローラ20からの中間パリティと係数から新パリティを計算し、新パリティをFMPK#3へ書き込む。
この処理によれば、一つのストライプブロックのデータの更新におけるシステムコントローラ20とデバイスコントローラ60の間のデータ転送は次のようになる。
(1)更新後のデータがシステムコントローラ20からデータFMPKのデバイスコントローラ60へ転送される。
(2)中間パリティがデータFMPKのデバイスコントローラ60からシステムコントローラ20へ転送される。
(3)中間パリティがシステムコントローラ20からPパリティFMPKのデバイスコントローラ60とQパリティFMPKのデバイスコントローラ60とへ転送される。
これにより、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。
Qパリティ更新ライトコマンドを受けたデバイスコントローラ60の処理は、パリティ更新ライトコマンドの場合と比較して、予めデバイスコントローラ60に設定された係数Aiを用いる点が異なる。当該RG内のデータDiをDi_newへ更新する場合、Qパリティ更新ライトコマンドを受けたデバイスコントローラ60は、中間パリティ(Di+Di_new)と旧パリティQとAiとから、新パリティQ_newを次式により計算する。
Q_new = Q+Ai・(Di+Di_new)
データFMPKのデバイスコントローラ60は、中間パリティリードコマンドに応じて(Di+Di_new)を計算する。QパリティFMPKのデバイスコントローラ60は、Qパリティ更新ライトコマンドに応じてQ+Ai・(Di+Di_new)を計算する。
パリティ更新ライトコマンドによれば、PパリティFMPKのデバイスコントローラ60は、システムコントローラ20からの更新後のデータと、PパリティFMPKに格納されている更新前のPパリティとから更新後のPパリティを算出し、更新後のPパリティをPパリティFMPKへ書き込むことができる。更に、システムコントローラ20は、PパリティFMPKのデバイスコントローラ60に更新後のPパリティを生成させ保存させることができる。
Qパリティ更新ライトコマンドによれば、QパリティFMPKのデバイスコントローラ60は、システムコントローラ20からの更新後のデータと、QパリティFMPKに格納されている更新前のQパリティと、所定の係数から更新後のQパリティを算出し、更新後のQパリティをQパリティFMPKへ書き込むことができる。更に、システムコントローラ20は、QパリティFMPKのデバイスコントローラ60に更新後のQパリティを生成させ保存させることができる。
この実施例では、システムコントローラ20がパリティ演算機能を有していない場合のストレージシステム30の適用例である、計算機システムについて説明する。
図44は、実施例3に係る計算機システムの構成の一例を示す。この実施例の計算機システムにおいて、ストレージシステム30の要素と同一の符号が付された要素は、ストレージシステム30の要素と同一物又は相当物を示す。この実施例の計算機システムは、ホスト計算機41aと、ホスト計算機41bと、ホスト計算機41bに接続された複数のFMPK50とを有する。ホスト計算機41aとホスト計算機41bとは、例えば、LAN(Local Area Network)2を介して接続される。
ホスト計算機41aは、ホストコントローラ42aと、ホストコントローラ42aに接続されている複数のFMPK50とを有する。ホストコントローラ42aは、LAN2等の通信ネットワークに接続するためのNIC(Network Interface Card)13と、メモリ12と、CPU11と、バッファ26とを有する。
ホスト計算機41bは、LAN2等の通信ネットワークに接続するためのNIC13と、FMPK50に接続するためのHBA(Host Bus Adapter)15と、メモリ12と、CPU11と、バッファ26とを有する。
ホストコントローラ42a及びホスト計算機41bにおいて、メモリ12には、FMPK50を制御するためのプログラム及び各種情報が記憶される。CPU11は、メモリ12に記憶された情報に基づき、プログラムを実行することにより各種機能を実現させる。ホストコントローラ42aとホスト計算機41bの夫々は、自身に接続されている複数のFMPK50を用いるRAIDの制御を行っても良い。
ホストコントローラ42a及びホスト計算機41bの一方は、LAN2を介して他方へIO要求を行っても良いし、自身のFMPK50へIO要求を行っても良い。
この実施例において、システムコントローラ20は、ホストコントローラ42aとホスト計算機41bの何れの形態であっても良い。
ホストコントローラ42a及びホスト計算機41bの夫々は、パリティ演算実施装置の決定方法1300におけるケース#3又はケース#4に該当する。
次に、システムコントローラ20がパリティ演算機能を有している場合のストレージシステム30の適用例である、第3計算機システムについて説明する。
図45は、実施例4に係る計算機システムの構成の一例を示す。この実施例の計算機システムにおいて、実施例3の計算機システムの要素と同一の符号が付された要素は、実施例3の計算機システムの要素と同一物又は相当物を示す。この実施例の計算機システムは、ホスト計算機41cと、ホスト計算機41dと、ホスト計算機41dに接続された複数のFMPK50とを有する。ホスト計算機41cとホスト計算機41dとは、通信ネットワーク、例えば、LAN2を介して接続される。
ホスト計算機41cは、ホストコントローラ42cと、ホストコントローラ42cに接続されている複数のFMPK50とを有する。ホストコントローラ42cは、ホストコントローラ42aの要素に加えて、パリティ演算回路25を有する。
ホスト計算機41dは、ホスト計算機41bの要素に加えて、パリティ演算回路25を有する。
ホストコントローラ42c及びホスト計算機41dにおいて、メモリ12には、FMPK50を制御するためのプログラム及び各種情報が記憶される。CPU11は、メモリ12に記憶された情報に基づき、プログラムを実行することにより各種機能を実現させる。ホストコントローラ42cとホスト計算機41dの夫々は、自身に接続されている複数のFMPK50を用いるRAIDの制御を行っても良い。
ホストコントローラ42c及びホスト計算機41dの一方は、LAN2を介して他方へIO要求を行っても良いし、自身のFMPK50のデバイスコントローラ60へIO要求を行っても良い。
ホストコントローラ42a及びホスト計算機41bの夫々は、パリティ演算実施装置の決定方法1300におけるケース#1又はケース#2に該当する。
この実施例において、システムコントローラ20は、ホストコントローラ42cとホスト計算機41dの何れの形態であっても良い。
なお、計算機システムは、前述の実施例の何れかの要素の組み合わせであっても良い。また、一つの計算機システム内に、パリティ演算機能を有しているシステムコントローラ20とパリティ演算機能を有していないシステムコントローラ20とが混在していても良い。
以上に述べられた各実施例によれば、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えることができる。これにより、ストレージシステム30の速度を向上させることができる。データ転送は例えば、データの転送回数や転送量等で表される。
また、以上に述べられた各実施例によれば、システムコントローラ20とデバイスコントローラ60の間のデータ転送を抑えると共に、デバイスコントローラ60における揮発メモリの使用量を削減することができる。
また、システムコントローラ20の動作における各工程の順序は、交換されることがある。例えば、1402と1403は交換可能である。また、デバイスコントローラ60の動作における各工程の順序は、交換されることがある。例えば、3703と3704は交換可能である。
10:ホスト計算機、20:システムコントローラ、25:パリティ演算回路、26:バッファ、30:ストレージシステム、41a,41b,41c,41d:ホスト計算機42a,42c:ホストコントローラ、50:FMPK(フラッシュメモリパッケージ)、55:FM(フラッシュメモリ)、60:デバイスコントローラ、65:パリティ演算回路、66:バッファ

Claims (18)

  1. それぞれが、追記型メモリである複数の不揮発メモリチップと、前記複数の不揮発メモリチップに接続されるデバイスコントローラとを備える、複数の記憶デバイスと、
    前記複数の記憶デバイスに接続され、旧データを格納する第1の記憶デバイスと旧パリティを格納する第2の記憶デバイスとを含む前記複数の記憶デバイスをRAIDグループとして制御するよう構成されるシステムコントローラと、
    を有
    前記第1の記憶デバイスの第1のデバイスコントローラは、前記第1の記憶デバイスの前記複数の不揮発メモリチップの物理記憶領域に格納された前記旧データと前記旧データを更新する新データとを有効な状態に維持したまま、前記旧データ前記新データとに基づき、第1の中間パリティを生成
    前記システムコントローラは、前記第2の記憶デバイスに、第1の新パリティの生成を指示するために、パリティ更新コマンド及び前記第1の中間パリティを送信し、
    前記第2の記憶デバイスの第2のデバイスコントローラは前記パリティ更新コマンドに従って、前記第1の中間パリティと、前記第2の記憶デバイスに格納された前記旧パリティとに基づき、前記第1の新パリティを生成
    前記システムコントローラは、前記第2の記憶デバイスから前記パリティ更新コマンドに対する完了応答を受信すると、前記第1の記憶デバイスに前記旧データを無効化するための無効化コマンドを送信し、
    前記第1のデバイスコントローラは前記無効化コマンドの受領に応じて、前記旧データを無効化する
    ことを特徴とする、システム
  2. 前記物理記憶領域は、前記不揮発メモリチップの物理ページであり、前記第1のデバイスコントローラは、前記物理ページを論理ページに関連付けるページマッピング管理テーブルを有し、
    前記第1のデバイスコントローラは、前記ページマッピング管理テーブル上で、前記旧データを格納した第1の物理ページを第1の論理ページに関連付けており、
    前記第1のデバイスコントローラは、
    前記第1の記憶デバイスの前記不揮発メモリチップに前記新データを格納する際、前記旧データと前記新データとを有効な状態に維持するために、前記ページマッピング管理テーブル上で前記第1の物理ページの前記第1の論理ページへの関連付けを維持したまま、前記新データが格納され前記第1の物理ページとは異なる第2の物理ページを、前記第1の論理ページへ関連付け、
    前記旧データを無効化するために、前記ページマッピング管理テーブルから、前記第1の物理ページの情報を削除する、
    ことを特徴とする、請求項1に記載のシステム。
  3. 前記第1のデバイスコントローラは、
    前記ページマッピング管理テーブルから前記第1の物理ページの情報を削除した後に、前記旧データを削除する、
    ことを特徴とする、請求項2記載のシステム。
  4. 前記システムコントローラが前記完了応答を前記第2の記憶デバイスから所定時間内に受信しない場合、前記システムは、
    前記旧データと前記新データに基づき、前記第1のデバイスコントローラにより第2の中間パリティを生成し、
    前記第2の中間パリティを前記第1のデバイスコントローラから前記第2のデバイスコントローラへ転送し、
    前記第2の中間パリティと前記旧パリティに基づき、前記第2のデバイスコントローラにより第2の新パリティを生成する、
    ことを特徴とする、請求項1記載のシステム。
  5. それぞれが、追記型メモリである複数の不揮発メモリチップと、前記複数の不揮発メモリチップに接続されるデバイスコントローラとを備える、複数の記憶デバイスと、
    前記複数の記憶デバイスに接続され、旧データを格納する第1の記憶デバイスと旧パリティを格納する第2の記憶デバイスとを含む前記複数の記憶デバイスをRAIDグループとして制御するよう構成されるシステムコントローラと、
    を有し、
    前記第1の記憶デバイスの第1のデバイスコントローラは、
    前記第1の記憶デバイスの前記複数の不揮発メモリチップの物理記憶領域に格納されていた前記旧データを有効な状態に維持したまま、前記システムコントローラから受信する新データを格納し、
    前記システムコントローラから受信した前記新データと前記物理記憶領域に格納された前記旧データに基づき、前記第2の記憶デバイスに転送されるべき第1の中間パリティを生成し、
    前記第2の記憶デバイスに格納されていた前記旧パリティと前記第1の中間パリティに基づき第1の新パリティが生成されたと認識された後に前記システムコントローラから送信されてくる、前記旧データを無効化するための無効化コマンドの受領に応じて、前記旧データを無効化する、
    ことを特徴とする、システム。
  6. 前記第2の記憶デバイスは、前記第1の新パリティの生成後に、前記システムコントローラへ完了応答を送信し、
    前記システムコントローラは、前記完了応答の受領に応じて、前記第1の記憶デバイスへ前記無効化コマンドを送信する、
    ことを特徴とする、請求項5に記載のシステム。
  7. 前記物理記憶領域は、前記不揮発メモリチップの物理ページであり、前記第1のデバイスコントローラは、前記物理ページを論理ページに関連付けるページマッピング管理テーブルを有し、
    前記第1のデバイスコントローラは、前記ページマッピング管理テーブル上で、前記旧データを格納した第1の物理ページを第1の論理ページに関連付けており、
    前記第1のデバイスコントローラは、
    前記第1の記憶デバイスの前記不揮発メモリチップに前記新データを格納する際、前記旧データと前記新データとを有効な状態に維持するために、前記ページマッピング管理テーブル上で前記第1の物理ページの前記第1の論理ページへの関連付けを維持したまま、前記新データが格納され前記第1の物理ページとは異なる第2の物理ページを、前記第1の論理ページへ関連付け、
    前記旧データを無効化するために、前記ページマッピング管理テーブルから、前記第1の物理ページの情報を削除する、
    ことを特徴とする、請求項6に記載のシステム。
  8. 前記第1のデバイスコントローラは、
    前記ページマッピング管理テーブルから前記第1の物理ページの情報を削除した後に、前記旧データを削除する、
    ことを特徴とする、請求項7記載のシステム。
  9. 前記システムコントローラが前記完了応答を前記第2の記憶デバイスから所定時間内に受信しない場合、前記システムは、
    前記旧データと前記新データに基づき、前記第1のデバイスコントローラにより第2の中間パリティを生成し、
    前記第2の中間パリティを前記第1のデバイスコントローラから前記第2の記憶デバイスの第2のデバイスコントローラへ転送し、
    前記第2の中間パリティと前記旧パリティに基づき、前記第2のデバイスコントローラにより第2の新パリティを生成する、
    ことを特徴とする、請求項6記載のシステム。
  10. それぞれが、追記型メモリである複数の不揮発メモリチップと、前記複数の不揮発メモリチップに接続されるデバイスコントローラとを備える、複数の記憶デバイスと、
    前記複数の記憶デバイスに接続され、旧データを格納する第1の記憶デバイスと旧パリティを格納する第2の記憶デバイスとを含む前記複数の記憶デバイスをRAIDグループとして制御するよう構成されるシステムコントローラと、
    を有し、
    前記第1の記憶デバイスの第1のデバイスコントローラは、前記第1の記憶デバイスの前記複数の不揮発メモリチップの物理記憶領域に格納された前記旧データと前記旧データを更新する新データとを有効な状態に維持したまま、前記旧データ前記新データとに基づき、第1の中間パリティを生成
    前記第2の記憶デバイスの第2のデバイスコントローラは、
    前記第1のデバイスコントローラで生成された前記第1の中間パリティと、前記第2の記憶デバイスに格納された前記旧パリティに基づき、第1の新パリティを生成し、
    前記第2の記憶デバイスから前記システムコントローラへ、完了応答を送信する、
    ことを特徴とする、システム。
  11. 前記システムコントローラは、前記完了応答の受領に応じて、前記第1の記憶デバイスへ前記旧データを無効化するための無効化コマンドを送信し、
    前記第1の記憶デバイスは、前記無効化コマンドの受領に応じて前記旧データを無効化する、
    ことを特徴とする、請求項10に記載のシステム。
  12. 前記物理記憶領域は、前記不揮発メモリチップの物理ページであり、前記第1のデバイスコントローラは、前記物理ページを論理ページに関連付けるページマッピング管理テーブルを有し、
    前記第1のデバイスコントローラは、前記ページマッピング管理テーブル上で、前記旧データを格納した第1の物理ページを第1の論理ページに関連付けており、
    前記第1のデバイスコントローラは、
    前記第1の記憶デバイスの前記不揮発メモリチップに前記新データを格納する際、前記旧データと前記新データとを有効な状態に維持するために、前記ページマッピング管理テーブル上で前記第1の物理ページの前記第1の論理ページへの関連付けを維持したまま、前記新データが格納され前記第1の物理ページとは異なる第2の物理ページを、前記第1の論理ページへ関連付け、
    前記旧データを無効化するために、前記ページマッピング管理テーブルから、前記第1の物理ページの情報を削除する、
    ことを特徴とする、請求項11に記載のシステム。
  13. 前記第1のデバイスコントローラは、
    前記ページマッピング管理テーブルから前記第1の物理ページの情報を削除した後に、前記旧データを削除する、
    ことを特徴とする、請求項12記載のシステム。
  14. 前記システムコントローラが前記完了応答を前記第2の記憶デバイスから所定時間内に受信しない場合、前記システムは、
    前記旧データと前記新データに基づき、前記第1のデバイスコントローラにより第2の中間パリティを生成し、
    前記第2の中間パリティを前記第1のデバイスコントローラから前記第2のデバイスコントローラへ転送し、
    前記第2の中間パリティと前記旧パリティに基づき、前記第2のデバイスコントローラにより第2の新パリティを生成する、
    ことを特徴とする、請求項11記載のシステム。
  15. それぞれが、追記型メモリである複数の不揮発メモリチップと、前記複数の不揮発メモリチップに接続されるデバイスコントローラとを備える、複数の記憶デバイスと、
    前記複数の記憶デバイスに接続され、旧データを格納する第1の記憶デバイスと旧パリティを格納する第2の記憶デバイスとを含む前記複数の記憶デバイスをRAIDグループとして制御するよう構成されるシステムコントローラと、
    を有し、
    前記システムコントローラまたは前記複数の記憶デバイスは、パリティを生成するパリティ演算部を有し、
    前記第1の記憶デバイス及び前記第2の記憶デバイスがパリティ演算部を有する場合、
    前記第1の記憶デバイスの第1のデバイスコントローラは、前記第1の記憶デバイスの前記複数の不揮発メモリチップの物理記憶領域に格納された前記旧データと前記旧データを更新する新データとを有効な状態に維持したまま、前記旧データと前記新データとに基づき第1の中間パリティを生成し、
    前記システムコントローラは、前記第2の記憶デバイスに、第1の新パリティの生成を指示するために、パリティ更新コマンド及び前記第1の中間パリティを送信し、
    前記第2の記憶デバイスの第2のデバイスコントローラは前記パリティ更新コマンドに従って、前記第1の中間パリティと、前記第2の記憶デバイスに格納された前記旧パリティとに基づき、前記第1の新パリティを生成し、
    前記システムコントローラは、前記第2の記憶デバイスから前記パリティ更新コマンドに対する完了応答を受信すると、前記第1の記憶デバイスに前記旧データを無効化するための無効化コマンドを送信し、
    前記第1のデバイスコントローラは前記無効化コマンドの受領に応じて、前記旧データを無効化し、
    前記第1のデバイスコントローラ及び前記第2のデバイスコントローラが前記パリティ演算部を有さず、前記システムコントローラが前記パリティ演算部を有する場合、
    前記システムコントローラが第3の新パリティを生成する、
    ことを特徴とする、システム。
  16. 前記物理記憶領域は、前記不揮発メモリチップの物理ページであり、前記第1のデバイスコントローラは、前記物理ページを論理ページに関連付けるページマッピング管理テーブルを有し、
    前記第1のデバイスコントローラは、前記ページマッピング管理テーブル上で、前記旧データを格納した第1の物理ページを第1の論理ページに関連付けており、
    前記第1のデバイスコントローラは、
    前記第1の記憶デバイスの前記不揮発メモリチップに前記新データを格納する際、前記旧データと前記新データとを有効な状態に維持するために、前記ページマッピング管理テーブル上で前記第1の物理ページの前記第1の論理ページへの関連付けを維持したまま、前記新データが格納され前記第1の物理ページとは異なる第2の物理ページを、前記第1の論理ページへ関連付け、
    前記旧データを無効化するために、前記ページマッピング管理テーブルから、前記第1の物理ページの情報を削除する、
    ことを特徴とする、請求項15に記載のシステム。
  17. 前記第1のデバイスコントローラは、
    前記ページマッピング管理テーブルから前記第1の物理ページの情報を削除した後に、前記旧データを削除する、
    ことを特徴とする、請求項16記載のシステム。
  18. 前記システムコントローラが前記完了応答を前記第2の記憶デバイスから所定時間内に受信しない場合、前記システムは、
    前記第1のデバイスコントローラにより、前記旧データと前記新データとから第2の中間パリティを生成し、
    前記第2の中間パリティを前記第1のデバイスコントローラから前記第2のデバイスコントローラへ転送し、
    前記第2のデバイスコントローラにより、前記第2の中間パリティと前記旧パリティとから第2の新パリティを生成する、
    ことを特徴とする、請求項15記載のシステム。
JP2014550959A 2012-04-27 2012-04-27 ストレージシステム Expired - Fee Related JP5937697B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/002937 WO2013160972A1 (en) 2012-04-27 2012-04-27 Storage system and storage apparatus

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2016095199A Division JP6163588B2 (ja) 2016-05-11 2016-05-11 ストレージシステム

Publications (2)

Publication Number Publication Date
JP2015515033A JP2015515033A (ja) 2015-05-21
JP5937697B2 true JP5937697B2 (ja) 2016-06-22

Family

ID=49478391

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014550959A Expired - Fee Related JP5937697B2 (ja) 2012-04-27 2012-04-27 ストレージシステム

Country Status (6)

Country Link
US (2) US9684591B2 (ja)
EP (2) EP2831735A1 (ja)
JP (1) JP5937697B2 (ja)
CN (1) CN104246707B (ja)
IN (1) IN2014DN08596A (ja)
WO (1) WO2013160972A1 (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2823398A1 (en) * 2012-04-27 2015-01-14 Hitachi, Ltd. Storage system and storage control apparatus
US9003270B2 (en) * 2012-06-04 2015-04-07 Marvell World Trade Ltd. Methods and apparatus for temporarily storing parity information for data stored in a storage device
US9772787B2 (en) * 2014-03-31 2017-09-26 Amazon Technologies, Inc. File storage using variable stripe sizes
US10067833B2 (en) * 2014-07-31 2018-09-04 Hitachi, Ltd. Storage system
US20160103478A1 (en) * 2014-10-08 2016-04-14 Kabushiki Kaisha Toshiba Memory system and memory controller
TWI556254B (zh) * 2014-10-14 2016-11-01 慧榮科技股份有限公司 資料儲存裝置及其資料存取方法
KR20160051367A (ko) * 2014-11-03 2016-05-11 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
JP6464768B2 (ja) * 2015-01-21 2019-02-06 富士ゼロックス株式会社 応答装置及びプログラム
US10063263B2 (en) * 2015-05-20 2018-08-28 International Business Machines Corporation Extended error correction coding data storage
CN104994135B (zh) * 2015-05-25 2018-09-21 华为技术有限公司 存储系统中融合san及nas存储架构的方法及装置
JP6328335B2 (ja) * 2015-06-01 2018-05-23 株式会社日立製作所 ストレージ装置及びその制御方法
TWI553477B (zh) * 2015-06-12 2016-10-11 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
KR20170004693A (ko) * 2015-07-03 2017-01-11 에스케이하이닉스 주식회사 메모리 장치의 컨트롤러 및 그 동작 방법
WO2017212514A1 (ja) * 2016-06-06 2017-12-14 株式会社日立製作所 ストレージシステム及び記憶制御方法
WO2018051505A1 (ja) * 2016-09-16 2018-03-22 株式会社日立製作所 ストレージシステム
KR20180040767A (ko) * 2016-10-12 2018-04-23 삼성전자주식회사 Raid 방식으로 데이터를 저장하는 스토리지 장치
WO2018189858A1 (ja) * 2017-04-13 2018-10-18 株式会社日立製作所 ストレージシステム
US11301432B2 (en) * 2017-06-08 2022-04-12 Hitachi Vantara Llc Fast recall for geographically distributed object data
WO2018229944A1 (ja) * 2017-06-15 2018-12-20 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
CN110008145B (zh) * 2018-01-05 2022-10-21 群联电子股份有限公司 数据保护方法、存储器控制电路单元与存储器存储装置
CN109634771A (zh) * 2018-10-31 2019-04-16 华为技术有限公司 一种数据保护方法、装置及系统
JP6940536B2 (ja) * 2019-02-04 2021-09-29 Necプラットフォームズ株式会社 ストレージ装置、ストレージシステム、ストレージ制御方法、及び、ストレージ制御プログラム
KR20200108650A (ko) * 2019-03-11 2020-09-21 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
KR20210034711A (ko) * 2019-09-20 2021-03-31 삼성전자주식회사 메모리 셀의 신뢰성에 따라 패리티 비트들을 선택적으로 생성하는 저장 장치 및 그것의 동작 방법
US10915400B1 (en) * 2019-11-08 2021-02-09 Micron Technology, Inc. Dynamic over provisioning allocation for purposed blocks
US20230229556A1 (en) * 2022-01-19 2023-07-20 Micron Technology, Inc. Parity cache for raid reliability, accessibility, and serviceability of a memory device
US11822429B2 (en) * 2022-04-08 2023-11-21 Dell Products L.P. Storage device raid data write intermediate parity system

Family Cites Families (20)

* 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 株式会社日立製作所 記憶装置および記憶装置システム
JP2857288B2 (ja) * 1992-10-08 1999-02-17 富士通株式会社 ディスクアレイ装置
US5583876A (en) * 1993-10-05 1996-12-10 Hitachi, Ltd. Disk array device and method of updating error correction codes by collectively writing new error correction code at sequentially accessible locations
JPH07261946A (ja) * 1994-03-22 1995-10-13 Hitachi Ltd アレイ型記憶装置
JP3661205B2 (ja) 1994-09-09 2005-06-15 株式会社日立製作所 ディスクアレイシステムおよびディスクアレイシステムのパリティデータの生成方法
JP3713788B2 (ja) 1996-02-28 2005-11-09 株式会社日立製作所 記憶装置および記憶装置システム
JP3618529B2 (ja) 1997-11-04 2005-02-09 富士通株式会社 ディスクアレイ装置
US6665773B1 (en) 2000-12-26 2003-12-16 Lsi Logic Corporation Simple and scalable RAID XOR assist logic with overlapped operations
JP4054182B2 (ja) * 2001-09-25 2008-02-27 株式会社東芝 仮想的なraid装置を有するクラスタシステム及び同システム用のコンピュータ
JP4308780B2 (ja) * 2004-01-30 2009-08-05 パナソニック株式会社 半導体メモリ装置、メモリコントローラ及びデータ記録方法
US7441146B2 (en) 2005-06-10 2008-10-21 Intel Corporation RAID write completion apparatus, systems, and methods
US7831768B2 (en) 2006-11-03 2010-11-09 Hewlett-Packard Development Company, L.P. Method and apparatus for writing data to a disk array
US8151060B2 (en) 2006-11-28 2012-04-03 Hitachi, Ltd. Semiconductor memory system having a snapshot function
JP2008204041A (ja) * 2007-02-19 2008-09-04 Hitachi Ltd ストレージ装置及びデータ配置制御方法
WO2010137178A1 (en) * 2009-05-25 2010-12-02 Hitachi,Ltd. Storage subsystem
US8103903B2 (en) * 2010-02-22 2012-01-24 International Business Machines Corporation Read-modify-write protocol for maintaining parity coherency in a write-back distributed redundancy data storage system
JP5388976B2 (ja) 2010-09-22 2014-01-15 株式会社東芝 半導体記憶制御装置
WO2012053085A1 (ja) 2010-10-21 2012-04-26 富士通株式会社 ストレージ制御装置およびストレージ制御方法
EP2823398A1 (en) 2012-04-27 2015-01-14 Hitachi, Ltd. Storage system and storage control apparatus

Also Published As

Publication number Publication date
IN2014DN08596A (ja) 2015-05-22
US9684591B2 (en) 2017-06-20
WO2013160972A1 (en) 2013-10-31
US8819338B2 (en) 2014-08-26
US20130290629A1 (en) 2013-10-31
EP2942713B1 (en) 2018-11-28
CN104246707B (zh) 2018-03-27
US20130290613A1 (en) 2013-10-31
EP2831735A1 (en) 2015-02-04
CN104246707A (zh) 2014-12-24
JP2015515033A (ja) 2015-05-21
EP2942713A1 (en) 2015-11-11

Similar Documents

Publication Publication Date Title
JP5937697B2 (ja) ストレージシステム
US11175984B1 (en) Erasure coding techniques for flash memory
US9483404B2 (en) Write admittance policy for a memory cache
US20190073296A1 (en) Systems and Methods for Persistent Address Space Management
US9251052B2 (en) Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer
JP6007332B2 (ja) ストレージシステム及びデータライト方法
US8578127B2 (en) Apparatus, system, and method for allocating storage
JP6328335B2 (ja) ストレージ装置及びその制御方法
US20150212752A1 (en) Storage system redundant array of solid state disk array
US20150161003A1 (en) Storage system and storage control apparatus
US20150378613A1 (en) Storage device
JP6062060B2 (ja) ストレージ装置、ストレージシステム、及びストレージ装置制御方法
US20130346689A1 (en) Storage system and management method of control information therein
US9606734B2 (en) Two-level hierarchical log structured array architecture using coordinated garbage collection for flash arrays
JP2012505441A (ja) ストレージ装置およびそのデータ制御方法
CN112346658B (zh) 在具有高速缓存体系结构的存储设备中提高数据热量跟踪分辨率
JP6163588B2 (ja) ストレージシステム
US8935488B2 (en) Storage system and storage control method
JP6817340B2 (ja) 計算機
JP6605762B2 (ja) 記憶ドライブの故障により消失したデータを復元する装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151006

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151204

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160512

R150 Certificate of patent or registration of utility model

Ref document number: 5937697

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees