JP6920448B2 - フラッシュメモリファイルシステム及びそのデータ管理方法 - Google Patents

フラッシュメモリファイルシステム及びそのデータ管理方法 Download PDF

Info

Publication number
JP6920448B2
JP6920448B2 JP2019542554A JP2019542554A JP6920448B2 JP 6920448 B2 JP6920448 B2 JP 6920448B2 JP 2019542554 A JP2019542554 A JP 2019542554A JP 2019542554 A JP2019542554 A JP 2019542554A JP 6920448 B2 JP6920448 B2 JP 6920448B2
Authority
JP
Japan
Prior art keywords
data
flash memory
buffer area
memory buffer
page
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019542554A
Other languages
English (en)
Other versions
JP2020510905A (ja
Inventor
継 武 舒
継 武 舒
聖 美 羅
聖 美 羅
遊 遊 陸
遊 遊 陸
佳 程 張
佳 程 張
洪 章 楊
洪 章 楊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Publication of JP2020510905A publication Critical patent/JP2020510905A/ja
Application granted granted Critical
Publication of JP6920448B2 publication Critical patent/JP6920448B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • 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
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host 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/0877Cache access modes
    • G06F12/0882Page mode
    • 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/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/162Delete operations
    • 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/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • 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/17Details of further file system functions
    • G06F16/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • 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/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • 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/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
    • 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/0643Management of files
    • 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/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/225Hybrid cache memory, e.g. having both volatile and non-volatile portions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • 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/463File
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Description

本発明は、メモリ技術分野に関するがこれに限定されるものではなく、具体的にフラッシュメモリファイルシステム及びそのデータ管理方法に関するものである。
フラッシュメモリ(Flash Memory)は、電子式消去可能プログラムメモリであり、従来の磁気ディスク媒体と比べて、読み書きの帯域幅が高く、アクセスの遅延が低く、電力消費が低く、安定性が高いという特徴があり、現在、データセンター、パソコン、モバイル機器などにおいて普及し始めている。フラッシュメモリはページ単位で読み書きを行い、ページを書き換える前に消去操作を行う必要がある。フラッシュメモリはブロック単位で消去を行い、1つのフラッシュメモリブロックには数百個のフラッシュメモリページが含まれている。フラッシュメモリユニットは、有限回数の消去操作を備え、即ち、各フラッシュメモリユニットは限られた寿命を有する。
ファイルシステムでは、ページキャッシュを使用して、最近操作したデータをキャッシュし、読み書きプロセスを加速する。データの読み取りが必要な場合は、まずページキャッシュにおいて当該部分の内容がメモリ内にあるかどうかを調べ、見つかればそのままデータに戻り、見つからなければフラッシュメモリ内において読み取る。書き込み操作が必要な場合は、デバイスにデータを直接書き込むのではなく、ページキャッシュにデータを書き込んだあと、該当ページを汚ページとして標記して、そのまま戻る。ユーザが同期呼び出しまたはオペレーティングシステムのバックグラウンドスレッドの同期動作を開始した時に、ページキャッシュにおける汚ページをフラッシュメモリデバイスに書き込む。
[発明の内容]
以下は本発明で詳しく説明した主題の概要である。本概要は、請求項の請求範囲を制限するためのものではない。
本発明の実施例は、不要なデータ書き込みを回避することができるフラッシュメモリファイルシステム及びそのデータ管理方法を提供する。
本発明の実施例の技術案は次のように実現される。
本発明の実施例では、作成モジュールと、標記モジュールと、同期モジュールと、裏込めモジュールとを含むフラッシュメモリファイルシステムであって、
作成モジュールは、ファイルシステムの作成時に、フラッシュメモリをファイルシステムエリアとフラッシュメモリバッファエリアとに分けるように設けられ、
標記モジュールは、書き込まれるデータがあり、かつ書き込まれるデータ量が、メモリキャッシュに書き込まれた、データの粒度に従って標記する必要のあるデータ量のサイズを表示するための、予め設定されたマーク閾値以下の場合に、メモリキャッシュにおいて、書き込みデータを汚データとして標記するように設けられ、
同期モジュールは、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてからフラッシュメモリバッファエリアに書き込み、フラッシュメモリバッファエリアがフルになった時に裏込めモジュールに通知するように設けられ、
裏込めモジュールは、同期モジュールの通知を受け取り、フラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、フラッシュメモリバッファエリアを消去するように設けられる、フラッシュメモリファイルシステムを提供する。
任意で、前記フラッシュメモリバッファエリアが第1のフラッシュメモリバッファエリアと、第2のフラッシュメモリバッファエリアとを含み、
前記同期モジュールは、データを同期する必要がある場合に、前記メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第1のフラッシュメモリバッファエリアに書き込み、第1のフラッシュメモリバッファエリアがフルになった時に、第1通知を裏込めモジュールに送り、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第2のフラッシュメモリバッファエリアに書き込み、第2のフラッシュメモリバッファエリアがフルになった時に、第2通知を裏込めモジュールに送り、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第1のフラッシュメモリバッファエリアに書き込むように設けられ、
前記裏込めモジュールは、前記同期モジュールの第1通知を受け取った時に、第1のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第1のフラッシュメモリバッファエリアを消去し、同期モジュールの第2通知を受け取った時に、第2のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第2のフラッシュメモリバッファエリアを消去するように設けられる。
任意で、前記標記モジュールは、書き込まれるデータがあり、かつ書き込まれるデータ量が前記マーク閾値以下である場合に、前記書き込みデータに対応するファイルの索引ノード番号、データセグメントのあるページ番号、ページ内のオフセット量、データセグメントの長さおよびデータセグメントの内容をレコードにパッケージし、予め設定された汚データリストにレコードを追加するとともに、書き込みデータに対応するメモリキャッシュページの参照カウントに1を加える。
任意で、前記同期モジュールは、
前記書き込みデータに対応するファイルの索引ノード番号を基に、当該ファイルの全てのレコードを検索し、新しいメモリページを申請し、複数のレコードの内容を順に前記新しいメモリページにコピーし、前記新しいメモリページにおける内容を順にフラッシュメモリバッファエリアに書き込むように設けられる。
任意で、前記システムは、フラッシュメモリファイルシステムの再起動時に、フラッシュメモリバッファエリア内に汚データがあるかどうかを検出するように設けられる回復モジュールをさらに備え、
フラッシュメモリバッファエリア内に汚データがある場合は、フラッシュメモリバッファエリアの全ての汚データを読み出し、各汚データを基に前記メモリキャッシュの内容を更新する。
本発明の実施例では、
ファイルシステムの作成時に、フラッシュメモリをファイルシステムエリアとフラッシュメモリバッファエリアとに分け、
書き込まれるデータがあり、かつ書き込まれるデータ量が、メモリキャッシュに書き込まれた、データの粒度に従って標記する必要のあるデータ量のサイズを表示するための、予め設定されたマーク閾値以下の場合に、メモリキャッシュにおいて、書き込みデータを汚データとして標記し、
データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてからフラッシュメモリバッファエリアに書き込み、
フラッシュメモリバッファエリアがフルになった時にフラッシュメモリバッファエリアにおける汚データを読み出してファイルシステムエリアに書き込み、フラッシュメモリバッファエリアを消去することを含む、フラッシュメモリファイルシステムのデータ管理方法を提供する。
任意で、前記フラッシュメモリバッファエリアが第1のフラッシュメモリバッファエリアと、第2のフラッシュメモリバッファエリアとを含み、
データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第1のフラッシュメモリバッファエリアに書き込み、
第1のフラッシュメモリバッファエリアがフルになった時に、第2のフラッシュメモリバッファエリアを目下のバッファエリアとし、データを同期する必要がある場合に、書き込みデータが使用するのに用い、同時に、第1のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第1のフラッシュメモリバッファエリアを消去し、
第2のフラッシュメモリバッファエリアがフルになった時に、第1のフラッシュメモリバッファエリアを目下のバッファエリアとし、データを同期する必要がある場合に、書き込みデータが使用するのに用い、同時に、第2のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第2のフラッシュメモリバッファエリアを消去する。
任意で、前記の、メモリキャッシュにおいて、書き込みデータを汚データとして標記することは、前記書き込みデータに対応するファイルの索引ノード番号、データセグメントのあるページ番号、ページ内のオフセット量、データセグメントの長さおよびデータセグメントの内容をレコードにパッケージし、予め設定された汚データリストにレコードを追加するとともに、書き込みデータに対応するメモリキャッシュページの参照カウントに1を加えることを含む。
任意で、前記汚データリストにおける汚データをまとめてからフラッシュメモリバッファエリアに書き込むことは、
書き込みデータに対応するファイルの索引ノード番号を基に、当該ファイルの全てのレコードを検索し、新しいメモリページを申請し、複数のレコードの内容を順に前記新しいメモリページにコピーし、前記新しいメモリページにおける内容を順にフラッシュメモリバッファエリアに書き込むことを含む。
任意で、前記のデータ管理方法は、
フラッシュメモリファイルシステムの再起動時に、フラッシュメモリバッファエリア内に汚データがあるかどうかを検出し、
フラッシュメモリバッファエリア内に汚データがある場合は、フラッシュメモリバッファエリアの全ての汚データを読み出し、各汚データを基に前記メモリキャッシュの内容を更新することをさらに含む。
本発明の実施例のフラッシュメモリファイルシステム及びそのデータ管理方法は、汚データを標記してまとめてからフラッシュメモリに書き込むことにより、不要なデータ書き込みを回避し、同期動作の遅延を低減し、フラッシュメモリの寿命を延ばしており、
さらに、第1のフラッシュメモリバッファエリアと第2のフラッシュメモリバッファエリアを設けることにより、システムがその中の1つのフラッシュメモリバッファエリアを裏込めする期間において、別のバッファエリアが目下のバッファエリアとして機能し、期間の同期動作は順に他のバッファエリア内に書き込まれるため、裏込めによってシステム全体が停止し待機するという状況にはならず、2つのバッファエリアを交互に使うことで、システムの正常運行が保証される。
図面および詳しい記載を閲読し理解すれば、その他の態様が分かる。
本発明の実施例に係るフラッシュメモリファイルシステムの構造模式図である。 本発明の実施例に係るフラッシュメモリファイルシステムのデータ構造模式図である。 本発明の実施例に係る合併レコードのデータ構造模式図である。 本発明の実施例に係る書き込みフラッシュメモリバッファエリアのデータ構造模式図である。 本発明の実施例に係る裏込め操作のデータ構造模式図である。 本発明の実施例に係る別のフラッシュメモリファイルシステムの構造模式図である。 本発明の実施例に係る故障回復のデータ構造模式図である。 本発明の実施例に係るフラッシュメモリファイルシステムのデータ管理方法のフロー模式図である。
[本発明を実施するための形態]
本発明の実施例の説明において、理解すべきことは、「中心」、「縦方向」、「横方向」、「上」、「下」、「前」、「後」、「左」、「右」、「鉛直」、「水平」、「頂」、「底」、「内」、「外」等の技術用語が指す方向または位置関係は、図面に示される方位または位置関係に基づくものであり、本発明の実施例の説明に便宜を計り説明を容易にするためのものに過ぎず、言及するデバイスまたは部品が特定の方向、特定の方向での構造と操作を有していなければならないということを指したり示唆したりするのではないため、本発明に対する制限であると理解することはできない。さらに、「第1」、「第2」という技術用語は説明だけを目的とし、相対的な重要性を指したり示唆したりするものと理解することはできない。
本発明の実施例の説明では、特に明確な規定と限定がない限り、「インストール」、「相連なる」、「接続」という技術用語は広義的に理解すべきであり、例えば固定接続であってよく、取り外し可能な接続、または一体的な接続であってもよく、機械的接続であってよく、電気的接続であってもよく、直接接続であってよく、中間媒体を介して間接的に接続してもよく、2つの部材内部の接続であってもよい。本発明の実施例における上記技術用語の意味は、当業者にとって具体的な状況に基づいて理解され得る。
以下の説明および図面を参照すれば、本発明の実施例のこれらおよび他の点が明らかになる。これらの説明および図面では、本発明の実施例の一部の特定の実施形態が公開され、本発明の実施例の原理を実施するいくつかの形態が示されているが、本発明の実施例の範囲はこの限りでないと理解されるべきである。対照的に、本発明の実施例は、添付の特許請求の範囲の精神および内包の範囲内に含まれるすべての変化、修正、および均等物を含む。
一回の書き込み操作でページ全体を汚ページとして標記するため、今回の書き込みがページのほんの一部に係るものに過ぎないとしても、同期操作を行うと、ページ全体がフラッシュメモリデバイスに書き込まれることになる。これにより、書き込みデータ量が大幅に増加し、同期操作の遅延が増加するだけでなく、システムの性能が低下し、フラッシュメモリデバイスの摩耗が増加し、その寿命は大幅に低下する。
これを基に、図1に示す通り、本発明の実施例では、作成モジュール11と、標記モジュール12と、同期モジュール13と、裏込めモジュール14とを含むフラッシュメモリファイルシステムを提供し、
作成モジュール11は、ファイルシステムの作成時に、フラッシュメモリをファイルシステムエリアとフラッシュメモリバッファエリアとに分けるように設けられ、
標記モジュール12は、書き込まれるデータがあり、かつ書き込まれるデータ量が、メモリキャッシュに書き込まれた、データの粒度に従って標記する必要のあるデータ量のサイズを表示するための、予め設定されたマーク閾値以下の場合に、メモリキャッシュにおいて、書き込みデータを汚データとして標記するように設けられ、
同期モジュール13は、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてからフラッシュメモリバッファエリアに書き込み、フラッシュメモリバッファエリアがフルになった時に裏込めモジュールに通知するように設けられ、
裏込めモジュール14は、同期モジュールの通知を受け取り、フラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、フラッシュメモリバッファエリアを消去するように設けられる。
なお、本発明の実施例における汚データとは、プロセスによって修正されたメモリキャッシュ内のデータを意味する。ファイルシステムはページをメモリキャッシュの単位とし、プロセスがメモリバッファ内のデータを修正した場合、当該ページは汚ページとして標記される。本発明の実施例は、不要なデータの書き込みを避けるために、バイトを粒度として、前記書き込みデータを汚データとして標記する。
任意で、前記フラッシュメモリバッファエリアのサイズは、ユーザによって指定されるか、またはシステムによって予め設定される。
任意で、ユーザによってフラッシュメモリバッファエリアのサイズが指定されると、ファイルシステムを作成してマウントする時に、ユーザが伝達するバッファエリアのサイズパラメータに基づいて、フラッシュメモリデバイスに単独のエリアを分割してバッファエリアとする。ファイルシステムが物理的空間割り当てを行う場合、割り当てられた空間はこのフラッシュメモリバッファエリア内にないため、フラッシュメモリバッファエリアはファイルシステムによって検索されない。
任意で、前記フラッシュメモリバッファエリアが第1のフラッシュメモリバッファエリアと、第2のフラッシュメモリバッファエリアとを含み、
前記同期モジュールは、データを同期する必要がある場合に、前記メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第1のフラッシュメモリバッファエリアに書き込み、第1のフラッシュメモリバッファエリアがフルになった時に、第1通知を裏込めモジュールに送り、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第2のフラッシュメモリバッファエリアに書き込み、第2のフラッシュメモリバッファエリアがフルになった時に、第2通知を裏込めモジュールに送り、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第1のフラッシュメモリバッファエリアに書き込むように設けられ、
前記裏込めモジュールは、同期モジュールの第1通知を受け取った時に、第1のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第1のフラッシュメモリバッファエリアを消去し、同期モジュールの第2通知を受け取った時に、第2のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第2のフラッシュメモリバッファエリアを消去するように設けられる。
2つのフラッシュメモリバッファエリアを設けることにより、システムがその中の1つのフラッシュメモリバッファエリアを裏込めする期間において、別のバッファエリアが目下のバッファエリアとして機能し、期間の同期動作は順に他のバッファエリア内に書き込まれるため、裏込めによってシステム全体が停止し待機するという状況にはならず、2つのバッファエリアを交互に使うことで、システムの正常運行が保証される。
任意で、前記メモリキャッシュはページキャッシュである。
任意で、前記標記モジュール12は、書き込まれるデータがあり、かつ書き込まれるデータ量が、予め設けられたマーク閾値を上回る時、従来の入出力(IO)パスで処理を行うようにさらに設けられる。
本発明の一実施例において、前記従来のIOパスに従って行われる処理は、書き込みデータをページキャッシュに書き込み、データに対応するページを汚ページとして標記し、それから戻ることを含む。
任意で、前記マーク閾値のサイズは、具体的な読み取り加速プロセスに従って設定してよい。例えば、マーク閾値をメモリページサイズの半分(4096*50%=2048バイト)、またはメモリページサイズの80%(4096*80%=3276.8バイト)に設定することができる。
任意で、標記モジュール12は、書き込まれるデータがあり、かつ書き込まれるデータ量が、予め設けられたマーク閾値以下の時、書き込みデータに対応するファイルの索引ノード番号(inode number)、データセグメントのあるページ番号(page number)、ページ内のオフセット量(page offset)、データセグメントの長さ(length)およびデータセグメントの内容(data)をレコード(record)にパッケージし(即ち、〈inode number、page number、page offset、length、data〉の形式)、予め設定された汚データリストにレコードを追加するとともに、該当ページのキャッシュページの参照カウントに1を加える。
なお、本発明の実施例の標記モジュール12は、予め設定された汚データリストを使用して汚データを標記してよく、他の方法で汚データを標記してもよい。前記の汚データリストは、配列、ツリーリスト、連結リストなどの任意のデータ構造を使用することができる。
なお、標記モジュール12は、書き込みデータを汚データリストに追加する時、該当ページのキャッシュページを汚ページとしてマークするのではなく、該当ページのキャッシュページの参照カウントに強制的に1を加え、これによりページキャッシュ内の書き込みデータがフラッシュメモリデバイスに書き込まれないようにして、このページ分のキャッシュページを強制的に保存して、高速読み取りを可能にする。
任意で、前記レコード内のデータセグメントの内容は、データセグメントの具体的な内容であってよく、ページキャッシュに対応するページを指すデータポインター(data pointer)であってもよい。
任意で、標記モジュール12は、基数ツリーおよびチェーンテーブルを使用して、同じファイルのすべてのレコードを構成し管理する。ラディックスツリーを使うのは検索を便利にするためで、チェーンを使うのは遍歴するのに便利であるからである。ラディックスツリー(radix_tree)は、あまり一般的ではないデータ構造で、Linux(登録商標)ファイルシステムの記憶方式の一種であり、ツリー構造は主に、ツリーのルートノードを指すルートポイント(root)、空いているノードチェーンを指すフリーポイント(free)、アイドルメモリブロックを指すスタートポイント(start)という3つのポイントを含み、各使用中のノードは、parent、left、rightポイントを使用して互いに接続され、空いているノードは、rightポイントを介してリンクテーブルに接続されている。索引ノード(inode)は、多くの種類のUnixファイルシステムのデータ構造の一種であり、各索引ノードはファイルシステム内の1つのファイルシステムオブジェクトの元の情報データを保存しているが、データコンテンツまたはファイル名は含まれていない。
図2に示すように、標記モジュール12は、索引ノード番号を索引として、対応するノードがファイルを表す基数ツリーを維持し、遍歴するのに便利なように、基数ツリーにおける全てのリーフノードを連結リストで連結する。当該基数ツリーの各ノードも1つの基数ツリーを維持し、ページ番号を索引として、各ノードは某ページのレコードを表している。各レコードには、索引ノード番号、ページ番号、ページ内のオフセット量、データセグメントの長さおよびページキャッシュに対応するページを指すデータポインターという5つの要素を含み(即ち、〈inode number、page number、offset、data pointer〉という形式)、遍歴するのに便利なように、同一ファイルの全てのレコードも連結リストで連結する。
書き込み要求を受信した時、標記モジュール12は、今回の書き込み操作の索引ノード番号を基に図2の基数ツリー内で検索を行うように設けられ、対応するノードが見つからなければ、新しくノードを作成し、これを基数ツリーとチェーンノードの連結リストに挿入し、当該ノードの基数ツリー内において今回の書き込み操作に関するページ番号を索引として対応するレコードを検索する。対応するレコードが見つからなければ、新しくレコードを作成し、この索引ノード番号、ページ番号、ページ内のオフセット量、データセグメントの長さおよびメモリページポインターを相応値に割り振る。対応するレコードが見つかれば、2つのレコードをまとめる必要があり、索引ノード番号、ページ番号、メモリページのポインターは変わらず、ページ内のオフセット量、データセグメントの長さを以下の通り更新する。
new offset = min(old offset,current offset)
new length =max(old offset + old length,current offset + current length)- new offset
そのうち、new offsetは新レコードのページ内のオフセット値、old offsetは元レコードのページ内のオフセット値、current offsetは目下の書き込み操作のページ内のオフセット値、new lengthは新レコードのデータセグメントの長さ、old lengthは元レコードのデータセグメントの長さ、current lengthは目下の書き込み操作のデータセグメントの長さを表す。上記状況を基に新レコードの1つまたは複数項の値を算出した後、これを基数ツリーと連結リストに挿入する。そして、ページキャッシュにおけるメモリページを引き続き更新するが、ファイルシステムにおいて当該メモリページの全ページをフラッシュメモリデバイスに書き込まないように、システムは当該ページを汚れとして標記しない。ページが汚れとして標記されないため、ファイルシステムによって随時回収されてしまう恐れがあり、データの効率的な読み取りと一致性を維持するために、メモリページの参照カウントに強制的に1を加え、回収されないようにする。このようにして、後続の読み取り操作は、ページキャッシュにおけるページを通して引き続き読み取られる。
任意で、同期モジュール(13)は、書き込みデータに対応するファイルの索引ノード番号を基に当該ファイルの全てのレコードを検索し、新しいメモリページを申請し、複数のレコードの内容を順に前記新しいメモリページにコピーし、前記新しいメモリページにおける内容を順にフラッシュメモリバッファエリアに書き込むように設けられる。
任意で、図3に示すように、データを同期する必要がある場合に、同期モジュール13は、図2に示す基数ツリー内において索引ノード番号を基に対応するノードを見つけ、新しいメモリページを申請し、その後、当該ノードの全てのレコードを遍歴し、各レコードの示すページキャッシュにおけるデータセグメントについて、これらをページキャッシュから前記新しいメモリページにコピーし、索引ノード番号、ページ番号、ページ内のオフセット量、データセグメントの長さなどの値を含む目下のレコード情報も併せて前記新しいメモリページにコピーしてから、レコード構造を図2のデータ構造から削除する。そして、図4を参照すると、前記新しいメモリページの内容をフラッシュメモリバッファエリアに順に書き込み、当該ファイルの全てのレコードの処理が完了するまで上記過程を繰り返す。
任意で、フラッシュメモリバッファエリアに書き込まれた新しいメモリページの内容が1ページ未満またはメモリページサイズの整数倍でない場合、新しいメモリページの内容が1ページを満たすかまたはメモリページサイズの整数倍になるように無意味データを補填する。
任意で、図5を参照すると、裏込めモジュール14は、同期モジュール13の通知を受信した時、まず、図2に示すデータ構造を遍歴し、そのうちの各ノードに対して、そのすべてのレコードを再び遍歴し、各レコードはページキャッシュにおけるメモリページを指し、これらの、レコードによって示されるメモリページを全て汚れとして標記し、参照カウントからを1を引く(書き込み要求を受信した時に、レコードを形成し、メモリページを強制的に保存するために、レコードが示すメモリページの参照カウントに1を加える)ように設けられ、その後、図2のデータ構造の中から当該レコードを削除し、1つのノードにおける全てのレコードの処理が完了した時に当該ノードを基数ツリーから削除する。基数ツリーにおける全てのノードの処理が完了したあと、バッファエリア全体を消去する。
任意で、図6を参照すると、フラッシュメモリファイルシステムの再起動時に、フラッシュメモリバッファエリア内に汚データがあるかどうかを検出するように設けられる回復モジュール15をさらに備え、
フラッシュメモリバッファエリア内に汚データがある場合は、フラッシュメモリバッファエリアの全ての汚データを読み出し、各汚データを基に前記メモリキャッシュの内容を更新する。
突然の漏電などのアクシデントが発生した場合、システム障害の復旧が必要となる。任意で、図7に示すように、フラッシュメモリファイルシステムの再起動時に、回復モジュール15はフラッシュメモリバッファエリア内に汚データがあるかどうかを検出し、フラッシュメモリバッファエリア内に汚データがある場合は、フラッシュメモリバッファエリアから全てのレコードを読み出し、そのうちの各レコードについて、その中の索引ノード番号とページ番号に基づいて、ファイルシステムエリアから該当データ(当該データは古いデータである)を読み出し、ページ内のオフセット値に従って、レコード内の内容をページキャッシュの対応ページにコピーし、全てのレコードの処理が完了するまで上記過程を繰り返す。このとき、システム全体は最新の状態に戻っており、故障回復過程は終了する。
図8に示すように、本発明の実施例では、
ファイルシステムの作成時に、フラッシュメモリをファイルシステムエリアとフラッシュメモリバッファエリアとに分けるステップ801と、
書き込まれるデータがあり、かつ書き込まれるデータ量が、メモリキャッシュに書き込まれた、データの粒度に従って標記する必要のあるデータ量のサイズを表示するための、予め設定されたマーク閾値以下の場合に、メモリキャッシュにおいて、書き込みデータを汚データとして標記するステップ802と、
データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてからフラッシュメモリバッファエリアに書き込むステップ803と、
フラッシュメモリバッファエリアがフルになった時にフラッシュメモリバッファエリアにおける汚データを読み出してファイルシステムエリアに書き込み、フラッシュメモリバッファエリアを消去するステップ804とを含む、フラッシュメモリファイルシステムのデータ管理方法をさらに提供する。
なお、本発明の実施例における汚データとは、プロセスによって修正されたメモリキャッシュ内のデータを意味する。ファイルシステムはページをメモリキャッシュの単位とし、プロセスがメモリバッファ内のデータを修正した場合、当該ページは汚ページとして標記される。本発明の実施例は、不要なデータの書き込みを避けるために、バイトを粒度として、前記書き込みデータを汚データとして標記する。
任意で、前記フラッシュメモリバッファエリアのサイズは、ユーザによって指定されるか、またはシステムによって予め設定される。
任意で、ユーザによってフラッシュメモリバッファエリアのサイズが指定されると、ファイルシステムを作成してマウントする時に、ユーザが伝達するバッファエリアのサイズパラメータに基づいて、フラッシュメモリデバイスに単独のエリアを分割してバッファエリアとする。ファイルシステムが物理的空間割り当てを行う場合、割り当てられた空間はこのフラッシュメモリバッファエリア内にないため、フラッシュメモリバッファエリアはファイルシステムによって検索されない。
任意で、前記フラッシュメモリバッファエリアが第1のフラッシュメモリバッファエリアと、第2のフラッシュメモリバッファエリアとを含み、
データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第1のフラッシュメモリバッファエリアに書き込み、
第1のフラッシュメモリバッファエリアがフルになった時に、第2のフラッシュメモリバッファエリアを目下のバッファエリアとし、データを同期する必要がある場合に、書き込みデータが使用するのに用い、同時に、第1のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第1のフラッシュメモリバッファエリアを消去し、
第2のフラッシュメモリバッファエリアがフルになった時に、第1のフラッシュメモリバッファエリアを目下のバッファエリアとし、データを同期する必要がある場合に、書き込みデータが使用するのに用い、同時に、第2のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第2のフラッシュメモリバッファエリアを消去する。2つのフラッシュメモリバッファエリアを設けることにより、システムがその中の1つのフラッシュメモリバッファエリアを裏込めする期間において、別のバッファエリアが目下のバッファエリアとして機能し、期間の同期動作は順に他のバッファエリア内に書き込まれるため、裏込めによってシステム全体が停止し待機するという状況にはならず、2つのバッファエリアを交互に使うことで、システムの正常運行が保証される。
任意で、前記データ管理方法は、書き込まれるデータがあり、かつ書き込まれるデータ量がマーク閾値を上回る時、従来の入出力(IO)パスで処理を行うことをさらに含む。
本発明の一実施例において、前記従来のIOパスに従って行われる処理は、書き込みデータをページキャッシュに書き込み、データに対応するページを汚ページとして標記し、それから戻ることを含む。
任意で、前記メモリキャッシュはページキャッシュである。
任意で、前記マーク閾値のサイズは、具体的な読み取り加速プロセスに従って設定してよい。例えば、マーク閾値をメモリページサイズの半分(4096*50%=2048バイト)、またはメモリページサイズの80%(4096*80%=3276.8バイト)に設定することができる。
任意で、前記メモリキャッシュにおいて、書き込みデータを汚データとして標記することは、書き込みデータに対応するファイルの索引ノード番号(inode number)、データセグメントのあるページ番号(page number)、ページ内のオフセット量(page offset)、データセグメントの長さ(length)およびデータセグメントの内容(data)をレコード(record)にパッケージすることを含み(即ち、〈inode number、page number、page offset、length、data〉の形式)、予め設定された汚データリストにレコードを追加するとともに、該当ページのキャッシュページの参照カウントに1を加える。
なお、本発明の実施例は、予め設定された汚データリストを使用して汚データを標記してよく、他の方法で汚データを標記してもよい。前記の汚データリストは、配列、ツリーリスト、連結リストなどの任意のデータ構造を使用することができる。
なお、本発明実施例のデータ管理方法は、書き込みデータを汚データリストに追加する時、該当ページのキャッシュページを汚ページとしてマークするのではなく、該当ページのキャッシュページの参照カウントに強制的に1を加え、これによりページキャッシュの書き込みデータがフラッシュメモリデバイスに書き込まれないようにして、このページ分のキャッシュページを強制的に保存して、高速読み取りを可能にする。
任意で、前記レコード内のデータセグメントの内容は、データセグメントの具体的な内容であってよく、ページキャッシュに対応するページを指すデータポインター(data pointer)であってもよい。
任意で、前記データ管理方法は、基数ツリーおよびチェーンテーブルを使用して、同じファイルのすべてのレコードを構成し管理する。ラディックスツリーを使うのは検索を便利にするためで、チェーンを使うのは遍歴するのに便利であるからである。ラディックスツリー(radix_tree)は、あまり一般的ではないデータ構造で、Linuxファイルシステムの記憶方式の一種であり、ツリー構造は主に、ツリーのルートノードを指すルートポイント(root)、空いているノードチェーンを指すフリーポイント(free)、アイドルメモリブロックを指すスタートポイント(start)という3つのポイントを含み、各使用中のノードは、parent、left、rightポイントを使用して互いに接続され、空いているノードは、rightポイントを介してリンクテーブルに接続されている。索引ノード(inode)は、多くの種類のUnixファイルシステムのデータ構造の一種であり、各索引ノードはファイルシステムの1つのファイルシステムオブジェクトの元の情報データを保存しているが、データコンテンツまたはファイル名は含まれていない。
図2に示すように、本発明実施例のファイルシステムは索引ノード番号を索引とした基数ツリーAを維持する。ノード101はファイル1を表し、ノード102はファイル2を表し、ノード103はファイル3を表す。ファイル1、ファイル2、ファイル3はそれぞれ基数ツリーB1、基数ツリーB2、基数ツリーB3と呼ばれる1つの基数ツリーを維持している。基数ツリーB1を例として述べると、前記基数ツリーB1はページ番号を索引とし、ノード1011はレコード1を表し、ノード1012はレコード2を表し、ノード1013はレコード3を表し、ノード1014はレコード4を表し、ノード1015はレコード5を表す。
各レコードには、索引ノード番号、ページ番号、ページ内のオフセット量、データセグメントの長さおよびページキャッシュに対応するページを指すデータポインターという5つの要素を含み〈即ち、inode number、page number、offset、data pointer〉という形式)、遍歴するのに便利なように、同一ファイルの全てのレコードも連結リストで連結する。図2に示すように、本発明実施例のファイルシステムは索引ノード番号を索引として、対応するノード101がファイルを表す基数ツリーを維持し、遍歴するのに便利なように、基数ツリーにおける全てのノード101を連結リストで連結する。当該基数ツリーの各ノードも1つの基数ツリーを維持し、ページ番号を索引として、各ノードはあるページのレコードを表している。各レコードには、索引ノード番号、ページ番号、ページ内のオフセット量、データセグメントの長さおよびページキャッシュに対応するページを指すデータポインターという5つの要素を含み(即ち、〈inode number、page number、offset、data pointer〉という形式)、遍歴するのに便利なように、同一ファイルの全てのレコードも連結リストで連結する。
書き込まれるデータがある場合、今回の書込み操作の索引ノード番号を基に図2の基数ツリー内で検索し、対応するノードが見つからなければ、新しくノードを作成し、これを基数ツリーとチェーンノードの連結リストに挿入し、当該ノードの基数ツリーにおいて今回の書き込み操作に関するページ番号を索引として対応するレコードを検索する。対応するレコードが見つからなければ、新しくレコードを作成し、この索引ノード番号、ページ番号、ページ内のオフセット量、データセグメントの長さおよびメモリページポインターを相応値に割り振る。対応するレコードが見つかれば、2つのレコードをまとめる必要があり、索引ノード番号、ページ番号、メモリページのポインターは変わらず、ページ内のオフセット量、データセグメントの長さを以下の通り更新する。
new offset = min(old offset,current offset)
new length =max(old offset + old length,current offset + current length)- new offset
そのうち、new offsetは新レコードのページ内のオフセット値、old offsetは元レコードのページ内のオフセット値、current offsetは目下の書き込み操作のページ内のオフセット値、new lengthは新レコードのデータセグメントの長さ、old lengthは元レコードのデータセグメントの長さ、current lengthは目下の書き込み操作のデータセグメントの長さを表す。上記状況を基に新レコードの1つまたは複数項の値を算出した後、これを基数ツリーと連結リストに挿入する。そして、ページキャッシュにおけるメモリページを引き続き更新するが、ファイルシステムにおいて当該メモリページの全ページをフラッシュメモリデバイスに書き込まないように、システムは当該ページを汚れとして標記しない。ページが汚れとして標記されないため、ファイルシステムによって随時回収されてしまう恐れがあり、データの効率的な読み取りと一致性を維持するために、メモリページの参照カウントに強制的に1を加え、回収されないようにする。このようにして、後続の読み取り操作は、ページキャッシュにおけるページを通して引き続き読み取られる。
任意で、同期しようとするファイルの汚データをまとめてからフラッシュメモリバッファエリアに書き込むことは、書き込みデータに対応するファイルの索引ノード番号を基に、当該ファイルの全てのレコードを検索し、新しいメモリページを申請し、複数のレコードの内容を順に前記新しいメモリページにコピーし、前記新しいメモリページにおける内容を順にフラッシュメモリバッファエリアに書き込むことを含む。
任意で、図3に示すように、データを同期する必要がある場合に、図2に示す基数ツリー内において索引ノード番号を基に対応するノードを見つけ、新しいメモリページを申請し、その後、当該ノードの全てのレコードを遍歴し、各レコードの示すページキャッシュにおけるデータセグメントについて、これらをページキャッシュから前記新しいメモリページにコピーし、索引ノード番号、ページ番号、ページ内のオフセット量、データセグメントの長さなどの値を含む目下のレコードの情報も併せて前記新しいメモリページにコピーしてから、レコード構造を図2のデータ構造から削除する。そして、図4を参照すると、前記新しいメモリページの内容をフラッシュメモリバッファエリアに順に書き込み、当該ファイルの全てのレコードの処理が完了するまで上記過程を繰り返す。
任意で、フラッシュメモリバッファエリアに書き込まれた新しいメモリページの内容が1ページ未満またはメモリページサイズの整数倍でない場合、新しいメモリページの内容が1ページを満たすかまたはメモリページサイズの整数倍になるように無意味データを補填する。
任意で、目下のバッファエリアがフルになった時、図5を参照すると、まず、図2に示すデータ構造を遍歴し、そのうちの各ノードに対して、そのすべてのレコードを再び遍歴し、各レコードは、ページキャッシュのメモリページを指し、これらの、レコードによって示されるメモリページを全て汚ページとして標記し、参照カウントからを1を引き(書き込み要求を受信した時に、レコードを形成し、メモリページを強制的に保存するために、レコードが示すメモリページの参照カウントに1を加える)、汚ページをファイルシステムエリア内に書き込み、その後、図2のデータ構造の中から当該レコードを削除し、1つのノードにおける全てのレコードの処理が完了した時に当該ノードを基数ツリーから削除する。基数ツリーにおける全てのノードの処理が完了したあと、バッファエリア全体を消去する。
任意で、前記データ管理方法は、フラッシュメモリファイルシステムの再起動時に、フラッシュメモリバッファエリア内に汚データがあるかどうかを検出し、
フラッシュメモリバッファエリア内に汚データがある場合は、フラッシュメモリバッファエリアの全ての汚データを読み出し、各汚データを基に前記メモリキャッシュの内容を更新することをさらに含む。
突然の漏電などのアクシデントが発生した場合、システム障害の復旧が必要となる。任意で、図7に示すように、フラッシュメモリファイルシステムの再起動時に、フラッシュメモリバッファエリア内に汚データがあるかどうかを検出し、フラッシュメモリバッファエリア内に汚データがある場合は、フラッシュメモリバッファエリアから全てのレコードを読み出し、そのうちの各レコードについて、その中の索引ノード番号とページ番号に基づいて、ファイルシステムエリアから該当データ(当該データは古いデータである)を読み出し、ページ内のオフセット値に従って、レコード内の内容をページキャッシュの対応ページにコピーし、全てのレコードの処理が完了するまで上記過程を繰り返す。このとき、システム全体は最新の状態に戻っており、故障回復過程は終了する。
本発明の実施例のフラッシュメモリファイルシステム及びそのデータ管理方法は、汚データを標記してまとめてからフラッシュメモリに書き込むことにより、不要なデータ書き込みを回避し、同期動作の遅延を低減し、フラッシュメモリの寿命を延ばしており、
任意で、第1のフラッシュメモリバッファエリアと第2のフラッシュメモリバッファエリアを設けることにより、システムがその中の1つのフラッシュメモリバッファエリアを裏込めする期間において、別のバッファエリアが目下のバッファエリアとして機能し、期間の同期動作は順に他のバッファエリア内に書き込まれるため、裏込めによってシステム全体が停止し待機するという状況にはならず、2つのバッファエリアを交互に使うことで、システムの正常運行が保証される。
本発明実施例では、コンピュータが実行可能な指令を記憶し、前記コンピュータが実行可能な指令がプロセッサによって実行される時に、上記実施例の方法を実現する、コンピュータ読み取り可能な記憶媒体をさらに提供する。
上記で公開された方法のすべてまたはあるステップ、システム、デバイス内の機能モジュール/ユニットは、ソフトウェア、ファームウェア、ハードウェア、およびそれらの適切な組み合わせで実施されてもよいということを当業者は理解することができる。ハードウェアの実施の形態では、上述した機能モジュール/ユニット間の区分は、必ずしも物理的ユニットの区分に対応しているとは限らない。例えば、1つの物理的な部品は、複数の機能を有してよく、あるいは、1つの機能またはステップは、いくつかの物理的な部品が共同で実行するものであってもよい。あるモジュールまたはすべての部品は、デジタル信号プロセッサまたはマイクロプロセッサのようなプロセッサにより実行されるソフトウェアとして実施されてよく、またはハードウェアとして実施されてもよく、または専用集積回路などの集積回路として実施されてもよい。このようなソフトウェアは、コンピュータ読み取り可能な媒体に分布することができ、コンピュータ読み取り可能な媒体は、コンピュータ記憶媒体(または非一時的媒体)および通信媒体(または一時的媒体)を含んでよい。当業者が周知のように、コンピュータ記憶媒体という技術用語は、情報を記憶するための(コンピュータ読み取り可能な指令、データ構造、プログラムモジュールまたは他のデータなど)全ての方法または技術で実施される揮発性および不揮発性、リムーバブルおよびリムーバブルでない媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多機能ディスク(DVD)または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置を含むが、これらに限定されず、あるいは所望の情報を記憶するために使用され、かつコンピュータによってアクセス可能なあらゆる媒体である。さらに、通信媒体が、一般的に、コンピュータ読み取り可能な指令、データ構造、プログラムモジュール、または搬送波あるいは他の伝送機構のような変調データ信号における他のデータを含み、全ての情報伝送媒体を含むことができるということは当業者にとって公知である。
上記は本発明の選択可能な実施例に過ぎず、本発明を限定するものではない。当業者にとって、本発明は様々な変更および変化があってよい。本発明の精神及び原則の範囲内において、なされた全ての修正、均等置換、改善等は、いずれも本発明の請求範囲内に含まれる。当業者は、上記方法における全てまたは一部のステップが、読み取り専用メモリ、磁気ディスク、または光ディスクなどのコンピュータで読み取り可能な記憶媒体に記憶できるプログラムによって、関連するハードウェアの完成を指示することができると理解することができる。任意で、上記実施例の全部または一部のステップは、1つまたは複数の集積回路を使用して実現してよく、これに応じて、上記実施例の各モジュール/モジュールは、ハードウェアとして実現してよく、ソフトウェア機能モジュールとして実現してもよい。本願は、いかなる特定の形態のハードウェアとソフトウェアの組み合わせにも限定されない。
[産業上の実用性]
本発明の実施例は、不要なデータの書き込みを回避することで、同期操作の遅延を低減し、フラッシュメモリの寿命を向上させ、さらには、2つのバッファエリアを交互に使用することで、システムの正常運転を保証している。

