一种基于SSD缓存的RAID5/6写优化技术研究

2018-10-17 12:25朱承浩万继光
小型微型计算机系统 2018年10期
关键词:磁盘校验垃圾

詹 玲,吴 畏,王 方,朱承浩,万继光

1(文华学院 信息学部计算机系,武汉 430074)

2(中国舰船研究设计中心,武汉 430064)

3(华中科技大学 武汉光电国家实验室,武汉 430074)

1 前 言

在信息产业高速发展的当今,数据存储业面临着巨大挑战.面对每天爆炸式增长的海量数据,传统的本地存储系统已经成为影响信息技术进一步发展的重要因素.尤其是在数据存储系统中大量应用的机械磁盘,其读写性能增长速度远远落后于处理器、内存以及网络带宽的增长速度.在过去十年中,CPU的性能提升了8-10倍,DRAM速度提升7-9倍,网络速度提升100倍,总线速度增长20倍,而磁盘速度却仅仅增长了1.2倍[1].磁盘已经成为存储系统的性能瓶颈,制约了信息系统的快速发展.

为了提高存储系统的性能,基于NAND闪存的SSD被广泛的应用到存储系统中.SSD具有读取速度快、延时小、能耗低、可靠性高等特点,在企业数据中心中,使用包含有SSD的服务器正变得越来越普遍.

SSD有着很多的优点,但是由于其价格较高,且空间容量相对较小,一直无法完全替换磁盘存储设备.所以为了利用SSD高效I/O的特性,一般采用SSD与磁盘相结合使用的方法,利用SSD作为磁盘的缓存,来提升系统的性能.

由于SSD的物理特性,在SSD中无法直接完成覆盖写操作.只能先擦后写、异地更新,即将原来的旧数据通过修改映射,移入SSD保留空间并置为无效,再在新的位置写入新的数据,保留区的数据在垃圾回收时被擦除.这一特性导致了SSD的写性能要差于读性能.本文将利用SSD这个特性来对RAID系统进行性能优化.

1988年,美国加州大学伯克利分校的Patterson等人[2]提出了RAID概念,RAID 的定义为"价格便宜且具有容错能力的磁盘阵列"(Redundant Arrays of Inexpensive Disks).RAID能提高存储系统的性能和可靠性主要是利用I/O的并行处理和冗余技术,在真实的应用环境中,一般都使用冗余磁盘阵列来提高系统的可靠性.RAID5/6是目前在存储系统中应用最为广泛的RAID级别.

RAID虽然应用广泛,但其在小写过程中性能较差.尤其在RAID5/6中,小写性能问题更加突出.针对小写过程,RAID采用的是读-修改-写(Read-Modify-Write, RMW)模式,此过程需要读取原来的数据块和该数据块的校验值,与新的数据进行XOR操作后,将计算结果再写入RAID中相应位置,频繁磁盘I/O导致系统写性能的急剧下降.因此,RAID5/6等校验阵列的小写性能优化,一直是学术界和企业界研究的重点.

本文将重点研究SSD在RAID5/6存储系统中做缓存时,如何采用一些新的技术来提高系统的性能.特别是专门针对SSD的物理特性,提出了一些用于RAID5/6储系统小写性能优化的方法.

2 相关研究

针对RAID5/6等校验阵列的小写性能优化,学术界和企业界提出过很多优化小写性能的方法.

2.1 RAID相关研究

AutoRAID[3]是HP公司提出的一种针对在线事务处理OLTP的高性能和高可靠的磁盘阵列系统.AutoRAID根据RAID不同级别的优缺点,在磁盘阵列控制器集中实现了两级存储,RAID1和RAID5;在上层存储中采用RAID1来保存热点数据,为访问频繁的数据提供最佳的读写性能和镜像容错功能;在下层存储中使用RAID5来保存冷数据,为那些不被经常访问的数据提供较大的存储空间,并且具有比较高的存储的可靠性和空间利用率.

