知识卡片

AWS EBS/EFS/S3三种存储服务的场景选型对比

普通读书笔记卡

内容

以AWS为例,正好对应[[块文件对象三种存储类型按外部访问接口而非内部 结构划分]]的三种类型,能看出选型的现实考量。EBS(块存储):购买后在 EC2里是一块未格式化的原始块设备,只能和EC2同时创建、只能被单个节点 挂载,难以共享——单机时代天经地义,云计算和分布式时代却成了要命的 缺陷;适合系统引导卷、追求磁盘I/O的大型工作负载、低时延应用(如能直接 访问块设备的Oracle数据库),但除少数特殊工作负载外,不建议作为容器 编排系统的主要外置存储。EFS(文件存储):本质是完全托管在云端的NFS, 创建好文件系统、配好网络信息就能用,不依附任何EC2主机,兼容POSIX的 系统都能直接挂载;扩缩完全自动实时(不用像EBS那样预置或手动缩容), 性能虽比不上顶级EBS但足够满足绝大多数应用,且能被成百上千个EC2实例 共享——综合性能、弹性、可共享性,是大部分容器工作负载的首选。S3(对象 存储):以REST Endpoint对外提供访问,本该由程序代码直接调用而非靠 操作系统/编排系统挂载(真要挂载需借助AWS Storage Gateway转成NFS/SMB/ iSCSI);性能是三者中最差的,但胜在”Simple”——不用写一行代码就能通过 HTTP直接读写,不用操心容量维护和数据丢失风险,价格比EBS/EFS低一到两个 数量级;适合备份还原、数据归档、灾难恢复、静态页面托管、多媒体分发这类 对延迟不敏感、看重成本和易用性的场景。这个对比印证了没有哪种存储方案 能包打天下——不同业务场景对性能、共享性、成本的权重不同,选择自然 不同。

参考来源

- 位置:《凤凰架构:构建可靠的大型分布式系统》第13章"持久化存储"13.2.4节 "容器插件生态"(源文件:_epub-src对应OEBPS/Text/chapter162.xhtml) - 结论依据:原文详述AWS EBS只能单节点挂载但适合低时延数据库、EFS作为 托管NFS可被大量实例共享是容器工作负载首选、S3以REST接口和低成本适合 备份归档等场景,并指出不会有哪一种存储方案能包打天下,直接支撑本卡片 结论。 - 原始内容:EBS只允许被单个节点挂载,难以共享……笔者并不建议将它作为 容器编排系统的主要外置存储来使用……考虑到EFS的性能、动态弹性、可 共享等因素,笔者给出的明确建议是它可以作为大部分容器工作负载的首选 存储……S3的性能比起EBS和EFS来说是相对最差的,但它的优势在于……简单。