柳嘉希

硕士研究生毕业生

软件工程师 | 可扩展的API · 网络爬虫 · 数据集成 · Vibe代码清理专家

AWS 存储复习:EBS、Instance Store、S3、EFS、FSx、Storage Gateway 与 S3 存储类

AWS 存储可以按访问模型分成块存储、对象存储和文件存储。

块存储

块存储像硬盘,适合频繁更新和低延迟访问。

EC2 Instance Store 是临时本地存储。性能高,但实例停止或终止后数据可能丢失。

EBS 是持久块存储,常挂载给一个 EC2 实例使用。

EBS 快照是时间点备份:

  • 增量保存变化的数据块
  • 存储在 S3 中
  • 可用于恢复、迁移、扩容和克隆

对象存储:S3

S3 存储对象,对象由数据、元数据和唯一 key 组成。S3 没有真正的文件夹,a/b/c.png 只是对象 key 看起来像路径。

S3 适合:

  • 图片和静态资源
  • 日志
  • 备份
  • 数据湖
  • 大文件归档

S3 存储类

S3 Standard:默认选择,多 AZ,高可用,适合频繁访问。

S3 Express One Zone:单 AZ,低延迟,适合可重建的高速数据。

S3 Standard-IA:不频繁访问,但需要秒级取回,多 AZ。

S3 One Zone-IA:更便宜,单 AZ,适合可重建数据。

S3 Intelligent-Tiering:访问模式不确定时自动分层。

S3 Glacier Instant Retrieval:很少访问但需要毫秒级取回。

S3 Glacier Flexible Retrieval:分钟到小时级取回,适合备份和灾备。

S3 Glacier Deep Archive:最低成本,取回通常 12 小时以上,适合长期合规留存。

生命周期策略

生命周期策略可以自动转换存储类或删除过期对象。

例如:

  • 30 天后转 Standard-IA
  • 180 天后转 Glacier
  • 7 年后删除

文件存储

EFS 是托管 NFS 文件系统,多个 EC2 可以同时挂载,容量自动伸缩。

FSx 提供特定文件系统能力:

  • FSx for Windows
  • FSx for Lustre
  • FSx for ONTAP
  • FSx for OpenZFS

Storage Gateway

Storage Gateway 是混合云存储服务,让本地系统访问云存储。常用于备份、归档、灾备和本地缓存。

延伸理解

复习这篇时,不要只记住名词,要把重点放在 S3、EBS、EFS、生命周期策略、存储类别和成本/性能/访问模式权衡。这类知识如果只停留在定义层面,很容易在面试或项目中答得很散。更好的理解方式是把它放进一个具体场景:谁在调用它,输入从哪里来,失败后谁负责恢复,数据或状态会不会被重复处理。

  • AWS 复习不能只背服务名,要把服务放进真实架构:入口、计算、网络、存储、权限、监控和成本。
  • 每个服务都应该问三个问题:解决什么问题、由谁运维、失败时影响范围是什么。
  • 考试和实际项目都很重视边界:Region 与 AZ、托管服务与自管理服务、有状态与无状态资源。

在真实项目中,可以把它当成一个判断框架:先确认输入、约束、失败场景和可观测性,再决定具体工具或写法。 如果一个方案看起来很简单,要继续追问它在规模扩大、权限变化、异常恢复和团队协作下是否仍然成立。

实践检查清单

  • 明确这个知识点在系统中的位置:是开发时约束、运行时能力、基础设施能力,还是协作流程。
  • 写出一个最小可运行例子,并补一个失败例子;只会写 happy path 说明理解还不够稳。
  • 记录常见误用:例如边界条件、权限假设、性能假设、同步/异步差异或环境差异。
  • 把概念和项目经历关联起来:如果面试被追问,可以用自己的项目说明为什么这样选。
  • 最后用一句话总结取舍:它牺牲了什么,换来了什么。

自测问题

  1. 这个主题解决的核心问题是什么?
  2. 如果不用当前方案,还有哪些替代方案?代价是什么?
  3. 最容易出错的边界条件在哪里?
  4. 如何在代码、测试或监控中验证它真的可靠?

项目化应用场景

可以把这类知识放到一个小型 SaaS 部署场景里理解:用户通过域名访问 CloudFront 或 Load Balancer,请求进入公有子网,应用运行在 EC2、ECS 或 Lambda,数据库和缓存放在私有子网,日志进入 CloudWatch,权限由 IAM 控制,静态文件放在 S3。复习每个 AWS 服务时,都要问它在这条链路中的位置是什么:入口、计算、网络、存储、安全、监控还是成本控制。这样比孤立背服务定义更容易判断选型。

常见误区:

  • 只背服务名,不能画出请求链路。
  • 忽略默认网络边界,把数据库放到公网。
  • 没有估算成本和失败影响范围。