论文部分内容阅读
固态盘(Solid State Drive)因具有高内部并行性、低随机访问延迟、低能耗以及小尺寸等优势,作为主流的存储设备被广泛用于个人电脑和数据中心。近年来,随着5G和大数据技术发展,对存储容量、性能和可靠性提出了更高需求。得益于半导体制程工艺技术、单元多比特技术以及三维堆叠技术的发展,闪存存储密度大幅提升。然而,存储密度的增长是以牺牲可靠性为代价,不可靠的存储介质会引起数据存储可靠性维护开销大和闪存空间利用率不足的问题。因此,如何设计具有高效能、可靠的闪存存储系统,成为了研究热点。
为了保证数据存储的可靠性,现有的可靠性算法引发了高昂的存储性能开销。例如,固态盘利用纠错码(Error Correction Code,ECC)纠正数据错误和块级阵列编码(Redundant Arrays of Independent Disks,RAID)提供系统级容错保护。纠错过程中产生的解码延迟、块级阵列编码中繁重的校验冗余数据和数据重建操作,极大地影响了系统性能。而且,为了满足闪存存储密度扩展带来的高可靠性需求,固态盘利用过长纠错码(即纠错码校验数据大小超过系统配置的校验数据空间)提高系统的纠错能力。然而,基于过长ECC存储策略中引发的读放大,大幅降低了系统读性能。
为了充分利用盘内多级并行性,控制器通常将不同并行单元间相同块编号的闪存块链接成超级块,并以超级块作为盘内闪存空间的管理粒度,在提高系统吞吐量的同时,均衡超级块内闪存块承受的编程/擦除次数。然而,由于闪存块间耐磨损力差异,超级块中弱块会过早损坏,加速了系统故障,致使固态盘失效时,大量闪存块未被充分利用,降低了固态盘内闪存空间利用率。
针对上述问题,围绕闪存错误时空特性,展开如下可靠性算法优化研究:
为了解决高解码延迟和过长ECC存储导致的读性能下降的问题,首先研究了闪存错误的时间特性(即闪存块的原始误码率随着编程/擦除次数的增加呈现指数型增长),然后探索了闪存生命期内需要的校验冗余数据与系统配置校验数据空间的关系,发现在闪存生命期早期(即闪存块承受的编程/擦除次数较小时),系统配置的校验数据空间没有被充分利用;在生命期末期(即闪存块承受的编程/擦除次数过大时),配置的校验数据空间无法满足系统可靠性需求。基于上述发现,提出了一种闪存错误时间特性感知的纠错码数据管理策略(LAE),根据闪存错误时间特性自适应调整纠错码数据管理策略。在生命期早期,充分利用配置的校验数据空间,利用短码长的纠错码降低解码延迟;在生命期末期,将过长ECC对应的校验数据作为用户数据的扩展,持久化到不同的并行单元中,充分利用盘内多级并行性,降低过长纠错码引发的读放大对读性能的影响。实验结果表明,与传统ECC编码策略相比,LAE可提升系统读性能最大达85.1%;与目前基于过长ECC的数据存储策略相比,LAE可提高系统读性能最大达30.0%。
针对盘内RAID组织策略中存在的繁重校验数据和数据重建导致的高昂存储性能开销问题,首先研究了固态盘生命期内的可靠性需求,发现RAID提供的可靠性在生命期大部分时期未被充分利用。然后探索了闪存错误空间特性(即经历相同编程/擦除次数的闪存块具有不同的原始误码率),提出了闪存错误空间特性感知的RAID条带管理策略(WARD)。一方面,WARD根据闪存块的实时磨损动态组织RAID条带,在保证数据存储可靠性的前提下,减少校验数据对系统性能的影响;另一方面,提出预警转移机制,提前迁移坏块中的用户数据,避免数据重建过程带来的性能抖动问题。实验结果表明,与传统的RAID组织策略相比,WARD在生命期内提供高且稳定的可靠性,读性能和写性能最大提升分别为19.5%和25.6%。
为了提高基于传统超级块组织策略的固态盘寿命,本文首先探索块级与页级的闪存错误空间特性,然后提出闪存错误时空特性感知的超级块组织策略(WAS)。WAS将页级闪存错误空间特性与闪存块磨损检测相结合,设计了一种高效准确的闪存块磨损实时检测策略。基于闪存块的实时磨损,WAS动态地组织超级块,让强块分担原本施加到弱块上的磨损,并且利用一种基于磨损的垃圾回收策略,进一步降低闪存块间的磨损差异,提高固态盘内空间利用率,延长系统的寿命。实验结果表明,WAS策略与传统超级块组织策略相比,以可以忽略的性能开销为代价,提高了30.78%闪存空间利用率,延长了51.3%固态盘寿命。
为了保证数据存储的可靠性,现有的可靠性算法引发了高昂的存储性能开销。例如,固态盘利用纠错码(Error Correction Code,ECC)纠正数据错误和块级阵列编码(Redundant Arrays of Independent Disks,RAID)提供系统级容错保护。纠错过程中产生的解码延迟、块级阵列编码中繁重的校验冗余数据和数据重建操作,极大地影响了系统性能。而且,为了满足闪存存储密度扩展带来的高可靠性需求,固态盘利用过长纠错码(即纠错码校验数据大小超过系统配置的校验数据空间)提高系统的纠错能力。然而,基于过长ECC存储策略中引发的读放大,大幅降低了系统读性能。
为了充分利用盘内多级并行性,控制器通常将不同并行单元间相同块编号的闪存块链接成超级块,并以超级块作为盘内闪存空间的管理粒度,在提高系统吞吐量的同时,均衡超级块内闪存块承受的编程/擦除次数。然而,由于闪存块间耐磨损力差异,超级块中弱块会过早损坏,加速了系统故障,致使固态盘失效时,大量闪存块未被充分利用,降低了固态盘内闪存空间利用率。
针对上述问题,围绕闪存错误时空特性,展开如下可靠性算法优化研究:
为了解决高解码延迟和过长ECC存储导致的读性能下降的问题,首先研究了闪存错误的时间特性(即闪存块的原始误码率随着编程/擦除次数的增加呈现指数型增长),然后探索了闪存生命期内需要的校验冗余数据与系统配置校验数据空间的关系,发现在闪存生命期早期(即闪存块承受的编程/擦除次数较小时),系统配置的校验数据空间没有被充分利用;在生命期末期(即闪存块承受的编程/擦除次数过大时),配置的校验数据空间无法满足系统可靠性需求。基于上述发现,提出了一种闪存错误时间特性感知的纠错码数据管理策略(LAE),根据闪存错误时间特性自适应调整纠错码数据管理策略。在生命期早期,充分利用配置的校验数据空间,利用短码长的纠错码降低解码延迟;在生命期末期,将过长ECC对应的校验数据作为用户数据的扩展,持久化到不同的并行单元中,充分利用盘内多级并行性,降低过长纠错码引发的读放大对读性能的影响。实验结果表明,与传统ECC编码策略相比,LAE可提升系统读性能最大达85.1%;与目前基于过长ECC的数据存储策略相比,LAE可提高系统读性能最大达30.0%。
针对盘内RAID组织策略中存在的繁重校验数据和数据重建导致的高昂存储性能开销问题,首先研究了固态盘生命期内的可靠性需求,发现RAID提供的可靠性在生命期大部分时期未被充分利用。然后探索了闪存错误空间特性(即经历相同编程/擦除次数的闪存块具有不同的原始误码率),提出了闪存错误空间特性感知的RAID条带管理策略(WARD)。一方面,WARD根据闪存块的实时磨损动态组织RAID条带,在保证数据存储可靠性的前提下,减少校验数据对系统性能的影响;另一方面,提出预警转移机制,提前迁移坏块中的用户数据,避免数据重建过程带来的性能抖动问题。实验结果表明,与传统的RAID组织策略相比,WARD在生命期内提供高且稳定的可靠性,读性能和写性能最大提升分别为19.5%和25.6%。
为了提高基于传统超级块组织策略的固态盘寿命,本文首先探索块级与页级的闪存错误空间特性,然后提出闪存错误时空特性感知的超级块组织策略(WAS)。WAS将页级闪存错误空间特性与闪存块磨损检测相结合,设计了一种高效准确的闪存块磨损实时检测策略。基于闪存块的实时磨损,WAS动态地组织超级块,让强块分担原本施加到弱块上的磨损,并且利用一种基于磨损的垃圾回收策略,进一步降低闪存块间的磨损差异,提高固态盘内空间利用率,延长系统的寿命。实验结果表明,WAS策略与传统超级块组织策略相比,以可以忽略的性能开销为代价,提高了30.78%闪存空间利用率,延长了51.3%固态盘寿命。