利用固态硬盘作为计算机写缓存的存储系统以及相应的管理调度方法

文档序号:6438132阅读:206来源:国知局
专利名称:利用固态硬盘作为计算机写缓存的存储系统以及相应的管理调度方法
技术领域
本发明涉及数据信息处理,特别是涉及一种利用固态硬盘作为计算机写缓存的存储系统及相应的管理调度方法。
背景技术
磁盘缓慢的寻道时间已经成为大型数据处理应用中的瓶颈所在。相比CPU纳秒级别的处理速度,磁盘毫秒级的寻道时间严重影响了整个系统的响应时间和吞吐率。固态硬盘作为一种新型的电学存储介质,具有极高的随机访问速度,被认为是下一代的主流存储设备。然而我们注意到,当前的固态硬盘要完全取代磁盘仍然是不现实的,究其原因有以下两点首先固态硬盘的容量较小,同等价格能购买的固态硬盘的容量只有磁盘的几百分之一甚至几千分之一,完全使用固态硬盘来存储所有数据的成本是极其高昂的;其次固态硬盘的存储芯片闪存具有读写不对称性,对闪存进行小数据量的随机写往往需要对较大范围进行一次很慢的擦除操作,因此当前的固态硬盘尽管拥有极其强劲的随机读和顺序读写的性能,但其随机写的性能相对磁盘并没有明显的优势,是固态硬盘的性能瓶颈所在。在这一背景下,如何利用好固态硬盘,使之在整个存储架构中充分发挥其优势、避免其缺陷是一个具有重要意义的技术问题,是提高计算机系统在大规模数据应用中的性能的关键所在。

发明内容
本发明目的在于提供一种利用固态硬盘作为计算机写缓存的存储系统,以及基于其上的调度方法,充分发挥固态硬盘高带宽以及高速随机读的优势、避免其低速随机写的劣势,大幅度提闻系统的响应性能。为达到上述目标,本发明公开了一种利用固态硬盘作为计算机写缓存的存储系统,包括—块或多块小容量、访问速度较快的固态硬盘设备,和一块或多块大容量、访问速度较慢的传统磁盘设备,上述设备通过标准PCI_E、SAS或SCSI接口之一与所述计算机的总线相连,并对所述计算机系统可见。上述存储系统,其特征还在于所述计算机的初始数据均存储在上述磁盘上,其中所述固态硬盘在系统运行中动态缓存计算机最近更新数据,同时在初始状态下,所述固态硬盘的容量大小对系统的正确性没有影响。上述存储系统,其特征也在于在所述计算机的系统在运行过程中,可以不定期动态增加固态硬盘的数目,提高系统的性能;但已有的所述固态硬盘不可被动态移除。此外,本发明还公开了一种用于对上述存储系统进行管理调度的方法,所述方法包括所有的固态硬盘被格式化为分页结构,每个页面的长度与所述计算机系统内外存交换页面相同,全部的所述固态硬盘上的页面被当作一个整体的队列进行顺序循环使用,当有脏页面从内存中排出时,首先将它写回所述队列的最后一个页面,而不是直接写回所述固态磁盘;在内存中维护一个固态硬盘的地址映射表,当页面写回所述固态硬盘后,其页面号、固态硬盘偏移被作为一个二元组索引项,并维持在所述地址映射表中,而若一个页面被写回多次,则只有最后一次的索引项有效;当需要访问外存数据时,首先在所述地址映射表中查看包含该页面号的索引项是 否存在,如果存在,则访问相应索引项中的固态硬盘的偏移,如果不存在,则访问磁盘的地址。上述管理调度方法还包括步骤由于设备对计算机系统可见,因此所述调度方法可以按实际系统需求,在操作系统、文件系统、数据库以及具体应用程序等不同层次实现。上述管理调度方法还包括当所述整个计算机系统发生崩溃并重启时,需要首先扫描所述固态硬盘,并根据其中所有缓存的所述页面重建地址映射表,再进行系统的正常运行。本发明解决了如何充分利用容量较小但性能较快的固态硬盘来优化计算机存储系统响应能力的问题,具有的有益效果是I)消除了原来的计算机系统中对磁盘的随机写操作,有效地降低了磁盘的寻道压力,将随机写转换为顺序写,提高了系统性能。2)对最近更新的数据利用固态硬盘进行缓存,充分发挥了固态硬盘的高速随机读能力,减少了原来的计算机系统中对磁盘的随机读操作,进一步提高了系统性能。3)对固态硬盘的操作只有顺序读写以及随机读,避开了固态硬盘随机写较较弱所带来的性能瓶颈。4)本发明中的系统和方法的基础假设是标准的基于内外存的计算机结构以及固态硬盘的基础特征,不依赖于任何具体的固态硬盘型号、计算机指令体系、操作系统等,也可以在操作系统、文件系统、数据库以及具体应用程序等各个层次灵活实现,具有充分的可移植性。


