在 CentOS 7 主机上,我正在从 Amazon Linux 2 qcow2 映像创建虚拟机:
- 下载 Amazon Linux 2 cloud-init 映像(.qcow2 格式)
- 复制此文件,运行
qemu-img resize
将其扩大到40G <disk type='file'>
在我的虚拟机中使用和定义它<source file='my_resized_file.qcow2'>
这是可行的 - 但我在这个主机上运行着大约 30 台虚拟机,所有虚拟机都运行着相当重的 Docker 工作负载 - 而且磁盘 IO 不够好。
我想尝试使用iothreads
,cache=none
因为io=native
网上有很多帖子表明使用这些设置可以提高 SSD 和高 CPU 数主机的性能。我有足够的 CPU 可用。
我尝试过简单地添加iothreads=1
到域和iothread=1
磁盘,但失败并出现错误IOThreads not supported for this QEMU
。我推测这是因为我使用的disk type=file
是而不是disk type=block
。
我想:
- 使用操作系统映像及其 cloud-init 函数
- 为虚拟机提供 40G
- 使用原始文件类型、
iothreads
和cache=none
可获得io=native
最佳性能
因此我的问题是......
如何让我的 qcow2 OS 映像成为可以使用这些参数的 40G 原始块设备?
答案1
要将 QCOW2 转换为 RAW 图像文件,请使用qemu-img convert
, 例如:
$ qemu-img convert -O raw /path/to/image.qcow2 /path/to/image.bin
QEMU 自 2011 年起支持 IOThreads。QEMU 2.0。QEMU 2.0.0 已在 EPEL 上可用,因此请尝试运行:
# yum -y install epel-release
# yum makecache && yum -y install qemu