JP2016503927A - ストレージシステム及びキャッシュコントロール方法 - Google Patents

ストレージシステム及びキャッシュコントロール方法 Download PDF

Info

Publication number
JP2016503927A
JP2016503927A JP2015551259A JP2015551259A JP2016503927A JP 2016503927 A JP2016503927 A JP 2016503927A JP 2015551259 A JP2015551259 A JP 2015551259A JP 2015551259 A JP2015551259 A JP 2015551259A JP 2016503927 A JP2016503927 A JP 2016503927A
Authority
JP
Japan
Prior art keywords
data
storage
cache
attribute information
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015551259A
Other languages
English (en)
Other versions
JP6017065B2 (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 JP2016503927A publication Critical patent/JP2016503927A/ja
Application granted granted Critical
Publication of JP6017065B2 publication Critical patent/JP6017065B2/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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
    • 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/1009Cache, i.e. caches used in RAID system with parity
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】不揮発性半導体メモリをキャッシュメモリとして使用する。【解決手段】キャッシュメモリは、キャッシュコントローラと、記憶媒体として不揮発性半導体メモリとを有する。不揮発性半導体メモリは、データの消去単位である複数のブロックを有し、各ブロックは、データの書き込み及び読み出しの単位である複数のページを有する。キャッシュコントローラは、データとデータの属性情報とを受信し、受信した属性情報と、複数のブロックに格納されているデータの属性情報とに基づいて、受信したデータを格納する格納先ブロックを選択し、選択した格納先ブロック内のページに、受信したデータを書き込む。【選択図】図1

Description

本発明は、ストレージシステム及びキャッシュコントロール方法の技術に関する。
ストレージシステムは、RAID(Redundant Array of Independent Disks)によって構成された複数の記憶デバイスを管理及び制御する。このようなストレージシステムは、複数の記憶デバイスの記憶領域を、論理ボリュームとして、ホストコンピュータに提供することができる。
近年、記憶媒体としてNAND型フラッシュメモリを用いた記憶デバイス(以下、フラッシュストレージ)が普及している。例えば、SSD(Solid State Device)である。一般的に、フラッシュストレージは、論理ボリュームの基とされるデータの最終記憶領域である記憶デバイスとして使用される。また、最近では、フラッシュストレージの高速性を活かして、ストレージシステムのキャッシュメモリとしても使用されている。
ここで、NAND型フラッシュメモリは、次のような特性を有する。NAND型フラッシュメモリは、不揮発性半導体メモリであって、データ格納領域として複数のブロックから構成されており、各ブロックは複数のページから構成されている。NAND型フラッシュメモリでは、ページ単位で、データが書き込み及び読み出しされる。しかし、NAND型フラッシュメモリは、データを上書きすること(データを記憶しているページに新たにデータを書き込むこと)ができない。したがって、NAND型フラッシュメモリにおける書き込み先のページは、予め消去されていなければならない。このため、格納済みのデータを更新する場合は、NAND型フラッシュメモリは、別の消去済みのページ(以降、空きページ)に、更新データを有効なデータとして格納し、更新前のデータを無効なデータとして管理する。また、NAND型フラッシュメモリは、複数のページから構成されているブロック単位でしかデータを消去できない。NAND型フラッシュメモリは、その特性上、ブロック毎に消去できる回数に制限がある。この消去の回数の制限を超えると、そのブロックにはデータを格納することができなくなる。このため、フラッシュストレージには寿命がある。
上記の特性より、空きページが少なくなるとデータを書き込めなくなるため、無効なデータを消去して空きページを作成する必要があるが、ブロック単位でしかデータを消去することができない。このため、無効なデータを消去するためには、有効なデータを別のブロックにコピーしてから、ブロック内のデータを消去する必要がある。この処理はリクラメーションと呼ばれる。リクラメーションによるコピー処理が発生すると、その負荷によりリード/ライト性能が低下する。また、別のページへのデータの書き込みが発生し、コピー元ブロック内のデータの消去につながるため、フラッシュメモリの劣化の原因となる。
特許文献1には、ストレージコントローラが最終格納領域であるフラッシュストレージにデータを格納する際、そのデータの更新頻度に関する情報を通知し、フラッシュストレージが更新頻度の高いデータを消去回数の少ないブロックに格納することで消去回数を平準化し、フラッシュストレージの長寿命化を図る技術が開示されている。
WO2012/137242
キャッシュメモリは、最終記憶領域よりも高速性が求められる。また、キャッシュメモリ上では、最終記憶領域よりも頻繁にデータの更新が発生する。このため、NAND型フラッシュメモリのようなフラッシュストレージをキャッシュメモリとして用いるとフラッシュストレージは劣化しやすく、フラッシュストレージは短期間で寿命に到達してしまうおそれがある。よって、フラッシュストレージをキャッシュメモリとして用いる場合、リクラメーションなどの内部制御にともなうコピー処理による性能低下やフラッシュメモリの劣化を抑制する必要がある。
特許文献1には、更新頻度を通知することは開示されているが、キャッシュメモリの制御に関する情報を用いることは開示されていない。
キャッシュメモリは、データを一時的に格納するために用いられるため、格納されたデータはいずれ消去される。このため、フラッシュストレージを最終記憶領域として用いる場合にはない、キャッシュメモリ特有の制御情報が存在する。本発明の目的は、キャッシュメモリ特有の制御情報を用いて、フラッシュストレージをキャッシュメモリとして使用した場合の内部制御を効率化することである。
ストレージシステムは、データを格納する複数の記憶デバイスと、プロセッサ及び複数の記憶デバイスに格納されるデータが一時的に格納されるキャッシュメモリを有するストレージコントローラと、を有する。キャッシュメモリは、記憶媒体として不揮発性半導体メモリを有し、且つ、不揮発性半導体メモリに接続されたキャッシュコントローラを有する。不揮発性半導体メモリは、複数のブロックを有する。複数のブロックのそれぞれは、データの消去単位であり、且つ、複数のページを有する。複数のページのそれぞれは、データの書き込み及び読み出しの単位である。プロセッサは、キャッシュメモリに、データとそのデータがキャッシュメモリに存在する期間に関連する情報を含む属性情報とを送信する。キャッシュコントローラは、プロセッサからデータと属性情報とを受信し、その受信した属性情報と複数のブロックに格納されているデータの属性情報とに基づいて、その受信したデータを格納する格納先ブロックを選択し、選択した格納先ブロック内のページにその受信したデータを書き込む。
本発明によれば、キャッシュメモリ特有の制御情報を用いて、フラッシュストレージをキャッシュメモリとして使用した場合の内部制御を効率化することができる。
データの書き込み処理の概要を示す。 ストレージシステムの全体構成を示す。 キャッシュ用フラッシュストレージの内部構成を示す。 ディスクコントローラのメモリに格納されるプログラム及び情報の例を示す。 ディスクコントローラの有するキャッシュステータス情報の例を示す。 キャッシュ用フラッシュストレージのメモリに格納されるプログラム及び情報の例を示す。 キャッシュ用フラッシュストレージの有するキャッシュステータス情報の例を示す。 論理アドレスと物理アドレスとの対応関係の一例を示す。 キャッシュ用フラッシュストレージにおける書き込み処理のフローチャートの例を示す。 キャッシュ用フラッシュストレージ116の書き込み処理時におけるページ情報の例を示す。 或る時点におけるページ情報の例を示す。 書き込み処理が発生した後の時点におけるページ情報の例を示す。 有効データの退避処理を行った後の時点におけるページ情報の例を示す。 全てが無効ページとなったブロックを消去した後のページ情報の例を示す。 RAID5によるデータの上書き更新処理の概要を示す。 ディスクコントローラが、ホストから発行されたデータをキャッシュ用フラッシュストレージに書き込む処理のフローチャートの例を示す。 パリティ生成処理のフローチャートの例を示す。 キャッシュ用フラッシュストレージに格納された新データと新パリティをディスクに書き込む処理のフローチャートの例を示す。 或る時点におけるページ情報の例を示す。 パリティ生成処理の或る時点におけるページ情報の例を示す。 或る時点におけるページ情報の例を示す。 パリティ生成処理の或る時点におけるページ情報の例を示す。 ページ毎の属性情報を有するページ情報の例を示す。 ページ毎の属性情報を利用したデータ処理のフローチャートの例を示す。 キャッシュ用フラッシュストレージがデータを格納する別の例を示す。
以下、フラッシュメモリを記憶媒体とする記憶デバイスをキャッシュメモリとして用いたストレージシステムの一実施形態について、図面を参照しながら説明する。
前述の通り、キャッシュメモリは、データを一時的に格納するために使用されるため、キャッシュメモリ上のデータはいずれ消去される。ここで、キャッシュメモリにデータが格納されている期間は、データの属性(種別や状態)によって予測可能である。また、キャッシュメモリにデータが格納されている期間には差があり得る。本実施例では、キャッシュメモリにおけるデータの属性に基づく格納期間の違いを利用して、キャッシュ用フラッシュストレージが、データを格納するブロックの選択を行う。例えば、キャッシュ用フラッシュストレージは、短期間で消去可能となる複数のデータを1つのブロックに格納することで、無効データを1つのブロックに集中させることができる。これにより、キャッシュ用フラッシュストレージは、リクラメーションによるコピー処理の発生を防ぐことができる。
図1は、本実施例の概要を示す。
図1において、ストレージシステム101は、ディスク151へのデータの書き込み/読み出しを制御するディスクコントローラ106を有する。ディスクコントローラ106は、CPU118と、キャッシュ用フラッシュストレージ116を有する。キャッシュ用フラッシュストレージ116は、記憶媒体としてフラッシュメモリを有し、ディスクへの書き込みまたはディスクからの読み出しの際に、データを一時的に格納するキャッシュとして使用される。
例えば、ディスクコントローラ106は、ホストコンピュータ102から、データの書き込み要求を受けると、一旦キャッシュ用フラッシュストレージ116にデータを格納し、ホストコンピュータ102に対して完了応答を返す。これにより、ストレージシステム101のホストコンピュータ102に対する応答性能が向上する。
また、ディスクコントローラ106は、データの読み出し要求を受けると、ディスク151からデータを読み出し、キャッシュ用フラッシュストレージ116に格納し、ホストコンピュータ102にデータを送信する。次回、同じデータの読み出し要求を受けた場合、ディスクコントローラ106は、キャッシュ用フラッシュストレージ116からデータを読み出してホストコンピュータ102に応答する。これにより、ストレージシステム101の応答性能が向上する。
図1を用いて、データがキャッシュ用フラッシュストレージ116に格納される際の処理を説明する。なお、データD1、D2及びD3は、格納済みのデータを示す。データD4がキャッシュ用フラッシュストレージ116に転送される(S901)。この際、CPU118は、キャッシュ用フラッシュストレージ116に対して、データD4の書き込み指示とともに、そのデータD4の属性情報を通知する(S902)。キャッシュ用フラッシュストレージ116のメモリコントローラ200は、受信したデータD4の属性情報と、格納済みデータD1、D2及びD3の属性情報とに基づいて、データD4をどのブロック422に書き込むかを決定する(S903)。ここで、メモリコントローラ200は、同じ属性のデータを格納しているブロックを選択する。メモリコントローラ200は、データの属性が違っていたとしても、格納期間が同じ又は近い属性のデータを格納しているブロックを選択してもよい。そして、メモリコントローラ200は、決定したブロック内のページ423にデータを書き込む(S904)。
ここで、データの属性情報とは、データの属性を示す情報であり、例えば、ストレージシステム101におけるデータの種別又は状態等を示す情報である。前述の通り、キャッシュメモリにおいて、そのデータがキャッシュ上に格納されている期間は、データの種別又は状態等によって異なり得る。例えば、比較的早期にキャッシュメモリから消去してもよいデータと、一定期間は消去せずにキャッシュメモリ上に保持すべきデータとがある。
例えば、データの種別として、2つのキャッシュメモリにデータを二重化して書き込む際の「マスターデータ」及び「ミラーデータ」がある。さらに、データの種別として、RAID5やRAID6においてパリティを生成する際の「旧データ」、「旧パリティ」、「新データ」及び「新パリティ」がある。さらに、データの種別として、キャッシュされているデータがディスクにも存在するか否かの状態を示す「クリーンデータ」及び「ダーティデータ」がある。次に、これらのデータの種別毎の格納期間の違いについて説明する。
データの種別がマスターデータの場合、そのデータは、ディスクに書き込まれた後も、キャッシュメモリ上に保持される。データがキャッシュメモリ上に格納されていれば、ホストコンピュータ102からの要求に対しての応答性能を高めることができるからである。データの種別がミラーデータの場合、そのデータは、ディスクに書き込まれた後、破棄されてもよい。データを二重化するのは、データがディスクに書き込まれる前の障害に備えて冗長化しておくためであり、データがディスクに書き込まれた後は、ミラーデータが破棄されても問題ないためである。つまり、マスターデータは、ミラーデータと比較して、キャッシュメモリ上に保持される期間が長い。
新パリティの生成処理において、旧データ及び旧パリティは、新パリティを生成した後、不要となり、キャッシュメモリから破棄される。新パリティは、ディスクに書き込まれた後に、キャッシュメモリから破棄される。なぜなら、新パリティは、ストレージシステム101の内部における冗長化のために生成されるデータだからである。つまり、新パリティは、ホストコンピュータ102から直接読み出し要求を受けることがなく、直接読み出し要求を受ける可能性のある新データと比較して、ディスクへ書き込まれた後もキャッシュメモリ上に保持しておく必要性が小さいためである。なお、新パリティは、このパリティ情報を更新するような近傍へのデータ書き込みが発生した場合に、キャッシュメモリに保持されても良い。この場合、新パリティは、旧パリティとして使用されるため、新パリティをキャッシュメモリに保持しておくことで、ディスクからの読み込み処理を軽減することができるからである。
新データは、上述のマスターデータ又はミラーデータに該当するので、キャッシュメモリ上に格納されている期間が長い。したがって、旧データ及び旧パリティ、新パリティ、新データの順にキャッシュメモリ上に保持される期間が長くなる。
ダーティデータは、少なくともディスクに書き込まれるまでキャッシュメモリ上に保持されている必要がある。クリーンデータは、ディスクにも同じデータが存在するため、キャッシュメモリから破棄されても良い。
以上のように、データの属性(種別又は状態、若しくはこれらの組み合わせ)によって、そのデータが、将来的にキャッシュメモリに保持される期間が異なる。本実施例では、データの属性に基づく格納期間の違いを利用して、キャッシュ用フラッシュストレージ116が、データを格納するブロック422を決定する。しかし、キャッシュ用フラッシュストレージ116は、受信したデータそのものからそのデータの種別又は状態等を判断することはできない。ここで、ディスクコントローラ106のCPU118は、パリティ生成及びデータの二重書き等を制御するために、データの属性を管理している。しかし、CPU118は、キャッシュ用フラッシュストレージ116の内部の物理的なブロック及びページを認識することができないため、データの書き込み先となるページを選択することができない。なぜなら、CPU118は、キャッシュ用フラッシュストレージ116から提供される論理アドレスを指定してデータを転送するからである。
そこで、本実施例では、ディスクコントローラ106のCPU118と、キャッシュ用フラッシュストレージ116とが連携して処理を実行する。つまり、本実施例では、データの二重化及びパリティ生成を制御するCPU118が、データの属性情報をキャッシュ用フラッシュストレージ116に通知し、メモリコントローラ200がデータの格納先を決定する。
メモリコントローラ200は、すでに格納済みのデータが存在する場合、その格納済みのデータの属性に基づいて、新たなデータを格納すべきブロックを選択しても良い。メモリコントローラ200は、空きブロックにデータを格納した際に、そのブロックに格納したデータの属性を設定してもよい。また、コントローラ200は、予めブロック毎に格納すべきデータの属性を設定しておいてもよい。
キャッシュメモリにデータが保持されている期間は、例えば、データが書き込まれてから不要になるまでの期間(CPU118が不要であると判断するまでの期間)、データが書き込まれてから削除されるまでの期間、又はデータが書き込まれてから特定の処理が完了するまでの期間であってもよい。
キャッシュ用フラッシュストレージ116は、メモリ211(図3参照)に、データの属性情報と属性毎の格納期間の関係を表す情報を保持してもよい。この場合、キャッシュ用フラッシュストレージ116は、受信したデータの属性情報から格納期間を求め、格納期間に基づいてデータの格納先を決定してもよい。
CPU118がキャッシュ用フラッシュストレージ116に送信する属性情報には、データの種別又は状態等が含まれるが、格納期間が含まれてもよい。この場合、キャッシュ用フラッシュストレージ116は、属性情報に含まれる格納期間に基づいて、データをどのブロックに書き込むかを決定する。例えば、キャッシュ用フラッシュストレージ116は、格納期間の長さが比較的近い(例えば、格納期間の長さが所定の範囲内に含まれる)データが、同じブロックに格納されるように書き込み先のブロックを選択する。又は、キャッシュ用フラッシュストレージ116は、格納期間の長さの差が比較的大きい(例えば、格納期間所定値以上である)データが、異なるブロックに格納されるように書き込み先のブロックを選択する。
例えば、格納期間が「1」〜「10」までの値を取り得るとし、「1」が最も短い格納期間を示し、「10」が最も長い格納期間を示すとする。この場合、キャッシュ用フラッシュストレージ116は、格納期間の値毎に異なるブロックにデータを格納してもよい。例えば、キャッシュ用フラッシュストレージ116は、格納期間の比較的短い1〜5のデータを同じブロックに、格納期間の比較的長い6〜10のデータを同じブロックに格納してもよい。この場合、図1において、データD1の格納期間が「10」と長く、データD2とD3の格納期間が「1」と短く、データD4の格納期間が「1」〜「5」の何れかであるとすると、データD4はブロック#1に格納される。
これにより、1つのブロック422の有する各ページに格納されたデータが、CPU118によって、比較的同じようなタイミングで不要と判断される可能性が高くなる。必要なデータを一つも格納していないブロックは、リクラメーションにおいて、データを別のブロックに退避(コピー)させることなく、そのまま消去することができる。つまり、この場合、データを別のブロックに退避(コピー)する必要がなくなるので、この退避(コピー)処理によるキャッシュ用フラッシュストレージ116の性能低下が軽減される。また、各ブロック423に書き込むデータ量が減り、消去する回数も減るので、キャッシュ用フラッシュストレージ116の寿命を長くすることができる。
キャッシュ用フラッシュストレージ116に一旦記憶されたデータは、所定のタイミングで、ディスク151に格納される。このように、キャッシュデータをディスク151に格納することを「デステージ」と言うことがある。デステージが完了していないキャッシュデータを「ダーティデータ」、デステージが完了したキャッシュデータを「クリーンデータ」と言うことがある。デステージが完了していないダーティデータをデステージすることを、「クリーン化」と言うことがある。
また、何のデータも書き込まれていないページ、つまり消去済みのページを、「空きページ」と言うことがある。ページに書き込まれている有効な(参照可能な)データを「有効データ」と言い、この有効データを有するページを「有効ページ」と言うことがある。ページに書き込まれているものの無効な(参照不可能な)データを「無効データ」と言い、この無効データを有するページを「無効ページ」と言うことがある。なお、或る論理ページについて、有効データは、その或る論理ページに書き込まれた最新のデータであり、無効データは、その或る論理ページに有効データが書き込まれるよりも過去に書き込まれたデータである。例えば、有効データとして第1のデータが書き込まれている或る論理ページに第2のデータが書き込まれた場合、第2のデータが有効データであり、第1のデータが無効データとなる(以下「無効化」という)。以下では、本実施例の詳細を説明する。
図2は、ストレージシステムの全体構成を示す。
ストレージシステム101には、ホストコンピュータ102及び管理ホストコンピュータ103が接続されている。ホストコンピュータ102は、通信ポート(不図示)を有し、この通信ポートを介して、通信ネットワークのような接続経路104を経由して、ストレージシステム101と通信する。管理ホストコンピュータ103も、通信ポート(不図示)を有し、この通信ポートを介して、通信ネットワークのような接続経路105を経由して、ストレージシステム101と通信する。
ホストコンピュータ102は、ストレージシステム101から提供される論理ボリュームに対してデータを読み書きする装置(例えば、計算機又はサーバ)である。ホストコンピュータ102は、データのアクセス指示(書き込み指示又は読み出し指示)を、ストレージシステム101に送信する。アクセス指示には、アクセス先を表す情報、例えば、アクセス先の論理ボリュームのID(例えばLUN(Logical Unit Number))とアクセス先の領域(アクセス先の論理ボリュームにおける領域)のアドレス(例えばLBA(Logical Block Address)のような論理アドレス)とを含んだ情報が関連付けられている。なお、他のストレージシステムから、アクセス指示を受信する場合もある。管理ホストコンピュータ103は、ストレージシステムを管理する計算機である。
図2において、ホストコンピュータ102とストレージシステム101とは、直接接続されているが、他の接続の構成であっても良い。例えば、複数のホストコンピュータ102、管理ホストコンピュータ103及びストレージシステム101が、SAN(Storage Area Network)によって相互に接続されてもよい。SANには、例えば、FC(Fibre Channel)又はiSCSI(Small Computer System Interface)等のプロトコルを使用することができる。また、接続経路104と接続経路105とは、同じ接続経路であっても良い。
ストレージシステム101は、内部にディスクコントローラ106、107を備える。ディスクコントローラ106とディスクコントローラ107は、双方向に通信可能な内部バス141で接続されている。1又は複数のディスク151は、接続経路142によって、ディスクコントローラ106、107と接続されている。
ディスク151は、データを最終的に記憶する装置である。ディスク151には、例えば、FC、SAS又はATA等の規格に基づいたHDD(Hard Disk Drive)、フラッシュSSD(Solid State Device)等が使用される。本実施形態において、「ディスク」とは、ディスク型の記憶デバイス(例えばHDD)であっても非ディスク型の記憶デバイス(例えばSSD)であっても良い。
ディスクコントローラ106は、ディスク151へのデータの書き込み、読み出しを制御する。ディスクコントローラ106は、ホスト入出力制御部112、データ転送制御部113、ディスク入出力制御部114、メモリ117、CPU(Central Processing Unit)118、管理IF119、キャッシュメモリ115、及びキャッシュ用フラッシュストレージ116を備える。これらの要素112〜119は、例えば、それぞれハードウェアであり、内部バス131〜136によって接続されている。ディスクコントローラ107は、ディスクコントローラ106と同様の構成であるので説明を省略する。
CPU118は、メモリ117に格納されたコンピュータプログラムを実行し、ストレージシステム101の備える各種機能を実現する。キャッシュメモリ115及びキャッシュ用フラッシュストレージ116は、ディスク151から読み出したデータ及びディスク151に書き込むデータを、一時的に格納する。一時的とは、所定の期間経過後、又は所定の処理が完了した後にデータが削除されることを意味する。これにより、ホストコンピュータ102に対する応答性能を向上させることができる。キャッシュメモリ115は、例えば、DRAM(Dynamic Random Access Memory)であるが、他種の揮発性メモリ(又は不揮発性メモリ)でも良い。キャッシュ用フラッシュストレージ116は、例えば、記憶媒体としてNAND型フラッシュメモリを有する記憶デバイスである。しかし、記憶媒体は、追記型の不揮発性半導体メモリであればよく、例えばMRAM(Magnetic Random Access Memory:磁気抵抗メモリ)、PRAM(Phase Change Random Access Memory:相変化メモリ)、ReRAM(Resistance Random Access Memory:抵抗変化メモリ)などであってもよい。
図2に示すように、ディスクコントローラは、二重化されてもよい(参照符号106、107)。例えば、ディスクコントローラ106に障害が発生した場合は、ディスクコントローラ107が代わりを務める。これにより、ストレージシステム101の耐障害性を高めている。本実施例では、ディスクコントローラ106を通常時に処理を実行する「マスター側」とする。ディスクコントローラ107を、マスター側ディスクコントローラの障害時に代わりを務める「ミラー側」とする。本実施例では、ディスクコントローラが二重化されているが、1つのディスクコントローラ内で各ハードウェアが二重化されていても良い。
ホストコンピュータ102からデータの書き込み指示を受けた場合、ディスクコントローラ106のCPU118は、そのデータを、ホスト入出力制御部112及びデータ転送制御部113を介して、キャッシュメモリ115又はキャッシュ用フラッシュストレージ116に一時的に格納する。このキャッシュメモリ115又はキャッシュ用フラッシュストレージ116に一時的に格納されたデータを、キャッシュデータということがある。そして、ディスクコントローラ106のCPU118は、そのデータを、データ転送制御部113を介してキャッシュメモリ115又はキャッシュ用フラッシュストレージ116から読み出し、ディスク入出力制御部114を介して、ディスク151に格納する。ここで、ディスクコントローラ106とディスクコントローラ107が二重化されている場合は、ディスクコントローラ106からディスクコントローラ107にデータが転送され、ディスクコントローラ107でも同様の処理が行われる。
ホストコンピュータ102からデータの読み出し指示を受けた場合、ディスクコントローラ106のCPU118は、ディスク151からデータを読み出して、一時的にキャッシュメモリ115又はキャッシュ用フラッシュストレージ116に格納する。このキャッシュメモリ115又はキャッシュ用フラッシュストレージ116に一時的に格納されたデータも、キャッシュデータという。そして、ディスクコントローラ106のCPU118は、そのデータを、キャッシュメモリ115又はキャッシュ用フラッシュストレージ116から読み出して、ホストコンピュータ102に転送する。
なお、図2によれば、ディスクコントローラ106の内部に、キャッシュ用フラッシュストレージ116が存在し、キャッシュ用フラッシュストレージ116に、コントローラ部(図2において、ディスクコントローラ106のうちのキャッシュ用フラッシュストレージ116以外の要素を含んだ部分)120が接続されている。しかし、構成は、図2に示す構成に限らず、他の構成であっても良い。例えば、キャッシュ用フラッシュストレージ116が所定のIFを備え、このIFを介してデータ転送制御部113に接続されてもよい。又は、キャッシュ用フラッシュストレージ116が所定のIFを備え、接続経路142に、ディスク151と同じように接続されてもよい。又は、キャッシュメモリ115は備えられず、キャッシュとして使用される記憶デバイスは、キャッシュ用フラッシュストレージ116のみであっても良い。又は、キャッシュメモリ115が、メモリ117と同じ物理メモリを使用する構成であっても良い。
図3は、キャッシュ用フラッシュストレージ116の内部構成を示す。
キャッシュ用フラッシュストレージ116は、1以上のフラッシュメモリチップ204と、1以上のフラッシュメモリチップ204に接続されたメモリコントローラ200とを有する。メモリコントローラ200は、例えば、上位入出力制御部201、データ転送制御部202、フラッシュ入出力制御部203、CPU212、メモリ211及びバッファメモリ213を含む。メモリ221、CPU212、バッファメモリ213、上位入出力制御部201、データ転送制御部202及びフラッシュ入出力制御部203は、双方向に通信可能な内部バス222で接続されている。フラッシュ入出力制御部203とフラッシュメモリチップ204、及びフラッシュメモリチップ204同士は、双方向に通信可能なフラッシュメモリバス223で接続されている。
上位入出力制御部201は、ディスクコントローラ106の内部バス134を通じて、データ転送制御部113に接続され、上位の装置であるディスクコントローラ106と、キャッシュ用フラッシュストレージ116との間のデータの入出力を制御する。
データ転送制御部202は、キャッシュ用フラッシュストレージ116の内部のデータ転送を制御する。つまり、データ転送制御部202は、CPU212と、バッファメモリ213と、上位入出力制御部201と、フラッシュ入出力制御部203との間のデータのやり取りを制御する。
フラッシュ入出力制御部203は、フラッシュメモリバス223を通じて、フラッシュメモリチップ204に対するデータの入出力を制御する。
CPU212は、内部バス222でデータ転送制御部202と接続され、メモリ211に格納されたプログラムに従って各種の演算処理を実行し、キャッシュ用フラッシュストレージ116全体を制御する。
バッファメモリ213は、上位入出力制御部201及びフラッシュ入出力制御部203とやり取りするデータを一時的に格納する。例えば、上位入出力制御部201から受け取ったデータが、一時的にバッファメモリ213に格納され、フラッシュ入出力制御部203に転送される。フラッシュメモリチップ204から取得したデータが、一時的にバッファメモリ213に格納されても良い。
図3に示す各構成部品は、キャッシュ用フラッシュストレージ116を構成する上で、必ずしも全てが必要というわけではない。例えば、キャッシュ用フラッシュストレージ116は、CPU212等の各制御部が一体となったチップを用いて構成されても良い。又は、キャッシュ用フラッシュストレージ116は、一部のみが統合されたチップを用いて構成されても良い。又は、メモリ211とバッファメモリ213が、物理的に同一のメモリである構成であっても良い。
図4は、ディスクコントローラ106のメモリ117に格納されるプログラム及び情報の一例を示す。
メモリ117には、OS(Operating System)1901、ストレージ制御プログラム1902、データ転送制御プログラム1903、ホスト入出力制御プログラム1904、及びキャッシュ管理プログラム1921等が格納される。これらプログラムは、CPU118において実行され得る。メモリ117には、キャッシュステータス情報1922及び構成情報1911等が格納される。これら情報は、CPU118で実行されるプログラムに使用され得る。
OS1901は、CPU118が各プログラムを実行する際のスケジューリング等の基本処理を行うプログラムである。
ストレージ制御プログラム1902は、ストレージシステム101の備える複数のディスク151をRAID制御する。ここで、ストレージ制御プログラム1902は、RAID5または6などで制御する場合、パリティの生成を制御する。ディスクコントローラ106は、さらにパリティ生成回路を備え、その回路を用いてパリティを生成しても良い。又は、ディスクコントローラ106は、CPU118でパリティ生成プログラムを実行してパリティを生成してもよい。ストレージ制御プログラム1902は、ディスク入出力制御部114を制御する。つまり、ストレージ制御プログラム1902は、ディスク151に対するデータの書き込み、読み出し及び消去等を行う。
データ転送制御プログラム1903は、データ転送制御部113を制御する。つまり、データ転送制御プログラム1903は、データ転送制御部113を制御して、CPU118と、キャッシュメモリ115と、キャッシュ用フラッシュストレージ116と、ホスト入出力制御部112と、ディスク入出力制御部114との間のデータのやり取りを制御する。
ホスト入出力制御プログラム1904は、ホスト入出力制御部112を制御する。つまり、ホスト入出力制御プログラム1904は、ホストコンピュータ102とディスクコントローラ106との間のデータのやり取りを制御する。
キャッシュ管理プログラム1921は、キャッシュメモリ115及び/又はキャッシュ用フラッシュストレージ116に格納されたキャッシュデータを管理する。
キャッシュステータス情報1922は、キャッシュメモリ115及び/又はキャッシュ用フラッシュストレージ116に格納されたキャッシュデータのステータスに関する情報を有する。キャッシュステータス情報1922は、例えば、キャッシュ管理プログラム1921から使用される。キャッシュステータス情報1922の詳細については、後述する。
構成情報1911は、ストレージシステム101を構成する各部品及びストレージシステム101に格納される各データ等の情報を有する。構成情報1911は、例えば、ストレージ制御プログラム1902等に使用される。構成情報1911は、RAIDグループを構成するディスクのID、RAIDレベル、論理ボリュームのID、論理ボリュームを構成するディスク及び/又はRAIDグループのIDなどを含む。
図5は、ディスクコントローラ106の有するキャッシュステータス情報1922aを示す。
キャッシュステータス情報1922aは、例えば、項目として、ホスト側論理アドレス701と、キャッシュ側論理アドレス702と、セグメント属性703と、データ属性704とを有する。
ホスト側論理アドレス701は、ディスクコントローラ106がホストコンピュータ102に提供する論理アドレスである。つまり、ホストコンピュータ102が認識し、アクセスの際に指定する論理ボリューム上の論理アドレスである。CPU118は、ホストコンピュータ102からホスト側論理アドレスを指定したデータの書き込み/読み出しの指示を受けると、キャッシュ側論理アドレス702を確保する。また、CPU118は、データの種別又は状態に応じてデータ属性704を更新する。そして、CPU118は、キャッシュ側論理アドレスを指定してキャッシュ用フラッシュストレージ116にデータを転送し、データ属性を通知する。データ属性は、データの書き込みを指示するコマンドに含まれてもよい。また、パリティの生成を行う場合は、CPU118は、キャッシュ側論理アドレスを指定して、旧データ、旧パリティ及び新パリティをキャッシュ用フラッシュストレージ116に転送し、各データのデータ属性を通知する。
キャッシュ側論理アドレス702は、所定のサイズのセグメント単位に区切って管理される。本実施例では、セグメントのサイズは、フラッシュメモリのページのサイズと同じとする。セグメント属性703には、セグメントに対応するデータが有効又は無効であるかが記録される。CPU118は、セグメント属性703が「有効」のデータは、キャッシュメモリ上に存在していると認識する。CPU118は、セグメント属性703が「無効」のデータは、キャッシュメモリ上に存在していないと認識する。CPU118は、データをキャッシュメモリ上から削除すると判断した場合、セグメント属性703を「無効」とし、データ属性704を「フリー」とする。そして、CPU118は、キャッシュ用フラッシュストレージ116に対して、その論理アドレスのデータの属性が「フリー」である旨を通知する。キャッシュ用フラッシュストレージ116は、その通知を受けて、対象となるデータが「フリー」になったことを認識し、無効データとして管理する。
また、CPU118は、キャッシュステータス情報1922aを変更した場合、その変更を、キャッシュ用フラッシュストレージ116に通知しても良い。そして、キャッシュ用フラッシュストレージ116は、この通知を受けて、キャッシュステータス情報314aを更新する。また、CPU118は、キャッシュ用フラッシュストレージ116に、データ属性603ではなく最低限必要となる格納期間604を通知しても良い。
なお、格納期間604は、メモリコントローラ200によって算出されてもよい。例えば、メモリコントローラ200は、データの属性毎に各データをブロックに書き込んだ後、そのデータが無効となる(または、消去される)までの時間を計測し、その計測した時間に基づいて格納期間604の値を決定してもよい。
また、キャッシュ用フラッシュストレージ116が、自己の記憶するキャッシュステータス情報314aに含まれるデータ属性603及び/又は格納期間604等を用いて、ディスクコントローラ106に対して、このキャッシュデータにおける推奨する処理を通知しても良い。この方法は、格納期間604が、当初の予想とは異なる場合等に有効である。例えば、図21に示すページ情報316gの論理アドレス504が「200」、「201」、「210」及び「211」の有効ページに格納されているキャッシュデータが、クリーンデータであり、このデータの参照頻度が低く、破棄(無効化)した場合の影響が小さいとする。この場合、キャッシュ用フラッシュストレージ116は、これらのキャッシュデータが無効化された方が自己のリソースの消費が小さくなるため、ディスクコントローラ106に対してこれらのデータを破棄(無効化)することを推奨しても良い。
また、ディスクコントローラ106で管理されるキャッシュ用フラッシュストレージ116の論理的な容量と、キャッシュ用フラッシュストレージ116が実際に有する物理的な容量とが異なる場合において、ディスクコントローラ106側で不要となった論理アドレスをキャッシュ用フラッシュストレージ116に通知しても良い。これにより、キャッシュ用フラッシュストレージ116は、その不要と通知された論理アドレスに対応する領域を開放することができ、実効使用容量を低減することができる。
また、論理アドレス601(又はキャッシュ側論理アドレス702)を、ページ属性602(又はセグメント属性703)の「有効」と「無効」とで、異なるアドレス体系としても良い。つまり、論理アドレス601(又はキャッシュ側論理アドレス702)の値が何れのアドレス体系に属するかによって、そのページ属性(又はセグメント属性)が「有効」であるか「無効」であるかを判定できるようにしても良い。この方法は、キャッシュ用フラッシュストレージ116がディスクコントローラ106に対して仮想的な論理空間を提供する場合に有効である。
図6は、キャッシュ用フラッシュストレージ116のメモリ211に格納されるプログラム及び情報の一例を示す。
メモリ211には、OS301、フラッシュストレージ制御プログラム302、データ転送制御プログラム303、上位入出力制御プログラム304、論理物理アドレス変換プログラム311、及びキャッシュステータス管理プログラム313等が格納される。これらプログラムは、CPU212において実行され得る。メモリ211には、キャッシュステータス情報314、論理物理アドレス変換情報312及びページ情報316等が格納される。これら情報は、CPU212で実行されるプログラムに使用され得る。
OS301は、CPU212が各プログラムを実行する際のスケジューリング等の基本処理を行う。
データ転送制御プログラム303は、データ転送制御部202を制御する。つまり、データ転送制御プログラム303は、CPU212と、上位入出力制御部201と、バッファメモリ213との間のデータのやり取りを制御する。
上位入出力制御プログラム304は、上位入出力制御部201を制御する。つまり、上位入出力制御プログラム304は、上位の装置であるディスクコントローラ106のデータ転送制御部113との間のデータのやり取りを制御する。
フラッシュストレージ制御プログラム302は、キャッシュ用フラッシュストレージ116全体を制御する。例えば、フラッシュストレージ制御プログラム302は、上位の装置に提供する論理ボリュームを管理する。例えば、フラッシュストレージ制御プログラム302は、バッファメモリ213を管理する。例えば、フラッシュストレージ制御プログラム302は、フラッシュ入出力制御部203を制御して、フラッシュメモリチップ204に対してデータの書き込み、読み出し及び消去等を行う。
キャッシュステータス情報314は、キャッシュ用フラッシュストレージ116に格納されたキャッシュデータが、上位の装置(本実施形態では、キャッシュ用フラッシュストレージ116の外部のCPU118)においてどのようなステータスであるかを示す情報を有する。キャッシュステータス情報314の詳細については、後述する。
キャッシュステータス管理プログラム313は、キャッシュ用フラッシュストレージ116の外部から受信した属性情報に基づいてキャッシュステータス情報314を更新する。
論理物理アドレス変換情報312は、論理アドレスと物理アドレスの対応関係を示す情報を有する。つまり、論理物理アドレス変換情報312は、キャッシュ用フラッシュストレージ116が上位の装置に提供する論理アドレスと、キャッシュ用フラッシュストレージ116が内部で管理するフラッシュメモリの物理アドレスとの対応関係を有する。
論理物理アドレス変換プログラム311は、論理物理アドレス変換情報312を使用して、論理アドレスと物理アドレスとを変換する。つまり、論理物理アドレス変換プログラム311は、上位の装置から、論理アドレスを含む入出力要求を受けると、論理物理アドレス変換情報312を使用して、フラッシュメモリチップ204の物理アドレスに変換する。これにより、入出力要求に対応するデータが格納された物理記憶領域を特定することができる。
図7は、キャッシュ用フラッシュストレージ116の有するキャッシュステータス情報314aを示す。
キャッシュステータス情報314aは、例えば、項目として、論理アドレス601と、ページ属性602と、データ属性603と、格納期間604とを有する。
論理アドレス601は、キャッシュ用フラッシュストレージ116における論理アドレスを示す。
ページ属性602は、論理アドレス601の示す論理アドレスに対応するページの属性を示す。ページ属性602に格納される情報は、ページ情報316に示すページ属性503と同様である。
データ属性603は、論理アドレス601の示す論理アドレスに対応するページに格納されているデータの属性を示す。データ属性603には、例えば、当該データがマスター側又はミラー側の何れであるかを示す情報が含まれて良い。また、データ属性603には、例えば、当該データが新データ、旧データ、新パリティ又は旧パリティの何れであるかを示す情報が含まれて良い。また、データ属性603には、当該データがダーティデータ、クリーンデータ又はフリーデータ(つまり、無効化されたデータ)の何れであるかを示す情報が含まれて良い。
データ属性603は、メモリコントローラ200の外部のCPU118から通知される。そして、メモリコントローラ200が、データ属性603を更新する。メモリコントローラ200は、データを書き込む際、このデータ属性603を参照して、データの格納先となるブロックを選択する。
格納期間604は、データ属性603に対応する予測格納期間を示す。例えば、格納期間604の値が大きい程、キャッシュ上に格納されていると予測される期間が長く、格納期間604の値が小さい程、キャッシュ上に格納されていると予測される期間が短いとする。格納期間604は、上位装置のCPU118から通知されたデータ属性603に基づいて、更新される。若しくは、格納期間604は、上位装置のディスクコントローラ106からの通知に直接的に含まれていても良い。
格納期間604は、データの種別又は状態間で、相対的に異なるように設定される。例えば、コントローラ120又はキャッシュ用フラッシュストレージ116は、データ属性が新データの場合、データ属性が旧データの場合よりも長い格納期間を設定する。例えば、コントローラ120又はキャッシュ用フラッシュストレージ116は、データ属性が新パリティの場合、データ属性が旧パリティの場合よりも長い格納期間を設定する。例えば、コントローラ120又はキャッシュ用フラッシュストレージ116は、データ属性がダーティデータの場合、データ属性がクリーンデータの場合よりも長い格納期間を設定する。例えば、CPU118は、ホストコンピュータ102からのリード要求に応じて、ディスク151から読み出したデータをキャッシュ用フラッシュストレージ116に格納するケースにおいて、当該データの属性情報をクリーンデータとする。
図8は、論理アドレスと物理アドレスとの対応関係の一例を示す模式図である。
論理アドレス層401は、一連の論理ブロックアドレス(LBA(Logical Block Address))から構成される。論理ブロックアドレスは、キャッシュ用フラッシュストレージ116が上位の装置(本実施形態ではディスクコントローラ106(107)のCPU118)に提供する論理空間における位置を示す。キャッシュ用フラッシュストレージ116の内部では、論理アドレス空間が、複数の論理ページ411に分割して管理されている。本実施例では、論理ページ411のサイズは、フラッシュメモリチップ204の読み出し及び書き込みの単位であるページのサイズと同じとする。そして、1つの論理ページ411は、8個の論理ブロックアドレスから構成されるとする。
論理物理アドレス変換プログラム311は、論理物理アドレス変換情報312を用いて、論理アドレス層401の領域と、物理アドレス層402の領域とを結びつける。
キャッシュ用フラッシュストレージ116において、物理アドレス層402は、複数のフラッシュメモリチップ204を有する。フラッシュメモリチップ204は、複数のブロック422を有する。ブロック422は、複数のページ423を有する。フラッシュメモリにおいて、データの読み出し及び書き込みは、ページ423の単位でしか行うことができない。また、フラッシュメモリにおいては、データの消去は、ブロック422の単位しか行うことができない。
CPU118は、論理ブロックアドレスを指定して、キャッシュ用フラッシュストレージ116にデータの書き込み/読み出しの指示を行う。つまり、キャッシュ用フラッシュストレージ116の外部からは、物理アドレス層を認識することはできない。
論理物理アドレス変換情報312において、例えば、1つの論理ページ411が、1つのページ423に割り当てられる。例えば、LBA0x00〜0x07の論理ページ411が、フラッシュメモリチップ#0のブロック#0のページ#0に割り当てられる。この場合、キャッシュ用フラッシュストレージ116にとっての上位の装置であるディスクコントローラ106から、LBA0x00〜0x07に対して読み出し要求が発行された場合、キャッシュ用フラッシュストレージ116は、このLBA0x00〜0x07の論理ページ411に割り当てられているフラッシュメモリチップ#0のブロック#0のページ#0を特定し、このページ#0からデータを読み出して結果を返す。
なお、論理ページ411のサイズとページ423のサイズは、同一でなくても良い。つまり、論理ページ411のサイズが、ページ423のサイズよりも小さい場合、論理上の空間よりも小さい範囲毎に、ページ423の格納位置が決定されても良い。例えば、図8において、論理ページ411のサイズがページ423のサイズの半分であった場合は、LBA0x00〜0x03とLBA0x04〜0x07の各々が、別々のページ423に格納されても良い。
反対に、論理ページ411のサイズが、ページ423のサイズよりも大きい場合は、ページ423の配置に或る程度の制限を設けても良い。例えば、LBA0x00〜0x0Fを、2個のページ423に格納する場合は、同一のブロック422の連続した2個のページ423を選択しても良い。つまり、1つの論理ページ411に複数のページ423を割り当てる場合、これに割り当てる複数のページ423は、所定の規則に基づいて自動的に選択されても良い。この場合、管理すべきページ423の数が減少するので、キャッシュ用フラッシュストレージ116において管理すべき情報量を低減することができる。
次に図9〜図14を用いて、キャッシュ用フラッシュストレージ116の内部の処理を説明する。
図9は、キャッシュ用フラッシュストレージ116における書き込み処理のフローチャートを示す。図10は、キャッシュ用フラッシュストレージ116の書き込み処理時におけるページ情報の例を示す。以下、図9及び図10を参照しながら、当該処理を説明する。
メモリコントローラ200が、CPU118からデータ(キャッシュデータと呼ぶ)の書き込み指示を受けると、キャッシュデータの書き込み処理が開始される(S101)。書き込み指示(書き込みコマンド)には、キャッシュデータの属性情報が含まれる。
フラッシュストレージ制御プログラム302は、受信したキャッシュデータの属性情報に基づき、そのキャッシュデータと同じ属性のデータが格納されたブロックが存在するか否かを判定する(S102)。フラッシュストレージ制御プログラム302は、ブロックに格納されたデータが同じ属性でなかったとしても、格納期間が同じ又は所定の範囲内であるデータを格納したブロックが存在するか否かを判定しても良い。これは、データが不要になるまでの期間が同じ又は近いデータを同じブロックにまとめることで、リクラメーションの際に、一括して消去することができるからである。フラッシュストレージ制御プログラム302は、各ブロックにデータ属性が設定されている場合、そのブロックの属性に基づいてキャッシュデータを格納するブロックを選択してもよい。例えば、フラッシュストレージ制御プログラム302は、図10のページ情報316hを参照し、受信したキャッシュデータと同じ属性のデータを格納したブロックが存在するか否かを判定する。例えば、受信したキャッシュデータの属性が「マスター」、「新データ」及び「ダーティ」であったとすると、フラッシュストレージ制御プログラム302は、同じ属性のデータを格納したブロックとしてブロック番号501「10」が存在すると判定する。
ステップS102の判定において、該当するブロックが存在する場合(S102:YES)、フラッシュストレージ制御プログラム302は、当該ブロックにデータを格納するために十分な空きページが存在するか否かを判定する(S103)。ここで、フラッシュストレージ制御プログラム302は、キャッシュデータと同じ属性のデータが格納されたブロックが複数存在する場合、その複数のブロックの空きページの合計がキャッシュデータを格納するために十分であるか否かを判定してもよい。フラッシュストレージ制御プログラム302は、同じ属性のデータを集約できる場合、複数のブロックに分けて格納してもよい。例えば、フラッシュストレージ制御プログラム302は、2ページ以上のキャッシュデータを書き込む場合、別々のフラッシュメモリチップ204から同じ属性のデータが格納されたブロックを選択し、各フラッシュメモリチップ204に並列してキャッシュデータを転送し、各ブロックにキャッシュデータを書き込んでもよい。
ステップS103の判定において、ブロックに空きページが十分に存在する場合(S103:YES)、フラッシュストレージ制御プログラム302は、その空きページにキャッシュデータを書き込む(S104)。つまり、フラッシュストレージ制御プログラム302は、図10のページ情報316hにおいて、ブロック番号501が「10」のブロック内ページ番号502が「1」に対応するページに、キャッシュデータを書き込む。
そして、フラッシュストレージ制御プログラム302は、書き込まれたキャッシュデータに対応する論理アドレスが、キャッシュデータの書き込まれたページに対応する物理アドレスを参照するように、論理物理アドレス変換情報312を更新し(S105)、当該処理を終了する(S120)。
ステップS102又はS103の判定において、該当するブロックが存在しない場合(S102:NO、S103:NO)、フラッシュストレージ制御プログラム302は、空きブロックにデータを格納するのに十分な空きページが存在するか否かを判定する(S106)。つまり、フラッシュストレージ制御プログラム302は、異なるデータ属性(または格納期間)のデータが1つのブロックに混在しないように、キャッシュデータを空きブロックへ書き込む。キャッシュデータのサイズがブロック1つ分より大きい場合、フラッシュストレージ制御プログラム302は、複数の空きブロックにキャッシュデータを格納する。つまり、フラッシュストレージ制御プログラム302は、キャッシュデータを格納するのに十分な容量の空きページが確保できればよい。
空きページが十分に存在する場合(S106:YES)、フラッシュストレージ制御プログラム302は、その1つ以上の空きページにキャッシュデータを書き込む(S107)。ここで、受信したキャッシュデータの属性が、「マスター」、「旧データ」及び「クリーン」、又は、「マスター」、「旧パリティ」及び「クリーン」の場合、図10のページ情報316hに同じブロック属性505を有するブロックが存在しない。この場合、ブロック番号501が「22」の空きブロックへ旧データ又は旧パリティを書き込む。そして、フラッシュストレージ制御プログラム302は、ブロック番号501が「22」のブロック属性505に、格納したキャッシュデータの属性である「マスター」、「旧データ」及び「クリーン」を設定する。
そして、フラッシュストレージ制御プログラム302は、書き込まれたキャッシュデータに対応する論理アドレスが、新しいページに対応する物理アドレスを参照するように、論理物理アドレス変換情報312を更新し(S105)、当該処理を終了する(S120)。
ステップS106において、空きページが十分に存在しない場合(S106:NO)、フラッシュストレージ制御プログラム302は、データを消去するブロック422を選択する(S108)。フラッシュストレージ制御プログラム302は、有効ページが少ないブロックを消去対象のブロックとして選択しても良い。これは、有効ページが少ない方が、コピーするデータ量が少なく、作成できる空きページの数も多くなるためである。フラッシュストレージ制御プログラム302は、最後にデータが書き込まれてからの経過時間が長いブロックなどの条件で消去対象のブロックを選択してもよい。そして、フラッシュストレージ制御プログラム302は、消去対象として選択されたブロック422に含まれる有効データを、空きページを有する別のブロックへ退避する(S109)。
ここで、フラッシュストレージ制御プログラム302は、消去対象ブロックに格納されたデータの属性に基づいて、退避先のブロックを選択しても良い。例えば、フラッシュストレージ制御プログラム302は、消去対象のブロックに格納されたデータの属性が、格納期間が長いことを示す場合、このデータを消去回数の多いブロックに退避させてもよい。これにより、次にこのデータが消去されるまでの期間が長くなり、このブロックの消去回数の増加を抑制できる。
また、フラッシュメモリは、データを格納してから時間が経過するほど、データ中のエラービットが増加する。このため、フラッシュメモリでは、エラー訂正が可能な間にデータを読み出してエラー訂正を実行し、別のブロックにデータを格納するというリフレッシュ処理が実行される。このリフレッシュ処理において、格納期間の長い属性を有するデータが、消去回数の多いブロックに格納されるようにしてもよい。リフレッシュ処理は、定期的に実行されてもよいし、データを読み出した際のエラービット数が閾値を超えた場合に実行されてもよい。
有効データとは、この時点において、論理ページに割り当てられている物理ページが有するデータである。有効データは、消去してはならないので、上記のように、空きページを有する別のブロックへ退避する必要がある。有効データの退避とは、有効データを別のブロックの空きページへコピーし、論理物理アドレス変換情報312の割り当て関係を更新する処理である。有効データを退避した場合、コピー元の有効データは不要となるので、無効データになる。つまり、この有効データを記憶していた有効ページは、無効ページとなる。有効データの退避が完了すると、消去対象のブロックは、無効ページ及び空きページのみとなるので、消去することができる。
ステップS109で、有効データの退避が完了した後、フラッシュストレージ制御プログラム302は、消去対象のブロックのデータを消去する(S110)。この消去によって、このブロック内のすべてのページが、空きページとして使用可能となる。つまり、この消去によって、書き込み用の空きページが増加する。そこで、フラッシュストレージ制御プログラム302は、ステップS102に戻り、再度判定する(S102)。
図9では、フラッシュストレージ制御プログラム302は、書き込み処理の一部として空きページを生成している(S108〜S110)。しかし、フラッシュストレージ制御プログラム302は、この空きページの生成を、書き込み処理とは別に非同期に実行しても良い。これにより、キャッシュ用フラッシュストレージ116の書き込み性能が高められる。次に、図9に示した書き込み処理のフローに伴って遷移するページ情報について説明する。
図11は、或る時点におけるページ情報316aの例を示す。ページ情報316aは、各ページに関する様々な情報を有する。例えば、ページ情報316aは、項目として、ブロック番号501と、ブロック内ページ番号502と、ページ属性503と、論理アドレス504とを有する。
ブロック番号501は、ブロックを識別するための番号である。ブロック内ページ番号502は、ブロック内のページを識別するための番号である。
ページ属性503は、そのページの属性を示す。つまり、ページ属性503の「有効」は、当該ページに有効データが記憶されていること、言い換えると、当該ページが有効ページであることを示す。ページ属性503の「無効」は、当該ページに無効データが記憶されていること、言い換えると、当該ページが無効ページであることを示す。ページ属性の「空き」は、当該ページに何のデータも記憶されていないこと、言い換えると、データの書き込みが可能な空きページであることを示す。論理アドレス504は、当該ページに割り当てられている論理アドレスを示す。
例えば、図11に示すページ情報316aは、ブロック番号501が「10」におけるブロック内ページ番号502が「0」、「1」、「2」の示すページには、「有効」なデータが記憶されており(行520a、520b、520c参照)、ブロック内ページ番号502が「3」のページは、「空き」ページであることを示している(行520d参照)。また、ページ情報316aは、ブロック番号501が「22」における全てのページが、「空き」ページであることを示している(行520e、520f、520g、520h参照)。
図12は、図11に示した時点から書き込み処理が発生した後の時点におけるページ情報316bの例を示す。つまり、ページ情報316bは、ページ情報316aに対して、図9に示すステップS104を実行した後の状態を示している。
ページ情報316bは、論理アドレス504が「101」のデータは、ブロック番号501が「10」のブロック内ページ番号502が「1」のページに記憶されていることを示す。ここで、論理アドレス504が「101」のデータが上書き更新されたとする。
このデータを、ブロック内ページ番号502が「1」のページに直接上書きすることはできないので、フラッシュストレージ制御プログラム302は、この論理アドレス504の「101」に上書き更新されたデータを、空きページに格納する。例えば、フラッシュストレージ制御プログラム302は、この論理アドレス504の「101」に上書き更新されたデータを、ページ属性503が「空き」である、ブロック番号501が「10」でブロック内ページ番号502が「3」のページに格納し、この論理アドレス504を「101」に更新する(行521d参照)。このとき、フラッシュストレージ制御プログラム302は、ブロック番号501が「10」でブロック内ページ番号502が「3」のページ属性503を「有効」に更新する(行521d参照)。
この更新が完了すると、更新前の論理アドレス504の「101」に対応するページ(つまり、行521bのページ)に格納されていたデータは、不要となる。そこで、フラッシュストレージ制御プログラム302は、このブロック番号501が「10」でブロック内ページ番号502が「1」に対応するページ属性503を「無効」に変更する。
図13は、図12に示した時点から有効データの退避処理を行った後の時点におけるページ情報316cを示す。つまり、ページ情報316cは、ページ情報316bに対して、図9に示すステップS112を実行した後の状態を示している。
ページ情報316cは、フラッシュストレージ制御プログラム302が、図12に示すページ情報316bのブロック番号501が「10」に含まれるブロック内ページ番号502が「0」、「2」、「3」の有効データを、ブロック番号501が「22」のブロック内ページ番号502が「0」、「1」、「2」のページにコピーし(行522e、522f、522g参照)、元の有効データを記憶していたページのページ属性503を全て「無効」に更新した状態を示す(行522a、522c、522d参照)。
図14は、図13に示した時点から全てが無効ページとなったブロックを消去した後のページ情報316dを示す。
ページ情報316dは、ブロック番号501が「10」の全てのページ属性503が「空き」となっている。つまり、ページ情報316dは、図13に示したページ情報316cに対して、図9に示すステップS110を実行した後の状態を示している。
ここで、ページ情報316aと316dを比較すると、データを格納するブロックは異なるものの、ページ属性とページの数は一致している。すなわち、図11〜図14に示した処理によって、データの退避及び消去を含む書き込み処理のフローが完了したこととなる。図11〜図14の処理フローにおいて、上位の装置から発行された書き込み要求は、ページ1つ分(つまり、論理アドレス504が「101」のページに対する上書き更新)である。しかし、フラッシュメモリチップ204に対して発行された書き込み処理は、有効ページのコピーを含めると、図12に示すブロック番号501が「10」でブロック内ページ番号502が「3」(行521d参照)、及び図13に示すブロック番号501が「22」でブロック内ページ番号502が「0」、「1」並びに「2」のページ4つ分である。
つまり、ステップS108において、ブロック番号501が「10」のブロックが消去の対象に選択された場合、フラッシュストレージ制御プログラム302は、そのブロックに存在する有効ページのデータを、別のブロック422に内部コピーしなければならない。内部コピーは、フラッシュメモリチップ204に対するデータの書き込み及び読み出しが実行されるため、フラッシュメモリチップ204及びフラッシュメモリバス223のリソースを消費する。これは、キャッシュ用フラッシュストレージ116の性能低下、及び書き込み及び消去の回数の増大を招く。よって、ステップS108において選択されるブロック422は、できるだけ有効ページの少ない、可能であれば有効ページの存在しないブロック422が選択されることが望ましい。
次に図15〜図18を用いて、ストレージシステムにおけるデータ書き込み処理を説明する。
図15は、RAID5制御によるデータの上書き更新の処理の概要を示す模式図である。
図15において、旧データDa1及びDa2とその旧パリティDaPが、それぞれ、ディスク#1、#2、#3に記憶されている。ここで、ディスクコントローラ106が、旧データDa1を新データDb1に上書き更新する旨の要求を受けたとする(S31)。
ディスクコントローラ106のCPU118は、必要に応じて新データDb1をディスクコントローラ107に転送し、二重書きする(S41)。そして、ディスクコントローラ106は、旧データDa1と、旧パリティDaPを、それぞれディスク#1、#3から読み出して、キャッシュ用フラッシュストレージ116に格納する(S32)。この際、CPU118は、キャッシュ用フラッシュストレージ116に、データ毎のデータ属性情報を通知する。
キャッシュ用フラッシュストレージ116は、旧データDa1及び旧パリティDaPと、それぞれのデータ属性情報とを受信すると、各データの格納先となるブロックを選択する。ブロック#0に格納済みのデータDxxの属性が旧データまたは旧パリティであるとすると、キャッシュ用フラッシュストレージ116は、旧データDa1及び旧パリティDaPを、ブロック#0に書き込む。ここで、旧データDa1と旧パリティDaPは、新パリティの生成後に不要となるため、キャッシュ用フラッシュストレージ116は、これらのデータを同じブロックに格納する。
そして、CPU118は、旧データDa1及び旧パリティDaPを、キャッシュ用フラッシュストレージ116から読み出して(S33)、それらと新データDb1から、新パリティDbPを生成する(S34)。CPU118は、必要に応じて、新パリティDbPを、ディスクコントローラ107に転送し、二重書きする(S42)。
そして、CPU118は、新データDb1及び新パリティDbPを、キャッシュ用フラッシュストレージ116に格納する(S35)。この際、CPU118は、キャッシュ用フラッシュストレージ116にデータ毎のデータ属性を通知する。
キャッシュ用フラッシュストレージ116は、新データDb1及び新データであることを示す属性情報を受信すると、新データDb1の格納先となるブロックを選択する。同じ属性のブロックがない場合、キャッシュ用フラッシュストレージ116は、空きブロック#1に新データDb1を書き込む。新データDb1は、以降も参照される可能性があるため、ブロック#0とは別のブロックに格納される。また、キャッシュ用フラッシュストレージ116は、新パリティDbP及び新パリティであることを示す属性情報を受信すると、新パリティDbPを格納するブロックを選択する。新パリティDbPは、ディスクに格納された後は参照される可能性が低いため、新データDb1とは別のブロックに格納される。ここでは、新パリティDbPは、空きブロック#2に格納されるとする。
そして、ディスクコントローラ106は、キャッシュ用フラッシュストレージ116から新データDb1と新パリティDbPを読み出し、それぞれ、ディスク#1とディスク#3に上書き保存する(S36)。
このように、不要となるタイミングが同じようなデータを同じブロックに書き込んでおくことで、データを退避(コピー)させることなく、そのブロックを消去することができる。次に、図15の各処理について、フローチャートを用いて詳細に説明する。
図16は、ディスクコントローラ106のCPU118が、ホストコンピュータ102から発行されたデータをキャッシュ用フラッシュストレージ116に書き込む処理のフローチャートである。図16は、図15の新データDb1の二重書き処理も含む。
ストレージ制御プログラム1902は、キャッシュ書き込み処理を開始し(S201)、キャッシュの二重書きが必要か否かを判定する(S202)。つまり、ストレージシステム101が、キャッシュデータを二重に記憶する設定であるか否かを判定する。なお、キャッシュデータの二重書きの要/不要の判断は、予め設定されている場合に限らない。例えば、片方のディスクコントローラに障害が発生している場合は二重書きを不要と判断し、両方のディスクコントローラが正常に稼働している場合は二重書きが必要と判断しても良い。
キャッシュの二重書きが不要と判断した場合(S202:NO)、ストレージ制御プログラム1902は、キャッシュ用フラッシュストレージ116に、ホストコンピュータ102から発行された書き込み用のデータを格納すると共に「マスター」、「ダーティ」及び「新データ」の属性情報を通知する(S203)。RAID5制御が行われている場合、ストレージ制御プログラム1902は、新パリティの生成後にキャッシュ用フラッシュストレージ116にデータを格納しても良い。そして、当該処理を終了する(S205)。なお、データは、キャッシュメモリ115に格納されても良いが、本実施例では、キャッシュ用フラッシュストレージ116に格納される。
ステップS202において、キャッシュの二重書きが必要と判定した場合(S202:YES)、ディスクコントローラ106のストレージ制御プログラム1902は、ホストコンピュータ102から発行された書き込み用のデータをディスクコントローラ107に転送する。さらに、ディスクコントローラ106のストレージ制御プログラム1902は、キャッシュ用フラッシュストレージ116に、データを格納すると共に「マスター」、「ダーティ」及び「新データ」の属性情報を通知する。また、データを受信したディスクコントローラ107のストレージ制御プログラム1902は、ディスクコントローラ107のキャッシュ用フラッシュストレージに、データを格納すると共に「ミラー」、「ダーティ」及び「新データ」の属性情報を通知する。そして、当該処理を終了する(S205)。
図17は、パリティデータを生成する処理のフローチャートの例を示す。図17に示すパリティ生成処理は、RAID5に基づくパリティデータを生成する場合の処理の例である。しかし、図17に示すパリティ生成処理は、他のアルゴリズムに基づくパリティデータを生成する場合の処理であっても良い。
ディスクコントローラ106のストレージ制御プログラム1902は、パリティ生成処理を開始し(S301)、ディスクから旧データと旧パリティを読み出し、キャッシュ用フラッシュストレージ116に格納する(S302)。ストレージ制御プログラム1902は、キャッシュ用フラッシュストレージ116に、旧データを格納すると共に「マスター」、「クリーン」及び「旧データ」の属性情報を通知する。また、ストレージ制御プログラム1902は、キャッシュ用フラッシュストレージ116に、旧パリティを格納すると共に「マスター」、「クリーン」及び「旧パリティ」の属性情報を通知する。
ストレージ制御プログラム1902は、この後に生成するパリティを、キャッシュとして二重書きが必要か否かを判定する(S303)。つまり、ストレージシステム101が、キャッシュデータを二重に記憶する設定であるか否かを判定する。
キャッシュの二重書きが不要と判断した場合(S303:NO)、ストレージ制御プログラム1902は、ホストコンピュータ102から発行された書き込み用の新データ、旧データ及び旧パリティから、新パリティを生成する。そして、ストレージ制御プログラム1902は、キャッシュ用フラッシュストレージ116に、新パリティを格納すると共に「マスター」、「ダーティ」及び「新パリティ」の属性情報を通知する(S304)。そして、ステップS306に進む。
ステップS303において、キャッシュの二重書きが必要と判定した場合(S303:YES)、ディスクコントローラ106のストレージ制御プログラム1902は、ホストコンピュータ102から発行された書き込み用の新データ、旧データ及び旧パリティから、新パリティを生成する。そして、ディスクコントローラ106のストレージ制御プログラム1902は、ミラー側のディスクコントローラ107に転送する。さらに、ディスクコントローラ106のストレージ制御プログラム1902は、ディスクコントローラ106のキャッシュ用フラッシュストレージ116に、新パリティを格納すると共に「マスター」、「ダーティ」及び「新パリティ」の属性情報を通知する。ディスクコントローラ107のストレージ制御プログラム1902は、ディスクコントローラ107のキャッシュ用フラッシュストレージに、新パリティを格納すると共に「ミラー」、「ダーティ」及び「新パリティ」の属性情報を通知する(S305)。そして、ステップS306に進む。
そして、ストレージ制御プログラム1902は、キャッシュ用フラッシュストレージに格納された旧データ及び旧パリティを無効化し、無効化したことをキャッシュ用フラッシュストレージ116へ通知する(S306)。通知を受領したキャッシュ用フラッシュストレージ116は、旧データ及び旧パリティのページ属性情報503を無効へ更新し(S307)、当該処理を終了する(S308)。新パリティがキャッシュ用フラッシュストレージ116に格納された後は、旧データ及び旧パリティは不要となるからである。
図18は、キャッシュ用フラッシュストレージ116に格納された新データと新パリティをディスクに書き込む処理のフローチャートである。
ストレージ制御プログラム1902は、ディスク書き込み処理が開始されると(S401)、一旦キャッシュ用フラッシュストレージ116に格納した新データと新パリティを読み出して、ディスク151に格納する(S402)。
そして、ストレージ制御プログラム1902は、ステップS202及び/又はステップS303において、キャッシュの二重書きがされていたか否かを判断する(S403)。
キャッシュの二重書きがされていた場合(S403:YES)、ストレージ制御プログラム1902は、ミラー側のディスクコントローラ107の備えるキャッシュ用フラッシュストレージ(不図示)の新データと新パリティを無効化し、キャッシュ用フラッシュストレージ116へ無効化を通知する(S404)。無効化通知を受領したフラッシュストレージ116は、ミラー側の新データと新パリティのページ属性情報503を無効に更新し(S405)、ステップS406に進む。一般的にダーティデータは、障害等によって消失しないように二重書きされるが、ダーティデータがクリーン化された(つまり、クリーンデータとなった)場合は、ミラー側のデータは不要となる。このため、CPU118は、二重書きされたキャッシュデータの内の一方のデータを無効化するようキャッシュ用フラッシュストレージにコマンドを発行する。つまり、マスター側のCPU118は、ミラー側のCPU118に対して、キャッシュ用フラッシュストレージに格納された方のデータを無効化するよう指示する。
ステップS403において、二重書きがされていない場合(S403:NO)、又は、ステップS405の処理の終了後、ストレージ制御プログラム1902は、マスター側のディスクコントローラ106の備えるキャッシュ用フラッシュストレージ116に格納された新データと新パリティをクリーン化し、更新された属性情報をキャッシュ用フラッシュストレージ116に通知し(S406)、当該処理を終了する(S407)。属性情報の変更を受領したキャッシュ用フラッシュストレージ116の動作については後述する。
上述に示したように、キャッシュ用フラッシュストレージ116に格納されたデータは、様々なタイミングで無効化される。例えば、二重書きが有効な場合、ミラー側のキャッシュ用フラッシュストレージには、ステップS204のタイミングでデータが書き込まれ、ステップS404のタイミングで無効化される。マスター側のキャッシュ用フラッシュストレージ116には、同じくステップS204のタイミングでデータが書き込まれ、ステップS405のタイミングでクリーン化される。しかし、このマスター側のキャッシュ用フラッシュストレージ116に書き込まれたデータは、無効化はされずに、その後もキャッシュ上に存在し続ける。これは、新データは、ホストコンピュータからアクセスされる可能性があるためである。
また、クリーン化後の状態において、新データと新パリティとでは、参照頻度及び更新頻度等が異なるため、無効化されるタイミングも異なり得る。旧データと旧パリティは、ステップS302で書き込まれ、ステップS306で無効化される。
このように、キャッシュ用フラッシュストレージ116上に格納されるデータは、そのデータ属性(種別、状態)によって、データの格納期間が異なる。このため、キャッシュ用フラッシュストレージ116は、データ属性に応じて、データを格納するブロックを選択することで、リクラメーション処理におけるデータコピー量を低減できる。これにより、内部でのデータコピーによる性能低下と、ライトデータ量の増加によるフラッシュメモリの短寿命化を抑制することができる。
図19は、或る時点におけるページ情報316eを示す。図19に示すページ情報316eにおいて、論理アドレス504が「100」、「110」、「300」及び「310」のページに、ステップS305に示す新データが格納されているとする。
同じく、論理アドレス504が「200」、「201」、「210」及び「211」のページに、旧データが格納されている。これら新データ及び旧データは全て、ブロック番号501が「10」の1つのブロックに格納されているとする。
図20は、図19の時点から時間が進み、パリティ生成処理のステップS306が完了した時点におけるページ情報316fを示す。
ステップS306において旧データが無効化されると、論理アドレス504が「200」、「201」、「210」及び「211」の各々に割り当てられていたブロック内ページ番号502が「1」、「2」、「5」及び「6」のページが無効化される。ここで、ページ情報316fにおけるブロック番号501が「10」のブロックが、ステップS111において空きページの作成の対象に選択された場合、ページ属性503が「有効」であるブロック内ページ番号502が「0」、「3」、「4」及び「7」のページに記憶されているデータを、別のブロックにコピー(退避)する必要がある。つまり、ブロックを消去する際、ページ属性503が「有効」なページが存在する場合は、それらのページのデータをコピー(退避)する処理が発生してしまう。
図21は、図19と対比する図面であり、或る時点におけるページ情報316gを示す。このページ情報316gは、図19に示すページ情報316eと同様のデータを記憶する。図21は、図19とは異なり、ブロック属性505を備える。ブロック属性505は、空きブロックにデータが書き込まれた際に、そのデータの属性が設定されてもよいし、予め設定されていてもよい。
ブロック番号501が「10」の1つのブロックに、論理アドレス504が「100」、「110」、「300」及び「310」が対応付けられており、これら論理アドレス504の示すページに新データが格納されているとする。つまり、このブロックに格納されているデータの属性は、「マスター」、「新データ」及び「ダーティ」であるとする。そして、ブロック番号501が「22」の1つのブロックに、論理アドレス504が「200」、「201」、「210」及び「211」が対応付けられており、これら論理アドレス504の示すページに旧データが格納されているとする。つまり、このブロックに格納されているデータの属性は、「マスター」、「旧データ」及び「クリーン」であるとする。ブロック番号「22」のブロックには、旧パリティが含まれていてもよい。このように、新データと旧データとが、異なるブロックに格納されているとする。
図22は、図20と対比する図面であり、図21に示す時点から時間が進み、パリティ生成処理のステップ306が完了した時点におけるページ情報316hを示す。
図22は、図20に示すページ情報316fと同様のデータを記憶している。しかし、図21に示したページ情報316gの時点で、新データと旧データとを異なるブロックに格納したため、ブロック番号501が「10」のブロックのページは全て「有効」となり、ブロック番号501が「22」のブロックのページは全て「無効」となる。
このため、ステップS111で、空きページを作成するブロックとしてブロック番号501が「22」のブロックが選択されたとすると、データを退避(コピー)することなく、選択されたブロックを消去し、空きページを生成することができる。これによって、ブロックの消去回数を抑制することができる。また、データのコピーにともなうCPUリソースの使用を抑制できるので、書き込み/読み出し処理の性能が向上する。また、フラッシュメモリチップ204に接続されているフラッシュメモリバス223等のリソースの消費を抑制することができる。
図19〜図22に基づく説明では、新データと旧データとを別々のブロックに格納したが、別の条件に基づいて、どのデータをどのブロックに格納するかを判断しても良い。例えば、格納期間の大きく異なるデータ同士を、別のブロックに格納するようにしても良い。つまり、格納期間の比較的近いデータ同士を、出来るだけ同一のブロックにまとめるようにしても良い。これにより、データを退避するための内部コピーのデータ量を低減することができる。
図23は、図21の状態から、時間が進んだ状態のページ情報316iを示す。図23は、図21及び図22と同様のデータを記憶しているが、さらにページ属性詳細506を備える。ページ属性詳細506には、ブロック属性505で規定されている情報から、なんらかの処理によってページ単位で属性が更新された場合の情報を格納する。例えば、ステップS406では、新データと新パリティをクリーン化し、このデータの属性情報をキャッシュ用フラッシュストレージ116へ通知した。この通知を受領した場合、時間によるページ単位の属性情報の変化が発生するため、ブロック属性505のみでは表せない。そこで、ページ属性詳細506に、この変化に係る情報を格納し、属性情報の更新を行う。図23は、ブロック番号501が「10」のブロック内ページ番号502が「0」のページが、クリーン化された例を示している。
クリーン化されたか否かという情報は、キャッシュ用フラッシュストレージ116にとって重要である。ダーティデータは、キャッシュ用フラッシュストレージ116にとって破棄が不可能なデータである。しかし、クリーンデータは、最終記憶媒体であるディスク151へ格納されていることが保証されているデータであるため、破棄してもデータロスト等の重大な障害とはならない。
図24は、ページ毎の属性情報を利用したデータの処理のフローチャートの例を示す。この処理は、ステップS109に示した有効データ退避処理の内容となる。通常の有効データ退避処理では、ページ属性情報503が有効であるページを別のブロックにコピーすることで、破棄が不可能なデータを保持する。
キャッシュ用フラッシュストレージ116は、処理を開始すると(S501)、まず、対象となる有効データ(以下「対象有効データ」という)を選択する(S502)。次に、キャッシュ用フラッシュストレージ116は、ステップS502で選択した対象有効データがクリーンデータであるか否かを、ページ属性詳細506の情報に基づいて判断する(S503)。
対象有効データがクリーンデータである場合(S503:YES)、キャッシュ用フラッシュストレージ116は、このデータを破棄してもよいか否かを、ディスクコントローラ106へ問い合わせる(S504)。ディスクコントローラ106は、対象となっているデータがキャッシュ用フラッシュストレージ116に存在し続けることのメリット等を考慮して破棄の可否を判断し、その結果をキャッシュ用フラッシュストレージ116に通知する(S505)。
キャッシュ用フラッシュストレージ116は、破棄が可能との通知を受けた場合(S505:YES)、対象有効データを無効化する(S506)。無効化された対象有効データのページ属性503は無効となるため、以降、この対象有効データは、有効データではなくなり、退避処理の対象から外れる。
キャッシュ用フラッシュストレージ116は、ステップS505において破棄が不可能との通知を受けた場合(S505:NO)、又はステップS503において対象有効データがクリーンデータで無かった場合(S503:NO)、対象有効データを別ブロックへコピーする(S507)。
キャッシュ用フラッシュストレージ116は、ステップS506又はステップS507の処理が終了すると、さらに処理を継続すべき有効データが残っているかどうかの判断を行い(S508)、残っている場合は(S508:YES)、ステップS503へ戻る。キャッシュ用フラッシュストレージ116は、全ての有効データの処理を完了したと判断した場合(S508:NO)、当該処理を終了する(S509)。
図24の処理は、キャッシュ用フラッシュストレージ116が、有効データのコピー(退避)処理を実行する頻度を低減させることを目的としている。以下にその理由を述べる。
有効データのコピー処理は、キャッシュ用フラッシュストレージ116の内部リソースを使用するので、出来るだけ避けたい。しかし、有効データのコピー処理は、キャッシュ用フラッシュストレージ116の内部の処理なので、ディスクコントローラ106から認知できない。したがって、ディスクコントローラ106は、キャッシュ用フラッシュストレージ116の内部で非効率なコピーが高頻度で発生していたとしても、それを認知することができないので、それを回避することは困難である。
また、ディスクコントローラ106がクリーンデータとして保持するデータは、必ずしも必要性の高い(例えば、リードの頻度が極めて高い)データであるとは限らない。したがって、このようなクリーンデータを、キャッシュ用フラッシュストレージ116の内部処理の効率化のために破棄することは、効果的である可能性がある。
そこで、図24の処理では、キャッシュ用フラッシュストレージ116が、ディスクコントローラ106に対して、有効データの破棄の可否を問い合わせている。これにより、キャッシュ用フラッシュストレージ116の内部処理の効率化を図っている。
なお、図24では、ステップS504及びS505において、キャッシュ用フラッシュストレージ116は、ディスクコントローラ106に対して、対象有効データの破棄が可能であるか否かを問い合わせたが、必ずしも問い合わせる必要は無い。この場合は、図24のステップS504の処理とステップS505の判定がNOの処理とが無くなり、ステップS503においてYESと判定されると、そのままステップS506に進み、対象有効データを無効化する。ただし、この場合は、ディスクコントローラ106のキャッシュステータス情報1922と、キャッシュ用フラッシュストレージ116のキャッシュステータス情報314との間に差異が発生する可能性がある。したがって、ディスクコントローラ106がキャッシュ用フラッシュストレージ116に存在すると認識しているデータの読み出し処理を行おうとした場合、該当データが存在しないというエラーが発生する可能性がある。この場合、ディスクコントローラ106は、ディスク151からデータを読み直すことで対処可能である。
図25は、キャッシュ用フラッシュストレージ116が、データを格納する場合の他の例である。つまり、図25は、キャッシュ用フラッシュストレージ116において、図15に示すようにRAID5に基づくデータ更新が発生した場合に、旧データDa1、旧パリティDaP、新データDb1及び新パリティDbPが、バッファメモリ213に格納されている状態を示す。
例えば、旧データDa1及び旧パリティDaPは、新パリティDbPの生成後に不要となる。つまり、旧データDa1及び旧パリティDaPの格納期間は、比較的短い。したがって、フラッシュストレージ制御プログラム302は、状況に応じて、旧データDa1及び旧パリティDaPを、フラッシュメモリに格納せずに、バッファメモリ213上で保持してもよい。揮発メモリであるバッファ上にのみデータが存在する状態で、電源障害が発生すると、データが消滅する可能性がある。このため、データ属性が「クリーン」のデータ(旧データ及び旧パリティ)は、フラッシュメモリに格納せずにバッファ上で処理し、データ属性が「ダーティ」のデータ(新データ及び新パリティ)は、フラッシュメモリに格納してもよい。または、新パリティは、消滅しても、新データ、旧データ及び旧パリティから生成することができるため、新パリティは、デステージされるまでフラッシュメモリに格納せずに、バッファ上で保持しても良い。
これにより、フラッシュメモリへの書き込み及び消去の回数を削減することができる。また、フラッシュメモリチップ204に接続されているフラッシュメモリバス223等のリソースの消費を抑制することができる。
また、新データDb1及び新パリティDbPも、ディスク151に格納後(デステージ後)、直ぐに破棄される可能性が高い場合は、ディスクコントローラ106のCPU118がその情報をキャッシュ用フラッシュストレージ116に通知してもよい。この場合、メモリコントローラ200は、新データDb1及び新パリティDbPをフラッシュメモリチップ204に格納せず、バッファメモリ213上で保持してもよい。
以上の説明は、キャッシュ用フラッシュストレージ116がストレージシステム101に備えられる例である。しかし、キャッシュ用フラッシュストレージ116は、サーバなどの計算機に備えられてもよい。この場合、サーバのOS又はドライバが、キャッシュ用フラッシュストレージ116にデータを送信する際に、データの属性情報を通知しても良い。
なお、以上の説明では、「aaaテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「aaaテーブル」を「aaa情報」と呼ぶことができる。
また、以上の説明において、要素(例えば、ページ)の識別情報は番号であるが、番号に代えて又は加えて他種の情報(例えばアルファベット等の文字或いは符号等)を用いて要素が識別されても良い。
また、以上の説明では、「プログラム」を主語として処理を説明した場合、プログラムは、コントローラに含まれるプロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インタフェース装置(例えば通信ポート)を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、コントローラが行う処理としても良い。また、コントローラは、プロセッサそれ自体であっても良いし、プロセッサに代えて又は加えて、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでも良い。コンピュータプログラムは、プログラムソースから記憶制御装置にインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ、又は、計算機が読み取り可能な記憶メディアであっても良い。
上述した本発明の実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
101…ストレージシステム 106…ディスクコントローラ 116…キャッシュ用フラッシュストレージ


Claims (14)

  1. データを格納する複数の記憶デバイスと、
    プロセッサ及び前記複数の記憶デバイスに格納されるデータが一時的に格納されるキャッシュメモリを備えるストレージコントローラと、
    を有し、
    前記キャッシュメモリは、記憶媒体として不揮発性半導体メモリを有し、且つ、前記不揮発性半導体メモリに接続されたキャッシュコントローラを有し、
    前記不揮発性半導体メモリは、複数のブロックを有し、前記複数のブロックのそれぞれは、データの消去単位であり、且つ、複数のページを有し、前記複数のページのそれぞれは、データの書き込み及び読み出しの単位であり、
    前記プロセッサは、
    前記キャッシュメモリに、データと、前記データが前記キャッシュメモリに格納される期間である格納期間に関連する情報を含む属性情報とを送信し、
    前記キャッシュコントローラは、
    前記プロセッサから、前記データと、前記属性情報とを受信し、
    前記受信した属性情報と、前記複数のブロックに格納されているデータの属性情報とに基づいて、前記受信したデータの格納先ブロックを選択し、
    前記選択した格納先ブロック内のページに前記受信したデータを書き込む
    ストレージシステム。
  2. 前記キャッシュコントローラは、前記格納期間の長さが所定値以内のデータ同士が同じブロックに格納されるように前記格納先ブロックを選択する、
    請求項1に記載のストレージシステム。
  3. 前記キャッシュコントローラは、前記キャッシュメモリに格納される期間の長さが所定値以上異なるデータ同士が異なるブロックに格納されるように前記格納先ブロックを選択する、
    請求項2に記載のストレージシステム。
  4. 前記プロセッサが、前記複数の記憶デバイスをRAIDとして制御し、前記複数の記憶デバイスのいずれかに記憶されている更新前のデータである旧データを、前記旧データの更新後のデータである新データに更新する場合に、冗長コードであるパリティを生成する処理において、
    前記プロセッサは、
    前記旧データと、前記旧データに関連付けられている旧パリティとを、前記複数の記憶デバイスから読み出し、前記旧データと、前記旧データを示す属性情報とを、前記キャッシュメモリに送信し、且つ、前記旧パリティと、前記旧パリティを示す属性情報とを、前記キャッシュメモリに送信し、
    前記キャッシュコントローラは、
    前記旧データを示す属性情報と、前記旧パリティを示す属性情報とに基づいて、前記旧データの前記格納先ブロックと前記旧パリティの前記格納先ブロックとして同じブロックを選択する、
    請求項3に記載のストレージシステム。
  5. 前記プロセッサは、前記新データと、前記新データを示す属性情報とをキャッシュメモリに送信し、
    前記キャッシュコントローラは、
    前記旧データを示す属性情報と、前記旧パリティを示す属性情報と、前記新データを示す属性情報とに基づいて、前記新データの前記格納先ブロックとして、前記旧データ及び前記旧パリティの前記格納先ブロックと異なるブロックを選択する、
    請求項4に記載のストレージシステム。
  6. 前記属性情報は、前記属性情報が示すデータが、前記記憶デバイスに格納されているデータであるクリーンデータであるか、前記記憶デバイスに格納されていないデータであるダーティデータであるかを示す情報を含んでおり、
    前記キャッシュコントローラは、前記旧データを示す属性情報と、前記旧パリティを示す属性情報とに基づいて、前記旧データ及び前記旧パリティの一方が前記クリーンデータであり他方が前記ダーティデータであれば、前記旧データの格納先ブロックと前記旧パリティの格納先ブロックとして異なるブロックを選択する、
    請求項5に記載のストレージシステム。
  7. 前記プロセッサは、前記記憶デバイスから読み出したデータを前記キャッシュメモリに格納する場合、前記読み出したデータの属性情報を、前記クリーンデータを意味する情報に更新する、
    請求項6に記載のストレージシステム。
  8. 前記キャッシュコントローラは、前記ブロックの各ページの属性を示すページ属性情報をさらに有し、
    前記キャッシュコントローラは、前記プロセッサから受信した属性情報が前記クリーンデータを示している場合、前記受信した属性情報が示すデータの、前記格納先ブロックにおける格納先ページ、に対応したページ属性情報を、前記クリーンデータを意味する情報を含んだページ属性情報に更新し、
    前記キャッシュコントローラは、
    前記クリーンデータを意味する情報を含んだ前記ページ属性情報に対応し有効データを記憶しているページについて、前記有効データの無効化の可否を前記プロセッサに問い合わせ、前記プロセッサから無効化が可能である旨の応答を受けた場合、前記有効データを無効化する、
    請求項7に記載のストレージシステム。
  9. 前記キャッシュコントローラは、前記キャッシュメモリに格納される期間の長さが所定値以上異なるデータ同士が異なるブロックに格納されるように前記格納先ブロックを選択する、
    請求項1に記載のストレージシステム。
  10. 前記プロセッサが、前記複数の記憶デバイスをRAIDとして制御し、前記複数の記憶デバイスのいずれかに記憶されている更新前のデータである旧データを、前記旧データの更新後のデータである新データに更新する場合に、冗長コードであるパリティを生成する処理において、
    前記プロセッサは、
    前記旧データと、前記旧データに関連付けられている旧パリティとを、前記複数の記憶デバイスから読み出し、前記旧データと、前記旧データを示す属性情報とを、前記キャッシュメモリに送信し、且つ、前記旧パリティと、前記旧パリティを示す属性情報とを、前記キャッシュメモリに送信し、
    前記キャッシュコントローラは、
    前記旧データを示す属性情報と、前記旧パリティを示す属性情報とに基づいて、前記旧データの前記格納先ブロックと前記旧パリティの前記格納先ブロックとして同じブロックを選択する、
    請求項1に記載のストレージシステム。
  11. 前記プロセッサは、前記新データと、前記新データを示す属性情報とをキャッシュメモリに送信し、
    前記キャッシュコントローラは、
    前記旧データを示す属性情報と、前記旧パリティを示す属性情報と、前記新データを示す属性情報とに基づいて、前記新データの前記格納先ブロックとして、前記旧データ及び前記旧パリティの前記格納先ブロックと異なるブロックを選択する、
    請求項10に記載のストレージシステム。
  12. 前記属性情報は、前記属性情報が示すデータが、前記記憶デバイスに格納されているデータであるクリーンデータであるか、前記記憶デバイスに格納されていないデータであるダーティデータであるかを示す情報を含んでおり、
    前記キャッシュコントローラは、前記属性情報に基づいて、前記クリーンデータであるデータと前記ダーティデータであるデータとが異なるブロックに格納されるように前記格納先ブロックを選択する、
    請求項1に記載のストレージシステム。
  13. 前記属性情報は、前記属性情報が示すデータが、前記記憶デバイスに格納されているデータであるクリーンデータであるか、前記記憶デバイスに格納されていないデータであるダーティデータであるかを示す情報を含んでおり、
    前記キャッシュコントローラは、前記ブロックの各ページの属性を示すページ属性情報をさらに有し、
    前記キャッシュコントローラは、前記プロセッサから受信した属性情報が前記クリーンデータを示している場合、前記受信した属性情報が示すデータの、前記格納先ブロックにおける格納先ページ、に対応したページ属性情報を、前記クリーンデータを意味する情報を含んだページ属性情報に更新し、
    前記キャッシュコントローラは、
    前記クリーンデータを意味する情報を含んだ前記ページ属性情報に対応し有効データを記憶しているページについて、前記有効データの無効化の可否を前記プロセッサに問い合わせ、前記プロセッサから無効化が可能である旨の応答を受けた場合、前記有効データを無効化する、
    請求項1に記載のストレージシステム。
  14. キャッシュコントローラと記憶媒体として不揮発性半導体メモリとを有するキャッシュメモリのキャッシュコントロール方法であって、
    前記不揮発性半導体メモリは、複数のブロックを有し、前記複数のブロックのそれぞれは、データの消去単位であり、且つ、複数のページを有し、前記複数のページのそれぞれは、データの書き込み及び読み出しの単位であり、
    前記キャッシュコントロール方法は、
    データと、前記データが前記キャッシュメモリに格納される期間に関連する情報を含む属性情報とを受信し、
    前記受信した属性情報と、前記複数のブロックに格納されているデータの属性情報とに基づいて、前記受信したデータを格納する格納先ブロックを選択し、
    前記選択した格納先ブロック内のページに、前記受信したデータを書き込む
    ことを特徴とするキャッシュコントロール方法。


JP2015551259A 2013-01-31 2013-01-31 ストレージシステム及びキャッシュコントロール方法 Expired - Fee Related JP6017065B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/000540 WO2014118822A1 (en) 2013-01-31 2013-01-31 Storage system and cache control method

Publications (2)

Publication Number Publication Date
JP2016503927A true JP2016503927A (ja) 2016-02-08
JP6017065B2 JP6017065B2 (ja) 2016-10-26

Family

ID=47754925

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015551259A Expired - Fee Related JP6017065B2 (ja) 2013-01-31 2013-01-31 ストレージシステム及びキャッシュコントロール方法

Country Status (3)

Country Link
US (1) US9367469B2 (ja)
JP (1) JP6017065B2 (ja)
WO (1) WO2014118822A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017216887A1 (ja) * 2016-06-15 2017-12-21 株式会社日立製作所 情報処理システム
JP2018022404A (ja) * 2016-08-05 2018-02-08 富士通株式会社 ストレージシステム、ストレージ制御装置およびストレージ制御プログラム
JP2021140838A (ja) * 2020-03-03 2021-09-16 株式会社東芝 磁気ディスク装置、および磁気ディスク装置のメモリ管理方法

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9122588B1 (en) * 2013-03-15 2015-09-01 Virident Systems Inc. Managing asymmetric memory system as a cache device
US9471489B2 (en) * 2014-03-28 2016-10-18 National Taiwan University Caching method and data storage system capable of prolonging service lifetime of a cache memory
US9478274B1 (en) 2014-05-28 2016-10-25 Emc Corporation Methods and apparatus for multiple memory maps and multiple page caches in tiered memory
US9535844B1 (en) 2014-06-30 2017-01-03 EMC IP Holding Company LLC Prioritization for cache systems
JP6396161B2 (ja) * 2014-10-02 2018-09-26 株式会社東芝 ストレージ装置、ストレージ装置の制御プログラム、及び、ストレージ装置の制御方法
US10235054B1 (en) 2014-12-09 2019-03-19 EMC IP Holding Company LLC System and method utilizing a cache free list and first and second page caches managed as a single cache in an exclusive manner
JP2016184372A (ja) * 2015-03-27 2016-10-20 富士通株式会社 ストレージシステム,情報処理装置,パリティ生成プログラム及びパリティ生成方法
US10152424B1 (en) * 2015-09-30 2018-12-11 EMC IP Holding Company LLC Write reduction system and method
WO2017077602A1 (ja) 2015-11-04 2017-05-11 株式会社 東芝 ストレージ装置、ストレージ装置の制御プログラムを記憶するコンピュータ読み取り可能な不揮発性記憶媒体、及び、ストレージ装置の制御方法
US20170315928A1 (en) * 2016-04-28 2017-11-02 Netapp, Inc. Coarse-grained cache replacement scheme for a cloud-backed deduplication storage system
CN109725824A (zh) * 2017-10-27 2019-05-07 伊姆西Ip控股有限责任公司 用于向存储系统中的盘阵列写入数据的方法和设备
WO2019138328A1 (en) * 2018-01-09 2019-07-18 Hossein Asadi Reconfigurable caching
CN111104047B (zh) * 2018-10-25 2023-08-25 伊姆西Ip控股有限责任公司 管理冗余磁盘阵列的方法、设备和计算机可读存储介质
JP7353934B2 (ja) 2019-11-19 2023-10-02 キオクシア株式会社 メモリシステムおよび制御方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008262452A (ja) * 2007-04-13 2008-10-30 Matsushita Electric Ind Co Ltd 記録デバイスのキャッシュ方法および記録装置
US20100100664A1 (en) * 2008-10-21 2010-04-22 Hitachi, Ltd. Storage system
WO2011031796A2 (en) * 2009-09-08 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for caching data on a solid-state storage device
US20120054421A1 (en) * 2010-08-25 2012-03-01 Hitachi, Ltd. Information device equipped with cache memories, apparatus and program using the same device
US20130024599A1 (en) * 2011-07-20 2013-01-24 Futurewei Technologies, Inc. Method and Apparatus for SSD Storage Access

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5297258A (en) * 1991-11-21 1994-03-22 Ast Research, Inc. Data logging for hard disk data storage systems
US5504858A (en) * 1993-06-29 1996-04-02 Digital Equipment Corporation Method and apparatus for preserving data integrity in a multiple disk raid organized storage system
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
US5485571A (en) * 1993-12-23 1996-01-16 International Business Machines Corporation Method and apparatus for providing distributed sparing with uniform workload distribution in failures
US5542066A (en) * 1993-12-23 1996-07-30 International Business Machines Corporation Destaging modified data blocks from cache memory
US5657468A (en) * 1995-08-17 1997-08-12 Ambex Technologies, Inc. Method and apparatus for improving performance in a reduntant array of independent disks
US5859965A (en) * 1996-12-17 1999-01-12 Sun Microsystems, Inc. Method and apparatus for maintaining data consistency in raid
US6298415B1 (en) * 1999-02-19 2001-10-02 International Business Machines Corporation Method and system for minimizing writes and reducing parity updates in a raid system
JP3458804B2 (ja) * 1999-12-27 2003-10-20 日本電気株式会社 情報記録装置およびその制御方法
WO2002033551A1 (en) * 2000-10-18 2002-04-25 Tricord Systems, Inc. Controller fault recovery system for a distributed file system
US8140860B2 (en) * 2003-12-15 2012-03-20 International Business Machines Corporation Policy-driven file system with integrated RAID functionality
US7380055B2 (en) * 2004-06-21 2008-05-27 Dot Hill Systems Corporation Apparatus and method in a cached raid controller utilizing a solid state backup device for improving data availability time
JP4435705B2 (ja) * 2005-03-14 2010-03-24 富士通株式会社 記憶装置、その制御方法及びプログラム
US20060212644A1 (en) * 2005-03-21 2006-09-21 Acton John D Non-volatile backup for data cache
US7555620B1 (en) * 2006-04-28 2009-06-30 Network Appliance, Inc. Method and system of using a backup image for multiple purposes
US8620970B2 (en) * 2006-10-03 2013-12-31 Network Appliance, Inc. Methods and apparatus for changing versions of a filesystem
US8151082B2 (en) * 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US8219749B2 (en) * 2007-04-27 2012-07-10 Netapp, Inc. System and method for efficient updates of sequential block storage
WO2009079478A1 (en) * 2007-12-14 2009-06-25 Virident Systems, Inc. Distributing metadata across multiple different disruption regions within an asymmetric memory system
US8549222B1 (en) * 2008-02-12 2013-10-01 Netapp, Inc. Cache-based storage system architecture
US8612668B2 (en) * 2008-11-24 2013-12-17 Juniper Networks, Inc. Storage optimization system based on object size
US8468292B2 (en) * 2009-07-13 2013-06-18 Compellent Technologies Solid state drive data storage system and method
US8463983B2 (en) * 2009-09-15 2013-06-11 International Business Machines Corporation Container marker scheme for reducing write amplification in solid state devices
US8234520B2 (en) * 2009-09-16 2012-07-31 International Business Machines Corporation Wear leveling of solid state disks based on usage information of data and parity received from a raid controller
US20110107042A1 (en) * 2009-11-03 2011-05-05 Andrew Herron Formatting data storage according to data classification
US8880843B2 (en) * 2010-02-10 2014-11-04 International Business Machines Corporation Providing redundancy in a virtualized storage system for a computer system
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
US8386714B2 (en) * 2010-06-29 2013-02-26 International Business Machines Corporation Reducing write amplification in a cache with flash memory used as a write cache
US20120011319A1 (en) * 2010-07-01 2012-01-12 Infinidat Ltd. Mass storage system and method of operating thereof
US8560772B1 (en) * 2010-12-29 2013-10-15 Datadirect Networks, Inc. System and method for data migration between high-performance computing architectures and data storage devices
US8832371B2 (en) * 2011-04-04 2014-09-09 Hitachi, Ltd. Storage system with multiple flash memory packages and data control method therefor
US8650471B2 (en) * 2011-06-28 2014-02-11 Dell Products L.P. System and method for look-aside parity based raid
TWI457757B (zh) * 2011-12-01 2014-10-21 Silicon Motion Inc 快閃記憶體儲存陣列控制方法、與快閃記憶體
US8984374B2 (en) * 2012-04-27 2015-03-17 Hitachi, Ltd. Storage system and storage control apparatus
US20130339569A1 (en) * 2012-06-14 2013-12-19 Infinidat Ltd. Storage System and Method for Operating Thereof
US9846641B2 (en) * 2012-06-18 2017-12-19 International Business Machines Corporation Variability aware wear leveling
US9135156B2 (en) * 2012-10-29 2015-09-15 Broadcom Corporation Dynamically configurable memory
US8990512B2 (en) * 2012-10-31 2015-03-24 Intel Corporation Method and apparatus for error correction in a cache

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008262452A (ja) * 2007-04-13 2008-10-30 Matsushita Electric Ind Co Ltd 記録デバイスのキャッシュ方法および記録装置
US20100100664A1 (en) * 2008-10-21 2010-04-22 Hitachi, Ltd. Storage system
JP2010102369A (ja) * 2008-10-21 2010-05-06 Hitachi Ltd ストレージシステム
WO2011031796A2 (en) * 2009-09-08 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for caching data on a solid-state storage device
JP2013504142A (ja) * 2009-09-08 2013-02-04 フュージョン−アイオー・インコーポレーテッド ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法
US20120054421A1 (en) * 2010-08-25 2012-03-01 Hitachi, Ltd. Information device equipped with cache memories, apparatus and program using the same device
JP2012048361A (ja) * 2010-08-25 2012-03-08 Hitachi Ltd キャッシュを搭載した情報装置及びそれを用いた情報処理装置並びにプログラム
US20130024599A1 (en) * 2011-07-20 2013-01-24 Futurewei Technologies, Inc. Method and Apparatus for SSD Storage Access

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017216887A1 (ja) * 2016-06-15 2017-12-21 株式会社日立製作所 情報処理システム
JPWO2017216887A1 (ja) * 2016-06-15 2019-01-17 株式会社日立製作所 情報処理システム
US10853268B2 (en) 2016-06-15 2020-12-01 Hitachi, Ltd. Parity generating information processing system
JP2018022404A (ja) * 2016-08-05 2018-02-08 富士通株式会社 ストレージシステム、ストレージ制御装置およびストレージ制御プログラム
JP2021140838A (ja) * 2020-03-03 2021-09-16 株式会社東芝 磁気ディスク装置、および磁気ディスク装置のメモリ管理方法
JP7179794B2 (ja) 2020-03-03 2022-11-29 株式会社東芝 磁気ディスク装置、および磁気ディスク装置のメモリ管理方法

Also Published As

Publication number Publication date
US20150324294A1 (en) 2015-11-12
US9367469B2 (en) 2016-06-14
WO2014118822A1 (en) 2014-08-07
JP6017065B2 (ja) 2016-10-26

Similar Documents

Publication Publication Date Title
JP6017065B2 (ja) ストレージシステム及びキャッシュコントロール方法
US10210084B1 (en) Multi-leveled cache management in a hybrid storage system
US9128847B2 (en) Cache control apparatus and cache control method
JP5593577B2 (ja) ストレージシステム及びその制御情報の管理方法
JP6007329B2 (ja) ストレージコントローラ、ストレージ装置、ストレージシステム
JP5437373B2 (ja) 複数のフラッシュパッケージを有するストレージシステム
JP5937697B2 (ja) ストレージシステム
JP6062060B2 (ja) ストレージ装置、ストレージシステム、及びストレージ装置制御方法
US9009396B2 (en) Physically addressed solid state disk employing magnetic random access memory (MRAM)
JP5808854B2 (ja) ストレージシステム及びストレージ方法
JP2009199199A (ja) ストレージシステム及びそのデータライト方法
JP2007156597A (ja) ストレージ装置
WO2016067328A1 (ja) 不揮発メモリデバイスを有するストレージ装置、及び、不揮発メモリデバイス
JP6306737B2 (ja) 半導体メモリデバイス、及び、半導体メモリデバイスを有するストレージ装置
US10296229B2 (en) Storage apparatus
US9223655B2 (en) Storage system and method for controlling storage system
US20150339058A1 (en) Storage system and control method
US20160259571A1 (en) Storage subsystem
JP5820078B2 (ja) 記憶装置システム
JP2010152778A (ja) 半導体記憶装置
JP6817340B2 (ja) 計算機
US9734067B1 (en) Write buffering
WO2019038859A1 (ja) 不揮発メモリデバイスを有するストレージシステム
JP5768118B2 (ja) 複数のフラッシュパッケージを有するストレージシステム
US20200151098A1 (en) Write buffering

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160615

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160628

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160825

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160927

R150 Certificate of patent or registration of utility model

Ref document number: 6017065

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees