RAID条带重建方法及固态盘与流程

文档序号:13660706阅读:402来源:国知局
RAID条带重建方法及固态盘与流程

本发明涉及电子存储技术领域,尤其涉及一种raid条带重建方法及固态盘。



背景技术:

固态盘因为其高性能,低能耗,抗震性能好,已经作为磁盘的一个可行的代替品,广泛应用于服务器系统中。随着闪存工艺的进步,特别是从slc(single-levelcell)技术到mlc(multi-levelcell)技术和闪存制程工艺的发展,闪存容量日益增加。然而,闪存物理块的耐久力却大幅下降,可靠性显著降低。为保证数据的一致性,固态盘的制造商在盘内采用独立硬盘冗余阵列(raid)机制增强固态盘的可靠性。

raid要实现的功能之一是对控制器控制的多个存储器进行条带化,而对多个存储器进行条带化可使得原本相互独立不相关的存储器组合成一个整体的存储器阵列。条带化是通过控制器把连续的数据分割成相同大小的数据块,把每段数据分别写入到阵列中的不同存储器上的方法,条带为多个存储器组合形成的一个卷。

固态盘存储不同于传统磁盘,nand闪存是组成固态盘的常用的颗粒。闪存存储器的写操作需要经过“擦除-写入”两个操作过程。如果要对存储单元进行写入时,必须对该存储单元的物理块执行擦除操作,被擦除完成后,整个物理块的数据内容都被清空,擦除操作过程称为回收。

其中,nand闪存具有一些特殊的错误特性。nand闪存的原始误码率(rber)会随着编程/擦除次数(p/ecycle)的增加呈指数增长。而且,由于制造工艺的差异,固态盘在物理块、闪存页等存在错误分布不均匀的现象。例如,在相同的编程/擦除次数下,不同的物理块体现不同的错误特性;同一个物理块内,最高有效位组成的页(msb页)比最低有效位组成的页(lsb页)的原始误码率更高,msb页的耐磨损力小于lsb页的耐磨损力。

然而,传统的raid不考虑nand闪存这些错误特性,在固态盘整个生命期中采用固定强度的raid策略,导致在固态盘使用后期,其编程/擦除次数数目较大,闪存介质的原始误码率增大,固定强度的raid提供的可靠性不足以满足后期需求。

现有技术中,sehwanlee等人提出了寿命感知的raid方案,在不同的编程/擦除次数下,采用不同强度的raid策略,以最小的存储空间开销保证固态盘整个生命期的可靠性。但是,寿命感知的raid忽略了由于制造工艺导致的介质耐磨损力(物理块级和闪存页级)的差异,将编程/擦除次数作为磨损程度度量的唯一指标以调整raid强度,存在尽管牺牲了空间容量,但raid强度调整仍无法满足可靠性要求的情况。

一方面,忽略物理块级的耐磨损力之间的差异:当两个或两个以上具有较高原始误码率的物理块处于同一条带时,条带可靠性的提升无法抵消该物理块的磨损,从而会导致数据丢失;另一方面,忽略闪存页级的耐磨损力之间的差异:寿命感知的raid将lsb页和msb页分别组成raid条带,使得整个msb条带的磨损程度远远高于lsb条带,而由于物理块闪存页的最大磨损决定了物理块的磨损,导致了一个物理块不可用时,该物理块中的lsb页仍可使用,从而带来了空间浪费。

鉴于此,有必要提供一种可解决上述缺陷的可防止raid条带数据丢失且空间利用率高的可实现raid存储器阵列自适应重组的raid条带重建方法及固态盘。



技术实现要素:

本发明所要解决的一个技术问题是提供一种可实现raid存储器阵列自适应重组,提高固态盘可靠性和实用性的raid条带重建方法。

本发明所要解决的另一个技术问题是提供一种可防止raid条带数据丢失且空间利用率高的固态盘。

为解决上述技术问题,本发明采用如下所述的技术方案:一种raid条带重建方法,应用于固态盘以对raid存储器阵列的物理块组进行重建形成新的raid条带,该方法包括以下步骤:

