一种面向SSD的非易失缓存机制的制作方法

文档序号:11950061阅读:346来源:国知局
一种面向SSD的非易失缓存机制的制作方法与工艺

本发明适用于SSD非易失缓存技术领域,提供了一种新的面向SSD的非易失缓存机制,提高SSD的随机写入性能,以及有效缓解SSD的读干扰问题。



背景技术:

存储系统作为计算机系统的重要组成部分,一直以来都是影响计算机系统整体性能的重要因素。进入二十一世纪以来,随着信息技术的迅猛发展,尤其是互联网技术的发展和广泛应用,社会的生产和人们的生活产生了越来越多的数据,也越来越依赖于数据,大数据时代已经到来。大数据对存储领域带来了新的挑战。

由于应用的数据量不断的增大,这就使用户对存储系统的容量要求越来越高。根据IDC估算,2005年全球数据量仅为130EB,2011年达到1.8ZB,2014年将增长到7ZB,全球信息总量每两年就会增长一倍。2010年IDC预计2020年全球数据总量将为35ZB,但是在2012年末又将值修订为40ZB,这也就是说,从2010年到2020年数据量将会有50倍的增长。

另一方面,存储容量并不是大数据对存储系统的唯一需求,大数据同时还对存储系统的性能提出了更高更加苛刻的要求。信息时代,信息(即数据)就是资源,掌握信息就掌握了主动,就有机会获得大的发展。而掌握信息不等同于存储信息,信息的存储不是目的,信息的处理,即从信息中获取价值才是大数据研究的最终目标。大数据不同于传统意义上的大规模数据,大数据具有体量巨大、种类繁多、价值密度低和处理速度快的特点。这些特点就决定了大数据处理的特点,即从大量的不同的数据中快速找到有价值的数据,也就对存储系统的性能(包括了数据的读写速度和查找效率)提出了更高的要求。

随着基于NAND Flash的SSD 进入外存储市场,其完全不同于磁盘的新颖特性为优化存储结构创造了新契机。因为SSD 是半导体设备不需要寻道延时,其随机访问性能高出磁盘两个数量级。不仅如此,SSD 还有能耗小、存储密度高、恶劣环境适应性强等特点。

然而由于SSD本身的缺点:价格高,寿命有限,即有限的擦除次数,读干扰,随机写性能差等的问题,限制了SSD的使用和发展。如何能降低这些缺点对SSD的影响就显得尤为重要和有意义。



技术实现要素:

本发明所要解决的技术问题是面向SSD的非易失缓存机制,通过将SSD划分出一块大的缓冲区,小的随机写请求首先写到小的RAM buffer,然后当RAM buffer写满之后,将这些写请求一起以日志的形式顺序写入到缓冲区,然后后台将缓冲区的数据写回到数据区,这样能有效提高SSD的随机写入性能,缓存机制同样会对读干扰问题进行优化,这其中的缓存机制包括:I/O检测算法,过滤掉顺序和大块的I/O;一种面向数据区的垃圾回收策略,使缓存的写也能顺序的写入数据区,同时对缓存区中剩余的数据也以一种顺序的方式再次写入缓存;同时为了解决SSD读干扰问题,发明了一种读缓存策略;最终实现一个基于device mapper的日志结构的SSD缓存SSD系统。

本发明的技术方案是:由于SSD本身的缺点:价格高,寿命有限,即有限的擦除次数,读干扰,随机写性能差等的问题,限制了SSD的使用和发展。所以本发明提出将SSD划分出一块大的缓冲区,小的随机写请求首先写到小的RAM buffer,然后当RAM buffer写满之后,将这些写请求一起以日志的形式顺序写入到缓冲区 ,然后后台将缓冲区的数据写回到数据区,这样能有效提高SSD的随机写入性能,缓存机制同样会对读干扰问题进行优化。

所以,本发明中缓存机制包括:I/O检测算法,过滤掉顺序和大块的I/O;一种面向数据区的垃圾回收策略,使缓存的写也能顺序的写入数据区,同时对缓存区中剩余的数据也以一种顺序的方式再次写入缓存;同时为了解决SSD读干扰问题,发明了一种读缓存策略;最终实现一个基于device mapper的日志结构的SSD缓存SSD系统。

本发明涉及的缓存机制的原理和流程见附图说明。

使用本发明能达到以下有益效果:

1:保证系统原有的读性能和顺序写性能:本发明主要是针对于随机写性能以及读干扰问题提出了一种面向SSD的缓存机制,并没有对SSD原有的读性能和顺序写性能造成影响。

2:提升SSD系统随机写性能:由于对SSD的写都是以顺序的形式进行,所以对于SSD的随机写性能会有很大的提升。

