当前位置: 代码网 > 服务器>服务器>Linux > Linux系统中磁盘空间占满的排查与解决方法

Linux系统中磁盘空间占满的排查与解决方法

2026年08月15日 Linux 我要评论
一、快速定位磁盘占用原因1. 检查磁盘使用情况使用 df 命令查看磁盘分区的使用情况:df -h参数说明:-h:以人类可读的格式显示(gb、mb)。输出示例:filesystem size

一、快速定位磁盘占用原因

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) 删除过大的日志文件

如果发现某些日志文件过大(如 syslogjournal 文件),可以清理或压缩:

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 定期运行 dfdu,并发送邮件报警:

df -h | mail -s "disk usage report" your-email@example.com

设置磁盘占用警告

  • /etc/fstab 中启用磁盘配额(quota)功能,限制用户或目录的磁盘使用量。

使用独立分区管理

  • 将日志目录(/var/log)、临时目录(/tmp)、用户目录(/home)分区分开,避免单个分区写满后影响整个系统。

扩容磁盘

  • 如果所有清理措施后仍无法满足需求,可以考虑扩展磁盘(如通过云服务商增加硬盘空间)。

四、总结

当 linux 磁盘满了时,按照以下步骤操作:

  1. 快速排查:使用 dfdu 定位问题分区和目录。
  2. 清理无用文件:删除日志、缓存、临时文件和旧内核。
  3. 优化存储:压缩或转移大文件,卸载不必要的软件。
  4. 长期策略:定期监控磁盘使用,分区独立管理或扩容磁盘。

通过上述方法,您可以快速释放磁盘空间并防止磁盘再次被占满。

以上就是linux系统中磁盘空间占满的排查与解决方法的详细内容,更多关于linux系统中磁盘空间占满的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com