温馨提示×

Ubuntu挂载磁盘空间不足解决

小樊
37
2025-12-25 03:55:19
栏目: 云计算

Ubuntu 挂载点空间不足的排查与解决

一、快速定位问题

  • 查看各挂载点使用情况:df -h,确认是哪个挂载点(如 //home)接近或达到 100%
  • 定位大目录与大文件:
    • 进入占用高的挂载点,逐级查看:sudo du -h --max-depth=1 | sort -rh | head -20
    • 全系统快速扫描:sudo du -sh /* 2>/dev/null | sort -rh | head -10
  • 检查被删除但仍被进程占用的“幽灵文件”:sudo lsof +L1,若占用大文件,重启对应进程释放空间。
  • 检查日志占用:sudo journalctl --disk-usage,确认 journal 是否异常膨胀。

二、安全清理释放空间

  • 包管理器缓存:
    • 清理全部缓存:sudo apt clean
    • 仅清理过期包:sudo apt autoclean
    • 移除无用依赖:sudo apt autoremove --purge
  • 系统日志:
    • 按时间保留:sudo journalctl --vacuum-time=7d
    • 按大小限制:sudo journalctl --vacuum-size=100M
    • 谨慎清空正在写入的日志文件(保留文件句柄):sudo truncate -s 0 /var/log/syslog
  • 旧内核(务必保留当前在用内核):
    • 查看当前内核:uname -r
    • 列出已安装内核:dpkg -l | grep linux-image
    • 删除旧版本(示例):sudo apt purge linux-image-<旧版本号>
  • Snap 与用户缓存:
    • 清理旧版 Snap 包:sudo snap list --allsudo snap remove <包名> --revision <版本号>
    • 清理缩略图:rm -rf ~/.cache/thumbnails/*
  • 临时文件:sudo rm -rf /tmp/*
  • 可视化和定位工具:ncdu(逐目录分析)、du -sh、GNOME 的 Disk Usage Analyzer

三、扩容与迁移方案

  • 添加新磁盘并挂载到目录(适合数据盘或迁移大目录):
    1. 分区与格式化:sudo fdisk /dev/sdbsudo mkfs.ext4 /dev/sdb1
    2. 临时挂载:sudo mkdir -p /mnt/data && sudo mount /dev/sdb1 /mnt/data
    3. 迁移数据:sudo rsync -aAX --info=progress2 /home/ /mnt/data/
    4. 备份并替换原目录:sudo mv /home /home_old && sudo mkdir /home && sudo mount /dev/sdb1 /home
    5. 开机自动挂载:获取 UUIDsudo blkid,在 /etc/fstab 追加:
      UUID=<你的UUID> /home ext4 defaults 0 2
    6. 校验并清理:sudo mount -o remount /home,确认无误后 sudo rm -rf /home_old
  • 虚拟机磁盘扩容:
    1. 宿主机扩展虚拟磁盘容量后启动客户机
    2. 扩展分区:sudo parted /dev/sdaresizepart <分区号> 100%
    3. 扩展文件系统:
      • ext4sudo resize2fs /dev/sda<分区号>
      • XFSsudo xfs_growfs /mount/point
  • LVM 在线扩容(如已使用 LVM):
    • 扩展逻辑卷:sudo lvextend -L +<大小>G /dev/mapper/<vg>-<lv>
    • 扩展文件系统:sudo resize2fs /dev/mapper/<vg>-<lv>(ext4)
  • 将大目录迁移到新盘后,按需调整应用数据目录(如 Docker 可将 "data-root": "/mnt/data")。

四、常见陷阱与验证

  • 删除后仍显示满:多由“被进程占用但已删除”的文件导致,使用 sudo lsof +L1 定位并重启相关服务。
  • 误删正在写入的日志:优先用 truncate -s 0 <日志文件> 清空内容,避免删除文件句柄导致进程异常。
  • 清理内核风险:务必保留至少 1–2 个可用内核,删除前核对 uname -r 输出。
  • 修改 /etc/fstab 前先测试:sudo mount -o remount <挂载点>,确认无语法错误再重启。
  • 操作完成后用 df -hsudo du -sh <关键目录> 复核空间是否释放、挂载是否正确。

0