一、快速定位磁盘占用原因
1. 检查磁盘使用情况
使用 df 命令查看磁盘分区的使用情况:
df -h
参数说明:
-h:以人类可读的格式显示(gb、mb)。
输出示例:
filesystem size used avail use% mounted on /dev/sda1 50g 45g 5g 90% / /dev/sda2 100g 95g 5g 95% /home
如果某个分区(如 / 或 /home)的 use% 达到接近 100%,说明该分区已满。
2. 找出大文件和目录
(1) 使用 du 查找占用最多的目录
du 命令用于分析文件和文件夹的磁盘占用情况:
du -h --max-depth=1 /
参数说明:
-h:以人类可读的格式显示。--max-depth=1:只查看顶级目录的大小。
输出示例:
5.0g /var 20g /home 15g /usr 1.2g /tmp
根据输出结果,进一步深入到占用空间较大的目录(如 /home):
du -h --max-depth=1 /home
(2) 使用 find 查找大文件
查找超过 1gb 的大文件:
find / -type f -size +1g 2>/dev/null
- 参数说明:
-type f:只查找文件。-size +1g:查找大于 1gb 的文件。2>/dev/null:忽略权限不足导致的错误。
3. 检查挂载点问题
有时磁盘分区挂载错误可能导致文件写入到了根目录,而不是正确的挂载点:
检查是否有挂载问题:
mount
如果某个挂载点(如 /mnt/data)没有正确挂载,可能会导致根分区被写满。
解决方法:
确认挂载点:
df -h
如果未正确挂载,重新挂载分区:
sudo mount /dev/sdx /mnt/data
二、清理磁盘空间
清理磁盘空间时,应谨慎操作,避免删除系统关键文件。以下是常见的清理方法:
1. 清理系统日志
(1) 检查日志目录
linux 日志通常存储在 /var/log 中:
du -h /var/log
(2) 删除过大的日志文件
如果发现某些日志文件过大(如 syslog 或 journal 文件),可以清理或压缩:
sudo truncate -s 0 /var/log/syslog sudo truncate -s 0 /var/log/auth.log
(3) 清理 journal 日志
对于使用 systemd 的系统(如 ubuntu 和 centos 7+),日志可能存储在 journal 中:
查看日志占用空间:
journalctl --disk-usage
清理日志(保留最近 7 天的日志):
sudo journalctl --vacuum-time=7d
2. 清理缓存文件
(1) 清理 apt 缓存(适用于 debian/ubuntu)
apt 会缓存已下载的软件包,占用大量空间:
sudo apt-get clean
(2) 清理 yum 缓存(适用于 centos/rhel)
sudo yum clean all
(3) 清理临时文件
临时文件通常存储在 /tmp 目录中,可以安全删除:
sudo rm -rf /tmp/*
3. 删除未使用的旧内核
(1) 列出已安装内核
在 ubuntu/debian 系统中,列出所有内核版本:
dpkg --list | grep linux-image
(2) 删除旧内核
保留当前内核和最近的一个版本,其余都可以删除:
sudo apt-get autoremove --purge
对于 centos 系统:
sudo yum remove kernel-oldversion
4. 查找和清理无用文件
(1) 清理大文件
使用 find 找到大文件后,确认是否不再需要这些文件,删除它们:
sudo rm -f /path/to/large-file
(2) 清理用户的下载目录
检查 /home 目录下的用户文件:
du -h --max-depth=1 /home
删除不需要的文件或备份到其他存储设备。
5. 卸载不必要的大型软件包
(1) 列出已安装的软件包及其大小
在 debian/ubuntu 系统中:
dpkg-query -w --showformat='${installed-size} ${package}\n' | sort -n
在 centos/rhel 系统中:
rpm -qa --qf '%10{size}\t%{name}\n' | sort -n
(2) 卸载不需要的软件
例如,卸载某个软件包:
sudo apt-get remove --purge package-name
或:
sudo yum remove package-name
6. 压缩备份文件
如果某些文件需要保留但不常用,可以压缩后存储:
tar -czvf backup.tar.gz /path/to/large-directory
然后将压缩文件移动到其他存储设备或云端。
三、预防磁盘再次占满的策略
定期监控磁盘使用
使用 cron 定期运行 df 或 du,并发送邮件报警:
df -h | mail -s "disk usage report" your-email@example.com
设置磁盘占用警告
- 在
/etc/fstab中启用磁盘配额(quota)功能,限制用户或目录的磁盘使用量。
使用独立分区管理
- 将日志目录(
/var/log)、临时目录(/tmp)、用户目录(/home)分区分开,避免单个分区写满后影响整个系统。
扩容磁盘
- 如果所有清理措施后仍无法满足需求,可以考虑扩展磁盘(如通过云服务商增加硬盘空间)。
四、总结
当 linux 磁盘满了时,按照以下步骤操作:
- 快速排查:使用
df和du定位问题分区和目录。 - 清理无用文件:删除日志、缓存、临时文件和旧内核。
- 优化存储:压缩或转移大文件,卸载不必要的软件。
- 长期策略:定期监控磁盘使用,分区独立管理或扩容磁盘。
通过上述方法,您可以快速释放磁盘空间并防止磁盘再次被占满。
以上就是linux系统中磁盘空间占满的排查与解决方法的详细内容,更多关于linux系统中磁盘空间占满的资料请关注代码网其它相关文章!
发表评论