[go: up one dir, main page]

CN101488153A - Method for implementing high-capacity flash memory file system in embedded type Linux - Google Patents

Method for implementing high-capacity flash memory file system in embedded type Linux Download PDF

Info

Publication number
CN101488153A
CN101488153A CNA2009100961243A CN200910096124A CN101488153A CN 101488153 A CN101488153 A CN 101488153A CN A2009100961243 A CNA2009100961243 A CN A2009100961243A CN 200910096124 A CN200910096124 A CN 200910096124A CN 101488153 A CN101488153 A CN 101488153A
Authority
CN
China
Prior art keywords
data
page
read
file
file system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA2009100961243A
Other languages
Chinese (zh)
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.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
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 Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CNA2009100961243A priority Critical patent/CN101488153A/en
Publication of CN101488153A publication Critical patent/CN101488153A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

The invention discloses a realizing method of an embedded Linux large capacity flash file system. The method comprises sectionalized storage, data page distribution, refuse collection, logic structure zoning, file system initialization, directory searching, file displacement location, data reading and data writing. The method realizes the embedded Linux large capacity Nand flash file system and is beneficial for the management of embedded Linux large capacity Nand flash. The realized large capacity Nand flash file system can be applied to the large capacity Nand flash management and is beneficial to the utilization of embedded storing.

Description

嵌入式Linux下大容量闪存文件系统的实现方法 Implementation method of large-capacity flash memory file system under embedded Linux

技术领域 technical field

本发明涉及嵌入式文件系统领域,特别是涉及一种嵌入式Linux下大容量闪存文件系统的实现方法。The invention relates to the field of embedded file systems, in particular to a method for realizing a large-capacity flash memory file system under embedded Linux.

背景技术 Background technique

嵌入式Linux是按照嵌入式操作系统要求设计的一种小型操作系统。由一个Kernel(内核)和一些根据需求进行定制的系统模块组成[6]。其Kernel很小,一般只有几百KB左右的大小。即使加上其它必要的模块和应用程序,所占的存储空间也很小。Embedded Linux is a small operating system designed according to the requirements of embedded operating systems. It consists of a Kernel (kernel) and some system modules customized according to requirements [6]. Its Kernel is very small, generally only about a few hundred KB in size. Even with other necessary modules and applications, the memory space occupied is very small.

嵌入式Linux操作系统的主要特点有:精简标准的Linux内核,适应于多种CPU和硬件平台,性能稳定,裁减性很好,开发使用容易,还可以使用Unix或Linux上的应用程序。现在,嵌入式Linux也可以Windows下的多媒体应用。嵌入式Linux操作系统具有高度的灵活性,开发者可以很容易地对它进行定制或作适当开发,来满足实际应用需要。The main features of the embedded Linux operating system are: streamlining the standard Linux kernel, adapting to a variety of CPU and hardware platforms, stable performance, good tailorability, easy development and use, and applications on Unix or Linux can also be used. Now, embedded Linux can also be used for multimedia applications under Windows. The embedded Linux operating system has a high degree of flexibility, and developers can easily customize it or develop it appropriately to meet the actual application needs.

在嵌入式Linux下,一个管理操作系统和用户数据的有效方法就是使用文件系统。嵌入式Linux支持的文件系统类型多样,可以根据系统存储器介质类型和系统应用目的进行选择。Under embedded Linux, an effective way to manage the operating system and user data is to use the file system. Embedded Linux supports various types of file systems, which can be selected according to the type of system storage medium and the purpose of system application.

为了提供对各种类型文件系统的有效支持,嵌入式Linux提供了一个虚拟文件系统层,抽象了用户的文件读写操作,对于用户来说,所有的文件系统系统调用都有统一的接口,具体实现细节都被隐藏到虚拟文件系统对具体文件系统的调用中。该虚拟文件系统层方便了嵌入式Linux的移植。In order to provide effective support for various types of file systems, embedded Linux provides a virtual file system layer, which abstracts the user's file read and write operations. For users, all file system system calls have a unified interface. Implementation details are hidden in the virtual file system's calls to the concrete file system. The virtual file system layer facilitates the transplantation of embedded Linux.

随着Nand闪存制造工艺的不断改进以及制造成本的不断下降,Nand闪存已取代其他非易失存储器成为移动存储市场的主流存储介质,前景无限。这几年,国内外计算机科学界不少科研机构开始或强加对Nand闪存管理技术的研究。研究方向大致可分为以下几个:With the continuous improvement of the manufacturing process of Nand flash memory and the continuous decline of manufacturing costs, Nand flash memory has replaced other non-volatile memories and become the mainstream storage medium in the mobile storage market, with unlimited prospects. In recent years, many scientific research institutions in the computer science circle at home and abroad have begun or imposed research on Nand flash memory management technology. The research directions can be roughly divided into the following categories:

1、Nand闪存块映射技术:使用一个中间层驱动,将Nand闪存模拟成一个传统可随意读写的块设备,并使用传统的磁盘文件系统进行管理。美国人Ban于1995年和1997年分别提出的FTL技术以及NFTL技术是这种技术的前驱。当前的研究热点包括:Nand闪存中大量数据存贮的热点发现和处理、可伸缩块映射技术等;1. Nand flash memory block mapping technology: use an intermediate layer driver to simulate Nand flash memory as a traditional block device that can be read and written at will, and use the traditional disk file system for management. The FTL technology and NFTL technology proposed by American Ban in 1995 and 1997 respectively are the precursors of this technology. Current research hotspots include: hotspot discovery and processing of massive data storage in Nand flash memory, scalable block mapping technology, etc.;

2、Nand闪存上的应用相关复杂数据的实现研究。如在Nand闪存上实现B-树或者R-树、移动通信以及传感网络上的Nand闪存应用等等。2. Research on the realization of application-related complex data on Nand flash memory. Such as implementing B-tree or R-tree on Nand flash memory, mobile communication and Nand flash memory application on sensor network, etc.

其他方面的研究还包括Nand闪存启动XIP技术以及闪存实时性研究。Other aspects of research include Nand flash boot XIP technology and flash real-time research.

3、Nand闪存专用文件系统研究。一个Nand闪存文件系统必须充分考虑Nand闪存的物理特性,在有效存储的基础上,管理好Nand闪存的使用寿命。关于Nand闪存文件系统研究的领域较多包括:文件系统快速初始化、文件系统日志化管理、系统崩溃恢复、垃圾收集与页面分配技术等等。3. Research on special file system for Nand flash memory. A Nand flash file system must fully consider the physical characteristics of Nand flash, and manage the service life of Nand flash on the basis of effective storage. There are many research fields on Nand flash file system, including: fast initialization of file system, log management of file system, system crash recovery, garbage collection and page allocation technology, etc.

