[AWS] EC2 인스턴스 용량 확장
EC2 인스턴스 용량 확장
디스크 용량 확인
$ df -hT
리눅스 `df` 명령어는 파일 시스템 디스크의 용량을 확인할 때 사용한다. `-h` 옵션은 사람이 보기에 편한 용량 크기로 출력한다. `-T` 옵션은 파일의 타입(Type)을 보여주는 항목을 추가한다.
현재 사용 중인 용량을 보니 인스턴스의 최대 용량인 8 GiB가 다 찼다! 추후 무엇을 설치할 수도 있고, 원활한 서비스 운영을 위해 인스턴스의 용량을 늘려야 한다.
인스턴스 볼륨(EBS) 추가
아래 화면에서 인스턴스가 사용하고 있는 블록 디바이스를 확인하고, `볼륨 ID`를 클릭한다.
클릭하면 아래와 같은 화면이 나타난다.
`볼륨 ID`를 오른쪽 마우슨 버튼으로 클릭한다. 아래 화면이 나오면 `볼륨 수정`을 클릭한다.
크기를 수정하고 `수정` 버튼을 클릭한다.
운영 중인 서비스가 도커 컨테이너를 여러 대를 띄우다 보니 적어도 모두 띄웠을 때 서버가 다운되지 않을 정도의 용량이 필요했다. 그래서 아래 명령어를 입력하여 현재 서비스가 사용하고 있는 리소스를 확인했다. 아래 명령어 이외에도 사용하고 있는 도커 용량을 확인할 수 있는 명령어들을 찾아서 얼마만큼의 리소스가 필요한지 정리하면 좋을 것 같다.
$ docker system df -v
`수정` 버튼을 클릭한다.
그러고 나면 아래처럼 수정 중이라는 안내가 나온다. 적용까지는 몇 분 정도 소요될 수 있다.
적용이 완료되면 아래처럼 적용된 크기를 확인할 수 있다.
파티션 크기 늘리기
리눅스의 `lsblk` 명령어는 블록 장치 관련 작업을 도와주는 유틸리티 CLI 도구로, 블록 장치를 나열한다. 아래 사진은 볼륨 크기를 확장하기 전 상태다.
첫 번째 열의 각 의미는 순서대로 장치 이름, 해당 주 및 부 장치 번호, 장치가 제거 가능한지 여부(제거 가능한 경우 1), 장치 크기, 장치가 읽기 전용인지 여부, 장치 유형(디스크, 파티션 등), 마지막으로 장치 마운트 지점(사용 가능한 경우)이다.
아래 사진은 볼륨 크기를 확장한 후 상태이다. 디스크(disk)의 크기가 32G로 늘어난 것을 확인할 수 있다. 이제 볼륨의 파티션을 확장해야 한다.
위 사진에서 `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/