Amazon EBS Cheat Sheet

글쓴이 상배 윤 날짜

Amazon EBS

  • EBS는 EC2 인스턴스에 블럭 스토리지(Block level storage) 볼륨을 제공한다. 하드디스크 혹은 SSD 디스크라고 생각하면 된다.
  • 파일시스템, 데이터베이스 기타 형식화되지 않는 데이터에 대한 세부적인 업데이트, 블럭 단위의 랜덤액세스가 필요한 모든 응용 프로그램의 기본 스토리지로 사용하기에 적합하다.
  • 새로운 EBS 볼륨은 최대성능을 내기 위해서 예열(pre-warming)과정을 필요로 하지 않는다. 그러나 스냅샷으로 복원한 볼륨은 초기화(S3에서 가져와서 볼륨에 기록하는)시간이 필요하다.
  • Termination 보호 기능은 기본적으로 해제되어 있으며, 수동으로 활성화 해야 한다. Termination 보호 기능은 사용자의 실수에 의한 볼륨삭제를 막는다.
  • 최대 5,000개의 볼륨과 10,000개의 스냅샷을 가질 수 있다.

기능

  • 다양한 유형의 스토리지를 선택 할 수 있다 : General Purpose SSD (gp2)Provisioned IOPS SSD (io1)Throughput Optimized HDD (st1),  Cold HDD (sc1) 를 제공한다.
  • 볼륨의 최대 크기는 16TBek.
  • 하나의 인스턴스에 여러 개의 볼륨을 마운트 할 수 있지만 각 볼륨은 하나의 인스턴스에만 연결 할 수 있다.
  • 마운트한 볼륨은 파일 시스템을 만들어서 사용 할 수 있다.
  • 암호화된 EBS 볼륨을 사용해서 데이터와 애플리케이션에 대한 보안요구사항을 충족할 수 있다.
  • EBS 볼륨은 point-in-time 스냅샷을 만들어서 S3에 저장 할 수 있다. AMI와 유사하다. 스냅샷은 AWS 리전(region)간에 복사할 수 있다.
  • 볼륨은 특정 AZ에서 만들어지며 동일한 AZ의 모든 인스턴스에 연결 할 수 있다. 다른 AZ에서 볼륨을 사용하게 하려면 스냅샷을 만들어야 한다.
  • 스냅샷을 다른 지역으로 복사 하고, 볼륨으로 복원할 수 있다. 이런 방식으로 지리적 확장, 데이터 센터 마이그레이션, 재해 복구등에 활용 할 수 있다.
  • Amazon CloudWatch에서 제공하는 대역폭, 처리량, 대기 시간, 몇균 큐 길이와 같은 성능 정보를 모니터링 할 수 있다. 이 정보를 이용해서 필요하지 않는 리소스를 조절해서 비용을 절약하면서 애플리케이션에 적절한 성능을 제공 할 수 있다.
  • EBS 볼륨을 detach 하기전에 먼저 인스턴스에서 볼륨 마운트를 해제 해야 한다.
  • EBS 볼륨이 루트 볼륨인 경우에는 볼륨을 detach 하기전에 인스턴스를 중지해야 한다.

EBS 볼륨 유형

  • General Purpose SSD (gp2)
    • 3 IOPS/GiB를 기본으로, 3,000 IOPS 까지 확장 할 수 있다.
    • 최대 10,000 IOPS, 160 MB/s의 대역폭을 제공한다.
    • 볼륨의 burst 지속시간은 볼륨의 크기, 필요한 burst IOPS 및, credit balance에 따라 달라진다. Burst IO 지속 시간은 아래의 공식에 따라서 계산된다.

Burst duration  = (Credit balance) [(Burst IOPS) – 3 (Volume size in GiB)]

  • Provisioned IOPS SSD (io1)
    • 32,000 IOPS, 500MB/s 대역폭을 제공한다.
  • Throughtput Optimized HDD(st1)
    • IOPS 보다 처리량에 초점을 맞춘 저가의 HDD를 사용한다. 최대 500MB/s의 처리량을 제공한다.
  • Cold HDD(sc1)
    • IOPS 보다 처리량에 초점을 맞춘 저가의 HDD를 사용한다. 250MB/s의 처리량을 제공한다.
