JP2021522577A - ホスト認識更新書き込みの方法、システム、およびコンピュータ・プログラム - Google Patents

ホスト認識更新書き込みの方法、システム、およびコンピュータ・プログラム Download PDF

Info

Publication number
JP2021522577A
JP2021522577A JP2020558595A JP2020558595A JP2021522577A JP 2021522577 A JP2021522577 A JP 2021522577A JP 2020558595 A JP2020558595 A JP 2020558595A JP 2020558595 A JP2020558595 A JP 2020558595A JP 2021522577 A JP2021522577 A JP 2021522577A
Authority
JP
Japan
Prior art keywords
data
logical address
unit
storage unit
host
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
JP2020558595A
Other languages
English (en)
Other versions
JP7189965B2 (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2021522577A publication Critical patent/JP2021522577A/ja
Application granted granted Critical
Publication of JP7189965B2 publication Critical patent/JP7189965B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

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)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Hardware Redundancy (AREA)
  • Memory System (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

【課題】
【解決手段】1つの実施形態は、記憶ユニット上で、ホストによって見られる論理アドレス(例えば、論理ブロック・アドレス、即ちLBA)の第1のセットと、記憶ユニットの物理アドレス(例えば、物理ブロック・アドレス、即ちPBA)の第1のセットおよび物理アドレスの第2のセットとの間のマッピング・データを維持することを含む方法を提供する。論理アドレスの第1のセットの第1の論理アドレス(例えばLBA)は、第1の論理アドレスについての現在のデータを維持する物理アドレスの第1のセットの第1の物理アドレス(例えばPBA)に対応する。第1の論理アドレスは、第1の論理アドレスについての前のデータを維持する物理アドレスの第2のセットの第2の物理アドレス(例えばPBA)に、さらに対応する。方法は、記憶ユニットにおいて、第1の論理アドレスに関係するマルチデバイス動作を実行するためにホストからコマンドを受信することをさらに含む。動作は、原子的に実行される。
【選択図】図7

Description

本発明は、概して、記憶システムに関し、より詳細には、ホスト認識更新書き込みプロトコルを実施するシステムおよび方法に関する。
ハードウェアベース記憶システムは、典型的には、意図的でない電力損失に対するデータ保護のために別個の不揮発性記憶装置を提供する。この別個の不揮発性記憶装置についての典型的な使用は、ログ先行書き込みの実施であり、それは、欠落した更新が、消失訂正符号に関連する原子的(atomic)リード・モディファイ・ライト動作に適用され得ることを保証する。比較すると、データ保護のために消失訂正符号を実施するソフトウェア定義記憶システムは、不揮発性記憶装置の存在を想定できず、したがって、追加の記憶デバイスを用いてこれらのログ先行書き込みを実施させる。それはシステム・レベルでのI/O負荷を増大させ、スループットの減少および応答時間の増加につながる。
本発明は、上記課題の少なくとも1つの課題を解決しようとする。
1つの実施形態は、記憶ユニット上で、ホストによって見られる論理アドレス(例えば、論理ブロック・アドレス、即ちLBA)の第1のセットと、記憶装置の物理アドレス(例えば、物理ブロック・アドレス、即ちPBA)の第1のセットおよび物理アドレスの第2のセットとの間のマッピング・データを維持することを含む方法を提供する。論理アドレスの第1のセットの第1の論理アドレス(例えばLBA)が、第1の論理アドレスについての現在のデータを維持する物理アドレスの第1のセットの第1の物理アドレス(例えばPBA)に対応する。第1の論理アドレスは、第1の論理アドレスについての以前のデータを維持する物理アドレスの第2のセットの第2の物理アドレス(例えばPBA)に、さらに対応する。方法は、記憶ユニットにおいて、第1の論理アドレスに関係するマルチデバイス動作を実行するためにホストからコマンドを受信することをさらに含む。動作は、原子的に(atomically)実行される。
発明のこれらのおよび他の態様、特徴、および利点は、描かれた図面および本明細書の詳細な説明を参照して理解され、添付の特許請求の範囲において詳細に指示される様々な要素および組み合わせによって実現される。前述の概略的な説明、ならびに以下の図面の簡単な説明および発明の詳細な説明の両方が、発明の好適な実施形態の例示および説明であり、特許請求される発明を限定するものではないと理解されるべきである。
発明と見なされる主題は、明細書の末尾における特許請求の範囲において詳細に指示され、明確に特許請求される。発明の前述のおよび他の目的、特徴、および利点は、添付図面と併せて行われる以下の詳細な説明から明らかである。
時間tにおける初期状態の従来のソフトウェア定義消失訂正符号記憶システムを示す。 時間tにおける記憶システムを示す。 時間tにおける記憶システムを示す。 時間tにおける記憶システムを示す。 時間tにおける記憶システムを示す。 時間tにおける記憶システムを示す。 1つまたは複数の実施形態における、記憶装置のための例としてのフレームワークを示す。 1つまたは複数の実施形態における、記憶装置のための別の例としてのフレームワークを示す。 1つまたは複数の実施形態における、記憶装置のためのさらに別の例としてのフレームワークを示す。 1つまたは複数の実施形態における、単一のパリティ消失訂正符号を保全するためのホスト認識更新プロトコルを実施する、例としてのプロセスを示すフローチャートである。 本発明の実施形態を実施するのに有用な情報処理システムを示すハイレベル・ブロック図である。
詳細な説明は、例として図面を参照して、利点および特徴と共に発明の好適な実施形態を説明する。
本発明は、概して、記憶システムに関し、より詳細には、ホスト認識更新書き込みプロトコルを実施するシステムおよび方法に関する。1つの実施形態は、記憶ユニット上で、ホストによって見られる論理アドレス(例えば、論理ブロック・アドレス、即ちLBA)の第1のセットと、記憶ユニットの物理アドレス(例えば、物理ブロック・アドレス、即ちPBA)の第1のセットおよび物理アドレスの第2のセットとの間のマッピング・データを維持することを含む方法を提供する。論理アドレスの第1のセットの第1の論理アドレス(例えばLBA)は、第1の論理アドレスについての現在のデータを維持する物理アドレスの第1のセットの第1の物理アドレス(例えばPBA)に対応する。第1の論理アドレスは、第1の論理アドレスについての以前のデータを維持する物理アドレスの第2のセットの第2の物理アドレス(例えばPBA)に、さらに対応する。方法は、記憶ユニットにおいて、第1の論理アドレスに関係するマルチデバイス動作を実行するためにホストからコマンドを受信することをさらに含む。動作は、原子的に実行される。
説明のため、本明細書で使用される「消失訂正符号記憶システム」という用語は、概して、独立ディスクの冗長アレイ(RAID)の任意のレベルを実施する記憶システムなどであるがこれに限定されない、データ復元性のためのアルゴリズムの汎用クラスを実施する記憶システムを指す。
データ保護のための消失訂正符号を実施する従来のソフトウェア定義記憶システムは、不揮発性記憶装置の存在を想定できない。図1〜6は、従来のソフトウェア定義消失訂正符号記憶システム10上において更新書き込み動作を実行するための例としてのステップ・シーケンスを示す。
図1は、時間tにおける初期状態の記憶システム10を示す。記憶システム10は、データ保護のための3+P消失訂正符号を実施する。記憶システム10は、データ(例えば、データ・ブロックおよびパリティ・ブロック)を維持するための1つまたは複数の不揮発性記憶ユニット12を含む。記憶システム10は、1つまたは複数の記憶ユニット12上の入力/出力(I/O)動作中にデータを保持するための揮発性バッファ11をさらに含む。図1に示されるように、初期状態において、1つまたは複数の記憶ユニット12は、データ・ブロックD0、データ・ブロックD1、データ・ブロックD2、および以下に提供されるパリティ方程式(1)に従って計算されるパリティ・ブロックDPを維持する。
DP=D0+D1+D2 (1)
+は、排他的OR(XOR)演算を意味する。
パリティ・ストライプは、データ・ブロックのセット、およびデータ・ブロックのセットに対応する1つまたは複数のパリティ・ブロックを含む。例えば、データ・ブロックD0〜D2およびパリティ・ブロックDPは、共にパリティ・ストライプを形成する。
図2は、時間tにおける記憶システム10を示す。更新書き込み動作は、外部ホスト・システムによって発行され、新たなデータ・ブロックD0’で1つまたは複数の記憶ユニット12内のデータ・ブロックD0の更新書き込みを要求する、マルチデバイス動作であると仮定する。時間tにおいて、外部ホスト・システムから更新書き込み動作を受信することに応答して、記憶システム10は、1つまたは複数の記憶ユニット12から揮発性バッファ11内にデータ・ブロックD0を読み出す。
図3は、時間tにおける記憶システム10を示す。更新書き込み動作の完了を成功させるためには、パリティ・ブロックDPは、また、新たなパリティ・ブロックDP’に更新されなければならない。時間tにおいて、記憶システム10は、1つまたは複数の記憶ユニット12から揮発性バッファ11内にパリティ・ブロックDPを読み出す。
図4は、時間tにおける記憶システム10を示す。時間tにおいて、記憶システム10は、以下に提供されるパリティ方程式(2)に従って新たなパリティ・ブロックDP’を計算する。
DP’+D0+D0’+DP (2)
図5は、時間tにおける記憶システム10を示す。時間tにおいて、記憶システム10は、1つまたは複数の記憶ユニット12内に新たなデータ・ブロックD0’を書き込む。
図6は、時間tにおける記憶システム10を示す。時間tにおいて、記憶システム10は、1つまたは複数の記憶ユニット120内に新たなパリティ・ブロックDP’を書き込んで、更新書き込み動作を完了する。
データ・ブロックD0およびパリティ・ストライプDPに関係するステップは、非同期であり、したがって図1〜図6に示されるステップのシーケンスは、1つの可能性のある順序である。
意図的でない電力損失事象が時間tと時間tとの間に発生する場合、データ完全性の危急が結果として生じる。特に、パリティ・ブロックDPは、危険にさらされる場合があり、記憶システム10が回復できない不確定パリティ状態をもたらす。パリティ・ブロックDPについての不確定パリティ状態は、以下に提供される式(3)に従って表され得る。
DP!=D0’+D1+D2 (3)
外部ホスト・システムが、更新書き込み動作を再試行した場合、記憶システム10が以下に提供されるパリティ方程式(4)に従って新規パリティ・ブロックDP’を計算するように、記憶システム10は、無効な新規パリティ・ブロックDP’を提供する。
DP’=D0’+D0’+DP (4)
パリティ方程式(4)は、XOR演算の特性に起因して、以下に提供されるパリティ方程式(5)に簡略化される。
DP’=DP (5)
時間tおよびtにおいて実行されるステップが、逆にされた場合、類似のデータ完全性危急が、電力損失の場合に生じる。さらに、パリティ・ブロックが、より複雑なパリティ方程式を用いて表される場合、データ完全性危急の可能性は、より大きくなる。したがって、更新書き込み動作を堅牢にする必要性、およびこのマルチデバイス動作が原子的である必要性がある。
ソフトウェア定義システムは、原子性、および耐久性に関連するその他の特性のような、電力損失などの事象から回復するのに必要な特性を表すことが望ましい。例えば、更新書き込み動作中に意図的でない電力損失が発生する場合、ソフトウェア定義記憶システムは、記憶の整合状態を回復し、正しい消失訂正符号を確保することが可能でなければならない。
不揮発性バッファを有しない従来のソフトウェア定義記憶システムでは、データ更新について原子性を実施するために、ログが使用される。ログは、典型的には、記憶システムの追加の不揮発性記憶ユニットに記憶される。電力損失の場合に生じるデータ完全性危急を回避するために、複製がログのデータ保護のために実施され得る。
データ更新についての原子性を実施するための1つの従来の方法は、パリティ・ブロックを更新するときにトランザクション・ログ先行書き込みを用いることに関係する、ログ先行書き込み(即ち、シャドウ・ログ)である。ログ先行書き込みは、高いI/O拡大の不利益を負う。
例えば、d1’、d2’、...、dN’が、原子的更新書き込みを必要とする(即ち、不揮発性記憶ユニットにわたって原子的に更新書き込みを行う)新規データ・ブロックについてのN個の論理アドレス(例えば、論理ブロック・アドレス、即ちLBA)のセットを意味するとする。p1’、p2’、...、pM’が、また原子的更新書き込みを必要とするN個のLBAに対応する新規パリティ・ブロックについてのM個のLBAのセットを意味するとする。d1、d2、...、dNおよびp1、p2、...、pMが、それぞれN個のLBAおよびM個のLBAの以前のバージョンを意味するとする。
パリティ・ブロックを更新書き込みするためには、M個のLBAがパリティ方程式を用いてN個のLBAから計算され得るように、不揮発性記憶ユニットからN個のLBAおよびM個のLBA(即ち、d1、d2、...、dNおよびp1、p2、...、pM)の以前のバージョンを読み出すことに関係する読み出し動作が必要とされる。これらの読み出し動作は、N+M個のブロック読み出しを必要とする。
更新書き込みについての原子性を達成するために、新規データ・ブロックおよび新規パリティ・ブロックを不揮発性記憶ユニットに書き込む前に、マルチブロック・ログ・レコードが書き込まれる。ログ・レコードは、新規データ・ブロックおよび新規パリティ・ブロック(即ち、d2’、...、dN’およびp1’、p2’、...、pM’)を含む。ログ・レコードは、新規データおよびパリティ値をログ・レコード自体の一部としてインラインで含んでもよく、または実施管理されたシャドウ・ブロック領域から割り当てられるブロックへのポインタを含んでもよい。いずれにしても、ログ・レコードまたはシャドウ・ブロック領域あるいはその両方へのN+M個のブロック書き込みが必要とされる。さらに、ログ・レコードのC個のミラー・コピーが、ログ・レコード自体をデータ損失から保護するために必要とされる。Cは、記憶システムによって実施される消失訂正符号の障害トレランスに合致するように選択される値である。その結果、ログ先行書き込みは、C(N+M)個の書き込みの書き込み増幅係数をもたらす。
新規データ・ブロックおよびパリティ・ブロックがログ・レコードに安全に書き込まれるときにのみ、新規データ・ブロックおよびパリティ・ブロックが、不揮発性記憶ユニットに書き込まれ得る。したがって、ログ先行書き込みを用いる原子的更新書き込みについての総I/O増幅係数は、N+M個のブロック読み出しおよびC(N+M)個の書き込みの合計である。
データ・ブロックおよびパリティ・ブロックは同期されないため、パリティ・ブロックが危険にさらされる場合がある(即ち、不確定パリティ状態)。
1つの実施形態は、基礎となる記憶装置がコピー・オン・ライト(COW)方法論を使用するときに、原子性を通してデータ完全性を維持するためのトランザクション・ログ先行書き込みと併せて、シャドウ・ログを用いて記憶システム上の書き込み減少のための(即ち、書き込みI/O負荷を減少させる)システムおよび方法を提供する。そのようなデータ保護がないと、意図的でない電力損失がある場合にデータ完全性危急が発生し得る。1つの実施形態は、フラッシュ記憶装置およびZFSなどのCOWファイル・システムに適用する。1つの実施形態は、シャドウ・コピーについての復元性およびトランザクション・ログ先行書き込みを提供するために典型的に必要とされる、追加の書き込み動作を回避する。
フラッシュなどのCOW記憶ユニットは、外部ホスト・システムによって参照される論理アドレス(例えばLBA)のセットを記憶ユニットの物理アドレス(例えば、物理ブロック・アドレス、即ちPBA)のセットにマッピングするためのメタデータ情報(「マッピング・データ」)を維持する内部変換レイヤを有する。フラッシュ記憶装置は、概して書き込み動作についてその場更新をサポートしないため、マッピング・データを内部的に維持することは、記憶ユニットが全削除ブロックのガベージ・コレクションをサポートすることを可能にする。
図7は、1つまたは複数の実施形態における記憶装置のための例としてのフレームワーク50を示す。例としてのフレームワーク50は、ソフトウェア定義記憶システム100、および記憶システム100に接続される外部ホスト・システム60を含む。
1つの実施形態において、記憶システム100は、データ(例えば、データ・ブロックおよびパリティ・ブロック)を維持するための1つまたは複数の不揮発性記憶ユニット120(例えば、COW記憶ユニット)を含む記憶アレイである。記憶システム100は、コマンド(例えば、読み出しコマンド、書き込みコマンドなど)を受信するなど、ホスト・システム60とデータを交換するように構成されるI/Oユニット130をさらに含む。記憶システム100は、受信したコマンドに応答して1つまたは複数の記憶ユニット120に対して実行されるI/O動作中にデータを保持するための揮発性バッファ110をさらに含む。1つの実施形態において、記憶システム100は、データ保護のための消失訂正符号を実施する(即ち、消失訂正符号化記憶システム)。
1つの実施形態において、ホスト・システム60は、1つまたは複数の記憶ユニット120の境界または記憶システム100によって実施される消失訂正符号の詳細の知識なしで、LBAの仮想アドレス空間として1つまたは複数の記憶ユニット120上に記憶されたデータを見る。ホスト・システム60は、コマンド(例えば、読み出しコマンド、書き込みコマンドなど)を発行するなど、記憶システム100とデータを交換するように構成されるI/Oユニット61を含む。ホスト・システム60は、書き込みコマンドが消失訂正符号を保全するための追加更新書き込み動作を伴い得ることを認識することなく、仮想アドレス空間にコマンドを発行し得る。
1つの実施形態において、記憶システム100は、ホスト・システム60によって参照される仮想アドレス空間のLBAについて、LBAに対応するデータ・ブロックおよびパリティ・ブロックを含む1つまたは複数の記憶ユニット120の1つまたは複数の部分を識別するように構成されるコントローラ/仮想化ユニット140をさらに含む。コントローラ/仮想化ユニット140は、仮想化アドレス空間の論理アドレスを1つまたは複数の記憶ユニット120の物理アドレスにマッピングする(例えば、仮想アドレス空間のLBAを対応するデータ・ブロックおよびパリティ・ブロックを含む1つまたは複数の記憶ユニット120のPBAにマッピングする)。別の実施形態では、コントローラ/仮想化ユニット140は、その代わりに(図8に示されるように)ホスト・システム60上で実施される。さらに別の実施形態では、コントローラ/仮想化ユニット140は、(図9に示されるように)コントローラ・システム80などの別の外部システム上で実施される。
従来のソフトウェア定義記憶システムと比較すると、フレームワーク50は、必要とされる追加の書き込み動作の数の減少を達成するために、記憶システム100の挙動に対する修正およびホスト・システム60とのI/Oインターフェースに対する修正をサポートする。具体的には、フレームワーク50は、少なくとも1つの記憶ユニット120の内部変換レイヤ121内に維持されるマッピング・メタデータを拡張する。拡張されたマッピング・メタデータは、1つまたは複数のLBA(即ち、データ・ブロックまたはパリティ・ブロックについてのLBA)の1つまたは複数の以前のバージョン・コピーを識別および追跡する、以前のバージョンのマッピング情報125を含むが、これに限定されない。フレームワーク50は、以前のバージョンのマッピング情報の処理および管理を容易にするためにコントローラ/仮想化ユニット140および1つまたは複数の記憶ユニット120によって実施される1つまたは複数の新規I/Oインターフェースをさらに提供する。
記憶ユニット120の内部変換レイヤ121は、以下の機能、(1)LBAに関連付けられた記憶ユニット120のPBAを判断するための機能、および(2)書き込み動作のための記憶ユニット120の空きPBAを取得するための機能、を実施するように構成される。
フレームワーク50は、機能の大部分が記憶装置内で実行されるホスト認識モデル、および新規機能を提供するために必要な情報がホスト・レベルにおいて利用可能かつ実行可能であるホスト管理手法の両方をサポートする。
1つの実施形態では、従来のソフトウェア定義記憶システムとは異なり、LBAは、複数のPBAに対応し得る。例えば、LBAは、データ・ブロックを維持する第1のPBA、およびデータ・ブロックの以前のバージョン・コピーを維持する第2のPBAに対応し得る。本明細書において後で詳細に説明される以前のバージョンのマッピング情報の実施形態は、1つまたは複数のLBAの単一の以前のバージョン・コピーを識別および追跡するが、以前のバージョンのマッピング情報は、1つまたは複数のLBAの複数の以前のバージョン・コピーを識別および追跡し得る。
以前のバージョン・マッピング情報は、ハッシュ・テーブル、キーバリュー・ストア、データベースなどであるがこれらに限定されない複数の方式で、少なくとも1つの記憶ユニット120上に記憶され得る。以前のバージョン・コピーの総数は、利用可能なLBAの総数よりも著しく少なくなることが予期されるため、以前のバージョン・コピーは、効率的な記憶のために、例えば疎なデータ構造を用いて、1つの実施形態において別々に記憶されてもよく、それによって、各LBAの以前のバージョン・コピーのための以前のバージョンのマッピング情報内のエントリを有する要件を除去する。
1つの実施形態において、記憶ユニット120上の以前のバージョンのマッピング情報の管理は、LBAについてのデータの現在のバージョン・コピー(即ち、現在のデータ・ブロックまたは現在のパリティ・ブロック)を維持する第1のPBAへの第1のポインタ、およびLBAについてのデータの以前のバージョン・コピー(即ち、以前のデータ・ブロックまたは以前のパリティ・ブロック)を維持する第2のPBAへの第2のポインタを、LBAについて含むことによって実施される。本明細書において後で詳細に説明されるように、少なくとも1つの記憶ユニット120上で以前のバージョンのマッピング情報を維持することが、電力損失事象後のデータ回復のために少なくとも1つの記憶ユニット120の内部動作の状態を追跡することを容易にする。
以下の表1は、LBAについての例としてのエントリを提供する。エントリは、1つまたは複数の実施形態における、記憶ユニット120上の以前のバージョンのマッピング情報に含まれる。
Figure 2021522577
上で提供される表1に示されるように、エントリは、複数のフィールドを含む。複数のフィールドは、(1)エントリの内部管理における使用のためのエントリ用ローカル識別子(例えば、記憶アレイ内のアドレス)を含む任意のIDフィールド、(2)ホスト・システム60によって参照される/見られる仮想アドレス空間のLBAを含むLBAフィールド、(3)LBAについてのデータの現在のバージョン・コピーを含む記憶ユニット120のPBAを含む現在のPBAフィールド、(4)LBAについてのデータの以前のバージョン・コピーを含む記憶ユニット120の異なるPBAを含む以前のPBAフィールド、(5)書き込み動作が完了したかどうかを示すgwcフラグを含むグローバル書き込み完了(gwc)フィールド、(6)記憶ユニット120上の以前のバージョンのマッピング情報に含まれる全てのエントリにわたって一意であるtsnを含むトランザクション・シーケンス番号(tsn)フィールド、および(7)hmdを含むホスト定義メタデータ(hmd)・フィールド、のうちの1つまたは複数を含むが、これらに限定されない。
エントリが空の場合、LBAフィールドは、エントリを空としてマークする代わりにNULL値を維持してもよい。LBAについてのデータの現在のバージョン・コピーが割り当てられない場合、現在のPBAフィールドは、その代わりにNULL値を維持してもよい。LBAについてのデータの以前のバージョン・コピーが割り当てられない場合、以前のPBAフィールドは、その代わりにNULL値を維持してもよい。
説明のため、「データ・ユニット」という用語は、概して、1つまたは複数のデータ・ブロックを含む1つまたは複数のPBAを含む記憶ユニット120の一部を指すものとする。「パリティ・ユニット」という用語は、概して、1つまたは複数のパリティ・ブロックを含む1つまたは複数のPBAを含む記憶ユニット120の一部を指すものとする。「影響を受けるデータ・ユニット」という用語は、概して、未処理コマンドの完了を成功させるために更新書き込みを必要とするデータ・ブロックを含むデータ・ユニットを指すものとする。「影響を受けるパリティ・ユニット」という用語は、概して、未処理コマンドの完了を成功させるために更新書き込みを必要とするパリティ・ブロックを含むパリティ・ユニットを指すものとする。
1つの実施形態において、hmdは、未処理の更新書き込み動作に関与する1つまたは複数のデータ・ブロックについての1つまたは複数のLBA、および1つまたは複数のデータ・ブロックを含む1つまたは複数の影響を受けるデータ・ユニットを識別する。別の実施形態において、hmdは、書き込み動作に関する他のホスト固有情報を記憶するために使用され得る。
1つの実施形態において、未処理の更新書き込み動作の一部でないデータについてのLBAは、記憶ユニット120上の以前のバージョンのマッピング情報内にエントリを有する必要はない。
少なくとも1つの記憶ユニット120上で以前のバージョンのマッピング情報を維持することは、記憶システム100への原子的書き込み動作を保証する。
1つの実施形態において、記憶システム100は、単一のパリティ消失訂正符号を実施する。別の実施形態において、記憶システム100は、より複雑なパリティ方程式/構成を用いて消失訂正符号を実施する。
図8は、1つまたは複数の実施形態における、記憶装置のための別の例としてのフレームワーク51を示す。フレームワーク51において、コントローラ/仮想化ユニット140および揮発性バッファ110は、代わりにホスト・システム60上で実施される。
上述したフレームワーク50と同様に、フレームワーク51は、必要とされる追加の書き込み動作の数の減少を達成するために、記憶システム100の挙動に対する修正およびホスト・システム60とのI/Oインターフェースに対する修正をサポートする。フレームワーク51は、以前のバージョンのマッピング情報の処理および管理を容易にするために、コントローラ/仮想化ユニット140および1つまたは複数の記憶ユニット120によってそれぞれI/Oユニット61および130を介して実施される1つまたは複数の新たなI/Oインターフェースを提供する。フレームワーク51は、機能の大部分が記憶装置内で実行されるホスト認識モデル、および新規機能を提供するために必要な情報がホスト・レベルにおいて利用可能かつ実行可能であるホスト管理手法の両方をサポートする。
図9は、1つまたは複数の実施形態における、記憶装置のための別の例としてのフレームワーク52を示す。フレームワーク52において、コントローラ/仮想化ユニット140および揮発性バッファ110は、代わりにコントローラ・システム80などの別の外部システム上で実施される。コントローラ・システム80は、ホスト・システム60とデータを交換するように構成される第1のI/Oユニット81と、記憶システム100とデータを交換するように構成される第2のI/Oユニット82と、をさらに含む。
上述したフレームワーク50と同様に、フレームワーク52は、必要とされる追加の書き込み動作の数の減少を達成するために、記憶システム100の挙動に対する修正およびホスト・システム60とのI/Oインターフェースに対する修正をサポートする。フレームワーク52は、以前のバージョンのマッピング情報の処理および管理を容易にするために、コントローラ/仮想化ユニット140および1つまたは複数の記憶ユニット120によってそれぞれI/Oユニット82および130を介して実施される1つまたは複数の新たなI/Oインターフェースを提供する。フレームワーク52は、機能の大部分が記憶装置内で実行されるホスト認識モデル、および新規機能を提供するために必要な情報がホスト・レベルにおいて利用可能かつ実行可能であるホスト管理手法の両方をサポートする。
図10は、1つまたは複数の実施形態における、単一のパリティ消失訂正符号を保全するためのホスト認識更新プロトコルを実施する、例としてのプロセス400を示すフローチャートである。プロセス・ブロック401は、ホスト・システム60が仮想アドレス空間に対して書き込みコマンドを発行することを含む。例えば、ホスト・システム60が、新規データ・ブロックd0’を仮想アドレス空間のLBA bへ書き込むための書き込みコマンド(例えば、write(b,d0’))を発行すると仮定する。1つの実施形態において、書き込みコマンドは、連続したLBAの範囲を参照し得る。
プロセス・ブロック402は、コントローラ/仮想化ユニット140が、書き込みコマンドの完了を成功させるために更新書き込みを必要とする各影響を受けるデータ・ユニットおよび各影響を受けるパリティ・ユニット、ならびに各影響を受けるデータ・ユニットおよび各影響を受けるパリティ・ユニットに対応する各LBAを識別することを含む。プロセス・ブロック402において、コントローラ/仮想化ユニット140は、更新書き込み動作が書き込みコマンドの完了を成功させるために必要とされることを識別する。
例えば、コントローラ/仮想化ユニット140は、影響を受けるデータ・ユニットが対応するLBA nを有するデータ・ユニット0であり、影響を受けるパリティ・ユニットが対応するLBA mを有するパリティ・ユニット3であることを識別すると仮定する。コントローラ/仮想化ユニット140は、現在のデータ・ブロックd0(即ち、現在のバージョン・コピー)を取得するために、対応するLBA nを有するデータ・ユニット0に対して読み出しコマンド(例えば、read(0,n))を発行し、現在のパリティ・ブロックp0(即ち、現在のバージョン・コピー)を取得するために、対応するLBA mを有するパリティ・ユニット3に対して別の読み出しコマンド(例えば、read(3,m))を発行する。コントローラ/仮想化ユニット140は、次いで、新規パリティ・ブロックp0’を計算し、p0’=d0+d0’+p0である。
プロセス・ブロック403は、コントローラ/仮想化ユニット140が現在のトランザクション・シーケンス番号tnをインクリメントすることを含む。トランザクション・シーケンス番号tnは、未処理の更新書き込み動作に対応する。プロセス・ブロック403は、コントローラ/仮想化ユニット140がトランザクション・レコードtrを生成することをさらに含む。トランザクション・レコードtrは、各影響を受けるデータ・ユニットのリスト、各影響を受けるデータ・ユニットに対応する各LBA、および任意選択でタイムスタンプを含む。例えば、コントローラ/仮想化ユニット140は、データ・ユニット0、LBA n、およびタイムスタンプtimeを含むトランザクション・レコードtrを生成すると仮定する(例えば、createtr(0,n,time))。
プロセス・ブロック404は、コントローラ/仮想化ユニット140が、書き込みコマンドの完了を成功させるために更新書き込みを必要とする各影響を受けるデータ・ユニットおよび各影響を受けるパリティ・ユニット上で更新書き込み動作を開始することを含む。例えば、コントローラ/仮想化ユニット140は、新規データ・ブロックd0’を書き込むために対応するLBA nを有するデータ・ユニット0(例えば、write(0,n,d0’,update,tn,tr))、および新規パリティ・ブロックp0’を書き込むために対応するLBA mを有するパリティ・ユニット3(例えば、write(3,m,p0’,update,tn,tr))のそれぞれの上で更新書き込み動作を開始すると仮定する。コントローラ/仮想化ユニット140は、各影響を受けるデータ・ユニットおよび各影響を受けるパリティ・ユニットに対して書き込みコマンドを並列で発行する。発行された各書き込みコマンドは、以下のパラメータ、書き込みコマンドが更新書き込み動作であることを示すように設定される更新書き込みフラグupdate、トランザクション・シーケンス番号tn、およびトランザクション・レコードtrを含む。
コントローラ/仮想化ユニット140が各影響を受けるデータ・ユニットおよび各影響を受けるパリティ・ユニットに対して書き込みコマンドを発行した後、コントローラ/仮想化ユニット140は、各影響を受けるデータ・ユニットおよび各影響を受けるパリティ・ユニットからの書き込み完了通知を待機するためにプロセス・ブロック405に進む。コントローラ/仮想化ユニット140が、プロセス・ブロック405において待機する間、データ・ユニット0は、プロセス・ブロック421〜425のステップを実行し、パリティ・ユニット3は、プロセス・ブロック441〜445のステップを実行する。プロセス・ブロック421〜425のステップは、プロセス・ブロック441〜445のステップと非同期である(即ち、プロセス・ブロック425および445の完了は、任意の順序で発生し得る)。
プロセス・ブロック421は、データ・ユニット0が、コントローラ/仮想化ユニット140から書き込みコマンドを受信することに応答して、LBA nに対応するデータ・ユニット0のPBAを判断すること(例えば、getPBA(n))を含む。例えば、データ・ユニット0が、その内部変換レイヤを介して、PBA jがLBA nに対応すると判断すると仮定する。プロセス・ブロック421は、データ・ユニット0が、LBA nについてのエントリvmeを取得するために(例えば、vmap_find(n))、(その内部変換レイヤ内に維持される)その以前のバージョンのマッピング情報のルックアップ検索を実行することをさらに含む。エントリvmeは、LBA nについての以前のバージョン・コピーを識別し追跡する。ルックアップ検索が成功すると、エントリvmeが返される。プロセス・ブロック421は、PBA jおよびエントリvmeの状態が、更新書き込みについて有効であるかどうかを判断すること(例えば、updw_check(j,vme))をさらに含む。PBA jの状態も、エントリvmeの状態も、更新書き込みについて有効でない場合、エラー回復プロセスが呼び出され得る。PBA jおよびエントリvmeの状態が、更新書き込みについて有効である場合、データ・ユニット0は、プロセス・ブロック422に進む。
プロセス・ブロック422は、データ・ユニット0が、新規データ・ブロックd0’を書き込むためのターゲットPBAとして使用するために、データ・ユニット0の空きPBA kを取得すること(例えば、getfreePBA())を含む。エラー回復プロセスは、データ・ユニット0が空きPBAを取得できない場合に呼び出されてもよい。プロセス・ブロック422は、データ・ユニット0が、LBA nについての新規エントリをその以前のバージョンのマッピング情報に追加すること(例えば、add_vmap(n,NULL,j,tn,tr))をさらに含む。例えば、新規エントリは、以下の割り当てられた値を有する以下のフィールド、(1)NULL値を割り当てられた現在のPBAフィールド、(2)jを割り当てられた以前のPBAフィールド、(3)tnを割り当てられたtsnフィールド、(4)trを割り当てられたhmdフィールド、および(5)クリアされた(即ち、設定されていない)gwcフィールド、を含む。新規エントリを追加することは、PBA jに記憶され、およびLBA nに関連付けられた現在のデータ・ブロックd0の両方を、消去されることまたは再使用されることから保護し、それによって、(例えば、電力損失の場合に)それをデータ回復動作に利用可能にする。データ・ブロックは書き込まれないため、新規エントリを追加することによって、小さな原子的なテーブル更新を受けるだけである。
プロセス・ブロック423は、データ・ユニット0が新規データ・ブロックd0’を空きPBA kに書き込むこと(例えば、write(k,d0’))を含む。
プロセス・ブロック424は、データ・ユニット0が、エントリの現在のPBAフィールドにkを割り当てることによって、LBA nに対応し、トランザクション・シーケンス番号tnを含むその以前のバージョンのマッピング情報内のエントリを更新すること(例えば、set_vmap_curr(n,tn,k))を含む。この更新は、新規データ・ブロックd0’がPBA kに書き込まれた後にのみ発生する、原子的なテーブル更新である。
プロセス・ブロック425は、データ・ユニット0が、コントローラ/仮想化ユニット140から受信した書き込みコマンドが完了したことを確認する書き込み完了通知を、コントローラ/仮想化ユニット140に発行することを含む。
プロセス・ブロック441は、パリティ・ユニット3が、コントローラ/仮想化ユニット140から書き込みコマンドを受信することに応答して、LBA mに対応するパリティ・ユニット3のPBAを判断すること(例えば、getPBA(m))を含む。例えば、パリティ・ユニット3が、その内部変換レイヤを介して、PBA fがLBA mに対応すると判断すると仮定する。プロセス・ブロック441は、パリティ・ユニット3が、LBA mについてのエントリvmeを取得するために、(その内部変換レイヤ内に維持される)その以前のバージョンのマッピング情報のルックアップ検索を実行すること(例えば、vmap_find(m))をさらに含む。エントリvmeは、LBA mについての以前のバージョン・コピーを識別し追跡する。ルックアップ検索が成功すると、エントリvmeが返される。プロセス・ブロック441は、PBA fおよびエントリvmeの状態が、更新書き込みについて有効であるかどうかを判断すること(例えば、updw_check(f,vme))をさらに含む。PBA fの状態も、エントリvmeの状態も、更新書き込みについて有効でない場合、エラー回復プロセスが呼び出され得る。PBA fおよびエントリvmeの状態が、更新書き込みについて有効である場合、パリティ・ユニット3は、プロセス・ブロック442に進む。
プロセス・ブロック442は、パリティ・ユニット3が、新規パリティ・ブロックp0’を書き込むためのターゲットPBAとして使用するために、パリティ・ユニット3の空きPBA gを取得すること(例えば、getfreePBA())を含む。エラー回復プロセスは、パリティ・ユニット3が空きPBAを取得できない場合に呼び出されてもよい。プロセス・ブロック442は、パリティ・ユニット3が、LBA mについての新規エントリをその以前のバージョンのマッピング情報に追加すること(例えば、add_vmap(m,NULL,f,tn,tr))をさらに含む。例えば、新規エントリは、以下の割り当てられた値を有する以下のフィールド、(1)NULL値を割り当てられた現在のPBAフィールド、(2)fを割り当てられた以前のPBAフィールド、(3)tnを割り当てられたtsnフィールド、(4)trを割り当てられたhmdフィールド、および(5)クリアされた(即ち、設定されていない)gwcフィールド、を含む。新規エントリを追加することは、PBA fに記憶され、およびLBA mに関連付けられた現在のパリティ・ブロックp0の両方を、消去されることまたは再使用されることから保護し、それによって、(例えば、電力損失の場合に)それをデータ回復動作に利用可能にする。データ・ブロックは書き込まれないため、新規エントリを追加することによって、小さな原子的なテーブル更新を受けるだけである。
プロセス・ブロック443は、パリティ・ユニット3が新規のパリティ・ブロックp0’を空きPBA gに書き込むこと(例えば、write(g,p0’))を含む。
プロセス・ブロック444は、パリティ・ユニット3が、エントリの現在のPBAフィールドにgを割り当てることによって、LBA mに対応し、トランザクション・シーケンス番号tnを含むその以前のバージョンのマッピング情報内のエントリを更新すること(例えば、set_vmap_curr(m,tn,f))を含む。この更新は、新規のパリティ・ブロックp0’がPBA gに書き込まれた後にのみ発生する、原子的なテーブル更新である。
プロセス・ブロック445は、パリティ・ユニット3が、コントローラ/仮想化ユニット140から受信した書き込みコマンドが完了したことを確認する書き込み完了通知を、コントローラ/仮想化ユニット140に発行することを含む。
プロセス・ブロック405は、コントローラ/仮想化ユニット140が、データ・ユニット0およびパリティ・ユニット3に発行された未処理の書き込みコマンドが完了したことを確認する、データ・ユニット0およびパリティ・ユニット3からの書き込み完了通知を待機することによって、バリア同期(「バリア同期」)動作を実施することを含む。1つの実施形態において、影響を受けるユニット(即ち、影響を受けるデータ・ユニットまたは影響を受けるパリティ・ユニット)に対する追加の書き込みコマンドは、コントローラ/仮想化ユニット140が影響を受けるユニットから書き込み完了通知を受信するまでブロックされる。1つの実施形態において、影響を受けるユニット上に維持される以前のバージョンのマッピング情報が、LBAについての複数の以前のバージョン・コピーを識別および追跡する場合、影響を受けるパリティ・ストライプの影響を受けるブロック(即ち、データ・ブロックおよびパリティ・ブロック)に対する追加の書き込みコマンドは、以前のバージョン・コピーの総数に対する限度に達すると、ブロックされる。
プロセス・ブロック406は、コントローラ/仮想化ユニット140が、各影響を受けるユニットから書き込み完了通知を受信することに応答して、各影響を受けるユニットに対してグローバル書き込み完了コマンドを発行することを含む。例えば、コントローラ/仮想化ユニット140が、以下の影響を受けるユニット、対応するLBA nを有するデータ・ユニット0(例えば,global_wcomp(0,n,tn))および対応するLBA mを有するパリティ・ユニット3(例えば、global_wcomp(3,m,tn))のそれぞれに対してグローバル書き込み完了コマンドを発行すると仮定する。発行された各グローバル書き込みコマンドは、トランザクション・シーケンス番号tnをパラメータとして含む。
コントローラ/仮想化ユニット140が各影響を受けるユニットに対してグローバル書き込みコマンドを発行した後、コントローラ/仮想化ユニット140は、各影響を受けるユニットからのグローバル書き込み完了通知を待機するためにプロセス・ブロック407に進む。コントローラ/仮想化ユニット140が、プロセス・ブロック407において待機する間、データ・ユニット0は、プロセス・ブロック426〜427のステップを実行し、パリティ・ユニット3は、プロセス・ブロック446〜447のステップを実行する。プロセス・ブロック426〜427のステップは、プロセス・ブロック446〜447のステップと非同期である(即ち、プロセス・ブロック427および447の完了は、任意の順序で発生し得る)。
プロセス・ブロック426は、データ・ユニット0が、コントローラ/仮想化ユニット140からグローバル書き込みコマンドを受信することに応答して、エントリのgwcフラグを設定することによって、LBA nに対応し、トランザクション・シーケンス番号tnを含むその以前のバージョンのマッピング情報内のエントリを更新すること(例えば、set_vmap_gwc(n,tn))を含む。gwcフラグを設定した後、データ・ユニット0は、プロセス・ブロック427に進む。
プロセス・ブロック427は、データ・ユニット0が、コントローラ/仮想化ユニット140から受信したグローバル書き込み完了コマンドが完了したことを確認するグローバル書き込み完了通知を、コントローラ/仮想化ユニット140に発行することを含む。
プロセス・ブロック446は、パリティ・ユニット3が、コントローラ/仮想化ユニット140からグローバル書き込みコマンドを受信することに応答して、エントリのgwcフラグを設定することによって、LBA mに対応し、トランザクション・シーケンス番号tnを含むその以前のバージョンのマッピング情報内のエントリを更新すること(例えば、set_vmap_gwc(m,tn))を含む。gwcフラグを設定した後、パリティ・ユニット3は、プロセス・ブロック447に進む。
プロセス・ブロック447は、パリティ・ユニット3が、コントローラ/仮想化ユニット140から受信したグローバル書き込み完了コマンドが完了したことを確認するグローバル書き込み完了通知を、コントローラ/仮想化ユニット140に発行することを含む。
プロセス・ブロック407は、コントローラ/仮想化ユニット140が、データ・ユニット0およびパリティ・ユニット3に発行された未処理のグローバル書き込みコマンドが完了したことを確認する、データ・ユニット0およびパリティ・ユニット3からのグローバル書き込み完了通知を待機することを含む。1つの実施形態において、コントローラ/仮想化ユニット140は、プロセス・ブロック407の間にバリア同期動作を実施する。
プロセス・ブロック408は、コントローラ/仮想化ユニット140が、各影響を受けるユニットからグローバル書き込み完了通知を受信することに応答して、ホスト・システム60に対して仮想アドレス空間のLBA bについてのホスト書き込み完了通知を発行すること(例えば、host_writecomp(b))を含む。プロセス・ブロック408は、コントローラ/仮想化ユニット140が、更新書き込み動作が堅牢にされるように、影響を受けるユニットに対応するLBAに対応し、トランザクション・シーケンス番号tnを含む、その以前のバージョン・マッピング情報内のエントリを解放するために各影響を受けるユニットに対して解放コマンドを発行することを、さらに含む。例えば、コントローラ/仮想化ユニット140が、以下の影響を受けるユニット、対応するLBA nを有するデータ・ユニット0(例えば、free_vmap(0,n,tn))および対応するLBA mを有するパリティ・ユニット3(例えば、free_vmap(3,m,tn))のそれぞれに対して解放コマンドを発行すると仮定する。発行された各解放コマンドは、トランザクション・シーケンス番号tnをパラメータとして含む。
コントローラ/仮想化ユニット140が各影響を受けるユニットに対して解放コマンドを発行した後、コントローラ/仮想化ユニット140は、各影響を受けるユニットからの解放完了通知を待機するためにプロセス・ブロック409に進む。コントローラ/仮想化ユニット140が、プロセス・ブロック409において待機する間、データ・ユニット0は、プロセス・ブロック428〜429のステップを実行し、パリティ・ユニット3は、プロセス・ブロック448〜449のステップを実行する。プロセス・ブロック428〜429のステップは、プロセス・ブロック448〜449のステップと非同期である(即ち、プロセス・ブロック429および449の完了は、任意の順序で発生し得る)。
プロセス・ブロック428は、データ・ユニット0が、コントローラ/仮想化ユニット140から解放コマンドを受信することに応答して、LBA nに対応し、トランザクション・シーケンス番号tnを含むその以前のバージョンのマッピング情報内のエントリを除去すること(例えば、rem_vmap(n,tn))を含む。
プロセス・ブロック449は、データ・ユニット0が、コントローラ/仮想化ユニット140から受信した解放コマンドが完了したことを確認する解放完了通知を、コントローラ/仮想化ユニット140に発行することを含む。
プロセス・ブロック448は、パリティ・ユニット3が、コントローラ/仮想化ユニット140から解放コマンドを受信することに応答して、LBA mに対応し、トランザクション・シーケンス番号tnを含むその以前のバージョンのマッピング情報内のエントリを除去すること(例えば、rem_vmap(m,tn))を含む。
プロセス・ブロック449は、パリティ・ユニット3が、コントローラ/仮想化ユニット140から受信した解放コマンドが完了したことを確認する解放完了通知を、コントローラ/仮想化ユニット140に発行することを含む。
プロセス・ブロック409は、コントローラ/仮想化ユニット140が、データ・ユニット0およびパリティ・ユニット3に発行された未処理の解放コマンドが完了したことを確認する、データ・ユニット0およびパリティ・ユニット3からの解放完了通知を待機することを含む。1つの実施形態において、コントローラ/仮想化ユニット140は、プロセス・ブロック409の間にバリア同期動作を実施する。
プロセス・ブロック410は、プロセス400の終了である。
ホスト認識更新書き込みプロトコルは、記憶システム100がより複雑なパリティ方程式/構成で消失訂正符号を実施する場合に、上述したプロセス400に類似のやり方で実施される。
以下の表2は、プロセス400のいくつかのプロセス・ブロックの間のLBA nに対応するデータ・ユニット0上における以前のバージョンのマッピング情報内のエントリを提供する。
Figure 2021522577
表3は、プロセス400のいくつかのプロセス・ブロックの間のLBA mに対応するパリティ・ユニット3上における以前のバージョンのマッピング情報内のエントリを提供する。
Figure 2021522577
上で提供された表2〜3に示されるように、データ・ユニット0によって実行されるステップの順序は、パリティ・ユニット3によって実行されるステップの順序と、プロセス・ブロック405におけるバリア同期動作を介して同期されるだけである。この特定の時点を除いて、データ・ユニット0の状態は、他の時点におけるパリティ・ユニット3の状態に任意に関連する。
表2に示されるように、プロセス・ブロック421および428の間のデータ・ユニット0上の以前のバージョンのマッピング情報は、LBA nについてのエントリを含まない。表3に示されるように、プロセス・ブロック441および448の間のパリティ・ユニット3上の以前のバージョンのマッピング情報は、LBA mについてのエントリを含まない。
以下の表4は、1つまたは複数の実施形態における、影響を受けるユニットの異なる起こり得る状態のリストを提供する。
Figure 2021522577
以下の表5は、1つまたは複数の実施形態における、プロセス400のいくつかのプロセス・ブロックの間のデータ・ユニット0およびパリティ・ユニット3の状態を示す状態情報を提供する。
Figure 2021522577
上記で提供された表5に示されるように、データ・ユニット0およびパリティ・ユニット3がそれぞれプロセス・ブロック424および441のステップを実行しているとき、記憶システム100の全体の状態(即ち、データ・ユニット0およびパリティ・ユニット3の状態)は、503である(即ち、元の書き込み動作の完了が可能である(やり直し))。
電力損失事象からの回復時に、記憶システム100は、各LBAの状態を判断する必要がある。1つの実施形態において、電力損失事象後に記憶システム100を復元するために、各影響を受けるユニットに対応する各LBAの状態が、表2〜3に含まれる以前のバージョンのマッピング情報および表5に含まれる状態情報などの、状態情報および以前のバージョンのマッピング情報に基づいて判断され得る。例えば、データ・ユニット0上の以前のバージョンのマッピング情報が、LBA nについてのエントリを含まず、かつパリティ・ユニット3上の以前のバージョンのマッピング情報が、LBA mについてのエントリを含まない(即ち、データ・ユニット0がプロセス・ブロック421または428のいずれかのステップを実行しており、パリティ・ユニット3がプロセス・ブロック441または448のいずれかのステップを実行している)場合、記憶システム100全体の状態(即ち、データ・ユニット0の状態およびパリティ・ユニット3の状態)は、501である(即ち、保留/未処理の書き込み動作はない)。
記憶システム100全体の状態(即ち、データ・ユニット0の状態およびパリティ・ユニット3の状態)が502である(即ち、取り消しが可能である)場合、データ・ユニット0上の以前のバージョンのマッピング情報およびパリティ・ユニット3上の以前のバージョンのマッピング情報は、以前のバージョン・コピーを含むが、現在のバージョン・コピーを含まない。この状態において、書き込み動作は、LBAについての以前のバージョン・コピーをLBAについての現在のバージョン・コピーに復元することによって、一貫したパリティ・ストライプが存在する状態に取り消しされ得る。1つの実施形態において、LBAについての以前のバージョン・コピーは、LBAに対応するエントリを以前のバージョンのマッピング情報から除去することによって、復元され得る。ホスト・システム60が、書き込みコマンドの発行後にホスト書き込み完了通知をコントローラ/仮想化ユニット140から受信しない場合、ホスト・システム60は、書き込みコマンドを再試行してもよい。
記憶システム100全体の状態(即ち、データ・ユニット0の状態およびパリティ・ユニット3の状態)が503である(即ち、元の書き込み動作の完了が可能である)場合、データ・ユニット0上の以前のバージョンのマッピング情報およびパリティ・ユニット3上の以前のバージョンのマッピング情報が、LBAについての以前のバージョン・コピーおよびLBAについての現在のバージョン・コピーの両方を含む。この状態において、書き込みコマンドは、新規パリティ・ブロックを再計算することによって、完了され得る。
記憶システム100全体の状態(即ち、データ・ユニット0の状態およびパリティ・ユニット3の状態)が、504である(即ち、クリーンアップが必要である)場合、記憶システム100は、一貫したパリティ・ストライプを含み、それによって、記憶システム100によって実施される消失訂正符号を保全する。この状態において、以前のバージョンのマッピング情報から関連するエントリを除去するために、クリーンアップのみが必要とされる。各影響を受けるユニットは、記憶システム100にグローバル書き込み完了通知を返し得る。
記憶システム100全体の状態(即ち、データ・ユニット0の状態およびパリティ・ユニット3の状態)が505である(即ち、クリーンアップが1つまたは複数の他の影響を受けるユニット上で必要とされ得る)場合、全てではなくいくつかの、影響を受けるユニットが、クリーンアップを完了している。クリーンアップは、保留中の解放コマンドを用いて各影響を受けるユニット上で必要とされる。
1つの実施形態において、各フレームワーク50、51、および52は、以前のバージョンのマッピング情報の処理および管理を容易にするために1つまたは複数の新規I/Oインターフェースを提供する。例えば、1つまたは複数の新規I/Oインターフェースが、図3に示されるホスト認識更新書き込みプロトコルを実施し管理するためのコマンドのセットを含み得る。以下の表6および表7は、1つまたは複数の実施形態における、コマンドのセットの例としての実施を提供する。
Figure 2021522577
Figure 2021522577
例えば、フレームワーク50において、コマンドのセットは、コントローラ/仮想化ユニット140および1つまたは複数の記憶ユニット120によって実施される。別の例として、フレームワーク51において、コマンドのセットは、コントローラ/仮想化ユニット140および1つまたは複数の記憶ユニット120によって、それぞれI/Oユニット61および130を介して実施される。さらに別の例として、フレームワーク52において、コマンドのセットは、コントローラ/仮想化ユニット140および1つまたは複数の記憶ユニット120によって、それぞれI/Oユニット82および130を介して実施される。
各フレームワーク50、51、および52は、更新書き込み動作が、ファイル・システム、データベースなどを含む異種記憶ユニットにわたって原子的である必要がある任意の状況に適用可能である。
図11は、発明の一実施形態を実施するのに有用な情報処理システム300を示すハイレベル・ブロック図である。コンピュータ・システムは、プロセッサ302などの1つまたは複数のプロセッサを含む。プロセッサ302は、通信インフラ304(例えば、通信バス、クロスオーバ・バー、またはネットワーク)に接続される。
コンピュータ・システムは、ディスプレイ・ユニット308上での表示用にグラフィック、文字、および他のデータを通信インフラ304から(または図示されないフレーム・バッファから)転送するディスプレイ・インターフェース306を含み得る。コンピュータ・システムは、また、メイン・メモリ310、好適にはランダム・アクセス・メモリ(RAM)を含み、セカンダリ・メモリ312も含み得る。セカンダリ・メモリ312は、例えば、ハード・ディスク・ドライブ314、または例えば、フロッピー・ディスク・ドライブ、磁気テープ・ドライブ、もしくは光ディスク・ドライブを表すリムーバブル記憶ドライブ316、あるいはその両方を含み得る。リムーバブル記憶ドライブ316は、当業者に周知のやり方でリムーバブル記憶ユニット318から読み出しまたは書き込みあるいはその両方を行う。リムーバブル記憶ユニット318は、例えば、フロッピー(R)・ディスク、コンパクト・ディスク、磁気テープ、または光ディスクなどを表し、それは、リムーバブル記憶ドライブ316によって読み出され、書き込まれる。当然のことながら、リムーバブル記憶ユニット318は、その中にコンピュータ・ソフトウェアまたはデータあるいはその両方が記憶されているコンピュータ可読媒体を含む。
代替的実施形態において、セカンダリ・メモリ312は、コンピュータ・プログラムまたは他の命令がコンピュータ・システム内にロードされることを可能にする、他の類似の手段を含み得る。そのような手段は、例えば、リムーバブル記憶ユニット320およびインターフェース322を含み得る。そのような手段の例は、プログラム・パッケージおよびパッケージ・インターフェース(ビデオ・ゲーム・デバイスに見出されるような)、リムーバブル・メモリ・チップ(EPROMまたはPROMなど)および関連するソケット、ならびに他のリムーバブル記憶ユニット320およびインターフェース322を含んでもよく、それは、ソフトウェアおよびデータがリムーバブル記憶ユニット320からコンピュータ・システムに移送されることを可能にする。
コンピュータ・システムは、また、通信インターフェース324を含み得る。通信インターフェース324は、ソフトウェアおよびデータがコンピュータ・システムと外部デバイスとの間で移送されることを可能にする。通信インターフェース324の例は、モデム、ネットワーク・インターフェース(イーサネット(R)・カードなど)、通信ポート、またはPCMCIAスロットおよびカードなどを含み得る。通信インターフェース324を介して移送されるソフトウェアおよびデータは、例えば、電子、電磁気、光学、または通信インターフェース324によって受信可能な他の信号であり得る信号の形態である。これらの信号は、通信パス(即ち、チャネル)326を介して通信インターフェース324に提供される。この通信パス326は、信号を搬送し、ワイヤもしくはケーブル、光ファイバ、電話回線、セルラ電話リンク、RFリンク、または他の通信チャネル、あるいはそれらの組み合わせを用いて実施され得る。
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組み合わせであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または複数の媒体)を含んでもよい。コンピュータ可読記憶媒体は、命令実行デバイスにより使用するための命令を保持し、記憶し得る有形デバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または前述したものの任意の適当な組み合わせであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたはその上に記録された命令を有する溝内の隆起構造などの機械的に符号化されたデバイス、および前述したものの任意の適当な組み合わせを含む。本明細書で用いられるコンピュータ可読記憶媒体は、本来、電波もしくは他の自由伝播する電磁波、導波管もしくは他の送信媒体を通って伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または電線を通って送信される電気信号などの、一過性信号であると解釈されるべきではない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはそれらの組み合わせを介して外部コンピュータまたは外部ストレージ・デバイスに、ダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組み合わせを含み得る。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体の記憶用にコンピュータ可読プログラム命令を転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つもしくは複数のプログラミング言語の任意の組み合わせで書かれたソース・コードもしくはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアロン・ソフトウェア・パッケージとして、ユーザのコンピュータ上で部分的にかつリモート・コンピュータ上で部分的に、またはリモート・コンピュータもしくはサーバ上で完全に、実行してもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意の種類のネットワークを通して、ユーザのコンピュータに接続されてもよい。あるいは、接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを通して)外部コンピュータに対して行われてもよい。いくつかの実施形態では、例えば、プログラマブル・ロジック回路、フィールドプログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することによって、コンピュータ可読プログラム命令を実行し得る。
本発明の態様は、発明の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、本明細書において説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組み合わせが、コンピュータ可読プログラム命令によって実施され得ると理解されたい。
コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施する手段を作成するように、これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または機械を製造するための他のプログラマブル・データ処理装置のプロセッサに提供されてもよい。コンピュータ可読記憶媒体に記憶される命令を有するコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作の態様を実施する命令を含む製品を含むように、これらのコンピュータ可読プログラム命令は、また、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはそれらの組み合わせに特定のやり方で機能するように指示し得る、コンピュータ可読記憶媒体に記憶されてもよい。
コンピュータ、他のプログラマブル装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施するように、コンピュータ可読プログラム命令は、また、コンピュータ実施されたプロセスを作り出すために、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるコンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされてもよい。
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施のアーキテクチャ、機能性、および動作を例示する。この点に関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部を表し得る。いくつかの代替的な実施において、ブロック内に記載された機能は、図面中に記載された順序以外で発生してもよい。例えば、連続して示される2つのブロックが、実際には、実質的に同時に実行されてもよく、または、ブロックが、関係する機能性次第で逆の順序で実行されることがあってもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組み合わせが、指定された機能もしくは動作を実行し、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用ハードウェアベース・システムによって実施され得ることにも留意されたい。
上記説明から、本発明は、発明の実施形態を実施するシステム、コンピュータ・プログラム製品、および方法を提供することが分かる。本発明は、発明の実施形態を実施する非一過性コンピュータ使用可能記憶媒体をさらに提供する。非一過性コンピュータ使用可能記憶媒体は、コンピュータ可読プログラムを有し、プログラムは、コンピュータ上で処理されると、本明細書に説明される実施形態に従って本発明のステップをコンピュータに実施させる。特許請求の範囲における単数形の要素への参照は、明示的にそのように述べられない限り、「ただ1つ」ではなく「1つまたは複数」を意味することを意図するものである。当業者に現在知られている、または後で知られることとなる上述の例示的実施形態の要素の全ての構造的および機能的均等物が、本特許請求の範囲によって包含されることを意図するものである。要素が、「means for」または「step for」という語句を用いて明示的に列挙されない限り、本明細書におけるいかなる請求項の要素も、米国特許法第112条第6項の規定により解釈されるべきでない。
本明細書で使用される専門用語は、特定の実施形態のみを説明するためのものであり、発明を限定することを意図するものではない。本明細書で使用される、単数形「a」、「an」、および「the」は、文脈が特段明示していない限り、複数形も同様に含むことを意図するものである。「comprises(備える)」または「comprising(備えている)」という用語、あるいはその両方は、本明細書で使用されるとき、述べられた特徴、整数、ステップ、動作、要素、またはコンポーネント、あるいはそれらの組み合わせの存在を示しているが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、またはそれらの集合、あるいはそれらの組み合わせの存在または追加を排除するものではないと、さらに理解されるものとする。
下記の特許請求の範囲における全てのミーンズ・プラス・ファンクション要素またはステップ・プラス・ファンクション要素の対応する構造、物質、動作、および均等物は、他の特許請求された要素と組み合わせて機能を実行するための任意の構造、物質、または動作を具体的に請求されるように含むことを意図するものである。本発明の説明は、例示および説明の目的で提示されているが、網羅的であるように、または開示された形態に発明を限定されることを意図するものではない。発明の範囲および思想から逸脱することなく、多くの修正および変形が当業者には明らかであろう。実施形態は、発明の原理および実際の適用を最もよく説明するため、ならびに考えられる特定の用途に適する多様な修正を伴う多様な実施形態についての発明を他の当業者が理解できるようにするために、選択され説明された。

