JP2013156977A - 冗長キャッシュデータのエラスティックキャッシュ - Google Patents

冗長キャッシュデータのエラスティックキャッシュ Download PDF

Info

Publication number
JP2013156977A
JP2013156977A JP2012258390A JP2012258390A JP2013156977A JP 2013156977 A JP2013156977 A JP 2013156977A JP 2012258390 A JP2012258390 A JP 2012258390A JP 2012258390 A JP2012258390 A JP 2012258390A JP 2013156977 A JP2013156977 A JP 2013156977A
Authority
JP
Japan
Prior art keywords
circuit
extents
data
cache
extent
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.)
Withdrawn
Application number
JP2012258390A
Other languages
English (en)
Other versions
JP2013156977A5 (ja
Inventor
Ish Mark
マーク・イッシュ
Baderdinni Anant
アナント・バデルディニイ
J Smerdon Gary
ゲアリー・ジェイ・スメルドン
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.)
LSI Corp
Original Assignee
LSI Corp
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 LSI Corp filed Critical LSI Corp
Publication of JP2013156977A publication Critical patent/JP2013156977A/ja
Publication of JP2013156977A5 publication Critical patent/JP2013156977A5/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/285Redundant cache memory

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)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】冗長キャッシュデータのエラスティックキャッシングのための装置を提供する。
【解決手段】装置は、複数のバッファ及び回路を有する。回路は、(i)ストレージボリュームに書き込みデータを格納するために、ホストから書き込み要求を受信し、(ii)書き込み要求に関連した冗長構成に基づいて、バッファに複数のエクステントを割り当て、(iii)複数のエクステントに書き込みデータを格納するように構成され、(a)複数のエクステントのそれぞれは、バッファの異なる1つに配置され、(b)複数のエクステントは、書き込み要求に応じてダイナミックに相互リンクされる。
【選択図】図1

Description

本発明は、一般に、ストレージデバイスキャッシングに係り、特に、冗長キャッシュデータのエラスティックキャッシュを実現するための方法及び/又は装置に関する。
従来のストレージシステムでは、システムとアプリケーションの全体的なパフォーマンスは、頻繁にアクセスされるデータをキャッシュすることによって向上する。多くのアプリケーションでは、キャッシュがライトバックモードを用いる場合、作業負荷は利益を得ると共にパフォーマンスは向上する。ライトバックモードで保持されたキャッシュデータは、冗長性の提供によってデータ損失から時々保護される。冗長性は、キャッシュコントローラの2つのフラッシュモジュールに対して共通して実現される。両方のフラッシュモジュールは永続的にミラーリングを用いて対にされ、1つのフラッシュモジュールにキャッシュデータを保持するために利用可能なスペースを効果的に低減する。いくつかのホストデータのみが冗長性から利益を得ると仮定すれば、非能率的な利用はフラッシュモジュールの利用可能なスペースで生じさせられる。
冗長キャッシュデータのエラスティックキャッシュを実現することが望まれる。
本発明は、冗長キャッシュデータのエラスティックキャッシングのための装置に関する。装置は、複数のバッファ及び回路を有する。回路は、(i)ストレージボリュームに書き込みデータを格納するためにホストから書き込み要求を受信し、(ii)書き込み要求に関連する冗長構成に基づいてバッファに複数のエクステントを割り当て、(iii)複数のエクステントに書き込みデータを格納して、(a)複数のエクステントのそれぞれがバッファの異なる1つに位置され、 (b)複数のエクステントが書き込み要求に応じてダイナミックに相互リンクされるように構成される。
本発明の目的、特徴、及び利点は、(i)追加の効果的なキャッシュスペースを提供し、(ii)一般の技術と比較して規定の量のキャッシュメディアのために優れたキャッシュ保証範囲を提供し、(iii)既存のエクステント構成を用い、(iv)既存のマネジメントインフラストラクチャを用い、(v)キャッシュ冗長性のための様々なRAIDレベルを実現し、(vi)一般の技術と比較して規定の量のホスト入力/出力動作のためのバッファ書き込みの数を低減し、(vii)規定のホスト入力/出力動作のためのフラッシュメモリバッファの耐用年数を向上させ、及び/又は(viii)キャッシュデータのための大規模なバッファとしてのソリッドステートドライバを実現する、冗長キャッシュデータのエラスティックキャッシュを実現するための方法及び/又は装置を提供することを含む。
これら及び他の本発明の目的、特徴、及び利点は、以下の明細書、添付された特許請求の範囲、及び図面から明らかになる。
システムの実施の形態の一例のブロック図である。 本発明の好適な実施の形態によるシステムにおけるキャッシュ回路の実施の形態の一例のブロック図である。 エクステントの構成の一例の図である。 キャッシュデータの一例の図である。 エクステントのグループのいくつかの一例の図である。 エラスティックミラーキャッシュを有するキャッシュ構成の一例の図である。 書き込み要求を処理するための方法の一例の流れ図である。 読み取り要求を処理するための方法の一例の流れ図である。 エクステントを割り当てるための方法の一例の流れ図である。 エクステントを解放するための方法の一例の流れ図である。 キャッシュ回路に不正な書き込みをエラスティックにミラーリングすることによって得られるスペースを図示するグラフの図である。
本発明のいくつかの実施の形態は、キャッシュスペースの書き込み部分に冗長性を提供するために利用可能なキャッシュスペースをエラスティックに用いる。エラスティック方式は、一般に、読み取りデータ及び/又は非保護(例えば、非冗長)の書き込みデータをバッファするためにキャッシュスペースの全ての利用可能な部分を増加させるインテリジェントなマネジメント技術によって実現される。更に、エラスティックアプローチは、アグリゲーション(例えば、いくつかのデータは、ストレージとキャッシュが複数のノード(サーバ)に亘って共有される場合のように、エクステントベース毎に別々のフィジカルデバイス上にミラーリングされミラーリングされたエクステントの一部のそれぞれは、別々のノードに存在する。)及びポリシー選択(例えば、いくつかのストレージディスクは、保護(又は冗長)キャッシュデータを利用し、いくつかは、選択されたポリシーに基づいてキャッシュデータを保護しない。)等の他の利益を与えるためにモデル化される。
図1を参照すると、システム90の実施の形態の一例のブロック図が示される。システム(又は装置)90は、一般に、ブロック(又は回路)92、ブロック(又は回路)94、ネットワーク(又はバス)96、ネットワーク(又はバス)97、及びブロック(又は回路)100を備える。回路94は、一般に、複数のブロック(又は回路)98a〜98nを備える。回路100は、一般に、ブロック(又は回路)102及びブロック(又は回路)104を備える。回路92〜104は、ハードウェア、ソフトウェア、ハードウェアとソフトウェアとの組み合わせ、又は他の実装として実現されるモジュール及び/又はブロックを表す。
双方向性の信号(例えば、DH)は、ネットワーク96を通じて回路92と回路100との間で交換される。信号DHは、回路92と回路100との間で、データ(例えば、読み取りデータ及び/又は書き込みデータ)、要求、及びステータス情報を通信するために用いられる。双方向性の信号(例えば、DB)は、回路102と回路104との間で交換される。信号DBは、回路102と回路104との間で、キャッシュデータ及びメタデータを伝達する。双方向性の信号(例えば、DS)は、ネットワーク97を通じて回路94と回路100との間で交換される。信号DSは、回路100と回路94との間で、データ及び関連するコマンド(例えば、読み取りコマンド、書き込みコマンド、及び設定コマンド)を転送する。
回路92は、1つ以上のホスト回路(又はサーバ)及び/又は1つ以上のソフトウェアアプリケーションを実現する。回路92は、一般に、信号DH及びDSで、回路100及びネットワーク96を通じて回路94の間でデータを読み取り及び/又は書き込みするために使用可能である。回路92は、信号DHで、回路100に対応アドレス情報(例えば、論理的ブロックアドレス(LBA))と共に要求(例えば、読み取り要求及び書き込み要求)を送信するためにも使用可能である。更に、回路92は、信号DHで、回路100にコマンド(例えば、プリフェッチ、フラッシュ、設定等)を送信するために使用可能である。信号DHは、回路100から回路92にステータス情報(例えば、キャッシュヒット、キャッシュミス等)を伝達するように回路100によって制御される。
回路94は、1つ以上のストレージボリュームを実現する。回路94は、一般に、書き込みコマンドに応じて回路100から受信されたデータを信号DSを通じて格納するために使用可能である。回路94は、読み取りコマンドに応じて回路100にデータを信号DSを通じて送信するために使用可能である。ストレージボリュームは、論理ボリューム、仮想ボリューム、及び/又は物理ボリュームとして実現される。回路94は、ストレージエリアネットワーク(SAN)、ネットワーク接続ストレージ(NAS)、及び/又はディスクアレイサブシステム(DAS)アーキテクチャの一部である。
ネットワーク96は、1つ以上のデジタル通信ネットワーク及び/又はバスを実現する。ネットワーク96は、一般に、回路92と回路100との間の通信を提供するために使用可能である。ネットワーク96の実装は、限定されるものではないが、インターネット、イーサネット(登録商標)、ファイバ光ネットワーク、無線ネットワーク、有線ネットワーク、高周波通信ネットワーク、及び/又はバックプレーンバスの1つ以上を含む。
ネットワーク97は、1つ以上のデジタル通信ネットワーク及び/又はバスを実現する。ネットワーク97は、一般に、回路94と回路100との間の通信を提供するために使用可能である。ネットワーク97の実装は、限定されるものではないが、インターネット、イーサネット(登録商標)、ファイバ光ネットワーク、無線ネットワーク、有線ネットワーク、高周波通信ネットワーク、及び/又はバックプレーンバスの1つ以上を含む。
回路98a〜98nのそれぞれは、マスストレージドライブを実現する。いくつかの実施の形態では、回路98a〜98nのそれぞれは、ハードディスクドライブ(例えば、HDD)を実現する。回路98a〜98nは、一般に、回路100の間でデータを信号DSを通じて格納及び送信するために使用可能である。回路98a〜98nは、1つ以上のストレージボリュームとして配置及び作動される。いくつかの実施の形態では、回路98a〜98nは、1つ以上の冗長で独立したディスク(例えば、RAID)構成として編成及び作動される。RAID構成は、限定されるものではないが、RAID0、RAID1、RAID2、RAID3、RAID4、RAID5、RAID6、RAID7、RAID10、RAID53、及び/又はRAID0+1構成を含む。他のレベルのRAID構成は、特定用途の基準を満たすために実現される。更に、複数の異なるRAID構成は、回路98a〜98nによって同時に表される。
回路100は、キャッシュ回路を実現する。回路100は、一般に、回路92と回路94との間で交換されるデータをキャッシュするために使用可能である。キャッシングは、回路92から回路94に転送される書き込みデータのためのライトバック(又はライトビハインド)ポリシーを実現する。不正な書き込みデータは、複数のメディアの間に亘る冗長構成を用いて回路100によってバッファされる。冗長構成及びスプレッディングは、1つのメディアの故障が故障したメディアの書き込みデータの一部又は全てにアクセス不能及び/又は消失を引き起こした後に保持される不正な書き込みデータにアクセスするように構成される。回路100は、回路92、回路94、又は中間点に位置するキャッシュを実現する。いくつかの実施の形態では、回路100は1つ以上の集積回路として実現される。
回路102は、複数のバッファ回路を実現する。回路102は、回路92と回路94との間で転送されるキャッシュ(又はバッファ)データを格納するために使用可能である。回路102は、キャッシュデータに関連するメタデータを格納するためにも使用可能である。キャッシュデータは、エクステントに配列される。エクステントのそれぞれは、特定のデータファイル又はソフトウェアプログラムのために予約されたストレージスペースの連続的なブロックを表す。メタデータは、一般に、エクステントを管理するために用いられる情報を備える。いくつかの実施の形態では、回路102は、回路100に対して完全に内部(示されたように)、回路100に対して完全に外部、回路100に対して部分的に内部及び外部に実現されるか、又は複数のノード(又はサーバ)に亘って集合される。
回路104は、コントローラデバイスを実現する。回路104は、回路94に書き込みデータを格納するために回路92から書き込み要求を受信し、書き込み要求に関連する冗長構成に基づいて回路102の複数のバッファに複数のエクステントを割り当て、複数のエクステントに書き込みデータを格納するために使用可能である。複数のエクステントのエクステントのそれぞれは、一般に、異なるバッファに配置される。複数のエクステントは、書き込み要求に応じてダイナミックに相互リンクされる。回路104は、バッファから回路94に書き込みデータを複製することに応じて複数のエクステントの少なくとも1つをアンリンクするためにも使用可能である。いくつかの実施の形態では、回路104は、1つ以上の集積回路として実現される。
図2を参照すると、回路100の実施の形態の一例のブロック図が本発明の好適な実施の形態に従って示される。回路102は、一般に、複数のブロック(又は回路)106a〜106nを備える。回路104は、一般に、ブロック(又はモジュール)108、ブロック(又はモジュール)110、及びブロック(又はモジュール)112を備える。回路106a〜106nは、ハードウェア、ソフトウェア、ハードウェアとソフトウェアとの組み合わせ、又は他の実装として実現されるモジュール及び/又はブロックを表す。モジュール108〜112は、回路104を制御するために実行されるファームウェア(又はソフトウェア、プログラム命令、又はコード)として実現される。
信号DHは、回路104によってインタフェース114を通じて送信及び受信される。信号DSは、回路104によってインタフェース116を通じて送信及び受信される。信号DBは、複数の信号(例えば、DBa〜DBn)として実現される。信号DBa〜DBnのそれぞれは、一般に、回路104のインタフェース118a〜118nと回路106a〜106nの対応するインタフェース120a〜120nとの間の通信を確立する。
回路106a〜106nのそれぞれは、バッファ回路を実現する。回路106a〜106nのそれぞれは、キャッシュデータ及び関連するメタデータを格納するために使用可能である。いくつかの実施の形態では、回路106a〜106nのそれぞれは、ソリッドステートドライブ(例えば、SSD)として実現される。ソリッドステートドライブの一般のサイズは、1から2テラバイトに及ぶ。他の実施の形態では、回路106a〜106nのそれぞれは、フラッシュドライブとして実現される。フラッシュメモリの一般のサイズは、1から32ギガバイトに及ぶ。更に別の実施の形態では、回路106a〜106nのそれぞれは、ダブルデータレート(例えば、DDR)メモリ回路として実現される。DDRメモリの一般のサイズは、1から64ギガバイトに及ぶ。他のサイズは、特定用途の基準を満たすために実現される。回路102の複数の回路106a〜106nは、回路94の回路98a〜98nより多いか、同じか、又は少ない。
モジュール108は、エクステントコントローラを実現する。モジュール108は、回路92から受信されたサービス要求(例えば、読み取り要求及び/又は書き込み要求)に対して回路102に1つ以上のエクステントを割り当て及び解放するために使用可能である。モジュール108は、グループ化されたスペース(例えば、読み取りスペース及び/又は書き込みスペース)を作成するために回路102のエクステントのそれぞれに関連するメタデータのパラメータを変化させるためにも使用可能である。グループ化は、冗長で保護された構成のキャッシュデータを適応する、より大規模なメモリスペース(又はスーパーエクステント)を形成するためにエクステントを相互リンクすることによって達成される。グループ化されたスペースへのエクステントの割り当て(又はリンク)は、一般に、グループの次のエクステントを指示するために関連するエクステントのパラメータのそれぞれを変更することを含む。指示は、1つ以上の最初のエクステントから1つ以上の最後のエクステントまでのチェーンにおいて継続する。最後のエクステントのパラメータは、リンクを閉じるために最初のエクステントへ指示する。また、モジュール108は、エクステント及び/又はより小さなグループ化されたスペースのそれぞれの後にグループ化されたスペースをディゾルブするためにメタデータのパラメータを変更する。キャッシュデータが非冗長構成でバッファされる状況では、モジュール108は、エクステントがバッファキャッシュデータに現在用いられていることを示すために、割り当てられた(又はヌル)値に対して1つ以上のエクステントのパラメータを変更する。エクステントがもはやバッファキャッシュデータに用いられていないとき、モジュール108は、解放された(又は未使用の)値に関連するパラメータを変更する。
モジュール110は、キャッシュコントローラを実現する。モジュール110は、スタンダードキャッシュ動作及びスタンダードキャッシュポリシーを実行するために使用可能である。キャッシュ動作は、一般に、限定されるものではないが、回路102にデータを書き込むこと、回路102からキャッシュ(又はバッファ)データを読み取ること、回路102にメタデータを書き込むこと、回路102からメタデータを読み取ること、キャッシュデータのタグを探索すること、マッチするタグが発見されたときにキャッシュヒットを示すこと、マッチしないタグが発見されたときにキャッシュミスを示すこと、回路102の不正な書き込みデータを追跡すること、回路94に不正な書き込みデータをフラッシュ(例えば、複製)すること、有効及び無効のキャッシュラインを追跡すること、有効及び無効のキャッシュワードを追跡すること等を含む。モジュール110は、キャッシュデータの保持及び移転に関する1つ以上のキャッシュポリシーを実現するためにも使用可能である。キャッシュポリシーは、限定されるものではないが、不正な書き込みデータのためのライトバックモード、いくつかのタイプの書き込みデータのためのライトスルーモード、いくつかのタイプの書き込みデータの冗長(又は保護)バッファ、他のタイプの書き込みデータの非冗長(又は非保護)バッファ、不正な書き込みデータのための1つ以上のフラッシュポリシー、回路102内のスペースをクリアするための1つ以上のリムーバルポリシー等を含む。
モジュール112は、RAIDコントローラを実現する。モジュール112は、一般に、回路102にバッファされ、データに割り当てられたRAIDポリシーに基づいて様々なRAID構成の回路94に格納されたデータを編成(又は配置若しくはフォーマット)するために使用可能である。
書き込みデータが保護されるべき回路92から受信されたとき、モジュール112は、RAID構成の間で規定の構成に書き込みデータを再配置する。再配置された書き込みデータは、書き込みデータのサイズ(例えば、書き込みデータによってどのくらいのエクステント境界を横断するか)、及び書き込み要求に対応するRAID構成(例えば、RAID0、RAID3、RAID5等)に基づいて回路106a〜106nの2つ以上に続いて格納される。データ保護の他の形式は、特定用途の基準を満たすために実現される。
保護されたキャッシュデータが回路102から回路92に送信されたとき、モジュール112は、エラーがあるかデータをチェックし、エラーがある場合にはエラーを修正するために使用可能である。また、データがストライプされている場合、モジュール112は、要求されたデータが回路92に送信される前に、対応するブロックの後にスタイプを収集する。
回路102から回路94へのRAIDの保護された書き込みデータの転送は、RAID構成にデータを保持する間に実行される。例えば、データがミラーリングするRAID1構成にある場合、データは、信号DB及びDSを通じて2つの回路106a〜106n(例えば、106a及び106b)から対応する2つの回路98a〜98n(例えば、98f及び98g)に転送される。別の一例で、データが2つのストライプエクステントによるパリティエクステントを利用するRAID3構成にある場合、データは、ネットワーク97を通じて3つの回路106a〜106n(例えば、106a、106b、及び106c)から対応する3つの回路98a〜98n(例えば、98d、98g、及び98k)に転送される。
回路94から回路102へのいくつかのRAID保護された格納データ(例えば、読み取りデータ)の転送は、回路94からモジュール112へのRAID構成、及びモジュール112から回路102への非冗長構成で実行される。例えば、RAID3構成で格納されたデータは、回路94からモジュール112に3つのパラレル転送(例えば、2つのエクステント及び1つのパリティエクステント)として複製される。通常、モジュール112は、エラーチェックとエラー訂正を実行し、回路102に格納データの1つの非冗長な複製を転送する。
図3を参照すると、エクステント140の構成の一例の図が示される。回路102のキャッシュデータ及び回路94の格納データは、エクステント(又はウィドウ)の形式で編成される。エクステントのそれぞれは、一般に、データを割り当て、解放し、追跡し、管理するために1つのユニットとして扱われる、連続するデータブロックの集合を表す。エクステント140の一例は、一般に、データの複数のライン142a〜142nを備える。ライン142a〜142nのそれぞれは、複数のデータブロック144a〜144nを備える。データブロック144a〜144nのそれぞれは、一般に、複数のバイト、ワード、又はデータの他のユニットを備える。更に、データブロック144a〜144nのそれぞれは、対応する論理的ブロックアドレス(例えば、LBA A〜LBA N)を有する。エクステントの他の構成は、特定用途の基準を満たすために実現される。
図4を参照すると、キャッシュデータの一例の図が示される。その一例は、冗長性のためのRAID1構成を示す。簡単のために、2つの回路106a〜106n(例えば、106a〜106b)のみが示される。回路106a〜106bのそれぞれは、1つ以上のエクステント及び対応するメタデータとして編成される。いくつかのエクステント(例えば、WRITEエクステント)は、回路94にコミットされていない不正な書き込みデータを伝送する。他のエクステント(例えば、READエクステント)は、いくつかの基礎的なキャッシュ基準に基づいて回路94からキャッシュデータを伝送する。不正な書き込みデータを伝送する書き込みエクステントは、回路106a又は106bが失敗した場合に、冗長性保護を用いてバッファされる。キャッシュ読み取りを伝送する他の全てのエクステントは、回路106a又は106bの故障で失われたキャッシュデータが、故障の後に回路94から動作中の回路106a又は106bに再び占められるので、冗長性保護なしでバッファされる。
図5を参照すると、回路102内のエクステントのグループのいくつかの例の図が示される。図示された一例では、回路102は、回路106a〜106dを含む。より少ないかより多くの回路106a〜106nが、特定用途の基準を満たすために実現される。示されるように、エクステントの複数のグループ、複数のタイプのグループ(例えば、RAID1、RAID3、RAID4、RAID5、RAID10、RAID0+1等)、及び/又は複数のグループでないエクステント(例えば、READ及びWRITEエクステント)は、回路102に同時に存在する。
エクステント及び対応するメタデータのそれぞれは、既存の方法(又は技術)を用いて管理される。特に、エクステントのそれぞれは、エクステントの追跡及び識別のために固有のエクステント識別番号を用いる。ホスト入力/出力要求毎に、ホスト要求を処理するべく適切なエクステントを捜し出すために、LBAがエクステントにマッピングされる。冗長な保護に用いられた別のエクステントの識別番号を追跡するために、パラメータ(又はフィールド)が、エクステントのそれぞれのメタデータに加えられる。
1つのエクステント内の書き込みデータが回路100によって回路92から受信されたとき、2つ以上のエクステントがグループに割り当てられる。対応するパラメータは、ループで互いを指示(又はリンク)するためにアップデートされる。1つのグループのエクステントのそれぞれが異なる回路106a〜106nに配置されるように、グループにエクステントの割り当てが配列される。
いくつかの実施の形態では、書き込みデータが複数のエクステントに亘り、及び/又はエクステント境界を横断する場合には、2つ以上のエクステントのセットは大規模なエクステントとして扱われる。2つ以上の大規模なエクステントは、グループに割り当てられ、対応するパラメータは、ループで互いを指示するためにアップデートされる。大規模なエクステントのセットのそれぞれは、異なる回路106a〜106nに配置される。例えば、RAID1グループ150は、一般に、回路106bの2つのエクステントの1セット、及び回路106cの2つのエクステントの別のセットを備える。回路106bの2つのエクステントのパラメータのそれぞれは、回路106cの対応するエクステントを指示する。同様に、回路106cの2つのエクステントのパラメータのそれぞれは、回路106bの対応するエクステントを指示する。
他の実施の形態では、書き込みデータが複数のエクステントに亘り、及び/又はエクステント境界を横断する場合には、隣接するエクステントは、異なる回路106a〜106nに配置され、冗長構成毎にリンクされる。例えば、RAID3グループ152のデータは、回路106bにバッファされた最初のエクステント回路106cにバッファされた次のエクステント、及び回路106dにバッファされたパリティエクステントを有する。
キャッシュポリシーに基づいて、いくつかの書き込みデータは非冗長構成154で回路102にバッファされる。そのような非保護の書き込みデータは、回路102の故障によるデータの損失の場合には、回路92によって代替可能である。非保護の書き込みデータは、データの損失の可能性を提供する低い重要性も有する。
読み取りミスのために実行されたキャッシュ充填動作のそれぞれのために、1つ以上のエクステントの1セットは、回路102に占める位置及びデータ量に依存して、1つ以上の回路106a〜106nに割り当てられる。割り当てられたセットのパラメータのそれぞれは、対応するエクステントが非冗長構成で割り当てられていることを示す値(例えば、ヌル値又は割り当てられた値)に変更(又はプログラム)される。
エクステントのグループにおける不正な書き込みデータが回路94にフラッシュされた後、グループのエクステントは、スペースを更に割り当てに利用可能にするために解放される。エクステントは、グループから解放されたエクステントをアンリンクするために隣接するエクステントのパラメータをアップデートすることによって解放される。解放されたエクステントは、書き込みデータを保護するために用いられる冗長構成によって決定される。例えば、両方のミラーリングされたエクステントが書き込みデータの全てを含むので、RAID1構成を有するエクステントのグループは、ミラーリングされたエクステントのどちらかを解放する。RAID3構成を有するエクステントのグループは、パリティデータをバッファするために割り当てられたエクステントをアンリンクする。実データをバッファする残存するエクステントは、グループに保存される。
回路106a〜106nが故障したとき、スタンダードリカバリ技術が、残存するエクステントからホスト要求の処理のために用いられる。例えば、故障した回路106a〜106n(例えば、回路106a)のブロックを失ったRAID5構成を有するエクステント156のグループは、失ったブロックを復元するために残存する回路106a〜106n(例えば、106b及び106d)に残存するブロック及びパリティブロックを用いる。復元されたブロックは、読み取り/書き込み要求に応じるために続いて用いられる。
図6を参照すると、エラスティックにミラーリングされたキャッシュを持ったキャッシュ構成160の一例の図が示される。その一例は、一般に、2つの回路106a〜106n(例えば、106a及び106b)を用いて、ミラーリングされた構成を示す。エクステント1及びエクステント10の両方は、共通の冗長な書き込みスペース162に割り当てられる。割り当ては、(i)エクステント10の識別番号を指示するためにエクステント1に関連したパラメータ、及び(ii)エクステント1の識別番号を指示するためにエクステント10に関連したパラメータの変更によって達成される。回路106aにバッファされたエクステント4は、関連するパラメータをヌル(又は割り当てた)値に変更することによって、読み取りスペース164に割り当てられる。回路106bにバッファされた別のエクステント8は、関連するパラメータをヌル(又は割り当てた)値にアップデートすることによって、別の読み取りスペース166に割り当てられる。他のエクステント(例えば、参照番号168のエクステント12)は、データによって場所を占められていないので、対応するパラメータは解放された(又は用いられていない)値に設定される。回路106a(例えば、エクステント1〜6)に位置するエクステントのためのメタデータは、メタデータスペース170にバッファされる。回路106b(例えば、エクステント7〜12)に位置するエクステントのためのメタデータは、メタデータスペース172にバッファされる。
図7を参照すると、書き込み要求を処理する方法180の一例の流れ図が示される。方法(又は処理)180は、回路100で実現される。方法180は、一般に、ステップ(又は状態)182、ステップ(又は状態)184、ステップ(又は状態)186、ステップ(又は状態)188、ステップ(又は状態)190、及びステップ(又は状態)192を備える。ステップ182〜192は、ハードウェア、ソフトウェア、ハードウェアとソフトウェアとの組み合わせ、又は他の実装として実現されるモジュール及び/又はブロックを表す。
ステップ182では、回路104は、信号DHを通じて回路92から書き込み要求を受信する。書き込みデータのための適切なエクステントが既に回路102にあるか否かを判断するために、回路102にバッファされたキャッシュデータの探索は、回路104(例えば、モジュール110)によってステップ184で実行される。適切なエクステントが回路102(例えば、キャッシュミス)で利用可能でない場合、ステップ186で書き込み要求を処理するために、回路104(例えば、モジュール108)は、回路106a〜106nに回路102の未使用のエクステントを割り当てる。
エクステントのグループが書き込み要求を処理するために利用可能ならば、モジュール110は、ステップ188で回路94から書き込みエクステントに対応する格納データを複製する。回路94から受信された格納データが既に保護された構成(又はフォーマット)でない場合、回路104(例えば、モジュール112)は、ステップ188の一部として、保護された構成にデータを配列する。データは、続いてモジュール110によってステップ188で適切な回路106a〜106nにバッファされる。ステップ190では、モジュール110及び112は、保護された構成毎に回路92から受信された書き込みデータを編成し、回路102に書き込みデータを格納する。書き込みデータが回路94(例えば、ライトバックポリシー)にまだ複製されていないので、モジュール110は、新しく不正なものとして書き込みデータをマークするために対応するメタデータをアップデートする。
書き込みデータが回路102(例えば、キャッシュヒット)で発見された場合、モジュール108は、キャッシュヒットで生じた1つ以上の既存のエクステントに追加のエクステントを割り当ててリンクする。その後、エクステントのグループは、あたかもキャッシュミスが生じたかのように、ステップ188と同一の方法で回路94から占められる。新しい書き込みデータは、モジュール110によってステップ190で回路106a〜106nに加えられる。
図8を参照すると、読み取り要求を処理する方法200の一例の流れ図が示される。方法(又は処理)200は、回路100で実現される。方法200は、一般に、状態(又はステップ)202、状態(又はステップ)204、状態(又はステップ)206、状態(又はステップ)208、及び状態(又はステップ)210を備える。ステップ202〜210は、ハードウェア、ソフトウェア、ハードウェアとソフトウェアとの組み合わせ、又は他の実装として実現されるモジュール及び/又はブロックを表す。
ステップ202では、回路104は、信号DHを通じて回路92から読み取り要求を受信する。回路102にバッファされたキャッシュデータの探索は、回路104(例えば、モジュール110)によってステップ204で実行される。その探索は、読み取りデータのための適切なエクステントが既に回路102にあるか否かを判断する。適切なエクステントが回路102(例えば、キャッシュミス)で利用可能でない場合、回路104(例えば、モジュール108)は、ステップ206で読み取り要求を処理するために回路106a〜106nに1つ以上の未使用のエクステントを割り当てる。
割り当てられたエクステントが読み取り要求を処理するために利用可能ならば、モジュール110は、ステップ208で回路94から読み取られたエクステントに対応する格納データを複製する。受信されたデータは、続いてモジュール110によってステップ208で適切な回路106a〜106nにバッファされる。ステップ210では、モジュール110は、要求された読み取りデータの複製をエクステントから回路92に転送する。読み取りデータがステップ204(例えば、キャッシュヒット)で回路102に発見された場合において、回路104が要求された読み取りデータを回路92に転送する場合、方法200はステップ210を継続する。
図9を参照すると、エクステントを割り当てるための方法220の一例の流れ図が示される。方法(又は処理)220は、回路100で実現される。方法220は、一般に、ステップ(又は状態)222、ステップ(又は状態)224、ステップ(又は状態)226、ステップ(又は状態)228、ステップ(又は状態)230、ステップ(又は状態)232、ステップ(又は状態)234、及びステップ(又は状態)236を備える。ステップ222〜236は、ハードウェア、ソフトウェア、ハードウェアとソフトウェアとの組み合わせ、又は他の実装として実現されるモジュール及び/又はブロックを表す。
ステップ222では、回路(例えば、モジュール108)は、要求を処理するために割り当てられるべき複数のエクステントを決定する。複数のエクステントは、バッファされたデータ量、及びデータに用いられる構成(例えば、冗長保護又は非冗長)のタイプに基づく。ステップ224で構成のタイプが非冗長と決定された場合、方法220は、ステップ226を継続する。回路104(例えば、モジュール108)は、回路92から受信された読み取り要求に関連した非冗長構成に基づいて1つ以上のエクステントを割り当てる。割り当ては、一般に、ステップ226でエクステントの対応するパラメータを解放された値から割り当てられた(又はヌル)値に変更することを含む。1つ以上の生じたエクステント(例えば、図6のエクステント164)は、一般に、回路94からデータで占められるための準備ができている。
ステップ224で構成のタイプが冗長と決定された場合、方法220は、ステップ228を継続する。ステップ228〜236の間、複数のエクステントは、複数のエクステントの別のエクステントを指示するために複数のエクステントのそれぞれに対応するパラメータのそれぞれを変更することによって、ダイナミックに相互リンクされる。ステップ228では、モジュール108は、カウンタを初期化する(例えば、N=1)。ステップ230では、最初に割り当てられたエクステントの対応するパラメータは、次に割り当てられたエクステントを指示するためにアップデート(又は変更)される。カウンタは、モジュール108によってステップ232でアップデートされる。より多くのエクステントのためのチェックはステップ234で実行される。より多くのエクステントがグループにリンクされたならば、モジュール108は、続いてステップ230でエクステントを指示するために次のエクステントのパラメータをアップデートする。エクステントの全てがグループに加えられるまで、ステップ230〜234を廻るループは継続する。ステップ236では、モジュール108は、最初のエクステントに指示すべき最後のエクステントのパラメータのアップデートによってリンクを閉じる。エクステント(例えば、図6のグループ162)のもたらすグループは、データで占められるための準備ができている。
図10を参照すると、エクステントを解放するための方法240の一例の流れ図が示される。方法(又は処理)240は、回路100で実現される。方法220は、一般に、ステップ(又は状態)242、ステップ(又は状態)244、ステップ(又は状態)246、及びステップ(又は状態)248を備える。ステップ242〜248は、ハードウェア、ソフトウェア、ハードウェアとソフトウェアとの組み合わせ、又は他の実装として実現されるモジュール及び/又はブロックを表す。
ステップ242では、回路104(例えば、モジュール110)は、不正な書き込みデータを回路102から回路94にフラッシュする。いくつかの状況では、書き込みデータは回路102から回路104に読み取られ、エラーが修正され、オリジナル形式がレストアされ、RAID構成に配置され、及び回路104から回路94に転送される。他の状況では、不正な書き込みデータは、回路106a〜106nのそれぞれから対応する回路98a〜98nにそのまま複製される。例えば、エクステントが2つ以上のデータブロック及び1つのパリティブロックとして編成される場合、データブロック及びパリティブロックのそれぞれは、信号DB及びDSを通じて適切な回路106a〜106nから対応する回路98a〜98nにそのまま複製される。
回路104(例えば、モジュール108)は、ステップ244でエクステントのどれがエクステントの正当なフラッシュされたグループ(just-flushed group)からアンリンクされ解放されたか否かを判断する。例えば、書き込みデータがミラーリング(例えば、RAID1構成)によって保護される場合、両方のエクステントが書き込みデータの全てを含むので、何れかのエクステントは、アンリンクされ解放される。別の一例では、書き込みデータがRAID4形式で保護される場合、パリティデータをバッファするエクステントは、アンリンクされ解放される。ステップ246では、モジュール108は、選択されたエクステントをバイパスするために隣接するエクステントの対応するパラメータを変更することによって、選択されたエクステントをアンリンクする。ステップ248では、モジュール108は、選択されたエクステントのパラメータを解放された値に変更する。
図11を参照すると、回路102に不正な書き込みをエラスティックにミラーリングすることによって得られるスペースを図示するグラフ260の図が示される。垂直軸に沿ったスペース利益は、一般に、ミラーリングしないデータをバッファするために利用可能になるエクステントの合計の割合を示す。グラフ260で図示されるように、より少ないエクステントがデータの書き込み部分を表すとき、スペース利益は増加する。エクステントの全てが不正な書き込みデータを保護するためにミラーリングされるとき(例えば、100%)、0パーセントスペースセービングが実現される。エクステントのより低い割合がミラーリングされたデータをバッファするために用いられるとき、スペース利益はダイナミック(又はエラスティック)に増加する。エクステントのどれもミラーリングされたデータをバッファするために用いられないとき(例えば、0%)、ミラーリングされたデータを保持するために通常用いられる回路106a〜106nの50%は、代わりに非不正な書き込みデータ及び/又は読み取りデータを保持するために利用可能である。
回路100にバッファされたデータの読み取り/書き込みミックスに依存して、追加のキャッシュスペースは、エクステントのエラスティックなグループ化及び非グループ化によって解放される。空きキャッシュスペースにおける動的変化は、一般に、キャッシングメディア(例えば、回路106a〜106n)の規定の投資額のために優れたキャッシュ保証範囲を提供する。従って、拡大する頻繁にアクセスされたデータを持ったサーバ(例えば、回路92)は、追加の利用可能なキャッシュスペースの利点を得る。
本発明のいくつかの実施の形態は、一般に、キャッシュデバイスで通常発見される大部分のエクステント及びメタデータマネジメントインフラストラクチャを利用する。エラスティックにエクステントを割り当てて解放するための追加のパラメータは、既存のインフラストラクチャに加えて構築する。エクステントのグループを作成し、修正し、かつ消失させるための技術は、ミラーリング保護(例えば、RAID1レベル)から他のRAIDレベルに保護を拡張する。更に、この技術は、一般に、冗長性が不正なデータに限定されるので、規定の量のホスト入力/出力データのための回路102への書き込みの数を低減する。回路106a〜106nがフラッシュメモリで実現される場合には、書き込みの数の低減は、規定のホスト入力/出力動作のためのフラッシュメディアの耐用年数を向上させる。
図1〜11によって実行される機能は、従来のメインプロセッサ、デジタルコンピュータ、マイクロプロセッサ、マイクロコントローラ、RISC(縮小命令型コンピュータ)プロセッサ、CISC(複雑命令セットコンピュータ)プロセッサ、SIMD(単一命令多重データ)プロセッサ、信号プロセッサ、中央演算処理装置(CPU)、算術論理演算装置(ALU)、ビデオデジタル信号プロセッサ(VDSP)、及び/又は関連する技術分野における当業者に明らかであるように本明細書の教示に従ってプログラムされた同様の計算機の1つ以上を用いて実現される。適切なソフトウェア、ファームウェア、符号化、ルーチン、命令、オペコード、マイクロコード、及び/又はプログラムモジュールもまた関連する技術分野における当業者に明らかであるように本明細書の教示に基づいて熟練したプログラマによって容易に準備される。ソフトウェアは、一般に、機械実装のプロセッサの1つ以上によって1つの媒体又は複数の媒体から実行される。
本発明は、更にASIC(特定用途向け集積回路)、プラットホームASIC、FPGA(フィールドプログラマブルゲートアレイ)、PLD(プログラマブルロジックデバイス)、CPLD(コンプレックスプログラマブルロジックデバイス)、シーゲート、RFIC(高周波集積回路)、ASSP(特定用途専用標準品)、1つ以上のモノリシック集積回路、1つ以上のチップ又はダイに配置されたフリップチップモジュール及び/又はマルチチップモジュールによって、又はここで説明されるように従来の構成回路の適切なネットワークを相互に接続することによって実現され、それらの修正は、技術分野における当業者に容易に明らかである。
本発明は、また本発明による1つ以上の処理又は方法を行うように機械をプログラムするために用いられる命令を含むコンピュータ製品である記憶媒体又は媒体及び/又は送信媒体又は媒体を含む。コンピュータ製品に包含される命令の機械による実行は、回路素子を取り巻く動作に加えて、入力データを記憶媒体で1つ以上のファイル、及び/又はオーディオ及び/又はビジュアルな描写のようなフィジカルオブジェクト又は実体の典型である1つ以上の出力信号に変換する。記憶媒体は、限定されるものではないが、フロッピー(登録商標)ディスク、ハードドライブ、磁気ディスク、光ディスク、CD−ROM、DVD、及び光磁気ディスクを含む如何なるタイプのディスク、及びROM(リードオンリメモリ)、RAM(ランダムアクセスメモリ)、EPROM(電気的プログラム可能リードオンリメモリ)、EEPROM(電気的消去可能リードオンリメモリ)、UVPROM(紫外線消去可能リードオンリメモリ)、フラッシュメモリ、磁気カード、光カードのような回路、及び/又は電子命令の格納のために適切な如何なるタイプの媒体を含む。
本発明のエレメントは、1つ以上のデバイス、ユニット、コンポーネント、システム、機械及び/又は装置の一部又は全てを構成する。デバイスは、限定されるものではないが、サーバ、ワークステーション、記憶アレイコントローラ、記憶システム、パーソナルコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、パームコンピュータ、携帯情報端末、携帯電子デバイス、バッテリ駆動デバイス、セットトップボックス、エンコーダ、デコーダ、トランスコーダ、コンプレッサ、デコンプレッサ、プリプロセッサ、ポストプロセッサ、トランスミッタ、レシーバ、トランシーバ、サイファ回路、携帯電話、デジタルカメラ、ポジショニング及び/又はナビゲーションシステム、医療機器、ヘッドアップ表示装置、ワイヤレスデバイス、オーディオ録音、記憶及び/又は再生装置、ビデオ録画、記憶及び/又は再生装置、ゲームプラットホーム、周辺装置及び/又はマルチチップモジュールを含む。関連する技術分野における当業者は、特定用途の基準を満たす他のタイプのデバイスで、本発明のエレメントが実現されることを理解する。ここに用いられるように、用語「同時」は、いくらかの共通の時間を共有するイベントを説明することを意味しているが、この用語は、同一の時点で開始し、同一の時点で終了し、又は同一の継続時間を有するイベントに限定されることを意味しない。
本発明は、特にその好適な実施の形態に関して表され説明されたが、本発明の範囲から逸脱することなく、形式と細部の様々な変更なし得るであろうことが当業者によって理解されるであろう。

