El *_*obo 32 performance qcow2 kvm-virtualization
我在设置 KVM 来宾时遇到了一些严重的磁盘性能问题。使用简单的dd
测试,qcow2 映像所在的主机分区(镜像 RAID 阵列)的写入速度超过120MB/s,而我的来宾写入速度从0.5 到 3MB/s不等。
time dd if=/dev/zero of=/tmp/test oflag=direct bs=64k count=16000
.似乎有很多指南可以调整 kvm 性能,我最终会到达那里,但似乎此时我应该获得比这更好的性能,所以似乎有些事情已经非常错误了。
更新 1
突然,当我现在回去测试时,它是26.6 MB/s;这更像是我对 qcrow2 的期望。如果有人对可能是什么问题有任何想法(并且以防它再次神秘地返回),我会留下这个问题。
更新 2
我不再担心 qcow2 的性能,只是使用原始图像切换到 RAID1 上的 LVM,仍然使用 virtio,但在磁盘驱动器上设置 cache='none' 和 io='native'。写入性能现在是 appx。135MB/s使用与上述相同的基本测试,所以当它可以很容易地完全解决时,弄清楚问题是什么似乎没有多大意义。
wom*_*ble 17
嗯,是的,qcow2 文件不是为极快的性能而设计的。从原始分区(或者,最好是 LV)中您会获得更好的运气。
lza*_*zap 10
如何使用 QCOW2实现最佳性能:
qemu-img create -f qcow2 -o preallocation=metadata,compat=1.1,lazy_refcounts=on imageXYZ
Run Code Online (Sandbox Code Playgroud)
根据 qcow2 开发人员的说法,最重要的是预分配,它提供了很好的提升。现在几乎可以和 LVM 相提并论了!请注意,这通常在现代(Fedora 25+)Linux 发行版中启用。
如果这不是生产实例,您也可以提供不安全的缓存(这是危险的,不推荐,仅适用于测试):
<driver name='qemu' cache='unsafe' />
Run Code Online (Sandbox Code Playgroud)
一些用户报告说,此配置在某些测试中胜过 LVM/不安全配置。
对于所有这些参数,最新的 QEMU 1.5+是必需的!同样,大多数现代发行版都有这些。
我使用此设置为 qcow2 图像取得了很好的效果:
<driver name='qemu' type='raw' cache='none' io='native'/>
Run Code Online (Sandbox Code Playgroud)
它禁用访客缓存并启用 AIO(异步 IO)。运行你的dd
命令在主机上给了我 177MB/s 和来宾上 155MB/s。映像放置在完成主机测试的同一 LVM 卷上。
我的qemu-kvm
版本是Ubuntu 12.04.2 LTS 中的1.0+noroms-0ubuntu14.8
内核3.2.0-41-generic
。
小智 5
如果您使用单个命令运行虚拟机,则可以使用参数
kvm -drive file=/path_to.qcow2,if=virtio,cache=off <...>
它使我的速度从 3MB/s 提高到 70MB/s
在旧的 Qemu/KVM 版本上,Qcow2 后端在未预分配时非常慢,如果在未启用回写缓存的情况下使用则更慢。浏览此处获取更多信息。
在更新的 Qemu 版本中,Qcow2 文件速度要快得多,即使不使用预分配(或仅使用元数据预分配)也是如此。尽管如此,LVM 卷仍然更快。
关于缓存模式的注释:回写缓存是首选模式,除非使用不支持或禁用磁盘缓存刷新/屏障支持的来宾。实际上,Win2000+ 客户机和任何 Linux EXT4、XFS 或 EXT3+barrier 安装选项都可以。另一方面,cache=unsafe永远不应该在生产机器上使用,因为缓存刷新不会传播到主机系统。主机意外关闭实际上可能会破坏来宾的文件系统。
小智 5
我遇到了完全相同的问题。在 RHEL7 虚拟机中,我有其他计算机连接的 LIO iSCSI 目标软件。作为 iSCSI LUN 的底层存储(后备存储),我最初使用 LVM,但后来切换到基于文件的映像。
长话短说:当后备存储连接到 virtio_blk(vda、vdb 等)存储控制器时 - 在我的环境中,连接到 iSCSI 目标的 iSCSI 客户端的性能约为 20 IOPS,吞吐量(取决于 IO 大小)约为 2- 3 MiB/秒。我将虚拟机中的虚拟磁盘控制器更改为 SCSI,并且我能够从 iSCSI 客户端获得 1000+ IOPS 和 100+ MiB/s 的吞吐量。
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none' io='native'/>
<source file='/var/lib/libvirt/images/station1/station1-iscsi1-lun.img'/>
<target dev='sda' bus='scsi'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
77905 次 |
最近记录: |