作者:深耕行业的 SmartX 金融团队

场景问题

分布式存储集群在硬件配置确定后,集群性能的物理上限也随之确定。分布式存储集群因硬盘损坏、节点宕机等异常问题,触发数据恢复,若此时业务处于高峰期,集群的性能应当优先保证业务的使用,还是优先保证副本恢复以确保数据的安全?

本文描述了 SmartX 核心产品组件分布式存储 ZBS 的弹性恢复策略和实际应用效果。其中 SMTX OS 是包含 ZBS 组件的超融合产品软件,SMTX ZBS 是包含 ZBS 组件的存算分离产品形态——分布式存储软件。

SmartX 怎么做

3.0 / 3.5 版本

通过对副本恢复 / 迁移进行限速,单节点恢复和迁移限速分别是 100 MiB/s 和 40 MiB/s,防止副本恢复 / 迁移占用大量分布式存储性能,影响业务 I/O 性能。

4.0 版本

自 4.0 开始,SmartX 引入副本弹性恢复 / 迁移策略,提供了两种模式供用户选择,以便调整默认限速。

  • 智能调节(AUTO):此为默认模式。以保护业务 I/O 性能为前提,每个节点根据自身当前承载的业务 I/O 负载,自动调整本节点副本恢复 / 迁移速度。在业务 I/O 压力较大时,确保业务性能不受影响。
  • 静态调节(STATIC):用户人工设置集群最大速度限额。当用户希望最大程度保护业务 I/O 时,可以将恢复速度设置为较小的值(例如 40 MiB/s)。当用户希望加速恢复时,可以设置为较大值(例如 500 MiB/s)。静态设置在集群内全局生效,所有节点使用同一限额。

两种模式都需要保证设置的限速落于合法范围内。取值的依据是:

  • 默认值为 100 MiB/s
  • 上限值为 500 MiB/s
  • 下限值为 1 MiB/s

5.0.0 版本

针对节点不同的硬件配置,综合考虑存储网络(10 GbE、25 GbE、是否开启 RDMA)和存储介质(SATA HDD、SATA SSD、NVMe SSD、PMem)的能力,设计不同的业务压力触发降速阈值,确保节点自适应设置副本恢复 / 迁移速率阈值。

新版本

为了充分利用集群的数据处理能力,SmartX 分布式存储在以下新版本中再次优化策略,存储系统单次下发的恢复指令数量提升 28%,进一步合理利用集群硬件性能。

  • SMTX OS 4.0.12 及以上版本
  • SMTX OS 5.0.3 及以上版本
  • SMTX ZBS 5.1.0 及以上版本

业务 I/O vs. 恢复 / 迁移 I/O

在 SmartX 分布式存储中,I/O 分为业务 I/O 和数据恢复 / 迁移 I/O 两种。

智能调节(AUTO)的目标是,遵循业务 I/O 优先的原则,对数据恢复 / 迁移 I/O 的速率进行调节,以加速恢复任务的完成。

SmartX 分布式存储采用自研存储引擎,存储系统可自动识别业务 I/O 和数据恢复 / 迁移 I/O。根据业务 I/O 的 IOPS 和 BW 与设定阈值的对比,判定业务 I/O 为空闲或繁忙状态。

  • 当业务 I/O 的 IOPS 或 BW >= 阈值时,一次性将节点的副本恢复 / 迁移限速调整到默认值,起到保护业务 I/O 的目的;
  • 当业务 I/O 的 IOPS < 阈值且 BW < 阈值,且恢复 / 迁移速度超过当前限速的 80%,说明恢复 / 迁移速度快要达到限速,系统自动提高限速值,起到加速恢复的目的(每次提升限速为原值的 1.5 倍,直至达到上限值)。

该策略采用快速增减的调节方式,每隔 4s 重新判定业务 I/O 的大小,可以灵敏地根据负载调节限速。

常见场景

以常见硬件组合为例,数据恢复 / 迁移的最小、最大速率和触发限速的业务 I/O 阈值如下图所示

表格1.png

如需禁用恢复,使用命令 zbs-meta recover disable。

注意:禁用数据恢复会造成数据副本不及预期时无法恢复副本,业务系统在此状态下运行存在一定的数据风险,通常情况下数据恢复的策略建议是 ASAP(越快越好)。

功能验证

本次测试验证采用三台服务器组建超融合集群,集群部署完成后安装 CentOS 作为业务虚拟机,在虚拟机内部运行 Fio 模拟业务 I/O。

测试环境

硬件配置

表格2.png

软件版本

表格3.png

测试组网

  • 10GbE 网络
  • 未开启 RDMA

测试步骤

1. 虚拟机 vm-01 位于第一台服务器 node-01 上

2. 强制关闭第三台服务器 node-03,制造大量数据恢复环境

3. 观察到 node-01 数据恢复速度为 500 MiB/s 左右

4. 虚拟机 vm-01 中运行以下命令模拟业务 I/O

fio –ioengine=libaio –invalidate=1 –rw=randwrite –iodepth=128 –direct=1 –size=100g –name=smtx-fio –bs=256k –filename=/dev/vdb –time_based –runtime=3600

弹性副本1.jpg

5. 此时观察到 node-01 数据恢复速度立刻降到 100 MiB/s 以内

弹性副本2.jpg

6. 虚拟机 vm-01 中停止 Fio 命令,观察到 node-01 数据恢复速度从 100 MiB/s 逐步提高至 500 MiB/s

弹性副本3.jpg

弹性副本4.jpg

根据测试过程可以得出:

  • 集群没有业务 I/O 时,服务器 node-01 数据恢复速度达到上限值 500MiB/s 左右
  • 发起业务 I/O(虚拟机运行 Fio 模拟业务 I/O),恢复速度从 500 MiB/s 下降至 100 MiB/s
  • 停止业务 I/O(虚拟机取消运行 Fio 命令),恢复速度从 100 MiB/s 逐步上升到 500 MiB/s

总结

集群异常触发数据恢复时,SmartX 分布式存储优先确保业务 I/O 正常使用,并将数据恢复 / 迁移速度调整至合理数值,同时满足业务优先和数据安全的要求,避免数据恢复占用大量集群性能,导致业务没有性能可用,引发业务异常。

SmartX 在分布式存储软件设计之初已充分考虑硬件故障带来的风险和运维复杂度,并通过弹性副本恢复策略、磁盘异常(磁盘不健康、亚健康、寿命不足等)处理机制等功能自动智能地处理硬件故障,确保硬件故障时业务稳定性,同时进一步降低运维操作的复杂度,减少运维人员的工作量。

其他功能后续会有介绍。

点击下载 SMTX OS 社区版免费体验、使用弹性副本恢复等 SmartX 超融合核心功能。