메뉴
Amazon Elastic Compute Cloud
User Guide for Linux Instances

Linux에서 EBS 볼륨의 크기, IOPS 또는 유형 수정

Amazon EBS 볼륨이 현재 세대의 EC2 인스턴스 유형에 연결되면 연결을 해제하지 않고도 크기를 늘리고 볼륨 유형을 변경하거나 (io1 볼륨의 경우) IOPS 성능을 조정할 수 있습니다. 이러한 변경 사항을 분리된 볼륨에도 적용할 수 있습니다. 현재 세대 인스턴스 유형에 대한 자세한 내용은 현재 세대 인스턴스 를 참조하십시오.

이전 세대 인스턴스 유형을 사용하거나 볼륨을 수정하려는 중에 오류가 발생한 경우, 부록: EBS 볼륨을 수정하기 위한 인스턴스 시작 및 중지의 절차를 따르십시오.

일반적으로 볼륨 수정 단계는 다음과 같습니다.

  1. 수정 명령을 실행합니다.자세한 내용은 콘솔에서 EBS 볼륨 수정명령줄에서 EBS 볼륨 수정단원을 참조하십시오.

  2. 수정 진행률을 모니터링합니다.자세한 내용은 볼륨 수정 진행률 모니터링단원을 참조하십시오.

  3. 볼륨 크기가 수정된 경우 볼륨의 파일 시스템을 확장하여 스토리지 용량 증가를 활용합니다. 자세한 내용은 볼륨 크기 조정 후 Linux 파일 시스템 확장 단원을 참조하십시오.

또한 Amazon CloudWatch EventsAWS CloudFormation을 사용하여 볼륨 수정에 연결된 작업을 자동화할 수 있습니다.

볼륨 구성 수정은 무료입니다. 수정이 시작된 후 새 볼륨 구성 가격으로 요금이 청구됩니다. 자세한 내용은 Amazon EBS 요금 페이지의 Amazon Elastic Block Store 단원을 참조하십시오.

자세한 내용은 EBS 볼륨 수정을 위한 고려 사항 단원을 참조하십시오.

중요

중요한 데이터가 저장된 볼륨을 변경하려면 먼저 변경 내용을 롤백해야 할 경우를 대비하여 볼륨 스냅샷을 생성하는 것이 바람직합니다. EBS 스냅샷에 대한 자세한 내용은 Creating an Amazon EBS Snapshot 단원을 참조하십시오.

콘솔에서 EBS 볼륨 수정

다음 절차는 Amazon EC2 콘솔에서 사용 가능한 볼륨 수정을 적용하는 방법을 보여줍니다.

콘솔을 사용하여 EBS 볼륨을 수정하려면

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. [Volumes]를 선택하고 수정할 볼륨을 선택한 후 [Actions], [Modify Volume]을 선택합니다.

  3. [Modify Volume] 창에 볼륨 ID와 유형, 크기, IOPS를 포함한 볼륨의 현재 구성이 표시됩니다. 한 번의 작업으로 이 모든 설정을 변경할 수 있습니다. 다음과 같이 새로운 구성 값을 설정합니다.

    • 유형을 수정하려면 [Volume Type]의 값을 선택합니다.

    • 크기를 수정하려면 [Size]에 허용된 정수 값을 입력합니다.

    • 볼륨 유형으로 [Provisioned IOPS (IO1)]를 선택한 경우 [IOPS]에 허용된 정수 값을 입력합니다.

  4. 적용할 수정 사항을 모두 지정한 후 [Modify], [Yes]를 차례로 선택합니다.

  5. 볼륨 크기를 수정해도 새 스토리지 용량을 활용하기 위해 볼륨의 파일 시스템도 확장할 때까지는 실질적인 효과가 없습니다. 자세한 내용은 볼륨 크기 조정 후 Linux 파일 시스템 확장 단원을 참조하십시오.

명령줄에서 EBS 볼륨 수정

