TOS 2023 Paper 论文阅读笔记整理
问题
传统桌面和服务器应用程序向云的迁移给底层云存储带来了高性能、高可靠性和低成本的挑战。由于这些传统应用程序的I/O模式和一致性要求,与采用特定编程模型和范式(如MapReduce[22]和RDD[52])的云原生应用程序不同。使得迁移的应用程序难以享受云存储的高性能。尽管最近的研究在很大程度上提高了云卷服务的吞吐量,例如:利用磁盘并行性[35],但以低成本高性能满足云服务要求仍然具有挑战性。
本文方法
根据I/O跟踪分析表明,I/O模式具有以下特征:
-
小型I/O在应用程序中占主导地位,因此块存储的性能在很大程度上取决于小型读/写的性能,因此固态驱动器(SDD)比硬盘驱动器(HDD)更可取。但企业级固态硬盘的每比特价格约为HDD的5-10倍[4],而且固态硬盘的能源成本远高于HDD了[42]。这使得大部分客户将所有副本存储在SSD上的成本过高。
-
读取和写入都具有有限的局部性,表明使用SSD作为缓存层在加速应用程序的I/O方面是无效的,因为未命中率很高,而且SSD-HDD的性能差距很大。与RAMCloud[41]中的情况类似,考虑到高端SSD在延迟和IOPS方面都比HDD快三个数量级,即使1%的缓存未命中率也可能使平均I/O性能降低10倍。此外,使用缓存对改善尾延迟几乎没有帮助,这对于云存储保证服务级别协议(SLA)非常重要[23]。额外的缓存层也使块存储容易出现一致性问题[51],例如由于缓存配置错误导致Facebook服务严重中断[13]。
本文提出了分布式SSD-HDD混合存储结构 Ursa,将主副本存储在SSD上,将备份副本复制到HDD上,不使用SSD作为缓存层。
-
通过自适应日志,将小型备份随机写入转换为日志追加,然后异步重放并合并到备份HDD,从而弥补主SSD和备份HDD之间的性能差距。
-
为了提高效率,大型顺序写入直接在备份HDD上执行(绕过日志)。
-
日志附加(用于小型备份写入)和副本复制(用于大型备份写入)的组合使复制和恢复变得复杂。为此设计了高效的范围优化合并树(ROMT)来索引日志,支持快速日志查询,将连续范围的键组合为单个复合键{offset,length},用于(1)过时日志附加的快速无效;(2)故障恢复期间日志数据的快速读取。
-
在生产环境中,块存储必须为虚拟磁盘的I/O性能提供高可扩展性。因此扩展磁盘并行性优化,系统地利用了Ursa中的多级并行性,主要包括(1)磁盘上的并行I/O;(2)盘间分条、无序执行和无序完成;(3)在网络流水线中,提高Ursa的IOPS和吞吐量。
-
复杂的SSD-HDD混合结构使得难以保证强一致性[26]并提供高可用性。因此设计了Ursa的复制协议,以满足迁移的应用程序的强一致性要求。还设计了功能丰富的控制器和高效的机制,用于在线组件升级和并行开发
实验表明,Ursa在其混合模式下实现了与仅SSD模式(将所有副本存储在SSD上)几乎相同的性能,并且在仅SSD模式下也优于其他块存储(Ceph和Sheepdog),同时实现了更高的CPU效率(IOPS和每核吞吐量)。
总结
针对生产环境中的云服务,如何在不影响性能的情况下降低成本。本文提出了分布式SSD-HDD混合存储结构Ursa,将主副本存储在SSD上,将备份副本复制到HDD上,不使用SSD作为缓存层。包括以下技术:(1)通过自适应日志,将小型随机写入转换为日志追加,异步合并到HDD,从而弥补SSD和HDD之间的性能差距。(2)为了提高效率,大型顺序写入直接在HDD上执行(绕过日志)。(3)设计了高效的范围优化合并树(ROMT)来索引日志,将连续范围的键组合为单个复合键{offset,length},支持快速日志查询。(4)对磁盘并行性优化,利用Ursa中的多级并行性,包括:磁盘上的并行I/O;盘间分条、无序执行和无序完成;在网络流水线中,提高IOPS和吞吐量。(5)设计Ursa的复制协议,以满足强一致性要求。还设计了功能丰富的控制器和高效的机制,用于在线组件升级和并行开发。