CN103678169B - 一种高效利用固态盘缓存的方法和*** - Google Patents
一种高效利用固态盘缓存的方法和*** Download PDFInfo
- Publication number
- CN103678169B CN103678169B CN201310554993.2A CN201310554993A CN103678169B CN 103678169 B CN103678169 B CN 103678169B CN 201310554993 A CN201310554993 A CN 201310554993A CN 103678169 B CN103678169 B CN 103678169B
- Authority
- CN
- China
- Prior art keywords
- module
- disk
- mechanical type
- request
- solid
- 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
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种高效利用固态盘缓存的方法,包括:将固态盘和机械式磁盘两种不同的设备构造成一个统一的混合逻辑设备,在设备映射层目标设备的内存中初始化一段空间作为“未命中窗口”,在机械式磁盘上设置一个很小的日志区域,用于缓存到达磁盘上的小写请求,将固态盘的缓存空间中划分为多个组,接收来自于用户的请求,并判断该请求是读请求还是写请求,根据读请求对应的访问地址计算该读请求在固态盘的缓存空间中对应的缓存组号,在计算得到的缓存组号对应的缓存组内查找是否存在该读请求对应的数据块。本发明通过“双阈值”法对到达的请求序列进行检测,为用户提供一个透明的高性能、大容量、低功耗的块级设备。
Description
技术领域
本发明属于计算机数据存储领域,更具体地,涉及一种高效利用固态盘缓存的方法和***。
背景技术
固态盘技术的日益成熟在一定程度上为解决计算机***中的I/O瓶颈问题提供了潜在的解决方案。固态盘在性能,尤其随机访问性能,能耗等方面都要远远优于机械式磁盘。其数据访问所需要的操作时间往往只需要几十微秒比机械式磁盘的毫秒(ms)级访问时间要快一到两个数量级。而且固态盘内能耗也远远小于机械式磁盘的能耗。
固态盘已经被用于构建一些高性能计算环境下的存储***。然而固态盘也有其使用上的缺陷和限制。它的随机写性能,尤其是随机小写性能,在某些情况下甚至比机械式磁盘的性能还要差。它的总体性能会随着使用时间而不断地下降,而且只具有有限的擦写次数寿命,价格也比机械式磁盘高出许多。因此从容量、长期可靠性、成本角度考虑,完全基于固态盘构建大规模存储***在目前的技术条件下将不能获得最优的性价比。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种高效利用固态盘缓存的方法和***,其目的在于通过将固态盘和机械式磁盘两种不同的设备构造成一个统一的设备映射层目标设备,以机械式磁盘的成本获得固态盘级的性能,在性能和成本之间找到一个最优的平衡点。
为实现上述目的,按照本发明的一个方面,提供了高效利用固态盘缓存的方法,包括以下步骤:
(1)构造一个由固态盘和机械式磁盘混合组成的设备映射层目标设备,在设备映射层目标设备的内存中初始化一段空间作为“未命中窗口”,用于存放读操作未命中记录项,在机械式磁盘上设置一个日志区域;
(2)将固态盘的缓存空间中划分为多个组,分组的数量NS为存储空间中数据块的总数除以2N,其中N为8至10之间的正整数;
(3)接收来自于用户的请求,并判断该请求是读请求还是写请求,如果是读请求,则进入步骤(4),如果是写请求,则进入步骤(11);
(4)根据读请求对应的访问地址计算该读请求在固态盘的缓存空间中对应的缓存组号set=(dbn/B/2N)%NS,其中,dbn表示读请求对应的访问地址扇区号,B表示固态盘的每个数据块包含的扇区个数;
(5)在计算得到的缓存组号对应的缓存组内查找是否存在该读请求对应的数据块,若存在对应的数据块,则转步骤(6),否则转步骤(7);
(6)直接从固态盘上读取数据,然后过程结束;
(7)检查固态盘的缓存空间中是否存在与该读请求对应的地址空间重合的数据块,若存在则转步骤(8),否则转步骤(9)。
(8)将重合的数据块同步写回机械式磁盘,从该机械式磁盘中读取该读请求对应的地址空间中的数据,然后过程结束;
(9)从该机械式磁盘中读取该读请求对应的地址空间中的数据,并将读操作未命中的记录项添加到“未命中窗口”中;
(10)判断未命中窗口中读操作未命中的次数是否达到一阈值,若达到,则将该记录项对应的数据块从机械式磁盘迁移到固态盘对应组内,否则过程结束;
(11)将写请求的大小与低阈值Thresholdlow和高阈值Thresholdhigh进行比较,若其小于低阈值Thresholdlow,则转步骤(12),若大于低阈值Thresholdlow但小于高阈值Thresholdhigh,则表示写操作命中,然后转步骤(15),若大于高阈值Thresholdhigh,则表示写操作未命中,然后转步骤(18);
(12)判断磁盘上日志区域的剩余空间是否大于该小写请求所需要的空间,若大于则转步骤(13),否则转步骤(14);
(13)将该写请求的内容写入到机械式磁盘上的日志区域,过程结束;
(14)将机械式磁盘上的日志区域上缓存的数据块全部写回机械式磁盘,返回步骤(13);
(15)根据写请求对应的访问地址计算该写请求在固态盘的缓存空间中对应的缓存组号,并判断该缓存组内的剩余空间是否大于写请求所需要的空间,若大于则转步骤(16),否则转步骤(17);
(16)将写请求对应的数据块写入计算得到的缓存组号对应的缓存组内的剩余缓冲空间中,然后过程结束;
(17)根据缓存替换算法将该缓存组中最近未被访问的数据块写回机械式磁盘,并释放该数据块在缓存空间中占用的空间,然后返回步骤(14);
(18)检查固态盘的缓存空间以及机械式磁盘上的日志区域中是否存在与该写请求对应的地址空间重合的数据块,若存在则转步骤(19),否则转步骤(20);
(19)将重合的数据块同步写回机械式磁盘,将该写请求对应的数据写入机械式磁盘中,然后过程结束;
(20)将该写请求对应的数据写入机械式磁盘中,然后过程结束。
优选地,低阈值Thresholdlow的取值范围是1至6之间的整数,高阈值Thresholdhigh的取值范围是6至10之间的整数
优选地,日志区域为机械式磁盘空间大小的5%至10%,并用于缓存到达磁盘上的小写请求,其中当写请求的大小小于低阈值Thresholdlow时,该写请求是小写请求,当写请求的大小大于高阈值Thresholdhigh时,该写请求是大写请求。
优选地,步骤(9)中的记录项中包括该读操作对应的数据块的地址和未命中的次数。
优选地,缓存替换算法为LRU或FIFO算法。
按照本发明的另一个方面,提供了一种高效利用固态盘缓存的***,包括:
第一模块,用于构造一个由固态盘和机械式磁盘混合组成的设备映射层目标设备,在设备映射层目标设备的内存中初始化一段空间作为“未命中窗口”,用于存放读操作未命中记录项,在机械式磁盘上设置一个日志区域;
第二模块,用于将固态盘的缓存空间中划分为多个组,分组的数量NS为存储空间中数据块的总数除以2N,其中N为8至10之间的正整数;
第三模块,用于接收来自于用户的请求,并判断该请求是读请求还是写请求,如果是读请求,则进入第四模块,如果是写请求,则进入第十一模块;
第四模块,用于根据读请求对应的访问地址计算该读请求在固态盘的缓存空间中对应的缓存组号set=(dbn/B/2N)%NS,其中,dbn表示读请求对应的访问地址扇区号,B表示固态盘的每个数据块包含的扇区个数;
第五模块,用于在计算得到的缓存组号对应的缓存组内查找是否存在该读请求对应的数据块,若存在对应的数据块,则转第六模块,否则转第七模块;
第六模块,用于直接从固态盘上读取数据,然后过程结束;
第七模块,用于检查固态盘的缓存空间中是否存在与该读请求对应的地址空间重合的数据块,若存在则转第八模块,否则转第九模块。
第八模块,用于将重合的数据块同步写回机械式磁盘,从该机械式磁盘中读取该读请求对应的地址空间中的数据,然后过程结束;
第九模块,用于从该机械式磁盘中读取该读请求对应的地址空间中的数据,并将读操作未命中的记录项添加到“未命中窗口”中;
第十模块,用于判断未命中窗口中读操作未命中的次数是否达到一阈值,若达到,则将该记录项对应的数据块从机械式磁盘迁移到固态盘对应组内,否则过程结束;
第十一模块,用于将写请求的大小与低阈值Thresholdlow和高阈值Thresholdhigh进行比较,若其小于低阈值Thresholdlow,则转第十二模块,若大于低阈值Thresholdlow但小于高阈值Thresholdhigh,则表示写操作命中,然后转第十五模块,若大于高阈值Thresholdhigh,则表示写操作未命中,然后转第十八模块;
第十二模块,用于判断磁盘上日志区域的剩余空间是否大于该小写请求所需要的空间,若大于则转第十三模块,否则转第十四模块;
第十三模块,用于将该写请求的内容写入到机械式磁盘上的日志区域,过程结束;
第十四模块,用于将机械式磁盘上的日志区域上缓存的数据块全部写回机械式磁盘,返回第十三模块;
第十五模块,用于根据写请求对应的访问地址计算该写请求在固态盘的缓存空间中对应的缓存组号,并判断该缓存组内的剩余空间是否大于写请求所需要的空间,若大于则转第十六模块,否则转第十七模块;
第十六模块,用于将写请求对应的数据块写入计算得到的缓存组号对应的缓存组内的剩余缓冲空间中,然后过程结束;
第十七模块,用于根据缓存替换算法将该缓存组中最近未被访问的数据块写回机械式磁盘,并释放该数据块在缓存空间中占用的空间,然后返回第十四模块;
第十八模块,用于检查固态盘的缓存空间以及机械式磁盘上的日志区域中是否存在与该写请求对应的地址空间重合的数据块,若存在则转第十九模块,否则转第二十模块;
第十九模块,用于将重合的数据块同步写回机械式磁盘,将该写请求对应的数据写入机械式磁盘中,然后过程结束;
第二十模块,用于将该写请求对应的数据写入机械式磁盘中,然后过程结束。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
1、由于采用了步骤(1)、步骤(2)、步骤(6)、步骤(11)、步骤(2)和步骤(16),固态盘被用作机械磁盘的缓存层,根据访问特征动态地存储部分内容以提高***整体性能,以机械式磁盘的成本获得固态盘级的性能,在性能和成本之间找到一个最优的平衡点;
2、由于采用了步骤(2)、步骤(4)、步骤(5)和步骤(15),采用分组的缓存管理策略,将一定数量(如512)的块组合成一个组(set),将所有的数据块划分成若干个组,提高固态盘的缓存效率;
3、由于采用了步骤(1)、步骤(9)和步骤(10),把多次未命中的数据块从机械式磁盘中迁移到固态盘缓存中,从而增大数据块读请求缓存命中率,提升固态盘缓存效果,进一步提升整个***的存储性能;
4、由于采用了步骤(1)、步骤(12)、步骤(13)和步骤(14),通过“双阈值”法对到达的请求序列进行检测,将太大和太小的连续写请求从缓存层过滤掉,而直接将它们分派到磁盘上,有效减缓了固态盘随机小写性能差以及由此引起的寿命问题;
5、由于采用了步骤(1)、步骤(12)、步骤(18)、步骤(19)和步骤(20),直接将“大请求”对应的数据块写到磁盘上,充分利用了磁盘的良好顺序访问性能,而且可以增加固态盘的有效缓存空间。
附图说明
图1是本发明高效利用固态盘缓存的方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
以下首先对本发明中的技术术语进行解释和说明。
设备映射层(device-mapper):Linux内核提供的一种块层中间件,通过它可以在请求到达目标物理设备之前对I/O其进行各种操作,如克隆、过滤、重定向、转发等。设备映射层的主要功能是将多个实际的物理磁盘抽象成一个统一的逻辑设备对外提供服务,而在内部可以实现原来物理设备所不具有的属性或操作设备映射层是一个非常灵活的框架,可以根据需求定义实现各种不同功能;
下面将结合本发明实施实例中的附图,对本发明实例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明的一部分实例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的总体思路是利用设备映射层的抽象映射机制,将固态盘和机械式磁盘两种不同的设备构造成一个统一的混合逻辑设备,构造一个由固态盘和机械式磁盘混合组成的设备映射层目标设备类型flashcache。固态盘被用作机械磁盘的缓存层,根据访问特征动态地存储部分内容以提高***整体性能。固态盘和机械磁盘的存储空间都被划分为固定的块大小,并以块为单位进行缓存和替换。块大小值是一个用户可以配置的参数,在目标设备创建时由用户传递给目标设备,通常是4KB。针对固态盘随机小写性能差以及由此引起的寿命问题,通过“双阈值”法对到达的请求序列进行检测,将太大和太小的连续写请求从缓存层过滤掉,而直接将它们分派到磁盘上。为了提高固态盘的缓存效率,采用分组的缓存管理策略,将一定数量(如512)的块组合成一个组(set),将所有的数据块划分成若干个组。请求到达时,先根据其所访问的地址按哈希算法找到其对应的组,然后再在该组内查找其对应的块。I/O请求到对应的组采用组相联策略,组内块采用全相联策略。总体上来说,将固态盘和机械磁盘抽象组合在一起,为用户提供一个透明的高性能、大容量、低功耗的块级设备。
如图1所示,本发明高效利用固态盘缓存的方法包括以下步骤:
(1)将固态盘和机械式磁盘两种不同的设备构造成一个统一的混合逻辑设备,即构造一个由固态盘和机械式磁盘混合组成的设备映射层目标设备(Flashcache),在设备映射层目标设备的内存中初始化一段空间作为“未命中窗口”,用于存放读操作未命中记录项,在机械式磁盘上设置一个很小的日志区域(其为机械式磁盘空间大小的5%至10%),用于缓存到达磁盘上的小写请求;当写请求的大小小于低阈值Thresholdlow时,该写请求是小写请求,当写请求的大小大于高阈值Thresholdhigh时,该写请求是大写请求,低阈值Thresholdlow的取值范围是1至6之间的整数,高阈值Thresholdhigh的取值范围是6至10之间的整数;
本步骤的优点在于,固态盘被用作机械磁盘的缓存层,根据访问特征动态地存储部分内容以提高***整体性能,以机械式磁盘的成本获得固态盘级的性能,在性能和成本之间找到一个最优的平衡点;
(2)将固态盘的缓存空间中划分为多个组,分组的数量NS为存储空间中数据块的总数除以2N,其中N为8至10之间的正整数;
本步骤的优点在于,采用分组的缓存管理策略,将一定数量(如512)的块组合成一个组(set),将所有的数据块划分成若干个组,提高固态盘的缓存效率;
(3)接收来自于用户的请求,并判断该请求是读请求还是写请求,如果是读请求,则进入步骤(4),如果是写请求,则进入步骤(11);
(4)根据读请求对应的访问地址计算该读请求在固态盘的缓存空间中对应的缓存组号(set),数据块组号set=(dbn/B/2N)%NS,其中,读请求对应的访问地址扇区号是dbn,固态盘的每个数据块包含B个扇区;
(5)在计算得到的缓存组号对应的缓存组内查找是否存在该读请求对应的数据块,若存在对应的数据块,则说明读操作命中,然后转步骤(6),否则说明该读请求未命中,然后转步骤(7);
(6)直接从固态盘上读取数据,然后过程结束;
(7)检查固态盘的缓存空间中是否存在与该读请求对应的地址空间重合的数据块,若存在则转步骤(8),否则转步骤(9)。
(8)将重合的数据块同步写回机械式磁盘,从该机械式磁盘中读取该读请求对应的地址空间中的数据,然后过程结束;
(9)从该机械式磁盘中读取该读请求对应的地址空间中的数据,并将读操作未命中的记录项添加到“未命中窗口”中;该记录项中包括该读操作对应的数据块的地址和未命中的次数;
(10)判断未命中窗口中读操作未命中的次数是否达到一阈值,若达到,则将该记录项对应的数据块从机械式磁盘迁移到固态盘对应组内,否则过程结束;阈值的取值范围是5至10次;
本步骤的优点在于,把多次未命中的数据块从机械式磁盘中迁移到固态盘缓存中,从而增大数据块读请求缓存命中率,提升固态盘缓存效果,进一步提升整个***的存储性能;
(11)将写请求的大小与低阈值Thresholdlow和高阈值Thresholdhigh进行比较,若其小于低阈值Thresholdlow,则转步骤(12),若大于低阈值Thresholdlow但小于高阈值Thresholdhigh,则表示写操作命中,然后转步骤(15),若大于高阈值Thresholdhigh,则表示写操作未命中,然后转步骤(18);
本步骤的优点在于,通过“双阈值”法对到达的请求序列进行检测,将太大和太小的连续写请求从缓存层过滤掉,而直接将它们分派到磁盘上,有效减缓了固态盘随机小写性能差以及由此引起的寿命问题。
(12)判断磁盘上日志区域的剩余空间是否大于该小写请求所需要的空间,若大于则转步骤(13),否则转步骤(14);
(13)将该写请求的内容写入到机械式磁盘上的日志区域,过程结束;
(14)将机械式磁盘上的日志区域上缓存的数据块全部写回机械式磁盘,返回步骤(13);
(15)根据写请求对应的访问地址计算该写请求在固态盘的缓存空间中对应的缓存组号(set),并判断该缓存组内的剩余空间是否大于写请求所需要的空间,若大于则转步骤(16),否则转步骤(17);具体而言,计算缓存组号的方法与步骤(4)相同,在此不再赘述;
(16)将写请求对应的数据块写入计算得到的缓存组号对应的缓存组内的剩余缓冲空间中,然后过程结束;
(17)根据缓存替换算法将该缓存组中最近未被访问的数据块写回机械式磁盘,并释放该数据块在缓存空间中占用的空间,然后返回步骤(14);具体而言,缓存替换算法为最近最少使用算法(LeastRecentlyUsed,简称LRU)、先入先出算法(FirstInFirstOut,简称FIFO)等。
(18)检查固态盘的缓存空间以及机械式磁盘上的日志区域中是否存在与该写请求对应的地址空间重合的数据块,若存在则转步骤(19),否则转步骤(20);
本步骤的优点在于,直接将“大请求”对应的数据块写到磁盘上,充分利用了磁盘的良好顺序访问性能,而且可以增加固态盘的有效缓存空间;
(19)将重合的数据块同步写回机械式磁盘,将该写请求对应的数据写入机械式磁盘中,然后过程结束;
(20)将该写请求对应的数据写入机械式磁盘中,然后过程结束;
本发明提出一种高效利用固态盘缓存的方法,把固态盘作为以缓存层工作在机械式磁盘之上,利用设备映射层的抽象机制,将固态盘和机械式磁盘两种不同的设备构造成一个统一的混合逻辑设备。本发明选择性地将最合适的请求缓存在固态盘上,既考虑到利用固态盘来提升***整体性能,同时还考虑到延长固态盘的使用时间,在性能和寿命之间选择一个折衷的权衡点。将到达的大写请求和小写请求从缓存中过滤掉,而直接将其发送到磁盘上,目的在于既利用磁盘良好的顺序访问性能,又减少固态盘上的随机小写请求,从而延长固态盘的使用寿命。同时,为了减少磁盘上的随机寻道操作,在磁盘上设置一个很小的日志区域,用于缓存到达磁盘上的小写请求。
本发明一种高效利用固态盘缓存的***包括:
第一模块,将固态盘和机械式磁盘两种不同的设备构造成一个统一的混合逻辑设备,即构造一个由固态盘和机械式磁盘混合组成的设备映射层目标设备(Flashcache),在设备映射层目标设备的内存中初始化一段空间作为“未命中窗口”,用于存放读操作未命中记录项,在机械式磁盘上设置一个很小的日志区域(其为机械式磁盘空间大小的5%至10%),用于缓存到达磁盘上的小写请求;当写请求的大小小于低阈值Thresholdlow时,该写请求是小写请求,当写请求的大小大于高阈值Thresholdhigh时,该写请求是大写请求,低阈值Thresholdlow的取值范围是1至6之间的整数,高阈值Thresholdhigh的取值范围是6至10之间的整数;
第二模块,将固态盘的缓存空间中划分为多个组,分组的数量NS为存储空间中数据块的总数除以2N,其中N为8至10之间的正整数;
第三模块,接收来自于用户的请求,并判断该请求是读请求还是写请求,如果是读请求,则进入第四模块,如果是写请求,则进入第十模块;
第四模块,根据读请求对应的访问地址计算该读请求在固态盘的缓存空间中对应的缓存组号(set),数据块组号set=(dbn/B/2N)%NS,其中,读请求对应的访问地址扇区号是dbn,固态盘的每个数据块包含B个扇区;
第五模块,在计算得到的缓存组号对应的缓存组内查找是否存在该读请求对应的数据块,若存在对应的数据块,则说明读操作命中,然后转入第六模块,否则说明该读请求未命中,然后转入第七模块;
第六模块,直接从固态盘上读取数据,然后过程结束;
第七模块,检查固态盘的缓存空间中是否存在与该读请求对应的地址空间重合的数据块,若存在则转入第八模块,否则转入第九模块。
第八模块,将重合的数据块同步写回机械式磁盘,从该机械式磁盘中读取该读请求对应的地址空间中的数据,然后过程结束;
第九模块,从该机械式磁盘中读取该读请求对应的地址空间中的数据,并将读操作未命中的记录项添加到“未命中窗口”中;该记录项中包括该读操作对应的数据块的地址和未命中的次数;
第十模块,判断未命中窗口中读操作未命中的次数是否达到一阈值,若达到,则将该记录项对应的数据块从机械式磁盘迁移到固态盘对应组内,否则过程结束;阈值的取值范围是5至10次;
第十一模块将写请求的大小与低阈值Thresholdlow和高阈值Thresholdhigh进行比较,若其小于低阈值Thresholdlow,则转入第十二模块,若大于低阈值Thresholdlow但小于高阈值Thresholdhigh,则表示写操作命中,转入第十五模块,若大于高阈值Thresholdhigh,则表示写操作未命中,然后转入第十八模块;
第十二模块,判断磁盘上日志区域的剩余空间是否大于该小写请求所需要的空间,若大于则转入第十三模块,否则转入第十四模块;
第十三模块,将该写请求的内容写入到机械式磁盘上的日志区域,过程结束;
第十四模块,将机械式磁盘上的日志区域上缓存的数据块全部写回机械式磁盘,转入第十三模块;
第十五模块,根据写请求对应的访问地址计算该写请求在固态盘的缓存空间中对应的缓存组号(set),并判断该缓存组内的剩余空间是否大于写请求所需要的空间,若大于则转入第十六模块,否则转入第十七模块;
第十六模块,将写请求对应的数据块写入计算得到的缓存组号对应的缓存组内的剩余缓冲空间中,然后过程结束;
第十七模块,根据缓存替换算法将该缓存组中最近未被访问的数据块写回机械式磁盘,并释放该数据块在缓存空间中占用的空间,然后转入第十四模块;
第十八模块,检查固态盘的缓存空间以及机械式磁盘上的日志区域中是否存在与该写请求对应的地址空间重合的数据块,若存在则转入第十九模块,否则转入第二十模块;
第十九模块,将重合的数据块同步写回机械式磁盘,将该写请求对应的数据写入机械式磁盘中,然后过程结束;
第二十模块,将该写请求对应的数据写入机械式磁盘中,然后过程结束。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种高效利用固态盘缓存的方法,其特征在于,包括以下步骤:
(1)构造一个由固态盘和机械式磁盘混合组成的设备映射层目标设备,在设备映射层目标设备的内存中初始化一段空间作为“未命中窗口”,用于存放读操作未命中记录项,在机械式磁盘上设置一个日志区域;
(2)将固态盘的缓存空间中划分为多个组,分组的数量NS为存储空间中数据块的总数除以2N,其中N为8至10之间的正整数;
(3)接收来自于用户的请求,并判断该请求是读请求还是写请求,如果是读请求,则进入步骤(4),如果是写请求,则进入步骤(11);
(4)根据读请求对应的访问地址计算该读请求在固态盘的缓存空间中对应的缓存组号set=(dbn/B/2N)%NS,其中,dbn表示读请求对应的访问地址扇区号,B表示固态盘的每个数据块包含的扇区个数;
(5)在计算得到的缓存组号对应的缓存组内查找是否存在该读请求对应的数据块,若存在对应的数据块,则转步骤(6),否则转步骤(7);
(6)直接从固态盘上读取数据,然后过程结束;
(7)检查固态盘的缓存空间中是否存在与该读请求对应的地址空间重合的数据块,若存在则转步骤(8),否则转步骤(9);
(8)将重合的数据块同步写回机械式磁盘,从该机械式磁盘中读取该读请求对应的地址空间中的数据,然后过程结束;
(9)从该机械式磁盘中读取该读请求对应的地址空间中的数据,并将读操作未命中的记录项添加到“未命中窗口”中;
(10)判断未命中窗口中读操作未命中的次数是否达到一阈值,若达到,则将该记录项对应的数据块从机械式磁盘迁移到固态盘对应组内,否则过程结束;
(11)将写请求的大小与低阈值Thresholdlow和高阈值Thresholdhigh进行比较,若其小于低阈值Thresholdlow,则转步骤(12),若大于低阈值Thresholdlow但小于高阈值Thresholdhigh,则表示写操作命中,然后转步骤(15),若大于高阈值Thresholdhigh,则表示写操作未命中,然后转步骤(18);
(12)判断磁盘上日志区域的剩余空间是否大于该写请求所需要的空间,若大于则转步骤(13),否则转步骤(14);
(13)将该写请求的内容写入到机械式磁盘上的日志区域,过程结束;
(14)将机械式磁盘上的日志区域上缓存的数据块全部写回机械式磁盘,返回步骤(13);
(15)根据写请求对应的访问地址计算该写请求在固态盘的缓存空间中对应的缓存组号,并判断该缓存组内的剩余空间是否大于写请求所需要的空间,若大于则转步骤(16),否则转步骤(17);
(16)将写请求对应的数据块写入计算得到的缓存组号对应的缓存组内的剩余缓冲空间中,然后过程结束;
(17)根据缓存替换算法将该缓存组中最近未被访问的数据块写回机械式磁盘,并释放该数据块在缓存空间中占用的空间,然后返回步骤(14);
(18)检查固态盘的缓存空间以及机械式磁盘上的日志区域中是否存在与该写请求对应的地址空间重合的数据块,若存在则转步骤(19),否则转步骤(20);
(19)将重合的数据块同步写回机械式磁盘,将该写请求对应的数据写入机械式磁盘中,然后过程结束;
(20)将该写请求对应的数据写入机械式磁盘中,然后过程结束。
2.根据权利要求1所述的高效利用固态盘缓存的方法,其特征在于,低阈值Thresholdlow的取值范围是1至6之间的整数,高阈值Thresholdhigh的取值范围是6至10之间的整数
3.根据权利要求1或2所述的高效利用固态盘缓存的方法,其特征在于,日志区域为机械式磁盘空间大小的5%至10%,并用于缓存到达磁盘上的小写请求,其中当写请求的大小小于低阈值Thresholdlow时,该写请求是小写请求,当写请求的大小大于高阈值Thresholdhigh时,该写请求是大写请求。
4.根据权利要求1所述的高效利用固态盘缓存的方法,其特征在于,步骤(9)中的记录项中包括该读操作对应的数据块的地址和未命中的次数。
5.根据权利要求1所述的高效利用固态盘缓存的方法,其特征在于,缓存替换算法为LRU或FIFO算法。
6.一种高效利用固态盘缓存的***,其特征在于,包括:
第一模块,用于构造一个由固态盘和机械式磁盘混合组成的设备映射层目标设备,在设备映射层目标设备的内存中初始化一段空间作为“未命中窗口”,用于存放读操作未命中记录项,在机械式磁盘上设置一个日志区域;
第二模块,用于将固态盘的缓存空间中划分为多个组,分组的数量NS为存储空间中数据块的总数除以2N,其中N为8至10之间的正整数;
第三模块,用于接收来自于用户的请求,并判断该请求是读请求还是写请求,如果是读请求,则进入第四模块,如果是写请求,则进入第十一模块;
第四模块,用于根据读请求对应的访问地址计算该读请求在固态盘的缓存空间中对应的缓存组号set=(dbn/B/2N)%NS,其中,dbn表示读请求对应的访问地址扇区号,B表示固态盘的每个数据块包含的扇区个数;
第五模块,用于在计算得到的缓存组号对应的缓存组内查找是否存在该读请求对应的数据块,若存在对应的数据块,则转第六模块,否则转第七模块;
第六模块,用于直接从固态盘上读取数据,然后过程结束;
第七模块,用于检查固态盘的缓存空间中是否存在与该读请求对应的地址空间重合的数据块,若存在则转第八模块,否则转第九模块;
第八模块,用于将重合的数据块同步写回机械式磁盘,从该机械式磁盘中读取该读请求对应的地址空间中的数据,然后过程结束;
第九模块,用于从该机械式磁盘中读取该读请求对应的地址空间中的数据,并将读操作未命中的记录项添加到“未命中窗口”中;
第十模块,用于判断未命中窗口中读操作未命中的次数是否达到一阈值,若达到,则将该记录项对应的数据块从机械式磁盘迁移到固态盘对应组内,否则过程结束;
第十一模块,用于将写请求的大小与低阈值Thresholdlow和高阈值Thresholdhigh进行比较,若其小于低阈值Thresholdlow,则转第十二模块,若大于低阈值Thresholdlow但小于高阈值Thresholdhigh,则表示写操作命中,然后转第十五模块,若大于高阈值Thresholdhigh,则表示写操作未命中,然后转第十八模块;
第十二模块,用于判断磁盘上日志区域的剩余空间是否大于该写请求所需要的空间,若大于则转第十三模块,否则转第十四模块;
第十三模块,用于将该写请求的内容写入到机械式磁盘上的日志区域,过程结束;
第十四模块,用于将机械式磁盘上的日志区域上缓存的数据块全部写回机械式磁盘,返回第十三模块;
第十五模块,用于根据写请求对应的访问地址计算该写请求在固态盘的缓存空间中对应的缓存组号,并判断该缓存组内的剩余空间是否大于写请求所需要的空间,若大于则转第十六模块,否则转第十七模块;
第十六模块,用于将写请求对应的数据块写入计算得到的缓存组号对应的缓存组内的剩余缓冲空间中,然后过程结束;
第十七模块,用于根据缓存替换算法将该缓存组中最近未被访问的数据块写回机械式磁盘,并释放该数据块在缓存空间中占用的空间,然后返回第十四模块;
第十八模块,用于检查固态盘的缓存空间以及机械式磁盘上的日志区域中是否存在与该写请求对应的地址空间重合的数据块,若存在则转第十九模块,否则转第二十模块;
第十九模块,用于将重合的数据块同步写回机械式磁盘,将该写请求对应的数据写入机械式磁盘中,然后过程结束;
第二十模块,用于将该写请求对应的数据写入机械式磁盘中,然后过程结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310554993.2A CN103678169B (zh) | 2013-11-11 | 2013-11-11 | 一种高效利用固态盘缓存的方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310554993.2A CN103678169B (zh) | 2013-11-11 | 2013-11-11 | 一种高效利用固态盘缓存的方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103678169A CN103678169A (zh) | 2014-03-26 |
CN103678169B true CN103678169B (zh) | 2016-04-13 |
Family
ID=50315795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310554993.2A Active CN103678169B (zh) | 2013-11-11 | 2013-11-11 | 一种高效利用固态盘缓存的方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103678169B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105068943B (zh) * | 2015-08-19 | 2017-12-05 | 浪潮(北京)电子信息产业有限公司 | 一种Cache替换方法及装置 |
CN105892947B (zh) * | 2016-03-31 | 2019-01-22 | 华中科技大学 | 一种节能存储***的ssd与hdd混合缓存管理方法及*** |
CN113515471B (zh) * | 2016-06-14 | 2024-06-18 | 伊姆西Ip控股有限责任公司 | 用于管理存储***的方法和装置 |
CN106708433A (zh) * | 2016-12-06 | 2017-05-24 | 深圳市深信服电子科技有限公司 | 存储数据的读写方法及装置 |
CN106844224B (zh) * | 2016-12-21 | 2019-06-07 | 华中科技大学 | 一种基于nvram的内存分配链表及内存分配方法 |
CN106681668A (zh) * | 2017-01-12 | 2017-05-17 | 郑州云海信息技术有限公司 | 一种基于固态盘缓存的混合式存储***及存储方法 |
CN108733582B (zh) * | 2017-04-18 | 2021-10-29 | 腾讯科技(深圳)有限公司 | 一种数据处理方法及装置 |
CN108519858B (zh) * | 2018-03-22 | 2021-06-08 | 雷科防务(西安)控制技术研究院有限公司 | 存储芯片硬件命中方法 |
CN108829835A (zh) * | 2018-06-19 | 2018-11-16 | 深圳市瑞驰信息技术有限公司 | 一种新型高速缓存文件***架构 |
CN109144431B (zh) * | 2018-09-30 | 2021-11-02 | 华中科技大学 | 数据块的缓存方法、装置、设备及存储介质 |
CN109542803A (zh) * | 2018-11-20 | 2019-03-29 | 中国石油大学(华东) | 一种基于深度学习的混合多模式热数据缓存策略 |
CN111367666A (zh) * | 2020-02-28 | 2020-07-03 | 深圳壹账通智能科技有限公司 | 数据读写方法及*** |
CN111857574A (zh) * | 2020-06-24 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种写请求数据压缩方法、***、终端及存储介质 |
CN112799977B (zh) * | 2021-02-26 | 2022-07-19 | 中国人民解放军国防科技大学 | 计算机的缓存分区和缓存访问实时性保护方法及装置 |
CN113126921B (zh) * | 2021-04-06 | 2022-03-01 | 南昌航空大学 | 一种提高固态盘内3d闪存芯片写性能的优化方法 |
CN113868192B (zh) * | 2021-12-03 | 2022-04-08 | 深圳市杉岩数据技术有限公司 | 一种数据存储设备、方法与分布式数据存储*** |
CN114546267B (zh) * | 2022-02-14 | 2022-11-18 | 深圳源创存储科技有限公司 | 一种基于大数据计算的固态硬盘及固态硬盘*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662459A (zh) * | 2012-04-22 | 2012-09-12 | 复旦大学 | 利用固态硬盘与机械硬盘混合存储减少服务器能源消耗的方法 |
CN103309815A (zh) * | 2013-05-23 | 2013-09-18 | 华中科技大学 | 一种提高固态盘有效容量和寿命的方法和*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103026346B (zh) * | 2010-07-27 | 2016-01-20 | 国际商业机器公司 | 用于从固态存储器设备读取及写入数据的方法及存储*** |
-
2013
- 2013-11-11 CN CN201310554993.2A patent/CN103678169B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662459A (zh) * | 2012-04-22 | 2012-09-12 | 复旦大学 | 利用固态硬盘与机械硬盘混合存储减少服务器能源消耗的方法 |
CN103309815A (zh) * | 2013-05-23 | 2013-09-18 | 华中科技大学 | 一种提高固态盘有效容量和寿命的方法和*** |
Non-Patent Citations (1)
Title |
---|
《一众基于固态盘和硬盘的混合存储架构》;王峰等;《河南师范大学学报(自然科学版)》;20130731;第41卷(第4期);153-157 * |
Also Published As
Publication number | Publication date |
---|---|
CN103678169A (zh) | 2014-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103678169B (zh) | 一种高效利用固态盘缓存的方法和*** | |
CN102012791B (zh) | 基于Flash的数据存储PCIE板卡 | |
US20210374056A1 (en) | Systems and methods for scalable and coherent memory devices | |
US10706101B2 (en) | Bucketized hash tables with remap entries | |
CN104794070B (zh) | 基于动态非覆盖raid技术的固态闪存写缓存***及方法 | |
CN103425600B (zh) | 一种固态盘闪存转换层中的地址映射方法 | |
CN107391391B (zh) | 在固态硬盘的ftl实现数据拷贝的方法、***及固态硬盘 | |
US20150127691A1 (en) | Efficient implementations for mapreduce systems | |
CN110226157A (zh) | 用于减少行缓冲冲突的动态存储器重新映射 | |
CN103885728A (zh) | 一种基于固态盘的磁盘缓存*** | |
CN102789427A (zh) | 数据储存装置与其操作方法 | |
CN102831140A (zh) | 一种fpga中mac地址查找表的实现方法 | |
CN105095116A (zh) | 缓存替换的方法、缓存控制器和处理器 | |
CN103577339A (zh) | 一种数据存储方法及*** | |
CN102262512A (zh) | 一种实现磁盘阵列缓存分区管理的***、装置及方法 | |
CN101714065A (zh) | 一种闪存控制器的映射信息管理方法 | |
JP2024029007A (ja) | 記憶システムをメインメモリとして使用するための方法および装置 | |
CN103049393B (zh) | 内存空间管理方法和装置 | |
CN103309626A (zh) | 实现网络芯片多读写端口存储器的方法及相应存储器 | |
CN103942161A (zh) | 只读缓存的去冗余***及方法以及缓存的去冗余方法 | |
US11544063B2 (en) | Memory system and data processing system including the same | |
CN102999441A (zh) | 一种细粒度内存访问的方法 | |
CN105550979A (zh) | 一种高数据通量纹理Cache层次结构 | |
CN102650972A (zh) | 数据存储方法、装置及*** | |
CN102591782A (zh) | 一种采用三级地址查找表的Nandflash存储*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 |