coredot.today
AWS EBS 완전 정복: EC2의 '하드디스크'를 제대로 이해하는 법
블로그로 돌아가기
EBSAWS스토리지EC2gp3io2파일시스템IOPS

AWS EBS 완전 정복: EC2의 '하드디스크'를 제대로 이해하는 법

EC2의 '하드디스크'인 EBS. gp2와 gp3의 차이, ext4와 XFS 중 뭘 선택할지, IOPS가 뭔지 — 어렵게 느껴지는 블록 스토리지의 모든 것을 비유와 사례로 쉽게 풀어본다.

코어닷투데이2026-02-1724

들어가며: EC2 인스턴스를 켰는데, 데이터는 어디에 저장되나?

EC2 글에서 "EC2 인스턴스는 가상 컴퓨터"라고 설명했다. CPU와 RAM은 인스턴스 타입으로 정해진다. 그런데 하드디스크는?

노트북을 사면 "SSD 512GB"처럼 내장 저장소가 있다. EC2에도 비슷한 것이 필요하다. 운영체제(Linux, Windows)를 설치할 곳, 애플리케이션 코드를 저장할 곳, 데이터베이스 파일을 쓸 곳.

이때 사용하는 것이 EBS(Elastic Block Store)다. EC2 인스턴스에 네트워크로 연결되는 가상 하드디스크.

하지만 EBS를 처음 접하면 당황스러운 선택지가 쏟아진다:

  • gp2? gp3? io1? io2? st1? sc1? — 볼륨 타입이 6가지
  • ext4? XFS? — 파일 시스템은 뭘 선택하지?
  • IOPS? 처리량? 지연 시간? — 성능 지표가 3가지
  • 스냅샷? 암호화? 멀티 어태치? — 기능이 또 여러 개

이 글에서는 이 모든 것을 비유와 실전 사례로 쉽게 풀어보겠다.


1. 블록 스토리지란 무엇인가

S3와 EBS는 근본적으로 다르다

이전 S3 글에서 오브젝트 스토리지를 다뤘다. S3와 EBS는 완전히 다른 종류의 스토리지다.

S3 (오브젝트 스토리지)
HTTP API로 접근 (PUT/GET)
파일 전체를 읽고/쓰기
파일 시스템 없음 (마운트 불가)
용량 무제한, 자동 확장
비유: 택배 창고 (물건을 넣고 꺼냄)
EBS (블록 스토리지)
OS에 디스크로 인식 (/dev/xvdf)
바이트 단위로 읽고/쓰기 가능
파일 시스템 포맷 후 마운트
사전에 용량 지정 (나중에 확장 가능)
비유: 노트북 내장 SSD (OS가 직접 사용)

S3는 파일을 "통째로" 저장하고 꺼내는 창고다. EBS는 운영체제가 직접 사용하는 디스크다. 데이터베이스는 디스크에 바이트 단위로 읽고 써야 하므로 S3가 아닌 EBS가 필요하다.

블록 스토리지의 "블록"이란

EBS가 데이터를 저장하는 방식은 블록(Block) 단위다. 디스크를 일정한 크기(보통 4KB~512KB)의 조각으로 나누고, 각 조각에 번호를 붙여 관리한다.

노트북의 SSD도 같은 방식이다. 하지만 노트북의 SSD는 물리적으로 연결되어 있고, EBS는 네트워크를 통해 연결된다.

💡
핵심 차이: 일반 컴퓨터의 SSD는 메인보드에 직접 꽂혀 있다. EBS는 EC2 인스턴스와 네트워크 케이블로 연결된 별도의 스토리지 서버에 있다. 덕분에 인스턴스를 종료해도 EBS 데이터는 보존되고, 다른 인스턴스에 연결할 수도 있다. 하지만 네트워크를 거치므로 로컬 SSD보다 약간의 지연이 있다.

2. 파일 시스템: ext4 vs XFS — 두려워할 필요 없다

파일 시스템이란

