CentOS磁盘空间分析与优化实战指南
1. 快速掌握CentOS磁盘空间分析技巧作为Linux系统管理员最常遇到的场景之一就是服务器磁盘空间告急。上周我就遇到了一个典型案例某台运行了3年的CentOS服务器突然报出no space left on device错误导致关键应用无法写入日志。当时第一反应就是需要快速定位哪些目录占用了大量空间但面对数百GB的存储如何高效找出罪魁祸首1.1 为什么需要专业级的空间分析命令很多人第一反应会使用基础的df -h命令这个命令确实能显示各挂载点的使用情况但它存在三个致命缺陷只能显示挂载点级别的信息无法深入到具体目录当多个分区挂载在不同目录时无法直观看出物理空间分布对于LVM等复杂存储方案信息展示不够直观更专业的做法是使用dudisk usage命令组合。我常用的黄金命令是du -h --max-depth1 / | sort -h这个命令组合的巧妙之处在于--max-depth1只显示一级子目录的大小sort -h能正确识别人类可读的大小单位GB/MB/KB从根目录开始扫描全面覆盖所有存储位置1.2 命令参数深度解析让我们拆解这个命令的每个关键参数du -h --max-depth1 / | sort -h-h人类可读格式自动转换为GB/MB/KB--max-depth1控制扫描深度1表示只显示直接子目录/扫描起始路径根目录保证全覆盖| sort -h管道传递给sort命令-h参数确保正确排序带单位的大小注意在生产环境扫描根目录可能会耗时较长建议在业务低峰期执行。对于特别大的文件系统可以添加--time参数查看耗时。2. 高级用法与场景适配2.1 排除特定目录的扫描有时我们需要排除某些特定目录如/proc、/sys等虚拟文件系统可以这样优化命令du -h --max-depth1 --exclude/proc --exclude/sys / | sort -h实测案例在某台256GB内存的服务器上不加排除参数时/proc显示为256GB实际是内存映射执行时间长达15分钟添加排除参数后结果更准确扫描时间缩短到2分钟2.2 指定扫描路径的实用技巧针对不同场景我们可以灵活调整扫描路径快速定位大日志文件du -h --max-depth1 /var/log | sort -h分析用户家目录占用du -h --max-depth1 /home | sort -h监控特定应用数据增长du -h --max-depth1 /opt/appdata | sort -h2.3 可视化分析工具推荐对于需要长期监控的场景建议安装更专业的工具yum install -y ncdu使用示例ncdu /优势交互式界面支持键盘导航可以删除文件显示百分比3. 生产环境实战经验3.1 自动化监控脚本我常用的磁盘监控脚本模板#!/bin/bash THRESHOLD90 CURRENT$(df / | grep / | awk { print $5} | sed s/%//g) if [ $CURRENT -gt $THRESHOLD ]; then echo WARNING: 根分区使用率 ${CURRENT}% | mail -s 磁盘告警 adminexample.com du -h --max-depth1 / | sort -h /tmp/disk_usage_$(date %Y%m%d).log fi设置cron定时任务0 * * * * /path/to/script.sh3.2 常见问题排查指南问题1命令执行时间过长解决方案添加--time参数找出耗时环节考虑排除非关键目录问题2结果中包含Permission denied解决方案使用sudo执行或添加2/dev/null忽略错误问题3排序结果不正确确保使用sort -h而非sort -n后者无法正确处理GB/MB单位3.3 性能优化技巧对于超大型文件系统10TB可以采用以下优化方案使用更快的存储介质保存扫描结果du -h --max-depth1 / /dev/shm/du_result.txt并行扫描不同目录for dir in /opt /home /var; do du -h --max-depth1 $dir ${dir//\//_}.log done wait使用ionice降低IO优先级ionice -c3 du -h --max-depth1 /4. 扩展知识与进阶技巧4.1 LVM环境下的空间分析在LVM环境中需要结合vgs、lvs命令vgs lvs du -h --max-depth1 /4.2 网络存储的特殊处理对于NFS等网络存储建议添加--apparent-size参数du -h --apparent-size --max-depth1 /mnt/nfs4.3 与find命令的配合使用定位大于100MB的文件find / -type f -size 100M -exec du -h {} | sort -h4.4 历史数据对比分析记录每日变化du -h --max-depth1 / /var/log/disk_usage/$(date %Y%m%d).log比较两天差异diff /var/log/disk_usage/20230101.log /var/log/disk_usage/20230102.log5. 安全注意事项敏感目录保护扫描/tmp目录可能发现可疑大文件检查/var/tmp防止恶意软件驻留权限管理sudo du -h --max-depth1 /etc系统目录需要root权限但避免以root身份执行全盘扫描日志轮转建议logrotate -f /etc/logrotate.conf定期清理旧日志特别关注/var/log/journal/在实际运维中我发现80%的磁盘空间问题都集中在几个常见目录/var/log、/tmp、/home和应用程序的数据目录。掌握这些高级用法后处理磁盘空间问题的时间从平均2小时缩短到15分钟以内。

相关新闻