目前的Nand闪存文件系统的研究把重点放在如果充分挖掘Nand闪存的存储特性,通过合理设计文件系统支持擦写平衡、保证Nand闪存的使用寿命、提升访问性能,但对于大容量Nand闪存以及文件系统缺乏充分考量,特别是对大文件的随机访问缺乏有效的支持。The current research on Nand flash file system focuses on how to fully exploit the storage characteristics of Nand flash memory, support erasure and write balance, ensure the service life of Nand flash memory, and improve access performance through reasonable design of file system, but for large-capacity Nand flash memory and file The system lacks sufficient consideration, especially the lack of effective support for random access to large files.

大容量闪存存储器的典型特点就是存储器内的页面数较普通闪存相比有大幅提高。因此,设计大容量闪存文件系统除了考虑像设计普通闪存文件系统的问题外,还需要考虑和解决由于闪存容量增大所带来的新问题,如:随之而来的文件系统初始化时间变长、大量页面管理方法、页分配算法、大尺寸文件的存储和访问等。本发明中的闪存即是指大容量的Nand闪存。ssssA typical feature of large-capacity flash memory is that the number of pages in the memory is greatly increased compared with ordinary flash memory. Therefore, in addition to considering the problems of designing a common flash file system, the design of a large-capacity flash file system also needs to consider and solve new problems brought about by the increase in flash memory capacity, such as: the subsequent file system initialization time becomes longer , a large number of page management methods, page allocation algorithms, storage and access of large-size files, etc. The flash memory in the present invention refers to large-capacity Nand flash memory. ssss

发明内容 Contents of the invention

本发明的目的在于提供一种嵌入式Linux下大容量闪存文件系统的实现方法。The purpose of the present invention is to provide a method for realizing a large-capacity flash memory file system under embedded Linux.

本发明解决其技术问题采用的技术方案如下:The technical scheme that the present invention solves its technical problem adopts is as follows:

一种嵌入式Linux下大容量闪存文件系统的实现方法,该方法的步骤如下:A method for realizing a large-capacity flash memory file system under embedded Linux, the steps of the method are as follows:

1)区段化存储:1) Segmented storage:

存储点都是以区段的方式组织的,文件数据存放在一段连续的页中,数据的添加和删除也以段为单位进行;区段是能伸缩的,并且具有添加、删除、合并、分割;所有的段存放在一个B-树中;Storage points are organized in sections, file data is stored in a continuous page, and data addition and deletion are also performed in units of sections; sections are scalable and have the functions of adding, deleting, merging, and splitting ;All segments are stored in a B-tree;

2)数据页分配:2) Data page allocation:

在分配空白页面时,将目录的页面和数据页面分开放在不同的块中,这样避免了“全部拷贝”,从而降低了页面的拷贝次数,提高了效率;When allocating blank pages, the pages of the directory and the data pages are placed in different blocks, which avoids "all copying", thereby reducing the number of page copies and improving efficiency;

每种类型的块有且仅有一个块处于“当前分配”状态。新页面从当前进行分配的块中顺序进行分配,若当前块已满,则顺序寻找下一个空闲块;Each type of block has one and only one block in the "current allocation" state. New pages are allocated sequentially from the currently allocated block, and if the current block is full, the next free block is sequentially searched for;

3)垃圾收集:3) Garbage collection:

对于脏数据,使用多种已有的回收方法混合的算法来进行垃圾回收,将贪心方法和随机选择方法按比例混合使用:当满足特定的小概率条件时,该特定的小概率条件在具体实现时根据不同的应用环境设定,垃圾回收器会试图用随机选择方法一个可回收的页面;而在其他情况下,则使用贪心方法回收最“脏”的块;For dirty data, garbage collection is performed using a mixture of multiple existing recycling methods, and the greedy method and random selection method are mixed in proportion: when a specific small probability condition is met, the specific small probability condition is implemented in the specific implementation According to different application environment settings, the garbage collector will try to randomly select a recyclable page; in other cases, use the greedy method to reclaim the most "dirty" block;

4)分区逻辑结构:4) Partition logical structure:

在分区的第一个区段表示闪存块存放文件系统的索引节点段,块中页面存放的数据表示的是分区中的一些块的块号;这些块存放着存储对象头元素信息,每个存储对象头元素分配一个页面;这个段从分区开始处分配,并固定的长度。具体长度看根据分区的大小设定;最后一部分是数据段,它包括有效的数据页面、脏数据页面以及空白页面;The first section of the partition indicates that the flash memory block stores the inode segment of the file system, and the data stored in the page in the block represents the block number of some blocks in the partition; these blocks store the header element information of the storage object, and each storage The object header element allocates a page; this segment is allocated from the beginning of the partition and has a fixed length. The specific length depends on the size of the partition; the last part is the data segment, which includes valid data pages, dirty data pages, and blank pages;

5)文件系统初始化:5) File system initialization:

1、首先要初始化文件系统相关变量;1. First, initialize the file system related variables;

2、初始化Nand闪存,并建立内存设备对象进行管理。2. Initialize Nand flash memory and create memory device objects for management.

3、扫描Nand闪存分区,从分区开始的索引节点段中依次读取每一个存有文件和目录索引节点的块;3. Scan the Nand flash partition, and read each block containing file and directory index nodes in sequence from the index node segment at the beginning of the partition;

4、利用头对象页面建立对象的初始化信息;4. Use the header object page to create the initialization information of the object;

6)目录查找:6) Directory lookup:

从根目录或者当前目录出发逐层分析文件名,直到最终找到该文件;Starting from the root directory or the current directory, analyze the file name layer by layer until the file is finally found;

7)文件位移定位:7) File displacement positioning:

位移定位是一个从根节点出发,最终找到一个叶子结点过程,首先获得参数并进行完整性检查;如果合格,则从根节点出发,根据给定的位移找到对应的子节点,如果该子节点以及以前的子节点所有的字节数不足文件位移,则需要寻找下一个子节点,直到找到对应子节点;在确定子节点后再从子节点的树叶节点中依次查找,直到找到对应的区段,并确定区段内的本地位移,并返回;若不存在下一个子节点或对应的叶子节点,并确定在该叶子节点所确定的区段上的位移;Displacement positioning is a process starting from the root node and finally finding a leaf node. First, obtain the parameters and perform integrity check; if qualified, start from the root node and find the corresponding child node according to the given displacement. If the child node And if the number of bytes of the previous child nodes is insufficient for the file displacement, it is necessary to search for the next child node until the corresponding child node is found; after determining the child node, search in turn from the leaf nodes of the child node until the corresponding section is found , and determine the local displacement in the section, and return; if there is no next child node or the corresponding leaf node, and determine the displacement on the section determined by the leaf node;

8)数据读取:8) Data reading:

从HNFS文件系统读取数据的流程:The process of reading data from the HNFS file system:

1、首先获得读取的偏移量以及读取的字节数;1. First obtain the read offset and the number of bytes read;

2、确定区段以及段内位移;2. Determine the section and the displacement within the section;

