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 的
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)
延伸閱讀
參考資料
- 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