Ubuntu 16.04 LTS根分区ext4占满致磁盘空间不足求助
看起来你遇到了Ubuntu根分区完全占满的典型问题,从你给出的df -hT输出能明确看到/分区已经100%使用,这就是程序报错"not enough disk space available"的直接原因——gparted确认分区挂载正常是对的,问题核心就是空间被占满了,下面给你一步步解决的办法:
第一步:快速定位占空间的大文件/目录
首先得搞清楚到底是哪些文件或目录吃掉了空间,用这几个命令就能快速排查:
先查看根目录下各文件夹的总大小:
sudo du -sh /*这个命令会列出根目录下每个文件夹的大小,一眼就能找到占空间最大的目录(比如
/var、/home、/usr都是常见的"空间大户")。如果想要更直观的交互式查看,可以用
ncdu工具(没装的话先安装):sudo apt-get install ncdu sudo ncdu /它会以可视化的方式展示目录结构和大小,你可以用方向键导航,找到大文件后按
d就能直接删除,非常方便。
第二步:清理常见的系统冗余文件
找到大目录后,先从这些安全的可清理内容入手:
清理APT缓存和旧依赖包:
系统会缓存很多安装过的deb包,还有一些没用的旧依赖,删掉它们能释放不少空间:sudo apt-get autoremove --purge sudo apt-get clean sudo apt-get autoclean清理系统日志:
系统日志如果没限制大小,很容易越攒越大,用这个命令把日志压缩到100M以内(你可以根据需要调整大小):sudo journalctl --vacuum-size=100M删除临时文件:
/tmp和/var/tmp里的临时文件大多是没用的,直接删掉就行(重启后系统也会自动清理):sudo rm -rf /tmp/* sudo rm -rf /var/tmp/*检查超大日志文件:
去/var/log目录看看有没有特别大的日志文件(比如几个G的),如果是某个应用程序一直在输出错误日志,先解决对应的程序问题,然后用truncate清空日志(比直接删除更安全,不会打断正在写日志的进程):sudo truncate -s 0 /var/log/your-large-log-file.log
第三步:处理用户目录的大文件
从你的df输出看,/home应该是和根分区在一起的,检查自己的用户目录:
- 删掉下载文件夹里的安装镜像、旧视频、没用的备份文件,或者把它们移到外部存储(U盘、移动硬盘)。
- 检查隐藏的大文件:比如
~/.cache里的浏览器缓存、旧的虚拟机镜像,要是用了Docker的话,清理一下无用的镜像和容器:sudo docker system prune -a
第四步:清理后空间仍不足?调整分区大小
如果清理完还是空间紧张,那就得调整分区大小了,这一步要谨慎操作:
- 先备份重要数据! 分区调整有风险,万一出错可能丢失数据,一定要先备份。
- 用Ubuntu安装U盘启动,进入"试用Ubuntu"模式——因为正在挂载的分区不能调整大小,必须在 live 环境下操作。
- 打开gparted,找到根分区
/dev/nvme0n1p7:- 如果旁边有未分配的空间,直接扩展这个分区即可;
- 如果没有未分配空间,看看有没有其他空闲的分区(注意
/boot/efi不能动),先缩小那个分区,再把空间分给根分区。
平时可以定期做一下清理,比如设置journalctl的日志大小上限,或者安装tmpreaper自动清理临时文件,避免根分区再次被占满。
内容的提问来源于stack exchange,提问作者Roomba

