我如何在可用磁盘空间不足时自动评估和解决 Amazon EC2 实例上的卷仍在增加的问题?
我想知道应在什么时候扩展附加到 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 参数:
-
{ "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" } ] } -
创建代入角色,然后附加策略。
-
修改以下语句。将 "Resource": "*" 替换为代入角色的 ARN:
{ "Action": [ "iam:PassRole" ], "Resource": "*", "Effect": "Allow" },
运行 Automation 文档
要使用这套 Systems Manager Automation 文档,只需运行 AWSPremiumSupport-TroubleshootEC2DiskUsage 文档。
要运行 AWSPremiumSupport-TroubleshootEC2DiskUsage 文档,请完成以下步骤:
- 打开 Systems Manager 控制台,然后在导航窗格中选择自动化。
- 选择执行自动化。
- 选择 AWSPremiumSupport-TroubleshootEC2DiskUsage,然后选择下一步。
- 对于执行自动化文档,选择简单执行。
- 在输入参数下,输入以下信息:
对于 InstanceId,输入您的 Amazon EC2 实例 ID。
对于 AutomationAssumeRole,输入代入角色的 ARN 以允许该自动化代表您执行操作。 - 在输入参数下,如果您的要求与默认值不同,指定以下输入:
VolumeExpansionEnabled: 控制文档是否扩展受影响的卷和分区(默认: True)
VolumeExpansionUsageTrigger: 已使用的触发扩展所需分区空间的最小百分比(默认: 85)
VolumeExpansionCapSize: EBS 卷可以增加的最大大小(以 GiB 为单位)(默认: 2048)
VolumeExpansionGibIncrease: 卷增加量(以 GiB 为单位)(默认: 20)
VolumeExpansionPercentageIncrease: 卷增加百分比(默认: 20) - 选择执行。
示例场景
您当前的卷为 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 文档使用 VolumeExpansionGibIncrease 到 VolumeExpansionPercentageIncrease 之间的最大净增加值。新的卷大小为 40 GB。40 GB 在指定的 2048 VolumeExpansionCapSize 内。
