简介
Ubuntu Server 是一个可靠且被广泛采用的 Linux 发行版,但即使是最可靠的系统也可能面临影响性能或中断运营的挑战。了解如何排查常见问题对于维持正常运行时间和确保无缝功能至关重要。在本指南 “Ubuntu Server 常见问题排查” 中,我们将探讨诊断和解决常见问题的实用技术,例如启动失败、SSH 连接错误、网络问题等。你还将学习如何有效利用系统日志来查明问题的根本原因,并将服务器恢复到最佳性能。
往期文章:
01. Ubuntu Server 简介 – SysOSX: AI & Cloud
02. 如何搭建你的第一台 Ubuntu 服务器:初学者指南 – SysOSX: AI & Cloud
03.Ubuntu Server 的 Linux 命令行精通 – SysOSX: AI & Cloud
04. 在 Ubuntu Server 上管理用户和权限:综合指南 – SysOSX: AI & Cloud
05. Ubuntu Server 网络基础:综合指南 – SysOSX: AI & Cloud
06. 在 Ubuntu Server 上安装和管理软件:完整指南 – SysOSX: AI & Cloud
07.为 Ubuntu Server 打补丁和更新:综合指南 – SysOSX: AI & Cloud
08. 保护你的 Ubuntu 服务器:加固和防护的实用步骤 – SysOSX: AI & Cloud
10. Ubuntu Server 系统监控工具:综合指南 – SysOSX: AI & Cloud
11. Ubuntu 服务器集中式日志记录:必读指南 – SysOSX: AI & Cloud
12. Ubuntu Server 审计与合规:最佳实践 – SysOSX: AI & Cloud
13.为 Ubuntu Server 设置托管和 Web 应用:终极指南 – SysOSX: AI & Cloud
14. 在一台 Ubuntu 服务器上托管多个网站:实用技巧 – SysOSX: AI & Cloud
15. 在 Ubuntu Server 上管理存储和磁盘:简单指南 – SysOSX: AI & Cloud
16. 在 Ubuntu Server 上设置文件共享服务:完整指南 – SysOSX: AI & Cloud
17. 在 Ubuntu 上设置安全的数据库服务器:MySQL 与 MariaDB – SysOSX: AI & Cloud
18. 如何在 Ubuntu Server 上配置和使用 LVM:综合指南 – SysOSX: AI & Cloud
19. 使用 KVM 进行虚拟化简介:Ubuntu Server 初学者指南 – SysOSX: AI & Cloud
20. 如何在 Ubuntu Server 上安装 Docker:容器化分步指南 – SysOSX: AI & Cloud
21. LXD 入门:轻松安装容器 + 速查表 – SysOSX: AI & Cloud
22. 在 Ubuntu Server 上开始使用 Podman:完整指南 – SysOSX: AI & Cloud
23. 在云中部署 Ubuntu Server:分步指南 – SysOSX: AI & Cloud
24. 使用 Ansible 自动搭建 Ubuntu Server:实用指南 – SysOSX: AI & Cloud
25.将 Ubuntu Server 从 22.04 升级到 24.04:分步指南 – SysOSX: AI & Cloud
目录
Ubuntu Server 常见问题及排查方法
1. 启动问题
启动问题可能是由损坏的文件、硬件故障或配置错误引起的。
症状:
- 服务器无法启动,并显示空白屏幕或错误消息。
- GRUB 菜单无法访问或缺失。
- 启动期间出现内核恐慌错误。
排查步骤:
步骤 1:访问 GRUB 菜单
重启服务器并按住 Shift 键(或 Esc 键,适用于 UEFI 系统)以访问 GRUB 菜单。
步骤 2:启动到恢复模式
选择 Advanced Options > Recovery Mode ,以启动到最小环境进行故障排查。
步骤 3:检查系统日志
检查 系统日志 ,查找与启动过程相关的错误:
sudo journalctl -b
查找与内核模块、磁盘挂载或服务相关的错误或警告。
步骤 4:修复损坏的软件包
运行以下命令修复损坏的软件包:
sudo apt update
sudo apt install --fix-broken
步骤 5:重新安装 GRUB
如果 GRUB 已损坏,请重新安装它:
sudo grub-install /dev/sda
sudo update-grub
步骤 6:检查磁盘健康状况
使用 fsck 检查和修复磁盘错误:
sudo fsck /dev/sda
2. SSH 错误
SSH 错误可能会阻止远程访问服务器,从而中断管理和自动化任务。
症状:
- 无法通过 SSH 连接到服务器。
- “Connection refused”或“Permission denied”错误。
- SSH 挂起或超时。
排查步骤:
步骤 1:验证 SSH 服务
确保 SSH 服务正在运行:
sudo systemctl status ssh
如果服务处于非活动状态,请启动它:
sudo systemctl start ssh
步骤 2:检查 SSH 日志
检查 SSH 日志以查看详细的错误消息:
sudo tail -n 50 /var/log/auth.log
常见问题包括:
- 身份验证失败。
- 由于 fail2ban 或防火墙规则导致的 IP 地址封禁。
步骤 3:检查防火墙规则
确保防火墙允许 SSH 流量:
sudo ufw allow OpenSSH
sudo ufw status
步骤 4:检查 SSH 配置
检查 SSH 配置文件中是否存在错误:
sudo nano /etc/ssh/sshd_config
进行更改后重启 SSH:
sudo systemctl restart ssh
步骤 5:验证网络连接
确保服务器可以访问:
ping <server-ip>
3. 网络连接问题
网络问题可能会阻止服务器访问互联网或与其他设备通信。
症状:
- 无法 ping 通外部网站或其他服务器。
- DNS 解析错误。
- 网络接口已关闭或配置错误。
排查步骤:
步骤 1:检查网络接口
列出活动的网络接口:
ip a
如果某个接口已关闭,请将其启动:
sudo ip link set <interface-name> up
步骤 2:检查网络错误日志
检查与网络相关的日志以发现潜在问题:
sudo journalctl -u systemd-networkd
步骤 3:验证 IP 配置
检查服务器的 IP 地址、网关和 DNS 设置:
cat /etc/netplan/*.yaml
如果配置不正确,请编辑文件并应用更改:
sudo nano /etc/netplan/*.yaml
sudo netplan apply
Netplan 配置示例:
network:
version: 2
ethernets:
eth0:
dhcp4: true
步骤 4:测试 DNS 解析
验证 DNS 解析:
nslookup google.com
如果 DNS 解析失败,请使用有效的 DNS 服务器更新 /etc/resolv.conf :
nameserver 8.8.8.8
nameserver 8.8.4.4
4. 磁盘空间问题
磁盘空间不足可能会导致应用程序崩溃或阻止更新。
症状:
- “No space left on device”错误。
- 服务器变得无响应。
排查步骤:
步骤 1:检查磁盘使用情况
使用 df 检查磁盘使用情况:
df -h
步骤 2:找出大文件
查找占用磁盘空间的大文件:
sudo du -ah / | sort -rh | head -n 10
步骤 3:检查日志文件大小
日志文件可能会变得非常大。请检查 /var/log ,查找过大的日志:
sudo du -sh /var/log/*
删除或归档旧日志:
sudo rm -rf /var/log/*.gz
sudo rm -rf /var/log/*.log.old
步骤 4:扩展磁盘空间
如果磁盘已满,请扩展卷(AWS、Azure 和 GCP 等云平台允许调整磁盘大小)。
5. 软件包安装错误
软件包安装错误可能是由损坏的依赖关系或存储库问题引起的。
症状:
- 安装期间出现“Unable to locate package”或“Dependency errors”。
排查步骤:
步骤 1:检查软件包错误日志
检查 apt 日志以查看详细错误:
sudo tail -n 50 /var/log/apt/history.log
步骤 2:更新软件包索引
确保软件包索引是最新的:
sudo apt update
步骤 3:修复损坏的依赖关系
运行以下命令解决依赖关系问题:
sudo apt install --fix-broken
步骤 4:添加缺失的存储库
如果某个软件包不可用,请添加所需的存储库:
sudo add-apt-repository universe
sudo apt update
6. CPU 或内存使用率过高
过多的资源使用可能会导致性能下降和响应时间变慢。
症状:
- 服务器变得无响应。
- 应用程序崩溃或超时。
排查步骤:
步骤 1:监控资源使用情况
使用 top 或 htop 监视 CPU 和内存使用情况:
top
步骤 2:检查应用程序错误日志
检查 /var/log 中的应用程序特定日志,查找导致高资源占用的错误。
步骤 3:找出占用资源过多的进程
查找占用过多资源的进程:
ps aux --sort=-%cpu | head -n 10
ps aux --sort=-%mem | head -n 10
步骤 4:终止不必要的进程
终止占用资源过多的进程:
sudo kill <pid>
使用日志进行故障排查
日志是排查服务器问题时最有价值的工具之一。以下是检查常见问题日志的方法:
- 系统日志:
sudo journalctl -xe提供有关系统级错误和警告的详细日志。 - 身份验证日志:
sudo tail -n 50 /var/log/auth.log有助于诊断 SSH 和登录相关问题。 - 应用程序特定日志:
检查/var/log,查找应用程序特定日志(例如 Apache、MySQL)。 - 内核日志:
sudo dmesg显示与内核相关的消息,对硬件和启动问题很有用。
结论
排查 Ubuntu Server 问题需要采用系统化的方法来诊断和解决问题。在本指南中,我们介绍了:
- 解决启动问题、SSH 错误和网络连接问题。
- 修复磁盘空间和软件包安装错误。
- 有效利用日志诊断问题。
按照这些步骤并利用日志,你可以高效地识别和修复服务器问题,确保 Ubuntu Server 环境稳定可靠。