我正在使用基础映像并基于此创建许多虚拟机。现在我想知道哪个更适合用作基础映像,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 格式:
- 速度更快:由于它没有关联的元数据,因此速度尽可能快。另一方面,Qcow2 有两层间接层,必须先跨越才能到达实际数据
- 由于覆盖层必须是 Qcow2 文件,你不会失去非常有用的快照功能(RAW 图像本身不支持快照)
基础镜像 + qcow2 覆盖与多个完整副本之间的选择取决于您的优先级:
- 为了绝对的性能,请使用 fallocated RAW 图像。这有不支持快照的缺点,在大多数情况下,代价太高
- 为了实现灵活性和空间效率,请使用 RAW 基础图像 + Qcow2 覆盖。
无论如何,我发现 Qcow2 文件有点脆弱。
对于我的生产 KVM 虚拟机管理程序,我基本上使用两种不同的设置:
- 性能是第一位的,我使用直接连接到虚拟机的 LVM 卷,并使用 LVM 快照功能进行一致备份
- 我可以牺牲一些性能来增强灵活性,我使用单个大型 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),那么只有写入的扇区才会保留空间。
raw 原始磁盘映像格式(默认)。这可能是最快的基于文件的格式。如果您的文件系统支持空洞(例如 Linux 上的 ext2 或 ext3 或 Windows 上的 NTFS),则只有写入的扇区才会保留空间。使用 qemu-img info 获取映像使用的实际大小,或在 Unix/Linux 上使用 ls -ls。