
手头只有一台开发机想搭一套跟生产环境对得上的 Linux 服务又不想把主机系统折腾得千疮百孔最省事的办法就是在 VMware 里开一台 CentOS 7 虚拟机。这套组合我前后装过不下五十次从最早给团队做新人培训环境到后来做数据库实验、写自动化脚本、跑老项目的编译链几乎都靠它撑着。CentOS 7 的官方常规维护早就结束了但大量存量项目、教学课件、企业内部脚本依然以它为准尤其是那一批基于 7.x 编译出来的 RPM 包换到别的发行版上能让你调一整天。所以哪怕到了现在问VMware 下 CentOS 7 虚拟机怎么装的人还是一抓一大把。这篇东西写给三类人完全没碰过虚拟化的新手、装过一次但被网络和 yum 源折磨过的半熟手、以及需要批量给团队发环境的老手。我不会只给你点下一步而是把每个选项背后的取舍讲清楚——为什么网络模式要这么选、磁盘为什么要拆成多个文件、CentOS 7 停服之后源到底该怎么修。这些坑我都踩着过来写下来省得你再走一遍。1. 为什么这套组合到现在还值得装1.1 CentOS 7 在真实工作里还剩下多少价值先摆明一个事实CentOS 7 已经进入生命周期的最后阶段官方不再提供常规安全更新很多公共镜像站也已经把它从主同步列表里挪走。按理说早该换 Rocky、Alma 或者 Ubuntu Server。但现实是我经手的项目里至少还有三成跑在 7.x 上原因很朴素——有些老的商业软件只提供 7.x 的 RPM 包有些自研系统用的是 CentOS 7 时代的 glibc 和 OpenSSL 版本直接升发行版意味着整条依赖链要重验。教学场景就更不用说了教材、课件、实验指导书全是按 7 写的。所以装它的目的不是我要长期用而是我要一个跟存量环境一致的沙箱。这个定位决定了后面所有选择配置可以糙一点但必须能一键回滚不追求最新追求和线上一致。心里装着这个前提你在选软件包、改配置的时候就不会纠结要不要顺手升个级——答案是不要。提示CentOS 7 只适合做本地实验、兼容性验证和离线开发环境不要把它接进对外的生产网络。1.2 硬件底线与资源分配怎么算很多人装虚拟机第一件事就是内存拉满、CPU 拉满然后在主机上开浏览器和 IDE结果主机开始疯狂读写交换分区整台机器卡成幻灯片。虚拟机的资源是从主机借的不是凭空多出来的这里有个我习惯用的经验公式。内存方面给单台虚拟机的内存不要超过主机物理内存的 50%同时主机侧至少留 4GB 给系统本身和常用软件如果你打算同时开两台以上虚拟机那么每台分到的内存之和最好控制在物理内存的 60% 以内。举个例子16GB 内存的主机开一台做日常实验的 CentOS 7给 4GB 就很舒服如果要在这台虚拟机里跑单机版的容器编排环境给 6GB 到 8GB但这时候主机上就别再开重型 IDE 了。CPU 方面虚拟处理器的总核心数不要超过物理逻辑处理器数量比较稳妥的做法是控制在逻辑核心数的一半左右。一台 8 核 16 线程的机器给虚拟机 2 vCPU 到 4 vCPU 足够跑绝大多数服务超过物理核心数的超配会让调度器频繁切换反而更慢。值得注意的是VMware 里填的是每个插槽的核心数和插槽数量总核心数是两者相乘新手容易在这里填出 8 核来。磁盘是另一个容易被忽略的点。做纯命令行实验20GB 起步要装 GNOME 桌面40GB要跑数据库和容器直接给 60GB 以上。另外如果你主机用的是固态硬盘建议选将虚拟磁盘存储为单个文件减少随机读写的碎片如果主机是机械硬盘选拆分成多个文件在复制和迁移时反而更灵活。还有一件事必须提前确认物理机的 CPU 虚拟化技术在 BIOS 里有没有打开。Windows 上按 CtrlShiftEsc 打开任务管理器性能标签页里的 CPU 一项会写明虚拟化已启用/已禁用。如果这里是禁用状态VMware 在创建 64 位虚拟机时会直接报错或者装好之后运行慢得离谱。这个开关不在 VMware 里在 BIOS 里改完记得保存重启。2. 安装前必须定下来的三件事2.1 镜像文件怎么选、怎么校验CentOS 7 的最后一个小版本是 7.9.2009做实验直接认准它就对了别去追那些中间版本。ISO 本身分几种形态选错会浪费很多时间。完整版 DVD ISO 大约 4.7GB包含常用软件包和图形界面组件是绝大多数人的首选Everything ISO 接近 9GB把仓库里所有 RPM 都塞进去了做完全离线的本地源特别方便最小化 Minimal ISO 只有 1GB 出头只有基础系统剩下的包全靠 yum 拉还有一种网络安装镜像 NetInstall安装过程中要联网下载所有包网络不稳会直接失败我不推荐新手用。下载完第一件事是校验哈希值别嫌麻烦。文件在传输过程中损坏安装过程中会以卡在某个界面不动包解压报错的形式表现出来你根本想不到是 ISO 的问题能查半天。Windows 上打开命令行执行certutil -hashfile 文件名.iso SHA256Linux 上执行sha256sum 文件名.iso把结果跟官方发布页上的值比对不一致就重新下载。这里要提前说一个后面会反复用到的关键点CentOS 7 进入归档状态之后系统里默认的 yum 源地址已经连不通了装完系统第一次执行 yum 命令大概率会报Cannot find a valid baseurl for repo: base/7/x86_64。这不是你的网络坏了是源地址变了。解决办法在第四章详细写但你要知道如果下载的是 Everything ISO这个问题的解法会变得非常简单——直接拿 ISO 当本地源完全不需要联网。2.2 网络模式选择NAT、桥接还是仅主机这是新手最容易随便选的一项也是后期问题最多的源头。VMware 提供了几种网络模式本质区别在于虚拟机在网络上站在哪个位置。网络模式虚拟机能否上外网主机能否访问虚拟机局域网其他设备能否访问典型用途NAT能能不能默认日常学习、临时环境桥接能能能对外提供服务、多人联调仅主机不能能不能隔离实验、内外网模拟NAT 是默认选项虚拟机的流量经过主机的 NAT 服务转发出去相当于虚拟机躲在主机后面。它的好处是省心装完几乎不用配置就能上网主机也能直接访问虚拟机缺点是局域网里的同事访问不到你的虚拟机除非你手动配端口转发。如果你只是自己写代码、跑数据库NAT 完全够用。桥接模式则是把虚拟机直接接到主机所在的物理网络里虚拟机会从局域网的 DHCP 拿到一个跟主机同网段的 IP别的设备能直接 ping 到它。好处是省去了端口转发的麻烦适合把服务给同事用、或者做多台虚拟机互通的实验坏处是如果公司或学校的网络做了 MAC 地址绑定、或者对陌生设备有限制桥接可能直接不通这时候你会以为是 VMware 坏了。仅主机模式Host-only只在主机和虚拟机之间建一条私有链路虚拟机上不了外网。它特别适合做网络隔离实验比如你想模拟一台内网数据库服务器就给它挂一张仅主机的网卡。我的习惯做法是给重要的实验机配两块网卡一块 NAT 负责上网装包一块仅主机负责内网实验两条路互不干扰。注意VMnet1 对应仅主机模式VMnet8 对应 NAT 模式这两个虚拟网卡由 VMware 在主机上自动创建。如果安装时被安全软件拦截可能出现虚拟机没有网络适配器的现象后面第五章有排查方法。选定模式之后还有个小决定用 DHCP 还是静态 IP。学习机我一般先用 DHCP 快速验证网络通不通确认没问题后立刻改成静态 IP因为 NAT 的 DHCP 每次重启可能给不同的地址你写死的连接配置和脚本全部失效这种问题排查起来很浪费时间。改静态地址的方法在 4.1 节。2.3 磁盘与分区规划别用默认的自动分区安装界面里的自动创建分区确实省事但它给你分出来的布局经常不合用——最常见的是 LVM 把大部分空间划给 /home根分区只留 50GB等你装数据库或者镜像仓库的时候就直接写满了。做实验我更推荐手动分区方案不复杂记住下面这套就行。挂载点建议大小文件系统说明/boot1GBxfs放内核和引导文件必须单独分且不能用 LVMswap4GBswap内存大于 8GB 时4GB 足够做保险/剩余全部xfs根分区尽量给足顺序上先分 /boot再分 swap最后把剩下的全部给根分区。为什么 /boot 必须单独分因为引导加载程序在启动的早期阶段还没有能力识别 LVM 逻辑卷和某些高级文件系统引导文件必须放在一个能被直接读取的简单分区上。为什么 swap 不用给到内存的两倍那是十几年前内存以 MB 计算的年代留下规矩现在 8GB 内存的机器给 4GB swap 只是为了防止极端情况下的内存溢出导致内核直接杀进程日常根本用不到。至于 /home 要不要单独分纯实验环境无所谓如果你想让这台虚拟机更接近真实服务器的布局可以把 /home 单独分 10GB 到 20GB这样万一某个用户往家目录里塞了几十 GB 垃圾也不会把根分区撑爆。LVM 用不用建议用好处是以后磁盘不够了可以给虚拟机扩磁盘再在线扩容逻辑卷不用重装系统。装的时候选 LVM 的分区类型就行。3. VMware 里从头建一台 CentOS 7 的完整流程3.1 新建向导里几个容易选错的选项打开 VMware Workstation文件菜单里选新建虚拟机。第一步会让你选典型还是自定义很多人图快选典型但典型模式会把一堆选项替你决定好尤其是硬件兼容版本。做学习环境我强烈建议选自定义整个流程多花不了两分钟但你能清楚地知道每一步在干什么。硬件兼容性这一步选跟当前 VMware 版本对应的那个。比如你装的是 Workstation 17就选 17.x。选低版本兼容比如 15.x的好处是这台虚拟机可以在别人的老版本 VMware 上打开代价是某些新硬件特性用不了比如更高版本支持的虚拟 NVMe 控制器。如果这台机器只是你自己用选当前版本如果要在团队里传阅降一档更保险。到了客户机操作系统这一步有个关键操作不要直接选 ISO 文件走简易安装而是选稍后安装操作系统然后在客户机操作系统里选 Linux版本选 CentOS 7 64 位。为什么因为如果你在向导里就挂载 ISOVMware 会识别出这是 CentOS 并触发简易安装它会用一个预设模板自动完成分区和软件包选择——整个过程快到让你怀疑人生但你也完全没机会配置分区、选软件包、设置网络。学安装这件事流程本身就是重点绕过它就白装了。等你熟练之后追求效率再用简易安装不迟。虚拟机的存放位置也要留意路径里不要出现中文和空格有些构建工具和脚本对空格路径处理得很差放在非系统盘同时确认那个分区至少有 80GB 的余量因为虚拟磁盘是会随着使用慢慢膨胀的。3.2 硬件参数调整内存、CPU、磁盘怎么填处理器页面填的是插槽数量和每插槽核心数总核心数等于两者相乘。给一台日常实验机 2 核到 4 核就够了别填超过主机逻辑处理器的数量。内存按 1.2 节算出来的值填。网络类型选你在 2.2 节定下来的那个。接下来是 I/O 控制器和磁盘类型这两项保持默认基本没问题。磁盘页面有几个选择要留神容量按前面规划填比如 60GB下面有两个单选将虚拟磁盘存储为单个文件和拆分成多个文件我在 1.2 节讲过怎么取舍——固态盘选单个文件机械盘选拆分。向导的最后一步可以点自定义硬件这里有几个我习惯关掉的东西声卡、打印机、USB 控制器。这些设备在服务器用途的虚拟机上根本用不到留着只会让开机时多加载几个驱动还会在某些情况下引起设备冲突。显示器的加速 3D 图形也关掉纯命令行环境不需要它开了反而增加图形渲染的开销。回到虚拟机界面后还有一件事没做挂载 ISO。右键虚拟机设置找到 CD/DVD 一项选使用 ISO 映像文件浏览到你下载并校验过的那个文件然后务必勾选启动时连接。不勾这一项开机之后虚拟机找不到安装介质会直接报找不到引导设备。这个复选框每年能坑掉一批人。3.3 安装界面上的关键动作启动虚拟机进入引导菜单选第一项 Install CentOS 7回车。接下来几个界面按顺序走。语言选择我建议英文。中文界面不是不能用但老版本的安装程序在中文字体渲染上偶有问题某些字符显示成方框你反而看不明白而且生产服务器上统一英文习惯早点养成更好。接下来进入安装总览页面这个页面上有几个必须点进去配置的项目不能直接点开始安装。第一是安装位置。点进去选我要配置分区然后在分区方案里选标准分区或者 LVM按 2.3 节的表手动分。分完点完成它会弹出一个摘要确认确认后返回总览。第二是网络和主机名。这是最容易漏的一项。页面右上角有个开关默认是关闭状态你必须手动打开它网卡才会在系统启动时自动激活。很多人装完系统发现只有一个 lo 口就是这里没开。同时把主机名设成一个有意义的名字比如 dev-db-01 或者 test-node-01别用 localhost后面做多机实验时你会需要区分它们。第三是软件选择。最小安装加开发工具这一组合我用了很多年兼顾了轻量和实用。如果你只跑服务最小安装本身也够需要图形界面就选 GNOME Desktop但要有心理准备它会多吃掉一两个 GB 的内存和不少磁盘。这里还有一个兼容库选项如果要跑一些老旧的 32 位程序可以顺手勾上。第四是 root 密码和用户创建。root 密码设一个你能记住的复杂密码更重要的是创建一个普通用户并勾选将此用户设为管理员这样这个用户会被加进 wheel 组可以用 sudo 提权。日常操作不要用 root这个习惯值一千块钱的教训。配置完这四项点开始安装等待复制文件完成然后重启。重启前记得在虚拟机设置里把 CD/DVD 的连接方式改成使用物理驱动器或者取消启动时连接否则它可能又从 ISO 引导进安装界面。3.4 第一次开机后立刻要做的两件事重启进入系统用刚才创建的普通用户登录第一件事是验证网络ip addr ping -c 4 主机所在网关或者一个公共地址如果ip addr里能看到 ens33 之类的网卡并且拿到了 IP说明网络通了。如果只有 lo回到 3.3 节检查网卡开关。这一步通过之后立刻给虚拟机拍一个快照命名成clean-install-日期。这是我所有经验的浓缩后面无论你把系统折腾成什么样——改坏了 yum、装崩了数据库、误删了系统文件——只要回滚到这个快照三分钟回到干净状态。没有快照的虚拟机装崩一次就得重装一小时。快照的用法也要说清楚。快照不是备份它记录的是磁盘在某个时刻的状态虚拟机运行时会往增量文件里写数据快照开得越多磁盘链越长性能越差占用的空间也可能超过虚拟磁盘本身。我的习惯是只保留两到三个关键节点的快照做完一轮实验就清理掉不用的清理之后记得让 VMware 执行一次整合把增量文件合并回主盘。对于需要反复做实验的场景更推荐的做法是克隆而不是快照。完整克隆出来的虚拟机是完全独立的占的空间大但互不影响链接克隆依赖父盘省空间但父盘一动它就有风险。给团队发环境的话把配置好的虚拟机当模板让每个人克隆一份比让每个人从头装一遍靠谱得多。4. 装完必做的初始化配置4.1 网络固定 IP 和主机访问虚拟机DHCP 分配的地址会变这对开发环境来说是灾难。装完系统确认网络通了之后第一件事就是改成静态 IP。在 CentOS 7 里编辑网卡配置文件vi /etc/sysconfig/network-scripts/ifcfg-ens33把内容改成这样地址按你的网络实际网段调整TYPEEthernet BOOTPROTOstatic IPADDR192.168.10.101 PREFIX24 GATEWAY192.168.10.2 DNS1223.5.5.5 DNS2119.29.29.29 ONBOOTyes NAMEens33 DEVICEens33这里的 GATEWAY 在 NAT 模式下通常是 VMnet8 那个虚拟网卡的地址你可以在主机的虚拟网络编辑器里看到桥接模式下就是你所在局域网的真实网关。改完之后重启网络服务systemctl restart networkCentOS 7 里同时存在 network 和 NetworkManager 两套网络服务混用会出现配置不生效的诡异现象。我的做法是统一用 network把 NetworkManager 关掉systemctl stop NetworkManager systemctl disable NetworkManagerNAT 模式下主机访问虚拟机不需要额外配置因为主机本身就有一张 VMnet8 的网卡和虚拟机在同一网段。反过来如果你想让局域网里的其他设备访问虚拟机上的 Web 服务把网络模式改成桥接是最省事的。如果坚持用 NAT就得在虚拟网络编辑器里做端口转发把主机的某个端口映射到虚拟机的 80 或 443配置入口在 NAT 设置的端口转发里。防火墙和 SELinux 这两个是排查问题的头号干扰源。实验环境我一般先关掉减少变量systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i s/^SELINUX.*/SELINUXdisabled/ /etc/selinux/configsetenforce 0只对当前会话生效改配置文件才能永久关闭。这里必须强调一句这只是实验环境的做法任何对外的服务器都不能这么干防火墙和 SELinux 是安全底线线上环境要做的是学会配置它们而不是关掉它们。我见过太多人在本地养成关防火墙的习惯到了线上照搬最后出安全事故。4.2 yum 源修复停服之后的正确姿势这是我每次装 CentOS 7 必做的一步也是最容易卡住新手的一步。系统自带的 repo 文件指向的地址已经失效直接执行 yum 会报Cannot find a valid baseurl for repo: base/7/x86_64。几种解法我按推荐程度排一下。最稳的是拿 Everything ISO 当本地源完全离线不受任何网络影响。把 ISO 挂到虚拟机虚拟机设置里挂载那个 Everything 镜像文件然后mkdir -p /mnt/cdrom mount /dev/sr0 /mnt/cdrom创建/etc/yum.repos.d/local.repo[local] nameCentOS 7 Local Repo baseurlfile:///mnt/cdrom enabled1 gpgcheck0然后把其他 repo 文件临时移走避免它们干扰mkdir -p /etc/yum.repos.d/bak mv /etc/yum.repos.d/CentOS-*.repo /etc/yum.repos.d/bak/ yum clean all yum makecache为了让挂载在重启后依然有效把它写进/etc/fstab/dev/sr0 /mnt/cdrom iso9660 loop,ro 0 0第二种是在线方案需要找仍在同步 7.x 归档的国内公共镜像站把 repo 文件里的 baseurl 改成它提供的历史归档路径。这个方案的缺点是依赖网络而且随着时间推移还在同步 7.x 的站点只会越来越少今天能用不代表半年后还能用。所以我的建议是能拿到 Everything ISO 就用本地源这是唯一不会因为外部变化而失效的方案。顺便说说离线装软件这件事。经常有需求是在完全没网的机器上装容器运行时或者数据库。思路是在一台同版本、能联网的机器上先把 RPM 包连同依赖一起下载下来yum install --downloadonly --downloaddir/root/rpms docker-ce把整个 rpms 目录拷到离线机器上要么直接用rpm -ivh *.rpm按依赖顺序装用yum localinstall更省心它会自动算依赖要么用 createrepo 做成一个本地仓库。这套方法对付任何离线安装场景都通用学一次管很久。4.3 一套可以复用的初始化脚本新系统装好、网络通了之后我习惯跑一遍下面这套动作把通用设置一次性做掉。# 设置时区并同步时间 timedatectl set-timezone Asia/Shanghai systemctl enable --now chronyd # 装常用工具 yum install -y vim wget curl net-tools bash-completion tree lsof unzip git # 记录带时间戳的命令历史 echo export HISTTIMEFORMAT%F %T /etc/profile # 关闭不需要的服务 systemctl disable --now postfix关于 Python 有一个必须单独拎出来说的坑CentOS 7 的 yum 是用 Python 2 写的系统里的/usr/bin/python指向 python2.7。如果你手一动把它改成 python3yum 会直接崩掉报一堆语法错误修复起来相当麻烦。正确做法是系统级的 python 保持原样需要 Python 3 的时候用 pyenv 或者源码编译装到 /usr/local再用虚拟环境隔离项目。这个坑我身边至少五个人踩过。MySQL 的安装也有类似的注意事项。CentOS 7 自带的是 MariaDB要装 MySQL 8 得先卸掉 mariadb-libs但这个包被很多系统组件依赖着删的时候会牵连一批东西建议用官方的 yum 仓库来装让依赖关系自动处理。如果是离线环境下载 RPM 包的时候要留意 glibc 版本MySQL 8 的新版本对 glibc 有最低要求在 CentOS 7 上可能要选稍微旧一点的版本。5. 常见故障与排查实录5.1 故障速查表装虚拟机的过程中问题基本集中在几类。我整理了一张速查表遇到现象直接对号入座。现象大概率原因处理思路安装时一直黑屏或卡住ISO 损坏、虚拟化引擎未开、内存给得太大校验 ISO 哈希、检查主机虚拟化开关、内存降到 2GB 试装完只有 lo没有网卡安装时网卡开关没打开、VMnet 被禁用改 ifcfg 里 ONBOOTyes、检查虚拟网络编辑器yum 报 Cannot find a valid baseurl源地址失效改用本地 ISO 源或归档地址主机 Windows 蓝屏与其他虚拟化平台冲突关闭系统的虚拟化平台功能或升级 VMware 版本提示需要管理员权限修复VMware 服务未正常安装或被拦截以管理员身份运行安装程序检查服务状态找不到侧栏的配置选项界面布局被折叠或安装受损重置界面布局必要时修复安装虚拟机时钟越走越慢未安装工具组件装 open-vm-tools主机和虚拟机剪贴板不通同上装 open-vm-tools 后重启克隆后网络异常MAC 地址冲突、网卡名变化生成新 MAC检查网卡配置文件里的设备名主机磁盘突然满了精简置备膨胀、快照堆积清理快照并整合检查虚拟磁盘目录大小5.2 几个我踩过的深坑坑一改了主机名却没改 hosts。有次装完系统顺手把主机名改成了一个自定义名字结果某几个 Java 服务和 MySQL 启动时卡了十几秒。原因是服务启动时会做一次主机名到 IP 的解析hosts 文件里没有对应记录就得走 DNS 查询超时之后才继续。解决办法是在/etc/hosts里加一行127.0.0.1 你的主机名这个改动成本极低收益很高。坑二直接复制虚拟机文件夹。很多人图省事直接把整个虚拟机目录拷贝一份当第二台机器用。两台的 MAC 地址和 UUID 完全一样同时开机就会出现网络地址冲突、网络时通时断的诡异现象。正确做法是用 VMware 的克隆功能如果已经复制了就在虚拟机设置里点生成新的 MAC 地址同时把 vmx 配置文件里的 uuid 那几行删掉让它重新生成。坑三主机杀毒软件的实时扫描。这个是性能杀手但很少有人想到。Windows 上的实时防护会扫描虚拟机磁盘文件的每一次读写虚拟机里的 IO 操作会被放大成主机上的磁盘扫描编译和数据库操作能慢好几倍。把虚拟机所在的目录加进排除列表效果立竿见影。坑四快照链越滚越长。有个朋友的虚拟机用了半年主机盘告急一查发现虚拟磁盘文件上百 GB。原因是他在不同节点拍了七八个快照每次都是删掉的念头一闪而过但没执行。快照删掉之后还要等 VMware 把增量数据合并回主盘这个过程很慢但必须做不做的话空间不会真正释放。坑五安装时选自动分区留给根分区的空间太小。后来的实验要装容器镜像仓库几百 MB 的镜像一层层堆上去根分区写满系统各种服务开始报错。这个只能重装或者在线扩容先给虚拟磁盘扩容再用 LVM 把新空间分给根逻辑卷并扩文件系统都比较折腾不如一开始就手动分够。5.3 性能调优的几个开关虚拟机装好之后装一套工具组件是提升体验最直接的一步。CentOS 7 里用yum install -y open-vm-tools systemctl enable --now vmtoolsd装完之后主机和虚拟机之间的剪贴板共享、鼠标无缝切换、时间同步就都正常了。如果要用图形界面再装上 open-vm-tools-desktop。注意别去装 VMware 菜单里那个安装 VMware Tools挂载出来的老版本用开源的 open-vm-tools 更适配现代内核。其他几个我常调的开关不需要图形界面的时候把显示里的加速 3D 图形关掉如果这台虚拟机只是做一次性实验磁盘模式可以设成非持久关机后所有改动自动丢弃每次开机都是全新的特别适合做那些可能会搞坏系统的操作把虚拟机不需要的声卡、打印机、USB 控制器统统移除开机速度快一点也没了设备冲突的可能。还有一个进阶玩法如果你的主机内存和时间都充裕把虚拟机磁盘放到一块独立的固态硬盘上或者放到内存盘里做临时实验IO 性能会有肉眼可见的提升。这招在做数据库压力测试的时候尤其管用。6. 把环境当成资产来管6.1 做一套自己的基线模板装了这么多次之后我的做法变了不再每次都从零开始装而是维护一份基线虚拟机。这台机器上装好了系统、修好了 yum 源、配好了时区、装好了常用工具、关掉了无用服务、设置了 SSH 密钥登录然后关机拍一个快照再导出一份 OVF 格式当成备份。以后任何新实验都是从这台基线克隆出来的五分钟就能开工省下来的时间全用在正事上。导出 OVF 的好处是它是标准格式可以跨 VMware 产品导入也能当作真正的备份用——放在移动硬盘里主机重装系统了也不怕。导出的文件是一组 .ovf、.vmdk 和一个清单文件导入的时候选 .ovf 那个就行。基线维护起来也不麻烦。每当你在一台克隆机上摸索出一套新的配置觉得以后还会用到就把这套配置补到基线里把基线开机、执行配置、关机、重新拍快照、重新导出。一年下来这套基线就成了你个人经验的实体化积累。6.2 迁移与跨版本兼容的注意点虚拟机用久了总会遇到迁移的需求换主机、换工作、或者把环境搬到服务器上。有几个点必须留意。跨 VMware 版本迁移时向下兼容的规则是虚拟硬件版本不能高于目标产品的支持范围。如果你在 Workstation 17 上创建的虚拟机硬件版本是 17想拿到一台只装了 Workstation 15 的机器上打开就会失败。解决方法是在虚拟机设置里降级硬件兼容版本VMware 会提示你这样做之后某些功能不可用一般不影响使用。如果要把虚拟机从桌面版挪到服务器虚拟化平台上也要做同样的检查。迁入前先在目标平台上确认它支持的最高虚拟硬件版本然后把源虚拟机降到那个版本导出的 OVF 才能顺利导入。主机之间直接拷虚拟机目录的做法前面在坑二里说过一次这里再强调拷贝之前一定确保虚拟机是关机状态且没有挂起的快照拷完之后一定要改 MAC 地址和清掉 UUID这两步不做你可能会花半天时间在一个根本不存在的问题上。至于主机和虚拟机之间传文件安装好工具组件之后可以用共享文件夹配好 SSH 之后可以直接用 scp都比在 VMware 窗口里拖拽大文件靠谱得多。6.3 一些零碎但省时间的习惯虚拟机装好之后用 SSH 客户端连上去操作别在 VMware 那个小窗口里打字。窗口里没有像样的复制粘贴没有滚动缓冲终端配色也容易出问题。配好静态 IP 之后在主机上写一个 SSH 配置项起个别名以后ssh vm1就能连上去几分钟的配置能省掉未来几百次输地址。给每台虚拟机起有意义的机器名再在主机 hosts 文件里加一份映射用域名代替 IP。等你手上有五六台虚拟机的时候这招能救命。另一个习惯是准备一份 markdown 笔记记下每台虚拟机做了什么改动、装了什么、有哪些坑三周之后你自己都记不清了那份笔记就是唯一的线索。我个人在实际操作中的体会是装虚拟机这件事本身的技术难度并不高真正拉开差距的是你有没有把它当成一个可复用的资产来对待。从第一次装的时候顺手拍个快照到后来把整理好的基线导出备份这些动作加起来花的时间不多但它们决定了你后面每一次实验是五分钟开工还是一小时重装。最后再分享一个小技巧给虚拟机的虚拟磁盘单独放一个目录所有虚拟机文件都归拢在那里定期看一眼这个目录的总大小顺手清理掉不用的克隆和快照主机的空间就一直都不会告急。