ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

ESXi安装CentOS 7.9全流程指南:从虚拟机创建到性能调优

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命令按需安装任何软件包。相反,DVDEverything镜像动辄8-9GB,包含大量你可能永远用不到的软件,不仅下载慢,安装耗时,还增加了不必要的安全风险。

实操心得:镜像验证下载完ISO文件后,一定要校验SHA256或MD5值。从非官方镜像站下载时,文件损坏或被篡改的风险虽然低,但一旦发生,会导致安装过程中出现不可预知的错误,排查起来极其痛苦。官方会提供校验文件,用sha256sum CentOS-7-x86_64-Minimal-2009.iso命令比对一下,花不了30秒,却能避免几小时的折腾。

2.2 ESXi主机环境确认

在将CentOS镜像上传到ESXi之前,你需要确保ESXi主机本身处于健康状态。

  1. 访问管理界面:通过浏览器访问ESXi主机的IP地址,使用root账户登录。确保网络通畅,Web界面响应正常。
  2. 检查存储空间:进入“存储”选项卡,查看你的主数据存储(通常是datastore1)是否有足够的剩余空间。一个干净的CentOS 7 Minimal虚拟机,加上交换空间,预留20-25GB是一个比较安全的起步值。如果未来要部署大型应用,可以预留更多。
  3. 网络配置确认:进入“网络”选项卡,确保已经配置了至少一个虚拟交换机(vSwitch)和端口组。通常,ESXi安装后会有一个名为VM Network的端口组,虚拟机通过它连接到物理网络。记下这个端口组的名称,创建虚拟机时会用到。
  4. 许可证状态(非必需但建议):虽然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 安装过程核心步骤与参数解析

  1. 语言与键盘:建议安装界面选择“中文”或“English”,但系统语言我强烈建议选择“English (United States)”。这可以避免后续在终端、日志文件中出现乱码,对于编写脚本和排查问题有百利而无一害。键盘布局根据实际情况选择。

  2. 安装信息摘要:这是配置的核心页面。

    • 日期和时间:点击进入,确保时区正确(亚洲/上海)。务必打开“网络时间”开关,并选择一个可用的NTP服务器(如cn.pool.ntp.org)。让系统时间与网络同步,是分布式系统、日志分析、证书验证的基础。
    • 软件选择:这是最小化安装的精髓所在。默认选中的就是“Minimal Install”(最小安装),不要动。我们就是要一个最干净的系统。所有需要的软件包,都可以在系统安装后用yum命令精准安装。
    • 安装目的地:点击进入磁盘分区界面。对于新手,直接使用“自动配置分区”是最简单的。但我想分享一下手动分区的思路,这对于生产环境更有意义:
      • /boot: 引导分区,500MB足够,文件系统xfsext4
      • swap: 交换分区,大小通常是物理内存的1-2倍,但若内存很大(如32GB以上),8-16GB也足够。服务器如果内存充足,甚至可以不要swap,但保留一个小swap(如4GB)可以应对内存突增的极端情况。
      • /: 根分区,剩余所有空间,文件系统xfs(CentOS 7默认)。XFS在处理大文件时性能更好,也是默认推荐。
      • 重要提示:在虚拟化环境中,通常不建议为/home/var等单独分区,除非有明确的容量规划需求。因为虚拟磁盘本身可以很方便地在线扩容,而LVM(逻辑卷管理)的配置在初始安装时略显复杂。对于入门,一个大的根分区/管理起来最方便。
    • KDUMP:这是一个内核崩溃转储机制。对于调试极端内核错误有用,但会预留一部分内存(默认是物理内存的160MB + 2*运行中内核大小)。在内存紧张的测试环境中,可以**取消勾选“启用kdump”**以释放这部分内存。生产环境建议保留。
    • 网络和主机名这是安装后能否远程访问的关键!点击进入,在顶部打开以太网连接开关(通常显示ens192eth0,具体名称取决于VMXNET 3驱动)。然后点击右下角的“配置...”。
      • “常规”选项卡:勾选“当可用时自动连接到这个网络”。
      • “IPv4设置”选项卡:方法选择“手动”。点击“添加”,填写:
        • 地址: 你规划给这台CentOS虚拟机的静态IP,例如192.168.1.100
        • 子网掩码: 通常是255.255.255.0(对应CIDR/24)。
        • 网关: 你的网络网关,例如192.168.1.1
      • DNS服务器: 在下方填写,例如114.114.114.1148.8.8.8
      • 填写后点击“保存”。回到上一页,在主机名处输入你想要的名称,例如centos7-vm。最后点击“应用”。
    • 安全策略: 初学者可以先不配置,选择“无”。后续可以通过firewalldselinux进行更精细的控制。
  3. ROOT密码与用户创建

    • 设置一个强壮的root密码。在虚拟机环境中,虽然相对安全,但好习惯要从一开始养成。
    • 强烈建议创建一个普通用户,并赋予其sudo权限。在“用户创建”部分,输入用户名、全名,并设置密码。勾选“将此用户设为管理员”,这相当于将其加入wheel组,拥有sudo权限。日常使用中,应尽量避免直接使用root登录,以降低误操作风险。
  4. 开始安装: 确认所有信息无误后,点击“开始安装”。安装过程大约需要5-15分钟,取决于你的磁盘速度。

