PVE 虚拟机传输限速(迁移/磁盘移动/备份/复制)

⚠️重点单位:bwlimit = KiB/s(千字节)
换算:10240 KiB/s = 10 MiB/s,102400 = 100MB/s

1、全局集群限速(网页端,推荐)

  1. 左侧【数据中心 Datacenter】→【选项 Options】→【带宽限制 Bandwidth Limits】→【编辑】
  • migration:节点间虚拟机迁移(含热迁移、带本地盘迁移)
  • move:磁盘跨存储移动
  • clone:克隆虚拟机
  • restore:备份恢复
  • default:默认兜底限速

示例:迁移限制 20MB/s → 填入 20480

bwlimit: migration=20480,move=20480

配置保存在 /etc/pve/datacenter.cfg,所有节点立刻生效,无需重启服务

2、单次迁移临时限速(CLI,单次生效,不改动全局)

在线热迁移,限制20MB/s(20480 KiB/s)

qm migrate 100 pek100-vms11 --online --bwlimit 20480
  • 100 = VMID
  • pek100-vms11 目标节点名
  • --bwlimit 0 取消限速

补充:migrate_speed 是虚拟机内存热迁移限速,单位MB/s,写在单个VM配置里
`bash

给VM100单独设置内存迁移上限15MB/s

qm set 100 –migrate_speed 15


## 3、存储层面限速(单独存储池)
编辑 `/etc/pve/storage.cfg`,给单个存储池增加bwlimit,只对这个存储生效

lvmthin: local-lvm
thinpool data
vgname pve
content rootdir,images
bwlimit default=20480,migration=20480


## 4、备份 vzdump 限速
### 全局备份限速 /etc/vzdump.conf

bwlimit: 20480

单次备份限速:
```bash
vzdump 100 --bwlimit 20480

5、存储复制 pvesr(VM增量复制)

⚠️ 这个单位不一样:–rate 单位 MB/s

# 创建VM100复制任务,限速15MB/s
pvesr create-local-job 100-0 pek100-vms15 --schedule "*/5" --rate 15

网页端:虚拟机→复制,编辑任务直接填写速率

6、虚拟机磁盘IO限速(虚拟机内部读写,不是网络迁移)

限制虚拟机硬盘读写速度(虚拟机内部跑业务的磁盘上限,不是节点之间迁移网络)

# VM100,读写上限30MB/s
qm set 100 --mbps 30
# 分开设置读、写
qm set 100 --mbps_rd 30 --mbps_wr 20

✅ 给你的建议(当前集群心跳震荡场景)

你的集群心跳和业务共用vmbr0,迁移流量会抢占心跳包,直接加剧corosync成员震荡

  1. 全局设置迁移限速:migration=10240(10MB/s),先低一点,保护集群心跳
  2. 迁移尽量避开业务高峰;优先用CLI加--bwlimit临时限速
  3. 不要一边跑大迁移,一边调试集群网络

单位换算速查表

目标速度 bwlimit(KiB/s)
10 MB/s 10240
20 MB/s 20480
50 MB/s 51200
100 MB/s 102400

常见坑

  1. 区分:bwlimit(KiB/s) vs migrate_speed(MB/s) vs pvesr –rate(MB/s),单位很容易搞混
  2. datacenter.cfg 的migration只限制磁盘块迁移;内存热迁移由migrate_speed单独控制
  3. 磁盘IO限速(–mbps)只管虚拟机内部读写,不控制跨节点迁移网络
作者:月影鹏鹏  创建时间:2026-10-04 00:30
最后编辑:月影鹏鹏  更新时间:2026-10-04 00:30