본 기사는 AWS 지원 자동화 워크플로우(Support Automation Workflow)의 "AWSPremiumSupport-TroubleshootEC2DiskUsage" 런북을 통해 대상이 되는 EC2 인스턴스의 볼륨을 분석하고 파라미터를 기준으로 확장을 자동화하는 방법을 설명합니다.
개요
Amazon Elastic Block Store(Amazon EBS) 볼륨을 진단하고 확장하기 위해 AWS 지원 자동화 워크플로우의 "AWSPremiumSupport-TroubleshootEC2DiskUsage" 런북을 사용하여 EC2 인스턴스의 사용량을 조사하고 필요한 경우 확장할 수 있습니다.
중요
"AWSPremiumSupport-DiagnoseDiskUsageOnWindows" 와 같이 "AWSPremiumSupport-*" 런북에 액세스하려면 Enterprise 또는 Business 지원 구독이 필요합니다.
"AWSPremiumSupport-TroubleshootEC2DiskUsage" 런북은 볼륨과 파일 시스템을 확장하여 문제를 해결하며, 다음 두 단계로 실행됩니다.
- 디스크 진단 단계
- "AWSPremiumSupport-DiagnoseDiskUsageOnWindows" 또는 "AWSPremiumSupport-DiagnoseDiskUsageOnLinux" 런북을 사용하여 볼륨을 확장하여 디스크 문제를 완화할 수 있는지 여부를 결정합니다.
- 볼륨 확장 단계
- "AWSPremiumSupport-ExtendVolumesOnWindows" 또는 "AWSPremiumSupport-ExtendVolumesOnLinux"는 첫 번째 런북의 출력을 사용하여 볼륨을 수정하는 Python 코드를 실행합니다. 볼륨이 수정되고 난 후, 해당 런북은 영향을 받는 볼륨의 파티션과 파일 시스템을 확장합니다.
해결방법
권한 부여
런북을 사용하기 위해서는 아래와 같은 권한이 필요합니다. 먼저 대상 인스턴스에 연결된 Systems Manager용 AWS Identity 및 Access Management(IAM) 인스턴스 프로필이 있는지 확인하세요.
권한을 부여하려면 다음 단계를 수행하여 AssumeRole을 설정하고 자동화 문서 구성 프로세스에 대한 AutomationAssumeRole 파라미터를 지정하세요.
-
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"
}
]
}
-
Assume role을 생성하고 정책을 연결하세요.
-
"Resource": "*"를 Assume role의 ARN으로 바꿉니다.
{
"Action": [
"iam:PassRole"
],
"Resource": "*",
"Effect": "Allow"
},
런북 실행
다음 단계를 통하여 AWS 지원 자동화 워크플로우에서 제공되는 "AWSPremiumSupport-TroubleshootEC2DiskUsage" 런북을 통해 EC2 인스턴스의 볼륨을 분석하고 파라미터를 기준으로 확장이 필요하다면 확장할 수 있습니다.
- 볼륨 진단 및 확장이 필요한 EC2 인스턴스의 ID를 확인합니다.
- AWS Systems Manager 콘솔로 이동하여 왼쪽 네비게이션에서 자동화(Automation)을 선택합니다.
- 오른쪽의 자동화 실행(Execute automation) 버튼을 클릭합니다.
- 중앙의 자동화 런북에서 "TroubleshootEC2DiskUsage"를 입력하여 검색하고 결과에 표시된 "AWSPremiumSupport-TroubleshootEC2DiskUsage" 런북을 선택한 뒤 하단에서 다음(Next)를 클릭합니다. 참고로, 런북 검색시 "AWSPremiumSupport-TroubleshootEC2DiskUsage"를 전체 입력하면 입력 글자 수 제한으로 인해 오류가 발생됩니다.

- 입력 파라미터에서 다음 정보를 입력합니다.
- InstanceId에 Amazon EC2 인스턴스 ID를 입력합니다.
- AutomationAssumeRole의 경우 수임 역할의 ARN을 입력하여 자동화가 사용자 본인을 대신하여 작업을 수행하도록 허용합니다.
- 요구 사항이 기본값과 다를 경우 입력 파라미터에서 다음 입력을 지정합니다.
- VolumeExpansionEnabled: 영향을 받는 볼륨과 파티션을 확장할지 여부를 제어합니다(기본값: True)
- VolumeExpansionUsageTrigger: 확장을 트리거하는 데 필요한 사용된 파티션 공간의 최소 비율(기본값: 85)
- VolumeExpansionCapSize: EBS 볼륨 증가 최대 크기(GiB)(기본값: 2048)
- VolumeExpansionGibIncrease: 볼륨 증가(GiB)(기본값: 20)
- VolumeExpansionPercentageIncrease: 볼륨 증가(백분율)(기본값: 20)
- 하단에 실행(Execute)을 선택합니다.
- 런북이 실행되는 동안 위에서 설명한 볼륨 분석 및 확장 작업이 자동으로 진행됩니다.

예제 시나리오
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 475M 0 475M 0% /dev/shm
tmpfs 190M 456K 190M 1% /run
/dev/xvda1 8.0G 7.7G 311M 97% /
tmpfs 475M 0 475M 0% /tmp
/dev/xvda128 10M 1.3M 8.7M 13% /boot/efi
tmpfs 95M 0 95M 0% /run/user/1000
현재 볼륨은 8GB이고 7.7GB를 사용 중입니다. 이후 런북에 다음과 같은 파라미터를 입력하였습니다.
- VolumeExpansionUsageTrigger: 85
- VolumeExpansionGibIncrease: 20
- VolumeExpansionPercentageIncrease: 20
- VolumeExpansionCapSize: 2048
사용 공간이 VolumeExpansionUsageTrigger 에 대한 85% 임계값을 초과하였기 때문에 20GB 용량 증가가 완료되었습니다. 이러한 증가는 볼륨을 현재 볼륨 크기인 8GB의 20%는 1.6GiB이며 이는 VolumeExpansionGibIncrease의 20GiB보다 작으므로 20GiB를 증가시키는 것으로 결정되어 20GiB가 확장됩니다. 런북은 볼륨 확장 시 VolumeExpansionGibIncrease와 VolumeExpansionPercentageIncrease을 비교하여, 둘 중 더 큰 증가량을 적용합니다.

참고 문서
[1] AWS 지원 자동화 워크플로우(AWS Support Automation Workflow - AWS SAW)
https://aws.amazon.com/ko/premiumsupport/technology/saw/
[2] How do I automatically evaluate and remediate the increasing volume on an Amazon EC2 instance when free disk space is low?
https://repost.aws/knowledge-center/ec2-volume-disk-space
[3] AWSPremiumSupport-TroubleshootEC2DiskUsage
https://docs.aws.amazon.com/ko_kr/systems-manager-automation-runbooks/latest/userguide/automation-awspremiumsupport-troubleshootEC2diskusage.html