1. 引言

在虚拟化、系统安装和备份迁移的场景里,ISO 和 VMDK 是两个出现频率极高的文件格式。很多人在 VMware 里装系统时,会同时接触到这两种文件:一个是下载来的系统安装镜像,另一个是虚拟机目录里那个体积巨大的磁盘文件。

它们看起来都是"一个大文件",但本质、用途和内部结构完全不同。本文从概念、结构、使用场景和相互转换几个角度,把 ISO 与 VMDK 的关系讲清楚。

2. 一句话结论

  • ISO 是光盘镜像:它模拟的是一张 CD/DVD 光盘,通常是只读的,用来分发和安装。
  • VMDK 是虚拟磁盘:它模拟的是一块硬盘,是可读写的,用来承载虚拟机的操作系统和数据。

二者不是同一类东西,但在虚拟化流程中经常配合使用:用 ISO 启动虚拟机,把系统安装到 VMDK 里。

3. ISO 文件详解

3.1 什么是 ISO

ISO 文件(ISO 9660 映像)是把光盘的完整数据按扇区顺序打包成的单个文件,扩展名为 .iso。它保留了光盘的文件系统结构(ISO 9660、Joliet、UDF 等),因此可以被操作系统或虚拟机当作"一张光盘"来读取。

3.2 典型用途

  • 分发操作系统安装介质(如各类 Linux 发行版、Windows 安装镜像)。
  • 作为虚拟机的光驱设备挂载,用于引导安装。
  • 制作可启动的维护盘、PE 工具盘。

3.3 关键特征

特征说明
模拟对象光盘(CD/DVD)
读写属性通常只读,写入需重新制作镜像
文件系统ISO 9660 / Joliet / UDF
典型大小几百 MB 到数 GB
引导能力可带 El Torito 引导记录,支持启动

4. VMDK 文件详解

4.1 什么是 VMDK

VMDK(Virtual Machine Disk)是 VMware 定义的虚拟磁盘格式,用来保存虚拟机的硬盘内容。它把一块虚拟硬盘抽象成一个或多个文件,虚拟机启动后,客户机操作系统看到的就是一块普通硬盘。

4.2 典型用途

  • 作为虚拟机的系统盘或数据盘。
  • 虚拟机快照、克隆、迁移时的磁盘载体。
  • 通过转换工具在物理机与其他虚拟化平台之间迁移。

4.3 关键特征

特征说明
模拟对象硬盘
读写属性可读写,支持增量与快照
文件系统由客户机操作系统格式化(ext4、NTFS 等)
典型大小几 GB 到数 TB
磁盘类型厚置备 / 精简置备、单文件 / 多文件拆分

5. 两者的核心区别

对比维度ISOVMDK
抽象对象光盘硬盘
是否可写基本只读可读写
是否含分区表一般不含(按光盘文件系统组织)含 MBR/GPT 分区表与文件系统
生命周期安装介质,装完即可卸载长期存在,承载系统与数据
能否直接启动系统可引导安装,但不能持久保存修改是系统运行的实际存储
常见工具刻录工具、镜像制作工具VMware、qemu-img、VirtualBox 等

一句话概括:ISO 是"安装源",VMDK 是"安装目标"。

6. 二者在虚拟机中的协作关系

以在 VMware 中安装 Linux 为例,典型流程如下:

下载 ISO 安装镜像

新建虚拟机并创建 VMDK 虚拟磁盘

虚拟机光驱挂载 ISO

从 ISO 引导启动安装程序

安装程序把系统写入 VMDK

安装完成,卸载 ISO

虚拟机从 VMDK 正常启动

可以看到,ISO 只在安装阶段短暂参与,VMDK 才是虚拟机长期运行所依赖的存储。安装完成后,ISO 可以从虚拟光驱中移除,虚拟机依然能正常启动。

7. 常见转换与互操作

7.1 ISO 转 VMDK

严格来说,这不是"格式转换",而是把光盘内容写入虚拟磁盘。常见做法是:

  1. 新建一个空的 VMDK;
  2. 挂载 ISO 启动安装程序;
  3. 由安装程序把系统写入 VMDK。

也可以用 qemu-img 把 ISO 当作原始数据写入磁盘镜像,但这样得到的磁盘通常不可直接引导,因为缺少分区表和引导记录。

# 把 ISO 内容原样写入一个新建的 raw 镜像(仅作数据搬运,通常不可引导)
qemu-img convert -f raw -O vmdk system.iso system.vmdk

7.2 VMDK 转 ISO

反过来,把 VMDK 转成 ISO 一般没有实际意义,因为 VMDK 里是带分区表的硬盘结构,而 ISO 是光盘文件系统。若确实需要,通常先挂载 VMDK 读取文件,再用 genisoimage / mkisofs 重新打包成 ISO。

# 在 Linux 上挂载 VMDK 中的分区(需先转换为 raw 或用 qemu-nbd)
sudo modprobe nbd max_part=16
sudo qemu-nbd -c /dev/nbd0 disk.vmdk
sudo mount /dev/nbd0p1 /mnt

7.3 其他虚拟磁盘格式

VMDK 并非唯一选择,常见格式之间可以用 qemu-img 互相转换:

# VMDK 转 QCOW2
qemu-img convert -f vmdk -O qcow2 disk.vmdk disk.qcow2

# VMDK 转 VHDX
qemu-img convert -f vmdk -O vhdx disk.vmdk disk.vhdx

8. 实践中的注意事项

  • 不要混淆挂载方式:ISO 挂到虚拟光驱,VMDK 挂到虚拟硬盘控制器,位置错了虚拟机无法引导。
  • 精简置备要留意空间:VMDK 精简置备文件会随写入增长,宿主机磁盘要留足余量。
  • 快照不是备份:快照依赖基础 VMDK,删除基础盘会导致快照链失效。
  • 迁移前先关机或静默:直接复制运行中的 VMDK 可能得到不一致的磁盘状态。
  • 校验完整性:ISO 下载后建议核对 SHA256,避免安装中途失败。

9. 总结

ISO 与 VMDK 的关系可以这样理解:

  • 本质不同:一个是光盘镜像,一个是虚拟硬盘。
  • 角色互补:ISO 提供安装源,VMDK 提供运行存储。
  • 流程衔接:安装阶段用 ISO 引导,安装完成后由 VMDK 独立承载系统。

把这两者的定位分清,在虚拟化环境里创建、安装、迁移和排障时就不会再被"到底该挂哪个文件"困扰。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