企业出海多云块存储架构实战:AWS EBS、阿里云 ESSD 与腾讯云 CBS 的云盘选型、IOPS 供给、快照治理与成本优化(2026最新版)
出海业务里最容易被"顺手开一块盘"带过去的组件,就是块存储:创建实例时点一下默认盘,容量给 100 GB,类型用默认值,之后再没人回头看。
- 前言:本文与既有文章的边界
- 三个决策变量:把"选盘"还原成三个能回答的问题
- 块 / 文件 / 对象:三条语义分界
- 三云盘类型族谱:同名不同物
- IOPS 与吞吐的供给模型
- 实例侧闸门:最常被忽略的一道限流
- 突发与信用:便宜的那部分性能是有代价的
- 快照:增量、一致性、链、归档
出海业务里最容易被"顺手开一块盘"带过去的组件,就是块存储:创建实例时点一下默认盘,容量给 100 GB,类型用默认值,之后再没人回头看。等到三个月后账单里存储费超过计算费、或者数据库在促销日 P99 突然翻三倍,才发现当初那个"默认值"同时锁死了性能上限和成本结构。这篇长文把块存储拆成五个可以独立决策的变量——介质族(SSD/HDD/本地盘)、性能供给方式(基线+突发、预置 IOPS、容量绑定 IOPS)、实例侧闸门(实例的 EBS 带宽与 IOPS 上限)、数据保护(快照链、一致性组、归档)、共享边界(单挂载 vs 多挂载 vs 文件存储)——再逐项对照 AWS EBS、阿里云 ESSD 与腾讯云 CBS 的实际能力与计费口径,给出可直接执行的创建/扩容/调优命令、一套可复算的成本算例、一份按现象定位的排障清单,以及 90 天落地路线。全文价格只给公开牌价的量级与口径,不做汇率换算后的跨厂商排名。
关键词: 块存储、云盘、EBS、ESSD、CBS、预置 IOPS、快照、多云架构
一句话答案: 先别选盘的类型,先回答三个问题:这块盘上跑的是随机小 IO(数据库、消息队列)还是顺序大 IO(日志、备份、视频切片);峰值 IOPS 与吞吐各是多少;承载它的实例规格允许它用到多少。这三个答案决定介质族与性能供给方式,而 90% 的"盘买贵了"和"盘不够快",都出在第二个和第三个问题的答案不一致——买了 16,000 IOPS 的盘,却挂在只能给 5,000 IOPS 的实例上。
前言:本文与既有文章的边界
站内存储与数据方向已经覆盖了「共享」「搬运」「冷存」「备份」四条线,唯独没有正面写过块设备本身。这块盘是数据库、容器节点、大机迁移的落脚点,缺了它,其余几篇的结论都悬空。先把边界划清楚,免得把这篇读成任何一篇的换皮:
| 既有主题 | 它解决的问题 | 与本文的关系 |
|---|---|---|
| 多云托管文件存储(10-24) | 多副本共享同一目录(RWX),NFS/SMB 协议选型 | 本文讲的是单挂载高性能盘;"能不能共享"只在第九节作为边界出现 |
| 多云对象存储与数据湖(09-10) | 海量非结构化对象的存储与分层 | 对象存储是 HTTP 语义、无格式化、无挂载;本文是块设备语义,必须先有文件系统 |
| 多云备份与勒索防护 3-2-1-1-0(09-11) | 备份策略、不可变存储库、恢复演练 | 本文的快照是恢复点来源,但"备份体系怎么建"归那篇,本文只讲快照本身的治理 |
| 多云混合存储网关(09-19) | 本地应用接云、缓存与回源通道 | 那篇里"缓存盘选 ESSD PL1 以上"的一句话,本文给出完整依据 |
| 多云关系型数据库架构(10-25) | 引擎族、高可用拓扑、读写分离、分片 | 本文只讲数据库脚下的盘;数据库引擎怎么选不在这里重复 |
| Kubernetes 成本治理(10-14) | 容器成本归因与分摊 | 本文的 PV 供给与云盘计费口径,是那篇成本模型的输入项 |
| CSPM 安全基线(08-17) | 配置合规检查(含"云盘必须加密"这条规则) | 本文讲加密怎么落地、代价是什么、跨账号共享为什么会失败 |
一句话概括本文的位置:文件存储管"多人共享",对象存储管"海量便宜",块存储管"一块盘跑得多快、多久能恢复"。
一、三个决策变量:把"选盘"还原成三个能回答的问题
1.1 第一个问题:IO 模式是随机小 IO 还是顺序大 IO
块存储的性能从来不是单一数字。同一块盘,4 KiB 随机读能跑 16,000 IOPS,换成 1 MiB 顺序读,吞吐可能只有 250 MiB/s——因为吞吐 = IOPS × 单次 IO 大小。这就是为什么"我的盘标称 16,000 IOPS,为什么备份只能跑 200 MB/s"是个伪问题:备份是顺序大 IO,瓶颈在吞吐上限,不在 IOPS。
| IO 模式 | 典型负载 | 关键指标 | 选型方向 |
|---|---|---|---|
| 4–16 KiB 随机读写 | OLTP 数据库、消息队列、etcd | IOPS + 单 IO 时延 | 预置 IOPS 型 SSD,容量给足以摊薄单位 IOPS 成本 |
| 64–256 KiB 混合 | 容器镜像层、应用日志落盘 | IOPS 与吞吐折中 | 通用 SSD(gp3 / ESSD PL1 / 增强型 SSD) |
| 1 MiB 以上顺序 | 数据备份、日志归档、视频切片、数仓落盘 | 吞吐(MiB/s) | 吞吐型 HDD(st1/sc1)或对象存储 |
| 写多读少、可重建 | 缓存、临时计算、Spark shuffle | 吞吐 + 成本 | 本地 NVMe(实例存储),但要接受"停机即丢" |
判据顺序:先用 iostat -x 1 或云监控看清 r/s、w/s、rkB/s、wkB/s 与 await,算出平均 IO 大小(rkB/s ÷ r/s)。平均 IO 小于 32 KiB 就是随机型负载,选 IOPS 型;大于 256 KiB 就是顺序型,先看吞吐再看 IOPS。
1.2 第二个问题:性能是"容量绑定"还是"独立预置"
这是三云产品线分叉最厉害的地方,也是成本差异的主要来源。
- 容量绑定 IOPS:IOPS 随容量线性给。AWS gp2 是 3 IOPS/GB,阿里云 ESSD 的 PL 级别是按容量档位给固定 IOPS 上限,腾讯云早期 SSD 云盘同理。好处是"买容量顺带买性能",坏处是想要性能就得买用不到的容量。
- 独立预置 IOPS:容量与 IOPS 分开计价,盘可以很小但很快。AWS gp3 是典型(3,000 IOPS / 125 MiB/s 免费基线,之上按需加钱),io1/io2 是纯预置,阿里云 ESSD AutoPL 是"基线 + 预置加分",腾讯云增强型 SSD 也支持性能与容量解耦。
- 突发型:平时攒信用,峰值借信用。AWS gp2(1 TiB 以下可突发到 3,000 IOPS)、阿里云 ESSD AutoPL 的突发能力、部分入门级 SSD。突发型最大的坑是"信用耗尽后的性能断崖",而且断崖通常出现在业务峰值最不希望它出现的时刻。
结论:数据库盘优先选"独立预置",因为数据库的容量增长慢、性能需求增长快,两者不该绑在一起;日志与备份盘优先选"容量绑定 + 大容量",因为这类负载要的是便宜和吞吐。
1.3 第三个问题:实例侧允许多少
这是全网最少被写、也最容易踩的一条。云盘的性能上限是云盘的上限,不是你这台机器的上限。 每个实例规格都有独立的 EBS/云盘带宽与 IOPS 配额,盘的标称值再高,超出实例配额的部分也用不上。
AWS 可以直接查:
aws ec2 describe-instance-types \
--instance-types m6i.2xlarge m6i.large \
--query 'InstanceTypes[].[InstanceType,EbsInfo.EbsOptimizedInfo]' \
--output table
阿里云与腾讯云的同口径数据写在实例规格族文档的"存储"或"云盘性能"一栏(不在 DescribeInstanceTypes 的返回里),选型时必须人工对一遍,不能只看盘的规格页。
实测经验:把一块 16,000 IOPS 的 gp3 挂在入门级实例上,压测只能跑到几千 IOPS,很多人第一反应是"云盘虚标",其实是实例的
MaximumIops卡住了。排查时先看实例的 EBS 配额,再看盘的VolumeThroughputPercentage,两个都正常才轮到怀疑盘。
二、块 / 文件 / 对象:三条语义分界
多云架构里最贵的一类错误不是选错型号,而是选错存储语义——把数据库数据目录放到 NFS 上、把共享配置放到块设备上、把需要随机读写的小文件堆进对象存储。三条线的差别不在"贵不贵",而在访问模型:
| 维度 | 块存储 | 文件存储 | 对象存储 |
|---|---|---|---|
| 访问粒度 | 扇区/块,需先格式化文件系统 | 文件与目录,POSIX 语义 | 对象(Key-Value),HTTP API |
| 挂载方式 | 挂到一台主机(多挂载需特殊支持) | 多主机同时挂载(NFS/SMB) | 无需挂载,SDK/HTTP 直连 |
| 延迟量级 | 亚毫秒(本地 NVMe)到毫秒(网络盘) | 毫秒 | 十毫秒到百毫秒 |
| 共享写 | 默认不支持,强行为之会损坏文件系统 | 支持(带锁语义) | 支持(最终一致/强一致视产品) |
| 容量弹性 | 扩容需改分区与文件系统 | 弹性,按实际用量计费 | 近乎无限 |
| 计费单位 | GB·月 + 预置 IOPS/吞吐 | GB·月 + 吞吐/协议 | GB·月 + 请求数 + 流量 |
| 典型负载 | 数据库、容器节点、大机迁移 | 共享目录、CI 缓存、媒体素材 | 静态资源、备份归档、数据湖 |
三条铁律:数据库数据目录只能放块存储(或云数据库托管盘);多副本共享目录只能放文件存储;静态大文件与归档只能放对象存储。任何"为了省事统一放一处"的方案,最后都会在性能或一致性上付一次学费。
三、三云盘类型族谱:同名不同物
三家云的命名体系互不对齐,最典型的是"SSD 云盘"这个词:AWS 的 gp3 是通用型 SSD,阿里云的"SSD 云盘"是上一代产品(对应 ESSD 的入门档),腾讯云的"SSD 云硬盘"又是另一档性能。只按名字对比,必然选错。
| 用途档位 | AWS EBS | 阿里云 | 腾讯云 |
|---|---|---|---|
| 通用 SSD(性价比主力) | gp3(gp2 为上一代) | ESSD PL0 / PL1、ESSD AutoPL | 增强型 SSD、SSD 云硬盘 |
| 高性能 SSD(预置 IOPS) | io2 Block Express、io1 | ESSD PL2 / PL3 | 增强型 SSD 高配、极速型 SSD |
| 吞吐型 HDD | st1(吞吐优化)、sc1(冷盘) | 高效云盘(容量型)、部分 HDD 型 | 高性能云硬盘(混合型 HDD) |
| 本地盘 | Instance Store(NVMe/SSD) | 本地 SSD 盘(部分规格族) | 本地盘(部分机型) |
| 共享块设备 | EBS Multi-Attach(io1/io2) | 共享块存储 | 共享云硬盘 |
三家的能力上限量级(单盘,具体随规格与地域变化,以官方规格页为准):
| 能力项 | AWS EBS | 阿里云 ESSD | 腾讯云 CBS |
|---|---|---|---|
| 单盘最大 IOPS 量级 | gp3 16,000;io2 标准 64,000;io2 Block Express 256,000 | PL0 1 万;PL1 5 万;PL2 10 万;PL3 100 万 | SSD 万级;增强型十万级;极速型百万级 |
| 单盘最大吞吐量级 | gp3 1,000 MiB/s;io2 1,000 MiB/s;Block Express 4,000 MiB/s | PL0 180 MB/s;PL1 350 MB/s;PL2 750 MB/s;PL3 4,000 MB/s | 随类型从数百 MB/s 到数 GB/s |
| 性能与容量是否解耦 | gp3 是(基线之上加钱);io1/io2 是 | ESSD 按 PL 档位给上限;AutoPL 可预置加分 | 增强型 SSD 支持 |
| 是否有突发能力 | gp2 有(信用桶) | ESSD AutoPL 有 | 部分类型有 |
| 单盘最大容量量级 | 64 TiB | 32 TiB | 32 TiB 级 |
| 是否支持在线扩容 | 支持(仅增) | 支持(仅增) | 支持(仅增) |
| 是否支持在线改类型 | gp2→gp3 支持;跨介质不支持 | 支持性能级别变配 | 类型转换受限,多以新建+迁移实现 |
| 是否支持多挂载 | io1/io2,同可用区 | 共享块存储 | 共享云硬盘 |
| 快照是否增量 | 是 | 是 | 是 |
| 是否有归档快照 | 是(Archive 层) | 是(归档快照) | 是(归档存储) |
| 是否支持默认加密 | 是(账号级开关) | 是(新建盘可选/默认策略) | 是(可选加密) |
口径提醒:上表的"最大 IOPS"是单盘理论上限,不等于你的实例能跑到的值,也不等于厂商承诺的稳定值。写容量规划时用"规格页上限 × 0.7"做稳态估算,把剩余 30% 留给突发与老化。
四、IOPS 与吞吐的供给模型
4.1 三个数字之间的关系
块存储的性能永远由三个数字共同描述,缺一个就会误判:
吞吐(MiB/s) ≈ IOPS × IO 大小(KiB) ÷ 1024
并发需求 ≈ IOPS × 单 IO 时延(ms) ÷ 1000
举例:业务需要 12,000 IOPS、平均 IO 16 KiB,则吞吐需求 ≈ 187 MiB/s;如果单 IO 时延 0.5 ms,则至少需要 6 个并发请求在飞(12,000 × 0.5 ÷ 1000)。这解释了一个常见现象:单线程 dd 测不出盘的性能。 单线程同步写每次都要等上一次完成,队列深度恒为 1,无论盘多快都只能跑出「1 ÷ 时延」的 IOPS。
压测必须带队列深度:
// 4K 随机读,队列深度 32,4 并发,直写绕过缓存,跑 60 秒
fio --name=randread --ioengine=libaio --iodepth=32 --rw=randread \
--bs=4k --direct=1 --size=1G --numjobs=4 --time_based --runtime=60 \
--group_reporting
// 1M 顺序读,看吞吐而不是 IOPS
fio --name=seqread --ioengine=libaio --iodepth=8 --rw=read \
--bs=1m --direct=1 --size=4G --numjobs=1 --time_based --runtime=60 \
--group_reporting
4.2 IOPS 与容量的比例限制
预置 IOPS 不是想给多少给多少,三家云都有"每 GiB 最多多少 IOPS"的比例上限:
| 产品 | 比例规则 | 实践含义 |
|---|---|---|
| AWS gp3 | 每 GiB 最多 500 IOPS | 想给 16,000 IOPS,盘至少要 32 GiB |
| AWS io2 | 每 GiB 最多 500 IOPS(Block Express 更高) | 小盘高 IOPS 需按比例放大容量 |
| 阿里云 ESSD | 按 PL 档位给固定上限,与容量解耦但有容量下限 | 选 PL 档位时先看容量是否满足最低要求 |
| 腾讯云增强型 SSD | 按性能档位给上限,有容量下限 | 同上 |
这条规则的实战价值:当你需要"小容量 + 高 IOPS"(比如 200 GB 的 MySQL 数据盘要 20,000 IOPS),gp3 会被 500 IOPS/GiB 卡住(200 × 500 = 100,000,够用),但如果容量只有 30 GB,上限就是 15,000。先算比例,再算钱。
五、实例侧闸门:最常被忽略的一道限流
云盘性能再高,也要过实例这一关。三家的限制形态不同:
| 云 | 限制位置 | 怎么查 | 注意事项 |
|---|---|---|---|
| AWS | 每个实例类型的 EbsInfo.EbsOptimizedInfo | describe-instance-types 的 BaselineIops / MaximumIops / BaselineBandwidthInMbps / MaximumBandwidthInMbps | 有"基线"与"最大"两档,小规格实例的基线可能只有几千 IOPS |
| 阿里云 | 实例规格族的"云盘 IOPS/带宽上限" | 规格族文档 | 不同规格族差异极大,突发性能实例限制更明显 |
| 腾讯云 | 实例规格的"云盘性能"上限 | 实例规格文档 | 与内网带宽分列,别混看 |
多云统一的做法:在 CMDB 里给每个实例规格记录四元组 (基线 IOPS, 最大 IOPS, 基线带宽, 最大带宽),与挂在它上面的盘做一次匹配检查。凡是"盘的预置 IOPS > 实例最大 IOPS"的组合,要么升级实例,要么把盘拆到多台机器上,否则多付的钱一分性能都换不回来。
六、突发与信用:便宜的那部分性能是有代价的
突发型块存储的机制一致:平时按低于标称的速度攒信用,峰值时借信用冲到高值,信用耗尽后回落到基线甚至更低。 三家的表现形态:
- AWS gp2:3 IOPS/GB,1 TiB 以下可突发至 3,000 IOPS,信用余额看 CloudWatch 的
BurstBalance。低于 20% 就该告警——那意味着下一次峰值会掉到基线。 - 阿里云 ESSD AutoPL:基线性能 + 可预置的额外 IOPS,突发部分同样依赖信用,适合"平时平稳、偶尔尖峰"的业务。
- 腾讯云部分 SSD 类型:标称值与稳态值存在差距,规格页会写明"性能随容量/时长变化"。
| 现象 | 判据 | 处置 |
|---|---|---|
| 白天正常、夜间批量任务时特别慢 | BurstBalance 持续低于 20% | 换 gp3 预置 IOPS,或把批量任务挪到吞吐型盘 |
| 压测前 30 秒很快、之后断崖 | 压测曲线前高后低 | 关闭突发型,改用稳态型 |
| 促销日整体卡顿、平时无感 | 信用在峰值前已被日常流量耗光 | 按峰值而非均值做容量规划 |
结论:突发型适合"测试环境、低频访问的备份盘、个人站点"。生产数据库盘不要用突发型——你无法预测信用余额,也无法在故障复盘时解释"为什么当时盘变慢了"。
七、快照:增量、一致性、链、归档
7.1 增量快照的真实成本结构
三家的快照都是增量块存储:首份是全量,之后只存变化的块。这带来两个反直觉的结论:
- 快照不会因为"每天一份"就线性涨价,涨价速度取决于每日变化块的绝对量,而不是快照份数。
- 但保留期一长,累计块数会逼近全量——每天变 50 GB,保留 14 天,稳态占用就是"全量 + 13 天增量"。一块 10 TiB 的盘,快照费可以轻松达到容量费的一半以上。
算例(us-east-1 标准快照 $0.05/GB·月):10,240 GB 的盘,每日变化 50 GB,保留 14 天,稳态快照占用约 10,240 + 13 × 50 = 10,890 GB,月费约 $544.50,相当于这块盘容量费(gp3,$819.20)的 66%。如果这批快照已经超过 90 天且只用于合规留存,转归档层($0.0125/GB·月)后,同样 10,240 GB 只需 $128.00/月,省约 75%。
7.2 一致性:崩溃一致 vs 应用一致
| 级别 | 怎么做到 | 适用场景 | 恢复后果 |
|---|---|---|---|
| 崩溃一致 | 直接打快照,等价于"拔电源瞬间"的磁盘状态 | 无状态应用、只读副本、可重放日志的库 | 需要崩溃恢复(如 MySQL 的 redo 重放) |
| 应用一致 | 先 fsync/冻结,再打快照,再解冻 | 核心交易库、多盘关联的中间件 | 起库即用,无需恢复流程 |
Linux 上的通用做法是 fsfreeze,Windows 上是 VSS:
// 冻结文件系统写 → 打快照 → 解冻,三步必须连续执行
fsfreeze -f /data
aws ec2 create-snapshot --volume-id vol-0123456789abcdef0 --description "app-consistent-$(date +%F)"
fsfreeze -u /data
多块盘属于同一实例时,逐块打快照会得到时间点不一致的一组盘(盘 A 是 10:00:00,盘 B 是 10:00:03),恢复后数据库会认为日志与数据文件不匹配。AWS 提供了多卷快照集,一次调用取同一时间点:
aws ec2 create-snapshots \
--instance-specification InstanceId=i-0123456789abcdef0 \
--description "multi-volume-crash-consistent" \
--copy-tags-from-source volume
阿里云侧对应的是一致性组(快照一致性组),腾讯云侧以多盘快照/一致性组形式提供,落地时按官方文档选择"组"而非逐盘调用。
7.3 快照链、删除与跨区
- 删除中间快照不会删掉其他快照还在引用的块,只会释放"独属于这份"的块;但删除会让链变长、恢复变慢,所以策略上用"保留 N 天 + 定期合并"而不是"随便删"。
- 归档快照不能直接用来创建云盘,必须先解冻(restore),AWS 的解冻是小时级(最长 72 小时)。把它当合规留存,不要当应急恢复点。
- 跨地域复制用
copy-snapshot,跨账号共享加密快照必须同时共享 KMS 密钥,否则对方拿到快照 ID 也创建不了盘——这是多云备份最常见的"以为备份了其实恢复不了"。
// 跨地域复制一份快照(目标地域独立计费)
aws ec2 copy-snapshot \
--source-region ap-southeast-1 --source-snapshot-id snap-0123456789abcdef0 \
--region us-east-1 --description "dr-copy-$(date +%F)"
7.4 生命周期自动化
不要靠人记。三云都有快照策略引擎:AWS 是 Data Lifecycle Manager(aws dlm create-lifecycle-policy),阿里云是自动快照策略(按天/周/月 + 保留份数),腾讯云是快照定时策略 + 生命周期。
| 数据分级 | 频率 | 保留 | 归档 | 说明 |
|---|---|---|---|---|
| 核心交易库 | 每小时 | 7 天 | 90 天后转归档 | 必须应用一致 + 多盘一致 |
| 一般业务盘 | 每天 | 14 天 | 30 天后转归档 | 崩溃一致足够 |
| 日志/中间件盘 | 每天 | 7 天 | 不归档 | 可重建的数据不必长留 |
| 归档/冷数据盘 | 每周 | 30 天 | 立即归档 | 保留只为合规举证 |
八、加密:默认开、密钥有主、跨账号要想清楚
云盘加密是"静态加密"里最容易被检查、也最容易被做成半吊子的一项。三家的能力形态:
| 维度 | AWS EBS | 阿里云 | 腾讯云 |
|---|---|---|---|
| 默认加密 | 账号级开关,开启后新建盘/快照默认加密 | 新建盘可选加密,可配默认策略 | 创建时可指定加密 |
| 密钥管理 | KMS CMK(客户自管或 AWS 托管) | KMS 主密钥 | KMS |
| 加密粒度 | 卷级,快照继承加密状态 | 盘级(部分能力仅 ESSD 支持) | 盘级 |
| 性能影响 | Nitro 实例上由硬件卸载,影响可忽略 | 影响可忽略(同为卸载路径) | 影响可忽略 |
| 未加密盘能否转加密 | 不能原地转,需"快照→加密复制→新建盘" | 同类,需新建 | 同类,需新建 |
| 加密快照跨账号共享 | 必须同时共享 CMK | 需授权密钥 | 需授权密钥 |
// 打开账号级默认加密:此后新建的卷与快照都自动加密
aws ec2 enable-ebs-encryption-by-default --region ap-southeast-1
aws ec2 get-ebs-encryption-by-default --region ap-southeast-1
三条落地纪律:
- 默认加密必须在账号级打开,而不是靠 IaC 里每块盘写
encrypted = true——总有人用控制台手点一块盘。 - 未加密盘不能原地加密,路径是"打快照 → 复制快照时指定加密 → 用加密快照新建盘 → 切挂载点"。这个流程要提前演练,别等到审计前一天才发现要停机。
- 跨账号共享加密快照时,密钥不共享等于没共享。多云备份到另一个账号/另一个云时,恢复演练必须由"接收方"实际创建一次盘,而不是只看快照列表里有对象。
九、多挂载与共享边界
"能不能两台机器挂同一块盘"是块存储里问得最多、答错代价最大的问题。
| 方案 | 支持情况 | 必要条件 | 适用 | 风险 |
|---|---|---|---|---|
| 块设备多挂载 + 集群文件系统 | AWS io1/io2(同 AZ,最多 16 个 Nitro 实例);阿里云共享块存储;腾讯云共享云硬盘 | 必须使用支持集群的文件系统(GFS2/OCFS2)或集群感知应用(Oracle RAC) | 数据库双活、集群中间件 | 配错就是文件系统损坏,恢复极难 |
| 文件存储(NFS/SMB) | 三家均提供 | 无需集群文件系统 | 共享目录、CI 缓存、素材库 | 见 10-24,锁语义与延迟是主要约束 |
| 对象存储 | 三家均提供 | SDK/HTTP | 静态资源、备份、数据湖 | 无 POSIX 语义,随机小文件性能差 |
| 数据库托管服务 | 三家均提供 | 用托管引擎 | 有事务与并发写的核心数据 | 成本更高,但省掉一致性风险 |
一句话决策:需要"同时写"就用文件存储或数据库;需要"单机极致性能"就用块存储;需要"海量便宜"就用对象存储。 块存储的多挂载只在你确实有集群文件系统或集群数据库时才是选项,否则它是"看起来能省一台机器、实际会丢数据"的陷阱。
十、扩容与在线变配:三条铁律
10.1 只能增,不能减
三家的云盘都只支持扩容,不支持缩容。缩容的唯一路径是"新建小盘 → 数据迁移 → 切挂载点"。所以容量规划宁可按 12 个月增长曲线多给 30%,也不要为了省几十美元卡在临界值上——一次缩容迁移的成本远高于多买的容量。
10.2 扩容是两层操作
云控制台/API 扩容只改"盘的大小",文件系统不会自动变大。必须在实例内做第二步:
// 1) 让内核重读分区表并扩展分区
growpart /dev/nvme0n1 1
// 2) 按文件系统类型扩展(XFS)
xfs_growfs /data
// 3) ext4 用另一条
resize2fs /dev/nvme0n1p1
// 4) 确认结果
df -hT /data
Windows 上则是"磁盘管理 → 扩展卷"。没有第二步,df 永远是旧值——这是工单里出现频率最高的"扩容没生效"。
10.3 在线变更的边界
| 操作 | AWS | 阿里云 | 腾讯云 |
|---|---|---|---|
| 扩容容量 | 在线,无需停机;同一卷两次修改间隔 6 小时 | 在线扩容 | 在线扩容 |
| 提升预置 IOPS/吞吐 | 在线(gp3/io2) | 支持性能级别变配 | 支持性能档位调整 |
| 改介质类型(HDD→SSD) | 不支持原地 | 受限,多以新建实现 | 不支持原地,新建+迁移 |
| 跨可用区迁移 | 快照复制后新建 | 快照复制后新建 | 快照复制后新建 |
| 缩容 | 不支持 | 不支持 | 不支持 |
// AWS:把 500 GiB gp3 扩到 1 TiB,并把预置 IOPS 提到 8,000
aws ec2 modify-volume --volume-id vol-0123456789abcdef0 \
--size 1024 --volume-type gp3 --iops 8000 --throughput 500
// 查看修改状态与进度(modifying → optimizing → completed)
aws ec2 describe-volumes-modifications --volume-ids vol-0123456789abcdef0
阿里云与腾讯云对应的是 ResizeDisk / ResizeDisks,参数里都有"在线/离线"选项,能在线就不要选离线,离线意味着要停机卸载。
十一、成本模型:五个可执行手段
11.1 公开牌价量级(us-east-1,2026 年 10 月采集)
| 项目 | 单价 | 说明 |
|---|---|---|
| gp3 容量 | $0.08/GB·月 | 含 3,000 IOPS + 125 MiB/s 基线 |
| gp3 超额 IOPS | $0.005/IOPS·月 | 仅对超过 3,000 的部分计费 |
| gp3 超额吞吐 | $0.04/MBps·月 | 仅对超过 125 MiB/s 的部分计费 |
| gp2 容量 | $0.10/GB·月 | 3 IOPS/GB,含突发 |
| io2 容量 | $0.125/GB·月 | 另加预置 IOPS 费 |
| io2 预置 IOPS | $0.065/IOPS·月(≤32,000 档) | 更高档位单价递减 |
| st1 吞吐型 HDD | $0.045/GB·月 | 顺序负载专用 |
| sc1 冷 HDD | $0.015/GB·月 | 冷数据、低访问频率 |
| 标准快照 | $0.05/GB·月 | 按增量块计费 |
| 归档快照 | $0.0125/GB·月 | 90 天起,恢复需解冻 |
声明:本文价格数据采集于 2026 年 10 月,仅为公开官网参考量级(us-east-1 口径),不含税费与折扣,不同地域与结算币种的实际价格会有差异。阿里云与腾讯云同类产品公开价以人民币计价,量级约为:ESSD PL0–PL1 每 GB 每月人民币个位数,PL2 约翻倍,PL3 再翻倍;快照约 ¥0.12–0.14/GB·月。本文不做汇率换算后的跨厂商排名,请以各厂商官网实时报价与商务折扣为准。
11.2 算例:10 TiB 数据盘,需要 12,000 IOPS 与 500 MiB/s
| 方案 | 容量费 | 性能费 | 月合计 | 能否满足 |
|---|---|---|---|---|
| gp3(10,240 GB,12,000 IOPS,500 MiB/s) | $819.20 | $45.00 + $15.00 | $879.20 | 满足 |
| gp2(10,240 GB) | $1,024.00 | 无(容量绑定) | $1,024.00 | 吞吐封顶 250 MiB/s,不满足 |
| io2(10,240 GB,12,000 IOPS) | $1,280.00 | $780.00 | $2,060.00 | 满足(为耐久性与时延付费) |
| st1(10,240 GB) | $460.80 | 无 | $460.80 | IOPS 只有数百,不满足 |
同容量下 gp3 比 gp2 便宜 14.1%($879.20 vs $1,024.00),而 io2 是 gp3 的 2.34 倍。这个对比说明两件事:gp2→gp3 是"零风险降本",而 io2 只在"需要 99.999% 耐久性或稳定亚毫秒时延"时才值得。
11.3 五个手段
| 手段 | 典型节省 | 前提 | 风险 |
|---|---|---|---|
| gp2 → gp3(或同类新代) | 14%–20% | 无,可在线完成 | 几乎无 |
| 按实际峰值右规格预置 IOPS | 30%+ | 有 4 周以上监控数据 | 峰值误判导致尖峰受限 |
| 清理未挂载盘与孤儿快照 | 占存储账单 5%–10% | 有标签与盘点流程 | 误删,需先做备份确认 |
| 冷数据下沉到 st1/sc1/归档快照 | 50%–80% | 访问模式明确 | 首次访问延迟高,归档需解冻 |
| 本地盘承接可重建数据 | 容量费接近 0 | 数据可重建、能接受停机丢失 | 实例停止即丢,不能放有状态数据 |
十二、IaC:把"默认值"变成"显式值"
控制台点出来的盘,90% 用的是默认值;IaC 的价值不是自动化,而是把默认值变成评审过的显式值。
// AWS:显式声明类型、IOPS、吞吐与加密,避免继承账号默认值
resource "aws_ebs_volume" "data" {
availability_zone = "ap-southeast-1a"
size = 1024
type = "gp3"
iops = 6000
throughput = 300
encrypted = true
kms_key_id = var.kms_key_arn
tags = { Name = "app-data", Env = "prod", Backup = "daily-14" }
}
resource "aws_volume_attachment" "data" {
device_name = "/dev/sdf"
volume_id = aws_ebs_volume.data.id
instance_id = var.instance_id
}
阿里云与腾讯云在各自 provider 里有对应的云盘资源(alicloud_disk、tencentcloud_cbs_storage),属性命名不同但语义一一对应。命令行创建时三家的关键参数:
// AWS:创建一块加密的 gp3,预置 6,000 IOPS / 300 MiB/s
aws ec2 create-volume --availability-zone ap-southeast-1a --size 500 \
--volume-type gp3 --iops 6000 --throughput 300 --encrypted
// 阿里云:创建 ESSD PL1,必须显式给 DiskCategory 与 PerformanceLevel
aliyun ecs CreateDisk --RegionId ap-southeast-1 --ZoneId ap-southeast-1a \
--DiskCategory cloud_essd --PerformanceLevel PL1 --Size 500 \
--DiskName app-data --Encrypted true
// 腾讯云:创建增强型 SSD,磁盘类型与可用区都必须显式指定
tccli cbs CreateDisks --DiskType CLOUD_HSSD --DiskSize 500 --DiskCount 1 \
--Placement '{"Zone":"ap-singapore-1"}' --DiskName app-data
三个必须在 CI 里拦截的默认值:未加密的盘、没有 Backup 标签的盘、以及 iops 大于实例上限的盘。前两个是合规问题,第三个是"花钱买不到性能"的浪费。
十三、监控与排障:按现象定位
13.1 五个必须有的指标
| 指标(AWS 口径) | 含义 | 告警阈值建议 |
|---|---|---|
VolumeQueueLength | 排队中的 IO 数 | 持续 > 2 说明盘或实例已成瓶颈 |
VolumeThroughputPercentage | 吞吐占预置上限的比例 | 持续 > 80% 告警 |
BurstBalance | 突发信用余额 | < 20% 告警(仅突发型盘) |
VolumeConsumedReadWriteOps | 实际消耗的 IOPS | 与预置值比对,长期 < 50% 即右规格信号 |
单 IO 时延(await / 云监控时延) | 每次 IO 的等待时间 | 超过基线 2 倍告警 |
阿里云与腾讯云在云监控/CBS 监控里提供同语义的 IOPS、吞吐、时延三项,指标名不同但可以对齐到同一套看板。
13.2 现象 → 判据 → 动作
| 现象 | 最可能原因 | 怎么验证 | 动作 |
|---|---|---|---|
| P99 时延飙高但 IOPS 未到顶 | 队列深度不足,单线程同步 IO | iostat -x 1 看 aqu-sz 小于 1、await 高 | 提高应用并发或线程池,别急着升盘 |
| IOPS 打满、CPU 空闲 | 盘规格触顶 | VolumeThroughputPercentage 接近 100 | 升预置 IOPS 或拆盘 |
| IOPS 未到顶但吞吐卡住 | 平均 IO 太大,撞吞吐上限 | 平均 IO 大小 > 256 KiB | 提高吞吐供给,或改顺序写模式 |
| 突发型盘夜间变慢 | 信用耗尽 | BurstBalance < 20% | 换稳态型盘,或把批量任务移走 |
扩容后 df 不变 | 未扩展分区/文件系统 | lsblk 看到盘变大、分区没变 | growpart + xfs_growfs |
| 跨可用区挂载失败 | 云盘是可用区级资源 | 盘与实例的 AZ 不一致 | 快照复制到目标 AZ 后新建盘 |
| 多挂载后文件系统损坏 | 未使用集群文件系统 | dmesg 有文件系统错误 | 立即停写、从快照恢复、改用共享存储 |
| 跨账号恢复失败 | 加密快照的 CMK 未共享 | 目标账号创建盘报 KMS 权限错 | 共享密钥后重试,并纳入演练清单 |
十四、90 天落地路线
| 阶段 | 目标 | 关键动作 | 验收标准 |
|---|---|---|---|
| 0–30 天 | 看清现状 | 盘点全部云盘(类型/容量/预置 IOPS/加密/挂载状态/标签)、导出快照清单、拉 4 周监控 | 每块盘都有"峰值 IOPS/吞吐/平均 IO 大小"三个数 |
| 30–60 天 | 止血降本 | gp2→gp3 在线迁移、按峰值右规格预置 IOPS、清理未挂载盘与孤儿快照、建立快照生命周期策略 | 存储账单下降 10% 以上,且无性能投诉 |
| 60–90 天 | 固化与门禁 | 账号级默认加密、IaC 拦截未加密/无标签/超实例上限的盘、快照恢复演练、成本看板 | 恢复演练成功一次,门禁在 CI 中生效 |
上线前必须能回答的四个问题:
- 每块生产盘的峰值 IOPS 与吞吐是多少,离实例上限还有多少余量?
- 最近一次从快照恢复演练是什么时候,用了多久,数据一致性如何验证?
- 加密是否在账号级默认开启,密钥有没有明确owner 与轮换计划?
- 未挂载盘与孤儿快照的清零机制是自动的还是靠人记?
四个问题里任何一个答不上来,这块盘的架构就还没算落地。
十五、总结
块存储是云上最"不像架构"的组件——它没有拓扑图,没有控制面,创建时只花三秒。但它同时决定了三件事:数据库的尾延迟、账单里最难压缩的那一项、以及出事时能不能在 RTO 内恢复。
把本文压成五句话:
- 先看 IO 模式再选介质:随机小 IO 选预置 IOPS 型 SSD,顺序大 IO 选吞吐型 HDD 或对象存储。
- 容量与性能解耦是新一代产品的核心价值:gp3 相对 gp2 的 14% 降本,本质是"不再为用不到的性能买容量"。
- 盘的上限不是机器的上限:实例的 EBS 带宽与 IOPS 配额必须先对一遍,否则多付的钱换不来性能。
- 快照是恢复点,不是备份体系:增量块 + 保留期会让快照费追平容量费,归档层与生命周期策略是必选项。
- 加密要默认开、密钥要有主、恢复要演练:三件事缺一件,审计或故障时都会暴露。
🚀 企业出海需要云架构咨询?通过 7.chengzicloud.cloud 联系我们,获取专属方案。覆盖多云存储选型、性能压测与容量规划、快照与加密合规落地、存储成本优化。
相关阅读
- 多云托管文件存储架构 — 需要多机共享目录时的那一层,与本文正交
- 多云关系型数据库架构与高可用拓扑 — 数据库脚下的盘怎么选,本文给出依据
- 多云备份与勒索软件防护 3-2-1-1-0 — 快照之外的备份体系,含不可变存储
- 多云混合存储网关落地 — 缓存盘的选型直接引用本文的性能供给模型
- Kubernetes 成本治理 Kubecost/OpenCost — PV 与云盘成本如何归因到工作负载
- 多云机密计算与数据可用不可见 — 静态加密与使用中加密的分工
- 多云 CSPM 安全态势管理 — "云盘必须加密"这条规则的自动化检查
本文由 7.chengzicloud.cloud 提供,点击访问首页了解更多
常见问题(FAQ)
Q1:gp3 和 gp2 到底差在哪,能不能直接换?
gp2 是"容量绑定性能"的上一代产品,3 IOPS/GB、1 TiB 以下可突发到 3,000 IOPS;gp3 把性能从容量里解耦出来,任何容量都自带 3,000 IOPS 与 125 MiB/s 基线,之上可以单独加钱提升到 16,000 IOPS / 1,000 MiB/s。可以直接换,且是在线操作:modify-volume --volume-type gp3,无需停机,完成后在实例内无需任何操作。同容量下 gp3 单价还更低,所以这是少见的"又便宜又不降性能"的迁移。
Q2:我买了 16,000 IOPS 的盘,为什么压测只有 3,000?
三个原因按概率排序:一是实例侧上限,实例规格的 MaximumIops 只有几千,盘再快也用不上,用 describe-instance-types 查 EbsInfo.EbsOptimizedInfo;二是压测工具队列深度为 1,单线程同步 IO 跑不出并发,必须用 fio 加 --iodepth=32;三是盘没预热,新建的盘(尤其是从快照恢复的盘)首次读可能走后台加载,需要预热或开启快速快照恢复。
Q3:快照是不是备份?能不能替代备份系统?
不能。快照与盘在同一个云、同一个账号、同一个地域(除非你显式复制),账号被入侵或误删时快照会一起消失。快照的正确角色是快速恢复点(分钟级回滚单盘),备份体系的角色是跨账号、跨地域、不可变(应对勒索与灾难)。生产环境的标准做法是:快照做日常回滚,备份系统做 3-2-1-1-0,两者都要有。
Q4:云盘能缩小容量吗?
不能。三家云都只支持扩容。要缩容只能"新建小盘 → 数据迁移 → 切挂载点 → 删除旧盘",而且必须在业务低峰做。所以容量规划时宁可多给 30%,也不要为了省一点钱卡在临界值上——一次缩容迁移的停机成本远高于多买的容量。
Q5:加密云盘会不会变慢?
在支持硬件卸载的实例上(AWS Nitro、阿里云与腾讯云的主流规格),加解密由专用硬件完成,性能影响可以忽略。真正的代价不在性能,而在运维:未加密盘不能原地加密,必须走"快照 → 加密复制 → 新建盘";跨账号共享加密快照必须同时共享 KMS 密钥。这两条要在演练里跑一遍。
Q6:多台服务器能不能挂同一块云盘?
默认不能,强行挂会损坏文件系统。三家都提供"共享块存储"能力(AWS io1/io2 Multi-Attach 最多 16 个实例、同可用区;阿里云共享块存储;腾讯云共享云硬盘),但必须配合集群文件系统(GFS2/OCFS2)或集群感知应用(如 Oracle RAC)。如果只是要"共享目录",用文件存储(NFS/SMB)更简单可靠,参见 10-24 那篇。
Q7:系统盘和数据盘要不要分开?
要分。系统盘只需要容纳 OS 与应用二进制,一般 50–100 GB 足够,用最便宜的通用型;数据盘按负载单独选型、单独扩容、单独做快照策略。分开的好处是:系统盘可以直接用镜像重建,数据盘独立保留;扩容与快照策略可以分别设置;成本上也不会为系统盘多买用不到的 IOPS。
Q8:跨可用区、跨地域怎么迁移一块云盘?
云盘是可用区级资源,不能跨 AZ 挂载。标准路径是:打快照 → 复制快照到目标 AZ/地域 → 用快照创建新盘 → 挂载到目标实例 → 校验数据后切流量。跨地域复制会按流量计费,且复制是异步的;如果是加密盘,目标端必须有对应密钥权限。整个流程要纳入演练,不要只在文档里写。
Q9:本地盘便宜又快,为什么不全用本地盘?
本地盘(Instance Store)的性价比确实极高,但它有两个硬约束:实例停止或终止即数据丢失,且没有快照能力。它适合"可重建、可重放"的数据——缓存、Spark shuffle、临时计算中间结果、只读副本的本地缓存。核心数据放本地盘,等于把可用性押在"实例永不重启"上,这在云上不成立。
Q10:三云的盘性能指标能直接对比吗?
只能对比量级,不能对比数字。三家的标称口径不同:AWS 的 gp3 给"基线 + 最大"两档,阿里云 ESSD 按 PL 档位给单盘上限,腾讯云按类型给区间,且都受实例规格限制。正确做法是用同一套压测方法在目标实例上实测(相同块大小、相同队列深度、相同 IO 模式),再换算成单位成本(每千 IOPS 每月多少钱),而不是拿规格页的数字做横向排名。