Claims (20)

  1. 方法であって、
    記憶ユニット上で、ホストによって見られる論理アドレスの第1のセットと、前記記憶ユニットの物理アドレスの第1のセットおよび物理アドレスの第2のセットとの間のマッピング・データを維持することであって、前記論理アドレスの第1のセットの第1の論理アドレスが、前記第1の論理アドレスについての現在のデータを維持する前記物理アドレスの第1のセットの第1の物理アドレスに対応し、前記第1の論理アドレスが、前記第1の論理アドレスについての以前のデータを維持する前記物理アドレスの第2のセットの第2の物理アドレスにさらに対応する、前記維持することと、
    前記記憶ユニットにおいて、前記第1の論理アドレスに関係するマルチデバイス動作を実行するために前記ホストからコマンドを受信することであって、前記動作が原子的に実行される、前記受信することと、
    を含む、方法。
  2. 前記動作が、更新書き込み動作である、請求項1に記載の方法。
  3. 前記マッピング・データが、前記第1の論理アドレスについての1つまたは複数の以前のバージョン・コピーを識別および追跡し、前記マッピング・データが、前記第1の論理アドレスについての以前のバージョン・コピー毎に、前記以前のバージョン・コピーを維持する対応物理アドレスを含む、請求項2に記載の方法。
  4. 前記マッピング・データが、前記更新書き込み動作についてのトランザクション・シーケンス番号を含む、請求項2に記載の方法。
  5. 前記マッピング・データが、前記更新書き込み動作に関与する各記憶ユニットを示すホスト定義メタデータを含む、請求項2に記載の方法。
  6. マルチデバイス原子性を示す通知である、前記記憶ユニット上の更新書き込みが完了していることを確認する通知、グローバル書き込み完了フラグが設定されていることを確認する通知、および前記第1の論理アドレスに対応し、前記トランザクション・シーケンス番号を含む前記マッピング・データ内のエントリが前記マッピング・データから除去されることを確認する通知を、前記ホストが前記記憶ユニットから受信することに応答して、前記動作が完了する、請求項4に記載の方法。
  7. 前記現在のデータが、現在のデータ・ブロックを含み、前記以前のデータが、以前のデータ・ブロックを含む、請求項1に記載の方法。
  8. 前記現在のデータが、現在のパリティ・ブロックを含み、前記以前のデータが、以前のパリティ・ブロックを含む、請求項1に記載の方法。
  9. システムであって、
    少なくとも1つのプロセッサと、
    前記少なくとも1つのプロセッサによる実行時に、
    記憶ユニット上で、ホストによって見られる論理アドレスの第1のセットと、前記記憶ユニットの物理アドレスの第1のセットおよび物理アドレスの第2のセットとの間のマッピング・データを維持することであって、前記論理アドレスの第1のセットの第1の論理アドレスが、前記第1の論理アドレスについての現在のデータを維持する前記物理アドレスの第1のセットの第1の物理アドレスに対応し、前記第1の論理アドレスが、前記第1の論理アドレスについての以前のデータを維持する前記物理アドレスの第2のセットの第2の物理アドレスにさらに対応する、前記維持することと、
    前記記憶ユニットにおいて、前記第1の論理アドレスに関係するマルチデバイス動作を実行するために前記ホストからコマンドを受信することであって、前記動作が原子的に実行される、前記受信することと、
    を含む動作を前記少なくとも1つのプロセッサに実行させる命令を記憶する、非一過性プロセッサ可読メモリ・デバイスと、
    を備える、システム。
  10. 前記動作が、更新書き込み動作である、請求項9に記載のシステム。
  11. 前記マッピング・データが、前記第1の論理アドレスについての1つまたは複数の以前のバージョン・コピーを識別および追跡し、前記マッピング・データが、前記第1の論理アドレスについての以前のバージョン・コピー毎に、前記以前のバージョン・コピーを維持する対応物理アドレスを含む、請求項10に記載のシステム。
  12. 前記マッピング・データが、前記更新書き込み動作についてのトランザクション・シーケンス番号を含む、請求項10に記載のシステム。
  13. 前記マッピング・データが、前記更新書き込み動作に関与する各記憶ユニットを示すホスト定義メタデータを含む、請求項10に記載のシステム。
  14. マルチデバイス原子性を示す通知である、前記記憶ユニット上の更新書き込みが完了していることを確認する通知、グローバル書き込み完了フラグが設定されていることを確認する通知、および前記第1の論理アドレスに対応し、前記トランザクション・シーケンス番号を含む前記マッピング・データ内のエントリが前記マッピング・データから除去されることを確認する通知を、前記ホストが前記記憶ユニットから受信することに応答して、前記動作が完了する、請求項12に記載のシステム。
  15. 前記現在のデータが、現在のデータ・ブロックを含み、前記以前のデータが、以前のデータ・ブロックを含む、請求項9に記載のシステム。
  16. 前記現在のデータが、現在のパリティ・ブロックを含み、前記以前のデータが、以前のパリティ・ブロックを含む、請求項9に記載のシステム。
  17. 具現化されたプログラム・コードを有するコンピュータ可読ハードウェア記憶媒体を含むコンピュータ・プログラム製品であって、前記プログラム・コードが、
    記憶ユニット上で、ホストによって見られる論理アドレスの第1のセットと、前記記憶ユニットの物理アドレスの第1のセットおよび物理アドレスの第2のセットとの間のマッピング・データを維持することであって、前記論理アドレスの第1のセットの第1の論理アドレスが、前記第1の論理アドレスについての現在のデータを維持する前記物理アドレスの第1のセットの第1の物理アドレスに対応し、前記第1の論理アドレスが、前記第1の論理アドレスについての以前のデータを維持する前記物理アドレスの第2のセットの第2の物理アドレスにさらに対応する、前記維持することと、
    前記記憶ユニットにおいて、前記第1の論理アドレスに関係するマルチデバイス動作を実行するために前記ホストからコマンドを受信することであって、前記動作が原子的に実行される、前記受信することと、
    を含む方法を実施するようにコンピュータによって実行可能である、コンピュータ・プログラム製品。
  18. 前記動作が、更新書き込み動作である、請求項17に記載のコンピュータ・プログラム製品。
  19. 前記マッピング・データが、前記第1の論理アドレスについての1つまたは複数の以前のバージョン・コピーを識別および追跡し、前記マッピング・データが、前記第1の論理アドレスについての以前のバージョン・コピー毎に、前記以前のバージョン・コピーを維持する対応物理アドレスを含む、請求項18に記載のコンピュータ・プログラム製品。
  20. 前記マッピング・データが、前記更新書き込み動作についてのトランザクション・シーケンス番号を含む、請求項18に記載のコンピュータ・プログラム製品。