3、开始读取循环,设置循环条件为还有数据需要读取;3. Start the reading cycle, and set the cycle condition as there is still data to be read;

4、从本区段开始顺序读取每个页将数据拷贝到buffer中,同时修改buffer指针偏移以及剩余数据量及读取偏移;4. Read each page sequentially from this section, copy the data to the buffer, and modify the buffer pointer offset, remaining data amount and read offset at the same time;

5、读取一个页面,首先在系统页缓存中查看是否有对应的缓存,如果没有,则从Nand闪存上读入页缓存;5. To read a page, first check whether there is a corresponding cache in the system page cache, if not, read the page cache from the Nand flash memory;

6、如果某个区段数据读完了,则选择下一个紧邻的区段读取,直到读取足够的字节数,如果文件没有足够的字节数;6. If the data of a section is read, select the next adjacent section to read until enough bytes are read, if the file does not have enough bytes;

7、完成后返回buffer以及共读取的字节数;7. Return the buffer and the total number of bytes read after completion;

9)数据写入:9) Data writing:

向HNFS文件系统写入数据的流程:The process of writing data to the HNFS file system:

1、首先获得文件偏移量以及写入的字节数;1. First obtain the file offset and the number of bytes written;

2、确定区段以及段内位移;2. Determine the section and the displacement within the section;

3、开始写入循环,设置循环条件为还有数据需要写入;3. Start the write cycle, and set the cycle condition as there is still data to be written;

4、先读取一个页面,首先在系统页缓存中查看是否有对应的缓存,如果没有,则从Nand闪存上读入页缓存;4. Read a page first, first check whether there is a corresponding cache in the system page cache, if not, read the page cache from the Nand flash memory;

5、从buffer中将数据顺序拷贝到本区段内部位移开始处,同时修改buffer指针偏移以及剩余数据量及读取偏移;5. Copy the data sequentially from the buffer to the beginning of the internal displacement of this segment, and modify the buffer pointer offset, remaining data amount and read offset at the same time;

6、如果采取写直达法,则直接选择一个空闲页面将缓存页面写入,写入成功后相应修改对象头的对应存储区段。如果在写过程中出现错误,则报错;6. If the write-through method is adopted, a free page is directly selected to write the cache page, and the corresponding storage section of the object header is correspondingly modified after the writing is successful. If an error occurs during the writing process, an error is reported;

7、写入的数据还没有写完,则顺序确定下一个紧邻的区段写入,直至全部写完。系统空闲页面不够时调用垃圾收集器回收系统中的脏页面;7. If the written data has not been written yet, the next adjacent segment is sequentially determined to be written until all of them are written. When there are not enough free pages in the system, the garbage collector is called to reclaim the dirty pages in the system;

8、完成后返回写入的字节数。8. Return the number of bytes written after completion.

本发明与背景技术相比,具有的有益的效果是:Compared with the background technology, the present invention has the beneficial effects that:

本发明是一种嵌入式Linux下大容量闪存文件系统的实现方法,其主要功能针对大容量Nand闪存的存储特性,提出了数据区段化存贮的思想,和实现大容量Nand闪存文件系统的方法,并详细描述了大容量Nand闪存文件系统HNFS的系统初始化、目录查找、位移定位以及数据读写等的过程。本方法实现了在嵌入式Linux下大容量Nand闪存文件系统,有利于嵌入式Linux下大容量Nand闪存的管理。The present invention is a method for realizing a large-capacity flash memory file system under embedded Linux. Its main function is aimed at the storage characteristics of large-capacity Nand flash memory, and proposes the idea of data segment storage, and realizes the method of large-capacity Nand flash memory file system. method, and described in detail the process of system initialization, directory search, displacement positioning, and data reading and writing of the large-capacity Nand flash file system HNFS. The method realizes the large-capacity Nand flash memory file system under the embedded Linux, and is beneficial to the management of the large-capacity Nand flash memory under the embedded Linux.

(1)高效性。本方法实现了在嵌入式Linux下大容量Nand闪存文件系统,能够高效的对大容量Nand闪存进行管理。(1) Efficiency. The method realizes the large-capacity Nand flash memory file system under the embedded Linux, and can efficiently manage the large-capacity Nand flash memory.

(2)实用性。对大容量Nand闪存的文件系统的实现,有利于对嵌入式存储的利用。(2) Practicality. The realization of the file system of large-capacity Nand flash memory is conducive to the utilization of embedded storage.

附图说明 Description of drawings

图1是本发明的实施过程示意图;Fig. 1 is a schematic diagram of the implementation process of the present invention;

图2是本发明的文件系统初始化流程图;Fig. 2 is the file system initialization flowchart of the present invention;

图3是本发明的文件系统文件位移定位流程图;Fig. 3 is a flow chart of file displacement positioning in the file system of the present invention;

图4是本发明的文件系统数据读取流程图;Fig. 4 is the flow chart of file system data reading of the present invention;

图5是本发明的文件系统数据写入流程图。Fig. 5 is a flow chart of file system data writing in the present invention.

具体实施方式 Detailed ways

本发明是一种嵌入式Linux下大容量闪存文件系统的实现方法,下面结合图1说明其具体实施过程。The present invention is an implementation method of a large-capacity flash memory file system under embedded Linux, and its specific implementation process will be described below in conjunction with FIG. 1 .

1)区段化存储:1) Segmented storage:

大容量Nand闪存的最大特点就是数据页多,存储容量大。因此在进行存储设计时,需要设计支持大尺寸文件的存储以及访问,同时考虑文件系统中小文件比较多的情况。而存储空间节约和文件压缩并不是主要的存储目标。The biggest feature of large-capacity Nand flash memory is that there are many data pages and large storage capacity. Therefore, when designing storage, it is necessary to design to support the storage and access of large-size files, and at the same time, consider the situation that there are many small files in the file system. Storage space savings and file compression are not primary storage goals.

区段化存储管理不同于经常见之于磁盘文件系统的块,区段化存储管理所有的存储点都是以区段的方式组织的,文件数据尽可能的存放在一段连续的页中,数据的添加和删除也以段为单位进行;区段是可伸缩的,并且具有添加、删除、合并、分割功能。所有的段存放在一个B-树中。对于频繁修改的小文件,进行数据写入时只需要相应更新对象头元素和数据页即可。对于高频率随机读取的大文件和超大文件,区段管理可以以相较YAFFS等文件系统更快的速度进行位移计算。区段化管理可以有效满足上文中提到的文件系统使用特性,减少间接索引带来的额外损耗、提高随机访问速度。Segmented storage management is different from blocks that are often seen in disk file systems. Segmented storage management All storage points are organized in segments. File data is stored in a continuous page as much as possible. Data The addition and deletion of segments is also performed in units of segments; segments are scalable and have the functions of adding, deleting, merging, and splitting. All segments are stored in a B-tree. For small files that are frequently modified, you only need to update the object header element and data page accordingly when writing data. For large and very large files with high frequency random reads, segment management can perform displacement calculations at a faster speed than file systems such as YAFFS. Segmentation management can effectively meet the file system usage characteristics mentioned above, reduce the additional loss caused by indirect indexing, and improve random access speed.

