用于棋盘RAID的方法和系统与流程

文档序号:12034264阅读:200来源:国知局
用于棋盘RAID的方法和系统与流程

本发明涉及数据存储领域,尤其涉及一种用于棋盘raid的方法和系统。



背景技术:

为了防止存储系统中数据的潜在丢失,实现复制方案通常是有利的。当前的复制方案只能在存储系统内的数据无法被读取之前维持有限数量的错误。



技术实现要素:

为了至少解决上述技术问题之一,本发明提出一种用于存储数据的方法,包括:接收写数据的请求;响应于请求:在持久性储存器中选择一组空闲物理位置;确定所述一组空闲物理位置的合计故障率;做出合计故障率小于用于持久性储存器的故障率阈值的第一确定;以及基于第一确定:利用数据的至少一部分计算奇偶校验值;及将数据和奇偶校验值写入到所述一组空闲物理位置。

本发明还提出一种系统,包括:存储阵列,包括多个存储设备(sd);及控制器,可操作地连接到存储阵列并且配置为:接收写数据的请求;响应于请求:在所述多个sd中选择一组空闲物理位置;确定所述一组空闲物理位置的合计故障率;做出合计故障率小于用于存储阵列的故障率阈值的第一确定;基于第一确定:利用数据的至少一部分计算奇偶校验值;及将数据和奇偶校验值写入到所述一组空闲物理位置。

本发明还提出一种非临时性计算机可读介质,包括指令,当指令被至少一个处理器执行时,执行方法,该方法包括:接收写数据的请求;响应于请求:在持久性储存器中选择一组空闲物理位置;确定所述一组空闲物理位置的合计故障率;做出合计故障率小于用于持久性储存器的故障率阈值的第一确定;基于第一确定:利用数据的至少一部分计算奇偶校验值;及将数据和奇偶校验值写入到所述一组空闲物理位置。

本发明还提出另一种用于存储数据的方法,包括:接收写数据的请求;响应于请求:从一组一个或多个预定的条带中选择条带,条带包括持久性储存器中的第一组空闲物理位置,其中条带与合计故障率相关联,并且其中合计故障率低于用于持久性储存器的故障率阈值;利用数据的至少一部分计算奇偶校验值;及将数据和奇偶校验值写入到第一组空闲物理位置。

附图说明

图1示出了根据本技术的一种实施例的系统;

图2示出了根据本技术的一种实施例的数据结构;

图3示出了根据本技术的一种或多种实施例的用于实现raid故障率阈值确定的流程图;

图4示出了根据本技术的一种或多种实施例的用于实现raid写操作的流程图;

图5a-5d示出了根据本技术的一种或多种实施例的例子。

具体实施方式

现在将参考附图详细描述本技术的具体实施例。在以下对本技术的实施例的详细描述中,阐述了各种具体细节,以便提供对本技术的更透彻理解。但是,对本领域普通技术人员显而易见的是,本技术没有这些具体细节也可以被实践。在其它情况下,众所周知的特征没有被详细描述,以避免不必要地使描述复杂化。

在以下图1-5d的描述中,在本技术的各种实施例中关于图所描述的任何部件,可以等效于关于任何其它图所描述的一个或多个相同名称的部件。为简洁起见,这些部件的描述将不对每个图进行重复。因此,每个图的部件的每种实施例都通过引入被结合并且被假定为可选地存在于具有一个或多个相同名称的部件的每个其它图中。此外,根据本技术的各种实施例,图中的部件的任何描述应当被解释为可以作为关于在任何其它图中对应的相同名称部件所描述的实施例的附加、与其结合、或者代替其来实现的可选实施例。

一般而言,本技术的实施例涉及利用raid方案在存储阵列中存储数据。更具体而言,raid方案使用关于存储装置的故障率的信息,以便选择其中要存储数据的各个存储装置上的物理位置。

为了本技术的目的,如本文所使用的术语“raid”指“独立磁盘冗余阵列”。虽然“raid”指任何独立磁盘阵列,但是本技术的实施例可以利用任何类型的持久性存储装置来实现。

图1示出了根据本技术的一种实施例的系统。如在图1中所示,系统包括一个或多个客户端(100a,100m)、raid控制器(104)、存储器(106)、可选地,现场可编程门阵列(fpga)(102)、以及存储阵列(108)。这些部件中的每一个在下面进行描述。

