分布式存储如何尽量避免增减节点带来的性能影响?

我们处于分布式存储产品选型阶段,做了一些POC测试,在压测阶段发现增减节点对I/O的性能影响都比较大。请问社区大神们如何尽量的降低这种影响?是否有好的处理模式。显示全部

我们处于分布式存储产品选型阶段,做了一些POC测试,在压测阶段发现增减节点对I/O的性能影响都比较大。请问社区大神们如何尽量的降低这种影响?是否有好的处理模式。

收起
参与13

查看其它 2 个回答zn_zhong的回答

讨论这个问题之前,我想先分析一下分布式存储增删节点是如何造成性能影响的?跟哪些因素相关?个人认为增加节点和删除节点是两个场景,可以分开来讨论。

  1. 增加节点导致的性能影响

1)元数据类型:分布式存储其中一个重要的特征是存储的数据会分布多台服务器上的不同硬盘上,简单来说,需要正确存取这些数据,系统需要知道哪些数据是存放在那台服务器的哪块硬盘上,这部分的信息需要有元数据来管理。而元数据的组织形式主要有两个大流派,元数据表和一致性哈希。

2)元数据表的原理:通过一个表格记录数据的映射信息,增加一个存储对象就多一条记录,元数据表会随数据量增加不断增大,至于增加节点并不会修改或变更现有的元数据信息,也就是说增加节点并不需要进行数据迁移。

3)一致性哈希的原理:为了避免元数据表的数据量不断膨胀的问题,使用一致性哈希算法运算直接得出数据映射信息,而不需要依赖元数据表。一致性哈希算法涉及 2 个重要变量,集群节点数和节点位于哈希环的位置。增加节点意味着变量更改了,会直接影响到数据分布的位置信息,引发额外的数据迁移操作,数据迁移实际上就是数据传输,肯定会影响性能的。

4)数据重平衡:无论元数据表还是一致性哈希都会遇到一个问题,新增节点上并没有数据,没有办法马上负载压力或者平衡容量空间。为了发挥新节点的功能,需要执行数据重平衡,将一部分数据迁移到新加入节点中,这将触发数据迁移。

上面分析了新增节点触发系统性能影响的原因,下面小结如何避免这种影响。

  • 降低元数据引发的数据迁移的影响
    可以选择以元数据表提供元数据服务的分布式存储软件,这种软件在新增节点的场景不会触发数据迁移,不影响系统性能。一致性哈希的元数据服务一定会产生数据迁移(虽然一致性哈希算法已经固定了虚拟节点数这个变量,但是增加节点依然会导致相邻节点之间的数据发生位置变更),是无法避免的。
  • 降低数据重平衡的影响
    数据重平衡由于与元数据引起的数据迁移不一样,它没有必要马上执行,可以通过设定迁移时间表来控制在闲时执行或者限制迁移带宽等,尽量降低对生产环境的影响。
  1. 删除节点导致的性能影响
  • 降低元数据引发的数据迁移的影响
    跟增加节点情况类似的,一致性哈希算法由于节点数以及节点位置拓扑发生了变更,必然会引起数据迁移,这是无法避免的,而选用元数据表方式可以避免这种情况。
  • 降低删除节点触发的数据迁移影响
    无论元数据表还是一致性哈希算法在删除节点的之前,必须将待删除节点上面的数据迁移到集群其他节点中,由于这个操作也不是非要马上完成的,我们可以通过限制迁移带宽来降低对生产环境的影响。
软件开发 · 2019-07-24
浏览3018

回答者

zn_zhong
产品经理SmartX超融合
擅长领域: 灾备存储超融合

zn_zhong 最近回答过的问题

回答状态

  • 发布时间:2019-07-24
  • 关注会员:4 人
  • 回答浏览:3018
  • X社区推广