1. 清理现有文件系统释放空间
在扩展分区前,优先通过清理无用数据快速释放空间,适用于大多数场景:
sudo apt clean;RHEL/CentOS系统使用sudo yum clean all,可清除软件安装缓存(通常占1-5GB)。/boot分区空间,通过dpkg --list | grep linux-image(Debian/Ubuntu)或rpm -q kernel(RHEL/CentOS)列出已安装内核,卸载旧版本(保留当前使用的linux-image-x.x.x-x-generic),再用sudo update-grub更新引导器。/var/log)易膨胀,使用sudo journalctl --vacuum-time=7d保留最近7天日志,或手动删除旧日志(sudo rm /var/log/*.gz /var/log/*.1)。docker system prune -af可删除所有未使用的镜像、容器、网络和构建缓存(谨慎使用,会彻底删除未使用资源)。find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k 5 -rh | head -n 20查找大于100MB的大文件,确认后手动删除无用文件(如旧备份、下载的安装包)。2. 调整现有分区大小(需未分配空间或缩小相邻分区)
若磁盘有未分配空间或相邻分区(如/home)有冗余空间,可通过调整分区大小为根分区(/)扩展空间:
sudo fdisk /dev/sdX(sdX为目标磁盘,如sda)删除目标分区(如/dev/sda1,根分区),注意不要删除分区表;+50G),确保分区类型(如83为Linux)不变;sudo partprobe刷新分区表,使系统识别新分区大小;sudo resize2fs /dev/sda1,XFS用sudo xfs_growfs /dev/sda1(XFS需先挂载)。/)需从Live CD/USB启动,避免系统无法挂载。3. 使用LVM(逻辑卷管理)动态扩展(推荐)
LVM提供灵活的空间管理,支持动态扩展逻辑卷(LV),无需删除数据:
lsblk查看是否识别,如/dev/sdb),或使用现有未分配空间;sudo pvcreate /dev/sdb1(sdb1为新分区);sudo vgextend vg-root /dev/sdb1(vg-root为卷组名,可通过vgdisplay查看);sudo lvextend -L +10G /dev/mapper/vg-root(+10G为增加10GB,也可用-l +100%FREE用尽剩余空间);sudo resize2fs /dev/mapper/vg-root,XFS用sudo xfs_growfs /(XFS需挂载)。4. 添加新硬盘并挂载到目标目录
若现有磁盘无剩余空间,添加新硬盘是最彻底的解决方案:
lsblk查看设备名(如/dev/sdb);sudo fdisk /dev/sdb,按提示创建主分区(n→p→设置分区号→设置大小→w);sudo mkfs.ext4 /dev/sdb1(或ext3、xfs,根据需求选择);sudo mkdir /mnt/newdisk(如需挂载到/home,则mkdir /home);sudo mount /dev/sdb1 /mnt/newdisk,验证是否成功(df -h查看);/etc/fstab,添加/dev/sdb1 /mnt/newdisk ext4 defaults 0 0(重启后自动挂载)。/home、/var等目录空间不足时,可将新硬盘挂载到对应目录,不影响系统分区。5. 移动数据到其他分区或外部存储
将大文件或目录迁移到其他有空间的分区(如/mnt/newdisk)或外部存储(如NAS、U盘):
/var/log迁移到/mnt/newdisk/log:
sudo mkdir /mnt/newdisk/log;sudo mv /var/log/* /mnt/newdisk/log/;sudo ln -s /mnt/newdisk/log /var/log(创建符号链接,使系统仍访问原路径)。/var)需谨慎,避免影响服务运行;建议在维护模式下操作。6. 启用磁盘配额(限制用户/组空间使用)
若多用户共享磁盘,可通过配额限制单个用户的空间使用,防止个别用户占用过多空间:
sudo apt install quota(Debian/Ubuntu)、sudo yum install quota(RHEL/CentOS);/etc/fstab,在挂载选项中添加usrquota,grpquota(如/dev/sda1 / ext4 defaults,usrquota,grpquota 0 0);sudo mount -o remount /;sudo quotacheck -avug;sudo quotaon /;sudo setquota -u username 1G 2G 0 0 /(username为用户,1G为软限制,2G为硬限制)。