在日常服务器管理和运维中,磁盘空间的使用情况往往是一个容易被忽视但又极其关键的问题。尤其是在运行 Web 服务、数据库、日志系统的 Linux 服务器上,如果磁盘被写满,可能会导致网站崩溃、数据库无法写入、甚至整个系统卡死。因此,学会在Linux系统中检查磁盘空间使用情况,不仅是运维工程师的基本功,也是开发者、站长、数据分析师需要掌握的技能。
Linux 系统下检查磁盘空间的常用方法:
1. 使用 df 命令(Disk Free)
df 是最常用的磁盘查看命令,用于显示文件系统的磁盘空间使用情况。
基本用法:
df -h
输出示例:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 40G 25G 13G 66% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
- Filesystem:磁盘分区或挂载点
- Size:分区总容量
- Used:已使用容量
- Avail:可用空间
- Use%:已使用百分比
- Mounted on:挂载目录
常用选项:
df -h
:以 GB/MB 显示,更直观
df -i
:显示 inode 使用情况(inode 被占满也会导致无法写入文件)
2. 使用 du 命令(Disk Usage)
du
用于查看目录或文件的大小。
查看当前目录下各文件夹的大小:
du -sh *
-s
:汇总总大小
-h
:以可读单位显示
示例输出:
200M logs
1.2G mysql
500M uploads
常见用法:
du -sh /var/*
→ 检查 /var 目录下哪个子目录占用大
du -sh /home/*
→ 查看用户目录使用情况
3. 结合 du 与 sort
想要快速找到占用磁盘最多的文件夹,可以使用:
du -ah /var | sort -rh | head -n 10
输出结果会列出 /var
目录下前 10 个最大文件/目录。
4. 使用 ls 查看大文件
有时某个大文件占用空间,可以用:
ls -lhS /var/log
-S
表示按大小排序,方便找出最大文件。
5. 使用 ncdu(推荐)
如果你希望用图形化界面管理,可以安装 ncdu
:
# Debian/Ubuntu
sudo apt install ncdu
# CentOS
sudo yum install ncdu
运行:
ncdu /
它会显示交互式界面,你可以轻松查看和删除大文件,非常适合快速排查。
如何预防磁盘被写满?
启用日志轮转:Linux 系统自带 logrotate,可定期压缩、清理日志。
设置磁盘使用告警:可以写脚本结合 df 命令,每小时检查一次磁盘,如果超过 80%,发送邮件或短信提醒。
监控工具:使用 Zabbix、Nagios、Prometheus 等运维工具,实时监控磁盘空间。
分区规划合理:把 /var/log、/home、/tmp 分区独立挂载,避免单点撑爆整个系统。
常见问题解答:
1. df 和 du 命令结果为什么不一样?
df
显示的是整个文件系统的磁盘使用情况。du
显示的是目录/文件的磁盘使用量。差异可能来自缓存、软链接或已删除但未释放的文件。
2. 如何找到被删除但仍占用空间的文件?
如果一个进程仍在使用被删除的文件,它的空间不会被释放。可以用:
lsof | grep deleted
找到对应进程后,重启服务即可释放。
3. 磁盘空间明明有剩余,但无法写入?
可能是 inode 耗尽了,可以用 df -i
查看 inode 使用情况。
4. 如何快速清理 Linux 磁盘?
- 清理日志:
/var/log
- 清理缓存:
apt-get clean
或yum clean all
- 删除无用大文件:结合
du
和find
。
5. 企业服务器推荐使用什么监控方案?
对于中小企业,可以用 ncdu + Shell 脚本监控;对于大型企业,建议接入 Prometheus + Grafana 或 Zabbix,实现实时监控和告警。
总结:检查磁盘空间是 Linux 系统运维 中不可或缺的一环。无论你是个人站长还是企业运维,只要养成定期检查磁盘的习惯,辅以合理的监控机制,就能大大降低系统崩溃的风险。