在CentOS系统中,监控和管理硬盘使用情况是系统管理员日常运维的重要任务,通过合理的命令工具,可以快速掌握磁盘空间分配、文件系统状态及 inode 使用情况,及时发现潜在问题并优化存储资源,本文将详细介绍CentOS系统中常用的硬盘使用管理命令,帮助用户高效进行磁盘监控与分析。

基础磁盘空间查询命令
-
df 命令:查看文件系统整体使用情况
df命令是磁盘空间监控的核心工具,默认显示所有挂载文件系统的总容量、已用空间、可用空间及使用百分比。- 常用参数:
-h:以人类可读格式显示(如KB、MB、GB)-T:显示文件系统类型-i:显示 inode 使用情况而非块空间
示例:df -hT会列出每个分区的文件系统类型、总大小、已用空间及挂载点,便于快速定位大容量分区。
- 常用参数:
-
du 命令:深入分析目录级磁盘占用
du命令用于统计指定目录或文件的磁盘使用量,适合排查具体目录的存储占用情况。- 常用参数:
-sh:显示总大小(-s)并以人类可读格式(-h)呈现--max-depth=N:限制统计深度(如--max-depth=1仅统计一级子目录)
示例:du -sh /var/log可快速查看日志目录的总占用空间,而du -sh /* | sort -hr则能按大小排序列出根目录下的顶级文件夹占用。
- 常用参数:
磁盘分区与文件系统管理
-
lsblk 命令:可视化磁盘结构
lsblk以树状图形式展示块设备信息,包括磁盘名称、分区大小、挂载点及文件系统类型,适合理解磁盘的物理逻辑结构。- 常用参数:
-f:显示文件系统标签(如UUID、文件系统类型)-l:使用列表格式替代树状图
示例:lsblk -f可清晰看到各分区的文件系统类型及是否挂载,便于排查未识别的分区。
- 常用参数:
-
fdisk 与 parted:分区管理工具
- fdisk:适用于传统MBR分区表,通过
fdisk -l查看分区详情,进入交互模式后可创建、删除或调整分区。 - parted:支持GPT分区表,功能更强大,适合大容量磁盘管理。
注意:分区操作会丢失数据,务必提前备份。
- fdisk:适用于传统MBR分区表,通过
高级磁盘监控与诊断
-
ncdu:交互式磁盘使用分析器
若系统未安装,可通过yum install ncdu安装。ncdu提供类似du的功能,但以交互式界面展示目录占用,支持按大小排序、删除文件等操作,适合快速定位大文件。 -
iotop:监控磁盘I/O负载
安装命令:yum install iotop。iotop实时显示各进程的磁盘读写速度,帮助识别高I/O占用进程,排查系统卡顿问题。
- 常用参数:
-o:仅显示有I/O活动的进程-P:按进程而非线程显示
- 常用参数:
-
smartctl:硬盘健康状态检测
需安装smartmontools(yum install smartmontools),通过smartctl -a /dev/sda可查看硬盘的SMART信息,包括温度、坏道、读写错误率等,提前预警硬件故障。
磁盘空间清理与优化
-
日志文件清理
CentOS系统中,日志文件可能快速占用大量空间,使用logrotate工具可自动压缩和轮转日志:cat /etc/logrotate.conf # 查看全局配置
手动清理大日志文件前,建议使用
truncate -s 0 /var/log/bigfile.log清空内容而非直接删除,避免影响正在运行的进程。 -
临时文件与缓存清理
- 清理 yum 缓存:
yum clean all - 清理临时文件:
rm -rf /tmp/*(需确认无重要进程依赖) - 清理 APT 缓存(若使用dnf):
dnf clean all
- 清理 yum 缓存:
-
文件系统碎片整理
对于ext4文件系统,可通过e4defrag工具整理碎片:e4defrag /dev/sda1 # 整理指定分区
注意:SSD硬盘无需碎片整理,反而会减少寿命。

自动化监控与告警
为避免手动检查的疏漏,可通过 cron 定时执行磁盘监控脚本,创建脚本 disk_monitor.sh:
#!/bin/bash
USAGE=$(df -h | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{print $5}' | cut -d'%' -f1)
if [ $USAGE -gt 80 ]; then
echo "警告:磁盘空间使用率超过80%" | mail -s "磁盘空间告警" admin@example.com
fi
然后通过 crontab -e 添加定时任务(如每天凌晨1点执行)。
相关问答FAQs
Q1: 如何快速定位占用空间最大的文件?
A: 使用以下命令组合可递归查找当前目录下最大的10个文件:
find . -type f -exec du -Sh {} + | sort -rh | head -n 10
-S 以人类可读格式显示大小,-rh 按数值降序排序。
Q2: CentOS系统提示“No space left on device”,但df显示仍有剩余空间,如何解决?
A: 这种情况通常是 inode 耗尽导致的,可通过 df -i 检查 inode 使用率:
- 若 inode 100%:需删除大量小文件(如日志、临时文件),因为每个文件都会占用一个 inode。
- 若 inode 未耗尽:可能是文件系统损坏,尝试
fsck -t ext4 /dev/sda1修复(需卸载分区)。