VMware Workstation 17 虚拟机安装配置与排障全指南
装一台 VMware 虚拟机,对不少人来说是接触虚拟化的第一课,也是最容易半途而废的一课——我见过太多人卡在安装向导的第三屏、卡在“此平台不支持 Intel VT-x/EPT”、卡在虚拟机开机黑屏只剩一个光标闪。这篇就把 VMware Workstation 17 的安装从头到尾拆一遍:安装包从哪拿、许可证怎么合规取得、向导每一屏到底在问什么、第一台虚拟机的参数怎么算出来、跑起来之后出问题又该怎么查。不管你是刚接触虚拟机的新手,还是想把手上一堆测试环境挪进本地机器的老手,下面这些内容基本能覆盖你八成以上的场景。我尽量不写“下一步点下一步”这种流水账,而是把每个选项背后的取舍讲清楚,你照着做,也照着理解。
1. 先把话说清楚:什么场景该上 VMware Workstation 17
1.1 虚拟机、容器、双系统,三条路的真实差别
很多人一开始就纠结:我要跑个 Linux,是装双系统、上 Docker,还是开虚拟机?这三条路解决的问题根本不是一个层面的。双系统是独占硬件,性能最好,但切换要重启,两个系统互相看不见对方的文件,一旦某个系统的引导挂了,救援成本极高。容器是共享宿主内核的进程隔离,启动快、占用小,但它只能跑和宿主同内核的系统,你要测一个不同内核版本的行为、测一个有自己内核模块的东西,容器就无能为力了。虚拟机是完整的硬件模拟加独立内核,隔离级别最高、兼容性最好,代价是要吃掉一部分内存和 CPU。
我自己的判断标准很粗暴:如果这个环境需要“整机级”的隔离——比如要测引导过程、要装一个带图形界面的完整桌面系统、要在里面再跑一层虚拟化、要做可能有破坏性的操作又不想污染本机——那就用虚拟机。如果只是想让某个服务跑在 Linux 上、对内核没要求,容器更轻。双系统我基本只在需要真实 GPU 直通跑重负载的时候才考虑,日常开发几乎不用。
这也是为什么 Workstation 这类桌面虚拟化软件一直有市场:它给你的是一台“可以随便折腾、搞坏了删掉重来”的电脑,而且这台电脑就在你当前桌面里,一个窗口切过去就能用。对于要维护多套系统镜像、要复现用户报障环境、要给团队做统一测试基线的人来说,这个价值远超它占的那点内存。
1.2 Workstation 17 相比 15/16 到底值不值得升级
先把版本这件事说清楚。Workstation 17 对应的是虚拟机硬件版本 20(17.5 之后的部分版本可以到 21),相比 16 的硬件版本 18,实打实的变化有几个:
- 虚拟 TPM 2.0:这是装 Windows 11 客户机的硬门槛,16 及以前要么绕检测,要么用第三方补丁。17 在虚拟机设置里直接勾选“可信平台模块”,再配 UEFI 安全启动,Win11 就能正常装、正常打补丁。
- 图形能力提升到 DirectX 11 / OpenGL 4.3:跑一些轻量 3D 应用、CAD 查看器、老游戏,画面不再一片黑或者报缺 DLL。当然别指望它替代显卡直通,重负载还是不行。
- 嵌套虚拟化更稳:在虚拟机里跑容器、跑 WSL2、跑另一个虚拟机,17 的 VT-x/EPT 透传成熟了很多,虽然性能有折扣,但至少能跑通。
- 单机资源上限:Pro 版本单台虚拟机最高 32 个虚拟 CPU、128GB 内存,这个规格对绝大多数本地测试场景已经过剩了。
值不值得升?如果你现在用 15/16 且没有任何 Win11 客户机需求、也不碰嵌套虚拟化,其实没有强升级理由。但如果你是全新安装,没有理由装旧版——新版对宿主系统的兼容性更好,尤其是在较新的 Windows 上,旧版本经常出现网络驱动签名、图形驱动冲突这类问题。
这里补一句很多人不知道的事:近两年厂商调整了授权策略,Workstation Pro 对个人使用提供了免费许可,商用才需要订阅。这意味着个人用户完全可以走正规渠道拿到授权,不必去各种论坛找“注册机”。具体怎么拿,我在 2.3 节详细说。
2. 装之前的准备:硬件算术与开关清单
2.1 硬件门槛和一份能落地的容量计算
官方的最低要求看着很宽松:64 位 x86 处理器、1.3GHz 以上、2GB 内存、2.5GB 磁盘空间。但我可以负责任地说,按最低配置装出来的机器,开一台 Windows 客户机会卡到你想砸键盘。真实可用的门槛要按“你要跑什么客户机”倒推。
我给一个自己一直在用的估算方法,你可以直接套:
内存:客户机内存 × 同时运行的虚拟机台数 + 宿主系统常驻占用(Windows 建议留 4GB,Linux 桌面留 2GB)+ 你日常还要开的浏览器和 IDE 占用。举个例子,16GB 内存的笔记本,宿主留 4GB,浏览器加 IDE 大概吃掉 4GB,剩下 8GB 可以分给虚拟机——那就意味着你可以开一台 8GB 的 Win11,或者两台各 4GB 的 Linux。超过这个数,宿主会开始疯狂读盘,整个系统一起卡。
CPU:一个虚拟 CPU 对应一个物理核心(注意是核心,不是超线程出来的逻辑处理器)。分配原则是客户机的 vCPU 总数不要超过物理核心数,否则宿主和客户机会互相抢占,反而更慢。4 核 8 线程的机器,一台虚拟机给 2 个 vCPU 是比较舒服的位置,给 4 个也能跑,但宿主自己就没余量了。
磁盘:这个最容易被低估。系统盘至少预留 60GB 给虚拟机文件本身(不是给客户机),因为动态分配的虚拟磁盘会随着使用不断膨胀,加上快照文件、挂起时的内存转储文件(一个 8GB 内存的虚拟机挂起一次就生成一个接近 8GB 的 .vmem 文件),很快就把盘塞满。我一般建议虚拟机单独放一块盘,或者至少单独一个分区,留出三倍于客户机磁盘容量的空间。
再提醒一个细节:虚拟机放在机械硬盘上会非常痛苦,尤其是开机、装系统、编译代码这类大量小文件读写的场景。固态盘是刚需,哪怕是 SATA 固态也比机械盘强得多。
2.2 BIOS 里的那个开关,以及 Windows 自带的虚拟化冲突
安装本身不需要虚拟化支持,但虚拟机一开机就需要。所以在装之前,先去 BIOS/UEFI 里把 CPU 虚拟化打开,Intel 平台叫Intel Virtualization Technology(VT-x),AMD 平台叫SVM Mode。这个选项在不同主板上的位置差别很大,有的在 Advanced → CPU Configuration,有的在 Security 菜单下,找不到就翻主板手册,别硬猜。
进系统之后可以先验证一下有没有生效。Windows 下用管理员权限开 PowerShell 跑:
# 查看 CPU 虚拟化固件支持是否开启 Get-ComputerInfo -Property HyperVRequirementVirtualizationFirmwareEnabled # 或者用老办法,看输出的“虚拟化”相关字段 systeminfoLinux 下更直接:
# 有输出(且不为 0)说明虚拟化已启用 grep -Eoc '(vmx|svm)' /proc/cpuinfo接下来是重点,也是新手最容易踩的坑:Windows 自带的虚拟化功能会和 VMware 抢 VT-x。Hyper-V、WSL2、Windows 沙盒、内存完整性(内核隔离)、Credential Guard,这些一旦启用,就会把 CPU 的虚拟化能力占住,VMware 拿不到独占总线,表现就是虚拟机开机报“此平台不支持虚拟化的 Intel VT-x/EPT”,或者能开机但慢得离谱。
排查顺序我是这么走的:
- 查功能开关:控制面板 → 程序和功能 → 启用或关闭 Windows 功能,看 Hyper-V、虚拟机平台、Windows 虚拟机监控程序平台有没有被勾上。
- 查内核隔离:Windows 安全中心 → 设备安全性 → 内核隔离详细信息 → 内存完整性。这个默认可能是开的,关掉后必须重启才生效。
- 查引导配置:管理员命令行执行下面这条,然后重启,这条命令是让 Windows 不要启动 Hyper-V 的虚拟机监控程序。
bcdedit /set hypervisorlaunchtype off看完之后可以再执行bcdedit /enum {current},确认hypervisorlaunchtype那一行是Off。
注意:关掉“虚拟机平台”和 Hyper-V 会影响 WSL2 和依赖它们的安卓子系统。如果你日常离不开 WSL2,那就得接受 VMware 退回到用户级监控模式(ULM),性能会明显下降。两全其美的方案基本不存在,你需要做一个取舍:要么把这台机器定位成“虚拟机专用机”,要么把 WSL2 的需求挪到另一台机器或者干脆用虚拟机里的 Linux 顶替。
2.3 安装包与授权的合规获取路径
安装包只有一个正确来源:软件厂商官网的产品下载页。别去各种“软件站”“绿色版合集”下载,原因不是道德说教,而是虚拟机软件安装时会往系统里塞虚拟网卡驱动和内核级驱动,它运行在非常底层的位置。一个被改过的安装包,你很难通过常规手段发现它多做了什么。相比之下省下的那点下载时间完全不值。
拿到安装包之后,做两件事再双击:
第一,核对文件大小和数字签名。右键安装包 → 属性 → 数字签名,正规的安装包一定有厂商的有效签名,点开看签名者信息是否对得上。签名缺失或者无效,直接删掉。
第二,校验哈希。官网页面上一般会提供安装包的 SHA256,没有的话至少自己算一遍存着,方便以后核对同一版本是否一致:
Get-FileHash .\VMware-workstation-full-17.x.x-xxxxxxx.exe -Algorithm SHA256Linux/macOS 下用sha256sum 文件名或shasum -a 256 文件名。
关于许可证,这里必须说清楚,因为这正是很多教程最容易跑偏的地方。Workstation 17 时代,厂商已经对个人使用放开了免费许可:注册一个官方账号,在产品页面按提示获取个人使用密钥即可,密钥格式是五组五位字符。商用场景则需要走订阅或批量授权,通过正规渠道采购。另外,安装完不激活也有完整的试用期,够你把环境跑通、判断要不要长期用。
我特别不建议从任何“密钥分享帖”“注册机”获取授权,除了法律风险,更现实的问题是:这类密钥大多是批量泄露的,随时可能失效,用着用着虚拟机突然提示授权无效;而“注册机”本身就是恶意程序的重灾区。一台装着公司代码、客户数据、各种账号密码的开发机,为了省一笔本来就不用花的钱去冒这个风险,账算不过来。
3. 安装过程逐屏拆解
3.1 向导每一屏在问什么,哪些该改
双击安装包,前面是欢迎页和许可协议,没什么可说的,接受继续。真正需要你看一眼的是后面几屏。
第一屏:安装类型。典型安装和自定义安装。我建议直接选自定义,因为典型安装会把程序装到系统盘默认路径,而且不给你选择组件的机会。自定义装除了能改路径,还能在下一屏勾选组件。
第二屏:安装路径和组件。路径默认在C:\Program Files (x86)\VMware\VMware Workstation\。别看到 x86 就以为装错了——这个软件一直沿用这个目录结构,实际装的是 64 位程序。如果你的系统盘空间紧张,可以改到其他盘,但要注意:改路径之后,卸载时最好还用原安装包卸载,手动删目录会留下注册表项和服务。
组件部分有几个选项值得琢磨:
- 增强型键盘驱动程序:这个组件的作用是让虚拟机里的特殊键(比如某些组合键、多媒体键)能被正确捕获。它会安装一个键盘过滤驱动,日常用不上,但如果你要在虚拟机里做键盘相关的测试、或者遇到按键被宿主截获的问题,勾上会省事。一般不勾也行。
- 将 VMware Workstation 控制台工具添加到系统 PATH:这个强烈建议勾上。勾了之后你能在命令行里直接调用
vmrun这类工具,做批量启停、脚本化操作非常方便。 - 启动时检查产品更新:看个人习惯,我一般关掉,不想每次开机弹窗。
- 加入客户体验提升计划:纯自愿,不影响功能,按自己意愿选。
第三屏:快捷方式。桌面和开始菜单,随意。
第四屏:准备安装。点安装,等进度条走完,大概两三分钟。中途如果弹出“是否允许安装网络驱动”之类的系统确认,必须点允许,否则虚拟网络(NAT、仅主机)用不了。
装完会提示重启,我个人建议重启一次,尤其是你之前动过 Hyper-V 相关设置的情况下,驱动加载和虚拟网卡注册都需要完整的重启周期才稳定。
3.2 首次启动与许可证激活
第一次启动会弹许可协议和激活窗口。有密钥就填进去,没有就选试用。密钥输入框是五段式的,每段五位,输入的时候会自动跳格,粘贴的时候注意别带多余空格。
激活成功后在“帮助 → 关于”里能看到授权状态和版本号。如果显示的是试用版,但你已经输入了密钥,检查三点:一是密钥是否对应当前版本(17 的密钥不能用在 16 上),二是是否联网(部分授权需要在线校验),三是是否之前装过旧版本没卸干净导致授权残留冲突。
顺便说下卸载和修复。如果装到一半中断、或者想彻底重装,用安装包本身提供的卸载功能,或者命令行里执行:
# Linux 下卸载 sudo vmware-installer -u vmware-workstationWindows 下走控制面板的卸载入口即可。不要手动删安装目录了事,虚拟网卡(VMnet1、VMnet8)会残留,重装时可能因为端口冲突失败。
3.3 装完立刻要做的六项设置
装完不配置直接开虚拟机,后面会反复踩坑。这六项是我每台新机器必做的:
- 改默认虚拟机存放位置。编辑 → 首选项 → 工作区,把默认路径从系统盘的“文档”目录改到数据盘。这一步能省掉后面无数次“C 盘怎么又满了”的排查。
- 调整内存预留策略。首选项 → 内存,勾选“允许交换大部分虚拟机内存”会让虚拟机在宿主内存紧张时被换到磁盘上,结果就是整机卡死。我一般选“调整所有虚拟机内存使其适应预留的主机 RAM”,也就是优先让客户机内存受控。
- 关闭不必要的自动更新检查。首选项 → 更新,关掉自动下载。
- 配置虚拟网络编辑器。编辑 → 虚拟网络编辑器,先看 VMnet8(NAT)和 VMnet1(仅主机)的子网网段有没有和你公司内网、家里路由器的网段撞车。撞了就得改,比如公司用 192.168.1.x,你就把 NAT 网段改成 192.168.150.x,否则各种连不通。
- 开启共享虚拟机功能(按需)。如果你要和同事共享一台测试机,可以在首选项里配置共享虚拟机的存放位置和权限;纯本地用就不用管。
- 检查日志目录。首选项 → 工作区里能看到日志路径,记住这个位置。以后虚拟机出任何问题,第一件事就是去这个目录翻
vmware.log,答案通常就写在最后几十行里。
4. 建第一台虚拟机:参数不是拍脑袋定的
4.1 内存和 CPU 的分配公式
新建虚拟机(Ctrl+N)之后,向导会问你是典型还是自定义。我建议一律选自定义,因为典型模式会替你做一堆决定,比如默认磁盘类型、默认网络模式,而这些默认值经常是最容易出问题的组合。
到了硬件配置那一屏,内存和 CPU 的分配是第一个决策点。前面 2.1 节讲的是总量估算,这里是单台的分配:
| 客户机系统 | 建议内存 | 建议 vCPU | 说明 |
|---|---|---|---|
| Linux Server(无桌面) | 1-2GB | 1-2 | 跑 Docker、数据库足够 |
| Linux 桌面版 | 4GB | 2 | 带图形界面,浏览器很吃内存 |
| Windows 10 | 4GB 起 | 2 | 4GB 能跑,8GB 舒适 |
| Windows 11 | 8GB | 2-4 | 系统本身占用就大,低于 4GB 会频繁换页 |
| 老系统(XP/2003 等) | 1-2GB | 1 | 再多它也用不上 |
这里有个反直觉的点:给客户机分配的 vCPU 数量和它的性能不成正比。当 vCPU 数量超过宿主实际可用核心时,虚拟化层需要做“等待调度”,虚拟机内部的时钟会漂移,表现出来就是系统时间变慢、编译卡顿、多线程任务互相抢。经验值是:物理 4 核,最多给 2 个 vCPU;物理 8 核,最多给 4 个。宁可给少点,也不要给多。
另外,如果这台虚拟机里要跑容器、要开 WSL2、要在里面再套一层虚拟机,必须勾选“虚拟化 Intel VT-x/EPT 或 AMD-V/RVI”这个选项(在处理器设置里)。不勾的话,客户机里检测不到虚拟化能力,那些功能直接报错。勾了之后宿主会做嵌套虚拟化,性能有折扣,但能用。
4.2 磁盘类型、容量与预分配
磁盘这一屏的选项比想象中多,逐个说。
磁盘类型(控制器):常见的有 SCSI(LSI Logic、LSI Logic SAS、Paravirtualized)、SATA、NVMe。怎么选?
- LSI Logic:兼容性最好,Windows 全系列、主流 Linux 都能直接认,不带驱动也能装。
- LSI Logic SAS:性能略好,Windows Server 系列常用。
- Paravirtualized(PVSCSI):性能最好,但部分老系统需要手动加载驱动,装系统时可能找不到磁盘。
- SATA:兼容性最广,老系统(XP 那一代)首选,但性能一般。
- NVMe:17 支持的新选项,性能好,对系统版本有要求。
我的默认选择是:现代系统用 LSI Logic + 按需开 NVMe,老系统用 SATA。宁可损失一点性能,也不要卡在“装系统时找不到硬盘”这一步。
容量:动态分配还是预分配?动态分配是按需增长,初始文件很小,用多少涨多少;预分配是一次性占满,写入性能更稳定,碎片更少。在机械盘上两者差别很明显,固态盘上差别不大。我一般选动态分配,但客户机磁盘容量给足一些(Windows 给 80GB,Linux 给 40GB),因为动态分配有个坑:磁盘只会涨不会自动缩,删了文件之后 .vmdk 文件不会变小,需要手动执行“压缩”操作。
还有一个容易被忽略的选项:“将虚拟磁盘拆分成多个文件”。拆分成多个 2GB 的小文件,方便拷贝到 FAT32 的 U 盘上;不拆分则是一个大文件,管理简单但移动不方便。现代环境我一般选不拆分。
4.3 四种网络模式到底选哪个
网络这部分的选项,是新手最容易随便点“下一步”跳过的部分,但恰恰是后续联调问题的根源。Workstation 提供的主要模式:
| 模式 | 原理 | 客户机 IP | 典型用途 | 坑点 |
|---|---|---|---|---|
| 桥接(Bridged) | 虚拟一块网卡接到宿主的物理网络 | 与宿主同网段,由路由器分配 | 需要被局域网其他机器访问 | 多网卡时桥接选错网卡;公司网络做 MAC 绑定会失败 |
| NAT | 通过 VMnet8 虚拟网卡共享宿主 IP 出网 | 由 VMware 的 DHCP 分配 | 日常上网、装包、拉代码 | 外部机器访问不了客户机,要手动配端口转发 |
| 仅主机(Host-only) | 只连 VMnet1,与宿主通信 | 独立网段 | 纯本地联调,不想暴露到外网 | 客户机上不了网,装软件要先配代理源或换模式 |
| 自定义 / LAN 区段 | 指定某个 VMnet 或私有网段 | 自定 | 多台虚拟机组成隔离集群 | 需要手动建区段,命名混乱后难维护 |
我的实践建议:日常开发用 NAT,需要对外提供服务时临时切桥接,做集群实验用 LAN 区段。桥接的问题在于它直接暴露在局域网里,公司网络环境下可能触发安全策略,或者因为 DHCP 地址池紧张拿不到 IP;而 NAT 下客户机是“躲在宿主后面”的,最安全,代价是外部访问要配端口转发(虚拟网络编辑器 → NAT 设置 → 端口转发,把宿主的某个端口映射到客户机的 IP:端口)。
还有一个特别隐蔽的坑:宿主上装了容器工具、或者开了 Hyper-V,会多出一堆虚拟网卡,这时候桥接模式自动选择物理网卡经常选错,结果就是虚拟机死活拿不到 IP。遇到这种情况,去虚拟网络编辑器里,把 VMnet0 的桥接目标从“自动”改成明确指定你正在用的那块物理网卡(无线网卡不能被桥接,这是另一个常见失败原因)。
4.4 客户机系统安装时最常翻车的三个点
虚拟机建好,挂上安装镜像(在虚拟机设置 → CD/DVD 里指定 ISO 文件,记得勾选“启动时连接”),开机。
第一个坑:固件类型选错。装 Windows 11 必须用 UEFI,并勾选“安全启动”,还要在“选项”标签页里添加可信平台模块(TPM 2.0)。用 BIOS 引导装 Win11,安装程序会直接告诉你“这台电脑不满足最低系统要求”。反过来,装一些老系统(比如 Windows 7 32 位)用 UEFI 又可能引导不起来,得退回去用 BIOS。
第二个坑:装完系统黑屏或者卡在引导。常见原因是图形加速。默认情况下 Workstation 会开启 3D 加速,但某些客户机系统的显卡驱动和虚拟 GPU 配合不好,装完驱动重启就黑屏。处理办法是关掉虚拟机、进设置 → 显示器,取消“加速 3D 图形”,再开机,装完系统自带的驱动之后再按需打开。
第三个坑:系统时间乱跳。虚拟机暂停、挂起、恢复之后,客户机时间和宿主对不上,会导致各种证书校验失败、软件授权异常。解决方法是装 VMware Tools,并在虚拟机设置 → 选项 → VMware Tools 里勾选“将客户机时间与主机同步”。VMware Tools 装完记得重启客户机,很多共享剪贴板、拖拽文件、自适应分辨率的功能都依赖它。Linux 客户机上现在更推荐用发行版自带的open-vm-tools:
# Debian/Ubuntu 系 sudo apt install open-vm-tools open-vm-tools-desktop # RHEL/CentOS 系 sudo dnf install open-vm-tools open-vm-tools-desktop5. 常见问题排查实录
5.1 安装阶段:2503/2502、安装中断、驱动问题
安装阶段最常见的是2503 和 2502 错误,本质是 Windows 的安装服务权限不足,安装程序解压到临时目录后执行 MSI 包被拒。处理方式不是反复点重试,而是用管理员权限从命令行启动安装:
msiexec /package "D:\下载路径\VMware-workstation-full-17.x.x-xxxxxxx.exe"如果还不行,检查一下临时目录的权限(%TEMP%对应的目录),以及是不是装了某些“系统优化”工具篡改了安装服务的启动类型。
安装到一半中断、回滚的情况,八成是杀毒软件或主机防护软件拦截了驱动注册。这类软件对“安装内核驱动”这个动作非常敏感。稳妥做法是安装前临时退出实时防护,装完再开回来,并把虚拟机的主程序目录加进白名单。
还有一种情况:安装成功但虚拟机开不了机,日志里报网卡创建失败或者服务启动失败。去服务管理器(services.msc)看VMware Authorization Service、VMware NAT Service、VMware DHCP Service这几个服务的状态,手动启动试试,启动失败就看 Windows 事件查看器里的应用日志,错误码会指向具体原因,通常是端口被占用或者网络栈残留。
5.2 启动阶段:VT-x 被占用、黑屏、无法引导
这是我被问得最多的一类问题,整理成速查表更省事:
| 现象 | 最可能原因 | 排查与处理 |
|---|---|---|
| 提示“此平台不支持虚拟化的 Intel VT-x/EPT” | Hyper-V / 内核隔离占用了虚拟化 | 关闭 Hyper-V、虚拟机平台、内存完整性,执行bcdedit /set hypervisorlaunchtype off后重启 |
| 开机黑屏只有光标 | 3D 加速与客户机驱动冲突 | 关闭 3D 加速后重启,装好 VMware Tools 再开 |
| 提示“无法连接虚拟设备” | ISO 文件路径变了或被移动 | 虚拟机设置里重新指定镜像路径,或改成“使用物理驱动器” |
| 卡在 PXE 引导 | 硬盘或光驱顺序不对 | 进 BIOS 调整引导顺序,确认 ISO 已勾选“启动时连接” |
| 客户机装系统时找不到硬盘 | 控制器类型与系统不匹配 | 老系统改 SATA,或安装时手动加载 SCSI 驱动 |
| 开机报“另一个程序正在使用此虚拟机” | 上次异常退出留下了锁文件 | 确认没有残留进程后,删除目录下的.lck文件夹 |
关于最后一条多说一句:.lck目录是锁文件,正常情况下关闭虚拟机会自动删除。异常断电、强制结束进程之后会残留,导致下次打不开。删之前一定要确认虚拟机进程真的没在跑(任务管理器里搜 vmware-vmx),有进程在跑就删锁,可能导致虚拟磁盘损坏。这个操作的风险不小,养成先查进程再删的习惯。
5.3 运行阶段:卡顿、磁盘膨胀、共享失效
用起来之后的问题集中在三个方向。
性能卡顿。先分清是哪种卡:如果宿主也一起卡,多半是内存超配,客户机内存加宿主占用超过了物理内存,系统开始频繁换页,这时候唯一的解法是减少同时运行的虚拟机数量或者调小分配。如果宿主不卡只有客户机卡,看客户机内部的任务管理器,是 CPU 满载还是磁盘 100% 占用。磁盘 100% 这种情况在机械盘上极其常见,换成固态或者把虚拟机挪到固态上就能解决大半。
还有一个隐蔽的原因:虚拟机磁盘文件碎片化。动态分配的虚拟磁盘文件在宿主上会变得很碎,读写性能下降。Workstation 自带的磁盘整理工具可以做碎片整理和压缩,在虚拟机设置 → 硬盘 → 工具里能找到。整理前先关机、打快照,整个过程可能要几十分钟,别在赶进度的时候做。
磁盘膨胀。客户机里删了 20GB 文件,宿主上的 .vmdk 一点没变小,这是动态分配的固有特性——虚拟机不知道哪些块已经空了。处理办法是在客户机里把空闲空间清零(Windows 上用磁盘清理 + 第三方工具写零,Linux 上dd if=/dev/zero of=/tmp/zero bs=1M直到写满再删),然后在虚拟机设置里执行“压缩”。压缩前必须关机,挂起状态不行。
共享功能失效。复制粘贴不通、拖拽文件没反应、分辨率自适应不生效,这组问题的答案九成是 VMware Tools 没装、装坏了、或者客户机系统更新后驱动被替换掉了。重装一遍 Tools 基本能解决。Linux 客户机上要注意:如果装了open-vm-tools,就不要再装安装包里的 Tools,两者会冲突。
6. 快照、克隆与迁移:把虚拟机当资产管
6.1 快照的代价与正确用法
快照这东西用好了是后悔药,用不好是性能杀手。原理上,快照不是“复制一份磁盘”,而是把当前磁盘状态冻结成一个只读基点,之后所有写入都落到一个新的增量文件里。所以你看到的“瞬间完成”是真的,因为它只记录了一个状态点。
代价在哪?每打一次快照,就多一层增量文件,读操作要沿着链一层层回溯,写操作要写到当前层。快照链越深,性能越差,磁盘占用也越大——因为被“冻结”的块在你删掉快照之前都不会释放。我见过有人的虚拟机打了十几个快照,开机要五分钟,最后连虚拟机都启动不了。
我的使用原则是:快照只做“短期保护”,生命周期以小时或天计,不做长期备份。典型场景是:装一个新软件之前打一个,验证完没问题就立刻删除合并;升级系统之前打一个,确认稳定后删掉。合并快照(删除快照时会自动合并)这个过程可能很慢,尤其是快照链深的时候,尽量在空闲时间做。
真正做长期版本管理,用克隆,不要用快照堆叠。
6.2 完整克隆和链接克隆怎么选
克隆是把一台虚拟机复制成另一台。Workstation 提供两种:
- 完整克隆:把虚拟磁盘完全复制一份,新虚拟机跟原来的完全独立,互不影响。占用空间大(等于原机磁盘大小),但最安全、最干净。
- 链接克隆:新虚拟机只保存差异部分,依赖父虚拟机的磁盘文件。创建极快、占用极小,但父虚拟机不能删、不能随意改,否则子机全废。
选择标准很简单:这台新虚拟机要不要长期存在、要不要独立分发?要,就用完整克隆。只是临时开一台做对照实验、用完就删,链接克隆更划算。
我常用的做法是维护一套“基线机”:装好系统、装好 VMware Tools、打完全部补丁、配置好基础环境,然后关机、做一次完整克隆作为每个项目的起点。这样每个项目环境都是干净的,出问题直接删掉重新克隆,五分钟恢复。这个习惯帮我省掉的排查时间,远超维护基线机本身的投入。
克隆的时候还有一个细节:克隆出来的机器会保留原来的计算机名、SID(Windows)、SSH 主机密钥(Linux)、网卡 MAC。多台同时运行会导致网络冲突、远程连接告警。克隆完第一件事就是改主机名、重新生成 SSH 密钥、让它重新获取 MAC。Windows 上如果要做域环境实验,SID 重复会出问题,需要用系统自带的 sysprep 做一次通用化。
6.3 换机迁移的三种做法
换了新电脑,虚拟机怎么搬过去?三条路,按场景选。
第一种:直接拷贝整个虚拟机目录。关机状态下,把包含 .vmx、.vmdk 等文件的整个文件夹复制到新机器,然后用 Workstation 的“打开虚拟机”指向那个 .vmx 文件。简单粗暴,但要求新机器的路径结构尽量一致,否则虚拟机的 CD/DVD、共享文件夹这类配置需要重新指一遍。另外复制大文件用移动硬盘比网络传输靠谱,几十 GB 走无线网络很容易中途断掉。
第二种:导出 OVF/OVA。文件 → 导出为 OVF,会生成一个标准化的、跨平台的虚拟机包。好处是通用性强,能导入到其他虚拟化平台;坏处是导出时间长、文件大,而且导出过程中会重新生成磁盘格式,一些硬件相关的配置(比如虚拟 TPM 状态)可能丢失。适合需要跨平台迁移或者给别人分发环境的场景。
第三种:只搬数据,重建环境。对于有自动化部署脚本的环境,这是最省心的——新机器上重新装系统、跑一遍配置脚本、把数据卷挂上去。前提是你平时就把环境配置脚本化了,而不是靠手工点。
我自己的习惯是第二种和第三种结合:日常开发环境全部脚本化,重要数据单独存;需要完整保留状态的实验环境才用 OVF 导出。这样换机器基本不用做“迁移”这个动作,装完系统跑个脚本就恢复了。
最后分享一个我踩过不止一次的坑:迁移虚拟机之前,先把快照全部合并、把挂起状态全部关掉。带着快照链或者挂起状态的虚拟机搬过去,轻则打不开,重则磁盘链断裂,几十小时的实验环境直接报废。搬之前多花十分钟做一次“关机 + 删除全部快照 + 压缩磁盘”,能省掉后面几天的返工。