centos如何回收利用数据文件
小樊
41
2025-12-21 14:38:57
CentOS 数据文件回收与空间释放指南
一 标准清理释放空间
- 包管理与系统更新残留
- 清理 YUM/DNF 缓存:执行 sudo yum clean all(CentOS 8+ 可用 sudo dnf clean all)。
- 移除无用依赖:执行 sudo yum autoremove。
- 清理旧内核(推荐保留最近 1–2 个):执行 sudo package-cleanup --oldkernels --count=1。
- 日志与临时文件
- 清理 systemd 日志:执行 sudo journalctl --vacuum-time=2weeks(可按需改为 –vacuum-size=100M)。
- 清理临时目录:执行 sudo rm -rf /tmp/ /var/tmp/*(系统重启后 /tmp 通常会自动清空,但残留文件仍可能占用空间)。
- 清理包管理器缓存目录:执行 sudo rm -rf /var/cache/yum/。
- 大文件定位与处置
- 快速扫描大文件:执行 find / -xdev -size +1G -exec ls -lh {} ;(避免跨挂载点扫描)。
- 交互式分析占用:安装并使用 ncdu(执行 sudo yum install ncdu && ncdu /),定位后可按需删除。
- 图形化辅助工具
- 桌面环境可用 BleachBit 进行可视化清理(执行 sudo yum install bleachbit)。
二 删除文件未释放空间的排查与修复
- 现象与原因
- 使用 rm 删除正在被进程写入的日志/文件时,仅解除目录链接,进程仍持有文件描述符,磁盘空间不会立即释放。
- 快速修复步骤
- 查找被删除但仍被占用的文件:执行 lsof | grep deleted,输出中可见类似 “REG … (deleted)” 的条目及对应 PID。
- 释放空间方式(按影响从低到高):
- 让应用重新打开日志:如 nginx 可执行 nginx -s reopen,或重启对应服务。
- 重启进程/服务:执行 systemctl restart 或 kill (谨慎,确保业务允许)。
- 应急取回内容:若文件内容仍被进程占用,可从 /proc//fd/ 读取并保存,例如 cat /proc/12345/fd/3 > /var/log/app.log.recovered(仅在确认安全时操作)。
三 建立安全回收站与定时清理
- 使用 trash-cli(更接近“回收站”的体验)
- 安装:sudo yum install trash-cli。
- 常用命令:trash 、trash -r 、trash-empty(清空回收站)。
- 自定义回收站脚本(可控、可审计)
- 思路:将 rm 别名指向脚本,将删除的文件 mv 到 ~/.trash/YYYY-MM-DD_HH/,并按时间策略清理。
- 示例要点:
- 在 ~/.bashrc 中设置别名:alias rm=‘/usr/local/bin/rm.sh’,并提供 rl(查看回收站)、surm(强制删除)等辅助别名。
- 脚本 /usr/local/bin/rm.sh 将目标按日期分层移动至回收站目录。
- 定时清理:在 crontab -e 中加入如 @weekly /bin/rm -rf /home//.trash/(可按需改为 30 2 * * * find /home/*/.trash -mtime +7 -delete)。
四 虚拟机环境的额外回收(VMware)
- 适用场景
- 在 VMware Workstation/Player 中删除虚拟机内大量文件后,宿主机磁盘空间未同步回收。
- 操作步骤
- 安装工具:sudo yum install -y open-vm-tools。
- 查看可压缩路径:vmware-toolbox-cmd disk list。
- 回收空间:vmware-toolbox-cmd disk shrink /(建议先执行 wipe 再 shrink,以获得更好压缩率)。
- 限制与注意
- 虚拟磁盘需为“厚置备”或支持收缩;存在快照时无法 shrink,需先删除快照。
- 执行 wipe 阶段会在虚拟机内临时占用与磁盘同等大小的空间,请确保宿主机磁盘有余量。
五 自动化与风险控制建议
- 自动化
- 使用 logrotate 管理日志轮转与清理(编辑 /etc/logrotate.conf 或 /etc/logrotate.d/ 下的配置,必要时执行 logrotate -f /etc/logrotate.conf 测试)。
- 通过 cron 或 systemd timer 定期执行清理脚本(如清理回收站、旧日志、临时文件等)。
- 风险控制
- 重要操作前先备份关键数据;删除前用 lsof 检查文件是否被占用;对生产环境优先采用“服务级滚动重启/重新打开日志”而非直接 kill。
- 谨慎使用内存缓存清理:仅在必要时执行 sync && echo 3 | sudo tee /proc/sys/vm/drop_caches,避免影响性能。