当CentOS系统提示磁盘空间不足时,可通过定位大文件/目录、清理无用文件、管理软件包/内核、优化日志等方式释放空间,以下是具体步骤:
在清理前,需先明确占用空间的“罪魁祸首”,避免盲目删除。常用命令如下:
查看磁盘分区使用情况:
df -h
重点关注Use%列,找出使用率高的分区(如/、/var)。
查找占用空间大的目录:
du -sh /* | sort -rh | head -n 10  # 查看根目录下最大的10个目录
du -sh /var/* | sort -rh | head -n 10  # 重点检查/var目录(常含日志、缓存)
查找大文件(如大于100MB):
find / -type f -size +100M -exec ls -lh {} \;  # 列出所有大于100MB的文件
find /var/log -type f -size +50M -exec ls -lh {} \;  # 重点检查/var/log下的日志文件
交互式磁盘分析工具(推荐):
安装ncdu(文本界面,更直观):
sudo yum install ncdu -y
扫描指定目录(如根目录):
ncdu /
通过方向键导航,按Enter进入子目录,按d删除文件/目录(谨慎操作)。
清理临时文件:
/tmp和/var/tmp目录下的临时文件可安全删除:
rm -rf /tmp/* /var/tmp/*
清理YUM缓存:
YUM包管理器会缓存下载的软件包,占用/var/cache/yum空间:
sudo yum clean all  # 清理所有YUM缓存
清理旧日志文件:
日志文件(如/var/log/messages、/var/log/secure)可能占用大量空间,可通过以下方式清理:
find /var/log -type f -name "*.log.*" -mtime +30 -exec rm -f {} \;  # 删除30天前的日志
sudo journalctl --vacuum-time=7d  # 只保留最近7天的日志
sudo journalctl --vacuum-size=500M  # 限制日志文件总大小为500MB
cat /dev/null > /var/log/messages  # 清空messages日志(需root权限)
清理Docker无用数据(若有Docker):
Docker容器、镜像、卷可能占用大量空间:
docker system prune -a  # 删除所有停止的容器、未使用的网络、悬空镜像
删除不需要的软件包:
卸载不再使用的软件包(如旧版本的软件):
sudo yum remove package_name -y  # 替换为具体软件包名
清理孤立依赖:
删除软件包安装后不再需要的依赖:
sudo yum autoremove -y
删除旧内核版本:
系统更新后会保留旧内核,占用/boot分区空间。先查看已安装的内核:
rpm -q kernel  # 列出所有内核版本
再删除旧内核(保留最新1-2个):
sudo package-cleanup --oldkernels --count=2 -y  # 只保留最新的2个内核
若清理后仍空间不足,需通过扩展分区或添加新磁盘解决:
LVM扩展(推荐,支持在线扩容):
若系统使用LVM(逻辑卷管理),可通过以下步骤扩展:
/dev/sdb):sudo pvcreate /dev/sdb
centos):sudo vgextend centos /dev/sdb
centos-root):sudo lvextend -L +10G /dev/mapper/centos-root  # 增加10GB
sudo xfs_growfs /  # 扩展根分区
sudo resize2fs /dev/mapper/centos-root
非LVM扩展(传统分区):
若未使用LVM,需通过fdisk创建新分区、格式化并挂载:
sudo fdisk -l
sudo fdisk /dev/sdb  # 替换为新磁盘
按提示创建分区(如/dev/sdb1)。sudo mkfs.ext4 /dev/sdb1  # 格式化为ext4
sudo mkdir /newdata  # 创建挂载点
sudo mount /dev/sdb1 /newdata  # 临时挂载
/etc/fstab):echo "/dev/sdb1 /newdata ext4 defaults 1 2" | sudo tee -a /etc/fstab
logrotate工具自动压缩、删除旧日志(默认已配置,可修改/etc/logrotate.conf调整策略)。cron定时任务(如每周日凌晨2点)运行清理脚本:0 2 * * 0 /usr/bin/find /tmp -type f -mtime +7 -exec rm -f {} \;  # 删除/tmp下7天前的文件
cron定期运行df -h,并将结果发送到邮箱:0 8 * * * /bin/df -h | mail -s "CentOS磁盘空间报告" admin@example.com
Baobab(磁盘使用分析器),可视化查看磁盘空间使用情况:sudo yum install baobab -y
baobab
注意事项:
/home、/etc);/boot、/etc)前需确认其用途,避免系统崩溃;