一种基于捎带回收的瓦记录RAID写顺序化方法及装置与流程

文档序号:12362591阅读:280来源:国知局
一种基于捎带回收的瓦记录RAID写顺序化方法及装置与流程

本发明涉及计算机存储领域,特别涉及一种基于捎带回收的瓦记录RAID写顺序化方法及装置。



背景技术:

作为主要存储介质的传统磁盘的面密度很快将要接近1TB/In2极限,也就意味着单盘的存储空间已经很难再有大幅度的提升,为了解决这一问题,近几年,一种新的磁盘技术被业内提出,即瓦记录(Shingled Magnetic Recording,SMR)技术,其采用部分叠加相邻磁道的方式进一步提升磁盘的存储密度,然而,这种叠加磁道的方式在增大了磁盘存储容量的同时却使得磁盘无法直接原地更新,因为更新写一条磁道上的数据会覆盖其相邻磁道上的数据,为避免相邻磁道数据的损坏,需要做读修改写(Read-Modify-Write,RMW),正如名字描述的那样,首先从磁盘上读出部分数据,然后修改其中的一部分数据,最后再将修改后的和未修改的数据一起写回磁盘,其中读出的部分数据要保证在写回时不会覆盖磁盘上其他位置的有效数据,因此,最坏的情况下,如果磁盘存满有效数据,一次RMW可能需要操作整个磁盘,导致严重的写放大,极大的降低磁盘的非顺序写性能,为了减小写放大,将RMW控制在一定范围内,减小写性能开销,可以将磁盘划分为连续的区域,即带(Band),如图1所示(假设写一条磁道(Track)最远只会覆盖下一条磁道上的数据,即覆盖率K=2,每个Band由两条Track组成),Band之间的编址是连续的,但是Band之间需预留一定空间(Gap),确保写Band0上的任意位置都不会覆盖到Band1上的任何数据,这样,就可以将写放大控制在一条Band的范围内,因此写放大程度取决于Band的大小(Band Size),由于以Band划分磁盘需要在相邻Band间预留空间,浪费了磁盘存储容量,为减小磁盘容量浪费,Band Size不能太小,因为Band Size越小,磁盘上Band的数量就越多,磁盘空间浪费就越严重,但即使Band Size设置为几十MB左右,用户的每个写请求都可能会引发RMW,在最坏的情况下需要将整个Band上的数据都读出,修改完再写回,性能也会大幅下降。

对于RAID5\6或者更高维带校验的RAID系统,在非顺序写场景下,由于小写的存在,在磁盘的每一个带上都会引入频繁的非顺序读写操作,由于瓦记录磁盘非顺序写性能很差,RAID系统整体的非顺序写性能会受到严重的影响。



技术实现要素:

针对现有技术的不足,本发明提出一种基于捎带回收的瓦记录RAID写顺序化方法及装置。

本发明提出一种基于捎带回收的瓦记录RAID写顺序化装置,包括:

结构管理模块,用于将带通过循环日志的结构进行管理;

高速持久缓存模块,用于接收所有非顺序写请求,当高速持久缓存被写到水位时触发下刷,其中将带划分为数据带与校验带,下刷以组为单位进行,组之间的写入未产生写覆盖,组内非整条带的写过程触发小写过程,同时在小写读时做捎带回收操作。

各磁盘上具有相同带号的带组成一个组。

所述循环日志包括头部位置、尾部位置,当小写读完成后,将小写的写请求写入头部位置,并将头部位置前移,捎带回收从所述尾部位置向所述头部位置顺序扫描读取一段连续空间的数据,扫描包含无效的数据块,从读出的数据块中提取出有效数据块,并将有效数据块写入所述头部位置,从而做到将落入带内的随机读与随机写转换成随机读与顺序写。

所述头部位置与所述尾部位置存在距离N。

当进行非顺序写请求时,将所述数据带与所述校验带中与将要写入的数据块相对应的数据块及校验块读出,并结合所述将要写入的数据块计算新的校验块,并将所述将要写入的数据块与所述新的校验块写入带内。

本发明还提出一种基于捎带回收的瓦记录RAID写顺序化方法,包括:

步骤1,将带通过循环日志的结构进行管理;

步骤2,接收所有非顺序写请求,当高速持久缓存被写到水位时触发下刷,其中将带划分为数据带与校验带,下刷以组为单位进行,组之间的写入未产生写覆盖,组内非整条带的写过程触发小写过程,同时在小写读时做捎带回收操作。

各磁盘上具有相同带号的带组成一个组。

所述循环日志包括头部位置、尾部位置,当小写读完成后,将小写的写请求写入头部位置,并将头部位置前移,捎带回收从所述尾部位置向所述头部位置顺序扫描读取一段连续空间的数据,扫描包含无效的数据块,从读出的数据块中提取出有效数据块,并将有效数据块写入所述头部位置,从而做到将落入带内的随机读与随机写转换成随机读与顺序写。

所述头部位置与所述尾部位置存在距离N。

当进行非顺序写请求时,将所述数据带与所述校验带中与将要写入的数据块相对应的数据块及校验块读出,并结合所述将要写入的数据块计算新的校验块,并将所述将要写入的数据块与所述新的校验块写入带内。

由以上方案可知,本发明的优点在于:

