CN105845182B - 文件系统级的非挥发性存储器磨损均衡空闲块管理方法 - Google Patents

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

Info

Publication number
CN105845182B
CN105845182B CN201610156467.4A CN201610156467A CN105845182B CN 105845182 B CN105845182 B CN 105845182B CN 201610156467 A CN201610156467 A CN 201610156467A CN 105845182 B CN105845182 B CN 105845182B
Authority
CN
China
Prior art keywords
free block
block
free
queue
node
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.)
Expired - Fee Related
Application number
CN201610156467.4A
Other languages
English (en)
Other versions
CN105845182A (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.)
South China University of Technology SCUT
Original Assignee
South China University of Technology SCUT
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 South China University of Technology SCUT filed Critical South China University of Technology SCUT
Priority to CN201610156467.4A priority Critical patent/CN105845182B/zh
Publication of CN105845182A publication Critical patent/CN105845182A/zh
Application granted granted Critical
Publication of CN105845182B publication Critical patent/CN105845182B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically

Landscapes

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

Abstract

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

Description

文件系统级的非挥发性存储器磨损均衡空闲块管理方法
技术领域
本发明涉及数据存储和数据管理领域,具体涉及文件系统级的非挥发性存储器磨损均衡空闲块管理方法。
背景技术
非挥发性存储器(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空闲块结点直接存储新释放的块号。若当前空闲块队列片段已经存储满空闲块结点,取当前空闲块队列片段中最后一个空闲结点记录的块号(假设X),在X上新建空闲块队列片段,初始化该空闲块队列片段上所有空闲块结点为全0,把新释放的空闲块块号存入该空闲块队列片段第一个为0的空闲块结点,修改内存中超级块中的队尾指针指向当前新分配的空闲块队列片段块号。定期再把修改同步到存储在非挥发性存储设备的超级块中。下次对同一空闲块操作需要把空闲块队列中该块之前的空闲块都分配完后,减少了对同一空闲块的使用频次,使每个空闲块均匀的被使用,从磨损均衡的角度考虑,我们保证这些数据块不会被过度使用。
本发明通过发明一种文件系统层级的非挥发性存储器空闲块管理方式,增加考虑磨损均衡技术,延长了易损耗的非挥发性存储器的整体使用寿命。本发明使用空闲块队列管理空闲块借鉴了磁盘空闲块链表方式管理,并加以改进,每次从队头取出空闲列表块,经过是否是最后一个空闲块片段和是否还有空闲块存储空闲块队列等判断后分配,回收的空闲列表块放在队尾,如果当前空闲块存储满后,在当前空闲块队列存储的最后一个空闲块新建一个空闲块队列片段,存储延续当前队列结点,本发明保证了空闲块不会被随机分配,先被分配的空闲块会等到把排在队列前面的空闲块使用完毕后再使用,比较自然的解决了非挥发性存储器的磨损问题。
如图1是本发明实施例的系统结构图,
本发明采用空闲块队列形式存储空闲块号,超级块的队首指向#25号空闲块队列片段,队尾指向#128号空闲块队列片段。其中#25号和#128号空闲块上都是一个空闲块队列片段。
空闲块的分配方法,当文件系统要向非挥发性存储器上写数据的时候,需要为其分配若干空闲块。在本发明的文件系统的超级块中存储空闲块队列的队头和队尾指针,分别存储空闲块队列的起始空闲块结点和结束空闲块结点所在的空闲块号,当文件系统被挂载之后,超级块将被加载到内存中,内核会定期将其同步到存储设备上,以保证其正确性。
如图2所示,当请求空闲块时,从内存中的超级块中取出空闲块队列队头指针指向的空闲块片段号#25,则寻找存储在该空闲块号内的空闲块队列片段上第一个非0空闲块结点,假设为图1中97号空闲块结点,该结点并不是该空闲块队列片段上最后一个结点,则将97号空闲块直接分配给文件,修改当前存储着97号空闲块的结点的数据为全0表示已经分配,97号空闲块一旦被分配出去直到被回收之前都不可再用。
因为每个空闲块号上能存储的空闲块结点数有限,当空闲块结点较多的时候,空闲块队列会被分割成多个空闲块队列片段存储在若干空闲块上。每个存储空闲块号的空闲块队列片段所存储的最后一个结点存储的块号是指示连续的下个空闲块片段所存储的空闲块号位置。图1中存储在25号空闲块队列片段最后一个空闲块结点为空闲块号100,它指示与25号空闲块队列片段相邻的空闲块队列片段存储于100号空闲块上。同样存储于100号空闲块队列片段最后一个结点存储着空闲块号128,指示与100号空闲块相邻的片段存储在128号空闲块上。假设图1中#25号空闲块上除最后一个空闲块结点存储着空闲块号100,其余都为0,此时请求空闲块,则修改空闲队列队首指针为最后一个结点指示的块号(图1中100号)指针,修改完成后把当前25号空闲块分配给请求的文件。
如图3所示,空闲块的回收方法,与分配方法相反。将释放的空闲块号置入超级块的空闲队列队尾指针指示的空闲块上的空闲块队列片段中第一个全0的空闲块结点(如图1中的7801后的第一个0结点),若当前空闲块队列片段未存储满空闲块结点,则找到第一个全0的结点直接存储新释放的块号。若当前空闲块已经存储满空闲块结点,取当前空闲块队列片段中最后一个空闲块结点的空闲块号(假设X),在X上新建空闲块队列片段,初始化此片段上所有空闲块结点为0,把新释放的空闲块号存入第一个全0的空闲块结点,修改内存中超级块中的队尾指针指向X号块。定期再把修改同步到存储在非挥发性存储设备的超级块中。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受所述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

Claims (3)

1.一种文件系统级的非挥发性存储器磨损均衡空闲块管理方法,其特征在于,包括空闲块、超级块、数据块、空闲块队列、空闲块队列片段及空闲块结点,具体方法如下:
构建空闲块队列,所述空闲块队列由至少一个空闲块队列片段构成,空闲块队列片段至少存储一个空闲块号或者存储全0结点,每个空闲块号对应唯一空闲块;
构建超级块,超级块位于文件系统内,所述超级块存储空闲块队列的队头指针及队尾指针,所述队头指针及队尾指针分别指示空闲块队列起始空闲块结点所在的空闲块队列片段号,和结束空闲块结点所在的空闲块队列片段号;
当文件系统被挂载时,超级块被加载到内存中;
当要向非挥发性存储器内写入数据时,则请求空闲块,从超级块中取出空闲块队列队头指针指向的空闲块队列片段号,若队头指针指向的空闲块队列片段号为N,若队尾指针指向的空闲块队列片段号为M;
如果M=N,找到第一个非0的空闲块结点,所述空闲块结点对应唯一空闲块号,把空闲块结点中对应的空闲块号的空闲块直接分配给文件,修改当前空闲块结点的值为0,表示已经分配出去,该空闲块号的空闲块一旦被分配出去直到被回收之前都不可再用,分配出去的空闲块称为数据块;
如果M≠N,取出队头指针指示的空闲块队列片段上第一个非0空闲块结点,若该结点不是空闲块队列片段上最后一个空闲块结点,则直接分配;若该结点是空闲块队列片段上最后一个结点,则暂存当前空闲块队列队头指针指示的空闲块队列片段的空闲块号K,然后修改空闲块队列队头指针指向最后一个结点的块号,待修改完成后把最初暂存的K号空闲块分配给文件。
2.根据权利要求1所述的非挥发性存储器磨损均衡空闲块管理方法,其特征在于,还包括分配出去的空闲块若被释放,则置于超级块中空闲块队列队尾指针指示的空闲块队列片段上的第一个全0的空闲块结点;
如果超级块中空闲块队列队尾指针指示的空闲块队列片段内无0的空闲块结点,则取当前空闲块队列片段内最后一个空闲块结点,以存储在该空闲块结点内的块号对应的空闲块作为下一个空闲块队列片段容器,新建空闲块队列片段,初始化空闲块队列片段内的空闲块结点为0,将释放后的空闲块块号存储到第一个为0的空闲块结点,同时修改超级块中空闲块队列的队尾指针。
3.根据权利要求1所述的非挥发性存储器磨损均衡空闲块管理方法,其特征在于,空闲块队列的起始和结束的空闲块结点如果未存满,则未存储的地方用0填充。
CN201610156467.4A 2016-03-18 2016-03-18 文件系统级的非挥发性存储器磨损均衡空闲块管理方法 Expired - Fee Related CN105845182B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610156467.4A CN105845182B (zh) 2016-03-18 2016-03-18 文件系统级的非挥发性存储器磨损均衡空闲块管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610156467.4A CN105845182B (zh) 2016-03-18 2016-03-18 文件系统级的非挥发性存储器磨损均衡空闲块管理方法

Publications (2)

Publication Number Publication Date
CN105845182A CN105845182A (zh) 2016-08-10
CN105845182B true CN105845182B (zh) 2019-07-12

Family

ID=56588305

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610156467.4A Expired - Fee Related CN105845182B (zh) 2016-03-18 2016-03-18 文件系统级的非挥发性存储器磨损均衡空闲块管理方法

Country Status (1)

Country Link
CN (1) CN105845182B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113535695B (zh) * 2021-06-21 2022-09-13 中盾创新数字科技(北京)有限公司 一种基于进程调度的档案更新方法
CN117251292B (zh) * 2023-11-13 2024-03-29 山东泽赢信息科技服务有限公司 内存管理方法、系统、终端及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1536489A (zh) * 2003-04-11 2004-10-13 英华达(上海)电子有限公司 非挥发性存储器的损耗平衡方法
CN101093463A (zh) * 2006-06-23 2007-12-26 无锡盈泰科技有限公司 一种实现闪存快速写入速度的新颖的闪存转换层算法
CN101266573A (zh) * 2008-04-29 2008-09-17 中国船舶重工集团公司第七〇九研究所 允许覆盖的闪存均匀磨损循环队列技术
US7917689B2 (en) * 2007-12-28 2011-03-29 Intel Corporation Methods and apparatuses for nonvolatile memory wear leveling
CN102081576A (zh) * 2011-03-01 2011-06-01 华中科技大学 一种闪存的磨损平衡方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201120898A (en) * 2009-12-07 2011-06-16 Jmicron Technology Corp Mehtod for wear-leveling and apparatus thereof
TWI515736B (zh) * 2013-07-25 2016-01-01 慧榮科技股份有限公司 資料儲存裝置以及快閃記憶體控制方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1536489A (zh) * 2003-04-11 2004-10-13 英华达(上海)电子有限公司 非挥发性存储器的损耗平衡方法
CN101093463A (zh) * 2006-06-23 2007-12-26 无锡盈泰科技有限公司 一种实现闪存快速写入速度的新颖的闪存转换层算法
US7917689B2 (en) * 2007-12-28 2011-03-29 Intel Corporation Methods and apparatuses for nonvolatile memory wear leveling
CN101266573A (zh) * 2008-04-29 2008-09-17 中国船舶重工集团公司第七〇九研究所 允许覆盖的闪存均匀磨损循环队列技术
CN102081576A (zh) * 2011-03-01 2011-06-01 华中科技大学 一种闪存的磨损平衡方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Marching-Based Wear-Leveling for PCM-Based Storage Systems;Chang等;《ACM Transactions on Design Automation of Electronic Systems》;20151231;第1-22页
一种逻辑块温度和物理块年龄的磨损均衡算法;刘柳等;《计算机系统应用》;20111231;第109-113页

Also Published As

Publication number Publication date
CN105845182A (zh) 2016-08-10

Similar Documents

Publication Publication Date Title
CN102449607B (zh) 具有多个闪存封装的存储系统
CN105493051B (zh) 自适应高速缓冲存储器控制器
KR101739213B1 (ko) 압축되고 컴팩트화된 가상 메모리를 위한 방법 및 장치
CN102081576B (zh) 一种闪存的磨损平衡方法
CN109144887B (zh) 存储器系统及控制非易失性存储器的控制方法
KR101038167B1 (ko) 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법
CN101458613B (zh) 一种混合分级阵列的实现方法、混合分级阵列和存储系统
CN102713866B (zh) 减少基于闪存的存储系统中的存取争用
CN104317742A (zh) 一种优化空间管理的自动精简配置方法
CN103514249B (zh) 一种数据自精简方法和系统及存储装置
CN104798063B (zh) 存储设备和主机设备
CN105843748B (zh) 一种对内存中内存页的处理方法及装置
CN102495806B (zh) 相变内存周期性磨损均衡方法及其内存管理方法
CN103095805A (zh) 一种对数据进行智能分层管理的云存储系统
CN103678160A (zh) 一种存储数据的方法和装置
CN106681842A (zh) 一种多进程系统中共享内存的管理方法及装置
CN103677977A (zh) 清理移动终端中临时文件的方法、装置和移动终端
TW201335937A (zh) 用於複合式非揮發性儲存裝置之資料遷移
CN104503703B (zh) 缓存的处理方法和装置
CN102169727B (zh) 基于随机游走的固态硬盘磨损均衡方法
CN106354658B (zh) 一种降低混合映射算法中映射表内存资源占用的方法
CN105845182B (zh) 文件系统级的非挥发性存储器磨损均衡空闲块管理方法
CN105808157A (zh) 存储架构的创建方法、存储访问方法和存储系统
CN106445405A (zh) 一种面向闪存存储的数据访问方法及其装置
CN105630413B (zh) 一种磁盘数据的同步回写方法

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190712