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 两个选项,分别进入系统测试,确认功能正常、磁盘空间充足,即修复完成。

相关推荐
转转技术团队20 小时前
MCP 解析:给 AI 装上“万能充电口”,打通连接世界的“最后一公里”
前端
Y敲键盘的地方21 小时前
第9章 工具调用循环——Agent的行动闭环
java·服务器·前端
苏瞳儿21 小时前
vue3+pinia+mqtt实时响应连接
前端·javascript·vue.js
Starry-sky(jing)21 小时前
Hermes Agent 接入 Qwen3.7-Max 报 401?OpenCode Go 模型路由源码级排查与修复
开发语言·人工智能·chrome·golang
ayqy贾杰21 小时前
我同事,40了,他vibe coding了个App
前端·ios·客户端
暗冰ཏོ21 小时前
《2026 Vue2 + Vue3 完整学习指南:基础语法、路由缓存、登录拦截、项目实战与面试题》
前端·vue.js·vue·vue3·vue2
蜡台21 小时前
VUE 侧边按钮组,可自定义位置
前端·javascript·css
AI科技星1 天前
维度原本——基于超复数谱系的全域维度统一理论
c语言·前端·javascript·网络·electron
kyriewen1 天前
14MB VS 15KB:前React核心成员用AI写了个排版库,让Safari快了一千倍
前端·javascript·react.js
幸运小圣1 天前
动态表格在 Vue 3 中的实现指南【前端】
前端·javascript·vue.js