어떤 이유로든 재부팅 없이 안전하게 EC2 Linux 서버를 확장해야 할 때가 있다. 이 글에서는 AWS에서 EC2 Linux 디스크를 확장하는 방법을 배우게 된다.

이 예제에서는 디스크 크기를 80GiB에서 120GiB로 확장하는 과정을 보여준다.

1단계: 볼륨 수정


AWS Console에 로그인하고 EC2의 볼륨(디스크)을 찾는다. 팁: 왼쪽 창에 Elastic Block Store > Volumes가 있다. 볼륨을 우클릭한 다음 "Modify Volume" 옵션을 선택한다. 아래 이미지와 같다. 적절한 크기를 선택하고 Modify 버튼을 클릭한다.


2단계: 디스크 크기 확인

먼저 명령을 실행하기 전에 서버에서 root 또는 sudo 상태여야 한다. 먼저 디스크 크기를 확인하며, 볼륨 수정 전 크기를 표시해야 한다. 이 예제에서는 80GiB여야 한다.

[root@server ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        7.8G     0  7.8G   0% /dev
tmpfs           7.8G     0  7.8G   0% /dev/shm
tmpfs           7.8G  416K  7.8G   1% /run
tmpfs           7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/nvme0n1p1   80G   51G   30G  64% /
tmpfs           1.6G     0  1.6G   0% /run/user/0

그렇다, 전체 디스크 크기가 80GiB라고 표시된다. 이제 블록 디바이스 목록을 확인하자. 명령 출력은 /dev/nvme0n1 디바이스에서 새 디스크 크기를 보여줘야 한다.

[root@server ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
nvme0n1       259:0    0  120G  0 disk
├─nvme0n1p1   259:1    0   80G  0 part /
└─nvme0n1p128 259:2    0    1M  0 part

그렇다! nvme0n1p1은 80GiB이지만 nvme0n1은 120GiB라고 표시된다. 이는 nvme0n1p1 파티션을 80GiB에서 120GiB로 확장할 수 있다는 의미다.

3단계: 확장하기

여기 마법이 있다:

[root@server ~]# growpart /dev/nvme0n1 1
CHANGED: partition=1 start=4096 old: size=167768031 end=167772127 new: size=251654111 end=251658207

growpart 명령은 디스크 파티션을 확장했을 뿐이며 아직 저장되지 않았다. 이제 파일 시스템에 수정 사항을 저장해야 한다.

[root@server ~]# xfs_growfs /
meta-data=/dev/nvme0n1p1         isize=512    agcount=41, agsize=524159 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1 spinodes=0
data     =                       bsize=4096   blocks=20971003, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
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 20971003 to 31456763

4단계: 디스크 크기 재확인

새 디스크 크기를 확인할 시간이다. 확인을 위해 명령을 다시 실행한다.

[root@server ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        7.8G     0  7.8G   0% /dev
tmpfs           7.8G     0  7.8G   0% /dev/shm
tmpfs           7.8G  412K  7.8G   1% /run
tmpfs           7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/nvme0n1p1  120G   51G   70G  42% /
tmpfs           1.6G     0  1.6G   0% /run/user/0

[root@server ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme0n1 259:0 0 120G 0 disk ├─nvme0n1p1 259:1 0 120G 0 part / └─nvme0n1p128 259:2 0 1M 0 part

축하한다! 재부팅 없이, 그리고 EBS(Elastic Block Storage)의 데이터 손실 없이 AWS EC2 Linux 서버를 성공적으로 확장했다.