JP2014071904A - コンピュータシステム及びコンピュータシステムのデータ管理方法 - Google Patents

コンピュータシステム及びコンピュータシステムのデータ管理方法 Download PDF

Info

Publication number
JP2014071904A
JP2014071904A JP2013202185A JP2013202185A JP2014071904A JP 2014071904 A JP2014071904 A JP 2014071904A JP 2013202185 A JP2013202185 A JP 2013202185A JP 2013202185 A JP2013202185 A JP 2013202185A JP 2014071904 A JP2014071904 A JP 2014071904A
Authority
JP
Japan
Prior art keywords
storage device
pages
node
page
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2013202185A
Other languages
English (en)
Inventor
Chang-Man Lee
昌 晩 李
Jae-Geuk Kim
在 極 金
Chul Lee
▲テツ▼ 李
Joo-Young Hwang
珠 榮 黄
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 JP2014071904A publication Critical patent/JP2014071904A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data

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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】コンピュータシステムを提供する。
【解決手段】コンピュータシステムは、記憶装置、および記憶装置に複数のページをフラッシュするホスト装置を含み、ホスト装置は、複数のページを格納するライトバックキャッシュと、ライトバックキャッシュに格納された複数のページのうち、第1特性を有するページをすべて記憶装置にフラッシュした後、第1特性と異なる第2特性を有するページを記憶装置にフラッシュするファイルシステムモジュールを含む。
【選択図】 図2

Description

