EBS 快照生命周期 DLM
Amazon Data Lifecycle Manager 用策略自动管理 EBS 快照:按 cron 计划创建、按份数或时间区间保留、可选跨区域复制与归档到快照归档层。它替代了自建轮换脚本,把『谁负责删旧快照』从人的记忆变成服务端规则。策略是按标签或卷类型匹配目标卷的,匹配不到就什么都不做,也不会报错。
基本信息
| 适用平台 | AWS EC2 / EBS,需创建或指定执行角色 |
|---|---|
| 创建参数 | Schedule(cron 表达式)、RetainRule、TargetTags 或按卷类型选择 |
| 扩展能力 | CrossRegionCopyRules 跨区复制、归档到 snapshot archive 层 |
| 执行角色 | AWSDataLifecycleManagerDefaultRole 或自定义角色,需快照与 KMS 相关权限 |
典型使用场景
- 生产卷每日快照并保留 7 份,替代人工轮换脚本
- 按标签统一纳管:给需保护的卷打上 Backup=daily 标签即自动纳入
- 跨区域复制:策略里同时配置异地副本,满足地域级容灾
- 成本优化:到期自动删除并归档旧快照,避免快照费用持续增长
- 合规留存:按月份保留长期快照,供审计调取
创建生命周期策略(示意)
创建生命周期策略(示意)
aws dlm create-lifecycle-policy \
--description "daily-ebs-prod" --state ENABLED \
--execution-role-arn arn:aws:iam::123456789012:role/AWSDataLifecycleManagerDefaultRole \
--policy-details file://dlm-policy.json
# dlm-policy.json 关键内容:
# Schedule: cron(0 2 * * ? *) 每天 02:00 创建
# RetainRule.Count: 7 保留 7 份
# TargetTags: [{Key: Backup, Value: daily}]
# CrossRegionCopyRules: 复制到异地区域
aws dlm get-lifecycle-policies --state ENABLED # 核对策略状态
aws ec2 describe-snapshots --owner-ids self --filters Name=tag:dlm:managed \
--query 'Snapshots[*].[SnapshotId,StartTime,VolumeId]'排查要点
| 现象 | 常见原因 | 检查方式 |
|---|---|---|
| 策略存在但没产生快照 | 标签或卷类型没匹配上 | 核对 TargetTags 与实际卷标签 |
| 快照创建失败 | 角色缺少 CreateSnapshot 或 KMS 权限 | 看策略的执行错误码与 CloudTrail |
| 旧快照没被删除 | 保留规则与预期不符或存在额外规则 | 回读策略详情,比较实际保留份数 |
| 跨区副本缺失 | 复制规则缺少目标区密钥权限 | 检查目标区域是否存在对应快照 |
默认快照不具备应用一致性:需要一致性的场景要结合预置脚本冻结文件系统或暂停写入,或者选择支持应用一致快照的方案。
同一卷可以被多条策略匹配,保留份数按各自规则分别计算,容易出现比预期更多的快照;上线前先用 describe-lifecycle-policies 列出全部策略,确认没有重叠规则。归档到快照归档层成本更低,但有最短保存期限与取回耗时,具体限制以平台文档为准。