一、定位大文件:找到占用空间的根源
在CentOS中,精准定位大文件是处理空间占用的第一步,以下是常用命令:
find命令:按大小筛选文件
find是最基础的文件查找工具,可通过-size参数指定文件大小阈值。例如,查找/home目录下大于100MB的普通文件,命令为:find /home -type f -size +100M;若需查找小于10MB的文件,可使用-size -10M。若要同时限定文件大小范围(如10MB-50MB),可组合-size +10M -size -50M。该命令会递归搜索指定目录,输出符合条件的文件路径。
du命令:查看目录/文件磁盘使用量
du(Disk Usage)用于统计目录或文件的磁盘占用情况,结合sort和head可快速找出大文件/目录。例如,查看当前目录下最大的10个文件/目录:du -ah --max-depth=1 | sort -rh | head -n 10;若需查看/var/log目录下的情况,可将路径替换为/var/log。-a参数显示所有文件和目录,-h以人类可读格式(K/M/G)显示大小,--max-depth控制递归深度(1表示仅显示当前目录下一层)。
ncdu工具:交互式磁盘分析
ncdu(NCurses Disk Usage)是更直观的图形化工具,通过终端界面展示目录大小分布,支持导航和删除操作。安装命令:sudo yum install ncdu;使用命令:ncdu /path/to/search(如ncdu /home)。进入界面后,可通过方向键选择文件/目录,按Enter查看详情,按d删除选中项。该工具适合快速定位大文件,尤其适用于复杂的目录结构。
二、清理大文件:释放磁盘空间
定位到大文件后,可根据文件类型和重要性选择清理方式:
删除无用文件
使用find命令直接删除符合条件的文件(谨慎操作,避免误删系统文件)。例如,删除/home目录下大于100MB的.log日志文件:find /home -type f -name "*.log" -size +100M -exec rm -f {} \;。若需删除所有大于100MB的文件,可省略-name参数。
清理系统日志
系统日志(如/var/log目录下的messages、secure、journal文件)可能占用大量空间,可通过以下命令清理:
find /var/log -type f -name "*.log.*" -mtime +7 -exec rm -f {} \;(删除7天前的日志文件);journalctl管理日志:journalctl --vacuum-time=3d(保留最近3天的日志)、journalctl --vacuum-size=500M(限制日志大小为500MB);rm -rf /var/log/journal/*(删除journal日志文件)。清理缓存文件
系统缓存(如yum缓存、/tmp临时文件)可安全清理:
yum缓存:yum clean all(删除已下载的软件包缓存);/tmp目录:rm -rf /tmp/*(删除临时文件,注意/tmp下的文件可能在重启后自动清除)。压缩或归档冷数据
对于不常用但需保留的文件(如旧备份、历史数据),可通过压缩减少占用。例如,将/home/user/old_data目录打包为gzip压缩文件:tar -czvf old_data.tar.gz /home/user/old_data。压缩后,原目录可删除以释放空间。
三、预防措施:避免大文件再次占满空间
日志轮转(Logrotate)
使用logrotate工具定期压缩、删除旧日志,避免日志文件无限增长。默认配置文件位于/etc/logrotate.conf,可自定义轮转规则(如按天、按大小轮转)。例如,添加以下配置可实现/var/log/myapp.log每天轮转,保留7天内的日志:
/var/log/myapp.log {
daily
rotate 7
compress
missingok
notifempty
}
手动触发轮转:logrotate /etc/logrotate.conf。
扩展磁盘空间
若清理后仍空间不足,可考虑扩展磁盘:
pvcreate)、卷组(vgextend)、逻辑卷(lvextend),最后调整文件系统(xfs_growfs或resize2fs)实现在线扩容;/home),并修改/etc/fstab实现开机自动挂载。设置磁盘监控告警
使用工具(如cron+df脚本、Zabbix、Nagios)定期监控磁盘使用率,当使用率超过阈值(如80%)时发送告警,及时处理。