Linux服务器磁盘空间不足的排查与处理方法

 更新时间:2025年12月23日 08:32:50   作者:天天进步2015  
在日常维护 Linux 服务器时,我们经常会遇到这样的场景:系统报错提示磁盘空间不足,今天就以一次真实的排查过程为例,分享如何科学地处理大文件与日志,需要的朋友可以参考下

在日常维护 Linux 服务器时,我们经常会遇到这样的场景:系统报错提示“磁盘空间不足”,执行 ls -l 看到一长串数字,或者 df -mh 发现根目录挂载点进度条已经变红(98% 以上)。

今天就以一次真实的排查过程为例,分享如何科学地处理大文件与日志。

一、 识破数字:ls -l 里的 30482163185 到底有多大?

当你执行 ls -l 时,文件大小默认是以 Byte(字节) 为单位显示的。对于上百亿的数字,肉眼很难直观判断。

1. 快速换算公式

计算机系统中,单位换算通常遵循 $1024$ 进制:

$$30482163185 \text{ B} \div 1024 \div 1024 \div 1024 \approx 28.39 \text{ GiB}$$

也就是说,这个文件占用了约 28.4 GB 的空间。

2. 懒人必备命令

与其手动计算,不如在执行命令时加个 -h 参数(human-readable):

  • ls -lh:直接显示为 29G
  • du -sh *:查看当前目录下各个文件/文件夹的总大小。

二、 深度排查:为什么我的根目录(/)满了?

很多时候,我们发现 /opt/var 下有大文件,但并没有意识到它们属于哪个分区。

1. 寻找挂载点逻辑

通过 df -mh 命令可以观察磁盘分布。如果你的输出显示 / 分区大小为 50G,而 /home 分区有 4.5T,那么:

  • 如果 /opt 没有独立出现在“挂载点”一列,它就物理属于根目录(/)分区
  • /opt 下产生一个 28G 的日志时,仅有 50G 的根目录就会迅速告急(使用率直冲 98%)。

2. 空间不平衡的痛

这种“贫富差距”巨大的分区架构(根目录小、Home 目录大)在 CentOS 等系统中很常见。最佳实践是:将数据、日志、大型应用安装在 /home 下,或者在 /home 创建目录并软链接到根目录。

三、 治理长大的 nohup 日志:四种方案

程序运行产生的 1.log 越来越大,直接删掉文件往往无法释放磁盘(因为进程仍持有文件句柄)。我们需要更优雅的处理方式:

方案 A:在线清理(急救)

不需要停止程序,直接清空内容:

# 推荐方式,将文件置为 0 字节
true > 1.log
# 或者
cat /dev/null > 1.log

方案 B:重定向至“富裕”分区(治本)

既然 /home 有 4.4T 空间,为何不把日志放过去?

# 启动时指定路径
nohup ./start.sh > /home/logs/1.log 2>&1 &

方案 C:使用 logrotate(自动化)

利用 Linux 自带的 logrotate 工具进行日志滚动。创建配置文件 /etc/logrotate.d/myapp

/opt/app/1.log {
    daily
    rotate 5
    copytruncate    # 关键:先复制再清空,适合 nohup 进程
    compress
    missingok
}

方案 D:实时切分(进阶)

利用 rotatelogs 等工具,在产生日志时就按大小或时间切分,避免单个大文件的出现。

四、 总结

  1. 多用 -h 参数:无论是 ls -lh 还是 df -h,直观的数据能帮你更快决策。
  2. 警惕根目录空间:核心系统分区一旦爆满,可能导致 SSH 无法登录、数据库损坏等严重后果。
  3. 日志必须治理:任何通过 nohup 启动的服务,都必须考虑日志清理或切分策略。

到此这篇关于Linux服务器磁盘空间不足的排查与处理方法的文章就介绍到这了,更多相关Linux磁盘空间不足内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在Linux上设置SQLite的详细步骤

    在Linux上设置SQLite的详细步骤

    SQLite 是一个轻量、可靠的嵌入式数据库系统,无需服务器即可运行,广泛用于测试、原型开发和小型应用中,在 Linux 系统中安装 SQLite 的方式主要有两种,以下将详细介绍两种方式的安装步骤,需要的朋友可以参考下
    2025-11-11
  • Linux系统下多版本php共存的解决方案(超简单)

    Linux系统下多版本php共存的解决方案(超简单)

    如何在Linux系统下使多版本php共存,今天为大家介绍一种简单方案
    2018-10-10
  • linux系统下如何挂载NTFS移动硬盘

    linux系统下如何挂载NTFS移动硬盘

    用命令行挂载移动硬盘是Linux的基本操作之一,虽然目前有些Linux系统能自动加载移动硬盘,但有些时候(比如使用Ubuntu Server或其它Linux系统的时候)仍然需要手动操作,下面这篇文章主要介绍了linux系统下如何挂载NTFS移动硬盘,需要的朋友可以参考借鉴。
    2017-01-01
  • linux引导系统的方法分析

    linux引导系统的方法分析

    这篇文章主要介绍了linux引导系统的方法,总结分析了Linux引导系统相关原理、操作命令与注意事项,需要的朋友可以参考下
    2020-03-03
  • Linux系统查看网卡配置信息方式

    Linux系统查看网卡配置信息方式

    这篇文章主要介绍了Linux系统查看网卡配置信息方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Linux文本处理工具使用详解

    Linux文本处理工具使用详解

    在本篇文章里小编给各位分享的是一篇关于Linux文本处理工具使用详解内容,有兴趣的朋友们可以学习下。
    2020-03-03
  • Linux进程如何终止

    Linux进程如何终止

    这篇文章主要介绍了Linux进程如何终止问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • 详解Linux批量更改文件后缀名

    详解Linux批量更改文件后缀名

    本篇文章主要介绍了详解Linux批量更改文件后缀名,主要是使用了rename,有需要的朋友可以了解一下。
    2016-11-11
  • Linux命令之firewalld的用法

    Linux命令之firewalld的用法

    这篇文章主要介绍了Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • 使用‘fsck’修复Linux中文件系统错误的方法

    使用‘fsck’修复Linux中文件系统错误的方法

    这篇文章主要给大家介绍了关于如何使用'fsck'修复Linux中文件系统错误的相关资料,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03

最新评论