본문 바로가기
SW Developer/Server

[AWS] EC2 모노릭틱(monolithic architecture) 서버 끄지 않고 러닝 상태에서 디스크/파티션 용량 사이즈 늘리기 방법

by ashespia 2021. 9. 29.
SMALL

 

AWS EC2 Linux Reboot없이 파일 시스템 사이즈 늘리기

AWS에 EC2를 모노리틱 구조로 (monolithic architecture) 사용하고 있는 서버가 있다.

 

어느날 서버 서비스가 잘 돌지 않아서 확인해 보니 루트(/) 경로의 disk 사이즈가 440M만 남아있는 상태 이다.

 

AWS의 경우 EC2에 마운트(mount) 되어 있는 볼륨을 동적으로 변경 가능다.  

 

보통 일반적인 단일 서버의 물리적인 서버인 온프레미스 on premise 서버의 경우 디스크 용량을 늘리기 위해서는 reboot을 해야한다. 

 

1. 현재 서버의 디스크 / 파티션 상태 확인 명령어 df -h 통해 가용 용량을 확인할 수 있다. 

 

ubuntu@ip-172-31-34-92:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            3.8G     0  3.8G   0% /dev
tmpfs           769M   81M  688M  11% /run
/dev/nvme0n1p1   31G   31G  440M  99% /
tmpfs           3.8G     0  3.8G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           3.8G     0  3.8G   0% /sys/fs/cgroup
/dev/loop3       34M   34M     0 100% /snap/amazon-ssm-agent/3552
tmpfs           769M     0  769M   0% /run/user/0
/dev/loop2       56M   56M     0 100% /snap/core18/2074
/dev/loop0      100M  100M     0 100% /snap/core/11420
/dev/loop5       25M   25M     0 100% /snap/amazon-ssm-agent/4046
/dev/loop4       56M   56M     0 100% /snap/core18/2128
/dev/loop1      100M  100M     0 100% /snap/core/11606
tmpfs           769M     0  769M   0% /run/user/1000

 

AWS EC2에서 디스크 용량 확인 시 32G 상태

로그 파일이 계속 남는 상태에서 가용 디스크 용량이 얼마 남지 않았다. 

 

그러나 클라우드 환경의 AWS의 장점으로 재부팅하지 않고 시스템을 유지한 상태로 실시간으로 디스크 용량을 늘릴 수 있다.

 

EC2 대쉬보드 왼쪽 탭에서 Elastic Block Store >  볼륨 선택

 

 

작업 > 볼륨 수정 선택 

 

 

볼륨수정 > 크기 > 원하는 사이즈로 변경 

최소 1GiB에서 최대 16384GiB 까지 변경 가능하다.

참고로 볼륨 크기는 확대만 가능하고 축소할 수 없다.

 

EC2 대쉬보드에서 볼륨 크기가 32GiB 에서 64GiB로 변경됨을 확인할 수 있다. 

 

 

shell 접속하여 실제 디스크 / 파티션 사이즈가 증가했는지 확인해 보면 실제로 사이즈는 64GiB로 변경되지 않는다. 

 

root@ip-172-31-34-92: /log/fota/amcp]df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs  3.8G     0  3.8G   0% /dev
tmpfs          tmpfs     769M   81M  688M  11% /run
/dev/nvme0n1p1 ext4       31G   31G  5.4M 100% /
tmpfs          tmpfs     3.8G     0  3.8G   0% /dev/shm
tmpfs          tmpfs     5.0M     0  5.0M   0% /run/lock
tmpfs          tmpfs     3.8G     0  3.8G   0% /sys/fs/cgroup
/dev/loop3     squashfs   34M   34M     0 100% /snap/amazon-ssm-agent/3552
/dev/loop2     squashfs   56M   56M     0 100% /snap/core18/2074
/dev/loop0     squashfs  100M  100M     0 100% /snap/core/11420
/dev/loop5     squashfs   25M   25M     0 100% /snap/amazon-ssm-agent/4046
/dev/loop4     squashfs   56M   56M     0 100% /snap/core18/2128
/dev/loop1     squashfs  100M  100M     0 100% /snap/core/11606
tmpfs          tmpfs     769M     0  769M   0% /run/user/1000

 

 

2. 리눅스 디바이스 정보 확인하는 명령어 lsblk 를 사용하여 확인

 

nvme0n1p1 의 늘러난 파티션 사이즈는 있지만 활성화되어 사용할 수 없는 상태로 있다. 

즉 EC2 대쉬보드 Elastic Block Store 볼륨 설정에서 늘린 사이즈는 마운트(mount) 형태로 늘어나 있다.

 

그러나 아직 활성화되어있지 않은 상태이다.

