云计算百科
云计算领域专业知识百科平台

使用df和高效定位服务器磁盘占用情况

📊 一、命令基础:核心功能与定位

  • df(Disk Free)

    • 功能:显示文件系统级别的磁盘空间使用情况,包括总容量、已用空间、可用空间、使用率百分比及挂载点。
    • 适用场景:快速检查磁盘分区是否空间不足,例如监控根分区(/)或数据盘(/data)的剩余空间。
  • du(Disk Usage)

    • 功能:统计目录或文件级别的磁盘占用空间,支持递归计算子目录。
    • 适用场景:定位大文件/大目录(如日志目录/var/log),分析存储消耗来源。

  • 🛠️ 二、命令详解:选项与示例

    1. df命令常用选项及示例
    选项作用示例命令输出说明
    -h 人类可读格式(KB/MB/GB) df -h 显示易读的磁盘使用情况
    -T 显示文件系统类型(如ext4、xfs) df -T /home 输出包含文件系统类型的分区信息
    -i 显示inode使用情况 df -i 检查inode是否耗尽(小文件过多时常见)
    –total 显示所有文件系统的总计 df -h –total 末尾汇总所有分区的空间使用

    典型输出:

    $ df -hT
    Filesystem Type Size Used Avail Use% Mounted on
    /dev/sda1 ext4 20G 15G 4.0G 79% /
    /dev/sdb1 xfs 100G 60G 40G 60% /data


    2. du命令常用选项及示例
    选项作用示例命令输出说明
    -h 人类可读格式 du -h ~/Documents 显示目录下各文件/子目录大小
    -s 仅显示汇总值(不展开子目录) du -sh /var/log 输出目录总大小(如1.2G /var/log)
    –max-depth=N 限制递归深度 du -h –max-depth=1 /usr 仅显示/usr下一级子目录大小
    -a 包括文件在内的所有项 `du -ah /tmp sort -rh`
    -c 显示总计 du -ch *.log 计算所有.log文件总大小

    典型场景:

    # 查找当前目录下占用最大的前5个目录
    $ du -h –max-depth=1 | sort -rh | head -n 5
    12G ./database
    8.4G ./logs
    3.2G ./backups
    1.1G ./downloads
    24G . # 当前目录总计


    ⚖️ 三、核心区别:df vs du

    维度dfdu原因说明
    作用范围 文件系统整体(分区/挂载点) 具体目录或文件 df读取文件系统元数据;du遍历文件
    输出内容 总容量、可用空间、使用率百分比 目录/文件的实际占用空间 df关注剩余空间;du关注已用空间
    性能影响 低(直接读取内核缓存) 高(需递归遍历文件树) 大目录下du可能消耗较多I/O资源
    不一致场景 显示100%已用,但du统计值更少 统计值小于df的已用空间 文件被删除但未释放(进程仍占用句柄)

    💡 关键差异示例:
    若rm删除一个大文件后,du统计值立即减少,但df显示空间未释放——因文件被进程占用(可通过lsof | grep deleted定位进程并重启释放)。


    🔍 四、典型应用场景

    1. 磁盘空间不足排查
    • 步骤1:用df -h定位满盘的分区(如/分区使用率95%)。
    • 步骤2:用du -sh /* –max-depth=1检查根目录下各子目录大小,找到最大占用(如/var)。
    • 步骤3:逐层深入分析:du -h –max-depth=1 /var → du -h /var/log | sort -rh。
    2. Inode耗尽问题
    • 现象:创建文件失败,但df -h显示空间充足。
    • 解决:df -i检查inode使用率,若100%则清理小文件(如临时文件、缓存)。
    3. 自动化监控脚本

    # 磁盘空间超过90%时邮件告警
    THRESHOLD=90
    USAGE=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')
    if [ "$USAGE" -ge "$THRESHOLD" ]; then
    echo "警告:根分区使用率 ${USAGE}%" | mail -s "磁盘告警" admin@example.com
    fi


    🧩 五、命令组合技巧

  • 快速定位大文件du -ah / | sort -rh | head -n 20 # 全盘查找最大的20个文件
  • 排除特定目录du -h –exclude="*.cache" –max-depth=2 # 忽略.cache目录
  • 跨文件系统统计du -x / # 跳过其他文件系统(如NFS挂载点)

  • 💎 总结

    • df:监控分区整体空间,用于预防磁盘耗尽。
    • du:分析具体存储消耗来源,用于清理大文件/目录。
    • 黄金组合:df -h → 定位问题分区 → du –max-depth逐层排查 → 清理目标

    ⚠️ 操作注意:生产环境慎用rm -rf,建议先truncate -s 0 大文件清空内容,再逐步删除。对关键目录操作前备份(如tar -czvf backup.tar.gz /path)。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 使用df和高效定位服务器磁盘占用情况
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!