ブロック・ボリュームの新機能Elastic Performanceを調べてみたよ


1. はじめに

ブロック・ボリュームの新機能としてElastic Performanceが追加された(2019/11/14)。ブロック・ボリュームは、Computeのコア・コンポーネントなので、どのようなものなのか調べてみた。

2. Elastic Performanceとは

Elastic Performanceとは、ブロック・ボリュームの性能にLower CostBalanced(デフォルト)、Higher Performanceという三つの性能レベルを導入することで、コスト最適化を図る機能だ。

性能数値の違いは表を見てもらうとして、おもな違いは以下のとおり。

Balanced
従来と同じデフォルト設定で、ほとんどのワークロードに適している。
Higher Performance
大規模データベースなど、高いIOPS性能を求められるときに適している。
Lower Cost
ログやストリーミング、DHWなど、IOPSよりもスループットを重視する用途に適している。

下表はマニュアルから引用

2021/06/10追記
上記に加え、現在はUltra High Performanceが追加されています。

3. Elastic Performanceの使いこなし

スペックだけ見せられても「フーン」で終わってしまうかもしれない。使いこなしを考えるには、ストレージの性能特性や価格も合わせて考える必要がある。

3-1. ストレージ性能に関する基礎知識

基礎知識として、以下のことを理解する必要がある。

  • ストレージの性能指標には、IOPS(ランダム・アクセス指向)と帯域幅/スループット(シーケンシャル・アクセス指向)がある
  • VMシェイプでは、シェイプごとにネットワークの帯域幅が制限されている。例えば、VM.Standard2.1(1 Gbps)、VM.Standard2.2(2 Gbps)。Compute Shapes→
  • StandardIOシェイプは外部ストレージを利用しているので、ストレージの最大スループットはシェイプに依存する。例えば、高いスループットが必要なときは、CPUが低使用率でも大きなシェイプに変更する必要がある
  • IOPS性能はストレージ・サイズに依存する。デフォルトは1GBytesあたり60 IOPS

3-2. ストレージ価格も合わせて考える

次に価格も合わせて考えてみよう。比率列は、Block Volume(Balanced)を100としたときの割合である。

ストレージの種類 1GB単価/月 比率
Block Volume (Balanced) $ 0.0425 100
Block Volume (Higher Performance) $ 0.0595 140
Block Volume (Lower Cost) $ 0.0255 60
Object Storage $ 0.0255 60
Archived Storage $ 0.0026 6

Archived Storageは直接アクセスできないので、そもそも用途が異なる(事前にリストアが必要)。したがって比較対象から除外する。

注目すべきはLower Costだ。Object Storageと同じ価格になっている。Balancedと比べてIOPSは開きがあるが、スループットの差は少ない。ログやDHWなどのシーケンシャル・アクセス・データや、安価なので、あまり使用しないデータに適している。

Level IOPS/GB MAX Throughput/GB
Lower Cost 2 240
Balanced 60 480

次にHigher Performanceだ。スペックは以下のとおり。Balancedと比べて、性能は1.25倍になり、価格は1.4倍になる。スループットはシェイプに依存するので、高いIOPSが必要なときに適している。

Level IOPS/GB MAX IOPS MAX Throughput/GB
Higher Performance 75 35,000 600
Balanced 60 25,000 480

最後にObject StorageLower Costの使い分けだ。価格は同じだが、特性は大きく異なる。

Object Storageの特徴は「容量制限が無い」「可用性が高い」「比較的安価」「REST APIでアクセス」などがある。これらのメリットがある反面、一般的なアプリケーションからはアクセスできない、もしくはアクセスしづらいことが課題だ。

一般的なアプリケーションからオブジェクト・ストレージ上のデータに直接アクセスするには以下の方法がある。前者は安定性に課題があり、後者は追加のサーバーが必要になる。

  • goofysやs3fs-fuseのような、S3互換マウントツールを使用する
  • Storage Gatewayを利用し、NFSサーバーのようにアクセスする

バックアップやログ、画像など、アクセス頻度が低いものや、高可用性が必要なデータが適している。

3.3. コストの計算方法

Elastic Performanceによって、Block Volume Performance Units(VPUs)という価格が導入された。先ほどは説明しないで単価を紹介したが、実際の計算式は次のとおり。

一カ月のコスト
=ストレージサイズ[GB]×ストレージ単価+ストレージサイズ[GB]×VPUs値×VPUs単価[GB]
=ストレージサイズ[GB]×(ストレージ単価+(VPUs値×VPUs単価[GB]))

Balancedの場合、VPUs値が10なので、1000GBのときは以下のように計算できる。

1000 * ($0.0255 + (10 * $0.0017))
 = 1000 * ($0.0255 + $0.017)
 = 1000 * ($0.0425)
 = $42.5

Cost Estimatorでは、次のように入力する。

3-4. ストレージの使い分けまとめ

これまでの検討内容をまとめると、次のようになるだろうか。

  • 通常 → Block Volume (Balanced)
  • アクセス頻度が少ない、シーケンシャル中心 → Block Volume (Lower Cost)
  • 高いIOPSが必要 → Block Volume (Higher Performance)
  • 高可用性・低価格 → Object Storage
  • 高いスループット/帯域幅 → シェイプのアップグレード

4. 管理コンソールで確かめる

ボリュームのパフォーマンスは「新規作成時に指定」もしくは「既存のボリュームを変更」が可能だ。管理コンソールでブート・ボリュームもしくはブロック・ボリュームを選択し、[Edit Size or Performance]をクリックすると変更画面を表示できる。


ブロック・ボリュームでは、Lower Cost、Balanced、Higher Performanceが選択できる。

ブート・ボリュームではBalanced、Higher Performanceが選択できる。

それぞれの画面で[Save Changes]をクリックすると動的に設定を変更できる。インスタンスの再起動は不要だ。

6. Auto Tuneについて

2020年7月からAuto Tune機能が付いた。これを有効にすると、ボリュームをデタッチすると自動でパフォーマンスがLower Costに変更されコスト削減できる。デタッチしたブロックボリュームを長期間保持するユースケースは少ないと思うが、そのようなときに便利だ。

7. まとめ

  • ブロック・ボリュームの新機能Elastic Performanceはコスト最適化に役立つ
  • 新たにLower Cost、Balanced(デフォルト)、Higher Performanceという三種類の性能レベルが導入
  • 新規作成ボリュームだけで無く、既存のボリュームも動的に変更できる
  • Lower Costは、Object Storageと同じ価格で、シーケンシャル・アクセス・データに適している
  • Higher Performanceは、IOPS性能が必要なときに適している。性能は1.25倍、価格は1.4倍