CN103885728B - 一种基于固态盘的磁盘缓存系统 - Google Patents
一种基于固态盘的磁盘缓存系统 Download PDFInfo
- Publication number
- CN103885728B CN103885728B CN201410138635.8A CN201410138635A CN103885728B CN 103885728 B CN103885728 B CN 103885728B CN 201410138635 A CN201410138635 A CN 201410138635A CN 103885728 B CN103885728 B CN 103885728B
- Authority
- CN
- China
- Prior art keywords
- data block
- metadata
- disk
- dirty
- submodule
- 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
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于固态盘的磁盘缓存系统,属于计算机数据存储系统中缓存系统技术领域,本发明所述磁盘缓存系统包括数据块元数据维护模块、固态盘数据块替换模块和脏数据块写回磁盘模块。本发明利用固态盘缓存提高了在大规模存储环境下磁盘数据的读写性能,具有较高的数据块读写命中率和缓存空间利用率,同时保证了在宕机重启情况下缓存的数据块是非易失的,减少了固态盘缓存设备由冷到热的收敛时间,能够解决现有计算机数据存储系统中缓存空间大小受限、缓存数据易失、缓存空间利用不充分的问题。
Description
技术领域
本发明属于计算机数据存储领域,更具体地,涉及一种基于固态盘的磁盘缓存系统,用于提升磁盘的读写性能。
背景技术
固态盘(Solid State Disk,简称SSD)虽然在性能、能耗、可靠性等方面优于传统的机械式磁盘(HDD),然而它除了具有成本高的缺点外,其有限容量和寿命等缺点是影响它被广泛采用的主要障碍。
机械式磁盘(HDD)虽然其机械寻道操作导致其性能,特别是随机访问性能受到严重限制,但其低成本、高容量、无限长寿命等优点仍然将保证其在现代存储系统中的重要作用。
基于这两类存储设备互补的优缺点,构建由固态盘和机械式磁盘组成的混合式存储系统将是近期乃至未来一段时期内利用固态盘的主要形式。
现有的基于固态盘的存储系统,要么是使用固态盘构建一个分层的存储系统,将热点数据存储在固态盘上,以加快上层应用访问数据的速度,但是使用这种方法热点数据的大小受限于固态盘存储空间的大小,所以对于存储系统读写性能的提升是有限的。要么是设计一个基于固态盘缓存的混合存储系统,而传统的使用固态盘作为缓存所构建的存储系统,在单机情况下拥有比较好的性能提升,但是应用在分布式系统中就会造成固态盘存储空间的浪费。
固态盘在现有的计算机存储系统中是一种比较稀缺的资源,大数据时代的到来使得分布式存储架构将得到更为广泛的应用,如何在不影响存储系统读写性能的情况下充分提升固态盘的利用率是一个值得研究的问题。
发明内容
本发明提供了一种基于固态盘的磁盘缓存系统,其目的在于将分布式系统中多台物理机磁盘上的热点数据进行分块,并对数据块进行哈希以获得数据块的指纹,该指纹能唯一地标识一个数据块,然后将这些数据块通过LRU缓存替换算法缓存到固态盘中,最终达到提升磁盘设备的读写性能并提高固态盘缓存的利用率的技术效果。
本发明所提供的一种基于固态盘的磁盘缓存系统,包括数据块元数据维护模块、固态盘数据块替换模块和脏数据块写回磁盘模块,其中:
所述数据块元数据维护模块,用于在使用固态盘作为磁盘缓存之前,在固态盘存储空间的头部开辟出一块固定大小的元数据存储区域,以保存各数据块的元数据;当把一个新数据块写入到缓存中时,用于生成该数据块所对应的元数据,并将该元数据写入到固态盘上的元数据存储区域中,同时用于在有需要时从元数据存储区域中读取任意数据块的元数据;
所述固态盘数据块替换模块,用于判断缓存中是否有空闲数据块存储区域可以用来缓存新的数据块,如有则直接将新的数据块写入缓存中,如没有则需要根据替换算法将缓存中现有的一个数据块替换出去;如果被替换出缓存的数据块是一个脏块,在替换之前需要将脏块写回磁盘,避免出现数据的不一致性,最后将新的数据块写入缓存中的对应位置;
所述脏数据块写回磁盘模块,用于定期将固态盘中的脏块写回磁盘,其中写回磁盘的时机基于两点:缓存内脏块数量是否超过脏块数阈值,以及各脏块的写回延时时间是否超过设定时间。如果缓存内脏块数量超过脏块数阈值,或者某些脏块的写回延时时间超过设定时间,则将缓存内的脏块集中写回磁盘,并更新各脏块的元数据信息。
进一步地,所述数据块元数据维护模块包括初始化数据块元数据存储区域子模块、生成数据块元数据子模块、写数据块元数据子模块、读数据块元数据子模块和更新数据块元数据子模块,其中:
所述初始化数据块元数据存储区域子模块:用于将固态盘缓存存储空间分割成定长大小的数据块,根据缓存空间大小计算所需元数据存储空间的大小,再求出所需的数据块的数量,在缓存空间的头部开辟出相应数量数据块的元数据存储区域;
所述生成数据块元数据子模块:用于在一个不在固态盘缓存中的数据块需要被写入固态盘时,生成新的数据块元数据,新的数据块元数据包括数据块的指纹、数据块的大小、数据块的状态、数据块的生成时间、数据块的元数据在数据块元数据存储区域的索引号和数据块的存储地址,并转写数据块元数据子模块;
所述写数据块元数据子模块:用于将新生成的数据块元数据写入到数据块元数据存储区域的空闲数据块中,同时将该数据块元数据添加到内存中的LRU栈的栈顶;
所述读数据块元数据子模块:用于根据数据块的元数据在数据块元数据存储区域的索引号读取数据块的元数据,并转更新数据块元数据子模块;
所述更新数据块元数据子模块:用于修改读取出的数据块元数据中的相应项,并将修改的结果写回固态盘的数据块元数据存储区域和内存中的LRU栈中对应的存储位置。
进一步地,所述固态盘数据块替换模块包括固态盘缓存空闲数据块判断子模块、栈底数据块元数据读取子模块、脏数据块判断子模块、脏数据块写回磁盘子模块,以及新数据块和元数据写入缓存子模块,其中:
所述固态盘缓存空闲数据块判断子模块:用于根据内存中的空闲数据块位图,判断固态盘缓存中是否有空闲数据块,是则表明不需要将缓存中的某个数据块替换出去,转新数据块和元数据写入缓存子模块;否则转栈底数据块元数据读取子模块;
所述栈底数据块元数据读取子模块:用于读取内存中LRU栈栈底的数据块元数据,其中该数据块元数据所对应的数据块是最近最久没有访问的,根据LRU算法原理,在缓存空间不足时,理应最先被替换出去;
所述脏数据块判断子模块:用于判断被替换数据块是否为脏数据块,是则转脏数据块写回磁盘子模块;否则说明该被替换的数据块不需要写回磁盘,转新数据块和元数据写入缓存子模块;
所述脏数据块写回磁盘子模块:用于将脏数据块判断子模块判断为脏的数据块写回磁盘,并清除LRU栈中对应的数据块的元数据信息;
所述新数据块和元数据写入缓存子模块:用于为新的数据块生成元数据信息,并将其添加到LRU栈的栈顶,然后将新数据块写入到被替换数据块在缓存中的对应存储位置。
进一步地,所述脏数据块写回磁盘模块包括缓存内脏数据块数量计算子模块、脏数据块数阈值判断子模块、各脏数据块写回延时判断子模块、脏数据块集中写回子模块,以及脏数据块元数据更新子模块,其中:
所述脏数据块写回磁盘模块:用于根据位于内存的LRU栈中各数据块的元数据信息,统计缓存中总的脏块数量;其中所述元数据信息包括数据块的状态信息;
所述脏数据块数阈值判断子模块:用于判断缓存中脏数据块的数量是否超过脏数据块阈值,是则说明缓存中有过多的脏块,可能会造成数据的不一致,则需要集中把缓存中的脏块写回到磁盘,转脏数据块集中写回子模块;
所述各脏数据块写回延时判断子模块:用于根据各数据块中的状态信息和数据块生成时间信息,求得各脏数据块上一次访问距离现在的时延,并判断这个时延是否超过了脏数据块写回延时,是则转脏数据块集中写回子模块;
所述脏数据块集中写回子模块:用于把需要写回磁盘的脏数据块分类集中写回到磁盘,并转脏数据块元数据更新子模块;
所述脏数据块元数据更新子模块:用于在脏数据块被写回磁盘后,需要更新自己的状态为非脏块,以保证元数据的一致性,将内存中的LRU栈的元数据和固态盘上元数据存储区域中的元数据都更新为非脏块状态。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
1、提升了磁盘设备的读写性能:机械式磁盘(HDD)由于其机械寻道操作导致其性能,特别是随机访问性能,受到严重限制,而固态硬盘没有磁头,采用快速随机读取,读延迟小,在写入数据的情况下也不需要磁头定位的过程,所以如果将磁盘上的部分热点数据缓存在固态盘上,那么无论是在写命中还是读命中的情况下都能大大提升磁盘的读取和写入的性能。
2、大幅提高了缓存空间的容量,节省了内存资源:通常的磁盘缓存系统是使用内存中开辟出的一小部分空间作为缓存空间,而计算机中内存空间是极为宝贵的,是保证操作系统和用户程序执行的基本保证,而使用固态盘作为磁盘的缓存空间在保证提升磁盘读写性能的基础上,节省了可用的内存空间,而固态盘存储空间通常相对于内存存储空间来说,要大的多,是内存空间的几十到几百倍,可以缓存更多的热点数据,从而提高数据块的命中率,进而提升磁盘设备的读写性能。
3、提升固态盘缓存空间的利用率:传统基于固态盘的磁盘缓存系统是给每台物理机单独配置固态盘缓存,而在分布式环境下,热点数据在物理机上的分布是不均匀的,必然会造成某些物理机上固态盘缓存空间的极大浪费,本发明考虑将各物理机上的固态盘集中提取出来作为所有物理机的磁盘缓存空间,热点数据少的物理机必然占用更少的固态盘缓存空间,热点数据多的物理机必然占用更多的固态盘缓存空间,从而做到按需分配,提高固态盘缓存空间的利用率。
附图说明
图1是本发明一种基于固态盘的磁盘缓存系统的应用环境图;
图2是本发明一种基于固态盘的磁盘缓存系统的结构示意图;
图3是本发明一种基于固态盘的磁盘缓存系统的工作原理图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
首先对本发明中的术语进行解释:
磁盘缓存系统:为了加快磁盘访问速度而设计的一种缓存系统,通过把热点数据缓存在访问速度更快,容量更小的存储设备中以提升磁盘的读写性能,本发明使用固态盘作为缓存设备。
空闲数据块:将固态盘存储空间划分为定长大小的数据块,如果某一数据块没有缓存磁盘上的数据,那么这个数据块称为空闲数据块。
脏数据块:将数据块缓存到固态盘后,如果该数据块发生写命中,那么这个数据块就成为了一个脏数据块,需要在合适的时候写回磁盘。
LRU:最近最少使用(Least Recently Used)算法,一种基于数据局部性的缓存数据块的替换算法,根据每个数据块的新近访问时间,淘汰掉最近最少使用的数据块。
LRU栈:存在于内存中的用来描述LRU算法的一种数据结构,记录当前缓存中所有数据块的访问时间,最近最少使用的数据块存在于栈底。
空闲数据块位图:在计算机内存中根据每个数据块的编号为每个数据块使用对应位来表示它的使用状态,为0表示该数据块没有被使用,属于空闲数据块,为1表示该数据块正在被使用,数据非空闲数据块。
脏数据块数阈值:判断当前缓存内的数据块是否需要被清理的标志值,如果当前缓存内的数据块的数量超过该阈值,那么所有的脏数据块均要被写回磁盘。
数据块写回延时:判断当前脏数据块是否需要被写回磁盘的标志值,如果某脏数据块上次被访问的时间和当前时刻的时间差大于该写回延时,那么该脏数据块需要被写回磁盘。
数据块元数据:包括数据块的指纹、数据块的大小、数据块的状态、数据块的生成时间、数据块的元数据在数据块元数据存储区域的索引号和数据块的存储地址
数据块指纹:用于唯一标识一个数据块的数据块标识,是由上层应用通过某种哈希算法生成的。
如图1所示,为本发明的应用环境图。用传统的硬盘作为主要的外部存储设备,以高速的固态盘存储空间作为大容量硬盘的缓存,根据缓存替换算法,将访问最为频繁的数据迁移到固态盘中,从而达到提升整个系统性能的目的。
本发明的总体思路在于,根据固态盘和机械硬盘的特性,结合二者的优点和缺点,将性能高、容量小、价格高的固态盘用作性能低、容量大、价格低的机械硬盘的缓存,将硬盘上经常访问的热点数据缓存在固态硬盘上,在读命中时,加快数据的读取速度,在写命中时,采用写回策略,加快数据的写入速度,同时定期将脏数据块写回磁盘以维持数据的一致性。对于每一个数据块都将维护其对应的元数据,通过数据块的元数据和替换算法决定在需要将缓存中的数据块替换出去时,应该选择哪个数据块进行替换,同时决定了被替换的数据块是否需要写回磁盘。
如图2所示,为本发明一种基于固态盘的磁盘缓存系统,包括以下模块:
(1)数据块元数据维护模块,用于在使用固态盘作为磁盘缓存之前,在固态盘存储空间的头部开辟出一块固定大小的元数据存储区域,以保存各数据块的元数据;当把一个新数据块写入到缓存中时,用于生成该数据块所对应的元数据,并将该元数据写入到固态盘上的元数据存储区域中,同时用于在有需要时从元数据存储区域中读取任意数据块的元数据。
(2)固态盘数据块替换模块,用于判断缓存中是否有空闲数据块存储区域可以用来缓存新的数据块,如有则直接将新的数据块写入缓存中,如没有则需要根据替换算法将缓存中现有的一个数据块替换出去;如果被替换出缓存的数据块是一个脏块,在替换之前需要将脏块写回磁盘,避免出现数据的不一致性,最后将新的数据块写入缓存中的对应位置。
(3)脏数据块写回磁盘模块:用于定期将固态盘中的脏块写回磁盘,其中写回磁盘的时机基于两点:缓存内脏块数量是否超过脏块数阈值,以及各脏块的写回延时时间是否超过设定时间;如果缓存内脏块数量超过脏块数阈值,或者某些脏块的写回延时间超过设定时间,则将缓存内的脏块集中写回磁盘,并更新各脏块的元数据信息。
进一步地,所述数据块元数据维护模块(1)包括以下子模块:
(1-1)初始化数据块元数据存储区域子模块:用于将固态盘缓存存储空间分割成定长大小的数据块,根据缓存空间大小计算所需元数据存储空间的大小,再求出所需的数据块的数量,在缓存空间的头部开辟出相应数量数据块的元数据存储区域。
本模块的优点在于提前开辟出数据块元数据存储空间,每个缓存空间的数据块在元数据存储区域中都有对应固定的元数据存储位置,在生成新的数据块元数据时,不需要动态的为其分配存储空间,减少了计算开销。
(1-2)生成数据块元数据子模块:用于在一个不在固态盘缓存中的数据块需要被写入固态盘时,生成新的数据块元数据,新的数据块元数据包括数据块的指纹、数据块的大小、数据块的状态、数据块的生成时间、数据块的元数据在数据块元数据存储区域的索引号和数据块的存储地址,并转写数据块元数据子模块。
本模块的优点在于为每个数据块给定一个数据块指纹以唯一地标识一个数据块,这样可以把多个物理机的磁盘数据块缓存在同一个固态盘缓存系统中,根据LRU数据块替换算法,数据访问频繁的物理机就会有更多的数据块被缓存在固态盘中,从而避免了数据访问不太频繁的物理机上的数据块占用了过多的固态盘缓存空间,从而提高固态盘缓存空间的利用率。
(1-3)写数据块元数据子模块:用于将新生成的数据块元数据写入到数据块元数据存储区域的空闲数据块中,同时将该数据块元数据添加到内存中的LRU栈的栈顶。
本模块的优点在于在将数据块元数据写到固态盘缓存的同时,还将其写入到位于内存的LRU栈的栈顶位置,既保证了新写入的数据块不会很快就被替换出去,与数据的局部性原理相一致,又保证了数据块元数据在内存和固态盘缓存中的一致性。
(1-4)读数据块元数据子模块:用于根据数据块的元数据在数据块元数据存储区域的索引号读取数据块的元数据,并转更新数据块元数据子模块。
(1-5)更新数据块元数据子模块:用于修改读取出的数据块元数据中的相应项,并将修改的结果写回固态盘的数据块元数据存储区域和内存中的LRU栈中对应的存储位置。
所述固态盘数据块替换模块(2)包括以下子模块:
(2-1)固态盘缓存空闲数据块判断子模块:用于根据内存中的空闲数据块位图,判断固态盘缓存中是否有空闲数据块,是则表明不需要将缓存中的某个数据块替换出去,转新数据块和元数据写入缓存子模块;否则转栈底数据块元数据读取子模块。
本模块的优点在于使用位图法能够迅速的判断当前缓存中是否有空闲数据块可用,减少了磁盘数据块写入到缓存中的时间。
(2-2)栈底数据块元数据读取子模块:用于读取内存中LRU栈栈底的数据块元数据,其中该数据块元数据所对应的数据块是最近最久没有访问的,根据LRU算法原理,在缓存空间不足时,理应最先被替换出去。
(2-3)脏数据块判断子模块:用于判断被替换数据块是否为脏数据块,是则转脏数据块写回磁盘子模块;否则说明该被替换的数据块不需要写回磁盘,转新数据块和元数据写入缓存子模块。
(2-4)脏数据块写回磁盘子模块:用于将脏数据块判断子模块判断为脏的数据块写回磁盘,并清除LRU栈中对应的数据块的元数据信息。
本模块的优点在于保证了磁盘上数据的正确性,缓存中脏数据块的修改时间比磁盘上对应数据块的修改时间要新的,当一个脏数据块被替换出缓存时,应该将修改的数据块写回磁盘以维护数据的一致性。
(2-5)新数据块和元数据写入缓存子模块:用于为新的数据块生成元数据信息,并将其添加到LRU栈的栈顶,然后将新数据块写入到被替换数据块在缓存中的对应存储位置。
所述脏数据块写回磁盘模块(3)包括以下子模块:
(3-1)脏数据块写回磁盘模块:用于根据位于内存的LRU栈中各数据块的元数据信息,统计缓存中总的脏块数量;其中所述元数据信息包括数据块的状态信息。
(3-2)脏数据块数阈值判断子模块:用于判断缓存中脏数据块的数量是否超过脏数据块阈值,是则说明缓存中有过多的脏块,可能会造成数据的不一致,则需要集中把缓存中的脏块写回到磁盘,转脏数据块集中写回子模块。
本模块的优点在于从整体上保证了整个缓存空间数据块的一致性,当缓存中包含了过多的脏数据块时,如果出现系统错误等意外情况,就会有大量缓存的数据块和磁盘上的数据块出现不一致的情况,通过为整个缓存空间设定一个合理的脏数据块阈值,当脏数据块的数量达到这个阈值时,数据块会被集中写回磁盘,避免了这种情况的出现。
(3-3)各脏数据块写回延时判断子模块:用于根据各数据块中的状态信息和数据块生成时间信息,求得各脏数据块上一次访问距离现在的时延,并判断这个时延是否超过了脏数据块写回延时,是则转脏数据块集中写回子模块。
本模块的优点在于减少了将缓存中数据块替换出磁盘所产生的开销,当一个数据块的写回延时过高时,超过了系统所设定的时间,则说明在比较长的时间内该数据块没有被访问过,根据LRU算法的假设,那么该数据块在未来比较长的一段时间内也不会被访问,所以会在比较短的时间内被替换出缓存。如果数据块写回延时超时,就将该脏数据块写回磁盘,当在不久的将来该数据块被替换出磁盘时,就可以直接将新的数据块写入缓存中对应位置,而不需要再将被替换数据块写回磁盘,从而减少数据块的替换开销。
(3-4)脏数据块集中写回子模块:用于把需要写回磁盘的脏数据块分类集中写回到磁盘,并转脏数据块元数据更新子模块。
本模块的优点在于提高了脏数据块写回磁盘的效率,把脏数据块集中写回磁盘,利用了数据的局部性原理,通过对写回的数据块进行排序,使得连续的数据块被一起写回磁盘,利用了磁盘在连续写情况下具有较高写性能的特点,进而提高了脏数据块写回磁盘的效率。
(3-5)脏数据块元数据更新子模块:用于在脏数据块被写回磁盘后,需要更新自己的状态为非脏块,以保证元数据的一致性,将内存中的LRU栈的元数据和固态盘上元数据存储区域中的元数据都更新为非脏块状态。
如图3所示,为本发明的基于固态盘的磁盘缓存系统的工作原理图,具体地:
图中描述的缓存系统,在进行初次运行时,对数据块原时间存储区域进行初始化。将固态盘缓存存储空间分割成定长大小的数据块,根据缓存空间大小计算所需元数据存储空间的大小,再求出所需的数据块的数量,在缓存空间的头部开辟出相应数量数据块的元数据存储区域。
当接收到上层读写请求时,判断是读请求还是写请求:
1、如果是读请求,在缓存中查找数据块元数据。如果命中,就根据元数据访问固态盘缓存空间,读取对于的数据块;并将元数据信息移到LRU栈的栈顶。如果不命中,只能通过访问磁盘来读取数据块。生成对应的数据块元数据,再通过数据块元数据维护模块中的生成数据块元数据子模块和写数据块元数据子模块来对新的元数据进行处理。
2、如果是写请求,先在缓存中查找数据块元数据,查看是否写命中。如果命中,访问固态盘缓存并写入对应的数据块,将该数据块的状态改为脏块,并将对应的元数据信息移到LRU栈的栈顶。如果不命中,只能通过访问磁盘来读取数据块。生成对应的数据块元数据,再通过数据块元数据维护模块中的生成数据块元数据子模块和写数据块元数据子模块来对新的元数据进行处理。在这个过程中,要更新数据块的状态为脏块。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种基于固态盘的磁盘缓存系统,其特征在于,所述系统包括数据块元数据维护模块、固态盘数据块替换模块和脏数据块写回磁盘模块,其中:
所述数据块元数据维护模块,用于在使用固态盘作为磁盘缓存之前,在固态盘存储空间的头部开辟出一块固定大小的元数据存储区域,以保存各数据块的元数据;当把一个新数据块写入到缓存中时,用于生成该数据块所对应的元数据,并将该元数据写入到固态盘上的元数据存储区域中,同时用于在有需要时从元数据存储区域中读取任意数据块的元数据;
所述固态盘数据块替换模块,用于判断缓存中是否有空闲数据块存储区域可以用来缓存新的数据块,如有则直接将新的数据块写入缓存中,如没有则需要根据替换算法将缓存中现有的一个数据块替换出去;如果被替换出缓存的数据块是一个脏块,在替换之前需要将脏块写回磁盘,避免出现数据的不一致性,最后将新的数据块写入缓存中的对应位置;
所述脏数据块写回磁盘模块,用于定期将固态盘中的脏块写回磁盘,其中写回磁盘的时机基于两点:缓存内脏块数量是否超过脏块数阈值,以及各脏块的写回延时时间是否超过设定时间;如果缓存内脏块数量超过脏块数阈值,或者某些脏块的写回延时时间超过设定时间,则将缓存内的脏块集中写回磁盘,并更新各脏块的元数据信息。
2.如权利要求1所述的磁盘缓存系统,其特征在于,所述数据块元数据维护模块包括初始化数据块元数据存储区域子模块、生成数据块元数据子模块、写数据块元数据子模块、读数据块元数据子模块和更新数据块元数据子模块,其中:
所述初始化数据块元数据存储区域子模块:用于将固态盘缓存存储空间分割成定长大小的数据块,根据缓存空间大小计算所需元数据存储空间的大小,再求出所需的数据块的数量,在缓存空间的头部开辟出相应数量数据块的元数据存储区域;
所述生成数据块元数据子模块:用于在一个不在固态盘缓存中的数据块需要被写入固态盘时,生成新的数据块元数据,新的数据块元数据包括数据块的指纹、数据块的大小、数据块的状态、数据块的生成时间、数据块的元数据在数据块元数据存储区域的索引号和数据块的存储地址,并转写数据块元数据子模块;
所述写数据块元数据子模块:用于将新生成的数据块元数据写入到数据块元数据存储区域的空闲数据块中,同时将该数据块元数据添加到内存中的LRU栈的栈顶;
所述读数据块元数据子模块:用于根据数据块的元数据在数据块元数据存储区域的索引号读取数据块的元数据,并转更新数据块元数据子模块;
所述更新数据块元数据子模块:用于修改读取出的数据块元数据中的相应项,并将修改的结果写回固态盘的数据块元数据存储区域和内存中的LRU栈中对应的存储位置。
3.如权利要求1或2所述的磁盘缓存系统,其特征在于,所述固态盘数据块替换模块包括固态盘缓存空闲数据块判断子模块、栈底数据块元数据读取子模块、脏数据块判断子模块、脏数据块写回磁盘子模块,以及新数据块和元数据写入缓存子模块,其中:
所述固态盘缓存空闲数据块判断子模块:用于根据内存中的空闲数据块位图,判断固态盘缓存中是否有空闲数据块,是则表明不需要将缓存中的某个数据块替换出去,转新数据块和元数据写入缓存子模块;否则转栈底数据块元数据读取子模块;
所述栈底数据块元数据读取子模块:用于读取内存中LRU栈栈底的数据块元数据,其中该数据块元数据所对应的数据块是最近最久没有访问的,根据LRU算法原理,在缓存空间不足时,理应最先被替换出去;
所述脏数据块判断子模块:用于判断被替换数据块是否为脏数据块,是则转脏数据块写回磁盘子模块;否则说明该被替换数据块不需要写回磁盘,转新数据块和元数据写入缓存子模块;
所述脏数据块写回磁盘子模块:用于将脏数据块判断子模块判断为脏的数据块写回磁盘,并清除LRU栈中对应的数据块的元数据信息;
所述新数据块和元数据写入缓存子模块:用于为新的数据块生成元数据信息,并将其添加到LRU栈的栈顶,然后将新数据块写入到被替换数据块在缓存中的对应存储位置。
4.如权利要求1或2所述的磁盘缓存系统,其特征在于,所述脏数据块写回磁盘模块包括缓存内脏数据块数量计算子模块、脏数据块数阈值判断子模块、各脏数据块写回延时判断子模块、脏数据块集中写回子模块,以及脏数据块元数据更新子模块,其中:
所述脏数据块写回磁盘模块:用于根据位于内存的LRU栈中各数据块的元数据信息,统计缓存中总的脏块数量;其中所述元数据信息包括数据块的状态信息;
所述脏数据块数阈值判断子模块:用于判断缓存中脏数据块的数量是否超过脏数据块阈值,是则说明缓存中有过多的脏块,可能会造成数据的不一致,则需要集中把缓存中的脏块写回到磁盘,转脏数据块集中写回子模块;
所述各脏数据块写回延时判断子模块:用于根据各数据块中的状态信息和数据块生成时间信息,求得各脏数据块上一次访问距离现在的时延,并判断这个时延是否超过了脏数据块写回延时,是则转脏数据块集中写回子模块;
所述脏数据块集中写回子模块:用于把需要写回磁盘的脏数据块分类集中写回到磁盘,并转脏数据块元数据更新子模块;
所述脏数据块元数据更新子模块:用于在脏数据块被写回磁盘后,需要更新自己的状态为非脏块,以保证元数据的一致性,将内存中的LRU栈的元数据和固态盘上元数据存储区域中的元数据都更新为非脏块状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410138635.8A CN103885728B (zh) | 2014-04-04 | 2014-04-04 | 一种基于固态盘的磁盘缓存系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410138635.8A CN103885728B (zh) | 2014-04-04 | 2014-04-04 | 一种基于固态盘的磁盘缓存系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103885728A CN103885728A (zh) | 2014-06-25 |
CN103885728B true CN103885728B (zh) | 2016-08-17 |
Family
ID=50954648
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410138635.8A Active CN103885728B (zh) | 2014-04-04 | 2014-04-04 | 一种基于固态盘的磁盘缓存系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103885728B (zh) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104123238A (zh) * | 2014-06-30 | 2014-10-29 | 海视云(北京)科技有限公司 | 数据存储方法及装置 |
CN104111899A (zh) * | 2014-07-03 | 2014-10-22 | 北京思特奇信息技术股份有限公司 | 一种缓存数据的存储方法及系统及读取方法 |
CN104503703B (zh) * | 2014-12-16 | 2018-06-05 | 华为技术有限公司 | 缓存的处理方法和装置 |
CN104572491B (zh) * | 2014-12-30 | 2017-10-17 | 华为技术有限公司 | 一种基于固态硬盘的读缓存管理方法及装置 |
CN111638852A (zh) * | 2014-12-31 | 2020-09-08 | 华为技术有限公司 | 将数据写入固态硬盘的方法及固态硬盘 |
CN104778018B (zh) * | 2015-04-23 | 2018-06-05 | 南京道熵信息技术有限公司 | 基于非对称混合型磁盘镜像的宽条带磁盘阵列及存储方法 |
CN106325629B (zh) * | 2015-07-06 | 2024-01-02 | 湖州胜僖电子科技有限公司 | 一种优化化学镀金析出的ito走线设计方法 |
CN105094711B (zh) * | 2015-09-22 | 2018-05-18 | 浪潮(北京)电子信息产业有限公司 | 一种实现写时复制文件系统的方法及装置 |
CN105786410A (zh) * | 2016-03-01 | 2016-07-20 | 深圳市瑞驰信息技术有限公司 | 一种提高数据存储系统处理速度的方法及数据存储系统 |
CN105915595B (zh) * | 2016-04-11 | 2020-05-26 | 深圳市瑞驰信息技术有限公司 | 一种集群存储系统存取数据的方法以及集群存储系统 |
CN106020723B (zh) * | 2016-05-19 | 2019-10-25 | 记忆科技(深圳)有限公司 | 一种简化NVMe固态硬盘的方法 |
CN106227471A (zh) * | 2016-08-19 | 2016-12-14 | 深圳大普微电子科技有限公司 | 固态硬盘和应用于固态硬盘的数据存取方法 |
TW201818248A (zh) * | 2016-11-15 | 2018-05-16 | 慧榮科技股份有限公司 | 可應用於資料儲存裝置之記憶體管理方法 |
CN106557437A (zh) * | 2016-11-22 | 2017-04-05 | 上海联影医疗科技有限公司 | 一种生数据的高速存储方法和系统 |
CN108932150B (zh) * | 2017-05-24 | 2023-09-15 | 中兴通讯股份有限公司 | 基于ssd和磁盘混合存储的缓存方法、装置及介质 |
US10339073B2 (en) * | 2017-06-29 | 2019-07-02 | Keysight Technologies, Inc. | Systems and methods for reducing write latency |
CN109213693B (zh) * | 2017-06-30 | 2023-05-05 | 伊姆西Ip控股有限责任公司 | 存储管理方法、存储系统和计算机程序产品 |
CN107589911A (zh) * | 2017-09-05 | 2018-01-16 | 郑州云海信息技术有限公司 | 一种ssd缓存的io处理方法及装置 |
CN107704400A (zh) * | 2017-10-12 | 2018-02-16 | 郑州云海信息技术有限公司 | 一种面向非易失存储的页缓存方法 |
CN107656879B (zh) * | 2017-10-13 | 2021-05-07 | 郑州云海信息技术有限公司 | 一种缓存数据的刷写方法、装置及可读存储介质 |
CN107888687B (zh) * | 2017-11-15 | 2020-06-16 | 长沙证通云计算有限公司 | 一种基于分布式存储系统的代理客户端存储加速方法及系统 |
CN109086462A (zh) * | 2018-09-21 | 2018-12-25 | 郑州云海信息技术有限公司 | 一种分布式文件系统中元数据的管理方法 |
CN109947363B (zh) * | 2018-12-11 | 2022-10-14 | 深圳供电局有限公司 | 一种分布式存储系统的数据缓存方法 |
CN110245024B (zh) * | 2019-07-15 | 2023-12-05 | 北京一流科技有限公司 | 静态存储块的动态分配系统及其方法 |
CN110716885B (zh) * | 2019-10-23 | 2022-02-18 | 北京字节跳动网络技术有限公司 | 数据管理方法、装置、电子设备和存储介质 |
CN111309261A (zh) * | 2020-02-16 | 2020-06-19 | 西安奥卡云数据科技有限公司 | 一种分布式存储系统中单节点上数据物理位置映射方法 |
CN111913661B (zh) * | 2020-07-29 | 2023-07-04 | 北京天融信网络安全技术有限公司 | 一种缓存设备替换方法及电子设备 |
CN112130766A (zh) * | 2020-09-17 | 2020-12-25 | 山东云海国创云计算装备产业创新中心有限公司 | 一种基于Flash存储器的写数据方法、装置、设备及存储介质 |
CN112631521B (zh) * | 2020-12-25 | 2023-01-06 | 苏州浪潮智能科技有限公司 | 一种控制缓存池水位的方法、系统、设备及介质 |
CN113076062B (zh) * | 2021-03-30 | 2023-01-06 | 山东英信计算机技术有限公司 | 一种提升qlcssd寿命的方法和设备 |
CN113419670A (zh) * | 2021-03-31 | 2021-09-21 | 阿里巴巴新加坡控股有限公司 | 数据写入处理方法、装置及电子设备 |
CN116880776B (zh) * | 2023-09-06 | 2023-11-17 | 上海凯翔信息科技有限公司 | 一种存储数据的数据处理系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102044295A (zh) * | 2009-10-16 | 2011-05-04 | 三星电子株式会社 | 非易失性存储器系统以及在电源中断期间保存数据的方法 |
TW201207617A (en) * | 2010-06-16 | 2012-02-16 | Taejin Infotech Co Ltd | Semiconductor storage device based cache manager and the manufacturing method thereof |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090042039A (ko) * | 2007-10-25 | 2009-04-29 | 삼성전자주식회사 | 불휘발성 메모리 장치의 데이터 관리 방법 |
US9582222B2 (en) * | 2009-04-30 | 2017-02-28 | Western Digital Technologies, Inc. | Pre-cache similarity-based delta compression for use in a data storage system |
-
2014
- 2014-04-04 CN CN201410138635.8A patent/CN103885728B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102044295A (zh) * | 2009-10-16 | 2011-05-04 | 三星电子株式会社 | 非易失性存储器系统以及在电源中断期间保存数据的方法 |
TW201207617A (en) * | 2010-06-16 | 2012-02-16 | Taejin Infotech Co Ltd | Semiconductor storage device based cache manager and the manufacturing method thereof |
Also Published As
Publication number | Publication date |
---|---|
CN103885728A (zh) | 2014-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103885728B (zh) | 一种基于固态盘的磁盘缓存系统 | |
CN110825748B (zh) | 利用差异化索引机制的高性能和易扩展的键值存储方法 | |
CN104115133B (zh) | 用于复合非易失性存储设备的数据迁移的方法、系统和设备 | |
CN107066393A (zh) | 提高地址映射表中映射信息密度的方法 | |
CN105892947B (zh) | 一种节能存储系统的ssd与hdd混合缓存管理方法及系统 | |
CN103246696A (zh) | 高并发数据库的访问方法及应用于多服务器系统的方法 | |
CN108021717B (zh) | 一种轻量级嵌入式文件系统的实现方法 | |
CN110795363B (zh) | 一种存储介质的热页预测方法和页面调度方法 | |
CN109739780A (zh) | 基于页级映射的动态二级缓存闪存转换层地址映射方法 | |
CN106909323B (zh) | 适用于dram/pram混合主存架构的页缓存方法及混合主存架构系统 | |
CN109783398A (zh) | 一种基于相关感知页面级ftl固态硬盘性能优化方法 | |
Jin et al. | Optimizing B+-tree for hybrid storage systems | |
CN110109927A (zh) | 基于LSM树的Oracle数据库数据处理方法 | |
CN104111898A (zh) | 基于多维数据相似性的混合存储系统及数据管理方法 | |
CN117056087B (zh) | 云数据中心混合内存优化方法、计算机装置及存储介质 | |
CN110968269A (zh) | 基于scm与ssd的键值存储系统及读写请求处理方法 | |
CN110262982A (zh) | 一种固态硬盘地址映射的方法 | |
CN107451071A (zh) | 一种缓存置换方法及系统 | |
CN103383666B (zh) | 改善缓存预取数据局部性的方法和系统及缓存访问方法 | |
WO2023000536A1 (zh) | 一种数据处理方法、系统、设备以及介质 | |
CN111930316A (zh) | 一种内容分发网络的缓存读写系统和方法 | |
CN108932150A (zh) | 基于ssd和磁盘混合存储的缓存方法、装置及介质 | |
CN111078143B (zh) | 基于段映射进行数据布局和调度的混合存储方法及系统 | |
CN109478164A (zh) | 用于存储用于高速缓存条目传输的高速缓存位置信息的系统和方法 | |
CN105045894B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |