Amazon Elastic Compute Cloud
Windows 实例用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

Windows 上修改 EBS 卷的大小、IOPS 或类型

如果您的 Amazon EBS 卷连接到最新一代的 EC2 实例类型,您可以在不分离它的情况下增加其大小、更改其卷类型或 (对于 io1 卷) 调整其 IOPS 性能。您也可以将这些更改应用到已分离的卷。有关最新一代实例类型的更多信息,请参阅最新一代实例

如果您使用的是上一代实例类型,或者如果您在尝试修改卷时遇到错误,请按照 附录:启动和停止实例以修改 EBS 卷 中的步骤完成操作。

一般来说,修改卷涉及以下步骤:

  1. 发出修改命令。有关更多信息,请参阅 从控制台修改 EBS 卷从命令行修改 EBS 卷

  2. 监视修改进度。有关更多信息,请参阅 监控卷修改的进度

  3. 如果修改了卷的大小,请扩展卷的文件系统以利用增加的存储容量。有关更多信息,请参阅 调整卷大小后扩展 Windows 文件系统

此外,您还可以使用 Amazon CloudWatch EventsAWS CloudFormation 来自动化与卷修改相关联的操作。

修改卷配置是免费的。修改开始后,系统将按新卷配置价格计费。有关更多信息,请参阅 Amazon EBS 定价页面上的 Amazon Elastic Block Store 部分。

有关更多信息,请参阅 修改 EBS 卷的注意事项

重要

在修改包含有用数据的卷之前,最佳实践是创建卷的快照 (如果您需要回滚您的更改)。有关 EBS 快照的信息,请参阅创建 Amazon EBS 快照

从控制台修改 EBS 卷

下面的过程说明如何从 Amazon EC2 控制台应用可用的卷修改。

使用控制台修改 EBS 卷

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

  2. 选择 Volumes,选择要修改的卷,然后依次选择 ActionsModify Volume

  3. Modify Volume 窗口显示卷 ID 和卷的当前配置,包括类型、大小和 IOPS。您可以在单个操作中更改任何或所有这些设置。设置新的配置值,如下所述:

    • 要修改类型,请为 Volume Type 选择一个值。

    • 要修改大小,请为 Size 输入一个允许的整数值。

    • 如果选择 Provisioned IOPS (IO1) 作为卷类型,请为 IOPS 输入一个允许的整数值。

  4. 指定要应用的所有修改后,依次选择 ModifyYes

  5. 在扩展卷的文件系统以使用新的存储容量之前,修改卷大小没有实际效果。有关更多信息,请参阅调整卷大小后扩展 Windows 文件系统

从命令行修改 EBS 卷

下面的示例演示如何使用 AWS CLI 从命令行修改 EBS 卷。根据默认配置,您可能需要指定区域和可用区等信息。要修改的源卷的 ID 是必需的,并且您必须具有适当的权限才能执行操作。当 io1 卷是修改目标时,您必须指定其预配置 IOPS 的级别。可以在单个命令中执行多个修改操作 (以更改容量、IOPS 或类型)。

例如,EBS 卷配置如下:

  • 卷 ID: vol-11111111111111111

  • 卷大小:100 GiB

  • 卷类型: gp2

您可以将卷配置更改为以下内容:

  • 卷大小:200 GiB

  • 卷类型: io1

  • 配置级别:10000 IOPS

使用下面的命令应用上述修改:

Copy
aws ec2 modify-volume --region us-east-1 --volume-id vol-11111111111111111 --size 200 --volume-type io1 --iops 10000

此命令产生的输出与以下内容类似:

{
    "VolumeModification": {
        "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
    }
}

注意

在扩展卷的文件系统以使用新的存储容量之前,修改卷大小没有实际效果。有关更多信息,请参阅调整卷大小后扩展 Windows 文件系统

监控卷修改的进度

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

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

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

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

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

您可以通过检查 AWS 管理控制台、使用 AWS 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

Copy
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 日及之后做出的修改。

