EBS(Elastic Block Store)란?
- 인스턴스가 실행 중인 동안 연결 가능한 네트워크 드라이브
- 블록 스토리지에 저장하는 경우, 해당 파일은 고정된 크기의 데이터 청크로 분할된 후 저장
- EBS 볼륨을 사용하면 인스턴스가 종료된 후에도 데이터 지속 가능
- 이전 EBS볼륨을 마운트하면 데이터를 다시 받을 수 있음
- 특정 AZ에서 생성된 볼륨은 특정 AZ에서만 연결 가능 (스냅샷을 사용하면 다른 AZ에도 연결 가능)
- 프리티어에서는 매달 30GB의 EBS 스토리지를 범용 SSD 혹은 마그네틱 유형으로 제공
- 물리적 드라이브가 아니기 때문에 지연 시간이 생길 수 있음
- 하나의 EBS는 매우 빠르게 다른 인스턴스로 연결될 수 있다
- 용량(GB, IOPS=단위 초당 전송 수)을 미리 결정해야 하지만 나중에 용량을 늘릴 수도 있음
- EBS가 꼭 EC2인스턴스에 연결되어있지 않아도 됨
EC2 인스턴스 생성시 EBS 볼륨 설정에서 "종료 시 삭제"에 체크했다면 인스턴스가 종료(Termination), 즉 삭제되면 EBS도 삭제됨
EBS 실습
1. 볼륨탭으로 이동
EC2 > Volumes에서 현재 볼륨들을 확인할 수 있다.

2. 원하는 볼륨 확인

현재 어느 인스턴스에 연결되어있는지 정보들을 간략하게 볼 수 있다.
3. 새 볼륨 추가하기
Volumes에서 Create Volumes를 선택해 생성한다

원하는 볼륨 타입과 용량을 선택하고 AZ는 연결할 인스턴스와 동일한 AZ를 선택해준다.
4. 볼륨 인스턴스에 연결하기
새로 만든 볼륨을 선택해 Actions > Attach volume으로 원하는 인스턴스에 연결한다.
볼륨이 "인스턴스 종료 시 삭제"인지 확인하려면 인스턴스탭에서 해당 인스턴스를 누르고 Storage 탭의 볼륨 목록에서 스크롤을 오른쪽으로 끝까지 당기면 Delete on termination 여부를 확인할 수 있다.
새로 연결한 가용 상태의 EBS블록을 사용하는 방법 링크:
https://docs.aws.amazon.com/ko_kr/ebs/latest/userguide/ebs-using-volumes.html
EBS Snapshots
- EBS볼륨의 특정 시점에 대한 백업
- 다른 AZ나 리전에서도 사용할 수 있음
- EBS Snapshot Archive : 최대 75%까지 저렴한 아카이브 티어. 스냅샷을 옮길 수 있음. 저렴한 대신 스냅샷을 아카이브 티어로 옮기면 아카이브를 복원하는데 24~72시간이 걸림.
- EBS Snapshot Recycle Bin : EBS 스냅샷을 삭제하는 경우 영구 삭제 대신 휴지통에 넣을 수 있음. 실수로 삭제하는 경우 복원이 가능함. 휴지통에 보관되는 기간은 1일~1년으로 설정 가능
- Fast Snapshot Restore(FSR) : 스냅샷을 완전 초기화해 첫 사용에서의 지연 시간을 없애는 기능. 스냅샷이 아주 크고 빠르게 EBS볼륨이나 EC2인스턴스를 빠르게 초기화해야 할 때 유용. 비용이 많이듦.
스냅샷 실습
👉 스냅샷 생성하기

EC2 > Volumes > 원하는 EC2 볼륨 선택 > Actions > Create Snapshot 선택 후 스냅샷 설명 입력하고 생성 클릭
👉 스냅샷을 다른 리전으로 복사하기
EC2 > Snapshots 에서 스냅샷을 누르고 오른쪽 마우스를 눌러 Copy가능

현재는 프리티어라 스냅샷 복사가 막혀있음!
프리 티어에서 가능한 EBS 스냅샷 작업
✅ 스냅샷 생성(Create Snapshot) → 무료 제공된 1GB 한도 내에서 가능
✅ 스냅샷 삭제(Delete Snapshot) → 비용 절감을 위해 필요
👉 스냅샷으로 볼륨 생성하기
EC2 > Snapshots을 선택하고 Actions에서 Create volume from snapshot 을 선택해서 볼륨을 만들면 된다.
이렇게 다른 AZ로 볼륨을 복사하는 것이 가능하다.
👉 스냅샷을 Recycle Bin으로 보호하기
EC2 > Snapshots > Recycle Bin 선택

Recycle Bin은 스냅샷과 AMI를 보관한다.
Create retension rule을 선택

