Skip to content
VDS · 备份与磁盘

磁盘快满了:如何扩容

磁盘空间不足时该怎么办:清理、把数据移到外部,或升级到更高档位——以及为什么磁盘无法缩容。

更新于 2026年8月23日

VDS 的磁盘空间与套餐等级绑定:VDS-1 为 40 GB,VDS-6 最高可达 250 GB。您无法单独购买额外空间——容量随套餐变化。在支付更多费用之前,请先确认空间是否真的被数据占满。

第一步:确认空间确实被占用

df -h /
sudo du -x -h -d1 / | sort -h | tail -10
docker system df
journalctl --disk-usage

很多时候,日志、构建缓存和旧镜像会占去一半磁盘。详细的占用分析请参阅磁盘空间。通过清理释放 30-40 % 的空间,就能把升级推迟好几个月。

第二步:把不必留在这里的东西移出去

  • 备份——它们应该放在另一个站点,而不是同一块磁盘上。
  • 用户上传的文件——放到 S3 对象存储;应用会提供链接。
  • 归档和媒体文件——放到单独的、支持 SFTP 访问的廉价存储上。
  • 镜像仓库——最耗资源的服务,请参阅自建仓库。

第三步:升级到更高的套餐等级

您在服务器的控制面板中升级套餐,且只能向上升级。差价按已付费周期的剩余天数计算——您已经支付的费用不会损失。

从等级到等级磁盘变为
VDS-1VDS-280 GB
VDS-2VDS-3120 GB
VDS-3VDS-4160 GB
VDS-4VDS-5200 GB
VDS-5VDS-6250 GB

磁盘变大的同时,核心数、内存和写入速度上限也会提高——请参阅磁盘速度。

不支持降级:磁盘不会缩小。您可以缩小文件系统,但不能在不冒数据丢失风险的情况下缩小其下的虚拟磁盘。因此请选择留有足够余量的等级,而不是“以防万一,提前两年”。

升级之后

通常分区和文件系统会在启动时自动扩容。请检查:

lsblk
df -h /

如果 lsblk 显示磁盘更大,但 df 显示的是旧容量,请手动扩容:

sudo growpart /dev/sda 1
sudo resize2fs /dev/sda1        # ext4
sudo xfs_growfs /               # xfs

对于 LVM 布局,顺序有所不同:

sudo pvresize /dev/sda3
sudo lvextend -l +100%FREE /dev/mapper/vg-root
sudo resize2fs /dev/mapper/vg-root

更多细节请参阅分区与文件系统。扩展文件系统在已挂载的分区上进行,不会影响数据,但事先备份仍然必不可少。

如果现在空间就已经不够用

当磁盘完全占满时,部分命令会停止工作:系统甚至无法写入临时文件。操作顺序如下:

journalctl --vacuum-size=100M
apt clean
docker builder prune -f
sudo truncate -s 0 /var/lib/docker/containers/*/*-json.log

这样可以释放一两 GB 并恢复控制。然后按照上面的步骤操作。

常见错误

  • 您删除了文件,但空间没有回来。 某个进程仍持有已删除文件的句柄:执行 sudo lsof +L1 并重启该服务。
  • 您没查明原因就升级了等级。 日志泄漏同样会填满 250 GB,只是时间更晚。
  • 您没有备份就扩展了分区。 在 growpart 中写错分区号会让您损失全部数据。请先做备份。
  • 您忘了 inode。 df -i:空间还有,但无法创建文件。这时删除大量小文件才有用,增加磁盘没用。