Recommanded Free YOUTUBE Lecture: Launching Landing Page By Bootstrap and Node JS

EBS 볼륨 늘리기

AWS EC2 볼륨 확장

AWS EC2(Clastic Compute Cloud)는 컴퓨팅 파워를 제공하는 클라우드 서비스다. 쉽게 말해서 가상서버를 제공하는 서비스라고 생각할 수 있다.

가상서버이므로 CPU, Memory, Network, Disk 등을 제공하는데, 이 중 Disk는 EBS(Elastic Block Store) 라는 서비스로 제공한다. 사용자는 AWS 관리자 콘솔에서 EBS를 만든 다음 자유롭게 EC2 Instance에 연결할 수 있다.

EBS를 ECS Instance에 attach 해서 사용 하다보면 디스크가 꽉 차는 경우가 있다. 이 때 디스크 볼륨을 늘리는 방법에 대해서 살펴보자.

Ubuntu 리눅스에서 EC2 볼륨 확장

AWS 관리자 콘솔에서 확장하려는 볼륨 정보를 확인하자.
Volume 정보
test-server 라는 이름의 인스턴스에 8Gib의 크기의 볼륨이 attached 된 걸 확인 할 수 있다. 이 인스턴스의 볼륨의 크기를 20Gib로 늘려볼 것이다.

볼륨을 늘리기 위해서 ssh로 test-server에 로그인한다. df 명령을 이용해서 디스크 용량을 확인한다.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       7.6G  1.6G  6.0G  21% /
tmpfs           475M     0  475M   0% /dev/shm
tmpfs           190M  832K  190M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/xvda15     105M  6.1M   99M   6% /boot/efi
tmpfs            95M  4.0K   95M   1% /run/user/1000

8G 크기의 /dev/root 디바이스가 루트(/) 디렉토리에 마운트(mount)되어 있다.

lbkid 명령으로 파일 시스템 포맷을 확인해보자.
blkid
ext4 파일 시스템을 확인 할 수 있다.

AWS 관리자 콘솔로 이동해서, 작업할 볼륨을 선택하고 Modify volume을 클릭한다.
EBS Volume resize

볼륨 크기를 20GiB로 설정하고 Modify를 클릭하면 볼륨이 늘어난다.
EBS Modify volume

이렇게 EBS 볼륨을 늘렸지만 운영체제에서 파일시스템을 확장을 해줘야지 늘어난 공간을 사용 할 수 있다. EC2 인스턴스에 로그인해서 df 로 확인해보자.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       7.6G  1.6G  6.0G  21% /
tmpfs           475M     0  475M   0% /dev/shm
tmpfs           190M  832K  190M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/xvda15     105M  6.1M   99M   6% /boot/efi
tmpfs            95M  4.0K   95M   1% /run/user/1000

여전히 8G 공간만 사용하고 있다. lsblk 명령으로 모든 블록 디바이스에 대한 상세정보를 확인해보자.

$ lsblk
NAME     MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0      7:0    0  24.6M  1 loop /snap/amazon-ssm-agent/7528
loop1      7:1    0  55.7M  1 loop /snap/core18/2790
loop2      7:2    0  63.5M  1 loop /snap/core20/2015
loop3      7:3    0 111.9M  1 loop /snap/lxd/24322
loop4      7:4    0  40.8M  1 loop /snap/snapd/20092
xvda     202:0    0    20G  0 disk 
├─xvda1  202:1    0   7.9G  0 part /
├─xvda14 202:14   0     4M  0 part 
└─xvda15 202:15   0   106M  0 part /boot/efi

xvda 크기는 20G 이지만 루트 파티션인 xvda1 은 8G만 사용하고 있다.

growpart 명령을 이용해서 파티션 볼륨을 늘리자.

$ sudo growpart /dev/xvda 1
CHANGED: partition=1 start=227328 old: size=16549855 end=16777183 new: size=41715679 end=41943007

다시 lsblk 로 확인하면 루트 파티션이 20G로 확장된 것을 확인 할 수 있다.

$ lsblk
NAME     MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0      7:0    0  24.6M  1 loop /snap/amazon-ssm-agent/7528
loop1      7:1    0  55.7M  1 loop /snap/core18/2790
loop2      7:2    0  63.5M  1 loop /snap/core20/2015
loop3      7:3    0 111.9M  1 loop /snap/lxd/24322
loop4      7:4    0  40.8M  1 loop /snap/snapd/20092
xvda     202:0    0    20G  0 disk 
├─xvda1  202:1    0  19.9G  0 part /
├─xvda14 202:14   0     4M  0 part 
└─xvda15 202:15   0   106M  0 part /boot/efi

이제 resize2fs 명령을 실행해서 파일 시스템의 크기를 조정하면 된다.

$ sudo resize2fs /dev/xvda1
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/xvda1 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 3
The filesystem on /dev/xvda1 is now 5214459 (4k) blocks long.

df -h 명령을 실행해서 사용 가능한 디스크 공간을 확인해보자.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        20G  1.7G   18G   9% /
tmpfs           475M     0  475M   0% /dev/shm
tmpfs           190M  832K  190M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/xvda15     105M  6.1M   99M   6% /boot/efi
tmpfs            95M  4.0K   95M   1% /run/user/1000

파일 시스템이 20G로 확장됐다.

정리

EBS 볼륨은 늘릴 수 있지만 줄일 수는 없다. 더 작은 볼륨을 사용하려면, 새로운 볼륨을 만든 다음 애플리케이션을 이용해서 데이터를 더 작은 볼륨으로 마이그레이션 해야 한다. 그러므로 먼 미래를 예상해서 처음부터 큰 볼륨을 할당하는 것보다는 작은 볼륨을 만든 다음 모니터링하면서 늘리는 것을 권장한다.