※ 完全に不要になったわけではないです。詳しくは下記。
EBSボリュームのプレウォーミングをやろうとして久しぶりにドキュメントみたら内容が変わってました。
Linux: http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-initialize.html
Windows: http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/ebs-initialize.html
新しい EBS ボリュームは、利用可能になるとすぐに最大のパフォーマンスを発揮し、初期化 (以前は事前ウォーミングと呼ばれました) を必要としません。ただし、スナップショットから復元されたボリュームのストレージブロックは、アクセスするためには事前に初期化する必要があります (Amazon S3 からプルダウンしてボリュームに書き込みます)。この準備処理には時間がかかるため、初めて各ブロックにアクセスした場合に、I/O 操作のレイテンシーの著しい増加が発生する可能性があります。ほとんどのアプリケーションにとって、ボリュームの存続期間全体でこのコストを割り当てることは、許容範囲内です。一度データにアクセスされると、パフォーマンスは元に戻ります。
ボリュームを使用する前に、そのボリュームのすべてのブロックを対象に、読み取りを実行することで、本番環境におけるパフォーマンスの低下を回避することができます。このプロセスを「初期化」と呼びます。スナップショットから作成された新しいボリュームの場合は、ボリュームを使用する前に、データのあるすべてのブロックを読み取る必要があります。
つまり、新規でEC2インスタンスを作る場合はプレウォーミングが不要になったけど、スナップショット(EBSスナップショット、AMI)から復元したEBSボリュームは以前と変わらず初期化(プレウォーミングからネーミングが変わった)をする必要があるということですね。ちょろっと冒頭だけ読んで期待して損した!
今まではリードとライトの両方をddコマンドで実行する必要がありましたが、初期化はリードのみで良いのでddコマンドで以下のように実行すれば良いです。
before
$ sudo dd if=/dev/xvdf of=/dev/xvdf conv=notrunc bs=1M
after
$ sudo dd if=/dev/xvdf of=/dev/null bs=1M
いつからこのような仕様になったのかは不明。AWSから特にアナウンスが無かったと思います。
復元したEBSボリュームもプレウォーミングが不要になればもっと便利になるのに・・・