温馨提示×

如何利用centos进行磁盘空间清理

小樊
60
2025-09-26 12:54:37
栏目: 云计算

1. 检查磁盘空间使用情况
在进行清理前,需先明确磁盘空间的占用情况,定位大文件或目录。常用命令如下:

  • df -h:查看各文件系统的磁盘使用情况(总大小、已用空间、可用空间及使用百分比),重点关注/(根分区)、/home等常用分区。
  • du -sh /*:统计根目录下各一级目录的大小,快速识别占用空间大的目录(如/var/usr)。
  • find / -type f -size +100M -exec ls -lh {} \;:查找系统中大于100MB的文件,定位具体的大文件(如日志、备份文件)。

2. 清理包管理器缓存
CentOS的包管理器(yum/dnf)会缓存下载的RPM包和元数据,占用/var/cache/yum(CentOS 7及以下)或/var/cache/dnf(CentOS 8及以上)目录空间。清理命令如下:

  • CentOS 7及以下(使用yum
    sudo yum clean all  # 清理所有缓存(包括元数据、RPM包)
    
  • CentOS 8及以上(使用dnf
    sudo dnf clean all  # 功能同上,适用于新版本
    
  • 手动删除缓存目录(可选):
    sudo rm -rf /var/cache/yum/*  # CentOS 7
    sudo rm -rf /var/cache/dnf/*  # CentOS 8+
    

清理后,下次安装软件时需重新下载依赖,但能释放约100MB~1GB空间。

3. 删除旧的内核版本
系统升级时会保留旧内核,可通过以下步骤删除:

  • 查看已安装内核
    rpm -qa | grep kernel  # 列出所有内核版本(按安装时间排序,最新内核在前)
    
  • 删除旧内核(保留最新1个,避免系统无法启动):
    sudo package-cleanup --oldkernels --count=1  # 自动删除除最新外的所有旧内核
    

或手动指定内核版本(如kernel-3.10.0-1160.el7.x86_64):

sudo yum remove kernel-3.10.0-1160.el7.x86_64  # 替换为目标内核版本

旧内核占用空间约200MB~500MB/个,清理后可显著释放空间。

4. 清理临时文件
临时文件主要存放在/tmp(临时文件,重启后自动清空但可提前清理)、/var/tmp(长期临时文件)目录,以及系统运行时生成的临时文件。清理方法如下:

  • 手动删除
    sudo rm -rf /tmp/*  # 清空/tmp目录(确保无正在运行的程序依赖这些文件)
    sudo rm -rf /var/tmp/*  # 清空/var/tmp目录
    
  • 查找并删除7天以上的临时文件(避免误删近期文件):
    sudo find /tmp -type f -mtime +7 -exec rm -f {} \;  # 删除/tmp下7天前的文件
    sudo find /var/tmp -type f -mtime +7 -exec rm -f {} \;  # 删除/var/tmp下7天前的文件
    
  • 使用systemd-tmpfiles工具(推荐,符合系统规范):
    sudo systemd-tmpfiles --clean  # 根据系统配置清理临时文件(默认规则见/etc/tmpfiles.d/)
    

临时文件占用空间不定,定期清理可避免其堆积。

5. 清理日志文件
日志文件(如/var/log/messages/var/log/httpd/access.log)会随系统运行不断增长,占用大量空间。清理方法如下:

  • 使用journalctl清理systemd日志(适用于CentOS 7及以上):
    sudo journalctl --vacuum-size=100M  # 保留最近100MB的日志,删除旧日志
    sudo journalctl --vacuum-time=2weeks  # 保留最近2周的日志
    
  • 手动清空特定日志文件(如Apache、Nginx日志):
    sudo truncate -s 0 /var/log/httpd/*.log  # 清空Apache所有.log文件(保留文件,仅清空内容)
    sudo rm -rf /var/log/*.log.*  # 删除其他旧日志文件(如.gz压缩文件)
    
  • 配置日志轮转(长期解决方案):
    使用logrotate工具(默认已安装),编辑/etc/logrotate.conf/etc/logrotate.d/下的配置文件,设置日志保留时间、大小限制及压缩规则(如maxsize 100Mrotate 5)。

6. 使用磁盘分析工具定位大文件
若上述方法无法释放足够空间,可使用工具直观查看磁盘使用情况:

  • ncdu(命令行工具,推荐)
    sudo yum install ncdu -y  # CentOS 7安装
    sudo dnf install ncdu -y  # CentOS 8+安装
    sudo ncdu /  # 扫描根目录,按大小排序,通过方向键选择并删除大文件/目录
    
  • baobab(图形化工具,需GUI环境)
    sudo yum install baobab -y  # 安装
    baobab  # 运行,点击“扫描”查看磁盘使用情况
    

工具可快速定位占用空间大的目录(如/var/lib/mysql数据库文件、/home用户文件),便于针对性清理。

7. 清理系统缓存(可选)
系统缓存(页面缓存、目录项缓存、inode缓存)用于提升性能,但可手动清理以释放空间(清理后下次访问文件时需重新读取,短暂影响性能):

sudo sync  # 将缓存数据写入磁盘(避免数据丢失)
sudo echo 3 > /proc/sys/vm/drop_caches  # 清理页面缓存、目录项缓存、inode缓存

注:此操作需谨慎,建议在系统内存充足时使用。

注意事项

  • 备份重要数据:清理前备份/home/var等目录的重要文件,避免误删。
  • 避免频繁清理:缓存清理虽能释放空间,但会增加后续操作的时间成本(如重新下载软件包、重新生成缓存)。
  • 自动化清理:可将常用清理命令(如清理临时文件、日志)添加到crontab定时任务(如每天凌晨2点执行),保持磁盘空间稳定。

0