다음 예제는 AWS CLI를 사용하여 명령줄에서 EBS 볼륨을 어떻게 수정할 수 있는지 보여줍니다. 기본 구성에 따라 리전과 가용 영역 등의 정보를 지정해야 할 수 있습니다. 수정 중인 소스 볼륨의 ID가 필요하고 작업을 수행하기 위한 적절한 권한이 있어야 합니다. io1 볼륨이 수정 대상인 경우 프로비저닝된 IOPS의 수준을 지정해야 합니다. 단일 명령으로 여러 건의 수정 작업(용량, IOPS 또는 유형 변경)을 수행할 수 있습니다.

예를 들어 EBS 볼륨은 다음과 같이 구성됩니다.

  • 볼륨 ID: vol-11111111111111111

  • 볼륨 크기: 100GiB

  • 볼륨 유형: gp2

볼륨 구성을 다음으로 변경할 수 있습니다.

  • 볼륨 크기: 200GiB

  • 볼륨 유형: io1

  • 프로비저닝 수준: 10,000 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
    }
}

참고

볼륨 크기를 수정해도 새 스토리지 용량을 활용하기 위해 볼륨의 파일 시스템도 확장할 때까지는 실질적인 효과가 없습니다. 자세한 내용은 볼륨 크기 조정 후 Linux 파일 시스템 확장 단원을 참조하십시오.

볼륨 수정 진행률 모니터링

수정 중인 EBS 볼륨이 상태 시퀀스를 통과합니다. 콘솔, CLI, API 또는 SDK에서 ModifyVolume 명령을 실행한 후 볼륨이 첫 번째 Modifying 상태를 입력한 후 Optimizing 상태에 이어 Complete 상태를 입력합니다. 그러면 볼륨을 더 수정할 준비가 완료됩니다. 드물지만 일시적 AWS 결함으로 인해 Failed 상태가 될 수 있습니다. 이 경우 다시 수정을 시도하십시오.

크기를 변경하면 볼륨이 Optimizing 상태가 된 후 완료되어 적용되는 데 대개 몇 초가 걸립니다.

성능(IOPS) 변경이 완료되는 데 몇 분에서 몇 시간이 걸릴 수 있으며, 시간은 현재 수행 중인 구성 변경에 따라 달라집니다.

새 구성이 적용되려면 최대 24시간이 걸리며, 볼륨이 완전히 초기화되지 않은 경우처럼 특별한 경우에는 더 걸릴 수도 있습니다. 일반적으로 충분히 사용된 1TiB 볼륨이 새 성능 구성으로 마이그레이션하는 데 약 6시간이 걸립니다.

볼륨이 optimizing 상태에 있는 동안 볼륨 성능은 소스와 대상 구성 사양 사이에 있습니다. 일시적인 볼륨 성능은 소스 볼륨 성능 이상입니다. IOPS를 다운로드하면 일시적인 볼륨 성능은 대상 볼륨 성능 이상입니다.

AWS Management Console을 검사하거나 AWS EC2 API/CLI로 볼륨의 상태를 쿼리하거나 Amazon CloudWatch Events로 전송된 측정치에 액세스하여 수정 진행률을 모니터링할 수 있습니다. 다음 절차는 이러한 접근 방식을 보여줍니다.

콘솔에서 수정 진행률 모니터링하기

  1. https://console.aws.amazon.com/ec2/에서 Amazon 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
        }
    ]
}

다음 예에서는 수정 상태가 optimizing 또는 completed인 리전에서 모든 볼륨에 대해 쿼리한 후 결과를 필터링하고 형식을 지정하여 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 이벤트로 수정 진행률 모니터링하기

