首页> 中国专利> 一种利用SSD的无效数据优化RAID5/6写性能的方法

一种利用SSD的无效数据优化RAID5/6写性能的方法

摘要

本发明公开了一种利用SSD中无效数据优化RAID5/6写性能的方法,是应用在一种包括1个或多个SSD和多个磁盘组成的RAID5/6系统中,其中SSD作为RAID5/6的读写缓存,所述方法包括:在SSD中建立空闲池、数据池、保留池和回收池,其中保留池用于暂时存储SSD中无效的旧数据并在SSD的内存中构造映射表,用于存储SSD中数据和对应的无效旧数据的信息及其与RAID磁盘中数据的对应关系,当SSD中数据要写回到RAID5/6中时,读取SSD中无效的旧数据,以避免读RAID5/6磁盘中的旧数据,用来计算RAID5/6的校验值,从而减少磁盘的访问次数,优化RAID5/6的写性能。本发明能够解决传统RAID5/6系统在小写过程中性能不佳的问题。

著录项

  • 公开/公告号CN103631536A

    专利类型发明专利

  • 公开/公告日2014-03-12

    原文格式PDF

  • 申请/专利权人 华中科技大学;

    申请/专利号CN201310612211.6

  • 发明设计人 谢长生;万继光;

    申请日2013-11-26

  • 分类号G06F3/06(20060101);G06F12/08(20060101);

  • 代理机构42201 华中科技大学专利中心;

  • 代理人朱仁玲

  • 地址 430074 湖北省武汉市洪山区珞喻路1037号

  • 入库时间 2024-02-19 23:02:09

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-06-01

    授权

    授权

  • 2014-04-09

    实质审查的生效 IPC(主分类):G06F3/06 申请日:20131126

    实质审查的生效

  • 2014-03-12

    公开

    公开

说明书

技术领域

本发明属于数据存储技术领域,更具体地,涉及一种利用SSD的无效 数据优化RAID5/6写性能的方法。

背景技术

固态硬盘采用闪存作为存储介质,因此相对于传统磁盘,没有了磁头 寻道的机械过程,其读写性能大大优于磁盘,尤其是随机的读写性能。将 SSD引入存储系统中,从而大大提高了整个系统的性能。目前来看,SSD的 容量也比一般磁盘要小许多,难以满足现在大量数据的应用情景。业界目 前使用SSD主要作为磁盘的缓存,SSD缓存相比传统的内存缓存,SSD可以 提供更大的缓存空间,把经常访问的热数据存储在SSD中,把访问较少的 冷数据存储在磁盘设备上。对于目前海量数据的存储需求,由于其中有大 量的是冷数据,都将其存储在后端的磁盘设备上,通常采用磁盘阵列的形 式组织起来。

固态硬盘的写操作比较特殊,由于SSD中在需要改写某个存储单元的 数据时,需要一个额外的擦除动作,每个擦除单元称为块(block),一个 块一般是128个页面。所以在SSD内部的FTL中,一般会在SSD中设置两 个数据块池(block pool),一个是空闲池(free block pool),一个是数 据池(data block pool),当需要改写某个页面时(如果写入原有位置,必 须先擦除整个块,然后才能写入数据),并不写入原有位置,而是从空闲池 中取出新的块,将现有数据和需要改写的数据合并为新的块,一起写入新 的空白块,原有的块被标识为无效状态(等待被擦除回收),新的块则进入 数据池。后台任务会定时从数据块中取出无效数据块,擦除后回收到空闲 池中。

RAID5/6磁盘阵列是一种存储性能、数据安全和存储成本兼顾的存储解 决方案。RAID5/6具有和RAID0相近似的数据读取速度,只是多了一个奇偶 校验信息,同时由于多个数据对应一个奇偶校验信息,RAID5/6的磁盘空间 利用率要比RAID1高,存储成本相对较低。

RAID5/6的技术也存在缺陷:每一次写操作将产生四个实际的读/写操 作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息,使得 RAID5/6在进行写操作时性能不佳。

发明内容

针对现有技术的以上缺陷或改进需求,本发明提供了一种利用SSD的 无效数据优化RAID5/6写性能的方法,其目的在于,解决传统RAID5/6系 统在小写过程中性能不佳的技术问题。

为实现上述目的,按照本发明的一个方面,提供了一种利用SSD中无 效数据优化RAID5/6写性能的方法,是应用在一种包括1个或多个SSD和 多个磁盘组成的RAID5/6系统中,其中SSD作为RAID5/6的读写缓存,所 述方法包括以下步骤:

