ARTICLE DETAIL

资讯详情

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

VMware 16 安装 CentOS 7 网络配置与排错指南

VMware 16 安装 CentOS 7 网络配置与排错指南 上周有个刚入行做运维的朋友找我说他在 VMware Workstation Pro 16 里把 CentOS 7 装完了GNOME 桌面也顺利进得去结果yum install卡在那儿一动不动Xshell 也死活连不上。我让他把ip addr的输出截图发过来一眼就看到ens33那块网卡压根没拿到地址只有一个lo回环。机器是装好了但网络这条命脉没接上——这几乎是每个第一次在虚拟机里装 CentOS 7 的人都会撞上的墙。所以我打算把这件事从头到尾捋一遍从宿主机的虚拟化开关怎么开、镜像该下哪个版本到安装向导里那几个默认值背后的取舍再到装完之后网卡不通时该怎么一步步排查。这里面有一套完整的 VMware Workstation Pro 16 安装 CentOS 7 流程也有一套 CentOS7 网络配置的排查方法论还有静态 IP、SSH 连接、克隆虚拟机后的地址冲突这些实际操作里才会遇到的细节。不管你是第一次碰虚拟机还是装了七八遍但每次都要重新查资料这篇应该都能让你少折腾几个小时。1. 开工前的三件事宿主环境、镜像版本、虚拟化开关在点开安装向导之前有三件事决定了你后面是顺风顺水还是踩坑踩到怀疑人生。很多人习惯性地直接下一步下一步结果到网络那一步才发现宿主机上有个叫 Hyper-V 的东西正在和 VMware 抢底层虚拟化能力或者下了一个架构完全对不上的镜像白等半小时。1.1 Hyper-V 与 VMware 共存时的性能陷阱Windows 10/11 专业版默认可能开着 Hyper-V、WSL2、Windows 沙盒、Device Guard基于虚拟化的安全这几样东西它们都会占用 CPU 的硬件虚拟化扩展。VMware Workstation Pro 16 在检测到 Hyper-V 存在时会退化到一种兼容模式运行表现是虚拟机启动变慢、嵌套虚拟化在虚拟机里再跑 Docker 或虚拟机直接不可用严重的时候会弹出VMware Workstation 与 Hyper-V 不兼容的提示。如果你不用 Hyper-V最干脆的做法是去控制面板 → 程序和功能 → 启用或关闭 Windows 功能里把 Hyper-V、Windows 虚拟机监控程序平台、虚拟机平台、Windows 沙盒全部取消勾选然后重启。重启完再打开 VMware性能会明显不一样。但现实情况是很多人需要用 WSL2 或者 Docker Desktop那就没法关。这时候建议至少确认 VMware Workstation 是 16.1 以后的版本它支持通过 Windows Hypervisor Platform 接口与 Hyper-V 共存。代价是性能有损耗而且虚拟化 Intel VT-x/EPT这个选项勾了也没用。这个取舍要提前想清楚别等到装完 CentOS 准备在里面跑 Docker 才发现嵌套虚拟化起不来那时候只能重装系统级别的改动。还有一个容易被忽略的点是 BIOS 里的虚拟化开关。Intel 平台叫 Intel Virtualization TechnologyVT-xAMD 平台叫 SVM Mode通常在 Advanced → CPU Configuration 里面。如果这个开关是关的VMware 会在虚拟机启动时提示此主机支持 Intel VT-x但 Intel VT-x 处于禁用状态。这不是软件问题进 BIOS 打开就行不同品牌主板位置不一样联想的在 Configuration 里华硕的在 Advanced → CPU Configuration 里。1.2 CentOS 7 该选哪个镜像以及 7.9 停更后怎么办CentOS 7 的最后一个版本是 7.9.2009镜像文件名形如CentOS-7-x86_64-DVD-2009.iso大小约 4.4GB。官方的 mirror.centos.org 在 2024 年 6 月 30 日停止维护后已经不能正常提供服务现在下镜像基本都走国内高校和云厂商的归档站。常用的几个阿里云归档https://mirrors.aliyun.com/centos-vault/7.9.2009/isos/x86_64/清华 TUNA 归档https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.9.2009/isos/x86_64/中科大归档https://mirrors.ustc.edu.cn/centos-vault/7.9.2009/isos/x86_64/DVD 版和 Minimal 版怎么选Minimal 只有 1GB 左右装完是纯命令行没有任何图形界面适合做服务器练习、跑 Docker、搭集群。DVD 版包含完整的软件包仓库可以在安装界面里选择 GNOME 桌面、开发工具等组合。如果你只是想练命令、搭服务选 Minimal 更干净启动内存占用能省下好几百兆如果你需要图形界面截图、演示或者用浏览器那就选 DVD。这里顺带回应一个经常被搜索的问题ARM 架构的开发板或者电视盒子能不能刷 CentOS 7理论上 CentOS 7 有 aarch64 的镜像但那些镜像是给服务器级 ARM 平台准备的像晶晨 S905 系列这类消费级芯片引导链、内核驱动、设备树都是定制过的直接刷 CentOS 7 基本跑不起来通常需要社区维护的专用镜像。虚拟机里玩的话宿主是 x86_64 就老老实实下 x86_64 的 ISO别混。2. 新建虚拟机的向导里每个选项背后的取舍VMware 的新建向导一共就那么几步但每一步的默认值都对应着一种使用场景。搞明白默认值为什么是那个值你后面调优的时候心里才有底。2.1 硬件兼容性与磁盘拆分方式的真实影响向导第一步会问硬件兼容性默认给的是 Workstation 16.x。这个选项决定了虚拟机的虚拟硬件版本也就决定了它能被哪些版本的 VMware 打开。如果你只在自己机器上用选 16.x 就行能用上新版本的全部特性如果你做的虚拟机要发给同事、同学而对方可能还在用 VMware 15 甚至更老的版本那就往下选一档否则对方打开会提示此虚拟机由更新版本的 VMware Workstation 创建无法打开。我见过太多人做完实验把虚拟机打包发给老师结果老师打不开的尴尬场面。磁盘那一步有两个关键选项最大磁盘大小和将虚拟磁盘存储为单个文件还是拆分成多个文件。容量默认 20GB对练习环境来说够用但如果你打算在里面装 Docker、拉几个镜像、再跑个 MySQL20GB 很快就会见底建议直接给 40GB 或者 60GB。注意这个最大磁盘大小不是立刻占用物理磁盘它是稀疏分配的实际占用按你真正写入的数据增长所以给大一点不会浪费宿主机空间。拆分成多个文件的选项勾上之后 VMware 会按 2GB 一个切片生成一堆xxx-s001.vmdk这样的文件。好处是方便用网盘、U 盘搬运单个文件体积可控坏处是磁盘 I/O 性能会略低于单文件模式因为跨切片读写多了一层寻址。我的习惯是本机长期使用的虚拟机选单个文件需要传输分发的选拆分。另外还有一个立即分配所有磁盘空间勾上会马上把 60GB 写满宿主机磁盘好处是运行时不产生碎片、写入更稳坏处是浪费空间。普通练习没必要勾。2.2 处理器、内存与虚拟化引擎的勾选逻辑内存和 CPU 的分配原则只有一条不要超过宿主机物理资源的 50% 到 60%。如果宿主机是 16GB 内存给虚拟机 2GB 到 4GB 是安全区间4 核 CPU 的机器给虚拟机 2 核就够。这条经验背后是有道理的——VMware 本身要占用资源宿主机操作系统也要跑如果虚拟机把内存吃满Windows 会开始疯狂换页整机卡成幻灯片最后受害的还是你自己。CentOS 7 的 Minimal 安装 1GB 内存就能跑起来GNOME 桌面建议至少 2GB如果要跑图形化开发工具或者浏览器给 4GB。处理器那一步有个虚拟化引擎的分组里面三个勾选框值得单独说。第一个虚拟化 Intel VT-x/EPT 或 AMD-V/RVI是最重要的——如果你打算在 CentOS 7 里面再装 Docker、跑 Kubernetes 的 minikube、或者嵌套装另一台虚拟机这个必须勾上它把宿主 CPU 的虚拟化能力透传给虚拟机。第二个虚拟化 CPU 性能计数器和第三个虚拟化 IOMMU一般用不上性能计数器是给性能分析工具用的IOMMU 是给直通设备用的普通练习不用管。前面提到过如果宿主机开着 Hyper-V第一个选项勾了也不会生效这一点一定要有心理预期。网卡类型默认是 NAT这个默认值很合理先用默认的装完、把系统跑起来网络问题后面单独一章处理。磁盘类型默认 SCSI控制器默认 LSI Logic SAS这两个保持不动就行CentOS 7 原生支持。声卡、打印机之类的设备用不上可以删掉减少干扰。3. 安装界面里最容易被快速跳过的四个配置ISO 挂好、虚拟机启动进入 CentOS 7 的安装界面。整个安装过程最关键的其实就是一个页面——安装信息摘要里面列出了需要你确认的每一项。很多人图快直接点开始安装结果装完发现没网络、没分区规划、语言也不对。这一章把值得停一下的几项拎出来讲。3.1 软件选择最小化安装与 GNOME 桌面之间怎么选如果你用的是 DVD 镜像会看到软件选择这一项可以点进去。默认通常落在最小安装只有基础命令行工具。右边有几个选项基础设施服务器、文件和打印服务器、基本网页服务器、虚拟化主机、带 GUI 的服务器、GNOME 桌面、KDE 桌面、开发和生产工作站。选择逻辑很简单这台虚拟机拿来干什么。当服务器练手、跑 Docker、搭 LNMP就选最小安装再加右侧的开发工具可选包包含 gcc、make 这些编译工具后面装一些需要编译的软件会很省事。想看图形界面、截图演示、或者作为日常使用的桌面环境就选带 GUI 的服务器或GNOME 桌面。这里有个经验不要选工作站或者一次性勾太多组件装完会塞进大量你用不到的软件启动慢、占空间还会在后台跑一堆服务。如果你用的是 Minimal 镜像那这一步没有选择余地装完就是纯命令行。想事后补图形界面也不是不行yum groupinstall GNOME Desktop加上systemctl set-default graphical.target就能切过去但要额外下载几百兆的包而且没有外网源的情况下很麻烦。所以能用 DVD 镜像就尽量用 DVD 镜像选择权在自己手里。3.2 分区方案自动分区能跑但手动分区更省心安装位置这一项默认是自动分区。自动分区会用 LVM 把整个磁盘切成/boot、/和swap三块能用但有个让人头疼的地方CentOS 7 的自动分区在默认策略下给/的可用空间可能只有 50GB 封顶受 LVM 策略限制如果你给虚拟机分配了 100GB 磁盘会发现根分区只用了一半剩下的空间闲置着。解决办法是手动分区。手动分区的方案我一般这么配直接给你抄挂载点大小文件系统说明/boot1GBext4存内核和引导文件给 1GB 足够xfs 不做 /boot 是习惯问题swap2GBswap内存小于 8GB 时给内存的 1 到 2 倍大于 8GB 给 2GB 到 4GB 即可/剩余全部xfsCentOS 7 默认文件系统大文件性能好在分区界面里操作是先选中磁盘选我要配置分区点完成然后点号逐个添加挂载点。加/boot的时候如果选的是标准分区会生成/dev/sda1加 swap 和/的时候如果选 LVM会生成卷组里的逻辑卷。两种都行LVM 的好处是以后可以动态扩容坏处是分区结构多一层。练习环境建议用 LVM因为能顺手练一下lvextend和xfs_growfs这也是真实运维里天天用的操作。3.3 安装过程中就把网络打开能省掉后面一半的麻烦网络和主机名这一项是整篇安装里最关键的一步也是最多人漏掉的一步。点进去之后你会看到左侧列着ens33有些机器可能是ens160或者eth0右侧的开关默认是关闭状态。这时候要点一下右上角的开关把它打开然后等 DHCP 分配地址下方会显示类似192.168.10.128/24这样的信息说明网卡已经起来了。打开开关之后左下角有一个配置按钮可以进去改成静态 IP。这个我们留到第 6 章详细讲安装阶段先用 DHCP 拿到地址保证能连通就行。右下角的主机名也在这里改默认是localhost.localdomain建议改成有意义的名字比如node01、dev-centos。改主机名的好处是后面用 Xshell 管理多台机器的时候标签页上一眼就能分清哪台是哪台。这一步做完再点开始安装后面设 root 密码、创建普通用户。创建用户那个页面有个将此用户设为管理员的勾选框勾上之后这个用户会被加入wheel组可以用sudo提权。有些教程会建议直接用 root 登录但更规范的做法是建个普通用户加wheel需要提权时sudo。因为 root 登录在 SSH 里默认有时候会被PermitRootLogin挡住而且日常用 root 操作风险也高一个rm -rf敲错路径就没了。安装完成后点重启第一次进去会有许可协议要同意然后创建普通用户如果前面没建。到这一步系统层面就算装完了但真正的麻烦刚开始——网络。4. NAT、桥接、仅主机三种网络模式到底怎么选VMware 的虚拟网络这块有三种模式桥接Bridged、NAT、仅主机Host-only。很多人装完虚拟机连不上网根本原因就是没搞清这三种模式在干什么。这一章把它们讲透后面排查问题就有方向了。4.1 NAT 模式的地址分配逻辑与网关位置NAT 模式是 VMware 新建虚拟机时的默认值也是最省心的。它借助宿主机的一块虚拟网卡Windows 上是 VMware Network Adapter VMnet8把虚拟机组建成一个独立子网虚拟机共享宿主机的物理网卡上网。工作方式是宿主机上跑着一个 VMware NAT Service虚拟机的流量被它做地址转换之后发出去回来的响应再还原给虚拟机。关键信息是VMnet8 这个虚拟网络有固定的网段和网关。打开 VMware 菜单编辑 → 虚拟网络编辑器需要点右下角更改设置要管理员权限就能看到 VMnet8 的配置。默认情况下NAT 网络的子网是192.168.x.0/24其中.1是宿主机上 VMnet8 虚拟网卡的地址.2是 NAT 网关地址DHCP 分配范围通常是.128到.254。所以你装完 CentOS 7 用 DHCP 拿到的地址一般落在192.168.x.128到192.168.x.254之间。这个网关地址.2一定要记住因为你配静态 IP 的时候GATEWAY填的就是它。我见过有人配静态 IP 时把网关写成了.1结果虚拟机能和宿主机通信但出不了公网查了半天才发现网关填错了。判据很简单ping宿主机 VMnet8 网卡地址.1通常能通但ping 8.8.8.8不行这就是网关错位的典型症状。NAT 的好处是虚拟机不需要和局域网里的其他机器抢 IP宿主机换个 WiFi、换个网段虚拟机的配置完全不用改。缺点是局域网里别的机器访问不到你的虚拟机除非在宿主机上做端口转发如果是需要别人连你虚拟机上跑的服务比如给同学演示一个 web 应用NAT 就比较麻烦。4.2 桥接模式在实验室/公司网络里的翻车场景桥接模式是把虚拟机直接接到宿主机的物理网卡所在的二层网络虚拟机会像一台真实的机器一样向这个网络里的 DHCP 服务器请求 IP。听起来很美好但实际用起来坑不少。第一个坑是公司或者学校的网络通常有 MAC 地址准入策略或者 IP-MAC 绑定桥接出来的虚拟机用的是自己虚拟网卡的 MAC会被接入认证挡住表现就是网卡起来了但拿不到地址或者拿到了也上不了网。第二个坑是办公室网络里的 IP 资源紧张IT 部门发现网络里多出一堆陌生设备可能会直接封掉。第三个坑最隐蔽宿主机同时连着有线和无线的时候桥接到底走哪块网卡取决于物理网卡的顺序有时候桥到了没接网线的有线网卡上自然不通。桥接模式真正适合的场景是你自己家的网络、实验室里你自己拉的路由器下、或者需要局域网内其它设备直接访问虚拟机的场合。配的时候在虚拟机设置里把网络适配器改成桥接然后在虚拟网络编辑器里把 VMnet0 桥接到指定的物理网卡而不是自动这样能避免桥错网卡的问题。模式虚拟机 IP 来源能否上网局域网能否访问虚拟机适合场景NATVMnet8 子网 DHCP能不能需端口转发个人练习、下载更新、本地开发桥接所在局域网 DHCP能能局域网内多机互访、演示仅主机VMnet1 子网 DHCP不能不能纯隔离实验、安全测试仅主机模式用的是 VMnet1虚拟机只能和宿主机通信出不了公网。它适合做一些不想被外面影响的隔离实验比如网络协议分析、恶意样本行为观察这类场景。但因为它不能上网yum装包会失败所以用得相对少。5. 装完连不上网按这个顺序查一遍回到我朋友那个案例。他装完 CentOS 7yum卡死Xshell 连不上本质是同一个问题网卡没有拿到 IP更谈不上通外网。这一章给一套完整的排查链路照着走一遍基本能定位到问题。5.1 从 ifcfg-ens33 的 ONBOOT 开始查第一步永远是看网卡状态ip addr。如果ens33那一段没有inet开头的地址说明网卡没起来或者没拿到地址。接着查配置文件cat /etc/sysconfig/network-scripts/ifcfg-ens33重点看三个字段ONBOOT、BOOTPROTO、DEVICE。ONBOOTno是最常见的元凶。它表示系统启动时不自动激活这块网卡CentOS 7 的 Minimal 安装在某些情况下会默认给ONBOOTno结果就是每次开机网卡都是关的得手动ifup ens33才能起来。改成ONBOOTyes就彻底解决了。BOOTPROTO如果写的是none或者static同时下面又没配IPADDR那网卡自然不会自己拿地址。DHCP 场景下它应该是dhcp。DEVICE字段必须和实际网卡名一致如果虚拟机克隆之后网卡名变了这里对不上也会出问题。改完配置文件之后执行systemctl restart network # 或者用 nmcli 方式 nmcli connection up ens33如果没有ip命令说明这个系统连 iproute 都没装极少数裁剪镜像那得先解决。想看ifconfig的话CentOS 7 最小化安装默认不带 net-tools需要yum install -y net-tools但没网的情况下 yum 用不了所以初始排查优先用ip addr和ip route。5.2 三层验证法网关、公网 IP、域名网卡拿到地址之后别急着ping www.baidu.com。出网问题的排查要分三层来一层一层过定位效率最高。第一层通不通网关。ip route能看到默认网关通常是192.168.x.2。ping 192.168.x.2能通说明虚拟机和宿主机的虚拟网络没问题往上一层走。不通的话问题出在虚拟网络本身去检查 VMware 虚拟网络编辑器里 VMnet8 的配置或者宿主机的 VMware DHCP Service、NAT Service 这两个 Windows 服务有没有在跑。第二层通不通公网 IP。ping 114.114.114.114这是国内一个公共 DNS用它做测试是因为它不涉及域名解析纯粹验证 IP 层的连通性。能通说明 NAT 转换是正常的卡在域名上不通说明网关或者 NAT 配置有问题回头检查GATEWAY字段是不是写的.2以及宿主机本身能不能上网。第三层域名解析。ping www.baidu.com。如果第二层通了但这一层不行就是 DNS 没配。检查/etc/resolv.conf里面有没有nameserver行。CentOS 7 里修改 DNS 有两种方式在ifcfg-ens33里加DNS1223.5.5.5和DNS2114.114.114.114然后重启网络或者用nmcli命令设置。要注意的是 NetworkManager 会接管/etc/resolv.conf直接手改这个文件可能在重启网络后被覆盖所以配在网卡配置文件里更靠谱。5.3 克隆虚拟机之后网卡起不来的根因这是另一个高频问题。用 VMware 的克隆功能复制出一台新虚拟机开机之后ip addr只看到loens33不见了或者变成了ens34、ens36这类名字。原因在 CentOS 7 引入的一致性网络设备命名机制。系统会根据网卡的位置信息和 MAC 地址生成一个持久的命名规则保存在/etc/udev/rules.d/70-persistent-net.rules这个文件里某些版本是70-persistent-net.rules或者由net.ifnames参数控制。克隆出来的虚拟机 MAC 地址变了但规则文件里还记着老的 MAC 映射于是 udev 就把新网卡认成了一个新设备命名成ens34而ifcfg-ens33里配的还是老名字自然对不上。解决思路有两步。第一步是在克隆之后、开机之前去虚拟机设置里把网络适配器的 MAC 地址重新生成一遍保证唯一或者在克隆向导里选择创建完整克隆并勾选重新初始化所有网卡的 MAC。第二步是开机后检查/etc/sysconfig/network-scripts/目录下的配置文件把NAME和DEVICE改成实际的网卡名同时检查HWADDR这一行——如果配置文件里写死了HWADDR改成新 MAC 或者直接删掉这一行。另外UUID字段在克隆后也应该重新生成用uuidgen生成一个新的填进去避免同一网络里出现 UUID 冲突。还有一个更彻底的做法是克隆完之后删掉旧的 ifcfg 文件让 NetworkManager 自动按新网卡生成一份然后再手动改ONBOOTyes和静态 IP。这个办法干净利落但要注意别把模板机的配置文件删了。6. 让这台机器真正能用起来静态 IP、SSH 与快照网络通了只是解决了活着的问题要让它变成一台好用的开发/运维环境还有几件事要做。这一章讲静态 IP 怎么配、Xshell 怎么连、以及快照和 VMware Tools 这些加分项。6.1 改成静态 IP避免地址漂移用 DHCP 的麻烦是地址会变。今天虚拟机是192.168.10.128明天重启可能变成192.168.10.130你 Xshell 里存的会话就连不上了每次都得重新查 IP。所以只要这台虚拟机是长期用的就应该配静态 IP。改法有两种。第一种直接编辑配置文件/etc/sysconfig/network-scripts/ifcfg-ens33把内容改成TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic DEFROUTEyes IPV4_FAILURE_FATALno NAMEens33 DEVICEens33 ONBOOTyes IPADDR192.168.10.100 PREFIX24 GATEWAY192.168.10.2 DNS1223.5.5.5 DNS2114.114.114.114这里的192.168.10.100要换成你实际 VMnet8 网段里的地址。选地址有个讲究不要用 DHCP 分配范围.128到.254里的地址否则可能和自动分配的地址撞车。选.100这种 DHCP 范围之外的地址最安全。GATEWAY填.2PREFIX24等价于NETMASK255.255.255.0CentOS 7 里两种写法都认。第二种是用nmcli命令适合脚本化或者记不住配置文件格式的场景nmcli connection modify ens33 ipv4.addresses 192.168.10.100/24 nmcli connection modify ens33 ipv4.gateway 192.168.10.2 nmcli connection modify ens33 ipv4.dns 223.5.5.5 114.114.114.114 nmcli connection modify ens33 ipv4.method manual nmcli connection up ens33两种方式效果一样改完都建议systemctl restart network或者nmcli connection up让配置生效然后用ip addr和ip route确认一下。DNS 建议配两个主备关系223.5.5.5是阿里公共 DNS114.114.114.114是国内通用的两个都不通的情况很少见。如果你的网络有自己内部的 DNS 服务器优先用内部的因为访问内网域名需要它解析。6.2 Xshell 连接前的三项检查Xshell 连 CentOS 7 走的是 SSH 协议默认 22 端口。连不上通常不是 Xshell 的问题而是虚拟机这边的三个环节出了状况。第一项确认 SSH 服务在跑。systemctl status sshd看是不是active (running)。如果没起来systemctl start sshd启动systemctl enable sshd设为开机自启。CentOS 7 最小化安装默认是装了 openssh-server 的但如果当时软件选择里勾了什么奇怪的组合也可能没装。第二项确认 22 端口在监听。ss -tlnp | grep 22或者netstat -tlnp | grep 22netstat 需要 net-tools。输出里应该能看到0.0.0.0:22或者:::22。如果只监听在127.0.0.1:22那外部连不进来需要检查 sshd_config 里的ListenAddress配置。第三项防火墙。CentOS 7 默认开 firewalld虽然它默认放行 ssh 服务但如果你手动改过规则或者装了什么会改防火墙的软件可能就被挡了。快速验证的办法是systemctl stop firewalld临时关掉再试如果通了就说明是防火墙问题然后应该去加规则而不是长期关着。加规则的方式是firewall-cmd --permanent --add-servicessh然后firewall-cmd --reload。生产环境不建议直接systemctl disable firewalld虽然很多教程都这么教——练习环境图省事可以但你要知道这是省事不是规范。Xshell 里的配置就简单了新建会话协议选 SSH主机填虚拟机的 IP端口 22用户名填你创建的那个普通用户。第一次连接会弹主机密钥确认接受就行。如果你想用 root 直连得先去/etc/ssh/sshd_config里把PermitRootLogin改成yes然后重启 sshd但前面说过不建议日常用 root 直连。6.3 装 open-vm-tools 与打快照的时机Linux 虚拟机装完之后有两件提升体验的事值得做。第一件是装open-vm-tools它是 VMware 官方推荐的虚拟机增强工具开源版本通过 yum 就能装yum install -y open-vm-tools open-vm-tools-desktop。装了之后能获得三个明显好处分辨率自适应窗口大小不用再被固定的小屏幕折磨、宿主机和虚拟机之间复制粘贴文本、鼠标在两边自由切换不需要按快捷键。桌面版多装一个open-vm-tools-desktop命令行版只装前一个就够。第二件是打快照。快照的作用是给虚拟机当前状态拍一张照后面无论你怎么折腾随时能回滚到拍照时的状态。这个功能救过我无数次——比如试着改 SELinux 配置把系统搞崩了、装某个软件把依赖搞乱了有快照就能一键回到干净状态不用重装。打快照的时机很有讲究。我的习惯是分三个节点系统刚装完、网络配通之后打一个基线快照每装完一批基础环境比如 JDK、Docker、数据库打一个快照在做有风险的操作改内核参数、升级系统、装来源不明的软件之前打一个临时快照。快照本身会占用磁盘空间而且快照链太长会拖慢磁盘性能所以临时快照用完记得合并或者删除。基线快照可以长期保留几个别一直堆。7. CentOS 7 停更之后的 yum 换源与常用初始化CentOS 7 已经在 2024 年 6 月 30 日结束了生命周期官方仓库不再更新如果你用的是原版 ISO装完第一次执行yum install大概率会报Could not resolve host: mirrorlist.centos.org或者连接超时。这不是你的网络配错了而是源地址本身已经失效必须换到归档源。7.1 换成 vault 归档源的三条命令换源的核心思路是把仓库文件里的mirrorlist注释掉把baseurl指向归档地址。以阿里云归档为例cd /etc/yum.repos.d/ cp CentOS-Base.repo CentOS-Base.repo.bak sed -i s/^mirrorlist/#mirrorlist/ CentOS-Base.repo sed -i s|^#baseurlhttp://mirror.centos.org/centos/$releasever|baseurlhttps://mirrors.aliyun.com/centos-vault/7.9.2009| CentOS-Base.repo yum clean all yum makecache这里有一个细节值得说清楚为什么要把$releasever换成写死的7.9.2009。因为在归档目录里7.9.2009才是真实存在的版本目录而7这个符号链接在部分归档站上不一定存在用$releasever展开成7之后会 404。所以换源的时候干脆把完整版本号写死最稳。换完之后跑一次yum makecache如果能看到下载元数据的过程并且没有报错说明源已经生效。之后yum install、yum update就都能用了。只是要注意因为仓库不再更新你能装的还是 2024 年 6 月之前的那批包新版本软件需要走第三方源或者官方归档的 extras 目录。对于学习和练习来说这些包完全够用。如果你的虚拟机在内网、完全不能访问外网还有个本地源方案把 DVD 的 ISO 文件挂载到虚拟机的光驱上然后在系统里挂载并配置本地仓库。mkdir -p /media/cdrom mount /dev/sr0 /media/cdrom然后新建/etc/yum.repos.d/local.repo内容里baseurlfile:///media/cdromenabled1gpgcheck0。这样 yum 会从本地光盘读取软件包不依赖网络。缺点是只有 DVD 里带的那批包装点常规软件没问题想要 Docker 这类不在光盘里的东西还是得联网。7.2 装完之后顺手做的几项基础配置系统装完、网络通了、源换好了接下来有几步基础初始化做了之后后面用起来会舒服很多。这些都是我每次都做的你可以按需取舍。第一项是设置时区。timedatectl set-timezone Asia/Shanghai然后timedatectl确认。时区不对会导致日志时间差八小时排查问题时很误导人。相应的时间同步服务 CentOS 7 用的是 chronyyum install -y chrony之后systemctl enable --now chronyd就行。第二项是改主机名。hostnamectl set-hostname node01同时记得改/etc/hosts里对应的那行把127.0.0.1或者原来的名字映射改掉。这个在多机集群练习里特别重要因为很多中间件比如 Hadoop、Kafka会依赖主机名解析。第三项是关 SELinux。getenforce看当前状态如果是 Enforcing临时关闭用setenforce 0永久关闭要改/etc/selinux/config里的SELINUXdisabled然后重启。这里必须说清楚SELinux 是一套很有价值的安全机制关掉它是为了减少学习阶段的干扰因为很多服务的默认配置在 Enforcing 下会因为权限上下文不对而启动失败报错信息又非常晦涩。生产环境正确的做法是配置合适的策略而不是一关了之。练习阶段关掉能让你专注在要学的东西上但心里要清楚这是权宜之计。第四项是配置中文字符集。如果安装时选了英文后面想显示中文可以yum install -y kde-l10n-Chinese之类的语言包然后localectl set-locale LANGzh_CN.UTF-8。不过说实话服务器环境用英文更省心因为报错信息、日志、文档都是英文的中英混杂反而容易出乱码问题。我的建议是命令行环境保持英文需要图形界面看中文的话就在桌面环境里单独配。第五项如果你打算在这台虚拟机上跑 Docker那么前面提到的虚拟化 Intel VT-x/EPT必须勾上否则 Docker 起不来或者报Operation not permitted。检查方法是在虚拟机里执行grep -E vmx|svm /proc/cpuinfo如果有输出说明嵌套虚拟化生效了。装了 Docker 之后日常操作还要注意磁盘因为镜像层会很快占满根分区养成定期docker system prune的习惯。另外 CentOS 7 的内核是 3.10比较老跑一些新的容器运行时或者 Kubernetes 版本会有兼容性要求选版本的时候留个心眼。最后再分享一个我踩过的坑给虚拟机配静态 IP 之后如果哪天你把宿主机的网段改了比如换了路由器网段从192.168.10.x变成192.168.1.x虚拟机会彻底失联因为网关192.168.10.2已经不存在了。这时候只能进虚拟机控制台改配置。所以每次更换网络环境前先想一下有没有正在用静态 IP 的虚拟机。
返回列表