论文部分内容阅读
随着互联网技术的飞速发展,存储系统所需要处理的数据量越来越大,而用户对存储系统的性能需求却越来越高。闪存技术的出现,给存储系统带来了巨大的变革,大大提升了外存储系统的性能,但是相对于用户对存储系统的性能需求以及计算机系统计算处理能力的增长,存储性能的提升还远远不够,外存储设备仍然还是整个计算机系统的瓶颈。此外,由于闪存自身的存储特性缺陷,使得基于闪存的固态存储存储系统在可靠性保障与性能提升方面都面临着严峻挑战。围绕高性能固态盘,提出了一种软件定义的相变存储器与闪存的多介质融合固态盘构建方法,提升固态盘小写性能和增强可靠性。新型非易失性存储器尤其是相变存储器的出现,为解决固态盘性能与可靠性瓶颈提供了新的途径。利用相变存储器的高性能存取速度、灵活的存取方式以及非易失性等存储特性与闪存融合,采用软件定义的方法,根据不同的应用负载需求,将相变存储器灵活地用作缓存或同级存储设备,有效地缓解了固态盘小写性能差的问题,减少了闪存的擦写次数,提升了固态盘设备性能的同时增强了固态盘可靠性。在关键技术研究的基础上,实现了软件定义多介质融合的固态盘硬件原型DSAL V1.0。通过在原型系统上进行测试发现,服务于小写较多的应用时,将相变存储器配置为同级存储设备,更有利于改善多介质融合固态盘的性能与可靠性;而对于以读请求为主的应用时,将相变存储器配置为闪存缓存更有利于降低系统请求平均响应时间。面向复杂多变的应用环境,提出了一种基于应用感知的可编程固态盘(A-SSD,Application-aware SSD)的构建方法,使得固态盘能够针对不同的应用采取不同的闪存转换层策略,并能够根据应用的变化进行动态调整,优化整体性能。由于闪存的存储特性缺陷,同一配置的固态盘在面向不同应用环境时存在着极大性能表现差异以及数据访问响应毛刺问题(数据访问响应时间超过某阈值,则认定为是响应毛刺)。基于应用感知的可编程固态盘A-SSD,通过将闪存转换层FTL(Flash Translation Layer)移动到主机端实现,并为应用层预留可编程接口,接收来自应用层语义信息,从而使得固态盘能够针对不同的应用采用不同的FTL策略,并能根据负载变化进行动态调整。利用从上层获取到的相关语义信息,根据数据的存储访问属性,采用聚合写入与数据布局优化方法,提升系统性能。进一步地,根据对应用负载特性感知,选择合适的时机对相应的固态盘进行全局的垃圾回收与磨损均衡策略,提高垃圾回收效率,减少垃圾回收以及磨损均衡等操作对系统性能的影响。以腾讯这种巨量用户、多应用混杂的复杂多变应用环境为例,采用腾讯真实应用负载进行压力测试发现,利用A-SSD构建的固态存储系统,始终能够有效地将固态盘设备的平均响应时间控制在10ms以内,并消除了响应毛刺,而采用通用固态盘构建的固态存储系统平均响应时间都在十几毫秒,并伴有无法忽略的响应毛刺。针对大规模固态存储系统,提出了软件定义固态盘全闪存阵列(S-RAIS,Software-defined Redundant Array of Independent SSD)的构建方法,采用直接物理块构建条带及追加写的方式,消除固态盘阵列的多重映射,提升固态盘阵列的性能。现有企业级应用中,为了提高存储系统的性能与可靠性,采用固态盘组建阵列时,通常面临着校验块频繁更新以及多重映射所带来的固态盘阵列服务性能急剧下降的问题。软件定义的固态盘构建全闪存阵列S-RAIS,分别从条带化映射与数据布局优化以及平滑的设备更新与数据恢复等多个方面研究提升固态盘阵列服务性能的方法。通过将固态盘阵列的条带映射表与固态盘中的闪存转换层FTL进行合并,直接以闪存物理块构建条带,有效地消除了固态盘阵列的多重映射问题,同时使得阵列控制器可以直接感知到固态盘中的闪存物理块,并通过软件定义的方法优化调整数据布局与请求调度策略。在数据更新时,利用闪存的特性,采用追加写的方式,使得旧数据仍与原条带保持条带关系,从而有效地减少了小写更新带来的频繁校验块更新开销,提升了数据更新写入时的响应性能。经过实验测试表明,在不同的负载测试条件下,S-RAIS有效减少闪存的擦除次数,最多达到50%,提升系统平均写响应时间5%~20%。