新機能「プロビジョンドレート」でファーストタッチペナルティ対策

記事タイトルとURLをコピーする

こんにちは。2025年5月にサーバーワークスに入社し、エデュケーショナルサービス課で研修中の丸山隆宏です。

私も過去に悩まされた、スナップショットからのリストア時に発生するパフォーマンス課題の最新解決策をご紹介します。

ファーストタッチペナルティとは

皆さんは、Amazon EBSをスナップショットからリストアした際に発生する顕著なI/O遅延、いわゆるファーストタッチペナルティをご存知でしょうか。

これは、リストア直後のEBSボリュームのデータブロックに初めてアクセスした際に、実データが保管されているAmazon S3への読み込みが発生し、I/Oが極端に遅くなる現象を指します。

このI/O遅延を解消する手段として、「ディスク初期化」という対応が必要でしたが、このプロセスをより簡単かつ確実に実行するためのマネージド機能がAWSから先日発表されました。

本記事では、新機能の解説と今までの手法との比較、そしてそれぞれのユースケースを解説します。

これまでの手法と課題

まず、従来の手法には以下があり、それぞれに課題がありました。

ボリュームを手動で初期化

リストアしたEBSボリュームに対し、ユーザ自身が手動でddやfioコマンドの実行を行い、全ブロックへ強制的にアクセスしファーストタッチペナルティを意図的に発生させておく(=初期化を完了させる)方法です。

課題: コストは掛からないものの、サーバー上での手動対応が必要で、いつ初期化が終わるのかを正確に把握することが困難でした。

Amazon EBS Fast Snapshot Restore (FSR)

FSRは、特定のアベイラビリティーゾーンのEBSスナップショットにて予め有効化しておくことでAWS側で初期化対応済みEBSボリュームを常に準備し続けてくれる機能です。 これにより、リストアしたEBSボリュームはファーストタッチペナルティ無しで、作成直後から最大パフォーマンスを発揮できる仕組みです。

課題: 初期化対応済みEBSボリュームの迅速な展開が可能ですが、機能を有効化し続ける間のコストが比較的高額になるケースがあり、利用には計画性が必要でした。

FSR利用時の注意点については以下のブログに記載されているので、よければご覧ください。

blog.serverworks.co.jp

新機能「ボリューム初期化用のプロビジョンドレート」によるマネージドな初期化

これらの課題に対する新しいアプローチとして、「ボリューム初期化用のプロビジョンドレート」 (以降「プロビジョンドレート」と表記)を指定できる機能が発表されました。

AWSの発表

機能概要

この機能は、以下の2つの特性があります。

レート指定: 初期化の速度(例:100MiB/s)を指定して、スナップショットからEBSボリュームを作成できます。これにより、初期化を急ぐか、あるいは他のワークロードへの影響を抑えながらゆっくり進めるかといったコントロールが可能になります。

可視化: 初期化プロセスの進捗状況を確認できます。“初期化が100%完了した”ことをもって本番投入できるため、パフォーマンスへの不安が解消されます。

この2つの組み合わせにより、これまで手作業と勘に頼っていた作業を、マネージドかつ観測可能なプロセスとして実行できるようになりました。

コストと時間・制限事項

料金体系

この機能は、初期化を実行したボリュームサイズ(GB)に応じた従量課金です。指定したレートによって料金は異なります。(2025年7月時点)

  • 100MiB/s~200MiB/s:$0.00290/GB
  • 201MiB/s~300MiB/s:$0.00430/GB

参考:Amazon EBS の料金 - Amazon EBS のボリューム初期化のプロビジョンドレート

コスト・時間の例

【例1】50GiBのスナップショットを初期化する場合

手法 レート 費用 時間(理論値)※
プロビジョンドレート 200MiB/s $0.15 約4分
プロビジョンドレート 300MiB/s $0.22 約3分

【例2】1,024GiBのスナップショットを初期化する場合

手法 レート 費用 時間(理論値)※
プロビジョンドレート 200MiB/s $2.97 約85分
プロビジョンドレート 300MiB/s $4.40 約57分

このように、コストと時間をトレードオフの関係で選択できるのが大きな特徴です。

※ 理論値はスナップショットサイズを指定レートで割った計算値です。実際の処理時間は、ネットワーク状況やシステム負荷により変動する場合があります。

利用時の注意点

プロビジョンドレート機能を利用する前に、以下の点にご注意ください。

項目 内容
対応リージョン すべての商用 AWS リージョンと AWS GovCloud (米国) リージョン(2025年7月時点)
対応ボリュームタイプ gp3、io1、io2のみ対応
指定可能なレート 100~300MiB/sで指定可能
同時実行の上限 同時に5,000MiB/s(100MiB/s指定の場合50ボリューム同時)の制限あり。上限緩和申請が可能
料金発生 初期化処理を開始した時点から課金が発生。ボリュームを削除しても、処理済み分の料金は発生
FSRが有効なスナップショットからのリストア時 プロビジョンドレートの設定が優先されるため指定を行わないようにする

3つの手法の比較とユースケース

比較表

手法 対処法 コスト 即時性 運用の手軽さ
手動で初期化 手動で解消 ◎ 低 × 遅い × 複雑
FSR 完全に回避 △ 高 ◎ 最速 △ 事前設定が必要
プロビジョンドレート 期間を管理・観測 ◯ 中 ◯ 高速 ◯ シンプル

ユースケース

ボリュームを手動で初期化

  • 夜間バッチでの検証用データベースのリストア
  • 開発環境でのテストデータ準備
  • コスト最優先で時間に制約がない場合

プロビジョンドレート

  • 定期メンテナンス時のデータベースのリストア
  • システム移行時のボリューム準備
  • 本番環境での計画的なリストア作業
  • 初期化完了の確実性や完了時間の確認を求める場合

FSR

緊急時対応

  • 障害復旧時の緊急リストア
  • リアルタイム性が求められるサービスの復旧
  • ダウンタイム最小化が最優先の場合

予定された作業

  • 定期的なDR訓練
  • 計画的なシステム切り替え
  • リストア実行タイミングが事前に決まっている場合

※FSRは事前にスナップショットで有効化しておく必要があり、あらかじめリストアするタイミングが予測できる場合に利用するのが最も効果的です。

プロビジョンドレートの使い方

この新機能の利用方法は非常に簡単です。設定手順と確認方法を解説します。

AWS Management Consoleでの設定手順と確認方法

ボリュームの作成

「ボリューム作成」画面で、 「ボリューム初期化レート (MiB/秒) 」 という新しい項目で、初期化のスループット(例:100MiB/s)を入力します。

ボリューム初期化レートの指定

初期化状態の確認

対象のボリュームを選択、「ステータスチェック」タブに“初期化状態”の欄が表示され、初期化中の場合はクリックすると進行状況が確認できます。

EBS初期化の進行状況

AWS CLIでの設定手順と確認方法

ボリュームの作成

create-volume コマンドに --volume-initialization-rate オプションを追加して実行します。

aws ec2 create-volume \
    --availability-zone ap-northeast-1a \
    --snapshot-id snap-xxxxxxxxxxxxxxxxx \
    --volume-type gp3 \
    --volume-initialization-rate 100

初期化状態の確認

作成したボリュームのステータスを describe-volume-status コマンドで確認すると“initialization-state”にステータスが表示されます。

aws ec2 describe-volume-status \
    --volume-ids vol-yyyyyyyyyyyyyyyyy

出力例

{
    "VolumeStatuses": [
        {
            "VolumeId": "vol-yyyyyyyyyyyyyyyyy",
            "AvailabilityZone": "ap-northeast-1a",
            "VolumeStatus": {
                "Status": "ok",
                "Details": [
                    {
                        "Name": "io-performance",
                        "Status": "normal"
                    },
                    {
                        "Name": "initialization-state",
                        "Status": "initializing"
                    }
                ]
            },
            "Actions": [],
            "Events": []
        }
    ]
}

CloudFormationでの設定手順

AWS::EC2::Volume リソースに VolumeInitializationRate プロパティを追加して定義します。

Resources:
  MyEBSVolume:
    Type: AWS::EC2::Volume
    Properties:
      AvailabilityZone: !Ref AvailabilityZone
      SnapshotId: !Ref SnapshotId
      VolumeType: gp3
      VolumeInitializationRate: 100

まとめ

「プロビジョンドレート」 の登場により、「手作業で頑張る」か「事前設定が必要かつコストが心配」という選択肢しかなかったところに 「マネージドのサービスを使って賢く管理」 という、現実的でバランスの取れた選択肢が加わりました。

今後はこの新機能を基本戦略とし、要件に応じてFSRを組み合わせることで、より柔軟なEBSリストア戦略を立てられるようになります。

この記事が、皆さんの日々の運用負荷を軽減する一助となれば幸いです。

丸山 隆宏 (記事一覧)

エンタープライズクラウド部

クラウドコンサルティング2課 所属