在本发明中,文件、硬链接和目录被抽象成储存对象,每个对象有一个对象头,存放对象的控制、访问等方面的信息,每个对象头专门分配一个对象头页面。按照本发明方法所实现的文件系统称为大容量Nand闪存文件系统HNFS,以下简称HNFS。In the present invention, files, hard links, and directories are abstracted into storage objects, each object has an object header, and stores information on aspects such as object control and access, and each object header is specially assigned an object header page. The file system realized according to the method of the present invention is called the high-capacity Nand flash memory file system HNFS, hereinafter referred to as HNFS.

目录比文件有更高的访问频率。如果将对象头放在单独的一页中,对象头的更新频率较高,那么该页面可以多次使用,存放存储对象元素的多个版本,既有利于降低Nand闪存的损耗,也便于从可能的系统崩溃中恢复。而如果将2个或更多的对象头元素共享一个页面,那么任一个文件的修改必然导致头元素页面的修改,这样该页面的更新频率就太高了,违背了节省空间,降低Nand闪存损耗的初衷;如果将数据和头元素放在一个页面中,由于通常目录和普通文件数据的访问频率差别较大,这也带来数据经常无故转移,页面更新较快的问题。Directories are accessed more frequently than files. If the object header is placed on a separate page, and the update frequency of the object header is high, then this page can be used multiple times to store multiple versions of the stored object elements, which not only helps to reduce the loss of Nand flash memory, but also facilitates possible recover from a system crash. And if 2 or more object header elements share a page, then the modification of any file will inevitably lead to the modification of the header element page, so that the update frequency of this page is too high, which violates the saving space and reduces the loss of Nand flash memory The original intention; if the data and header elements are placed in one page, because the access frequency of directory and ordinary file data is usually different, this also brings about the problem of frequent data transfer without reason and faster page update.

根据Nand闪存的存储特性,同时提高文件系统的装载速度。在闪存分区的开始出预先留出若干个块,用作文件索引节点块索引。装载大容量闪存文件系统时,从这些页面中读出索引节点块的位置,再从索引节点块中读取索引节点信息,从而在内存中构建整个文件系统。According to the storage characteristics of Nand flash memory, the loading speed of the file system is also improved. A number of blocks are reserved at the beginning of the flash partition to be used as file inode block indexes. When loading a large-capacity flash file system, the position of the inode block is read from these pages, and then the inode information is read from the inode block, thereby constructing the entire file system in memory.

2)数据页分配:2) Data page allocation:

和磁盘不同,Nand闪存不存在寻轨延迟,因此读取数据时具有更高的访问速度。但是由于Nand闪存只能向空白页面写入数据,因此写入速度和空白页面分配方法、存储空间状况以及垃圾收集器性能与文件系统的整体性能密切相关。分配方法如下:在某个块内,空白页是按照递增的顺序分配的,一个块内的页面分配完了之后,再另外选择一个空白块参与分配。另外,还要为垃圾收集保留2—3个块,用于“全部拷贝”。当系统中没有空白页面时,选择一个脏块擦写成为空白块使用。Unlike magnetic disks, Nand flash memory has no tracking delay, so it has a higher access speed when reading data. However, since Nand flash memory can only write data to blank pages, the writing speed and blank page allocation method, storage space status, and garbage collector performance are closely related to the overall performance of the file system. The allocation method is as follows: in a certain block, blank pages are allocated in increasing order, and after the pages in a block are allocated, another blank block is selected to participate in the allocation. Also, reserve 2-3 blocks for garbage collection, for "copy all". When there is no blank page in the system, select a dirty block to be erased and used as a blank block.

从文件系统的角度来看,存储系统元数据的页面如目录页面就比普通数据面有更高的更新率。因此,在分配空白页面时,将目录的页面和数据页面分开放在不同的块(Block)中,这样避免了“全部拷贝”(Full copy),从而降低了页面的拷贝次数,提高了效率。在本发明中,每种类型的块有且仅有一个块处于“当前分配”状态。新页面从当前进行分配的块中顺序进行分配,若当前块已满,则顺序寻找下一个空闲块。From the perspective of the file system, pages that store system metadata, such as directory pages, have a higher update rate than ordinary data pages. Therefore, when allocating blank pages, the pages of the directory and the data pages are placed in different blocks (Block), which avoids "full copy", thereby reducing the number of page copies and improving efficiency. In the present invention, each type of block has one and only one block in the "current allocation" state. New pages are allocated sequentially from the currently allocated block, and if the current block is full, the next free block is sequentially searched for.

3)垃圾收集:3) Garbage collection:

当存储空间中空白页面低于一预定值是时,需要使用垃圾收集器回收葬数据页面,归还给系统。When the blank page in the storage space is lower than a predetermined value, it is necessary to use the garbage collector to reclaim the buried data page and return it to the system.

对于脏数据,使用多种已有的回收方法混合的算法来进行垃圾回收,将贪心方法和随机选择方法按一定比例混合使用:当满足特定的小概率条件时(该特定的小概率条件在具体实现时根据不同的应用环境设定),垃圾回收器会试图用随机选择方法一个可回收的页面;而在其他情况下,则使用贪心方法回收最“脏”的块。For dirty data, use a variety of existing recycling methods mixed algorithms for garbage collection, and use a mixture of greedy methods and random selection methods in a certain proportion: when a specific small probability condition is met (the specific small probability condition is in the specific According to different application environment settings during implementation), the garbage collector will try to randomly select a recyclable page; in other cases, use the greedy method to reclaim the most "dirty" block.

在回收脏数据块时,对待不同类型的脏数据块也采用不同的方法。如果回收的脏块用于存放目录,那么就将块中的有效页面拷贝到其他存放目录的块中去,如果回收的脏块存放的是普通文件数据,那么就将块中的有效页面拷贝到其他存放普通文件数据的块中去。When reclaiming dirty data blocks, different methods are used to treat different types of dirty data blocks. If the recovered dirty block is used to store directories, then copy the valid pages in the block to other blocks that store directories; if the recovered dirty blocks store ordinary file data, then copy the valid pages in the block to Other blocks that store ordinary file data.

4)分区逻辑结构:4) Partition logical structure:

在分区的第一个区段表示闪存块存放文件系统的索引节点段(Inode-StoredBlock of Segment),块中页面存放的数据表示的是分区中的一些块的块号。这些块存放着存储对象头元素信息,每个存储对象头元素分配一个页面。这个段从分区开始处分配,并固定的长度。具体长度看根据分区的大小设定。最后一部分是数据段,它包括有效的数据页面、脏数据页面以及空白页面。The first section of the partition represents the index node segment (Inode-StoredBlock of Segment) of the flash memory block storage file system, and the data stored in the page in the block represents the block number of some blocks in the partition. These blocks store the storage object header element information, and each storage object header element is allocated a page. This segment is allocated from the beginning of the partition and has a fixed length. The specific length is set according to the size of the partition. The last part is the data segment, which includes valid data pages, dirty data pages, and blank pages.

