2015.09.06 23:33
EC2를 생성 하면서 EBS를 생성 했는데 용량을 줄이거나, 늘려야 할 때가 있습니다.
데이터가 얼마나 늘어날지 예상이 되질 않아 사이즈를 넉넉하게 잡곤 하는데,
예상보다 사이즈가 늘지 않거나, 갑자기 급증 한다면?
EBS 사이즈를 늘리거나, 다른 대체 스토리지(예. S3... )로 분산 이동 해야 할 것입니다.
EBS의 용량을 늘리거나, 줄이는 방법을 소개 합니다.
현재까지 AWS 자체적으로 EBS를 줄이거나, 늘리는 기능을 제공하진 않습니다.
사이즈 조정 하고자 하는 두가지 방법 중 snapshot을 활용하는 방벙에 대해 소개 합니다.
- Snapshot 기능 활용
- Linux의 경우 Rsync 활용
1. EBS Snapshot 생성
2. 생성 된 Snapshot 으로 Volume 생성
3.1 생성 할 Volume 사이즈 지정
* 사용하고자 하는 EC2의 AZ와 동일한 AZ를 선택할 것.
3.2. Snapshot으로 생성 한 Volume 이름 지정 및 EC2에 Attach
volumes => 볼륨 선택 => Actions => Attach Volume
3.3. Attach Volume 화면
* 볼륨의 경우는 아래와 같이 장치명을 변경 된다는 안내 ==>
* 아래 그림 처럼 EC2내에서 해당 볼륨은 /dev/xvdf 라는 장치로 인식
4. 디스크 교체 (EBS 볼륨 변경)
EC2 접속해서 디스크 상태를 확인 합니다.
# fdisk -l
=== EC2 내 인식 된 용량 및 Device name.
위 스크린샷에는 데이터 영역의 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
### 기존 데이터 sync
# rsync -auvg /data/ /data_new/
### Device의 UUID 확인
# blkid
### /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를 시작하게 되면 추가 된 볼륨으로 부팅 됩니다.