在本技术的一种实施例中,客户端(100a,100m)是任何系统或在包括向raid控制器(104)发出读请求或写请求的功能的系统上执行的过程。在本技术的一种实施例中,客户端(100a,100m)的每个可以包括处理器(未示出)、存储器(未示出)、以及持久性储存器(未示出)。在本技术的一种实施例中,raid控制器(104)被配置为实现raid方案,其包括以与图2-5d中所描述的实施例一致的方式将数据写入到存储阵列(108)。此外,raid控制器包括从存储阵列(108)读取数据(包括重建数据)的功能。在本技术的一种实施例中,raid控制器(104)包括配置为执行指令以实现本技术的一种或多种实施例的处理器,其中指令被存储在位于或可操作地连接到raid控制器(104)的非临时性计算机可读介质(未示出)上。可替代地,raid控制器(104)可以利用硬件来实现。本领域技术人员将理解,raid控制器(104)可以利用软件和/或硬件的任意组合来实现。

在本技术的一种实施例中,raid控制器(104)可操作地连接到存储器(106)。存储器(106)可以是任何易失性存储器,包括但不限于,动态随机存取存储器(dram)、同步dram、sdrsdram和ddrsdram。在本技术的一种实施例中,存储器(106)被配置为在各种数据(包括奇偶校验数据)被存储在存储阵列中之前临时存储这些数据。

在本技术的一种实施例中,fpga(102)(如果存在的话)包括为了在存储阵列(108)中存储数据的目的计算奇偶校验值(例如,p奇偶校验值,q奇偶校验值)的功能和/或执行恢复利用raid方案存储的损坏的数据所需的各种计算的功能。根据本技术的一种或多种实施例,raid控制器(104)可以使用fpga(102)来卸载各种数据的处理。

在本技术的一种实施例中,存储阵列(108)包括一个或多个存储装置(sdd)。每个存储装置包括持久性存储介质。存储装置的例子包括,但不限于,磁存储器装置、光存储器装置、相变存储器装置、固态存储器装置、带驱动器、任何其它合适类型的持久性存储器装置、或其任意组合。

本领域技术人员将理解,虽然图1示出了fpga,但是本技术可以在没有fpga的情况下实现。此外,本领域技术人员将理解,在不脱离本技术的情况下,其它部件可以代替fpga来使用。例如,本技术可以利用(一个或多个)专用集成电路(asic)、(一个或多个)图形处理单元(gpu)、(一个或多个)通用处理器、能够为了在存储阵列中存储数据的目的计算奇偶校验值和/或执行恢复利用raid方案存储的损坏数据所需的各种计算的任何其它硬件装置、包括配置为为了在存储阵列(108)中存储数据的目的计算奇偶校验值和/或执行恢复利用raid方案存储的损坏数据所需的各种计算的硬件、固件和/或软件的组合的任何装置、或其任意组合。

本领域技术人员将理解,本技术不限于在图1中示出的构造。

图2示出了系统中各种部件之间的关系。在本技术的一种实施例中,raid控制器(104)可以维护数据结构来跟踪下面关系中的一个或多个关系。

在本技术的一种或多种实施例中,存储阵列中的每个物理位置(204)与逻辑地址(200)和物理地址(202)相关联。此外,对于每个物理地址(202),raid控制器可以跟踪以下信息:(i)状态(206),其指示块是空闲块还是占用块;(ii)条带(208)从属关系,即,物理位置是否是条带的一部分(参见例如,图5a-5d),并且如果是,是存储阵列中的哪个条带(208);(iii)个体故障率(210),其指示在该物理位置处发生读或写故障的可能性。此外,raid控制器还可以为条带跟踪合计故障率(212),它是特定条带(208)中每个物理位置(204)的个体故障率(210)的合计。

在本技术的一种实施例中,个体故障率(210)可以由raid控制器来计算。可替代地,raid控制器可以从外部源获得个体故障率(210)。在本技术的另一种实施例中,给定物理位置的个体故障率(210)可以是已在特定物理位置上执行的编程/擦除(p/e)周期的数量的函数。在这种情况下,raid控制器可以为存储阵列中的每个物理位置跟踪p/e周期(例如,作为p/e周期值跟踪)并且然后利用该信息为每个物理位置计算个体故障率(210)。

p/e周期值可以表示:(i)已在由物理地址限定的物理位置上执行的p/e周期的数量或(ii)p/e周期范围(例如,5,000-9,999个p/e周期),其中已在由物理地址(202)限定的物理位置(204)上执行的p/e周期的数量在p/e周期范围之内。在本技术的一种实施例中,p/e周期是写数据到擦除块中的一个或多个页面(即,对于擦除操作最小可寻址的单元,通常,一组多个页面)和以任何次序擦除那一块。在本技术的一种实施例中,物理位置(204)对应于页面。p/e周期值可以每组物理位置中每物理位置被保存,或者和/或以任何其它粒度级别被保存。在本技术的一种实施例中,p/e周期值可以基于每页面、基于每块、基于每组块、和/或以任何其它粒度级别被存储。raid控制器包括当数据被写入到存储阵列中的物理位置(和/或从中擦除)时,适当地更新p/e周期值的功能。

图3-4示出了根据本技术的一种或多种实施例的流程图。更具体而言,图3-4示出了根据本技术的一种或多种实施例的用于在存储阵列中存储数据的方法。虽然流程图中的各个步骤被顺序地呈现和描述,但是普通技术人员将理解,这些步骤中的一些或全部可以以不同的次序执行、可以被组合或省略、并且步骤中的一些或全部可以被并行地执行。在本技术的一种实施例中,图3-4中示出的方法可以被并行地执行。

图3示出了根据本技术的一种或多种实施例的用于确定故障率阈值确定的流程图。在步骤302中,raid控制器获得关于存储阵列的信息。具体而言,raid控制器可以获得关于存储阵列中盘或ssd的数量、条带的宽度(例如,与每个raid条带相关联的物理位置的数量)、被实现的raid方案的类型(例如,raid4,raid5等)的信息。在步骤304中,获得存储阵列中的每个盘和/或ssd的个体故障率。个体故障率可以以上述的方式来确定。

在步骤306中,raid控制器基于在步骤304中获得的个体故障率数据确定故障率阈值。在本技术的一种实施例中,故障率阈值被确定为,使得具有小于或等于故障率阈值的合计故障率的足够数量的条带可以被存储在存储阵列中。例如,如果故障率阈值被设置为低于用于存储阵列中的物理位置的平均个体故障率,则只有有限数量的物理位置可以被使用来生成具有小于或等于故障率阈值的合计故障率的条带。这会导致存储阵列的低效使用。可替代地,如果故障率阈值被设置为高于存储阵列中的物理位置的平均个体故障率,则具有小于或等于故障率阈值的合计故障率的大量条带可以被存储在存储阵列中。虽然这会导致存储阵列的更高效使用,但是这也会导致在存储阵列中具有宽广范围的合计故障率阈值的条带。

在本技术的一种实施例中,故障率阈值利用关于在步骤302和304中的信息来实验性地确定。可替代地,用于确定存储阵列的故障率阈值的模型可以由raid控制器来实现,其中模型采用在步骤302和304中获得的信息作为输入,并且输出故障率阈值。

在本技术的一种实施例中,raid控制器可以采用个体故障率(在步骤304中获得)的平均值,并且确定可接受的与平均值的偏差。可接受的偏差可以是,例如,平均值的5%-10%。本领域技术人员将理解,可接受的偏差可以基于系统的负载、数据的关键性、或由管理员或其他第三方传送到raid控制器的其它配置文件信息,覆盖可变的范围。raid控制器可以使用前面提到的可接受的偏差过滤掉在步骤304中获得的这组个体故障率中的异常值。然后可以利用结果得到的这组个体故障率来确定故障率阈值。

在图3中绘出的过程可以由raid控制器在任何时间启动。例如,在图3中示出的方法可以在预定的时间段之后、如果对于给定盘或者ssd达到写错误的阈值、当盘或sdd被替换时、当已在持久性储存器上执行特定数量的p/e周期时等来执行,此外,该过程也可以由管理员或其他第三方启动。在本技术的一种实施例中,可以至少部分地通过raid控制器上的负载确定图3中示出的方法以其来执行的频率(例如,图3中示出的方法可以在较低数量的读或写请求期间被启动)。