EBS 볼륨을 EC2에 연결하면, 처음에는 빈 디스크다. 아무것도 저장할 수 없다. 마치 새 하드디스크를 사서 꽂은 것과 같다 — 포맷해야 사용할 수 있다.

이 "포맷"이 바로 파일 시스템을 만드는 것이다. 파일 시스템은 디스크의 블록들을 파일과 폴더라는 논리적 구조로 조직하는 규칙이다.

비유하면: EBS 볼륨 = 빈 노트, 파일 시스템 = 노트에 줄을 긋고 목차를 만드는 것.

Linux의 두 가지 표준 파일 시스템

hljs language-bash
# EBS 볼륨을 ext4로 포맷
sudo mkfs.ext4 /dev/xvdf

# EBS 볼륨을 XFS로 포맷
sudo mkfs.xfs /dev/xvdf

# 마운트
sudo mount /dev/xvdf /data
ext4XFS
출시20081993 (SGI에서 개발)
최대 파일 크기16TB8EB (사실상 무제한)
최대 볼륨 크기1EB8EB
장점안정성 검증됨, 기본 선택대용량 파일·병렬 I/O에 강함
단점대용량에서 XFS보다 느림축소(shrink) 불가
추천 용도범용 (웹 서버, 앱 서버)DB, 미디어, 대용량 파일
Amazon Linux 기본값ext4 (AL2)XFS (AL2023)
실전 가이드: 고민된다면 XFS를 선택하라. Amazon Linux 2023의 기본값이고, AWS가 권장하며, 대부분의 워크로드에서 ext4 이상의 성능을 보인다. ext4를 선택해야 하는 명확한 이유가 없다면 XFS가 안전한 선택이다.

3. EBS 볼륨 타입: gp2, gp3, io2 — 진짜 쉽게

성능 지표부터 이해하기

EBS 볼륨 타입을 고르기 전에, 세 가지 성능 지표를 먼저 알아야 한다. 비유로 풀어보자.

EBS 볼륨 = 고속도로라고 생각하면:

IOPS 초당 읽기/쓰기 횟수 고속도로를 지나는 차량 수/초
처리량 초당 전송 데이터량 (MB/s) 고속도로의 차선 수 × 속도
지연시간 요청~응답 시간 (ms) 톨게이트 통과 시간

IOPS가 중요한 워크로드: 데이터베이스. 작은 데이터를 아주 빈번하게 읽고 쓴다. (차 수가 많지만 짐은 적은 고속도로)

처리량이 중요한 워크로드: 빅데이터 분석, 미디어 처리. 큰 파일을 순차적으로 읽는다. (차 수는 적지만 큰 트럭이 다니는 고속도로)

EBS 볼륨 타입 비교

타입이름IOPS처리량비용비유추천 용도
gp3범용 SSD3,000~16,000125~1,000 MB/s$0.08/GB일반 도로80%의 워크로드
gp2범용 SSD (구)100~16,000128~250 MB/s$0.10/GB일반 도로 (구형)레거시
io2프로비저닝 IOPS최대 256,000최대 4,000 MB/s$0.125/GB + IOPS당전용 고속도로미션크리티컬 DB
st1처리량 최적화 HDD500500 MB/s$0.045/GB화물 전용 도로빅데이터, 로그
sc1콜드 HDD250250 MB/s$0.015/GB시골 도로아카이브

gp2 vs gp3: 왜 gp3로 바꿔야 하는가

gp2는 2014년 출시된 범용 SSD다. gp3는 2020년에 나온 후속이다. gp3가 모든 면에서 낫다:

gp2 (2014)
기본 IOPS = 볼륨 크기 × 3 (최소 100)
IOPS를 늘리려면 볼륨 크기를 키워야 함
100GB = 300 IOPS, 1TB = 3,000 IOPS
처리량 최대 250 MB/s
$0.10/GB
gp3 (2020)
기본 3,000 IOPS (볼륨 크기 무관)
IOPS와 크기를 독립적으로 설정
1GB든 1TB든 기본 3,000 IOPS
처리량 기본 125 MB/s, 최대 1,000 MB/s
$0.08/GB (20% 저렴)