另一种提高校验磁盘阵列小写性能的方法是缓存技术.在利用SSD缓存来优化RAID小写性能方面,Eunjae Lee[4]设计了一种名为LeavO的SSD缓存来解决RAID小写问题.LeavO在SSD缓存中保存写数据的最新版本和旧版本,这样在将写数据写回到RAID中时,就可以从SSD缓存中读取最新数据和旧数据来计算新校验值,从而避免了从磁盘中读旧数据带来的磁盘操作,提高RAID小写性能.

2.2 SSD特性研究

由于SSD的先擦除再写的特性,所以必需有一个好的垃圾回收算法对这些无效块进行擦除操作.Chiang[5]等人提出一种名为Cost Age Time(CAT)的SSD垃圾回收算法.该算法通过考虑SSD中无效页的比例来减少开销.同时,CAT算法还设计考虑了损耗均衡.算法根据公式(1)来计算块的权值,对权值小的块进行回收:

(1)

其中,u表示SSD块中有效页所占的比例,age是自从最近一次更新到当前的时间,CT 表示块的擦除次数.

CAT算法选择有效页占例低,最近更新时间长,擦除次数较少的块进行垃圾回收.这类块因其有效页所占比例低,需要迁移的有效页少,且age值大,CT值小,说明该块长时间未被使用,可以较好地保证SSD内部的损耗均衡.

2.3 缓存算法研究

传统的基于DRAM缓存淘汰算法主要有LRU、LFU、ARC[6]、LIRS[7]、MC2[8]等.它们主要考虑的是数据访问的时间局部性和空间局部性,没有针对SSD的特性做出专门的设计.所以针对SSD缓存,一些新的缓存算法被相继提出:

CFLRU[9]是Park等提出了一种专门针对闪存的页级缓存算法.其主要思路是因为脏数据页的替换代价要高于干净页,因而在缓存替换时尽可能选择干净页来淘汰,而将脏页留在缓存中,从而减少脏页在写回时对闪存的写操作.CFLRU将LRU队列分成两个部分,分别为工作区和干净页优先替换区.干净页优先替换区位于LRU队列尾部,淘汰时优先淘汰干净页,在没有干净页的情况下,则淘汰LRU队列末尾的数据页.干净页优先淘汰区的大小值w对算法性能影响很大,如果w=0,CFLRU退化为LRU策略;如果w过大,则会影响缓存命中率.

BPLRU[10]是Kim等人在FAB算法基础上提出的一种缓存算法.它也将来自同一数据块的数据页看做一个整体,按照块中页的数量排序,优先淘汰页数量较多的块.与FAB不同的是,在淘汰时,BPLRU会从flash中读取相关的数据页,将要淘汰的数据块填满,从而保证每次对闪存的写都是整块写,这样既能提高闪存的写入速度,也能减少垃圾回收时的数据迁移量,提高了垃圾回收性能.

3 系统结构设计

3.1 写优化技术主要原理

前言中说明了RAID和SSD的写过程.那么在SSD缓存的系统中,能否利用SSD保留区中的无效数据来减少RAID小写过程中的磁盘I/O次数?本文利用这些无效数据来参与RAID的校验计算,借此减少磁盘I/O,提升系统的性能.

由于RAID5与RAID6的结构相似性,优化方式相同所以下文以RAID5为例来具体说明设计方法.

图1 RMW模式下的校验更新优化Fig.1 Optmizing parity update operations under RMW mode

如图1所示,当SSD缓存将其中的脏数据1′写回到RAID系统中时,根据前述原则,要采用RMW模式来重新计算校验值P0.需要从RAID中读取旧数据1和旧的校验值P0,然后和新数据1′做异或运算得出新的校验值P0′.但是此时发现,在SSD缓存中的保留空间中,数据页1和RAID系统中的数据块1是有相同的内容,也就是说SSD中的无效数据页1和RAID系统中的数据块1是一样的.那么为什么不从SSD中的保留区中读取这个无效数据页来计算新校验值呢.这样做的好处是可以减少校验更新时的磁盘操作,并且从SSD中读取数据块的速度要比从RAID系统中的磁盘上读取要快很多,这样就可以提高整个校验值更新的速度了,进而提高系统的性能.

