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存储后,接下来可以:
- Lambda无服务器 - 学习无服务器计算
- S3基础 - 学习对象存储
- RDS关系数据库 - 学习数据库服务
最后更新:2026-03-28