JP5932171B2 - ストレージシステムにおけるオブジェクトベースのトランザクションのための方法およびシステム - Google Patents

ストレージシステムにおけるオブジェクトベースのトランザクションのための方法およびシステム Download PDF

Info

Publication number
JP5932171B2
JP5932171B2 JP2015555452A JP2015555452A JP5932171B2 JP 5932171 B2 JP5932171 B2 JP 5932171B2 JP 2015555452 A JP2015555452 A JP 2015555452A JP 2015555452 A JP2015555452 A JP 2015555452A JP 5932171 B2 JP5932171 B2 JP 5932171B2
Authority
JP
Japan
Prior art keywords
flag
data
transaction
offset
toi
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.)
Active
Application number
JP2015555452A
Other languages
English (en)
Other versions
JP2016504700A (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.)
DSSD Inc
Original Assignee
DSSD Inc
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 DSSD Inc filed Critical DSSD Inc
Publication of JP2016504700A publication Critical patent/JP2016504700A/ja
Application granted granted Critical
Publication of JP5932171B2 publication Critical patent/JP5932171B2/ja
Active 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/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • G06F12/1018Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0667Virtualisation aspects at data level, e.g. file, record or object virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

背景
アプリケーションは、一般に、さまざまなデータがトランザクションにおいてアトミックにコミットされることを必要とする。オブジェクトストレージシステムでは、トランザクションは、変更されるべきオブジェクトに対応する論理的な記憶場所(オフセット)と、各オフセットに書込まれるべき新たなデータとの組であり、当該新たなデータは全て目に見えるか、または障害が発生するとそのどれも目に見えなくなるが、変更の一部のみを有する他の中間状態は許可されない。トランザクションを実行するための従来の機構は、一般に、トランザクションの一部であるデータが、トランザクションをコミットするために複数回書込まれることを必要とし、その結果、処理オーバーヘッドが大きくなる。
概要
概して、一局面において、本発明は、命令を備える非一時的なコンピュータ読取可能媒体に関し、上記命令は、プロセッサによって実行されると方法を実行し、上記方法は、トランザクションのためのトランザクションオブジェクトを作成するステップを備え、上記トランザクションオブジェクトは、トランザクションオブジェクトID(TOI)によって識別され、オブジェクトID(OID)によって識別されるオブジェクトに関連付けられ、上記方法はさらに、上記トランザクションオブジェクトのための目次エントリ(TE)およびメタデータ(MD)フラグを永続性ストレージに格納するステップを備え、TEは、上記MDフラグを参照し、上記MDフラグは、上記オブジェクトを識別し、上記方法はさらに、上記トランザクションの一部として上記トランザクションオブジェクトにデータを書込むための書込要求を受取るステップを備え、上記書込要求は、上記TOIおよびオフセットを指定し、上記方法はさらに、上記書込要求に応答して、第2のTEおよびデータフラグを上記永続性ストレージに格納するステップを備え、上記第2のTEは、上記TOIおよびオフセットを指定し、上記第2のTEは、上記データフラグを参照し、上記データフラグは、上記データを備え、上記方法はさらに、上記書込要求に応答して、ハッシュ値と上記データフラグの物理アドレスとを備えるエントリをインメモリデータ構造に格納するステップを備え、上記ハッシュ値は、上記TOIおよび上記オフセットから導き出され、上記方法はさらに、上記トランザクションをコミットするためのコミット要求を受取るステップと、上記コミット要求に応答して、上記トランザクションオブジェクトのための第3のTEおよび第2のメタデータ(MD)フラグを永続性ストレージに格納するステップを備え、第3のTEは、上記第2のMDフラグを参照し、上記第2のMDフラグは、上記オブジェクトを識別して、上記トランザクションがコミットされることを指定し、上記方法はさらに、上記コミット要求に応答して、第2のハッシュ値と第2のデータフラグのための第2の物理アドレスとを備える第2のエントリを、上記第2の物理アドレスが上記物理アドレスと置き換えられるように上記インメモリデータ構造において更新するステップを備え、上記第2のハッシュ値は、上記OIDおよび上記オフセットから導き出される。
概して、一局面において、本発明は、命令を備える非一時的なコンピュータ読取可能媒体に関し、上記命令は、プロセッサによって実行されると方法を実行し、上記方法は、トランザクションの一部としてデータを書込むための書込要求を受取るステップを備え、上記書込要求は、トランザクションオブジェクトのためのトランザクションオブジェクトID(TOI)およびオフセットを指定し、上記TOIは、オブジェクトID(OID)によって識別されるオブジェクトに関連付けられ、上記方法はさらに、上記書込要求に応答して、TEおよびデータフラグを永続性ストレージに格納するステップを備え、TEは、上記TOIおよび上記オフセットを指定し、上記TEは、上記データフラグを参照し、上記データフラグは、上記データを備え、上記方法はさらに、上記書込要求に応答して、ハッシュ値と上記データフラグの物理アドレスとを備えるエントリをインメモリデータ構造に格納するステップを備え、上記ハッシュ値は、上記TOIおよび上記オフセットから導き出され、上記方法はさらに、第2のトランザクションの一部として第2のデータを書込むための第2の書込要求を受取るステップを備え、上記第2の書込要求は、第2のトランザクションオブジェクトのための上記第2のTOIおよび第2のオフセットを指定し、上記第2のTOIは、第2のOIDによって識別される第2のオブジェクトに関連付けられ、上記方法はさらに、上記第2の書込要求に応答して、第2のTEおよび第2のデータフラグを上記永続性ストレージに格納するステップを備え、第2のTEは、上記第2のTOIおよび上記第2のオフセットを指定し、上記第2のTEは、上記第2のデータフラグを参照し、上記第2のデータフラグは、上記第2のデータを備え、上記方法はさらに、上記第2の書込要求に応答して、第2のハッシュ値と上記第2のデータフラグの第2の物理アドレスとを備える第2のエントリをインメモリデータ構造に格納するステップを備え、上記第2のハッシュ値は、上記第2のTOIおよび上記第2のオフセットから導き出され、上記方法はさらに、コミット要求を受取るステップを備え、上記コミット要求は、上記TOIと上記第2のTOIとを備え、上記方法はさらに、上記コミット要求に応答して、第3のTEおよび複合フラグを永続性ストレージに格納するステップを備え、第3のTEは、上記複合フラグを参照し、上記複合フラグは、第4のTEと第5のTEとを備え、上記第4のTEは、MDフラグを参照し、上記MDフラグは、上記TOIを識別して、上記トランザクションがコミットされることを指定し、上記第5のTEは、第2のMDフラグを参照し、上記第2のMDフラグは、上記第2のTOIを識別して、上記第2のトランザクションがコミットされることを指定し、上記方法はさらに、上記コミット要求に応答して、第3のハッシュ値と第3のデータフラグのための第3の物理アドレスとを備える第3のエントリを、上記第3の物理アドレスが上記物理アドレスと置き換えられるように上記インメモリデータ構造において更新するステップを備え、上記第3のハッシュ値は、上記OIDおよび上記オフセットから導き出され、上記方法はさらに、上記コミット要求に応答して、第4のハッシュ値と第4のデータフラグのための第4の物理アドレスとを備える第4のエントリを、上記第4の物理アドレスが上記第2の物理アドレスと置き換えられるように上記インメモリデータ構造において更新するステップを備え、上記第4のハッシュ値は、上記第2のOIDおよび上記第2のオフセットから導き出される。
本発明の他の局面は、以下の説明および添付の特許請求の範囲から明らかになるであろう。
本発明の1つ以上の実施例に係るシステムを示す。 本発明の1つ以上の実施例に係るソリッドステートメモリモジュールを示す。 本発明の1つ以上の実施例に係るブロックを示す。 本発明の1つ以上の実施例に係るフラグページを示す。 本発明の1つ以上の実施例に係るTOCページを示す。 本発明の1つ以上の実施例に係るブロックを示す。 本発明の1つ以上の実施例に係る目次(table of contents:TOC)エントリを示す。 本発明の1つ以上の実施例に係るデータフラグを示す。 本発明の1つ以上の実施例に係るメタデータフラグを示す。 本発明の1つ以上の実施例に係る複合フラグを示す。 本発明の1つ以上の実施例に係るオブジェクトおよび対応するTOCエントリを示す。 本発明の1つ以上の実施例に係るシングルオブジェクトトランザクションを実行するためのフローチャートを示す。 本発明の1つ以上の実施例に係るマルチオブジェクトトランザクションを実行するためのフローチャートを示す。 本発明の1つ以上の実施例に係るマルチオブジェクトトランザクションを実行するためのフローチャートを示す。 本発明の1つ以上の実施例に係るマルチオブジェクトトランザクションを実行するためのフローチャートを示す。 本発明の1つ以上の実施例に係る例を示す。 本発明の1つ以上の実施例に係る例を示す。 本発明の1つ以上の実施例に係る例を示す。 本発明の1つ以上の実施例に係る例を示す。 本発明の1つ以上の実施例に係る例を示す。 本発明の1つ以上の実施例に係る例を示す。 本発明の1つ以上の実施例に係る例を示す。 本発明の1つ以上の実施例に係る例を示す。
詳細な説明
ここで、添付の図面を参照して、本発明の具体的な実施例について詳細に説明する。本発明がより完全に理解されるようにするために、以下の発明の実施例の詳細な説明には多数の具体的な詳細が記載されている。しかし、これらの具体的な詳細がなくても本発明が実施可能であるということは当業者に明らかであろう。他の例では、説明を不必要に複雑にすることを回避するために、周知の特徴については詳細に説明しなかった。
図1〜図7Dの以下の説明では、図に関連して記載されるいかなる構成要素も、本発明のさまざまな実施例においては、その他の図に関連して記載される1つ以上の同様の名前の構成要素と等価であり得る。簡潔にするために、これらの構成要素の説明は、各々の図に関して繰返されない。したがって、各々の図の構成要素の1つ1つの実施例は、引用により援用され、1つ以上の同様の名前の構成要素を有する他の全ての図内に任意に存在するものと想定される。さらに、本発明のさまざまな実施例によれば、図の構成要素のいかなる説明も、その他の図における対応する同様の名前の構成要素に関して記載される実施例に加えて、実施例とともに、または実施例の代わりに実現され得る任意の実施例であるものと解釈されるべきである。
概して、本発明の実施例は、ストレージシステムにおいてトランザクションを実行するための方法およびシステムに関する。より具体的には、本発明の実施例は、トランザクションを実行するためにトランザクションオブジェクトを使用し、各トランザクションは、更新されたデータが永続性ストレージに一度書込まれることを必要とするだけである。本発明の一実施例では、トランザクションは、単一のオブジェクト(例えば図4および図6A〜図6Dを参照)または複数のオブジェクト(図5A〜図5Cおよび図7A〜図7Dを参照)に関連付けられ得る。さらに、本発明の実施例は、全ての中間状態の間およびトランザクションコミット後にデータの単一のコピーがトランザクションを表わすことを可能にする。
図1は、本発明の一実施例に係るシステムを示す。図1に示されるように、当該システムは、1つ以上のクライアント(100)と、ストレージコントローラ(102)と、メモリ(104)と、ストレージアレイ(106)とを含む。
本発明の一実施例では、クライアント(100)は、読取要求、書込要求、または(1つ以上のトランザクションオブジェクトを有する)コミット要求をストレージコントローラ(102)に発行するための機能を含むシステム上で実行される任意のシステムまたはプロセスである。本発明の一実施例では、クライアント(100)は、各々、プロセッサ(図示せず)と、メモリ(図示せず)と、永続性ストレージ(図示せず)とを含み得る。本発明の一実施例では、ストレージコントローラ(102)は、1つ以上のクライアント(100)に動作可能に接続され、トランザクションオブジェクトスキームを実行するように構成され、当該トランザクションオブジェクトスキームは、以下に記載されるトランザクションオブジェクトスキームと整合性がとれるように目次エントリおよびフラグをストレージアレイに書込むことを含む(例えば図4〜図5Cを参照)。本発明の一実施例では、ストレージコントローラ(102)は、本発明の1つ以上の実施例を実現するための命令を実行するように構成されたプロセッサ(図示せず)を含み、当該命令は、ストレージコントローラ(102)内に位置するか、またはストレージコントローラ(102)に動作可能に接続される非一時的なコンピュータ読取可能媒体(図示せず)に格納されている。代替的に、ストレージコントローラ(102)は、ハードウェアを用いて実現されてもよい。ストレージコントローラ(102)は、本発明から逸脱することなく、ソフトウェアおよび/またはハードウェアの任意の組合わせを用いて実現されてもよい。
本発明の一実施例では、ストレージコントローラ(102)は、メモリ(104)に動作可能に接続されている。メモリ(104)は、ダイナミック・ランダム・アクセス・メモリ(Dynamic Random-Access Memory:DRAM)、同期DRAM、SDR SDRAMおよびDDR SDRAMを含むがこれらに限定されない任意の揮発性メモリであってもよい。本発明の一実施例では、メモリ(104)は、(目次エントリおよびフラグのためのデータを含む)さまざまなデータを、このようなデータがストレージアレイに格納される前に一時的に格納するように構成されている。
本発明の一実施例では、ストレージアレイ(106)は、いくつかの個々の永続性記憶装置を含み、当該永続性記憶装置は、磁気メモリデバイス、光メモリデバイス、ソリッドステートメモリデバイス、位相変化メモリデバイス、その他の好適なタイプの永続性メモリデバイス、またはこれらの任意の組合わせを含むが、これらに限定されるものではない。
図1に示されるシステム構成以外のシステム構成が、本発明から逸脱することなく使用されてもよい。
上記のように、ストレージアレイは、ソリッドステートメモリデバイスを含み得る。以下の説明では、ソリッドステートメモリデバイスを用いて実現された本発明の実施例について説明する。図2Aを参照して、図2Aは、本発明の1つ以上の実施例に係るソリッドステートメモリデバイス(図示せず)のソリッドステートメモリモジュールを示す。ソリッドステートメモリデバイス(図示せず)は、複数のソリッドステートメモリモジュールを含み得る。ソリッドステートメモリモジュール(200)は、1つ以上のブロックを含む。本発明の一実施例では、ブロックは、ソリッドステートメモリモジュール(200)内の最小の消去可能な記憶単位である。
図2Bは、本発明の1つ以上の実施例に係るブロックを示す。より具体的には、各ブロック(202)は、1つ以上のページを含む。本発明の一実施例では、ページは、ソリッドステートメモリモジュールにおける(ページへの最初の書込みを含む)読取および書込動作のための最小のアドレス可能な単位である。本発明の一実施例では、ブロック内でのページの再書込みは、ブロック全体を再書込みすることを必要とする。本発明の一実施例では、ブロック内の各ページは、フラグページ(図2Cを参照)またはTOCページ(図2Dを参照)のいずれかである。
図2Cは、本発明の1つ以上の実施例に係るフラグページを示す。本発明の一実施例では、フラグページ(204)は、1つ以上のフラグを含む。本発明の一実施例では、フラグは、有限の量のユーザデータ(または、フラグページがメタデータフラグである場合にはメタデータ(図2Hを参照)、またはフラグが複合フラグである場合にはTOCエントリ(図2Iを参照))に対応する。さらに、所与のページ内のフラグは、均一のサイズを有していてもよく、または不均一のサイズを有していてもよい。さらに、所与のブロック内のフラグは、均一のサイズを有していてもよく、または不均一のサイズを有していてもよい。本発明の一実施例では、所与のフラグは、ページのサイズ未満であってもよく、ちょうどページのサイズであってもよく、または1つ以上のページにまたがっていてもよい。本発明の一実施例では、フラグページは、フラグのみを含む。本発明の一実施例では、各フラグは、ユーザデータ(すなわちストレージアプライアンスに格納するためにクライアントによって提供されるデータ)(図2Gを参照)、オブジェクトのためのメタデータ(図2Hを参照)、またはフラグが複合フラグである場合にはTOCエントリ(図2Iを参照)を含む。所与のフラグページは、単一のタイプのフラグまたは2つ以上のタイプのフラグを含み得る。
図2Dは、本発明の1つ以上の実施例に係るTOCページを示す。本発明の一実施例では、TOCページ(206)は、1つ以上のTOCエントリを含み、TOCエントリの各々は、所与のフラグのためのメタデータを含む。また、TOCページ(206)は、ブロック(202)における別のTOCページへの参照を含み得る。本発明の一実施例では、TOCページは、TOCエントリ(および任意にブロックにおける別のTOCページへの参照)のみを含み、いかなるフラグも含まない。本発明の一実施例では、各TOCエントリは、ブロック(202)におけるフラグ(図2Cを参照)に対応する。TOCエントリは、ブロック内のフラグに対応するのみである。別の言い方をすれば、TOCページは、ブロックに関連付けられ、当該ブロックにおけるフラグのためのTOCエントリのみを含む。本発明の一実施例では、各々のソリッドステートメモリモジュール内の各ブロックにおいて欠陥がない最後のページが、TOCページである。
図2Eは、本発明の1つ以上の実施例に係るブロックを示す。より具体的には、図2Eは、TOCページ(210,212,214)とフラグページ(216,218,220,222,224,226)とを含むブロック(208)を示す。本発明の一実施例では、ブロック(208)は、概念上、「上」から「下」に向かって埋められる。さらに、フラグページにおけるフラグのためのTOCエントリの蓄積サイズがページのサイズに等しくなると、TOCページが生成され、格納される。図2Eを参照して、例えば、フラグページ0(216)およびフラグページ1(218)がブロック(208)に格納される。フラグページ0(216)およびフラグページ1(218)におけるフラグ(図示せず)のための対応するTOCエントリ(図示せず)は、ブロックにおけるページのサイズに等しい累計サイズを有する。したがって、(ブロックにおけるフラグに対応するTOCエントリを用いて)TOCページ(212)が生成され、ブロック(208)に格納される。その後、フラグページ2(220)がブロック(208)に書込まれる。フラグページ2(220)におけるフラグ(図示せず)に対応するTOCエントリが、ブロックにおけるページのサイズに等しい累計サイズを有するので、TOCページ(212)が作成され、ブロック(208)に格納される。さらに、ブロック(208)にはすでにTOCページがあるので、TOCページ(212)は、TOCページ(214)への参照も含む。
このプロセスは、ブロック(208)に残っている埋めるべきページが1つだけになるまで繰返される。この時点で、TOCページ(210)が作成され、ブロック(208)の最後のページに格納される。当業者は、TOCページ(210)におけるTOCエントリの累計サイズがページのサイズ未満であり得ることを理解するであろう。このような場合、TOCページは、TOCエントリの累積サイズとページサイズとの差に対処するためにパディングを含み得る。最後に、ブロック(208)には他のTOCページがあるので、TOCページ(210)は、1つの他のTOCページ(212)への参照を含む。
図2Eに示されるように、TOCページは、ブロックの「下」からページの「上」に連結され、そのため、当該TOCページの「下方」にあるTOCページからの参照を辿ることによってTOCページを取得することができる。例えば、TOCページ(212)は、TOCページ(210)における参照を用いてアクセスされ得る。
ブロック(208)はフラグページおよびTOCページのみを含むが、ブロック(208)は、本発明から逸脱することなく、フラグページおよびTOCページ以外のページ(例えばパリティデータを含むページ)を含んでいてもよいということを当業者は理解するであろう。このような他のページは、ブロック内に位置していてもよく、実現例によっては、TOCページとフラグページとの間にインターリーブされてもよい。
図2Fは、本発明の1つ以上の実施例に係るTOCエントリを示す。本発明の一実施例では、各TOCエントリ(230)は、フラグのためのメタデータを含み、以下のフィールドのうちの1つ以上を含み得る。以下のフィールドとは、(i)格納されるオブジェクトを識別するオブジェクトID(232)、(ii)TOCエントリに対応するフラグがストレージアレイに書込まれた時刻(例えば制御モジュールにおけるプロセッサのプロセッサクロック値)を指定する誕生時刻(birth time)(234)、(iii)(オブジェクトIDによって識別される)オブジェクトの冒頭に対してオブジェクト内の点を識別するオフセットID(236)、(iv)フラグのサイズを指定するフラグメントサイズ(238)、(v)フラグが格納されるブロックにおけるページを識別するページID(240)、(vi)(ページIDによって識別される)ページにおけるフラグの開始位置を識別するバイト(242)、(vii)フラグにおけるユーザデータの非圧縮長を指定する論理長(244)、および(viii)フラグにおけるデータのタイプ(例えばオブジェクト、複合フラグなど)を指定するタイプ(246)である。TOCエントリ(230)は、本発明から逸脱することなく、(その他(248)によって示される)他のフィールドを含んでいてもよい。
本発明の一実施例では、<オブジェクトID,オフセットID>または<オブジェクトID,オフセットID,誕生時刻>は、例えばクライアントによって提供されるデータを識別する。さらに、<オブジェクトID,オフセットID>または<オブジェクトID,オフセットID,誕生時刻>は、特定のデータを識別するためにクライアントによって使用され得るが、ストレージアプライアンスは、ストレージアプライアンス内のデータを識別するために物理アドレスを使用する。当業者は、オブジェクトIDおよびオフセットIDの代わりにクライアントが論理アドレスを提供してもよいということを理解するであろう。
当業者は、TOCエントリが、本発明から逸脱することなく、図2Fに示されるフィールドよりもさらなるフィールドまたは少ないフィールドを含んでいてもよいということを理解するであろう。さらに、TOCエントリにおけるフィールドは、本発明から逸脱することなく、異なる順序で配置されてもよく、および/または、組合わせられてもよい。また、図2Fに示されるTOCエントリにおけるフィールドは全てが同一のサイズを有しているように見えるが、TOCエントリにおけるさまざまなフィールドのサイズは不均一であってもよく、任意の所与のフィールドのサイズは、TOCエントリの実現例に基づいてさまざまである。
図2Gは、本発明の1つ以上の実施例に係るデータフラグを示す。データフラグ(250)は、クライアントからのデータのみを含む。例えば、データフラグにおけるデータは、ファイルにおけるデータに対応し、当該ファイルは、オブジェクトIDによって識別される。
図2Hは、本発明の1つ以上の実施例に係るメタデータフラグを示す。メタデータフラグ(252)は、メタデータフラグに関連付けられたTOCエントリにおけるオブジェクトIDに対応するオブジェクトのためのオブジェクトメタデータを含む。別の言い方をすれば、オブジェクトのためのメタデータは、メタデータフラグに格納され、オブジェクトのためのオブジェクトIDとオフセット=−1とを含むTOCエントリに関連付けられる。本発明から逸脱することなく、−1以外の値が使用されてもよい。オブジェクトメタデータの例としては、オブジェクトタイプ、その最大サイズ、その作成時刻、その直近の変更時刻、および他のオブジェクト当たりの属性が挙げられ得るが、これらに限定されるものではない。本発明の一実施例では、ストレージアレイには各オブジェクトごとに1つのメタデータフラグがある。
図2Iは、本発明の1つ以上の実施例に係る複合フラグを示す。本発明の一実施例では、複合フラグ(254)は、他のフラグとは異なって、クライアントからのデータまたはオブジェクトのためのメタデータを含まない。それどころか、複合フラグ(254)は、2つ以上のTOCエントリを含み、TOCエントリの各々は、トランザクションオブジェクトに関連付けられ、オフセット=−1を有する。本発明の一実施例では、複合フラグにおけるTOCエントリにおいて指定されるトランザクションオブジェクトは全て、単一のトランザクションに属する。
図3は、本発明の1つ以上の実施例に係るオブジェクト(300)および対応するTOCエントリを示す。より具体的には、図3は、本発明の一実施例に係るオブジェクトおよび対応するTOCエントリの概念図を示す。図3に示されるように、オブジェクト(300)は、オブジェクトのためのメタデータを含む、オフセット−1に位置するメタデータフラグを含む。さらに、オブジェクトは、オフセット3および6に位置する(1つ以上のフラグページに格納される、図示されない)2つのデータを含む。上記のフラグの各々は、(1つ以上のTOCページに格納される、図示されない)TOCエントリに関連付けられる。
図4〜図5Cは、本発明の1つ以上の実施例に係るフローチャートを示す。フローチャートにおけるさまざまなステップは逐次的に示され、記載されているが、ステップのうちのいくつかまたは全ては、異なる順序で実行されてもよく、組合わせられるかまたは省略されてもよく、ステップのうちのいくつかまたは全ては、並列に実行されてもよいということを当業者は理解するであろう。本発明の一実施例では、図4〜図5Cに示されるステップは、本発明から逸脱することなく、図4〜図5Cに示されるその他のステップと並列に実行されてもよい。
図4を参照して、図4は、本発明の1つ以上の実施例に係るシングルオブジェクトトランザクションを実行するためのフローチャートを示す。ステップ400において、トランザクションのための要求がストレージコントローラによって受取られ、当該要求は親オブジェクトを指定する。親オブジェクトは、トランザクションが実行されるオブジェクトに対応する(例えば図6Aを参照。親オブジェクトは、オブジェクトID=Aを有するオブジェクトである)。
ステップ402において、当該トランザクションのためにトランザクションオブジェクトが作成される。トランザクションオブジェクトの作成は、トランザクションのためのオブジェクトIDを指定することを含み得る。ステップ404において、当該トランザクションオブジェクトのためにメタデータ(MD)フラグが作成される。メタデータフラグは、トランザクションオブジェクトID(TOI)と、親オブジェクトのためのオブジェクトIDと、トランザクションがコミットされないことを示すフィールドとを含み得る。メタデータフラグは、トランザクションオブジェクトのための他のメタデータも含み得る。
ステップ406において、当該メタデータフラグのために目次(TOC)エントリ(MD TEと称される)が作成される。MD TEは、TOIと、オフセット=−1とを含む。MD TEは、本発明から逸脱することなく、他の情報を含んでいてもよい。ステップ408において、MDフラグおよびMD TEがその後ストレージアレイに格納される。本発明の一実施例では、MDフラグは、フラグページの一部としてストレージアレイに格納され、MD TEは、TOCページの一部としてストレージアレイに格納される。上記のフラグ、TEおよびページを書込むタイミングは、本発明の実施例が如何に実現されるかに基づいてさまざまであり得る。
ステップ410において、トランザクションを開始させたクライアントにTOIが提供される。TOIは、本発明から逸脱することなく、トランザクションに参加している他のクライアントに提供されてもよい。ステップ412において、トランザクションの一部としてデータを書込むための書込要求が受取られる。書込要求は、TOIと、オフセットとを含む。
ステップ414において、書込要求において識別されたデータを有するデータフラグが、(通常はフラグページの一部として)ストレージアレイに格納される。ステップ416において、(ステップ414において格納された)データフラグのためのTEが作成され、(通常はTOCページの一部として)ストレージアレイに格納される。データフラグのためのTEは、TOIと、オフセットとを含む。TEは、親オブジェクトのためのオブジェクトIDを含まない。
ステップ418において、(i)TOIおよびオフセットから導き出されるハッシュ値と、(ii)ステップ414において格納されたデータフラグの物理アドレスとを含むエントリを含むようにインメモリデータ構造が更新される。本発明の一実施例では、ハッシュ値は、関数(例えばMD5、SHA 1など)を<TOI,オフセット>(またはTOIおよびオフセットを用いて生成される値)に適用することによって導き出され得る。当業者は、本発明から逸脱することなく、任意の単射関数が使用されてもよいということを理解するであろう。図4に戻って、この段階では、ストレージコントローラは、TOIおよびオフセットを含む読取要求と、親オブジェクトのオブジェクトIDおよびオフセットを含む読取要求とを処理し得る。上記の読取要求を提供した結果として、通常は、2つの異なるデータ、すなわち<TOI,オフセット>に対応するデータおよび<親オブジェクトID,オフセット>に対応するデータが取得され、これらのオフセットは同一である。
ステップ420において、トランザクションのためのさらなる書込要求があるか否かについて判断がなされる。トランザクションのためのさらなる書込要求があれば、プロセスはステップ412に進む。そうでなければ、プロセスはステップ422に進む。ステップ422において、TOIを指定するコミット要求がクライアントから受取られる。ステップ424において、トランザクションオブジェクトID(TOI)と、親オブジェクトのためのオブジェクトIDと、トランザクションがコミットされることを示すフィールドとを含む第2のMDフラグがトランザクションオブジェクトのために作成される。
ステップ426において、第2のMD TEが作成され、第2のMD TEは、TOIと、オフセット=−1とを含む。ステップ424および426は、ストレージアレイおよび/またはストレージコントローラがコピーオンライトスキームを実行するときに実行される。ストレージアレイおよび/またはストレージコントローラがコピーオンライトスキームを実行しない場合には、ステップ424および426は実行されなくてもよい。それどころか、ステップ404および406において作成されたMD TEおよびMDフラグは、それぞれステップ424および426において作成されたMD TEおよびMDフラグと同一の情報を含むように情報を含むように更新され得る。
ステップ428において、第2のMDフラグは、ストレージアレイに(通常はフラグページに)格納され、第2のMD TEは、ストレージアレイに(通常はTOCページに)格納される。ステップ430において、トランザクションがコミットされることを反映するようにインメモリデータ構造が更新される。具体的には、本発明の一実施例では、親オブジェクトIDから導き出されるハッシュ値とオフセットとを含むエントリが、データの物理アドレスを含むように更新され、物理アドレスは、以前は、TOIとオフセットとを含む別のエントリ(すなわちステップ418において作成されたエントリ)に存在していた。トランザクションにおいて2つ以上の書込要求が受取られ、処理されると(ステップ412〜420を参照)、インメモリデータ構造における複数のエントリが更新される。この段階で、コントローラは、<親オブジェクトID,オフセット>を使用して読取要求を提供し得るが、TOIを指定するいかなる要求も提供することができない。さらに、オフセットが、ステップ412において書込要求において受取られたオフセットに対応する場合に、<親オブジェクトID,オフセット>を含む読取要求が受取られると、その結果は、ステップ414においてデータフラグに格納されたデータである。
図5A〜図5Cを参照して、図5A〜図5Cは、本発明の1つ以上の実施例に係るマルチオブジェクトトランザクションを実行するためのフローチャートを示す。本発明の一実施例では、図5A〜図5Cは、複数のオブジェクトに関連するトランザクションを実行するための方法を示し、各オブジェクトは、それ自体のトランザクションオブジェクトに関連付けられる。以下に記載されるように、各オブジェクトおよび対応するトランザクションオブジェクトは、(複数のオブジェクトを含む)トランザクション全体がコミットされるまで、その他のオブジェクトおよび対応するトランザクションオブジェクトから独立して動作し得る。したがって、以下の説明では、「トランザクション」は、単一のトランザクションオブジェクトを含むトランザクション、または複数のトランザクションオブジェクトを含むトランザクションのいずれかを指し得る。
図5Aを参照して、ステップ500において、トランザクションのための要求がストレージコントローラによって受取られ、当該要求は、親オブジェクトを指定する。親オブジェクトは、トランザクションが実行されるオブジェクトに対応する(例えば図7Aを参照。親オブジェクトは、オブジェクトID=Aを有するオブジェクトである。)。ステップ502において、当該トランザクションのためにトランザクションオブジェクトが作成される。トランザクションオブジェクトの作成は、トランザクションのためのオブジェクトIDを指定することを含み得る。ステップ504において、当該トランザクションオブジェクトのためにメタデータ(MD)フラグが作成される。メタデータフラグは、トランザクションオブジェクトID(TOI)と、親オブジェクトのためのオブジェクトIDと、トランザクションがコミットされないことを示すフィールドとを含み得る。メタデータフラグは、トランザクションオブジェクトのための他のメタデータも含み得る。
ステップ506において、当該メタデータフラグのために目次(TOC)エントリ(MD TEと称される)が作成される。MD TEは、TOIと、オフセット=−1とを含む。MD TEは、本発明から逸脱することなく、他の情報を含んでいてもよい。ステップ508において、MDフラグおよびMD TEがその後ストレージアレイに格納される。本発明の一実施例では、MDフラグは、フラグページの一部としてストレージアレイに格納され、MD TEは、TOCページの一部としてストレージアレイに格納される。上記のフラグ、TEおよびページを書込むタイミングは、本発明の実施例が如何に実現されるかに基づいてさまざまであり得る。
ステップ510において、トランザクションを開始させたクライアントにTOIが提供される。TOIは、本発明から逸脱することなく、トランザクションに参加している他のクライアントに提供されてもよい。ステップ512において、作成されるさらなるトランザクションがあるか否かについて判断がなされる。もしあれば、プロセスはステップ502に進む。そうでなければ、プロセスはステップ514に進む。ステップ514において、トランザクションのうちの1つの一部としてデータを書込むための書込み要求が受取られる。書込要求は、TOIと、オフセットとを含む。TOIは、ステップ502の実行中に作成された任意のTOIに対応し得る。ステップ516において、書込要求において識別されたデータを有するデータフラグが、(通常はフラグページの一部として)ストレージアレイにおけるデータフラグに格納される。ステップ518において、(ステップ516において格納された)データフラグのためのTEが作成され、(通常はTOCページの一部として)ストレージアレイに格納される。データフラグのためのTEは、TOIと、オフセットとを含む。TEは、親オブジェクトのためのオブジェクトIDを含まない。
ステップ520において、インメモリデータ構造は、(i)TOIおよびオフセットから(図4に上記されたように)導き出されるハッシュ値と、(ii)ステップ516において格納されたデータフラグの物理アドレスとを含むエントリを含むように更新される。この段階で、ストレージコントローラは、TOIおよびオフセットを含む読取要求と、親オブジェクトのオブジェクトIDおよびオフセットを含む読取要求とを処理し得る。上記の読取要求を提供した結果として、通常は、2つの異なるデータ、すなわち<TOI,オフセット>に対応するデータおよび<親オブジェクトID,オフセット>に対応するデータが取得され、これらのオフセットは同一である。ステップ522において、トランザクションのうちのいずれかのためのさらなる書込要求(すなわち、ステップ502の任意の実行中に作成されたTOIのうちの1つを指定する書込要求)があるか否かについて判断がなされる。トランザクションのうちのいずれかのためのさらなる書込要求があれば、プロセスはステップ514に進む。そうでなければ、プロセスはステップ524に進む。
ステップ524において、2つ以上のTOIを指定するコミット要求がクライアントから受取られる。TOIは、ステップ502において作成されたトランザクションに対応する。ステップ526において、対応するトランザクションオブジェクトID(TOI)と、親オブジェクトのための対応するオブジェクトIDと、トランザクションがコミットされることを示すフィールドとを含む第2のMDフラグが、各トランザクションオブジェクト(すなわち、ステップ502において作成されたトランザクションに対応するトランザクションオブジェクト)ごとに作成される。また、上記の第2のMDフラグの各々のために第2のMD TEが作成され、第2のMD TEは、対応するTOIと、オフセット=−1とを含む。ステップ526は、ストレージアレイおよび/またはストレージコントローラがコピーオンライトスキームを実行するときに実行される。ストレージアレイおよび/またはストレージコントローラがコピーオンライトスキームを実行しない場合には、ステップ526は実行されなくてもよい。それどころか、ステップ504および506において作成されたMD TEおよびMDフラグは、それぞれステップ424および426において作成されたMD TEおよびMDフラグと同一の情報を含むように情報を含むように更新され得る。
ステップ528において、複合フラグが作成され、当該複合フラグは、複合オブジェクトに関連付けられ、ステップ526において作成されたMD TEを含む。ステップ530において、複合フラグのためのTEが作成される。複合フラグのためのTEは、複合フラグのためのオブジェクトIDと、オフセット=−1とを含む。複合フラグのためのTEは、複合TEによって参照されるフラグが複合フラグであることも示し得る。ステップ532において、複合フラグ、複合フラグのためのTE、および(ステップ526において作成された)MDフラグが、ストレージアレイに格納される。複合フラグおよびMDフラグは、1つ以上のフラグページに格納され、複合フラグのためのTEは、TOCページに格納される。本発明の一実施例では、複合フラグの格納は、(トランザクションオブジェクトIDを介して)複合フラグにおいて指定された全てのトランザクションがコミットされたことを暗に示す。
ステップ534において、トランザクションがコミットされることを反映するようにインメモリデータ構造が更新される。具体的には、本発明の一実施例では、図4におけるステップ430に関して上記した態様で、インメモリデータ構造における複数のエントリが更新される。
図6A〜図6Dは、本発明の1つ以上の実施例に係る例を示す。当該例は、本発明の範囲を限定するよう意図したものではない。
図6Aを参照して、オブジェクトID=Aを有するオブジェクトがストレージアレイに存在するシナリオを考える。より具体的には、オブジェクトのためのMD TOCエントリおよびオブジェクトのための対応するMDフラグがあり、MDフラグは、ハッシュ<A,−1>を介してアクセス可能である。さらに、オブジェクトのためのデータを含むデータフラグ(データフラグB)があり、当該データは、<A,3>に関連付けられる。上記のオブジェクトIDおよびオフセットは、ストレージアレイにおける対応するデータTE(データTOCエントリB)に格納される。この段階で、ストレージアレイには4つの項目があり、インメモリデータ構造には2つのエントリがある。インメモリデータ構造におけるエントリの各々は、上記のフラグのうちの1つを指し示す。
図6Bを参照して、オブジェクトID=Bを指定するトランザクションをクライアントが要求するシナリオを考える。このシナリオでは、MDフラグ(メタデータフラグC)が作成され、ストレージアレイに格納され、当該MDフラグは、トランザクションオブジェクトID=Bであり、オブジェクトBのタイプがトランザクションであり、親オブジェクトID=Aであり、トランザクションがコミットされないことを指定する。対応するMD TE(メタデータTOCエントリC)も作成され、ストレージアレイに格納され、MD TEは、オブジェクトID=Bおよびオフセット=−1を指定する。メタデータフラグCのための対応するエントリも作成され、インメモリデータ構造に格納される。
図6Cを参照して、トランザクションのための書込要求がその後受取られ、処理されるシナリオを考える。書込要求を提供した結果は、データ(データ’)を有するデータフラグD、ならびに、オブジェクトID=Bおよびオフセット=3を指定する対応するデータTE(データTOCエントリD)である。データフラグDのための対応するエントリも作成され、インメモリデータ構造に格納される。この段階で、ストレージアレイにおける4つの項目は、インメモリデータ構造における対応するエントリを介してアクセスされ得る。
図6Dを参照して、図6Cに関して上記したように書込要求が受取られ、処理された後、オブジェクトID=Bを含むコミット要求が受取られると想定する。この段階で、トランザクションはコミットされる。トランザクションのコミットは、当該例に示されるように、(i)オブジェクトID=Bに対応するトランザクションがコミットされることを指定する新たなメタデータフラグCを更新または作成することと、(ii)データフラグBおよびデータTOCエントリBを無効にすることと、(iii)ハッシュ<A,3>をデータフラグDの物理アドレスに関連付けるようにインメモリデータ構造を更新することとを含み得る。
図7A〜図7Dは、本発明の1つ以上の実施例に係る例を示す。当該例は、本発明の範囲を限定するよう意図したものではない。
2つのトランザクションがあり、1つが以下のトランザクションオブジェクト、すなわちオブジェクトID=BおよびオブジェクトID=Dの各々に関連付けられるシナリオを考える。さらに、オブジェクトID=Bに関連付けられるトランザクションのための親オブジェクトIDはオブジェクトID=Aであり、オブジェクトID=Dに関連付けられるトランザクションのための親オブジェクトIDはオブジェクトID=Cであると想定する。最後に、オブジェクトID=AおよびオブジェクトID=Cの各々に関連付けられる(データフラグの形態の)データがあると想定する。図7Aは、上記の想定に基づくストレージアレイの内容を示す。さらに、図7Bは、上記の想定に基づくインメモリデータ構造の内容を示す。
上記のトランザクションの各々について書込要求が提供され、その結果、2つのさらなるデータTE(データTOCエントリBおよびデータTOCエントリD)および2つのさらなるデータフラグ(データフラグBおよびデータフラグD)がストレージアレイに格納され、データフラグBは、データフラグAと同一のオフセットに関連付けられ、データフラグDは、データフラグCと同一のオフセットに関連付けられると想定する。また、両方の書込要求が提供された後、オブジェクトID=BおよびオブジェクトID=Dを指定するコミット要求が受取られると想定する。当該コミット要求は、その後、複合フラグおよび対応するMD TE(メタデータTOCエントリE)を作成してストレージアレイに格納することによって提供される。最後に、データフラグA、データTOCエントリA、データフラグCおよびデータTOCエントリCがストレージアレイにおいて無効にされ、インメモリデータ構造において対応するハッシュエントリを無効にする。図7Cは、上記の想定に基づくストレージアレイの内容を示す。さらに、図7Dは、上記の想定に基づくインメモリデータ構造の内容を示す。
本発明の一実施例では、最初のインメモリデータ構造は、全てのメタデータTOCエントリおよび対応するフラグ(すなわちメタデータフラグまたは複合フラグ)において読取りを行うことによって生成され得る。このデータが取得されると、ストレージコントローラ(または関連のプロセス)は、インメモリデータ構造の最新の状態を再生成するためにメタデータフラグおよび複合フラグにおける情報を再検討することによってトランザクションを「リプレイする」ことができる。特に、オブジェクトがトランザクション(またはトランザクションオブジェクト)であり、トランザクションがコミットされないことを所与のMDフラグが示す場合、インメモリデータ構造においてエントリを作成するために、トランザクションに関連付けられたデータフラグ(すなわち、トランザクションオブジェクトIDを指定するTEと一致するデータフラグ)は使用されない。さらに、複合フラグが識別されると、ストレージコントローラ(または関連のプロセス)は、複合フラグにおけるメタデータTEを再帰的に処理する。
本発明の一実施例では、ソリッドステートメモリモジュールに格納された任意のデータに対して任意の動作(例えば読取動作、書込動作および/または消去動作)が行われる前に、インメモリデータ構造が生成される。
本発明は、TOCページとして確保されている各ブロックにおける最新のページに関連付けて説明されてきたが、本発明から逸脱することなく、ブロックにおける別のページを確保されたTOCページとして設定することによって本発明の実施例が実現されてもよいということを当業者は理解するであろう。
本発明の実施例は、ソリッドステートメモリデバイスでの実現例に関連付けて説明されてきたが、本発明の実施例は、本発明から逸脱することなく、別のタイプの記憶装置を用いて実現されてもよい。
本発明の1つ以上の実施例は、システムにおける1つ以上のプロセッサによって実行される命令を用いて実現され得る。さらに、このような命令は、1つ以上の非一時的なコンピュータ読取可能媒体に格納されるコンピュータ読取可能命令に対応し得る。
本発明は、限られた数の実施例に関連付けて説明されてきたが、本明細書に開示されている本発明の範囲から逸脱しない他の実施例を考え出すことができるということを、本開示の利益を有する当業者は理解するであろう。したがって、本発明の範囲は、添付の特許請求の範囲によってのみ限定されるべきである。

