外观
文件级与块级存储:raw 与 qcow2
新建虚拟机磁盘时,Web UI 有时会给你一个「Format」下拉框,有时候根本不给选。这篇讲清楚 raw、qcow2、vmdk 三种格式各自是什么,什么时候能选、什么时候选不了,以及格式怎么和存储类型一起决定快照能力。
开始之前
- 已读过存储模型,理解块存储和文件存储的区别——这是本文的前提,这里不重复讲。
- 简单结论先说在前面:能不能打快照,是存储类型和磁盘格式共同决定的,改格式往往意味着要迁移整块磁盘。
三种格式是什么
| 格式 | 本质 | 精简置备 | 快照 | 典型用途 |
|---|---|---|---|---|
raw | 裸数据,没有额外的元数据层 | 依赖底层存储(文件系统的稀疏文件、LVM-Thin、ZFS zvol) | 不支持自身快照,靠存储层实现 | 块存储上的虚拟机磁盘、追求少一层开销的场景 |
qcow2 | QEMU 的写时复制镜像格式,自带元数据、内部快照和精简置备 | 自带 | 支持内部快照 | 目录、NFS、SMB 这类文件存储上的虚拟机磁盘 |
vmdk | VMware 的镜像格式 | 视子格式而定 | PVE 里基本不用它做快照 | 从 ESXi 导入虚拟机、需要与 VMware 工具链互通时 |
这不是「哪个更好」的问题
三种格式解决的是不同场景。日常新建虚拟机,只需要在 raw 和 qcow2 之间选:块存储(LVM、LVM-Thin、ZFS)不给你选,固定是 raw;文件存储(目录、NFS、SMB)默认给 qcow2,也可以手动选 raw。vmdk 基本只在导入 ESXi 虚拟机时出现,见导入虚拟机。
格式和存储类型如何共同决定快照能力
把存储模型里的表格和格式放在一起看:
| 存储类型 | 支持的格式 | 快照能力 |
|---|---|---|
| 目录 / NFS / SMB | raw、qcow2、vmdk | 只有 qcow2 支持快照和克隆;raw 不支持 |
| LVM(普通) | raw;qcow2 仅用于 PVE 9 起的卷链快照 | 普通模式不支持;卷链快照见iSCSI 与 FC SAN |
| LVM-Thin | raw(固定) | 支持,由 LVM-Thin 自身提供 |
| ZFS | raw(虚拟机用 zvol)、subvol(容器) | 支持,由 ZFS 自身提供 |
| Ceph RBD | raw(固定) | 支持,由 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
搬迁过程中源和目标都会短暂占用空间,磁盘越大耗时越久。给业务机做这个操作前,安排一个不敏感的时间段,并确认目标存储有足够空间。搬迁失败一般会自动回滚,但操作前先确认这台机器有近期备份,见配置备份任务。
检查结果
qm config <vmid>里能看出磁盘挂在哪个存储、格式是什么。- 打开该虚拟机的 Snapshots 标签页:按钮能点,说明这个存储+格式组合支持快照;灰着不能点,回头检查是不是 raw 加文件存储的组合。
- 需要精简置备信息时,用
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 更方便维护,见导入虚拟机。