SAP-C02-085 · セクション 10 / タスク 2.5
Storage Performanceの選択
Amazon S3 / Amazon EBS / Amazon EFS / Amazon FSx / IOPS / スループット / アクセスパターン
ゴール
ストレージ性能を選ぶときは、
IOPSが高いサービス
スループットが高いサービスという単純な比較はしません。
まず、
どのようにデータへアクセスするのか
↓
何を性能目標としているのか
↓
そのアクセス方法と性能特性を
満たせるストレージはどれかと判断します。
例えば、
小さいランダムI/Oを
大量に処理したい場合と、
数TiBのデータを
大きなI/Oで連続転送したい場合では、同じストレージを選ぶとは限りません。
さらに、
オブジェクトAPIでよいのか
EC2へブロックデバイスが必要か
複数サーバーから同じファイルを共有するのか
SMB / NFS / Lustreなど特定のアクセス方式が必要かも重要です。
1. 最初にアクセスパターンを分解する
ストレージを選ぶ前に、少なくとも次を確認します。
アクセス方式
+
I/Oサイズ
+
ランダム / シーケンシャル
+
読み取り / 書き込み比率
+
同時アクセスするクライアント数
+
共有が必要か
+
負荷が一定か急増するか例えば、
8 KiB
ランダム
数万回/秒ならIOPSが重要です。
一方、
1 MiB前後
シーケンシャル
大容量スキャンならスループットが中心になります。
すでに定義した性能指標を、ここではストレージ選択条件として使用します。
2. 性能数値だけでサービスを決めない
例えば、
30,000 IOPSが必要という情報だけでは不十分です。
同時に、
EC2からブロックデバイスとして使う?
複数ノードでファイル共有する?
オブジェクトAPIでアクセスする?
Windows SMBが必要?
HPC向けの並列ファイルアクセス?を確認します。
したがって、
性能目標
+
アクセスパターン
+
必要なアクセスインターフェイスを組み合わせて判断します。
3. Amazon S3はオブジェクトAPIで大規模にアクセスする場合の候補
アプリケーションが、
PUT
GET
HEAD
DELETEなどのAmazon S3 APIでデータを扱える場合、Amazon S3を評価できます。
典型的には、
静的コンテンツ
データレイク
バックアップデータ
分析対象オブジェクト
大量の非構造化データなどです。
Amazon S3は高いリクエストレートへ自動的にスケールできます。
ここで重要なのは、
Amazon S3
=
EC2へアタッチする
通常のブロックデバイスではないことです。
アプリケーションがオブジェクトAPIを利用できること自体が、重要なアクセス条件になります。
4. 低レイテンシーのオブジェクトアクセスではS3 Express One Zoneも評価する
通常のAmazon S3よりも低いオブジェクトアクセスレイテンシーが重要で、
コンピューティングと
ストレージを同じAZへ配置できる
+
単一AZという条件を
設計上受け入れられる場合は、
S3 Express One Zoneを評価できます。
S3 Express One Zoneは、
ディレクトリバケット
+
単一AZ
+
一貫した1桁ミリ秒の
読み取り / 書き込みレイテンシーを特徴とします。
したがって、
オブジェクトAPIが必要
+
アクセスレイテンシーを
さらに下げたいという判断で候補になります。
5. Amazon EBSはEC2からブロックストレージとして使う
EC2上のOSやアプリケーションが、
ブロックデバイスとして永続ストレージへアクセスする場合、Amazon EBSを評価します。
例えば、
ファイルシステム
データベースファイル
トランザクションデータ
ブートボリュームなどをEC2から扱う構成です。
EBSでは、
小さいランダムI/O
大きいシーケンシャルI/O
必要IOPS
必要スループット
必要レイテンシーによって、適切なボリュームタイプが変わります。
6. 一般的なSSDブロック要件ではgp3を最初に評価する
汎用 SSD(gp3)は、
トランザクション処理
仮想デスクトップ
中規模データベース
ブートボリューム
開発環境
一般的なアプリケーションなど、幅広いワークロードに利用できます。
現行のgp3では、ボリューム容量とは別に、
IOPS
スループットを必要量へ設定できます。
最大性能は、
80,000 IOPS
2,000 MiB/秒です。
したがって、
EC2用ブロックストレージ
+
小さいランダムI/O
+
通常〜高性能のSSDなら、まずgp3を評価します。
7. 持続的な非常に高いIOPSではio2 Block Expressを評価する
プロビジョンド IOPS SSD(io2)Block Expressは、
非常に高いIOPS
+
持続的なI/O性能
+
低いI/Oレイテンシーが必要なワークロード向けです。
現行仕様では、対応するNitroベースのEC2で、
最大256,000 IOPS
最大4,000 MiB/秒をサポートします。
また、16 KiB I/Oでは、
平均500マイクロ秒未満のレイテンシーを実現するよう設計されています。
例えば、
100,000 IOPS超
+
小さいランダムI/O
+
レイテンシーにも厳しいという要件なら、
gp3ではなく
io2 Block Expressを評価という判断になります。
8. EBSで大きなシーケンシャルI/Oならst1を評価する
スループット最適化 HDD(st1)は、
IOPSよりも、
スループットを重視するHDDボリュームです。
向いているのは、
ETL
ログ処理
データウェアハウス
大規模な連続読み書き
大きなデータセットのスキャンなどです。
典型的には、
大きなI/O
+
シーケンシャル
+
頻繁にアクセスというアクセスパターンです。
逆に、
小さいランダムI/Oを大量に処理する場合は、st1ではなくSSD系を評価します。
9. Cold HDDは別の選択軸を持つ
Cold HDD(sc1)も、大きなシーケンシャルI/O向けのEBS HDDです。
性能面では、
st1
→ 最大500 MiB/秒
sc1
→ 最大250 MiB/秒という違いがあります。
ただし、sc1の主要な選択条件には、
データへのアクセス頻度が低い
+
ストレージコストを最小化したいことも含まれます。
そのため、
必要スループットが
250 MiB/秒以下
↓
必ずsc1とは判断できません。
ここでは、
st1 / sc1
→ どちらも大きな
シーケンシャルI/O向け
st1
→ 頻繁にアクセスする
スループット重視のワークロード
sc1
→ 低頻度アクセスという
別の選択条件も持つという位置付けだけ押さえます。
ストレージのアクセス頻度やコストを中心とした最適化判断とは分けて考えます。
10. EBS性能はボリュームだけでは決まらない
例えば、
gp3
80,000 IOPSを設定しても、
EC2インスタンス側がそれだけのAmazon EBS性能を提供できなければ、実際には到達できません。
概念的には、
EBSボリューム側の性能上限
と
EC2インスタンス側の
Amazon EBS性能上限
↓
低い方が実効性能を制限します。
そのため、
IOPSが足りない
↓
ボリュームのIOPS設定だけ増やすとは判断しません。
ボリューム
+
EC2側のAmazon EBS帯域幅 / IOPSの両方を確認します。
11. Amazon EFSは複数クライアントで共有するNFSファイルストレージ
複数のLinux系コンピューティングから、
同じファイル
同じディレクトリへNFSで同時アクセスしたい場合、Amazon EFSを評価できます。
例えば、
複数EC2
複数コンテナ
複数アプリケーションノードから共有するファイルシステムです。
Amazon EFSは容量がファイルの増減に応じて伸縮するため、
ストレージ容量を
事前に固定してプロビジョニングする必要がありません。
12. EFSでは現在、汎用パフォーマンスモードを基本にする
Amazon EFSには、
汎用
最大 I/Oというパフォーマンスモードがあります。
ただし現在AWSは、
汎用パフォーマンスモードをすべてのファイルシステムで推奨しています。
最大 I/Oは前世代のパフォーマンスタイプで、
汎用より
オペレーションごとの
レイテンシーが高いという特性があります。
したがって、
IOPSが多い
↓
最大 I/Oを選ぶとは判断しません。
現行設計では、まず汎用パフォーマンスモードを評価します。
13. EFSではスループットモードを負荷パターンから選ぶ
Amazon EFSのスループットモードには、
エラスティック
プロビジョニング済み
バーストがあります。
エラスティックスループット
負荷が予測しにくい
ピークが急に発生する
平均負荷がピークよりかなり低い場合に向いています。
EFSがワークロードに合わせてスループットを自動調整するため、必要量を事前に決める必要がありません。
プロビジョニング済みスループット
必要スループットが明確で、指定したスループットを確保したい場合に評価します。
バーストスループット
ファイルシステムに保存されているデータ量などに基づくベースラインとバースト特性を利用します。
重要なのは、
NFS共有だからEFSで終わらず、
負荷変動
+
必要スループットからスループットモードまで判断することです。
14. Amazon FSxは必要なファイルシステム特性から選ぶ
Amazon FSxでは現在、
FSx for Windows File Server
FSx for Lustre
FSx for NetApp ONTAP
FSx for OpenZFSを利用できます。
どれも、
高性能なファイルストレージというだけで選びません。
まず、
必要なプロトコル
ファイルシステム互換性
既存アプリケーション要件
並列アクセス特性を確認します。
15. Windowsネイティブの共有ファイルではFSx for Windows File Server
次のような要件なら、
SMB
Windowsファイルシステム機能
Microsoft Windows Server互換
Active Directory連携FSx for Windows File Serverを評価します。
例えば、
複数Windowsサーバー
↓
共通SMB共有という構成です。
性能面では、
スループットキャパシティ
+
ストレージIOPSなどをワークロードに合わせます。
16. 高度に並列化されたファイル処理ではFSx for Lustre
多数のコンピューティングノードが、
同じ大規模データセットを並列処理し、
非常に高い集約スループット
+
多数クライアントからの
並列ファイルアクセスを必要とする場合、
FSx for Lustreを評価します。
代表例は、
HPC
機械学習
大規模分析
メディア処理などです。
FSx for Lustreは複数のファイルサーバーやディスクへスケールアウトし、大量のクライアントから並列アクセスするワークロード向けです。
17. ONTAPやOpenZFSが要件なら該当するFSxを選ぶ
FSx for NetApp ONTAP
例えば、
NFS
SMB
iSCSI
NVMe/TCPなどの複数プロトコルや、
既存のONTAP機能を必要とする場合に評価します。
同じデータへNFSとSMBからアクセスするマルチプロトコル構成も可能です。
FSx for OpenZFS
NFS
+
OpenZFSベースの
ファイルシステム機能を必要とする場合に評価します。
つまりAmazon FSxでは、
FSxという名前だけではなく、
必要なファイルシステム
+
プロトコル
+
性能特性まで見て種類を選びます。
18. 「IOPS型」と「スループット型」をストレージ選択へ適用する
すでに性能目標として、
IOPS
スループットを分けました。
ストレージ選択では、これをアクセスパターンと結び付けます。
| アクセスパターン | 重点 |
|---|---|
| 小さいランダムI/Oを大量に処理 | IOPS / レイテンシー |
| 大きいシーケンシャルI/O | スループット |
| 多数ノードによる並列ファイル処理 | 集約スループット / 並列性 |
| オブジェクトを大量にPUT / GET | リクエスト特性 / オブジェクトアクセスレイテンシー |
| 複数ノードで同じファイルを共有 | ファイルアクセス方式 + スループット |
つまり、
IOPSが必要だけでサービスを選ばず、
どの形式のI/Oを
どこから
どのように行うのかまで確認します。
19. 代表的な選択を整理する
| 要件 | 最初に評価する候補 |
|---|---|
| オブジェクトAPIで大規模データへアクセス | Amazon S3 |
| 単一AZで低レイテンシーなオブジェクトアクセス | S3 Express One Zone |
| EC2用の一般的なSSDブロックストレージ | Amazon EBS gp3 |
| 非常に高い持続IOPSと低レイテンシー | Amazon EBS io2 Block Express |
| 大きなシーケンシャルI/Oを頻繁に実行 | Amazon EBS st1 |
| 複数Linux系クライアントからNFS共有 | Amazon EFS |
| WindowsネイティブSMB共有 | FSx for Windows File Server |
| 高度に並列化された高スループットファイル処理 | FSx for Lustre |
| ONTAP / マルチプロトコル要件 | FSx for NetApp ONTAP |
| NFS + OpenZFS要件 | FSx for OpenZFS |
これは、
サービス名の暗記表ではありません。
各行の左側にある、
アクセスパターン
+
性能目標が決定条件です。
20. よくある誤判断
| 誤判断 | 正しい判断 |
|---|---|
| IOPSが高ければ常に最良 | I/Oサイズ・レイテンシー・スループットも確認する |
| 大容量ならst1 | ランダムかシーケンシャルかを確認する |
| EFSの性能を上げるなら最大 I/O | 現在は汎用パフォーマンスモードが推奨 |
| gp3を高性能にすれば必ず設定値まで出る | EC2側のEBS性能上限も確認する |
| 共有ファイルなら全部EFS | SMB / Lustre / ONTAP / OpenZFS等の要件も確認する |
| S3はブロックボリュームの代替 | オブジェクトAPIで利用するストレージ |
| FSxなら種類はどれでも同じ | 必要なファイルシステムとプロトコルで選ぶ |
| 高性能ストレージを選べばアクセスパターンは不要 | 性能はアクセスパターンによって変わる |
21. SAP-C02での判断フロー
ストレージ性能目標
↓
アクセス方式は?
↓
オブジェクトAPI?
├─ はい
│ ↓
│ Amazon S3
│ ↓
│ 単一AZを受け入れて
│ より低いレイテンシーが必要?
│ ↓
│ S3 Express One Zoneも評価
│
└─ いいえ
↓
EC2からブロックデバイス?
├─ はい
│ ↓
│ Amazon EBS
│ ↓
│ 小さいランダムI/O?
│ → gp3 / io2を評価
│
│ 大きいシーケンシャルI/O?
│ → st1を評価
│
└─ いいえ
↓
共有ファイル?
↓
NFSを伸縮自在に共有?
→ Amazon EFS
↓
特定のファイルシステム要件?
├─ Windows / SMB
│ → FSx for Windows File Server
├─ 大規模並列処理
│ → FSx for Lustre
├─ ONTAP / マルチプロトコル
│ → FSx for NetApp ONTAP
└─ OpenZFS / NFS
→ FSx for OpenZFS最後に、
必要IOPS
必要スループット
必要レイテンシー
クライアント数
負荷変動が、そのサービスの性能範囲と一致するか確認します。
まとめ
Storage Performanceの選択では、
最高性能のストレージを選ぶのではありません。
まず、
アクセスパターン
↓
必要なアクセス方式
↓
IOPS / スループット / レイテンシー
↓
ストレージサービス
↓
サービス内の性能設定と判断します。
代表的には、
オブジェクト
→ Amazon S3
EC2ブロック
→ Amazon EBS
共有NFS
→ Amazon EFS
特定ファイルシステム
→ Amazon FSxです。
その上で、
小さいランダムI/O
→ IOPS重視
大きいシーケンシャルI/O
→ スループット重視
多数クライアント
→ 並列性と集約性能
変動の大きい共有ファイル負荷
→ EFSのスループットモード
非常に高いEBS IOPS
→ io2 Block Expressのように絞ります。
SAP-C02では、「このサービスが速いから選ぶ」ではなく、「このアクセスパターンと性能目標を、このサービスのアクセス方式と性能特性が満たすから選ぶ」という判断が重要です。
主要AWS公式資料
- AWS Certified Solutions Architect - Professional(SAP-C02)試験ガイド — タスク2.5 AWSストレージオプション・アクセスパターン
- Amazon EBS ボリュームの種類 — gp3 / io2 / st1 / sc1の性能特性
- Amazon EBS I/O の特性およびモニタリング — IOPS・I/Oサイズ・スループット
- Amazon EBS 最適化インスタンス — EC2側のEBS性能上限
- Amazon EFS のパフォーマンス仕様 — パフォーマンスモード・スループットモード
- Amazon S3 パフォーマンスガイド — 大規模オブジェクトアクセス
- S3 Express One Zone — 低レイテンシーオブジェクトアクセス
- Amazon FSx — Windows / Lustre / ONTAP / OpenZFS
理解確認
このページの内容を10問で確認します。
理解確認10問へ →