Category: Amazon Elastic Block Store (EBS)


Amazon EC2 Systems Manager による Microsoft VSS を使用したスナップショットサポート

私たちはここでWindows AMIを稼働させるAmazon EC2におけるMicrosoftボリュームシャドウコピー(VSS)のサポートをアナウンスできることを嬉しく思います。VSSはMicrosoft Windows(主要なSQL ServerやExchange Serverなどのマイクロソフトアプリケーションを含む互換性のある)環境における非常に一般的なボリュームバックアップ技術です。VSSはファイルの書き込みなどのディスク処理をバックアップ処理実行中も適切に管理するため、アプリケーション一貫性を持ったバックアップが可能となります。 アプリケーション一貫性バックアップは、マシンまたはインスタンスに接続されたボリュームのバックアップと同時に実行され、メモリ内のすべてのデータと処理中のすべてのトランザクションをキャプチャします。

VSSが有効なAmazon EBSボリュームのスナップショット(以降、”VSS有効化スナップショット”と表記) は、Amazon EC2 Systems ManagerのRun Commandから使用可能です。AWSEC2-CreateVssSnapshot コマンドによってWindowsインスタンスのEC2にアタッチされたEBSボリュームを、バックアップ処理の間トランザクションデータの一貫性を失うことなく、アプリケーション一貫性を持ったスナップショットを取得可能です。この機能によってSQL Backupや、カスタムスクリプトなどによって提供されたアプリケーション固有のバックアップソリューションは不要となります。さらに、イメージレベルバックアップにおけるアプリケーション一貫性を維持するためのサードパーティ製ツールも不要になります。

AWSEC2-CreateVssSnapshotの使用方法

VSS有効化スナップショットは、Windowsが稼働するEC2インスタンスに対してAWSEC2-CreateVssSnapshotコマンドをEC2 Systems Manager Run Commandから呼び出すことで実行します。AWS管理コンソールやAWS CLIから実行したり、PowerShellスクリプトやLambda関数から呼び出すことも可能です。本ブログではEC2コンソールからコマンドで実行する例を示します。

AWSEC2-CreateVssSnapshot Run Command

EC2管理コンソールで、AWSEC2-CreateVssSnapshotコマンドのドキュメントを選択し、VSS有効化スナップショットを取得したいEBSボリュームを持つインスタンスを選択します。 インスタンスを選択した後、スナップショットに追加したい説明やタグを設定します。ブートボリュームをスナップショット処理から除外することも可能です。

Calling AWSEC2-CreataeVssSnapshot Run Command

起動されるとRun CommandはVSSコンポーネント(詳細については後述)に対して、EC2 Windowsインスタンス上のVSS対応アプリケーションのすべての処理中のI/Oをコーディネーションするよう指示します。これによってI/OバッファはEBSボリュームに対してフラッシュされ、すべてのI/Oはスナップショット取得が完了するまでフリーズされます。この結果アプリケーション一貫性が維持されます。スナップショットが取得された後、I/Oフリーズが解除され通常処理に復帰します。

Run Commandやスクリプトから取得したスナップショットは、EC2コンソール左側のEBSスナップショットメニューで確認できます。 このプロセスで正常に取得された全てのVSS有効化スナップショットには “AppConsistent:True”というタグが付与されます。本機能についてのより詳細についてはこちらAWSEC2-CreateVssSnapshot のドキュメントを参照してください。

VSS有効化スナップショットを取得するためのEC2インスタンスの準備

  • インスタンスへのスナップショット許可 : IAMコンソールを開き、”Amazon EC2″サービスに対する以下の権限を許可する新しいポリシーを作成します。
    1. DescribeInstances
    2. CreateTags
    3. CreateSnapshot

またIAMコンソールからAmazon EC2ロールAmazonEC2RoleForSSMに対して上記で作成したポリシーを適用します。さらにこのロールを直接EC2 Windowsインスタンスにアタッチします。

IAM permissions to take VSS-enabled EBS snapshots

  • VSSコンポーネントのインストール : 2017年11月以降のMicrosoft Windows Server AMIイメージにはVSSコンポーネントはプリインストールされています。もし使用しているWindowsインスタンスのパッケージが最新でない場合は、VSSコンポーネント(AwsVssComponents)をAWS-ConfigureAWSPakageコマンドをSystems ManagerのRun Commandから呼び出してインストールする必要があります。

AWS-ConfigureAwsPackage to install VSS components