3:降低SSD 读干扰问题的影响:本发明中的读缓存机制会有效减少SSD读干扰对SSD性能的影响。

4:延长SSD的寿命:由于所有的写都是顺序的,所以SSD的垃圾回收和随机更新问题会减少,从而延长SSD的寿命。

附图说明

图1是缓存机制的整体结构图;

图2是I/O检测算法图;

图3是面向数据区的垃圾回收策略图;

图4是读缓存策略图。

具体实施方式

1:基于device mapper机制的实现

图1是缓存机制的整体结构图。

Target type是一种模块化的插件接口,允许自定义。SCS(SSD缓存SSD)的机制,就是利用这个接口定义了一种新的target type,将缓存区和数据区定义为两种新的target device,设计了缓存的映射规则,逻辑组合成一种新的块设备。从而通过映射表,来自上层的数据可以根据规则发送到不同的设备中去,从而实现数据的重定向。具体的步骤为:

1、上层的写请求首先经过I/O顺序检测,缓存随机的I/O到内存中小块的RAM buffer中;

2、RAM buffer写满之后,将这些写一起顺序日志的形式顺序写入到SSD缓冲区;

3、缓冲区在空闲的时候或者缓存的数据达到一定的阈值的时候,通过工作队列按照面向数据区的垃圾回收策略写回到数据区。

4、如果上层是读请求,则根据读缓存策略对读请求进行处理。

2:I/O检测算法

图2是I/O检测算法图。

2.1切割bio:接收上层系统的bio,如果bio大于阈值大小,表明这是个大块的I/O,将它直接写到原始的数据区,否则将当前bio切割为4KB大小的bio

2.2初始化数组,接收上层系统的bio;

2.3当数组的bio数量达到数组阈值,检测数组中bio的连续性,如果是连续的,表明当前是连续I/O,将当前的数据直接写入到原始的数据区,否则先写到缓冲区;

3:面向数据区的垃圾回收策略

图3是面向数据区的垃圾回收策略图。

该机制与传统方法的一个重要区别是:采用面向数据区域的垃圾回收策略。该策略先根据数据区的更新情况作一次垃圾回收,再根据缓冲区的有效数据残留情况作一次垃圾回收。具体做法如下:

3.1、考虑数据区数据更新情况的垃圾回收

将缓冲区的数据迁移到数据区时,要避免任何的随机写操作。具体做法是,将数据区划分成段(Slab,一个段包含多个Block),将缓冲区一个日志块(segment)的数据迁移到数据区的某个段中时,先将该段中所有的有效数据块读出来,然后与缓冲区中即将迁移的块合并,最终将合并成的整个段写到数据区中。这种做法能够保证数据区没有任何随机写,都是整段顺序写,SSD内部的垃圾回收开销很低。为了做到这一点,需要维护一个位数组,记录数据区中所有数据块的更新情况,以便在缓冲区作垃圾回收时,能够在数据区选择一个包含更新数据最多的段,这样能够使缓冲区释放更多的空间。

3.2、考虑缓冲区有效数据残留情况的垃圾回收

经过步骤1的垃圾回收,缓冲区还会残留一些有效数据,它们在数据区的对应段中只有很少数据被更新。本步骤将这些数据收集起来,再次顺序写到缓冲区中。

以上做法导致对SSD的所有写操作都是顺序的大块写,而传统方法只保证用户数据写到缓冲区中是顺序写,将缓冲区中的数据迁移到数据区中是随机写。以上做法会导致垃圾回收时的随机读,但随机读对SSD不是问题。

4:读缓存策略

图3是面向数据区的垃圾回收策略图。

通过将散落在数据区的频繁被读取的数据以日志的方式顺序写入到相对较小的缓存区之中,这样首先就会对原来的数据起到了保护作用;与此同时,缓存在小区域的读数据,由此而触发的随机更新也会减少。因为频繁读取的数据都在一个小的范围内,发生因为读干扰而产生的迁移和更新会减少,因为多个更新会组合成一个大的更新,从而减少更新次数。具体流程为:

4.1、检查缓存映射表:当前读请求到来的时候,首先检查内存中的映射表,检测该读请求是否命中;

4.2、如果读请求命中,从相应的缓冲区读取数据并返回;

4.3、如果读请求没命中,从数据区读取数据并返回,同时将该读请求写入到缓冲区,其写入方式和正常的写入一样。

实验效果

基于本发明的实验测试表明,对于一个写满的单盘SSD性能来说,SSD系统的随机写性能和原来相比提高了将近4倍。

由此可以看出,本发明提出的面向SSD的非易失缓存机制,达到了提升性能的效果。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1