哪种更好的映像格式(raw或qcow2)用作其他VM的基础映像?


25

我正在使用基本映像,并以此为基础创建了许多虚拟机。现在,我想知道qcow2还是raw用作基础图像更好。而且,请您告诉我使用baseimage代替克隆整个磁盘是否有任何优势。速度可能是一个因素,但就效率而言,使用基本映像然后使用该基本映像创建VM是否存在任何问题?

编辑1:

我做了一些实验 在此处输入图片说明在此处输入图片说明在此处输入图片说明

第一个是当baseimage和overlay均为qcow2时。其次,当baseimage是原始映像,但是覆盖层是qcow2时,在第三种情况下,我将为每个VM提供单独的原始磁盘映像。令人惊讶的是,与其他两种情况相比,最后一种情况要有效得多。

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

在x轴上:同时启动的VM数。从1开始,递增到15。

在y轴上:引导“ x”台计算机的总时间。

从图中可以看出,将完整的磁盘映像提供给VM似乎比其他两种方法更为有效。

编辑2: 在此处输入图片说明

当我们为每个VM提供单独的原始映像时就是这种情况。在执行缓存刷新之后,这是图。它几乎类似于原始baseimage + qcow覆盖。

谢谢。


1
我会使用原始基本图像并叠加QED而不是qcow2。QED比qcow2快,并且不太可能被设计破坏。
马特

@Matt请评论已编辑的问题。
AB

性能差异很有趣。你可以用qed试一下吗?可能是qcow2实现中的争用/锁定问题。我相信它存在一些问题,这就是为什么他们发明qed的原因。
马特

1
@Matt我检查了原始baseimage-qed覆盖和原始baseimage-qcow2覆盖。但是在这种情况下,qed比qcow2慢得多。
2015年

Answers:


18

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

  1. 它更快:因为它没有关联的元数据,所以它尽可能快。另一方面,Qcow2具有两层间接访问,必须先经过两次访问才能获得实际数据
  2. 由于覆盖层必须是Qcow2文件,因此您不会失去曾经使用过的快照功能(RAW图像本身不支持快照)

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

  1. 为了获得绝对的性能,请使用伪造的RAW图像。这具有不支持快照的缺点,因为在大多数环境中,它的价格太高了
  2. 为了提高灵活性和节省空间,请使用RAW基本图像+ Qcow2叠加层。

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

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

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

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

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


如上所述:由于没有间接层,单个RAW图像将更快。但是请记住,您正在放弃快照(在图像级别)和空间效率。而且,我的印象是主机缓存使您的第三个结果不正确。可以肯定的是,请在每次运行之间重做所有发出“ sync; echo 3> / proc / sys / vm / drop_caches”的测试。
shodanshok

其实我在想同样的事情。但是后来我认为,在实际使用的情况下,它也会遵循相同的流程。
AB

并非如此:在此测试环境中,您只是在不使用虚拟机的情况下引导它们。在实际情况下,启动后将使用虚拟机,这会污染缓存。通常,最好以合理的用例进行基准测试。
shodanshok'3

您是否知道为什么缓存在图1和图2中没有发挥那么大的作用,即Qcow2基本图像+ Qcow2覆盖和Raw基本图像+ Qcow2覆盖。
2015年

6

请注意....如果您使用的是Linux,则可以使用raw并获得与qcow2大小相同的好处。

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

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

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


好点子!但是似乎在备份/复制/压缩中会使用原始图像文件的整个大小。一个仅在磁盘上分配4MB的20GB原始文件已压缩为20MB
MrCalvin 18'Apr

这对我来说是全新的。我在Proxmox VE中有一个虚拟机,带有30 GB的虚拟磁盘...,我可以看到该磁盘具有主机文件系统中的大小。但是主机文件系统的整体使用情况<< 10GB。这就是我要寻找的原因。
cljk
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.