图I是系统整体框架图。图2是地址映射表结构示意图。图3是系统脏页面回写的工作流程图。图4是系统访问页面的工作流程图。图5是系统后台回写线程的工作流程图。
具体实施例方式下面结合附图及具体实施方式
对本发明作进一步的描述如图I所示,给出了整个存储系统的结构示意图。其存储设备包含一块或多块固态硬盘设备,以及一块或多块传统磁盘设备,所有的设备通过PCI-E、SATA或SCSI等标准接口与计算机总线相连,设备的具体数量视总线的可扩展性决定。存储系统对外完全透明,所有的存储设备及其所属于的设备类型均被格式化为分页结构,且可被计算机识别,计算机以固定长度的页面作为内存和外存之间的基本交换单位,页面的长度为2的幂次数千字节,一般在IKB到32KB之间。计算机可以向任一存储设备请求某一偏移开始的页面内容,将页面读取到内存中,并访问其中的数据。所有的固态硬盘上的页面被组织为一个循环的队列结构,初始状态下队列的首尾相等,当有页面写入时,队列尾向后移动,当越过边界时再回到队列头部。当队列尾接近队列头时,则说明所有固态硬盘的容量快要被使用完。存储系统在初始化时,其存储设备可以只包括磁盘,原始数据被加载到磁盘当中。当系统开始运行后,可以不定期地向系统中增加一块或多块固态硬盘设备,这些固态硬盘设备可以在计算机运行状态下增加,也可以先停止计算机的运行,增加固态硬盘设备并再次启动计算机,其过程视设备的具体类型而定,增加的固态硬盘也同样被分页后再插入队列中。所有已有的固态硬盘设备在运行后不可再被移除。同时系统需要在内存中开辟一定区域,维护一张地址映射表,供管理调度使用。如图2所示,给出了地址映射表的结构示意图。地址映射表是哈希表的结构,其哈希索引键值为页面号,其结点为(页面号、固态硬盘偏移)的二元组索引项。索引项中,页面号是指页面的物理标识,而固态硬盘偏移是指本页面在固态硬盘中的偏移,通过这一偏移量可以迅速定位到相应的页面在固态硬盘中的位置。所有的索引项以页面号计算哈希值,属于同一个哈希桶的索引项以单项链表的形式被维护在一起。如图3所示,该图为本发明提出的单个脏页面回写的工作流程,本流程由单个工作线程执行,其详细描述如下301将页面写回到固态硬盘队列尾的页面中,这个动作始终顺序写固态硬盘,可以良好的利用固态硬盘的高带宽。在多线程并发的工作环境下,本步骤对于队列尾位置的访问和修改需要临界区保护。302此时检查队列尾与队列头之间的距离是否小于回写阈值。回写阈值一般要大于在回写线程一次工作的时间内,其它工作线程所回写的页面数目,否则在回写线程工作完成前,其它线程的回写请求需要被阻塞。303如果302中所检查的距离小于回写阈值,此时回写线程被唤醒,将储存在队列中的脏页面写回硬盘。需要注意的是,回写线程回写的过程中,并不阻碍工作线程继续向固态硬盘中写回数据。304检查本页面在地址映射表中是否已经有索引项,这个过程首先通过页面号计算出哈希值,再由相应的哈希索引入口进行单向链表的查找。由于页面号是一个非常有规律的整数值,因此良好的哈希函数可以将这个查找代价降到接近0(1)复杂度。305如果找到了相应的索引项,则更新索引项中的相应偏移值。306如果没有找到相应的索引项,则生成一个将的索引项,并将(页面号、偏移值)写入。如图4所示,该图为本发明提出的读取页面的工作流程,本流程由单个工作线程执行,其详细描述如下、
401首先检查本页面在地址映射表中是否有索引项,这个过程也是先通过页面号计算出哈希值,再由相应的哈希索引入口进行单向链表的查找。402如果索引项存在,则说明这个页面的最新版本在固态硬盘中,此时根据索引项的偏移读取固态硬盘中的数据。403如果索引项 不存在,则说明这个页面没有被回写到固态硬盘中过,此时根据页面号去磁盘读取数据。如图5所示,该图为本发明所提出的回写线程的工作流程图,本流程由后台回写线程实现,其详细描述如下501获取当前固态硬盘队列尾的位置,这个动作需要在临界区保护下完成。502将当前地址映射表中所有的索引项按页面号进行排序,由于索引项的长度很小,因此这个动作可以在内存中进行。503检查排序后的索引项,如果两个索引项的页面号是连续的,即它们原始数据在磁盘中的位置是连续的,则把它们合并为一个更长的页面。504按排序的索引项进行回写,其具体步骤为读取一个索引项,并从固态硬盘中读取偏移位置所在的数据,再回写到磁盘的相应页面上。可以看到这里对固态硬盘的访问序列是随机读,而对磁盘的访问特征是顺序写,都符合它们的性能特征。 回写过的索引项从地址映射表中被摘除。505最后将当前队列的队列首更新为在501步骤中所获取的原队列尾,这个动作也在临界区保护下进行。由于在回写过程中仍然有工作线程会向队列中写入一些最新回写的页面,因此这些页面的索引项信息仍然需要被保留。虽然附图和前述说明给出了本发明的实施例。但可以理解的是,本领域技术人员将理解可以将这种组件中的一个或多个组件很好地组合成单个功能组件。在替换方案中,特定的组件可以分成多个功能组件,或反之。同时,本发明的范围并不受这些特定实例的限制。多种变化都是可能的,例如结构等上的差异,而无论其是否在说明书中被清晰地给出。本发明的范围至少与所附权利要求给出的范围一样宽。
权利要求
1.ー种利用固态硬盘作为计算机写缓存的存储系统,包括 ー块或多块小容量、访问速度较快的固态硬盘设备,和 ー块或多块大容量、访问速度较慢的传统磁盘设备, 上述设备通过标准PCI-E、SAS或SCSI接ロ之一与所述计算机的总线相连,并对所述计算机系统可见。
2.根据权利要求I所述的存储系统,其特征在于 所述计算机的初始数据均存储在上述磁盘上,其中所述固态硬盘在系统运行中动态缓存计算机最近更新数据,同时在初始状态下,所述固态硬盘的容量大小对系统的正确性没有影响。
3.根据权利要求I所述的存储系统,其特征在于 在所述计算机的系统在运行过程中,可以不定期动态增加固态硬盘的数目,提高系统的性能;但已有的所述固态硬盘不可被动态移除。
4.一种对权利要求1-3中的任何一个进行管理调度的方法,其特征在于 所有的固态硬盘被格式化为分页结构,每个页面的长度与所述计算机系统内外存交换页面相同,全部的所述固态硬盘上的页面被当作一个整体的队列进行顺序循环使用,当有脏页面从内存中排出时,首先将它写回所述队列的最后ー个页面,而不是直接写回所述固态磁盘; 在内存中维护ー个固态硬盘的地址映射表,当页面写回所述固态硬盘后,其页面号、固态硬盘偏移被作为ー个ニ元组索引项,并维持在所述地址映射表中,而若ー个页面被写回多次,则只有最后一次的索引项有效; 当需要访问外存数据时,首先在所述地址映射表中查看包含该页面号的索引项是否存在,如果存在,则访问相应索引项中的固态硬盘的偏移,如果不存在,则访问磁盘的地址; 而当所有的固态硬盘设备的可用容量均低于预设的阈值时,由后台的回写线程将所述地址映射表中的索引项按页面号进行重排,将相邻的页面合井,并将它们按顺序写回磁盘中。
5.根据权利要求4所述的管理调度方法,其特征在干 由于权利要求1-3中任意一个所涉及的设备对计算机系统可见,因此所述调度方法可以按实际系统需求,在操作系统、文件系统、数据库以及具体应用程序等不同层次实现。
6.根据4或5的管理调度方法,其特征在于 当所述整个计算机系统发生崩溃并重启时,需要首先扫描所述固态硬盘,井根据其中所有缓存的所述页面重建地址映射表,再进行系统的正常运行。
全文摘要
本发明公开了一种利用固态硬盘作为计算机写缓存的存储系统及相应的管理调度方法。所述存储系统包括,一块或多块小容量、访问速度较快的固态硬盘设备,和一块或多块大容量、访问速度较慢的传统磁盘设备,上述设备通过标准PCI-E、SAS或SCSI接口之一与所述计算机的总线相连,并对所述计算机系统可见。
文档编号G06F12/06GK102637147SQ20111035835
公开日2012年8月15日 申请日期2011年11月14日 优先权日2011年11月14日
发明者何清法, 冯柯, 徐昶, 毛云青, 王嘉春, 蒋志勇, 顾云苏, 饶路 申请人:天津神舟通用数据技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1