步骤s1,检测物理块的原始误码率并将其更新记录于块状态表中;

步骤s2,根据块状态表中的原始误码率获取弱块信息;

步骤s3,通过块状态表获取弱块数目,对物理块进行条带组织;

步骤s4,将同一raid条带中的物理块的lsb页和msb页交错进行块内条带组织。

其进一步技术方案为:所述步骤s1具体包括以下步骤:

步骤s1.1,设置编程/擦除次数阈值、弱块原始误码率阈值及物理块组的总物理块数目;

步骤s1.2,判断编程/擦除次数是否达到需进行物理块原始误码率检测的编程/擦除次数阈值;

步骤s1.3,根据步骤s1.2的判断结果,当编程/擦除次数达到需进行物理块原始误码率检测的编程/擦除次数阈值时,对该物理块组进行物理块的原始误码率检测同时将其记录于块状态表中。

其进一步技术方案为:所述步骤s1.3具体为:根据步骤s1.2的判断结果,当编程/擦除次数达到需进行物理块原始误码率检测的编程/擦除次数阈值时,读取物理块组的每一物理块中的所有闪存页,获取闪存页的原始误码率,将每一物理块中最大的闪存页原始误码率作为该物理块的原始误码率,记录在块状态表中。

其进一步技术方案为:所述步骤s1还包括:根据步骤s1.2的判断结果,当编程/擦除次数未达到需进行原始误码率检测的编程/擦除次数阈值时,直接执行步骤s3。

其进一步技术方案为:所述步骤s2具体包括以下步骤:

步骤s2.1,根据步骤s1.3记录在块状态表的原始误码率值与设置的弱块原始误码率阈值进行比较,判断物理块的原始误码率值是否超过设置的弱块原始误码率阈值;

步骤s2.2,根据步骤s2.1的判断结果,如果物理块的原始误码率值超过弱块原始误码率阈值,则将该物理块标记为弱块,并记录在块状态表中。

其进一步技术方案为:所述步骤s2还包括:根据步骤s2.1的判断结果,当物理块的原始误码率值未超过设置的弱块原始误码率阈值,则直接执行步骤s3。

其进一步技术方案为:所述步骤s2.2还包括:

步骤s2.2.1,坏块预测判断,根据块状态表中的弱块信息获取弱块的数目,判断弱块数目是否超过物理块组中物理块数目的1/2;

步骤s2.2.2,根据步骤s2.2.1的判断结果,当弱块数目超过总物理块数目的1/2时,根据块状态表的原始误码率信息预判物理块组中原始误码率最大的物理块为坏块,对坏块进行替换,并将替换后新的物理块的原始误码率更新记录于块状态表中;否则直接执行步骤s3。

其进一步技术方案为:所述步骤s3具体为:通过块状态表的弱块信息获取弱块数目,并根据弱块数目进行条带组织,根据弱块数目确定物理块组的raid条带数目,将每一弱块置于不同raid条带中,确保每一raid条带中只有一个弱块,同时将固态盘中其余非弱块物理块按照数目平均分布在每个raid条带中。

其进一步技术方案为:所述步骤s3还包括:

步骤s3.1,于raid条带的物理块组的弱块中存放校验数据。

为解决上述技术问题,本发明还提供了一种固态盘,包括有raid存储器阵列及控制器,所述raid存储器阵列用于分段式存储数据;当固态盘的编程/擦除次数超过预设的阈值时,所述控制器用于执行上述的raid条带重建方法以对所述raid存储器阵列进行自适应重组,并对所述raid存储器阵列的存储数据进行管理。