Claims (15)

  1. 冗長キャッシュデータのエラスティックキャッシングのための装置であって、
    複数のバッファと、
    (i)ストレージボリュームに書き込みデータを格納するために、ホストから書き込み要求を受信し、(ii)前記書き込み要求に関連した冗長構成に基づいて、前記バッファに複数のエクステントを割り当て、(iii)前記複数のエクステントに前記書き込みデータを格納するように構成される回路と、
    を備え、
    (a)前記複数のエクステントのそれぞれは、前記バッファの異なる1つに配置され、(b)前記複数のエクステントは、前記書き込み要求に応じてダイナミックに相互リンクされることを特徴とする装置。
  2. 前記回路は、前記書き込みデータを前記バッファから前記ストレージボリュームに複製することに応じて、前記複数のエクステントの少なくとも1つをアンリンクするように更に構成されることを特徴とする請求項1に記載の装置。
  3. 前記複数のエクステントは、前記複数のエクステントのそれぞれに対応するパラメータのそれぞれを変更することによって、ダイナミックにリンクされることを特徴とする請求項1又は2に記載の装置。
  4. 前記パラメータのそれぞれは、前記複数のエクステントの別のエクステントを指示するように変更されることを特徴とする請求項3に記載の装置。
  5. 前記回路は、前記ホストから受信された別の要求に関連した非冗長構成に基づいて、1つ以上のエクステントを割り当てるように更に構成されることを特徴とする請求項1から4の何れか一項に記載の装置。
  6. (i)前記回路は、前記ホストから受信された別の書き込み要求に関連した別の冗長構成に基づいて、別の複数のエクステントを割り当てるように更に構成され、(ii)前記別の冗長構成は、前記冗長構成と異なることを特徴とする請求項1から5の何れか一項に記載の装置。
  7. 前記冗長構成は、独立したディスクの冗長アレイと共に用いられる構成を備えることを特徴とする請求項1から6の何れか一項に記載の装置。
  8. 前記装置は、1つ以上の集積回路として実現されることを特徴とする請求項1から7の何れか一項に記載の装置。
  9. 冗長キャッシュデータのエラスティックキャッシングのための方法であって、
    (A)ストレージボリュームに書き込みデータを格納するために、書き込み要求をホストから装置に受信するステップと、
    (B)前記書き込み要求に関連した冗長構成に基づいて、複数のバッファに複数のエクステントを割り当てるステップと、
    (C)前記複数のエクステントに前記書き込みデータを格納するステップと、
    を備え、
    (i)前記複数のエクステントのそれぞれは、前記バッファの異なる1つに配置され、(ii)前記複数のエクステントは、前記書き込み要求に応じてダイナミックに相互リンクされることを特徴とする方法。
  10. 前記書き込みデータを前記バッファから前記ストレージボリュームに複製することに応じて、前記複数のエクステントの少なくとも1つをアンリンクするステップを更に備えることを特徴とする請求項9に記載の方法。
  11. 前記複数のエクステントは、前記複数のエクステントのそれぞれに対応するパラメータのそれぞれを変更することによって、ダイナミックにリンクされることを特徴とする請求項9又は10に記載の方法。
  12. 前記パラメータのそれぞれは、前記複数のエクステントの別のエクステントを指示するように変更されることを特徴とする請求項11に記載の方法。
  13. 前記ホストから受信された別の要求に関連した非冗長構成に基づいて、1つ以上のエクステントを割り当てるステップを更に備えることを特徴とする請求項9から12の何れか一項に記載の方法。
  14. 前記ホストから受信された別の書き込み要求に関連した別の冗長構成に基づいて、別の複数のエクステントを割り当てるステップを更に備え、前記別の冗長構成は、前記冗長構成と異なることを特徴とする請求項9から13の何れか一項に記載の方法。
  15. 前記冗長構成は、独立したディスクの冗長アレイと共に用いられる構成を備えることを特徴とする請求項9から14の何れか一項に記載の方法。
