用于存储系统中服务感知的奇偶校验放置的方法和系统.pdf

上传人:Y0****01 文档编号:22351 上传时间:2018-01-12 格式:PDF 页数:28 大小:2.81MB
返回 下载 相关 举报
摘要
申请专利号:

CN201510035650.4

申请日:

2015.01.23

公开号:

CN104809032A

公开日:

2015.07.29

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 11/10申请日:20150123|||公开

IPC分类号:

G06F11/10

主分类号:

G06F11/10

申请人:

DSSD股份有限公司

发明人:

J·S·邦威克

地址:

美国加利福尼亚州

优先权:

14/162,250 2014.01.23 US

专利代理机构:

上海专利商标事务所有限公司31100

代理人:

陆嘉

PDF下载: PDF下载
内容摘要

一种用于存储系统中的服务感知奇偶校验放置的方法和系统,包括:在接收指定目标SD的服务通知之后,将RAID条带写入到永久存储器,其中,RAID条带的奇偶校验块存储于目标SD上并且RAID条带中的数据块均不存储于目标SD上。方法还包括执行改进的垃圾收集操作,该改进的垃圾收集操作包括:标识永久存储器中的活RAID条带;将新的RAID条带写入到永久存储器中的新位置,其中新的RAID条带包括来自活RAID条带的数据的一部分的副本,并且新的RAID条带中的奇偶校验块存储于目标SD上;当完成改进的垃圾收集操作时,发出去除通知。

权利要求书

1.  一种非暂时性计算机可读介质,包括当由处理器执行时执行方法的指令,所述方法包括:
接收指定目标存储设备(SD)的服务通知,其中,所述目标SD是多个SD中的一个;
在接收服务通知之后:
接收将数据写入到永久存储器的请求,其中,所述永久存储器包括多个SD;
响应于所述请求,将独立磁盘冗余阵列(RAID)条带写入到所述永久存储器,其中,所述RAID条带包括第一数据块和第一奇偶校验块,其中,第一数据块中的至少一个包括数据的一部分,其中所述第一奇偶校验块包括通过使用第一数据块计算的奇偶校验值,并且其中,第一奇偶校验块存储于目标SD上,并且其中,第一数据块均不存储于目标SD上;
执行改进的垃圾收集操作,其中,改进的垃圾收集操作包括:
标识永久存储器中的活RAID条带,其中,所述活RAID条带包括第二数据块和第二奇偶校验块;
将新的RAID条带写入到永久存储器中的新位置,其中,所述新的RAID条带包括第三奇偶校验块和第三数据块,其中,所述第三数据块中的至少一个存储来自所述活RAID条带的数据的一部分的副本,其中所述第三奇偶校验块存储于目标SD上,并且其中,第三数据块均不存储于目标SD上;和
当完成改进的垃圾收集操作时,发出去除通知,其中,所述去除通知指示可从所述永久存储器去除所述目标SD。

2.
  根据权利要求1所述的非暂时性计算机可读介质,其中,在接收所述服务通知之前,所述活RAID条带存储于所述永久存储器中。

3.
  根据权利要求1所述的非暂时性计算机可读介质,其中,所述第二 数据块和第二奇偶校验块根据RAID条带几何结构来配置。

4.
  根据权利要求3所述的非暂时性计算机可读介质,其中,所述RAID条带几何结构指定所述第二奇偶校验块位于所述目标SD上。

5.
  根据权利要求4所述的非暂时性计算机可读介质,其中,所述第三奇偶校验块包括第三奇偶校验值,其中,所述第三奇偶校验值是所述第二奇偶校验块中的第二奇偶校验值的副本。

6.
  根据权利要求3所述的非暂时性计算机可读介质,其中,所述RAID几何结构指定所述第二奇偶校验块不位于所述目标SD上。

7.
  根据权利要求6所述的非暂时性计算机可读介质,其中,所述新的RAID条带与第二RAID条带几何结构相关联,其中,所述第二RAID条带几何结构指定所述第三奇偶校验块位于所述目标SD上。

8.
  根据权利要求7所述的非暂时性计算机可读介质,其中,所述第三奇偶校验块包括通过使用所述第三数据块计算的第三奇偶校验值。

9.
  根据权利要求1所述的非暂时性计算机可读介质,其中,所述新的RAID条带还包括第四奇偶校验块,其中,所述第四奇偶校验块不存储于所述目标SD上。

10.
  根据权利要求9所述的非暂时性计算机可读介质,其中,所述第三奇偶校验块包括Q奇偶校验值,并且,所述第四奇偶校验块包括P奇偶校验值。

11.
  根据权利要求1所述的非暂时性计算机可读介质,其中,所述多个SD中的至少一个是固态存储器设备。

12.
  根据权利要求1所述的非暂时性计算机可读介质,其中,所述永久存储器中的所有活RAID条带通过改进的垃圾收集操作来处理,其中所述所有活RAID条带在所述服务通知之前存储于所述永久存储器中,并且其中,所述活RAID条带是所述所有活RAID条带中的一个。

13.
  一种系统,包括:
