3. 对象存储选型:对比 AWS S3、阿里云OSS、MinIO、Ceph

对象存储这东西,说白了就是「用HTTP存文件」。你不需要关心数据到底落在哪块盘上,只要知道一个URL就能读写。我最早接触对象存储是在2015年,那时候公司还在用NFS挂载做图片存储,扩容一次要停机半小时。后来切到S3之后,扩容?不存在的,直接写就行了。

但问题来了——市面上的对象存储方案太多了。公有云有S3、OSS,私有化有MinIO、Ceph。选哪个?我个人的习惯是:先看成本模型,再看适用场景。成本模型决定了你能不能长期用下去,适用场景决定了你能不能跑得起来。

核心观点:对象存储选型不是技术选型,是成本选型。技术上的差异可以通过适配层抹平,但成本结构一旦选错,后期迁移代价极高。

3.1 AWS S3:行业标杆,但小心「隐藏账单」

AWS S3是对象存储的事实标准。几乎所有对象存储的API都在模仿S3。我做过一个数据湖项目,每天写入量在10TB左右,选S3的理由很简单——生态最成熟,Spark、Flink、Presto全都能直接读S3。

成本模型分析:

  • 存储费:按GB/月计费,标准存储约$0.023/GB/月。冷存储(Glacier)低至$0.004/GB/月,但取回要等几小时。
  • 请求费:PUT/GET/LIST都收费。PUT约$0.005/千次,GET约$0.0004/千次。小文件场景下,请求费可能超过存储费。
  • 流量费:出站流量$0.09/GB。这是最大的坑。我见过一个客户,每月出站流量50TB,光流量费就$4500。
  • 其他费用:跨区域复制、版本管理、生命周期转换都会产生额外费用。

我曾经踩过的坑:一个日志归档项目,我们用了S3 Standard-IA(低频访问),以为能省钱。结果每天有大量小文件写入,PUT请求费比存储费还高。后来改成批量打包上传,请求费降了80%。

适用场景:

  • 全球化部署,需要多区域复制
  • 数据湖、大数据分析、机器学习训练
  • 对可用性要求极高(S3的SLA是99.99%)
  • 团队已经深度绑定AWS生态

3.2 阿里云OSS:国内首选,但注意地域差异

OSS在国内的体验其实比S3好。为什么?因为OSS的国内节点多,延迟低。我在上海做过一个电商项目,OSS的读取延迟稳定在5ms以内,而S3新加坡节点到上海要30ms。

成本模型分析:

  • 存储费:标准存储约¥0.12/GB/月,比S3便宜约30%。
  • 请求费:PUT约¥0.01/千次,GET约¥0.001/千次。比S3略贵,但差距不大。
  • 流量费:国内出站流量¥0.5/GB。注意,OSS的CDN回源流量是免费的,这点比S3良心。
  • 特殊优惠:OSS有「存储包」和「下行流量包」,预付费可以再省20%-40%。
费用项 AWS S3(美东) 阿里云OSS(华东) 差异说明
标准存储/GB/月 $0.023(约¥0.16) ¥0.12 OSS便宜约25%
PUT请求/千次 $0.005(约¥0.035) ¥0.01 OSS略贵
GET请求/千次 $0.0004(约¥0.0028) ¥0.001 基本持平
出站流量/GB $0.09(约¥0.63) ¥0.5 OSS便宜20%

适用场景:

  • 业务主要在国内,用户也在国内
  • 需要CDN加速分发(OSS+CDN组合很成熟)
  • 合规要求数据必须留在国内
  • 预算敏感,需要预付费降低成本

3.3 MinIO:轻量私有化,适合边缘和开发环境

MinIO是我个人最喜欢的对象存储方案。为什么?因为它太轻了。一个二进制文件,一条命令就能跑起来。我在开发环境里几乎都用MinIO模拟S3,本地调试完直接部署到AWS,API完全兼容。