- 리소스 타입: 스냅샷,AMI중 선택한다.
- 보존할 리소스: 보존규칙이 선택한 모든 리소스에 적용될 것인지, 특정 태그에만 적용할 것인지 선택한다.
- 보존 기간: 며칠 동안 보존할 것인지 선택한다.
이렇게 보존 규칙을 생성하면 Recycle Bin > Resources에서 휴지통에 리소스가 있는지 확인할 수 있다.
스냅샷을 삭제하기 전에 Storage tier를 확인하면 Standard이다.
Recycle Bin에서 스냅샷을 복구하면 다시 스냅샷이 복구된다.
👉 스냅샷 아카이브 사용
EC2 > Snapshots > 원하는 스냅샷을 선택한 후 Actions > Archive snapshot을 선택해서 옮기면 storage tier가 standard에서 archive로 변경된다.
스냅샷 수명주기 정책
1.스냅샷 수명주기 정책 (Snapshot Lifecycle Policy)
목적: 스냅샷을 자동 생성하고, 일정 기간 후 자동 삭제하기 위해 사용함.
기능:
매일, 매주 등 주기적으로 스냅샷을 생성함.
예: "매일 1번 백업, 7일 후 자동 삭제"
설정 위치: EC2 → Elastic Block Store → Lifecycle Manager
자동화 수준: 매우 높음. 정책을 세팅해두면 자동 실행됨.
🟡 장점:
백업을 자동화할 수 있음.
오래된 스냅샷을 자동으로 정리해 비용 절감 가능.
2. 리사이클 빈 (Recycle Bin for EBS Snapshots)
목적: 실수로 삭제된 스냅샷을 복구할 수 있게 하는 안전장치.
기능:
스냅샷을 삭제해도 바로 제거되지 않고 보존 기간 동안 "휴지통"에 보관됨.
설정한 기간(예: 7일) 동안은 복원 가능.
설정 위치: EC2 → Elastic Block Store → Recycle Bin
자동화 수준: 수동 삭제 시 작동.
🟠 장점:
실수로 스냅샷을 삭제했을 때 복구 가능.
예기치 못한 장애나 오작동 대비.
AMI (Amazon Machine Image)
- EC2 인스턴스를 통해 만든 이미지를 통칭한다.
- AMI에 원하는 소프트웨어 또는 설정 파일을 추가하거나 별도의 OS를 설치, 모니터링 툴을 추가할 수 있다.
- AMI를 따로 구성하면, 부팅 및 설정에 드는 시간을 줄일 수 있다.
- EC2 인스턴스에 설치하고자 하는 모든 소프트웨어를 AMI가 미리 패키징해준다.
- AMI를 특정 지역에 구축한 다음 다른 지역으로 복사해서 사용할 수도 있다.
- 장애복구용으로는?
- 데이터 백업 및 빠른 복구가 목적이면 → EBS 스냅샷이 더 적합함
- 서버 설정까지 포함한 전체 복구가 목적이면 → AMI도 필요할 수 있음
AMI 종류
- 전체 공개(Public) AMI
- 자신만의 AMI: 유지관리도 직접 해야한다. 자동 관리 도구가 있긴 하지만 직접 관리할 줄 알아야 함.
- AWS 마켓플레이스 AMI : 다른 사람이 구축한 이미지를 구매해서 사용. 판매도 가능함
AMI 프로세스
- EC2 인스턴스를 원하는 대로 설정해준다.
- 인스턴스를 중지해 데이터 무결성을 확보한다.
- 이 인스턴스를 바탕으로 AMI를 구축한다.
- 이 과정에서 EBS 스냅샷이 생성된다. 그러면 다른 AMI에서 인스턴스를 실행할 수 있다.
AMI 실습
나만의 AMI 생성하기
- 인스턴스 생성 시 User data에 초기 세팅 붙여넣기.
- 생성된 인스턴스를 선택 > 마우스 오른쪽 클릭 > Image and templates 선택 > Create image 클릭
- EC2 > AMIs 클릭하면 만든 AMI를 확인할 수 있음.
만들어진 AMI 적용하기
👉 만들어진 AMI를 선택하고 Launch instance from AMI 를 선택하면 이 AMI로 인스턴스를 시작할 수 있다.
👉 아니면 그냥 Instances > Launch instance 를 눌러 생성시에 AMI 설정에서 My AMIs에서 설정도 가능하다.
- User Data에 내용을 추가하면 원래 AMI에 있던 내용에 추가되어 처음 생성 시 실행된다. 기존 AMI에 User Data를 또 실행하지 않아도 되어 부팅속도가 빨라진다.
EC2 Instance Store
- EBS 볼륨보다 더 높은 성능을 요할 때는 EC2 인스턴스에 연결된 하드웨어 디스크 성능이 향상되어야 한다.
- 특정 유형의 EC2 인스턴스는 EC2 인스턴스 스토어라고 불리며, 이는 해당하는 물리적 서버에 연결된 하드웨어 드라이브를 가리킨다.
- EC2 인스턴스 스토어는 I/O 성능 향상을 위해 활용할 수 있다.
- 주의할 점은 EC2 인스턴스 스토어(EC2 인스턴스)를 중지 또는 종료하면 해당 스토리지 또한 손실되기 때문에 이를 임시 스토리지라고 부름.
- 버퍼, 캐시, 스크래치 데이터, 임시 컨텐츠 등을 보관하기에 좋지만 장기 스토리지가 될 수는 없음.
- 필요에 따라 데이터 백업
EBS 볼륨 유형
📍EBS 볼륨을 특징 짓는 것들 : 크기(Size), 처리량(Throughput), 초당 입출력 작업 수(IOPS)
gp2 / gp3(SSD)
다양한 워크로드에 대해 가격과 성능의 균형을 맞추는 범용 SSD 볼륨
- ✨gp2: 비용 효율적, 낮은 대기 시간. 시스템 부팅 볼륨, 가상 데스크톱, 개발 및 테스트 환경에 사용. 1GB-16TB 의 크기. 작은 gp2 볼륨은 최대 3,000IOPS까지 버스트 성능을 제공. 볼륨의 크기와 IOPS는 연결되어 있어 1GB당 IOPS가 3개 늘어나며 최대 16,000IOPS(5,334GB) 까지 가능하다.
- gp3: 최신 세대 볼륨. 기본적으로 3,000IOPS와 초당 125MB의 처리량 제공. IOPS는 최대 16,000. 처리량은 초당 1000MB까지 독립적으로 증가시킬 수 있음.
io1/ io2 Block Express (SSD)
가장 높은 성능의 SSD 볼륨. 미션 크리티컬, 저지연, 고처리량 작업에 사용됨.
✨Provisioned IOPS (PIOPS) SSD
= 프로비저닝된 IOPS 볼륨
- 지속적인 IOPS 성능이 필요한 중요한 비즈니스 애플리케이션 혹은 16,000개 이상의 IOPS가 필요한 애플리케이션에서 사용.
- DB작업이 스토리지 성능과 일관성에 매우 민감한 경우 적합함.
- PIOPS는 EBS 다중 연결 기능을 지원한다.
EBS 다중 연결:
- 동일 AZ에서 하나의 EBS에 여러개의 EC2인스턴스가 읽기/쓰기 권한을 모두 가진채 연결될 수 있음.
- Teradata처럼 클러스터링된 Linux 애플리케이션에서 사용하거나 애플리케이션이 동시 쓰기 작업을 관리해야 할 때 유용하다.
- 한 번에 16개의 EC2 인스턴스까지만 같은 EBS에 연결할 수 있다.
- 다중 연결을 실행하려면 반드시 클러스터 인식 파일 시스템을 사용해야 한다.(XFS,EX4,기타등등은 안됨)
- io1 (4GB-16TB): 최대 IOPS(Nitro EC2 인스턴스의 경우 약 64,000. 다른 종류의 인스턴스의 경우 32,000)를 스토리지 크기와 별도로 프로비저닝 할 수 있음.
- io2 Block Express (4GB-64TB): 최대 256,000 IOPS가 제공되는데 IOPS대 GB 비율은 1,000:1이다. 매우 높은 성능.
하드 디스크 드라이브 (HDD)
저비용 대용량 볼륨. 자주 액세스하고 처리량이 많은 작업을 위해 설계됨. 부팅 볼륨이 될 수 없음. 125BG-16TB 크기.
- st1(HDD) : 처리량 최적화 HDD. 빅 데이터, 데이터 웨어하우징, 로그 처리에 적합. 초당 500MB처리량과 최대 500IOPS를 제공한다.
- sc1(HDD) : 가장 저렴한 볼륨. 아카이브 데이터와 같이 액세스 빈도가 낮은 작업을 위함. 최대 처리량 초당 250MB, 최대 IOPS 250.
gp2, gp3, io1, io2만 부팅 볼륨(OS의 루트가 실행되는 위치)으로 사용할 수 있다
EBS 암호화(Encryption)
- EBS 볼륨을 생성하면 일어나는 일
1) 저장 데이터가 볼륨 내부에 암호화
2) 인스턴스와 볼륨 간의 전송데이터 암호화
3) 스냅샷과 스냅샷으로 생성한 볼륨 암호화
- 암복호화 메커니즘은 보이지 않게 백그라운드에서 EC2,EBS가 처리.
- 암호화는 지연 시간에 영향을 거의 미치지 않음.
- KMS에서 암호화 키를 생성해 AES-256 암호화 표준을 가짐.
- 스냅샷을 복사해 복호화 한 것을 다시 암호화 활성화 함.
스냅샷 복사를 통한 EBS 암호화하기
- EBS 스냅샷 생성
- EBS 스냅샷을 복사를 이용해 암호화
- 복사된 스냅샷으로 EBS 볼륨 생성->얘도 암호화됨
- 암호화 된 볼륨을 원래 인스턴스에 연결
근데 그냥 스냅샷 통해서 혹은 그냥 EBS 볼륨을 만들 때 암호화에 체크하면 됨.