gp2에서 gp3로 바꾸면: 같은 크기에서 20% 저렴하고, 성능은 같거나 더 높다. gp2를 계속 쓸 이유가 없다.

⚠️
지금 당장 확인하라: AWS 콘솔에서 EC2 → Volumes로 가서 gp2 볼륨이 있는지 확인. 있으면 gp3로 변경하라. 다운타임 없이 온라인으로 변경 가능하다. 그것만으로 스토리지 비용이 20% 줄어든다. 가장 쉬운 비용 절감.

io2: 데이터베이스가 정말 빨라야 할 때

gp3의 최대 16,000 IOPS로 부족하면 io2(Provisioned IOPS SSD) 를 쓴다. 최대 256,000 IOPS, 지연시간 한 자릿수 밀리초 미만.

Oracle, SQL Server 같은 고성능 상용 DB나, 금융 거래 시스템처럼 극도의 I/O 성능이 필요한 경우에 사용한다.

비용도 높다: 볼륨 비용(0.125/GB)+IOPS비용(0.125/GB) + IOPS 비용(0.065/IOPS/월). 정말 필요한 경우에만 쓰라.


4. EBS가 EC2 및 다른 서비스에서 사용되는 방식

EC2의 루트 볼륨

EC2 인스턴스를 시작하면 루트 볼륨이 자동으로 연결된다. 운영체제가 설치되는 디스크다.

  • Amazon Linux 2023 기본: 8GB gp3 (XFS)
  • Ubuntu 기본: 8GB gp3 (ext4)
실전 팁: 루트 볼륨은 OS와 기본 소프트웨어만. 애플리케이션 데이터는 별도의 EBS 볼륨에 저장하라. 인스턴스를 교체해도 데이터 볼륨을 분리하여 새 인스턴스에 연결할 수 있다.

RDS의 숨겨진 EBS

이전 RDS 글에서 다루지 않은 것: RDS 인스턴스의 저장소도 EBS다. RDS 콘솔에서 "Storage" 설정을 보면 gp3, io1, io2 중 선택할 수 있다.

  • 일반 웹 서비스 DB: gp3로 충분
  • 대규모 트랜잭션 DB: io2로 IOPS 확보

EKS/ECS에서의 EBS

쿠버네티스(EKS)에서 PersistentVolume으로 EBS를 사용할 수 있다. EBS CSI Driver가 K8s의 볼륨 요청을 EBS API로 변환한다.

hljs language-yaml
# K8s PersistentVolumeClaim → EBS 자동 생성
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: db-storage
spec:
  accessModes: ["ReadWriteOnce"]
  storageClassName: gp3
  resources:
    requests:
      storage: 100Gi

다른 클라우드와의 비교

AWS EBSAzure Managed DiskGCP Persistent Disk
범용 SSDgp3Premium SSD v2pd-balanced
고성능 SSDio2Ultra Diskpd-extreme
HDDst1/sc1Standard HDDpd-standard
최대 IOPS256,000160,000120,000
최대 처리량4,000 MB/s4,000 MB/s2,400 MB/s
멀티 어태치io2만 (최대 16)Ultra Disk가능

5. EBS 스냅샷: 디스크의 "타임머신"

스냅샷이란

EBS 스냅샷은 볼륨의 특정 시점 복사본이다. S3에 저장되며 리전 내/리전 간 복사가 가능하다.

핵심 특성:

  • 증분식(Incremental): 첫 스냅샷은 전체 볼륨을 복사하지만, 이후 스냅샷은 변경된 블록만 저장. 100GB 볼륨에서 1GB만 바뀌었으면 1GB만 저장
  • 즉시 사용 가능: 스냅샷에서 새 볼륨을 만들면 즉시 사용 가능 (백그라운드에서 데이터 로드)
  • 리전 간 복사: DR(재해복구)을 위해 다른 리전에 스냅샷 복사