Copy
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,将内容替换为以下代码:

    Copy
    { "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 的通知消息,或调用 AWS Lambda 函数来响应匹配事件。

调整卷大小后扩展 Windows 文件系统

使用 Windows 磁盘管理实用工具将磁盘大小扩展为新的卷大小。一旦卷进入 Optimizing 状态,您就可以开始调整文件系统的大小。

重要

在扩展包含有用数据的文件系统之前,最佳实践是创建包含它的卷的快照 (如果您需要回滚您的更改)。有关 EBS 快照的信息,请参阅创建 Amazon EBS 快照

扩展 Windows 文件系统

  1. 使用远程桌面登录 Windows 实例。

  2. Run 对话框中,键入 diskmgmt.msc 并按 Enter。然后,磁盘管理实例程序随之打开。

     Windows Server 磁盘管理实用工具
  3. Disk Management 菜单上,选择 ActionRescan Disks

  4. 打开扩展驱动器的上下文 (右键单击) 菜单,然后选择扩展卷

     Windows Server 磁盘管理实用工具
  5. 在扩展卷向导中,选择 Next。对于 Select the amount of space in MB,输入扩展卷的兆字节数。通常,您会将此设置为最大可用空间。请注意,Selected 下突出显示的文本是将添加的空间量,而不是卷最终将具有的大小。

    完成向导。

     Windows Server 扩展卷向导
  6. 从 Windows 中重启系统。

提示

如果您的卷中增加的可用空间在系统中仍不可见,请尝试重新初始化卷,具体说明请参阅初始化 Amazon EBS 卷

附录:启动和停止实例以修改 EBS 卷

如果您使用的是上一代 Amazon EC2 实例并且您需要修改根 (引导) 卷,则必须停止实例,应用修改,然后重新启动实例。此处描述的过程可用于修改任意实例类型上的任何 EBS 卷。

当您停止和启动实例时,需要注意以下事项:

  • 如果您的实例在 VPC 中运行并具有公有 IPv4 地址,则我们会释放该地址并向实例提供一个新的公有 IPv4 地址。实例会保留其私有 IPv4 地址和任何弹性 IP 地址。

  • 如果实例在 EC2-Classic 中运行,则我们会为其提供新的公有和私有 IPv4 地址,并取消该实例与任何弹性 IP 地址的关联。您在重新启动实例后,必须重新关联任何弹性 IP 地址。

  • 如果您的实例处于 Auto Scaling 组中,则 Auto Scaling 会将已停止的实例标记为运行状况不佳,可能会终止它并启动替换实例。为预防这一问题,您可暂时挂起组的 Auto Scaling 进程。有关更多信息,请参阅 Auto Scaling 用户指南 中的挂起和恢复 Auto Scaling 进程

修改实例的根卷

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

  2. 在导航窗格中,选择 Instances,然后选择具有要扩展的卷的实例。

  3. 确保 Shutdown Behavior 设置为 Stop 而不是 Terminate

    1. 选择实例。

    2. 从上下文菜单 (右键单击) 中依次选择 Instance SettingsChange Shutdown Behavior

    3. 如果 Shutdown behavior 设置为 Terminate,请选择 Stop,然后选择 Apply

      如果 Shutdown behavior 已经设置为 Stop,则选择 Cancel

  4. 停止实例。有关更多信息,请参阅 停止和启动您的实例

    警告

    当您停止某个实例时,任何实例存储卷上的数据都将被擦除。因此,如果实例存储卷上有任何您要保留的数据,请确保将其备份到持久性存储。

  5. 从控制台修改 EBS 卷从命令行修改 EBS 卷中所述修改您的 EBS 卷。

  6. 重新启动实例。

    1. 在导航窗格中,选择 Instances,然后选择要重新启动的实例。

    2. 从上下文菜单 (右键单击) 中依次选择 Instance StateStart

    3. Start Instances 对话框中,选择 Yes, Start。如果实例无法启动,并且扩展卷为根卷,请确认已使用与原始卷相同的设备名称连接了扩展卷,例如 /dev/sda1.

实例启动之后,可以检查文件系统大小,看实例是否识别这个更大的卷空间。

如果大小没有反映新扩展的卷,则必须扩展设备的文件系统,以便实例可以使用新的空间。有关更多信息,请参阅调整卷大小后扩展 Windows 文件系统

您可能需要将卷联机才能使用它。有关更多信息,请参阅 使 Amazon EBS 卷可用。您无需重新格式化卷。