본문으로 건너뛰기
김신건의 로그

[AWS] EBS vs Instance Store: 영속 vs 임시 스토리지

· 수정 · 📖 약 3분 · 1,232자/단어 #aws #ebs #storage #ec2 #cloud
EBS, Instance Store, gp3, io2, EBS volume, NVMe, ephemeral storage

정의

EBSInstance Store
영속성영속임시 (instance 종료 시 손실)
위치네트워크 attached노드 직결 NVMe
분리다른 instance 에 attach 가능불가
Snapshot가능불가
가격매월EC2 가격에 포함
Latency네트워크 hop매우 낮음
처리량옵션매우 높음

EBS Volume 종류

종류용도IOPS 한도처리량
gp3 (기본)일반16,000 (별도 구매로 80k)1,000 MB/s
gp2옛 일반 (gp3 권장)16,000250 MB/s
io2고성능256,0004,000 MB/s
io2 Block Express극고성능256k+4 GB/s
st1throughput HDD (DW)low500 MB/s
sc1cold HDDlow250 MB/s

TIP

2026 시점 gp3 가 기본. gp2 보다 저렴 + 더 유연. 새 volume 은 gp3 로.

gp3 의 분리 가격

기본: 3,000 IOPS + 125 MB/s 무료
추가: IOPS $0.005/PIOPS-월, 처리량 $0.04/MBps-월

gp2 는 size 비례 IOPS. gp3 는 size 와 IOPS 분리 → 작은 volume + 큰 IOPS 가능.

Snapshot

sequenceDiagram
    User->>EBS: CreateSnapshot
    EBS->>S3: 증분 백업
    Note over EBS,S3: 첫 snapshot 전체, 이후 변경 부분만
    User->>EBS: 복원 from snapshot
    Note over EBS: 점진적 hydration (read 시 download)
  • S3 저장 (지역 안에 복제).
  • 증분: 같은 volume 의 변경 block 만.
  • Fast Snapshot Restore (FSR) 옵션: 즉시 full performance.

Instance Store

m6id.large    ← 'd' 가 NVMe 포함
i4i.large     ← 'i' family 가 storage 특화
  • intanc instance type 별 고정.
  • 수십 GB ~ 수십 TB NVMe.
  • 극저지연 + 극고처리량.

적합

용도이유
Shuffle 데이터 (Spark)잠시면 됨
캐시 (Redis L1)다시 채울 수 있음
임시 build / compile빠름
데이터베이스의 replica다시 sync 가능

부적합

용도이유
Primary DB 데이터instance 종료 시 손실
사용자 업로드영속 필요

비교 직관

Storage 별 latency vs throughput (직관)
Instance Store NVMe 가 압도. EBS gp3 는 균형. S3 는 큰 throughput 가능하지만 latency 큼.

Multi-Attach (io2 만)

aws ec2 modify-volume --volume-id vol-xxx --multi-attach-enabled
  • 같은 EBS volume → 여러 EC2 동시 attach (최대 16개)
  • 분산 파일시스템 (GFS2, OCFS2) 필요. 단순 ext4 가 동시 mount 면 손상.

스토리지 선택 결정 트리

flowchart TD
    Q1{"영속성 필요?"}
    Q1 -->|예| Q2{"고성능 랜덤 I/O?"}
    Q1 -->|아니오| IS[Instance Store NVMe]
    Q2 -->|예| Q3{"IOPS 16k 초과?"}
    Q2 -->|아니오| Q4{"대용량 순차 I/O?"}
    Q3 -->|예| IO2[io2 Block Express]
    Q3 -->|아니오| GP3[gp3]
    Q4 -->|예| ST1[st1 HDD]
    Q4 -->|아니오| SC1[sc1 Cold HDD]

    style IS fill:#fef3c7
    style IO2 fill:#fee2e2
    style GP3 fill:#d1fae5
    style ST1 fill:#dbeafe
    style SC1 fill:#e0e7ff
