网站无法上传文件、数据库提示写入失败,或者备份任务突然中断,都可能与服务器存储空间有关。遇到这类问题,先确认异常目录所在的文件系统,再查看占用来源,通常比直接清理整个日志目录更容易找准问题。
下面按照实际排查顺序,介绍Linux服务器上常用的查看方法。命令主要适用于安装GNU工具的Ubuntu、Debian、Rocky Linux等常见发行版。通过终端连接服务器后即可操作;示例输出为说明用的示意数据,实际结果以你的服务器为准。
一、如何在Linux中查看磁盘空间
查看当前挂载的文件系统:
df -h
-h会把容量显示为K、M、G等便于阅读的单位,采用1024进位。需要同时查看文件系统类型,可以使用:
df -hT
下面是输出示意:
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 50G 42G 5.5G 89% /
重点查看这些字段:
- Filesystem:文件系统对应的设备或来源
- Type:文件系统类型,添加-T后显示
- Size:总容量
- Used:已使用空间
- Avail:可用空间
- Use%:使用率
- Mounted on:挂载目录
如果报错发生在某个目录,直接查询它所在的文件系统。例如,备份保存在/var下:
df -hT /var
这里查看的是/var所在文件系统的整体空间,不是/var目录自身的大小。一个目录可能位于根文件系统,也可能是独立的数据盘挂载点,要先分清这一点。
二、查看目录占用确认根文件系统空间紧张后,可以查看根目录下一级目录的占用:
sudo du -x -h –max-depth=1 / | sort -hr
参数含义如下:
- -x:统计时不跨越其他文件系统。
- -h:使用便于阅读的容量单位。
- –max-depth=1:显示指定目录及下一级目录的汇总。
- sort -hr:按带容量单位的数值从大到小排列。
找到较大的目录后,继续向下查看。例如,/var占用较多:
sudo du -x -h –max-depth=1 /var | sort -hr
输出示意:
12G /var
8.6G /var/log
2.5G /var/lib
700M /var/cache
120M /var/tmp
在这个例子中,可以继续检查日志目录:
sudo du -x -h –max-depth=1 /var/log | sort -hr
每一层都先看最大的几个目录,逐步缩小范围。输出中的父目录总量已经包含子目录,不需要把两者再次相加。
如果文件存放在独立挂载的数据盘中,把命令里的路径替换为该数据盘挂载点。使用-x扫描根目录时,独立数据盘里的文件不会被算进去。
目录扫描会产生磁盘读取,大目录可以在业务较空闲时检查,或者先从已知的日志、备份目录开始。
三、查看单个文件知道具体文件路径后,可以查看它的空间占用:
sudo du -h /var/log/example.log
这里的example.log是示例文件名,使用时替换成实际路径。
如果想列出/var中大于512MiB的普通文件,可以执行:
sudo find /var -xdev -type f -size +512M -exec ls -lh — {} +
这条命令会显示文件路径、大小和时间等信息,方便判断它是日志、压缩包、备份还是业务文件。find的大小筛选依据是文件的逻辑大小,与du显示的实际分配空间可能不同。
定位后,按文件用途处理:
- 日志文件检查增长原因和轮转规则,并按保留周期归档。
- 历史备份确认已有有效副本,再调整保留数量。
- 应用缓存使用应用提供的清理方式。
- 数据库数据文件通过对应数据库工具维护。
ncdu可以在终端中展示目录占用,适合不想反复输入du命令的用户。需要先安装该工具。
Ubuntu、Debian可使用:
sudo apt update
sudo apt install ncdu
其他发行版按自己的软件包管理方式安装。安装后,扫描/var:
sudo ncdu -rr -x /var
-x限制扫描范围为当前文件系统;-rr关闭内置删除和启动Shell的功能,适合用来查看占用。扫描完成后,使用方向键选择目录、回车进入,按q退出。
五、当Linux磁盘空间不足时该怎么办 1. 检查inode是否耗尽大量小文件可能耗尽inode,即使磁盘仍有剩余容量,也会影响新文件创建。查看根文件系统的inode使用情况:
df -i /
关注IFree和IUse%。如果空闲inode很少,可以统计一级目录使用的inode数量:
sudo du –inodes -x –max-depth=1 / | sort -nr
这次结果表示inode数量,不是文件容量。继续查看数量较高的目录,重点检查缓存、会话文件、邮件队列和临时文件等位置。
2. 检查已删除但仍被进程打开的文件有时日志文件已经删除,df显示的可用空间却没有明显增加。文件可能仍被运行中的进程打开,空间尚未释放。
如果服务器安装了lsof,可以查看这类文件:
sudo lsof +L1
结合进程名称、文件大小和路径定位相关服务。确认原因后,按服务支持的方式重新打开日志,或者安排维护窗口重启相关服务;重启可能影响正在处理的请求。
df与du结果不同也可能与统计范围、读取权限或文件系统自身的空间管理有关,不能仅凭一次差异就认定文件丢失。
完成清理、日志轮转或相关服务维护后,再检查异常目录所在的文件系统:
df -hT /var
df -i /var
一次查看容量,一次查看inode。如果空间短时间内又被占满,继续定位增长最快的目录和对应进程,检查日志异常、备份保留策略或缓存积累。
如果是使用Hostinger VPS等云服务器,可以结合管理面板查看资源情况,再通过终端检查具体文件系统和目录。需要扩容时,也要确认分区及文件系统是否已经使用新增容量。
常见问题df与du有什么区别?
df查看文件系统整体的空间使用和可用容量,du统计指定文件或目录的空间占用。排查时先用df确定位置,再用du寻找占用来源。
df -h /var能查看/var目录有多大吗?
不能。它显示的是/var所在文件系统的空间。查看目录自身的总量,可以使用:
sudo du -sh /var
如果只想统计同一文件系统范围,加上-x。
为什么文件已经删除,空间还没有释放?
文件仍被进程打开时,空间可能要等相关进程关闭文件后才释放。可以用lsof +L1查找,再按对应服务的维护方式处理。
查看磁盘空间需要root权限吗?
df通常可以由普通用户执行。扫描系统目录或查看其他进程打开的文件时,权限可能影响结果,因此上述排查命令在需要时使用了sudo。
磁盘使用率到多少需要处理?
不能只看一个固定百分比,还要看剩余容量、数据增长速度和业务写入量。数据库、日志和备份都需要留出空间,可以按业务增长情况设置告警并定期检查。
相关阅读:
《如何清理Ubuntu的磁盘空间?Ubuntu释放磁盘空间方法介绍》
(本文由美国主机侦探原创,转载请注明出处“美国主机侦探”和原文地址!)
微信扫码加好友进群
主机优惠码及时掌握
QQ群号:938255063
主机优惠发布与交流




