18.5.2. 虚拟机中的磁盘 I/O 节流
当多个虚拟机同时运行时,它们可能会使用过量的磁盘 I/O 而干扰系统性能。KVM 虚拟化中的磁盘 I/O 节流使得能够对从虚拟机发送到主机的磁盘 I/O 请求设定限制。这可以防止虚拟机过度使用共享资源并影响其他虚拟机的性能。
要启用磁盘 I/O 节流,请对从附加到虚拟机的每个块设备发送给主机的磁盘 I/O 请求设置限制。
流程
使用
virsh domblklist命令列出指定虚拟机上所有磁盘设备的名称。# virsh domblklist testguest1 Target Source ------------------------------------------------ vda /var/lib/libvirt/images/testguest1.qcow2 sda - sdb /home/sample-disk.iso找到您要节流的虚拟磁盘挂载的主机块设备。
例如,如果您想要从上一步中节流
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使用
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 虚拟化中的不支持的功能。