ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

VMware Workstation 16安装CentOS 8虚拟机完整教程

VMware Workstation 16安装CentOS 8虚拟机完整教程 手里有台还算过得去的 Windows 笔记本想学 Linux 又不想动硬盘分区、更不想装双系统把引导搞崩——VMware Workstation 16 加 CentOS 8 这套组合基本就是为这个场景准备的。虚拟机的好处在于系统跑在文件里搞崩了删掉重来宿主机连个水花都不会溅。对刚接触 Linux 的人来说这是一条成本最低、容错率最高的入门路径对已经工作的运维和开发来说CentOS 8 的目录结构、systemd 体系、dnf 包管理器依然是理解 RHEL 系操作系统的标准入口。这篇内容我会从零开始把镜像怎么挑、虚拟机参数怎么算、安装界面每一屏在问什么、装完之后的网络和软件源怎么补以及我这些年踩过的坑一条一条讲清楚。你不需要任何 Linux 基础跟着做就能在半小时内拿到一台能联网、能装软件、能拍快照随时回滚的 CentOS 8 虚拟机。1. 为什么这套组合至今还有折腾价值1.1 虚拟机学 Linux 到底解决了什么问题很多人第一次学 Linux 的路径是装双系统结果是分区表被改、Windows 引导丢失、GRUB 修复搞一整天最后 Linux 也没学进去。虚拟机把这个风险彻底消掉了。整台 CentOS 8 在宿主机上就是几个文件一个几十 KB 的.vmx配置文件一个几百 MB 的.vmdk磁盘文件外加日志和快照文件。你可以在里面随便rm -rf /、随便改内核参数、随便把/etc/fstab写坏出问题了直接删掉文件夹重新来一遍十分钟又是台干净的机器。这里有个概念要先说清楚不然后面容易懵。宿主机的 VMware Workstation 相当于一间房子虚拟机就是房子里的一个房间房间有自己的门牌号IP 地址、自己的水电CPU 和内存配额、自己的一套家具操作系统。房间里的东西砸了房子本身没事但房子要是停电了所有房间一起黑。所以后面讲的所有配置其实都是在回答两个问题这个房间分多少资源以及这个房间怎么和外面通信。对 CentOS 8 这个具体的发行版来说它的学习价值集中在几个地方。第一是RPM dnf 的包管理体系这是 RHEL 系的根学会之后转 Rocky Linux、AlmaLinux、麒麟、统信这些国产化环境基本是平移的。第二是systemd 的服务管理模型systemctl那一套命令是所有现代 Linux 的通用语言。第三是SELinux 与 firewalld这两道安全闸门很多新手装完服务发现外网连不上九成是因为没处理这两个东西。这三块内容在虚拟机里练成本为零。1.2 为什么选 Workstation 16 而不是别的虚拟化方案虚拟化软件的选择其实不多主流就三个方向VMware Workstation、VirtualBox、Hyper-V。我选 Workstation 16 有几个很实际的理由。VirtualBox 免费开源但在 Windows 10/11 上长期存在和 Hyper-V 平台共存时的性能问题而且 6.x 版本对高分辨率屏幕的缩放支持一直不太行全屏之后字小得像蚂蚁。Hyper-V 是 Windows 自带性能也不错但它是 Type-1 型虚拟化开启之后会接管整个系统的虚拟化层导致其他虚拟化软件包括部分安卓模拟器、Docker Desktop 的某些模式直接罢工这个代价太大。Workstation 16 的定位比较舒服。它支持 DirectX 11 和 OpenGL 4.1 的 3D 加速跑图形化桌面不像虚拟机那么糊快照管理做得足够直观树状结构一眼看清哪一层是哪一层虚拟网络编辑器对 NAT、桥接、仅主机三种模式的可视化配置非常友好改子网、改 DHCP 范围都是点几下的事。另外它对 CentOS/RHEL 系的支持是原生级别的安装时选对客户机操作系统类型后续的显卡驱动、时间同步、共享文件夹都能自动识别。提示Workstation 16 的 Player 版本对个人使用是免费的功能上和 Pro 的差别主要是不能创建复杂快照树、不能做团队和克隆的批量管理。纯学习场景Player 完全够用但如果你打算同时开三四台机器搭集群练手Pro 的克隆功能会省很多时间。1.3 整体流程地图按这个顺序做才不会返工我在论坛里见过太多人卡住的原因不是某一步难而是顺序错了。比如先把系统装了才发现宿主机 BIOS 里虚拟化没开或者系统装完了才发现磁盘给了 20G装个数据库就爆了。所以先把路线理清。第一阶段是宿主机准备确认 CPU 虚拟化已开启、评估能给虚拟机多少内存和磁盘、下载并校验 CentOS 8 镜像。第二阶段是虚拟机创建走新建向导分配 CPU/内存/磁盘选网络模式挂载 ISO。第三阶段是系统安装Anaconda 安装器逐屏配置重点是分区、网络和软件包选择。第四阶段是装后初始化这是最关键也最容易被略过的一步包括修复已经停止服务的软件源、装 VMware 工具、配静态 IP、打快照。第五阶段是验证与备份确认能联网、能装包、能拍快照、能克隆。这五步里第一和第四步是新手最容易掉坑的地方下面会重点展开。2. 准备工作镜像选择与宿主机资源规划2.1 CentOS 8 镜像有个必须知道的坑先说个不太好听但必须面对的事实CentOS Linux 8 已经在 2021 年 12 月 31 日停止维护官方把软件源从主镜像站搬迁到了归档站vault。这意味着什么如果你从某个第三方站点下载了 CentOS 8 的 ISO装完之后执行dnf update会直接报错提示找不到 AppStream 或 BaseOS 的元数据。这个坑不解开后面所有装软件的操作都会失败。解决办法有两个方向。一个是继续用 CentOS 8 ISO但装完之后手动把软件源切换到归档地址。这条路我后面在 5.1 节会给出完整命令克隆一份虚拟机就能反复用成本最低。适合目标明确、就是要在 CentOS 8 上练手或者跑某个只支持 8 的老项目的人。另一个是改用替代发行版。Rocky Linux 8 和 AlmaLinux 8 都是 RHEL 8 的下游重建版命令、目录、包名和 CentOS 8 几乎完全一致软件源还在正常维护。如果你只是想学 RHEL 系的操作系统知识不想折腾源的问题直接下 Rocky Linux 8 的 DVD ISO 是更省事的选择。CentOS Stream 8 也能用但它是滚动更新的上游版本行为上偶尔和 RHEL 8 有细微差别做实验时注意这点。镜像文件的选择也有讲究。CentOS 官网提供的 ISO 类型主要有三种镜像类型体积量级适合谁说明DVD ISO约 7 GB绝大多数人包含完整安装包离线也能装全量软件Everything ISO约 15 GB需要离线全量仓库的人包含所有包适合做内网源Minimal ISO约 2 GB熟悉命令行的人只有基础系统装完没有图形界面新手建议直接下 DVD ISO。Minimal 版本虽然小但装完之后没有桌面环境第一次进系统面对纯黑命令行容易直接劝退。DVD 版本可以在安装时勾选带 GUI 的服务器装完就有图形界面心里踏实。下载完成后务必做一次校验这一步很多人跳过结果拿到一个下载不完整的 ISO安装到一半报介质校验失败白等半小时。# Windows 的 PowerShell 里计算 SHA256 Get-FileHash .\CentOS-8.5.2111-x86_64-dvd1.iso -Algorithm SHA256 # Linux / macOS 下 sha256sum CentOS-8.5.2111-x86_64-dvd1.iso把算出来的哈希值跟官网发布的 CHECKSUM 文件对一下一致了再往下走。2.2 宿主机资源怎么分配给你一套能直接抄的计算方法这一步必须算不能凭感觉。资源给少了系统卡到没法用给多了宿主机自己变卡体验反而更差。内存是第一个要算的。先看宿主机物理内存总量然后按下面的经验值分配宿主机 8 GB 内存给虚拟机 2 GB宿主机系统本身要留 4 GB 以上宿主机 16 GB 内存给虚拟机 4 GB这是最舒服的档位宿主机 32 GB 及以上给 8 GB跑图形界面和数据库都够为什么不建议给虚拟机超过宿主机一半的内存因为 VMware 在运行时会额外占用一部分内存作为虚拟机的影子内存用于管理内存页映射。宿主机内存被占满后Windows 会启用页面文件交换整个系统响应速度断崖式下跌那体验比虚拟机本身配置低还糟糕。CPU的分配遵循一个原则给的核心数不要超过宿主机物理核心数的一半。比如宿主机是 4 核 8 线程那给虚拟机 2 核就够了最多给到 4 核。因为给虚拟机分配的每个 vCPU对宿主机来说都是一个需要真实调度的执行单元。核心给多了多个 vCPU 之间还会互相等待这在 Linux 上表现为 CPU steal 时间偏高得不偿失。磁盘是最容易给少的。我建议的起步值是60 GB理想值是80 GB。看起来很多但算一下就明白了CentOS 8 带图形界面安装完光系统本身就要占掉 10 GB 左右随手装个 MySQL 或者 PostgreSQL数据目录加上日志又是几个 GB做实验时下载的各种 tar 包、镜像、编译产物很快就能吃掉 20 GB。而且更关键的是磁盘在用虚拟磁盘格式时是用多少占多少的分配方式你给它 80 GB实际文件一开始只有几个 GB不会立刻吃掉宿主机 80 GB 空间。还有一个隐藏的设置要注意磁盘是拆分成多个文件还是存储为单个文件。拆分的文件单个不超过 2 GB拷贝到 FAT32 的 U 盘上时能直接拷单个大文件性能稍好一点但一旦超过 4 GB 就没法放进 FAT32 分区。我一般选单个文件因为现在 U 盘基本都是 exFAT 或 NTFS 了而且性能收益是实打实的。2.3 宿主机上必须先确认的两件事第一件事BIOS 里的 CPU 虚拟化功能是否开启。Intel 平台叫 VT-xAMD 平台叫 SVM。这个开关默认在大多数品牌机上是关闭的必须进 BIOS 打开。判断方法很简单你打开 VMware 准备启动虚拟机时如果弹出此主机支持 Intel VT-x但 Intel VT-x 处于禁用状态的提示那就是没开重启进 BIOS 找 Virtualization Technology 之类的选项打开即可。第二件事Windows 上的 Hyper-V 相关组件是否在占用虚拟化层。Windows 10/11 如果开启了 Hyper-V、Windows 沙盒、WSL2、虚拟机平台这些功能Workstation 需要走 Windows Hypervisor Platform 接口性能会打折有时候还会出现启动卡死。如果你确定不用这些功能可以在启用或关闭 Windows 功能里把 Hyper-V 和虚拟机平台关掉重启之后 Workstation 就能直接用硬件虚拟化速度快一大截。注意关掉 Hyper-V 会影响 WSL2 和 Docker Desktop 的 WSL2 后端。如果你日常还要用这两个就别关让 Workstation 走兼容模式只是性能稍逊功能是正常的。3. VMware Workstation 16 创建虚拟机全流程拆解3.1 新建向导典型模式和自定义模式该选哪个打开 Workstation菜单里文件 - 新建虚拟机会让你在典型和自定义之间选。这两个的区别不是难易而是可控粒度。典型模式只问你四件事安装来源、虚拟机名称和位置、磁盘大小、是否拆分磁盘。剩下的 CPU、内存、网络模式、磁盘控制器类型它都按默认值给你。优点是快缺点是有几个关键默认值并不理想比如默认内存可能只给 1 GB网络默认走 NAT磁盘控制器默认可能是 IDE。自定义模式会把整个过程拆成十来个屏幕每一屏都让你确认一个参数。多花两分钟但换来的是完全可控的配置而且不会出现装完了才发现参数不对、还得回去改的情况。我的建议是第一次装、或者准备把这台虚拟机当模板长期用走自定义模式只是临时起意想跑个命令试试走典型模式。下面的步骤按自定义模式展开因为自定义模式里包含了典型模式的所有环节看懂了自定义典型模式自然就懂了。第一屏虚拟机硬件兼容性保持默认的 Workstation 16.x 即可。这个选项决定了虚拟机能被哪些版本的 Workstation 打开选低了兼容性好但新特性用不上选高了老版本打不开。同机使用默认就行。第二屏有两个选项安装程序光盘和稍后安装操作系统。一定要选稍后安装操作系统。这是个非常经典的坑如果你选了安装程序光盘并直接指向 ISO 文件Workstation 会启用简易安装模式自动帮你填好用户名、密码、时区然后用一份预置的 kickstart 配置文件把系统装完。听起来省事但结果是分区方案被固定成它认为合理的值、软件包选择被固定、而且你完全没机会理解安装界面在做什么。对学习来说这是本末倒置。选稍后安装操作系统之后安装器会以完全交互的方式跑一遍你能看到 Anaconda 问的每一个问题。真正把系统装明白就得从这一屏开始。3.2 CPU、内存、磁盘、网络逐项配置说明客户机操作系统选Linux版本选CentOS 8 64 位。这个选择会影响 VMware 后续给虚拟机配置的虚拟硬件类型、推荐的驱动、以及 VMware Tools 的匹配逻辑。选对了共享文件夹和拖拽复制这些功能开箱即用。处理器配置这一屏注意看下半部分的提示文字。它通常写着此虚拟机最多可使用 X 个处理器这个 X 是 VMware 根据宿主机实际核心数算出来的。处理器数量和每个处理器的内核数量这两个字段乘积就是虚拟机看到的总核心数。比如处理器数量 1、每处理器核心数 2虚拟机里lscpu看到的就是 2 个 CPU。这和物理机的插槽物理核结构是对应的一般保持处理器数量 1内核数量 N这种结构就行避免出现 NUMA 调度上的额外开销。内存分配按 2.2 节算出来的值填。4 GB 是个很稳的档位图形界面流畅跑几个服务也不吃力。网络类型这一屏是重点四个选项的差别必须搞清楚网络模式虚拟机 IP 来源能否访问外网局域网其他机器能否访问虚拟机典型用途桥接局域网路由器 DHCP能能把虚拟机当独立主机用NATVMware 虚拟 DHCP能不能除非做端口映射日常学习、单机实验仅主机VMware 虚拟 DHCP不能不能断网环境、安全实验不使用网络无不能不能特殊测试新手直接选NAT。原因是 NAT 模式下虚拟机会被分配一个 192.168.x.x 的私有地址通过宿主机做地址转换访问外网不需要跟公司或家里的路由器和网段较劲。桥接模式虽然看起来更真实但它要求虚拟机的 IP 和局域网同网段一旦网段冲突或者 DHCP 分配不到地址排查起来对新手不友好。磁盘这一屏选创建新虚拟磁盘容量填80 GB。下面两个勾选项说的是将虚拟磁盘拆分成多个文件按 2.2 节的说明看你的使用习惯决定立即分配所有磁盘空间不要勾。勾了会立刻把 80 GB 从宿主机硬盘上扣掉失去虚拟磁盘按需增长的灵活性最后一屏会显示一个配置摘要。这里请务必点自定义硬件进去确认三件事CD/DVD 是不是指向了你下载的 ISO 文件、USB 控制器有没有必要不需要可以移除减少干扰、声卡要不要服务器用途可以移除。确认完点完成虚拟机就创建好了但还没启动。3.3 启动前的三个小设置能省掉后面的麻烦在点开启此虚拟机之前我习惯先做三件事。第一件在虚拟机设置里把加速 3D 图形关掉。这个选项对需要图形加速的游戏或者 CAD 场景有用但对跑 Linux 桌面来说开启后反而容易在安装过程中出现花屏、黑屏、卡在启动画面。关掉之后走软件渲染虽然桌面动画没那么顺滑但稳定性好得多。第二件确认虚拟化 Intel VT-x/EPT 或 AMD-V/RVI这个选项的状态。如果你的虚拟机里还要再嵌套跑虚拟机比如学 Docker 或者搭 KVM这个必须勾上如果不需要勾上会轻微影响性能。按需选择。第三件把虚拟机文件夹的位置记下来。这个文件夹里有.vmx主配置文件、.vmdk磁盘文件、.nvram的 BIOS 设置、以及后续生成的.vmsd快照描述文件。以后要做备份或者迁移整个文件夹拷走就行。4. CentOS 8 安装界面逐屏实录4.1 引导菜单与首屏语言设置虚拟机启动后会先出现 CentOS 的引导菜单有几个选项Install CentOS Linux 8、Test this media install CentOS Linux 8、Troubleshooting。如果你的 ISO 是从可靠渠道下载的直接选第一项 Install CentOS Linux 8。第二项会花几分钟完整校验安装介质好处是能提前发现 ISO 损坏坏处是慢。我一般第一次装的时候会选第二项验一次之后重装就直接第一项。紧接着 Anaconda 安装器会启动进入图形化的欢迎界面让你选语言。这个语言选择会影响安装界面的显示语言、系统默认的 locale、以及首次登录时的桌面语言。中文界面看着亲切但我要提醒一句中文界面在遇到报错时错误信息被翻译得很生硬反而不好搜索。我的建议是安装界面选 English (United States)但在下面键盘和语言支持里额外加上中文支持这样系统跑起来是英文的错误信息配中文的输入法两头的好处都占。4.2 安装摘要页面每个带感叹号的图标都要点选完语言之后进入的是安装摘要Installation Summary页面。这个页面上有一堆图标凡是带红色感叹号或者橙色警告标记的都必须点进去确认否则右下角的开始安装按钮是灰色的。需要确认的项通常是这几个本地化Localization里的键盘和语言支持、软件Software里的安装源和软件选择、系统System里的安装目的地、Kdump、网络和主机名。下面逐个说。安装源Installation Source一般不用改安装器会自动检测到挂载的 ISO。如果要用网络源可以在这里填 URL但离线装用本地介质最稳。软件选择Software Selection这一项值得多花两分钟。左边是基础环境右边是附加组件。基础环境装完有什么适合场景带 GUI 的服务器GNOME 桌面 常用服务器工具新手、需要图形界面服务器命令行 服务器工具集无桌面模拟真实服务器最小安装只有最基础的系统追求精简、熟悉命令行工作站GNOME 开发工具开发调试虚拟化主机KVM 相关组件嵌套虚拟化实验新手建议选带 GUI 的服务器右边勾上开发工具和系统管理工具。这样做的好处是装完就有桌面能截图、能开浏览器、能挂载 U 盘学习门槛低。等熟悉了之后再装一台最小安装的机器练纯命令行循序渐进。提示附加组件里的容器管理、网络服务器这些不用急着勾。CentOS 8 的软件源修复好之后用dnf groupinstall随时能补不需要在安装阶段就装一堆用不上的包。4.3 分区方案手动分区的参数怎么给安装目的地Installation Destination是整台虚拟机最需要想清楚的一屏。进去之后先选磁盘我们这台只有一块 80 GB 的虚拟盘直接选中。下面的存储配置有两个选项自动和自定义。自动分区的逻辑是把/boot单独切出来剩下的全部丢给 LVM 卷组在里面建根分区和 swap。这个方案对虚拟机学习来说已经够用但为了让你真正理解 Linux 的分区结构我建议走一次自定义。点自定义然后在新挂载点将使用以下分区方案里选LVM点点击这里自动创建它们让安装器先给你生成一套基础布局然后手动调整数值。这样比从零画分区表省事得多。标准的 RHEL 系分区布局是这样的挂载点文件系统建议大小作用说明/bootxfs1 GiB内核和引导文件必须独立/boot/efiEFI System Partition200 MiB仅 UEFI 模式需要swapswap4 GiB虚拟内存内存不足时兜底/xfs剩余全部根分区装在 LVM 逻辑卷上swap 的大小怎么定传统经验公式是一直在变的居中的做法是物理内存小于 2 GB 时给内存的两倍2 到 8 GB 之间给和内存相同的量8 GB 以上给 8 GB 封顶。我们是 4 GB 内存的虚拟机给 4 GB swap 正好。之所以不完全不设 swap是因为有些应用比如某些 Java 服务、数据库启动时会检查 swap 是否存在没有的话会直接拒绝启动。文件系统选xfs而不是 ext4。CentOS 8 的默认就是 xfs它在大文件读写和在线扩容方面表现更好而且 RHEL 系的所有工具链都是围绕 xfs 优化的。ext4 不是不行只是没必要逆着默认来。还有个细节如果你在虚拟机设置里选了UEFI 固件而不是 BIOS那么安装器会多要求一个/boot/efi分区类型必须选 EFI System Partition大小 200 MiB 足够。BIOS 模式下不需要这个分区。两种模式都行新手用默认的 BIOS 更省事。4.4 网络、主机名、root 密码与用户创建回到安装摘要页面点开网络和主机名Network Hostname。右上角有个开关默认是关闭的一定要打开否则装完系统网卡是 down 的状态得手动配。打开之后左侧列表里会显示你的网卡名字通常是ens33或者ens160这是 systemd 的新命名规则不再是eth0了下面会显示它拿到的 IP 地址。主机名Hostname这里可以自定义比如填centos-lab01。这个主机名会写进/etc/hostname出现在命令提示符里多台虚拟机一起跑的时候很好辨认。填完之后点应用确认 IP 已经分配到了地址再点完成返回。Kdump这一项虚拟机学习场景直接关掉。Kdump 是内核崩溃时转储内存快照的机制它需要预留一块内存专门给转储内核用对我们来说纯属浪费。生产环境有用练习环境没必要。Root 密码和用户创建是装完系统之后你唯一的登录凭据这里有两个地方要说。root 密码CentOS 8 默认要求密码有一定复杂度但你可以勾选允许 root 用户使用密码登录绕过。虚拟机环境我建议设成好记的简单密码比如Root1234因为你会在命令行里反复用su -或者sudo。反正这台机器不对外安全性靠宿主机的防火墙和 NAT 网络天然隔离。用户创建强烈建议在安装阶段就创建一个普通用户并勾选将此用户设为管理员。这个选项会把用户加入wheel组之后就能用sudo提权。为什么不用 root 一路到底因为真实的生产环境里 root 登录是被严格限制的很多服务也拒绝以 root 身份运行。养成用普通用户 sudo 的习惯是从练习环境过渡到真实环境的重要一步。4.5 开始安装与首次重启所有带感叹号的项都处理完之后右下角的开始安装变成可点状态点下去安装就开始了。整个过程大概 10 到 20 分钟取决于宿主机性能。这段时间可以干点别的给虚拟机拍个安装前的快照、把 5.1 节要用的软件源修复命令先复制到剪贴板里。安装过程会显示进度条和当前正在安装的包名如果卡在某一行超过五分钟不动基本可以判断是死了后面 6.1 节会讲怎么排查。装完之后会提示重启点下去虚拟机重新引导这次会进入首次配置阶段。如果你装的是带 GUI 的版本会先看到 GNOME 的初始化向导让你选语言、输入法、是否联网账号。这些都可以直接跳过或者用本地账号。跳过在线账号那一屏不然它会一直提示你连不上服务器。首次登录进来之后先用普通用户登录打开终端验证几件事ip a看网卡有没有 IPping -c 3 www.baidu.com看能不能通外网cat /etc/redhat-release看系统版本对不对。这三条命令都正常系统安装这一步就算彻底完成了。5. 装完之后的初始化这几步不做后面全是坑5.1 让 CentOS 8 的软件源重新可用这一节是整篇文章里价值最高的部分因为不做这一步你的 CentOS 8 就是一台装不了任何软件的废铁。现象是这样的你执行dnf update或者dnf install vim会得到类似这样的报错Error: Failed to download metadata for repo AppStream: Cannot prepare internal mirrorlist: No URLs in mirrorlist原因在 2.1 节说过官方把 CentOS 8 的源搬到了归档站。修复方法是把/etc/yum.repos.d/下面那几个 repo 文件里的mirrorlist注释掉把baseurl指向归档地址。# 1. 备份原有的 repo 文件出问题了还能还原 mkdir -p /etc/yum.repos.d/backup cp /etc/yum.repos.d/CentOS-*.repo /etc/yum.repos.d/backup/ # 2. 注释掉 mirrorlist 行 sed -i s/^mirrorlist/#mirrorlist/g /etc/yum.repos.d/CentOS-*.repo # 3. 把 baseurl 指向归档站 sed -i s|^#baseurlhttp://mirror.centos.org|baseurlhttp://vault.centos.org|g /etc/yum.repos.d/CentOS-*.repo # 4. 清理缓存并重建 dnf clean all dnf makecache执行完最后一步如果看到Metadata cache created之类的提示就说明源通了。这时候dnf update -y就能正常拉包了。如果归档站的访问速度不理想可以把 baseurl 换成国内的镜像归档地址速度会快不少。另外还有个更省事的办法直接从一台已经修复好源的虚拟机上把整个/etc/yum.repos.d/目录打包拷过来覆盖新机器的同名目录一分钟搞定。这也是为什么我建议把第一台机器做成模板。注意sed命令里的分隔符我用的是竖线|而不是常见的斜杠/因为 baseurl 里本身就含斜杠用斜杠做分隔符需要转义用竖线更清爽。这是个小技巧写脚本时经常用。5.2 装 open-vm-tools 和共享文件夹虚拟机装完不带 VMware 的增强工具会缺几个很实用的能力宿主机和虚拟机之间复制粘贴文本、分辨率随窗口自适应、宿主机文件共享给虚拟机、以及虚拟机时间与宿主机自动同步。老教程里会让你挂载 VMware Tools 的 ISO 然后编译安装那是十年前的做法。现在正确的做法是装open-vm-tools它是 VMware 官方开源并已被各发行版收录的版本直接走包管理器能自动跟随内核更新。# 虚拟机桌面环境需要带 desktop 版本 dnf install -y open-vm-tools open-vm-tools-desktop # 启动并设置开机自启 systemctl enable --now vmtoolsd # 验证服务状态 systemctl status vmtoolsd装完重启一次虚拟机分辨率自适应和复制粘贴就生效了。共享文件夹要单独配。先在虚拟机关机状态下在 Workstation 的虚拟机设置里选项 - 共享文件夹新建一个指向宿主机的某个目录比如D:\vm-share勾上启用此共享。开机之后在虚拟机里执行# 创建挂载点 mkdir -p /mnt/hgfs # 手动挂载共享目录 vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o nonempty # 查看是否成功 ls /mnt/hgfs能看到宿主机那个目录名就说明挂上了。如果想让它在开机时自动挂载写进/etc/fstab# /etc/fstab 里追加这一行 .host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,defaults,nonempty 0 0allow_other这个参数很关键不加的话只有 root 能访问这个目录。nonempty是允许挂载到非空目录上避免mkdir完之后因为目录里有东西而挂载失败。5.3 快照、克隆与模板化把重复劳动降到零快照是虚拟机相对物理机最大的优势。它的原理是记录下当前时刻虚拟磁盘的状态之后你对磁盘的所有修改都写到一个独立的增量文件里。要回滚就把增量文件丢弃磁盘回到快照那一刻的状态。快照要这样用才有价值。不要装完系统就拍快照也不要等搞乱了才想起拍。正确的时机是三段系统装完并完成基础配置之后拍一个干净基线装完某个大型软件比如数据库或者一整套开发工具链之后再拍一个做危险实验之前拍一个实验前。这样出问题的时候你能选择的回滚点是有层次的而不是只能退回最开始的空白状态。拍快照之前有个必须做的动作关机。在开机状态下拍的快照会包含内存状态文件体积大而且恢复后系统时间是静止的容易引起一些奇怪的时间跳变问题。关机快照体积小、恢复干净虽然要多等十几秒开机但省心。注意快照不是备份。多层快照会让磁盘增量文件形成链条读写性能逐层下降而且一旦链条中间某一层的文件损坏后面的快照全废。拍三五个没问题拍十几个就该考虑合并快照在快照管理器里删除中间层了。克隆是用来批量造机器的。在虚拟机关机状态下虚拟机 - 管理 - 克隆会问你克隆类型完整克隆把磁盘文件完整复制一份克隆出来的机器独立存在互不影响占用空间等于原磁盘的实际占用链接克隆基于原机器的磁盘生成一个只读基础层加上一个小的增量层占用空间极小但必须依赖原机器存在原机器删了链接克隆就废了做实验集群的时候我用链接克隆居多一台母机复制出五台实验机总共占的空间可能就几 GB。但如果这台机器要长期保存、或者要拷给别人就用完整克隆做成一个自包含的模板。把第一台机器做成模板是我最推荐的收尾动作。具体做法把系统装好、源修好、工具装好、常用软件装好、快照拍好然后关机把这个虚拟机整个文件夹打包压缩存到移动硬盘或者网络盘上。下次要新机器解压、改个名字、开机就是一台开工即用的 CentOS 8成本五分钟左右。这套流程跑通之后你在 Linux 学习上花的时间就全都花在内容本身而不是环境搭建上。6. 常见问题排查实录6.1 安装阶段的典型故障问题一启动虚拟机报此主机支持 Intel VT-x但 Intel VT-x 处于禁用状态。这是最高频的问题原因就是 BIOS 里的虚拟化开关没开。重启宿主机开机时按对应的功能键进 BIOS不同品牌不一样联想是 F1 或 F2戴尔是 F2惠普是 F10华硕是 Del在 Advanced、CPU Configuration 或者 Security 分类下找 Intel Virtualization Technology / VT-x / SVM Mode设成 Enabled保存重启。问题二启动后卡在黑屏或者卡在某一行日志不动。先看卡在哪一行。如果是卡在Started ...之类的服务启动日志通常是内存给太小了。把虚拟机关机内存从 1 GB 提到 4 GB 再试。如果是进入安装界面后黑屏多半是 3D 加速的问题去虚拟机设置里把加速 3D 图形取消勾选。问题三安装时报介质校验失败或者中途报读取错误。ISO 文件损坏或者下载不完整。回到 2.1 节重新做一次 SHA256 校验对不上就重新下。别硬着头皮继续装到一半失败比重新下载更浪费时间。问题四安装过程走到分区那一步报没有足够的空间。磁盘给太小了。检查虚拟机设置里的磁盘容量如果只有 20 GB装带 GUI 的版本加上附加组件确实可能不够。关机后在虚拟机设置里把磁盘扩容再重新走一遍分区。6.2 使用阶段的典型故障问题一dnf报No URLs in mirrorlist。这就是 5.1 节讲的 EOL 问题按那一节的命令修一遍源就好。问题二虚拟机里能 ping 通宿主机但 ping 不通外网。先确认网卡是 up 状态ip a看ens33有没有 IP。如果没有用nmcli或者图形界面的网络设置把它打开。如果有 IP 但还是不通检查 Workstation 的虚拟网络编辑器里 VMnet8NAT 模式对应的虚拟网卡是否存在以及VMware NAT Service这个 Windows 服务有没有在运行。这个服务被某些安全软件禁用的情况我遇到过手动启动一下就好了。问题三想给虚拟机配固定 IP重启之后 IP 又变了。NAT 模式下默认走 DHCP地址会变。要固定的话有两个办法一是在 VMware 的虚拟网络编辑器里设置 DHCP 保留把虚拟机的 MAC 地址和某个 IP 绑定二是在虚拟机内部把网卡配置改成静态。第二种更通用命令如下# 查看当前连接名 nmcli connection show # 修改为静态 IP假设连接名是 ens33网关是 NAT 网段的 .2 地址 nmcli connection modify ens33 ipv4.method manual \ ipv4.addresses 192.168.10.100/24 \ ipv4.gateway 192.168.10.2 \ ipv4.dns 192.168.10.2 223.5.5.5 # 重新激活连接 nmcli connection up ens33注意 NAT 模式下网关通常是该网段的.2地址DNS 也经常指向同一个地址因为 VMware 的 NAT 服务本身就带了 DNS 转发。具体的网段可以在虚拟网络编辑器里看到。问题四磁盘不够用了想扩容。先在关机状态下在 Workstation 的虚拟机设置里把磁盘容量调大这个操作只增不减。开机之后因为我们是 LVM 布局还需要在系统里把新增的空间扩展到分区和逻辑卷上。如果根分区是 xfs扩容之后还要在线扩展文件系统# 查看当前分区和逻辑卷情况 lsblk vgs lvs # 假设新增空间后块设备 sda3 是 LVM 物理卷所在分区 # 先扩展分区用 parted 或 growpart growpart /dev/sda 3 # 扩展物理卷 pvresize /dev/sda3 # 扩展逻辑卷用全部剩余空间 lvextend -l 100%FREE /dev/mapper/cl-root # xfs 文件系统在线扩容 xfs_growfs /这一套下来根分区就能用上新增的空间而且全程不用重启业务不中断。问题五共享文件夹挂载之后是空的。两个常见原因。一是宿主机目录路径写错了去虚拟机设置里重新确认。二是没加allow_other参数导致普通用户看不到内容用sudo ls /mnt/hgfs检查一下能不能看到。还有一种情况是共享文件夹功能需要在虚拟机设置里显式启用很多人只加了目录没勾启用。为方便查阅把上面的问题整理成一张速查表现象最可能的原因处理方向提示 VT-x 被禁用BIOS 虚拟化开关未开进 BIOS 开启 VT-x/SVM安装界面黑屏3D 加速冲突或内存不足关闭 3D 加速、提高内存介质校验失败ISO 下载不完整重新校验哈希并重下dnf 提示 No URLsCentOS 8 已 EOL切换到 vault 归档源虚拟机不通外网NAT 服务未启动或网卡未启用检查 VMware NAT Service、启用网卡IP 重启后变化DHCP 分配改静态 IP 或做 DHCP 保留磁盘空间不足初始分配过小扩容磁盘 LVM 在线扩展共享目录为空未加 allow_other 或未启用检查挂载参数与共享设置6.3 我这些年踩出来的几条避坑经验第一条装系统之前一定先想清楚这台机器要用来干什么。如果只是学命令最小安装加 20 GB 磁盘就够如果要学数据库、容器、集群那磁盘至少 80 GB内存至少 4 GB而且要留出以后扩容的余地。我见过太多人建完机器才发现磁盘不够扩容又要折腾一遍 LVM那感觉相当不划算。第二条不要在虚拟机和宿主机之间来回拷文件的时候用共享文件夹跑大文件。共享文件夹走的是 VMware 的 HGFS 协议大文件传输速度远不如网络传输。几个 GB 的 ISO用scp走 NAT 网络反而更快而且流程更接近真实的服务器运维。第三条不要把快照当版本管理用。快照解决的是我要回滚不是我要记录每一步。如果你需要在某个配置下反复对比更好的做法是用 Git 管理配置文件或者干脆克隆多台机器分别折腾。第四条克隆机器之后记得改三样东西主机名、IP 地址、MAC 地址。特别是做集群实验的时候两台机器主机名一样、IP 一样你会怀疑人生。主机名改/etc/hostname加hostnamectl set-hostnameIP 用nmcliMAC 在虚拟机设置的网络适配器里点高级重新生成。我自己现在的做法是维护一份母机里面装好了源、工具、常用命令别名、SSH 免密配置需要实验环境的时候克隆一份出来改个名字就开工。这几年下来我在环境搭建上省下的时间比我在技术本身上省下的都多。你要是准备长期跟 Linux 打交道也建议尽早把这套流程固化下来。最后再分享一个小习惯每次装完一台新虚拟机先拍一个关机快照命名成baseline-日期。这个动作花不到十秒但当你两天后把系统搞成一团乱麻、又完全想不起来改过什么的时候它会救你一次。
返回列表