首先需要明确哪个分区或目录占用空间过大,使用以下命令快速定位:
df -h:查看各挂载点的磁盘使用情况(总大小、已用、可用、使用百分比),重点关注Use%接近100%的分区(如/、/var)。du -sh /path/to/directory/*:查看指定目录(如/var、/home)下各子目录的大小,找出占用空间大的子目录。ncdu(推荐):图形化磁盘分析工具,更直观地展示大文件和目录。安装命令:sudo yum install ncdu,运行后选择目标目录即可。临时文件和缓存是磁盘空间的“常客”,清理后可快速释放空间:
/tmp和/var/tmp目录:这两个目录存储临时文件,可直接删除(确保无正在运行的程序依赖这些文件):sudo rm -rf /tmp/* /var/tmp/*
/var/cache/yum或/var/cache/dnf目录空间:sudo yum clean all # CentOS 7及以下
sudo dnf clean all # CentOS 8及以上
设置→隐私和安全→清除浏览数据)。旧软件包和内核版本会占用大量空间,需及时清理:
yum或dnf卸载不再使用的软件(如测试版软件、旧版本应用):sudo yum remove package_name # 替换为实际软件包名
rpm -qa | grep kernel # 查看已安装的内核版本
sudo yum remove kernel-<旧版本号> # 删除旧内核(如kernel-3.10.0-1127.el7.x86_64)
# 或使用自动清理工具(推荐):
sudo package-cleanup --oldkernels --count=2
日志文件(尤其是/var/log目录)可能因长期运行而变得巨大,需定期清理:
.log文件(如/var/log/messages、/var/log/secure):sudo find /var/log -type f -name "*.log" -mtime +30 -exec rm -f {} \;
sudo truncate -s 0 /var/log/*.log # 清空所有.log文件
logrotate自动管理:logrotate是CentOS自带的日志轮转工具,可配置自动压缩、删除旧日志。编辑配置文件/etc/logrotate.conf或/etc/logrotate.d/下的具体服务配置(如httpd),调整rotate(保留份数)、size(文件大小阈值)等参数。若清理后仍空间不足,需扩展磁盘容量。根据磁盘类型(传统分区/LVM)选择不同方法:
lsblk或fdisk -l查看磁盘总大小(如/dev/vda从50G增加到60G)。parted工具扩展分区(以/dev/vda2为例):sudo parted /dev/vda
(parted) print # 确认分区号(如/dev/vda2)
(parted) resizepart 2 100% # 将分区扩展至磁盘剩余全部空间
(parted) quit
sudo partprobe # 刷新分区表
ext4用resize2fs,xfs用xfs_growfs):sudo resize2fs /dev/vda2 # ext4文件系统
sudo xfs_growfs /dev/vda2 # xfs文件系统
若系统使用LVM(推荐),扩展流程更灵活:
/dev/vdb),需先创建物理卷并加入卷组(VG):sudo pvcreate /dev/vdb1 # 初始化分区为物理卷
sudo vgextend centos /dev/vdb1 # 将物理卷加入卷组(卷组名默认为`centos`)
/dev/centos/root为例):sudo lvextend -l +100%FREE /dev/centos/root # 使用卷组所有剩余空间
sudo xfs_growfs /dev/centos/root # xfs文件系统
sudo resize2fs /dev/centos/root # ext4文件系统
若未使用LVM且无法扩展现有分区,可创建新分区并挂载到指定目录(如/data):
fdisk或parted创建新分区(如/dev/vdb1)。xfs)并格式化:sudo mkfs.xfs /dev/vdb1
sudo mkdir /data
sudo mount /dev/vdb1 /data
/etc/fstab文件,添加一行:/dev/vdb1 /data xfs defaults 0 0
/home、/etc)。/boot、/lib、/usr等系统关键目录的文件。