3.2 首次启动与必须的初始化配置

安装完成,重启系统后,使用你创建的普通用户登录。接下来有几个初始化操作是必须的。

  1. 更新系统: 第一件事就是更新系统到最新状态,打上安全补丁。

    sudo yum update -y

    这个命令会更新所有已安装的软件包。-y参数表示自动回答“yes”,避免中途等待。更新完成后,通常建议重启一次:sudo reboot

  2. 安装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提供了时间同步、优雅关机、主机-客户机复制粘贴(仅桌面版)等功能。

  3. 配置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

完成以上步骤,一个基础、干净、可远程管理的CentOS服务器就在你的ESXi上准备就绪了。

4. 网络与存储高级配置

基础安装完成后,为了满足更复杂的应用场景,我们通常需要对网络和存储进行一些高级配置。这部分内容能让你更好地掌控虚拟机。

4.1 多网卡配置与网络策略

一台虚拟机可能需要连接多个网络,比如一个网卡走业务流量(VM Network),另一个网卡走存储流量(如连接iSCSI或NFS的专用网络)。

  1. 在ESXi中添加虚拟网卡: 关闭CentOS虚拟机。在ESXi Web界面,编辑虚拟机设置,点击“添加网络适配器”。为新适配器选择另一个端口组(例如,你事先为存储网络创建的Storage Network)。适配器类型同样建议选择VMXNET 3。添加后启动虚拟机。

  2. 在CentOS中识别并配置新网卡

    • 使用ip addrnmcli device status命令查看新网卡名称,通常是ens224ens256之类的。
    • 使用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。

  1. 在ESXi中扩展虚拟磁盘

    • 关闭CentOS虚拟机。
    • 编辑虚拟机设置,找到需要扩容的硬盘。将“大小”从20GB修改为50GB。注意,这里只是扩大了虚拟磁盘这个“容器”的容量,操作系统内部还无法使用新增的空间。
  2. 在CentOS中识别并分配新增空间

    • 启动CentOS虚拟机,使用lsblk命令查看磁盘情况。你会发现sda磁盘总大小变成了50G,但分区sda2(假设是你的根分区所在)和其上的逻辑卷可能还是20G。
    • 我们需要使用fdiskparted工具来调整分区表。这是一个有风险的操作,务必先备份重要数据!
    • 这里以fdisk为例(假设磁盘为/dev/sda,根分区在/dev/sda2):
      sudo fdisk /dev/sda
      • 输入p打印分区表,记下/dev/sda2的起始扇区。
      • 输入d删除分区2
      • 输入n创建新分区,选择主分区2,起始扇区输入刚才记下的值(必须完全一致!),结束扇区直接回车(使用默认最大值,即占用所有剩余空间)。
      • 输入t设置分区类型,分区号2,类型代码保持8e(Linux LVM)。
      • 输入w写入并退出。
    • 重启虚拟机:sudo reboot
  3. 扩展物理卷、卷组和逻辑卷

    • 重启后,通知系统重读分区表: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扩容后,执行pvresizelvextendxfs_growfs三步即可,无需动分区表,安全得多。本文演示的分区表调整方法,更适用于初期未使用LVM或使用标准分区的场景。

5. 性能调优与安全加固

系统跑起来之后,我们还需要从性能和安全性两个维度对其进行打磨,让它更健壮、更高效。