볼륨 유형범용 SSD(gp2)*프로비저닝된 IOPS SSD (io1)처리량에 최적화된 HDD (st1)Cold HDD (sc1)
설명다양한 워크로드에 사용할 수 있으며 가격 대비 성능이 우수한 범용 SSD 볼륨지연 시간이 짧거나 처리량이 많은 미션 크리티컬 워크로드에 적합한 고성능 SSD 볼륨자주 액세스하는 처리량 집약적 워크로드에 적합한 저비용 HDD 볼륨자주 액세스하지 않는 워크로드에 적합한 최저 비용 HDD 볼륨
사용 사례대부분의 워크로드에 추천시스템 부트 볼륨가상 데스크톱지연 시간이 짧은 대화형 앱개발 및 테스트 환경지속적인 IOPS 성능이나 10,000 IOPS 또는 160MiB/s 이상의 볼륨당 처리량을 필요로 하는 중요한 비즈니스 애플리케이션라지 데이터베이스 워크로드. 예:MongoDBCassandraMicrosoft SQL ServerMySQLPostgreSQLOracle저비용으로 일관되고 높은 처리량을 요구하는 스트리밍 워크로드빅 데이터데이터 웨어하우스로그 처리부트 볼륨이 될 수 없음자주 액세스하지 않는 대용량 데이터를 위한 처리량 중심의 스토리지스토리지 비용이 최대한 낮아야 하는 시나리오부트 볼륨이 될 수 없음
API 이름gp2io1st1sc1
볼륨 크기1GiB – 16TiB4GiB – 16TiB500GiB – 16TiB500GiB – 16TiB
최대 IOPS**/볼륨10,000개32,000***500250
최대 처리량/볼륨160MiB/s****500 MiB/s†500MiB/s250MiB/s
최대 IOPS/인스턴스80,00080,00080,00080,000
최대 처리량/인스턴스††1,750MiB/s1,750MiB/s1,750MiB/s1,750MiB/s
기준 성능 속성IOPSIOPSMiB/sMiB/s

Encryption

  • EBS 볼륨에 대한 암호화를 지원한다. 디스크 I/O, 스냅샷등의 모든 데이터들이 암호화 된다.
  • 암호화는 EC2 인스턴스를 호스팅하는 서버에서 이루어지기 때문에, EBS로의 전송중에도 데이터에 대한 안전한 암호화를 보장한다.
  • 암호화 데이터의 유형은 아래와 같다.
    • 볼륨에 저장된 데이터
    • 볼륨과 인스턴스간에 이동하는 모든 데이터
    • 볼륨에서 만들어지는 모든 스냅샷
    • 스냅샷에서 만들어지는 모든 볼륨
  • AWS KMS(Key Management Service)마스터키를 볼륨과 스냅샷 암호화에 사용 한다. 마스터키의 관리와 암/복호화는 AWS에서 자동으로 처리한다.
  • 암호화된 스냅샷에서 복원된 볼륨은 자동으로 암호화된다.
  • EBS 암호화는 특정 인스턴스 유형에서만 사용 할 수 있다.
  • 암호화되지 않은 볼륨을 암호화하거나 암호화된 볼륨에서 암호화를 제거하는 직접적인 방법은 없다. 다만 암호화된 볼륨과 암호화하지 않은 볼륨의 마이그레이션을 통한 간접적인 방법은 사용 할 수 있다.

모니터링

  • Basic과 Detailed 두 가지 타입의 모니터링을 제공한다.
  • 볼륨의 상태를 체크하고, 데이터의 일관성을 제어하는데 필요한 정보를 제공한다. 아래와 같은 상태를 가진다.
    • Ok – 정상
    • Warning – 성능 저하가 발생했음
    • Impaired – 볼륨 손상
    • Insufficient-data – 데이터 부족(볼륨에 대한 상태 확인을 진행 중일 수 있음)
  • 볼륨이벤트에는 이벤트가 발생한 시간, I/O가 비활성화된 시간, 이벤트 종료시간등이 표시된다.
  • 볼륨이벤트의 종류
    • Awaiting Action : Enable IO
    • IO Enabled
    • IO Auto-Enabled
    • Normal
    • Degraded
    • Serverely Degraded
    • Stalled

IOPS, 볼륨 크기의 조절

  • 만약 현재 세대 EBS 볼륨을 현재 세대 EC2 인스턴스 타입에 attach 시켰다면, 볼륨을 detach하지 않고 크기를 늘리거나, 볼륨 타입을 바꾸거나 (io1 볼륨의 경우) IOPS 성능을 조정 할 수 있다.
  • EBS의 최대 볼륨크기는 16TiB다.
  • 볼륨은 Modifying 상태, Optimizing 상태, Complete 상태를 거친다.
  • parted, gdisk를 이용해서 파티션의 크기를 확장 할 수 있다.
  • resize2fs(ext2, ext3, ext4), xfs_growfs(XFS)등의 명령을 이용해서 파일 시스템의 크기를 조절할 수 있다.
  • 볼륨의 크기를 줄일 수는 없다.