在系统初始化时,通过索引节点段中读取头页面信息,完成文件系统加载。When the system is initialized, the file system loading is completed by reading the header page information from the inode segment.

5)文件系统初始化:5) File system initialization:

文件系统初始化过程,如图2所示:The file system initialization process is shown in Figure 2:

1、首先要初始化文件系统相关变量,如superb、目录树、对象缓存等等。1. First, initialize file system-related variables, such as superb, directory tree, object cache, and so on.

2、初始化Nand闪存,并建立内存设备对象进行管理。2. Initialize Nand flash memory and create memory device objects for management.

3、扫描Nand闪存分区,从分区开始的索引节点段中依次读取每一个存有文件和目录索引节点的块,在块的每个页中再读出存有头页面块的块号,每一个块号指向分区中的一些块,以两个字节的无符号16位二进制数表示。这些数据块中的每个页面存放着目录和文件对象的头信息。3. Scan the Nand flash memory partition, read each block containing file and directory index nodes in turn from the index node segment at the beginning of the partition, and read the block number of the head page block in each page of the block. A block number points to some blocks in the partition, expressed as a two-byte unsigned 16-bit binary number. Each page in these data blocks holds header information for directory and file objects.

4、利用头对象页面建立对象的初始化信息,这包括访问控制信息、状态信息以及存储信息。每个存储对象通过一个类B-树的结构管理存储。每个对象还会被加入目录树中。4. Use the header object page to establish the initialization information of the object, which includes access control information, status information, and storage information. Each storage object manages storage through a B-tree-like structure. Each object is also added to the directory tree.

随着索引节点的不断读入,文件系统逐渐的被初始化。在HNFS中,目录下的所有子对象通过指针连接在一起,而文件数据通过B-树进行管理。最后建立一个从根目录为根节点到系统中到每个文件为叶子节点的搜索树。As inodes are read continuously, the file system is gradually initialized. In HNFS, all sub-objects under a directory are linked together through pointers, and file data is managed through B-trees. Finally, a search tree is established from the root directory as the root node to each file as the leaf node in the system.

6)目录查找:6) Directory lookup:

一个Linux文件名的路径,是一系列由“/”分开的目录名组成,最后以文件的名字结束。例如一个文件名是/home/ruby/.cshrc,在这里/home及/ruby是目录名字,文件的名字是.cshrc。象所有的其他的Unix系统一样,Linux并不特别着重对文件名的格式本身。它支持的最大长度是1024个字符,由可打印的字符组成。为了找到某个文件对应的内存对象,本发明方法所实现的文件系统必须从根目录或者当前目录出发逐层分析文件名,直到最终找到该文件。The path of a Linux file name is a series of directory names separated by "/", ending with the name of the file. For example, a file name is /home/ruby/.cshrc, where /home and /ruby are directory names, and the file name is .cshrc. Like all other Unix systems, Linux does not pay special attention to the format of the file name itself. The maximum length it supports is 1024 characters, consisting of printable characters. In order to find the memory object corresponding to a certain file, the file system implemented by the method of the present invention must analyze the file name layer by layer starting from the root directory or the current directory until the file is finally found.

需要的第一个对象是文件系统根(root)的对象。可以在文件系统的超级块中得到它的值。为了读取一个HNFS对象,必须在它的父目录的链表中找到它。例如对于ruby,必须先找到home,然后再从home的子对象链表中找到ruby。The first object required is the object for the root of the file system. Its value can be obtained in the superblock of the file system. In order to read an HNFS object, it must be found in the linked list of its parent directories. For example, for ruby, you must first find home, and then find ruby from the linked list of sub-objects of home.

home只是"/"中子对象链表中的一个。从其在“/”中的入口项,可以获得该对象的指针。必须通过这个目录对象(首先获取指向该对象的指针,然后从该对象的子对象链表中获取指向的ruby的指针)来发现ruby。从得到的数据中,得到/home/ruby目录内存对象的号码的入口。最后读入指向描述目录/home/ruby的内存对象数据。并从其指向的数据块中发现.csshrc的内存对象数值。从该内存对象中,可以定位包含该文件数据的数据块。home is just one of the sub-object lists in "/". From its entry in "/", a pointer to the object can be obtained. Ruby must be discovered through this directory object (first obtain a pointer to this object, and then obtain a pointer to ruby from the object's sub-object linked list). From the obtained data, the entry of the number of the memory object of the /home/ruby directory is obtained. Finally, read in the memory object data pointing to the description directory /home/ruby. And find the memory object value of .csshrc from the data block it points to. From this memory object, the data block containing the data for the file can be located.

7)文件位移定位:7) File displacement positioning:

在HNFS中,文件位移定位的目的就是根据用户给定位移,确定数据的存储数据段以及在数据段中的位移。In HNFS, the purpose of file displacement positioning is to determine the storage data segment of the data and the displacement in the data segment according to the displacement given by the user.

如前所述,在HNFS中,内存文件数据是以B-树的结构组织的。B-树中的树支节点存储指向叶子节点的指针以及该节点存储的字节数。而每个叶子节点存放一个指向存储区段的指针,以及该区段中存放的字节数。B-树在文件系统初始化时建立。As mentioned earlier, in HNFS, memory file data is organized in a B-tree structure. A branch node in a B-tree stores a pointer to a leaf node and the number of bytes stored by that node. And each leaf node stores a pointer to the storage section and the number of bytes stored in the section. B-trees are created when the file system is initialized.

如图3所示,位移定位是一个从根节点出发,最终找到一个叶子结点过程。首先获得参数并进行完整性检查。如果合格,则从根节点出发,根据给定的位移找到对应的子节点,如果该子节点以及以前的子节点所有的字节数不足文件位移,则需要寻找下一个子节点,直到找到对应子节点。在确定子节点后再从子节点的树叶节点中依次查找,直到找到对应的区段,并确定区段内的本地位移,并返回。若不存在下一个子节点或对应的叶子节点,并确定在该叶子节点所确定的区段上的位移。As shown in Figure 3, displacement positioning is a process starting from the root node and finally finding a leaf node. The parameters are first obtained and sanity checked. If it is qualified, start from the root node and find the corresponding child node according to the given displacement. If the number of bytes of this child node and the previous child nodes is not enough for the file displacement, you need to find the next child node until you find the corresponding child node. node. After the child node is determined, it is searched sequentially from the leaf nodes of the child node until the corresponding segment is found, and the local displacement in the segment is determined and returned. If there is no next child node or corresponding leaf node, and determine the displacement on the section determined by the leaf node.

8)数据读取:8) Data reading:

