第三章:AWS存储全家桶——S3、EBS、EFS与FSx的选型实战

大家好,我是老张。今天我们来聊聊AWS的存储体系。说实话,存储这块是云计算的基石,也是很多新手容易踩坑的地方。我见过不少团队,因为存储选型不当,导致性能瓶颈或者成本失控。嗯,今天我们就把它彻底讲透。

3.1 S3存储类与生命周期策略

S3,说白了就是对象存储。它不像你电脑上的硬盘,而是一个可以无限扩展的“大仓库”。我个人习惯把S3当作云上的“文件保险柜”,什么图片、视频、日志、备份,统统往里扔。

3.1.1 S3存储类详解

S3提供了多种存储类,每种都有不同的访问频率和成本。我刚开始用的时候,也搞混过。后来总结了一个口诀:热数据用标准,冷数据用冰川

存储类 适用场景 访问频率 成本
S3 Standard 频繁访问的数据,比如网站图片、视频 较高
S3 Intelligent-Tiering 访问模式不确定的数据 自动优化 中等
S3 Standard-IA 不常访问但需要快速恢复的数据 较低
S3 One Zone-IA 可重建的非关键数据 更低
S3 Glacier 归档数据,比如审计日志 极少 极低
S3 Glacier Deep Archive 长期保存的合规数据 几乎不访问 最低
我的经验: 如果你不确定数据会被访问多少次,直接用Intelligent-Tiering。它会自动帮你切换存储类,省心又省钱。我曾经有个项目,日志数据量巨大,用了这个策略,成本直接降了40%。

3.1.2 生命周期策略

生命周期策略,就是给数据定一个“退休计划”。你可以设置规则,让数据在30天后自动转到IA,90天后转到Glacier,365天后自动删除。

举个例子,假设你有一个日志桶:

# 生命周期规则示例
{
  "Rules": [
    {
      "Id": "LogRetention",
      "Status": "Enabled",
      "Filter": {
        "Prefix": "logs/"
      },
      "Transitions": [
        {
          "Days": 30,
          "StorageClass": "STANDARD_IA"
        },
        {
          "Days": 90,
          "StorageClass": "GLACIER"
        }
      ],
      "Expiration": {
        "Days": 365
      }
    }
  ]
}
注意: 生命周期策略一旦设置,数据就会自动迁移。我曾经有个同事,不小心把生产数据设置了7天删除,结果...嗯,还好有版本控制救了他一命。所以,一定要开启版本控制

3.2 EBS卷类型与快照

EBS,就是云上的虚拟硬盘。它挂载在EC2实例上,就像你电脑里的C盘、D盘。但EBS有很多种类型,选错了,性能可能差10倍。

3.2.1 EBS卷类型

EBS主要分两类:SSD和HDD。SSD适合数据库、高IOPS场景;HDD适合日志、大数据处理。

类型 最大IOPS 最大吞吐量 适用场景
gp3 (通用型SSD) 16,000 1000 MB/s 大多数工作负载,性价比高
io2 (高IOPS SSD) 256,000 4000 MB/s 数据库、延迟敏感应用
st1 (吞吐优化HDD) 500 500 MB/s 大数据、日志处理
sc1 (冷存储HDD) 250 250 MB/s 冷数据、备份
避坑指南: 我曾经给一个MySQL数据库配了st1(HDD),结果IOPS完全不够用,数据库直接卡死。后来换成了io2,问题才解决。记住:数据库一定要用SSD

3.2.2 快照与备份

快照,就是EBS卷的“照片”。你可以随时拍一张,以后可以恢复到任意时间点。我个人习惯每天自动拍一次快照,保留7天。

# 创建快照的命令
aws ec2 create-snapshot --volume-id vol-1234567890abcdef0 --description "Daily backup"
小技巧: 快照是增量备份的。第一次拍会全量,后面只保存变化的部分。所以,频繁拍快照并不会太贵。我有个项目,每15分钟拍一次快照,成本完全可控。

3.3 EFS与FSx文件系统选型

文件系统,就是多个服务器可以共享的存储。比如,你的Web服务器集群需要共享一个目录,那就用EFS或FSx。

3.3.1 EFS(弹性文件系统)

EFS是AWS自家的NFS文件系统。它最大的特点就是弹性扩展——你不需要提前规划容量,用多少算多少。我特别喜欢它的一点是,多个EC2实例可以同时挂载同一个EFS,数据实时同步。

适用场景:

  • Web服务器共享静态文件
  • 大数据分析(如Spark)
  • 容器化应用的持久化存储
注意: EFS的性能模式有两种:Bursting(突发模式)和Provisioned(预置模式)。如果你有持续的高吞吐需求,记得用Provisioned。我曾经有个项目,日志写入量很大,用Bursting模式经常被打回,后来换成Provisioned才稳定。

3.3.2 FSx(托管文件系统)

FSx是AWS提供的托管文件系统家族。它支持多种协议,比如Windows的SMB、Lustre(高性能计算)、NetApp ONTAP等。

类型 协议 适用场景
FSx for Windows SMB Windows应用、Active Directory集成
FSx for Lustre Lustre 高性能计算、机器学习训练
FSx for NetApp ONTAP NFS/SMB 企业级存储迁移、混合云
FSx for OpenZFS NFS 数据库、开发测试环境
我的建议: 如果你在Windows环境下,直接用FSx for Windows。如果你做AI训练,FSx for Lustre是首选。我有个做自动驾驶的朋友,用Lustre做训练数据存储,吞吐量直接拉满。

3.4 选型总结

好了,我们来总结一下。选存储,其实就三个问题:

  1. 数据是对象还是文件? 对象用S3,文件用EFS/FSx。
  2. 性能要求高不高? 高IOPS用EBS io2,高吞吐用FSx Lustre。
  3. 成本敏感吗? 冷数据用S3 Glacier,热数据用S3 Standard。

你想想看,是不是很简单?其实AWS的存储体系,说白了就是“按需选择”。没有最好的,只有最合适的。

最后一句: 我建议你在做选型前,先画一个数据流图。把数据的来源、去向、访问频率都标出来。这样,选型就一目了然了。我曾经靠这个办法,帮一个客户省了60%的存储成本。

好了,今天就聊到这里。下一章,我们聊聊网络与安全。记得关注公众号:蓝海资料掘金营,微信deep3321,我们下期见。