限制卷复制带宽

包含您的 Launchpad 蓝图的 URL

https://blueprints.launchpad.net/cinder/+spec/limit-volume-copy-bandwidth

本规范建议添加一个新的配置项来限制卷复制的带宽,以减轻在以下过程中对其他实例性能的干扰:

  • 从镜像创建新卷

  • 备份

  • 卷删除(当选择使用 dd if=/dev/zero 等命令擦除时)

问题描述

目前,卷复制操作会大量消耗磁盘 I/O 带宽,并可能降低其他客户机的速度。

在某些情况下已经实现了“ionice”选项,但并非总是可用。例如,当实例直接访问存储,且不经过 cinder 控制节点的 I/O 调度器时,ionice 无法控制 I/O 优先级,实例访问可能会变慢。

用例

提议的变更

将添加一个新的名为 ‘volume_copy_bps_limit’ 的配置项,用于确定卷复制消耗的最大带宽(字节/秒)。

当 CONF.volume_copy_bps_limit 为零(默认值)时,不应用任何限制,并且不创建 cgroup。

否则,将对卷复制应用带宽限制。例如,如果卷复制是通过 ‘dd’ 命令完成的,可以通过将 ‘dd’ 放入 blkio cgroup 进行限制来实现。

备选方案

当卷复制命令具有 I/O 限制选项时,应优先使用这些选项。将整个 cinder-volume 进程放入 blkio cgroups 也可以作为解决方案,但需要提供一种设置新卷创建时添加的块设备速率限制的方法。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

当卷复制 I/O 带宽受限时,完成卷复制需要更长的时间。用户需要在卷复制性能和对实例性能的干扰之间进行权衡。

其他部署者影响

  • 默认情况下禁用此功能。想要使用此功能的用户需要在 cinder.conf 中设置 ‘volume_copy_bps_limit’。

开发人员影响

实现

负责人

主要负责人

tomoki-sekiyama-g

工作项

  • 实现 cgroup blkio 设置函数

  • 为 volume_utils.copy_volume 实现 I/O 速率限制

  • 为其他镜像格式(如 qcow)实现 I/O 速率限制

依赖项

测试

文档影响

需要更新 cinder 客户端文档以反映新的配置项。

参考资料