(1)在SSD中建立空闲池、数据池、保留池和回收池,将SSD中所有 数据块放入数据池中,建立一个计数表,用来统计所有数据块的访问次数, 并在SSD的内存中构造映射表,用于存储SSD中数据的状态及其与RAID5/6 磁盘中数据的对应关系,其中空闲池由SSD中的空闲块组成,数据池用于 存储SSD缓存的最新数据,保留池用于存储SSD中能够用于优化RAID写性 能的无效数据,回收池由待擦除的无效数据块组成;

(2)接收来自上层文件系统的请求,在计数表中更新该请求对应的数 据块的访问计数,并判断请求是读请求还是写请求,如果是读请求,则转 入步骤(3),如果是写请求,则转入步骤(4);

(3)判断该读请求是否命中SSD,当读请求命中SSD时,可以直接从 SSD中读取数据,当读请求未命中SSD时,则从RAID5/6磁盘中读取数据, 同时判断该读请求对应的数据块是否为热点数据,如果是热点数据,则还 需要将该数据块缓存到SSD中,并从SSD中选取数据块进行替换,如果被 选取的数据块是脏数据,则转入步骤(5),否则返回步骤(2);

(4)判断该写请求是否命中SSD,如果未命中SSD,则将该请求对应 的数据写到RAID5/6中,如果命中SSD,则根据对应数据块在SSD中的原数 据块的状态来执行不同的处理,如果是脏数据,则将其作废,移动到SSD 的回收池中,否则将其保留,移动到SSD的保留池中。然后将写请求所对 应的新数据写入SSD,并判定保留池中是否还有足够的空间,如果保留池已 满,则从保留池中选取保留块进行淘汰,转入步骤(5),否则返回步骤(2);

(5)对于被选取的数据块及对应保留块,从保留池和数据池中分别读 出与其对应的旧数据与脏数据,并从RAID5/6中读出校验数据,对三者进 行异或运算,以得到新的校验数据,将新数据和新的校验值写回到RAID5/6 中,并将保留池中的旧数据改为无效状态,移动到回收池中,如果SSD中 数据池满,则将数据池中的脏数据块修改为无效状态,移动到回收池中, 否则将其修改为干净状态,然后返回步骤(2)。

优选地,步骤(4)具体包括以下步骤:

(4-1)通过查询映射表,判断该写请求是否命中SSD,如果命中,则 转入步骤(4-2),否则将该写请求传送到RAID5/6中,然后返回步骤(2);

(4-2)判断命中的数据块是否为脏数据,如果是脏数据,则转入步骤 (4-3),否则转入步骤(4-4);

(4-3)将该写请求对应的旧数据块移动到SSD的回收池中,并在映射 表中将该标记为无效数据,然后转入步骤(4-5);

(4-4)将该写请求对应的旧数据块移动到SSD的保留池中,在映射表 中将其标记为保留数据;

(4-5)从空闲池中取出一个空闲块写入该数据块,并将写入后的数据 块移动到数据池中,并更新映射表中相应的映射条目;

(4-6)判断保留池中的数据块个数是否超过阈值,如果是,使用LRU 算法从保留池中选取一个数据块,然后进入步骤(5),否则返回步骤(2)。

优选地,步骤(5)具体包括以下步骤:

(5-1)在映射表中查找被选取的数据块及对应保留块,分别从数据池 和保留池中读出相应的脏数据和旧数据,并从RAID5/6中读出对应的校验 数据。

(5-2)对读出的脏数据、旧数据和校验数据进行异或计算,得到新的 校验数据,将脏数据和新的校验值分别写回到RAID5/6的相应位置。

(5-3)将保留池中的旧数据改为无效状态,移动到回收池中。

(5-4)判断SSD中的数据池是否还有足够的空间,如果数据池已满, 则将数据池中的脏数据块修改为无效状态,移动到回收池中,否则将其修 改为干净状态。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够 取得下列有益效果:

1、本发明的方法有效利用到了SSD中的无效数据。

2、本发明减少了写RAID5/6时校验操作的读磁盘次数,从而减轻磁盘 负荷。

3、由于SSD的读性能要远优于磁盘,所以本发明从SSD读取用于计算 校验的数据能提升RAID5/6的写性能。

附图说明

图1是本发明应用到的RAID5/6系统的结构示意图。

图2是本发明利用SSD中无效数据优化RAID5/6写性能的方法的流程 图。

图3是本发明方法的步骤(3)的细化流程图。

图4是本发明方法的步骤(4)的细化流程图。

图5是SSD数据块状态示意图.

图6是本发明步骤(5)的工作过程示意图。

图7是SSD中数据块状态转换图。

图8是数据块回收处理流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图 及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体 实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的 本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可 以相互组合。

本发明的总体思路在于,本发明所提出的利用SSD中无效数据优化 RAID5/6写性能的方法是在传统的SSD作为RAID5/6的缓存的系统中增加了 对SSD中被标识为无效状态(等待被擦除回收)的数据的管理,在无效数 据被擦除之前,尽可能保留可用于优化RAID5/6写操作的数据块,并利用 这些数据块来计算写RAID5/6时的校验值。