本发明的有益技术效果在于:本发明提供的raid条带重建方法通过检测物理块的原始误码率,感知物理块的实际磨损,并根据原始误码率值将物理块按照弱块及非弱块物理块区分开,记录于块状态表中,根据弱块的数目对物理块进行条带组织,提高固态盘系统可靠性,延长固态盘的寿命,可有效保护数据,防止数据丢失;同时,将同一raid条带中的物理块的lsb页和msb页交错进行块内条带组织,克服物理块内数据页错误分布的不均匀性,避免出现可靠性差异太大而导致的存储空间浪费的问题,提高存储空间利用率。同时,本发明还提供了固态盘包括有raid存储器阵列及控制器,所述控制器可对raid存储器阵列进行自适应重组,以提高固态盘系统的可靠性,延长固态盘系统的寿命。

附图说明

图1是本发明raid条带重建方法的流程图。

图2是本发明raid条带重建方法的一具体实施例的流程图。

图3是本发明raid条带重建方法的物理块间raid条带组织示意图。

具体实施方式

为使本领域的普通技术人员更加清楚地理解本发明的目的、技术方案和优点,以下结合附图和实施例对本发明做进一步的阐述。显然,以下将描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明raid条带重建方法,针对以条带深度为块的raid条带组织或者物理位置为静止的raid条带组织,应用于固态盘中以对raid存储器阵列的物理块组进行重建,形成新的raid条带以存储数据,对raid条带进行动态调整,提高固态盘系统可靠性。

参照图1,所述raid条带重建方法包括以下步骤:

步骤s1,检测物理块的原始误码率并将其更新记录于块状态表中。

在本实施例中,采用read-after-write方式检测物理块的原始误码率,即在物理块编程后立刻读取写入的数据以检测数据的出错情况,从而检测物理块的原始误码率,具体的read-after-write方式可参考mingchangyang等人发表的《newera:newefficientreliability-awarewearlevelingforenduranceenhancementofflashstoragedevices》(proceedingsofthe50thannualdesignautomationconference,articleno.163,2013)期刊文献。

参照图2,在某些实施例,例如本实施例中,所述步骤s1具体包括以下步骤:

步骤s1.1,设置编程/擦除次数阈值、弱块原始误码率阈值及物理块组的总物理块数目。

其中,弱块为原始误码率高、耐磨损力较差的物理块。由于物理块内的原始误码率随着编程/擦除次数呈指数增长的特性,所述编程/擦除次数阈值的设置数目为多个,且设置的编程/擦除次数阈值的间隔也不同;则当编程/擦除次数数目较小时,物理块的磨损变化程度较慢,在一段编程/擦除次数变化范围内,物理块的磨损变化不大,因此,固态盘使用初期,设置的编程/擦除次数阈值的间隔较大;随着固态盘的使用,物理块的磨损变化随着编程/擦除次数的增长变化较快,因此设置的编程/擦除次数阈值的间隔较小。所述编程/擦除次数阈值用于判断是否进行物理块的原始误码率检测,当编程/擦除次数超过所述编程/擦除次数阈值时,则对物理块进行原始误码率检测;所述弱块原始误码率阈值用于判断物理块是否为弱块,当检测获得的物理块原始误码率超过所述弱块原始误码率阈值,则该物理块为弱块。

步骤s1.2,判断编程/擦除次数是否达到需进行物理块原始误码率检测的编程/擦除次数阈值。

通过设置编程/擦除次数阈值,可根据编程/擦除次数判断是否需要检测物理块的原始误码率,从而控制物理块原始误码率检测的频率,减少对物理块数据的读取,降低固态盘中物理块原始误码率检测的开销。固态盘使用过程中,其编程/擦除次数与设置的编程/擦除次数阈值进行比较,当编程/擦除次数超过所述编程/擦除次数阈值时,则对物理块进行原始误码率检测。

步骤s1.3,根据步骤s1.2的判断结果,当编程/擦除次数达到需进行物理块原始误码率检测的编程/擦除次数阈值时,对该物理块组进行物理块的原始误码率检测同时将对应的原始误码率值记录于块状态表中。

进一步地,步骤s1.3具体为:根据步骤s1.2的判断结果,当编程/擦除次数达到步骤s1.1设置的需进行物理块原始误码率检测的编程/擦除次数阈值时,读取该物理块组的每一物理块中的所有闪存页,获取闪存页的原始误码率,将每一物理块中最大的闪存页原始误码率值作为该物理块的原始误码率,记录于块状态表中。

