2.3 对象/块/文件存储模型对照


2.3 对象 / 块 / 文件存储模型对照

本节摘要:云存储有三种基础模型——对象存储(OSS/S3/COS)、块存储(EBS/ESSD/CBS)、文件存储(EFS/NAS/CFS)。它们不是"同一种东西的不同实现",而是为不同访问模式设计的不同抽象。本节讲清楚三种模型的不可替代性,用"自建一个图片服务"的真实案例展开,最后给一张"我的业务该用哪种存储"的决策表。

本节要点地图

图:三种存储模型性能分布

图:三种存储模型性能分布

阅读完本节,你应当能够:

  1. 说出三种存储模型的核心差异:访问协议、容量上限、典型延迟、计费方式。
  2. 理解"对象存储不是文件系统":为什么不能在 S3/OSS/COS 上跑 MySQL、为什么它适合图片/视频/备份。
  3. 针对"图片服务、视频服务、数据库、容器持久化"等真实场景给出存储选型建议。
  4. 看懂"标准存储 / 低频存储 / 归档存储"的生命周期配置:知道什么时候该把数据降级到低频/归档层。

一、问题与直觉:为什么不在对象存储上跑数据库

很多新手以为"对象存储便宜又无限大,把所有数据都放进去就好"——然后尝试在 S3/OSS 上跑 MySQL 或视频编辑软件,结果性能惨不忍睹

举一个反例:某团队 2022 年为了"省成本"把 MySQL 的数据文件存到 S3 上,结果一次简单的 SELECT COUNT(*) 查询要 45 秒——而同样查询在 EBS 上只要 50 毫秒。差异 900 倍。原因:对象存储的"对象"是不可变的大文件块(最小 1 个,常见 4MB-5GB),随机读一条记录要先 GET 整个对象,IOPS 通常只有 100-1000,而 EBS 能到 10000+。

正解:数据库 = 块存储;图片/视频/备份 = 对象存储;共享文件系统 = 文件存储。它们是工具箱里的三把不同扳手

二、核心原理:三种存储模型的对比

2.1 三种存储模型核心差异

维度 对象存储 块存储 文件存储
访问协议 HTTP REST(PUT/GET/DELETE) 块设备协议(xvdb/vdb) NFS/SMB 协议
容量上限 无限(PB 级) 单盘 64TB PB 级
典型延迟 50-200ms(首字节) 0.5-2ms(随机读) 2-10ms
IOPS 100-1000 10000-100000 数千-数万
吞吐量 高(适合大文件) 高(适合随机 IO) 中(适合顺序 IO)
典型用途 图片、视频、备份、静态网站 数据库、系统盘 共享文件、容器持久化
计费 按 GB/月 + 请求次数 按 GB/月 + 性能等级 按 GB/月 + 吞吐

2.2 三家云产品矩阵

存储类型 AWS 阿里云 腾讯云
对象存储 S3(Simple Storage Service) OSS(Object Storage Service) COS(Cloud Object Storage)
块存储 EBS(Elastic Block Store) ESSD / SSD 云盘 CBS(Cloud Block Storage)
文件存储 EFS(Elastic File System) NAS(文件存储) CFS(Cloud File Storage)
归档存储 S3 Glacier 归档存储(OSS Archive) COS 归档
冷归档 S3 Glacier Deep Archive 冷归档存储 COS 深度归档

2.3 三种存储的访问模式

三、工程实践要点:选型决策与生命周期

3.1 真实案例:图片服务的存储选型

某图片分享应用,2023 年的存储架构:

数据 存储 月存储量 月成本
用户原始图(5MB/张) 阿里云 OSS 标准存储 50TB 5000 元
用户缩略图(200KB/张) 阿里云 OSS 标准存储 2TB 200 元
30 天前的原图 OSS 低频存储(IA) 200TB 8000 元
90 天前的原图 OSS 归档存储 500TB 4500 元
数据库(PostgreSQL) ESSD PL1 500GB 500GB 1500 元
合计 约 19200 元

关键策略:用"生命周期规则"自动把数据从标准层降到低频层、再降到归档层。1 个 OSS 生命周期配置 = 每月省 5000 元,且无需人工干预。

3.2 生命周期规则示例(OSS 风格)

{ "Rules": [ { "ID": "downgrade-old-images", "Status": "Enabled", "Prefix": "user-original/", "Transitions": [ { "Days": 30, "StorageClass": "IA" }, { "Days": 90, "StorageClass": "Archive" }, { "Days": 365, "StorageClass": "ColdArchive" } ] } ] }

AWS S3 用 LifecycleConfiguration,腾讯云 COS 用 LifecycleRule,结构类似。

3.3 选型决策表

业务场景 推荐存储 理由
用户上传图片/视频 对象存储(S3/OSS/COS) 容量无限、按量便宜
MySQL/PostgreSQL 数据 块存储(EBS/ESSD/CBS) 低延迟、高 IOPS
容器共享配置文件 文件存储(EFS/NAS/CFS) 多 Pod 同时挂载
网站静态资源 对象存储 + CDN 出向流量走 CDN
视频点播原始文件 对象存储 + 媒体转码服务 大文件 + 处理流水线
机器学习训练数据集 文件存储(NFS)或对象存储(S3) 取决于框架
数据库备份 对象存储(标准或低频) 容量大、访问少
异地容灾归档 对象存储(归档层) 极便宜
Kafka/RocketMQ 持久化 块存储 高吞吐顺序写

3.4 反例:常见存储误用

反例 后果 正解
在 S3 上跑 MySQL 性能 900 倍下降 用 EBS 或 Aurora
把 100GB 数据库用对象存储备份后还原到 EBS 还原要 4 小时 用 EBS 快照
不用生命周期规则 30 天前的热数据付热存储价格 配 IA/Archive 转换
在块存储上放图片 月成本 5 倍于对象存储 转对象存储 + CDN
用文件存储当数据库 性能不够 块存储

⚠️ 常见坑:"对象存储 = 便宜的网盘"是严重误解。对象存储的"对象"是不可变(immutable)的,写入后不能修改(要修改也是新写一个对象覆盖),所以不能作为"高性能随机写"的存储——它的设计目标是"一次写、多次读、海量扩展"。任何需要"频繁修改局部内容"的场景都不适合对象存储

💡 关键直觉:存储选型的核心问题是"我的访问模式是什么"。一次写多次读 = 对象;随机读写 = 块;多机共享 = 文件。"用最便宜的存储 + 配生命周期"是云成本治理的硬功夫

本节要点回顾

  • 三种存储模型是不同抽象层:对象(HTTP)、块(块设备)、文件(NFS/SMB)。
  • 对象存储 ≠ 文件系统:不能在 S3/OSS/COS 上跑数据库,但适合图片/视频/备份。
  • 生命周期规则是降本硬功夫:标准 → IA → 归档 → 冷归档,按时间自动转换。
  • 三家产品矩阵高度同构:S3/OSS/COS、EBS/ESSD/CBS、EFS/NAS/CFS。
  • 选型核心问题:问自己"我的访问模式是什么"——一次写多次读?随机读写?多机共享?

下一节我们切到"网络"——VPC/子网/专线在三家怎么落。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U