CloudWatch 이벤트를 이용하면 볼륨 수정 이벤트에서 텍스트 메시지를 보내거나 Lambda 함수를 실행하도록 알림 규칙을 생성할 수 있습니다.

  1. https://console.aws.amazon.com/cloudwatch/에서 CloudWatch 콘솔을 엽니다.

  2. [Events], [Create 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 함수를 호출할 수 있습니다.

볼륨 크기 조정 후 Linux 파일 시스템 확장

파일 시스템 관련 명령을– 사용하여 더 큰 새 볼륨에 맞게 파일 시스템의 크기를 조정합니다. 이 명령은 확장할 볼륨이 루트 볼륨인 경우에도 작동합니다. ext2, ext3 및 ext4 파일 시스템의 경우 이 명령은 resize2fs입니다. XFS 파일 시스템의 경우 이 명령은 xfs_growfs입니다. 다른 파일 시스템에 대한 확장 지침은 해당 파일 시스템의 설명서를 참조하십시오.

사용 중인 파일 시스템을 모르는 경우 file -s 명령을 사용하여 디바이스에 대한 파일 시스템 데이터를 나열합니다. 다음 예는 Linux ext4 파일 시스템과 SGI XFS 파일 시스템을 보여줍니다.

Copy
[ec2-user ~]$ sudo file -s /dev/xvd* /dev/xvda1: Linux rev 1.0 ext4 filesystem data ... /dev/xvdf: SGI XFS filesystem data ...

참고

확장하려는 볼륨이 파티셔닝된 경우 파일 시스템의 크기를 조정하려면 파티션의 크기를 늘려야 합니다. 이때 추가 파티션을 할당할 수도 있습니다. 자세한 내용은 Linux 파티션 확장 단원을 참조하십시오.

볼륨이 Optimizing 상태가 되자마자 파일 시스템 크기 조정을 시작할 수 있습니다.

중요

중요한 데이터가 저장된 파일 시스템을 확장하려면 먼저 변경 내용을 롤백해야 할 경우를 대비하여 파일 시스템이 저장된 볼륨 스냅샷을 생성하는 것이 바람직합니다. EBS 스냅샷에 대한 자세한 내용은 Creating an Amazon EBS Snapshot 단원을 참조하십시오.

볼륨 파티션의 크기를 조정해야 하는지 확인하려면

  • lsblk 명령을 사용하여 인스턴스에 연결된 블록 디바이스를 나열합니다. 아래 예에서는 /dev/xvda, /dev/xvdb, /dev/xvdf 등 세 개의 볼륨이 표시되어 있습니다.

    Copy
    [ec2-user ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 30G 0 disk └─xvda1 202:1 0 30G 0 part / xvdb 202:16 0 30G 0 disk /mnt xvdf 202:80 0 35G 0 disk └─xvdf1 202:81 0 8G 0 part

    루트 볼륨 /dev/xvda1/dev/xvda 상의 파티션입니다. 두 볼륨의 크기는 모두 30GiB입니다. 이 경우 파티션이 디바이스의 전체 공간을 차지하므로 크기를 조정할 필요가 없습니다.

    /dev/xvdb 볼륨은 파티션되지 않았으므로 크기를 조정할 필요가 없습니다.

    그러나 /dev/xvdf1은 35GiB 디바이스의 8GiB 파티션이고 볼륨에 다른 파티션이 없습니다. 이 경우 볼륨의 나머지 공간을 사용하려면 파티션의 크기를 조정해야 합니다. 자세한 내용은 Linux 파티션 확장을 참조하십시오. 파티션의 크기를 조정한 후 다음 절차에 따라 파티션의 전체 공간을 차지하도록 파일 시스템을 확장할 수 있습니다.

Linux 파일 시스템을 확장하려면

  1. SSH 클라이언트를 사용하여 Linux 인스턴스에 로그인합니다. Linux 인스턴스 연결에 대한 자세한 내용은 SSH를 사용하여 Linux 인스턴스에 연결 단원을 참조하십시오.

  2. df -h 명령을 사용하여 기존 파일 시스템 디스크 공간 사용을 보고합니다. 이 새로운 예제에서 /dev/xvda1 디바이스는 이미 35GiB로 확장되었지만 운영 체제는 여전히 원래 8GiB ext4 파일 시스템만 볼 수 있습니다. 마찬가지로 /dev/xvdf 디바이스는 35GiB로 확장되었으나 운영 체제는 여전히 원래의 1GiB XFS 파일 시스템만 볼 수 있습니다.

    Copy
    [ec2-user ~]$ df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 8.0G 943M 6.9G 12% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/xvdf 1014M 33M 982M 4% /mnt
  3. growpart를 사용하여 수정된 파티션을 확장합니다. 그러면 디바이스 이름과 파티션 번호를 구분하는 특별한 구문을 볼 수 있습니다.

    Copy
    $sudo growpart /dev/xvdf 1 CHANGED: disk=/dev/xvdf partition=1: start=4096 old: size=16773086,end=16777182 new: size=73396190,end=73400286

    lsblk 출력을 보면 파티션 /dev/xvdf1이 이제 볼륨 /dev/xvdf에서 사용 가능한 공간을 채웁니다.

    Copy
    [ec2-user ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT ... xvdf 202:80 0 35G 0 disk └─xvdf1 202:81 0 35G 0 part
  4. 파일 시스템 관련 명령을 사용하여 새 볼륨 용량에 맞게 파일 시스템의 크기를 조정합니다.

    Linux ext2, ext3 또는 ext4 파일 시스템의 경우 다음 명령을 사용합니다. 여기에서 확장할 디바이스 이름을 대체합니다.

    Copy
    [ec2-user ~]$ sudo resize2fs /dev/xvdf1 resize2fs 1.42.3 (14-May-2012) old_desc_blocks = 1, new_desc_blocks = 3 The filesystem on /dev/xvdf1 is now 9174523 blocks long.

    XFS 파일 시스템의 경우, 먼저 XFS 사용자 공간 도구를 설치합니다.

    Copy
    [ec2-user ~]$ sudo yum install xfsprogs

    그리고 다음 명령을 사용합니다. 여기에서 파일 시스템의 마운트 지점을 대체합니다. XFS 파일 시스템을 마운트해야 크기를 조정할 수 있습니다.

    Copy
    [ec2-user ~]$ sudo xfs_growfs -d /mnt meta-data=/dev/xvdf isize=256 agcount=4, agsize=65536 blks = sectsz=512 attr=2 data = bsize=4096 blocks=262144, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 262144 to 26214400

    참고

    xfsctl failed: Cannot allocate memory 오류가 표시되는 경우 인스턴스에서 Linux 커널을 업데이트해야 할 수 있습니다. 자세한 내용은 해당 운영 체제 설명서를 참조하십시오.

    The filesystem is already nnnnnnn blocks long. Nothing to do! 오류가 표시되는 경우 Linux 파티션 확장을 참조하십시오.

  5. df -h 명령을 사용하여 기존 파일 시스템 디스크 공간 사용을 보고합니다. 이 예에서는 ext4 파일 시스템이 70GiB로, XFS 파일 시스템이 100GiB로 표시됩니다.

    Copy
    # df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 70G 951M 69G 2% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/xvdf 100G 45M 100G 1% /mnt

작은 정보

볼륨의 확장된 사용 가능한 공간이 시스템에 표시되지 않는 경우 Amazon EBS 볼륨 초기화에 설명된 대로 볼륨을 다시 초기화해 보십시오.

부록: EBS 볼륨을 수정하기 위한 인스턴스 시작 및 중지

이전 세대 Amazon EC2 인스턴스를 사용하는 동안 루트(부트) 볼륨을 수정해야 하는 경우 인스턴스를 중지하고 수정 사항을 적용한 후 인스턴스를 다시 시작해야 합니다. 여기에 설명된 절차는 모든 인스턴스 유형의 EBS 볼륨을 수정하는 데 사용할 수 있습니다.

인스턴스를 중지했다가 시작할 때 다음 사항을 인식하십시오.

  • 인스턴스가 VPC에서 실행 중이고 퍼블릭 IPv4 주소를 가지고 있으면 주소를 해제하고 새 퍼블릭 IPv4 주소를 제공합니다. 인스턴스는 프라이빗 IPv4 주소와 모든 탄력적 IP 주소(EIP)를 유지합니다.

  • 인스턴스가 EC2-Classic에서 실행 중인 경우, AWS는 거기에 새로운 퍼블릭 및 프라이빗 IPv4 주소를 부여하고 해당 인스턴스와 연결된 모든 탄력적 IP 주소를 분리합니다. 인스턴스를 다시 시작한 후에는 모든 탄력적 IP 주소를 다시 연결해야 합니다.

  • 인스턴스가 Auto Scaling 그룹에 있는 경우, Auto Scaling는 중단된 인스턴스를 비정상으로 간주해 이를 종료하고 대체 인스턴스를 시작합니다. 이를 방지하기 위해서는 그 그룹에 대한 Auto Scaling 과정을 일시적으로 중지할 수 있습니다. 자세한 내용은 Auto Scaling 사용 설명서Suspend and Resume Auto Scaling Processes 단원을 참조하십시오.

인스턴스의 루트 볼륨을 수정하려면

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 [Instances]를 선택한 후 확장할 볼륨이 있는 인스턴스를 선택합니다.

  3. [Shutdown Behavior]가 [Terminate]가 아닌 [Stop]으로 설정되어 있는지 확인합니다.

    1. 인스턴스를 선택합니다.

    2. 컨텍스트 메뉴(오른쪽 클릭)에서 [Instance Settings], [Change Shutdown Behavior]를 선택합니다.

    3. [Shutdown behavior]가 [Terminate]로 설정되어 있는 경우 [Stop], [Apply]를 선택합니다.

      [Shutdown behavior]가 이미 [Stop]으로 설정되어 있는 경우 [Cancel]을 선택합니다.

  4. 인스턴스를 중지합니다. 자세한 내용은 인스턴스 중지 및 시작 단원을 참조하십시오.

    주의

    인스턴스를 중지하면 인스턴스 스토어 볼륨의 데이터가 삭제됩니다. 따라서 인스턴스 스토어 볼륨에 보존하려는 데이터가 있을 경우 영구 스토리지에 백업하십시오.

  5. 콘솔에서 EBS 볼륨 수정 또는 명령줄에서 EBS 볼륨 수정에 설명된 대로 EBS 볼륨을 수정합니다.

  6. 인스턴스를 다시 시작합니다.

    1. 탐색 창에서 [Instances]를 선택한 후 다시 시작할 인스턴스를 선택합니다.

    2. 컨텍스트 메뉴(오른쪽 클릭)에서 [Instance State], [Start]를 선택합니다.

    3. [Start Instances] 대화 상자에서 [Yes, Start]를 선택합니다. 인스턴스가 시작되지 않고 확장 중인 볼륨이 루트 볼륨인 경우 원래 볼륨과 동일한 디바이스 이름을 사용하여 확장된 볼륨을 연결했는지 확인합니다(예: /dev/sda1).

인스턴스가 시작된 후 파일 시스템의 크기를 확인하여 인스턴스가 더 큰 볼륨 공간을 인식하는지 파악할 수 있습니다. Linux에서는 df -h 명령을 사용하여 파일 시스템의 크기를 확인합니다.

Copy
[ec2-user ~]$ df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 7.9G 943M 6.9G 12% / tmpfs 1.9G 0 1.9G 0% /dev/shm

새로 확장된 볼륨이 크기에 반영되지 않을 경우 인스턴스에서 새 공간을 사용할 수 있도록 디바이스의 파일 시스템을 확장해야 합니다. 자세한 내용은 볼륨 크기 조정 후 Linux 파일 시스템 확장 단원을 참조하십시오.