EBS 루트 볼륨 변경
# 디스크 용량 확인
[ ~]$ df -h
...
/dev/xvda 600G 49G 45G 9% /
현재 사용중인 용량은 루트 볼륨 용량의 9%밖에 되지 않습니다
루트 볼륨의 용량이 너무 커서 600G -> 100G 축소 하려고 합니다.
새로운 볼륨 생성
더 작은 크기의 볼륨을 생성하고 루트 볼륨을 바꿔주는 방법으로 진행했습니다.
생성한 볼륨도 인스턴스에 연결해 줍니다.(같은 가용 영역으로 생성!)
# 블록 디바이스 목록
[ ~]$ sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 600G 0 disk
└─xvda1 202:1 0 600G 0 part /
xvdf 202:80 0 100G 0 disk # new!
600G 용량의 xvda가 사용중인 루트 볼륨,
100G 용량의 xvdf가 새로 생성한 볼륨입니다.
# 마운트 디렉토리 생성 및 마운트 에러
[ ~]$ mkdir -p /mnt/new-vol
[ ~]$ sudo mount /dev/xvdf /mnt/new-vol
mount: /mnt/new-vol: wrong fs type, bad option, bad superblock on /dev/xvdf, missing codepage or helper program, or other error.
새로운 볼륨을 마운트 할 디렉토리를 만들고
마운트하려 했더니 오류가 발생했습니다.
새로운 볼륨 포맷 / 마운트
# 파일 시스템 ext4로 포맷
[ ~]$ sudo mkfs -t 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
6553600 inodes, 26214400 blocks
1310720 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2174746624
800 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
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
# 마운트 디렉토리 생성 및 마운트
[ ~]$ mkdir -p /mnt/new-vol
[ ~]$ sudo mount /dev/xvdf /mnt/new-vol
디스크를 ext4 파일 시스템으로 포맷 후
마운트하니 정상적으로 마운트에 성공했습니다.
# /(루트) -> /mnt/new-vol 데이터 복사
[ ~]$ sudo rsync -axv / /mnt/new-vol/
# 옮긴 데이터 확인
[ ~]$ ll /mnt/new-vol
이제 루트볼륨에 있던 데이터를 새로운 볼륨으로 복사합니다.
# 부트 로더 설치
[ ~]$ sudo grub2-install --root-directory=/mnt/new-vol --force /dev/xvdf
Installing for i386-pc platform.
grub2-install: warning: File system `ext2' doesn't support embedding.
grub2-install: warning: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..
Installation finished. No error reported.
# /mnt/new-vol 마운트 해제
[ ~]$ sudo umount /mnt/new-vol/
[ ~]$ sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 600G 0 disk
└─xvda1 202:1 0 600G 0 part /
xvdf 202:80 0 100G 0 disk
부트 로더를 설치하고
새로운 볼륨의 마운트를 해제합니다.
# UUID 확인
[ ~]$ blkid
/dev/xvda1: LABEL="/" UUID="1234" TYPE="xfs" PARTLABEL="Linux" PARTUUID="1111" # 루트 볼륨
/dev/xvdf: UUID="5678" TYPE="ext4" # new!
# 새로운 볼륨에 루트 볼륨 UUID 설정
[ ~]$ sudo tune2fs -U 1234 /dev/xvdf
tune2fs 1.42.9 (28-Dec-2013)
루트 볼륨의 UUID를 복사해서 새로운 볼륨에 설정해줍니다
# UUID가 동일한지 확인
[ ~]$ sudo blkid
/dev/xvda1: LABEL="/" UUID="1234" TYPE="xfs" PARTLABEL="Linux" PARTUUID="1111"
/dev/xvdf: UUID="1234" TYPE="ext4" PTTYPE="dos"
확인해보니 새로운 볼륨에 루트볼륨과 같은 UUID가 설정됐습니다.
루트 볼륨 변경
AWS 콘솔로 돌아가 EBS 루트 볼륨과 새로만든 볼륨을 모두 해제합니다
(인스턴스 중지를 해야 해제가 가능합니다!)
새로 만든 100G 볼륨만 다시 볼륨 연결을 하는데
원래 루트 볼륨의 디바이스 이름으로 연결합니다
정상적으로 100G 볼륨이 루트 볼륨으로 설정이 됐습니다.
기존의 볼륨은 삭제했습니다.
# 디스크 용량 확인
[ ~]$ df -h
...
/dev/xvda 99G 49G 45G 53% /
# 블록 디바이스 확인
[ ~]$ sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 100G 0 disk /
디스크 용량을 확인해보니 루트 볼륨에 100G 볼륨으로 정상적으로 설정 됐습니다.
참고
https://medium.com/@m.yunan.helmy/decrease-the-size-of-ebs-volume-in-your-ec2-instance-ea326e951bce
https://southouse.tistory.com/25
'AWS' 카테고리의 다른 글
[AWS] EC2 인스턴스 /etc/fstab 편집 오류 (readonly) (1) | 2023.12.11 |
---|---|
[AWS] AWS linux2 php버전 다운그레이드 (0) | 2023.04.05 |