对于在SSD保留区中的类似数据页1的这种数据页,可以将其标记出来,在垃圾回收操作时,尽量先不擦除这些数据页,等到它们在新的校验值更新操作被利用之后,再将它们标记为无效页进行擦除操作,也就是说这些数据页的擦除操作被延迟了.这种在保留区中可以被用来优化校验值更新的数据页称之为invalid-but-useful页,而这利用invalid-but-useful页来优化RAID写性能的技术称之为延迟擦除(Delayed Erasing)技术.

图2 RCW模式下的校验更新优化Fig.2 Optmizing parity update operations under RCW mode

除了上述这种利用保留区中的invalid-but-useful页来优化校验值更新操作外,对于RCW模式的校验更新,也设计了一种将来自同一个条带的数据块收集起来合并写回的方法来优化校验值更新操作.具体方法如图2所示,当SSD中的数据页6′、7′要同时写回到RAID系统中时,发现和它们来自同一个条带的数据页4和5也在SSD缓存中,此时就可以从SSD中读取数据页4和5来计算新的校验值,避免了从RAID系统中的磁盘上读取数据页4和5,从而提高了校验值更新的性能,也提高了系统的性能.当新的校验值P1′计算出来后,和新数据页6′、7′一起写到RAID系统中.在上述过程中,总共减少了两次磁盘读操作,从而减少了校验更新延迟,较好地降低了写RAID操作导致的开销.

3.2 DE-FTL页状态管理算法

由于在SSD中加入了新的页逻辑转态,所以需要一个新的FTL,命名为DE-FTL(Delayed Erasing Flash Translation Layer).DE-FTL实现的关键在于:SSD页管理算法的设计和SSD垃圾回收算法的设计.

在SSD中定义如下5个页的状态:

1) 空白页(free),页中没有任何数据;

2) 干净数据页(clean),页中数据为干净数据,未被修改;

3) 脏数据页(dirty),页中数据为脏数据,即用户写到缓存中,但未写到RAID中数据;

4) 无效但有用数据页(invalid-but-useful),页中数据已被修改写入其它页,此页可以用来优化RAID小写;

5) 无效数据页(invalid),页中数据为无效.

在每一个页的元数据添加一个标志位来标识该数据页的状态信息.

图3 页状态转换图Fig.3 Page states transition

图3表示数据页不断的读写I/O过程中状态转换的过程.

SSD中空白的页状态记为〈free〉,当SSD缓存从RAID中预取一个数据页写入该free块中时,其状态就由〈free〉转变为〈clean〉,即过程①.

对于干净数据页,主要有以下两种状态转变,一是该页被淘汰出缓存,转变为〈invalid〉状态,即过程②;另一种是该干净数据页接受了一个写请求,SSD缓存会先选择一个空白页来写新的数据,此时该干净数据页其状态转变为〈invalid-but-useful〉,即过程③.同时写入新数据的空白页其状态由〈free〉转变为〈dirty〉,即过程④.这个invalid-but-useful 数据页和这dirty数据页是对应的,在dirty数据页写回到RAID系统中时,可以利用该invalid-but-useful 数据页来优化校验值更新过程.

对于invalid-but-useful数据页,其状态在两种情况下会转变为〈invalid〉,即过程⑤:一是该数据页在脏数据写回到RAID系统时的校验更新中被使用;另一种是SSD保留区中的invalid-but-useful数据页超过预定值时,需淘汰部分数据页,被淘汰数据页其状态将转变为 〈invalid〉,然后进行垃圾回收.由于SSD的保留区空间有限,当保留区空间不足时需要进行垃圾回收操作.

