滚动新闻 →
孩子道歉只是为了逃避惩罚怎么办 视频剪辑前为什么要先整理素材 清朝为什么在近代面对西方力量时陷入困境 江苏女高管整形手术后离世 7个月消费近百万引争议 家具尺寸应该如何根据房间面积选择 火锅为什么特别适合多人聚餐 AI泡沫显现?Alphabet与亚马逊股价重挫引市场担忧 健康早餐燕麦粥的6大误区需警惕 大危机预警!澳欧再促囤物资 胡春华壮胆单挑习? 秋风来到加拿大加斯佩半岛,海岸与森林同时换上金色 进气压力传感器异常有哪些症状 惊魂一刻!西班牙列车相撞事故华裔目击者回忆惨烈现场 汽车驾驶辅助系统是怎么工作的 加拿大公寓物业费到底包含哪些内容 菲律宾马永火山喷发警戒升级至3级,呼吁居民撤离 上海男子负债3800万离婚‘净身出户’遭法院撤销财产分割协议 浙江渔民捕获罕见300斤翻车鱼 引热议 知情者曝习严控高官私交 退休常委通话也要报备 欧盟11月1日起对跨境包裹征收每种商品2欧元手续费 分散投资为什么可以降低部分投资风险 购买二手游艇比购买新船能省多少钱 印尼野火致空气污染 9月或致3560人丧生 制片公司为什么拒绝某些剧本 加拿大退税一直没有到账怎么办 安徽14岁女生突发脑梗引关注 脑卒中年轻化趋势凸显 TRM Labs指控朝鲜骇客涉案 币安遭窃63亿美元 刘在锡病愈复出获宝冠文化勋章 并分享人生感悟 美军基地冷冻设备故障疑涉网络攻击 法国超市遭同类手法破坏 中国女留学生美国越狱案细节披露 美国隐私权法律从何而来 波卡洪塔斯与詹姆斯敦的真实关系 缅甸工人杀害中国老板后藏匿甘蔗林,饥渴自首 落水管堵塞怎么处理 AI 多集群调度如何选择目标集群,GPU 类型、容量、网络和成本应该怎样综合考虑 欧洲央行总裁拉加德因无法维持中立宣布提前离职 Google Cloud Quotas 是什么,资源配额不足时应该怎样处理 【学英语】同学们都在谈论大学,而我开始担心钱的问题 SaaS 数据库索引不是越多越好,哪些索引反而会拖慢写入 U盘突然无法识别,维修前应该避免哪些容易造成数据损坏的操作 中国男花35万润美 被ICE抓获关一年后遣返

Google Cloud Storage 和本地文件系统有什么区别,开发人员应该怎样理解对象存储

发布时间: 2026-10-09 13:24:01    最后更新: 2026-10-30 04:58:05    阅读:317  约9 分钟阅读     

Google Cloud Storage 和本地文件系统有什么区别,开发人员应该怎样理解对象存储
图片说明:示意图   图片来源:Public Domain(公有领域)
很多开发人员第一次接触Google Cloud Storage时,最容易犯的错误,就是把它想象成一块放在云端的硬盘。于是代码里出现了“打开文件、写入、修改、移动、关闭”这样的本地文件系统思维,然后发现很多操作并不像Windows或Linux磁盘那样工作。真正理解GCS,关键不是记住几个API,而是先改变一个概念:本地文件系统管理的是文件和目录,而对象存储管理的是对象以及对象的名称、数据和元数据。

在传统Linux或Windows文件系统中,一个文件通常存在于明确的目录层级里。例如/data/project/report.pdf,系统不仅知道这个文件叫什么,还知道它属于project目录,而目录本身也是文件系统中的一种结构。应用程序可以通过open、read、write、rename等文件系统操作直接修改文件内容。底层还涉及inode、权限、文件锁、缓存以及目录结构等机制。

Google Cloud Storage的标准Flat Namespace则不同。一个对象实际上由bucket中的对象名称、数据和元数据组成。例如对象名称可以叫project/2026/report.pdf。这里的斜杠看起来像Linux路径,但在Flat Namespace中,它主要是对象名称的一部分,Cloud Storage控制台和命令行工具可以把斜杠解释成类似文件夹的视觉结构。也就是说,传统Flat Namespace里并不存在一个必须先创建的project目录,然后再把report.pdf放进去。(cloud.google.com)

不过,现在再简单地说“GCS没有真正的文件夹”也已经不完整。Google Cloud Storage提供Hierarchical Namespace,可以让bucket拥有真正的文件夹结构和目录语义,包括文件夹级操作以及原子性的文件夹重命名等能力。这项功能尤其针对数据密集型AI、分析和文件型工作负载。需要注意的是,Hierarchical Namespace必须在创建bucket时启用,创建之后不能再把一个普通bucket直接切换成这种模式。(cloud.google.com)

理解这一点以后,开发人员就容易明白为什么对象存储通常不应该被当成POSIX文件系统使用。你当然可以通过工具把GCS挂载成类似文件系统的访问方式,但这并不意味着底层已经变成了一块普通本地磁盘。应用如果大量依赖频繁rename、append、随机修改文件中间部分等传统文件操作,就应该认真评估这种架构是否适合。

对象存储真正擅长的是完整对象的存取。一个视频、备份文件、图片、日志归档、机器学习训练数据或者大型压缩包,可以作为一个对象保存。应用通过API读取、写入、删除或者更新对象及其元数据。对于大型对象,Google Cloud Storage还提供Resumable Upload,可以在网络中断后继续上传,而不必从头重新发送整个文件。Google官方文档也把Resumable Upload列为多数应用的大文件上传选择之一。(cloud.google.com)