包括多个存储设备(SD)的存储阵列;和
与所述存储阵列可操作地连接并且被配置为完成以下操作的存储控制器:
标识用于去除的目标SD;和
在标识所述目标SD之后,其中所述目标SD是多个SD中的一个:
接收将数据写入到所述存储阵列的请求;
响应于所述请求,将独立磁盘冗余阵列(RAID)条带写入到永久存储器,其中,所述RAID条带包括数据块和第一奇偶校验块,其中,所述数据块中的至少一个包括数据的一部分,其中,所述第一奇偶校验块包括通过使用所述数据块计算的奇偶校验值,并且其中,所述第一奇偶校验块存储于所述目标SD上,并且其中,所述数据块均不存储于目标SD上;
执行改进的垃圾收集操作,其中,所述改进的垃圾收集操作包括:
标识所述永久存储器中的活RAID条带,其中,所述活RAID条带包括第二数据块和第二奇偶校验块;
将新的RAID条带写入到所述永久存储器中的新位置,其中,所述新的RAID条带包括第三奇偶校验块和第三数据块,其中,所述第三数据块中的至少一个存储来自所述活RAID条带的数据的一部分的副本,其中,所述第三奇偶校验块存储于所述目标SD上,并且其中,所述第三数据块均不存储于所述目标SD上;和
当完成所述改进的垃圾收集操作时,发出去除通知,其中,所述去除通知指示可从所述存储阵列中去除所述目标SD。

14.
  根据权利要求13所述的系统,其中,对所述目标SD的标识基于来自用户的输入。

15.
  根据权利要求13所述的系统,其中,对所述目标SD的标识基于SD服务调度。

16.
  根据权利要求13所述的系统,其中,对所述目标SD的标识基于所述目标SD超过错误事件阈值。

17.
  根据权利要求13所述的系统,其中,所述多个SD中的每一个包括NAND闪存。

18.
  根据权利要求13所述的系统,还包括:
被配置为计算所述RAID条带的奇偶校验值的现场可编程门阵列(FPGA)。

19.
  根据权利要求13所述的系统,其中,存储控制器被配置为跟踪多个活RAID条带中的每一个RAID条带几何结构,其中,多个活RAID条带中的每一个RAID条带几何结构被用于执行改进的垃圾收集操作。

20.
  一种非暂时性计算机可读介质,包括当由处理器执行时执行方法的指令,该方法包括:
接收指定目标存储设备(SD)的服务通知,其中,所述目标SD是多个SD中的一个;
在接收所述服务通知之后:
接收将数据写入到永久存储器的请求,其中,所述永久存储器包 括多个SD;
响应于所述请求,将独立磁盘冗余阵列(RAID)条带写入到所述永久存储器,其中,所述RAID条带包括数据块和第一奇偶校验块,其中,所述数据块中的至少一个包括数据的一部分,所述第一奇偶校验块包括通过使用所述数据块计算的奇偶校验值,并且其中,所述奇偶校验块存储于所述目标SD上,并且其中,所述数据块均不存储于所述目标SD上;
执行改进的垃圾收集操作,其中,所述改进的垃圾收集操作包括:
将新的RAID条带写入到所述永久存储器中的新位置,其中,所述新的RAID条带包括来自所述存储阵列中的第一活RAID条带的第一数据的副本和来自第二活RAID条带的第二数据的副本,并且其中,所述新的RAID条带包括位于所述目标SD上的第二奇偶校验块;和
当完成所述改进的垃圾收集操作时,发出去除通知,其中,所述去除通知指示可从所述永久存储器去除所述目标SD。

21.
  根据权利要求20所述的非暂时性计算机可读介质,其中,所述新的RAID条带还包括填充数据块。

22.
  根据权利要求20所述的非暂时性计算机可读介质,其中,所述新的RAID条带还包括第三奇偶校验块,其中,所述第二奇偶校验块包括Q奇偶校验值并且所述第三奇偶校验块包括P奇偶校验值。

23.
  根据权利要求20所述的非暂时性计算机可读介质,其中,所述新的RAID条带还包括第三奇偶校验块,其中,所述第二奇偶校验块包括P奇偶校验值并且所述第三奇偶校验块包括Q奇偶校验值。

24.
  根据权利要求20所述的非暂时性计算机可读介质,其中,所述第一活RAID条带包括至少一个死数据块。

说明书