对于状态为〈dirty〉的脏数据页,有两种状态转变,一是该数据页被写回RAID,状态转变为〈clean〉,即过程⑥;另一种是该数据接受了新请求,需要一个新的空白页进行数据存储,此数据页变为无效,状态转变为〈invalid〉,即过程⑦.

对于invalid数据页,在通过垃圾回收处理后,其状态将转变为〈free〉等待写入新的数据,即过程⑧.

以上即是DE-FTL页状态管理算法.基于此算法,数据页在接受不同的I/O请求和操作时,其状态进行相应地切换.

3.3 DE-FTL垃圾回收算法

延迟擦除技术需要利用处于invalid-but-useful状态的数据页来优化RAID系统的写性能.为了使用这些数据页,垃圾回收过程中,它们在被利用之前尽量不被擦除.所以,DE-FTL中的垃圾回收算法,不仅要考虑valid数据页(valid页是clean页和dirty页的总和),还需考虑invalid-but-useful数据页在数据块中的比重.因此,基于CAT算法,提出了一个改进型的公式(2)所示:

(2)

公式(2)在公式(1)基础上,增加了两个变量UR和λ,UR表示invalid-but-useful数据页所占的比例;系数λ主要作用是来调节UR对value值的影响,其取值为[0,1],当其值为0时,就和CAT算法相同.预设的λ值为0.5.

如图4所示,当前SSD中有3个块(block1,block2和block3).其中,块1包含2个valid数据页和4个invalid数据页;块2包含2个valid数据页,3个invalid-but-useful数据页和1个invalid数据页;块3包含3个invalid数据页,2个invalid-but-useful数据页和1个invalid数据页.假设这3个块的age和CT都相等,分别为1和10.当垃圾回收时,根据CAT算法,块1,块2和块3的Value值基于公式(1)经计算后分别为5,5,10.块1和块2的Value值相等而小于块3,那么块1和块2将会被选作进行垃圾回收.而在DE-FTL中,根据公式(2),3个块的Value值分别为5,14,20(λ值为0.5).此时块1就被选中来进行垃圾回收.所以将块1中的valid数据页迁移到空白页上,然后将整个块1进行擦除操作,使其成为空白块,结束垃圾回收过程.在考虑了invalid-but-useful数据页的占比后,其结果与基于CAT算法计算得出的不同.

图4 垃圾回收过程示例Fig.4 An example of garbage collection

3.4 热数据选取算法

传统缓存算法均根据空间局部性或者时间局部性原理来做出缓存决定,即主要依据数据块的访问频率和访问时间来选取热点数据.本文采用基于chunk的预取,对于多个chunk是热点数据的stripe,考虑局部性原理,其它的chunk热度应该也相对较高,所以chunk的热度还需考虑其所在stripe的整体热度.那么,chunk的热度由自身的访问量和所在stripe的热度来共同决定,热度值如公式(3)所示:

Hot(chunk-id)=a*Cnt(chunk-id)+(1-a)*Cnt(stripe-id)

(3)

其中Cnt()是统计访问量函数,即Cnt(chunk_id)表示该chunk的访问量,Cnt(stripe_id)表示chunk_id所在的stripe的总访问量,系数a用以调整stripe热度对chunk的影响.

为了提高SSD缓存的命中率,一般都会在SSD中缓存尽可能多的数据.假设SSD读缓存容量为N块,需要定时计算热度值最大的N块数据,预取到SSD中.本文采用一种基于访问计数的HBT(Hot Block Table)方式来快速计算出这TOP-N个数据块信息,设计方案如图5所示.

将所有访问的数据块按照访问次数插入到HBT表,相同热度值的数据块采用链表组织.同时根据数据块的位置,将这些数据块又分为SSD中的数据块和RAID中的数据块两个队列.分别使用两个计数器记录访问次数为i的两个队列中数据块个数.用数组(Count_raid_i,Count_ssd_i)来表示访问次数为i的数据块中,有Count_raid_i个在RAID中,有Count_ssd_i个在SSD中.如图5中例子,对于访问次数为1的数据块,其计数器数组为(2,1),表示在RAID中有2个,SSD中有1个,那么访问次数为1的数据块的个数和为3.

