哪种图像格式更好,raw 还是 qcow2,可以用作其他虚拟机的基础图像?

哪种图像格式更好,raw 还是 qcow2,可以用作其他虚拟机的基础图像?

我正在使用基础映像并基于此创建许多虚拟机。现在我想知道哪个更适合用作基础映像,qcow2 还是 raw。此外,您能否告诉我使用此基础映像是否有任何优势,而不是克隆整个磁盘。速度可能是一个因素,但就效率而言,使用基础映像然后使用该基础映像创建虚拟机是否存在问题?

编辑1:

我进行了一些实验,并得到了在此处输入图片描述在此处输入图片描述在此处输入图片描述

第一种情况是 baseimage 和 overlay 都是 qcow2。第二种情况是 baseimage 是 raw 但 overlay 是 qcow2,第三种情况是我将单独的 raw 磁盘映像提供给每个 VM。令人惊讶的是,最后一种情况比其他两种情况效率高得多。

实验装置:
基本映像中的操作系统:Ubuntu Server 14.04 64 位。
主机操作系统:Ubuntu 12.04 64位
内存:8GB
处理器:Intel® Core™ i5-4440 CPU @ 3.10GHz × 4
磁盘:500 GB

x 轴:同时启动的虚拟机数量。从 1 开始,递增至 15。

在 y 轴上:启动“x”台机器的总时间。

从图表来看,向 VM 提供完整的磁盘映像比其他两种方法效率更高。

编辑2: 在此处输入图片描述

这是当我们为每个虚拟机提供单独的原始映像时的情况。执行缓存刷新后,这是图表。它几乎类似于原始基础映像 + qcow 覆盖。

谢谢。

答案1

对于您的特定用例(基础图像 + qcow2 覆盖),应优先使用 RAW 格式:

  1. 速度更快:由于它没有关联的元数据,因此速度尽可能快。另一方面,Qcow2 有两层间接层,必须先跨越才能到达实际数据
  2. 由于覆盖层必须是 Qcow2 文件,你不会失去非常有用的快照功能(RAW 图像本身不支持快照)

基础镜像 + qcow2 覆盖与多个完整副本之间的选择取决于您的优先级:

  1. 为了绝对的性能,请使用 fallocated RAW 图像。这有不支持快照的缺点,在大多数情况下,代价太高
  2. 为了实现灵活性和空间效率,请使用 RAW 基础图像 + Qcow2 覆盖。

无论如何,我发现 Qcow2 文件有点脆弱。

对于我的生产 KVM 虚拟机管理程序,我基本上使用两种不同的设置:

  1. 性能是第一位的,我使用直接连接到虚拟机的 LVM 卷,并使用 LVM 快照功能进行一致备份
  2. 我可以牺牲一些性能来增强灵活性,我使用单个大型 LVM 精简配置卷 + XFS + RAW 映像

另一种可能性是使用普通 LVM 卷 + XFS + RAW 映像。唯一的缺点是普通(非精简)LVM 快照非常慢,并且对繁忙的普通 LVM 卷进行快照会降低性能(在快照的整个生命周期内)。无论如何,如果您计划仅偶尔使用快照,这可能是更简单、更安全的选择。

一些参考资料:
RHEL 6 上的 KVM I/O 缓慢
RHEL 6.1 和 Fedora 16 上的 KVM 存储性能和 Qcow2 预分配
Red Hat Enterprise Linux 6.2 上的 KVM 存储性能和缓存设置
LVM 精简卷说明

答案2

请注意……如果您使用的是 Linux,您可以使用raw并获得相同的好处qcow2

...如果您的文件系统支持孔(例如 Linux 上的 ext2 或 ext3 或 Windows 上的 NTFS),那么只有写入的扇区才会保留空间。

https://docs.fedoraproject.org/en-US/Fedora/18/html/Virtualization_Administration_Guide/sect-Virtualization-Tips_and_tricks-Using_qemu_img.html

raw 原始磁盘映像格式(默认)。这可能是最快的基于文件的格式。如果您的文件系统支持空洞(例如 Linux 上的 ext2 或 ext3 或 Windows 上的 NTFS),则只有写入的扇区才会保留空间。使用 qemu-img info 获取映像使用的实际大小,或在 Unix/Linux 上使用 ls -ls。

相关内容