CN103309815A - 一种提高固态盘有效容量和寿命的方法和系统 - Google Patents

一种提高固态盘有效容量和寿命的方法和系统 Download PDF

Info

Publication number
CN103309815A
CN103309815A CN2013101958507A CN201310195850A CN103309815A CN 103309815 A CN103309815 A CN 103309815A CN 2013101958507 A CN2013101958507 A CN 2013101958507A CN 201310195850 A CN201310195850 A CN 201310195850A CN 103309815 A CN103309815 A CN 103309815A
Authority
CN
China
Prior art keywords
data block
request
ssd
meta data
module
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.)
Granted
Application number
CN2013101958507A
Other languages
English (en)
Other versions
CN103309815B (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.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
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 Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN201310195850.7A priority Critical patent/CN103309815B/zh
Publication of CN103309815A publication Critical patent/CN103309815A/zh
Application granted granted Critical
Publication of CN103309815B publication Critical patent/CN103309815B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Abstract

本发明公开了一种提高固态盘有效容量和寿命的方法,包括:在SSD中划分出一部分空间作为SSD的阴影区域,在该阴影区域中初始化副本哈希表和第二哈希表;在内存中划分出多个桶,桶与块组是一一对应的,且桶的数量和块组的数量一致,将阴影区域中除了副本哈希表和第二哈希表所占的空间以外的其他空间划分成多不同的小区域,这些小区域也与块组一一对应,解析SSD上文件系统的布局,并根据解析结果生成用于记录元数据块和数据块的地址的查询树,接收来自用户的请求,根据查询树判断该请求是元数据块请求还是数据块请求。本发明能够通过分别对数据块运用重删技术、对元数据块运用Delta编码技术减少SSD所最终经历的写的次数,最终提高SSD有效容量和寿命。

Description

一种提高固态盘有效容量和寿命的方法和系统
技术领域
本发明属于计算机数据存储领域,更具体地,涉及一种提高固态盘有效容量和寿命的方法和系统。
背景技术
由于闪存技术在过去的几年里在持续的上升,基于闪存的固态盘(Solid state disk,简称SSD)的容量已经大大地提高了而且它的价格也大幅度地下降,使得它在性价比方面比起传统的HDD具有一定的竞争优势。现在在常见的应用场景中运用SSD在实践中已经是可行的。
SSD的总体性能要优于机械式磁盘,尤其是随机访问性能。HDD磁盘内部的机械部件寻道操作是其性能低下的主要原因,相反,固态盘内部没有机械部件,没有寻道操作,其主要开销来自闪存转换层(Flash TranslationLayer,简称FTL)逻辑地址到物理地址的翻译过程,而与访问数据的实际物理地址无关,因而具有良好的随机性能。
SSD的并行性能要优于机械式磁盘的并行性能。固态盘内部由多芯片、多通道组成,通道和芯片之间都可以并行地操作以提高系统整体性能。而磁头不能并行地对磁盘进行访问,相反,若应用具有高并发度会导致磁头不停地“抖动(Thrashing)”而降低性能。
SSD具有一些优点的同时,也存在一些自身的限制。生产商并没有很好地解决SSD所固有的内在限制。相反,随着每个存储单元存储的位数逐渐接近半导体物理学的极限,SSD的寿命期和可靠性问题已经变得原来越突出。SSD的寿命期限和可靠性直接相关于它所经历的写的次数,因此改善SSD的寿命期和可靠性的通常的有效方法是减少到达SSD的写的次数,或者优化到达SSD的写模式。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种提高固态盘有效容量和寿命的方法,其目的在于通过分别对数据块运用重删技术、对元数据块运用Delta编码技术从而有效地减少SSD所最终经历的写的次数,最终达到提高SSD有效容量和寿命的技术效果。
为实现上述目的,按照本发明的一个方面,提供了一种提高固态盘有效容量和寿命的方法,包括以下步骤:
(1)在SSD中划分出一部分空间作为SSD的阴影区域,在该阴影区域中初始化副本哈希表和第二哈希表,其中副本哈希表用于把SSD中数据块的MD5值映射为该数据块的信息,包括数据块的编号、以及数据块的索引计数器,第二哈希表用于将数据块的编号映射为副本哈希表的MD5值;
(2)在内存中划分出多个桶,桶与块组是一一对应的,且桶的数量和块组的数量一致。将阴影区域中除了副本哈希表和第二哈希表所占的空间以外的其他空间划分成多不同的小区域,这些小区域也与块组一一对应;
(3)解析SSD上文件系统的布局,并根据解析结果生成用于记录元数据块和数据块的地址的查询树;
(4)接收来自用户的请求,根据查询树判断该请求是元数据块请求还是数据块请求,若是数据块请求,则转步骤(5),若是元数据块请求,则转步骤(8);
(5)判断该数据块请求是数据块读请求还是数据块写请求,如果是数据块读请求,则转步骤(6),若是数据块写请求,则转步骤(7);
(6)根据SSD中数据块的正常读请求路径完成该数据块读请求对应的数据块的读操作,然后返回步骤(4);
(7)判断该数据块写请求对应的数据块是否存在,如果存在则对该数据块在副本哈希表中的索引计数器执行加1操作,如果不存在则根据SSD中数据块的正常写请求路径完成该数据块的写操作,并在写操作完成后在副本哈希表中创建该数据块对应的表项并设置表项中的索引计数器为1,同时在第二哈希表中创建该数据块对应的键值对,然后返回步骤(4);
(8)判断该元数据块请求是元数据块写请求还是元数据块读请求,若是元数据块写请求,则转步骤(9),若是元数据块读请求,则转步骤(11);
(9)将元数据块写请求中包含的该元数据块的内容与SSD中该元数据块的内容进行Delta编码,以获得二者的内容增量Delta,将获得的内容增量Delta缓存放于内存中该元数据块所在块组对应的桶中,周期性地转存内存桶中的Delta到SSD阴影区中对应的小区域中,并判断SSD阴影区中存储Delta桶的剩余空间是否低于预先设定的门限值,如果低于则转步骤(10),否则转入步骤(11);
(10)把内存中所有桶中的Delta转存到对应的SSD阴影区域中的桶中,然后返回步骤(4);
(11)把该阴影区中对应存储Delta的桶与对应的元数据块结合产生最新的元数据并更新SSD中的元数据;
(12)把内存中所有桶中的Delta转存到对应的SSD阴影区域中的桶中;
(13)判断该元数据块读请求中的元数据块所在的块组对应的阴影区域的桶中是否有内容增量Delta,如果有则转入步骤(14),否则转入步骤(15);
(14)把SSD阴影区中的内容增量Delta和相应的元数据块结合起来生成最新的元数据块并返回给用户,然后返回步骤(4);
(15)向用户返回该元数据块读请求对应的元数据块,然后返回步骤(4)。
优选地,步骤(4)具体为,在生成的查询树中搜索该用户请求的地址,若该地址是位于元数据块地址中,则该请求是元数据块请求,如果该地址是位于数据块地址中,则该请求是数据块请求。
优选地,步骤(7)具体为,判断该数据块是否存在是通过计算数据块写请求对应的数据块的MD5值,然后在副本哈希表中查找计算得到的MD5值,若没有查找到,则说明该MD5值对应的数据块是一个新的数据块,若查找到,则说明该MD5值对应的数据块已经存在。
优选地,步骤(9)中是使用LRU算法将获得的内容增量Delta缓存放于内存中该元数据块所在块组对应的桶中。
按照本发明的另一方面,提供了一种提高固态盘有效容量和寿命的系统,包括:
第一模块,用于在SSD中划分出一部分空间作为SSD的阴影区域,在该阴影区域中初始化副本哈希表和第二哈希表,其中副本哈希表用于把SSD中数据块的MD5值映射为该数据块的信息,包括数据块的编号、以及数据块的索引计数器,第二哈希表用于将数据块的编号映射为副本哈希表的MD5值;
第二模块,用于在内存中划分出多个桶,桶与块组是一一对应的,且桶的数量和块组的数量一致。将阴影区域中除了副本哈希表和第二哈希表所占的空间以外的其他空间划分成多不同的小区域,这些小区域也与块组一一对应;
第三模块,用于解析SSD上文件系统的布局,并根据解析结果生成用于记录元数据块和数据块的地址的查询树;
第四模块,用于接收来自用户的请求,根据查询树判断该请求是元数据块请求还是数据块请求,若是数据块请求,则转第五模块,若是元数据块请求,则转步骤第八模块;
第五模块,用于判断该数据块请求是数据块读请求还是数据块写请求,如果是数据块读请求,则转第六模块,若是数据块写请求,则转第七模块;
第六模块,用于根据SSD中数据块的正常读请求路径完成该数据块读请求对应的数据块的读操作,然后返回第四模块;
第七模块,用于判断该数据块写请求对应的数据块是否存在,如果存在则对该数据块在副本哈希表中的索引计数器执行加1操作,如果不存在则根据SSD中数据块的正常写请求路径完成该数据块的写操作,并在写操作完成后在副本哈希表中创建该数据块对应的表项并设置表项中的索引计数器为1,同时在第二哈希表中创建该数据块对应的键值对,然后返回第四模块;
第八模块,用于判断该元数据块请求是元数据块写请求还是元数据块读请求,若是元数据块写请求,则转第九模块,若是元数据块读请求,则转第十一模块;
第九模块,用于将元数据块写请求中包含的该元数据块的内容与SSD中该元数据块的内容进行Delta编码,以获得二者的内容增量Delta,将获得的内容增量Delta缓存放于内存中该元数据块所在块组对应的桶中,周期性地转存内存桶中的Delta到SSD阴影区中对应的小区域中,并判断SSD阴影区中存储Delta桶的剩余空间是否低于预先设定的门限值,如果低于则转第十模块,否则转入第十一模块;
第十模块,用于把内存中所有桶中的Delta转存到对应的SSD阴影区域中的桶中,然后返回第四模块;
第十一模块,用于把该阴影区中对应存储Delta的桶与对应的元数据块结合产生最新的元数据并更新SSD中的元数据;
第十二模块,用于把内存中所有桶中的Delta转存到对应的SSD阴影区域中的桶中;
第十三模块,用于判断该元数据块读请求中的元数据块所在的块组对应的阴影区域的桶中是否有内容增量Delta,如果有则转入第十四模块,否则转入第十五模块;
第十四模块,用于把SSD阴影区中的内容增量Delta和相应的元数据块结合起来生成最新的元数据块并返回给用户,然后返回第四模块;
第十五模块,用于向用户返回该元数据块读请求对应的元数据块,然后返回第四模块。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
1、提高SSD有效容量:由于采用步骤(7)实现了数据块的重删功能,确保系统中只有一个数据块的副本,因此,能够提高有效容量。
2、提高固态盘的寿命和可靠性:由于采用了步骤(7)、步骤(9)和步骤(11),直接减少SSD所经历的写的次数,而固态盘盘得寿命和可靠性反相关与它所经历的写的次数,因此能够提高固态盘的寿命和可靠性;具体来说,步骤(7)确保系统中只有一个副本,使得每次对数据块的修改只需要修改一个副本,减小数据块的写次数,步骤(9)和步骤(11)并不直接向固态盘写入元数据块,而是先计算出元数据块的内容增量Delta,并且把Delta成批地写入到固态盘中,由于Delta大小远远小于元数据块本身的大小,且固态盘的大部分写操作都是针对元数据块操作,这样大大地减小了固态盘所经历的写次数。
附图说明
图1是本发明提高固态盘有效容量和寿命的方法的流程图。
图2是本发明提高固态盘有效容量和寿命的系统的应用环境图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明的总体思路在于,根据固态盘的特性,分别对数据块运用重删技术、对元数据块运用Delta编码技术从而有效地减少SSD所最终经历的写的次数,最终达到提高固态盘(SSD)有效容量和寿命的效果。本发明对数据块运用重删技术来减少数据块冗余,确保存储系统中只有一个数据块副本,从而避免了对数据块写请求时需要同时对不同的数据块副本进行写,达到了减少对SSD的写次数而且扩大SSD有效容量的效果;同时对元数据块操作使用Delta编码技术,即当元数据写请求到达时,并不直接写入SSD而是先计算出要写的内容与原始内容之间的内容增量Delta并缓存起来,最后再成批地把Delta写回SSD,Delta大小远远小于要写的内容同时改善了对SSD的写方式从而大大减少了对SSD的写次数。
如图1所示,本发明提高固态盘有效容量和寿命的方法包括以下步骤:
(1)在SSD中划分出一部分空间作为SSD的阴影区域,在该阴影区域中初始化副本哈希表(哈希表)和第二哈希表,其中副本哈希表用于把SSD中数据块的MD5值映射为该数据块的信息,包括数据块的编号、以及数据块的索引计数器,第二哈希表用于将数据块的编号映射为副本哈希表的MD5值,且包括<数据块编号,MD5值>的键值(Key value)对。
本步骤的优点在于可以通过数据块编号间接地索引到数据块的相关信息,不用多次重复计算数据块的MD5值,减小计算开销。
(2)在内存中划分出多个桶(bucket),桶与块组是一一对应的,且桶的数量和块组的数量一致。将阴影区域中除了副本哈希表和第二哈希表所占的空间以外的其他空间划分成多不同的小区域,这些小区域也与块组一一对应;在本实施方式中,阴影区域的大小占整个SSD大小的比例为小于10%,其中块组(block group)是ext3文件系统中的一块区域。
本步骤的优点在于相同块组中的的数据具有访问局部性的特性,下次被访问的数据很可能是与当前被访问的数据在同一个块组中,这样充分利用访问局部性的特点来提高效果。
(3)解析SSD上文件系统的布局,并根据解析结果生成用于记录元数据块和数据块的地址的查询树;具体而言,是遍历SSD中元数据块,文件系统中的元数据块描述着整个文件系统的结构和组织,而且文件系统一旦被建立,它的数据块地址和元数据块地址就都固定下来,从而得到能够用于生成记录元数据块地址和数据块地址的查询树。
本步骤的优点在于充分利用了文件系统中自带的元数据信息得到一个查询树,这些查询树将能够有助于快速地判断用户的请求是对元数据块请求还是数据块请求。
(4)接收来自用户的请求,根据查询树判断该请求是元数据块请求还是数据块请求,若是数据块请求,则转步骤(5),若是元数据块请求,则转步骤(8);具体而言,在生成的查询树中搜索该用户请求的地址,若该地址是位于元数据块地址中,则该请求是元数据块请求,如果该地址是位于数据块地址中,则该请求是数据块请求;
(5)判断该数据块请求是数据块读请求还是数据块写请求,如果是数据块读请求,则转步骤(6),若是数据块写请求,则转步骤(7);
(6)根据SSD中数据块的正常读请求路径完成该数据块读请求对应的数据块的读操作,然后返回步骤(4);
(7)判断该数据块写请求对应的数据块是否存在,如果存在则对该数据块在副本哈希表中的索引计数器执行加1操作,如果不存在则根据SSD中数据块的正常写请求路径完成该数据块的写操作,并在写操作完成后在副本哈希表中创建该数据块对应的表项并设置表项中的索引计数器为1,同时在第二哈希表中创建该数据块对应的键值对,然后返回步骤(4);具体而言,判断该数据块是否存在是通过计算数据块写请求对应的数据块的MD5值,然后在副本哈希表中查找计算得到的MD5值,若没有查找到,则说明该MD5值对应的数据块是一个新的数据块,若查找到,则说明该MD5值对应的数据块已经存在;
本步骤的优点在于,在写时完成了对数据块副本的重删功能,确保存储系统中只有一个数据块副本,从而避免了对数据块写请求时需要同时对不同的数据块副本进行写,达到了减少的对SSD的写次数而且扩大SSD有效容量的效果。
(8)判断该元数据块请求是元数据块写请求还是元数据块读请求,若是元数据块写请求,则转步骤(9),若是元数据块读请求,则转步骤(12);
(9)将元数据块写请求中包含的该元数据块的内容与SSD中该元数据块的内容进行Delta编码,以获得二者的内容增量Delta,使用最近最少使用(Least Recently Used,简称LRU)算法将获得的内容增量Delta缓存放于内存中该元数据块所在块组对应的桶中,周期性地转存内存桶中的Delta到SSD阴影区中对应的小区域中,并判断SSD阴影区中存储Delta桶的剩余空间是否低于一个预先设定的门限值,如果低于则转步骤(10),否则转入步骤(11);在本实施方式中,门限值的取值范围是20%至50%;
本步骤的优点在于先把小的内容增量Delta缓存到内存中,并不直接写回SSD,积累到一定量的Delta之后再批量地把Delta追加到SSD中阴影区域,直接写回SSD是非常有害的,这样对SSD是非常友好的。
(10)把SSD阴影区中该桶存储Delta与对应的元数据块结合产生最新的元数据并更新SSD中的元数据,然后返回步骤(4);
(11)把该阴影区中对应存储Delta的桶与对应的元数据块结合产生最新的元数据并更新SSD中的元数据;
(12)把内存中所有桶中的Delta转存到对应的SSD阴影区域中的桶中;
(13)判断该元数据块读请求中的元数据块所在的块组对应的阴影区域的桶中是否有内容增量Delta,如果有则转入步骤(14),否则转入步骤(15);
(14)把SSD阴影区中的内容增量Delta和相应的元数据块结合起来生成最新的元数据块并返回给用户,然后返回步骤(4);
(15)向用户返回该元数据块读请求对应的元数据块,然后返回步骤(4)。
本发明已经在实验中被证明了需要消耗少于7%的性能开销,但是对实验的工作负载可以节省多达77%的SSD有效容量,而工作负载都对SSD的容量和可靠性有着很重要的依赖。本发明可以用在扩展SSD的有效容量和增强SSD的可靠性的工程实践中。
如图2所示,本发明提高固态盘有效容量和寿命的系统是以固态盘(SSD)为基础对Linux ext3文件系统进行扩展。它把底层的SSD分成了SSD数据区域和SSD阴影区域,图中SSD阴影区域中BG表示与块组中对应的小区域,图中表示有N个小区域(N为正整数)。SSD数据区域可以被直接访问,SSD阴影区域用来作为存储内容增量(Delta)和哈希表的永久空间,包括:
第一模块,用于在SSD中划分出一部分空间作为SSD的阴影区域,在该阴影区域中初始化副本哈希表和第二哈希表,其中副本哈希表用于把SSD中数据块的MD5值映射为该数据块的信息,包括数据块的编号、以及数据块的索引计数器,第二哈希表用于将数据块的编号映射为副本哈希表的MD5值;
第二模块,用于在内存中划分出多个桶,桶与块组是一一对应的,且桶的数量和块组的数量一致。将阴影区域中除了副本哈希表和第二哈希表所占的空间以外的其他空间划分成多不同的小区域,这些小区域也与块组一一对应;
第三模块,用于解析SSD上文件系统的布局,并根据解析结果生成用于记录元数据块和数据块的地址的查询树;
第四模块,用于接收来自用户的请求,根据查询树判断该请求是元数据块请求还是数据块请求,若是数据块请求,则转第五模块,若是元数据块请求,则转步骤第八模块;
第五模块,用于判断该数据块请求是数据块读请求还是数据块写请求,如果是数据块读请求,则转第六模块,若是数据块写请求,则转第七模块;
第六模块,用于根据SSD中数据块的正常读请求路径完成该数据块读请求对应的数据块的读操作,然后返回第四模块;
第七模块,用于判断该数据块写请求对应的数据块是否存在,如果存在则对该数据块在副本哈希表中的索引计数器执行加1操作,如果不存在则根据SSD中数据块的正常写请求路径完成该数据块的写操作,并在写操作完成后在副本哈希表中创建该数据块对应的表项并设置表项中的索引计数器为1,同时在第二哈希表中创建该数据块对应的键值对,然后返回第四模块;
第八模块,用于判断该元数据块请求是元数据块写请求还是元数据块读请求,若是元数据块写请求,则转第九模块,若是元数据块读请求,则转第十一模块;
第九模块,用于将元数据块写请求中包含的该元数据块的内容与SSD中该元数据块的内容进行Delta编码,以获得二者的内容增量Delta,将获得的内容增量Delta缓存放于内存中该元数据块所在块组对应的桶中,周期性地转存内存桶中的Delta到SSD阴影区中对应的小区域中,并判断SSD阴影区中存储Delta桶的剩余空间是否低于预先设定的门限值,如果低于则转第十模块,否则转入第十一模块;
第十模块,用于把内存中所有桶中的Delta转存到对应的SSD阴影区域中的桶中,然后返回第四模块;
第十一模块,用于把该阴影区中对应存储Delta的桶与对应的元数据块结合产生最新的元数据并更新SSD中的元数据;
第十二模块,用于把内存中所有桶中的Delta转存到对应的SSD阴影区域中的桶中;
第十三模块,用于判断该元数据块读请求中的元数据块所在的块组对应的阴影区域的桶中是否有内容增量Delta,如果有则转入第十四模块,否则转入第十五模块;
第十四模块,用于把SSD阴影区中的内容增量Delta和相应的元数据块结合起来生成最新的元数据块并返回给用户,然后返回第四模块;
第十五模块,用于向用户返回该元数据块读请求对应的元数据块,然后返回第四模块。
需要注意的是,本发明对应的软件可存储于计算机可读存储介质中。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (5)

1.一种提高固态盘有效容量和寿命的方法,其特征在于,包括以下步骤:
(1)在SSD中划分出一部分空间作为SSD的阴影区域,在该阴影区域中初始化副本哈希表和第二哈希表,其中副本哈希表用于把SSD中数据块的MD5值映射为该数据块的信息,包括数据块的编号、以及数据块的索引计数器,第二哈希表用于将数据块的编号映射为副本哈希表的MD5值;
(2)在内存中划分出多个桶,桶与块组是一一对应的,且桶的数量和块组的数量一致,将阴影区域中除了副本哈希表和第二哈希表所占的空间以外的其他空间划分成多不同的小区域,这些小区域也与块组一一对应;
(3)解析SSD上文件系统的布局,并根据解析结果生成用于记录元数据块和数据块的地址的查询树;
(4)接收来自用户的请求,根据查询树判断该请求是元数据块请求还是数据块请求,若是数据块请求,则转步骤(5),若是元数据块请求,则转步骤(8);
(5)判断该数据块请求是数据块读请求还是数据块写请求,如果是数据块读请求,则转步骤(6),若是数据块写请求,则转步骤(7);
(6)根据SSD中数据块的正常读请求路径完成该数据块读请求对应的数据块的读操作,然后返回步骤(4);
(7)判断该数据块写请求对应的数据块是否存在,如果存在则对该数据块在副本哈希表中的索引计数器执行加1操作,如果不存在则根据SSD中数据块的正常写请求路径完成该数据块的写操作,并在写操作完成后在副本哈希表中创建该数据块对应的表项并设置表项中的索引计数器为1,同时在第二哈希表中创建该数据块对应的键值对,然后返回步骤(4);
(8)判断该元数据块请求是元数据块写请求还是元数据块读请求,若是元数据块写请求,则转步骤(9),若是元数据块读请求,则转步骤(11);
(9)将元数据块写请求中包含的该元数据块的内容与SSD中该元数据块的内容进行Delta编码,以获得二者的内容增量Delta,将获得的内容增量Delta缓存放于内存中该元数据块所在块组对应的桶中,周期性地转存内存桶中的Delta到SSD阴影区中对应的小区域中,并判断SSD阴影区中存储Delta桶的剩余空间是否低于预先设定的门限值,如果低于则转步骤(10),否则转入步骤(11);
(10)把内存中所有桶中的Delta转存到对应的SSD阴影区域中的桶中,然后返回步骤(4);
(11)把该阴影区中对应存储Delta的桶与对应的元数据块结合产生最新的元数据并更新SSD中的元数据;
(12)把内存中所有桶中的Delta转存到对应的SSD阴影区域中的桶中;
(13)判断该元数据块读请求中的元数据块所在的块组对应的阴影区域的桶中是否有内容增量Delta,如果有则转入步骤(14),否则转入步骤(15);
(14)把SSD阴影区中的内容增量Delta和相应的元数据块结合起来生成最新的元数据块并返回给用户,然后返回步骤(4);
(15)向用户返回该元数据块读请求对应的元数据块,然后返回步骤(4)。
2.根据权利要求1所述的方法,其特征在于,步骤(4)具体为,在生成的查询树中搜索该用户请求的地址,若该地址是位于元数据块地址中,则该请求是元数据块请求,如果该地址是位于数据块地址中,则该请求是数据块请求。
3.根据权利要求1所述的方法,其特征在于,步骤(7)具体为,判断该数据块是否存在是通过计算数据块写请求对应的数据块的MD5值,然后在副本哈希表中查找计算得到的MD5值,若没有查找到,则说明该MD5值对应的数据块是一个新的数据块,若查找到,则说明该MD5值对应的数据块已经存在。
4.根据权利要求1所述的方法,其特征在于,步骤(9)中是使用LRU算法将获得的内容增量Delta缓存放于内存中该元数据块所在块组对应的桶中。
5.一种提高固态盘有效容量和寿命的系统,其特征在于,包括:
第一模块,用于在SSD中划分出一部分空间作为SSD的阴影区域,在该阴影区域中初始化副本哈希表和第二哈希表,其中副本哈希表用于把SSD中数据块的MD5值映射为该数据块的信息,包括数据块的编号、以及数据块的索引计数器,第二哈希表用于将数据块的编号映射为副本哈希表的MD5值;
第二模块,用于在内存中划分出多个桶,桶与块组是一一对应的,且桶的数量和块组的数量一致。将阴影区域中除了副本哈希表和第二哈希表所占的空间以外的其他空间划分成多不同的小区域,这些小区域也与块组一一对应;
第三模块,用于解析SSD上文件系统的布局,并根据解析结果生成用于记录元数据块和数据块的地址的查询树;
第四模块,用于接收来自用户的请求,根据查询树判断该请求是元数据块请求还是数据块请求,若是数据块请求,则转第五模块,若是元数据块请求,则转步骤第八模块;
第五模块,用于判断该数据块请求是数据块读请求还是数据块写请求,如果是数据块读请求,则转第六模块,若是数据块写请求,则转第七模块;
第六模块,用于根据SSD中数据块的正常读请求路径完成该数据块读请求对应的数据块的读操作,然后返回第四模块;
第七模块,用于判断该数据块写请求对应的数据块是否存在,如果存在则对该数据块在副本哈希表中的索引计数器执行加1操作,如果不存在则根据SSD中数据块的正常写请求路径完成该数据块的写操作,并在写操作完成后在副本哈希表中创建该数据块对应的表项并设置表项中的索引计数器为1,同时在第二哈希表中创建该数据块对应的键值对,然后返回第四模块;
第八模块,用于判断该元数据块请求是元数据块写请求还是元数据块读请求,若是元数据块写请求,则转第九模块,若是元数据块读请求,则转第十一模块;
第九模块,用于将元数据块写请求中包含的该元数据块的内容与SSD中该元数据块的内容进行Delta编码,以获得二者的内容增量Delta,将获得的内容增量Delta缓存放于内存中该元数据块所在块组对应的桶中,周期性地转存内存桶中的Delta到SSD阴影区中对应的小区域中,并判断SSD阴影区中存储Delta桶的剩余空间是否低于预先设定的门限值,如果低于则转第十模块,否则转入第十一模块;
第十模块,用于把内存中所有桶中的Delta转存到对应的SSD阴影区域中的桶中,然后返回第四模块;
第十一模块,用于把该阴影区中对应存储Delta的桶与对应的元数据块结合产生最新的元数据并更新SSD中的元数据;
第十二模块,用于把内存中所有桶中的Delta转存到对应的SSD阴影区域中的桶中;
第十三模块,用于判断该元数据块读请求中的元数据块所在的块组对应的阴影区域的桶中是否有内容增量Delta,如果有则转入第十四模块,否则转入第十五模块;
第十四模块,用于把SSD阴影区中的内容增量Delta和相应的元数据块结合起来生成最新的元数据块并返回给用户,然后返回第四模块;
第十五模块,用于向用户返回该元数据块读请求对应的元数据块,然后返回第四模块。
CN201310195850.7A 2013-05-23 2013-05-23 一种提高固态盘有效容量和寿命的方法和系统 Active CN103309815B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310195850.7A CN103309815B (zh) 2013-05-23 2013-05-23 一种提高固态盘有效容量和寿命的方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310195850.7A CN103309815B (zh) 2013-05-23 2013-05-23 一种提高固态盘有效容量和寿命的方法和系统

Publications (2)

Publication Number Publication Date
CN103309815A true CN103309815A (zh) 2013-09-18
CN103309815B CN103309815B (zh) 2015-09-23

Family

ID=49135062

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310195850.7A Active CN103309815B (zh) 2013-05-23 2013-05-23 一种提高固态盘有效容量和寿命的方法和系统

Country Status (1)

Country Link
CN (1) CN103309815B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103678169A (zh) * 2013-11-11 2014-03-26 华中科技大学 一种高效利用固态盘缓存的方法和系统
CN104679816A (zh) * 2014-12-17 2015-06-03 北京可思云海科技有限公司 一种嵌入式系统下的sqlite数据库应用方法
CN107422992A (zh) * 2017-07-31 2017-12-01 郑州云海信息技术有限公司 一种SSD运行时Journal保存方法及系统
CN107798042A (zh) * 2016-08-29 2018-03-13 北京大学 一种基于片内片外两级结构的数据处理方法和频度估计方法
CN108052644A (zh) * 2017-12-22 2018-05-18 深圳大普微电子科技有限公司 数据模式日志文件系统的数据写入方法及系统
CN108139871A (zh) * 2015-10-05 2018-06-08 美光科技公司 具有基于存储器寿命周期的可变逻辑容量的固态存储装置
CN109669621A (zh) * 2017-10-13 2019-04-23 杭州海康威视系统技术有限公司 一种文件管理方法、文件管理系统、电子设备及存储介质
CN110134544A (zh) * 2018-02-08 2019-08-16 广东亿迅科技有限公司 数据自动化备份的方法及其系统
CN110989936A (zh) * 2019-12-06 2020-04-10 深信服科技股份有限公司 一种存储空间分配方法、装置及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110082967A1 (en) * 2009-10-05 2011-04-07 Deshkar Shekhar S Data Caching In Non-Volatile Memory
CN102023809A (zh) * 2009-09-21 2011-04-20 成都市华为赛门铁克科技有限公司 存储系统、从存储系统读取数据的方法及写入数据的方法
CN102646069A (zh) * 2012-02-23 2012-08-22 华中科技大学 一种延长固态盘使用寿命的方法
US20130117227A1 (en) * 2011-11-07 2013-05-09 Empire Technology Development, Llc Cache based key-value store mapping and replication

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102023809A (zh) * 2009-09-21 2011-04-20 成都市华为赛门铁克科技有限公司 存储系统、从存储系统读取数据的方法及写入数据的方法
US20110082967A1 (en) * 2009-10-05 2011-04-07 Deshkar Shekhar S Data Caching In Non-Volatile Memory
US20130117227A1 (en) * 2011-11-07 2013-05-09 Empire Technology Development, Llc Cache based key-value store mapping and replication
CN102646069A (zh) * 2012-02-23 2012-08-22 华中科技大学 一种延长固态盘使用寿命的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
崔凯: "《混合结构闪存索引研究》", 《万方学位论文数据库》 *

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103678169B (zh) * 2013-11-11 2016-04-13 华中科技大学 一种高效利用固态盘缓存的方法和系统
CN103678169A (zh) * 2013-11-11 2014-03-26 华中科技大学 一种高效利用固态盘缓存的方法和系统
CN104679816A (zh) * 2014-12-17 2015-06-03 北京可思云海科技有限公司 一种嵌入式系统下的sqlite数据库应用方法
CN104679816B (zh) * 2014-12-17 2018-02-06 上海彩亿信息技术有限公司 一种嵌入式系统下的sqlite数据库应用方法
CN108139871A (zh) * 2015-10-05 2018-06-08 美光科技公司 具有基于存储器寿命周期的可变逻辑容量的固态存储装置
US11704025B2 (en) 2015-10-05 2023-07-18 Micron Technology, Inc. Solid state storage device with variable logical capacity based on memory lifecycle
US11385797B2 (en) 2015-10-05 2022-07-12 Micron Technology, Inc. Solid state storage device with variable logical capacity based on memory lifecycle
CN107798042B (zh) * 2016-08-29 2021-07-06 北京大学 一种基于片内片外两级结构的数据处理方法和频度估计方法
CN107798042A (zh) * 2016-08-29 2018-03-13 北京大学 一种基于片内片外两级结构的数据处理方法和频度估计方法
CN107422992A (zh) * 2017-07-31 2017-12-01 郑州云海信息技术有限公司 一种SSD运行时Journal保存方法及系统
CN109669621A (zh) * 2017-10-13 2019-04-23 杭州海康威视系统技术有限公司 一种文件管理方法、文件管理系统、电子设备及存储介质
CN108052644A (zh) * 2017-12-22 2018-05-18 深圳大普微电子科技有限公司 数据模式日志文件系统的数据写入方法及系统
CN110134544A (zh) * 2018-02-08 2019-08-16 广东亿迅科技有限公司 数据自动化备份的方法及其系统
CN110989936A (zh) * 2019-12-06 2020-04-10 深信服科技股份有限公司 一种存储空间分配方法、装置及存储介质

Also Published As

Publication number Publication date
CN103309815B (zh) 2015-09-23

Similar Documents

Publication Publication Date Title
CN103309815B (zh) 一种提高固态盘有效容量和寿命的方法和系统
US10303596B2 (en) Read-write control method for memory, and corresponding memory and server
US8868926B2 (en) Cryptographic hash database
CN103425600B (zh) 一种固态盘闪存转换层中的地址映射方法
US20200117728A1 (en) Key-value store tree data block spill with compaction
CN108959119B (zh) 存储系统中垃圾收集的方法和系统
US20060080365A1 (en) Transparent migration of files among various types of storage volumes based on file access properties
Liu et al. A block-level flash memory management scheme for reducing write activities in PCM-based embedded systems
KR101297442B1 (ko) 공간 지역성을 고려한 요구 기반 플래시 메모리 변환 계층을 포함하는 낸드 플래시 메모리 시스템
Kim et al. Reducing excessive journaling overhead with small-sized NVRAM for mobile devices
CN110795363B (zh) 一种存储介质的热页预测方法和页面调度方法
CN103019887A (zh) 数据备份方法及装置
Lee et al. An efficient index buffer management scheme for implementing a B-tree on NAND flash memory
US20240143219A1 (en) Software-hardware combination method for internal mapping address query of zoned namespace
CN111309258A (zh) 一种b+树的存取方法、装置和计算机可读存储介质
CN106055679A (zh) 一种多层次缓存感知型索引方法
CN103942161A (zh) 只读缓存的去冗余系统及方法以及缓存的去冗余方法
CN115794669A (zh) 一种扩展内存的方法、装置及相关设备
CN110532200B (zh) 一种基于混合内存架构的内存系统
CN107402890B (zh) 一种基于固态盘阵列和缓存的数据处理方法及系统
CN113253926A (zh) 提升新型存储器的查询和存储性能的存储内索引构建方法
US20110264848A1 (en) Data recording device
US10209909B1 (en) Storage element cloning in presence of data storage pre-mapper
CN112559384B (zh) 一种基于非易失存储器的混合固态盘动态分区方法
JP2019159791A (ja) メモリシステム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant