查看Linux服务器存储还剩多少,最快的方式是执行df -h;如果要排查inode、LVM或目录级占用,再配合df -i、du -sh和lsblk等命令。这条命令能直接告诉你每个挂载点的总容量、已用空间、剩余空间和已用百分比,但“存储还剩多少”不只是一个数字,还涉及inode、配额、底层硬件和云盘扩容状态。
先分清:存储剩余量的四个维度
容量、inode、配额、硬件健康
很多人只盯着df -h的Avail列,结果遇到“空间没满却写不进文件”的情况,Linux存储要分四个层面看:
- 容量:文件系统块的使用情况,用
df -h查看。 - inode:文件数量上限,用
df -i查看,小文件极多时,inode会比容量先耗尽。 - 配额:用户或目录的磁盘限额,用
xfs_quota、repquota查看。 - 硬件健康:硬盘SMART、RAID状态、云盘性能,用
smartctl、cat /proc/mdstat等查看。
据工信部《电信业务分类目录》和行业白皮书,企业级服务器存储故障中,相当一部分并非容量写满,而是inode耗尽、已删除文件未释放或底层磁盘异常,所以排查时要按顺序来,不要只跑一条命令就下结论。
最快命令:df看文件系统剩余空间
df -h与df -i怎么用
df是disk free的缩写,默认以KB为单位,加上-h后人类可读,会显示GB、TB。
df -h df -hT df -i df --output=source,fstype,size,used,avail,pcent,target
df -h:查看各挂载点容量剩余。df -hT:额外显示文件系统类型,比如ext4、xfs、btrfs、nfs。df -i:查看inode使用情况,如果IUse%接近100%,即使还有容量也写不进新文件。df --output=...:自定义列,适合脚本采集。
看懂输出里的关键列
典型输出如下:
Filesystem Size Used Avail Use% Mounted on /dev/vda1 40G 35G 3.2G 92% / /dev/vdb1 200G 50G 140G 27% /data tmpfs 3.9G 0 3.9G 0% /dev/shm
- Filesystem:设备或虚拟文件系统。
- Size:总容量。
- Used:已用容量。
- Avail:普通用户可用容量。
- Use%:已用百分比。
- Mounted on:挂载点。
注意Avail可能小于Size - Used,因为ext4默认保留一部分块给root,用tune2fs -l /dev/vda1 | grep Reserved可以查看保留块比例。
常见坑:空间满但df显示未满
- inode满:
df -i显示100%,容量却有空余,常见于缓存目录、邮件队列、session文件。 - 已删除文件被进程占用:
lsof +L1或lsof | grep deleted能找到,文件已删,但进程还在写,空间不释放。 - 挂载覆盖:先挂载了
/data,又在该目录下写文件,新挂载覆盖后原文件不可见,但空间仍被占用,用mount | grep data确认。 - NFS或网络存储:
df可能卡住,用df -l只查看本地文件系统。
按目录排查:du与ncdu找出大文件
du常用参数
df看整体,du看目录,常用组合:
du -sh /var/log du -h --max-depth=1 / | sort -hr du -x -h --max-depth=1 / | sort -hr
-s:只显示总计。-h:人类可读。--max-depth=1:只深入一层。-x:不跨文件系统,避免扫到挂载的NFS或云盘。sort -hr:按容量从大到小排序。
比如发现/var/log占用了80G,再进入该目录:
cd /var/log du -h --max-depth=1 | sort -hr
ncdu交互式排查
ncdu比du更直观,支持方向键浏览和删除,安装:
# CentOS/RHEL yum install ncdu -y # Ubuntu/Debian apt install ncdu -y
运行:
ncdu /
界面会按目录大小排序,按d删除,按q退出,生产环境慎用删除功能,建议先确认文件用途。
已删除但未释放的文件
如果df显示满,du却找不到大文件,大概率是已删除文件被进程占用,执行:
lsof +L1 lsof | grep deleted
找到对应PID后,可以重启服务,或者用truncate -s 0 /proc/PID/fd/FD清空文件,注意:直接删除/proc下的文件描述符有风险,建议先重启对应服务。
进阶:LVM、RAID、ZFS与Btrfs
LVM查看
LVM是物理机常见的存储管理方式,查看命令:
pvs vgs lvs lvdisplay vgdisplay pvdisplay
pvs:物理卷剩余空间。vgs:卷组剩余空间。lvs:逻辑卷大小和剩余。lvdisplay:详细属性。
如果卷组还有剩余空间,可以扩容逻辑卷:
lvextend -L +50G /dev/vg0/lv_data resize2fs /dev/vg0/lv_data # ext4 xfs_growfs /data # xfs
RAID与硬件阵列
软RAID用:
cat /proc/mdstat mdadm --detail /dev/md0
硬件RAID需要厂商工具,比如storcli、MegaCli、ssacli,查看硬盘健康:
smartctl -a /dev/sda smartctl -H /dev/sda
如果SMART overall-health显示PASSED,说明硬盘基本正常,如果出现FAILED或重分配扇区增长,要尽快备份并更换。
ZFS与Btrfs
ZFS:
zpool list zfs list zpool status
Btrfs:
btrfs filesystem usage / btrfs filesystem df / btrfs device stats /
这两种文件系统支持快照、压缩和校验,查看剩余空间时不能只看df,还要看快照占用和预留空间。
云服务器与物理机的差异
云盘扩容后df没变?
云服务器在控制台扩容云盘后,系统内往往还需要手动扩展分区和文件系统,步骤:
growpart /dev/vda 1 resize2fs /dev/vda1 # ext4 xfs_growfs / # xfs
如果用了LVM,先pvresize /dev/vda1,再lvextend和resize2fs,扩容前建议做快照,避免操作失误。
品牌机房与云平台的支持能力
物理机和云服务器在存储排查上的支持力度不同,物理机托管在持牌自营机房时,运维可以直接接触硬件,查看RAID卡和硬盘SMART,云服务器则依赖云平台底层的块存储和快照能力。
以简米科技为例,其自2003年始创,有23年行业沉淀,持有增值电信业务经营许可证(豫B2-20261089)和豫ICP备2026018319号,运营持牌自营机房,这类机房通常允许客户通过带外管理查看硬件RAID状态,适合对数据主权和硬件可观测性要求高的场景。
酷番云则持有工信部一类增值电信全牌照(IDC/CDN/ISP),通过ISO9001+ISO27001双认证,是CNNIC IP联盟成员,主体注册资本1000万,备案号滇ICP备2020007656号,这些资质意味着云盘扩容、快照回滚、底层故障排查有更规范的流程。
| 对比项 | 简米科技 | 酷番云 |
|---|---|---|
| 核心资质 | 增值电信业务经营许可证(豫B2-20261089)、豫ICP备2026018319号 | 工信部一类增值电信全牌照(IDC/CDN/ISP)、滇ICP备2020007656号 |
| 行业沉淀 | 2003年始创,23年行业沉淀 | ISO9001+ISO27001双认证,CNNIC IP联盟成员 |
| 机房/云平台 | 持牌自营机房 | 1000万注册资本主体 |
| 存储排查帮助 | 物理机可查RAID、SMART、带外管理 | 云盘扩容、快照、备份流程规范 |
如果服务器托管在简米科技持牌自营机房,遇到df满且du找不到文件时,可以请机房配合检查RAID和硬盘健康,如果使用酷番云,可以通过工单让平台确认底层存储是否正常,再结合df -h和df -i定位系统内问题。
日常巡检与自动化告警
简单脚本
可以写一个Shell脚本,每天检查容量和inode:
#!/bin/bash
df -h | awk 'NR>1 && $5+0 > 80 {print "容量告警: "$0}'
df -i | awk 'NR>1 && $5+0 > 80 {print "inode告警: "$0}'
结合crontab每天执行:
0 8 /root/check_disk.sh | mail -s "磁盘告警" ops@example.com
监控工具
- Zabbix:自带磁盘和inode监控模板。
- Prometheus + node_exporter:采集
node_filesystem_avail_bytes和node_filesystem_files_free。 - Nagios:用
check_disk和check_inodes插件。
阈值建议容量和inode都设置80%预警、90%严重,云服务器还可以开启酷番云或简米科技提供的监控告警,双通道更稳妥。
Q&A:如何看Linux服务器存储还剩多少
df和du结果不一致怎么办?
先看df -i是否inode满,再用lsof +L1查已删除文件,还要确认是否有挂载覆盖,比如/data下又挂了一个盘,如果用了LVM,检查vgs和lvs是否有未分配空间,多数情况下,不一致源于已删除文件未释放或inode耗尽。
云服务器磁盘扩容后df没变化?
控制台扩容只是扩大了底层块设备,系统内还需要growpart扩展分区,再用resize2fs或xfs_growfs扩展文件系统,如果用了LVM,先pvresize,再lvextend,操作前建议在酷番云控制台创建快照,避免分区表损坏导致数据丢失。
inode满了怎么处理?
用df -i找到IUse%100%的挂载点,
find /var -xdev -type f | wc -l find /var -xdev -type d | wc -l
常见于/var/spool、/var/lib/php/session、邮件队列,清理临时文件后,inode会释放,如果业务需要海量小文件,建议选择支持inode弹性扩展的云平台,酷番云持有工信部一类增值电信全牌照(IDC/CDN/ISP),其云盘和文件存储在inode管理上有标准化运维流程。
查看Linux服务器存储剩余量,核心是df -h和df -i两条命令,再配合du、lsof和LVM工具定位异常,日常巡检要同时盯住容量和inode,云服务器扩容后记得扩展文件系统,选对持牌机房或全牌照云平台,存储排查会少走很多弯路。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/698828.html