Claims (11)

  1. 作成モジュール(11)と、標記モジュール(12)と、同期モジュール(13)と、裏込めモジュール(14)とを含むフラッシュメモリファイルシステムであって、
    作成モジュール(11)は、ファイルシステムの作成時に、フラッシュメモリをファイルシステムエリアとフラッシュメモリバッファエリアとに分けるように設けられ、
    標記モジュール(12)は、書き込まれるデータがあり、かつ書き込まれるデータ量が、メモリキャッシュに書き込まれた、データの粒度に従って標記する必要のあるデータ量のサイズを表示するための、メモリページサイズより小さいマーク閾値以下の場合に、メモリキャッシュにおいて、書き込みデータを汚データとして標記するように設けられ、
    同期モジュール(13)は、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてからフラッシュメモリバッファエリアに書き込み、フラッシュメモリバッファエリアがフルになった時に裏込めモジュール(14)に通知するように設けられ、
    裏込めモジュール(14)は、同期モジュール(13)の通知を受け取り、フラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、フラッシュメモリバッファエリアを消去するように設けられる、フラッシュメモリファイルシステム。
  2. 前記フラッシュメモリバッファエリアが第1のフラッシュメモリバッファエリアと、第2のフラッシュメモリバッファエリアとを含むフラッシュメモリファイルシステムであって、
    前記同期モジュール(13)は、データを同期する必要がある場合に、前記メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第1のフラッシュメモリバッファエリアに書き込み、第1のフラッシュメモリバッファエリアがフルになった時に、第1通知を裏込めモジュール(14)に送り、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第2のフラッシュメモリバッファエリアに書き込み、第2のフラッシュメモリバッファエリアがフルになった時に、第2通知を裏込めモジュール(14)に送り、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第1のフラッシュメモリバッファエリアに書き込むように設けられ、
    裏込めモジュール(14)は、前記同期モジュール(13)の第1通知を受け取った時に、第1のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第1のフラッシュメモリバッファエリアを消去し、同期モジュール(13)の第2通知を受け取った時に、第2のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第2のフラッシュメモリバッファエリアを消去するように設けられる、請求項1に記載のフラッシュメモリファイルシステム。
  3. 前記標記モジュール(12)は、書き込まれるデータがあり、かつ書き込まれるデータ量が前記マーク閾値以下である場合に、前記書き込みデータに対応するファイルの索引ノード番号、データセグメントのあるページ番号、ページ内のオフセット量、データセグメントの長さおよびデータセグメントの内容をレコードにパッケージし、予め設定された汚データリストにレコードを追加するとともに、書き込みデータに対応するメモリキャッシュページの参照カウントに1を加える、請求項1に記載のフラッシュメモリファイルシステム。
  4. 前記同期モジュール(13)は、
    前記書き込みデータに対応するファイルの索引ノード番号を基に、当該ファイルの全てのレコードを検索し、新しいメモリページを申請し、複数のレコードの内容を順に前記新しいメモリページにコピーし、前記新しいメモリページにおける内容を順にフラッシュメモリバッファエリアに書き込むように設けられる、請求項3に記載のフラッシュメモリファイルシステム。
  5. フラッシュメモリファイルシステムの再起動時に、フラッシュメモリバッファエリア内に汚データがあるかどうかを検出し、フラッシュメモリバッファエリア内に汚データがある場合は、フラッシュメモリバッファエリアの全ての汚データを読み出し、各汚データを基に前記メモリキャッシュの内容を更新するように設けられる回復モジュール(15)をさらに備える、請求項1に記載のフラッシュメモリファイルシステム。
  6. ファイルシステムの作成時に、フラッシュメモリファイルシステムは、フラッシュメモリをファイルシステムエリアとフラッシュメモリバッファエリアとに分け(ステップS801)、
    書き込まれるデータがあり、かつ書き込まれるデータ量が、メモリキャッシュに書き込まれた、データの粒度に従って標記する必要のあるデータ量のサイズを表示するための、メモリページサイズより小さいマーク閾値以下の場合に、フラッシュメモリファイルシステムは、メモリキャッシュにおいて、書き込みデータを汚データとして標記し(ステップS802)、
    データを同期する必要がある場合に、フラッシュメモリファイルシステムは、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてからフラッシュメモリバッファエリアに書き込み(ステップS803)、
    フラッシュメモリバッファエリアがフルになった時に、フラッシュメモリファイルシステムは、フラッシュメモリバッファエリアにおける汚データを読み出してファイルシステムエリアに書き込み、フラッシュメモリバッファエリアを消去する(ステップS804)ことを含む、フラッシュメモリファイルシステムのデータ管理方法。
  7. 前記フラッシュメモリバッファエリアが第1のフラッシュメモリバッファエリアと、第2のフラッシュメモリバッファエリアとを含むデータ管理方法であって、
    データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第1のフラッシュメモリバッファエリアに書き込み、
    第1のフラッシュメモリバッファエリアがフルになった時に、第2のフラッシュメモリバッファエリアを目下のバッファエリアとし、データを同期する必要がある場合に、メモリキャッシュに書き込まれた全ての汚データまたは同期しようとするファイルの汚データが使用するのに用い、同時に、第1のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第1のフラッシュメモリバッファエリアを消去し、
    第2のフラッシュメモリバッファエリアがフルになった時に、第1のフラッシュメモリバッファエリアを目下のバッファエリアとし、データを同期する必要がある場合に、メモリキャッシュに書き込まれた全ての汚データまたは同期しようとするファイルの汚データが使用するのに用い、同時に、第2のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第2のフラッシュメモリバッファエリアを消去する、請求項6に記載のデータ管理方法。
  8. メモリキャッシュにおいて、書き込みデータを汚データとして標記することは、
    前記書き込みデータに対応するファイルの索引ノード番号、データセグメントのあるページ番号、ページ内のオフセット量、データセグメントの長さおよびデータセグメントの内容をレコードにパッケージし、予め設定された汚データリストにレコードを追加するとともに、書き込みデータに対応するメモリキャッシュページの参照カウントに1を加えることを含む、請求項6に記載のデータ管理方法。
  9. 前記汚データリストにおける汚データをまとめてからフラッシュメモリバッファエリアに書き込むことは、
    書き込みデータに対応するファイルの索引ノード番号を基に、当該ファイルの全てのレコードを検索し、新しいメモリページを申請し、複数のレコードの内容を順に前記新しいメモリページにコピーし、前記新しいメモリページにおける内容を順にフラッシュメモリバッファエリアに書き込むことを含む、請求項8に記載のデータ管理方法。
  10. フラッシュメモリファイルシステムの再起動時に、フラッシュメモリバッファエリア内に汚データがあるかどうかを検出し、
    フラッシュメモリバッファエリア内に汚データがある場合は、フラッシュメモリバッファエリアの全ての汚データを読み出し、各汚データを基に前記メモリキャッシュの内容を更新することをさらに含む、請求項6に記載のデータ管理方法。
  11. コンピュータが実行可能なプログラムを記憶し、前記プログラムをコンピュータ実行させることによって、請求項6〜10のいずれか一項に記載のデータ管理方法を実現する、コンピュータ読み取り可能な記憶媒体。
