文件存储系统及其文件存储控制方法_3

文档序号:9929587阅读:来源:国知局
占用了 “Page3_l、......、Page3_32” 这些page,被分配的block6占用了 “Page6_l、......、Page6_32”这些page所使用的页,由此表明文件A占用了
blOCk2、blOCk3、block6这些存储块中的所有page,即占用了整个存储块;类似地,文件B存储于第一存储器10中的block4和block5,其中分配给文件B的block4中,所有page均已被分配给文件B的写入,而分配给文件B的block5中,从Page5_l至Page5_18这18个page已被分配给文件B的写入,而block5尚有空闲页可用于文件B的数据添加;类似地,文件C存储于第一存储器10中的blockl,其中从Pagel-1至Pagel-1O这10个page已被分配给文件C写入数据。
[0064]需要指出的是,图2所示的文件目录仅仅是为了便于理解而给出的示例,并不一定是实际实施时真实的表现形式。
[0065]从图2所示的文件目录也可以看出,本实施例提供的文件存储系统中的控制单元30在进行文件存储控制过程中,当一个文件被创建并发生数据写入时,是分配一个空闲存储块(已经被擦除过)给该文件,而不是像现有技术中的文件系统那样分配一个页。
[0066]需要说明的是,现有技术中的文件系统在某个文件创建并发生数据写入操作时,通常都是以存储块中的页(Page)为单位分配给该文件的,而本实施例的文件存储系统所包含的文件系统则是以存储块(Block)为单位分配给该文件的,从而能够确保一个Block仅存储一个文件或一个文件中的部分数据,如此当需要删除该文件时,也仅需将整个Block删除即可,不涉及其他文件被擦除再重写一遍的问题,减少了反复擦除、写入的过程,延长了NAND或固态硬盘等支持整块读写的存储设备的寿命。
[0067]本实施例中,当一个文件被分配的存储块中尚有空闲页,则可以利用这个存储块中的空闲页,完成该文件的修改和数据添加。对存储在已分配的存储块中的文件进行修改或数据添加时,若该存储块中的空闲页已经用完,且修改或数据添加后的文件大小将会小于或等于一个存储块的容量,则分配一个新的空闲存储块,将该文件的所有数据转移至该新分配的空闲存储块,并释放原先存储该文件的存储块。实际实施时,当所有的空闲页已经用完但还有更多地修改或添加时,分配一个新的擦除过的空闲存储块,把数据转移过去,释放旧的存储块,擦除待用。
[0068]本实施例中,当已分配的存储块的所有页已全部被使用,且需要添加新的数据时,则分配一个新的空闲存储块,将需要添加的新数据存储至该新分配的空闲存储块。实际实施时,当所有已经分配的存储块的所有页全部被使用,且又有新的内容需要添加时,可以继续分配一个新的擦除过的存储块(空闲存储块)给这个文件,如此往复,直至文件写入结束。
[0069]按照前述方式进行文件存储控制,空间利用率将会非常低,因为有可能会有大量小文件占据着整个存储块,而一个存储块内有大量空闲页没有被使用。
[0070]为进一步解决空间利用率低的技术问题,本实施例的文件存储系统在进行文件存储控制时,当NAND闪存(第一存储器)中空闲存储块的数量低于预设阈值时,可以采用以下两种方式压缩文件系统,并如此往复:
[0071]方式一:当所述第一存储器中空闲存储块的数量小于预设阈值时,控制单元可以把上次写入时间早于第一预设时间,单独占据整个存储块且文件大小小于一个存储块容量的一个以上文件,转移到拥有足够连续空闲页的存储块中,并释放原先存储这些文件的存储块。
[0072]实际实施时,可以把上次写入时间早于某一预设时间(意味着较长时间未发生写入操作)的而占据整个块的小文件(小于一个存储块,例如图2所示文件目录中的文件C)集中到一起,在保证一个文件不跨越不同存储块的情况下,把尽量多个文件集中到一个存储块中,释放原来的存储块,擦除待用。
[0073]本实施例中,所述拥有足够连续空闲页的存储块既可以是存储着小文件且较长时间未发生写入的存储块(这种情况下其他需要转移的小文件被转移到该存储块中),也可以是空闲存储块。
[0074]方式二:当所述第一存储器中空闲存储块的数量小于预设阈值时,控制单元可以将上次写入时间早于第二预设时间且存在非连续空闲页的存储块中所存储的一个以上文件,转移到拥有足够连续空闲页的存储块中连续存储,并释放原先存储这些文件的存储块。
[0075]实际实施时,通过方式一将多个小文件合并压缩到一个存储块中之后,由于其中某些文件被删除,会使这些存储块产生空隙(存在非连续空闲页),可以把上次写入时间早于某一预设时间的有空隙的小文件块(存储多个小文件的存储块)中的内容转移到新的存储块中,连续存储,并将原来的存储块释放。
[0076]本实施例中,所述第一预设时间和第二预设时间可以设置为相同,也可以有所差另O。本实施例中,所述第二存储器还可以包括第二存储区域,所述第二存储区域用于文件读/写操作时的缓存。由于MRAM既可以像NAND闪存一样在断电后永久保留数据,也可以像RAM—样快速随机读写,因此可以在MRAM中划出一部分作为缓存,提高CPU的处理效率。
[0077]本实施例提供的文件存储系统在软件部分的实施上,还可以通过采取以下几点措施帮助文件系统更高效:
[0078]1.文件目录的存储结构
[0079]所述文件目录中的每一个条目记录一个文件的文件相关信息,各个条目记录最先的m个存储块以及每个存储块中最先的η个页相应的信息,其他页的信息存储在这η个页中。
[0080]为了降低文件目录的条目长度以节省其占用的MRAM空间,条目可以仅仅记录其最先的m个块,每个块仅仅记录其最先的η个页,其他页的信息可以存储在这η个NAND页中。
[0081]此外,所述文件目录还可以增设一个指针(可以将其称为“指向指针”),用于在文件存储所使用存储块的数量大于m时,指向记录有该文件后续所使用存储块和页的位置,该位置存储有该文件后续所使用的m个存储块以及每个存储块中最先的η个页相应的信息。因此,如果文件有更多的存储块,可以通过所述指向指针将指向一个前面那样的结构。
[0082]2.空闲块信息的记录
[0083]本实施例中,所述第二存储器还可以包括第三存储区域,所述第三存储区域用于存储由所有空闲存储块的相应信息所建立的空闲块信息链表,新释放的存储块的相应信息位于所述空闲块信息链表的尾部,待分配的存储块的相应信息位于所述空闲块信息链表的头部O
[0084]实际实施时,可以将所有的空闲存储块排成一个链表存储在MRAM中,需要新的空闲存储块从链表前面取,新释放的存储块排到链表后面,这样可以保障写均衡,从而延长MRAM的整体使用寿命。
[0085]3.已分配存储块中空闲页和无效页的记录
[0086]本实施例中,对于已被分配的存储块,所述控制单元按顺序分配这些存储块内的空闲页。所述第二存储器还可以包括第四存储区域,所述第四存储区域用于存储每一个已被分配的存储块中第一个空闲页以及所有无效页相应信息。
[0087]实际实施时,可以在MRAM中存储一个表,对每一个被分配的存储块,记录其第一个空闲页,另外还可以记录这个存储块内的无效页(文件修改或删除会造成无效页)。这个数据结构非常节省MRAM空间,每一个页只需要一个bit来标注有效/无效。
[0088]需要说明的是,已分配存储块中空闲页和无效页可以通过“表”的形式记录,既可以用两个表分别记录空闲页和无效页的情况,也可以将已分配存储块中空闲页和无效页的情况用一个表进行记录。
[0089]4.压缩文件系统时移动文件的步骤
[0090]在压缩文件系统时,移动文件的步骤如下:
[0091]a)锁定文件;
[0092]b)把文件的数据复制到新的存储块/页;
[0093]c)修改文件目录区该文件的条目,标定文件新的存储区;
[0094]d)解锁文件。
[0095]因此,在本实施例中,压缩文件系统时将一个以上文件转移到拥有足够连续空闲页的存储块具体可以包括:锁定待转移的所有文件;把所述待转移的所有文件的数据复制到拥有足够连续空闲页的存储块中;修改所述文件目录中所述待转移的所有文件的条目,标定这些文件新的存储位置;解锁所述待转移的所有文件。
[0096]需要说明的是,本实施例中将文件的目录区存储在MRAM中就显得尤为重要,否则移动一个文件会造成多个NAND存储块的修改,过多的擦除和写入操作将大大降低NAND的使用寿命。
[0097]在实际实施时,所述文件存储系统可以应用于手机或计算机等产品中,由于此类产品中一般都还会具有一些易失性存储器配合CPU或数字信号处理器(DSP)等处理器进行计算操作,所述易失性存储器可以是双倍速率动态随机存储器(DDR DRAM,DoubIe DataRate Dynamic Random Access Memory),且此类易失性存储器的存取操作同样会受到所述控制单元的控制。
[0098]因此,将MRAM集成到文件存储系统中与控制单元之间进行连接的一种简单的实施方式是:如图4所示,文件存储系统由CPU、MRAM和NAND闪存组成,还可以同时使用DRAM,由CHJ运行文件系统,使用具有标准内存接口(例如DDR DRAM接口)的MRAM芯片产品,接入到CPU的DDR DRAM接口上,和原有的DDR DRAM—起使用,CPU通过不同的片选(chip select)信号选择DDR DRAM和MRAM。这种情况下的文件存储系统不需要使用逻辑/物理地址对照表,可以应用于文件服务器,或者直接对外提供文件服务的存储设备。
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1