Architecture & Tool/AWS

[AWS] EC2 인스턴스 용량 확장

jaamong 2024. 3. 29. 10:51

EC2 인스턴스 용량 확장

디스크 용량 확인

$ df -hT

리눅스 `df` 명령어는 파일 시스템 디스크의 용량을 확인할 때 사용한다. `-h` 옵션은 사람이 보기에 편한 용량 크기로 출력한다. `-T` 옵션은 파일의 타입(Type)을 보여주는 항목을 추가한다.

df -hT 결과 화면

현재 사용 중인 용량을 보니 인스턴스의 최대 용량인 8 GiB가 다 찼다! 추후 무엇을 설치할 수도 있고, 원활한 서비스 운영을 위해 인스턴스의 용량을 늘려야 한다.

 

인스턴스 볼륨(EBS) 추가

아래 화면에서 인스턴스가 사용하고 있는 블록 디바이스를 확인하고, `볼륨 ID`를 클릭한다.


클릭하면 아래와 같은 화면이 나타난다.

 

`볼륨 ID`를 오른쪽 마우슨 버튼으로 클릭한다. 아래 화면이 나오면 `볼륨 수정`을 클릭한다.

 

크기를 수정하고 `수정` 버튼을 클릭한다.

 

운영 중인 서비스가 도커 컨테이너를 여러 대를 띄우다 보니 적어도 모두 띄웠을 때 서버가 다운되지 않을 정도의 용량이 필요했다. 그래서 아래 명령어를 입력하여 현재 서비스가 사용하고 있는 리소스를 확인했다. 아래 명령어 이외에도 사용하고 있는 도커 용량을 확인할 수 있는 명령어들을 찾아서 얼마만큼의 리소스가 필요한지 정리하면 좋을 것 같다.
$ docker system df -v​

 

`수정` 버튼을 클릭한다.


그러고 나면 아래처럼 수정 중이라는 안내가 나온다. 적용까지는 몇 분 정도 소요될 수 있다.

 

적용이 완료되면 아래처럼 적용된 크기를 확인할 수 있다.

 

파티션 크기 늘리기

리눅스의 `lsblk` 명령어는 블록 장치 관련 작업을 도와주는 유틸리티 CLI 도구로, 블록 장치를 나열한다. 아래 사진은 볼륨 크기를 확장하기 전 상태다.

볼륨 크기 확장 전 lsblk

첫 번째 열의 각 의미는 순서대로 장치 이름, 해당 주 및 부 장치 번호, 장치가 제거 가능한지 여부(제거 가능한 경우 1), 장치 크기, 장치가 읽기 전용인지 여부, 장치 유형(디스크, 파티션 등), 마지막으로 장치 마운트 지점(사용 가능한 경우)이다.

 

아래 사진은 볼륨 크기를 확장한 후 상태이다. 디스크(disk)의 크기가 32G로 늘어난 것을 확인할 수 있다. 이제 볼륨의 파티션을 확장해야 한다.

볼륨 크기 확장 후 lsblk

위 사진에서 `xvda`는 물리적인 디스크를 의미하고, `xvda1`, `xvda14`, `xvda15`는 파티션을 의미한다. 디스크 영역은 32G로 늘어났지만, 파티션의 영역은 여전히 8G만 사용하고 있는 것을 확인할 수 있다.

즉 리눅스는 32GB의 디스크를 가지고 있지만, 실제로는 8GB만 사용할 수 있는 상태이다.

 

아래 명령어를 입력하여 파티션을 확장하자.

$ sudo growpart {디스크명} 1
$ sudo growpart /dev/xvda 1

 

이후 아래 명령어를 입력하여 파티션이 확장되었는지 확인한다. 

$ lsblk

확장 전과 비교했을 때 파티션의 크기가 확장된 것을 확인할 수 있다. 

 

ext4 파일 시스템의 크기 늘리기

이제 디스크 공간을 확장해야 한다. 사용하고 있는 파일 시스템에 바뀐 파티션의 크기를 적용해야 한다.

 

아래 명령어로 마운트 영역을 확인한다.

$ df -hT

/dev/root를 보면 여전히 8GB만 사용하고 있다.

 

이제 디스크 공간을 확장하자. (위 사진에서 `Type` 항목이 `ext4`인 경우)

$ sudo resize2fs {파일시스템명}
$ sudo resize2fs /dev/root

 

이제 공간 확장이 완료되었다!

 

 

번외. EBS 볼륨 유형 gp2 vs gp3

gp3는 gp2보다 20% 가량 비용을 아낄 수 있으면서, 볼륨 크기와 관계없이 3,000 IOPS의 기준 성능과 125Mib/s의 처리량을 제공한다. gp2는 고성능의 IO가 필요한 시스템에서는 불필요하게 더 많은 스토리지 볼륨이 요구된다. 

💡 IOPS(Input/Output Operations Per Second)란 EBS 볼륨의 성능을 측정하는 중요한 지표 중 하나로, 초당 입출력 작업 수를 나타냅니다. 즉, 높으면 높을수록 파일의 읽고 쓰는 것이 빨라진다는 뜻이다.
IOPS를 계산할 때는 사용하는 애플리케이션이나 데이터베이스의 I/O 최대크기를 확인해야 한다.

 

EBS 볼륨 유형의 요금에 관한 자세한 정책 및 내용은 아래 링크를 참고!

🔗  https://aws.amazon.com/ko/ebs/pricing/