Cloud Architect/AWS

[AWS EBS] Volume을 소중히 다뤄보기

"Everything about infra" 2025. 11. 21. 10:57

안녕하세요,

오늘은 볼륨에 대해 알아보려고 합니다.

좋은 주말 되세요!

 

 

EBS 볼륨 복제는 예기치 못한 장애로부터 데이터를 보호하고 백업 및 재해복구를 용이하게 하며

운영 효율성을 높이는데에 필수적인 기능이니, 알아두면 좋습니다~!

 

 

01. AWS EBS란?

EBS (Elastic Block Storage)

  • AWS에서 제공하는 블록 스토리지 서비스로 고성능, 영구적 스토리지.
  • EC2 인스턴스에 연결하여 사용하는 네트워크 기반 블록 스토리지라고 합니다.
  • AZ 단위로 동작하여 같은 AZ에 있는 EC2 인스턴스와 연결이 가능합니다.

네트워크 기반 스토리지라면, 장점이 뭘까?

 

잠시 인스턴스 서버가 필요가 없게 될 경우 중지를 하게 될텐데 EBS는 네트워크 기반 스토리지여서

중지가 되어 있어도 독립적으로 스토리지 기능만 사용이 가능하며 추가 과금이 되지 않는다!

 

만약 인스턴스 자원 유형을 업그레이드 하거나 인스턴스를 교체해야 될 경우에

EBS만 분리시킨 후에 다시 재연결만 한다면 데이터가 그대로 유지되어 사용이 가능합니다.

 

 EBS 타입 유형

출처 : AWS EBS 사용자 가이드

 

1) gp3/gp2 : 범용 SSD

  • gp3 : 최신 타입, 비용 효율적, IOPS와 처리량을 크기와 무관하게 설정이 가능하다.
  • gp2 : 이전 세대, IOPS는 볼륨 크기에 비례

2) io2/io1 : 프로비저닝 IOPS SSD

  • 고성능, 높은 내구성, IOPS를 직접 설정 가능
  • io2는 io1보다 내구성과 성능이 더 뛰어나다.

3) 사용 사례

  • gp3,gp2 : boot volume, 개발/테스트 환경, 일반 어플리케이션
  • io2,io1 : 고성능 DB, 트랜잭션 처리 시스템, 높은 IOPS 요구 워크로드에 적합함.

 

02. 다른 VPC에서 EBS 스냅샷 복제

EC2 → Elastic Block Store → Snapshot 생성

  • 특정 인스턴스에 있는 볼륨을 선택하고, 스냅샷을 생성하자.

Snapshot 설정 → 계정 추가

  • 볼륨 스냅샷이 생성이 되었으면, 설정에서 공유할 계정을 추가하면 됩니다.
  • 만약, 볼륨이 암호화된 볼륨이라면 KMS 키도 대상 계정에 공유해야 합니다.
    • key policy 수정이 필요함!!

 

 공유된 계정에 접속하여 확인

  • EC2 → Storage 에서 확인이 가능하다!

 


03. EC2 서버에 마운트

절차 : 디스크 확인 → 마운트 디렉토리 생성 → 볼륨 마운트 → 마운트 확인 → 부팅 시 자동 마운트 설정

 

📌 disk 확인

  • 현재 disk 확인 시 복제한 볼륨에 대한 파티션이 없음을 확인할 수 있다.
lsblk

 

📌 마운트 디렉토리 생성 & 마운트

sudo mkdir -p /mnt/mydata
sudo mount /dev/nvme1n1p1 /mnt/mydata

# mount 확인
df -h

 

📌 부팅 시 자동 마운트 설정

  • 마운트 대상에 대한 UUID, 마운트디렉토리, 값 수정하여 추가 및 저장
sudo blkid /dev/nvme1n1p1
/dev/nvme1n1p1: UUID="abcd-1234" TYPE="ext4"

sudo cat /etc/fstab
LABEL=cloudimg-rootfs   /        ext4   defaults,discard        0 0

sudo vim /etc/fstab
UUID=abcd-1234 /mnt/mydata ext4 defaults,nofail 0 2

 

📌 마운트 저장

mount -a

 


04. 기존 EC2 인스턴스에서 루트 볼륨 교체

만약 스냅샷을 복제하여 새로운 디렉토리에 마운트 하는 것이 아닌, 교체 작업일 경우는 참고바랍니다.

 

사전 조건

  • EBS 볼륨은 동일 OS 기반으로 준비되어 있어야 한다.
  • 인스턴스 중지가 가능해야 한다 (Downtime 필요)
  • 인스턴스와 볼륨은 같은 AZ에 있어야 한다.
  • 인스턴스 중지를 시키고 작업을 해야하므로, 로컬PC에 aws 자격 증명 인증이 선행되야한다.

 

📌 인스턴스 중지 & 기존 루트 볼륨 확인

# 인스턴스 중지 확인
aws ec2 stop-instances --instance-ids [ec2 instance-id]

# 기존 루트 볼륨 확인
aws ec2 describe-instances --instance-ids [ec2 instance-id] --query "Reservations[].Instances[].BlockDeviceMappings"

인스턴스 상태 확인
기존 루트 볼륨 확인

 

📌 기존 루트 볼륨 제거 & 새 볼륨 연결

# 기존 루트 볼륨 분리
aws ec2 detach-volume --volume-id [OLD 볼륨id]

# 새 볼륨 연결
aws ec2 attach-volume --volume-id [NEW 볼륨 id] --instance-id [ec2 instance id] --device /dev/sda1

 

📌 인스턴스 시작

  • 볼륨 연결 시 attaching이 되었다면, 인스턴스 시작


4-1. 볼륨 교체 확인 작업

 

📌 기존 볼륨은 제거되고, 새로운 볼륨 attach 확인

 

📌 블록 디바이스(디스크, 파티션) 속성 확인 & 부팅 시 자동 마운트 확인

  • 루트 파티션(/)이 nvme0n1p1에 있고 파일 시스템은 ext4로 잘 설정되었음.
  • 라벨이 fstab과 일치하게 잘 설정되었음.

  • 마운트 잘 되어있는지 확인 완료.

 

감사합니다 :)