图4示出了根据本技术的一种或多种实施例的用于实现raid写操作的流程图。在步骤402中,从客户端接收到写数据的请求。在步骤404中,raid控制器获得故障率阈值。在本技术的一种实施例中,由于故障率阈值可以随着时间而改变,因此步骤404在其中存储阵列的故障率随着时间而改变的情景下执行。在其中存储阵列的故障率阈值不随时间而改变的情景中,步骤404可以只被raid控制器执行一次。

在步骤406中,raid控制器选择一组空闲物理位置作为新raid条带的一部分。该组空闲物理位置可以通过获得存储阵列中的空闲物理位置的集合并且然后选择对应于条带宽度的多个物理位置来确定。例如,如果条带宽度是五,则五个物理位置被选择。此外,用于条带的物理位置的选择也可以考虑物理位置与其相关联的独立故障域(ifd)。在本技术的一种或多种实施例中,ifd对应于导致在给定位置处的数据不可访问的故障模式。每个ifd对应于存储阵列中独立的故障模式。例如,如果数据被存储在包括包含nand闪速的ssd的存储阵列中,则ifd可以是(i)ssd和(ii)ssd内的nand裸片。相应地,在本技术的一种实施例中,用于条带的物理位置跨至少一个ifd分布。例如,如果ifd是盘,则用于条带的物理位置可以被选择为,使得每个物理位置在单独的盘上。

在步骤408中,raid控制器获得在步骤406中确定的新raid条带中的每个物理位置的个体故障率,并且基于个体故障率计算新raid条带的合计故障率。合计故障率可以根据一个或多个数学公式来计算。例如,合计故障率可以是个体故障率的平均值。

在步骤410中,raid控制器确定计算出的合计故障率是否超过在步骤306中确定的故障率阈值。如果计算出的合计故障率低于故障率阈值,则该方法前进到步骤412;否则该方法进行到步骤418。

在本技术的一种实施例中,在步骤410中,raid控制器可以确定条带的合计故障率是否大于或等于最小故障率阈值和小于或等于最大故障率阈值。在这个情景下,合计故障率阈值在范围之内。范围的大小可能基于本技术的实现而不同。

继续图4的讨论,在步骤412中,raid控制器(或fpga)计算用于raid条带的奇偶校验值(例如,p-奇偶校验,q-奇偶校验等)。在步骤414中,raid控制器将数据(在步骤402中获得的)和(一个或多个)奇偶校验值(在步骤412中获得的)写入到raid条带中的物理位置(在步骤406中确定的)。在一个或多个实施例中,当确定哪些数据被存储在哪些物理位置中时,raid控制器也可以考虑个体故障率。例如,一些数据可能具有比其它数据更高的优先级,并且因此,将被写入到raid条带中的具有较低个体故障率的物理位置。在一种或多种其它实施例中,raid控制器可以将奇偶校验写入到具有最高个体故障率的物理位置。

在步骤416中,raid控制器向客户端通知成功的写操作。

返回到步骤410,如果计算出的合计故障率超过步骤410中的故障率阈值,则raid控制器前进到步骤418。在步骤418中,raid控制器确定是否存在可以被选择用于新raid条带的其它空闲物理位置的组合。如果存在其它组合可用,则过程前进到步骤406。如果不存在其它组合可用,则raid控制器在步骤416向客户端通知写操作已失败。

在本技术的一种或多种实施例中,选择具有在故障率阈值内的合计故障率的raid条带位置失败可以触发raid控制器来计算新的故障率阈值,即前进到图3的步骤302。在本技术的一种或多种可替代的实施例中,选择具有在故障率阈值内的合计故障率的raid条带位置失败可以触发服务状态或通知,以指示sdd中的一个或多个应该被修理或替换。

在本技术的一种或多种实施例中,raid控制器可以预先确定具有在故障率阈值内的合计故障率的一个或多个raid条带。换句话说,在一种或多种实施例中,raid控制器可以主动地执行,例如,步骤406-410。在一种或多种实施例中,raid控制器可以随机选择空闲物理位置来组成具有在故障率阈值内的合计故障率的一个或多个预先确定的raid条带。在一个或多个可替代的实施例中,对包含在特定raid条带中的空闲物理位置的选择可以是随机的、根据特定的图案(例如直线、棋盘或其它图案)、或者根据一些其它选择方案。