从HNFS文件系统读取数据的流程如图4所示:The process of reading data from the HNFS file system is shown in Figure 4:

1、首先获得读取的偏移量以及读取的字节数;1. First obtain the read offset and the number of bytes read;

2、确定区段以及段内位移;2. Determine the section and the displacement within the section;

3、开始读取循环,设置循环条件为还有数据需要读取;3. Start the reading cycle, and set the cycle condition as there is still data to be read;

4、从本区段开始顺序读取每个页将数据拷贝到buffer中,同时修改buffer指针偏移以及剩余数据量及读取偏移;4. Read each page sequentially from this section, copy the data to the buffer, and modify the buffer pointer offset, remaining data amount and read offset at the same time;

5、读取一个页面,首先在系统页缓存中查看是否有对应的缓存,如果没有,则从Nand闪存上读入页缓存;5. To read a page, first check whether there is a corresponding cache in the system page cache, if not, read the page cache from the Nand flash memory;

6、如果某个区段数据读完了,则选择下一个紧邻的区段读取,直到读取足够的字节数,如果文件没有足够的字节数;6. If the data of a section is read, select the next adjacent section to read until enough bytes are read, if the file does not have enough bytes;

7、完成后返回buffer以及共读取的字节数。7. After completion, return the buffer and the total number of bytes read.

9)数据写入:9) Data writing:

向HNFS文件系统写入数据的流程如图5所示:The process of writing data to the HNFS file system is shown in Figure 5:

1、首先获得文件偏移量以及写入的字节数;1. First obtain the file offset and the number of bytes written;

2、确定区段以及段内位移;2. Determine the section and the displacement within the section;

3、开始写入循环,设置循环条件为还有数据需要写入;3. Start the write cycle, and set the cycle condition as there is still data to be written;

4、先读取一个页面,首先在系统页缓存中查看是否有对应的缓存,如果没有,则从Nand闪存上读入页缓存;4. Read a page first, first check whether there is a corresponding cache in the system page cache, if not, read the page cache from the Nand flash memory;

5、从buffer中将数据顺序拷贝到本区段内部位移开始处,同时修改buffer指针偏移以及剩余数据量及读取偏移;5. Copy the data sequentially from the buffer to the beginning of the internal displacement of this segment, and modify the buffer pointer offset, remaining data amount and read offset at the same time;

6、如果采取写直达法,则直接选择一个空闲页面将缓存页面写入,写入成功后相应修改对象头的对应存储区段。如果在写过程中出现错误,则报错。6. If the write-through method is adopted, a free page is directly selected to write the cache page, and the corresponding storage section of the object header is correspondingly modified after the writing is successful. Report an error if an error occurs during the write.

7、写入的数据还没有写完,则顺序确定下一个紧邻的区段写入,直至全部写完。系统空闲页面不够时调用垃圾收集器回收系统中的脏页面;7. If the written data has not been written yet, the next adjacent segment is sequentially determined to be written until all of them are written. When there are not enough free pages in the system, the garbage collector is called to reclaim the dirty pages in the system;

8、完成后返回写入的字节数。8. Return the number of bytes written after completion.

Claims (1)

