18.5.2. 虚拟机中的磁盘 I/O 节流


当多个虚拟机同时运行时,它们可能会使用过量的磁盘 I/O 而干扰系统性能。KVM 虚拟化中的磁盘 I/O 节流使得能够对从虚拟机发送到主机的磁盘 I/O 请求设定限制。这可以防止虚拟机过度使用共享资源并影响其他虚拟机的性能。

要启用磁盘 I/O 节流,请对从附加到虚拟机的每个块设备发送给主机的磁盘 I/O 请求设置限制。

流程

  1. 使用 virsh domblklist 命令列出指定虚拟机上所有磁盘设备的名称。

    # virsh domblklist testguest1
    Target     Source
    ------------------------------------------------
    vda        /var/lib/libvirt/images/testguest1.qcow2
    sda        -
    sdb        /home/sample-disk.iso
  2. 找到您要节流的虚拟磁盘挂载的主机块设备。

    例如,如果您想要从上一步中节流 sdb 虚拟磁盘,以下输出显示该磁盘挂载在 /dev/nvme0n1p3 分区上。

    $ lsblk
    NAME                                          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
    zram0                                         252:0    0     4G  0 disk  [SWAP]
    nvme0n1                                       259:0    0 238.5G  0 disk
    ├─nvme0n1p1                                   259:1    0   600M  0 part  /boot/efi
    ├─nvme0n1p2                                   259:2    0     1G  0 part  /boot
    └─nvme0n1p3                                   259:3    0 236.9G  0 part
      └─luks-a1123911-6f37-463c-b4eb-fxzy1ac12fea 253:0    0 236.9G  0 crypt /home
  3. 使用 virsh blkiotune 命令为块设备设置 I/O 限制。

    # virsh blkiotune VM-name --parameter device,limit

    以下示例将 testguest1 虚拟机上的 sdb 磁盘节流为每秒 1000 个读写 I/O 操作,每秒的读取和写入 I/O 操作数为 50 MB。

    # virsh blkiotune testguest1 --device-read-iops-sec /dev/nvme0n1p3,1000 --device-write-iops-sec /dev/nvme0n1p3,1000 --device-write-bytes-sec /dev/nvme0n1p3,52428800 --device-read-bytes-sec /dev/nvme0n1p3,52428800

其他资源

  • 磁盘 I/O 节流可用于各种情况,例如,当属于不同客户的虚拟机在同一台主机上运行时,或者为不同的虚拟机提供服务质量保障时。磁盘 I/O 节流还可用来模拟较慢的磁盘。
  • I/O 节流可以独立应用于附加到虚拟机的每个块设备,并支持对吞吐量和 I/O 操作的限制。
  • 红帽不支持使用 virsh blkdeviotune命令来在 VM 中配置 I/O 节流。

    有关使用 RHEL 10 作为虚拟机主机时不支持的功能的更多信息,请参阅 RHEL 10 虚拟化中的不支持的功能

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部