결과주요 용도
Instance Store NVMeSpark shuffle, 캐시, 임시 빌드
io2 Block ExpressOracle RAC, 고성능 OLTP, SAP HANA
gp3일반 앱 서버, MySQL/PostgreSQL, OS 디스크
st1 HDDDW, Kafka, Hadoop, 대용량 스트리밍
sc1 Cold HDD아카이브, 콜드 로그, 비용 최소화

EBS 심화: gp3 성능 최적화

gp3 는 크기(GB)와 성능(IOPS/처리량)이 독립적으로 구매됩니다.

# gp3 볼륨 생성 (IOPS 6,000 + 처리량 500 MB/s 지정)
aws ec2 create-volume \
  --volume-type gp3 \
  --size 500 \
  --iops 6000 \
  --throughput 500 \
  --availability-zone us-east-1a

# 기존 gp2 를 gp3 로 변환 (무중단)
aws ec2 modify-volume \
  --volume-id vol-12345678 \
  --volume-type gp3 \
  --iops 3000 \
  --throughput 125

gp3 vs gp2 비교

항목gp2gp3
기본 IOPS볼륨 크기 x 3 (최대 16,000)고정 3,000
추가 IOPS불가 (크기만 늘려야 함)독립 구매 가능 (최대 16,000)
기본 처리량250 MB/s125 MB/s
추가 처리량불가독립 구매 가능 (최대 1,000 MB/s)
요금$0.10/GB-월$0.08/GB-월

TIP

gp2 에서 gp3 로 마이그레이션하면 동일 크기 기준 약 20% 비용 절감. EC2 재시작 불필요, ModifyVolume 호출 즉시 변환 시작.

io2 선택 기준

IOPS 16,000 초과 필요? → io2
Multi-Attach 필요 (복수 EC2)?  → io2
내구성 99.999% 필요 (금융, 의료)? → io2

Snapshot 자동화 (DLM)

Data Lifecycle Manager (DLM) 로 스냅샷 일정 자동화:

{
  "ExecutionRoleArn": "arn:aws:iam::123456789012:role/dlm-role",
  "Description": "Daily EBS snapshots - 7day retention",
  "State": "ENABLED",
  "PolicyDetails": {
    "PolicyType": "EBS_SNAPSHOT_MANAGEMENT",
    "ResourceTypes": ["VOLUME"],
    "TargetTags": [{"Key": "Backup", "Value": "true"}],
    "Schedules": [{
      "Name": "Daily",
      "CreateRule": {
        "Interval": 24,
        "IntervalUnit": "HOURS",
        "Times": ["03:00"]
      },
      "RetainRule": {"Count": 7},
      "CopyTags": true,
      "CrossRegionCopyRules": [{
        "TargetRegion": "us-west-2",
        "Encrypted": true,
        "CopyTags": true,
        "RetainRule": {"Count": 3}
      }]
    }]
  }
}
  • Backup: true 태그 달린 볼륨 자동 대상
  • 7일 보관 후 자동 삭제
  • Cross-region 복사로 DR 확보 (3일 보관)

스냅샷 아키텍처:

flowchart LR
    Vol[EBS Volume] -->|DLM 자동 트리거| Snap["Snapshot (증분)"]
    Snap -->|"첫 번째: 전체"| S3[S3 내부 저장]
    Snap -->|"이후: 변경 블록만"| S3
    S3 -->|"Cross-region 복사"| S3W["S3 (us-west-2)"]
    S3 -->|"복원"| NewVol[새 EBS Volume]
    S3 -->|"AMI 생성"| AMI[Amazon Machine Image]

WARNING

스냅샷은 S3에 저장되지만 일반 S3 버킷에서는 보이지 않습니다. EC2 콘솔/API 로만 접근 가능.

Fast Snapshot Restore (FSR)

스냅샷에서 볼륨 복원 시 기본적으로 블록을 lazily 로드합니다 (read 시 S3에서 가져옴). FSR 활성화 시 즉시 full performance.

aws ec2 enable-fast-snapshot-restores \
  --source-snapshot-ids snap-12345678 \
  --availability-zones us-east-1a us-east-1b

FSR 은 AZ 당 요금 발생 ($0.75/snapshot-hour 수준).

EFS vs S3 대비