如果文件非常大,还可以采用并行上传策略。例如Parallel Composite Upload可以把一个文件分成多个组件并行上传,最后通过compose操作重新组合成一个对象。这样做在网络和磁盘能够提供足够吞吐时可能明显缩短上传时间。不过它会产生临时对象,并且最终对象的校验方式等细节与普通对象不同,因此不能简单理解成“把文件切成几份就一定更快”。(cloud.google.com)

这里也需要纠正一个非常常见的说法:GCS并不是传统意义上的“最终一致性对象存储”。目前Cloud Storage对对象写入后读取、对象元数据更新、对象删除以及对象列表等核心操作提供强一致性。一个对象成功写入以后,成功响应返回后即可读取;删除成功以后,对象读取会立即得到404。对象列表同样具有强一致性。(cloud.google.com)

这对于开发人员非常重要。以前设计某些对象存储应用时,程序员可能需要假设“我刚上传的对象暂时可能在列表里看不到”。对于GCS核心对象操作,这种旧式思维已经不适用。当然,公开对象如果经过缓存,缓存本身仍可能在缓存生命周期内返回旧版本,所以“GCS强一致性”和“所有缓存立即刷新”是两个不同的问题。(cloud.google.com)

GCS还有一个和本地文件系统完全不同的思维方式,就是扩展能力来自服务端,而不是用户自己购买更大的磁盘阵列。Cloud Storage会随着bucket请求量增长自动扩展IO能力,并通过后端服务器分散请求负载。不过,当请求量突然快速增加时,系统可能需要一段时间重新分配负载,因此官方建议逐渐提高请求速率,以减少临时延迟和错误。(cloud.google.com)

因此,GCS的“性能好”也不能简单理解成任何情况下都比本地NVMe快。如果应用需要每秒进行大量极低延迟的随机读写,本地NVMe、数据库或者专门的分布式文件系统可能更合适。对象存储真正的优势在于海量数据、弹性扩展、持久化、跨区域数据布局以及通过API让大量计算节点同时访问数据。

权限模型也是两者思维差异非常明显的地方。Linux文件系统通常围绕用户、用户组、目录权限和ACL建立访问控制,而GCS则使用Google Cloud IAM、bucket级权限以及managed folders等机制控制访问范围。在启用了managed folder的情况下,还可以针对某个对象名称前缀范围授予IAM权限。(cloud.google.com)

这意味着开发人员不应该把“文件路径”仅仅看成存储位置。对象名称本身可能成为权限设计、生命周期管理、数据处理和审计策略的一部分。例如把训练数据放在datasets/、模型文件放在models/、日志放在logs/,然后结合IAM或managed folders设计访问权限,比把所有数据扔进一个巨大的bucket再依赖应用程序自己判断权限更加容易管理。

本地文件系统还有一个非常重要的能力,就是原地修改。程序可以打开一个几GB文件,在其中某个位置修改几个字节,然后关闭文件。对象存储的基本思维则不同。很多情况下,如果对象内容发生改变,应用更适合重新上传或者生成一个新的对象版本,而不是把它当成一块可以任意seek和overwrite的磁盘区域。因此数据库、操作系统临时目录以及需要大量随机写入的应用,并不能因为GCS容量巨大就直接把数据库文件搬进去。

对象存储特别适合另一类数据:数据本身通常以完整对象形式存在,而且生命周期较长。例如照片、视频、网站静态资源、备份、软件安装包、日志归档、数据湖中的Parquet文件、机器学习训练数据以及模型检查点。这些数据往往需要大量并发读取,却不需要像数据库那样不停地修改文件中间的某几个字节。

AI和数据分析领域尤其能体现这种区别。训练集可以放在GCS中,计算节点按对象读取数据;训练完成以后,模型checkpoint可以作为对象保存;不同GPU节点和不同计算实例可以从统一的数据源获取文件。真正需要优化的不是“怎样把GCS变成Linux硬盘”,而是对象大小、数据格式、并发请求、缓存、网络带宽、读取模式以及计算与存储之间的位置关系。

因此,开发人员理解GCS最重要的一步,是停止问“这个云硬盘的目录在哪里”,开始问“我的数据对象是什么,它如何命名,谁需要访问它,它多久被访问一次,它是完整读取还是随机读取,它如何上传和下载,它需要什么一致性和备份策略”。

本地文件系统解决的是计算机如何组织和修改文件;对象存储解决的是海量数据如何以对象形式被可靠地保存和访问。两者并不是谁淘汰谁,而是针对不同问题设计出来的两种存储模型。真正成熟的云架构,也往往不是把所有东西塞进GCS,而是让数据库、缓存、本地NVMe、分布式文件系统和对象存储各自承担最适合自己的工作。理解这一点之后,开发人员面对云存储时就不会再把“一个bucket”想象成一块超大的C盘,而会开始按照数据生命周期、访问模式和系统架构来设计存储。

喜欢这篇报道?

使用下面的功能,方便以后继续阅读和分享 MNewsTV

设为 Google 新闻首选来源 让 Google 新闻优先显示 MNewsTV 的最新报道 ›
★ 我的收藏 查看已经收藏的文章
关于文章收藏 收藏不需要注册帐号,收藏信息仅保存在当前浏览器中。 删除收藏请进入「我的收藏」进行管理。
分享这篇报道

捐助(Paypal): https://www.paypal.me/observeccp
订阅中国观察电报 Telegram : https://t.me/s/ObserveCCP