怎样释放CentOS磁盘空间
导读:CentOS 磁盘空间释放实操指南 一 快速定位占用 查看整体使用:执行 df -h,确认哪个挂载点(如 /、/var)占用高。 定位大目录:在可疑挂载点内执行 du -sh * | sort -hr | head -n 10,逐层进入占...
CentOS 磁盘空间释放实操指南
一 快速定位占用
- 查看整体使用:执行 df -h,确认哪个挂载点(如 /、/var)占用高。
- 定位大目录:在可疑挂载点内执行 du -sh * | sort -hr | head -n 10,逐层进入占用最大的目录。
- 交互式分析:安装并使用 ncdu /path,更直观地找到“大胃王”。
- 精准查找大文件:例如查找大于 100MB 的文件:find / -type f -size +100M -exec ls -lh { } ; (从根开始谨慎执行,或限定到具体目录)。
二 安全清理可释放空间
- 包管理器缓存
- yum clean all 或 dnf clean all,清理 /var/cache/yum 中的已下载包。
- 清理无用依赖:yum autoremove;如安装了 yum-utils,可用 package-cleanup --leaves 查找“叶子”包后按需移除。
- 临时文件
- 清理系统临时目录:rm -rf /tmp/ /var/tmp/*(确认无业务正在使用)*。
- 日志文件
- 轮转并压缩旧日志:确保 logrotate 已配置并按日/周轮转。
- 快速释放空间:对不再需要的日志可先“截断”而非删除,例如 find /var/log -type f -name “*.log” -size +50M -mtime +7 -exec truncate -s 0 { } ; ;已归档的旧日志可删除:find /var/log -type f -name “*.gz” -mtime +30 -delete。
- 清理 systemd 日志:journalctl --vacuum-time=2weeks(保留最近两周)。
- 旧内核(谨慎)
- 查看当前内核:uname -r;查看已装内核:rpm -qa | grep kernel。
- 保留最新的 1–2 个内核,删除其余旧版本(如 yum remove kernel-< 旧版本> ),避免删除正在运行的内核。
- 大文件处置
- 确认无用后再删除:如 find /var/log -name “*.log” -size +100M -delete。
- 若删除文件后 df 仍显示占用不变,多为文件被进程占用:用 lsof | grep deleted 找到占用进程 PID,优先 graceful 停止服务,必要时 kill -9 PID 后再观察空间是否释放。
- 可选图形化工具
- 桌面环境可用 baobab 做空间分析;服务器环境推荐 ncdu 轻量高效。
三 清理后空间未释放的处理
- 被占用导致“删了还占”:这是 Linux 的“已删除但句柄未释放”现象。执行 lsof | grep deleted,确认占用进程后先尝试正常停止,再 kill -9 ;随后再次 df -h 验证。
- 谨慎使用内存缓存清理:执行 sync & & echo 3 > /proc/sys/vm/drop_caches 仅释放“页面/目录项/索引节点”缓存,对磁盘占用无直接帮助,且可能影响性能,非必要不建议频繁使用。
四 扩容思路(清理后仍然紧张时)
- LVM 在线扩容(推荐)
- 新增磁盘或扩展现有分区后,初始化为 PV:pvcreate /dev/sdb;扩展 VG:vgextend centos /dev/sdb;扩展 LV:lvextend -L +50G /dev/mapper/centos-root。
- 扩展文件系统:
- XFS:xfs_growfs /(根分区)
- Ext4:resize2fs /dev/mapper/centos-root
- 非 LVM 场景
- 新增磁盘分区并格式化(如 mkfs.xfs /dev/sdb1 或 mkfs.ext4 /dev/sdb1),挂载到 /data_new,并在 /etc/fstab 中使用 UUID=… 做持久化挂载。
- 虚拟机场景
- 先在虚拟化平台扩容虚拟磁盘,再按上述 LVM 或分区方式扩展系统分区与文件系统。
五 常用命令速查表
| 目标 | 命令示例 |
|---|---|
| 查看磁盘使用 | df -h |
| 目录占用排行 | **du -sh * |
| 交互式分析 | ncdu /path |
| 查找大文件 | find / -type f -size +100M -exec ls -lh { } ; |
| 清理包缓存 | yum clean all / dnf clean all |
| 清理旧依赖 | yum autoremove;或 package-cleanup --leaves |
| 清理临时文件 | rm -rf /tmp/ /var/tmp/** |
| 截断大日志 | find /var/log -type f -name “*.log” -size +50M -mtime +7 -exec truncate -s 0 { } ; |
| 清理 systemd 日志 | journalctl --vacuum-time=2weeks |
| 删除旧内核 | yum remove kernel-< 旧版本> (保留当前 uname -r) |
| 释放被占用文件 | **lsof |
| LVM 扩容 | pvcreate /dev/sdb → vgextend centos /dev/sdb → lvextend -L +50G /dev/mapper/centos-root → xfs_growfs / 或 resize2fs … |
重要提示
- 生产环境操作前务必做好备份,并在变更窗口执行。
- 删除文件与清理日志前确认业务影响与保留策略;优先“截断”而非直接删除正在写入的日志。
- 不要随意删除 /var/lib、/usr、/boot 等核心目录下的未知文件;删除内核前确保至少保留 1–2 个可启动版本。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 怎样释放CentOS磁盘空间
本文地址: https://pptw.com/jishu/754498.html