步骤s2,根据块状态表中的原始误码率获取弱块信息。

其中,原始误码率高、耐磨损力较差的物理块标记为弱块。判断物理块是否为弱块的依据是物理块的原始误码率,检测物理块的原始误码率可为比较判断该物理块是否为弱块提供依据。所述弱块信息表示块状态表中标记为弱块的物理块的信息,用于得知哪些物理块为弱块。

继续参照图2,在某些实施例,例如本实施例中,所述步骤s2具体包括以下步骤:

步骤s2.1,根据步骤s1.3记录在块状态表的原始误码率值与设置的弱块原始误码率阈值进行比较,判断物理块的原始误码率值是否超过设置的弱块原始误码率阈值。

步骤s2.2,根据步骤s2.1的判断结果,如果物理块的原始误码率值超过弱块原始误码率阈值,则将该物理块标记为弱块,并记录在块状态表中。

在某些实施例,例如本实施例中,所述步骤s2.2还包括以下步骤:

步骤s2.2.1,坏块预测判断,根据块状态表中的弱块信息获取弱块的数目,判断弱块数目是否超过物理块组中总物理块数目的1/2。

步骤s2.2.2,根据步骤s2.2.1的判断结果,当弱块数目超过总物理块数目的1/2时,根据块状态表的原始误码率信息预判物理块组中原始误码率最大的物理块为坏块,对坏块进行替换,并将替换后新的物理块的原始误码率更新记录于块状态表中;否则直接执行步骤s3。

其中,坏块为当弱块数目超过总物理块数目的1/2时物理块组中原始误码率最大的物理块,坏块替换为将坏块中的有效数据迁移至原始误码率低的物理块或空闲的物理块,擦除坏块,并将所述原始误码率低的物理块的原始误码率或空闲的物理块的原始误码率记录于块状态表中。在擦除坏块前完成有效数据的迁移,可避免坏块替换时raid数据恢复导致的性能开销;该原始误码率低的物理块的原始误码率或空闲的物理块的原始误码率均低于弱块原始误码率阈值,即替换坏块后新的物理块为非弱块物理块,以确保弱块数目少于总物理块数目的1/2,使得固态盘中无坏块,防止物理块编写过程中数据的丢失。当弱块数目超过总物理块数目的1/2时,触发坏块预测判断,将原始误码率最大的物理块标记为坏块,有利于在后期固态盘使用过程中避免坏块的使用,降低出错率。

步骤s3,通过块状态表获取弱块数目,对物理块进行条带组织。

结合图2和3,进一步地,所述步骤s3具体为:根据块状态表的弱块信息,统计获取弱块数目,并根据弱块数目进行条带组织,根据弱块数目确定物理块组raid条带的数目,将每一弱块置于不同的raid条带中,确保每一raid条带中只有一个弱块,并将固态盘中其余非弱块物理块按照数目平均分布在每个raid条带中。

在某些实施例,例如本实施例中,所述步骤s1还包括:根据步骤s1.2的判断结果,当编程/擦除次数未达到需要进行物理块原始误码率检测的编程/擦除次数阈值时,直接执行步骤s3。

在某些实施例,例如本实施例中,所述步骤s2还包括:根据步骤s2.1的判断结果,当物理块的原始误码率值未超过设置的弱块原始误码率阈值,则直接执行步骤s3。

参照图3,图3展示了固态盘中物理块间的raid条带组合,图3中每一行代表固态盘使用情况不同时固态盘中物理块间的raid条带,其中,方块代表物理块,深色的物理块代表弱块。固态盘使用初期,其编程/擦除次数较小,当弱块数目为0时,整个固态盘所有物理块组成一raid条带,如图3中第一行所示;当弱块数目为1时,整个固态盘的非弱块物理块与该弱块组成一raid条带,如图3中第二行所示;当弱块数目为2时,此时raid条带数目为两个,每个raid条带只有一弱块,固态盘中其余非弱块物理块按照数目平均分配至每一raid条带中,如图3中第三行所示;随着固态盘的使用,弱块数目逐渐增加,当弱块数目达到固态盘物理块数目的一半时,则一个弱块及一个非弱块物理块组成一raid条带,此时达到最大的冗余度。

