(57)【要約】【課題】コンピュータシステムを提供する。【解決手段】コンピュータシステムは、記憶装置、および記憶装置に複数のページをフラッシュするホスト装置を含み、ホスト装置は、複数のページを格納するライトバックキャッシュと、ライトバックキャッシュに格納された複数のページのうち、第１特性を有するページをすべて記憶装置にフラッシュした後、第１特性と異なる第２特性を有するページを記憶装置にフラッシュするファイルシステムモジュールを含む。【選択図】      図２
2014071904.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置と、
前記記憶装置に複数のページをフラッシュするホスト装置とを備え、
前記ホスト装置は、
前記複数のページを格納するライトバックキャッシュと、
前記ライトバックキャッシュに格納された複数のページのうち、第１特性を有するページをすべて前記記憶装置にフラッシュした後、前記第１特性と異なる第２特性を有するページを前記記憶装置にフラッシュするファイルシステムモジュールとを備えるコンピュータシステム。
【請求項２】
前記第１特性を有するページは、前記記憶装置にインダイレクトノードブロックに格納されるページを含む請求項１に記載のコンピュータシステム。
【請求項３】
前記インダイレクトノードブロックは、ファイルをインデックスするインダイレクトノードブロックとディレクトリをインデックスするデントリインダイレクトノードブロックとを含む請求項２に記載のコンピュータシステム。
【請求項４】
前記第２特性を有するページは、前記記憶装置にダイレクトノードブロックに格納されるページを含む請求項２に記載のコンピュータシステム。
【請求項５】
前記ダイレクトノードブロックはファイルをインデックスするダイレクトノードブロックとディレクトリをインデックスするデントリダイレクトノードブロックとを含む請求項４に記載のコンピュータシステム。
【請求項６】
前記ファイルシステムモジュールは、
前記複数のページのうち、前記記憶装置に前記ディレクトリをインデックスするデントリダイレクトノードブロックに格納されるページをすべて前記記憶装置にフラッシュした後、前記記憶装置に前記ファイルをインデックスするダイレクトノードブロックに格納されるページを前記記憶装置にフラッシュする請求項５に記載のコンピュータシステム。
【請求項７】
前記ホスト装置は、
前記ライトバックキャッシュに格納された複数のページのうち前記記憶装置にフラッシュするページにダーティフラグをセットするキャッシュ管理モジュールをさらに備え、
前記ファイルシステムモジュールは、
前記ライトバックキャッシュに格納された複数のページのうち前記ダーティフラグがセットされたページの比率が予め定めた値以上である場合、前記ダーティフラグがセットされたページを前記記憶装置にフラッシュする請求項１に記載のコンピュータシステム。
【請求項８】
複数のページを提供し、
前記複数のページのうちＮ（ここで、Ｎは自然数）個のページを記憶装置にフラッシュすることを含み、
前記Ｎ個のページを記憶装置にフラッシュすることは、
前記複数のページのうち第１特性を有するページがＭ（ここで、Ｍ≧Ｎの自然数）個である場合、前記Ｎ個の第１特性を有するページを前記記憶装置に第１フラッシュし、
前記複数のページのうち第１特性を有するページがＬ（ここで、Ｌ＜Ｎの自然数）個である場合、前記第１特性を有するＬ個のページを前記記憶装置に第２フラッシュした後、前記複数のページのうち前記第１特性と異なる第２特性を有するＰ（ここで、Ｐ＝Ｎ−Ｌの自然数）個のページを第３フラッシュすることを含むコンピュータシステムのデータ管理方法。
【請求項９】
前記第１特性を有するページは、前記記憶装置にノードポインタを含むノードブロックに格納されるページを含む請求項８に記載のコンピュータシステムのデータ管理方法。
【請求項１０】
前記第２特性を有するページは、前記記憶装置にデータポインタを含むノードブロックに格納されるページを含む請求項１２に記載のコンピュータシステムのデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステム及びコンピュータシステムのデータ管理方法に関する。
【背景技術】
【０００２】
ファイルシステムが記憶装置にファイルを書き込みする際、ファイルデータとメタデータとを記憶装置に格納する。ファイルデータは、ユーザアプリケーションが格納しようとするファイルの内容を含み、メタデータはファイルの属性とファイルデータが格納されるブロックの位置などを含む。
一方、ファイルシステムが記憶装置にこのようなファイルデータとメタデータとを書き込む際は、例えば、所定のキャッシュにファイルデータとメタデータとを格納した後、特定時点でこれらを記憶装置にフラッシュする方法が用いられる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許出願公開２０１１−０１１９４６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このように記憶装置にフラッシュするメタデータは、その属性によって頻繁にアップデートが行われるものもあり、相対的に少ない頻度でアップデートが行われるものもある。したがって、フラッシュするメタデータの属性によってフラッシュ順序を違うようにする場合、不必要な書き込み動作を減らすことにより、システムの動作性能が改善される。
【０００５】
本発明が解決しようとする技術的課題は、動作性能が改善されたコンピュータシステムを提供することである。
【０００６】
本発明が解決しようとする他の技術的課題は動作性能を改善できるコンピュータシステムのデータ管理方法を提供することである。
【０００７】
本発明の技術的課題は上述した技術的課題に制限されず、言及されていないまた他の技術的課題は次の記載から当業者に明確に理解できるであろう。
【課題を解決するための手段】
【０００８】
前記技術的課題を達成するための本発明の一実施形態によるコンピュータシステムは、記憶装置、および記憶装置に複数のページをフラッシュするホスト装置を備え、ホスト装置は、複数のページを格納するライトバックキャッシュと、ライトバックキャッシュに格納された複数のページのうち、第１特性を有するページをすべて記憶装置にフラッシュした後、第１特性と異なる第２特性を有するページを記憶装置にフラッシュするファイルシステムモジュールとを備える。
【０００９】
本発明のいくつかの実施形態で、前記第１特性を有するページは、前記記憶装置にインダイレクトノードブロックに格納されるページを含み得る。この際、前記インダイレクトノードブロックは、ファイルをインデックスするインダイレクトノードブロックとディレクトリをインデックスするデントリインダイレクトノードブロックとを含み得る。
【００１０】
本発明のいくつかの実施形態で、前記第２特性を有するページは、前記記憶装置にダイレクトノードブロックに格納されるページを含み得る。この際、前記ダイレクトノードブロックはファイルをインデックスするダイレクトノードブロックとディレクトリをインデックスするデントリダイレクトノードブロックを含み得、前記ファイルシステムモジュールは、前記複数のページのうち、前記記憶装置に前記ディレクトリをインデックスするデントリダイレクトノードブロックに格納されるページをすべて前記記憶装置にフラッシュした後、前記記憶装置に前記ファイルをインデックスするダイレクトノードブロックに格納されるページを前記記憶装置にフラッシュすることができる。
【００１１】
本発明のいくつかの実施形態で、前記ホスト装置は、前記ライトバックキャッシュに格納された複数のページのうち前記記憶装置にフラッシュするページにダーティフラグ（ｄｉｒｔｙ  ｆｌａｇ）をセットするキャッシュ管理モジュールをさらに含み、前記ファイルシステムモジュールは、前記ライトバックキャッシュに格納された複数のページのうち前記ダーティフラグがセットされたページの比率が予め定めた値以上である場合、前記ダーティフラグがセットされたページを前記記憶装置にフラッシュすることができる。
【００１２】
本発明のいくつかの実施形態で、前記記憶装置はランダムアクセス（ｒａｎｄｏｍ  ａｃｃｅｓｓ）方式により書き込まれる第１領域と、順次アクセス（ｓｅｑｕｅｎｔｉａｌ  ａｃｃｅｓｓ）方式により書き込まれる第２領域を含み、前記第１特性を有するページと前記第２特性を有するページは前記第２領域に格納される。この際、前記記憶装置で前記第１領域の物理アドレスは前記第２領域の物理アドレスより先行する。
【００１３】
本発明のいくつかの実施形態で、前記複数のページ各々にはファイルまたはディレクトリに関するメタデータが格納され得る。
【００１４】
本発明のいくつかの実施形態で、前記記憶装置はＳＳＤ（Ｓｔａｔｉｃ  Ｓｏｌｉｄ  Ｄｉｓｋ）を含み得る。
【００１５】
前記他の技術的課題を達成するための本発明の一実施形態によるコンピュータシステムのデータ管理方法は、複数のページを提供し、複数のページのうちＮ（ここで、Ｎは自然数）個のページを記憶装置にフラッシュすることを含み、Ｎ個のページを記憶装置にフラッシュすることは、複数のページのうち第１特性を有するページがＭ（ここで、Ｍ≧Ｎの自然数）個である場合、Ｎ個の第１特性を有するページを記憶装置に第１フラッシュと、複数のページのうち第１特性を有するページがＬ（ここで、Ｌ＜Ｎの自然数）個である場合、第１特性を有するＬ個のページを記憶装置に第２フラッシュした後、複数のページのうち第１特性と異なる第２特性を有するＰ（ここで、Ｐ＝Ｎ−Ｌの自然数）個のページを第３フラッシュすることを含む。
【００１６】
本発明のいくつかの実施形態で、前記第１特性を有するページは、前記記憶装置にノードポインタを含むノードブロックに格納されるページを含み得る。
【００１７】
本発明のいくつかの実施形態で、前記第２特性を有するページは、前記記憶装置にデータポインタを含むノードブロックに格納されるページを含み得る。
【００１８】
本発明のいくつかの実施形態で、前記複数のページは前記記憶装置にフラッシュするページであることを示すダーティフラグがセットされたページとダーティフラグがセットされていないページを含み、前記Ｎ個のページを記憶装置にフラッシュすることは、前記ダーティフラグがセットされたＮ個のページを記憶装置にフラッシュすることを含み得る。
【００１９】
その他実施形態の具体的な内容は詳細な説明及び図面に含まれている。
【図面の簡単な説明】
【００２０】
【図１】本発明の一実施形態によるコンピュータシステムを説明するためのブロック図。
【図２】図１に図示するホスト装置の例示的なブロック構成図。
【図３】ホスト装置を説明するための論理的なモジュール階層図。
【図４】図１の記憶装置の格納領域構成を説明するための図。
【図５】図１の記憶装置に格納されるデータの構成単位を説明するための図。
【図６Ａ】図１の記憶装置に格納されるファイルの構造を説明するための図。
【図６Ｂ】図１の記憶装置に格納されるディレクトリの構造を説明するための図。
【図７Ａ】図１の記憶装置に格納されるブロックの配置を説明するための図。
【図７Ｂ】図１の記憶装置に格納されるブロックの配置を説明するための図。
【図７Ｃ】図１の記憶装置に格納されるブロックの配置を説明するための図。
【図７Ｄ】図１の記憶装置に格納されるブロックの配置を説明するための図。
【図８】ノードアドレステーブルを説明するための図。
【図９Ａ】図１の記憶装置に格納されるデータが更新される過程を説明するための図。
【図９Ｂ】図１の記憶装置に格納されるデータが更新される過程を説明するための図。
【図１０】本発明の一実施形態によるコンピュータシステムのデータ管理方法を説明するための順序図。
【図１１】本発明の一実施形態によるコンピュータシステムのデータ管理方法を説明するための図。
【図１２】本発明の一実施形態によるコンピュータシステムのデータ管理方法を説明するための図。
【図１３】本発明の一実施形態によるコンピュータシステムのデータ管理方法を説明するための図。
【図１４】本発明のいくつかの実施形態によるコンピュータシステムの具体的な一例を説明するためのブロック図。
【図１５】本発明のいくつかの実施形態によるコンピュータシステムの具体的な他の例を説明するためのブロック図。
【図１６】本発明のいくつかの実施形態によるコンピュータシステムの具体的な他の例を説明するためのブロック図。
【図１７】本発明のいくつかの実施形態によるコンピュータシステムの具体的な他の例を説明するためのブロック図。
【発明を実施するための形態】
【００２１】
本発明の利点及び特徴、これらを達成する方法は添付する図面と共に詳細に後述する実施形態において明確になるであろう。しかし、本発明は、以下で開示する実施形態に限定されるものではなく、互いに異なる多様な形態で実現されるものであり、本実施形態は、単に本発明の開示を完全にし、本発明が属する技術分野で通常の知識を有する者に発明の範疇を完全に知らせるために提供されるものであり、本発明は、請求項の範囲によってのみ定義される。明細書全体にかけて同一参照符号は同一構成要素を指称し、「及び／または』は言及されたアイテムの各々及び一つ以上のすべての組合せを含む。
【００２２】
一つの素子（ｅｌｅｍｅｎｔｓ）が他の素子と「接続された（ｃｏｎｎｅｃｔｅｄ  ｔｏ）」または「カップリングされた（ｃｏｕｐｌｅｄ  ｔｏ）」と指称されるものは、他の素子と直接連結またはカップリングされた場合または中間に他の素子を介在する場合をすべて含む。反面、一つの素子が他の素子と「直接接続された（ｄｉｒｅｃｔｌｙ  ｃｏｎｎｅｃｔｅｄ  ｔｏ）」または「直接カップリングされた（ｄｉｒｅｃｔｌｙ  ｃｏｕｐｌｅｄ  ｔｏ）」と指称されるものは中間に他の素子を介在しないことを示す。「および／または」は、言及されたアイテムの各々および一つ以上のすべての組合せを含む。
【００２３】
例えば、ある一つの構成要素が他の構成要素にデータまたは信号を「伝送、提供、送信または出力」する場合は、前記構成要素は前記他の構成要素に直接前記データまたは信号を「伝送、提供、送信または出力」することができ、少なくとも一つのまた他の構成要素を介して前記データまたは信号を前記他の構成要素に「伝送、提供、送信または出力」することが可能であることを意味する。
【００２４】
第１、第２などが多様な素子、構成要素を叙述するために使用されるが、これら素子、構成要素はこれらの用語によって制限されないことはいうまでもない。これらの用語は、単に一つ構成要素を他の構成要素と区別するために使用するものである。したがって、以下で言及される第１素子、第１構成要素または第１セクションは本発明の技術的思想内で第２素子、第２構成要素、または第２セクションであり得ることは勿論である。
【００２５】
本明細書で使用された用語は、実施例について説明するためであり、本発明を制限しようとするものではない。本明細書で、単数型は特別に言及しない限り複数型も含む。明細書で使用される「含む（ｃｏｍｐｒｉｓｅｓ及びｃｏｍｐｒｉｓｉｎｇ）」は言及された構成要素の他、段階、動作及び／または素子は一つ以上の他の構成要素、段階、動作及び／または素子の存在または追加を排除しない。
【００２６】
他に定義されなければ、本明細書で使用されるすべての用語（技術および科学的用語を含む）は、本発明が属する技術分野で通常の知識を有する者が共通に理解できる意味として使用され得る。また一般に使用される辞書に定義されている用語は明白に特別に定義されていない限り理想的にまたは過度に解釈しない。
【００２７】
図１は本発明の一実施形態によるコンピュータシステムを説明するためのブロック図である。
【００２８】
図１を参照すると、本発明の一実施形態によるコンピュータシステム１はホスト装置１０と記憶装置２０とを含む。
【００２９】
ホスト装置１０と記憶装置２０とは特定のプロトコル（ｐｒｏｔｏｃｏｌ）を利用して互いにデータを送受信する。例えば、ホスト装置１０と記憶装置２０は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）プロトコル、ＭＭＣ（ｍｕｌｔｉｍｅｄｉａ  ｃａｒｄ）プロトコル、ＰＣＩ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ）プロトコル、ＰＣＩ−Ｅ（ＰＣＩ−ｅｘｐｒｅｓｓ）プロトコル、ＡＴＡ（Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）プロトコル、Ｓｅｒｉａｌ−ＡＴＡプロトコル、Ｐａｒａｌｌｅｌ−ＡＴＡプロトコル、ＳＣＳＩ  （ｓｍａｌｌ  ｃｏｍｐｕｔｅｒ  ｓｍａｌｌ  ｉｎｔｅｒｆａｃｅ）プロトコル、ＥＳＤＩ（ｅｎｈａｎｃｅｄ  ｓｍａｌｌ  ｄｉｓｋ  ｉｎｔｅｒｆａｃｅ）プロトコル、及びＩＤＥ（Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）プロトコルなどのような多様なインターフェースプロトコルのうち少なくとも一つにより通信できるが、これに限定されるものではない。
【００３０】
ホスト装置１０は記憶装置２０をコントロールする。例えば、ホスト装置１０は記憶装置２０にデータを書き込み（ｗｒｉｔｅ）したり、記憶装置２０からデータを読み込み（ｒｅａｄ）したりすることができる。
【００３１】
記憶装置２０はＳＳＤ（Ｓｔａｔｉｃ  Ｓｏｌｉｄ  Ｄｉｓｋ）、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ｅＭＭＣのような各種カードストレージ、データサーバなどであり得るが、これに限定されない。
【００３２】
図２は、図１に図示するホスト装置の例示的なブロック構成図である。
【００３３】
図２を参照すると、ホスト装置１０は記憶装置２０に対するデータの書き込みに利用されるライトバックキャッシュ（ｗｒｉｔｅ−ｂａｃｋ  ｃａｃｈｅ、ＷＢ  ＣＡＣＨＥ）１０４、ライトバックキャッシュ１０４を管理するキャッシュ管理モジュール１０２及びファイルシステムモジュール１０３を含み得る。
【００３４】
図２に図示する各構成要素はソフトウェアまたは、ＦＰＧＡ（ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）やＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）のようなハードウェアを意味する。しかし、前記構成要素はソフトウェアまたはハードウェアに限定される意味ではなく、アドレシング（ａｄｄｒｅｓｓｉｎｇ）できる格納媒体にあるように構成され得、一つまたはそれ以上のプロセッサを実行するように構成され得る。前記構成要素から提供される機能はさらに細分化した構成要素によって実現することができ、複数の構成要素を合わせて特定の機能を遂行する一つの構成要素としても実現できる。
【００３５】
ライトバックキャッシュ１０４は複数のページを格納できる。本発明のいくつかの実施形態で、このようにライトバックキャッシュ１０４に格納された複数のページは記憶装置２０に格納されていないため、その後記憶装置２０にフラッシュする第１ページと、記憶装置２０にすでに格納されているため、その後記憶装置２０にフラッシュする必要のない第２ページとを含み得る。ここで、ライトバックキャッシュ１０４内にこのような第２ページが存在するのは、例えば、ライトバックキャッシュ１０４に格納された該当ページがフラッシュする前にユーザアプリケーション（図３の１２を参照）などによってアップデートされたからである。
【００３６】
キャッシュ管理モジュール１０２はライトバックキャッシュ１０４に格納された複数のページ各々を管理する。具体的には、キャッシュ管理モジュール１０２はダーティフラグ（ｄｉｒｔｙ  ｆｌａｇ）によりライトバックキャッシュ１０４内の複数のページを前述した第１ページと第２ページとして管理する。さらに具体的には、キャッシュ管理モジュール１０２はライトバックキャッシュ１０４に格納された複数のページのうちその後記憶装置２０にフラッシュする第１ページにはダーティフラグをセットし、その後記憶装置２０にフラッシュする必要のない第２ページにはダーティフラグをセットしないことによって、ライトバックキャッシュ１０４に格納されたページを前述した第１ページと第２ページととして管理する。
【００３７】
ファイルシステムモジュール１０３はライトバックキャッシュ１０４に格納された複数のページのうちこのようにダーティフラグがセットされた第１ページの比率が予め定めた値以上になると、ダーティフラグがセットされた第１ページを記憶装置２０にフラッシュする。この際、本実施形態で、ファイルシステムモジュール１０３は、ライトバックキャッシュ１０４に格納された複数の第１ページのうち、先に第１特性を有する第１ページをすべて記憶装置２０に第１フラッシュした後、第１特性と異なる第２特性を有する第１ページを記憶装置２０に第２フラッシュする。このようなファイルシステムモジュール１０３の詳細動作については図１０ないし図１３を参照して後述する。
【００３８】
図３を参照してホスト装置１０についてより詳しく説明する。図３はホスト装置を説明するための論理的なモジュール階層図である。
【００３９】
図３を参照すると、ホスト装置１０はユーザスペース（ｕｓｅｒ  ｓｐａｃｅ）１１とカーネルスペース（ｋｅｒｎｅｌ  ｓｐａｃｅ）１３とを含む。
【００４０】
ユーザスペース１１はユーザアプリケーション（ｕｓｅｒ  ａｐｐｌｉｃａｔｉｏｎ）１２が実行される領域であり、カーネルスペース１３はカーネル実行専用領域である。ユーザスペース１１はカーネルスペース１３をアクセスするため、カーネルが提供するシステムコール（ｓｙｓｔｅｍ  ｃａｌｌ）を利用する。
【００４１】
カーネルスペース１３はユーザスペース１１のＩ／Ｏコール呼び出しを適切にしたファイルシステム１６に連結する仮想ファイルシステム１４、ホスト装置１０のメモリを管理するメモリ管理モジュール１５、一つ以上のファイルシステム１６、記憶装置２０を制御するためのハードウェア制御コールを提供する装置ドライバ１８などを含む。
【００４２】
ここで、ファイルシステム１６は例えば、ｅｘｔ２、ｎｔｆｓ、ｓｍｂｆｓ、ｐｒｏｃなどである。また、本発明によれば、ファイルシステム１６のうち一つは、本発明によるログ構造化ファイルシステム基盤のＦ２ＦＳファイルシステムである。このＦ２ＦＳファイルシステムについては図４ないし図９Ｂを参照して後述する。
【００４３】
仮想ファイルシステム１４は一つ以上のファイルシステム１６が互い相互動作できるようにする。互いに異なるメディアの互いに異なるファイルシステム１６に対して読み込み／書き込み作業をするため、標準化システムコールを使用できるようにする。例えば、ｏｐｅｎ（）、ｒｅａｄ（）、ｗｒｉｔｅ（）のようなシステムコールは、ファイルシステム１６の種類に関係なく使用できる。すなわち、仮想ファイルシステム１４はユーザスペース１１とファイルシステム１６との間に存在する抽象化階層である。
【００４４】
装置ドライバ１８は、ハードウェアとユーザアプリケーション（またはオペレーティングシステム）との間のインターフェースを担当する。装置ドライバ１８はハードウェアが特定のオペレーティングシステム下で正常に動作するために必要なプログラムである。
【００４５】
一方、図２に図示するファイルシステムモジュール１０３は前述したＦ２ＦＳファイルシステムにより動作するものである。また、図２に図示するキャッシュ管理モジュール１０２は図３に図示する仮想ファイルシステム１４またはメモリ管理モジュール１５に含まれたサブ−モジュールである。
【００４６】
以下では、前述したＦ２ＦＳファイルシステムが記憶装置２０をどのように制御するかについて図４ないし図９Ｂを参照して説明する。
【００４７】
図４は、図１の記憶装置の格納領域構成を説明するための図である。
【００４８】
記憶装置２０は図４に図示するように第１領域３０及び第２領域４０を含む。ここで、第１領域３０はランダムアクセス（ｒａｎｄｏｍ  ａｃｃｅｓｓ）方式により書き込まれる領域であり、第２領域４０は順次アクセス（ｓｅｑｕｅｎｔｉａｌ  ａｃｃｅｓｓ）方式により書き込みまれる領域である。
【００４９】
順次アクセス方式の書き込みは、記憶装置２０内に物理アドレスが順次に増加するブロックに順次にデータを書き込むことであり、ランダムアクセス方式の書き込みはこれと関係がなく指定された物理アドレスを有するブロックにデータを書き込むことである。
【００５０】
Ｆ２ＦＳファイルシステムはフォーマット（ｆｏｒｍａｔ）する際、記憶装置２０が第１領域３０と第２領域４０に分けられるが、これに限定されるものではない。第１領域３０はシステム全体により管理される各種情報が格納される領域であり、例えば、現在割り当てられたファイル数、有効なページ数、位置などの情報を含む。第２領域４０は実際ユーザが使用している各種ディレクトリ情報、データ、ファイル情報などを格納する空間である。
【００５１】
一方、記憶装置２０は前述したランダムアクセスに活用されるバッファを備える。このようなバッファが最適で活用されるように、第１領域３０は記憶装置２０の前部に格納され、第２領域４０は記憶装置２０の後部に格納される。ここで、前部は後部より物理アドレス（ｐｈｙｓｉｃａｌ  ａｄｄｒｅｓｓ）を基準に前にあることを意味する。
【００５２】
記憶装置２０が例えば、ＳＳＤである場合、ＳＳＤ内部にバッファ（ｂｕｆｆｅｒ）がある。バッファは例えば、読み込み／書き込み速度が速いＳＬＣ（Ｓｉｎｇｌｅ  Ｌａｙｅｒ  Ｃｅｌｌ）メモリである。したがって、このようなバッファは限定された空間のランダムアクセス方式の書き込み速度を速くする。したがって、このようなバッファを活用して第１領域３０を記憶装置２０の前部に位置させることによってランダムアクセス方式による記憶装置２０のＩ／Ｏ速度の低下を防ぐ。
【００５３】
第２領域４０はログ領域４１及びフリー領域４２で構成される。図４において、ログ領域４１は連結された一つの領域として図示されているが、セグメントクリーニングの過程でログ領域４１に含まれたビクティム（ｖｉｃｔｉｍ）セグメントがフリー領域４２に転換することによって連結されていない領域になる場合もある。
【００５４】
ログ領域４１はデータがすでに書き込まれた領域であり、フリー領域４２はデータが書き込まれる領域である。第２領域４０は順次アクセス方式により書き込まれるため、データはログ領域４１の最後に位置するフリー領域に書き込まれる。
【００５５】
ログ領域４１にすでに格納されたデータが修正される際も、修正後のデータはすでに格納されたログ領域４１内ではなく、ログ領域４１の最後に位置するフリー領域４２に書き込まれる。この際、すでに格納されたデータは無効データとなる。
【００５６】
図５は、図１の記憶装置に格納されるデータの構成単位を説明するための図である。
【００５７】
セグメント（ＳＥＧＭＥＮＴ）５３は多数のブロック（ＢＬＫ）５１を含み、セクション（ＳＥＣＴＩＯＮ）５５は多数のセグメント５３を含み、ゾーン（ＺＯＮＥ）５７は多数のセクション５５を含む。例えば、ブロック５１は４Ｋｂｙｔｅであり、セグメント５３は５１２個のブロック５１を含み、２Ｍ  ｂｙｔｅである。このような構成は、記憶装置２０のフォーマット時点で決定されるが、これに限定されるものではない。セクション５５とゾーン５７のサイズはフォーマット時点で修正され得る。Ｆ２ＦＳファイルシステムはすべてのデータを４Ｋｂｙｔｅのページ単位で読み込み／書き込みすることができる。すなわち、ブロック５１に一つのページが格納され、セグメント５３に多数のページが格納される。
【００５８】
一方、記憶装置２０に格納されるファイルは図６Ａに図示するように、インデクス構造（ｉｎｄｅｘｉｎｇ  ｓｔｒｕｃｔｕｒｅ）を有する。
【００５９】
図６Ａは、図１の記憶装置に格納されるファイルの構造を説明するための図である。
【００６０】
一つのファイルはファイルデータと、ファイルデータに関するメタデータとで構成されるが、データブロック７０はこのようなファイルデータを格納する部分であり、ノードブロック（８０、８１〜８８、９１〜９５）はこのようなメタデータを格納する部分である。
【００６１】
ノードブロック（８０、８１〜８８、９１〜９５）はダイレクトノードブロック（ｆｉｅｌ  ｄｉｒｅｃｔ  ｎｏｄｅ  ｂｌｏｃｋ）８１〜８８、インダイレクトノードブロック（ｆｉｌｅ  ｉｎｄｉｒｅｃｔ  ｎｏｄｅ  ｂｌｏｃｋ）９１〜９５、ｉノードブロック（ｉｆｌｅ  ｉｎｏｄｅ  ｂｌｏｃｋ）８０を含む。Ｆ２ＦＳファイルシステムで、一つのファイルは一つのｉノードブロック８０を有する。
【００６２】
ダイレクトノードブロック８１〜８８は、ｉノードブロック８０の識別子及びデータブロック７０を直接示すデータポインタ（ｄａｔａ  ｐｏｉｎｔｅｒ）をダイレクトノードブロック８１〜８８の子ブロックであるデータブロック７０の個数分だけ含む。ダイレクトノードブロック８１〜８８は各データブロック７０が、ｉノードブロック８０に対応するファイル内で何番目のブロックであるかに関する情報、すなわちブロックのオフセット情報をさらに格納する。
【００６３】
インダイレクトノードブロック９１〜９５は、ダイレクトノードブロック８１〜８８または他のインダイレクトノードブロック９１〜９５を示すポインタを含む。インダイレクトノードブロック９１〜９５は例えば、第１インダイレクトノードブロック９１〜９４、第２インダイレクトノードブロック９５などを含む。第１インダイレクトノードブロック９１〜９４はダイレクトノードブロック８３〜８８を示す第１ノードポインタを含む。第２インダイレクトノードブロック９５は第１インダイレクトノードブロック９３、９４を示す第２ノードポインタを含む。
【００６４】
ｉノードブロック８０はデータポインタ、ダイレクトノードブロック８１、８２を指す第１ノードポインタ、第１インダイレクトノードブロック９１、９２を指す第２ノードポインタ、第２インダイレクトノードブロック９５を指す第３ノードポインタのうち少なくとも一つを含む。
【００６５】
一つのファイルは例えば、最大３Ｔｂｙｔｅであり得、このような大容量のファイルは次のようなインデックス構造を有する。例えば、ｉノードブロック８０内のデータポインタは９９４個であり、９９４個のデータポインタ各々は９９４個のデータブロック７０各々を指す。第１ノードポインタは２個であり、２個の第１ノードポインタ各々は２個のダイレクトノードブロック８１、８２を指す。第２ノードポインタは２個であり、２個の第２ノードポインタ各々は２個の第１インダイレクトノードブロック９１、９２を指す。第３ノードポインタは１個であり、第２インダイレクトノードブロック９５を指す。
【００６６】
一方、記憶装置２０に格納されるディレクトリは図６Ｂに図示するようにインデクス構造（ｉｎｄｅｘｉｎｇ  ｓｔｒｕｃｔｕｒｅ）を有する。
【００６７】
図６Ｂは、図１の記憶装置に格納されるディレクトリの構造を説明するための図である。
【００６８】
一つのディレクトリは多数のファイルリストと、多数のファイルリストと関連する多数のノードを含む。ファイルブロック１００はファイルリストに関する情報を格納する部分であり、ノードブロック１１０、１１１〜１１２、１２１はファイルブロック１００に対するメタデータを格納する部分である。
【００６９】
ノードブロック１１０、１１１〜１１２、１２１は、デントリダイレクトノードブロック（ｄｅｎｔｒｙ  ｄｉｒｅｃｔ  ｎｏｄｅ  ｂｌｏｃｋ）（１１１〜１１２）、デントリインダイレクトノードブロック（ｄｅｎｔｒｙ  ｉｎｄｉｒｅｃｔ  ｎｏｄｅ  ｂｌｏｃｋ）１２１、デントリｉノードブロック（ｄｅｎｔｒｙ  ｉｎｄｉｒｅｃｔ  ｎｏｄｅ  ｂｌｏｃｋ）１１０を含む。Ｆ２ＦＳファイルシステムで、一つのディレクトリは一つのデントリｉノードブロック１１０を有する。デントリダイレクトノードブロック（１１１〜１１２）、デントリインダイレクトノードブロック１２１、デントリｉノードブロック１１０間の関係に係る説明は図６Ａを参照して説明したファイルのダイレクトノードブロック８１〜８８、インダイレクトノードブロック９１〜９５、ｉノードブロック８０と同じであるため、重複する説明は省略する。
【００７０】
図７Ａないし７Ｄは、図１の記憶装置に格納されるブロックの配置を説明するための図である。図８は、ノードアドレステーブルを説明するための図である。
【００７１】
ここで、図７Ａないし７Ｄは、本発明のいくつかの実施形態によって、Ｆ２ＦＳファイルシステムが構成する記憶装置２０の格納領域の構成をさらに詳細に図示する。
【００７２】
先ず、一実施形態によれば、Ｆ２ＦＳファイルシステムは、記憶装置２０の格納領域をランダムアクセス方式の第１領域３０及び順次アクセス方式の第２領域４０を含むように図７Ａに図示するように構成できる。
【００７３】
具体的には、第１領域３０はスーパーブロック６１、６２、チェックポイント領域（ＣｈｅｃｋＰｏｉｎｔ  ａｒｅａ、ＣＰ）６３、セグメント情報テーブル（Ｓｅｇｍｅｎｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔａｂｌｅ、ＳＩＴ）６４、ノードアドレステーブル（Ｎｏｄｅ  Ａｄｄｒｅｓｓ  Ｔａｂｌｅ、ＮＡＴ）６５、セグメント要約領域（Ｓｅｇｍｅｎｔ  Ｓｕｍｍａｒｙ  Ａｒｅａ、ＳＳＡ）６６などを含む。
【００７４】
先ず、スーパーブロック６１、６２には、ファイルシステム１６のデフォルト情報が格納される。例えば、ブロック５１のサイズ、ブロック５１の数、ファイルシステム１６の状態フラグ（ｃｌｅａｎ、ｓｔａｂｌｅ、ａｃｔｉｖｅ、ｌｏｇｇｉｎｇ、ｕｎｋｎｏｗｎ）などが格納される。図示するように、スーパーブロック６１、６２は２個であり得、各々には同一な内容が格納される。したがって、二つのうち何れか一つに問題が発生しても、他の一つを利用することができる。
【００７５】
チェックポイント領域６３はチェックポイントを格納する。チェックポイントは論理割り込みであって、このような割り込み点までの状態が完全に保存される。コンピュータシステムの動作中に事故（例えば、シャットダウン（ｓｈｕｔｄｏｗｎ））が発生すると、ファイルシステム１６は保存されたチェックポイントを利用してデータを復旧できる。このようなチェックポイントの生成時点は、例えば、周期的に生成、アンマウント（Ｕｍｏｕｎｔ）時点、システムの停止（Ｓｙｓｔｅｍ  ｓｈｕｔｄｏｗｎ）時点などであるが、これに限定されるものではない。
【００７６】
図８に図示するように、ノードアドレステーブル６５はノード各々に対応する多数のノード識別子（ＮＯＤＥ  ＩＤ）と、多数のノード識別子各々に対応する多数の物理アドレス（ｐｈｙｓｉｃａｌ  ａｄｄｒｅｓｓ）を含む。例えば、ノード識別子Ｎ０に対応するノードブロックは物理アドレスａに対応し、ノード識別子Ｎ１に対応するノードブロックは物理アドレスｂに対応し、ノード識別子Ｎ２に対応するノードブロックは物理アドレスｃに対応する。すべてのノード（ｉノード、ダイレクトノード、インダイレクトノードなど）は各々固有のノード識別子を有する。言い換えると、すべてのノード（ｉノード、ダイレクトノード、インダイレクトノードなど）はノードアドレステーブル６５から固有のノード識別子を割り当てられる。ノードアドレステーブル６５はｉノードのノード識別子、ダイレクトノードのノード識別子及びインダイレクトノードのノード識別子などを格納する。各ノード識別子に対応する各物理アドレスはアップデートされ得る。
【００７７】
セグメント情報テーブル（Ｓｅｇｍｅｎｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔａｂｌｅ）６４は各セグメント内に含まれたライブブロックの個数と、各ブロックがライブブロックであるかどうかを示すビットマップを含む。ビットマップを構成する各ビットは対応する各ブロックがライブブロックであるかどうかを示す。セグメント情報テーブル６４はセグメントクリーニング作業で使用される。すなわち、ファイルシステムモジュール１０３はビクティムセグメント内に含まれたライブブロックを識別するため、セグメント情報テーブル６４に含まれたビットマップを参照する。
【００７８】
セグメント要約領域（Ｓｅｇｍｅｎｔ  Ｓｕｍｍａｒｙ  Ａｒｅａ）６６は第２領域４０の各セグメントに含まれた各ブロックが属する親ノードの識別子を記述する。
【００７９】
ダイレクトノードブロック８１〜８８は、自身の子ブロックであるデータブロック７０にアクセスするため、各データブロック７０のアドレス情報を有する。反面、インダイレクトノードブロック９１〜９５は自身の子ノードブロックにアクセスするため、自身の各子ノードの識別子リストを有する。特定ノードブロックの識別子を確認すると、ノードアドレステーブル６５を参照してその物理アドレスも確認することが出来る。
【００８０】
一方、ログ構造化ファイルシステムではデータブロックに書き込まれたデータを既存の格納位置で他の値に上書き（ｏｖｅｒｗｒｉｔｅ）せず、ログの最後に更新されたデータを有する新たなデータブロックを書き込む方法を取る。したがって、既存データブロックの親ノードブロックもデータブロックに対するアドレスを修正しなければならない。したがって、特定データブロックを上書きするか、またはセグメントクリーニング段階でログの最後にライトバックする場合、そのデータブロックの親ノードに対する情報が必要である。しかし、各データブロックまたは各ノードブロックは自身の親ノードに対する情報を確認することができない。したがって、本発明によるＦ２ＦＳファイルシステムは各データブロックまたは各ノードブロックが自身の親ノードブロックの識別子を確認できるインデックス（ｉｎｄｅｘ）が記載されたセグメント要約領域６６を設け、データブロックまたはノードブロックが親ノードブロックの識別子を簡単に確認できるようにする。
【００８１】
一つのセグメント要約ブロックは、第２領域４０に位置する一つのセグメントに対する情報を有している。また、セグメント要約ブロックは多数の要約情報で構成されており、一つの要約情報は一つのデータブロックまたは一つのノードブロックに対応する。
【００８２】
第２領域４０は図７Ａに図示するように、互いに分離されたデータセグメント（ｄａｔａ  ｓｅｇｍｅｎｔ）（ＤＳ０、ＤＳ１）とノードセグメント（ｎｏｄｅ  ｓｅｇｍｅｎｔ）（ＮＳ０、ＮＳ１）を含む。多数のデータはデータセグメント（ＤＳ０、ＤＳ１）に格納され、多数のノードはノードセグメント（ＮＳ０、ＮＳ１）に格納される。データとノードが分離する領域が互いに異なると、効率的にセグメントを管理することができ、データを読み込む際、より効果的でかつ単時間に読み込みすることができる。
【００８３】
図面では、第１領域３０はスーパーブロック６１、６２、チェックポイント領域６３、セグメント情報テーブル６４、ノードアドレステーブル６５、セグメント要約領域６６順序になっているが、これに限定されるものではない。例えば、セグメント情報テーブル６４とノードアドレステーブル６５の位置が変わってもよく、ノードアドレステーブル６５とセグメント要約領域６６の位置が変わってもよい。
【００８４】
一方、Ｆ２ＦＳファイルシステムは記憶装置２０の格納領域を図７Ｂに図示するように構成してもよい。図７Ｂを参照すると、本発明の他の実施形態によるコンピュータシステムの記憶装置で、第２領域４０は互いに分離された多数のセグメント（Ｓ１〜Ｓｎ、ただし、ｎは自然数）を含む。各セグメント（Ｓ１〜Ｓｎ）には、データとノードとを区分せず格納される点で、データセグメントとノードセグメントを別途管理する図７Ａと異なる。
【００８５】
また、Ｆ２ＦＳファイルシステムは記憶装置２０の格納領域を図７Ｃに図示するように構成してもよい。図７Ｃを参照すると、第１領域３０はセグメント要約領域（図７Ａの６６を参照）を含まない。すなわち、第１領域３０はスーパーブロック６１、６２、チェックポイント領域６３、セグメント情報テーブル６４、ノードアドレステーブル６５を含む。その代わりに、セグメント要約情報は第２領域４０内に格納される。具体的には、第２領域４０は多数のセグメントＳ０〜Ｓｎを含み、各セグメントＳ０〜Ｓｎは多数のブロックに区分される。各セグメントＳ０〜Ｓｎの少なくとも一つのブロックＳＳ０〜ＳＳｎにセグメント要約情報が格納される。
【００８６】
また、Ｆ２ＦＳファイルシステムは記憶装置２０の格納領域を図７Ｄに図示するように構成してもよい。図７Ｄを参照すると、図７Ｃと同様に、第１領域３０はセグメント要約領域（図７Ａの６６を参照）を含まない。すなわち、第１領域３０はスーパーブロック６１、６２、チェックポイント領域６３、セグメント情報テーブル６４、ノードアドレステーブル６５を含む。セグメント要約情報は第２領域４０内に格納される。第２領域４０は多数のセグメント５３を含み、各セグメント５３は多数のブロック（ＢＬＫ０〜ＢＬＫｍ）に区分され、各ブロック（ＢＬＫ０〜ＢＬＫｍ）はＯＯＢ（Ｏｕｔ  Ｏｆ  Ｂａｎｄ）（ＯＯＢ１〜ＯＯＢｍ、ただし、ｍは自然数）領域を含む。ＯＯＢ領域（ＯＯＢ１〜ＯＯＢｍ）にセグメント要約情報を格納する。
【００８７】
次に、図９Ａ及び図９Ｂを参照して本実施形態によるＦ２ＦＳファイルシステムがデータ更新作業を行うことについて説明する。
【００８８】
図９Ａないし９Ｂは、図１の記憶装置に格納されるデータが更新される過程を説明するための図である。
【００８９】
図９Ａはデータ更新前にＦＩＬＥ  ０が「ＡＢＣ」というデータを格納していることを図示し、図９Ｂは、アプリケーションがＦＩＬＥ  ０に対する「ＡＤＣ」への更新を命令することによって、ＦＩＬＥ  ０が「ＡＤＣ」というデータを格納することを図示する。
【００９０】
Ｆ２ＦＳはＦＩＬＥ  ０を図６Ａに図示する形態のようにノード及びデータブロックを構成し、図９Ａ及び図９Ｂでは説明の便宜上、ｉノードが一つのダイレクトノードＮ０を指し、ダイレクトノードＮ０は三つのデータブロックを指すものとしてＦＩＬＥ  ０が構成されると仮定して説明する。
【００９１】
先ず、図９Ａを参照すると、ログ領域４１内の第１データ  セグメントＤＳ０は第１ないし３データブロック（ＢＬＫ  ０、ＢＬＫ  １、ＢＬＫ  ２）を含む。第１データブロックＢＬＫ  ０には「Ａ」、第２データブロックＢＬＫ  １には「Ｂ」、第３データブロックＢＬＫ  ２には「Ｃ」が各々格納されると仮定する。しかし、これは説明の便宜上このように仮定したものであって、本発明の他のいくつかの実施形態では、図９Ａに図示するものとは別に第１データセグメントＤＳ０は第１ないし３データブロックだけではなく、さらに多くのデータブロックを含み得る。
【００９２】
ログ領域４１内の第１ノード  セグメント（ＮＳ０）にダイレクトノードＮ０ブロックが含まれる。ダイレクトノードＮ０ブロックには少なくともノードの識別子Ｎ０、第１ないし３データブロックに対する物理アドレス情報が格納される。図９Ａに図示するように、ダイレクトノードＮ０ブロックの物理アドレスは「ａ」である。
【００９３】
一方、ＮＡＴにはダイレクトノードブロックの識別子のＮ０とＮ０の物理アドレスの「ａ」が格納される。
【００９４】
図９Ｂを参照してデータが更新されたＦＩＬＥ  ０の構成について説明する。
【００９５】
アプリケーションはＦＩＬＥ  ０の「ＡＢＣ」を「ＡＤＣ」に更新することを命令したので、「Ｂ」を格納する第２データブロックＢＬＫ  １が更新されなければならない。Ｆ２ＦＳファイルシステムは、第２データブロックＢＬＫ  １に格納されている「Ｂ」を「Ｄ」に更新する代わりに、「Ｄ」を格納する新規の第４データブロックＢＬＫ  ３をログ領域４１の最後に位置した第２データセグメントＤＳ１に格納する。すなわち、更新後のＦＩＬＥ  ０は第０データブロックＢＬＫ  ０、第４データブロックＢＬＫ  ３及び第２データブロックＢＬＫ  ２で構成される。これによって、ダイレクトノードＮ０ブロックも２番目データブロックを指す物理アドレス情報が第４データブロックの物理アドレス情報に更新されなければならない。Ｆ２ＦＳファイルシステムは、既に格納されていたノードＮ０の子ブロック物理アドレス情報を更新する代わりに、第０データブロックＢＬＫ  ０、第４データブロックＢＬＫ  ３及び第２データブロックＢＬＫ  ２の物理アドレス情報を子ブロックのアドレス情報に有するが、ノード識別子はＮ０と同一の新たなノードブロックを生成する。新たなノードブロックはログ領域４１の最後に位置する第２ノードセグメントに含まれる。
【００９６】
ノードブロックＮ０の物理アドレスは「ａ」から「ｆ」に変わる。従来のログ構造化ファイルシステムによれば、ノードブロックＮ０の親ノードのインダイレクトノードに含まれたノードブロックＮ０の物理アドレス情報も修正されなければならない。また、インダイレクトノードも新たなノードブロックに書き込まれるため、ノードブロックの更新作業は親ノードブロックとしてｉノードに至るときまで継続して転移する。このような問題を「ｗａｎｄｅｒｉｎｇ  ｔｒｅｅ」問題という。Ｗａｎｄｅｒｉｎｇ  ｔｒｅｅ問題は過度にノードが新しく書き込まれるようにするため、順次アクセス書き込みの書き込み効率化の効果が低下する。
【００９７】
本発明によるＦ２ＦＳファイルシステムはデータブロックの更新によって、ダイレクトノードブロックが新しく書き込まれる場合、ノードアドレステーブル６５内でダイレクトノードに対応する物理アドレスを修正すればよく（「ａ」から「ｆ」に）、ノードブロックの更新作業はダイレクトノード以上に転移しない。したがって、本発明によるＦ２ＦＳファイルシステムは従来のログ構造化ファイルシステムで発生するｗａｎｄｅｒｉｎｇ  ｔｒｅｅ問題を解決する。
【００９８】
以下、図１０ないし図１３を参照して本発明の一実施形態によるコンピュータシステムのデータ管理方法について説明する。
【００９９】
図１０は、本発明の一実施形態によるコンピュータシステムのデータ管理方法を説明するための順序図である。図１１ないし図１３は、本発明の一実施形態によるコンピュータシステムのデータ管理方法を説明するための図である。
【０１００】
先ず、図１０を参照すると、Ｎ（ここで、Ｎは自然数）個のダーティーページに対するフラッシュを要請する（Ｓ１００）。具体的には、ファイルシステムモジュール（図２の１０３）はライトバックキャッシュ（図２の１０４を参照）に格納された複数のページのうちダーティフラグがセットされたページの比率が予め定めた値以上になると、ダーティフラグがセットされたページＮ個を記憶装置（図１の２０を参照）にフラッシュすることを要請する。
【０１０１】
ここでは、説明の便宜上、ダーティフラグがセットされたページ５個に対して記憶装置（図１の２０を参照）にフラッシュすることが要請された場合、ライトバックキャッシュ１０４には第１ないし第１０ページＰ１〜Ｐ１０が格納されていると仮定して続いて説明する。ここで、説明の便宜上、図１１は、１０個のページＰ１〜Ｐ１０がライトバックキャッシュ１４０に格納されているものを図示するが、ライトバックキャッシュ１４０に格納されるページの数はいくらでも変形できる。
【０１０２】
一方、本発明のいくつかの実施形態で、ライトバックキャッシュ１０４にこのように格納された第１ないし第１０ページＰ１〜Ｐ１０はファイルまたはディレクトリに関するメタデータである。すなわち、本発明のいくつかの実施形態で、ファイルシステムモジュール（図２の１０３を参照）はユーザアプリケーション（図３の１２を参照）が格納しようとするファイルの内容であるファイルデータと、ファイルまたはディレクトリに関するメタデータを互いに区分し、記憶装置２０にフラッシュすることができ、図１１は、その中のファイルまたはディレクトリに関するメタデータがフラッシュする場合を図示するものである。
【０１０３】
しかし、本発明がこれに制限されるものではなく、本発明の他のいくつかの実施形態で、ファイルシステムモジュール（図２の１０３を参照）はユーザアプリケーション（図３の１２を参照）が格納しようとするファイルの内容のファイルデータと、ファイルまたはディレクトリに関するメタデータを互いに区分せず、記憶装置２０にフラッシュすることもできる。この場合、図１１に図示するライトバックキャッシュ１０４には図示するものとは異なってファイルデータとメタデータとが混在して格納され得る。
【０１０４】
再び、図１１を参照すると、第１ないし第３ページＰ１〜Ｐ３、第５ページＰ５、第７ページＰ７、および第９及び第１０ページＰ９、Ｐ１０は、ダーティフラグがセットされたダーティーページであるため、現在時点で記憶装置２０にフラッシュするページであることが分かり、、第４ページＰ４、第６ページＰ６、第８ページＰ８は、ダーティフラグがセットされていないため、現在時点で記憶装置２０にフラッシュする必要のないページであることが分かる。このように第４ページＰ４、第６ページＰ６、第８ページＰ８にダーティフラグがセットされていないことは、フラッシュが遂行される時点前にこのようなページＰ４、Ｐ６、Ｐ８に対するアップデートが行われたからであることは前述した。
【０１０５】
一方、第１ページＰ１及び第８ページＰ８は、記憶装置２０にデントリインダイレクトノードブロック（図６Ｂの１２１を参照）に格納されるページであり、第５ページＰ５及び第９ページＰ９は記憶装置２０にデントリダイレクトノードブロック（図６Ｂの１１１〜１１２を参照）に格納されるページであり、第２ページＰ２及び第４ページＰ４は記憶装置２０にインダイレクトノードブロック（図６Ａの９１〜９５を参照）に格納されるページであり、第３ページＰ３、第６ページＰ６、第７ページＰ７、第１０ページＰ１０は記憶装置２０にダイレクトノードブロック（図６Ａの８１〜８８を参照）に格納されるページである。
【０１０６】
次に、図１０を参照すると、記憶装置にファイルをインデックスするインダイレクトノードブロックとディレクトリをインデックスするデントリインダイレクトノードブロックに格納されるページを記憶装置にフラッシュする（Ｓ１１０）。
【０１０７】
前述した例で、ファイルシステムモジュール（図２の１０３を参照）は、図１１に図示するように、第１ページＰ１と第２ページＰ２を記憶装置２０のフリー領域４２にフラッシュする。この際、第４ページＰ４と第８ページＰ８は記憶装置２０に各々インダイレクトノードブロック（図６Ａの９１〜９５を参照）とデントリインダイレクトノードブロック（図６Ｂの１２１を参照）に格納されるページであるが、ダーティーページではないので、記憶装置２０にフラッシュしない。
【０１０８】
次に、図１０を参照すると、前記Ｓ１１０を行った後、要請したＮ個のページがすべてフラッシュしたのかを確認する（Ｓ１２０）。前述した例ではファイルシステムモジュール（図２の１０３を参照）が５個のページをフラッシュすることを要請したが、前記Ｓ１１０で２個のページＰ１、Ｐ２のみが記憶装置２０にフラッシュされたので、次の段階に進む。
【０１０９】
次に、図１０を参照すると、記憶装置にディレクトリをインデックスするダイレクトノードブロックに格納されるページを記憶装置にフラッシュする（Ｓ１３０）。
【０１１０】
前述した例で、ファイルシステムモジュール（図２の１０３を参照）は、図１２に図示するように、第５ページＰ５と第９ページＰ９を記憶装置２０のフリー領域４２にフラッシュする。ここで、記憶装置２０のフリー領域４２は順次アクセス方式により書き込まれる領域であるため、第５ページＰ５と第９ページＰ９は図示するように順次に増加する物理アドレスを有するブロックにフラッシュする。
【０１１１】
次に、図１０を参照すると、前記Ｓ１３０を行った後、要請したＮ個のページがすべてフラッシュしたのかを確認する（Ｓ１４０）。前述した例では、ファイルシステムモジュール（図２の１０３を参照）が５個のページをフラッシュすることを要請したが、前記Ｓ１３０まで行う間、４個のページ（Ｐ１、Ｐ２、Ｐ５、Ｐ９）が記憶装置２０にフラッシュされたので、次の段階に進む。
【０１１２】
次に、図１０を参照すると、記憶装置にファイルをインデックスするダイレクトノードブロックに格納されるページを記憶装置にフラッシュする（Ｓ１５０）。
【０１１３】
前述した例で、ファイルシステムモジュール（図２の１０３を参照）は、図１３に図示するように、第３ページＰ３を記憶装置２０のフリー領域４２にフラッシュする。この際、第７ページＰ７と第１０ページＰ１０はすでに最初に要請した５個のページが記憶装置２０にフラッシュされたので、これ以上記憶装置２０にフラッシュされない。
【０１１４】
記憶装置（図１の２０を参照）に格納されるメタデータはホスト１０によって頻繁にアップデートされる特性を有する。そして、このようなメタデータ中でもデータブロック（図６Ａの７０を参照）を直接指すダイレクトノードブロック（図６Ａの８１〜８８を参照）はファイルブロック（図６Ｂの１００を参照）を直接指すデントリダイレクトノードブロック（図６Ｂの１１１〜１１２を参照）よりアップデートが頻繁に行われ、デントリダイレクトノードブロック（図６Ｂの１１１〜１１２を参照）はダイレクトノードブロック（図６Ａの８１〜８８を参照）を指すインダイレクトノードブロック（図６Ａの９１〜９５を参照）であるが、デントリダイレクトノードブロック（図６Ｂの１１１〜１１２を参照）を指すデントリインダイレクトノードブロック（図６Ｂの１２１を参照）よりアップデートが頻繁に行われる。
【０１１５】
したがって、ライトバックキャッシュ（図２の１０４を参照）に格納されたページを記憶装置（図１の２０を参照）にフラッシュする際、このような特性を考慮し、アップデートが頻繁に行われるページが記憶装置（図１の２０を参照）にフラッシュすることを極力遅らせる場合、ページがアップデートされることによる不要な書き込み動作を減らせ、システムの動作性能が改善される。
【０１１６】
図１４は、本発明のいくつかの実施形態によるコンピュータシステムの具体的な一例を説明するためのブロック図である。
【０１１７】
図１４を参照すると、ホストサーバ３００はネットワーク３２０を介して多数のデータベースサーバ３３０、３４０、３５０、３６０と接続されている。ホストサーバ３００内に、データベースサーバ３３０、３４０、３５０、３６０のデータを管理するためのファイルシステム３１６を設ける。ファイルシステム３１６は図１ないし図１３を参照して説明したファイルシステムのうち何れか一つである。
【０１１８】
図１５ないし図１７は、本発明のいくつかの実施形態によるコンピュータシステムの具体的な他の例を説明するためのブロック図である。
【０１１９】
先ず、図１５を参照すると、記憶装置１００（図１の２０に対応する）は不揮発性メモリ装置１１００及びコントローラ１２００を含む。
【０１２０】
ここで、不揮発性メモリ装置１１００には、前述したスーパーブロック６１、６２、チェックポイント領域６３、セグメント情報テーブル６４、ノードアドレステーブル６５などが格納されている。
【０１２１】
コントローラ１２００は、ホスト及び不揮発性メモリ装置１１００に接続する。ホスト（Ｈｏｓｔ）からの要請に応答してコントローラ１２００は不揮発性メモリ装置１１００をアクセスするように構成される。例えば、コントローラ１２００は不揮発性メモリ装置１１００の読み込み、書き込み、削除、及びバックグラウンド（ｂａｃｋｇｒｏｕｎｄ）動作を制御するように構成される。コントローラ１２００は不揮発性メモリ装置１１００及びホストとの間にインターフェースを提供するように構成される。コントローラ１２００は不揮発性メモリ装置１１００を制御するためのファームウェア（ｆｉｒｍｗａｒｅ）を駆動するように構成される。
【０１２２】
例示的には、コントローラ１２００はＲＡＭ（ＲＡＭ、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、プロセシングユニット（ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）、ホストインターフェース（ｈｏｓｔ  ｉｎｔｅｒｆａｃｅ）、及びメモリインターフェース（ｍｅｍｏｒｙ  ｉｎｔｅｒｆａｃｅ）のようなよく知られている構成要素をさらに含む。ＲＡＭは、プロセシングユニットの動作メモリ、不揮発性メモリ装置１１００とホストとの間のキャッシュメモリ、そして不揮発性メモリ装置１１００とホストとの間のバッファメモリのうち少なくとも一つとして利用される。プロセシングユニットはコントローラ１２００の諸般動作を制御する。
【０１２３】
コントローラ１２００及び不揮発性メモリ装置１１００は一つの半導体装置に集積される。例示的には、コントローラ１２００及び不揮発性メモリ装置１１００は一つの半導体装置に集積され、メモリカードを構成する。例えば、コントローラ１２００及び不揮発性メモリ装置１１００は一つの半導体装置に集積され、ＰＣカード（ＰＣＭＣＩＡ、ｐｅｒｓｏｎａｌ  ｃｏｍｐｕｔｅｒ  ｍｅｍｏｒｙ  ｃａｒｄ  ｉｎｔｅｒｎａｔｉｏｎａｌ  ａｓｓｏｃｉａｔｉｏｎ）、コンパクトフラッシュ（登録商標）カード（ＣＦ）、スマートメディアカード（ＳＭ、ＳＭＣ）、メモリスティック、マルチメディアカード（ＭＭＣ、ＲＳ−ＭＭＣ、ＭＭＣｍｉｃｒｏ）、ＳＤカード（ＳＤ、ｍｉｎｉＳＤ、ｍｉｃｒｏＳＤ、ＳＤＨＣ）、ユニバーザルフラッシュ記憶装置（ＵＦＳ）などのようなメモリカードを構成する。
【０１２４】
コントローラ１２００及び不揮発性メモリ装置１１００は一つの半導体装置に集積されＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を構成する。ＳＳＤは半導体メモリにデータを格納するように構成される格納装置を備える。システム１０００が半導体ドライブＳＳＤとして利用される場合、システム１０００に接続されたホストの動作速度は画期的に改善される。
【０１２５】
他の例として、システム１０００はコンピュータ、ＵＭＰＣ（Ｕｌｔｒａ  ＭｏｂｉｌｅＰＣ）、ワークステーション、ネットブック（ｎｅｔ−ｂｏｏｋ）、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）、ポータブル（ｐｏｒｔａｂｌｅ）コンピュータ、ウェブタブレット（ｗｅｂ  ｔａｂｌｅｔ）、無線電話機（ｗｉｒｅｌｅｓｓ  ｐｈｏｎｅ）、モバイルフォン（ｍｏｂｉｌｅ  ｐｈｏｎｅ）、スマートフォン（ｓｍａｒｔ  ｐｈｏｎｅ）、ｅ−ブック（ｅ−ｂｏｏｋ）、ＰＭＰ（ｐｏｒｔａｂｌｅ  ｍｕｌｔｉｍｅｄｉａ  ｐｌａｙｅｒ）、携帯用ゲーム機、ナビゲーション（ｎａｖｉｇａｔｉｏｎ）装置、ブラックボックス（ｂｌａｃｋ  ｂｏｘ）、デジタルカメラ（ｄｉｇｉｔａｌ  ｃａｍｅｒａ）、３次元テレビ（３−ｄｉｍｅｎｓｉｏｎａｌ  ｔｅｌｅｖｉｓｉｏｎ）、デジタルオーディオレコーダ（ｄｉｇｉｔａｌ  ａｕｄｉｏ  ｒｅｃｏｒｄｅｒ）、デジタルオーディオプレーヤ（ｄｉｇｉｔａｌ  ａｕｄｉｏ  ｐｌａｙｅｒ）、デジタル画像レコーダ（ｄｉｇｉｔａｌ  ｐｉｃｔｕｒｅ  ｒｅｃｏｒｄｅｒ）、デジタル画像プレーヤ（ｄｉｇｉｔａｌ  ｐｉｃｔｕｒｅ  ｐｌａｙｅｒ）、デジタル動画レコーダ（ｄｉｇｉｔａｌ  ｖｉｄｅｏ  ｒｅｃｏｒｄｅｒ）、デジタル動画プレーヤ（ｄｉｇｉｔａｌ  ｖｉｄｅｏ  ｐｌａｙｅｒ）、情報を無線環境で送受信できる装置、ホームネットワークを構成する多様な電子装置のうち一つ、コンピューターネットワークを構成する多様な電子装置のうち一つ、テレマティクスネットワークを構成する多様な電子装置のうち一つ、ＲＦＩＤ装置、またはコンピュータシステムを構成する多様な構成要素のうち一つなどのような電子装置の多様な構成要素のうち一つとして提供される。
【０１２６】
例示的には、不揮発性メモリ装置１１００またはシステム１０００は多様な形態のパッケージで実装される。例えば、不揮発性メモリ装置１１００またはシステム１０００は  Ｐａｃｋａｇｅ  ｏｎ  Ｐａｃｋａｇｅ（ＰｏＰ）、Ｂａｌｌ  ｇｒｉｄ  ａｒｒａｙｓ（ＢＧＡｓ）、Ｃｈｉｐ  ｓｃａｌｅ  ｐａｃｋａｇｅｓ（ＣＳＰｓ）、Ｐｌａｓｔｉｃ  Ｌｅａｄｅｄ  Ｃｈｉｐ  Ｃａｒｒｉｅｒ（ＰＬＣＣ）、Ｐｌａｓｔｉｃ  Ｄｕａｌ  Ｉｎ  Ｌｉｎｅ  Ｐａｃｋａｇｅ（ＰＤＩＰ）、Ｄｉｅ  ｉｎ  Ｗａｆｆｌｅ  Ｐａｃｋ、Ｄｉｅ  ｉｎ  Ｗａｆｅｒ  Ｆｏｒｍ、Ｃｈｉｐ  Ｏｎ  Ｂｏａｒｄ（ＣＯＢ）、Ｃｅｒａｍｉｃ  Ｄｕａｌ  Ｉｎ  Ｌｉｎｅ  Ｐａｃｋａｇｅ（ＣＥＲＤＩＰ）、Ｐｌａｓｔｉｃ  Ｍｅｔｒｉｃ  Ｑｕａｄ  Ｆｌａｔ  Ｐａｃｋ（ＭＱＦＰ）、Ｔｈｉｎ  Ｑｕａｄ  Ｆｌａｔｐａｃｋ（ＴＱＦＰ）、Ｓｍａｌｌ  Ｏｕｔｌｉｎｅ（ＳＯＩＣ）、Ｓｈｒｉｎｋ  Ｓｍａｌｌ  Ｏｕｔｌｉｎｅ  Ｐａｃｋａｇｅ（ＳＳＯＰ）、Ｔｈｉｎ  Ｓｍａｌｌ  Ｏｕｔｌｉｎｅ（ＴＳＯＰ）、Ｔｈｉｎ  Ｑｕａｄ  Ｆｌａｔｐａｃｋ（ＴＱＦＰ）、Ｓｙｓｔｅｍ  Ｉｎ  Ｐａｃｋａｇｅ（ＳＩＰ）、Ｍｕｌｔｉ  Ｃｈｉｐ  Ｐａｃｋａｇｅ（ＭＣＰ）、Ｗａｆｅｒ−ｌｅｖｅｌ  Ｆａｂｒｉｃａｔｅｄ  Ｐａｃｋａｇｅ（ＷＦＰ）、Ｗａｆｅｒ−Ｌｅｖｅｌ  Ｐｒｏｃｅｓｓｅｄ  Ｓｔａｃｋ  Ｐａｃｋａｇｅ（ＷＳＰ）などのような方式でパッケージ化して実装される。
【０１２７】
次いで、図１６を参照すると、システム２０００は不揮発性メモリ装置２１００及びコントローラ２２００を含む。不揮発性メモリ装置２１００は複数の不揮発性メモリチップを含む。複数の不揮発性メモリチップは複数のグループに分割される。複数の不揮発性メモリチップの各グループは一つの共通チャンネルを介してコントローラ２２００と通信するように構成される。例えば、複数の不揮発性メモリチップは第１ないし第ｋチャンネル（ＣＨ１〜ＣＨｋ）を介してコントローラ２２００と通信することを図示している。
【０１２８】
図１６では、一つのチャンネルに複数の不揮発性メモリチップが接続するものとして図示している。しかし、一つのチャンネルに一つの不揮発性メモリチップが接続するようにシステム２０００が変形できることが分かるであろう。
【０１２９】
次いで、図１７を参照すると、システム３０００は、中央処理装置３１００、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３２００、ユーザインターフェース３３００、電源３４００、及び図１６のシステム２０００を含む。
【０１３０】
システム２０００は、システムバス３５００を介して中央処理処置３１００、ＲＡＭ３２００、ユーザインターフェース３３００、及び電源３４００に電気的に接続する。ユーザインターフェース３３００を介して提供されたり、中央処理装置３１００によって処理されたデータはシステム２０００に格納される。
【０１３１】
図１７は、不揮発性メモリ装置２１００はコントローラ２２００を介してシステムバス３５００に接続するものとして図示する。しかし、不揮発性メモリ装置２１００はシステムバス３５００に直接接続するように構成され得る。
【０１３２】
以上添付する図面を参照して本発明の実施形態について説明したが、本発明が属する技術分野で通常の知識を有する者は、本発明がその技術的思想や必須の特徴を変更しない範囲で他の具体的な形態で実施され得るということを理解できる。したがって、上記実施形態はすべての面で例示的なものであり、限定的なものではないと理解しなければならない。
【符号の説明】
【０１３３】
１０    ホスト
１４    仮想ファイルシステム
１６    ファイルシステム
１８    装置ドライバ
２０    記憶装置
１０２    キャッシュ管理モジュール
１０３    ファイルシステムモジュール
１０４    ライトバックキャッシュ
【図１】
2014071904.tif 000003
【図２】
2014071904.tif 000004
【図３】
2014071904.tif 000005
【図４】
2014071904.tif 000006
【図５】
2014071904.tif 000007
【図６Ａ】
2014071904.tif 000008
【図６Ｂ】
2014071904.tif 000009
【図７Ａ】
2014071904.tif 000010
【図７Ｂ】
2014071904.tif 000011
【図７Ｃ】
2014071904.tif 000012
【図７Ｄ】
2014071904.tif 000013
【図８】
2014071904.tif 000014
【図９Ａ】
2014071904.tif 000015
【図９Ｂ】
2014071904.tif 000016
【図１０】
2014071904.tif 000017
【図１１】
2014071904.tif 000018
【図１２】
2014071904.tif 000019
【図１３】
2014071904.tif 000020
【図１４】
2014071904.tif 000021
【図１５】
2014071904.tif 000022
【図１６】
2014071904.tif 000023
【図１７】
2014071904.tif 000024