跳转到内容

文件级与块级存储:raw 与 qcow2 ​

新建虚拟机磁盘时,Web UI 有时会给你一个「Format」下拉框,有时候根本不给选。这篇讲清楚 raw、qcow2、vmdk 三种格式各自是什么,什么时候能选、什么时候选不了,以及格式怎么和存储类型一起决定快照能力。

开始之前 ​

  • 已读过存储模型,理解块存储和文件存储的区别——这是本文的前提,这里不重复讲。
  • 简单结论先说在前面:能不能打快照,是存储类型和磁盘格式共同决定的,改格式往往意味着要迁移整块磁盘。

三种格式是什么 ​

格式本质精简置备快照典型用途
raw裸数据,没有额外的元数据层依赖底层存储(文件系统的稀疏文件、LVM-Thin、ZFS zvol)不支持自身快照,靠存储层实现块存储上的虚拟机磁盘、追求少一层开销的场景
qcow2QEMU 的写时复制镜像格式,自带元数据、内部快照和精简置备自带支持内部快照目录、NFS、SMB 这类文件存储上的虚拟机磁盘
vmdkVMware 的镜像格式视子格式而定PVE 里基本不用它做快照从 ESXi 导入虚拟机、需要与 VMware 工具链互通时

这不是「哪个更好」的问题

三种格式解决的是不同场景。日常新建虚拟机,只需要在 raw 和 qcow2 之间选:块存储(LVM、LVM-Thin、ZFS)不给你选,固定是 raw;文件存储(目录、NFS、SMB)默认给 qcow2,也可以手动选 raw。vmdk 基本只在导入 ESXi 虚拟机时出现,见导入虚拟机。

格式和存储类型如何共同决定快照能力 ​

把存储模型里的表格和格式放在一起看:

存储类型支持的格式快照能力
目录 / NFS / SMBraw、qcow2、vmdk只有 qcow2 支持快照和克隆;raw 不支持
LVM(普通)raw;qcow2 仅用于 PVE 9 起的卷链快照普通模式不支持;卷链快照见iSCSI 与 FC SAN
LVM-Thinraw(固定)支持,由 LVM-Thin 自身提供
ZFSraw(虚拟机用 zvol)、subvol(容器)支持,由 ZFS 自身提供
Ceph RBDraw(固定)支持,由 Ceph 自身提供

raw 放在文件存储上,快照按钮会是灰的

这是最容易踩的坑:在目录或 NFS 存储上新建磁盘时,如果手动把格式改成 raw(追求「少一层开销」),事后会发现这台虚拟机的快照按钮点不动。原因是目录/NFS 存储本身不提供快照能力,只能靠 qcow2 格式自带的内部快照实现。想要快照,要么用 qcow2,要么把磁盘搬到 LVM-Thin 或 ZFS 上。

操作步骤:怎么选、怎么查、怎么转换 ​

新建磁盘时选格式 ​

只有目标存储是文件存储(目录、NFS、SMB)时,创建虚拟机的 Disks 页才会出现 Format 选项:

  • 默认 qcow2:要快照、要精简置备,选它。
  • 改成 raw:不需要快照、追求少一点点写入开销时可选,但要接受快照功能没有。

块存储(LVM-Thin、ZFS、Ceph)不显示这个选项,因为格式是固定的。

查看现有磁盘用的是什么格式 ​

宿主机 shell:

sh
qm config <vmid>

输出里 scsi0、virtio0 这类字段的值会带上格式线索:文件存储上通常直接以 .qcow2 结尾,块存储不会有文件扩展名(本身就是整块设备)。

也可以直接看文件:

sh
ls -lh /var/lib/vz/images/<vmid>/
qemu-img info /var/lib/vz/images/<vmid>/vm-<vmid>-disk-0.qcow2

转换格式(本质是搬迁磁盘) ​

格式转换不是原地改一个属性,而是把磁盘内容重新写一份到新格式。做法是在 Web UI 里选中该磁盘,用「Move Disk」搬到目标存储,如果目标是文件存储会让你选目标格式。

搬迁磁盘期间虚拟机仍在跑,但会占用双倍空间和不少 IO

搬迁过程中源和目标都会短暂占用空间,磁盘越大耗时越久。给业务机做这个操作前,安排一个不敏感的时间段,并确认目标存储有足够空间。搬迁失败一般会自动回滚,但操作前先确认这台机器有近期备份,见配置备份任务。

检查结果 ​

  1. qm config <vmid> 里能看出磁盘挂在哪个存储、格式是什么。
  2. 打开该虚拟机的 Snapshots 标签页:按钮能点,说明这个存储+格式组合支持快照;灰着不能点,回头检查是不是 raw 加文件存储的组合。
  3. 需要精简置备信息时,用 qemu-img info 看 disk size(实际占用)和 virtual size(分配容量)是否符合预期。

常见问题 ​

qcow2 磁盘为什么比 raw 慢一点点? qcow2 多了一层写时复制和元数据管理,理论上有轻微开销。实际使用中这点差距通常不是瓶颈,不要为了这点性能牺牲快照能力。

能不能把 ZFS zvol 上的虚拟机磁盘转成 qcow2? 可以通过 Move Disk 搬到目录/NFS 类存储并选 qcow2,但这样就失去了 ZFS 层面的校验和快照,通常没必要——ZFS 自己就支持快照。

从 ESXi 导入的虚拟机默认是 vmdk,要不要转掉? 不强制。如果打算长期用 PVE 管理并用上快照,导入后转成 qcow2 或搬到 ZFS/LVM-Thin 更方便维护,见导入虚拟机。

参考资料 ​

Proxmox VE 非官方中文使用指南,与 Proxmox Server Solutions GmbH 无隶属关系。