- 아마존 웹서비스 하드 크기 작게 변경하기

    - root 볼륨이 아닌 경우는 새 볼륨을 생성해서 복사하면 끝(rsync)

    - 문제는 root 볼륨인 경우, 아래 설명


* 작업 시나리오
    - 목표 크기의 작은 볼륨을 가진 인스턴스를 생성해서, 그 작은 볼륨에 큰 볼륨을 dd 명령어를 통해 복사


* 상황
줄이려는 기존 EBS 볼륨 = Big
목표로 하는 작은 크기 볼륨 이름 = small


* 볼륨을 생성
Big이 존재
small을 생성 : Big과 동일한 인스턴스를 생성


* 별도의 (제3의) 작업용 인스턴스에 연결
    - (아래 볼륨들을 연결을 해제 한 후) 별도의 인스턴스에 연결
big =  /dev/sdf (xvdf)
small  = /dev/sdg (xvdg)


* 연결한 인스턴스에서 작업

    - 볼륨 정보
sudo -s
lsblk
df

//==========================
    - 큰 볼륨 디스크 검사
        - 마운트 하면 안된다.
e2fsck -f /dev/xvdf1

    - 사용중인 4k blocks 수 계산 (큰 볼륨)
resize2fs -M -p /dev/xvdf1

    - 마지막 줄을 기억해 놓는다
The filesystem on /dev/xvdf1 is now 909146 (4k) blocks long.


    - 16M로 환산
blockcount * 4 / (16 * 1024)
909146 *4 / (16*1024) = 221.959472 = 222 (반올림)


//=============
    - 디스크 복제
        - 큰볼륨(xvdf1) -> 작은 볼륨(xvdg1)
        - dd : 블록 단위 변환·복사 명령어
dd bs=16M if=/dev/xvdf1 of=/dev/xvdg1 count=222
     - 맨 마지막 숫자는 위에서 계산한 값


    - 복제후 검사(작은 볼륨)
resize2fs -p /dev/xvdg1
e2fsck -f /dev/xvdg1

//==================
* 복제된 볼륨(small)을 인스턴스에 연결

    - 현재 인스턴스 종료
shutdown -h now

볼륨을 연결해제후 실제 가동할 인스턴스에 /dev/sda1으로 연결



//===================================
// 참고
// 시스템이 아닌 일반 데이터 볼륨인 경우는 단순 복사

    - small 볼륨 파일 시스템 만들기
mkfs -t ext4 /dev/xvdf


    - 볼륨 마운트
mkdir /mnt/big
mount /dev/xvdf1 /mnt/big

mkdir /mnt/small
mount /dev/xvdg /mnt/small


    - 볼륨 동기화
sudo rsync -aHAXxSP /mnt/big/ /mnt/small




//=========================
//
https://ehikioya.com/shrink-amazon-ebs-volumes/


//=====================================================
https://n2ws.com/blog/how-to-guides/how-to-reduce-the-size-of-an-ebs-volume

https://serverfault.com/questions/673048/how-to-reduce-aws-ebs-root-volume-size


https://ehikioya.com/shrink-amazon-ebs-volumes/


반응형
Posted by codens