尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

VMware ESXi 8.0安装Ubuntu Server 20.04完整指南

发布时间:2026/9/29 1:55:07

资讯中心
01
ARTICLE

VMware ESXi 8.0安装Ubuntu Server 20.04完整指南

VMware ESXi 8.0安装Ubuntu Server 20.04完整指南
VMware ESXi 8.0中Ubuntu Server 20.04的安装与配置用 ESXi 8.0 装 Ubuntu Server 20.04这个组合我前前后后折腾了不下十次踩过的坑比很多人装过的机器都多。不夸张地说装好系统只是万里长征第一步后面的网络配置、VMware Tools、静态IP、存储扩展每一个环节都能让人怀疑人生。这篇东西就是把我实际操作的完整过程和踩坑记录都摊开来讲从创建虚拟机到系统配置再到安全加固一步一步带着走适合刚接触 ESXi 8.0 的运维新手也适合那些装完系统后不知道怎么继续配置的老手。先说清楚为什么要在 ESXi 8.0 上装 Ubuntu Server 20.04 而不是更新的 22.04 或 24.04。20.04 是 LTS 版本支持周期到 2030 年稳定性上面经过了大量生产环境验证很多企业内部系统、数据库、中间件都跑在这上面。ESXi 8.0 是目前 VMware 主打的虚拟化平台版本对 20.04 的虚拟硬件兼容性做得非常成熟包括 VMXNET3 网卡、PVSCSI 控制器这些半虚拟化设备都有完善的驱动支持。虽然 22.04 和 24.04 也能装但如果你是要搭生产环境或者跑商业软件20.04 的生态兼容性明显更稳。1. 安装前的环境准备与规划思路1.1 确认宿主机资源与虚拟硬件兼容性ESXi 8.0 安装 Ubuntu Server 20.04 之前我习惯先在纸上把资源分配列清楚。不是随便给个 2 核 4G 完事而是要看实际要跑什么负载。比如说跑 MySQL 数据库那内存至少要 8G 起步跑 GitLab 这种吃内存大户16G 都不算多如果只是跑个 Nginx 反代或者 Spring Boot 测试环境2核4G 确实够用。我在 Dell R730 上跑 ESXi 8.0物理机总共 128G 内存和 8 核 CPU虚拟机的资源分配就相对宽松。但就算资源充足我也建议遵循“够用就好”的原则别一上来就给 16 核 64G后续扩容永远比缩减容易。Ubuntu Server 20.04 官方最低要求是 1 核 CPU、1G 内存、2.5G 磁盘但这只是能装系统的配置实际跑起来卡到怀疑人生。我用下来的最低舒适配置是 2 核 CPU、4G 内存、40G 磁盘如果跑数据库或者容器平台建议至少 4 核 8G 起步。1.2 下载正确的 ISO 镜像这一步看着简单其实有很多细节。Ubuntu Server 20.04 的 ISO 镜像在官方 Releases 页面就能下但注意别下成 Desktop 版。Server 版和 Desktop 版的区别不只是有没有图形界面内核编译参数、默认安装的软件包、系统服务管理方式都有差异。Server 版默认不带 GNOME 桌面系统资源占用小得多安全面也小适合做服务器。下载的时候我建议选择ubuntu-20.04.6-live-server-amd64.iso这个文件20.04.6 是 20.04 系列的最后一个维护版本累积了此前所有的安全更新和 bug 修复比下最初版再打几百个补丁强太多。ISO 文件大概 1.5G 左右下载完成后随手做个 SHA256 校验防止下载过程损坏。Linux 下可以用sha256sumWindows 下可以用 PowerShell 的Get-FileHash这个步骤很多人忽略但等安装到一半报错再回头排查就浪费时间了。1.3 规划网络模式与 IP 分配网络规划是安装前最容易被忽视、装完后最让人头疼的一环。ESXi 8.0 里虚拟机可以选桥接模式或 NAT 模式桥接模式下虚拟机直接和物理网络同网段能直接被局域网内其他设备访问NAT 模式下虚拟机通过 ESXi 宿主机共享网络默认情况下外部设备访问不到虚拟机内部服务。我的建议是凡是以后要对外提供服务、要被运维监控系统纳管的机器一律用桥接模式分配独立 IP只是测试或者内部开发的机器用 NAT 就够了。桥接模式配静态 IP 时要提前规划好 IP 地址段避免和 DHCP 分配池冲突。打个比方如果路由器 DHCP 池是 192.168.1.100 - 192.168.1.200那静态 IP 就尽量选在 192.168.1.201 - 192.168.1.250 这个区间省得哪一天 DHCP 分配的 IP 撞上静态 IP导致网络时通时断。2. ESXi 8.0 中创建虚拟机的完整操作2.1 创建虚拟机时那些容易被忽略的选项在 ESXi 8.0 的 Web 管理界面也就是 Host Client里左侧导航栏选择“虚拟机”然后点击“创建/注册虚拟机”。这一步我会选择“创建新虚拟机”名称建议遵循统一的命名规范比如ubuntu2004-mysql-01这种格式包含了系统版本、用途和序号后面机器多了才不会乱。客户机操作系统系列选择“Linux”客户机操作系统版本选择“Ubuntu Linux (64-bit)”。ESXi 8.0 的虚拟硬件版本默认是 V20Ubuntu 20.04 完全兼容。虚拟硬件版本这个东西简单理解就是虚拟机网卡、硬盘控制器这些虚拟设备的“驱动接口版本”版本越高支持的新特性越多但太新的版本反而可能在旧系统上出现兼容问题。20.04 用 V20 没问题不用特意降级。存储位置和数据存储的选择就比较直接了选磁盘空间充足的数据存储就行。如果 ESXi 主机上有 SSD 和 HDD 两种存储系统盘建议放 SSD性能差距在数据库类应用上非常明显。我实测同一个 MySQL 容器磁盘从机械盘迁到 SSD 后查询耗时平均下降了 60% 以上。2.2 CPU、内存与磁盘参数的合理设置CPU 的设置里有个“预留所有虚拟机内存”的选项这个默认不勾就行。如果勾上了ESXi 会为这个虚拟机预留全部内存物理锁定虽然保证了性能但会浪费大量物理内存。内存和 CPU 的大小先按前面规划好的设定后续可以通过“编辑设置”随时调整需要重启虚拟机才能生效。磁盘这块有几个关键选项磁盘大小按规划设置40G 起步。但有一点要注意ESXi 默认是精简置备也就是用多少占多少物理空间但缺点是性能略差于厚置备延迟置零。磁盘置备类型追求性能就选“厚置备延迟置零”创建时就分配全部空间并清零写入性能最好空间紧张就选精简置备。我个人偏好厚置备延迟置零毕竟数据无价。SCSI 控制器默认的 VMware Paravirtual 就很好这是半虚拟化设备性能远高于模拟的 LSI LogicUbuntu 20.04 自带驱动不用担心识别不了。还有一个容易被忽略的点虚拟机选项里的引导固件。ESXi 8.0 新建虚拟机的默认引导固件是 EFIUbuntu Server 20.04 的安装镜像默认支持 EFI 启动装完系统后会创建 EFI 分区以后系统升级引导也不容易出问题。如果选的 BIOS装 20.04 虽然也能成功但后续用 cloud-init 或者自动化工具管理时会多一些兼容性坑。2.3 CD/DVD 驱动器中挂载 ISO 镜像在“编辑设置”里找到“CD/DVD 驱动器”选择“数据存储 ISO 文件”点击浏览找到刚才上传的 Ubuntu 20.04 ISO。这个操作的前提是先把 ISO 文件上传到 ESXi 的数据存储里路径一般是“存储 数据存储浏览器 上载”。上载完成后勾选“打开电源时连接”然后再开机。很多人直接开机后忘记勾选这个选项结果虚拟机从空磁盘启动直接报“Operating system not found”又要重启挂载白白浪费时间。另外一个坑是Ubuntu 安装完成后记得把 CD/DVD 驱动器的“打开电源时连接”取消掉或者把启动顺序改成“虚拟机从硬盘启动”否则重启虚拟机时可能会再次从 ISO 引导进入安装界面而非系统。3. Ubuntu Server 20.04 系统安装的完整流程3.1 安装过程中的关键选择最小化安装还是默认Ubuntu Server 20.04 的安装界面是字符风格的用方向键和空格键操作。启动后会让你选择“Try or Install Ubuntu Server”直接回车选安装。语言建议选 English别选中文。不是说中文不支持而是服务器上很多命令输出和日志默认是英文语言不一致在排查问题的时候会很别扭。选了 English 之后系统 LANG 环境变量就是C.UTF-8后续装 Docker、写脚本都更顺手。键盘布局选默认的 English (US) 就行如果你是用的非 US 键盘布局后面可以再改但不建议在安装阶段折腾这个。网络配置界面会识别到网卡并尝试 DHCP 获取 IP如果之前规划了静态 IP这里可以按 Tab 键进入手动配置我习惯等系统装完再改 DNS 和 IP因为安装阶段改了容易和 cloud-init 的配置互相干扰。到“Storage Configuration”这一步选择“Use An Entire Disk”然后勾选下面的“Set up this disk as an LVM group”。LVM 是逻辑卷管理工具相当于把物理磁盘先合并成一个资源池再从池子里划逻辑卷分配给系统。用 LVM 的好处是以后磁盘空间不够了可以加一块新盘把容量扩进现有卷组再在线扩容逻辑卷不用重新分区和迁移数据。不用 LVM 的话将来根分区满了就只能老老实实加盘迁移麻烦得多。3.2 Profile 设置和 SSH 服务的启用“Profile setup”界面会让你填主机名、登录用户名和密码。主机名我建议规划好比如web01、db01这种简短明确的格式。这里的用户名不要用rootUbuntu 默认禁用 root 远程登录创建一个有 sudo 权限的普通用户就好比如deploy或者ubuntu。下面会有“Install OpenSSH server”的选项这个非常重要必须勾上。装完系统后你不可能天天蹲在虚拟机控制台前面敲命令99% 的管理工作都是通过 SSH 远程完成的。如果这里漏了勾选装完系统后还要apt install openssh-server虽然也能补装但多此一举。安装完成后系统会提示重启重启前它会让你拔掉安装介质在 ESXi 里其实可以忽略这个提示。因为我们在虚拟光驱里挂的是 ISO重启时会从虚拟光驱引导。所以重启前在 ESXi 界面上先编辑一下虚拟机的启动顺序把“硬盘”放在“CD/DVD 驱动器”前面或者直接把 CD/DVD 的“打开电源时连接”取消掉就能确保从硬盘启动。3.3 安装 VMware Tools 的正确打开方式系统装完第一件事就是安装 VMware Tools。ESXi 8.0 里虚拟机装完系统后左侧虚拟机摘要页面会提示“VMware Tools 未安装”。有些老教程会让你去挂载 VMware Tools ISO然后在系统内部编译安装这套流程在 ESXi 8.0 时代已经过时了。现在正确的做法是在 Ubuntu 里直接执行sudo apt update sudo apt install open-vm-tools -yopen-vm-tools 是 VMware Tools 的开源版本功能和官方闭源版几乎完全一致但优势是跟着 Linux 发行版的软件源走升级维护直接走 apt不用每次内核升级后重新编译。装完之后可以用systemctl status open-vm-tools查看运行状态确认 vmtoolsd 服务在跑。这里面有个细节装完 open-vm-tools 后虚拟机的 IP 信息会自动同步到 ESXi 的摘要页面方便你直接在 Web 界面看到虚拟机的 IP不用登录系统去查。open-vm-tools 和官方 VMware Tools 不能共存如果之前装了官方版要先卸载再装开源版否则两个服务会互相抢。ESXi 8.0 里重启虚拟机的按钮依赖 VMware Tools 才能正常触发没装 Tools 的话就只能强制关机容易丢数据。单独跑一个命令vmware-toolbox-cmd stat raw可以验证工具是否正常运行输出VMware Tools is running就是正常。4. 系统配置与网络设置的核心实操4.1 网络配置Netplan 与静态 IP 的坑Ubuntu 20.04 的网络配置和旧版的/etc/network/interfaces不一样了它用的是 Netplan。配置文件在/etc/netplan/目录下文件名通常是00-installer-config.yaml。操作之前先执行ip a查看网卡名称ESXi 8.0 里默认的网卡名一般是ens192因为 VMXNET3 网卡的 PCI 设备号影响下名字就是这样的。默认情况下安装器生成的 Netplan 配置用的是 DHCP内容长这样network: ethernets: ens192: dhcp4: true version: 2如果要改成静态 IP用sudo vim /etc/netplan/00-installer-config.yaml编辑成network: ethernets: ens192: dhcp4: false addresses: - 192.168.1.201/24 routes: - to: default via: 192.168.1.1 nameservers: addresses: - 114.114.114.114 - 8.8.8.8 version: 2注意 Netplan 对缩进极其敏感必须用两个空格缩进Tab 和空格混用会直接报语法错误。改完后执行sudo netplan try验证配置这个命令会在 120 秒后自动回滚如果你改完配置把 SSH 断了系统会自动恢复到旧配置不至于把自己锁在外面。这个设计太贴心了我第一次配置 Netplan 的时候就是靠netplan try防止了把自己锁在机器外。确认没问题后再执行sudo netplan apply让配置生效。这里有个隐藏问题如果你前面在安装界面手动配置过静态 IP安装器会把配置写进 cloud-init 的配置里cloud-init 和 Netplan 同时存在时默认以 cloud-init 生成的配置为准很多人改完 Netplan 不生效就是这个原因。4.2 cloud-init 的干扰与禁用方法cloud-init 是 Ubuntu 云镜像默认带着的初始化工具标准安装 ISO 也会装它但实际大部分场景根本用不到。它的作用是云平台创建虚拟机时自动注入主机名、IP、SSH 密钥等初始配置。如果是 VMware 环境里手动安装的系统cloud-init 有时候会抽风不确定什么时候就把它缓存的配置重新 apply 一遍带走你的网络设置和主机名。规避方案是在/etc/cloud/cloud.cfg.d/99-disable-cloud-init.cfg里写入cloud_init_enabled: false datasource_list: [ None ]然后重启虚拟机。其实还有更彻底的方式直接删除 cloud-initsudo apt purge cloud-init -y不过我建议先执行上面的禁用方案因为有些环境里的监控脚本或者自动化工具会依赖 cloud-init 的存在禁用比卸载稳妥。看系统启动日志如果出现cloud-init[xxx]: Cloud-init v. 21.2-... finished说明 cloud-init 还在跑。禁用后重启再执行cloud-init status如果提示 disabled 就对了。4.3 主机名优化与 hosts 文件同步服务器的主机名在安装界面已经设置好了但有时候装完才想起主机名不太规范或者有冲突可以在系统中修改。修改方式有几种sudo hostnamectl set-hostname new-hostname是永久生效的改法修改/etc/hostname文件后重启也有效。改完主机名后一个关键步骤是修改/etc/hosts文件把新主机名和 IP 的映射关系写进去127.0.1.1 new-hostname 192.168.1.201 new-hostname这个操作极其容易被忽略但影响很大。很多程序比如 sudo、MySQL、Java 应用在做 hostname 解析时如果127.0.1.1映射不到主机名会出现莫名的卡顿和超时问题。Ubuntu 默认把127.0.1.1分配给了主机名这个地址和127.0.0.1略有不同主要用于系统对外显示主机名。4.4 创建快照的最佳时机装完系统并完成基础配置后我强烈建议在 ESXi 界面创建一个干净快照。快照是把虚拟机当前状态完整保存下来相当于一个“后悔药”。如果后续配置出错或者系统被搞坏可以直接回滚到这个状态重新来过。创建快照的位置在 ESXi Web 界面的“虚拟机 操作 快照 创建快照”。注释建议写清楚这个快照代表什么状态比如“Ubuntu 20.04 安装完成 静态IP配置完成 open-vm-tools 已安装”。快照名称用clean-base这种一眼能看明白的命名方案。这里要特别提醒快照不是备份。快照依赖原始虚拟磁盘文件如果原始磁盘损坏快照也会一起丢失。重要数据一定要定期做真正的备份长周期跑着的虚拟机快照不建议保留超过一周因为快照文件会持续写入增量数据时间长了会占用大量磁盘空间而且性能会下降。5. 基础软件源配置与系统更新5.1 更换 apt 软件源Ubuntu 20.04 默认的 apt 源是archive.ubuntu.com在国内网络环境下下载速度可能很慢。更换成国内镜像源是提升体验的关键一步。先把原来的源备份一下sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak然后编辑/etc/apt/sources.list把archive.ubuntu.com和security.ubuntu.com批量替换成国内镜像地址。阿里云镜像源是这么写sudo sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list sudo sed -i s/security.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list腾讯云镜像源也可以sudo sed -i s/archive.ubuntu.com/mirrors.cloud.tencent.com/g /etc/apt/sources.list sudo sed -i s/security.ubuntu.com/mirrors.cloud.tencent.com/g /etc/apt/sources.list这里注意sources.list里还有一行deb-src是源码包源非必要不启用。启用后apt update的时间会翻倍而且一般使用者根本不需要源码包。5.2 系统更新与必要软件包的安装更新源后执行sudo apt update sudo apt upgrade -yapt upgrade会把所有可升级的软件包更新到最新版。但注意Ubuntu Server 的内核更新默认是自动开启的20.04.6 镜像的内核版本是 5.15升级后可能变成 5.15.x 最新小版本不会跨大版本。如果没有特殊需求更新完成重启一次虚拟机让新内核生效。刚装完系统我还会装几个必备的基础软件sudo apt install -y vim net-tools lrzsz tree htop telnet lsof wget curl unzip zipnet-tools提供ifconfig、route、netstat这些经典命令虽然 Ubuntu 20.04 已经开始逐步淘汰它们但很多老运维还是习惯用lrzsz提供rz和sz命令方便通过终端上传下载文件配合lrzsz可以快速把本地文件传到服务器上htop是一个交互式进程监控工具占资源小比 top 直观很多lsof用于查看端口占用和文件打开情况排查问题时特别有用。5.3 时区与时间同步服务器时区不统一是很多线上事故的根源。Ubuntu 20.04 默认时区是 UTC改成 Asia/Shanghaisudo timedatectl set-timezone Asia/Shanghaitimedatectl是 systemd 提供的时区管理工具改完可以执行date查看确认。然后检查时间同步状态timedatectl statusUbuntu 20.04 默认使用 systemd-timesyncd 做时间同步它会自动从配置的时间服务器同步时间。如果机器有特殊要求比如数据库集群要求时间误差小于 100ms建议装 NTP 服务sudo apt install -y ntp sudo systemctl enable ntp sudo systemctl start ntp时间同步出错的一个典型表现是SSH 登录时提示“Access denied”但实际上密码是对的因为 Kerberos 时间校验失败。还有跑 HTTPS 证书校验的时候也会因为时间不一致而报证书错误。这类问题很多人排查半天网络结果发现是时间偏了。6. SSH 服务安全加固与远程管理优化6.1 修改 SSH 默认端口与禁用 root 登录SSH 是 Linux 服务器的生命线但它也是被攻击者扫描最多的服务。默认的 22 端口每秒都被成千上万的扫描器探测把端口改掉能减少 90% 以上的暴力破解日志骚扰。编辑/etc/ssh/sshd_config找到这几个配置项并修改Port 22222 PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes改成Port 22222后SSH 服务会只监听这个端口。改之前先确保防火墙没封掉新端口改完执行sudo systemctl restart sshd重启 SSH 服务。注意重启前先开一个备用 SSH 连接测试新端口防止配置错误把自己锁在门外。PermitRootLogin no是禁止 root 直接 SSH 登录日常操作全部用普通用户 sudo这样即使普通用户密码泄露攻击者拿到的也不是 root 权限还需要再破解 sudo 密码。MySQL、Redis 这类服务也不要直接用 root 跑安全考虑分开用户是好习惯。6.2 基于密钥登录与 SSH Key 配置公钥认证比密码认证安全得多密钥长度 2048 位以上破解难度是指数级上升。在本地机器生成密钥对ssh-keygen -t rsa -b 4096 -C your_emailexample.com生成的公钥会放在~/.ssh/id_rsa.pub用ssh-copy-id把它追加到服务器的~/.ssh/authorized_keys文件里ssh-copy-id -p 22222 usernameserver_ip如果没有ssh-copy-id可以手动追加cat ~/.ssh/id_rsa.pub | ssh -p 22222 usernameserver_ip mkdir -p ~/.ssh chmod 700 ~/.ssh cat ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys追加完成后测试新端口用密钥方式能不能登录能登录了再考虑关闭密码认证。记得~/.ssh目录权限必须是 700authorized_keys文件权限必须是 600权限过松 SSH 会直接忽略这个文件导致你明明配好了密钥却登录不了。6.3 配置 fail2ban 防护暴力破解与 UFW 防火墙密钥认证关闭后密码暴力破解的风险就小了很多但也不能掉以轻心。fail2ban 是一个入侵防御工具会监控 SSH 日志比如/var/log/auth.log某个 IP 连续认证失败 5 次就自动封禁这个 IP 一段时间sudo apt install -y fail2ban sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local编辑/etc/fail2ban/jail.local在[sshd]段配置参数[sshd] enabled true port 22222 filter sshd logpath /var/log/auth.log maxretry 5 bantime 3600配置完成后重启 fail2bansudo systemctl enable fail2ban sudo systemctl restart fail2banbantime 3600表示封禁一小时maxretry 5表示 5 次失败后就封。别把 bantime 设置得太长有时候运维自己输错几次密码就被封了还得去宿主机上解封得不偿失。UFW 是 Ubuntu 自带的防火墙管理工具底层是 iptables。基础配置sudo ufw allow 22222/tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable执行 UFW 的命令时注意如果 SSH 端口没放行就把 UFW 开了当前 SSH 连接不会断但是新连接会被防火墙拒绝把自己关在门外。我先放行端口再sudo ufw enable这个顺序非常重要。7. 存储扩容与性能调优实战7.1 给虚拟机扩容磁盘与系统分区ESXi 8.0 里扩展磁盘很简单编辑虚拟机设置把磁盘大小从 40G 改成 100G保存即可。但这个操作不会自动让 Ubuntu 系统“看到”新空间还需要在系统内部把新空间分配给现有分区。扩容前先看当前磁盘和分区sudo fdisk -l sudo lsblk一般输出里会有/dev/sda和几个分区/dev/sda1、/dev/sda2其中 sda2 是 LVM 的物理卷。用sudo growpart /dev/sda 2扩展分区然后扩展物理卷sudo pvresize /dev/sda2再查看卷组和逻辑卷的情况把剩余空间分配给根分区所在的逻辑卷sudo lvextend -l 100%FREE /dev/ubuntu-vg/ubuntu-lv sudo resize2fs /dev/ubuntu-vg/ubuntu-lv这里要注意不同的安装方式可能导致卷组名和逻辑卷名不一样执行前先用sudo vgdisplay和sudo lvdisplay确认。resize2fs是在线扩容工具不用卸载分区生产环境也可以安全操作。扩容这块我踩过一次坑在 fdisk 里用growpart时选择的设备号写错了把分区表搞坏了。后来养成了习惯扩容前先用lsblk看清楚设备树再动刀。7.2 swap 交换分区的合理设置与 ZRAM 优化Ubuntu Server 安装时默认的 swap 大小是根据磁盘空间和 LVM 设置自动计算的其实大多数场景 2G 左右就够用了。如果内存超过 8G 且跑的应用不怎么吃 swap可以考虑调小甚至关掉 swap。查看当前 swapsudo swapon --show free -h如果觉得 swap 太大要调整可以修改/etc/fstab里的 swap 配置或者直接操作 LVM。更实用的是配置 ZRAMZRAM 是将一部分内存压缩后当作 swap 设备使用比磁盘 swap 快得多sudo apt install -y zram-config sudo systemctl enable zram-config sudo systemctl start zram-configZRAM 特别适合内存小的虚拟机它用 CPU 压缩内存中的数据来腾出空间压缩比一般能到 2:1 甚至更高。我实测过给一台 4G 内存的虚拟机开 ZRAM能跑 Docker 加 MySQL 加 Nginx 也不至于 OOM。7.3 文件系统调优与 noatime 设置SSD 的写寿命虽然比以前好很多但减少不必要的磁盘写入总没错。atime是文件访问时间记录每次读文件都要更新在日志型服务器上非常浪费。挂载选项加noatime可以禁止更新访问时间提升磁盘性能和寿命。修改/etc/fstab找到根分区那行在挂载选项里加上noatime/dev/mapper/ubuntu--vg-ubuntu--lv / ext4 defaults,noatime 0 1修改完后直接sudo mount -o remount /让它在不重启的情况下生效。针对数据库类的写密集应用I/O 调度器也有影响。ESXi 8.0 里的虚拟磁盘默认是 SCSI 设备Ubuntu 20.04 的默认调度器是mq-deadline或none都不奇怪查看命令是cat /sys/block/sda/queue/scheduler对 SSD 来说none也就是 noop通常效率最高因为 SSD 没有机械臂寻道时间。不过这个调优对虚拟机实际效果有限ESXi 层已经做了一层调度系统内层级的调度器影响没那么大不追求极致性能的不用折腾。7.4 大页内存配置的适用场景如果这台 Ubuntu 要跑大型 Java 应用、Elasticsearch、Redis 这类内存敏感型服务可以配置大页内存HugePages。简单理解CPU 访问内存是按“页”为单位的默认 4K 内存分页当内存大到几十 G 的时候页表浪费的 CPU 资源就很可观了。大页内存把每个页的尺寸调到 2M 甚至 1G页表项变少TLB 命中率提高内存访问性能提升明显。配置方式sudo sysctl -w vm.nr_hugepages1024这个配置重启后消失要持久化就写入/etc/sysctl.d/99-hugepages.confvm.nr_hugepages1024每页 2M 共 1024 页占用 2G 内存按实际应用内存大小调整。这类优化只有在应用使用大页内存时才有意义比如 Java 的-XX:UseLargePages参数、PostgreSQL 的huge_pageson如果应用没显式开启配了也白配。8. 安全加固与性能监控的进阶配置8.1 使用 AppArmor 与系统更新策略Ubuntu 默认开启了 AppArmor它是个强制访问控制框架可以限制程序对系统资源的访问。查看状态sudo aa-status正常情况下会有几条 profile 在 enforce 模式。对于常规运维来说AppArmor 开着就好不用特意改。但如果跑 DockerDocker 会自己管理容器的安全策略和 AppArmor 有可能会冲突或者互相干扰需要特别关注日志。系统更新策略我的建议是每天做安全更新大版本升级要先备份再手动触发。Ubuntu 有 unattended-upgrades 工具默认带着。确认它的状态sudo dpkg-reconfigure --prioritylow unattended-upgrades这个命令会弹交互界面选 Yes 启用自动安全更新。自动更新确实可能在半夜重启服务但它能堵住大多数已知漏洞的入口对于生产环境来说是划算的。8.2 安装 netdata 进行系统监控系统装完不装监控等于开了一辆车没有仪表盘。netdata 是一个轻量级的实时监控工具安装简单Web 界面非常直观能展示 CPU、内存、磁盘、网络、进程等几十项指标。它对系统资源的占用比 Prometheus 那套低得多单机监控首选sudo apt install -y netdata sudo systemctl enable netdata sudo systemctl start netdata默认启动后监听19999端口浏览器访问http://服务器IP:19999就能看到监控面板。生产环境为了安全建议用 UFW 限制访问来源 IP只允许运维网络访问sudo ufw allow from 192.168.1.0/24 to any port 199998.3 配置系统日志轮转策略Ubuntu 20.04 默认用 rsyslog 和 logrotate 管理日志。日志文件无限制增长会撑爆磁盘分区所以 logrotate 的配置很关键。查看当前配置cat /etc/logrotate.d/rsyslog默认配置是每周轮转一次保留 4 个备份。对于访问量大的服务可以把轮转频率调高比如改成每日轮转/var/log/syslog { rotate 7 daily compress delaycompress missingok notifempty create 0640 syslog adm }改完执行sudo logrotate -f /etc/logrotate.conf强制测试一下配置是否正确。日志轮转出问题最常见的症状是磁盘突然满掉排查时用du -sh /var/log/*就能看到哪个日志文件长得离谱。8.4 创建运维专用用户与权限最小化我习惯为每种服务创建独立的系统用户而不是全部跑在 root 或 deploy 用户下。比如跑 MySQL 就创建 mysql 用户跑 GitLab 就创建 git 用户配合 systemd 服务文件里的User指令限制服务运行身份。这样即使某个服务被攻破攻击者也拿不到整个系统的控制权只能在这个用户权限范围内搞事。对于日常运维创建一个有 sudo 权限的用户就够了比如之前安装时创建的 deploy 用户。如果怕这个用户密码被人猜出来可以用sudo visudo打开 sudo 配置文件给特定用户添加 sudo 权限。记得检查一下/etc/sudoers中是否有NOPASSWD这种危险配置非特殊场景不要给普通用户配免密 sudo。9. 常见问题与排查技巧实录9.1 虚拟网络适配器无法识别的最快排查方式在 ESXi 8.0 里创建虚拟机时如果你选择的客户机操作系统版本太老比如选了 Ubuntu 16.04系统可能无法识别默认的 VMXNET3 网卡表现为ip a输出里根本没有 ens192只有一个回环接口lo。最快的排查方式先在 ESXi 界面把虚拟机的网络适配器改为 E1000e模拟的 Intel 千兆网卡开机确认网络通了然后apt install open-vm-tools安装驱动再关机把网卡改回 VMXNET3开机后ip a就能看到 ens192 了。E1000e 是模拟设备性能不如半虚拟化的 VMXNET3但兼容性好VMXNET3 性能更好依赖 VMware Tools 的驱动。9.2 系统无网络时的五大常见原因装完系统后ping 8.8.8.8不通先别急着重装系统按照下面这个顺序排查看网卡是否启动ip link查看网卡状态如果显示 DOWN用sudo ip link set ens192 up启用试试看 IP 是否分配ip addr查看网卡有没有 IP没有的话检查 Netplan 配置看网关是否可达ip route查看默认路由ping 192.168.1.1测试网关连通性看 DNS 是否正常ping 192.168.1.1通但ping baidu.com不通就是 DNS 的问题检查/etc/resolv.conf看服务是否异常systemctl status systemd-networkd或者systemctl status networkd-dispatcher确认网络服务是否有报错。9.3 apt 更新报错的常见解决思路apt update报Failed to fetch http://... 404 Not Found大概率是源出了问题。20.04 是老版本 LTS官方源里的软件包地址在新版本镜像上可能已经不适用了。排查方向确认源文件路径和内容是否正确尝试执行sudo apt clean清理缓存切换备用源比如从阿里云切到腾讯云看错误信息里的具体 URL手动在浏览器访问一下能访问说明网络问题不能访问说明源地址有问题。如果报错信息里有Signature verification failed通常是 PPA 密钥过期了执行sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 对应的密钥ID更新密钥但注意 apt-key 在 Ubuntu 20.04 上已经开始提示弃用信息了尽量用/etc/apt/trusted.gpg.d/管理密钥文件。9.4 SSH 登录缓慢的排查思路SSH 登录后等好几秒才出现密码提示或者 shell通常是 DNS 反向解析的问题。SSH 服务默认会对客户端 IP 做 DNS 反查如果反查超时登录过程会显著变慢。解决方式是在/etc/ssh/sshd_config里加UseDNS no GSSAPIAuthentication no然后重启 SSH 服务。这个优化立竿见影登录速度从几秒降到几百毫秒。9.5 磁盘空间明明够却无法创建文件的诡异问题遇到这种情况先执行df -h查看磁盘空间使用率再执行df -i查看 inode 使用率。inode 是文件系统用来记录文件和目录元数据的数据结构如果磁盘空间还剩很多但 inode 用完了同样无法创建新文件。这种情况常见于缓存目录、日志目录里文件数量爆炸的场景删除大量过期小文件比如/tmp下的临时文件一般能解决。还有一个可能性是分区只读挂载了。执行mount | grep / 查看挂载选项里有没有ro如果有文件系统因为异常进入了只读模式需要先处理异常再重新挂载。10. 一整套完整安装与配置的实操速查10.1 关键命令速查表我把整个安装配置过程中最常用的命令整理成一张表方便收藏和查阅操作类型命令更新软件源和系统sudo apt update sudo apt upgrade -y安装 VMware Toolssudo apt install -y open-vm-tools修改主机名sudo hostnamectl set-hostname newname修改时区sudo timedatectl set-timezone Asia/Shanghai配置静态 IPsudo vim /etc/netplan/00-installer-config.yaml应用网络配置sudo netplan try/sudo netplan apply查看磁盘分区lsblk、sudo fdisk -l扩展分区sudo growpart /dev/sda 2扩展 LVM 逻辑卷sudo lvextend -l 100%FREE /dev/ubuntu-vg/ubuntu-lv在线扩容文件系统sudo resize2fs /dev/ubuntu-vg/ubuntu-lv查看 SSH 服务状态sudo systemctl status sshd查看防火墙状态sudo ufw status verbose查看监控服务sudo systemctl status netdata10.2 建议的系统初始化检查清单装完一台 Ubuntu Server 20.04我最后会按下面这个清单检查一遍确认所有关键项目都没遗漏open-vm-tools 已安装并运行ESXi 摘要页能显示虚拟机的 IP 和 Tools 状态Netplan 配置已生效静态 IP 重启后保持不变cloud-init 已禁用网络配置不会在重启后被覆盖apt 源已更换为国内镜像apt update无报错SSH 端口已修改root 远程登录已禁用密钥登录正常UFW 防火墙已启用必要的端口已放行fail2ban 运行中暴力破解日志量明显下降时区为 Asia/Shanghai时间同步正常全部软件包已更新到最新版本创建了 clean-base 初始快照。10.3 快照回滚的正确姿势与常见误操作快照回滚操作本身很简单虚拟机列表右键 快照 管理快照 选中要回滚的快照 还原。但回滚前有三个关键操作确定操作会产生数据丢失快照回滚会把快照创建时间点之后的所有数据变化都丢弃不只是系统配置还包括数据库里的新数据、用户上传的文件等回滚前先将虚拟机正常关机或者至少对里面的数据库做一次FLUSH TABLES WITH READ LOCK;确保数据文件和日志文件一致后再执行回滚回滚是不可逆操作执行前最好对当前状态再创建一个快照万一回滚后发现不该回滚还能再退回来。快照和克隆千万不要混淆。快照是记录虚拟机的历史状态删掉快照后数据不会丢失只是状态历史被合并了克隆是创建一份独立的虚拟机副本副本和原虚拟机互不影响。写到这里这整套 VMware ESXi 8.0 中 Ubuntu Server 20.04 的安装与配置流程基本说透了。从我实际操作来看ESXi 8.0 和 Ubuntu 20.04 算是一对非常省心的组合只要网络规划、磁盘配置和安全防护这三关过了后面基本不会出什么大幺蛾子。最后再捞一句实在话不管哪一步操作涉及系统配置的改动动手前多想一下这行命令的副作用是什么先做备份再做变更养成这个习惯能让你少熬很多夜。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。