姜鹏辉的个人博客 GreyNius

【精读】Curator:企业集群存储管理系统

2019-12-22

类型 内容
标题 Curator:Self-Managing Storage for Enterprise Clusters
时间 2017
会议 Symposium on Network System Design and Implementation
引用 Cano I, Aiyar S, Arora V, et al. Curator: Self-managing storage for enterprise clusters[C]//14th {USENIX} Symposium on Networked Systems Design and Implementation ({NSDI} 17). 2017: 51-66.

概览

作者构建了一个名为Curator的分布式集群存储管理系统。 它拥有以下功能:

  • 数据迁移
  • 恢复任务
  • 空间回收
  • 数据转换

这套系统在客户的集群中应用后,有明显的性能提升(主要表现在IO延迟的减少)和稳定性的提升。

背景

作者组成:2名来自华盛顿大学,8名来自Nutanix公司。

Nutanix(路坦力)公司在2009年成立,是一家提供超融合解决方案的设备厂商,他们的产品有两种形态:1、捆绑式的硬件 + 软件设备,2、纯软件模式
它在2013年进入中国市场,2016年和联想合作

在2017年发表的文章SDN实战团分享(三十三):Nutanix超融合之架构设计里面就已经讲到了Curator,作为超融合集群中的一个组件来运行。

Curator将负责整个集群中存储的管理和分配,包括磁盘平衡、主动清理等任务。每个节点上d都会运行Curator进程,而且受主Curator的控制,主Curator会负责任务和作业的委派。

结构

curator1

  • DSF(distributed storage fabric):分布式存储结构。
  • vDisk: 映射到UVM中的虚拟块设备。(例如用户在虚拟机中看到磁盘大小是20G,但实际上这块磁盘并不存在,而是属于底层某一个真实的硬盘)
  • extent:vDisk块中的数据。
  • extent组:多个extent被分组为一个单元称为extent组。 curator1

    功能

恢复任务(Recovery)

当出现磁盘故障或者磁盘被人为移除时,Curator将启动元数据扫描。
找到那些【故障磁盘】上存储的数据的备份。
通知底层系统,对备份不足的数据进行备份。

数据迁移(Data Migration)

数据分层: 目的:将最常用的数据仅保留在最快的存储层中,以减少用户访问的延迟。 向下迁移:将不常用的数据从SSD移动到HDD(或从HDD移动到云) 向上迁移:在重复访问数据时开始迁移

磁盘平衡

使不同磁盘的利用率接近于平均利用率。(数据横向迁移)

空间回收(Space Reclamation)

垃圾回收(GC,Garbage Collection):即减少碎片空间

  • 迁移extent:将活动的extent迁移到新的extent组,删除旧的extent组,然后回收旧的extent组的垃圾。 这个操作成本很高,因为它涉及数据读取和写入。 因此,Curator针对每个extent组执行成本收益分析,并仅选择收益(扩展组中的死区数量)大于成本(被迁移的有效extent的空间总和)的extent组进行迁移。
  • 打包extent:尝试在一个extent组中打包尽可能多的活动extent。
  • 截断extent组:通过截断extent组来回收空间,即减小其空间大小。

数据删除(DR,Data Removal):即删除操作失败导致的空指针。

数据转换(Data Transformation)

目的:节省存储空间
压缩(C,Compression)和纠删码(EC,Erasure Coding) 重复数据删除(DD,Deduplication):在扫描时,Curator根据指纹检测出重复的数据,并通知DSF执行重复数据删除。 快照树深度缩减(STR,Snapshot Tree Reduction): 如果打的快照过多,可能导致快照树很深,以至于读取效率很低。
解决方法是将部分数据从父节点复制到子节点。

执行策略

  • 事件驱动:例如磁盘发生故障时,立即进行恢复任务
  • 基于阈值:当个别磁盘使用率过高时,进行数据迁移
  • 定期部分扫描
  • 定期完整扫描

评估

评估恢复任务

大约60%的集群不存在数据备份不足的问题,95%的集群最多具有约为0.1%的备份不足的数据。显示了平均未复制数据的累积分布函数(CDF)占客户集群中总体存储容量的百分比(对数规模)。作者对剩余的40%集群进行观测,两周内并没有出现意外的停机事故。

评估数据分层

40%的集群的SSD利用率最多为70-75%。 在其余60%的集群中,大部分集群的SSD使用率在75%左右,这表明分层的任务已经被执行。
HDD的利用率通常较低,其中80%的集群的HDD利用率低于50%。

评估空间回收

90%的集群的垃圾少于2%,这证明垃圾收集任务非常有效。

评估磁盘平衡

60%的SSD和80%的HDD的最大磁盘使用率几乎与平均值相同。

是否启用-对比评估

Curator关闭时,所有数据优先存入SSD,在125分钟左右时存满,数据开始存入HDD。
在Curator启用时,当存入的数据到达一定阈值时,分层任务被启动,最终使SSD的使用率降到了70%。

当Curator打开时,延迟平均为12毫秒,关闭时,延迟平均为62毫秒。如果禁用Curator,随着时间的增长,延迟会逐渐增加。 推测这是因为SSD已经满了,所以新来的数据直接写入HDD,因此在读写操作时会产生较高的延迟。

当Curator打开时,CPU使用率会略高。 这是由于Curator内部的mapReduce架构导致的。 1

基于机器学习的改进

作者使用Q-learning算法对Curator进行了改进,但是这项技术尚未部署到Curator上。

Q-learning方法在IOPS的数量方面有一定的增长,但延迟却显著的减少。 1

不足

仅讲解了自己系统的设计方案和性能,而没有与其他的集群存储管理系统的性能进行横向对比


Comments

Content