工作中的故障排查

目录

案例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)

  • 引导文件被误删或磁盘损坏 解决步骤

  1. 在GRUB命令行依次执行:

    set root=(hd0,msdos1)
    linux /vmlinuz root=/dev/sda1
    initrd /initramfs.img
    boot
  2. 进入系统后执行:grub2-mkconfig -o /boot/grub2/grub.cfg

案例2:文件系统只读故障

故障现象: 无法创建文件,提示"Read-only file system" 排查过程

  1. dmesg | grep -i error 发现磁盘I/O错误

  2. smartctl -a /dev/sda 检查磁盘健康状态 解决方案

  3. 卸载分区:umount /dev/sda1

  4. 强制修复:fsck -y /dev/sda1

  5. 重新挂载:mount -a

案例3:OOM Killer触发

故障现象: 关键进程突然被终止,系统日志出现"Killed process" 分析工具

  1. grep -i 'killed process' /var/log/messages

  2. free -h 查看内存使用情况

  3. 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" 紧急处理

  1. 进入救援模式使用live CD

  2. 重建initramfs:

    chroot /mnt/sysimage
    dracut -f /boot/initramfs-$(uname -r).img $(uname -r)

案例5:磁盘空间耗尽

故障现象: 服务异常,df显示使用率100% 快速定位

  1. lsof -n | grep deleted 查找未释放空间的进程

  2. du -xh --max-depth=1 / | sort -hr 定位大文件 典型场景

  • /var/log/journal 日志膨胀:journalctl --vacuum-size=100M

  • /tmp目录堆积:rm -rf /tmp/*.tmp

案例6:SSH登录缓慢

故障现象: SSH连接延迟超过10秒 排查步骤

  1. ssh -vvv user@host 查看详细日志

  2. 检查DNS配置:UseDNS no in sshd_config

  3. 关闭GSSAPI认证:GSSAPIAuthentication no

  4. 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:内核模块冲突

故障现象: 系统更新后网卡失效 解决方案

  1. lsmod | grep igb 查看加载模块

  2. modinfo igb 检查模块信息

  3. rmmod igb && modprobe igb 重载驱动

  4. 回滚驱动:dnf reinstall kmod-igb-5.4.0

案例9:NTP时间不同步

故障现象: 日志出现"Clock skew detected"警告 排错流程

  1. ntpq -pn 查看时间源状态

  2. chronyc sources -v 检查chrony同步状态

  3. systemctl restart chronyd

  4. 硬件时钟同步:hwclock --systohc

案例10:SELinux导致服务异常

故障现象: Apache无法访问自定义目录 诊断方法

  1. tail -f /var/log/audit/audit.log | grep httpd

  2. 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权限


详细操作步骤

  1. 重启系统并中断引导

# 当系统启动到GRUB菜单时,快速按下方向键阻止自动引导
# 选择默认内核条目(通常第一条)按 `e` 键进入编辑模式

    2.修改内核参数

# 在linux16行(或linux行)末尾追加:
rd.break enforcing=0
​
# 修改后的完整行示例:
linux16 /vmlinuz-3.10.0-1160.el7.x86_64 root=/dev/mapper/rhel-root ro rd.break enforcing=0

   3.进入紧急模式

# 按 Ctrl+X 启动系统,进入紧急救援模式的shell环境
# 此时文件系统挂载在/sysroot(只读模式)

   4.重新挂载文件系统

# 重新挂载为读写模式:
mount -o remount,rw /sysroot

   5.切换根目录

chroot /sysroot

  6.修改root密码

# 此时已获得完整root权限:
passwd root
# 输入新密码两次(不会显示输入内容)

 7.修复SELinux上下文

# 强制重新标记文件系统(重要!):
touch /.autorelabel

 8 .退出并重启

exit
exit
reboot

关键参数说明

参数作用
rd.break在内核加载初期中断启动流程
enforcing=0临时禁用SELinux强制模式

注意事项

  1. 磁盘加密系统:若启用了LUKS加密,需先解密再操作

  2. 云服务器:部分云平台需通过VNC或救援模式操作

  3. 时间控制.autorelabel会导致首次重启时间较长(约5-15分钟)

  4. UEFI系统:可能需要关闭Secure Boot功能

  5. 审计日志:系统日志会记录密码修改操作(/var/log/audit/audit.log)


替代方案(适用于不同场景)

  1. init方法

    # 在GRUB的linux行后追加:
    init=/bin/bash
  2. systemd方法

    systemctl edit --force --full rescue.target

防范建议

  1. 配置sudo权限给普通用户

  2. 使用密码管理工具(如KeePass)

  3. 定期进行密码备份(加密存储)

  4. 启用SSH密钥认证+sudo组合验证

该方法适用于:RHEL/CentOS 7/8/9、Oracle Linux 7+、Fedora 19+等使用systemd的系统

建议

  1. 每个案例配套实验环境(VM快照)

  2. 故障模拟建议:

    • 使用dd破坏文件系统头

    • 使用stress触发OOM

    • 手动删除grub.cfg

  3. 考核方式:故障场景重现→学员排障→处理报告

附加资源推荐:

  • Linux Performance观测工具集(perf, ftrace)

  • systemd-analyze分析启动耗时

  • eBPF工具链(BCC工具包)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值