17.5.2. 在虚拟机中配置磁盘 I/O 节流
当多个虚拟机(VM)同时运行时,它们可能会使用过量磁盘 I/O 影响系统性能。要防止这种情况,您可以使用磁盘 I/O 节流。
使用磁盘 I/O 节流,您可以为从虚拟机发送到主机的磁盘 I/O 请求设置限制。这可以防止虚拟机过度使用共享资源并影响其他虚拟机的性能。
磁盘 I/O 节流在各种情况下很有用,例如当属于不同客户的虚拟机在同一主机上运行时,或者为不同的虚拟机提供服务质量保证时。磁盘 I/O 节流还可用来模拟较慢的磁盘。
要启用磁盘 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 操作,每秒 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重要红帽不支持使用
virsh blkdeviotune命令来在 VM 中配置 I/O 节流。+ 有关使用 RHEL 10 作为虚拟机主机时不支持的功能的更多信息,请参阅 RHEL 10 虚拟化中的不支持的功能。