返回列表 发布新帖
查看: 21|回复: 0

磁盘满导致系统无法启动?Ubuntu 进入救援模式的排查与修复指南

发表于 前天 17:16 | 查看全部 |阅读模式

这里或许是互联网从业者的最后一片净土,随客社区期待您的加入!

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在 Ubuntu 服务器运行过程中,如果系统盘被写满,可能会导致一系列严重问题,例如:
  • 服务异常停止
  • SSH 无法登录
  • 系统进程被 OOM Killer 杀死
  • 甚至 内核无法正常挂载根文件系统,出现启动报错
当磁盘空间耗尽时,Linux 系统可能无法写入关键文件(例如日志、PID 文件、系统缓存等),于是进入只读模式或 Kernel Panic,从而导致无法正常启动。
本文将带你了解:
为什么磁盘满会导致系统崩溃,以及如何在云服务器中使用 VNC 进入救援模式修复系统。
一、为什么磁盘满会导致系统无法启动?
在 Ubuntu 22.04 等 Linux 系统中,系统运行依赖于磁盘可写空间。当根分区被写满时,会出现如下问题:
1. 内核无法写入临时文件
系统启动时需要写入:
  • /var/log/ 系统日志
  • /run/ 下的运行时文件
  • /tmp/ 临时目录
  • systemd 管理的一些状态文件
如果无法写入,就会导致:
  • 挂载失败
  • systemd 无法启动
  • 进入 emergency mode / initramfs / busybox
2. systemd 无法正常启动
systemd 启动时必须能写入状态文件,否则会直接进入 emergency shell。
3. 文件系统检测失败(fsck)
fsck 需要写入修复状态,如果磁盘满也会失败。
因此,“内核报错 + 磁盘满 + 无法正常启动”通常是关联问题。清理磁盘后大部分情况下都能恢复使用。
二、云服务器进入救援模式(Rescue Mode)
大部分云厂商(阿里云、腾讯云、AWS、华为云等)都支持:
  • 重启到救援模式
  • 救援模式会启动一个 临时系统(LiveCD)
  • 你的系统盘会以数据盘形式挂载上来(通常是 /dev/vdb、/dev/sda2 等)
为什么目录结构不一样?
因为救援系统是一个 全新的最小系统,你看到的是它本身的根目录,而不是你服务器原来的。
你需要手动挂载系统盘的根分区才能看到你真正的文件。
三、如何在救援模式中挂载系统盘?
1. 查看磁盘
  1. lsblk
复制代码
输出示例:
sda     40G
├─sda1 1G   EFI
└─sda2 39G  Linux filesystem(你的系统根分区)
2. 创建挂载目录
  1. mkdir /mnt/sysroot
复制代码
3. 挂载系统分区
假设根分区为 /dev/sda2:
  1. mount /dev/sda2 /mnt/sysroot
复制代码
挂载后,你能看到原来的目录结构:
/mnt/sysroot/www/wwwlogs
/mnt/sysroot/var/log
/mnt/sysroot/etc
...
四、在救援模式中清理日志文件(最常见:Nginx 日志占满)
删除 Nginx 日志(示例)
  1. rm -rf /mnt/sysroot/www/wwwlogs/*
复制代码
或按日期清理:
  1. find /mnt/sysroot/www/wwwlogs/ -type f -mtime +7 -delete
复制代码
清理系统日志:
  1. rm -rf /mnt/sysroot/var/log/*.log
复制代码
  1. rm -rf /mnt/sysroot/var/log/journal/*
复制代码
检查磁盘空间
  1. df -h /mnt/sysroot
复制代码
五、退出并重启系统
清理完成后:
1. 卸载
  1. umount /mnt/sysroot
复制代码
2. 重启到正常系统
在云厂商控制台选择“退出救援模式 / 正常启动”。
若磁盘写满导致的启动异常,绝大多数情况下都能恢复。数据也不会丢失,只是系统无法正常写入而停机。
六、如何预防磁盘满?
1. 日志切割(重要)
开启 Nginx 日志切割:
  1. /etc/logrotate.d/nginx
复制代码
2. 限制日志大小
使用 logrotate 的 maxsize 与 rotate。
3. 定期清理临时目录
  1. /tmp
复制代码
  1. /var/cache
复制代码
4. 监控磁盘空间
使用:
  1. df -h
复制代码
  1. du -sh *
复制代码
安装监控(如 Node Exporter + Prometheus)
总结
当磁盘被写满时,Ubuntu 可能会出现:
  • 内核报错
  • 系统进入 emergency mode
  • 无法挂载根分区
  • 无法 SSH 登录
这种情况 非常常见,尤其服务器日志爆满的时候。
解决方案:通过救援模式挂载系统盘 → 清理空间 → 重启恢复
数据通常不会丢失,只要不是手动删除或者文件系统损坏。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2001-2025 Suike Tech All Rights Reserved. 随客交流社区 (备案号:津ICP备19010126号) |Processed in 0.111914 second(s), 6 queries , Gzip On, MemCached On.
关灯 在本版发帖返回顶部
快速回复 返回顶部 返回列表