根据弱块数目确定raid条带数目,动态调整raid条带的大小和组成,可确保每一raid条带中只有一个弱块,通过提升raid的强度抵消弱块的磨损,从而避免数据丢失,提高固态盘的可靠性。

继续参照图3,在某些实施例,例如本实施例中,所述步骤s3还包括:

步骤s3.1,于raid条带的物理块组的弱块中存放校验数据。

其中,所述校验数据用于检测数据的完整性及准确性,结合图3,图中p代表校验数据,校验数据置于每一条带的弱块中,由于校验数据只会在数据恢复才进行读取,而弱块中只含有校验数据,可避免读干扰的影响,最小化对弱块的干扰,减少用户对错误率更高的弱块进行数据读取,从而减少读取过程中的ecc(errorcorrectingcode)解码时间,提高固态盘的读性能。当编程/擦除次数较小时,物理块组中的弱块数据较小,在固态盘使用初期,当物理组中不存在弱块时,校验数据置于raid条带中最后的物理块内。

基于上述步骤,随着固态盘的使用,弱块数目逐渐增加,当弱块数目达到总物理块数目的1/2时,每一raid条带均为一个弱块及一个非弱块组成的raid1,又校验数据置于弱块中,此时达到最大校验冗余度。每一raid条带只有一个弱块,可避免校验数据的冗余,降低存储空间浪费。

步骤s4,将同一raid条带中的物理块的lsb页和msb页交错进行块内条带组织。

将lsb页和msb页交错进行块内条带组织,可克服物理块内数据页错误分布的不均匀性,当msb页磨损至不可使用时,可利用lsb页对其进行数据恢复,避免msb页的数据遗失,从而避免物理页组出现可靠性差异太大而导致的存储空间浪费的问题,提高存储空间利用率。

本发明还提供了一种固态盘,包括有raid存储器阵列及控制器,其中,所述存储器阵列用于分段式存储数据;当固态盘的编程/擦除次数超过预设的阈值时,所述控制器用于执行上述的raid条带重建方法以对所述raid存储器阵列进行自适应重组,并对所述raid存储器阵列的存储数据进行管理,以提高系统的可靠性,延长系统寿命。

综上所述,本发明的raid条带重建方法通过检测物理块的原始误码率,感知物理块的实际磨损,并根据原始误码率值将物理块按照弱块及非弱块区分开,在条带组织操作中根据弱块的数目确定raid条带的数目,确保每个raid条带中只包含一个弱块,并将固态盘物理块组中的非弱块物理块按照数目平均分布在raid条带中,避免出现两个或两个以上的弱块处于同一raid条带导致的数据丢失,提高固态盘系统可靠性,延长固态盘的寿命;进行坏块检测,并在替换坏块时提前迁移有效数据,可有效保护数据,防止raid条带回收及坏块替换时数据丢失;将校验数据设置于弱块中以减少对错误率更高的弱块数据的读取,提高固态盘的读性能;同时,将同一raid条带中的物理块的lsb页和msb页交错进行块内条带组织,克服物理块内数据页错误分布的不均匀性,避免出现可靠性差异太大而导致的存储空间浪费的问题,提高空间利用率;设置坏块预测机制,预测物理块出错,以便防止后期固态盘使用时数据丢失。同时,本发明的固态盘可通过控制器对raid存储器阵列进行自适应重组以动态调整raid条带的组成和大小,提高系统的可靠性,防止数据丢失。

以上所述仅为本发明的优选实施例,而非对本发明做任何形式上的限制。本领域的技术人员可在上述实施例的基础上施以各种等同的更改和改进,凡在权利要求范围内所做的等同变化或修饰,均应落入本发明的保护范围之内。

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