本发明利用SSD中无效数据优化RAID5/6写性能的方法是应用在一种 包括1个SSD和多个磁盘组成的RAID5/6系统中,其中SSD作为RAID5/6 的读写缓存(如图1所示),如图2所示,该方法包括以下步骤:

(1)在SSD中建立四个数据块池(Block pool),分别为空闲池、数 据池、保留池和回收池,将SSD中所有数据块放入空闲池中,建立一个计 数表,用来统计所有数据块的访问次数,并在SSD的内存中构造映射表, 用于存储SSD中数据的状态及其与RAID5/6磁盘中数据的对应关系,其中 空闲池用于存储SSD中的空闲数据块,数据池用于存储SSD缓存的最新数 据,保留池用于存储SSD中能够用于优化RAID写性能的无效数据,回收池 用于存储待擦除的无效数据;具体而言,当回收池中的无效数据块较多或 系统负载较低时,RAID5/6系统会自动擦除回收池中的无效数据,并将它们 移动到空闲池中;系统将根据数据块状态的不同来区别管理这四个数据池, 这四个数据块池实际上只是维护了属于这些池中的数据块的元数据,当数 据块从一个池移动到另一个池时,实际上只有其元数据发生了移动。

其中数据池和保留池中的数据块的总数是有上限的,用户可以对数据 池及保留池占SSD总空间的比例进行配置,系统将根据空间大小及数据块 大小分别计算出数据池和保留池中数据块个数的阈值。

本步骤的优点在于用户可以根据应用场景及需求的不同,灵活配置数 据池和保留池的空间,优化系统性能。

(2)接收来自上层文件系统的请求,在计数表中更新该请求对应的数 据块的访问计数,并判断请求是读请求还是写请求,如果是读请求,则转 入步骤(3),如果是写请求,则转入步骤(4);

(3)对于来自上层的读请求,判断该读请求是否命中SSD,当读请求 命中SSD时,可以直接从SSD中读取数据,当读请求未命中SSD时,则从 RAID5/6磁盘中读取数据,同时判断该读请求对应的数据块是否为热点数 据,如果是热点数据,则还需要将该数据块缓存到SSD中,如图3所示, 本步骤具体包括以下步骤:

(3-1)通过查询映射表,判断该读请求是否命中SSD,如果命中,则 转入步骤(3-2),否则转入步骤(3-3);

(3-2)根据查询映射表的结果,将该请求重定向到SSD中的对应位置, 并向SSD传送该读请求,然后返回步骤(2);

(3-3)将该读请求传送到RAID5/6中,并判断该读请求对应的数据块 是否为热点数据,即判断该数据块的计数值是否大于阈值(该阈值需要根 据系统访问模式的特点,由用户事先进行配置)如果大于阈值,则表示该 读请求对应的数据块是热点数据,然后转入步骤(3-4),否则返回步骤(2);

(3-4)将该读请求对应的数据块复制到SSD的数据池中作为缓存,并 更新映射表添加新的映射关系,然后判断数据池中的数据块个数是否超过 阈值,如果是,则转入步骤(3-5),否则返回步骤(2);

(3-5)使用LRU算法,从数据池中选取一个数据块,如果数据块是干 净状态,则将其标记为无效状态,移动到回收池中,否则,则转入步骤(5);

(4)处理写请求时,同样需要先判断该写请求是否命中SSD,如果未 命中SSD,则将该请求对应的数据写到RAID5/6中,如果命中SSD,则根据 对应数据块在SSD中的原数据块的状态来执行不同的处理,如果是脏数据, 则将其作废,移动到SSD的回收池中,否则将其保留,移动到SSD的保留 池中。然后将写请求所对应的新数据写入SSD,并确保保留池中是否还有足 够的空间,如图4所示,本步骤主要包括以下子步骤:

(4-1)通过查询映射表,判断该写请求是否命中SSD,如果命中,则 转入步骤(4-2),否则将该写请求传送到RAID5/6中,然后返回步骤(2);

(4-2)判断命中的数据块是否为脏数据,如果是脏数据,则转入步骤 (4-3),否则转入步骤(4-4);

(4-3)将该写请求对应的旧数据块移动到SSD的回收池中,并在映射 表中将该标记为无效数据,然后转入步骤(4-5);

(4-4)将该写请求对应的旧数据块移动到SSD的保留池中,在映射表 中将其标记为保留数据;

(4-5)从空闲池中取出一个空闲块写入该数据块,并将写入后的数据 块移动到数据池中,并更新映射表中相应的映射条目;

(4-6)判断保留池中的数据块个数是否超过阈值,如果是,使用LRU 算法从保留池中选取一个数据块,然后进入步骤(5),否则返回步骤(2);

