首先需要明确哪个分区或目录占用空间过大,使用以下命令快速定位:
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
等系统关键目录的文件。