在一种或多种实施例中,raid控制器可以存储具有在故障率阈值内的合计故障率的预先确定的(一个或多个)raid条带的列表。此外,在一种或多种实施例中,raid控制器可以在例如,如在图3中描述的故障率阈值确定期间生成预先确定的(一个或多个)raid条带的列表。

在一种或多种实施例中,raid控制器可以使用在故障率阈值内的预先确定的raid条带的列表。换句话说,在一种或多种实施例中,raid控制器可以响应于在步骤402中接收到写请求,选择预先确定的raid条带之一并且然后前进到步骤412。

以下部分描述了根据本技术的一种或多种实施例的各种例子。这些例子不是要限制本技术的范围。

图5a-5d示出了根据本技术的一种或多种实施例的例子。虽然图5a-5d示出了具有特定几何形状的raid系统的例子,但是本领域技术人员将理解,本技术不限于此类几何形状并且适用于其它raid实现。

参考图5a,根据本技术的一种或多种实施例的存储阵列可以具有,例如,五个sdd(sdd1-sdd5)。此外,每个sdd在这个例子中具有四个物理存储位置。相应地,示例系统的总存储是标记为a-t的20个物理存储位置。每个物理位置具有对应于该位置将变得损坏的概率或百分比的个体故障率。

考虑其中所有物理位置最初是空闲并且写请求随后被接收到的情景。响应于接收到写请求,raid控制器选择第一线性集合空闲物理位置a-e。参见图5b。

一旦raid控制器选择空闲物理位置a-e来组成raid条带,raid控制器就如上所述通过获得每个物理位置的个体故障率来计算raid条带的合计故障率。假定合计故障率小于故障率阈值,则raid控制器然后计算奇偶校验并且将奇偶校验和数据写入到物理位置a-e。但是,如果合计故障率不小于故障率阈值,则raid控制器不能写入到选定的空闲物理位置的raid条带并且必须选择新的raid条带。

在本例子中,假定空闲物理位置a-e的合计故障率大于故障率阈值。相应地,参考图5c,raid控制器选择要被包含在条带中的一组新的物理位置(即,物理位置a、b、h、d和e)。在一种或多种实施例中,raid控制器可以通过选择完全新的一组位置来选择新的raid条带。可替代地,在其它实施例中,raid控制器可以确定具有最高个体故障率的物理位置,例如c,并且用新的物理位置,例如h,替换它。假定新raid条带的合计故障率小于故障率阈值,则raid控制器然后计算奇偶校验并且将奇偶校验和数据写入到物理位置a、b、h、d和e。但是,如果合计故障率不小于故障率阈值,则raid控制器不能写入到选定的空闲物理位置的raid条带并且必须再次选择新的raid条带。

在本例子中,假定空闲物理位置a-e的合计故障率大于故障率阈值。相应地,参考图5d,raid控制器选择另一组物理位置(即,物理位置a、q、h、n和j)。再次,raid控制器可以通过选择完全新的一组位置来选择新的raid条带。可替代地,在其它实施例中,raid控制器可以选择性地用其它物理位置替换物理位置。在这个例子中,a仍然在选定的组中、b被替换为q、h被替换为m、d被替换为s并且e被替换为j。raid控制器也可以考虑空闲的和那些不空闲的位置。例如,在图5d中,物理位置f、l、r、i和e可能不是空闲的(即,它们当前存储数据或者由于物理位置的个体故障率使得数据不应该被写入到这个物理位置而已被指定为不可用)。

本领域技术人员将理解,虽然本技术已相对于单个维度的raid方案进行了描述,但是本技术的实施例可以扩展到任何多维raid方案。例如,本技术的实施例可以扩展到在美国专利no.8,316,260(其通过引用被结合于此)中描述的多维raid方案。

有利地,实现本技术的一种或多种实施例的系统和方法可以展现出每条带大致在4倍和5倍之间的故障率改进。

本技术的一种或多种实施例可以利用由系统中的一个或多个处理器执行的指令来实现。此外,此类指令可以对应于存储在一个或多个非临时性计算机可读介质上的计算机可读指令。

虽然本技术已经关于有限数量的实施例进行了描述,但是受益于本公开内容的本领域技术人员将理解,可以设计出不背离如本文所公开的技术范围的其它实施例。因此,本技术的范围应当只由所附权利要求来限定。

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