JP2012258390A 2012-01-31 2012-11-27 冗長キャッシュデータのエラスティックキャッシュ Withdrawn JP2013156977A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/362,099 2012-01-31
US13/362,099 US8966170B2 (en) 2012-01-31 2012-01-31 Elastic cache of redundant cache data

Publications (2)

Publication Number Publication Date
JP2013156977A true JP2013156977A (ja) 2013-08-15
JP2013156977A5 JP2013156977A5 (ja) 2015-12-10

Family

ID=47683594

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012258390A Withdrawn JP2013156977A (ja) 2012-01-31 2012-11-27 冗長キャッシュデータのエラスティックキャッシュ

Country Status (6)

Country Link
US (1) US8966170B2 (ja)
EP (1) EP2685384B1 (ja)
JP (1) JP2013156977A (ja)
KR (1) KR20130088726A (ja)
CN (1) CN103226519B (ja)
TW (1) TWI540436B (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9047200B2 (en) * 2012-01-31 2015-06-02 Avago Technologies General Ip (Singapore) Pte. Ltd. Dynamic redundancy mapping of cache data in flash-based caching systems
US10474584B2 (en) * 2012-04-30 2019-11-12 Hewlett Packard Enterprise Development Lp Storing cache metadata separately from integrated circuit containing cache controller
US9086957B2 (en) 2012-08-02 2015-07-21 International Business Machines Corporation Requesting a memory space by a memory controller
US10229043B2 (en) 2013-07-23 2019-03-12 Intel Business Machines Corporation Requesting memory spaces and resources using a memory controller
US9436563B2 (en) * 2013-10-01 2016-09-06 Globalfoundries Inc. Memory system for mirroring data
CN103561098B (zh) * 2013-11-05 2016-11-23 华为技术有限公司 一种选择存储资源方法、装置及系统
KR102318478B1 (ko) * 2014-04-21 2021-10-27 삼성전자주식회사 스토리지 컨트롤러, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법
US9710381B2 (en) 2014-06-18 2017-07-18 International Business Machines Corporation Method and apparatus for cache memory data processing
US9542327B2 (en) * 2014-07-22 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Selective mirroring in caches for logical volumes
JP6107761B2 (ja) * 2014-08-04 2017-04-05 日本電気株式会社 ディスクアレイ装置およびディスクアレイ装置の制御方法
CN104484287B (zh) * 2014-12-19 2017-05-17 北京麓柏科技有限公司 一种非易失性缓存实现方法及装置
CN104461966B (zh) * 2014-12-19 2017-07-21 深圳市国微电子有限公司 一种基于Nand Flash芯片的数据缓存传输方法及其控制器
US10817429B1 (en) * 2015-09-30 2020-10-27 EMC IP Holding Company, LLC Resizable cache system and method
US10620850B1 (en) * 2016-03-31 2020-04-14 EMC IP Holding Company LLC Caching techniques duplicating dirty data in secondary cache
CN106095330B (zh) * 2016-05-30 2019-04-16 杭州宏杉科技股份有限公司 一种元数据的存储方法和装置
CN109725823B (zh) * 2017-10-27 2021-11-16 伊姆西Ip控股有限责任公司 用于管理混合存储盘阵列的方法和设备
US10691353B1 (en) 2018-11-30 2020-06-23 International Business Machines Corporation Checking of data difference for writes performed via a bus interface to a dual-server storage controller
US20220357858A1 (en) * 2021-05-07 2022-11-10 EMC IP Holding Company LLC Storage Layout of Protection Pool of a RAID Storage System

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5526507A (en) * 1992-01-06 1996-06-11 Hill; Andrew J. W. Computer memory array control for accessing different memory banks simullaneously
US5586291A (en) 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US5974506A (en) 1996-06-28 1999-10-26 Digital Equipment Corporation Enabling mirror, nonmirror and partial mirror cache modes in a dual cache system
US6279078B1 (en) * 1996-06-28 2001-08-21 Compaq Computer Corporation Apparatus and method for synchronizing a cache mode in a dual controller, dual cache memory system operating in a plurality of cache modes
US6128717A (en) * 1998-01-20 2000-10-03 Quantum Corporation Method and apparatus for storage application programming interface for digital mass storage and retrieval based upon data object type or size and characteristics of the data storage device
US6470436B1 (en) * 1998-12-01 2002-10-22 Fast-Chip, Inc. Eliminating memory fragmentation and garbage collection from the process of managing dynamically allocated memory
US6574709B1 (en) 1999-09-30 2003-06-03 International Business Machine Corporation System, apparatus, and method providing cache data mirroring to a data storage system
US6772288B1 (en) * 2000-09-06 2004-08-03 Stmicroelectronics, Inc. Extended cache memory system and method for caching data including changing a state field value in an extent record
US7159073B2 (en) * 2003-03-27 2007-01-02 Stmicroelectronics, Inc. Data storage and caching architecture
US7356651B2 (en) * 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
US20100174863A1 (en) * 2007-11-30 2010-07-08 Yahoo! Inc. System for providing scalable in-memory caching for a distributed database
US8296782B2 (en) 2008-04-22 2012-10-23 Lsi Corporation System eliminating hardware duplication during application testing of an internal storage array across different operating systems
US20100037102A1 (en) 2008-08-08 2010-02-11 Seagate Technology Llc Fault-tolerant non-volatile buddy memory structure
US8356239B2 (en) 2008-09-05 2013-01-15 Freescale Semiconductor, Inc. Selective cache way mirroring
US20100106904A1 (en) 2008-10-23 2010-04-29 Dell Products L.P. Shadow raid cache memory
US8296516B2 (en) 2009-10-20 2012-10-23 Hitachi, Ltd. Storage controller for mirroring data written to cache memory area
US8775868B2 (en) * 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
CN102122235B (zh) * 2011-01-24 2012-07-25 武汉固捷联讯科技有限公司 一种raid4系统及其数据读写方法

Also Published As

Publication number Publication date
CN103226519B (zh) 2017-10-13
TWI540436B (zh) 2016-07-01
CN103226519A (zh) 2013-07-31
US8966170B2 (en) 2015-02-24
US20130198448A1 (en) 2013-08-01
TW201346562A (zh) 2013-11-16
EP2685384A2 (en) 2014-01-15
EP2685384A3 (en) 2014-04-30
KR20130088726A (ko) 2013-08-08
EP2685384B1 (en) 2018-11-21

Similar Documents

Publication Publication Date Title
TWI540436B (zh) 冗餘緩存數據的彈性緩存
US8819338B2 (en) Storage system and storage apparatus
US9733862B1 (en) Systems and methods for reverse point-in-time copy management in a storage system
US9047200B2 (en) Dynamic redundancy mapping of cache data in flash-based caching systems
US20150234612A1 (en) Multiprocessor System with Independent Direct Access to Bulk Solid State Memory Resources
US7930588B2 (en) Deferred volume metadata invalidation
CN102122235B (zh) 一种raid4系统及其数据读写方法
US8819291B2 (en) Compression on thin provisioned volumes using extent based mapping
US20220137835A1 (en) Systems and methods for parity-based failure protection for storage devices
US20150324294A1 (en) Storage system and cache control method
US10579540B2 (en) Raid data migration through stripe swapping
US20120221809A1 (en) Storage apparatus and data processing method of the same
US9921913B2 (en) Flushing host cache data before rebuilding degraded redundant virtual disk
CN110502188A (zh) 一种基于数据库读写性能的数据存储方法与装置
JP2014041471A (ja) ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
US20170220476A1 (en) Systems and Methods for Data Caching in Storage Array Systems
CN111857540B (zh) 数据存取方法、装置和计算机程序产品
US11315028B2 (en) Method and apparatus for increasing the accuracy of predicting future IO operations on a storage system
US20180307427A1 (en) Storage control apparatus and storage control method
TW202036278A (zh) 用來在儲存伺服器中進行基於管線的存取管理的方法及設備
US20150278009A1 (en) Storage control apparatus and control method

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20140718

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140718

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150522

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151015

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151015

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20160706