root@ip-172-31-34-92: /log/fota/amcp]lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0         7:0    0 99.4M  1 loop /snap/core/11420
loop1         7:1    0 99.4M  1 loop /snap/core/11606
loop2         7:2    0 55.5M  1 loop /snap/core18/2074
loop3         7:3    0 33.3M  1 loop /snap/amazon-ssm-agent/3552
loop4         7:4    0 55.4M  1 loop /snap/core18/2128
loop5         7:5    0   25M  1 loop /snap/amazon-ssm-agent/4046
nvme0n1     259:0    0   64G  0 disk
`-nvme0n1p1 259:1    0   32G  0 part /

 

3. growpart 명령어로 파티션 / 디스크를 확장

 

root@ip-172-31-34-92: /log/fota/amcp]sudo growpart /dev/nvme0n1 1
CHANGED: partition=1 start=2048 old: size=67106783 end=67108831 new: size=134215647,end=134217695
root@ip-172-31-34-92: /log/fota/amcp]lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0         7:0    0 99.4M  1 loop /snap/core/11420
loop1         7:1    0 99.4M  1 loop /snap/core/11606
loop2         7:2    0 55.5M  1 loop /snap/core18/2074
loop3         7:3    0 33.3M  1 loop /snap/amazon-ssm-agent/3552
loop4         7:4    0 55.4M  1 loop /snap/core18/2128
loop5         7:5    0   25M  1 loop /snap/amazon-ssm-agent/4046
nvme0n1     259:0    0   64G  0 disk
`-nvme0n1p1 259:1    0   64G  0 part /

 

파티션 사이즈는 아직 늘어나지 않았다.


root@ip-172-31-34-92: /log/fota/amcp]df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            3.8G     0  3.8G   0% /dev
tmpfs           769M   81M  688M  11% /run
/dev/nvme0n1p1   31G   31G  4.9M 100% /
tmpfs           3.8G     0  3.8G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           3.8G     0  3.8G   0% /sys/fs/cgroup
/dev/loop3       34M   34M     0 100% /snap/amazon-ssm-agent/3552
/dev/loop2       56M   56M     0 100% /snap/core18/2074
/dev/loop0      100M  100M     0 100% /snap/core/11420
/dev/loop5       25M   25M     0 100% /snap/amazon-ssm-agent/4046
/dev/loop4       56M   56M     0 100% /snap/core18/2128
/dev/loop1      100M  100M     0 100% /snap/core/11606
tmpfs           769M     0  769M   0% /run/user/1000

 

4. 사용하고 있는 파일시스템 확인 방법 cat /etc/fstab

 

cat /etc/fstab에서 사용 파일시스템이 xfs 인지 ex4 인지 먼저 확인 후 해당 명령어 실행

 

ubuntu@ip-172-31-34-92:~$ cat /etc/fstab
LABEL=cloudimg-rootfs   /        ext4   defaults,discard        0 0

 

XFS 파일시스템을 사용하지 않는데 xfs_growfs 명령어 실행 시 Error 표시 내용 

 

root@ip-172-31-34-92: /log/fota/amcp]sudo xfs_growfs -d /
xfs_growfs: / is not a mounted XFS filesystem

 

5. 파일 시스템에 대해 해당하는 xfs_growfs / resize2fs 명령어로 확장 

현재 나의 사용 서버의 파일시스템 정보를 기준으로 사이즈 증가 시키는 명령어가 다르다.

xfs 파일 시스템인지 ex4 파일 시스템인지 먼저 확인이 필요하다.

파일시스템 명령어
XFS

xfs_growfs

ex4

resize2fs 

 

ex4 파일 시스템임으로 resize2fs 명령어로 시스템 사이즈를 증가 시키자.

 

root@ip-172-31-34-92: /log/fota/amcp]sudo resize2fs /dev/nvme0n1p1
resize2fs 1.42.13 (17-May-2015)
Filesystem at /dev/nvme0n1p1 is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 4
The filesystem on /dev/nvme0n1p1 is now 16776955 (4k) blocks long.

사용한 명령어로 파티션 사이즈 확인 df -h 명령어로 확인


root@ip-172-31-34-92: /log/fota/amcp]df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            3.8G     0  3.8G   0% /dev
tmpfs           769M   81M  688M  11% /run
/dev/nvme0n1p1   62G   31G   32G  50% /
tmpfs           3.8G     0  3.8G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           3.8G     0  3.8G   0% /sys/fs/cgroup
/dev/loop3       34M   34M     0 100% /snap/amazon-ssm-agent/3552
/dev/loop2       56M   56M     0 100% /snap/core18/2074
/dev/loop0      100M  100M     0 100% /snap/core/11420
/dev/loop5       25M   25M     0 100% /snap/amazon-ssm-agent/4046
/dev/loop4       56M   56M     0 100% /snap/core18/2128
/dev/loop1      100M  100M     0 100% /snap/core/11606
tmpfs           769M     0  769M   0% /run/user/1000

LIST

댓글