论文部分内容阅读
当今大规模分布式存储系统采用冗余存储的方式来维持数据的可用性。冗余信息产生方式有复制和纠删码。纠删码相对于复制,因提供相同的容错能力所需的存储开销大大降低,而被越来越多的存储系统所采用。另一方面,数据的快速增长以及用户对系统容量和性能需求的不断提高导致当前构建存储系统经常出现存储能力和带宽资源不足的情况。当应用需求超出系统能力,需要增加存储资源,并将部分数据迁移到新的存储设备上来缓解压力,这一操作被称作存储系统扩容。因此,研究基于纠删码的分布式存储系统扩容机制,对云存储以及数据中心背景下的数据存储具有重要意义。本文从设计纠删码存储系统的扩容算法、调度在线扩容过程中的用户I/O请求与系统I/O请求、优化扩容后的用户访问性能三个维度出发,研究分布式存储系统的扩容机制,主要研究内容与贡献如下:(1) Cauchy Reed-Solomon (CRS)扩容问题研究随着当前存储系统对容错要求的逐渐提高,考虑容任意错的CRS编码的扩容问题愈发重要。CRS编码主要适用于由众多存储节点以及互联网络组成的分布式存储系统(例,CleverSafe, OceanStore)。扩容过程需要迁移部分数据到新的存储设备,同时需要更新校验。数据迁移与校验更新带来的存储I/O与网络传输带宽开销直接影响扩容过程中的系统性能。本文研究了基于CRS编码的分布式存储系统的扩容问题,通过第一步设计扩容后的编码矩阵,第二步设计扩容过程中的数据迁移方案,第三步利用校验解码部分数据的思想进一步优化数据迁移过程,为CRS系统扩容设计了一个三阶段优化扩容算法。理论分析表明,本文的三阶段优化扩容算法相对于基本扩容算法,能有效逐步地减少CRS系统扩容过程中的系统I/O与网络传输带宽。通过在实际的分布式文件系统中部署CRS三阶段优化扩容算法,并与基本扩容算法进行广泛实验对比,本文证实了算法在单线程以及多线程架构下的有效性与实用性。(2)在线扩容问题研究在实际存储系统中,大多数上层用户级应用都要求系统提供7x24小时的在线服务。因此,当存储系统进行在线扩容的时候,用户的I/O请求和迁移的I/O请求相互竞争,势必影响扩容过程中的用户和迁移的响应时间性能。·然而,已有的扩容算法在设计之时都很少考虑用户I/O请求,在线扩容过程中的用户和迁移的响应时间性能势必降级。本文基于此问题,为已有众多的扩容算法设计了一个在线扩容优化机制Popularity-based Online Scaling (POS)。本文的在线扩容优化机制POS结合实际系统中用户访问的两个特征,即:数据热度和数据局部性,通过将原有存储空间划分为多个区域,并记录每个区域的热度(主要以访问频度为指标),从而改变扩容顺序,优先迁移热度高的区域,进一步利用数据局部性来更好地响应用户的读、写请求,同时可以减少用户访问对迁移性能的影响。POS可以看作一个插件,垂直地应用在已有众多的扩容算法之上,提高在线扩容性能。通过在实际的磁盘模拟器中部署POS,并与已有的RAID-0扩容算法FastScale开展广泛实验对比,本文证实了POS相对于传统扩容算法能显著提高在线扩容过程中的用户以及迁移的响应时间性能。(3)扩容后读、写性能优化研究存储系统扩容必须兼顾扩容过程中性能与扩容结束后用户读、写操作性能。一方面,扩容过程中的系统I/O开销越大,扩容时间窗口越长,对于扩容过程中的迁移与用户的响应时间性能影响越大:另一方面,扩容结束后,必须服务正常的用户读、写操作,扩容后的用户访问性能亦为重要。然而,已有的扩容算法主要考虑最小化扩容过程中的数据迁移量,并未考虑优化扩容后的用户读、写操作性能。由于扩容过程改变了系统的数据布局,所以,扩容过程直接影响扩容结束后正常的用户访问性能。因此,本文从扩容过程出发,考虑设计好的数据迁移方法。本文以RAID-0扩容为例,设计一种新的扩容算法PostScale。 PostScale实现了扩容过程中的最小化数据迁移量,在此约束条件下,保证了扩容结束后的连续数据块的最大化分散放置。通过如此设计,扩容时间窗口得以缩小,同时扩容结束后的用户读、写请求能利用存储系统最大的并发访问性能。模拟实验表明,PostScale相对于传统的两种RAID-0扩容算法round-robin、 FastScale皆有优势,PostScale能大大缩小round-robin的扩容时间窗口,亦能有效提高FastScale的扩容结束后用户读、写响应时间性能。本文的PostScale可以进一步延伸应用于RAID-5系统扩容、基于Reed-Solomon编码的分布式存储系统扩容,改进扩容后的用户访问性能。