部署Cloud/Firebase Functions时存储带宽高用量及垃圾数据清理问题
Google Cloud 不明存储占用排查与清理方案
全量定位存储桶资源
控制台默认视图可能过滤掉服务自动创建的托管存储桶,优先用命令行拉取项目下全量存储桶列表,避免漏看:
- 执行gcloud命令查询所有区域、所有归属的存储桶:
gcloud storage ls --project=<替换为你的项目ID> --locations=all
最常见的陌生桶为谷歌云托管服务自动创建的系统桶,命名规则包括:
gcf-sources-<随机字符串>:存储Cloud Functions部署源码包artifacts.<项目ID>.appspot.com、<区域>.artifacts.<项目ID>.appspot.com:存储Cloud Build生成的容器镜像、构建缓存staging.<项目ID>.appspot.com:存储服务部署临时staging文件
这类桶不会出现在手动创建资源列表中,是删完自建桶仍有存储占用的核心原因。
定位具体占用来源
- 进入Cloud Storage「存储洞察」-「存储分析」面板,按桶、对象前缀维度拆分用量统计,可直接定位3.8GB占用对应的具体桶、对象创建时间、关联服务标签。
- 检查已删除桶的软删除残留:GCS默认开启7天软删除保留周期,删除桶后对象不会立刻释放空间。如需立刻清理,先恢复对应已删除桶,再执行命令强制清理软删除对象:
gcloud storage rm --recursive gs://<已恢复的桶名>/** --soft-deleted
清理完成后可再次删除桶,空间会立刻释放。 - 检查开启了版本控制的桶:如果桶开启了对象版本控制,删除对象时历史版本会持续留存占用空间,执行命令可列出所有历史版本对象:
gcloud storage ls --all-versions gs://<桶名>
确认无留存需要的旧版本可直接批量删除。
清理Cloud Functions关联冗余资源
- 先拉取项目下所有Cloud Functions列表,清理已废弃的函数:
gcloud functions list --project=<替换为你的项目ID>
删除废弃函数时务必勾选「同时删除关联存储资源」选项,避免源码包、镜像残留。 - 清理
gcf-sources-*桶内残留:如果函数已经删除但源码包留存,确认无在用函数对应源码后,可直接清空桶内对象甚至删除整个桶,后续部署函数时服务会自动重建所需桶。 - 清理
artifacts.*桶内残留:这类桶存储的是部署生成的容器镜像,删除函数/Cloud Run服务后镜像不会自动删除,按镜像标签对应已删除服务筛选,删除无用镜像层即可释放空间,注意不要删除正在运行的服务关联的镜像,否则会导致服务无法启动。
长效防冗余配置
- 给所有托管类存储桶配置生命周期规则,自动清理超过30天的软删除对象、历史版本对象、临时构建文件,避免垃圾数据持续增长。
- 定期执行
gcloud storage du --summarize gs://*命令查看所有桶的总占用,及时发现异常增长。
清理前建议对要删除的对象做临时备份,避免误删业务依赖资源导致服务故障。
内容的提问来源于stack exchange,提问作者Richardson
相关产品推荐
相关产品推荐

