JP6920448B2 - フラッシュメモリファイルシステム及びそのデータ管理方法 - Google Patents
フラッシュメモリファイルシステム及びそのデータ管理方法 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1847—File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/225—Hybrid cache memory, e.g. having both volatile and non-volatile portions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/46—Caching storage objects of specific type in disk cache
- G06F2212/463—File
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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
以下は本発明で詳しく説明した主題の概要である。本概要は、請求項の請求範囲を制限するためのものではない。
本発明の実施例では、作成モジュールと、標記モジュールと、同期モジュールと、裏込めモジュールとを含むフラッシュメモリファイルシステムであって、
作成モジュールは、ファイルシステムの作成時に、フラッシュメモリをファイルシステムエリアとフラッシュメモリバッファエリアとに分けるように設けられ、
標記モジュールは、書き込まれるデータがあり、かつ書き込まれるデータ量が、メモリキャッシュに書き込まれた、データの粒度に従って標記する必要のあるデータ量のサイズを表示するための、予め設定されたマーク閾値以下の場合に、メモリキャッシュにおいて、書き込みデータを汚データとして標記するように設けられ、
同期モジュールは、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてからフラッシュメモリバッファエリアに書き込み、フラッシュメモリバッファエリアがフルになった時に裏込めモジュールに通知するように設けられ、
裏込めモジュールは、同期モジュールの通知を受け取り、フラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、フラッシュメモリバッファエリアを消去するように設けられる、フラッシュメモリファイルシステムを提供する。
前記同期モジュールは、データを同期する必要がある場合に、前記メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第1のフラッシュメモリバッファエリアに書き込み、第1のフラッシュメモリバッファエリアがフルになった時に、第1通知を裏込めモジュールに送り、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第2のフラッシュメモリバッファエリアに書き込み、第2のフラッシュメモリバッファエリアがフルになった時に、第2通知を裏込めモジュールに送り、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第1のフラッシュメモリバッファエリアに書き込むように設けられ、
前記裏込めモジュールは、前記同期モジュールの第1通知を受け取った時に、第1のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第1のフラッシュメモリバッファエリアを消去し、同期モジュールの第2通知を受け取った時に、第2のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第2のフラッシュメモリバッファエリアを消去するように設けられる。
前記書き込みデータに対応するファイルの索引ノード番号を基に、当該ファイルの全てのレコードを検索し、新しいメモリページを申請し、複数のレコードの内容を順に前記新しいメモリページにコピーし、前記新しいメモリページにおける内容を順にフラッシュメモリバッファエリアに書き込むように設けられる。
フラッシュメモリバッファエリア内に汚データがある場合は、フラッシュメモリバッファエリアの全ての汚データを読み出し、各汚データを基に前記メモリキャッシュの内容を更新する。
ファイルシステムの作成時に、フラッシュメモリをファイルシステムエリアとフラッシュメモリバッファエリアとに分け、
書き込まれるデータがあり、かつ書き込まれるデータ量が、メモリキャッシュに書き込まれた、データの粒度に従って標記する必要のあるデータ量のサイズを表示するための、予め設定されたマーク閾値以下の場合に、メモリキャッシュにおいて、書き込みデータを汚データとして標記し、
データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてからフラッシュメモリバッファエリアに書き込み、
フラッシュメモリバッファエリアがフルになった時にフラッシュメモリバッファエリアにおける汚データを読み出してファイルシステムエリアに書き込み、フラッシュメモリバッファエリアを消去することを含む、フラッシュメモリファイルシステムのデータ管理方法を提供する。
データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第1のフラッシュメモリバッファエリアに書き込み、
第1のフラッシュメモリバッファエリアがフルになった時に、第2のフラッシュメモリバッファエリアを目下のバッファエリアとし、データを同期する必要がある場合に、書き込みデータが使用するのに用い、同時に、第1のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第1のフラッシュメモリバッファエリアを消去し、
第2のフラッシュメモリバッファエリアがフルになった時に、第1のフラッシュメモリバッファエリアを目下のバッファエリアとし、データを同期する必要がある場合に、書き込みデータが使用するのに用い、同時に、第2のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第2のフラッシュメモリバッファエリアを消去する。
書き込みデータに対応するファイルの索引ノード番号を基に、当該ファイルの全てのレコードを検索し、新しいメモリページを申請し、複数のレコードの内容を順に前記新しいメモリページにコピーし、前記新しいメモリページにおける内容を順にフラッシュメモリバッファエリアに書き込むことを含む。
フラッシュメモリファイルシステムの再起動時に、フラッシュメモリバッファエリア内に汚データがあるかどうかを検出し、
フラッシュメモリバッファエリア内に汚データがある場合は、フラッシュメモリバッファエリアの全ての汚データを読み出し、各汚データを基に前記メモリキャッシュの内容を更新することをさらに含む。
さらに、第1のフラッシュメモリバッファエリアと第2のフラッシュメモリバッファエリアを設けることにより、システムがその中の1つのフラッシュメモリバッファエリアを裏込めする期間において、別のバッファエリアが目下のバッファエリアとして機能し、期間の同期動作は順に他のバッファエリア内に書き込まれるため、裏込めによってシステム全体が停止し待機するという状況にはならず、2つのバッファエリアを交互に使うことで、システムの正常運行が保証される。
本発明の実施例の説明において、理解すべきことは、「中心」、「縦方向」、「横方向」、「上」、「下」、「前」、「後」、「左」、「右」、「鉛直」、「水平」、「頂」、「底」、「内」、「外」等の技術用語が指す方向または位置関係は、図面に示される方位または位置関係に基づくものであり、本発明の実施例の説明に便宜を計り説明を容易にするためのものに過ぎず、言及するデバイスまたは部品が特定の方向、特定の方向での構造と操作を有していなければならないということを指したり示唆したりするのではないため、本発明に対する制限であると理解することはできない。さらに、「第1」、「第2」という技術用語は説明だけを目的とし、相対的な重要性を指したり示唆したりするものと理解することはできない。
作成モジュール11は、ファイルシステムの作成時に、フラッシュメモリをファイルシステムエリアとフラッシュメモリバッファエリアとに分けるように設けられ、
標記モジュール12は、書き込まれるデータがあり、かつ書き込まれるデータ量が、メモリキャッシュに書き込まれた、データの粒度に従って標記する必要のあるデータ量のサイズを表示するための、予め設定されたマーク閾値以下の場合に、メモリキャッシュにおいて、書き込みデータを汚データとして標記するように設けられ、
同期モジュール13は、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてからフラッシュメモリバッファエリアに書き込み、フラッシュメモリバッファエリアがフルになった時に裏込めモジュールに通知するように設けられ、
裏込めモジュール14は、同期モジュールの通知を受け取り、フラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、フラッシュメモリバッファエリアを消去するように設けられる。
前記同期モジュールは、データを同期する必要がある場合に、前記メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第1のフラッシュメモリバッファエリアに書き込み、第1のフラッシュメモリバッファエリアがフルになった時に、第1通知を裏込めモジュールに送り、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第2のフラッシュメモリバッファエリアに書き込み、第2のフラッシュメモリバッファエリアがフルになった時に、第2通知を裏込めモジュールに送り、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第1のフラッシュメモリバッファエリアに書き込むように設けられ、
前記裏込めモジュールは、同期モジュールの第1通知を受け取った時に、第1のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第1のフラッシュメモリバッファエリアを消去し、同期モジュールの第2通知を受け取った時に、第2のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第2のフラッシュメモリバッファエリアを消去するように設けられる。
任意で、前記標記モジュール12は、書き込まれるデータがあり、かつ書き込まれるデータ量が、予め設けられたマーク閾値を上回る時、従来の入出力(IO)パスで処理を行うようにさらに設けられる。
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を加え、回収されないようにする。このようにして、後続の読み取り操作は、ページキャッシュにおけるページを通して引き続き読み取られる。
フラッシュメモリバッファエリア内に汚データがある場合は、フラッシュメモリバッファエリアの全ての汚データを読み出し、各汚データを基に前記メモリキャッシュの内容を更新する。
ファイルシステムの作成時に、フラッシュメモリをファイルシステムエリアとフラッシュメモリバッファエリアとに分けるステップ801と、
書き込まれるデータがあり、かつ書き込まれるデータ量が、メモリキャッシュに書き込まれた、データの粒度に従って標記する必要のあるデータ量のサイズを表示するための、予め設定されたマーク閾値以下の場合に、メモリキャッシュにおいて、書き込みデータを汚データとして標記するステップ802と、
データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてからフラッシュメモリバッファエリアに書き込むステップ803と、
フラッシュメモリバッファエリアがフルになった時にフラッシュメモリバッファエリアにおける汚データを読み出してファイルシステムエリアに書き込み、フラッシュメモリバッファエリアを消去するステップ804とを含む、フラッシュメモリファイルシステムのデータ管理方法をさらに提供する。
データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第1のフラッシュメモリバッファエリアに書き込み、
第1のフラッシュメモリバッファエリアがフルになった時に、第2のフラッシュメモリバッファエリアを目下のバッファエリアとし、データを同期する必要がある場合に、書き込みデータが使用するのに用い、同時に、第1のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第1のフラッシュメモリバッファエリアを消去し、
第2のフラッシュメモリバッファエリアがフルになった時に、第1のフラッシュメモリバッファエリアを目下のバッファエリアとし、データを同期する必要がある場合に、書き込みデータが使用するのに用い、同時に、第2のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第2のフラッシュメモリバッファエリアを消去する。2つのフラッシュメモリバッファエリアを設けることにより、システムがその中の1つのフラッシュメモリバッファエリアを裏込めする期間において、別のバッファエリアが目下のバッファエリアとして機能し、期間の同期動作は順に他のバッファエリア内に書き込まれるため、裏込めによってシステム全体が停止し待機するという状況にはならず、2つのバッファエリアを交互に使うことで、システムの正常運行が保証される。
任意で、前記マーク閾値のサイズは、具体的な読み取り加速プロセスに従って設定してよい。例えば、マーク閾値をメモリページサイズの半分(4096*50%=2048バイト)、またはメモリページサイズの80%(4096*80%=3276.8バイト)に設定することができる。
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を加え、回収されないようにする。このようにして、後続の読み取り操作は、ページキャッシュにおけるページを通して引き続き読み取られる。
フラッシュメモリバッファエリア内に汚データがある場合は、フラッシュメモリバッファエリアの全ての汚データを読み出し、各汚データを基に前記メモリキャッシュの内容を更新することをさらに含む。
任意で、第1のフラッシュメモリバッファエリアと第2のフラッシュメモリバッファエリアを設けることにより、システムがその中の1つのフラッシュメモリバッファエリアを裏込めする期間において、別のバッファエリアが目下のバッファエリアとして機能し、期間の同期動作は順に他のバッファエリア内に書き込まれるため、裏込めによってシステム全体が停止し待機するという状況にはならず、2つのバッファエリアを交互に使うことで、システムの正常運行が保証される。
本発明の実施例は、不要なデータの書き込みを回避することで、同期操作の遅延を低減し、フラッシュメモリの寿命を向上させ、さらには、2つのバッファエリアを交互に使用することで、システムの正常運転を保証している。
Claims (11)
- 作成モジュール(11)と、標記モジュール(12)と、同期モジュール(13)と、裏込めモジュール(14)とを含むフラッシュメモリファイルシステムであって、
作成モジュール(11)は、ファイルシステムの作成時に、フラッシュメモリをファイルシステムエリアとフラッシュメモリバッファエリアとに分けるように設けられ、
標記モジュール(12)は、書き込まれるデータがあり、かつ書き込まれるデータ量が、メモリキャッシュに書き込まれた、データの粒度に従って標記する必要のあるデータ量のサイズを表示するための、メモリページサイズより小さいマーク閾値以下の場合に、メモリキャッシュにおいて、書き込みデータを汚データとして標記するように設けられ、
同期モジュール(13)は、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてからフラッシュメモリバッファエリアに書き込み、フラッシュメモリバッファエリアがフルになった時に裏込めモジュール(14)に通知するように設けられ、
裏込めモジュール(14)は、同期モジュール(13)の通知を受け取り、フラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、フラッシュメモリバッファエリアを消去するように設けられる、フラッシュメモリファイルシステム。 - 前記フラッシュメモリバッファエリアが第1のフラッシュメモリバッファエリアと、第2のフラッシュメモリバッファエリアとを含むフラッシュメモリファイルシステムであって、
前記同期モジュール(13)は、データを同期する必要がある場合に、前記メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第1のフラッシュメモリバッファエリアに書き込み、第1のフラッシュメモリバッファエリアがフルになった時に、第1通知を裏込めモジュール(14)に送り、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第2のフラッシュメモリバッファエリアに書き込み、第2のフラッシュメモリバッファエリアがフルになった時に、第2通知を裏込めモジュール(14)に送り、データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第1のフラッシュメモリバッファエリアに書き込むように設けられ、
裏込めモジュール(14)は、前記同期モジュール(13)の第1通知を受け取った時に、第1のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第1のフラッシュメモリバッファエリアを消去し、同期モジュール(13)の第2通知を受け取った時に、第2のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第2のフラッシュメモリバッファエリアを消去するように設けられる、請求項1に記載のフラッシュメモリファイルシステム。 - 前記標記モジュール(12)は、書き込まれるデータがあり、かつ書き込まれるデータ量が前記マーク閾値以下である場合に、前記書き込みデータに対応するファイルの索引ノード番号、データセグメントのあるページ番号、ページ内のオフセット量、データセグメントの長さおよびデータセグメントの内容をレコードにパッケージし、予め設定された汚データリストにレコードを追加するとともに、書き込みデータに対応するメモリキャッシュページの参照カウントに1を加える、請求項1に記載のフラッシュメモリファイルシステム。
- 前記同期モジュール(13)は、
前記書き込みデータに対応するファイルの索引ノード番号を基に、当該ファイルの全てのレコードを検索し、新しいメモリページを申請し、複数のレコードの内容を順に前記新しいメモリページにコピーし、前記新しいメモリページにおける内容を順にフラッシュメモリバッファエリアに書き込むように設けられる、請求項3に記載のフラッシュメモリファイルシステム。 - フラッシュメモリファイルシステムの再起動時に、フラッシュメモリバッファエリア内に汚データがあるかどうかを検出し、フラッシュメモリバッファエリア内に汚データがある場合は、フラッシュメモリバッファエリアの全ての汚データを読み出し、各汚データを基に前記メモリキャッシュの内容を更新するように設けられる回復モジュール(15)をさらに備える、請求項1に記載のフラッシュメモリファイルシステム。
- ファイルシステムの作成時に、フラッシュメモリファイルシステムは、フラッシュメモリをファイルシステムエリアとフラッシュメモリバッファエリアとに分け(ステップS801)、
書き込まれるデータがあり、かつ書き込まれるデータ量が、メモリキャッシュに書き込まれた、データの粒度に従って標記する必要のあるデータ量のサイズを表示するための、メモリページサイズより小さいマーク閾値以下の場合に、フラッシュメモリファイルシステムは、メモリキャッシュにおいて、書き込みデータを汚データとして標記し(ステップS802)、
データを同期する必要がある場合に、フラッシュメモリファイルシステムは、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてからフラッシュメモリバッファエリアに書き込み(ステップS803)、
フラッシュメモリバッファエリアがフルになった時に、フラッシュメモリファイルシステムは、フラッシュメモリバッファエリアにおける汚データを読み出してファイルシステムエリアに書き込み、フラッシュメモリバッファエリアを消去する(ステップS804)ことを含む、フラッシュメモリファイルシステムのデータ管理方法。 - 前記フラッシュメモリバッファエリアが第1のフラッシュメモリバッファエリアと、第2のフラッシュメモリバッファエリアとを含むデータ管理方法であって、
データを同期する必要がある場合に、メモリキャッシュにおける全ての汚データまたは同期しようとするファイルの汚データをまとめてから第1のフラッシュメモリバッファエリアに書き込み、
第1のフラッシュメモリバッファエリアがフルになった時に、第2のフラッシュメモリバッファエリアを目下のバッファエリアとし、データを同期する必要がある場合に、メモリキャッシュに書き込まれた全ての汚データまたは同期しようとするファイルの汚データが使用するのに用い、同時に、第1のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第1のフラッシュメモリバッファエリアを消去し、
第2のフラッシュメモリバッファエリアがフルになった時に、第1のフラッシュメモリバッファエリアを目下のバッファエリアとし、データを同期する必要がある場合に、メモリキャッシュに書き込まれた全ての汚データまたは同期しようとするファイルの汚データが使用するのに用い、同時に、第2のフラッシュメモリバッファエリアにおける汚データを読み出してこれをファイルシステムエリアに書き込み、第2のフラッシュメモリバッファエリアを消去する、請求項6に記載のデータ管理方法。 - メモリキャッシュにおいて、書き込みデータを汚データとして標記することは、
前記書き込みデータに対応するファイルの索引ノード番号、データセグメントのあるページ番号、ページ内のオフセット量、データセグメントの長さおよびデータセグメントの内容をレコードにパッケージし、予め設定された汚データリストにレコードを追加するとともに、書き込みデータに対応するメモリキャッシュページの参照カウントに1を加えることを含む、請求項6に記載のデータ管理方法。 - 前記汚データリストにおける汚データをまとめてからフラッシュメモリバッファエリアに書き込むことは、
書き込みデータに対応するファイルの索引ノード番号を基に、当該ファイルの全てのレコードを検索し、新しいメモリページを申請し、複数のレコードの内容を順に前記新しいメモリページにコピーし、前記新しいメモリページにおける内容を順にフラッシュメモリバッファエリアに書き込むことを含む、請求項8に記載のデータ管理方法。 - フラッシュメモリファイルシステムの再起動時に、フラッシュメモリバッファエリア内に汚データがあるかどうかを検出し、
フラッシュメモリバッファエリア内に汚データがある場合は、フラッシュメモリバッファエリアの全ての汚データを読み出し、各汚データを基に前記メモリキャッシュの内容を更新することをさらに含む、請求項6に記載のデータ管理方法。 - コンピュータが実行可能なプログラムを記憶し、前記プログラムをコンピュータに実行させることによって、請求項6〜10のいずれか一項に記載のデータ管理方法を実現する、コンピュータ読み取り可能な記憶媒体。
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)
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)
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 | 中国科学院计算技术研究所 | 一种文件系统中异步批量创建文件的系统及方法 |
-
2017
- 2017-02-06 CN CN201710066027.4A patent/CN108399047B/zh active Active
-
2018
- 2018-02-06 EP EP18747430.9A patent/EP3579111A4/en active Pending
- 2018-02-06 JP JP2019542554A patent/JP6920448B2/ja active Active
- 2018-02-06 US US16/483,608 patent/US20200034340A1/en not_active Abandoned
- 2018-02-06 WO PCT/CN2018/075376 patent/WO2018141304A1/zh active Application Filing
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 |