(5)对于被选取的数据块,从保留池和数据池中分别读出与其对应的 旧数据与脏数据,并从RAID5/6中读出校验数据,对三者进行异或运算, 以得到新的校验数据,将新数据和新的校验值写回到RAID5/6中,并将保 留池中的旧数据改为无效状态,移动到回收池中,同时将数据池中的脏数 据修改为干净状态,然后返回步骤(2);

本步骤的优点在于将从RAID5/6中读出旧数据的步骤改为从SSD中读 出,有效提升了读取速度,另外,因为向RAID5/6写新数据之前无需等待 旧数据读取完毕,所以能提前向RAID5/6下发写请求。

通过监控负载对数据块的访问记录,采用一定的算法选择出合适的热 点数据缓存到SSD的数据池中,作为磁盘阵列的缓存,并将缓存与磁盘上 相应数据块的对应关系保存到映射表中。当有访问请求时,通过查询映射 表,判断该数据是否被缓存在SSD中,如果命中,则将该访问请求重定向 的SSD中的对应位置,以提高系统的读写性能。

当写请求命中缓存时,按照SSD的特点,会从空闲池中找出一个空闲 块来写入新数据,而旧数据会被标记为无效,等待擦除。也就是说,SSD会 在一定时间内保存修改之前的原始数据,而在RAID5/6进行写磁盘操作时, 恰恰需要利用到修改之前的数据,因此,在本发明中,通过管理这些未被 擦除的旧数据,以便利用这些旧数据来减少RAID5/6更新校验数据时从磁 盘预读数据的次数。图5为某一时刻内SSD中各数据块状态示意图,当某 一位于数据池中的数据块(图中数据块4)被修改时,系统从空闲池中选择 一块写入新数据(图中数据块4’),而旧数据会被移动到保留池中;而当脏 数据块(图中数据块4’)再次被修改时,同样需要从空闲池中选择一块写 入新数据(图中数据块4”),此时原本的脏数据块(数据块4’)已无法 被用于计算校验值,因此会被标记为无效,移动到回收池中。

如图6所示,以下结合实例具体描述步骤(5)的工作过程:

图6中的RAID5/6由5块磁盘组成,A0、A1、A2、A3与Ap构成一个条 带,其中Ap为该条带的校验值。假设旧数据A0与A1被缓存在SSD的保留 池中,而被修改后的脏数据A0’与A1’被缓存在SSD的数据池中。当需要 将A0’和A1’写回磁盘时,在传统的方案中,需要从磁盘中读出旧数据A0、 A1和旧的校验数据Ap,通过对A0’、A1’、A0、A1以及Ap得到新的校验 数据Ap’,然后将新数据和新的校验值写回到磁盘中。在本发明所使用的 方法中,A0与A1可以直接从SSD的保留池中读出,从而减少读磁盘的次数, 另一方面,可以在计算校验值之前就将A0’和A1’的写请求下发到磁盘, 而无需等待A0、A1读取完毕。

结合图7说明SSD中数据块在各个状态下的转换关系,其中各过程的 说明如下:

过程①,当新数据需要写入SSD时,无论是有新的热点数据需要被缓 存到SSD中或者是SSD中已有的热点数据被修改,都需要从空闲池中取出 一个空闲块,将新数据写入空闲块,并将该块移动到数据池中。

过程②,当SSD中的干净数据块被淘汰时,则直接将该块标记为无效, 移动到回收池中,如果是脏数据块,则还需要计算新校验值,并将新数据 和新校验值写回到磁盘中;另外,如果是脏数据被修改,则被修改前的脏 数据将无法用来计算新的校验值,也需要被标记为无效并移动到回收池。

过程③,当SSD中干净的热点数据被修改时,旧的数据块将从数据池 中移动到保留池。

过程④,当新数据已经写回到RAID磁盘中,保留池中对应的旧数据块 无法再被用来优化写性能,就需要被移动到回收池中;另外,当保留池中 的数据块数量大于阈值时,也要选择将一部分数据淘汰,移动到回收池中。

过程⑤,当空闲池中的数据块个数小于阈值时,系统需要对回收池中 的无效数据块进行擦除,并移动到空闲池中。

以下结合图8说明系统对回收池数据进行回收的过程:为了保证写入 数据时有足够的空闲数据块可用,因此系统需要在后台定期对数据块进行 回收。系统将定期检测SSD空闲池中的数据块个数以及系统负载的情况, 当空闲池中的数据块个数小于阈值或系统负载较低时将启动回收处理,擦 除回收池中的部分或全部无效数据块,并将它们移动到空闲池中。因为保 留池与数据池都有大小限制,所以经过该步骤之后,便能保证空闲池中有 足够的空闲块供使用。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等 同替换和改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号