5.1 针对虚拟化环境的性能优化

  1. 磁盘I/O调度器: 虚拟磁盘的I/O特性与物理磁盘不同。对于ESXi后端是SSD存储的情况,将CentOS内的I/O调度器设置为noopdeadline可能获得更好的性能。

    • 查看当前调度器: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并重启。注意:此优化需根据实际存储类型测试效果,并非绝对。
  2. 时间同步: 确保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
  3. 内存透明大页(Transparent Hugepages): 对于某些数据库(如Oracle、MongoDB),可能需要调整透明大页的设置。查看当前状态:cat /sys/kernel/mm/transparent_hugepage/enabled。如果需要禁用,可以修改内核参数。

5.2 基础安全加固措施

  1. 防火墙(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 # 查看当前规则
  2. SELinux: 这是一个强大的强制访问控制安全模块。对于新手,如果它导致应用异常,可以先将其模式改为“宽容”模式以观察日志:sudo setenforce 0。查看当前模式:getenforce。永久修改需编辑/etc/selinux/config,将SELINUX=enforcing改为SELINUX=permissivedisabled(不推荐禁用)。生产环境建议在理解规则后保持开启

  3. SSH加固

    • 修改端口:编辑/etc/ssh/sshd_config,更改Port 22为其他端口(如Port 2345)。
    • 禁用密码登录,使用密钥对:这是最重要的安全措施之一。在本地生成密钥对(ssh-keygen),将公钥(id_rsa.pub)内容添加到CentOS的~/.ssh/authorized_keys文件中。然后在sshd_config中设置PasswordAuthentication noPubkeyAuthentication yes
    • 使用fail2ban防御暴力破解:sudo yum install -y epel-release && sudo yum install -y fail2ban
  4. 定期更新: 配置自动安全更新。安装yum-cronsudo 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失败。

  • 排查步骤
    1. 检查ESXi网络:确认虚拟机连接的端口组是否正确,且该端口组所属的vSwitch已正确连接物理网卡并配置了VLAN(如果需要)。
    2. 检查CentOS内网卡状态ip addr show。看看网卡(如ens192)是否有分配到IP地址(inet字段)。如果没有,可能是NetworkManager没启动或配置错误。
    3. 检查NetworkManager服务systemctl status NetworkManager。确保它是active (running)状态。
    4. 检查配置文件:如果是手动配置的静态IP,检查/etc/sysconfig/network-scripts/ifcfg-ens192文件,确保ONBOOT=yesBOOTPROTO=staticnone,IP、网关、子网掩码、DNS配置正确。
    5. 使用nmcli诊断nmcli connection show查看所有连接,nmcli device status查看设备状态。可以尝试sudo nmcli connection up ‘System ens192’(连接名可能不同)来激活连接。
    6. 防火墙干扰:临时关闭防火墙测试: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仓库。
  • 解决
    1. 首先ping 114.114.114.114,如果能通,说明网络是通的,问题在DNS。
    2. 检查/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”
    3. 如果使用的是公司内网,可能需要配置代理。可以在/etc/yum.conf文件中添加proxy=http://your-proxy-server:port

6.4 忘记root密码

在ESXi环境下,重置虚拟机内的root密码比物理机方便。

  1. 在ESXi界面,右键点击该CentOS虚拟机,选择“电源”->“关闭”(如果它正在运行)。
  2. 编辑虚拟机设置,在“虚拟机选项”->“引导选项”中,勾选“下次引导时强制进入BIOS设置屏幕”。(或者,你也可以在开机时快速按ESC键,但虚拟机启动太快,ESXi的Web控制台操作更可靠)。
  3. 启动虚拟机。它会进入GRUB引导菜单。
  4. 按键盘上的e键编辑第一项(通常是“CentOS Linux ...”)。
  5. 找到以linux16linux开头的行。将光标移到该行末尾。
  6. 在行尾添加rd.break(注意前面有个空格)。这个参数会让系统在初始RAM磁盘(initrd)阶段中断,进入紧急救援shell。
  7. Ctrl+XF10用这个修改后的配置启动。
  8. 系统会启动到一个简单的shell,根文件系统以只读方式挂载在/sysroot
  9. 执行以下命令:
    mount -o remount,rw /sysroot # 重新挂载为读写 chroot /sysroot # 切换根目录到原来的系统 passwd root # 修改root密码,输入两次新密码 touch /.autorelabel # 对于SELinux开启的系统,必须创建此文件以重新标记文件上下文 exit # 退出chroot环境 reboot # 重启
  10. 虚拟机重启后,使用新密码登录即可。完成后,务必回到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),在进行任何重大变更(如系统升级、配置调整)前,先拍一个快照,如果操作失败,可以瞬间回滚到之前的状态,这是物理机难以比拟的便利。

返回列表