JP2019542554A 2017-02-06 2018-02-06 フラッシュメモリファイルシステム及びそのデータ管理方法 Active JP6920448B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201710066027.4 2017-02-06
CN201710066027.4A CN108399047B (zh) 2017-02-06 2017-02-06 一种闪存文件系统及其数据管理方法
PCT/CN2018/075376 WO2018141304A1 (zh) 2017-02-06 2018-02-06 一种闪存文件系统及其数据管理方法

Publications (2)

Publication Number Publication Date
JP2020510905A JP2020510905A (ja) 2020-04-09
JP6920448B2 true JP6920448B2 (ja) 2021-08-18

Family

ID=63039351

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019542554A Active JP6920448B2 (ja) 2017-02-06 2018-02-06 フラッシュメモリファイルシステム及びそのデータ管理方法

Country Status (5)

Country Link
US (1) US20200034340A1 (ja)
EP (1) EP3579111A4 (ja)
JP (1) JP6920448B2 (ja)
CN (1) CN108399047B (ja)
WO (1) WO2018141304A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110895515A (zh) * 2018-09-12 2020-03-20 中兴通讯股份有限公司 内存缓存管理方法、多媒体服务器及计算机存储介质
CN110245121A (zh) * 2019-05-08 2019-09-17 深圳市战音科技有限公司 文件管理方法、系统以及电子设备
CN110704468A (zh) * 2019-10-17 2020-01-17 武汉微派网络科技有限公司 数据更新方法、装置及控制器
CN113377684B (zh) * 2020-03-09 2024-03-08 瑞昱半导体股份有限公司 数据写入系统与方法
US11762578B2 (en) * 2020-09-29 2023-09-19 International Business Machines Corporation Buffer pool contention optimization
CN112506442A (zh) * 2020-12-22 2021-03-16 深圳市时创意电子有限公司 一种闪存芯片数据处理方法、装置、电子设备及存储介质
CN117854553A (zh) * 2024-03-06 2024-04-09 北京云豹创芯智能科技有限公司 一种数据整形电路、方法和芯片

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7975109B2 (en) * 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
KR101543431B1 (ko) * 2008-11-20 2015-08-11 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 액세스 방법
JP2012008651A (ja) * 2010-06-22 2012-01-12 Toshiba Corp 半導体記憶装置、その制御方法および情報処理装置
CN102063271B (zh) * 2010-12-17 2014-08-13 曙光信息产业(北京)有限公司 一种磁盘外置Cache基于状态机的写回方法
WO2012116369A2 (en) * 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
WO2012083754A1 (zh) * 2011-10-20 2012-06-28 华为技术有限公司 处理脏数据的方法及装置
US9135123B1 (en) * 2011-12-28 2015-09-15 Emc Corporation Managing global data caches for file system
CN102841851B (zh) * 2012-07-19 2015-09-09 深圳市江波龙电子有限公司 闪存管理方法和闪存设备
CN104102695B (zh) * 2014-06-26 2017-11-10 晨星半导体股份有限公司 智能设备启动过程的数据处理方法及智能设备
EP3180700B1 (en) * 2014-08-15 2020-03-25 Microsoft Technology Licensing, LLC Flushing in file system
CN105573918A (zh) * 2015-12-17 2016-05-11 深圳市新国都支付技术有限公司 一种轻量级闪存系统和方法
CN105740334A (zh) * 2016-01-22 2016-07-06 中国科学院计算技术研究所 一种文件系统中异步批量创建文件的系统及方法

