Linux 系统磁盘爆满导致无法启动修复指南

一、问题核心总结

本次故障由系统磁盘(NVMe 硬盘)100% 爆满引发,连带触发两个连锁问题:

  1. 文件系统损坏,GRUB 引导配置丢失,开机直接进入 GRUB 命令行模式;
  2. 误删 Ubuntu 22.04 分区后,GRUB 无法正常加载,最终卡在 initramfs 紧急 shell 及 GRUB 命令行。核心修复逻辑:先修复文件系统并释放空间 → 手动引导进入系统 → 重装并配置 GRUB 实现双系统正常引导

二、紧急修复流程(按顺序执行)

阶段 1:进入 GRUB 命令行,手动引导系统

1. 识别根分区

grub> 提示符下执行:

复制代码
ls  # 列出所有硬盘及分区
# 示例输出:(proc) (memdisk) (hd0) (hd0,gpt1) (hd0,gpt3) (hd0,gpt7)
# 逐个尝试查看分区内容,找到 Linux 根分区(包含 bin/boot/etc 等目录)
ls (hd0,gpt7)/  # 替换为实际分区号,成功则确认根分区为 (hd0,gpt7)
2. 确认 NVMe 设备对应关系

你的硬盘为 NVMe 协议,设备名对应关系:

  • GRUB 中 (hd0,gpt7) → 系统中 /dev/nvme0n1p7
3. 加载内核与 initrd 引导
复制代码
# 设置根分区
set root=(hd0,gpt7)
# 加载最新内核(替换为实际版本)
linux /boot/vmlinuz-6.17.0-20-generic root=/dev/nvme0n1p7 ro
# 加载 initrd 镜像
initrd /boot/initrd.img-6.17.0-20-generic
# 启动系统
boot

阶段 2:修复文件系统并释放空间(卡在 initramfs 时执行)

若引导后进入 initramfs 紧急 shell,按以下步骤操作:

1. 修复文件系统
复制代码
# 强制检查并修复 NVMe 根分区
fsck -f /dev/nvme0n1p7
# 执行中遇到提示,全部输入 y 确认修复
  1. 挂载根分区

    mount /dev/nvme0n1p7 /root # 挂载修复后的根分区

  2. 释放核心空间(删除大文件)

    进入 chroot 环境

    chroot /root

    1. 删除占用文件

    rm -rf /home/user/bigfiles/*

    2. 退出 chroot

    exit

阶段 3:重装并配置 GRUB(修复引导菜单)

进入 Ubuntu 24.04 系统后,执行以下命令修复双系统引导:

1. 重装 GRUB 到 EFI 分区
复制代码
# 安装 GRUB 到 NVMe 硬盘(自动识别 EFI 分区,不会损坏 Windows)
sudo grub-install /dev/nvme0n1
# 输出 "Installation finished. No error reported." 即成功
  1. 生成 GRUB 配置(自动添加 Windows 启动项)

    sudo update-grub

    输出 "Found Windows Boot Manager on /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi" 即成功

三、关键问题与避坑指南

1. 常见报错及解决

报错现象 原因 解决方法
ALERT! /dev/sda7 does not exist 硬盘为 NVMe 协议,设备名不是 /dev/sda,而是 /dev/nvme0n1pX 引导时使用 UUID 而非设备名,或修正设备名为 NVMe 对应路径
grub-install 报错 EFI 分区未正确挂载或 GRUB 包损坏 重新安装 GRUB 包:sudo apt install --reinstall grub-efi-amd64
Windows 未出现在引导菜单 os-prober 未开启或扫描失败 执行 sudo apt install os-prober,再重新运行 sudo update-grub

2. 核心避坑要点

  1. 严禁误删系统分区:删除其他系统分区前,务必确认当前 GRUB 引导依赖的分区(如本次 22.04 分区被删后 GRUB 失效);

  2. 磁盘爆满优先清理缓存 :优先删除训练日志、 离线缓存、docker 镜像等非系统核心文件,避免执行 rm -rf / 等高危命令;

  3. GRUB 引导优先用 UUID :设备名(如 /dev/sda7)会随硬盘插拔、BIOS 配置变化,UUID 唯一且稳定,避免引导失败;

  4. wandb 离线模式轻量化配置:仅记录损失,不存模型 / 媒体,从源头避免爆盘,配置如下:

    import wandb
    import os

    轻量化配置(仅记录数字,不占空间)

    os.environ['WANDB_DISABLE_ARTIFACTS'] = '1' # 禁用模型 artifact 保存
    os.environ['WANDB_DISABLE_MEDIA'] = '1' # 禁用媒体文件保存
    os.environ['WANDB_SAVE_CODE'] = 'False' # 不保存代码

    wandb.init(
    project="your-project",
    mode="offline", # 离线模式
    settings=wandb.Settings(
    disable_viewer=True, # 关闭本地网页面板
    enable_logging=False, # 禁用冗余日志
    silent=True # 安静模式
    )
    )

四、后续预防措施

  1. 磁盘空间监控 :定期执行 df -h / 检查系统盘,当使用率超过 80% 时立即清理;
  2. 训练文件存储规范 :将训练日志、checkpoint 存储到数据盘(非系统盘),并配置 checkpoint 保留数量(如 --save_total_limit 5);
  3. GRUB 备份 :修复成功后,备份 EFI 分区内容:sudo cp -r /boot/efi/EFI ~/efi_backup,便于后续快速恢复;
  4. 双系统引导备份 :备份 GRUB 配置文件:sudo cp /etc/default/grub ~/grub_backup,并记录当前 GRUB 配置。

五、最终验证

重启电脑后,确认 GRUB 引导菜单包含 Ubuntu 24.04Windows Boot Manager 两个选项,分别进入系统测试,确认功能正常、磁盘空间充足,即修复完成。

相关推荐
碎_浪2 小时前
给键盘党的英语记忆工具:我做了一款「打字背单词」桌面应用
前端·程序员·ai编程
阿成学长_Cain3 小时前
Linux dirs命令详解|Bash目录堆栈管理快速切换目录实战教程
linux·运维·前端·数据库
yqcoder3 小时前
httpOnly 是什么,又有什么用?
开发语言·前端·javascript
IT_陈寒3 小时前
Java的Stream.parallel()把我CPU跑爆了,这种优化要谨慎
前端·人工智能·后端
小皮虾4 小时前
小程序首页性能优化实战:从 4 秒到 1.8 秒
前端·微信小程序
山河木马4 小时前
GPU自动处理专题1-裁剪到底在裁什么(裁剪)
前端·webgl·计算机图形学
奔跑的蜗牛ing4 小时前
CentOS Nginx 安装与静态文件服务器配置指南
前端·面试·架构
子兮曰4 小时前
Bun 重写为 Rust:11天、64个Claude、16.5万美元,一次改变行业认知的激进实验
前端·后端·bun
子兮曰4 小时前
Node.js v26.5.0 深度解读:import Text、流式 ReadableStreamTee、以及隐藏的安全加固浪潮
前端·后端·node.js