一种基于批量写校验的独立磁盘冗余阵列读写方法技术

技术编号:14355283 阅读:105 留言:0更新日期:2017-01-08 22:34
本发明专利技术公开了一种基于批量写校验的独立磁盘冗余阵列方法,属于数据储存领域。该方法将固态盘作为磁盘阵列的缓存设备;当进行写请求时,若固态盘没有命中写请求,则将写请求数据块写入磁盘阵列并更新校验块,否则将写数据块写入磁盘阵列但不更新校验块,将写请求数据和原数据进行异或计算并对计算结果进行压缩得到差量编码,待到回收固态盘缓存块时,再将存入固态盘的差量编码批量转换为校验块写入磁盘阵列;当进行读请求时,若固态盘命中读请求,则从固态盘中读取对应的数据块完成读请求,否则从磁盘阵列中读取对应数据块,并将该数据块读入到固态盘中。本发明专利技术方法减少了独立磁盘冗余阵列的小写开销,并提升了固态盘的寿命。

【技术实现步骤摘要】

本专利技术属于数据储存领域,更具体地,涉及一种基于批量写校验的独立磁盘冗余阵列方法。
技术介绍
独立磁盘冗余阵列(Redundantarrayofindependentdisk,简称RAID)技术是由帕特森等人于1988年提出的一种存储系统架构。其基本思想是将多个磁盘组合起来,通过条带化技术提高并发访问性能。按照数据组织方式的不同,RAID又被分为多种级别,分别通过不同的方式保存冗余数据以保证存储系统的可靠性。比如RAID1使用数据镜像,RAID5/6采用保存校验数据的方式保证数据可靠性。在不同的RAID等级中,基于校验的RAID5/6具有高存储率、高可靠、以及高性价比等优点,因而使得其在存储服务端得到广泛的应用。然而RAID5/6的随机写性能较低,也就是所谓的小写问题。以N盘的RAID5为例,如图1所示,每个条带是由N-1个数据块和1个校验块构成。当更新其中一个数据块时,需要先将旧数据块和校验块从磁盘中读出来(2个读I/O),然后和新的数据进行异或得到新的校验数据,最后将新的数据块和校验块全部写入相应的磁盘(2个写I/O)。一个更新操作将产生4个I/O操作,因此对于有着大量随机小写I/O的负载,会造成较高的I/O时延,对应用产生不利的影响。近些年,随着固态盘(Solid-stateDrive,SSD)的飞速发展,其在工业界和学术界都受到了广泛的关注。与磁盘相比,固态盘具有高性能,低功耗,抗震性好等特点。由于固态盘的价格仍然高于磁盘,因此一种普遍的做法是将固态盘设备作为缓存设备,以加速基于磁盘的后端存储系统的访问速度。然而,固态盘也有其本身的局限性,其中最为严峻问题之一就是固态盘的寿命问题。固态盘一般是用闪存作为存储介质的,而闪存单元的擦除/编程次数是有限的。当写入量超过一定量时,固态盘将无法再可靠的存储数据。一方面,随着固态盘存储密度的不断提高,闪存单元的擦除次数越来越少。另一方面,作为缓存设备,固态盘具有更多的写入操作,这更加快了固态盘的磨损。近年来的一些研究指出,数据中心的典型负载可以在几个月之内耗尽固态缓存盘设备的寿命。传统的缓存管理策略包括直写法和写回法。其中写回法将数据写入固态缓存盘即可返回,因此可以提升RAID写性能。但是当固态缓存盘设备发生故障时,写回法将造成数据丢失,大大降低了存储系统可靠性。另一方面,直写法策略保证所有写入操作会将数据写入后端存储之后才会返回,因此不会降低存储系统可靠性,然而直写法无法有效提升基于校验的RAID系统的随机写性能。近年来,研究人员先后提出了一些固态缓存盘管理策略,但是这些方法要么没有解决RAID的小写问题,要么忽略了固态缓存盘的寿命问题,使得现有算法无法很好地应用在使用固态盘作为基于校验的磁盘阵列的应用场景下。
技术实现思路
针对现有技术的以上缺陷或改进需求,本专利技术提供了一种基于批量写校验的独立磁盘冗余阵列方法,其目的在于将将固态盘作为RAID5/6的缓存设备,将NVRAM(非易失性随机访问存储器)作为RAID5/6的内存设备,将校验压缩打包储存在固态缓存盘中,在批量写入磁盘阵列中,由此解决基于校验的独立磁盘冗余阵列技术的随机写性能较低、固态缓存盘寿命不长的技术问题。为实现上述目的,提供了一种基于批量写校验的独立磁盘冗余阵列方法,该方法包括以下步骤:(1)请求判断步骤;判断若是写请求则进入步骤(2),否则进入步骤(3);(2)上层应用写请求步骤;若固态缓存盘没有命中写请求数据块,则将该数据块写入磁盘阵列并更新校验块;否则将写数据块写入磁盘阵列但不更新校验块,将固态缓存盘中对应的数据块与内存中写请求数据块进行异或计算并对结果进行压缩得到差量编码;将差量编码存储至固态缓存盘,待回收固态缓存盘数据缓存块时再将差量编码批量转换为校验块写入磁盘阵列,请求结束;(3)上层应用读请求步骤;若固态盘缓存盘没有命中读请求数据块,则从磁盘阵列中读取对应数据块,并将数据块写入到固态缓存盘中;否则从固态缓存盘中读取对应数据块,并判断是否有关联的差量编码,若没有则直接返回数据块,否则读取差量编码解压缩并与数据块进行异或得到所需数据返回,请求结束。进一步地,所述上层应用写请求块步骤包含以下子步骤:(11)查找固态缓存盘,若命中写请求数据块则转入步骤(12),否则转入步骤(18);(12)将写请求数据块写入磁盘阵列但不更新校验块,同时将固态缓存盘中对应的数据缓存块读入内存,与写请求的数据块进行异或计算并对计算结果进行压缩得到差量编码;若存在对应的旧版本的差量编码,则将之删除;(13)检查NVRAM缓存中是否有足够的空间保存新产生的差量编码,若没有则转入步骤(14),否则跳转到步骤(17);(14)检查固态缓存盘中是否有空闲缓存块,若没有则转入步骤(15),否则转入步骤(16);(15)触发固态缓存盘缓存空间回收线程,并等待缓存空闲块的数量超过阈值;(16)从固态缓存盘中分配一个空闲缓存块,将NVRAM缓存中已有的差量编码打包写入,并将此缓存块定义为差量缓存块,之后清空NVRAM缓存;(17)将新的差量编码写入到NVRAM缓存,写请求处理结束。(18)检查固态缓存盘中是否有空闲缓存块,若没有则转入步骤(19),否则跳转到步骤(110);(19)触发固态缓存盘缓存空间回收线程,并等待空闲缓存块的数量超过一定阈值;(110)将写请求数据块写入磁盘阵列并更新校验块,同时将该数据块写入固态盘缓存;等所有写入完成,写请求处理结束。进一步地,所述上层应用读请求块步骤包含以下子步骤:(21)查找固态缓存盘,若没有命中读请求数据块则转入步骤(22),否则转入步骤(25);(22)从磁盘阵列读取相应的数据块,检查固态缓存盘是否有空闲缓存块,若没有则转入步骤(23),否则跳转到步骤(24);(23)触发固态缓存盘缓存空间回收线程,并等待空闲缓存块的数量超过阈值;(24)在固态盘缓存上分配空闲缓存块,将(22)步读取的数据块写入到空闲缓存块中,读请求结束;(25)从固态缓存盘读取相应的数据缓存块;检查是否存在该数据缓存块对应的差量编码,若存在则转入步骤(26),否则读请求结束;(26)读取差量编码并解压缩得到差量,然后与(25)步读取的数据缓存块进行异或计算得到需要读取的数据,读请求结束。进一步地,所述固态缓存盘空间回收包含以下步骤:(31)采用缓存替换算法,选取要回收的数据缓存块;(32)在固态缓存盘的差量缓存块中检查是否存在与该数据缓存块相关联的差量编码,若存在则转入步骤(33),否则跳转到步骤(36);(33)读取该差量编码并解压得到差量,在磁盘阵列中读取和数据缓存块对应的校验块,根据得到的差量和读取的校验块重新计算新的校验块并写回磁盘阵列,之后删除该差量编码;计算新的校验块:对于RAID5,将差量和读取的校验块数据异或即可得到新的校验块;对于RAID6,将差量和读取的校验块P数据异或即可得到新的校验块P,将差量乘以相应的系数,然后将得到的结果与校验块Q异或即可得到新的校验块Q;(34)判断该差量编码所在的差量缓存块中是否还有其它差量编码,若没有则转入步骤(35),否则跳转到步骤(36);(35)将该差量缓存块标记为空闲缓存块;(36)将该数据缓存块标记为空闲缓存块,如本文档来自技高网
...
一种<a href="http://www.xjishu.com/zhuanli/55/201610649825.html" title="一种基于批量写校验的独立磁盘冗余阵列读写方法原文来自X技术">基于批量写校验的独立磁盘冗余阵列读写方法</a>