실전 활용

hljs language-bash
# 스냅샷 생성
aws ec2 create-snapshot --volume-id vol-abc123 --description "Before deployment"

# 스냅샷에서 새 볼륨 생성
aws ec2 create-volume --snapshot-id snap-xyz789 --availability-zone ap-northeast-2a

# 스냅샷을 다른 리전으로 복사 (DR)
aws ec2 copy-snapshot --source-region ap-northeast-2 \
  --source-snapshot-id snap-xyz789 --destination-region us-east-1
배포 전 스냅샷 습관: 위험한 변경(DB 마이그레이션, OS 업그레이드) 전에 반드시 스냅샷을 찍어라. 문제가 생기면 스냅샷에서 볼륨을 복원하여 변경 전 상태로 즉시 되돌릴 수 있다.

6. EBS 보안

암호화

2024년부터 AWS는 새로 생성되는 EBS 볼륨에 기본 암호화를 적용할 수 있게 됐다. 계정 설정에서 "EBS encryption by default"를 활성화하면, 이후 생성되는 모든 볼륨이 자동 암호화된다.

암호화 대상:

  • 볼륨 내 데이터 (저장 시)
  • 볼륨과 인스턴스 간 전송 데이터
  • 스냅샷
  • 스냅샷에서 생성된 볼륨

성능 영향: 거의 없다. Nitro 시스템이 하드웨어 수준에서 암호화를 처리하므로 CPU 부담이 없다.

보안 사고: 스냅샷 공유의 위험

🔒
스냅샷 공유 주의: EBS 스냅샷은 다른 AWS 계정과 공유하거나 퍼블릭으로 공개할 수 있다. 보안 연구에서 공개 스냅샷에 API 키, 데이터베이스 덤프, 개인정보가 포함된 사례가 다수 발견됐다. 스냅샷을 공유하기 전에 민감 데이터 포함 여부를 반드시 확인하라. 공유가 필요 없다면 계정의 "Block public access for EBS snapshots"를 활성화하라.

7. EBS 비용 최적화

비용 구성

항목gp3 (서울)비고
스토리지$0.096/GB/월사용량 무관, 할당한 크기 기준
추가 IOPS$0.006/IOPS/월3,000 초과분만
추가 처리량$0.048/MB/s/월125 MB/s 초과분만
스냅샷$0.05/GB/월증분식이므로 실제 변경분만

비용 절감 핵심 전략

1. gp2 → gp3 전환 (즉시 20% 절감)

다운타임 없이 온라인 변경. 가장 쉽고 효과적인 비용 절감.

2. 사용하지 않는 볼륨 삭제

EC2를 종료해도 EBS 볼륨은 남아 있을 수 있다 ("Delete on Termination" 비활성화 시). 사용하지 않는 볼륨이 방치되어 매달 과금되는 경우가 흔하다.

hljs language-bash
# 사용하지 않는(available 상태) 볼륨 찾기
aws ec2 describe-volumes --filters "Name=status,Values=available" \
  --query "Volumes[*].{ID:VolumeId,Size:Size,Created:CreateTime}"

3. 오래된 스냅샷 정리

스냅샷도 비용이다. Data Lifecycle Manager(DLM)로 자동 정리 정책을 설정하라.

4. 적정 사이즈

CloudWatch에서 VolumeReadOps, VolumeWriteOps를 확인하여 실제 IOPS 사용량을 측정. 과도하게 프로비저닝된 io2를 gp3로 다운그레이드할 수 있다.

💡
숨겨진 비용 찾기: AWS Cost Explorer에서 "EBS"를 필터링하면 놀라울 수 있다. 많은 기업에서 EBS 비용이 EC2 비용의 20~30%를 차지한다. 방치된 볼륨, gp2→gp3 미전환, 과도한 io2 사용 — 이 세 가지만 개선해도 EBS 비용을 30~50% 절감할 수 있다.