Also Published As

Publication number Publication date
WO2018141304A1 (zh) 2018-08-09
EP3579111A4 (en) 2020-11-25
US20200034340A1 (en) 2020-01-30
CN108399047A (zh) 2018-08-14
EP3579111A1 (en) 2019-12-11
JP2020510905A (ja) 2020-04-09
CN108399047B (zh) 2022-11-29

Similar Documents

Publication Publication Date Title
JP6920448B2 (ja) フラッシュメモリファイルシステム及びそのデータ管理方法
US11301379B2 (en) Access request processing method and apparatus, and computer device
KR102033323B1 (ko) 플래시 메모리에서 사용하는 로그 구조 파일시스템의 메타데이터 저장 방법
US20090043978A1 (en) Efficient hierarchical storage management of a file system with snapshots
TWI387879B (zh) 儲存空間管理方法及應用該方法之電腦系統
US11030092B2 (en) Access request processing method and apparatus, and computer system
CN106357703B (zh) 集群切换方法与设备
CN113568582B (zh) 数据管理方法、装置和存储设备
CN109804359A (zh) 用于将数据回写到存储设备的系统和方法
US10795579B2 (en) Methods, apparatuses, system and computer program products for reclaiming storage units
CN109491605A (zh) 一种基于cow的数据存储方法、装置和介质
CN115454723A (zh) 一种基于存储快照的数据备份、恢复方法及其系统
US9471580B2 (en) File management apparatus, file management method, and program
KR20090042570A (ko) 파일 관리 장치 및 방법과 기억 장치
KR101102754B1 (ko) 낸드 플래시 메모리 파일 시스템 및 낸드 플래시 메모리 시스템에서 파일 엑세스 방법
CN111597066A (zh) Ssd修复方法、装置、计算机设备及存储介质
KR101618999B1 (ko) 네트워크 부트 시스템
KR101086392B1 (ko) Wal 기법에서 대용량 객체의 파손 회복 방법
US11625184B1 (en) Recalling files from tape
CN116303245A (zh) 一种文件系统快照创建方法、装置、设备及介质
JP2004102660A (ja) ロールバック可能fatファイルシステム及びプログラム
CN114968946A (zh) 一种存储设备和对应的操作方法及装置
JP2008299664A (ja) フォーマット装置及びフォーマット方法
JP2006106810A (ja) ファイル管理装置、ファイル管理方法、記録媒体及びプログラム
JP2017146722A (ja) ストレージ装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190821

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201027

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210127

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20210127

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210726

R150 Certificate of patent or registration of utility model

Ref document number: 6920448

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150