当数据块再次被访问时,将其移动至上一级链表.定时对整个HBT进行老化操作(定时将所有数据块的访问次数乘以系数X,X默认为0.5),以避免数据块的访问次数一直增加,同时将HBT中已变冷的数据块从中淘汰出去.对于新被访问的数据块,设置其初始访问次数为8,以避免其刚进入缓存就马上被淘汰.对于淘汰出HBT的数据块就不再记录其访问信息,直至其再次被访问.

图5 HBT结构示意图Fig.5 Structure of HBT

3.5 缓存淘汰算法

传统的缓存淘汰算法一般利用请求分布的时间局部性和空间局部性来改善系统的I/O性能,但这些算法并不能很好解决RAID5计算校验的额外磁盘开销问题,且在一般情况下某一stripe中的各chunk所处的状态比较复杂,于是本文设计了最小开销算法LCA(Least Cost Algorithm):算法计算每个分条数据的RAID5写操作需要的磁盘读写开销,每次总是选取开销最小的分条进行替换,从而减少写操作对磁盘的访问负载.在RMW模式和RCW模式两种方式的写开销分别如公式(4)与公式(5)所示.

ERMW(i)=ESSD*mi+EHDD*(ki-mi+1)

(4)

ERCW(i)=ESSD*ni+EHDD*(L-ki-ni)

(5)

为了方便比较不同stripe之间的写磁盘开销,将写磁盘开销定义为写入单位大小脏数据时的系统开销,因此最终的写磁盘开销E(i)如公式(6)所示.

E(i)=min{ERWM(i),ERCW(i)}/Si

(6)

其中Si为脏数据为第i号stripe中的脏数据大小,参数ESSD和EHDD,分别表示SSD和HDD的读取开销系数.

然而,写缓存替换算法不仅要考虑写磁盘的开销,还需要利用写操作的时间局部性和空间局部性提高写缓存的命中率.对此本文采用LAC算法与LRU算法结合来实现.LRU算法用于保证新stripe在写缓存中保存一定时间,且与同一stripe中的其他写操作合并.当stripe从LRU队列淘汰后,将其放入最小开销算法的堆中.最小开销算法将各stripe按照写入单位数据所用的开销来进行排序,当写缓存需要替换时,将写开销最小的一部分数据写回到磁盘中.

当写缓存中接受了新的写请求,就将该请求所对应的数据块加入到LRU队列中,淘汰队尾的数据块;同时计算被淘汰的数据块的写磁盘开销,并根据计算结果将其添加到最小开销算法的堆中,如图6(a)所示;而当写缓存中空间不足或磁盘负荷较小时,系统会将堆顶的数据块写回磁盘中,并更新堆,如图6(b)所示.若访问的数据块在LRU队列中,则将该节点移动到LRU队列的头部,若访问的stripe在LCA堆中,则将该节点移动到LRU队列的头部,同时从LRU尾部移出一个节点,插入到LCA堆中.

图6 写缓存替换算法示意图Fig.6 Replacement algorithm of write cache

4 系统设计与实现

本文基于Linux系统实现了DE-Cache的原型系统.图7中所示为DE-Cache的软件结构,主要包括Trace 回放模块,DE-Cache控制模块等.而DE-Cache控制模块又分为DE-Cache API,缓存管理模块,RAID管理模块.DE-Cache在用户层实现,RAID系统直接用Linux MD配置工具实现,配置不同的RAID级别.

Trace回放模块主要用来读取trace文件并将其中的读写请求下发到DE-Cache控制模块.由于DE-Cache是在用户层实现,其应用接口并不是一个标准的Linux 接口,所以提供了一个DE-Cache API给上层应用程序调用.