1.一种嵌入式Linux下大容量闪存文件系统的实现方法,其特征在于该方法的步骤如下:1. an implementation method of large-capacity flash file system under embedded Linux, it is characterized in that the steps of the method are as follows: 1)区段化存储:1) Segmented storage: 存储点都是以区段的方式组织的,文件数据存放在一段连续的页中,数据的添加和删除也以段为单位进行;区段是能伸缩的,并且具有添加、删除、合并、分割;所有的段存放在一个B-树中;Storage points are organized in sections, file data is stored in a continuous page, and data addition and deletion are also performed in units of sections; sections are scalable and have the functions of adding, deleting, merging, and splitting ;All segments are stored in a B-tree; 2)数据页分配:2) Data page allocation: 在分配空白页面时,将目录的页面和数据页面分开放在不同的块中,这样避免了“全部拷贝”,从而降低了页面的拷贝次数,提高了效率;When allocating blank pages, the pages of the directory and the data pages are placed in different blocks, which avoids "all copying", thereby reducing the number of page copies and improving efficiency; 每种类型的块有且仅有一个块处于“当前分配”状态。新页面从当前进行分配的块中顺序进行分配,若当前块已满,则顺序寻找下一个空闲块;Each type of block has one and only one block in the "current allocation" state. New pages are allocated sequentially from the currently allocated block, and if the current block is full, the next free block is sequentially searched for; 3)垃圾收集:3) Garbage collection: 对于脏数据,使用多种已有的回收方法混合的算法来进行垃圾回收,将贪心方法和随机选择方法按比例混合使用:当满足特定的小概率条件时,该特定的小概率条件在具体实现时根据不同的应用环境设定,垃圾回收器会试图用随机选择方法一个可回收的页面;而在其他情况下,则使用贪心方法回收最“脏”的块;For dirty data, garbage collection is performed using a mixture of multiple existing recycling methods, and the greedy method and random selection method are mixed in proportion: when a specific small probability condition is met, the specific small probability condition is implemented in the specific implementation According to different application environment settings, the garbage collector will try to randomly select a recyclable page; in other cases, use the greedy method to reclaim the most "dirty" block; 4)分区逻辑结构:4) Partition logical structure: 在分区的第一个区段表示闪存块存放文件系统的索引节点段,块中页面存放的数据表示的是分区中的一些块的块号;这些块存放着存储对象头元素信息,每个存储对象头元素分配一个页面;这个段从分区开始处分配,并固定的长度。具体长度看根据分区的大小设定;最后一部分是数据段,它包括有效的数据页面、脏数据页面以及空白页面;The first section of the partition indicates that the flash memory block stores the inode segment of the file system, and the data stored in the page in the block represents the block number of some blocks in the partition; these blocks store the header element information of the storage object, and each storage The object header element allocates a page; this segment is allocated from the beginning of the partition and has a fixed length. The specific length depends on the size of the partition; the last part is the data segment, which includes valid data pages, dirty data pages, and blank pages; 5)文件系统初始化:5) File system initialization: 1、首先要初始化文件系统相关变量;1. First, initialize the file system related variables; 2、初始化Nand闪存,并建立内存设备对象进行管理。2. Initialize Nand flash memory and create memory device objects for management. 3、扫描Nand闪存分区,从分区开始的索引节点段中依次读取每一个存有文件和目录索引节点的块;3. Scan the Nand flash partition, and read each block containing file and directory index nodes in sequence from the index node segment at the beginning of the partition; 4、利用头对象页面建立对象的初始化信息;4. Use the header object page to create the initialization information of the object; 6)目录查找:6) Directory lookup: 从根目录或者当前目录出发逐层分析文件名,直到最终找到该文件;Starting from the root directory or the current directory, analyze the file name layer by layer until the file is finally found; 7)文件位移定位:7) File displacement positioning: 位移定位是一个从根节点出发,最终找到一个叶子结点过程,首先获得参数并进行完整性检查;如果合格,则从根节点出发,根据给定的位移找到对应的子节点,如果该子节点以及以前的子节点所有的字节数不足文件位移,则需要寻找下一个子节点,直到找到对应子节点;在确定子节点后再从子节点的树叶节点中依次查找,直到找到对应的区段,并确定区段内的本地位移,并返回;若不存在下一个子节点或对应的叶子节点,并确定在该叶子节点所确定的区段上的位移;Displacement positioning is a process starting from the root node and finally finding a leaf node. First, obtain the parameters and perform integrity check; if qualified, start from the root node and find the corresponding child node according to the given displacement. If the child node And if the number of bytes of the previous child nodes is insufficient for the file displacement, it is necessary to search for the next child node until the corresponding child node is found; after determining the child node, search in turn from the leaf nodes of the child node until the corresponding section is found , and determine the local displacement in the section, and return; if there is no next child node or the corresponding leaf node, and determine the displacement on the section determined by the leaf node; 8)数据读取:8) Data reading: 从HNFS文件系统读取数据的流程:The process of reading data from the HNFS file system: 1、首先获得读取的偏移量以及读取的字节数;1. First obtain the read offset and the number of bytes read; 2、确定区段以及段内位移;2. Determine the section and the displacement within the section; 3、开始读取循环,设置循环条件为还有数据需要读取;3. Start the reading cycle, and set the cycle condition as there is still data to be read; 4、从本区段开始顺序读取每个页将数据拷贝到buffer中,同时修改buffer指针偏移以及剩余数据量及读取偏移;4. Read each page sequentially from this section, copy the data to the buffer, and modify the buffer pointer offset, remaining data amount and read offset at the same time; 5、读取一个页面,首先在系统页缓存中查看是否有对应的缓存,如果没有,则从Nand闪存上读入页缓存;5. To read a page, first check whether there is a corresponding cache in the system page cache, if not, read the page cache from the Nand flash memory; 6、如果某个区段数据读完了,则选择下一个紧邻的区段读取,直到读取足够的字节数,如果文件没有足够的字节数;6. If the data of a section is read, select the next adjacent section to read until enough bytes are read, if the file does not have enough bytes; 7、完成后返回buffer以及共读取的字节数;7. Return the buffer and the total number of bytes read after completion; 9)数据写入:9) Data writing: 向HNFS文件系统写入数据的流程:The process of writing data to the HNFS file system: 1、首先获得文件偏移量以及写入的字节数;1. First obtain the file offset and the number of bytes written; 2、确定区段以及段内位移;2. Determine the section and the displacement within the section; 3、开始写入循环,设置循环条件为还有数据需要写入;3. Start the write cycle, and set the cycle condition as there is still data to be written; 4、先读取一个页面,首先在系统页缓存中查看是否有对应的缓存,如果没有,则从Nand闪存上读入页缓存;4. Read a page first, first check whether there is a corresponding cache in the system page cache, if not, read the page cache from the Nand flash memory; 5、从buffer中将数据顺序拷贝到本区段内部位移开始处,同时修改buffer指针偏移以及剩余数据量及读取偏移;5. Copy the data sequentially from the buffer to the beginning of the internal displacement of this segment, and modify the buffer pointer offset, remaining data amount and read offset at the same time; 6、如果采取写直达法,则直接选择一个空闲页面将缓存页面写入,写入成功后相应修改对象头的对应存储区段。如果在写过程中出现错误,则报错;6. If the write-through method is adopted, a free page is directly selected to write the cache page, and the corresponding storage section of the object header is correspondingly modified after the writing is successful. If an error occurs during the writing process, an error is reported; 7、写入的数据还没有写完,则顺序确定下一个紧邻的区段写入,直至全部写完。系统空闲页面不够时调用垃圾收集器回收系统中的脏页面;7. If the written data has not been written yet, the next adjacent segment is sequentially determined to be written until all of them are written. When there are not enough free pages in the system, the garbage collector is called to reclaim the dirty pages in the system; 8、完成后返回写入的字节数。8. Return the number of bytes written after completion.
CNA2009100961243A 2009-02-12 2009-02-12 Method for implementing high-capacity flash memory file system in embedded type Linux Pending CN101488153A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNA2009100961243A CN101488153A (en) 2009-02-12 2009-02-12 Method for implementing high-capacity flash memory file system in embedded type Linux

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA2009100961243A CN101488153A (en) 2009-02-12 2009-02-12 Method for implementing high-capacity flash memory file system in embedded type Linux

Publications (1)

Publication Number Publication Date
CN101488153A true CN101488153A (en) 2009-07-22

Family

ID=40891043

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2009100961243A Pending CN101488153A (en) 2009-02-12 2009-02-12 Method for implementing high-capacity flash memory file system in embedded type Linux

Country Status (1)

Country Link
CN (1) CN101488153A (en)

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101825995A (en) * 2010-05-11 2010-09-08 太仓市同维电子有限公司 Method for supporting reading and writing of files on small flash memory partitions
CN102023992A (en) * 2009-09-18 2011-04-20 青岛海信电器股份有限公司 Content browsing method and apparatus
CN102253894A (en) * 2011-06-14 2011-11-23 沈阳建筑大学 Method for file storage in continuous space of flash memory in equal probability manner
CN102323907A (en) * 2011-08-19 2012-01-18 长安大学 Embedded ARM processor stores and deletes NANDFLASH data
CN101789004B (en) * 2010-01-22 2012-07-18 北京北大众志微系统科技有限责任公司 Rapid-start method and device of Flash file system
CN102135971B (en) * 2010-01-25 2013-03-06 英业达股份有限公司 How to manage server files
CN103853850A (en) * 2014-03-28 2014-06-11 北京工业大学 Method and system for eliminating data for user-centered Android system
CN103870364A (en) * 2014-03-31 2014-06-18 北京工业大学 YAFFS2 file final-version recovery method based on timestamp
CN107168886A (en) * 2016-03-07 2017-09-15 爱思开海力士有限公司 Data storage device and its operating method
CN107533506A (en) * 2015-05-06 2018-01-02 华为技术有限公司 Garbage collection method and device in log structured file system
CN108628753A (en) * 2017-03-24 2018-10-09 华为技术有限公司 Memory headroom management method and device
CN109656874A (en) * 2018-11-28 2019-04-19 烟台蓝洋电子科技有限责任公司 Binary file management system implementation method
CN109800185A (en) * 2018-12-29 2019-05-24 上海霄云信息科技有限公司 A kind of data cache method in data-storage system
CN110554842A (en) * 2019-09-06 2019-12-10 华大半导体有限公司 Method for simulating EEPROM (electrically erasable programmable read-Only memory) by using flash memory
CN112231246A (en) * 2020-10-31 2021-01-15 王志平 Method for realizing processor cache structure
CN112527745A (en) * 2020-12-18 2021-03-19 厦门市美亚柏科信息股份有限公司 Embedded file system multi-partition analysis method, terminal device and storage medium
CN113157395A (en) * 2021-04-20 2021-07-23 上海泓戟信息科技有限公司 Method for optimizing computer memory data synchronization
CN113485974A (en) * 2021-06-02 2021-10-08 翱捷科技股份有限公司 Method and device for using YAFFS (flash architecture) for NOR flash memory
CN113742127A (en) * 2021-09-16 2021-12-03 重庆大学 Fault recovery method for bare flash memory file system
CN114090618A (en) * 2022-01-18 2022-02-25 江西树格科技有限公司 Data reading method, system, computer and readable storage medium
CN117194369A (en) * 2023-08-16 2023-12-08 西北工业大学 Airborne embedded data reading and writing method and application