Claims (18)

  1. 命令を備える非一時的なコンピュータ読取可能媒体であって、前記命令は、プロセッサによって実行されると方法を実行し、前記方法は、
    トランザクションのためのトランザクションオブジェクトを作成するステップを備え、前記トランザクションオブジェクトは、トランザクションオブジェクトID(TOI)によって識別され、オブジェクトID(OID)によって識別されるオブジェクトに関連付けられ、前記方法はさらに、
    前記トランザクションオブジェクトのための第1の目次エントリ(TE)およびメタデータ(MD)フラグを永続性ストレージに格納するステップを備え、前記第1のTEは、前記MDフラグを参照し、前記MDフラグは、前記オブジェクトを識別し、前記方法はさらに、
    前記トランザクションの一部として前記トランザクションオブジェクトにデータを書込むための書込要求を受取るステップを備え、前記書込要求は、前記TOIおよびオフセットを指定し、前記方法はさらに、
    前記書込要求に応答して、第2のTEおよびデータフラグを前記永続性ストレージに格納するステップを備え、前記第2のTEは、前記TOIおよびオフセットを指定し、前記第2のTEは、前記データフラグを参照し、前記データフラグは、前記データを備え、前記方法はさらに、
    前記書込要求に応答して、ハッシュ値と前記データフラグの物理アドレスとを備えるエントリをインメモリデータ構造に格納するステップを備え、前記ハッシュ値は、前記TOIおよび前記オフセットから導き出され、前記方法はさらに、
    前記トランザクションをコミットするためのコミット要求を受取るステップと、
    前記コミット要求に応答して、前記トランザクションオブジェクトのための第3のTEおよび第2のメタデータ(MD)フラグを永続性ストレージに格納するステップを備え、第3のTEは、前記第2のMDフラグを参照し、前記第2のMDフラグは、前記オブジェクトを識別して、前記トランザクションがコミットされることを指定し、前記方法はさらに、
    前記コミット要求に応答して、第2のハッシュ値と第2のデータフラグのための第2の物理アドレスとを備える第2のエントリを、前記第2の物理アドレスが前記物理アドレスと置き換えられるように前記インメモリデータ構造において更新するステップを備え、前
    記第2のハッシュ値は、前記OIDおよび前記オフセットから導き出される、非一時的なコンピュータ読取可能媒体。
  2. 前記コミット要求が処理される前は、前記オブジェクトにおけるデータは、前記OIDおよび前記オフセットを用いてアクセス可能であり、前記トランザクションに関連付けられるがコミットされない前記データフラグにおける前記データは、前記TOIおよび前記オフセットを用いてアクセス可能である、請求項1に記載の非一時的なコンピュータ読取可能媒体。
  3. 前記コミット要求が処理された後は、前記データフラグにおける前記データは、前記OIDおよび前記オフセットを用いてアクセス可能であり、前記第2のデータフラグにおける第2のデータは、アクセス不可能である、請求項2に記載の非一時的なコンピュータ読取可能媒体。
  4. 前記永続性ストレージは、ソリッドステートメモリである、請求項1に記載の非一時的なコンピュータ読取可能媒体。
  5. 前記コミット要求は、前記TOIを指定し、前記OIDを指定しない、請求項1に記載の非一時的なコンピュータ読取可能媒体。
  6. 前記TEを格納するステップは、前記永続性ストレージ内の目次(TOC)ページに前記TEを格納するステップを備える、請求項1に記載の非一時的なコンピュータ読取可能媒体。
  7. 前記TEおよび前記MDフラグは、前記永続性ストレージ内のブロックにおける別々のページに格納される、請求項1に記載の非一時的なコンピュータ読取可能媒体。
  8. 前記MDフラグは、前記OIDを用いて前記オブジェクトを識別する、請求項1に記載の非一時的なコンピュータ読取可能媒体。
  9. 前記コミット要求を処理する前に、前記MDフラグは、前記トランザクションがコミットされないことを指定する、請求項1に記載の非一時的なコンピュータ読取可能媒体。
  10. 前記TEは、−1に等しい第3のオフセットを含む、請求項1に記載の非一時的なコンピュータ読取可能媒体。
  11. 命令を備える非一時的なコンピュータ読取可能媒体であって、前記命令は、プロセッサによって実行されると方法を実行し、前記方法は、
    トランザクションの一部としてデータを書込むための書込要求を受取るステップを備え、前記書込要求は、トランザクションオブジェクトのためのトランザクションオブジェクトID(TOI)およびオフセットを指定し、前記TOIは、オブジェクトID(OID)によって識別されるオブジェクトに関連付けられ、前記方法はさらに、
    前記書込要求に応答して、第1のTEおよびデータフラグを永続性ストレージに格納するステップを備え、前記TEは、前記TOIおよび前記オフセットを指定し、前記第1のTEは、前記データフラグを参照し、前記データフラグは、前記データを備え、前記方法はさらに、
    前記書込要求に応答して、ハッシュ値と前記データフラグの物理アドレスとを備えるエントリをインメモリデータ構造に格納するステップを備え、前記ハッシュ値は、前記TOIおよび前記オフセットから導き出され、前記方法はさらに、
    第2のトランザクションの一部として第2のデータを書込むための第2の書込要求を受
    取るステップを備え、前記第2の書込要求は、第2のトランザクションオブジェクトのための前記第2のTOIおよび第2のオフセットを指定し、前記第2のTOIは、第2のOIDによって識別される第2のオブジェクトに関連付けられ、前記方法はさらに、
    前記第2の書込要求に応答して、第2のTEおよび第2のデータフラグを前記永続性ストレージに格納するステップを備え、第2のTEは、前記第2のTOIおよび前記第2のオフセットを指定し、前記第2のTEは、前記第2のデータフラグを参照し、前記第2のデータフラグは、前記第2のデータを備え、前記方法はさらに、
    前記第2の書込要求に応答して、第2のハッシュ値と前記第2のデータフラグの第2の物理アドレスとを備える第2のエントリをインメモリデータ構造に格納するステップを備え、前記第2のハッシュ値は、前記第2のTOIおよび前記第2のオフセットから導き出され、前記方法はさらに、
    コミット要求を受取るステップを備え、前記コミット要求は、前記TOIと前記第2のTOIとを備え、前記方法はさらに、
    前記コミット要求に応答して、第3のTEおよび複合フラグを永続性ストレージに格納するステップを備え、第3のTEは、前記複合フラグを参照し、前記複合フラグは、第4のTEと第5のTEとを備え、前記第4のTEは、MDフラグを参照し、前記MDフラグは、前記TOIを識別して、前記トランザクションがコミットされることを指定し、前記第5のTEは、第2のMDフラグを参照し、前記第2のMDフラグは、前記第2のTOIを識別して、前記第2のトランザクションがコミットされることを指定し、前記方法はさらに、
    前記コミット要求に応答して、第3のハッシュ値と第3のデータフラグのための第3の物理アドレスとを備える第3のエントリを、前記第3の物理アドレスが前記物理アドレスと置き換えられるように前記インメモリデータ構造において更新するステップを備え、前記第3のハッシュ値は、前記OIDおよび前記オフセットから導き出され、前記方法はさらに、
    前記コミット要求に応答して、第4のハッシュ値と第4のデータフラグのための第4の物理アドレスとを備える第4のエントリを、前記第4の物理アドレスが前記第2の物理アドレスと置き換えられるように前記インメモリデータ構造において更新するステップを備え、前記第4のハッシュ値は、前記第2のOIDおよび前記第2のオフセットから導き出される、非一時的なコンピュータ読取可能媒体。
  12. 前記書込要求を受取る前に、
    前記トランザクションオブジェクトを作成するステップと、
    前記トランザクションオブジェクトのための第6のTEおよび第3のMDフラグを前記永続性ストレージに格納するステップとを備え、前記第6のTEは、前記第3のMDフラグを参照し、前記第3のMDフラグは、前記オブジェクトを識別し、前記方法はさらに、
    前記第2のトランザクションオブジェクトを作成するステップと、
    前記第2のトランザクションオブジェクトのための第7のTEおよび第4のMDフラグを前記永続性ストレージに格納するステップを備え、前記第7のTEは、前記第4のMDフラグを参照し、前記第4のMDフラグは、前記第2のオブジェクトを識別する、請求項11に記載の非一時的なコンピュータ読取可能媒体。
  13. 前記複合フラグは、フラグページに格納される、請求項11に記載の非一時的なコンピュータ読取可能媒体。
  14. 前記第3のTEは、目次ページに格納される、請求項13に記載の非一時的なコンピュータ読取可能媒体。
  15. 前記フラグページおよび前記TOCページは、前記永続性ストレージ内のブロックに格納される、請求項13に記載の非一時的なコンピュータ読取可能媒体。
  16. 前記第3のTEは、前記第3のTEが関連付けられるフラグのタイプを指定する、請求項11に記載の非一時的なコンピュータ読取可能媒体。
  17. 前記第3のTEは、複合オブジェクトIDと、第5のオフセットとを備える、請求項11に記載の非一時的なコンピュータ読取可能媒体。
  18. 前記第5のオフセットは−1である、請求項17に記載の非一時的なコンピュータ読取可能媒体。
JP2015555452A 2013-03-14 2014-02-25 ストレージシステムにおけるオブジェクトベースのトランザクションのための方法およびシステム Active JP5932171B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/826,792 US8601206B1 (en) 2013-03-14 2013-03-14 Method and system for object-based transactions in a storage system
US13/826,792 2013-03-14
PCT/US2014/018265 WO2014158563A1 (en) 2013-03-14 2014-02-25 Method and system for object-based transactions in a storage system

Publications (2)

Publication Number Publication Date
JP2016504700A JP2016504700A (ja) 2016-02-12
JP5932171B2 true JP5932171B2 (ja) 2016-06-08

Family

ID=49640917

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015555452A Active JP5932171B2 (ja) 2013-03-14 2014-02-25 ストレージシステムにおけるオブジェクトベースのトランザクションのための方法およびシステム

Country Status (5)

Country Link
US (2) US8601206B1 (ja)
EP (1) EP2972744B1 (ja)
JP (1) JP5932171B2 (ja)
CN (1) CN105027067B (ja)
WO (1) WO2014158563A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378149B1 (en) * 2014-08-29 2016-06-28 Emc Corporation Method and system for tracking modification times of data in a storage system
CN106304090B (zh) * 2015-05-13 2021-11-23 索尼公司 动态频谱接入系统中抑制干扰的方法和设备
US9911487B2 (en) 2015-05-19 2018-03-06 EMC IP Holding Company LLC Method and system for storing and recovering data from flash memory
US11249968B2 (en) * 2016-05-09 2022-02-15 Sap Se Large object containers with size criteria for storing mid-sized large objects
US10783136B1 (en) * 2017-02-28 2020-09-22 Virtuozzo International Gmbh Management of garbage data in distributed systems
CN107728936B (zh) 2017-09-05 2020-10-09 华为技术有限公司 用于传输数据处理请求的方法和装置
US10810268B2 (en) 2017-12-06 2020-10-20 Futurewei Technologies, Inc. High-throughput distributed transaction management for globally consistent sharded OLTP system and method of implementing
US11169973B2 (en) 2019-08-23 2021-11-09 International Business Machines Corporation Atomically tracking transactions for auditability and security

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7543100B2 (en) 2001-06-18 2009-06-02 3Par, Inc. Node controller for a data storage system
JP2007042115A (ja) * 2001-11-02 2007-02-15 Nec Corp スイッチ方法、装置およびプログラム
US7617180B1 (en) 2005-06-06 2009-11-10 Infoblox Inc. Efficient lock management
JP4623318B2 (ja) * 2007-01-24 2011-02-02 日本電気株式会社 追記型データベース管理システム、不要領域修復処理方法及び不要領域修復プログラム
JP5211514B2 (ja) * 2007-03-09 2013-06-12 富士通株式会社 更新装置、更新方法および更新プログラム
US8370567B1 (en) 2012-03-23 2013-02-05 DSSD, Inc. Storage system with self describing data