EBS 스냅샷

  • EBS 볼륨은 point-in-time 스냅샷 기능을 제공한다. 이 스냅샷으로 볼륨을 백업 할 수 있다.
  • 스냅샷은 증분(incremental) 백업을 지원한다. 가장 최근 스냅샷으로 부터 변경된 블럭만 스냅샷으로 만들기 때문에, 공간과 시간을 절약 할 수 있다.
AWS Training Amazon EBS 2
  • 액세스 권한을 수정하면 다른 AWS 계정간에도 스냅샷을 공유 할 수 있다.
  • 자신의 스냅샷은 물론 공유된 다른 스냅샷에 대한 복사본을 만들 수 있다.
  • 스냅샷은 해당 리전에만 만들 수 있다.
  • 암호화된 EBS 볼륨의 스냅샷도 역시 암호화된다.
  • 각 계정은 단일 리전에서 최대 5개의 동시 스냅샷 복사요청을 수행 할 수 있다.
  • 사용자 정의 태그는 원본 스냅샷에서 새로운 스냅샷으로 복사되지 않는다.

Amazon EBS–Optimized Instances

  • EBS 최적화 인스턴스는 425Mbps에서 14,000Mbps 사이의 대역폭을 제공한다.
  • EBS 최적화 인스턴스는 EBS 최적화를 활성할 필요가 없다. EBS 최적화를 비활성화해도 적용되지 않는다.
  • EBS 최적화 인스턴스는 인스턴스에서 발생하는 다른 트래픽과 경합을 최소화해서 볼륨에 우선해서 성능을 제공한다.

가격

  • 스냅샷은 S3에 저장되며, S3 저장 비용이 청구된다.
  • 스냅샷을 다른 리전으로 복사하면, 해당 리전에서 스토리지 비용(S3 저장비용)이 발생한다.
  • EBS 최적화하지 않은 인스턴스에 대해서 EBS 최적화 옵션을 사용하면, 추가적인 시간당 요금이 발생한다.
  • 볼륨을 detach 한 후에도 저장 용량이 AWS Free Tier 한도를 초과하게 되면 볼륨에 대한 저장 비용이 청구된다. 사용하지 않는 볼륨은 삭제해야 한다.
  • 프로비저닝된 IOPS SSD(io1)볼륨을 사용하면 IOPS 제공 비용도 청구된다.

성능 최적화

  • EBS 최적화 인스턴스를 이용한다.
  • 워크로드를 이해하고 있어야 한다.
  • 어느 정도의 성능이 필요할지 계산 할 수 있어야 한다.
  • 스냅샷에서 볼륨을 만드는 초기에 성능이 저하될 수 있다.
  • 최신 리눅스 커널을 사용한다.
  • RAID 0(디스크를 병렬로 배열)을 사용해서 인스턴스의 리소스를 최대한 사용 할 수 있게 한다.
  • Amazon CloudWatch를 사용하여 성능을 추적/분석한다.
  • HDD 성능을 저하시킬 수 있는 요인을 알고 있어야 한다.
  • st1, sc1(즉 하드디스크)의 경우 미리 읽기 설정을 1MiB정도로 구성, 성능을 높일 수 있다.

blockdev 명령으로 블럭디바이스에 대한 미리읽기 값을 검사 할 수 있다.

# blockdev --report /dev/sda2
RO    RA   SSZ   BSZ   StartSec            Size   Device
rw   256   512  4096    1050624    239518875648   /dev/sda2

EBS 한도

ResourceDefault Limit
EBS 스냅샷의 갯수100,000
단일 볼륨에 허용되는 동시 스냅샷5 for io1, gp2, magnetic; 1 for st1, sc1
단일 대상 리전에서 동시 스냅샷 복사 요청5
범용 SSD(gp2) 볼륨의 총 볼륨 스토리지300 TiB
프로비저닝된 IOPS SSD(io1) 볼륨의 총 볼륨 스토리지300 TiB
처리량 최적화된 HDD(st1)의 총 볼륨 스토리지300 TiB
콜드 HDD(sc1)의 총 볼륨 스토리지300 TiB
마그네틱 볼륨(standard)의 총 볼륨 스토리지300 TiB
총 브로비저닝된 IOPS300,000

참고


댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

Bitnami