存储容量平衡策略

https://blueprints.launchpad.net/watcher/+spec/storage-capacity-balance

目前,Watcher 仅优化计算节点。存储优化对于集中式存储(非分布式存储)也是一项重要的功能。

此规范将添加存储容量平衡策略以平衡存储容量,这也可以被视为平衡存储工作负载的一种方式。我们可以使用现有的目标(workload_balancing)和动作(volume_migrate)来实现此存储容量平衡。

问题描述

在当前的数据中心,存储后端容量可能不平衡,有些极高,有些空闲。这种情况会降低 I/O 读取/写入的性能,最终影响 QoS。可以通过存储容量平衡策略解决此问题。

此策略基于 cinder 池的容量利用率迁移卷。当池的容量利用率百分比高于指定阈值时,它会做出迁移卷的决定。卷的迁移应使卷所在池的容量利用率低于存储容量利用率阈值。

用例

作为管理员,我希望能够触发一个审计,以将存储容量利用率控制在某个阈值以下。

提议的变更

  • 扩展基础策略类,添加一个新的策略 - “存储容量平衡策略”

  • 使用 Cinder 客户端获取状态为可用或正在使用的卷,且没有快照,以及获取配置文件中列出的 exclude_pools 中排除的池之外的所有池。

  • 根据阈值将卷池分为两类:欠载或超载池

    under_pools = list(filter(lambda p: float(p.total_capacity_gb) -
    float(p.free_capacity_gb) < float(p.total_capacity_gb) * threshold, pools))
    
    over_pools = list(filter(lambda p: float(p.total_capacity_gb) -
    float(p.free_capacity_gb) >= float(p.total_capacity_gb) * threshold, pools))
    
  • 根据某些因素确定 migrate_volumes、源池和目标池

    • 一个卷是否挂载到虚拟机

    • 卷的大小,

    • 一个卷是否是镜像卷

    • priority

备选方案

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

<yumeng-bao>,<li-canwei2>

工作项

  1. 定义合适的阈值

  2. 编写 execute 函数以定位超载池

  3. 生成动作:volume_migrate 或 volume_retype 的函数。

依赖项

测试

需要单元测试和功能测试。

文档影响

添加关于如何使用此策略的文档。

参考资料

历史