ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

VMware虚拟机磁盘方案演进:从单一磁盘到系统盘+数据盘重构

VMware虚拟机磁盘方案演进:从单一磁盘到系统盘+数据盘重构 之前整理个人虚拟机实验环境时我把“VM2.5 → v2 → DISK3”的完整调整过程记录了下来。整个过程不是一次性迁移而是经历了三次明显迭代先整理虚拟机版本再调整磁盘分配策略最后重构数据盘与快照方案。这篇文章把这些记录整理成一份可供参考的“非官方”个人笔记重点讲清楚每个阶段为什么改、改了什么、踩过哪些坑。如果你是刚接触 VMware 虚拟机或者正在做虚拟磁盘扩容、迁移、克隆相关的操作可以参考其中关于磁盘管理、快照策略和版本兼容性的经验。1. 背景为什么会有 VM2.5v2DISK3 这套命名1.1 名字解释不是官方版号而是我的版本标记首先说明一下VM2.5v2DISK3 并不是 VMware 官方产品版本也不是任何开源项目的版本号而是我在个人实验环境中使用的一套“自定义命名规则”。拆开来看VM表示这是一个虚拟机Virtual Machine相关项目。2.5表示虚拟机基础环境或镜像基线进入了 2.5 阶段。v2表示在 2.5 基础上做了一次整体配置迭代升级或调整。DISK3表示磁盘方案演进到了第 3 版Disk Schema v3。进化史记录从最初方案到当前状态的变化过程。“非官方”强调这套记录属于个人实践总结不代表任何官方发布内容。这种命名方式适合个人维护多个实验虚拟机镜像时使用方便一眼看出当前虚拟机处于哪个版本、磁盘方案是第几版。1.2 为什么会形成这样的演进记录在实际使用虚拟机时我遇到了几个常见问题初始安装虚拟机时磁盘大小随意分配用到后期空间不够。系统盘和数据盘混在一起备份和快照时非常不方便。需要迁移到另一台宿主机时磁盘格式和控制器类型不兼容。快照越积越多导致虚拟磁盘文件越来越大性能下降。这些问题促使我从单纯“安装虚拟机”转变为“规划虚拟机生命周期”于是开始记录每个虚拟机从创建、配置、扩容、克隆到最终稳定运行的全过程。1.3 这套记录适合谁参考正在学习 VMware Workstation / VMware ESXi 的初学者。个人电脑上跑多台虚拟机需要统一管理磁盘空间的用户。需要把虚拟磁盘扩容、转换格式、迁移宿主机的实践者。记录自己环境配置防止忘记关键参数的长期 VMware 用户。2. 环境准备与版本说明2.1 现有实验环境我用于这套记录的环境不是单一版本而是混合环境用途环境宿主机系统Windows 11 专业版主流虚拟机软件VMware Workstation Pro 16备用兼容环境Oracle VM VirtualBox用于交叉验证虚拟磁盘客户机系统Ubuntu 22.04 LTS / CentOS 7.9额外测试系统Windows Server 2019测试克隆与引导修复磁盘工具GParted Live、Win32 Disk Imager、diskpart版本需要根据你的项目实际情况调整本文示例以常见环境为例重点演示配置思路。2.2 为什么选 VMware Workstation Pro 16选择这个版本是因为它稳定性比较好而且虚拟磁盘格式进化得很成熟支持从 IDE 到 SATA 再到 NVMe 虚拟控制器。个人实验环境中它同样支持虚拟磁盘动态扩容。虚拟机克隆链接克隆与完整克隆。磁盘格式转换vmdk 转 vdi、vhd 等。快照与恢复。这些功能对于记录 VM2.5v2DISK3 的演进过程来说已经足够。2.3 重要概念磁盘方案版本与虚拟机版本要分开管理在 2.5 阶段之后我最重要的一个变更就是把“虚拟机版本”和“磁盘方案版本”分开。例如VM2.5虚拟机配置已完成系统能正常启动网络正常。v2虚拟机硬件兼容性升级操作系统内核更新。DISK3磁盘方案重新设计数据盘重新划分。这样不会出现“虚拟机配置改了一下不知道磁盘是不是也要跟着改”的混乱情况。3. 虚拟磁盘管理核心概念拆解进入具体迭代记录之前你还需要先理解几个和 DISK3 强相关的概念。3.1 虚拟磁盘类型厚置备还是精简置备VMware 虚拟机磁盘主要有两种分配策略磁盘类型空间分配方式适用场景厚置备Thick创建时直接占用宿主机全部大小对性能要求较高、磁盘空间充裕精简置备Thin按需增长用多少占多少磁盘空间紧张但需要预留监控我最初的虚拟机使用的是精简置备。但在后续版本迭代中由于快照增多虚拟机磁盘文件膨胀明显因此 DISK3 方案重新评估了置备方式。3.2 虚拟磁盘控制器IDE、SATA、NVMe 的选择磁盘控制器直接影响客户机性能和兼容性IDE兼容性最好但性能最差适合旧系统。SATA兼容性与性能均衡是多数 Linux 虚拟机的默认选择。NVMe性能更强但需要客户机系统提供对应驱动支持。在 VM2.5v2DISK3 的磁盘演进中我把数据盘从 SATA 控制器的单个大分区改为了“系统盘 SATA 数据盘 NVMe”的组合方式这样系统安装更稳数据读写更快。3.3 快照与磁盘演进的关系快照是虚拟机磁盘进化中容易被忽视的部分。每个快照都会保存一份增量数据快照越多虚拟磁盘中的 delta 文件越多最终会拖慢磁盘 IO。经验是进入新磁盘方案之前先删除多余快照再执行磁盘操作。3.4 Windows 与 Linux 对 VMware 磁盘扩容的差异Linux 下使用fdisk或growpart扩展分区再用resize2fs扩展文件系统。Windows 下需要在“磁盘管理”中扩展卷。这两类操作都依赖底层虚拟磁盘已经扩容成功否则客户机里看不到新空间。4. 完整实战案例从 VM2.5 到 v2 再到 DISK3下面是这套进化的实战过程按阶段拆分每个阶段都能独立验证。4.1 阶段一VM2.5 基础环境构建4.1.1 创建虚拟机与磁盘分配初始创建虚拟机时我使用的是 SATA 控制器 60GB 动态磁盘# 对应 VMware Workstation 图形操作的等价命令行方式示意 vmrun start D:\VMs\VM2.5\VM2.5.vmx注意vmrun命令行工具主要用于控制虚拟机开关机、快照与克隆不是创建磁盘的工具。创建虚拟机时通过图形界面选择磁盘大小60GB。立即分配所有空间否。将虚拟磁盘拆分为多个文件是便于拷贝迁移。4.1.2 安装 Ubuntu 22.04 LTS安装过程中手动分区/boot 1GB / 40GB /home 剩余空间这样的分区方式在 VM2.5 阶段还算稳定但后续扩容时发现一个问题/home数据与系统在同一块虚拟磁盘上备份系统等于备份所有数据。4.2 阶段二v2 配置迭代v2 阶段调整的重点不是磁盘大小而是硬件兼容性与系统配置。4.2.1 升级虚拟硬件版本在 VMware Workstation Pro 16 中将虚拟机的硬件兼容性升级到 Workstation 16.x。升级后观察到虚拟机内存映射方式优化。NVMe 控制器支持更好。休眠与挂起恢复速度提升。这一步并不会在系统内增加磁盘空间但会影响后续 DISK3 方案的磁盘控制器选择。4.2.2 调整内存与 CPU调整前CPU: 2 核 内存: 4GB调整后CPU: 4 核 内存: 8GB注意调整内存时不要一次性给满应给宿主机保留至少 2GB 可用内存否则会出现宿主机卡顿甚至虚拟机无法启动。4.3 阶段三DISK3 磁盘方案重构进入 DISK3 阶段最核心的变化就是“拆盘”。4.3.1 方案设计老的磁盘方案DISK1/2 本质是一个方案VM2.5.vmdk 60GB ├── sda1 /boot 1GB ├── sda2 / 40GB └── sda5 /home 剩余空间新磁盘方案DISK3SystemDisk.vmdk 40GB ├── sda1 /boot 1GB └── sda2 / 39GB DataDisk.vmdk 80GB独立数据盘NVMe 控制器 └── nvme0n1p1 /data 80GB这样设计后做快照时可以只对系统盘做快照数据盘排除在快照周期之外更符合数据一致性原则。4.3.2 给现有客户机添加第二块虚拟磁盘在 VMware Workstation 中打开虚拟机设置。添加硬盘。选择 NVMe 控制器。磁盘类型选“厚置备置零”追求性能或“精简置备”空间不足时选。磁盘大小设置为 80GB。4.3.3 在 Linux 客户机中识别新磁盘启动 Ubuntu 后确认系统识别到新磁盘lsblk # 预期输出中会看到类似下面的一条 # nvme0n1 disk 80G # └─nvme0n1p1 part 80G如果看不到nvme0n1检查虚拟机设置中的控制器类型是否被客户机系统支持。4.3.4 分区并格式化使用fdisk或parted分区sudo fdisk /dev/nvme0n1fdisk 交互命令按顺序执行n p 1 回车默认起始扇区 回车默认结束扇区使用全部空间 w分区后格式化sudo mkfs.ext4 /dev/nvme0n1p14.3.5 挂载数据盘创建挂载点并临时挂载sudo mkdir -p /data sudo mount /dev/nvme0n1p1 /data查看挂载结果df -h /data4.3.6 设置开机自动挂载先获取磁盘 UUIDsudo blkid /dev/nvme0n1p1修改/etc/fstab前先备份sudo cp /etc/fstab /etc/fstab.bak然后追加一行使用实际 UUIDUUID你的UUID值 /data ext4 defaults 0 0验证 fstab 配置是否正确sudo mount -a如果没有报错说明配置正常。如果报错立即恢复备份sudo cp /etc/fstab.bak /etc/fstab4.3.7 迁移数据到新数据盘把原来/home下的数据迁移到/datasudo rsync -avh /home/ /data/确认迁移完整后再按需调整/home中实际使用目录例如把某些用户目录软链接到/data下sudo mv /home/username /data/username sudo ln -s /data/username /home/username这一步适合个人实验环境生产环境建议在迁移前做好备份并在低峰期操作。4.4 阶段四系统盘扩容如果 40GB 不够如果系统盘后续空间不足可以走 VMware 的在线扩容流程。先在 VMware Workstation 中编辑虚拟机设置把系统磁盘从 40GB 调整到 60GB。然后进入 Linux 内部执行sudo growpart /dev/sda 2 sudo resize2fs /dev/sda2这个过程不需要重装系统但前提是磁盘分区末尾有未分配空间。如果分区方式不是使用 LVMgrowpart依赖空闲空间连续存在。4.5 阶段五克隆与迁移验证DISK3 方案设计完成后我又做了克隆验证。4.5.1 完整克隆在 VMware Workstation 中右键虚拟机 - 管理 - 克隆选择“创建完整克隆”。完整克隆的好处是生成的虚拟机与源虚拟机完全独立不会影响原机。4.5.2 克隆后重置网络配置克隆后的 Ubuntu 系统网卡名称可能改变需要重置网络配置sudo ip addr show如果网卡名称变化修改 netplan 配置sudo vim /etc/netplan/00-installer-config.yaml改为实际网卡名后应用sudo netplan apply这一步在克隆场景中非常常见特别是使用 DHCP 时网卡名称变化会导致网络不通。5. 三个版本之间的关键对比5.1 配置对比表项目VM2.5 初始版v2 迭代版DISK3 重构版虚拟硬件版本Workstation 15.xWorkstation 16.xWorkstation 16.x系统盘60GB 单盘60GB 单盘40GB 系统盘数据盘无无80GB NVMe 数据盘控制器SATASATASATA NVMe快照策略多快照堆积保留 2 个基础快照系统盘快照 数据盘排除备份方式整个虚拟机目录复制导出 ovf 镜像系统盘快照 rsync 数据备份5.2 为什么会选择 DISK3 方案DISK3 重构的核心原因是数据与系统解耦。在 VM2.5 阶段系统崩溃后恢复成本高因为数据和系统绑定在一起。DISK3 后系统盘损坏时直接重装系统并挂载/data即可数据丢失风险更低。6. 常见问题与排查思路6.1 克隆后系统无法启动问题现象常见原因解决思路克隆后开机黑屏磁盘控制器类型不一致检查 vmx 文件中的 scsi/sata/nvme 控制器配置克隆后网卡无法启动网卡 MAC 地址变化netplan 或 NetworkManager 重置网络配置无法引导Boot 盘顺序错误进入 BIOS 设置调整系统盘为第一启动项6.2 新磁盘添加后系统里看不到如果在/dev下找不到新磁盘优先检查VMware 虚拟机设置中是否正确添加了磁盘。控制器类型是否为客户机系统支持的类型例如 CentOS 7 老内核需要额外加载 NVMe 驱动。宿主机磁盘空间是否充足VMware 是否因空间不足延迟创建磁盘。6.3 系统盘扩容后空间没有变化执行growpart后使用df -h未看到变化常见原因分区末尾仍有分区占用无法扩展。文件系统是 xfs需要使用xfs_growfs而不是resize2fs。未重启或未重新读取分区表。确认 root 文件系统类型lsblk -f根据文件系统类型选择扩展命令。6.4 Ubuntu 挂载新磁盘后开机进入紧急模式这通常是因为/etc/fstab中写入了错误的 UUID或挂载选项错误。修复步骤在紧急模式下输入 root 密码。查看 fstab 中哪一行配置有误cat /etc/fstab如果配置无误但系统仍异常可以在启动时进入恢复模式直接注释错误行。修复后执行systemctl daemon-reload mount -a经验是修改 fstab 后每次都要执行一次mount -a验证确认无报错再重启。6.5 虚拟机迁移到另一台宿主机后磁盘不识别优先确认文件扩展名和磁盘描述文件VMware 虚拟机迁移需要复制整个目录只复制.vmdk文件不一定能正常识别。使用 OVF 导出再部署的兼容性更好。如果使用 VirtualBox 打开 VMware 磁盘建议先转换格式不要直接挂载。7. 最佳实践与工程建议7.1 磁盘规划建议系统盘不要贪大40~60GB 足够大多数实验环境使用。数据盘单独拆分按需扩容不影响系统盘快照。使用 NVMe 控制器前先确认客户机系统支持避免安装阶段无法识别磁盘。精简置备适合空间有限的环境但要关注磁盘文件膨胀问题。7.2 命名规范建议参考我的命名方式VM名称-系统类型-版本号-磁盘方案编号示例ubuntu2204-2.5-v2-disk3这样可以从名字直接看出虚拟机的用途、系统版本和磁盘方案状态。7.3 快照策略建议系统处于干净状态时打一个“基础快照”。验证大版本升级前打一个“升级前快照”。数据盘不要频繁做快照数据备份优先使用 rsync 到宿主机或外部磁盘。7.4 备份策略建议DISK3 方案落地后推荐组合备份备份对象工具频率虚拟机完整配置VMware Workstation 克隆功能每月一次系统盘状态VMware 快照关键变更前数据盘文件rsync / tar每周一次数据盘扇区级备份Win32 Disk Imager / dd每季度一次注意dd和 Win32 Disk Imager 是块级备份不能直接挂载 Windows 资源管理器访问内容需要先回写磁盘或在工具中浏览。这类操作必须确保目标磁盘数据已备份或在空白磁盘上测试避免数据丢失。7.5 迁移到其他虚拟化平台时从 VMware Workstation 迁移到 VirtualBox可以先把磁盘单文件拆分再转换VBoxManage clonehd source.vmdk output.vdi --format VDI从 VMware 迁移到 Proxmox VEKVM时优先导出为.vmdk或.qcow2并注意 virtio 驱动支持。8. 下一步与扩展方向VM2.5v2DISK3 这轮迭代完成后我已经把常用的实验虚拟机从“单块大硬盘”改成了“系统盘 数据盘”的结构。下次再遇到系统损坏或数据扩容处理起来会轻松很多。如果你的环境有更多需求可以继续在以下方向扩展使用 Ansible 自动初始化新挂载数据盘。在 Linux 中使用 LVM 管理虚拟磁盘方便在线扩展。测试多虚拟磁盘 IO 性能对比 SATA 与 NVMe 在实际负载中的差异。使用 ESXi 中的 Storage vMotion 在线迁移虚拟机存储位置。这一套非官方、个人向的虚拟机进化记录重点是从实际使用出发不追求复杂更多是让虚拟机环境可维护、可迁移、可恢复。如果你也在调整自己的虚拟机磁盘方案可以先从拆分系统盘和数据盘开始可能半天时间就能完成一次不错的重构。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进