より詳しいVSS有効化スナップショット取得のためのEC2インスタンスのセットアップについてはこちらAmazon EC2 ドキュメントを参照ください。

Installing VSS components on EC2 instances

AWSEC2-CreateVssSnapshot使用する際には、対象のEC2インスタンスに対してEBSスナップショット作成およびタグ書き込み許可のIAM許可が必要となります。コンプライアンスやポリシーの理由から追加のIAM許諾をインスタンスに付与したくない場合には、カスタム可能なサンプルのスクリプトを活用可能です。このスクリプトの詳細についてはこちらAWSEC2-ManageVssIOに関するドキュメントを参照して下さい。

VSS有効化スナップショットのリストアプロセスは通常のEBSスナップショットと同様です。こちらのリストアのサンプルスクリプトも使用できます。このリストア用スクリプトで、指定されたEBSスナップショットからEC2 Windowsインスタンスにリストアすることが可能です。

About the Author

Purvi Goyal is a Senior Product Manager with the Amazon EC2 team, where she strives to enhance the cloud experience of AWS Enterprise customers. Outside of work, she enjoys outdoor activities like hiking and kayaking.

 

(翻訳:SA松崎, 元の記事はこちらです)

Amazon EBSのアップデート – 新機能エラスティックボリュームが全てを変える

お客様からビジネスのダイナミックさと、それを実現するためのアプリケーションがブロックストレージに求めるものについてご意見をうかがうことは、いつも興味深いものです。ビジネス状況の変化に伴ってブロックストレージへの要求も変化し、容量を追加したり、性能特性の異なるボリュームが必要になったりすることもあるはずです。今日では、24時間運用され続けるシステムも珍しくはありません。結果として、ダウンタイムやシステム運用への影響なく変更作業を行えることがお客様にとって重要な要素となってきます。

我々は長年にわたり、お客様の様々なユースケースをカバーするために、EBSに新機能を追加し続けてきました。例えば、2016年にはスループット最適化HDD(st1)とコールドHDD(sc1)という2種類のボリュームタイプをリリースしました。これらのボリュームをシステム運用への影響なく、パフォーマンス特性の変更やコスト削減を行うことで、階層化ストレージのように利用したいと考えるお客様がいらっしゃいます。言い換えると、お客様はEBSがより柔軟になることを望んでいるのです!

エラスティックボリューム
本日、EBSの新機能としてエラスティックボリュームをリリースいたしました。これは現行世代のEC2インスタンスにアタッチされた、全ての現行世代のEBSボリュームで利用可能です。お客様はボリュームサイズの拡張、パフォーマンスの調整、ボリュームタイプの変更を利用中に行うことができます。変更処理はオンラインで行われますので、お客様のアプリケーションは引き続き利用可能でダウンタイムはありません。

この新機能はリソース計画やチューニング、空き容量の管理といった作業を劇的にシンプル化してくれます。あるいは作業自体が不必要になるかもしれません。従来のやり方はダウンタイムを伴うため、変更の完了までプランニングやシステム停止の調整を含めると数週間から数ヶ月にわたる時間が必要でした。しかしこれからは、利用しているストレージインフラストラクチャをシンプルなAPIコールで簡単に変更することが可能になります。

  • ワークロードの変化 – インフラ構築を急ぐ必要があり、汎用SSDボリュームを採用することにしました。システムをリリースし、運用を行っていくにつれて、スループット最適化HDDボリュームが最適であることに気づいたとしましょう。エラスティックボリュームの機能により、単純にボリュームタイプを変更するだけで対応が完了します。
  • 突発的な需要への対応 – プロビジョンドIOPSボリューム上に構築したリレーショナルデータベースで、1ヶ月のほとんどの期間にわたり問題なく処理を行えるシステムがあります。ただし月末処理の関係で各月終わりの3日間は10倍のトラフィックを処理する必要があったとします。この場合は、エラスティックボリュームを利用して月末の3日間だけIOPSを高く設定し、処理が終わったら元に戻すという運用が可能です。
  • ストレージの増加 – 100GBのボリュームで運用してきたシステムで、ディスク使用率が90%を超過したというアラームが発報しました。あらかじめ設定を行っておけば、ボリュームとファイルシステムの拡大を自動的にダウンタイム無しで行うこともできます。

エラスティックボリュームの利用

お客様はこれら全ての操作をAWSマネジメントコンソールやAPIコール、AWSコマンドラインインタフェース(CLI)で実行できます。これに加えて、AWS CloudFormationのスタック更新機能を利用することも可能で、対象のボリュームに必要な変更を行ってくれます。コンソールを利用する場合は、対象のボリュームを選択してアクションメニューから「Modify Volume」を選択するだけです:
ebs1