本発明は、コンピュータシステム及びコンピュータシステムのデータ管理方法に関する。
ファイルシステムが記憶装置にファイルを書き込みする際、ファイルデータとメタデータとを記憶装置に格納する。ファイルデータは、ユーザアプリケーションが格納しようとするファイルの内容を含み、メタデータはファイルの属性とファイルデータが格納されるブロックの位置などを含む。
一方、ファイルシステムが記憶装置にこのようなファイルデータとメタデータとを書き込む際は、例えば、所定のキャッシュにファイルデータとメタデータとを格納した後、特定時点でこれらを記憶装置にフラッシュする方法が用いられる。
米国特許出願公開2011−0119461号公報
このように記憶装置にフラッシュするメタデータは、その属性によって頻繁にアップデートが行われるものもあり、相対的に少ない頻度でアップデートが行われるものもある。したがって、フラッシュするメタデータの属性によってフラッシュ順序を違うようにする場合、不必要な書き込み動作を減らすことにより、システムの動作性能が改善される。
本発明が解決しようとする技術的課題は、動作性能が改善されたコンピュータシステムを提供することである。
本発明が解決しようとする他の技術的課題は動作性能を改善できるコンピュータシステムのデータ管理方法を提供することである。
本発明の技術的課題は上述した技術的課題に制限されず、言及されていないまた他の技術的課題は次の記載から当業者に明確に理解できるであろう。
前記技術的課題を達成するための本発明の一実施形態によるコンピュータシステムは、記憶装置、および記憶装置に複数のページをフラッシュするホスト装置を備え、ホスト装置は、複数のページを格納するライトバックキャッシュと、ライトバックキャッシュに格納された複数のページのうち、第1特性を有するページをすべて記憶装置にフラッシュした後、第1特性と異なる第2特性を有するページを記憶装置にフラッシュするファイルシステムモジュールとを備える。
本発明のいくつかの実施形態で、前記第1特性を有するページは、前記記憶装置にインダイレクトノードブロックに格納されるページを含み得る。この際、前記インダイレクトノードブロックは、ファイルをインデックスするインダイレクトノードブロックとディレクトリをインデックスするデントリインダイレクトノードブロックとを含み得る。
本発明のいくつかの実施形態で、前記第2特性を有するページは、前記記憶装置にダイレクトノードブロックに格納されるページを含み得る。この際、前記ダイレクトノードブロックはファイルをインデックスするダイレクトノードブロックとディレクトリをインデックスするデントリダイレクトノードブロックを含み得、前記ファイルシステムモジュールは、前記複数のページのうち、前記記憶装置に前記ディレクトリをインデックスするデントリダイレクトノードブロックに格納されるページをすべて前記記憶装置にフラッシュした後、前記記憶装置に前記ファイルをインデックスするダイレクトノードブロックに格納されるページを前記記憶装置にフラッシュすることができる。
本発明のいくつかの実施形態で、前記ホスト装置は、前記ライトバックキャッシュに格納された複数のページのうち前記記憶装置にフラッシュするページにダーティフラグ(dirty flag)をセットするキャッシュ管理モジュールをさらに含み、前記ファイルシステムモジュールは、前記ライトバックキャッシュに格納された複数のページのうち前記ダーティフラグがセットされたページの比率が予め定めた値以上である場合、前記ダーティフラグがセットされたページを前記記憶装置にフラッシュすることができる。
本発明のいくつかの実施形態で、前記記憶装置はランダムアクセス(random access)方式により書き込まれる第1領域と、順次アクセス(sequential access)方式により書き込まれる第2領域を含み、前記第1特性を有するページと前記第2特性を有するページは前記第2領域に格納される。この際、前記記憶装置で前記第1領域の物理アドレスは前記第2領域の物理アドレスより先行する。
本発明のいくつかの実施形態で、前記複数のページ各々にはファイルまたはディレクトリに関するメタデータが格納され得る。
本発明のいくつかの実施形態で、前記記憶装置はSSD(Static Solid Disk)を含み得る。
前記他の技術的課題を達成するための本発明の一実施形態によるコンピュータシステムのデータ管理方法は、複数のページを提供し、複数のページのうちN(ここで、Nは自然数)個のページを記憶装置にフラッシュすることを含み、N個のページを記憶装置にフラッシュすることは、複数のページのうち第1特性を有するページがM(ここで、M≧Nの自然数)個である場合、N個の第1特性を有するページを記憶装置に第1フラッシュと、複数のページのうち第1特性を有するページがL(ここで、L<Nの自然数)個である場合、第1特性を有するL個のページを記憶装置に第2フラッシュした後、複数のページのうち第1特性と異なる第2特性を有するP(ここで、P=N−Lの自然数)個のページを第3フラッシュすることを含む。
本発明のいくつかの実施形態で、前記第1特性を有するページは、前記記憶装置にノードポインタを含むノードブロックに格納されるページを含み得る。
本発明のいくつかの実施形態で、前記第2特性を有するページは、前記記憶装置にデータポインタを含むノードブロックに格納されるページを含み得る。
本発明のいくつかの実施形態で、前記複数のページは前記記憶装置にフラッシュするページであることを示すダーティフラグがセットされたページとダーティフラグがセットされていないページを含み、前記N個のページを記憶装置にフラッシュすることは、前記ダーティフラグがセットされたN個のページを記憶装置にフラッシュすることを含み得る。
その他実施形態の具体的な内容は詳細な説明及び図面に含まれている。
本発明の一実施形態によるコンピュータシステムを説明するためのブロック図。 図1に図示するホスト装置の例示的なブロック構成図。 ホスト装置を説明するための論理的なモジュール階層図。 図1の記憶装置の格納領域構成を説明するための図。 図1の記憶装置に格納されるデータの構成単位を説明するための図。 図1の記憶装置に格納されるファイルの構造を説明するための図。 図1の記憶装置に格納されるディレクトリの構造を説明するための図。 図1の記憶装置に格納されるブロックの配置を説明するための図。 図1の記憶装置に格納されるブロックの配置を説明するための図。 図1の記憶装置に格納されるブロックの配置を説明するための図。 図1の記憶装置に格納されるブロックの配置を説明するための図。 ノードアドレステーブルを説明するための図。 図1の記憶装置に格納されるデータが更新される過程を説明するための図。 図1の記憶装置に格納されるデータが更新される過程を説明するための図。 本発明の一実施形態によるコンピュータシステムのデータ管理方法を説明するための順序図。 本発明の一実施形態によるコンピュータシステムのデータ管理方法を説明するための図。 本発明の一実施形態によるコンピュータシステムのデータ管理方法を説明するための図。 本発明の一実施形態によるコンピュータシステムのデータ管理方法を説明するための図。 本発明のいくつかの実施形態によるコンピュータシステムの具体的な一例を説明するためのブロック図。 本発明のいくつかの実施形態によるコンピュータシステムの具体的な他の例を説明するためのブロック図。 本発明のいくつかの実施形態によるコンピュータシステムの具体的な他の例を説明するためのブロック図。 本発明のいくつかの実施形態によるコンピュータシステムの具体的な他の例を説明するためのブロック図。
本発明の利点及び特徴、これらを達成する方法は添付する図面と共に詳細に後述する実施形態において明確になるであろう。しかし、本発明は、以下で開示する実施形態に限定されるものではなく、互いに異なる多様な形態で実現されるものであり、本実施形態は、単に本発明の開示を完全にし、本発明が属する技術分野で通常の知識を有する者に発明の範疇を完全に知らせるために提供されるものであり、本発明は、請求項の範囲によってのみ定義される。明細書全体にかけて同一参照符号は同一構成要素を指称し、「及び/または』は言及されたアイテムの各々及び一つ以上のすべての組合せを含む。
一つの素子(elements)が他の素子と「接続された(connected to)」または「カップリングされた(coupled to)」と指称されるものは、他の素子と直接連結またはカップリングされた場合または中間に他の素子を介在する場合をすべて含む。反面、一つの素子が他の素子と「直接接続された(directly connected to)」または「直接カップリングされた(directly coupled to)」と指称されるものは中間に他の素子を介在しないことを示す。「および/または」は、言及されたアイテムの各々および一つ以上のすべての組合せを含む。
例えば、ある一つの構成要素が他の構成要素にデータまたは信号を「伝送、提供、送信または出力」する場合は、前記構成要素は前記他の構成要素に直接前記データまたは信号を「伝送、提供、送信または出力」することができ、少なくとも一つのまた他の構成要素を介して前記データまたは信号を前記他の構成要素に「伝送、提供、送信または出力」することが可能であることを意味する。
第1、第2などが多様な素子、構成要素を叙述するために使用されるが、これら素子、構成要素はこれらの用語によって制限されないことはいうまでもない。これらの用語は、単に一つ構成要素を他の構成要素と区別するために使用するものである。したがって、以下で言及される第1素子、第1構成要素または第1セクションは本発明の技術的思想内で第2素子、第2構成要素、または第2セクションであり得ることは勿論である。
本明細書で使用された用語は、実施例について説明するためであり、本発明を制限しようとするものではない。本明細書で、単数型は特別に言及しない限り複数型も含む。明細書で使用される「含む(comprises及びcomprising)」は言及された構成要素の他、段階、動作及び/または素子は一つ以上の他の構成要素、段階、動作及び/または素子の存在または追加を排除しない。
他に定義されなければ、本明細書で使用されるすべての用語(技術および科学的用語を含む)は、本発明が属する技術分野で通常の知識を有する者が共通に理解できる意味として使用され得る。また一般に使用される辞書に定義されている用語は明白に特別に定義されていない限り理想的にまたは過度に解釈しない。
図1は本発明の一実施形態によるコンピュータシステムを説明するためのブロック図である。
図1を参照すると、本発明の一実施形態によるコンピュータシステム1はホスト装置10と記憶装置20とを含む。
ホスト装置10と記憶装置20とは特定のプロトコル(protocol)を利用して互いにデータを送受信する。例えば、ホスト装置10と記憶装置20は、USB(Universal Serial Bus)プロトコル、MMC(multimedia card)プロトコル、PCI(peripheral component interconnection)プロトコル、PCI−E(PCI−express)プロトコル、ATA(Advanced Technology Attachment)プロトコル、Serial−ATAプロトコル、Parallel−ATAプロトコル、SCSI (small computer small interface)プロトコル、ESDI(enhanced small disk interface)プロトコル、及びIDE(Integrated Drive Electronics)プロトコルなどのような多様なインターフェースプロトコルのうち少なくとも一つにより通信できるが、これに限定されるものではない。
ホスト装置10は記憶装置20をコントロールする。例えば、ホスト装置10は記憶装置20にデータを書き込み(write)したり、記憶装置20からデータを読み込み(read)したりすることができる。
記憶装置20はSSD(Static Solid Disk)、HDD(Hard Disk Drive)、eMMCのような各種カードストレージ、データサーバなどであり得るが、これに限定されない。
図2は、図1に図示するホスト装置の例示的なブロック構成図である。
図2を参照すると、ホスト装置10は記憶装置20に対するデータの書き込みに利用されるライトバックキャッシュ(write−back cache、WB CACHE)104、ライトバックキャッシュ104を管理するキャッシュ管理モジュール102及びファイルシステムモジュール103を含み得る。
図2に図示する各構成要素はソフトウェアまたは、FPGA(field−programmable gate array)やASIC(application−specific integrated circuit)のようなハードウェアを意味する。しかし、前記構成要素はソフトウェアまたはハードウェアに限定される意味ではなく、アドレシング(addressing)できる格納媒体にあるように構成され得、一つまたはそれ以上のプロセッサを実行するように構成され得る。前記構成要素から提供される機能はさらに細分化した構成要素によって実現することができ、複数の構成要素を合わせて特定の機能を遂行する一つの構成要素としても実現できる。
ライトバックキャッシュ104は複数のページを格納できる。本発明のいくつかの実施形態で、このようにライトバックキャッシュ104に格納された複数のページは記憶装置20に格納されていないため、その後記憶装置20にフラッシュする第1ページと、記憶装置20にすでに格納されているため、その後記憶装置20にフラッシュする必要のない第2ページとを含み得る。ここで、ライトバックキャッシュ104内にこのような第2ページが存在するのは、例えば、ライトバックキャッシュ104に格納された該当ページがフラッシュする前にユーザアプリケーション(図3の12を参照)などによってアップデートされたからである。
キャッシュ管理モジュール102はライトバックキャッシュ104に格納された複数のページ各々を管理する。具体的には、キャッシュ管理モジュール102はダーティフラグ(dirty flag)によりライトバックキャッシュ104内の複数のページを前述した第1ページと第2ページとして管理する。さらに具体的には、キャッシュ管理モジュール102はライトバックキャッシュ104に格納された複数のページのうちその後記憶装置20にフラッシュする第1ページにはダーティフラグをセットし、その後記憶装置20にフラッシュする必要のない第2ページにはダーティフラグをセットしないことによって、ライトバックキャッシュ104に格納されたページを前述した第1ページと第2ページととして管理する。
ファイルシステムモジュール103はライトバックキャッシュ104に格納された複数のページのうちこのようにダーティフラグがセットされた第1ページの比率が予め定めた値以上になると、ダーティフラグがセットされた第1ページを記憶装置20にフラッシュする。この際、本実施形態で、ファイルシステムモジュール103は、ライトバックキャッシュ104に格納された複数の第1ページのうち、先に第1特性を有する第1ページをすべて記憶装置20に第1フラッシュした後、第1特性と異なる第2特性を有する第1ページを記憶装置20に第2フラッシュする。このようなファイルシステムモジュール103の詳細動作については図10ないし図13を参照して後述する。
図3を参照してホスト装置10についてより詳しく説明する。図3はホスト装置を説明するための論理的なモジュール階層図である。
図3を参照すると、ホスト装置10はユーザスペース(user space)11とカーネルスペース(kernel space)13とを含む。
ユーザスペース11はユーザアプリケーション(user application)12が実行される領域であり、カーネルスペース13はカーネル実行専用領域である。ユーザスペース11はカーネルスペース13をアクセスするため、カーネルが提供するシステムコール(system call)を利用する。
カーネルスペース13はユーザスペース11のI/Oコール呼び出しを適切にしたファイルシステム16に連結する仮想ファイルシステム14、ホスト装置10のメモリを管理するメモリ管理モジュール15、一つ以上のファイルシステム16、記憶装置20を制御するためのハードウェア制御コールを提供する装置ドライバ18などを含む。
ここで、ファイルシステム16は例えば、ext2、ntfs、smbfs、procなどである。また、本発明によれば、ファイルシステム16のうち一つは、本発明によるログ構造化ファイルシステム基盤のF2FSファイルシステムである。このF2FSファイルシステムについては図4ないし図9Bを参照して後述する。
仮想ファイルシステム14は一つ以上のファイルシステム16が互い相互動作できるようにする。互いに異なるメディアの互いに異なるファイルシステム16に対して読み込み/書き込み作業をするため、標準化システムコールを使用できるようにする。例えば、open()、read()、write()のようなシステムコールは、ファイルシステム16の種類に関係なく使用できる。すなわち、仮想ファイルシステム14はユーザスペース11とファイルシステム16との間に存在する抽象化階層である。
装置ドライバ18は、ハードウェアとユーザアプリケーション(またはオペレーティングシステム)との間のインターフェースを担当する。装置ドライバ18はハードウェアが特定のオペレーティングシステム下で正常に動作するために必要なプログラムである。
一方、図2に図示するファイルシステムモジュール103は前述したF2FSファイルシステムにより動作するものである。また、図2に図示するキャッシュ管理モジュール102は図3に図示する仮想ファイルシステム14またはメモリ管理モジュール15に含まれたサブ−モジュールである。
以下では、前述したF2FSファイルシステムが記憶装置20をどのように制御するかについて図4ないし図9Bを参照して説明する。
図4は、図1の記憶装置の格納領域構成を説明するための図である。
記憶装置20は図4に図示するように第1領域30及び第2領域40を含む。ここで、第1領域30はランダムアクセス(random access)方式により書き込まれる領域であり、第2領域40は順次アクセス(sequential access)方式により書き込みまれる領域である。
順次アクセス方式の書き込みは、記憶装置20内に物理アドレスが順次に増加するブロックに順次にデータを書き込むことであり、ランダムアクセス方式の書き込みはこれと関係がなく指定された物理アドレスを有するブロックにデータを書き込むことである。
F2FSファイルシステムはフォーマット(format)する際、記憶装置20が第1領域30と第2領域40に分けられるが、これに限定されるものではない。第1領域30はシステム全体により管理される各種情報が格納される領域であり、例えば、現在割り当てられたファイル数、有効なページ数、位置などの情報を含む。第2領域40は実際ユーザが使用している各種ディレクトリ情報、データ、ファイル情報などを格納する空間である。
一方、記憶装置20は前述したランダムアクセスに活用されるバッファを備える。このようなバッファが最適で活用されるように、第1領域30は記憶装置20の前部に格納され、第2領域40は記憶装置20の後部に格納される。ここで、前部は後部より物理アドレス(physical address)を基準に前にあることを意味する。
記憶装置20が例えば、SSDである場合、SSD内部にバッファ(buffer)がある。バッファは例えば、読み込み/書き込み速度が速いSLC(Single Layer Cell)メモリである。したがって、このようなバッファは限定された空間のランダムアクセス方式の書き込み速度を速くする。したがって、このようなバッファを活用して第1領域30を記憶装置20の前部に位置させることによってランダムアクセス方式による記憶装置20のI/O速度の低下を防ぐ。
第2領域40はログ領域41及びフリー領域42で構成される。図4において、ログ領域41は連結された一つの領域として図示されているが、セグメントクリーニングの過程でログ領域41に含まれたビクティム(victim)セグメントがフリー領域42に転換することによって連結されていない領域になる場合もある。
ログ領域41はデータがすでに書き込まれた領域であり、フリー領域42はデータが書き込まれる領域である。第2領域40は順次アクセス方式により書き込まれるため、データはログ領域41の最後に位置するフリー領域に書き込まれる。
ログ領域41にすでに格納されたデータが修正される際も、修正後のデータはすでに格納されたログ領域41内ではなく、ログ領域41の最後に位置するフリー領域42に書き込まれる。この際、すでに格納されたデータは無効データとなる。
図5は、図1の記憶装置に格納されるデータの構成単位を説明するための図である。
セグメント(SEGMENT)53は多数のブロック(BLK)51を含み、セクション(SECTION)55は多数のセグメント53を含み、ゾーン(ZONE)57は多数のセクション55を含む。例えば、ブロック51は4Kbyteであり、セグメント53は512個のブロック51を含み、2M byteである。このような構成は、記憶装置20のフォーマット時点で決定されるが、これに限定されるものではない。セクション55とゾーン57のサイズはフォーマット時点で修正され得る。F2FSファイルシステムはすべてのデータを4Kbyteのページ単位で読み込み/書き込みすることができる。すなわち、ブロック51に一つのページが格納され、セグメント53に多数のページが格納される。
一方、記憶装置20に格納されるファイルは図6Aに図示するように、インデクス構造(indexing structure)を有する。
図6Aは、図1の記憶装置に格納されるファイルの構造を説明するための図である。
一つのファイルはファイルデータと、ファイルデータに関するメタデータとで構成されるが、データブロック70はこのようなファイルデータを格納する部分であり、ノードブロック(80、81〜88、91〜95)はこのようなメタデータを格納する部分である。
ノードブロック(80、81〜88、91〜95)はダイレクトノードブロック(fiel direct node block)81〜88、インダイレクトノードブロック(file indirect node block)91〜95、iノードブロック(ifle inode block)80を含む。F2FSファイルシステムで、一つのファイルは一つのiノードブロック80を有する。
ダイレクトノードブロック81〜88は、iノードブロック80の識別子及びデータブロック70を直接示すデータポインタ(data pointer)をダイレクトノードブロック81〜88の子ブロックであるデータブロック70の個数分だけ含む。ダイレクトノードブロック81〜88は各データブロック70が、iノードブロック80に対応するファイル内で何番目のブロックであるかに関する情報、すなわちブロックのオフセット情報をさらに格納する。
インダイレクトノードブロック91〜95は、ダイレクトノードブロック81〜88または他のインダイレクトノードブロック91〜95を示すポインタを含む。インダイレクトノードブロック91〜95は例えば、第1インダイレクトノードブロック91〜94、第2インダイレクトノードブロック95などを含む。第1インダイレクトノードブロック91〜94はダイレクトノードブロック83〜88を示す第1ノードポインタを含む。第2インダイレクトノードブロック95は第1インダイレクトノードブロック93、94を示す第2ノードポインタを含む。
iノードブロック80はデータポインタ、ダイレクトノードブロック81、82を指す第1ノードポインタ、第1インダイレクトノードブロック91、92を指す第2ノードポインタ、第2インダイレクトノードブロック95を指す第3ノードポインタのうち少なくとも一つを含む。
一つのファイルは例えば、最大3Tbyteであり得、このような大容量のファイルは次のようなインデックス構造を有する。例えば、iノードブロック80内のデータポインタは994個であり、994個のデータポインタ各々は994個のデータブロック70各々を指す。第1ノードポインタは2個であり、2個の第1ノードポインタ各々は2個のダイレクトノードブロック81、82を指す。第2ノードポインタは2個であり、2個の第2ノードポインタ各々は2個の第1インダイレクトノードブロック91、92を指す。第3ノードポインタは1個であり、第2インダイレクトノードブロック95を指す。
一方、記憶装置20に格納されるディレクトリは図6Bに図示するようにインデクス構造(indexing structure)を有する。
図6Bは、図1の記憶装置に格納されるディレクトリの構造を説明するための図である。
一つのディレクトリは多数のファイルリストと、多数のファイルリストと関連する多数のノードを含む。ファイルブロック100はファイルリストに関する情報を格納する部分であり、ノードブロック110、111〜112、121はファイルブロック100に対するメタデータを格納する部分である。
ノードブロック110、111〜112、121は、デントリダイレクトノードブロック(dentry direct node block)(111〜112)、デントリインダイレクトノードブロック(dentry indirect node block)121、デントリiノードブロック(dentry indirect node block)110を含む。F2FSファイルシステムで、一つのディレクトリは一つのデントリiノードブロック110を有する。デントリダイレクトノードブロック(111〜112)、デントリインダイレクトノードブロック121、デントリiノードブロック110間の関係に係る説明は図6Aを参照して説明したファイルのダイレクトノードブロック81〜88、インダイレクトノードブロック91〜95、iノードブロック80と同じであるため、重複する説明は省略する。
図7Aないし7Dは、図1の記憶装置に格納されるブロックの配置を説明するための図である。図8は、ノードアドレステーブルを説明するための図である。
ここで、図7Aないし7Dは、本発明のいくつかの実施形態によって、F2FSファイルシステムが構成する記憶装置20の格納領域の構成をさらに詳細に図示する。
先ず、一実施形態によれば、F2FSファイルシステムは、記憶装置20の格納領域をランダムアクセス方式の第1領域30及び順次アクセス方式の第2領域40を含むように図7Aに図示するように構成できる。
具体的には、第1領域30はスーパーブロック61、62、チェックポイント領域(CheckPoint area、CP)63、セグメント情報テーブル(Segment Information Table、SIT)64、ノードアドレステーブル(Node Address Table、NAT)65、セグメント要約領域(Segment Summary Area、SSA)66などを含む。
先ず、スーパーブロック61、62には、ファイルシステム16のデフォルト情報が格納される。例えば、ブロック51のサイズ、ブロック51の数、ファイルシステム16の状態フラグ(clean、stable、active、logging、unknown)などが格納される。図示するように、スーパーブロック61、62は2個であり得、各々には同一な内容が格納される。したがって、二つのうち何れか一つに問題が発生しても、他の一つを利用することができる。
チェックポイント領域63はチェックポイントを格納する。チェックポイントは論理割り込みであって、このような割り込み点までの状態が完全に保存される。コンピュータシステムの動作中に事故(例えば、シャットダウン(shutdown))が発生すると、ファイルシステム16は保存されたチェックポイントを利用してデータを復旧できる。このようなチェックポイントの生成時点は、例えば、周期的に生成、アンマウント(Umount)時点、システムの停止(System shutdown)時点などであるが、これに限定されるものではない。
図8に図示するように、ノードアドレステーブル65はノード各々に対応する多数のノード識別子(NODE ID)と、多数のノード識別子各々に対応する多数の物理アドレス(physical address)を含む。例えば、ノード識別子N0に対応するノードブロックは物理アドレスaに対応し、ノード識別子N1に対応するノードブロックは物理アドレスbに対応し、ノード識別子N2に対応するノードブロックは物理アドレスcに対応する。すべてのノード(iノード、ダイレクトノード、インダイレクトノードなど)は各々固有のノード識別子を有する。言い換えると、すべてのノード(iノード、ダイレクトノード、インダイレクトノードなど)はノードアドレステーブル65から固有のノード識別子を割り当てられる。ノードアドレステーブル65はiノードのノード識別子、ダイレクトノードのノード識別子及びインダイレクトノードのノード識別子などを格納する。各ノード識別子に対応する各物理アドレスはアップデートされ得る。
セグメント情報テーブル(Segment Information Table)64は各セグメント内に含まれたライブブロックの個数と、各ブロックがライブブロックであるかどうかを示すビットマップを含む。ビットマップを構成する各ビットは対応する各ブロックがライブブロックであるかどうかを示す。セグメント情報テーブル64はセグメントクリーニング作業で使用される。すなわち、ファイルシステムモジュール103はビクティムセグメント内に含まれたライブブロックを識別するため、セグメント情報テーブル64に含まれたビットマップを参照する。
セグメント要約領域(Segment Summary Area)66は第2領域40の各セグメントに含まれた各ブロックが属する親ノードの識別子を記述する。
ダイレクトノードブロック81〜88は、自身の子ブロックであるデータブロック70にアクセスするため、各データブロック70のアドレス情報を有する。反面、インダイレクトノードブロック91〜95は自身の子ノードブロックにアクセスするため、自身の各子ノードの識別子リストを有する。特定ノードブロックの識別子を確認すると、ノードアドレステーブル65を参照してその物理アドレスも確認することが出来る。
一方、ログ構造化ファイルシステムではデータブロックに書き込まれたデータを既存の格納位置で他の値に上書き(overwrite)せず、ログの最後に更新されたデータを有する新たなデータブロックを書き込む方法を取る。したがって、既存データブロックの親ノードブロックもデータブロックに対するアドレスを修正しなければならない。したがって、特定データブロックを上書きするか、またはセグメントクリーニング段階でログの最後にライトバックする場合、そのデータブロックの親ノードに対する情報が必要である。しかし、各データブロックまたは各ノードブロックは自身の親ノードに対する情報を確認することができない。したがって、本発明によるF2FSファイルシステムは各データブロックまたは各ノードブロックが自身の親ノードブロックの識別子を確認できるインデックス(index)が記載されたセグメント要約領域66を設け、データブロックまたはノードブロックが親ノードブロックの識別子を簡単に確認できるようにする。
一つのセグメント要約ブロックは、第2領域40に位置する一つのセグメントに対する情報を有している。また、セグメント要約ブロックは多数の要約情報で構成されており、一つの要約情報は一つのデータブロックまたは一つのノードブロックに対応する。
第2領域40は図7Aに図示するように、互いに分離されたデータセグメント(data segment)(DS0、DS1)とノードセグメント(node segment)(NS0、NS1)を含む。多数のデータはデータセグメント(DS0、DS1)に格納され、多数のノードはノードセグメント(NS0、NS1)に格納される。データとノードが分離する領域が互いに異なると、効率的にセグメントを管理することができ、データを読み込む際、より効果的でかつ単時間に読み込みすることができる。
図面では、第1領域30はスーパーブロック61、62、チェックポイント領域63、セグメント情報テーブル64、ノードアドレステーブル65、セグメント要約領域66順序になっているが、これに限定されるものではない。例えば、セグメント情報テーブル64とノードアドレステーブル65の位置が変わってもよく、ノードアドレステーブル65とセグメント要約領域66の位置が変わってもよい。
一方、F2FSファイルシステムは記憶装置20の格納領域を図7Bに図示するように構成してもよい。図7Bを参照すると、本発明の他の実施形態によるコンピュータシステムの記憶装置で、第2領域40は互いに分離された多数のセグメント(S1〜Sn、ただし、nは自然数)を含む。各セグメント(S1〜Sn)には、データとノードとを区分せず格納される点で、データセグメントとノードセグメントを別途管理する図7Aと異なる。
また、F2FSファイルシステムは記憶装置20の格納領域を図7Cに図示するように構成してもよい。図7Cを参照すると、第1領域30はセグメント要約領域(図7Aの66を参照)を含まない。すなわち、第1領域30はスーパーブロック61、62、チェックポイント領域63、セグメント情報テーブル64、ノードアドレステーブル65を含む。その代わりに、セグメント要約情報は第2領域40内に格納される。具体的には、第2領域40は多数のセグメントS0〜Snを含み、各セグメントS0〜Snは多数のブロックに区分される。各セグメントS0〜Snの少なくとも一つのブロックSS0〜SSnにセグメント要約情報が格納される。
また、F2FSファイルシステムは記憶装置20の格納領域を図7Dに図示するように構成してもよい。図7Dを参照すると、図7Cと同様に、第1領域30はセグメント要約領域(図7Aの66を参照)を含まない。すなわち、第1領域30はスーパーブロック61、62、チェックポイント領域63、セグメント情報テーブル64、ノードアドレステーブル65を含む。セグメント要約情報は第2領域40内に格納される。第2領域40は多数のセグメント53を含み、各セグメント53は多数のブロック(BLK0〜BLKm)に区分され、各ブロック(BLK0〜BLKm)はOOB(Out Of Band)(OOB1〜OOBm、ただし、mは自然数)領域を含む。OOB領域(OOB1〜OOBm)にセグメント要約情報を格納する。
次に、図9A及び図9Bを参照して本実施形態によるF2FSファイルシステムがデータ更新作業を行うことについて説明する。
図9Aないし9Bは、図1の記憶装置に格納されるデータが更新される過程を説明するための図である。
図9Aはデータ更新前にFILE 0が「ABC」というデータを格納していることを図示し、図9Bは、アプリケーションがFILE 0に対する「ADC」への更新を命令することによって、FILE 0が「ADC」というデータを格納することを図示する。
F2FSはFILE 0を図6Aに図示する形態のようにノード及びデータブロックを構成し、図9A及び図9Bでは説明の便宜上、iノードが一つのダイレクトノードN0を指し、ダイレクトノードN0は三つのデータブロックを指すものとしてFILE 0が構成されると仮定して説明する。
先ず、図9Aを参照すると、ログ領域41内の第1データ セグメントDS0は第1ないし3データブロック(BLK 0、BLK 1、BLK 2)を含む。第1データブロックBLK 0には「A」、第2データブロックBLK 1には「B」、第3データブロックBLK 2には「C」が各々格納されると仮定する。しかし、これは説明の便宜上このように仮定したものであって、本発明の他のいくつかの実施形態では、図9Aに図示するものとは別に第1データセグメントDS0は第1ないし3データブロックだけではなく、さらに多くのデータブロックを含み得る。
ログ領域41内の第1ノード セグメント(NS0)にダイレクトノードN0ブロックが含まれる。ダイレクトノードN0ブロックには少なくともノードの識別子N0、第1ないし3データブロックに対する物理アドレス情報が格納される。図9Aに図示するように、ダイレクトノードN0ブロックの物理アドレスは「a」である。
一方、NATにはダイレクトノードブロックの識別子のN0とN0の物理アドレスの「a」が格納される。
図9Bを参照してデータが更新されたFILE 0の構成について説明する。
アプリケーションはFILE 0の「ABC」を「ADC」に更新することを命令したので、「B」を格納する第2データブロックBLK 1が更新されなければならない。F2FSファイルシステムは、第2データブロックBLK 1に格納されている「B」を「D」に更新する代わりに、「D」を格納する新規の第4データブロックBLK 3をログ領域41の最後に位置した第2データセグメントDS1に格納する。すなわち、更新後のFILE 0は第0データブロックBLK 0、第4データブロックBLK 3及び第2データブロックBLK 2で構成される。これによって、ダイレクトノードN0ブロックも2番目データブロックを指す物理アドレス情報が第4データブロックの物理アドレス情報に更新されなければならない。F2FSファイルシステムは、既に格納されていたノードN0の子ブロック物理アドレス情報を更新する代わりに、第0データブロックBLK 0、第4データブロックBLK 3及び第2データブロックBLK 2の物理アドレス情報を子ブロックのアドレス情報に有するが、ノード識別子はN0と同一の新たなノードブロックを生成する。新たなノードブロックはログ領域41の最後に位置する第2ノードセグメントに含まれる。
ノードブロックN0の物理アドレスは「a」から「f」に変わる。従来のログ構造化ファイルシステムによれば、ノードブロックN0の親ノードのインダイレクトノードに含まれたノードブロックN0の物理アドレス情報も修正されなければならない。また、インダイレクトノードも新たなノードブロックに書き込まれるため、ノードブロックの更新作業は親ノードブロックとしてiノードに至るときまで継続して転移する。このような問題を「wandering tree」問題という。Wandering tree問題は過度にノードが新しく書き込まれるようにするため、順次アクセス書き込みの書き込み効率化の効果が低下する。
本発明によるF2FSファイルシステムはデータブロックの更新によって、ダイレクトノードブロックが新しく書き込まれる場合、ノードアドレステーブル65内でダイレクトノードに対応する物理アドレスを修正すればよく(「a」から「f」に)、ノードブロックの更新作業はダイレクトノード以上に転移しない。したがって、本発明によるF2FSファイルシステムは従来のログ構造化ファイルシステムで発生するwandering tree問題を解決する。
以下、図10ないし図13を参照して本発明の一実施形態によるコンピュータシステムのデータ管理方法について説明する。
図10は、本発明の一実施形態によるコンピュータシステムのデータ管理方法を説明するための順序図である。図11ないし図13は、本発明の一実施形態によるコンピュータシステムのデータ管理方法を説明するための図である。
先ず、図10を参照すると、N(ここで、Nは自然数)個のダーティーページに対するフラッシュを要請する(S100)。具体的には、ファイルシステムモジュール(図2の103)はライトバックキャッシュ(図2の104を参照)に格納された複数のページのうちダーティフラグがセットされたページの比率が予め定めた値以上になると、ダーティフラグがセットされたページN個を記憶装置(図1の20を参照)にフラッシュすることを要請する。
ここでは、説明の便宜上、ダーティフラグがセットされたページ5個に対して記憶装置(図1の20を参照)にフラッシュすることが要請された場合、ライトバックキャッシュ104には第1ないし第10ページP1〜P10が格納されていると仮定して続いて説明する。ここで、説明の便宜上、図11は、10個のページP1〜P10がライトバックキャッシュ140に格納されているものを図示するが、ライトバックキャッシュ140に格納されるページの数はいくらでも変形できる。
一方、本発明のいくつかの実施形態で、ライトバックキャッシュ104にこのように格納された第1ないし第10ページP1〜P10はファイルまたはディレクトリに関するメタデータである。すなわち、本発明のいくつかの実施形態で、ファイルシステムモジュール(図2の103を参照)はユーザアプリケーション(図3の12を参照)が格納しようとするファイルの内容であるファイルデータと、ファイルまたはディレクトリに関するメタデータを互いに区分し、記憶装置20にフラッシュすることができ、図11は、その中のファイルまたはディレクトリに関するメタデータがフラッシュする場合を図示するものである。
しかし、本発明がこれに制限されるものではなく、本発明の他のいくつかの実施形態で、ファイルシステムモジュール(図2の103を参照)はユーザアプリケーション(図3の12を参照)が格納しようとするファイルの内容のファイルデータと、ファイルまたはディレクトリに関するメタデータを互いに区分せず、記憶装置20にフラッシュすることもできる。この場合、図11に図示するライトバックキャッシュ104には図示するものとは異なってファイルデータとメタデータとが混在して格納され得る。
再び、図11を参照すると、第1ないし第3ページP1〜P3、第5ページP5、第7ページP7、および第9及び第10ページP9、P10は、ダーティフラグがセットされたダーティーページであるため、現在時点で記憶装置20にフラッシュするページであることが分かり、、第4ページP4、第6ページP6、第8ページP8は、ダーティフラグがセットされていないため、現在時点で記憶装置20にフラッシュする必要のないページであることが分かる。このように第4ページP4、第6ページP6、第8ページP8にダーティフラグがセットされていないことは、フラッシュが遂行される時点前にこのようなページP4、P6、P8に対するアップデートが行われたからであることは前述した。
一方、第1ページP1及び第8ページP8は、記憶装置20にデントリインダイレクトノードブロック(図6Bの121を参照)に格納されるページであり、第5ページP5及び第9ページP9は記憶装置20にデントリダイレクトノードブロック(図6Bの111〜112を参照)に格納されるページであり、第2ページP2及び第4ページP4は記憶装置20にインダイレクトノードブロック(図6Aの91〜95を参照)に格納されるページであり、第3ページP3、第6ページP6、第7ページP7、第10ページP10は記憶装置20にダイレクトノードブロック(図6Aの81〜88を参照)に格納されるページである。
次に、図10を参照すると、記憶装置にファイルをインデックスするインダイレクトノードブロックとディレクトリをインデックスするデントリインダイレクトノードブロックに格納されるページを記憶装置にフラッシュする(S110)。
前述した例で、ファイルシステムモジュール(図2の103を参照)は、図11に図示するように、第1ページP1と第2ページP2を記憶装置20のフリー領域42にフラッシュする。この際、第4ページP4と第8ページP8は記憶装置20に各々インダイレクトノードブロック(図6Aの91〜95を参照)とデントリインダイレクトノードブロック(図6Bの121を参照)に格納されるページであるが、ダーティーページではないので、記憶装置20にフラッシュしない。
次に、図10を参照すると、前記S110を行った後、要請したN個のページがすべてフラッシュしたのかを確認する(S120)。前述した例ではファイルシステムモジュール(図2の103を参照)が5個のページをフラッシュすることを要請したが、前記S110で2個のページP1、P2のみが記憶装置20にフラッシュされたので、次の段階に進む。
次に、図10を参照すると、記憶装置にディレクトリをインデックスするダイレクトノードブロックに格納されるページを記憶装置にフラッシュする(S130)。
前述した例で、ファイルシステムモジュール(図2の103を参照)は、図12に図示するように、第5ページP5と第9ページP9を記憶装置20のフリー領域42にフラッシュする。ここで、記憶装置20のフリー領域42は順次アクセス方式により書き込まれる領域であるため、第5ページP5と第9ページP9は図示するように順次に増加する物理アドレスを有するブロックにフラッシュする。
次に、図10を参照すると、前記S130を行った後、要請したN個のページがすべてフラッシュしたのかを確認する(S140)。前述した例では、ファイルシステムモジュール(図2の103を参照)が5個のページをフラッシュすることを要請したが、前記S130まで行う間、4個のページ(P1、P2、P5、P9)が記憶装置20にフラッシュされたので、次の段階に進む。
次に、図10を参照すると、記憶装置にファイルをインデックスするダイレクトノードブロックに格納されるページを記憶装置にフラッシュする(S150)。
前述した例で、ファイルシステムモジュール(図2の103を参照)は、図13に図示するように、第3ページP3を記憶装置20のフリー領域42にフラッシュする。この際、第7ページP7と第10ページP10はすでに最初に要請した5個のページが記憶装置20にフラッシュされたので、これ以上記憶装置20にフラッシュされない。
記憶装置(図1の20を参照)に格納されるメタデータはホスト10によって頻繁にアップデートされる特性を有する。そして、このようなメタデータ中でもデータブロック(図6Aの70を参照)を直接指すダイレクトノードブロック(図6Aの81〜88を参照)はファイルブロック(図6Bの100を参照)を直接指すデントリダイレクトノードブロック(図6Bの111〜112を参照)よりアップデートが頻繁に行われ、デントリダイレクトノードブロック(図6Bの111〜112を参照)はダイレクトノードブロック(図6Aの81〜88を参照)を指すインダイレクトノードブロック(図6Aの91〜95を参照)であるが、デントリダイレクトノードブロック(図6Bの111〜112を参照)を指すデントリインダイレクトノードブロック(図6Bの121を参照)よりアップデートが頻繁に行われる。
したがって、ライトバックキャッシュ(図2の104を参照)に格納されたページを記憶装置(図1の20を参照)にフラッシュする際、このような特性を考慮し、アップデートが頻繁に行われるページが記憶装置(図1の20を参照)にフラッシュすることを極力遅らせる場合、ページがアップデートされることによる不要な書き込み動作を減らせ、システムの動作性能が改善される。
図14は、本発明のいくつかの実施形態によるコンピュータシステムの具体的な一例を説明するためのブロック図である。
図14を参照すると、ホストサーバ300はネットワーク320を介して多数のデータベースサーバ330、340、350、360と接続されている。ホストサーバ300内に、データベースサーバ330、340、350、360のデータを管理するためのファイルシステム316を設ける。ファイルシステム316は図1ないし図13を参照して説明したファイルシステムのうち何れか一つである。
図15ないし図17は、本発明のいくつかの実施形態によるコンピュータシステムの具体的な他の例を説明するためのブロック図である。
先ず、図15を参照すると、記憶装置100(図1の20に対応する)は不揮発性メモリ装置1100及びコントローラ1200を含む。
ここで、不揮発性メモリ装置1100には、前述したスーパーブロック61、62、チェックポイント領域63、セグメント情報テーブル64、ノードアドレステーブル65などが格納されている。
コントローラ1200は、ホスト及び不揮発性メモリ装置1100に接続する。ホスト(Host)からの要請に応答してコントローラ1200は不揮発性メモリ装置1100をアクセスするように構成される。例えば、コントローラ1200は不揮発性メモリ装置1100の読み込み、書き込み、削除、及びバックグラウンド(background)動作を制御するように構成される。コントローラ1200は不揮発性メモリ装置1100及びホストとの間にインターフェースを提供するように構成される。コントローラ1200は不揮発性メモリ装置1100を制御するためのファームウェア(firmware)を駆動するように構成される。
例示的には、コントローラ1200はRAM(RAM、Random Access Memory)、プロセシングユニット(processing unit)、ホストインターフェース(host interface)、及びメモリインターフェース(memory interface)のようなよく知られている構成要素をさらに含む。RAMは、プロセシングユニットの動作メモリ、不揮発性メモリ装置1100とホストとの間のキャッシュメモリ、そして不揮発性メモリ装置1100とホストとの間のバッファメモリのうち少なくとも一つとして利用される。プロセシングユニットはコントローラ1200の諸般動作を制御する。
コントローラ1200及び不揮発性メモリ装置1100は一つの半導体装置に集積される。例示的には、コントローラ1200及び不揮発性メモリ装置1100は一つの半導体装置に集積され、メモリカードを構成する。例えば、コントローラ1200及び不揮発性メモリ装置1100は一つの半導体装置に集積され、PCカード(PCMCIA、personal computer memory card international association)、コンパクトフラッシュ(登録商標)カード(CF)、スマートメディアカード(SM、SMC)、メモリスティック、マルチメディアカード(MMC、RS−MMC、MMCmicro)、SDカード(SD、miniSD、microSD、SDHC)、ユニバーザルフラッシュ記憶装置(UFS)などのようなメモリカードを構成する。
コントローラ1200及び不揮発性メモリ装置1100は一つの半導体装置に集積されSSD(Solid State Drive)を構成する。SSDは半導体メモリにデータを格納するように構成される格納装置を備える。システム1000が半導体ドライブSSDとして利用される場合、システム1000に接続されたホストの動作速度は画期的に改善される。
他の例として、システム1000はコンピュータ、UMPC(Ultra MobilePC)、ワークステーション、ネットブック(net−book)、PDA(Personal Digital Assistants)、ポータブル(portable)コンピュータ、ウェブタブレット(web tablet)、無線電話機(wireless phone)、モバイルフォン(mobile phone)、スマートフォン(smart phone)、e−ブック(e−book)、PMP(portable multimedia player)、携帯用ゲーム機、ナビゲーション(navigation)装置、ブラックボックス(black box)、デジタルカメラ(digital camera)、3次元テレビ(3−dimensional television)、デジタルオーディオレコーダ(digital audio recorder)、デジタルオーディオプレーヤ(digital audio player)、デジタル画像レコーダ(digital picture recorder)、デジタル画像プレーヤ(digital picture player)、デジタル動画レコーダ(digital video recorder)、デジタル動画プレーヤ(digital video player)、情報を無線環境で送受信できる装置、ホームネットワークを構成する多様な電子装置のうち一つ、コンピューターネットワークを構成する多様な電子装置のうち一つ、テレマティクスネットワークを構成する多様な電子装置のうち一つ、RFID装置、またはコンピュータシステムを構成する多様な構成要素のうち一つなどのような電子装置の多様な構成要素のうち一つとして提供される。
例示的には、不揮発性メモリ装置1100またはシステム1000は多様な形態のパッケージで実装される。例えば、不揮発性メモリ装置1100またはシステム1000は Package on Package(PoP)、Ball grid arrays(BGAs)、Chip scale packages(CSPs)、Plastic Leaded Chip Carrier(PLCC)、Plastic Dual In Line Package(PDIP)、Die in Waffle Pack、Die in Wafer Form、Chip On Board(COB)、Ceramic Dual In Line Package(CERDIP)、Plastic Metric Quad Flat Pack(MQFP)、Thin Quad Flatpack(TQFP)、Small Outline(SOIC)、Shrink Small Outline Package(SSOP)、Thin Small Outline(TSOP)、Thin Quad Flatpack(TQFP)、System In Package(SIP)、Multi Chip Package(MCP)、Wafer−level Fabricated Package(WFP)、Wafer−Level Processed Stack Package(WSP)などのような方式でパッケージ化して実装される。
次いで、図16を参照すると、システム2000は不揮発性メモリ装置2100及びコントローラ2200を含む。不揮発性メモリ装置2100は複数の不揮発性メモリチップを含む。複数の不揮発性メモリチップは複数のグループに分割される。複数の不揮発性メモリチップの各グループは一つの共通チャンネルを介してコントローラ2200と通信するように構成される。例えば、複数の不揮発性メモリチップは第1ないし第kチャンネル(CH1〜CHk)を介してコントローラ2200と通信することを図示している。
図16では、一つのチャンネルに複数の不揮発性メモリチップが接続するものとして図示している。しかし、一つのチャンネルに一つの不揮発性メモリチップが接続するようにシステム2000が変形できることが分かるであろう。
次いで、図17を参照すると、システム3000は、中央処理装置3100、RAM(Random Access Memory)3200、ユーザインターフェース3300、電源3400、及び図16のシステム2000を含む。
システム2000は、システムバス3500を介して中央処理処置3100、RAM3200、ユーザインターフェース3300、及び電源3400に電気的に接続する。ユーザインターフェース3300を介して提供されたり、中央処理装置3100によって処理されたデータはシステム2000に格納される。
図17は、不揮発性メモリ装置2100はコントローラ2200を介してシステムバス3500に接続するものとして図示する。しかし、不揮発性メモリ装置2100はシステムバス3500に直接接続するように構成され得る。
以上添付する図面を参照して本発明の実施形態について説明したが、本発明が属する技術分野で通常の知識を有する者は、本発明がその技術的思想や必須の特徴を変更しない範囲で他の具体的な形態で実施され得るということを理解できる。したがって、上記実施形態はすべての面で例示的なものであり、限定的なものではないと理解しなければならない。
10 ホスト
14 仮想ファイルシステム
16 ファイルシステム
18 装置ドライバ
20 記憶装置
102 キャッシュ管理モジュール
103 ファイルシステムモジュール
104 ライトバックキャッシュ

