AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 407842
Accepted
El Yobo
El Yobo
Asked: 2012-07-15 22:36:41 +0800 CST2012-07-15 22:36:41 +0800 CST 2012-07-15 22:36:41 +0800 CST

令人难以置信的低 KVM 磁盘性能(qcow2 磁盘文件 + virtio)

  • 772

我在设置 KVM 来宾时遇到了一些严重的磁盘性能问题。使用一个简单的dd测试,qcow2 映像所在的主机上的分区(镜像 RAID 阵列)的写入速度超过120MB/s,而我的客户机的写入速度为0.5 到 3MB/s。

  • 客户机配置了几个 CPU 和 4G 内存,目前没有运行任何其他东西;目前这是一个完全最小的安装。
  • 性能使用time dd if=/dev/zero of=/tmp/test oflag=direct bs=64k count=16000.
  • 来宾配置为使用 virtio,但这似乎对性能没有影响。
  • 主机分区是 4kb 对齐的(无论如何,主机上的性能都很好)。
  • 在磁盘上使用写回缓存可以大大提高报告的性能,但我宁愿不使用它;即使没有它,性能也应该比这好得多。
  • 主机和来宾都运行 Ubuntu 12.04 LTS,它带有 qemu-kvm 1.0+noroms-0ubuntu13 和 libvirt 0.9.8-2ubuntu17.1。
  • 主机启用了截止日期 IO 调度程序,而来宾没有任何操作。

似乎有很多调整 kvm 性能的指南,我最终会到达那里,但似乎我应该在这个时间点获得比这更好的性能,所以看起来有些地方已经很不对劲了。

更新 1

突然当我现在回去测试时,它是26.6 MB/s;这更像是我对 qcrow2 的预期。我会留下这个问题,以防有人对可能出现的问题有任何想法(以防它再次神秘地返回)。

更新 2

我不再担心 qcow2 性能,只是使用原始图像切换到 RAID1 之上的 LVM,仍然使用 virtio,但在磁盘驱动器上设置 cache='none' 和 io='native'。写入性能现在是 appx。135MB/s使用与上述相同的基本测试,因此在可以如此轻松地完全解决问题时,找出问题所在似乎没有多大意义。

performance kvm-virtualization qcow2
  • 6 6 个回答
  • 85349 Views

6 个回答

  • Voted
  1. Best Answer
    womble
    2012-07-15T23:45:45+08:002012-07-15T23:45:45+08:00

    嗯,是的,qcow2 文件并不是为极快的性能而设计的。您将从原始分区(或者最好是 LV)中获得更好的运气。

    • 19
  2. lzap
    2013-11-26T13:04:56+08:002013-11-26T13:04:56+08:00

    如何使用 QCOW2 实现最佳性能:

    qemu-img create -f qcow2 -o preallocation=metadata,compat=1.1,lazy_refcounts=on imageXYZ
    

    根据 qcow2 开发人员的说法,最重要的一个是预分配,它提供了很好的提升。它现在几乎可以与 LVM 相提并论了!请注意,这通常在现代(Fedora 25+)Linux 发行版中启用。

    如果这不是生产实例,你也可以提供不安全的缓存(这是危险的,不推荐,只对测试有用):

    <driver name='qemu' cache='unsafe' />
    

    一些用户报告说这个配置在一些测试中胜过 LVM/不安全配置。

    对于所有这些参数,需要最新的 QEMU 1.5+!同样,大多数现代发行版都有这些。

    • 12
  3. gertas
    2013-06-16T13:29:48+08:002013-06-16T13:29:48+08:00

    我使用此设置为 qcow2 图像取得了很好的效果:

    <driver name='qemu' type='raw' cache='none' io='native'/>
    

    它禁用来宾缓存并启用 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

    • 9
  4. Greg W
    2018-07-25T06:40:37+08:002018-07-25T06:40:37+08:00

    我遇到了完全相同的问题。在 RHEL7 虚拟机中,我有其他机器连接到的 LIO iSCSI 目标软件。作为我的 iSCSI LUN 的底层存储(后台存储),我最初使用 LVM,但后来切换到基于文件的映像。

    长话短说:当后备存储连接到 virtio_blk(vda、vdb 等)存储控制器时 - 连接到 iSCSI 目标的 iSCSI 客户端的性能在我的环境中为 ~ 20 IOPS,吞吐量(取决于 IO 大小)~ 2- 3 兆字节/秒。我将虚拟机中的虚拟磁盘控制器更改为 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>
    
    • 5
  5. Kourindou Hime
    2015-04-03T08:06:35+08:002015-04-03T08:06:35+08:00

    如果您使用单个命令运行虚拟机,则可以使用参数

    kvm -drive file=/path_to.qcow2,if=virtio,cache=off <...>

    它让我从 3MB/s 到 70MB/s

    • 4
  6. shodanshok
    2015-04-03T09:23:10+08:002015-04-03T09:23:10+08:00

    在旧的 Qemu/KVM 版本上,Qcow2 后端在未预分配时非常慢,如果在未启用写回缓存的情况下使用则更慢。浏览此处获取更多信息。

    在最近的 Qemu 版本中,Qcow2 文件要快得多,即使在不使用预分配(或仅元数据预分配)的情况下也是如此。尽管如此,LVM 卷仍然更快。

    关于缓存模式的注意事项:写回缓存是首选模式,除非使用不支持或禁用磁盘缓存刷新/障碍的来宾。实际上,Win2000+ 来宾和任何 Linux EXT4、XFS 或 EXT3+barrier 挂载选项都可以。另一方面,cache=unsafe不应该用于生产机器,因为缓存刷新不会传播到主机系统。意外的主机关闭实际上会破坏来宾的文件系统。

    • 4

相关问题

  • 基于 Microsoft 的服务器(IIS、MSSQL 等)上的病毒扫描应排除哪些内容?

  • jvm性能调优技巧/资源?

  • 加快 MSSQL 快照复制到 SQLExpress 副本的速度

  • 聚集索引与非聚集索引?

  • 使用大量 javascript 的页面上的鱿鱼速度很慢

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve