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 使用
- 重要的服務像是 DB 則要選擇
- 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 的
io1IOPS 最大有 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)

延伸閱讀
參考資料
- AWS re:Invent 2016: Deep Dive on Amazon Elastic Block Store (STG301), Slideshare
- Amazon EBS Volume Types
- Storage Wars: File vs Block vs Object Storage
- Building a Backup System for Scaled Instances using AWS Lambda and Amazon EC2 Run Command