Claims (10)

  1. 記憶装置と、
    前記記憶装置に複数のページをフラッシュするホスト装置とを備え、
    前記ホスト装置は、
    前記複数のページを格納するライトバックキャッシュと、
    前記ライトバックキャッシュに格納された複数のページのうち、第1特性を有するページをすべて前記記憶装置にフラッシュした後、前記第1特性と異なる第2特性を有するページを前記記憶装置にフラッシュするファイルシステムモジュールとを備えるコンピュータシステム。
  2. 前記第1特性を有するページは、前記記憶装置にインダイレクトノードブロックに格納されるページを含む請求項1に記載のコンピュータシステム。
  3. 前記インダイレクトノードブロックは、ファイルをインデックスするインダイレクトノードブロックとディレクトリをインデックスするデントリインダイレクトノードブロックとを含む請求項2に記載のコンピュータシステム。
  4. 前記第2特性を有するページは、前記記憶装置にダイレクトノードブロックに格納されるページを含む請求項2に記載のコンピュータシステム。
  5. 前記ダイレクトノードブロックはファイルをインデックスするダイレクトノードブロックとディレクトリをインデックスするデントリダイレクトノードブロックとを含む請求項4に記載のコンピュータシステム。
  6. 前記ファイルシステムモジュールは、
    前記複数のページのうち、前記記憶装置に前記ディレクトリをインデックスするデントリダイレクトノードブロックに格納されるページをすべて前記記憶装置にフラッシュした後、前記記憶装置に前記ファイルをインデックスするダイレクトノードブロックに格納されるページを前記記憶装置にフラッシュする請求項5に記載のコンピュータシステム。
  7. 前記ホスト装置は、
    前記ライトバックキャッシュに格納された複数のページのうち前記記憶装置にフラッシュするページにダーティフラグをセットするキャッシュ管理モジュールをさらに備え、
    前記ファイルシステムモジュールは、
    前記ライトバックキャッシュに格納された複数のページのうち前記ダーティフラグがセットされたページの比率が予め定めた値以上である場合、前記ダーティフラグがセットされたページを前記記憶装置にフラッシュする請求項1に記載のコンピュータシステム。
  8. 複数のページを提供し、
    前記複数のページのうちN(ここで、Nは自然数)個のページを記憶装置にフラッシュすることを含み、
    前記N個のページを記憶装置にフラッシュすることは、
    前記複数のページのうち第1特性を有するページがM(ここで、M≧Nの自然数)個である場合、前記N個の第1特性を有するページを前記記憶装置に第1フラッシュし、
    前記複数のページのうち第1特性を有するページがL(ここで、L<Nの自然数)個である場合、前記第1特性を有するL個のページを前記記憶装置に第2フラッシュした後、前記複数のページのうち前記第1特性と異なる第2特性を有するP(ここで、P=N−Lの自然数)個のページを第3フラッシュすることを含むコンピュータシステムのデータ管理方法。
  9. 前記第1特性を有するページは、前記記憶装置にノードポインタを含むノードブロックに格納されるページを含む請求項8に記載のコンピュータシステムのデータ管理方法。
  10. 前記第2特性を有するページは、前記記憶装置にデータポインタを含むノードブロックに格納されるページを含む請求項12に記載のコンピュータシステムのデータ管理方法。
