AWS_FAQ

EC2를 생성 하면서 EBS를 생성 했는데 용량을 줄이거나, 늘려야 할 때가 있습니다.


데이터가 얼마나 늘어날지 예상이 되질 않아 사이즈를 넉넉하게 잡곤 하는데, 

예상보다 사이즈가 늘지 않거나, 갑자기 급증 한다면? 


EBS 사이즈를 늘리거나, 다른 대체 스토리지(예. S3... )로 분산 이동 해야 할 것입니다.


EBS의 용량을 늘리거나, 줄이는 방법을 소개 합니다.


현재까지 AWS 자체적으로 EBS를 줄이거나, 늘리는 기능을 제공하진 않습니다.


 사이즈 조정 하고자 하는 두가지 방법 중 snapshot을 활용하는 방벙에 대해 소개 합니다.

-  Snapshot 기능 활용

-  Linux의 경우 Rsync 활용 



 1. EBS Snapshot 생성


aws_ebs_snapshot1.png



2. 생성 된 Snapshot 으로 Volume 생성

aws_ebs_snapshot3.png



3.1 생성 할 Volume 사이즈 지정


aws_ebs_snapshot4.png

* 사용하고자 하는 EC2의 AZ와 동일한 AZ를 선택할 것.


3.2. Snapshot으로 생성 한 Volume 이름 지정 및 EC2에 Attach

volumes => 볼륨 선택 => Actions => Attach Volume

aws_ebs_snapshot5.png


3.3. Attach Volume 화면

aws_ebs_snapshot6.png

  * 볼륨의 경우는 아래와 같이 장치명을 변경 된다는 안내 ==> 

  * 아래 그림 처럼 EC2내에서 해당 볼륨은 /dev/xvdf 라는 장치로 인식


 



4. 디스크 교체 (EBS 볼륨 변경)

EC2 접속해서 디스크 상태를 확인 합니다.


# fdisk -l 


=== EC2 내 인식 된 용량 및 Device name.

aws_ebs_snapshot7.png


위 스크린샷에는 데이터 영역의 EBS가 존재하지 않지만, 

/dev/xvdd 라는 장치로 /data 영역에 마운트 되어있다고 가정 합니다.


[ec2-user@localhost ~]$ df -Th

Filesystem     Type   Size  Used Avail Use% Mounted on

/dev/xvda1     ext4   7.9G  3.6G  4.0G  47% /

tmpfs          tmpfs  498M     0  498M   0% /dev/shm

/dev/xvdd1     ext4    42G  708M   39G   2% /data


볼륨을 추가로 생성 했기 때문에, 추가로 마운트 해주어야 합니다.

(관리자 권한을 필요로 하는 작업이 있기에 root 권한 획득합니다.)


권리자 권한 상승 => 임시 디렉토리 생성 => 생성 된 디렉토리에 추가 된 볼륨 마운트 => snapshot 이후 변동 된 데이터 sync 

$ sudo su -

# mkdir /data_new

# mount /dev/xvdf1 /data_new


 웹 서비스나 경로 지정을 상대경로로 지정한 경우에는 디렉토리명을 교체 할 필요 없다면 그대로 /data_new 등과 같이 지정해서 그대로 사용하면 됩니다.
절대경로로 지정 했거나, 서비스 레벨에서 수정 해야 하는 경우가 대부분인데 이 경우는 아래처럼 기존 볼륨을 unmount 수행하고 추가 된 볼륨을 mount 해줍니다.

### 기존 데이터 sync

# rsync -auvg /data/ /data_new/

### Device의 UUID 확인 

# blkid 

/dev/xvda1: LABEL="cloudimg-rootfs" UUID="27161562-4167-40e6-90ad-0c63a3b9b766" TYPE="ext4" 
/dev/xvdd1: UUID="c8981060-3234-4801-b431-0fe22f28ed92" TYPE="ext4"
/dev/xvdf1: UUID="c8981060-4734-4802-b431-0fe22f46od76" TYPE="ext4"

### 부팅시 자동 마운트를 위해서 /etc/fstab 등록 및 변경
LABEL=cloudimg-rootfs   /        ext4   defaults,discard        0 0
UUID="c8981060-3234-4801-b431-0fe22f28ed92"     /data   ext4    defaults,discard 1 0   ## 기존 설정으로 삭제 하거나, # 주석처리 
UUID="c8981060-4734-4802-b431-0fe22f46od76"     /data   ext4    defaults,discard 1 0  ## 추가 된 볼륨 설정 추가


### /data 디렉토리에 종속 된 서비스가 있다면 서비스 중지 후 마운트 해제

# umount /data

# umount /data_new

### crontab에 등록 해둔 장치 모두를 마운트 시킵니다.

# mount -a 


# df -Th

Filesystem     Type      Size  Used Avail Use% Mounted on

/dev/xvda1     ext4      7.8G  1.6G  5.8G  22% /

/dev/xvdf1     ext4      42.0G   44M  9.2G   1% /data


중지 시켰던 서비스 시작.


모두 확인이 되고 난 이후엔 기존 볼륨은 detach 후 삭제 합니다.



=== 부록 : Root (OS 영역) 볼륨 교체 === 

부팅역할을 수행하는 EBS 였다면, 콘솔에서 EC2 stop을 진행해 종료 합니다.

이후에  기존 Root Device EBS를 떼어냅니다. (Detach Volume)


* 주의하실 부분은 root device의 장치명을 기억 하셔야합니다.


보통 리눅스의 경우 /dev/sda1


3.1 까지의 작업은 볼륨 생성까지 동일하게 진행하고, 생성 된 볼륨을 Attach 해줍니다.

Attach 할때 device name을 입력 할때 기억 해둔 장치명을 입력. (예: /dev/sda1)


EC2를 시작하게 되면 추가 된 볼륨으로 부팅 됩니다.