2021-10-23 07:29:40
解决CentOS系统故障需结合日志分析、工具诊断和针对性操作,以下是具体步骤和注意事项:
一、基础排查步骤检查系统日志
/var/log/messages:核心系统日志,记录启动、服务运行等事件。
/var/log/secure:安全日志,包含SSH登录、认证失败等信息。
/var/log/httpd/error_log(若使用Apache):Web服务错误详情。
操作:使用cat、less或grep快速定位关键词(如error、fail)。
使用诊断工具
内核与硬件问题:
dmesg:查看内核环缓冲区,识别硬件驱动错误(如磁盘、网卡故障)。
journalctl -xe(CentOS 7+):分析systemd日志,定位服务启动失败原因。
资源监控:
top/htop:实时查看CPU、内存占用,识别异常进程。
vmstat 1:监控虚拟内存、交换分区使用情况。
iostat -x 1:分析磁盘I/O延迟,判断存储性能瓶颈。
连通性测试
ping <IP/域名>:确认基础网络可达性。
traceroute <目标>:追踪路由路径,定位网络中断点。
端口与服务状态
netstat -tulnp:查看监听端口及对应进程。
ss -tulnp(更高效替代):快速统计连接状态。
ifconfig或ip addr:检查网卡配置(IP、子网掩码)。
防火墙与路由
iptables -L(CentOS 6)或firewall-cmd --list-all(CentOS 7+):确认防火墙规则。
route -n:检查路由表是否配置正确。
磁盘空间检查
df -h:查看分区使用率,识别满载磁盘。
du -sh */:递归统计目录大小,定位大文件或异常占用。
文件系统修复
非运行状态修复:
重启进入单用户模式(内核参数添加init=/bin/bash)。
执行fsck -y /dev/<分区>(如/dev/sda1)。
注意:强制修复(-f)可能丢失数据,需提前备份。
服务状态控制
systemctl status <服务名>:查看服务运行状态及错误日志。
systemctl restart <服务名>:重启服务(如nginx、mysql)。
软件包操作
yum update:升级所有包至最新版本(修复已知漏洞)。
yum remove <包名>:卸载冲突或无用软件。
依赖问题:添加--skip-broken跳过错误包,或手动解决依赖冲突。
磁盘SMART检测
安装smartmontools后执行:smartctl -a /dev/sda
关注Reallocated_Sector_Ct、UDMA_CRC_Error_Count等字段。
内存测试
使用memtest86+(需从Live CD启动):运行完整测试(建议4轮以上)。
救援模式修复
插入CentOS安装介质,选择Troubleshooting > Rescue a CentOS system。
挂载原系统根分区(chroot /mnt/sysimage)后执行修复操作。
数据备份策略
定期使用rsync或tar备份关键目录(如/etc、/home)。
异地存储备份文件,避免单点故障。
内核崩溃分析
若系统无法启动,检查/var/log/dmesg或journalctl --dmesg。
尝试更换内核版本(yum install kernel-<版本>)。
文件权限修复
误删系统文件时,从相同版本系统复制文件或使用rpm -qf <文件>查询所属包,重新安装。
定期维护
每周执行yum update和yum clean all清理缓存。
每月检查日志文件大小(ls -lh /var/log/),避免日志占用过多空间。
监控告警
部署Nagios或Zabbix监控CPU、内存、磁盘I/O。
设置logrotate自动轮转日志(配置文件在/etc/logrotate.conf)。
通过以上步骤,可系统化解决CentOS常见故障。若问题复杂(如内核panic、存储阵列故障),建议结合官方文档(