[发明专利]一种基于固态盘的磁盘缓存系统有效
申请号: | 201410138635.8 | 申请日: | 2014-04-04 |
公开(公告)号: | CN103885728A | 公开(公告)日: | 2014-06-25 |
发明(设计)人: | 周可;王桦;夏德军;饶琦 | 申请(专利权)人: | 华中科技大学 |
主分类号: | G06F3/06 | 分类号: | G06F3/06;G06F12/08 |
代理公司: | 华中科技大学专利中心 42201 | 代理人: | 梁鹏 |
地址: | 430074 湖北*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 固态 磁盘 缓存 系统 | ||
1.一种基于固态盘的磁盘缓存系统,其特征在于,所述系统包括数据块元数据维护模块、固态盘数据块替换模块和脏数据块写回磁盘模块,其中:
所述数据块元数据维护模块,用于在使用固态盘作为磁盘缓存之前,在固态盘存储空间的头部开辟出一块固定大小的元数据存储区域,以保存各数据块的元数据;当把一个新数据块写入到缓存中时,用于生成该数据块所对应的元数据,并将该元数据写入到固态盘上的元数据存储区域中,同时用于在有需要时从元数据存储区域中读取任意数据块的元数据;
所述固态盘数据块替换模块,用于判断缓存中是否有空闲数据块存储区域可以用来缓存新的数据块,如有则直接将新的数据块写入缓存中,如没有则需要根据替换算法将缓存中现有的一个数据块替换出去;如果被替换出缓存的数据块是一个脏块,在替换之前需要将脏块写回磁盘,避免出现数据的不一致性,最后将新的数据块写入缓存中的对应位置;
所述脏数据块写回磁盘模块,用于定期将固态盘中的脏块写回磁盘,其中写回磁盘的时机基于两点:缓存内脏块数量是否超过脏块数阈值,以及各脏块的写回延时时间是否超过设定时间;如果缓存内脏块数量超过脏块数阈值,或者某些脏块的写回延时时间超过设定时间,则将缓存内的脏块集中写回磁盘,并更新各脏块的元数据信息。
2.如权利要求1所述的磁盘缓存系统,其特征在于,所述数据块元数据维护模块包括初始化数据块元数据存储区域子模块、生成数据块元数据子模块、写数据块元数据子模块、读数据块元数据子模块和更新数据块元数据子模块,其中:
所述初始化数据块元数据存储区域子模块:用于将固态盘缓存存储空间分割成定长大小的数据块,根据缓存空间大小计算所需元数据存储空间的大小,再求出所需的数据块的数量,在缓存空间的头部开辟出相应数量数据块的元数据存储区域;
所述生成数据块元数据子模块:用于在一个不在固态盘缓存中的数据块需要被写入固态盘时,生成新的数据块元数据,新的数据块元数据包括数据块的指纹、数据块的大小、数据块的状态、数据块的生成时间、数据块的元数据在数据块元数据存储区域的索引号和数据块的存储地址,并转写数据块元数据子模块;
所述写数据块元数据子模块:用于将新生成的数据块元数据写入到数据块元数据存储区域的空闲数据块中,同时将该数据块元数据添加到内存中的LRU栈的栈顶;
所述读数据块元数据子模块:用于根据数据块的元数据在数据块元数据存储区域的索引号读取数据块的元数据,并转更新数据块元数据子模块;
所述更新数据块元数据子模块:用于修改读取出的数据块元数据中的相应项,并将修改的结果写回固态盘的数据块元数据存储区域和内存中的LRU栈中对应的存储位置。
3.如权利要求1或2所述的磁盘缓存系统,其特征在于,所述固态盘数据块替换模块包括固态盘缓存空闲数据块判断子模块、栈底数据块元数据读取子模块、脏数据块判断子模块、脏数据块写回磁盘子模块,以及新数据块和元数据写入缓存子模块,其中:
所述固态盘缓存空闲数据块判断子模块:用于根据内存中的空闲数据块位图,判断固态盘缓存中是否有空闲数据块,是则表明不需要将缓存中的某个数据块替换出去,转新数据块和元数据写入缓存子模块;否则转栈底数据块元数据读取子模块;
所述栈底数据块元数据读取子模块:用于读取内存中LRU栈栈底的数据块元数据,其中该数据块元数据所对应的数据块是最近最久没有访问的,根据LRU算法原理,在缓存空间不足时,理应最先被替换出去;
所述脏数据块判断子模块:用于判断被替换数据块是否为脏数据块,是则转脏数据块写回磁盘子模块;否则说明该被替换的数据块不需要写回磁盘,转新数据块和元数据写入缓存子模块;
所述脏数据块写回磁盘子模块:用于将脏数据块判断子模块判断为脏的数据块写回磁盘,并清除LRU栈中对应的数据块的元数据信息;
所述新数据块和元数据写入缓存子模块:用于为新的数据块生成元数据信息,并将其添加到LRU栈的栈顶,然后将新数据块写入到被替换数据块在缓存中的对应存储位置。
4.如权利要求1至3任一项所述的磁盘缓存系统,其特征在于,所述脏数据块写回磁盘模块包括缓存内脏数据块数量计算子模块、脏数据块数阈值判断子模块、各脏数据块写回延时判断子模块、脏数据块集中写回子模块,以及脏数据块元数据更新子模块,其中:
所述脏数据块写回磁盘模块:用于根据位于内存的LRU栈中各数据块的元数据信息,统计缓存中总的脏块数量;其中所述元数据信息包括数据块的状态信息;
所述脏数据块数阈值判断子模块:用于判断缓存中脏数据块的数量是否超过脏数据块阈值,是则说明缓存中有过多的脏块,可能会造成数据的不一致,则需要集中把缓存中的脏块写回到磁盘,转脏数据块集中写回子模块;
所述各脏数据块写回延时判断子模块:用于根据各数据块中的状态信息和数据块生成时间信息,求得各脏数据块上一次访问距离现在的时延,并判断这个时延是否超过了脏数据块写回延时,是则转脏数据块集中写回子模块;
所述脏数据块集中写回子模块:用于把需要写回磁盘的脏数据块分类集中写回到磁盘,并转脏数据块元数据更新子模块;
所述脏数据块元数据更新子模块:用于在脏数据块被写回磁盘后,需要更新自己的状态为非脏块,以保证元数据的一致性,将内存中的LRU栈的元数据和固态盘上元数据存储区域中的元数据都更新为非脏块状态。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410138635.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:电池组以及电池组的制造方法
- 下一篇:金合金中银量的测定方法