可用磁盘空间不足时,如何自动评估和解决 Amazon EC2 实例的卷持续增加这一问题?

2 分钟阅读
0

我想看看附加到我的 Amazon Elastic Compute Cloud (Amazon EC2) 实例的卷是否需要扩展。此外,在操作系统 (OS) 层面扩展分区和文件系统是一项耗时的操作。如何才能实现整个过程的自动化?

简短描述

您可以使用一组 AWS Systems Manager 自动化文档来评估和扩展 Amazon Elastic Block Store (Amazon EBS) 的卷。通过自动化文档协同工作,您可以调查并有选择地纠正 Amazon EC2 实例上磁盘使用率偏低这一问题。

AWSPremiumSupport-TroubleshootEC2DiskUsage 自动化文档根据操作系统类型,对其他 Systems Manager 文档的运行进行协调。

第一组文档执行基本诊断,并评估是否可以通过扩展卷进行迁移:

  • AWSPremiumSupport-DiagnoseDiskUsageOnWindows
  • AWSPremiumSupport-DiagnoseDiskUsageOnLinux

第二组文档获取第一个文档的输出,并运行 Python 代码来执行批量修改。然后,自动化访问实例并扩展卷的分区和文件系统:

  • AWSPremiumSupport-ExtendVolumesOnWindows
  • AWSPremiumSupport-ExtendVolumesOnLinux

使用以下步骤设置所需的权限并运行自动化文档。

解决方法

授予权限

您必须授予以下权限才能使用自动化文档。

如果尚未授予权限,请为 Systems Manager 创建 AWS 身份和访问管理 (IAM) 实例配置文件。然后,将其附加到目标实例。

要设置 AssumeRole(在自动化文档配置过程中,必须指定 **AutomationAssumeRole ** 参数),请执行以下步骤:

  1. 使用以下 JSON 策略文档在 JSON 选项卡上创建策略
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "ec2:DescribeVolumes",
        "ec2:DescribeVolumesModifications",
        "ec2:ModifyVolume",
        "ec2:DescribeInstances",
        "ec2:CreateImage",
        "ec2:DescribeImages",
        "ec2:DescribeTags",
        "ec2:CreateTags",
        "ec2:DeleteTags"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "iam:PassRole"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "ssm:StartAutomationExecution",
        "ssm:GetAutomationExecution",
        "ssm:DescribeAutomationStepExecutions",
        "ssm:DescribeAutomationExecutions"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "ssm:SendCommand",
        "ssm:DescribeInstanceInformation",
        "ssm:ListCommands",
        "ssm:ListCommandInvocations"
      ],
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}
  1. 创建代入角色并附加在上一步中创建的策略。

  2. 修改此语句并将 “资源”:”* “替换为您的代入角色的 ARN。

{
  "Action": [
      "iam:PassRole"
    ],
    "Resource": "*",
    "Effect": "Allow"
  },

运行自动化文档

要使用这组 Systems Manager 自动化文档,您只需运行最初的 AwsPremiumSupport-TroubleshootEC2DiskUsage 文档。请按照以下步骤操作:

  1. 打开 Systems Manager 控制台,然后在导航窗格中选择自动化

  2. 选择执行自动化

  3. 选择 AWSPremiumSupport-TroubleshootEC2DiskUsage 的单选按钮,然后选择下一步

  4. 对于执行自动化文档,选择简单执行

  5. 输入参数下

对于InstanceId,请输入您的 Amazon EC2 实例 ID。

对于 AutomationAssumeRole,输入允许自动化代表您执行操作的角色 ARN。这是您在授予权限时创建的代入角色。

  1. (可选)在输入参数下,如果您的要求与默认值不同,请指定以下输入:

VolumeExpansionEnabled: 控制文档是否会扩展受影响的卷和分区(默认: True)

VolumeExpansionUsageTrigger: 触发扩展所需已用分区空间的最小百分比(默认: 85)

VolumeExpansionCapSize: EBS 卷将增加到的最大空间(单位: GiB)(默认: 2048)

VolumeExpansionGibIncrease: 增加卷,单位:GiB(默认: 20)

VolumeExpansionPercentageIncrease: 卷增加百分比(默认: 20)

  1. 选择执行

控制台显示自动化状态。

示例

您当前的卷为 30 GB,有 4 GB 的可用空间,这意味着您有 26 GB 的已用空间。您可以指定以下输入参数:

  • VolumeExpansionUsageTrigger: 85
  • VolumeExpansionGibIncrease: 10
  • VolumeExpansionPercentageIncrease: 15
  • VolumeExpansionCapSize: 2048

结果:

触发增加,是因为26 GB的已用空间超过了为 VolumeExpansionUsageTrigger 指定的85%阈值。

卷增加了 10 GB。这是因为您指定卷应增加 10 GB 或当前 4.5 GB 卷的 15%。自动化文档使用了介于 VolumeExpansionGibIncreaseVolumeExpansionPercentageIncrease 的最大净增长值。

新卷大小为 40 GB,在指定的 2048 VolumeExpansionCapSize 之内。


相关信息

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

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

使用 IAM 为自动化配置角色

AWS 官方
AWS 官方已更新 2 年前