Amazon Web Services ブログ
Amazon EBSのアップデート – 新たなスループット最適化ボリュームとコールドボリューム
AWSチームは料金とパフォーマンスの両面でイノベーションを起こし、その成果をサービスという形でお客様にご提供する方法がないか日夜検討しています。多くの場合、こういった取り組みは経済的な要素と技術的な要素の間のジレンマに直面することになります。
AWSに限らずとも、こういったジレンマは頻繁に目にすることができます。たとえばストレージにおけるHDDとSSDのトレードオフはその良い例でしょう。今日のSSDをHDDと比較すると、SSDには価格あたりのIOPS値や1GBあたりのデータ転送スループット、レイテンシの短さという点で優位性があります。だからといってHDDに優位性が無いかというとそうではなく、記録密度向上のおかげで容量あたりのコストの面では大きな優位性があります。ただし、これは裏を返せばインタフェースのスループットが同じであれば、1GBあたりのスループットが低下するということにつながります。この種のジレンマはよくあることですが、我々はこれをひとつのチャレンジするべき課題であると考え、「コスト効率の高いHDDを利用してビッグデータやログデータ処理といった用途で使える、高いスループットを安定的に発揮するEBSを作ることができないか?」と自問自答してみました。
その結論は『できる』です。
本日、低コストと高スループットという2つの要素を両立させた、2種類の新たなボリュームタイプを発表いたします。これらのEBSボリュームタイプは磁気ディスクを利用しており、EC2インスタンスやAmazon EMRクラスタと組み合わせて利用することが可能です。(料金は発表時点の東京リージョンのものです。他リージョンについてはEBSの料金ページをご参照ください)
- スループット最適化HDD(st1) – 高スループットを必要とするワークロード(MapReduce、Kafka、ETL処理、ログ処理、データウェアハウスなど)向けのタイプ; 1GBあたり月額0.054ドル
- コールドHDD (sc1) – 同様のワークロードでアクセス頻度が低いユースケース向け; 1GBあたり月額0.03ドル
既に多くのお客様にご利用頂いている汎用SSD(gp2)と同様に、これらの新規ボリュームタイプにはベースパフォーマンスとバーストパフォーマンス、バーストクレジットの概念があります。SSDベースのボリュームタイプはIOPSでその性能が表現されていましたが、こちらはスループットで表現されます。ベースパフォーマンスのみならず、バーストパフォーマンスもプロビジョンした容量に応じて下記のルールに従って変わっていきます。
- スループット最適化HDD (st1) – 1TBあたり250MB/秒で最大500MB/秒まで
- コールドHDD (sc1) – 1TBあたり80MB/秒で最大250MB/秒まで
EBS進化の歴史
AWSのサービス開発は、お客様のフィードバックが重要な要素となっています。新たなサービスや機能は、多くのユースケースに幅広く適用可能で汎用的なソリューションとして登場します。サービスの立ち上げ後、お客様のユースケースや頂戴したフィードバックを元にサービス改善のプランを立案し、開発に着手します。これによって、初期リリースでは汎用的であったサービスが個々のお客様のユースケースに対して最適化が進んだ形でいくつもの新機能が登場することになります。
この良い例が、EC2インスタンスで利用できるストレージの選択肢です。EC2インスタンスが利用できるストレージについてはこれまで数多くの機能拡張が行われていますが、特徴的なものを時系列で挙げてみましょう。
- 2006 – EC2のサービス開始。(この時点ではインスタンスストレージのみが利用可能でした)
- 2008 – 磁気ディスクベースのEBS(Elastic Block Store)をリリース
- 2012 – プロビジョンドIOPSボリュームとEBS最適化インスタンスをリリース
- 2014 – SSDベースのボリュームである汎用SSDをリリース
- 2014 – EBSデータボリュームの暗号化機能をリリース
- 2015 – 大容量で高速なEBSボリュームをリリース
- 2015 – EBS起動ボリュームの暗号化機能をリリース
- 2016 – 新たなボリュームタイプ、スループット最適化HDD(st1)とコールドHDD(sc1)をリリース
ワークロードの特性
私たちはビッグデータのワークロードで利用する時に最高のコストパフォーマンスを実現するように設計を行いました。ボリュームに備わった性能を最大限発揮するためには、大きなデータブロックに対してシーケンシャルにアクセスを行う必要があります(これはビッグデータ処理においては一般的なものです)。これはベースとなるHDDの性能特性に由来するものです。一般にHDDはシーケンシャルなデータは高速に転送することが可能ですが、(データベースエンジンが要求するような)小さいデータブロックに対するランダムなアクセスには向いておらずスループットが低くなります。こういった用途にはSSDが向いていますので、引き続き汎用SSDやプロビジョンドIOPSをご利用頂くことをお勧めします。
いずれのボリュームタイプにおいても、バーストクレジットの蓄積上限はボリュームサイズと等しい値になります。これは、もしバーストクレジットが上限まで蓄積されていれば、ボリュームの全領域を常時バースト状態でスキャンできるということを意味しています。1MB以下のブロックサイズに対するI/Oリクエストは1MB分のクレジット消費とカウントされることを覚えておいて下さい。シーケンシャルなI/Oリクエストについては可能な限りマージされますので、スループットの向上とバーストクレジットの有効活用が行われます。
もしアプリケーションがファイルシステムとOSのページキャッシュを利用するのであれば(普通は利用するようになっていますが)、先読みバッファのサイズを1MBに設定することをお勧めします。Amazon LinuxやUbuntuにおける設定例を以下に示します。(デバイスファイル名は読み替えてくださいね!)
$ sudo blockdev --setra 2048 /dev/xvdf
なお、2048という値は512バイトのセクタの数を意味しています。従ってこの例のように2048と指定すればちょうど1MBということになります。この設定を行うことにより、大きなデータブロックに対するシーケンシャルな読み書きパフォーマンスが向上します。しかしながら、小さなデータブロックに対するランダムなI/Oではレイテンシが高くなりますので注意して下さい。
Linux Kernelのバージョン4.2以前を使用しているお客様が設定すべき項目は既にご紹介した先読みバッファのサイズだけです。もっと新しいKernelを使用している場合は、最高のパフォーマンスを発揮するためにxen_blkfront.max
を256に設定することをお勧めします。 Amazon Linux AMIの場合は/boot/grub/menu.list
をエディタで開き、下記のように編集を行えばOKです。
kernel /boot/vmlinuz-4.4.5-15.26.amzn1.x86_64 root=LABEL=/ console=ttyS0 xen_blkfront.max=256
もしお手元のシステムのファイルに複数のエントリが存在する場合は、現在利用しているカーネルに関するものを修正してください。これは起動時に適用されるパラメータですので、変更内容を反映するには再起動が必要です。ブートローダとしてGrubを採用していないLinuxディストリビューションを利用している場合は、そのブートローダにあったやり方で同様のパラメータ変更を行う必要があります。
パフォーマンスチューニングに関する情報が必要な場合は、Amazon EBSボリュームのパフォーマンス on LinuxインスタンスまたはAmazon EBSボリュームのパフォーマンスon Windowsインスタンスを参照してください。
EBSボリュームタイプの比較
それぞれのボリュームタイプの仕様やユースケースを表にまとめました。(元祖EBSであるマグネティックは記載していませんが、これからも引き続きご利用いただけます)
Solid State Drive (SSD) | Hard Disk Drive (HDD) | |||
ボリュームタイプ | プロビジョンド IOPS SSD (io1) |
汎用SSD (gp2) |
スループット 最適化HDD (st1) |
コールドHDD (sc1) |
ユースケース | I/O性能に依存するNoSQLデータベースやリレーショナルデータベース | 起動ボリューム、低レイテンシを要求するアプリケーション、開発・テスト環境 | ビッグデータ、DWH、ログデータ処理 | スキャンする頻度が低いデータ |
ボリュームサイズ | 4 GB – 16 TB | 1 GB – 16 TB | 500 GB – 16 TB | 500 GB – 16 TB |
ボリューム毎の最大IOPS | 20,000 (16 KB I/O size) |
10,000 (16 KB I/O size) |
500 (1 MB I/O size) |
250 (1 MB I/O size) |
インスタンス毎の最大IOPS (複数ボリューム) |
48,000 | 48,000 | 48,000 | 48,000 |
ボリューム毎の最大スループット |
320 MB/s | 160 MB/s | 500 MB/s | 250 MB/s |
インスタンス毎の最大スループット (複数ボリューム) |
800 MB/s | 800 MB/s | 800 MB/s | 800 MB/s |
月額料金 (東京リージョン) |
$0.142/GB + $0.074/設定IOPS値 |
$0.12/GB | $0.054/GB | $0.03/GB |
性能指標 |
IOPS | IOPS | MB/s | MB/s |
なお、汎用SSDやプロビジョンドIOPSで提供されるIOPSよりも高いIOPSが必要な場合は、ストライピング構成を取ることが可能です。詳しい情報はLinuxでのRAID構成またはWindowsでのRAID構成にまとまっています。
テスト用のCloudFormationテンプレート
テスト環境を簡単に構築するために、シンプルなCloudFormationテンプレートをご用意いたしました。st1 templateは2TBのスループット最適化HDDボリュームがアタッチされたEC2インスタンスが起動します。詳細な情報はst1 template instructionsにまとまっていますので、こちらもご覧ください。
今すぐご利用頂けます
新しいボリュームタイプは今すぐにご利用頂けます!AWS Management ConsoleやAWS Command Line Interface (CLI)、AWS Tools for Windows PowerShell、AWS CloudFormationテンプレート、AWS SDKなどお好みの方法で新しいタイプのボリュームをプロビジョンできます。
これまでご説明してきたように、新ボリュームタイプは高スループットと低コストを両立しています。我々は引き続きお客様のご要望を満たすようなEBSの進化を継続していきたいと考えておりますので、みなさまのフィードバックをお待ちしております!
—
Jeff;
日本語版の補足情報
毎週水曜日にお送りしているAWS BlackBelt Online Seminarですが、4/27(水)にAmazon EBSをご紹介いたします。今回発表された新しいボリュームタイプについても詳しくご説明いたしますので、ぜひご参加下さい。無料でご参加いただけますが、登録が必要ですのでこちらのサイトからご登録をお願いいたします。
(日本語版は小林が担当しました。原文はこちら)