JP2020558595A 2018-05-09 2019-04-25 ホスト認識更新書き込みの方法、システム、およびコンピュータ・プログラム Active JP7189965B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/975,584 2018-05-09
US15/975,584 US11099980B2 (en) 2018-05-09 2018-05-09 Host aware update write
PCT/IB2019/053419 WO2019215532A1 (en) 2018-05-09 2019-04-25 Host aware update write

Publications (2)

Publication Number Publication Date
JP2021522577A true JP2021522577A (ja) 2021-08-30
JP7189965B2 JP7189965B2 (ja) 2022-12-14

Family

ID=68464720

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020558595A Active JP7189965B2 (ja) 2018-05-09 2019-04-25 ホスト認識更新書き込みの方法、システム、およびコンピュータ・プログラム

Country Status (6)

Country Link
US (1) US11099980B2 (ja)
JP (1) JP7189965B2 (ja)
CN (1) CN112088366B (ja)
DE (1) DE112019000849T5 (ja)
GB (1) GB2586430B (ja)
WO (1) WO2019215532A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200099882A (ko) * 2019-02-15 2020-08-25 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
CN111371888B (zh) * 2020-03-02 2021-07-09 西南交通大学 一种基于纠删编码的多源数据传输系统及方法
US11360888B1 (en) * 2021-02-16 2022-06-14 Micron Technology, Inc. Host system notification based on entry miss
CN114968088B (zh) * 2022-04-08 2023-09-05 中移互联网有限公司 文件存储方法、文件读取方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016052665A1 (ja) * 2014-09-30 2016-04-07 株式会社日立製作所 分散型ストレージシステム
US20170024324A1 (en) * 2015-07-22 2017-01-26 Tsinghua University Method for distributed transaction processing in flash memory
US20170123995A1 (en) * 2015-11-03 2017-05-04 Intel Corporation Efficient redundant array of independent disks (raid) write hole solutions

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1345113A3 (en) 2002-03-13 2008-02-06 Hitachi, Ltd. Management server
US7487308B1 (en) * 2003-11-28 2009-02-03 Symantec Operating Corporation Identification for reservation of replacement storage devices for a logical volume to satisfy its intent
US7426625B2 (en) 2004-03-31 2008-09-16 International Business Machines Corporation Data processing system and computer program product for support of system memory addresses with holes
KR101473344B1 (ko) 2007-08-24 2014-12-17 삼성전자 주식회사 플래시 메모리를 스토리지로 사용하는 장치 및 그 동작방법
CN101826053B (zh) * 2009-03-03 2012-05-30 慧国(上海)软件科技有限公司 闪存的存取方法及闪存装置
CN101976182A (zh) 2010-11-15 2011-02-16 记忆科技(深圳)有限公司 一种固态硬盘预读取的方法及其装置
US9164888B2 (en) * 2012-12-10 2015-10-20 Google Inc. Using a logical to physical map for direct user space communication with a data storage device
GB2527529B (en) 2014-06-24 2021-07-14 Advanced Risc Mach Ltd A device controller and method for performing a plurality of write transactions atomically within a non-volatile data storage device
US9671971B2 (en) 2015-03-27 2017-06-06 Intel Corporation Managing prior versions of data for logical addresses in a storage device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016052665A1 (ja) * 2014-09-30 2016-04-07 株式会社日立製作所 分散型ストレージシステム
US20170024324A1 (en) * 2015-07-22 2017-01-26 Tsinghua University Method for distributed transaction processing in flash memory
US20170123995A1 (en) * 2015-11-03 2017-05-04 Intel Corporation Efficient redundant array of independent disks (raid) write hole solutions

