KVM 客户机 IO 性能不佳

KVM 客户机 IO 性能不佳

我有一个 DOM0,里面有两个 3TB 硬盘,配置为软件 RAID1,还配有 16GB 内存。DOM0 的 Linux 发行版是 CentOS 6.3,虚拟机管理程序是 libvirt 管理的 KVM。

我遇到了 DOM0 和 DOMU 之间的性能下降,DOMU 写入吞吐量约为 DOM0 的 40%。我使用以下简单的 dd 命令测试了性能:

dd bs=1M count=1024 oflag=direct if=/dev/zero of=testb conv=f​​datasync

我为 DOM0 配置了 DEADLINE 提升器,为 DOMU 配置了 NOOP 提升器,而 DOMU 又是 Debian Unstable:

Linux vm1 2.6.32-5-amd64 #1 SMP Sun Sep 23 10:07:46 UTC 2012 x86_64 GNU/Linux

root@vm1:/home/paris# cat /etc/debian_version
6.0.6

至于 libvirt 中的 DOMU 配置,下面是其中一个虚拟驱动器的 XML 片段,它们实际上是普通的原始错误分配文件:

<disk type='file' device='disk'>
  <driver name='qemu' type='raw' cache='none' io='native'/>
  <source file='/mnt/vmstore2/disks/vm1/boot.img'/>
  <target dev='vda' bus='virtio'/>
  <alias name='virtio-disk0'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</disk>

我还注意到,在 libvirt 生成的命令行中,-drive 命令行开关的“if”参数设置为“none”而不是“virtio”:

-drive file=/mnt/vmstore2/disks/vm1/root.img,if=none,id=drive-virtio-disk2,format=raw,cache=none,aio=native
-device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x7,drive=drive-virtio-disk2,id=virtio-disk2

我不知道这种性能下降是否正常,但我读到 VIRTIO 应该能够保证 DOM0 和 DOMU 之间几乎相同的吞吐量。

感谢您的任何帮助。

答案1

即使使用 virtio,将映像文件用于客户磁盘也会产生一定数量的相关开销。这可能会因映像文件所在的同一物理设备上的其他 I/O 活动而有很大差异。

如果您使用 virtio 驱动程序将物理磁盘作为块设备传递给 KVM 客户机,您将看到更接近本机吞吐量。分区或 LVM 卷也是如此,具有与上述相同的 I/O 注意事项(尽管它们通常仍比磁盘映像文件表现更好)。

我们确实将图像文件用作某些 KVM 客户机的磁盘,但只要有可能,我们就会将图像保存在与主机不同的物理驱动器或阵列上。

相关内容