首先需明确空间不足的具体分区及目录,使用以下命令快速定位:
df -h(重点关注Use%列,超过80%需处理)。df -i(若inode耗尽,即使磁盘空间充足也无法创建文件)。du -sh /path/to/directory | sort -rh | head -20(找出占用空间最大的前20个目录);ncdu(交互式工具,更直观展示目录大小)。通过清理临时文件、缓存、旧日志等快速回收空间:
yum clean all(删除/var/cache/yum下的缓存文件,约几MB~几十MB)。rm -rf /tmp/*(删除/tmp下的临时文件,注意不要删除正在使用的文件)。du -sh /var/log。/var/log/messages、/var/log/secure的历史归档):rm -f /var/log/*.gz(删除压缩的旧日志)。logrotate工具自动化管理日志(编辑/etc/logrotate.conf,设置保留天数、压缩规则)。lsof | grep deleted查找被进程占用但已删除的文件(如大日志文件),重启对应进程释放空间。若清理后仍不足,需扩展磁盘空间,优先推荐LVM(逻辑卷管理)(灵活调整大小,无需迁移数据):
growpart /dev/sdX n # 扩展/dev/sdX的第n个分区(如/dev/sda1)
resize2fs /dev/sdXn # 调整ext4文件系统大小(若为XFS,用xfs_growfs)
若系统使用LVM(默认分区方式),步骤如下:
pvresize /dev/sdXY(如新增磁盘分区/dev/sdb1,需先pvcreate /dev/sdb1并vgextend到卷组)。vgextend 卷组名 /dev/sdXY(将新增物理卷添加到现有卷组)。lvextend -l +100%FREE /dev/卷组名/逻辑卷名(使用卷组所有空闲空间扩展LV)。xfs_growfs /dev/卷组名/逻辑卷名(在线扩展,无需卸载)。resize2fs /dev/卷组名/逻辑卷名。fdisk /dev/sdX(按提示创建新分区,如/dev/sdb1)。mkfs.ext4 /dev/sdb1(或mkfs.xfs /dev/sdb1,根据需求选择文件系统)。mount /dev/sdb1 /mnt/newdisk(立即生效,重启失效)。/etc/fstab,添加/dev/sdb1 /mnt/newdisk ext4 defaults 0 0,然后mount -a生效。tar czvf archive.tar.gz /path/to/directory压缩旧文件(如备份),减少占用空间。quota工具限制用户/组的磁盘使用量(避免单个用户占用过多空间):
yum install quota。/etc/fstab,在挂载选项中添加usrquota,grpquota,然后mount -o remount /。edquota -u 用户名(设置软限制/硬限制,如10GB软限制、15GB硬限制)。/home、/etc)。virt-manager或virsh命令直接扩展虚拟磁盘,再按上述步骤调整分区。