Linux磁盘空间耗尽导致系统故障问题及说明

 更新时间:2026年01月26日 09:09:05   作者:brahityq  
文章主要内容是Linux系统磁盘耗尽导致报错的排障和维护思路,包括确认故障、查找占用空间的文件或目录、清理文件以及预防措施,还介绍了ncdu工具的使用方法和日志管理、临时文件管理、软链接和硬链接、磁盘配额等高级维护技巧

Linux出现磁盘耗尽导致报错排障和维护思路

Linux系统有一个比较常见的系统故障就是磁盘使用空间耗尽,导致系统无法正常运行,同时可能伴随着无法写入日志、启动新进程,甚至某些服务会崩溃。

为了解决上述问题,就必须要进行磁盘的清理和维护,以便系统可以正常运行。

1.确认故障

首先我们需要进入系统内部查看磁盘的使用情况,一般使用df -h的命令就可以进行查看Linux系统中哪个磁盘对应的哪个分区出现了磁盘空间占满的情况。


字段解释

字段解释
Filesystem文件系统名称或磁盘分区标识
Size文件系统的总大小
Used文件系统已用空间大小
Avail文件系统可用空间大小
Use%文件系统使用的百分比
Mounted on文件系统挂载的位置(目录)

详细解释

udevtmpfs

  • udev: 提供对设备节点的访问,大小为 1.8G(虚拟内存,设备文件占用空间极小)。
  • tmpfs::基于内存的临时文件系统,常用于系统运行时需要快速存储的地方(如 /run、/dev/shm)。

/dev/vda2

  • 主分区:大小为 59G,其中已用 5.6G,剩余 51G,使用率 10%。
  • 挂载在 /(根目录),即根文件系统,存储系统的主要内容(如操作系统、应用程序等)。

挂载点 tmpfs

多个 tmpfs 文件系统基于内存挂载,分别用于:

  • /dev/shm:提供共享内存。
  • /run:存储运行时进程数据。
  • /run/lock:提供锁文件的临时存储。
  • /sys/fs/cgroup:Linux 的控制组文件系统,用于资源限制和管理。

/dev/loopX

  • 这些是只读的 loop 设备,常用于 snap 软件包的挂载。
  • /snap/core18/snap/core20 等为 Snap 平台的核心文件。/snap/lxdlxd 容器管理器的 Snap 包。

/dev/vdb

  • 这是一个独立的分区,大小为 20G,已用 45M,可用 19G,使用率仅 1%。
  • 挂载在 /data,可用作额外的数据存储。

tmpfs (最后一行)

  • 用于用户 ID 为 1000 的临时文件存储(是当前登录用户的运行时目录 /run/user/1000)

2.finding占用空间的文件或目录