缓存管理模块主要用于处理发送到SSD和虚拟SSD的读写请求.它的三个主要子模块中,热点数据选取模块主要用于全局的热点数据选取,并将热点数据写入到SSD缓存中.虚拟SSD管理模块包括处理针对虚拟SSD的请求以及虚拟SSD内部的垃圾回收等功能.DE-FTL主要用于SSD的数据管理,包括地址转换、页状态转换、垃圾回收管理等功能,基于DFTL代码修改实现的.

图7 DE-Cache结构图Fig.7 Structure of DE-Cache

在DE-FTL中,主要有三点改变,一是在原来的状态基础上增加了〈invalid-but-useful〉状态;二是在LPN(Logical Page Number,逻辑页数) 到PPN (Physical Page Number,物理页数)的映射表之外,增加了一条从LPN到PIPN(physical Invalid-but-useful Page Number)的映射,用于确定invalid-but-useful页在SSD内部的物理地址;三是垃圾回收管理,将invalid-but-useful数据页考虑进来,在原有的垃圾回收公式中添加了一个可变参数λ来调节invalid数据页和invalid-but-useful数据页在垃圾回收值中的权重.

此外,在DE-FTL中,由于invalid-but-useful数据页都是存放在保留空间中,所以使用保留区管理模块来管理SSD缓存中的OP空间;利用垃圾回收管理模块来管理整个SSD缓存内的垃圾回收操作.

RAID管理模块主要用来处理针对RAID系统的读写请求.当请求在RAID管理模块中被处理之后,处理结果会被返回给缓存管理模块.

5 性能测试与结果分析

5.1 测试环境

在本文测试中,DE-Cache部署在一个运行了Linux系统的存储服务器中,该存储服务器的硬件配置如表1所示,由于受到硬件条件限制,本文是拿通用的Intel SSD盘当做没有FTL的裸Flash用,在DE-Cache中自己实现了FTL功能.

表1 服务器配置信息Table 1 Configuration informations of servers

5.2 测试对象设置

为了比较不同配置下的系统性能,DE-Cache和一个基准RAID系统被部署在相同的测试环境中.共配置了两种不同缓存设置的对比方案来进行测试和性能对比,这两种对比方案的具体配置如下:DSC (Dual SSD Cache system,双SSD缓存系统):该对比方案是测试的基准方案,其它的方案都是与它进行性能对比;在RAID系统基础上,为了保证缓存数据的可靠性,使用两个SSD做镜像缓存.

DSC-DE (DE-Cache with Dural SSD cache):该配置的硬件设备和配置DSC的完全相同,但是它具有完整的DE-Cache功能,运行所有的DE-Cache算法,实现DE功能.即DSC-DE的SSD缓存的保留区内会维持一部分的invalid-but-useful页来优化RAID5的校验更新.

5.3 测试结果分析

由于DSC和DSC-DE的缓存大小和缓存算法完全相同,所以二者的读请求响应时间应该是完全一样的,两个方案的主要差异在于写请求响应时间上,所以本文测试部分一平均写响应时间作为性能的主要评估参考标准.

测试的主要性能指标包括在不同的缓存写回方式下(写回模式和写穿模式)的平均写响应时间(average write response time)以及验证系统损耗均衡的垃圾回收时SSD的擦除次数.测试用的trace来源于Storage Performance Council[11]的Financial1和Financial2,简写为F1,F2,以及Microsoft research[12]的STG、USR、MDS、WEB和SRC.

5.3.1 写回模式下的性能分析

图8显示了测试结果.结果显示,在7个trace条件下,DSC-DE的平均写响应时间要比DSC系统减少10.13%到16.17%.该结果说明,DE技术能显著提高系统的写性能.对于SSD缓存而言,一般都是将SSD缓存填满数据,而且为了提高写请求的响应速度,一般采用写回策略,即不管写请求在SSD中是否命中,都将写请求的数据写到SSD中.所以,当某一写请求在SSD中不命中时,由于SSD已满,而又需写入新的数据,会引起缓存淘汰,而被淘汰的脏数据就要写回RAID中,那么就会产生校验更新操作.只有当从SSD中淘汰的脏数据完全写回到RAID后,该写请求的数据才会写入SSD中,此时整个写请求的的响应时间才结束.DE技术主要减少的就是脏数据写回到RAID时所带来的大量磁盘操作而导致的时间延迟,进而缩短了整个写请求的响应时间,从而提高了系统的性能.

