CN108399047A - 一种闪存文件***及其数据管理方法 - Google Patents
一种闪存文件***及其数据管理方法 Download PDFInfo
- Publication number
- CN108399047A CN108399047A CN201710066027.4A CN201710066027A CN108399047A CN 108399047 A CN108399047 A CN 108399047A CN 201710066027 A CN201710066027 A CN 201710066027A CN 108399047 A CN108399047 A CN 108399047A
- Authority
- CN
- China
- Prior art keywords
- data
- flash memory
- memory buffer
- dirty
- written
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- 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
- 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
- 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
- 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
- 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)
Abstract
本发明提供了一种闪存文件***及其数据管理方法,包括创建模块,用于在创建文件***时,将闪存划分成文件***区和闪存缓冲区;标记模块,用于在有数据写入且写入的数据量小于或等于预设标记阈值时,在内存缓存中将写入数据标记为脏数据,标记阈值用于表示写入内存缓存的需要按数据粒度进行标记的数据量大小;同步模块,用于在需要进行数据同步时,将内存缓存中的脏数据合并后写入闪存缓冲区,并当闪存缓冲区已满时,通知回填模块;回填模块,用于接收到同步模块的通知,读出闪存缓冲区中的脏数据并将其写入文件***区,并擦除闪存缓冲区。本发明避免了不必要的数据写入,从而降低了同步操作的延时,提高了闪存的使用寿命。
Description
技术领域
本发明涉及但不限于存储技术领域,具体涉及一种闪存文件***及其数据管理方法。
背景技术
闪存(Flash Memory)是一种电子式可擦除编程存储器,与传统的磁盘介质相比,闪存具有读写带宽高、访问延迟低、功耗低、稳定性强的特点,目前,闪存已经开始在数据中心、个人电脑、移动设备上普及。闪存以页为单位进行读写,当闪存重写一个页之前,需要先进行擦除操作。闪存以块为单位进行擦除,一个闪存块中包含几百个闪存页。闪存的单元具有有限次的擦写操作,即每个闪存单元具有有限的寿命。
在文件***中,使用页高速缓存来缓存最近操作的数据,以加速读写过程。当需要读取数据时,首先在页高速缓存中查找该部分内容是否驻留在内存中,如果找到,则直接返回数据;如果没找到,再到闪存中进行读取。当需要进行写操作时,不再直接把数据写入到设备中,而是把数据写入到页高速缓存后将相应页面标记为脏页,然后直接返回。当用户发出同步调用或操作***后台线程启动同步操作时,将页高速缓存中的脏页写入到闪存设备中。
由于一次写操作将整个页面标记为脏页,这样,即使本次写操作仅仅涉及到该页面的很少一部分,当执行同步操作时,仍会将整个页面写入到闪存设备中。这使得写入数据量大大增加,不仅增加了同步操作的延时,降低了***的性能,而且增加了闪存设备的磨损,大大降低了其寿命。
发明内容:
本发明实施例提供一种闪存文件***及其数据管理方法,能够避免不必要的数据写入。
为了达到本发明目的,本发明实施例的技术方案是这样实现的:
本发明实施例提供了一种闪存文件***,包括:创建模块、标记模块、同步模块和回填模块;其中,
创建模块,用于在创建文件***时,将闪存划分成文件***区和闪存缓冲区;
标记模块,用于在有数据写入且写入的数据量小于或等于预设标记阈值时,在内存缓存中将写入数据标记为脏数据,其中,所述标记阈值用于表示写入内存缓存的需要按数据粒度进行标记的数据量大小;
同步模块,用于在需要进行数据同步时,将内存缓存中的所有脏数据或要同步的文件的脏数据合并后写入闪存缓冲区,并当闪存缓冲区已满时,通知回填模块;
回填模块,用于接收到同步模块的通知,读出闪存缓冲区中的脏数据并将其写入文件***区,并擦除闪存缓冲区。
进一步地,所述闪存缓冲区包括第一闪存缓冲区和第二闪存缓冲区;其中,
所述同步模块具体用于:在需要进行数据同步时,将所述内存缓存中的所有脏数据或要同步的文件的脏数据合并后写入第一闪存缓冲区;当第一闪存缓冲区已满时,发送第一通知至回填模块,并在需要进行数据同步时,将内存缓存中的所有脏数据或要同步的文件的脏数据合并后写入第二闪存缓冲区;第二闪存缓冲区已满时,发送第二通知至回填模块,并在需要进行数据同步时,将内存缓存中的所有脏数据或要同步的文件的脏数据合并后写入第一闪存缓冲区;
所述回填模块具体用于:当接收到所述同步模块的第一通知时,读出第一闪存缓冲区中的脏数据并将其写入文件***区,并擦除第一闪存缓冲区;当接收到同步模块的第二通知时,读出第二闪存缓冲区中的脏数据并将其写入文件***区,并擦除第二闪存缓冲区。
进一步地,所述标记模块具体用于:在有数据写入且写入的数据量小于或等于所述标记阈值时,将所述写入数据对应的文件的索引节点号、数据段所在的页面号、页面内的偏移量、数据段的长度以及数据段内容封装成记录,将记录添加至预设的脏数据列表;并将写入数据对应的内存缓存页面的引用计数加一。
进一步地,所述同步模块具体用于:
根据所述写入数据对应的文件的索引节点号查找该文件的所有记录,申请新的内存页面,将多个记录的内容顺序拷贝至所述新的内存页面,将所述新的内存页面的内容顺序写入到闪存缓冲区。
进一步地,所述***还包括:恢复模块,用于在闪存文件***重启时,检测闪存缓冲区中是否有脏数据;
如果闪存缓冲区中有脏数据,读出闪存缓冲区的所有脏数据,根据每条脏数据更新所述内存缓存的内容。
本发明实施例还提供了一种闪存文件***的数据管理方法,包括:
在创建文件***时,将闪存划分成文件***区和闪存缓冲区;
在有数据写入且写入的数据量小于等于预设标记阈值时,在内存缓存中将写入数据标记为脏数据,其中,所述标记阈值用于表示写入内存缓存的需要按数据粒度进行标记的数据量大小;
在需要进行数据同步时,将内存缓存中的所有脏数据或要同步的文件的脏数据合并后写入闪存缓冲区;
当闪存缓冲区已满时,读出闪存缓冲区中的脏数据并将其写入文件***区,并擦除闪存缓冲区。
进一步地,所述闪存缓冲区包括第一闪存缓冲区和第二闪存缓冲区;其中,
在需要进行数据同步时,将内存缓存中的所有脏数据或要同步的文件的脏数据合并后写入第一闪存缓冲区;
当第一闪存缓冲区已满时,将第二闪存缓冲区设成当前缓冲区,用于在需要进行数据同步时,写入数据使用;同时读出第一闪存缓冲区中的脏数据并将其写入文件***区,并擦除第一闪存缓冲区;
当第二闪存缓冲区已满时,将第一闪存缓冲区设成当前缓冲区,用于在需要进行数据同步时,写入数据使用;同时读出第二闪存缓冲区中的脏数据并将其写入文件***区,并擦除第二闪存缓冲区。
进一步地,所述在内存缓存中将写入数据标记为脏数据,具体包括:将所述写入数据对应的文件的索引节点号、数据段所在的页面号、页面内的偏移量、数据段的长度以及数据段内容封装成记录,将记录添加至预设的脏数据列表;并将写入数据对应的内存缓存页面的引用计数加一。
进一步地,所述将脏数据列表中的脏数据合并后写入闪存缓冲区,具体包括:
根据写入数据对应的文件的索引节点号查找该文件的所有记录,申请新的内存页面,将多个记录的内容顺序拷贝至所述新的内存页面,将所述新的内存页面的内容顺序写入到闪存缓冲区。
进一步地,所述的数据管理方法,还包括:
在闪存文件***重启时,检测闪存缓冲区中是否有脏数据;
如果闪存缓冲区中有脏数据,读出闪存缓冲区的所有脏数据,根据每条脏数据更新所述内存缓存的内容。
本发明的闪存文件***及其数据管理方法,通过对脏数据进行标记,并将脏数据合并后写入闪存,避免了不必要的数据写入,从而降低了同步操作的延时,提高了闪存的使用寿命;
进一步地,通过设置第一闪存缓冲区和第二闪存缓冲区,在***回填其中一个闪存缓冲区期间,由另一缓冲区充当当前缓冲区,期间的同步操作均顺序写入到另一缓冲区中,因此不会因为回填造成整个***停下来等待的情况;两块缓冲区轮流交替使用,保证了***的正常运转。
附图说明
图1是本发明实施例提供的一种闪存文件***的结构示意图;
图2是本发明实施例提供的闪存文件***的数据结构示意图;
图3是本发明实施例的合并记录的数据结构示意图;
图4是本发明实施例的写入闪存缓冲区的数据结构示意图;
图5是本发明实施例的回填操作的数据结构示示意图。
图6是本发明实施例提供的另一种闪存文件***的结构示意图;
图7是本发明实施例的故障恢复的数据结构示意图;
图8是本发明实施例提供的闪存文件***的数据管理方法的流程示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
参照下面的描述和附图,将清楚本发明的实施例的这些和其他方面。在这些描述和附图中,具体公开了本发明的实施例中的一些特定实施方式,来表示实施本发明的实施例的原理的一些方式,但是应当理解,本发明的实施例的范围不受此限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
如图1所示,根据本发明的一种闪存文件***,包括:创建模块11、标记模块12、同步模块13和回填模块14;其中,
创建模块11,用于在创建文件***时,将闪存划分成文件***区和闪存缓冲区;
标记模块12,用于在有数据写入且写入的数据量小于等于预设标记阈值时,在内存缓存中将写入数据标记为脏数据,其中,所述标记阈值用于表示写入内存缓存的需要按数据粒度进行标记的数据量大小;
同步模块13,用于在需要进行数据同步时,将内存缓存中的所有脏数据或要同步的文件的脏数据合并后写入闪存缓冲区,并当闪存缓冲区已满时,通知回填模块;
回填模块14,用于接收到同步模块的通知,读出闪存缓冲区中的脏数据并将其写入文件***区,并擦除闪存缓冲区。
需要说明的是,本发明所述的脏数据,指的是被进程修改了的内存缓存里的数据。现有的文件***以页作为内存缓存的单位,当进程修改了内存缓存里的数据时,该页就被标记为脏页。本发明以字节为粒度,将所述写入数据标记为脏数据,以避免不必要的数据写入。
进一步地,所述闪存缓冲区的大小,由用户指定或者***预先设置。
具体地,如果由用户指定闪存缓冲区的大小,在创建和挂载文件***时,根据用户传递的缓冲区大小参数,在闪存设备上划分出一块单独的区域充当缓冲区。文件***进行物理空间分配时,分配的空间都不在此闪存缓冲区之内,因此闪存缓冲区不会被文件***所索引。
进一步地,所述闪存缓冲区包括第一闪存缓冲区和第二闪存缓冲区;其中,
所述同步模块具体用于:在需要进行数据同步时,将所述内存缓存中的所有脏数据或要同步的文件的脏数据合并后写入第一闪存缓冲区;第一闪存缓冲区已满时,发送第一通知至回填模块,并在需要进行数据同步时,将内存缓存中的所有脏数据或要同步的文件的脏数据合并后写入第二闪存缓冲区;第二闪存缓冲区已满时,发送第二通知至回填模块,并在需要进行数据同步时,将内存缓存中的所有脏数据或要同步的文件的脏数据合并后写入第一闪存缓冲区;
所述回填模块具体用于:当接收到同步模块的第一通知时,读出第一闪存缓冲区中的脏数据并将其写入文件***区,并擦除第一闪存缓冲区;当接收到同步模块的第二通知时,读出第二闪存缓冲区中的脏数据并将其写入文件***区,并擦除第二闪存缓冲区。
通过设置两块闪存缓冲区,在***回填其中一个闪存缓冲区期间,由另一缓冲区充当当前缓冲区,期间的同步操作均顺序写入到另一缓冲区中,因此不会因为回填造成整个***停下来等待的情况;两块缓冲区轮流交替使用,保证了***的正常运转。
进一步地,所述内存缓存为页高速缓存。
进一步地,所述标记模块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>的形式,将记录添加至预设的脏数据列表;并将相应的页高速缓存页面的引用计数加一。
需要说明的是,本发明的标记模块12既可以使用预设的脏数据列表来标记脏数据,也可以使用其他的方法来标记脏数据。所述的脏数据列表可以使用任意的数据结构,如数组、树形列表、链表等。
值得注意的是,标记模块12将写入数据添加至脏数据列表时,并不将相应的页高速缓存页面标记为脏页,而是强制将相应的页高速缓存页面的引用计数加一,从而使得页高速缓存中的写入数据不被写入到闪存设备上,强制保留这部分页高速缓存页面,以供快速读取。
进一步地,所述记录中的数据段内容可以是数据段的具体内容,也可以是一个指向页高速缓存对应页面的指针(data pointer)。
进一步地,标记模块12使用基树和链表来组织和管理同一个文件的所有记录。使用基树是为了方便检索,使用链表是为了方便遍历。基树(radix_tree)是一种不太常用的数据结构,是Linux文件***的一种存储方式,树结构主要包含三个指针:根指针(root):指向树的根结点;空闲指针(free):指向空闲的结点链表;开始指针(start):指向空闲的内存块,每个使用中的节点使用parent、left、right指针相互连接,空闲的结点通过right指针连成一个链表。索引节点(inode)是在许多类Unix文件***中的一种数据结构,每个索引节点保存了文件***中的一个文件***对象的元信息数据,但不包括数据内容或者文件名。
如图2所示,标记模块12维护了一棵基树,所述基树以索引节点号为索引,相应的叶子节点代表了一个文件;为了方便遍历,将基树中的所有叶子结点使用链表链接起来。该基树中的每一个叶子节点也维持了一棵基树,以页面号为索引,每个叶子节点表示某个页面的记录。每条记录包括五个元素:索引节点号、页面号、页内偏移值、数据段长度和一个指向页高速缓存对应页面的指针,即<inode number,page number,offset,length,datapointer>的形式,为了方便遍历,同一文件的所有记录也用链表链接起来。
在接收到写入请求时,标记模块12根据本次写操作的索引节点号在图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表示当前写入操作的数据段长度。根据以上情况计算得到新纪录的各项值以后,将其***基树和链表中。然后仍然对页高速缓存中的内存页面进行更新,但是为了防止文件***将该内存页面整页写入闪存设备,***不再将该页面标记为脏。由于页面不再标记为脏,随时有被文件***回收的危险,为了维护数据的高效读取和一致性,强制将内存页面的引用计数加一,从而强制保证其不被回收。这样,后续的读取操作仍然通过页高速缓存中的页面读取。
进一步地,同步模块13具体用于:根据写入数据对应的文件的索引节点号查找该文件的所有记录,申请新的内存页面,将多个记录的内容顺序拷贝至所述新的内存页面,将所述新的内存页面的内容顺序写入到闪存缓冲区。
具体地,如图3所示,在需要进行数据同步时,同步模块13在图2所示的基树中根据索引节点号找到相应的叶子节点,申请新的内存页面,然后遍历该叶子节点的所有记录,对于每一条记录所指向的页高速缓存数据段,把它们从页高速缓存中拷贝到所述新的内存页面,并把当前记录的信息,包括索引节点号、页面号、页面内偏移、数据段长度等值也一并拷贝到所述新的内存页面,然后将记录结构从图2的数据结构中删除;然后,参照图4,将所述新的内存页面中的内容顺序写入到闪存缓冲区;接着重复上述过程,直到属于该文件的所有记录处理完毕。
进一步地,当写入到闪存缓冲区的新的内存页面的内容不满一页或不是内存页面大小的整数倍时,填充无意义数据,以使得新的内存页面的内容满一页或是内存页面大小的整数倍。
进一步地,参照图5,回填模块14具体用于:当接收到同步模块13的通知时,首先,回填模块14遍历图2所示的数据结构,对其中的每一个叶子节点,再遍历其所有的记录,每一个记录指向页高速缓存中的一个内存页面,将这些由记录指向的内存页面全都标记为脏,并将引用计数减一(在接收到写入请求时,形成记录,并将记录指向的内存页面的引用计数加一,以强制保留内存页面);然后从图2的数据结构中删除该记录,当一个节点的所有记录处理完毕时,将该节点从基树中删除;当基树中的所有节点都处理完毕时,将整个缓冲区擦除。
进一步地,参照图6,还包括恢复模块15,用于在闪存文件***重启时,检测闪存缓冲区中是否有脏数据;
如果闪存缓冲区中有脏数据,读出闪存缓冲区的所有脏数据,根据每条脏数据更新所述内存缓存的内容。
当发生突然掉电等意外事件时,需要进行***故障恢复。具体地,如图7所示,在闪存文件***重启时,回复模块15检测闪存缓冲区中是否有脏数据;如果闪存缓冲区中有脏数据,从闪存缓冲区中读出所有的记录,对于其中的每一条记录,根据其中的索引节点号和页面号,从文件***区读出相应的数据(该数据为陈旧数据),然后根据页内偏移值,将记录中的内容拷贝到页高速缓存相应的页面;重复上述过程直到所有的记录都处理完毕。此时整个***已经恢复到最新状态,故障恢复过程结束。
如图8所示,根据本发明的一种闪存文件***的数据管理方法,包括:
在创建文件***时,将闪存划分成文件***区和闪存缓冲区;
在有数据写入且写入的数据量小于等于预设标记阈值时,在内存缓存中将写入数据标记为脏数据,其中,所述标记阈值用于表示写入内存缓存的需要按数据粒度进行标记的数据量大小;
在需要进行数据同步时,将内存缓存中的所有脏数据或要同步的文件的脏数据合并后写入闪存缓冲区;
当闪存缓冲区已满时,读出闪存缓冲区中的脏数据并将其写入文件***区,并擦除闪存缓冲区。
需要说明的是,本发明所述的脏数据,指的是被进程修改了的内存缓存里的数据。现有的文件***以页作为内存缓存的单位,当进程修改了内存缓存里的数据时,该页就被标记为脏页。本发明以字节为粒度,将所述写入数据标记为脏数据,以避免不必要的数据写入。
进一步地,所述闪存缓冲区的大小,由用户指定或者***预先设置。
具体地,如果由用户指定闪存缓冲区的大小,在创建和挂载文件***时,根据用户传递的缓冲区大小参数,在闪存设备上划分出一块单独的区域充当缓冲区。文件***进行物理空间分配时,分配的空间都不在此闪存缓冲区之内,因此闪存缓冲区不会被文件***所索引。
进一步地,所述闪存缓冲区包括第一闪存缓冲区和第二闪存缓冲区;其中,
在需要进行数据同步时,将内存缓存中的所有脏数据或要同步的文件的脏数据合并后写入第一闪存缓冲区;
当第一闪存缓冲区已满时,将第二闪存缓冲区设成当前缓冲区,用于需要进行数据同步时,写入数据使用;同时读出第一闪存缓冲区中的脏数据并将其写入文件***区,并擦除第一闪存缓冲区;
当第二闪存缓冲区已满时,将第一闪存缓冲区设成当前缓冲区,用于需要进行数据同步时,写入数据使用;同时读出第二闪存缓冲区中的脏数据并将其写入文件***区,并擦除第二闪存缓冲区。通过设置两块闪存缓冲区,在***回填其中一个闪存缓冲区期间,由另一缓冲区充当当前缓冲区,期间的同步操作均顺序写入到另一缓冲区中,因此不会因为回填造成整个***停下来等待的情况;两块缓冲区轮流交替使用,保证了***的正常运转。
进一步地,所述数据管理方法还包括,在有数据写入且写入的数据量大于标记阈值时,按现有的输入输出(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>的形式,将记录添加至预设的脏数据列表;并将相应的页高速缓存页面的引用计数加一。
需要说明的是,本发明既可以使用预设的脏数据列表来标记脏数据,也可以使用其他的方法来标记脏数据。所述的脏数据列表可以使用任意的数据结构,如数组、树形列表、链表等。
值得注意的是,本发明的数据管理方法,将写入数据添加至脏数据列表时,并不将相应的页高速缓存页面标记为脏页,而是强制将相应的页高速缓存页面的引用计数加一,从而使得页高速缓存中的写入数据不被写入到闪存设备上,强制保留这部分页高速缓存页面,以供快速读取。
进一步地,所述记录中的数据段内容可以是数据段的具体内容,也可以是一个指向页高速缓存对应页面的指针(data pointer)。
进一步地,所述数据管理方法使用基树和链表来组织和管理同一个文件的所有记录。使用基树是为了方便检索,使用链表是为了方便遍历。基树(radix_tree)是一种不太常用的数据结构,是Linux文件***的一种存储方式,树结构主要包含三个指针:根指针(root):指向树的根结点;空闲指针(free):指向空闲的结点链表;开始指针(start):指向空闲的内存块,每个使用中的节点使用parent、left、right指针相互连接,空闲的结点通过right指针连成一个链表。索引节点(inode)是在许多类Unix文件***中的一种数据结构,每个索引节点保存了文件***中的一个文件***对象的元信息数据,但不包括数据内容或者文件名。
如图2所示,本发明的文件***维护了一棵基树,所述基树以索引节点号为索引,相应的叶子节点101代表了一个文件;为了方便遍历,将基树中的所有叶子结点101使用链表链接起来。该基树中的每一个叶子节点也维持了一棵基树,以页面号为索引,每个叶子节点表示某个页面的记录。每条记录包括五个元素:索引节点号、页面号、页内偏移值、数据段长度和一个指向页高速缓存对应页面的指针,即<inode number,page number,offset,length,data pointer>的形式,为了方便遍历,同一文件的所有记录也用链表链接起来。
在有数据写入时,根据本次写操作的索引节点号在图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表示当前写入操作的数据段长度。根据以上情况计算得到新纪录的各项值以后,将其***基树和链表中。然后仍然对页高速缓存中的内存页面进行更新,但是为了防止文件***将该内存页面整页写入闪存设备,***不再将该页面标记为脏。由于页面不再标记为脏,随时有被文件***回收的危险,为了维护数据的高效读取和一致性,强制将内存页面的引用计数加一,从而强制保证其不被回收。这样,后续的读取操作仍然通过页高速缓存中的页面读取。
进一步地,将要同步的文件的脏数据合并后写入闪存缓冲区,具体包括:根据写入数据对应的文件的索引节点号查找该文件的所有记录,申请新的内存页面,将多个记录的内容顺序拷贝至所述新的内存页面,将所述新的内存页面的内容顺序写入到闪存缓冲区。
具体地,如图3所示,在需要进行数据同步时,在图2所示的基树中根据索引节点号找到相应的叶子节点,申请新的内存页面,然后遍历该叶子节点的所有记录,对于每一条记录所指向的页高速缓存数据段,把它们从页高速缓存中拷贝到所述新的内存页面,并把当前记录的信息,包括索引节点号、页面号、页面内偏移、数据段长度等值也一并拷贝到所述新的内存页面,然后将记录结构从图2的数据结构中删除;然后,参照图4,将所述新的内存页面中的内容顺序写入到闪存缓冲区;接着重复上述过程,直到属于该文件的所有记录处理完毕。
进一步地,当写入到闪存缓冲区的新的内存页面的内容不满一页或不是内存页面大小的整数倍时,填充无意义数据,以使得新的内存页面的内容满一页或是内存页面大小的整数倍。
进一步地,当当前缓冲区已满时,如图5所示,首先,遍历图2所示的数据结构,对其中的每一个叶子节点,再遍历其所有的记录,每一个记录指向页高速缓存中的一个内存页面,将这些由记录指向的内存页面全都标记为脏页,并将引用计数减一(在接收到写入请求时,形成记录,并将记录指向的内存页面的引用计数加一,以强制保留内存页面),将脏页写入文件***区中;然后从图2的数据结构中删除该记录,当一个节点的所有记录处理完毕时,将该节点从基树中删除;当基树中的所有节点都处理完毕时,将整个缓冲区擦除。
进一步地,所述数据管理方法还包括,在闪存文件***重启时,检测闪存缓冲区中是否有脏数据;
如果闪存缓冲区中有脏数据,读出闪存缓冲区的所有脏数据,根据每条脏数据更新所述内存缓存的内容。
当发生突然掉电等意外事件时,需要进行***故障恢复。具体地,如图7所示,在闪存文件***重启时,检测闪存缓冲区中是否有脏数据;如果闪存缓冲区中有脏数据,从闪存缓冲区中读出所有的记录,对于其中的每一条记录,根据其中的索引节点号和页面号,从文件***索引区读出相应的数据(该数据为陈旧数据),然后根据页内偏移值,将记录中的内容拷贝到页高速缓存相应的页面;重复上述过程直到所有的记录都处理完毕。此时整个***已经恢复到最新状态,故障恢复过程结束。
本发明的闪存文件***及其数据管理方法,通过对脏数据进行标记,并将脏数据合并后写入闪存,避免了不必要的数据写入,从而降低了同步操作的延时,提高了闪存的使用寿命;
进一步地,通过设置第一闪存缓冲区和第二闪存缓冲区,在***回填其中一个闪存缓冲区期间,由另一缓冲区充当当前缓冲区,期间的同步操作均顺序写入到另一缓冲区中,因此不会因为回填造成整个***停下来等待的情况;两块缓冲区轮流交替使用,保证了***的正常运转。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/模块可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
Claims (10)
1.一种闪存文件***,其特征在于,包括:创建模块、标记模块、同步模块和回填模块;其中,
创建模块,用于在创建文件***时,将闪存划分成文件***区和闪存缓冲区;
标记模块,用于在有数据写入且写入的数据量小于或等于预设标记阈值时,在内存缓存中将写入数据标记为脏数据,其中,所述标记阈值用于表示写入内存缓存的需要按数据粒度进行标记的数据量大小;
同步模块,用于在需要进行数据同步时,将内存缓存中的所有脏数据或要同步的文件的脏数据合并后写入闪存缓冲区,并当闪存缓冲区已满时,通知回填模块;
回填模块,用于接收到同步模块的通知,读出闪存缓冲区中的脏数据并将其写入文件***区,并擦除闪存缓冲区。
2.根据权利要求1所述的闪存文件***,其特征在于:所述闪存缓冲区包括第一闪存缓冲区和第二闪存缓冲区;其中,
所述同步模块具体用于:在需要进行数据同步时,将所述内存缓存中的所有脏数据或要同步的文件的脏数据合并后写入第一闪存缓冲区;当第一闪存缓冲区已满时,发送第一通知至回填模块,并在需要进行数据同步时,将内存缓存中的所有脏数据或要同步的文件的脏数据合并后写入第二闪存缓冲区;第二闪存缓冲区已满时,发送第二通知至回填模块,并在需要进行数据同步时,将内存缓存中的所有脏数据或要同步的文件的脏数据合并后写入第一闪存缓冲区;
所述回填模块具体用于:当接收到所述同步模块的第一通知时,读出第一闪存缓冲区中的脏数据并将其写入文件***区,并擦除第一闪存缓冲区;当接收到同步模块的第二通知时,读出第二闪存缓冲区中的脏数据并将其写入文件***区,并擦除第二闪存缓冲区。
3.根据权利要求1所述的闪存文件***,其特征在于:所述标记模块具体用于:在有数据写入且写入的数据量小于或等于所述标记阈值时,将所述写入数据对应的文件的索引节点号、数据段所在的页面号、页面内的偏移量、数据段的长度以及数据段内容封装成记录,将记录添加至预设的脏数据列表;并将写入数据对应的内存缓存页面的引用计数加一。
4.根据权利要求3所述的闪存文件***,其特征在于:所述同步模块具体用于:
根据所述写入数据对应的文件的索引节点号查找该文件的所有记录,申请新的内存页面,将多个记录的内容顺序拷贝至所述新的内存页面,将所述新的内存页面的内容顺序写入到闪存缓冲区。
5.根据权利要求1所述的闪存文件***,其特征在于:所述***还包括:恢复模块,用于在闪存文件***重启时,检测闪存缓冲区中是否有脏数据;
如果闪存缓冲区中有脏数据,读出闪存缓冲区的所有脏数据,根据每条脏数据更新所述内存缓存的内容。
6.一种闪存文件***的数据管理方法,其特征在于,包括:
在创建文件***时,将闪存划分成文件***区和闪存缓冲区;
在有数据写入且写入的数据量小于等于预设标记阈值时,在内存缓存中将写入数据标记为脏数据,其中,所述标记阈值用于表示写入内存缓存的需要按数据粒度进行标记的数据量大小;
在需要进行数据同步时,将内存缓存中的所有脏数据或要同步的文件的脏数据合并后写入闪存缓冲区;
当闪存缓冲区已满时,读出闪存缓冲区中的脏数据并将其写入文件***区,并擦除闪存缓冲区。
7.根据权利要求6所述的数据管理方法,其特征在于:所述闪存缓冲区包括第一闪存缓冲区和第二闪存缓冲区;其中,
在需要进行数据同步时,将内存缓存中的所有脏数据或要同步的文件的脏数据合并后写入第一闪存缓冲区;
当第一闪存缓冲区已满时,将第二闪存缓冲区设成当前缓冲区,用于在需要进行数据同步时,写入数据使用;同时读出第一闪存缓冲区中的脏数据并将其写入文件***区,并擦除第一闪存缓冲区;
当第二闪存缓冲区已满时,将第一闪存缓冲区设成当前缓冲区,用于在需要进行数据同步时,写入数据使用;同时读出第二闪存缓冲区中的脏数据并将其写入文件***区,并擦除第二闪存缓冲区。
8.根据权利要求6所述的数据管理方法,其特征在于:所述在内存缓存中将写入数据标记为脏数据,具体包括:将所述写入数据对应的文件的索引节点号、数据段所在的页面号、页面内的偏移量、数据段的长度以及数据段内容封装成记录,将记录添加至预设的脏数据列表;并将写入数据对应的内存缓存页面的引用计数加一。
9.根据权利要求8所述的数据管理方法,其特征在于:所述将脏数据列表中的脏数据合并后写入闪存缓冲区,具体包括:
根据写入数据对应的文件的索引节点号查找该文件的所有记录,申请新的内存页面,将多个记录的内容顺序拷贝至所述新的内存页面,将所述新的内存页面的内容顺序写入到闪存缓冲区。
10.根据权利要求6所述的数据管理方法,其特征在于:还包括:
在闪存文件***重启时,检测闪存缓冲区中是否有脏数据;
如果闪存缓冲区中有脏数据,读出闪存缓冲区的所有脏数据,根据每条脏数据更新所述内存缓存的内容。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710066027.4A CN108399047B (zh) | 2017-02-06 | 2017-02-06 | 一种闪存文件***及其数据管理方法 |
JP2019542554A JP6920448B2 (ja) | 2017-02-06 | 2018-02-06 | フラッシュメモリファイルシステム及びそのデータ管理方法 |
US16/483,608 US20200034340A1 (en) | 2017-02-06 | 2018-02-06 | Flash file system and data management method therof |
EP18747430.9A EP3579111A4 (en) | 2017-02-06 | 2018-02-06 | FLASH FILES SYSTEM AND PROCESS FOR MANAGING DATA THEREOF |
PCT/CN2018/075376 WO2018141304A1 (zh) | 2017-02-06 | 2018-02-06 | 一种闪存文件***及其数据管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710066027.4A CN108399047B (zh) | 2017-02-06 | 2017-02-06 | 一种闪存文件***及其数据管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108399047A true CN108399047A (zh) | 2018-08-14 |
CN108399047B CN108399047B (zh) | 2022-11-29 |
Family
ID=63039351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710066027.4A Active CN108399047B (zh) | 2017-02-06 | 2017-02-06 | 一种闪存文件***及其数据管理方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20200034340A1 (zh) |
EP (1) | EP3579111A4 (zh) |
JP (1) | JP6920448B2 (zh) |
CN (1) | CN108399047B (zh) |
WO (1) | WO2018141304A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110245121A (zh) * | 2019-05-08 | 2019-09-17 | 深圳市战音科技有限公司 | 文件管理方法、***以及电子设备 |
CN110704468A (zh) * | 2019-10-17 | 2020-01-17 | 武汉微派网络科技有限公司 | 数据更新方法、装置及控制器 |
CN110895515A (zh) * | 2018-09-12 | 2020-03-20 | 中兴通讯股份有限公司 | 内存缓存管理方法、多媒体服务器及计算机存储介质 |
CN112925759A (zh) * | 2021-03-31 | 2021-06-08 | 北京金山云网络技术有限公司 | 数据文件的处理方法和装置、存储介质、电子装置 |
CN113377684A (zh) * | 2020-03-09 | 2021-09-10 | 瑞昱半导体股份有限公司 | 数据写入***与方法 |
CN117854553A (zh) * | 2024-03-06 | 2024-04-09 | 北京云豹创芯智能科技有限公司 | 一种数据整形电路、方法和芯片 |
WO2024139748A1 (zh) * | 2022-12-26 | 2024-07-04 | 中科信息安全共性技术国家工程研究中心有限公司 | 数据传输方法、装置及电子设备 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11762578B2 (en) * | 2020-09-29 | 2023-09-19 | International Business Machines Corporation | Buffer pool contention optimization |
CN112506442A (zh) * | 2020-12-22 | 2021-03-16 | 深圳市时创意电子有限公司 | 一种闪存芯片数据处理方法、装置、电子设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080301256A1 (en) * | 2007-05-30 | 2008-12-04 | Mcwilliams Thomas M | System including a fine-grained memory and a less-fine-grained memory |
KR20100056750A (ko) * | 2008-11-20 | 2010-05-28 | 삼성전자주식회사 | 불휘발성 메모리 시스템 및 그것의 액세스 방법 |
US20120221774A1 (en) * | 2011-02-25 | 2012-08-30 | Fusion-Io, Inc. | Apparatus, system, and method for managing contents of a cache |
CN102725752A (zh) * | 2011-10-20 | 2012-10-10 | 华为技术有限公司 | 处理脏数据的方法及装置 |
US9135123B1 (en) * | 2011-12-28 | 2015-09-15 | Emc Corporation | Managing global data caches for file system |
US20150378745A1 (en) * | 2014-06-26 | 2015-12-31 | Mstar Semiconductor, Inc. | Data processing method during boot procedure of smart device and smart device |
CN105573918A (zh) * | 2015-12-17 | 2016-05-11 | 深圳市新国都支付技术有限公司 | 一种轻量级闪存***和方法 |
CN105740334A (zh) * | 2016-01-22 | 2016-07-06 | 中国科学院计算技术研究所 | 一种文件***中异步批量创建文件的***及方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012008651A (ja) * | 2010-06-22 | 2012-01-12 | Toshiba Corp | 半導体記憶装置、その制御方法および情報処理装置 |
CN102063271B (zh) * | 2010-12-17 | 2014-08-13 | 曙光信息产业(北京)有限公司 | 一种磁盘外置Cache基于状态机的写回方法 |
CN102841851B (zh) * | 2012-07-19 | 2015-09-09 | 深圳市江波龙电子有限公司 | 闪存管理方法和闪存设备 |
BR112017001991B1 (pt) * | 2014-08-15 | 2022-11-16 | Microsoft Technology Licensing, Llc | Método e dispositivo eletrônico compreendendo memória e armazenamento, e meio de armazenamento em computador |
-
2017
- 2017-02-06 CN CN201710066027.4A patent/CN108399047B/zh active Active
-
2018
- 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
- 2018-02-06 EP EP18747430.9A patent/EP3579111A4/en active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080301256A1 (en) * | 2007-05-30 | 2008-12-04 | Mcwilliams Thomas M | System including a fine-grained memory and a less-fine-grained memory |
KR20100056750A (ko) * | 2008-11-20 | 2010-05-28 | 삼성전자주식회사 | 불휘발성 메모리 시스템 및 그것의 액세스 방법 |
US20120221774A1 (en) * | 2011-02-25 | 2012-08-30 | Fusion-Io, Inc. | Apparatus, system, and method for managing contents of a cache |
CN102725752A (zh) * | 2011-10-20 | 2012-10-10 | 华为技术有限公司 | 处理脏数据的方法及装置 |
US9135123B1 (en) * | 2011-12-28 | 2015-09-15 | Emc Corporation | Managing global data caches for file system |
US20150378745A1 (en) * | 2014-06-26 | 2015-12-31 | Mstar Semiconductor, Inc. | Data processing method during boot procedure of smart device and smart device |
CN105573918A (zh) * | 2015-12-17 | 2016-05-11 | 深圳市新国都支付技术有限公司 | 一种轻量级闪存***和方法 |
CN105740334A (zh) * | 2016-01-22 | 2016-07-06 | 中国科学院计算技术研究所 | 一种文件***中异步批量创建文件的***及方法 |
Cited By (9)
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 | 武汉微派网络科技有限公司 | 数据更新方法、装置及控制器 |
CN113377684A (zh) * | 2020-03-09 | 2021-09-10 | 瑞昱半导体股份有限公司 | 数据写入***与方法 |
CN113377684B (zh) * | 2020-03-09 | 2024-03-08 | 瑞昱半导体股份有限公司 | 数据写入***与方法 |
CN112925759A (zh) * | 2021-03-31 | 2021-06-08 | 北京金山云网络技术有限公司 | 数据文件的处理方法和装置、存储介质、电子装置 |
CN112925759B (zh) * | 2021-03-31 | 2024-05-31 | 北京金山云网络技术有限公司 | 数据文件的处理方法和装置、存储介质、电子装置 |
WO2024139748A1 (zh) * | 2022-12-26 | 2024-07-04 | 中科信息安全共性技术国家工程研究中心有限公司 | 数据传输方法、装置及电子设备 |
CN117854553A (zh) * | 2024-03-06 | 2024-04-09 | 北京云豹创芯智能科技有限公司 | 一种数据整形电路、方法和芯片 |
Also Published As
Publication number | Publication date |
---|---|
WO2018141304A1 (zh) | 2018-08-09 |
JP6920448B2 (ja) | 2021-08-18 |
EP3579111A4 (en) | 2020-11-25 |
EP3579111A1 (en) | 2019-12-11 |
US20200034340A1 (en) | 2020-01-30 |
JP2020510905A (ja) | 2020-04-09 |
CN108399047B (zh) | 2022-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108399047A (zh) | 一种闪存文件***及其数据管理方法 | |
CN102521269B (zh) | 一种基于索引的计算机连续数据保护方法 | |
US8838923B2 (en) | Continuous data protection over intermittent connections, such as continuous data backup for laptops or wireless devices | |
EP3170106B1 (en) | High throughput data modifications using blind update operations | |
EP2735978B1 (en) | Storage system and management method used for metadata of cluster file system | |
CN105404673B (zh) | 基于nvram的高效文件***构建方法 | |
US20100146213A1 (en) | Data Cache Processing Method, System And Data Cache Apparatus | |
CN105787093B (zh) | 一种基于LSM-Tree结构的日志文件***的构建方法 | |
CN103595797B (zh) | 一种分布式存储***中的缓存方法 | |
CN109063192B (zh) | 一种高性能海量文件存储***工作方法 | |
CN110109927A (zh) | 基于LSM树的Oracle数据库数据处理方法 | |
CN104281673A (zh) | 一种数据库的缓存构建***及对应的构建方法 | |
US20220382674A1 (en) | Garbage collection of tree structure with page mappings | |
KR101252375B1 (ko) | 저장 장치의 중복 제거 성능 향상을 위한 맵핑 관리 시스템 및 방법 | |
CN103246718B (zh) | 文件访问方法、装置和设备 | |
US11860840B2 (en) | Update of deduplication fingerprint index in a cache memory | |
CN105468733A (zh) | 一种基于源端数据重删的卷复制方法 | |
CN111538465B (zh) | 一种基于Linux高性能数据重删方法 | |
CN104821907A (zh) | 一种电子邮件处理方法 | |
CN104702700A (zh) | 一种邮件提取方法 | |
CN104735152A (zh) | 一种基于网络的邮件读取方法 | |
CN111026327A (zh) | 一种基于重删的磁带归档***及方法 | |
CN105912267A (zh) | 一种文件分配表处理方法和装置 | |
KR101086392B1 (ko) | Wal 기법에서 대용량 객체의 파손 회복 방법 | |
CN104615652B (zh) | 一种辅助记录的组织方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |