Amazon Elastic Compute Cloud
Linux 实例用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

监控卷修改的进度

被修改的 EBS 卷将经历一系列状态。当您从控制台、CLI、API 或软件开发工具包发出 ModifyVolume 指令后,卷首先进入 Modifying 状态,然后是 Optimizing 状态,最后是 Complete 状态。此时,卷已准备好做进一步的修改。在极少数情况下,暂时的 AWS 故障可能会导致 Failed 状态。如果发生这种情况,请重试修改。

大小更改通常需要几秒钟才能完成,并在卷处于 Optimizing 状态后生效。

性能 (IOPS) 更改可能需要几分钟到几小时才能完成,具体视所做的配置更改而定。

新配置生效最长需要 24 个小时,在某些情况下可能会更长,例如在未完全初始化卷的情况下。通常,完全使用的 1 TiB 卷需要约 6 个小时才能迁移到新的性能配置。

当卷处于 optimizing 状态时,卷性能介于源配置规范和目标配置规范之间。过渡卷的性能将不会低于源卷的性能。如果您降级 IOPS,则过渡卷的性能不会低于目标卷的性能。

您可以通过检查 AWS 管理控制台、使用 Amazon EC2 API/CLI 查询卷的状态或访问发送到 Amazon CloudWatch Events 的指标来监控修改进度。以下过程说明了这些方法。

从控制台监控修改进度

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 选择 Volumes,然后选择要检查的卷。卷的状态显示在 State 列中。在下面的示例中,修改状态为 completed。此状态信息也显示在详细信息窗格的 State 字段中。

  3. 打开 State 字段旁边的信息图标可显示有关最近一次修改操作完成前后的信息,如下所示。

例 从命令行监控修改进度

使用 describe-volumes-modifications 查看修改进度。本例调用了上面的卷 vol-11111111111111111 和另一个卷 vol-22222222222222222

aws ec2 describe-volumes-modifications --region us-east-1 --volume-id vol-11111111111111111 vol-22222222222222222

命令返回一个或多个 VolumesModification 对象。下面是示例输出。第一个对象与上面显示的原始 modify-volume 命令的输出几乎相同。但是,它没有应用额外的修改。

{ "VolumesModifications": [ { "TargetSize": 200, "TargetVolumeType": "io1", "ModificationState": "modifying", "VolumeId": "vol-11111111111111111", "TargetIops": 10000, "StartTime": "2017-01-19T22:21:02.959Z", "Progress": 0, "OriginalVolumeType": "gp2", "OriginalIops": 300, "OriginalSize": 100 }, { "TargetSize": 2000, "TargetVolumeType": "sc1", "ModificationState": "modifying", "VolumeId": "vol-22222222222222222", "StartTime": "2017-01-19T22:23:22.158Z", "Progress": 0, "OriginalVolumeType": "gp2", "OriginalIops": 300, "OriginalSize": 1000 } ] }

下一个示例查询区域中修改状态为 optimizingcompleted 的所有卷,然后筛选和格式化结果以只显示于 2017 年 2 月 1 日及之后做出的修改。

aws ec2 describe-volumes-modifications --filters Name=modification-state,Values="optimizing","completed" --region us-east-1 --query "VolumesModifications[?StartTime>='2017-02-01'].{ID:VolumeId,STATE:ModificationState}"

在本例中,查询返回有关两个卷的信息:

[ { "STATE": "optimizing", "ID": "vol-06397e7a0eEXAMPLE" }, { "STATE": "completed", "ID": "vol-bEXAMPLE" } ]

使用 CloudWatch Events 监控修改进度

借助 CloudWatch Events,您可以为卷修改事件创建通知规则,以发送文本消息或执行 Lambda 函数。

  1. 通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/

  2. 依次选择 EventsCreate rule

  3. 对于 Build event pattern to match events by service,选择 Custom event pattern

  4. 对于 Build custom event pattern,将内容替换为以下代码:

    { "source": [ "aws.ec2" ], "detail-type": [ "EBS Volume Notification" ], "detail": { "event": [ "modifyVolume" ] } }

    选择 Save

    典型的事件输出应与以下内容类似:

    Body: { "version": "0", "id": "1ea2ace2-7790-46ed-99ab-d07a8bd68685", "detail-type": "EBS Volume Notification", "source": "aws.ec2", "account": "065441870323", "time": "2017-01-12T21:09:07Z", "region": "us-east-1", "resources": [ "arn:aws:ec2:us-east-1:065441870323:volume/vol-03a55cf56513fa1b6" ], "detail": { "result": "optimizing", "cause": "", "event": "modifyVolume", "request-id": "auto-58c08bad-d90b-11e6-a309-b51ed35473f8" } }

您可以使用规则生成有关 Amazon SNS 的通知消息,或调用 Lambda 函数来响应匹配事件。