ポップアップするウィンドウの中で、ボリュームタイプやサイズ、IOPS値(プロビジョンドIOPSボリュームの場合)を変更してください。これは75GBの汎用SSDボリュームを、20,000IOPSで400GBのプロビジョンドIOPSボリュームに変更する例です:
ebs2

変更ボタンをクリックしたら、確認ウィンドウが表示されるので問題が無ければ「YES」をクリックします:
ebs3

ボリュームの「状態」に変更処理の進捗状況(modifying、optimizing、completed)が表示されます:
ebs4

次のステップは追加されたストレージ領域を利用できるようにするために、ファイルシステムを拡張することです。作業の詳細についてはLinuxでEBSボリュームのストレージ領域を拡張するWindowsでEBSボリュームのストレージ領域を拡張するを参照してください。ボリュームの状態が最適化中に変わったら(通常数秒で変わります)、ファイルシステムの拡張作業を行うことができます。新しいボリュームの容量やタイプはすぐに利用可能になりますが、最適化の処理は最大で24時間を要する場合があります。コストについて補足すると、ボリュームの状態がoptimizingになったタイミングで新構成を基準に計算されることになります(変更自体のコストはかかりません)。

エラスティックボリュームの自動オペレーション
手動オペレーションでの変更も充分に魅力的ですが、自動化を行うたくさんのチャンスがあります。いくつかのアイデアをお見せしてみましょう:

  • 正しいサイジング – IOPS上限か、それに近いレベルに到達しているかをCloudWatchで監視しアラームを上げるよう設定します。アラームが上がったらIOPS値の増加や、ボリュームタイプの変更を行うための承認プロセスを開始し、変更作業の準備を進めます。同様にCloudWatchのカスタムメトリクスを利用して空き容量をモニタリングして、拡張のための承認プロセスを開始することもできます。
  • コストの削減 – CloudWatchメトリクスや予め設定したスケジュールに従ってIOPSの削減やボリュームタイプの変更を行います。(背景:先週、大学のセキュリティ管理者と会話する機会がありました。彼は学内の全てのサーバから1日に10GBのログを収集し、60日間に渡って保持するという仕事をしています。ほとんどのファイルは参照されることはなく、参照が必要になったときでもアクセス速度はそれほど求められません。この場合、1日分のログを書き込むための汎用SSDボリュームを作成し高速な書き込みを実施し、完了したらスループット最適化HDDに変更することでコストを最適化することができます。)

先にお伝えしたように、新たに追加された領域を利用できるようにするためにはファイルシステムをリサイズする必要があります。この手順をお見せするために、私の同僚がCloudWatch Events、AWS Lambda、EC2 Systems Managerを利用したPythonとPowerShellのサンプルスクリプトを提供してくれました。このルールはEBSから送信される情報に基づきmodifyVolumeというイベントにマッチし、logEventsというLambdaファンクションを起動します:
ebs5

このファンクションは対象となるボリュームを特定し、これがEC2 Systems Managerで管理されるインスタンスにアタッチされていることを確認したうえでメンテナンス用のタグ情報を付与します:

def lambda_handler(event, context):
    volume =(event['resources'][0].split('/')[1])
    attach=ec2.describe_volumes(VolumeIds=[volume])['Volumes'][0]['Attachments']
    if len(attach)>0: 
        instance = attach[0]['InstanceId']
        filter={'key': 'InstanceIds', 'valueSet': [instance]}
        info = ssm.describe_instance_information(InstanceInformationFilterList=[filter])['InstanceInformationList']
        if len(info)>0:
            ec2.create_tags(Resources=[instance],Tags=[tags])
            print (info[0]['PlatformName']+' Instance '+ instance+ ' has been tagged for maintenance' )

 

その後に、EC2 Systems Managerがメンテナンス用のタグが付与された全てのインスタンスでPowerShellスクリプトを起動します。このスクリプトはインスタンスのディスクとパーティションの情報を参照し、拡張を必要とする全てのドライブとファイルシステムについて、許容可能な最大サイズまで拡張を行います。以下がスクリプトの抜粋です:

foreach ($DriveLetter in $DriveLetters) {
	$Error.Clear()
        $SizeMax = (Get-PartitionSupportedSize -DriveLetter $DriveLetter).SizeMax
}

