Linux

KVM 客戶 IO 性能不佳

  • January 11, 2013

我有一個包含兩個 3TB 硬碟驅動器的 DOM0,配置為軟體 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 電梯,這又是一個 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 片段,它們實際上是普通的原始 fallocated 文件:

<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 之間幾乎相同的吞吐量。

感謝您的任何幫助。

即使使用 virtio,將映像文件用於來賓磁碟也會產生一定的相關成本。這可能會因圖像文件所在的同一物理設備上的其他 I/O 活動而有很大差異。

如果您使用 virtio 驅動程序將物理磁碟作為塊設備傳遞給 KVM 來賓,您會看到更接近本機吞吐量。分區或 LVM 卷也是如此,具有與上面相同的 I/O 警告(儘管這些通常仍然比磁碟映像文件更好)。

我們確實將映像文件用作我們的一些 KVM 來賓的磁碟,但我們盡可能將映像保存在與主機不同的物理驅動器或陣列上。

引用自:https://serverfault.com/questions/466223