论文部分内容阅读
基于固态硬盘的容错阵列系统能够很好的应对海量数据时代可靠存储和高效访问的挑战。一方面,容错阵列系统(简称阵列系统)能够提供高并发访问,并通过存储冗余信息保障数据可靠性;另一方面,具有更高访问性能、更低能耗和更强抗震性的固态硬盘能够进一步提升容错阵列系统的性能。然而,固态硬盘在磨损次数、可靠性、垃圾回收等方面的约束影响着固态硬盘容错阵列系统的性能和寿命。因此,本文通过结合固态硬盘约束和工作负载特点,优化固态硬盘容错阵列系统的性能和寿命。具体来说,我们在存储介质层设计编码方法以达到系统级别磨损均衡、在文件系统层研究工作负载感知机制、在应用层探索数据迁移方案。本文的主要研究内容与贡献如下:(1)固态硬盘阵列系统的磨损均衡研究为保证数据可靠性,基于固态硬盘的存储系统需引入冗余机制,例如,部署RAID阵列。传统的RAID5、RAID6,以及基于Reed-Solomon编码的阵容系统能够分别容忍一个存储设备、两个存储设备以及任意多个存储设备出错。然而,工作负载访问倾斜性和局部性特点使得阵列系统中各块固态硬盘老化不一致,整个阵列系统磨损不均衡。这种现象最终导致有些固态硬盘先于其他固态硬盘失效,进而缩短固态硬盘阵列系统使用寿命。为了解决这个问题,我们首先提出了对角线编码(DCS)。该编码能够将更新依赖性均匀地分布在所有固态硬盘上,进而取得较好的系统级别磨损均衡。针对用户请求总是对齐一个条带的访问模式——例如每个条带内部所有数据块接收相同的写操作次数,而各个条带之间接收的写操作次数可以不同一—对角线编码能够取得完美的系统级别磨损均衡、有效延长阵列系统寿命。为了放松上述约束,我们在实际部署中提出对角线编码增强型策略(DCS+)。该增强型策略采用缓存设计对不同类型的请求产生不同的响应,使得固态硬盘阵列系统在各种类型的数据访问模式下都能取得系统级别磨损均衡。我们基于实际的工作负载,在被学术界广泛认同的固态硬盘模拟器DiskSim+SSD Extension上开展广泛的实验。实验结果表明,我们的工作能够延长阵列使用寿命、提高系统访问性能。(2)固态硬盘阵列系统的工作负载感知机制研究传统的阵列系统常常采用读-修改-写或读-重构-写机制来进行校验块的更新。但是这两种机制依然会给阵列系统带来许多额外的I/0访问,进而降低固态硬盘阵列系统的性能。近年来,有研究者为固态硬盘阵列系统提出了弹性条带写机制。当数据块需要更新时,该机制将这些需要更新的数据块重构成新的条带,而不是对相应的校验块进行更新。弹性条代写机制能够有效的减少检验块更新带来的开销,然而,它引入了阵列级别垃圾回收操作,这将极大影响固态硬盘阵列系统的性能和寿命。为了解决这个问题,我们首先使用热度感知缓存将进入阵列系统的数据块按照它们的热度值进行划分并缓存进相应的热度组,然后使用分组弹性条带写机制将不同热度组的数据块写入阵列系统的不同区域。为了验证该设计的有效性,我们将热度感知缓存和分组弹性条带写机制部署到由八块固态硬盘构成的RAID5阵列系统中。实验结果表明,相较于弹性条带写机制,我们提出的机制能够减少26%--65%的阵列级别垃圾回收写操作,将平均响应时间降低到原先的17.2%--63.9%,并有助于达到系统级别磨损均衡。(3)固态硬盘阵列系统的数据迁移研究阵列系统经常需要通过增加存储设备(也称为阵列扩容)来提供更大的存储空间和更高的并行性。当增加的存储设备加入阵列系统之后,系统开始启动数据迁移。传统的数据迁移策略都是针对普通硬盘阵列系统进行设计,而固态硬盘固有的特点给阵列系统的数据迁移策略带来新的挑战。当固态硬盘阵列系统需要进行设备扩容时,工作负载的访问倾斜性和局部性已经使得各块固态硬盘触发垃圾回收操作的频率不尽相同,并导致各块固态硬盘的读写性能出现差异。因此,我们需要在这种异构的环境下为固态硬盘阵列系统设计新的数据迁移策略。于是,我们为异构的固态硬盘阵列系统分别提出快速扩容迁移策略和快速访问迁移策略。前者旨在从性能更好的固态硬盘读取更多的数据写入新加入的固态硬盘,目标在于快速完成数据迁移操作;后者旨在从性能更差的固态硬盘读取更多的数据写入新加入的固态硬盘,目标在于优化扩容后的用户访问性能。接着,我们通过DiskSim+SSD Extension开展广泛的模拟实验来验证这两种迁移策略的有效性。最后,我们实验分析了这两种数据迁移策略的优缺点,并分析了两种策略在系统部署时的优劣势与技术挑战,为系统实现者在固态硬盘阵列系统中部署数据迁移提供参考。