自動化について詳しく知りたい場合は、こちらを参照してください。(訳注:翻訳時点では英語版のみですが、随時翻訳を進めて参ります)

本日からご利用頂けます
エラスティックボリュームの機能は本日今すぐにご利用頂くことができます!特殊なケースにおける例外や、制約についてはドキュメント(本記事執筆時点では英語版)をご確認ください。

— Jeff;
(日本語版はSA小林が翻訳しました。原文はこちら)

C2 の汎用 SSD (gp2) ボリュームの新しいバーストバランスメトリックス

AWS ユーザーの多くが、2014 年の中半期にリリースした汎用 SSD (gp2) EBS ボリュームを使用して素晴らしい成果を得ています (詳しくは New SSD-Backed Elastic Block Storage をご覧ください。ご自分のワークロードでどのタイプのボリュームを使用すべきか決めかねている場合は、幅広い種類のデータベース、開発とテスト、ブートボリュームのワークロードにわたり価格とパフォーマンスのバランスが取れている gp2 をお勧めします。このボリュームタイプで興味深いポイントの 1 つはバースト機能です。gp2 のバースト機能は AWS の顧客ベースを観察し、実社会におけるワークロードの I/O パターンに合わせて設計されました。AWS のデータサイエンティスト達は、ボリューム I/O は非常にバースト性が高く短時間で急上昇し、バースト間には十分なアイドル時間があることに気付きました。予測不可能でバースト性を持つトラフィックの性質が gp2 バーストバケットを設計した理由です。小さなボリュームでも 3000 IOPS までのバーストを可能にするほか、アイドル時間中または低レベルで I/O を実行している場合にバーストバケットを補充できるようにすることができます。バーストバケットの設計はすべての gp2 ユーザーに一貫性のある予測可能なパフォーマンスを提供します。実際には gp2 ボリュームが完全にバーストバケットを消耗することは非常に少なく、ユーザーは使用パターンをトラッキングし必要に応じて調整できるようになりました。さまざまなボリュームタイプのパフォーマンス最適化と、ベンチマークと実際のワークロードの違いに関するドキュメントはすでに提供済みです (詳しくは I/O Characteristics をご覧ください)。最初のブログ投稿で説明したように、バーストクレジットは設定済み GB/秒ごとに 3 倍の割合で蓄積し、読み取りまたは書き込み 1 回ごとに 1 つ使用されるようになっています。各ボリュームは 540 万クレジットまで蓄積することができ、ボリュームごとに 3,000 クレジット/秒の割合で使用することができます。使用を開始するには希望するサイズの gp2 ボリュームを作成し、アプリケーションを起動します。ボリュームの I/O は可能な限り迅速かつ効率的に作業を進めます。

新しいメトリックスは本日よりご利用いただけます。バーストバランスメトリックスは各汎用 (SSD) ボリュームで使用可能です。このメトリックスは CloudWatch コンソールで確認することができます。残りが少なくなるとアラームを発信するように設定することも可能です。このメトリックスはパーセントで表示されます。つまり 100% はボリュームが蓄積できるクレジット最大数に到達していることを意味します。この例では c4.8xlarge インスタンスを起動し 100 GB ボリュームをアタッチしました。

次にボリュームのバーストバランスが 40% 以下になった場合に通知を送信するよう、アラームを作成します (実際にはこの数値を大幅に下げることをお勧めしますが、バランスを低下させるには結構な時間がかかるので、ここではこの数値で設定しました)。

SNS サブスクリプションを確認し fio を実行してロードを生成します。

$ sudo fio --filename=/dev/sdb --rw=randread --bs=16k --runtime=2400 --time_based=1 \
  --iodepth=32 --ioengine=libaio --direct=1  --name=gp2-16kb-burst-bucket-test

バランスが低下していくのを観察します。

予想通り通知メールが届きました。

本稼働の状況ではボリュームのサイズを上昇させたり、アプリケーションの I/O の動作を細かく設定したり、バーストバケットをうまく活用していることをメモすることもできます。テスト終了後はランチを取りながらバーストバランスが上昇するのを観察しました (今回は更新済みの CloudWatch コンソールを使用しました)。

稀ではありますが、バーストバケットの消耗が予想以上に早いという場合は、gp2 ボリュームのサイズを上げてパフォーマンスを高めるか、99.9% の確率で一貫性を持つプロビジョンドパフォーマンスを提供するプロビジョンド IOPS SSD (io1) ボリュームに移行することもできます。

今すぐ利用可能
この機能は今すぐすべての AWS 商用リージョンでご利用いただけます。追加費用はありません。CloudWatch アラームには通常の料金が適用されます。

Jeff;

  PS – このようなシステムを構築してみたいという開発者、開発マネージャー、プロダクトマネージャーの方は EBS Jobs ページをご覧ください。

Amazon Elastic Block Store(EBS)アップデート-スナップショットストレージの値下げとPIOPSボリュームのIOPS/GB比率の改善

Amazon Elastic Block Store(EBS)はEC2インスタンスにアタッチして利用できる、永続化されたブロックレベルストレージです。EBSを利用することで、必要なパフォーマンスを備えたSSDベースのボリュームをプロビジョンし、マネジメントコンソールによる手作業やプログラムによってバックアップとして利用できるスナップショットを作成することが可能になります。

本日、これらの機能に対する改善についてお知らせをいたします。プロビジョンドIOPSボリュームにおけるプロビジョン可能なIOPS値の制限を緩和するとともに、スナップショットストレージの費用を47%削減いたします。この改善により、EBSはこれまでよりもパワフルで経済的なものになるでしょう。

IOPS/GB比率の改善
プロビジョンドIOPSのコンセプトをご紹介したのは2012年のことでした(詳細は過去のポストをご覧ください)。プロビジョンドIOPSボリュームを利用すると、それぞれのEBSボリュームに必要なレベルのパフォーマンスを確保することができます。設定可能なIOPSの値はボリュームのサイズに依存しており、最大20,000IOPSまでの範囲でボリュームが大きくなるほどより高いIOPSを指定することが可能です。

これまでは、1GBあたり最大30IOPSの範囲で指定が可能でした。これからは1GBあたり最大50IOPSまでを指定できるようになります。プロビジョンドIOPSボリューム(io1)は年間を通じて、99.9%に時間に対して指定したIOPS値のプラスマイナス10%の範囲のパフォーマンスを発揮するように設計されています(詳細についてはEBSについてのよくある質問をご覧ください)。

極めて負荷の高い処理を実行するために、小容量で高いIOPSを持つプロビジョンドIOPSボリュームを利用しているケースがあります。本日発表した改善により、こういった小容量で高いIOPSを求めるユースケースにおいて、さらに容量を小さくすることが可能になります。つまり、従来は20,000IOPSを指定するには最低667GBの容量が必要だったものが、本日からは400GBを確保すれば良いということになるのです。

この改善は全ての一般利用可能なAWSリージョンにおいて、新たにボリュームを作成する際に適用されます。

スナップショットストレージの値下げ
また、全てのAWSリージョンにおいてEBSスナップショットの費用を47%値下げいたします。

スナップショットはこれまでよりも経済的になりました。この改善の結果として、より高頻度にバックアップを取ることが可能になり、これによって障害や人為的ミスからのリカバリタイムが短くなることが期待できます。もしEBSボリュームのバックアップを取っていないようでしたら、今が始めるチャンスです!

この値下げは2016年8月1日にさかのぼって自動的に適用されます。また、AWS Storage Gatewayのゲートウェイキャッシュ型ボリュームのスナップショットについても同様に適用されます。

— Jeff;

原文:Amazon Elastic Block Store (EBS) Update – Snapshot Price Reduction & More PIOPS/GiB(翻訳:SA小林)

【新機能】 暗号化された EBS スナップショットのクロスアカウントコピー

AWS は既に、 Amazon Elastic Block Store (EBS) ボリュームとスナップショットの暗号化をサポートし、AWS Key Management Service (KMS)によって暗号化キーの保管、管理が行うことができます。また、他の AWS アカウントへの EBS スナップショットのコピーをサポートし、スナップショットから新しいボリュームを作成することができます。本日、暗号化された EBS スナップショットをAWS リージョン間で移動できる柔軟性とともに、アカウント間でコピーする機能が追加されました。

このアナウンスは、3つの重要な AWS のベストプラクティスのもとに作られました。

  1. 定期的にEBS ボリュームのバックアップを取得する
  2. 環境(開発、テスト、ステージング、本番)毎にアカウントを作成し、複数アカウントを利用する
  3. バックアップを含めた、データ(保管時のデータ)の暗号化を行う

暗号化された EBS ボリュームとスナップショット

では、実際にこの機能を利用してみたいと思います。まずは、振り返りの意味もこめて、IAM コンソールを使って、暗号化キーを作成します。

 

そして、暗号化キーを指定し(他のアカウントにコピーを行う場合、カスタムキーを利用する必要があります)、暗号化された EBS ボリュームを作成します。

続けて、暗号化された EBS スナップショットをボリュームから作成できます。

 

今ご覧いただいたように、私は既に長いボリュームIDとスナップショットID を私のAWS アカウントで有効にしています(こちらに関しての詳細は、They’re Here – Longer EBS and Storage Gateway Resource IDs Now Available をご確認ください)。

クロスアカウントコピー

今までご覧いただいたことに、何も新しいものはありませんでした。では、新しい部分に入っていきましょう!他のアカウントに暗号化された EBS スナップショットのコピーを作成するには、下記の4つのシンプルなステップを実施する必要があります:

  1. スナップショットに関連づけられたカスタムキーを共有先アカウントと共有する
  2. 暗号化された EBS スナップショットを相手先アカウントと共有する
  3. 共有先アカウントで、スナップショットのコピーを作成する
  4. 新しいボリュームを作成するために作成したコピーを利用する

上記の最初の2ステップを実施するには、共有先アカウント番号が必要です。ここから、IAM コンソールを通じて、どのように共有先アカウントにカスタムキーを共有するかを記していきます:

そして、暗号化された EBS スナップショットを共有します。共有するスナップショットを選択し、Modify Permissions(権限の変更)をクリックします。

共有先のアカウント番号を入力し、Save(保存)をクリックします。

 

 

暗号化されたスナップショットを一般公開することは出来ないので、ご注意ください。

次のステップに移る前に、少し権限について補足させてください!下記に、ポリシーやロールを設定するために知っておくべきことを記しました:

Source Account(スナップショットの共有元アカウント) – 共有元アカウントのIAM ユーザー、ロールは、 ModifySnapshotAttribute 関数を呼び出すことが出来る必要があり、オリジナルのスナップショットに関連づけられる鍵に対して、 DescribeKeyReEncypt 操作を実行できる必要があります。

Target Account(スナップショットの共有先アカウント) –共有先アカウントのIAM ユーザー、ロールは、オリジナルのスナップショットに関連づけられる鍵に対して、DescribeKey, CreateGrant, Decrypt の操作を実行できる必要があります。加えて、CopySnapshot の呼び出しに関連づけられた鍵に対して、CreateGrant, Encrypt, Decrypt, DescribeKeyGenerateDataKeyWithoutPlaintext 操作を実行できる必要があります。

では話を戻して、スナップショットのコピーを行いましょう。

共有先アカウントに切替え、 Snapshots(スナップショット) タブを表示し、Private Snapshots(プライベートスナップショット) をクリックします。スナップショット ID (スナップショット名はタグとして保存されますが、コピーされません)経由で、共有されたスナップショットを確認し、チェックボックスで選択し、Action(アクション) から Copy(コピー) をクリックします:

 

コピーされるスナップショットに使用する暗号化キーを選択します(ここでは、アジアパシフィック(東京)リージョンにスナップショットをコピーします)。

コピーに対して新しい鍵を利用することで、2つのアカウント間での分離レベルが高くなります。コピー操作中に、新しい鍵を使ってデータは再暗号化されます。

今すぐご利用可能です

この機能は AWS Key Management Service (KMS)が利用可能な全リージョンで利用可能です。データボリューム、ルートボリュームで利用できるように設計され、全てのボリュームタイプで利用可能ですが、現時点では暗号化されたAMIを共有するために利用することは出来ません。スナップショットをコピーし、新しいイメージとして登録することで、スナップショットを利用して、暗号化されたブートボリュームを作成できます。

— Jeff; (翻訳は江川が担当しました。原文はこちら)

 

 

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 ConsoleAWS Command Line Interface (CLI)AWS Tools for Windows PowerShellAWS CloudFormationテンプレートAWS SDKなどお好みの方法で新しいタイプのボリュームをプロビジョンできます。

これまでご説明してきたように、新ボリュームタイプは高スループットと低コストを両立しています。我々は引き続きお客様のご要望を満たすようなEBSの進化を継続していきたいと考えておりますので、みなさまのフィードバックをお待ちしております!


Jeff;

 

日本語版の補足情報
毎週水曜日にお送りしているAWS BlackBelt Online Seminarですが、4/27(水)にAmazon EBSをご紹介いたします。今回発表された新しいボリュームタイプについても詳しくご説明いたしますので、ぜひご参加下さい。無料でご参加いただけますが、登録が必要ですのでこちらのサイトからご登録をお願いいたします。

(日本語版は小林が担当しました。原文はこちら)