1. CentOS 7.9常见问题全景分析
作为一款长期支持的企业级Linux发行版,CentOS 7.9在服务器领域拥有广泛的应用基础。但在实际运维中,从基础环境配置到核心服务部署,每个环节都可能遭遇各种"拦路虎"。本文将系统梳理笔者在五年生产环境运维中积累的典型故障案例,涵盖系统层、网络层、存储层等核心模块的故障排查方法论。
重要提示:所有操作前务必做好快照备份,部分修复操作可能导致服务中断
2. 系统基础环境类故障
2.1 yum仓库配置异常
典型报错:
Could not resolve host: mirrorlist.centos.org处理流程:
- 检查网络连通性:
ping -c 4 114.114.114.114 traceroute mirrorlist.centos.org- 测试DNS解析:
nslookup mirrorlist.centos.org dig @8.8.8.8 mirrorlist.centos.org- 临时更换仓库源:
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*2.2 内核参数调优冲突
常见于高并发场景,报错示例:
kernel: TCP: too many orphaned sockets优化方案:
# 查看当前参数 sysctl -a | grep net.ipv4.tcp_max_orphans # 永久修改配置 echo "net.ipv4.tcp_max_orphans = 16384" >> /etc/sysctl.conf sysctl -p3. 存储管理典型故障
3.1 LVM扩容失败处理
当执行vgextend报错:
Insufficient free extents解决方案:
- 检查物理卷剩余空间:
pvdisplay- 扩展物理设备分区(以/dev/sda为例):
fdisk /dev/sda # 删除重建分区(注意起始柱面保持不变) partprobe pvresize /dev/sda23.2 XFS文件系统修复
遇到断电等异常关机后:
XFS (sdb1): Metadata corruption detected修复步骤:
xfs_repair -v /dev/sdb1 # 若提示log报错则先清空日志 xfs_repair -L /dev/sdb14. 网络服务排错指南
4.1 firewalld规则失效
明明添加了规则但未生效:
firewall-cmd --list-all深度排查:
- 检查运行时与永久规则差异:
firewall-cmd --list-all --permanent- 查看底层iptables转换:
iptables-save | grep 33064.2 SELinux导致服务异常
典型报错:
avc: denied { write } for pid=xxx快速定位:
ausearch -m avc -ts recent临时解决方案:
setenforce 0 # 生产环境建议生成新策略 audit2allow -a -M mysqld_local semodule -i mysqld_local.pp5. 性能问题深度排查
5.1 系统负载飙升分析
当load average持续高于CPU核心数:
# 快速定位方向 top -c -H vmstat 1 5 iostat -x 1 3进阶工具链:
perf top -g strace -p <PID> -T -tt -o debug.log5.2 内存泄漏追踪
发现free -h中buff/cache持续增长:
# 按内存占用排序进程 ps aux --sort=-%mem | head # 查看slab分配 slabtop -o # 清除缓存(测试环境) echo 3 > /proc/sys/vm/drop_caches6. 安全加固实践
6.1 SSH防暴力破解
关键配置/etc/ssh/sshd_config:
PermitRootLogin no MaxAuthTries 3 LoginGraceTime 1m UseDNS no实时监控:
# 查看失败尝试 grep "Failed password" /var/log/secure # 自动封禁工具 yum install fail2ban6.2 内核漏洞修复
检查已知漏洞:
yum updateinfo list cves yum updateinfo info CVE-2021-4034热补丁方案:
yum install kpatch kpatch-static install patch-file.kpatch7. 崩溃转储分析
7.1 kdump配置要点
确保预留足够内存:
grubby --args="crashkernel=auto" --update-kernel=ALL systemctl enable kdump测试触发:
echo c > /proc/sysrq-trigger7.2 vmcore分析基础
安装分析工具:
yum install crash基本命令:
crash /usr/lib/debug/lib/modules/$(uname -r)/vmlinux /var/crash/xxx/vmcore bt -a ps log8. 日志管理进阶技巧
8.1 journalctl高级用法
按时间过滤:
journalctl --since "2023-01-01 00:00:00" --until "2023-01-02 12:00:00"关联分析:
journalctl -u nginx -u php-fpm --no-pager -n 508.2 日志轮转配置
示例/etc/logrotate.d/nginx:
/var/log/nginx/*log { daily missingok rotate 30 compress delaycompress notifempty sharedscripts postrotate /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true endscript }9. 硬件相关故障处理
9.1 磁盘坏道检测
全面检测:
badblocks -v /dev/sdbSMART检测:
yum install smartmontools smartctl -H /dev/sda smartctl -t long /dev/sda9.2 内存故障诊断
memtest86+使用:
yum install memtest86+ memtester 1G 3高级检测:
yum install mcelog mcelog --cpu --memory10. 应急恢复方案
10.1 单用户模式破解密码
- 启动时按e进入编辑模式
- 在linux16行末尾添加
rd.break - 挂载并修改:
mount -o remount,rw /sysroot chroot /sysroot passwd root touch /.autorelabel10.2 文件系统只读修复
当出现Read-only file system:
mount -o remount,rw / # 检查文件系统错误 dmesg | grep EXT4 fsck -y /dev/sda111. 容器相关排错
11.1 Docker存储驱动问题
典型报错:
Error starting daemon: error initializing graphdriver解决方案:
rm -rf /var/lib/docker/* dockerd --storage-driver=overlay211.2 Podman权限问题
Rootless模式报错:
permission denied while trying to connect to the Docker daemon socket正确配置:
podman system migrate export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/podman/podman.sock12. 自动化运维集成
12.1 Ansible连接优化
SSH连接超时问题:
[ssh_connection] ssh_args = -o ControlMaster=auto -o ControlPersist=60s pipelining = True12.2 Cron环境变量缺失
脚本在终端可执行但cron失败:
# 在crontab中声明环境变量 SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin13. 编译安装问题处理
13.1 依赖缺失报错
典型报错:
configure: error: C compiler cannot create executables基础环境搭建:
yum groupinstall "Development Tools" yum install epel-release yum install gcc-c++ make cmake313.2 动态链接库问题
报错示例:
error while loading shared libraries: libssl.so.1.1解决方案:
ldconfig -p | grep libssl ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/ ldconfig14. 时间同步问题排查
14.1 chronyd同步失败
检查时间源状态:
chronyc sources -v chronyc tracking强制同步:
chronyc makestep systemctl restart chronyd14.2 时区配置错误
查看当前时区:
timedatectl修改时区:
timedatectl set-timezone Asia/Shanghai hwclock --systohc15. 虚拟化相关问题
15.1 KVM虚拟机连接失败
检查libvirtd服务:
systemctl status libvirtd virsh list --all网络桥接配置:
brctl show virsh net-list15.2 VMware Tools异常
重新安装工具:
yum install open-vm-tools systemctl enable vmtoolsd vmware-toolbox-cmd stats version16. 数据库相关排错
16.1 MySQL启动失败
日志分析:
journalctl -xe -u mysqld tail -n 100 /var/log/mysqld.log修复表:
mysqld --initialize-insecure mysql_upgrade -u root -p16.2 PostgreSQL权限问题
配置pg_hba.conf:
host all all 192.168.1.0/24 md5重载配置:
su - postgres psql -c "SELECT pg_reload_conf()"17. Web服务排错
17.1 Nginx 502错误
后端服务检查:
curl -I http://127.0.0.1:8080 ss -tlnp | grep 8080超时参数调整:
location / { proxy_connect_timeout 300s; proxy_send_timeout 300s; proxy_read_timeout 300s; }17.2 Apache内存泄漏
查看内存使用:
ps aux | grep httpd | sort -nk4优化配置:
<IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxRequestWorkers 150 MaxConnectionsPerChild 1000 </IfModule>18. 邮件服务问题
18.1 Postfix队列积压
查看队列状态:
mailq postqueue -p立即投递:
postqueue -f postsuper -d ALL deferred18.2 Dovecot认证失败
调试模式:
dovecot -n telnet localhost 143日志分析:
journalctl -u dovecot --no-pager -n 5019. 备份恢复方案
19.1 tar备份完整性校验
创建校验文件:
tar cvzf backup.tar.gz --verify -W /data验证备份:
tar tvzf backup.tar.gz tar diff -f backup.tar.gz19.2 rsync增量同步
排除特定目录:
rsync -avz --delete --exclude='tmp/' /data/ user@backup:/backup/带宽限制:
rsync --bwlimit=10000 -avz /data backup-server:/path20. 内核调优实践
20.1 文件描述符限制
查看当前设置:
ulimit -n sysctl fs.file-max永久生效:
echo "* soft nofile 65535" >> /etc/security/limits.conf echo "fs.file-max = 100000" >> /etc/sysctl.conf20.2 网络连接优化
TIME_WAIT状态处理:
echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf echo "net.ipv4.tcp_fin_timeout = 30" >> /etc/sysctl.conf sysctl -p