ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

RHEL9 系统部署与 Linux 核心命令实战:从安装到故障排查全记录

RHEL9 系统部署与 Linux 核心命令实战:从安装到故障排查全记录 最近在做 RHEL9 的系统部署与 Linux 命令操作实验整套流程从镜像下载、虚拟机配置、系统安装到常用命令实操、故障排查全部走了一遍。这篇博文就是这次实验的完整记录把我踩过的坑、验证过的参数、敲过的命令都整理出来。不管你是在准备运维面试还是企业里要做 Linux 系统部署的选型验证或者是刚入门想系统化过一遍部署和常用命令这篇内容都能给你一个可复现的参考路径。我自己在实际实验中的体会是RHEL9 的部署流程和 CentOS 7 时代差别不小很多老经验得更新一下。而命令操作这块与其去背大而全的命令大全不如围绕部署场景把核心命令串起来边部署边敲印象会深刻得多。1. 实验整体设计与部署思路拆解1.1 为什么选 RHEL9 作为部署实验对象RHEL9 是企业级 Linux 部署绕不开的一个版本。它基于 Fedora 34内核版本升级到 5.14默认文件系统是 XFS引入了诸多新特性。选它做实验主要有三个考虑企业生产环境存量极大很多公司的核心业务跑在 RHEL 系操作系统上。RHEL9 是新版本掌握它的部署和命令操作对于后续接手系统运维、故障排查都有直接帮助。从学习路径角度讲RHEL9 的命令体系、网络管理方式NetworkManager 全面接管和软件包管理dnf替代了老旧的 yum和上一代有显著差异用新版本做实验才能避免“学完就过时”的尴尬。RHEL9 的生命周期长达 10 年实验环境可以长期保留不用频繁重装。有一点需要明确RHEL9 官方要求注册订阅才能获取软件源更新。实验环境如果没有订阅则要提前处理好 dnf 仓库的可用性问题这个我在后文会细讲。1.2 部署方案的选型物理机还是虚拟机实验场景下你大概率会考虑“物理机安装”、“虚拟机安装”和“云主机直接使用现成镜像”三个方向。我这次选用 VMware Workstation 虚拟机方案原因很实际快照功能太重要了。系统装完、命令操作做实验之前打一个干净快照之后无论怎么折腾比如改错配置、误删文件都能一键还原实验容错率极高。网络隔离灵活。虚拟机对物理网络环境影响为零做网络配置实验改 IP、配置网卡绑定不会影响局域网内其他设备。硬件资源可按需分配方便模拟不同配置的实验环境。如果你计划用 VirtualBox或者手头有物理服务器想练手整体流程也适用只是网卡名称、驱动加载这些细节会略有差异。1.3 实验环境的硬件规划参考部署实验前要先规划好虚拟机的资源配额。下面是我这次实验使用并验证可行的配置资源项实验配置说明CPU2 核安装过程编译量小2 核足够内存4 GB最小 2 GB4 GB 更流畅图形界面下建议不低于 4 GB磁盘60 GBRHEL9 默认安装约 6~10 GB60 GB 为后续实验留足空间网络NAT 模式虚拟机共享宿主机网络便于出网下载软件包需要注意一个硬件虚拟化关键点物理机 BIOS 中必须开启 Intel VT-x / AMD-V 虚拟化支持否则虚拟机安装 64 位 Linux 内核时会直接报错或卡死这是新手最常遇到的硬件级别坑下文会展开说明。2. 系统镜像获取与安装前核心准备2.1 镜像下载与完整性校验RHEL9 官方镜像放在 Red Hat 官网的 Customer Portal 中需要注册账号才能下载。对于实验环境和学习用途你可以选择注册账号评估也可以使用社区重建版本的学习镜像。这里给一个通用的下载后校验方法。拿到 ISO 镜像后不能直接双击就安装要先校验 SHA-256 值确保镜像文件在下载过程中没有损坏、没有被掉包。Linux 类系统下校验命令如下sha256sum rhel-baseos-9.2-x86_64-dvd.isosha256sum输出的一长串字符要与镜像官网提供的校验值逐一比对。Windows 宿主机下则可以用 PowerShell 计算Get-FileHash .\rhel-baseos-9.2-x86_64-dvd.iso -Algorithm SHA256校验这一步很多人会跳过但我建议每次都做。网络传输导致的字节损坏并不罕见镜像不完整会引发安装中途各种诡异报错。2.2 虚拟机创建与关键参数设置VMware Workstation 中新建虚拟机时选择“典型”安装即可但后续几处参数必须手动调整在“选择客户机操作系统”时选“Red Hat Enterprise Linux 9 64 位”。如果虚拟机软件版本较旧列表中可能没有 RHEL9 选项此时选择“Other Linux 5.x 及更高版本内核 64 位”也可以正常使用。磁盘类型建议选 NVMeRHEL9 对 NVMe 支持已经非常成熟性能也更接近现代固态硬盘的实际表现。存储策略选“将虚拟磁盘存储为单个文件”快照操作时性能损耗更小。创建好虚拟机后在虚拟机设置里把“CD/DVD”指向刚才下载的 RHEL9 ISO 文件并勾选“启动时连接”。NAT 网络默认即可后续如果需要再自行切换到桥接模式。2.3 分区方案设计与 LVM 选型RHEL9 的安装器 Anaconda 支持自动分区和手动分区。实验环境建议用手动分区但不要追求过于复杂的划分。我这次用的方案与容量规划如下挂载点容量文件系统说明/boot1 GBXFS引导分区不参与 LVM/30 GBXFS根分区系统与软件包所在swap4 GBswap内存不足时的交换空间/home剩余空间XFS用户数据分区方便单独管理我用了 LVM 逻辑卷管理将 / 和 /home 都放在同一个卷组中。这样以后磁盘空间不够时可以灵活扩展逻辑卷不必重新分区。这里给个实际建议swap 分区是否需要那么大取决于你的内存大小。如果物理内存 8 GB 以上swap 给 4 GB 就够用了。如果内存只有 2 GB建议 swap 给到 4 GB防止编译操作时系统 OOM。3. 深入拆解安装全过程与初始化配置3.1 从引导到分区安装界面逐项操作实录使用 ISO 镜像启动虚拟机后会进入 GRUB 引导菜单。RHEL9 的安装界面里第一项是Install Red Hat Enterprise Linux 9.0按回车即可进入图形化安装程序。进入安装摘要界面后需要依次完成以下配置项“安装目的地”选择磁盘点击“完成”后进入自定义分区。这里的操作逻辑是先选择磁盘再选择“自定义”配置然后在“手动分区”中按上面设计好的分区方案逐步创建 /boot、/、/home 和 swap。“语言支持”选择简体中文同时键盘布局选择 English (US)。中文语言包对后续使用有帮助键盘布局用美式键盘则最省心。“时间与日期”选择“亚洲/上海”时区。如果不设置对时区按系统默认的美国时区后续日志时间会错乱。“软件选择”这里有两种典型选择。做纯命令操作实验选“最小安装”即可如果需要图形界面则选“带 GUI 的服务器”。我这次选的是最小安装尽可能贴近生产服务器的真实形态。安装过程中会有两次强制交互一次是设置 root 密码一次是创建普通用户。root 密码要足够强壮我建议大小写字母数字特殊字符不少于 10 位普通用户可以勾选“此用户为管理员”这样后续可以用这个账号执行 sudo 命令。3.2 安装源与软件仓库的可用性处理如果你使用官方 RHEL9 ISO 且没有订阅安装完成执行dnf install时会提示This system is not registered with an entitlement server这是实验环境最常见的问题。处理方案是在完成最小安装后修改 dnf 的仓库配置文件将 baseos 和 appstream 仓库指向本地挂载的安装镜像。实验中我采用的方式是直接把 ISO 挂载到一个固定目录然后写好本地仓库配置文件mkdir -p /mnt/cdrom mount -o loop /dev/sr0 /mnt/cdrom然后在/etc/yum.repos.d/下新建rhel9-local.repo内容为标准的本地仓库指向方式。这种“本地仓库”模式有两个好处不依赖外网下载速度远快于公共互联网源同时还能用来验证“企业内网离线部署”的场景。如果你用的是社区重建版本镜像EPEL 和官方源一般自带dnf update可以直接用无需额外处理。3.3 首次启动的基础配置与快照备份系统安装完成后会自动重启。首次登录用 root 账号进入系统后我建议按以下顺序做初始化更新系统软件包dnf update -y把内核和基础组件升到最新补丁级别。安装常用工具。最小安装连tar都有但没vim、wget、net-tools、bash-completion、unzip。一次性安装dnf install -y vim wget net-tools bash-completion unzip bind-utils配置主机名hostnamectl set-hostname rhel9-lab关闭或调整 SELinux我的建议是实验环境下先保持enforcing不动遇到权限被拒时检查上下文这样能学到排查思路也能在真实环境中反映问题。如果实在想省事可以临时setenforce 0但不要永久禁用。配置完系统后在 VMware 中对虚拟机执行“拍摄快照”命名为“初始安装完成”。这一步做完你就拥有了一个干净、可随时回溯的实验底座。之后学命令、跑服务、模拟故障都不怕系统搞坏。4. 命令操作实验从基础到实战场景4.1 系统信息与运行状态核心命令RHEL9 部署完成后首先要熟练使用查看系统状态的一套命令。我把它们分成“系统信息”和“运行状态”两类。系统信息常用命令uname -a # 查看内核完整版本 cat /etc/os-release # 查看发行版详细信息 hostnamectl # 查看主机名、操作系统、内核信息 lscpu # CPU 架构和核心数详情 free -h # 内存和 swap 使用情况 df -hT # 各分区文件系统类型和使用率这里重点说free -h。RHEL9 的 free 输出含义有细微变化available列比free列更能反映系统实际可分配内存。free -h显示的都是人类可读单位没有基础也能快速看懂。运行状态查看常用命令top # 动态查看进程与资源占用 ps -ef --forest # 进程树看父子进程关系 ss -tlnp # 当前监听的 TCP 端口和对应进程 dmesg | tail # 内核日志最后数十行生产环境排查故障时最常用的是ss -tlnp。比如启动了一个服务想知道服务有没有真正监听端口就靠这条命令确认。传统上用netstat但 RHEL9 上推荐用ss效率更高。4.2 用户、权限与文件操作实验要点这一部分是命令操作实验的重头戏。在 RHEL9 上创建用户、分配权限、切换身份是最基本的操作也是日常运维中每天都要做的。创建用户与设置密码实验useradd -m -d /home/dev01 -s /bin/bash dev01 # 创建用户 dev01 passwd dev01 # 交互式设置密码 usermod -aG wheel dev01 # 将用户加入 wheel 组获得 sudo 权限usermod -aG wheel dev01中的-aG是“追加到组”而不是“覆盖组”。如果漏掉-a会把用户当前所在的其他组全部清掉换成只有 wheel 组这是非常常见的误操作。文件权限实验演示一组完整案例touch /tmp/test.txt # 创建文件 chmod 754 /tmp/test.txt # 设置权限拥有者可读写执行属组可读执行其他人只读 chown dev01:dev01 /tmp/test.txt # 修改属主和属组 ls -l /tmp/test.txt # 查看权限状态数字方式配置权限很容易记错核心逻辑是r4、w2、x1数字相加。754 就是拥有者 7421属组 541其他人 44。如果只是熟悉文件操作逻辑chmod urwx,grx,or这种符号模式更直观。删除文件夹是日常高频命令也是事故率最高的命令rm -rf /tmp/test_dir-r是递归删除目录及内容-f是忽略不存在的文件不询问。这条命令必须小心使用特别要确认路径前面没有空格、没有打错目录名。4.3 文件查找、内容检索与文本处理实战找文件、找内容、处理文本这三个能力在运维里是刚需。实验过程中我建议把这些命令放在一起连做效果更好。文件定位类find /etc -name *.conf -type f # 找 /etc 下所有 .conf 配置文件 which systemctl # 查看命令对应的绝对路径 whereis nginx # 查找相关的二进制、源码、手册页位置内容检索类grep -rn PermitRootLogin /etc/ssh/ # 递归检索 ssh 配置中的关键参数 grep -E Failed|Accepted /var/log/secure # 查看登录失败或成功的认证日志文本处理类cat /var/log/messages | tail -n 50 # 查看日志最后 50 行 awk {print $1} /etc/passwd # 打印 passwd 第一列用户名 sed -i s/^#PasswordAuthentication/PasswordAuthentication/ /etc/ssh/sshd_configsed -i这里要注意加-i才会真正修改文件不加则只是把替换结果显示到屏幕。实验时可以先不加-i预览效果确认无误后再加参数执行。4.4 系统时间同步管理系统时间错误会导致日志时间错乱、证书验证失败、集群节点间数据不一致等连锁问题。RHEL9 默认使用 chrony 作为 NTP 客户端部署实验必须验证时间同步正常。查看时间同步状态timedatectl # 查看时区与时间同步状态 chronyc tracking # 查看当前时间源和偏差情况 chronyc sources -v # 查看 NTP 源列表^ 表示已经可用如果显示System clock synchronized: no说明同步存在问题。排查思路是确认 chrony 服务是否启动systemctl status chronyd、确认网络能访问 NTP 服务器、确认防火墙没有阻断 UDP 123 端口。配置时间源可编辑/etc/chrony.conf加入可信的 NTP 服务器地址。4.5 软件包管理 dnf 命令操作RHEL9 的yum命令虽然还存在但已经被 dnf 取代底层实现完全重做。常用操作如下dnf repolist # 列出当前可用仓库 dnf search nginx # 搜索软件包 dnf install -y nginx # 安装软件包及依赖 dnf remove nginx # 卸载软件包 dnf history # 查看 dnf 事务历史可回滚dnf history是维护阶段非常好用的命令。如果更新后系统异常可以查看历史事务 ID 并执行dnf history rollback ID将软件包状态回退到之前某个时间点。实验时如果软件源没有配置好dnf install会报Error: Unable to find a match或仓库不可用错误。这时回到上文本地仓库配置的部分排查。4.6 Shell 脚本实验从人工到自动化命令操作的核心进阶是 Shell 脚本。实验项目里我编写了一个最小可用的系统备份脚本这个脚本能串联前面练习过的命令验证“命令组合”解决实际问题的能力#!/bin/bash # 系统配置备份脚本打包 /etc 下关键配置按日期命名 BACKUP_DIR/root/backup DATE$(date %Y%m%d_%H%M%S) if [ ! -d $BACKUP_DIR ]; then mkdir -p $BACKUP_DIR fi tar czf $BACKUP_DIR/etc_backup_$DATE.tar.gz -C / etc/hosts etc/fstab etc/passwd find $BACKUP_DIR -type f -name *.tar.gz -mtime 7 -delete echo 备份完成: $BACKUP_DIR/etc_backup_$DATE.tar.gz写完后给执行权限并运行chmod x backup.sh ./backup.sh脚本里有一行非常重要的经验-mtime 7 -delete做的事情是清理 7 天前的备份文件。如果这行漏了一次备份占一点空间迟早挤爆硬盘。实际生产环境中“备份没做清理”引发的磁盘告警我见过不止一次。5. 常见问题与故障排查实操记录5.1 虚拟机安装 RHEL9 蓝屏与卡死的根因排查“虚拟机装 Linux 蓝屏”这个问题在一众 Linux 相关的热搜词里出现频率极高。我自己也在初学阶段遇到过。用 VMware 安装 RHEL9 时如果启动虚拟机后还没进入安装界面就蓝屏、报错或黑屏大概率原因有两个虚拟机软件本身版本太旧对新内核的虚拟化支持不全。解决方案是升级虚拟机软件到较新版本或改用 VirtualBox 最新版。物理机 BIOS 没有开启 CPU 虚拟化功能。可以进入宿主机 BIOS/UEFI找到 Intel Virtualization Technology或 AMD SVM Mode启用后重启宿主机再试。确认 Windows 下虚拟化是否开启可以在“任务管理器 - 性能 - CPU”中查看“虚拟化”状态显示“已启用”才表示硬件虚拟化可用。5.2 网络不通与 IP 地址配置问题最小安装完成后系统可能没有自动获取到 IP 地址。排查顺序建议如下ip addr show # 查看所有网卡和当前 IP 状态 ip route show # 查看路由表 nmcli device status # 查看设备状态确认网卡是否被 NetworkManager 管理如果网卡没有 IP使用 NetworkManager 配置静态 IP 的方式如下nmcli con mod ens160 ipv4.addresses 192.168.1.100/24 nmcli con mod ens160 ipv4.gateway 192.168.1.1 nmcli con mod ens160 ipv4.dns 8.8.8.8 223.5.5.5 nmcli con mod ens160 ipv4.method manual nmcli con up ens160RHEL9 的网络配置命令已经全面切换到nmcli不建议再手动修改/etc/sysconfig/network-scripts/ifcfg-ens160旧文件方式。新版本 NetworkManager 更智能也更容易排查配置状态。配置完静态 IP 以后用ping -c 4 网关地址测试三层连通性再用dig或nslookup验证 DNS 解析。5.3 命令找不到与 PATH 环境变量问题实验时经常遇到“明明安装了却提示 command not found”的情况。原因一般不是没装而是命令所在目录不在 PATH 中。比如安装完pip后有些版本会把命令安装到/usr/local/bin普通用户登录时这个目录不在默认 PATH 里。处理方式echo $PATH # 查看当前 PATH 包含哪些目录 which pip # 查看 pip 实际路径如果命令确实存在于某个目录可以手动执行完整路径也可以把目录追加到 PATHexport PATH$PATH:/usr/local/bin这个设置只在当前终端会话有效。要永久生效需要写进配置文件~/.bashrc或/etc/profile这是新手容易忽略的细节。5.4 SELinux 导致的服务权限被拒问题RHEL9 上 SELinux 默认是 enforcing 状态。实验过程中如果启动了一个自定义服务或者修改了非默认路径下的文件很可能遇到“明明权限对了但服务访问文件被拒绝”的异常。典型案例Nginx 服务使用了自定义 web 根目录/data/www结果打开页面 403 或 404。此时先看审计日志ausearch -m avc -ts recent如果确认是 SELinux 拒绝而不是文件权限问题可以恢复文件的安全上下文restorecon -Rv /data/www更规范的做法是用semanage把自定义目录标记为 httpd 可用的类型但实验阶段执行restorecon已经可以解决大部分问题。5.5 忘记 root 密码的破解与重置流程这个操作在实验环境里值得做一遍因为生产环境迟早会用到虽然名义上叫“忘记密码”但本质是进入单用户模式重置密码。RHEL9 重置 root 密码流程重启虚拟机在 GRUB 引导菜单出现时按下E键进入编辑模式。找到以linux开头的那一行在末尾追加rd.break。按CtrlX启动等待系统进入switch_root:/#提示符。依次执行mount -o remount,rw /sysroot chroot /sysroot passwd root touch /.autorelabel exit reboottouch /.autorelabel这一步很关键作用是让系统下次启动时重新标记 SELinux 安全上下文否则改过密码后可能因 SELinux 策略问题无法正常登录。6. 实验过程的复盘与扩展建议整套 RHEL9 部署与命令操作实验做下来我对这套系统的认知有了几个明显提升第一RHEL9 的命令体系已经全面拥抱新一代工具yum、iptables、ifconfig这些老命令虽然在但运维场景中应该逐步切换到dnf、nftables、ip组合第二SELinux 和 NetworkManager 不再是“可关可不管”的选项它们深度影响系统行为报错时第一反应应该是看 SELinux 和网络配置而不是怀疑软件本身第三快照与回滚绝对是实验场景中的最佳实践任何改动前打一个快照节省的时间难以估算。这个实验做完之后还可以继续扩展以下几个方向每个方向都值得单独写一篇实操记录服务化部署实验把 Nginx、MySQL、Redis 等常用服务装起来配合 systemd 管理。重点看服务单元文件怎么写、如何设置开机自启、如何通过 journalctl 查看服务日志。Shell 脚本进阶实验从备份脚本扩展到批量修改用户密码、批量部署配置文件、定时任务配合脚本实现日志轮转。系统监控与性能排查熟悉top、iostat、sar、perf这些工具学会通过压力测试定位 CPU、内存、磁盘、网络瓶颈。进程与服务管理深入掌握 systemd 的单元依赖关系、资源限制配置理解进程信号与退出码机制这些内容对日后排查“服务莫名其妙挂掉”类问题价值极大。Linux 运维能力的成长曲线从来不是线性的大量的经验来自一次次“把系统搞挂再恢复”。RHEL9 部署实验提供了这样一个低成本试错环境推荐每个想深入 Linux 运维的人认真做一遍切忌跳过故障排查环节直接在干净系统上敲命令。那些排查问题的思考过程才是这份实验报告最具价值的部分。
返回列表