Also Published As

Publication number Publication date
WO2019215532A1 (en) 2019-11-14
GB202019203D0 (en) 2021-01-20
GB2586430A (en) 2021-02-17
CN112088366B (zh) 2024-09-03
GB2586430B (en) 2021-08-04
CN112088366A (zh) 2020-12-15
JP7189965B2 (ja) 2022-12-14
DE112019000849T5 (de) 2020-11-05
US20190347191A1 (en) 2019-11-14
US11099980B2 (en) 2021-08-24

Similar Documents

Publication Publication Date Title
US11768820B2 (en) Elimination of log file synchronization delay at transaction commit time
JP2021522577A (ja) ホスト認識更新書き込みの方法、システム、およびコンピュータ・プログラム
CN101996233B (zh) 用于对经重复删除的数据进行复制的方法和系统
US9569518B2 (en) Efficiently storing and retrieving data and metadata
US8689047B2 (en) Virtual disk replication using log files
US8468128B2 (en) Synchronization of sequential access storage components with backup catalog
US10860447B2 (en) Database cluster architecture based on dual port solid state disk
US10157000B2 (en) Data operation method and device
CN108415986B (zh) 一种数据处理方法、装置、系统、介质和计算设备
US20200133809A1 (en) Method, device and program product for managing data of storage device
JP2016513306A (ja) データ格納方法、データストレージ装置、及びストレージデバイス
US10795579B2 (en) Methods, apparatuses, system and computer program products for reclaiming storage units
CN109918352B (zh) 存储器系统和存储数据的方法
KR20150126667A (ko) 저장된 데이터 유닛들의 동작 관리
US11334444B2 (en) Method, device and computer program product for managing a storage system
US11119705B2 (en) Method, device, and computer readable storage medium for managing redundant array of independent disks
US10620872B2 (en) Replicating data in a data storage system
US20130031320A1 (en) Control device, control method and storage apparatus
JP2017208113A (ja) データ格納方法、データストレージ装置、及びストレージデバイス
US20230393948A1 (en) Storage system and method of restoring storage system
CN113806316B (zh) 一种文件同步方法、设备及存储介质
US20210397369A1 (en) System and Method for Near-Instant Unmapping and Write-Same in a Log-Structured Storage Cluster
US20210342218A1 (en) System and method for persistent atomic objects with sub-block granularity
CN115202561A (zh) 用于管理存储系统的方法、设备和计算机程序产品

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210413

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210830

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220502

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220920

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221108

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221202

R150 Certificate of patent or registration of utility model

Ref document number: 7189965

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150