Also Published As

Publication number Publication date
EP2972744A1 (en) 2016-01-20
US20160011988A1 (en) 2016-01-14
US9619403B2 (en) 2017-04-11
WO2014158563A1 (en) 2014-10-02
EP2972744B1 (en) 2019-08-14
CN105027067B (zh) 2017-09-12
JP2016504700A (ja) 2016-02-12
CN105027067A (zh) 2015-11-04
US8601206B1 (en) 2013-12-03

Similar Documents

Publication Publication Date Title
JP5932171B2 (ja) ストレージシステムにおけるオブジェクトベースのトランザクションのための方法およびシステム
JP6556911B2 (ja) 注釈付きアトミック書き込み操作を行う方法および装置
US10331561B1 (en) Systems and methods for rebuilding a cache index
CN107784121B (zh) 一种基于非易失内存的日志文件系统的小写优化方法
US10001946B2 (en) Method and system for garbage collection in a storage system based on longevity of stored data
US20140281307A1 (en) Handling snapshot information for a storage device
US20150121023A1 (en) Operating A Memory Management Controller
US9378149B1 (en) Method and system for tracking modification times of data in a storage system
US8977662B1 (en) Storing data objects from a flat namespace in a hierarchical directory structured file system
JP2006268139A (ja) データ複製装置、方法及びプログラム並びに記憶システム
CN109902034B (zh) 快照创建方法、装置、电子设备及机器可读存储介质
US20170039142A1 (en) Persistent Memory Manager
US10198352B2 (en) Efficient pointer swizzling for persistent objects
US20170083537A1 (en) Mapping logical identifiers using multiple identifier spaces
US11321002B2 (en) Converting a virtual volume between volume types
CN106897311B (zh) 数据库批次更新方法、数据还原日志产生方法与存储装置
US20170039110A1 (en) Computer
Kang et al. Per-block-group journaling for improving fsync response time
CN112748854B (zh) 对快速存储设备的优化访问
US9710514B1 (en) Systems and methods for efficient storage access using metadata
KR20090131142A (ko) 메모리 관리 장치 및 방법
US10289548B1 (en) Method and system for garbage collection in a storage system which balances wear-leveling and performance
US11893273B2 (en) Crash-safe tiered memory system
CN110874273A (zh) 一种数据处理方法及装置
KR101881038B1 (ko) 비휘발성 메모리에 저장된 메모리 매핑 파일의 원자적 업데이트 방법 및 제어 장치

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150724

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150724

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20150724

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20151210

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160311

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160427

R150 Certificate of patent or registration of utility model

Ref document number: 5932171

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

Free format text: JAPANESE INTERMEDIATE CODE: R313111

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250