我如何在可用磁盘空间不足时自动评估和解决 Amazon EC2 实例上的卷仍在增加的问题?

2 分钟阅读
0

我想知道应在什么时候扩展附加到 Amazon Elastic Compute Cloud (Amazon EC2) 实例的卷。另外,我还想在操作系统 (OS) 级别自动扩展分区和文件系统。

简述

要评估和扩展 Amazon Elastic Block Store (Amazon EBS) 卷,可以使用一套 AWS Systems Manager Automation 文档。借助这些 Automation 文档,您可以调查并有选择地纠正 Amazon EC2 实例上磁盘使用率偏低这一问题。

根据操作系统类型,AWSPremiumSupport-TroubleshootEC2DiskUsage Automation 文档指导其他 Systems Manager 文档的运行。

以下文档执行基本诊断并评估您是否可以扩展卷大小来迁移卷:

  • AWSPremiumSupport-DiagnoseDiskUsageOnWindows
  • AWSPremiumSupport-DiagnoseDiskUsageOnLinux

以下文档获取前面文档的输出并运行 Python 代码来执行卷修改:

  • AWSPremiumSupport-ExtendVolumesOnWindows
  • AWSPremiumSupport-ExtendVolumesOnLinux

然后,自动化访问实例并扩展卷的分区和文件系统。

解决方法

授予权限

您必须授予以下权限才能使用 Automation 文档。首先,请确保您有附加到目标实例的 Systems Manager 的 AWS Identity and Access Management (IAM) 实例配置文件

要授予权限,请完成以下步骤,设置 AssumeRole 来为 Automation 文档配置流程指定 AutomationAssumeRole 参数:

  1. 使用 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"
        }
      ]
    }
  2. 创建代入角色,然后附加策略。

  3. 修改以下语句。将 "Resource": "*" 替换为代入角色的 ARN:

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

运行 Automation 文档

要使用这套 Systems Manager Automation 文档,只需运行 AWSPremiumSupport-TroubleshootEC2DiskUsage 文档。

要运行 AWSPremiumSupport-TroubleshootEC2DiskUsage 文档,请完成以下步骤:

  1. 打开 Systems Manager 控制台,然后在导航窗格中选择自动化
  2. 选择执行自动化
  3. 选择 AWSPremiumSupport-TroubleshootEC2DiskUsage,然后选择下一步
  4. 对于执行自动化文档,选择简单执行
  5. 输入参数下,输入以下信息:
    对于 InstanceId,输入您的 Amazon EC2 实例 ID。
    对于 AutomationAssumeRole,输入代入角色的 ARN 以允许该自动化代表您执行操作。
  6. 输入参数下,如果您的要求与默认值不同,指定以下输入:
    VolumeExpansionEnabled: 控制文档是否扩展受影响的卷和分区(默认: True)
    VolumeExpansionUsageTrigger: 已使用的触发扩展所需分区空间的最小百分比(默认: 85)
    VolumeExpansionCapSize: EBS 卷可以增加的最大大小(以 GiB 为单位)(默认: 2048)
    VolumeExpansionGibIncrease: 卷增加量(以 GiB 为单位)(默认: 20)
    VolumeExpansionPercentageIncrease: 卷增加百分比(默认: 20)
  7. 选择执行

示例场景

您当前的卷为 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%。Automation 文档使用 VolumeExpansionGibIncreaseVolumeExpansionPercentageIncrease 之间的最大净增加值。新的卷大小为 40 GB。40 GB 在指定的 2048 VolumeExpansionCapSize 内。

相关信息

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

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

使用 IAM 为自动化配置角色

AWS 官方
AWS 官方已更新 8 个月前