文件系统级的非挥发性存储器磨损均衡空闲块管理方法技术方案

技术编号:13962446 阅读:91 留言:0更新日期:2016-11-07 09:26
本发明专利技术公开了一种文件系统级的非挥发性存储器磨损均衡空闲块管理方法,包括构建空闲块队列及超级块,所述超级块存储空闲块队列的队头指针及队尾指针,所述队头指针及队尾指针分别指示空闲块队列起始空闲块结点所在的空闲块队列片段号和结束空闲块结点所在的空闲块队列片段号,当用户需要存储数据的时候,取出空闲块存储队列中队头元素,快速给用户分配空闲块。被分配出去的空闲块回收的时候放到空闲块存储队列的队尾,等待空闲块队列中前面元素分配完后再被分配使用,解决了磨损均衡问题。

【技术实现步骤摘要】

本专利技术涉及数据存储和数据管理领域,具体涉及文件系统级的非挥发性存储器磨损均衡空闲块管理方法
技术介绍
非挥发性存储器(non-volatile memory,NVRAM)以其高存储密度、较低的功耗、随机读写和字节可寻址等诸多优点,尤其是断电后还可以保留原有数据的特点,逐渐在存储系统中扮演越来越重要的角色。但是大部分非挥发性存储器的存储单元都有有限的擦写次数。由于大多数程序的写操作都呈现出明显的局部性和不均衡性,写操作集中的单元会比其他单元较早地达到寿命极限,从而造成数据错误,器件寿命也会因此而缩短。传统在文件系统层级的磨损均衡解决方法是为每个存储块设置计数器,这样需要消耗较多的内存。本专利技术提出一种区别与传统做法的方式在文件系统层级解决非挥发性存储器的磨损均衡问题。
技术实现思路
目前存在的文件系统层级的针对非挥发性存储器的磨损均衡解决方案需要设置计数指针,需要消耗大量的内存,为了克服这个缺陷,本专利技术提出一种文件系统级的非挥发性存储器磨损均衡空闲块管理方法。本专利技术的目的尽量避免消耗内存的情况下在文件系统层级解决非挥发性存储器的磨损均衡问题,使存储器写操作写的单元更加均匀,从而达到延长使用寿命的目的。本专利技术采用如下技术方案:一种文件系统级的非挥发性存储器磨损均衡空闲块管理方法,包括空闲块、超级块、数据块、空闲块队列、空闲块队列片段及空闲块结点,具体方法如下:构建空闲块队列,所述空闲块队列由至少一个空闲块队列片段构成,空闲块队列片段至少存储一个空闲块号或者存储全0结点,每个空闲块号对应唯一空闲块;构建超级块,超级块位于文件系统内,所述超级块存储空闲块队列的队头
指针及队尾指针,所述队头指针及队尾指针分别指示空闲块队列起始空闲块结点所在的空闲块队列片段号,和结束空闲块结点所在的空闲块队列片段号;当文件系统被挂载时,超级块被加载到内存中;当要向非挥发性存储器内写入数据时,则请求空闲块,从超级块中取出空闲块队列队头指针指向的空闲块队列片段号,若队头指针指向的空闲块队列片段号为N,若队尾指针指向的空闲块队列片段号为M:如果M=N,找到第一个非0的空闲块结点,所述空闲块结点对应唯一空闲块号,把空闲块结点中对应的空闲块号的空闲块直接分配给文件,修改当前空闲块结点的值为0,表示已经分配出去,该空闲块号的空闲块一旦被分配出去直到被回收之前都不可再用,分配出去的空闲块称为数据块;如果M≠N,取出队首指针指示的空闲队列片段上第一个非0空闲块结点,若该结点不是空闲块队列片段上最后一个空闲块结点,则直接分配;若该结点是空闲块队列片段上最后一个结点,则暂存当前空闲块队列队首指针指示的空闲块片段的空闲块号K,然后修改空闲块队列队首指针指向最后一个非0结点指示的块号,待修改完成后把最初暂存的K号空闲块分配给文件。还包括分配出去的空闲块若被释放,则置于超级块中空闲块队列队尾指针指示的空闲块队列片段上的第一个全0的空闲块结点。如果超级块中空闲块队列队尾指针指示的空闲块队列片段内无0的空闲块结点,则取当前空闲块队列片段内最后一个空闲块结点,以存储在该空闲块结点内的块号的空闲块作为下一个空闲块队列片段容器,新建空闲块队列片段,初始化空闲块队列片段内的空闲块结点为0,将释放后的空闲块块号存储到第一个为0的空闲块结点,同时修改超级块中空闲块队列的队尾指针。起始和结束的空闲块队列片段号上的空闲块结点如果未存满,则未存储的地方用0填充。本专利技术的有益效果:(1)在文件系统层级利用空闲块队列来分配、回收存储设备上的空闲块,解决非挥发性存储器的磨损均衡问题;(2)文件系统中的超级块在文件系统挂载的时候加载到内存,分配、回收空闲块优先操作内存中加载的超级块,定时把内存中的超级块同步回文件系统中的超级块,减少写操作对非挥发性存储器的损耗。附图说明图1是本专利技术的系统结构图;图2是本专利技术中空闲块分配的工作流程图;图3是本专利技术中空闲块回收的工作流程图具体实施方式下面结合实施例及附图,对本专利技术作进一步地详细说明,但本专利技术的实施方式不限于此。实施例一种文件系统级的非挥发性存储器磨损均衡空闲块管理方法,包括空闲块、超级块、数据块、空闲块队列、空闲块队列片段及空闲块结点;所述空闲块具体为:占有一定大小的存储空间,其内部没有有用的数据。是存储数据的基本数据单元。所述超级块:包含文件系统所有关键参数的块(确定文件系统类型的魔数、文件系统中数据块的数量以及其他重要的管理信息)。所述数据块:分配出去的空闲块,占有一定大小的存储空间,大小与空闲块一致,其内部存有数据。是存储介质进行读写的最小单位。空闲块队列:一个存储空闲块号的队列,在空闲块较多、空闲块队列较长的情况下,每个空闲块存储的空闲块结点数量有限,因此空闲块队列会分割为多个空闲块片段存储在多个空闲块上;空闲块队列片段:在空闲块队列较长的情况下,单个空闲块不能存储整个队列,队列会被分割成若干大小相等的片段分别存储在若干空闲块上,每个空闲块队列片段所占空间大小与空闲块一致。空闲块结点:空闲块队列中的一个元素,每个空闲块结点都储存着一个空闲块号。具体方法如下:构建空闲块队列,所述空闲块队列由至少一个空闲块队列片段构成,空闲块队列片段由存储着空闲块号的空闲块结点或全0结点构成”,每个空闲块号对应唯一空闲块。构建超级块,超级块位于文件系统内,所述超级块存储空闲块队列的队头指针及队尾指针,所述队头指针及队尾指针分别指示空闲块队列起始空闲块结点所在的空闲块号,和结束空闲块结点所在的空闲块号;空闲块的分配:当文件系统要向非挥发性存储器上写入数据的时候,需要为其分配若干空闲块。在本专利技术的文件系统的超级块中存储空闲块队列的队头和队尾指针,它们分别指向空闲块队列起始空闲块队列片段和结束空闲块结点所在的空闲块片段的块号,起始和结束的空闲块片段上的空闲块结点如果未存满,则未存储的地方用0填充。当文件系统被挂载上之后,超级块将被加载到内存中,内核会定期将其同步到存储设备上,以保证其正确性。当请求空闲块时,从内存中的超级块中取出空闲块队列队头指针指向的空闲块号(假设为N),和队尾指针指向的空闲块号(假设为M)。若队头指针(N)和队尾指针(M)指示的空闲块号相同(M=N)在该空闲块队列片段上找到第一个非0的空闲块结点直接分配给文件,修改当前空闲块结点的值为0,表示已经分配出去。该空闲块号的空闲块一旦被分配出去,直到被释放回收之前都不可再用。因为单个空闲块号上的队列能存储的空闲块结点有限,如果空闲块号较多的时候,单个空闲块已经存储不下这些空闲块结点,需要多个空闲块存储。此时存储空闲块结点的每个空闲块中(除队尾指示的空闲块)存储的最后一个空闲块结点是指示连续的下个空闲块队列片段所在的块号位置。若队首指针(N)和队尾指针M指示的空闲块号不同,即M≠N。取出队首指针指示的空闲块队列片段上第一个非0空闲块结点,若该结点不是空闲块队列片段上最后一个空闲块结点,则直接分配;若该结点是空闲块队列片段最后一个结点,则暂存当前队首指针指示的空闲块队列片段的空闲块号K,修改空闲块队列队首指针指向空闲块队列片段最后一个非0结点指示的块号,修改完成后把当前K号空闲块分配给文件。空闲块的回收:空闲块的回收方法,与分配方法相反。将释放的空闲块号置入超级块的空闲队列队本文档来自技高网
...