항목EBSEFSS3
유형블록 스토리지네트워크 파일시스템객체 스토리지
동시 접근단일 EC2여러 EC2/Lambda 동시무제한 클라이언트
OS 마운트Linux/WindowsLinux (NFSv4)SDK/API
Latency1ms 미만수 ms수십 ms
최대 크기64 TB/볼륨페타바이트 (자동 확장)무제한
요금 기준GB 단위 고정GB 사용량GB 저장량 + 요청
주요 용도OS, DB, 앱 데이터공유 파일, CMS, 컨테이너정적 자산, 백업, 빅데이터

선택 가이드

  • 단일 EC2의 OS 디스크/DB 데이터: EBS
  • 여러 EC2/컨테이너가 같은 파일 공유: EFS
  • 정적 웹 파일, 로그 아카이브, 데이터 레이크: S3

비용 최적화 패턴

1. gp2 볼륨 일괄 gp3 마이그레이션

# 모든 gp2 볼륨 조회
aws ec2 describe-volumes \
  --filters Name=volume-type,Values=gp2 \
  --query 'Volumes[*].[VolumeId,Size,Iops,AvailabilityZone]' \
  --output table

# 개별 변환
aws ec2 modify-volume \
  --volume-id vol-xxxxxxxx \
  --volume-type gp3

2. 미사용 볼륨 정리

# EC2 미연결 볼륨 (available 상태) 조회
aws ec2 describe-volumes \
  --filters Name=status,Values=available \
  --query 'Volumes[*].[VolumeId,Size,CreateTime,AvailabilityZone]' \
  --output table

EC2 terminate 후 루트 볼륨은 DeleteOnTermination=true (기본값) 이면 자동 삭제. 추가로 attach 한 볼륨은 수동 삭제 필요.

3. 스냅샷 비용 관리

  • DLM 으로 오래된 스냅샷 자동 삭제
  • S3 Intelligent-Tiering 급 아카이브 스냅샷: aws ec2 modify-snapshot-tier 로 Archived 상태로 전환 (70% 비용 절감, 복원 24-72시간)

흔한 함정

WARNING

  1. gp2 사용 (옛) = gp3 가 저렴. 마이그레이션 (downtime 없음).
  2. Snapshot 지역 간 복제 안 함 = region 장애 시 손실.
  3. Instance Store 를 영속처럼 = stop/start = 데이터 손실 (reboot 은 OK).
  4. IOPS 너무 작음 = 워크로드 IOPS 측정 후 결정.

CAUTION

Multi-Attach io2 + 일반 파일시스템 = 데이터 손상. 반드시 GFS2, OCFS2 같은 cluster-aware 파일시스템 사용.

IMPORTANT

EC2 stop vs reboot: stop 시 Instance Store 데이터 소멸. reboot 은 보존. 스케줄 유지보수 시 주의.

관련 위키

이 글의 용어 (5개)
[AWS] Amazon RDS (Relational Database Service)cloud
정의 Amazon RDS (Relational Database Service) 는 AWS 가 관리하는 관계형 데이터베이스 서비스 입니다. 6개 엔진 (MySQL, PostgreS…
[AWS] EC2 Instance Types: family, generation, sizingcloud
정의 EC2 인스턴스 수백 종. family + generation + modifier + size. 워크로드에 맞춰 right-sizing. Family | Family | 용…
[AWS] EC2: 인스턴스 타입, AMI, EBScloud
정의 EC2 (Elastic Compute Cloud) = AWS 의 VM 서비스. instance type (CPU / RAM / NW) 결정 + AMI (OS 이미지) + E…
[AWS] S3: object storage, storage classes, lifecyclecloud
정의 S3 = AWS 의 object storage. bucket + key + object. 11 9's durability (99.999999999%), 무한 확장. 2026…
[DB] WAL: Write-Ahead Log, crash recovery, replication 의 토대database-internals
정의 Write-Ahead Log (WAL) = 데이터 변경 전 로그를 먼저 디스크에 기록. 모든 모던 RDB / KV / 분산 시스템의 내구성 기반. 핵심 약속: 로그가 디스크…

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기