Ubuntu Server 常见故障排查指南

Ubuntu Server(以24.04 LTS Noble Numbat系列及后续版本为主)在生产环境中会遇到多种典型故障。这些问题大多源于配置漂移、资源耗尽、软件依赖冲突、云环境特性或安全事件。以下按发生频率与影响严重度排序,列出最常见的10类故障、典型症状、根本原因分析以及系统化排查/修复思路。

1. 磁盘空间耗尽(No space left on device)——最常见生产故障

典型症状:无法写入新文件、服务崩溃、apt update失败、日志停止写入 高概率原因

  • journald持久化日志无限增长(/var/log/journal)
  • Docker/Podman镜像、容器、volume堆积(/var/lib/docker)
  • apt缓存未清理 + snap旧版本残留
  • /tmp或用户缓存爆炸
  • Inode耗尽(小文件过多)

排查与修复思路

  1. df -hT + df -i → 定位满的分区与inode使用
  2. sudo du -sh /* | sort -hr | head → 找大目录
  3. 重点检查:journalctl --disk-usage → vacuum-size=500M 或配置SystemMaxUse
  4. apt clean + autoremove;snap list --all清理disabled版本
  5. docker system prune -a --volumes(慎用)
  6. lsof / | grep deleted → 重启持有已删文件句柄的服务释放空间

2. 系统运行缓慢 / 高负载 / 响应卡顿

典型症状:SSH输入延迟、命令执行慢、Web/API超时、load average远超核数 高概率原因

  • CPU steal高(云超售)
  • 内存压力 → swap thrashing
  • IO等待高(日志/数据库写满)
  • 单个进程吃光资源(内存泄漏、挖矿脚本)

排查思路

  1. uptime / top / htop → load平均值、各核使用、iowait
  2. free -h + vmstat 1 5 → swap使用、si/so列
  3. mpstat 1 5 → %steal(>5–10%基本是云问题)
  4. iotop -o / pidstat -d → 找IO狂魔
  5. journalctl --disk-usage + du -sh /var/log/* → 日志爆炸
  6. ps aux --sort=-%cpu/-mem | head → 定位异常进程

快速缓解:kill -9 异常PID、重启服务、临时journal vacuum、启用zram

3. 网络/DNS/连接问题(无法apt update、ping外网失败)

典型症状:能ping IP但域名不通、apt 404/超时、SSH间歇断开 高概率原因

  • Netplan配置错误(YAML缩进、dhcp4未关)
  • systemd-resolved异常(DNS缓存或stub-resolver冲突)
  • 云元数据网络覆盖
  • 防火墙/UFW误封
  • 仓库服务器临时故障(2025年曾多次出现)

排查思路

  1. ip addr / ip route → 接口IP、默认路由是否存在
  2. cat /etc/resolv.conf → nameserver是否正确(8.8.8.8等)
  3. ping 8.8.8.8 vs ping www.google.com → 区分链路 vs DNS
  4. systemd-resolve --status 或 resolvectl status → 检查resolved状态
  5. sudo netplan apply → 重新应用配置
  6. 临时:echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf

4. 服务启动失败 / Failed to start xxx.service

典型症状:systemctl status 显示failed、journalctl -u 服务名报错 高概率原因

  • 配置语法错误(nginx.conf、my.cnf等)
  • 端口冲突
  • 权限问题(文件所有者/SELinux/AppArmor)
  • 依赖服务未启动
  • 资源限制过严(MemoryMax等)

排查思路

  1. systemctl status 服务名 -l -n 50 → 最近日志
  2. journalctl -u 服务名 -xe → 详细错误
  3. systemctl cat 服务名 → 查看最终加载的配置(含override)
  4. ss -tuln | grep 端口 → 检查占用
  5. AppArmor:aa-status + aa-logprof 修复拒绝

5. 开机卡住 / 进入initramfs / emergency mode

典型症状:grub后黑屏、busybox提示、emergency shell 高概率原因

  • 根分区UUID变化(磁盘顺序变、LVM失败)
  • initrd缺少驱动(新硬件、加密磁盘)
  • 文件系统损坏(ext4 dirty)
  • cloud-init卡住(云元数据不可达)

排查思路

  1. 进入emergency shell后 mount -o remount,rw /
  2. journalctl -xb 或 dmesg → 查看内核错误
  3. fsck -f /dev/对应分区 → 修复文件系统
  4. update-initramfs -u -k all → 重建initrd
  5. blkid → 核对UUID与 /etc/fstab 匹配

6. SSH登录失败 / 连接超时 / Permission denied

典型症状:Connection refused、Permission denied (publickey)、超时 高概率原因

  • sshd未启动或端口被UFW封
  • 密钥权限700/600不对
  • PasswordAuthentication no 但无密钥
  • 云安全组未放行22端口
  • fail2ban/CrowdSec误封自己IP

排查思路

  1. 云控制台登录检查 systemctl status ssh
  2. ufw status → 是否allow ssh
  3. journalctl -u ssh -n 100 → 认证失败记录
  4. chmod 700 ~/.ssh;chmod 600 ~/.ssh/authorized_keys
  5. fail2ban-client status sshd → 查看ban列表

7. apt update/upgrade失败(仓库不可达、签名错误)

典型症状:404 Not Found、Hash Sum mismatch、NO_PUBKEY 高概率原因

  • 镜像源网络问题或过期
  • 仓库服务器临时故障(2025年多次发生)
  • sources.list 被修改
  • 时间不同步(证书验证失败)

排查思路

  1. timedatectl → 时间/时区正确
  2. sudo apt update → 看具体报错
  3. 换源:sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.list
  4. apt-key adv --refresh-keys 或 gpg --keyserver keyserver.ubuntu.com --recv-keys

8. 安全入侵/挖矿/异常进程

典型症状:CPU异常高、未知进程(kdevtmpfsi、kinsing等)、chattr +i 锁定文件 排查思路

  1. top/htop → 排序CPU/内存
  2. ps auxf | grep 可疑
  3. netstat -tuln / ss -tuln → 异常监听端口
  4. last / w / who → 可疑登录
  5. find / -name "[0-9a-f]{32}" 或 strings 可疑二进制 → 特征匹配
  6. journalctl -u ssh + auth.log → 暴力破解记录

9. Snap/Docker相关问题

典型症状:snap refresh卡死、docker pull失败、容器启动慢 排查思路: snap:snap changes + snap refresh --hold docker:docker info → storage-driver、df -h /var/lib/docker

10. 云环境特有问题

  • 元数据不可达 → cloud-init失败
  • 磁盘未扩展 → growpart + resize2fs
  • 高steal → 升级实例规格

通用排查框架

  1. 描述问题:症状、复现条件、最近变更
  2. 快速扫描:uptime、top/free/df/iostat/mpstat
  3. 日志优先:journalctl -b -p err、dmesg、/var/log/syslog/auth.log
  4. 分层定位:硬件→内核→initrd→systemd→服务→应用
  5. 验证修复:改动后重启服务/系统测试

掌握以上常见故障的症状与一分钟快速检查命令,能解决90%以上的Ubuntu Server日常问题。生产环境建议部署Netdata/Prometheus实时监控 + 告警,提前发现异常趋势。

THE END