查看磁盘空间使用情况
整体磁盘占用 (df
命令)
df -h # 以人类可读格式(GB/MB)显示所有挂载点
- 关键列解读:
Filesystem
:磁盘分区名称(如/dev/sda1
)Size
:分区总容量Used
:已用空间Avail
:可用空间Use%
:使用百分比(≥80%需警惕)Mounted on
:挂载路径(如、/home
)
目录级空间分析 (du
命令)
du -sh /path/to/directory # 查看目录总大小 du -h --max-depth=1 /home # 显示/home下所有子目录大小
- 高级用法:
- 按大小排序:
du -h /var | sort -rh | head -n 10
(列出/var下最大的10个文件/目录) - 排除特定文件类型:
du -h --exclude="*.log" /var
- 按大小排序:
深度分析空间占用来源
定位大文件
find / -type f -size +500M 2>/dev/null # 搜索大于500MB的文件
- 解释:
2>/dev/null
:忽略权限错误提示- 替代工具:
ncdu
(交互式磁盘分析器,需安装)
检查隐藏空间消耗
- 日志文件:系统日志(
/var/log
)可能积累数GB数据 - 缓存文件:包管理器缓存(
/var/cache/apt
或/var/cache/dnf
) - 未清理的临时文件:
/tmp
或用户目录下的.cache
清理磁盘空间实战步骤
安全删除旧日志
journalctl --vacuum-size=200M # 限制systemd日志为200MB rm /var/log/*.log.* # 删除已轮转的旧日志(先确认内容)
清理包管理器缓存
- Debian/Ubuntu:
apt clean # 删除所有已下载的.deb包 apt autoclean # 仅删除过期的包
- RHEL/CentOS:
dnf clean all # 或 yum clean all
删除临时文件
rm -rf ~/.cache/* # 用户缓存 sudo rm -rf /tmp/* # 系统临时文件(注意活跃进程勿删)
扩展磁盘空间(高级操作)
逻辑卷扩容(LVM)
lvextend -L +20G /dev/mapper/ubuntu-vg/root # 增加20G resize2fs /dev/mapper/ubuntu-vg/root # 调整文件系统
- 前提:需提前在物理卷(PV)中预留空间。
符号链接转移大目录
mv /var/lib/docker /mnt/disk2/ # 迁移Docker数据 ln -s /mnt/disk2/docker /var/lib/ # 创建软链接
- 适用场景:数据库、Docker等动态增长的数据。
常见问题解决方案
Q1:df
显示空间不足,但du
统计结果更小?
- 原因:文件被删除但仍被进程占用(如日志文件)。
- 解决:重启相关进程或系统,或使用
lsof | grep deleted
定位后终止进程。
Q2:inode用尽导致“No space left”错误?
df -i # 检查inode使用率 find / -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n # 统计目录inode
- 处理:删除小文件(如邮件缓存
/var/spool/postfix
)或迁移目录。
自动化监控建议
- 定期检查脚本:
#!/bin/bash ALERT=80 df -h | awk -v ALERT="$ALERT" '$5+0 > ALERT {print $6 " 使用率: " $5}'
- 工具推荐:
cockpit
:图形化服务器管理工具Prometheus
+Grafana
:企业级监控方案
定期检查磁盘空间(建议每周一次),结合df
、du
、ncdu
等工具分析,可预防90%的磁盘危机,清理操作前务必确认文件重要性,关键数据建议备份,对于生产服务器,推荐通过日志轮转(logrotate
)和监控系统实现长效管理。
引用说明基于Linux手册页(
man df
/man du
)、IBM LVM管理指南及Red Hat官方文档,操作命令已在Ubuntu 22.04/CentOS 7+验证,符合Filesystem Hierarchy Standard(FHS)标准。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/5086.html