上周有位做前端的朋友问我,他手上一台 Windows 11 的笔记本,想同时跑两个不同版本的数据库,还要留一套老版本浏览器做页面兼容测试,问我是不是该分个区装双系统。我给他的建议是先别动硬盘分区表——装上 VMware Workstation Pro 17,建一两台虚拟机,半小时就能把这件事摊平,搞崩了直接删掉重来,宿主机的开发环境一点都不受影响。这也是我这些年一直在本机保留这个软件的原因:它不是用来"玩系统"的,而是用来把互相打架的运行时环境隔离开。
这篇内容面向的是完全没接触过虚拟机、或者装过一次但被各种报错劝退的人。我会从"你为什么需要它"讲到"装完怎么用",中间把安装向导每一屏在干什么、新建虚拟机时那些参数为什么这么填、装完之后 Tools 到底解决什么问题,全部拆开说。涉及硬件和系统设置的部分我会给出具体的检查命令和操作路径,遇到分歧的地方我会说明我为什么这么选。全文没有废话铺垫,你可以把它当成一份可以边看边操作的清单,也可以当成一份踩坑备忘录留着以后查。
1. 装之前先想清楚:Workstation Pro 17 解决的是哪一类问题
很多人对虚拟机的第一印象停留在"能在电脑里再装一个系统",这个理解没错但太浅。真正决定你要不要用它的,是环境隔离的粒度和恢复成本。我在给朋友建议之前,通常会先问三个问题:你要跑的东西对内核有没有依赖、你需不需要在同一时刻同时看到两个环境、你搞坏了之后能不能接受重装。这三个问题的答案基本就决定了你该用双系统、容器还是虚拟机。
1.1 双系统、容器、虚拟机这三条路的分界线
双系统的本质是把一块物理硬盘切成两半,同一时刻只有一个系统在跑。它的优势是性能零损耗,显卡、USB 设备、外设全部独占,适合做需要满血硬件的事情。但代价很直接:切换要重启,两个系统之间的文件共享要靠额外分区或者U盘倒腾,一旦引导区出问题,两个系统一起完蛋。我见过不少人为了"体验一下另一个系统"去分区,最后因为引导修复折腾了一整个周末。
容器走的是另一条路,它复用宿主机的内核,只隔离用户态的文件系统和进程空间。启动快、占用小,做服务端开发、跑一堆微服务非常舒服。但它有个硬限制:内核是共享的,你没法在容器里跑一个完全不同的内核版本,也没法在里面做内核模块相关的实验,更别说跑一个带完整桌面环境的系统去测浏览器行为。容器解决的是"同一内核下的应用隔离",不是"整机隔离"。
虚拟机站在中间。它通过硬件辅助虚拟化,在宿主机上模拟出一整套完整的虚拟硬件,从 CPU、内存、磁盘到网卡、显卡、USB 控制器一应俱全。虚拟机里跑的是一个完整独立的操作系统,有自己的内核、自己的引导程序、自己的驱动栈。所以它能做的事情范围最广:装任何系统、做内核实验、测病毒样本、跑老旧软件、搭多层网络拓扑。代价是要吃掉一部分内存和磁盘,性能有折扣,图形性能尤其明显。
我一般的判断标准是这样的:如果只是想让两套语言运行时互不干扰,用容器;如果想长期在另一个系统上干活、需要满血性能,用双系统;如果是临时验证、需要完整系统环境、需要随时回滚,用虚拟机。Workstation Pro 17 属于第三类里在桌面端做得比较完整的一个。
1.2 Pro 版和 Player 版、和旧版本之间怎么选
同一家还有 Player 版本,很多人图省事装了 Player,用一阵子发现想要的功能全在 Pro 里。两者最核心的差别在于:Pro 支持快照和克隆,Player 不支持;Pro 有完整的虚拟网络编辑器,能自定义 NAT 规则、端口映射、DHCP 范围,Player 只能用固定的几个模式;Pro 支持多显示器、支持虚拟机加密、支持远程连接虚拟机,Player 都砍掉了。
快照这一条就足够决定选择了。快照是虚拟机最有价值的功能之一,它能在某个时间点把整台机器的磁盘状态和内存状态冻结下来,你后面无论怎么折腾——装驱动、改配置、跑可疑程序——都能在几秒钟内回到那个点。没有快照的虚拟机,出问题就只能重装,那和你直接在物理机上折腾有什么区别。所以我的建议很明确:除非你只是需要一个用完就删的一次性环境,否则直接上 Pro。
至于版本,Pro 17 相比 16 的主要变化是全面转向 64 位、对 Windows 11 和较新 Linux 发行版的支持更完整、虚拟硬件版本提升、对 USB 3.2 和 NVMe 的支持更好、图形栈也有更新。如果你宿主机是 Windows 11 或者比较新的 Linux,直接上 17,不要为了省事去装 15、16 的老版本,老版本在新系统上会遇到驱动签名、界面缩放、网络适配器不识别之类的零碎问题,排查起来非常耗时间。
1.3 哪些机器不适合硬上
有两类机器我会直接劝退。第一类是内存小于 8GB 的。宿主机自己要吃掉 3 到 4GB,你再分给虚拟机 2GB,两边都难受,虚拟机里开个浏览器就卡成幻灯片。这类机器与其折腾虚拟机,不如用云端的临时环境。
第二类是使用低功耗移动处理器的轻薄本,尤其是核心数只有 4 个、还没有超线程的那种。虚拟机的 CPU 是分时复用的,你给虚拟机分配 2 核,宿主机就少 2 核。在这种机器上跑一台编译任务重的虚拟机,宿主机自己会明显卡顿。我的经验是:物理核心数至少 4 核、最好 6 核以上,内存 16GB 起步,这样分配出去 4GB 内存、2 个核心之后,宿主机还能保持流畅。
还有一类需要提前说明:如果你打算在虚拟机里跑 3D 建模、视频剪辑、游戏这类重度图形任务,桌面虚拟机的显卡是模拟出来的,虽然有 3D 加速但性能和直通显卡完全是两个量级。这类需求不要指望 Workstation,方向就错了。
2. 动手前的体检清单:虚拟化开关与 Hyper-V 抢占
我在帮别人排查"虚拟机启动报错"这类问题时,十次里有六七次根因都在这一步没做好。安装包本身几乎不会出问题,真正让虚拟机跑不起来的是宿主机上的虚拟化功能被别的组件占用了。所以这一节请务必在装之前走一遍,前后不过五分钟,能省掉后面几个小时的折腾。
2.1 确认 CPU 虚拟化已经在固件里打开
Workstation 依赖 CPU 提供的硬件虚拟化扩展,Intel 平台叫 VT-x,AMD 平台叫 SVM。这个开关在主板固件(BIOS/UEFI)里,出厂状态不一定打开,尤其是品牌整机和笔记本,有些厂商默认关闭。
最省事的确认方式是在 Windows 里看任务管理器:打开任务管理器,切到"性能"标签,点左侧的 CPU,右下角会有一行"虚拟化:已启用 / 已禁用"。显示"已启用"就说明固件层面没问题,直接跳到下一小节。显示"已禁用"的话,需要重启进固件设置去找对应选项,通常叫 Intel Virtualization Technology、VT-x、SVM Mode、AMD-V,位置多半在 Advanced 或者 CPU Configuration 下面。
需要注意的是,有些机器的固件里除了总开关,还有一个"VT-d"或者"I/O 虚拟化"的选项,那个是给设备直通用的,Workstation 的普通使用不需要,可以不动。另外部分商务本有额外的一层安全策略会锁定虚拟化开关,这种情况只能联系设备管理员,普通用户改不了。
在 Linux 宿主机上确认更直接,终端里执行下面这条命令,输出大于 0 就说明开着:
grep -c -E 'vmx|svm' /proc/cpuinfovmx是 Intel 的标识,svm是 AMD 的标识,两个出现任意一个都算支持。
2.2 Hyper-V 相关功能为什么会"抢走"虚拟化
这是最容易踩的坑,也是报错信息最让人困惑的地方。Windows 上有一整套基于虚拟化的功能——Hyper-V、虚拟机平台、WSL2、Windows 沙盒、内核隔离里的内存完整性、Credential Guard——它们会抢先接管 CPU 的虚拟化扩展,把自己变成最底层的虚拟机监控器。这时候 Workstation 再去申请,就拿不到独占权了。
表现有两种。一种是直接启动失败,弹窗提示"此平台不支持虚拟化的 Intel VT-x/EPT"或者"VMware Workstation 与 Hyper-V 不兼容"。另一种更隐蔽:虚拟机居然能启动,但速度慢得离谱,CPU 占用异常高,因为 Workstation 退化到了兼容模式运行。很多人以为是机器性能不行,其实是这个原因。
处理方式是在"启用或关闭 Windows 功能"里,把下面这几项取消勾选:Hyper-V、虚拟机平台、Windows 沙盒、虚拟机监控程序平台。改完必须重启。如果你还需要用 WSL2 或者 Docker Desktop,那就要做取舍——它们在 Windows 上依赖虚拟机平台,关掉之后用不了。我的做法是二选一,需要长期跑虚拟机就把这些关掉,需要 WSL 的时候再打开,两者不要同时开。
内核隔离里的"内存完整性"要单独处理,它不在"启用或关闭 Windows 功能"里,而是在 Windows 安全中心 -> 设备安全性 -> 内核隔离详细信息,把"内存完整性"关掉并重启。
如果关完这些还有问题,可以用管理员权限的命令行把 hypervisor 的启动类型关掉:
bcdedit /set hypervisorlaunchtype off执行完重启,想恢复的时候把off改成auto再执行一次即可。改之前建议先记一下原始值,用bcdedit /enum {current}可以看到。
2.3 内存、磁盘与安装目录的规划
内存的分配原则我在前面提过:宿主机留够自己用的,剩下的再给虚拟机。一条经验公式是——单台虚拟机分配的内存不要超过物理内存的 50%,如果要同时开两三台,总量控制在物理内存的 70% 以内。16GB 的机器,单台虚拟机给 4GB 比较舒服,给 8GB 也能跑但要接受宿主机开始用页面文件。
磁盘方面要算两笔账。第一笔是软件本身的安装空间,完整安装大约 1GB 出头,加上后续的日志和缓存,预留 3GB 比较稳妥。第二笔是虚拟机磁盘,这个才是大头。一台装了桌面环境的 Windows 虚拟机,实际占用 25GB 到 40GB 很正常;带开发工具链的 Linux 虚拟机 20GB 起步。而且虚拟机磁盘文件会随着使用不断增长,我给的建议是:每台计划中的虚拟机按 60GB 预留物理空间,宁多勿少。
安装目录我建议不要放在系统盘。原因不是空间不够,而是虚拟机运行时会产生大量随机读写,和系统盘上的其他东西抢 I/O。如果你有第二块固态硬盘,把虚拟机目录指到那上面,体感差异很明显。目录路径本身也要注意,不要带中文和空格,某些老旧的安装镜像和脚本对路径中的非 ASCII 字符处理得很糟糕,出问题时排查方向会变得很模糊。
3. 安装向导逐屏拆解:每一屏在做什么
准备工作做完,安装过程本身其实很短,正常情况五六分钟就结束。但向导里有几个选项,选错了后面要么功能缺失,要么得卸载重来,所以还是值得逐屏说清楚。
3.1 安装包准备与文件校验
先去官方渠道下载对应平台的安装包。Windows 版的命名格式大致是VMware-workstation-full-17.x.x-xxxxxxx.exe,中间那串数字是构建号。我不建议从第三方下载站拿安装包,这类工具软件的安装包被二次打包的情况不算少见,捆绑的东西不一定明显。
拿到文件之后,如果官方提供了校验值,花十秒钟核对一下:
# Windows PowerShell Get-FileHash .\VMware-workstation-full-17.x.x-xxxxxxx.exe -Algorithm SHA256# Linux / macOS sha256sum VMware-Workstation-Full-17.x.x-xxxxxxx.x86_64.bundle把输出和你下载页面上公布的哈希值对一下,一致就说明文件完整。这一步看起来多余,但我确实遇到过下载中断导致安装包损坏、安装到一半报" cabinet 文件损坏"的情况,从头查起反而更费时间。
Windows 上还需要注意一件事:安装前把杀毒软件的实时防护临时关一下。不是说安装包有问题,而是安装过程会往系统目录写驱动文件、注册服务,某些安全软件会拦住这些行为,导致安装看似成功但网卡驱动没装上,后面虚拟机没有网络,排查起来很绕。
3.2 向导里真正需要注意的三个选项
启动安装程序后会走一个标准的 Windows 安装向导,大部分屏幕点"下一步"就行,但有三处需要停下来看一眼。
第一处是安装类型。默认是"典型",会装核心组件;如果你选"自定义",可以勾选额外的组件,比如增强型键盘驱动。这个驱动的作用是让虚拟机在捕获键盘时能正确处理一些特殊组合键,如果你打算在虚拟机里用功能键较多的软件,建议勾上。其余的组件按默认即可。
第二处是"用户体验设置"。这一屏会有两个勾选项,一个是启动时检查更新,一个是加入客户体验提升计划。前者我建议勾上但把检查频率调低,后者我一般取消——这个软件的更新并不频繁,没必要每次开机都去联网查一遍,尤其是在网络受限的环境里,它会拖慢启动。
第三处是快捷方式位置和安装路径。安装路径前面说过,不要放系统盘、不要带中文和空格。快捷方式建议至少保留桌面那一个,因为你后面可能会频繁地新建虚拟机。
整个安装过程中屏幕会闪几下,那是虚拟网卡驱动在安装,属于正常现象。如果安装到网络组件那一步卡住超过三分钟,多半是前面提到的安全软件拦截,取消安装、关掉防护、重新来过。
3.3 首次启动的许可与更新设置
第一次启动软件时会要求你接受许可协议,然后是一个许可证密钥的输入界面。这里需要说明一下当前的授权情况:这个软件近两年对个人用户放开了免费使用,注册账号后可以在个人场景下免费获取许可,商用仍然需要付费授权。如果你只是自己学习测试用,走免费许可的流程就行;如果是在公司环境里用,请按正规渠道走采购,不要图省事。
启动之后建议先做两件事。第一件是进"编辑" -> "首选项",把"更新"里的自动检查关掉或者设成手动,避免工作到一半弹更新提示打断。第二件是确认"虚拟化 Intel VT-x/EPT 或 AMD-V/RVI"这个选项的默认状态——它在新版本里是默认开启的,但如果你之前装过旧版本、配置文件被保留了下来,可能会是关闭状态,那虚拟机的性能会差一大截。这个选项在虚拟机的"设置" -> "处理器"里,逐台确认比较稳妥。
3.4 装不上时的几类典型报错
安装阶段最常见的失败是权限不足。表现是安装进度走到一半突然回滚,提示"无法写入文件"或者"服务启动失败"。解决办法是以管理员身份运行安装程序,右键安装包选"以管理员身份运行"。
第二类是残留冲突。如果你之前装过旧版本没卸干净,新版本安装时可能会报"已存在较新版本"或者服务注册失败。这时候需要手动清理:先正常卸载,然后检查C:\ProgramData和C:\Users\<用户名>\AppData下是否有残留的目录,以及服务列表里是否还有VMware开头的服务。清理完重启再装。
第三类是驱动签名问题。在启用了严格驱动签名策略的系统上,安装过程可能会因为某个驱动没通过签名校验而中断。这种情况在新版本里已经很少见,如果真遇到,检查一下系统是不是开启了"测试模式"或者装过某些修改过系统策略的工具。
4. 新建第一台虚拟机:向导里的参数为什么这么填
软件装好之后,真正的第一个决策点在新建虚拟机向导里。这一屏选项很多,但真正影响后续使用的只有四五个,剩下的用默认值就行。我把每一处的判断逻辑都写出来,你可以照着套。
4.1 典型配置和自定义配置的分水岭
向导第一屏会让你选"典型"还是"自定义"。典型配置会自动帮你决定虚拟硬件版本、控制器类型、磁盘类型,一路下一步就能装完;自定义配置让你逐项指定。
我的建议是:第一次装、目标是快速跑起来,用典型;需要精细控制或者装一些特殊系统,用自定义。典型配置的问题在于它会按宿主机的能力挑一个较高的虚拟硬件版本,这个版本一旦定下来就不能降级——也就是说,你在这台机器上创建的虚拟机,拿到一台装了旧版本软件的机器上可能打不开。如果你有跨机器迁移虚拟机的需求,用自定义,手动把虚拟硬件版本选低一档。
另一个需要自定义的场景是装比较老的系统。虚拟硬件版本太高的时候,老系统的安装镜像可能认不出磁盘控制器,装到分区那一步提示"找不到可用磁盘"。这种情况必须自定义,把控制器换成兼容性更好的型号。
4.2 磁盘类型、容量与预分配策略
磁盘这一屏有三个关键决策。
第一个是控制器类型。常见的选项有 LSI Logic SAS、LSI Logic、NVMe、SATA。装 Windows 7 及以后的系统和主流 Linux 发行版,选 LSI Logic SAS 兼容性最好;NVMe 性能略好但老系统不一定带驱动;SATA 最保守,几乎什么系统都能认,但性能一般。拿不准就用 LSI Logic SAS。
第二个是磁盘容量的分配方式,也就是"立即分配磁盘空间"这个勾选项。勾上之后,软件会在创建时就把整个容量从物理磁盘上划走,好处是磁盘碎片少、写入性能稳定,坏处是占地方——你创建一个 60GB 的虚拟机,硬盘上立刻少 60GB。不勾选则是按需增长,用多少占多少,但文件会碎片化,长期使用后性能略有下降。我的做法是:系统盘预分配,数据盘按需增长。
第三个是磁盘文件的存放位置。默认会放在虚拟机的目录里,如果这个目录在系统盘,建议点"自定义"改到数据盘去。虚拟机运行时对磁盘的随机读写很密集,放在系统盘上会和系统本身抢 I/O,尤其是机械硬盘的机器上,体感差别非常明显。
这里还要提一个容量规划的细节:虚拟机磁盘显示 60GB,不代表它在物理磁盘上占 60GB,也不代表虚拟机里就能用满 60GB。虚拟机内部的分区表、文件系统元数据、预留空间都会吃掉一部分。经验上,Windows 系统装完加常用软件,剩 20GB 左右比较安全;Linux 服务器版 20GB 够用,带桌面环境的给 40GB 以上。
4.3 三种网络模式的适用场景对照
网络模式是新手最容易选错、也最难自查的一项。软件提供桥接、NAT、仅主机三种主要模式,还有自定义和 LAN 区段,实际使用中前三种覆盖 95% 的场景。
| 模式 | 虚拟机的 IP 来源 | 对外是否可见 | 典型用途 |
|---|---|---|---|
| 桥接 | 由所在物理网络的 DHCP 分配,和宿主机同网段 | 是,局域网内其他设备能访问到 | 需要被局域网其他机器访问,比如搭测试服务器给同事连 |
| NAT | 由软件内置的 DHCP 分配,走宿主机转发 | 否,外部看不到虚拟机 | 只需要上网,不需要被外部访问,日常开发最常用 |
| 仅主机 | 软件内置 DHCP,只在宿主机和虚拟机之间通信 | 否 | 纯隔离环境,测病毒样本、做网络实验 |
| 自定义 | 指定某个虚拟网络 | 取决于该网络的配置 | 多台虚拟机组成内网拓扑 |
我最常用的是 NAT。原因很实际:换网络环境的时候——从公司网络换到家里、从有线换到手机热点——桥接模式下的虚拟机可能拿不到 IP,得手动改配置;NAT 模式不受影响,宿主机能上网它就能上网,省心。只有当虚拟机需要提供一个对外服务、让别的机器连进来时,才需要桥接。
如果确实需要外部访问 NAT 模式下的虚拟机,不用改网络模式,在"编辑" -> "虚拟网络编辑器"里给 VMnet8 做一条端口映射就行。把宿主机的某个端口映射到虚拟机的 80 端口,外部访问宿主机的这个端口,流量就会转发进去。这也是我推荐 NAT 的另一个原因——端口映射比改网络模式灵活得多。
4.4 固件、安全启动与 vTPM
这一组选项在自定义向导的后半段,典型配置里看不到,但装 Windows 11 的时候绕不过去。
固件类型有两种:BIOS 和 UEFI。装 Windows 11、较新的 Linux 发行版,用 UEFI;装 Windows 7、老版本 Linux,用 BIOS。选错的表现是系统装完第一次重启就进不去,或者安装过程中提示找不到引导设备。
UEFI 下面还有一个"安全启动"的勾选项。Windows 11 的安装程序会检查这个,不开启会提示"此电脑无法运行 Windows 11"。同时还需要一个 vTPM 设备——在虚拟机的"设置" -> "硬件"里点"添加",选"可信平台模块",类型选 2.0。这两个都配好,Windows 11 的安装程序才会放行。
需要提醒的是,vTPM 的密钥是和虚拟机绑定的。如果你打算把这台虚拟机拷到别的机器上用,而上面启用了加密,拷贝过去之后可能因为密钥不匹配而无法启动。所以做加密和 vTPM 之前,先把虚拟机里的重要数据备份出来,别等出了问题才发现进不去。
5. 系统装完只是开始:Tools、共享与快照
很多人装完系统、看到桌面出来就以为完事了,然后用起来各种别扭:鼠标移进移出要按快捷键、分辨率调不高、复制粘贴不通、窗口拖不大。这些问题九成是因为没装 VMware Tools。这一节讲清楚它做了什么,以及装完之后还有哪些值得配置的地方。
5.1 挂载镜像与启动顺序
新建虚拟机之后,第一件事是给它挂系统安装镜像。虚拟机的"设置" -> "CD/DVD",选"使用 ISO 映像文件",浏览到本地的镜像文件。这里有个细节:把"启动时连接"勾上,不然虚拟机会认为光驱里没盘,直接跳过进入 PXE 网络启动,屏幕上出现一大片Loading...然后超时。
启动顺序在虚拟机的"选项" -> "高级"里可以调。默认是先硬盘后光驱,全新虚拟机没有系统,会自动跳到光驱。如果你从别的机器拷来一台已经装好系统的虚拟机,又想从光驱重装,就得手动把光驱提到前面,或者启动时按 Esc 进引导菜单选。
安装过程中有几个需要注意的点。一是虚拟机窗口捕获鼠标之后,按 Ctrl+Alt 可以释放,别去按宿主机上的组合键试图切窗口。二是安装程序如果提示"这台电脑不符合最低要求",先确认前面说的 UEFI、安全启动、vTPM 三项都配好了。三是安装完成后第一件事是把光驱断开或者改成"启动时连接"不勾选,否则每次启动都会先读一遍光盘,白等几秒。
5.2 VMware Tools 装与不装的区别
Tools 是一个装在客户机里的驱动加工具包,它做的事情可以从三个层面理解。
显示层面,它提供虚拟显卡驱动,让客户机支持动态分辨率调整——你把虚拟机窗口拉大,里面的分辨率跟着变,不会出现黑边或者拉伸。没有它的时候,分辨率被锁死在几个固定值上,全屏显示效果很差。
输入层面,它提供鼠标集成。没有 Tools 的时候,鼠标指针进入虚拟机窗口就被"捕获"住了,想切回宿主机得按 Ctrl+Alt 释放。装了之后,指针可以在两边自由穿梭,体验和普通窗口没有区别。同时它让剪贴板和拖拽复制打通,你可以直接在宿主机复制一段文字,粘到虚拟机里。
系统层面,它提供内存气球驱动和磁盘驱动,让虚拟机内的内存使用和磁盘 I/O 效率更好,还提供宿主机与客户机之间的时间同步。
安装方式很简单:虚拟机运行状态下,菜单"虚拟机" -> "安装 VMware Tools",客户机里会多出一个光驱。Windows 客户机进去双击setup.exe一路下一步;Linux 客户机通常直接挂载一个 tar 包,解压后执行里面的安装脚本,或者更省事的是用发行版自带的open-vm-tools包。用包管理器装的好处是跟着系统更新走,不用手动管版本。
# Debian / Ubuntu 系 sudo apt update && sudo apt install open-vm-tools open-vm-tools-desktop # RHEL / CentOS 系 sudo dnf install open-vm-tools open-vm-tools-desktop装完重启一次,分辨率自适应、剪贴板互通、共享文件夹这些功能才会全部生效。
5.3 共享文件夹与拖拽复制的实际体验
共享文件夹需要在虚拟机的"选项" -> "共享文件夹"里开,选"总是启用",然后添加宿主机的目录。添加完之后在 Windows 客户机的"网络"里会出现一个\\vmware-host\Shared Folders的位置,Linux 客户机则挂载在/mnt/hgfs/下面。
这里有两个实际使用中的问题。第一是 Linux 下/mnt/hgfs目录可能是空的,那是因为open-vm-tools装好了但共享文件夹的挂载服务没起来,手动执行sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other就能挂上,想开机自动挂载可以写进/etc/fstab。
第二是共享文件夹的权限问题。宿主机的文件被映射进客户机之后,属主和权限是按客户机里的用户来的,某些应用需要特定权限才能读写。遇到权限报错,不要急着改宿主机的权限,先确认客户机里的挂载参数是否带了allow_other。
拖拽复制这个功能官方一直在改,稳定程度不如共享文件夹。我的建议是:小文件用共享文件夹,大文件别拖拽,用宿主机上一个临时的 HTTP 服务或者直接走共享目录,反而更可靠。别把重要文件的传输押在拖拽上。
5.4 快照不是备份:策略与磁盘代价
快照的价值前面提过了,但用错了反而会带来麻烦。
快照的原理是把当前磁盘状态冻结,后续的写入都记录在一个增量文件里。这意味着快照不是"备份复印件",而是"时间线的分叉点"。每打一个快照,就多一个增量文件,这些增量文件会随着你的使用不断变大。一台虚拟机打了五六个快照、用了两个月之后,磁盘文件占用的空间可能是原始容量的两三倍。
所以我给自己定的规矩是:快照只用于短期操作,比如装驱动前、改系统配置前、跑不确定的安装包前,打完快照操作完,确认没问题就立刻删除这个快照,把它"合并"回主磁盘。长期保留的快照最多留一个,作为系统的干净基线。真正的数据备份,用宿主机的文件复制或者专门工具做,不要指望快照。
另外有一个容易忽略的点:快照记录的是打快照那一刻的内存状态。如果打快照的时候虚拟机里正在跑数据库、有未提交的事务,恢复快照后这些状态会被一起恢复,可能导致数据文件不一致。所以打快照之前,最好先把虚拟机里的服务正常停掉。
6. 长期使用才会暴露的问题:性能调优与疑难排查
前面五节讲的是"怎么装起来",这一节讲"用久了会出什么事"。虚拟机这个东西的特点是,刚装完一切正常,用上一两个月各种小毛病才开始冒出来。我把这些年遇到频率最高的几类问题整理出来。
6.1 CPU 和内存该给多少
给虚拟机分配资源有一个常见的误区:以为给得多就快。实际上 CPU 核心数超过物理核心数之后,性能不升反降,因为调度器要花更多时间在上下文切换上。
正确的给法是:CPU 核心数不超过物理核心数的一半,且留至少 2 个核心给宿主机。4 核的机器给虚拟机 1 到 2 核,8 核的给 2 到 4 核。注意这里的"核"指的是物理核心,不是任务管理器里显示的逻辑处理器数——超线程出来的逻辑核在多虚拟机场景下收益很有限。
内存的给法前面说过,单台不超过物理内存的一半。这里补充一个观察:虚拟机里的操作系统会尽量把分配给它的内存用满,这是正常的缓存行为,不代表它真的缺内存。判断是否要加内存,看的是虚拟机里的交换分区/页面文件的使用量,而不是任务管理器里的内存占用百分比。
还有一个容易被忽略的开关:虚拟机的"选项" -> "高级"里有"禁用内存页面修整"和"额外内存设置",默认值对大多数场景已经够用,不要去改。有些网上流传的"性能优化"教程会让你把这些全打开,实测下来收益很小,反而可能引入不稳定。
6.2 磁盘性能:预分配、控制器与宿主机磁盘类型
虚拟机磁盘性能的瓶颈通常不在虚拟化层,而在宿主机的物理磁盘上。机械硬盘上跑虚拟机,开机三分半钟是常态,换成固态之后同样的系统三十秒内就能进桌面。如果你觉得虚拟机慢,先看宿主机是不是机械盘。
在固态盘的前提下,还可以做三件事。第一,创建虚拟机时勾选"立即分配磁盘空间",避免运行时的文件增长开销。第二,控制器选 LSI Logic SAS 或 NVMe,避开 SATA。第三,把虚拟机的目录和宿主机的系统目录分开放,最好在两块不同的物理盘上。
如果虚拟机里跑的是数据库这类对 I/O 敏感的服务,还需要注意虚拟磁盘的缓存策略。在虚拟机"设置" -> "硬盘" -> "高级"里,有个"独立"选项,勾上之后这个磁盘就不受快照影响,写入性能会好一些,代价是不能回滚。这个取舍对数据库盘来说通常是值得的。
6.3 网络通的与不通的:NAT 端口映射和虚拟网络编辑器
网络问题我在实际使用中遇到过三类,排查路径各不相同。
第一类:虚拟机完全没有网。先看虚拟机的网络适配器是不是勾了"已连接"和"启动时连接",这两个勾选框很容易被误取消。再看宿主机的网络连接里有没有VMnet1和VMnet8这两个虚拟网卡,如果没有,说明安装时网卡驱动没装上,需要修复安装。如果网卡在但状态是"已断开",那是虚拟网络编辑器里的配置出了问题。
第二类:能上外网但访问不了宿主机。这种情况多半是宿主机的防火墙拦住了虚拟网卡的流量。检查防火墙规则里对VMnet8的处理,把对应的入站规则放开。
第三类:虚拟网络编辑器的配置被重置。这个发生过好几次——某些系统更新或者安全软件的操作,会把虚拟网卡恢复成默认状态,导致之前的端口映射、DHCP 范围设置全部丢失。表现是昨天还能访问的端口,今天连不上了。解决办法是打开虚拟网络编辑器,点"还原默认设置",然后重新配一遍映射规则。我现在的做法是把每次配好的规则记录在一个文本文件里,出问题直接照着抄,不靠记忆。
6.4 剪贴板失效、时间漂移、分辨率异常
这三个问题经常一起出现,根因都与 Tools 有关。
剪贴板失效的表现是复制了文字但在另一边粘不出来。先确认 Tools 装没装、装的是不是最新版本。如果装了还是不行,检查虚拟机的"选项" -> "客户机隔离"里,"启用复制粘贴"和"启用拖放"这两项是不是被勾掉了——这个选项有时候会被安全策略自动关闭。
时间漂移的表现是虚拟机里的时间比宿主机慢几分钟到几小时,跑证书验证、日志分析的时候会出问题。原因是虚拟机暂停或者快照恢复之后,内部时钟没跟上。解决办法是在 Tools 的设置里开启时间同步,Linux 客户机可以用ntpdate手动对一次,或者配置chronyd定期同步。
分辨率异常的表现是窗口拉大之后里面还是原来的分辨率,周围一圈黑边。这通常是显示驱动没生效,重装一次 Tools 就能解决。如果是 Linux 客户机,还要确认装了open-vm-tools-desktop这个包,只装open-vm-tools是不带图形驱动的。
7. 虚拟机搬家、克隆与彻底卸载
用久了总会遇到这几件事:换电脑要把虚拟机带走、需要复制一台一模一样的做测试、或者干脆不用了要卸干净。这三件事都有各自的坑。
7.1 整机拷贝和克隆的正确姿势
先说拷贝。一台关机的虚拟机,本质上就是几个文件:.vmx是配置文件,.vmdk是磁盘文件,还有.nvram、.vmsd这些辅助文件。把这些文件整体复制到另一台机器上,用"文件" -> "打开"指向那个.vmx文件,就能打开。
但这里有个坑:直接复制过来的虚拟机,网卡的 MAC 地址是原来的。如果原机器上还留着那份,两台机器同时开机就会出现网络冲突。解决办法是打开复制过来的虚拟机之后,进"设置" -> "网络适配器" -> "高级",点"生成"重新生成一个 MAC 地址。
克隆功能在 Pro 版里有。它和直接复制的区别是克隆会重新生成 UUID 和 MAC 地址,还会问你要"完整克隆"还是"链接克隆"。完整克隆是把磁盘完整复制一份,独立可用;链接克隆是共享原始磁盘、只记录差异,省空间但依赖原虚拟机,原虚拟机删了链接克隆就废了。做测试环境用链接克隆很划算,做长期存在的环境一律用完整克隆。
还有一个情况需要提前说:如果虚拟机启用了加密,拷贝到别的机器上需要输入加密密码才能打开,忘了密码就彻底打不开了。加密功能不要随手开,开了要把密码单独记下来。
7.2 卸载干净与残留清理
卸载看起来简单,但残留往往会影响下一次安装。标准流程是在"控制面板" -> "程序和功能"里找到软件卸载,走一遍向导,重启。重启之后,再手动检查几处位置:安装目录是否还在、C:\ProgramData下面有没有残留目录、服务列表里有没有VMware开头的服务还挂着。
虚拟网卡也是残留的重灾区。卸载之后,宿主机的"网络连接"里可能还留着VMnet1、VMnet8这两个虚拟网卡。这种情况在设备管理器里把它们卸掉就行,右键选择"卸载设备",勾上"删除驱动程序软件"。
最后是虚拟机文件的处理。卸载软件不会删你的虚拟机,那些文件还占着几十上百 GB。如果不需要了就手动删目录;如果需要保留,把整个虚拟机目录拷到移动硬盘上存着,以后装上软件再打开就行。我自己的习惯是:卸载前先把虚拟机目录全部压缩归档一份,标注清楚每个虚拟机装的是什么系统、用来做什么,过半年再回头看也不至于一脸茫然。
最后分享一个我用了很多年的小习惯:每建一台虚拟机,先在里面放一个纯文本的README.txt,写上这台机器的用途、系统版本、装过哪些关键软件、有没有特殊配置。听起来很土,但当你手上有七八台虚拟机、隔了三个月再打开其中一台的时候,这几行字能省掉你半小时的回忆时间。虚拟机最大的价值是把环境变成可以随时丢弃和重建的东西,而一份简短的记录,能让这个"重建"变得真正可控。