ESXi安装CentOS 7.9全流程指南:从虚拟机创建到性能调优
1. 项目概述:为什么要在ESXi上安装CentOS?
如果你手头有一台闲置的服务器,或者正在为公司搭建内部测试环境,那么“ESXi安装CentOS”这个组合几乎是绕不开的经典操作。我从业十多年,从物理机直接装系统,到后来全面转向虚拟化,ESXi加CentOS这套组合拳打了不下上百次。它不仅仅是把两个软件装在一起那么简单,背后代表的是一套成熟、稳定且高效的企业级虚拟化与服务器操作系统部署方案。
简单来说,VMware ESXi是一个“裸机”虚拟化管理程序,你可以把它理解为一套极度精简、专门用来创建和管理虚拟机的操作系统。它直接安装在物理服务器的硬件上,不依赖任何底层操作系统,因此资源开销极小,性能几乎无损。而CentOS,作为曾经红帽企业版Linux(RHEL)的免费、开源克隆,以其无与伦比的稳定性和长期支持,在服务器领域占据了半壁江山,尤其受运维和开发人员的青睐。
那么,把CentOS装到ESXi上,到底解决了什么问题?第一,资源最大化利用。一台物理服务器可以同时运行多个CentOS虚拟机,分别承担Web服务、数据库、文件存储等不同角色,硬件利用率从过去的10%-20%飙升到70%以上。第二,环境隔离与快速部署。开发、测试、生产环境可以完全隔离,互不干扰;通过模板功能,几分钟就能克隆出一个全新的、配置一致的CentOS系统,极大提升了运维效率。第三,高可用与灵活迁移。ESXi的高级功能配合CentOS的稳定性,可以实现虚拟机在物理主机间的动态迁移、故障自动切换,保障业务连续性。
这篇文章,就是为你拆解这个过程中的每一个关键步骤、技术选型背后的逻辑,以及我踩过的那些坑。无论你是刚接触虚拟化的新手,还是想优化现有部署流程的老手,都能在这里找到可以直接“抄作业”的实操指南和避坑心得。
2. 前期准备:镜像、环境与关键决策
动手安装之前,充分的准备能让你事半功倍,避免在安装过程中手忙脚乱。这个阶段的核心是“选对”和“备齐”。
2.1 CentOS镜像选择:版本、架构与来源的权衡
面对网络上琳琅满目的CentOS镜像,直接下载第一个链接往往是灾难的开始。我的选择逻辑基于三个维度:生命周期、硬件兼容性和用途。
首先,生命周期是首要考虑因素。CentOS项目本身已经转向CentOS Stream,传统的CentOS Linux 8已于2021年底停止维护,CentOS Linux 7也将在2024年6月结束其生命周期。对于全新的生产环境,我强烈建议考虑替代方案,如Rocky Linux或AlmaLinux,它们是RHEL的1:1二进制兼容分支,继承了CentOS的衣钵。但如果你的需求是学习、测试,或者现有环境必须使用CentOS 7,那么选择最新的CentOS 7.9 Minimal ISO是稳妥的。对于本文,我们将以CentOS 7.9为例进行演示,其核心逻辑同样适用于其他RHEL系发行版。
其次,架构选择。99%的x86服务器都是64位架构,因此务必选择x86_64版本。i386是32位版本,除非你有特殊的古董硬件或软件依赖,否则不要碰。
最后,镜像类型。我永远推荐Minimal(最小化)版本。它只包含最基础的系统组件,没有图形界面,体积小(约1GB),安全漏洞面少,非常适合服务器环境。你完全可以在安装后,通过yum命令按需安装任何软件包。相反,DVD或Everything镜像动辄8-9GB,包含大量你可能永远用不到的软件,不仅下载慢,安装耗时,还增加了不必要的安全风险。
实操心得:镜像验证下载完ISO文件后,一定要校验SHA256或MD5值。从非官方镜像站下载时,文件损坏或被篡改的风险虽然低,但一旦发生,会导致安装过程中出现不可预知的错误,排查起来极其痛苦。官方会提供校验文件,用
sha256sum CentOS-7-x86_64-Minimal-2009.iso命令比对一下,花不了30秒,却能避免几小时的折腾。
2.2 ESXi主机环境确认
在将CentOS镜像上传到ESXi之前,你需要确保ESXi主机本身处于健康状态。
- 访问管理界面:通过浏览器访问ESXi主机的IP地址,使用root账户登录。确保网络通畅,Web界面响应正常。
- 检查存储空间:进入“存储”选项卡,查看你的主数据存储(通常是
datastore1)是否有足够的剩余空间。一个干净的CentOS 7 Minimal虚拟机,加上交换空间,预留20-25GB是一个比较安全的起步值。如果未来要部署大型应用,可以预留更多。 - 网络配置确认:进入“网络”选项卡,确保已经配置了至少一个虚拟交换机(vSwitch)和端口组。通常,ESXi安装后会有一个名为
VM Network的端口组,虚拟机通过它连接到物理网络。记下这个端口组的名称,创建虚拟机时会用到。 - 许可证状态(非必需但建议):虽然ESXi免费版功能足够用于学习和测试,但一些高级功能如vMotion、集中备份API会被限制。如果你的环境用于生产,一个合法的许可证能解锁全部能力。在“管理”->“许可”中查看当前状态。
2.3 创建虚拟机的核心参数规划
点击“创建/注册虚拟机”后,你会面临一系列选择。这里每一个参数都影响着虚拟机的性能和功能。
- 兼容性:通常选择ESXi主机当前版本或最新的兼容版本。选择更高版本可以确保虚拟机未来能迁移到更新的ESXi主机上,但可能无法在旧版本上运行。对于CentOS 7,选择ESXi 6.7或7.0的兼容性即可。
- 客户机操作系统系列:选择“Linux”。
- 客户机操作系统版本:这里有一个关键坑点。ESXi的列表里可能有“CentOS 4/5/6/7 (64位)”或“Red Hat Enterprise Linux 7 (64位)”。务必选择“Red Hat Enterprise Linux 7 (64位)”或更精确的版本。因为CentOS是RHEL的克隆,VMware的虚拟化驱动和优化补丁主要是针对RHEL认证的。选择正确的版本,ESXi会自动为虚拟机安装最适合的VMware Tools(或Open VM Tools),这对性能(如网卡、磁盘驱动)和功能(如时间同步、优雅关机)至关重要。如果选“其他Linux”,可能会缺失这些优化。
- 存储:选择你之前检查过有足够空间的数据存储。
- 虚拟硬件:这是性能调优的核心。
- CPU:根据负载分配核心。对于轻量级测试,1-2个核心足够。对于生产应用,建议至少2核。关键是开启“虚拟化CPU性能计数器”和“硬件虚拟化”支持(如果主机CPU支持VT-x/AMD-V),这能显著提升虚拟机内运行的性能,特别是对于需要在虚拟机内再运行虚拟化软件(如Docker、KVM)的场景。
- 内存:CentOS 7 Minimal在空闲时大约占用300-400MB内存。建议分配至少1GB(1024MB)用于基本运行。对于运行中间件(如Tomcat、MySQL),建议从2GB起步。预留所有客户机内存这个选项,除非你确定要超量分配内存,否则不要勾选,它会导致ESXi启动时就为虚拟机锁定物理内存,影响其他虚拟机调度。
- 硬盘:选择“创建新虚拟磁盘”。大小建议20GB以上,类型选择“Thin Provision”(精简置备)。这是另一个重要选择:精简盘按需占用物理存储,一开始可能只占几百MB,随着虚拟机内文件增多而增长;厚置备则会立刻占满你设定的所有空间。精简盘能极大提高存储利用率。控制器类型保持默认的“LSI Logic SAS”即可,兼容性最好。
- CD/DVD驱动器:选择“数据存储ISO文件”,然后点击“浏览”,上传你下载好的CentOS Minimal ISO镜像,并选中它。务必在“连接”处打勾,否则虚拟机启动时无法从光盘引导。
- 网络适配器:选择你确认好的端口组(如
VM Network)。适配器类型选择“VMXNET 3”。这是VMware提供的半虚拟化网卡驱动,性能远优于模拟的E1000或E1000e网卡,延迟更低,吞吐量更高。这是提升网络性能的关键一步。
规划好这些,点击“完成”,你的虚拟机“空壳”就创建好了。接下来,就是给这个空壳注入灵魂——安装CentOS系统。
3. CentOS系统安装与初始配置详解
虚拟机创建完毕后,打开电源,你就会进入熟悉的CentOS安装界面。这个过程虽然图形化,但有几个关键步骤的配置,直接影响系统后期的可用性和安全性。
3.1 安装过程核心步骤与参数解析
语言与键盘:建议安装界面选择“中文”或“English”,但系统语言我强烈建议选择“English (United States)”。这可以避免后续在终端、日志文件中出现乱码,对于编写脚本和排查问题有百利而无一害。键盘布局根据实际情况选择。
安装信息摘要:这是配置的核心页面。
- 日期和时间:点击进入,确保时区正确(亚洲/上海)。务必打开“网络时间”开关,并选择一个可用的NTP服务器(如
cn.pool.ntp.org)。让系统时间与网络同步,是分布式系统、日志分析、证书验证的基础。 - 软件选择:这是最小化安装的精髓所在。默认选中的就是“Minimal Install”(最小安装),不要动。我们就是要一个最干净的系统。所有需要的软件包,都可以在系统安装后用
yum命令精准安装。 - 安装目的地:点击进入磁盘分区界面。对于新手,直接使用“自动配置分区”是最简单的。但我想分享一下手动分区的思路,这对于生产环境更有意义:
/boot: 引导分区,500MB足够,文件系统xfs或ext4。swap: 交换分区,大小通常是物理内存的1-2倍,但若内存很大(如32GB以上),8-16GB也足够。服务器如果内存充足,甚至可以不要swap,但保留一个小swap(如4GB)可以应对内存突增的极端情况。/: 根分区,剩余所有空间,文件系统xfs(CentOS 7默认)。XFS在处理大文件时性能更好,也是默认推荐。- 重要提示:在虚拟化环境中,通常不建议为
/home、/var等单独分区,除非有明确的容量规划需求。因为虚拟磁盘本身可以很方便地在线扩容,而LVM(逻辑卷管理)的配置在初始安装时略显复杂。对于入门,一个大的根分区/管理起来最方便。
- KDUMP:这是一个内核崩溃转储机制。对于调试极端内核错误有用,但会预留一部分内存(默认是物理内存的
160MB + 2*运行中内核大小)。在内存紧张的测试环境中,可以**取消勾选“启用kdump”**以释放这部分内存。生产环境建议保留。 - 网络和主机名:这是安装后能否远程访问的关键!点击进入,在顶部打开以太网连接开关(通常显示
ens192或eth0,具体名称取决于VMXNET 3驱动)。然后点击右下角的“配置...”。- “常规”选项卡:勾选“当可用时自动连接到这个网络”。
- “IPv4设置”选项卡:方法选择“手动”。点击“添加”,填写:
- 地址: 你规划给这台CentOS虚拟机的静态IP,例如
192.168.1.100。 - 子网掩码: 通常是
255.255.255.0(对应CIDR/24)。 - 网关: 你的网络网关,例如
192.168.1.1。
- 地址: 你规划给这台CentOS虚拟机的静态IP,例如
- DNS服务器: 在下方填写,例如
114.114.114.114和8.8.8.8。 - 填写后点击“保存”。回到上一页,在主机名处输入你想要的名称,例如
centos7-vm。最后点击“应用”。
- 安全策略: 初学者可以先不配置,选择“无”。后续可以通过
firewalld和selinux进行更精细的控制。
- 日期和时间:点击进入,确保时区正确(亚洲/上海)。务必打开“网络时间”开关,并选择一个可用的NTP服务器(如
ROOT密码与用户创建:
- 设置一个强壮的root密码。在虚拟机环境中,虽然相对安全,但好习惯要从一开始养成。
- 强烈建议创建一个普通用户,并赋予其sudo权限。在“用户创建”部分,输入用户名、全名,并设置密码。勾选“将此用户设为管理员”,这相当于将其加入
wheel组,拥有sudo权限。日常使用中,应尽量避免直接使用root登录,以降低误操作风险。
开始安装: 确认所有信息无误后,点击“开始安装”。安装过程大约需要5-15分钟,取决于你的磁盘速度。
3.2 首次启动与必须的初始化配置
安装完成,重启系统后,使用你创建的普通用户登录。接下来有几个初始化操作是必须的。
更新系统: 第一件事就是更新系统到最新状态,打上安全补丁。
sudo yum update -y这个命令会更新所有已安装的软件包。
-y参数表示自动回答“yes”,避免中途等待。更新完成后,通常建议重启一次:sudo reboot。安装Open VM Tools: 还记得创建虚拟机时我们选的“RHEL 7”吗?这通常会让ESXi自动尝试安装VMware Tools。但在CentOS 7中,更推荐使用开源版本的Open VM Tools,它由VMware社区维护,通过系统包管理器管理,更新更方便。
sudo yum install -y open-vm-tools对于需要图形界面的情况(虽然服务器不推荐),可以安装
open-vm-tools-desktop。安装后无需重启,工具会自动运行。你可以通过systemctl status vmtoolsd检查服务状态。Open VM Tools提供了时间同步、优雅关机、主机-客户机复制粘贴(仅桌面版)等功能。配置SSH服务(以便远程连接):
- 检查SSH服务是否已安装并运行:
sudo systemctl status sshd。Minimal安装默认应该已经安装了。 - 如果需要从外部网络访问,可能需要配置防火墙(如果之前没关闭):
sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload - 为了安全,可以修改SSH配置文件
/etc/ssh/sshd_config,禁用root密码登录:找到PermitRootLogin,将其改为PermitRootLogin no。然后重启SSH服务:sudo systemctl restart sshd。
- 检查SSH服务是否已安装并运行:
完成以上步骤,一个基础、干净、可远程管理的CentOS服务器就在你的ESXi上准备就绪了。
4. 网络与存储高级配置
基础安装完成后,为了满足更复杂的应用场景,我们通常需要对网络和存储进行一些高级配置。这部分内容能让你更好地掌控虚拟机。
4.1 多网卡配置与网络策略
一台虚拟机可能需要连接多个网络,比如一个网卡走业务流量(VM Network),另一个网卡走存储流量(如连接iSCSI或NFS的专用网络)。
在ESXi中添加虚拟网卡: 关闭CentOS虚拟机。在ESXi Web界面,编辑虚拟机设置,点击“添加网络适配器”。为新适配器选择另一个端口组(例如,你事先为存储网络创建的
Storage Network)。适配器类型同样建议选择VMXNET 3。添加后启动虚拟机。在CentOS中识别并配置新网卡:
- 使用
ip addr或nmcli device status命令查看新网卡名称,通常是ens224、ens256之类的。 - 使用
nmcli(NetworkManager命令行工具)配置是最新的推荐方式。例如,为ens224配置静态IP:sudo nmcli connection add type ethernet con-name static-ens224 ifname ens224 ipv4.addresses 192.168.2.100/24 ipv4.gateway 192.168.2.1 ipv4.dns “114.114.114.114” ipv4.method manual sudo nmcli connection up static-ens224 - 你也可以编辑传统的网络配置文件,如
/etc/sysconfig/network-scripts/ifcfg-ens224,但CentOS 8/RHEL 8以后更推荐nmcli。
- 使用
4.2 虚拟磁盘扩容与LVM管理
随着业务增长,根分区/空间不足是常见问题。在ESXi虚拟化环境下,扩容非常方便。
场景:假设我们当初分配的20GB磁盘不够用了,需要扩容到50GB。
在ESXi中扩展虚拟磁盘:
- 关闭CentOS虚拟机。
- 编辑虚拟机设置,找到需要扩容的硬盘。将“大小”从20GB修改为50GB。注意,这里只是扩大了虚拟磁盘这个“容器”的容量,操作系统内部还无法使用新增的空间。
在CentOS中识别并分配新增空间:
- 启动CentOS虚拟机,使用
lsblk命令查看磁盘情况。你会发现sda磁盘总大小变成了50G,但分区sda2(假设是你的根分区所在)和其上的逻辑卷可能还是20G。 - 我们需要使用
fdisk或parted工具来调整分区表。这是一个有风险的操作,务必先备份重要数据! - 这里以
fdisk为例(假设磁盘为/dev/sda,根分区在/dev/sda2):sudo fdisk /dev/sda- 输入
p打印分区表,记下/dev/sda2的起始扇区。 - 输入
d删除分区2。 - 输入
n创建新分区,选择主分区2,起始扇区输入刚才记下的值(必须完全一致!),结束扇区直接回车(使用默认最大值,即占用所有剩余空间)。 - 输入
t设置分区类型,分区号2,类型代码保持8e(Linux LVM)。 - 输入
w写入并退出。
- 输入
- 重启虚拟机:
sudo reboot。
- 启动CentOS虚拟机,使用
扩展物理卷、卷组和逻辑卷:
- 重启后,通知系统重读分区表:
sudo partprobe /dev/sda。 - 扩展物理卷(PV):
sudo pvresize /dev/sda2。 - 查看卷组(VG)名:
sudo vgs,假设为centos。 - 查看逻辑卷(LV)名:
sudo lvs,假设为root。 - 将卷组中的所有空闲空间都分配给根逻辑卷:
sudo lvextend -l +100%FREE /dev/centos/root。 - 最后,调整文件系统大小以使用新的空间。对于XFS文件系统:
sudo xfs_growfs /。对于ext4文件系统:sudo resize2fs /dev/centos/root。 - 使用
df -h命令检查,根分区/的容量应该已经变为扩容后的大小。
- 重启后,通知系统重读分区表:
注意事项:分区调整的风险使用
fdisk删除重建分区是高风险操作,一旦起始扇区输错,数据可能全部丢失。对于生产环境,如果可能,应在规划初期就使用LVM,这样后续只需在ESXi扩容后,执行pvresize、lvextend和xfs_growfs三步即可,无需动分区表,安全得多。本文演示的分区表调整方法,更适用于初期未使用LVM或使用标准分区的场景。
5. 性能调优与安全加固
系统跑起来之后,我们还需要从性能和安全性两个维度对其进行打磨,让它更健壮、更高效。
5.1 针对虚拟化环境的性能优化
磁盘I/O调度器: 虚拟磁盘的I/O特性与物理磁盘不同。对于ESXi后端是SSD存储的情况,将CentOS内的I/O调度器设置为
noop或deadline可能获得更好的性能。- 查看当前调度器:
cat /sys/block/sda/queue/scheduler。输出类似[mq-deadline] kyber bfq none。 - 临时修改为
none(相当于noop):echo ‘none’ | sudo tee /sys/block/sda/queue/scheduler。 - 永久修改:编辑
/etc/default/grub,在GRUB_CMDLINE_LINUX变量中添加elevator=none,然后运行sudo grub2-mkconfig -o /boot/grub2/grub.cfg并重启。注意:此优化需根据实际存储类型测试效果,并非绝对。
- 查看当前调度器:
时间同步: 确保Open VM Tools的时间同步功能正常工作。同时,配置
chronyd服务作为辅助。- 检查
vmtoolsd服务状态:systemctl status vmtoolsd。 - 安装并配置chrony:
sudo yum install -y chrony。编辑/etc/chrony.conf,添加可靠的NTP服务器,如server cn.pool.ntp.org iburst。然后启动并启用服务:sudo systemctl enable --now chronyd。
- 检查
内存透明大页(Transparent Hugepages): 对于某些数据库(如Oracle、MongoDB),可能需要调整透明大页的设置。查看当前状态:
cat /sys/kernel/mm/transparent_hugepage/enabled。如果需要禁用,可以修改内核参数。
5.2 基础安全加固措施
防火墙(firewalld)配置: CentOS 7默认使用firewalld。只开放必要的端口。
sudo firewall-cmd --permanent --add-service=ssh # 开放SSH sudo firewall-cmd --permanent --add-service=http # 开放Web服务(如需要) sudo firewall-cmd --permanent --add-service=https # 开放HTTPS(如需要) sudo firewall-cmd --reload sudo firewall-cmd --list-all # 查看当前规则SELinux: 这是一个强大的强制访问控制安全模块。对于新手,如果它导致应用异常,可以先将其模式改为“宽容”模式以观察日志:
sudo setenforce 0。查看当前模式:getenforce。永久修改需编辑/etc/selinux/config,将SELINUX=enforcing改为SELINUX=permissive或disabled(不推荐禁用)。生产环境建议在理解规则后保持开启。SSH加固:
- 修改端口:编辑
/etc/ssh/sshd_config,更改Port 22为其他端口(如Port 2345)。 - 禁用密码登录,使用密钥对:这是最重要的安全措施之一。在本地生成密钥对(
ssh-keygen),将公钥(id_rsa.pub)内容添加到CentOS的~/.ssh/authorized_keys文件中。然后在sshd_config中设置PasswordAuthentication no和PubkeyAuthentication yes。 - 使用
fail2ban防御暴力破解:sudo yum install -y epel-release && sudo yum install -y fail2ban。
- 修改端口:编辑
定期更新: 配置自动安全更新。安装
yum-cron:sudo yum install -y yum-cron。编辑/etc/yum/yum-cron.conf,将apply_updates = no改为apply_updates = yes,并配置邮件通知。然后启用服务:sudo systemctl enable --now yum-cron。
6. 常见问题与故障排查实录
即使按照步骤操作,也难免会遇到问题。这里记录了几个我遇到的高频问题及其解决方法。
6.1 安装后无法联网
这是最常见的问题,症状是ping不通网关,yum update失败。
- 排查步骤:
- 检查ESXi网络:确认虚拟机连接的端口组是否正确,且该端口组所属的vSwitch已正确连接物理网卡并配置了VLAN(如果需要)。
- 检查CentOS内网卡状态:
ip addr show。看看网卡(如ens192)是否有分配到IP地址(inet字段)。如果没有,可能是NetworkManager没启动或配置错误。 - 检查NetworkManager服务:
systemctl status NetworkManager。确保它是active (running)状态。 - 检查配置文件:如果是手动配置的静态IP,检查
/etc/sysconfig/network-scripts/ifcfg-ens192文件,确保ONBOOT=yes,BOOTPROTO=static或none,IP、网关、子网掩码、DNS配置正确。 - 使用nmcli诊断:
nmcli connection show查看所有连接,nmcli device status查看设备状态。可以尝试sudo nmcli connection up ‘System ens192’(连接名可能不同)来激活连接。 - 防火墙干扰:临时关闭防火墙测试:
sudo systemctl stop firewalld。如果网络恢复,说明是防火墙规则问题。
6.2 虚拟机启动卡在“Loading /boot/vmlinuz-xxx”或黑屏
- 可能原因1:镜像损坏。这就是为什么强调要校验SHA256。重新下载并校验镜像,在ESXi中重新挂载。
- 可能原因2:虚拟硬件兼容性问题。尝试将虚拟机的“兼容性”改为更低的ESXi版本(如从7.0改为6.7)。编辑虚拟机设置,在“虚拟机选项”->“高级”->“编辑配置”中,可以添加或修改参数,但对于启动问题,优先尝试改兼容性。
- 可能原因3:EFI与BIOS引导模式。创建虚拟机时,默认是BIOS引导。如果你下载的镜像或某些特殊配置需要UEFI,可以在虚拟机设置的“虚拟机选项”->“引导选项”中,将“固件”从“BIOS”改为“EFI”。反之亦然。
6.3 yum update 失败,提示“Could not resolve host”或“Cannot retrieve repository metadata”
- 原因:DNS解析失败或网络不通,导致无法连接CentOS官方镜像站或EPEL仓库。
- 解决:
- 首先
ping 114.114.114.114,如果能通,说明网络是通的,问题在DNS。 - 检查
/etc/resolv.conf文件,确保里面有正确的nameserver配置,如nameserver 114.114.114.114。注意,如果使用了NetworkManager,这个文件可能会被覆盖。更稳妥的方法是通过nmcli修改连接配置的DNS:sudo nmcli connection modify ‘你的连接名’ ipv4.dns “114.114.114.114 8.8.8.8”。 - 如果使用的是公司内网,可能需要配置代理。可以在
/etc/yum.conf文件中添加proxy=http://your-proxy-server:port。
- 首先
6.4 忘记root密码
在ESXi环境下,重置虚拟机内的root密码比物理机方便。
- 在ESXi界面,右键点击该CentOS虚拟机,选择“电源”->“关闭”(如果它正在运行)。
- 编辑虚拟机设置,在“虚拟机选项”->“引导选项”中,勾选“下次引导时强制进入BIOS设置屏幕”。(或者,你也可以在开机时快速按ESC键,但虚拟机启动太快,ESXi的Web控制台操作更可靠)。
- 启动虚拟机。它会进入GRUB引导菜单。
- 按键盘上的
e键编辑第一项(通常是“CentOS Linux ...”)。 - 找到以
linux16或linux开头的行。将光标移到该行末尾。 - 在行尾添加
rd.break(注意前面有个空格)。这个参数会让系统在初始RAM磁盘(initrd)阶段中断,进入紧急救援shell。 - 按
Ctrl+X或F10用这个修改后的配置启动。 - 系统会启动到一个简单的shell,根文件系统以只读方式挂载在
/sysroot。 - 执行以下命令:
mount -o remount,rw /sysroot # 重新挂载为读写 chroot /sysroot # 切换根目录到原来的系统 passwd root # 修改root密码,输入两次新密码 touch /.autorelabel # 对于SELinux开启的系统,必须创建此文件以重新标记文件上下文 exit # 退出chroot环境 reboot # 重启 - 虚拟机重启后,使用新密码登录即可。完成后,务必回到ESXi虚拟机设置中,取消“强制进入BIOS”的勾选。
6.5 磁盘空间满,导致系统异常
这是运维中的常态。除了之前讲的扩容,日常监控很重要。
- 快速定位大文件:
sudo du -sh /* 2>/dev/null | sort -rh | head -10 # 查看根目录下各文件夹大小 sudo du -ah /var/log 2>/dev/null | sort -rh | head -20 # 查看/var/log目录下大文件,日志常是元凶 - 清理yum缓存:
sudo yum clean all。 - 清理日志:使用
journalctl管理systemd日志,可以设置大小限制。对于老的/var/log/messages等,可以使用logrotate服务自动管理。手动清理需谨慎,避免删除正在被进程打开的文件。可以使用truncate命令清空大日志文件:sudo truncate -s 0 /var/log/somelarge.log。
踩过这些坑之后,你会发现ESXi上运行CentOS的稳定性和便利性。虚拟化的优势就在于,你可以随时为虚拟机拍快照(Snapshot),在进行任何重大变更(如系统升级、配置调整)前,先拍一个快照,如果操作失败,可以瞬间回滚到之前的状态,这是物理机难以比拟的便利。