JP2017120626A - 二重書込みを遂行するストレージ装置を含むシステム、装置、及びその方法 - Google Patents

二重書込みを遂行するストレージ装置を含むシステム、装置、及びその方法 Download PDF

Info

Publication number
JP2017120626A
JP2017120626A JP2016240058A JP2016240058A JP2017120626A JP 2017120626 A JP2017120626 A JP 2017120626A JP 2016240058 A JP2016240058 A JP 2016240058A JP 2016240058 A JP2016240058 A JP 2016240058A JP 2017120626 A JP2017120626 A JP 2017120626A
Authority
JP
Japan
Prior art keywords
data
write request
storage device
application
journal
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
JP2016240058A
Other languages
English (en)
Other versions
JP6734768B2 (ja
JP2017120626A5 (ja
Inventor
ヒュオゥ,ジアンジアン
Jianjian Huo
チェ,チャンホゥ
Changho Choi
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2017120626A publication Critical patent/JP2017120626A/ja
Publication of JP2017120626A5 publication Critical patent/JP2017120626A5/ja
Application granted granted Critical
Publication of JP6734768B2 publication Critical patent/JP6734768B2/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/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/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
    • 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/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • 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/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/1016Performance 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/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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
    • G06F2212/1036Life time enhancement
    • 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/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

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)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】SSD内のフラッシュメモリの断片化を回避、乃至最少化した二重書込みを遂行するストレージ装置を含むシステムを提供する。
【解決手段】コンピュータ、ストレージ装置、アプリケーション、そしてコントローラを含む。コンピュータはプロセッサ及びメモリを含む。アプリケーションはプロセッサ上で実行され、ジャーナル書込み要請及びデータ書込み要請の両方をストレージ装置に伝送するように動作する。コントローラはストレージ装置上に位置し、ストレージ装置が第1ストリームと関連された第1ブロックにジャーナル情報を書き込み第2ストリームと関連された第2ブロックにデータを書き込むように指示する。ジャーナル書込み要請はジャーナル情報を含み、第1ストリームと関連される。データ書込み要請はデータを含み、第2ストリームと関連される。
【選択図】図1

Description

本発明はストレージ(格納)装置(device)を含むシステムに関し、さらに具体的には、二重書込みを遂行するストレージ装置を含むシステム、装置(article)、及びその方法に関する。
NANDフラッシュメモリベースのSSD(Solid−State Drive)は、全ての種類のストレージ(格納)装置を含むシステムの速度を向上させるために事業用(enterprise)サーバとデータセンタ内で広く使用されて来た。SSD内のフラッシュメモリは独特の特性を有する。従って、従来の磁気ディスク(magnetic disk)をSSDにより直接置換してもSSDに最大能力を発揮させて活用することにならない。
その重要な理由の1つは、SSDがフリー(free)フラッシュメモリブロックのみに書き込むことができ、再使用するためには、ガーベッジコレクション(garbage collection)を遂行して無効とされたフラッシュメモリブロックを回復する、という点である。従来のOS(オペレーティングシステム)及びアプリケーションがホット(hot)データとコールド(cold)データとを区別しないので、相異なる寿命(lifespan)を有するデータが通常、混合されている場合、フラッシュメモリを管理し、リクレイム(reclaim、再利用)するためのガーベッジコレクションの遂行をさらに難しくする。これはSSDの性能及び寿命の全てに影響を及ぼす。
最近の多くのデータストレージシステムは、データ耐久性及び性能のためにジャーナリング(journaling)を使用する。データストレージシステムはオブジェクト(object)ストレージシステム(例、Ceph等)、ブロックストレージシステム(例、キャッシュ及び他のキャッシングシステム等)、そしてファイルストレージシステム(例、IBM JFS/JFS2、Linux(登録商標)_xfs、及びLinux(登録商標)_ext4等)を含む。このようなシステムは2つのデータコピーを格納する。1つのコピーはジャーナルセクション(journal section)に格納され、他の1つのコピーはデータセクションに格納される。
このようなシステムが純粋なSSD環境内に展開される場合、性能及び費用上の理由から、システムは一般的にジャーナルと実際データを同一のSSD上に格納する。データが書き込まれるために受信されると、データストレージシステムは先ず1つのデータコピーをディスクにフラッシュ(flush、一斉書き込み)されるジャーナルに格納し、2番目のデータコピーをメモリのファイルシステムページキャッシュ内に格納する。そうすると、データストレージシステムはユーザアプリケーションにサクセス(後継動作、success)を返却(return)する。続いて後ほど、バックグラウンド(background)内で、データストレージシステムは、ファイルシステムページキャッシュ内のデータ記録をディスクにフラッシュ(flush、一斉書き込み)し、ディスク上のジャーナル内の同一のデータ記録を除去する。このような過程はデータ書き込みの各々に対して反複され、またジャーナルがメタデータのみに対して使用される場合にも生起される。
このような二重書込み(double−write)方式(approach)は、SSDと共に使用される場合、全てのSSDブロック内のフラッシュメモリの内部の断片化(fragmentation)という問題を惹起する。このような内部断片化問題はガーベッジコレクションの増大を引き起こして、ストレージシステムの性能を低下し、読出し/書込みレイテンシ(latency、待ち時間)を増加し、SSDの寿命を短縮する。
そこで、SSD内のフラッシュメモリの断片化を回避できるか、或いは少なくとも最少化できるような、SSDに関する二重書込みアプローチの利用方法が要求される。
米国特許第7,610,442号公報 米国特許第8、738、882号公報 米国特許第8、793,531号公報 米国特許公開第2014/0297918号明細書 国際特許公開第WO2015/126518号明細書
従って本発明の目的は、SSD内のフラッシュメモリの断片化を回避、乃至最少化した二重書込みを遂行するストレージ装置を含むシステム、装置及びその方法を提供することにある。
本発明の実施形態によるストレージ装置を含むシステムは、コンピュータ、ストレージ装置、アプリケーション、そしてコントローラを含む。コンピュータはプロセッサ及びメモリを含む。アプリケーションはプロセッサ上で実行され、ジャーナル(journal)書込み要請及びデータ書込み要請の両方をストレージ装置に伝送するように動作する。コントローラはストレージ装置上に位置し、ストレージ装置が第1ストリーム(stream)と関連された第1ブロック(block)にジャーナル情報を書き込み、第2ストリームと関連された第2ブロックにデータを書き込むように指示する。ジャーナル書込み要請はジャーナル情報を含み、第1ストリームと関連される。データ書込み要請はデータを含み、第2ストリームと関連される。
本発明の他の実施形態による二重書込み方法は、ジャーナル書込み及びデータ書込みの両方を実行するアプリケーションから書き込まれるデータを識別する段階、アプリケーションから無効データに対するガーベッジコレクション(garbage collection)を遂行するストレージ装置に、ジャーナル書込み要請を伝送する段階、そしてアプリケーションからストレージ装置にデータ書込み要請を伝送する段階を含む。ジャーナル書込み要請は第1ストリームに割当てられ、データ書込み要請は第2ストリームに割当てられる。
本発明の他の実施形態による非一時的な(Non−Transitory)命令を格納した有形(tangible)のストレージ媒体(tangible storage medium)を含む装置(article)において、非一時的な命令がマシンによって実行される時、ジャーナル書込み及びデータ書込みの両方を実行するアプリケーションから書き込まれるデータを識別する段階、無効データに対するガーベッジコレクションを遂行するストレージ装置にアプリケーションからジャーナル書込み要請を伝送する段階、そしてアプリケーションからストレージ装置にデータ書込み要請を伝送する段階を遂行する。ジャーナル書込み要請は第1ストリームに割当てられ、データ書込み要請は第2ストリームに割当てられる。
本発明の実施形態によれば、ストレージ装置内の断片化されたブロックの誘発を防止しながら、二重書込み動作が可能である。これに、ストレージ装置の動作効率が増加する。
これに、ストレージ装置の動作効率が増加する。
本発明の実施形態によるジャーナリングを備えたデータストレージを使用するサーバを示すブロック図である。 図1のサーバの詳細に示す図面である。 従来技術に係り、ジャーナリング及びデータ書込みの両方を遂行するために図1のストレージ装置と通信する図1のアプリケーションを示す図面である。 ジャーナル及びデータを格納するためにマルチストリーミングを使用する図1のストレージ装置を示す図面である。 従来のアプローチを使用する図1のストレージ装置の使用方法を示す図面である。 本発明の実施形態によるアプローチを使用する図1のストレージ装置の使用方法を示す図面である。 ジャーナリング及びデータ書込みの両方を遂行するために図1のストレージ装置と通信する図1のアプリケーション及び図1のデータストレージシステムを示す図面である。 ジャーナリング及びデータ書込みの両方を遂行するために図1のストレージ装置と通信する図1のアプリケーション及び図1のデータストレージシステムを示す図面である。 本発明の実施形態によってジャーナリング及びデータ書込みの両方を遂行し、図1のストレージ装置と通信するための図1のアプリケーション及び図1のデータストレージシステムに対する手続を例示的に示すフローチャートである。 本発明の実施形態によってジャーナリング及びデータ書込みの両方を遂行し、図1のストレージ装置と通信するための図1のアプリケーション及び図1のデータストレージシステムに対する手続を例示的に示すフローチャートである。
以下では、本発明の技術分野で通常の知識を有する者が本発明を容易に実施できる程度に、本発明の実施形態を明確に、且つ詳細に記述する。
本明細書では第1番目、第2番目等のような用語が多様な構成要素を表現するために使用されたが、このような構成要素がこのような用語によって限定されないことは容易に理解されよう。このような用語は単に、1つの構成要素を他の構成要素と区分するために使用されており、例えば、本発明の範囲を逸脱せずに、第1番目のモジュールは第2番目のモジュールと称され得るし、同様に、第2番目のモジュールは第1番目のモジュールと称され得る。
図1は本発明の実施形態によるジャーナリングを備えたデータストレージシステムを使用するサーバを示すブロック図である。図1に示されたサーバ105は任意の種類のサーバである。サーバ105はプロセッサ110及びメモリ115を含む。プロセッサ110は任意の種類のプロセッサである。また、メモリ115は任意の種類のメモリである。
プロセッサ110上で動作できるのはデータストレージシステム120である。データストレージシステム120は二重書込み(即ち、ジャーナリング及びデータ書込み)を遂行する任意の種類のシステムである。データストレージシステム120は‘Ceph’(登録商標)のようなオブジェクトストレージシステム及びファイルストレージシステムのみでなく、アプリケーションが二重書込みを遂行する他のオペレーティングシステム上で動作するアプリケーションを含む。(‘Ceph’は、Inktank Storage、Inc.の米国内で登録された商標である。)
データストレージシステム120に加えて、アプリケーション125はデータストレージシステム120のさらに上(top)で動作する。本発明の一部の実施形態では、アプリケーション125自身が内部理由によって二重書込みを遂行できる。例えば、アプリケーション125が実時間シミュレーションプログラムの場合である。このようなプログラムは動作が遂行される時間に大きく依存する。仮にデータが、バッファリングされている(buffered)が書き込まれていない(unwriiten)状態で、実時間シミュレーションプログラムが中断される場合、シミュレーションの結果は捨てられる(wasted)。従って、データがデータストレージシステム120を通じてストレージ装置130に書き込まれない場合であっても、シミュレーションプログラムはデータがジャーナリングを通じて格納されることを保障させようとする。
ストレージ装置130は、無効データのガーベッジコレクションを遂行できる多様な形態のストレージ装置の内の任意の一つである。例えば、ストレージ装置130はフラッシュベースのSSD(Solid State Drive)である。ストレージ装置130はストレージ装置130の動作の管理を担当するコントローラ135を含む。例えば、他に色々の機能がある中で、コントローラ135はデータ読出し及び書込みを管理し、ロジックブロック住所をストレージ装置305上の物理ブロック住所にマッピング(mapping)する。
他の構成要素の中で、コントローラ135はコントローラ135を直接又は間接的にサーバ105に連結する物理インタフェイス、ストレージ装置130の動作を制御するプロセッサ、フラッシュストレージ内に格納されたデータに対してエラーを感知し、訂正する機能を提供するECC(Error Correction Code)回路、ストレージ装置130内のDRAM(Dynamic Random Access Memory)を管理するDRAMコントローラ、そしてフラッシュストレージを管理する1つ又は1つ以上のフラッシュコントローラを含み得る。
コントローラ135は、またマルチストリーミングコントローラを含み得る。マルチストリーミングコントローラは、何のデータが何のブロック(下で説明されるように、各ブロックは互に異なるストリームに関連付けされている)に書き込まれるかを管理する。一部の実施形態では、コントローラ135はこのような構成要素の機能をプログラムするのに適合する単一チップからなる。他の実施形態では、コントローラ135はこのような構成要素の全部又は一部を別々の構成要素(例えば、複数のチップ)として含む。
図2は図1のサーバの詳細に示す図面である。図2を参照すれば、一般的に単数又は複数のサーバ105は単数又は複数のプロセッサ110を含む。プロセッサ110はメモリコントローラ205と、サーバ105の構成要素の動作を調整するのに使用されるクロック210を含む。また、プロセッサ110はメモリ115に連結される。例えば、メモリ115はRAM(Random Access Memory)、ROM(Read−Only Memory)、又は他の状態保持媒体(state preserving media)を含む。
また、プロセッサ110はストレージ装置130及びネットワークコネクタ215に連結される。例えば、ネットワークコネクタ215はイーサネット(登録商標)(ethernet)コネクタである。また、他に色々の構成要素がある中で、プロセッサ110はバス220に連結される。バス220はユーザインタフェイス225と連結され、I/O(Input/Output)エンジン230を利用して管理されるI/Oインタフェイスポートに連結される。
図3は従来技術に係り、ジャーナリング及びデータ書込みの両方を遂行するために図1のストレージ装置130と通信する図1のアプリケーション125を示す図面である。図3を参照すれば、アプリケーション125は、図1のデータストレージシステム120の利便を介すること無くストレージ装置130と通信する。
ただ1つのソフトウェア要素(アプリケーション125、図3参照)がストレージ装置130と通信する本発明の一実施形態において、該ソフトウェア要素はジャーナリングを遂行する任意のソフトウェア要素である場合、図3において、アプリケーション125は適用性(applicability)を喪失すること無く、図1のデータストレージシステム120により置換できる。(以下の図7及び図8においては、図1のデータストレージシステム120及びアプリケーション125の両方がストレージ装置130とジャーナリングを遂行する本発明の別の実施形態が説明される。
図3を参照すれば、アプリケーション125はジャーナル書込み要請310をストレージ装置130に伝送する。ジャーナル書込み要請310はジャーナル情報305及び第1ストリーム識別子315を含む。第1ストリーム識別子315はジャーナル情報305が割当てられる特定ストリームを指定する。以下で図4を参照して説明されるように、相異なるストリームはストレージ装置130上の相異なるブロック又はスーパーブロックと連関される。ストレージ装置130は単数又は複数の特性(例えば、期待寿命又は他の何らかの分割基準等)に基づいてデータを分割(partition)する。
ジャーナル情報305が直ちにストレージ装置130に書き込まれることを保障するために、ジャーナル書込み要請310は直接I/Oコマンドを使用して伝送される。又は別の選択肢として、同じくジャーナル情報305が直ちにストレージ装置130に書き込まれることを保障するために、ジャーナル書込み要請310は直ちに(一杯に書き込まれない場合にも)フラッシュ(flush)されるバッファに伝送される。
また、アプリケーション125はデータ書込み要請320をストレージ装置130に伝送する。データ書込み要請320はデータ325及び第2ストリーム識別子330を含む。データ325がジャーナル情報305とは異なるストリームに書き込まれるように(結果的に相異なるブロック又はスーパーブロックに書き込まれる)するために、第2ストリーム識別子330は第1ストリーム識別子315と相異なるストリームを識別する。データ書込み要請320はバッファリングされた(buffered)書込み要請として伝送される。その際、ジャーナル書込み要請310が直ちにストレージ装置130に書き込まれているので、データ325は、必ず直ぐではないが、何れはストレージ装置130に書き込まれる。
最終的に、ストレージ装置130はデータ書き込み完了信号335をアプリケーション125に伝送する。信号335はデータ書込み要請320が完了され、データ325がストレージ装置130に書き込まれたことを示す。このような観点で、ジャーナル情報305はデータがストレージ装置130上のどこかに書き込まれた(written)ことをそれ以上保障する必要がなくなる。ガーベッジコレクションを遂行するストレージ装置上で、データは一般的にデータがガーベッジコレクションを通じて削除される前に無効化(invalidated)される。
このようにして、アプリケーション125は無効化要請340をストレージ装置130に伝送して、ジャーナル情報305がストレージ装置130から削除されるように要請する。ジャーナル情報305がデータ325とは異なるブロック又はスーパーブロックに書き込まれたので、無効化要請340はストレージ装置130内に有効か無効かにより断片化された(validity−fragmented)ブロック又はスーパーブロックを誘発しない。
図4はジャーナル及びデータを格納するためにマルチストリーミングを使用する図1のストレージ装置130を示す図面である。図4を参照すれば、複数のブロックA、B、C、D(405、410、415、420)に区分されたストレージ装置130が示された。複数のブロック405、410、415、420の各々は順にページに分割される。例えば、ブロック405は複数のページ425、430、435、440を含み、ブロック410は複数のページ445、450、455、460を含む。図4で、複数のブロック405、410、415、420の各々が4つのページを含むことと図示されたが、これは単なる例示的なものであり、複数のブロック405、410、415、420の各々は任意の望む数のページを含み得る。
SSDにおいて生起するように、ページはストレージ装置130に書き込まれるか、或いは読み出される最小単位のデータを示す。反面に、一部の実施形態で、ブロックはガーベッジコレクションが遂行される最小単位のデータを示す。図4には図示しないが、一部の実施形態で、ストレージ装置130の複数のブロックはスーパーブロックであると称されるさらに大きいブロックに組織化されることができる。スーパーブロックはガーベッジコレクションが遂行される最小単位のデータである。ガーベッジコレクションがブロック又はスーパーブロック上で遂行されるかに拘わらず、ガーベッジコレクションの最小単位はページより大きい。
このような不一致はガーベッジコレクションがストレージ装置130の動作に否定的な影響を及ぼす理由を説明する。即ち、仮にガーベッジコレクションの対象であるブロックの単数又は複数のページ内に有効なデータがある場合、該ブロックがガーベッジコレクション動作の対象になる前にこのような有効データは他のブロックにコピーされなければならない。例えば、ページ445がフリー(free)である場合、仮にページ425が有効データを含む場合、ブロック405がガーベッジコレクション動作の対象になる前に該データは、例えば別のブロック410内のページ445にコピーされなければならない。
一部の実施形態で、ページは複数のブロックに組織される。そして、ガーベッジコレクションが複数のブロックに別々に遂行されるよりは、複数のブロックがスーパーブロックに組織化されてガーベッジコレクションがスーパーブロック上で遂行される。
但し、スーパーブロックの概念がストレージ装置130内のガーベッジコレクションの具現上に影響を及ぼすが、理論的な観点からは、スーパーブロックはガーベッジコレクション目的のためのブロックサイズの再調整に過ぎない。複数のブロックに関する全ての論議はスーパーブロックにも同様に適用されることは容易に理解されよう。
図3について上述したように、個別ブロックはストリームに割当てられる。例えば、複数のブロック405、410は第1ストリーム315に割当てられる。また、複数のブロック415、420は第2ストリーム330に割当てられる。実施形態として、ホット(hot)データ及びコールド(cold)データが相異なるストリームに区分できる状況で、ストリーム割当てはガーベッジコレクション動作に問題を惹起するジャーナル書込み及びデータ書込みの混在を防止することができる。
図5及び図6は従来のアプローチ方法と本発明の実施形態によるアプローチ方法とを使用する図1のストレージ装置130の使用方法を比較して示す図面である。上述したように、従来のシステムでは、図5のブロックA(505)に示すように、ジャーナル書込み及びデータ書込みは図1のストレージ装置130内の同一のブロックに書き込まれる。図5を参照すれば、ブロックA(505)はジャーナル書込みを含む複数のページ510、515、520とデータ書込みを含む複数のページ525、530、540とを含む。
ジャーナル書込みは対応するデータ書込み動作が完了されれば、削除可能になる、即ち、ジャーナル書込みは短い寿命を有する傾向が存在するので、ジャーナル書込み及びデータ書込みの混在はブロックA(535)に示すように断片化されたブロックを残す。ここで、ブロックA(535)は、ブロックA(505)と物理的には同一のブロックであるが、ジャーナル書込みが無効化された後のブロックAを表す。仮にその後にブロックA(535)がガーベッジコレクションの対象になれば、複数のページ525、530、540は先ず他のブロックにコピーされなければならない。このようなコピー動作は時間を消耗し、ストレージ装置130上の他の読出し及び書込み動作を遅延させる。
しかし、本発明の実施形態のように、仮にジャーナル書込み及びデータ書込みが相異なるストリームに伝送されれば、ジャーナル書込みを消去することは断片化されたブロックを残さない。図6はこのような状況を示す。図6を参照すれば、ジャーナル書込みはブロックA(545)に伝送される。他方、データ書込みはブロックC(550)伝送される。複数のジャーナル書込み510、515、520が無効化する場合、ブロック545は他のブロックにコピーされなければならない何らのデータも格納しない。複数のデータ書込み525、530、540は予め、別のブロックC(550)に格納されているからである。
上述した記述はこのような状況を単純化して記述したものである。但し、ジャーナル書込みは同一の時間に全て消去される必要がないので、一般的にジャーナル書込みはそれらが書き込まれた以後に、特にデータ書込みの寿命と比較して相対的に短い時間内に削除される。それ故、ブロックA(545)内の全てのデータは最後のジャーナル書込みがブロックA(545)に書き込まれた後の短時間内に無効化される筈である。その際、何らのデータも他のブロックにコピーされる必要がなく、全ページを含む該ブロックがガーベッジコレクションの対象になる。
図7及び図8はジャーナリング及びデータ書込みの両方を遂行するために図1のストレージ装置130と通信する図1のアプリケーション125及び図1のデータストレージシステム120を示す図面である。アプリケーション125がデータストレージシステム120の利便を介する事無くストレージ装置130と通信する図3と対照的に、図7及び図8は一連のイベント進行手順においてデータストレージシステム120を含む。
図7を参照すれば、アプリケーション125はジャーナル書込み要請310を図3の場合と同じようにジャーナル情報305及び第1ストリーム識別子315と共に伝送する。ジャーナル書込み要請310が直接I/Oコマンドであるので、図7で、アプリケーション125がジャーナル書込み要請310をストレージ装置130に伝送し、その際、データストレージシステム120をバイパス(bypass)することを示した。しかし、他の実施形態では、アプリケーション125はジャーナル書込み要請310をデータストレージシステム120に命令と共に伝送する。その際、該命令はデータストレージシステム120がジャーナル書込み要請310を完了するために直接I/Oコマンドを遂行させる。
しかし、図3と対照的に、アプリケーション125はデータ325及び第2ストリーム識別子330と共にデータ書込み要請320をストレージ装置130ではないデータストレージシステム120に伝送する。そうすると、データストレージシステム120はストレージ装置130に対するデータ325の書込み動作の監督を担当する。
データストレージシステム120自身が自分のデータ及び/又はメタデータに対するジャーナリングを遂行できるので、データストレージシステム120は第2ジャーナル書込み要請605をストレージ装置130に伝送できる。第2ジャーナル書込み要請605は第2ジャーナル情報610及び第3ストリーム識別子615を含む。これは単一データユニットの書込みが複数のジャーナルを含み、従って複数のストリームを含み得ることを示す。
図8を参照すれば、データストレージシステム120自身が自分の第2データ書込み要請620をストレージ装置130に伝送する。第2データ書込み要請620はデータ325及び第2ストリーム識別子330を含む。ここで、第2データ書込み要請620内のデータ325及びストリーム識別子330がデータ書込み要請320内のデータ325及びストリーム識別子330と同一であることが分かる。これで、同一のデータがデータストレージシステム120を通じて単に迂回して書き込まれることが理解されよう。最終的に、ストレージ装置130は第2データ書込み要請620を完遂したことをデータストレージシステム120に通報する第2データ書き込み完了信号625を伝送し、以後データストレージシステム120は第2ジャーナル情報610を削除するために第2無効化要請630を伝送する。
また、仮にストレージ装置130がアプリケーション125の存在を分かる場合、ストレージ装置130はデータ書き込み完了信号335を再びアプリケーション125に伝送し、これに対してアプリケーション125は自身の無効化要請340を伝送する。
しかし、他の実施形態では、データストレージシステム120は第2ジャーナル情報610、ジャーナル情報305の全てを削除するために第2無効化要請630を使用する。
また、他の実施形態で、アプリケーション125にアプリケーション125自身が無効化要請340を伝送できることを知らせるために、データストレージシステム120はデータ書き込み完了信号335をアプリケーション125に伝送する。
上述した実施形態で、アプリケーション125及び/又はデータストレージシステム120はジャーナル情報305、第2ジャーナル情報610の全て又は一部の消去を担当することができる。従って、ジャーナル情報305、第2ジャーナル情報610の全て又は一部の消去が何時可能になるかを知るために、アプリケーション125及び/又はデータストレージシステム120はデータ書き込み完了信号335、第2データ書き込み完了信号625を全て又は一部を受信する必要がある。
しかし、他の実施形態で、ストレージ装置130はデータ325のソースを知り、アプリケーション125及び/又はデータストレージシステム120に対する無効化要請340、第2無効化要請630の全て又は一部を伝送する必要を事前に防止して、データ書込み要請320、第2データ書き込み要請620の全て又は一部が完遂されれば、自動的にジャーナル情報305、第2ジャーナル情報610の全て又は一部を削除する。
一部の実施形態では、多重個(multiple_instances)のデータストレージシステム120が単一ストレージ装置130上に共存する。例えば、ストレージ装置130は複数のジャーナリングファイルシステムパーティション(partitions)を含む。又は、ストレージ装置130は多重個のオブジェクト(object)ストレージを維持する。このような実施形態で、多重個のデータストレージシステム120の各々は自分の第2ジャーナル書込み要請605を同一のストレージ装置130に伝送する。各々の個別の第2ジャーナル書込み要請605は自分の第2ジャーナル情報610及び第3ストリーム識別子615を含む。多重個のデータストレージシステム120の各々は自分の第2データ書込み要請620を同一のストレージ装置130に伝送する。各々の個別の第2データ書込み要請620は自分のデータ325及び第2ストリーム識別子330を含む。
多重個のデータストレージシステム120の各々は、自分の第2ジャーナル情報610及びデータ325を相異なるストリームに載せ、これに対してストレージ装置130は多様な第2ジャーナル情報610及びデータ325を相異なるブロック又はスーパーブロックに格納する。
斯くして、多重個のデータストレージシステム120の各々に対する第2ジャーナル情報610及びデータ325が、相異なるブロック又はスーパーブロックに存在するのみならず、相異なるデータストレージシステム120からの相異なる第2ジャーナル情報610は相異なるブロック又はスーパーブロック内に格納され、且つ、相異なるデータストレージシステム120からの相異なるデータ325は相異なるブロック又はスーパーブロック内に格納される。
図9及び図10は本発明の実施形態によってジャーナリング及びデータ書込みの両方を遂行するために、図1のストレージ装置130と通信する図1のアプリケーション125及び図1のデータストレージシステム120に対する手続を例示的に示すフローチャートである。
図9を参照すれば、S705段階で、図1のアプリケーション125は、図1のストレージ装置130に書き込まれるべき図3のデータ325を職別する。S710段階で、図3のストリーム識別子315を図3のジャーナル情報305に対して使用するためのストリームとして指定するために、図1のアプリケーション125は図3のジャーナル書込み要請310を直接I/Oコマンドとして図1のストレージ装置130に伝送する。
この地点で、手続は相異なる経路に従って進行され得る。
一部の実施形態では、S715段階で、図1のアプリケーション125は図3のデータ書込み要請320をバッファリングされたI/Oコマンドとして図3のストレージ装置130に伝送する。続いて、S720段階で、図1のアプリケーション125は図1のストレージ装置130からデータ書き込み完了信号335を受信する。データ書き込み完了信号335は図3のデータ書込み要請320が完遂されたことを示す。最後に、S725段階で、図3のジャーナル情報305を削除するために、図1のアプリケーション125は図3の無効化要請340を図1のストレージ装置130に伝送する。
又は、他の実施形態として、図1のアプリケーション125は、図3のデータ書込み要請320を図1のストレージ装置130に直接伝送せず、その代わりに、S730段階で、図1のアプリケーション125は図3のデータ書込み要請320を図1のデータストレージシステム120に伝送する。S735段階で、図1のデータストレージシステム120は図7の第2番目のジャーナル書込み要請605を図1のストレージ装置130に伝送する。S740段階で、図1のデータストレージシステム120は図8の第2番目のデータ書込み要請620を図1のストレージ装置130に伝送する。
S745段階で、図1のデータストレージシステム120は図1のストレージ装置130から図8の第2データ書き込み完了信号625を受信する。第2データ書き込み完了信号625は図8の第2データ書込み要請620が完遂されたことを示す。また、S750段階で、図7の第2ジャーナル情報610を削除するために、図1のデータストレージシステム120は図8の第2無効化要請630を図1のストレージ装置130に伝送する。続いて、手続は図9のS720段階に進行される。
図9及び図10において、本発明の一部の実施形態が示された。しかし、当業者は上述した段階の順序を変更するか、一部段階を省略するか、或いは図面に示されない連結を含む、相異なる実施形態が具現できることは容易に理解できよう。明示的に説明されたか否かに関係無く、このような順序の変形は本発明の実施形態として看做される。
以下に、本発明の概念の特定形態が具現できる適切な単数又は複数のマシンに対する簡略であり、一般的な説明が提供される。単数又は複数のマシンは、キーボード、マウス等のような従来の入力装置からの入力によって少なくとも一部が制御され、同様に他のマシン、VR(Virtual Reality、仮想)環境との相互作用、バイオメトリック(biometric)フィードバック(feedback)、又は他の入力信号から受信された指示によっても制御され得る。
ここで、使用される‘マシン’という用語は幅広く、単体マシン、仮想マシン、又は、通信可能に結合された、マシン、仮想マシン、又は協同動作する装置からなるシステムを含む。例示的なマシンはパーソナル(Personal)コンピュータ、ワークステーション、サーバ、ポータブル(Portable)コンピュータ、ポケット用(Handheld)装置、携帯電話、タブレット等を含む。また、例示的なシステムは自動車、列車、タクシなどの、個人用又は公共用交通装置を含む。
マシンは組込み(embedded)コントローラ等を含む。例えば、組込みコントローラはプログラムが可能であるか、或いは不可能なロジック装置又はアレイ(Array)、ASIC(Application Specific Integrated Circuits)、組込みコンピュータ、スマートカード等を含む。マシンは単数又は複数の遠隔マシンとの単数又は複の連結を使用できる。例えば、このような連結はネットワークインタフェイス、モデム、又は他の擬似伝達連結を通じてなされ得る。
マシンはイントラネット、インタネット、LAN(Local Area Network)、WAN(Wide Area Network)等の物理的及び/又は論理的ネットワーク方法によって相互連結され得る。当業者はネットワーク通信が多様な有線及び/又は無線近距離又は長距離キャリヤ、及びプロトコルを利用できることを容易に理解できよう。例えば、キャリヤ及びプロトコルは、RF(Radio Frequency)、衛星(Satellite)、マイクロウェーブ(Microwave)、IEEE(Institute of Electrical and Electronics Engineers)802.11、Bluetooth(登録商標)、可視光線、赤外線、ケーブル、レーザー等を含む。
本発明の実施形態は機能、段階、データ構造、アプリケーションプログラムを含む関連データを参照して説明される。これらの機能、段階、データ構造、アプリケーションプログラムは、マシンによってアクセスされる場合にマシンがタスクを遂行するか、或いは抽象的なデータタイプ又はローレベル(Low−Level)のハードウェアコンテキスト(Context)を定義するようにする。例えば、上述した関連データはRAM、ROMのような揮発性及び/又は不揮発性メモリに格納される。また、関連データは他のストレージ装置及びそれらの関連ストレージ媒体に格納される。例えば、関連ストレージ媒体はハードドライブ、フロッピーディスク(Floppy−Disks)、光学ストレージ(Optical Storage)、テープ(Tapes)、フラッシュメモリ(Flash Memory)、メモリスティック(Memory Sticks)、デジタルビデオディスク(Digital Video Disks)、生体ストレージ(Biological Storage)等を含む。
関連データは、パケット、シリアル(Serial)データ、パラレル(Parallel)データ、電波信号等の形態で、物理的及び/又は論理的ネットワークを含む通信環境を通じて伝送される。また、関連データは圧縮されるか、或いは暗号化された形態で利用される。関連データは分散環境で利用され得、マシンアクセスに対して局所的に、及び/又は、遠隔に格納される。
本発明の実施形態は、有形(tangible)且つ非一時的な(Non−transitory)マシンリーダブル(Readable)媒体を含み得る。マシンリーダブル媒体は1つ又は1つ以上のプロセッサによって遂行される命令を含み、該命令はここで記述された本発明の要素を遂行する命令を含む。
本発明の実施形態は、以下の例(statement)に何ら制限されることなく拡張され得る。
第1例で、本発明の実施形態によるシステムは、
プロセッサ及びメモリを含むコンピュータと、
ストレージ装置と、
プロセッサ上で実行され、ジャーナル書込み要請及びデータ書込み要請の両方を前記ストレージ装置に伝送するように動作するアプリケーションと、
前記ストレージ装置上に位置し、前記ストレージ装置が第1ストリームと関連された第1ブロックにジャーナル情報を書き込み、第2ストリームと関連された第2ブロックにデータを書き込むように指示するコントローラと、を含み、
前記ジャーナル書込み要請は前記ジャーナル情報を含み、前記第1ストリームと関連され、
前記データ書込み要請は前記データを含み、前記第2ストリームと関連される。
第2例で、本発明の実施形態による第1例のシステムにおいて、前記ストレージ装置がSSD(Solid State Drive)を含む。
第3例で、本発明の実施形態による第1例のシステムにおいて、前記アプリケーションは直接(direct)入出力コマンドを利用して前記ストレージ装置に前記ジャーナル書込み要請を伝送するように動作する。
第4例で、本発明の実施形態による第1例のシステムにおいて、前記アプリケーションはバッファリングされた(buffered)書込みコマンドを利用して前記ストレージ装置に前記データ書込み要請を伝送するように動作する。
第5例で、本発明の実施形態による第1例のシステムにおいて、前記コントローラはデータ書込み要請が完了された後に前記ジャーナル情報を削除するための無効化要請を受信するように動作する。
第6例で、本発明の実施形態による第5例のシステムにおいて、前記アプリケーションは前記無効化要請を伝送するように動作する。
第7例で、本発明の実施形態による第6例のシステムにおいて、前記データ書込み要請が完了したことの信号を前記アプリケーションが受信したことに反応して、前記アプリケーションが前記無効化要請を伝送するように動作する。
第8例で、本発明の実施形態による第7例のシステムにおいて、前記データ書込み要請が完了したことの信号を前記コントローラから前記アプリケーションが受信したことに反応して、前記アプリケーションが前記無効化要請を伝送するように動作する。
第9例で、本発明の実施形態による第1例のシステムにおいて、前記アプリケーションは前記プロセッサ上で実行されるデータストレージシステムに前記データ書込み要請を伝送するように動作し、
前記データストレージシステムは第2データ書込み要請を前記ストレージ装置に伝送するように動作し、
前記第2データ書込み要請は前記データを含み、前記第2ストリームと関連される。
第10例で、本発明の実施形態による第9例のシステムにおいて、前記データストレージシステムは第2ジャーナル書込み要請を前記ストレージ装置に伝送するように動作し、
前記第2ジャーナル書込み要請は第2ジャーナル情報を含み、第3ストリームと連関される。
第11例で、本発明の実施形態による第10例のシステムにおいて、前記データストレージシステムは第2無効化要請を伝送するように動作する。
第12例で、本発明の実施形態による第10例のシステムにおいて、前記第2データ書込み要請が完了したことの第2信号を前記データストレージシステムが受信したことに反応して、前記データストレージシステムが前記第2無効化要請を伝送するように動作する。
第13例で、本発明の実施形態による第12例のシステムにおいて、前記第2データ書込み要請が完了したことの第2信号を前記コントローラから前記データストレージシステムが受信したことに反応して、前記データストレージシステムが前記第2無効化要請を伝送するように動作する。
第14例で、本発明の他の実施形態による方法は、
ジャーナル書込み及びデータ書込み両方を実行するアプリケーションから書き込まれるデータを識別する段階と、
前記アプリケーションから無効データにガーベッジコレクションを遂行するストレージ装置にジャーナル書込み要請を伝送する段階と、
前記アプリケーションから前記ストレージ装置にデータ書込み要請を伝送する段階と、を含み、
前記ジャーナル書込み要請は第1ストリームに割当され、前記データ書込み要請は第2ストリームに割当される。
第15例で、本発明の実施形態による第14例の方法において、
前記アプリケーションから前記ストレージ装置に前記ジャーナル書込み要請を伝送する段階は前記アプリケーションからSSD(Solid State Drive)に前記ジャーナル書込み要請を伝送する段階を含み、
前記アプリケーションから前記ストレージ装置に前記データ書込み要請を伝送する段階は前記アプリケーションから前記SSDに前記データ書込み要請を伝送する段階を含む。
第16例で、本発明の実施形態による第14例の方法において、
前記アプリケーションから前記ストレージ装置に前記ジャーナル書込み要請を伝送する段階は直接(direct)入出力コマンドを利用して前記アプリケーションから前記ストレージ装置に前記ジャーナル書込み要請を伝送する段階を含み、
前記アプリケーションから前記ストレージ装置に前記データ書込み要請を伝送する段階はバッファリングされた(buffered)書込みコマンドを利用して前記アプリケーションから前記ストレージ装置に前記データ書込み要請を伝送する段階を含む。
第17例で、本発明の実施形態による第14例の方法において、前記データ書込み要請が前記ストレージ装置に書き込まれた以後に前記ジャーナル情報を削除するために無効化要請を前記ストレージ装置に伝送する段階をさらに含む。
第18例で、本発明の実施形態による第17例の方法において、前記無効化要請を前記ストレージ装置に伝送する段階は前記無効化要請を前記アプリケーションから前記ストレージ装置に伝送する段階を含む。
第19例で、本発明の実施形態による第18例の方法において、前記無効化要請を前記アプリケーションから前記ストレージ装置に伝送する段階は前記ストレージ装置上の前記データ書込み要請が完了したことの信号を前記記アプリケーションで受信する段階を含む。
第20例で、本発明の実施形態による第19例の方法において、前記ストレージ装置上の前記データ書込み要請が完了したことの信号を前記記アプリケーションで受信する段階は前記ストレージ装置上の前記データ書込み要請が完了したことの信号を前記記アプリケーションで前記ストレージ装置から受信する段階を含む。
第21例で、本発明の実施形態による第14例の方法において、前記アプリケーションから前記ストレージ装置にデータ書込み要請を伝送する段階は、
前記アプリケーションからデータストレージシステムに前記データ書込み要請を伝送する段階と、
前記データストレージシステムから前記ストレージ装置に第2データ書込み要請を伝送する段階と、を含む。
第22例で、本発明の実施形態による第21例の方法において、前記データストレージシステムから前記ストレージ装置に前記第2データ書込み要請を伝送する段階は前記データストレージシステムから前記ストレージ装置に第2ジャーナル書込み要請を伝送する段階を含む。
第23例で、本発明の実施形態による第22例の方法において、前記第2データ書込み要請が前記ストレージ装置に書き込まれた以後に前記第2ジャーナル書込み要請によって書き込まれた前記データを削除するために無効化要請を前記ストレージ装置に伝送する段階をさらに含む。
第24例で、本発明の実施形態による第23例の方法において、前記無効化要請を前記ストレージ装置に伝送する段階は前記無効化要請を前記データストレージシステムから前記ストレージ装置に伝送する段階を含む。
第25例で、本発明の実施形態による第24例の方法において、前記無効化要請を前記データストレージシステムから前記ストレージ装置に伝送する段階は前記ストレージ装置上の前記データ書込み要請が完了したことの信号を前記データストレージシステムで受信する段階を含む。
第26例で、本発明の実施形態による第25例の方法において、前記ストレージ装置上の前記データ書込み要請が完了したことの信号を前記データストレージシステムで受信する段階は前記ストレージ装置上の前記データ書込み要請が完了したことの信号を前記データストレージシステムで前記ストレージ装置から受信する段階を含む。
第27例で、本発明の実施形態による非一時的な(Non−Transitory)命令を格納する類型のストレージ媒体を含む装置において、
前記非一時的な命令はマシンによって実行される時、
ジャーナル書込み及びデータ書込み両方を実行するアプリケーションから書き込まれるデータを識別する段階と、
前記アプリケーションから無効データにガーベッジコレクションを遂行するストレージ装置にジャーナル書込み要請を伝送する段階と、
前記アプリケーションから前記ストレージ装置にデータ書込み要請を伝送する段階と、を遂行し、
前記ジャーナル書込み要請は第1ストリームに割当され、前記データ書込み要請は第2ストリームに割当される。
第28例で、本発明の実施形態による第27例の装置において、
前記アプリケーションから前記ストレージ装置に前記ジャーナル書込み要請を伝送する段階は前記アプリケーションからSSD(Solid State Drive)に前記ジャーナル書込み要請を伝送する段階を含み、
前記アプリケーションから前記ストレージ装置に前記データ書込み要請を伝送する段階は前記アプリケーションから前記SSDに前記データ書込み要請を伝送する段階を含む。
第29例で、本発明の実施形態による第27例の装置において、
前記アプリケーションから前記ストレージ装置に前記ジャーナル書込み要請を伝送する段階は直接(direct)入出力コマンドを利用して前記アプリケーションから前記ストレージ装置に前記ジャーナル書込み要請を伝送する段階を含み、
前記アプリケーションから前記ストレージ装置に前記データ書込み要請を伝送する段階はバッファリングされた(buffered)書込みコマンドを利用して前記アプリケーションから前記ストレージ装置に前記データ書込み要請を伝送する段階を含む。
第30例で、本発明の実施形態による第27例の装置において、
前記非一時的な命令はマシンによって実行される時、
前記データ書込み要請が前記ストレージ装置に書き込まれた以後に前記ジャーナル情報を削除するために無効化要請を前記ストレージ装置に伝送する段階をさらに遂行する。
第31例で、本発明の実施形態による第30例の装置において、前記無効化要請を前記ストレージ装置に伝送する段階は前記無効化要請を前記アプリケーションから前記ストレージ装置に伝送する段階を含む。
第32例で、本発明の実施形態による第31例の装置において、前記無効化要請を前記アプリケーションから前記ストレージ装置に伝送する段階は前記ストレージ装置上の前記データ書込み要請が完了したことの信号を前記記アプリケーションで受信する段階を含む。
第33例で、本発明の実施形態による第32例の装置において、前記ストレージ装置上の前記データ書込み要請が完了したことの信号を前記記アプリケーションで受信する段階は前記ストレージ装置上の前記データ書込み要請が完了したことの信号を前記記アプリケーションで前記ストレージ装置から受信する段階を含む。
第34例で、本発明の実施形態による第27例の装置において、前記アプリケーションから前記ストレージ装置にデータ書込み要請を伝送する段階は、
前記アプリケーションからデータストレージシステムに前記データ書込み要請を伝送する段階と、
前記データストレージシステムから前記ストレージ装置に第2データ書込み要請を伝送する段階と、を含む。
第35例で、本発明の実施形態による第34例の装置において、前記データストレージシステムから前記ストレージ装置に前記第2データ書込み要請を伝送する段階は前記データストレージシステムから前記ストレージ装置に第2ジャーナル書込み要請を伝送する段階を含む。
第36例で、本発明の実施形態による第35例の装置において、
前記非一時的な命令はマシンによって実行される時、
前記第2データ書込み要請が前記ストレージ装置に書き込まれた以後に前記第2ジャーナル書込み要請によって書き込まれた前記データを削除するために無効化要請を前記ストレージ装置に伝送する段階をさらに実行する。
第37例で、本発明の実施形態による第36例の装置において、前記無効化要請を前記ストレージ装置に伝送する段階は前記無効化要請を前記データストレージシステムから前記ストレージ装置に伝送する段階を含む。
第38例で、本発明の実施形態による第37例の装置において、前記無効化要請を前記データストレージシステムから前記ストレージ装置に伝送する段階は前記ストレージ装置上の前記データ書込み要請が完了したことの信号を前記データストレージシステムで受信する段階を含む。
上記に説明した内容は本発明を実施するための具体的な例である。本発明には上記に説明した実施形態のみだけでなく、単純に設計変更するか、或いは容易に変更できる実施形態も含まれる。また、本発明には上述した実施形態を利用して将来に容易に変形して実施できる技術も含まれる。
105 サーバ
110 プロセッサ
115 メモリ
120 データストレージシステム
125 アプリケーション
130 ストレージ装置
135 コントローラ
205 メモリコントローラ
210 クロック
215 ネットワークコネクタ
220 バス
225 ユーザインタフェイス
230 I/Oエンジン
305 ジャーナル情報
310 ジャーナル書込み要請
315 第1ストリーム識別子、第1ストリーム
320 データ書き込み要請
325 データ
330 第2ストリーム識別子、第2ストリーム
335 データ書き込み完了信号
340 無効化要請
405、410、415、420 ブロックA、B、C、D
425〜440、445〜460 ページ
505、535 ブロックA、A
510、515、520 ジャーナル書き込みを含むページ、ジャーナル書き込み
525、530、540 データ書き込みを含むページ、データ書き込み
545、550 ブロックA、C
605 第2ジャーナル書込み要請
610 第2ジャーナル情報
615 第3ストリーム識別子、第3ストリーム
620 第2データ書き込み要請
625 第2データ書き込み完了信号
630 第2無効化要請

Claims (20)

  1. ストレージ(格納)装置(device)を含むシステムであって、
    プロセッサ及びメモリを含むコンピュータと、
    ストレージ装置と、
    前記プロセッサ上で実行され、ジャーナル(journal)書込み要請及びデータ書込み要請の両方を前記ストレージ装置に伝送するように動作するアプリケーションと、
    前記ストレージ装置上に位置し、前記ストレージ装置が第1ストリーム(stream)と関連された第1ブロック(block)にジャーナル情報を書き込み、第2ストリームと関連された第2ブロックにデータを書き込むように指示するコントローラと、を含み、
    前記ジャーナル書込み要請は、前記ジャーナル情報を含み、前記第1ストリームと関連され、
    前記データ書込み要請は、前記データを含み、前記第2ストリームと関連される、ことを特徴とするシステム。
  2. 前記コントローラは、前記データ書込み要請が完遂された以後に前記ジャーナル情報を削除するために無効化(invalidate)要請を受信するように動作する、ことを特徴とする請求項1に記載のシステム。
  3. 前記アプリケーションは、前記無効化要請を伝送するように動作する、ことを特徴とする請求項2に記載のシステム。
  4. 前記アプリケーションは、前記データ書込み要請が完遂されたという信号を前記アプリケーションが受信したことに反応して、前記無効化要請を伝送するように動作する、ことを特徴とする請求項3に記載のシステム。
  5. 前記アプリケーションは、前記データ書込み要請を前記プロセッサ上で実行されるデータストレージシステムに伝送するように動作し、
    前記データストレージシステムは、第2データ書込み要請を前記ストレージ装置に伝送するように動作し、
    前記第2データ書込み要請は、前記データを含み、前記第2ストリームと関連される、ことを特徴とする請求項1に記載のシステム。
  6. 前記データストレージシステムは、第2ジャーナル書込み要請を前記ストレージ装置に伝送するように動作し、
    前記第2ジャーナル書込み要請は、第2ジャーナル情報を含み、第3ストリームと関連される、ことを特徴とする請求項5に記載のシステム。
  7. 前記データストレージシステムは、第2無効化要請を伝送するように動作する、ことを特徴とする請求項6に記載のシステム。
  8. ジャーナル書込み及びデータ書込みの両方を遂行するアプリケーションから書き込まれるデータを識別する段階と、
    前記アプリケーションから無効データに対するガーベッジコレクション(garbage_collection)を遂行するストレージ装置に、ジャーナル書込み要請を伝送する段階と、
    前記アプリケーションから前記ストレージ装置にデータ書込み要請を伝送する段階と、を含み、
    前記ジャーナル書込み要請は、第1ストリームに割当てられ、前記データ書込み要請は、第2ストリームに割当てられる、ことを特徴とする二重書込み方法。
  9. 前記データ書込み要請に基づき前記データが前記ストレージ装置に書き込まれた以後に、前記ジャーナル情報を削除するために無効化要請を前記ストレージ装置に伝送する段階をさらに含む、ことを特徴とする請求項8に記載の二重書込み方法。
  10. 前記無効化要請を前記ストレージ装置に伝送する段階は、前記無効化要請を前記アプリケーションから前記ストレージ装置に伝送する段階を含む、ことを特徴とする請求項9に記載の二重書込み方法。
  11. 前記無効化要請を前記アプリケーションから前記ストレージ装置に伝送する段階は、前記ストレージ装置上の前記データ書込み要請が完遂されたという信号を前記アプリケーションで受信する段階を含む、ことを特徴とする請求項10に記載の二重書込み方法。
  12. 前記アプリケーションから前記ストレージ装置に前記データ書込み要請を伝送する段階は、
    前記アプリケーションからデータストレージシステムに前記データ書込み要請を伝送する段階と、
    前記データストレージシステムから前記ストレージ装置に第2データ書込み要請を伝送する段階を含む、ことを特徴とする請求項8に記載の二重書込み方法。
  13. 前記データストレージシステムから前記ストレージ装置に前記第2データ書込み要請を伝送する段階は、前記データストレージシステムから前記ストレージ装置に、第2ジャーナル情報を含む第2ジャーナル書込み要請を伝送する段階を含む、ことを特徴とする請求項12に記載の二重書込み方法。
  14. 前記第2データ書込み要請に基づきデータが前記ストレージ装置に書き込まれた以後に、前記第2ジャーナル書込み要請によって書き込まれた前記第2ジャーナル情報を削除するために無効化要請を前記ストレージ装置に伝送する段階をさらに含む、ことを特徴とする請求項13に記載の二重書込み方法。
  15. 非一時的な(Non−Transitory)命令を格納した有形(tangible)のストレージ媒体(tangible storage medium)を含む装置(article)において、
    前記非一時的な命令がマシンによって実行される時、
    ジャーナル書込み及びデータ書込みの両方を遂行するアプリケーションから書き込まれるデータを識別する段階と、
    無効データに対するガーベッジコレクションを遂行するストレージ装置に、前記アプリケーションからジャーナル書込み要請を伝送する段階と、
    前記アプリケーションから前記ストレージ装置にデータ書込み要請を伝送する段階と、を遂行し、
    ここで前記ジャーナル書込み要請は、第1ストリームに割当てられ、前記データ書込み要請は、第2ストリームに割当てられる、ことを特徴とする装置。
  16. 前記非一時的な命令がマシンによって実行される時、
    前記データ書込み要請に基づきデータが前記ストレージ装置に書き込まれた以後に、前記ジャーナル情報を削除するために無効化要請を前記ストレージ装置に伝送する段階をさらに遂行する、ことを特徴とする請求項15に記載の装置。
  17. 前記無効化要請を前記ストレージ装置に伝送する段階は、前記無効化要請を前記アプリケーションから前記ストレージ装置に伝送する段階を含む、ことを特徴とする請求項16に記載の装置。
  18. 前記アプリケーションから前記ストレージ装置に前記データ書込み要請を伝送する段階は、
    前記アプリケーションからデータストレージシステムに前記データ書込み要請を伝送する段階と、
    前記データストレージシステムから前記ストレージ装置に第2データ書込み要請を伝送する段階と、を含む、ことを特徴とする請求項15に記載の装置。
  19. 前記データストレージシステムから前記ストレージ装置に前記第2データ書込み要請を伝送する段階は、前記データストレージシステムから前記ストレージ装置に第2ジャーナル情報を含む第2ジャーナル書込み要請を伝送する段階を含む、ことを特徴とする請求項18に記載の装置。
  20. 前記非一時的な命令はマシンによって実行される時、
    前記第2データ書込み要請に基づきデータが前記ストレージ装置に書き込まれた以後に、前記第2ジャーナル書込み要請によって書き込まれた前記第2ジャーナル情報を削除するために無効化要請を前記ストレージ装置に伝送する段階をさらに実行する、ことを特徴とする請求項19に記載の装置。
JP2016240058A 2015-12-30 2016-12-12 二重書込みを遂行するストレージ装置を含むシステム、装置、及びその方法 Active JP6734768B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562273323P 2015-12-30 2015-12-30
US62/273,323 2015-12-30
US15/089,237 2016-04-01
US15/089,237 US9959046B2 (en) 2015-12-30 2016-04-01 Multi-streaming mechanism to optimize journal based data storage systems on SSD

Publications (3)

Publication Number Publication Date
JP2017120626A true JP2017120626A (ja) 2017-07-06
JP2017120626A5 JP2017120626A5 (ja) 2020-01-30
JP6734768B2 JP6734768B2 (ja) 2020-08-05

Family

ID=59226308

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016240058A Active JP6734768B2 (ja) 2015-12-30 2016-12-12 二重書込みを遂行するストレージ装置を含むシステム、装置、及びその方法

Country Status (5)

Country Link
US (1) US9959046B2 (ja)
JP (1) JP6734768B2 (ja)
KR (1) KR102412978B1 (ja)
CN (1) CN106933747B (ja)
TW (1) TWI702500B (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107422992A (zh) * 2017-07-31 2017-12-01 郑州云海信息技术有限公司 一种SSD运行时Journal保存方法及系统
US11386002B2 (en) * 2018-10-04 2022-07-12 ScaleFlux, Inc. Enhancing solid-state storage device speed performance through stream-aware garbage collection
CN109491616B (zh) 2018-11-14 2022-05-24 三星(中国)半导体有限公司 数据的存储方法和设备
KR20200145151A (ko) 2019-06-20 2020-12-30 삼성전자주식회사 맵핑 정보를 축약하는 플래시 변환 계층 구조를 이용하여 메모리 리소스를 관리하는 데이터 저장 장치
KR20210097010A (ko) * 2020-01-29 2021-08-06 삼성전자주식회사 키-값 스토리지 장치들에 대한 입출력 성능을 향상을 위한 키 값 객체 입출력들 그룹화
KR20210156190A (ko) 2020-06-17 2021-12-24 삼성전자주식회사 스토리지 장치 지원 실시간 가상 머신 마이그레이션
KR20220086934A (ko) 2020-12-17 2022-06-24 에스케이하이닉스 주식회사 비휘발성 메모리 시스템의 저널링 제어 장치 및 방법

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6128630A (en) * 1997-12-18 2000-10-03 International Business Machines Corporation Journal space release for log-structured storage systems
CA2511304C (en) 2002-12-24 2011-09-20 Lg Electronics, Inc. Dual journaling store method and storage medium thereof
US7363420B2 (en) * 2003-12-15 2008-04-22 Nortel Networks Limited Method and file structures for managing data on a flash disk
US7197599B2 (en) * 2003-12-29 2007-03-27 Intel Corporation Method, system, and program for managing data updates
JP2008165624A (ja) * 2006-12-28 2008-07-17 Hitachi Ltd 計算機システム及び第1記憶装置
US20090119352A1 (en) 2007-11-05 2009-05-07 Steven Joseph Branda Method for Optimizing Generational Garbage Collection Through Object Life Heuristics
WO2009079478A1 (en) * 2007-12-14 2009-06-25 Virident Systems, Inc. Distributing metadata across multiple different disruption regions within an asymmetric memory system
EP2263145B1 (en) * 2008-02-12 2020-02-05 NetApp, Inc. Hybrid media storage system architecture
US8949684B1 (en) * 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
US8700842B2 (en) 2010-04-12 2014-04-15 Sandisk Enterprise Ip Llc Minimizing write operations to a flash memory-based object store
JP2012084127A (ja) 2010-09-15 2012-04-26 Toshiba Corp 半導体装置
US8738882B2 (en) 2011-06-03 2014-05-27 Apple Inc. Pre-organization of data
CN103858116B (zh) * 2011-08-09 2015-09-02 Lsi公司 I/o设备及计算主机互操作
US10203881B2 (en) 2011-12-19 2019-02-12 Apple Inc. Optimized execution of interleaved write operations in solid state drives
KR20140069659A (ko) * 2012-11-29 2014-06-10 성균관대학교산학협력단 플래시 메모리용 파일 시스템
US9075731B2 (en) * 2013-01-23 2015-07-07 Vmware, Inc. Using transaction entries to achieve crash consistency when performing write-behind caching using a flash storage-based cache
JP6005566B2 (ja) * 2013-03-18 2016-10-12 株式会社東芝 情報処理システム、制御プログラムおよび情報処理装置
KR101567134B1 (ko) 2013-03-29 2015-11-09 이화여자대학교 산학협력단 비휘발성 메모리에 기반하여 저널링 기능을 통합한 버퍼 캐시 장치, 저널링 파일 시스템 및 저널링 방법
US10191822B2 (en) 2014-02-20 2019-01-29 Rambus Inc. High performance persistent memory
JP2016170583A (ja) 2015-03-12 2016-09-23 株式会社東芝 メモリシステムおよび情報処理システム
US20160283125A1 (en) 2015-03-25 2016-09-29 Kabushiki Kaisha Toshiba Multi-streamed solid state drive
US9696935B2 (en) 2015-04-24 2017-07-04 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device
US20170139825A1 (en) * 2015-11-17 2017-05-18 HGST Netherlands B.V. Method of improving garbage collection efficiency of flash-oriented file systems using a journaling approach

Also Published As

Publication number Publication date
TWI702500B (zh) 2020-08-21
KR102412978B1 (ko) 2022-06-24
JP6734768B2 (ja) 2020-08-05
CN106933747B (zh) 2019-08-20
TW201723857A (zh) 2017-07-01
CN106933747A (zh) 2017-07-07
KR20170080419A (ko) 2017-07-10
US20170192687A1 (en) 2017-07-06
US9959046B2 (en) 2018-05-01

Similar Documents

Publication Publication Date Title
JP6734768B2 (ja) 二重書込みを遂行するストレージ装置を含むシステム、装置、及びその方法
KR102002830B1 (ko) 세그먼트 클리닝 장치 및 방법
US8918581B2 (en) Enhancing the lifetime and performance of flash-based storage
RU2661280C2 (ru) Контроллер массива, твердотельный диск и способ для управления твердотельным диском для записи данных
US9535628B2 (en) Memory system with shared file system
WO2017113213A1 (zh) 访问请求处理方法、装置及计算机系统
KR20210027642A (ko) 메모리 시스템에서 맵 정보를 전송하는 방법 및 장치
US11157402B2 (en) Apparatus and method for managing valid data in memory system
US11354250B2 (en) Apparatus for transmitting map information in memory system
US10416895B2 (en) Storage devices managing duplicated data based on the number of operations
KR20210157537A (ko) 메모리 시스템 및 그의 동작 방법
WO2019090493A1 (zh) 内存块回收方法和装置
CN108228483B (zh) 处理原子写命令的方法和设备
US11422930B2 (en) Controller, memory system and data processing system
KR20200132047A (ko) 메모리 시스템에서 맵 데이터를 전송하는 방법 및 장치
KR20210046377A (ko) 마이그레이션 동작을 위한 메모리 시스템 및 메모리 시스템의 동작방법
KR20180032728A (ko) 저장 장치, 저장 장치를 포함하는 사용자 장치, 및 사용자 장치의 동작 방법
US20210026763A1 (en) Storage device for improving journal replay, operating method thereof, and electronic device including the storage device
US20140095771A1 (en) Host device, computing system and method for flushing a cache
CN110515861B (zh) 处理刷写命令的存储设备及其方法
JP6215631B2 (ja) コンピュータシステム及びそのデータ管理方法
WO2018041258A1 (zh) 去分配命令处理的方法与存储设备
KR20200014175A (ko) 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치
JP2004139353A (ja) ディスクアレイ装置、ディスクアレイ装置の制御方法、及びストレージシステム
US11941246B2 (en) Memory system, data processing system including the same, and operating method thereof

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191211

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191211

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20191211

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200518

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200710

R150 Certificate of patent or registration of utility model

Ref document number: 6734768

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250