图8 写回模式下DSC和DSC-DE的平均写响应时间对比Fig.8 Average response time with write-back policy

为了深入了解DE技术对写性能的优化作用,统计了7个trace下的写请求优化比例,结果如图9 所示.从结果中可以看出,7个trace中38.1%到63.75%的写请求都利用了DE优化技术.这说明DE优化技术能优化大部分的写请求,针对写请求比较分散的应用,其优化效果会更加明显.

图9 写回模式下DSC-DE的写优化比例Fig.9 Write performance improvements with write-back policy

5.3.2 写穿模式下的性能分析

在某些应用场景中,为了追求更高的一致性要求,系统会采用写穿模式来处理写请求,因为写回模式中,SSD缓存中会有脏数据产生,即SSD缓存中的数据和RAID系统中的数据不一致.本节测试了在写穿模式下的DE性能表现.依旧使用DSC和DSC-DE来做对比,系统配置与前者一致.

图10显示了测试结果.从结果可以看出,7个trace的DSC-DE依旧比DSC拥有更好的性能表现,其平均写响应时间要低16.67%到21.32%.而从图11中可以看出,DE技术对写请求的性能优化比例高达77.41%到98.76%.和写回模式相比,无论是性能提升比例还是优化比例,在写穿模式下都要高一些,其具体原因如下:

首先,在写回模式下,部分的写请求命中缓存会被缓存所吸收,只有在写不命中情况下才会导致缓存淘汰,在淘汰时才可以用到DE优化技术,而在写穿模式下,每个写请求都要写到SSD缓存和RAID系统中,在写到RAID系统时,就可以利用DE技术.因此在写穿模式下能够利用DE技术的机会要远远大于在写回模式下;其次对于SSD缓存中的热点的写数据而言,在写回模式下,虽然针对热点数 据的写请求很多,但是大部分写请求都会在SSD缓存中命中,只有在淘汰到RAID时利用一次DE优化技术,而在写穿模式下,重复对热点数据的写,就会多次利用DE优化技术.综合这两方面原因,在写穿模式下,DE优化技术对系统性能的优化效果要更显著,写请求中所能利用DE优化技术的比例也要更大.

图11 写穿模式下DSC-DE的写优化比例Fig.11 Write performance improvements with write-through policy

6 结束语

随着数据的爆炸性增长,大数据时代已经到来,人们对存储系统的要求也越来越高.为了提高存储系统的性能,SSD越来越多地被使用在存储系统中.考虑到系统的性价比,SSD常用作内存和下层磁盘之间的缓存.

本文针对SSD作为RAID存储系统缓存时系统性能提升方面进行了深入讨论,提出了一种利用SSD保留区中无效数据来优化RAID写性能的延迟擦除技术.本文利用SSD的擦除后写的特性,利用其存储保留区,来对RAID5/6系统中的小写性能瓶颈进行优化,通过在校验更新时从SSD中读取数据而不是从磁盘中读取数据来减少磁盘操作,从而提高了RAID的写性能.该技术在没有任何额外硬件开销和缓存空间损失的情况下,提高了系统性能.

猜你喜欢
磁盘校验垃圾
使用Excel朗读功能校验工作表中的数据
垃圾去哪了
它的好 它的坏 详解动态磁盘
那一双“分拣垃圾”的手
创建虚拟机磁盘方式的选择
解决Windows磁盘签名冲突
倒垃圾
Windows系统下动态磁盘卷的分析与研究
电子式互感器校验方式研究
基于FPGA的CRC32校验查找表算法的设计