[AWS] EBS 용량 축소하기

오늘은 EBS 볼륨을 축소하는 법에 대해 적어보겠다. 이전 확장 방법처럼 AWS에서 EBS의 볼륨을 단순하게 축소하는 것은 불가능하다. EBS 볼륨을 축소하려면 새로운 볼륨을 커넥션 시킨 후 데이터를 옮기는 방법을 거쳐야한다.

  1. 기존 서버 볼륨 확인

현재 사용중인 볼륨은 총 50G로 설정해두었다. 루트 볼륨을 50G -> 30G로 축소 해보도록하겠다. 추후 테스트 확인을 위해 루트 디렉토리에 test 파일 하나를 생성해주도록 하겠습니다.

2. 새로운 볼륨 증설

30G 용량의 볼륨을 하나 생성해 준 후 기존의 서버에 연결 시켜주도록하겠다. 

다음과 같이 볼륨을 잘 연결된 모습을 확인할 수 있다. 
루트 볼륨은 xvda이고 새로 추가한 볼륨은 xvdf이다. 이제 루트 볼륨의 데이터를 새로추가한 xvdf에 마이그레이션 후 루트 볼륨을 바꿔줘야 한다. 

3. 새로운 볼륨 포맷 마운트 진행

기존의 볼륨을 이용하면 파일 시스템을 포맷하고 서버에 마운트 해줘야한다. 

$ sudo mkfs -t ext4 /dev/xvdf
$ sudo mkdir -p /mnt/new-vol
$ sudo mount /dev/xvdf /mnt/new-vol

4. 루트 볼륨 데이터 복사

$ sudo rsync -axv / /mnt/new-vol/ #rsync를 통핸 데이터 이전
$ ll /mnt/new-vol #볼륨 데이터 확인 

 

rsync를 통해 루트볼륨의 데이터를 새로 추가한 볼륨에 이전시켜줍니다.

5. 부트로더 설치

기존 루트 볼륨(xvda)은 운영 체제와 함께 설치된 부트로더를 가지고 있지만, 새로운 볼륨(xvdf)은 그저 빈 파일 시스템이다. 새로 추가한 볼륨을 부팅 가능한 루트 볼륨으로 사용하려면 부트로더를 설치해 주어야 한다. 그렇지 않으면 시스템은 부팅할 수 없다. 

6. UUID 설정

$ sudo e2fsck -f /dev/xvdf
$ sudo tune2fs -U 693eea79-11af-44b1-9c1e-01aced209966 /dev/xvdf
$ sudo blkid

루트 볼륨의UUID를 복사해서 새로운 볼륨에 설정해준다. 이 과정이 필요한 이유는 운영 체제의 부팅 프로세스가 특정한 UUID에 따라 루트 파티션을 찾기 때문이다. 따라서 UUID를 기존 루트 볼륨과 동일하게 설정하여 시스템이 이 새로운 볼륨을 이전과 동일한 루트 볼륨으로 인식하도록 해야 한다. 즉 쉽게 이해하면 UUID를 바꿔치기 해주는것이다. 

7. 루트 볼륨 변경

서버를 정지 시킨 후 기존에 연결되어있던 볼륨을 다 분리 시켜준다. 

이전에 새로만든 30G 볼륨을 루트볼륨(xvda)으로 연결 시켜줄것이다. 

볼륨을 정상적으로 연결 시켜준 후 다시 서버를 기동시킨 후 확인해보겠다. 

30G인 볼륨이 정상적으로 루트 볼륨으로 교체된 되었고 기존 루트 볼륨에서 만들었던 test 파일도 정상적으로 잘 이전된 모습을 확인할 수 있다. 

 

막상해보니 별로 실용적이진 않은것 같다. 특이사항이 있을지 모르니 기록해두도록 하겠다.