【技术保护点】
一种批量写校验的独立磁盘冗余阵列方法,其特征在于,该方法包含以下步骤:(1)请求判断步骤;判断若是写请求则进入步骤(2),否则进入步骤(3);(2)上层应用写请求步骤;若固态缓存盘没有命中写请求数据块,则将该数据块写入磁盘阵列并更新校验块;否则将写数据块写入磁盘阵列但不更新校验块,将固态缓存盘中对应的数据块与内存中写请求数据块进行异或计算并对结果进行压缩得到差量编码;将差量编码存储至固态缓存盘,待回收固态缓存盘数据缓存块时再将差量编码批量转换为校验块写入磁盘阵列,请求结束;(3)上层应用读请求步骤;若固态盘缓存盘没有命中读请求数据块,则从磁盘阵列中读取对应数据块,并将数据块写入到固态缓存盘中;否则从固态缓存盘中读取对应数据块,并判断是否有关联的差量编码,若没有则直接返回数据块,否则读取差量编码解压缩并与数据块进行异或得到所需数据返回,请求结束。

【技术特征摘要】
1.一种批量写校验的独立磁盘冗余阵列方法,其特征在于,该方法包含以下步骤:(1)请求判断步骤;判断若是写请求则进入步骤(2),否则进入步骤(3);(2)上层应用写请求步骤;若固态缓存盘没有命中写请求数据块,则将该数据块写入磁盘阵列并更新校验块;否则将写数据块写入磁盘阵列但不更新校验块,将固态缓存盘中对应的数据块与内存中写请求数据块进行异或计算并对结果进行压缩得到差量编码;将差量编码存储至固态缓存盘,待回收固态缓存盘数据缓存块时再将差量编码批量转换为校验块写入磁盘阵列,请求结束;(3)上层应用读请求步骤;若固态盘缓存盘没有命中读请求数据块,则从磁盘阵列中读取对应数据块,并将数据块写入到固态缓存盘中;否则从固态缓存盘中读取对应数据块,并判断是否有关联的差量编码,若没有则直接返回数据块,否则读取差量编码解压缩并与数据块进行异或得到所需数据返回,请求结束。2.根据权利要求1所述的一种批量写校验的独立磁盘冗余阵列方法,其特征在于,所述上层应用写请求块步骤包含以下子步骤:(11)查找固态缓存盘,若命中写请求数据块则转入步骤(12),否则转入步骤(18);(12)将写请求数据块写入磁盘阵列但不更新校验块,同时将固态缓存盘中对应的数据缓存块读入内存,与写请求的数据块进行异或计算并对计算结果进行压缩得到差量编码;若存在对应的旧版本的差量编码,则将之删除;(13)检查NVRAM(非易失性随机访问存储器)缓存中是否有足够的空间保存新产生的差量编码,若没有则转入步骤(14),否则跳转到步骤(17);(14)检查固态缓存盘中是否有空闲缓存块,若没有则转入步骤(15),否则转入步骤(16);(15)触发固态缓存盘缓存空间回收线程,并等待缓存空闲块的数量超过阈值;(16)从固态缓存盘中分配一个空闲缓存块,将NVRAM缓存中已有的差量编码打包写入,并将此缓存块定义为差量缓存块,之后清空NVRAM缓存;(17)将新的差量编码写入到NVRAM缓存,写请求处理结束。(18)检查固态缓存盘中是否有空闲缓存块,若没有则转入步骤(19),否则跳转到步骤(110);(19)触发固态缓存盘缓存空间回收线程,并等待空闲缓存块的数量超过一定阈值;(110)将写请求数据块写入磁盘阵列并更新校验块,同时将该数据块写入固态盘缓存;等所有写入完成,写请求处理...

【专利技术属性】
技术研发人员:王芳冯丹华宇李楚
申请(专利权)人:华中科技大学
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1