本文系统梳理 VMware 虚拟机在 Workstation/Fusion 与 ESXi/vSphere 两类环境下的核心文件体系:逐项解析 .vmx 主配置、.vmdk 虚拟磁盘及其 flat、sesparse、RDM 变体,以及 .nvram、.vmem、.vmsd、.vmsn 等配置、状态与快照文件的格式与作用,并结合 Broadcom 官方文档厘清快照链命名规则与桌面版、服务器版之间的关键差异。
概述
严格来说,VMware 中真正的“磁盘文件”是 .vmdk 及其衍生文件,而 .vmx 是虚拟机的主配置文件。一个虚拟机目录中往往同时存在配置、磁盘、快照、内存状态与日志等多类文件,它们共同构成虚拟机的完整可恢复状态。理解每类文件的角色,是虚拟机迁移、备份、快照清理与故障排查的基础。
核心文件总览
| 扩展名 | 分类 | 全称 / 含义 | 作用说明 |
|---|---|---|---|
.vmdk | 磁盘 | 虚拟磁盘文件 (Virtual Machine Disk) | 核心磁盘文件。在 Workstation 中通常直接包含磁盘数据(或分割为多个分卷);在 ESXi 中通常只是一个纯文本描述符文件,记录磁盘几何结构并指向实际存数据的 -flat.vmdk |
-flat.vmdk | 磁盘 | 扁平化数据文件 (Flat Disk Data) | 主要存在于 ESXi 中,是实际存储虚拟硬盘二进制数据的文件,占用真实物理存储空间。官方文档明确:该文件在 Datastore Browser 中不单独显示 |
-delta.vmdk / -sesparse.vmdk | 磁盘 (快照) | 快照增量磁盘 (Delta / SEsparse) | 打快照后原虚拟磁盘变为只读,系统生成增量文件记录其后所有写入。vSphere 官方文档确认:SEsparse 是 VMFS6 数据存储上所有 delta disk 的默认格式 |
-rdm.vmdk | 磁盘 | 裸设备映射文件 (Raw Device Mapping) | 仅用于 ESXi 的 RDM 模式。官方文档:该文件与普通虚拟磁盘同为 .vmdk 扩展名,但只包含映射信息,实际数据直接存放在 SAN LUN 上 |
.vmx | 配置 | 虚拟机主配置文件 (VM Configuration) | 虚拟机的“大脑”。纯文本文件,记录全部硬件配置(内存大小、CPU 核数、MAC 地址、vmdk 路径等)。早期 Linux 宿主机上曾使用 .cfg 扩展名 |
.vmxf | 配置 | 补充配置文件 (Supplemental Config) | XML 格式补充配置,历史上与 Workstation 的 Team(团队)功能相关。Workstation Pro 17 官方文件列表中已不再列出该文件 |
.nvram | 配置 | 非易失性内存文件 (Non-Volatile RAM) | 相当于物理主板的 CMOS,保存虚拟机 BIOS/UEFI 固件设置(如启动顺序) |
.vmem | 状态 | 内存分页文件 (VM Memory / Paging) | 虚拟机开机运行时产生,充当客户机主内存的后备文件。仅虚拟机运行(或异常宕机)期间存在;带内存的快照也会产生对应的 .vmem |
.vmss | 状态 | 挂起状态文件 (Suspended State) | 保存挂起虚拟机的完整状态,开机时存在、恢复后删除。早期 VMware 产品曾使用 .std 扩展名 |
.vswp | 状态 | 虚拟机交换文件 (VM Swap) | ESXi 上开机时创建、关机时删除,大小约为分配内存减去内存预留量 (reservation) |
.vmsd | 快照 | 快照字典文件 (Snapshot Dictionary) | 纯文本文件,集中记录快照树结构、快照间依赖关系与相关文件路径,是 Snapshot Manager 的主要信息来源。无快照时该文件通常为空 |
.vmsn | 快照 | 快照状态文件 (Snapshot State) | 创建快照时生成(如 vmname.Snapshot1.vmsn),保存快照那一刻虚拟机的运行状态;若勾选“包含内存”,其中还保存完整内存内容,可恢复到开机状态的快照点 |
.log | 日志 | 运行日志文件 (VMware Log) | 通常为 vmware.log(滚动生成 vmware-1.log 等)。记录启动、硬件初始化与错误信息,是虚拟机无法启动、崩溃等问题排错的首要文件 |
磁盘文件体系:.vmdk 家族
基础磁盘:描述符与数据分离
在 ESXi/VMFS 环境下,一块基础磁盘由两个文件组成:
vmname.vmdk(或vmname_1.vmdk等按磁盘序号命名):体积很小的描述符文件,记录磁盘几何结构、父子关系(快照链)等元数据;vmname-flat.vmdk:与描述符同名的扁平化数据文件,存放真正的二进制数据。
Datastore Browser 为防止误删,会自动将二者折叠显示为一个 .vmdk 文件;通过 SSH 登录 ESXi 命令行则能看到两个分离的文件:
# SSH 登录 ESXi 主机,查看虚拟机目录中的完整文件列表
ls -lah /vmfs/volumes/datastore1/my-vm/
# 典型输出(注意描述符很小、flat 文件才占真实空间):
# -rw------- 1 root root 466 Nov 2 10:12 my-vm.vmdk
# -rw------- 1 root root 21474836480 Nov 2 10:12 my-vm-flat.vmdk描述符文件丢失或损坏时,虚拟机会报 “File not found” 无法开机,可参照 Broadcom KB 321422 使用 vmkfstools -c <size> -d thin temp.vmdk 生成新描述符后改造复用。
快照增量磁盘:delta 与 sesparse
每次创建快照时,原磁盘变为只读基盘,系统生成一条增量磁盘链。官方文档将这类文件称为 child disk(子盘)或 redo log(重做日志),每块增量磁盘同样由“小描述符 + 数据文件”组成:
- 旧格式:
vmname_1-000001-delta.vmdk(VMFS 早期版本); - 新格式:
vmname_1-000001-sesparse.vmdk,其中000001为按目录内已有文件递增生成的六位序号。
SEsparse(Space-Efficient Sparse)采用更小的分配粒度,显著降低快照链占用的空间,在 VMFS6 数据存储上已成为 delta disk 的默认格式。这也是“删除所有快照后目录仍长期占用空间”时应当检查的对象——快照合并期间数据会持续写回基盘。
RDM:裸设备映射
RDM (Raw Device Mapping) 用于让虚拟机直接访问 SAN/LUN 物理存储。映射文件放在 VMFS 数据存储上,.vmdk 扩展名与普通磁盘相同,但内容只是指向 LUN 的映射元数据;实际数据完全不经过该文件。映射文件命名上,虚拟兼容模式通常为 name-rdm.vmdk,物理兼容模式为 name-rdm-p.vmdk,这一后缀约定源自 VMware 传统 KB 文档。
桌面版与服务器版的差异
VMware Workstation / Fusion(桌面版)
- 磁盘可选择“单文件”或“分割为多个 2GB 分卷”:可增长磁盘命名为
vmname-s001.vmdk、vmname-s002.vmdk(s表示 split/growable),预分配磁盘则带f前缀编号(如vmname-f001.vmdk)。分割方案主要为了兼容 FAT32 等单文件 2GB 上限的老旧文件系统,并便于拷贝移动; - 配置、磁盘、日志等文件默认集中在虚拟机目录下,直观可见;
- 快照增量文件直接以
vmname-disk-###.vmdk形式出现(官方文档称其为 redo log)。
VMware ESXi / vSphere(服务器版)
- 磁盘采用 Thin/Thick Provisioning 模式,不进行桌面版那样的 2GB 切割,而是严格区分“描述符
.vmdk”与“数据-flat.vmdk”两个文件; - 除磁盘外,运行期还会生成
.vswp交换文件(默认与虚拟机目录同位,可通过集群 Swapfile Location 设置迁移到独立数据存储); - Datastore Browser 将
.vmdk与-flat.vmdk折叠显示为同一个文件,只有 SSH 命令行能看到真实布局。
实践建议:迁移与备份的最小文件集
完整迁移一台虚拟机(脱离 vCenter 导出场景)至少需要携带:
.vmx(主配置,可手工检查或修正硬件定义)- 全部
.vmdk描述符及对应的数据文件(-flat.vmdk、-sesparse.vmdk、-delta.vmdk或 2GB 分卷,一个都不能少) .nvram(保留固件设置,避免客户机启动顺序错乱)
快照相关文件(.vmsd、.vmsn 及增量磁盘)只有在需要保留快照历史时才必须一并复制;若仅关心最终状态,建议先在源端删除(合并)所有快照再迁移,可显著减小体积。单独拷贝 -flat.vmdk 或任何增量数据文件而不带描述符,都会导致磁盘无法被识别——这是实践中最常见的“拷贝后开不了机”事故来源。故障排查时,优先阅读 vmware.log 中最早的 ERROR 行,绝大多数启动失败都能在日志中定位到具体设备或文件缺失。
参考
- https://techdocs.broadcom.com/us/en/vmware-cis/desktop-hypervisors/workstation-pro/17-0/using-vmware-workstation-pro/creating-virtual-machines-in-workstation-user-guide/virtual-machine-files.html
- https://techdocs.broadcom.com/us/en/vmware-cis/vsphere/vsphere/8-0/vsphere-virtual-machine-administration/managing-virtual-machines/using-snapshots-to-manage-virtual-machines/snapshot-file-names-and-description.html
- https://techdocs.broadcom.com/us/en/vmware-cis/vsphere/vsphere/8-0/vsphere-storage/raw-device-mapping-in-vsphere.html
- https://knowledge.broadcom.com/external/article/321422/recreating-a-missing-vmware-virtual-mach.html
最近更新
最新评论