首页/云/云平台与虚拟化速查/虚拟机磁盘文件 .vmdk 与置备
虚拟化基础63 条

虚拟机磁盘文件 .vmdk 与置备

虚拟机的磁盘在 VMware 中表现为 .vmdk:描述符加 extent 数据文件;置备方式与磁盘模式(持久/独立/非持久)共同决定写入落到哪一层。

云平台与虚拟化速查云更新于 2026-10-13

.vmdk 磁盘文件是什么

VMDK 磁盘由描述符与数据文件两部分组成:描述符里有 Disk DescriptorFile 段,记录 extent 指向、父盘 CID 与磁盘模式;数据文件按置备类型表现为 -flat(厚盘)、-delta(快照增量)、-sesparse(精简)等形式。磁盘模式(persistent、independent-persistent、nonpersistent 等)决定重启后是否保留写入,选错会让数据在重启后消失。

基本信息

描述符含 Disk DescriptorFile 段,引用 extent 与 parentCID
数据文件-flat(厚盘)、-delta(快照增量)、-sesparse(精简)
磁盘模式persistent、independent-persistent、nonpersistent 等
常用工具vmkfstools -i 克隆、-d 指定置备类型、-X 扩容
查看方式qemu-img info 跨平台查看容量与变体

典型使用场景

  • 克隆磁盘时在 thin 与 thick 之间选择置备类型
  • 扩容磁盘容量后再进 guest 扩展分区与文件系统
  • 迁移或备份时确定需要一并带走的文件集合
  • 跨平台转换到 qcow2/vhdx 以适配其他虚拟化平台
  • 排查磁盘挂载失败时核对描述符与数据文件是否齐全

克隆、扩容与查看

克隆、扩容与查看
cd /vmfs/volumes/ds1
vmkfstools -i src/src.vmdk -d thin dst/dst.vmdk    # 克隆并按 thin 置备
vmkfstools -X 100G dst/dst.vmdk                    # 扩容后还需在 guest 内扩分区
qemu-img info dst/dst.vmdk                         # 跨平台查看容量与变体
ls -lh dst/                                        # 确认描述符与数据文件都齐全

文件与模式读法

文件/模式含义注意
描述符文本头,记录 extent 与父盘关系与数据文件必须成对存在
-flat厚置备数据文件占用接近逻辑容量
-delta快照或增量数据文件对应快照链,删除会破坏链
-sesparse精简置备的数据文件回收依赖 TRIM 与底层存储支持
nonpersistent重启后丢弃所有写入只适合临时验证,不能承载业务数据
多文件 VMDK 拷贝要带齐描述符与全部分段数据文件:只拷描述符会提示找不到磁盘,只拷数据文件则无法识别磁盘结构。
vmkfstools -X 只改变磁盘的逻辑容量,guest 内的分区与文件系统仍需单独扩展,否则系统里看到的容量不会变化。

操作要点

  • 克隆或迁移前先确认磁盘是否挂在快照链上,带增量盘的拷贝不完整
  • 置备类型决定空间占用与性能取舍,thin 省空间但有超分风险
  • 扩容分两步:先改磁盘容量,再进 guest 扩分区与文件系统
  • 拷贝时保持描述符与数据文件的相对路径结构,否则注册失败
  • 跨平台转换前先合并快照,导出单一平铺磁盘再转换

易错点

  • 多文件 VMDK 拷贝时漏掉分段数据文件,注册后提示找不到磁盘
  • 只做 vmkfstools -X 扩容,未在 guest 内扩分区与文件系统,容量没有变化
  • 把 nonpersistent 模式的磁盘用于业务数据,重启后写入全部丢失
  • 手工删除 -delta 文件试图省空间,直接破坏快照链

数据来源与参考

  • VMware Docs:虚拟磁盘置备与磁盘模式
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