
上周有同事抱着一台六年没动过的测试机来找我说上面跑的老业务要重新验一遍问我能不能帮他重装一个 CentOS 7。这种事这些年我少说做过上百遍——物理机、虚拟机、云主机、U 盘启动、批量部署各种姿势都趟过一遍。所以这篇就把 CentOS7 安装这条链路从头到尾讲透从 CentOS7 镜像下载、版本挑选、校验到虚拟机安装流程里的每一个选项、分区容量的分配逻辑再到装完之后网络配置、软件源替换和常见故障排查尽量把我自己实际动手时会做的判断都写出来。不管你是在 VMware、VirtualBox 里练手还是要给内网一台老服务器重建系统这套流程都能直接照着走。刚接触 Linux 的朋友可以当操作手册一步步对着做有基础的朋友重点看分区规划和安装向导那几个容易被忽略的勾选项。1. 动手之前先想清楚这台 CentOS 7 装来干什么装系统这件事最怕的不是操作复杂而是目的没想清楚就开始点下一步。CentOS 7 的官方维护周期在 2024 年 6 月 30 日已经结束这意味着官方不再推送安全补丁和功能更新软件源主站也已经迁到归档地址。这不是什么秘密但很多人一边在网上看到别再用了一边又确实需要装它。这两件事并不矛盾关键在于你要知道自己属于哪一种情况。1.1 官方支持状态摆清楚避免预期错位维护周期结束之后CentOS 7 并不是打不开了而是没人管了。已经装好的机器照常运行yum 也能用只是需要把源指向归档仓库。真正的风险在于新披露的系统漏洞不会再有官方补丁公网暴露的服务如果跑在这上面安全压力会全部落到你自己身上。所以我在做任何一台 CentOS 7 之前都会先问三个问题——这台机器连不连公网上面跑的是不是核心业务这套环境预计还要活多久三个问题的答案基本就决定了它该不该装、该怎么装。1.2 三类仍然值得装 CentOS 7 的场景第一类是兼容性验证。很多企业内部系统、行业软件的认证环境就是 CentOS 7配套的中间件、数据库、驱动都只在这个版本上测过换系统就要重新做一轮认证成本极高。第二类是教学与实验环境。Linux 基础运维、服务搭建、脚本练习这些内容CentOS 7 的文档和资料积累最厚出了问题几乎都能搜到答案对新手非常友好。第三类是内部隔离环境。完全不出网、只在内网跑的老业务系统稳定运行多年只要不动它就别乱动。场景是否建议装 7理由公网对外服务不建议无安全补丁风险自担内网老业务维护建议兼容性优先改动成本高学习与实验建议资料多踩坑少新项目开发环境不建议应选仍在维护的发行版行业软件认证环境视厂商要求以厂商支持矩阵为准1.3 我个人的一个判断习惯我的习惯是装之前先确认这台机器三年后谁维护。如果答案是没人维护或者维护的人已经离职那我会尽量推动换到还在维护期的发行版如果答案是有专人负责、只在内网跑、出问题能兜住那 CentOS 7 依然是个成本最低的选择。这个判断不需要多高深的技术但它能帮你省掉后面很多扯皮。把这一步做完再往下看镜像和安装心里就有底了。2. CentOS 7 镜像文件下载四个版本别选错镜像选错是新手最常犯的第一个错误。CentOS 7 官方提供了好几种 ISO体积从几百兆到九个 G 不等名字看着都差不多实际用途差别很大。我见过有人下载了 Minimal 版结果装完发现没有图形界面以为是装坏了也见过有人下了 Everything 版九个 G 传了半天最后只用上其中几十兆的内容。2.1 四种镜像的实际差别DVD 版约 4.5G包含基础系统和常用软件包能完成图形化或最小化安装大多数场景选它。离线装机时不用再联网下载依赖这是它最大的价值。Everything 版约 9G 以上包含仓库里几乎所有软件包适合需要离线批量安装各种组件、或者要自建本地源的场景。Minimal 版约 1G只有最基础的系统没有图形界面装完就是一个干净的字符界面。做服务器、跑容器、当模板机选它最合适。NetInstall 版约 500M本身不含软件包安装过程中从网络仓库拉取必须有稳定网络才能用。我的常规选择是做服务器用 Minimal做实验和需要图形界面的用 DVD。Everything 版我一般只在需要给内网搭本地源的时候才下因为九个 G 的镜像传一次要等很久。2.2 归档地址才是现在能下的地方由于 CentOS 7 已进入归档状态主镜像站的目录结构会发生变化直接访问原来的下载页可能找不到文件。稳妥的做法是走归档站点路径按版本号组织例如 7.9.2009 这个最终版本。下载时注意区分架构x86_64是常见的 Intel/AMD 平台aarch64是 ARM 平台两者不能混用。如果你是在 ARM 架构的服务器或者某些开发板上装一定要选 aarch64 的镜像选错了连引导都进不去。2.3 校验这一步千万别省镜像下载过程中断、被代理缓存串改、磁盘写坏都会导致安装到一半报奇怪的错。校验只要一条命令几秒钟的事但能帮你排除掉一大类问题。# Linux / macOS 下校验 sha256sum CentOS-7-x86_64-DVD-2009.iso # 和归档站上提供的 CHECKSUM 文件内容逐位比对 cat sha256sum.txtWindows 下可以用 PowerShell 的Get-FileHash命令算法选 SHA256。比对结果一致再往下走。如果哈希对不上别抱侥幸心理重新下载。我遇到过不止一次因为镜像不完整导致安装到软件包阶段报错的案例排查了半天最后发现是镜像本身的问题。3. 虚拟机创建阶段那些决定后面顺不顺的选项很多人觉得虚拟机创建就是点几下下一步其实这一步的选择会直接影响安装过程是否顺利、装完之后网络是否好用。我在虚拟化平台上装 CentOS 7 的次数太多基本上看到参数就知道后面会不会出问题。3.1 CPU、内存、磁盘的容量建议CentOS 7 本身对资源要求不高但你要考虑它上面要跑什么。配置项最低推荐说明CPU1 核2 核编译、跑容器建议 4 核内存1G字符界面2G 起图形界面至少 2G建议 4G磁盘10G40G 起系统本身约 3-5G留足日志和业务空间显卡默认默认图形界面下显存可给到 128M磁盘这一项我通常直接给 40G 或 60G并且在创建时选择不预先分配磁盘空间。原因是如果一开始给 10G后面业务数据一多就满了扩盘虽然能做但要停机、要改分区表麻烦而预先分配会把物理磁盘直接占满测试机上很浪费。3.2 网络模式NAT、桥接还是仅主机这是最容易被随手选错的一项选错了装完连不上网或者局域网访问不到。NAT 模式虚拟机通过宿主机上网能访问外网但局域网内其他机器访问不到它。适合个人练手、临时实验。桥接模式虚拟机和宿主机平级从路由器拿一个独立 IP局域网内可以直接访问。适合要给同事演示、或者模拟真实服务器环境。仅主机模式只能和宿主机通信完全隔离外网。适合做安全实验但装系统时需要额外配置本地源。我的习惯是练手用 NAT模拟真实环境用桥接。如果后面要经常从宿主机 SSH 上去桥接会更省事因为 IP 固定且不受宿主机网络变化影响。3.3 UEFI 与 BIOS老版本系统的兼容性坑现在的虚拟机默认经常是 UEFI 引导但 CentOS 7 早期版本对 UEFI 支持并不完善容易出现引导菜单进不去、装完找不到启动项的情况。我的做法是除非有明确规定CentOS 7 一律用 BIOSLegacy引导。这样分区也简单不需要单独划/boot/efi分区。如果你必须在 UEFI 环境下装那就要在分区时单独分一个 200M 到 512M 的 EFI 分区格式选EFI System Partition这点后面分区章节还会细说。3.4 磁盘类型与虚拟化引擎磁盘类型上SCSI 是最稳妥的选择兼容性好、性能也够用。SATA 也可用但性能略低。NVMe 需要较新的虚拟化平台和驱动支持CentOS 7 在 NVMe 上安装偶尔会遇到找不到磁盘的问题不是特别必要就别折腾。另外如果宿主机 CPU 支持硬件虚拟化记得在虚拟机设置里把虚拟化 Intel VT-x/EPT 或 AMD-V/RVI勾上。有些实验需要在虚拟机里再跑一层虚拟化不勾这个选项会直接报错。4. 安装向导逐屏拆解每一项到底在做什么插上镜像开机看到引导菜单之后真正的安装流程开始了。这一章我按屏幕顺序走一遍重点讲清楚每个选项背后的含义而不是让你无脑点下一步。4.1 引导菜单的三个入口引导菜单通常有三个选项Install CentOS 7正常安装日常都选这个。Test this media install CentOS 7先校验介质再安装第一次用这个镜像时建议选它校验通过后会自动进入安装多花一两分钟但能提前发现镜像损坏。Troubleshooting故障排查入口里面有救援模式、内存测试等选项安装正常时用不上。如果安装过程中画面花屏或者卡住可以在引导菜单上按Tab键编辑启动参数在行尾加上nomodeset这是最常见的解决显卡兼容问题的手段。另外inst.text参数可以让安装过程走纯文本模式图形界面出问题时可以试试。4.2 语言、时区与安装源确认进入安装界面后左侧一列是配置项右侧是开始安装按钮。语言选择上我一般安装时选英文装完再配中文。原因是英文界面下所有报错信息都是原始英文方便搜索中文界面的报错翻译有时不太准确反而影响判断。时区选Asia/Shanghai并且确认右上角的时间是否和当前时间一致。这一点看起来无所谓但如果时间偏差太大后面 yum 通过 HTTPS 访问仓库时会因为证书时间校验失败而报错这个坑不少人踩过。安装源INSTALLATION SOURCE默认是本地介质不用改。如果你要做网络安装才需要在这里指定仓库地址。4.3 软件选择Minimal 还是带图形界面SOFTWARE SELECTION这一项决定了系统装出来长什么样。基环境主要有Minimal Install只有基础系统没有图形界面。服务器首选。Infrastructure Server在最小化基础上加了若干服务器常用组件。Server with GUI带 GNOME 桌面适合需要图形操作的实验环境。GNOME Desktop纯桌面环境。Development and Creative Workstation开发工作站包含编译工具链。选中基环境后右侧还有附加组件可以勾比如兼容库开发工具系统管理工具安全工具。我的建议是Minimal 环境至少勾上开发工具和兼容库因为后面编译软件、跑一些二进制程序都会用到装系统时一并装上比事后补装省事得多。如果是给不熟悉命令行的同事用就选带 GUI 的但要清楚图形界面会额外占用几百兆内存。4.4 网络与主机名为什么建议在安装阶段就配好NETWORK HOST NAME是很多人直接跳过的一项结果装完发现网卡是关的、没有 IP只能进系统再折腾。我的习惯是在安装阶段就把网络配好。在界面里把右侧的开关打开默认是关的网卡会自动通过 DHCP 获取地址。如果内网需要固定 IP可以点右下角配置在 IPv4 设置里选手动模式填地址、掩码、网关和 DNS。左下角的主机名也要改别用默认的localhost.localdomain改成有意义的名字比如test-web-01。主机名配好之后后面配置文件、监控系统、日志里看到的都是可读的名字排查问题时省很多事。4.5 KDUMP 与安全策略两个默认开启的选项KDUMP是内核崩溃转储服务默认是开启的。它会预留一部分内存用于崩溃时转储内核信息对于测试机、个人实验机来说完全用不上建议直接关掉能省下一两百兆内存。SECURITY POLICY是安全策略配置可以套用一些预定义的合规基线。除非你有明确的等保、合规要求否则保持默认不启用即可。这一项如果选错可能会在安装过程中卡很久因为它需要联网拉取策略内容。4.6 ROOT 密码与普通用户最后是设置 root 密码。CentOS 7 对密码强度有校验太简单会提示两次才能通过。生产环境不要图省事用弱密码这不用多说。同时建议创建一个普通用户并勾选将此用户设为管理员这样这个用户就在 wheel 组里可以通过sudo提权。为什么建议建普通用户因为直接拿 root 操作一条命令敲错可能就把系统搞坏了而普通用户加sudo会多一层确认也便于审计谁做了什么。如果只是本地测试机直接用 root 也无可厚非但养成好习惯总没坏处。5. 分区规划容量怎么分才是合理的分区是整套安装流程里最需要动脑的一步。自动分区能让你快速装完但它分出来的布局往往不适合长期使用。我见过太多机器因为/var没单独分日志一涨就把根分区撑满然后整个系统卡死。5.1 自动分区做了什么为什么我不直接用选择自动分区后安装程序通常会创建一个/boot分区、一个 LVM 卷组然后在卷组里划一个很大的/和一个 swap。问题在于/var、/tmp、/home全都挂在/下任何一个目录写满都会影响整个系统。swap 大小的计算规则比较粗放可能给得过多或过少。/boot有时候只给 200M多装几个内核版本就满了。所以我的做法是选我要配置分区手动规划。这不是炫技而是在为自己的未来省时间。5.2 各挂载点的容量分配参考下面这套方案是我在 40G 到 60G 磁盘上常用的布局可以直接参考。挂载点建议容量文件系统说明/boot1Gxfs多内核版本并存200M 不够用/boot/efi200-512MEFI仅 UEFI 引导时需要swap见下方规则swap内存小于 8G 时给等于内存大小/20-30Gxfs系统和软件包/var10-20Gxfs日志、数据库、容器镜像/home剩余空间xfs用户数据/tmp2-5Gxfs可选能防止临时文件撑满根分区swap 的规则我按这个来内存 2G 以下给内存的两倍2G 到 8G 之间给等于内存大小8G 以上给 8G 到 16G 就够。做服务器的话如果内存本来就有 32Gswap 给 8G 完全够用因为正常情况下根本用不到。5.3 LVM 的卷组、PE 与扩容余地CentOS 7 默认使用 XFS 文件系统配合 LVM 逻辑卷管理。手动分区时建议选择LVM类型这样后续可以在线扩容。几个关键点卷组Volume Group把所有剩余空间放进一个卷组比如命名为vg_root。PE 大小默认 4MB 即可除非你有特殊需求。逻辑卷命名建议用lv_root、lv_var、lv_home这样的名字比默认的lv_root00直观。LVM 的价值在于磁盘不够用时加一块虚拟磁盘vgextend扩卷组lvextend扩逻辑卷再xfs_growfs扩文件系统整个过程不用停机、不用重装。这个能力在业务机上非常值钱。5.4 分区阶段最常见的两个报错第一个是Failed to allocate requested partition scheme通常是因为磁盘上残留了旧的分区表或者磁盘容量确实不够。解决方式是回到分区界面先删除所有已有分区或者点重新扫描让安装程序重新识别。如果是在虚拟机上也可以把虚拟磁盘删掉重建一个干净的。第二个是容量规划超出了可用空间。手动分区时如果把每个分区都往大了填很容易超过磁盘总量。建议先分必须的/boot和 swap再分/、/var最后把剩下的全给/home这样一定不会超。6. 系统装完后的第一轮配置安装程序提示重启拔掉镜像机器重新起来看到一个登录提示符这时候只是系统能跑离能用还有距离。下面这几件事我每次都会做。6.1 静态 IP 的两种配置方式如果安装阶段没配网络或者要改成固定 IP用nmcli命令是最快的。# 查看连接名称 nmcli connection show # 配置静态地址、网关和 DNS nmcli connection modify ens33 \ ipv4.addresses 192.168.10.20/24 \ ipv4.gateway 192.168.10.1 \ ipv4.dns 223.5.5.5 119.29.29.29 \ ipv4.method manual # 生效 nmcli connection up ens33 ip addr show ens33不想用命令的话也可以直接编辑/etc/sysconfig/network-scripts/ifcfg-ens33文件把BOOTPROTO改成static再补上IPADDR、GATEWAY、DNS1等字段然后systemctl restart network。两种方式效果一样命令方式更不容易写错格式。注意网卡名字不一定是ens33用ip addr看一下实际名称再改。6.2 EOL 之后 yum 源怎么修这是目前装完 CentOS 7 之后必做的一步。原来的 mirrorlist 地址已经不可用直接执行yum install会报解析失败。解决办法是把仓库指向归档地址。cd /etc/yum.repos.d/ mkdir -p backup mv *.repo backup/ cat /etc/yum.repos.d/CentOS-Vault.repo EOF [base] nameCentOS-7.9.2009 - Base baseurlhttps://vault.centos.org/7.9.2009/os/$basearch/ gpgcheck1 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 enabled1 [updates] nameCentOS-7.9.2009 - Updates baseurlhttps://vault.centos.org/7.9.2009/updates/$basearch/ gpgcheck1 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 enabled1 EOF yum clean all yum makecache如果机器完全不出网那就用 DVD 镜像搭本地源挂载 ISO 到/mnt/iso然后写一个baseurlfile:///mnt/iso的仓库文件记得在/etc/fstab里加上开机自动挂载否则重启后 yum 就失效了。6.3 中文环境与终端乱码需要用中文界面的话装完再切# 查看可用 locale localectl list-locales | grep zh # 设置中文 localectl set-locale LANGzh_CN.UTF-8这一步做完如果终端里中文还是乱码大概率是终端软件的字符编码没设成 UTF-8或者缺少中文字体。纯字符界面下显示中文本来就不太理想服务器环境我一般保持英文省掉这一堆麻烦。只有在需要给非技术人员使用的图形机上才花时间配中文。6.4 必装的几个小工具最小化安装出来的系统很多顺手工具都没有。下面这几个我基本是每次必装yum install -y vim wget net-tools bash-completion lsof tree chrony systemctl enable --now chronynet-tools是为了ifconfig、netstat这些老命令虽然ip命令更现代但很多脚本和老文档还在用。bash-completion能大幅提升命令行补全体验装了之后按 Tab 才有完整的参数提示。chrony负责时间同步服务器时间不准会引发一堆连锁问题一定要开。6.5 防火墙与 SELinux 的取舍网上很多教程上来就说关掉防火墙、关掉 SELinux我强烈建议不要无脑关。正确做法是防火墙按需开放端口用firewall-cmd --add-port80/tcp --permanent这种方式而不是直接systemctl stop firewalld。SELinux 保持 enforcing 模式遇到权限问题时通过semanage、setsebool或者restorecon去解决而不是改成 disabled。如果因为某些特殊软件实在跑不通临时把 SELinux 设成 permissive 观察一下可以但改配置文件永久关闭之前一定要想清楚这台机器是不是要连公网。这个习惯我坚持了很多年帮我挡掉过好几次真实的安全事件。6.6 装完立刻打快照虚拟机上装完系统、配好网络和源之后第一件事就是打个快照。命名清楚比如base-clean-2024。后面无论怎么折腾搞坏了直接回滚几分钟就能恢复。这个习惯能省下大量重装时间也是虚拟机相比物理机最大的优势之一。7. 装机过程中的典型故障与排查链路我把我这些年遇到频率最高的几个问题整理出来并且按现象—原因—排查—解决的方式写方便你直接对照。7.1 卡在 dracut 或者黑屏不动现象是引导后屏幕停在Starting dracut initqueue hook之类的提示上长时间不动。绝大多数情况下是安装程序找不到安装介质。如果是虚拟机挂载 ISO检查 ISO 是否挂到了正确的光驱设备如果是从 U 盘装通常是 U 盘被写成了软盘格式导致设备路径变化。排查思路在引导菜单按Tab把启动参数里的inst.stage2路径手动指定为实际设备例如inst.stage2hd:/dev/sdb4:/。另一个常见原因是显卡加nomodeset参数试试。7.2 装完重启进不了系统现象是重启后直接进了 BIOS 或者报 no bootable device。原因通常是引导顺序不对或者 UEFI 与 BIOS 混用。排查步骤先进虚拟机设置确认引导顺序里硬盘排在光驱前面再确认引导模式是否和安装时一致——你用 BIOS 装的虚拟机就不能设成 UEFI 引导。如果引导模式没错还是进不去可能是引导记录写在了一块不存在的设备上。这时候可以用安装镜像进入Troubleshooting里的救援模式用grub2-install重新安装引导记录。7.3 yum 报域名解析或连接超时现象是执行yum install时报Could not resolve host: mirrorlist.centos.org或者连接超时。原因有二一是 DNS 没配好二是仓库地址已经归档失效。先ping一个外网 IP 测试网络通不通再nslookup测域名解析。网络通、解析通但还是失败基本就是源的问题按第 6.2 节换成归档源即可。7.4 磁盘被日志吃满现象是系统突然卡顿、服务写文件报 No space left on devicedf -h一看/或者/var满了。排查用du -sh /var/* | sort -h逐层找大目录通常是/var/log或者/var/lib/docker占的。# 快速定位大文件 du -sh /var/* 2/dev/null | sort -h | tail -10 find /var/log -type f -size 100M -exec ls -lh {} \;解决方式一是清理旧日志用journalctl --vacuum-size500M限制 systemd 日志总量二是配置 logrotate 保留策略三是如果是容器目录把 Docker 数据目录迁到独立分区。根因还是分区规划没做好这也是我坚持/var单独分的原因。7.5 时间不对导致证书报错现象是 yum 通过 HTTPS 访问仓库时报证书时间无效一类的错误。原因就是系统时间偏差太大证书校验失败。解决是先手动同步一次时间再启动 chronydate -s $(date -d 0 min %Y-%m-%d %H:%M:%S) # 先校正到大致时间 systemctl enable --now chronyd chronyc sources -v7.6 一套通用的排查套路装机遇到问题的排查顺序我总结成固定四步先看现象在哪一阶段引导前、安装中、重启后、系统内再看日志说了什么安装时按 CtrlAltF2 切到控制台看日志系统内用 journalctl然后验证最基础的三件事网络通不通、磁盘有没有空间、时间对不对最后才考虑重装。大部分问题都在前三步就能定位直接重装反而掩盖了真实原因下次还会再遇到。8. 这台机器如果要长期跑几件顺势做完的事如果这台 CentOS 7 只是练手装完就结束了。但如果它要长期承担业务装完之后还有几件事顺手做掉后面能省很多麻烦。8.1 一份可复用的初始化配置把常用配置固化成脚本下次装新机器直接跑。脚本内容不用复杂包含时间同步、软件源、基础工具、内核参数、日志限制这几块就够了。比如限制 systemd 日志大小可以编辑/etc/systemd/journald.conf把SystemMaxUse设成 500M 之类的值然后重启服务。这样即使某天某个服务疯狂打日志也不会把磁盘写满。8.2 快照与配置基线的保持我的做法是维护三个快照节点装完系统的原始状态、配好基础环境的基线状态、业务部署前的状态。第三个尤其重要——业务出问题时能快速判断是环境问题还是业务本身的问题回滚到部署前状态就能验证。快照名字要带日期和用途隔一段时间清理旧的避免占用过多存储。8.3 关于这台 CentOS 7 的寿命这是我在实际工作中体会最深的一点装 CentOS 7 的时候就应该同时想好它什么时候下线。因为官方维护已经结束这台机器的安全性完全依赖你的内网隔离和日常运维。我通常会在这类机器的资产记录里写清楚三件事它上面跑的是什么业务、有没有对外暴露的端口、计划什么时候迁移到还在维护期的发行版。等到真正要迁移的时候有这份记录迁移方案会好做很多。最后再分享一个我自己用的小技巧装完系统后用history命令把这次所有执行过的配置命令导出到文件保存起来下次重装直接照着跑比翻文档快得多。这个习惯看起来不起眼但在我需要快速复现一台测试机的时候帮了很大的忙。