Cited By (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102023992A (en) * 2009-09-18 2011-04-20 青岛海信电器股份有限公司 Content browsing method and apparatus
CN101789004B (en) * 2010-01-22 2012-07-18 北京北大众志微系统科技有限责任公司 Rapid-start method and device of Flash file system
CN102135971B (en) * 2010-01-25 2013-03-06 英业达股份有限公司 How to manage server files
CN101825995B (en) * 2010-05-11 2011-08-03 太仓市同维电子有限公司 Methods to support reading and writing files on small flash partitions
CN101825995A (en) * 2010-05-11 2010-09-08 太仓市同维电子有限公司 Method for supporting reading and writing of files on small flash memory partitions
CN102253894A (en) * 2011-06-14 2011-11-23 沈阳建筑大学 Method for file storage in continuous space of flash memory in equal probability manner
CN102253894B (en) * 2011-06-14 2013-09-04 沈阳建筑大学 Method for file storage in continuous space of flash memory in equal probability manner
CN102323907A (en) * 2011-08-19 2012-01-18 长安大学 Embedded ARM processor stores and deletes NANDFLASH data
CN103853850A (en) * 2014-03-28 2014-06-11 北京工业大学 Method and system for eliminating data for user-centered Android system
CN103853850B (en) * 2014-03-28 2017-02-15 北京工业大学 Method and system for eliminating data for user-centered Android system
CN103870364A (en) * 2014-03-31 2014-06-18 北京工业大学 YAFFS2 file final-version recovery method based on timestamp
CN103870364B (en) * 2014-03-31 2017-10-24 北京工业大学 A kind of final version restoration methods of YAFFS2 files based on timestamp
CN107533506B (en) * 2015-05-06 2021-03-23 华为技术有限公司 Garbage collection method and equipment in log structured file system
CN107533506A (en) * 2015-05-06 2018-01-02 华为技术有限公司 Garbage collection method and device in log structured file system
CN107168886B (en) * 2016-03-07 2021-06-22 爱思开海力士有限公司 Data storage device and method of operation thereof
CN107168886A (en) * 2016-03-07 2017-09-15 爱思开海力士有限公司 Data storage device and its operating method
CN108628753A (en) * 2017-03-24 2018-10-09 华为技术有限公司 Memory headroom management method and device
CN109656874A (en) * 2018-11-28 2019-04-19 烟台蓝洋电子科技有限责任公司 Binary file management system implementation method
CN109656874B (en) * 2018-11-28 2024-03-08 山东蓝洋智能科技有限公司 Method for implementing file management system in dual system
CN109800185A (en) * 2018-12-29 2019-05-24 上海霄云信息科技有限公司 A kind of data cache method in data-storage system
CN109800185B (en) * 2018-12-29 2023-10-20 上海霄云信息科技有限公司 Data caching method in data storage system
CN110554842A (en) * 2019-09-06 2019-12-10 华大半导体有限公司 Method for simulating EEPROM (electrically erasable programmable read-Only memory) by using flash memory
CN112231246A (en) * 2020-10-31 2021-01-15 王志平 Method for realizing processor cache structure
CN112527745B (en) * 2020-12-18 2022-07-12 厦门市美亚柏科信息股份有限公司 Embedded file system multi-partition analysis method, terminal device and storage medium
CN112527745A (en) * 2020-12-18 2021-03-19 厦门市美亚柏科信息股份有限公司 Embedded file system multi-partition analysis method, terminal device and storage medium
CN113157395A (en) * 2021-04-20 2021-07-23 上海泓戟信息科技有限公司 Method for optimizing computer memory data synchronization
CN113485974A (en) * 2021-06-02 2021-10-08 翱捷科技股份有限公司 Method and device for using YAFFS (flash architecture) for NOR flash memory
CN113485974B (en) * 2021-06-02 2023-08-01 翱捷科技股份有限公司 Method and device for using YAFFS (gamma ray source flash memory)
CN113742127A (en) * 2021-09-16 2021-12-03 重庆大学 Fault recovery method for bare flash memory file system
CN114090618A (en) * 2022-01-18 2022-02-25 江西树格科技有限公司 Data reading method, system, computer and readable storage medium
CN117194369A (en) * 2023-08-16 2023-12-08 西北工业大学 Airborne embedded data reading and writing method and application

Similar Documents

Publication Publication Date Title
CN101488153A (en) Method for implementing high-capacity flash memory file system in embedded type Linux
Wu et al. An efficient B-tree layer implementation for flash-memory storage systems
CN110825748B (en) High-performance and easily-expandable key value storage method by utilizing differentiated indexing mechanism
CN107180092B (en) File system control method and device and terminal
CN101639848B (en) A spatial data engine and a method for managing spatial data using it
Lim et al. An efficient NAND flash file system for flash memory storage
US10831734B2 (en) Update-insert for key-value storage interface
CN100483420C (en) Fine grit document and catalogs version management method based on snapshot
CN102364474B (en) Metadata storage system for cluster file system and metadata management method
CN104268094B (en) Optimized flash memory address mapping method
US8037112B2 (en) Efficient access of flash databases
CN106502587B (en) Hard disk data management method and hard disk control device
US20180089074A1 (en) Techniques to Manage Key-Value Storage at a Memory or Storage Device
CN100424699C (en) An Object File System with Extensible Attributes
WO2021208239A1 (en) Low-latency file system address space management method and system, and medium
Fang et al. An Adaptive Endurance-Aware ${B^+} $-Tree for Flash Memory Storage Systems
EP4336336A1 (en) Data compression method and apparatus
CN105404667B (en) A kind of file data consistent update method for memory file system
CN114741028B (en) A persistent key-value storage method, device and system based on OCSSD
CN114840134A (en) Log merge tree key-value storage system and related methods and related devices
CN103942301A (en) Distributed file system oriented to access and application of multiple data types
CN113253926A (en) Memory internal index construction method for improving query and memory performance of novel memory
Purandare et al. Persimmon: an append-only ZNS-first filesystem
CN114676072A (en) Data processing method and device
WO2023082902A1 (en) Index creation method, computing device, and storage medium

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20090722