EC2存储 #

一、EC2存储概述 #

1.1 存储类型 #

EC2实例支持多种存储类型:

text
EC2存储类型:
├── EBS(Elastic Block Store)
│   └── 块存储,持久化
│   └── 可独立于实例存在
│
├── 实例存储(Instance Store)
│   └── 临时存储,物理磁盘
│   └── 随实例生命周期
│
├── EFS(Elastic File System)
│   └── 网络文件系统
│   └── 多实例共享
│
└── S3
    └── 对象存储
    └── 通过API访问

1.2 存储类型对比 #

特性 EBS 实例存储 EFS
持久性 持久 临时 持久
性能 最高
共享 单实例 单实例 多实例
独立性 独立于实例 随实例 独立服务
成本 包含在实例 较高

二、EBS(弹性块存储) #

2.1 EBS概述 #

text
EBS特点:
├── 块级存储卷
├── 持久化存储
├── 可独立于实例存在
├── 支持快照备份
├── 支持加密
└── 可动态调整大小

2.2 EBS卷类型 #

text
EBS卷类型:
├── SSD类型
│   ├── gp3(通用型SSD)
│   │   └── 平衡价格和性能
│   │   └── 适用:大多数工作负载
│   │
│   ├── gp2(通用型SSD,旧版)
│   │   └── 基于卷大小扩展性能
│   │
│   └── io2 Block Express
│       └── 最高性能SSD
│       └── 适用:关键业务应用
│
└── HDD类型
    ├── st1(吞吐优化HDD)
    │   └── 高吞吐量
    │   └── 适用:大数据、日志
    │
    └── sc1(冷HDD)
        └── 低成本
        └── 适用:冷数据存储

2.3 EBS卷类型对比 #

卷类型 最大IOPS 最大吞吐量 最大大小 适用场景
gp3 16,000 1,000 MB/s 16 TB 通用工作负载
gp2 16,000 250 MB/s 16 TB 通用工作负载
io2 64,000 1,000 MB/s 16 TB 数据库
st1 500 500 MB/s 16 TB 大数据
sc1 250 250 MB/s 16 TB 冷数据

2.4 创建EBS卷 #

通过控制台创建 #

text
创建EBS卷步骤:
├── 1. 进入EC2控制台
├── 2. 选择"卷" → "创建卷"
├── 3. 选择卷类型
├── 4. 设置大小
├── 5. 选择可用区
├── 6. 配置加密(可选)
└── 7. 创建卷

通过CLI创建 #

bash
aws ec2 create-volume \
    --volume-type gp3 \
    --size 100 \
    --availability-zone us-east-1a \
    --encrypted

2.5 附加EBS卷 #

bash
aws ec2 attach-volume \
    --volume-id vol-1234567890abcdef0 \
    --instance-id i-1234567890abcdef0 \
    --device /dev/sdf

2.6 分离EBS卷 #

bash
aws ec2 detach-volume --volume-id vol-1234567890abcdef0

2.7 在Linux中使用EBS卷 #

bash
lsblk

sudo mkfs -t xfs /dev/xvdf

sudo mkdir /data

sudo mount /dev/xvdf /data

echo "/dev/xvdf /data xfs defaults 0 0" | sudo tee -a /etc/fstab

三、EBS性能优化 #

3.1 gp3卷性能配置 #

text
gp3性能参数:
├── 基准性能
│   ├── 3,000 IOPS
│   └── 125 MB/s吞吐量
│
├── 可配置性能
│   ├── 最高16,000 IOPS
│   └── 最高1,000 MB/s吞吐量
│
└── 独立配置
    └── IOPS和吞吐量可独立设置

3.2 IOPS优化 #

text
IOPS优化建议:
├── 选择合适的卷类型
│   └── 高IOPS需求选择io2
│
├── 预配置IOPS
│   └── gp3可单独配置IOPS
│
├── 使用RAID 0
│   └── 多卷并行提升IOPS
│
└── 优化I/O大小
    └── 大I/O提升吞吐量

3.3 吞吐量优化 #

text
吞吐量优化建议:
├── 选择合适的卷类型
│   └── 高吞吐需求选择st1
│
├── 配置吞吐量
│   └── gp3可单独配置吞吐量
│
└── 优化I/O模式
    └── 顺序读写提升吞吐量

3.4 RAID配置 #

text
RAID配置建议:
├── RAID 0(条带)
│   └── 提升性能
│   └── 不提供冗余
│   └── 适用:性能优先场景
│
├── RAID 1(镜像)
│   └── 提供冗余
│   └── 降低写性能
│   └── 适用:数据安全优先
│
└── 不推荐RAID 5/6
    └── 性能开销大

RAID 0配置示例 #

bash
sudo mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/xvdf /dev/xvdg

sudo mkfs -t xfs /dev/md0

sudo mount /dev/md0 /data

四、EBS快照 #

4.1 快照概述 #

text
快照特点:
├── EBS卷的时间点备份
├── 增量备份
├── 存储在S3
├── 可跨区域复制
├── 可用于创建新卷或AMI
└── 支持加密

4.2 创建快照 #

通过控制台创建 #

text
创建快照步骤:
├── 1. 进入EC2控制台
├── 2. 选择"快照" → "创建快照"
├── 3. 选择源卷
├── 4. 添加描述和标签
└── 5. 创建快照

通过CLI创建 #

bash
aws ec2 create-snapshot \
    --volume-id vol-1234567890abcdef0 \
    --description "My backup snapshot"

4.3 从快照恢复 #