使用 du -sh /*du -sh /var/*等类似的命令,逐层查找大文件或大目录,并定位具体占用空间的文件。

————此处最好使用Linux最高权限用户root,否则会导致有些文件由于权限的原因无法进行读取信息。



这里需要我们进行一层一层的查询,确认最终哪个目录的哪个文件或者文件夹的磁盘占用最大的文件。

3.清理文件

删除无用日志文件或临时文件,比如使用命令rm -rf /var/log/*清理日志文件(但是最好将近期的日志文件进行拷贝到其他的地方,以便出现其他服务异常的时候,可以通过日志进行查询)。同时也可以根据实际需求对其他无用文件进行清理或迁移。

4.预防措施

设置日志轮转(logrotate)来自动管理日志文件,避免将来类似的问题,同时,可以设置磁盘空间报警,提前发现空间不足的问题。以此来提高系统的高可用性。

Tips:

一、磁盘使用情况查询工具ncdu

ncdu 是一个基于 ncurses 的磁盘使用情况分析工具。它可以帮助您快速地查看文件系统中哪些文件或目录占用了较多的空间,并且以易于阅读的树状视图形式展示结果。

1. ncdu 的主要特点

直观的界面

  • 基于 ncurses 的终端界面,用户可以通过键盘导航文件系统结构,查看每个目录或文件的详细空间占用情况。

快速扫描与分析

  • 使用高效的扫描算法,能够快速遍历大文件系统,并计算出每个目录或文件的空间占用。

易于操作

  • 支持通过键盘快捷键进行文件排序、目录展开与折叠,以及直接删除不需要的文件或目录。

跨平台支持

  • ncdu 可运行在大多数基于 Unix 的系统(如 LinuxmacOS)上,并支持通过 SSH 在远程服务器上使用。

便携性

  • 由于 ncdu 是轻量级工具,占用资源少,非常适合在资源受限的环境(如小型服务器或嵌入式系统)中使用。

颜色编码

  • 默认情况下,ncdu 使用颜色编码来区分文件类型和目录,使得输出更加直观。

灵活的选项

  • ncdu 支持多种选项,比如排除某些目录、按照大小排序、以及导出和导入扫描结果。

2. 适用场景

  • 磁盘空间清理:快速定位占用磁盘空间最多的文件或目录,帮助清理不必要的数据。
  • 服务器维护:通过 SSH 在远程服务器上运行 ncdu,高效管理存储资源。
  • 大文件系统分析:适合于分析复杂或多层级的文件系统,特别是磁盘配额不足的情况下。

3. 安装和使用

本次实机演示为ubuntu系统,后续的操作命令均是以其系统为主

在大多数 Linux 发行版中,可以直接通过包管理器安装:

# Debian/Ubuntu
sudo apt install ncdu

# CentOS/RHEL
sudo yum install ncdu

# macOS (通过 Homebrew)
brew install ncdu

4. 基本用法

4.1 如何查看需要或适用的参数——help

ncdu --help 获取对应的帮助信息

ncdu <options> <directory>

这是您需要键入命令的格式

  • <directory>:指定要扫描的目录。如果未提供,ncdu 默认扫描当前工作目录
  • <options>:可选参数,用于调整扫描行为或界面显示

基本功能

  • -h, --help:显示帮助信息,列出所有支持的选项
  • -v, -V, --version:输出 ncdu 的版本号
  • -r:只读模式。在该模式下,用户无法通过 ncdu 删除文件或目录,适合希望避免误操作的场景

界面与显示

  • -q:启用安静模式(Quiet Mode)。扫描期间屏幕刷新间隔为 2 秒,适合在慢速网络或资源受限的环境中运行

-0, -1, -2:控制扫描时的用户界面显示

  • 0:无界面模式,适合脚本或直接导出扫描结果
  • 1:基本界面
  • 2:完整 ncurses 界面(默认)

--si:使用十进制(基于 10 的 SI 前缀)显示文件大小

  • 例如:1 KB = 1000 字节
  • 1 MB = 1000 KB,默认情况下,ncdu 使用二进制单位(1024 字节为 1 KB)
  • --color SCHEME:指定颜色方案,可根据用户喜好自定义界面颜色。
  • --confirm-quit:退出 ncdu 时要求确认,防止误操作导致退出。

文件和目录处理

  • -x:只扫描与目标目录相同的文件系统,忽略跨文件系统的目录或文件。例如,扫描 / 时不会跨越到挂载的 /data 分区。
  • --exclude PATTERN:排除匹配指定模式的文件。例如:
ncdu --exclude '*.log' /var

# 上述命令会扫描 /var 目录,但排除所有 .log 文件。
  • -X, --exclude-from FILE:从指定文件中读取排除模式。例如,文件 exclude.txt 内容如下:
*.log
*.tmp

然后运行:

ncdu -X exclude.txt /var

# 会排除所有 .log 和 .tmp 文件。
  • --exclude-caches:排除包含 CACHEDIR.TAG 的目录。这些目录通常是缓存文件存储目录(如浏览器缓存),排除它们可以加快扫描速度。
  • -L, --follow-symlinks:跟随符号链接(仅限文件),但不会跟随指向其他目录的符号链接。

导入与导出

  • -o FILE:将扫描结果导出到指定文件。导出结果是压缩的二进制格式,适合后续分析。
  • 例如:ncdu -o result.dat /path/to/directory
  • -f FILE:从指定文件导入扫描结果。
  • 例如:ncdu -f result.dat (这可以避免重复扫描大目录,直接查看之前导出的结果)。

4.2 基础使用 + 演示

4.2.1 扫描当前目录并显示结果

ncdu

4.2.2 扫描 /var 目录并排除 .log 文件

ncdu --exclude '*.log' /var

4.2.3 扫描 /data 并将结果导出到data_scan.dat

ncdu -o data_scan.dat /data

4.2.4 读取之前的扫描结果

ncdu -f data_scan.dat


4.2.5 只扫描根目录,不跨越到其他文件系统

ncdu -x /

4.2.6 排除缓存目录并显示文件大小单位为 SI 前缀:

ncdu --exclude-caches --si /path/to/directory

4.2.7 设置颜色

ncdu --color dark /home

二、日志管理

通过配置logrotate,可以设置日志文件的轮转、压缩和删除时间点。

例如,在/etc/logrotate.d目录下,对某个日志文件进行配置,确保它按时归档和清理。

三、临时文件管理

Linux系统中,/tmp/var/tmp 目录通常用于存放临时文件。

定期清理这些目录的文件,或者设置 tmpwatch 来自动出除过期的临时文件,可以避免大量临时文件长期占用磁盘空间。

四、软链接和硬链接

有时候,多个文件其实是同样的数据,合理地使用硬链接可以减少实际占用的磁盘空间,同时,善用软链接也可以方便管理文件和目录结构。

五、磁盘配额

在多用户系统中,可以启用磁盘配额(quota),限制每个用户或用户组所能使用的磁盘空间,这可以有效防止单个用户因滥用磁盘空间而影响其他用户使用和系统正常运行。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Linux出现sql密码被忘记的解决方法

    Linux出现sql密码被忘记的解决方法

    我们在Linux系统中使用Mysql数据库时,有时会将密码忘记,无法进行登陆,所以本文小编给大家大家介绍了Linux出现sql密码被忘记的解决方法,文中通过图文讲解的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2024-08-08
  • Ubuntu环境编译安装PHP和Nginx的方法

    Ubuntu环境编译安装PHP和Nginx的方法

    这篇文章主要介绍了Ubuntu环境编译安装PHP和Nginx的方法,较为详细的分析了Ubuntu环境编译安装PHP和Nginx的具体步骤、相关命令与操作技巧,需要的朋友可以参考下
    2019-08-08
  • centos中文件与权限的基本操作教程

    centos中文件与权限的基本操作教程

    这篇文章主要给大家介绍了关于centos文件与权限的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • Linux下Python脚本自启动与定时任务详解

    Linux下Python脚本自启动与定时任务详解

    这篇文章主要给大家介绍了关于Linux下Python脚本自启动与定时任务的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-08-08
  • VMware下Ubuntu16.04镜像完整安装教程

    VMware下Ubuntu16.04镜像完整安装教程

    这篇文章主要为大家详细介绍了VMware下Ubuntu16.04镜像完整安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • 使用 bash 倒计时日期的方法

    使用 bash 倒计时日期的方法

    这篇文章主要介绍了用 bash 倒计时日期的相关知识,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • Linux 常用命令挂载命令详解

    Linux 常用命令挂载命令详解

    这篇文章主要介绍了Linux 常用命令挂载命令详解的相关资料,需要的朋友可以参考下
    2017-01-01
  • CentOS7增加或修改SSH端口号的方法

    CentOS7增加或修改SSH端口号的方法

    这篇文章主要介绍了CentOS7增加或修改SSH端口号的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • jmeter 在linux服务器的安装和运行教程图解

    jmeter 在linux服务器的安装和运行教程图解

    本文通过图文并茂的形式给大家介绍了jmeter 在linux服务器的安装和运行的,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • 移植新内核到Linux系统上的操作步骤

    移植新内核到Linux系统上的操作步骤

    今天小编就为大家分享一篇关于移植新内核到Linux系统上的操作步骤,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12

最新评论