用于存储系统中服务感知的奇偶校验放置的方法和系统
背景技术
为了防止存储系统中的数据潜在的损失可能,执行复制方案常常是有利的。在写入数据和奇偶校验值时,当前的复制方案不考虑存储系统的硬件服务调度。
发明内容
一般地,在一个方面中,本发明涉及一种非暂时性计算机可读介质,包括当由处理器执行时执行方法的指令,该方法包括:接收指定目标存储设备(SD)的服务通知,其中,目标SD是多个SD中的一个;在接收服务通知之后操作:接收将数据写入到永久存储器的请求,其中,永久存储器包括多个SD;响应于该请求,将独立磁盘冗余阵列(RAID)条带写入到永久存储器,其中,RAID条带包括第一数据块和第一奇偶校验块,其中,第一数据块中的至少一个包括数据的一部分,其中第一奇偶校验块包括通过使用第一数据块计算的奇偶校验值,并且,其中第一奇偶校验块存储于目标SD上,并且,其中第一数据块均不存储于目标SD上;执行改进的垃圾收集操作,其中,改进的垃圾收集操作包括:标识永久存储器中的活RAID条带,其中,活RAID条带包括第二数据块和第二奇偶校验块;将新的RAID条带写入到永久存储器中的新位置,其中,新的RAID条带包括第三奇偶校验块和第三数据块,其中,第三数据块中的至少一个存储来自活RAID条带的数据的一部分的副本,其中第三奇偶校验块存储于目标SD上,并且,其中第三数据块均不存储于目标SD上;以及,当完成改进的垃圾收集操作时,发出去除通知,其中,去除通知指示可从永久存储器去除目标SD。
一般地,在一个方面中,本发明涉及一种系统。该系统包括:包括多个存储设备(SD)的存储阵列;和与存储阵列可操作地连接并且被配置为完成以下操作的存储控制器:标识要去除的该目标SD,在标识作为多个 SD中的一个的目标SD之后,完成以下操作:接收将数据写入到存储阵列的请求;响应于该请求,将独立磁盘冗余阵列(RAID)条带写入到永久存储器,其中,RAID条带包括数据块和第一奇偶校验块,其中,数据块中的至少一个包括数据的一部分,第一奇偶校验块包括通过使用数据块计算的奇偶校验值,并且其中,第一奇偶校验块存储于目标SD上,并且其中,数据块均不存储于目标SD上;执行改进的垃圾收集操作,其中,改进的垃圾收集操作包括:标识永久存储器中的活RAID条带,其中,活RAID条带包括第二数据块和第二奇偶校验块;将新的RAID条带写入到永久存储器中的新位置,其中,新的RAID条带包括第三奇偶校验块和第三数据块,其中,第三数据块中的至少一个存储来自活RAID条带的数据的一部分的副本,其中第三奇偶校验块存储于目标SD上,并且其中,第三数据块均不存储于目标SD上;和完成改进的垃圾收集操作时,发出去除通知,其中,去除通知指示可从存储阵列去除目标SD。
一般地,在一个方面中,本发明涉及一种非暂时性计算机可读介质,包括当由处理器执行时执行方法的指令,该方法包括:接收指定目标存储设备(SD)的服务通知,其中,目标SD是多个SD中的一个;在接收服务通知之后,完成以下操作:接收将数据写入到永久存储器的请求,其中,永久存储器包括多个SD;响应于该请求,将独立磁盘冗余阵列(RAID)条带写入到永久存储器,其中,RAID条带包括数据块和第一奇偶校验块,其中,数据块中的至少一个包括数据的一部分,其中第一奇偶校验块包括通过使用数据块计算的奇偶校验值,并且其中,第一奇偶校验块存储于目标SD上,并且其中,数据块均不存储于目标SD上;执行改进的垃圾收集操作,其中,改进的垃圾收集操作包括:将新的RAID条带写入到永久存储器中的新位置,其中,新的RAID条带包括来自存储阵列中的第一活RAID条带的第一数据的副本和来自第二活RAID条带的第二数据的副本,并且其中,新的RAID条带包括位于目标SD上的第二奇偶校验块;和当完成改进的垃圾收集操作时,发出去除通知,其中,去除通知指示可从永久存储器去除目标SD。
本发明的其它方面将通过以下内容清楚描述。
附图说明
图1表示根据本发明的一个实施例的系统。
图2表示根据本发明的一个或多个实施例的RAID条带。
图3表示根据本发明的一个实施例的数据结构。
图4表示根据本发明的一个或多个实施例的实现RAID写入操作的流程图。
图5表示根据本发明的一个或多个实施例的用于实现服务感知奇偶校验放置的流程图。
图6表示根据本发明的一个或多个实施例的用于实现改进的RAID写入操作的流程图。
图7表示根据本发明的一个或多个实施例的用于实现改进的垃圾收集操作的流程图。
图8A-8C表示根据本发明的一个或多个实施例的例子。
图9A-9B表示根据本发明的一个或多个实施例的用于实现改进的垃圾收集操作的流程图。
图10A-10B表示根据本发明的一个或多个实施例的例子。
具体实施方式
现在参照附图详细描述本发明的具体实施例。在本发明的实施例的以下详细描述中,为了使得能够更彻底地理解本发明,阐述大量的特定细节。但是,本领域技术人员显然可能在没有这些具体细节的情况下实施本发明。在其它情况下,为了避免不必要地使描述复杂化,没有描述公知的特征。
在图1~10B的以下描述中,在本发明的各种实施例中针对附图描述的任何组件可以与针对任何其它附图描述的一个或多个名称类似的组件等同。为了简洁起见,对这些组件的描述并不针对每个附图进行重复。因此,各附图的组件的每一个实施例在此结合作为参考,并且被假定为可选地存在于具有一个或多个名称类似的组件的每一个其它附图中。另外,根据本发明的各种实施例,附图的组件的任何描述要被解释为可选实施例,该可 选实施例的实施可以附加于、结合于或者替代针对其他任意附图中相应的名称类似组件所描述的实施例。
一般地,本发明的实施例涉及通过使用RAID方案在存储阵列中存储数据。具体而言,RAID方案使用关于要在确定新的和活RAID条带的RAID条带几何结构时被去除和/或替代的存储设备的信息。
对于本发明,这里使用的术语“RAID”指的是“独立磁盘冗余阵列”。虽然“RAID”指的是独立磁盘的任何阵列,但可通过使用任何类型的永久性存储设备实现本发明的实施例。
图1表示根据本发明的一个实施例的系统。如图1所示,系统包括一个或多个客户机(100A、100M)、RAID控制器(104)、存储器(106)、可选的现场可编程门阵列(FPGA)(102)和存储阵列(108)。
在本发明的一个实施例中,客户机(100A、100M)是指包括向RAID控制器(104)发出读取请求或写入请求功能的任何系统或任何在这样的系统上执行的处理。在本发明的一个实施例中,每个客户机(100A、100M)可包括处理器(未示出)、存储器(未示出)和永久存储器(未示出)。在本发明的一个实施例中,RAID控制器(104)被配置为实现RAID方案,该RAID方案包括以与在图4~6中描述的实施例一致的方式将数据写入到存储阵列(108),和根据在图7和图9A~9B中描述的实施例执行垃圾收集操作。进一步地,RAID控制器包括从存储阵列(108)读取数据(包括重构数据)的功能。在本发明的一个实施例中,RAID控制器(104)包括被配置为执行用于实现本发明的一个或多个实施例的指令的处理器,这里,指令存储于位于RAID控制器(104)内或者与其可操作地连接的非暂时性计算机可读介质(未示出)上。作为替代方案,可通过使用硬件实现RAID控制器(104)。本领域技术人员可以理解,可通过使用软件和/或硬件的任意组合实现RAID控制器(104)。
在本发明的一个实施例中,RAID控制器(104)与存储器(106)可操作地连接。存储器(106)可以是任何易失性存储器,包括但不限于动态随机存储器(DRAM)、同步DRAM、SDR SDRAM和DDR SDRAM。在本发明的一个实施例中,存储器(106)被配置为在各种数据(包括奇偶校 验数据)被存储于存储阵列中之前暂时存储这些数据。
在本发明的一个实施例中,FPGA(102)(如果存在的话)包括出于在存储阵列(108)中存储数据的目的计算奇偶校验值(例如,P奇偶校验值、Q奇偶校验值)的功能,和/或执行恢复通过使用RAID方案存储的损坏数据所需要的各种计算的功能。根据本发明的一个或多个实施例,RAID控制器(104)可使用FPGA(102)以卸载各种数据的处理。
在本发明的一个实施例中,存储阵列(108)包括一个或多个存储设备(SDD)(110A、110B)。各存储设备包括永久存储介质。存储设备的例子包括但不限于磁存储设备、光学存储设备、相变存储设备、固态存储设备、带驱动、任何其它适当类型的永久存储设备或它们的任意组合。
本领域技术人员可以理解,虽然图1示出了FPGA,但可以在没有FPGA的情况下实现本发明。并且,本领域技术人员可以理解,在不背离本发明的情况下,可以使用其它的组件以替代FPGA。例如,可通过使用下列设备来实现本发明:专用集成电路(ASIC)、图形处理单元(GPU)、通用处理器、能够出于在存储阵列中存储数据的目的计算奇偶校验值和/或执行利用RAID方案存储的损坏数据的恢复所需要的各种计算的任何其它硬件设备、包括被配置为出于在存储阵列(108)中存储数据的目的计算奇偶校验值和/或执行恢复利用RAID方案存储的损坏数据的恢复所需要的各种计算的硬件、固件和/或软件的组合的任何设备或它们的任意组合。
本领域技术人员可以理解,本发明不限于图1所示的配置。
图2表示根据本发明的一个或多个实施例的RAID条带。各RAID条带包括数据块和奇偶校验块。数据块与位于包括数据(与奇偶校验值相对)的存储设备上的RAID条带的一部分对应。奇偶校验块与位于包括RAID条带的奇偶校验值(或奇偶校验值中的一个)的存储设备上的RAID条带的一部分对应。各RAID条带包括数据块和一个或多个奇偶校验块。在给定的RAID条带内,各数据块和各奇偶校验块的尺寸相同。例如,对于给定的RAID条带,各数据块和各奇偶校验块可以为512字节。
在本发明的一个实施例中,各块(即数据块和奇偶校验块)可以是死块或活块。死块是仅包括陈旧数据或另外被标记为要被擦除的数据的块。 当数据的更新副本存储于存储阵列中的另一活块中,数据可被视为陈旧。死块中的数据不被用于服务读取请求。在本发明的一个实施例中,活块是包括被客户机和/或存储控制器积极使用的至少一些数据的块。活块中的数据被用于服务读取请求。
系统中的各RAID条带为活条带(200)或死条带(202)。如果RAID条带仅包括死块(例如,数据块4~7和奇偶校验块1),那么它是死条带。如果存储阵列中的RAID条带包括至少一个活块,那么它是活条带(200)。
如图2所示,RAID条带(200、202)包括数据块和奇偶校验块。数据块和奇偶校验块的数量可基于用于产生RAID条带的RAID方案而改变。例如,如果根据RAID-5产生RAID条带,那么RAID条带可包括四个数据块和一个奇偶校验块。在另一例子中,如果根据RAID-6产生RAID条带,那么RAID条带可包括四个数据块和两个奇偶校验块(例如,具有P奇偶校验值的奇偶校验块和具有Q奇偶校验值的第二奇偶校验块)。
在本发明的一个实施例中,P奇偶校验值是通过使用P奇偶校验函数产生的Reed-Solomon综合征(syndrome)。P奇偶校验函数可与可产生Reed-Solomon综合征的任何函数对应。在本发明的一个实施例中,P奇偶校验函数是XOR函数。
在本发明的一个实施例中,Q奇偶校验值是通过使用Q奇偶校验函数产生的Reed-Solomon综合征。Q奇偶校验函数可与可产生Reed-Solomon综合征的任何函数对应。在本发明的一个实施例中,Q奇偶校验值为Reed-Solomon代码。在本发明的一个实施例中,Q=g0·D0+g1·D1+g2·D2+…+gn-1·Dn-1,这里,Q与在本发明中描述的Q奇偶校验值中的任一个对应,g是字段生成器,并且,D的值与数据(存储于相应RAID条带中的数据块中)对应。
在本发明的一个实施例中,RAID条带几何结构限定RAID条带中的块中的每一个的位置。例如,参照活条带(200),RAID几何结构可指定以下方面:(i)RAID方案——RAID-5和(ii)奇偶校验块位于SD4上。类似地,对于死条带(202),RAID几何结构可指定以下方面:(i)RAID方案——RAID-5和(ii)奇偶校验块位于SD2上。根据SD的特定实现, RAID条带几何结构也可包括与奇偶校验块对应的SD内的特定块的位置。
通过使用该信息,存储控制器(或系统中的另一组件)可确定针对活条带(200)和死条带(202)的存储阵列中的数据块的位置。条带几何结构可包括附加的信息(例如,数据块位置)和/或以不同的方式指定的信息,而不背离本发明。
在本发明的一个实施例中,RAID条带中的各块位于不同的SD上。并且,存储阵列中的各RAID条带的宽度可相同并且跨过整个存储阵列(例如,图2中的5个SD)。
可通过使用不同的RAID方案(例如,RAID-4、RAID-5、RAID-6、多维RAID等)和不同的条带宽度实现本发明的实施例,而不背离本发明。进一步地,给定的存储阵列可同时在其中存储通过使用不同的RAID方案存储的不同宽度的RAID条带。
图3表示根据本发明的一个实施例的数据结构。在本发明的一个实施例中,RAID控制器包括用于实现本发明的实施例的一个或多个数据结构。
在本发明的一个实施例中,各块(300)的块状态(302)在存储阵列中保持。块状态(302)指示块是活块还是死块。在本发明的一个实施例中,对于存储于存储阵列中的各RAID条带(304)保持RAID条带几何结构(306)。进一步地,各RAID条带(304)的条带状态(308)保持,条带状态指示RAID条带(304)是活条带还是死条带。
关于流程图,虽然依次给出和描述了流程图中的各步骤,但本领域技术人员可以理解,可以以不同的次序执行、组合或者省略部分或全部步骤,并且可以并行执行部分或全部步骤。在本发明的一个实施例中,可以与图4~7和图9A~9B所示的其它步骤中的一个或多个并行地执行图4~7和图9A~9B所示的一个或多个步骤。
图4表示根据本发明的一个或多个实施例的实现RAID写入操作的流程图。具体而言,图4表示标识目标SD(参见图6)之前的常规RAID写入操作。
在步骤400中,接收用于将数据写入存储阵列的请求。请求可包括要存储的数据或者可包括对要存储的数据的参照。请求可采取任何形式而不 背离本发明。在步骤402中,产生数据块以存储于RAID条带(参见图2)中。数据块与要存储于存储阵列中的数据的一部分对应。RAID条带的数据块的数量基于RAID条带基于的RAID方案。在步骤404中,通过使用数据块计算新的RAID条带的一个或多个奇偶校验值。奇偶校验值的数量依赖于RAID条带基于的RAID方案。例如,如果基于RAID-6产生RAID条带,那么存在两个计算的奇偶校验值:P奇偶校验值和Q奇偶校验值。步骤404的结果是奇偶校验块组。在步骤406中,对于RAID条带确定RAID条带几何结构(参见图2)。RAID条带几何结构可与任何RAID条带几何结构对应。具体而言,奇偶校验值可位于存储阵列中的任何SD上。在步骤408中,数据块和奇偶校验块根据RAID条带几何结构(在步骤406中确定)作为RAID条带被写入到存储阵列。
与图4所示的处理的执行同时,存储控制器也可执行垃圾收集操作。一般地,垃圾收集操作包括:(i)标识具有零个或更多个死数据块的活RAID条带;(ii)仅通过使用来自在(i)中标识的RAID条带的活数据块产生新的RAID条带;(iii)将新的RAID条带写入到存储阵列中的可用位置;以及,(iv)擦除或恢复(reclaim)包括死RAID条带或在(i)中标识的RAID条带的存储阵列中的所有位置。在本发明的一个实施例中,垃圾收集操作还可包括:(i)标识具有至少一个死数据块的活RAID条带;(ii)对于在(i)中标识的包括至少一个死数据块的各RAID条带产生新的RAID条带;(iii)将新的RAID条带写入到存储阵列中的可用位置;和(iv)擦除或恢复包括在(i)中标识的RAID条带的存储阵列中的所有位置。
图5~7和图9A~9B表示针对标识目标SD之后的存储控制器的操作的流程图。
图5表示根据本发明的一个或多个实施例的用于实现服务感知奇偶校验放置的流程图。在步骤500中,接收标识目标SD的服务通知请求。目标SD与存储阵列中的如下所述的SD相对应,该SD(i)基于SD服务调度被调度替代(例如,各SD在服务一定的时间周期之后被替代)、(ii)基于来自用户(例如,系统管理员)的输入被替代或(iii)正在经历高于错误事件阈值的错误事件(例如,失败的写入操作、失败的读取操作等)。 错误事件阈值的设定可基于(a)用户输入、(b)默认值和/或(c)关于存储阵列和/或SD的历史信息。服务通知可基于以上列出的条目(i)、(ii)和/或(iii)由存储控制器发出和/或接收。作为替代方案,存储控制器可在不接收服务通知的情况下基于以上列出的条目(i)、(ii)和/或(iii)执行剩余的步骤。在本发明的另一实施例中,在存储控制器中执行的一个处理(或一组处理)可基于条目(i)、(ii)和/或(iii)产生服务通知,然后该服务通知在存储控制器执行图5中的步骤时被处理(或一组处理)接收。
在步骤502中,执行改进的RAID操作(参见图6)。仅当在步骤500(或在标识目标SD之后)与步骤506中的去除通知的发出之间接收到写入请求时执行改进的RAID操作。在步骤504中,执行改进的垃圾收集操作(参见图7和图9A~9B)。在本发明的一个实施例中,虽然仅在接收到写入请求时执行改进的RAID操作,但总是执行改进的垃圾收集操作。由此,如果在步骤500与改进的垃圾收集操作的完成之间未接收到写入请求,那么不执行步骤502。如上面讨论的那样,步骤502和504可被同时执行。在步骤506中,一旦完成了改进的垃圾收集操作,存储控制器(或在其上面执行的处理)就可发出指示可从存储阵列物理去除目标SD的去除通知。在步骤506之后,存储控制器根据图4服务写入请求,并且执行以上描述的垃圾收集操作(且不执行改进的垃圾收集操作),直到另一目标SD被标识。
图6表示根据本发明的一个或多个实施例的用于实现改进的RAID写入操作的流程图。
在步骤600中,接收将数据写入到存储阵列的请求。请求可包括存储的数据或者可包括对要存储的数据的参照。请求可采取任何形式而不背离本发明。在步骤602中,产生数据块以将其存储为RAID条带(例如,参见图2)的一部分。数据块与要存储于存储阵列中的数据的一部分对应。数据块的数量基于处于RAID条带中的数据块的数量。在步骤604中,通过使用数据块计算新的RAID条带的一个或多个奇偶校验值。奇偶校验值的数量依赖于RAID条带基于的RAID方案。例如,如果基于RAID-6产生 RAID条带,那么存在两个计算的奇偶校验值:P奇偶校验值和Q奇偶校验值。步骤604的结果是一个或多个奇偶校验块。在步骤606中,对于RAID条带确定RAID条带几何结构(参见图2)。RAID条带几何结构可与如下所述的任何RAID条带几何结构对应,该RAID条带几何结构(i)在新的RAID条带仅具有一个奇偶校验值的情况下将新的RAID条带的奇偶校验块放在目标SD上,以及(ii)在RAID条带包括多个奇偶校验值(例如,根据RAID-6实现新的RAID条带)的情况下将奇偶校验块中的新的RAID条带的奇偶校验值中的一个放在目标SD上。在存在多个奇偶校验值的情况下,会导致与数据重构有关的最高相对计算成本的奇偶校验值被放在目标SD上。例如,如果新的RAID条带包括P奇偶校验值和Q奇偶校验值,那么Q奇偶校验值被放在目标SD上,因为与P奇偶校验值相比,通过使用Q奇偶校验值重新产生RAID条带中的数据在计算上是更加昂贵的。
继续讨论图6,在步骤608中,根据RAID条带几何结构(在步骤606中确定),数据块和奇偶校验块作为RAID条带被写入存储阵列。
图7表示根据本发明的一个或多个实施例的用于实现改进的垃圾收集操作的流程图。
在步骤700中,选择RAID条带。RAID条带可以是在启动改进的垃圾收集操作时存在的存储阵列中的任何RAID条带。在启动改进的垃圾收集操作之后,在被写入存储阵列的RAID条带上并不执行在图7中描述的处理(作为改进的垃圾收集操作的一部分或者作为改进的RAID写入操作(参见图6)的一部分)。
在步骤702中,确定选择的RAID条带是否是死条带。如果选择的RAID条带是死条带,那么处理前进到步骤716;否则,处理前进到步骤704。
在步骤704中,利用例如在图3中描述的数据结构确定选择的RAID条带的RAID条带几何结构。
在步骤706中,确定RAID条带的奇偶校验值是否位于目标SD(在图5,步骤500上标出)上。如果RAID条带的奇偶校验值位于目标SD上,那么处理前进到步骤708;否则,处理前进到步骤710。
在本发明的一个实施例中,如果RAID条带包括多个奇偶校验值,那么步骤706也可包括不仅确定奇偶校验块是否位于目标SD上,而且包括确定目标SD上的奇偶校验块中的奇偶校验值是否与会导致与数据重构有关的最高相对计算成本的奇偶校验值对应(例如,如果RAID条带包括P奇偶校验值和Q奇偶校验值,那么确定Q奇偶校验值是否存储于位于目标SD上的奇偶校验块中)。如果奇偶校验块包括会导致与数据重构有关的最高相对计算成本的奇偶校验值,那么处理前进到步骤708;否则,处理前进到步骤710。
在步骤708中,RAID条带的副本存储于存储阵列中的新位置中。具体而言,RAID条带的副本包括RAID条带的数据块中的数据的副本和来自RAID条带的奇偶校验块的奇偶校验值的副本。在本发明的一个实施例中,不创建RAID条带的副本,而通过(i)将数据分成新的数据块、(ii)基于(i)计算新的奇偶校验值,并且使用该奇偶校验值来创建奇偶校验块、(iii)根据在步骤700中标识的RAID条带的RAID条带几何结构将数据块和奇偶校验值作为RAID条带存储于存储阵列中,获得来自RAID条带的数据和产生新RAID条带。然后处理前进到步骤716。
在步骤710中,对于选择的RAID条带产生新的RAID条带几何结构,该选择的RAID条带中的目标SD要存储奇偶校验块(如果仅在RAID条带中存在单个奇偶校验块)或者具有会导致与数据重构有关的最高相对计算成本的奇偶校验值的奇偶校验块(如果在RAID条带中存在多个奇偶校验块)。
在步骤712中,通过使用将要存储在新RAID条中的数据块中的数据块(其可与RAID条带的数据块中的数据块(在步骤700中选择)相对应,或者可以是基于RAID条带中的数据的新生成数据块(在步骤700中选择))来计算针对奇偶校验块的新奇偶校验值。根据实现的RAID方案,可以不重新计算奇偶校验值;而是,在新的RAID条带(即在步骤714中写入到存储阵列的RAID条带)中使用存在于奇偶校验块中的相同的奇偶校验值。
在步骤714中,根据在步骤710中确定的RAID条带几何结构,数据块和奇偶校验块(包括奇偶校验值)作为RAID条带写入到存储阵列中。 然后处理前进到步骤716。
在步骤716中,RAID条带(在步骤700中选择)被标记为已处理。在步骤718中,确定是否在存储阵列中存在剩余的RAID条带要处理。如果在存储阵列中存在剩余的RAID条带要处理,那么处理前进到步骤700;否则,处理前进到步骤720。
在步骤720中,在改进的垃圾收集操作的启动之前存在于存储阵列中的所有RAID条带已被处理,因而所有处理的RAID条带被擦除。一旦所有处理的RAID条带被擦除,可发出去除通知,该去除通知指示目标SD可被去除。去除通知可被发送给用户(例如,系统管理员),以指示可从存储阵列去除目标SD。虽然不必须,但也可在擦除已被处理的RAID条带时擦除所有死块。
在本发明的一个实施例中,图7中的处理结果将各RAID条带的至少一个奇偶校验块放在目标SD上并且将所有数据块从目标SD移动到存储阵列中的其它SD。
图8A~8C表示根据本发明的一个或多个实施例的例子。例子不是要限制本发明的范围。
关于图8A,考虑存储阵列具有五个存储设备(SD0~SD4)并且已接收指示需要去除SD2的服务通知的情形。图8A表示启动改进的垃圾收集操作时的存储阵列的状态。
在该阶段中,存储控制器如图7描述的那样启动改进的垃圾收集操作。具体而言,参照图8B,RAID条带RS_0被标识为具有其奇偶校验块(P0)不位于目标SD(即SD2)上的RAID条带几何结构的活RAID条带。因此,产生新的RAID条带,该新的RAID条带包括与RAID条带RS_0相同但具有新计算的奇偶校验块(P0′)和将奇偶校验块(P0′)放在SD2上的RAID条带几何结构。如图8B所示,RAID条带RS_4被写入到存储阵列中的新位置。
RAID条带RS_1和RS_2被下一个处理,并且,按照图7,并不对这些RAID条带采取任何行动,原因是它们是死条带。当在执行改进的垃圾收集操作时,存储控制器(未示出)接收将新数据作为RAID条带写入到 存储阵列的请求。新数据根据图6(步骤606)被写入到存储阵列,这里,RAID条带几何结构指定奇偶校验块(P4)位于目标SD上。RAID条带RS_5随后被写入到存储阵列。
最后,根据图7处理RAID条带RS_3。由于RAID条带RS_3的RAID条带几何结构将奇偶校验块(P3)放在目标SD上,构成RAID条带RS_3的块可被复制和存储为存储阵列中的新的RAID条带(RS_6)。在该阶段中,在启动改进的垃圾收集操作时存在于存储阵列中的所有RAID条带已被处理。因此,参照图8C,所有处理的RAID条带(即,RAID条带RS_0~RS_3)被擦除,并且,SD2可被去除。可在擦除死块之前去除SD2而不背离本发明。
图9A~9B表示根据本发明的一个或多个实施例的用于实现改进的垃圾收集操作的流程图。
在步骤900中,选择RAID条带。RAID条带可以是在启动改进的垃圾收集操作时存在的存储阵列中的任何RAID条带。在启动改进的垃圾收集操作之后,在被写入存储阵列的RAID条带上并不执行在图9A~9B中及描述的处理(作为改进的垃圾收集操作的一部分或者作为改进的RAID写入操作(参见图6)的一部分)。
在步骤902中,确定选择的RAID条带是否是死条带。如果选择的RAID条带是死条带,那么处理前进到步骤724;否则,处理前进到步骤904。在步骤904中,选择RAID条带中的数据块。在步骤906中,确定选择的数据块是否是活的。如果选择的数据块是活的,那么处理前进到步骤908;否则,处理前进到步骤922。
在步骤908中,确定是否在新的RAID条带中存在可用于存储选择的数据块的空间。换句话说,作为改进的垃圾收集操作的一部分,确定是否存在当前充满数据块的新的RAID条带(例如,参见图10A~10B)。如果在新的RAID条带中存在可用于存储选择的数据块的空间,那么处理前进到步骤912;否则,处理前进到步骤910。在本发明的一个实施例中,如果存在少于N个的与新的RAID条带相关的数据块,那么新的RAID条带不满,其中,RAID条带(当满时)包括N个数据块和M个奇偶校验块(其 中,例如,N≥4且M≥1)。
在步骤910中,当在新的RAID条带中不存在可用于存储选择的数据块的空间时,创建新的RAID条带。在本发明的一个实施例中,在创建新的RAID条带时,RAID条带不包括任何数据块或奇偶校验块。在步骤912中,数据块(在步骤904中选择)与新的RAID条带(即,在步骤910中创建的空的新的RAID条带,或在执行步骤908时包括至少一个其它数据块的不满的另一新的RAID条带)相关联。
在步骤914中,确定新的RAID条带是否充满(即,是与N个数据块相关的新的RAID条带)。如果新的RAID条带充满,那么处理前进到步骤916;否则,处理前进到步骤922。
在步骤916中,对于选择的RAID条带确定新的RAID条带几何结构,该选择的RAID条带中的目标SD要存储奇偶校验块(如果仅在RAID条带中存在单个奇偶校验块)或者具有会导致与数据重构有关的最高相对计算成本的奇偶校验值的奇偶校验块(如果在RAID条带中存在多个奇偶校验块)。
在步骤918中,通过使用与新的RAID条带相关的数据块对奇偶校验块计算新的奇偶校验值。在步骤920中,根据在步骤916中确定的RAID条带几何结构,数据块和奇偶校验块(包括奇偶校验值)作为RAID条带被写入到存储阵列中。然后处理前进到步骤922。
在步骤922中,确定是否在选择的RAID条带中存在要处理的附加数据块。如果在选择的RAID条带中存在要处理的附加数据块,那么处理前进到步骤904;否则,处理前进到步骤924。
在步骤924中,RAID条带(在步骤900中选择)被标记为已处理。在步骤926中,确定是否在存储阵列中存在要处理的剩余RAID条带。如果在存储阵列中存在要处理的剩余RAID条带,那么处理前进到步骤900;否则,处理前进到步骤928。
在步骤928中,确定是否存在剩余的任何不满的新的RAID条带。换句话说,确定是否存在包括需要存储于存储阵列中的数据块的不满RAID条带。如果存在剩余的任何不满的新的RAID条带,那么处理前进到步骤 928;否则,处理前进到步骤938。
在步骤930中,为了具有与RAID条带相关的总共N个数据块,一个或多个填充数据块与RAID条带(在步骤928中标识)相关联。填充数据块是包括例如全零的数据块,以不影响通过使用RAID条带中的非填充数据块产生的奇偶校验值。
在步骤932中,对于选择的RAID条带(即,在步骤928中标识的RAID条带)确定新的RAID条带几何结构,该选择的RAID条带中的目标SD要存储奇偶校验块(如果仅在RAID条带中存在单个奇偶校验块)或者具有会导致与数据重构有关的最高相对计算成本的奇偶校验值的奇偶校验块(如果在RAID条带中存在多个奇偶校验块)。
在步骤934中,通过使用与新的RAID条带相关联的数据块对奇偶校验块计算新的奇偶校验值。在步骤936中,根据在步骤932中确定的RAID条带几何结构,数据块和奇偶校验块(包括奇偶校验值)作为RAID条带被写入到存储阵列中。然后处理前进到步骤938。
在步骤938中,在启动改进的垃圾收集操作之前存在于存储阵列中的所有RAID条带已被处理,因而所有处理的RAID条带被擦除。一旦所有处理的RAID条带被擦除,就可发出去除通知,该去除通知指示目标SD可被去除。去除通知可被发送给用户(例如,系统管理员),以指示可从存储阵列去除目标SD。虽然不必须,但也可在擦除处理的RAID条带时擦除所有死块。
在本发明的一个实施例中,图9A~9B中的处理结果将各RAID条带的至少一个奇偶校验块放在目标SD上并且将所有数据块从目标SD移动到存储阵列中的其它SD。
图10A~10B表示根据本发明的一个或多个实施例的例子。例子不是要限制本发明的范围。
关于图10A,考虑存储阵列具有五个存储设备(SD0~SD4)并且已接收指示需要去除SD2的服务通知的情形。图10A表示启动改进的垃圾收集操作时的存储阵列的状态。
在该阶段中,存储控制器如图9A~9B描述的那样启动改进的垃圾收集 操作。具体而言,参照图10A,RAID条带RS_0是包括活数据块D0、D2和D3的活RAID条带。RAID条带RS_1是死条带。RAID条带RS_2是包括活数据块D9的活RAID条带。最后,RAID条带RS_3是包括活数据块D13和D15的活RAID条带。
根据图9A~9B处理RAID条带RS_0~RAID条带RS_3。具体而言,活数据块D0、D1、D3和D9被组合以形成新的RAID条带RS_4(参见图10B)。并且,活数据块D13和D15被组合以形成新的RAID条带RS_6;但是,由于各RAID条带包括四个数据块,为了在RAID条带RS_6中存在四个数据块,需要在RS_6中包括填充数据块D20和D21(参见图10B)。关于RAID条带RS_1,不在新的RAID条带中的任一个中重写RAID条带RS_1中的数据块,原因是RAID条带RS_1中的所有数据块是死的。
在本例子中,在执行改进的垃圾收集操作时(即,在RAID条带RS_4被写入到存储阵列之后),存储控制器(未示出)接收将新数据作为RAID条带写入到存储阵列的请求。新数据根据图6被写入到存储阵列(步骤606),其中,RAID条带几何结构指定奇偶校验块(P4)要位于目标SD上。RAID条带RS_5随后被写入存储阵列。
最后,RAID条带RS_6被写入到存储阵列。在该阶段中,在启动改进的垃圾收集操作时存在于存储阵列中的所有RAID条带已被处理。因此,参照图10B,所有处理的RAID条带(即,RAID条带RS_0~RS_3)被擦除并且SD2可被去除。可在擦除死块之前去除SD2而不背离本发明。
本领域技术人员可以理解,虽然参照单维RAID方案描述了本发明,但本发明的实施例可被扩展到任何多维RAID方案。例如,本发明的实施例可扩展到在美国专利No.8316260(在这里加入作为参考)中描述的多维RAID方案。
可通过使用由系统中的一个或多个处理器执行的指令实现本发明的一个或多个实施例。并且,这些指令可与存储于一个或多个非暂时性计算机可读介质上的计算机可读指令对应。
虽然关于有限数量的实施例描述了本发明,但受益于本公开的本领域技术人员可以理解,可以设计不背离这里公开的本发明的范围的其它实施 例。因此,本发明的范围应仅由所附的权利要求限定。

用于存储系统中服务感知的奇偶校验放置的方法和系统.pdf_第1页
第1页 / 共28页
用于存储系统中服务感知的奇偶校验放置的方法和系统.pdf_第2页
第2页 / 共28页
用于存储系统中服务感知的奇偶校验放置的方法和系统.pdf_第3页
第3页 / 共28页
点击查看更多>>
资源描述

《用于存储系统中服务感知的奇偶校验放置的方法和系统.pdf》由会员分享,可在线阅读,更多相关《用于存储系统中服务感知的奇偶校验放置的方法和系统.pdf(28页珍藏版)》请在专利查询网上搜索。

一种用于存储系统中的服务感知奇偶校验放置的方法和系统,包括:在接收指定目标SD的服务通知之后,将RAID条带写入到永久存储器,其中,RAID条带的奇偶校验块存储于目标SD上并且RAID条带中的数据块均不存储于目标SD上。方法还包括执行改进的垃圾收集操作,该改进的垃圾收集操作包括:标识永久存储器中的活RAID条带;将新的RAID条带写入到永久存储器中的新位置,其中新的RAID条带包括来自活RAID条。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1