bash
aws ec2 create-volume \
    --snapshot-id snap-1234567890abcdef0 \
    --availability-zone us-east-1a

4.4 快照最佳实践 #

text
快照管理建议:
├── 定期备份
│   └── 使用AWS Backup自动备份
│
├── 快照策略
│   ├── 保留期限
│   └── 备份频率
│
├── 跨区域复制
│   └── 灾难恢复
│
├── 标签管理
│   └── 为快照添加标签
│
└── 成本优化
    └── 删除不需要的快照

4.5 EBS快照归档 #

text
快照归档:
├── 将快照归档到归档层
├── 成本降低75%
├── 恢复时间24-72小时
└── 适用:长期保留的快照

五、实例存储 #

5.1 实例存储概述 #

text
实例存储特点:
├── 物理连接到宿主机
├── 临时存储
├── 随实例生命周期
├── 最高性能
├── 不额外收费
└── 数据不持久

5.2 支持实例存储的实例类型 #

实例族 实例存储类型
c5d NVMe SSD
d3 HDD
h1 HDD
i3 NVMe SSD
m5d NVMe SSD
r5d NVMe SSD
x1e SSD

5.3 实例存储使用场景 #

text
实例存储适用场景:
├── 临时数据缓存
├── 缓冲区
├── 临时文件
├── 分布式数据存储
│   ├── Hadoop HDFS
│   ├── Cassandra
│   └── MongoDB
└── 高性能临时存储需求

5.4 实例存储注意事项 #

text
实例存储注意:
├── 数据不持久
│   └── 实例停止/终止数据丢失
│
├── 实例故障数据丢失
│   └── 宿主机故障导致数据丢失
│
├── 无法恢复
│   └── 数据无法从快照恢复
│
└── 需要应用层处理持久化
    └── 定期同步到持久存储

六、EFS与EC2集成 #

6.1 EFS概述 #

text
EFS特点:
├── 网络文件系统(NFS)
├── 弹性扩展
├── 多实例共享
├── 按使用量付费
└── 高可用

6.2 挂载EFS #

bash
sudo yum install -y amazon-efs-utils

sudo mkdir /efs

sudo mount -t efs fs-12345678:/ /efs

echo "fs-12345678:/ /efs efs defaults,_netdev 0 0" | sudo tee -a /etc/fstab

6.3 EFS使用场景 #

text
EFS适用场景:
├── 共享文件存储
├── Web服务器内容
├── 用户主目录
├── 构建环境
└── 容器持久存储

七、存储加密 #

7.1 EBS加密 #

text
EBS加密特点:
├── 使用AWS KMS
├── 加密卷内数据
├── 加密快照
├── 加密传输中数据
├── 透明加密
└── 性能影响小

7.2 启用EBS加密 #

text
启用加密方式:
├── 账户级别默认加密
│   └── EC2设置 → EBS加密
│
├── 创建卷时启用
│   └── 选择加密选项
│
└── 从加密快照创建
    └── 自动继承加密

7.3 加密最佳实践 #

text
加密建议:
├── 启用账户默认加密
├── 使用客户托管密钥
├── 定期轮换密钥
├── 控制密钥访问权限
└── 审计密钥使用

八、存储监控 #

8.1 EBS监控指标 #

指标 说明
VolumeReadOps 读取IOPS
VolumeWriteOps 写入IOPS
VolumeReadBytes 读取吞吐量
VolumeWriteBytes 写入吞吐量
VolumeQueueLength I/O队列长度
VolumeThroughputPercentage 吞吐量百分比
VolumeConsumedReadWriteOps 消耗的IOPS

8.2 监控最佳实践 #

bash
aws cloudwatch put-metric-alarm \
    --alarm-name "HighIOPS" \
    --alarm-description "IOPS超过阈值" \
    --metric-name VolumeReadOps \
    --namespace AWS/EBS \
    --statistic Average \
    --period 300 \
    --threshold 10000 \
    --comparison-operator GreaterThanThreshold \
    --dimensions Name=VolumeId,Value=vol-1234567890abcdef0

九、存储最佳实践 #

9.1 选择合适的存储类型 #

text
存储选择指南:
├── 通用工作负载
│   └── gp3
│
├── 高性能数据库
│   └── io2 Block Express
│
├── 大数据分析
│   └── st1
│
├── 冷数据存储
│   └── sc1
│
├── 临时高性能存储
│   └── 实例存储
│
└── 共享文件存储
    └── EFS

9.2 性能优化建议 #

text
性能优化:
├── 预热新卷
│   └── 初始化所有块
│
├── 使用正确的I/O调度器
│   └── noop或deadline
│
├── 调整文件系统参数
│   └── noatime挂载选项
│
├── 使用RAID提升性能
│   └── RAID 0条带化
│
└── 监控性能指标
    └── 根据监控调整配置

9.3 成本优化建议 #

text
成本优化:
├── 选择合适的卷类型
├── 定期审查卷使用情况
├── 删除未使用的卷
├── 使用生命周期管理快照
├── 考虑快照归档
└── 合理配置卷大小

十、小结 #

本章介绍了EC2存储:

内容 要点
存储类型 EBS、实例存储、EFS
EBS卷类型 gp3、io2、st1、sc1
快照 增量备份、跨区域复制
性能优化 IOPS、吞吐量、RAID
加密 KMS加密、透明加密

下一步学习 #

了解EC2存储后,接下来可以:

  1. Lambda无服务器 - 学习无服务器计算
  2. S3基础 - 学习对象存储
  3. RDS关系数据库 - 学习数据库服务
最后更新:2026-03-28