Problem
Amazon EC2 (Linux)를 사용할 때 인스턴스의 여유 공간이 부족해지는 문제가 가끔 발생합니다. Amazon Elastic Block Store(Amazon EBS) 인스턴스에 /root
파티션의 볼륨을 동적으로 확장하려면 어떻게 할까요?
Solution
먼저 콘솔에서 확장이 필요한 볼륨을 선택하고 확장한다.
아래 이미지 처럼 원하는 크기로 확장 할 수 있다.
먼저 파티션 크기와 상태를 확인합니다1.
ubuntu@ip-xxx:/var/log$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 33.3M 1 loop /snap/amazon-ssm-agent/3552
loop1 7:1 0 70.3M 1 loop /snap/lxd/21029
loop2 7:2 0 32.3M 1 loop /snap/snapd/12704
loop3 7:3 0 55.5M 1 loop /snap/core18/2074
loop4 7:4 0 67.6M 1 loop /snap/lxd/20326
loop5 7:5 0 25M 1 loop /snap/amazon-ssm-agent/4046
loop6 7:6 0 55.4M 1 loop /snap/core18/2066
loop9 7:9 0 32.3M 1 loop /snap/snapd/12398
nvme1n1 259:0 0 22G 0 disk /data
nvme0n1 259:1 0 100G 0 disk
└─nvme0n1p1 259:2 0 8G 0 part /
확장이 필요한 파티션을 선택하여 파티션 확장을 시도한다.
ubuntu@ip-xxx:/var/log$ sudo growpart /dev/nvme0n1 1
CHANGED: partition=1 start=2048 old: size=16775135 end=16777183 new: size=209713119 end=209715167
ubuntu@ip-xxx:/var/log$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 33.3M 1 loop /snap/amazon-ssm-agent/3552
loop1 7:1 0 70.3M 1 loop /snap/lxd/21029
loop2 7:2 0 32.3M 1 loop /snap/snapd/12704
loop3 7:3 0 55.5M 1 loop /snap/core18/2074
loop4 7:4 0 67.6M 1 loop /snap/lxd/20326
loop5 7:5 0 25M 1 loop /snap/amazon-ssm-agent/4046
loop6 7:6 0 55.4M 1 loop /snap/core18/2066
loop9 7:9 0 32.3M 1 loop /snap/snapd/12398
nvme1n1 259:0 0 22G 0 disk /data
nvme0n1 259:1 0 100G 0 disk
└─nvme0n1p1 259:2 0 100G 0 part /
resize2fs
를 이용해 파티션 반영을 시도한다.
sudo resize2fs /dev/root
ubuntu@ip-xxx:/var/log$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 97G 7.6G 90G 8% /
devtmpfs 973M 0 973M 0% /dev
tmpfs 978M 0 978M 0% /dev/shm
tmpfs 196M 1.2M 195M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 978M 0 978M 0% /sys/fs/cgroup
/dev/loop0 34M 34M 0 100% /snap/amazon-ssm-agent/3552
/dev/nvme1n1 22G 3.1G 19G 15% /data
/dev/loop4 68M 68M 0 100% /snap/lxd/20326
/dev/loop6 56M 56M 0 100% /snap/core18/2066
overlay 97G 7.6G 90G 8% /var/lib/docker/overlay2/426c953f22aaa7fa03151b3056851d74cffccc33b0d9e0c830bed2894156b023/merged
overlay 97G 7.6G 90G 8% /var/lib/docker/overlay2/81b8fbc658c8b072cf7f56d38a759088b29d9263f0ad1e5eac29f93ed480a7d3/merged
overlay 97G 7.6G 90G 8% /var/lib/docker/overlay2/80b61384d1bd93fc8e156064fa838e8f80c5fb2ab62b7aaa9d8b99ff0cbfa79a/merged
overlay 97G 7.6G 90G 8% /var/lib/docker/overlay2/0bf0f0b6c8b531d6ebc5c9c66804066cc9935d1715cc72b7c7afc276d4274bda/merged
overlay 97G 7.6G 90G 8% /var/lib/docker/overlay2/a7da263e825d9b5a010c34425ee874238417b54f6597c37e999de90b5d54cb50/merged
/dev/loop3 56M 56M 0 100% /snap/core18/2074
/dev/loop9 33M 33M 0 100% /snap/snapd/12398
/dev/loop1 71M 71M 0 100% /snap/lxd/21029
/dev/loop2 33M 33M 0 100% /snap/snapd/12704
/dev/loop5 25M 25M 0 100% /snap/amazon-ssm-agent/4046
tmpfs 196M 0 196M 0% /run/user/1000
Troubleshooting
mount 오류가 발생할 경우
$ sudo mount /dev/xvdf /data
mount: /data: wrong fs type, bad option, bad superblock on /dev/xvdf, missing codepage or helper program, or other error.
ext4
로 파일 시스템을 포멧 후 다시 마운트하면 된다.
$ sudo mkfs.ext4 /dev/xvdf
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
134217728 inodes, 536870912 blocks
26843545 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
16384 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done