本发明通过高速持久缓存聚集非顺序写请求,在下刷时将落入每个带内的小写读和小写写拆为两个过程,即当所有小写读都完成后再开始小写写,在带内小写读的过程中捎带做回收读,在小写写过程中将回收读出的有效数据和要下刷的有效数据合并为大块的顺序写,避免带内小写产生的RMW过程,并提升系统的整体性能。

附图说明

图1为盘片空间按带划分图;

图2为带内循环日志结构图;

图3为系统架构图;

图4为捎带回收的带随机读和顺序写图。

具体实施方式

本发明对瓦记录磁盘的带采用了循环日志的结构进行管理,如图2所示,写请求写入头指针位置,并将头指针前移,黑色区域为有效数据块,阴影区域是由于更新操作产生的无效数据块,由于瓦记录技术不支持原地更新,无效数据块只能通过回收操作才能重新被利用,回收操作是从尾指针处向头指针方向顺序扫描读取一段连续空间的数据,扫描需包含无效的数据块,从读出的数据块中提取出有效数据块,并将有效数据块写入头指针位置,从而释放出无效数据块占用的空间,实现带内空间的释放。带内循环日志结构确保写是顺序化的,避免瓦记录磁盘的RMW操作,本发明改进了传统RAID的小写流程,使得小写的写过程变成了带内的顺序写,从而提升瓦记录RAID系统非顺序写性能。

本发明在传统RAID之上加入了一层高速持久缓存(如:SSD),用来接收所有非顺序写请求,当高速持久缓存被写到水位时触发下刷,如图3,并将带划分为数据带和校验带,下刷以组(Group)为单位进行(图3中虚线框中不同磁盘上具有相同带号的带组成一个组),组之间的写入不会产生写覆盖,组内非整条带写会触发小写过程,在小写读时做回收读,如图4,带内小写过程中引入一次回收读操作,当带内所有小写读操作都完成以后,将小写要写入带内的数据与回收读出的有效数据一起顺序的写入带的头指针处,从而做到将落入带内的随机读和随机写转换成随机读和顺序写,只引入了一次带内随机回收读的开销,但是将带内多个随机写合并为了顺序写,避免了瓦记录磁盘的RMW过程,且对传统RAID5的小写过程进行了顺序化。

本发明提出一种基于捎带回收的瓦记录RAID写顺序化装置,包括:

结构管理模块,用于将带通过循环日志的结构进行管理;

高速持久缓存模块,用于接收所有非顺序写请求,当高速持久缓存被写到水位时触发下刷,其中将带划分为数据带与校验带,下刷以组为单位进行,组之间的写入未产生写覆盖,组内非整条带的写过程触发小写过程,同时在小写读时做捎带回收操作。

各磁盘上具有相同带号的带组成一个组。

所述循环日志包括头部位置、尾部位置,当小写读完成后,将小写的写请求写入头部位置,并将头部位置前移,捎带回收从所述尾部位置向所述头部位置顺序扫描读取一段连续空间的数据,扫描包含无效的数据块,从读出的数据块中提取出有效数据块,并将有效数据块写入所述头部位置,从而做到将落入带内的随机读与随机写转换成随机读与顺序写。

所述头部位置与所述尾部位置存在距离N。

当进行非顺序写请求时,将所述数据带与所述校验带中与将要写入的数据块相对应的数据块及校验块读出,并结合所述将要写入的数据块计算新的校验块,并将所述将要写入的数据块与所述新的校验块写入带内。

下面给出本发明的具体实施方式,结合附图对本发明做出了详细描述,其中本发明包括非顺序写请求聚集和捎带回收写顺序化两个部分。

非顺序写请求聚集:

如图3所示,将所有非顺序写(D8'、D3'、D1')写入高速持久缓存中(如SSD),当持久缓存被写入一定水位(water level)后,触发下刷操作,假设数据块D8'、D3'、D1'应当被写入Disk0:Band1中,由于是非满条带写,会触发RAID5小写流程(假设是读改写),需先将Disk0:Band1中旧的数据块D8、D3、D1和Disk1:Band1中旧的校验块P8、P3、P1读出(带内随机读),跟新的D8'、D3'、D1'计算出新的校验P8'、P3'、P1',再将新数据块和校验块写回带内。

捎带回收的写顺序化:

如图4,以读旧的D8、D3、D1、回收读和写新的D8'、D3'、D1'、回收读的有效数据为例,小写读时随机读D8、D3、D1是原有的小写读开销,捎带回收引入一次额外的随机读,即回收读,当带内所有小写读和回收读都完成后,将回收读出的有效数据和新的D8'、D3'、D1'顺序写入带的头指针处,图4中的最远写距离为循环日志的头指针和尾指针之间的最远距离,由于瓦记录磁盘相邻磁道会产生写覆盖,因此头指针和尾指针之间必须保持一定距离N,其中N的大小既取决于前面提到的瓦记录写覆盖率K,即写一条磁道最远会覆盖到的磁道数量,又跟相邻磁道上扇区的偏移有关(相邻磁道上的扇区的物理位置并不是严格按照半径方向对齐的),因此N值与厂商具体的产品采用的技术程度有关,本发明中N的大小≈磁道的扇区数量*(K-1),N以扇区为单位。

对于未优化的以带为单位的RMW过程,小写读是原有的开销,小写的写在带内是非顺序写,因此最坏的情形需要将整个带内的数据都读出,跟新数据合并后再写回,本发明只引入了一次随机回收读的开销,并且将原有的小写的随机写转换成了顺序写,提升了系统整体性能。

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