【技术保护点】
一种文件系统级的非挥发性存储器磨损均衡空闲块管理方法,其特征在于,包括空闲块、超级块、数据块、空闲块队列、空闲块队列片段及空闲块结点,具体方法如下:构建空闲块队列,所述空闲块队列由至少一个空闲块队列片段构成,空闲块队列片段至少存储一个空闲块号或者存储全0结点,每个空闲块号对应唯一空闲块;构建超级块,超级块位于文件系统内,所述超级块存储空闲块队列的队头指针及队尾指针,所述队头指针及队尾指针分别指示空闲块队列起始空闲块结点所在的空闲块队列片段号,和结束空闲块结点所在的空闲块队列片段号;当文件系统被挂载时,超级块被加载到内存中;当要向非挥发性存储器内写入数据时,则请求空闲块,从超级块中取出空闲块队列队头指针指向的空闲块队列片段号,若队头指针指向的空闲块队列片段号为N,若队尾指针指向的空闲块队列片段号为M;如果M=N,找到第一个非0的空闲块结点,所述空闲块结点对应唯一空闲块号,把空闲块结点中对应的空闲块号的空闲块直接分配给文件,修改当前空闲块结点的值为0,表示已经分配出去,该空闲块号的空闲块一旦被分配出去直到被回收之前都不可再用,分配出去的空闲块称为数据块;如果M≠N,取出队首指针指示的空闲队列片段上第一个非0空闲块结点,若该结点不是空闲块队列片段上最后一个空闲块结点,则直接分配;若该结点是空闲块队列片段上最后一个结点,则暂存当前空闲块队列队首指针指示的空闲块片段的空闲块号K,然后修改空闲块队列队首指针指向最后一个非0结点指示的块号,待修改完成后把最初暂存的K号空闲块分配给文件。...

