CN105718530B - 文件存储系统及其文件存储控制方法 - Google Patents
文件存储系统及其文件存储控制方法 Download PDFInfo
- Publication number
- CN105718530B CN105718530B CN201610029134.5A CN201610029134A CN105718530B CN 105718530 B CN105718530 B CN 105718530B CN 201610029134 A CN201610029134 A CN 201610029134A CN 105718530 B CN105718530 B CN 105718530B
- Authority
- CN
- China
- Prior art keywords
- file
- storage
- memory
- block
- free
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- 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/0608—Saving storage space on storage 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
Abstract
一种文件存储系统及其文件存储控制方法,所述文件存储系统包括第一存储器、第二存储器以及控制单元;第一存储器为采用整块读写的非易失性存储器,第二存储器为支持随机存储的非易失性存储器,第二存储器比第一存储器具有更长的使用寿命以及同等或更快的读写速度;第二存储器包括第一存储区域,用于存储记录有文件相关信息的文件目录,所述文件相关信息包括文件存储所使用的存储块和页;所述控制单元用于在执行文件创建并发生数据写入操作时,将所述第一存储器中的一个空闲存储块分配给该文件,并在数据写入完成后更新存储于所述第一存储区域的文件目录。本发明技术方案既能降低文件碎片化以提高系统性能或延长存储器寿命,又能节省内存空间。
Description
技术领域
本发明涉及文件存储技术领域,特别涉及一种文件存储系统及其文件存储控制方法。
背景技术
现在计算机、智能手机、平板电脑中,用户数据、文件被存在硬盘,或者NAND闪存芯片中以及由NAND闪存组成的固态硬盘(SSD,Solid State Drives)里。NAND和固态硬盘取代传统的机械硬盘又是一个产业发展的大趋势。
NAND是一种整块读写的存储设备(block device),最小可读取的单元叫页(page),最小可擦除的单元叫存储块或区块(block),一个block往往由很多page组成,block擦除后里面的page可以进行单独的写入(program)操作。
可以参阅图1,在软件层面,手机和计算机中文件存储的架构一般如下:
应用软件向操作系统发出打开、关闭、读、写文件指令;
操作系统中的文件系统部分把读、写文件的指令转化为读、写存储块的指令;
NAND驱动与管理软件接受读写存储块区的指令,进行缓存、写均衡等优化,向芯片发出读page、写block等指令;具体地,在手机中,NAND读写软件通常作为跟操作系统紧密相关的软件模块,在主控芯片上运行;在计算机中,NAND读写软件通常在固态硬盘控制器(SSDController)上运行。
文件系统是操作系统软件中的一个重要部分,负责解决文件的存储问题。它会把文件划分成一个个的块,一般每一个块和NAND闪存中的一个page对应。每当一个新文件创建,文件系统会分配给它一个块,当一个块写满后,再分配一个新的块。由于系统中很多文件都在增长,一个文件中的不同的块常常地址不连续,这就叫文件的碎片化。并且,一个文件删除后,释放出的空闲块会被新的文件占用。所以,随着产品的使用,文件的碎片化会越来越严重。
NAND闪存技术的发展推动了SSD产业。通常,SSD的结构如图2所示,SSD与主机之间使用高速串行接口如SATA、PICe等技术,SSD内部由用于存储数据的一组NAND芯片(即图2所示的NAND库),用于支持计算和缓存数据的内存(DDR DRAM),以及一个主控芯片(SSDController)组成。有时候还需要断电保护系统。
多媒体卡(eMMC,Embedded Multi Media Card)和安全数字存储卡(SD,SecureDigital Memory Card)等各种存储卡的架构与SSD类似,差别在于与主机接口的协议不同,且通常不用DRAM,而用少量集成在主控芯片(controller)内部的SRAM。
NAND闪存的一个问题是其具有有限的寿命。NAND闪存里面的每一个page经过一定次数的擦写以后,就会永久失效不能继续使用。目前的产业发展趋势是NAND的容量和数据密度增长非常快,但却是以降低寿命为代价,可擦写次数从最初的10万次降低到目前的3000次左右。
因为NAND闪存的以上特性,SSD内部的NAND管理软件比较复杂。为了不使某些经常发生写操作的块提前损坏,需要进行写均衡处理。文件系统软件所识别的逻辑地址和物理地址是不同的,需要一个表把二者对应起来。由于NAND擦除太慢,一般修改一内容时不在原来的块区更新,而是把新的内容写到一个新的块区,将旧块区标记为无效,等CPU空闲下来再擦除它。这样,逻辑地址与物理地址之间的对照表(逻辑-物理地址对照表)是不断动态更新的。这个表正比于SSD的总容量,存在DDR DRAM里,另外在NAND里面也有相应的标记。随着市场上SSD容量的迅速增加,这个表成为DRAM最大的消耗者。
由于NAND的读写速度比DRAM慢得多,还可以利用一部分DRAM空间作读、写的缓存(Cache),提高整个SSD的性能。然而,引入写缓存产生了新的问题:一旦发生断电,DRAM缓存中尚未写入NAND的内容会丢失,造成系统丢失数据甚至整个文件系统的损坏。所以必须同时使用昂贵的、体积大的断电保护系统(一般由电池或者大量的电容器组成)。而逻辑-物理地址对照表,在发生断电后,是可以利用NAND中的数据重新构造的,尽管很费时间。
NAND闪存一般在出厂时就有一些损坏的块,所以所有的NAND都伴随着一个坏块表,一般会被存储在NAND的指定区域或者在坏块上做标记。所以,一般NAND厂家提供的产品容量都大于标定值,留有一些备份块。
NAND在使用过程中坏块可能还会不断出现。最常见的情况下是在写入或擦除时,芯片的状态显示可能会表示写入、擦除失败。此时NAND管理软件应该找到一个替代块,重新写入数据。较少的情况下,读出时也会因为纠错和校验而失败,此时数据通常能够通过多次重复读来恢复,但NAND管理软件可能会寻找替代块把数据转存过去。
如果使用传统的机械硬盘存储文件,文件的碎片化是一个大问题,因为机械硬盘的磁头在寻找新的地址块时需要很长的时间,文件碎片化将导致系统的性能显著降低。如果使用NAND存储文件,虽然寻找新地址的时间基本不是问题,文件碎片化对系统性能的影响也比较小,但文件碎片化对NAND的使用寿命还是有很大影响的。
另外,现在的NAND管理方式,要求SSD和存储卡等块存储设备维持一张逻辑页/物理页的对照表,这个对照表会消耗相当大的内存空间。
发明内容
本发明要解决的问题是因现有技术存储文件所产生的文件碎片化而导致的系统性能降低或存储器寿命缩短,以及维护逻辑页/物理页的对照表所导致的巨大内存消耗。
为解决上述问题,本发明技术方案提供一种文件存储系统,包括:
第一存储器、第二存储器以及控制单元;
所述第一存储器为采用整块读写的非易失性(NV,Not Volatile)存储器,所述第二存储器为支持随机存储的非易失性存储器,所述第二存储器比所述第一存储器具有更长的使用寿命以及同等或更快的读写速度;
所述第二存储器包括第一存储区域,所述第一存储区域用于存储记录有文件相关信息的文件目录,所述文件相关信息包括文件存储所使用的存储块和页;
所述控制单元用于在执行文件创建并发生数据写入操作时,将所述第一存储器中的一个空闲存储块分配给该文件,并在数据写入完成后更新存储于所述第一存储区域的文件目录。
可选的,所述第二存储器还包括第二存储区域,所述第二存储区域用于文件读/写操作时的缓存。
可选的,所述文件目录中的每一个条目记录一个文件的文件相关信息,各个条目记录最先的m个存储块以及每个存储块中最先的n个页相应的信息,其他页的信息存储在这n个页中。
可选的,所述文件目录还包括指向指针,用于在文件存储所使用存储块的数量大于m时,指向记录有该文件后续所使用存储块和页的位置,该位置存储有该文件后续所使用的m个存储块以及每个存储块中最先的n个页相应的信息。
可选的,所述第二存储器还包括第三存储区域,所述第三存储区域用于存储由所有空闲存储块的相应信息所建立的空闲块信息链表,新释放的存储块的相应信息位于所述空闲块信息链表的尾部,待分配的存储块的相应信息位于所述空闲块信息链表的头部。
可选的,所述控制单元按顺序分配已被分配的存储块内的空闲页;所述第二存储器还包括第四存储区域,所述第四存储区域用于存储每一个已被分配的存储块中第一个空闲页以及所有无效页相应信息。
可选的,所述第二存储器为磁性随机存储器(MRAM,Magnetic Random AccessMemory),所述第一存储器为NAND闪存或固态硬盘。
可选的,所述第二存储器通过标准内存接口与所述控制单元相连。
可选的,所述第一存储器为固态硬盘,所述第二存储器内置于所述第一存储器之中。
为解决上述问题,本发明技术方案还提供一种上述文件存储系统的文件存储控制方法,包括:在执行文件创建并发生数据写入操作时,将所述第一存储器中的一个空闲存储块分配给该文件,并在数据写入完成后更新所述第一存储区域内的文件目录。
可选的,所述文件存储系统的文件存储控制方法还包括:利用已分配的存储块中的空闲页,对存储在所述已分配的存储块中的文件进行修改或数据添加。
可选的,所述文件存储系统的文件存储控制方法还包括:对存储在所述已分配的存储块中的文件进行修改或数据添加时,若该存储块中的空闲页已经用完,且修改或数据添加后的文件大小将会小于或等于一个存储块的容量,则分配一个新的空闲存储块,将该文件的所有数据转移至该新分配的空闲存储块,并释放原先存储该文件的存储块。
可选的,所述文件存储系统的文件存储控制方法还包括:当所述已分配的存储块的所有页已全部被使用,且需要添加新的数据时,则分配一个新的空闲存储块,将需要添加的新数据存储至该新分配的空闲存储块。
可选的,所述文件存储系统的文件存储控制方法还包括:当所述第一存储器中空闲存储块的数量小于预设阈值时,把上次写入时间早于第一预设时间,单独占据整个存储块且文件大小小于一个存储块容量的一个以上文件,转移到拥有足够连续空闲页的存储块中,并释放原先存储这些文件的存储块。
可选的,所述文件存储系统的文件存储控制方法还包括:将上次写入时间早于第二预设时间且存在非连续空闲页的存储块中所存储的一个以上文件,转移到拥有足够连续空闲页的存储块中连续存储,并释放原先存储这些文件的存储块。
可选的,所述将一个以上文件转移到拥有足够连续空闲页的存储块包括如下步骤:锁定待转移的所有文件;把所述待转移的所有文件的数据复制到拥有足够连续空闲页的存储块中;修改所述文件目录中所述待转移的所有文件的条目,标定这些文件新的存储位置;解锁所述待转移的所有文件。
与现有技术相比,本发明的技术方案至少具有以下优点:
通过使用两种不同类型的非易失性存储器相互协作共同存储文件,其中的第一存储器采用整块读写,第二存储器支持随机存储,比第一存储器具有更长的使用寿命以及同等或更快的读写速度;一方面,当执行文件创建并发生数据写入操作时,以空闲存储块为单位分配给该文件以完成数据写入,如此能保证大的文件用整个存储块进行存储,而不会使得能用一个存储块存储的数据被分散到不同的存储块里面,由此大大降低了在第一存储器中产生文件碎片化的可能性;另一方面,在第二存储器中存储记录有文件相关信息(文件存储所使用的存储块和页)的文件目录,通过维护所述文件目录能准确定位各个文件的存储位置,第二存储器的使用寿命足以支持所述文件目录的频繁更新,避免第一存储器因频繁读写而影响使用寿命。
相对于现有技术中仅采用NAND闪存或固态硬盘的文件存储方式,本发明技术方案使由连续写入所创建的大文件,比如拷贝、网络传入的文件、监控录像文件等,几乎都被保存在完整的存储块里面,由此会进一步降低NAND闪存或固态硬盘的擦写次数,延长产品的使用寿命;相对于现有技术中仅采用机械硬盘的文件存储方式,本发明技术方案能使文件尽量地保持在一个连续的空间里,地址块的寻址时间大大减少,由此提高了系统的性能。
此外,通过采用基于存储块的文件系统,不再需要维护逻辑地址与物理地址之间的对照表,极大地降低了现有技术中逻辑地址与物理地址之间的对照表所占的内存空间。
进一步地,通过将大量单独占据整个存储块的小文件(小于一个存储块的容量)集中在一起,使多个小文件尽量存储在一个存储块中,由此能够提高存储空间的利用率。
附图说明
图1是现有技术中文件存储在软件层面的架构示意图;
图2是现有技术中固态硬盘的结构示意图;
图3是本发明实施例的文件存储系统的结构示意图;
图4是本发明实施例提供的一种方式将MRAM集成于文件存储系统的结构示意图;
图5是本发明实施例提供的另一种方式将MRAM集成于文件存储系统的结构示意图。
具体实施方式
现有技术中,如果使用传统的机械硬盘存储文件,由于寻找新的地址块需要花费很长的时间,文件碎片化将导致系统的性能显著降低,而如果使用NAND存储文件,虽然文件碎片化对系统性能的影响较小,但却会对NAND的使用寿命产生很大影响;此外,现有的文件存储管理方式需要维护逻辑页/物理页的对照表,这将导致巨大的内存消耗。
本申请发明人分析如下:由于NAND最小可擦除的单位是block,一个block可能有32个page,如果一个32个page的文件被存到32个不同的block,那么这个文件被删除时就会擦除32个block;如果一个block中保存着32个文件,当其中任何一个文件被删除或者被修改,其他文件的数据也要随之被擦除再重写一遍。由于较多的NAND擦写次数会缩短NAND的寿命,导致使用NAND或固态硬盘的产品(例如手机、计算机等)提前报废。
通过上面的分析可知,在使用NAND存储文件的时代,防止文件碎片化仍然具有重要的意义。本申请发明人认为,要有效解决文件碎片化问题,主要是需要保证大的文件用整个block来存储,不要把能用一个block存储的数据分散到不同的block里面,也就是说,最重要的是在block的层面上防止文件碎片化。
为此,本发明技术方案提供一种在使用MRAM的情况下,改进操作系统中的文件系统软件的方法,它能够使得文件尽量地保持在一个连续的存储空间里,从而实现在存储块的层面上缓解文件的碎片化;此外,通过采用基于存储块的文件系统,不再需要维护逻辑地址与物理地址之间的对照表,极大地降低了现有技术中逻辑地址与物理地址之间的对照表所占的内存空间。
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例作详细的说明。
本发明技术方案的具体实施涉及操作系统中文件系统软件的修改,在本实施例中相应地提供了一种利用MRAM和NAND一起协同存储文件的控制方法,主要为了保障用整个block来保存大文件。
实施上述控制方法首先必须完成相应的硬件设计,把MRAM集成到文件存储系统中来,提供一种区别于现有技术的文件存储系统。
如图2所示,本发明实施例提供的文件存储系统包括:第一存储器10、第二存储器20以及控制单元30;所述第一存储器10为采用整块读写的非易失性存储器,所述第二存储器20为支持随机存储的非易失性存储器,所述第二存储器20比所述第一存储器10具有更长的使用寿命以及同等或更快的读写速度;所述第二存储器20包括第一存储区域201,所述第一存储区域201用于存储记录有文件相关信息的文件目录,所述文件相关信息包括文件存储所使用的存储块和页;所述控制单元30,适于在执行文件创建并发生数据写入操作时,将所述第一存储器10中的一个空闲存储块分配给该文件,并在数据写入完成后更新存储于所述第一存储区域201的文件目录。
需要说明的是,在本实施例中,以所述第二存储器20为磁性随机存储器(MRAM,Magnetic Random Access Memory),所述第一存储器10为NAND闪存或固态硬盘为例进行说明。在其他实施例中,凡是满足“支持随机存储的非易失性存储器”、“采用整块读写的非易失性存储器”和“第二存储器比第一存储器具有更长的使用寿命以及同等或更快的读写速度”这些相应条件的存储器均可实现,例如:随着存储技术的发展,今后可能出现比MRAM更为合适的支持随机存储、使用寿命长、读写速度快的非易失性存储器作为所述第二存储器;当然,所述第一存储器也可以是机械硬盘。
MRAM是一种新的内存和存储技术,可以像随机存储器(RAM,Random AccessMemory)一样快速随机读写,还可以像NAND闪存一样在断电后永久保留数据。不像NAND,MRAM可以无限多次地擦写,但预计未来相当长一段时间内,MRAM的容量比NAND低,成本比NAND高,所以本发明实施例中采用了将MRAM和NAND协同进行文件存储的控制,MRAM协助NAND一起担任存储文件和用户数据任务。
本实施例中,所述第一存储器10和第二存储器20的使用寿命是通过可擦写的次数进行衡量的。由于MRAM的技术特点,其可以无限多次地擦写,而NAND经过一定次数的擦写以后,就会永久失效不能继续使用,所以MRAM的使用寿命远远高于NAND的使用寿命。
在实际实施时,所述控制单元30可以通过软硬件结合的方式实现,其中软件部分体现在操作系统中文件系统软件的修改,具体表现为文件存储控制(包括文件创建或写入操作)方式的改变,而硬件部分则通过存储器控制器、中央处理器(CPU)等执行文件系统软件,例如在手机等通信终端中,操作系统中经过改进的文件系统软件可以在主控芯片上运行,在计算机中则通常在固态硬盘控制器上运行。当然,本领域技术人员可以理解的是,相应文件系统软件也可以通过固化到硬件的方式去实现。
继续参阅图2,下面将所述控制单元30实现的文件存储控制过程进行说明。
由于第一存储器10是一种整块读写的存储设备,而本领域技术人员知晓,所述整块读写的存储设备一般指的是以存储块(block)作为擦除以及写入的最小单元的存储设备,最小可读取的单元为页(page)。图2中以block1、block2……blockN进行标示的粗线框表示第一存储器10的各个存储块,粗线框中的每一矩形格子表示存储块中的page,其中block1这个存储块中的各个page按照顺序以page1-1、page1-2、page1-3、page1-4……等表示,block2这个存储块中的各个page按照顺序以page2-1、page2-2、page2-3、page2-4……等表示,以此类推,blockN这个存储块中的各个page按照顺序以pageN-1、pageN-2、pageN-3、pageN-4……等表示。
第二存储器20是支持随机存储的存储设备,该存储设备中不存在block的概念。如图2所示,在第二存储器20(MRAM)划分一部分作为第一存储区域201,第一存储区域201用于存储各个已存储在第一存储器10上的文件的目录,文件目录内记录各个文件的相关信息,包括所用的存储块和页。图2中的文件目录示出了文件A、文件B、文件C……等存储于第一存储器10的各个文件,每个文件均对应一个条目,每个文件的条目中记录了该文件在第一存储器10存储被分配了哪些存储块以及各个已分配的存储块中的哪些页,例如:文件A存储于第一存储器10中的block2、block3、block6……等存储块,假设第一存储器10中的一个block共有32个page,则图2所示文件目录中文件A被分配的block2占用了“Page2-1、……、Page2-32”这些page,被分配的block3占用了“Page3-1、……、Page3-32”这些page,被分配的block6占用了“Page6-1、……、Page6-32”这些page所使用的页,由此表明文件A占用了block2、block3、block6这些存储块中的所有page,即占用了整个存储块;类似地,文件B存储于第一存储器10中的block4和block5,其中分配给文件B的block4中,所有page均已被分配给文件B的写入,而分配给文件B的block5中,从Page5-1至Page5-18这18个page已被分配给文件B的写入,而block5尚有空闲页可用于文件B的数据添加;类似地,文件C存储于第一存储器10中的block1,其中从Page1-1至Page1-10这10个page已被分配给文件C写入数据。
需要指出的是,图2所示的文件目录仅仅是为了便于理解而给出的示例,并不一定是实际实施时真实的表现形式。
从图2所示的文件目录也可以看出,本实施例提供的文件存储系统中的控制单元30在进行文件存储控制过程中,当一个文件被创建并发生数据写入时,是分配一个空闲存储块(已经被擦除过)给该文件,而不是像现有技术中的文件系统那样分配一个页。
需要说明的是,现有技术中的文件系统在某个文件创建并发生数据写入操作时,通常都是以存储块中的页(Page)为单位分配给该文件的,而本实施例的文件存储系统所包含的文件系统则是以存储块(Block)为单位分配给该文件的,从而能够确保一个Block仅存储一个文件或一个文件中的部分数据,如此当需要删除该文件时,也仅需将整个Block删除即可,不涉及其他文件被擦除再重写一遍的问题,减少了反复擦除、写入的过程,延长了NAND或固态硬盘等支持整块读写的存储设备的寿命。
本实施例中,当一个文件被分配的存储块中尚有空闲页,则可以利用这个存储块中的空闲页,完成该文件的修改和数据添加。对存储在已分配的存储块中的文件进行修改或数据添加时,若该存储块中的空闲页已经用完,且修改或数据添加后的文件大小将会小于或等于一个存储块的容量,则分配一个新的空闲存储块,将该文件的所有数据转移至该新分配的空闲存储块,并释放原先存储该文件的存储块。实际实施时,当所有的空闲页已经用完但还有更多地修改或添加时,分配一个新的擦除过的空闲存储块,把数据转移过去,释放旧的存储块,擦除待用。
本实施例中,当已分配的存储块的所有页已全部被使用,且需要添加新的数据时,则分配一个新的空闲存储块,将需要添加的新数据存储至该新分配的空闲存储块。实际实施时,当所有已经分配的存储块的所有页全部被使用,且又有新的内容需要添加时,可以继续分配一个新的擦除过的存储块(空闲存储块)给这个文件,如此往复,直至文件写入结束。
按照前述方式进行文件存储控制,空间利用率将会非常低,因为有可能会有大量小文件占据着整个存储块,而一个存储块内有大量空闲页没有被使用。
为进一步解决空间利用率低的技术问题,本实施例的文件存储系统在进行文件存储控制时,当NAND闪存(第一存储器)中空闲存储块的数量低于预设阈值时,可以采用以下两种方式压缩文件系统,并如此往复:
方式一:当所述第一存储器中空闲存储块的数量小于预设阈值时,控制单元可以把上次写入时间早于第一预设时间,单独占据整个存储块且文件大小小于一个存储块容量的一个以上文件,转移到拥有足够连续空闲页的存储块中,并释放原先存储这些文件的存储块。
实际实施时,可以把上次写入时间早于某一预设时间(意味着较长时间未发生写入操作)的而占据整个块的小文件(小于一个存储块,例如图2所示文件目录中的文件C)集中到一起,在保证一个文件不跨越不同存储块的情况下,把尽量多个文件集中到一个存储块中,释放原来的存储块,擦除待用。
本实施例中,所述拥有足够连续空闲页的存储块既可以是存储着小文件且较长时间未发生写入的存储块(这种情况下其他需要转移的小文件被转移到该存储块中),也可以是空闲存储块。
方式二:当所述第一存储器中空闲存储块的数量小于预设阈值时,控制单元可以将上次写入时间早于第二预设时间且存在非连续空闲页的存储块中所存储的一个以上文件,转移到拥有足够连续空闲页的存储块中连续存储,并释放原先存储这些文件的存储块。
实际实施时,通过方式一将多个小文件合并压缩到一个存储块中之后,由于其中某些文件被删除,会使这些存储块产生空隙(存在非连续空闲页),可以把上次写入时间早于某一预设时间的有空隙的小文件块(存储多个小文件的存储块)中的内容转移到新的存储块中,连续存储,并将原来的存储块释放。
本实施例中,所述第一预设时间和第二预设时间可以设置为相同,也可以有所差别。本实施例中,所述第二存储器还可以包括第二存储区域,所述第二存储区域用于文件读/写操作时的缓存。由于MRAM既可以像NAND闪存一样在断电后永久保留数据,也可以像RAM一样快速随机读写,因此可以在MRAM中划出一部分作为缓存,提高CPU的处理效率。
本实施例提供的文件存储系统在软件部分的实施上,还可以通过采取以下几点措施帮助文件系统更高效:
1.文件目录的存储结构
所述文件目录中的每一个条目记录一个文件的文件相关信息,各个条目记录最先的m个存储块以及每个存储块中最先的n个页相应的信息,其他页的信息存储在这n个页中。
为了降低文件目录的条目长度以节省其占用的MRAM空间,条目可以仅仅记录其最先的m个块,每个块仅仅记录其最先的n个页,其他页的信息可以存储在这n个NAND页中。
此外,所述文件目录还可以增设一个指针(可以将其称为“指向指针”),用于在文件存储所使用存储块的数量大于m时,指向记录有该文件后续所使用存储块和页的位置,该位置存储有该文件后续所使用的m个存储块以及每个存储块中最先的n个页相应的信息。因此,如果文件有更多的存储块,可以通过所述指向指针将指向一个前面那样的结构。
2.空闲块信息的记录
本实施例中,所述第二存储器还可以包括第三存储区域,所述第三存储区域用于存储由所有空闲存储块的相应信息所建立的空闲块信息链表,新释放的存储块的相应信息位于所述空闲块信息链表的尾部,待分配的存储块的相应信息位于所述空闲块信息链表的头部。
实际实施时,可以将所有的空闲存储块排成一个链表存储在MRAM中,需要新的空闲存储块从链表前面取,新释放的存储块排到链表后面,这样可以保障写均衡,从而延长MRAM的整体使用寿命。
3.已分配存储块中空闲页和无效页的记录
本实施例中,对于已被分配的存储块,所述控制单元按顺序分配这些存储块内的空闲页。所述第二存储器还可以包括第四存储区域,所述第四存储区域用于存储每一个已被分配的存储块中第一个空闲页以及所有无效页相应信息。
实际实施时,可以在MRAM中存储一个表,对每一个被分配的存储块,记录其第一个空闲页,另外还可以记录这个存储块内的无效页(文件修改或删除会造成无效页)。这个数据结构非常节省MRAM空间,每一个页只需要一个bit来标注有效/无效。
需要说明的是,已分配存储块中空闲页和无效页可以通过“表”的形式记录,既可以用两个表分别记录空闲页和无效页的情况,也可以将已分配存储块中空闲页和无效页的情况用一个表进行记录。
4.压缩文件系统时移动文件的步骤
在压缩文件系统时,移动文件的步骤如下:
a)锁定文件;
b)把文件的数据复制到新的存储块/页;
c)修改文件目录区该文件的条目,标定文件新的存储区;
d)解锁文件。
因此,在本实施例中,压缩文件系统时将一个以上文件转移到拥有足够连续空闲页的存储块具体可以包括:锁定待转移的所有文件;把所述待转移的所有文件的数据复制到拥有足够连续空闲页的存储块中;修改所述文件目录中所述待转移的所有文件的条目,标定这些文件新的存储位置;解锁所述待转移的所有文件。
需要说明的是,本实施例中将文件的目录区存储在MRAM中就显得尤为重要,否则移动一个文件会造成多个NAND存储块的修改,过多的擦除和写入操作将大大降低NAND的使用寿命。
在实际实施时,所述文件存储系统可以应用于手机或计算机等产品中,由于此类产品中一般都还会具有一些易失性存储器配合CPU或数字信号处理器(DSP)等处理器进行计算操作,所述易失性存储器可以是双倍速率动态随机存储器(DDR DRAM,Double DataRate Dynamic Random Access Memory),且此类易失性存储器的存取操作同样会受到所述控制单元的控制。
因此,将MRAM集成到文件存储系统中与控制单元之间进行连接的一种简单的实施方式是:如图4所示,文件存储系统由CPU、MRAM和NAND闪存组成,还可以同时使用DRAM,由CPU运行文件系统,使用具有标准内存接口(例如DDR DRAM接口)的MRAM芯片产品,接入到CPU的DDR DRAM接口上,和原有的DDR DRAM一起使用,CPU通过不同的片选(chip select)信号选择DDR DRAM和MRAM。这种情况下的文件存储系统不需要使用逻辑/物理地址对照表,可以应用于文件服务器,或者直接对外提供文件服务的存储设备。
此外,也可以通过其他方式将MRAM集成到文件存储系统中,例如:如图5所示,文件存储系统具体由CPU、DRAM以及块存储设备(SSD或存储卡,以SSD为例进行说明)组成,由CPU运行文件系统。在固态硬盘(SSD)中内置MRAM,并在MRAM中划分出一块区域(文件目录)让CPU直接读写;当然,该CPU还通过DDR DRAM接口实现对DDR DRAM的读写操作。
块存储设备内,使用MRAM(实际使用中,只需要一块比NAND容量小得多的MRAM),协助NAND一起担任存储文件和用户数据任务。实际实施时,文件存储系统中可以添加一块MRAM和CPU直接连接,或嵌入在CPU之内。
块存储设备使用基于存储块的地址翻译。即:一个逻辑块可以被动态地映射到不同的物理块中,但同一个逻辑块中的页,被映射到同一个物理块中,或绝大部分时间被映射到同一个物理块中。当然,在需要的情况下,还可以在MRAM中划一部分用于存储逻辑地址与物理地址之间的对照表。
本实施例的文件存储系统通过采用基于存储块的文件系统,不再需要维护逻辑地址与物理地址之间的对照表,极大地降低了现有技术中逻辑地址与物理地址之间的对照表所占的内存空间。
基于上述文件存储系统,本发明实施例还提供一种上述文件存储系统的文件存储控制方法,包括:在执行文件创建并发生数据写入操作时,将所述第一存储器中的一个空闲存储块分配给该文件,并在数据写入完成后更新所述第一存储区域内的文件目录。
本实施例中,所述文件存储系统的文件存储控制方法还包括:利用已分配的存储块中的空闲页,对存储在所述已分配的存储块中的文件进行修改或数据添加。
本实施例中,所述文件存储系统的文件存储控制方法还包括:对存储在所述已分配的存储块中的文件进行修改或数据添加时,若该存储块中的空闲页已经用完,且修改或数据添加后的文件大小将会小于或等于一个存储块的容量,则分配一个新的空闲存储块,将该文件的所有数据转移至该新分配的空闲存储块,并释放原先存储该文件的存储块。
本实施例中,所述文件存储系统的文件存储控制方法还包括:当所述已分配的存储块的所有页已全部被使用,且需要添加新的数据时,则分配一个新的空闲存储块,将需要添加的新数据存储至该新分配的空闲存储块。
本实施例中,所述文件存储系统的文件存储控制方法还包括:当所述第一存储器中空闲存储块的数量小于预设阈值时,把上次写入时间早于第一预设时间,单独占据整个存储块且文件大小小于一个存储块容量的一个以上文件,转移到拥有足够连续空闲页的存储块中,并释放原先存储这些文件的存储块。
本实施例中,所述文件存储系统的文件存储控制方法还包括:将上次写入时间早于第二预设时间且存在非连续空闲页的存储块中所存储的一个以上文件,转移到拥有足够连续空闲页的存储块中连续存储,并释放原先存储这些文件的存储块。
在实际实施时,上述文件存储系统的文件存储控制方法可以很容易地通过C、C++等编程语言实施成一个软件模块,对现有的文件系统修改、加入,在手机、计算机的主控芯片或固态硬盘控制器中运行。特别地,对于手机,应选择专用于NAND闪存的文件系统,比如YAFF(Yet Another Flash File),进行本发明实施例所描述的修改。
所述文件存储系统的文件存储控制方法的具体实施也可以参考上述文件存储系统的实施,此处不再赘述。
本领域技术人员可以理解,实现上述实施例中的文件存储系统的全部或部分是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读存储介质中,所述存储介质可以是ROM、RAM、磁碟、光盘等。
本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。
Claims (11)
1.一种文件存储系统,其特征在于,包括:
第一存储器、第二存储器以及控制单元;
所述第一存储器为采用整块读写的非易失性存储器,所述第二存储器为支持随机存储的非易失性存储器,所述第二存储器比所述第一存储器具有更长的使用寿命以及同等或更快的读写速度;
所述第二存储器为MRAM,所述第一存储器为NAND闪存或固态硬盘;
所述第二存储器包括第一存储区域,所述第一存储区域用于存储记录有文件相关信息的文件目录,所述文件相关信息包括文件存储所使用的存储块和页;
所述控制单元用于在执行文件创建并发生数据写入操作时,不再需要维护逻辑地址与物理地址之间的对照表,将所述第一存储器中的一个空闲存储块分配给该文件,并在数据写入完成后更新存储于所述第一存储区域的文件目录;所述文件目录中的每一个条目记录一个文件的文件相关信息,各个条目记录最先的m个存储块以及每个存储块中最先的n个页相应的信息,其他页的信息存储在这n个页中。
2.根据权利要求1所述的文件存储系统,其特征在于,所述第二存储器还包括第二存储区域,所述第二存储区域用于文件读/写操作时的缓存。
3.根据权利要求1所述的文件存储系统,其特征在于,所述文件目录还包括指向指针,用于在文件存储所使用存储块的数量大于m时,指向记录有该文件后续所使用存储块和页的位置,该位置存储有该文件后续所使用的m个存储块以及每个存储块中最先的n个页相应的信息。
4.根据权利要求1所述的文件存储系统,其特征在于,所述第二存储器还包括第三存储区域,所述第三存储区域用于存储由所有空闲存储块的相应信息所建立的空闲块信息链表,新释放的存储块的相应信息位于所述空闲块信息链表的尾部,待分配的存储块的相应信息位于所述空闲块信息链表的头部。
5.根据权利要求1所述的文件存储系统,其特征在于,所述控制单元按顺序分配已被分配的存储块内的空闲页;所述第二存储器还包括第四存储区域,所述第四存储区域用于存储每一个已被分配的存储块中第一个空闲页以及所有无效页相应信息。
6.根据权利要求1所述的文件存储系统,其特征在于,所述第二存储器通过标准内存接口与所述控制单元相连。
7.根据权利要求1所述的文件存储系统,其特征在于,所述第一存储器为固态硬盘,所述第二存储器内置于所述第一存储器之中。
8.一种如权利要求1至7任一项所述的文件存储系统的文件存储控制方法,其特征在于,包括:在执行文件创建并发生数据写入操作时,将所述第一存储器中的一个空闲存储块分配给该文件,并在数据写入完成后更新所述第一存储区域内的文件目录;利用已分配的存储块中的空闲页,对存储在所述已分配的存储块中的文件进行修改或数据添加;对存储在所述已分配的存储块中的文件进行修改或数据添加时,若该存储块中的空闲页已经用完,且修改或数据添加后的文件大小将会小于或等于一个存储块的容量,则分配一个新的空闲存储块,将该文件的所有数据转移至该新的空闲存储块,并释放原先存储该文件的存储块;当所述已分配的存储块的所有页已全部被使用,且需要添加新的数据时,则分配一个新的空闲存储块,将需要添加的新数据存储至该新的空闲存储块。
9.根据权利要求8所述的文件存储系统的文件存储控制方法,其特征在于,还包括:当所述第一存储器中空闲存储块的数量小于预设阈值时,把上次写入时间早于第一预设时间,单独占据整个存储块且文件大小小于一个存储块容量的一个以上文件,转移到拥有足够连续空闲页的存储块中,并释放原先存储这些文件的存储块。
10.根据权利要求9所述的文件存储系统的文件存储控制方法,其特征在于,还包括:将上次写入时间早于第二预设时间且存在非连续空闲页的存储块中所存储的一个以上文件,转移到拥有足够连续空闲页的存储块中连续存储,并释放原先存储这些文件的存储块。
11.根据权利要求9或10所述的文件存储系统的文件存储控制方法,其特征在于,将一个以上文件转移到拥有足够连续空闲页的存储块包括如下步骤:
锁定待转移的所有文件;
把所述待转移的所有文件的数据复制到拥有足够连续空闲页的存储块中;
修改所述文件目录中所述待转移的所有文件的条目,标定这些文件新的存储位置;
解锁所述待转移的所有文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610029134.5A CN105718530B (zh) | 2016-01-15 | 2016-01-15 | 文件存储系统及其文件存储控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610029134.5A CN105718530B (zh) | 2016-01-15 | 2016-01-15 | 文件存储系统及其文件存储控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105718530A CN105718530A (zh) | 2016-06-29 |
CN105718530B true CN105718530B (zh) | 2020-02-04 |
Family
ID=56147626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610029134.5A Active CN105718530B (zh) | 2016-01-15 | 2016-01-15 | 文件存储系统及其文件存储控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105718530B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114089915B (zh) * | 2017-03-27 | 2022-12-20 | 珠海极海半导体有限公司 | 基于flash存储器的文件追加写操作方法及装置 |
CN107341227B (zh) * | 2017-07-01 | 2020-12-25 | 中国科学院计算机网络信息中心 | 文件处理方法、服务器及计算机可读存储介质 |
CN108197184A (zh) * | 2017-12-25 | 2018-06-22 | 深圳天珑无线科技有限公司 | 文件存储的方法及文件存储设备、存储装置 |
CN109144958B (zh) * | 2018-07-02 | 2021-08-03 | 广东睿江云计算股份有限公司 | 一种联合文件系统文件访问频率元数据采集方法及装置 |
KR20200018156A (ko) * | 2018-08-10 | 2020-02-19 | 에스케이하이닉스 주식회사 | 메모리장치에 대한 에러정정코드 기능을 갖는 메모리 시스템 및 그 운영방법 |
CN109582243B (zh) * | 2018-12-03 | 2022-04-12 | 深圳市得一微电子有限责任公司 | 主控内存的存储扩展方法、装置、可读存储介质及系统 |
CN110045924B (zh) * | 2019-03-01 | 2022-02-11 | 平安科技(深圳)有限公司 | 分级存储方法、装置、电子设备及计算机可读存储介质 |
CN112306377A (zh) * | 2019-08-01 | 2021-02-02 | 北京兆易创新科技股份有限公司 | 数据恢复方法、数据恢复装置、电子设备及存储介质 |
CN110647294B (zh) * | 2019-09-09 | 2022-03-25 | Oppo广东移动通信有限公司 | 存储块回收方法、装置、存储介质及电子设备 |
CN110716884B (zh) * | 2019-09-20 | 2023-11-17 | 深圳市网心科技有限公司 | 碎片数据存储方法、电子设备及系统 |
CN114064588B (zh) * | 2021-11-24 | 2023-04-25 | 建信金融科技有限责任公司 | 存储空间调度方法及系统 |
CN115629719B (zh) * | 2022-12-19 | 2023-04-14 | 合肥康芯威存储技术有限公司 | 一种存储装置及其控制方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541869A (zh) * | 2010-12-07 | 2012-07-04 | 腾讯科技(深圳)有限公司 | 写入文件的方法和装置 |
CN103902669A (zh) * | 2014-03-17 | 2014-07-02 | 华中科技大学 | 一种基于不同存储介质的分离式文件系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1204501C (zh) * | 2001-09-18 | 2005-06-01 | 华为技术有限公司 | Flash存储文件管理方法 |
US9104315B2 (en) * | 2005-02-04 | 2015-08-11 | Sandisk Technologies Inc. | Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage |
-
2016
- 2016-01-15 CN CN201610029134.5A patent/CN105718530B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541869A (zh) * | 2010-12-07 | 2012-07-04 | 腾讯科技(深圳)有限公司 | 写入文件的方法和装置 |
CN103902669A (zh) * | 2014-03-17 | 2014-07-02 | 华中科技大学 | 一种基于不同存储介质的分离式文件系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105718530A (zh) | 2016-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105718530B (zh) | 文件存储系统及其文件存储控制方法 | |
US10915475B2 (en) | Methods and apparatus for variable size logical page management based on hot and cold data | |
US9720616B2 (en) | Data-retention controller/driver for stand-alone or hosted card reader, solid-state-drive (SSD), or super-enhanced-endurance SSD (SEED) | |
US10657047B2 (en) | Data storage device and method of performing partial garbage collection | |
US8909986B2 (en) | Data storing method for solid state drive to preserve data integrity after power failure | |
US9645895B2 (en) | Data storage device and flash memory control method | |
US8737148B2 (en) | Selective retirement of blocks | |
US7941692B2 (en) | NAND power fail recovery | |
US9158700B2 (en) | Storing cached data in over-provisioned memory in response to power loss | |
US9563550B2 (en) | Flash storage device and control method for flash memory | |
US20070094445A1 (en) | Method to enable fast disk caching and efficient operations on solid state disks | |
CN110955384B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
US20190188130A1 (en) | Data Storage Device and Non-Volatile Memory Control Method | |
US10162561B2 (en) | Managing backup of logical-to-physical translation information to control boot-time and write amplification | |
CN110674056B (zh) | 一种垃圾回收方法及装置 | |
US20140328127A1 (en) | Method of Managing Non-Volatile Memory and Non-Volatile Storage Device Using the Same | |
US20140223075A1 (en) | Physical-to-logical address map to speed up a recycle operation in a solid state drive | |
CN114730300A (zh) | 对区命名空间存储器的增强型文件系统支持 | |
CN112015341A (zh) | 一种数据存储方法、存储系统及存储介质 | |
US11334480B2 (en) | Data storage device and non-volatile memory control method | |
TWI718710B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
EP2264602A1 (en) | Memory device for managing the recovery of a non volatile memory | |
KR102113212B1 (ko) | 플래시 메모리 시스템 및 그 제어 방법 | |
US11218164B2 (en) | Data storage device and non-volatile memory control method | |
US11199982B2 (en) | Data storage device and control method for non-volatile memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |