ストレージの役割と特性

ストレージ(NFS / SAN / オブジェクトストレージ)は永続データの保管・共有ファイルシステムの提供を担う。ボトルネックとなるのはIOPS(ランダムアクセス)・スループット(シーケンシャル)・容量・レイテンシの4軸であり、ワークロードの特性によって対処方法が異なる。

ボトルネックになるリソース

ストレージ種主なボトルネック確認方法
NFS サーバーCPU(プロトコル処理)・ネットワーク帯域・ディスク IOPSnfsstat -s / iostat
SAN / iSCSIFC / iSCSI 帯域・バックエンドディスク IOPSストレージ管理コンソール
AWS S3プレフィックス単位のリクエストレート(3,500 PUT / 5,500 GET per prefix)CloudWatch S3 RequestMetrics
EFS / Azure Filesスループットモード・バーストクレジット残量CloudWatch BurstCreditBalance

スケールアップの内容と効果

① IOPS 増強

■ 必要 IOPS の試算
必要 IOPS = 1秒あたりのファイル操作数 × アクセスパターン係数
例:2,000 ops/s(70% ランダム) → 2000 × 0.7 + 2000 × 0.3 × 0.3 ≈ 1,580 IOPS → gp3 を 3,000 IOPS に設定
Shell — IOPS・スループット確認
iostat -x 1 10
# r/s: 読み取り IOPS   w/s: 書き込み IOPS
# await: I/O 待機時間(ms)。SSD なら 1ms 以下が正常
# %util: 70% 超えで飽和気味
nfsstat -s   # NFS サーバー側統計

② スループット増強

■ 必要スループットの試算
必要 MB/s = 最大同時転送数 × 平均ファイルサイズ(MB) ÷ 転送時間(s)
例:10ユーザー同時に 500MB を 30秒でダウンロード → 10 × 500 ÷ 30 ≈ 167 MB/s → EFS Provisioned Throughput を 200 MB/s に設定

③ S3 リクエストレート問題の対処

Python — S3 プレフィックス分散
import hashlib

def s3_key_with_distributed_prefix(original_key: str, prefix_len: int = 4) -> str:
    # ランダムなプレフィックスを付与してアクセスを分散させる
    # 例: "logs/2026/05/30.log" -> "a3f2/logs/2026/05/30.log"
    hash_prefix = hashlib.md5(original_key.encode()).hexdigest()[:prefix_len]
    return f"{hash_prefix}/{original_key}"

# 1プレフィックスあたり: 3,500 PUT / 5,500 GET req/s
# 16 プレフィックスなら: 56,000 PUT / 88,000 GET まで対応可能

スケールダウンの考え方

条件スケールダウン可否
EBS %util < 20% かつ await < 1ms が常態化gp3 の IOPS/スループット削減を検討
EFS BurstCreditBalance が常に増加Provisioned Throughput を下げることを検討

AWS EBS gp3 は IOPS とスループットを独立調整できる

ベースライン(3,000 IOPS / 125 MB/s)に対して必要分だけ追加課金で増強。「試してから下げる」アプローチが取りやすいです。

スケールアップ vs スケールアウト

状況推奨アプローチ
単一ボリュームの IOPS 限界スケールアップ(gp3 増強 / io2 化)
容量が 16TB(EBS 上限)に迫るストレージアレイ追加 / S3 ライフサイクル移行
S3 スロットリングプレフィックス分散(スケールアップでは解決しない)

判断指標(監視メトリクス)

メトリクス確認方法スケールアップの目安
%util(ディスク使用率)iostat -x≥ 70% が継続
await(I/O 待機時間)iostat -xHDD: ≥ 15ms / SSD: ≥ 5ms
EBS VolumeQueueLengthCloudWatch≥ 0.1 が継続
S3 ThrottledRequestsCloudWatch> 0 が継続

まとめ

項目要点
IOPS 増強ランダムアクセス多 → gp3 IOPS 増強 / io2 Block Express 化
スループット増強大容量転送 → gp3 スループット増強 / EFS Provisioned Throughput
S3 スロットリングプレフィックス分散で解決する(スケールアップでは解決しない)
スケールダウンEBS gp3 は IOPS とスループットを個別に削減できる