Andy Warfield在UBC教书的那些年,亲眼见过基因组研究员把80%的时间耗在搬数据上。不是分析DNA,是复制文件、核对副本、确认哪份是最新版。这些科学家研究的是向日葵基因组——3.6亿个碱基对,个体间变异比人类高10倍——却被最原始的数据搬运问题困在原地。

这段经历后来成了S3 Files的起点。Andy现在是AWS副总裁兼杰出工程师,他带领团队花了数年重新思考:如果对象存储(Object Storage)和文件系统(File System)的边界被拆掉,云存储该长什么样?

「burst parallel」计算:云的原生场景

「burst parallel」计算:云的原生场景

基因组分析有个特点:算力需求像心跳一样脉冲式波动。分析时需要同时启动几十万个并行任务,跑完就闲置。买本地服务器?峰值不够,平时浪费。这正是云计算该解决的事。

Andy当时的博士生JS Legare加入Loren Rieseberg的实验室,尝试把这套工作负载搬到S3上。但对象存储的API和文件系统的语义差距太大——生物信息学工具链假设你能像操作本地磁盘一样随机读写,而S3的设计哲学是「一次写入、多次读取」的批量模式。

团队最初的想法很直接:能不能让S3同时扮演两种角色?既保留对象存储的规模和成本优势,又提供文件系统的操作体验。这个念头在2018年前后萌芽,但真正落地花了六年。

命名灾难:差点叫「S3 Objects Plus」

命名灾难:差点叫「S3 Objects Plus」

产品化过程中有个插曲。团队早期想给新数据类型起个直观的名字,考虑过「S3 Objects Plus」「Enhanced Objects」之类。Andy在内部文档里吐槽:「听起来像打印机墨盒的命名逻辑。」

最终定名「S3 Files」反而是一种克制。它暗示这不是第二个产品,而是同一个S3的不同访问方式——就像同一条街既有高速公路也有自行车道,目的地一样,规则不同。

技术实现上,S3 Files在现有对象存储层之上增加了元数据索引和强一致性保证。关键设计是「无服务器化」的扩展:文件系统的命名空间操作(重命名、权限变更)不依赖固定容量的元数据服务器,而是和S3的存储桶(Bucket)一样按需伸缩。

为什么现在发布:训练集群的倒逼

为什么现在发布:训练集群的倒逼

生成式AI的爆发改变了时间线。2023年后,AWS观察到客户的大规模训练集群出现一个反复出现的模式:数据加载阶段成为瓶颈。模型参数膨胀到千亿级别,训练数据以PB计,但数据管道(Data Pipeline)还在用十年前设计的文件系统接口。

Andy提到一个具体案例:某客户用传统文件系统接口向数千个GPU节点分发训练数据,元数据服务器在启动阶段就被压垮。换成S3 Files后,同样的工作负载启动时间从小时级降到分钟级——不是带宽变了,是元数据操作的并发模型变了。

这个场景和当年UBC的基因组实验室形成有趣的对照。都是「burst parallel」:瞬间需要大量资源,然后释放。区别只在于,现在的「 burst」规模大了三个数量级。

遗留问题:边界在哪里

遗留问题:边界在哪里

S3 Files的发布文档里有个细节容易被忽略:它不支持完整的POSIX语义。某些文件锁操作、硬链接(Hard Link)的特定行为被刻意省略。Andy的解释很直接——「我们优化的是云原生工作负载,不是把30年前的Unix程序无缝迁移过来。」

这个取舍引发了一些讨论。HPC(高性能计算)社区的部分用户想要更完整的兼容性,而云原生团队更关心吞吐量和弹性。S3 Files选择了后者,但留下了扩展接口的可能性。

定价模型也延续了S3的按用量计费,没有单独的「文件系统容量」费用。这意味着小规模使用时成本接近零,大规模时自动摊薄。对于预算敏感的学术研究机构,这个设计和当年吸引基因组实验室的逻辑一脉相承。

Andy在博客结尾提到,团队正在观察客户如何把S3 Files和S3 Tables(去年发布的查询加速层)组合使用。数据湖(Data Lake)的架构正在从「分层存储」转向「统一存储、多模式访问」——对象、文件、表格,同一套数据的不同视图。

如果这套模式跑通,当年UBC实验室里那个「复制文件 vs 做研究」的两难选择,可能会成为历史脚注。但另一个问题随之浮现:当存储层足够透明,计算层会不会成为下一个瓶颈?Andy没有给出答案,只说他「正在和另一支团队喝咖啡」。