Deep Dive on EBS


AWS EBS 有四種類型: io1, gp2, st1, sc1,分別是 SSD / HDD,設計上是針對不同的用途有不同的選擇。整理 Deep Dive on Amazon EBS官方文件 的筆記與介紹。

AWS Storage Types

在 AWS 上有三種資料儲存的類型:

  • Block: EBS (Elastic Block Storage)
  • File: EFS (Elastic File System)
  • Object: S3 (Simple Storage Service)

這三種的差異,參閱:Storage Wars: File vs Block vs Object Storage

Block Storage Services

AWS 提供兩種 Block Storage:Instance Store, EBS (SAN-Based)

  • EC2 Instance Store
  • EBS:
    • SSD-backed volumes
    • HDD-backed volumes

EBS 本身透過網路資料傳輸的,硬體分成 SSD / HDD 兩種。

EBS is designed for:

  • SLA: 99.999%
  • AFR (Annual Failure Rate): 0.1% to 0.2%

EBS Snapshot

EBS 本身支援快照功能 (Snapshot),此功能用在 AMI、Backup 等用途,他有以下特點:

  • Point-in-time backup of modified volume blocks
  • Stored in S3, accessed via EBS APIs
  • Subsequent snapshots are incremental
  • Deleting snapshot will only remove data exclusive to that snapshot EBS snapshot

EBS snapshot 是遞增 (incremental),每次快照都是差異備份,每次都會在 S3 以儲存差異資料儲存。

官方建議的 practice 就是定期為 EBS 做快照備份,最常見的應用就是透過 CloudWatch Event + Lambda 實作 EC2 自動備份。官方 Blog 提供類似的 Solution: Building a Backup System for Scaled Instances,類似的方法我在 Ops as Code with AWS CLI 也提過類似的想法,目前這樣的功能我在團隊裡也是用類似的方法,請同仁實作。

下圖是 Deep Dive 中建議的方式:

EBS Volume Types

AWS 提供四種 EBS Volume Type: io1, gp2, st1, sc1,他們有個別的使用場景以及需求,重新整理 官方文件 列表如下:

其中要注意幾點:

  • 使用場景的選擇:
    • 重要的服務像是 DB 則要選擇 io1,開發測試則是選擇 gp2
    • st1, sc1 比較偏向大數據、Log 處理,不適合作為開機 volume 使用
  • IOPS or Throughput 的選擇:SDD 都是 IOPS 、HDD 則是以 Throughput 度量。
  • Volume Size 的範圍
  • 最大的 IOPS / Throughput

Chooing an EBS Volume Type

Deep Dive on Amazon EBS 畫了一張圖,用來引導如何選擇適當的 EBS Volume Type

Performance

EBS 是透過網路,跟 EC2 Instance 共享網路頻寬,如果應用程式本身有頻寬的要求 (像是 DB),要打開 EBS Optimized,而大一點的 EC2 Type 預設也都是打開的。

下圖是文件提到的 Workload:

  • EBS-Optimizied 最大有 4Gpbs 頻寬
  • 1TB 的 io1 IOPS 最大有 16,000 IOPS
  • st1 最大 Throughput 有 320MB/s (base) - 500MB/s (burst)


General Purpose SSD Volumes (gp2)

以下整理自 官方文件 的說明。

gp2 基本的特性:

  • gp2 IOPS 範圍 100 (33.33GiB 以下) - 10,000 (3,334 GiB 以上)
  • IOPS baseline 以每 GiB 3 IOPS 線性增加
  • gp2 volume size: 1GiB - 16TiB
  • 100GiB 有 300 IOPS

下表顯示 gp2 各個大小的 baseline, max burst duration

I/O Credits and Burst Performance

  • gp2 的 I/O 是可以累加的,如果一段時間沒有大量 I/O,credit 會慢慢累積,最大有 54,000 IOPS
  • 最多可以 burst performance 3000 IOPS / 30 分鐘
  • 初始化的 balance 是給開機使用,通常開機需要大量的 IO,這時候會消耗大量的 IOPS
  • gp2 不同的 volume size 有不同的 baseline,例如 100GiB 的 baseline 為 300 IOPS
  • 當需要的 IOPS 的時候,最大可以 burst 到 3000 IOPS (需要大於 1TB 的 Volume Size)

Provisioned IOPS SSD (io1)

延伸閱讀

參考資料


留言