JP2013202185A 2012-09-28 2013-09-27 コンピュータシステム及びコンピュータシステムのデータ管理方法 Pending JP2014071904A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2012-0109192 2012-09-28
KR1020120109192A KR20140042431A (ko) 2012-09-28 2012-09-28 컴퓨팅 시스템 및 컴퓨팅 시스템의 데이터 관리 방법

Publications (1)

Publication Number Publication Date
JP2014071904A true JP2014071904A (ja) 2014-04-21

Family

ID=50386344

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013202185A Pending JP2014071904A (ja) 2012-09-28 2013-09-27 コンピュータシステム及びコンピュータシステムのデータ管理方法

Country Status (3)

Country Link
US (1) US20140095771A1 (ja)
JP (1) JP2014071904A (ja)
KR (1) KR20140042431A (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101478168B1 (ko) * 2013-04-17 2014-12-31 주식회사 디에이아이오 스토리지 시스템 및 스토리지 시스템의 쓰기 데이터 처리 방법
US9734066B1 (en) * 2014-05-22 2017-08-15 Sk Hynix Memory Solutions Inc. Workload-based adjustable cache size
US9760145B2 (en) * 2015-05-19 2017-09-12 Advanced Micro Devices, Inc. Saving the architectural state of a computing device using sectors
US9778879B2 (en) 2015-10-23 2017-10-03 Microsoft Technology Licensing, Llc Flushless transactional layer
US9811471B2 (en) 2016-03-08 2017-11-07 Dell Products, L.P. Programmable cache size via class of service cache allocation
US10256981B2 (en) * 2016-09-27 2019-04-09 International Business Machines Corporation Secure logging for host security module

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030120869A1 (en) * 2001-12-26 2003-06-26 Lee Edward K. Write-back disk cache management
US7363540B2 (en) * 2002-10-22 2008-04-22 Microsoft Corporation Transaction-safe FAT file system improvements
US7457822B1 (en) * 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
US7636814B1 (en) * 2005-04-28 2009-12-22 Symantec Operating Corporation System and method for asynchronous reads of old data blocks updated through a write-back cache
US8549252B2 (en) * 2005-12-13 2013-10-01 Emc Corporation File based volumes and file systems
US8046422B2 (en) * 2006-08-21 2011-10-25 Netapp, Inc. Automatic load spreading in a clustered network storage system
US8549222B1 (en) * 2008-02-12 2013-10-01 Netapp, Inc. Cache-based storage system architecture
US8762642B2 (en) * 2009-01-30 2014-06-24 Twinstrata Inc System and method for secure and reliable multi-cloud data replication
US20100199036A1 (en) * 2009-02-02 2010-08-05 Atrato, Inc. Systems and methods for block-level management of tiered storage
WO2011003460A1 (en) * 2009-07-10 2011-01-13 Tomtom International B.V. Data storage system and method
US8799367B1 (en) * 2009-10-30 2014-08-05 Netapp, Inc. Using logical block addresses with generation numbers as data fingerprints for network deduplication
US8402226B1 (en) * 2010-06-18 2013-03-19 Emc Corporation Rate proportional cache write-back in a storage server
JP5699712B2 (ja) * 2011-03-17 2015-04-15 ソニー株式会社 メモリ制御装置、メモリ装置、メモリ制御方法、及びプログラム
US8661068B1 (en) * 2011-09-29 2014-02-25 Emc Corporation Managing global metadata caches in data storage systems
US20130242425A1 (en) * 2012-03-16 2013-09-19 Toshiba America Electronics Components, Inc. Write reordering in a hybrid disk drive

Also Published As

Publication number Publication date
US20140095771A1 (en) 2014-04-03
KR20140042431A (ko) 2014-04-07

Similar Documents

Publication Publication Date Title
KR102002830B1 (ko) 세그먼트 클리닝 장치 및 방법
JP6343438B2 (ja) コンピュータシステム及びコンピュータシステムのデータ管理方法
KR101977575B1 (ko) 디렉토리 엔트리 조회 장치, 그 방법 및 디렉토리 엔트리 조회 프로그램이 기록된 기록 매체
US9323772B2 (en) Segment group-based segment cleaning apparatus and methods for storage units
KR102050723B1 (ko) 컴퓨팅 시스템 및 그 데이터 관리 방법
US10678768B2 (en) Logical band-based key-value storage structure
US9996542B2 (en) Cache management in a computerized system
KR102050732B1 (ko) 컴퓨팅 시스템 및 컴퓨팅 시스템의 데이터 관리 방법
US20130332649A1 (en) File system for maintaining data versions in solid state memory
JP2014071904A (ja) コンピュータシステム及びコンピュータシステムのデータ管理方法
CN108121813B (zh) 数据管理方法、装置、系统、存储介质及电子设备
JP6215631B2 (ja) コンピュータシステム及びそのデータ管理方法
US11256418B2 (en) Logical address history management in memory device
US20140095558A1 (en) Computing system and method of managing data thereof
KR20140042520A (ko) 비트맵을 이용한 세그먼트 클리닝 장치 및 상기 비트맵을 저장하는 스토리지 장치
WO2020019173A1 (zh) 一种用于对象存储的存储器控制电路