【技术特征摘要】
1.一种文件系统级的非挥发性存储器磨损均衡空闲块管理方法,其特征在于,包括空闲块、超级块、数据块、空闲块队列、空闲块队列片段及空闲块结点,具体方法如下:构建空闲块队列,所述空闲块队列由至少一个空闲块队列片段构成,空闲块队列片段至少存储一个空闲块号或者存储全0结点,每个空闲块号对应唯一空闲块;构建超级块,超级块位于文件系统内,所述超级块存储空闲块队列的队头指针及队尾指针,所述队头指针及队尾指针分别指示空闲块队列起始空闲块结点所在的空闲块队列片段号,和结束空闲块结点所在的空闲块队列片段号;当文件系统被挂载时,超级块被加载到内存中;当要向非挥发性存储器内写入数据时,则请求空闲块,从超级块中取出空闲块队列队头指针指向的空闲块队列片段号,若队头指针指向的空闲块队列片段号为N,若队尾指针指向的空闲块队列片段号为M;如果M=N,找到第一个非0的空闲块结点,所述空闲块结点对应唯一空闲块号,把空闲块结点中对应的空闲块号的空闲块直接分配给文件,修改当前空闲块结点的值为0,表示已经分配出去,该空闲块号的空闲块一旦被分配出去直到被回收之前都不可再用,分配出去的空闲块称为数据块;如果M≠N,...

【专利技术属性】
技术研发人员:吴一民田梦达安栋梁竞雅段赫
申请(专利权)人:华南理工大学
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1