6.5. 块 I/O 调试技术

这一部分描述了更多关于虚拟化环境中块 I/O 性能调试的技术。

6.5.1. 磁盘 I/O 节流

当若干虚拟机同时运行时,它们有可能因过度使用磁盘 I/O 而干扰系统性能。KVM 中的磁盘 I/O 节流可以为虚拟机发往主机的磁盘 I/O 请求设定限制。这样可以避免虚拟机过度使用共享资源,并防止影响其他虚拟机的性能。
磁盘 I/O 节流可以在各种情况下使用,例如当不同客户的客户虚拟机在同一台主机中运行时,或不同的客户虚拟机需要服务质量保证时。磁盘 I/O 节流还可以用于模拟更慢的磁盘。
I/O 节流可以在客机附加的每个块设备中独立应用,并支持吞吐量和 I/O 操作中的限制。请使用 virsh blkdeviotune 命令为虚拟机设置 I/O 限制。请参照以下示例:
# virsh blkdeviotune virtual_machine device --parameter limit
Device 为虚拟机附加的其中一个磁盘设备指定了独特的目标名称(<target dev='name'/>)或来源文件(<source file='name'/>)。使用 virsh domblklist 命令获取磁盘设备名称列表。
可选的参数包括:
total-bytes-sec
字节每秒的总吞吐量限制。
read-bytes-sec
字节每秒的读取吞吐量限制。
write-bytes-sec
字节每秒的写入吞吐量限制。
total-iops-sec
每秒的 I/O 操作总量限制。
read-iops-sec
每秒的读取 I/O 操作限制。
write-iops-sec
每秒的写入 I/O 操作限制。
例如,如需将 virtual_machine 虚拟机中的 vda 节流至 I/O 每秒 1000、吞吐量为每秒 50 MB,请运行以下命令:
# virsh blkdeviotune virtual_machine vda --total-iops-sec 1000 --total-bytes-sec 52428800

6.5.2. 多队列 virtio-scsi

多队列 virtio-scsi 提供了改进的存储性能和 virtio-scsi 驱动中的可扩展性。该命令使每个虚拟 CPU 可以使用独立队列和中断,从而不会影响到其他虚拟 CPU。

6.5.2.1. 配置多队列 virtio-scsi

Red Hat Enterprise Linux 7 中默认禁用多队列 virtio-scsi。
如需启用客机中的多队列 virtio-scsi 支持,在客机 XML 配置中添加以下命令,其中 N 为虚拟 CPU 队列的总数:
   <controller type='scsi' index='0' model='virtio-scsi'>
   <driver queues='N' />
    </controller>