成本模型分析:

  • 软件成本:开源版免费。企业版按节点收费,约$10/节点/天。
  • 硬件成本:取决于你用什么机器。我见过最省钱的方案:3台二手服务器,每台32GB内存+4块4TB SSD,总成本不到¥3万。
  • 运维成本:MinIO的运维极其简单。升级就是替换二进制文件,重启服务。不需要专门的存储管理员。
  • 隐藏成本:如果要做高可用,至少需要4个节点(Erasure Coding要求)。网络带宽也要考虑,MinIO的读写性能对网络延迟敏感。

我的经验:MinIO的Erasure Coding(纠删码)比副本更省空间。16块盘配EC 8+4,可用空间是12/16=75%,而3副本只有33%。但EC的CPU开销大,建议用支持AVX-512的CPU。

适用场景:

  • 开发/测试环境模拟S3
  • 边缘计算节点(IoT、CDN边缘)
  • 中小规模私有云(几十TB以内)
  • 对数据主权要求极高的场景(金融、政府)

3.4 Ceph:企业级分布式,但运维门槛高

Ceph是对象存储里的「重武器」。它不仅能做对象存储(RGW),还能做块存储(RBD)和文件存储(CephFS)。我在一家云计算公司做过Ceph集群,规模是120个OSD节点,总容量2PB。说实话,Ceph的运维压力很大。

成本模型分析:

  • 软件成本:完全开源,无授权费。
  • 硬件成本:Ceph对硬件要求高。建议用企业级SSD做WAL/DB,HDD做数据盘。一台存储节点成本约¥5万-¥10万。
  • 运维成本:这是大头。Ceph的故障排查非常复杂,需要专门的运维团队。我见过一个团队3个人全职维护Ceph。
  • 网络成本:Ceph要求万兆网络,最好用25GbE或100GbE。交换机也是一笔不小的开销。

我曾经踩过的坑:Ceph的PG(Placement Group)数量配置错了。一开始配了512个PG,集群规模增长到200TB后,PG数量不够导致数据分布不均。重新调整PG需要在线迁移,花了整整一周。后来我学乖了,初始PG数按「总容量/100GB」来估算。

适用场景:

  • 超大规模私有云(PB级以上)
  • 需要统一存储平台(对象+块+文件)
  • 有专业存储运维团队
  • 对硬件利用率要求极高(Ceph可以混用不同规格的磁盘)

3.5 选型决策框架

说了这么多,到底怎么选?我总结了一个简单的决策树,你照着走一遍基本不会错。

对象存储选型决策框架 数据规模 & 场景 小规模 < 50TB 中等规模 50TB-1PB 大规模 > 1PB MinIO 或 公有云 公有云 或 Ceph Ceph 或 混合云 开发环境 → MinIO 国内业务 → OSS 全球化 → S3 决策要点 1. 先看数据规模:50TB以下别碰Ceph,运维成本划不来 2. 再看网络条件:边缘节点用MinIO,数据中心用Ceph 3. 最后看团队能力:没有专职运维,优先选公有云 4. 混合云方案:MinIO做本地缓存 + S3/OSS做冷存储

3.6 我的最终建议

如果你问我个人偏好,我会说:

  • 开发环境:无脑MinIO。Docker一行命令就能跑,API完全兼容S3,本地调试完直接上云。
  • 中小规模生产(<50TB):优先选公有云。S3或OSS都行,看你的用户在哪。别为了省存储费自己搭Ceph,运维成本远超那点存储费。
  • 大规模生产(>1PB):如果团队有实力,Ceph是性价比最高的方案。但要做好心理准备——Ceph的故障排查会让你怀疑人生。
  • 边缘节点:MinIO是唯一选择。轻量、兼容S3、支持Erasure Coding,没有比它更适合边缘的了。

一个小技巧:不管选哪个方案,API层面都尽量兼容S3。这样以后迁移的时候,只需要改endpoint和认证信息,业务代码几乎不用动。我见过太多被厂商锁定的案例了。