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 小时前
独立站SEO流量增长:提高Google排名的优化方法
前端·javascript·网络
NotFound4862 小时前
实战指南如何实现Java Web 拦截机制:Filter 与 Interceptor 深度分享
java·开发语言·前端
Dontla3 小时前
高基数(High Cardinality)问题介绍(Prometheus、高基数字段、低基数字段)
前端·数据库·prometheus
whuhewei5 小时前
为什么客户端不存在跨域问题
前端·安全
妮妮喔妮5 小时前
supabase的webhook报错
开发语言·前端·javascript
yivifu6 小时前
手搓HTML双行夹批效果
前端·html·html双行夹注
奔跑的卡卡6 小时前
Web开发与AI融合-第一篇:Web开发与AI融合的时代序幕
前端·人工智能
IT_陈寒7 小时前
Redis批量删除的大坑,差点让我加班到天亮
前端·人工智能·后端
帆张芳显7 小时前
智表ZCELL产品V3.6 版发布,新增系统预置右键菜单操作、页签栏操作等功能
前端·canva可画·excel插件