目录
案例1:GRUB引导故障
案例2:文件系统只读故障
案例3:OOM Killer触发
案例4:系统启动卡住(initramfs损坏)
案例5:磁盘空间耗尽
案例6:SSH登录缓慢
案例7:逻辑卷无法扩展
案例8:内核模块冲突
案例9:NTP时间不同步
案例10:SELinux导致服务异常
案例11、root密码遗忘
学习建议
案例1:GRUB引导故障
故障现象: 系统启动卡在"GRUB>"提示符,无法进入系统 原因分析:
-
GRUB配置文件损坏(/boot/grub/grub.cfg)
-
引导文件被误删或磁盘损坏 解决步骤:
-
在GRUB命令行依次执行:
set root=(hd0,msdos1) linux /vmlinuz root=/dev/sda1 initrd /initramfs.img boot
-
进入系统后执行:
grub2-mkconfig -o /boot/grub2/grub.cfg
案例2:文件系统只读故障
故障现象: 无法创建文件,提示"Read-only file system" 排查过程:
-
dmesg | grep -i error
发现磁盘I/O错误 -
smartctl -a /dev/sda
检查磁盘健康状态 解决方案: -
卸载分区:
umount /dev/sda1
-
强制修复:
fsck -y /dev/sda1
-
重新挂载:
mount -a
案例3:OOM Killer触发
故障现象: 关键进程突然被终止,系统日志出现"Killed process" 分析工具:
-
grep -i 'killed process' /var/log/messages
-
free -h
查看内存使用情况 -
vmstat 1
监控内存交换 优化方案:
-
调整oom_score_adj:
echo -100 > /proc/[PID]/oom_score_adj
-
修改sysctl.conf:
vm.overcommit_memory = 2 vm.overcommit_ratio = 80
案例4:系统启动卡住(initramfs损坏)
故障现象: 启动时卡在"Loading initial ramdisk" 紧急处理:
-
进入救援模式(troubleshooting)使用re
-
重建initramfs:
chroot /mnt/sysimage dracut -f /boot/initramfs-$(uname -r).img $(uname -r)
案例5:磁盘空间耗尽
故障现象: 服务异常,df显示使用率100% 快速定位:
-
lsof -n | grep deleted
查找未释放空间的进程 -
du -xh --max-depth=1 / | sort -hr
定位大文件 典型场景:
-
/var/log/journal 日志膨胀:
journalctl --vacuum-size=100M
-
/tmp目录堆积:
rm -rf /tmp/*.tmp
案例6:SSH登录缓慢
故障现象: SSH连接延迟超过10秒 排查步骤:
-
ssh -vvv user@host
查看详细日志 -
检查DNS配置:
UseDNS no
in sshd_config -
关闭GSSAPI认证:
GSSAPIAuthentication no
-
strace -p [sshd_PID]
跟踪系统调用
案例7:逻辑卷无法扩展
故障现象: lvextend后文件系统未扩容 正确操作流程:
lvextend -L +10G /dev/vg01/lv_data resize2fs /dev/vg01/lv_data # 对ext4文件系统 xfs_growfs /data # 对XFS文件系统
注意事项:
-
确保物理卷有足够空间:
vgs
查看Free PE -
在线扩容无需卸载
案例8:内核模块冲突
故障现象: 系统更新后网卡失效 解决方案:
-
lsmod | grep igb
查看加载模块 -
modinfo igb
检查模块信息 -
rmmod igb && modprobe igb
重载驱动 -
回滚驱动:
dnf reinstall kmod-igb-5.4.0
案例9:NTP时间不同步
故障现象: 日志出现"Clock skew detected"警告 排错流程:
-
ntpq -pn
查看时间源状态 -
chronyc sources -v
检查chrony同步状态 -
systemctl restart chronyd
-
硬件时钟同步:
hwclock --systohc
案例10:SELinux导致服务异常
故障现象: Apache无法访问自定义目录 诊断方法:
-
tail -f /var/log/audit/audit.log | grep httpd
-
sealert -a /var/log/audit/audit.log
解决方案:
# 临时解决 setenforce 0 # 永久方案 semanage fcontext -a -t httpd_sys_content_t "/webroot(/.*)?" restorecon -Rv /webroot
案例11、root密码遗忘
在RHEL/CentOS 7及更新版本中,如果忘记root密码,可以通过以下步骤重置(需物理/虚拟控制台访问权限):
方法原理
通过修改GRUB2启动参数进入单用户模式,绕过身份验证直接获取root权限
详细操作步骤
-
重启系统并中断引导
# 当系统启动到GRUB菜单时,快速按下方向键阻止自动引导 # 选择默认内核条目(通常第一条)按 `e` 键进入编辑模式
-
修改内核参数
# 在linux16行(或linux行)末尾追加: rd.break enforcing=0 # 修改后的完整行示例: linux16 /vmlinuz-3.10.0-1160.el7.x86_64 root=/dev/mapper/rhel-root rw rd.break enforcing=0
-
进入紧急模式
# 按 Ctrl+X 启动系统,进入紧急救援模式的shell环境 # 此时文件系统挂载在/sysroot(只读模式)
-
重新挂载文件系统
# 重新挂载为读写模式: mount -o remount,rw /sysroot
-
切换根目录
chroot /sysroot
-
修改root密码
# 此时已获得完整root权限: passwd root # 输入新密码两次(不会显示输入内容)
-
修复SELinux上下文
# 强制重新标记文件系统(重要!): touch /.autorelabel
-
退出并重启
exit exit reboot
关键参数说明
参数 | 作用 |
---|---|
rd.break | 在内核加载初期中断启动流程 |
enforcing=0 | 临时禁用SELinux强制模式 |
注意事项
-
磁盘加密系统:若启用了LUKS加密,需先解密再操作
-
云服务器:部分云平台需通过VNC或救援模式操作
-
时间控制:
.autorelabel
会导致首次重启时间较长(约5-15分钟) -
UEFI系统:可能需要关闭Secure Boot功能
-
审计日志:系统日志会记录密码修改操作(/var/log/audit/audit.log)
替代方案(适用于不同场景)
-
init方法:
# 在GRUB的linux行后追加: init=/bin/bash
-
systemd方法:
systemctl edit --force --full rescue.target
防范建议
-
配置sudo权限给普通用户
-
使用密码管理工具(如KeePass)
-
定期进行密码备份(加密存储)
-
启用SSH密钥认证+sudo组合验证
该方法适用于:RHEL/CentOS 7/8/9、Oracle Linux 7+、Fedora 19+等使用systemd的系统
学习建议
-
每个案例配套实验环境(VM快照)
-
故障模拟建议:
-
使用dd破坏文件系统头
-
使用stress触发OOM
-
手动删除grub.cfg
-
-
考核方式:故障场景重现→学员排障→处理报告
附加资源推荐:
-
Linux Performance观测工具集(perf, ftrace)
-
systemd-analyze分析启动耗时
-
eBPF工具链(BCC工具包)