8. 실제 사례

Netflix: 수천 개의 EBS 볼륨 관리

Netflix는 수천 대의 EC2 인스턴스에서 동영상 인코딩, 마이크로서비스, 데이터 분석을 수행한다. 각 인스턴스에 연결된 EBS 볼륨은 수천 개에 달하며, 볼륨 타입을 워크로드에 맞게 세밀하게 조정한다:

  • 인코딩 서버: gp3 (높은 처리량)
  • 캐시 서버: 인스턴스 스토어 (휘발성이지만 초고속)
  • 분석 DB: io2 (높은 IOPS)

Instagram: EBS 스냅샷으로 글로벌 배포

Instagram은 미국에서 운영 중인 서비스를 유럽으로 확장할 때, EBS 스냅샷을 리전 간 복사하여 데이터를 이전했다. 스냅샷의 증분 복사 기능으로 초기 대용량 전송 후 변경분만 동기화했다.

한국 기업 사례

  • 쿠팡: RDS Aurora의 스토리지로 io2를 사용. 초당 수만 건의 주문 트랜잭션 처리
  • 토스: 금융 DB에 io2 Block Express. 최저 지연시간 요구
  • 당근마켓: 대부분의 서비스에 gp3. gp2에서 전환하며 비용 절감

9. EBS의 진화: 무엇이 바뀌고 있나

io2 Block Express

2021년 출시. 기존 io2를 Nitro System 위에서 대폭 강화:

  • 256,000 IOPS (기존 io2의 4배)
  • 4,000 MB/s 처리량
  • 서브밀리초 지연시간
  • 64TB까지 확장

Elastic Volumes: 다운타임 없는 변경

실행 중인 볼륨의 크기, 타입, IOPS, 처리량을 다운타임 없이 변경할 수 있다. 100GB gp3를 200GB로 늘리면서 IOPS를 3,000에서 10,000으로 올리는 것이 인스턴스 재시작 없이 가능하다.

EBS Fast Snapshot Restore

스냅샷에서 볼륨을 생성할 때 초기 성능 저하 없이 즉시 최대 성능을 발휘하는 기능. DB 복원이나 오토스케일링에서 새 인스턴스가 빠르게 시작해야 할 때 유용하다.


마치며: 보이지 않지만 모든 것의 기반

EBS는 화려한 서비스가 아니다. Lambda의 서버리스 마법도 아니고, DynamoDB의 밀리초 응답도 아니다. 하지만 EC2 인스턴스가 동작하려면 EBS가 있어야 하고, RDS가 데이터를 저장하려면 EBS가 있어야 하고, EKS의 Pod이 영구 데이터를 쓰려면 EBS가 있어야 한다.

이 시리즈에서 다룬 스토리지를 정리하면:

스토리지유형특성대표 용도
EBS블록디스크 (바이트 단위 R/W)EC2 루트 볼륨, DB 스토리지
S3오브젝트파일 (통째로 R/W)백업, 정적 파일, 데이터 레이크
EFS파일NFS (여러 EC2 공유)공유 파일 시스템, CMS
인스턴스 스토어블록 (로컬)초고속, 휘발성캐시, 임시 데이터

각 스토리지는 다른 물리적 특성과 다른 접근 방식을 가진다. EBS는 그중에서 가장 기본적이면서 가장 보편적인 것 — 운영체제, 데이터베이스, 애플리케이션이 직접 사용하는 디스크다.

코어닷투데이의 AI 서비스에서도 EBS는 곳곳에 있다. 추론 서버의 모델 파일 저장, 학습 데이터의 고속 접근, 데이터베이스의 영구 저장소 — 이 모든 것이 gp3와 io2 위에서 돌아간다.

gp2를 쓰고 있다면, 지금 당장 gp3로 바꾸라. 그것이 이 글에서 가져갈 수 있는 가장 즉각적인 실천이다.