
1. 项目概述为什么要在ESXi上安装CentOS如果你手头有一台闲置的服务器或者正在为公司搭建内部测试环境那么“ESXi安装CentOS”这个组合几乎是绕不开的经典操作。我从业十多年从物理机直接装系统到后来全面转向虚拟化ESXi加CentOS这套组合拳打了不下上百次。它不仅仅是把两个软件装在一起那么简单背后代表的是一套成熟、稳定且高效的企业级虚拟化与服务器操作系统部署方案。简单来说VMware ESXi是一个“裸机”虚拟化管理程序你可以把它理解为一套极度精简、专门用来创建和管理虚拟机的操作系统。它直接安装在物理服务器的硬件上不依赖任何底层操作系统因此资源开销极小性能几乎无损。而CentOS作为曾经红帽企业版LinuxRHEL的免费、开源克隆以其无与伦比的稳定性和长期支持在服务器领域占据了半壁江山尤其受运维和开发人员的青睐。那么把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内存。建议分配至少1GB1024MB用于基本运行。对于运行中间件如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可以应对内存突增的极端情况。/ 根分区剩余所有空间文件系统xfsCentOS 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。DNS服务器 在下方填写例如114.114.114.114和8.8.8.8。填写后点击“保存”。回到上一页在主机名处输入你想要的名称例如centos7-vm。最后点击“应用”。安全策略 初学者可以先不配置选择“无”。后续可以通过firewalld和selinux进行更精细的控制。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-servicessh 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的专用网络。在ESXi中添加虚拟网卡 关闭CentOS虚拟机。在ESXi Web界面编辑虚拟机设置点击“添加网络适配器”。为新适配器选择另一个端口组例如你事先为存储网络创建的Storage Network。适配器类型同样建议选择VMXNET 3。添加后启动虚拟机。在CentOS中识别并配置新网卡使用ip addr或nmcli device status命令查看新网卡名称通常是ens224、ens256之类的。使用nmcliNetworkManager命令行工具配置是最新的推荐方式。例如为ens224配置静态IPsudo 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/sda2sudo fdisk /dev/sda输入p打印分区表记下/dev/sda2的起始扇区。输入d删除分区2。输入n创建新分区选择主分区2起始扇区输入刚才记下的值必须完全一致结束扇区直接回车使用默认最大值即占用所有剩余空间。输入t设置分区类型分区号2类型代码保持8eLinux LVM。输入w写入并退出。重启虚拟机sudo reboot。扩展物理卷、卷组和逻辑卷重启后通知系统重读分区表sudo partprobe /dev/sda。扩展物理卷PVsudo 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相当于noopecho ‘none’ | sudo tee /sys/block/sda/queue/scheduler。永久修改编辑/etc/default/grub在GRUB_CMDLINE_LINUX变量中添加elevatornone然后运行sudo grub2-mkconfig -o /boot/grub2/grub.cfg并重启。注意此优化需根据实际存储类型测试效果并非绝对。时间同步 确保Open VM Tools的时间同步功能正常工作。同时配置chronyd服务作为辅助。检查vmtoolsd服务状态systemctl status vmtoolsd。安装并配置chronysudo 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-servicessh # 开放SSH sudo firewall-cmd --permanent --add-servicehttp # 开放Web服务如需要 sudo firewall-cmd --permanent --add-servicehttps # 开放HTTPS如需要 sudo firewall-cmd --reload sudo firewall-cmd --list-all # 查看当前规则SELinux 这是一个强大的强制访问控制安全模块。对于新手如果它导致应用异常可以先将其模式改为“宽容”模式以观察日志sudo setenforce 0。查看当前模式getenforce。永久修改需编辑/etc/selinux/config将SELINUXenforcing改为SELINUXpermissive或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-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失败。排查步骤检查ESXi网络确认虚拟机连接的端口组是否正确且该端口组所属的vSwitch已正确连接物理网卡并配置了VLAN如果需要。检查CentOS内网卡状态ip addr show。看看网卡如ens192是否有分配到IP地址inet字段。如果没有可能是NetworkManager没启动或配置错误。检查NetworkManager服务systemctl status NetworkManager。确保它是active (running)状态。检查配置文件如果是手动配置的静态IP检查/etc/sysconfig/network-scripts/ifcfg-ens192文件确保ONBOOTyesBOOTPROTOstatic或noneIP、网关、子网掩码、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。编辑虚拟机设置在“虚拟机选项”-“高级”-“编辑配置”中可以添加或修改参数但对于启动问题优先尝试改兼容性。可能原因3EFI与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修改连接配置的DNSsudo nmcli connection modify ‘你的连接名’ ipv4.dns “114.114.114.114 8.8.8.8”。如果使用的是公司内网可能需要配置代理。可以在/etc/yum.conf文件中添加proxyhttp://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。按CtrlX或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在进行任何重大变更如系统升级、配置调整前先拍一个快照如果操作失败可以瞬间回滚到之前的状态这是物理机难以比拟的便利。